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.
