我是靠谱客的博主 纯真白开水,最近开发中收集的这篇文章主要介绍MOOS-ivp之第一个MOOSApp:向MOOSDB发布数据前言环境介绍MOOS-ivp架构脚本构建MOOSApp向MOOSDB发布数据验证,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前言

我来填坑了,网上关于moosivp的教程实在太少了,感觉这个非常冷门,而官方的教程有部分内容说的不是很清楚,部分命令和新版的有点对不上。不出意外的话这个系列我应该会一直写完吧,同时能力有限,有什么不对的地方,欢迎指正。
转载请注明出处!!!!
原文链接

环境介绍

官方教程链接 建议去看看
vm虚拟机 ubuntu 18.04
MOOS-ivp 19.8.1

MOOS-ivp的安装可以参考我上一篇博文

MOOS-ivp架构

MOOS-ivp整体架构

在这里插入图片描述
MOOS-ivp的架构是由最基础的MOOSApp+MOOSDB+ivp-Helm构成。
MOOSApp可以接收外部传感器数据,实现用户业务,以及更新ivp行为参数 (有关行为的部分后续再说)
MOOSDB消息传递服务器,负责消息的统一分发。MOOSApp会发布数据到MOOSDB,其他MOOSApp可以订阅该数据。
ivp-Helm运行ivp行为,收集ivp行为输出的目标函数进行多目标优化。

MOOSApp结构

在这里插入图片描述
MOOSApp主要是这三个函数
OnStartUp() 用于初始化MOOSApp,自己代码中初始化的部分可以放这儿。
OnNewMail() 拆邮件,接收订阅的数据。
Iterate() 迭代,类似线程的RUN,或者说main中的while(1),每秒的运行次数根据app的moos配置。

脚本构建MOOSApp

下载MOOS-ivp拓展

官方提供了一个脚本,用于构建MOOSApp,运行这个脚本之后,会生成MOOSApp最基础的一些函数,根据自己的需要去编写。
首先下载moos-ivp-extend,需要确保下载的路径和安装moosivp路径相同。

svn co https://oceanai.mit.edu/svn/moos-ivp-extend/trunk moos-ivp-extend

然后进入到目录进行编译

 cd ~/moos-ivp-extend
 ./build.sh

添加到环境变量中

vi ~/.bashrc 

最后面添加

export PATH=$PATH:~/moos-ivp-extend/bin

生效环境变量

source ~/.bashrc

确保环境变量能找得到,如果没有任何输出,请检测环境变量

which pXRelayTest

构建MOOSApp

cd到src目录下

cd ~/moos-ivp-extend/src

使用脚本构建MOOSApp,MyTestApp是app的名字,后面引号中是作者名。官方教程的命令有一点问题,应该是这个。这个脚本在 ~/moos-ivp-extend/bin 的路径下。

 MyGenMOOSApp MyTestApp p "NXM"

生成moosapp文件夹内部
MyTestAppMain.cpp APP的入口函数,基本不用动。
pMyTestApp.moos APP的一些初始化参数。
在这里插入图片描述
src 目录下的CMakeLists.txt中添加构建的app,注意是src目录下。

#============================================================================
# List the subdirectories to build...
#============================================================================
ADD_SUBDIRECTORY(lib_behaviors-test)
ADD_SUBDIRECTORY(pExampleApp)
ADD_SUBDIRECTORY(pXRelayTest)
ADD_SUBDIRECTORY(pMyTestApp)              #   添加这一行

至此MOOSApp的构建完成。

向MOOSDB发布数据

向MOOSDB发布数据很简单,只需要使用 Notify 函数。
在上一步生成的MyTestApp.cpp中找到 Iterate 函数,添加

   Notify("My_TestVal",3.1415);//发布的消息名称和数据

然后cd到moos-ivp-extend目录进行编译

 cd ~/moos-ivp-extend
 ./build.sh

验证

向配置文件中添加自己构建的app

cd ~/moos-ivp-extend/missions/alder

找到alder.moos文件

//------------------------------------------
// Antler configuration  block
ProcessConfig = ANTLER
{
  MSBetweenLaunches = 200

  Run = MOOSDB		@ NewConsole = false
  Run = uSimMarine	@ NewConsole = false
  Run = pNodeReporter	@ NewConsole = false
  Run = pMarinePID	@ NewConsole = false
  Run = pMarineViewer	@ NewConsole = false
  Run = uProcessWatch   @ NewConsole = false
  Run = pHelmIvP	@ NewConsole = false
  Run = pOdometry	@ NewConsole = false
  Run = pMyTestApp	@ NewConsole = false //添加
}

启动MOOS-ivp

 pAntler --MOOSTimeWarp=10 alder.moos

在这里插入图片描述
可以看到我们编写这个MOOSApp已经在运行了。

验证MOOSDB接收的数据

再打开一个终端,使用uXMS查看MOOSDB,uMS会更加直观,但这个版本的moosivp没有。

uXMS My_TestVal

输入之后会提示输入ip和端口,直接回车即可。
在这里插入图片描述

最后

以上就是纯真白开水为你收集整理的MOOS-ivp之第一个MOOSApp:向MOOSDB发布数据前言环境介绍MOOS-ivp架构脚本构建MOOSApp向MOOSDB发布数据验证的全部内容,希望文章能够帮你解决MOOS-ivp之第一个MOOSApp:向MOOSDB发布数据前言环境介绍MOOS-ivp架构脚本构建MOOSApp向MOOSDB发布数据验证所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部