无人驾驶视觉-单目视觉里程计

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_30440627/article/details/83061462

対极几何

通过两帧图像的运动,利用匹配点,求解相机的位姿变换。(就是得到R,t)步骤:

1. 根据配对点的像素位置,求出 E 或者 F ;
2. 根据 E 或者 F ,求出 R, t。

问题

单目视觉的尺度不确定性(Scale Ambiguity)。例如,程序中输出的 t 第一维约 0.822。这个 0.822 究竟是指 0.822 米呢,还是 0.822 厘米呢,我们是没法确定的。

在单目视觉中,我们对两张图像的 t 归一化,相当于固定了尺度。虽然我们不知道它的实际长度为多少,但我们以这时的 t 为单位 1,计算相机运动和特征点的 3D 位置。这被称为单目 SLAM 的初始化。(计算出绝对尺度)

从 E 分解到 R, t 的过程中,如果相机发生的是纯旋转,导致 t 为零,那么,得到的E 也将为零,这将导致我们无从求解 R。不过,此时我们可以依靠 H 求取旋转,但仅有旋转时,我们无法用三角测量估计特征点的空间位置,于是,另一个结论是,单目初始化不能只有纯旋转,必须要有一定程度的平移。如果没有平移,单目将无法初始化。

解决单目的尺度不确定性

1、ORB_SLAM2,利用地图点云计算地图点到相机中心的距离,得到尺度因子。

参考资料:

https://github.com/raulmur/ORB_SLAM

https://blog.csdn.net/u010128736/article/category/6461394

2、VINS,单目+IMU。

参考资料

https://github.com/HKUST-Aerial-Robotics/VINS-Mono

https://blog.csdn.net/wangshuailpp/article/details/78461171

单目视觉在初始化过程中无法得到相邻两关键帧的位置矢量t,因此需要融合IMU的信息计算出位置矢量。

IMU能够测量传感器本体的角速度和加速度,被认为与相机传感器具有明显的互补性。IMU虽然可以测得角速度和加速度,但这些量都存在明显的漂移(Drift),使得积分两次得到的位姿数据非常不可靠。这正是相机的弱点。 当运动过快时,(卷帘快门的)相机会出现运动模糊, 或者两帧之间重叠区域太少以至于无法进行特征匹配, 所以纯视觉SLAM非常害怕快速的运动。 而有了IMU,即使在相机数据无效的那段时间内, 我们也能保持一个较好的位姿估计,这是纯视觉SLAM无法做到的。
 

猜你喜欢

转载自blog.csdn.net/sinat_30440627/article/details/83061462