文章目录

  • 1 AVP-SLAM算法流程
    • 1.1 传感器输入
      • 1.1.1 视觉传感器:由四个鱼眼相机组成的环视摄像头
      • 1.1.2 辅助传感器:IMU+轮速计
    • 1.2 建图模块
      • 1.2.1 语义特征提取
      • 1.2.2 更新全局地图
      • 1.2.3 回环检测
    • 1.3 定位模块
    • 1.4 停车位检测
  • 思考与总结
  • 算法复现

1 AVP-SLAM算法流程

论文提出了一个基于视觉的定位解决方案,利用强健的语义特征来辅助车辆在停车场中导航。车辆周围使用了四个摄像头。通过IPM(逆透视变换)将图像变换成鸟瞰图。然后神经网络检测语义视觉特征,包括车道、停车线、路标和减速带。基于这些特征构建了语义视觉地图。通过厘米级的语义特征匹配,可以在地图上对车辆进行定位。

1.1 传感器输入

1.1.1 视觉传感器:由四个鱼眼相机组成的环视摄像头

首先由四个相机通过IPM变换生成四张俯视图,然后根据四个相机之间的关系将其拼接成一整张图,作为整个SLAM系统的图像输入
1.IPM( Inverse Perspective Mapping )逆透视变换

透视变换指的是世界坐标系下的某个3D点映射到2D图像平面的过程
当拿着相机正对着地面的一块方形地板拍照,相机平面完全和地板平面平行,相机的光轴和地板平面垂直,这时得到的图片里,地板的形状也是方形的,这里将相机所在的平面称为平面A
但是当相机斜对着地板平面,即相机平面和地板平面不再平行,在得到的图片里地板的形状可能就变成长方形或者平行四变形,这里将相机所在的平面称为平面B

逆透视变换: 就是将平面B中的地板等图像,变换到平面A,使得图像中的地板形状能够保持它本来方形的样子(投影关系有点像ORB-SLAM中的纯旋转问题)。
在自动驾驶或者自主泊车算法实现过程中,需要检测地面的车道线,指引线等标识,但是安装于车体上的相机拍摄得到的图片里,车道经过映射后出现了变形,因此在算法处理时进行逆透视变换处理,将侧视得到的相关信息映射到俯视的角度,也即鸟瞰图

逆透视变换处理: 其本质就是通过标定获得侧视平面俯视平面的投影变换矩阵
(1)在地平面上放置标定板图像,并获得棋盘格图像上四个顶点的坐标
(2)在拍摄的图像平面提取角点,并获得地平面上四个顶点对应角点在图像空间中的坐标值
(3)通过四个坐标点间的对应关系,获得地平面到图像平面间的投影变换关系H( 是不是在求单应矩阵?同一平面的旋转变换关系
(4)对整个图像进行逆向映射到地平面空间中

逆透视变换的效果可以见链接:https://www.cxybb.com/article/qq_32864683/85471800

2.图像拼接
根据四个相机在车体的安装位置,很容易地可以获得四个相机的相对位置,由相机间的相对位置将经过逆透视变换的四张图片拼接成一张大鸟瞰图。

1.1.2 辅助传感器:IMU+轮速计

IMU和轮速计分别在建图定位过程中起到了作用。
1.在建图中的作用
在建图过程中,IMU和轮速计提供车体的位姿信息(这里似乎没有用到视觉里程计相关的算法,车库中的特征点太稀疏了??),然后根据位姿信息将每一帧局部的视觉语义地图映射和添加到全局坐标系
2.在定位中的作用
首先通过对提取的语义特征信息进行匹配(类似于场景识别或者回环检测),得到视觉定位结果,然后通过EKF将里程计定位信息和视觉定位信息进行融合,得到车体最终的位置。

1.2 建图模块

1.2.1 语义特征提取

输入:一张拼接后的大图
输出:由语义信息组成的局部地图,如下图
使用了CNN网络进行了语义特征的检测,U-Net进行分割。

1.2.2 更新全局地图

根据之前图像IPM的变换关系,可以将这些语义信息映射到三维空间中,并且根据里程计信息,将这些语义特征不断的变换到全局坐标下。

1.2.3 回环检测

回环检测为了解决里程计的漂移的问题,这里使用了语义特征的局部地图不断的ICP全局地图,不断的局部优化。

1.3 定位模块

通过将语义特征与先前的构建出来的地图进行匹配来对车辆进行定位。最后,采用扩展卡尔曼滤波器(EKF)将视觉定位结果与里程计融合,保证了能够正在无纹理的停车场环境中,系统能够输出稳定的定位结果。

1.4 停车位检测

由于停车线和停车位角点是从IPM图像中检测出来的,因此很容易自动检测停车位。角点用于预测停车点的位置。如果停车线与预测的停车位匹配良好,则该预测被认为是正确的。

思考与总结

AVP-SLAM和纯视觉SLAM还是有点区别的,SLAM是同时定位与建图的缩写,在VSLAM中定位指的是随着机器人的运动实时计算得到机器人在世界坐标系下的位姿,但是这种位姿除了用于创建全局地图还有全局优化之外并不能起到我们说的定位的作用,因为单纯的开源SLAM算法并没有将地图服复用起来,其中所说的Localization更像是位姿计算。
AVP-SLAM更像一个比较完整的工程,有建图,有定位,地图可以复用即实现自主泊车。建图时利用IMU和轮速计获取位姿信息而非相机传感器,此时视觉模块更倾向于提供特征信息的功能。在定位时,则是通过语义信息的匹配实现视觉定位,然后融合IMU和轮速计的信息实现定位。明确自身位置信息之后才能进行后续的自主泊车。

想到有两个很有意思的事情,写一下自己比较浅显的想法:
1.自主泊车的实现存在一个前提,就是得知道车位在哪里,或者说我必须知道一个空着的停车位,才能完成后续的工作。这样就带来两个问题或者只适用于以下两种情况:

(1)停车位固定。全局地图创建成功后,停车位想对于车库入口的相对位置是确定的,这样就可以借助IMU和轮速计进行导航,中间借助视觉语义信息的匹配不断进行误差纠正。

(2)停车位不固定,但是对于每个车位都有监控手段(比如红外感应,或压力感应之类的)。然后和1中一样完成后续的自主泊车。

(3)停车位不固定,没有车位监控,使用巡航模式让车自己沿某个路线(可以遍历整个车库),然后根据语义信息寻找空车位,找到之后进行停泊车。

2.根据现实情况,车库中每个车位的信息都在实时变化,故而最开始创建的地图下次再使用时车位周围的环境发生变化了怎么办,比如建图时车库比较空旷,泊车时车位周围都有车已经停靠,甚至有的还把停车位的标识线压住了,这种情况怎么识别?
要学习一下车位附近汽车停靠时的特征信息吗?有车时,没车时,有车压线时,没车压线时,然后到达停车点附近时挨个和每种情况进行匹配来确定停车位的具体位置吗??

算法复现

在git上找到一个大牛基于gazebo仿真把AVP-SLAM复现了一下,直接贴一下git地址和小破站上的演示视频吧
code地址:https://github.com/liuguitao/AVP-SLAM-PLUS
小破站地址:https://www.bilibili.com/video/BV11R4y137xb/

后期有了新的理解或者复现了再继续补充。。

AVP-SLAM算法学习相关推荐

  1. 激光SLAM算法学习(三)——3D激光SLAM

    3D激光SLAM 1.3D激光SLAM的介绍 3D激光SLAM的输入: IMU数据 3D激光雷达数据 里程计数据 3D激光SLAM的输出: 3D点云地图 机器人的轨迹 or PoseGraph 2.3 ...

  2. 3D激光雷达SLAM算法学习01——3D激光SLAM整体框架

    #1.3D激光雷达系列主要内容 结合个人毕业设计和日后发展方向,开始学习3D激光雷达的相关感知算法,预计SLAM(定位和建图)开始,本篇给出简单的框架和绪论,后边会按照图优化/滤波原理.传感器基础.数 ...

  3. 3D激光雷达SLAM算法学习02——3D激光雷达传感器

    1.本篇思维导图 2. 3D激光雷达传感器分类 3. 机械激光雷达 直观视频感受:Velodyne 优点:360°视野,精度高,工作稳定,成像快 缺点:成本较高,不符合自动驾驶车规,生命周期短, 主要 ...

  4. SLAM算法学习(2): SLAM原理理顺

    slam原理流程详解:http://www.360doc.com/content/10/0928/16/3482759_57075454.shtml (这里面主要涉及到自主定位部分,但并未谈到地图特征 ...

  5. 3D激光雷达SLAM算法学习03——前端里程计方案

    1.本篇大纲 2.前端里程计综述 解决的问题:由原始点云信息求解得到两个关键帧之间的相对位姿约束 输入:原始点云信息 输出:两个时刻之间的位姿关系 P = [R T] (4x4) 主流流程: 点云预处 ...

  6. 十.激光SLAM框架学习之LeGO-LOAM框架---算法原理和改进、项目工程代码

    专栏系列文章如下: 一:Tixiao Shan最新力作LVI-SAM(Lio-SAM+Vins-Mono),基于视觉-激光-惯导里程计的SLAM框架,环境搭建和跑通过程_goldqiu的博客-CSDN ...

  7. 20~50K|智驾科技SLAM算法总监、深度学习、感知定位、高精地图等多个岗位

    公司介绍 上海智驾汽车科技有限公司(智驾科技 MAXIEYE),是一家智能驾驶和智慧出行领域的核心技术服务商.我们为客户及合作伙伴提供全工况.多场景.跨平台的辅助驾驶(ADAS)和自动驾驶(ADS)系 ...

  8. 深度学习slam算法工程师

    打算以后从事slam+深度学习方向的工作,整理一些招聘网站上的工作要求,作为自己的工作目标. 1.50%配合深度学习算法工程师,集成现有的物体识别框架和贝叶斯方法,构建包含物体标签的地图,用于家用机器 ...

  9. MULLS:一种基于多尺度线性最小二乘的激光SLAM算法

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨paopaoslam 来源丨 泡泡机器人SLAM 标题:MULLS: Versatile LiD ...

  10. 彻底搞懂基于LOAM框架的3D激光SLAM全套学习资料汇总!

    地图定位算法是自动驾驶模块的核心,而激光SLAM则是地图定位算法的关键技术,其重要性不言而喻,在许多AI产品中应用非常多(包括但不限于自动驾驶.移动机器人.扫地机等).相比于传统的视觉传感器,激光传感 ...

最新文章

  1. 软件测试需要学习什么技术
  2. spoj Test(hash)
  3. jQuery-demos轮播图练习(一)
  4. 网络:TCP维护安全可靠机制提供的定时器
  5. 使用Maven构建Spring项目“HelloWorld”
  6. mysql关于时间的面试题_关于面试中的mysql试题1
  7. sdut 2493 Constructing Roads (图论)
  8. OpenCv图像像素操作
  9. 俺也去了WinHec..............
  10. 拼多多如何引流推广产品?拼多多新产品如何推广?
  11. mysql 1698_MySQL-1698 : Access denied for user 'root'@'localhost'解决方法
  12. nginx配置文件的基本参数略解
  13. laydate时间控件 (开始日期、结束日期)
  14. 漫步微积分二十九——微积分基本定理
  15. 多CPU/多核/多进程/多线程/并发/并行之间的关系
  16. 微信语音技术原理_干货 | 2 分钟论文:语音生成表情包背后的技术原理
  17. 0.linux笔记.....持续更新...
  18. Android开发各种Utils收集库
  19. 保险行业如何运营大数据分析技术
  20. unity2d随机生成物体_unity2D游戏关卡地图编辑随机生成系统Strata Easy 2D Level Generator 1.3...

热门文章

  1. 手机软件开发入门 - 中国象棋(2)090311
  2. 将考研 408 专业课复习过程开源是什么体验?
  3. 计算机类最热门最高薪的四大专业详细解析,为你2022年高考志愿填报,提供决策参考
  4. 基于Python的结构力学位移法编程求解
  5. 杰理之SDK 开发方式【篇】
  6. java代码安全审计_《网络安全java代码审计实战》
  7. 【Android -- 性能优化】耗电优化
  8. centos8 拖拽进入虚拟机文件位置
  9. 网站推广手段集锦(2008七夕节中国情人节版)
  10. 基于java的档案管理系统