Skip to content
Merged
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
144 changes: 74 additions & 70 deletions design_drafts/components_architecture_and_urdf_examples.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ ros2_control implementation examples are presented for the following robot/robot
Note:
* Everything within the `<classType>` tag is implemented as a plugin.
* The examples below have some `<param>` tags defined. The names in those tags are primarily for demonstration, not part of a pre-defined XML schema. Each component may define their names inside the `<param>` tag.

#### 1. Industrial Robots with only one interface
* the communication is done using proprietary API to communicate with robot control box
* Data for all joints is exchanged in batch (at once)
Expand All @@ -39,13 +39,13 @@ Note:
</hardware>
<joint name="joint1">
<classType>ros2_control_components/PositionJoint</classType>
<param name="min_position_value">-1</param>
<param name="max_position_value">1</param>
<param name="min_value">-1</param>
<param name="max_value">1</param>
</joint>
<joint name="joint2">
<classType>ros2_control_components/PositionJoint</classType>
<param name="min_position_value">-1</param>
<param name="max_position_value">1</param>
<param name="min_value">-1</param>
<param name="max_value">1</param>
</joint>
</ros2_control>
```
Expand All @@ -71,31 +71,32 @@ Note:
</hardware>
<joint name="joint1">
<classType>ros2_control_components/MultiInterfaceJoint</classType>
<commandInterfaceType>position</commandInterfaceType>
<commandInterfaceType>velocity</commandInterfaceType>
<commandInterfaceType>effort</commandInterfaceType>
<commandInterfaceType name="position">
Comment thread
bmagyar marked this conversation as resolved.
<param name="min_value">-1</param>
<param name="max_value">1</param>
</commandInterfaceType>
<commandInterfaceType name="velocity">
<param name="min_value">-1</param>
<param name="max_value">1</param>
</commandInterfaceType>
<commandInterfaceType name="effort">
<param name="min_value">-0.5</param>
<param name="max_value">0.5</param>
</commandInterfaceType>
<stateInterfaceType>position</stateInterfaceType>
Comment thread
bmagyar marked this conversation as resolved.
Outdated
<stateInterfaceType>velocity</stateInterfaceType>
<stateInterfaceType>effort</stateInterfaceType>
<param name="min_position_value">-1</param>
<param name="max_position_value">1</param>
<param name="min_velocity_value">-1</param>
<param name="max_velocity_value">1</param>
<param name="min_effort_value">-0.5</param>
<param name="max_effort_value">0.5</param>

</joint>
<joint name="joint2">
<classType>ros2_control_components/MultiInterfaceJoint</classType>
<commandInterfaceType>position</commandInterfaceType>
<commandInterfaceType name="position">
<param name="min_value">-1</param>
<param name="max_value">1</param>
</commandInterfaceType>
<stateInterfaceType>position</stateInterfaceType>
<stateInterfaceType>velocity</stateInterfaceType>
<stateInterfaceType>effort</stateInterfaceType>
<param name="min_position_value">-1</param>
<param name="max_position_value">1</param>
<param name="min_velocity_value">-1</param>
<param name="max_velocity_value">1</param>
<param name="min_effort_value">-0.5</param>
<param name="max_effort_value">0.5</param>
</joint>
</ros2_control>
```
Expand All @@ -119,27 +120,31 @@ Note:
</hardware>
<joint name="joint1">
<classType>ros2_control_components/MultiInterfaceJoint_MultiWrite</classType>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CamelCase

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you rename this to:

"MultiInterfaceMultiWriteJoint"

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done!

<commandInterfaceType>position</commandInterfaceType>
<commandInterfaceType>velocity</commandInterfaceType>
<commandInterfaceType>effort</commandInterfaceType>
<commandInterfaceType name="position">
<param name="min_value">-1</param>
<param name="max_value">1</param>
</commandInterfaceType>
<commandInterfaceType name="velocity">
<param name="min_value">-1</param>
<param name="max_value">1</param>
</commandInterfaceType>
<commandInterfaceType name="effort">
<param name="min_value">-0.5</param>
<param name="max_value">0.5</param>
</commandInterfaceType>
<stateInterfaceType>position</stateInterfaceType>
<stateInterfaceType>velocity</stateInterfaceType>
<stateInterfaceType>effort</stateInterfaceType>
<param name="min_position_value">-1</param>
<param name="max_position_value">1</param>
<param name="min_velocity_value">-1</param>
<param name="max_velocity_value">1</param>
<param name="min_effort_value">-0.5</param>
<param name="max_effort_value">0.5</param>
</joint>
<joint name="joint2">
<classType>ros2_control_components/MultiInterfaceJoint_MultiWrite</classType>
<commandInterfaceType>position</commandInterfaceType>
<commandInterfaceType name="position">
<param name="min_value">-1</param>
<param name="max_value">1</param>
</commandInterfaceType>
<stateInterfaceType>position</stateInterfaceType>
<stateInterfaceType>velocity</stateInterfaceType>
<stateInterfaceType>effort</stateInterfaceType>
<param name="min_position_value">-1</param>
<param name="max_position_value">1</param>
</joint>
</ros2_control>
```
Expand All @@ -160,13 +165,13 @@ Note:
</hardware>
<joint name="joint1">
<classType>ros2_control_components/PositionJoint</classType>
<param name="min_position_value">-1</param>
<param name="max_position_value">1</param>
<param name="min_value">-1</param>
<param name="max_value">1</param>
</joint>
<joint name="joint2">
<classType>ros2_control_components/PositionJoint</classType>
<param name="min_position_value">-1</param>
<param name="max_position_value">1</param>
<param name="min_value">-1</param>
<param name="max_value">1</param>
</joint>
<sensor name="tcp_fts_sensor">
<classType>ros2_control_components/ForceTorqueSensor</classType>
Expand All @@ -182,6 +187,7 @@ Note:
<commandInterfaceType>position</commandInterfaceType>
<stateInterfaceType>position</stateInterfaceType>
```
with `min_value` and `max_value` belonging to the `commandInterfaceType` element.


#### 4. Industrial Robots with externally connected sensor
Expand All @@ -190,7 +196,7 @@ Note:
* Sensor data are exchanged independently
* Examples: KUKA RSI and FTS connected to ROS-PC

```
```xml
<ros2_control name="2DOF_System_Robot_Position_Only_External_Sensor" type="system">
<hardware>
<classType>ros2_control_demo_hardware/2DOF_System_Hardware_Position_Only</classType>
Expand All @@ -199,13 +205,13 @@ Note:
</hardware>
<joint name="joint1">
<classType>ros2_control_components/PositionJoint</classType>
<param name="min_position_value">-1</param>
<param name="max_position_value">1</param>
<param name="min_value">-1</param>
<param name="max_value">1</param>
</joint>
<joint name="joint2">
<classType>ros2_control_components/PositionJoint</classType>
<param name="min_position_value">-1</param>
<param name="max_position_value">1</param>
<param name="min_value">-1</param>
<param name="max_value">1</param>
</joint>
</ros2_control>
<ros2_control name="2DOF_System_Robot_ForceTorqueSensor" type="sensor">

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CamelCase

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it's all CamelCase now

Expand Down Expand Up @@ -236,8 +242,8 @@ Note:
</hardware>
<joint name="joint1">
<classType>ros2_control_components/PositionJoint</classType>
<param name="min_position_value">-1</param>
<param name="max_position_value">1</param>
<param name="min_value">-1</param>
<param name="max_value">1</param>
</joint>
</ros2_control>
<ros2_control name="2DOF_Modular_Robot_joint2" type="actuator">
Expand All @@ -248,8 +254,8 @@ Note:
</hardware>
<joint name="joint2">
<classType>ros2_control_components/PositionJoint</classType>
<param name="min_position_value">-1</param>
<param name="max_position_value">1</param>
<param name="min_value">-1</param>
<param name="max_value">1</param>
</joint>
</ros2_control>
```
Expand All @@ -268,9 +274,10 @@ Note:
</hardware>
<joint name="joint1">
<classType>ros2_control_components/VelocityJoint</classType>
<commandInterfaceType>velocity</commandInterfaceType>
<param name="min_velocity_value">-1</param>
<param name="max_velocity_value">1</param>
<commandInterfaceType name="velocity">
<param name="min_value">-1</param>
<param name="max_value">1</param>
</commandInterfaceType>
</joint>
<transmission name="transmission1">
<classType>transmission_interface/SimpleTansmission</classType>
Expand All @@ -285,9 +292,10 @@ Note:
</hardware>
<joint name="joint2">
<classType>ros2_control_components/VelocityJoint</classType>
<commandInterfaceType>velocity</commandInterfaceType>
<param name="min_velocity_value">-1</param>
<param name="max_velocity_value">1</param>
<commandInterfaceType name="velocity">
<param name="min_value">-1</param>
<param name="max_value">1</param>
</commandInterfaceType>
</joint>
</ros2_control>
<ros2_control name="2DOF_System_Robot_Position_Sensor_joint1" type="sensor">
Expand All @@ -297,9 +305,10 @@ Note:
</hardware>
<joint name="joint1">
<classType>ros2_control_components/PositionJoint</classType>
<stateInterfaceType>position</stateInterfaceType>
<param name="min_position_value">${-PI}</param>
<param name="max_position_value">${PI}</param>
<stateInterfaceType name="position">

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This would be this optional limits for the stateInterfaceType.

Nevertheless, I did error here, I think here we should have sensor and not joint component (tag in L306))

<param name="min_value">${-PI}</param>
<param name="max_value">${PI}</param>
</stateInterfaceType>
</joint>
</ros2_control>
<ros2_control name="2DOF_System_Robot_Position_Sensor_joint2" type="sensor">
Expand All @@ -309,9 +318,10 @@ Note:
</hardware>
<joint name="joint2">
<classType>ros2_control_components/PositionJoint</classType>
<stateInterfaceType>position</stateInterfaceType>
<param name="min_position_value">${-PI}</param>
<param name="max_position_value">${PI}</param>
<stateInterfaceType name="position">
<param name="min_value">${-PI}</param>
<param name="max_value">${PI}</param>
</stateInterfaceType>
</joint>
</ros2_control>
```
Expand All @@ -333,13 +343,13 @@ Note:
</hardware>
<joint name="joint1">
<classType>ros2_control_components/PositionJoint</classType>
<param name="min_position_value">-1</param>
<param name="max_position_value">1</param>
<param name="min_value">-1</param>
<param name="max_value">1</param>
</joint>
<joint name="joint2">
<classType>ros2_control_components/PositionJoint</classType>
<param name="min_position_value">-1</param>
<param name="max_position_value">1</param>
<param name="min_value">-1</param>
<param name="max_value">1</param>
</joint>
<transmission name="transmission1">
<classType>transmission_interface/SomeComplex_2x2_Transmission</classType>
Expand Down Expand Up @@ -367,16 +377,10 @@ Note:
<classType>ros2_control_components/IMUSensor</classType>
<stateInterfaceType>velocity</stateInterfaceType>
<stateInterfaceType>acceleration</stateInterfaceType>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would keep the values here as an option.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

roger that

<param name="min_velocity_value">-54</param>
<param name="max_velocity_value">23</param>
<param name="min_acceleration_value">-10</param>
<param name="max_acceleration_value">10</param>
</sensor>
<sensor name="sensor2">
<classType>ros2_control_components/2DImageSensor</classType>
<stateInterfaceType>image</stateInterfaceType>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the same as above

<param name="min_image_value">0</param>
<param name="max_image_value">255</param>
</sensor>
</ros2_control>
```
Expand All @@ -395,8 +399,8 @@ Note:
</hardware>
<joint name="joint1">
<classType>ros2_control_components/VelocityJoint</classType>
<param name="min_velocity_value">-1</param>
<param name="max_velocity_value">1</param>
<param name="min_value">-1</param>
<param name="max_value">1</param>
</joint>
<transmission name="transmission1">
<classType>transmission_interface/RotationToLinerTansmission</classType>
Expand Down