吳 浩,周愛(ài)軍
(海軍大連艦艇學(xué)院 航海系,遼寧大連 116018)
現(xiàn)代戰(zhàn)場(chǎng)電磁環(huán)境日趨復(fù)雜,衛(wèi)星導(dǎo)航和無(wú)線電導(dǎo)航等系統(tǒng)容易受到干擾,具有自主性特點(diǎn)的天文定位越來(lái)越重要。目前天文定位系統(tǒng)主要有3類:基于六分儀的天文定位系統(tǒng)、基于星敏感器的天文定位系統(tǒng)和基于射電的天文定位系統(tǒng)[1-3]?;诹謨x的天文定位系統(tǒng)存在查算表冊(cè)步驟繁瑣、依賴水天線等局限性;基于星敏感器和射電的天文定位系統(tǒng)雖然定位精度高,但是設(shè)備體積質(zhì)量都較大,無(wú)法隨身攜帶,設(shè)備操作復(fù)雜且價(jià)格昂貴。智能電子終端及內(nèi)置傳感器的快速發(fā)展,為實(shí)現(xiàn)開(kāi)發(fā)天文定位APP提供硬件支持,天文定位APP可在不借助基站信號(hào)和衛(wèi)星導(dǎo)航信息的前提下進(jìn)行天文定位。
天文定位算法有傳統(tǒng)高度差法、直接解算法和迭代法等[4]。傳統(tǒng)高度差法原理簡(jiǎn)單,便于手工繪圖。測(cè)者位于同一地點(diǎn),測(cè)算2個(gè)夾角合適的天體,即可得出一組天文艦位線方程。
式(5)和式(6)中:φC和λC分別為推算緯度和推算經(jīng)度。
船位圓弧方程是超越方程,直接聯(lián)立求解較為困難。傳統(tǒng)高度差法用直線近似船位圓弧,則會(huì)引入曲率誤差。2個(gè)天文船位圓相交形成球面三角形,利用球面三角形的邊角關(guān)系可直接解算天文船位。直接解算法有2個(gè)近似解,需要對(duì)照推測(cè)船位進(jìn)行取舍。
迭代法是通過(guò)觀測(cè)天體可得同一時(shí)刻、同一天頂2個(gè)天體的觀測(cè)真高度h1和h2。2個(gè)天體的赤緯和格林時(shí)角分別為δ1、δ2和tG1、tG2,所求觀測(cè)船位的經(jīng)緯度為(λ,φ),可得2個(gè)船位圓方程為:
式(11)和式(12)中:Δφ和Δλ分別為緯度和經(jīng)度變化量;hC1和hC2分別為2個(gè)天體在推算船位的計(jì)算高度;AC1、AC2分別為兩天體的計(jì)算方位??捎纱粓A方程求得:
再將近似解(φ,λ)作為新的推算船位進(jìn)行迭代求解,得到新的Δφ和Δλ。當(dāng)Δφ和Δλ的絕對(duì)值小于0′.1時(shí),迭代計(jì)算結(jié)束。
綜合比較高度差法、直接解析法和迭代法:當(dāng)觀測(cè)天體高度超過(guò)70°時(shí),高度差法的船位線曲率誤差比較大,因此定位誤差也較大;直接解算法編程較為復(fù)雜,而且結(jié)果需要取舍;迭代法計(jì)算編程簡(jiǎn)單,既避免了高度差法原理性誤差,又容易編程實(shí)現(xiàn),可選取迭代法進(jìn)行天文定位計(jì)算。
天文定位APP的設(shè)計(jì)與實(shí)現(xiàn)主要包括天文定位計(jì)算、PyEphem星歷庫(kù)、人機(jī)交互等內(nèi)容,見(jiàn)圖1。
圖1 天文定位APP 系統(tǒng)組成框圖
天文定位APP計(jì)算所用星歷庫(kù)為PyEphem。PyEphem庫(kù)是一個(gè)Python環(huán)境下天文歷法計(jì)算的第三方庫(kù),由埃爾伍德·查爾斯·唐尼(Elwood Charles Downey)編寫(xiě),采用VSOP87行星理論,其精度在1角秒左右,足以滿足天文航海所要求的0.1角分的精度。PyEphem庫(kù)中部分函數(shù)功能見(jiàn)表1。PyEphem星歷庫(kù)使用語(yǔ)言是Python,而天文定位APP開(kāi)發(fā)所使用的軟件為Android Studio,其開(kāi)發(fā)語(yǔ)言為Java。在Android Studio中調(diào)用Python語(yǔ)言的PyEphem星歷庫(kù)需使用Python Community Edition插件。首先對(duì)項(xiàng)目框架build.gradle進(jìn)行配置,加入Python程序的運(yùn)行路徑,然后在Android Studio中下載插件,最后在項(xiàng)目中創(chuàng)建Python文件,調(diào)用Python文件的方法見(jiàn)表2。
表1 PyEphem 庫(kù)部分函數(shù)功能表
表2 調(diào)用Python 的方法
天文定位APP輸入數(shù)據(jù)是通過(guò)EditText控件實(shí)現(xiàn),并可設(shè)置輸入數(shù)據(jù)的類型、提示內(nèi)容和最大長(zhǎng)度等屬性;顯示數(shù)據(jù)是通過(guò)TextView控件實(shí)現(xiàn),可設(shè)置顯示數(shù)據(jù)的顏色和字號(hào)等屬性;下拉菜單是通過(guò)Spinner控件實(shí)現(xiàn),可設(shè)置下拉菜單的標(biāo)題、內(nèi)容和下拉模式等屬性[5],見(jiàn)圖2和圖3。
圖2 人機(jī)交互界面圖
圖3 迭代法程序框圖
在天文定位計(jì)算界面,輸入推算船位、觀測(cè)時(shí)間、時(shí)區(qū)和觀測(cè)高度等信息,然后點(diǎn)擊“計(jì)算”,即可得出觀測(cè)者的經(jīng)緯度。
在天氣晴朗、能見(jiàn)度良好的情況下,在華為P20Pro手機(jī)上安裝天文定位APP,多次對(duì)恒星進(jìn)行觀測(cè),并進(jìn)行定位計(jì)算。對(duì)比GPS定位信息與天文定位APP 的定位數(shù)據(jù),平均誤差約為3 n mile~4 n mile。定位計(jì)算選取3月~4月部分?jǐn)?shù)據(jù)為例,定位結(jié)果見(jiàn)表3,推測(cè)經(jīng)緯度為38°52.5′N、121°40′E。
表3 定位計(jì)算結(jié)果部分?jǐn)?shù)據(jù)
表3 定位計(jì)算結(jié)果部分?jǐn)?shù)據(jù)(續(xù))
針對(duì)天文定位手動(dòng)查算表冊(cè)的缺點(diǎn),基于Android開(kāi)發(fā)了天文定位APP,可快速方便比較準(zhǔn)確進(jìn)行天文定位。天文定位APP相較于高度差法方便快捷;相較于星敏感器、射電天文定位,天體定位APP在Android手機(jī)或平板上即裝即用,價(jià)格低廉、便于攜帶。對(duì)比GPS定位信息與天文定位APP的定位數(shù)據(jù),天文定位APP定位數(shù)據(jù)的平均誤差為3 n mile~4 n mile左右。天文定位APP適用于在無(wú)基站信號(hào)和衛(wèi)星導(dǎo)航信息情況下快速得到較為準(zhǔn)確的定位信息。下步打算實(shí)現(xiàn)太陽(yáng)移線定位和三天體定位功能。