相关文献调研
Published:
research journal, 2013.9.
2013年9月18日
一、课程:
政治,14:00,两节;线性系统理论,18:30,三节。
二、工作内容:
阅读文献
1.题目:RGB-D SLAM
2.作者:Jorge Garcia Bueno
3.已读章节:Chapter 1 ~ Chapter 3
4.主要内容概述:
Chapter 1:机器人的发展、分类,以及本论文所涉及项目的工程目标。
Chapter 2:SLAM的定义,现如今的发展,急待解决的问题,GraphSLAM原理的介绍。
Chapter 3:系统结构,ToF相机的相关原理,SIFT特征提取,RANSAC算法与ICP算法的介绍。
2013年9月22日
一、课程:
计算机视觉,8:00,三节;建模与辨识,14:00,三节。
二、工作内容:
阅读文献
1.题目:RGB-D SLAM
2.作者:Jorge Garcia Bueno
3.已读章节:Chapter 4 ~ Chapter 7
4.主要内容概述:
Chapter 4:系统的软硬件构成简介。
Chapter 5:实验结果概述。主要从四个方面进行描述,分别是实时性问题,特征提取,位姿估计与闭环检测。
Chapter 6:总结。
Chapter 7:展望。
2013年9月23日
一、课程:
机器人学,8:00,三节;机器人仿真技术,18:30,两节。
二、工作内容:
利用下午的时间简单回顾Kinect有关内容
1.阅读微软Kinect开发人员的两篇文献
KinectFusion: Real-time 3D Reconstruction and Interaction Using a Moving Depth Camera
KinectFusion: Real-Time Dense Surface Mapping and Tracking
2.官方API介绍 Kinect for Windows Programming Guide
3.有关Kinect开发的几篇博客(毕业设计里参考过的)
台湾heresy的系列介绍文章,他是第一个用汉字介绍Kinect和OpenNI的人,毕业设计的过程中遇到问题时曾多次参考他所记录下的开发过程
CSDN上小斤陈的开发教程,写的较通俗,刚开始入手时曾以此为参考
涉及到OpenCV,所以在利用OpenCV进行物证提取时曾参考此文
2013年9月24日
一、课程:
模式识别,8:00,三节。
二、工作内容:
找到并浏览了一些近些年发表的有关Kinect的文献
1.3D Reconstruction Technique with Kinect and Point Cloud Computing
这篇文章对Kinect以及PCL做了一些介绍,同时泛泛地概括了从Kinect获取数据,生成点云,点云匹配,一直到表面重建的整个过程,但并未针对其中任何部分做更多详细介绍。
2.Kinect Cane: Object Recognition Aids for the Visually Impaired
利用固定在盲人手杖上的Kinect,生成点云数据,并对其进行处理,识别出地面、椅子平面以及楼梯台阶。由于Kinect与地面的相对位置是固定的,所以可以建立坐标系,来确定地面所在平面的大致位置,并以此为参考来进行椅子平面和台阶平面的识别。(识别的算法中还提到VOI- volume of interest和cube,还没太看懂)
2013年9月25日
一、课程:
政治,14:00,两节;线性系统理论,18:30,三节。
二、工作内容:
找到了一篇与我的毕设工作有点相似性的论文,也是用Kinect来完成信息采集的。下图为系统框图。
论文题目:Using the Microsoft Kinect for 3D Map Building and Teleoperation
整个系统分为两个部分,机器人控制端与合作控制端。其中机器人控制端与我在毕设中所定义的移动终端类似,完成信息采集,点云生成与预处理的过程。不同的是在这个系统中将原始点云进行处理提取出了差值信息,来更新合作控制端用以显示的点云数据。合作控制端完成的是点云显示与用户指令输入的工作,所以在这两个控制端之间完成的应是一种双向通信的过程(我的是单向)。
在创建三维地图的时候用到的一种八叉树的方法,引用了一个叫OctoMap的开源库(参考文献中有相关的论文,准备明天具体看一下)。
2013年9月27日
一、课程:
无(运动会停课)。
二、工作内容:
1.利用下午和晚上的时间,根据25号看的文章,找了一些相关资料。
八叉树的方法是用在点云数据的存储中,将三维空间进行连续的划分,根据精度的要求可以选择最小子空间的大小,再根据点云中的点落入子空间的个数来对子空间的状态进行判断。是一种进行点云数据压缩或领域搜索的方法,可以在精度要求不高或传输时带宽不够的情况下减小数据量。
PCL中有直接利用八叉树进行点云压缩的库,今天想运行一下试试但一直没有编译通过,问题寻找中……
2.昨天听师兄讲了下工作的问题。我所理解的大体如下:
他在做的是在点云中抽取平面特征,也基于抽取到的特征来进行点云的匹配。
在此基础上还有一些想法,比如在点云特征提取的同时再利用彩色图像的特征,会不会有更好的效果(不过实时性又会受到影响)。还有就是用ICP进行匹配。
我在毕设中是先对彩色图像进行特征抽取,根据特征点的位置来选取点云区域来减小数据量,接着再运行ICP(原始的ICP算法,未进行改进),最终得到两帧之间的变换矩阵。虽然在彩色图像上提特征再选区域是为了提高ICP的运行速率,但这么个过程处理下来其实速度也是比较慢的(因为surf算法也比较耗时),而且效果也不太好。不过师兄说由于我毕设中的应用背景是手持Kinect,所以变换矩阵是完全依靠两帧点云来进行计算并没有任何额外的信息,而如果是移动机器人平台的话,机器人本身的其它传感器是可以给出坐标信息的,这样可以给ICP提供一个比较靠谱的初值,也许效果会好一些。
2013年9月29日
一、课程:
计算机视觉,8:00,三节;系统建模与辨识,14:00,三节。
二、工作内容:
根据师兄提到的两个方向,我选择ICP作了进一步的调研(主要针对实时性的问题)。
ICP中最耗时的步骤主要有两个,一是两个点云中对应点对的寻找,还有就是给出某种误差测度下达到最佳匹配的迭代过程。
对于对应点对的寻找,原ICP的方法是对一个点集中的某点,遍历另一点集中的所有点,计算距离,寻找到距离最近的点作为匹配点对,这种方法可以用构建Kd-tree的方法来提高搜索效率。另一种方法是通过某点法向量方向上的射线与另一点集表面的交点来确定对应点,这种方法来点云构成曲线比较平滑(低频)时收敛比距离计算要快一些。还有一种利用投影的方法,叫“reverse calibration”(看了简介还没看原文),据说在更不规则的点云上可以较快的收敛,且不用构建kd-tree。
对于迭代过程中所采用的误差测度主要分为“点到点”与“点到面”两种。之前看到过一些文献(Generalized ICP等)中介绍点到面的方法更具有鲁棒性,且一般情况下收敛得要更快一些。
下一步准备在弄清原理的基础上试着实现一下改进ICP算法,比较之前用原始ICP运行时的速度,实测其对实时性的影响。