Model predictive controller used in the real-robot experiments of PROXQP: an Efficient and Versatile Quadratic Programming Solver for Real-Time Robotics Applications and Beyond.
This is an archival repository: the code here matches the one used in the experiments of the paper. Check out the MPC balancer for future developments, bug fixes and support.
We recommend using Anaconda to install the agent and all dependencies in a clean environment:
conda create -f environment.yaml
conda activate proxqp_balancer
Alternatively, you should be able to install the packages listed in the environment file from PyPI.
HPIPM is not packaged, but instructions to install from source are given in hpipm:
- Clone BLASFEO:
git clone https://github.com/giaf/blasfeo.git
- From the BLASFEO directory, run:
make shared_library -j 4
- Check again that you are in your conda environment, then run:
cp -f ./lib/libblasfeo.so ${CONDA_PREFIX}/lib/
cp -f ./include/*.h ${CONDA_PREFIX}/include/
- Clone HPIPM:
git clone https://github.com/giaf/hpipm.git
- From the HPIPM directory, run:
make shared_library -j 4
- Check again that you are in your conda environment, then run:
cp -f libhpipm.so ${CONDA_PREFIX}/lib/
cp -f ./include/*.h ${CONDA_PREFIX}/include/
- Go to
hpipm/interfaces/python/hpipm_python
and runpip install .
- Try to import the package in Python:
import hpipm_python.common as hpipm
To run in simulation, clone the upkie repository and run:
./start_simulation.sh
Activate your conda environment and run the agent by:
python proxqp_balancer.py
If you use ProxQP or code from this repository in your works, please cite it as follows:
@unpublished{bambade2023proxqp,
title = {{PROXQP: an Efficient and Versatile Quadratic Programming Solver for Real-Time Robotics Applications and Beyond}},
author = {Bambade, Antoine and Schramm, Fabian and Kazdadi, Sarah El and Caron, St{\'e}phane and Taylor, Adrien and Carpentier, Justin},
url = {https://inria.hal.science/hal-04198663},
note = {working paper or preprint},
year = {2023},
month = Sep,
}
- MPC balancer: where future development on this code will happen.