A comprehensive simulation environment for the ShunkoBot robot using ROS2 and Gazebo, with Docker support for easy deployment and development. This project provides a complete simulation platform for the ShunkoBot robot in 3D virtual environments using Gazebo. The simulation includes:
- Full robot model with accurate physics simulation
- Navigation and mapping capabilities
- Sensor simulation (LiDAR, cameras, IMU)
- Multiple environment scenarios
- Docker containerization for cross-platform compatibility
You can run the simulation either through Docker for quick setup or using a native ROS2 workspace for development.
SLAM: Mapping the environment using Cartographer
Navigation: Path planning and localization, respectively with AMCL and Cartographer
You can watch ShunkoBot in action in simulation on Youtube, by clicking on the following image:
- Project Structure
- Requirements
- Installation
- Development
- Contributing
- Additional Info
- License
- Contact
ShunkoBot_GazeboSim/
├── docker_ws/ # Docker configuration and setup
│ └── Dockerfile # Container definition
├── ros_ws/ # ROS2 workspace
│ ├── src/
│ │ ├── shk_description/ # Utilities
│ │ ├── shk_simulation/ # Simulation nodes and utilities
│ │ ├── shk_navigation/ # Navigation stack configuration
│ │ └── shk_cartographer/ # SLAM configuration
│ ├── build/ # Build artifacts
│ └── install/ # Installation files
├── Makefile # Build and run automation
└── README.md # This file
Tested on Fedora Linux 42 (Fedora Asahi Remix on Apple Silicon M1) and on Ubuntu 22.04 on a PC with Windows 11 using WSL, using Docker in all cases.
- Docker with GUI support
Ensures a consistent environment across different systems, avoiding dependency and configuration issues. - X11 server (Linux)
Required for GUI applications. - 8GB+ RAM
Recommended to allow smooth execution of containers with GUI and compute-intensive tasks.
- ROS2 Jazzy
- Ignition Gazebo (aka Gazebo since Aprile 2022)
-
Clone the repository:
git clone https://github.com/simo1101/ShunkoBot_GazeboSim.git cd ShunkoBot_GazeboSim -
Start Docker service (according to your operating system):
# Example on Fedora sudo systemctl start docker -
Build the Docker image:
make build
-
Run the simulation:
make run
Inside the container:
colcon build source install/setup.bash -
Launch simulation:
ros2 launch shk_simulation shk_house.launch.py
| Command | Description |
|---|---|
make build |
Build the Docker image |
make run |
Start a new container with GUI support |
make exec |
Enter an existing running container |
make x11_permissions |
Grant X11 permissions for GUI apps |
make x11_revoke |
Revoke X11 permissions |
make chown_me |
Fix file ownership issues |
make run_colcon |
Run colcon build inside the container and exit immediately |
-
Clone and build:
git clone https://github.com/simo1101/ShunkoBot_GazeboSim.git cd ShunkoBot_GazeboSim/ros_ws colcon build source install/setup.bash
-
Launch simulation:
ros2 launch shk_simulation shk_house.launch.py
Note
Important Development Workflow
When making changes to the codebase, always remember to:
- Save all modified files before building
- Run
colcon buildto compile your changes - Source the workspace with
source install/setup.bash - Test your changes before committing
This ensures that your modifications are properly compiled and available in the ROS2 environment.
After modifying any package or configuration:
# In Docker container or native setup
colcon build
source install/setup.bashor build once and exit
# In Docker container or native setup
make run_colcon- Place your
.worldfiles inshk_simulation/worlds/ - Create corresponding launch files in
shk_simulation/launch/ - Rebuild the workspace
- No GUI in Docker: Check X11 permissions with
make x11_permissions - Build errors: Ensure all dependencies are installed
- File permissions: Use
make chown_meto fix ownership issues (e.g., when removing folders created as root from terminal, such asbuild/orlog/after acolcon build, which are otherwise inaccessible from the file explorer).
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Make your changes and test thoroughly
- Commit with clear messages:
git commit -m "Add feature description" - Push and create a Pull Request
If you are interested in learning more, you can find detailed explanations in the READMEs of each module and in the full project report!
This project is distributed under a dual-license model:
Open Source License: AGPLv3
The source code is licensed under the GNU Affero General Public License v3.0 (AGPLv3).
You are free to:
- Use the software for personal, educational, or research purposes
- Modify and redistribute the code
- Use it commercially, as long as you comply with the AGPLv3 terms — including making any modifications publicly available
AGPLv3 requires you to release your source code even if the software is used over a network (e.g., SaaS).
If you wish to use this software in a commercial context without being bound by the terms of AGPLv3 (for example:
- incorporating it into a proprietary product,
- offering commercial services without disclosing source code,
- avoiding copyleft obligations),
a paid commercial license is available.
For commercial licensing inquiries, please contact: shunkobotstmv@gmail.com
Using this software without complying with the AGPLv3 or without a valid commercial license is strictly prohibited
and may result in legal action for copyright infringement.
This project includes code from:
-
ROBOTIS CO., LTD.
Copyright (c) 2019 ROBOTIS CO., LTD. -
The Cartographer Authors Copyright (c) 2016 The Cartographer Authors
-
Open Source Robotics Foundation (OSRF)
Copyright (c) 2012 Open Source Robotics Foundation
All such files retain their original license and copyright notices.
You may use these files under the terms of the Apache License 2.0.
For commercial licensing inquiries or any questions regarding the use of this project, please contact us at: shunkobotstmv@gmail.com


