Project - 05 for the course, 'ENPM661 - Planning for Autonomous Robots' at the University of Maryland, College Park.
Implementation of the Multi-Objective Dynamic RRT* algorithm for path planning of a holonomic point robot.
- J. Qi, H. Yang and H. Sun, "MOD-RRT*: A Sampling-Based Algorithm for Robot Path Planning in Dynamic Environment," in IEEE Transactions on Industrial Electronics, vol. 68, no. 8, pp. 7244-7251, Aug. 2021, doi: 10.1109/TIE.2020.2998740.
- Kumara Ritvik Oruganti (117368963)
- Adarsh Malapaka (118119625)
- cv2 : To add arrows, lines or circles in the map at the desired coordinates.
- time: To calculate the running time for the RRT* algorithm.
- numpy: To define the obstacle map matrix
- argparse: To parse command line arguments
- random: To generate random nodes
- copy: To create copy of lists
[co-ordinates with respect to bottom left corner origin of the window]
Start-Node: (10, 10)
Goal-Node: (350, 150)
Robot Clearance: 5
Obstacle Map (Known) | Modified RRT* Tree Expansion | Modified RRT* Path |
---|---|---|
![]() |
![]() |
![]() |
Optimized Modified RRT* Path | Obstacle Map - Known (Blue) & Unknown (Green) | Optimized Re-planned Path |
---|---|---|
![]() |
![]() |
![]() |
[co-ordinates with respect to bottom left corner origin of the window]
Start-Node: (10, 10)
Goal-Node: (350, 150)
Robot Clearance: 5
Obstacle Map (Known) | Modified RRT* Tree Expansion | Modified RRT* Path |
---|---|---|
![]() |
![]() |
![]() |
Optimized Modified RRT* Path | Obstacle Map - Known (Blue) & Unknown (Green) | Optimized Re-planned Path |
---|---|---|
![]() |
![]() |
![]() |
The shapes in the map including the outer boudary walls have been bloated by robot clearance amount on all sides.
The code map number as an argument.
Format/Syntax:
'python3 mod_rrt_star.py <map-argument>'
For Map 01:
'python3 mod_rrt_star.py --map1'
For Map 02:
'python3 mod_rrt_star.py --map2'
The algorithm is dependent on the randomly generated nodes. If the nodes are not sufficient (i.e. the path converges very quickly), the algorithm maynot find a feasible path avoiding the obstacles. Hence, it is adviced to rerun the program again. If the path doesn't converge, rerun the program using the above commands after pressing the ctrl+c to force quit the current run.