VINS-Mono升级打怪

543 阅读4分钟

VINS-Mono源代码

港科大VINS-Mono源代码链接

注意事项:

  • 亲试之后发现,Ubuntu 18.04,ROS melodic以及其他版本的OpenCV和Eigen并不影响程序编译和运行;
  • 下图这里写得不太清楚,实际上目录/catkin_ws/src/benchmark_publsher/config中自带有Euroc MAV数据集groundtruth(真实值)的CSV文件,利用benchmark_publisher显示出来。所以,命令后面的sequence_name应该根据需要自行修改,在运行rosbag之前先把这个命令给运行了。

数据集

Euroc MAV 数据集原链接

Euroc MAV 数据集百度网盘链接,这其中还有KITTI等其他数据集

对Euroc MAV数据集页面的简要翻译:

EuRoC MAV 数据集

该网页呈现的视觉惯性数据集是在小型飞行器(MAV)上收集到的。数据集中包含立体图象,同步的IMU测量数据和精确的运动和结构真实值(ground-truth)。

可以获得的数据

  • 视觉惯性传感器模块
    • 立体图象(Aptina MT9V034 全局快门,WVGA 黑白的,2x20 FPS,这里的立体图象指双目)
    • 微机电IMU(ADIS16448,角速度和加速度,200Hz)
    • 以快门为中心时间对齐(?)
  • 真实值
    • Vicon 运动捕捉系统(6维位姿)
    • Leica MSMS50激光追踪器(三维位置)
    • Leica MS50 3D结构扫描
  • 标定
    • 相机内参
    • 相机外参
    • 空间-时间对齐真实值

下载

其中有两类场所Machine Hall(机械工厂)和Vicon Room(房间,两种),并且各自有easy,medium和difficult三种识别难度。

平台和传感器

一架Asctec Firefly hex-rotor直升机携带这视觉惯性传感器模块(相机+IMU)被用来收集数据集。

可以看到上面有两个相机CMA0,CAM1,一个IMU0,所以该数据集是双目的。

真实值

工具

下面的设备被用来捕捉六维位姿和结构真实值。

  • Leica MS50激光追踪器和扫描器。
  • Vicon 6D运动捕捉系统。

空间-事件对齐

传感器和真实值数据在外部校准的,并且在时间上对齐。

打开数据集

下面对数据集的内容和格式进行探究:

将数据集打开,可以看到里面对应3个内部传感器和2个外部传感器,共有五个文件夹。

  • 打开cam的文件夹,可以发现共有三个文件,一个是data文件夹,按顺序装有相机拍摄的图象;data.csv是一个巨大的两列矩阵,一列是时间戳,一列是对应的图象命名;还有一个sensor.yaml,写有相机的相关内参和外参。
# General sensor definitions.
sensor_type: camera
comment: VI-Sensor cam0 (MT9M034)

# Sensor extrinsics wrt. the body-frame. 
# 传感器相对于机体坐标系的外参
T_BS: # 
  cols: 4
  rows: 4
  data: [0.0148655429818, -0.999880929698, 0.00414029679422, -0.0216401454975,
         0.999557249008, 0.0149672133247, 0.025715529948, -0.064676986768,
        -0.0257744366974, 0.00375618835797, 0.999660727178, 0.00981073058949,
         0.0, 0.0, 0.0, 1.0]

# Camera specific definitions.
rate_hz: 20 # 相机帧速
resolution: [752, 480]
camera_model: pinhole # 针孔模型
intrinsics: [458.654, 457.296, 367.215, 248.375] #fu, fv, cu, cv # 内参
distortion_model: radial-tangential # 多项式畸变模型
# 畸变系数
distortion_coefficients: [-0.28340811, 0.07395907, 0.00019359, 1.76187114e-05]

  • 打开imu的文件夹,可以发现有两个文件,一个是data.csv,同样是一个巨大的矩阵,有七列,依次是时间戳,xyz轴角速度,xyz轴加速度;另一个是sensor.yaml,写有imu的相关参数。

  • 打开leica0,的文件夹,与imu的文件夹相似,都有data.csvsensor.yaml两个文件,不同过得是前一个文件有四列,时间戳,xyz的position,这是作为真实值用的。

两篇很好的参考文章:

www.zhihu.com/question/27…

blog.csdn.net/colorsky100…

这里明白了两件事,IMU和相机的时间戳对齐问题,一般IMU检测速度远快于相机,像EuRoc数据集里面相机是20FPS,IMU是200Hz,应该调节到IMU的频率是相机频率的整倍数,这样IMU和相机就可以对齐时间戳了。

不过这里还有一个疑惑,就是激光追踪器只能获得三维坐标,然后为什么又和IMU一起优化,获得Ground-Truth呢?动捕又发挥了什么作用。

其他问题

全局快门(Global Shutter)和卷帘快门(Rolling Shutter)的区别

简而言之,全局快门是一次全部像素成像,而卷帘快门则是一行一行像素依次成像。若拍摄物体运动较快,卷帘快门所成像会发生扭曲。

标定的问题