This python library contains the code used for the motion planning formulation proposed in this preprint. In here you can also find the code used to generate the figures and plots of the manuscript.
Jet-leg performs common operations over convex polyhedra in higher dimensions in order to assess the problem of stability and motion feasibility of legged robots.
- compute the Support region of legged robots as in Bretl. et al. 2008;
- compute the Feasible region of legged robots as in Orsolino. et al. 2019;
- compute force polytopes of legged robots given their URDF;
- compare different leg designs and understand their consequences on the robot's balancing capabilities;
- test various formulations of linear, convex or nonlinear trajectory optimization problems;
APT dependencies:
- CVXOPT
- GLPK
- Cython
ROS dependencies:
sudo apt-get install ros-kinetic-graph-msgs
Python dependencies:
The above dependencies can be installed with the following commands:
sudo apt-get install cython libglpk-dev python python-dev python-pip python-scipy
CVXOPT_BUILD_GLPK=1 pip install cvxopt --user
pip install pycddlib --user
pip install pypoman
You can remove all --user
arguments to install these Python modules system-wide.
- Ipopt and its Python interface Pypi for the solution of large-scale nonlinear optimization problems
- ffmpeg for the generation of Matplotlib animations
sudo apt-get install ffmpeg
- unittest for testing of dependencies installation and for development
After completing the installation navigate to the examples folder:
- single_iterative_projection_example.py can be used to see how to set up an iterative projection problem in order to compute the friction/actuation/feasible region;
- check_stability_lp_example.py can be used to quickly check whether the given robot configuration is statically stable or not (without explicitly computing the feasible region);
- plotIPstatistics.py can be used to generate some statistics about the computation time of the IP algorithm for random feet positions (see Fig. 6 of the preprint);
- plotInstantaneousActuationRegionVariableMass.py can be used to generate a plot that shows how the feasible regions can changes depending on the gravitational force acting on the robot's center of mass (see Fig. 8 of the preprint)
- if CVXOPT is not found even after trying the pip-installation, we then suggest to try install the version 1.1.4 of CVXOPT using Synaptic or to clone and install it manually after building.
- IMPORTANTE NOTE: delete every previous installation of cvxopt that is in the system using locate cvxopt (after sudo updatedb)
- The pypoman and pymanoid libraries developed by Stéphane Caron
- Komei Fukuda's Frequently Asked Questions in Polyhedral Computation
- The Polyhedron class in Sage
- The StabiliPy package provides a more general recursive projection method