This project demonstrates the development of a SLAM (Simultaneous Localization and Mapping) bot using ROS and Gazebo. The process involves creating a robot model in Fusion 360, exporting it to URDF, adding functionality with Gazebo plugins, and implementing SLAM for robot localization and map creation. The entire project is based on the SLAM Robot Simulation playlist by Jerin Peter.
You can watch the demonstration on YouTube by clicking the video below:
- 3D Design: The robot model was created using Fusion 360 and exported to URDF.
- Gazebo Integration: The robot is simulated in Gazebo with LIDAR and differential drive functionality.
- Custom Environment: A custom Gazebo world was created to test the robot.
- SLAM Implementation: Used the slam_gmapping package for robot localization and map creation.
- Teleoperation: The robot can be manually controlled using the
teleop_twist_keyboardpackage during simulation. - Visualization: The robot and SLAM process can be visualized using RQT and RViz.
-
Create the Robot Model: Design the robot in Fusion 360, including adding joints, and export it to URDF using the
fusion2urdftool. -
Test the Robot in Gazebo: Import the URDF model into Gazebo and add LIDAR and differential drive functionality through plugins.
-
Create a Gazebo World: Build a custom Gazebo world for the robot and modify the launch file to load it.
-
Implement SLAM: Use the
slam_gmappingpackage for robot localization and map creation. -
Save the Map: Save the generated map after running the SLAM process.
-
Control the Robot: Use the
teleop_twist_keyboardpackage to manually control the robot during the simulation.
-
Gazebo Launch (Simulate the Robot):
roslaunch myrobot_description gazebo.launch
-
RViz Launch (Visualize the Robot):
roslaunch myrobot_description display.launch
-
GMAPPING Launch (Start SLAM for Localization and Map Creation):
roslaunch myrobot_description mapping.launch
-
Teleoperation (Control the Robot Using the Keyboard):
rosrun teleop_twist_keyboard teleop_twist_keyboard.py
-
Saving the map:
rosrun map_server map_saver -f myworld_map
- Python Compatibility: The script for exporting Fusion 360 models to URDF used
distutils.dir_util, which is deprecated in Python 3.10 and above. This caused issues since Fusion 360 uses Python 3.12. I resolved this by replacingdistutilswithshutilfor directory operations, ensuring compatibility with Python 3.12. - Gazebo Plugin Configuration: I encountered difficulties when setting up the Gazebo plugins for LIDAR and differential drive functionality, requiring multiple adjustments to the configuration files.
- Updated Fusion2URDF Plugin: I forked and updated the Fusion2URDF plugin to ensure compatibility with newer Python versions.
A huge thank you to Jerin Peter for his insightful and detailed tutorials. His work served as the foundation for this project and provided the necessary knowledge to successfully develop and simulate the SLAM bot.




