urbste / OpenImuCameraCalibrator

Camera calibration tool
GNU Affero General Public License v3.0
215 stars 48 forks source link

timestamp quality for go pro camera #17

Open fushi219 opened 2 years ago

fushi219 commented 2 years ago

Thanks for your good work! I find this project from https://www.youtube.com/watch?v=Phw_OVP6sxI and i want to use go-pro max in my vio system. I have some questions about the go-pro data you used in the video, and sincerely wish to get your help.

  1. image timestamp: is it a real raw element in bin file, or infered via ffmpeg or so on.
  2. the time offset(image and imu) repeatability of go-pro device, that's to say, once i calibrate the time offset of a go-pro camera, can i use it as initial value for the following data i record(I will also online calibrate it)? (time offset repeatability of Insta360 one x2 is quite terrible, quite different for different video)
  3. Is the go-pro camera suitable for vio job in your opinion?

Wish your answer!

urbste commented 2 years ago

Hi, so I only tested this for GoPro 6 and 9 and do not know about the GoPro Max. What I learned however (and you can also see that from the calibration results) is that you will always get reasonable good synchronization if you just substract the first IMU timestamp from all other IMU timestamps: t_imu = t_imu - t_imu_0

You can see this effect in my calibration datasets, where I did not turn off the camera between recordings and the time offset was always the same! However if you turn the camera off and on it will be different. However no calibration necessary, as you can just offset the timestamps by the first one.

As you can see I am using this fact in ORB-SLAM3 and it always worked quite well for me: https://github.com/urbste/ORB_SLAM3/blob/master/Examples/Monocular-Inertial/mono_inertial_gopro_vi.cc#L207

Have fun! If you have problems with your dataset let me know. Would love to support also GoPro Max calibration.

fushi219 commented 2 years ago

Thank you so much for your friendly and useful answer! I have not decide which go-pro to use, but the go-pro max has dual back to back cameras, so i think it will be more robust for vio system. Besides, i find this system: https://github.com/SpectacularAI/HybVIO, it works more robust than vins-fusion(flys away soon), okvis(little shake, not Smooth) on insta360 dataset(time offset calibrated). Your code is a good job and i wish to have the chance to contribute for it.

XUTONG1024 commented 2 months ago

Thank you so much for your friendly and useful answer! I have not decide which go-pro to use, but the go-pro max has dual back to back cameras, so i think it will be more robust for vio system. Besides, i find this system: https://github.com/SpectacularAI/HybVIO, it works more robust than vins-fusion(flys away soon), okvis(little shake, not Smooth) on insta360 dataset(time offset calibrated). Your code is a good job and i wish to have the chance to contribute for it.

May I ask if you have made any progress on this issue? I am currently considering using the built-in IMU of Insta360 x2 to implement vio. Can you give me some suggestions?