Skip to content

Latest commit

 

History

History
59 lines (40 loc) · 4.19 KB

File metadata and controls

59 lines (40 loc) · 4.19 KB

Multi-Modal Reinforcement Learning-based Testing of Autonomous Driving Systems

To facilitate reviewing our proposed approach, reviewers please refer to the corresponding data in this repository.

This repository contains:

  1. deepqtest-project - all related algorithms and source code for conducting the experiment;
  2. formal-experiment - all the raw data for the experiment results and analyses;
  3. rest-api - the list of REST API endpoints for configuring the environment.

Description

Autonomous driving systems (ADSs) make driving decisions in uncertain and dynamic environments themselves. Thus, systematic ADS testing is important to ensure the dependability of ADS. The high-dimensional environment, the virtually infinite number of possible test scenarios, and dynamic environmental conditions, including weather, which introduce additional uncertainties, make exhaustive testing infeasible and require adaptive, online testing. Existing Reinforcement Learning (RL)-based testing approaches typically rely on single-modality state representations, which cannot realistically capture the heterogeneous information in ADS environments. To this end, we present DeepQTest, an adaptive RL-based testing approach that generates critical scenarios using a multi-modal state representation and a multi-modal Q-Network for Deep Q-Learning, fusing sensor data from different sources. We evaluated DeepQTest on an industrial-scale ADS with reward functions based on a set of safety and comfort measures, and compared it with four baselines from the literature. Evaluation results show that DeepQTest demonstrated significantly better effectiveness in generating scenarios that lead to collisions and in ensuring scenario realism than the baselines.

DeepQTest Overview

Prerequisite

Usage Example

Install the dependencies using requirement.txt

pip install -r requirements.txt

Run the environment configuration API script, and use the following function to set up the testing environment

def initialization(enable='True', simulationtime=3, date='2021-7-8', time='8:00:00', city='SanFrancisco', road_start='road1_start',
                   destination=(-300.34, 10.20, -14.54)):

    requests.post("http://127.0.0.1:5000/deepqtest/lgsvl-api/set-simulationtime?simulationtime={}".format(simulationtime))
    requests.post("http://127.0.0.1:5000/deepqtest/lgsvl-api/load-map?map={}&road_start={}".format('SanFrancisco', road_start))
    requests.post("http://127.0.0.1:5000/deepqtest/lgsvl-api/set-datetime?date={}&time={}".format(date, time))
    requests.post("http://127.0.0.1:5000/deepqtest/lgsvl-api/load-city-weather?city={}&date={}".format(city, date))

    requests.post("http://127.0.0.1:5000/deepqtest/lgsvl-api/connect-dreamview")
    requests.post("http://127.0.0.1:5000/deepqtest/lgsvl-api/enable-modules")
    requests.post("http://127.0.0.1:5000/deepqtest/lgsvl-api/set-destination?des_x={}&des_y={}&des_z={}".format(destination[0], destination[1], destination[2]))

Configure the environment by calling REST APIs

requests.post("http://127.0.0.1:5000/deepqtest/lgsvl-api/agents/pedestrian/cross-road?direction=right")

People