Skip to content

Biped Walking Controller

This project presents an open-source Python implementation of the Linear Inverted Pendulum Model (LIPM) walking pattern generator based on preview control of the Zero-Moment Point (ZMP), following the formulation introduced by Kajita et al., “Biped Walking Pattern Generation by Using Preview Control of the Zero-Moment Point,” ICRA 2003.

The animation below shows the controller in action in a Pybullet simulation:

Overview

The objective is to reproduce and analyze the ZMP preview control pipeline:

  • Model the robot’s CoM using the 3D LIPM
  • Compute optimal CoM trajectories given a reference ZMP sequence using preview control
  • Generate corresponding foot trajectories
  • Apply inverse kinematics to produce consistent joint motions
  • Apply computed joint positions to the simulated robot in Pybullet

The different steps are represented by the figure below:

flowchart TD
    zmp_ref["ZMP reference generation"]
    zmp_preview["ZMP Preview Controller"] 
    foot["Foot trajectory generation"]
    foot["Foot trajectory generation"]
    inverse_kin["Inverse kinematics"]
    sim["Simulator"]
    zmp_ref -->|"ZMP trajectory"| zmp_preview -->|"CoM trajectory"| foot -->|"Foot trajectory"| inverse_kin -->|"Joints position"| sim

The implementation prioritizes simplicity and experimental reproducibility, making it suitable for education purpose. It relies on Pinocchio to handle the kinematics of the robot and PyBullet for physics simulation.