版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
人工智能机器人目录TOC\o"1-2"\h\u214541.1机器人 5288821.2机器人硬件 7319461.2.1机器人的硬件层面分类 716111.2.2感知世界 977451.2.3产生运动 12171201.3机器人学解决哪些问题 13127161.4机器人感知 15104321.4.1定位与地图构建 16114641.4.2其他感知类型 2225151.4.3机器人感知中的监督学习与无监督学习 2321711.5规划与控制 2560421.5.1构形空间 2591291.5.2运动规划 3038181.5.3轨迹跟踪控制 4321994规划与策略 48282861.5.4最优控制 485221.5.5规划不确定的运动 51257821.5.6机器人学中的强化学习 5573831.5.7利用模型 5519579利用其他信息 5731161.5.8人类与机器人 5815631.5.9人类作为近似理性的智能体 5948481.5.10预测人类动作 608341.5.11人类对机器人的预测 62258021.5.12人类作为黑箱智能体 6410021.5.13学习做人类期望的事情 6525131.偏好学习:学习代价函数 657632.直接从模仿中学习策略 6763501.5.14其他机器人框架 70116651.5.15反应式控制器 7076821.5.16包容架构 71277051.5.17应用领域 7424547小结 78在本文中,智能体被赋予传感器和实体效应器,以便它们在真实世界中四处走动、完成各种任务。PAGEPAGE1388机器人机器人是通过操纵真实世界去完成任务的实体智能体。为此,它们配备了像腿、轮子、关节和夹具之类的效应器(effector)。效应器用于对环境施加物理力量。这时,会发生一些事情:机器人的状态可能改变(例如,一辆车旋转车轮,促使它在路面上行进),环境的状态可能改变(例如,机械臂使用夹具推动马克杯滑过吧台),甚至连机器人周围的人类的状态都可能改变(例如,外骨骼运动会改变人腿的状态,或移动式机器人向电梯门前进,引起人类的注意并好心地为机器人让路,甚至帮它按下按钮)。机器人还配备了传感器,这使得它们能够感知其所处的环境。目前的机器人使用各种各样的传感器,包括摄像头、雷达、激光和麦克风,以便测量环境和周围人类的状态,而陀螺仪、压力与扭矩传感器和加速度计则用来测量机器人自身的状态。应器施加正确的力,也就是能够使状态向积累最多预期奖励的方向变化。最终,机器人会试图在物理世界中完成某些任务。机器人在部分可观测且随机的环境中运作:摄像头看不到拐角背机器人需要对其进行预测。机器人通常将其所处的环境建模为连续状态空间(机器人的位置具有连续的坐标)和连续动作空间(机器人发送到电动机的电流也是以连续单位测量的)。一些机器人运行于高维空间:汽车需要知道其自身和周围智能体的位置、朝向和速度,机械臂有六七个可以相互独立运动的关节,人形机器人则具有数百个关节。机器人的学习是受约束的,因为真实世界顽固地拒绝比真实时间运行得更快。在模拟环境中,可以使用学习算法(如第22章所述的Q学习)在几小时内从几百万次试验中学习。在真实环境中,运行这些试验可能需要花掉数年,机器人也无法承担可能导致损害的试验风险(因此也无法从中学习)。因此,将从模拟环境中学到的东西转移到真正的机器人上,也就是从模拟到现实人系统需要体现关于机器人的先验知识、物理环境和要执行的任务,以便机器人可以快速学习、安全运行。机器人综合了我们在本书中所看到的许多概念,包括概率状态估本文中会介绍其连续版本。机器人硬件务的传感器和效应器设计的依赖并不少于智能体程序。机器人的硬件层面分类当你想到机器人时,你可能会想象它有一个脑袋和两条胳膊,用腿或轮子移动。这种拟人机器人(anthropomorphicrobot)在电影《终结者》和动画《杰森一家》这样的虚构作品中十分流行。但真正的机器人有各种各样的外形和大小。机械手(manipulator)只是机器手臂。它们不需要附加在机器人的身体上,可能只是被螺栓固定在桌面或地板上,就像在工厂里那样(图26-1a)。一些机械手(如用来组装汽车的机械手)的载荷很大。而另一些机械手(如装在轮椅上用于帮助运动障碍者的机械手,见图26-1b)不能负重太多,但在人类环境中更安全。图26-1 具有定制末端效应器的工业机器人。图片来源:Macor/123RF。(b)安装在轮椅上的Kinova®JACO®AssistiveRobot机械臂。Kinova和JACO是Kinova股份有限公司的商标移动机器人(mobile robot)使用轮子、腿或螺旋桨在环境中动。四旋翼无人机(quadcopter drone)是一种无人驾驶航空器(unmanned aerial vehicle,UAV),自主水下航行器(autonomousunderwatervehicle,AUV)则在海底漫游。许多移动机器人(如酒店的吸尘机器人或者毛巾递送机器人)只待在室内,并用轮子移动。在室外,则有自主无人车(autonomous car),以及甚至能在火星上探索地形的巡视器(rover)(图26-2)。最后,腿式机器人(leggedrobot)用于在轮子无法通行的恶劣地形行动。它的缺点在于,正确地控制腿比转动车轮更具有挑战性。其他类型的机器人包括假体机器人、外骨骼机器人、有翼机器人、蜂群机器人和全屋就是一个机器人的智能环境。图26-2 (a)美国国家航空航天局的好奇号巡视器在火星上自拍。图片来自美国国家航空航局。(b)Skydio无人机伴随一家人骑行。图片由Skydio提供感知世界传感器是机器人与环境之间的感知接口。摄像头之类的被动传感器(passivesensor)是环境的真实状态观察者:它们捕获环境中的信号。如声呐之类的主动传感器(activesensor)则向环境发送能量,它们依赖能量会反射回传感器这样的规律。主动传感器通常能比被动传感器提供更多信息,但代价是增加能耗,并面临同时使用的多个被动传感器互相干扰的风险。我们也可以根据传感器是用于感知环境、感知机器人位置还是感知机器人的内部配置对其分类。测距仪(rangefinder)是用于测量与周围物体距离的传感器。声呐(sonar)波就会回到传感器。返回信号的强度和时间表明与周围物体的距离。声呐是最受欢迎的自主水下航行器,在早期室内机器人中也十分流行。立体视觉(stereovision)(见25.6节)依靠多个相机从稍有不同的视角对环境进行成像,分析图像中的视差来计算与周围物体的距离。对地面移动机器人来说,声呐和立体视觉现在已很少使用,因为它们的精度不够可靠。Kinect是一种流行的低成本传感器,它结合了相机和结构光投影仪,能够将网格线的形状投射到场景中。摄像头观测网格的弯曲情况,就可以将场景中物体的形状反馈给机器人。根据需要,这种投影可以是红外光,以使其不与其他传感器(如人眼)发生干扰。大多数地面机器人现在配备有主动光学测距仪。像声呐传感器一样,光学距离传感器发射主动信号(光)并测量信号返回传感器的时间。图26-3a展示了一台飞行时间照相机(time-of-flightcamera)。这台照相机能以最高60帧/秒的速度获取图26-3b所示的距离成像。无人汽车常常使用扫描激光雷达(scanning lidar),lidar是light detection ranging(光探测与测距)的缩写。这是一种发射激光束并感知反射光束的主动传感器,它能够在100m处给出精度小于1厘米的距离测量。它使用复杂精密的镜子或旋转机构来对环境扫射光束,并绘制地图。扫描光雷达在长距离下的性能通常好于飞行时间照相机,在明亮的白天也有较好的性能。图26-3 (a)飞行时间照相机。图片由MesaImaging股份有限公司提供。(b)用该照相机得到的三维距离成像。这种距离成像使机器人检测附近的障碍物和物体成为可能。图片由WillowGarage有限责任公司提供雷达(radar)通常是航空器(自主或非自主)最青睐的距离探测传感器。雷达传感器可以探测以千米计的距离,与光学传感器相比,它的优势在于能够穿透云雾。而近端距离探测则有触觉传感器(tactilesensor),如触须传感器、碰撞板传感器和触敏表皮传感器。这些传感器基于物理接触测量距离,仅用于测量距离机器人非常近的物体。第二个重要的类别是位置传感器(locationsensor)。许多位置传感器使用距离测量技术作为确定距离的首要组成部分。在室外,全球定位系统(globalpositioningsystem,GPS)是定位问题最常见的解决方案。GPS测量与发射脉冲信号的卫星的距离。现在,轨道上有31颗正常运行的卫星,并有24颗卫星。是俄罗斯的卫星定位系统。GPS接收器可以通过分析相移来解算其与卫星的距离。通过对多个卫星使用三角定位法,GPS接收器可以确定其在地球上的绝对位置,精度可以到米。差分GPS(differential GPS)需要用到已知其位置的另一个地面接收器,在理想条件下可以提供毫米级定位。遗憾的是,GPS无法在室内或水下工作。室内定位通常通过在环境中的已知位置增设信标来实现。许多室内环境布满了无线基站,这有助于机器人通过分析无线信号来定位。在水下,主动声呐信标可以提供位置感知,它使用声音告知AUV与信标的相对距离。第三个重要的类别是本体感受传感器(proprioceptivesensor),它将自身运动告知机器人。要测量机器人关节的确切状态,电动机通常配有轴编码器(shaft encoder),它能够精确测量轴的运动角度。在机臂上,轴编码器有助于追踪关节位置。在移动机器人上,轴编码器报告轮子的旋转以便于计程(odometry),也就是测量行进距离。遗憾的是,轮子会漂移并打滑,因此计程只在短距离移动时才比较精确。像风力、洋流这样的外力会增加位置的不确定性。惯性传感器(inertialsensor),如陀螺仪等,通过依靠质量对速度变化的抗性来减小这种不确定性。机器人状态的其他重要方面使用力传感器(forcesensor)和扭矩传感器(torquesensor)来测量。当机器人处理确切尺寸未知的易碎物体时,这些传感器是不可或缺的。想象一吨重的机械臂在拧紧灯泡。它很容易就会用力过猛而弄碎灯泡。力传感器使机器人能够感知它用了多大的力来握灯泡,扭矩传感器则使机器人能够感知它用了多大的力来旋转。高级的传感器可以在3个平移方向和3个旋转方向上测量力的大小。它们能够以每秒几百次的频率进行测量,因此,机器人可以快速检测到不希望出现的力并在捏碎灯泡前对其动作进行纠正。不过,为机器人配备高端传感器和足以监控它们的计算能力则又是一个难题。产生运动使效应器运动的机械装置叫作执行器(actuator),其中包括变速箱、齿轮、电缆和链接。最常见的执行器是电动执行器(electricactuator),它使用电力来旋转电动机。它们大多用于需要旋转运动的系统,如机械臂的关节。液压执行器(hydraulic actuator)使用加压液压液(如油或水),而气动执行器(pneumatic actuator)则使用压缩气体来产生机械运动。执行器常用于移动关节,关节则连在机器人固定的主体或其他活动连接物上。手臂和腿就有这样的关节。旋转关节(revolute joint)的个连接物相对于另一个连接物旋转。而平移关节(prismaticjoint)的一个连接物沿着另一个连接物滑动。这些都是单轴关节(只有一个运动轴)。其他类型的关节包括球形关节、柱状关节和平面关节,这些都属于多轴关节。机器人使用夹具与环境中的物体交互。最简单的夹具是平行钳夹具(paralleljawgripper),它有两根“手指”和一个执行器,该执行器能够合拢两根手指来抓住物体。由于结构简单,这种效应器让人又爱又恨。三指夹具提供稍高的灵活性,却不失简洁性。所有夹具中最复杂的是仿人(拟人)手。例如,Shadow灵巧手(ShadowDexterousHand)总共有20个执行器。这为复杂的操作(包括掌上动作操控,想想拿起手机并在手中对其进行旋转,使其右端向上)提供了更多的自由度,但这种自由度是有代价的——学会控制这些复杂的夹具更困难。机器人学解决哪些问题我们已经知道机器人硬件是什么样子了,现在可以考虑驱动这些硬件以实现我们的目标的智能体程序了。首先,我们需要确定这个智能体的计算框架。我们已经讨论了确定性环境下的搜索、随机但完全可观测环境下的MDP、部分可观测环境下的POMDP以及在智能体并非单独行动情形下的博弈。给定一个计算框架,我们需要实现其要素——奖励或效用函数、状态、动作、观测空间等。我们已经讲过,机器人学问题是非确定性的、部分可观测的以及多智能体的。使用第18章的博弈论概念,我们可以看到,有时候智能体之间是合作的,而有时候是竞争的。在只能容纳一个智能体先通过的狭窄走廊中,机器人和人类会因为都想确保不会撞到对方而协作。但在一些情况下,它们也可能有一些竞争,以更快到达目的地。如果机器人太过于礼貌而不停让路,它就可能卡在拥挤的环境中而无法到达目的地。因此,当机器人在已知环境中单独行动时,它们要解决的问题可以形式化为MDP;当它们缺失了某些信息时,问题就会变成POMDP;当它们在人类附近行动时,问题常常可以用博弈来形式化。在这种形式化下,机器人的奖励是什么?通常,机器人的动作是为人类服务,例如,为医院的患者送餐是为了得到患者的奖励,而非机器人自身的奖励。在大多数机器人学的问题设定下,即使机器人设计者可能试着确定了足够好的代理奖励函数,真正的奖励函数也隐藏在机器人试图帮助的用户之中。机器人要么需要理解用户的需求,要么需要依赖工程师确定对用户需求的估计。对于机器人的动作、状态和观测空间,最常见的形式是,观测就是原始的传感器反馈(例如,来自摄像头的图像,或激光雷达收到的反射的激光),动作就是发送到电动机的原始电流,而状态就是机器人决策所需的知识。这就意味着,在底层感知与电动机控制和机器人要做出的顶层规划之间,存在巨大的鸿沟。要填平这个鸿沟,机器人科学家分离问题的不同层面以对其进行简化。例如,我们知道,当我们恰当地求解POMDP时,感知与动作会进行交互:感知告知智能体哪些动作有道理,而当智能体采取动作收集到离感知,消耗掉感知的输出并假装自己在未来不会再收集到任何新信息。另外,我们还需要分层规划,因为像“去咖啡馆”这样的顶层目标与“旋转主轴1°”这样的电动机指令相去甚远。在机器人学中,我们往往需要3级层次。任务规划(taskplanning)层级为高层级动作确定规划或策略,有时也称为原始动作或子目标,如移动到门口、打开门、走到电梯、按下按钮等。随后的运动规划(motionplanning)层级负责找到使机器人从一个点到另一个点的路径,完成每个子目标。最后,控制(control)层级用于使用机器人的执行器完成规划的运动。由于任务规划层级通常定义在离散的状态和动作之上,因此本文将主要介绍运动规划和控制。分别地,偏好学习(preferencelearning)负责估计最终用户的目标,而人类预测(peopleprediction)则用于预测机器人环境中其他人类的动作。它们一同确定机器人的行为。的迫切需要:同时进行运动规划和控制,同时进行任务规划和运动规人学注重在各个领域取得进展,并在进展之上实现更好的整合。机器人感知感知是机器人将传感器测得的数据映射到环境的内部表示的过程。这一过程用到第25章讲述的很多计算机视觉技术。但机器人学的感知还必须处理其他类型的传感器,如光雷达和触觉传感器。感知很难,因为传感器有噪声,而环境是部分可观测的、不可预测的,并且往往是动态的。也就是说,机器人面临着14.2节所述的状态估计(或滤波)的所有问题。通常来说,机器人的良好内部表示有3个性质。它们具有能使机器人进行良好决策的足够信息。它们是结构化的,进而可以高效更新。态变量。在第14章,我们知道卡尔曼滤波器、HMM以及动态贝叶斯网络可以表示转移以及部分可观测环境的传感器模型,我们也阐述了更新状态(也就是环境状态变量的后验分布)这一过程的动态贝叶斯网络模型在第14章进行了展示。对于机器人学问题,我们将机器人自身的过往动作作为模型中的已观测变量。图26-4展示了本文所使用的记法:Xt是环境(包括机器人在内)在时刻t的状态,zt是在时刻t接收到的观测值,而At是在接收到观测值后采取的动作。图26-4 机器人感知可以看作动作和测量序列的时序推断,如本动态决策网络所示我们想从当前信念状态和新观测计算新的信念状态。我们在14.2节做过同样的事,但此处有两个区别:们修改14.2.1节的递归滤波方程[式(14-5)]来使用积分而非求和:(26-1)该式表明状态变量X在时刻t+1的后验概率是由前一时刻的对应估计递归算出的。这个计算需要先前的动作at和当前的传感器测量。如,如果我们的目标是开发足球机器人,可能包含足球与机器人的相对位置。后验概率是所有刻画了我们从已有传感器测和控制所得到的信息的状态的概率分布。式(26-1)告诉我们如何递归地估计这一位置:通过逐渐地加入传感器测量(如摄像头图像)和机器人运动指令。概率称为转移模型或运动模型(motion而是传感器模型。定位与地图构建定位(localization)是找出东西在哪里的问题,包括找到机器人本机器人已知该环境的精确地图。(图26-7就展示了这样的一种地图。)这种移动机器人的位姿使用它的两个值为x和y的笛卡儿坐标及其值为的朝向定义,如图26-5a所示。如果我们将其写作向量中的3个值,则任意特定状态可以由给出。这些东西目前看起来不错。图26-5(a)移动机器人的简化运动模型。机器人用圆表示,圆内的半径线表示机器人的前进方向。状态xt包括位置和方向角。新状态xt+1通过位置的更新和方向的更新取得。在处还显示了一个在时刻t观测到的地标。(b)距离扫描传感器模型。对于给定的距离扫描 ,我们展示了两个可能的机器人位姿。左边的位姿生成该距离扫描的可能远大于右边在运动学近似中,每个动作包含两个“瞬时”速度——平移速度vt和旋转速度。对于很小的时间间隔,这种机器人的一个粗略的确定运动模型由下式给出:符号表示确定性状态预测。当然,真实的机器人在某种程度上说不可预测。这通常使用均值为、协方差为的高斯分布建模。(附录A介绍了数学定义。)这个概率分布是机器人的运动模型。它对运动at对机器人位置的影响建模。接下来,我们需要一个传感器模型。我们要考虑两种传感器模型。第一种模型假设传感器探测的是环境中稳定的、可辨认的地标(landmark)。机器人报告每个地标的距离和方位。假设机器人的状态为,它感知到一个位置已知为的地标。在没有噪声的情况下,距离和方位的预测可以用简单的几何学计算(见图26-5a):同样,噪声会使测量失真。为简单起见,假设噪声服从协方差为的高斯分布,则传感器模型为距离传感器的传感器阵列(sensorarray)使用有所不同的传感器模型,每个传感器与机器人有固定的方位角。这些传感器产生一个距离值向量。给定位姿xt,令为xt中沿着第j个波束方向算得的与障碍物的最近距离。如前所述,它会被高斯噪声干扰。通常,我们假设不同波束的误差是独立同分布的,因此有图26-5b展示了一个例子,它包含四波束距离扫描和两个可能的机器人位姿,其中一个很有可能产生了观测到的扫描结果,而另一个则没有。比较距离扫描模型与地标模型,我们看到距离扫描模型好在不需要在呈现距离扫描结果前识别地标。实际上,在图26-5b中,机器人面对一面没有特征的墙。但是,如果有可见的、可识别的地标,这些地标就能很快给出定位。14.4节描述了卡尔曼滤波器,它将信念状态用单个多元高斯分布表示,而粒子滤波器则用一系列对应状态的粒子表示信念状态。大多数定位算法使用其中一个来表示机器人的信念。使用粒子滤波的定位称为蒙特卡罗定位(MonteCarlolocalization,MCL)。MCL算法是图14-17中的粒子滤波算法的实例。我们只需提供合适的运动模型和传感器模型即可。图26-6展示了其中的一个版本,它使用距离扫描传感器模型。算法的操作如图26-7所示,其中机器人试图找出它在办公大楼中的位置。第一张图片中,根据先验概率,粒子均匀分布,代表机器人位置的全局不确定性。第二张图片中,第一组测量值抵达,粒子在高后验信念的区域堆积。第三张图中,充足的测量数据使粒子全部位于一个位置。图26-6 使用有独立噪声的距离扫描传感器模型的蒙特卡罗定位算法图26-7 蒙特卡罗定位,这是一种用于移动机器人定位的粒子滤波算法。(a)起初,全局具不确定性。(b)在导航到(对称的)走廊后形成近似双峰的不确定性。(c)在进入到特定的房间后形成单峰不确定性高斯分布的后验概率。高斯分布的均值为,协方差为。高斯信念的主要问题是它仅在线性运动模型f和线性测量模型h下闭合。对于非线性的f和h,更新滤波器的结果通常不符合高斯分布。因此,使用卡尔曼滤波器的定位算法线性化了运动模型和传感器模型。线性化是用线性函数对非线性函数的局部近似。图26-8展示了线性化一个(一维)机器人运动模型的概念。左图描述了非线性运动模型(动作变量at在图中省略,因为它不影响线性化)。右图函数被近似为线性函数。该线性函数选择了f在处的切线,即我们在时刻t的平均状态估计。这种线性化叫作一阶泰勒展开(Taylorexpansion)。通过泰勒展开来线性化f和h的卡尔曼滤波器叫作扩展卡尔曼滤波器(extendedKalmanfilter,EKF)。图26-9展示了运行扩展卡尔曼滤波定位算法的机器人的一系列估计。图26-8 线性化运动模型的一维图示:(a)函数f以及均值和协方差区间(基于)在时刻的投影。(b)线性化后的函数表示f在处的切线。均值的投影是正确的,而协方差的投则与不同图26-9 使用扩展卡尔曼滤波器的定位。机器人沿直线运动。在行进中,它位置的不确定性加,如误差椭圆所示。当它观测到位置已知的地标时,不确定性减小当机器人运动时,对其位置估计的不确定性增加,如误差椭圆所在看不到地标后误差又增大。如果地标很容易识别,则EKF算法效果很好。否则,后验概率分布可能会是多峰的,如图26-7b所示。需要知道地标的信息是图15-3讨论过的数据关联问题的一个例子。在某些情况下,环境地图不可取得。因此机器人必须获取地图。这有点像先有鸡还是先有蛋的问题:机器人必须根据它不太了解的地图导航,同时还要在不知道自己的确切位置时构建地图。这一问题对于很多机器人应用很重要,并且得到了广泛的研究。这一领域叫作同时定位与地图构建(simultaneouslocalizationandmapping,SLAM)。许多不同的概率方法解决了SLAM问题,包括上述的扩展卡尔曼滤波器。使用EFK很直接:只需扩展状态向量,纳入环境中地标的位置即可。幸运的是,EKF更新规模是二次增长的,因此对小型地图来说(如几百个地标),得,类似于第13章讨论的贝叶斯网络推断。期望最大化也常用于SLAM。其他感知类型并非所有的机器人感知都涉及定位或地图构建。机器人也感知温布,以及描述测量数据与状态变量关系的传感器模型。将机器人规划为反应型智能体而无须显式地对状态的概率分布进行推理也是可以的,我们将在26.9.1节对此进行介绍。技术在许多困难的问题(如定位和地图构建)上的表现超过了其他方实践。机器人感知中的监督学习与无监督学习机器学习在机器人感知中扮演着重要的角色,当最佳的内部表示未知时尤其如此。一个常见的方法是用无监督机器学习方法将高维传感器流映射到低维空间(见第19章)。这种方法称为低维嵌入(low-dimensional embedding)。机器学习使从数据中学习传感器模型和运模型,并同时发现合适的内部表示成为可能。不会认为他们的脸突然变绿了。我们的感知快速地适应了新的光照条件,我们的大脑忽略了这种不同。适应性感知技术使机器人能够根据这种变化进行调节。图26-10展示了一个例子,它来自自动驾驶领域。此处,一辆无人地面车辆的分类器适应了“可行驶表面”的概念。它的原理是什么?机器人使用激光为分类器提供机器人面前的一小片区域。如果这片区域被激光测距扫描视为平整的,则它就用作“可行驶表面”概念的训练正样本。类似于第20章讨论的EM算法的混合高斯技术随后被训练用于识别这一小块样本的特定颜色和纹理系数。图26-10中的图像是对整个图像应用这种分类器的结果。图26-10 使用适应性视觉取得的一系列“可行驶表面”分类。(a)只有路面被分类为可行驶的(粉色区域)。蓝色的V形线表示车辆的行驶方向。(b)分草地分类为可行驶的。(c)车辆更新了它的可行驶表面模型,以将草地视作路面。图片由SebastianThrun提供使机器人自己收集训练数据(和标签)的方法叫作自监督(self-supervised)。这个例子中,机器人使用机器学习来让对地形分类很有效的短距传感器变得能够看得更远。这就使机器人能开得更快,只在传感器模型表明此处有需要用短距传感器更仔细地检查的地形时才减速。规划与控制机器人的思考最终会落实到决定如何移动,也就是从抽象的任务层级一直落实到发送到电动机的电流。本节中,为简化问题,我们假设感知(以及预测,如果有必要)已经给定,那么世界变为可观测的。我们还假设世界具有确定性的转移(动态)。我们先将运动从控制中分离。我们将路径定义为机器人(或机器人部件,如手臂)将遵循的几何空间中的一系列点。这涉及第3章的概念,但此处我们的意思是空间中的一系列点,而非一系列离散动作。找出良好路径的任务叫作运动规划。有了路径以后,我们执行一个动作序列来跟踪这条路径称为轨迹跟踪控制(trajectorytrackingcontrol)。一条轨迹是一条路径中每个点具有对应时间的路径。一条路径只会说“从A到B到C”之类的东西,而一条轨迹则会说“从A开始,用1秒到达B,再用1.5秒到达C”,以此类推。构形空间假设一个简单的机器人R的形状为直角三角形,如图26-11左下角的淡紫色三角形所示。机器人需要规划路径来躲避一个矩形障碍物O。机器人在其中移动的空间叫作工作空间(workspace)。这个机器人可以在xy平面朝任意方向移动,但不能旋转。图26-11a展示了机器人的5个可能位置(用虚线表示),它们都与障碍物尽可能地接近。图26-11 一个可以平移的简单机器人,它需要躲避矩形障碍物。(a)工作空间,(b)构形间机器人的身体可以用点(x,y)或点(x,y,z)(对三维空间机器人来说)的点集表示,障碍物也一样。在这种表示之下,躲避障碍物意味着机器人上的点不与障碍物上的任何点重叠。运动规划需要在点集上进行运算,这是很复杂且费时的。我们可以用一种表示方法来简化计算,其中用一个抽象多维空间中的点表示所有构成机器人的点,我们称之为构形空间(configurationspace),或C空间(C-space)。思路是,构成机器人的点集是可以计算的,只要我们知道机器人的基本尺寸数据(对这里的三角形机器人来说,三边的长度就可以了)以及机器人的当前位姿向。对这里的三角形机器人来说,二维C空间就足够了:如果我们知道机器人上某个点的(x,y)坐标(这里用它的直角顶点),就可以算出三角形的所有其他点的位置(因为我们知道三角形的大小和形状,且三角形不能旋转)。在图26-11的左下角,淡紫色三角形可以用构形(0, 0)示。如果我们改变规则,使机器人可以旋转,则我们需要3个维度——,以便于计算每个点的位置。这里的是机器人在平面上的旋角度。如果机器人具有拉伸自己的能力,能够根据缩放因子s均匀地变,则C空间就会有4个维度,。现在我们仅使用简单的二维C空间,且机器人不可旋转。接下来的任务是估计C空间中障碍物所在的点的位置。考虑图26-11左图所示的5个虚线三角形,注意每个三角形中直角顶点的位置。然后想象三角形能够滑动的所有位置。显然,直角顶点不能进入障碍物内部,也不可能比图示的5个虚线三角形中的顶点更接近障碍物。因此,你可以发现直角顶点无法到达的区域(也就是C空间障碍物)就是图26-11右图所示的五边形,用Cobs表示。在日常语言中,我们提及机器人所面对的障碍物时,指的是桌子、椅子或者墙。但数学概念稍微简单一点,前提是我们将这些障碍物想象成恰好具有各个不连通分量的单个“障碍物”。大体上来说,C空间障碍物就是C中所有点q的集合,使得如果将机器人放置于这个构形中,其工作空间几何位置就会与工作空间中的障碍物位置相交。令工作空间中的障碍物为点集O,并令在构形q的点集为,则C空间障碍物定义为且且自由空间(freespace)为对有活动部件的机器人来说,C空间则更有趣。考虑图26-12a所示的二连杆机械臂。它被用螺栓固定在桌子上,因此基座不会移动,但它的手臂有两个独立运动的关节——我们称之为自由度(degree offreedom,DOF)。活动关节改变了肘部、夹具和手臂上所有点的(x, 坐标。手臂的构形空间是二维的,即,其中是肩关节的角度,则是肘关节的角度。图26-12 (a)有两个自由度的机械臂的工作空间表示。工作空间是一个盒子,其中扁平障物悬挂在天花板上。(b)同一个机器人的构形空间。只有空间中的白色区域是没有碰撞的构形。图中的点对应左图所示的机器人构形知道我们的二连杆机械臂的构形意味着我们可以通过简单的三角几何确定机械臂上每个点的位置。一般来说,正向运动学(forwardkinematics)映射是函数它以一个构形作为输入并输出该构形下机器人上特定点b机器人的终端效应器EE的正向运动学映射特别有用。特定构形q下机器人上的所有点的集合使用表示:而反向问题是将机器人上的点需要处于的位置映射到机器人需要处于的构形。这称为逆向运动学(inversekinematics):受限于约束有时逆向运动学映射不仅需要输入位置,还需要输入所需的朝向。例如,当我们想让机械手抓住一个物体时,我们可以算出需要其夹具所处的位置和朝向,并使用逆向运动学来确定该机器人的目标构形。随后规划器需要找出在不触碰障碍物的情况下使机器人从当前构形变成目标构形的方法。工作空间中的障碍物常被描述为简单的几何形式——特别是在倾向于关注于多边形障碍物的机器人学教科书中。但这些障碍物在构形空间中是什么样子?对二连杆机械臂来说,工作空间中的简单障碍物(如一条垂直的线)在C空间中具有非常复杂的形状,如图26-12b所示。上色不同的区子,另一个圆形区域对应左边的墙。最后,构形空间中最有趣的物体是从天花板上垂下来阻碍机器人运动的障碍物。这个物体在构形空间中的形状很好玩:它高度非线性,有些地方甚至是凹的。做一点点想象,读者就能明白夹具在左上端时的形状。我们鼓励读者暂停一下来研究这幅图。C空间中障碍物的形状一点也不直观!图26-12b中的点标出了图26-12a中机器人的构形。图26-13描述了另外3个构形,它们都同时绘制在了工作空间和构形空间中。在构形conf-1中,夹具正在抓垂直障碍物。图26-13 工作空间和构形空间中的3个机器人构形间的形状仍然可以非常复杂。因此,在实际中,人们通常探查构形空是否有碰撞。运动规划运动规划(motion planning)问题就是在不与障碍物发生碰撞的提下,找出使机器人从一种构形变为另一种构形的规划。这是运动与操纵的基本组成要素。26.5.4节将讨论如何在复杂动力学中完成这件事,例如,如果你转弯太快,打方向可能导致汽车滑出路径。目前,我们只专注于简单的运动规划问题,找出不会碰撞的几何路径。运动规划是经典的连续状态搜索问题,但常常可以离散化其空间,并应用第3章的搜索算法。运动规划问题有时称为搬钢琴问题(pianomover’sproblem)。它得名于搬运者纠结于如何将一架很大的、形状不规则的钢琴从一个房间搬运到另一个房间并且不磕碰到任何东西。对于运动规划问题,我们有如下约定:一个工作空间——世界W,对平面来说是,或对三维世界来是;一个障碍物区域 ;个具有构形空间C、点集(其)的机器人;起始构形;目标构形。障碍物区域包括C空间障碍物Cobs以及其对应的自由空间Cfree,如26.5.2节所述。我们需要找到一个贯穿自由空间的连续路径。我们使用参数化的曲线(t)来表示路径,其中,,t在0到1之间的(t)则是Cfree中的某个点。也就是说,t参数化了我们从起点到目标沿着路径行进了多远。注意,t的作用类似于时间,因为当t增加时,在路径上的距离也增加,但t始终是区间[0, 1]上的一点,并且不使用秒来量。有很多方法会使运动规划问题更复杂:将目标设定为可能构形的集合而非单个构形;将目标定义在工作空间而非C空间;定义一个需要最小化的代价函数(如路径长度);满足一些约束条件(例如,如果路径中需要运送一杯咖啡,则需要确保咖啡杯始终朝上以免弄洒咖啡)。运动规划的空间间。首先,有工作空间,或世界W。W中的点是普通三维世界中的点。然后,我们有构形空间C。C中的点q是d维的,d是机器人的自由度数量,并映射到W中的点集。最后,有一个路径空间。路径空间是个函数空间。空间中的每一个点映射到一条贯穿C空间的曲线。这个空间是维的!直观上看,路径上的每一个构形需要d维,而路径上构形的数量与数轴上区间[0,1]中点的数量一样多。现在我们考虑求解运动规划问题的一些方法。能见度图对有二维构形空间和多边形C空间障碍物的简化情形来说,能见度图(visibilitygraph)是求解运动规划问题的一种很简便的方法,它可以确保求出路径最短的解。令 为构成Cobs的顶点集,并令。们在顶点集V上构建一个,其连接顶点vi和顶点vj,如果连接这两个点的线段无碰撞,也就是说,,我们就说两个顶点“能够看到对方”,“能见度”图也得名于此。要解决运动规划问题,我们要做的是在图G上以qs为起始状态,以qg为目标状态运行离散图搜索(如最佳优先搜索)。图26-14中我们可以看到一张能见度图以及一个最优的有3步的解。能见度图上的最优搜索始终能给出最优路径(如果存在),或报告搜索失败(如果不存在这样的路径)。图26-14 一张能见度图。每个能够相互“看到”的顶点都用线段连接,也就是不穿过障碍物的段。最短路径必然在这些线段上沃罗诺伊图式能见度图促使路径直接与障碍物相接——最短路径就是尽可能地贴着桌子。然而,如果运动或感知是非确定性路径长度并非需要我们优化的唯一度量。26.8.2节展示了如何从人类行为样本中学到一个良好的度量。第三种方法则使用了另一种技术,它使路径尽可能地远离障碍物,而非紧挨着它们。沃罗诺伊图式(Voronoidiagram)是一种能够使我们办到这件事的表示。为理解沃罗诺伊图式的概念,考虑一个空间,其中障碍物为平面上的十几个点。我们为每一个障碍物点绘制一个区域(region),每个区域由所有距离这个障碍物点比距离其他障碍物点更近的点构成。这样,这些区域就划分了平面,如图26-15所示。沃罗诺伊图解由区域的集合构成,而沃罗诺伊图(Voronoigraph)则由区域中的顶点和边构成。图26-15 沃罗诺伊图式展示了构形空间中与周围两个或多个障碍物等距的点的集合(红色线)当障碍物为区域而非点时,做法基本相同。每个区域仍然包含所有距离一个障碍物比另一个障碍物更近的点,其中,距离是到障碍物上最近的点的距离。区域之间的边界仍然对应于与两个障碍物等距的点,但现在边界可能是曲线而非直线。在高维空间计算这些边界的代价极高。要求解运动规划问题,我们用直线连接起始点qs和沃罗诺伊图上距其最近的点,并对目标点qg也进行同样的操作。然后使用离散图搜索来找到图上的最短路径。对于类似于室内走廊导航的问题,它能够给出一条沿着走廊中间行驶的漂亮的路径。然而,在室外情况下,它会产生低效的路径,例如,为了保持在一个开阔的空间的中间行驶,它会不必要地走一些弯路。单元分解运动规划的另一种方法是离散化C空间。单元分解(celldecomposition)方法将自由空间分解为有限数量的相邻区域,称为单元。这些单元旨在使单个单元内的路径规划问题可以用简单方法(直线移动)解决。因此,路径规划问题变为离散图搜索问题(图和沃罗诺伊图一样),在单元序列中找到路径。将空间划分为大小均匀的网格是一种最简单的单元分解。图26-16a展示了空间的方形网格分解,以及一条在这一网格大小下最优的解路径。(这些值可以使用图17-6所示的VALUE-ITERATION算法的确定性形式计算。)图26-16b展示了手臂在对应的工作空间的轨迹。当然,我们还可以使用A*算法来找出最短路径。图26-16 (a)为构形空间的网格单元近似找到的价值函数和路径。(b)相同路径在工作空坐标中的可视化。注意机器人是如何弯曲肘部来避免与垂直障碍物发生碰撞的这种网格分解的好处在于它很容易实现,但它有3点局限性。首先,它只能用于低维构形空间,因为网格的数量随维数d呈指数级增长。(这就是维度诅咒。)其次,经过离散状态空间的路径不总是平滑的。我们在图26-16a中看到,路径的斜线部分是锯齿形的,因此机器人很难准确地跟踪这条路径。机器人可以试着平滑解路径,但这很难。最后,存在如何处理“混合”单元(也就是既不完全在自由空间中又不完全在被占用空间中的单元)的问题。包含这种单元的解路径可能不是真正的解,因为可能不存在安全穿过这个单元的路径。这就会导致路径规划器不可靠。此外,如果我们坚持只使用完全自由的单元,规划器就会是不完备的,因为唯一能够到达目标的路径可能通过混合单元——它可能是宽度足够机器人通过的走廊,但走廊被混合单元覆盖。这个问题的第一种解决方法是进一步细分混合单元,如使其为原先的一半大小。这种方法可以迭代使用,直到找到的路径完全在自由单元中。这种方法很有效,并且是完备的,前提是存在一种确定给定单元是混合单元的方法,但这仅在构形空间的边界具有简单数学描述的情形下才容易做到。这里要注意的一个重点是,单元分解并不一定需要显式地表示障碍物空间Cobs。我们可以通过使用碰撞检查器(collisionchecker)来决定是否纳入一个单元。这是运动规划中的一个重要概念。碰撞检查器是构形与障碍物碰撞时映射到,否则映射到0的函数。检查某个特定构形是否产生碰撞比显式地构建整个障碍物空间Cobs容易得多。检查图26-16a的解路径,我们可以发现另一个必须解决的难题。这条路径包含毫无修饰的锋利拐角,但真正的机器人具有动量,不能瞬间改变方向。这个问题可以通过对每个网格单元存储确切的状态(位置和速度)来解决,而这些状态在搜索到达该单元时取得。进一步地,假设在向周围网格单元传播信息时,我们以连续状态为基础,并应用机器人运动模型来进入邻近单元。这样我们就不会采用90°急转弯,而会采用符合运动法则的圆角转弯。我们现在可以确保产生的轨迹是平滑的,能够被机器人真正执行。混合A*(hybrid A*)是一种实现这个目标的法。随机运动规划随机运动规划在构形空间的随机分解上进行图搜索,而非在均匀单元分解上。其核心思路是采样一个随机点集,如果点之间有简单的无碰撞到达方式(如直线),就在它们之间创建边;然后就可以在这张图上进行搜索。概率路线图(probabilisticroadmap,PRM)算法运用了这一思路。q1到q2的路径(或失败)的简单规划器(simpleplanner)B(q1,q2)。这个简单规划器不是完备的——它可能返回失败,即使确实存在一个解。它的作用是快速地尝试连接q1和q2并使主算法知道是否成功。我们要使用它来定义两个顶点之间是否存在一条边。算法从采样qs和qm之外的M个里程碑——Cfree中的点开始。它使用拒绝采样,其中构形被随机采样并使用进行检查,直到找出M个里程碑。接下来,算法使用简单规划器来尝试连接每对里程碑。如果简单规划器返回成功,则这对里程碑之间的边被加入图中;否则,图不发生变化。我们尝试连接每个里程碑到它的k个最近邻(我们称之为k-PRM),或到半径为r之内的所有里程碑。最后,算法在这张图上搜索从qs到qg的路径。如果没有找到路径,则再采样M个里程碑添加到图中,并重复这一过程。图26-17展示了找出了两个构形之间路径的路线图。PRM不完备,但它们是所谓概率完备的——只要存在路径,它们最终就会找到路径。直觉上,这是因为它会一直采样更多的里程碑。PRM在高维构形空间中的性能仍然很好。PRM在多查询规划(multi-query planning)中也十分流行。多查规划中,在同一个C空间中存在多个运动规划问题。通常,机器人到达目标后,立刻就会被要求到达同一个工作空间内的另一个目标。PRM很有用,因为机器人可以预先花时间构建路线图,并在多次查询中利用这张图。图26-17 概率路线图(PRM)算法。左上:起点构形与目标构形。右上:采样M个无碰撞里程碑(此处M=5)。左下:将每个里程碑与其k个最近邻连接(此处k=3)。右下:在产生的图找出从起点到目标的最短路径快速探索随机树PRM的一个扩展称为快速探索随机树(rapidly-exploring tree,RRT),它在单查询规划中十分流行。我们逐渐地构建两棵树,一棵以qs为根节点,另一棵以qg为根节点。选择随机里程碑,并尝试将每个里程碑连接到现有的树上。如果一个里程碑同时连接到了两棵树,就意味着已经找到了解,如图26-18所示。如果没有这样的连接,则算法找到每棵树上最近的点,并将一条指向该里程碑的、长度为的边加入树中。这能使树的生长趋向于空间中先前没有探索过的区域。图26-18 双向RRT算法通过渐增地将每个样本连接到每棵树上最近的节点(如果可以连接)建了两棵树(一棵从起点开始,另一棵从目标开始)。如果一个样本同时连接到了两棵树,就代表我们已经找到了一条解路径机器人学家很喜欢RRT的易用性。然而,RRT的解往往不是最优的,且缺乏平滑性。因此,RRT常常需要在后面附加一个后处理步骤。最常见的一种后处理是“走捷径”,它随机地选择解路径上的一个顶点并通过(用简单规划器)来不太自然,因为我们选择了位置随机的里程碑,如图26-19所示。图26-19 RRT生成并经过“走捷径”后期处理的截图。图片由AncaDragan提供RRT*是RRT的一个修改版,它使算法逼近最优:解在越来越多的碑时,如果改变已有节点的父节点能使从新里程碑到达它们的代价更小,则交换这些父节点。用于运动学规划的轨迹优化来避免碰撞。它的目标是找到一条能优化路径的代价函数[1]的路径。也就是说,我们想最小化代价函数,其中,。机器人学家喜欢最小化代价函数J,但在人工智能的其他领域,我们试图最大化效用函数U或者奖励函数R。J称为泛函(functional),因为它是函数的函数。J的参数是,本身就是一个函数:以区间[0, 1]内的点为输入,并将其映射到一个形。标准的代价函数在机器人运动的两个方面(即避免碰撞和效率)进行权衡:其中,效率Jeff测量路径的长度,也可以用来测量平滑性。定义效率的一种简便方式是使用平方,它对的一阶导数的平方进行积分(我们稍后来看它为何能对短路径进行激励):对于障碍物项,假设我们可以计算从任意点到最近障碍物的的距离d(x)。在障碍物外部时这一距离为正,在边缘上时为0,在内部时为负。这叫作有符号的距离场(signeddistancefield)。我们现在就可以定义工作空间中的代价场了,我们称其为c,它在障碍物内部具有大代价,并在紧挨着障碍物的外部具有小代价。有了代价之后,我们可以使工作空间中的点讨厌处于障碍物内部,且不喜欢紧挨着障碍物(以免像能见度图一样始终贴着障碍物的边缘)。当然,我们的机器人不是工作空间中的点,因此我们还需要做一些事——考虑机器人身体上的所有点b:这称为路径积分(pathintegral)——它不仅在路径上对身体上的每个点的c进行积分,还乘以导数以使代价对路径的重计时保持不变。想象一个扫过代价场的机器人在移动时累积代价。无论机器人在场内移动得有多快或多慢,它都必须积累到完全相同的代价。求解上述优化问题并找出路径的最简单的办法是梯度下降法。如果你想知道如何求泛函关于函数的梯度,变分法可以帮助你。它对如下形式的泛函来说很简单:它是仅依赖参数s、函数在s处的值以及函数在s处的导数的函数的积分。这种情况下,欧拉-拉格朗日方程(Euler-Lagrangeequation)表明其梯度为如果我们仔细察看Jeff和Jobs,它们都遵循这种形式。特别地,对于Jeff,我们有 。为便于理解,我们仅计算Jeff度。我们看到F没有直接依赖,因此公式的第一项为0,剩余部分为为F关的偏导数。注意我们在定义Jeff时是如何化简问题的——它是导数的简单二次函数(我们甚至在前面乘以1/2以便2可以轻松地约去)。实际中,你会在优化中看到很多这样的技巧,其中的技艺不仅在于选择如何优化代价函数,还在于选择能够很容易优化的代价函数。对梯度进行简化,有现在,由于Jeff是二次的,因此将梯度设为0就能给出在不需要处理障碍物时的解。一次积分后,我们就能获得一阶导数,它应当是一个常数;再次积分后,我们得到,其中a和b由端点和确定。对于Jeff碍物,它确实是从一点到另一点最高效的路径。当然,附加的Jobs才是制造困难的那一项,我们就不在此处推导其梯度了。机器人通常将其路径初始化为直线,它常常会直接穿过一些障碍物。随后它会计算当前路径的代价的梯度,然后梯度用于使路径远离障碍物(图26-20)。注意,梯度下降只能产生局部最优解——就像爬山法一样。像模拟退火(4.1.2节)这样的方法可以用于探索,以使找到的局部最优更可能是足够好的解。图26-21展示了经过轨迹优化后躲避障碍物的任务。图26-20 运动规划的轨迹优化。两个点状障碍物周围的圆形带上代价下降。优化器从直线轨开始,逐渐使路径远离障碍物以避免碰撞,进而找出通过代价场的最短路径图26-21 用轨迹优化器解决了伸手抓住瓶子的任务。左图:为末端效应器绘制的初始轨迹。图:优化后的最终轨迹。右图:目标构形。图片由AncaDragan提供,见(Ratliffetal.,2009)轨迹跟踪控制我们已经介绍了如何规划运动,但没有讨论如何真正地移动,也就是将电流传送给电动机来产生扭矩,进而使机器人移动。这属于论个:如何将路径的数学描述转换为真实世界中的一系列动作(开环控制),以及如何确保我们在轨迹范围内(闭环控制)。开环跟踪中,从构形到扭矩:路径给出了构形。机器人在矩,以形成运动。但机器人的扭矩要以什么为目标才能使它到达?这就需要引入动力学模型(dynamics model)(或转移模型)的概念。我们可以给模型一个函数f来计算扭矩对构形的作用。还记得物理学中的F=ma吗?扭矩中也有类似的东西,形式为,其u为扭矩,为速度,为加速度。[2]如果机器人位于构形q并具有速度,施加扭矩u,就会造成加速度。元组为动态状态(dynamic state),因为它涉及速度,而q则是运动学状态(kinematicstate),它不足以准确计算要施加的扭矩。f是MDP中以扭矩作为动作时,动态的确定性动力学模型。f−1是逆动力学(inversedynamics)模型,它告诉我们如果我们需要特定的加速度来改变速度进而改变动态,需要施加多大的扭矩。此处我们省略了f−1的细节,它涉及质量、惯性、重力以及科里奥利力和离心力。现在我们可以简单地将考虑成尺度为从0到1的“时间”,并用逆动力学选择扭矩:(26-2)假设机器人始于。尽管在实际中情况没这么简单。路径可能不满足(机器人初始速度为0),甚至不满足是可的(更不用说二阶导数)。另外,终点“1”的含义不清楚:它代表多少秒呢?实际中,在我们考虑跟踪一条参考路径之前,我们通常对其进行重计时,也就是将其转换为一个把某个时长T的区间[0,T]中的点的轨。重计时比你想象的要难,但它有近似方法,例如,选定一个最大速度和加速度,并使用加速到最大速度并尽可能长时间地保持该速度,随后减速到0的配置。假设我们可以这样做,式(26-2)就可以重写为(26-3)即使从变成了实际轨迹,用于施加扭矩的式(26-3)——称为制律——在实际中还是有一个问题。回想21.8.3节,你可能就猜到是什么问题了。该式在f很精确的时候没有问题,但实际情况并不是这样的:在实际系统中,我们没办法精确地测量质量和惯性,f恰当地考虑到像电动机中的静摩擦力(趋向于阻止静止表面相互运动的摩擦力,也就是使它们黏在一起)这样的物理现象。因此,当机械臂根据错误的f开始施加扭矩时,误差就会累积,你就会越来越偏离参考路径。机器人可以用控制过程来避免误差累积。控制过程查看机器人自认为其所处的位置,并将其与它想要处于的位置进行比较,然后施加扭矩来最小化误差。施加反比于观测误差的扭矩的控制器称为比例控制器,或简称为P控制器。计算这个力的公式为其中,qt为当前构形,KP为代表控制器增益因子(gain factor)常数。KP刻画控制器纠正实际位置qt和预期位置 之间偏差的能力。图26-22a阐释了比例控制器可能产生的问题。当发生偏差时(不论是由于噪声还是由于机器人的施力限制),机器人提供一个大小与偏差成比例的反向力。直觉上,这似乎挺有道理,因为偏差应当使用反向的力来补偿,以使机器人回到正轨。然而,如图26-22a所示,比例控制器会导致机器人施力过大,超过了所预期的路径并来回抖动。这是由于机器人的自然惯性:机器人回到参考位置后仍然具有速度,因此不能瞬间停止。图26-22 使用不同方式控制机械臂:(a)增益因子为1.0的比例控制。(b)增益因子为0.1的比例控制。(c)比例分量增益因子为0.3,微分分量为0.8的比例微分控制。所有情形下,机臂都试图遵循平滑的路径线,但在(a)和(b)中,机械臂明显偏离了路径图26-22a中,参数KP=1。乍看起来,我们可能会认为选择较小的KP值,让机器人较缓慢地接近预期的路径就可以纠正问题。遗憾的是,情况并非如此。图26-22b展示了KP = 0.1的轨迹,它仍然表现出震荡为。低增益参数值有用,但并没有完全解决问题。实际上,在没有摩擦力的情况下,P控制器本质上就是弹簧法则,因此它会沿着固定的目标位置不停震荡。有很多控制器优于简单的比例控制法则。如果较小的扰动会使机器人和参考信号之间形成有限的误差,则这个控制器就是稳定的。如果在遭受这样的扰动后,控制器能够回到并保持在其参考路径上,则它是严格稳定的。P控制器似乎是稳定的,但不是严格稳定的,因为它无法停留在参考路径附近。在我们这个领域中,实现严格稳定的最简单的控制器是PD控制器。字母“P”还是代表比例,而“D”代表微分。PD控制器由下式描述:(26-4)如上式所述,PD控制器为P控制器附加了一个微分分量,给u(t)增加了一个与随时间产生的误差的一阶导数成比例的项。这一的作用是什么?一般而言,微分项会抑制所控制的系统。要明白这一点,考虑一个误差随时间快速变化的情况,正如在上述的P控制器中出例项就会主导控制权。图22-6c展示了对机械臂运用这种PD控制器的结果,其增益参数KP=0.3,KD=0.8。显然,最终的路径平滑多了,且没有显示出任何明显的震荡。但PD控制器也有不管用的时候。具体来说,PD控制器可能无法将误差降到零,即使在没有外部扰动的情况下。这种情况通常是系统受到没有建模的外力导致的。例如,一辆自动驾驶汽车在倾斜的表面行驶会发现它被整体地拽向一边。机械臂的磨损和老化也会导致类似的系统性误差。这种情况下,就需要通过比例反馈来使误差接近0。解决这一问题的方法是给控制律增加第三项,它基于误差在时间上的积分:(26-5)此处的KI是第三个增益参数。 项计算误差在时间上积分。这一项的作用是纠正参考信号和实际状态的长期偏差。因此,分项确保控制器不会表现出系统性的长期误差,尽管它有造成震荡的能。具有所有这3项的控制器叫作PID控制器(即比例积分微分控制器)。PID控制器在工业上广泛用于各种控制问题。可以对这3项做如下理解:比例,离路径越远就越努力回到路径;微分,如果误差在增加就更加努力地尝试回到路径;积分,如果你长期没有取得进步就更加努力地尝试。介于基于逆动力学的开环控制和闭环PID控制之间的是计算扭矩控制(computedtorquecontrol)。我们计算模型认为我们所需的扭矩,但使用比例误差项对模型不精确的部分进行补偿:(26-6)第一项称为前馈分量(feedforward component),因为它预测机人所需处于的位置并计算可能需要的扭矩。第二项是反馈分量(feedbackcomponent),因为它将动态的现有误差反馈给控制律。m(q)是构形q下的惯性矩阵——不同于一般的PD控制,增益随系统的构形改变而改变。规划与策略我们回头来确保我们理解了本文目前的内容与我们在第3章、第17章、第21章中学到的内容的类比。我们考虑机器人学中的运动实际上是在考虑隐含MDP模型,其状态为动态状态(构形和速度),动作为控制输入(通常是扭矩的形式)。如果我们再看一下上述的控制律,就会发现它们是策略而非规划——它们告诉机器人在任意它可能处于的位置上应当采取什么动作。不过它们一般远非最优策略。由于动态状态是连续的,且是高维度的(像动作空间一样),因此最优策略在计算上很难取得。我们在此处的做法是分解问题。首先在简化的状态和动作空间中想出一个规划:我们仅使用运动学状态,并在不考虑隐含的动力学的情况下,假设这些状态是可以从其他状态到达的。这是运动规划,它给我们一个参考路径。如果我们完全了解动力学,就可以用式(26-3)将其转换为一个用于原始状态和动作空间的规划。但由于动力学模型通常有误差,因此我们将其转换为试图遵循规划的策略——当偏离路径时回到路径。为此,我们用两种方式引入了次优性:首先通过不考虑动力学情况下的规划,其次通过假设如果我们偏离了规划,最优动作是返回原始规划。26.5.4节将介绍直接在动态状态上计算策略的方法,而非分离它们。最优控制除使用规划器创建运动学路径并在之后只考虑系统动力学的做法之外,我们还能同时考虑路径和动力学。我们将运动学路径当作轨迹优化问题,并将其转换成动态的轨迹优化:我们在考虑动态(或转移)的情况下直接优化动作。这更接近我们在第3章和第17动力学,就可以找到一个动作序列来执行,如我们在第3章所做的那样。如果我们不确定,那么可能需要一个策略,就像第17章那样。在本节中,我们更直接地考查机器人运作所隐含的MDP悉的离散MDP转换到连续MDP。我们根据惯例用x表示系统的动态状态,它与离散MDP中的s等价。令xs和xg为起始状态与目标状态。我们要找到一个动作序列,使得机器人执行后会产生累积代价较低的状态-动作对。动作是使用u(t)表示的扭矩,t从0开始,结束于T。我们要找到一系列最小化累积代价J的扭矩u,则形式上有(26-7)受限于约束如何将它们与运动规划和轨迹跟踪控制联系在一起?想象我们使用效率的概念,在不考虑障碍物的情况下将其放到代价函数J中,就像我们在运动学状态上的轨迹优化中做的那样。动态状态是构形和速度,扭矩u通过开环轨迹跟踪中的动力学f对其进行改变。区别是我们现在同时考虑构形和扭矩。有时候,我们可能需要将碰撞躲避也作为硬约束,我们在仅对运动学状态进行轨迹优化时也提过这一点。要求解这个优化问题,我们可以取J的梯度,但不再是对构形序列求梯度,而是直接关于控制u求梯度。有时候,将状态序列x作为决策变量纳入考虑,并使用动力学约束来确保x和u一致也是有用的。有很多轨迹优化技术使用这个方法,其中两种是多重打靶法(multipleshooting)和直接配置法(directcollocation)。这些方法都不能找到全局最优解,但实际中它们能够有效地使类人机器人行走,使自主的汽车行驶。当上述问题中的J为二次函数,f是关于x和u的线性函数时,奇迹就发生了。我们要最小化我们可以在无限区域而非有限区域内进行优化,进而得到从任意状态出发的策略,而不仅是一个控制序列。为此,Q和R必须是正定矩阵。这就给出了一个线性二次调节器(linearquadraticregulator,LQR)。在LQR中,最优价值函数,称为行动代价(costtogo),是二次函数,而最优策略是线性函数。策略形似u=−Kx,其中,找到矩阵K需要求解代数里卡蒂方程(Riccatiequation)——没有局部最优解,不需要值迭代,也不需要策略迭代!由于LQR容易解出最优策略,因此它在实际中经常被用到,尽管实际问题很少具有二次代价,也很少符合线性动力学。一个相当有用的方法称为迭代LQR(iterativeLQR,ILQR),它的原理是从一个解出发,迭代地计算动力学的线性近似及其附近代价的二次近似,然后求解得出的LQR系统来得到新的解。LQR的变种也常用于轨迹跟踪。规划不确定的运动随机(或未建模)效应。同时,也会有来自使用近似算法(如粒子滤波)了环境。如今,大部分机器人使用确定性算法进行决策,例如,26.5节所述的路径规划算法,或第3章介绍的搜索算法。对这些确定性算法进行两种改造:首先,它们将连续状态空间转换为离散空间来处理(如用能见度图或单元分解)。其次,它们通过从状态估计算法产生的概率分布中选择最可能状态(mostlikelystate)来处理当前状态的不确定性。这些方法使计算更快速,也更适合于确定性搜索算法。本节讨论类似于第4章中较复杂的搜索算法的不确定性处理方法。首先,不同于确定性规划,不确定性需要策略。我们已经讨论了轨迹跟踪是如何将规划转为策略来补偿动力学中的误差的。而有时候,如果最可能假设变化得足够大,跟踪为先前假设设计的规划就远不够最优了。这就需要在线重规划(onlinereplanning):我们可以根据新的信念重新算出一个规划。现在的大部分机器人都使用一种称为模型预测控制(modelpredictivecontrol,MPC)的技术,它们对更短的时间区间进行规划,但每一时刻都进行重规划(因此MPC更接近实时搜索和博弈算法)。这实际上就产生了策略:每个时刻,我们运行规划器并采取规划中的第一个动作;如果有新信息到来或我们没能到达预期的地方也没有关系,因为我们始终要进行重规划,它会告诉我们下一步该怎么做。其次,应对不确定性需要信息收集(informationgathering)动作。当我们仅考虑已有信息并据此进行规划时(这就是从控制中分离估计),我们实际上是在每个时刻(近似)求解一个新MDP,它对应我们对自身位置和世界运转方式的当前信念。但实际中,POMDP框架能更好地刻画不确定性:有一些我们无法直接观测的东西,不论是机器人的位置或构形、世界中物体的位置,还是动力学模型本身的参数,例如,二连杆机械臂的质心在哪里。不求解POMDP使我们失去了对机器人将获取的未来信息进行推理的能力:在MDP中我们只根据我们所知的东西进行规划,而非我们可能会知道的东西。还记得信息的价值吗?如果机器人只根据当前信念进行规划而不考虑未来可能获取到的信息,就未能考虑到信息的价值。它们永远不会采取那些目前就其所知不够好但会产生大量信息并使机器人做得更好的动作。这样的动作对导航机器人来说是什么样子的?机器人可以接近一个地标来更好地估计其位置,即使根据其当前知识,地标并不在路径上。这个动作只有当机器人考虑到它将会取得的新观测时才是最优的,而仅考虑它已有的信息,这就不是最优的。为了解决这个问题,机器人学技术有时会显式地定义信息收集动作,例如,移动手直到它接触到某个表面,这称为保护移动(guardedmovement),并确保机器人在想出到达其实际目标的规划前进行过这人的传感器数值并告知何时停止。有时,可以通过一系列不论是否有不确定性都能顺利执行的保护移动来达成目标。例如,图26-23展示了一个有狭窄垂直孔的二维构形空间。它可以是将矩形铆钉插入孔洞,或将汽车钥匙插入点火开关的构形空间。运动指令是速度常量。终止条件是接触到表面。为建模控制中的不确定性,我们假设机器人的实际移动方向位于指令方向周围的锥形Cv中。图26-23 一个二维构形空间、速度不确定性圆锥和机器人的可能运动包络。预期速度是v,但由于不确定性,实际速度可能是Cv中使得最终的构形处于运动包络内的某处。这意味着我们知道它是否触碰到了孔洞图26-23展示了如果机器人试图从初始构形一直向下运动可能发生的情况。由于速度的不确定性,机器人可能移动到锥面包络中的任意地方,可能进到孔里,但更可能触碰到洞口周围。由于机器人不知道它在孔的哪一边,因此它也不知道要往哪里移动。图26-24和图26-25展示了一种更明智的策略。图26-24中,机器人故意移动到孔的一边。运动指令如图26-24所示,终止检测是接触到任意表面。图26-25中,给出的运动指令使机器人沿着表面滑行进入小孔。由于运动包络内所有可能的速度都向右,因此只要机器人接触到水平表面,它就会滑向右侧。图26-24 第一条运动指令及机器人可能的运动包络。不论机器人的实际运动如何,我们都知最终构形在孔的左边图26-25 第二个运动指令以及机器人可能的运动包络。即使有误差,机器人最终也能进入小孔当它接触到小孔右侧的竖直边缘时,它就会沿其下滑,因为所有可能的速度都相对于垂直表面向下。它会保持移动,直到抵达孔洞底部,因为这是它的终止条件。尽管控制有不确定性,但是机器人的所有可能的轨迹都终止于与小孔底部接触,也就是说,除非表面不规则导致机器人卡在某处。除保护移动外的其他方法将代价函数变成对我们已知能够获取信息的动作的激励,例如,使机器人靠近已知地标的海岸导航(costalnavigation)启发式。更一般地,方法可以结合预期信息增益(信念熵的降低程度),将其作为代价函数中的一项,使机器人在决定要做什么时显式地对每项动作可能带来的信息量进行推理。尽管计算上更困难,但这种方法的优势在于机器人能够发明它自己的信息收集动作而不依靠人类提供的启发式函数和规划好的策略,它们往往缺乏灵活性。机器人学中的强化学习目前为止,我们已经考虑了机器人能够获取世界中动力学模型的任务。但在许多任务中,写出这种模型是非常困难的,这使得我们进入强化学习(reinforcementlearning,RL)的领域。机器人学中,RL的一项挑战是状态和动作空间的天然连续性,我们要么用离散化处理它,要么更一般地,用函数近似处理它。策略或价值函数的形式为已知有用的特征的组合,或深度神经网络。神经网络可以从原始输入直接映射到输出,极大地避免了对特征工程的需要,但它需要更多的数据。在真实世界运行时,我们必须确保其动作是安全的(坏的!),得比每秒1秒还快。强化学习使用中最有趣的部分很大程度上汇聚于如何能降低真实世界样本的复杂性,也就是在机器人学会如何完成任务前,机器人与真实世界交互的次数。利用模型避免太多真实世界样本的一种自然方式是使用尽可能多的世界动力学知识。例如,我们可能不知道摩擦系数或物体质量的确切值,但我们可能有能够描述这种动力学的公式来作为这些参数的函数。这种情况下,基于模型的强化学习(第22章)就很有吸引力,其中机器人可以交替地拟合动力学参数并计算更好的策略。即使公式由于不能对物理学的所有细节进行建模而不正确,研究人员也对参数之外的误差项学习进行了实验,它能够补偿物理模型的不精确性。或者,我们可以完全抛弃这些公式,转而用局部线性模型近似世界,其中每个模型近似状态空间中一个区域内的动力学。这种方法已经能成功地使机器人掌握一些复杂动态任务,如杂耍。世界模型也有助于降低无模型强化学习方法的样本复杂度,通过从模拟到现实的迁移:将在模拟中工作良好的策略迁移到真实世界中。它的思路是将模型用作策略搜索的模拟器(22.5节)。为了学习一个能迁移得很好的模型,我们在训练中对模型增加噪声,以使策略更健壮。或者,我们可以通过在模拟中采样不同的参数来训练能够在各种各样的模型中运行的策略,这有时称为域随机化(domain randomization)。26-26展示了一个例子,其中巧手操作任务在不同视觉属性和物理属性(如摩擦或阻尼)的模拟中进行训练。图26-26 训练健壮的策略。(a)在一个操作物体的机械手上多次运行模拟,物理学参数和照明情况是随机的。图片由WojciechZaremba提供。(b)真实世界环境中,单个机械手处于笼子中央,周围有摄像头和测距器。(c)模拟和真实世界训练产生了多个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中文超难注音题目及答案
- 邮政航空笔试题及答案
- 编程思维笔试题及答案
- 园林绿化笔试题及答案
- 工务段笔试题目及答案
- 2026-2030中国共享生活服务市场发展趋势分析及投资前景预测报告
- 2026年焊工操作技能考试试题及答案
- 公共设施接入问题论文
- 2026年青岛事业编药学考试试题及答案
- 世代消费价值观虚拟消费论文
- 2026年教材教法考试试题及答案英语
- 2026年建筑普通脚手架架子工习题库及答案
- 2026年辽宁锦州海通实业有限公司计划招录28人备考题库完整参考答案详解
- 2026中国银行博士后科研工作站博士后研究人员招收笔试备考题库及答案解析
- 2026年征兵政治考核面试题库及参考答案
- (正式版)T∕GDSTD 023-2026 广东省自然资源资产配置方案编制指南
- 2025年北京市八年级地生会考真题试卷(含答案)
- 2026年7月日历表(带农历-含周数-每月一张可打印)
- 五年级下册《道德与法治》简答题及答案
- 上海市松江区2026年生物八年级第二学期期末学业水平测试试题含解析
- 肾病透析导管并发症
评论
0/150
提交评论