Skip to content

[IROS 2024] MPPI (Model Predictive Path-Integral) Controller for a Swerve Drive Robot

License

Notifications You must be signed in to change notification settings

MizuhoAOKI/mppi_swerve_drive_ros

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mppi_swerve_drive_ros

MPPI (Model Predictive Path-Integral) Controller for a Swerve Drive Robot

image

[Website] [PDF] [Arxiv] [Poster]

ROS Distro: Noetic Docker License: MIT Conference: IROS

iros2024_movie_20240912.mp4

Citation

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}}

Setup

[Option 1] Docker environment

CLICK HERE TO EXPAND
  1. Prerequisites

    • docker
      • For ubuntu users:
        curl -fsSL https://get.docker.com -o get-docker.sh
        sudo sh get-docker.sh
        
    • rocker
      • For ubuntu users:
        sudo apt-get install python3-rocker
        
  2. Clone the project repository.

    cd <path to your workspace>
    git clone https://github.com/MizuhoAOKI/mppi_swerve_drive_ros
    
  3. Run for the first time setup to build the docker image.

    cd <path to your workspace>/mppi_swerve_drive_ros
    make setup_docker
    
  4. Launch the docker container and get into the bash inside.

    cd <path to your workspace>/mppi_swerve_drive_ros
    make run_docker
    
  5. [Inside the docker container] Build the project.

    cd ~/mppi_swerve_drive_ros
    make build
    

[Option 2] Native environment

CLICK HERE TO EXPAND
  1. Prerequisites

  2. Clone the project repository.

    cd <path to your workspace>
    git clone https://github.com/MizuhoAOKI/mppi_swerve_drive_ros
    
  3. Install foundation packages.

    cd <path to your workspace>/mppi_swerve_drive_ros
    sudo make install_deps
    
  4. 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
    
  5. 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
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.