从零手写VIO学习记录——系列奥比中光竞赛题目:【VIO在长走廊弱纹理环境下的优化(设备:小觅双目相机深度版)】

2023-05-16

VIO在走廊弱纹理环境下的优化

转载请注明链接:https://blog.csdn.net/weixin_42344264/article/details/100175564

研究背景

  • 在无人车,无人机等自主机器人或者AR等领域中,需要确定自身各时刻相对于工作环境的位置,此定位是保证自主导航的关键。SLAM技术是指:搭载传感器的载体在移动时建立对环境的描述模型,同时估计自己的运动。其中通过视觉和惯导融合的SLAM简称为VIO系统。

  • VIO系统在纹理丰富的场景,大部分时候能够产生误差较小的结果;但在经过长走廊且纹理不够丰富的场景时,容易累积误差。

  • 本文针对长走廊弱纹理环境下,对现有VIO系统进行优化,来实现精度更高、实时性好的VIO系统

国内外研究现状简述

  • 香港科技大学沈绍劼等人针对单目视觉无法恢复绝对尺度信息,利用IMU的测量可以提供绝对尺度信息。提出VINS-mono,并后续拓展到双目、GPS等多传感器融合框架。
  • 上海交通大学邹丹平等提出一种基于结构化环境特征的StructSLAM系统,在纹理缺失的情况下,线条可增强系统的鲁棒性。
  • Christian Forster等提出VIO预积分理论。
  • Stefan Leutenegger等提出将视觉测量和IMU的测量紧融合,开源了OKVIS系统。
  • Mourikis A I, Roumeliotis提出了多状态限制卡尔曼滤波算法(Multi-State Constraint Kalman Filter,MSCKF),滤波器状态向量由当前惯导的定位信息和前 N 个时刻摄像机的定位信息组成,观测向量由前N个时刻特征点信息组成。之后,MingYang Li等人又在MSCKF基础上做了多相关工作。
  • 【以下是最近读的关于线线特征和VIO相关论文】
    • RESLAM: A real-time robust edge-based SLAM system(2019,开源):
      • 每帧进行Canny边缘检测,使用距离变换预先计算计算像素之间的最近边缘,计算重投影误差。
    • Building a 3-D Line-Based Map Using Stereo SLAM (2015)
      • 基于3d线特征的双目SLAM
    • PL-VIO: Tightly-Coupled Monocular Visual–Inertial Odometry Using Point and Line Features(贺一家2018)
      • 基于VINS-mono修改的直接将LSD线特征重投影误差加入到目标函数中进行优化,考虑点到线距离和角度误差。单目VIO
      • 详细推导了线重投影误差的雅可比及误差传递公式
      • 普吕克坐标表示线特征
      • LSD线特征,LBD描述子匹配。
      • 精度略比VINS-mono提升
    • Canny-VO: Visual Odometry With RGB-D Cameras
      Based on Geometric 3-D–2-D Edge Alignment(2019)
      • 基于Canny算子的VO,RGBD相机。
      • 和RESLAM异曲同工

本次基于VINS-Fusion的改进

  • 本次改进针对长走廊弱纹理环境下,在对比了DSO直接法和港科大的VINS-Fusion两种方法,选择基于港科大沈老师团队的VINS-Fusion开源系统进行优化(首先感谢他们开源)。VINS-Fusion是基于VINS-mono的扩展,本文以VINS-mono(以下简称VINS)为例说明改进。
  • 【注】VINS详解很多,本文就不做详细介绍。贴下之前收集的链接:
    • 技术路线:https://blog.csdn.net/wangshuailpp/article/details/78461171
    • 贺博的详细解读https://www.cnblogs.com/ilekoaiq/p/8836970.html
    • 非线性优化与在线标定https://www.cnblogs.com/shang-slam/p/7081923.html
    • 论文与代码解读:https://blog.csdn.net/qq_41839222/article/details/85793998

具体改进步骤

  • 本次改进只在前端进行部分。考虑到长走廊纹理较弱,而VINS-Fusion采用的仅是Harris角点进行光流跟踪,对于弱纹理长走廊环境下,可能会产生特征点滑移或者跳动等现象,从而引起位姿计算误差增大。本文在原本Fast角点基础上加入边特征选取强梯度的边缘点来增强前端视觉跟踪的鲁棒性及准确性。

  • 本文增加的是OpenCV库里的Canny边缘检测算子\footnote{Canny, J., A Computational Approach To Edge Detection, IEEE Transactions on Pattern Analysis and Machine Intelligence, 8(6):679–698, 1986.}。具体步骤如下:

  • 第一步:消除噪声。一般情况下,使用高斯平滑滤波器卷积降噪。本文采用一个size=3的高斯内核。对于一个位置 ( m , n ) (m,n) (m,n)的像素点,其灰度值为 f ( m , n ) f(m,n) f(m,n),那么经过高斯滤波后的灰度值将变为:

g σ ( m , n ) = 1 2 π σ 2 e − m 2 + n 2 2 σ 2 ⋅ f ( m , n ) g_\sigma(m,n)=\frac{1}{\sqrt{2\pi\sigma^2}}e^{-\frac{m^2+n^2}{2\sigma^2}}\cdot{f(m,n)} gσ(m,n)=2πσ2 1e2σ2m2+n2f(m,n)

  • 第二步:计算梯度幅值和方向。边缘就是灰度值变化大的像素点的集合。在图像中,用梯度表示灰度值的变化程度和方向。它可以通过点乘一个sobel或其它算子得到不同方向的梯度值 g x ( m , n ) , g y ( m , n ) g_x(m,n),g_y(m,n) gx(m,n),gy(m,n)。综合梯度通过以下公式计算梯度值和梯度方向:
    G ( m , n ) = g x ( m , n ) 2 + g y ( m , n ) 2 θ = a r c t a n g y ( m , n ) g x ( m , n ) G(m,n)=\sqrt{g_x(m,n)^2 + g_y(m,n)^2} \\ \theta = arctan{\frac{g_y(m,n)}{g_x(m,n)}} G(m,n)=gx(m,n)2+gy(m,n)2 θ=arctangx(m,n)gy(m,n)

  • 第三步:非极大值抑制。在高斯滤波过程中,边缘有可能被放大。这一步使用一个规则来过滤不是边缘的点,使用边缘宽度尽可能为1个像素点:如果一个像素点属于边缘,那么这个像素点在梯度方向上的梯度值是最大的,否则不是边缘,将其灰度值设为0。
    M T ( m , n ) = { M ( m , n ) i f M ( m , n ) > T 0 o t h e r w i s e M_T(m,n)= \begin{cases} M(m,n) &if M_(m,n)> T \\ 0 & otherwise \end{cases} MT(m,n)={M(m,n)0ifM(m,n)>Totherwise

  • 第四步:滞后阈值。Canny使用了滞后阈值,滞后阈值需要两个阈值(高阈值和低阈值),若某一像素位置的幅值超过高阈值,该像素被保留为边缘像素;若某一像素位置的幅值小于低阈值,该像素被排除;若某一像素位置的幅值在两个阈值之间,该像素仅在连接到一个高于高阈值的像素时被保留。

实验环境

  • 本次实验数据采集使用的小觅相机+Autolaber小车。相机标定和具体使用VINS-Fusion配置参考网上其它使用小觅相机的文章。

  • 采集设备如下图:Autolabor智能小车加小觅双目相机

  • 实际测试环境如下图:

    • 有Canny边缘选点在这里插入图片描述
    • 无Canny边缘选点在这里插入图片描述

实验结果

  • 本文基于双目DSO和VINS-Fusion进行结果对比。DSO是慕尼黑工业大学计算机视觉实验室发布的一个视觉里程计方法,属于稀疏直接法,对于弱纹理环境光强变化不大的场景具有较好的效果,故本文使用双目DSO与VINS-Fusion(双目+IMU)(单目+IMU)对比选型。测试PC配置为I3八代,8G内存。对比结果如下:
    • {双目DSO}:由于双目DSO要求相对单目算力高,故需要设置检查像素点在1000内才可以流畅跑完整个轨迹,否则容易崩溃,其结果如图,可以看出效果略差,一方面相机光度参数未标定,而是在此环境下,光强变化大,DSO在此复杂环境下表现出略低的精度。

    • {VINS-Fusion(单目+IMU)}:由于单目无法恢复绝对尺度,对于长走廊,相似特征下,即使有关键帧策略,相似的特征有相似的关键帧,视差小,容易造成尺度漂移,如图所示。

    • {VINS-Fusion(双目+IMU)}:双目由于可以直接通过视差获得绝对尺度,故鲁棒性和精确性在此环境下较单目版本高。而且可以看出比双目DSO精度略高。

  • DSO结果:
    DSO结果漂移严重
  • VINS-mono尺度漂移:
    在这里插入图片描述
    在这里插入图片描述
  • 未加线特征的VINS-Fusion双目+IMU(未开回环):
    在这里插入图片描述
  • 加入线特征之后:
    在这里插入图片描述
  • 加入线特征之后结果对比,本次使用evo评价工具(由于无高精度设备采集真值,故暂时只进行相对轨迹进行精度对比):
    在这里插入图片描述

结果分析

  • 本文均未考虑使用回环检测情况下,在基于VINS-Fusion双目版本里加入Canny算子,使得系统在长走廊低纹理特征环境下的鲁棒性及精度有所提升,但计算速度并没有明显降低。证明本方法的有效性。
本文只是初始实验,后续再加以改进。。。

J.J. Lim, H. Pirsiavash, and A. Torralba. Parsing IKEA objects: Fine pose estimation[J]. In Intl. Conf. on Computer Vision (ICCV), 2013,46(7)2992–2999

VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator, Tong Qin, Peiliang Li, Zhenfei Yang, Shaojie Shen, IEEE Transactions on Robotics

H Zhou.StructSLAM: Visual SLAM With Building Structure Lines - IEEE Xplore,2015

Stefan Leutenegger, Paul Timothy Furgale, Vincent Rabaud, Margarita Chli, Kurt Konolige, Roland Siegwart. Keyframe-Based Visual-Inertial SLAM using Nonlinear Optimization. In Proceedings of Robotics: Science and Systems, 2013

Christian Forster, Luca Carlone, Frank Dellaert, Davide Scaramuzza,On-Manifold Preintegration for Real-Time Visual-Inertial Odometry[J],IEEE Transactions on Robotics,2016,45(3)334-353

AI Mourikis,A Multi-State Constraint Kalman Filter for Vision-aided Inertial Navigation Anastasios I. Mourikis and Stergios I. Roumeliotis.

Mingyang Li and Anastasios I. Mourikis,High-Precision, Consistent EKF-based
Visual-Inertial Odometry,IJRR2012

Canny, J., A Computational Approach To Edge Detection, IEEE Transactions on Pattern Analysis and Machine Intelligence, 8(6):679–698, 1986.

https://zhuanlan.zhihu.com/p/46560299

感谢网友biubiubiu提的建议

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从零手写VIO学习记录——系列奥比中光竞赛题目:【VIO在长走廊弱纹理环境下的优化(设备:小觅双目相机深度版)】 的相关文章

随机推荐