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

1.2 给机器人指令
如果我们希望一个机器人在某个场景中扮演某个角色,我们如何告诉它该做什么?我们如何给它指令?机器人编程会回答这些问题,其过程充满了冒险、挑战、奇迹、担忧和可能的遗憾。人类使用自然语言、手势、肢体语言和面部表情沟通;而机器人是机器,只能理解微控制器的机器语言。难点就在于此:我们说话和交流是一种方式,而机器人沟通是另一种方式,我们目前还不知如何创造能够理解人类语言和行为并与人类直接交流的机器人。因此,即使我们拥有一个机器人,它具有传感器、末端作用器以及按照我们要求做事的能力,但我们该如何与它进行任务交流呢?我们如何给它一组正确的指令集呢?
1.2.1 每个机器人都有一种语言
那么,机器人到底理解什么语言呢?机器人的母语是微控制器语言。不论一个人如何同机器人交流,最终这种交流必须转换为微控制器的语言。微控制器是一个计算机,而大多数计算机使用机器语言。
机器语言
机器语言由0和1组成。因此,从技术上讲,一个机器人真正理解的唯一的语言是字符串和一系列0和1。例如,0000001、1010101、00010010、10101010、11111111
如果你想(或被逼无奈)用机器人的母语对其编写一组指令集,它将由一排排地0和1组成。例如,代码清单1-1是一个简单的ARM机器语言(有时被称为二进制语言)程序。
代码清单1-1 ARM机器语言程序

该程序从处理器的两个内存位置取出数字,加在一起并将结果存储在第三个内存位置。大多数机器人控制器讲这种类似机器语言的语言,如代码清单1-1所示。
0和1的安排和数量根据控制器的不同可能会有所改变,但是所见即所得。纯机器语言很难读懂,很容易把0和1的位置按错,或者在计数时出现错误。
汇编语言
汇编语言是一种更可读的机器语言,通过使用十六进制或八进制,用简短的符号说明和表示二进制。代码清单1-2是代码清单1-1所示操作类型的一个汇编语言示例。
代码清单1-2 代码清单1-1的汇编程序版本

代码清单1-2比代码清单1-1可读性更好,虽然汇编语言程序比机器语言程序更不易出错,微控制器汇编语言仍然有点神秘。从代码清单1-2并不能直观地看出,我们取两个数字X和Y,然后把它们相加并将结果存储于Z。
注释
机器语言有时称为第一代语言,汇编语言有时称为第二代语言。

一般来说,一种计算机语言越接近自然语言,其代数就越高。因此,第三代语言比第二代语言更接近英语,第四代语言又比第三代语言更加接近,以此类推。因此,理想情况下,我们希望使用一种尽可能接近人类语言的语言来指导我们的机器人。不幸的是,一种更高级的语言通常要求更多的硬件资源(比如电路、存储器、处理器能力)并且要求控制器更复杂而缺乏效率。因此,微控制器往往只用第二代指令集。
我们需要一个通用的转换器,可以允许我们以人类语言(比如英语或日语)去书写指令,并且自动转换为机器语言或汇编语言。计算机领域还没有产生这种通用的转换器,但我们已经成功了一半。
1.2.2 迁就机器人的语言
编译器和解释器是将一种语言转换为另一种语言的软件程序。它们允许程序员用高级语言书写一组指令,然后将其转换为下一代的语言。例如,来自代码清单1-2的汇编语言:

可以转为如下指令:

注意在图1-10中,编译器或解释器将高级指令转换成为汇编语言,但是汇编器是将汇编语言转换为机器语言的程序。图1-10也展示了一个工具链概念的简单版本。
在机器人编程中会用到工具链。虽然我们还不能使用自然语言,但是将汇编语言作为编程机器人的唯一选择,我们已经走了很长的路。事实上,如今有很多编程机器人的高级语言,包括图形语言,例如Labview;图形环境,例如Choreograph、傀儡模式(puppet mode),以及第三、第四和第五代编程语言。

图1-11展示了常用的几代机器人编程语言分类。
图形语言有时被称为第五代和第六代编程语言。一部分是因为图形语言允许程序员更加自然地表达想法,而不是从机器的角度来表达你的想法。因此,指导或编程机器人中的挑战之一,可归结为个人表达指令集的方式与微控制器使用指令集的方式之间的差异。
图形化的机器人编程环境和图形语言试图通过允许程序员使用图形和图片编程机器人来解决这个差异。Bioloid Motion Editor和Robosapien RS Media Body Con Editor是这类环境的两个示例,如图1-11所示。
这些类型的环境通过允许图形化操作或设置机器人的动作、传感器的初始值、执行器的初始速度和力量来工作。通过设置数值、移动图形操作杆和图形控件来编程机器人。有时候,在需要传递给机器人信息和数据的软件里,填写窗体是一件简单的事情。图形环境将程序员从机器人编程的实际工作中隔离出来。

图1-11 常用的一些机器人编程语言和图形编程环境的分类
务必记住的是,机器人的微控制器最终读取的是汇编/机器语言。必须要有某人或某个东西来提供本地指令。因此,这些图形环境由内部编译器和解释器负责将图形化的想法转换为低级语言,并最终转换为控制器的机器语言。昂贵的机器人系统具有这些图形环境已经有很长一段时间了,但是这些图形环境现在可以用于低成本机器人了。针对低成本机器人系统,表1-3列出了一些常用的图形环境(语言)。

傀儡模式
与可视化编程机器人概念紧密相关的是直接操纵或傀儡模式的概念。傀儡模式允许程序员利用键盘、鼠标、触摸板、触摸屏或其他定位设备操纵机器人图形,同样也允许通过编程在现实世界中操纵机器人的部件到所需位置。
傀儡模式扮演一个动作记录器的角色。如果想要机器人的头向左转,你可以移动机器人的头部图形到左边,傀儡模式就会记住。如果想要机器人向前移动,你将机器人的部件移动到前方位置,不论该部件是腿、轮子、牵引机构等,傀儡模式都会记住。一旦记录了想要机器人执行的所有动作,然后将该信息发送给机器人(通常使用某种有线或无线连接),机器人在现实世界中会执行记录在傀儡模式中的动作。同样,如果程序员将机器人置于傀儡模式(假定机器人有傀儡模式),则会记录程序员执行的机器人物理操作。一旦程序员取消机器人的傀儡模式,机器人会执行傀儡模式期间记录的动作序列。傀儡模式是一种模仿的编程。机器人记录它是如何被操纵的,记住那些操作,然后重复动作序列。使用傀儡模式可以使程序员无需输入一个指令序列,也使得程序员无须弄明白如何以一种机器人语言表示一个动作序列。机器人系统可视化语言、可视化环境和傀儡模式的实用性将只会增加,它们的复杂性也将随之增加。然而,大多数可视化编程环境有两个致命缺陷。
1.2.3 在可视化编程环境中表示机器人场景
现在回顾一下,有效编程一个自主机器人有一半的工作需要指导该机器人如何在一个场景或态势中扮演其角色。典型地,如表1-3所示,可视化机器人编程环境没有表示机器人态势或场景简单的方法。在一个有潜在、简单对象的泛化空间里,可视化编程环境只包含一个机器人的模拟。例如,在一般的可视化机器人环境中,没有一种简单的方法能用来表示我们的生日聚会场景。在编程一个不必与任何东西互动的动作序列上,可视化/图形化环境和傀儡模式方法是有效的。但是,自主机器人若想有用,就需要影响环境,就需要接受关于环境的指令,图形化环境在这方面存在不足。本书中,我们所进行的机器人编程需要一个更为有效的方法。
1.2.4 Midamba的困境
机器人有机器人语言。机器人可以接受指令去自主执行任务。机器人在态势和环境中接受指令。机器人可以在态势和场景内扮演角色,并在其中产生改变。这是本书的中心主题:指挥机器人在一个特定态势、场景或事件的背景中执行任务。现在来看看我们搁浅的水上摩托骑手——Midamba的不幸困境。
机器人场景1
当我们在引言中的机器人新兵训练营最后看到Midamba时候,他的电动水上摩托电池电量已经比较低了。Midamba有一个备用电池,但这个备件在末端上有酸性腐蚀。他的电量仅能到达附近的一个小岛,在那里他可能会找到帮助。不幸的是,岛上唯一的东西是一个自主机器人完全控制的化学实验设施。这也不是太糟,Midamba设想如果该设施中有一个化学品可以中和电池酸,他就可以清洁他的备用电池,然后上路。设施前面的办公室由几个机器人占据,室内有一些装化学品的容器、烧杯和试管,但他没有办法确定是否有用。办公室与一个存储其他化学品的仓库区隔离,没有明显进入该区域的途径。从机器人运动的仓库区的两个监视器里,Midamba可以看到机器人在运输容器、标记容器、举起物体等。
前面的办公室里也有一台电脑、一个麦克风和一本Cameron Hughes和Tracey Hughes编著的名为《机器人编程实战》的手册。幸运的话,他会在手册里找到一些内容,指导他如何编程一个机器人去寻找和取回他需要的化学品。图1-12和图1-13所示的是Midamba困境的开始。
现在,我们跟随Midamba的例子,他也将贯穿该手册。他翻开的第1章是“机器人词汇”。


时间: 2024-08-31 03:38:57

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

《机器人编程实战》一一3.3 目标和机器人状态图

3.3 目标和机器人状态图 状态图是状态机的一种可视化方式. 注释 状态机是在一个环境中单一机器人或物体的行为模型.状态是当某事发生时机器人或物体所经历的转换. 例如,"状态改变"可以简单看作位置的改变.机器人从它的初始位置走到桌子旁边的位置就是一个机器人的状态改变.另外一个例子是生日蜡烛从未点燃状态到点燃状态的改变.状态机捕捉事件.转换并响应.状态图是这些活动的一个图解.状态图用于捕获目标在场景中的可能态势.正如你在第2章所学到的,一个态势是场景中一个事件的快照.BR-1可能的态势为

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

3.1 建立场景地图 RSVP的第1部分是一个场景地图.地图是将要发生的任务和态势所在环境的符号化表示.场景环境是机器人在其中运行的一个世界.图3-1展示了NXT Mindstorms机器人的经典试验台. 图3-1所示的试验台是Mindstorms机器人套件的一部分.试验台呈长方形,约0.6m宽.0.76m长.试验台上有16种颜色和38个部分重复的数字.试验台上有一系列直线和弧线,还有黄色.蓝色.红色和绿色的正方形以及不同区域其他颜色的形状.这个试验台是机器人的世界或环境,用于NXT Minds

《机器人构建实战》——1.5 机器人组织及竞赛

1.5 机器人组织及竞赛 1.5.1 RoboCup 机器人足球世界杯(Robot World Cup,RoboCup)是一个国际性的研究和教育组织,通过提供一个标准问题来促进人工智能和智能机器人的研究.1992年10月,在日本东京举行的"关于人工智能领域重大挑战的研讨会"上,研究人员对制造和训练机器人进行足球比赛以促进相关领域研究进行了探讨.1996年,RoboCup国际联合会成立,并在日本举行了表演赛,以后每年举办一届. RoboCup选择足球比赛作为基本的领域,所以RoboCup

《机器人构建实战》——1.3 机器人系统的组成

1.3 机器人系统的组成 不同学科由于研究的侧重点不一样,对机器人的组成也有不同的理解与层次划分.不同的定义也会造成机器人的组成划分不一致.实际上,大部分的机器人系统组成部分或多或少都会存在重叠,并非没有共性. 本书认为一个较为完整的机器人系统由3部分.6个子系统组成,如图1.3所示.这3部分是感知部分.执行部分和控制部分:6个子系统分别是信息检测系统.信息融合系统.驱动系统.机械系统.人机交互系统.决策系统. 1.3.1 控制部分 控制部分的重要性如同人的大脑,人类如果丧失了脑的思考能力,则变