python-motion-planning 1.1.1__tar.gz → 2.0__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 (131) hide show
  1. {python_motion_planning-1.1.1 → python_motion_planning-2.0}/PKG-INFO +112 -153
  2. python_motion_planning-2.0/README.md +158 -0
  3. {python_motion_planning-1.1.1 → python_motion_planning-2.0}/pyproject.toml +7 -5
  4. python_motion_planning-2.0/src/python_motion_planning/__init__.py +4 -0
  5. python_motion_planning-2.0/src/python_motion_planning/common/__init__.py +3 -0
  6. python_motion_planning-2.0/src/python_motion_planning/common/env/__init__.py +6 -0
  7. python_motion_planning-2.0/src/python_motion_planning/common/env/map/__init__.py +2 -0
  8. python_motion_planning-2.0/src/python_motion_planning/common/env/map/base_map.py +119 -0
  9. python_motion_planning-2.0/src/python_motion_planning/common/env/map/grid.py +562 -0
  10. python_motion_planning-2.0/src/python_motion_planning/common/env/node.py +111 -0
  11. python_motion_planning-2.0/src/python_motion_planning/common/env/robot/__init__.py +3 -0
  12. python_motion_planning-2.0/src/python_motion_planning/common/env/robot/base_robot.py +214 -0
  13. python_motion_planning-2.0/src/python_motion_planning/common/env/robot/circular_robot.py +47 -0
  14. python_motion_planning-2.0/src/python_motion_planning/common/env/robot/diff_drive_robot.py +109 -0
  15. python_motion_planning-2.0/src/python_motion_planning/common/env/types.py +19 -0
  16. python_motion_planning-2.0/src/python_motion_planning/common/env/world/__init__.py +1 -0
  17. python_motion_planning-2.0/src/python_motion_planning/common/env/world/base_world.py +120 -0
  18. python_motion_planning-2.0/src/python_motion_planning/common/env/world/toy_simulator.py +206 -0
  19. python_motion_planning-2.0/src/python_motion_planning/common/utils/__init__.py +3 -0
  20. python_motion_planning-2.0/src/python_motion_planning/common/utils/child_tree.py +22 -0
  21. python_motion_planning-2.0/src/python_motion_planning/common/utils/frame_transformer.py +218 -0
  22. python_motion_planning-2.0/src/python_motion_planning/common/utils/geometry.py +94 -0
  23. python_motion_planning-2.0/src/python_motion_planning/common/visualizer/__init__.py +3 -0
  24. python_motion_planning-2.0/src/python_motion_planning/common/visualizer/base_visualizer.py +165 -0
  25. python_motion_planning-2.0/src/python_motion_planning/common/visualizer/visualizer_2d.py +406 -0
  26. python_motion_planning-2.0/src/python_motion_planning/common/visualizer/visualizer_3d.py +242 -0
  27. python_motion_planning-2.0/src/python_motion_planning/controller/__init__.py +3 -0
  28. python_motion_planning-2.0/src/python_motion_planning/controller/base_controller.py +191 -0
  29. python_motion_planning-2.0/src/python_motion_planning/controller/path_tracker/__init__.py +6 -0
  30. python_motion_planning-2.0/src/python_motion_planning/controller/path_tracker/apf.py +231 -0
  31. python_motion_planning-2.0/src/python_motion_planning/controller/path_tracker/dwa.py +250 -0
  32. python_motion_planning-2.0/src/python_motion_planning/controller/path_tracker/path_tracker.py +260 -0
  33. python_motion_planning-2.0/src/python_motion_planning/controller/path_tracker/pid.py +82 -0
  34. python_motion_planning-2.0/src/python_motion_planning/controller/path_tracker/pure_pursuit.py +71 -0
  35. python_motion_planning-2.0/src/python_motion_planning/controller/path_tracker/rpp.py +111 -0
  36. python_motion_planning-2.0/src/python_motion_planning/controller/random_controller.py +27 -0
  37. python_motion_planning-2.0/src/python_motion_planning/path_planner/__init__.py +4 -0
  38. python_motion_planning-2.0/src/python_motion_planning/path_planner/base_path_planner.py +122 -0
  39. python_motion_planning-2.0/src/python_motion_planning/path_planner/graph_search/__init__.py +6 -0
  40. python_motion_planning-2.0/src/python_motion_planning/path_planner/graph_search/a_star.py +94 -0
  41. python_motion_planning-2.0/src/python_motion_planning/path_planner/graph_search/dijkstra.py +97 -0
  42. python_motion_planning-2.0/src/python_motion_planning/path_planner/graph_search/gbfs.py +100 -0
  43. python_motion_planning-2.0/src/python_motion_planning/path_planner/graph_search/jps.py +199 -0
  44. python_motion_planning-2.0/src/python_motion_planning/path_planner/graph_search/lazy_theta_star.py +113 -0
  45. python_motion_planning-2.0/src/python_motion_planning/path_planner/graph_search/theta_star.py +116 -0
  46. python_motion_planning-2.0/src/python_motion_planning/path_planner/hybrid_search/__init__.py +1 -0
  47. python_motion_planning-2.0/src/python_motion_planning/path_planner/hybrid_search/voronoi_planner.py +204 -0
  48. python_motion_planning-2.0/src/python_motion_planning/path_planner/sample_search/__init__.py +3 -0
  49. python_motion_planning-2.0/src/python_motion_planning/path_planner/sample_search/rrt.py +243 -0
  50. python_motion_planning-2.0/src/python_motion_planning/path_planner/sample_search/rrt_connect.py +237 -0
  51. python_motion_planning-2.0/src/python_motion_planning/path_planner/sample_search/rrt_star.py +279 -0
  52. python_motion_planning-2.0/src/python_motion_planning/traj_optimizer/__init__.py +2 -0
  53. python_motion_planning-2.0/src/python_motion_planning/traj_optimizer/base_curve_generator.py +53 -0
  54. python_motion_planning-2.0/src/python_motion_planning/traj_optimizer/curve_generator/__init__.py +2 -0
  55. python_motion_planning-2.0/src/python_motion_planning/traj_optimizer/curve_generator/point_based/__init__.py +2 -0
  56. python_motion_planning-2.0/src/python_motion_planning/traj_optimizer/curve_generator/point_based/bspline.py +256 -0
  57. python_motion_planning-2.0/src/python_motion_planning/traj_optimizer/curve_generator/point_based/cubic_spline.py +115 -0
  58. python_motion_planning-2.0/src/python_motion_planning/traj_optimizer/curve_generator/pose_based/__init__.py +4 -0
  59. python_motion_planning-2.0/src/python_motion_planning/traj_optimizer/curve_generator/pose_based/bezier.py +121 -0
  60. python_motion_planning-2.0/src/python_motion_planning/traj_optimizer/curve_generator/pose_based/dubins.py +355 -0
  61. python_motion_planning-2.0/src/python_motion_planning/traj_optimizer/curve_generator/pose_based/polynomial.py +197 -0
  62. python_motion_planning-2.0/src/python_motion_planning/traj_optimizer/curve_generator/pose_based/reeds_shepp.py +606 -0
  63. {python_motion_planning-1.1.1 → python_motion_planning-2.0}/src/python_motion_planning.egg-info/PKG-INFO +112 -153
  64. python_motion_planning-2.0/src/python_motion_planning.egg-info/SOURCES.txt +67 -0
  65. python_motion_planning-2.0/src/python_motion_planning.egg-info/requires.txt +8 -0
  66. {python_motion_planning-1.1.1 → python_motion_planning-2.0}/src/python_motion_planning.egg-info/top_level.txt +1 -0
  67. python_motion_planning-1.1.1/README.md +0 -201
  68. python_motion_planning-1.1.1/src/python_motion_planning/__init__.py +0 -4
  69. python_motion_planning-1.1.1/src/python_motion_planning/curve_generation/__init__.py +0 -9
  70. python_motion_planning-1.1.1/src/python_motion_planning/curve_generation/bezier_curve.py +0 -131
  71. python_motion_planning-1.1.1/src/python_motion_planning/curve_generation/bspline_curve.py +0 -271
  72. python_motion_planning-1.1.1/src/python_motion_planning/curve_generation/cubic_spline.py +0 -128
  73. python_motion_planning-1.1.1/src/python_motion_planning/curve_generation/curve.py +0 -64
  74. python_motion_planning-1.1.1/src/python_motion_planning/curve_generation/dubins_curve.py +0 -348
  75. python_motion_planning-1.1.1/src/python_motion_planning/curve_generation/fem_pos_smooth.py +0 -114
  76. python_motion_planning-1.1.1/src/python_motion_planning/curve_generation/polynomial_curve.py +0 -226
  77. python_motion_planning-1.1.1/src/python_motion_planning/curve_generation/reeds_shepp.py +0 -736
  78. python_motion_planning-1.1.1/src/python_motion_planning/global_planner/__init__.py +0 -3
  79. python_motion_planning-1.1.1/src/python_motion_planning/global_planner/evolutionary_search/__init__.py +0 -4
  80. python_motion_planning-1.1.1/src/python_motion_planning/global_planner/evolutionary_search/aco.py +0 -186
  81. python_motion_planning-1.1.1/src/python_motion_planning/global_planner/evolutionary_search/evolutionary_search.py +0 -87
  82. python_motion_planning-1.1.1/src/python_motion_planning/global_planner/evolutionary_search/pso.py +0 -356
  83. python_motion_planning-1.1.1/src/python_motion_planning/global_planner/graph_search/__init__.py +0 -28
  84. python_motion_planning-1.1.1/src/python_motion_planning/global_planner/graph_search/a_star.py +0 -124
  85. python_motion_planning-1.1.1/src/python_motion_planning/global_planner/graph_search/d_star.py +0 -291
  86. python_motion_planning-1.1.1/src/python_motion_planning/global_planner/graph_search/d_star_lite.py +0 -188
  87. python_motion_planning-1.1.1/src/python_motion_planning/global_planner/graph_search/dijkstra.py +0 -85
  88. python_motion_planning-1.1.1/src/python_motion_planning/global_planner/graph_search/gbfs.py +0 -86
  89. python_motion_planning-1.1.1/src/python_motion_planning/global_planner/graph_search/graph_search.py +0 -87
  90. python_motion_planning-1.1.1/src/python_motion_planning/global_planner/graph_search/jps.py +0 -165
  91. python_motion_planning-1.1.1/src/python_motion_planning/global_planner/graph_search/lazy_theta_star.py +0 -114
  92. python_motion_planning-1.1.1/src/python_motion_planning/global_planner/graph_search/lpa_star.py +0 -230
  93. python_motion_planning-1.1.1/src/python_motion_planning/global_planner/graph_search/s_theta_star.py +0 -133
  94. python_motion_planning-1.1.1/src/python_motion_planning/global_planner/graph_search/theta_star.py +0 -171
  95. python_motion_planning-1.1.1/src/python_motion_planning/global_planner/graph_search/voronoi.py +0 -200
  96. python_motion_planning-1.1.1/src/python_motion_planning/global_planner/sample_search/__init__.py +0 -6
  97. python_motion_planning-1.1.1/src/python_motion_planning/global_planner/sample_search/informed_rrt.py +0 -152
  98. python_motion_planning-1.1.1/src/python_motion_planning/global_planner/sample_search/rrt.py +0 -151
  99. python_motion_planning-1.1.1/src/python_motion_planning/global_planner/sample_search/rrt_connect.py +0 -147
  100. python_motion_planning-1.1.1/src/python_motion_planning/global_planner/sample_search/rrt_star.py +0 -77
  101. python_motion_planning-1.1.1/src/python_motion_planning/global_planner/sample_search/sample_search.py +0 -135
  102. python_motion_planning-1.1.1/src/python_motion_planning/local_planner/__init__.py +0 -15
  103. python_motion_planning-1.1.1/src/python_motion_planning/local_planner/apf.py +0 -144
  104. python_motion_planning-1.1.1/src/python_motion_planning/local_planner/dwa.py +0 -212
  105. python_motion_planning-1.1.1/src/python_motion_planning/local_planner/local_planner.py +0 -262
  106. python_motion_planning-1.1.1/src/python_motion_planning/local_planner/lqr.py +0 -146
  107. python_motion_planning-1.1.1/src/python_motion_planning/local_planner/mpc.py +0 -214
  108. python_motion_planning-1.1.1/src/python_motion_planning/local_planner/pid.py +0 -158
  109. python_motion_planning-1.1.1/src/python_motion_planning/local_planner/rpp.py +0 -147
  110. python_motion_planning-1.1.1/src/python_motion_planning/utils/__init__.py +0 -19
  111. python_motion_planning-1.1.1/src/python_motion_planning/utils/agent/__init__.py +0 -0
  112. python_motion_planning-1.1.1/src/python_motion_planning/utils/agent/agent.py +0 -135
  113. python_motion_planning-1.1.1/src/python_motion_planning/utils/environment/__init__.py +0 -0
  114. python_motion_planning-1.1.1/src/python_motion_planning/utils/environment/env.py +0 -117
  115. python_motion_planning-1.1.1/src/python_motion_planning/utils/environment/node.py +0 -85
  116. python_motion_planning-1.1.1/src/python_motion_planning/utils/environment/point2d.py +0 -96
  117. python_motion_planning-1.1.1/src/python_motion_planning/utils/environment/pose2d.py +0 -91
  118. python_motion_planning-1.1.1/src/python_motion_planning/utils/helper/__init__.py +0 -3
  119. python_motion_planning-1.1.1/src/python_motion_planning/utils/helper/math_helper.py +0 -65
  120. python_motion_planning-1.1.1/src/python_motion_planning/utils/planner/__init__.py +0 -0
  121. python_motion_planning-1.1.1/src/python_motion_planning/utils/planner/control_factory.py +0 -27
  122. python_motion_planning-1.1.1/src/python_motion_planning/utils/planner/curve_factory.py +0 -29
  123. python_motion_planning-1.1.1/src/python_motion_planning/utils/planner/planner.py +0 -40
  124. python_motion_planning-1.1.1/src/python_motion_planning/utils/planner/search_factory.py +0 -51
  125. python_motion_planning-1.1.1/src/python_motion_planning/utils/plot/__init__.py +0 -0
  126. python_motion_planning-1.1.1/src/python_motion_planning/utils/plot/plot.py +0 -274
  127. python_motion_planning-1.1.1/src/python_motion_planning.egg-info/SOURCES.txt +0 -67
  128. python_motion_planning-1.1.1/src/python_motion_planning.egg-info/requires.txt +0 -6
  129. {python_motion_planning-1.1.1 → python_motion_planning-2.0}/LICENSE +0 -0
  130. {python_motion_planning-1.1.1 → python_motion_planning-2.0}/setup.cfg +0 -0
  131. {python_motion_planning-1.1.1 → python_motion_planning-2.0}/src/python_motion_planning.egg-info/dependency_links.txt +0 -0
@@ -1,8 +1,8 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-motion-planning
3
- Version: 1.1.1
3
+ Version: 2.0
4
4
  Summary: Motion planning algorithms for Python
5
- Maintainer-email: Yang Haodong <913982779@qq.com>, Wu Maojia <2223942063@qq.com>
5
+ Maintainer-email: Wu Maojia <omige@mail.nwpu.edu.cn>, Yang Haodong <913982779@qq.com>
6
6
  License: GNU GENERAL PUBLIC LICENSE
7
7
  Version 3, 29 June 2007
8
8
 
@@ -687,14 +687,18 @@ License-File: LICENSE
687
687
  Requires-Dist: numpy
688
688
  Requires-Dist: scipy
689
689
  Requires-Dist: matplotlib
690
- Requires-Dist: cvxopt
691
690
  Requires-Dist: osqp
692
- Requires-Dist: tqdm
691
+ Requires-Dist: gymnasium
692
+ Requires-Dist: faiss-cpu
693
+ Requires-Dist: pyvista
694
+ Requires-Dist: pyvistaqt
693
695
  Dynamic: license-file
694
696
 
695
697
 
696
698
  # Introduction
697
699
 
700
+ `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.
701
+
698
702
  `Motion planning` plans the state sequence of the robot without conflict between the start and goal.
699
703
 
700
704
  `Motion planning` mainly includes `Path planning` and `Trajectory planning`.
@@ -702,12 +706,12 @@ Dynamic: license-file
702
706
  * `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.
703
707
  * `Trajectory planning`: It plans the motion state to approach the global path based on kinematics, dynamics constraints and path sequence.
704
708
 
705
- This repository provides the implementations of common `Motion planning` algorithms. **Your stars and forks are welcome**. Maintaining this repository requires a huge amount of work. **Therefore, you are also welcome to contribute to this repository by opening issues, submitting pull requests or joining our development team**.
706
-
707
709
  The theory analysis can be found at [motion-planning](https://blog.csdn.net/frigidwinter/category_11410243.html).
708
710
 
709
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.
710
712
 
713
+ **Your stars and forks are welcome!**
714
+
711
715
  # Quick Start
712
716
 
713
717
  ## Overview
@@ -715,28 +719,25 @@ The source file structure is shown below
715
719
 
716
720
  ```
717
721
  python_motion_planning
718
- ├─global_planner
722
+ ├─common
723
+ | ├─env
724
+ | | ├─map
725
+ | | ├─robot
726
+ | | └─world
727
+ | ├─utils
728
+ | └─visualizer
729
+ ├─controller
730
+ | └─path_tracker
731
+ ├─path_planner
719
732
  | ├─graph_search
720
733
  | ├─sample_search
721
- | └─evolutionary_search
722
- ├─local_planner
723
- ├─curve_generation
724
- └─utils
725
- ├─agent
726
- ├─environment
727
- ├─helper
728
- ├─planner
729
- └─plot
734
+ | └─hybrid_search
735
+ └─traj_optimizer
736
+ | └─curve_generator
730
737
  ```
731
738
 
732
- * The global planning algorithm implementation is in the folder `global_planner` with `graph_search`, `sample_search` and `evolutionary search`.
733
-
734
- * The local planning algorithm implementation is in the folder `local_planner`.
735
-
736
- * The curve generation algorithm implementation is in the folder `curve_generation`.
737
-
738
739
  ## Install
739
- *(Optional)* The code was tested in python=3.10. We recommend using `conda` to install the dependencies.
740
+ *(Optional)* The code was tested in python=3.10, though other similar versions should also work. We recommend using `conda` to install the dependencies.
740
741
 
741
742
  ```shell
742
743
  conda create -n pmp python=3.10
@@ -750,146 +751,104 @@ pip install python-motion-planning
750
751
  ```
751
752
 
752
753
  ## Run
753
- Below are some simple examples.
754
-
755
- 1. Run A* with discrete environment (Grid)
756
- ```python
757
- import python_motion_planning as pmp
758
-
759
- # Create environment with custom obstacles
760
- env = pmp.Grid(51, 31)
761
- obstacles = env.obstacles
762
- for i in range(10, 21):
763
- obstacles.add((i, 15))
764
- for i in range(15):
765
- obstacles.add((20, i))
766
- for i in range(15, 30):
767
- obstacles.add((30, i))
768
- for i in range(16):
769
- obstacles.add((40, i))
770
- env.update(obstacles)
771
-
772
- planner = pmp.AStar(start=(5, 5), goal=(45, 25), env=env) # create planner
773
- cost, path, expand = planner.plan() # plan
774
- planner.plot.animation(path, str(planner), cost, expand) # animation
775
- ```
776
-
777
- 2. Run RRT with continuous environment (Map)
778
- ```python
779
- import python_motion_planning as pmp
780
-
781
- # Create environment with custom obstacles
782
- env = pmp.Map(51, 31)
783
- obs_rect = [
784
- [14, 12, 8, 2],
785
- [18, 22, 8, 3],
786
- [26, 7, 2, 12],
787
- [32, 14, 10, 2]
788
- ]
789
- obs_circ = [
790
- [7, 12, 3],
791
- [46, 20, 2],
792
- [15, 5, 2],
793
- [37, 7, 3],
794
- [37, 23, 3]
795
- ]
796
- env.update(obs_rect=obs_rect, obs_circ=obs_circ)
797
-
798
- planner = pmp.RRT(start=(18, 8), goal=(37, 18), env=env) # create planner
799
- cost, path, expand = planner.plan() # plan
800
- planner.plot.animation(path, str(planner), cost, expand) # animation
801
- ```
802
754
 
803
- More examples can be found in the folder `examples` in the repository.
804
-
805
- For more details, you can refer to [online documentation](https://ai-winter.github.io/python_motion_planning/).
806
-
807
- # Version
808
- ## Global Planner
809
-
810
- Planner | Version | Animation
811
- ------------ |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| ---------
812
- **GBFS** | [![Status](https://img.shields.io/badge/done-v1.0-brightgreen)](https://github.com/ai-winter/python_motion_planning/blob/master/global_planner/graph_search/gbfs.py) | ![gbfs_python.png](assets/gbfs_python.png)
813
- **Dijkstra** | [![Status](https://img.shields.io/badge/done-v1.0-brightgreen)](https://github.com/ai-winter/python_motion_planning/blob/master/global_planner/graph_search/dijkstra.py) | ![dijkstra_python.png](assets/dijkstra_python.png)
814
- **A*** | [![Status](https://img.shields.io/badge/done-v1.0-brightgreen)](https://github.com/ai-winter/python_motion_planning/blob/master/global_planner/graph_search/a_star.py) | ![a_star_python.png](assets/a_star_python.png)
815
- **JPS** | [![Status](https://img.shields.io/badge/done-v1.0-brightgreen)](https://github.com/ai-winter/python_motion_planning/blob/master/global_planner/graph_search/jps.py) | ![jps_python.png](assets/jps_python.png)
816
- **D*** | [![Status](https://img.shields.io/badge/done-v1.0-brightgreen)](https://github.com/ai-winter/python_motion_planning/blob/master/global_planner/graph_search/d_star.py) | ![d_star_python.png](assets/d_star_python.png)
817
- **LPA*** | [![Status](https://img.shields.io/badge/done-v1.0-brightgreen)](https://github.com/ai-winter/python_motion_planning/blob/master/global_planner/graph_search/lpa_star.py) | ![lpa_star_python.png](assets/lpa_star_python.png)
818
- **D\* Lite** | [![Status](https://img.shields.io/badge/done-v1.0-brightgreen)](https://github.com/ai-winter/python_motion_planning/blob/master/global_planner/graph_search/d_star_lite.py) | ![d_star_lite_python.png](assets/d_star_lite_python.png)
819
- **Theta\*** | [![Status](https://img.shields.io/badge/done-v1.0-brightgreen)](https://github.com/ai-winter/python_motion_planning/blob/master/global_planner/graph_search/theta_star.py) | ![theta_star_python.png](assets/theta_star_python.png)
820
- **Lazy Theta\*** | [![Status](https://img.shields.io/badge/done-v1.0-brightgreen)](https://github.com/ai-winter/python_motion_planning/blob/master/global_planner/graph_search/lazy_theta_star.py) | ![lazy_theta_star_python.png](assets/lazy_theta_star_python.png)
821
- **S-Theta\*** | [![Status](https://img.shields.io/badge/done-v1.0-brightgreen)](https://github.com/ai-winter/python_motion_planning/blob/master/global_planner/graph_search/s_theta_star.py) | ![s_theta_star_python.png](assets/s_theta_star_python.png)
822
- **Anya** | [![Status](https://img.shields.io/badge/develop-v1.0-red)](https://github.com/ai-winter/python_motion_planning/blob/master/global_planner/graph_search/anya.py) | ![Status](https://img.shields.io/badge/gif-none-yellow)
823
- **Voronoi** | [![Status](https://img.shields.io/badge/done-v1.0-brightgreen)](https://github.com/ai-winter/python_motion_planning/blob/master/global_planner/graph_search/voronoi.py) | ![voronoi_python.png](assets/voronoi_python.png)
824
- **RRT** | [![Status](https://img.shields.io/badge/done-v1.0-brightgreen)](https://github.com/ai-winter/python_motion_planning/blob/master/global_planner/sample_search/rrt.py) | ![rrt_python.png](assets/rrt_python.png)
825
- **RRT*** | [![Status](https://img.shields.io/badge/done-v1.0-brightgreen)](https://github.com/ai-winter/python_motion_planning/blob/master/global_planner/sample_search/rrt_star.py) | ![rrt_star_python.png](assets/rrt_star_python.png)
826
- **Informed RRT** | [![Status](https://img.shields.io/badge/done-v1.0-brightgreen)](https://github.com/ai-winter/python_motion_planning/blob/master/global_planner/sample_search/informed_rrt.py) | ![informed_rrt_python.png](assets/informed_rrt_python.png)
827
- **RRT-Connect** | [![Status](https://img.shields.io/badge/done-v1.0-brightgreen)](https://github.com/ai-winter/python_motion_planning/blob/master/global_planner/sample_search/rrt_connect.py) | ![rrt_connect_python.png](assets/rrt_connect_python.png)
828
- | **ACO** | [![Status](https://img.shields.io/badge/done-v1.0-brightgreen)](https://github.com/ai-winter/python_motion_planning/blob/master/global_planner/evolutionary_search/aco.py) | ![aco_python.png](assets/aco_python.png)
829
- | **GA** | ![Status](https://img.shields.io/badge/develop-v1.0-red) | ![Status](https://img.shields.io/badge/gif-none-yellow)
830
- | **PSO** | [![Status](https://img.shields.io/badge/done-v1.0-brightgreen)](https://github.com/ai-winter/python_motion_planning/blob/master/global_planner/evolutionary_search/pso.py) | ![pso_python.png](assets/pso_python.svg) ![pso_python_cost.png](assets/pso_python_cost.svg)
831
-
832
-
833
- ## Local Planner
834
-
835
- | Planner | Version | Animation
836
- |-------------|--------------------------------------------------------------------------------------------------------------------------------------------------------| --------------------------------------------------
837
- | **PID** | [![Status](https://img.shields.io/badge/done-v1.0-brightgreen)](https://github.com/ai-winter/python_motion_planning/blob/master/local_planner/pid.py) | ![pid_python.svg](assets/pid_python.svg)
838
- | **APF** | [![Status](https://img.shields.io/badge/done-v1.0-brightgreen)](https://github.com/ai-winter/python_motion_planning/blob/master/local_planner/apf.py) | ![apf_python.svg](assets/apf_python.svg)
839
- | **DWA** | [![Status](https://img.shields.io/badge/done-v1.0-brightgreen)](https://github.com/ai-winter/python_motion_planning/blob/master/local_planner/dwa.py) | ![dwa_python.svg](assets/dwa_python.svg)
840
- | **RPP** | [![Status](https://img.shields.io/badge/done-v1.0-brightgreen)](https://github.com/ai-winter/python_motion_planning/blob/master/local_planner/rpp.py) | ![rpp_python.svg](assets/rpp_python.svg)
841
- | **LQR** | [![Status](https://img.shields.io/badge/done-v1.0-brightgreen)](https://github.com/ai-winter/python_motion_planning/blob/master/local_planner/lqr.py) | ![lqr_python.svg](assets/lqr_python.svg)
842
- | **TEB** | ![Status](https://img.shields.io/badge/develop-v1.0-red) | ![Status](https://img.shields.io/badge/gif-none-yellow)
843
- | **MPC** | [![Status](https://img.shields.io/badge/done-v1.0-brightgreen)](https://github.com/ai-winter/python_motion_planning/blob/master/local_planner/mpc.py) | ![mpc_python.svg](assets/mpc_python.svg)
844
- | **MPPI** | ![Status](https://img.shields.io/badge/develop-v1.0-red) |![Status](https://img.shields.io/badge/gif-none-yellow)
845
- | **Lattice** | ![Status](https://img.shields.io/badge/develop-v1.0-red) |![Status](https://img.shields.io/badge/gif-none-yellow)
846
- | **DQN** | ![Status](https://img.shields.io/badge/develop-v1.0-red) |![Status](https://img.shields.io/badge/gif-none-yellow)
847
- | **DDPG** | ![Status](https://img.shields.io/badge/develop-v1.0-red) |![Status](https://img.shields.io/badge/gif-none-yellow)
848
-
849
- ## Curve Generation
850
-
851
- | Planner | Version | Animation |
755
+ Please refer to the Tutorials part of [online documentation](https://ai-winter.github.io/python_motion_planning/).
756
+
757
+ # Demos
758
+ ## Path Planner
759
+ ### Graph Search
760
+ |Planner|2D Grid|3D Grid
761
+ |-------|-------|-------
762
+ **Dijkstra**|![dijkstra_2d.svg](assets/dijkstra_2d.svg)|![dijkstra_3d.png](assets/dijkstra_3d.png)
763
+ **GBFS**|![gbfs_2d.svg](assets/gbfs_2d.svg)|![gbfs_3d.png](assets/gbfs_3d.png)
764
+ **A\***|![a_star_2d.svg](assets/a_star_2d.svg)|![a_star_3d.png](assets/a_star_3d.png)
765
+ **JPS**|![jps_2d.svg](assets/jps_2d.svg)|![jps_3d.png](assets/jps_3d.png)
766
+ **Theta\***|![theta_star_2d.svg](assets/theta_star_2d.svg)|![theta_star_3d.png](assets/theta_star_3d.png)
767
+ **Lazy Theta\***|![lazy_theta_star_2d.svg](assets/lazy_theta_star_2d.svg)|![lazy_theta_star_3d.png](assets/lazy_theta_star_3d.png)
768
+ **D\***|Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
769
+ **LPA\***|Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
770
+ **D\* Lite**|Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
771
+ **Anya**|Not implemented|Not implemented
772
+
773
+ ### Sample Search
774
+ |Planner|2D Grid|3D Grid
775
+ |-------|-------|-------
776
+ **RRT**|![rrt_2d.svg](assets/rrt_2d.svg)|![rrt_3d.png](assets/rrt_3d.png)
777
+ **RRT\***|![rrt_star_2d.svg](assets/rrt_star_2d.svg)|![rrt_star_3d.png](assets/rrt_star_3d.png)
778
+ **RRT-Connect**|![rrt_connect_2d.svg](assets/rrt_connect_2d.svg)|![rrt_connect_3d.png](assets/rrt_connect_3d.png)
779
+ **Informed RRT**|Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
780
+ **PRM**|Not implemented|Not implemented
781
+
782
+ ### Evolutionary Search
783
+ |Planner|2D Grid|3D Grid
784
+ |-------|-------|-------
785
+ | **ACO** |Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
786
+ | **GA** |Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
787
+ | **PSO** |Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
788
+
789
+ ### Hybrid Search
790
+ |Planner|2D Grid|3D Grid
791
+ |-------|-------|-------
792
+ **Voronoi Planner**|![voronoi_planner_2d.svg](assets/voronoi_planner_2d.svg)|![voronoi_planner_3d.png](assets/voronoi_planner_3d.png)
793
+
794
+ ## Controller
795
+
796
+ 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.
797
+
798
+ In the following demos, the blue robot 1 is the `CircularRobot`, and the orange robot 2 is the `DiffDriveRobot`.
799
+
800
+ |Controller|2D|3D
801
+ |-------|-------|-------
802
+ |**Path Trakcer**|![path_tracker_2d.gif](assets/path_tracker_2d.gif)|Not implemented
803
+ | **Pure Pursuit** |![pure_pursuit_2d.gif](assets/pure_pursuit_2d.gif)|Not implemented
804
+ | **PID** |![pid_2d.gif](assets/pid_2d.gif)|Not implemented
805
+ | **APF** |![apf_2d.gif](assets/apf_2d.gif)|Not implemented
806
+ | **DWA** |![dwa_2d.gif](assets/dwa_2d.gif)|Not implemented
807
+ | **RPP** |![rpp_2d.gif](assets/rpp_2d.gif)|Not implemented
808
+ | **LQR** |Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
809
+ | **MPC** |Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
810
+ | **MPPI** |Not implemented|Not implemented
811
+ | **TEB** |Not implemented|Not implemented
812
+ | **Lattice** |Not implemented|Not implemented
813
+ | **DQN** |Not implemented|Not implemented
814
+ | **DDPG** |Implemented in [V1.0](https://github.com/ai-winter/python_motion_planning/tree/v1.0), not migrated|Not implemented
815
+
816
+ ## Curve Generator
817
+
818
+ |Generator|2D|3D|
852
819
  | ------- | -------------------------------------------------------- | --------------------------------------------------------
853
- | **Polynomia** | [![Status](https://img.shields.io/badge/done-v1.0-brightgreen)](https://github.com/ai-winter/python_motion_planning/blob/master/curve_generation/polynomial_curve.py) | ![polynomial_curve_python.gif](assets/polynomial_curve_python.gif)
854
- | **Bezier** | [![Status](https://img.shields.io/badge/done-v1.0-brightgreen)](https://github.com/ai-winter/python_motion_planning/blob/master/curve_generation/bezier_curve.py) | ![bezier_curve_python.png](assets/bezier_curve_python.png)
855
- | **Cubic Spline** | [![Status](https://img.shields.io/badge/done-v1.0-brightgreen)](https://github.com/ai-winter/python_motion_planning/blob/master/curve_generation/cubic_spline.py) | ![cubic_spline_python.png](assets/cubic_spline_python.png)
856
- | **BSpline** | [![Status](https://img.shields.io/badge/done-v1.0-brightgreen)](https://github.com/ai-winter/python_motion_planning/blob/master/curve_generation/bspline_curve.py) | ![bspline_curve_python.png](assets/bspline_curve_python.png)
857
- | **Dubins** | [![Status](https://img.shields.io/badge/done-v1.0-brightgreen)](https://github.com/ai-winter/python_motion_planning/blob/master/curve_generation/dubins_curve.py) | ![dubins_curve_python.png](assets/dubins_curve_python.png)
858
- | **Reeds-Shepp** | [![Status](https://img.shields.io/badge/done-v1.0-brightgreen)](https://github.com/ai-winter/python_motion_planning/blob/master/curve_generation/reeds_shepp.py) | ![reeds_shepp_python.png](assets/reeds_shepp_python.gif)
859
- | **Fem-Pos Smoother** | [![Status](https://img.shields.io/badge/done-v1.0-brightgreen)](https://github.com/ai-winter/python_motion_planning/blob/master/curve_generation/fem_pos_smooth.py) | ![fem_pos_smoother_python.png](assets/fem_pos_smoother_python.png)
820
+ | **Polynomia** | ![polynomial_2d.svg](assets/polynomial_2d.svg)|Not implemented
821
+ | **Bezier** |![bezier_2d.svg](assets/bezier_2d.svg)|Not implemented
822
+ | **Cubic Spline** |![cubic_spline_2d.svg](assets/cubic_spline_2d.svg)|Not implemented
823
+ | **BSpline** |![bspline_2d.svg](assets/bspline_2d.svg)|Not implemented
824
+ | **Dubins** |![dubins_2d.svg](assets/dubins_2d.svg)|Not implemented
825
+ | **Reeds-Shepp** |![reeds_shepp_2d.svg](assets/reeds_shepp_2d.svg)|Not implemented
826
+
827
+ # Future Works
828
+
829
+ * N-D controllers (path-trackers).
830
+
831
+ * Path planning for robotic arms.
860
832
 
833
+ * Path planning on topological map.
861
834
 
835
+ * Sample search with Dubins or Reeds-Shepp curves.
862
836
 
837
+ * Application on ROS2.
863
838
 
864
- # Papers
865
- ## Global Planning
839
+ * Application in mainstream robot simulation environments (e.g. Gazebo, Carla, Airsim, PyBullet, MuJoCo, Issac Sim).
866
840
 
867
- * [A*: ](https://ieeexplore.ieee.org/document/4082128) A Formal Basis for the heuristic Determination of Minimum Cost Paths
868
- * [JPS:](https://ojs.aaai.org/index.php/AAAI/article/view/7994) Online Graph Pruning for Pathfinding On Grid Maps
869
- * [Lifelong Planning A*: ](https://www.cs.cmu.edu/~maxim/files/aij04.pdf) Lifelong Planning A*
870
- * [D*: ](http://web.mit.edu/16.412j/www/html/papers/original_dstar_icra94.pdf) Optimal and Efficient Path Planning for Partially-Known Environments
871
- * [D* Lite: ](http://idm-lab.org/bib/abstracts/papers/aaai02b.pdf) D* Lite
872
- * [Theta*: ](https://www.jair.org/index.php/jair/article/view/10676) Theta*: Any-Angle Path Planning on Grids
873
- * [Lazy Theta*: ](https://ojs.aaai.org/index.php/AAAI/article/view/7566) Lazy Theta*: Any-Angle Path Planning and Path Length Analysis in 3D
874
- * [S-Theta*: ](https://link.springer.com/chapter/10.1007/978-1-4471-4739-8_8) S-Theta*: low steering path-planning algorithm
875
- * [Anya: ](http://www.grastien.net/ban/articles/hgoa-jair16.pdf) Optimal Any-Angle Pathfinding In Practice
876
- * [RRT: ](http://msl.cs.uiuc.edu/~lavalle/papers/Lav98c.pdf) Rapidly-Exploring Random Trees: A New Tool for Path Planning
877
- * [RRT-Connect: ](http://www-cgi.cs.cmu.edu/afs/cs/academic/class/15494-s12/readings/kuffner_icra2000.pdf) RRT-Connect: An Efficient Approach to Single-Query Path Planning
878
- * [RRT*: ](https://journals.sagepub.com/doi/abs/10.1177/0278364911406761) Sampling-based algorithms for optimal motion planning
879
- * [Informed RRT*: ](https://arxiv.org/abs/1404.2334) Optimal Sampling-based Path Planning Focused via Direct Sampling of an Admissible Ellipsoidal heuristic
880
- * [ACO: ](http://www.cs.yale.edu/homes/lans/readings/routing/dorigo-ants-1999.pdf) Ant Colony Optimization: A New Meta-Heuristic
841
+ * More mainstream motion planning algorithms.
881
842
 
882
- ## Local Planning
843
+ * Performance optimization.
883
844
 
884
- * [DWA: ](https://www.ri.cmu.edu/pub_files/pub1/fox_dieter_1997_1/fox_dieter_1997_1.pdf) The Dynamic Window Approach to Collision Avoidance
885
- * [APF: ](https://ieeexplore.ieee.org/document/1087247) Real-time obstacle avoidance for manipulators and mobile robots
886
- * [RPP: ](https://arxiv.org/pdf/2305.20026.pdf) Regulated Pure Pursuit for Robot Path Tracking
887
- * [DDPG: ](https://arxiv.org/abs/1509.02971) Continuous control with deep reinforcement learning
845
+ Contributors are welcome! For trivial modification, please directly contribute to `dev` branch. For big modification, please [contact](#contact) us before you contribute.
888
846
 
889
- ## Curve Generation
847
+ # Contact
890
848
 
891
- * [Dubins: ]() On curves of minimal length with a constraint on average curvature, and with prescribed initial and terminal positions and tangents
849
+ Long-term maintainers:
892
850
 
893
- # Acknowledgment
851
+ * [@omigeft](https://github.com/omigeft) (Wu Maojia)
852
+ * [@ai-winter](https://github.com/ai-winter) (Yang Haodong)
894
853
 
895
- * Our visualization and animation framework of Python Version refers to [https://github.com/zhm-real/PathPlanning](https://github.com/zhm-real/PathPlanning). Thanks sincerely.
854
+ You can contact us via the information provided on our profile.
@@ -0,0 +1,158 @@
1
+
2
+ # Introduction
3
+
4
+ `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.
5
+
6
+ `Motion planning` plans the state sequence of the robot without conflict between the start and goal.
7
+
8
+ `Motion planning` mainly includes `Path planning` and `Trajectory planning`.
9
+
10
+ * `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.
11
+ * `Trajectory planning`: It plans the motion state to approach the global path based on kinematics, dynamics constraints and path sequence.
12
+
13
+ The theory analysis can be found at [motion-planning](https://blog.csdn.net/frigidwinter/category_11410243.html).
14
+
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.
16
+
17
+ **Your stars and forks are welcome!**
18
+
19
+ # Quick Start
20
+
21
+ ## Overview
22
+ The source file structure is shown below
23
+
24
+ ```
25
+ python_motion_planning
26
+ ├─common
27
+ | ├─env
28
+ | | ├─map
29
+ | | ├─robot
30
+ | | └─world
31
+ | ├─utils
32
+ | └─visualizer
33
+ ├─controller
34
+ | └─path_tracker
35
+ ├─path_planner
36
+ | ├─graph_search
37
+ | ├─sample_search
38
+ | └─hybrid_search
39
+ └─traj_optimizer
40
+ | └─curve_generator
41
+ ```
42
+
43
+ ## Install
44
+ *(Optional)* The code was tested in python=3.10, though other similar versions should also work. We recommend using `conda` to install the dependencies.
45
+
46
+ ```shell
47
+ conda create -n pmp python=3.10
48
+ conda activate pmp
49
+ ```
50
+
51
+ To install the repository, please run the following command in shell.
52
+
53
+ ```shell
54
+ pip install python-motion-planning
55
+ ```
56
+
57
+ ## Run
58
+
59
+ Please refer to the Tutorials part of [online documentation](https://ai-winter.github.io/python_motion_planning/).
60
+
61
+ # Demos
62
+ ## Path Planner
63
+ ### Graph Search
64
+ |Planner|2D Grid|3D Grid
65
+ |-------|-------|-------
66
+ **Dijkstra**|![dijkstra_2d.svg](assets/dijkstra_2d.svg)|![dijkstra_3d.png](assets/dijkstra_3d.png)
67
+ **GBFS**|![gbfs_2d.svg](assets/gbfs_2d.svg)|![gbfs_3d.png](assets/gbfs_3d.png)
68
+ **A\***|![a_star_2d.svg](assets/a_star_2d.svg)|![a_star_3d.png](assets/a_star_3d.png)
69
+ **JPS**|![jps_2d.svg](assets/jps_2d.svg)|![jps_3d.png](assets/jps_3d.png)
70
+ **Theta\***|![theta_star_2d.svg](assets/theta_star_2d.svg)|![theta_star_3d.png](assets/theta_star_3d.png)
71
+ **Lazy Theta\***|![lazy_theta_star_2d.svg](assets/lazy_theta_star_2d.svg)|![lazy_theta_star_3d.png](assets/lazy_theta_star_3d.png)
72
+ **D\***|Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
73
+ **LPA\***|Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
74
+ **D\* Lite**|Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
75
+ **Anya**|Not implemented|Not implemented
76
+
77
+ ### Sample Search
78
+ |Planner|2D Grid|3D Grid
79
+ |-------|-------|-------
80
+ **RRT**|![rrt_2d.svg](assets/rrt_2d.svg)|![rrt_3d.png](assets/rrt_3d.png)
81
+ **RRT\***|![rrt_star_2d.svg](assets/rrt_star_2d.svg)|![rrt_star_3d.png](assets/rrt_star_3d.png)
82
+ **RRT-Connect**|![rrt_connect_2d.svg](assets/rrt_connect_2d.svg)|![rrt_connect_3d.png](assets/rrt_connect_3d.png)
83
+ **Informed RRT**|Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
84
+ **PRM**|Not implemented|Not implemented
85
+
86
+ ### Evolutionary Search
87
+ |Planner|2D Grid|3D Grid
88
+ |-------|-------|-------
89
+ | **ACO** |Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
90
+ | **GA** |Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
91
+ | **PSO** |Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
92
+
93
+ ### Hybrid Search
94
+ |Planner|2D Grid|3D Grid
95
+ |-------|-------|-------
96
+ **Voronoi Planner**|![voronoi_planner_2d.svg](assets/voronoi_planner_2d.svg)|![voronoi_planner_3d.png](assets/voronoi_planner_3d.png)
97
+
98
+ ## Controller
99
+
100
+ 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.
101
+
102
+ In the following demos, the blue robot 1 is the `CircularRobot`, and the orange robot 2 is the `DiffDriveRobot`.
103
+
104
+ |Controller|2D|3D
105
+ |-------|-------|-------
106
+ |**Path Trakcer**|![path_tracker_2d.gif](assets/path_tracker_2d.gif)|Not implemented
107
+ | **Pure Pursuit** |![pure_pursuit_2d.gif](assets/pure_pursuit_2d.gif)|Not implemented
108
+ | **PID** |![pid_2d.gif](assets/pid_2d.gif)|Not implemented
109
+ | **APF** |![apf_2d.gif](assets/apf_2d.gif)|Not implemented
110
+ | **DWA** |![dwa_2d.gif](assets/dwa_2d.gif)|Not implemented
111
+ | **RPP** |![rpp_2d.gif](assets/rpp_2d.gif)|Not implemented
112
+ | **LQR** |Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
113
+ | **MPC** |Implemented in [V1.1.1](https://github.com/ai-winter/python_motion_planning/tree/v1.1.1), not migrated|Not implemented
114
+ | **MPPI** |Not implemented|Not implemented
115
+ | **TEB** |Not implemented|Not implemented
116
+ | **Lattice** |Not implemented|Not implemented
117
+ | **DQN** |Not implemented|Not implemented
118
+ | **DDPG** |Implemented in [V1.0](https://github.com/ai-winter/python_motion_planning/tree/v1.0), not migrated|Not implemented
119
+
120
+ ## Curve Generator
121
+
122
+ |Generator|2D|3D|
123
+ | ------- | -------------------------------------------------------- | --------------------------------------------------------
124
+ | **Polynomia** | ![polynomial_2d.svg](assets/polynomial_2d.svg)|Not implemented
125
+ | **Bezier** |![bezier_2d.svg](assets/bezier_2d.svg)|Not implemented
126
+ | **Cubic Spline** |![cubic_spline_2d.svg](assets/cubic_spline_2d.svg)|Not implemented
127
+ | **BSpline** |![bspline_2d.svg](assets/bspline_2d.svg)|Not implemented
128
+ | **Dubins** |![dubins_2d.svg](assets/dubins_2d.svg)|Not implemented
129
+ | **Reeds-Shepp** |![reeds_shepp_2d.svg](assets/reeds_shepp_2d.svg)|Not implemented
130
+
131
+ # Future Works
132
+
133
+ * N-D controllers (path-trackers).
134
+
135
+ * Path planning for robotic arms.
136
+
137
+ * Path planning on topological map.
138
+
139
+ * Sample search with Dubins or Reeds-Shepp curves.
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
+
151
+ # Contact
152
+
153
+ Long-term maintainers:
154
+
155
+ * [@omigeft](https://github.com/omigeft) (Wu Maojia)
156
+ * [@ai-winter](https://github.com/ai-winter) (Yang Haodong)
157
+
158
+ You can contact us via the information provided on our profile.
@@ -4,11 +4,11 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "python-motion-planning"
7
- version = "1.1.1"
7
+ version = "2.0"
8
8
  description = "Motion planning algorithms for Python"
9
9
  maintainers = [
10
- {name = "Yang Haodong", email = "913982779@qq.com"},
11
- {name = "Wu Maojia", email = "2223942063@qq.com"}
10
+ {name = "Wu Maojia", email = "omige@mail.nwpu.edu.cn"},
11
+ {name = "Yang Haodong", email = "913982779@qq.com"}
12
12
  ]
13
13
  readme = "README.md"
14
14
  license = {file = "LICENSE"}
@@ -17,9 +17,11 @@ dependencies = [
17
17
  "numpy",
18
18
  "scipy",
19
19
  "matplotlib",
20
- "cvxopt",
21
20
  "osqp",
22
- "tqdm"
21
+ "gymnasium",
22
+ "faiss-cpu",
23
+ "pyvista",
24
+ "pyvistaqt"
23
25
  ]
24
26
  classifiers = [
25
27
  "License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
@@ -0,0 +1,4 @@
1
+ from .common import *
2
+ from .path_planner import *
3
+ from .controller import *
4
+ from .traj_optimizer import *
@@ -0,0 +1,3 @@
1
+ from .utils import *
2
+ from .env import *
3
+ from .visualizer import *
@@ -0,0 +1,6 @@
1
+ # from .world import *
2
+ from .node import *
3
+ from .types import *
4
+ from .map import *
5
+ from .world import *
6
+ from .robot import *
@@ -0,0 +1,2 @@
1
+ from .base_map import *
2
+ from .grid import *