0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

视觉里程计的详细介绍和算法过程

ADAS 来源:djl 作者:ADAS 2019-08-08 14:21 次阅读

视觉里程计(Visual Odometry)

机器人学与计算机视觉领域,视觉里程计是一个通过分析相关图像序列,来确定机器人位置和朝向的过程。

在导航系统中,里程计(odometry)是一种利用致动器的移动数据来估算机器人位置随时间改变量的方法。例如,测量轮子转动的旋转编码器设备。里程计总是会遇到精度问题,例如轮子的打滑就会导致产生机器人移动的距离与轮子的旋转圈数不一致的问题。当机器人在不光滑的表面运动时,误差是由多种因素混合产生的。由于误差随时间的累积,导致了里程计的读数随着时间的增加,而变得越来越不可靠。

视觉里程计是一种利用连续的图像序列来估计机器人移动距离的方法。视觉里程计增强了机器人在任何表面以任何方式移动时的导航精度。

视觉里程计的详细介绍和算法过程

视觉里程计算法:

大多数现有的视觉里程计算法都是基于以下几个步骤:

1、图像获取:单目照相机、双目照相机或者全向照相机;

2、图像校正:使用一些图像处理技术来去除透镜畸变;

3、特征检测:确定感兴趣的描述符,在帧与帧之间匹配特征并构建光流场;

(1)、使用相关性来度量两幅图像间的一致性,并不进行长时间的特征跟踪;

(2)、特征提取、匹配(Lucas–Kanade method);

(3)、构建光流场;

4、检查光流场向量是否存在潜在的跟踪误差,移除外点;

5、由光流场估计照相机的运动;

(1)、可选方法1:使用卡尔曼滤波进行状态估计;

(2)、可选方法2:查找特征的几何与3D属性,以最小化基于相邻两帧之间的重投影误差的罚函数值。这可以通过数学上的最小化方法或随机采样方法来完成;

6、周期性的重定位跟踪点;


视觉里程计算法(基本知识):

大多数现有的视觉里程计算法都是基于以下几个步骤:

1、图像获取:单目照相机、双目照相机或者全向照相机;

2、图像校正:使用一些图像处理技术来去除透镜畸变;

3、特征检测:确定感兴趣的描述符,在帧与帧之间匹配特征并构建光流场;

(1)、使用相关性来度量两幅图像间的一致性,并不进行长时间的特征跟踪;

(2)、特征提取、匹配(Lucas–Kanade method);

(3)、构建光流场;

4、检查光流场向量是否存在潜在的跟踪误差,移除外点;

5、由光流场估计照相机的运动;

(1)、可选方法1:使用卡尔曼滤波进行状态估计;

(2)、可选方法2:查找特征的几何与3D属性,以最小化基于相邻两帧之间的重投影误差的罚函数值。这可以通过数学上的最小化方法或随机采样方法来完成;

6、周期性的重定位跟踪点;

我选择的视觉里程计算法是:“ sift特征匹配点——基本矩阵——R和T”。

第一步:由特征点计算基本矩阵F。

一般而言,sift点是存在误匹配的情况,因此,采用ransac鲁棒方法计算基本矩阵F。这个过程已经实现,但是还有一个小问题:同样的一组sift点,进行两次基本矩阵计算,得到的基本矩阵差异很大,因此,我在ransac方法的基础上,根据得到的inliers点,采用常规的8点基本矩阵计算方法,这样得到的基本矩阵能保持不变

第二步:由基本矩阵计算R和T

方法1:奇异值分解

E = KK'*F*KK; %%这是真实的本质矩阵E

[U,S,V] = svd(E); %奇异值分解。
T_nonscale = U(:,3); %% 不含有刻度因子的平移向量
D= [0 1 0 ;-1 0 0; 0 0 1];
Ra = U*D*V';或者Rb = U*D'*V';

方法2:非线性优化解迭代求解。我尝试了三种不同的目标函数形式:

% RT_from_E_ydf.m; 物理意义不明显!精度和速度都不如后面的好。
% RT_point_constraints_ydf.m 速度折中,精度较高
% RT_point_constraints_ydf02.m 速度最快,精度不够高

发现的问题:特征点的误匹配问题。

误匹配对位姿解算结果影响分析:我们将手动选取的匹配点加上一个噪声后(1-2个像素的噪声),位姿误差很大,也就是说,要得到精确的位姿解算结果,噪声不能大于1个像素,即需要考虑亚像素级别的特征点匹配!!实验表明,用sift特征是一种比较合理的方法,但是,sift特征容易出现误匹配点的情况,将其进行剔除是很有意义的一件事情。

目前我采用的是手动选择匹配好的区域,从而选择比较好的匹配点,见hand_choose_sift_ydf.m。结果如下:

Image0053 & Image0056 (sift特征点误匹配率较高) 备注
剔除前(°) 172.1492 178.2707 -133.4679 ×
剔除后(°) -0.0774 10.2036 0.0192
真实值(°) 0 10 0
Image0053 & Image0054 (sift特征点误匹配率较低)
剔除前(°) 0.0780 -10.9056 -0.0013
剔除后(°) -0.0133 -10.7892 0.2188
真实值(°) 0 -10 0


下一步研究sift特征点的自动选择算法

一般而言,针对匹配点的鲁棒算法有M-estimators等,我这里选择的是最小中值法(least-median-squares)。程序见“RT_from_siftpoint_ydf03.m”,该方法运算量非常大,需要进行163(以保证能得到一组正确的样本,假设sift误匹配率为40%的情况下)组优化求解计算。Very time consuming

疑问,为什么横向选取特征点的时候,结算结果会出现很大的误差呢?

【横向选取Sift特征点和纵向选取sift特征点,会有不同。能不能进行分析,得到如下结论:如果关心的是航向角,则sift特征点集合呈竖状比较好,即sift点集合和旋转轴平行。

1×8选取特征点

表不同方向手动选取特征点

Image0053 & Image0054 备注
1×8 -96.0655 14.8033 -11.8376 ×
-168.9075 35.7764 -17.7804 ×
0.4452 -19.4641 -1.7153 ×
8×1 0.0554 -10.8175 -0.0209
0.0904 -10.8215 -0.0115
0.5212 -10.8057 0.2690
真实值(°) 0 10 0


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器人
    +关注

    关注

    206

    文章

    27043

    浏览量

    201418
  • adas
    +关注

    关注

    307

    文章

    2058

    浏览量

    207852
  • 快速视觉里程计

    关注

    0

    文章

    2

    浏览量

    1534
收藏 人收藏

    评论

    相关推荐

    关于自行车速度里程计的设计?求大神指点!!!

    谁能帮帮小弟我! 十分感谢! 要求:用c语言编写一个自行车速度里程计! 基于芯片AT89C51,用霍尔元件测速度!用lcd1602显示最好!不要求报警!能有一个开关暂停显示!小弟的qq1252295329!!求大神高手指点一个
    发表于 04-16 20:01

    求大神帮忙用c语言编写一个自行车速度里程计

    谁能帮帮小弟我! 十分感谢! 要求:用c语言编写一个自行车速度里程计! 基于芯片AT89C51,用霍尔元件测速度!用lcd1602显示最好!小弟的qq411694253!!求大神高手指点一个
    发表于 05-17 20:47

    出租车行驶里程计

    proteus仿真单片机实验实训仿真文件 出租车行驶里程计
    发表于 10-22 10:59

    机器人视觉系统组成及定位算法分析

    ,这些眼睛亦可称为VO(视觉里程计:单目or立体),维基百科给出的介绍:在机器人和计算机视觉问题中,视觉
    发表于 06-08 08:30

    如何去提高汽车里程计电路的抗干扰能力?

    里程计工作原理是什么?汽车里程计的受扰现象有哪些?
    发表于 05-19 07:26

    如何理解SLAM用到的传感器轮式里程计IMU、雷达、相机的工作原理与使用场景?精选资料分享

    视觉惯性里程计 综述 VIO Visual Inertial Odometry msckf ROVIO ssf msf okvis ORB-VINS VINS-Mono gtsam目录里程计
    发表于 07-27 07:21

    请问如何理解SLAM用到的传感器轮式里程计IMU、雷达、相机的工作原理?

    请问如何理解SLAM用到的传感器轮式里程计IMU、雷达、相机的工作原理?
    发表于 10-09 08:52

    如何实现出租车里程计时系统设计?

    如何实现出租车里程计时系统设计?
    发表于 10-27 07:17

    视觉语义里程计详细资料说明

    鲁棒数据关联是视觉里程计的核心问题,图像间的对应关系为摄像机姿态和地图估计提供了约束条件。目前最先进的直接和间接方法使用短期跟踪来获得连续的帧到帧约束,而长期约束则使用循环闭包来建立。在这篇论文
    发表于 10-28 08:00 0次下载
    <b class='flag-5'>视觉</b>语义<b class='flag-5'>里程计</b>的<b class='flag-5'>详细</b>资料说明

    计算机视觉方向简介之视觉惯性里程计

    实现SLAM的算法,根据融合框架的不同又分为松耦合和紧耦合。 其中VO(visual odometry)指仅视觉里程计,T表示位置和姿态。松耦合中视觉运动估计和惯导运动估计系统是两个
    的头像 发表于 04-07 16:57 2233次阅读
    计算机<b class='flag-5'>视觉</b>方向简介之<b class='flag-5'>视觉</b>惯性<b class='flag-5'>里程计</b>

    基于单个全景相机的视觉里程计

    本文提出了一种新的直接视觉里程计算法,利用360度相机实现鲁棒的定位和建图。本系统使用球面相机模型来处理无需校正的等距柱状图像,扩展稀疏直接法视觉里程计(DSO,direct spar
    的头像 发表于 12-14 14:53 558次阅读

    轮式移动机器人里程计分析

    但凡涉及到可移动的机器人的导航系统,大概率会涉及到里程计的计算,比如轮式移动机器人、无人机、无人艇,以及多足机器人等,而计算里程计的方案也有很多种,比如基于编码器合成里程计的方案、基于视觉
    的头像 发表于 04-19 10:17 1209次阅读

    介绍一种基于编码器合成里程计的方案

    摘要:本文主要分析轮式移动机器人的通用里程计模型,并以两轮差速驱动机器人的里程计计算为案例,给出简化后的两轮差速驱动机器人里程计模型。
    的头像 发表于 04-19 10:16 1292次阅读

    介绍一种新的全景视觉里程计框架PVO

    论文提出了PVO,这是一种新的全景视觉里程计框架,用于实现场景运动、几何和全景分割信息的更全面建模。
    的头像 发表于 05-09 16:51 1390次阅读
    <b class='flag-5'>介绍</b>一种新的全景<b class='flag-5'>视觉</b><b class='flag-5'>里程计</b>框架PVO

    基于相机和激光雷达的视觉里程计和建图系统

    提出一种新型的视觉-LiDAR里程计和建图系统SDV-LOAM,能够综合利用相机和激光雷达的信息,实现高效、高精度的姿态估计和实时建图,且性能优于现有的相机和激光雷达系统。
    发表于 05-15 16:17 461次阅读
    基于相机和激光雷达的<b class='flag-5'>视觉</b><b class='flag-5'>里程计</b>和建图系统