前言
献给一个机器人将变得敏捷、智能和安全的世界。
为了理解现状,我们先回顾历史。
人类从未停止制造工具和机器,无论是为了让日常琐事变得更容易,提高生产力,还是仅仅为了享受创造的纯粹乐趣。20世纪在这方面的研究成果尤其丰富,创造了大量具有各种形状和功能的机器人。许多人被机器人很快就能完成大量任务所吸引,但事实是,机器人在很大程度上仍然只能以重复的方式执行常规任务。
如今,机器人的自主性和决策能力几乎仅限于点到点。而当机器人被限制在工业环境中时,这种点到点的能力已经足够了,但这不能满足21世纪对机器人的期望。许多人希望将机器人部署在任何地方:在街道上,如汽车、轮椅和其他移动设备;在家中,为我们烹饪、打扫房间以及提供娱乐服务;从身体角度来看,替代失去的肢体或增强其能力。为了让这些机器人成为现实,它们需要做出较大的改变:它们必须远离舒适、隐蔽、在很大程度上可预测的工业世界。为了应对环境中经常发生的意外变化,机器人需要在不危及人类的情况下快速、适当地调整其行动路径。
思考一个机器人轮椅,其任务是在人群中穿梭,而不能撞到任何行人,这是一个烦琐的挑战。当机器人修改路径以远离拥挤的行人时,它应该避免减速过猛,因为这可能会导致用户被甩出轮椅。类似地,当用户穿过自助餐厅时,负责搬运托盘的手臂假体需要调整姿势,以避免碰到附近的其他消费者,同时确保托盘保持水平。随着托盘上被堆满更多的菜肴,它需要进一步调整力的方向。为了避开人群中的障碍物或以极快的速度抓住盘子边缘,轮椅和假体都需要在几毫秒内做出反应。
本书介绍了可以在运动时重新规划以适应新环境约束的控制方法。这种方法试图赋予机器人必要的反应能力,以调整其在有严格时间限制的情况下做出的路径规划。
在执行动作时,决定什么重要、什么不重要是多年专业知识的结果。例如,我们知道托盘应该水平放置,因为我们已经了解到,某些倾斜的放置方式会导致盘子掉到地板上。这一学习过程是在示教人员的耐心指导下进行的,他们很友善地为我们擦地板,并根据需要为我们拿托盘。机器人的用户不太可能愿意通过类似的实践来教机器人。因此,让机器人向那些有经验的人学习是至关重要的,这样可以通过很少的例子完成学习。本书介绍了一些方法,通过这些方法,机器人能从少数几个例子中学习控制律。我们提供了理论保证,确保机器人能够将其获得的知识泛化到所提供的示例之外。
控制机器人的方法
为了产生运动,传统上机器人依赖规划技术来计算可行路径[89]。在早期,规划是很慢的,需要数小时才能确定路径。然而,近期的科技进步使机器人能够在几秒钟内生成复杂的规划[68]。然而,这些规划的可行性取决于是否拥有准确的环境模型。现在的机器人学认为,没有一个现实世界的模型会在很长一段时间内足够准确或有效。环境和环境相关的动力学都在变化。
物体可能会因为被操纵而改变纹理和质量,而且这种改变的方式不容易被数学建模。机器人本身的动力学虽然在机器人出厂时是已知的,但必然会随着机械的折旧而改变。为了解决这些问题,机器人领域开始在规划和控制中纳入不确定性模型[110]。然而,这些方法的鲁棒性取决于拥有良好的不确定性模型。由于世界模型和不确定性模型都可能发生变化,机器人必须能够根据自己的经验学习和更新模型。此外,它们必须能够生成能应对运行时不确定性的动态规划,而不需要重新规划。
通过冗余处理路径规划中的不确定性,可行性优先于最优性 大多数任务在实现方式上都需要冗余。在获得技能时,人类学习的不是执行任务的单一方法,而是完成任务的各种方式。例如,当我们在保持杯子垂直的情况下来抓取一杯热茶时,我们允许在水平面上移动杯子的方式发生变化。这可以帮助我们避免意外干扰(例如路径上的障碍物),并采取舒适的手臂姿势。冗余是有利的,因为它提供了多种解决任务的方法,以及适应扰动所需的灵活性。本书提出了一个机器人控制器,它克服了环境中的不确定性,通过利用冗余的方式完成任务。这种冗余可以嵌入单个控制律中,该控制律提供了一组不同的路径来实现相同的目标。因此,我们认为,为了适应现实世界的不确定性,可行性优先于最优性。
从规划到行动
本书提供了一套新的控制律,使机器人能够执行无缝控制和高速复杂的行动。这种在线反应性是使用时不变动态系统的结果。由于动态系统能够生成对动态环境中的不确定性和变化具有固有鲁棒性的在线运动规划,因此使用动态系统解决机器人中的运动规划问题已成为主流[123,125,58,8,78]。动态系统也是模拟人类运动的关键[140,130,129,63,132]。因此,将其用于机器人控制,不仅简化了机器人与人类同步移动时的控制,还简化了运动模型从人到机器人的转换。
在线反应性确保了机器人上有足够好的中央处理器,但它还需要能够提供多种解决方案的固有鲁棒控制律。基于动态系统的控制提供了一种封闭形式的解决方案,无须进一步优化。动态系统提供了理论保证,例如向目标靠拢、不穿透障碍物,以及被动性等。此外,它允许人们轻松地同步多个机器人系统,从而确保对目标的协调控制。它还可以用于在控制模式之间快速切换。
通过柔性处理力控制中的不确定性 当今机器人面临的一个主要挑战是应对突发的意外力,如果处理不当,可能会给附近的人带来严重风险。这些意外的接触力可能来自外部意外冲击,例如,有人将物体放在机器人的路径上,或者有人撞到机器人。它们也可能由机器人操作时工件的意外断裂引起。为了减轻意外的力引起的损坏或伤害风险,一种方法是使机器人具有柔性。柔性允许机器人吸收部分冲击力。控制机器人柔性的一种强大的方法是阻抗控制[55],机器人运动吸收或抵抗外力的程度通过阻抗律的刚度来控制。长期以来,控制器的柔性是固定的。然而,最近的研究探索了如何改变这种柔性,使机器人有时是刚性的,有时是柔性的[25,148]。当需要精度时(例如当移动到狭窄通道时),可以要求机器人是高度刚性的。一旦进入自由空间,机器人可以再次变为柔性的。也可以使机器人在方向上是柔性的。例如,如果某些控制方向必须保持刚性(例如平衡负载),而其他方向可以用来吸收干扰,这是有用的。本书介绍了几种不同的方法,通过这些方法可以了解任务相对柔性及其在任务完成过程中的变化,以及如何将这些嵌入动态系统基础控制中,以提高动态重新规划轨迹的能力。
学习需要数据
在本书中,我们假设数据可以通过人类提供任务示教或通过其他方式提供给机器人,例如通过最优控制来解决问题,以生成可行控制律集。
有几种从人类示教中生成数据的技术,我们在第2章简要回顾了这些技术,有关更完整的数据,请参见文献[16,120]。当机器人必须由人类来训练时,关键是示教的数量要少,这样人类才有可能忍受。因此,该算法必须从稀疏数据集中学习。除了稀疏之外,由于噪声或缺乏熟练的示教人员,采集到的数据通常也不太理想。在本书中,学习利用了不同的机器学习技术,从而可以从小型数据集中学习。附录B介绍了这些技术。
从示教中学习的另一个问题是,用户必须提供明确的标签,告诉机器人哪个示教对应于哪个任务。我们展示了可以通过算法来实现这一点,这些算法可以自动将长流程的示教分解为子段,并将动态系统控制律关联到每个部分。我们还提供了自动发现潜在动态数量的技术示例。
教学建议
本书旨在为研究生课程提供支持,因此以教学方式构建。本书主要分为四个部分,共12章,章节组织结构见图0.1。
图0.1 本书章节组织结构
我们从由两章组成的绪论部分开始。第1章概述了本书中介绍的所有技术,通过机器人应用的真实示例介绍了这些技术的起源。第2章介绍了收集数据的技术,以便学习本书其余部分中介绍的系统。我们主要侧重于从示教和优化中学习,还简要介绍了强化学习的概念。
本书的第二部分介绍了使用动态系统学习控制律的核心技术。提出了学习由单个吸引子动态系统组成的控制律的方法(第3章),分别学习了一阶和二阶动态系统的方法。接下来,在第4章中介绍了学习由不同吸引子和不同动态组成的控制律的方法。在第5章中,展示了如何对吸引子和相关动态进行排序。
第三部分是对第二部分的扩展,介绍了使用动态系统进行轨迹规划的方法。第6章提出了基于动态系统的一个或多个控制器的耦合概念,以实现对多个agent的同步控制。我们在第7章中展示了如何用一个或两个机械臂捕捉飞行物体。第8章介绍了通过学习局部动态来修改已知动态系统的方法,而第9章展示了这种调制在避障中的应用。
第四部分介绍了使用动态系统进行柔性控制和力控制的方法。第10章首先简要介绍了通过阻抗控制的柔性控制。然后介绍了学习可变阻抗控制器的两种方法,并解释了如何将学习阻抗与动态系统相结合。第11章解释了如何将动态系统与力控制结合使用,以便在与移动物体接触时进行柔性控制。
本书的每一章都包含了应用这些技术来控制机器人的应用示例,包括机械臂、拟人手和仿人机器人的全身控制。我们还介绍了如何使用多个机械臂对物体进行灵巧操作,用于实时避开复杂和移动的障碍物。我们举例说明了在机器人捕捉飞行中的物体并避免人类向其移动的应用中,动态系统在即时快速重新规划方面的优势。这些应用程序的视频可以在本书的网站上找到,请访问https://www.epfl.ch/labs/lasa/mit-press-book-learning/。
本书应按照章节顺序阅读。第1~3章是本书的核心,应首先阅读。第4~11章对这些核心概念进行了扩展。预计教师只能选择这些章节中的一部分在课程中呈现。为了配合每一章,我们提供了手写和编程练习。练习和幻灯片可在本书网站下载。
预备知识 本书假设读者已经学习了机器人控制的基础课程,并熟悉以下概念:PD控制、逆向运动学和逆动力学、轨迹规划和最优控制。本书还假设读者熟悉机器学习、统计和优化以及动态系统。
附录提供了本书中使用的机器学习技术的补充信息。在主要章节中,我们还简要介绍了动态系统的主要理论概念和机器人控制。附录简要总结了与本书相关的动态系统和机器人控制中的主要定义。然而,附录不能作为这些领域的全面教科书。为了更好地理解机器人,我们鼓励读者查阅Springer Handbook of Robotics[136]及其主要相关章节(“运动学”“运动规划”“运动控制”和“力控制”)。在Applied Nonlinear Control[137]一书的相关章节中(特别是“相平面分析”和“李雅普诺夫(Lyapunov)理论基础”),可以找到关于机器人控制的动态系统的详细介绍。
鼓励教师介绍机器人控制、机器学习和动态系统中的关键概念,这是理解本书所必需的。这可以在导论性课程中完成,也可以作为补充材料,以适应学生的背景。
致谢
我们非常感谢对本书中的技术发展起到重要作用的研究人员。这里按字母顺序列出他们:Walid Amanhoud、Lukas Huber、Farshad Khadivar、Mohammad Khansari Zadeh、Mahdi Khoramshahi、Klas Krondander、Ilaria Lauzana、Ashwini Shukla、Nicolas Sommer和Rui Wu。还要感谢与我们密切合作的Jean-Jacques Slotine和Jose Santos-Victor。此外,感谢欧盟委员会、欧洲研究理事会、瑞士国家科学基金会和瑞士国家基金的资金支持。