Fusion Library toString Bug | getGeoPose Heading is on the Wrong Axis

My ZEDSDK version: 4.1 Ubuntu

I think I may have found a bug in the sl::toString() method. It seems that when sl::FUSION_ERROR_CODE is GNSS_DATA_NEED_FIX, the sl::toString() method actually prints out GNSS_DATA_COVARIANCE_MUST_VARY.

Also, I am using GNSS fusion positional tracking on my camera. I have initialized the fusion module, published and subscribed the sl::Camera to it, and have successfully fed my GNSS data to it with ingestGNSSData(). However, when I get the GeoPose from the fusion module, it doesn’t return the correct heading. The latitude and longitude are correct and line up with what my GPS is outputing, but the heading is on the wrong axis of the camera.
This is the full config for my camera and fusion instances:


As you can see, I’m using the LEFT_HANDED_Y_UP coordinate system, so I would expect the compass axis to be around the vertical Y axis. It is instead around the horizontal Z axis. So for example, yawing my camera while it’s level with the ground and facing forward doesn’t change the heading on the GeoPose, but rolling my camera side-to-side does change the heading.

I attempted to forego using the GeoPose.heading and instead looked at the data in GeoPose.pose_data, but everything inside of pose_data is empty or zero.

Is this another bug? How can I changed the axis that fusion uses for the GeoPose?

Hi @ClayJay3
Welcome to the Stereolabs community.

Thank you for noticing and reporting the issue. It will be addressed in the next patch release of the ZED SDK.

1 Like

@Myzhar @mattrouss @ClayJay3 I do not think this issue has been fixed in the latest patch, I am having similar issues.

1 Like

What ZED SDK version are you using? Can you provide us with a code that allows us to replicate the issue and eventually fix the bug?

I am using 4.1.1 on ubuntu 22.

see the attached for the code/data sample for reproduction:

Are you having similar issues with the GeoPose heading and empty pose data on the latest version of the SDK?

I haven’t had a chance to try the latest patch version yet, but my fused geo lat_lon was correct once the status of the fusion tracking calibration status was “OK”, but the heading never updated.

Also, through testing GPS Fusion, I realized that the fusion module doesn’t like the pose data of the camera to be altered at all, which makes sense. Do you call the reset positional tracking method anywhere while using fusion?

my pose data is still empty but my headings are good. There were innacuracies in the python documentation but the heading values are decent. There still seems to be some issues with fusion.camera_to_geo