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:
-
Does this sound like this is my problem when specifying absolute WORLD poses in FusionConfiguration?
-
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.
-
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++
.
Best,
Milton