All Projects → PX4 → Flight_review

PX4 / Flight_review

Licence: bsd-3-clause
web application for flight log analysis & review

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Flight review

Mrs uav system
The entry point to the MRS UAV system.
Stars: ✭ 64 (-36.63%)
Mutual labels:  drone
Autonomous Drone
This repository intends to enable autonomous drone delivery with the Intel Aero RTF drone and PX4 autopilot. The code can be executed both on the real drone or simulated on a PC using Gazebo. Its core is a robot operating system (ROS) node, which communicates with the PX4 autopilot through mavros. It uses SVO 2.0 for visual odometry, WhyCon for visual marker localization and Ewok for trajectoy planning with collision avoidance.
Stars: ✭ 87 (-13.86%)
Mutual labels:  drone
Ggplotnim
A port of ggplot2 for Nim
Stars: ✭ 95 (-5.94%)
Mutual labels:  plotting
Silx
silx toolkit
Stars: ✭ 69 (-31.68%)
Mutual labels:  plotting
Gnuplot.jl
Julia interface to gnuplot
Stars: ✭ 84 (-16.83%)
Mutual labels:  plotting
Web Bluetooth Parrot Drone
Control a Parrot Mini Drone from your web browser using Web Bluetooth
Stars: ✭ 87 (-13.86%)
Mutual labels:  drone
Gr.rb
Ruby wrapper for the GR framework
Stars: ✭ 60 (-40.59%)
Mutual labels:  plotting
Highcharts Chart
Polymer Element wrapper for highcharts library. Seamlessly create various types of charts from one element.
Stars: ✭ 97 (-3.96%)
Mutual labels:  plotting
Proc
Display and analyze ROC curves in R and S+
Stars: ✭ 85 (-15.84%)
Mutual labels:  plotting
Drone Volume Cache
Drone plugin for caching to a locally mounted volume
Stars: ✭ 93 (-7.92%)
Mutual labels:  drone
Pandoc Plot
Render and include figures in Pandoc documents using your plotting toolkit of choice
Stars: ✭ 75 (-25.74%)
Mutual labels:  plotting
Sumo
Heavyweight plotting tools for ab initio calculations
Stars: ✭ 82 (-18.81%)
Mutual labels:  plotting
Saite
Interactive document creation for exploratory graphics and visualizations. 咲いて (in bloom). Built on top of hanami vega/vega-lite library with CodeMirror and self hosted ClojureScript
Stars: ✭ 89 (-11.88%)
Mutual labels:  plotting
Drone Telegram
Drone plugin for sending Telegram notifications
Stars: ✭ 67 (-33.66%)
Mutual labels:  drone
Drone Gae
Drone plugin for managing deployments and services on Google App Engine (GAE)
Stars: ✭ 96 (-4.95%)
Mutual labels:  drone
Tello
The tello Go (golang) package is an unofficial, easy-to-use, standalone API for the Ryze Tello® drone.
Stars: ✭ 62 (-38.61%)
Mutual labels:  drone
Touchdesigner Sop To Svg
A pipeline for handling the SOP to SVG pipeline. This is especially handy for using procedurally generated geometry for paths to be cut or plotted.
Stars: ✭ 87 (-13.86%)
Mutual labels:  plotting
Jagcs
Just another ground control station
Stars: ✭ 99 (-1.98%)
Mutual labels:  drone
Mavgcl
In-Flight Analysis for PX4
Stars: ✭ 96 (-4.95%)
Mutual labels:  drone
Plotters
A rust drawing library for high quality data plotting for both WASM and native, statically and realtimely 🦀 📈🚀
Stars: ✭ 1,287 (+1174.26%)
Mutual labels:  plotting

Flight Review

Build Status

This is a web application for flight log analysis. It allows users to upload ULog flight logs, and analyze them through the browser.

It uses the bokeh library for plotting and the Tornado Web Server.

Flight Review is deployed at https://review.px4.io.

Plot View

3D View

3D View

Installation and Setup

Requirements

Ubuntu

sudo apt-get install sqlite3 fftw3 libfftw3-dev

Note: Under some Ubuntu and Debian environments you might have to install ATLAS

sudo apt-get install libatlas3-base

macOS

macOS already provides SQLite3. Use Homebrew to install fftw:

brew install fftw

Installation

# After git clone, enter the directory
git clone https://github.com/PX4/flight_review.git
cd flight_review
pip install -r requirements.txt
# Note: preferably use a virtualenv

Setup

  • By default the app will load config_default.ini configuration file
  • You can override any setting from config_default.ini with a user config file config_user.ini (untracked)
  • Any setting on config_user.ini has priority over config_default.ini
  • Run setup_db.py to initialize the database.

Note: setup_db.py can also be used to upgrade the database tables, for instance when new entries are added (it automatically detects that).

Usage

For local usage, the server can be started directly with a log file name, without having to upload it first:

./serve.py -f <file.ulg>

To start the whole web application:

./serve.py --show

The plot_app directory contains a bokeh server application for plotting. It can be run stand-alone with bokeh serve --show plot_app (or with cd plot_app; bokeh serve --show main.py, to start without the html template).

The whole web application is run with the serve.py script. Run ./serve.py -h for further details.

Interactive Usage

The plotting can also be used interative using a Jupyter Notebook. It requires python knowledge, but provides full control over what and how to plot with immediate feedback.

  • Start the notebook
  • Locate and open the test notebook file testing_notebook.ipynb.
# Launch jupyter notebook
jupyter notebook testing_notebook.ipynb

Implementation

The web site is structured around a bokeh application in plot_app (plot_app/configured_plots.py contains all the configured plots). This application also handles the statistics page, as it contains bokeh plots as well. The other pages (upload, browse, ...) are implemented as tornado handlers in tornado_handlers/.

plot_app/helper.py additionally contains a list of log topics that the plot application can subscribe to. A topic must live in this list in order to be plotted.

Tornado uses a single-threaded event loop. This means all operations should be non-blocking (see also http://www.tornadoweb.org/en/stable/guide/async.html). (This is currently not the case for sending emails).

Reading ULog files is expensive and thus should be avoided if not really necessary. There are two mechanisms helping with that:

  • Loaded ULog files are kept in RAM using an LRU cache with configurable size (when using the helper method). This works from different requests and sessions and from all source contexts.
  • There's a LogsGenerated DB table, which contains extracted data from ULog for faster access.

Caching

In addition to in-memory caching there is also some on-disk caching: KML files are stored on disk. Also the parameters and airframes are cached and downloaded every 24 hours. It is safe to delete these files (but not the cache directory).

Notes about python imports

Bokeh uses dynamic code loading and the plot_app/main.py gets loaded on each session (page load) to isolate requests. This also means we cannot use relative imports. We have to use sys.path.append to include modules in plot_app from the root directory (Eg tornado_handlers.py). Then to make sure the same module is only loaded once, we use import xy instead of import plot_app.xy. It's useful to look at print('\n'.join(sys.modules.keys())) to check this.

Contributing

Contributions are welcome! Just open a pull request with detailed description why the changes are needed, or open an issue for bugs, feature requests, etc...

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].