图书简介:
第1章 绪言
1.1 关于本书
1.1.1 MATLAB软件
1.1.2 读者对象及必备知识
1.1.3 符号与约定
1.1.4 怎样使用本书
1.1.5 使用本书教学
1.1.6 本书梗概
第一部分 基 础 知 识
第2章 位置与姿态描述
2.1 二维空间位姿描述
2.2 三维空间位姿描述
2.2.1 三维空间姿态描述
2.2.2 平移与旋转组合
2.3 本章总结
延伸阅读
习题
第3章 时间与运动
3.1 轨迹
3.1.1 平滑一维轨迹
3.1.2 多维的情况
3.1.3 多段轨迹
3.1.4 三维空间姿态插值
3.1.5 笛卡儿运动
3.2 时变坐标系
3.2.1 旋转坐标系
3.2.2 增量运动
3.2.3 惯性导航系统
3.3 本章总结
延伸阅读
习题
第二部分 移动机器人
第4章 移动机器人载体
4.1 机动性
4.2 移动机器人小车
4.2.1 移动到一个点
4.2.2 跟踪一条直线
4.2.3 跟踪一般路径
4.2.4 运动到一个位姿
4.3 飞行机器人
4.4 本章总结
扩展阅读
习题
第5章 机器人导航
5.1 反应式导航
5.1.1 Braitenberg车
5.1.2 简单自动机
5.2 基于地图的路径规划
5.2.1 距离变换
5.2.2 D*
5.2.3 沃罗诺伊路线图法
5.2.4 概率路线图方法
5.2.5 RRT
5.3 本章总结
扩展阅读
习题
第6章 机器人定位
6.1 航迹推算
6.1.1 机器人建模
6.1.2 位姿估计
6.2 使用地图
6.3 创建地图
6.4 定位并制图
6.5 蒙特卡罗定位
6.6 本章总结
扩展阅读
习题
第三部分 臂型机器人
第7章 机械臂运动学
7.1 描述一台机械臂
7.2 正运动学
7.2.1 两连杆机器人
7.2.2 六轴机器人
7.3 逆运动学
7.3.1 封闭形式解
7.3.2 数值解
7.3.3 欠驱动机械臂
7.3.4 冗余机械臂
7.4 轨迹
7.4.1 关节空间运动
7.4.2 笛卡儿运动
7.4.3 通过奇异位形的运动
7.4.4 位形转换
7.5 高级问题
7.5.1 关节角偏移
7.5.2 确定D-H参数
7.5.3 改进D-H参数
7.6 应用: 绘图
7.7 应用: 一个简单的步行机器人
7.7.1 运动学
7.7.2 单腿运动
7.7.3 四腿运动
7.8 本章总结
扩展阅读
习题
第8章 速度关系
8.1 机械手的雅可比矩阵
8.1.1 坐标系之间的速度转换
8.1.2 末端执行器坐标系的雅可比矩阵
8.1.3 解析雅可比矩阵
8.1.4 雅可比条件及可操纵性
8.2 分解速率运动控制
8.2.1 雅可比矩阵的奇异性
8.2.2 欠驱动机器人的雅可比矩阵
8.2.3 过驱动机器人的雅可比矩阵
8.3 力的关系
8.3.1 坐标系间的力旋量转换
8.3.2 力旋量转换至关节空间
8.4 逆运动学: 一个通用数值方法
8.5 本章总结
扩展阅读
习题
第9章 动力学与控制
9.1 运动方程
9.1.1 重力
9.1.2 惯量矩阵
9.1.3 科氏矩阵
9.1.4 有效载荷的影响
9.1.5 基座力
9.1.6 动态可操作性
9.2 传动系统
9.2.1 摩擦
9.3 正向动力学
9.4 机械臂关节控制
9.4.1 驱动器
9.4.2 独立关节控制
9.4.3 刚体动力学补偿
9.4.4 柔性传动
9.5 本章总结
扩展阅读
习题
第四部分 计算机视觉
第10章 光与色彩
10.1 光的谱表示
10.1.1 吸收
10.1.2 反射
10.2 色彩
10.2.1 颜色再造
10.2.2 色度空间
10.2.3 色彩名称
10.2.4 其他颜色空间
10.2.5 两种原色之间的转换
10.2.6 什么是白色
10.3 高级议题
10.3.1 颜色的不变性
10.3.2 白平衡
10.3.3 由于吸收的颜色变化
10.3.4 伽玛
10.3.5 应用: 彩色图像
10.4 本章总结
扩展阅读
习题
第11章 图像形成
11.1 透视变换
11.1.1 透镜畸变
11.2 相机标定
11.2.1 齐次变换法
11.2.2 分解相机标定矩阵
11.2.3 位姿估计
11.2.4 相机标定工具箱
11.3 非透视成像模型
11.3.1 鱼眼镜头相机
11.3.2 反射折射相机
11.3.3 球形相机
11.4 统一化成像
11.4.1 映射广角图像到球面上
11.4.2 合成透视图像
11.5 本章总结
扩展阅读
习题
第12章 图像处理
12.1 获取图像
12.1.1 来自文件的图像
12.1.2 来自附带相机的图像
12.1.3 来自电影文件的图像
12.1.4 来自网络的图像
12.1.5 来自代码的图像
12.2 一元操作
12.3 二元操作
12.4 空间操作
12.4.1 互相关
12.4.2 模板匹配
12.4.3 非线性操作
12.5 数学形态学
12.5.1 去除噪声
12.5.2 边界检测
12.5.3 形态交离变换
12.6 形状变化
12.6.1 裁剪
12.6.2 图像缩放
12.6.3 图像金字塔
12.6.4 图像变形
12.7 本章总结
扩展阅读
习题
第13章 图像特征提取
13.1 区域特征
13.1.1 分类
13.1.2 图像表示
13.1.3 图像描述
13.1.4 简要回顾
13.2 直线特征
13.3 点特征
13.3.1 经典角点检测器
13.3.2 尺度空间角点检测器
13.4 本章总结
扩展阅读
习题
第14章 使用多幅图像
14.1 特征匹配
14.2 多视图几何学
14.2.1 基本矩阵
14.2.2 本质矩阵
14.2.3 估计基本矩阵
14.2.4 平面单应性
14.3 立体视觉
14.3.1 稀疏立体匹配
14.3.2 密集立体匹配
14.3.3 峰值细化
14.3.4 清理和重构
14.3.5 三维纹理映射显示
14.3.6 补色立体图
14.3.7 图像矫正
14.3.8 平面拟合
14.3.9 3D点集匹配
14.4 结构和运动
14.5 应用: 透视矫正
14.6 应用: 拼接
14.7 应用: 图像匹配和检索
14.8 应用: 图像序列处理
14.9 本章总结
扩展阅读
习题
第五部分 机器人学、 视觉与控制
第15章 基于视觉的控制
15.1 基于位置的视觉伺服
15.2 基于图像的视觉伺服
15.2.1 相机和图像运动
15.2.2 控制特征运动
15.2.3 深度
15.2.4 控制性能分析
15.3 使用其他图像特征
15.3.1 直线特征
15.3.2 圆特征
15.4 本章总结
扩展阅读
习题
第16章 高级视觉伺服
16.1 XY/Z分割的IBVS
16.2 使用极坐标的IBVS
16.3 对一个球面相机的IBVS
16.4 应用: 机械臂机器人
16.5 应用: 移动机器人
16.5.1 完整约束移动机器人
16.5.2 非完整约束移动机器人
16.6 应用: 飞行机器人
16.7 本章总结
扩展阅读
习题
附 录
附录A 安装工具箱
附录B Simulink软件
附录C MATLAB对象
附录D 线性代数复习
附录E 椭圆
附录F 高斯随机变量
附录G 雅克比矩阵
附录H 卡尔曼滤波
附录I 齐次坐标系
附录J 图
附录K 峰值搜索
术语
参考文献
展开
本书是关于机器人学和机器视觉的实用参考书, 第一部分“基础知识”(第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。
这两个工具箱有一些很重要的特征。第一,它们已经很长时间被很多人使用以解决各种不同的问题,因此代码的可信度较高。在检验新的算法,亦或旧的相同算法要用其他语言编写或者在新环境中执行时,工具箱起到“黄金标准”的作用。
第二,这些工具箱能让使用者接触到真实的问题,而非简单无实际意义的例子。对于超过两个关节的真实机器人,或者有几百万像素的真实图像,一般人没有外力帮助是无法对它们进行计算的。第三,工具箱能让我们窥探问题的本质,而不是迷失在纷繁的细枝末节上。用这些工具箱我们能快速而简单地进行实验,开展“如果就会”(what-if)的探究,并能把结果用MATLAB强大的二维和三维绘图工具直观描绘出来。
第四,可以从工具箱中获取很多现成的通用算法的代码。你可以研读这些代码,可以把它们直接用到你的问题上,也可以在这些代码的基础上自己进行扩充或重写。总之,这些现成的代码至少能让你知道如何起步。
这些工具箱还通常附带一些简单的教程和参考资料。多年来,很多读者都请求我把这些材料变成一本正式的书籍。现在它终于成真了!这本书是在我的工具箱提供的教程材料基础上扩展而来的,它增加了更多的例子,并让机器人和机器视觉的叙述既相互独立又紧密关联。我想要展示给读者的是怎样将一个复杂问题进行分解,并用简单的几句代码就能解决。
从性格特征上说,我是比较喜欢动手的那类人。我喜欢自己编程,喜欢对数据进行分析,因此对我而言,自己编写工具软件去解决机器人及视觉方面的问题就再自然不过了。书中探讨的内容既是基于自己的兴趣,也是从真实问题引出的,这些问题主要是多年来我亲自从事机器人和机器视觉研究中观察到的。我希望学完这本书后也能点燃你对书中内容的兴趣和热情。
我特别希望在本书中为机器人学者较全面地介绍机器视觉方面的知识。在以往的机器人教科书中,视觉部分的内容通常集中在简单的黑白图像处理。而在本书中,视觉部分涉及的内容将更广,包括彩色视觉、 高级图像分割,如最大稳定极值区域及图割技术、 图像卷绕、 立体视觉、 运动估计以及图像检索。另外,书中还涉及用鱼眼镜头和折反射光学系统的非透视成像技术。以上这些内容在机器人实际应用中越来越重要,但在一般书中很少探讨。视觉是一种功能强大的传感技术,机器人学者应当对现代视觉技术有全面深入的了解。本书最后一部分给读者展示了视觉设备是如何作为机器人控制的主传感器使用的。
读者会发现本书与其他教科书有很大不同,这是作者有意为之。第一,市面上已经有很多深入研究机器人或机器视觉的图书,但它们大多是机器人与视觉技术分离的,集成者很少。因此将机器人与视觉二者集成是本书的主要目标。
第二,程序在本书中占了很大篇幅。事实上,程序是我们研究的各种算法的具体表现。算法是比较抽象的,程序则可以一句句读懂,而且我们还可以任意从程序中拿出一段进行修改,然后再放回去。市面上已有很多科技书籍就是使用程序来演示一个问题是如何解决的,如LaTeX: A document preparation system(Lamport 1994), Numerical Recipes in C(Press et al. 2007), The Little Lisper(Friedman et al. 1987),以及Structure and Interpretation of Classical Mechanics(Sussman et al. 2001),本书在这方面可以说是受了它们的影响。本书中给出的很多例程展示了如何使用工具箱软件,并且仅用几行MATLAB语句就给出了一个及时的体验。
第三,本书内容是基于MATLAB软件包及其工具箱编写的。相对于其他书籍,这样的好处是能够容易地处理一些更实际和更复杂的问题。
本书对于程序和例子的强调并不意味着基础理论不重要。相反,它们是非常重要的,本书只是采用了一种二者相互补充的方式。学习本书的同时最好参考一下其他在基础理论上论述更严密的材料。本书每章在结束时都提供了一些延伸阅读的内容,列出了相关的书籍和论文。
写这本书其实给我提供了一个很好的机会去重新审视我的那些工具箱,对其中的程序代码进行修改和扩展。特别要说的是我这次更好地利用了MATLAB新提供的一些面向对象的特征简化了工具箱的用户界面,并减少了其中的文件数量。
修改这些工具箱程序也让我以更广的视角去看待各种开源代码。现在网上已经有很多优秀的程序代码,特别是有关机器视觉方面的,所以我完全没有必要从头开始自己编写算法程序,只需要去找到那些最好的子程序代码,然后把它们整合在一起就可以了。这样做的困难之处在于每个代码的作者都有他们自己对于数据结构命名的习惯和偏好,这些数据从简单的向量到复杂的数组都有。我的办法是尽可能不去修改单个的代码包,而是用一些轻量包装,特别是用作类去把它们封装起来。
我要感谢以下人员,他们提供的代码要么被嵌入,要么被包装进了我的工具箱。机器人工具箱的贡献者如下: 牛津大学的保罗?纽曼(Paul Newman)提供了移动机器人定位及建图代码,耶鲁大学的保罗?庞兹(Paul Pounds)提供了四旋翼直升机仿真器代码。机器视觉工具箱的贡献者如下: 皮特?考乌斯(Peter Kovesi)提供了随机抽样一致性算法(RANSAC)代码; 瑞士洛桑理工大学计算机视觉实验室(CVLab-EPFL)的弗朗西斯科?莫雷罗?罗古尔(Francesco Moreno-Noguer)、 文森特?来皮特(Vincent Lepetit),以及帕斯卡?福安(Pascal Fua)提供了姿态估算算法代码; 帕斯卡?吉崔尔(Pascal Getreuer)提供了彩色空间变换代码; 牛津大学的视觉几何工作组(Visual Geometry Group)的多人提供了几何视觉的数值算法代码(来自于哈特利(Hartley)及齐瑟曼(Zisserman)2003出版图书的网站); 安德烈?维达尔迪(Andrea Vedaldi)和布莱恩?福克尔森(Brian Fulkerson)提供了K均值(k-means)聚类算法和最稳定性极值区域(MSER)算法; 佩德罗?菲尔岑斯瓦布(Pedro Felzenszwalb)提供了基于画面的图像分割软件; 以及荷兰特温特大学的迪尔克让?克鲁恩(Dirk-Jan Kroon)提供了超鲁棒性特征(SURF)检测器算法。另外,由吉安耶威斯?薄古尔特(Jean-Yves Bouguet)提供的摄像机标定工具箱(Camera Calibration Toolbox)未经任何修改就集成到我的工具箱中。
几百年来,世界各国涌现出了很多杰出的数学家、 物理学家以及工程师,他们的成就对于今天的机器人和视觉科学研究仍然是至关重要的。他们中很多人的名字成为一些术语前的形容词,如哥氏(Coriolis)、 高斯(Gaussian)、 拉普拉斯( Laplacian)、 笛卡儿(Cartesian)等,有的直接就是一个名词术语,如雅可比(Jacobian), 或者计量单位名称,如牛顿(Newton)和库仑(Coulomb)。其实这些伟大科学家的经历都很奇特,因为他们在当时的正式职业只是医生、 炼金术士、 投机商、 占星家、 哲学家或雇佣兵,科学研究只能算他们的业余爱好。为了了解我们都站在了哪些人的肩膀上,我在书中还穿插了一些有关那些伟大科学家们的历史小故事,作为背景材料供读者赏读。
在我本人的职业生涯中,我非常有幸能同许多优秀的人共事,他们给我的事业很多启发和引导。很久以前在墨尔本大学,是约翰?安德森(John Anderson)点燃了我对控制技术的兴趣,而格雷汉姆?霍姆斯(Graham Holmes)则鼓励我“在编程前先要好好思考”,这个好建议我至今还努力去遵从。在1988~1989年期间,我曾在宾夕法尼亚大学的GRASP实验室与理查德?保罗(Richard Paul)共事过10个月,这段工作经历可以说改变了我以后的人生。
我开发MATLAB工具箱是源自我的博士论文,我的博士导师是墨尔本大学的马尔科姆?古德(Malcolm Good),他和来自澳大利亚联邦科学与工业研究组织(CSIRO)的保罗?邓恩(Paul Dunn)给我提了很多好问题并指导我的研究工作。拉兹罗?尼米斯(Naszlo Nemes)则在生活和组织方面给我很多有益的建议,并鼓励我把我编写的程序代码公开和共享。到目前为止,我职业生涯的大部分时间是在澳大利亚联邦科学与工业研究组织度过的,在那里我有幸参与了很多不同的机器人研究项目,并与很多有天赋的同事和朋友共事。在撰写本书期间,我转到澳大利亚昆士兰理工大学工作,学校给了我很多空余时间完成本书。我以前的学生贾思明?班克斯(Jasmine Banks)、 卡恩?亚瑟( Kane Usher)、 保罗?庞兹(Paul Pounds)和彼得?汉森(Peter Hansen)分别教给了我很多有关立体视觉、 非完整性、 四旋翼直升机、 广角视场方面的知识。
我还要感谢保罗?纽曼(Paul Newman),他数次邀请我去牛津大学,我在那里完成了本书的很多重要章节。我还要感谢达尼拉?鲁斯(Daniela Rus)邀请我去麻省理工学院,我在那里完成了本书的第一稿。达尼拉、 保罗和塞德里克?普拉达里尔(Cédric Pradalier)还在本书早期素材准备方面给予了我很多建设性的意见和建议。当然,我还要感谢MATLAB软件的发行商MathWorks公司,他们有专为作者提供的帮助计划。施普林格(Springer)出版社为本书出版提供了全程巨大的帮助,我与他们的合作非常愉快。我要特别感谢本书的编辑托马斯?迪驰林格(Thomas Ditzinger) 以及阿明?施塔斯(Armin Stasch),他们将我的手稿录入并完成排版。
虽然我已尽了最大努力去避免,但书中肯定还会有错误。如果读者发现有错误的地方,或者对本书内容有改进建议,请发Email给我,我的邮箱是rvc@petercorke.com。
最后我想说,与一名作家一起生活总是不容易的,很多书籍和网站还对此有专门的探讨。所以,我要把我最深情的感谢送给菲利帕(Phillipa),她在我写作本书过程中给予我极大的支持和鼓励,并且还在世界各地“陪伴”此书很长时间。
彼得?科克
布里斯班,昆士兰
2011年6月
展开