I’ve been working with some telemetry from a test dive, as the ability to record and download ROV telemetry data is a must for any scientific exploration. However, I have found that there are few resources available through the OpenROV support forums that explain how to access and use these data. I have written up a short protocol, which can be found below.

As you set up the ROV for startup, make sure you orient the nose northward. The compass cannot determine magnetic north, and therefore takes its 0-degree calibration from its position upon startup.

During the dive, make sure that telemetry is recording in the cockpit GUI. The Download button should be clickable and the recording light green.

Once you have finished recording telemetry data, click Download and a .json file will be downloaded through your browser. If you open this file in a text editor or in Excel, you will see it is a form of a comma separated text file. As is, Excel cannot interpret individual data values for each parameter (pitch, yaw, depth, etc.) and therefore it must be separated.

The fastest way I have found to do this is to use an online .json to .csv converter, such as http://konklone.io/json/. This will interpret the code into headers (or columns), with each parameter value separated by a comma.

Copy all of your data into an Excel spreadsheet. Only the first column will contain data, which are each of the parameter values at a particular timestep.

Highlight the first column, then navigate to Data, Text to Columns. Select Delimited, Next, deselect Tab and select Comma, Next, General, Finish. Each parameter should now have its own column.

Next, you need to line up the telemetry data feed with your recorded video. The timestamp in the dataset is in milliseconds from initial startup and matches with the timestamp shown in your full screen video recording. From there, you can convert it to real time or elapsed time based on your computer’s time at ROV startup.

From there, you can do any kinds of analyses on your ROV telemetry parameters. I suspect you can create a rough bottom profile of a feature of interest by “mowing the lawn” (parallel linear transects) and then plotting depth over time.

I would love to see others take this further and post any attempts, suggestions, modifications!

As Brian said, thanks for taking the time to write this post. Going forward, we are making some enhancements to the software infrastructure that will better facilitate real time data collection and processing and add easy to use hooks for users to connect into that stream. Part of those releases will be actually creating some examples and tutorials so their use will not be such a mystery

Really nice guidance!
I’m also interested in handling and interpreting the telemetry data stream to get a rough map of each dive.
I tried a similar approach with a shell script for parsing data and LibreOffice for plotting data. But I was faced with some performance issues when plotting large datasets. So I switched to R (software for statistical computing) and wrote a script to parse and plot telemetry data using the packages rjson and ggplot2. At the start of this script I just have to select the JSON file and get graphs like shown below.

The following might be a little bit off topic…
As mentioned I’d like to create something like a map from IMU data as shown in this video on YouTube. But it in all my test data I see a lack at the data from gyroscope, accelerometer and magnetometer - or simply misinterpret these data (see below).

@mstudiva do you see something similar in your data sets? I expected to graphs like the ones from Pitch, Roll and Yaw. I recorded short sequences from different test cases (sink, lift, move forward, circular motion, etc.) and always got plots similar to these above for gyro, acc and mag.

@Brian_Grau can you provide some information which values to expect from gyroscope, accelerometer and magnetometer?
Thanks in advance

Very nice! I’ll have to look for this script the next time I work with some telemetry data. I haven’t really used anything besides depth at this point, but will let you know if I run into similar issues.

I was wondering if you could tell me where in the OpenROV software codebase is the call from the Cockpit to the beaglebone that fetches the telemetric data such as the IMU’s orientation (believe the method is called getEULdata).
Thank you!