在接下来的部分里,我们会继续探讨运动规划这个模块“上下”层级中都发生了些什么。具体来说,运动规划、感知和控制之间到底是什么关系?我们是如何借助各种传感器,让运动规划系统获得一个明确的“目标点B”,并将它真正执行到现实世界中——哪怕这个世界充满了接触、不确定性,甚至是未预料到的信息?

在运动规划的“上层”还有一个重要组成部分:任务规划(task planning)。将两者结合起来,就是所谓的任务与运动规划(TAMP)。如果你对此感兴趣,我在另一篇博文中详细讨论了这个话题。

1、运动规划与控制密不可分

到目前为止,我们一直把运动规划描述成一个“计划并执行”的过程:你先规划一条路径,再将其转化为轨迹,最后等待机器人按这条轨迹完成任务。但在动态环境或存在大量不确定性的场景中,这种“一次性”规划往往不可行。于是,“随时可中断/更新”的运动规划(anytime motion planning就应运而生。这种方法强调:先生成一个可行解,然后在执行过程中不断地优化它。事实上,Karaman等人在2011年提出RRT*算法的同一年,就已经开始研究这类anytime的运动规划了。

我本来不打算深入讨论低层控制,但这里有些关键点必须说明。虽然我们可以让路径规划以anytime方式运行,但也可以把反馈环路“拉近”到底层控制层。要知道,底层控制循环的运行速度远快于路径规划,因此在应对动态障碍、外部扰动等方面更具天然优势。

一个典型的anytime运动规划应用场景是:遥操作(teleoperation)或伺服控制(servoing)机械臂。伺服控制通常是让机械臂上的某个坐标系(例如末端执行器)按照任务空间的某个方向移动。比如,使用游戏手柄等设备,让操作员对机械臂实现六自由度的控制,用于手动调整或故障恢复。近年来,这种方式也常用于数据采集,或者是执行由视觉反馈直接生成笛卡尔速度指令的学习策略。

实际上,机械臂的伺服控制也可以被看作是一种anytime形式的逆运动学(inverse kinematics):我们可以利用雅可比矩阵(Jacobian),把任务空间中的速度或目标位姿转化为关节空间的速度,并通过控制环路让机器人跟踪这个目标。就像我们在IK章节中看到的那样,这种“单步IK解算”也可以结合零空间投影(nullspace projection)来实现附加任务,比如避免超出关节限制、避障等。

01:57

或许你也不会太惊讶,其实轨迹优化(trajectory optimization)同样可以以 anytime 的方式运行。尤其是,当我们在直接转录法(direct transcription)中引入一个有限时间窗口,并加入反馈控制环路之后,它就直接变成了模型预测控制(MPC, Model Predictive Control)。如今,在高自由度系统(比如机械臂或多足机器人)的控制中,最先进的方法往往是非线性模型预测控制(nonlinear MPC)与机器学习方法(通常是模仿学习或强化学习)相结合。通过这种方式,我们可以实现高效且灵活的控制策略,兼顾模型的准确性与对未知环境的适应能力。在这个领域,国际上有一些领先的研究团队,比如波士顿动力(Boston Dynamics) 和 苏黎世联邦理工的机器人系统实验室(Robotic Systems Lab, ETH Zurich),他们在腿式机器人和复杂机械臂控制上的研究成果在业界有着极高的影响力。

02:53

以上只是一些例子,我真正想传达的核心思想是:运动规划最初是从相对简单的问题开始的。那些早期的模型通常假设:世界是完全可观测和完全可控的;只有参与规划的智能体(agent)才能改变环境的状态。然而,随着机器人技术不断发展,我们逐步解决了这些理想化问题,自然而然地就要面对更加复杂、更加真实的环境。在这些新环境中,单纯的离线规划就不够用了,必须引入具备响应能力的(reactive)规划与控制策略,以应对不确定性、动态变化以及环境中可能出现的突发情况。

2、机器人不是还得抓东西、推东西吗?

当然要啊!我们来举几个例子:把杯子插进杯架里、擦桌子、拧门把手、或者把螺母拧紧到螺栓上。这些任务有一个共同点——都需要与真实世界发生接触。

要让机器人学会“抓”东西,第一步得考虑的是:它使用的是什么样的末端执行器(end effector)。常见的末端执行器包括:平行夹爪(parallel-jaw grippers),真空吸盘(vacuum grippers),多指灵巧手(multi-finger grippers),还有一些为特定任务设计的工具型末端。对于那些需要完成多种任务的机器人来说,通常会配备可更换的末端执行器,以适应不同操作需求。而研究界则往往追求另一个方向:认为只要设计出一个通用的灵巧机械手(general-purpose dexterous hand),就能胜任各种任务。

操纵器末端执行器类型的选择有限。(左上)Robotiq 2F-85平行夹爪。(右上)OnRobot VGC10真空夹持器,带4个吸盘。(左下)拥有5个手指和20个自由度的影子灵巧手!(右下)安装在KUKA工业臂上的钻孔和攻丝末端执行器系统,来自ARC Specialties。

接下来,我们应该谈谈感应接触。一些机械手有关节扭矩传感器,可以让你计算机器人的“感觉”。例如,如果机器人的动力学模型表明关节应该测量10N的力,但它实际上看到了5N,那么手臂上有东西在向上推(或者传感器坏了)。这些传感器相对便宜,因为现有的低级控制器可能无论如何都需要它们。然而,在某些配置中,它们容易出现“盲点”,机器人可能无法沿某些方向测量任何力/扭矩。其他系统有6轴力/扭矩传感器,它们更昂贵,但性能更好,因为它们没有这样的盲点,也不需要机器人的精确动力学模型。

为什么机器人需要力/力矩传感器力/力矩传感器(force/torque sensors)配合合适的控制算法,可以让机器人不再像一台死板的机器那样横冲直撞、把沿途的东西都撞翻,而是表现得更加“柔顺”一些,也就是我们常说的顺应性(compliance)。这种顺应性对于某些任务来说是必须的,比如:擦拭或打磨表面,把物体插入一个孔洞(比如“孔中插销”任务),或其他需要机器人持续与环境保持接触的操作。为了实现这样的顺应性控制,常见的做法包括:阻抗控制(impedance control),导纳控制(admittance control)。这些方法可以让机器人在受到外部力时,做出灵活的响应,而不是“硬碰硬”。另外,从安全性的角度出发,顺应性同样非常重要——特别是当机器人要在人类周围工作时。也正因为如此,大多数协作机器人(collaborative robots,简称 cobots)都会内置某种形式的顺应控制机制,以确保在与人共处时的柔和交互。

One of my favorite diagrams of compliant control for manipulation.Source: Alessandro De Luca, 2020.

当然,需要感应的不仅仅是手臂。末端执行器本身可以(并且已经)类似地配备有力和/或压力传感器来检测接触。这可以满足许多需求,比如在搬运物体时避免损坏,或者为需要的任务施加力,比如按下按钮或翻转开关。然而,它并没有就此止步;机器人可以(并且已经)配备人类和动物没有直接拥有的新传感方式,如手腕摄像头或飞行时间传感器,在实际接触之前检测物体的接近程度。

我们也不应该减少这些抓取问题的被动解决方案,这又回到了软体机器人领域。有无数种柔顺的末端执行器设计,从相对常见的鳍射线效应和柔软的硅胶夹持器到更深奥的干扰和纠缠夹持器,仅举几例。当然,您始终可以在机械设计和底层软件中引入合规性。

3、把“感知”与“运动规划”连接起来

在我们执行前面提到的那些“需要接触”的任务之前,还有一件非常关键的事:你得知道目标物体长什么样,它们在哪里。我们之前总在讲“从A点移动到B点”,可问题是——我们怎么知道B点在哪儿?为此,机器人需要借助各种感知方法来识别物体,或者识别物体上可供操作的区域(affordances),这样它才能完成操作任务。常见的方法包括:

  1. 让物体更容易被检测到:最简单粗暴的方式是让目标物体更显眼。比如:使用颜色鲜艳的物体(像橙色的乒乓球),方便摄像头识别;给物体贴上反光标记,让它能被动捕(mocap)系统识别;使用视觉标记,比如 ArUco markers 或 AprilTags。这些方法在原型展示中很常见,尤其是当研究重点不在“感知”时会用这些技巧来省事儿。当然,它们在一些实际应用中也很有用,比如仓库自动化、机器人自动对接等场景——稍微改造一下环境,能大幅提高系统的稳定性和鲁棒性。
  2. 几何方法(Geometric methods):这类方法通常使用点云数据(point cloud),尝试用几何图形(比如长方体、椭球等)拟合物体的外形,然后再判断怎么抓取。这类方法通常对环境有较强假设,比如:桌面是平的;物体之间距离足够远;可以仅靠几何信息来分辨每个物体。
  3. 基于已知模型的配准(Model registration):比如使用ICP算法(Iterative Closest Point)把传感器获取的点云与已知的CAD模型对齐,来定位目标物体。这种方法的鲁棒性往往很强,但前提是:你得有目标物体的3D模型。在某些应用中,这并不现实,甚至是不可能的。
  4. 机器学习方法:这方面的空间非常广,但在“物体识别用于操作”这个任务里,主要有两个方向:目标检测模型:用于将场景中的物体分割出来。可以训练专用模型来识别特定物体;也可以用大规模数据集训练的“基础模型”(foundation models),比如 Segment Anything。直接生成抓取点的模型:像 DexNet这样的模型不需要识别物体类别,直接输出抓取候选点。如果你对这些方法想更深入了解,我的上司 Rob Platt 教授在 2022 年写过一篇综述文章,内容非常全面。
操纵对象检测方法的选择有限。(左上)一个桌面感知场景,它将物体从桌面上分割出来,并将其周围的长方体放在一起。(右上)用于抓取检测的点云配准示例(来源:Aghili,2012)(左下)使用基准标记进行精确检测的块堆叠应用程序(Noseworthy等人,2021)。(右下)用于垃圾箱拣选应用程序的学习对象分

0

评论0

没有账号?注册  忘记密码?