3.1 建立场景地图
RSVP的第1部分是一个场景地图。地图是将要发生的任务和态势所在环境的符号化表示。场景环境是机器人在其中运行的一个世界。图3-1展示了NXT Mindstorms机器人的经典试验台。
图3-1所示的试验台是Mindstorms机器人套件的一部分。试验台呈长方形,约0.6m宽、0.76m长。试验台上有16种颜色和38个部分重复的数字。试验台上有一系列直线和弧线,还有黄色、蓝色、红色和绿色的正方形以及不同区域其他颜色的形状。这个试验台是机器人的世界或环境,用于NXT Mindstorms机器人的颜色传感器、电机等的初步测试。
类似试验台,一个平面图显示了将要识别目标的位置,这些目标是有色正方形、机器人将与之交互的对象或需要规避的障碍物。如果目标太高或太远,传感器可能无法确定它们的位置。确定机器人导航到达那些位置的路径也可以利用该地图来规划。
空间和机器人(机器人足迹)的尺寸可能影响机器人导航空间和执行任务的能力。例如,对于我们的BR-1,什么是蛋糕相对于机器人的位置?有一个路径?有障碍?机器人可以在空间中移动吗?地图可以帮助回答这些问题。
小贴士
机器人的环境是除了机器人本身之外最需要考虑的因素。
3.1.1 创建平面图
地图可以看作一个使用几何形状、图标或颜色表示对象或机器人环境的简单二维规划图或平面图。对于这种类型的简单地图,描绘精确的尺度不是那么重要,但是对象和空间应该有某种类型的相对尺度。
使用直线来划定区域,确定测量系统,确保测量系统与API函数一致。使用箭头和测量值标记面积、对象和机器人足迹的大小。最好使用一个矢量图形编辑器创建地图,我们使用的是Libre Office Draw。对于BR-1,图3-2给出了机器人环境的一个简单的平面规划图。
在图3-2中,指定了感兴趣的对象:机器人、桌子和桌上蛋糕的位置。平面图标记了面积和机器人足迹的大小。左下角标记为(0,0),右上角标记为(300,400),区域大小以cm为单位。对象与BR-1之间的距离也予以标记。虽然该平面图没有用比例尺绘制,但是长度和宽度有一个相对关系。BR-1的足迹长度为50cm,宽度为30cm。
BR-1将要点燃蛋糕上的蜡烛。蛋糕位于400cm×300cm区域的中心。在100cm×100cm桌子上放着直径为30cm的蛋糕。这意味着BR-1机器人的手臂要从桌子边缘伸到X维度中最远一点的蜡烛,应该至少有53cm长。机器人手臂到末端作用器前端的最大扩展为80cm,并且打火机的长度额外增加了一个10cm。这项任务还依赖于以下更多考虑:
图3-2 针对BR-1机器人环境的一个平面规划图
蜡烛的高度
蛋糕的高度
BR-1的手臂接合点至烛芯顶端的长度
机器人的位置
图3-3展示了如何计算点燃蜡烛所需的伸展距离。在这种情况下,它是直角三角形的斜边。三角形的直角边“a”是烛芯顶端至机器人手臂接合点的高度,为76cm;直角边“b”是桌子的半径加上3cm蛋糕中心点至蛋糕上最远蜡烛位置的距离,为53cm。因此,机器人手臂、末端作用器和打火机所需要的到达距离约为93cm。但是,机器人的到达距离仅有90cm,因此BR-1必须向蛋糕倾斜一点,或使用一个再长3cm的打火机点燃烛芯。
图3-3 计算作为一个直角三角形斜边的机器人手臂的长度
注释
确定机器人手臂的位置和所需的扩展远比这个简单的示例复杂,我们将在第9章进行讨论。示例中的重点是,规划图(平面图)如何帮助阐明一些重要的问题,并由此指定你的机器人任务。
3.1.2 机器人的世界
一个机器人实现自主还需要一些关于其环境的细节。考虑一下:如果你去一个什么也不了解的城市旅行,你能把你想要做的事情做得有多好?你不熟悉那里的一切。你需要一个地图或某个人引导你,并告诉你“这里是餐馆”、“这里是博物馆”。自主机器人必须有关于环境的足够信息。机器人掌握的信息越多,可以实现其目标的可能性越大。
注释
机器人的世界是机器人执行其任务的环境,它是机器人有意识的唯一世界。环境外的任何事情都不重要,机器人不会意识到。
环境是动态的,所有的环境都不一样。一个机器人可以部分或完全访问其环境。一个完全可访问的环境意味着环境中所有的对象和情况都是在机器人的传感器范围内,没有对象太高、太低或远离机器人而无法检测或与之交互。机器人具有所有必要的传感器以接收来自环境的输入。如果有一个声音,机器人可以用声传感器来检测它。如果有一盏灯亮着,机器人可以用光传感器来对其进行检测。
部分可访问环境意味着环境中有些情况机器人不能检测到,或有些物体机器人不能检测或与之作用,例如因为缺少定位传感器来检测,或缺少末端作用器来拾起。一个180cm高度的物体超出了一个具有80cm臂展和50cm身高机器人的能力范围。如果要求一旦开始唱歌机器人就准备点燃蜡烛,但它没有声传感器会怎么样?声音是环境的一部分,因此,机器人将不能执行这项任务。所以,当创建了可部分访问环境的平面图时,就考虑了“机器人视角”。例如,对于机器人没有访问的对象,使用某个直观的指示符去与那些机器人可以访问的对象进行区分,使用颜色标记或围绕它画一条虚线。
确定和不确定环境
控制情况怎么样?机器人能控制其环境的每一个方面吗?机器人是控制或操纵其环境中对象的唯一力量吗?这是确定环境和不确定环境之间的区别。
对于一个确定环境,下一个状态完全由当前状态和机器人执行的动作决定。这意味着如果BR-1机器人点燃蜡烛,这些蜡烛将保持发亮直到BR-1将它们吹灭。如果BR-1将盘子从桌子上移走,这些盘子将保持在它们被放置的位置。
对于一个不确定环境,比如生日聚会的场景,BR-1没有吹灭蜡烛。(如果它做了将非常有意思。)聚会的参加者可以移走那些盘子而不只是BR-1。如果BR-1和目的地之间原本没有障碍物,然后一个参加聚会的客人在那放置了一个障碍物会怎样?BR-1如何才能在一个动态的不确定环境中执行其任务?
每个环境类型都有自己的挑战。在一个动态的不确定环境中,需要机器人在尝试做任务之前考虑先前状态和当前状态,然后针对是否可以执行这项任务做出决定。表3-1列出了一些简短描述的环境类型。
表3-1 一些简短描述的环境类型
环境类型 描 述
完全可访问 通过机器人的传感器、执行器和末端作用器,可访问环境的所有方面
部分可访问 机器人无法访问或不能感知一些对象
确定 环境的下一个状态完全由当前状态和机器人执行的动作决定
不确定 环境的下一个状态不完全在机器人的控制之下,对象可能受外部因素或实体影响
3.1.3 RSVP READ设置
环境有许多方面不是规划图或平面图的部分,但是当开发任务指令时,它们在某种程度上应该记录以作参考。例如,颜色、重量、高度、甚至物体的表面类型都是可检测的特性,这些特性可由传感器识别或者影响电动机、末端作用器、环境类型、可识别的外部力量以及它们对物体的作用。
其中,有些特性可以在平面图中表示。但是,一个READ设置可以包含所有的特性。每个环境类型都应该有自己的READ设置。
注释
在机器人的环境里,机器人环境属性描述(Robot Environmental Attribute Description,READ)设置是一个包含机器人将要遇到、控制和与之交互的一系列目标的概念。它也包含可由机器人传感器检测或影响机器人如何与目标交互的目标特性和属性。
例如,颜色是一个由颜色传感器或光传感器识别的可检测特性。物体的重量决定了依靠舵机扭矩的机器人是否可以举起、托住或携带该物体到另一个位置。形状、高度、甚至表面决定了物体是否可以被末端作用器所操纵。
环境的任何特性都是READ设置的一部分,如尺寸、照明和地形。这些特性可以影响传感器和电动机能的工作效果。环境照明,无论阳光、室内光或烛光,都不同程度地影响着颜色传感器和光传感器。一个机器人穿过木地板时不同于其穿过沙砾、泥土或地毯,地面影响了轮子的旋转和距离计算。表3-2是Mindstorms NXT试验台的READ设置。
针对试验台的READ设置描述了工作区,包括它的类型(完全访问和确定)、所有颜色和符号。当执行一个搜寻,比如识别蓝色方块时,它描述了机器人将遇到什么。设置列出了试验台上物理工作区、颜色和符号的属性和数值。
对于一个动态环境,比如生日聚会场景,READ设置可以包含关于可能与对象交互的
外部力量信息。例如,桌子上的盘子和杯子有初始位置,但是社交聚会的客人可能移动他们的盘子和杯子到桌子上的一个新位置。伴随着时间和条件的变化,在READ设置里应标示
出新的位置。一旦聚会结束,BR-1将开始清理工作,每个盘子和杯子的位置应该予以更新。表3-3是BR-1生日聚会的READ设置。
这个READ设置有三个额外列:
力
时间/条件
新数值
力是与对象相互作用的源头,它是在环境中工作的某种非机器人的东西;时间/条件表示何时或在什么条件下力与对象相互作用;新数值是不言自明的。