A-A+

机器人书单与学习资源——导航篇

2015年05月31日 Resource, robotics 评论 3 条 阅读 8,648 次
转载请保留此段:
感谢郑帆立党Wu Kenzi等给出的原创及授权ExBot转载,由Top liu汇集整理,原文链接
images11111

入门教程

首先推荐 RA magazine 首页的几篇 tutorial 性质的论文。RAM 是 robotics 领域最顶尖的期刊之一,这几篇都是著名学者写给学术新人的入门读物,希望对题主有所帮助。

RAM 首页:RA Magazine - IEEE Robotics and Automation Societ

 

搬出宝典:Multiple View Geometry in Computer Vision。这本书基本涵盖了Vision-based SLAM这个领域的全部理论基础!读多少遍都不算多!另外建议配合Berkeley的课件学习。(更新:这本书书后附录也可以一并读完,包括附带bundle adjustment最基本的levenberg marquardt方法,newton方法等)

 

框架级的工具

然后是框架级的工具。最常用的机器人框架是ROSROS.org | Powering the world's robots,可以使用在Windows,Linux和MacOS等操作系统上,里面包含一整套常用的机器人理论的算法和工具的实现。另一个开源工具集是OpenSLAM OpenSLAM.org,其中的g2o是目前最流行的graph optimization的实现工具。另外OpenCV也是视觉相关必备的基础工具,Multiple View教材中的常用算法在OpenCV中都有常用的实现。(更新:OpenCV的文档Camera Calibration and 3D Reconstruction 中,包含SLAM相关的基础理论公式以及C/C++/Python实现的API)

ROS如果想做应用是必不可少的,我的工作也都是基于ROS的,自己学习中一个比较重要的视频是youtube.com/watch? 自带梯子,还有一个比较好的个人经验是,ROS中有很多很好的包,学好它们对自己有很大提高,比如openni-camera(自己用的是kinect) rgbdslam等等。G2O是最常用的slam后端优化软件,很多成熟的slam package用的都是g2o,rgbdslam应该就是,还有比较新的lsd-slam貌似也是使用g2o的 OpenCV应该是必备技巧吧,就不说了

 

RGB-D Camera

至于RGB-D Camera,最常用的采集设备有两种,一种是Microsoft Kinect,一个生态环境完备的RGBD Camera,可以直接用Visual Studio可Kinect SDK直接开发,也有大量开发好的程序以供借鉴参考,也可以用OpenNI和ROS采集处理,我就不多介绍了,毕竟微软是对程序员最友好的公司没有之一(微软大法好)。另一个是Google的Project Tango,Google对于这个自家的神器还是很低调的,可以看看宣传片ATAP Project Tango ,绝对酷炫——可惜我们lab刚刚买的那一台,我还没有用过,所以对具体开发不太了解。

 

SLAM与优化

只要是SLAM问题就要涉及optimization,就要用到各种least square算法。所以另一个基础理论是Sparse Matrix,这是大型稀疏矩阵处理的一般办法。可以参考Dr. Tim Davis的课件:Tim Davis ,他的主页里有全部的课程视频和Project。针对SLAM问题,最常用的least square算法是Sparse Levenberg Marquardt algorithm,这里有一份开源的代码以及具体实现的paper:Sparse Non-Linear Least Squares in C/C++

SLAM现在用least square已经是潮流了,尽管我的老板是做EKF出家的,但是现在主流期刊上确实已经没有滤波的文章了。其中大型稀疏矩阵的处理是现在大家正在玩弄的东西。在这里推荐另外一个网上课程,Cyrill Stachniss 他教授的机器人基础,定位,绘图等等,个人觉得是很不错的。有浅入深,就不仅仅包含graph based slam了。至于概率和KF的东西,其中说的也很多,尽管现在已经不算是热点了,但是我觉得还是很有必要看看的,毕竟自己第一次接触SLAM就是EKF的,还是有点怀念

另外多说一句题外话,因为Optimization和图片的feature extraction是SLAM里最核心的两个问题,而这两个问题都是运算量极大的。好的SLAM框架要兼顾速度和精确度。目前大部分Vision或者RGBD的SLAM框架都是用C++来时实现完成的以确保运算速度。虽然我个人很欣赏Python,并且Python3也支持SciPy,OpenCV,ROS等重要工具,不过依然有大量的诸如g2o等基础性库在python下无法使用,而且如果要借鉴其他人的代码,最方便的还是在C++中实现。所以如果提问者有志于在这个领域做深入研究,夯实的C++基础是必不可少的。Introduction to Algorithms,以及 @vczh 推荐的C++ Primer等,都是在实际工作前要自己做好的功课。

 

摄像机标定与工具箱

下面说一些硬件和实验上的知识储备。首先Vision-based SLAM常用摄像机标定(Camera Calibration)的世界通用简单方法,是张正友博士(Dr. Zhengyou Zhang,主页Zhengyou Zhang's Home Page)的方法(张正友博士是本领域里少数的具有极其巨大影响力和贡献的华人学者,已成脑残粉嘤嘤嘤)。具体方法和实现,我在这里推荐两个,一个是Caltech工具箱:Camera Calibration Toolbox for Matlab ,以及相关paper:Camera Calibration Toolbox for Matlab。该方法的另一个实现,是Matlab最新版本内置的Camera Calibration的application,自动导入标定图片并把得到的结果输出给Matlab,更加自动化,更加便捷准确。更多的Camera Model理论知识请参考Multiple View Geometry。

 

数据集与测试方法

另外有几个网上成熟的数据集和测试方法,一个是Malaga Dataset,一个西班牙的团队采集的Malaga城市数据:The Málaga Stereo and Laser Urban Data Set,覆盖了城市中汽车驾驶的各种情况(停车,加速,减速,行人,建筑,绿化带等),里面提供了双摄像头,Laser,IMU等数据以及GPS的ground truth trajectory。不过该版本因为是在市中心,所以GPS的ground truth并不可靠。另一个是慕尼黑工业大学Computer Vision Lab的RGB-D

dataset vision.in.tum.de/data/d,里面提供了大量的室内的RGBD数据集,以及非常方便好用的benchmark tools。第三个是KITTI Dataset:The KITTI Vision Benchmark Suite,也是认可度很广泛的汽车驾驶数据集。

 

标签:

3 条留言  访客:3 条  博主:0 条

  1. choovin

    很丰富。。

  2. 土豆大白菜

    Visual Servoing的Part I应该是http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=4015997这一篇

    • top

      感谢,已更新

给我留言

Copyright © ExBot易科机器人实验室 保留所有权利.   Theme   Robin modified by poyoten

用户登录

分享到: