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 数据集百度网盘链接,这其中还有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.csv和sensor.yaml两个文件,不同过得是前一个文件有四列,时间戳,xyz的position,这是作为真实值用的。
两篇很好的参考文章:
这里明白了两件事,IMU和相机的时间戳对齐问题,一般IMU检测速度远快于相机,像EuRoc数据集里面相机是20FPS,IMU是200Hz,应该调节到IMU的频率是相机频率的整倍数,这样IMU和相机就可以对齐时间戳了。
不过这里还有一个疑惑,就是激光追踪器只能获得三维坐标,然后为什么又和IMU一起优化,获得Ground-Truth呢?动捕又发挥了什么作用。
其他问题
全局快门(Global Shutter)和卷帘快门(Rolling Shutter)的区别
简而言之,全局快门是一次全部像素成像,而卷帘快门则是一行一行像素依次成像。若拍摄物体运动较快,卷帘快门所成像会发生扭曲。
标定的问题