A complete autonomous differential drive robot built with ROS 2 Jazzy. This project demonstrates Simulation, Simultaneous Localization and Mapping (SLAM), and Navigation using Gazebo Harmonic.
- 🕹️ Teleoperation: Manual control using keyboard teleop.
- 🗺️ SLAM (Simultaneous Localization & Mapping): Generates 2D occupancy grid maps using
slam_toolbox. - 🧠 Autonomous Navigation: Ready for integration with the Nav2 stack for path planning.
- 👁️ Perception: Equipped with Lidar sensors (simulated in Gazebo).
- 🏗️ Custom Worlds: Includes a specialized maze environment optimized for mapping tests.
- OS: Ubuntu 24.04 (Noble Numbat)
- ROS 2 Distro: Jazzy Jalisco
- Simulator: Gazebo Harmonic (
ros-jazzy-ros-gz)
Install the required ROS 2 packages:
sudo apt install ros-jazzy-navigation2 ros-jazzy-nav2-bringup ros-jazzy-slam-toolbox ros-jazzy-ros-gz
- Clone the repository:
mkdir -p ~/bot_ws/src
cd ~/bot_ws/src
# Replace with your repo URL
git clone [https://github.com/sudoaptinstalltarun/articulat_bot.git](https://github.com/sudoaptinstalltarun/articulat_bot.git) .
- Build the workspace:
cd ~/bot_ws
colcon build --symlink-install
source install/setup.bash
Start the robot in the custom Gazebo Maze environment.
Standard Launch:
ros2 launch my_bot launch_sim.launch.py
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia ros2 launch my_bot launch_sim.launch.py
To create a new map of the environment:
Step A: Start SLAM
ros2 launch slam_toolbox online_async_launch.py use_sim_time:=true
Step B: Control the Robot Open a new terminal and run:
ros2 run teleop_twist_keyboard teleop_twist_keyboard
Step C: Visualize Open RViz to see the map building in real-time:
rviz2
(Add the "Map" and "LaserScan" topics in the RViz window)
Step D: Save Map When finished mapping, run:
ros2 run nav2_map_server map_saver_cli -f ~/my_map
my_bot/
├── launch/ # Launch files for Simulation and SLAM
├── description/ # Robot URDF/Xacro files (lidar, chassis, properties)
├── worlds/ # Custom Gazebo world files (maze.world)
├── config/ # Configuration parameters (SLAM toolbox, etc.)
└── package.xml
Tarun GitHub: @sudoaptinstalltarun