張濤,郭陽,張慶海,趙正旭
(1.石家莊鐵道大學復雜網絡與可視化研究所,石家莊050043;2.青島理工大學機械與汽車工程學院,青島266520)
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反射面單元建模的很好平臺。
FAST 主動反射面是一個口徑500 米,半徑300 米的球面,如圖1 所示,分為相同的五個區域,由4450 塊反射面單元構成[6]。反射面單分為基本類型和特殊類型,主要由面板和背架構成?;绢愋偷姆瓷涿鎲卧獮槿切谓Y構,共計341 種,4273 塊。特殊類型的反射面單元有27 塊三角形結構及150 塊四邊形結構,由索網中心處反射面單元、測量機墩處反射面單元與索網邊緣處反射面單元構成,共計54 種,177 塊[7]。
在基本類型反射面單元中,面板單元與背架單元的徑向關系如圖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 所示。每種類型的反射面單元均不同,需特殊設計。

圖3 反射面單元背架示意圖
索網中心處反射面單元位于反射面中心底部正五邊形上,為等腰三角形結構,邊長約11m,共1 種類型,5 塊面板及相應背架,每塊由小塊單元拼接而成。索網中心處反射面單元底部有安裝升降旋轉座駕,當其底下的饋源艙離港時,此處的面板能夠旋轉打開留出離港通道。當FAST 望遠鏡觀測時,此處的面板能夠合上,參與反射面整體變位[10]。
測量機墩處反射面單元共有23 塊,其中位于索網邊緣處的1 塊面板為四邊形結構,其他22 塊面板均為三角形結構。由于此處的面板有測量機墩從中間穿過,所以面板中心需要設置洞口,相應的背架也需要預留開孔。開孔的位置及大小需根據各處穿過的測量機墩的情況而定。
索網邊緣處反射面單元共30 種,149 塊,均為四邊形結構,位于索網邊緣處,與圈梁相接,此處的背架相應的也為四邊形結構。
由于FAST 反射面單元分為五個相同的部分,只需要建出其中的1/5 部分,旋轉復制即可得到整個模型,以A 區部分為例建模?;绢愋兔姘鍐卧獮?.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示意圖
索網中心處反射面單元面板形狀為一塊普通的三角形面板單元,根據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反射面單元面板模型示意圖
背架分類與面板分類相同,整個背架五分之一旋轉對稱,只需要建出其中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 基本類型背架示意圖
特殊類型背架與特殊類型面板一致,分為索網中心處、索網邊緣處及測量機墩處的三部分背架。
索網中心處的背架為五塊結構相同,位置關于球心旋轉對稱的背架。其建模方法可參照基本類型建模方法。
索網邊緣處的背架為30 塊四邊形背架,以其中一塊背架為例,可根據其幾何結構,根據桿件及球的物理信息進行建模。如圖12 所示。

圖12 索網邊緣處背架示意圖
測量機墩處的背架由于需要測量機墩從中間穿過,故需要留出相應大小的開口??梢韵冉ㄔ斐龌绢愋偷娜切伪臣埽俑鶕溟_孔位置進行球體及桿件刪減得到模型,如圖13 所示。

圖13 測量機墩處背架模型示意圖
FAST 作為國家重大科技基礎設施,其反射面單元數字孿生模型的創建,圖紙資料等需要嚴格保密,故基于信息安全自主可控的中標麒麟國產操作系統展開。在對FAST 反射面單元結構分析的基礎上,利用Blender開源跨平臺三維軟件,結合強大的Python 腳本語言自動建模,不僅大大提高了建模效率,并且保證了建模精度,為相關復雜結構的自動建模提供了借鑒。FAST 反射面單元的數字孿生模型可以應用于虛擬科普展示、大型科研設施的數字信息保護與FAST 健康檢測和故障處理等,為數字孿生技術的應用提供了新的途徑。