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