基于Petri网的多线程技术在机器人编队中的应用

2013-04-29 17:18:03刘晓程王武
科协论坛·下半月 2013年6期
关键词:Petri网解决方案

刘晓程 王武

摘 要:传统的单机器人难以适应复杂的任务以及灵活多变的环境,因此多机器人的研究受到越来越多的关注。结合多线程技术为机器人编队建立Petri网模型,运用Petri网模型对系统各线程对共享区资源的独占性存取,线程之间同步协作进行模拟分析,提出机器人编队的多线程软件解决方案。

关键词:机器人编队 多线程技术 Petri网 解决方案

中图分类号:TP242 文献标识码:A 文章编号:1007-3973(2013)006-047-02

1 引言

多机器人编队以其能够更加有效、准确的获取环境信息,提高工作效率,增加系统鲁棒性等优点成为机器人研究领域中的一个热点。编队成员之间通过加速度计、里程计、电子罗盘等传感器收集自身位姿信息实现自身定位,结合超声波、视觉等感知型传感器获得周围环境信息,采用无线组网的方式将个体的位置与环境信息在群体内共享并计算机器人之间的相对位置实现机器人编队。

编队移动过程中对系统实时性要求较高,常需要多个任务并行运行,常规的软件设计方案难以满足要求,本文结合多线程技术为机器人编队的软件设计方案提供参考。引入多线程技术之后,由线程并发运行所造成的非确定性使得系统变得更加复杂,协调线程以配合完成系统控制任务、对共享区数据的访问进行限制等问题使常规的系统设计方法难以满足要求。Petri网理论是一种直接易用的系统建模工具,具有严格的数学定义,对具有并发行为的系统能够合理描述,对系统的运行过程能够直观的模拟。结合多线程技术为机器人编队建立Petri网模型,利用模型对机器人编队中的多线程的运行做模拟分析,提出机器人编队的多线程软件解决方案。

2 多线程技术在机器人编队中的设计与实现

多线程技术可以通过时分轮转调度算法在单片机中实现。每个活动的线程轮流使用CPU,每个线程占用CPU的一个时间片,CPU在多个线程间快速切换,宏观上表现为多个线程同时执行。本文将机器人编队划分为多个进程:主进程,获取任务命令进程,机器人间的通讯进程,进程中包含多个线程。本文所选的主控芯片为Freescale Kinetis系列,采用ARM Cortex-M4内核,处理速度快,外设接口丰富,能够较好的满足本设计的要求。

主进程利用周期中断定时器产生时间片用于线程切换。时间片的长短根据各个线程的执行时间和各任务的响应要求来综合考虑。主进程中包含的线程有:获取机器人自身姿态线程、实现自身定位线程、实现机器人移动线程等。

获取任务命令进程根据任务要求创建。机器人进行通信获取任务,根据目标任务的要求激活相应的子线程。若没有接到任务命令,则不执行本进程。

机器人之间的通讯进程采用外部中断服务函数实现。当收到外部通信中断请求,或者本机对外通讯的中断请求时创建激活本进程。若没有接到通信中断请求,则不执行本进程。

3 机器人编队的多线程Petri网模型

本文主要研究的是带禁止弧的时间Petri网,该Petri网的定义请参考文献[2],本文不做过多的描述。

用位置表示进程、线程和与此有关的工作状态,用变迁表示进程、线程的执行以及与此有关的工作过程,结合多线程技术为机器人编队建立Petri网模型,如图1所示。图中各标号相同的位置表示同一位置。表1是各主要位置和变迁实施的具体含义。

在主进程中主要包含获取机器人自身姿态线程、实现自身定位线程、实现机器人移动线程(T0→T15)。每个线程能够执行应同时满足:轮巡的时间片到达、线程是活动的。例如在图1中实现机器人自定位线程的启动除了要等待时间片轮巡到P8,即等待所有传感器信息采集完毕,还需要系统对自定位线程的使能,使T5具有发生权,P7得到令牌。T11为获取命令进程的变迁节,只有当系统处于任务等待状态且收到任务命令时才创建并执行。

机器人之间的通讯进程包含数据的接收线程与发送线程。每个线程在运行的过程中需要调用全局变量,如果一个线程访问并修改全局变量时,另一个线程启动并访问该变量,此时该变量的值将变得不确定,给系统带来安全隐患,因此需要对线程进行互锁。将所有线程需要访问的全局变量存放在一个共享区进行共享。图1中P11位置表示对访问共享区的线程进行互锁,只允许T9,T33,T16变迁中有且仅有一个线程对共享区进行访问,一个变迁节使能将使其他变迁节不能发生。图1中T18→T27表示数据发送子线程将数据以队列的形式进行传送。P28→T25的权值为3,即需要数据队列准备完毕才能开始建立连接。P28想要获得令牌,取决于变迁T22,T23,T24的引发,而这三个变迁的引发是相互竞争冲突的。本文引入禁止弧P25→T23和P26→T24可以使这三个变迁获得T22的优先级高于T23,T23的优先级高于T24的引发次序,从而确保数据队列的正确建立。

图1 机器人编队的多线程时间Petri网模型

表1 图1 Petri网中主要位置和变迁节的含义

4 机器人编队的多线程软件解决方案探讨

机器人编队中进程、线程之间的同步协作、对共享区资源的独占性存取、线程的启动与结束等方面的问题在上文中的Petri网模型均有体现。通过该模型的模拟运行,可以直观的了解各进程、线程之间工作流程中执行顺序、并发、竞争冲突以及同步关系。以此为基础,针对机器人编队中多线程的实现提出软件设计方案。

线程优先级的设置以及调用通过函数ThreadScheduler实现。程序上通过switch-case与break结合,识别线程编号priority_num。优先级的设置通过case语句的排列顺序实现,优先级较高的排列靠前。线程的调用由线程编号决定,只有priority_num为某个线程的编号时,该线程才启动,实现时间片在多个线程之间的轮巡。

主进程中线程的启动在中断定时器PIT0中实现,划分时间片长度为20ms(根据经验)即PIT0定时周期为20ms。周期中断一次,时间片TIME的数值加1,根据时间片TIME值的不同调用线程使能函数ThreadSet使能相应的线程。

由于篇幅有限,本文仅提出机器人编队的多线程软件框架。详细的线程之间的互锁、同步、竞争等关系,编队通讯队列的建立等具体代码的实现将在后续论文中给予体现。

5 结束语

在机器人编队的软件设计中使用了多线程技术,使编队的多个任务能够同时执行,增强了编队的实时性,切实提高了编队效率。建立多线程的机器人编队带禁止弧的Petri网模型,可以直观明了地掌握多线程在工作流程中的执行顺序、竞争冲突、并发以及同步关系。为后期代码的实现提供参考,能够有效的避免多个线程对共享资源存取不当、线程不同步等常见问题,从而提高了机器人编队的稳定性和安全性。

参考文献:

[1] Arai T,Pagello E,Parker L E.Guest editorial advances in multirobot systems[J].IEEE Transaction on Robotics and Automation,2002,18(5):655-611.

[2] 詹惠琴,袁亮,古天祥.基于多线程的智能仪器Petri网[J].仪器仪表学报,2005(9):909-912.

[3] 陈宁,程磊,王永骥.基于多线程同步的多机器人协调技术和实现[A].中国人工智能学会第10届全国学术年会[C].2003.

[4] 吴哲辉.Petri网导论[M].北京:机械工业出版社,2006.

[5] 卢海军.最小的多线程框架[J].单片机与嵌入式系统应用,2010(4):70-71.

猜你喜欢
Petri网解决方案
艾默生自动化解决方案
解决方案和折中方案
S700K-C转辙机防水解决方案探讨
基于随机函数Petri网的系统动力学关联分析模型
工作流技术在医疗信息整合工程中的应用分析
基于Petri网的BPMN工作流分析方法研究
科技视界(2016年7期)2016-04-01 18:54:49
基于Overlay Network协同选播通信机制的研究
科技与创新(2016年5期)2016-03-17 17:02:12
基于Petri网的城市交叉口系统仿真分析
软件导刊(2015年12期)2016-01-05 06:35:40
4G LTE室内覆盖解决方案探讨
基于Petri网的虚拟维修作业过程模型分析
科技视界(2015年26期)2015-09-11 15:40:44