开源基准测试模拟器:BlueROV2 水下机器人的控制

拜读An Open-Source Benchmark Simulator: Control of a BlueROV2 Underwater Robot

非常感谢Esben Uth的帮助。

        本文介绍了在 Simulink™ 中实现的常用且低成本的遥控潜水器 (ROV) BlueROV2 的仿真模型环境,该环境已针对水下航行器的基准控制算法进行了设计和实验验证。BlueROV2 模型基于 Fossen 方程,包括车辆的运动学模型、车辆和水相互作用的流体动力学、推进器的动力学模型,最后是重力/浮力。流体动力学参数和推进器模型已在测试设施中得到验证。基准模型还包括洋流,建模为恒定速度。将 ROV 连接到顶部站点设施的系绳已使用集总质量法建模,并作为 ROV 模型的力输入实现。最后,为了展示基准模型的有用性,提出了一个案例研究,其中部署了 BlueROV2 来检查海上单桩结构。该案例研究使用了为 BlueROV2 设计的滑模控制器。控制器通过遵循提供的低误差轨迹来满足为案例研究定义的设计标准。结果表明,该模拟器为未来在环境干扰影响下的位置控制和轨迹跟踪控制方案建立了基准。

1.下载

本项目使用的是MATLAB R2024a,其他版本的不行,MATLAB 2022b版本的移步此处

2.界面介绍

 模拟选项窗格

第一部分是模拟选项窗格。要快速启动仿真,可以按下图Open Simulation按钮

        在启动模拟之前,可以更改机器人的初始设置。可以同时改变初始位置和速度。使用复选框,可以启用或禁用ROV及其运动的可视化。通过在仿真中禁用可视化,可以提高仿真速度。控制器或参考子系统可以使用左下方的按钮打开。 

参数

 在本节中,可以添加或更改用于仿真的机器人和环境参数。

        可以通过编辑相应的参数字段来更改机器人的各个参数以及环境。用户创建的机器人和
环境可以通过使用位于下拉列表旁边的垃圾桶来删除。要选择机器人或环境,请在任意一个
下拉列表中单击所需的机器人或环境。要添加新的机器人或环境,请在下拉列表中选择“添
加新”选项。

 推进器

        本节用于定义由单个推进器提供的饱和力,以及确定位于机器人上的推进器的位置、方向和方向。仿真中用于饱和推进器的上限和下限可以在各自的文本字段中进行更改。可以在BlueROV2和BlueROV2升沉配置的预定义推进器分配之间进行切换。使用“No. 2”Of thrusters”旋转器,推进器的数量可以在2到8个之间变化。每个推进器相对于六个自由度中的任何一个运动的位置、方向和方向都可以通过改变各自文本字段内的值来编辑。使用“重置TAM”按钮,可以将推进器分配矩阵重置为初始BlueROV2重型配置。记住使用“save TAM”按钮保存任何更改 。

外力

在本节中,可以启用或禁用ROV上的外力。
如图所示,可以启用或禁用洋流和系绳的影响。为了在任何六个自由度中添加自定义外力,添加了一个额外的选项,这是在“手动力量”下编辑的。在与力分组在一起的文本字段中,可以编辑任意三种力的不同参数。 

传感器干扰

         可以使用多个传感器来确定机器人的位置和速度。这些传感器可以与噪声、延迟和漂移等干扰相关联。本节使用户能够将此类干扰的效果添加到12种状态中的任何一种。
        如图所示,所有位置和速度状态都位于截面的左上角。使用每个状态的单独下拉菜单,可以选择传感器的扰动。如果选择“理想”,则没有传感器干扰会影响所选状态。在该部分的底部,位于一个表格,其中包含七个特定传感器以及一个自定义传感器。该表显示了每个传感器的以下参数。它包含状态测量,采样时间,延迟,方差和漂移。不可能改变任何传感器的状态测量值;但是,可以通过双击任意字段来编辑其余的设置。采样时间应以Hz为单位设置,且不能等于或小于零。传感器测量的延迟可以以秒为单位设置,方差可以以米、弧度或弧度每秒为单位设置,这与传感器测量的状态有关。传感器的漂移被设置为每秒增加米或弧度。只有参考发生器和控制器子系统应该被编辑,其余子系统的设置可以从应用程序中编辑。框图底部的范围允许查看b帧和n帧的位置和速度。

仿真结构

        下图显示了仿真模型的Simulink框图。如果禁用可视化选项,它们对应的块将被移除。

3.报错解决

本次主要遇到两个问题,MATLAB版本兼容问题、ROVsimulator版本冲突问题

3.1MATLAB版本的不兼容性

github上一共提供了两个版本的ROVSimulator,一个对应MATLAB 2022b,一个对应MATLAB 2024a,对应的MATLAB版本不对是无法使用ROVSimulator的。

3.2ROVSimulator版本冲突问题

错误如下:

计算 'ROV_Simulation/Reference Generator/VR Tracer' 中的 MATLAB S-Function 'vrtracer' 的注册方法 'Start' 时出错。以下是产生此错误的 MATLAB 调用堆栈(文件名和行号): ['E:\MATLAB\toolbox\sl3d\sl3d\@vrworld\open.m'] [32] ['E:\MATLAB\toolbox\sl3d\sl3d\vrtracer.m'] [147] ['E:\MATLAB\toolbox\sl3d\sl3d\+vr\callbacks.m'] [226] 原因: Error reading virtual world file: C:/Users/BP21JL/AppData/Roaming/MathWorks/MATLAB Add-Ons/Apps/ROVSimulator/Dependencies/Animation/Good_world_BlueRov.x3d: Can't open file for reading. 组件:Simulink | 类别:Block 错误

这个错误是我在起初使用的是MATLAB 2020b版本的所用到的ROVSimulato为MATLAB2022b版本的,但我在github上阅读资料包时发现,有ROVSimulato2024a版本的,于是我更新了MATLAB 2024a,并且使用了ROVSimulator2024a,但是残余的ROVSimulato导致Good_world_BlueRov.x3d路径为ROVSimulator版本的路径,后更改路径为ROVSimulator2024a/Dependencies/Animation/Good_world_BlueRov.x3d后可以正常使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/70635.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity打包APK报错 using a newer Android Gradle plugin to use compileSdk = 35

Unity打包APK报错 using a newer Android Gradle plugin to use compileSdk 35 三个报错信息如下 第一个 WARNING:We recommend using a newer Android Gradle plugin to use compileSdk 35This Android Gradle plugin (7.1.2) was tested up to compileSdk 32This warning…

HTML5特殊字符

HTML中常用的特殊符号一般都以“&”开头,以“;”结束。

本地大模型编程实战(23)用智能体(Agent)实现基于SQL数据构建问答系统(2)

本文将用 智能体(Agent) 实现对 SQLite 数据库的查询:用户用自然语言提出问题,智能体也用自然语言根据数据库的查询结果回答问题。 本次将分别在英文、中文环境下,使用 qwen2.5 、 MFDoom/deepseek-r1-tool-calling:7b 以及 llama3.1 做实验。…

nodejs npm install、npm run dev运行的坎坷之路

1、前面的种种都不说了,好不容易运行起来oap-portal项目,运行idm-ui项目死活运行不起来,各种报错,各种安装,各种卸载nodejs,卸载nvm,重装,都不好使。 2、甚至后来运行npm install会…

gotool在线工具集

1. 包含各种 sql 处理 2. 包含 json 处理 3. 包含 图片处理 4. 跨平台传输 gotool

猿大师播放器:智慧交通Web网页低延迟播放监控RTSP H.265视频解决方案

在智慧城市建设加速推进的今天,智慧交通作为城市"神经系统"正面临前所未有的发展机遇。据统计,2023年全国交通视频监控设备保有量已突破4500万台,日均产生的视频数据量超50PB。但在这些庞大数字背后,行业却普遍面临着&q…

Web自动化之Selenium控制已经打开的浏览器(Chrome,Edge)

在使用selenium进行web自动化或爬虫的时候,经常会面临登录的情况,对于这种情况,我们可以利用Selenium控制已经打开的浏览器,从而避免每次都需要重新打开浏览器并进行登录的繁琐步骤。 目录 说明 启动浏览器 注意 --user-data-dir说明 代码设定 代码 改进代…

【Alertmanager】Alertmanager告警路由,告警静默,告警抑制,高可用的实现

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

Vue3 + Vite + TS,使用 配置项目别名属性:resolve

使用 resolve 配置全局项目路径别名 1.优化了开发中单页面引用其他模块的路径复杂性 2.妥妥解决了,组件复用当中提高开发效率 // 不使用配置 import { useStore } from ../../../stores // 使用配置 可根据开发者需求任意定义,较多 import { useStore…

Linux主机用户登陆安全配置

Linux主机用户登陆安全配置 在Linux主机上进行用户登录安全配置是一个重要的安全措施,可以防止未经授权的访问。以下是如何创建用户hbu、赋予其sudo权限,以及禁止root用户SSH登录,以及通过ssh key管理主机用户登陆。 创建用户hbu 使用具有…

基于 SpringBoot Vue 的生鲜商城系统设计和实现(源码+文档+部署讲解)

技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…

设计模式-结构性模式

结构型模式主要关注类或对象的组合,旨在通过识别简单的结构关系来设计更复杂的结构。以下是几种常见的结构型设计模式: 1. 适配器模式(Adapter Pattern) 将一个类的接口转换成客户端所期望的另一个接口,使得原本由于接…

VantUI官网更新2025,移动端前端开发

Vant 2 - Mobile UI Components built on Vue https://vant-ui.github.io/vant/v2/#/zh-CN/quickstart Vant 4 - A lightweight, customizable Vue UI library for mobile web apps. https://vant-ui.github.io/vant/#/zh-CN Vant Weapp - 轻量、可靠的小程序 UI 组件库,微…

《我的AUTOSAR之路》Det 解析

Det 解析 1. 引言和功能概述2. Errors2.1 开发错误(Development Errors)2.2 运行时错误(Runtime Errors)2.3 临时故障(Transient Faults)3 错误查询默认错误追踪器(Default Error Tracer,DET) 1. 引言和功能概述 默认错误追踪器(DET):该规范描述了默认错误追踪器(…

电脑连接示波器显示波形

通过网线连接示波器和电脑,将示波器波形显示在电脑上直接复制图片至报告中,以下是配置步骤。 一、设备 网线,Tektronix示波器,电脑 二、使用步骤 1.用网线连接电脑和示波器 2.电脑关掉WiFi,查看IPv4网关地址&#xf…

npm i 失败权限问题

安装完node之后, 测试全局安装一个最常用的 express 模块进行测试 失败,但是用管理员权限打开cmd 安装就成功。 报错如下: npm ERR! If you believe this might be a permissions issue, please double-check the npm ERR! permissions of the file and …

上海创智学院(测试)算法笔试(ACM赛制)部分例题

1.第一个题,大概题目意思是求n句话中最长的单词和最短的单词 这个题目做的有点磕巴,好几年没有写过c/c了,连string的复制都不会写了,哈哈哈,太笨了 后面一点点捡起来,还是写出来了,本身没啥&…

编写一个程序,输出 “Hello, World!“(Python版)

编写一个程序,输出 "Hello, World!" 在 Python 中,输出 “Hello, World!” 的程序非常简单。你只需要使用 print 函数即可。以下是代码示例: print("Hello, World!")将这段代码保存为一个 .py 文件(例如 hel…

python实战项目58:采集蜻蜓FM热门音频top排行榜

python实战项目58:采集蜻蜓FM热门音频top排行榜 一、采集流程介绍二、数据接口采集三、使用xpath提取页面数据1、抓包,找到数据接口2、发送请求,获取数据3、提取数据4、保存数据一、采集流程介绍 蜻蜓FM热门音频top排行榜的链接为: https://m.qingting.fm/rank/,首页如下图…

【Matlab仿真】Matlab Function中如何使用静态变量?

背景 根据Simulink的运行机制,每个采样点会调用一次MATLAB Function的函数,两次调用之间,同一个变量的前次计算的终值如何传递到当前计算周期来?其实可以使用persistent变量实现函数退出和进入时内部变量值的保持。 persistent变…