Tekkotsu Homepage
Demos
Overview
Downloads
Dev. Resources
Reference
Credits

IKSolver Class Reference

Provides an abstract interface to inverse kinematic solvers. More...

#include <IKSolver.h>

Inheritance diagram for IKSolver:

Detailed Description

Provides an abstract interface to inverse kinematic solvers.

Definition at line 11 of file IKSolver.h.

List of all members.

Classes

struct  Cone
 Cone allows 1-2 freedoms (roll, trade off pitch vs. yaw). More...
struct  Line
 Lines allow 1 freedom, slide along line. More...
struct  Orientation
 Abstract base class for orientation information. More...
struct  Parallel
 Parallel allows 1 freedom (roll along z vector). More...
struct  Plane
 Planes allow 2 freedoms, move in plane. More...
struct  Point
 Points allow 0 freedoms. More...
struct  Position
 Abstract base class for position information. More...
struct  Rotation
 Rotation (here specified as a quaternion) allows 0 freedoms. More...

Public Types

enum  StepResult_t { SUCCESS, PROGRESS, LIMITS, RANGE }
 

Indicates the type of progress made by the step() family.

More...
typedef FamilyFactory
< IKSolver, std::string,
Factory0Arg< IKSolver > > 
registry_t
 shorthand for type registry to allow dynamically instantiating IKSolvers based on the name found in configuration files

Public Member Functions

virtual ~IKSolver ()
 destructor
virtual bool solve (const Point &pEff, KinematicJoint &j, const Position &pTgt) const
 Solve to get an 'effector' point pEff (relative to link following j) to a solution of pTgt (or at least a local minimum).
virtual bool solve (const Rotation &oriEff, KinematicJoint &j, const Orientation &oriTgt) const
 Solve to get an 'effector' orientation oriEff (relative to link following j) to a solution of oriTgt (or at least a local minimum).
virtual bool solve (const Point &pEff, const Rotation &oriEff, KinematicJoint &j, const Position &pTgt, float posPri, const Orientation &oriTgt, float oriPri) const =0
 Solve to get an 'effector' (pEff, oriEff, relative to link following j) to a solution of pTgt, oriTgt (or at least a local minimum).
virtual StepResult_t step (const Point &pEff, KinematicJoint &j, const Position &pTgt, float pDist) const
 Move an 'effector' point pEff (relative to link following j) towards a solution of pTgt (or at least a local minimum).
virtual StepResult_t step (const Rotation &oriEff, KinematicJoint &j, const Orientation &oriTgt, float oriDist) const
 Move an 'effector' orientation oriEff (relative to link following j) towards a solution of oriTgt (or at least a local minimum).
virtual StepResult_t step (const Point &pEff, const Rotation &oriEff, KinematicJoint &j, const Position &pTgt, float pDist, float posPri, const Orientation &oriTgt, float oriDist, float oriPri) const =0
 Move an 'effector' (pEff, oriEff, relative to link following j) towards a solution of pTgt, oriTgt (or at least a local minimum).

Static Public Member Functions

static registry_tgetRegistry ()

Member Typedef Documentation

shorthand for type registry to allow dynamically instantiating IKSolvers based on the name found in configuration files

Definition at line 186 of file IKSolver.h.


Member Enumeration Documentation

Indicates the type of progress made by the step() family.

Enumerator:
SUCCESS 

goal was reached

PROGRESS 

step moved closer

LIMITS 

not able to progress due to joint limits

RANGE 

not able to progress due to target out of reach

Definition at line 14 of file IKSolver.h.


Constructor & Destructor Documentation

virtual IKSolver::~IKSolver (  )  [virtual]

destructor

Definition at line 134 of file IKSolver.h.


Member Function Documentation

static registry_t& IKSolver::getRegistry (  )  [static]

Definition at line 187 of file IKSolver.h.

Referenced by KinematicJoint::getIK().

virtual bool IKSolver::solve ( const Point pEff,
const Rotation oriEff,
KinematicJoint j,
const Position pTgt,
float  posPri,
const Orientation oriTgt,
float  oriPri 
) const [pure virtual]

Solve to get an 'effector' (pEff, oriEff, relative to link following j) to a solution of pTgt, oriTgt (or at least a local minimum).

Parameters:
pEff The point on the effector that should be brought to the target. Typically [0,0,0] if the effector is GripperFrame.
oriEff Rotation of the effector's reference frame; used to align some effector axis with the target's Orientation axes. For example, if oriTgt is a Parallel constraint, the effector will be free to rotate about the target's z-axis. If we want the effector to rotate about its y-axis, we use oriEff to rotate the effector y-axis to the target's z-axis.
j The kinematic joint at the end of the chain (e.g., GripperFrame)
pTgt The Position constraint that pEff should satisfy, i.e., the target location
oriTgt The Orientation constraint that pEff should satisfy at the target location
posPri,oriPri Relative priorities (weightings) of position and orientation solutions in case they are mutually exclusive

Implemented in IKCalliope, IKGradientSolver, and IKThreeLink.

virtual bool IKSolver::solve ( const Rotation oriEff,
KinematicJoint j,
const Orientation oriTgt 
) const [virtual]

Solve to get an 'effector' orientation oriEff (relative to link following j) to a solution of oriTgt (or at least a local minimum).

Parameters:
oriEff Rotation of the effector's reference frame; used to align some effector axis with the target's Orientation axes. For example, if oriTgt is a Parallel constraint, the effector will be free to rotate about the target's z-axis. If we want the effector to rotate about its y-axis, we use oriEff to rotate the effector y-axis to the target's z-axis.
j The kinematic joint at the end of the chain (e.g., GripperFrame)
oriTgt The Orientation constraint that pEff should satisfy at the target location

Definition at line 151 of file IKSolver.h.

virtual bool IKSolver::solve ( const Point pEff,
KinematicJoint j,
const Position pTgt 
) const [virtual]

Solve to get an 'effector' point pEff (relative to link following j) to a solution of pTgt (or at least a local minimum).

Parameters:
pEff The point on the effector that should be brought to the target. Typically [0,0,0] if the effector is GripperFrame.
j The kinematic joint at the end of the chain (e.g., GripperFrame)
pTgt The Position constraint that pEff should satisfy, i.e., the target location

Definition at line 142 of file IKSolver.h.

Referenced by GaitedFootsteps::addCandidate(), GaitedFootsteps::addRotation(), CBracketGrasperPredicate< N >::admissible(), Grasper::checkGoalCandidate(), Grasper::PlanArmApproach::doStart(), GaitedFootsteps::expand(), HeadPointerMC::lookAtPoint(), HeadPointerMC::lookInDirection(), ArmMC::moveOffsetToPoint(), ArmMC::moveOffsetToPointWithOrientation(), ArmController::pointPicked(), ArmController::sendReachablePoints(), solve(), XWalkMC::solveIK(), GaitedFootstepMC::solveIK(), PostureEngine::solveLink(), PostureEngine::solveLinkOrientation(), and PostureEngine::solveLinkPosition().

virtual StepResult_t IKSolver::step ( const Point pEff,
const Rotation oriEff,
KinematicJoint j,
const Position pTgt,
float  pDist,
float  posPri,
const Orientation oriTgt,
float  oriDist,
float  oriPri 
) const [pure virtual]

Move an 'effector' (pEff, oriEff, relative to link following j) towards a solution of pTgt, oriTgt (or at least a local minimum).

pDist and oriDist specifies the maximum distance to move towards each solution; posPri and oriPri specify relative weighting of each solution in case they are mutually exclusive

Implemented in IKCalliope, IKGradientSolver, and IKThreeLink.

virtual StepResult_t IKSolver::step ( const Rotation oriEff,
KinematicJoint j,
const Orientation oriTgt,
float  oriDist 
) const [virtual]

Move an 'effector' orientation oriEff (relative to link following j) towards a solution of oriTgt (or at least a local minimum).

oriDist specifies the maximum distance to move in radians

Definition at line 175 of file IKSolver.h.

virtual StepResult_t IKSolver::step ( const Point pEff,
KinematicJoint j,
const Position pTgt,
float  pDist 
) const [virtual]

Move an 'effector' point pEff (relative to link following j) towards a solution of pTgt (or at least a local minimum).

pDist specifies the maximum distance to move

Definition at line 169 of file IKSolver.h.

Referenced by step().


The documentation for this class was generated from the following file:

Tekkotsu v5.1CVS
Generated Mon May 9 04:59:09 2016 by Doxygen 1.6.3