吳 浩,周愛軍
(海軍大連艦艇學院 航海系,遼寧大連 116018)
現代戰(zhàn)場電磁環(huán)境日趨復雜,衛(wèi)星導航和無線電導航等系統(tǒng)容易受到干擾,具有自主性特點的天文定位越來越重要。目前天文定位系統(tǒng)主要有3類:基于六分儀的天文定位系統(tǒng)、基于星敏感器的天文定位系統(tǒng)和基于射電的天文定位系統(tǒng)[1-3]。基于六分儀的天文定位系統(tǒng)存在查算表冊步驟繁瑣、依賴水天線等局限性;基于星敏感器和射電的天文定位系統(tǒng)雖然定位精度高,但是設備體積質量都較大,無法隨身攜帶,設備操作復雜且價格昂貴。智能電子終端及內置傳感器的快速發(fā)展,為實現開發(fā)天文定位APP提供硬件支持,天文定位APP可在不借助基站信號和衛(wèi)星導航信息的前提下進行天文定位。
天文定位算法有傳統(tǒng)高度差法、直接解算法和迭代法等[4]。傳統(tǒng)高度差法原理簡單,便于手工繪圖。測者位于同一地點,測算2個夾角合適的天體,即可得出一組天文艦位線方程。

式(5)和式(6)中:φC和λC分別為推算緯度和推算經度。
船位圓弧方程是超越方程,直接聯立求解較為困難。傳統(tǒng)高度差法用直線近似船位圓弧,則會引入曲率誤差。2個天文船位圓相交形成球面三角形,利用球面三角形的邊角關系可直接解算天文船位。直接解算法有2個近似解,需要對照推測船位進行取舍。
迭代法是通過觀測天體可得同一時刻、同一天頂2個天體的觀測真高度h1和h2。2個天體的赤緯和格林時角分別為δ1、δ2和tG1、tG2,所求觀測船位的經緯度為(λ,φ),可得2個船位圓方程為:


式(11)和式(12)中:Δφ和Δλ分別為緯度和經度變化量;hC1和hC2分別為2個天體在推算船位的計算高度;AC1、AC2分別為兩天體的計算方位。可由船位圓方程求得:

再將近似解(φ,λ)作為新的推算船位進行迭代求解,得到新的Δφ和Δλ。當Δφ和Δλ的絕對值小于0′.1時,迭代計算結束。
綜合比較高度差法、直接解析法和迭代法:當觀測天體高度超過70°時,高度差法的船位線曲率誤差比較大,因此定位誤差也較大;直接解算法編程較為復雜,而且結果需要取舍;迭代法計算編程簡單,既避免了高度差法原理性誤差,又容易編程實現,可選取迭代法進行天文定位計算。
天文定位APP的設計與實現主要包括天文定位計算、PyEphem星歷庫、人機交互等內容,見圖1。

圖1 天文定位APP 系統(tǒng)組成框圖
天文定位APP計算所用星歷庫為PyEphem。PyEphem庫是一個Python環(huán)境下天文歷法計算的第三方庫,由埃爾伍德·查爾斯·唐尼(Elwood Charles Downey)編寫,采用VSOP87行星理論,其精度在1角秒左右,足以滿足天文航海所要求的0.1角分的精度。PyEphem庫中部分函數功能見表1。PyEphem星歷庫使用語言是Python,而天文定位APP開發(fā)所使用的軟件為Android Studio,其開發(fā)語言為Java。在Android Studio中調用Python語言的PyEphem星歷庫需使用Python Community Edition插件。首先對項目框架build.gradle進行配置,加入Python程序的運行路徑,然后在Android Studio中下載插件,最后在項目中創(chuàng)建Python文件,調用Python文件的方法見表2。

表1 PyEphem 庫部分函數功能表

表2 調用Python 的方法
天文定位APP輸入數據是通過EditText控件實現,并可設置輸入數據的類型、提示內容和最大長度等屬性;顯示數據是通過TextView控件實現,可設置顯示數據的顏色和字號等屬性;下拉菜單是通過Spinner控件實現,可設置下拉菜單的標題、內容和下拉模式等屬性[5],見圖2和圖3。

圖2 人機交互界面圖

圖3 迭代法程序框圖
在天文定位計算界面,輸入推算船位、觀測時間、時區(qū)和觀測高度等信息,然后點擊“計算”,即可得出觀測者的經緯度。
在天氣晴朗、能見度良好的情況下,在華為P20Pro手機上安裝天文定位APP,多次對恒星進行觀測,并進行定位計算。對比GPS定位信息與天文定位APP 的定位數據,平均誤差約為3 n mile~4 n mile。定位計算選取3月~4月部分數據為例,定位結果見表3,推測經緯度為38°52.5′N、121°40′E。

表3 定位計算結果部分數據

表3 定位計算結果部分數據(續(xù))
針對天文定位手動查算表冊的缺點,基于Android開發(fā)了天文定位APP,可快速方便比較準確進行天文定位。天文定位APP相較于高度差法方便快捷;相較于星敏感器、射電天文定位,天體定位APP在Android手機或平板上即裝即用,價格低廉、便于攜帶。對比GPS定位信息與天文定位APP的定位數據,天文定位APP定位數據的平均誤差為3 n mile~4 n mile左右。天文定位APP適用于在無基站信號和衛(wèi)星導航信息情況下快速得到較為準確的定位信息。下步打算實現太陽移線定位和三天體定位功能。