diff --git a/design_drafts/non_joint_command_interfaces.md b/design_drafts/non_joint_command_interfaces.md new file mode 100644 index 0000000..6487c5c --- /dev/null +++ b/design_drafts/non_joint_command_interfaces.md @@ -0,0 +1,133 @@ +# Definition of command interfaces for non-joint related information + +## Motivation +Already multiple times, users raised the question about the handling of non-joint-related interfaces. +Such interfaces are not considerd during [design of the ros2_control URDF-tag structure](./components_architecture_and_urdf_examples.md). +The design proposes two possibilities to classify (group) the interfaces, using `` and `` tags. +``-tag groups the interfaces associated with the joints of physical robots and actuators. +They have command and state interfaces to set the goal values for hardware and read its current state. +``-tag groups multiple state interfaces describing, e.g., internal states of hardware. + +Most modern robots, especially industrial manipulators, also have other physical ports to control external hardware. +The most usual ones are General Purpose Inputs/Outputs (GPIOs). +Although the strict definition considers only digital ports, the term GPIO in this document describes any (one-dimensional) input/output port of physical hardware, e.g., digital or analog input/output. + +## Problem +To use GPIOs in the ros2_control framework, they have to be listed in the robot's URDF: inputs (state interfaces) under a ``-tag and output (command and state interfaces) under a ``-tag. +This could lead to confusion since non-existing (virtual) joints have to be defined in the ros2_control part of the URDF structure. +"Joint" is a well-defined term in robotics. Therefore this naming should be avoided, i.e., another keyword should be used describing GPIOs, semantically separating them from the kinematics joints. + +## Proposed solution +Use of keyword "gpio" when describing input and output ports of a robotic device that cannot be associated with any joint or sensor. +Parsing of `-tag` is similar to this of a ``-tag having command and state interfaces. +The tag must have at least one ``- or ``-tag as a child. + +The keyword "gpio" is chosen for its generality. +Although strictly used for digital signals, in this document describes any electrical analog, digital signal, or physical value. + +The `` tag can be used as a child of all three types of hardware interfaces, i.e., system, sensor, or actuator. +Semantically, they describe values that can not be associated with a joint or a sensor. + +### Examples + +1. Robot with multiple GPIO interfaces + - RRBot System + - Digital: 4 inputs and 2 outputs + - Analog: 2 inputs and 1 output + - Vacuum valve at the flange (on/off) + + ``` + + + ros2_control_demo_hardware/RRBotSystemPositionOnlyHardware + 2.0 + 3.0 + 2.0 + + + + -1 + 1 + + + + + + -1 + 1 + + + + + + + + + + + + + + + + + + + + ``` + +2. Gripper with electrical and suction grasping possibilities + - Multimodal gripper + - 1-DoF parallel gripper + - suction on/off + + ``` + + + ros2_control_demo_hardware/MultimodalGripper + + + + 0 + 100 + + + + + + + + ``` + +3. Force-Torque-Sensor with temperature feedback and adjustable calibration + - 2D FTS + - Temperature feedback in °C + - Choice between 3 calibration matrices, i.e., calibration ranges + + ``` + + + ros2_control_demo_hardware/ForceTorqueSensor2DHardware + 0.43 + + + + + kuka_tcp + 100 + 100 + + + + + + + + + + ``` +