小鱼学习笔记:VO是个啥?一文带你了解视觉里程计

大家好,我是小鱼,前几天和同事聊天,讨论了一下视觉里程计,所以今天小鱼查查资料和大家分享一下关于视觉里程计(VO)的内容。

文章是小鱼纯手打了两个小时写出来的,觉得不错可以点个赞啥的哈哈。

在说视觉里程计之前,我们先了解一下什么是里程计。

从上图可以看出里程计就是通过传感器信息来推算机器人位姿的变化,这里注意是位姿的变化,而不是直接的位姿。

但如果我们知道我们一开始的位置,通过不断的叠加里程计,那么就可以得知当前的位姿。这个叫航位推算。

1.里程估计有哪些方法?

知道了什么是里程计之后,那如何计算里程计呢?传感器信息又有哪些呢?

目前主要有两种:

a.基于机器人运动感知,结合机器人运动学模型计算。比如编码器和IMU。

编码器是个啥原理呢?比如在车轮子上装个转圈数统计的东西(编码器),轮子转的圈数x轮子直径=轮子行走里程。

b.基于环境感知传感器,通过最佳匹配估计。比如激光雷达和相机(视觉)。

通过激光雷达估算的叫激光里程计,通过相机图像估算的叫视觉里程计(Visual Odometry)。

2.视觉里程计(Visual Odometry)是个啥?

视觉里程计就是利用机器人自带的摄像机拍摄图像,通过图像信息来推算自身的位置。

视觉里程计的提出是因为火星车的行走里程估计问题。因为火星地面不平整,也没有墙,激光、编码器估计里程都会失效。

那视觉里程计的原理是什么呢?大家都知道图像时一帧一帧的,视觉里程计其实就是对比当前帧的图像和上一帧图像的区别。

如果相机移动了在两张图像中找到同一个点不同的位置,如果我们看到一只猫在图像的左边。如果相机朝左边转动,那么猫就在下一帧的图像中就会向右移动。

3.视觉里程计计算有哪几种方法?

方法一:基于图像计算

这种小鱼称之为传统方法,毕竟现在算力和精确度啥的都提高了不少。

方法二:基于特征计算

这种是通过图像中所蕴含的特征,比如同一只猫。

这种方法要求两帧之间具有很好的匹配和跟踪特性(就是变化别太快,上一帧朝着前面,下一帧就跑后面了,相机跟不上丫)

4.基于特征的求解步骤

步骤总结一下如下图。除了获取相机图像不需要啥特殊算法,后面四个都是需要算法的。这里我们分别简单说说。

4.1特征检测

特征检测就是找出图像中的关键特征,比如角点,亮度变化很大的点,以及某种特殊的颜色交接点等。

特征点一般有两个描述:

  • 一个叫做关键点,用来标定这个特征点在图像中的位置信息。
  • 特征点的第二个描述就叫做描述子,用来描述该关键点与领域(附近位置)在亮度、颜色、纹理等方面的信息。

常用的特征检测算法:

  • 基于角点(corner)的特征有ORB(是不是想起来了ORB_SLAM)FAST\Haris
  • 基于特征(blob):SIFT、SURF、CENSURE

4.2特征匹配

特征匹配就是找出同一个点在两个图像中的位置,越准确越好。

常用的特征匹配算法有:

  • 暴力搜索(就是二话不说,一个一个点的对比,工作量极大)
  • 约束匹配(增加约束条件,只计算一小部分的,后面有机会小鱼再展开)

4.3运动估计

找到了特征点,那么我们就可以利用特征点来估算相机在空间中移动了多远。

按照传感器的种类可以这样划分:

a. 单目相机(只能获取一张张连续的二维图片,看不出深度信息)

  • 只有2D那就只能用2D-2-2D的方法了,常用的就是对极几何

b.双目相机或者RGBD相机(比如realsens或者Kinect)

双目相机是可以获取到每一个像素的深度信息的,所以可以使用3D点的信息进行运动估计,常见的方法有ICP方法(是不是想起了激光雷达帧间匹配)

c.三维点及其在相机中的投影位置

这个其实是利用了相机的物理特性,相机成像原理就是将3D的信息转换成2D的,所以该方法就是3D-2-2D,PnP (Perspective-n-Point)

PNP(Perspective-n-Point),注意不是三极管哈,其解决的问题是已知n个三维空间点坐标(相对于某个指定的坐标系A)及其二维投影位置的情况下,如何估计相机的位姿。

4.4局部优化

所谓的局部优化是用来交出误差和错误的,因为在上面几个步骤中有可能出现特匹配错误、位姿估计错误、帧与帧之间不断累加的错误等。

主要的方法有光束平移法,这里小鱼就不展开,有兴趣的同学自行搜索。

5.总结

视觉里程计主要用于视觉SLAM中,基于ORB特征检测的有著名的开源库ORB_SLAM,感兴趣的同学可以下载再来跑一跑,小鱼要是有时间也会去玩一玩的。

不知道有多少人能看到最后哈,放个视频给大家看看,关于ORB_SLAM的。

我是小鱼,一名在职机器人算法工程师。

目前在做公众号(鱼香ROS),输出机器人教程、ROS、论文注解等,欢迎你的关注。

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值