和壽圣,王傳軍,范玉峰,余曉光,王德清,黃永萍,王建坤
(1. 中國科學院云南天文臺,云南 昆明 650216;2. 中國科學院天體結構與演化重點實驗室,云南 昆明 650216)
遠程天文臺是互聯(lián)網(wǎng)和自動化技術高度發(fā)展的產(chǎn)物,具有觀測效率高、運行成本低等優(yōu)點。遠程觀測已成為天文觀測的主流趨勢,在天文研究、天文選址、科普教育等領域發(fā)揮了越來越重要的作用[1-3]。
近年來5G網(wǎng)絡技術的發(fā)展極大提高了移動網(wǎng)絡質(zhì)量,使基于手機等移動終端的遠程觀測成為可能。昆明理工大學云南省計算機技術應用重點實驗室采用(Hyper Text Transfer Protocol, HTTP)協(xié)議與微信小程序進行JSON(JavaScript Object Notation)數(shù)據(jù)交互,實現(xiàn)了RTS2自主控制系統(tǒng)監(jiān)測和控制[4]。業(yè)余天文界常用 “向日葵” 等遠程桌面軟件進行遠程觀測。受屏幕尺寸等因素限制,常規(guī)電腦遠程觀測模式在移動設備上使用極不方便,觀測數(shù)據(jù)實時傳輸及共享等也有一定的局限性。物聯(lián)網(wǎng)[5]和社交網(wǎng)絡[6]技術的發(fā)展為遠程觀測提供了全新的機遇,借助這些技術進一步完善和提高遠程觀測的數(shù)據(jù)傳輸、數(shù)據(jù)共享以及人性化操作等功能。
為實現(xiàn)云南天文臺14英寸望遠鏡的遠程觀測,同時驗證基于物聯(lián)網(wǎng)和社交網(wǎng)絡的遠程天文臺技術,我們設計了一套基于微信的遠程天文臺控制軟件,本文主要介紹其設計方法和實測結果。
遠程天文臺控制軟件系統(tǒng)結構如圖1,遠程天文臺服務器(Remote Observatory Server)為系統(tǒng)核心,與圓頂或平移頂(Dome/Roof)、望遠鏡(Telescope)、照相機(Camera)、濾光片(Filter)、調(diào)焦器(Focuser)、消旋器(Rotator)和臺址監(jiān)測系統(tǒng)(Observation conditions)等天文儀器設備共同組成遠程天文臺硬件系統(tǒng)。遠程天文臺控制軟件部署于遠程觀測服務器,一方面負責控制天文儀器設備實現(xiàn)觀測功能;另一方面負責與觀測終端交互實現(xiàn)遠程服務。微信服務器(WeChat Server)為騰訊官方服務器,手機/平板/電腦(Mobile/Pad/PC)等觀測終端與遠程觀測服務器之間通過微信客戶端通信。
圖1 系統(tǒng)結構圖
以微信為載體的遠程控制通常采用公眾號和小程序兩種方案[7-8],公眾號具有物聯(lián)網(wǎng)專用方案即微信硬件平臺,具有更多高級設備功能。公眾號和小程序均有如下特點:首先,基于超時通信機制,由微信客戶端主動訪問遠程服務器實現(xiàn),實時性有所欠缺,如照相機曝光等較為耗時的操作需要采用Ajax輪詢或者WebSocket技術;其次,遠程服務器對網(wǎng)絡要求較高,通常需要固定網(wǎng)址(公網(wǎng)IP)或者通過獨立服務器中轉。針對上述特點,本文采用微信聊天模式開發(fā)遠程天文臺控制軟件,相對于公眾號和小程序,該模式支持雙向通信,實時性較好,網(wǎng)絡門檻較低。
軟件在Windows10操作系統(tǒng)下,采用C#語言面向對象編程開發(fā)。
軟件開發(fā)按4層結構展開,如圖2,從下往上分別為設備驅動層、基本控制層、高級控制層和界面層,按層編寫類如表1。
表1 類
圖2 軟件層次
設備驅動層是天文儀器設備的驅動控制基礎,由圓頂、望遠鏡、照相機、濾光片、調(diào)焦器、消旋器和臺址監(jiān)測系統(tǒng)等設備類構成,分別提供這些儀器設備的基本操作函數(shù)。設備驅動層支持天文公共對象模型(Astronomy Common Object Model, ASCOM)協(xié)議[9-10],同時支持基于串口和網(wǎng)絡的自定義協(xié)議。
基本控制層實現(xiàn)觀測控制系統(tǒng)的基本功能,OCS類直接調(diào)用設備驅動層的設備類基本函數(shù),結合設備操作邏輯關系實現(xiàn)特定觀測功能。如圓頂天窗開關操作必須考慮臺址觀測條件,圓頂隨動依賴望遠鏡指向跟蹤參數(shù),照相機操作與圓頂、望遠鏡、濾光片和調(diào)焦器狀態(tài)之間的相互關系等。
高級控制層實現(xiàn)觀測控制系統(tǒng)的高級功能,結合本地觀測需求、遠程控制接口和自主觀測算法等實現(xiàn)本地觀測(LO)、遠程觀測(RO)和自主觀測(AO),WeChat類是基于微信的遠程觀測實現(xiàn)。
界面層是軟件系統(tǒng)的頂層框架,包括MainForm等多個窗口界面類,主要用于系統(tǒng)設置和觀測控制等高級操作。除此之外,軟件系統(tǒng)包含觀測圖像的生成、存儲和顯示的FITS(Flexible Image Transport System)圖像類等其他功能。
遠程觀測功能以微信電腦版為載體進行開發(fā),以微信聊天模式收發(fā)控制命令,以微信圖片格式傳輸觀測圖像,以微信群組方式控制用戶權限。微信控制接口采用第三方開源代碼wechat-bot(https://github.com/cixingguangming55555/wechat-bot)。
遠程觀測流程如圖3。系統(tǒng)首先根據(jù)臺址監(jiān)測數(shù)據(jù)判斷觀測條件,具備觀測條件則輪詢讀取微信消息;然后判斷消息發(fā)送者是否為授權用戶(即是否具備控制權限),若用戶具備控制權限,則處理命令并進行相應的觀測控制操作如目標指向、相機曝光及各種設備控制;相機曝光命令完成操作后主動發(fā)送觀測圖片給相應的微信用戶。
圖3 遠程觀測流程圖
遠程控制基本命令如表2。最簡單的遠程觀測步驟:首先用dome open命令打開圓頂天窗(或平移頂),dome track命令設置圓頂隨動;然后以goto命令驅動望遠鏡指向目標;望遠鏡處于跟蹤狀態(tài)后以expose命令(包含filter參數(shù))曝光獲取觀測圖像,如需調(diào)焦則用focuser命令;觀測結束用dome close命令關閉圓頂,park命令使望遠鏡停止。如需查看當前觀測條件,以state obsc命令獲取臺址信息。
表2 基本命令
用戶權限控制是遠程觀測的安全保障,本系統(tǒng)采用微信群組分組控制實現(xiàn)基本用戶權限控制,將待觀測用戶或者群組加入控制用戶列表,系統(tǒng)自動過濾非控制用戶列表的用戶信息。高級權限控制功能可以結合觀測時間、操作功能(如觀測控制、數(shù)據(jù)操作等)和用戶群組等因素進行精準分配控制用戶權限,本文不再討論。
我們在云南天文臺14英寸RC望遠鏡上,以NGC 6530為觀測目標,B波段曝光600 s進行軟件測試。圖4為遠程觀測服務器本地觀測界面,上方為遠程天文臺控制軟件主界面,左下方為電腦版微信客戶端遠程觀測界面,右下方為遠程天文臺控制軟件的界面。圖5為基于手機微信的遠程觀測界面。系統(tǒng)運行時先用遠程天文臺管理員微信賬號登錄電腦版微信客戶端,遠程天文臺控制軟件連接微信客戶端并選擇相應用戶或者群組分配控制權限后自動進入遠程觀測模式。本文以群組觀測為例,觀測員以命令行方式進行遠程觀測操作,管理員負責命令處理及設備控制,觀測完成后自動發(fā)送觀測圖像至觀測群。實測結果表明,該遠程天文臺控制軟件工作正常,滿足軟件設計的基本要求。
圖4 本地觀測界面
圖5 遠程觀測界面
與微信公眾號和小程序模式相比,微信聊天模式實現(xiàn)遠程控制有如下優(yōu)勢:(1)實時性較好,易于實現(xiàn),無需采用Ajax,WebSocket等技術;(2)網(wǎng)絡門檻較低,無需公網(wǎng)IP,微信聊天便可以開展遠程控制;(3)數(shù)據(jù)傳輸共享更方便,以微信聊天模式傳輸觀測圖像,方便觀測人員共享數(shù)據(jù);(4)遠程觀測同時在觀測群進行正常語音文字溝通交流,可以及時評估和調(diào)整觀測方案等。但該模式同時也存在以下不足:(1)以命令行模式操作,沒有圖形操作界面,必須熟悉操作命令,用戶門檻相對較高;(2)由于電腦版微信客戶端采用掃碼登錄機制,遠程觀測服務器開機或者重啟時需要借助遠程桌面軟件或者專門編寫代碼發(fā)送二維碼至遠程終端才能實現(xiàn)遠程登錄。
總體來說,本文設計研發(fā)了一套基于微信的遠程天文臺控制軟件,并在云南天文臺14英寸望遠鏡上進行相關測試,達到了基于物聯(lián)網(wǎng)和社交網(wǎng)絡的遠程天文臺技術驗證的目的,為遠程天文臺控制軟件設計及社交網(wǎng)絡在天文觀測中的應用提供了可借鑒的經(jīng)驗和方法。遠程天文臺控制軟件是復雜的系統(tǒng)軟件工程,本設計僅實現(xiàn)了部分基本功能和方法,在下一步工作中,仍需不斷改進和完善。