ROS 2 and Gazebo-based radiation simulation and radiation-aware navigation package.
This repository provides a ROS 2 package for simulating radiation-aware mobile robot operation in Gazebo.
It includes custom Gazebo plugins for radiation sources, radiation sensors, and attenuating obstacles, along with radiation map generation, visualization, local/global radiation-aware costmap layers, and waypoint-based autonomous navigation.
The radiation-related Gazebo plugin implementation in this repository was developed with reference to prior work on simulating ionising radiation in Gazebo for robotic nuclear inspection.
The layered costmap design for radiation-aware navigation was also informed by prior work on real-time radiation avoidance using layered costmaps for mobile robots.
This repository is organized as a single ROS 2 package at the repository root.
- Gazebo-based radiation source, sensor, and obstacle plugins
- Radiation map generation and visualization
- Radiation-aware local/global costmap layers for Nav2
- Waypoint-based autonomous navigation
- Preconfigured experiment worlds for
reactor_roomandsingle_source - Radiation logging and post-processing utilities for cumulative exposure analysis
- ROS 2 Humble
- Python 3.10 / C++17
- Gazebo Classic / gazebo_ros
- Nav2
- RViz2
- TurtleBot3 description
- pluginlib
- tf2 / tf2_ros / tf2_geometry_msgs
- OpenCV
Recommended installation:
sudo apt update
sudo apt install -y \
ros-humble-gazebo-ros-pkgs \
ros-humble-nav2-bringup \
ros-humble-nav2-msgs \
ros-humble-nav2-map-server \
ros-humble-nav2-lifecycle-manager \
ros-humble-rviz2 \
ros-humble-turtlebot3-description \
ros-humble-pluginlib \
ros-humble-tf2-ros \
ros-humble-tf2-geometry-msgs \
ros-humble-robot-state-publisher \
libgazebo11-dev \
qtbase5-dev \
libopencv-devIf you want to run frontier exploration experiments based on m-explore-ros2 / explore_lite, install that package separately in your ROS 2 workspace instead of expecting it to be included in this repository.
mkdir -p ~/<workspace_name>/src
cd ~/<workspace_name>/src
git clone https://github.com/RCILab/RCI_radiation.git
cd ~/<workspace_name>
colcon build --symlink-install
source install/setup.bash
Launch the Gazebo simulation, robot model, radiation map generation, and visualization in the reactor_room world:
ros2 launch radiation_simulation reactor_room_spawn.launch.pyRun waypoint-based navigation in the reactor_room environment:
ros2 launch radiation_simulation reactor_room_waypoint.launch.py
Launch the simplified single_source world:
ros2 launch radiation_simulation single_source_spawn.launch.pyRun waypoint-based navigation and radiation logging in the single_source world:
ros2 launch radiation_simulation single_source_waypoint.launch.pyThe package also includes additional launch files such as:
ros2 launch radiation_simulation explore_radiation.launch.py
ros2 launch radiation_simulation map_sweeper.launch.pyreactor_room is a more complex environment for radiation simulation and navigation experiments.
The reactor_room world assets included in this repository are based on source code obtained from:
Simulating Ionising Radiation in Gazebo for Robotic Nuclear Inspection Challenges
single_source is a simplified rectangular-room world with a radiation source placed at the center of the room.
It is useful for more intuitive and visually interpretable demonstrations of radiation-aware navigation and avoidance behavior.
single_source_waypoint.launch.py includes scripts/radiation_logger.py, which records radiation intensity and robot pose during navigation.
The logger stores CSV files under:
data/cumulation/<world_name>/For the current single_source waypoint setup, the logged CSV is configured as:
data/cumulation/single_source/avoid_thres30_60deg_ver4.csvThe logger records:
- time
- radiation intensity
- robot position
- robot yaw
You can analyze cumulative exposure results using:
python3 scripts/cumulation_analyzer.pyThe analyzer is configured for the single_source experiment and compares:
no_avoid_vel10.csvavoid_thres30_60deg_ver4.csv
It produces three plots:
- Time-Intensity
- Trajectory
- Time-Cumulative Exposure
Example:
RCI_radiation/
├── .gitignore
├── CMakeLists.txt
├── LICENSE
├── README.md
├── package.xml
├── plugin_description.xml
├── config/
├── data/
├── include/
│ └── radiation_simulation/
├── launch/
├── map/
├── models/
├── rviz/
├── scripts/
├── src/
├── urdf/
└── worlds/-
Radiation Source Plugin Publishes source intensity from Gazebo models and supports runtime updates.
-
Radiation Sensor Plugin Detects radiation intensity using source distance, attenuation, and obstacle interaction, and publishes measurement topics.
-
Radiation Obstacle Plugin Publishes attenuation coefficients for obstacle models based on material properties.
-
Radiation Map Generator Builds and publishes radiation-related map and visualization data.
-
Radiation Visualization Node Displays total and source-wise detected radiation information.
-
Radiation Local / Global Costmap Layers Extends Nav2 layered costmaps with radiation-aware cost information.
-
Waypoint Navigation Executes waypoint-based autonomous navigation using Nav2.
- This README intentionally focuses on simulation, plugins, radiation-aware costmaps, navigation, and logging utilities.
- Source localization-related components are not covered here.
- This repository itself is the
radiation_simulationROS 2 package. - Some logs, messages, comments, or auxiliary outputs in this repository are written in Korean.
The radiation-related plugin design was developed with reference to:
- Wright, T., West, A., Licata, M., Hawes, N., and Lennox, B. Simulating Ionising Radiation in Gazebo for Robotic Nuclear Inspection Challenges. Robotics, 2021, 10(3):86. DOI: 10.3390/robotics10030086
The radiation-aware navigation and layered costmap design was developed with reference to:
- West, A., Wright, T., Tsitsimpelis, I., Groves, K., Joyce, M. J., and Lennox, B. Real-Time Avoidance of Ionising Radiation Using Layered Costmaps for Mobile Robots. Frontiers in Robotics and AI, 2022, 9:862067. DOI: 10.3389/frobt.2022.862067
The autonomous navigation simulation program for radiation map construction developed in this project has been officially registered for copyright.
This project is licensed under the MIT License - see the LICENSE file for details.
Maintainer: jth8090 (jth8090@khu.ac.kr)
Lab: RCI Lab @ Kyung Hee University