RobWorkProject
24.6.21

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...  
Public Member Functions inherited from InvKinSolver  
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  
Public Types inherited from InvKinSolver  
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 