TABLE OF CONTENTS
The Woodpecker Log Utility is intended for use by customers who wish to decode and analyse log files produced by the Starling Positioning Engine. It supports the following features:
- Support for SBP, CSV, UBX, Novatel, NMEA 0183 and RTKLIB Positioning Solution File formats
- Time series, X-Y, CDF and Skyplot plot types
- Truth data from a log file for dynamic scenarios or from fixed truth position (manually specified or averaged) for static scenarios
- Extraction of GNSS Engine, Fusion Engine, Wheel Odometry, Wheel Tick, IMU, Observation, Correction, Profiling and Telemetry data from SBP files
- Calculation of GNSS statistics
Woodpecker is available Windows, macOS and Linux. It is distributed as a single executable, meaning that no installation process is necessary.
Importing Data
The Woodpecker Log Utility provides a Data Import Wizard to facilitate the process of importing data. The Data Import Wizard can be started in one of two ways:
- Navigate to File → Import Data
- In the Project Browser → Right click on My Project → Select Import Data
The exact specifics of the import process will be slightly different depending upon the type of file(s) being imported. However, at a high level, the steps are always as follows:
- Provide a name for the imported dataset. Note that this name can be changed later if necessary.
- Specify the location of the log file containing data from the Device Under Test (DUT). This file may be in SBP, CSV, UBX, Novatel binary or NMEA 0183 format.
- Specify the source of truth (if any). The source of truth may be any of the following:
- Dynamic truth positions loaded from a log file (which may be in any of the supported formats).
- A static truth position computed from the average of all positions in the DUT log.
- A static truth position manually specified by the user (latitude/longitude in decimal degrees, height in metres).
The Import Wizard also requires the following information to be specified during the data importation process:
- Coordinate Reference System (datum): Woodpecker internally performs processing using the ITRF2014 datum. For input data captured using a different datum, it is necessary to specify the source datum so that Woodpecker can convert it to ITRF2014.
- Antenna Offset: This allows for a constant offset (relative to the vehicle heading) to be applied to the imported data. The input field used to determine vehicle heading is described in the Truth Logs section below.
Note that these settings may be adjusted after the data has been imported via the Configuration dialog (described below).
Swift Binary Protocol (SBP) Files
When importing SBP files, the user may specify the types of data to be extracted via the Import Wizard. The supported types of data which can be extracted are as follows:
- GNSS Data: Output from the Starling GNSS Engine
- Fusion Data: Output from the Starling Fusion Engine
- Vehicle Data: Raw data decoded from MSG_ODOMETRY and/or MSG_WHEELTICK messages
- IMU Data: Raw data decoded from MSG_IMU_RAW messages
- Observation Data: Raw observations data from MSG_OBS messages
- Correction Data: Correction data from MSG_OSR and MSG_OBS messages
- Profiling Data: Resource profiling data from MSG_LINUX_SYS_STATE, MSG_LINUX_CPU_STATE, MSG_LINUX_MEM_STATE, MSG_THREAD_STATE and/or MSG_CELL_MODEM_STATUS messages.
- Telemetry Data: Satellite Telemetry data from MSG_TEL_SV messages. Note that Extended Satellite Telemetry output will be produced if Observation Data is also enabled.
Each identified source will be written to a separate CSV file in the output directory which was specified in the Import Wizard. See the CSV Output Files section for further information about the contents of these files.
Note that there can potentially be multiple instances of a single source within the same log, in which case the sources are differentiated based upon their sender IDs.
Comma Separated Value (CSV) Files
The expected format for CSV files imported by the Woodpecker Log Utility is similar to that produced by the sbp2report utility (see the sbp2report User’s Guide for further details). The same format is used for the converted files created during the import process for SBP, UBX, Novatel and NMEA 0183 logs, meaning that these logs can also be reimported into Woodpecker (which tends to be much faster than decoding the original binary log).
CSV files containing epoch data must contain at least the following fields:
- GPS TOW [s]: Number of seconds since beginning of GPS week
- Pos Mode: Position type (using SBP-style enumeration)
- Lat [deg]: Latitude in degrees
- Lon [deg]: Longitude in degrees
CSV files containing sensor data must contain at least the following fields:
- time: Sensor sample timestamp
- time_source: Timestamp type
See the CSV Output Files section for more details about the CSV files which are supported by the Woodpecker Log Utility.
Taoglas EDGE Insights CSV Files
In order to import CSV files generated by the Taoglas EDGE Insights platform, the file must include the following fields:
- timestamp
- latitude
- longitude
- elevation
- fix_quality
- error_radius
- hdop
- satellites_tracked
OxTS NAVsolve CSV files
In order to import CSV files generated by the OxTS NAVsolve utility, the file must include the following fields:
- Nano (Seconds of Week)
- Nano (GPS week/second)
- GpsPosMode ()
- PosLat (deg)
- PosLon (deg)
- PosAlt (m)
Compatible CSV files can be generated by configuring the following settings when exporting data from NAVsolve:
It is also necessary to check the Export to main output file option in the Files tab to ensure that a CSV file is written.
u-blox Binary (UBX) Files
DUT or truth data logs in u-blox binary format must contain at least the Navigation position velocity time solution (UBX-NAV-PVT) message. If the Attitude Solution (UBX-NAV-ATT) message is also found then it will be used to determine roll, pitch and azimuth information.
See the document u-blox 8 / u-blox M8, Receiver description for more details about the u-blox binary protocol.
Novatel Log Files
Woodpecker supports both the ASCII and binary Novatel protocols. DUT or truth data logs in Novatel format must contain at least the Best Position (BESTPOS) message. If the Best Available Velocity Data (BESTVEL) message is found then it will be used to determine horizontal velocity, vertical velocity and course over ground. If the INS Attitude (INSATT) message is found then it will be used to determine roll, pitch and azimuth information.
See the OEM7 Commands and Logs Reference Manual for more details about the Novatel protocol.
NMEA 0183 Files
DUT or truth logs in NMEA 0183 format must contain GGA, RMC and/or ZDA sentences. All other sentences will be ignored. If RMC messages are not present then the decoded logs will not contain valid date information: the GPS Week field will be empty and the value in the GPS TOW [s] field will report the number of seconds since the start of day instead of the start of week.
See the NMEA 0183 Interface Standard for more details about the NMEA 0183 protocol.
RTKLIB Positioning Solution Files
In order to import Positioning Solution Files generated by RTKLIB, the file must include the following fields:
- GPST
- Q
- latitude(deg)
- longitude(deg)
- height(m)
- x-ecef(m)
- y-ecef(m)
- z-ecef(m)
See Appendix B of the RTKLIB manual for more information about Positioning Solution Files.
Truth Logs
Any of the supported log file formats may be used as a source of dynamic truth data. A given epoch from the truth log will only be used when the timestamp matches the timestamp of an epoch from the DUT log, which means that it is advisable that the rate of truth data is equal to or faster than the rate of DUT data.
The truth log must contain a source of heading information in order to compute cross-track and along-track error values. Heading is determined from one of the following columns (in order of priority):
- Yaw [deg]
- Hdg [deg]
- COG [deg]
If none of these columns are present in the truth log (or the columns are present, but contain no data) then cross-track and along-track error plots will not be available.
If an SBP log is used as a source of dynamic truth data then any Fusion sources found will be prioritised over any PVT sources. Although all of the identified sources will be decoded and written to CSV files, only a single source of truth data will be visible in the UI.
Plotting
The Woodpecker Log Utility supports three types of plots which can be generated via the Plot menu:
- Time Series: Plots showing values with respect to time
- X-Y: 2D plots of position values
- CDF: Plots showing error probability distribution
Each of the plot types listed above may be generated as either a Single Plot or a Multiple Plot. For Single Plots, the graph line is coloured to indicate the fix mode in each corresponding epoch. For Multiple Plots each graph line has a unique solid colour.
Time Series Plots
Depending upon the type of data which is imported (and the availability of truth data) the following sources may be available for time series plots:
- DUT (PVT): GNSS-only position data from the Device Under Test
- DUT (Fusion): Inertial-aided GNSS position data from the Device Under Test
- DUT (Best): Combined GNSS-only and inertial-aided position data from the Device Under Test
- Wheel Odometry: Raw wheel speed sensor data (per wheel)
- Wheel Ticks: Raw wheel tick sensor data (per wheel)
- IMU: Raw IMU data
- Truth Data: Positioning data from the truth system
- Calculated Error (PVT): Differences between the truth system data and the GNSS-only position data from the Device Under Test
- Calculated Error (Fusion): Differences between the truth system data and the fused GNSS/INS position data from the Device Under Test
X-Y Plots
Depending upon the type of data which is imported (and the availability of truth data) the following sources may be available for X-Y plots:
- DUT (PVT): GNSS-only position data from the Device Under Test
- DUT (Fusion): Inertial-aided GNSS position data from the Device Under Test
- DUT (Best): Combined GNSS-only and inertial-aided position data from the Device Under Test
- Truth Data: Positioning data from the truth system
The following types of plots can then be generated:
- Position Trajectory (LLH): Position data as geodetic coordinates (i.e. longitude vs latitude)
- Position Trajectory (NED): Position data converted into NED (North/East/Down) coordinates
- RTK Baseline Trajectory: Distance from epoch position to correction data reference point
CDF Plots
A Cumulative Distribution Function (CDF) represents the probability that the difference between the measured and expected values (i.e. the error) is less than or equal to a given threshold. As such, it is only possible to produce CDF plots when a truth source is available. This source of truth may be dynamic or static. For dynamic truth sources a different truth position is used for each DUT position whenever they have matching timestamps. For static truth sources a single truth position is used for all DUT positions.
The Woodpecker Log Utility supports the following types of CDF plots:
- Horizontal Position Error: Magnitude of difference in 2D horizontal position
- 3D Position Error: Magnitude of difference in 3D position
- Vertical Position Error: Absolute difference in 1D vertical position
- Vertical Delta: Signed difference in 1D vertical position
- Cross-track Error: Absolute horizontal position difference perpendicular to the direction of travel
- Cross-track Delta: Signed horizontal position difference perpendicular to the direction of travel
- Along-track Error: Absolute horizontal position difference in the direction of travel
- Along-track Delta: Signed horizontal position difference in the direction of travel
- Horizontal Velocity Error: Magnitude of difference in 2D horizontal velocity
- 3D Velocity Error: Magnitude of difference in 3D velocity
- Vertical Velocity Error: Absolute difference in 1D vertical velocity
Each CDF plot type has the following variants:
- Normalised: Includes positions from all fix modes. The data is normalised to account for any epochs where a solution was available from the truth system but not from the DUT, which means that the cumulative total may potentially be less than 100%.
- SPS/SBAS/Code differential/RTK float/RTK fixed/Dead reckoning: Represents the accuracy achieved by all solutions with a given fix mode. This plot type is not normalised and as such will always total 100%.
- RTK combined: Represents the accuracy achieved by all solutions with RTK float or RTK fix solution types. This plot type is not normalised and as such will always total 100%.
Sky Plots
Sky Plots are polar plots of satellite positions where the angle represents the azimuth of the satellite relative to the receiver and the radius represents the elevation.
Woodpecker supports two types of Sky Plots:
- Instantaneous: Plots showing satellite positions at a single point in time
- Time Lapse: Plots showing satellite positions over a customisable time range
Note that Sky Plots can only be generated from imported Satellite Telemetry data. Sky Plots containing CN0 values can only be generated after importing Extended Satellite Telemetry data.
Plot Window
The screenshot above shows an example plot generated by the Woodpecker Log Utility. This window contains a number of interactive elements which allow further exploration of the selected data. The following buttons (circled in red) can be found in the bottom left-hand corner of each window:
- Home: Restore the original view
- Back: Switch to the previously defined view
- Forward: Switch to the view defined after the current view (if one exists)
- Pan/Zoom: Press and hold the left mouse button to interactively recentre the plot, or press and hold the right mouse button to dynamically adjust the zoom level
- Zoom to rectangle: Resize the plot to display only the selected rectangular region
- Configure subplots: Allows adjustment of the border and spacing around the plot
- Edit axis parameters: Allows adjustment of axis ranges, scales and plot labels
- Save image: Save the current plot as an image file. Supported types are Encapsulated Postscript, JPEG, PDF, PNG, Postscript, Raw RGBA, SVG and TIFF
- Export to CSV: Save the data used to generate the current plot as a CSV file which can be loaded into another tool (e.g. Microsoft Excel) for further analysis
For plots showing multiple values it is also possible to toggle the visibility of individual lines by clicking on the line in the legend area (circled in blue above).
Axis Parameters
Clicking on the Edit axis parameters button opens the following dialog:
The first tab (Axes) allows for customisation of the title shown above the plot as well as the limits, label and scale used by each plot axis.
The second tab (Curves) provides options for customising the label, line style and marker style of each curve in the plot. A curve may be selected from the drop-down list at the top of the dialog. Any changes made to the other fields in this tab will then be applied only to the selected curve.
Note that the Curves tab is only available for Multiple Plot types since Single Plot types are automatically colourised according to the position type of each epoch.
Among other things, the options in the Curves tab may be used to remove the connecting lines which are by default shown between in the individual points in the plot. This can be achieved, for example, by changing the Line style to None and the Marker style to point. The following screenshot illustrates a few examples of different possible line styles:
Project Browser
The Project Browser can be opened by navigating to Data → Project Browser or by pressing Ctrl+B. This opens a two pane dialog as shown in the screenshot above. This dialog displays imported project data in a tree structure in the left pane and detailed information for a single item in the right pane. The tree view displays 3 categories of items:
- Import Configuration: Selecting the Imported Files entry (shown circled in blue) will show a summary of the configuration used to import a given dataset
- Statistics: Selecting one of the elements in the Imported Data section (shown circled in red) will show a number of statistics relating to the imported data (shown circled in yellow)
- Source files: Expanding an element in the tree and selecting the child (shown circled in green) will show the location and type of the file being used as the source of input
An imported dataset can be renamed or deleted by right clicking on its name in the tree browser and selecting the Rename or Delete option. The Data Import Wizard can also be started by right-clicking on the My Project element and selecting Import Data.
Configuration
The Data Configuration dialog can be opened by navigating to Data → Configuration or by pressing Ctrl+C. This opens a two pane dialog showing imported datasets in a tree structure in the left pane (shown circled in red) and configuration options for the selected dataset in the right pane.
The tabs in the right pane (shown circled in blue) may be used to select between different categories of configuration options:
- Offsets: Allows configuration of an absolute offset and/or a relative offset. Absolute offsets are specified as North/East/Down components which are applied to all positions in a dataset. Relative offsets are specified with respect to the heading, which is determined using data from the same columns as those listed in the Truth Logs section above.
- Filters: Allows for the specification of custom criteria which can be used to ignore data from the imported dataset. See the Data Filters section below for more details.
- Reference Position: Allows the reference point used for NED XY plots to be adjusted. The default reference point is equal to the average position of all epochs in a given dataset. This means that when multiple datasets are imported, they may not have the exact same reference point, which results in constant offsets when the NED coordinates from different datasets are plotted against each other. This option can be used to configure multiple datasets to use the same reference point in order to eliminate this offset.
- Datum: Allows the Coordinate Reference System specified during the data importation process to be changed.
- Statistics: Displays statistics for a given dataset. This can be helpful for comparing how the solution availability changes as the configuration options are varied.
The Apply button (shown circled in yellow) may be used to apply the displayed configuration settings to a single file, all files in the same dataset, or all files in all datasets.
Data Filters
Woodpecker allows custom filters to be defined to ignore undesired data from an imported dataset. The following types of filters are supported:
- Accuracy Threshold: Causes epochs to be ignored when the EHPE (Estimated Horizontal Position Error) is higher than the specified threshold.
- Time Range: Causes epochs to be ignored if they do not lie within the specified time range.
- Advanced: Allows a custom criteria to be applied to a single column within the dataset. The following types of comparitors are available:
- is less than: epochs are ignored unless they have a value which is less than the specified value
- is less than or equal to: epochs are ignored unless they have a value which is less then or equal to than the specified value
- is greater than: epochs are ignored unless they have a value which is greater than the specified value
- is greater than or equal to: epochs are ignored unless they have a value which is greater than or equal to the specified value
- exactly equals: epochs are ignored unless they have a value which is equal to the specified value
- does not equal: epochs are ignored unless they have a value which does not equal the specified value
CSV Output Files
An arbitrary number of CSV output files may be generated when SBP files are imported by the Woodpecker Log Utility (see the Swift Binary Protocol Files (SBP) section). These files will contain different columns depending upon the input source:
- GNSS Epoch Data: Written to files named <name>-gnss-<sender>.csv with the columns listed in the Epoch Data section below (except for those listed as Fusion engine only)
- Fusion Epoch Data: Written to files named <name>-fusion-<sender>.csv with the columns listed in the Epoch Data section below (except for those listed as PVT engine only)
- Odometry Data: Written to files named <name>-odometry-<sender>.csv with the columns listed in the Odometry Data section below
- Wheel Tick Data: Written to files named <name>-wheeltick-<sender>.csv with the columns listed in the Wheel Tick Data section below
- IMU Data: Written to files named <name>-imu-<sender>.csv with the columns listed in IMU Data section below
When UBX, Novatel binary or NMEA 0183 files are imported, a single CSV file containing epoch data will be created. No output file is created when CSV files are imported.
Epoch Data
The following columns are included in CSV files containing epoch data generated by the Woodpecker Log Utility:
Odometry Data
The following columns are included in CSV files containing odometry data generated by the Woodpecker Log Utility:
Wheel Tick Data
The following columns are included in CSV files containing wheel tick data generated by the Woodpecker Log Utility:
IMU Data
The following columns are included in CSV files containing IMU data generated by the Woodpecker Log Utility:
Observation Data
The following columns are included in CSV files containing observation data generated by the Woodpecker Log Utility:
OSR Correction Data
The following columns are included in CSV files containing OSR correction data generated by the Woodpecker Log Utility:
SBAS Data
The following columns are included in CSV files containing SBAS data generated by the Woodpecker Log Utility: