Cannot define absolute camera pose in FusionConfiguration - Python API

Dear Stereolabs team,

I have had accuracy issues over the past months with accurate extrinsics calibration using the ZED360 and ZED ARUCO calibration packages, so I had to develop my own.

The problem I have been facing which kept bugging me for a while and caused me to stop using the Fusion module is when attempting to pass the camera → world pose from my calibration procedure in ROS2 (RIGHT_HANDED_Z_UP_X_FWD) for each camera in the FusionConfiguration file. The pointclouds were not fused properly and seemed to be getting a rotation transformation from the IMU which I was not able to disable by playing with positional tracking.

In a stroke of light, since I only code in python, I decided to check the FusionConfiguration in the C++ API, where I saw the following parameter is enabled by default: override_gravity=false. I assume this is set to false by default when I am setting the FusionConfiguration from the python API as well and I can’t modify it unless I write my stack in C++.

The questions are:

  1. Does this sound like this is my problem when specifying absolute WORLD poses in FusionConfiguration?

  2. Is there any other way I can disable this feature. I.e by providing absolute poses to the Fusion module without the FusionConfiguration? I also see that the sl.Fusion.subscribe() wrapper does not have the option to modify the override_gravity param.

  3. If (2.) is not possible can I somehow provide an updated relative pose w.r.t FusionConfig pose in order to rotate the camera pose with the inverse of the IMU rotation? Im wondering if sl.Fusion.update_pose() will do the trick.

Basically I need some help understanding if I can somehow provide absolute poses in the python API for Fusion or we have to rewrite our arch in C++ :sweat_smile: .

Best,

Milton