This repo contains the PID-Piper recovery framework code and dataset used in the PID-Piper DSN'21 paper.
- /Simulator contains PID-Piper implementation in ArduPilot SITL.
We have provided a docker image to build the simulator and run missions to test PID-Piper.
Clone the project
git clone https://github.com/DependableSystemsLab/pid-piper.git
cd pid-piper
Build docker image
docker build -t pid-piper Dockerfile/.
Run container and install setup files
docker container run -it pid-piper
cd pid-piper
./setup.sh
Run the simulator from within the container. Or exit the container follow the step below.
Run the simulator with the map view and the console.
./startSimulator.sh copter --console --map
The simulator can also be executed by running the docker image and then following the steps given here http://ardupilot.org/dev/docs/setting-up-sitl-on-linux.html
To use a local copy of ArduPilot follow these steps:
- Clone the Project
- Install the pre-requisites
- Install setup files
./setup.sh
- Run ardupilot
cd simulator/ArduCopter
../Tools/autotest/sim_vehicle.py --console --map
Follow the steps given here to setup the build environment.
To run a mission, use this command:
wp load ../Tools/autotest/mission/mission-1.txt
mode guided
arm throttle
takeoff 50
mode auto
The above script will launch overt attacks intermittently during the mission. The effects of the attack and the recovery can be seen by zooming in to the map window. Videos showing PID-Piper recovery on real RVs are available here.
The attack detection and recovery code is implemented as a library available at /simulator/libraries/PID-Piper
. The ML model are available under /libraries/PID_Piper/models
.
Please contain [email protected] if you need the raw .tlog files.
If you find the repo useful, please cite the following paper:
Pritam Dash, Guanpeng Li, Zitao Chen, Mehdi Karimibiuki, and Karthik Pattabiraman, "PID-Piper: Recovering Robotic Vehicles from Physical Attacks", 51st IEEE/IFIP International Conference on Dependable Systems and Networks (DSN), 2021.