MPPI (Model Predictive Path-Integral) Controller for a Swerve Drive Robot
If you use this work in an academic context, please cite the following publication:
@inproceedings{mizuho2024iros
author={Aoki, Mizuho and Honda, Kohei and Okuda, Hiroyuki and Suzuki, Tatsuya},
booktitle={2024 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
title={Switching Sampling Space of Model Predictive Path-Integral Controller to Balance Efficiency and Safety in 4WIDS Vehicle Navigation},
year={2024},
volume={},
number={},
pages={3196-3203},
doi={10.1109/IROS58592.2024.10802359}}Important
More Advanced Controller is Also Open Source!
Check Nullspace MPC Repository
Compared to MPPI, it achieves faster navigation while ensuring higher safety,
at the cost of increased computational demand.
CLICK HERE TO EXPAND
-
Prerequisites
-
Clone the project repository.
cd <path to your workspace> git clone https://github.com/MizuhoAOKI/mppi_swerve_drive_ros -
Run for the first time setup to build the docker image.
cd <path to your workspace>/mppi_swerve_drive_ros make setup_docker -
Launch the docker container and get into the bash inside.
cd <path to your workspace>/mppi_swerve_drive_ros make run_docker -
[Inside the docker container] Build the project.
cd ~/mppi_swerve_drive_ros make build
CLICK HERE TO EXPAND
-
Prerequisites
-
Clone the project repository.
cd <path to your workspace> git clone https://github.com/MizuhoAOKI/mppi_swerve_drive_ros -
Install foundation packages.
cd <path to your workspace>/mppi_swerve_drive_ros sudo make install_deps -
Initialize rosdep, update it, and install dependencies.
cd <path to your workspace>/mppi_swerve_drive_ros sudo rosdep init rosdep update rosdep update && rosdep install -y --from-paths src --ignore-src --rosdistro noetic -
Build the project.
cd <path to your workspace>/mppi_swerve_drive_ros make build
Build the project.
cd <path to your workspace>/mppi_swerve_drive_ros
make build
(Optional) Clean the cache before building the project if necessary.
cd <path to your workspace>/mppi_swerve_drive_ros
make clean
cd <path to your workspace>/mppi_swerve_drive_ros
source /opt/ros/noetic/setup.bash && source ./devel/setup.bash
roslaunch launch/gazebo_world.launch gazebo_world_name:=mazegazebo_world_nameoptions:emptyempty_gardencylinder_gardenmaze
- Default joystick path is
/dev/input/js0. If you want to change the path, please editmppi_swerve_drive_ros/src/operation/joy_controller/config/joy.yaml.
- Try MPPI-3D(a) (driving faster but dangerous sometimes)
cd <path to your workspace>/mppi_swerve_drive_ros source /opt/ros/noetic/setup.bash && source ./devel/setup.bash roslaunch launch/navigation.launch local_planner:=mppi_3d_a
- Try MPPI-3D(b) (relatively safe but driving slower)
cd <path to your workspace>/mppi_swerve_drive_ros source /opt/ros/noetic/setup.bash && source ./devel/setup.bash roslaunch launch/navigation.launch local_planner:=mppi_3d_b
- Try MPPI-4D (safe but relatively slow)
cd <path to your workspace>/mppi_swerve_drive_ros source /opt/ros/noetic/setup.bash && source ./devel/setup.bash roslaunch launch/navigation.launch local_planner:=mppi_4d
- [Author's Recommendation] ⭐Try MPPI-H⭐ (good balance between quickness and safety)
cd <path to your workspace>/mppi_swerve_drive_ros source /opt/ros/noetic/setup.bash && source ./devel/setup.bash roslaunch launch/navigation.launch local_planner:=mppi_h
demo_mppi_swerve_drive_ros.mp4
Note
Due to asynchronous simulation on ROS and the sampling-based algorithm relying on multi-threading computation, the controllers' performance can vary depending on a user's environment.