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.
- A custom vehicle model built with realistic Ackermann steering dynamics for accurate maneuverability.
- All sensor data and control signals are fully integrated into the ROS2 ecosystem for seamless interoperability.
- IMU: Provides orientation and angular velocity.
- Odometry: Ensures accurate vehicle state feedback.
- LiDAR: Mounted for obstacle detection and environmental scanning.
- Cameras:
- Front-facing
- Rear-facing
- Left-side
- Right-side
- Integrated with the Nav2 stack for autonomous navigation.
- AMCL (Adaptive Monte Carlo Localization) for improved positional accuracy.
- SLAM techniques implemented for real-time mapping and understanding of the environment.
- Fine-tuned parameters for optimized navigation performance.
- Added support for joystick-based manual control in the simulation environment, enabling users to test vehicle movement interactively.
- Full model and sensor data visualization in RViz2, providing insights into robot states and environmental feedback.
- ROS2 (Humble)
- Gazebo Sim Harmonic
- RViz2
- Nav2
Run the following commands to set up and launch the simulation:
-
Your need to sure that installation of Gazebo Harmonic and ROS (ros_gz):
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 -
Clone the repository:
mkdir -p ackermann_sim/src && cd ackermann_sim/src
git clone https://github.com/alitekes1/ros2-ackermann-vehicle-gz-sim-harmonic-nav2
cd ..
-
Build the project:
colcon build && source install/setup.bash
-
Set environment variables:
# Set environment variables for current session export GZ_SIM_RESOURCE_PATH=$GZ_SIM_RESOURCE_PATH:/your/path/ackermann_sim/src/ros2-ackermann-vehicle-gz-sim-harmonic-nav2/ export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/your/path/ackermann_sim/src/ros2-ackermann-vehicle-gz-sim-harmonic-nav2/
For Permanent Setup:
To make these environment variables permanent, add them to your
.bashrc
file:# Add environment variables to .bashrc echo 'export GZ_SIM_RESOURCE_PATH=$GZ_SIM_RESOURCE_PATH:/your/path/ackermann_sim/src/ros2-ackermann-vehicle-gz-sim-harmonic-nav2/' >> ~/.bashrc echo 'export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/your/path/ackermann_sim/src/ros2-ackermann-vehicle-gz-sim-harmonic-nav2/' >> ~/.bashrc # Apply changes source ~/.bashrc
Note: Replace
/your/path/
with your actual installation path. -
Launch the simulation:
ros2 launch saye_bringup saye_spawn.launch.py
-
Control car:
ros2 run teleop_twist_keyboard teleop_twist_keyboard
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 in
saye_bringup/config/ros_gz_bridge.yaml
to activate them
(e.g.,/camera/left_raw
,/camera/right_raw
,/camera/rear_raw
).
- Deep Reinforcement Learning (DRL):
- Train the vehicle to handle complex scenarios autonomously using advanced DRL algorithms.
- Enhanced Features:
- Explore additional sensor configurations and navigation strategies.
Gazebo Sim Harmonic | RViz2 |
---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |