The Nav2 Traversability Plugin generates traversability costmaps for outdoor terrains. The plugin utilizes LiDAR data to create heightmaps, gradient maps. The traverssability layer is generated by thresholding the gradient map and is intergrated as a custom Nav2 costmap layer.
The traversability_params.yaml
file contains configuration parameters for various modules:
Section | Parameter | Description |
---|---|---|
traversability/* |
norm_max |
Maximum value for normalization. |
norm_min |
Minimum value for normalization. | |
min_height |
Minimum height value for the heightmap. | |
max_height |
Maximum height value for the heightmap. | |
out_frame |
Output frame of reference (set to odom). | |
traversability/fused_traversability_map |
max_gradient |
Maximum gradient value for the gradeint map. |
min_gradient |
Minimum gradient value for the gradeint map. | |
traversability_max_gradient |
Maximum allowed gradient above which terrain is NOT traversable. | |
traversability_min_gradient |
Minimum gradient below which terrain is traversable. | |
process_noise |
Process noise for filtering. | |
measurement_noise |
Measurement noise for filtering. | |
clear_map_after |
Time (seconds) after which to clear the map. | |
save_map |
Boolean to save the map. | |
publish_fused_heightmap |
Boolean to publish the fused heightmap. | |
save_map_interval |
Interval (seconds) to save the map. | |
publish_map_interval |
Interval (seconds) to publish the map. | |
subscription_topic |
Topic for subscribing to the heightmap. | |
global_heightmap_topic |
Topic for the global heightmap. | |
fused_heightmap_topic |
Topic for the fused heightmap. | |
traversability_topic |
Topic for the traversability map. | |
traversability/pointcloud_to_heightmap |
subscription_topic |
Topic for subscribing to the point cloud. |
heightmap_topic |
Topic for the heightmap output. | |
gradientmap_topic |
Topic for the gradient map output. | |
traversability_topic |
Topic for the traversability map output. | |
resolution |
Resolution of the heightmap (meters per cell). | |
max_range |
Maximum range to consider in the heightmap (meters). | |
robot_footprint |
Radius of the robot footprint (meters). | |
gradient_threshold |
Threshold for gradient calculations. | |
sensor_frame |
Frame of reference for the sensor. | |
robot_frame |
Frame of reference for the robot. | |
timeout_duration |
Timeout duration for transform buffer (seconds). |
GridMap16.msg
: This message type stores the heightmap data asint16
values for better resolution.QuadSurface.msg
: The QuadSurface message holds an array of Quad messages and origin information. TheQuad
message type represents a quadrilateral in 3D space with four vertices. Each vertex is a point in 3D space, ordered as bottom-left, bottom-right, top-right, and top-left.
- The custom RViz plugin (
z_surface_rviz_plugin
) can be used to visualize terrain surface. A helper node is provided in/traversability/traversability/terrain_surface.py