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

OSCAR::IKPuma Class Reference
[InverseKinematics]

IKPuma Implements a closed form solution for a standard Puma Robot. More...

#include <IKPuma.h>

Inheritance diagram for OSCAR::IKPuma:

Inheritance graph
[legend]
List of all members.

Public Methods

 IKPuma (const String &dhParameterFileName, OSCARError &err=DUMMY_ERROR(noError), const String &name=String(""))
 IKPuma (const DHData &dhData, OSCARError &err=DUMMY_ERROR(noError), const String &name=String(""))
 IKPuma (const IKPuma &rhs)
virtual ~IKPuma ()
bool GetJointPosition (const Xform &handXform, JointVector &jointPositionSolution)
bool GetJointPosition (const HandPose &handPose, JointVector &jointPositionSolution)
void SetClosure (bool leftShoulder, bool elbowDown)
void GetClosure (bool &leftShoulder, bool &elbowDown)
IKPuma & operator= (const IKPuma &rhs)

Protected Attributes

double a2
double d4
double d3
double a3
bool leftShoulder
bool elbowDown

Detailed Description

Author:
Chetan Kapoor
This class can be further extended to support tool point and base pose functionality by deriving from Kinematics


Constructor & Destructor Documentation

OSCAR::IKPuma::IKPuma const String   dhParameterFileName,
OSCARError   err = DUMMY_ERROR(noError),
const String   name = String("")
 

Constructor.

This is the constructor for an object of type IKPuma. Use this to construct an IKPuma object.

Parameters:
dhParameterFileName The name of a file that contains the DH parameters for the Puma robot. This file should specify a 6 DOF robot in the standard puma geometry. The standard Puma DH parameters are listed below. You can only change the values of a(i-1) columns and the d(i) column.
-----------------------------------------------------------------------------------------

# This is a DH parameter file for a Puma 760 6 DOF robot. # The variable is specified by typing a "var' or a "VAR" in its # field. i.e. If the joint is revolute then it will be in the fourth # coulumn and if the joint is prismatic it will be in the third column # The notation is based on the "Introduction to Robotics, Mechanics and Controls" # book by John Craig. Units below are degrees and mm

# The word below should specify the format of the DH Parameters (Craig or Featherstone) Craig
# Alpha(i-1) a(i-1) d(i) theta(i)
0 0 0 var # link 0-1
-90 0 0 var # link 1-2
0 650 200 var # link 2-3
-90 0 690 var # link 3-4
90 0 0 var # link 4-5
-90 0 0 var # link 5-6

# Note: The tool point for this robot is at approximately [0, 0, 180] at the tool plate # expressed in the last joints DH frame
-----------------------------------------------------------------------------------------

Parameters:
err An OSCARError reference that holds the value of the error code that was generated when the constructor was called. If this error was not 'noError' you can call GetError() to get the details of the error code.
name Name to assign to the object. Default is " "
Exceptions:
dhParamsIllFormed dhParamsIllFormed Call GetError() for more information.
fileOpenError fileOpenError Call GetError() for more information.

OSCAR::IKPuma::IKPuma const DHData   dhData,
OSCARError   err = DUMMY_ERROR(noError),
const String   name = String("")
 

Constructor.

This is the constructor for an object of type IKPuma. Use this to construct an IKPuma object.

Parameters:
dhData An DHData object that contains the DH parameters for the Puma robot. This object should specify a 6 DOF robot in the standard puma geometry. The standard Puma DH parameters are listed below. You can only change the values of a(i-1) columns and the d(i) column.
err An OSCARError reference that holds the value of the error code that was generated when the constructor was called. If this error was not 'noError' you can call GetError() to get the details of the error code.
name Name to assign to the object. Default is " "
Exceptions:
dhParamsIllFormed dhParamsIllFormed Call GetError() for more information.

OSCAR::IKPuma::IKPuma const IKPuma &    rhs
 

Copy Constructor.

This is the Copy Constructor for an object of type IKPuma. Use this to construct an IKPuma object from an existing IKPuma object.

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

virtual OSCAR::IKPuma::~IKPuma   [inline, virtual]
 

Destructor.

This is the Destructor for an object of type IKPuma.


Member Function Documentation

void OSCAR::IKPuma::GetClosure bool &    leftShoulder,
bool &    elbowDown
 

Get the kinematic closure for the inverse solution.

This method is used to get the closure that has been set for the inverse position solution

Parameters:
leftShoulder A true indicates that the solution is set for a left shoulder solution while a false indicates that it is set for a right shoulder solution
elbowDown A true value indicates that the solution is set for a elbow down solution while a false indicates that it is set for an elbow up solution
See also:
SetClosure(bool leftShoulder, bool elbowDown)

bool OSCAR::IKPuma::GetJointPosition const HandPose   handPose,
JointVector   jointPositionSolution
[virtual]
 

Computes the closed-form inverse position solution for the last link (or tool point) of a robot. Note: Since this is closed-form it will ignore the active/inactive status on the joint vector.

Parameters:
handPose A 6 long vector that that specifies the end-effector position and orientation (as FixedXYZ angles) for which an inverse solution needs to be calculated.
jointPositionSolution A JointVector of size equal to DOF of the robot. On return, this vector will contain the the inverse position solution.
Returns:
True if successful. Otherwise False. Call GetError() to get detailed error information.
See also:
GetJointPosition(const Xform& handXform, Vector& jointPositionSolution)

Implements OSCAR::IKPosition.

bool OSCAR::IKPuma::GetJointPosition const Xform   handXform,
JointVector   jointPositionSolution
[virtual]
 

Computes the closed-form inverse position solution for the last link (or tool point) of a robot. Note: Since this is closed-form it will ignore the active/inactive status on the joint vector.

Parameters:
handXform A 4X4 transformation matrix that specifies the end-effector position and orientation for which an inverse solution needs to be calculated.
jointPositionSolution A JointVector of size equal to DOF of the robot. On return, this vector will contain the the inverse position solution.
Returns:
True if successful. Otherwise False. Call GetError() to get detailed error information.
See also:
GetJointPosition(const HandPose& handPose, Vector& jointPositionSolution)

Implements OSCAR::IKPosition.

IKPuma& OSCAR::IKPuma::operator= const IKPuma &    rhs
 

Assignment Operator.

This is the Assignment Operator for an object of type IKPuma.

Parameters:
rhs A IKPuma 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

void OSCAR::IKPuma::SetClosure bool    leftShoulder,
bool    elbowDown
 

Set the kinematics closure for the inverse solution.

This method is used to select whether you desire a left shoulder or right shoulder solution, or a elbow up or elbow down solution, or a wrist flip or wrist no flip solution

Parameters:
leftShoulder A true value will set the inverse position solution to generate a left shoulder solution. This also will switch the value of the elbow closure
elbowDown A true value will set the inverse position solution to generate an elbow down solution while a false value will generate an elbow up solution
See also:
GetClosure(bool& leftShoulder, bool& elbowDown)


Member Data Documentation

double OSCAR::IKPuma::a2 [protected]
 

double OSCAR::IKPuma::a3 [protected]
 

double OSCAR::IKPuma::d3 [protected]
 

double OSCAR::IKPuma::d4 [protected]
 

bool OSCAR::IKPuma::elbowDown [protected]
 

bool OSCAR::IKPuma::leftShoulder [protected]
 


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