MOOS-ivp 实验七 关于Helm Autonomy的介绍(1)
看了看博客记录,从9月22日开始学习MOOS,随着时间推移今天已经10月27日了。不知不觉时间过了一个多月了,所进行的实验也来到了实验七。试验七的主要内容无疑也就是对Helm进行初步的学习,废话不多说,下面开始实验。
文章目录
前言
今天的实验,将要创建一个自动驾驶的功能。通过编辑helm配置文件就可以实现。首先需要配置一个.moos文件,接下来需要对helm模块进行配置,需要配置一个.bhv文件。从之前下载过的alpha任务和MOOS-ivp tree开始进行构建。下面是需要构建的一些更复杂的应用程序:
(1)基础的helm结构
(2)高等级的helm状态——使用helm来驱动水下机器人
(3)执行alpha自动驾驶任务
(4)在alpha 任务执行过程中理解helm的作用
(5)使用pMarineViewer控制任务的进行
(6)修改alpha任务,使其接受返回点的指令
(7)建立单、双Loiter Bravo 任务
(8)建立周期性浮出水面的双Loiter Bravo 任务
一、Helm的简要介绍
1.Helm的基础结构
helm是一个MOOS的应用程序,具有很多MOOS应用程序的功能。其运行基础是 pHelmIvP。helm是一个基于行为的架构。其他应用会和Helm协同进行工作,比如传感器处理以及规划、通信等工作。
在下面的示意图中,所有的行为要么会产生一组发布到MOOSDB的变量,要么会产生一个目标函数,在每次循环迭代里,helm最小都会发布一组变量对,来代表自己当前的决策行为。典型的变量一般会有DESIRED_HEADING 和DESIRED_SPEED,当helm在水下机器人中执行时,也会发布DESIRED_DEPTH。
解释一下上图的行为标注:
(1)邮件从MOOSDB中读取信息,并被解析和存储在本地的缓存区中,以供行为来进行使用
(2)如果任务行文文件里有任何关于模式的声明,那么在这一步进行相关评估
(3)在循环迭代结束的时候,每一个ivp动作都会被查询其贡献,并且可能会产生一个函数或者变量列表,发布到MOOSDB中去
(4)目标函数可以被分解为一个动作,并产生一组变量对
(5)所有变量对都发布到MOOSDB中去,以供其他应用程序使用。
在每次迭代过程中,行为都可以从缓冲区内的邮件获取消息,就像其他的MOOS应用程序一样。行为(ivp behavior)采用并行手段,可以高效的执行。helm按照每个行为的贡献度来进行列表,但是因为这些行为都在相同的信息缓冲器上进行操作,而且每一个行为的输入跟其他行为的输出无法构成关联,所以他们的执行都是并行和独立的,并不相互干扰。在求解器(solver)中行为进行协调,最后会在 heading, speed 和 depth选择一个单一的变量。另外补充一点,可能一些行为会在下一轮循环中选择这一轮输出的变量作为输入,当然在给定的循环之中,他们的行为都是相互独立的。