FAQ: How to Assess Position Quality?

Assessing the position quality is a challenge unique to your setup, risk tolerance, and based on the ROS topics that you use. The below covers an introduction of ways to check the quality of your position:

BESTPOS Indicators

The /novatel/oem7/bestpos topic may be observed at runtime to observe some key indicators of position quality.

Very similar concepts apply for checking the position quality of /novatel/oem7/inpsva and /novatel/oem7/inspvax.

Below is an example /novatel/oem7/bestpos record that will be referred to further below:

header:
  seq: 2603
  stamp:
    secs: 1598887658
    nsecs: 580854223
  frame_id: "gps"
nov_header:
  message_name: "BESTPOS"
  message_id: 42
  message_type: 0
  sequence_number: 0
  time_status: 180
  gps_week_number: 2121
  gps_week_milliseconds: 142076500
sol_status:
  status: 0
pos_type:
  type: 69
lat: 51.1503897563
lon: -114.030699187
hgt: 1097.37025877
undulation: -17.0
datum_id: 61
lat_stdev: 0.017622647807
lon_stdev: 0.0169686395675
hgt_stdev: 0.0348801650107
stn_id: "TSTR"
diff_age: 16.5
sol_age: 0.0
num_svs: 39
num_sol_svs: 31
num_sol_l1_svs: 31
num_sol_multi_svs: 25
reserved: 0
ext_sol_stat:
  status: 128
galileo_beidou_sig_mask: 53
gps_glonass_sig_mask: 51

Note that these records are populated using the BESTPOS log data from your receiver.

Latitude, Longitude, Height Standard Deviations

...
lat_stdev: 0.017622647807
lon_stdev: 0.0169686395675
hgt_stdev: 0.0348801650107
...

The BESTPOS standard deviations (lat_stdev, lon_stdev, hgt_stdev) give a good sense of the quality of the position solution. These are computed separately, in meters, for latitude, longitude and height. In the above example, they are: 0.017622647807m, 0.0169686395675m, 0.0348801650107m.

Number of Satellites Tracked

...
num_sol_svs: 31
...

The num_sol_svs gives the number of GNSS satellites tracked that are used in the position solution. In the above example, this was 31 SVs.

Position Type

...
pos_type:
  type: 69
...

The Position Type (pos_type) reported indicates the method of positioning being reported through the BESTPOS log. BESTPOS selects the position type with the best real-time performance for your receiver model and environment. In the above example, this was type 69. There is a table of position types that lists the type IDs and their corresponding names, available here:

https://docs.novatel.com/OEM7/Content/Logs/BESTPOS.htm?Highlight=bestpos#Position_VelocityType

In this example, the position type is PPP.

Position Type for GPSFix

/novatel/oem7/gps reports a measurement status. This measurement status is derived based on the position type the receiver is reporting for the position solution being used.

This status is simplified and it can be used to quickly check if the receiver is in RTK for example.

Solution Status

...
sol_status:
  status: 0
...

Use the Solution Status (sol_status) field to check the BESTPOS log’s solution status. In this example, the status was 0, which corresponds to the status SOL_COMPUTED. Here’s a direct link to the table of solution status ID’s and their names:

https://docs.novatel.com/OEM7/Content/Logs/BESTPOS.htm?Highlight=bestpos#SolutionStatus

Time Status

...
  time_status: 180
...

The time_status field gives the GPS solution’s time status which is also a key status indicator. In the above example, the status was 180, this corresponds to a healthy status of FINESTEERING. Here’s the table of status IDs and their names:

https://docs.novatel.com/OEM7/Content/Messages/GPS_Reference_Time_Statu.htm

Differential Age

...
  diff_age: 16.5
...

The diff_age field gives the age of corrections. This is a way to monitor if RTK corrections are lost. If the age significantly exceeds the rate of the RTK corrections it can be a sign that RTK corrections are lost. Additionally, an age of 0 indicates that no differential correction was used.

RXSTATUS Indicators

The /novatel/oem7/rxstatus topic reports various status parameters of the GNSS receiver system. This includes a variety of warnings and errors.

You can examine an RXSTATUS log to determine the source of the warning or error. Reviewing this can help with troubleshooting and identifying the source of an issue.

More information about RXSTATUS can be found here.