How to watch flight information

Sphinx offers several ways to observe data while (or after) a simulation is running. Depending on your needs, you may wish to monitor the drone behavior at runtime, with or without HMI, you may also need to investigate a problem more thoroughly with post-mortem flight data.

Here are the available methods:

  • runtime observation via a web HMI (sphinx dashboard)
  • runtime observation via command line tool (tlm-data-logger)
  • post-mortem analysis with recorded data files (.tlmb files)

Activating true data logging

To make sphinx provide and record data while simulation is running, you just need to launch it with the option --datalog.

$ sphinx --datalog my.world my.drone

Sphinx dashboard

The web interface is the most handy way to observe flight data. It is the same web page as the one used to control drone’s internals. See Tuning of drone internals at runtime - interfaces.

Open your favorite web browser and go to http://localhost:9002.

As shown in the video below, you may need to drag and drop one or several plot widgets at the desired location. Then, select the data variable you want to observe by clicking on the button customize. You can filter variables by typing text or a regular expression in the text field. Several variables can be plotted on the same graph. The X axis represents the time expressed in seconds.

The graphs are interactive: you can mouse over to highlight individual values. You can click and drag to zoom (Ctrl-click to zoom in different components simultaneously). Double-clicking will zoom you back out (Ctrl-double-click to zoom back out in different components simultaneously). Shift-drag will pan.

To visualize the drone location and orientation on a map, make sure sphinx is launched with option --datalog, then drag and drop a map widget on your dashboard:

Note that the map widget will not show a path for drones without GPS like the minidrones (Airborne, Mambo and Swing).

tlm-data-logger

tlm-data-logger is a command line tool that receives flight data and displays it in the shell output. To show simulation’s true flight information:

$ tlm-data-logger inet:127.0.0.1:9060

You should see something like that:

Connected
section 'omniscient_bebop2':
   + relativeAngularAcceleration.x
   + relativeAngularAcceleration.y
   + relativeAngularAcceleration.z
   + relativeAngularVelocity.x
   + relativeAngularVelocity.y
   + relativeAngularVelocity.z
   + relativeLinearAcceleration.x
   + relativeLinearAcceleration.y
   + relativeLinearAcceleration.z
   + relativeLinearVelocity.x
   + relativeLinearVelocity.y
   + relativeLinearVelocity.z
   + worldAttitude.x
   + worldAttitude.y
   + worldAttitude.z
   + worldLinearVelocity.x
   + worldLinearVelocity.y
   + worldLinearVelocity.z
   + worldPosition.x
   + worldPosition.y
   + worldPosition.z
   + worldPressure
   + worldTemperature

omniscient_bebop2.timestamp: 4.098000
omniscient_bebop2.relativeAngularAcceleration.x: -0.000000
omniscient_bebop2.relativeAngularAcceleration.y: -0.000000
omniscient_bebop2.relativeAngularAcceleration.z: -0.000001
omniscient_bebop2.relativeAngularVelocity.x: 0.000338
omniscient_bebop2.relativeAngularVelocity.y: -0.054018
omniscient_bebop2.relativeAngularVelocity.z: -0.000001
omniscient_bebop2.relativeLinearAcceleration.x: -0.000000
omniscient_bebop2.relativeLinearAcceleration.y: 0.000000
omniscient_bebop2.relativeLinearAcceleration.z: -0.000000
omniscient_bebop2.relativeLinearVelocity.x: -0.002743
omniscient_bebop2.relativeLinearVelocity.y: -0.000016
omniscient_bebop2.relativeLinearVelocity.z: -0.049045
omniscient_bebop2.worldAttitude.x: 0.000005
omniscient_bebop2.worldAttitude.y: -0.000861
omniscient_bebop2.worldAttitude.z: 0.000000
omniscient_bebop2.worldLinearVelocity.x: -0.002701
<...>

As the throughput may be very high, you can easily filter the desired variable using classical shell commands. For example:

$ tlm-data-logger inet:127.0.0.1:9060 | grep worldPosition
   + worldPosition.x
   + worldPosition.y
   + worldPosition.z
omniscient_bebop2.worldPosition.x: -0.000043
omniscient_bebop2.worldPosition.y: -0.000000
omniscient_bebop2.worldPosition.z: 0.049241
omniscient_bebop2.worldPosition.x: -0.000043
omniscient_bebop2.worldPosition.y: -0.000000
omniscient_bebop2.worldPosition.z: 0.049241

Tlmb recordings

Sphinx is also capable of recording the same data in files, so they can be inspected later off-line.

The file containing true data is always located here: ./telemetrylogs/log.tlmb, from where you started sphinx. Note that in the same folder, you may see other files like log.tlmb.1. These are the earlier recordings, which belongs to a history whose size is limited.

To read a .tlmb file, several tools are at your disposal in Parrot Telemetry’s public github repository.