双目视觉VIO系列 ——(一)INDEMIND设备测试

INDEMIND双目视觉设备

本文主要介绍基于双目视觉惯性硬件系统的VIO算法框架,相关开源代码详见:stereo_VIO_INDEMIND,如果您对本工作感兴趣,请star支持,感谢您!

传感器标定

传感器标定目的有三种:1)恢复多传感器内参数,如相机内参、IMU内参等,2)恢复多传感器外参数,如双相机间外参,相机-IMU外参等,3)估计多传感器的时间偏移。

本文利用kalibr工具对多传感器设备关系进行标定,包括单相机内参标定,多相机外参及相机-IMU外参标定,按照INDEMIND官方SDK,获得的多传感器相关参数为:

# 相机数据
left param: 
_width: 640, height: 400 # 宽长
_TSC: { -0.999995 -0.000652737 0.00295292 0.06 
0.000654378 -1 0.000554745 0 
0.00295256 0.000556675 0.999995 -0.00164 
0 0 0 1 }  
# T_IMU_Cam0
_K: { 244.287 0 308.441 
0 244.62 199.633 
0 0 1 }   # intrinsic
_D: { 0.594821 0.123986 -0.455553 0.181615 }    # distortion
Right param: 
_width: 640, height: 400 # 宽长
_TSC: { -0.999997 0.00234312 0.000186957 -0.0604778 
-0.00234305 -0.999997 0.000380322 0.00250199 
0.000187848 0.000379883 1 0.00281119 
0 0 0 1 } # T_IMU_Cam0
_K: { 242.69 0 336.723 
0 242.349 225.392 
0 0 1 } # intrinsic
_D: { 0.595394 0.0872163 -0.4143 0.16214 } # distortion

根据设备清单,镜头使用的是ov9281黑白镜头,是一款常用的鱼眼镜头,因INDEMIND的WIKI不是很详细,因此使用kalibr对其进行标定,标定方式及数据采集方法详见kalibr文档

本文使用的设备标定后参数为:

# 相机数据
left param: 
T_imu_cam:
    - [-0.999995, -0.000652737, 0.00295292, 0.06]
    - [0.000654378, -1, 0.000554745, 0.0]
    - [0.00295256, 0.000556675, 0.999995, -0.00164]
    - [0.0, 0.0, 0.0, 1.0]
  cam_overlaps: [1]
  camera_model: pinhole
  distortion_coeffs: [0.591977998178624,0.14106124481503816,-0.4986133137201548,0.20706763140275243]
  distortion_model: equidistant
  intrinsics: [244.36631004296968,244.28009927867149,308.8499311488548,200.26112385657243] 
  resolution: [640, 400]

Right param: 
  T_imu_cam:
    - [-0.999997, 0.00234312, 0.000186957, -0.0604778]
    - [-0.00234305, -0.999997, 0.000380322, 0.00250199]
    - [0.000187848, 0.000379883, 1, 0.00281119]
    - [0.0, 0.0, 0.0, 1.0]
  cam_overlaps: [0]
  camera_model: pinhole
  distortion_coeffs: [0.5938919252119748,0.0790455615425266,-0.3923617088097683,0.14792756445351297]
  distortion_model: equidistant
  intrinsics: [244.2150271865189,244.17213365980164,336.5967046847744,225.81013821994916]
  resolution: [640, 400]

imu0:
  T_i_b:
    - [1.0, 0.0, 0.0, 0.0]
    - [0.0, 1.0, 0.0, 0.0]
    - [0.0, 0.0, 1.0, 0.0]
    - [0.0, 0.0, 0.0, 1.0]
  accelerometer_noise_density: 2.0000e-3  # [ m / s^2 / sqrt(Hz) ]   ( accel "white noise" )
  accelerometer_random_walk: 3.0000e-3    # [ m / s^3 / sqrt(Hz) ].  ( accel bias diffusion )
  gyroscope_noise_density: 1.6968e-04     # [ rad / s / sqrt(Hz) ]   ( gyro "white noise" )
  gyroscope_random_walk: 1.9393e-05       # [ rad / s^2 / sqrt(Hz) ] ( gyro bias diffusion )
  time_offset: 0.0288

相机相关参数实际上相差不大,但IMU与相机之间的同步相差0.0288s,即差了近30ms,这个误差是导致部分使用该设备进行双目VIO实验在初始化阶段就失败的主要原因,这里需要补偿上此误差:

t_{imu} = t_{cam} + \delta_t

之后,这个设备的初始标定任务就完成了。

设备raw数据抓取

因一般的VIO算法是利用ROS系统,所以这里对SDK代码进行编译后,利用sudo权限启动ros wrapper。

sudo su
cd IMSEEE-SDK/ros
catkin_make -j8
source devel/setup.bash
roslaunch imsee_ros_wrapper display.launch

出现上图所示的结果就代表介入设备成功,之后可利用rosbag record等操作进行录包。

总结

本文主要介绍INDEMIND设备信息和设备标定流程,相关代码可参考开源代码stereo_VIO_INDEMIND,下一节将基于此设备适配OpenVINS开源双目VIO框架,并对其进行理论学习。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值