无人潜水艇的 MATLAB/Simulink 设计与仿真(下)

2022-6-1 17:50| 发布者: MsM18| 查看: 745| 评论: 1|原作者: 周玲,吴悠

摘要: 本文将开始带大家设计无人潜艇的控制器了,文末还将为大家提供模型链接。
在《无人潜水艇的设计与仿真(上)》中,我们提到了船舶无人化的广阔应用前景,比如:海上救助打捞、海底设备检修、海洋考察等,无人潜水艇能有效减少人员费用的支出并提高航行的安全性。
同时,作为新兴的先进海洋装备,无人潜水艇需要攻克动力、导航、通讯和船体控制等技术难题。
在上文中,我们带大家建立了详细的无人潜艇动力学模型及环境模型。下面在本文中,我们将开始带大家设计无人潜艇的控制器了。文末,我们还将为大家提供模型链接。

设计控制算法
接下来我们设计一个简单的反馈控制算法,该算法允许潜水艇遵循一组预定义的机动路线,比如螺旋式下潜、转弯或密集扫描模式
纵向速度仅由主螺旋桨调节:

深度由倾角间接控制,倾角又由垂直推进器调节:

航向由水平推进器调节:

设计好控制算法,我们仿真下螺旋式下潜的轨迹,并且在 Simscape 里快速地实现一个3D运动可视化。


开发自主算法
2.1 调度器
调度器提供了基于自主任务各个阶段的任务序列,根据当前任务向路径规划器提供输入,并生成一组路径点后启动仿真,每个阶段将自动填充起点和目标姿态,并选择期望的路径类型。
调度器可以是在 MATLAB 里写代码实现,也可使用 Stateflow 来图形化地编写。
我们以一个寻找水下黑匣子任务为例,它分为五个阶段:
1)下潜:螺旋式运动到所需深度,然后开始测量
2)测量:按照密集扫描路径(lawnmover pattern)用多波束声呐(multibeam sonar)来测绘海底地图,同时用一个单独的水下麦克风来监听未知位置的黑匣子发出的 ping 声波信号,如果没收到 ping 信号,继续测绘
3)搜索:收到多次黑匣子发出的 ping 信号后,三角定位黑匣子的预期位置,再导航到黑匣子的预期位置上方,并通过螺旋式运动下潜靠近海底
4)检查:在遇到障碍物的情况下,执行过驱动控制生成替代轨迹以靠近海床
5)重新浮出水面:如果出现故障或发现黑匣子,立即浮出水面
在 Simulink 运行无人艇仿真的过程中,各种仿真的测量数据会自动输入到 Stateflow 调度器中,然后调度器选择合适的任务阶段,输出控制指令。控制指令可以包括路径类型,路径节点,终点等信息,由下一步的路径规划器计算出具体路径。

2.2 路径规划器
路径规划器根据当前任务使用 Navigation Toolbox 的 RRT 或 A* 算法生成一组路径点,基于路径类型有三种运行模式,它将起始位置和目标位置作为输入,一旦生成路径,可以为场景仿真提供位置和方位信息。
这里我们演示三种路径运行模式,由调度器来为不同的任务阶段自动选择:
  • 密集扫描路径
可以使用 A* 算法或者自定义规划器,在 MATLAB 代码实现或者是导入其他语言的算法编程

  • 低效的直线路径
由 RRT 规划器实现,主要使用无人艇的转向和升降推进器,不用主螺旋桨,能耗效率低、速度慢但是更灵巧,类似于四旋翼无人机

  • 高效的螺旋式路径
由 RRT 规划器实现,由主螺旋桨提供推动力,由侧向和升降推进器辅助转向,能耗效率高,速度快但是运动轨迹有限的运动行为,类似于固定翼飞机

2.3 场景仿真
MATLAB 可以通过 UAV Scenario Designer 来很方便地实现简单的场景仿真和潜艇对指定路径的跟随,同时使用惯性导航系统和多波束声呐给潜艇定位并生成海底地图。
用户可以通过修改传感器模型中的噪声参数来模拟无人艇对运动方向和位置的测量不准确性等情况。

2.4 Simulink 与 3D 仿真引擎 Unreal Engine(R)的联合仿真
如果用户想实现场景和细节更逼真的仿真,可以通过 Simulink 的 Unreal Connection 模块,用 Simulink 里的物理建模和算法来控制 Unreal Engine(R)里的场景仿真。
Unreal 这款仿真引擎支持导入潜水艇的 CAD 文件,海床海底山石等可以在 Unreal 里画,或者使用 MathWorks 的 Road Runner 工具箱提供的场景模块(譬如石头)来组合创建,然后一键导入到 Unreal。
这样运行 Simulink 里的仿真就可以控制 Unreal 里潜水艇的运动可视化,同时用户也可以添加摄像头、激光雷达等传感器等对应的 Simulink Unreal Connection,来把 Unreal 仿真里的传感器数据导回 Simulink,来完成控制、导航算法等的闭环和测试工作。

总结
经过前面几个步骤,我们已经建立了无人艇的动力学模型和环境模型,开发了控制和路径规划算法,构建了简单的场景和逼真的场景,接下来就可以联合各组件进行测试验证了。
由于篇幅有限,如果您对某部分的实现细节很感兴趣,也想尝试做起来,请查阅如下链接:
我们也录制了一系列的讲解视频供参考:
欢迎您在留言区给我们留下您的问题与评论!

◆  ◆  ◆  ◆
相关阅读
使用 MATLAB/Simulink 设计无人机飞行控制系统
1

鲜花

握手

雷人

路过

鸡蛋

刚表态过的朋友 (1 人)

发表评论

最新评论

查看全部评论(1)

在 MATLAB & Simulink 环境中开发机器狗控制算法

最近几年,足类机器人越来越火了,频频出现在各大展会上,相信从事这方面研究的同学也很多,今天我们以四足机器人为例介绍一下 MATLAB 在其中的强大作用。 ... ... ...

MATLAB深度强化学习 | 机器狗训练避坑指南(附 FAQ 常见问题及代码下载) ...

借助MATLAB强化学习为机器狗开发智能控制算法过程中踩过的坑。

无人潜水艇的 MATLAB/Simulink 设计与仿真(上)

在本文中,我们将描述如何在 Simulink 里对一个假想的六推进器无人艇进行动力学建模,海底环境建模,以及对一个未知位置的海底黑匣子搜索任务的算法开发。 ... ... ...

无人潜水艇的 MATLAB/Simulink 设计与仿真(下)

本文将开始带大家设计无人潜艇的控制器了,文末还将为大家提供模型链接。

无人潜水艇的 MATLAB/Simulink 设计与仿真(下)

本文将开始带大家设计无人潜艇的控制器了,文末还将为大家提供模型链接。

无人潜水艇的 MATLAB/Simulink 设计与仿真(上)

在本文中,我们将描述如何在 Simulink 里对一个假想的六推进器无人艇进行动力学建模,海底环境建模,以及对一个未知位置的海底黑匣子搜索任务的算法开发。 ... ... ...

MATLAB深度强化学习 | 机器狗训练避坑指南(附 FAQ 常见问题及代码下载) ...

借助MATLAB强化学习为机器狗开发智能控制算法过程中踩过的坑。
关闭

站长推荐上一条 /6 下一条

返回顶部