This page has resources related to the CAV 2018 paper Reactive Control Improvisation by Daniel J. Fremont and Sanjit A. Seshia. The full version of the paper is available on the arXiv.

For information about control improvisation in general, and its applications in music, testing, and robotics, see this page.

Drone Experiments

We implemented our improvisation scheme for DFA specifications in Python, and used it to control a simulated patrolling drone (for details, see Example 3.1 in the paper). You can find the implementation here. Run python3 drone.py human for a demo where you control the adversary drone.

The code also implements two simple adversaries we used in Example 3.1: one that moves in a fixed loop, and one that chases the patroller. The routes we generated against these adversaries, and the resulting simulated trajectories, are available in the experiments folder of the repository above. All of the simulations are depicted in the video below (at about 3x speed). The drones start from the green triangles, with the patroller's path shown in solid black and the adversary's path shown in dashed blue. The red circles indicate the locations the patroller must visit, and these together with the grey square are no-fly zones for the adversary. Many thanks to Tommaso Dreossi and Ankush Desai for help running the simulations.