This project provides a method for radiation mapping and source localization utilizing Gaussian Processes, for use on mobile robots. The project was developed by Team Hector for the ENRICH 2023 hackathon.
The Radiation Mapping node requires messages containing radiation measurements, the specific type of which can be dynamically configured (see Configuration), as well as an occupancy grid of the environment, which is typically provided by a SLAM system. For 3D mapping, an additional pointcloud scan of the environment is required.
With these inputs, a 2D and 3D radiation model is continuously generated and updated and then sampled to provide output data.
The node provides grid maps, containing predictions for radiation levels and uncertainty, overlaid on the provided occupancy grid. It also provides interactive markers, indicating the estimated locations of sources.
With 3D mapping enabled, a colored pointcloud is also provided, containing predictions and uncertainty in 3D.
- Ubuntu 20.04
- C++ 17
- ROS Noetic
- Eigen3
- PyTorch
- GPyTorch
- QT5
- Point Cloud Library (PCL)
- ANYbotics grid_map
- Point Cloud Accumulator
- Hector RViz plugins (for RViz configuration)
The following ROS modules are required:
roscpp
, std_msgs
, geometry_msgs
, grid_map_ros
, grid_map_msgs
, nav_msgs
, tf2_ros
, pcl_ros
, interactive_markers
, ros_babel_fish
,cv_bridge
The package can be installed with the following command.
cd <Your ROS workspace>
git clone https://github.com/tu-darmstadt-ros-pkg/hector_radiation_mapping
catkin build
Before the system can be run, a number of configurations need to be done in the params.yaml file, located at radiation_mapping/config/params.yaml. This file contains all the necessary parameters, to get Radiation Mapping to work.
The system is able to handle a variety of different input radiation messages, which are dynamically parsed using ros_babel_fish. The topic from which these messages are received is configured using the key subscribeTopic.
The config keys messageKey_cps and messageKey_rate are used to configure the keys of the fields of the input radiation messages, that store the received Counts per Second (CPS) and Equivalent dose rate respectively. The unit of the dose rate (eg. microSievert/hour) can be specified using the key radiationUnit.
If the utilized message type does not contain both CPS and dose rate information, the missing field can be set to an empty string. The key messageKey_frameId sets the frame relative to which the radiation messages are given.
The topics of the occupancy grid (nav_msgs/OccupancyGrid
) and the accumulated pointcloud (sensor_msgs/PointCloud2
) are configured using the keys environmentMapTopic and environmentCloudTopic respectively.
The Radiation Mapping node can be launched with 2D and 3D mapping enabled using
roslaunch hector_radiation_mapping mapping.launch
If only 2D mapping is required, the node can be launched with
roslaunch hector_radiation_mapping mapping_2D_only.launch
The following topics are used to communicate with the Radiation Mapping node.
Topic name | Type | Description |
---|---|---|
/dose_rate |
Configurable | Message containing the radiation measurements |
/map |
nav_msgs/OccupancyGrid |
Occupancy grid of the environment |
/pointcloud_accumulated |
sensor_msgs/PointCloud2 |
Pointcloud scan of the environment |
Topic name | Type | Description |
---|---|---|
/hector_radiation_mapping/grid_map_* |
grid_map_msgs/GridMap |
Environment map with predictions and uncertainty overlaid |
/hector_radiation_mapping/pointCloud3D |
sensor_msgs/PointCloud2 |
Environment scan, colored using predictions and uncertainty |
/hector_radiation_mapping/marker |
visualization_msgs/Marker |
Trajectory of the robot, colored according to radiation measurements |
/hector_radiation_mapping/source_markers/* |
visualization_msgs/InteractiveMarkerUpdate |
Radiation source markers for confirmation |
Additionally, interactive markers for predicted radiation sources in 2D and 3D are provided by the system.
The Radiation Mapping node provides the following services.
Service name | Input | Description |
---|---|---|
/hector_radiation_mapping/exportModel |
String |
Exports the 2D and 3D representations of the model to the specified path |
/hector_radiation_mapping/resetModel |
- | Resets the model |
We provide a processed ROS bag file from ENRICH 2023 at TUdatalib.
You can play the bag file by running
rosbag play telemax_run2_processed_straight_init.bag
in another terminal window, before launching the Radiation Mapping node.
Thank you for citing Paper Link coming soon! (SSRR-2023) if you use any of this code.
@INPROCEEDINGS{suess_radiation_mapping,
author={Suess, Jonas and Volz, Martin and Daun, Kevin and von Stryk, Oskar},
booktitle={2023 IEEE International Symposium on Safety, Security, and Rescue Robotics (SSRR)},
title={Online 2D-3D Radiation Mapping and Source Localization using Gaussian Processes with Mobile Ground Robots},
year={2023}}