pymanoid
Humanoid robotics controller prototyping environment based on OpenRAVE.
Features
Whole-body inverse kinematics
- Check out π£ Pink for a next-generation implementation of this IK as a library
π - Based on a weight-prioritized multi-task formulation of differential IK
- Jacobians and Hessians for center of mass (CoM) and angular momentum tasks
Contact stability
- Wrench friction cones for general multi-contact motions
- Multi-contact ZMP support areas for locomotion
- CoM acceleration cones for locomotion (conservative)
- Robust CoM static-equilibrium polytope for posture generation (conservative)
Model predictive control
- Linear model predictive control (LMPC) for locomotion
- Nonlinear model predictive control (NMPC) for locomotion
- Interfaces to polyhedral geometry and numerical optimization (LP, QP and NLP) solvers
Use cases
- Walking pattern generation over uneven terrains based on capturability of the variable-height inverted pendulum model
- Nonlinear model predictive control using a direct transcription of centroidal dynamics
- Linearized model predictive control using a conservative linearization of CoM acceleration cones
- Multi-contact ZMP support areas for locomotion in multi-contact scenarios (including hand contacts)
- Humanoid stair climbing demonstrated on the HRP-4 robot
Getting started
- Installation instructions
- Documentation (PDF)
- FAQ
- Examples
- Tutorial: Prototyping a walking pattern generator
Installation
The following instructions were verified on Ubuntu 14.04:
- Install OpenRAVE: here are instructions for Ubuntu 14.04 as well as for Ubuntu 16.04
- Install Python dependencies:
sudo apt-get install cython libglpk-dev python python-dev python-pip python-scipy python-simplejson
- Install the LP solver:
CVXOPT_BUILD_GLPK=1 pip install cvxopt --user
- Install the QP solver:
pip install quadprog --user
- For polyhedral computations (optional):
pip install pycddlib --user
Finally, clone this repository and run the setup script:
git clone --recursive https://github.com/stephane-caron/pymanoid.git
cd pymanoid
python setup.py build
python setup.py install --user
Optional
For nonlinear numerical optimization, you will need to install CasADi, preferably from source with the MA27 linear solver.
Citing pymanoid
I developed pymanoid during my PhD studies and share it in the hope it can be useful to others. If it helped you in your research, please use the following BibTeX template to cite it in scientific discourse:
@phdthesis{caron2016thesis,
title = {Computational Foundation for Planner-in-the-Loop Multi-Contact Whole-Body Control of Humanoid Robots},
author = {Caron, St{\'e}phane},
year = {2016},
month = jan,
school = {The University of Tokyo},
url = {https://scaron.info/papers/thesis.pdf},
doi = {10.15083/00074003},
}