Continuous-Safe Navigation in Unknown Cluttered Environments via Direction-Aware Convex Free-Region Generation
Convex free regions provide a structured and optimization-friendly representation of collision-free space, but enlarging local free space only according to surrounding obstacle geometry can be insufficient in cluttered environments. In narrow passages, the generated region may fail to both accommodate robot geometry and preserve traversable extension along candidate motion directions. In addition, when robot geometry is modeled explicitly, checking safety only at discretized trajectory samples does not guarantee continuously collision-free motion.
To address these issues, FRGraph jointly incorporates candidate motion directions and robot geometry into convex free-region generation, and achieves continuously collision-free motion through continuous-safe trajectory generation. Within each region, the framework performs geometry-aware target pose selection and trajectory generation, together with Lipschitz-based continuous safety certification and local refinement. The resulting free regions and candidate motions are maintained in a region-based graph to support incremental planning.
-
Direction-aware convex free-region generation
Candidate navigation directions are incorporated into obstacle selection and hyperplane optimization through a direction-biased QP formulation, producing free regions that better preserve traversable space while accommodating robot geometry. -
Continuous-safe trajectory generation
The framework combines Bézier trajectory parameterization with Lipschitz-based adaptive interval subdivision for continuous safety certification, together with a local QP-based control-point refinement scheme for iterative violation correction. -
Region-based graph for incremental planning
Generated free regions and candidate motions are organized in a region-based navigation graph, enabling incremental planning and recovery from locally unproductive branches.
The proposed framework enables reliable collision-free navigation in cluttered 2D environments across a wide range of obstacle densities.
The maintained region-based graph allows the planner to backtrack from dead-end branches and continue navigation toward the goal.
The framework transfers effectively to real robots and maintains collision-free navigation in cluttered real-world scenarios.
- Quantitative 2D experiments show that the proposed method generates free regions better aligned with downstream traversal and enables reliable collision-free navigation.
- Additional 3D experiments demonstrate dead-end handling and backtracking enabled by the maintained region-based graph.
- Real-world experiments validate the practical applicability of the framework in both 2D and 3D cluttered environments.
This project is built in a ROS catkin workspace.
Before building FRGraph, please make sure the following dependency is available:
In addition, the DecompROS module used in this project is adapted from the original implementation:
- Clone this repository into your catkin workspace:
cd ~/catkin_ws/src
git clone <your_repo_url>- Clone
catkin_simpleinto thethird_partydirectory:
cd FRGraph/third_party
git clone https://github.com/catkin/catkin_simple.git- Go back to the workspace root and build the
decomp_*packages first:
cd ~/catkin_ws
catkin build decomp_*- Build the whole workspace:
catkin buildIf all steps finish successfully, FRGraph is ready to use.
roslaunch simple_robot simple_robot.launch if_3d_lidar:=0
roslaunch planner_manager planner.launchFRGraph consists of two main components:
- A robot interface (simulation or real robot)
- The planner (
planner_manager)
You can launch the provided example robot:
roslaunch simple_robot simple_robot.launch if_3d_lidar:=0This launch file provides a simple robot setup and can be replaced with your own robot system.
roslaunch planner_manager planner.launchTo run in a 2D environment:
- Launch the robot with 2D LiDAR:
roslaunch simple_robot simple_robot.launch if_3d_lidar:=0- Set the environment type in:
src/planner_manager/config/config.yamlenv_type: 0- Set robot geometry:
- Modify the robot vertex coordinates in the configuration file according to your robot shape.
- Required topics:
- Point cloud (2D LiDAR):
/scan - Odometry:
/odom
To run in a 3D environment:
- Launch the robot with 3D LiDAR:
roslaunch simple_robot simple_robot.launch if_3d_lidar:=1- Set the environment type:
env_type: 1- Set robot geometry:
- Update the robot vertex coordinates to match your robot model.
- Required topics:
- Point cloud (3D LiDAR):
/velodyne_points - Odometry:
/odom
The planner requires the following inputs:
-
Sensor data (single-frame point cloud)
- 2D mode:
/scan - 3D mode:
/velodyne_points
- 2D mode:
-
Robot state (odometry)
/odom
Make sure these topics are correctly published before launching the planner.
- The provided
simple_robotis only for demonstration. You can replace it with your own robot as long as the required topics are provided. - The robot geometry (vertex representation) must be consistent with your actual robot to ensure correct collision checking.
- Ensure that the topic names match or are properly remapped if different in your system.
This project builds upon the open-source project DecompROS, which provides the foundation for convex decomposition and free-region generation.
We thank the authors for making their implementation publicly available.
The DecompROS module in this repository has been adapted and modified to fit our framework.



