ROV水下机器人虚拟仿真系统是一套基于Unity3D开发的能够模拟机器人水下作业环境的半实物仿真系统,它由地面控制终端、机器人本体和三维虚拟仿真系统3部分组成,可以为水下机器人开发过程中的性能测试、控制算法分析和人员操作培训提供仿真和测试平台,不但能够降低水下机器人系统开发的成本,同时也可以为现有的水下机器人提供操作培训环境,进而提高培训效率。
水下机器人虚拟仿真系统开发将采用真实机器人控制终端与具有水下物理特征的三维虚拟仿真系统相结合的方法进行设计。
1. 水下机器人半实物虚拟仿真系统架构
ROV水下机器人虚拟仿真系统主要由摇杆手柄、地面控制终端、水下机器人本体以及三维虚拟仿真系统组成。
ROV水下机器人虚拟仿真系统中摇杆手柄的控制信号传输到机器人地面控制终端的工控机中,工控机通过光纤通讯的方式将控制信号传输给机器人本体的控制系统,摇杆手柄的模拟量信号通过A/D转换还可以同时输入到仿真计算机的三维虚拟仿真系统中,实现对机器人本体和仿真系统中机器人的联动控制。
此外,水下机器人作业过程中,上位机控制终端会实时采集ROV本体的潜水深度、航行速度、航行方位和机器人姿态等信息,将这些信息重新装载到ROV水下机器人虚拟仿真系统中,可再现水下机器人本体的作业过程,通过对比同一控制信号下机器人实际运动与仿真环境中的运动差异,校正仿真系统中水下环境物理参数,确保仿真系统的真实性和有效性。
2. 水下机器人可视化半实物仿真系统设计
ROV水下机器人虚拟仿真系统中的仿真计算机通过TTL数字信号与工控机进行连接并建立通信,水下机器人的传感器数据经由串口数据采集模块进入仿真系统的数据管理模块。采用Unity3D作为虚拟仿真软件分别对水下物理环境和水动力进行仿真,通过程序设计实现照明系统、声系统、水下粒子系统、推进系统和水流阻力系统的虚拟仿真。虚拟仿真获得的数据由数据输出模块输出到地面控制终端的显控计算机中,通过UDP协议建立数据交互,将显控计算机中实时获取的图像信息与解算出的机器人作业状态信息进行对比,观察运动情况,及时反馈到ROV水下机器人虚拟仿真系统中对参数信息进行修正。
2.1 水下物理环境设计
基于Unity3D对三维虚拟仿真平台进行设计,水下机器人的运动状态信息保存为sqlite数据库文件,通过软件的数据库模式读取数据库文件并采用UDP协议进行传输。Unity3D以其方便、高效以及直观的特点为用户所接受,可以被用来创建交互式应用程序。软件的编辑器允许开发人员管理项目(包括3D模型、材质、纹理、字体等等),创建必要的交互逻辑,利用该软件完成地形地貌、环境配置等空间设置,使所搭建完成的三维海洋场景在显示及控制方面具有良好的交互性,较大程度的还原三维实景,满足对真实环境的监控需要。仿真环境搭建流程如下:
(1)在Solidworks中依据实际参数对水下机器人模型、作业管道和设备模型进行绘制;
(2)利用3dsMax建立水生生物模型,并导出成Unity可识别的统一格式(.FBX格式),进而导入三维场景中;
(3)在项目工程中创建地形,利用地形编辑器,改变笔刷大小、材质和高度,设置洋中脊的距离以及起伏程度;
(4)使用贴图(Texture)和着色器(Shader)相配合,完善水生生物的材质、纹理以及灯光效果等信息的添加;
(5)调入所需应用资源包,完成天空盒子以及粒子资源的调用,海洋环境中的天空盒子可用来为周边环境设置基本颜色,粒子用来模拟螺旋桨转动时产生的气泡效果和水流效果;
(6)对项目中的模型添加刚体(Rigidbody)属性,勾选“Use Gravity”属性实现碰撞效果,勾选“Audio Source”属性添加水声音效;
(7)添加机器人相机视角、跟随视角和整体视角3种不同视角,进行不同角度的观察;
(8)提供控制接口,与显控计算机通过UDP进行数据交互。
2.2 力的仿真与计算
Unity3D对图形、音频、物理、网络等多方面提供了引擎支持,并使用编辑器来进行整合。利用软件的PhysX物理系统中的API函数能对机械力的运动状态进行仿真,通过对程序中代码的编写赋予模型及仿真环境真实的物理状态。
2.2.1 推进器的仿真
ROV本体共配置了6个推进器,2个垂直推进器平行布置,共同实现升沉和横倾两个自由度;4个水平推进器采用45°矢量环形布置的原则,有利于降低耦合产生的有害力矩,在水平方向获得更好的运动性能。
可以将所求得的推进力添加到场景中的水下机器人的推进器上。在场景中先为机器人添加刚体属性,并检测碰撞体,设置程序调用时间,通过程序编写推力曲线计算方法,为机器人的运动提供动力。
2.2.2 环境作用下的水动力仿真
环境影响是基于实际区域的洋流分布,会在每个自由度中被转化为力或力矩。作用在机器人上的外力包括流体回复力(浮力与重力的合力)、水动力以及拖曳缆绳的张力。
考虑机器人主体受螺旋桨造成的周围流场影响后,分析数据构造螺旋桨的几何模型,进而模拟螺旋桨在运动流场中的水动力特性。水流阻力主要表现为摩擦阻力和粘压阻力,水的粘性作用不可忽略,但可在设计过程中通过减小附体面积和改善机器人表面粗糙程度等手段减小粘性。
2.3 水下机器人运动仿真与姿态再现设计
提取机器人自身传感器数据,经过坐标转换,将机器人机体动坐标系下的姿态数据转换为地理坐标系下的坐标,将转换后的姿态数据应用到三维场景中的水下机器人模型上。
Unity3D软件可通过数据通信端口接收数据和发送指令,开启多个线程用于数据的接收与处理,在数据池中对数据进行处理。提取出的数据通过代码添加到程序中水下机器人模型上,运行程序后,机器人的位置、姿态信息可进行在线显示。在项目的Asset路径下,新建StreamingAssets文件夹,利用程序代码将三维坐标实时输出到建立的TXT文件所在的路径中,针对每一帧的位置变化情况,对输出值进行记录。将输出的TXT文件通过MATLAB导入数据,记录水下机器人执行各种命令时的运动轨迹。
ROV水下机器人虚拟仿真系统通过虚实结合的方式,不仅可以为机器人控制算法分析和操作人员培训提供实时性的仿真平台,而且降低成本,提升培训效率。
推荐案例:灵图互动水下机器人虚拟仿真培训系统