101 config_.pitch_scale *
117 const double a11 = config_.yaw_scale * config_.m00;
118 const double a12 = config_.yaw_scale * config_.m01;
119 const double a21 = config_.pitch_scale * config_.m10;
120 const double a22 = config_.pitch_scale * config_.m11;
122 const double det = a11 * a22 - a12 * a21;
123 if (std::abs(det) <= config_.singularity_epsilon) {
124 result.
valid =
false;
128 const double inv11 = a22 / det;
129 const double inv12 = -a12 / det;
130 const double inv21 = -a21 / det;
131 const double inv22 = a11 / det;
162 void applyLimits(JointState& state)
const {
DoubleDifferentialMechanism(const Config &config)
Definition double_differential.hpp:73
JointState forward(const MotorState &motor_state) const
Computes joint state from motor state via forward mapping.
Definition double_differential.hpp:88
InverseResult inverse(const JointState &desired_joint_state) const
Solves inverse mapping from desired joint state to motor state.
Definition double_differential.hpp:114
JointState clampedToLimits(const JointState &state) const
Returns a copy of state clamped to configured joint limits.
Definition double_differential.hpp:155
DoubleDifferentialMechanism()=default
const Config & config() const
Returns current mapping configuration.
Definition double_differential.hpp:78
void setConfig(const Config &config)
Replaces mapping configuration.
Definition double_differential.hpp:81
Mapping coefficients and inversion thresholds.
Definition double_differential.hpp:31
double m11
Definition double_differential.hpp:37
double m01
Definition double_differential.hpp:35
double m10
Definition double_differential.hpp:36
double m00
Definition double_differential.hpp:34
Limits limits
Definition double_differential.hpp:43
double yaw_scale
Definition double_differential.hpp:40
double singularity_epsilon
Definition double_differential.hpp:44
double pitch_scale
Definition double_differential.hpp:41
Result from inverse kinematics solve.
Definition double_differential.hpp:64
bool valid
Definition double_differential.hpp:68
MotorState motor_state
Definition double_differential.hpp:66
Output state for mechanism yaw/pitch joints.
Definition double_differential.hpp:56
double yaw_rad
Definition double_differential.hpp:57
double pitch_velocity_radps
Definition double_differential.hpp:60
double yaw_velocity_radps
Definition double_differential.hpp:59
double pitch_rad
Definition double_differential.hpp:58
Optional soft limits applied to joint coordinates.
Definition double_differential.hpp:23
double max_pitch_rad
Definition double_differential.hpp:27
double min_yaw_rad
Definition double_differential.hpp:24
double min_pitch_rad
Definition double_differential.hpp:26
double max_yaw_rad
Definition double_differential.hpp:25
Input state for the two drive motors.
Definition double_differential.hpp:48
double motor_b_velocity_radps
Definition double_differential.hpp:52
double motor_a_velocity_radps
Definition double_differential.hpp:51
double motor_a_position_rad
Definition double_differential.hpp:49
double motor_b_position_rad
Definition double_differential.hpp:50