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 binary and NMEA 0183 files
  • Time series, X-Y and CDF plots
  • Truth data from a log file for dynamic scenarios or from fixed truth position (manually specified or averaged) for static scenarios
  • GNSS Engine, Fusion Engine, Wheel Odometry, Wheel Tick and IMU data from SBP files
  • Calculation of GNSS statistics

Woodpecker is available Windows, macOS and Linux.  The provided as a single executable, meaning that no installation process is necessary.  Note for Windows users: Windows Defender may incorrectly flag Woodpecker as a potential virus.  Please follow these instructions to work around the issue.

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:

  1. Navigate to FileImport Data
  2. 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:

  1. Provide a name for the imported dataset. Note that this name can be changed later if necessary.
  2. 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.
  3. Specify the source of truth (if any). The source of truth may be any of the following:
    1. Dynamic truth positions loaded from a log file (which may be in any of the supported formats).
    2. A static truth position computed from the average of all positions in the DUT log.
    3. A static truth position manually specified by the user (latitude/longitude in decimal degrees, height in metres).

Swift Binary Protocol Files (SBP)

The Woodpecker Log Utility will attempt to identify and extract multiple sources of data when importing DUT logs in SBP format:

  • PVT: Typically contains output from the Starling GNSS Engine
  • Fusion: Typically contains output from the Starling Fusion Engine
  • Wheel Odometry: Raw data decoded from MSG_ODOMETRY messages (per wheel)
  • Wheel Tick: Raw data decoded from MSG_WHEELTICK messages (per wheel)
  • IMU: Raw data decoded from MSG_IMU_RAW messages

Each identified source will be written to a separate CSV file in the output directory which was specified in the Data 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 Files (CSV)

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:

  1. GPS TOW [s]: Number of seconds since beginning of GPS week
  2. Pos Mode: Position type (using SBP-style enumeration)
  3. Lat [deg]: Latitude in degrees
  4. Lon [deg]: Longitude in degrees


CSV files containing sensor data must contain at least the following fields:


  1. time: Sensor sample timestamp
  2. 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.

u-blox Binary Files (UBX)

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 Binary Files

DUT or truth data logs in Novatel binary 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 binary protocol.

NMEA 0183 Files

DUT or truth logs in NMEA 0183 format must contain GGARMC 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.

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):

  1. Yaw [deg]
  2. Hdg [deg]
  3. 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:

  1. Time Series: Plots showing values with respect to time
  2. X-Y: 2D plots of position values
  3. 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%.

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).

Project Browser

The Project Browser can be opened by navigating to DataProject 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 DataConfiguration or by pressing Ctrl+C. This opens a two pane dialog showing imported datasets in a tree structure in the left pane and configuration options for the selected dataset in the right pane.  

The configuration options are grouped into 3 categories:

  • Offsets: Allows configuration of an absolute offset (for DUT or truth data) or relative offset (for truth data only). 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.
  • 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.

The configuration settings may be applied to a single file, all files in the same dataset, or all files in all datasets.

The rightmost tab displays statistics for a given dataset. This can be helpful for comparing how the solution availability changes as the configuration options are varied.

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:

Column Name

Description

Units

Comments

GPS Week

Weeks since GPS epoch

N/A

GPS epoch is 1980-01-06 00:00:00

GPS TOW [s]

Number of seconds since beginning of week

seconds

 

Pos Mode

Position type

enumeration

Valid values:

0: No Fix

1: SPS

2: DGPS

3: Float RTK

4: Fixed RTK

5: DR (Dead Reckoning)

6: SBAS

INS Mode

Inertial sensor mode

enumeration

Fusion engine only. Valid values:

0: Fusion engine not initialised

1: Fusion engine initialised

SVs Used

Number of used satellites

N/A

 

UTC Date

UTC date in yyyy-mm-dd format

Date

 

UTC Time

UTC time in hh:mm:ss.sss format

time

 

Lat [deg]

Latitude in degrees

degrees

 

Lon [deg]

Longitude in degrees

degrees

 

Alt Ellips [m]

Altitude above GRS80 ellipsoid

metres

 

SOG [m/s]

Speed Over Ground

metres per second

 

COG [deg]

Course Over Ground

degrees

 

Horiz Vel [m/s]

Horizontal Velocity

metres per second

 

Vert Vel [m/s]

Vertical Velocity (up is positive)

metres per second

 

Roll [deg]

Roll

degrees

Fusion engine only

Pitch [deg]

Pitch

degrees

Fusion engine only

Yaw [deg]

Yaw

degrees

Fusion engine only

PDOP

3D Position Dilution of Precision

N/A

 

HDOP

Horizontal Dilution of Precision

N/A

 

EHPE [m]

Estimated Horizontal Position Error

metres

 

EVPE [m]

Estimated Vertical Position Error

metres

 

EHVE [m/s]

Estimated Horizontal Velocity Error

metres per second

 

EVVE [m/s]

Estimated Vertical Velocity Error

metres per second

 

Baseline Fix Mode

Position type

enumeration

PVT engine only. Should be used for local base stations only (not Skylark). Valid values:

0: No baseline fix

2: DGPS

3: Float RTK

4: Fixed RTK

Baseline North [m]

North component of distance to base station

metres

PVT engine only. Should be used for local base stations only (not Skylark)

Baseline East [m]

East component of distance to base station

metres

PVT engine only. Should be used for local base stations only (not Skylark)

Baseline Down [m]

Down component of distance to base station

metres

PVT engine only. Should be used for local base stations only (not Skylark)

Baseline 2D [m]

2D distance to base station

metres

PVT engine only. Should be used for local base stations only (not Skylark)

Baseline 3D [m]

3D distance to base station

metres

PVT engine only. Should be used for local base stations only (not Skylark)

Corr. Age [s]

Correction Age

seconds

 

PL TIR

Protection Level Target Integrity Risk

enumeration

PVT engine only

HPL [m]

Horizontal Protection Level

metres

PVT engine only

VPL [m]

Vertical Protection Level

metres

PVT engine only

Delta TOW [ms]

Difference since previous Time of Week

milliseconds

 

2D Delta Pos [m]

2D difference from previous position

metres

 

3D Delta Pos [m]

3D difference from previous position

metres

 

Odometry Data

The following columns are included in CSV files containing odometry data generated by the Woodpecker Log Utility:

Column Name

Description

Units

Comments

time

Sample time

seconds

Time base is dependent upon time_source

time_source

Type of time base

enumeration

Valid values:

0: None (invalid)

1: GPS TOW

2: Processor time 

velocity source 0

Velocity value from sensor 0

metres per second

 

velocity source 1

Velocity value from sensor 1

metres per second

 

velocity source 2

Velocity value from sensor 2

metres per second

 

velocity source 3

Velocity value from sensor 3

metres per second

 

metadata

Vehicle metadata

enumeration

Valid values:

0: Unavailable

1: Forward

2: Reverse

3: Park

Wheel Tick Data

The following columns are included in CSV files containing wheel tick data generated by the Woodpecker Log Utility:

Column Name

Description

Units

Comments

time

Sample time

seconds

Time base is dependent upon time_source

time_source

Type of time base

enumeration

Valid values:

0: Relative to PPS

1: GPS TOW

2: Local CPU time

tick source 0

Tick count from sensor 0

ticks

 

tick source 1

Tick count from sensor 1

ticks

 

tick source 2

Tick count from sensor 2

ticks

 

tick source 3

Tick count from sensor 3

ticks

 

metadata

Vehicle metadata

enumeration

Valid values:

0: Unavailable

1: Forward

2: Reverse

3: Park

IMU Data

The following columns are included in CSV files containing IMU data generated by the Woodpecker Log Utility:

Column Name

Description

Units

Comments

time

Sample time

seconds

Time base is dependent upon time_source

time_source

Type of time base

enumeration

Valid values:

0: GPS TOW

1: Time since system start-up

2: Unknown

3: Relative to PPS

acc_x

Acceleration in the IMU frame X axis

N/A

Range and scaling factor are IMU dependent

acc_y

Acceleration in the IMU frame Y axis

N/A

Range and scaling factor are IMU dependent

acc_z

Acceleration in the IMU frame Z axis

N/A

Range and scaling factor are IMU dependent

gyr_x

Angular rate around IMU frame X axis

N/A

Range and scaling factor are IMU dependent

gyr_y

Angular rate around IMU frame Y axis

N/A

Range and scaling factor are IMU dependent

gyr_z

Angular rate around IMU frame Z axis

N/A

Range and scaling factor are IMU dependent