Problem with gnss fusion calibration not ending

I asked a question last time, but didn’t get an answer, so I’m posting it as the main question again.

  • Host configuration:
    • ROS 2 Foxy
    • zed-ros2-wrapper -b humble-4.1.4
    • ZED SDK 4.1.4
  1. GPS Topic: When I check the /fix topic using ros2 topic echo, the covariance data appears to be normal, as shown below:

  1. GNSS Fusion: I perform GNSS fusion by running the following command:
    ros2 launch zed_wrapper zed_camera.launch.py camera_model:=zedx enable_gnss:=true
  • I modified config/common.yaml to set gnss_enable: true, but this did not take effect, so I forcibly set it via the terminal.
  1. Results:
  • The /zed/zed_node/pose/origin_fix topic shows the following:

  • The /zed/zed_node/pose/fused_fix topic shows the following:

Although the latitude, longitude, and altitude appear to be correct, the covariance in /origin_fix is filled with -1.
5. Code Review: I reviewed the zed_camera_component.cpp code at line 8170:

  • It seems that if the covariance type is COVARIANCE_TYPE_UNKNOWN, it is filled with -1. However, in my case, the type is 2, which is not unknown.
  1. Logs and Timestamp Issue: I am also seeing logs indicating “covariance is small, and the timestamp is mismatched.” These logs repeat very quickly:


Calibration in progress continues without end

Questions:

  1. Why is the covariance in /origin_fix filled with -1 when the covariance type is 2 (not COVARIANCE_TYPE_UNKNOWN)?
  2. Could there be a configuration or process I missed in enabling proper GNSS fusion?
  3. Regarding the timestamp issue:
  • What might cause the timestamp mismatch?
  • Is there a recommended approach to synchronize timestamps for ZED and GNSS fusion?
  1. Is the continuation of calibration a timestamp issue or an inability to subscribe to the covariance value? There is no problem with the GPS values ​​I publish.

I would greatly appreciate your advice and suggestions to resolve these issues. Thank you!