MOOS-ivp 实验十四(3)behavior的分层模式

14 篇文章 0 订阅

MOOS-ivp 实验十四(3)behavior的分层模式

该部分将会对behavior的分层模式进行一些研究,同时记录一下我的学习过程作为学习的输出部分,也作为以后的资料供自己进行回顾。



前言

Hierarchical mode declarations (HMD)作为.bhv文件的分层模式声明,可以将使命组织成为一个任务集合,并按照某种逻辑来进行任务的执行工作。任务规划可以根据任务需求设置模式以及相关的子模式,在更复杂的任务规划中,其可以帮助程序员更好的对故障进行定位。在最开始的过程中,水下机器人主要是制定已知的任务,按照固定的任务规划去执行,主要是从一个任务转移到下一个任务,任务之间是按照单线性来进行的。但是通过分层模式的方式,可以使得任务从一个模式转向下一个模式,而且在不同环境或者情况下,可以随时进行模式的切换。这可以增强水下机器人对于不同情况的自主性以及多水下机器人协同时的交互性。


一、分层模式声明的语法-The Bravo Mission

1.分层模式声明的语法

这里将基于The Bravo Mission来进行分层模式的语法讨论,下图展现了The Bravo Mission基于分层模式的结构:
在这里插入图片描述
如上图所示,车辆将始终处于叶节点表示的模式之一。behavior可以与树中的任何节点相关联。如果一个behavior与一个内部节点相关联,它也与它的所有子节点相关联。下面就是bravo.bhv文件中关于MODE声明的部分。

//------------------------------------------------
// File: bravo.bhv
// Name: M. Benjamin
// Date: Jan 1, 2010
//------------------------------------------------

initialize   DEPLOY = false
initialize   RETURN = false

set MODE = ACTIVE {
  DEPLOY = true
} INACTIVE

set MODE = SURVEYING {
  MODE = ACTIVE
  RETURN != true
} RETURNING

//----------------------------------------------
Behavior = BHV_Waypoint
{ 
  name      = waypt_survey
  pwt       = 100
  condition = MODE == SURVEYING
  endflag   = RETURN = true
  perpetual = true

          lead = 8
   lead_damper = 1
         speed = 2.0   // meters per second
        radius = 4.0
     nm_radius = 10.0
        points = 60,-40:60,-160:150,-160:180,-100:150,-40
        repeat = 0
}

//----------------------------------------------
Behavior = BHV_Waypoint
{
  name       = waypt_return
  pwt        = 100
  condition  = MODE == RETURNING
  perpetual  = true
  endflag    = RETURN = false
  endflag    = DEPLOY = false

       speed = 2.0
      radius = 2.0
   nm_radius = 8.0
       point = 0,0
}

//* Constant Heading
Behavior=BHV_ConstantHeading
{
  name       = const_hdg
  pwt        = 100
  perpetual  = true  

	condition  = MODE==TURNING
  updates    = TURN_HEADING
  endflag    = CONDITIONS_SET = false
  endflag    = TURN_FINISH = true
	endflag    = TURN  = finish
  endflag    = TURNING = false
	
          heading = 190
         duration = no-time-limit
  complete_thresh = 4
  heading_mismatch_var = DBG_CH
}

如图所示,最开始MODE的值被设置为“”空字符,经过第一个块之后,MODE被设置为“active”或者“inactive”,在进行第二个块的评估时,会根据第一个块的结果,MODE=ACTIVE来进行判断,因此子类模块的声明需要在父类模块之后进行声明。模式被评估之后,在Phelm迭代的过程中,其就可以用作behavior的condition条件来进行处理。
在behavior中condition = MODE==RETURNING这种句子,==表示匹配字符的意思。其中"Returning" == “Active:Returning”,实际上Returning就是active中的一个子模式,但是不需要将其所属关系都写到condition中去。

2.更复杂的分层模式结构

在这里插入图片描述
如上图所示,给出了一个更为复杂的分层模式结构,其结构分为三层,可以作为condition实现的节点用绿色来进行标注加深。其中Echo也是深绿色,表明水下机器人可以位于该模式,当位于该模式时需要满足以下三个条件:1."MISSION=SURVEYING"2."SITE!=Archipelagos"3."WATER DEPTH=Medium"在进行第三层模式声明时最好使用"MODE=Alpha:Echo"的格式而不要简写。
再开始运行之后可以使用uHelmScope来对变量进行查看:

uHelmScope -r bravo.moos

3.behavior运行条件

在每一次phelm循环Iterate()执行的过程中,都会对behavior的运行条件进行检查,如果符合运行条件的behavior将会进入执行状态,给phelm输出其目标函数,来改变phelm的solver决策出的行为。
运行条件可以按照以下方式来进行参数设置:

condition = <logic-expression>
condition = (DEPLOY=true) and (STATION_KEEP != true)
condition = (MODE == LOITERING)

对于分层模式声明的使用可以简化condition表达式的书写:

condition = <mode-variable> = <mode-value>, or
condition = <mode-variable> == <mode-value>.

要注意双等于号的使用,需要在右侧是左侧子集的情况下进行使用:
在这里插入图片描述

二、分层模式声明的语法-The Bravo Mission

在这里插入图片描述
behavior在进入不同状态下回发布不同的flag,这里标注了不同flag之间的状态区别。
主要会发布以下五种flag:
在这里插入图片描述

代码如下(示例):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

2.读入数据

代码如下(示例):

data = pd.read_csv(
    'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

该处使用的url网络请求的数据。


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值