Leveraging Cone Double Description for Multi-contact Stability of Humanoids with Applications to Statics and Dynamics

Abstract

We build on previous works advocating the use of the Gravito-Inertial Wrench
Cone (GIWC) as a general contact stability criterion (a "ZMP for non-coplanar
contacts"). We show how to compute this wrench cone from the friction cones of
contact forces by using an intermediate representation, the surface contact
wrench cone, which is the minimal representation of contact stability for each
surface contact. The observation that the GIWC needs to be computed only once
per stance leads to particularly efficient algorithms, as we illustrate in two
important problems for humanoids : "testing robust static equilibrium" and
"time-optimal path parameterization". We show, through theoretical analysis and
in physical simulations, that our method is more general and/or outperforms
existing ones.

According to Figure 2, you use the double-description method to compute the
span matrix\(V_{surf}\)at each contact. Is this necessary?

It is not, as we later found out: local span matrices are straightforward
to compute, as detailed for instance in the introduction of this paper. The only point where the double description
remains necessary so far is for computing the gravito-inertial face matrix
\(U_{stance}.\)

What is the link between the matrix\(U_{stance}\)in this paper and
the matrices\(A_O\)or\(A_G\)used in your 3D-COM pattern
generator?

In this paper, the gravito-inertial wrench coordinates \(w_{GI} =
(f_{GI}, \tau_{GI})\) are taken at the origin \(O\) of the world frame.
Using proper notations, we should have written \(w^{gi}_O\) to
acknowledge this reference point. (We apologize for the non-standard
notations.) Our later works uses the
net contact wrench, i.e. the sum of all contact wrenches applied to the
robot, which yields the opposite of the gravito-inertial one:
\(w^{c}_O = -w^{gi}_O.\) Therefore, the face matrices are opposed as
well: \(U_{stance} = -A_O.\)

Given an\(n \times m\)matrix\(V,\)is it the case that its
dual (face or H-representation) matrix\(U = V^F\)has shape\(m
\times n?\)

It is not always the case, as you can see in Table I of the paper. In
single support, redundant inequalities simplify and the \(6 \times 16\)
span matrix of the wrench cone has a \(16 \times 6\) face dual.
However, in double-support the dual of the \(6 \times 32\) span matrix
typically has more than 100 rows.

The cdd library gives me the error "Numerical inconsistency is found. Use the
GMP exact arithmetic." What can I do?

It may happen that your problem is "doable" (i.e. numerical instabilities
are the exception, not the rule) but you ended up hitting some
near-singular configuration. In such cases, a simple hack is to perturb the
input (contact locations, or coordinates where the CWC is taken) by some
epsilon.

Another cause of numerical instabilities are vectors that are "almost"
rational, for instance with coordinates such as 0.4 + 1e-12. Rounding
up coordinates to a sound number of decimals can filter out those.

If none of the above apply, you can try with rational rather than floating
point numbers (in which case I prefer to use PPL rather than cdd).

What about calling the Canonicalize() function in cdd to remove redundant
rays from the input V-description?

In my experience this extra step only make matters worse (with regards to
numerical-inconsistency errors), so I would advise against doing it. Also,
note that, even if your input V-description is irreducible, cdd may output
you a non-minimal H-description.

Numerical instabilities seem to happen more often in stances with more
contacts. Why?

Unfortunately I have only an intuition here: making more contacts implies a
resultant polyhedron with more faces, i.e. with more rays in the
V-description and more hyperplanes in the H-one. This increases the risk of
"tricky" faces (of very small area) in the output polyhedron, especially if
some of your input rays are nearly aligned. My guess is that these make the
double-description fail when it tries to cut (c.f. Fukuda's paper on the
algorithm) by an "almost meaningless" hyperplane.