![]() |
ros2-ackermann-vehicle-gz-sim-harmonic-nav2 repositorygazebo ros2 nav2 ackerman-steering gzsim saye_bringup saye_control saye_description saye_localization saye_msgs |
|
Repository Summary
Description | This repository includes the simulation of a vehicle with an Ackermann drive system in ROS2 and Gazebo Sim Harmonic, utilizing the Nav2 package for autonomous navigation. |
Checkout URI | https://github.com/alitekes1/ros2-ackermann-vehicle-gz-sim-harmonic-nav2.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-05-27 |
Dev Status | UNKNOWN |
CI status | No Continuous Integration |
Released | UNRELEASED |
Tags | gazebo ros2 nav2 ackerman-steering gzsim |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Packages
Name | Version |
---|---|
saye_bringup | 0.0.0 |
saye_control | 0.0.0 |
saye_description | 0.0.0 |
saye_localization | 0.0.0 |
saye_msgs | 0.0.0 |
README
Ackermann Steering Vehicle Simulation in ROS2 with Gazebo Sim Harmonic
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.
Features
1. Ackermann Steering
- A custom vehicle model built with realistic Ackermann steering dynamics for accurate maneuverability.
2. ROS2 Communication
- All sensor data and control signals are fully integrated into the ROS2 ecosystem for seamless interoperability.
3. Sensors
- 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
4. Navigation
- 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.
5. Manual Control (with external joystick)
- Added support for joystick-based manual control in the simulation environment, enabling users to test vehicle movement interactively.
6. Visualization
- Full model and sensor data visualization in RViz2, providing insights into robot states and environmental feedback.
Requirements
- ROS2 (Humble)
- Gazebo Sim Harmonic
- RViz2
- Nav2
Installation and Usage
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
).
Future Work
-
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.
Gallery
Gazebo Sim Harmonic | RViz2 |
---|---|
![]() |
![]() |