分享

机器人,打算做SLAM

 quasiceo 2015-12-26

刚刚开始做机器人,打算做SLAM,不知道机器人定位领域现在有哪些比较新的算法?希望大家推荐推荐

按投票排序 按时间排序

7 个回答

方沁园,教练,我想写代码
也是初学者 说些比较基础的 欢迎指正!

SLAM(Simultaneous localization and mapping),我们要达到的目的就是估计机器人(传感器-比如相机)的位置轨迹,然后创建地图。locating和map两者互相依赖,密不可分。然而我们已知的信息一个是observation,即传感器收集到的信息(现在研究的多的一般是基于RGB-D相机的,比如微软Kinect,因为不仅能收集到深度和颜色信息,而且比以前laser scanner等轻巧便宜);还有一个就是我们施加给机器人的control commands.我们要解决的就是通过这两个已知,去估计位置和地图这样一个问题。表达成概率问题如下:
Map形式的有好多种。最传统就是去重建一些landmark,用Extend Kalman滤波器(EKF)去估计landmarks以及机器人的位置,是第一个SLAM的有效的解决方案。其他的map representation比如occupancy grids也 比较常见,是把要重建的环境表达成网格的形式,通过比如Bayes滤波器family中的某种可以计算每个小格被占用的概率,来还原地图。在S. Thrun. 的《Robotic mapping: A survey》中有详细的说明,如下表列举了一些主要的算法以及相关特性。这个在2002年就发表了,也算比较老了,但许多描述都是SLAM的重要基础。
SLAM 一个重要的首先要解决的问题是registration的问题,我的理解是把不同角度采集到的数据整合(alignment)到一个坐标系中。针对两组数 据(比如两幅不同角度采集的画面),可以点对点的进行匹配,寻找他们之间的transformation从而进行数据alignment并进行对 sensor的定位,一个重要的算法是ICP(Iterative closest point
(Example: Aligning Two 3D Maps)

从 registration的角度,很多研究有把SLAM的问题分成dense和feature-based两种(如下图),前者(右图)多是对密集的点云 (point cloud)通过ICP来进行点对点alignment ,这种做法比较准确,把所有的数据都联合起来就可以得到地图与sensor的轨迹。但因为纯是点对点运算,可能会丢失一些画面中属于画面特征的重要信息。 所以feature-based也被广为应用,我们提取出SIFT,SURF等图像特征,再对这些特征进行alignment,算法比如RANSAC,可 以实现对特征的联合。但针对特征不明显的环境,比如深夜环境,特征的办法就没有dense的办法有效了。两种方法都可以实现对数据的 registration,也有一些项目是结合两种方法的。


(来源 vision.in.tum.de/resear

除了registration,SLAM(主要是graph-based SLAM)还有一个重要的待解决问题是Loop Closure Detection(闭 环检测?),它是检测新的观察到的环境来确定自己是不是到了一个曾经到过的地点, 以消除localization的不确定性。因为如果一直是通过对不同角度采集到的不同画面(不同帧)一步一步的进行联合来估计sensor的位置的话, 这个定位误差会累积,多以loop closure意义重大,这里不展开了。

接下来我们需要对地图的整体构建进行optimization,这是关键一步。我们要解决将特征点re-project回3D空间时的误差最小化问题,这就是bundle adjustment(BA)问题,用到least square等算法,最小化误差。g2o便是一个解决SLAM或者BA中这个误差最小化问题的框架,原话是:an open-source C++ framework for optimizing graph-based nonlinear error functions。另外还有TORO,是通过梯度下降实现graph中constraint带来的误差从而达到优化的有效算法。

最终我们要的3D地图,有颜色,有表面,可能质地也可以展现出来。这是map representation的问题,相关的方法有Surfel,Volumetric Representation(代表KinectFusion),Mesh,等等...

还在入门中。。以后会多回来改正补充
收藏 · 没有帮助 · · 作者保留权利
Wu Kenzi,Action for Perception
看到有人点赞了,更新一下吧--------------------Dec. 4th. 2015

在这里简单的把RSS2015里面关于SLAM,我自己深入看过的文章说下
ElasticFusion: Dense SLAM Without A Pose Graph
Thomas Whelan, Stefan Leutenegger, Renato Salas Moreno, Ben Glocker, Andrew Davison
Exploiting the Separable Structure of SLAM
Kasra Khosoussi, Shoudong Huang, Gamini Dissanayake

Monocular SLAM Supported Object Recognition
Sudeep Pillai, John Leonard

Probabilistic Semi-Dense Mapping from Highly Accurate Feature-Based Monocular SLAM
Raul Mur-Artal, Juan Tardos



第 一篇文章完全没有看过,在这里就不说了,第二篇文章是我们组的,组会上听说过,Kasra的主要工作我感觉是挖掘graph structure对于slam consistency的影响,什么样的graph是一个能够保证好的slam结果的graph。说实话,工作很理论,我个人是看不太懂的,隐隐约约知道 是在做什么。
第三篇和第四篇我都有深入看过。sudeep其实一开始貌似是seth的学生,做的偏视觉,后来转到john下面,然后就结合 SLAM做了个升级的object recognition系统,效果提升也很好理解,你通过多帧信息对环境的理解,物体的识别,相对关系肯定比一帧图像来的好,文章里侧重提到 scalability比较好,其实也是他使用编码方法的原因。第四篇文章想必回答问题的人基本都知道,就是ORBSLAM的后续工作,但是是 semidense,这一点和lsd有点像,而且同样是一样系统性的文章,我觉得他们工作的牛逼之处在于,你看看orbslam和这篇文章,基础的贡献 有,但是你觉得有多牛逼,真不好说,但是人家出来真实跑的效果就是很好。

然后,在RSS今年有一个slam的workshop,大家可以参考一下
The problem of moving sensors
John,mingo 和shoudong的报告都很好看,推荐大家读一读


===================================================




补充几个自己的拙见,硕士期间做SLAM相关工作,博士本来报导师是为了做SLAM,但是导师建议做了别的。以下回答可能说算法不是很多,方向偏重一些:

现在还有哪些团队在专门做SLAM:
理 论上面,还专注于SLAM的团队已经不多了,由于这个问题和BA有交叉,有些组习惯于发到CV的会上,专注于机器人SLAM的有西班牙 ZARAGOZA,mit csail 的michael kaess,以及之前他的gatech的frank dallert. frank和zaragoza的jose据我们师兄说也是tro的这个方面的副主编,关注一下他们组的工作,可能会给你提供一些方向。我们组的 shoudong也依然在这个方向上。Dr. Shoudong Huang's Personal Page 感兴趣的话也可以看看,通过seminar介绍貌似在做 graph optimization 中图结构的事情。还有德国freiburg那个组的工作,也就是G2O作者的那个组。

哪些算法比较新?
SLAM领域:
上个月的IJRR 特刊
Special Issue on Robot Vision
Parallax BA 已经有源代码了 openslam上也有了,其他的我不清楚,该文做的是feature表述的工作
还有一个有源代码,跑过的
vision.in.tum.de/resear



现在SLAM想作出点东西着实不容易的,我们实验室的内部邮件
Getting a paper in RSS is hard enough (I know well, mine was turned
down!), getting a paper accepted for RSS in SLAM is nearly impossible
these days,


加油
收藏 · 没有帮助 · · 作者保留权利
匿名用户
李珂 赞同
Monocular? Stereo? RGBD?

一般来说,传统的就是EKF和bundle adjustment两种方法
收藏 · 没有帮助 ·
匿名用户
我很喜欢MSCKF。。在学习中。
收藏 · 没有帮助 ·
为什么没人提Kinect fusion,还有mit的Michael kaess做的升级版kintinuous很牛逼的说。
另外,tum的计算机视觉组做的lsd slam,用单目相机做三维slam也是相当的生猛。
不过,其实SLAM和定位还是有点区别的,slam前端算法和定位到是差不多,但后端那些优化算法和定位还是不一样的,楼主到底是想问定位还是slam?
收藏 · 没有帮助 ·
占坑 等我最近忙完之后回答这个问题
收藏 · 没有帮助 ·
rktang,detail is devil
g2o

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多