概述
前言
我来填坑了,网上关于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发布数据验证所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复