• Stars
    star
    229
  • Rank 174,666 (Top 4 %)
  • Language
    C++
  • License
    BSD 2-Clause "Sim...
  • Created about 6 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Walking controller for humanoid robots based on inverted pendulum tracking

LIPM Walking Controller

Trying the controller | Logs | Dependencies | Usage | Known bugs | Thanks

License Documentation Status

Stair climbing by the HRP-4 humanoid robot

Source code of the walking and stair climbing controller used in the experiments of Stair Climbing Stabilization of the HRP-4 Humanoid Robot using Whole-body Admittance Control, as well as in an industrial demonstrator at the Airbus Saint-Nazaire factory.

This repository is meant for learning and sharing of experimental knowledge. It keeps walking components in the same place, and in their state from 2019. Ask any question you may have in the discussions forum, after checking of course that they are not already answered in the frequently asked questions. If you are looking for follow-up developments, the fork at jrl-umi3218/lipm_walking_controller can follow joystick commands while walking on horizontal floors.

Trying the controller

You can try a snapshot of the controller directly by running its Docker image:

xhost +local:docker
docker run -it --rm --user ayumi -e DISPLAY=${DISPLAY} -v /tmp/.X11-unix:/tmp/.X11-unix:rw \
    stephanecaron/lipm_walking_controller \
    lipm_walking --floor

This image runs the exact controller we used in 2019 during experiments and industrial demonstrations. Replace --floor with --staircase for stair climbing.

Checking the logs

You can check a log file from HRP-4 climbing stairs during the industrial demonstrator by running:

python ./logs/display_logs.py

Check out the pre-defined plots from the "User plots" menu. The ones we use the most are Tracking DCM-ZMP X/Y, Foot force both and Swing foot Z.

Dependencies

The controller has been tested on Ubuntu 14.04 with ROS Indigo and Ubuntu 16.04 with ROS Kinetic. It builds on the shoulders of the following software:

Instructions to build a more recent version of the controller from source are available from the jrl-umi3218 fork.

Usage

The lipm_walking script in the Docker images starts two processes. First, it launches RViz for visualization and interaction with the controller:

roslaunch lipm_walking_controller display.launch robot:=jvrc1

Second, it starts the controller itself in a Choreonoid simulation:

cd /usr/local/share/hrpsys/samples/JVRC1
choreonoid --start-simulation sim_mc.cnoid

We end up with three windows: one for RViz (left), one for Choreonoid (top right) and one for the terminal (bottom right) where the controller logs information and debug messages.

Choreonoid and RViz GUI of the controller

See the Graphical user interface page of the wiki for further instructions on how to interact with the controller in RViz.

Known bugs

This repository is an archive of the code as it ran in 2019, bugs included. Here is a non-exhaustive list of the big ones that have been found since then:

  • Swing foot velocities and accelerations computed in incorrect frames #29
  • Missing transformation in foot force difference control #72
  • Missing contact reference velocity update #37
  • Overwritten swing foot task velocities #41

Head over to jrl-umi3218/lipm_walking_controller or mehdi-benallegue/lipm_walking_controller for follow-up developments.

Thanks

Thanks to:

  • @gergondet for developing and helping with mc_rtc
  • @arntanguy for developing and helping with mc_rtc
  • @Saeed-Mansouri for bug hunting and discussion around the project - Best Debugger Award ๐Ÿ…
  • @mmurooka for bug hunting and discussion around the project

More Repositories

1

pink

Python inverse kinematics based on Pinocchio
Python
236
star
2

pymanoid

Humanoid robotics prototyping environment based on OpenRAVE
Python
179
star
3

pypoman

Python module for polyhedral geometry
Python
41
star
4

qpmpc

Model predictive control in Python based on quadratic programming
Python
31
star
5

lpsolvers

Linear programming solvers in Python with a unified API
Python
22
star
6

smart-grid-scheduling

Energy-consumption scheduling algorithms for smart electrical grids
Python
19
star
7

analytical-wrench-cone

Analytical formula of the wrench friction cone for surface contacts
Python
16
star
8

fip-walkgen

3D walking pattern generation by NMPC of the floating-base pendulum model
Python
15
star
9

loop-rate-limiters

Simple loop rate limiters in Python
Python
13
star
10

multi-contact-zmp

ZMP support areas for multi-contact stability under frictional contacts
Python
10
star
11

palimpsest

Fast serializable C++ dictionaries
C++
10
star
12

capture-walkgen

Capturability-based walking pattern generation over uneven terrains
Python
9
star
13

capture_walking_controller

Capturability-based controller for walking with variable-height
C++
8
star
14

pyfme

Symbolic (analytical) polyhedron projection by Fourier-Motzkin elimination using SymPy
Python
8
star
15

meshcat-shapes

Useful shapes to decorate MeshCat scenes
Python
8
star
16

topp-mpc

Model Predictive Control with automatic timings based on Time-Optimal Path Parameterization (TOPP)
Python
7
star
17

motion-planning

Course on motion planning
TeX
7
star
18

vhip_walking_controller

Walking controller based on variable-height inverted pendulum tracking
C++
7
star
19

vhip-balance

Balancing a variable-height inverted pendulum
Python
5
star
20

mpacklog

Log dictionaries to MessagePack files in C++ and Python
Python
3
star
21

openrave_models

Robot models for OpenRAVE
Python
3
star
22

aiorate

Loop frequency regulation for asyncio
Python
3
star
23

bazel_pinocchio

Bazel repository rules to build Pinocchio targets
Python
3
star
24

mc-lmpc-walkgen

Multi-contact walking pattern generation over rough terrains by linearized MPC
Python
3
star
25

foxplot

Plot time-series data from line-delimited JSON.
JavaScript
2
star
26

avp-rrt

Kinodynamic planning in the configuration space by Admissible Velocity Propagation
Python
2
star
27

quasistatic-stair-climbing

Quasi-static stair climbing with the HRP-4 humanoid robot
Python
1
star
28

manipulation_markers

ROS package used in the GUI of Team Hydra while preparing for the DARPA Robotics Challenge
C++
1
star