前言
前面详细讲了如何给电脑连接avia 和 海康工业相机,连接后想跑r3live呢,则需要标定好相机内参和avia 和相机之间的外参。
1.标定相机内参:
首先标定海康工业相机的内参,则可以用到livox_camera_lidar_calibration帮助我们得到相机内参 by cameraCalib.launch。官方写的很详细,直接跑就可以得到参数了。
https://github.com/Livox-SDK/livox_camera_lidar_calibration/blob/master/doc_resources/README_cn.md
2.标定相机外参(相机-雷达):
标定相机外参呢则有两种方法可以选择,分别是livox_camera_lidar_calibration 和livox_camera_calib,前者就是官方给的方法,后者是港科大的方法。
方法一:
按照官方一步一步来就可以了。
方法二:
我们主要是用这方法来实现的。
https://github.com/hku-mars/livox_camera_calib
用港科大的方法,录制一段包并且拍一个照片即可
结果:
需要注意的是,我们要先得到相机内参才能标外参,否则外参的结果不会准确。在calib.yaml文件可以修改参数。
3.标定imu的bias(可选)
标定imu,这个不是必须,除非你用的是外置imu,而我这里是用avia就不需要。
参考地址:https://blog.csdn.net/er_dan_love/article/details/124370788
项目在u盘中,产生的那些结果是不同的型号的。
IMU测得的数值是观测值,用这个观测值减去bias和walk,也就是噪声和随机游走就是一个真值
在用imu_tils标定之后,会产生如下结果:
Gyr: 角速度
unit: " rad/s"
avg-axis:
gyr_n: 2.6413984893745627e-03 高斯噪声
gyr_w: 2.5583724217772844e-05 bias
x-axis:
gyr_n: 3.3122488442647404e-03
gyr_w: 4.3588056137286859e-05
y-axis:
gyr_n: 2.3753043729997140e-03
gyr_w: 1.3374928882977363e-05
z-axis:
gyr_n: 2.2366422508592336e-03
gyr_w: 1.9788187633054314e-05
Acc: 加速度
unit: " m/s^2"
avg-axis:
acc_n: 1.9016740946159966e-03 高斯噪声
acc_w: 4.3866858332747729e-05 bias
x-axis:
acc_n: 2.0886766904137585e-03
acc_w: 6.5864779945185047e-05
y-axis:
acc_n: 1.9966581415159002e-03
acc_w: 3.1454913016282431e-05
z-axis:
acc_n: 1.6196874519183318e-03
acc_w: 3.4280882036775694e-05
但这个标定结果并不是我们最终的结果。现在得到的结果的单位是rad/s和m/s^2,而老师param.h代码中给出的单位如下面代码中最后两行,后面多了/sqrt(hz),这是因为噪声是个能量概念或者说功率概念,我们还要把标定得到的参数归一化到每单位sqrt(hz)尺度下。
在代码中这样体现:
这样子的,就是IMU测得的数值是观测值,用这个观测值减去bias和walk,也就是噪声和随机游走就是一个真值,而bias和随机游走是在不断变化的,但是数值很小,糙一点的系统就假设它们不变直接用初始值,而vins中这个值是要不断进行优化的。
有了内参外参后,就可以跑r3live 了。
先到这里了,后面 会继续介绍,未完待续。。。。。