针对移动机器人的多层次鲁棒控制系统
RONDEY A.BROOKS, member, IEEE
[摘要]——介绍的是一种控制移动机器人新的体系结构。层次控制系统的建立是为了使机器人运行在不断提升的能力层次上。层次系统构成了通过低层次窄带通讯沟通的不同模块。每个模块都是一个相当简单的计算单元的实例。高等级的层次可以通过抑制输出来包容较低等级的任务。但是,当高等级层次添加的时候,低等级层次继续保持运行。结果形成了一个具有鲁棒性的、柔性化的机器人控制系统。这套系统已经应用在控制一个移动机器人在不受限制的实验室区域和电脑室的来回巡游。最终打算将它用于控制一个在我们实验室的办公区域巡游的机器人,同时运用随身携带的设备建立它周围环境的地图以完成简单的任务。
I. 绪论
一套应用于自主程度相当高的机器人的控制系统必须能够处理在执行实时任务过程中众多复杂的信息。它要运行在一个边界条件(在经典控制理论的公式中需要留意瞬时控制问题)快速变化的环境中。实际上由于没有直接的在传感器(比如摄像头)和已形成的必要边界条件间标定,这些边界条件的判断是通过非常繁杂的通道所完成的。
通常构建这类机器人的控制系统的方法是将问题分解(粗略的)成一系列具有一定功能的单元,就像图表中被一系列竖形条纹分隔的方法。在分析对于一个移动机器人所需的计算要求后,我们就得决定使用完成任务的行为,就像我们主分解问题的行为。在Fig.2.图表中一系列水平线条纹所表示。在有了功能性的分解,我们执行每个部分将更明确,然后连接它们组成一套机器人控制的系统。我们新的分解方式将导致产生一种本质上有不同分别的移动机器人控制系统,同时在硬件层面上产生本质上的不同,以及在鲁棒性、易测性等方面的巨大优势。
我们可以把一个有众多要求的控制系统看作是具有智能的自主移动机器人。这些要求每个施加约束在我们所使用的可能的控制系统中,它们像如下被定义。多重目标:通常机器人会有多重目标试图去实现,有些甚至是相互矛盾的。它可能在避障过程中到达一个在它前方合适的地点。它可能为保存一定的后备能量而在最短的时间到达一个合适的地点。通常,相互关联的重要目标是种前后依赖的关系。当认为火车本身远比检查脱轨部分的最后十个枕轨重要时,就会发生脱轨。控制系统在维持必要的低层次目标,同时必须对高优先级的目标做出响应(举例,像火车脱轨的例子一样,维持机器人的平衡也就是不让它倾翻是同样重要)
多种传感器:机器人最有可能有多种传感器(举例,摄像头,在轮子和移动机械的编码器,红外线探测器,惯性导航系统,超声波测距仪,红外测距仪,连接全球卫星定位卫星的系统等等)。所有的传感器在读取过程中都有误差成分,此外,通常不能直接从传感器读值中,直接分析标定出所需要的物理量的数值。有些传感器在测量物理量的数值时会不断更替读数。它们给出不一致的读数的原因有时是由于普通传感器的误差,有时是由于这种传感器所在的测量环境(和后续处理)超出它自身的适应范围。通常也没有对这种适应范围的分析描述(举例,在什么程度的精确条件下Sobel操作员能回到正确的范围?)机器人必须在这些条件下做出判断。
鲁棒性:机器人应当具有鲁棒性。当一部分传感器失效,它应该能适应并依赖其余可以运行的传感器处理。当环境快速变化时,相比在原地震动、无目的的巡游或是无判断的旋转,它应该能完成一部分正确的行为。理想情况下即使它的处理器出现错误,它也应该继续运行。
扩展性:当更多的传感器和执行器添加到机器人上,它需要更多的运行能量;换而言之,随着时间的流逝,机器人原本的实际能力将被削弱。
多重任务:Elfes和Talukdar为Moravec的机器人设计了一种控制语言,试图融合多重任务。它主要通过使使用者明确的为并行任务编码,并且针对不确定条件中的似是而非情形为专门的管理者编制一条另外的通道来实现这个目的。
多种传感器:Flynn通过充足的典型例子透彻地研究了多种传感器的使用方式(引文:声纳有大范围探测角度但又在一定深度有相当精度,相比红外虽然在角度分析非常精确但在深度测量却相当糟糕)。她的系统具有如果一种传感器失效其他传感器继续传送对于更高等级处理过程有用的数据的功能。Giralt以及其他人使用激光测距仪来检测,声纳传感器用来监测周围障碍,以及红外发射器来校准。这种机器人在一种当一类传感器已在一定时间内使用,其它的被完全忽略,即便它们有相似的功能的模式下运行。在实际的自然环境中,多种冗余传感器同时使用是很多的。举例来说据报道鸽子拥有超过四套的相互独立的方向传感系统(举例,太阳位置与自身内部生物钟相比较)。多种传感器不像是相互组合的,而是由环境条件和传感器子系统运行等级所决定,从一种传感器传出的数据占主导作用,这是一种有趣的现象。
鲁棒性:上面的工作试图根据传感器的实用性来提高系统的鲁棒性,但是对行为或是机器人处理器的鲁棒性影响甚微。
扩展性:有三种途径可以实现这一目标,而不需要完全重新构建控制系统本身。1)以前浪费掉的剩余处理器能量可以被利用,显然这是有限的能量。2)处理器可以升级到架构一致但运算速度更快的系统。原本的软件可以继续运行,但是多出计算能力要被再利用,我们可以像第一条中那样处理。3)可以添加更多的处理器以负担新的载荷。传统系统构建者会陷入到如何使所有的存储器均一地受所有处理器控制的细节问题上。通常存储器相对于处理器硬件系统的花费很快就占居系统的主要花费(衡量花费多少不是很重要——它只是资金的问题,硅的面积,导致延时,或是其他什么的)。结果在可以增加的处理器数量方面通常有一个相对明确的最大上界(与成百个传统处理单元相似)
C.初始假设
我们对移动机器人设计结果是建立在以下九条基本原则(其中六条原则已经在[2]阐述的更充分)
1)复杂的(和有实际作用)行为需要的不是作为一个具有极端复杂的控制系统的产品,或是
复杂的行为只是对复杂环境的简单反应的结果。它应该是一个把复杂性归结成有机整体的观察者,不需要它的设计者参与到其中。
2)设计应当简单。这有两个方面的应用。a)当建立的系统有很多组件时,应该留意之间的连接。如果你注意到一个在复杂系统中特别的连接开始与它有关的部分发生冲突,要么这个连接需要重新考虑,要么系统的分解过程序要重新做过。b)如果一个特殊组件或者组件集合包含不稳定或错误条件的问题,或者更极端,如果它的设计包含有不稳定或错误条件的问题方案,那么从系统的鲁棒性观点它就不是一个好的方案。
3) 我们想制造廉价的机器人,它可以在没有人的干涉、建议或控制在人类居住的环境中巡游,同时还能完成有价值的工作。当理想状态的环境蓝图是实现的,地图标定的绘制是至关重要。
4)人类的世界是三维的;它不仅是二维平面地图。如果机器人被承认可以持续与人类共同生活,它必须建立三维的世界模型。
5)完全同等的多个系统对于一个机器人是累积误差的来源。彼此相关联的地图对于移动机器人更有价值。这一点将改变设计作为感知系统的部分。
6)移动机器人将完成有用工作的环境并非已经构建好的、精确的简单多面体。虽然多面体也是代表现实世界一个有用的模型,但是在所建立的特殊世界中的模型如此精确是错误的。由于这个原因我们应该为机器人建立没有人工修饰的真实环境。
7)声纳数据,虽然易于整理收集,但是不能通过其自身导出对实感智能交互非常有用的环境丰富描述。视觉数据对于这个目的就要更好。声纳数据对于低层次的交互作用,像实时避障,很有用处。
8)出于鲁棒性的原因,当一个或多个传感器失效或者赋予错误的初值时,机器人仍能完成任务。必须快速恢复。这意味着内置自我校准功能一直起作用。即使它能很好的完成我们的目标,那它也必须足以排出对于外部校准措施的需要。为了强调这点我们不会为机器人融合任何外部校准措施。相比我们更愿意通过自校准方式处理。
9)我们很想制造人造生物——机器人应该在没有人支持的情况下,在动态复杂环境中能存活几天、几个星期或是几个月。这样的机器人应该是自主控制的。
Ⅱ.等级和层次
有许多途径构建一个自主智能移动机器人。就像大多数工程问题一样,它们都是开始把问题分解为很多小部分,解决每个部分种子系统的问题,然后组成解决最终方案。我们认为只要这三步的第一步于其他的不同,自然其余的步骤也不相同。
A. 能力等级
移动机器人构建者有代表性的将问题划分一些子集包括:
l 感知
l 对周围环境描述的标定传感器
l 计划
l 任务完成
l 电机控制
这种分解可以被看作是将问题水平分解成竖式的片断。这些片断组成链条,通过信息流从机器人的环境,经过传感,通过机器人在返回环境中,通过执行,闭环反馈环节(当然大多数子问题执行还包括内部的反馈)。必须要求所有的部件都完成才能驱动机器人。随后改变一个特殊部件(或是改进或扩展功能)必须按照不仅相邻部件连接不能改变,而且变化的影响也可以传播到相邻部件,改变它们的功能。
因为我们最主要的方法就是分解问题,所以我们只能选择替代将问题垂直分解方法。比起建立在内部方案的工作方式的基础上分解问题,我们更倾向建立在机器人控制系统的所需要的外部运动基础上的分解问题。最终,我们对于一个自主移动机器人定义很多的能力等级。一个等级的能力是针对机器人在它所遇到所有环境中所需要典型行为的非正式的描述,。更高等级的能力意味着完成更多明确的行为。我们应该使用以下的能力等级(一个早期版本已经在[1]中介绍)作为我们工作中的指导。
0) 避免与物体接触(无论物体是在运动或静止)。
1) 漫无目的的巡游过程避免碰撞。
2) 在到达和启动前,距离一定距离观察所要 “探索”的环境。
3) 建立环境的地图,并且计划从一地到另一地的路径。
4) 要注意相对稳定的环境中的变化。
5) 要合理推论在环境中明确的物体和与完成任务相关的物体。
6) 阐述和执行包括以令人满意的方法改变静态环境的计划。
7) 合理推论环境中物体的行为,并以此修改方案。
注意到每个等级的能力包含了其前一个等级作为子集。因此一个等级能力定义的是一类正确的行为,显而易见更高等级的能力提供了更多额外的约束。
B. 层次控制
能力等级概念的关键是我们要建立与每个等级能力相适应的控制系统的层次,之后可以方便的像一套已存在的体系添加新的层,作为所有能力中更高一阶的等级。
我们建立一套完整的机器人控制系统是由实现0层能力开始。它被调试通过。我们不会改变系统。我们称它为第0级别控制系统。下一步我们建立另一个可以被称作第1级别控制层的层。它能检查来自第0级别系统的数据,也允许将数据送入与第0等级内部接口以抑制正常的数据流。这一层,在第0等级的辅助下,实现第1等级的能力。第0层始终保持正常运行,而在它之上的层次有时干扰它的数据通路。
重复相同的步骤以构建更高等级的能力。我们称这种体系结构为包容式结构。
在这样的方案中,我们在问题还是部分时很早就可以有一个工作的控制系统——只要我们建立第一层。另外的层次可以稍后添加,而且最初运行的系统不需要被改变。
我们强调这种自然的使它解决移动机器人的问题的体系,在IA部分中描述。
多重目标:分别独立的层可以同时为不同的目标工作。抑制机制仲裁应采取的动作。这有个优势就是不需要在初期就决定哪个目标应该继续实现。继续使它们到达一定水平能够的结果可以用来作为最终的决定。
多种传感器:在这一部分通过使用包容式结构我们可以忽略像之前遇到的传感器融合问题。并不是所有的传感器需要给主要行为反馈。事实上,所有传感器确定的数据不需要反馈给主要行为——只有那些感知处理识别极端可靠的传感信号才符合进入这样的主要行为。同时无论传感器值是否已经被机器人使用,其他层也可以以其他形式处理它,并且使用处理结果实现它们的目标,而这些只取决于其他层利用传感器值的方式。
鲁棒性:当传感器的结果可以被合理使用,多种传感器会增加系统的鲁棒性。还有一种增加鲁棒性的方法就是包容式结构。当高等级加入时,已经调试好的较低等级仍然保持运行。虽然高等级能通过代替数据积极干扰的方法抑制输出,在一些情况下,当它在勉强的情况下不能够产生结果,低等级仍然可以产生正确的结果——虽然只是针对较低等级能力。
扩展性:一个显而易见的提高扩展性的方法就是每个新层使用相应的处理器。我们可以看到这是可实现的,在层与层间通信通道使用相互平行的低窄带。另外,我们可以发现各自独立的层可以轻易覆盖相互松散连接的处理器。
C. 层的构建
如何构建每个独立的层?我们需要将单个的层按照传统的方法分解吗?在一定范围是正确的,但是关键的区别是我们不需要在一次分解中就要考虑所有的感知、处理和产生行为。我们可以自由的针对不同的传感器配置和任务设置使用不同的分解方法。我们已经选择通过一套可以相互通信的小型处理器来构建层。每一个处理器是一个有限的处理机构,可以拥有一些数据结构。处理器传输信息通过“缆线”。不需要任何无关紧要的交流。处理器都是异步运行的,监测他们的输入线缆和通过输出线缆输出信息。有可能出现信息丢失——这也是经常发生的。在处理器之间没有其他的联系,特别是没有共享内存。
所有的处理器(我们所提到的是作为模块)在同一层是相互平等的关系,没有处于中央控制的。每个模块只是尽它可能做好自己的,模块的输入可能够被抑制,输出可能被其他处理器的覆盖。这就是高等级层次包容低等级层次的机制。
机器人控制系统的系统语言
有两个方面组成了我们层次控制结构体系,一个方面模块内部的架构,第二个它们之间的通信。在这个部分我们将扩充模块的语义学的细节,并且说明描述他们的代码。
A. 有限状态机构
每个模块都是有限状态机构,通过实例变量扩展。实例变量实际保持了Lisp语言的数据结构。
每个模块都有很多的输入输出线,输入线有独立的缓存。系统总是检查最新的信息并被使用。如果上一个信息检查前又有新的信息传入,那么就会有信息丢失。对于每个模块有相互区分的输入成为重置。每个状态被命名。当系统开始运行,所有的模块开始进入不同的状态称为归零。当系统复位线上有信号输入时,模块就转到归零状态。一种状态可以被定义以下四种类型之一。
输出 一种输出信息发送到输出线路,由模块的输入缓存和实例变量计算决定。输出后新的指定状态重新进入。
辅助作用 由模块输入缓存和变量计算决定,模块的实例变量中的一个被赋予新值。输出后新的指定状态重新进入。
条件分配 以模块的实例变量和输入缓存为基础进行计算并且依赖于后来输入的两个状态中的一个的结果。
事件分配 次序排列的成对的条件和状态包括分支一直被监控,知道其中的一个时间为真值。事件是输入线的信息和足够的时间延时所组成的联合体。
使用我们规定的语言定义的一个模块的例子,在Listing 1是一个避障模块。
这里的,select-direction,significant-force-p和follow-force是Lisp函数,然而本质是现代Lisp专用任务的形式。
动力输入线输入一个带有幅值和方向力,是对声纳搜集的每个点的处理,随着距离的增加排斥力逐渐衰弱。方向选择函数获得这个并把它与视作原动力相结合。它通过累加在机器人上的力来选择瞬时行动方向。(简单的方法计算最小出现路径的切线)
significant-force-p函数负责检查动力输出的结果是否像它开始设定的一样,运动结果是否比要求小。快速运动将忽视这样的运动。follow-force函数是将需要的方向和驱动力的幅值转化为电机的电压信号。
这个典型的模块式一级控制系统的一部分,这个在Ⅳ-B部分已经叙述过。它实质是本地导航,通过从一定距离确定障碍是否可以避绕。它没有引导机器人到达一个预计的地点——这就是第二等级的能力。
B. 通讯
Fig. 4表明有限状态模块为了实现通讯的目的的最好方法。它们有一些输入线和输出线。从一个模块引出的输出线与其他一个或者更多的模块的输入线相连接。可以认为这些就是由线缆构成,有起始端也有目的端。另外,输出可以隐藏,输入可以被抑制。
在一个模块的输出端口,特定的线缆可以被停止使用(前提它接有目的端)。如果任何信号通过这条线缆传输,在预先特定时段所传输的信息将被抑制隐藏。任何这段时间通过这个输出口输出的模块信息将会丢失。与其类似,在一个模块的输入端口,特定的线缆可以被停止使用。它的行为和输出的情况很相似,但是,另外,这条线缆的信号,除了被抑制的信号外,实际上还包括在输入模块过程中的反馈。因此它抑制输入信号并且提供代替。如果同时多于一条被抑制线缆他们实际是“或”的关系。针对抑制和阻止,我们在循环中编写时间常数来控制。
在我们规定语言中,我们把线缆视作一个来源端(输出线)伴随着很多的目的端(输入线)。例如连接避障模块的动力输入时,线缆应该这样定义:
(defwire 1 (feelforce force) (avoid force))
这个将在同一等级控制系统中连接力反馈模块的驱动力输出到避障模块的输入。
抑制和阻止也能被描述成上面的语法的小部分扩展。下面我们看到是抑制命令输入到转换模块,信号从1等级模块到0等级模块。
(defwire 1 (avoid command) ((suppress (turn command) 20.0))).
用相似的方法,信号可以与模块的重置输入端相连接。
机器人控制系统实例
我们将要实现一个移动机器人控制系统以完成上文中定义的1、0等级功能设计,并且通过将第2等级置于一个基本实现包容思想的平台,开始实现其功能。为了实现第2等级,我们需要在早期视觉算法做更多的工作。
A. 第0等级
最低等级的控制是为确保机器人不会与其他物体相接触。它因此作为第0等级(Fig.5)。如果有物体接近机器人它将移动避开。如果在自身移动过程中,它将要与物体发生冲撞,它会停止。综合这两条策略,对于机器人来说就足以躲避移动的障碍,如果不是与静止障碍物发生冲突也许需要很多的动作来完成。这些策略相结合可以使机器人在精度不高的声纳传感器和较大范围阻力情况下运行。理论上讲,机器人不是无所不能的,一个移动十分快速的物体或是非常混乱的环境可能就会造成冲撞。在经历过数小时的自主运行,我们的机器人设备没有碰到任何移动或固定的障碍。然而移动的障碍物很小心的慢速移动。
转向和前进模块与实际的机器人通信。它们有额外的通信机制,可以使它们同机器人本体直接发送和接收命令。旋转模块接收预先指定的在适当的位置旋转一定角度命令,接着是指定幅值的前进运动。它命令机器人旋转(同时发送复杂的信息,通过Fig7中描述的额外输出通道)同时完成传递预先命令到前进模块(也记录了轴编码器的读值,通过另一条输出线)。旋转模块然后进入到等待状态,忽略任何输入信息。前进模块命令机器人前进,但是只要在运动过程中接收到从停止输入线传输的命令,就立刻停止。只要机器人空转,它就发送出轴编码器的读数。这个信息就作为转向模块的重置信息,然后转向模块再一次激活准备接受运动命令。需要注意的是这个过程中任何预设命令发送给旋转模块都会丢失。
声纳模块接受声纳的矢量读数,将它们从混乱的信号中过滤出来,可以有效地绘制机器人为中心的关于障碍物的极坐标地图。碰撞模块检测声纳地图,如果它发现前方有障碍,它就会通过停止线路给电机模块发送信号。
碰撞模块不知道也不关心机器人是否在运行。当机器人本来就处于静止状态停止信息就会丢失。
感知模块统计每个探测到的障碍物,把它们视作排斥力,最后统一出唯一个排斥力。
逃离模块监测由声纳检测的障碍物形成的“排斥力”,如果这个“力”变得需要引起注意,就发送命令给旋转模块。Fig 5显示了这些模块如何连接在一起。
B. 第1等级
第1等级控制层,当和第0层结合时,就可完全使机器人可以随意巡游而不会碰到障碍。这一点在之前的第1等级任务中就有定义。这一控制等级很大程度上要依赖于第0等级避障的效果。另外它会有计划的先进行一些简单的探索以避免潜在的障碍,而这些障碍是需要第0层处理的。
巡游模式每隔十秒或是其他时间给机器人产生一个新的方向。
避障模块(已经在第三部分有详细的说明)从第0等级获得排斥力的计算结果,结合预期方向产生一个改进的方向,这个方向只是大致指向正确的方向,但是不能肯定避免明显的障碍物。这种计算其实包容了逃离模块的计算,在逃离模块也有一个方向需要考虑。事实上当进入电机模块时,避障模块的输出抑制了逃离模块的输出。
Fig 6给出了一个完整的关于模块连接的描述。注意它只是在Fig 5的基础上简单的添加更多模块和线缆。
C. 第2等级
第2等级是给机器人增加探索模式行为,通过使用视觉观测选择最感兴趣的地方去访问。视觉模块可以发现走廊是空的。附加的模块提供了一种位置伺服检测方法,不管是否有障碍物(可以用声纳系统检测)在机器人的前进通道上,始终使它沿走廊运行。线路布局在Fig 7中表示出。值得注意的是它是在Fig 6的基础上添加更多的模块和线缆。
状态模块监测旋转和前进模块。它始终保持一种状态输出,输出hi或者lo来显示机器人是否忙碌。另外,在完成每次旋转和滚动前进,它传送出编码器的整合信息。
时态模块检测来自状态模块的繁忙线路,一旦机器人处于闲置状态持续一段时间,它将根据它的时间判断寻找走廊。它抑制巡游情况,在没有离开当前位置巡游时这样能够采集一部分视频并进行处理,重置路径规划和积分模块。后者的行为可以保证机器人知道自己离观察点已走得多远距离,是否应该发出逃离脉冲。
视觉模块负责视频处理过程和等待候选图像高速通道。它过滤出质量差的候选,让任何可以接受的到达路径规划模块。
三维模块负责处理由机器人获得的三维影象图片,发现走廊的空余空间。在最后设计版本完成前这个模块一直没有实现。作为代替,无论是仿真还是实物机器人,我们一直使用声纳传感器来代替。
积分模块累计来自状态模块的运动报告,总是通过它的积分路线传送最新结果。由提供给它的重置信号它重新计数。
路径规划模块掌握确定的目标(需要旋转的角度,需要前进的距离)并尽力实现目标。为了达到这点,它发送预先命令给避障模块,这使它避开附近的障碍,监测它的实际运动集合的积分输入。只要更高等级的计划者保持运作,传输给避障模块的信息抑制了自由巡游。当机器人的位置靠近所希望的位置停止(由于轮子的滑动,机器人无法控制误差,所以采用行为推测法来决定)。
.执行
以上所介绍的控制系统充分的在仿真机器人和实物机器人上得到应用,实物机器人还可以在实验室和加工车间混乱的环境中自主巡游。
A. 仿真机器人
仿真的过程是为了模拟现实环境中机器人存在的误差和不稳定性。当发出旋转一个α角度前进一个d距离命令,仿真机器人实际转过了α + δα角度和前进了d + δd距离。它的声纳传感器可以分时多次探测墙壁的位置,即使它们返回信号,但由于模型的自身发热和潮湿空气作用会夹杂很多噪声成分。我们感到必须要有实际环境中的仿真,任何条件的缺少都会导致错误的控制算法。
仿真机像现实中机器人按照一定时钟和一定速率运行。它实际是在与模拟包容式结构的相同处理器中运行的。集合在一起,它们也不过只能实现一个实时仿真机器人、它的控制、机器人驱动状态方式和模块性能检测。Fig 8显示机器人在接收它的12支声纳传感器中一部分的返回信号。其他的信号不能在允许信号采集时间段内返回。信号被各种各样的墙壁反射。在垂直于机器人前进方向前方有个小栅栏。
Fig 9 显示的是一个二维世界的例子。仿真机器人与第1等级控制系统相连接,可以实现从起始位置出发的巡游行为。曲折的轨迹线描绘出它的路径。请注意它是在无目的的巡游而且不会碰到任何障碍)
Fig 10 显示是在同一场境中的两个例子,机器人的行为由第2等级控制系统决定。在这些例子中,三维视觉模块被特定环境模块代替,后者给出两幅精确的走廊环境信息。当完成这些沿走廊行走的目标,低等级巡游行为将会被抑制。然而,低等级的避障行为仍然作用——在两个例子中机器人都能躲避方形障碍物。目标并非精确达到。模拟器模拟在旋转和前进运动中的误差是均匀分布在±5%范围内。只要目标被比较满意的实现,机器人就恢复巡游行为。
B.实物机器人
我们已经建立如Fig 11所示的移动机器人。它的直径大约有17英寸,从地面到平台顶部有30英寸高。大部分程序在Lisp环境已经调试。
从与萨德伯里交接的真世界商店购买的驱动机构,由三个平行的驱动轮由舵机连接在一起。两个电机由一个微处理器伺服控制。机器人的躯体建立在舵轮机构的基础上,总是和轮子的指向相同。它能在任和地方转向(实际上它的最小转弯半径是1cm)
通常安装声纳传感器是由一周十二个遮光板固定的,同步发射声纳传感器和两个Sony的CCD摄像头。这些声纳传感器围绕机器人的身体均匀的分布。摄像头在顶部倾斜放置。我们计划安装触角,以用来探测底部周围6英寸范围内的水平障碍物。
一个中央卡槽包含主要的便携处理器,一块Intel 8031处理器。它与板外处理器通过12 Kbit/s速率的双向无线电波联系通信。无线发射接受单元是Motorola数字通信模块改进而成的。错误修正使传输速率降低到不足正常的一半。8031将命令传送给电机控制芯片,并返回编码器读数。它控制声纳传感器,并且通过独立的视频传送通道控制安装在机器人顶部的摄像机。
机器人花费一些时间在实验室和车间巡游。在0等级控制下,当机器人发现一个很大的空余空间就会停滞下来,直到移动的障碍接近它。两个人加一起就可以成功把它驱赶到任何地方——通过门或者磁盘存储器之间等等。
当第1等级添加到机器人上,它就不再停留在空地上。过一段时间它就会在随机方向停止下来。我们未经校准的声纳传感器和障碍物的排斥机制使它在确定逃离模块的反应时有些过度。它可能更适应于确定参量。
在第2等级条件下,基于声纳的走廊探测设备经常会房间中最远的点。机器人就指向它。人在机器人面前经过会使它避绕,但是机器人会始终朝向最初的目标,即使它在非常近的障碍物间受挤压碰撞。如果声纳传感器发生错误,目标的选择超过墙壁,机器人经常会停止在墙壁的排斥力超过目标的吸引力的位置。在这一点,避障不会发出任何指令,它会使机器人有细微的运动。机器人仍然会被障碍物阻拦停止。然而Whenlook模块会注意到机器人处于停滞状态,并重新开始扫描另一段走廊的空余空间。
VI.结论
这篇论的中心思想如下:
1) 移动机器人的控制问题依据行为分解方法优于依据功能组建分解;
2) 它提供了一种增加构建和测试复杂移动机器人控制系统的方法;
3) 有效的并行计算过程可以在非同步简易处理器连接成的低带宽、疏松网络基础上实现。这种网络的拓扑结构是相对确定的。
4) 对于移动机器人并不需要中央控制模块。控制系统可以被视作众多独立运行的子系统的代表。
除了导致不同的执行策略,有种很有趣的现象是:分解方式的不同将会影响我们建立的机器人控制系统的实际效能。特别是我们的控制系统在处理周围环境中低速运动的障碍物时,它具有专门的模块(逃离模块)针对这个目的。通常移动机器人工程实物在处理环境中的移动障碍物时的延时这个工程在理论分析中结果。
致谢
Tomas Lozano-Pkrez, Eric Grimson, Jon Connell, 和Anita Flynn都对本篇论文有重要贡献和帮助。