Class Transmission

Inheritance Relationships

Derived Types

Class Documentation

class Transmission

Abstract base class for representing mechanical transmissions.

Mechanical transmissions transform effort/flow variables such that their product (power) remains constant. Effort variables for linear and rotational domains are force and torque; while the flow variables are respectively linear velocity and angular velocity.

In robotics it is customary to place transmissions between actuators and joints. This interface adheres to this naming to identify the input and output spaces of the transformation. The provided interfaces allow bidirectional mappings between actuator and joint spaces for effort, velocity and position. Position is not a power variable, but the mappings can be implemented using the velocity map plus an integration constant representing the offset between actuator and joint zeros.

Credit

This interface was inspired by similar existing implementations by PAL Robotics, S.L. and Willow Garage Inc.

Note

Implementations of this interface must take care of realtime-safety if the code is to be run in realtime contexts, as is often the case in robot control.

Subclassed by transmission_interface::DifferentialTransmission, transmission_interface::FourBarLinkageTransmission, transmission_interface::SimpleTransmission

Public Functions

virtual ~Transmission() = default
virtual void configure(const std::vector<JointHandle> &joint_handles, const std::vector<ActuatorHandle> &actuator_handles) = 0
virtual void actuator_to_joint() = 0

Transform effort variables from actuator to joint space.

Parameters:
  • act_data[in] Actuator-space variables.

  • jnt_data[out] Joint-space variables.

Pre:

All non-empty vectors must contain valid data and their size should be consistent with the number of transmission actuators and joints. Data vectors not used in this map can remain empty.

virtual void joint_to_actuator() = 0

Transform effort variables from joint to actuator space.

Parameters:
  • jnt_data[in] Joint-space variables.

  • act_data[out] Actuator-space variables.

Pre:

All non-empty vectors must contain valid data and their size should be consistent with the number of transmission actuators and joints. Data vectors not used in this map can remain empty.

virtual std::size_t num_actuators() const = 0
Returns:

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

virtual std::size_t num_joints() const = 0
Returns:

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