A ROS package implementing Constrained Differential Dynamic Programming (CDDP) for Model Predictive Control (MPC).
This package provides a ROS implementation of CDDP-based Model Predictive Control. It integrates with the CDDP C++ library to enable real-time optimal control for robotic systems.
- ROS 2 (tested on ROS 2 Humble)
- C++17 or later
- CMake 3.8 or later
- [Optional] CDDP C++ Library
- Create a ROS workspace and navigate to it:
mkdir ros_ws && cd ros_ws```
- Create the source directory and clone the repository:
mkdir src && cd src
git clone https://github.com/astomodynamics/cddp_mpc
- Return to the workspace root and build the package:
cd ../ # to ~/ros_ws
colcon build --packages-select cddp_mpc
If you want to use the standalone CDDP C++ library:
- Clone the CDDP C++ repository:
git clone https://github.com/astomodynamics/cddp-cpp
- Build the library:
cd cddp-cpp
mkdir build && cd build
cmake ..
make
After building the package, source your ROS workspace:
source ~/ros_ws/install/setup.bash
To test the CDDP MPC controller, you'll need to run commands in three separate terminals.
- Launch the Robot Node
ros2 launch cddp_mpc simple_robot_bringup.launch.py
- Launch the MPC Node
In your first terminal, start the MPC node:
ros2 run cddp_mpc mpc_node
- Select the robot goal at Rviz2
Contributions are welcome! Please feel free to submit pull requests.
If you use this work in an academic context, please cite this repository.
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.