You can follow us on Twitter (@VeriDrone) if you want to see how things are going.
We do actually run our verified code alongside an off-the-shelf flight controller, namely ardupilot. Our goal is to retain the benefits of a state of the art flight controller while providing strong safety guarantees. We want to do so by running our code (which we call a shim or monitor) as the last thing before signals are sent to motors. This means that if the user or the existing flight controller code attempts to send unsafe signals to the motors, our code can intervene.
At the moment, we almost achieve this. Our code outputs signals to an existing (unverified) attitude controller which outputs signals to motor mixing code (also unverified). However, we plan to eventually verify all of this code, so that the guarantees are as strong as possible.
If you're interested in learning more, you can check out a paper that we published on some preliminary work here:
http://ucsd-pl.github.io/veridrone/papers.html. That webpage also contains a talk describing the work in that paper. This paper only describes a software module that prevents the quadcopter from going too high or exceeding a vertical velocity. However, we have currently unpublished results in which we enforce more sophisticated bounds on the quadcopter.
You can also check out our blog here:
http://ucsd-pl.github.io/veridrone/index.html. It describes interesting challenges we've encountered in this project. Feel free to comment under the blog posts or email us. We're always looking for feedback.