- Video Demonstration: View on Google Drive
- Backlog: View the Backlog Spreadsheet
- Sprint Plan: View the Sprint Plan Document
This project implements a multi-robot mapping system using ROS2 Humble that enables two carter robots to explore and map an environment collaboratively. The system combines individual SLAM-generated maps from each robot to create a unified, comprehensive map of the environment.
- Frontier-based exploration algorithm for autonomous navigation
- Automatic map expansion and alignment
- Real-time map merging
- Multi-robot coordination
- Visualizations using RViz2
- ROS2 Humble
- Ubuntu 22.04
- C++17 or higher
- OpenCV 4.5+
- Nav2
- SLAM Toolbox
- tf2_ros
sudo apt update
sudo apt install ros-humble-turtlebot3
sudo apt install ros-humble-slam-toolbox
sudo apt install ros-humble-nav2*
sudo apt install ros-humble-tf2-ros
# Create a ROS2 workspace
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
# Clone the repository
git clone https://github.com/Abhishek260101/Warehouse-Atonomous-Robot-System.git
# Install dependencies
sudo rosdep init # if not initialized before
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the package
cd ~/ros2_ws
colcon build --symlink-install
# Source the workspace
source install/setup.bash
- Start the robots and their core functionalities:
ros2 launch frontier_explorer complete.launch.xml
- Rviz Visualization
# For carter1
ros2 run rviz2 rviz2 --ros-args -r /tf:=/carter1/tf -r /tf_static:=/carter1/tf_static
# In another terminal for carter2
ros2 run rviz2 rviz2 --ros-args -r /tf:=/carter2/tf -r /tf_static:=/carter2/tf_static
- To save maps generated by SLAM Toolbox, you can use the map_saver_cli tool from nav2_map_server package.
# For carter1's map
ros2 run nav2_map_server map_saver_cli -f carter1_map --ros-args -r map:=/carter1/map
# For carter2's map
ros2 run nav2_map_server map_saver_cli -f carter2_map --ros-args -r map:=/carter2/map
- To merge the map save the maps in workspace root and run the map_merger.py script from the map_merger folder
src/frontier_explorer/
├── CMakeLists.txt
├── config
│ └── slam_toolbox_config.yaml
├── include
│ └── frontier_explorer
│ └── frontier_explorer.hpp
├── launch
│ ├── complete.launch.xml
│ └── slam.launch.xml
├── package.xml
├── src
│ ├── frontier_explorer.cpp
│ └── main.cpp
└── test
└── frontier_explorer_test.cpp
colcon build --packages-select frontier_explorer
colcon test --packages-select frontier_explorer --event-handlers console_direct+
lcov --directory build/frontier_explorer --capture --output-file coverage.info
lcov --remove coverage.info '/opt/*' '/usr/*' '*/test/*' --output-file coverage.filtered
genhtml coverage.filtered --output-directory coverage_report
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Abhishek Avhad
- Kashif Ansari
- Piyush Goenka
- Map alignment may need manual adjustment in certain scenarios
- Frontier detection sensitivity might need tuning based on environment
- Transform lookups may timeout in large environments
- Implementation of more sophisticated map merging algorithms
- Integration with 3D mapping capabilities
- Enhanced multi-robot coordination strategies
- ROS2 Community
- NVidia community
Common issues and solutions:
- Transform timeout errors:
- Increase transform timeout in parameter files
- Navigation issues:
- Check Nav2 parameters
- Verify map resolution
- SLAM issues:
- Adjust SLAM Toolbox parameters
- Check sensor data