前言

“车辆”这个词不太准确,但是官方用词翻译过来就是这个。在整个ivp的架构中,moosapp主要作用就是处理传感器数据和控制“车辆”的运动,而各种行为是封装好控制算法,Helm行为运行决策器,发布计算后得到的控制量。

转载请注明出处
原文链接

环境配置

vm虚拟机 ubuntu 18.04
QT版本随意
MOOS-ivp 19.8.1
MOOS-ivp的安装可以参考我之前的博文
QT构建moosapp

1、发布位置信息

在平时使用的定位传感器大多是GPS和北斗之类,它们的数据是用经纬度去表示,但在moos使用的坐标系是UTM,在.moos文件中LatOriginLongOrigin配置原点位置,而且moos中提供了转换库可以直接使用。

本次是在上一篇博客中构建的qt工程中添加
pqtMoosApp.moos文件添加,并将修改后的文件拷贝到qt工程生成的可执行文件路径下

// MOOS fileServerHost = localhost //moosdb地址
ServerPort = 9000      //moosdb端口LatOrigin  = 43.825300
LongOrigin = -70.330400 //原点ProcessConfig = pqtMoosApp
{AppTick   = 4CommsTick = 4
}

qtMoosAppMain.cpp文件需要修改,脚本生成时存在一点问题

//main函数中
string sMissionFile = "qtMoosApp.moos";
//改为 加一个p
string sMissionFile = "pqtMoosApp.moos";

pro文件

# qt工程的pro文件中添加依赖
INCLUDEPATH += $$MOOSADDER/MOOS/MOOSGeodesy/libMOOSGeodesy/include
LIBS += -L$$MOOSADDER/build/MOOS/MOOSGeodesy/lib -lMOOSGeodesy

头文件

//在qtMoosApp.h 引入头文件
#include "MOOS/libMOOSGeodesy/MOOSGeodesy.h"
//类中添加定义CMOOSGeodesy m_geodesy;double dNAV_Y,dNAV_X;double dLatorign,dLongorign;

cpp文件

//qtMoosApp.cpp文件中添加
//OnStartUp函数最后添加m_MissionReader.GetValue("LatOrigin", dLatorign);m_MissionReader.GetValue("LongOrigin", dLongorign);//从配置文件读取原点m_geodesy.Initialise(dLatorign, dLongorign);//初始化位置信息//Iterate 函数添加//43.824和-70.329是传感器的经纬度m_geodesy.LatLong2LocalUTM(43.824,-70.329,dNAV_Y,dNAV_X);//转换Notify("NAV_X",dNAV_X);//发布Notify("NAV_Y",dNAV_Y);Notify("NAV_DEPTH",3.0);//深度Notify("NAV_HEADING",50.0);//偏航Notify("NAV_SPEED",2.0);//速度

在moos中显示出来

再创建一个moos配置文件,只运行MOOSDB、pNodeReporter和pMarineViewer ,其中pMarineViewer是moos自带的一个简易GUI,pNodeReporter会订阅app发布的NAV信息,然后打包成一个报表,具体可以参考官方说明。

ServerHost = localhost
ServerPort = 9000
Simulator  = true
Community  = alder
MOOSTimeWarp = 1
LatOrigin  = 43.825300
LongOrigin = -70.330400
//------------------------------------------
// Antler configuration  block
ProcessConfig = ANTLER
{MSBetweenLaunches = 200Run = MOOSDB      @ NewConsole = falseRun = pNodeReporter  @ NewConsole = falseRun = pMarineViewer  @ NewConsole = false
}
//------------------------------------------
// pMarineViewer config block
ProcessConfig = pMarineViewer
{AppTick    = 4CommsTick  = 4TIFF_FILE            = forrest19.tifset_pan_x            = -90set_pan_y            = -280zoom                 = 0.65vehicle_shape_scale  = 1.5hash_delta           = 50hash_shade           = 0.4hash_viewable        = truescope = ODOMETRY_DIST// Appcast configurationappcast_height       = 75appcast_width        = 30appcast_viewable     = trueappcast_color_scheme = indigonodes_font_size      = mediumprocs_font_size      = mediumappcast_font_size    = small
}//------------------------------------------
// pNodeReporter config block
ProcessConfig = pNodeReporter
{AppTick    = 2CommsTick   = 2VESSEL_TYPE   = KAYAK
}

启动这个moos

pAntler moosTest.moos

运行效果如下,海面上没有船只

编译qt工程并启动,会出现一个船只。

车辆位置的发布就是这样,其他传感器同理,根据行为的要求,发布到对应变量。

2、控制车辆运动

moos中的Helm行为会发布DESIRED_HEADING、DESIRED_SPEED、DESIRED_DEPTH三个变量,对应车辆的偏航,速度和深度。
车辆订阅这几个量,然后根据值控制运动即可。
这部分可以看一下pMarinePID这个行为的源码,这是moos自带的模拟器,可以看看它订阅了哪些变量。
路径在~/moos-ivp/ivp/src/pMarinePID下。

  Register("DESIRED_HEADING", 0);Register("DESIRED_SPEED", 0);Register("DESIRED_DEPTH", 0);

3、总结

moosapp部分基本完成,下一篇博客会简单写一下如何从多个moos社区(多个moosdb)中获取数据,供其他程序使用(例如网页的指控端),然后会开始写和行为相关的部分。

MOOS-ivp app发布车辆位置及控制车辆运动相关推荐

  1. 无人驾驶(三)---teleop_twist_keyboard控制底盘运动

    1. 环境配置 Ubuntu:18.04 ros: melodic 底盘控制文件启动后,可以通过teleop_twist_keyboard 和 cmd_vel 控制底盘运动 2. 启动一个键盘控制节点 ...

  2. 安卓短信加密_发短信控制车辆!苹果发布ios14,手机可作车钥匙

    1.苹果宣布今后iPhone和Apple Watch可以作为开启和启动车辆的数字钥匙: 2.支持该系统的第一款汽车将会是宝马5系: 3."车钥匙"功能将于下月推送,iOS13上也可 ...

  3. 车辆动力学及控制_传统汽车的稳定性控制系统主要通过各个车轮制动进行短暂动作...

    传统汽车的稳定性控制系统主要通过各个车轮制动进行短暂动作,来提高紧急工况下车辆的安全性能[23-33]. 对于配有独立动力系统的电动汽车,车辆的运动控制可以扩展到所有可能的稳态和瞬态工况.例如,通过开 ...

  4. App Store上架流程/苹果app发布流程

    App Store上架流程/苹果app发布流程: 第一步:拥有自己的苹果开发者账号: 开发账号分为两类:99美元(发布App Store用的,也就是上架苹果商店用这个):299美元(企业授信证书,不用 ...

  5. 基于MPC算法控制车辆的运动轨迹

    资源下载地址:https://download.csdn.net/download/sheziqiong/85836018 资源下载地址:https://download.csdn.net/downl ...

  6. uni-app框架开发app发布流程

    uni-app框架开发app发布流程 1.首先公司申请软著 步骤:申请软著详细流程 - 阿长*长 - 博客园 (cnblogs.com) 一.安卓端 1,点击发行>原生-app云打包 正式包和自 ...

  7. Android应用市场App发布

    来自知乎 Android应用市场App发布 说到官方渠道,不得不说一些主要的大市场了,如:360.小米.应用宝.91.安卓.百度.豌豆荚.安智.现在我来一一说它们的一些简单特点. 1,360 (1)当 ...

  8. 使用python获取共享汽车平台Evcard 的车辆位置信息

    通过python获取共享汽车平台Evcard 的车辆位置信息* 我们直接开门见山,但是本文只是提供一个思路,具体还需要大家自行操作(由于是第一次写,有些许的紧张,如有错误的地方,望大家不吝赐教). 因 ...

  9. android通过代码设置铃声_Android App驱动Arduino通过蓝牙控制交流调光器

    背景知识视频教程 使用App Inventor创建Android应用​viadean.com Arduino分步指南:完整指南 - 国外课栈​viadean.com Arduino仿真和块编码 - 国 ...

最新文章

  1. 最小割 ---- 二分图最大独立集(集合冲突模型) ---- 骑士共存 方格取数(网络流24题)
  2. java 内存屏障类型_Java内存模型精讲
  3. 架构:Android 组件化开发
  4. C++ 工厂模式(设计模式)
  5. Kylin安装Version1.6.0
  6. PAT乙级(1023 组个最小数)
  7. android引入开源项目方法,和解决android-support-v4.jar冲突问题
  8. 2018年线程与多线程面试必知必会内容
  9. 文件压缩 ZipOutputStream类
  10. 【数学建模】CUMCM-2017A CT系统参数标定及成像 思路及部分代码
  11. 滴滴『技术高层』再生变,高级副总裁章文嵩将离职,他曾为阿里云CTO,投身开源20年...
  12. Android Project Butter 黄油计划
  13. qt各版本下载链接(含Qt5.5下载链接)
  14. 基因测序技术发展历史及一、二、三代测序技术原理和应用
  15. vue 二维码+条形码识别
  16. 字符串的方法练习------Python篇
  17. simulink/stateflow官方案例之自动变速器
  18. 「技术综述」人脸脸型分类研究现状
  19. HDU 6217 BBP Formula (数学)
  20. 文献阅读 Learning Meta Face Recognition in Unseen Domains 2020 CVPR

热门文章

  1. 带动画的好看的按钮集合HTML + CSS各种好看按钮组件
  2. 表单验证工具类ValidationUtils
  3. 快手网址 - KuaiShou.NET
  4. Jenkins 前端 自动化发版/CICD
  5. 华为OD机试 - 消消乐游戏(Java JS Python)
  6. 显示器几种常见的接口
  7. html点击弹出文本框,html制作,点击文字超链接显示文本框,再点击文字超链接隐藏文本框...
  8. 计算机辅助cad3dmax,对Auto CAD3DMAXOpen GL在计算机辅助机械设计中应用分析.doc
  9. 纯CSS实现下雪、下雨、落叶效果
  10. 微信模板消息 群发 突破 4条限制