BHKinematic Class Reference

#include <bhkinematic.h>

Inheritance diagram for BHKinematic:

Inheritance graph
[legend]
Collaboration diagram for BHKinematic:

Collaboration graph
[legend]

Public Member Functions

 BHKinematic ()
void forwardKinematics (const BHandKin::FINGER finger)
void forwardKinematics ()
TRSF_PTR getTrsf (const BHandKin::FINGER finger)
bool getTS (const BHandKin::FINGER finger)
void joint2Motor (int result[4], double joints[3], double spread)
 Computes the motor values for all Joints without considering TS-Activation.
void joint2Motor (int result[4], double joints[8])
 Computes the motor values for all Joints without considering TS-Activation.
void joint2MotorJoint1 (const BHandKin::FINGER finger, double &joint, int &motor, double &joint1)
 Computes the motor value for given joint value and the corresponding value for joint1*.
int joint2Spread (const double &joint)
 Compputes the Motor value for a given Spead joint value.
void joint2SpreadJoint1 (double &joint, int &motor, double &joint1)
 Computes the joint vlaues of the spread joint an the corresponding motor copunt value.
void motor2Joint (const int &finger, const int &motor, double &joint0, double &joint1)
void motor2Joint (double *result, int *motorValues)
void resetKinematic ()
void setTS (const BHandKin::FINGER finger, const bool flag=true)
void showJointValues ()
void showTrsf (const BHandKin::FINGER finger) const
void showTrsf () const
void updateJointValues (int *motorValues)
 Updates the joint values (the class internal values BHKinemtic::JointValues) form given motor values.
 ~BHKinematic ()

Static Public Attributes

Length constants for kinematic computation
Constants for Motor to Joint calculation
static const double FM2JNoTorque = 1.0/125.0
static const double FM2JTorque = 4.0/375.0
static const double SM2J = 2.0/35.0
Constants for finger joint to Motor value calculation
static const double J2FMNoTorque = 125.0
static const double J2FMTorque = 375.0/4.0
static const double J2SM = 35.0/2.0
Default values for Finger Joints .
Rotation Axis along Joint center

static const double JOINT0MAX_DEG = 140.0 + BHKinematic::JOINT0STDVALUE_DEG
static const double JOINT0MAX_RAD = 142.46 * DEGTORAD
static const double JOINT0STDVALUE_DEG = 2.46
static const double JOINT0STDVALUE_RAD = 2.46 * DEGTORAD
static const double JOINT1MAX_DEG = 48.0 + BHKinematic::JOINT1STDVALUE_DEG
static const double JOINT1MAX_RAD = BHKinematic::JOINT1MAX_DEG * DEGTORAD
static const double JOINT1STDVALUE_DEG = 45.0
static const double JOINT1STDVALUE_RAD = 45.0 * DEGTORAD
Default values of Fingers for Kinematic.
Roation center along finger tip

static const double JOINT1STDVALUE_DIFF_KIN_DEG = BHKinematic::JOINT1STDVALUE_KIN_DEG - BHKinematic::JOINT1STDVALUE_DEG
static const double JOINT1STDVALUE_DIFF_KIN_RAD = BHKinematic::JOINT1STDVALUE_DIFF_KIN_DEG * DEGTORAD
static const double JOINT1STDVALUE_KIN_DEG = 50.0
static const double JOINT1STDVALUE_KIN_RAD = BHKinematic::JOINT1STDVALUE_KIN_DEG * DEGTORAD

Protected Member Functions

Clipping functions for joint values
double clipJ0 (const double &value) const
double clipJ1 (const double &value) const

Protected Attributes

FingerTransforms FingerTrsf
BHandJoints JointValues

Detailed Description

Class for calcualtion of BarrettHand kinematics.
Author:
Tim Baier (tbaier@informatik.uni-hamburg.de)
Todo:
Make sure tht kinematic is right!

Add TorqueSwitch status to joint2motor methods

Inverse Kinematik must be implemented.

TorqueSwitch state must be considered.

Bug:
TorqueSwitch status not considered joint2motor methods

Kinematic does not handle TorqueSwicth activation properly.

Kinematic computes somtimes false motor values :-( .


Constructor & Destructor Documentation

BHKinematic::BHKinematic (  ) 

Default constructor

BHKinematic::~BHKinematic (  ) 

Default destructor


Member Function Documentation

double BHKinematic::clipJ0 ( const double &  value  )  const [inline, protected]

Clipping function for joint 0 of fingers

Parameters:
value Value to clip
Returns:
Clipped value

double BHKinematic::clipJ1 ( const double &  value  )  const [inline, protected]

Clipping function for joint 1 of fingers

Parameters:
value Value to clip
Returns:
Clipped value

void BHKinematic::forwardKinematics ( const BHandKin::FINGER  finger  ) 

Computes the forward kinematics for one finger BarrettHand

Parameters:
finger Finger for which the kintematic should be computed

void BHKinematic::forwardKinematics (  ) 

Computes the forward kinematics for BarrettHand base on current joint values

TRSF_PTR BHKinematic::getTrsf ( const BHandKin::FINGER  finger  )  [inline]

Retunrs TRSF_PTR for finger

Parameters:
finger Finger for the TRSF_PTR.

bool BHKinematic::getTS ( const BHandKin::FINGER  finger  )  [inline]

Returns the value of the TorqueSwicth falg for a finger

Parameters:
finger Finger
Returns:
Status of TroqueSwicth flag for finger.

void BHKinematic::joint2Motor ( int  result[4],
double  joints[3],
double  spread 
)

Computes the motor values for all Joints without considering TS-Activation.

Parameters:
result The Motor counts for the four motors. The order is F1,F2,F3, Spread
joints Input of joint values (Unit: deg). Order is : F1J1, F2J1, F3J1
spread Value of spread joint

void BHKinematic::joint2Motor ( int  result[4],
double  joints[8] 
)

Computes the motor values for all Joints without considering TS-Activation.

Parameters:
result The Motor counts for the four motors. The order is F1,F2,F3, Spread
joints Input of joint values (Unit: deg). Order is : F1J1, F1J2, F2J1, F2J2, F3J1, F3J2, Spread,-Spread

void BHKinematic::joint2MotorJoint1 ( const BHandKin::FINGER  finger,
double &  joint,
int &  motor,
double &  joint1 
)

Computes the motor value for given joint value and the corresponding value for joint1*.

Warning:
if TorqueSwicth has been activated the joint value is changed the the value of the TS activation point

int BHKinematic::joint2Spread ( const double &  joint  ) 

Compputes the Motor value for a given Spead joint value.

Parameters:
joint Joint value of Spread joint (unit: deg)
Returns:
Motor counts of Spread for angle

void BHKinematic::joint2SpreadJoint1 ( double &  joint,
int &  motor,
double &  joint1 
)

Computes the joint vlaues of the spread joint an the corresponding motor copunt value.

joint The joint value aof Spread (unit deg)

Parameters:
motor The return value for the motor counts
joint1 The opposite spread joint value

void BHKinematic::motor2Joint ( const int &  finger,
const int &  motor,
double &  joint0,
double &  joint1 
)

Computes the joint values for a finger from a given motor value

Parameters:
finger Number of Finger for which the joint values should be computed (from 1 to 4)
motor Current motor value.
joint0 Returned Joint value for joint 1 of finger.
joint1 Returned Joint value for joint 1 of finger.

void BHKinematic::motor2Joint ( double *  result,
int *  motorValues 
)

Computes the joint values for each finger based on the motor postion and TorqueSwitch status.

Parameters:
result Will contain joint angles for all 8 joints after computation. So input must be somthing like double result[8].
motorValues Array of 4 int's which contains the motor positions (in ticks)

void BHKinematic::resetKinematic (  ) 

restes kinmeatic to std joint values and deactivates TS. Spread is set to 0

void BHKinematic::setTS ( const BHandKin::FINGER  finger,
const bool  flag = true 
) [inline]

Sets the TorqueSwitch Flag for a finger.

Parameters:
finger Finger for which the TorqueSwitch is set.
flag TorqueSwicth enabled or not

void BHKinematic::showJointValues (  ) 

Prints all Joint values for the hand on terminal

void BHKinematic::showTrsf ( const BHandKin::FINGER  finger  )  const

Prints the Transformations of the finger on console.

Parameters:
finger Finger which transformation should be printed.

void BHKinematic::showTrsf (  )  const

Prints the Transformations of all fingers on console.

void BHKinematic::updateJointValues ( int *  motorValues  ) 

Updates the joint values (the class internal values BHKinemtic::JointValues) form given motor values.

TS-Activation is not considered.

Parameters:
motorValues The motor values.


Field Documentation

FingerTransforms BHKinematic::FingerTrsf [protected]

Container for Transformation of all fingers

const double BHKinematic::FM2JNoTorque = 1.0/125.0 [static]

Factor to compute JointValues for fingers from Motor counts without TorqueSwicth being activated

const double BHKinematic::FM2JTorque = 4.0/375.0 [static]

Factor to compute JointValues for fingers from Motor counts with TorqueSwicth being activated

const double BHKinematic::J2FMNoTorque = 125.0 [static]

Factor to compute Motor counts for fingers from Finger joint vlaues counts without TorqueSwicth being activated

const double BHKinematic::J2FMTorque = 375.0/4.0 [static]

Factor to compute Motor counts for fingers from Finger joint vlaues counts with TorqueSwicth being activated

const double BHKinematic::J2SM = 35.0/2.0 [static]

Factor to compute Spread Motor counts form JointValues

const double BHKinematic::JOINT0MAX_DEG = 140.0 + BHKinematic::JOINT0STDVALUE_DEG [static]

Max value for joint 1 of each finger. Unit : RAD

const double BHKinematic::JOINT0MAX_RAD = 142.46 * DEGTORAD [static]

Max value for joint 0 of each finger. Unit : RAD

const double BHKinematic::JOINT0STDVALUE_DEG = 2.46 [static]

Default (min) value for joint 0 of each finger. Unit : DEG

const double BHKinematic::JOINT0STDVALUE_RAD = 2.46 * DEGTORAD [static]

Default (min) value for joint 0 of each finger. Unit : RAD

const double BHKinematic::JOINT1MAX_DEG = 48.0 + BHKinematic::JOINT1STDVALUE_DEG [static]

Max value for joint 1 of each finger. Unit : DEG

const double BHKinematic::JOINT1MAX_RAD = BHKinematic::JOINT1MAX_DEG * DEGTORAD [static]

Max value for joint 1 of each finger. Unit : RAD

const double BHKinematic::JOINT1STDVALUE_DEG = 45.0 [static]

Default (min) value for joint 1 of each finger. Unit : DEG

const double BHKinematic::JOINT1STDVALUE_DIFF_KIN_DEG = BHKinematic::JOINT1STDVALUE_KIN_DEG - BHKinematic::JOINT1STDVALUE_DEG [static]

Difference between Joint 1 default value and Kinematic value. Unit : DEG.

const double BHKinematic::JOINT1STDVALUE_DIFF_KIN_RAD = BHKinematic::JOINT1STDVALUE_DIFF_KIN_DEG * DEGTORAD [static]

Difference between Joint 1 default value and Kinematic value. Unit : RAD.

const double BHKinematic::JOINT1STDVALUE_KIN_DEG = 50.0 [static]

Default (min) value for joint 1 of each finger for Kinematic computation. Unit : DEG

const double BHKinematic::JOINT1STDVALUE_KIN_RAD = BHKinematic::JOINT1STDVALUE_KIN_DEG * DEGTORAD [static]

Default (min) value for joint 1 of each finger for Kinematic computation. Unit : RAD

const double BHKinematic::JOINT1STDVALUE_RAD = 45.0 * DEGTORAD [static]

Default (min) value for joint 1 of each finger. Unit : RAD

BHandJoints BHKinematic::JointValues [protected]

Conatiner for Values of all joints

const double BHKinematic::SM2J = 2.0/35.0 [static]

Factor to compute JointValues for spread from Motor counts


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

tams Tim Baier bhandlib v0.25
Generated Wed Aug 16 14:59:50 2006 by doxygen 1.4.7