Exploration Planner¶
The Exploration Planner is an optional global planner for autonomous flight. It maintains an OpenVDB-based voxel occupancy grid map, extracts frontiers from the map, and generates trajectories that let the drone explore unvisited areas. Because it maintains its own map, you can turn off the vdb_mapping node in the launch XML; the planner will generate and publish multiple linked straight-line trajectories as a shortened, collision-checked RRT path to a selected viewpoint.
Functionality¶
In your stack's entry launch file (e.g. a copy of
stacks/full_default/launch/stack.launch.xml), replace the
random_walk_planner.launch.xml include (and optionally the vdb_mapping
include) with:
<include file="$(find-pkg-share exploration_planner)/launch/exploration_launch.xml" />:
Then when running the robot stack, after taking off, toggle the global plan from the rviz Tasks Panel or the GCS (the ~/global_plan_toggle service) and the exploration planner runs in place of the random walk planner. The working process is:
- Create and maintain a voxel grid map with odometry and laser scan, to visualize, check topic
"~/vdb_viz", where~is the namespace. - Extract frontier and select viewpoints for exploration.
- Generate RRT path, shorten and publish as global plan.
- Continuously monitor the robot's progress along the published path.
- Once the robot completes the current path, a new exploration path will be generated.
This loop continues, enabling the drone to keep exploring the entire space.
The planner is derived from the random walk planner and shares several of its parameters; parameter documentation is still being expanded.
Parameters¶
Parameter |
Description |
|---|---|
num_paths_to_generate |
Number of straight-line paths to concatenate into a complete trajectory. |
max_start_to_goal_dist_m |
Maximum distance (in meters) from the start point to the goal point for each straight-line segment. |
checking_point_cnt |
Number of points along each straight-line segment to check for collisions. |
max_z_change_m |
Maximum allowed change in height (z-axis) between the start and goal points. |
collision_padding_m |
Extra padding (in meters) added around a voxel's dimensions when checking for collisions. |
path_end_threshold_m |
Distance threshold (in meters) for considering the current path completed and generating a new one. |
max_yaw_change_degrees |
Maximum allowed change in angle (in radians) between consecutive straight-line segments to ensure a relatively consistent direction. |
robot_frame_id |
The frame name for the robot's base frame to look up the transform from the robot position to the world. |
Services¶
Parameter |
Type | Description |
|---|---|---|
~/global_plan_toggle |
std_srvs/Trigger | A toggle switch to turn on and off the exploration planner. |
Subscriptions¶
Parameter |
Type | Description |
|---|---|---|
~/sub_map_topic |
visualization_msgs/Marker | Stores the map representation that is output from the world or local map topic; currently using vdb local map. |
~/tf |
geometry_msgs/TransformStamped | Stores the transform from the robot to the world. |
Publications¶
Parameter |
Type | Description |
|---|---|---|
~/pub_global_plan_topic |
nav_msgs/Path | Outputs the global plan generated by the exploration planner. |