Quick Start Demo
1. Simple AV Project
Repository Structure
This repository contains the following key directories:
Directory | Description |
---|---|
simple_av/ | Contains the main launch file to run the entire Simple-AV system. |
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. |
common/ | Contains shared data such as maps, configurations, and zones that are utilized by multiple modules. |
system/ | Includes utility nodes like portal for scenario repetition and sim_monitor for monitoring simulation delay. |
control/ | Contains the control node responsible for executing vehicle maneuvers. |
localization/ | Contains nodes for determining the vehicle's position, including localization and intersection_detector . |
planning/ | Includes planning nodes such as mission_planning , behavior_path_planning , and behavior_motion_planning . |
perception/ | Contains perception nodes, including traffic_light_handler and object_detection_handler . |
Getting Started
To use this project, you'll need to set up a ROS 2 workspace and clone the necessary packages.
Step 0: Setup the Environment.
Refer to the system setup page for detailed instructions.
Step 1: Create a ROS Workspace
First, create a new ROS workspace:
mkdir -p ~/ros_ws/src
Step 2: Clone the Repository
Next, clone this repository into the src directory of your workspace:
cd ~/ros_ws/src
git clone https://github.com/hoosh-ir/simple_av.git
Step 3: Build the Workspace
After cloning the repository, build the workspace using colcon:
cd ~/ros_ws/
colcon build
The 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/
└── simple_av/
├── package.xml
├── resource/
├── setup.cfg
├── setup.py
└── launch/
└── launch_all.py
Step 4: Source the Workspace
Finally, source the workspace to make the ROS packages available:
source ~/ros_ws/install/setup.bash
Step 5: Running the Project
You 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.py
Or, 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_planning
ros2 run planning behavior_motion_planning
ros2 run control control
2. Running Simple-AV with AWSIM
Simple-AV is designed to work seamlessly alongside AWSIM. AWSIM acts as the simulation environment, providing sensor data and scene information. Simple-AV processes this data to perform localization, perception, planning, and control tasks. The computed control commands are then sent back to AWSIM, which moves the vehicle accordingly within the simulated environment.
AWSIM Integration
AWSIM serves as the primary source of sensory input for Simple-AV. The data, such as GNSS positions, detected objects, and traffic signal states, is received from AWSIM. Simple-AV processes this data and generates the necessary control commands (throttle, brake, steering), which are sent back to AWSIM to move the vehicle in the scene.
V2X_E2E Project
We have developed another open-source project named V2X_E2E, which integrates with Simple-AV to extend the capabilities of AWSIM. For more information about how to use our latest version and how to modify the scenes, please visit V2X_E2E Project Page.
If you do not wish to modify AWSIM scenes using Unity, you can use the pre-built versions of AWSIM provided. These versions come with pre-configured scenes and vehicle models (Lexus and Bus) for straightforward testing.
The Scenes below are built for Windows environment. stay tuned for the ubuntu builds.