一种实现水下机器人实时仿真的方法

文档序号:6308965阅读:428来源:国知局
一种实现水下机器人实时仿真的方法
【专利摘要】本发明涉及一种实现水下机器人实时仿真的方法,将虚拟现实技术应用到水下机器人实时仿真领域,实现了对水下机器人运动状态的直观观察;借助计算机图形库的强大图形建模和渲染能力,将仿真平台搭建在DirectX环境下对水下机器人进行仿真的方法。本发明实现了三维软件建模模型和计算机图形库所需模型的对应,简化了数据读入量,增大了测试渲染效果时的灵活性;配合Direct2D和DirectWrite平面库,实现了仿真系统的用户界面问题,自定义的方式使得界面美观合理,避免使用传统木讷的用户界面框;有良好的拓展性。
【专利说明】一种实现水下机器人实时仿真的方法

【技术领域】
[0001]本发明涉及实时仿真领域,尤其是一种实现水下机器人实时仿真的方法。

【背景技术】
[0002]水下机器人主要用于大坝水下构筑物检测和清刷,其工作环境特殊,水下机器人现实作业时,先将其放入水中漂浮起来,再由控制人员操控游戏手柄控制推进器螺旋桨旋转速度,将其调整为侧立姿态,贴在大坝墙体上行走,其在大坝中的位置实时改变着。期间,伴随水流、水深的影响,其姿态也会产生一定波动,同样是实时变化的。而现实作业中无法用肉眼直接观察其运动情况;而由于传感器传回的数据量大,值变化快,且多个传感器的操作界面并不相同,操作人员和观察人员很难直观、快速地了解水下机器人的运动和其在水下的具体位置。


【发明内容】

[0003]本发明要解决的技术问题是:提出一种将虚拟现实技术应用到水下机器人实时仿真领域,实现了对水下机器人运动状态的直观观察;借助计算机图形库的强大图形建模和渲染能力,将仿真平台搭建在DirectX环境下对水下机器人进行仿真的方法。
[0004]本发明所采用的技术方案为:一种实现水下机器人实时仿真的方法,包括以下步骤:
[0005]I)利用三维软件完成水下机器人三维建模,创建水下机器人实体模型;并分别细化和缩减模型层次以获得面片数多、细节丰富的高模和面片数少、只具有基本造型特征的低模;将低模展开UV,并将高模分别渲染为低模的法线贴图、漫反射贴图和光照贴图,留作水下虚拟场景中渲染使用;
[0006]2)设计水下虚拟场景;
[0007]3)将机器人模型以OBJ文件格式输出以获取各实体表面的数据,然后提取顶点坐标和面片信息写入TXT文件格式,在D3D环境下将其导入仿真系统中;实现三维实体模型由三维软件向D3D的转换;同时,在虚拟场景中绘制模型时计算其顶点法线向量和正切向量用于渲染;
[0008]4)校准虚拟场景世界坐标系和安装在真实的水下机器人框架上用于接收姿态数据的陀螺仪坐标系,确保虚拟环境中机器人模型的姿态摆动方向和真实环境相同;校准虚拟大坝和真实大坝的尺寸比,缩小超短基线、水深传感器数据的比例;
[0009]5)使用HLSL配合C++应用程序渲染虚拟场景和水下机器人模型,从效果文件(.fx)计算每个模型顶点的光线向量,根据步骤3)中得到的顶点信息插值计算每个像素点的漫反射、镜面反射、环境光、法线贴图等材质信息;确定计算机更新频率,并以时间为自变量设定步骤2)中水下景物、灯光产生动态效果所需的物理方程;
[0010]6)编写通信协议;让仿真系统实时接收来自真实水下机器人陀螺仪、超短基线和水深传感器的数据,并每帧更新虚拟场景中机器人模型的三维位置和姿态,再现真实机器人在水下的运动状态。
[0011]进一步的说,本发明所述的步骤3)中,将水下机器人三维模型低模每个顶点的位置坐标、每个三角形面片上三个顶点的编号、排列数据写入到TXT文件后在D3D水下虚拟场景中读入,同时计算模型顶点的法线向量、切线向量;将水下虚拟场景中景物模型导出为自定义类型文件,包含其顶点位置、法线向量、切线向量、UV贴图信息和三角形面片拓扑信息;
[0012]再进一步的说,本发明所述的步骤4)中,根据虚拟场景世界坐标系X、Y、Z轴和水下机器人实物框架上安装的陀螺仪坐标系X、Y、Z轴的对应关系,确定俯仰角、横滚角、航向角所绕的轴及它们的正反向;根据真实测定的大坝尺寸和声呐定位原点,确定水下机器人实物位置数据缩小到虚拟场景中所需的比例和偏移量;
[0013]再进一步的说,本发明所述的步骤6)中,使用Winsock中TCP/IP客户端协议传输陀螺仪姿态数据、超短基线和水深传感器的位置数据到虚拟场景中,并根据步骤4)中确定的转换算法解析为相应的数据传给机器人模型和场景光照,仿真系统每帧刷新后台缓冲区将新的模型位置、姿态显示到屏幕上。
[0014]本发明的有益效果是:
[0015]a、实现了三维软件建模模型和计算机图形库所需模型的对应,只提取模型的顶点和拓扑索引关系,大大简化了数据读入量。各模型材质在模型进入D3D后再进行设定,省去了每次修改模型材质都要重新回到三维软件中调整的麻烦,方便在D3D中直接修改,增大了测试渲染效果时的灵活性;
[0016]b、由于DirectX和Winsock都是WindowsAPI,故只要将虚拟环境作为客户端,通过简单的消息函数即可实现水下机器人传回的传感器数据和虚拟环境的通信,减小了开发不必要的复杂性,只需在了解Windows下各种API接口的交互方法后,即可专注在仿真效果和准确性上,更多地考虑算法和效率问题;
[0017]C、配合Direct2D和DirectWrite平面库,实现了仿真系统的用户界面问题,自定义的方式使得界面美观合理,避免使用传统木讷的用户界面框;
[0018]d、可按照逻辑合理地定义水下机器人模型的运动原理,而不必受到三维动画软件、游戏引擎既定的物理运动的限制,有良好的拓展性;
[0019]e、由于采用C++直接编程开发,故很容易增添新的功能或与其他部分,如水下机器人控制方面交互、配合,并且省去了版权问题;
[0020]f、可在水下机器人实体正在作业时实现仿真系统的回放,查看之前的数据;还能在作业结束后,将传感器传回的姿态、位置、水深数据保存为TXT文档,方便以后分析。

【专利附图】

【附图说明】
[0021]下面结合附图和实施例对本发明进一步说明。
[0022]图1是本发明的仿真方法流程图;
[0023]图2是本发明的软件流程图。

【具体实施方式】
[0024]现在结合附图和优选实施例对本发明作进一步详细的说明。这些附图均为简化的示意图,仅以示意方式说明本发明的基本结构,因此其仅显示与本发明有关的构成。
[0025]如图1、2所示,一种在C++图形库DirectX环境下实现水下机器人实时仿真的方法。其原理是:在三维建模环境下,构建水下机器人实体模型和大坝虚拟水下场景,将机器人模型以OBJ文件格式输出以获取各实体表面的数据,然后提取顶点坐标和面片信息写入TXT文件格式,在D3D环境下将其导入仿真系统中,实现三维实体模型由三维软件向D3D的转换,同时,在虚拟场景中绘制模型时计算其顶点法线向量和正切向量用于渲染。校准虚拟场景世界坐标系和安装在真实的水下机器人框架上用于接收姿态数据的陀螺仪坐标系,确保虚拟环境中机器人模型的姿态摆动方向和真实环境相同;校准虚拟大坝和真实大坝的尺寸比,合理缩小超短基线、水深传感器数据的比例,以免超出虚拟大坝范围。编写通信协议,让仿真系统实时接收来自真实水下机器人陀螺仪、超短基线和水深传感器的数据,并每帧更新虚拟场景中机器人模型的三维位置和姿态,再现真实机器人在水下的运动状态。设计用户交互界面,通过鼠标键盘改变相机位置便于观察,回放实时仿真后的数据等。
[0026]具体步骤如下:
[0027]1、创建水下机器人实体模型。根据水下机器人实物的外形尺寸和造型特点,在三维软件里完成水下机器人三维建模,并分别细化和缩减模型层次以获得面片数多、细节较为丰富的高模和面片数少、只具有基本造型特征的低模;将低模展开UV,并将高模分别渲染为低模的法线贴图、漫反射贴图和光照贴图,留作水下虚拟场景中渲染使用。
[0028]2、设计水下虚拟场景。此款水下机器人主要用于大坝水下构筑物的检测,因此,水下虚拟场景模型主要有大坝坝体、坝底凹凸地形、泥沙石子、水面水波和水下水流、水下动植物等装饰物等;特效主要有随着水深而颜色加深的灯光、表现水下全景的天空立方盒、水下机器人模型上的探照灯、增强水下景物真实性的法线贴图、阴影贴图等,以及水流粒子和随水流摆动的水下动植物等。
[0029]3、将水下机器人三维模型低模每个顶点的位置坐标、每个三角形面片上三个顶点的编号、排列数据写入到TXT文件后在D3D水下虚拟场景中读入,同时计算模型顶点的法线向量、切线向量;将水下虚拟场景中景物模型导出为自定义类型文件,包含其顶点位置、法线向量、切线向量、UV贴图信息和三角形面片拓扑信息。
[0030]4、根据虚拟场景世界坐标系X、Y、Z轴和水下机器人实物框架上安装的陀螺仪坐标系X、Y、Z轴的对应关系,确定俯仰角、横滚角、航向角所绕的轴及它们的正反向;根据真实测定的大坝尺寸和声呐定位原点,确定水下机器人实物位置数据缩小到虚拟场景中所需的比例和偏移量。
[0031]5、使用HLSL配合C++应用程序渲染虚拟场景和水下机器人模型,从效果文件(.fx)计算每个模型顶点的光线向量,根据步骤3中得到的顶点信息插值计算每个像素点的漫反射、镜面反射、环境光、法线贴图等材质信息;确定计算机更新频率,并以时间为自变量设定步骤2中水下景物、灯光产生动态效果所需的物理方程。
[0032]6、编写通信协议。使用Winsock中TCP/IP客户端协议传输陀螺仪姿态数据、超短基线和水深传感器的位置数据到虚拟场景中,并根据步骤4中确定的转换算法解析为相应的数据传给机器人模型和场景光照,仿真系统每帧刷新后台缓冲区将新的模型位置、姿态显示到屏幕上。
[0033]7、为了方便实验暂停时段以及实验过后的进一步研究,设置了回放功能。首先,将服务端每次传入的数据传递给系统中的变量,方便在仿真进行过程中随时回放之前机器人行走过的位置和运动姿态;将每次仿真软件运行时服务端传入的数据存为一个TXT文件,保存实验数据,留作以后分析之用。
[0034]8、设计人机交互界面。此处需要配合DirectX中另外两个AP1:Direct2D和DirectWrite,实现在显示窗口上创建二维文字和菜单,实时显示水深、时间、水下机器人的位姿信息等;将窗口分为多个视口,分别显示水下全景、水下机器人特写等,方便从多角度观察水下机器人的运动状态。
[0035]以上说明书中描述的只是本发明的【具体实施方式】,各种举例说明不对本发明的实质内容构成限制,所属【技术领域】的普通技术人员在阅读了说明书后可以对以前所述的【具体实施方式】做修改或变形,而不背离本发明的实质和范围。
【权利要求】
1.一种实现水下机器人实时仿真的方法,其特征在于包括以下步骤: 1)利用三维软件完成水下机器人三维建模,创建水下机器人实体模型;并分别细化和缩减模型层次以获得面片数多、细节丰富的高模和面片数少、只具有基本造型特征的低模;将低模展开UV,并将高模分别渲染为低模的法线贴图、漫反射贴图和光照贴图,留作水下虚拟场景中渲染使用; 2)设计水下虚拟场景; 3)将机器人模型以OBJ文件格式输出以获取各实体表面的数据,然后提取顶点坐标和面片信息写入TXT文件格式,在D3D环境下将其导入仿真系统中;实现三维实体模型由三维软件向D3D的转换;同时,在虚拟场景中绘制模型时计算其顶点法线向量和正切向量用于渲染; 4)校准虚拟场景世界坐标系和安装在真实的水下机器人框架上用于接收姿态数据的陀螺仪坐标系,确保虚拟环境中机器人模型的姿态摆动方向和真实环境相同;校准虚拟大坝和真实大坝的尺寸比,缩小超短基线、水深传感器数据的比例; 5)使用HLSL配合C++应用程序渲染虚拟场景和水下机器人模型,从效果文件(.fx)计算每个模型顶点的光线向量,根据步骤3)中得到的顶点信息插值计算每个像素点的漫反射、镜面反射、环境光、法线贴图等材质信息;确定计算机更新频率,并以时间为自变量设定步骤2)中水下景物、灯光产生动态效果所需的物理方程; 6)编写通信协议;让仿真系统实时接收来自真实水下机器人陀螺仪、超短基线和水深传感器的数据,并每帧更新虚拟场景中机器人模型的三维位置和姿态,再现真实机器人在水下的运动状态。
2.如权利要求1所述的一种实现水下机器人实时仿真的方法,其特征在于:所述的步骤3)中,将水下机器人三维模型低模每个顶点的位置坐标、每个三角形面片上三个顶点的编号、排列数据写入到TXT文件后在D3D水下虚拟场景中读入,同时计算模型顶点的法线向量、切线向量;将水下虚拟场景中景物模型导出为自定义类型文件,包含其顶点位置、法线向量、切线向量、UV贴图信息和三角形面片拓扑信息。
3.如权利要求1所述的一种实现水下机器人实时仿真的方法,其特征在于:所述的步骤4)中,根据虚拟场景世界坐标系X、Y、Z轴和水下机器人实物框架上安装的陀螺仪坐标系X、Y、Z轴的对应关系,确定俯仰角、横滚角、航向角所绕的轴及它们的正反向;根据真实测定的大坝尺寸和声呐定位原点,确定水下机器人实物位置数据缩小到虚拟场景中所需的比例和偏移量。
4.如权利要求1所述的一种实现水下机器人实时仿真的方法,其特征在于:所述的步骤6)中,使用Winsock中TCP/IP客户端协议传输陀螺仪姿态数据、超短基线和水深传感器的位置数据到虚拟场景中,并根据步骤4)中确定的转换算法解析为相应的数据传给机器人模型和场景光照,仿真系统每帧刷新后台缓冲区将新的模型位置、姿态显示到屏幕上。
【文档编号】G05D1/10GK104407521SQ201410642408
【公开日】2015年3月11日 申请日期:2014年11月13日 优先权日:2014年11月13日
【发明者】廖华丽, 李珅, 周军, 彭海强 申请人:河海大学常州校区
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1