Potential Functions and Receding Horizon-based RRT*
Local path planning algorithm for real-time navigation in dynamic environments.
This repository provides an implementation of PRH-RRT*, an extension of the RRT* (Rapidly-exploring Random Tree Star) algorithm designed for real-time local path planning in cluttered and dynamic environments.
PRH-RRT* enhances classical RRT* by introducing:
- Receding-horizon-based tree management to limit computation to a moving region around the robot.
- Potential-function-based tree biasing to guide exploration toward the global path while maintaining obstacle clearance.
- Online tree trimming to remove outdated or collision-prone branches as the robot moves.
The algorithm is intended for mobile robot navigation and has been validated in realistic simulation environments.
- Local path planning with receding horizon strategy
- Potential-field-guided tree expansion (attractive, repulsive, and exploratory terms)
- Real-time tree pruning for computational efficiency
- Compatible with ROS-based simulation and mapping frameworks
- Designed for dynamic and partially observable environments
The following open-source packages were used to run and evaluate PRH-RRT*:
-
AWS RoboMaker Hospital World
https://github.com/aws-robotics/aws-robomaker-hospital-world -
Rover Robotics ROS1 Stack
https://github.com/RoverRobotics/roverrobotics_ros1 -
OctoMap Mapping
https://github.com/OctoMap/octomap_mapping
Additional requirements:
- ROS1 (tested with Noetic)
- C++14 / Python3
- Numpy
- Pandas
git clone https://github.com/ziuoo/PRH-RRT_star.git
cd PRH-RRT_starrosdep update
rosdep install --from-paths src --ignore-src -r -ycatkin_make # or catkin build
source devel/setup.bashExample using AWS RoboMaker Hospital World:
roslaunch mission_controller hospital_simulation.launchroslaunch prh_rrt_star prh_rrt_star.launchThe planner subscribes to local map and robot state topics and publishes a collision-free local path in real time.
PRH-RRT_star/
├── prh_rrt_star/ # Core PRH-RRT* planner implementation
│ ├── src/ # Algorithm source code
│ └── launch/ # ROS launch files
├── pkgs_localmap/ # Local occupancy and OctoMap integration
├── pkgs_simul/ # Simulation-related packages
├── mission_controller/ # Mission and execution management
├── CMakeLists.txt
└── README.md
- This repository focuses on local planning; a global path is assumed to be provided by an external planner.
- Dynamic obstacles are handled in an observation-driven manner using updated occupancy information.
- Parameter values were empirically tuned through simulation experiments.