前言
可以将移动机器人定义为一个能够在其所处环境中自主移动的机械系统。为了实现这个目标,它必须装备:
1)传感器 用于收集周围环境的信息(对于这些信息,机器人或多或少知道一些)并确定自身位置。
2)执行器 让机器人能够动作起来。
3)智能(或算法、调节器) 依据传感器收集到的数据,计算出控制指令并发送到执行器,以便完成给定的任务。
最后,还要考虑移动机器人所处的环境和它的使命,前者对应于机器人演化所处的世界,后者对应于机器人必须要完成的任务。自21世纪以来,移动机器人已在军事领域(空中无人机[BEA 12]、水下机器人[CRE 14]等),乃至医疗和农业领域持续不断地发展。在执行对人类而言痛苦或者危险的任务时,对移动机器人的需求特别高,例如这样一些情形:扫雷行动、在海底搜索失事飞机的黑匣子以及行星探测等。人造卫星、发射器(如阿里安五号运载火箭)、无人驾驶地铁和自动电梯都是移动机器人的典型案例。飞机、火车和汽车正逐渐向自主系统演化,并且在未来几十年内很有可能变成移动机器人。
移动机器人学是着眼于移动机器人设计的学科[LAU 01],并以自动控制、信号处理、力学、计算和电子等其他学科为基础。本书的主要目的是概述机器人学中用于移动机器人设计的相关工具和方法。机器人将由状态方程(即一组一阶(通常为非线性的)微分方程)建模,而状态方程可利用力学定律推导得出。但我们的目的并不是详细讲述机器人的建模方法(可查阅[JAU 05]和[JAU 15]获得更多相关主题的信息),而只是回顾相关基本原理。对于建模,我们期望获得对应的状态方程,这一步对于机器人仿真和控制器设计至关重要。不过,在第1章中我们会刻意举一些三维(3D)案例来阐述建模的基本原理,这样做是为了介绍机器人学中的一些重要的基本概念,如欧拉角和旋转矩阵。例如,我们将研究一个车轮的动力学和一个水下机器人的运动学。移动机器人是强非线性系统,并且只能用一类非线性方法构造有效的控制器,这类构造过程是第2章和第3章的主旨。其中,第2章主要以依赖于机器人模型的控制方法为基础,通过多个案例对其进行阐述,依赖于机器人模型的方法会利用反馈线性化的概念。第3章提出了更实用的方法,因为该类方法不会用到机器人的状态模型,所以将其归为无模型或者模仿方法。另外,该类方法对机器人的描述更直观,适用于机器人相对简单从而可以远程控制的情形,例如车辆、帆船或者飞机。第4章着眼于导航问题,导航位于比控制更高的层面,换句话说,该章将重点放在引导和监控那些由第2章和第3章所列工具控制的系统上。也就是说,第4章将着重强调如何获得指令并将其提供给控制器,以便机器人能够完成给定的任务。而导航还不得不考虑机器人周边环境的信息、障碍物的有无以及环形的地球表面问题。非线性控制和导航方法需要对系统状态变量有很好的了解,如定义机器人位置的状态变量。这些位置变量是最难获得的,因此第5章将关注定位问题。该章介绍了一些经典的非线性方法,包括观测信标、星象、使用罗盘或者累计步数,人们已经将这些方法应用于定位之中很长时间了。尽管可以将定位看作状态观测的一种特殊情形,但其特定的方法值得独立列为一章。第6章(辨识)专注于从另外一些可量测的量中获得不可量测的量(参数和位置),并保有一定的精度。为了实现这种辨识,该章主要关注最小二乘方法。该方法通过寻找变量的向量使得误差的平方和达到最小。第7章介绍卡尔曼滤波器。该滤波器可以看作一个含有时变参数的线性动态系统的状态观测器。第8章将卡尔曼滤波器推广到函数为非线性且噪声为非高斯的情形,并将所得观测器称为贝叶斯滤波器,其可用于计算特定时刻状态向量的概率密度函数。
与本书的一些习题相关的MATLAB和Python代码及相关说明视频可从下述网站获得: