Skip to content

ancorasir/OverconstrainedLocomotion

Repository files navigation

Overconstrained Locomotion

Overview

This repo provides a model predictive controller (MPC) based on the single rigid body model in PyBullet for our quadruped with Overconstrained Robotic Limbs (ORLs). A complete kinematic and dynamic model of the ORLs is developed to reach better locomotion performances over complex terrains.

20251003-181555-2.mp4

In this simulation, a series of locomotion tasks across various challenging terrains are conducted to validate the proposed control method:

  • omidirectional locomotion: the quadruped successfully executed forward trotting, lateral trotting, and turning on the spots separately on flat ground.
  • gravel terrain: the quadruped is able to travers the gravel terrain at a sustained velocity of 0.5m/s, highlighting the controller's adaptibility to irregular ground conditions.
  • sloped/stairs terrain: the quadruped is able to estimate and adapt to slopes or stairs through real-time gait and posture adjustments.
  • push recovery: after being subjected to a lateral impulse of 140 N for 0.2 s at its CoM, the robot regained a stable stance within 2.0 s, verifying the system's stability.
omni
terrain

This simulation also evaluates the energy efficiency of the Overconstrained Robotic Limbs (ORLs) using the Cost of Transport (COT) metric. Comparative simulations demonstrate that the overconstrained design exhibits superior energy efficiency over a conventional planar 4-bar leg design, particularly during lateral trotting and at larger foothold distances.

The simulation results validate the efficacy and robustness of the proposed control framework. While logistical challenges prevented hardware validation on the original prototype, a next-generation hardware platform has been developed. This new robot successfully implements all three limb architectures (planar, overconstrained, and spherical) and serves as the testbed for our current research on learning-based control strategies. We will continue the validation of the MPC framework on this new platform and intend to release its design and code as open source in the future.

Instal and run simulation

Create a conda environment (highly recommended)

conda create -n ov_loco python=3.8
conda activate ov_loco # Or source activate ov_loco

Install pinocchio

Follow the installation guide provided in: https://stack-of-tasks.github.io/pinocchio/download.html Remember to source the bashrc file after setting the environment variables:

source ~/.bashrc

Install osqp-eigen

Use the following command to install the library as recommended in https://github.com/robotology/osqp-eigen

conda install -c conda-forge osqp-eigen

Built leg_kine_dyna_pybind

cd leg_kine_dyna_pybind
mkdir built # Delele built if it already exists
cd built
cmake ..
make

Build

cd convex_mpc_pybind
mkdir built # Delele built if it already exists
cd built
cmake ..
make

Install other required python libraries

pip install matplotlib pin scipy drake

Run simulation

python src/main_simulation.py

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors