MOOS程序解析记录(6)uSimMarine解析2
MOOS程序解析记录(6)uSimMarine解析2
文章目录
- MOOS程序解析记录(6)uSimMarine解析2
- 前言
- 一、Simulation of External Drift
- 1.External X-Y Drift from Initial Simulator Configuration
- 2.External X-Y Drift from Initial Simulator Configuration
- 二、The ThrustMap Data Structure
- 1.Automatic Pruning of Invalid Configuration Pairs
- 2.Automatic Inclusion of Implied Configuration Pairs
- 总结
前言
接上文继续,上文主要分析了关于uSimMarine中航向、深度、速度等值的计算公式和相关代码,本章内容将继续介绍uSimMarine APP的其他相关内容。
一、Simulation of External Drift
在AUV实际航行过程中,很可能会因为外部的环境发生坐标偏移,该部分内容主要是关于模拟XY坐标漂移的内容,如果进行环境仿真时,可以通过其他模拟海流APP进行外部漂移的计算,以此来对AUV在海流中行进状态进行模拟。
1.External X-Y Drift from Initial Simulator Configuration
在进行外部漂移设置时,可以通过设置参数:drift_x、drift_y来对坐标漂移进行设置,或者通过设置drift_vecor同时进行设置。
2.External X-Y Drift from Initial Simulator Configuration
关于海流漂移的uSIM订阅变量如下:
DRIFT X, DRIFT Y, DRIFT VECTOR,这三个变量可以对漂移大小进行设置
DRIFT VECTOR ADD:在当前漂移向量的基础上增加漂移量,下面是一段模拟风对AUV影响的脚本
DRIFT VECTOR MULT:该值对漂移的向量进行乘法,为2时,漂移向量增加2倍,为-1时向量方向反向
这些接口可以在 uTimerScript脚本中写,或者由其他模拟海流或者气流的MOOAapp来进行发布。
二、The ThrustMap Data Structure
推力图是一种数据结构,其主要目的是用来模拟推力和速度之间的关系。这是在uSimMarine配置块中配置的,推力映射参数包含逗号分隔的冒号分隔对列表。分隔列表中的每个元素都是一个映射组件。在每个组件中,冒号左边的值是推力值,另一个值是相应的速度。下面是一个以字符串形式给出的示例映射,并在下图中呈现。
1.Automatic Pruning of Invalid Configuration Pairs
推力图的域为【-100,+100】之间,整个推力映射设置是需要由小到大逐步递增。
设置格式如下:
thrust_map = -120:-5, -100:-3.5, -75:-3.2, -10:-2, 20:2.4, 50:4.2, 80:4.8, 100:5.0, 120:6
thrust_map = -100:-3.5, -75:-3.2, -10:-2, 20:2.4, 50:4.2, 80:4.8, 90:4, 100:5.0
thrust_map = -100:-3.5, -75:-3.2, -10:-2, 0:0, 20:2.4, 50:4.2, 80:4.8, 100:5.0
thrust_map = -100:-3.5, -75:-3.2, -10:-2, 0:1, 20:2.4, 50:4.2, 80:4.8, 100:5.0
对于第一种情况,对“-120:-5”和“120:6”将被忽略,因为它们在
(100−100)域。
在第二种情况下,对“90:4”将被忽略,因为它的包含将导致给定前一对“80:4.8”的非单调映射。
在第三种情况下,“0:0”将被有效地忽略,因为它隐含在所有的地图配置中。
在第四种情况下,pair“0:1”将被忽略,因为不允许从非零速度映射到零推力
2.Automatic Inclusion of Implied Configuration Pairs
译文:由于域[−100,100]是不可变的,当或如果用户提供没有明确映射−100或100推力值的配置时,推力映射会自动更改一点。在这种情况下,缺失的映射变为隐含映射。
代码如下:
thrust_map = -75:-3.2, -10:-2, 20:2.4, 50:4.2, 80:4.8
thrust_map = -100:-3.2, -75:-3.2, -10:-2, 20:2.4, 50:4.2, 80:4.8, 100:4.8
下面给一段关于添加推力图对的源码:
bool ThrustMap::addPair(double thrust, double speed)
{if((thrust < m_min_thrust) || (thrust > m_max_thrust)) {m_figlog.addWarning("Thrust Out of Range:" + doubleToString(thrust));return(false);}//超过范围不予记录,并发出讲稿if(thrust > 0) {if(speed >= 0) {map<double, double> new_pos_mapping = m_pos_mapping;//按照map double对的形式来对变量对进行存储new_pos_mapping[thrust] = speed;if(isAscendingMap(new_pos_mapping))m_pos_mapping = new_pos_mapping;else {m_figlog.addError("Non-Ascending pair rejected: ");m_figlog.augError(doubleToStringX(thrust));m_figlog.augError(":" + doubleToStringX(speed));return(false);}}else {// 不合逻辑的情况,推力大于0,速度小于0m_figlog.addError("Mapping negative speed to positive thrust: ");m_figlog.augError(doubleToStringX(thrust)+":");m_figlog.augError(doubleToStringX(speed));return(false);}}else if(thrust < 0) {if(speed <= 0) {map<double, double> new_neg_mapping = m_neg_mapping;new_neg_mapping[thrust] = speed;if(isAscendingMap(new_neg_mapping))m_neg_mapping = new_neg_mapping;else {m_figlog.addError("Non-Ascending pair rejected: ");m_figlog.augError(doubleToStringX(thrust));m_figlog.augError(":" + doubleToStringX(speed));return(false);}}else {m_figlog.addError("Mapping positive speed to negative thrust: ");m_figlog.augError(doubleToStringX(thrust)+":");m_figlog.augError(doubleToStringX(speed));return(false);}}else if((thrust == 0) && (speed != 0)) {m_figlog.addError("Mapping a non-zero speed to zero-thrust: ");m_figlog.augError(doubleToStringX(speed));return(false);}return(true);
}
总结
采用了两小节的篇幅,基本上将MOOS中的仿真模型部分解释清楚了,其优点在于方程非常直观易懂,每一个变量的在公式中的作用都解释的比较清楚,而且在一定程度上算是比较符合实际,但是也同样有一定的问题,比如:模型精度上肯定是远远不能和运动学动力学方程去比较。
如果要精细建模的话,建议在该方程基础上加入自己的模型去进行仿真,或者去进行模型预测等等。
MOOS程序解析记录(6)uSimMarine解析2相关推荐
- DNS服务器(DNS服务器构建,特殊的解析记录,多域名DNS服务器架构,DNF主从架构,DNS主从数据同步)
学前提示: 需要两台虚拟机 虚拟机A:主机名位svr7 IP:192.168.4.7 虚拟机B:主机名pc207 IP:192.168.207 一.进行环境的设置 1.修改两台虚拟机的SELinux ...
- 域名申请·多域名SSL证书申请·SSL证书认证流程·CAA解析记录添加
环境:VPS:CentOS8 1.申请域名 通过阿里云申请一个域名就好,博主申请了个人域名.top,第一年6元 2.添加一条IPV4的DNS解析记录 阿里云-控制台-域名解析-解析设置-添加新纪录 这 ...
- MOOS程序解析记录(6)pLogger
MOOS程序解析记录(6)pLogger 最近在使用数据记录的时候,发现了自己对于PLogger并不是很熟悉,很多语法规则并不是很懂,于是便升起了记录一下该模块的心思,虽然这个模块并不能算多重要,但是 ...
- MOOS程序解析记录(7)pMarinePID解析
MOOS程序解析记录(7)pMarinePID解析 花了一天多的时间,对pMarinePID的源码进行了阅读,这里做一个分析记录,为后面改进控制算法做好基础. 前言 pMarinePID应用程序实现了 ...
- MOOS程序解析记录(1)
系列文章目录 我将自己学习MOOS程序中的一些记录记载到这里 文章目录 系列文章目录 前言 一.C enum(枚举) 二.std::vector 1.vector 2.容器特性 3.基本函数实现 三. ...
- GPS使用记录NMEA数据解析、RTK定位以及ntrip协议
目录 1. 概述 2. 泰斗GPS定位模组 3. RTK GPS定位 4. ntrip协议 5. 千寻 1. 概述 本文主要是记录下GPS相关的内容.最开始叫做<泰斗GPS使用记录>,那时 ...
- 动态更新阿里云DDNS解析记录的IPv6地址,随时随地用域名远程访问自己的电脑【如何远程访问家里的电脑】
远程访问电脑 日志 简介 要求 1. 获取两台电脑 2.IPv6网络 2.1检查光猫 2.2检查路由器 2.3配置电脑防火墙 2.3.1添加ICMPv6协议 2.3.2配置SMB协议 2.4配置远程桌 ...
- 【Python文本处理】基于运动路线记录GPX文件解析,心率、速度、时间、功率、踏频、海拔等参数的生成和更改,以及GPX循环拼接
[Python文本处理]基于运动路线记录GPX文件解析,心率.速度.时间.功率.踏频.海拔等参数的生成和更改,以及GPX循环拼接 GPX文件本身其实就是坐标.海拔.时间.心率等综合性的xml文件 如图 ...
- 冯诺依曼计算机程序及其执行,第4章冯.诺依曼计算机:机器级程序与其执行练习题答案解析...
第4章冯.诺依曼计算机:机器级程序与其执行练习题答案解析 (20页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.9 积分 第 4 章 冯.诺依曼计算 ...
最新文章
- oracle dataguard 日志 很多no,oracle dataguard 日志传输原理
- PHP设计模式系列 - 解释器模式
- java workerdone_【架构】Java并发编程——线程池的使用
- 【design pattern】工厂方法模式和抽象工厂模式
- WriteFile API简介
- JSONObject 与 JSONArray 使用
- laravel 图片
- ButterKnife View 注入
- UIPickView的基本使用
- 20. Valid Parentheses[E]有效的括号
- 视频教程-IP地址划分(CCNA魔鬼训练营系列)-思科认证
- 松下PLC项目实例,两台CPU间通过RS485通讯,10轴定位控制
- QQ音乐api 最新版,亲测可用
- 微信小程序背景图片设置问题
- WebRTC源码架构浅析
- 解决build.gradle文件报错No candidates found for method call xxxxxxx
- 下面关于在dos停止mysql_下面关于在DOS停止MySql的命令中,正确的是 (5.0分)_学小易找答案...
- 101.新拟物渐变加载特效
- 搜索引擎lucene点滴
- 美国哪些公司实习生工资高?Facebook每月给5万5
热门文章
- [2019蓝桥杯国赛B组c++][最优包含][排列数][解谜游戏][第八大奇迹]
- Linux基础 Day02
- js中singleton模式解析及运用
- 如何下载完整的ie6sp1
- 你是我最想要的朋友——《天高地厚》
- 【Linux】入门介绍
- 【历史上的今天】12 月 14 日:计算复杂性理论先驱出生;雅虎群组被关闭;W3C 召开第一次会议
- 由于Windows无法加载这个设备所需要的驱动设备,导致这个设备工作异常(代码31)VMware Virtual Ethernet Adapter for VMnet1 or VMnet8
- DD-WRT 的优点
- 红旗linux中科红旗发布Linux7.0 RC1桌面版操作系统