kinematics-dynamics
|
Third Paden-Kahan subproblem. More...
#include <ScrewTheoryIkSubproblems.hpp>
Public Member Functions | |
PadenKahanThree (const MatrixExponential &exp, const KDL::Vector &p, const KDL::Vector &k) | |
Constructor. | |
bool | solve (const KDL::Frame &rhs, const KDL::Frame &pointTransform, const JointConfig &reference, Solutions &solutions) const override |
Finds a closed geometric solution for this IK subproblem. | |
int | solutions () const override |
Number of local IK solutions. | |
const char * | describe () const override |
Return a human-readable description of this IK subproblem. | |
virtual bool | solve (const KDL::Frame &rhs, const KDL::Frame &pointTransform, const JointConfig &reference, Solutions &solutions) const=0 |
Finds a closed geometric solution for this IK subproblem. | |
bool | solve (const KDL::Frame &rhs, const KDL::Frame &pointTransform, Solutions &_solutions) |
![]() | |
virtual | ~ScrewTheoryIkSubproblem ()=default |
Destructor. | |
bool | solve (const KDL::Frame &rhs, const KDL::Frame &pointTransform, Solutions &_solutions) |
Private Attributes | |
const MatrixExponential | exp |
const KDL::Vector | p |
const KDL::Vector | k |
const KDL::Rotation | axisPow |
Additional Inherited Members | |
![]() | |
using | JointConfig = std::vector< double > |
Joint configurations. | |
using | Solutions = std::vector< JointConfig > |
Collection of local IK solutions. | |
Dual solution, single revolute joint geometric IK subproblem given by \( \left \| e\,^{\hat{\xi}\,{\theta}} \cdot p - k \right \| = \delta \) (rotation screw for moving \( p \) to a distance \( \delta \) from \( k \)).
PadenKahanThree::PadenKahanThree | ( | const MatrixExponential & | exp, |
const KDL::Vector & | p, | ||
const KDL::Vector & | k | ||
) |
exp | POE term. |
p | First characteristic point. |
k | Second characteristic point. |
|
inlineoverridevirtual |
Implements roboticslab::ScrewTheoryIkSubproblem.
|
inlineoverridevirtual |
Implements roboticslab::ScrewTheoryIkSubproblem.
|
overridevirtual |
Given the product of exponentials (POE) formula \( \prod_i e\,^{\hat{\xi}_i\,{\theta_i}} \cdot H_{ST}(0) = H_{ST}(\theta) \), invariant and known terms are rearranged to the right side (rhs
) as follows:
\[ \prod_{i=j}^{j+k} e\,^{\hat{\xi}_i\,{\theta_i}} = \left [ \prod_{i=1}^{j-1} e\,^{\hat{\xi}_i\,{\theta_i}} \right ]^{-1} \cdot H_{ST}(\theta) \cdot \left [ H_{ST}(0) \right ]^{-1} \cdot \left [ \prod_{i=j+k+1}^{N} e\,^{\hat{\xi}_i\,{\theta_i}} \right ]^{-1} \]
where \( j = \{1, 2, ..., N\} \), \( k = \{1, 2, ..., N-1\} \), \( 1 <= j+k <= N \).
Given \( N \) terms in the POE formula, \( j \) of which are unknowns, any characteristic point \( p \) postmultiplying this expression could be rewritten as \( p' \) per:
\[ \prod_{i=1}^j e\,^{\hat{\xi}_i\,{\theta_i}} \cdot \prod_{i=j+1}^N e\,^{\hat{\xi}_i\,{\theta_i}} \cdot p = \prod_{i=1}^j e\,^{\hat{\xi}_i\,{\theta_i}} \cdot p' \]
where pointTransform
is the transformation matrix that produces \( p' \) from \( p \).
rhs | Right-hand side of the POE formula prior to being applied to the right-hand side of this subproblem. |
pointTransform | Transformation frame applied to the first (and perhaps only) characteristic point of this subproblem. |
reference | Known nearby solutions to be used as reference in case a singularity is found. |
solutions | Output vector of local solutions. |
Implements roboticslab::ScrewTheoryIkSubproblem.
|
virtual |
Given the product of exponentials (POE) formula \( \prod_i e\,^{\hat{\xi}_i\,{\theta_i}} \cdot H_{ST}(0) = H_{ST}(\theta) \), invariant and known terms are rearranged to the right side (rhs
) as follows:
\[ \prod_{i=j}^{j+k} e\,^{\hat{\xi}_i\,{\theta_i}} = \left [ \prod_{i=1}^{j-1} e\,^{\hat{\xi}_i\,{\theta_i}} \right ]^{-1} \cdot H_{ST}(\theta) \cdot \left [ H_{ST}(0) \right ]^{-1} \cdot \left [ \prod_{i=j+k+1}^{N} e\,^{\hat{\xi}_i\,{\theta_i}} \right ]^{-1} \]
where \( j = \{1, 2, ..., N\} \), \( k = \{1, 2, ..., N-1\} \), \( 1 <= j+k <= N \).
Given \( N \) terms in the POE formula, \( j \) of which are unknowns, any characteristic point \( p \) postmultiplying this expression could be rewritten as \( p' \) per:
\[ \prod_{i=1}^j e\,^{\hat{\xi}_i\,{\theta_i}} \cdot \prod_{i=j+1}^N e\,^{\hat{\xi}_i\,{\theta_i}} \cdot p = \prod_{i=1}^j e\,^{\hat{\xi}_i\,{\theta_i}} \cdot p' \]
where pointTransform
is the transformation matrix that produces \( p' \) from \( p \).
rhs | Right-hand side of the POE formula prior to being applied to the right-hand side of this subproblem. |
pointTransform | Transformation frame applied to the first (and perhaps only) characteristic point of this subproblem. |
reference | Known nearby solutions to be used as reference in case a singularity is found. |
solutions | Output vector of local solutions. |
Implements roboticslab::ScrewTheoryIkSubproblem.