McGripGrasp Class Reference

The McGrip also comes with a specialized Grasp class to perform some optimizations. More...

#include <mcGrip.h>

Inheritance diagram for McGripGrasp:
Inheritance graph
[legend]

List of all members.

Public Member Functions

int computeQuasistaticForces (double tendonForce)
 Computes joint torques for this hand, then calls the super for the usual quasistatic equilibrium.
 McGripGrasp (Hand *h)
 Also check that the hand is indeed a McGrip.
int tendonAndHandOptimization (Matrix *parameters, double &objValRet)
 Optimizes contact forces tendon routes and construction parameters for one particular grasp.

Detailed Description

The McGrip also comes with a specialized Grasp class to perform some optimizations.

Definition at line 107 of file mcGrip.h.


Constructor & Destructor Documentation

McGripGrasp::McGripGrasp ( Hand h  )  [inline]

Also check that the hand is indeed a McGrip.

Definition at line 112 of file mcGrip.h.


Member Function Documentation

int McGripGrasp::computeQuasistaticForces ( double  tendonForce  ) 

Computes joint torques for this hand, then calls the super for the usual quasistatic equilibrium.

Definition at line 320 of file mcGrip.cpp.

int McGripGrasp::tendonAndHandOptimization ( Matrix parameters,
double &  objValRet 
)

Optimizes contact forces tendon routes and construction parameters for one particular grasp.

Optimizes contact forces AND tendon route (defined by the insertion point "arms" l_i) and some construction parameters (joint radius r and link length l) to get 0 resultant wrench on object, with all contact forces legally inside their friction cones.

The optimization objective is the equilibrium criterion, where joint torques should be balanced by contact forces. However, joint torques are expressed as a function of tendon force (which is assumed known since there is just one tendon) and tendon and hand parameters.

JTD * beta = tau = f * (B * p + a) p = [l r d]

To get rid of the free term, the relationship becomes:

[JTD -B -I] * [beta p a] = 0

with the variables in a fixed to their known values.

We also have to constrain the sum contact amplitudes so at least some force is applied to the object. If we don't, it might find solutions where tendon forces just cancel out in this particular configuration. This is not ideal, as the value that we constrain it to is somewhat arbitrary. However, it should be compensated since the equilibrium constraint is not hard, but rather the optimization objective.

Alternatively, we can multiply the B and a matrices by the desired tendon force which does the same thing a lot more elegantly.

Here, the constraints themselves are nothing but the force-closure criterion. Therefore, they should be satisfiable anytime the grasp has f-c. The addition is the equilibrium, which is hand specific, but is the objective rather than a constraint.

The overall optimization problem has the form:

minimize [beta p a] [JTD -B -I]^T [JTD -B -I] [beta p a]^t (joint equilibrium) constrained by: [G 0 0] [beta p a]^T = |0| (0 resultant wrench) [S 0 0] |1| (some force applied on object) [F 0 0] [beta p a]^T <= 0 (all forces inside cone) beta >= 0 (legal contact forces) p_min <= p <= p_max (limits on the parameters) a = a_known (free term is known)

Return results: we report that the problem is unfeasible if either the optimization itself if unfeasible OR the objective is not 0. However, if the optimization is successful but with non-0 objective, we accumulate and display contact forces as usual, and return the optimized parameters. Codes: 0 is success; >0 means problem unfeasible; <0 means error in computation

Definition at line 409 of file mcGrip.cpp.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines


graspit
Author(s):
autogenerated on Wed Jan 25 11:00:22 2012