CombinationWithAutoware
Autoware is a powerful open-source software platform for autonomous driving. Its modular architecture, including perception, localization, planning, and control modules, provides a comprehensive framework for developing self-driving vehicles. Autoware combined with AWSIM simulator provides safe testing, validation, and optimization of autonomous driving algorithms in diverse scenarios.
Run with Autoware
If you would like to know how to run AWSIM with Autoware, we encourage you to read this section.
Features#
The combination of Autoware and AWSIM provides the opportunity to check the correctness of the vehicle's behavior in various traffic situations. Below are presented some typical features provided by this combination. Moreover, examples of detecting several bad behaviors are included.
Engagement#
-
Driving straight through an intersection with priority
-
Turning at the intersection
Traffic light recognition#
-
Stopping at a red light
-
Driving on a green light
-
Stopping at yellow light
-
Still driving at yellow light (only when it is too late to stop)
Interaction with vehicles#
-
Yield right-of-way when turning right
-
Following the vehicles ahead
-
Stopping behind the vehicles ahead
-
Cutting-in to a different traffic lane
Interaction with pedestrians#
-
Giving right of way to a pedestrian crossing at a red light
-
Giving way to a pedestrian crossing beyond a crosswalk
Detecting bad behaviors#
-
Incorrect and dangerous execution of a lane change
-
Too late detection of a pedestrian entering the roadway
Combination Architecture#
The combination of AWSIM with Autoware is possible thanks to Vehicle Interface and Sensing modules of Autoware architecture. The component responsible for ensuring connection with these modules from the AWSIM side is EgoVehicle
. It has been adapted to the Autoware architecture and provides ROS2 topic-based communication. However, the other essential component is ClockPublisher
, which provides simulation time for Autoware - also published on the topic - more details here.
EgoVehicle
component provides the publication of the current vehicle status through a script working within Vehicle Status
. It provides real-time information such as: current speed, current steering of the wheels or current states of lights - these are outputs from AWSIM.
On the other hand, Vehicle Ros Input
is responsible for providing the values of the outputs from Autoware. It subscribes to the current commands related to the given acceleration, gearbox gear or control of the specified lights.
Execution of the received commands is possible thanks to Vehicle
, which ensures the setting of appropriate accelerations on the **Wheel
and controlling the visual elements of the vehicle.
The remaining data delivered from AWSIM to Autoware are sensors data, which provides information about the current state of the surrounding environment and those necessary to accurately estimate EgoVehicle
position.
More about EgoVehicle
and its scripts is described in this section.
Sequence diagram#
Below is a simplified sequential diagram of information exchange in connection between AWSIM and Autoware. As you can see, the first essential information published from AWSIM is Clock
- the simulation time. Next, EgoVehicle
is spawned and first sensors data are published, which are used in the process of automatic position initialization on Autoware side. At the same time, the simulation on AWSIM side is updated.
Next in the diagram is the main information update loop in which:
- During each cycle there is a synchronization with the time from the simulation.
- AWSIM publishes data from sensors available in
EgoVehicle
, which are taken into account in the processes carried out in Autoware. - The control commands from Autoware are subscribed by AWSIM, which are executed on AWSIM side and
EgoVehicle
update is performed. - The current state of the
EgoVehicle
is published.
The order of information exchange presented in the diagram is a simplification. The exchange of information takes place through the publish-subscribe model and each data is sent with a predefined frequency.