Motion planning algorithms for Python
Project description
Introduction
Python Motion Planning repository provides the implementations of common Motion planning algorithms, including path planners on N-D grid, controllers for path-tracking, curve generators, a visualizer based on matplotlib and a toy physical simulator to test controllers.
Motion planning plans the state sequence of the robot without conflict between the start and goal.
Motion planning mainly includes Path planning and Trajectory planning.
Path Planning: It's based on path constraints (such as obstacles), planning the optimal path sequence for the robot to travel without conflict between the start and goal.Trajectory planning: It plans the motion state to approach the global path based on kinematics, dynamics constraints and path sequence.
The theory analysis can be found at motion-planning.
We also provide ROS C++ version and Matlab version.
Your stars and forks are welcome!
Quick Start
Overview
The source file structure is shown below
python_motion_planning
├─common
| ├─env
| | ├─map
| | ├─robot
| | └─world
| ├─utils
| └─visualizer
├─controller
| └─path_tracker
├─path_planner
| ├─graph_search
| ├─sample_search
| └─hybrid_search
└─traj_optimizer
| └─curve_generator
Install
(Optional) The code was tested in python=3.10, though other similar versions should also work. We recommend using conda to install the dependencies.
conda create -n pmp python=3.10
conda activate pmp
To install the repository, please run the following command in shell.
pip install python-motion-planning
Run
Please refer to the Tutorials part of online documentation.
Demos
Path Planner
Graph Search
| Planner | 2D Grid | 3D Grid |
|---|---|---|
| Dijkstra | ||
| GBFS | ||
| A* | ||
| JPS | ||
| Theta* | ||
| Lazy Theta* | ||
| D* | Implemented in V1.1.1, not migrated | Not implemented |
| LPA* | Implemented in V1.1.1, not migrated | Not implemented |
| D* Lite | Implemented in V1.1.1, not migrated | Not implemented |
| Anya | Not implemented | Not implemented |
Sample Search
| Planner | 2D Grid | 3D Grid |
|---|---|---|
| RRT | ||
| RRT* | ||
| RRT-Connect | ||
| Informed RRT | Implemented in V1.1.1, not migrated | Not implemented |
| PRM | Not implemented | Not implemented |
Evolutionary Search
| Planner | 2D Grid | 3D Grid |
|---|---|---|
| ACO | Implemented in V1.1.1, not migrated | Not implemented |
| GA | Implemented in V1.1.1, not migrated | Not implemented |
| PSO | Implemented in V1.1.1, not migrated | Not implemented |
Hybrid Search
| Planner | 2D Grid | 3D Grid |
|---|---|---|
| Voronoi Planner |
Controller
We provide a toy simulator with simple physical simulation to test controllers (path-trakcers). The toy simulator supports multi-agents/multi-robots. The available robots include CircularRobot (Omnidirectional) and DiffDriveRobot (Only support moving forward and backward). Currently only 2D simulator is provided. 3D simulator has not been implemented.
In the following demos, the blue robot 1 is the CircularRobot, and the orange robot 2 is the DiffDriveRobot.
| Controller | 2D | 3D |
|---|---|---|
| Path Trakcer | Not implemented | |
| Pure Pursuit | Not implemented | |
| PID | Not implemented | |
| APF | Not implemented | |
| DWA | Not implemented | |
| RPP | Not implemented | |
| LQR | Implemented in V1.1.1, not migrated | Not implemented |
| MPC | Implemented in V1.1.1, not migrated | Not implemented |
| MPPI | Not implemented | Not implemented |
| TEB | Not implemented | Not implemented |
| Lattice | Not implemented | Not implemented |
| DQN | Not implemented | Not implemented |
| DDPG | Implemented in V1.0, not migrated | Not implemented |
Curve Generator
| Generator | 2D | 3D |
|---|---|---|
| Polynomia | Not implemented | |
| Bezier | Not implemented | |
| Cubic Spline | Not implemented | |
| BSpline | Not implemented | |
| Dubins | Not implemented | |
| Reeds-Shepp | Not implemented |
Future Works
-
N-D controllers (path-trackers).
-
Path planning for robotic arms.
-
Path planning on topological map.
-
Sample search with Dubins or Reeds-Shepp curves.
-
Application on ROS2.
-
Application in mainstream robot simulation environments (e.g. Gazebo, Carla, Airsim, PyBullet, MuJoCo, Issac Sim).
-
More mainstream motion planning algorithms.
-
Performance optimization.
Contributors are welcome! For trivial modification, please directly contribute to dev branch. For big modification, please contact us before you contribute.
Contact
Long-term maintainers:
- @omigeft (Wu Maojia)
- @ai-winter (Yang Haodong)
You can contact us via the information provided on our profile.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file python_motion_planning-2.0.tar.gz.
File metadata
- Download URL: python_motion_planning-2.0.tar.gz
- Upload date:
- Size: 96.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
27dfec9e6c9761cf88771beecd2f6eccf73a77388ce66179721a91e225d3b9d1
|
|
| MD5 |
fc646c6446f44b59d2eb94361daf096d
|
|
| BLAKE2b-256 |
a7da485e9d0f1c08ce5aae83169489ccd534b630a2a349497bbe2c1943abbe02
|
File details
Details for the file python_motion_planning-2.0-py3-none-any.whl.
File metadata
- Download URL: python_motion_planning-2.0-py3-none-any.whl
- Upload date:
- Size: 116.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
198c83daf1a2a8eb56eed3d0c9238191c0bc666c5219dfa977a5c22e6064a75b
|
|
| MD5 |
438fc63af556c056755cd1240a23813b
|
|
| BLAKE2b-256 |
348c2768a91f7b2e5e1d2455de9706bc5230177cd1ada28a4c03d3facb484a47
|