⚠️ Work in Progress
This setup is currently under active development.
This project aims to use a Voronoi-partition-based exploration algorithm to enable multiple robots to autonomously navigate and explore an environment.
- ROS2 Humble
- TurtleBot Packages
turtlebot4(for TurtleBot 4)turtlebot3(for TurtleBot 3)
Clone and build the workspace:
git clone https://github.com/akifbayram/ros2_voronoi.git
cd ~/ros2_voronoi
colcon build-
Launch Simulation and Map Merge Node:
This launch file starts a Gazebo simulation with a specified number of TurtleBot3 robots. Each robot runs its own SLAM Toolbox node and contributes to a unified merged map. It establishes static transforms from the global
mapframe to each robot’s namespace based on the robot_count parameter.cd ~/ros2_voronoi && source install/setup.bash && ros2 launch voronoi tb3.launch.py robot_count:=3
-
Start Exploration:
cd ~/ros2_voronoi && source install/setup.bash && ros2 run voronoi voronoi_tb3
Alternatively,
ros2 run voronoi voronoi_tb3_frontiercan be used which utilizes frontier-based exploration with voronoi partitioning, closely aligning to the algorithm described in the research paper.
-
Launch go2_ros2_sdk:
Requires
go2_ros2_sdkcd ~/ros2_ws && source install/setup.bash && export ROBOT_IP="robot_ip" && export CONN_TYPE="webrtc" && ros2 launch go2_robot_sdk robot.launch.py
-
Start launch script:
This launch file starts the
merge_mapnode to merge the robot maps and establishes static transforms from the global merged map frame to each robot's individual namespace, based on the user-defined robot_count.cd ~/ros2_voronoi && source install/setup.bash && ros2 launch go2.launch.py
-
Begin Exploration:
cd ~/ros2_voronoi source install/setup.bash && ros2 run voronoi voronoi_go2
-
voronoi_tb3:- Robots remain stationary after detecting an obstacle and fail to replan.
- Robot namespace and count are hardcoded in the script.
- Information nodes have not been implemented.
- Does not explicitly consider communication range constraints when determining neighboring robots.
-
tb3.launch.py
- TODO: Utilize Nav2 instead of manual navigation.
-
voronoi_go2: Untested -
tb4.launch.py: Users may experience intermittent issues with launching SLAM, Nav2, or RViz for additional TurtleBot4 units.
This project draws inspiration and code from the following repositories:
-
abdulkadrtr/ROS2-FrontierBaseExplorationForAutonomousRobot:
For path planning, following, obstacle avoidance, and frontier-based exploration. -
abdulkadrtr/mapMergeForMultiRobotMapping-ROS2: For multi robot map merging.
-
Connected-and-Autonomous-Systems-Lab/Voronoi:
Provides the Voronoi-based exploration algorithm used in this project.- This repository is itself adapted from Peace1997/Voronoi_Based_Multi_Robot_Collaborate_Exploration_Unknow_Enviroment
The following transform tree is produced using the tb3.launch.py launch file.

