A complete ROS 2 Humble + Gazebo Harmonic simulation of Buggerbot — a differential drive wheeled robot — with a full URDF/SDF model, LiDAR/Camera/IMU sensor suite, keyboard teleoperation, and Nav2 autonomous navigation.
Designed and Created in Solidworks, imported the urdf file and used it for Simulation in Gazebo Harmonic.
Bugggerbot because it had lot of bugs in the first version!
This project can be upgraded. This is the most basic version that i have published.
- Differential Drive — Two-wheeled robot with full wheel odometry
- URDF / SDF Model — Parameterized robot description with meshes and inertial properties
- Sensor Suite — LiDAR, RGB Camera, and IMU publishing to standard ROS 2 topics
- Teleoperation — Keyboard-based manual control
- Nav2 Navigation — Autonomous waypoint navigation with costmaps and path planning
- Gazebo Harmonic — Modern gz-sim with high-fidelity physics and rendering
| Gazebo Simulation | RViz2 Navigation |
|---|---|
![]() |
![]() |
| Dependency | Version |
|---|---|
| OS | Ubuntu 22.04 |
| ROS 2 | Humble Hawksbill |
| Gazebo Sim | Harmonic |
ros_gz bridge |
Humble-compatible |
| Nav2 | Latest for Humble |
# Install Gazebo Harmonic
sudo apt-get install gz-harmonic
# Install ROS dependencies
sudo apt install ros-humble-ros-gz \
ros-humble-nav2-bringup \
ros-humble-navigation2 \
ros-humble-teleop-twist-keyboard \
ros-humble-robot-state-publisher \
ros-humble-joint-state-publisher# 1. Create workspace
mkdir -p ~/ros2_ws/src && cd ~/ros2_ws/src
# 2. Clone the repo
git clone https://github.com/Sharva45/Buggerbot-gz_sim-based-simulation.git
# 3. Install dependencies
cd ~/ros2_ws
rosdep update && rosdep install --from-paths src --ignore-src -r -y
# 4. Build
colcon build --symlink-install
# 5. Source
source install/setup.bash
⚠️ Update the structure above to match your actual directory layout.
Source your workspace before running anything:
source ~/ros2_ws/install/setup.bashros2 launch bugger gz_simulator_launch.pyros2 run teleop_twist_keyboard teleop_twist_keyboard \
--ros-args -r /cmd_vel:=<YOUR_CMD_VEL_TOPIC>ros2 launch bugger navigation.launch.py| Sensor | Topic | Message Type |
|---|---|---|
| LiDAR | /scan |
sensor_msgs/LaserScan |
| Camera | /camera/image |
sensor_msgs/Image |
| IMU | /imu |
sensor_msgs/Imu |
| Odometry | /odom |
nav_msgs/Odometry |
| Cmd Vel | /cmd_vel |
geometry_msgs/Twist |
Run
ros2 topic listafter launching to confirm your actual topic names.
This is an open source project — you are free to use, modify, and build upon it!
All contributions are welcome, whether it's bug fixes, new features, better docs, or new worlds and maps.
- Fork the repository
- Create your branch:
git checkout -b feature/your-feature - Commit your changes:
git commit -m 'Add your feature' - Push to your branch:
git push origin feature/your-feature - Open a Pull Request
Found a bug or have an idea? Open an issue — feedback of any kind is appreciated.
This project is licensed under the MIT License — see the LICENSE file for details.
You are free to use this project for personal, academic, or commercial purposes.
Built with ❤️ using ROS 2 Humble & Gazebo Harmonic | Open Source & Free to Use





