英语原文共 10 页,剩余内容已隐藏,支付完成后下载完整资料
自主控制对于许多机器人来说,但有必要确保这些系统及时响应。意外的延迟可能会对自主系统的操作质量产生负面影响,进而影响现实世界中的生命和财产。机器人检测和处理外部事件的能力对于提供安全可靠的操作至关重要。本文提出了一个基于行为的系统的并发版本,称为实时统一行为框架,它建立了基于行为控制的响应基础,不将系统开发人员绑定到任何单一的行为层次。框架的并发设计基于现代软件工程原则,只指定组件的功能接口,将实现细节留给开发人员。此外,个体行为由实时调度器执行,保证了对自治系统安全运行至关重要的例程的响应性。实验结果表明,该方法能够提供可预测的时间操作,独立于高级计算负载的波动。以行为为基础的系统构成。
自主系统在现实世界中的运行有一个内在的要求,即既健壮又能对环境中的突然和不可预测的变化作出响应。通常,基于反应性行为的常规任务是维护系统的安全运行。正如YARA (Caselli et al. 2005)所证明的那样,这些低层次程序周期性运行的能力对机器人操作的安全性和可靠性至关重要。在响应速度以毫秒为单位的应用程序中,让某些进程比其他进程“更重要”的需求正变得越来越普遍。本文扩展了基于行为的系统的概念(Arkin 1998),将层次结构中行为逻辑的顺序执行转移到一个多线程域,该域支持在独立的间隔内周期性地执行单个行为组件。
机器人系统试图在动态变化的环境中平衡思考和响应的能力,这面临一个难题,因为频繁执行的简单过程与运行时间相对较长的计算密集型规划和优化算法交织在一起期。这种情况会引入不可预测的延迟,高优先级控制例程被迫等待,直到低优先级计划元素产生或被操作系统抢占。理想情况下,在低级别控制例程的周期性执行之间执行商议过程。此外,可用于这些高级处理的计算时间会随着环境的变化而波动。在混沌环境中,系统可以完全在被动控制下运行,以维持一个安全运行包络线。在较安静的环境中,反应控制需要较少的频率,允许在剩余处理器时间内执行的审慎计算。问题的根源在于,现代操作系统使用的调度器不能保证优先级最高的进程将是正在运行的进程,只能保证优先级最高的进程将随后运行。
当自治系统或环境高度动态时,高优先级反应控制器所经历的延迟可能会造成有害的问题(Albus 2000;Newman 2007),或者当处理能力有限时(Kurdila等人2004;Dong et al. 2007)。当需要自治系统的响应性时,一种解决方案是增加更多的cpu来提高计算能力,这反过来又减少了延迟(Quigley et al. 2007)。这当然增加了系统的尺寸、重量和功率要求。本文介绍的方法。在无法使用更多cpu的情况下,例如在嵌入式系统中,由于cpu的大小、重量和功率限制,可以使用这种解决方案。
本文提出了实时统一行为框架(RT-UBF),该框架支持在实时域内执行响应式控制元素的能力。这种方法允许将系统的行为安排为可以抢占高级进程执行的实时任务。RT-UBF在Pioneer r2 - at8机器人上使用RTAI (Mantegazza et al. 2000)在一个运行三层机器人控制架构的标准Linux (Shuttleworth 2006)安装上实现。对比实时和非实时执行延迟的结果表明,实时控制元素能够维持一个稳定的反应控制基础,对时间关键任务的响应是确定性的,而不管系统的计算负载。因此,单个行为的执行更加可靠,因为实时调度程序确保每个行为以精确的周期方式运行。
下一节讨论实时调度方法如何满足系统的需求。并介绍了以往基于实时行为的系统,RT-UBF的设计正是基于这些系统。
基于行为的控制器的响应性很大程度上依赖于控制器组件的确定性调度。为了满足这些时间临界阈值,存在多个实时补丁和扩展,并且存在多个机器人系统,它们使用各种实时能力。
为了保持计算机的响应性,现代操作系统使用并发性来呈现多个任务同时处理。并发性通过给每个线程一个时间片来模拟并行性,在此时间片中,线程可以在被抢占或被迫让位给下一个准备运行的进程之前执行任务。这种方法试图最大化“平均”性能(Yodaiken和Barabanov 1997),并提供多任务处理的外观。在某些情况下,由于调度算法不能保证进程何时运行,或者优先级最高的任务总是处于活动状态,因此整体性能可能会很差(Wellings 2004)。
由于线程在共享内存空间中操作,因此需要在关键节点上进行同步。如果没有正确实现,并发程序可能会引入顺序程序中不存在的新问题,例如死锁、干扰和饥饿(威灵斯2004)。
目前,现代操作系统和编程语言允许同步中断线程。这种方法简化了控制和同步需求,但本质上很弱,因为它不能保证中断的线程会在已知的时间内屈服。
实时系统用于控制关键系统,在这种情况下,对现实世界中的事件做出的不及时响应要么太晚,要么不正确,从而危及公众、人员或系统本身的安全(Wellings 2004)。如果一个操作的正确性不仅取决于它的逻辑正确性,而且还取决于它被执行的时间,那么这个系统就是实时的。这样的系统提供了控制设施,使程序员能够指定执行操作的时间或完成操作的时间,以及在无法满足时间要求时响应或动态重新安排任务的能力。区分硬实时系统和软实时系统也很常见。硬实时系统通常有严格的时间表,进程必须完成它们的任务,否则会丧失系统的完整性。这种方法通常作为嵌入式系统实现,并保证响应时间小于规定的最大延迟。能够容忍某些延迟的方法被称为软实时,通常是响应的,但不能断言它们的最大延迟。在软实时系统中,违反时间约束会导致质量下降,但不一定会导致故障状态。
POSIX-1003.1b实时扩展(IEEE 1996)的出现导致了两项努力,将Linux开发成通用的实时操作系统,RTLinux (Yodaiken和Barabanov 1997)和RTAI(实时应用程序接口)(Yaghmour 2001)。
RTLinux使用一种称为抢占改进的方法来缩短中断服务延迟级别支持实时应用程序(Barabanov 1997)。在抢占改进方法中,修改Linux内核以减少非抢占代码的长度,以最小化中断处理例程或系统中的实时任务调度(Barabanov和Yodaiken 1997)。
使用抢占改进方法会产生几个缺点。首先,任何最大延迟的保证实际上是不可验证的。尽管内核通常具有更强的抢占性,但除非检查内核中所有可能的代码路径,否则这种保证是有限的。另一个限制是未来的维护很困难。抢占改进方法需要在整个Linux内核中进行大量修改,这带来了引入新bug的风险,并使其无法被主要的Linux社区(Bird 2000)支持。
实时应用程序接口(RTAI),与RTLinux相反,使用一种称为中断抽象的方法来减少实时应用程序的中断延迟。RTAI没有对内核进行增量更改以提高其抢占性,而是使用ADEOS硬件抽象层创建了一个实时纳米内核,它比Linux内核具有更高的优先级(Sarolahti 2001)。Linux内核作为RTAI的空闲进程运行,只有在没有实时任务需要运行时才运行,并且当需要运行实时任务时,内核会被抢占(Barabanov 1997;尤代肯与巴拉巴诺夫,1997年)。因为有一个单独的硬件处理层来拦截和管理实际的硬件中断,所以会模拟任何错过的硬件输入,使Linux内核基本上不知道它正在被RTAI破坏(Bird 2000)。
中断抽象方法基本上没有触及Linux内核,避免了RT-Linux面临的许多软件维护问题。此外,RTAI调度器和硬件抽象层总计64 kb,这不再使延迟保证的验证成为禁忌(Bird 2000)。此外,当前版本的RTAI提供了具有优先级继承的进程间通信方法和一个对称的API,该API允许在Linux用户空间内创建的POSIX线程被调度为实时任务,允许应用程序使用实时和非实时任务的混合操作(Sarolahti 2001)。
三层架构提出了一个既慎重又反应的系统(Gat 1998)。然而,移动机器人存在于时间和事件连续发生的现实世界中,而不是离散的时间步。尽管每一层都是并行执行的,但并不能实时保证为机器人的安全操作提供的反应元素会如期执行。以下讨论使用实时方法增强响应性和确保安全性的当前机器人架构。
OpenR——OpenR是基于Aperios (Yokote 1992)开发的一种用于自主机器人系统的开放架构(或多供应商系统),Aperios是一种面向对象的分布式操作系统,允许将物理和软件组件统一定义为对象。因为所有东西都作为对象引用,所以OpenR提倡为各种组件(如传感器和执行器)提供一个公共接口。在这种方法的基础上,该设计是一个分层模型,包括:硬件抽象层(HAL)、系统服务层(SSL)和应用层(APL) (Fujita and Kageyama 1997)。这种方法旨在允许开发人员使用定义良好的接口,并在不影响相邻层的情况下引入新程序。它的主要缺点是HAL层提供的指定服务不够模块化,因此不容易增强。OpenR的另一个缺点是使用消息传递进行通信,这可能导致它遭受长时间的延迟,这是由于消息引发的级联效应导致在完成任务之前存在长时间的服务周期。尽管被誉为实时系统,但这种方法不能对进程执行施加实时约束,也不能保证优先级更高的进程能够及时获得访问权。
Miro——一个基于corba的机器人编程框架(Enderle et al. 2002),旨在允许在异构计算机网络上开发可靠和安全的机器人软件,并支持多种编程语言的使用。使用CORBA的决定支持一个公共接口包装器,它允许分布式处理和平台无关的代码重用。但是,在使用CORBA包装器时发生的开销不利于维护低级机器人控制元素所需的响应性。虽然他们的机器人实现能够接受和调度来自多个远程工作站的任务,但不清楚内部机器人控制是如何实现的,也不清楚这种实现如何影响低级控制元素的响应。
SmartSoft和OROCOS——SmartSoft (Schlegel和Worz 1999)和OROCOS (Schlegel 2002)项目的目标是建立模块化和实时响应事件的机器人控制框架。响应的核心方法是基于观察者模式(Gamma等人,1994年),该模式允许一组感兴趣的组件立即收到外部事件的通知。这种方法总体上取得了良好的结果,但它没有限制由事件触发的代码路径的长度,因此不能保证系统保持可预期的响应。
雅苒 - 雅苒建筑(卡塞利等人,2005年),它代表“另一个机器人架构”,其独特之处在于它使用动态优先级分配其主动线程来在变化的环境中实现响应性的控制基础。为了提高系统的可靠性和保证快速响应,采用“最早截止日期优先”的方法调整每个线程的优先级,这有助于实现响应性组件和协商性组件的更好共存。Linux版本2.6或更高版本中提供的软实时进程调度器将下一个时间片分配给等待运行的最高优先级线程。这种方法证明了通用操作系统在最佳条件下以平均175 us的响应时间提供进程间通信的能力。通过实现两个边缘跟随行为(一个在YARA中,另一个在SmartSoft中(Schlegel和Worz 1999)), YARA架构在不断增加的计算负载下保持稳定和可预测的能力得到了证明,并且能够在进程之间产生786 us的响应时间。这个实验暴露出的一个主要问题是,执行失败没有被检测到,因为SmartSoft架构没有内部监控机制来检测未能按计划执行的进程(Caselli等人,2005)。通过动态调整活动进程的优先级,改进的Linux调度器在下一个时间片中运行优先级最高的进程,但不能保证响应性,除非系统能够抢占正在运行的进程(Aas 2005)。YARA的论文最后建议探索硬实时方法,以提高响应性,并提供细粒度的时间间隔的保证。
本文通过提出一种基于响应式行为的控制器设计来扩展YARA项目的目标,该控制器作为由硬实时调度程序管理的周期性任务集合运行。
本节描述了一个基于实时行为的系统,它可能很难保证真实世界的响应。首先,介绍了系统的高层组件设计,然后概述了统一行为框架(UBF)。然后,讨论了实时UBF (RT-UBF)和机器人控制体系结构的改进以满足硬实时性约束。
高层次设计的框图如图1所示,显示了RTAI如何直接驻留在硬件之上,以及基于行为的控制器元素能够绕过Linux内核,并被RTAI调度器视为实时任务。将机器人的低级控制例程安排为周期性实时任务的能力由连接到RTAI纳米内核的钩子提供。RTAI的nano-kernel还负责调度Linux内核,该内核处理所有非时间关键任务的调度(图1中的右侧执行路径)。
在这个实现中,HAMR(多机器人混合架构)(Hooper and Peterson 2009),一个非实时的三层机器人控制架构,被修改,允许基于行为的控制器的子组件被建立为硬实时任务,它们的执行由RTAI调度程序控制。通过以这种方式开发基于行为的控制器,能够提供不受系统计算负载波动影响的反应性控制基础。
基于行为的控制器的硬件驱动和行为子组件是可用驱动和行为的库,而控制器是使用RT-UBF实现的。
UBF的概念是通过使用模块化设计来改进基于行为的系统的软件开发,模块化设计试图简化开发和测试,促进代码的重用,支持易于扩展到大型层次结构的设计,同时限制代码的复杂性。并允许行为开发者自由地使用他们最熟悉的行为系统。
在UBF中,所有传入的传感器信息都存储在State中。中央State对象是当前环境的表示,包括解耦的传感器数据、位置信息、目标和当前操作参数。State类是使用单例设计模式实现的,以确保一个实例,并且只创建了一个实例。在执行过程中,State的引用被传递到抽象Behavior类的genAction方法中,它封装了所有的行为逻辑,并返回一个Action对象,该对象包含应用于机器人的硬件命令。
UBF使用策略模式(Gamma等人,1994年)来建立一个抽象的行为接口。策略模式为Controller提供了State和Action的适当接口,并隐藏了的实现细节每个行为同时允许控制器以统一的方式使用所有可用的行为,使它们完全可互换。这种方法将底层控制器从绑定到任何单一的行为架构中解放出来。事实上,它提供了在执行期间在不同架构和层次之
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[591021],资料为PDF文档或Word文档,PDF文档可免费转换为Word
课题毕业论文、文献综述、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。