研究文章|开放获取
安德鲁·麦肯齐,莎米卡·道森,胡飞,莫妮卡·安德森, "使用Sun的Java实时系统来管理基于行为的移动机器人控制器",机器人学杂志, 卷。2011, 文章的ID525724, 11 页面, 2011. https://doi.org/10.1155/2011/525724
使用Sun的Java实时系统来管理基于行为的移动机器人控制器
摘要
实现一个机器人控制器,可以有效地管理有限的资源,在确定性,实时的方式是具有挑战性的。基于行为的架构将自治分解为智能级别,由于其健壮性而流行,但不提供强制执行时间限制或支持确定性的实时特性。我们提出了一种体系结构和方法,在基于行为的移动机器人控制器中使用Java实时规范(RTSJ)的实时特性,以表明时间约束影响性能。这可以通过扩展实时感知体系结构来实现,该体系结构明确地枚举每个行为的时间要求。仅仅减少延迟是不够的。在Solaris 10和Sun Java Real-Time System (Java RTS)上的实现演示了这种方法的有效性。利用K-team Koala机器人进行四种复合行为的路径跟踪实验得到了实验结果。在三种情况下使用多个任务周期集进行了实验:使用实时垃圾收集器的实时线程、使用非实时垃圾收集器的实时线程和使用非实时垃圾收集器的非实时线程。结果表明,即使延迟和确定性得到改善,每个个体行为的时机仍显著影响任务绩效。
1.动机
开发一个移动机器人控制器可能是一个复杂的过程。机器人必须同时进行安全检查(如避障),同时完成高级目标(映射和路径跟踪)。基于行为的控制器(1使用有优先级的有限状态机来管理复杂性层。现有的机器人架构要么支持这种方法[2,3.或有目的地非结构化以适应行为[4].
尽管基于行为的范例在面对复杂条件时提供了健壮的控制器,但实时问题并不是这些体系结构的一部分。任务可能需要在一个时间限制内执行和完成,以防止产生不希望的结果。因为时间和决定论很重要[5],机器人控制器应该使用实时控制系统标准编程,让任务在实际的实时中执行吗?
目前,移动机器人体系结构中不包括实时特性和特定频率要求[6].时间约束、确定性和低延迟是确保机器人正确运行的重要因素,并可以导致更好的资源利用。由于没有明确地解决这些问题的实际实时控制器,开发人员可能会得到不稳定的结果,导致机器人行为不一致和低效。
如果控制理论[7]将被应用到基于行为的系统中,每个机器人个体的行为频率将基于输入的可用性。对控制系统中各个子系统的单个频率要求的定义是传统实时系统开发过程的一部分[8].频率定义了处理传感器输入的周期和截止日期。如果任务错过了截止日期,系统将不会对输入的变化做出响应。然而,“尽可能快地”运行所有行为是不够的。事实上,一些资源密集型行为可能会占用资源和/或抢占对时间更敏感的行为。放慢那些不经常接受输入的行为,可以为时间敏感的任务腾出资源。
为了解决这个时间限制问题,我们考虑添加Java实时规范(RTSJ) [9现有移动机器人体系结构的标准[10],使用Sun的Java实时系统(Java RTS),并在实时操作系统(RTOS)上运行它。Java是一种以其可移动性和安全的面向对象的功能而已知的语言,已成为实时系统开发人员的选项[11].虽然像C和c++这样的语言因为与它们相关的内存问题给许多实时开发人员带来了问题,但它们是最常见的选择,因为它们的性能和易用性[12].作为替代,Java RTS被设计成具有确定性、实时特性的系统[13]没有强制开发人员来管理内存使用情况。This makes Java an appropriate choice for programming a real-time robot architecture.但是,Java是定时敏感的。特别是传统的垃圾收集器可能会在实时系统中引起非叛徒行为。Java RTS中实现的实时垃圾收集器(RTGC)提供了处理垃圾收集器的确定性方法。
我们提出的机器人架构有几个基本目的。首先,关于机器人控制器的实时问题将被明确。其次,将演示在基于行为的移动机器人框架中使用实时Java的有效方法。通过允许开发人员声明频率要求,任务只能按照需要的速度运行。允许声明频率最终可以让开发人员更好地理解频率及其与代码特性的关系。这包括哪些任务依赖于特定的输入设备,以及不同任务之间的依赖关系。
这样的架构可能会帮助嵌入式系统的学生更快地学习。在 [14,描述了一个为Java程序员创建的实时系统本科生实验室。结果发现,参加实时软件工程模块的学生比参加其他模块的学生表现更好、更享受。此外,大多数参加这个模块的学生都在实时和嵌入式系统行业找到了工作。
这项工作的结果对当前和未来基于行为的机器人开发环境产生了广泛的影响。机器人架构需要管理实时约束,以便以确定的方式有效地行为。实验结果表明,个体行为的时机选择确实会影响机器人的高级任务性能。
在本文中,我们将一个基于行为的机器人体系结构映射到Java RTS,以表明缺乏或不正确的时间约束会影响性能。该体系结构允许开发人员将频率要求声明为客户端接口的一部分。还添加了Java RTS特性,以帮助更好地管理资源。本文的主要贡献是创建一个现成的系统,允许实时控制自主机器人。据我们所知,我们的架构是第一个完全自主的移动机器人完成任务的架构,使用现成的OSâ€s和语言。节2,背景和以往的工作。控制理论及其与我们的方法的相关性在本节中介绍3..部分4描述了Java RTS及其与接口的相关性。部分5给出了体系结构的实现和实验设置。本节给出了实验结果和分析结果6和7,分别。本部分为结论和未来发展方向8.
2.背景
2.1。移动机器人实时
移动机器人提供了几种机器人开发平台。但是,其中一些架构不提供强制执行时序约束的实时功能。在提供实时功能的那些中,他们不允许开发人员提供自己的频率要求。Buttazzo等。[15研究了机器人的实时控制,他们设计并实现了一个用于设计具有实时约束的机器人应用程序的软件架构。该架构是一个分层的编程环境,由四部分组成:操作层、控制层、通信层和一个硬实时内核(HARTIK)来控制这三层。所有的层都是用C编写的,并封装了一组库函数。他们的结论是,他们的架构为机器人应用的发展提供了一个灵活的框架。然而,他们没有提供任何实验结果。
BREGA等人。[16使用OBERON-2编程语言,在实时控制PYGMalion机器人的XO / 2操作系统的案例研究。他们讨论了在研究,教育和现实世界使用中实时控制机器人的需求和要求。XO / 2操作系统由BREGA等人设计。作为实时操作系统。他们得出结论,他们无法量化移动机器人的自主自主权,实时和安全的需求。他们还指出,移动机器人的复杂性越来越复杂地为机器人的硬件,软件和间接的操作系统设置了更高的要求。最后,他们指出,“软件模块的安全组成,类型安全,截止日期驱动的调度和自动内存填海机制可以从许多耗时的实施问题中缓解应用程序员,同时提高安全栏。”
奥尔巴赫等人[17]实现了一个使用Exotasks的实时Java应用程序,Exotasks是一种新颖的Java编程构造,实现了实时虚拟机上的确定性定时。他们建造了一架名为“jaaviator”的直升机,用于测试。他们表明,他们的实现在不同的硬件平台上实现了时间可移植性。然而,他们所有的数据都是在飞机外处理的,他们只观察到一种行为(直升机悬停)。
2.2.非移动机器人中的实时
Stewart等人。[18]设计了一个基于基于端口的对象的实时架构。基于端口的对象是完全包含的软件组件,它包含状态和方法,并提供输入、输出和资源端口。输入端口描述对象需要的数据,输出端口描述对象产生的数据。一个输入端口只能精确地连接到一个输出端口。相同类型的输出必须合并为一个明确的输出。每个对象都是自包含的,有自己的频率。任务调度由开发人员决定,可以修改任务调度以增加系统稳定性或减少计算资源消耗。
Bruyninckx等[19]采用orcos项目硬实时运动控制核心(Open robot control Software)实现KUKA 361六自由度机器人1khz位置、速度和混合力控制[20.].他们绕过了Kuka遗留控制器并仅使用Orocos代码控制。代码在Linux上运行(没有实时性能)和在硬实时间的RTAI上(Linux的实时应用程序接口)。
罗伯特等人[21]在RTOS上使用Java RTS实现工业机器人的运动控制系统。它们使用实时线程(RTTS)以了解非关键任务的关键任务和非RTT。在他们的方法中,RTT在最优先考虑的情况下运行,并且非RTT在优先级的较低优先级运行,甚至低于实时垃圾收集器。虽然他们讨论了网络延迟的时间测量,但它们并不存在显示这些实时特征对整个系统的效果的结果。
2.3.基于行为的体系结构
基于包容的机器人控制器从行为层构建自主[22].基本图层是完成输入并提供适当的输出的完整处理单元。我们对实现时间分解的属性特别感兴趣。aria [2是一个为行为分解提供支持的机器人体系结构。Aria程序由单独的行为组成,每个行为都被赋予了执行器输出重要性的优先级。优先级不影响资源分配或利用率。因为目标硬件架构每100毫秒处理一次命令,所以所有的行为都是每100毫秒运行一次。开发人员可以在框架之外添加其他线程,以处理具有不同频率要求的任务。
卡门[23是一个用于移动机器人控制的开源模块化架构。它具有三层架构,其中第一层是硬件接口,第二层包含基本的机器人任务,最后一层是用户定义的应用程序。它使用进程间通信为移动机器人提供功能,并支持各种平台。
OROCOS项目[20.是一个用于通用机器人和机器控制的开源模块化框架。OROCOS项目支持四个c++库:实时工具包、运动学和动力学库、贝叶斯过滤库和OROCOS组件库。
虽然不是基于行为的架构,但播放器[4]是一个开源机器人架构,旨在以各种硬件组件运行。播放器架构专门避免定义分解,因此不提供用于为行为添加频率的框架。
3.控制系统
控制系统是控制另一个设备或系统的设备或系统。闭环控制系统使用系统的输出(反馈)来修改输入以得到所需的输出。今天,大多数控制系统使用计算机来做所有的控制器决策,称为数字控制。由于数字控制使用计算机,每个时钟周期都由计算机做出决定,因此信号是离散的。
在基本层面上,自主机器人使用计算机运行算法来控制自己的运动,这是基于传感器的输入,如声纳、红外、GPS和激光测距仪。因此,自主机器人是控制电机等其他设备的装置(计算机),因此被称为控制系统。因此,自主机器人应该被视为控制系统,并被要求遵循与数字控制系统相同的规则。
由于数字控制是一个数字(离散)时间系统,如果输入数据采样不够快,就会出现问题。如果输入信号在采样之间发生变化,就会发生这种情况。例如,如果一个输入有两个值A和B,当值A出现时,信号将传输数据至少80毫秒,B为50毫秒。输入以10hz采样(每100ms采样一次)。系统在100毫秒、200毫秒、300毫秒等时间对输入信号进行采样。A的输入信号从0到130毫秒是有源的,在130毫秒时变为B,然后在180毫秒时又变为A。由于采样率每100毫秒发生一次,数字控制系统在时间步骤1和2看到A。所以它看不到B,这可能会导致问题。简单的解决方法是确保您的采样时间足够快。
在控制理论中,采样率应至少为最快输入信号的两倍[7].在上述系统中,最快输入信号B发生至少50ms(20Hz)。因此,系统需要具有40 Hz的最小采样率。通过确保系统可以以40 Hz的速率获取输入,可以通过软件或升级到可以在40 Hz上采样信号进行升级的硬件来实现此问题。此示例直接涉及移动机器人。只需考虑任何数字传感器,例如激光测距仪,作为输入信号的源。在Hokuyo PBS-03激光测距仪的情况下,每180 ms产生激光读数[24,如果系统(即控制器)不至少每90毫秒运行一次,那么激光读数将被错过。如果错过了一个读数,系统有可能看不到一个物体,这可能会产生一个不正确的地图,最坏的情况是,导致机器人与错过的物体相撞。根据(7],为了提高控制系统的性能,应该应用来自控制理论的高级规则。同样,仅使用基本设计原则的机器人控制器仍将起作用。但是,如果应用了更先进的控制技术,则性能将提高。
4.Java实时系统
为了让Java被认为是一种实时系统的编程语言,需要几个标准[11].首先,它必须提供决定论。当用Java编程机器人控制器时,机器人的行为必须是可预测的,并且所有的任务必须在最后期限内完成。低延迟是另一个重要的标准。延迟是一个事件发生的时间和它看起来已经发生的时间之间的区别。本质上,这两者之间应该有一个已知的有界的最大延迟,以确保任务在执行周期结束前完成。此外,整个系统的时间也是一个巨大的因素。机器人的行为应该在特定的时间框架内执行,并且只在需要的时候运行。
我们扩展了Java客户机,以包含可用于Java RTS的特性。它为开发人员提供了一个平台,在这个平台上,他们可以实时准确地确定软件的时间行为。这让程序员可以确定任务在代码中执行的频率,因此可以安排任务,以便在错过截止日期之前完成任务。为了使用Java RTS的特性javax.realtime.RealTimeThread使用延长的类java.lang.thread.Java RTS通过添加额外的特性增强了Java规范,这些特性包括实时线程、调度、内存管理和实时垃圾收集器。Java RTS包括一个内置的调度程序,它遵循固定优先级的抢占策略。
4.1.实时线程
在使用常规Java规范时,不能保证线程调度和线程优先级。Java RTS提供了比普通Java线程更精确的实时线程调度。Java RTS还提供了严格执行的线程优先级。在实时系统中,如果有高优先级的任务需要执行,则会牺牲低优先级的任务。因此,高优先级的任务被保证执行,这样他们就不太可能错过最后期限。
4.2。内存管理
在传统的Java虚拟机(JVM)中,一些任务可能要与其他任务的内存管理成本相竞争。然而,内存管理是使用Java RTS自动进行的。NoHeapRealtimeThread (NHRT)类是RTT类的子类,它使用作用域内存和不朽内存,以便可以以更可预测的方式分配和回收内存。它不使用垃圾回收器负责的堆内存。
不朽内存是内存中没有被垃圾回收的区域。使用这种形式的内存是为了避免动态分配。所有的内存都是预先静态分配的,并且在JVM终止之前一直在使用。作用域内存仅供rtt和nhrt使用。这种类型的内存有一个定义好的生存期。从作用域内存中分配的对象将一直保持分配状态,直到作用域不再活动为止。通过作用域内存,Java RTS为开发人员提供了一个不受垃圾收集器干扰的环境。
相反,内存管理是在C和c++中手工完成的。C和c++有三种内存:静态内存、自动内存和自由存储[25].程序的结构是由开发人员编写的,它通过使用malloc和free函数来决定何时分配和释放内存。因此,程序的生命周期是由程序的逻辑决定的。然而,在Java中,开发人员无法控制内存的释放。这都是由垃圾回收器完成的。
4.3.垃圾收集器
在JVM中,不能保证垃圾回收不会干扰代码的时间,因为垃圾回收器在运行时会抢占所有线程的执行。实时机器必须找到处理这个问题的方法。Java RTS使用基于Henriksson垃圾收集器的RTGC [26处理硬性的实时调度。垃圾收集器作为RTT运行。这些线程的优先级低于所有其他rtt;因此,它们的执行被推迟到关键任务完成后。只要关键线程在执行过程中没有耗尽内存,这种方法就可以正常工作。如果是,当程序的内存使用达到一定的水平时,RTGC将被迫运行。这是通过在达到该级别时增加RTGC的优先级实现的。当使用级别低于定义的阈值时,优先级返回到初始设置。因此,RTGC的开销减少了,线程的确定性也不受影响。
5.方法
5.1。实现
在 [10,提出了一个实时感知体系结构,并进行了测试,取得了很好的结果。该体系结构使用Player接口与机器人硬件和Java控制代码。它通过创建Monitor模块来实时感知任务,并报告错过的截止日期。然而,它并不是一个真正的实时系统。为了实现实时,它需要在实时兼容语言的RTOS上运行。使用C语言编写的Player不支持实时功能[6].因此,我们的机器人架构完全用Java重写,并添加了Java RTS。该体系结构采用软实时约束。软实时约束是一种时间约束,如果不满足该约束,系统不一定会遭受严重故障。体系结构将时间限制应用于所有任务。客户端程序通过串行连接与各种硬件平台(如URG激光器和机器人)进行接口。该架构的驱动程序将通用命令转换为特定的硬件接口。
我们提出的新体系结构的结构如图所示1.该框架是作为客户端程序的一部分实现的。行为是通过亚归属T创造的问.T问超类包含初始化和注册数据存储使用所需的功能。T.问提供了将数据的生产或消费注册到D的方法Atamanager..在执行过程中,T问超类方法将所使用的数据复制到本地存储。所有数据都由R创建obotController.当KHEPERA和Laser接口被创建并发送给所有任务。所有任务都被视为时间关键任务,因为它们直接或间接地控制了机器人的执行机构。调度是通过使用rtt的Java RTS调度器完成的。所有任务都在独立的rtt中运行。定时任务按照指定的时间周期执行。RobotController.初始化并启动线程。一旦rtt发出任务运行时间过长的信号,每个任务的ranTooLong()方法就会报告错过了截止日期。图中显示了描述体系结构中心组件的类图2.
5.2。实验装置
进行实验以测量对行为应用不同频率要求的有用性。这些频率由用户通过命令行提供。航点导航控制器用于测量频率对任务性能的影响。
程序结构有七个关键组成部分,一个DAtamanager.和6个任务线程。表中总结了六个任务线程1.其他重要的模块包括KHEPERA类。它需要L的移动请求ASERAVOIDOBSTACLES和WAYPOINTPLANNER并决定什么命令最终被发送给机器人。电机控制是有序的,以便与安全相关的活动,如避障和失速恢复,有机会首先控制电机。如果两个LASERAVOIDOBSTACLES和WAYPOINTPLANNER请求控制电机,LASERAVOIDOBSTACLES执行命令是因为它是与安全相关的任务。W.AYPOINTPLANNER只有当l控制电机时ASERAVOIDOBSTACLES不想要控制。
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
物理实验雇用了K-Team考拉机器人(图3.).该机器人配备了Acces I / O ETX-Nano计算机,具有英特尔核心DUO 1.66 GHz处理器,2 GB RAM,以及8 GB紧凑型闪存卡进行存储。它正在运行Sun Solaris 10 RTOS,这需要双核处理器[29].“考拉”不是使用机载红外近距离传感器,而是增加了一个Hokuyo URG激光测距仪。Java程序通过串行连接处理与机器人及其设备的接口javax.comm(Java通信API)。所有Java代码,包括逻辑和控制代码,都在机器人上执行。由于access I/O ETX-Nano的高功率要求,机器人被用电源线和以太网cat5电缆进行远程通信。测试环境是一个9.6 m × 6.2 m的房间(图)4).
进行了三种不同的实验:使用RTTS与RTGC,具有非RTGC的RTT的RTT,以及具有非RTGC的常规线程的那些。在这些实验中,所有试验均得到相同的四个航点(如图所示)4).从起始位置出发,机器人向每个路点行进,直到到达终点。路径点的选择使得所有的任务都需要到达终点。
每个任务都被赋予一个区间值,这个区间值定义了任务的截止日期和周期。为了比较,机器人在任务线程中使用不同的间隔值运行。每组实验共5次。初始周期值基于URG激光器的频率,即100 ms [30.].此后每一组的周期都是根据观察来选择的。在五组实验中的三组中,所有任务的时间都是相同的。在剩下的两组中,L的周期ASERAVOIDOBSTACLES有所不同,看它对实验的整体性能的影响。由于机器人和环境的安全问题,我们选择降低这一时期。d的时期ATAPOSUPDATE和DATALASERUPDATE分别为75 ms和100 ms。
假设这些实验将有助于展示任务频率和确定性对整个系统的影响。如果他们在接近和通过每个航点的障碍时,试验被认为是完整的。如果机器人要么在障碍物上被卡住或未在六分钟内到达所有航点,则认为试验被认为是不完整的。记录了每次试验的截止日期和完整性。
6.实验结果
使用不同的行为时期运行三次试验中的每一个(如表所示2)来确定时间和确定性对程序性能的影响。良好的性能基于以下类别:运行时间、任务完成和到结束位置的距离。
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
表格3.显示使用带有RTGC (RTT/RTGC)的RTT、带有非RTGC (RTT/RegGC)的RTT和带有非RTGC (RegT/RegGC)的常规线程运行垃圾收集器的平均次数和每一组的标准偏差。
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
实验被分成两组进行分析。第一组包含所有行为在同一时期运行的实验结果。第二组是LASERAVOIDOBSTACLES被调整以及设置的所有任务以100毫秒的速率运行。运行L.ASERAVOIDOBSTACLES在较短的时间内就足够了,因为它处理了移动障碍物耗时的安全功能。
数据5和6显示机器人完成这一过程所需的平均时间。数据7和8显示机器人来到预期的完成位置的平均距离。数据9和10给出机器人从路径1到路径2(避障点)的平均时间。数字11显示每组实验中四项行为任务错过截止日期的百分比。数字(11日)显示所有五组的概述。由于与其他实验相比,第一组实验错过截止日期的比例非常大,所以在图中删除了这组实验11(b)来展示其他四组的更多细节。
(一)
(b)
7.分析
7.1。实时线程与非实时线程
结果显示,在测量完成课程的时间时,使用rtt的实验与使用常规线程的实验表现相似或更好(图)5和6).在大多数情况下,这些实验比使用常规线程的实验更快地完成了整个过程。
7.2。垃圾收集器的比较
为了分析确定性,我们测量了垃圾收集器对性能的影响。在RTT/RTGC实验中,垃圾收集器运行的频率较低(参见表)3.).当比较仅使用rtt的试验时,使用RTGC的试验比使用常规垃圾收集器的试验完成过程更快(见图)5和6).由于RTGC是确定性的,并不影响行为任务的执行,我们相信它可能对平均课程时间有影响。
7.3。行为频率效应
在RTT/RTGC实验中,比较机器人到达终点的平均距离与行为周期之间存在统计学差异。例如,在第一组(图7),以10毫秒的频率运行行为与以50毫秒的频率运行行为在统计上是不同的。此外,以100毫秒的频率运行与以50毫秒的频率运行在统计上是不同的。在第二组(图8L),运行ASERAVOIDOBSTACLES在50毫秒的周期和所有其他行为在100毫秒的统计是不同于运行在100毫秒的周期。这些结果表明,即使是单个行为频率的改变也会影响性能。这也表明,如果允许任务运行过快或过慢,就会以任务完成和准确性的形式对整体性能产生不利影响。
此外,为了衡量个别任务对性能的影响,我们观察到避免障碍物如何影响机器人从航点1到航点2所花费的时间(见图9和10).在所有情况下,RTT/RTGC实验都比RTT/RegGC实验更快地到达航路点2。
7.4。延迟的影响
延迟的一个指标是错过最后期限。当任务没有在指定的时间内完成时,系统会报告;然而,当使用rtt时,任务不会被终止。因此,如果任务完成时间过长,可能会导致其他任务资源不足。
我们假设延迟不是较低频率的问题,因为它们为每个行为提供了更多时间来完成。从图中(11日),结果显示,所有行为以10毫秒为周期运行的集合会导致更多的错过截止日期。使用rtt的实验比使用常规线程的实验错过的截止日期更多。然而,当以100毫秒的周期运行行为时,情况并非如此(参见图)11(b)).在这种情况下,RTT/RTGC实验没有错过截止日期。
然而,(除了实验集3)RTT/RegGC实验比RegT/RegGC实验有更高的错过截止日期的百分比。由于常规垃圾收集器不太确定,因此很难确定它对任务线程的影响。
7.5。全面的分析
结果表明,即使在不受约束的(资源丰富的)系统中,适当的时机对资源利用也是重要的。尽管在RTT/RTGC实验中延迟和确定性得到了改善,但每个实验集在不同频率下的表现仍然存在差异。因此,每个行为的频率应该基于输入的可用性。
结果还表明,更快的循环时间不是一个好的方法。然而,目前流行的方法是尽可能快地运行行为,这并不理想。较慢的循环时间会给行为更多的完成时间,但过慢也会导致系统不稳定,这与控制理论是一致的。关键是找到最优窗口,使任务不会运行过短(耗尽系统资源)或过长(导致响应缓慢)。因此,控制理论的规律应该应用于需要分析所有行为及其依赖关系的机器人。这将使开发人员有机会定义适合他们所使用的系统的自己的频率需求。
8.结论
许多机器人架构将正确的频率视为资源可用性的函数。通过不正确地解决时间问题,移动机器人系统可能无法有效地利用系统资源。此外,时序细节的无知可以引导开发人员生产不稳定的系统。这部分是因为我们的直觉是只有机器人控制程序的关键任务需要快速运行,这是不正确的。必须将控制理论定律应用于机器人,要求分析所有行为及其输入依赖项,而不是仅仅是关键任务。应应用这些法律,因为,与控制理论一致,太短的时期可能会导致系统不稳定。
我们开发了一个融合时间感知的机器人软件平台。该系统使用Java RTS完全用Java编写,允许为单个程序组件分配一个执行频率。它还利用了rtt、非rtt、RTGC和传统垃圾收集器。我们介绍了系统的细节和实现。实验证明了如何操纵子任务的时间和使用RTGC的rtt影响总体任务性能,通过完成路径的时间和与结束位置相关的误差来衡量。测试结果验证了该假设,并表明了适当的时间对移动机器人系统资源利用的重要性。
在未来的工作中,架构将使用OROCOS real-time Toolkit在更常见的实时语言(如c++)中编写[19].然后将它与Java RTS版本进行比较。这将是衡量Java RTS性能的一个很好的指标。评估程序员在Java RTS和c++上的熟练程度的人类研究可能会揭示在教授嵌入式编程技术中有用的体系结构特性。
致谢
作者非常感谢以下NSF授予:IIS-0846976和CCF-0829827,用于支持这项工作。他们还要感谢Nicholas A. Kraft的Solaris知识。
参考文献
- R. A. Brooks,“移动机器人的鲁棒分层控制系统”,机器人与自动化学报,第2卷,第2期1,第14-23页,1986。视图:谷歌学术搜索
- K. Konolige,“蓝宝石机器人控制架构”,技术报告, SRI国际,美国加州门洛帕克,2002年。视图:谷歌学术搜索
- D. S. Touretzky和E. J. Tira-Thompson,“Tekkotsu:Aibo认知机器人的框架,”全国人工智能会议论文集,第四卷,1741-1742页,AAAI出版社,麻省理工学院出版社,美国宾夕法尼亚州匹兹堡,2005年。视图:谷歌学术搜索
- B. P. Gerkey, R. T. Vaughan, K. Støy, a . Howard, G. S. Sukhatme, M. J. Matarić,《最有价值的玩家:分布式控制的机器人设备服务器》,刊于IEEE智能机器人与系统国际会议的诉讼程序(IROS'01),第3卷,第1226-1231页,2001。视图:谷歌学术搜索
- G. Beccari, S. Caselli, M. Reggiani,和F. Zanichelli,“设计混合机器人控制架构的实时库”,在IEEE/RSJ智能机器人与系统国际会议论文集,pp。1998年10月1145-1150。视图:谷歌学术搜索
- J. Kramer和M. Scheutz,“自主移动机器人的开发环境:调查”,自主机器人第22卷第2期2,页101 - 132,2007。视图:出版商网站|谷歌学术搜索
- j .多西连续和离散控制系统,麦格劳山学院,纽约,纽约,美国,2001。
- 美国班尼特实时计算机控制:简介, Prentice Hall International,纽约,纽约,美国,1994。
- G. Bollella和J. Gosling,“Java的实时规范”,电脑第33卷第3期6,页47-54,2000。视图:谷歌学术搜索
- A. McKenzie, S. Dawson, Q. Alexander,和M. Anderson,“使用实时意识来管理移动机器人上java客户端的性能”IEEE / RSJ智能机器人和系统国际会议的诉讼程序(IROS'09),PP。3422-3428,2009年12月。视图:出版商网站|谷歌学术搜索
- A. Nilsson, T. Ekman,和K. Nilsson,“真正的Java用于真正的时间增益和痛苦”嵌入式系统编译、体系结构和综合国际会议论文集(CASES’02),第304-311页,2002年10月。视图:出版商网站|谷歌学术搜索
- D. Arora, A. Raghunathan, S. Ravi,和N. K. Jha,“嵌入式处理器上安全软件执行的架构支持”第四届硬件软件协同设计与系统综合国际会议论文集,第106-111页,2006年10月。视图:出版商网站|谷歌学术搜索
- G. Bollella, T. Canham, V. Carson等人,“Java实时规范中的非堆内存编程”面向对象编程系统、语言和应用会议论文集(OOPSLA’03),页361-369,2003。视图:出版商网站|谷歌学术搜索
- S. Smith, S. W. Lawson和A. Lawson,“实时软件工程可以教给Java程序员吗?“在第17届软件工程教育与培训学术会议论文集, vol. 17, pp. 124-129, 2004。视图:谷歌学术搜索
- G. Buttazzo, F. Conticelli, G. Lamastra,和G. Lipari,“硬实时环境中的机器人控制”,在第四届实时计算系统与应用国际研讨会论文集(RTCSA '97),页152-159,1997年10月。视图:谷歌学术搜索
- R. Brega, N. Tomatis,和K. O. Arras,“移动机器人对自主性和实时的需求:XO/2和皮格马利翁的案例研究”IEEE智能机器人和系统国际会议的诉讼程序,第2卷,第1422-1427页,2000。视图:谷歌学术搜索
- J.Auerbach,D.F.Bacon,D.T.Iercan等,“Java占用了:与Exotasks的时间便携式实时编程,”美国计算机学会SIGPLAN嵌入式系统语言、编译器和工具会议论文集,第51-62页,2007年6月。视图:出版商网站|谷歌学术搜索
- D. B. Stewart, D. E. Schmitz, P. K. Khosla,“高级传感器控制应用的Chimera II实时操作系统”,IEEE在系统,男人和控制论上的交易第22卷第2期6,pp。1282-1295,1992。视图:出版商网站|谷歌学术搜索
- H. Bruyninckx, P. Soetens,和B. Koninckx,“OROCOS项目的实时运动控制核心”IEEE机器人与自动化国际会议论文集,第2卷,第2766-2771页,2003年9月。视图:谷歌学术搜索
- H. Bruyninckx,“开放机器人控制软件:OROCOS项目”,出版IEEE机器人与自动化国际会议论文集,卷。3,pp。2523-2528,2001年5月。视图:谷歌学术搜索
- S. G. Robertz, R. Henriksson, K. Nilsson, A. Blomdell, and I. Tarasov, " Using real-time Java for industrial robot control ", in第五届实时和嵌入式系统Java技术国际研讨会论文集(JTRES’07),第104-110页,2007。视图:出版商网站|谷歌学术搜索
- r·a·布鲁克斯,《没有代表的智慧》人工智能,第47卷,第47期。1-3,第139-159页,1991。视图:谷歌学术搜索
- M. Montemerlo, N. Roy和S. Thrun,“移动机器人编程的标准化展望:卡耐基梅隆导航(CARMEN)工具包”,刊于IEEE/RSJ智能机器人与系统国际会议论文集,第2436-2441页,2003年10月。视图:谷歌学术搜索
- 测量距离型障碍物检测传感器PBS-03JN系列使用手册,Hokuyo自动,2002。
- b . Stroustrupc++编程语言,艾迪生 - 韦斯利,读书,大众,美国,1986年。
- R. Henriksson,嵌入式系统中的垃圾回收调度,博士。论文,隆德大学,1998年。
- A. Elfes,“使用占用网格进行移动机器人感知和导航”电脑第22卷第2期6,第46-57页,1989。视图:出版商网站|谷歌学术搜索
- E. W. dijkstra,“关于与图形的两个问题有关两个问题的说明,”Numerische Mathematik, vol. 1, no. 11,第269-271页,1959。视图:出版商网站|谷歌学术搜索
- Sun Java实时系统精度控制的金融服务市场,Sun Microsystems,2008。
- 范围 - Finder型激光扫描仪URG 04LX规格,Hokuyo自动,2005。
版权
版权所有©2011 Andrew McKenzie等人。这是一篇发布在创意公共归因许可证,允许在任何媒介上不受限制地使用、传播和复制,但必须正确引用原作。