Several months ago I started working on a system called Afterflight to organize and browse my tlogs and dataflash logs, sync them with video, and view them along with a map GPS display. It still has a long way to go, but there is a fair amount of working functionality so I figured I'd get it out there for comment, warts and all. I would love to see it flourish as a collaborative project with lots of committers, see it get merged into another project, or whatever is most useful for the community. If anyone is interested in providing funding for it (or hiring me!) I'd love to hear that, as well, since I am a "starving PhD student". Alternatively there is a donate link if you click "about" in the software.
The source code has been available under the Apache License at http://afterflight.googlecode.com since I first started work on the project. I have an example server running at http://afterflight.volcanocopter.com
If you want a quick demonstration of what it can do, click on the first log entry, which will take you here . Press play on the video and you should see the map, graphs, and timeline animate.
Technology
Here's how it works at the moment:
- Very slowly. Please be patient, the index page in particular is large and none of the code has been optimized. It may take up to a minute to load. I'm confident I can fix that with a little work. Major code cleanup on the way soon!
- Python scripts read in your .log or .tlog. PyMavlink is used to parse tlogs. The scripts use the Django object relational mapper to put the data into a Postgresql database. It should work with most other database systems as well (but not MySQL because MySQL can't handle high resolution timestamps.
- A Django web application serves up the data
- The web interface uses a bunch of javascript widgets for displaying timelines, zoomable graphs, slippy maps, and video. Everything is zoomable but the controls aren't unified yet -- e.g. you click and drag to zoom on the graphs but you use the scroll wheel to zoom the timeline.
- I'm just starting to add features that allow the user, through the web interface, to add extra data and re-sync the video with the logs
Improvements I'd like to make in the future:
- Don't rely on youtube for video display; allow several web services or local video hosting
- Add automatic detection of events (takeoff, landing, motor failure, collision, wind gust etc) in both logs and in video. I have some ideas on how to detect things like takeoff and landing in the video. This will allow Afterflight, given a bunch of logs and a bunch of videos, the ability to match the right logs with the right videos and sync them in time.
- Add display of flight analytics calculated from the data. That includes things like top speed, but also derived values such as efficiencies, estimated lift to drag ratio, etc. The database already records different vehicles, batteries, etc., but those models need to be expanded.
- Allow login (locally created, or Google, Facebook etc.) and have the server designed to handle data uploads from lots of people efficiently. Should be fairly easy with Django-socialauth. Log parsing to the database is fairly slow right now because I haven't optimized the code, so this needs to happen before I allow uploads.
- Replace all of the javascript widgets with a unified system based on the D3 javascript library.
Similar projects
I'm not the only one who had realized the power of the browser as a component of an Unmanned Aerial System. These are the other browser-based projects I'm aware of:
Droneshare
- www.droneshare.com
- Many similar capabilities to Afterflight. Unlike Afterflight, user registration and uploading is already working, and the site is snappy, with no laggy loading. However, it lacks many of the features that Afterflight has, including integrated video and interactive ajax plotting of all log data.
- Not open source, but creator says that he intends to open source it in the future. EDIT: Now open source (yay!), see https://github.com/geeksville/droneshare
- Creator has expressed interest in collaborating with Afterflight and possibly merging the two projects.
Mavelous
- http://diydrones.com/profiles/blogs/mavelous-the-browser-based-mavl...
- Much of the functionality of a web GCS has already been implemented, and it looks nice.
- "Supported" by 3DR (I guess this means they are paying them).
- Open source, but development appears to have stopped in Feb 2013.
DroneOS
- www.droneos.com
- Appears to be vaporware. I signed up to "beta test" 6 months ago and have not been contacted, nor has there been any change to the website.
- No indication that it will be open source.
DroneDeploy
- http://diydrones.com/profiles/blogs/dronedeploy-browser-based-drone...
- Like DroneOS, the product does not actually appear to exist; it is just a pretty website which does nothing but ask you for your email address.
- No indication that it will be open source.
Hope you find this useful!
Cheers,
Aaron (foobarbecue)
Comments
Aaron,
Thanks for the great work and links. Very useful stuff, if ever I can get time to look at it.
Joe
Excellent, if I can give you some suggestion probably should be useful have some analysis algorithm to provide warning about structural multicopter parameter as "need to increase dumping", "check engine or structural symmetry" (es. if cw motors works constantly ad different power o ccw motors), "check pid" for too much delay/difference from stick rc receiver and attitude) and so on.
Post production is the missing link. Flying UA is really simple these days getting the value out of the data is hard.
Excellent Work Aaron .
MP log analysis is a bit clunky for me, because a) it's PC only. B) it's only installed on my field net book. C) its not as Intuiative as it could be. Would be good to come home, plug it into the 27" mac and view the stats there in comfort.