正在加载图片...
第5期 张鸿皓,等:水下机器人任务流程建模与管理 .437. #Return Return()#Join2:#TakeBack:#Move- 每一条描述语句的格式是相同的: Up;3600l 任务标号{任务类型及参数:前驱任务标号:成 #TakeBackTakeBack();#Return;#Join3;; 功执行后发起的任务标号:成功后终止的任务标号: ;1 失败后发起的任务标号:失败后终止的任务标号;超 #MoveUp MoveUp();#Return;#Join3; 时值} Join3 OrJoin (1);MoveUp,TakeBack; 描述语句中各项用分号隔开,若某一项任务标 #END;;;;} 号为空,可以不写或写上“NULL”:若在超时值处为 #END EndMission();#Join3; 空或写上“NEVER”,则超时值为无穷. #START #END #Join3 OR_join(1) 紧急 #ToTarget 上浮 航行到目标区 回收 #MoveUp #Take Back 返航 #Join1 OR join(1) 3600 #Record #Retum #Rearrang 采集 数据 #Work 作业 #Join2 ☒ OR_join(1) 图8任务示例(任务工作流) Fig.8 An example of AUV task flow (task workflow) 网路中任一表示流程的箭头,将既被发起它的 实现 前驱任务描述,又被接纳它的后继任务描述,任务间 5任务管理程序的实现 的依赖关系便由此衔接起来.对单个任务的简单叠 加就得到了整个任务网.每一条语句就是对模型中 作为实验室水下机器人模块化软件系统的一部 一个任务及其外延的流关系的直接描述,故图中任 分,基于上述原理与实现方式的水下机器人任务建 务方框的个数与描述语句数相同.描述语句没有先 模与管理系统已经成功开发,并在仿真平台和陆地 后顺序可言,任务流程描述文件的格式是相当灵活 机器人实验中得到了验证.这里仅简述此系统的几 的规定这样的描述语言,是为了计算机能直接读取 个特点: 任务文本,自动按流程发起任务并对任务进行操作 1)所有的任务类型需提前编写(用C++语言) 和管理.由于此描述语言格式规范,因此完全可以开 并编译完成.任务流程的描述由文本化的任务描述 发相应的应用软件,让建模者直接以图形方式建模, 文件提供,系统读取文本中的任务类型名,自动生成 而由程序自动生成模型的文本描述 对应的C++类的实例并执行此任务.任务只有在需 在程序实现中,每个任务类对应一个C++类, 要时才动态生成,执行完成后销毁,以节约内存空 且每个任务类都继承统一的基类,在其中定义通用 间这涉及到C+中用字符串动态生成对象的技巧. 的数据类型和方法,包括对结束状态的判断,以及与 2)此系统提供任务流程更改的全套接口.无论 外界通信的手段.如上例中,#Joinl、#Join2、#Join3都 任务位于文本描述文件中,还是正在内存中执行,都 属于OrJoin类型,它们都会采用一份相同的代码来 有标准的接口用于更改任务的流关系及类型,以便#Return{Return( )ꎻ#Join2ꎻ#TakeBackꎻꎻ#Move ̄ Upꎻꎻ3 600} #TakeBack{TakeBack( )ꎻ #Returnꎻ #Join3ꎻ ꎻ ꎻ ꎻ } #MoveUp{MoveUp()ꎻ #Returnꎻ #Join3ꎻ ꎻ ꎻ ꎻ } # Join3 { OrJoin ( 1 )ꎻ # MoveUpꎬ # TakeBackꎻ #ENDꎻ ꎻ ꎻ ꎻ } #END{EndMission()ꎻ #Join3ꎻ ꎻ ꎻ ꎻ ꎻ } 每一条描述语句的格式是相同的: 任务标号{任务类型及参数ꎻ前驱任务标号ꎻ成 功执行后发起的任务标号ꎻ成功后终止的任务标号ꎻ 失败后发起的任务标号ꎻ失败后终止的任务标号ꎻ超 时值}. 描述语句中各项用分号隔开ꎬ若某一项任务标 号为空ꎬ可以不写或写上“NULL”ꎻ若在超时值处为 空或写上“NEVER”ꎬ则超时值为无穷. 图 8 任务示例(任务工作流) Fig.8 An example of AUV task flow (task workflow) 网路中任一表示流程的箭头ꎬ将既被发起它的 前驱任务描述ꎬ又被接纳它的后继任务描述ꎬ任务间 的依赖关系便由此衔接起来.对单个任务的简单叠 加就得到了整个任务网.每一条语句就是对模型中 一个任务及其外延的流关系的直接描述ꎬ故图中任 务方框的个数与描述语句数相同.描述语句没有先 后顺序可言ꎬ任务流程描述文件的格式是相当灵活 的.规定这样的描述语言ꎬ是为了计算机能直接读取 任务文本ꎬ自动按流程发起任务并对任务进行操作 和管理.由于此描述语言格式规范ꎬ因此完全可以开 发相应的应用软件ꎬ让建模者直接以图形方式建模ꎬ 而由程序自动生成模型的文本描述. 在程序实现中ꎬ每个任务类对应一个 C++类ꎬ 且每个任务类都继承统一的基类ꎬ在其中定义通用 的数据类型和方法ꎬ包括对结束状态的判断ꎬ以及与 外界通信的手段.如上例中ꎬ#Join1、#Join2、#Join3 都 属于 OrJoin 类型ꎬ它们都会采用一份相同的代码来 实现. 5 任务管理程序的实现 作为实验室水下机器人模块化软件系统的一部 分ꎬ基于上述原理与实现方式的水下机器人任务建 模与管理系统已经成功开发ꎬ并在仿真平台和陆地 机器人实验中得到了验证.这里仅简述此系统的几 个特点: 1)所有的任务类型需提前编写(用 C++语言) 并编译完成.任务流程的描述由文本化的任务描述 文件提供ꎬ系统读取文本中的任务类型名ꎬ自动生成 对应的 C++类的实例并执行此任务.任务只有在需 要时才动态生成ꎬ执行完成后销毁ꎬ以节约内存空 间.这涉及到 C++中用字符串动态生成对象的技巧. 2)此系统提供任务流程更改的全套接口.无论 任务位于文本描述文件中ꎬ还是正在内存中执行ꎬ都 有标准的接口用于更改任务的流关系及类型ꎬ以便 第 5 期 张鸿皓ꎬ等:水下机器人任务流程建模与管理 􀅰437􀅰
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有