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
$ sphinx --datalog my.world my.drone
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
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
Note that the map widget will not show a path for drones without GPS like the minidrones (Airborne, Mambo and Swing).
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
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.