动态环境下的slam问题如何解决?
链接: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乱试智能多了.






总而言之, 数据关联问题至关重要, 看看大牛Frank Dellaert的PHD论文吧, 整个工作就是在做data association的.
--------------------------
回到动态场景的问题下来, 刚刚说的是理论的, 吹吹牛吧. 动态场景在语义地图下当然就好办很多啦哈哈. 我们如果能识别出点云中的物体, 至少就可以知道它是否能动, 然后再去判断它是否真的在动. 语义地图的工作应该有很多团队在进行了, 尤其在DL,CV横行, vision slam当道的大环境下, 语义的引入应该很快会完成吧. 个人对这方面保持持续关注, 论文就是做的Object level slam方面的, 欢迎各位大侠拍砖交流!
--------------------------------
参考资料:
课件: http://www.cse.psu.edu/~rtc12/CSE598C/datassocPart2.pdf
动态环境下的slam问题如何解决?的更多相关文章
- OSGi运行环境下java反序列化问题的解决方式
在OSGi环境下采用以下方式对其它bundle的类进行反序列化时,会出现ClassNotFoundException异常. ByteArrayInputStream bi = new ByteArra ...
- windows环境下 nginx+iis 反向代理解决跨域问题
项目基本完成,是时候花点时间整理一下最近的姿势了 1 什么是跨域? 网上对于跨域的概念会有大篇幅的文章去解释,似乎有点玄乎,初学者很容易对这个概念产生恐惧,跨域其实很简单,其实只要知道一点,无法跨域访 ...
- windows10环境下VMware14中Ubuntu16.04解决如何上网问题
进入控制面板,网络和Internet,网络连接 点击以太网,查看详细信息 点击属性 --> 共享,允许其他网络-->选择VMnet1 点开虚拟机编辑选项 ,选择 VMNET1 仅主机,其他 ...
- 当碰到非ARC写的文件时在ARC环境下运行报错时解决办法
- 在linux环境下重启oracle数据库,解决密码过期的问题
(1) 以oracle身份登录数据库,命令:su – oracle (2) 进入Sqlplus控制台,命令:sqlplus /nolog (3) 以系统管理员登录,命令:connect /as sys ...
- 在Linux环境下设置 ora-01031:insufficient privileges解决方法总结
今天需要使用sys用户处理问题,但是报错上面ora-01031:insufficient privileges. 在网上有很多方法,这个是自己经过测试的方法步骤. 1:首先检查文件sqlnet.ora ...
- CAS服务器集群和客户端集群环境下的单点登录和单点注销解决方案
CAS的集群环境,包括CAS的客户应用是集群环境,以及CAS服务本身是集群环境这两种情况.在集群环境下使用CAS,要解决两个问题,一是单点退出(注销)时,CAS如何将退出请求正确转发到用户sessio ...
- 解决Chrome Safari Opera环境下 动态创建iframe onload事件同步执行
我们先看下面的代码: setTimeout(function(){ alert(count); },2000); var count = []; document.body.appendChild(c ...
- Semantic Monocular SLAM for Highly Dynamic Environments面向高动态环境的语义单目SLAM
一.摘要 当前单目SLAM系统能够实时稳定地在静态环境中运行,但是由于缺乏明显的动态异常处理能力,在动态场景变化与运动中往往会失败.作者为解决高度动态环境中的问题,提出一种语义单目SLAM架构,结合基 ...
随机推荐
- LaTeX :font size 修改字体大小的几种方式
调整字体大小的几种方式,大小依次增大,具体如下: \tiny \scriptsize \footnotesize \small \normalsize \large \Large \LARGE \hu ...
- 基于Centos搭建Jenkins 环境搭建
系统要求: CentOS 7.2 64 位操作系统 安装 Jenkins Jenkins 简介 Jenkins 是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提 ...
- NeoFinder for Mac(增强型文件管理工具)破解版安装
1.软件简介 NeoFinder 是 macOS 系统上一款帮助用户管理磁盘的 Mac 工具,NeoFinder for mac 能迅速组织您的数据,无论是在外部或内部磁盘,或任何其他卷.它能记 ...
- Windows安装Flask Traceback (most recent call last):
Exception: File "c:\users\appdata\local\programs\python\python36-32\lib\site-packages\pip\compa ...
- 【转载】ASP.NET MVC的过滤器【Filters】
文章来自: http://www.cnblogs.com/HopeGi/p/3342083.html 这篇对Filters讲的很详细.正好我自己也不用写了,真的很棒的一篇文章 APS.NET MVC中 ...
- Android 四大组件 Service 服务
1.Service简单介绍 依照使用范围分类: 类别 优点 缺点 差别 应用 本地服务 Local Service 本地服务在一定程度上节约了资源,另外本地服务由于是在同一进程,因此不须要IPC,也 ...
- c#实现windows远程桌面连接程序代码
使用winform制作windows远程桌面连接程序,windows自带了远程桌面连接,我们需要将远程桌面连接集成 到自己的winform程序,并实现管理远程主机的配置. 远程桌面核心类库 windo ...
- 消息推送之百度云推送Android集成与使用方法
这两天由于项目需要,研究了一下百度云推送,本来这事没什么多大工作量的,但注册百度开发者账户创建应用令我蛋疼菊紧了好一阵,这些东西做了对技术没啥提升,不做又不行,必经之路.好在我耗费了N多个毫毫秒秒后稀 ...
- Android查询不到电话号码解决方法
貌似联系人有三个数据库,且不同步,另外也有可能是版本问题. 解决方案:https://github.com/codinguser/android_contact_picker 接下来会对其进行一些改造 ...
- 微信小程序测试指南
[本文出自天外归云的博客园] 微信小程序本地部署测试方法 下载微信开发者工具 让小程序管理员将测试人员的微信号添加开发者权限 本地设置hosts为测试环境hosts 打开微信web开发者工具并扫码登录 ...