A comprehensive ROS2-based framework for autonomous vehicle simulation, featuring cooperative driving scenarios, multi-robot coordination, and advanced navigation algorithms. The system uses Docker Compose for easy deployment and provides Gazebo simulation with RViz visualization.
- Multi-Robot Simulation: Support for multiple autonomous vehicles in coordinated scenarios
- CACC Implementation: Cooperative Adaptive Cruise Control for platooning scenarios
- Advanced Navigation: Integration with ROS2 Navigation2 stack for path planning and obstacle avoidance
- Wall Following: Robust wall-following algorithms using LIDAR data
- Docker-based Deployment: Simple containerized deployment - no manual installation required
- Real-time Visualization: Gazebo 3D simulation with RViz integration
Prerequisites: Docker with docker compose support
- Clone the repository:
git clone https://github.com/HarunTeper/AuNa.git cd AuNa
The only supported method is through Docker Compose.
Important: Before running a scenario, configure the world in the .env file:
-
Edit the
.envfile in the project root:# For racing scenario WORLD_NAME=racetrack_decorated # For platooning scenario WORLD_NAME=arena
-
Launch the scenario:
Set WORLD_NAME=racetrack_decorated in .env, then run:
docker compose --profile racing upSet WORLD_NAME=arena in .env, then run:
docker compose --profile platooning upracetrack_decorated- Racing track environment (default for racing)arena- Open arena environment (default for platooning)
After launching, Gazebo and RViz windows will start automatically.
Once the simulation starts, you'll see both Gazebo (simulation) and RViz (visualization) windows.
-
Enter the namespace in RViz for each robot you want to control:
- Format:
robot+ index (starting from 1) - Examples:
robot1,robot2,robot3
- Format:
-
Select input source after entering the namespace:
- Default:
off(no autonomous control) - Available sources:
wallfollowing- Follow walls using LIDARteleop- Manual keyboard controlnav2- Navigation2 path planningcacc- Cooperative Adaptive Cruise Control
- Default:
For racetrack_decorated world:
- Use
wallfollowingfor autonomous wall following - Use
nav2for goal-based navigation
For arena world:
- Use
nav2for goal-based navigation - Use
caccfor coordinated movement
For all worlds:
- Use
caccfor following the leader robot in formation
-
Start simulation:
docker compose --profile sim_scenario up
-
In RViz window:
- Enter namespace:
robot1 - Select input source:
wallfollowing(for leader on racetrack)
- Enter namespace:
-
For additional robots:
- Enter namespace:
robot2 - Select input source:
cacc(follower)
- Enter namespace:
-
Docker containers fail to start:
# Check Docker daemon sudo systemctl status docker # Rebuild containers docker compose build --no-cache
-
Gazebo crashes or has poor performance:
# Check GPU drivers (for NVIDIA GPUs) nvidia-smi # Reduce graphics quality in Gazebo settings # Or disable GPU acceleration: LIBGL_ALWAYS_SOFTWARE=1
-
RViz namespace not working:
- Ensure you enter the exact namespace format:
robot1,robot2, etc. - Check that the robot containers are running:
docker compose ps
- Ensure you enter the exact namespace format:
-
Input source changes not taking effect:
- Wait a few seconds after selecting the input source
- Check the robot's status in the control panel interface
The framework consists of several ROS2 packages organized by functionality:
auna_gazebo- Gazebo simulation environment and robot modelsauna_control- Input source selection and command multiplexingauna_ground_truth- Ground truth localization from simulation
auna_nav2- Navigation2 integration and path planningauna_cacc- Cooperative Adaptive Cruise Control for platooningauna_wallfollowing- Wall-following algorithms using LIDARauna_waypoints- Waypoint management and route planning
auna_ekf- Extended Kalman Filter for sensor fusionauna_tf- Transform frame management and broadcasting
auna_comm- V2X communication protocols and CAM messagesauna_msgs- Custom ROS2 message and service definitionsauna_its_msgs- ITS (Intelligent Transportation Systems) messagesauna_omnet- OMNeT++ network simulation integration
auna_teleoperation- Manual keyboard and joystick control
auna_common- Shared utilities and helper functionsauna_template- Template package for new development
auna_f110- F1/10 race car platform integration
This repository includes comprehensive GitHub Copilot instructions to help you develop more effectively. See .github/copilot-instructions.md for:
- Project-specific coding patterns and conventions
- ROS2 development guidelines
- Multi-robot system considerations
- Package-specific development tips
- Fork the repository
- Create a feature branch:
git checkout -b feature/my-new-feature
- Make changes and commit:
git commit -am 'Add some feature' - Push to the branch:
git push origin feature/my-new-feature
- Create a Pull Request
This project's licensing is under development. Please refer to individual package licenses for specific components and check with the maintainers for usage permissions.
- ROS2 Community: For the robust robotics framework
- Navigation2 Team: For the navigation stack
- Gazebo Team: For the simulation environment
- Contributors: All researchers and developers who contributed to this project
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: harun.teper@tu-dortmund.de
Happy Autonomous Navigation! ๐๐ค
