Class SimpleTransmission
Defined in File simple_transmission.hpp
Inheritance Relationships
Base Type
public transmission_interface::Transmission
(Class Transmission)
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.
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}