When and why should we use the urdf transmission tag

asked 2020-03-13 09:11:11 -0500

fjp gravatar image

updated 2020-03-19 06:55:00 -0500

When and why should we use the urdf/xacro transmission tag when working with ros_control?

According to the C++ API documentation:

The transmission_interface is not used by controllers themselves (it does not implement a HardwareInterface) but instead operates before or after the controllers update, in the read() and write() methods (or equivalents) of the robot abstraction.

Can the transmision tag be omitted or is it always required?

According to this answer and the ROScon 2014 talk:

Actuators are connected to joints via mechanical transmissions, and you need to use them if you want ros_control to handle the mapping between joint and actuator spaces.

Is the transmission always required when working with the gazebo_ros_control plugin?

Edit: Looking at the data-flow image it seems that the transmission is required in both cases (Simulation and Hardware). This answers the question on when it is neededb but not exactly why it is needed. Does someone know which components of ROS control use the transmission information and where in the source code (the controller_manager or some other component)? I would like to get a better understanding of this. Thank you.

edit retag flag offensive close merge delete


Could you please tone down the bold font a bit?

With all the other formatting it doesn't necessarily make your question text easier to read.

gvdhoorn gravatar image gvdhoorn  ( 2020-03-13 09:37:53 -0500 )edit

@gvdhoorn sorry for that, I removed it.

fjp gravatar image fjp  ( 2020-03-13 09:55:10 -0500 )edit

@gvdhoorn is there anything else I can do to make the question clearer so that it is easier to answer for you or anyone else? The main question boils down to what's in the title. I would highly appreciate your help. Thank you.

fjp gravatar image fjp  ( 2020-03-13 11:49:24 -0500 )edit