3#ifndef __SCREW_THEORY_IK_SUBPROBLEMS_HPP__
4#define __SCREW_THEORY_IK_SUBPROBLEMS_HPP__
6#include <kdl/frames.hpp>
8#include "ScrewTheoryIkProblem.hpp"
9#include "MatrixExponential.hpp"
47 const KDL::Rotation axisPow;
84 const KDL::Vector p, r, axesCross;
85 const KDL::Rotation axisPow1, axisPow2;
122 const KDL::Vector p, k;
123 const KDL::Rotation axisPow;
196 const KDL::Vector p, crossPr2;
197 const double crossPr2Norm;
234 const KDL::Vector p, k;
271 const KDL::Vector p, n;
272 const KDL::Rotation axisPow;
311 const KDL::Rotation axisPow;
347 const KDL::Vector p, axesCross;
348 const KDL::Rotation axisPow1, axisPow2;
349 const double axesDot;
387 const KDL::Vector p, axesCross, axesCross_inverted;
388 const KDL::Rotation axisPow1, axisPow2;
389 const double axesDot;
421 bool solve(
const KDL::Frame & rhs,
const KDL::Frame & pointTransform,
const JointConfig & reference,
Solutions &
solutions,
const KDL::Frame & H_S_T,
const KDL::JntArray & c_solutions,
const KDL::Frame & H_S_T_0)
const override;
435 const KDL::Vector p, n;
436 const KDL::Rotation axisPow;
437 const int firstID, lastID;
472 {
return "PG3+PK1"; }
476 const KDL::Vector p, k;
477 const KDL::Rotation axisPow;
504 bool solve(
const KDL::Frame & rhs,
const KDL::Frame & pointTransform,
const JointConfig & reference,
Solutions &
solutions,
const KDL::Frame & H_S_T,
const KDL::JntArray & c_solutions)
const override;
506 bool solve(
const KDL::Frame & rhs,
const KDL::Frame & pointTransform,
const JointConfig & reference,
Solutions &
solutions,
const KDL::Frame & H_S_T,
const KDL::JntArray & c_solutions,
const KDL::Frame & H_S_T_0)
const override
508 return solve(rhs, pointTransform, reference,
solutions, H_S_T, c_solutions);
520 {
return "Algebraic"; }
Algebraic approach.
Definition ScrewTheoryIkSubproblems.hpp:491
int solutions() const override
Number of local IK solutions.
Definition ScrewTheoryIkSubproblems.hpp:516
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.
Definition ScrewTheoryIkSubproblems.hpp:511
const char * describe() const override
Return a human-readable description of this IK subproblem.
Definition ScrewTheoryIkSubproblems.hpp:519
Abstraction of a term in a product of exponentials (POE) formula.
Definition MatrixExponential.hpp:19
First Paden-Kahan subproblem.
Definition ScrewTheoryIkSubproblems.hpp:24
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.
Definition PadenKahanSubproblems.cpp:22
const char * describe() const override
Return a human-readable description of this IK subproblem.
Definition ScrewTheoryIkSubproblems.hpp:41
int solutions() const override
Number of local IK solutions.
Definition ScrewTheoryIkSubproblems.hpp:38
Third Paden-Kahan subproblem.
Definition ScrewTheoryIkSubproblems.hpp:99
const char * describe() const override
Return a human-readable description of this IK subproblem.
Definition ScrewTheoryIkSubproblems.hpp:117
int solutions() const override
Number of local IK solutions.
Definition ScrewTheoryIkSubproblems.hpp:114
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.
Definition PadenKahanSubproblems.cpp:163
Second Paden-Kahan subproblem.
Definition ScrewTheoryIkSubproblems.hpp:60
const char * describe() const override
Return a human-readable description of this IK subproblem.
Definition ScrewTheoryIkSubproblems.hpp:79
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.
Definition PadenKahanSubproblems.cpp:63
int solutions() const override
Number of local IK solutions.
Definition ScrewTheoryIkSubproblems.hpp:76
Eighth Pardos-Gotor subproblem.
Definition ScrewTheoryIkSubproblems.hpp:403
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.
Definition ScrewTheoryIkSubproblems.hpp:423
int solutions() const override
Number of local IK solutions.
Definition ScrewTheoryIkSubproblems.hpp:427
const char * describe() const override
Return a human-readable description of this IK subproblem.
Definition ScrewTheoryIkSubproblems.hpp:430
Fifth Pardos-Gotor subproblem.
Definition ScrewTheoryIkSubproblems.hpp:286
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.
Definition PardosGotorSubproblems.cpp:258
int solutions() const override
Number of local IK solutions.
Definition ScrewTheoryIkSubproblems.hpp:301
const char * describe() const override
Return a human-readable description of this IK subproblem.
Definition ScrewTheoryIkSubproblems.hpp:304
Fourth Pardos-Gotor subproblem.
Definition ScrewTheoryIkSubproblems.hpp:248
int solutions() const override
Number of local IK solutions.
Definition ScrewTheoryIkSubproblems.hpp:263
const char * describe() const override
Return a human-readable description of this IK subproblem.
Definition ScrewTheoryIkSubproblems.hpp:266
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.
Definition PardosGotorSubproblems.cpp:135
First Pardos-Gotor subproblem.
Definition ScrewTheoryIkSubproblems.hpp:137
int solutions() const override
Number of local IK solutions.
Definition ScrewTheoryIkSubproblems.hpp:151
const char * describe() const override
Return a human-readable description of this IK subproblem.
Definition ScrewTheoryIkSubproblems.hpp:154
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.
Definition PardosGotorSubproblems.cpp:33
Seventh Pardos-Gotor subproblem.
Definition ScrewTheoryIkSubproblems.hpp:363
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.
Definition PardosGotorSubproblems.cpp:432
int solutions() const override
Number of local IK solutions.
Definition ScrewTheoryIkSubproblems.hpp:379
const char * describe() const override
Return a human-readable description of this IK subproblem.
Definition ScrewTheoryIkSubproblems.hpp:382
Sixth Pardos-Gotor subproblem.
Definition ScrewTheoryIkSubproblems.hpp:325
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.
Definition PardosGotorSubproblems.cpp:321
int solutions() const override
Number of local IK solutions.
Definition ScrewTheoryIkSubproblems.hpp:339
const char * describe() const override
Return a human-readable description of this IK subproblem.
Definition ScrewTheoryIkSubproblems.hpp:342
Third Pardos-Gotor and First Paden Kahan subproblems.
Definition ScrewTheoryIkSubproblems.hpp:452
const char * describe() const override
Return a human-readable description of this IK subproblem.
Definition ScrewTheoryIkSubproblems.hpp:471
int solutions() const override
Number of local IK solutions.
Definition ScrewTheoryIkSubproblems.hpp:468
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.
Definition PardosGotorSubproblems.cpp:732
Third Pardos-Gotor subproblem.
Definition ScrewTheoryIkSubproblems.hpp:211
const char * describe() const override
Return a human-readable description of this IK subproblem.
Definition ScrewTheoryIkSubproblems.hpp:229
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.
Definition PardosGotorSubproblems.cpp:94
int solutions() const override
Number of local IK solutions.
Definition ScrewTheoryIkSubproblems.hpp:226
Second Pardos-Gotor subproblem.
Definition ScrewTheoryIkSubproblems.hpp:173
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.
Definition PardosGotorSubproblems.cpp:57
int solutions() const override
Number of local IK solutions.
Definition ScrewTheoryIkSubproblems.hpp:188
const char * describe() const override
Return a human-readable description of this IK subproblem.
Definition ScrewTheoryIkSubproblems.hpp:191
Abstraction of a product of exponentials (POE) formula.
Definition ProductOfExponentials.hpp:28
Interface shared by all IK subproblems found in Screw Theory applied to Robotics.
Definition ScrewTheoryIkProblem.hpp:26
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.
std::vector< double > JointConfig
Joint configurations.
Definition ScrewTheoryIkProblem.hpp:29
std::vector< JointConfig > Solutions
Collection of local IK solutions.
Definition ScrewTheoryIkProblem.hpp:32
The main, catch-all namespace for RoboticsLab UC3M.
Definition groups.dox:5