MOOS-ivp app发布车辆位置及控制车辆运动
前言
“车辆”这个词不太准确,但是官方用词翻译过来就是这个。在整个ivp的架构中,moosapp主要作用就是处理传感器数据和控制“车辆”的运动,而各种行为是封装好控制算法,Helm行为运行决策器,发布计算后得到的控制量。
转载请注明出处
原文链接
环境配置
vm虚拟机 ubuntu 18.04
QT版本随意
MOOS-ivp 19.8.1
MOOS-ivp的安装可以参考我之前的博文
QT构建moosapp
1、发布位置信息
在平时使用的定位传感器大多是GPS和北斗之类,它们的数据是用经纬度去表示,但在moos使用的坐标系是UTM,在.moos文件中LatOrigin和LongOrigin配置原点位置,而且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发布车辆位置及控制车辆运动相关推荐
- 无人驾驶(三)---teleop_twist_keyboard控制底盘运动
1. 环境配置 Ubuntu:18.04 ros: melodic 底盘控制文件启动后,可以通过teleop_twist_keyboard 和 cmd_vel 控制底盘运动 2. 启动一个键盘控制节点 ...
- 安卓短信加密_发短信控制车辆!苹果发布ios14,手机可作车钥匙
1.苹果宣布今后iPhone和Apple Watch可以作为开启和启动车辆的数字钥匙: 2.支持该系统的第一款汽车将会是宝马5系: 3."车钥匙"功能将于下月推送,iOS13上也可 ...
- 车辆动力学及控制_传统汽车的稳定性控制系统主要通过各个车轮制动进行短暂动作...
传统汽车的稳定性控制系统主要通过各个车轮制动进行短暂动作,来提高紧急工况下车辆的安全性能[23-33]. 对于配有独立动力系统的电动汽车,车辆的运动控制可以扩展到所有可能的稳态和瞬态工况.例如,通过开 ...
- App Store上架流程/苹果app发布流程
App Store上架流程/苹果app发布流程: 第一步:拥有自己的苹果开发者账号: 开发账号分为两类:99美元(发布App Store用的,也就是上架苹果商店用这个):299美元(企业授信证书,不用 ...
- 基于MPC算法控制车辆的运动轨迹
资源下载地址:https://download.csdn.net/download/sheziqiong/85836018 资源下载地址:https://download.csdn.net/downl ...
- uni-app框架开发app发布流程
uni-app框架开发app发布流程 1.首先公司申请软著 步骤:申请软著详细流程 - 阿长*长 - 博客园 (cnblogs.com) 一.安卓端 1,点击发行>原生-app云打包 正式包和自 ...
- Android应用市场App发布
来自知乎 Android应用市场App发布 说到官方渠道,不得不说一些主要的大市场了,如:360.小米.应用宝.91.安卓.百度.豌豆荚.安智.现在我来一一说它们的一些简单特点. 1,360 (1)当 ...
- 使用python获取共享汽车平台Evcard 的车辆位置信息
通过python获取共享汽车平台Evcard 的车辆位置信息* 我们直接开门见山,但是本文只是提供一个思路,具体还需要大家自行操作(由于是第一次写,有些许的紧张,如有错误的地方,望大家不吝赐教). 因 ...
- android通过代码设置铃声_Android App驱动Arduino通过蓝牙控制交流调光器
背景知识视频教程 使用App Inventor创建Android应用viadean.com Arduino分步指南:完整指南 - 国外课栈viadean.com Arduino仿真和块编码 - 国 ...
最新文章
- 最小割 ---- 二分图最大独立集(集合冲突模型) ---- 骑士共存 方格取数(网络流24题)
- java 内存屏障类型_Java内存模型精讲
- 架构:Android 组件化开发
- C++ 工厂模式(设计模式)
- Kylin安装Version1.6.0
- PAT乙级(1023 组个最小数)
- android引入开源项目方法,和解决android-support-v4.jar冲突问题
- 2018年线程与多线程面试必知必会内容
- 文件压缩 ZipOutputStream类
- 【数学建模】CUMCM-2017A CT系统参数标定及成像 思路及部分代码
- 滴滴『技术高层』再生变,高级副总裁章文嵩将离职,他曾为阿里云CTO,投身开源20年...
- Android Project Butter 黄油计划
- qt各版本下载链接(含Qt5.5下载链接)
- 基因测序技术发展历史及一、二、三代测序技术原理和应用
- vue 二维码+条形码识别
- 字符串的方法练习------Python篇
- simulink/stateflow官方案例之自动变速器
- 「技术综述」人脸脸型分类研究现状
- HDU 6217 BBP Formula (数学)
- 文献阅读 Learning Meta Face Recognition in Unseen Domains 2020 CVPR
热门文章
- 带动画的好看的按钮集合HTML + CSS各种好看按钮组件
- 表单验证工具类ValidationUtils
- 快手网址 - KuaiShou.NET
- Jenkins 前端 自动化发版/CICD
- 华为OD机试 - 消消乐游戏(Java JS Python)
- 显示器几种常见的接口
- html点击弹出文本框,html制作,点击文字超链接显示文本框,再点击文字超链接隐藏文本框...
- 计算机辅助cad3dmax,对Auto CAD3DMAXOpen GL在计算机辅助机械设计中应用分析.doc
- 纯CSS实现下雪、下雨、落叶效果
- 微信模板消息 群发 突破 4条限制