SpaceX 載人發射的成功被譽爲全球商業航天領域的里程碑事件,龍飛船在太空遨遊 19 個小時後與國際空間站完成“一鍵”對接,自動化程度之高就像是空間站專線“擺渡車”,像極了科幻小說裏描繪的那般。

當宇航員們有說有笑地打開飛船艙門,飄進空間站的那一刻,不少觀衆大呼真牛的同時,可能還有種錯覺,什麼時候載人航天變得如此輕鬆簡單?
這或許要拜馬斯克激進的創新理念所賜,不斷改寫諸多不可能。過去幾年,SpaceX 多次回收利用一級火箭的壯舉讓人驚歎,這直接將運載火箭發射成本降低了 30%,重複利用次數越多,越經濟划算。

相對而言,這次龍飛船載人航天的另一大進步想必大家也有所注意:

整潔寬敞的飛船艙內,宇航員觀測幾塊觸控大屏,輕點幾下,操作少許物理按鈕,一次要與國際空間站對接的、複雜的載人飛行任務就這樣被搞定了。

圖|龍飛船對接國際空間站(來源:SpaceX)

圖|歷代航天器操控界面的變化(來源:NASA)

JavaScript 上天了

SpaceX 龍飛船中的新觸控交互操作系統意味着什麼?首先,這可能意味着編程語言不分高低,JavaScript 一樣能上天!

TensorFlow.js 的資深 DA(負責開發者關係)Jason Mayes 在 Twitter 上表示,SpaceX 使用 Chromium+JavaScript 開發龍飛船的交互界面,與 C++ 一起用於航天計算機。JavaScript 不是“玩具語言”,是時候接受它了。

圖|Jason Mayes 發帖透露出 SpaceX 相關信息(來源:Twitter)

而知乎網友 doodlewind 對此給出了更詼諧的評論,經過此次太空任務,開放的 Web 技術就此成爲了人類首個應用到載人航天領域的 GUI 技術棧,這對數百萬前端開發者們來說是個更爲歷史性的時刻。

圖|網友 doodlewind 的評論(來源:知乎)

SpaceX 的技術研發工作基本都處於保密狀態,具體是怎樣做的開發?在國外的一個關於程序設計的問答網站 Stack Exchange 上,早在 2015 年就有關於獵鷹 9 火箭使用什麼計算機和軟件的話題討論。開發者 TJ Tarazevits 發帖稱,通過在 GDC 2015/2016 期間與多位 SpaceX 工程師的討論,得到了一些詳細信息。

SpaceX 使用一個 Actor-Judge 系統爲其火箭和航天器提供三重冗餘。獵鷹 9 火箭有 3 個雙核 x86 處理器,每個核心都獨立運行一個 linux 實例,飛行軟件是用 C/C++ 編寫的,在 x86 環境下運行。

對於每個計算/決策,“飛行字符串”都會比對不同核心的處理結果。如果存在不一致,則字符串不正確,不發送任何命令;如果內核返回相同的響應,字符串則會將命令發送到火箭上的各個微控制器,這些微控制器控制諸如發動機和柵格翼之類的部件。

三重冗餘提供了系統輻射耐受性,無需昂貴的抗輻射部件。SpaceX 對所有的飛行軟件進行測試,可以稱之爲“桌上火箭”,工程師們把“獵鷹 9 號”上的所有計算機和飛行控制器放在一張桌子上,並像在實際的火箭上一樣連接起來,然後他們在組件上運行一個完整的模擬飛行,監控性能和潛在故障。

SpaceX 的工程師們還經常測試一種他們稱之爲“斷線”的任務,在模擬飛行過程中,隨機關閉一臺飛行計算機,看看系統的反應如何。

圖|SpaceX 在遊戲開發者大會上的展位(來源:Business Insider)

據瞭解,載人龍飛船的飛行電腦也採用了類似的三重冗餘系統。有人猜測,龍飛船的控制面板是 17 英寸特斯拉 S 型觸摸屏,包括相同的 Nvidia Tegra SOC,它們不是飛行硬件的一部分,僅用於顯示圖形用戶界面。

不過 TJ Tarazevits 在與 SpaceX 人員交談後,得知特斯拉的觸控屏硬件似乎並沒有被使用,同時確認開發人員確實在龍飛船上使用了一些有趣的軟件,它們在飛行界面上使用了 Chromium 和 JavaScript,實際的飛行計算機仍在 C++ 上運行。
還有一點非常有意思,也許你不會相信,SpaceX 炫酷的飛船交互界面,絕對有一些來自遊戲行業的基因。

GDC 是規模最大的遊戲開發者年度專業性質會議與展覽,提供遊戲開發者間的技術交流、獲取靈感以及聯誼平臺,SpaceX 曾多次現身擺攤招人。

一家火箭公司爲什麼會出現在遊戲開發者大會上?在龍飛船 V2 的一次發佈會活動上,Fast Company 曾就此提問馬斯克。

馬斯克回答:“實際上,我們從遊戲行業中聘用了許多最好的軟件工程師 。” “在遊戲中,有很多聰明的工程學人才從事着真正複雜的事情。相比大型多人在線遊戲中涉及的許多算法,在航天器之間對接序列實際上相對簡單。因此,我鼓勵遊戲業考慮幫忙製造下一代航天器和火箭。”

圖 | 龍飛船早期的駕駛艙和交互界面設計(來源:Wikimedia Commons)

所以龍飛船早期的操作界面會有一種“電競遊戲艙”的既視感,四個下拉式觸摸面板控制檯使宇航員可以與各種控制和反饋接口交互,有點兒特斯拉的風格延續,萬一整個屏幕被毀,一些至關重要的功能(例如降落傘部署、氧氣儲備、備用生命支持等)還可以通過手動按鈕進行控制。

而整個座艙的設計起初也非常夢幻,與傳統航天設備堆滿儀器、操作複雜的樣子大相徑庭,SpaceX 讓人們看到了未來太空飛船該有的樣子。

SpaceX 團隊是怎樣的開發者班底?

2013 年,SpaceX 軟件工程師團隊曾在 reddit 社區中發佈招聘內容。從中可以窺見,這些開發人員致力於兩件事:火箭和航天器上的代碼,支持火箭和航天器設計和製造過程的代碼。

他們從事從大型 Web 應用程序到微型嵌入式計算平臺的所有工作,通過 REST 到 C#/ MVC4 / EF / MSSQL上 的 Java,Knockout / Handlebars / LESS,C++ / 嵌入式 Linux,Python,LabVIEW 等技術堆棧,共同使團隊能夠構建、啓動和監視進入太空的內容。

圖|SpaceX 早期的工程師團隊部分人員(來源:SpaceX)

在 SpaceX 內部,初始有 4 個獨立的軟件團隊:1、飛行軟件團隊大約有 35 人。他們爲獵鷹 9,Grasshopper(SpaceX 早期的型號)和龍飛船應用程序編寫所有代碼,並在這些平臺上進行核心測試工作。例如編寫仿真軟件、測試飛行代碼、編寫部署在地面站中的通信和分析軟件,還在任務控制領域支持各種進行中的任務。

2、企業信息系統團隊構建了使 SpaceX 運行的內部軟件系統,開發和發佈的產品是公司幾乎每個人都使用的內部 Web 應用程序:

這包括創建採購訂單和填充零件庫存的人員,使用這些零件創建設計和工作訂單的工程師、技術人員的工作進程分配安排等。雖然市售軟件也可以做到這一點,但因爲不是專門定製的,使用起來會有很多麻煩,SpaceX 正在從一家研究和工程公司轉變爲一家領先的商業火箭製造和運營公司,搭建自己的內部軟件系統架構對於今後的成功至關重要,工程師團隊則站在實現這一目標的最前沿,他們利用 C#/ MVC4 / EF / SQL 做開發;

3、地面軟件團隊大約有 9 人,主要使用 LabVIEW 進行編碼。他們開發用於任務和發射控制的 GUI,供工程師和操作員監控遙測並指揮火箭,航天器和各種支持設備,圍繞高度分散的系統推送高帶寬數據,並實施嚴格要求的複雜用戶界面開發,以確保操作員能夠及時控制和評估航天器;

4、航空電子測試團隊與航空電子硬件設計師合作,編寫用於測試的軟件。他們能儘早發現硬件問題,當需要與飛行軟件進行集成和測試時,能夠合併成爲一個工作單位。主要目標是編寫非常全面且強大的軟件,以便能夠自動發現硬件問題,該軟件通常在機械環境測試期間運行。

在 UI 設計方面,爲了使飛船的交互界面更爲美觀簡潔,SpaceX 其實還專門找了設計師做外援。一位名爲 AJ Fitzpartric 的設計師在自己的作品主頁上展示了爲龍飛船觸摸屏做的設計貢獻,他是一個獨立承包商,爲初創企業和產品團隊提供 UI 和 UX 設計諮詢。

圖|AJ Fitzpartric 的 UI 作品主頁(來源:AJ Fitzpartric)

他與 SpaceX 軟件團隊合作創建了觸摸屏應用程序,向宇航員提供有關航天器功能狀態的實時信息,從運載工具在太空中的位置,到可能的目的地,再到船上的環境檢測等。由於這項設計工作從始至終是機密的,並受《國際武器貿易條例》的約束,除非 SpaceX 公司公開,否則無法共享作品的更多細節。

不過,AJ Fitzpartric 還是分享了自己在這項合作中承擔的幾個流程:

1、爲駕駛艙觸摸屏顯示器創建線框和 UI 流程;2、向 SpaceX 團隊、NASA 客戶以及宇航員演示講解全新的設計和 UI 流程;3、針對太空旅行的獨特條件開發了樣式指南和設計規範,例如宇航員手套的觸摸目標和振動時的易讀性;4、與軟件工程師緊密合作,瞭解硬件和技術限制,確定用戶體驗差距和設計任務並確定優先級;5、將設計和生產資料交付給軟件工程師進行開發。

圖|AJ Fitzpartric 的作品案例(來源:AJ Fitzpartric)

與從遊戲行業招募開發者類似,這位 UI/UX 設計師也並非專業爲航空航天領域客戶服務的,而是主要做 App 與 Web 設計的,他的代表作品包括插圖項目、索尼設計規範和圖片編輯器、還有 iOS 應用等。

這在航天領域或許獨樹一幟。正如 SpaceX 對外分享的一份 PPT 中介紹的那樣,算力上的進步帶來了全新可能:存儲、計算和渲染能力上的突破,可實現 3D 渲染和交互式界面;移動設備的創新改善了重量和能耗問題;觸摸屏便宜且普及。

圖|SpaceX 關於載人飛船技術創新的講解(來源:imgur)

基於瀏覽器的技術棧可作爲界面開發的新平臺:各種庫和框架提供了穩定的功能,能快速實現原型;現代化的開發和調試工具加速迭代;技術的跨界通用性融合好處多多。

從這些層面來看,SpaceX 龍飛船的成功發射不僅把技術開發、軟件創新進行了一番試煉,還直接把 UI 設計這個職業拉到了“航天級”高度,新一代 UI 技術棧可能會對未來航天設備領域產生越來越廣泛的影響,這背後是從遊戲、設計、軟硬件工程師多方跨界人才的智慧火花碰撞。

從歷史到未來的演變

所有這些看似能簡單完成的集成和設計,並非一蹴而就,成果是一代代航天人數十年的技術開發和工程經驗積累。

美國從 1960 年代便開始進行載人航天任務,那時候的航天設備儀器並不足夠先進,各種條件與安全保障要比現在惡劣得多。宇航員們必須穿着笨重防護外套駕駛航天器,從水星計劃、雙子座計劃、阿波羅計劃到航天飛機,航天員們可謂是一邊飛一邊修,大小故障不斷,憑藉着智慧和勇氣深入太空探索,一度遠征月球並活着回來。

那是一個略顯粗糙的年代,卻也是堪稱奇蹟的年代。

圖|美國載人航天工程歷程(來源:維基百科)

航天器座艙和交互方式的變革就在這一代代航天人的努力下實現了進化,最終,將成百上千個按鈕濃縮成幾個大屏幕和幾個關鍵物理按鈕。

而隨着更多人工智能和自動化技術的加入,未來航天員可以用最簡單的方式操控着一臺最複雜和精密的飛行設備,爲航天普及化、更接地氣的商業航天打下基礎,這是最顯著的一大進步。

圖|龍飛船宇航員的操控場景(來源:SpaceX)

SpaceX 龍飛船的儀表板正在把飛船的操作門檻降到普通人經過培訓就能上手的程度,或許未來某一天,一個普通人經過“航天模擬器”的操作培訓,掌握一些應急操作,就能駕駛這樣的飛船進行太空飛行。

當然,前提還是能付得起這張飛船票,據瞭解,龍飛船的報價爲每個座位 5500 萬美元,將來如果發射成本壓縮可能還會再降低一些。或許 SpaceX 可以藉此開一個富豪太空旅行飛船駕校了。

圖|龍飛船的培訓模擬器(來源:SpaceX)

對於這樣的飛船操控交互系統創新,網友們褒貶不一。有人認爲,以前的載人航天是國家行爲,成敗關乎國家榮譽和歷史進程,可靠性大於用戶體驗,原則上不允許出現任何事故和設備隱患的,但馬斯克的載人航天是商業行爲,發生意外商業保險覆蓋就好,沒有太多束縛可以大膽發揮。

也有人對大號液晶觸控屏表示擔憂,航天飛行受外部環境干擾因素非常多,萬一斷電了黑屏了,或者震動破裂了,顯示不出來任何內容就十分嚇人,而機械按鈕儀表損壞的概率就小得多,即使出現故障,也是一部分,而不是整個系統完全崩潰不能用。


本文爲***作者原創,未經授權不得轉載

相關文章