python-motion-planning 2.0.dev1__tar.gz → 2.0.dev2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/PKG-INFO +54 -19
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/README.md +50 -18
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/pyproject.toml +5 -2
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/common/env/map/base_map.py +2 -8
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/common/env/map/grid.py +74 -81
- python_motion_planning-2.0.dev2/src/python_motion_planning/common/utils/__init__.py +3 -0
- python_motion_planning-2.0.dev2/src/python_motion_planning/common/utils/child_tree.py +22 -0
- python_motion_planning-2.0.dev2/src/python_motion_planning/common/visualizer/__init__.py +3 -0
- python_motion_planning-2.0.dev2/src/python_motion_planning/common/visualizer/base_visualizer.py +165 -0
- python_motion_planning-2.0.dev1/src/python_motion_planning/common/visualizer/visualizer.py → python_motion_planning-2.0.dev2/src/python_motion_planning/common/visualizer/visualizer_2d.py +97 -220
- python_motion_planning-2.0.dev2/src/python_motion_planning/common/visualizer/visualizer_3d.py +242 -0
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/controller/base_controller.py +37 -4
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/controller/path_tracker/__init__.py +2 -1
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/controller/path_tracker/apf.py +22 -23
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/controller/path_tracker/dwa.py +14 -17
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/controller/path_tracker/path_tracker.py +4 -1
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/controller/path_tracker/pid.py +7 -1
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/controller/path_tracker/pure_pursuit.py +7 -1
- python_motion_planning-2.0.dev2/src/python_motion_planning/controller/path_tracker/rpp.py +111 -0
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/path_planner/__init__.py +2 -1
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/path_planner/base_path_planner.py +45 -11
- python_motion_planning-2.0.dev2/src/python_motion_planning/path_planner/graph_search/__init__.py +6 -0
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/path_planner/graph_search/a_star.py +12 -14
- python_motion_planning-2.0.dev2/src/python_motion_planning/path_planner/graph_search/dijkstra.py +97 -0
- python_motion_planning-2.0.dev2/src/python_motion_planning/path_planner/graph_search/gbfs.py +100 -0
- python_motion_planning-2.0.dev2/src/python_motion_planning/path_planner/graph_search/jps.py +199 -0
- python_motion_planning-2.0.dev2/src/python_motion_planning/path_planner/graph_search/lazy_theta_star.py +113 -0
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/path_planner/graph_search/theta_star.py +17 -19
- python_motion_planning-2.0.dev2/src/python_motion_planning/path_planner/hybrid_search/__init__.py +1 -0
- python_motion_planning-2.0.dev2/src/python_motion_planning/path_planner/hybrid_search/voronoi_planner.py +204 -0
- python_motion_planning-2.0.dev2/src/python_motion_planning/path_planner/sample_search/__init__.py +3 -0
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/path_planner/sample_search/rrt.py +70 -28
- python_motion_planning-2.0.dev2/src/python_motion_planning/path_planner/sample_search/rrt_connect.py +237 -0
- python_motion_planning-2.0.dev2/src/python_motion_planning/path_planner/sample_search/rrt_star.py +259 -0
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning.egg-info/PKG-INFO +54 -19
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning.egg-info/SOURCES.txt +11 -2
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning.egg-info/requires.txt +3 -0
- python_motion_planning-2.0.dev1/src/python_motion_planning/common/env/robot/tmp.py +0 -404
- python_motion_planning-2.0.dev1/src/python_motion_planning/common/utils/__init__.py +0 -2
- python_motion_planning-2.0.dev1/src/python_motion_planning/common/visualizer/__init__.py +0 -1
- python_motion_planning-2.0.dev1/src/python_motion_planning/path_planner/graph_search/__init__.py +0 -3
- python_motion_planning-2.0.dev1/src/python_motion_planning/path_planner/graph_search/dijkstra.py +0 -97
- python_motion_planning-2.0.dev1/src/python_motion_planning/path_planner/sample_search/__init__.py +0 -2
- python_motion_planning-2.0.dev1/src/python_motion_planning/path_planner/sample_search/rrt_star.py +0 -209
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/LICENSE +0 -0
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/setup.cfg +0 -0
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/__init__.py +0 -0
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/common/__init__.py +0 -0
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/common/env/__init__.py +0 -0
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/common/env/map/__init__.py +0 -0
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/common/env/node.py +0 -0
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/common/env/robot/__init__.py +0 -0
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/common/env/robot/base_robot.py +0 -0
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/common/env/robot/circular_robot.py +0 -0
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/common/env/robot/diff_drive_robot.py +0 -0
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/common/env/types.py +0 -0
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/common/env/world/__init__.py +0 -0
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/common/env/world/base_world.py +0 -0
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/common/env/world/toy_simulator.py +0 -0
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/common/utils/frame_transformer.py +0 -0
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/common/utils/geometry.py +0 -0
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/controller/__init__.py +0 -0
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/controller/random_controller.py +0 -0
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/curve_generator/__init__.py +0 -0
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/curve_generator/bezier_curve.py +0 -0
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/curve_generator/bspline_curve.py +0 -0
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/curve_generator/cubic_spline.py +0 -0
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/curve_generator/curve.py +0 -0
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/curve_generator/dubins_curve.py +0 -0
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/curve_generator/fem_pos_smooth.py +0 -0
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/curve_generator/polynomial_curve.py +0 -0
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/curve_generator/reeds_shepp.py +0 -0
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning.egg-info/dependency_links.txt +0 -0
- {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-motion-planning
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.dev2
|
|
4
4
|
Summary: Motion planning algorithms for Python
|
|
5
5
|
Maintainer-email: Wu Maojia <omige@mail.nwpu.edu.cn>, Yang Haodong <913982779@qq.com>
|
|
6
6
|
License: GNU GENERAL PUBLIC LICENSE
|
|
@@ -689,6 +689,9 @@ Requires-Dist: scipy
|
|
|
689
689
|
Requires-Dist: matplotlib
|
|
690
690
|
Requires-Dist: osqp
|
|
691
691
|
Requires-Dist: gymnasium
|
|
692
|
+
Requires-Dist: faiss-cpu
|
|
693
|
+
Requires-Dist: pyvista
|
|
694
|
+
Requires-Dist: pyvistaqt
|
|
692
695
|
Dynamic: license-file
|
|
693
696
|
|
|
694
697
|
|
|
@@ -701,11 +704,13 @@ Dynamic: license-file
|
|
|
701
704
|
* `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.
|
|
702
705
|
* `Trajectory planning`: It plans the motion state to approach the global path based on kinematics, dynamics constraints and path sequence.
|
|
703
706
|
|
|
707
|
+
This repository provides the implementations of common `Motion planning` algorithms, including path planners on N-D grid and controllers for path-tracking, a visualizer based on matplotlib and a toy physical simulator to test controllers.
|
|
708
|
+
|
|
704
709
|
The theory analysis can be found at [motion-planning](https://blog.csdn.net/frigidwinter/category_11410243.html).
|
|
705
710
|
|
|
706
711
|
We also provide [ROS C++](https://github.com/ai-winter/ros_motion_planning) version and [Matlab](https://github.com/ai-winter/matlab_motion_planning) version.
|
|
707
712
|
|
|
708
|
-
|
|
713
|
+
**Your stars and forks are welcome!**
|
|
709
714
|
|
|
710
715
|
# Quick Start
|
|
711
716
|
|
|
@@ -725,8 +730,9 @@ python_motion_planning
|
|
|
725
730
|
| └─path_tracker
|
|
726
731
|
├─path_planner
|
|
727
732
|
| ├─graph_search
|
|
728
|
-
|
|
|
729
|
-
└─
|
|
733
|
+
| ├─sample_search
|
|
734
|
+
| └─hybrid_search
|
|
735
|
+
└─curve_generator
|
|
730
736
|
```
|
|
731
737
|
|
|
732
738
|
## Install
|
|
@@ -740,7 +746,7 @@ conda activate pmp
|
|
|
740
746
|
To install the repository, please run the following command in shell.
|
|
741
747
|
|
|
742
748
|
```shell
|
|
743
|
-
pip install python-motion-planning==2.0.
|
|
749
|
+
pip install python-motion-planning==2.0.dev2
|
|
744
750
|
```
|
|
745
751
|
|
|
746
752
|
## Run
|
|
@@ -749,29 +755,40 @@ Please refer to the Tutorials part of [online documentation](https://ai-winter.g
|
|
|
749
755
|
|
|
750
756
|
# Demos
|
|
751
757
|
## Path Planner
|
|
752
|
-
|
|
758
|
+
### Graph Search
|
|
753
759
|
|Planner|2D Grid|3D Grid
|
|
754
760
|
|-------|-------|-------
|
|
755
|
-
**
|
|
756
|
-
**
|
|
757
|
-
**A\***|||
|
|
762
|
+
**GBFS**||
|
|
763
|
+
**A\***||
|
|
764
|
+
**JPS**||
|
|
765
|
+
**Theta\***||
|
|
766
|
+
**Lazy Theta\***||
|
|
759
767
|
**D\***|Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
|
|
760
768
|
**LPA\***|Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
|
|
761
769
|
**D\* Lite**|Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
|
|
762
|
-
**Theta\***||
|
|
763
|
-
**Lazy Theta\***|Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
|
|
764
|
-
**S-Theta\***|Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
|
|
765
770
|
**Anya**|Not implemented|Not implemented
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
771
|
+
|
|
772
|
+
### Sample Search
|
|
773
|
+
|Planner|2D Grid|3D Grid
|
|
774
|
+
|-------|-------|-------
|
|
775
|
+
**RRT**||
|
|
776
|
+
**RRT\***||
|
|
777
|
+
**RRT-Connect**||
|
|
769
778
|
**Informed RRT**|Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
|
|
770
|
-
**
|
|
779
|
+
**PRM**|Not implemented|Not implemented
|
|
780
|
+
|
|
781
|
+
### Evolutionary Search
|
|
782
|
+
|Planner|2D Grid|3D Grid
|
|
783
|
+
|-------|-------|-------
|
|
771
784
|
| **ACO** |Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
|
|
772
785
|
| **GA** |Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
|
|
773
786
|
| **PSO** |Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
|
|
774
787
|
|
|
788
|
+
### Hybrid Search
|
|
789
|
+
|Planner|2D Grid|3D Grid
|
|
790
|
+
|-------|-------|-------
|
|
791
|
+
**Voronoi Planner**||
|
|
775
792
|
|
|
776
793
|
## Controller
|
|
777
794
|
|
|
@@ -779,7 +796,7 @@ We provide a toy simulator with simple physical simulation to test controllers (
|
|
|
779
796
|
|
|
780
797
|
In the following demos, the blue robot 1 is the `CircularRobot`, and the orange robot 2 is the `DiffDriveRobot`.
|
|
781
798
|
|
|
782
|
-
|
|
|
799
|
+
|Controller|2D|3D
|
|
783
800
|
|-------|-------|-------
|
|
784
801
|
|**Path Trakcer**||Not implemented
|
|
785
802
|
| **Pure Pursuit** ||Not implemented
|
|
@@ -799,7 +816,7 @@ In the following demos, the blue robot 1 is the `CircularRobot`, and the orange
|
|
|
799
816
|
|
|
800
817
|
The visualization of the curve generators has not been implemented in current version. They can be visualized in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1).
|
|
801
818
|
|
|
802
|
-
|
|
|
819
|
+
|Generator|2D|3D|
|
|
803
820
|
| ------- | -------------------------------------------------------- | --------------------------------------------------------
|
|
804
821
|
| **Polynomia** | |Not implemented
|
|
805
822
|
| **Bezier** ||Not implemented
|
|
@@ -809,6 +826,24 @@ The visualization of the curve generators has not been implemented in current ve
|
|
|
809
826
|
| **Reeds-Shepp** ||Not implemented
|
|
810
827
|
| **Fem-Pos Smoother** ||Not implemented
|
|
811
828
|
|
|
829
|
+
# Future Works
|
|
830
|
+
|
|
831
|
+
* N-D controllers (path-trackers).
|
|
832
|
+
|
|
833
|
+
* Path planning for robotic arms.
|
|
834
|
+
|
|
835
|
+
* Path planning on topological map.
|
|
836
|
+
|
|
837
|
+
* Application on ROS2.
|
|
838
|
+
|
|
839
|
+
* Application in mainstream robot simulation environments (e.g. Gazebo, Carla, Airsim, PyBullet, MuJoCo, Issac Sim).
|
|
840
|
+
|
|
841
|
+
* More mainstream motion planning algorithms.
|
|
842
|
+
|
|
843
|
+
* Performance optimization.
|
|
844
|
+
|
|
845
|
+
Contributors are welcome! For trivial modification, please directly contribute to `dev` branch. For big modification, please [contact](#contact) us before you contribute.
|
|
846
|
+
|
|
812
847
|
# Contact
|
|
813
848
|
|
|
814
849
|
Long-term maintainers:
|
|
@@ -8,11 +8,13 @@
|
|
|
8
8
|
* `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.
|
|
9
9
|
* `Trajectory planning`: It plans the motion state to approach the global path based on kinematics, dynamics constraints and path sequence.
|
|
10
10
|
|
|
11
|
+
This repository provides the implementations of common `Motion planning` algorithms, including path planners on N-D grid and controllers for path-tracking, a visualizer based on matplotlib and a toy physical simulator to test controllers.
|
|
12
|
+
|
|
11
13
|
The theory analysis can be found at [motion-planning](https://blog.csdn.net/frigidwinter/category_11410243.html).
|
|
12
14
|
|
|
13
15
|
We also provide [ROS C++](https://github.com/ai-winter/ros_motion_planning) version and [Matlab](https://github.com/ai-winter/matlab_motion_planning) version.
|
|
14
16
|
|
|
15
|
-
|
|
17
|
+
**Your stars and forks are welcome!**
|
|
16
18
|
|
|
17
19
|
# Quick Start
|
|
18
20
|
|
|
@@ -32,8 +34,9 @@ python_motion_planning
|
|
|
32
34
|
| └─path_tracker
|
|
33
35
|
├─path_planner
|
|
34
36
|
| ├─graph_search
|
|
35
|
-
|
|
|
36
|
-
└─
|
|
37
|
+
| ├─sample_search
|
|
38
|
+
| └─hybrid_search
|
|
39
|
+
└─curve_generator
|
|
37
40
|
```
|
|
38
41
|
|
|
39
42
|
## Install
|
|
@@ -47,7 +50,7 @@ conda activate pmp
|
|
|
47
50
|
To install the repository, please run the following command in shell.
|
|
48
51
|
|
|
49
52
|
```shell
|
|
50
|
-
pip install python-motion-planning==2.0.
|
|
53
|
+
pip install python-motion-planning==2.0.dev2
|
|
51
54
|
```
|
|
52
55
|
|
|
53
56
|
## Run
|
|
@@ -56,29 +59,40 @@ Please refer to the Tutorials part of [online documentation](https://ai-winter.g
|
|
|
56
59
|
|
|
57
60
|
# Demos
|
|
58
61
|
## Path Planner
|
|
59
|
-
|
|
62
|
+
### Graph Search
|
|
60
63
|
|Planner|2D Grid|3D Grid
|
|
61
64
|
|-------|-------|-------
|
|
62
|
-
**
|
|
63
|
-
**
|
|
64
|
-
**A\***|||
|
|
66
|
+
**GBFS**||
|
|
67
|
+
**A\***||
|
|
68
|
+
**JPS**||
|
|
69
|
+
**Theta\***||
|
|
70
|
+
**Lazy Theta\***||
|
|
66
71
|
**D\***|Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
|
|
67
72
|
**LPA\***|Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
|
|
68
73
|
**D\* Lite**|Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
|
|
69
|
-
**Theta\***||
|
|
70
|
-
**Lazy Theta\***|Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
|
|
71
|
-
**S-Theta\***|Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
|
|
72
74
|
**Anya**|Not implemented|Not implemented
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
75
|
+
|
|
76
|
+
### Sample Search
|
|
77
|
+
|Planner|2D Grid|3D Grid
|
|
78
|
+
|-------|-------|-------
|
|
79
|
+
**RRT**||
|
|
80
|
+
**RRT\***||
|
|
81
|
+
**RRT-Connect**||
|
|
76
82
|
**Informed RRT**|Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
|
|
77
|
-
**
|
|
83
|
+
**PRM**|Not implemented|Not implemented
|
|
84
|
+
|
|
85
|
+
### Evolutionary Search
|
|
86
|
+
|Planner|2D Grid|3D Grid
|
|
87
|
+
|-------|-------|-------
|
|
78
88
|
| **ACO** |Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
|
|
79
89
|
| **GA** |Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
|
|
80
90
|
| **PSO** |Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
|
|
81
91
|
|
|
92
|
+
### Hybrid Search
|
|
93
|
+
|Planner|2D Grid|3D Grid
|
|
94
|
+
|-------|-------|-------
|
|
95
|
+
**Voronoi Planner**||
|
|
82
96
|
|
|
83
97
|
## Controller
|
|
84
98
|
|
|
@@ -86,7 +100,7 @@ We provide a toy simulator with simple physical simulation to test controllers (
|
|
|
86
100
|
|
|
87
101
|
In the following demos, the blue robot 1 is the `CircularRobot`, and the orange robot 2 is the `DiffDriveRobot`.
|
|
88
102
|
|
|
89
|
-
|
|
|
103
|
+
|Controller|2D|3D
|
|
90
104
|
|-------|-------|-------
|
|
91
105
|
|**Path Trakcer**||Not implemented
|
|
92
106
|
| **Pure Pursuit** ||Not implemented
|
|
@@ -106,7 +120,7 @@ In the following demos, the blue robot 1 is the `CircularRobot`, and the orange
|
|
|
106
120
|
|
|
107
121
|
The visualization of the curve generators has not been implemented in current version. They can be visualized in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1).
|
|
108
122
|
|
|
109
|
-
|
|
|
123
|
+
|Generator|2D|3D|
|
|
110
124
|
| ------- | -------------------------------------------------------- | --------------------------------------------------------
|
|
111
125
|
| **Polynomia** | |Not implemented
|
|
112
126
|
| **Bezier** ||Not implemented
|
|
@@ -116,6 +130,24 @@ The visualization of the curve generators has not been implemented in current ve
|
|
|
116
130
|
| **Reeds-Shepp** ||Not implemented
|
|
117
131
|
| **Fem-Pos Smoother** ||Not implemented
|
|
118
132
|
|
|
133
|
+
# Future Works
|
|
134
|
+
|
|
135
|
+
* N-D controllers (path-trackers).
|
|
136
|
+
|
|
137
|
+
* Path planning for robotic arms.
|
|
138
|
+
|
|
139
|
+
* Path planning on topological map.
|
|
140
|
+
|
|
141
|
+
* Application on ROS2.
|
|
142
|
+
|
|
143
|
+
* Application in mainstream robot simulation environments (e.g. Gazebo, Carla, Airsim, PyBullet, MuJoCo, Issac Sim).
|
|
144
|
+
|
|
145
|
+
* More mainstream motion planning algorithms.
|
|
146
|
+
|
|
147
|
+
* Performance optimization.
|
|
148
|
+
|
|
149
|
+
Contributors are welcome! For trivial modification, please directly contribute to `dev` branch. For big modification, please [contact](#contact) us before you contribute.
|
|
150
|
+
|
|
119
151
|
# Contact
|
|
120
152
|
|
|
121
153
|
Long-term maintainers:
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "python-motion-planning"
|
|
7
|
-
version = "2.0.
|
|
7
|
+
version = "2.0.dev2"
|
|
8
8
|
description = "Motion planning algorithms for Python"
|
|
9
9
|
maintainers = [
|
|
10
10
|
{name = "Wu Maojia", email = "omige@mail.nwpu.edu.cn"},
|
|
@@ -18,7 +18,10 @@ dependencies = [
|
|
|
18
18
|
"scipy",
|
|
19
19
|
"matplotlib",
|
|
20
20
|
"osqp",
|
|
21
|
-
"gymnasium"
|
|
21
|
+
"gymnasium",
|
|
22
|
+
"faiss-cpu",
|
|
23
|
+
"pyvista",
|
|
24
|
+
"pyvistaqt"
|
|
22
25
|
]
|
|
23
26
|
classifiers = [
|
|
24
27
|
"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
@file: map.py
|
|
3
3
|
@author: Wu Maojia
|
|
4
|
-
@update: 2025.
|
|
4
|
+
@update: 2025.11.25
|
|
5
5
|
"""
|
|
6
6
|
from typing import Iterable, Union
|
|
7
7
|
from abc import ABC, abstractmethod
|
|
@@ -17,12 +17,10 @@ class BaseMap(ABC):
|
|
|
17
17
|
|
|
18
18
|
Args:
|
|
19
19
|
bounds: The size of map in the world (shape: (n, 2) (n>=2)). bounds[i, 0] means the lower bound of the world in the i-th dimension. bounds[i, 1] means the upper bound of the world in the i-th dimension.
|
|
20
|
-
dtype: data type of coordinates
|
|
21
20
|
"""
|
|
22
|
-
def __init__(self, bounds: Iterable
|
|
21
|
+
def __init__(self, bounds: Iterable) -> None:
|
|
23
22
|
super().__init__()
|
|
24
23
|
self._bounds = np.asarray(bounds, dtype=float)
|
|
25
|
-
self._dtype = dtype
|
|
26
24
|
|
|
27
25
|
if len(self._bounds.shape) != 2 or self._bounds.shape[0] <= 1 or self._bounds.shape[1] != 2:
|
|
28
26
|
raise ValueError(f"The shape of bounds must be (n, 2) (n>=2) instead of {self._bounds.shape}")
|
|
@@ -39,10 +37,6 @@ class BaseMap(ABC):
|
|
|
39
37
|
def dim(self) -> int:
|
|
40
38
|
return self._bounds.shape[0]
|
|
41
39
|
|
|
42
|
-
@property
|
|
43
|
-
def dtype(self) -> np.dtype:
|
|
44
|
-
return self._dtype
|
|
45
|
-
|
|
46
40
|
@abstractmethod
|
|
47
41
|
def map_to_world(self, point: tuple) -> tuple:
|
|
48
42
|
"""
|