URDF Transmissions
The transmission element is an extension to the URDF robot description model that is used to describe the relationship between an actuator and a joint. This allows one to model concepts such as gear ratios and parallel linkages. A transmission transforms efforts/flow variables such that their product - power - remains constant. Multiple actuators may be linked to multiple joints through complex transmission.
Here is an example of a transmission element:
1 <transmission name="simple_trans">
2 <type>transmission_interface/SimpleTransmission</type>
3 <joint name="foo_joint">
4 <hardwareInterface>EffortJointInterface</hardwareInterface>
5 </joint>
6 <actuator name="foo_motor">
7 <mechanicalReduction>50</mechanicalReduction>
8 <hardwareInterface>EffortJointInterface</hardwareInterface>
9 </actuator>
10 </transmission>
<transmission> Attributes
The transmission element has one attribute:
name (required)
- Specifies the unique name of a transmission
<transmission> Elements
The transmission has the following elements:
<type> (one occurrence)
- Specifies the transmission type.
<joint> (one or more occurrences)
A joint the transmission is connected to. The joint is specified by its name attribute, and the following sub-elements:
<hardwareInterface> (one or more occurrences)
Specifies a supported joint-space hardware interface. Note that the value of this tag should be EffortJointInterface when this transmission is loaded in Gazebo and hardware_interface/EffortJointInterface when this transmission is loaded in RobotHW.
<actuator> (one or more occurrences)
An actuator the transmission is connected to. The actuator is specified by its name attribute, and the following sub-elements:
<mechanicalReduction> (optional)
- Specifies a mechanical reduction at the joint/actuator transmission. This tag may not be needed for all transmissions.
<hardwareInterface> (optional) (one or more occurrences)
Specifies a supported joint-space hardware interface. Note that <hardwareInterface> tag should only be specified here for ROS releases prior to Indigo. The correct place to specify this tag is in <joint> tag. More details about this can be found here.
Development Notes
Currently, only the ros_control project uses this transmission elements. Developing an updated transmission format that is extensible to all use cases was complicated endeavor that can be reviewed here.