ethz-asl / rovio

Other
1.12k stars 506 forks source link

imu intrinsics & cam/imu extrinsics #154

Closed han-so1omon closed 6 years ago

han-so1omon commented 6 years ago

Hi, I've ported rovio to px4 and have some questions:

For imu intrinsics: Does rovio make its own estimates of imu noise densities and random walks? Does rovio require imu measurements scaled (and adjusted for nonlinearities) to meters?

For cam/imu extrinsics: Does rovio require cam/imu time and axis sync?

Edit: For cam intrinsics: Possible to use fisheye model for distortion calibration?

bloesch commented 6 years ago

Concerning your questions:

han-so1omon commented 6 years ago

What is the name of noise densities and random walks parameter?

In Kalibr it is <accelerometer|gyroscope>_<noise_density|random_walk>, but there is no such variable in the rovio.info file nor is there a place for reference to an imu.yaml file.

Is it a subset of the PredictionNoise parameters?

*edit: formatting edit2: unfamiliar with camera calib terminologies. are radtan and equidist methods of undistorting a fisheye lens projection image? i am assuming they are not different undistortion methods and am currently following https://docs.opencv.org/trunk/db/d58/group__calib3d__fisheye.html#gad626a78de2b1dae7489e152a5a5a89e1 (Section: Detailed Description) for fisheye camera distortion.

bloesch commented 6 years ago

the parameters are under Prediction.PredictionNoise. you will have to change vel* (acc noise), acb (acc bias noise), att_ (gyro noise), gyb_* (gyro bias noise). be sure to pay attention to the units.

the equidistant model is often used to calibrate fisheye lenses and is equivalent to the one employed in opencv fisheye.

han-so1omon commented 6 years ago

Can't figure out why units of vel (acc noise) and att (gyro noise) include an extra time term (i.e. m^2/s^3 vs m^2/s^4 & rad^2/s vs rad^2/s^2). Total RMS noise is given in m/s^2 and rad/s. Is there some divide by bandwidth frequency term that I'm missing?

bloesch commented 6 years ago

these are noise densities (squared). E.g. for the gyro you often get something like rad/s/sqrt(hz) from the manufacturer (sometime also with different units). If this is squared this gives rad^2/s, which is what rovio requires.