2015年7月,美國國家航空暨太空總署(NASA)的新視野號(New Horizons)太空飛行器飛越冥王星,向全世界提供了這個矮行星與其衛星的壯觀圖片(圖一)。新視野號還延續它的任務,在2019年飛越了小行星486958(Arrokoth)時,將探索範圍拓展至古柏帶(Kuiper Belt)傳回太空飛行器探索過最遙遠距離的的天體圖片。
同一時間,第二艘太空飛行器是NASA的歐西里斯號(OSIRIS-REx),在2016年發射,目的是要從小行星貝努(Bennu)的表面採集樣本。於2020採集到樣本之後,會在2023年將樣本帶回地球。這段期間,NASA還在2021年發射了露西號(Lucy),它將成為第一艘造訪木星的小行星Trojan的太空飛行器。
圖一 : 新視野號太空飛行器飛越冥王星和衛星Charon的展示圖 |
|
這些並行的NASA任務都背負著一個共同目標:為科學家提供需要的資料,以助於更深入了解我們的太陽系,包含太陽系的形態以及其中的天體。這三項任務還有其他的共通點—就是它們都使用了由KinetX Aerospace的團隊建立的光學導航(optical navigation;OpNav)軟體。
OpNav技術使用攝影機影像來判斷太空飛行器與行星或小行星等天體(celestial body)的相對位置。KinetX的影像處理軟體套件(KinetX Image Processing software suite;KXIMP)是以MATLAB開發,處理裝配在飛行器上的攝影機捕捉到的影像。這些影像向下傳輸回地球,用來計算慣性攝影機的位態、視野背景恆星與天體的形心(centroids)。
MATLAB幫助團隊加速完成高度精確的OpNav演算法開發和除錯。以OSIRIS-REx任務為例,中心定位演算法可達到30公分以內的準確度,或者大約是小行星直徑的0.06% --大幅超越任務的導航概念操作(Concept of Operations;ConOps)所預測的準確度。
OpNav需求與快速開發的重要性
傳統的深太空導航仰賴輻射追蹤資料,這種資料可以用來估計太空飛行器與地球的相對位置。當目標軌跡的不確定性很低時,這種方法的準確度就已足夠。然而對於像新視野號、OSIRIS-Rex、露西號這樣的任務,以無線電為基礎的導航雖可以使太空飛行器到達接近的位置—但接近程度還不足以最大化任務的科學效益。相較之下,OpNav提供目標與太空飛行器相對位置的量測值,促成更遠大的導航準確度,並且具備將太空飛行器的攝影機與科學儀器更精準地導向目標的能力。
一開始為OpNav進行開發環境評估的時候,我們還只是一個很小的團隊。我們需要優先進行快速開發和除錯,也就是不希望從頭撰寫過於大量的低階影像處理演算法。MATLAB和Image Processing Toolbox(影像處理工具箱)提供許多從一開始就需要的慣例和函式。同樣重要地,我們也需要具備隨著新資料的取得而快速執行變更的能力,在新視野號接近冥王星時更是強調了這項能力的重要性。
由於反照率(albedo)的變異,行星當中最亮和最暗的部位會在影像形成無法預期的高度對比,這時就需要仰賴KXIMP的幫助。我們需要進行的變更相當複雜,而且在任務接近關鍵的營運階段時,在MATLAB快速進行這些變更的實現與除錯的能力致關重要。
使用KXIMP來導航至行星目的地
我們運用相同的基本流程,將KXIMP軟體套件使用於每一項任務,這套流程會在接收到來自太空飛行器裝載的攝影機拍下的影像時開始。作為第一步,我們使用在MATLAB開發的影像校正慣例來移除失真並且修正影像。
接下來,我們會執行KXIMP的位態判定演算法,該演算法擬合一個拋物面來找出圖片中每一個恆心的子像素中心(圖二)。接下來,演算法會依據行星類別和一個位態的先驗(a priori )估計來計算預測圖片中的恆心中心。然後,再根據觀察到及預測的恆心中心,執行Optimization Toolbox(最佳化工具箱)之中的最小平方擬合來計算攝影機的慣性位態。
圖二 : 背景恆星(十字標示處)以及圖片右側的小行星貝努 |
|
當我們判斷出攝影機的位態,下一步是要找到目標(例如冥王星、小行星486958或小行星貝努)的形心。用來計算形心的演算法會透過一張使用KXIMP關鍵功能產生的模擬圖片與來自太空飛行器的影像關聯。該模擬圖片是使用透過MATLAB的SPICE工具取得,由NASA的Navigation and Ancillary Information Facility (NAIF)提供的SPICE工具箱內的一個digital shape kernel檔案的資料所建立。透過這組形狀資料、太陽與目標的相對位置、目標的旋轉狀態,我們演算法運用光束追蹤(ray tracing)技巧來產生模擬圖片(圖三)。
由於處理時間是一項重要因素—特別是太空飛行器是以每秒14公里的速度行駛—我們使用Parallel Computing Toolbox(平行運算工具箱)在一個多核心處理器執行光束追蹤來加快這部分的處理速度;接著再透過真正圖片和模擬圖片的2D互相關(cross-correlation)計算出目標的中心。
圖三 : 真正的小行星貝努影像(左)和透過KXIMP產生的模擬貝努圖片(右) |
|
在更遠的距離,目標通常只有幾個像素寬,而無法從真正的照片分辨。在這個操作階段,我們使用KXIMP內的影像疊加(image coadding)、行星相減(star-subtraction)、和次取樣(subsampling)等技巧,製作出能夠呈現更好的有效解析度(圖四)和訊噪比(signal-to-noise ratio)的圖片。
圖四 : 小行星486958(Arrokoth)的原始圖片,圖片左側的目標物為一個可見的未解析點源,圖片右側為經過4倍次取樣的對應圖片。 |
|
為飛行器上的OpNav產生程式碼
對於新視野號、OSIRIS-REx、和露西號任務,KXIMP OpNav會在影像傳回地球時進行處理。然而若要更進一步,會有更多的處理使用飛行器上的系統執行自主的OpNav軟體來實施,我們團隊正積極地進行這些工作。
以NASA的LunaH-Map太空飛行器為例,我們使用MATLAB Coder為位態判定、恆星形心、和未解析的目標從既有的演算法產生C程式碼(圖五),也從新的水平基準導航演算法產生C程式碼。這些產生出來的飛行器上的位態判定與未解析中心尋找軟體已經成功地在LunaH-Map任務進行測試,為配備自主OpNav軟體的未來太空飛行器打下基礎,使其只需要少量、或甚至不需要基於地面的導航支援,便能完成其深太空任務。
圖五 : 御夫座(constellation Auriga)的LunaH-Map恆心追中器影像,標記處代表由KinetX軟體為位態判定的所選擇的恆星。 |
|
(本文由鈦思科技提供;作者Derek Nelson、Coralie Adam任職於KinetX公司)