ZED X GNSS/VIO fusion - persistent 90° offset in utm → map yaw, fusion never converges

Hi Team,

We are trying to implement Global localization using the zed wrapper to fuse GNSS and VIO. We are using “ros2 launch zed_wrapper zed_camera.launch.py camera_model:=zedx” and publishing the /fix topic using the navstat driver. Our setup includes a dual antenna and zedx facing in the same direction with no rotational offset. The camera is using “Right_Handed_Z_Up_X_Forward” coordinate system. During the calibration process, we face the following issues:

  1. When we are pointing towards true west, we see GNSS value between -268 and 275 degrees, we expect UTM to map yaw published by zed wrapper to be around -180 degrees or 180 degrees considering we align ENU x axis (True East) to robot x axis (True west), however we get values fluctuating around -86 to -90 degrees. Neither does the calibration converge, nor does it point in the correct direction considering UTM to map transform. Where is the 90-degree offset coming from?

  2. Why does the calibration never converge? We have tried yaw uncertainty with 1 degree, 2 degrees, 3 degrees, and 5 degrees.

  3. Could you please check our yaml configuration file and let us know.

  4. We also tried with rolling calibration on and off. What is your recommendation? We have read all the information regarding rolling calibration already but we are unsure about how it fits in our case.

  5. We also sometimes get GNSS timestamp invalid even after PPS. We have chronyc running and are sure that the clock is in sync.

I have attached all the files including our yaml files and the log files from calibration. Any help would be greatly appreciated.

zed_camera.launch.py (20.9 KB)
common_stereo.yaml (21.7 KB)
zed_camera.launch.py (20.9 KB)
zedx.yaml (2.0 KB)
NvidiaLogFIle_220426_0848PM (1).txt (284.2 KB)

According to the ROS REP 105 documentation, the 90° offset is expected. I recommend you read the Map Conventions paragraph.

Please refer to the ZED SDK Global Localization documentation to understand how the calibration process works.

Hi @Myzhar ,

Thank you for your response. But it is a bit disappointing because we have already gone through these steps and then came to you for help. The offset is understandable and we can fix that. Could you pls go through the info we provided and give us a bit more info on what the issue could be with convergence?