I am attempting to acheive GNSS calibration with data stored in svo2 data keys.
During the svo processing steps, I get my calibration parameters with the following method:
def fusion_status(self) -> None:
process_metrics: Tuple[sl.FUSION_ERROR_CODE,sl.FusionMetrics] = self.fusion.get_process_metrics()
fusion_error_code, fusion_metrics = process_metrics
fusion_metrics = {"mean_camera_fused":fusion_metrics.mean_camera_fused,"mean_stdev_camera_ts":fusion_metrics.mean_stdev_between_camera}
vio_gnss_trns: sl.Transform = self.fusion.get_geo_tracking_calibration()
vio_gnss_trns_translation:np.ndarray = vio_gnss_trns.get_translation().get()
gnss_calibration_data: Tuple[sl.GNSS_FUSION_STATUS,float,np.ndarray] = self.fusion.get_current_gnss_calibration_std()
gnss_calibration, yaw_uncertainty, position_uncertainty = gnss_calibration_data
if gnss_calibration.name == "OK":
logger.info(f"Fusion: GNSS Calibration: {gnss_calibration.name}")
# self.solve_local_cs()
out = {
"fusion_error_code": fusion_error_code.name,
"fusion_metrics": fusion_metrics,
"vio_gnss_trns": vio_gnss_trns_translation.tolist(),
"gnss_calibration": gnss_calibration.name,
"yaw_uncertainty": yaw_uncertainty,
"position_uncertainty": position_uncertainty.tolist()
}
These are the values i have in the debugger:
>>> out
{
'fusion_error_code': 'SUCCESS',
'fusion_metrics': {
'mean_camera_fused': 0.6666666865348816,
'mean_stdev_camera_ts': 0.0
}, 'vio_gnss_trns': [
-9.201568603515625,
-8.376220703125,
34.25571060180664
], 'gnss_calibration': 'OK',
'yaw_uncertainty': 0.001549591775983572,
'position_uncertainty': [
1.8446742974197924e+19,
0.8890160918235779,
1.8446742974197924e+19
]
}
Any ideas why I am getting such large position uncertainties?