FAST 反射面单元数字孪生模型的创建
2020-10-13张涛郭阳张庆海赵正旭
张涛,郭阳,张庆海,赵正旭
(1.石家庄铁道大学复杂网络与可视化研究所,石家庄050043;2.青岛理工大学机械与汽车工程学院,青岛266520)
0 引言
500 米口径球面射电望远镜(Five-Hundred-Meter Aperture Spherical Radio Telescope),简称FAST[1],位于我国贵州省平塘县,2016 年建成,接力美国阿雷西博望远镜成为世界上最大的射电望远镜。阿雷西博望远镜由于管理者更替以及资金缺乏等问题,年久失修,面临被关闭的风险。而FAST 工程结构复杂,覆盖面积大,且运行维护难度高,工作量大。如何维护FAST 设施,避免遭遇阿雷西博同样的困境,成为亟待解决的问题。
近年来,美国“工业互联网”、德国“工业4.0”和“中国制造2025”等战略的兴起,使数字孪生技术成为研究热点[2]。数字孪生技术是指在计算机环境中,建立物理实体的数字模型,并且通过数据驱动模拟物理实体在真实环境中的行为。数字孪生模型多沿用Grieves 教授定义的三维模型[3]。建立FAST 的数字孪生模型,运用真实数据驱动,模拟仿真实验,可方便FAST 的信息保护和健康状态检测等,为其维护发展提供有效手段。
FAST 属于“十一五”国家重大科技基础设施建设项目,反射面单元是其重要组成部分,为确保信息安全及自主可控,选择在中标麒麟国产操作系统[4]下进行建模。Blender 作为开源跨平台的三维动画制作软件,占用空间小,操作简洁,并且提供非常强大的Python API支持[5],可以快速高效创建复杂的三维模型,成为FAST反射面单元建模的很好平台。
1 反射面单元结构分析
FAST 主动反射面是一个口径500 米,半径300 米的球面,如图1 所示,分为相同的五个区域,由4450 块反射面单元构成[6]。反射面单分为基本类型和特殊类型,主要由面板和背架构成。基本类型的反射面单元为三角形结构,共计341 种,4273 块。特殊类型的反射面单元有27 块三角形结构及150 块四边形结构,由索网中心处反射面单元、测量机墩处反射面单元与索网边缘处反射面单元构成,共计54 种,177 块[7]。
1.1 基本类型反射面单元结构分析
在基本类型反射面单元中,面板单元与背架单元的径向关系如图2 所示。面板单元位于曲率半径为315m 的球面上,背架上弦节点到面板上表面的距离为h=150mm。背架厚度为H=1000mm,背架单元的上弦节点位于半径为(315+h)m 的球面上,下弦节点位于半径为(315+h+H)m 的球面上。面板单元的三个角点位于半径为300m 的球面上,索网节点位于与面板单元的三个角点径向距离相差400 mm 的同心球上,即半径为300.4m 的球面上。
图1 FAST主动反射面示意图
图2 反射面单元径向关系示意图
面板单元为三角形结构,边长约为11m,相邻两块面板的间隙为65mm[8]。按面板单元边长相等进行分类,面板单元共有186 种,加上对称部分共341 种,其他区域相同,按面板边长相差10mm 的归并为同类,则可分为51 种,加上对称部分共101 种,共4273 块,背架分类与面板分类相同。
背架单元采用三角锥形式的双层铝合金螺栓球节点网架结构,由上弦杆、下弦杆、腹杆及螺栓球等组成。以其中一块背架结构为例进行说明,如图3 所示,背架的三角形边长约11m 左右[9],背架厚度为H=1000mm,上下弦的螺栓球节点位于同心球面上,该球心即为面板球心。
1.2 特殊类型反射面单元结构分析
特殊类型反射面单元由索网中心处反射面单元、测量机墩处反射面单元及索网边缘处反射面单元三部分组成,如图1 所示。每种类型的反射面单元均不同,需特殊设计。
图3 反射面单元背架示意图
索网中心处反射面单元位于反射面中心底部正五边形上,为等腰三角形结构,边长约11m,共1 种类型,5 块面板及相应背架,每块由小块单元拼接而成。索网中心处反射面单元底部有安装升降旋转座驾,当其底下的馈源舱离港时,此处的面板能够旋转打开留出离港通道。当FAST 望远镜观测时,此处的面板能够合上,参与反射面整体变位[10]。
测量机墩处反射面单元共有23 块,其中位于索网边缘处的1 块面板为四边形结构,其他22 块面板均为三角形结构。由于此处的面板有测量机墩从中间穿过,所以面板中心需要设置洞口,相应的背架也需要预留开孔。开孔的位置及大小需根据各处穿过的测量机墩的情况而定。
索网边缘处反射面单元共30 种,149 块,均为四边形结构,位于索网边缘处,与圈梁相接,此处的背架相应的也为四边形结构。
2 反射面单元面板模型的创建
2.1 基本类型反射面单元面板三维建模
由于FAST 反射面单元分为五个相同的部分,只需要建出其中的1/5 部分,旋转复制即可得到整个模型,以A 区部分为例建模。基本类型面板单元为1.2mm厚的三角形面板,在Blender 内建模需要知道三角形每个角点的具体坐标,点连成线、线连成面、面连成体即可建出面板模型。根据提供的资料,已知以(0,0,0)为球心,位于半径为300.4m 球面上2225 个的索网节点坐标,由于面板单元三角点位于半径为300m 且与索网坐标节点同心的球面上,根据球面方程(1)和球的参数方程(2),可方便求出2225 个面板单元三角点(x,y,z)的坐标。
将整理好的数据存放在Excel 表中,利用Python语言中的xlrd 工具包读取数据,需要先在cmd 命令提示符中输入pip3 install xlrd,安装此工具包,再在Blender 的文本编辑器中import xlrd,即可使用。读取面板单元三角点坐标的代码如下:
面板的点、线、面的三维坐标分别储存在verts、edges 和faces 三个列表当中。其中verts 列表存储的是点的三维坐标,edges 列表在这里可为空,faces 列表存储的是创建面的点连接顺序。例如faces[0]=[0,1,2],描述的是由verts[0]、verts[1]和verts[2]三个点连接组成的面。
每块三角形面板是由点、线、面组成的网格物体,Blender 内用Python 代码创建网格物体,需要导入bpy模块。创建网格物体的函数如下:
Excel 表格中存储的面板单元三角点的排列关系如图4 所示。每创建一块三角形面板,需要知道这三个点的坐标及连接顺序。面板单元的三角点坐标按顺序存储在verts 列表中,每一块面板的连接顺序可按如下方式存储到faces 列表中。可将面板单元分成若干行,每行由上下两层三角形面板组成,第一行除外。如图所示第2 行中,按逆时针顺序,从左边开始,上层面板为(4,2,5)和(5,3,6),下层面板为(2,3,5)。第三行中,上层面板为(7,4,8)、(8,5,9)和(9,6,10),下层面板为(4,5,8)和(5,6,9)。以此类推,已知面板可分为28 行,从第2 行开始,设行数为i,面板角点数为j,由数量关系推导可得,每行上层面板中的角点范围为(((i-1)*i)/2+1,((i+1)*i)/2)),角点坐标为(j+i,j,j+i+1)。下层面板中的角点范围为(((i-1)*i)/2+1),((i+1)*i)/2),角点坐标为(j,j+1,j+i+1)。创建三角面板的代码如下:
图4 反射面单元面板三角点关系示意图
在Blender 中运行Python 代码创建A 区基本类型反射面单元面板模型四视图如图5 所示。
图5 基本类型反射面单元面板模型1/5示意图
2.2 特殊类型反射面单元面板三维建模
索网中心处反射面单元面板形状为一块普通的三角形面板单元,根据A-B 区的三角点数据,可知其三角点的坐标及连接顺序,即可调用createFaces(verts,edges,faces)函数建模。同理,A-B 区连接部分的面板模型、基本类型与索网边缘处的面板模型,可通过分析出连接部分面板的连接顺序,调用函数建模。
索网边缘处反射面单元为四边形形状,由四个点按顺序连接而成面。同样将其每个点的坐标存储在verts 列表中,将每个面中四个点的连接顺序存储在faces2=[[0,0,0,0]]的列表中,调用createFaces(verts,edges,faces2)函数,即可完成建模。以A 区索网边缘处反射面单元为例,该部分四边形面板共30 块,创建的模型如图6 所示。
图6 索网边缘处反射面单元面板模型示意图
测量机墩处反射面单元共23 块,以其中一块为例,将经过处理后的CAD 图纸导入到Blender 中,令线条合并挤出1.2 mm 的厚度成三角形面板,如图7 所示。23 块面板创建成功后,导入到基本类型面板相应位置替换即可。
图7 测量机墩处反射面单元面板模型示意图
将基本类型反射面单元面板与特殊类型反射面单元面板模型整合到同一Blender 场景中,由于相邻两块面板单元间隙为65mm,经比例关系计算,以各面片自己的原心为轴点缩放得出间隙。再选中全部面板,以整体反射面球心(0,0,0)为原点进行5 次旋转复制,得到整个FAST 反射面单元面板模型如图8 所示。
图8 FAST反射面单元面板模型示意图
3 反射面单元背架模型的创建
3.1 基本类型反射面单元背架三维建模
背架分类与面板分类相同,整个背架五分之一旋转对称,只需要建出其中1/5 即可。以A 区为例,按10mm 归并计算,基本类型背架可分为51 种。以其中一块背架信息为例进行建模。
如图3 所示,背架由上弦杆、腹杆和下弦杆组成网架结构。每根杆的位置不同,对应的编号也不同。以上弦杆为例,其杆件编号如图9 所示。不同编号的杆件规格、长度均不相同,需按照其排列顺序进行对号信息读取。
图9 背架上弦杆件编号示意图
其中三根上弦杆及三根腹杆可组成如图10 所示的四面体,可将背架分成若干四面体对其进行建模。
图10 背架四面体网格模型示意图
在图10 中,建模思路为根据已知的六条杆的长度,求出四个顶点的坐标,从而求出六条杆的位置坐标及旋转角度,在Blender 中利用Python 脚本进行建模。
首先对六条杆的规格及长度信息进行读取,其中按对应编号读取对应杆件的信息的函数代码如下。
四个顶点的坐标计算方法如下:以角A 为原点(0,0,0),三角形ABC 所在平面为XOY 平面,垂直于该平面的方向为Z 轴,建立如图10 所示的坐标轴。B 点及C 点的Z 坐标均为0,X 轴及Y 轴方向的坐标可由余弦定理和极坐标转直角坐标公式计算得出。而关于P 点的坐标是计算的难点。关于XOY 平面作P 点的投影得到O 点,设O 点的坐标为(x,y,0),那么P 点的坐标即为(x,y,h),其中h 为以三角形ABC 为底面,该四面体的高度。O 点X 轴及Y 轴方向坐标计算方法与A、B点相同。高度的求法需借助海伦公式(3)、海伦秦九韶体积公式(4)及四面体体积公式(5)计算得出。
式中,a,b,c 分别为三角形的三条边。
式中,a,b,c,d,e,f 分别为四面体的六条边,其位置关系如图10 所示。
首先根据海伦秦九韶体积公式求出四面体的体积V,并根据海伦公式求出三角形ABC 的面积S,再带到三棱锥体积公式里面得到四面体的高度,即P 点在Z轴方向的坐标。至此,根据四面体的六条边的长度即可算出其四个顶点的坐标位置。在Blender 内用Py⁃thon 脚本编写的函数如下。
最终由四面体的六条棱的长度,求出四个顶点的坐标并存储的函数如下。
由于四个顶点的位置坐标已经确定,杆件的位置坐标可根据中点公式,由其两端的顶点位置计算而出。其函数代码如下。
杆件旋转角度在Blender 内需要的参数值为弧度,可根据两点的位置,依据三角函数方程及角度转弧度的公式计算得出,代码如下。
在Blende 内对螺栓球的建模只要输入其半径和坐标长度参数,运行代码 bpy.ops.mesh.primi⁃tive_uv_sphere_add(size=rSphere,location=arrayA[i])即可完成球体建模。而根据两个顶点求杆的长度、坐标、角度并建模型函数代码如下。
在Blender 内,运行Python 代码建立的基本类型的三角形背架如图11 所示。
图11 基本类型背架示意图
3.2 特殊类型反射面单元背架三维建模
特殊类型背架与特殊类型面板一致,分为索网中心处、索网边缘处及测量机墩处的三部分背架。
索网中心处的背架为五块结构相同,位置关于球心旋转对称的背架。其建模方法可参照基本类型建模方法。
索网边缘处的背架为30 块四边形背架,以其中一块背架为例,可根据其几何结构,根据杆件及球的物理信息进行建模。如图12 所示。
图12 索网边缘处背架示意图
测量机墩处的背架由于需要测量机墩从中间穿过,故需要留出相应大小的开口。可以先建造出基本类型的三角形背架,再根据其开孔位置进行球体及杆件删减得到模型,如图13 所示。
图13 测量机墩处背架模型示意图
4 结语
FAST 作为国家重大科技基础设施,其反射面单元数字孪生模型的创建,图纸资料等需要严格保密,故基于信息安全自主可控的中标麒麟国产操作系统展开。在对FAST 反射面单元结构分析的基础上,利用Blender开源跨平台三维软件,结合强大的Python 脚本语言自动建模,不仅大大提高了建模效率,并且保证了建模精度,为相关复杂结构的自动建模提供了借鉴。FAST 反射面单元的数字孪生模型可以应用于虚拟科普展示、大型科研设施的数字信息保护与FAST 健康检测和故障处理等,为数字孪生技术的应用提供了新的途径。