GPRMC bugs ?

When my phone receives a message like this (copied from Bluetooth terminal on my Android phone):

$GPRMC,164705.600,A,5967.27144,N,967.48088,E,0.0330,144.12,010718,0.0,E,A*02

Then I find something like this is the log file (copied from v5.4.0 RaceChrono's NMEA log file):

$GPRMC,163246.300,A,6007.27314,N,01007.47758,E,0.05,168.02,010718,,,*22


The two $GPRMC sentences were recorded 15 minutes apart (the time stamps are both correct).
Both are recorded at same location, but only the first sentence contains the correct location.
Is there something wrong with the format of the first sentence that can cause RaceChrono to misinterpret the position?
Why does RaceChrono shift my position by approx 13.8 km?

I have configured the GPS to make only GPRMC (and $RC2), but the log contains also GPGGA-messages. I do not know where the GPGGA-messages come from -- seems like RaceChrono copies info from GPRMC into ghost GPGGA messages.

More lines from the Bluetooth terminal:
$GPRMC,171139.500,A,5967.27244,N,967.48079,E,0.1244,77.65,010718,0.0,E,A*33
$GPRMC,171139.600,A,5967.27243,N,967.48078,E,0.1147,77.65,010718,0.0,E,A*36
$GPRMC,171139.700,A,5967.27241,N,967.48079,E,0.0117,77.65,010718,0.0,E,A*30
$GPRMC,171139.800,A,5967.27239,N,967.48078,E,0.0855,77.65,010718,0.0,E,A*3E
$GPRMC,171139.900,A,5967.27238,N,967.48075,E,0.1263,77.65,010718,0.0,E,A*3D
$GPRMC,171140.000,A,5967.27237,N,967.48078,E,0.0292,77.65,010718,0.0,E,A*37
$GPRMC,171140.100,A,5967.27235,N,967.48077,E,0.0739,77.65,010718,0.0,E,A*3F
$GPRMC,171140.200,A,5967.27236,N,967.48078,E,0.1555,77.65,010718,0.0,E,A*39
$GPRMC,171140.300,A,5967.27234,N,967.48077,E,0.0700,77.65,010718,0.0,E,A*36
$RC2,,2542,,,,,,25.0,nan,50.0,40.0,0.0,0.0,0.0,0.0*77
$GPRMC,171140.400,A,5967.27233,N,967.48076,E,0.0778,77.65,010718,0.0,E,A*38
$GPRMC,171140.500,A,5967.27233,N,967.48071,E,0.2060,77.65,010718,0.0,E,A*32
$GPRMC,171140.600,A,5967.27233,N,967.48071,E,0.1361,77.65,010718,0.0,E,A*30
$GPRMC,171140.700,A,5967.27230,N,967.48070,E,0.1497,77.65,010718,0.0,E,A*3D
$GPRMC,171140.800,A,5967.27231,N,967.48069,E,0.0680,77.65,010718,0.0,E,A*3E
$GPRMC,171140.900,A,5967.27230,N,967.48070,E,0.0952,77.65,010718,0.0,E,A*36
$GPRMC,171141.000,A,5967.27229,N,967.48070,E,0.0661,77.65,010718,0.0,E,A*39
$GPRMC,171141.100,A,5967.27228,N,967.48071,E,0.0272,77.65,010718,0.0,E,A*3E
$GPRMC,171141.200,A,5967.27228,N,967.48070,E,0.1361,77.65,010718,0.0,E,A*3E
$GPRMC,171141.300,A,5967.27227,N,967.48070,E,0.0389,77.65,010718,0.0,E,A*37
$RC2,,2543,,,,,,25.0,nan,50.0,40.0,0.0,0.0,0.0,0.0*76
$GPRMC,171141.400,A,5967.27227,N,967.48069,E,0.0914,77.65,010718,0.0,E,A*36
$GPRMC,171141.500,A,5967.27226,N,967.48067,E,0.1905,77.65,010718,0.0,E,A*39
$GPRMC,171141.600,A,5967.27225,N,967.48067,E,0.1788,77.65,010718,0.0,E,A*32
$GPRMC,171141.700,A,5967.27224,N,967.48070,E,0.1263,77.65,010718,0.0,E,A*34
$GPRMC,171141.800,A,5967.27225,N,967.48073,E,0.0447,77.65,010718,0.0,E,A*38
$GPRMC,171141.900,A,5967.27223,N,967.48072,E,0.0369,77.65,010718,0.0,E,A*35
$GPRMC,171142.000,A,5967.27222,N,967.48070,E,0.0194,77.65,010718,0.0,E,A*3C
$GPRMC,171142.100,A,5967.27223,N,967.48071,E,0.1166,77.65,010718,0.0,E,A*31



...and from RaceChrono log file a couple of minutes later:

$GPRMC,171422.100,A,6007.27070,N,01007.48095,E,0.11,77.65,010718,,,*14
$GPGGA,171422.100,6007.27070,N,01007.48095,E,1,,,,M,,M,,*45
$GPRMC,171422.200,A,6007.27068,N,01007.48093,E,0.09,77.65,010718,,,*11
$GPGGA,171422.200,6007.27068,N,01007.48093,E,1,,,,M,,M,,*49
$GPRMC,171422.300,A,6007.27069,N,01007.48093,E,0.13,77.65,010718,,,*1A
$GPGGA,171422.300,6007.27069,N,01007.48093,E,1,,,,M,,M,,*49
$GPRMC,171422.400,A,6007.27069,N,01007.48092,E,0.04,77.65,010718,,,*1A
$GPGGA,171422.400,6007.27069,N,01007.48092,E,1,,,,M,,M,,*4F
$GPRMC,171422.500,A,6007.27070,N,01007.48091,E,0.06,77.65,010718,,,*12
$GPGGA,171422.500,6007.27070,N,01007.48091,E,1,,,,M,,M,,*45
$GPRMC,171422.600,A,6007.27071,N,01007.48089,E,0.07,77.65,010718,,,*18
$GPGGA,171422.600,6007.27071,N,01007.48089,E,1,,,,M,,M,,*4E
$GPRMC,171422.700,A,6007.27071,N,01007.48088,E,0.07,77.65,010718,,,*18
$GPGGA,171422.700,6007.27071,N,01007.48088,E,1,,,,M,,M,,*4E
$GPRMC,171422.800,A,6007.27071,N,01007.48087,E,0.03,77.65,010718,,,*1C
$GPGGA,171422.800,6007.27071,N,01007.48087,E,1,,,,M,,M,,*4E
$GPRMC,171422.900,A,6007.27072,N,01007.48088,E,0.04,77.65,010718,,,*16
$GPGGA,171422.900,6007.27072,N,01007.48088,E,1,,,,M,,M,,*43
$GPRMC,171423.000,A,6007.27072,N,01007.48086,E,0.06,77.65,010718,,,*12
$GPGGA,171423.000,6007.27072,N,01007.48086,E,1,,,,M,,M,,*45
$GPRMC,171423.100,A,6007.27072,N,01007.48084,E,0.08,77.65,010718,,,*1F
$GPGGA,171423.100,6007.27072,N,01007.48084,E,1,,,,M,,M,,*46
$GPRMC,171423.200,A,6007.27073,N,01007.48084,E,0.08,77.65,010718,,,*1D
$GPGGA,171423.200,6007.27073,N,01007.48084,E,1,,,,M,,M,,*44
$GPRMC,171423.300,A,6007.27072,N,01007.48082,E,0.18,77.65,010718,,,*1A
$GPGGA,171423.300,6007.27072,N,01007.48082,E,1,,,,M,,M,,*42
$GPRMC,171423.400,A,6007.27072,N,01007.48080,E,0.06,77.65,010718,,,*10
$GPGGA,171423.400,6007.27072,N,01007.48080,E,1,,,,M,,M,,*47
$GPRMC,171423.500,A,6007.27072,N,01007.48079,E,0.10,77.65,010718,,,*10
$GPGGA,171423.500,6007.27072,N,01007.48079,E,1,,,,M,,M,,*40
$GPRMC,171423.600,A,6007.27072,N,01007.48079,E,0.08,77.65,010718,,,*1A
$GPGGA,171423.600,6007.27072,N,01007.48079,E,1,,,,M,,M,,*43
$GPRMC,171423.700,A,6007.27074,N,01007.48079,E,0.02,77.65,010718,,,*17
$GPGGA,171423.700,6007.27074,N,01007.48079,E,1,,,,M,,M,,*44
$GPRMC,171423.800,A,6007.27075,N,01007.48078,E,0.08,77.65,010718,,,*12
$GPGGA,171423.800,6007.27075,N,01007.48078,E,1,,,,M,,M,,*4B
$GPRMC,171423.900,A,6007.27075,N,01007.48077,E,0.03,77.65,010718,,,*17
$GPGGA,171423.900,6007.27075,N,01007.48077,E,1,,,,M,,M,,*45
$GPRMC,171424.000,A,6007.27076,N,01007.48077,E,0.06,77.65,010718,,,*1F
$GPGGA,171424.000,6007.27076,N,01007.48077,E,1,,,,M,,M,,*48
$GPRMC,171424.100,A,6007.27076,N,01007.48075,E,0.08,77.65,010718,,,*12
$GPGGA,171424.100,6007.27076,N,01007.48075,E,1,,,,M,,M,,*4B
$GPRMC,171424.200,A,6007.27076,N,01007.48075,E,0.06,77.65,010718,,,*1F
$GPGGA,171424.200,6007.27076,N,01007.48075,E,1,,,,M,,M,,*48
$GPRMC,171424.300,A,6007.27076,N,01007.48074,E,0.08,77.65,010718,,,*11
$GPGGA,171424.300,6007.27076,N,01007.48074,E,1,,,,M,,M,,*48
$GPRMC,171424.400,A,6007.27076,N,01007.48073,E,0.07,77.65,010718,,,*1E
$GPGGA,171424.400,6007.27076,N,01007.48073,E,1,,,,M,,M,,*48
$GPRMC,171424.500,A,6007.27077,N,01007.48073,E,0.03,77.65,010718,,,*1A
$GPGGA,171424.500,6007.27077,N,01007.48073,E,1,,,,M,,M,,*48
$GPRMC,171424.600,A,6007.27079,N,01007.48072,E,0.12,77.65,010718,,,*16
$GPGGA,171424.600,6007.27079,N,01007.48072,E,1,,,,M,,M,,*44
$GPRMC,171424.700,A,6007.27078,N,01007.48071,E,0.03,77.65,010718,,,*15
$GPGGA,171424.700,6007.27078,N,01007.48071,E,1,,,,M,,M,,*47
$GPRMC,171424.800,A,6007.27077,N,01007.48070,E,0.09,77.65,010718,,,*1E
$GPGGA,171424.800,6007.27077,N,01007.48070,E,1,,,,M,,M,,*46






Comments

  • Not sure what is happening there, but here's couple of pointers:

    1) RaceChrono should not be able to record GPS data if you output only $GPRMC. RaceChrono requires both $GPGGA and $GPRMC to record GPS data. You probably weren't looking at correct session, as that feed doesn't translate to a session.

    2) Export NMEA in RaceChrono generates NMEA from its internal format. It generates both RMC and GGA sentences as in your copy paste.

    3) Real output log from device can be recorded by turning on Settings > Expert settings > Save device output. There will be .nmea files inside your session folder and shared .rcz files (which is just renamed .zip). This will be raw output from your device.
  • edited July 2018
    @aol thank you for answering

    It _does_ record when sending only $GPRMC (and $RC2) when connected as "RaceDAC with GPS". I tried it also with RMC+ZDA+VTG, and the position shift remains the same 65 km (I incorrectly wrote 13.8km in previous posts).

    (btw: ZDA and VTG messages does not contain any additional info to RMC)
  • edited July 2018
    I followed the suggestion 3) Real output,

    ...and I found file: "device_output_100.nmea" contains the correct positions:
    (this time with RMC+ZDA+VTG)

    $GPRMC,181817.600,A,5967.27087,N,967.48106,E,0.0991,220.13,010718,0.0,E,A*0D
    $GPZDA,181817.600,01,07,2018,00,00*5B
    $GPVTG,220.13,T,220.13,M,0.0991,0.1836,A*2B
    $GPRMC,181817.700,A,5967.27087,N,967.48108,E,0.1069,220.13,010718,0.0,E,A*0D
    $GPZDA,181817.700,01,07,2018,00,00*5A
    $GPVTG,220.13,T,220.13,M,0.1069,0.1980,A*28
    $GPRMC,181817.800,A,5967.27086,N,967.48108,E,0.0739,220.13,010718,0.0,E,A*00
    $GPZDA,181817.800,01,07,2018,00,00*55
    $GPVTG,220.13,T,220.13,M,0.0739,0.1368,A*27
    $GPRMC,181817.900,A,5967.27085,N,967.48108,E,0.0486,220.13,010718,0.0,E,A*05
    $GPZDA,181817.900,01,07,2018,00,00*54
    $GPVTG,220.13,T,220.13,M,0.0486,0.0900,A*25
    $GPRMC,181818.000,A,5967.27085,N,967.48111,E,0.0952,220.13,010718,0.0,E,A*0F
    $GPZDA,181818.000,01,07,2018,00,00*52
    $GPVTG,220.13,T,220.13,M,0.0952,0.1764,A*2C


    Lines with same timestamps from RaceChrono Session Export contains positions 65 km away from here:

    $GPRMC,181817.700,A,6007.27087,N,01007.48108,E,0.11,220.13,010718,,,*2B
    $GPGGA,181817.700,6007.27087,N,01007.48108,E,1,,,,M,,M,,*4B
    $GPRMC,181817.800,A,6007.27086,N,01007.48108,E,0.07,220.13,010718,,,*22
    $GPGGA,181817.800,6007.27086,N,01007.48108,E,1,,,,M,,M,,*45
    $GPRMC,181817.900,A,6007.27085,N,01007.48108,E,0.05,220.13,010718,,,*22
    $GPGGA,181817.900,6007.27085,N,01007.48108,E,1,,,,M,,M,,*47
    $GPRMC,181818.000,A,6007.27085,N,01007.48111,E,0.10,220.13,010718,,,*28
    $GPGGA,181818.000,6007.27085,N,01007.48111,E,1,,,,M,,M,,*49
  • edited July 2018
    yet another recording (this time after disabling ZDA+VTG+RC2 )

    Raw input copied from "device_output_100.nmea":
    $GPRMC,184952.400,A,5967.27092,N,967.48183,E,0.0972,220.13,010718,0.0,E,A*0E
    $GPRMC,184952.500,A,5967.27091,N,967.48184,E,0.0797,220.13,010718,0.0,E,A*0E
    $GPRMC,184952.600,A,5967.27092,N,967.48183,E,0.1302,220.13,010718,0.0,E,A*00


    Log export, still off by 65 km:
    $GPRMC,184952.400,A,6007.27092,N,01007.48183,E,0.10,220.13,010718,,,*2B
    $GPGGA,184952.400,6007.27092,N,01007.48183,E,1,,,,M,,M,,*4A
    $GPRMC,184952.500,A,6007.27091,N,01007.48184,E,0.08,220.13,010718,,,*27
    $GPGGA,184952.500,6007.27091,N,01007.48184,E,1,,,,M,,M,,*4F
    $GPRMC,184952.600,A,6007.27092,N,01007.48183,E,0.13,220.13,010718,,,*2A
    $GPGGA,184952.600,6007.27092,N,01007.48183,E,1,,,,M,,M,,*48

  • Where do these coordinates come from? Are you calculating them or are they coming from a chipset?

    Please look at the NMEA specification (this is not the official one, but is far most readible one):

    http://www.gpsinformation.org/dale/nmea.htm

    4807.038,N Latitude 48 deg 07.038' N
    01131.000,E Longitude 11 deg 31.000' E

    So coordinate formats is DDMM.MMMMM. And your latitude is 5967.27092 which is 59 degrees and 67.27092 minutes. It's an invalid representation of the coordinate, but for RaceChrono it's OK, and it fixes it to 60 degrees and 07.27092 minutes.

    So, your stuff, what ever it is, is broken :)
  • And OK, looks like I've done changes that I don't remember.

    It could work with only RMC, but I really recommend RMC + GGA or GGA + ZDA + VTG combos. RMC alone or RMC + ZDA + VTG combo do not have fields like altitude.

    If I ever said RMC + ZDA + VTG combo is good, then I've must really meant GGA + ZDA + VTG...
  • Thank you aol! The bug in my RMC code was [0.01 deg] units in stead of DDMM.MMMMM (where the first M must be < 6). It works OK now after you nailed that bug.

    I will include GGA later -- I use the altitude only for selecting carburetor nozzle...

  • Does $GNRMC work with RaceChrono? (or must it be $GPRMC)
    ref "Multi-GNSS considerations" in UBX-13003221
  • edited July 2018
    Only GPRMC at the moment. I might consider adding GN* and/or GL* sentences if someone gives a good reason to support them.
  • $GPxxx data _should_ originate from GPS, while $GNxxx can be a fusion of sat-navs (GPS+Glonass+Galileo+Beidu+Iridium++) + inertia navigation, and maybe also radio beacons, magnet strip pickup, camera, etc.

    I will use $GPRMC and $GPGGA also when the origin data is not GPS.
  • FYI: Combination $GNRMC + $GNGGA already works in Racechrono v5.4.0, but the messages accepted by are not consistent as $GPRMC alone works, but $GNRMC alone does not work (even if the message contains same info as $GPRMC).

    Combination $GNGGA + $GNZDA + $GNVTG does not work

    Argument for including GNxxx:
    uBlox M8N will only output $GNxxx when in "multi-sat-nav" mode. I assume this is the same with other multi-sat-nav devices.




  • edited July 2018
    Yeah, looks like I have forgotten more changes. GNRMC + GNGGA should work, and also GNGGA/GNRMC alone. Not sure why it's not working. And yes GNVTG + GNZDA not supported at the moment by looking at the code. If you want some combination to be supported (better) just send me a log to tracks(at)racechrono.com
Sign In or Register to comment.