Home

Awesome

Contact Wrench Cones for Rectangular Support Areas

Source code for http://arxiv.org/abs/1501.04719

Abstract

Humanoid robots locomote by making and breaking contacts with their environment. A crucial problem is therefore to find precise criteria for a given contact to remain stable or to break. For rigid surface contacts, the most general criterion is the Contact Wrench Condition (CWC). To check whether a motion satisfies the CWC, existing approaches take into account a large number of individual contact forces (for instance, one at each vertex of the support polygon), which is computationally costly and prevents the use of efficient inverse-dynamics methods. Here we argue that the CWC can be explicitly computed without reference to individual contact forces, and give closed-form formulae in the case of rectangular surfaces -- which is of practical importance. It turns out that these formulae simply and naturally express three conditions: (i) Coulomb friction on the resultant force, (ii) ZMP inside the support area, and (iii) bounds on the yaw torque. Conditions (i) and (ii) are already known, but condition (iii) is, to the best of our knowledge, novel. It is also of particular interest for biped locomotion, where undesired foot yaw rotations are a known issue. We also show that our formulae yield simpler and faster computations than existing approaches for humanoid motions in single support, and demonstrate their consistency in the OpenHRP simulator.

<img src="https://raw.githubusercontent.com/stephane-caron/icra-2015/master/.illustration.png" height="250" />

Authors: Stéphane Caron, Quang-Cuong Pham and Yoshihiko Nakamura

Requirements

For OpenRAVE, the code has been tested with commit f68553cb7a4532e87f14cf9db20b2becedcda624 in branch latest_stable. You may need to fix the Collision report issue.

You will also need the model.dae COLLADA model for HRP4 (md5sum dcea527e4fb2e7abae64a27a017102e4 for our version), as well as the model.py helper scripts in the library folders. Unfortunately it is unclear whether we can release these files here due to copyright problems.

Usage

There are two scripts in the repository. Most of the code is organized in the dmotions module, which is an early version of pymanoid.

generate_motion.py

Script generating the complete motion (including retiming) and writing it as POS files into openhrp/motions/. These files can then be executed in OpenHRP.

check_polyhedron.py

Code used to double-check the validity of the analytical wrench cone by random sampling. Writes down a success rate to the standard output, and fires up a 3D plot displaying valid (green) and erroneous (red) points. See the paper for details.