作者丨紫薯萝卜@知乎

来源丨htttps://www.zhihu.com/question/47817909/answer/110895292

编辑丨3D视觉工坊

躺了一年多的动态环境下激光定位的坑,忍不住来强答一发。标签虽然是视觉SLAM,但不管激光也好视觉也好,SLAM也好定位也好,都会面临环境动态性问题。

环境中的物体通常可以分成三类:

  1. 静态物体:长时间稳定不变的物体,如墙、柱子等。

  2. 半静态物体:大部分时间是静止的,但会在某个时刻发生变化。如时而开时而关的门,路边的停车。

  3. 动态物体:移动的物体,如移动的行人、车辆。

通常的SLAM、定位算法都是基于静态环境假设的,也就是假设环境中都是第一类物体,显然,现实环境中并不是这样。不过,视觉中的RANSAC匹配,2D下的MCL等算法都有一定的鲁棒性,能够适应少量的动态变化,所以只要第二、三类物体在环境中占的比重不大,那些基于静态假设的算法一般也还是work的。当然,动态环境的挑战还是要直面的,特别是在项目已经接了,发现现场环境全是二、三类物体,再说做不了已经晚了,必须得硬着头皮上的情况下,o(╯□╰)o。

处理动态环境其实就是处理第二、三类物体,思路一般就两种:要么剔掉,要么建模。通常的作法是:

1. 对于第三类物体,直接当做outlier剔掉。因为这类物体在连续观测帧中是移动的,所以先将相邻帧进行匹配,得到匹配关系R,t,再将不满足匹配关系的关联对当做outlier剔除,图像中可以用RANSAC,激光帧可以ICP。值得注意的是,新出现在视野中的点,也无法与历史帧关联,但不应该被当成outlier,可以先通过视野判断,将新出现在视野中的点抽离出来,剩下的再去剔outlier。但在一些情况仍然有问题,这些极端情况目前也没有太好的解决方法(也可能是我了解的太少,大家如果有思路,欢迎交流。)

  • 当动态物体很大,占据视野很大一部分的时候,比如,机器人跟在一个很大的车后面行驶,我们希望的outlier(车),会被算法当成inlier,而我们希望的inlier(两侧的墙等参照物)被错误当成了oulier剔除。

  • 在长走廊环境下,如果存在移动物体,会被错误的当成静态物体来做匹配。这其实是匹配算法的问题,在走廊中,前后维度的不确定度很大,而移动物体被错误的用来修正前后维度的不确定度。试想一下:在一个平行的走廊,观测到一个物体离你越来越近,这有几种可能:1)物体没动,你在往前运动,2)物体往你动,你没动。3)物体也在动,你也在动。而匹配算法同样也是基于静态性假设,所以它会优先相信第一种情况。但事实可能是后面两种情况。当然,我们可以用物理里程计做一定的参考,但物理里程计也是有噪声的,如果动态物体移动的速度在里程计噪声范围内,里程计也是没法参考的。

2. 对于第二类物体,一般是环境发生的变换,所以需要把这些变化建模、更新到地图当中,也就是动态地图更新。在2D-SLAM中,如果用的栅格地图,环境变化后可以根据新的观测对栅格地图的值进行更新(如Gmapping),更厉害的就是直接构建动态地图模型,比如对每个栅格用HMM构建动态模型。Graph-SLAM中,因为存的是一些关键帧或者点云,所以当发现环境变化时,需要找到历史的那几帧过期的关键帧剔掉。VSLAM了解的不是太多,特征点地图、关键帧地图一般也是可以更新的吧。地图更新会来带的一个新的问题在它依赖于定位或匹配的稳定性和精度,如果匹配失败,地图可能会被错误的更新,当地图被错误更新后,在错误地图上的定位出的位置就也有可能是错的,进而地图进一步被错误更新,恶性迭代...虽然最后也能形成一张新的地图,老的地图被完全覆盖掉了,但是对于导航而言,之前在老地图上的导航目标点等没有被更新,新的地图已经无法再进行导航了。

动态环境问题对SLAM或定位来说,仍然没有很好的解决方案。所以现在一般通过多传感器融合来规避这些问题,像激光、视觉、惯导里程等,因为通常环境变化不会对所有传感器产生影响,实在不行,还有惯导可以起作用。另外,有一种比较新的思路是抛弃全局SLAM,不再建模全局地图,而是进行相对SLAM,因为对机器人来说SLAM的目的还是用来导航,导航只关心机器人能够准确的移动到环境中的某个位置,并不关心地图是不是有误差,所以只需要构建一张位姿的拓扑图,机器人沿着拓扑路径就可以导航到某个点。

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

干货下载与学习

后台回复:巴塞罗自治大学课件,即可下载国外大学沉淀数年3D Vison精品课件

后台回复:计算机视觉书籍,即可下载3D视觉领域经典书籍pdf

后台回复:3D视觉课程,即可学习3D视觉领域精品课程

3D视觉工坊精品课程官网:3dcver.com

1.面向自动驾驶领域的多传感器数据融合技术

2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进
4.国内首个面向工业级实战的点云处理课程
5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解
6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦
7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化
8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)

9.从零搭建一套结构光3D重建系统[理论+源码+实践]

10.单目深度估计方法:算法梳理与代码实现

11.自动驾驶中的深度学习模型部署实战

12.相机模型与标定(单目+双目+鱼眼)

13.重磅!四旋翼飞行器:算法与实战

14.ROS2从入门到精通:理论与实战

15.国内首个3D缺陷检测教程:理论、源码与实战

16.基于Open3D的点云处理入门与实战教程

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。

一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

▲长按加微信群或投稿,加微信:dddvision

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、激光/视觉SLAM自动驾驶等)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近6000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

圈里有高质量教程资料、答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~  

动态环境下的slam问题如何解决?相关推荐

  1. 动态环境下的SLAM:DynaSLAM 论文学习笔记

    动态环境下的SLAM:DynaSLAM 论文学习笔记 这篇文章 论文摘要 系统流程 相关环节的实现方法 神经网络检测图中动态物体(Mask R-CNN) Low-Cost Tracking 使用多视图 ...

  2. ERASOR:解决动态环境下的SLAM建图问题,有效过滤动态物体(ICRA2021)

    作者丨马赫WGH@知乎 来源丨https://zhuanlan.zhihu.com/p/409884870 编辑丨3D视觉工坊 一.算法解析 这篇论文致力于解决动态环境下的建图问题. 在以「城市开阔道 ...

  3. 基于点云相关性的动态环境下RGB-D SLAM

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 标题:RGB-D SLAM in Dynamic Environments Using Point C ...

  4. 【论文笔记】DP-SLAM:一种动态环境下基于移动概率的SALM系统A visual SLAM with moving probability towards dynamic environments

    Central Idea 本文提出了一种新的基于稀疏特征的视觉SLAM算法(DP-SLAM),该算法基于移动概率传播模型进行动态关键点检测.该概率表示一个关键点位于移动对象上的可能性.该方法结合几何约 ...

  5. 高动态环境下基于随机可及集的Path-Guided APF算法的Motion Planning

    文章目录 摘要 引言 相关工作 问题假设 动态障碍物 Relative robot-obstacle dynamics(运动学) SR Sets for Collision Avoidance 方法! ...

  6. windows10环境下VMware14中Ubuntu16.04解决如何上网问题

    windows10环境下VMware14中Ubuntu16.04解决如何上网问题 参考文章: (1)windows10环境下VMware14中Ubuntu16.04解决如何上网问题 (2)https: ...

  7. dedecms php5.4 无法退出后台,DedeCMS 织梦在 Windows 的 PHP5.4 环境下登录后台空白的解决办法...

    在Windows/Windows主机上安装了DedeCMS 织梦程序后,但是通过/dede登录后台却是一片空白,那么这样的问题应该怎样解决呢?下面一步步分析怎样解决DedeCMS 织梦在 Window ...

  8. python中import requests是什么意思_Ubuntu中python环境下import requests错误的解决(学习过程问题记录)...

    python中导入模块:import requests提示错误,错误信息描述如下:>>>import requests Traceback (most recent last): F ...

  9. 2021-10-21Windows10特定环境下为小地球的解决办法

    问题出现:在实验室时,ActiveDnsProbeContent:131.107.255.255无法解析www.msftconnecttest.com和www.msftncsi.com 这两个地址,导 ...

最新文章

  1. linux upx 报错 NotCompressibleException
  2. Strut学习-web.xml
  3. 理正地基基础计算机辅助设计的英文缩写,理正基础CAD软件介绍理正基础CAD软件介绍.pdf...
  4. 【转载】全球天然气探明储量
  5. 代码安全招聘岗位火热来袭(职位更新)
  6. 怎样有效地推广APP
  7. MFC 教程【9_MFC的状态】
  8. 试用 P、V操作描述下列理发师和顾客之间的同步问题
  9. 【SCI\EI】SCI分区,该看JCR还是中科院?
  10. Spark综合学习笔记(五)SparkStreaming介绍
  11. 解决打开html文件为乱码(完美)
  12. Rk 平台显示屏调试
  13. SMT表面贴片工序详解
  14. 一位苦逼程序员的找工作经历
  15. Blender 插件开发 将object设置成bpy.context.object
  16. i7 10700k和i9 9900k对比哪个好
  17. ​携创教育:2022年下半年自考准考证号查询系统汇总
  18. 图形学基本知识整理(概述 + 硬件知识)
  19. NGNIX在CENTEROS 下部署
  20. Not Shading英语翻译

热门文章

  1. Unity2D横版游戏开发-游戏框架构建脚本学习
  2. android badge,Android应用图标上的小红点Badge实现
  3. 小胖虎带你了解MySQL 算术运算符和逻辑运算符
  4. 【PSO三维路径规划】基于matlab粒子群算法无人机三维路径规划【含Matlab源码 015期】
  5. JAVA遍历list四种方法及其效率比较
  6. 联想拯救者Y7000P大白菜装机
  7. Android开发第三方支付微信支付实例集成过程介绍
  8. flax error shape (46,256) (48,256)
  9. 多色彩欧美扁平风格商务PPT模板
  10. 【OpenCV 例程 300篇】244. 特征检测之 BRIEF 特征描述