KumarRobotics / ublox

A driver for ublox gps
BSD 3-Clause "New" or "Revised" License
453 stars 390 forks source link

fixDiagnostic never getting RTK message #215

Closed spikyknox closed 1 year ago

spikyknox commented 1 year ago

When looking at the fixDiagnostic, I am never seeing DGNSS,RTK FLOAT and RTK FIX

Expected behavior RTK status should be added to diagnostic messages.

void fixDiagnostic(diagnostic_updater::DiagnosticStatusWrapper& stat) {
...

 // If DGNSS, then update the differential solution status
    if (last_nav_pvt_.flags & ublox_msgs::NavPVT::CARRIER_PHASE_FLOAT) {
      stat.message += ", FLOAT FIX";
    } else if (last_nav_pvt_.flags & ublox_msgs::NavPVT::CARRIER_PHASE_FIXED) {
      stat.message += ", RTK FIX";
    }

In the message definition we have:

uint8 FLAGS_CARRIER_PHASE_MASK = 192 # Carrier Phase Range Solution Status     
uint8 CARRIER_PHASE_NO_SOLUTION = 0     # no carrier phase range solution
uint8 CARRIER_PHASE_FLOAT = 64          # carrier phase float solution (no fixed 
                                        # integer measurements have been used to 
                                        # calculate the solution)
uint8 CARRIER_PHASE_FIXED = 128         # fixed solution (>=1 fixed integer 
                                        # carrier phase range measurements have 
                                        # been used to calculate  the solution)

I think we should compare flags with FLAGS_CARRIER_PHASE_MASK instead of CARRIER_PHASE_FLOAT or CARRIER_PHASE_FIXED which is the expected result from flags.