daniilidis-group / m3ed

M3ED Dataset
39 stars 3 forks source link

Bad Camera Calibrations in Yaml. #7

Closed klowrey closed 1 year ago

klowrey commented 1 year ago

image

Looks like the transformation values from the camera chain were copied into the yaml file as transformations from the current camera to 'camera 1' (i.e. T_cn_cnm1, and by cnm1 you mean cam0 the left event camera). However, the camera chain is from camera 1 to 0, camera 2 to 1, etc etc.

As a result, the transformations in the yaml file are the correct values for the wrong transformations; anybody trusting those values as camera X to 1 will be disappointed.

fcladera commented 1 year ago

The yaml file is the bare kalibr output and we are not modifying it. We are using these to compute the final transformation in the h5 file. We did perform the concatenation such that the transformations are wrt to the prophesee left :

$ h5ls -r car_urban_day_horse_data.h5 | grep T_to_pro
/ouster/calib/T_to_prophesee_left Dataset {4, 4}
/ovc/imu/calib/T_to_prophesee_left Dataset {4, 4}
/ovc/left/calib/T_to_prophesee_left Dataset {4, 4}
/ovc/rgb/calib/T_to_prophesee_left Dataset {4, 4}
/ovc/right/calib/T_to_prophesee_left Dataset {4, 4}
/prophesee/left/calib/T_to_prophesee_left Dataset {4, 4}
/prophesee/right/calib/T_to_prophesee_left Dataset {4, 4}

Is there something we are missing?

klowrey commented 1 year ago

If the yaml files is just a copy of the kalibr outputs, then the field names should be changed to reflect the respective transformations (i.e. they are all "T_cn_cnm1") instead of suggesting they are all transformations to one particular perspective. The Kalibr outputs correctly denote the transformations from camera 1 to 0, 2 to 1, etc. but this is unclear in the yaml.

Or just get rid of the Yaml files to force people to look at the hdf5 files if they are indeed corrrect.

k-chaney commented 1 year ago

We intend for the calibrations within the hdf5 files to be used by most people. This is reflected by the warning that is at the top of the calibration section.

Within the calibration section, we provide the raw kalibr output in an attempt to be transparent. This is because calibration with event based cameras is still an open problem. While we feel as though we have done a good job with our calibrations, there is still room for improvement. Providing the raw outputs (cam_chain, results, report) would enable somebody to report on improvements later down the line. With that being said, the kalibr results are the exact files produced by kalibr and should be referenced against their repo for formatting.