现代计算机软硬件技术的飞速发展,为仿真技术的发展奠定了坚实的基础,仿真系统得到了越来越广泛的应用。建立仿真系统对于ROV等水下机器人主要具有两方面的作用:一方面可以在仿真环境下开展功能验证,尽早发现系统中存在的问题,降低水池或海上试验的风险;另一方面可通过仿真系统对操作人员进行模拟训练,大幅降低培训成本并保证培训的安全性[1-2]。
国内外在ROV仿真系统的研究和应用已经取得了不少成果。加拿大GRI公司开发了仿真系统Vortex ROV,为ROV操作人员提供模拟培训;国内哈尔滨工程大学也基于Vortex建立了一套功能相对齐全、模拟效果逼真、满足仿真要求的ROV仿真系统[3]。
以往ROV仿真的研究及应用通常采用纯虚拟仿真技术,主要用于模拟培训。为了对ROV控制系统的软硬件架构、程序逻辑、数据接口、可靠性等进行更加有效的验证,中国船舶科学研究中心研究了ROV半实物仿真平台的技术方案,并实现了自主研发的观测级ROV的半实物仿真系统。
1 观测级ROV本文建立的仿真系统理论上可用于各种缆控潜器(ROV),这里主要针对某观测级ROV,如图1所示。该观测级ROV用于海南省重大科技计划项目,由中国船舶科学研究中心自主研制,目前已完成水池试验和海上试验。
图2为观测级ROV半实物仿真系统的架构,左侧虚框内为实物部分,即ROV控制系统,右侧虚框内为虚拟的ROV仿真系统。
ROV控制系统实物硬件上包含显控计算机和航控嵌入式计算机。显控计算机采用Intel x86-64平板电脑,安装Windows10操作系统,外接操控手柄作为输入设备。显控计算机运行显示控制程序,主要用于水面人机交互,可以发送用户的操控指令,并对ROV的状态数据和摄像机视频进行显示。航控嵌入式计算机采用arm 64的嵌入式计算机,安装嵌入式Linus操作系统,运行航行控制程序,主要用于ROV航行运动控制及状态数据采集,可根据ROV当前状态和操控指令解算推进电机转速。
ROV仿真系统的硬件是仿真计算机,采用Intel x86-64图形工作站,配置nvidia RTX 2080显卡,安装Windows10操作系统,主要用于运动仿真和视景仿真。其运行运动仿真程序基于国产多领域建模仿真软件MWorks实现,可根据推进电机转速实时求解出ROV的位置和姿态;运行视景仿真程序基于跨平台视景仿真软件Unity3D实现,可模拟摄像机/灯光设置,并根据ROV的位置和姿态进行视景实时渲染。
ROV半实物仿真系统软件的信息流如下:
1)显示控制程序将操控指令发送给航行控制程序,并接收航行控制程序采集的ROV状态信息;
2)航行控制程序将推进电机转速发送给运动仿真程序,并将观察设备控制指令发送给视景仿真程序;
3)运动仿真程序将产生的位置姿态数据发送给航行控制程序和视景仿真程序;
4)视景仿真程序将视景渲染产生的视频发送给显示控制程序。
ROV半实物仿真系统中,显控计算机、航控嵌入式计算机、仿真计算机通过高速以太网进行连接,其网络数据通信通过OPC UA协议实现[4]。航控计算机的航行控制程序中包含OPC UA服务器,其建立了通信数据的OPC UA信息模型,显控程序和仿真程序作为OPC UA客户端对信息模型进行读写操作,以实现数据获取或者指令发送。相对于传统TCP,UDP等通信协议,使用OPC UA进行网络数据通信,软件之间耦合度更低,更易于系统集成调试。仿真计算机内部的运动仿真程序和视景仿真程序,通过内存映射文件技术进行数据共享,实现进程间的数据通信。
3 ROV运动控制仿真该观测级ROV的运动仿真根据水下机器人的六自由度运动方程[5](式(1)为动力学平衡方程,式(2)为运动学转换方程)进行计算,同时考虑了水流、波浪等环境影响,其中水动力系数根据CFD模拟计算获得[6]。
$ {{\boldsymbol{M}}}_{v}{+{\boldsymbol{C}}}_{RB}\left(v\right)v+{{\boldsymbol{C}}}_{A}\left({v}_{\xi }\right){v}_{\xi }+{\boldsymbol{D}}\left({v}_{\xi }\right){v}_{\xi }+{\boldsymbol{g}}\left(\eta \right)=\tau +\xi \text{,} $ | (1) |
$ \eta ={\boldsymbol{J}}\left(\eta \right)v\text{。} $ | (2) |
其中:
ROV的动力学求解在MWorks软件上实现,MWorks采用多领域统一建模语言Modelica,支持基于方程的陈述式建模,相对于基于传统的因果建模更适于表达复杂系统的物理结构,其实现流程如图3所示。
观测级ROV运动控制中最重要的是定深和定向功能。航行控制程序对深度、航向这2个自由度进行闭环控制,首先读取自由度反馈值,计算自由度偏差,然后通过控制算法得到自由度位置控制量,最后解算出6个推进电机的推力分配和电机转速[7]。控制算法使用PID算法(式(3)),其控制参数需要在实际实验中进行调整。
$ U\left(\mathrm{t}\right)={K}_{p}E\left(t\right)+{\int }_{0}^{t}{K}_{i}E\left(t\right){\rm{d}}t+{K}_{d}\frac{{\rm{d}}E\left(t\right)}{{\rm{d}}t} \text{。}$ | (3) |
图4为定向测试的仿真实验结果。t=0时设开始下潜,到达6 m时启动自动定深。实验结果表明定深功能正常,能以当前值定深或改变目标值后重新定深。
图5为定向测试的仿真实验结果。t=0时设置目标航向值270°,启动自动定向;然后取消自动定向;再设置目标航向值300°,启动自动定向;最后设置定向目标值90°。实验结果表明定向功能正常,能以当前值定向或改变目标值后重新定向。
Unity3D引擎具有开放性好、支持跨平台等优点,目前在虚拟现实、视景仿真等领域得到广泛的应用。图6为基于Unity3D的观测级ROV视景仿真实现流程。
1)场景对象建模
视景仿真首先需要给ROV和其他场景对象建模。在设计过程中已经用CATIA软件制作了该观测级ROV几何模型。将此几何模型导入到三维建模软件3DS MAX中,进行模型层级关系调整和曲面网格简化,并增加表面材质、纹理信息得到贴图模型[8]。因为Unity3D中采用的是左手坐标系,在3DS MAX中需要将模型沿X轴旋转90°,以保证视景模型在导入Unity3D后初始欧拉角为0°。为了增加视景仿真的真实感,可以在场景中增加其他对象,包括鱼、珊瑚、水草、海葵、海胆等海洋动植物,在3DS MAX可以通过创建AEC对象来创建,也可以下载现有的3DS MAX动植物模型。场景对象建模完成后,保存成FBX文件格式。
2)搭建水下和水面场景
将场景对象FBX文件导入Unity3D后,搭建水下和水面场景,主要任务是水下地形地貌、水下和水面视景效果的生成和展现。Unity3D包含了地形编辑Terrain工具,而真实的地形数据一般通过数字高程模型(DEM)进行描述,Unity3D展示真实地形需要在Terrain中导入DEM数据[9]。具体过程如下:首先通过Global Mapper等地图软件将DEM数据保存成文本格式,然后将绝对的高度值转换成Terrain需要的高度差值,最后对terrain.terrainData赋值完成高程数据导入。在Terrain中还需要进行贴图以实现更真实的地形地貌效果。水下和水面的视景效果通过Unity3D的插件AQUAS Water实现,该插件可以设置水下的雾效果、气泡效果、能见度、光学折射效果等属性,也可以设置水面的水面颜色、波浪纹理和强度等属性。
3)确定场景对象展示
通过C#脚本二次开发,Unity3D可通过内存映射文件从运动仿真程序读取当前时刻、观测级ROV的位置、姿态、速度、角速度等数据。当运动仿真程序更新频率太低时,可在当前时刻位置、姿态的基础上,加上速度/角速度与时间间隔的乘积进行修正。为避免读取数据阻塞影响视图的渲染效率,需要通过独立的线程实现数据读取,而不是在Unity3D主线程的Update()函数中实现。
在Unity3D中可设置多个摄像机,实现第一人称视角和第三人称视角的转换。当采用第一人称视角时模拟真实摄像机,需读取OPC UA的摄像机焦距、云台旋转角度等参数改变摄像机设置;当采用第三人称视角时,可通过C#脚本实现第三人称摄像机跟随ROV自动转动。Unity3D还需要读取OPC UA的灯光亮度,以该改变场景中的灯光设置。根据摄像机/灯光设置,按ROV和其他场景对象的三维位姿将其投影到二维平面,可确定实际展示的场景对象。
4)视景实时渲染及输出
Unity3D完成视景实时渲染并输出到流媒体服务器,通过H264/265格式进行视频压缩编码,然后以RTSP流媒体协议传输到显控计算机,模拟摄像机的视频显示。
5 结 语本文研究和实现了观测级ROV半实物仿真系统,该系统能模拟ROV在水中的运动,并具有逼真的视景展示效果,其运动控制功能通过了仿真实验验证。该系统基于OPC UA协议建立半实物仿真架构,软件耦合度较低,方便进行调试和验证。后续将进一步研究机械手、导航设备、声呐设备等的模拟仿真,以提升半实物仿真系统的完整性和真实性。
[1] |
丁忠军, 高翔, 刘保华. 蛟龙号载人潜水器驾驶与操纵训练模拟系统[J]. 哈尔滨工程大学学报, 2019, 40(3): 440-448. |
[2] |
方亮, 袁书明, 杜红松. 潜艇操纵模拟器综述[J]. 舰船科学技术, 2010, 32(1): 141-143. DOI:10.3404/j.issn.1672-7649.2010.01.028 |
[3] |
张黎. 基于vortex的水下机器人仿真[D]. 哈尔滨: 哈尔滨工程大学, 2017.
|
[4] |
赵宴辉, 聂亚杰. OPC UA技术综述[J]. 舰船防化, 2010(2): 33-37. |
[5] |
CACCIA M, INDIVERI G, VERUGGIO G. Modeling and identification of open-frame variable configuration unmanned underwater vehicles[J]. IEEE Journal of Oceanic Engineering, 2000, 25(2): 227-240. DOI:10.1109/48.838986 |
[6] |
许孟孟, 冯正平. 复杂外形潜水器旋转水动力的计算[J]. 上海交通大学学报, 2018, 52(7): 764-769. |
[7] |
曾俊宝, 李硕. 便携式自主水下机器人控制系统研究与应用[J]. 机器人, 2016, 38(1): 91-97. |
[8] |
张晓曦, 尹勇, 梁民仓. 蛟龙号下潜及水下作业过程的交互仿真开发[J]. 系统仿真学报, 2018, 30(7): 2715-2721. |
[9] |
迟迎. ROV作业视景仿真技术研究[D]. 哈尔滨: 哈尔滨工程大学, 2013.
|