Summary of AV-Fuzzer [ISSRE'20]
===
[AV-Fuzzer: Finding Safety Viloations in Autonomous Driving Systems](https://research.nvidia.com/sites/default/files/pubs/2020-10_AV-FUZZER%3A-Finding-Safety//ISSRE_2020_AV_Fuzzer.pdf).
UIUC, NVIDIA.
## Focus
Find **unsafe NPC driving trajectories** that will may cause a collision with the ego vehicle.
## Error Detection
Detect NPC trajectories that do not keep **a safe distance** to another vehicle (**both longitudial and lateral**)
* **Safety potential metric (Fig. 3)**: A trajectory is considered safe if `distance_to_vehicle - distance_to_stop > threshold`, with comfortable braking speed configured.
* Measure it for every NPC in the simulation.
## Input Generation
* **Genetic algorithm (GA)**
* Start with a set of test cases with random NPC trajectories
* Use the safety potential as feedback to generate the next one.
* Keep the test cases with lower safety potential only.
* Generate new test cases through (a) crossover and (b) mutation.
* Use test cases with lower safety potential as seed cases.
* **Local fuzzer (for near-miss cases)**
* One local fuzer per seed case.
* Generate close variants around the seed (mutation-based).
* Run for a given period of search time.
* Replace the seed from the GA with the best one found.
* **Random restart**
* Launch if the safety potential score is not improved over time in GA.
* Create a new set of test cases with random NPC trajectories.
* Restart the GA.
## Evaluation
* AV-Fuzzer vs. RL AST vs. random fuzzer.
* \# of "safety violations" detected for 10 hours.
* Time to find the first safety violation.
* **46 safety violations in 5 types (Fig. 10).**
* All related to lane changes and distance between the ego vehicle and closest NPC vehicle.
* Euclidean distances between NPC trajectories across 5 types.