|
kinematics-dynamics
|
Second Paden-Kahan subproblem. More...
#include <ScrewTheoryIkSubproblems.hpp>
Public Member Functions | |
| PadenKahanTwo (const MatrixExponential &exp1, const MatrixExponential &exp2, const KDL::Vector &p, const KDL::Vector &r) | |
| 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) const |
Public Member Functions inherited from roboticslab::ScrewTheoryIkSubproblem | |
| virtual | ~ScrewTheoryIkSubproblem ()=default |
| Destructor. | |
| bool | solve (const KDL::Frame &rhs, const KDL::Frame &pointTransform, Solutions &_solutions) const |
Private Attributes | |
| const MatrixExponential | exp1 |
| const MatrixExponential | exp2 |
| const KDL::Vector | p |
| const KDL::Vector | r |
| const KDL::Vector | axesCross |
| const KDL::Rotation | axisPow1 |
| const KDL::Rotation | axisPow2 |
| const double | axesDot |
Additional Inherited Members | |
Public Types inherited from roboticslab::ScrewTheoryIkSubproblem | |
| using | JointConfig = std::vector< double > |
| Joint configurations. | |
| using | Solutions = std::vector< JointConfig > |
| Collection of local IK solutions. | |
Dual solution, double revolute joint geometric IK subproblem given by \( e\,^{\hat{\xi_1}\,{\theta_1}} \cdot e\,^{\hat{\xi_2}\,{\theta_2}} \cdot p = k \) (consecutive crossing rotation screws to a point).
| PadenKahanTwo::PadenKahanTwo | ( | const MatrixExponential & | exp1, |
| const MatrixExponential & | exp2, | ||
| const KDL::Vector & | p, | ||
| const KDL::Vector & | r | ||
| ) |
| exp1 | First POE term. |
| exp2 | Second POE term. |
| p | Characteristic point. |
| r | Point of intersection between both screw axes. |
|
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.