本书是关于机器人学和机器视觉的实用参考书, 第一部分“基础知识”(第2章和第3章)介绍机器人及其操作对象的位置和姿态描述,以及机器人路径和运动的表示方法;第二部分“移动机器人”(第4章至第6章)介绍其基本运动控制模式及其导航和定位方法;第三部分“臂型机器人”(第7章至第9章)介绍其运动学、动力学和控制方面的知识;第四部分“计算机视觉”(第10章至第14章)包括光照与色彩,图像形成和处理技术,图像特征提取,以及基于多幅图像的立体视觉技术;第五部分“机器人学、 视学与控制”(第15章和第16章)分别讨论基于位置和基于图像的视觉伺服及更先进的混合视觉伺服方法。
本书将机器人学与机器视觉知识有机结合,给出了实例算法和程序。作者有完备的代码可下载,用于验证书中知识点和实例,注重如何利用视觉信息控制机器人的运动。
只要会使用MATLAB ,就能通过本书学习和掌握机器人与机器人视觉的基础知识和控制算法。本书使用的MATLAB“机器人学工具箱”(Robotics Toolbox)和“机器视觉工具箱”(Machine Vision Toolbox)可从 www.petercorke.com/RVC 下载。
译 者 序
从世界上第一台工业机器人诞生至今,机器人技术已经有了长足的发展。智能机器人是现今机器人领域研究的热点,其特点之一是能够融合多种传感器的信息做出分析、 判断和决策,以适应复杂的环境和任务。随着硬件成本的降低和计算机性能的提升,视觉传感器已逐渐成为机器人常用的感知器件。与其他种类传感器相比,视觉传感器能提供更加丰富和全面的信息,因而必将成为智能机器人的主要传感器。
目前,国内外有关机器人技术和机器视觉技术的专著很多,但大多是两种技术单独论述。即使有的机器人专著中包含了视觉技术,也是作为机器人传感器的一种简要介绍。本书是将机器人学与机器视觉知识有机结合的产物。虽然书中阐述了机器人学和机器视觉各自的基础知识,但更注重如何利用视觉信息控制机器人的运动,将两者融合运用。本书侧重知识的实用性,图片说明及应用实例贯穿全书,很少有理论方程的长篇大论。即使在讲述理论基础知识的同时,也穿插了很多实例,可以让读者对学到的知识点及时进行验证,使读者不断获得掌握知识的满足感,增加学习兴趣。另外,本书给出的实例算法和程序都是基于目前国内大专院校和研究所广泛使用的数学仿真软件包MATLAB。该软件包功能强大,而且有很多开源的工具箱,其中本书主要使用的“机器人学工具箱”和“机器视觉工具箱”就是作者自己编写的。读者可以利用MATLAB中现成的函数、 模块及工具箱完成机器人的运动和控制仿真,从而省去大量编程时间,便于快速验证和掌握所学的知识,也为下一步用其他语言编程打下了基础。
全书共分为5部分。第一部分是机器人学基础(第2章和第3章),介绍了机器人及其操作对象的位置和姿态表达,以及机器人路径和运动的表示方法; 第二部分和第三部分介绍了两类典型的机器人,其中第二部分(第4章至第6章)是关于移动机器人的,介绍了其基本运动控制模式及其导航和定位方法; 第三部分(第7章至第9章)针对关节式机械臂,介绍了其运动学、 动力学和控制方面的知识; 第四部分(第10章至第14章)涉及了机器视觉技术的基础知识,包括光照与色彩、 图像形成、 图像处理、 图像特征提取,以及立体视觉技术; 第五部分(第15章和第16章)介绍了基于视觉的机器人控制方法,包括基于位置的视觉伺服和基于图像的视觉伺服,以及更先进的混合视觉伺服方法。
本书可以作为学习机器人技术和视觉控制的高年级本科生和研究生的教辅书籍。现有的专业教材一般理论性较强,知识比较抽象,难以理解。同时,要在实际机器人上开展大量实验成本既高,也耗时。本书中大量的仿真实验实例会帮助学生更容易和及时地验证并掌握相关知识。该书也可以作为从事机器人技术研究和开发人员的技术参考书,可以帮助他们在机器人投入实际制作前对机器人的运动和控制进行仿真,验证其设计的合理性和有效性。
参加本书翻译工作的有刘荣(翻译第1章、 第6章、 第15章和第16章及附录)、 薛彤(翻译第2章和第3章)、 陈锐(翻译第4章和第5章)、 徐江平(翻译第7章至第9章)、 李扬(翻译第10章至第12章)和翟士民(翻译第13章和第14章)。全书由刘荣负责统稿和审校。鉴于译者水平有限,难免有错误和不妥之处,敬请广大读者批评指正。
序 言
很久以前,我收到一本很厚的博士论文让我评审。论文的主题是关于机器人视觉控制的,作者是彼得?科克(Peter Corke)。以下是我对该论文评语的一段摘录: 这是一篇杰作,无论在论文构思还是实际内容上都是出类拔萃的,其质量之高堪称博士生论文的表率。
二十多年来,彼得?科克一直致力于机器人与视觉二者的集成技术研究和探索,并且取得了很多突出的成果。现在,他的这些成果终于在本书中与大家见面了。在这本新书中,不仅有前沿理论,还有应用实例,它包含了作者多年来在井下机器人、 无人飞行器、 水下机器人、 野外作业机器人等领域探索中所取得的富有特色的基础和应用研究成果。
虽然现在已有很多关于机器人以及视觉的专著,但很少有像这本书一样在两种技术的集成、 剖析以及例证方面做得如此出色的。书中对有关技术的探讨和论述既深入透彻,又通俗易懂。对于机器人领域正在或将要从事这方面研究的人员而言,这是一本绝对有价值的参考书。本书涉及的技术比较全面,对于要实现机器人视觉任务的几乎每个方面都有涵盖与分析,这一点读者可以从书中对MATLAB工具箱(Toolbox)软件的有效使用中体会到。
本书内容按读者接受相关知识的先后逻辑进行安排,从移动机器人基础到机器人导航、 定位,以及机械臂的运动学、 动力学和关节控制,再到摄像机建模、 图像处理、 特征提取以及多图像几何学。最后,将以上技术知识通过集成到视觉伺服系统中进行更广泛的探讨。在上述过程中,作者展示了如何利用强有力的数字工具和有效软件对复杂问题进行分解并最后解决的方法。
Springer Tracts in Advanced Robotics(STAR, 施普林格先进机器人技术集)系列丛书致力于将机器人学领域的最新研究进展引入学术界,内容选择是基于它们的重要性和研究质量。出版该系列丛书的目的是要通过对机器人学一些关键技术开发进展的广泛而及时的传播,推动学术界研究人员之间的交流与合作,并为该技术的进一步发展做出贡献。
彼得?科克的这本专著以其跨学科性、 缜密的构思和精彩的内容为STAR系列丛书增色良多。
欧萨马?卡蒂布(Oussama Khatib)
加州,斯坦福
2011年7月
前 言
告诉我,我会忘记。
给我看,我可能记住。
让我参与其中,我才会理解。
——中国谚语
机器人和机器视觉的研究都涉及到用算法来处理大量数据。这些数据来源于各种传感器,如测量车轮转速的、 测量机械臂关节转角的、 或者测量机器人环境观察图像中各像素亮度的。对于很多的机器人应用,需要实时处理的数据量非常大,就视觉处理而言,数据会达到每秒几十到几百兆字节的量级。
过去,机器人和机器视觉领域中的许多技术进步都是由于数据处理方法的改进而推动的,并且这种促进作用仍然继续着。这些数据处理方法的改进一方面体现在大量新的并且更有效的算法的涌现,另一方面则是摩尔定律下的机器本身计算能力的大幅提升。回想20世纪80年代中我踏入机器人和视觉研究领域时,IBM公司的个人计算机才刚推出,它用的仅仅是主频477 MHz的16位处理器,以及16 KB的内存(扩展后才256 KB)。经过25年后,计算机的计算能力已经翻番了16次,也就是增长了大约65 000倍。在20世纪80年代后期,能够实时进行处理图像的系统需要19英寸宽的机柜才能装下(见图0.1)。而今天,一块小小的高性能处理芯片就能胜过那时的图像处理能力。
图0.1 很久以前,要完成基于视觉的机器人控制需要很多设备。该图片是
1992年作者在实验室里和一大堆图像处理与机器人控制的设备在一起
在机器人和机器视觉近一段时间的发展历程中,研究者们开发出了大量的各种算法,它们是学术界通过技术积累获得的重要成就。然而这些算法不仅数量多,而且都比较复杂,对于刚涉足该领域的人来说是不小的障碍。要想从这么多算法中进行选择,首当其冲的问题就是:
为解决这个特定问题,哪一个才是最佳算法?
一种策略是去尝试多种不同的算法,看哪种算法解决问题的效果最好。但这样做又带来新的问题:
我怎样才能不用花很长时间去编辑和调试程序,就能评判出原始论文中的算法是否适合我自己的数据?
有两种解决方案可以帮助我们。一种是利用通用的数学工具软件,它们能简化算法编程。这类工具中包括商用软件包,如MATLAB、 Mathematica和MathCad,也有开源软件包,如SciLab, Octave和PyLab。所有这些工具软件包都能轻松自然地处理向量和矩阵,也能绘制出漂亮和复杂的图形,同时具有交互式的编程环境。另一种是开源软件模块。很多学者都把自己开发的算法以开源形式共享出来,有的是用上面提到的通用数学软件包编写的,有的则是用目前主流的C、 C++和Java语言编写的。
我本人15来年一直活跃在开源软件的圈子,曾经管理过两个开源的MATLAB工具箱软件: 一个是机器人的,另一个是机器视觉的。这两个工具箱可以追述到我做博士论文时期,并且从那时起它们的功能一直在扩展,还随着MATLAB软件语言的改进不断提升(这一点在当时非常重要)。机器人工具箱还被翻译成多种其他编程语言,如Python, SciLab 和LabView。
这两个工具箱有一些很重要的特征。第一,它们已经很长时间被很多人使用以解决各种不同的问题,因此代码的可信度较高。在检验新的算法,亦或旧的相同算法要用其他语言编写或者在新环境中执行时,工具箱起到“黄金标准”的作用。
第二,这些工具箱能让使用者接