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.
Files changed (74) hide show
  1. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/PKG-INFO +54 -19
  2. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/README.md +50 -18
  3. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/pyproject.toml +5 -2
  4. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/common/env/map/base_map.py +2 -8
  5. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/common/env/map/grid.py +74 -81
  6. python_motion_planning-2.0.dev2/src/python_motion_planning/common/utils/__init__.py +3 -0
  7. python_motion_planning-2.0.dev2/src/python_motion_planning/common/utils/child_tree.py +22 -0
  8. python_motion_planning-2.0.dev2/src/python_motion_planning/common/visualizer/__init__.py +3 -0
  9. python_motion_planning-2.0.dev2/src/python_motion_planning/common/visualizer/base_visualizer.py +165 -0
  10. 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
  11. python_motion_planning-2.0.dev2/src/python_motion_planning/common/visualizer/visualizer_3d.py +242 -0
  12. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/controller/base_controller.py +37 -4
  13. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/controller/path_tracker/__init__.py +2 -1
  14. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/controller/path_tracker/apf.py +22 -23
  15. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/controller/path_tracker/dwa.py +14 -17
  16. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/controller/path_tracker/path_tracker.py +4 -1
  17. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/controller/path_tracker/pid.py +7 -1
  18. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/controller/path_tracker/pure_pursuit.py +7 -1
  19. python_motion_planning-2.0.dev2/src/python_motion_planning/controller/path_tracker/rpp.py +111 -0
  20. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/path_planner/__init__.py +2 -1
  21. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/path_planner/base_path_planner.py +45 -11
  22. python_motion_planning-2.0.dev2/src/python_motion_planning/path_planner/graph_search/__init__.py +6 -0
  23. {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
  24. python_motion_planning-2.0.dev2/src/python_motion_planning/path_planner/graph_search/dijkstra.py +97 -0
  25. python_motion_planning-2.0.dev2/src/python_motion_planning/path_planner/graph_search/gbfs.py +100 -0
  26. python_motion_planning-2.0.dev2/src/python_motion_planning/path_planner/graph_search/jps.py +199 -0
  27. python_motion_planning-2.0.dev2/src/python_motion_planning/path_planner/graph_search/lazy_theta_star.py +113 -0
  28. {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
  29. python_motion_planning-2.0.dev2/src/python_motion_planning/path_planner/hybrid_search/__init__.py +1 -0
  30. python_motion_planning-2.0.dev2/src/python_motion_planning/path_planner/hybrid_search/voronoi_planner.py +204 -0
  31. python_motion_planning-2.0.dev2/src/python_motion_planning/path_planner/sample_search/__init__.py +3 -0
  32. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/path_planner/sample_search/rrt.py +70 -28
  33. python_motion_planning-2.0.dev2/src/python_motion_planning/path_planner/sample_search/rrt_connect.py +237 -0
  34. python_motion_planning-2.0.dev2/src/python_motion_planning/path_planner/sample_search/rrt_star.py +259 -0
  35. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning.egg-info/PKG-INFO +54 -19
  36. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning.egg-info/SOURCES.txt +11 -2
  37. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning.egg-info/requires.txt +3 -0
  38. python_motion_planning-2.0.dev1/src/python_motion_planning/common/env/robot/tmp.py +0 -404
  39. python_motion_planning-2.0.dev1/src/python_motion_planning/common/utils/__init__.py +0 -2
  40. python_motion_planning-2.0.dev1/src/python_motion_planning/common/visualizer/__init__.py +0 -1
  41. python_motion_planning-2.0.dev1/src/python_motion_planning/path_planner/graph_search/__init__.py +0 -3
  42. python_motion_planning-2.0.dev1/src/python_motion_planning/path_planner/graph_search/dijkstra.py +0 -97
  43. python_motion_planning-2.0.dev1/src/python_motion_planning/path_planner/sample_search/__init__.py +0 -2
  44. python_motion_planning-2.0.dev1/src/python_motion_planning/path_planner/sample_search/rrt_star.py +0 -209
  45. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/LICENSE +0 -0
  46. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/setup.cfg +0 -0
  47. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/__init__.py +0 -0
  48. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/common/__init__.py +0 -0
  49. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/common/env/__init__.py +0 -0
  50. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/common/env/map/__init__.py +0 -0
  51. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/common/env/node.py +0 -0
  52. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/common/env/robot/__init__.py +0 -0
  53. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/common/env/robot/base_robot.py +0 -0
  54. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/common/env/robot/circular_robot.py +0 -0
  55. {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
  56. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/common/env/types.py +0 -0
  57. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/common/env/world/__init__.py +0 -0
  58. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/common/env/world/base_world.py +0 -0
  59. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/common/env/world/toy_simulator.py +0 -0
  60. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/common/utils/frame_transformer.py +0 -0
  61. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/common/utils/geometry.py +0 -0
  62. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/controller/__init__.py +0 -0
  63. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/controller/random_controller.py +0 -0
  64. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/curve_generator/__init__.py +0 -0
  65. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/curve_generator/bezier_curve.py +0 -0
  66. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/curve_generator/bspline_curve.py +0 -0
  67. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/curve_generator/cubic_spline.py +0 -0
  68. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/curve_generator/curve.py +0 -0
  69. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/curve_generator/dubins_curve.py +0 -0
  70. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/curve_generator/fem_pos_smooth.py +0 -0
  71. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/curve_generator/polynomial_curve.py +0 -0
  72. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning/curve_generator/reeds_shepp.py +0 -0
  73. {python_motion_planning-2.0.dev1 → python_motion_planning-2.0.dev2}/src/python_motion_planning.egg-info/dependency_links.txt +0 -0
  74. {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.dev1
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
- This repository provides the implementations of common `Motion planning` algorithms. **Your stars and forks are welcome**. Submitting pull requests or joining our development team are also welcome. For trivial modification, please directly contribute to `dev` branch. For big modification, please [contact](#contact) us before you contribute.
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
- | └─sample_search
729
- └─curve_generation
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.dev1
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
- **GBFS**|Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
756
- **Dijkstra**|![dijkstra_2d.svg](assets/dijkstra_2d.svg)|![dijkstra_3d.svg](assets/dijkstra_3d.svg)
757
- **A\***|![a_star_2d.svg](assets/a_star_2d.svg)|![a_star_3d.svg](assets/a_star_3d.svg)
758
- **JPS**|Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
761
+ **Dijkstra**|![dijkstra_2d.svg](assets/dijkstra_2d.svg)|![dijkstra_3d.png](assets/dijkstra_3d.png)
762
+ **GBFS**|![gbfs_2d.svg](assets/gbfs_2d.svg)|![gbfs_3d.png](assets/gbfs_3d.png)
763
+ **A\***|![a_star_2d.svg](assets/a_star_2d.svg)|![a_star_3d.png](assets/a_star_3d.png)
764
+ **JPS**|![jps_2d.svg](assets/jps_2d.svg)|![jps_3d.png](assets/jps_3d.png)
765
+ **Theta\***|![theta_star_2d.svg](assets/theta_star_2d.svg)|![theta_star_3d.png](assets/theta_star_3d.png)
766
+ **Lazy Theta\***|![lazy_theta_star_2d.svg](assets/lazy_theta_star_2d.svg)|![lazy_theta_star_3d.png](assets/lazy_theta_star_3d.png)
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\***|![theta_star_2d.svg](assets/theta_star_2d.svg)|![theta_star_3d.svg](assets/theta_star_3d.svg)
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
- **Voronoi**|Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
767
- **RRT**|![rrt_2d.svg](assets/rrt_2d.svg)|![rrt_3d.svg](assets/rrt_3d.svg)
768
- **RRT\***|![rrt_star_2d.svg](assets/rrt_star_2d.svg)|![rrt_star_3d.svg](assets/rrt_star_3d.svg)
771
+
772
+ ### Sample Search
773
+ |Planner|2D Grid|3D Grid
774
+ |-------|-------|-------
775
+ **RRT**|![rrt_2d.svg](assets/rrt_2d.svg)|![rrt_3d.png](assets/rrt_3d.png)
776
+ **RRT\***|![rrt_star_2d.svg](assets/rrt_star_2d.svg)|![rrt_star_3d.png](assets/rrt_star_3d.png)
777
+ **RRT-Connect**|![rrt_connect_2d.svg](assets/rrt_connect_2d.svg)|![rrt_connect_3d.png](assets/rrt_connect_3d.png)
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
- **RRT-Connect**|Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
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**|![voronoi_planner_2d.svg](assets/voronoi_planner_2d.svg)|![voronoi_planner_3d.png](assets/voronoi_planner_3d.png)
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
- |Planner|2D|3D
799
+ |Controller|2D|3D
783
800
  |-------|-------|-------
784
801
  |**Path Trakcer**|![path_tracker_2d.gif](assets/path_tracker_2d.gif)|Not implemented
785
802
  | **Pure Pursuit** |![pure_pursuit_2d.gif](assets/pure_pursuit_2d.gif)|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
- | Planner |2D|3D|
819
+ |Generator|2D|3D|
803
820
  | ------- | -------------------------------------------------------- | --------------------------------------------------------
804
821
  | **Polynomia** | ![polynomial_curve_python.gif](assets/polynomial_curve_python.gif)|Not implemented
805
822
  | **Bezier** |![bezier_curve_python.png](assets/bezier_curve_python.png)|Not implemented
@@ -809,6 +826,24 @@ The visualization of the curve generators has not been implemented in current ve
809
826
  | **Reeds-Shepp** |![reeds_shepp_python.png](assets/reeds_shepp_python.gif)|Not implemented
810
827
  | **Fem-Pos Smoother** |![fem_pos_smoother_python.png](assets/fem_pos_smoother_python.png)|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
- This repository provides the implementations of common `Motion planning` algorithms. **Your stars and forks are welcome**. Submitting pull requests or joining our development team are also welcome. For trivial modification, please directly contribute to `dev` branch. For big modification, please [contact](#contact) us before you contribute.
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
- | └─sample_search
36
- └─curve_generation
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.dev1
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
- **GBFS**|Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
63
- **Dijkstra**|![dijkstra_2d.svg](assets/dijkstra_2d.svg)|![dijkstra_3d.svg](assets/dijkstra_3d.svg)
64
- **A\***|![a_star_2d.svg](assets/a_star_2d.svg)|![a_star_3d.svg](assets/a_star_3d.svg)
65
- **JPS**|Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
65
+ **Dijkstra**|![dijkstra_2d.svg](assets/dijkstra_2d.svg)|![dijkstra_3d.png](assets/dijkstra_3d.png)
66
+ **GBFS**|![gbfs_2d.svg](assets/gbfs_2d.svg)|![gbfs_3d.png](assets/gbfs_3d.png)
67
+ **A\***|![a_star_2d.svg](assets/a_star_2d.svg)|![a_star_3d.png](assets/a_star_3d.png)
68
+ **JPS**|![jps_2d.svg](assets/jps_2d.svg)|![jps_3d.png](assets/jps_3d.png)
69
+ **Theta\***|![theta_star_2d.svg](assets/theta_star_2d.svg)|![theta_star_3d.png](assets/theta_star_3d.png)
70
+ **Lazy Theta\***|![lazy_theta_star_2d.svg](assets/lazy_theta_star_2d.svg)|![lazy_theta_star_3d.png](assets/lazy_theta_star_3d.png)
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\***|![theta_star_2d.svg](assets/theta_star_2d.svg)|![theta_star_3d.svg](assets/theta_star_3d.svg)
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
- **Voronoi**|Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
74
- **RRT**|![rrt_2d.svg](assets/rrt_2d.svg)|![rrt_3d.svg](assets/rrt_3d.svg)
75
- **RRT\***|![rrt_star_2d.svg](assets/rrt_star_2d.svg)|![rrt_star_3d.svg](assets/rrt_star_3d.svg)
75
+
76
+ ### Sample Search
77
+ |Planner|2D Grid|3D Grid
78
+ |-------|-------|-------
79
+ **RRT**|![rrt_2d.svg](assets/rrt_2d.svg)|![rrt_3d.png](assets/rrt_3d.png)
80
+ **RRT\***|![rrt_star_2d.svg](assets/rrt_star_2d.svg)|![rrt_star_3d.png](assets/rrt_star_3d.png)
81
+ **RRT-Connect**|![rrt_connect_2d.svg](assets/rrt_connect_2d.svg)|![rrt_connect_3d.png](assets/rrt_connect_3d.png)
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
- **RRT-Connect**|Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
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**|![voronoi_planner_2d.svg](assets/voronoi_planner_2d.svg)|![voronoi_planner_3d.png](assets/voronoi_planner_3d.png)
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
- |Planner|2D|3D
103
+ |Controller|2D|3D
90
104
  |-------|-------|-------
91
105
  |**Path Trakcer**|![path_tracker_2d.gif](assets/path_tracker_2d.gif)|Not implemented
92
106
  | **Pure Pursuit** |![pure_pursuit_2d.gif](assets/pure_pursuit_2d.gif)|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
- | Planner |2D|3D|
123
+ |Generator|2D|3D|
110
124
  | ------- | -------------------------------------------------------- | --------------------------------------------------------
111
125
  | **Polynomia** | ![polynomial_curve_python.gif](assets/polynomial_curve_python.gif)|Not implemented
112
126
  | **Bezier** |![bezier_curve_python.png](assets/bezier_curve_python.png)|Not implemented
@@ -116,6 +130,24 @@ The visualization of the curve generators has not been implemented in current ve
116
130
  | **Reeds-Shepp** |![reeds_shepp_python.png](assets/reeds_shepp_python.gif)|Not implemented
117
131
  | **Fem-Pos Smoother** |![fem_pos_smoother_python.png](assets/fem_pos_smoother_python.png)|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.dev1"
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.10.3
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, dtype: np.dtype) -> None:
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
  """