MOOS-ivp 实验三 MOOS简介(2)

继上一篇文章继续对实验进行记录


文章目录

  • MOOS-ivp 实验三 MOOS简介(2)
  • 四、Launching a Mission with pAntler
    • 1.Basic pAntler Usage
    • 2.An Example: Launching the MOOSDB along with uXMS
  • 五、Scripted Pokes to the MOOSDB
    • 1.uTimerScript解读
    • 2.uTimerScript练习
  • 总结

四、Launching a Mission with pAntler

一组MOOS应用通常需要多个终端界面来进行打,这使得其操作变得很麻烦,而pAntler可以将这些内容通过一个mission文件进行表达,在这个文件中,一行代码声明的所有app都可以通过调用pAntler来启动。pAntler

1.Basic pAntler Usage

基本上所有的.moos文件的配置程序的第一部分都是pAntler。一般使用ProcessConfig = Anlter声明如下内容:

ProcessConfig = ANTLER
{MSBetweenLaunches = 200
Run = MOOSDB  @ NewConsole = true/false
Run = AnotherApp  @ NewConsole = true/false
...
Run = AnotherApp  @ NewConsole = true/false
}

其中,MSBetweenLaunches = 200是设定启动进程之间的毫秒数,这里设置为200毫秒。其后每一行都指定了需要打开的应用以及是否为其打开控制台窗口。除了普通的启动配置之外,启动配置还包括了用别名给应用进行启动以及配置更详细的参数进行启动,具体内容可以参见网站的文档。

2.An Example: Launching the MOOSDB along with uXMS

这里做一个实验,我们使用pAntler来启动MOOSDB的同时启动uXMS。

1.首先先创建一个mission文件并且将其保存为db_and_uxms.moos。其内容为:

// (wget http://oceanai.mit.edu/2.680/examples/db_and_uxms.moos)
ServerHost = localhost
ServerPort = 9000
Community = alpha
ProcessConfig = ANTLER
{MSBetweenLaunches = 200
Run = MOOSDB  @ NewConsole = false
Run = uXMS  @ NewConsole = true
}
ProcessConfig = uXMS
{AppTick  = 4
CommsTick = 4
VAR  = DB_CLIENTS, DB_UPTIME, DB_TIME
DISPLAY_SOURCE = true
DISPLAY_TIME  = true
COLOR_MAP  = DB_CLIENTS, red
}

当然也可以通过更简单的方式获得输入以下命令,从官网中下载示例文件:

wget --no-check-certificate http://oceanai.mit.edu/2.680/examples/db_and_uxms.moos

接下来输入以下命令进行执行

pAntler db_and_uxms.moos

这位uXMS打开了一个新的命令控制窗口,并且通过初始配置打开了source和time,但是没有community
如下图所示:

3.uXMS的配置块内容可以通过在命令行输入:

uXMS --example

来进行查看,此时实验要求对启动文件进行修改,使其可以查看DB_UPTIME变量的历史消息记录,以及打开一个新的控制台窗口。修改启动文件如下:

ServerHost = localhost
ServerPort = 9000
Community  = alphaProcessConfig = ANTLER
{MSBetweenLaunches = 200Run = MOOSDB     @ NewConsole = falseRun = uXMS       @ NewConsole = true
}ProcessConfig = uXMS
{AppTick   = 4CommsTick = 4history_var    = DB_UPTIMEDISPLAY_SOURCE = trueDISPLAY_TIME   = trueCOLOR_MAP      = DB_UPTIME, redcontent_mode = history    // default (or history,procs)
}

添加进去了启动模式为history,修改了scope的变量,修改之后输出界面为:

五、Scripted Pokes to the MOOSDB

1.uTimerScript解读

因为此部分内容需要知道一些关于uTimerScript模块参数的配置,所以需要先对其进行格式上的学习,具体资料可以参考网站:

uTimerScript
uTimerScript模块可以让用户编写一些预先配置好的设置发布到MOOSDB中,以下是配置事件列表的具体格式

event = var=<MOOSVar>, val=<value>, [time=<time-of-event>]

关键词event、val、var、time都不区分大小写,但是<>中的内容需要注意大小写。

1.设置时间范围 time-of-evet
此时间设置必须是一个大于等于零的值,其代表含义是启动app或者从暂停状态再启动之后所经历的时间。在配置表中列举的配置内容不需要自己进行排列,uTimerScript会按照顺序执行。而我们在设置时间的时候可以把时间设置成如下形式,其中5:10的意思是在5s-10s的时间内概率平均的发生此事件。

event = var=COUNTER_A, val=10, time=5:10

2.重置脚本
一个脚本的重置,可以通过脚本之外的变量重置来实现,或者脚本内部来进行设置。 外部设置UTS_RESET为“reset 或者“ture”可以对脚本进行重置。如果要重置这个参数的名字,用另外的参数进行替代,可以用调用以下格式:

reset var = <moos-variable> // Default is UTS RESET

设置reset的时间参数,这个参数也可以设置为all-posted,表示所有时间发布结束后重置,当UTS_RESET发生设置的时候,不论reset的时间设置为多少都会立即重置:

reset time = <time-or-condition> // Default is "none"

以下参数用来配置可以重置的最大次数,一般默认是nolimit不对其进行限制:

reset max = <amount> // Default is "nolimit"

以下配置可以在重新启动时指定脚本重新计算相关的时间参数

shuffle = false // Default is "true"

如果要对脚本进行暂停可以使用以下命令,其参数是一个bool量,为真时暂停,为假时关闭暂停。而下面的命令是对外部应用发布控制暂停的变量进行命名,默认是UTS_PAUSE

paused = <Boolean>
pause var = <MOOSVar> // Default is UTS PAUSE

使用逻辑条件来对脚本进行暂停,下面是一个示例的用法

condition = <logic-expression>
condition  = NAV_DEPTH < 0.2

2.uTimerScript练习

1.练习要求:
(1)将代码进行改进,使得一开始是暂停状态,可以通过uPokeDB来进行启动
(2)同时打开两个uXMS界面进行变量观察,观察的变量分别命名为COUNTER_A和COUNTER_B,分别在两个uTimerScript模块中进行计数
(3)加入一个逻辑条件语句来控制变量的计数,使得COUNTER_A>5的时候COUNTER_B开始进行计数。
(4)添加pLogger模块使得可以观察脚本运行的系统日志

2.通过上面的解释我们可以通过设置

paused=ture

来使得脚本一开始处于暂停状态,启动脚本可以输入如下命令进行启动:

uPokeDB UTS_PAUSE=false  utscript.moos

3.建立两个uTimerScript模块需要分别起不同的名字,可以看到在是否启动控制台选项之后就可以对模块单独进行起名。

ProcessConfig = ANTLER
{MSBetweenLaunches = 200Run = MOOSDB       @ NewConsole = falseRun = uXMS         @ NewConsole = true ~uXMS_COUNTER_ARun = uXMS         @ NewConsole = true ~uXMS_COUNTER_BRun = uTimerScript @ NewConsole = false ~uTimerScript_COUNTER_ARun = uTimerScript @ NewConsole = false ~uTimerScript_COUNTER_BRun = pLogger      @ NewConsole = false
}

启动界面时可以看到出现两个控制台,分别观察两个不同变量

4.需要加入一个条件语句来,使得COUNTER_A>5的时候COUNTER_B开始进行计数。

condition = COUNTER A > 5

5.在脚本中,添加pLogger模块

ProcessConfig = pLogger
{AsyncLog = true
WildCardLogging = true
WildCardOmitPattern = *_STATUS
}

运行结束之后可以找到脚本日志,可以通过下面的命令查看跟变量相关的具体内容

aloggrep COUNTER_A COUNTER_B  MOOSLog_29_9_2020_____15_37_36/MOOSLog_29_9_2020_____15_37_36.alog

可以看到脚本内容如下所示:

7.所有脚本代码:

ServerHost = localhost
ServerPort = 9000
Community  = alphaProcessConfig = ANTLER
{MSBetweenLaunches = 200Run = MOOSDB       @ NewConsole = falseRun = uXMS         @ NewConsole = true ~uXMS_COUNTER_ARun = uXMS         @ NewConsole = true ~uXMS_COUNTER_BRun = uTimerScript @ NewConsole = false ~uTimerScript_COUNTER_ARun = uTimerScript @ NewConsole = false ~uTimerScript_COUNTER_BRun = pLogger      @ NewConsole = false
}ProcessConfig = uXMS_COUNTER_A
{AppTick   = 4CommsTick = 4VAR            = COUNTER_A, DB_CLIENTS, DB_UPTIMECOLOR_MAP      = COUNTER_A, redHISTORY_VAR    = COUNTER_A
}ProcessConfig = uXMS_COUNTER_B
{AppTick   = 4CommsTick = 4VAR            = COUNTER_B, DB_CLIENTS, DB_UPTIMECOLOR_MAP      = COUNTER_B, redHISTORY_VAR    = COUNTER_B
}ProcessConfig = uTimerScript_COUNTER_A
{AppTick   = 4CommsTick = 4paused = truepause_var = UTS_PAUSEevent  = var=COUNTER_A, val=1,  time=0.5event  = var=COUNTER_A, val=2,  time=1.0event  = var=COUNTER_A, val=3,  time=1.5event  = var=COUNTER_A, val=4,  time=2.0event  = var=COUNTER_A, val=5,  time=2.5event  = var=COUNTER_A, val=6,  time=3.0event  = var=COUNTER_A, val=7,  time=3.5event  = var=COUNTER_A, val=9,  time=4.5event  = var=COUNTER_A, val=10, time=5.0reset_max  = nolimitreset_time = all-posted
}ProcessConfig = uTimerScript_COUNTER_B
{AppTick   = 4CommsTick = 4paused = truepause_var = UTS_PAUSEcondition = COUNTER_A > 5event  = var=COUNTER_B, val=1,  time=0.5event  = var=COUNTER_B, val=2,  time=1.0event  = var=COUNTER_B, val=3,  time=1.5event  = var=COUNTER_B, val=4,  time=2.0event  = var=COUNTER_B, val=5,  time=2.5event  = var=COUNTER_B, val=6,  time=3.0event  = var=COUNTER_B, val=7,  time=3.5event  = var=COUNTER_B, val=8,  time=4.0event  = var=COUNTER_B, val=9,  time=4.5event  = var=COUNTER_B, val=10, time=5.0reset_max  = nolimitreset_time = all-posted
}
ProcessConfig = pLogger
{AsyncLog = true
WildCardLogging = true
WildCardOmitPattern = *_STATUS
}

总结

我以为两个篇章能写完,结果内容有点多,我扩充到三篇来写吧。

MOOS-ivp 实验三 MOOS简介(2)相关推荐

  1. MOOS-ivp 实验三 MOOS简介(3)

    MOOS-ivp 实验三 MOOS简介(3) 继上一篇文章继续对实验进行记录 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 MOOS-ivp 实验三 MOOS简介(3) ...

  2. MOOS-ivp 实验三 MOOS简介(1)

    MOOS-ivp 实验三 MOOS简介(1) 实验三主要包含三个实验目标: 1.moos发布-订阅结构体系 2.启动MOOSDB并且进行交互 3.日志记录器的运行与生成 文章目录 MOOS-ivp 实 ...

  3. 计算机课实验三,成都信息工程学院计算机网络课程实验三

    成都信息工程学院计算机网络课程实验三 本文关键词:成都,计算机网络,信息工程学院,课程,实验 成都信息工程学院计算机网络课程实验三 本文简介:计算机网络实验报告实验三:编写客户服务器程序班级xxxxx ...

  4. 测试软件jm,软件测试实验三jm.ppt

    文档介绍: 软件测试实验三JmJmeteragendaJmeter简介Jmeter安装脚本录制脚本开发Web压力测试数据库测试性能测试上机实验****题Jmeter简介-概述Jmeter是Apache ...

  5. MOOS-ivp 实验四 MOOS编程入门(2)MOOS类讲解

    MOOS-ivp 实验四 MOOS编程入门(2)MOOSapp类讲解 文章目录 MOOS-ivp 实验四 MOOS编程入门(2)MOOSapp类讲解 前言 一.MOOSapp父类的结构和方法 1.使用 ...

  6. MOOS-ivp 实验五 MOOS编程进阶(3)

    MOOS-ivp 实验五 MOOS编程进阶(3) 经过近日的学习与摸索,我来重新完善以下实验五的相关内容,上次做到三分之二的内容放弃了,主要原因还是因为C++功底不够深厚,需要更多的学习和积累.经过我 ...

  7. MOOS-ivp 实验四 MOOS编程入门(1)

    MOOS-ivp 实验四 MOOS编程入门(1) 文章目录 MOOS-ivp 实验四 MOOS编程入门(1) 前言 一.MOOS概览 1.MOSS应用程序结构 2.定义在MOOSmsg上的便携函数(h ...

  8. MOOS-ivp 实验五 MOOS编程进阶(2)

    MOOS-ivp 实验五 MOOS编程进阶(2) 今天继续我的实验,感觉每个实验都要被卡住,这种感觉真的好难受,但是如果把问题成功的解决掉,又会给人以非常大的成就感.今天写这篇博客,希望我可以相对顺利 ...

  9. 用计算机计算线性卷积的基本规则,实验三_线性卷积与圆周卷积的计算.doc

    实验三_线性卷积与圆周卷积的计算 电信类课程试验报告 学 院:基础信息工程系 别:电子信息工程课程名称:数字信号处理姓 名:学 号:日 期:实验三实验名称:线性卷积与圆周卷积的计算一.实验目的 (1) ...

最新文章

  1. 成功爬取-CVE-2018-15982漏洞复现【博客园】【1】
  2. 在brew开发中遇到的一些问题
  3. IDEA无法识别pom.xml文件,内容全部显示为灰色,或者无颜色
  4. windows11推出:win10可免费升级,支持安卓APP,减重40%
  5. 使用循环链表解决约瑟夫环问题
  6. [spfa][差分约束] 洛谷 P3084 照片Photo
  7. 编译时错误之 error C2338: tuple_element index out of bounds
  8. 工作148:父子组件传值 获取时间戳
  9. CCNA初认识——ACL命令
  10. 基于‘BOSS直聘招聘信息’分析企业到底需要什么样的PHPer
  11. 基于Linux2.6下的按键驱动开发步骤
  12. java8 hashmap_Java8 中的 HashMap
  13. MVC创建通用DropdownList
  14. 西门子 S7-200以太网模块连接MCGS组态软件方法
  15. 集丰照明|如何深度解读 LED 标准?
  16. matlab 堆图,堆积条形图Matlab
  17. 获赞36w,小红书近期的流行趋势是什么?
  18. 小程序设置appId
  19. 腾讯互娱技术总监张正:《天涯明月刀》后台技术创新
  20. #路由配置以及华为路由协议优先级

热门文章

  1. 6s手机为什么不显示4g网络连接服务器,苹果iPhone6S 设置4G网络的方法
  2. 新技能get,微信提现这样操作可免手续费
  3. python将英文翻译为中文_Python使用百度翻译开发平台实现英文翻译为中文功能示例...
  4. 分类评价指标:TP、TN、FP、FN、Recall,以及人脸识别评价指标TAR、FAR、FRR
  5. 听“Siri之父”讲述Siri背后的故事
  6. 电商网站商品模型之商品详情页设计方案
  7. 2022Q3手机配件增长榜:手机壳、数据线等供求不断增加
  8. Android系统音量调节策略学习总结
  9. Arduino IDE下的stm32环境搭建、OLED液晶显示(U8g2lib库)、NUCLEO-F411测试、STM32F103C8T6在Arduino下的液晶显示、
  10. 怎样搜索计算机文档,怎么样快速搜索电脑文件 Windows系统秒搜电脑文件