Imu.uart NMEA logging: Some message IDs are ignored

Please provide the following info (check/uncheck the boxes after clicking “+ Create Topic”):
Software Version
DRIVE OS Linux 5.2.0
DRIVE OS Linux 5.2.0 and DriveWorks 3.5
NVIDIA DRIVE™ Software 10.0 (Linux)
NVIDIA DRIVE™ Software 9.0 (Linux)
other DRIVE OS version
other

Target Operating System
Linux
QNX
other

Hardware Platform
NVIDIA DRIVE™ AGX Xavier DevKit (E3550)
NVIDIA DRIVE™ AGX Pegasus DevKit (E3550)
other

SDK Manager Version
1.4.1.7402
other

Host Machine Version
native Ubuntu 18.04
other

Trying to use sample_imu_logger on a device that outputs NMEA messages.

I can confirm that the device connects successfully and the logger can detect $GPHDT and $GPROT message IDs.

However, the logger ignores other message IDs, e.g. $GPGGA and $GPZDA.

Example NMEA stream:

$GPZDA,070344.600,09,04,2021,00,00*58
$GPZDA,070346.000,09,04,2021,00,00*5C
$GPGGA,070346.000,xxxx.xxxxxxx,x,xxxxx.xxxxxxx,x,1,19,0.1,154.457,M,22.745,M,,*5
$GPZDA,070351.200,09,04,2021,00,00*58                
$GPZDA,070352.000,09,04,2021,00,00*59                
$GPGGA,070352.000,xxxx.xxxxxxx,x,xxxxx.xxxxxxx,x,1,20,0.1,154.487,M,22.745,M,,*6
$GPZDA,070355.800,09,04,2021,00,00*56
$GPZDA,070356.400,09,04,2021,00,00*59                                           

Is there something unexpected about my NMEA stream?

Hi @gpu_power ,

How did you know which message IDs can be detected and which cannot be detected?
Please elucidate it with your sample_imu_logger command and its output messages. Thanks.

The device can be configured to output a selection of NMEA message IDs. So I simply enabled and disabled the message IDs.

Running command as: sample_imu_logger --driver=imu.uart --params=device=/dev/ttyTHS1,baud=9600

Outputs:

For message IDs $GPHDT and $GPROT there is this:

EndpointTTY: started on /dev/ttyTHS1
[1617989552736453] Heading(True:12.5)
[0] Gyro(Z:-0.00333333 )

For message IDS $GPGGA and $GPZDA there is nothing after open tty

EndpointTTY: started on /dev/ttyTHS1

However from minicom I can see the NMEA stream with those message IDs as shown in my original post.

Please check if dwSensorIMU_readFrame() works well or returns any error on your problem.

@VickNV,

dwSensorIMU_readFrame is inside while loop, and frequently returns DW_TIMEOUT.

When device is set to output working message IDs like $GPHDT and $GPROT, it returns DW_SUCCESS, interspersed amongst DW_TIMEOUT.

When device is set to output problem message IDs like $GPGGA and $GPZDA, it only returns DW_TIMEOUT with no other error.

“imu.uart” supports only xsens_nmea format (as below).

$ /usr/local/driveworks-3.5/bin/sample_sensors_info

Sensor [20] : imu.uart ? device=/dev/ttyXXX[,baud={1200,2400,4800,9600,19200,38400,57600,115200}[,format=xsens_nmea]][,fifo-size=1024]

Please check if DriveWorks SDK Reference: Custom IMUs (Comprehensive) works for you. Thanks.