You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Oct 17, 2025. It is now read-only.
Copy file name to clipboardExpand all lines: README.md
+20-19Lines changed: 20 additions & 19 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -63,9 +63,11 @@ ros2 run gazebo_ros2_control_demos example_position
63
63
64
64
## Add transmission elements to a URDF
65
65
66
-
To use `ros2_control` with your robot, you need to add some additional elements to your URDF. The `<transmission>` element is used to link actuators to joints, see the `<transmission>` spec for exact XML format.
66
+
To use `ros2_control` with your robot, you need to add some additional elements to your URDF.
67
+
The `<transmission>` element is used to link actuators to joints, see the `<transmission>` spec for exact XML format.
67
68
68
-
For the purposes of `gazebo_ros2_control` in its current implementation, the only important information in these transmission tags are:
69
+
For the purposes of `gazebo_ros2_control` in its current implementation, the only important information
70
+
in these transmission tags are:
69
71
70
72
-`<joint name="">` the name must correspond to a joint else where in your URDF
71
73
-`<type>` the type of transmission. Currently only `transmission_interface/SimpleTransmission` is implemented.
@@ -82,11 +84,12 @@ robot hardware interfaces between `ros2_control` and Gazebo.
@@ -96,8 +99,9 @@ The `gazebo_ros2_control` `<plugin>` tag also has the following optional child e
96
99
-`<control_period>`: The period of the controller update (in seconds), defaults to Gazebo's period
97
100
-`<robot_param>`: The location of the `robot_description` (URDF) on the parameter server, defaults to `robot_description`
98
101
-`<robot_param_node>`: Name of the node where the `robot_param` is located, defauls to `robot_state_publisher`
99
-
-`<robot_sim_type>`: The pluginlib name of a custom robot sim interface to be used, defaults to `gazebo_ros2_control/DefaultRobotHWSim`
102
+
-`<robot_sim_type>`: The pluginlib name of a custom robot sim interface to be used, defaults to `gazebo_ros2_control/GazeboSystem`
100
103
-`<parameters>`: YAML file with the configuration of the controllers
104
+
-`<e_stop_topic>`: Topic to publish the emergency stop
101
105
102
106
#### Default gazebo_ros2_control Behavior
103
107
@@ -113,14 +117,17 @@ The default behavior provides the following ros2_control interfaces:
113
117
114
118
The `gazebo_ros2_control` Gazebo plugin also provides a pluginlib-based interface to implement custom interfaces between Gazebo and `ros2_control` for simulating more complex mechanisms (nonlinear springs, linkages, etc).
115
119
116
-
These plugins must inherit `gazebo_ros2_control::RobotHWSim` which implements a simulated `ros2_control``hardware_interface::RobotHW`. RobotHWSim provides API-level access to read and command joint properties in the Gazebo simulator.
120
+
These plugins must inherit `gazebo_ros2_control::GazeboSystemInterface` which implements a simulated `ros2_control`
121
+
`hardware_interface::SystemInterface`. SystemInterface provides API-level access to read and command joint properties.
117
122
118
-
The respective RobotHWSim sub-class is specified in a URDF model and is loaded when the robot model is loaded. For example, the following XML will load the default plugin (same behavior as when using no `<robot_sim_type>` tag):
123
+
The respective GazeboSystemInterface sub-class is specified in a URDF model and is loaded when the
124
+
robot model is loaded. For example, the following XML will load the default plugin
125
+
(same behavior as when using no `<robot_sim_type>` tag):
@@ -138,13 +145,13 @@ Use the tag `<parameters>` inside `<plugin>` to set the YAML file with the contr
138
145
```
139
146
140
147
This controller publishes the state of all resources registered to a
141
-
`hardware_interface::JointStateInterface` to a topic of type `sensor_msgs/msg/JointState`. The following is a basic configuration of the controller.
148
+
`hardware_interface::StateInterface` to a topic of type `sensor_msgs/msg/JointState`.
149
+
The following is a basic configuration of the controller.
142
150
143
151
```yaml
144
152
joint_state_controller:
145
153
ros__parameters:
146
154
type: joint_state_controller/JointStateController
147
-
publish_rate: 50
148
155
```
149
156
150
157
This controller creates an action called `/cart_pole_controller/follow_joint_trajectory` of type `control_msgs::action::FollowJointTrajectory`.
@@ -166,7 +173,9 @@ cart_pole_controller:
166
173
167
174
#### Setting PID gains
168
175
169
-
To set the PID gains for a specific joint you need to define them inside `<plugin><ros></plugin></ros>`. Using the generic way of defining parameters with `gazebo_ros`. The name of the parameter correspond the name of the joint followed by a dot and the name of the parameter: `p`, `i`, `d`, `i_clamp_max`, `i_clamp_min` and `antiwindup`.
176
+
To set the PID gains for a specific joint you need to define them inside `<plugin><ros></plugin></ros>`.
177
+
Using the generic way of defining parameters with `gazebo_ros`. The name of the parameter correspond to
178
+
the name of the joint followed by a dot and the name of the parameter: `p`, `i`, `d`, `i_clamp_max`, `i_clamp_min` and `antiwindup`.
170
179
171
180
```xml
172
181
<gazebo>
@@ -181,7 +190,7 @@ To set the PID gains for a specific joint you need to define them inside `<plugi
0 commit comments