"Ingest error occurred when ingesting GNSSData: INVALID TIMESTAMP"

I am attempting to use GNSS input to improve SLAM accuracy, which appears to be supported by Fusion, but when I run the example geotracking program that ships with SDK 4.04, I get the error message quoted in the subject.

I appear to have gpsd functioning as required from the screenshots below, but require some help figuring out why sl fusion is not using the data correctly.


I am using the latest(4.04) SDK on an AGX Orin running jetpack 5.1-b147

Hello @multicore-manticore ,
Could you activate the verbose mode (InitParameters Class Reference | API Reference | Stereolabs) in order to figure out what’s wrong ?
Thanks,
Tanguy

Hello @multicore-manticore ,
Could you activate the verbose mode (InitParameters Class Reference | API Reference | Stereolabs) in order to figure out what’s wrong ?
Thanks,
Tanguy

[Discourse post]

Could you please go into more detail on how to achieve that? I see in main.cpp that init_params.sdk_verbose = 1;
is already set, but that does not seem to be working as intended. Is there more needed?

Are your sure that init_params.sdk_verbose is set to 1 ? Normally it should activate verbose message like: [ZED][WARNING] The timestamp of the data you are attempting to ingest for [GeoTracking] differs from the current synchronization timestamp. Please ensure you are using the correct timestamp units. Timestamp difference: <insert-here-the-number-of-ms> ms ( this message could correspond to INVALID_TIMESTAMP error code ).

Moreover is this error continue to appear after the first fusion.process() call ?
Regards,
Tanguy

Attached is a copy of main.cpp verifying that yes, init_params.sdk_verbose is set to 1, plus a log from the build in case you notice something that I have missed which may explain why the verbose flag is being ignored.

Adding a debug after the fusion.process() call shows that yes, this issue persists indefinitely after the first call.

fruit@agx-1:/usr/local/zed/samples/geotracking/recording/cpp/build$ cmake ..
-- The C compiler identification is GNU 9.4.0
-- The CXX compiler identification is GNU 9.4.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for sgemm_
-- Looking for sgemm_ - not found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Looking for sgemm_
-- Looking for sgemm_ - found
-- Found BLAS: /usr/lib/aarch64-linux-gnu/libopenblas.so  
CMake Warning (dev) at /usr/local/zed/zed-config.cmake:72 (find_package):
  Policy CMP0146 is not set: The FindCUDA module is removed.  Run "cmake
  --help-policy CMP0146" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.

Call Stack (most recent call first):
  CMakeLists.txt:9 (find_package)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Found CUDA: /usr/local/cuda-11.4 (found suitable version "11.4", minimum required is "11.4") 
CMake Warning (dev) at CMakeLists.txt:10 (find_package):
  Policy CMP0146 is not set: The FindCUDA module is removed.  Run "cmake
  --help-policy CMP0146" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.

This warning is for project developers.  Use -Wno-dev to suppress it.

-- Found CUDA: /usr/local/cuda-11.4 (found version "11.4") 
-- Found GLUT: /usr/lib/aarch64-linux-gnu/libglut.so  
-- Found GLEW: /usr/include (found version "2.1.0") 
-- Found OpenGL: /usr/lib/aarch64-linux-gnu/libOpenGL.so   
-- Found GPS: /usr/local/include (found version "14.0") 
Found GPSD library
-- Configuring done (1.3s)
-- Generating done (0.0s)
-- Build files have been written to: /usr/local/zed/samples/geotracking/recording/cpp/build
fruit@agx-1:/usr/local/zed/samples/geotracking/recording/cpp/build$ make -j12
[ 25%] Building CXX object CMakeFiles/ZED_GNSS_recording.dir/src/gnss_reader/GPSDReader.cpp.o
[ 25%] Building CXX object CMakeFiles/ZED_GNSS_recording.dir/src/display/GLViewer.cpp.o
[ 62%] Building CXX object CMakeFiles/ZED_GNSS_recording.dir/src/display/GenericDisplay.cpp.o
[ 62%] Building CXX object CMakeFiles/ZED_GNSS_recording.dir/src/exporter/GNSSSaver.cpp.o
[ 62%] Building CXX object CMakeFiles/ZED_GNSS_recording.dir/src/exporter/TimestampUtils.cpp.o
[ 87%] Building CXX object CMakeFiles/ZED_GNSS_recording.dir/src/exporter/KMLExporter.cpp.o
[ 87%] Building CXX object CMakeFiles/ZED_GNSS_recording.dir/src/main.cpp.o
In file included from /usr/local/zed/samples/geotracking/recording/cpp/include/exporter/KMLExporter.h:7,
                 from /usr/local/zed/samples/geotracking/recording/cpp/src/exporter/KMLExporter.cpp:1:
/usr/local/zed/include/sl/Fusion.hpp:68:64: note: #pragma message: ~ FUSION SDK is distributed in Early Access ~
   68 | #pragma message("~ FUSION SDK is distributed in Early Access ~")
      |                                                                ^
In file included from /usr/local/zed/samples/geotracking/recording/cpp/include/gnss_reader/GPSDReader.hpp:5,
                 from /usr/local/zed/samples/geotracking/recording/cpp/src/gnss_reader/GPSDReader.cpp:1:
/usr/local/zed/include/sl/Fusion.hpp:68:64: note: #pragma message: ~ FUSION SDK is distributed in Early Access ~
   68 | #pragma message("~ FUSION SDK is distributed in Early Access ~")
      |                                                                ^
In file included from /usr/local/zed/samples/geotracking/recording/cpp/include/display/GenericDisplay.h:4,
                 from /usr/local/zed/samples/geotracking/recording/cpp/src/display/GenericDisplay.cpp:1:
/usr/local/zed/include/sl/Fusion.hpp:68:64: note: #pragma message: ~ FUSION SDK is distributed in Early Access ~
   68 | #pragma message("~ FUSION SDK is distributed in Early Access ~")
      |                                                                ^
In file included from /usr/local/zed/samples/geotracking/recording/cpp/include/exporter/GNSSSaver.h:6,
                 from /usr/local/zed/samples/geotracking/recording/cpp/src/exporter/GNSSSaver.cpp:1:
/usr/local/zed/include/sl/Fusion.hpp:68:64: note: #pragma message: ~ FUSION SDK is distributed in Early Access ~
   68 | #pragma message("~ FUSION SDK is distributed in Early Access ~")
      |                                                                ^
/usr/local/zed/samples/geotracking/recording/cpp/src/display/GLViewer.cpp:23:1: warning: ISO C++ forbids converting a string constant to ‘GLchar*’ {aka ‘char*’} [-Wwrite-strings]
   23 | "#version 330 core\n"
      | ^~~~~~~~~~~~~~~~~~~~~
   24 | "layout(location = 0) in vec3 in_Vertex;\n"
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   25 | "layout(location = 1) in vec3 in_Color;\n"
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   26 | "uniform mat4 u_mvpMatrix;\n"
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   27 | "out vec3 b_color;\n"
      | ~~~~~~~~~~~~~~~~~~~~~
   28 | "void main() {\n"
      | ~~~~~~~~~~~~~~~~~
   29 | "   b_color = in_Color;\n"
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~
   30 | " gl_Position = u_mvpMatrix * vec4(in_Vertex, 1);\n"
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   31 | "}";
      | ~~~
/usr/local/zed/samples/geotracking/recording/cpp/src/display/GLViewer.cpp:34:1: warning: ISO C++ forbids converting a string constant to ‘GLchar*’ {aka ‘char*’} [-Wwrite-strings]
   34 | "#version 330 core\n"
      | ^~~~~~~~~~~~~~~~~~~~~
   35 | "in vec3 b_color;\n"
      | ~~~~~~~~~~~~~~~~~~~~
   36 | "layout(location = 0) out vec4 out_Color;\n"
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   37 | "void main() {\n"
      | ~~~~~~~~~~~~~~~~~
   38 | "   out_Color = vec4(b_color, 1);\n"
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   39 | "}";
      | ~~~
In file included from /usr/local/zed/samples/geotracking/recording/cpp/src/main.cpp:29:
/usr/local/zed/include/sl/Fusion.hpp:68:64: note: #pragma message: ~ FUSION SDK is distributed in Early Access ~
   68 | #pragma message("~ FUSION SDK is distributed in Early Access ~")
      |                                                                ^
[100%] Linking CXX executable ZED_GNSS_recording
[100%] Built target ZED_GNSS_recording

main.cpp (7.5 KB)

The recent update to SDK 4.0.5 seems to have resolved this issue