Skip to content

Ros package for converting 3D voxel maps generated by the UFOMap and the OctoMap mapping solution into 2D occupancy maps for unmanned aerial vehicles (UAVs) and unmanned ground vehicles (UGV)

License

Notifications You must be signed in to change notification settings

LTU-RAI/Map-Conversion-3D-Voxel-Map-to-2D-Occupancy-Map

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 

Repository files navigation

3D Voxel Map to 2D Occupancy Map Conversion Using Free Space Representation

This package is for ROS2. See the ros branch for the ROS version.

This ROS2 package converts voxel maps generated by the OctoMap mapping solution into 2D occupancy maps for unmanned aerial vehicles (UAVs) and unmanned ground vehicles (UGV). The package also provides a method to convert 2D paths to 3D paths for UAVs and UAVs.

The method uses free space in the voxel map to find navigable space in the voxel map, as well as extracting a height map to create a traversability slope map, which is used to detect obstacles in the environment and include them in the map generated for the UGVs.

The Height map can also be used to convert paths from 2D to 3D using the path_converter_node provided by the package.

Paper and Citation

This ROS2 package is based on the following article:

Voxel Map to Occupancy Map Conversion Using Free Space Projection for Efficient Map Representation for Aerial and Ground Robots [RA-L] [ArXiv]

@ARTICLE{10750397,
  author={Fredriksson, Scott and Saradagi, Akshit and Nikolakopoulos, George},
  journal={IEEE Robotics and Automation Letters}, 
  title={Voxel Map to Occupancy Map Conversion Using Free Space Projection for Efficient Map Representation for Aerial and Ground Robots}, 
  year={2024},
  volume={9},
  number={12},
  pages={11625-11632},
  doi={10.1109/LRA.2024.3495575}}

If you use this ROS2 package in a scientific publication, please cite the paper.

Installation

  1. Install OctoMap for ROS2 or $ sudo apt install ros-<ROS2 version>-octomap-server
  2. Navigate to the src folder in the ROS2 workspace cd ~/ros2_ws/src
  3. Clone the GitHub to ROS2 workspace: git clone https://github.com/LTU-RAI/Map-Conversion-3D-Voxel-Map-to-2D-Occupancy-Map.git
  4. cd ..
  5. Build project: colcon build --packages-select mapconversion

ROS2 Launch Files

map_conversion_oct.launch.py: Example launch file for launching map conversion node

path_conversion.launch.py: Example launch file for launching map path conversion node

ROS Nodes

map_conversion_oct_node

A node that converts the input 3D voxel map to a 2D occupancy map and a height map with the height of the floor and ceiling.

Ros Parameters

Map Parameters

map_frame (default: map): Name of frame map.

map_position_z (default: 0.0): Z position used for the outputted 2D maps.

minimum_z (default: 1.0): Minimum height of free space the robot can traverse.

max_slope_ugv (default: inf): Maximum slope ground robot can climb, used to detect and represent obstacles in the 2D occupancy map

slope_estimation_size (default: 2): Determine the size of the area used to estimate the slope in one cell. The size of the area will be equal to (2*slope_estimation_size+1)².

partial_map_updates (default: true): If true, only the changed areas of the 3D voxel map will be updated in the 2D map. If set to false, the complete 2D map will be updated each time a new voxel map is received.

QoS Parameters

By default, the node uses the QoS policy of Reliable for reliability and Volatile for durability. Adjusting the following parameters allows these policies to be modified for compatibility with other ROS packages. It is recommended to keep the default values unless changes are explicitly necessary.

subscriber_qos_reliable (default: true): Controls the reliability policy for the subscribed topic octomap. When set to true, the reliability policy is Reliable. When set to false, the reliability policy is Best Effort.

subscriber_qos_transient_local (default: false): Controls the durability policy for the subscribed topic octomap. When set to true, the durability policy is Transient Local. When set to false, the durability policy is Volatile.

publisher_qos_reliable (default: true): Controls the reliability policy for the published topics: mapUGV, mapUAV, heightMap, and slopeMap. When set to true, the reliability policy is Reliable. When set to false, the reliability policy is Best Effort.

publisher_qos_transient_local (default: false): Controls the durability policy for the published topics: mapUGV, mapUAV, heightMap, and slopeMap. When set to true, the durability policy is Transient Local, and topics will publish messages even without active subscribers. When set to false, the durability policy is Volatile, and topics will publish messages only when subscribers are connected.

Subscribed Topics

octomap: Input voxel map.

Published Topics

mapUGV: Map for a ground robot, includes obstacles detected using max_slope_ugv.

mapUAV: Map for aerial robot containing free space and bounding walls.

heightMap: 2D map containing the height of the floor and ceiling of the environment.

slopeMap: 2D map containing the slope value for the floor in the environment.

visualization_floor_map: Rviz cost map, for showing a heat map of the floor height in the heightMap. This is only for visualization.

visualization_ceiling_map: Rviz cost map, for showing a heat map of the ceiling height in the heightMap. This is only for visualization.

visualization_slope_map: Rviz cost map, for showing a heat map of the slope of the map in the range 0 to 2*max_slope_ugv. This is only for visualization.

path_converter_node

A node that converts the input path generated using a 2D planer to a 3D path using heightMap generated by map_conversion_node.

Ros Parameters

Path Parameters

use_collision_sphere (default: false): Add collision sphere around the robot. Use true for aerial robots and false for ground robots. If a collision with either the floor or ceiling is detected during path conversion, the path will be adjusted so that no collision occurs.

collision_radius (default: 1.0): Radius for collision sphere, only used if use_collision_sphere is true.

path_offset (default: 0.0): Desired height above ground for the robot.

path_smothing_length (default: 5): The amount of steps before and after the robot is used for path smoothing.

QoS Parameters

By default, the node uses the QoS policy of Reliable for reliability and Volatile for durability. Adjusting the following parameters allows these policies to be modified for compatibility with other ROS packages. It is recommended to keep the default values unless changes are explicitly necessary.

subscriber_qos_reliable (default: true): Controls the reliability policy for the subscribed topics: heightMap and pathIn. When set to true, the reliability policy is Reliable. When set to false, the reliability policy is Best Effort.

subscriber_qos_transient_local (default: false): Controls the durability policy for the subscribed topics: heightMap and pathIn. When set to true, the durability policy is Transient Local. When set to false, the durability policy is Volatile.

publisher_qos_reliable (default: true): Controls the reliability policy for the published topic pathOut. When set to true, the reliability policy is Reliable. When set to false, the reliability policy is Best Effort.

publisher_qos_transient_local (default: false): Controls the durability policy for the published topic pathOut. When set to true, the durability policy is Transient Local. When set to false, the durability policy is Volatile.

Subscribed Topics

heightMap: Hight map used for 2D to 3D conversion generated by map_conversion_node.

pathIn: 2D path that will be converted into 3D.

Published Topics

pathOut: 3D path converted from 2D using the heightMap.

About

Ros package for converting 3D voxel maps generated by the UFOMap and the OctoMap mapping solution into 2D occupancy maps for unmanned aerial vehicles (UAVs) and unmanned ground vehicles (UGV)

Resources

License

Stars

Watchers

Forks