开源基准测试模拟器: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后可以正常使用

### ROV 仿真 MATLAB 实现 对于ROV(水下机器人)仿真的MATLAB实现,通常涉及多个方面,包括动力学建模、控制算法设计以及传感器数据处理。下面提供了一个简单的六自由度(6DOF) ROV运动模型的MATLAB代码示例[^1]。 #### 创建ROV的动力学方程 为了模拟ROV的行为,在MATLAB中可以定义一组微分方程来描述其动态特性: ```matlab function dydt = rov_dynamics(t, y) % 定义状态向量y=[位置;速度] m = 500; % 质量(kg) Ixx = 200; % 绕X轴转动惯量(kgm^2) Iyy = 200; % 绕Y轴转动惯量(kgm^2) Izz = 300; % 绕Z轴转动惯量(kgm^2) Fx = ... ; % X方向力(N) Fy = ... ; % Y方向力(N) Fz = ... ; % Z方向力(N) Mx = ... ; % X轴扭矩(Nm) My = ... ; % Y轴扭矩(Nm) Mz = ... ; % Z轴扭矩(Nm) A = [zeros(3), eye(3); ... zeros(3), diag([Fx/m,Fy/m,Fz/m,Mx/Ixx,My/Iyy,Mz/Izz])]; B = [eye(3), zeros(3)]; dydt = A * y + B; end ``` 此函数`rov_dynamics.m`用于计算给定时间步长内ROV的状态变化率。需要注意的是,实际应用时应替换省略号处的具体数值以匹配特定类型的ROV设备参数。 #### 使用ODE求解器运行仿真 接下来利用MATLAB内置的常微分方程求解工具箱中的ode45()函数来进行数值积分并绘制轨迹图: ```matlab % 初始化条件 initial_position = [0; 0; -1]; % 初始坐标(x,y,z),假设位于水面下方1米深处 initial_velocity = [0; 0; 0]; % 静止不动 tspan = linspace(0, 10, 1e3); % 时间范围从第0秒到第10秒共取一千个样本点 options = odeset('RelTol',1e-8,'AbsTol',[1e-8 1e-8]); [t, sol] = ode45(@rov_dynamics,tspan,[initial_position; initial_velocity], options); plot3(sol(:,1)',sol(:,2)',sol(:,3)') xlabel('X Position') ylabel('Y Position') zlabel('Depth Below Surface') title('Simulated Path of an Underwater Vehicle') grid on axis equal tight ``` 上述脚本实现了对指定时间段内的ROV路径预测,并通过三维图形直观展示了该过程。 #### 控制策略的设计 除了基本物理行为外,还需要考虑如何有效地操控ROV完成预定任务。这可能涉及到PID控制器或其他高级反馈机制的应用。这部分内容超出了当前讨论范畴,但在实践中非常重要。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

仗剑走代码

“您的支持是我创作的动力”

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值