ros2_control - humble
|
Implementation of a differential transmission. More...
#include <differential_transmission.hpp>
Public Member Functions | |
DifferentialTransmission (const std::vector< double > &actuator_reduction, const std::vector< double > &joint_reduction, const std::vector< double > &joint_offset={0.0, 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 differential transmission.
This transmission relates two actuators and two joints through a differential mechanism, as illustrated below.
Actuator to joint | \begin{eqnarray*} \tau_{j_1} & = & n_{j_1} ( n_{a_1} \tau_{a_1} + n_{a_2} \tau_{a_2} ) \\[2.5em] \tau_{j_2} & = & n_{j_2} ( n_{a_1} \tau_{a_1} + n_{a_2} \tau_{a_2} ) \end{eqnarray*} | \begin{eqnarray*} \dot{x}_{j_1} & = & \frac{ \dot{x}_{a_1} / n_{a_1} + \dot{x}_{a_2} / n_{a_2} }{2 n_{j_1}} \\[1em] \dot{x}_{j_2} & = & \frac{ \dot{x}_{a_1} / n_{a_1} - \dot{x}_{a_2} / n_{a_2} }{2 n_{j_2}} \end{eqnarray*} | \begin{eqnarray*} x_{j_1} & = & \frac{ x_{a_1} / n_{a_1} + x_{a_2} / n_{a_2} }{2 n_{j_1}} + x_{off_1} \\[1em] x_{j_2} & = & \frac{ x_{a_1} / n_{a_1} - x_{a_2} / n_{a_2} }{2 n_{j_1}} + x_{off_2} \end{eqnarray*} |
Joint to actuator | \begin{eqnarray*} \tau_{a_1} & = & \frac{ \tau_{j_1} / n_{j_1} + \tau_{j_2} / n_{j_2} }{2 n_{a_1}} \\[1em] \tau_{a_2} & = & \frac{ \tau_{j_1} / n_{j_1} - \tau_{j_2} / n_{j_2} }{2 n_{a_1}} \end{eqnarray*} | \begin{eqnarray*} \dot{x}_{a_1} & = & n_{a_1} ( n_{j_1} \dot{x}_{j_1} + n_{j_2} \dot{x}_{j_2} ) \\[2.5em] \dot{x}_{a_2} & = & n_{a_2} ( n_{j_1} \dot{x}_{j_1} - n_{j_2} \dot{x}_{j_2} ) \end{eqnarray*} | \begin{eqnarray*} x_{a_1} & = & n_{a_1} \left[ n_{j_1} (x_{j_1} - x_{off_1}) + n_{j_2} (x_{j_2} - x_{off_2}) \right] \\[2.5em] x_{a_2} & = & n_{a_2} \left[ n_{j_1} (x_{j_1} - x_{off_1}) - n_{j_2} (x_{j_2} - x_{off_2}) \right] \end{eqnarray*} |
where:
|
inline |
[in] | actuator_reduction | Reduction ratio of actuators. |
[in] | joint_reduction | Reduction ratio of joints. |
[in] | 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.