A hand with tendon information. More...
#include <humanHand.h>
Public Member Functions | |
int | contactEquilibrium (std::list< Contact * > contacts, const std::set< size_t > &activeTendons, std::vector< double > &activeTendonForces, double &unbalanced_magnitude) |
int | contactForcesFromTendonForces (std::list< Contact * > contacts, std::vector< double > &contactForces, const std::set< size_t > &activeTendons, const std::vector< double > &activeTendonForces) |
int | contactTorques (std::list< Contact * > contacts, std::vector< double > &jointTorques) |
void | deselectTendon (int i) |
virtual void | DOFController (double timeStep) |
Applies tendon forces rather than calling the PD Controller. | |
int | getNumTendons () |
int | getNumTendonWrappers () |
Tendon * | getTendon (int i) |
TendonWrapper * | getTendonWrapper (int i) |
HumanHand (World *, const char *) | |
bool | insPointInsideWrapper () |
Returns true if any of the tendons has a permanent insertion point inside a wrapper. | |
virtual int | loadFromXml (const TiXmlElement *root, QString rootPath) |
double | minInsPointDistance () |
void | removeTemporaryInsertionPoints () |
Removes temporary insertion points for all tendons. | |
void | selectTendon (int i) |
void | setRestPosition () |
int | tendonEquilibrium (const std::set< size_t > &activeTendons, const std::set< size_t > &passiveTendons, bool compute_tendon_forces, std::vector< double > &activeTendonForces, std::vector< double > &jointResiduals, double &unbalanced_magnitude, bool useJointSprings=true) |
Computes if tendon forces are self-balanced around all joints of the hand. | |
void | updateTendonGeometry () |
virtual | ~HumanHand () |
Protected Member Functions | |
void | applyTendonForces () |
Applies dynamic tendon forces, to be called during an interation of the dynamic engine. | |
Protected Attributes | |
std::vector< Tendon * > | mTendonVec |
std::vector< TendonWrapper * > | mTendonWrapperVec |
A hand with tendon information.
Currently, the only thing that a human hand has different from a robotic hand is a list of tendons. It will load these tendons from the .cfg file and display them, and the GUI can be used to visualize the tendon geometry, excursion, etc. In the future, the human hand might gain more features.
Definition at line 374 of file humanHand.h.
HumanHand::HumanHand | ( | World * | w, | |
const char * | name | |||
) |
Definition at line 1091 of file humanHand.cpp.
virtual HumanHand::~HumanHand | ( | ) | [inline, virtual] |
Definition at line 386 of file humanHand.h.
void HumanHand::applyTendonForces | ( | ) | [protected] |
Applies dynamic tendon forces, to be called during an interation of the dynamic engine.
Definition at line 1149 of file humanHand.cpp.
int HumanHand::contactEquilibrium | ( | std::list< Contact * > | contacts, | |
const std::set< size_t > & | activeTendons, | |||
std::vector< double > & | activeTendonForces, | |||
double & | unbalanced_magnitude | |||
) |
Definition at line 1350 of file humanHand.cpp.
int HumanHand::contactForcesFromTendonForces | ( | std::list< Contact * > | contacts, | |
std::vector< double > & | contactForces, | |||
const std::set< size_t > & | activeTendons, | |||
const std::vector< double > & | activeTendonForces | |||
) |
Definition at line 1459 of file humanHand.cpp.
int HumanHand::contactTorques | ( | std::list< Contact * > | contacts, | |
std::vector< double > & | jointTorques | |||
) |
Returns the joint torques created by the given contacts applying 1N of force along their normals. Does not care about tendons.
Definition at line 1310 of file humanHand.cpp.
void HumanHand::deselectTendon | ( | int | i | ) | [inline] |
Definition at line 402 of file humanHand.h.
void HumanHand::DOFController | ( | double | timeStep | ) | [virtual] |
Applies tendon forces rather than calling the PD Controller.
Applies tendon forces; for now both active and passive.
Reimplemented from Robot.
Definition at line 1157 of file humanHand.cpp.
int HumanHand::getNumTendons | ( | ) | [inline] |
Definition at line 392 of file humanHand.h.
int HumanHand::getNumTendonWrappers | ( | ) | [inline] |
Definition at line 394 of file humanHand.h.
Tendon* HumanHand::getTendon | ( | int | i | ) | [inline] |
Definition at line 396 of file humanHand.h.
TendonWrapper* HumanHand::getTendonWrapper | ( | int | i | ) | [inline] |
Definition at line 398 of file humanHand.h.
bool HumanHand::insPointInsideWrapper | ( | ) |
Returns true if any of the tendons has a permanent insertion point inside a wrapper.
Definition at line 1579 of file humanHand.cpp.
int HumanHand::loadFromXml | ( | const TiXmlElement * | root, | |
QString | rootPath | |||
) | [virtual] |
First calls the super to load the hand like a regular one (all kinematic chains, links etc). Then loads tendon information from the same file.
Reimplemented from Robot.
Reimplemented in McGrip.
Definition at line 1099 of file humanHand.cpp.
double HumanHand::minInsPointDistance | ( | ) | [inline] |
Returns the minimum distance between consecutive permanent insertion points for all tendons Does not look at distances accross tendons
Definition at line 472 of file humanHand.h.
void HumanHand::removeTemporaryInsertionPoints | ( | ) | [inline] |
Removes temporary insertion points for all tendons.
Definition at line 462 of file humanHand.h.
void HumanHand::selectTendon | ( | int | i | ) | [inline] |
Definition at line 400 of file humanHand.h.
void HumanHand::setRestPosition | ( | ) | [inline] |
Sets the rest position of all tendons to their default values, or, if they don't have one, to their current value.
Definition at line 438 of file humanHand.h.
int HumanHand::tendonEquilibrium | ( | const std::set< size_t > & | activeTendons, | |
const std::set< size_t > & | passiveTendons, | |||
bool | compute_tendon_forces, | |||
std::vector< double > & | activeTendonForces, | |||
std::vector< double > & | jointResiduals, | |||
double & | unbalanced_magnitude, | |||
bool | useJointSprings = true | |||
) |
Computes if tendon forces are self-balanced around all joints of the hand.
Tries to find force values for all the tendons in the active set so that the joint torques resulting from passive forces on the tendons in the passive set are minimized.
Definition at line 1179 of file humanHand.cpp.
void HumanHand::updateTendonGeometry | ( | ) |
Definition at line 1142 of file humanHand.cpp.
std::vector<Tendon *> HumanHand::mTendonVec [protected] |
Definition at line 377 of file humanHand.h.
std::vector<TendonWrapper *> HumanHand::mTendonWrapperVec [protected] |
Definition at line 379 of file humanHand.h.