Skip to content
Henry Wurzburg edited this page Apr 10, 2020 · 7 revisions

Welcome to the ArduPilot_DashWare wiki!

Using DASHWARE with Ardupilot

For the purposes of this, I will assume that the reader is casually aware of what DASHWARE is and does.

Recently, I decided to try using DASHWARE to add ardupilot log/telemtry overlays on my flight videos. Unfortunately, even though it is free, there is no built-in support for the ArduPilot dataflash logs and while it has a lot of help files, there really is no beginner tutorial when you have to do something special (which working with ArduPilot requires) Fortunately, DASHWARE allows any CSV format data log to be used, if there is a Data Profile Template for it. and, Fortunately, Mission Planner can create a CSV format version of a dataflash log. Unfortunately, the templates available by searching the web are out of date or incomplete (for my desired displays).

With considerable effort and trial and error, I eventually learned how to work with DASHWARE, and create custom ArduPilot data profiles and gauges

How Dashware Works

Pretty simple really. It takes a video file and takes a data log file and overlays guages using that data on the video file to create a composite video. It can do some low level video editing and titling also. The complexity comes in its sophisticated hierarchical data import and structuring. As well as its ultra sophisticated gauge creation capabilities.

To get data in, it has to be in a CSV file with columns of data, and time-stamped rows. Usually the first row is the column headers by which data is initially referenced. Subsequent rows are data values logged each time stamp. Notice that Ardupilot logs different data packets at different periods. Partial GPS and BAT packets are shown below in the file:

This data is read in using a DATA PROFILE, which can manipulate column data, creating new columns, and then, assign a column to a DATA TYPE for use in the gauges.

DATA PROFILES

While you can use the raw data for a gauge, usually you will want to interpolate it or fill null values with the last non-value, since the rows do not usually have data for every column. If you don’t manipulate it, the gauges will stutter or glitch to zero all the time because for EVERY time stamp, ALL gauges are updated, whether or not the column has data in it.

(In addition, a DATA PROFILE must have the timestamp column converted to seconds and assigned to the only “required column mapping” to a DATA TYPE, “Data Running Time”.)

So, in the ArduPilot DATA PROFILE, I would have a “Calculator/Converter” added in the profile that fills the GPS holes using the “Use Previous Value Calculator” to create a new column (locally within DASHWARE memory), which adds a rule in the profile:

Use Previous Value Calculator (“GPS_Lat”-→”iGPS_Lat)

Now a column headed iGPS_Lat exists (in memory) with filled data for every timestamp.

Similarly, I might use the “Linear Interpolator” calculator to smooth BAT_Volt, creating an “iBAT_Volt” column of continuously interpolated values between data entries in the BAT_Volt column instead of just repeating them, so the data is displayed smoothly.

Similarly, if I needed to convert the BARO_Alt from meters to feet, I would use the “Distance Converter”, or for speed, the “Velocity Converter” to create an “CTUN_Aspd” version in MPH instead of m/s, in a new column for use by gauges.

Next the data column should be mapped to a DATA TYPE. DASHWARE has many, many standard data types, such as “Positional\Altitude/Z Position (Feet)”. DATA TYPEs allow you to use or create gauges using those inputs, so as to isolate them from the data log data, since logs from different sources may have column headers that vary widely. This allows gauge creation without knowledge of the data file formats or column names.

You can also create your own DATA TYPES, especially for Ardupilot specific stuff like MODE and RCIN, etc. These are what the gauges actually use to display data. But I try to map to the standard ones, if available, in order to use gauges from their library without modifying the input sources.

So, to review, you need a DATA PROFILE to interpolate and convert your CSV log file data, and set the time data type. And also to map that manipulated data to standard or custom gauge DATA TYPEs. You can then place gauges from the library or create your own.

Mission Planner DASHWARE CSV file

Mission Planner can create a CSV file from a dataflash log of the flight. Under the Control-F expert menu, there is a DASHWARE button, It will ask for a .bin file to convert, and what log messages to include.

Note that you need to use a version of Mission Planner created after 3/17/2020. Prior versions had a formatting error.

Most commonly used info will be in :

GPS;ATT;NTUN;CTUN;MODE;BAT;BARO;RCOU;RCIN;NKF2 when asked

Note that the NTUN and CTUN sub-messages vary by vehicle and that the MODE numbers also vary by vehicle when you try to display them

Example

Here is the resulting video of a MiniTalon Quadplane flight with telemetry overlays:

https://youtu.be/mdaCKloMmdU

See the FILES section of this wiki for a guide to the files and where to put them in your DASHWARE documents folder on your computer.

The biggest hurdle for me, was understanding the relationship of data to DATA PROFILE, to DATA TYPE to Gauge field inputs.

The standard DASHWARE tutorials and helps files will let you understand the finer points and project creation , itself.

Hints and Tips

  • Anytime you edit the DATA PROFILE or DATA TYPEs you are using in the project, you will need to delete the existing data file entry and reload it

  • If you edit the above, you will also need to re-synchronize the video and data

  • If you create a gauge, it only exists in your project folder, to add it to the library, you will need to import it into the library or copy into the GAUGES folder of the DASHWARE folder in your documents folder.

Distance from Home

Since ArduPilot does not provide this as a logged value, once you have created the .CSV file, you will need to add a column next to the GPS Lat/Lon column labeled "Home_Dist" and at the first row with a value, add something like this for the Home_Dist calculation for row 18, with GPS Lat and Lon in columns H and I,and home value in row 8,for example:

=IF (I18 = "", "",ACOS( SIN($H$8*PI()/180)*SIN(H18*PI()/180) + COS($H$8*PI()/180)*COS(H18*PI()/180)*COS(I18*PI()/180-$I$8*PI()/180) ) * 6371000)

where the home lat long is in H8/I8 (or change to whatever row has the home gps value after lock) and then fill the column downward with this formula in order to compute each GPS entry into a distance (in meters) from home. Note: you wont see this formula in the example file, since its already been converted back to CSV.