![]() |
RobWorkProject
23.9.11-
|
Wraps a InvKinSolver and searches for ambiguities due to joint able to rotate \( 2 \ pi \) or more. More...
#include <AmbiguityResolver.hpp>
Inherits InvKinSolver.
Public Member Functions | |
AmbiguityResolver (const rw::core::Ptr< rw::invkin::InvKinSolver > &invkin, rw::core::Ptr< rw::models::JointDevice > device) | |
Constructs an AmbiguityResolver. More... | |
~AmbiguityResolver (void) | |
Destructor. | |
virtual std::vector< rw::math::Q > | solve (const rw::math::Transform3D< double > &baseTend, const class rw::kinematics::State &state) const |
Calls the InvKinSolver provided and resolves ambiguities. More... | |
virtual void | setCheckJointLimits (bool check) |
No effect. The AmbiguityResolver always tests for joint limits. | |
virtual rw::core::Ptr< const rw::kinematics::Frame > | getTCP () const |
Returns the Tool Center Point (TCP) used when solving the IK problem. More... | |
![]() | |
virtual | ~InvKinSolver () |
destructor | |
virtual std::vector< math::Q > | solve (const rw::math::Transform3D< double > &baseTend, const rw::kinematics::State &state) const =0 |
Calculates the inverse kinematics. More... | |
Additional Inherited Members | |
![]() | |
typedef rw::core::Ptr< InvKinSolver > | Ptr |
smart pointer type to this class | |
typedef rw::core::Ptr< const InvKinSolver > | CPtr |
smart pointer type to this const class | |
Wraps a InvKinSolver and searches for ambiguities due to joint able to rotate \( 2 \ pi \) or more.
For each solution \(\mathbf{q}\) the method tries to see if a \( j \) exists s.t. \( \mathbf{q}(i)=\mathbf{q}(i)+j * 2 \ pi \) is a valid solution.
The AmbiguityResolver always tests for joint limits.
AmbiguityResolver | ( | const rw::core::Ptr< rw::invkin::InvKinSolver > & | invkin, |
rw::core::Ptr< rw::models::JointDevice > | device | ||
) |
Constructs an AmbiguityResolver.
invkin | [in] The inverse kinematics solver to obtain solutions from |
device | [in] the device for which to calculate inverse kinematics |
|
virtual |
Returns the Tool Center Point (TCP) used when solving the IK problem.
Implements InvKinSolver.
|
virtual |
Calls the InvKinSolver provided and resolves ambiguities.
Calculates the inverse kinematics. Given a desired \(\robabx{}{desired}{\mathbf{T}}\) and the current state, the method solves the inverse kinematics problem.
If the algorithm is able to identify multiple solutions (e.g. elbow up and down) it will return all of these. Before returning a solution, they may be checked to be within the bounds of the configuration space. (See setCheckJointLimits(bool) )
baseTend | [in] Desired base to end transformation \( \robabx{}{desired}{\mathbf{T}}\) |
state | [in] State of the device from which to start the iterations |