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!
- Quick Start within 3 Minutes
- File Tree
- Tool Chains
- Version
- Papers
- Acknowledgments
- License
- Maintenance
Tested on ubuntu 20.04 LTS with ROS Noetic.
-
Install ROS (Desktop-Full suggested).
-
Install git.
sudo apt install git
-
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
-
Clone the reposity.
git clone https://github.com/ai-winter/ros_motion_planning.git
-
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
-
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 executemain.sh
. Therefore, you should modify configurations inuser_config.yaml
instead of launch files. -
Use 2D Nav Goal in RViz to select the goal.
-
Moving!
-
You can use the other script to shutdown them rapidly.
./killpro.sh
-
For more details on system configuration, please refer to Configuration.
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
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.
Planner | Version | Animation |
---|---|---|
GBFS | ||
Dijkstra | ||
A* | ||
JPS | ||
D* | ||
LPA* | ||
D* Lite | ||
Voronoi | ||
Theta* | ||
Lazy Theta* | ||
Hybrid A* | ||
RRT | ||
RRT* | ||
Informed RRT | ||
RRT-Connect |
Planner | Version | Animation |
---|---|---|
PID | ||
DWA | ||
APF | ||
RPP | ||
TEB | ||
MPC | ||
Lattice |
Planner | Version | Animation |
---|---|---|
ACO | ||
GA | ||
PSO | ||
ABC |
Planner | Version | Animation |
---|---|---|
Polynomia | ||
Bezier | ||
Cubic Spline | ||
BSpline | ||
Dubins | ||
Reeds-Shepp |
- A*: A Formal Basis for the heuristic Determination of Minimum Cost Paths.
- JPS: Online Graph Pruning for Pathfinding On Grid Maps.
- Lifelong Planning A*: Lifelong Planning A*.
- D*: Optimal and Efficient Path Planning for Partially-Known Environments.
- D* Lite: D* Lite.
- Theta*: Theta*: Any-Angle Path Planning on Grids, Any-angle path planning on non-uniform costmaps.
- Lazy Theta*: Lazy Theta*: Any-Angle Path Planning and Path Length Analysis in 3D.
- Hybrid A*: Practical search techniques in path planning for autonomous driving
- RRT: Rapidly-Exploring Random Trees: A New Tool for Path Planning.
- RRT-Connect: RRT-Connect: An Efficient Approach to Single-Query Path Planning.
- RRT*: Sampling-based algorithms for optimal motion planning.
- Informed RRT*: Optimal Sampling-based Path Planning Focused via Direct Sampling of an Admissible Ellipsoidal heuristic.
- ACO: Ant Colony Optimization: A New Meta-Heuristic.
- GA: Adaptation in Natural and Artificial Systems
- PSO: Particle Swarm Optimization
- DWA: The Dynamic Window Approach to Collision Avoidance.
- APF: Real-time obstacle avoidance for manipulators and mobile robots.
- RPP: Regulated Pure Pursuit for Robot Path Tracking
- Reeds Shepp: Optimal paths for a car that goes both forwards and backwards
- Dubins: On curves of minimal length with a constraint on average curvature, and with prescribed initial and terminal positions and tangents
-
Our robot and world models are from Dataset-of-Gazebo-Worlds-Models-and-Maps and aws-robomaker-small-warehouse-world. Thanks for these open source models sincerely.
-
Pedestrians in this environment are using social force model(sfm), which comes from https://github.com/robotics-upo/lightsfm.
-
A ROS costmap plugin for dynamicvoronoi presented by Boris Lau.
The source code is released under GPLv3 license.
Feel free to contact us if you have any question.