沉浸式定向井井眼轨迹虚拟可视化系统
2022-08-22沙林秀邵小华
沙林秀,李 琨,邵小华
(1. 西安石油大学陕西省钻机控制重点实验室,陕西 西安 710065;2. 大庆钻探钻井一公司,浙江 兰溪321100)
1 引言
在随钻钻机控制决策过程中,由于钻遇地层结构的不可预测性,且储油层位置不精确,加之钻机钻井过程处于盲钻状态,加剧井眼轨迹优化、控制和决策的难度。为此,将虚拟现实技术引入钻机随钻优化控制过程,研究开发一套随钻井眼轨迹可视化系统。该系统使用3Ds max设计模型,Unity3d渲染井场平台和井下地层虚拟环境[1-3];设计GUI数据输入界面;利用随钻数据和优化数据,通过脚本程序控制优化井迹绘制[4-5],实现井眼轨迹三维可视化显示。研究人员可借助系统完成井场平台、井迹、地层的沉浸式漫游[6],为钻机工作人员提供友好、简洁的可视化决策环境,降低钻井优化控制研究成本,提高钻井成功率。
2 虚拟钻井平台环境搭建
沉浸式定向井井眼轨迹虚拟可视化系统开发均在Unity3d引擎下生成,脚本程序C#的编写和模型控制程序是基于Unity3d的二次开发。其中,环境搭建主要包括井场设备、地层环境模型和GUI界面的设计。虚拟钻井系统具体开发流程图如图1所示。
图1 虚拟钻井系统开发流程图
2.1 模型的创建及渲染
1)虚拟钻井平台和地层模型搭建:采用3Ds max三维建模软件,通过转化为可编辑多边形,采用布尔、塌陷、切角、分割等操作,按照1:1比例创建出陆地钻井平台井架,二层台、钻机、吊卡和地层等井场设备模型,设计出地层模型。井上虚拟钻井平台如图2所示。
图2 井上虚拟钻井平台
2)模型导入:把已设计的钻头、地层与井场设备模型转为FBX格式,导入搭建好的地层模型中。再加入三维立体坐标,以方便观测钻头深度与南北位移量。
3)地层渲染:为增加Unity3d中设计地层的真实性和合理性,提高井眼轨迹可视化效果,在Unity3d中的地层加入材质增加真实感,以便观测轨迹。井下地层模型如图3所示。
图3 井下地层模型预览
2.2 系统GUI界面模块设计
该系统通过将优化数据和随钻数据导入到Unity3d引擎[7],根据真实数据实现优化井迹和随钻井迹的虚拟可视化显示。沉浸式定向井井迹虚拟可视化系统主界面如图4所示。
图4 沉浸式定向井井迹虚拟可视化系统主界面
图4的GUI界面中,运用Unity3d相应的BUTTON按键功能实现优化井轨迹和随钻井轨迹的场景跳转和程序控制,点击即可进入对应的场景。
3 井眼轨迹动态显示
井眼轨迹的动态显示分为两种控制方式,一是随钻轨迹,实时显示实钻井眼轨迹。二是经智能算法优化后的井眼轨迹。可将随钻和优化后井迹共同显示在三维可视化地层中。
3.1 随钻井迹的三维显示
3.1.1 随钻井轨迹数据的输入
在钻井过程中,将经实际随钻采集的数据(如:方位角、井斜角、垂直井深和东西南北位置)存储到Excel中,通过调用Unity3d中ExcelTable组件的相关接口函数,在脚本代码中写入Excel表格所存放的位置,调用Excel文件中数据控制钻头运行,实现随钻轨迹显示。添加组件和接口的相关函数如下:
1)添加ExcelTable组件:
List
List
2)Excel文件的接口函数:
DataGameObject.Find(″pdc_Q″).
AddComponent
LoadInfo(″Assets/streamingassets/Data.xlsx″);
3.1.2 随钻轨迹控制流程
随钻井迹的三维显示的控制流程图如图5所示。
图5 随钻井迹的三维显示的控制流程图
其中,Sum为整个轨迹的分段数,Num为已经绘制的测点数。
3.2 优化井迹的三维显示
3.2.1 优化井轨迹数据的输入
通过按钮跳转至优化井轨迹场景,将经智能算法优化的斜角、井斜方位角和曲率等三维井眼轨迹参数输入到优化数据输入窗口(如图6),运用C#脚本程序的接口函数[8-10],将输入的角度变量和钻头联系起来,达到控制钻头运行并绘制出优化轨迹。
图6 优化数据输入窗口
3.2.2 优化井迹的程序设计
根据优化数据输入窗口获取的不同井段优化后的井轨迹参数,通过按R键或E键控制钻头为直线或者曲线运行,钻达每段的井迹长度和垂深位置后,再输入下一组参数,直到整个轨迹绘制完成,停止输入。
钻头的直线运行和曲线运行控制是C#程序控制的[11-12],综合运用欧拉角角度控制函数(Quaternion.AngleAxis)、三维坐标点乘函数Vector3.Dot(transform.forward,Angle)和反三角函数angleChange等函数完成计算和控制。C#程序中控制钻头的部分伪代码如下:
while (number < data.Count){
float dot=Vector3.Dot(transform.forward,setAngle);
angleChange=Mathf.Acos(dot)
*Mathf.Rad2Deg;
transform.position=new
Vector3(data[number].x,data[number].z,
data[number].y);
number++; }
其中Mathf.Acos(dot)*Mathf.Rad2Deg反三角函数,计算方位角和井斜角的变化控制钻头轴向方位变化,transform.position控制钻头三维坐标变化。
3.3 井眼轨迹的显示模块
井眼轨迹的动态显示过程中,需要控制显示的帧数和井眼轨迹的粗细/颜色,以符合视觉舒适和审美的需求。
Update()是Unity3d整个生命周期中最常用的一个,考虑井迹显示和人眼视觉的需求,在C#脚本程序设置中Unity3d的模型每帧执行一次为0.02s,即控制钻头以每秒50帧的速率描点,每一帧绘制一个测点。将所有测点添加到坐标链表中,如果未到最终靶点位置或者还有测点数据需要显示,就一直运行,否则跳出循环,停止钻进,以保证井眼轨迹显示的流畅与平滑。
Awake()函数调用Unity3d的Line Renderer组件并设置绘制轨迹的分段数(测点)、优化/随钻井迹的颜色、粗细等属性参数。
4 可视化系统的操作说明和显示效果
4.1 系统操作说明
沉浸式定向井井眼轨迹虚拟可视化系统即可通过PC机显示以支持网络远程操作,也支持VR设备操作的沉浸式虚拟三维可视化。因此,系统的操作有两种方式:PC键盘控键和手势识别器控制。
1)PC键盘控键定义:本系统支持井场平台和地下井迹的PC端漫游,操作人员可以第一人称视角利用键盘控制漫游在井场、钻井平台,也可实时观测钻头的控制运行,井迹的走向,对比优化和实钻井迹。键盘操控键的定义如表1所示。
表1 键盘操控键的定义
其中,W、A、S、D、space等键操作实现场景内前后左右移动,鼠标、鼠标滚轴等拉动视角转向和调整场景的远近。
2)VR硬件场景搭建:本系统硬件环境采用HTC VIVE虚拟设备,包括HMD头戴显示器、定位基站、手柄遥控器和Leap motion手势识别器等VR设备共同搭建。
通过安装已开发生成的Trawell.exe插件用户利用Leap motion手势识别器,控制任意视角漫游,了解井场设备、钻井平台和地层井迹,观察地层和井迹走向,全方位观测井眼轨迹的动态变化过程。
4.2 井迹虚拟可视化实例
以陕北某定向井钻井过程为例,部分随钻数据和优化数据如表2所示,陕北某定向VR井沉浸式迹漫游操作实例如图7所示。
表2 优化数据
表3 随钻数据
图7 陕北某定向井沉浸式迹漫游操作实例
图7中,采用Leap motion手势识别器实现沉浸式井眼轨迹显示和漫游控制。黄色轨迹为随钻的井眼轨迹,绿色轨迹为优化的井眼轨迹,操作人员可自由穿越地层,可直观、清晰且近距离的观察井轨迹走向,对比两种井迹的差异。
在地层不可控的因素影响下,通过对比实际和优化后理井眼轨迹偏差,可适当低调整实钻控制参数,根据调整后随钻井迹从而进一步对比两者偏差,以达到最优状态。本系统为井眼轨迹的精确控制提供沉浸式、交互决策控制环境。
5 结束语
针对日益复杂的井下油气钻井作业,为满足地层井眼轨迹的可视化的控制决策需求,该系统利用3Ds max设计井场设备、环境、地层、钻井平台和钻头模型,在Unity3d的开发环境下,利用C#程序设计的一套绘制虚拟井眼轨迹的可视化系统。
该系统不仅可在PC机上显示运行,为远程在线熟悉井场设备、环境、了解钻机的控制和定向井的井迹优化和控制方法,同时通过插件和VR硬件设备,以第一视觉“真实”观看实际的钻井现场,通过穿越地层,“观测”优化和实钻井迹,为研究人员提供了友好的沉浸式、交互式的井迹优化控制决策环境。