Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

MizuhoAOKI/mppi_swerve_drive_ros

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

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.

Morty Proxy This is a proxified and sanitized view of the page, visit original site.