ramonpereira / ros_motion_planning

Motion planning and Navigation of AGV/AMR:ROS planner plugin implementation of A*, JPS, D*, LPA*, D* Lite, Theta*, RRT, RRT*, RRT-Connect, Informed RRT*, ACO, PSO, Voronoi, PID, DWA, APF etc.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ubuntu ROS

ROS Motion Planning

Robot Motion planning is a computational problem that involves finding a sequence of valid configurations to move the robot from the source to the destination. Generally, it includes Path Searching and Trajectory Optimization.

  • Path Searching: Based on path constraints, such as obstacles, to find the optimal sequence for the robot to travel from the source to the destination without any collisions.

  • Trajectory Planning: Based on kinematics, dynamics and obstacles, it optimizes the trajectory of the motion state from the source to the destination according to the path.

This repository provides the implementation of common Motion Planning algorithms. The theory analysis can be found at motion-planning. Furthermore, we provide Python and MATLAB version.

Your stars, forks and PRs are welcome!

demo.gif

Contents

0. Quick Start within 3 Minutes

Tested on ubuntu 20.04 LTS with ROS Noetic.

  1. Install ROS (Desktop-Full suggested).

  2. Install git.

    sudo apt install git
  3. Other dependence.

    sudo apt install python-is-python3 \
    ros-noetic-amcl \
    ros-noetic-base-local-planner \
    ros-noetic-map-server \
    ros-noetic-move-base \
    ros-noetic-navfn
  4. Clone the reposity.

    git clone https://github.com/ai-winter/ros_motion_planning.git
  5. Compile the code.

    cd ros_motion_planning/
    catkin_make
    # or catkin build
    # you may need to install it by: sudo apt install python-catkin-tools
  6. Execute the code.

    cd scripts/
    ./main.sh

    NOTE: Modifying certain launch files does not have any effect, as they are regenerated based on the src/user_config/user_config.yaml by a Python script when you execute main.sh. Therefore, you should modify configurations in user_config.yaml instead of launch files.

  7. Use 2D Nav Goal in RViz to select the goal.

  8. Moving!

  9. You can use the other script to shutdown them rapidly.

    ./killpro.sh
  10. For more details on system configuration, please refer to Configuration.

1. File Tree

The file structure is shown below.

ros_motion_planner
├── assets
├── scripts
└── src
    ├── core
    │   ├── global_planner
    │   ├── local_planner
    │   ├── curve_generation
    │   └── utils
    ├── sim_env             # simulation environment
    │   ├── config
    │   ├── launch
    │   ├── maps
    │   ├── meshes
    │   ├── models
    │   ├── rviz
    │   ├── urdf
    │   └── worlds
    ├── third_party
    │   ├── dynamic_rviz_config
    │   ├── dynamic_xml_config
    │   ├── gazebo_plugins
    │   └── rviz_plugins
    └── user_config         # user configure file

02. Tool Chains

For the efficient operation of the motion planning system, we provide a series of user-friendly simulation tools that allow for on-demand selection of these lightweight repositories.

Tool Version Introduction
Status This is a Gazebo plugin for pedestians with collision property. You can construct a dynamic environment in ROS easily using plugin.
Status This repository provides a ROS-based visualization Rviz plugins for path planning and curve generation algorithms.

03. Version

Global Planner

Planner Version Animation
GBFS Status gbfs_ros.gif
Dijkstra Status dijkstra_ros.gif
A* Status a_star_ros.gif
JPS Status jps_ros.gif
D* Status d_star_ros.gif
LPA* Status lpa_star_ros.gif
D* Lite Status d_star_lite_ros.gif
Voronoi Status voronoi_ros.gif
Theta* Status theta_star_ros.gif
Lazy Theta* Status lazy_theta_star_ros.gif
Hybrid A* Status hybrid_astar_ros.gif
RRT Status rrt_ros.gif
RRT* Status rrt_star_ros.gif
Informed RRT Status informed_rrt_ros.gif
RRT-Connect Status rrt_connect_ros.gif

Local Planner

Planner Version Animation
PID Status pid_ros.gif
DWA Status dwa_ros.gif
APF Status apf_ros.gif
TEB Status Status
MPC Status Status
Lattice Status Status

Intelligent Algorithm

Planner Version Animation
ACO Status aco_ros.gif
GA Status ga_ros.gif
PSO Status pso_ros.gif
ABC Status Status

Curve Generation

Planner Version Animation
Polynomia Status polynomial_curve_python.gif
Bezier Status bezier_curve_python.png
Cubic Spline Status cubic_spline_python.png
BSpline Status bspline_curve_python.png
Dubins Status dubins_curve_python.png
Reeds-Shepp Status reeds_shepp_python.png

04. Papers

Search-based Planning

Sample-based Planning

Evolutionary-based Planning

Local Planning

Curve Generation

05. Acknowledgments

06. License

The source code is released under GPLv3 license.

07. Maintenance

Feel free to contact us if you have any question.

About

Motion planning and Navigation of AGV/AMR:ROS planner plugin implementation of A*, JPS, D*, LPA*, D* Lite, Theta*, RRT, RRT*, RRT-Connect, Informed RRT*, ACO, PSO, Voronoi, PID, DWA, APF etc.

License:GNU General Public License v3.0


Languages

Language:C++ 97.8%Language:CMake 1.6%Language:Python 0.6%Language:Shell 0.0%