Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

robot::control::kinematics::InverseKinematicsSolver Class Reference

Abstract Inverse Kinematics Solver. More...

Inheritance diagram for robot::control::kinematics::InverseKinematicsSolver:

Inheritance graph
[legend]
Collaboration diagram for robot::control::kinematics::InverseKinematicsSolver:

Collaboration graph
[legend]
List of all members.

Public Types

typedef std::bitset< sizeof(Int)*8 OptimizationConstraints )
enum  OptimizationMethod {
  DefaultMethod, PseudoInv, Lagrangian, BangBang,
  Simplex
}
enum  OptimizationCriterion { DefaultCriterion, LeastNorm, LeastFlow }
enum  OptimizationConstraint {
  DefaultConstraints, JointLimits, ObstacleAvoidance, Acceleration,
  EndEffectorImpact
}

Public Member Functions

virtual Vector solve (const Vector &dx, const Vector &x, const Vector &q, const base::Matrix &J, OptimizationMethod optMethod=DefaultMethod, OptimizationCriterion optCriterion=DefaultCriterion, OptimizationConstraints optConstraints=OptimizationConstraints(DefaultConstraints), base::Orient::Representation orientationRepresentation=base::Orient::EulerRPY)=0
 Solve inverse kinematics.

virtual bool isConstraintTypeSupported (OptimizationConstraint optConstraint, OptimizationMethod optMethod=DefaultMethod, OptimizationCriterion optCriterion=DefaultCriterion)
 query if a particular constraint type is supported by this solver for a specific method & criterion

virtual void setProximitySensorData (const array< LinkProximityData > &proximityData, Real d)
virtual void setParameter (const String &name, Real value)
 Set implementation specific parameters. Unknown names will throw a std::invald_argument exception.

virtual bool isSameKindAs (const ReferencedObject &) const
virtual bool isSameKindAs (const Object &) const
virtual String className () const=0
void reference () const
bool unreference () const
const int referenceCount () const
void enableOnUnreferenceCall (bool enabled)
virtual void onUnreference () const

Protected Attributes

int _refCount
bool onUnreferenceEnabled

Detailed Description

Abstract Inverse Kinematics Solver.

Abstract base class for concrete classes that implement specific method for solving the inverse kinematics problem (required joint parameter changes (dq) to achieve end-effector motions specificed in task space (dx) )

Definition at line 49 of file InverseKinematicsSolver.


Member Typedef Documentation

typedef std::bitset<sizeof(Int)*8 robot::control::kinematics::InverseKinematicsSolver::OptimizationConstraints)
 

Definition at line 58 of file InverseKinematicsSolver.


Member Enumeration Documentation

enum robot::control::kinematics::InverseKinematicsSolver::OptimizationConstraint
 

Enumeration values:
DefaultConstraints 
JointLimits 
ObstacleAvoidance 
Acceleration 
EndEffectorImpact 

Definition at line 55 of file InverseKinematicsSolver.

enum robot::control::kinematics::InverseKinematicsSolver::OptimizationCriterion
 

Enumeration values:
DefaultCriterion 
LeastNorm 
LeastFlow 

Definition at line 54 of file InverseKinematicsSolver.

enum robot::control::kinematics::InverseKinematicsSolver::OptimizationMethod
 

Enumeration values:
DefaultMethod 
PseudoInv 
Lagrangian 
BangBang 
Simplex 

Definition at line 53 of file InverseKinematicsSolver.


Member Function Documentation

virtual String base::Object::className  )  const [pure virtual, inherited]
 

return the name of the object's class type. Must be defined by derived classes.

Implemented in base::Application, base::BinarySerializer, base::Cache, base::CacheDirectory, base::CacheFile, base::ConstantExpression, base::CosExpression, base::DifferenceExpression, base::Directory, base::Expression, base::Externalizer, base::File, base::LineSegPathRep, base::LineSegTrajectoryRep, base::Math, base::NegateExpression, base::ParametricPathRep, base::ParametricTrajectoryRep, base::Path, base::PathComponent, base::PathName, base::ProductExpression, base::QuotientExpression, base::SimpleXMLSerializer, base::SinExpression, base::StdFileSystem, base::SumExpression, base::Time, base::Trajectory, base::Universe, base::VariableExpression, base::VDirectory, base::WaypointPathRep, base::WaypointTrajectoryRep, base::World, gfx::IndexedPoint3Array, gfx::OSGWorld, gfx::TriangleIterator, gfx::VisualPath, gfx::VisualTriangles, gfx::VisualTriangles::TriangleArrayIteratorState, physics::Body, physics::Box, physics::Capsule, physics::CollidableGroup, physics::CollisionModel::ModelState, physics::CollisionState, physics::Cone, physics::Cylinder, physics::DynamicSpatial, physics::GJKCollisionDetector, physics::GJKCollisionDetector::GJKCollisionState, physics::GJKCollisionModel, physics::HeightField, physics::LODTerrain, physics::MassProperties, physics::Material, physics::NullCollisionResponseHandler, physics::OBBCollisionDetector, physics::OBBCollisionDetector::OBBCollisionState, physics::OBBCollisionModel, physics::ODEBallJoint, physics::ODECollidableBody, physics::ODECollidableBody::BodyState, physics::ODECollidableGroup, physics::ODECollisionCuller, physics::ODECollisionDetector, physics::ODECollisionDetector::ODECollisionState, physics::ODECollisionModel, physics::ODECollisionResponseHandler, physics::ODEConstraintGroup, physics::ODEContactConstraint, physics::ODEDoubleHingeJoint, physics::ODEFixedConstraint, physics::ODEHingeJoint, physics::ODEMotor, physics::ODESliderJoint, physics::ODESolid, physics::ODESolidConnectedCollidableBody, physics::ODESolidSystem, physics::ODEUniversalJoint, physics::Polyhedron, physics::Polyhedron::Vertex, physics::Polyhedron::Edge, physics::Polyhedron::Polygon, physics::SimpleCollisionCuller, physics::SimpleTerrain, physics::Solid, physics::SOLIDCollisionDetector, physics::SOLIDCollisionDetector::SOLIDCollisionState, physics::SOLIDCollisionModel, physics::SolidCollisionResponseHandler, physics::SpatialGroup, physics::SpatialTransform, physics::Sphere, physics::Torus, physics::VisualDebugUtil, robot::AggregateControlInterface, robot::control::ControllableAdaptor, robot::control::ControllableAdaptor::AdaptorControlInterface, robot::control::kinematics::AnalyticLagrangianFSBetaOptimizer, robot::control::kinematics::AnalyticLagrangianNullSpaceBetaOptimizer, robot::control::kinematics::BetaFormConstraints::BetaFormConstraint, robot::control::kinematics::BetaFormConstraints, robot::control::kinematics::IKOR, robot::control::kinematics::IKOR::JointLimitBetaConstraint, robot::control::kinematics::IKOR::PushAwayBetaConstraint, robot::control::kinematics::IKOR::RankLossBetaConstraint, robot::control::kinematics::IKORController, robot::control::kinematics::IKORController::EEPositionControlInterface, robot::control::kinematics::IKORController::LinkPositionsControlInterface, robot::control::kinematics::IKORFullSpaceSolver, robot::control::kinematics::LeastNormIKSolver, robot::control::kinematics::MPPseudoInvSolver, robot::control::kinematics::OldIKOR, robot::control::kinematics::ReferenceOpVectorFormObjective, robot::control::kinematics::SVDFullSpaceSolver, robot::control::ManipulatorPIDPositionController, robot::control::ManipulatorPIDPositionController::PositionInterface, robot::JFKengine, robot::KinematicChain::Link, robot::KinematicChain, robot::ManipulatorDescription, robot::ManipulatorJointTrajectory, robot::NumericKinematicEvaluator, robot::PlatformDescription, robot::RobotDescription, robot::sim::BasicEnvironment, robot::sim::BasicEnvironment::Tool, robot::sim::BasicEnvironment::Obstacle, robot::sim::Environment, robot::sim::IKORTest, robot::sim::IKORTest::Test, robot::sim::IKORTester, robot::sim::SimulatedBasicEnvironment, robot::sim::SimulatedKinematicChain::ProximityCollisionResponseHandler, robot::sim::SimulatedManipulatorDescription, robot::sim::SimulatedPlatform, robot::sim::SimulatedRobot, robot::sim::SimulatedRobot::ManipulatorControlInterface, robot::sim::SimulatedRobot::ToolControlInterface, robot::sim::SimulatedRobot::PlatformControlInterface, robot::sim::SimulatedRobot::ProximitySensorInterface, robot::sim::SimulatedRobotDescription, robot::sim::SimulatedSerialManipulator, robot::sim::SimulatedTool, robot::sim::TestBasicEnvironment, robot::sim::VisualIKORTest, robot::TestRobot, robot::TestRobot::ManipulatorControlInterface, robot::TestRobot::ToolControlInterface, robot::TestRobot::PlatformControlInterface, robot::TestRobot::ProximitySensorInterface, and robot::ToolDescription.

void base::Referenced::enableOnUnreferenceCall bool  enabled  )  [inline, inherited]
 

If enabled, each call to unreference() will also call virtual method onUnreference()

Definition at line 115 of file Referenced.

References base::Referenced::onUnreferenceEnabled.

virtual bool robot::control::kinematics::InverseKinematicsSolver::isConstraintTypeSupported OptimizationConstraint  optConstraint,
OptimizationMethod  optMethod = DefaultMethod,
OptimizationCriterion  optCriterion = DefaultCriterion
[inline, virtual]
 

query if a particular constraint type is supported by this solver for a specific method & criterion

Reimplemented in robot::control::kinematics::IKOR.

Definition at line 110 of file InverseKinematicsSolver.

virtual bool base::Object::isSameKindAs const Object  )  const [inline, virtual, inherited]
 

Definition at line 47 of file Object.

virtual bool base::ReferencedObject::isSameKindAs const ReferencedObject  )  const [inline, virtual, inherited]
 

Definition at line 52 of file ReferencedObject.

virtual void base::Referenced::onUnreference  )  const [inline, virtual, inherited]
 

Called by unreference() if enabled via enableOnUnreferenceCall(true). Typically overridden in subclasses that wish to know about unreference() calls - for example to handle manually breaking cyclic references

Reimplemented in robot::control::ControllableAdaptor::AdaptorControlInterface, and robot::control::ControllableAdaptor.

Definition at line 121 of file Referenced.

Referenced by base::Referenced::unreference().

void base::Referenced::reference  )  const [inline, inherited]
 

Increment the reference count by one, indicating that this object has another pointer which is referencing it.

Definition at line 65 of file Referenced.

References base::Referenced::_refCount.

const int base::Referenced::referenceCount  )  const [inline, inherited]
 

Return the number pointers currently referencing this object.

Definition at line 112 of file Referenced.

References base::Referenced::_refCount.

Referenced by robot::control::ControllableAdaptor::AdaptorControlInterface::onUnreference().

virtual void robot::control::kinematics::InverseKinematicsSolver::setParameter const String &  name,
Real  value
[inline, virtual]
 

Set implementation specific parameters. Unknown names will throw a std::invald_argument exception.

Reimplemented in robot::control::kinematics::IKOR, and robot::control::kinematics::OldIKOR.

Definition at line 137 of file InverseKinematicsSolver.

References Exception.

virtual void robot::control::kinematics::InverseKinematicsSolver::setProximitySensorData const array< LinkProximityData > &  proximityData,
Real  d
[inline, virtual]
 

set proximity sensor data (array indices correspond to parameter elements of q) d - is 'danger distance' within which a constraint becomes active

Reimplemented in robot::control::kinematics::IKOR.

Definition at line 130 of file InverseKinematicsSolver.

virtual Vector robot::control::kinematics::InverseKinematicsSolver::solve const Vector dx,
const Vector x,
const Vector q,
const base::Matrix J,
OptimizationMethod  optMethod = DefaultMethod,
OptimizationCriterion  optCriterion = DefaultCriterion,
OptimizationConstraints  optConstraints = OptimizationConstraints(DefaultConstraints),
base::Orient::Representation  orientationRepresentation = base::Orient::EulerRPY
[pure virtual]
 

Solve inverse kinematics.

Takes current the joint parameters (q), end-effector position (x), and the required change in end-effector position (dx) and returns the changes in joint parameters (dq) that will achieve the requested dx.

Parameters:
dx An vector specifiying the required change in end-effector position (in N-dim task space)
x An vector specifiying the current end-effector position (in N-dim task space)
q An M-dim vector representing the current joint parameters.
J An NxM Jacobian expression for the system, evaluated at q.
optMethod Optimization method employed to narrow the solution space to a single vector (if necessary). Values are specific to concrete subclasses.
optCriterion Optimization criteria for the optimization method. Values are specific to concrete subclasses.
optConstraints Optimization constraints (if any). Values are specific to concrete subclasses.
orientationRepresentation The representation used in [d]x to specify the [change in] orientation in task-space. If N=6, it is assumed to specify a [delta] position and a orientation in R3. The first 3 components of [d]x represent a ([d]x,[d]y,[d]z) [delta] position, and the remaining components represent a [delta] orientation in the specified representation. For example, EulerRPY specifies that the [d]x(3,4,6) components represent the [delta] Roll, Pith and Yaw angles. Quat specifies that the [d]x(3,4,5,6) components represent a [delta] orientation via a quaternion. The delta orientation components are typically converted to angular velocity (omega) using Orient::getBInv().
Returns:
An M-dim Vector dq which represents the joint parameters changes that will result in the specific dx changes in the end-effector (i.e. a solution dq to dx = J(q)dq )
Exceptions:
Specific to concrete subclasses.
Todo:
why is x necessary?

Implemented in robot::control::kinematics::IKOR, robot::control::kinematics::LeastNormIKSolver, and robot::control::kinematics::OldIKOR.

bool base::Referenced::unreference  )  const [inline, inherited]
 

Decrement the reference count by one, indicating that a pointer to this object is referencing it. If the refence count goes to zero, it is assumed that this object is nolonger referenced and is automatically deleted.

Definition at line 81 of file Referenced.

References base::Referenced::_refCount, Exception, base::Referenced::onUnreference(), and base::Referenced::onUnreferenceEnabled.


Member Data Documentation

int base::Referenced::_refCount [mutable, protected, inherited]
 

Definition at line 136 of file Referenced.

Referenced by base::Referenced::reference(), base::Referenced::referenceCount(), base::Referenced::Referenced(), base::Referenced::unreference(), and base::Referenced::~Referenced().

bool base::Referenced::onUnreferenceEnabled [protected, inherited]
 

Definition at line 137 of file Referenced.

Referenced by base::Referenced::enableOnUnreferenceCall(), base::Referenced::Referenced(), and base::Referenced::unreference().


The documentation for this class was generated from the following file:
Generated on Thu Jul 29 16:42:37 2004 for OpenSim by doxygen 1.3.6