Main Page   Modules   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

OSCAR::IKJTranspose Class Reference
[InverseKinematics]

This class contains methods for calculating inverse position solutions for serial manipulators (especially low DOF manipulators) using the Jacobian Transpose technique. More...

#include <IKJTranspose.h>

Inheritance diagram for OSCAR::IKJTranspose:

Inheritance graph
[legend]
List of all members.

Public Methods

 IKJTranspose (JointVector &initialJointPosition, FKJacobian *fkJacobian, double errorBound=0.1)
 IKJTranspose (const IKJTranspose &rhs)
IKJTranspose & operator= (const IKJTranspose &rhs)
virtual ~IKJTranspose ()
bool GetJointPosition (const HandPose &desiredHand, JointVector &jointPosition)
bool GetJointPosition (const Xform &desiredHand, JointVector &jointPosition)
bool SetWeightMatrix (Matrix &weights)
bool SetErrorBound (double &errorBound)
bool SetMaxIterations (int &iterations)

Protected Methods

double calculateErrorMagnitude (const HandPose &desiredHand, const HandPose &currentHand, HandPose &error_hand)

Protected Attributes

FKJacobianfkJDummy
unsigned int dof
Matrix currentJacobian
Matrix currentJacobianTranspose
Vector currentJoints
Vector jtTimesE
HandPose xdMinusXc
Vector weightedXdXc
Matrix weightMatrix
unsigned int maxIterations
unsigned int iterations
double errorbound

Detailed Description

Author:
Jeremy Sevier & Peter S. March


Constructor & Destructor Documentation

OSCAR::IKJTranspose::IKJTranspose JointVector   initialJointPosition,
FKJacobian   fkJacobian,
double    errorBound = 0.1
 

Constructor.

This is the constructor for an object of type IKJTranspose. Use this Constructor to create an IKJTranspose object from an FKJacobian object and an initial joint position. This class uses the Jacobian calculations from the FKJacobian class to perform a Jacobian Transpose inverse solution. As such, all functionality for setting and retrieving tool points and base poses should be done through the FKJacobian object.

Parameters:
initialJointPosition A DOF length vector of initial joint positions. This position will be used to create the object and should not be singular.
fkJacobian A pointer to an FKJacobian class. This object will be used to generate the Jacobian used for the inverse. All necessary tool points and base poses should be set in this object. A user can supply their custom FKJacobian object for this purpose.
errorBound is used as the maximum error allowed for the solution its default is 0.1

OSCAR::IKJTranspose::IKJTranspose const IKJTranspose &    rhs
 

Copy Constructor.

This is the Copy constructor for an object of type IKJTranspose. Use this to construct an IKJTranspose based on an existing IKJacobian object.

Parameters:
rhs An IKJTranspose object that will be used to initialize this new object.

virtual OSCAR::IKJTranspose::~IKJTranspose   [virtual]
 

Virtual Destructor.

This is the Destructor for an IKJacobian object.


Member Function Documentation

double OSCAR::IKJTranspose::calculateErrorMagnitude const HandPose   desiredHand,
const HandPose   currentHand,
HandPose   error_hand
[protected]
 

bool OSCAR::IKJTranspose::GetJointPosition const Xform   desiredHand,
JointVector   jointPosition
 

Get the Joint position.

This method is used to get the current joint position solution for an end-effector position represented by an Xform object.

Parameters:
desiredHand A transform matrix representing the desired end-effector position.
jointPosition A DOF long vector (where DOF is the number of joints or degrees of freedom).
Returns:
True if the method succeeds. Otherwise False. Call GetError() to get detailed error information.
See also:
GetJointPosition(const HandPose& desiredHand, JointVector& jointPosition)

bool OSCAR::IKJTranspose::GetJointPosition const HandPose   desiredHand,
JointVector   jointPosition
 

Get the Joint position.

This method is used to get the current joint position solution for an end-effector position represented by an HandPose object.

Parameters:
desiredHand. A 6 DOF vector representing the desired end-effector position & orientation.
jointPosition A DOF long vector (where DOF is the number of joints or degrees of freedom).
Returns:
True if the method succeeds. Otherwise False. Call GetError() to get detailed error information.
See also:
GetJointPosition(const Xform& desiredHand, JointVector& jointPosition)

IKJTranspose& OSCAR::IKJTranspose::operator= const IKJTranspose &    rhs
 

Assignment operator.

This is the Assignment operator for an object of type IKJTranspose.

Parameters:
rhs An IKJTranspose object that goes on the right hand side of the = operator.
Returns:
A reference to the object on the left hand side of the = operator.

bool OSCAR::IKJTranspose::SetErrorBound double &    errorBound
 

Set the Error Bound.

This method Sets the maximum error for a solution to be considered solved. It measures the norm of the weighted difference between the desired and current hand positions, and if the current hand is less than the error bound, it considers the current hand a solution to the Inverse Kinematics problem.

Parameters:
errorBound is a double specifying the maximum error for the IK solution.

bool OSCAR::IKJTranspose::SetMaxIterations int &    iterations
 

Maximum number of iterations.

This method Sets the number of iterations for a solution.

Parameters:
iterations is a double specifying the maximum number of iterations before IKJTranspose returns a solution.

bool OSCAR::IKJTranspose::SetWeightMatrix Matrix   weights
 

Set the Weight Matrix.

This method Sets the importance of a desired DOF. It defaults as an Identity matrix, but if say you just care about the position, you could use the first three diagonal elements (position) as 1's and the last three (orientation) as 0's.

Parameters:
weights is a 6x6 matrix of weights corresponding to the coordinate space.


Member Data Documentation

Matrix OSCAR::IKJTranspose::currentJacobian [protected]
 

Matrix OSCAR::IKJTranspose::currentJacobianTranspose [protected]
 

Vector OSCAR::IKJTranspose::currentJoints [protected]
 

unsigned int OSCAR::IKJTranspose::dof [protected]
 

double OSCAR::IKJTranspose::errorbound [protected]
 

FKJacobian* OSCAR::IKJTranspose::fkJDummy [protected]
 

unsigned int OSCAR::IKJTranspose::iterations [protected]
 

Vector OSCAR::IKJTranspose::jtTimesE [protected]
 

unsigned int OSCAR::IKJTranspose::maxIterations [protected]
 

Vector OSCAR::IKJTranspose::weightedXdXc [protected]
 

Matrix OSCAR::IKJTranspose::weightMatrix [protected]
 

HandPose OSCAR::IKJTranspose::xdMinusXc [protected]
 


The documentation for this class was generated from the following file:
RRG Homepage OSCAR Overview OSCAR Tutorials Simulations