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,
title={Switching Sampling Space of Model Predictive Path-Integral Controller to Balance Efficiency and Safety in 4WIDS Vehicle Navigation},
author={Aoki, Mizuho and Honda, Kohei and Okuda, Hiroyuki and Suzuki, Tatsuya},
booktitle={2024 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
year={2024}}
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:=maze
gazebo_world_name
options:empty
empty_garden
cylinder_garden
maze
- 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.