This project features the simulation of a custom vehicle with Ackermann steering capabilities, developed using ROS2 and the Gazebo Sim Harmonic environment. The model integrates a variety of sensors and navigation tools for autonomous operation, making it one of the first implementations of an Ackermann steering vehicle in this simulation framework.
| 3D LiDAR Point Cloud Visualization | Warehouse Environment Model |
|---|---|
![]() |
![]() |
Note: By default, only the front camera is bridged to ROS 2.If you want to use all cameras (left, right, rear) in ROS 2,remove the
#at the beginning of the relevant camera sections insaye_bringup/config/ros_gz_bridge.yamlto activate them (e.g.,/camera/left_raw,/camera/right_raw,/camera/rear_raw).
sudo apt-get install ros-${ROS_DISTRO}-ros-gz
sudo apt-get install ros-humble-ros-gzharmonic (Only Humble version)
More details about installation Gazebo and ROS: Link 1. Clone the repository:
mkdir -p ackermann_sim/src && cd ackermann_sim/src
git clone https://github.com/alitekes1/ackermann-vehicle-gzsim-ros2
cd ..
2. Build the project:
colcon build && source install/setup.bash
3. Set environment variables:
bash
# Set environment variables for current session
export GZ_SIM_RESOURCE_PATH=$GZ_SIM_RESOURCE_PATH:/your/path/ackermann_sim/src/ackermann-vehicle-gzsim-ros2/
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/your/path/ackermann_sim/src/ackermann-vehicle-gzsim-ros2/
For Permanent Setup:
To make these environment variables permanent, add them to your .bashrc file:
```bash
# Add environment variables to .bashrc
echo 'export GZ_SIM_RESOURCE_PATH=$GZ_SIM_RESOURCE_PATH:/your/path/ackermann_sim/src/ackermann-vehicle-gzsim-ros2/' >> ~/.bashrc
echo 'export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/your/path/ackermann_sim/src/ackermann-vehicle-gzsim-ros2/' >> ~/.bashrc
# Apply changes source ~/.bashrc ```
Note: Replace
/your/path/with your actual installation path.
You can also run the simulation using Docker, which ensures a consistent environment across different systems.
Clone the repository:
bash
mkdir -p ackermann_sim/src && cd ackermann_sim/src
git clone https://github.com/alitekes1/ackermann-vehicle-gzsim-ros2
cd ackermann-vehicle-gzsim-ros2
Build and run the Docker container:
bash
docker run -it \
--name ackermann_sim \
--hostname ackermann_sim \
--env="DISPLAY=$DISPLAY" \
--env="QT_X11_NO_MITSHM=1" \
--volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \
--privileged alitekes1/ackermann_sim:latest
If you want to additional terminal for same container
bash
docker exec -it ackermann_sim bash
Note: Inside the container, you can run the simulation commands as normal.
bash
ros2 launch saye_bringup saye_spawn.launch.pybash
ros2 run teleop_twist_keyboard teleop_twist_keyboardbash
ros2 launch saye_bringup slam.launch.py

bash
ros2 launch saye_bringup navigation_bringup.launch.py

Note: The YouTube videos above are played at 4x speed. You can reach the videos by click on the images.
| 3D LiDAR Point Cloud Visualization | Warehouse Environment Model |
|---|---|
![]() |
![]() |
| Gazebo Sim Harmonic | RViz2 |
|---|---|
![]() |
![]() |

$ claude mcp add ackermann-vehicle-gzsim-ros2 \
-- python -m otcore.mcp_server <graph>