mppi_swerve_drive_ros
MPPI (Model Predictive Path-Integral) Controller for a Swerve Drive Robot
Citation
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.
Setup
[Option 1] Docker environment
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
[Option 2] Native environment
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
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
Usage
[Case 1] Launch gazebo simulator only, operating a 4wids vehicle manually with a joypad.
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 edit mppi_swerve_drive_ros/src/operation/joy_controller/config/joy.yaml.
[Case 2] Navigate a 4wids vehicle autonomously with a MPPI controller.
- 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
https://github.com/user-attachments/assets/eaeb7713-c09f-4a68-b68c-100444438f9e
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.
评论