This fork implements the concepts presented in the research paper "Dynamic Locomotion in the MIT Cheetah 3 Through Convex Model-Predictive Control" within the Quad-SDK framework. This project was developed as part of the Group Project in the Master's program in Advanced Robotics at Centrale Nantes.
- Implementation of the paper's convex MPC approach for dynamic locomotion control of the MIT Cheetah 3 robot.
- Integration of the control algorithm into the Quad-SDK environment.
The paper is on the following link Dynamic Locomotion in the MIT Cheetah 3 Through Convex Model-Predictive Control.
Refer to the Quad-SDK Wiki for installation, dependency, and unit testing information. You need to build from the noetic branch of Quad-SDK and it requires ROS Noetic on Ubuntu 20.04. All other dependencies are installed with the included setup script.
To run the convex MPC, you need to install the OSQP and OSQP-Eigen solvers. We recommend building from source for the most reliable installation.
- Instructions: Follow the official guide: https://osqp.org/docs/get_started/sources.htm
- CMake Issue: If you encounter problems with the CMake version, do the following:
- Download the latest bash script from the CMake website: https://cmake.org/download/
- Copy it to
/opt/
- Make the script executable:
chmod +x /opt/cmake-3.*your_version*.sh
- Run:
sudo bash /opt/cmake-3.*your_version*.sh
(You can change the installation directory to/opt/
if you prefer) - Create a symbolic link:
sudo ln -s /opt/cmake-3.*your_version*/bin/* /usr/local/bin
- Verify the installation:
cmake --version
- Additional Note: If you want to install OSQP in
/usr/local
, run the following beforemake
:cmake -DCMAKE_INSTALL_PREFIX=/usr/local ..
- Instructions: Follow the guide on GitHub: https://github.com/robotology/osqp-eigen
- Additional Commands: If you want to install in
/usr/local
, run:cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr/local/ ../
export OsqpEigen_DIR=/usr/local/
(Add this to your.bashrc
file)export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
(Add this to your.bashrc
file)
Important: Make sure to adjust file paths and version numbers in commands as needed for your specific setup.
Launch the simulation with:
roslaunch quad_utils quad_gazebo.launch
Stand the robot with:
rostopic pub /robot_1/control/mode std_msgs/UInt8 "data: 1"
Run the stack with twist input:
roslaunch quad_utils quad_plan.launch reference:=twist logging:=true
rosrun teleop_twist_keyboard teleop_twist_keyboard.py cmd_vel:=/robot_1/cmd_vel
Run the stack with global planner:
roslaunch quad_utils quad_plan.launch reference:=gbpl logging:=true
Refer to the Wiki for more information on alternate usage.
Please report bugs and request features using the Issue Tracker.