近实时仿真与控制助自主水下航行器实现水下机动航行
作者 Ivan Stenius 和 Sriharsha Bhat,瑞典皇家理工学院
同空中航行器一样,自主水下航行器 (AUV) 更适用于对大型载人航行器来说太危险或根本无法尝试的许多应用领域。例如,北极探索、水下建桥与管道检查,以及水产养殖自动化,这些应用通常需要 AUV 行驶一段距离才能到达目标位置。航行器一旦到达目标位置,可能就需要执行敏捷操纵(即水下机动航行),以采集图像、视频和其他重要数据。
受诸多因素的影响,开发这些 AUV 的控制算法错综复杂。其中,最严峻的挑战是无线电信号在水中会发生衰减,这使得 AUV 在深海远程作业时无法可靠地接收 GPS 或通迅信号。由于缺乏这种通信,AUV 的自主作业能力就显得愈加重要。
AUV 设计中的工程权衡
采用就地悬停设计的 AUV,通常搭载多个推进器,这使得 AUV 体积庞大,因而无法轻松完成远距离航行。另一方面,虽然细长型 AUV 的航程更远,但受限于形状,再加之缺乏多个推进器,这些 AUV 在到达目标位置后,更难悬停或使摄像头和其他传感器朝向感兴趣的目标。
SAM 是小型经济型海洋机器人的缩写,它是由瑞典皇家理工学院的海洋机器人中心 (SMaRC) 基于对航程与操纵性之间的这种权衡考量而开发的。SAM 长 1.4 米,重约 15 公斤,只需一名操作人员即可轻松驾驭。其造价相对较低,这使得用若干个 AUV 进行多航行器作业成为了可能。为了保持 SAM 小巧轻便,我们为它配备了相对较小的电池组和数量有限的传感器。
SAM 的单个推进器内配有两个反向旋转的螺旋桨。它还带有额外的配平子系统,用于改变其浮力和重心位置。因此,尽管 SAM 具有敏捷性,但仍动力不足。为此,它需要使用我们团队开发的高级控制系统来执行精准的操纵,并充分利用体载传感器。另外,在开发这些控制系统的同时,还需要在其仿真速度与保真度之间进行工程权衡。虽然计算流体动力学有助于实现高度精确的流体流动仿真,但是,完成仅运行我们的一个控制算法测试所需的计算就需要长达数天的时间。相比之下,我们在 Simulink 中创建的航行器运动仿真近乎实时运行,并且可以十分准确地用于对定性行为建模,从而使我们能够在 AUV 上测试控制方法之前,先在仿真中快速验证和优化这些方法。
AUV 建模
AUV 建模是一项复杂的任务,因为流体动力学特性随流动条件而变化。例如,受紊流的影响,在大迎角下产生的力与小迎角下产生的力大相径庭。为了解释这种复杂性,我们创建了各个 AUV 组件的流体动力学模型,然后使用空气动力学建模中常用的方法(即组件组合法),将这些模型组合在了一起。
对于外部组件(或湿组件),如 AUV 的壳体和喷嘴,我们使用了现有的最佳数据,对流体动力学特性进行了建模。这些数据以查找表的形式包含在了我们的 Simulink 模型中。它们来自于各种数据源。例如,对于小迎角,我们使用了 CFD 仿真中的数据。而对于大迎角,我们则使用了基于 USAF 稳定性与操纵性 DATCOM 公式的 MATLAB 脚本。最后,对于 AUV 的旋翼,我们使用了 XFOIL 软件包中的数据,该软件包用于执行翼型空气动力学计算。我们会根据水的密度和粘度对其进行调整。
我们的 Simulink 模型还包括内部组件,如可变浮力系统 (VBS)、用于横向重心 (TCG) 配平的旋转配重,以及我们可以前后移动用于纵向重心 (LCG) 配平的质点。我们在 Simscape™ 中对这些子系统的质点和作动器进行了建模,以便于轻松地将各种组件组合到更大的被控对象模型框架中(图 2)。
控制器的建模与仿真
我们一旦有了准确反映 AUV 的动态特性和行为的被控对象模型,就可以开始在 Simulink 中使用 Control System Toolbox™ 进行控制器建模和仿真。
我们早期的控制系统包含一组比例积分微分 (PID) 控制器。通过从加速度计、罗盘、深度计和其他体载传感器获取输入,每个控制器都与单个自由度相关联。最近,我们已经开始评估模型预测控制 (MPC) 方法,包括线性、线性时变和非线性 MPC 方法,以及线性二次调节器 (LQR) 设计。
通过将控制器模型与被控对象模型连接起来,我们针对特定的水下机动航行运行了闭环仿真。这些航行活动的复杂程度各异,简单到保持特定位置,复杂到沿水平面和垂直面执行紧凑的循环操纵(图 3)。控制器使用了各种方法,从简单的脚本化序列到基于优化的方法,如 LQR 和 MPC。
仿真一直是开发和实现有效控制策略的利器。例如,在一种情况下,我们希望 AUV 执行倒立摆操纵,其中涉及到航行器向后俯冲,保持垂直方向,然后向上移动,直到其前端露出水面。如果我们仅限于使用 AUV 本身进行试验,则为这种操纵找到一种有效的控制策略将极其困难。所幸的是,通过仿真,我们能够快速尝试各种 MPC 设计和 PID 控制器组合,并在 MATLAB 中生成详细的仿真结果图(图 4),以了解哪种方法最为有效。
代码的生成和验证
通过仿真确定了可能有效的控制策略后,我们沿两条路径之一准备在 AUV 上进行测试。在某些情况下,我们只需根据 Simulink 控制器模型编写控制代码。或者,我们使用 Simulink Coder™ 直接从模型生成 C 代码,并使用 ROS Toolbox 将其作为独立的机器人操作系统 (ROS) 节点部署在 AUV 上。
当我们在 AUV 上测试控制器时,通常是在贮水池或海中进行现场测试期间,我们将航行器的性能和行为与仿真结果进行了比较。我们一致认为,从定性的角度而言,AUV 在现场测试中的行为与仿真行为很相似(图 5)。
当前和将来的研究
在执行水下机动航行时,AUV 处于需要精准控制的作业模式。AUV 的第二种作业模式适用于在开放水域中远距离航行。该模式优先考虑的是路径跟随和最小能耗,而不是精准定向。基于这两种作业模式,我们当前正在研究更高级的策略,以便在不同控制器之间进行自适应切换。
我们小组还将利用建模和仿真来评估可能对 AUV 本身所作的改进。例如,我们有位同事在 AUV 被控对象模型的前端增设了一个抓手。尽管我们还没有抓手的物理硬件,但该同事借助仿真设计了一个 LQR 控制器,该控制器可对使用抓手时可能遇到的冲激载荷和其他扰动作出正确的响应。我们也将探索类似抓手的应用。该抓手装在 AUV 的侧面,使航行器能够锁定到一个或多个相同的 AUV,并开始作为一个多智能体系统运行。
出版年份 2022