作者:颜沁睿
链接:https://www.zhihu.com/question/47817909/answer/107775045
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

嘿嘿谢邀~~这个问题还是挺感兴趣的, 正好早起看到答一发.

----------
没有专门研究dynamic scene这个问题, 但是也算看过. 比较明确的是核心问题还是在于data association, 即对于新的observation, 如何与过去已经观察到的tracks进行关联. 扣题, 想想为什么在动态场景下会出现问题?因为我们在mapping的时候建立的点云, 都是一堆无意义的特征点而已, 我们并不知道哪些点是什么物体, 是否在运动...

于是回答第二第三个问题, 其实必须要进行跟踪, 如果仅仅给出两帧图片, 即使是人自己也是很难区分是否动态物体的, 何况是电脑? 跟踪的意义在于, 对于场景中的多个物体进行运动估计, 加上对自身运动已知, 就可以推测哪些物体在做绝对运动, 哪些在做相对运动, 哪些静止不动.

数据关联的问题在现在比较火爆的几个Monocular SLAM的工作中都没有明确指出, 但实际上却是SLAM中的最关键问题, 在computer vision领域这个问题又叫做corresponding问题, 即特征匹配.
回想我们当前的特征匹配策略, 主要是测量两个特征descriptor之间的相似程度. 具体做法是, 在两个连续图像帧中提取所有可以提取的特征点, 然后逐一比对. 如果足够相似, 就认为两个特征点是同一个. 事实证明这样做是远远不够的, 因为图像特征的局部性, 在图像中的重复性, 会造成大量的误匹配. 当然我们有很多奇技淫巧, 比如1NN/2NN, RANSAC等方法, 但问题并不算被解决, 只能算是被改善了一些吧.

-------------------------------
既然提到了, 那就顺便讲讲数据关联吧.
回到最基本的数据关联问题上. 在做物体跟踪的时候, 我们是可以根据物体之前的运动, 估计它在新一帧中出现的位置的, 如下图中蓝色的正方形和三角形. 问题在于这个估计值是有一定不确定度的, 就是在圆圈范围内都是有可能的, 并不一定在蓝色图形处. 于是假如此时我们有5个observation, 对于o1, o2, o5都没什么问题, 直接关联给track1, track2就好了, 但是对于o3, o4就有问题了, 没办法确定应该把它们关联给哪个track, 因为给谁都有可能是对的.为了方便, 直接盗图, 于是换一个图来解释.......
此时就要使用上概率大法. 注意这时候还有一种可能性是o2,o3其实是假观测, 就是它根本不属于任何一个track, 这在现实情况中是有可能发生的, 假设这种情况发生的概率是\beta. 假设任意观察到一个目标的概率是Pd, 把目标i关联到track j上的概率是g_{ij}.
于是对刚刚的o3, o4有十种可能的关联方式, 对每一种可以算出一个likelihood出来. 然后选择likelihood最大的为最终关联就好了. 这样做充分地考虑了不确定性的问题, 比起之前RANSAC乱试智能多了.
当然这只是数据关联的其中一种算法, JPDAF(Joint probability data association filter). 事实上它有一个很强的假设是, 之前的关联都是正确的, 我们只考虑新的observation与旧的track如何关联. 而事实上, 最大likelihood的那个假设有可能只在当前帧是对的. 于是最好的方式是对每一帧保留所有的可能假设, 到具体关联的时候再做积分就好了. 只是这样做会带来随着帧数增长成指数级别的假设数量, 所以在现实中总需要做些假设去简化它. 这种方式叫做MHT(Multi-Hypothesis Tracking).
总而言之, 数据关联问题至关重要, 看看大牛Frank Dellaert的PHD论文吧, 整个工作就是在做data association的.
--------------------------
回到动态场景的问题下来, 刚刚说的是理论的, 吹吹牛吧. 动态场景在语义地图下当然就好办很多啦哈哈. 我们如果能识别出点云中的物体, 至少就可以知道它是否能动, 然后再去判断它是否真的在动. 语义地图的工作应该有很多团队在进行了, 尤其在DL,CV横行, vision slam当道的大环境下, 语义的引入应该很快会完成吧. 个人对这方面保持持续关注, 论文就是做的Object level slam方面的, 欢迎各位大侠拍砖交流!
--------------------------------
参考资料:
课件: http://www.cse.psu.edu/~rtc12/CSE598C/datassocPart2.pdf

动态环境下的slam问题如何解决?的更多相关文章

  1. OSGi运行环境下java反序列化问题的解决方式

    在OSGi环境下采用以下方式对其它bundle的类进行反序列化时,会出现ClassNotFoundException异常. ByteArrayInputStream bi = new ByteArra ...

  2. windows环境下 nginx+iis 反向代理解决跨域问题

    项目基本完成,是时候花点时间整理一下最近的姿势了 1 什么是跨域? 网上对于跨域的概念会有大篇幅的文章去解释,似乎有点玄乎,初学者很容易对这个概念产生恐惧,跨域其实很简单,其实只要知道一点,无法跨域访 ...

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

    进入控制面板,网络和Internet,网络连接 点击以太网,查看详细信息 点击属性 --> 共享,允许其他网络-->选择VMnet1 点开虚拟机编辑选项 ,选择 VMNET1 仅主机,其他 ...

  4. 当碰到非ARC写的文件时在ARC环境下运行报错时解决办法

  5. 在linux环境下重启oracle数据库,解决密码过期的问题

    (1) 以oracle身份登录数据库,命令:su – oracle (2) 进入Sqlplus控制台,命令:sqlplus /nolog (3) 以系统管理员登录,命令:connect /as sys ...

  6. 在Linux环境下设置 ora-01031:insufficient privileges解决方法总结

    今天需要使用sys用户处理问题,但是报错上面ora-01031:insufficient privileges. 在网上有很多方法,这个是自己经过测试的方法步骤. 1:首先检查文件sqlnet.ora ...

  7. CAS服务器集群和客户端集群环境下的单点登录和单点注销解决方案

    CAS的集群环境,包括CAS的客户应用是集群环境,以及CAS服务本身是集群环境这两种情况.在集群环境下使用CAS,要解决两个问题,一是单点退出(注销)时,CAS如何将退出请求正确转发到用户sessio ...

  8. 解决Chrome Safari Opera环境下 动态创建iframe onload事件同步执行

    我们先看下面的代码: setTimeout(function(){ alert(count); },2000); var count = []; document.body.appendChild(c ...

  9. Semantic Monocular SLAM for Highly Dynamic Environments面向高动态环境的语义单目SLAM

    一.摘要 当前单目SLAM系统能够实时稳定地在静态环境中运行,但是由于缺乏明显的动态异常处理能力,在动态场景变化与运动中往往会失败.作者为解决高度动态环境中的问题,提出一种语义单目SLAM架构,结合基 ...

随机推荐

  1. Dockerfile 构建kibana 反向代理应用做用户认证访问

    FROM centos MAINTAINER z*****ch.cn RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime & ...

  2. linux popen()与system()的区别

    linux popen()与system()的区别 popen() 可以在调用程序和POSIX shell /usr/bin/sh 要执行的命令之间创建一个管道(请参阅sh-posix(1) ). p ...

  3. 如何在WCF中用TcpTrace工具查看发送和接收的SOAP消息

    WCF对消息加密(只对消息加密,不考虑Authorize)其实很简单,只要在server和client端的binding加入security mode为Message(还有Transport, Tra ...

  4. 使用EF操作不同数据库(以SQLite为例)

    最近一直在和数据库作对. 从安卓平台上给了我个SQLite数据库,要求程序能够读取不同的文件.由于字段实在太多,不愿意直接使用原来直接读取datatable的方式来做,手动写映射太痛苦...于是想起来 ...

  5. 每日英语:Don't Call Us Bossy

    [Confident girls are often called the other B-word, and it can keep them from reaching their full po ...

  6. 每日英语:Doc, Do I Need A Juice Cleanse?

    Some drink only vegetable juice. Others soak in Epsom salts. It's all in the pursuit of ridding the ...

  7. Asp.Net WebApi swagger使用教程

    swagger简介 别名:丝袜哥 功能:用于生产api文档 swagger安装 Nuget搜索swagger,然后安装Swashbuckle swagger使用 生成api的xml文档 webapi项 ...

  8. oracle 函数to_char(数据,'FM999,999,999,999,990.00') 格式化数据(转)

    转载自:https://blog.csdn.net/fupengyao/article/details/52778565 遇到了oracle 取数格式问题,这里记一下 我们通常在做数据算数后,会想要让 ...

  9. hdoj:2023

    #include <iostream> #include <string> #include <vector> ][],b[],c[]; using namespa ...

  10. Java知多少(97)绘图模式概述

    绘图模式是指后绘制的图形与早先绘制的图形有重叠时,如何确定重叠部分的颜色.例如,后绘制的覆盖早先绘制的:或者后绘制与早先绘制的两种颜色按某种规则混合.主要有正常模式和异或模式两种:正常模式是后绘制的图 ...