Class FourBarLinkageTransmission
Defined in File four_bar_linkage_transmission.hpp
Inheritance Relationships
Base Type
public transmission_interface::Transmission
(Class Transmission)
Class Documentation
-
class FourBarLinkageTransmission : public transmission_interface::Transmission
Implementation of a four-bar-linkage transmission.
This transmission relates two actuators and two joints through a mechanism in which the state of the first joint only depends on the first actuator, while the second joint depends on both actuators, as illustrated below. Although the class name makes specific reference to the four-bar-linkage, there are other mechanical layouts that yield the same behavior, such as the remote actuation example also depicted 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. (cf. SimpleTransmission class documentation for a more detailed description of this variable).
\( n \) represents a transmission ratio (reducers/amplifiers are depicted as timing belts in the figure). A 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. input and output move in opposite directions.
Important: Use transmission ratio signs to match this class’ convention of positive actuator/joint directions with a given mechanical design, as they will in general not match.
Public Functions
-
inline FourBarLinkageTransmission(const std::vector<double> &actuator_reduction, const std::vector<double> &joint_reduction, const std::vector<double> &joint_offset = std::vector<double>(2, 0.0))
- Parameters:
actuator_reduction – Reduction ratio of actuators.
joint_reduction – Reduction ratio of joints.
joint_offset – Joint position offset used in the position mappings.
- Pre:
Nonzero actuator reduction values.
-
virtual void configure(const std::vector<JointHandle> &joint_handles, const std::vector<ActuatorHandle> &actuator_handles) override
- Parameters:
joint_handles – [in] Handles of joint values.
actuator_handles – [in] Handles of actuator values.
- Pre:
Handles are valid and matching in size
-
inline virtual void actuator_to_joint() override
Transform variables from actuator to joint space.
- Pre:
Actuator and joint vectors must have size 2 and point to valid data. To call this method it is not required that all other data vectors contain valid data, and can even remain empty.
-
inline virtual void joint_to_actuator() override
Transform variables from joint to actuator space.
- Pre:
Actuator and joint vectors must have size 2 and point to valid data. To call this method it is not required that all other data vectors contain valid data, and can even remain empty.
-
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 const std::vector<double> &get_actuator_reduction() const
-
inline const std::vector<double> &get_joint_reduction() const
-
inline const std::vector<double> &get_joint_offset() const
-
std::string get_handles_info() const
Get human-friendly report of handles.
Protected Attributes
-
std::vector<double> actuator_reduction_
-
std::vector<double> joint_reduction_
-
std::vector<double> joint_offset_
-
std::vector<JointHandle> joint_position_
-
std::vector<JointHandle> joint_velocity_
-
std::vector<JointHandle> joint_effort_
-
std::vector<ActuatorHandle> actuator_position_
-
std::vector<ActuatorHandle> actuator_velocity_
-
std::vector<ActuatorHandle> actuator_effort_