ros2_control - humble
|
Implementation of a four-bar-linkage transmission. More...
#include <four_bar_linkage_transmission.hpp>
Public Member Functions | |
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)) | |
void | configure (const std::vector< JointHandle > &joint_handles, const std::vector< ActuatorHandle > &actuator_handles) override |
void | actuator_to_joint () override |
Transform variables from actuator to joint space. | |
void | joint_to_actuator () override |
Transform variables from joint to actuator space. | |
std::size_t | num_actuators () const override |
std::size_t | num_joints () const override |
const std::vector< double > & | get_actuator_reduction () const |
const std::vector< double > & | get_joint_reduction () const |
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_ |
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.
Actuator to joint | \begin{eqnarray*} \tau_{j_1} & = & n_{j_1} n_{a_1} \tau_{a_1} \\ \tau_{j_2} & = & n_{j_2} (n_{a_2} \tau_{a_2} - n_{j_1} n_{a_1} \tau_{a_1}) \end{eqnarray*} | \begin{eqnarray*} \dot{x}_{j_1} & = & \frac{ \dot{x}_{a_1} }{ n_{j_1} n_{a_1} } \\ \dot{x}_{j_2} & = & \frac{ \dot{x}_{a_2} / n_{a_2} - \dot{x}_{a_1} / (n_{j_1} n_{a_1}) }{ n_{j_2} } \end{eqnarray*} | \begin{eqnarray*} x_{j_1} & = & \frac{ x_{a_1} }{ n_{j_1} n_{a_1} } + x_{off_1} \\ x_{j_2} & = & \frac{ x_{a_2} / n_{a_2} - x_{a_1} / (n_{j_1} n_{a_1}) }{ n_{j_2} } + x_{off_2} \end{eqnarray*} |
Joint to actuator | \begin{eqnarray*} \tau_{a_1} & = & \tau_{j_1} / (n_{j_1} n_{a_1}) \\ \tau_{a_2} & = & \frac{ \tau_{j_1} + \tau_{j_2} / n_{j_2} }{ n_{a_2} } \end{eqnarray*} | \begin{eqnarray*} \dot{x}_{a_1} & = & n_{j_1} n_{a_1} \dot{x}_{j_1} \\ \dot{x}_{a_2} & = & n_{a_2} (\dot{x}_{j_1} + n_{j_2} \dot{x}_{j_2}) \end{eqnarray*} | \begin{eqnarray*} x_{a_1} & = & n_{j_1} n_{a_1} (x_{j_1} - x_{off_1}) \\ x_{a_2} & = & n_{a_2} \left[(x_{j_1} - x_{off_1}) + n_{j_2} (x_{j_2} - x_{off_2})\right] \end{eqnarray*} |
where:
|
inline |
actuator_reduction | Reduction ratio of actuators. |
joint_reduction | Reduction ratio of joints. |
joint_offset | Joint position offset used in the position mappings. |
|
inlineoverridevirtual |
Transform variables from actuator to joint space.
Implements transmission_interface::Transmission.
|
overridevirtual |
[in] | joint_handles | Handles of joint values. |
[in] | actuator_handles | Handles of actuator values. |
Implements transmission_interface::Transmission.
|
inlineoverridevirtual |
Transform variables from joint to actuator space.
Implements transmission_interface::Transmission.
|
inlineoverridevirtual |
Implements transmission_interface::Transmission.
|
inlineoverridevirtual |
Implements transmission_interface::Transmission.