Version - 2.14.15
Simple_AV is an autonomous vehicle simulation project designed to integrate various modules, including perception, localization, planning, and control, within a simulated environment provided by AWSIM. The primary purpose of this project is to create a functional and modular autonomous vehicle system that can interact with a simulated environment, enabling testing and development in a controlled setting. Simple_AV offers a simplified alternative to Autoware for autonomous vehicle control. Built with simplicity and flexibility in mind, Simple_AV provides a straightforward approach to vehicle navigation and control, making it an ideal choice for developers seeking a lightweight solution without sacrificing functionality.
For a detailed explanation of the project, please refer to the documentation hosted on GitHub Pages.
-
AWSim Integration: Simple_AV seamlessly connects to the AWSim environment, enabling communication with simulated vehicles and environments. By subscribing to AWSim topics, Simple_AV gathers essential data for navigation and control.
-
Simplified Control Logic: Simple_AV adopts a minimalist approach to control logic, focusing on essential functionalities for autonomous navigation. By utilizing different approaches, Simple_AV offers flexibility in control strategies, catering to various use cases and requirements.
-
Modular Design: With a modular architecture, Simple_AV facilitates easy customization and extension. Developers can seamlessly integrate additional functionalities or modify existing modules to suit specific project needs.
-
User-Friendly Configuration: Simple_AV prioritizes ease of use, providing intuitive configuration options for seamless setup and deployment. Developers can quickly configure parameters to adapt Simple_AV to specific vehicle models or simulation environments.
-
Open-Source and Community-Driven: Simple_AV is an open-source project, fostering collaboration and innovation within the robotics community. Developers are encouraged to contribute, share insights, and extend the functionality of Simple_AV for collective benefit.
By offering a lightweight alternative to Autoware, Simple_AV empowers developers to streamline autonomous vehicle development workflows, reduce complexity, and accelerate project deployment. Whether used for research, prototyping, or industrial applications, Simple_AV delivers simplicity without compromising on performance or functionality.
This repository contains the following key directories:
- simple_av/: Contains the main nodes for the Simple_AV system, including
control.py,localization.py,perception.pyandplanning.py. - V2X_messages/: Includes the custom ROS message definitions that interface with the AWSIM environment.
- simple_av_msgs/: Defines internal message types used for communication between the Simple_AV nodes.
- .github/workflows/: Contains the GitHub Actions workflows for Continuous Integration (CI) and deployment of the documentation.
- docs/: The source files for the project documentation, written using MkDocs.
- mkdocs.yml: The configuration file for MkDocs, which defines the structure and theme of the documentation site.
To use this project, you'll need to set up a ROS 2 workspace and clone the necessary packages.
Refer to the simple av system setup page in the Simple_AV documentation for detailed instructions.
First, create a new ROS workspace:
mkdir -p ~/ros_ws/srcNext, clone this repository into the src directory of your workspace:
cd ~/ros_ws/src
git clone https://github.com/hoosh-ir/simple_av.gitcd ~/ros_ws/src/simple_av
chmod +x ros_dependencies.sh
./ros_dependencies.sh
pip install -r requirements.txtAfter cloning the repository, build the workspace using colcon:
cd ~/ros_ws/
colcon buildThe workspace should look like this after running colcon build:
ros_ws/
├── build/
├── install/
├── log/
└── src/
├── docs/
├── mkdocs.yml
├── README.md
└── src/
├── V2X_messages/
├── simple_av_msgs/
├── common/
├── system/
├── control/
├── localization/
├── planning/
├── perception/
├── visualization/
├── simple_av_logger/
└── simple_av/
├── simple_av/
├── package.xml
├── resource/
├── setup.cfg
├── setup.py
└── launch/
└── launch_all.pyFinally, source the workspace to make the ROS packages available:
source ~/ros_ws/install/setup.bashYou can run the project by either running the launch file or by manually starting each node in sequence.
Run the launch file:
ros2 launch simple_av launch_all.pyOr, run the nodes manually in the following order:
ros2 run localization localization
ros2 run localization intersection_detector
ros2 run system portal
ros2 run system sim_monitor
ros2 run perception traffic_light_handler
ros2 run perception object_detection_handler
ros2 run planning mission_planning
ros2 run planning behavior_path_planner
ros2 run planning behavior_motion_planner
ros2 run control controller-
scenario_config: you can change the destination or vehcile model in this file. Vehicle model can be lexus or bus, depends on the scene and the vehicle model on the scene. Changing the vehicle_model to lexus/bus will change the json map that the simple_av uses.
-
vehicle_config: Two vehicle model has added to this file, bus and lexus RX450H. this file contains vehicles info like dimensions, weight and speed limits. If you want to use another vehicle model you can add its info here.
-
motion_behavior_config: In this file the motion and behavioral configs such as threshold time for collision prediction, safety distance and speed limits are set.
-
av_features: On/Off features like traffic light detection and object detection
-
logger_config: On/Off logger module and set log_time_interval.
-
The log files will be stored in this address ros_ws/install/simple_av_logger/share/simple_av_logger/data
Full documentation for the project, including architecture details, usage instructions, and API references, can be found documentation.