Class SimpleTransmission

Inheritance Relationships

Base Type

Class Documentation

class SimpleTransmission : public transmission_interface::Transmission

Implementation of a simple reducer transmission.

This transmission relates one actuator and one joint through a reductor (or amplifier). Timing belts and gears are examples of this transmission type, and are illustrated below. ../_images/simple_transmission.png

where:

  • \( x \), \( \dot{x} \) and \( \tau \) are position, velocity and effort variables, respectively.

  • Subindices \( _a \) and \( _j \) are used to represent actuator-space and joint-space variables, respectively.

  • \( x_{off}\) represents the offset between motor and joint zeros, expressed in joint position coordinates.

  • \( n \) is the transmission ratio, and can be computed as the ratio between the output and input pulley radii for the timing belt; or the ratio between output and input teeth for the gear system. The transmission ratio can take any real value except zero. In particular:

    • If its absolute value is greater than one, it’s a velocity reducer / effort amplifier, while if its absolute value lies in \( (0, 1) \) it’s a velocity amplifier / effort reducer.

    • Negative values represent a direction flip, ie. actuator and joint move in opposite directions. For example, in timing belts actuator and joint move in the same direction, while in single-stage gear systems actuator and joint move in opposite directions.

Public Functions

inline explicit SimpleTransmission(const double joint_to_actuator_reduction, const double joint_offset = 0.0)
Parameters:
  • joint_to_actuator_reduction[in] Joint to actuator reduction ratio.

  • joint_offset[in] Joint position offset used in the position mappings.

Pre:

Nonzero reduction value.

inline virtual void configure(const std::vector<JointHandle> &joint_handles, const std::vector<ActuatorHandle> &actuator_handles) override

Set up the data the transmission operates on.

Parameters:
  • joint_handles[in] Vector of interface handles of one joint

  • actuator_handles[in] Vector of interface handles of one actuator

Pre:

Vectors are nonzero.

Pre:

Joint handles share the same joint name and actuator handles share the same actuator name.

inline virtual void actuator_to_joint() override

Transform variables from actuator to joint space.

This method operates on the handles provided when configuring the transmission. To call this method it is not required that all supported interface types are provided, e.g. one can supply only velocity handles

inline virtual void joint_to_actuator() override

Transform variables from joint to actuator space.

This method operates on the handles provided when configuring the transmission. To call this method it is not required that all supported interface types are provided, e.g. one can supply only velocity handles

inline virtual std::size_t num_actuators() const override
Returns:

Number of actuators managed by transmission, ie. the dimension of the actuator space.

inline virtual std::size_t num_joints() const override
Returns:

Number of joints managed by transmission, ie. the dimension of the joint space.

inline double get_actuator_reduction() const
inline double get_joint_offset() const

Protected Attributes

double reduction_
double jnt_offset_
JointHandle joint_position_ = {"", "", nullptr}
JointHandle joint_velocity_ = {"", "", nullptr}
JointHandle joint_effort_ = {"", "", nullptr}
ActuatorHandle actuator_position_ = {"", "", nullptr}
ActuatorHandle actuator_velocity_ = {"", "", nullptr}
ActuatorHandle actuator_effort_ = {"", "", nullptr}