首页 > 其他分享 >基于关键帧的RGB-D视觉惯性里程计

基于关键帧的RGB-D视觉惯性里程计

时间:2022-10-05 20:03:11浏览次数:48  
标签:关键帧 EKF 算法 里程计 相机 RGB IMU ICP

基于关键帧的RGB-D视觉惯性里程计_3d

基于关键帧的RGB-D视觉惯性里程计_3d_02

论文信息:Chu C , Yang S . Keyframe-Based RGB-D Visual-Inertial Odometry and Camera Extrinsic Calibration Using Extended Kalman Filter[J]. IEEE Sensors Journal, 2020, PP(99):1-1.

摘要:这篇论文提出了一个新的基于RGB-D相机和IMU的视觉惯性里程计。为融合视觉和惯性传感器测得的数据信息,在论文中运用了EKF(扩展卡尔曼滤波),并提出迭代的方法来减少线性误差。论文中提出的算法不仅可以估计相机的轨迹,还能标定重力和相机外参(即相机和IMU之间的相对位姿)。在视觉里程计部分,采取了关键帧策略,这种方法要比帧间对齐好一些。另外,我们结合了基于特征的视觉里程计和基于ICP的视觉里程计,从而增加系统的精度和姿态估计的鲁棒性。仿真结果和实际数据验证了该方法的有效性。

简介:

这篇论文旨在为使用IMU和RGBD传感器的室内机器人提供一个准确、鲁棒的导航系统。使用深度传感器而不是单纯的单目双目相机的优点在于由于深度相机的使用,我们可以跳过深度估计步骤,从而减少计算量和误差。在图像匹配对齐方面,主流上有两种方法:特征点法和直接法。特征点法通过最小化特征点的重投影误差来估计位姿,而直接发通过最小化光度(深度)误差来估计位姿。基于特征点的算法鲁棒性更好一些,但直接法的准确度更胜一筹。因此在本文提出的算法中,我们结合了两种算法以同时实现鲁棒性和准确度。

本文贡献:

1)在同一个 EKF中结合了基于RGB(特征点法)和基于深度(ICP)的视觉里程计和IMU,这同时保持了鲁棒性和精度。

2)提出了一个将关键帧位姿作为状态向量一部分的EKF模型

3)不仅标定了相机外参,还在线估计了重力向量

基于关键帧的RGB-D视觉惯性里程计_特征点_03

系统框图

算法概述:

1、结构介绍

首先,通过IMU的数据估计机器人的运动。当新的一帧图像传入系统时,在RGB图像中检测和提取修改后的ORB特征。进行特征匹配后,首先更新EKF状态,并将其应用于ICP算法的初始化,ICP算法在当前帧和关键帧之间运行。如果结果发生了收敛,EKF再次更新。

2、EKF部分

在本文提出的算法中,IMU状态、相机外参、重力、关键帧的姿态等均包含在状态向量中。状态向量如下:

基于关键帧的RGB-D视觉惯性里程计_关键帧_04

误差向量:

基于关键帧的RGB-D视觉惯性里程计_关键帧_05

由于速度等参数是在关键帧坐标系下表示的,因此对速度传播更新的方程进行调整,得到新的连续时间状态估计传播方程:

基于关键帧的RGB-D视觉惯性里程计_3d_06


基于关键帧的RGB-D视觉惯性里程计_特征点_07

为了时间上的同步,我们在两个图像帧之间存储IMU测量值。当有新的帧进入系统时,利用存储的我IMU数据进行状态估计和协方差矩阵的传播,同时,使用4阶Runge-Kutta算法在两帧之间的时间段内对向量和矩阵进行积分。

3、特征匹配的量测模型

基于关键帧的RGB-D视觉惯性里程计_关键帧_08

基于关键帧的RGB-D视觉惯性里程计_3d_09

基于关键帧的RGB-D视觉惯性里程计_关键帧_10

基于关键帧的RGB-D视觉惯性里程计_特征点_11

基于关键帧的RGB-D视觉惯性里程计_3d_12

基于关键帧的RGB-D视觉惯性里程计_特征点_13

基于关键帧的RGB-D视觉惯性里程计_特征点_14

基于关键帧的RGB-D视觉惯性里程计_关键帧_15


基于关键帧的RGB-D视觉惯性里程计_3d_16

基于关键帧的RGB-D视觉惯性里程计_特征点_17

基于关键帧的RGB-D视觉惯性里程计_特征点_18

4、ICP里程计量测模型

为提高效率,我们在EKF中采用ICP测量的松耦合。对于ICP来说,在本文算法中,采用点-面矩阵。关键帧和当前帧之间的相对位姿可表示为:

基于关键帧的RGB-D视觉惯性里程计_3d_19

首先,上式和EKF估计的位姿均被用于ICP初始化。对于每一次迭代,相机坐标系中的每一个点都被投影到关键帧坐标系:

基于关键帧的RGB-D视觉惯性里程计_3d_20

残差表示为:

基于关键帧的RGB-D视觉惯性里程计_关键帧_21

上式线性化后得到:

基于关键帧的RGB-D视觉惯性里程计_3d_22


基于关键帧的RGB-D视觉惯性里程计_特征点_23

实验结果:

基于关键帧的RGB-D视觉惯性里程计_关键帧_24

基于关键帧的RGB-D视觉惯性里程计_关键帧_25

在实景实验中,设置了4种场景进行实验验证:

1)不进行相机外参标定的VIO

2)不进行重力标定的VIO

3)包含相机外参和重力标定的VIO(本文算法)

4)不使用ICP算法的VIO

下图展示了四种场景的轨迹估计结果。四种场景的误差分别为2.92%,3.05%,0.57%,2.41%。

基于关键帧的RGB-D视觉惯性里程计_特征点_26

总结

此论文中,我们提出了一个实时的基于关键帧的RGB-D视觉惯性里程计,在此系统中,相机外参参数和重力参数均可被在线标定。主要的贡献在于在一个EKF中推导出了结合关键帧、标定以及特征点和ICP测量的方程。

本文仅做学术分享,如有侵权,请联系删文。


基于关键帧的RGB-D视觉惯性里程计_特征点_27

▲长按关注公众号



标签:关键帧,EKF,算法,里程计,相机,RGB,IMU,ICP
From: https://blog.51cto.com/u_14439393/5732840

相关文章

  • 导航系统中里程计研究综述
    文章:ASurveyonOdometryforAutonomousNavigationSystems作者:SHERIFA.S.MOHAMED,MOHAMMAD-HASHEMHAGHBAYAN,TOMIWESTERLUND翻译:particle论文阅读模块将分享点......
  • 计算机视觉方向简介 | 视觉惯性里程计(VIO)
    VIO-SLAMVisual-InertialOdometry(VIO)即视觉惯性里程计,有时也叫视觉惯性系统(VINS,visual-inertialsystem),是融合相机和IMU数据实现SLAM的算法,根据融合框架的不同又分为松耦合......
  • YUV420, YUV422, RGB32内存占用
    用R,G,B三原色可以表示所有颜色,每个分量的范围是0-1.我们用一个字节(8bit,2的八次方256)代表一个分量的话,每个分量的范围就是0-255,一个像素有R,G,B三个分量,所以一个像素就占用......
  • 【ACM MM2021】Cross-modality Discrepant Interaction Network for RGB-D Salient Ob
    【MM2021】Cross-modalityDiscrepantInteractionNetworkforRGB-DSalientObjectDetection代码:https://rmcong.github.io/proj_CDINet.html1、研究动机这是来......
  • RGB2LIDAR:多模态融合的大范围场景的视觉定位(ACM-MM2020 )
    论文阅读《RGB2LIDAR:TowardsSolvingLarge-ScaleCross-ModalVisualLocalization》多模态融合视觉定位方法,2020的ACM-MM,主要的创新点就是提出了一个融合LIDAR和IMAGE......
  • 9、FFmpeg使用clion+mingw32编译学习y420p,yuv,rgb编码
    基本思想:继续学习ffmpeg基础知识第一步:进行y420p解码,然后将数据转rgb24格式,显示,重点学习了sws_getContext函数,可以通过他进行各种转码cmakelists.txt文件内容cmake_minimum_......
  • WPF 从 RGB 字符串转纯色颜色画刷的方法
    本文告诉大家几个方法用来从RGB字符串转纯色的SolidColorBrush画刷在Windows下,约定的编程规范里,颜色的RGB的字符串表示方法是#[A]RGB的格式,一定是R红色,接着是......
  • AV_PIX_FMT_CUDA 数据转 RGB
    ffmpeg的cuvid解码结果数据格式为AV_PIX_FMT_CUDA,实际使用中后续接算法需要转为RGB。算法跑在显卡上,解码也在显卡上,所以转换也定为直接在显卡上进行。 关于ffmpeg的cuv......
  • Yet Another RGB Sequence(排列组合)
    题意问有多少字符串满足如下要求:只包含R、G、B三种字符,并且数量分别是\(A\),\(B\),\(C\)。包含\(K\)个连续子串RG。题目链接:https://atcoder.jp/contests/abc266/tasks......
  • Basler相机Bayer格式转Qt RGB888
    无论什么品牌的相机,Bayer转RGB都涉及到插值,因此建议使用官方SDK里的函数进行转换。针对Basler相机,代码如下:voidBaslerCamera::toQImage(CGrabResultPtrptrGrabResult,......