《机器人编程实战》一一3.1 建立场景地图

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设置有三个额外列:

时间/条件
新数值
力是与对象相互作用的源头,它是在环境中工作的某种非机器人的东西;时间/条件表示何时或在什么条件下力与对象相互作用;新数值是不言自明的。

时间: 2024-10-30 16:40:14

《机器人编程实战》一一3.1 建立场景地图的相关文章

《机器人编程实战》一一1.2 给机器人指令

1.2 给机器人指令 如果我们希望一个机器人在某个场景中扮演某个角色,我们如何告诉它该做什么?我们如何给它指令?机器人编程会回答这些问题,其过程充满了冒险.挑战.奇迹.担忧和可能的遗憾.人类使用自然语言.手势.肢体语言和面部表情沟通:而机器人是机器,只能理解微控制器的机器语言.难点就在于此:我们说话和交流是一种方式,而机器人沟通是另一种方式,我们目前还不知如何创造能够理解人类语言和行为并与人类直接交流的机器人.因此,即使我们拥有一个机器人,它具有传感器.末端作用器以及按照我们要求做事的能力,但我

《机器人编程实战》一一第3章 机器人场景图形规划

第3章 机器人场景图形规划 机器人感受训练课程3:不要命令机器人去执行一个你想象不出它会怎样执行的任务. 正如第2章所描述的,机器人词汇是在一个特定态势或场景下给机器人指派任务的语言.一旦建立了一个词汇,接下来就是列出机器人利用这些词汇去执行任务的指令. 制作你想要机器人去执行的场景和指令的图片或"图形表示",将会是确保机器人恰当执行任务的最佳方式.机器人将要执行指令的图会提示你将它们转换为代码之前先考虑好各个步骤.图形可以帮助你理解这个过程,研究图形可以通过看到待办事项来改善开发,而

《机器人编程实战》一一第3章 机器人场景图形规划

第3章 机器人场景图形规划 机器人感受训练课程3:不要命令机器人去执行一个你想象不出它会怎样执行的任务.正如第2章所描述的,机器人词汇是在一个特定态势或场景下给机器人指派任务的语言.一旦建立了一个词汇,接下来就是列出机器人利用这些词汇去执行任务的指令.制作你想要机器人去执行的场景和指令的图片或"图形表示",将会是确保机器人恰当执行任务的最佳方式.机器人将要执行指令的图会提示你将它们转换为代码之前先考虑好各个步骤.图形可以帮助你理解这个过程,研究图形可以通过看到待办事项来改善开发,而阐明

《机器人编程实战》一一1.1 定义机器人的7个标准

1.1 定义机器人的7个标准 在开始着手于机器人编程任务之前,需要明确是什么让一个机器人能真正被称作机器人.那么,什么时候才能让一个自操作的软件控制装置有资格成为一个机器人呢?在ASC(Advanced Software Construction公司,作者为机器人和软件机器人打造智能引擎的地方),一台机器需要满足以下7个标准: 1.?通过编程,应具备以一种或多种方式感知外部或内部环境的能力. 2.?其行为.动作和控制是执行一组程序指令的结果,并可重复编程. 3.?通过编程,应具备以一种或多种方式

《机器人编程实战》一一2.1 为什么需要更多努力

2.1 为什么需要更多努力 通常需要通过几条机器人指令来实现一条高级或人类语言指令.例如,下面这条简单且单一的人类语言指令:机器人,握着这罐油该指令涉及机器人的几条指令.图2-2显示了基本通用机器人转换器(Basic Universal Robot Translator,BURT)的一个部分转换,分别将这条指令转换为可以传递给机器人的Arduino sketch代码(C语言)和RS Media(来自Wow Wee公司的两足机器人,使用嵌入式Linux的ARM9微控制器)代码(Java语言). 图

《机器人编程实战》一一2.3 自主机器人的ROLL模型

2.3 自主机器人的ROLL模型 你将如何使用它的基本能力来描述机器人?你将如何描述机器人在给定态势或场景中所扮演的角色?设计并实现以上任务,这就是编程自主机器人的全部工作.简言之,要想编程一个机器人,你需要能够描述:做什么何时去做何地去做怎样去做同样重要的是对机器人描述"它"是什么,"何时"或"何地"指的是什么.正如我们所看到的,这就要求几个层级的机器人词汇.按照我们的设想,一个自主机器人的机器人词汇分为7层,我们称之为机器人本体语言层级(Ro

《机器人编程实战》一一2.4 下文预告

2.4 下文预告 本书第1部分专注于编程机器人的能力,如传感器.动作和末端作用器编程.第2部分专注于编程机器人执行特定态势或场景中的角色.记住,你可以在任何语言层级上对一个机器人编程.有时,有些编程工作可能已经提前完成.但是真正在某个场景中成功对自主机器人编程需要一个合适的ROLL模型并逐一实现.在我们更加详细地描述Midamba的机器人和它们的场景之前,我们将在第3章中描述如何进行机器人场景图形规划.

《机器人编程实战》一一2.2 确定动作

2.2 确定动作提出机器人词汇的初始步骤之一是创建能力矩阵,然后基于该矩阵确定机器人可以执行的各种动作.例如,在表2-1示例中,可能列出的动作为:扫描举起捡起前进停止连接断开放下降落向前移动向后移动最后,通过扫描.传送.连接等,我们必须告知机器人我们的意图.我们认为Unit2有潜能能够扫描一罐蓝色的油."蓝色罐装油"在何处符合我们的基本词汇?虽然表2-1说明我们的机器人有颜色传感器,但是能力矩阵里没有任何关于罐装油的东西,这就将我们带入本书的另一个重点:一半的机器人词汇是关于机器人的情

《机器人编程实战》一一第2章 机器人词汇

**第2章机器人词汇**机器人感受训练课程2:机器人的动作只会和描述这些动作的指令一样好.机器人也有语言,它们讲的是微控制器语言.人类讲的是自然语言(如广东话.约鲁巴语.西班牙语).我们使用自然语言相互交流,但是与机器人交流,我们要么建立机器人理解的自然语言,要么以机器人可以处理的语言寻找某种可以表达我们意图的方式.目前,构建可以充分理解自然语言的机器人只取得了一点进展.因此,我们的任务是寻找以自然语言之外的其他语言来表达我们的指令和意图.回忆一下解释器和编译器的角色(先前图1-10所示,这里图