都保杰
用JavaScript 開發(fā)的“龍”飛船的交互界面
SpaceX 載人發(fā)射的成功被譽為全球商業(yè)航天領域的里程碑事件,“龍”飛船在太空遨游 19 個小時后與國際空間站完成“一鍵”對接,自動化程度之高就像是空間站專線“擺渡車”,像極了科幻小說里描繪的那般。
當宇航員們有說有笑地打開飛船艙門,飄進空間站的那一刻,不少觀眾大呼真牛的同時,可能還有種錯覺,什么時候載人航天變得如此輕松簡單?
這或許要拜馬斯克激進的創(chuàng)新理念所賜,不斷改寫諸多不可能。過去幾年,SpaceX 多次回收利用一級火箭的壯舉讓人驚嘆,這直接將運載火箭發(fā)射成本降低了 30%,重復利用次數(shù)越多,越經濟劃算。
相對而言,這次“龍”飛船載人航天的另一大進步想必大家也有所注意:整潔寬敞的飛船艙內,宇航員觀測幾塊觸控大屏,輕點幾下,操作少許物理按鈕,一次要與國際空間站對接的、復雜的載人飛行任務就這樣被搞定了。
歷代航天器操控界面的變化
在我們的以往印象中,載人航天是極其嚴肅的一件事。宇航員都是國家萬里挑一的頂尖人才,他們要有著超強的身體機能應對惡劣的太空往返環(huán)境,經過周密的培訓,操作著人類最復雜和昂貴的航天設備,面對超多的按鈕和顯示儀表,每一步操作都嚴苛不容差錯,還得具備超強的心理素質應對各種突發(fā)情況,隨時為最壞處境做好獻身的覺悟。
而SpaceX“龍”飛船的設計,就像是一個大玩具和太空游戲操控室,不僅在商業(yè)載人航天飛船機動性和可靠性方面邁出了一大步,在操控方式和交互系統(tǒng)層面,也改變了航天設備的舊有形態(tài)。
或許有一天,一個普通人經過“航天模擬器”的操作培訓,掌握一些應急操作,就能駕駛這樣的飛船進行太空飛行。于是乎,不少充滿好奇的網友針對這套操作系統(tǒng)和用戶界面后的技術棧展開了有趣討論。
SpaceX“龍”飛船中的新觸控交互操作系統(tǒng)意味著什么?首先,這可能意味著編程語言不分高低,JavaScript 一樣能上天!
TensorFlow.js 的資深 DA(負責開發(fā)者關系)Jason Mayes 在 Twitter 上表示,SpaceX 使用 Chromium+JavaScript 開發(fā)“龍”飛船的交互界面,與 C++ 一起用于航天計算機。JavaScript 不是“玩具語言”,是時候接受它了。
而知乎網友 doodlewind 對此給出了更詼諧的評論,經過此次太空任務,開放的 Web ?技術就此成為了人類首個應用到載人航天領域的 GUI 技術棧,這對數(shù)百萬前端開發(fā)者們來說是個更為歷史性的時刻:SpaceX 的技術研發(fā)工作基本都處于保密狀態(tài),具體是怎樣做的開發(fā)?在國外的一個關于程序設計的問答網站 Stack Exchange 上,早在 2015 年就有關于獵鷹 9 火箭使用什么計算機和軟件的話題討論。開發(fā)者 TJ Tarazevits 發(fā)帖稱,通過在 GDC 2015/2016 期間與多位 SpaceX 工程師的討論,得到了一些詳細信息。
SpaceX 使用一個 Actor-Judge 系統(tǒng)為其火箭和航天器提供三重冗余。獵鷹 9 火箭有 3 個雙核 x86 處理器,每個核心都獨立運行一個 linux 實例,飛行軟件是用 C/C++ 編寫的,在 x86 環(huán)境下運行。
對于每個計算/決策,“飛行字符串”都會比對不同核心的處理結果。如果存在不一致,則字符串不正確,不發(fā)送任何命令;如果內核返回相同的響應,字符串則會將命令發(fā)送到火箭上的各個微控制器,這些微控制器控制諸如發(fā)動機和柵格翼之類的部件。
三重冗余提供了系統(tǒng)輻射耐受性,無需昂貴的抗輻射部件。SpaceX 對所有的飛行軟件進行測試,可以稱之為“桌上火箭”,工程師們把“獵鷹 9 號”上的所有計算機和飛行控制器放在一張桌子上,并像在實際的火箭上一樣連接起來,然后他們在組件上運行一個完整的模擬飛行,監(jiān)控性能和潛在故障。
SpaceX 的工程師們還經常測試一種他們稱之為“斷線”的任務,在模擬飛行過程中,隨機關閉一臺飛行計算機,看看系統(tǒng)的反應如何。
SpaceX 在游戲開發(fā)者大會上的展位
“龍”飛船早期的駕駛艙和交互界面設計
據了解,載人“龍”飛船的飛行電腦也采用了類似的三重冗余系統(tǒng)。有人猜測,“龍”飛船的控制面板是 17 英寸特斯拉 S 型觸摸屏,包括相同的 Nvidia Tegra SOC,它們不是飛行硬件的一部分,僅用于顯示圖形用戶界面。
不過 TJ Tarazevits 在與 SpaceX 人員交談后,得知特斯拉的觸控屏硬件似乎并沒有被使用,同時確認開發(fā)人員確實在龍飛船上使用了一些有趣的軟件,它們在飛行界面上使用了 Chromium 和 JavaScript,實際的飛行計算機仍在 C++ 上運行。
還有一點非常有意思,也許你不會相信,SpaceX 炫酷的飛船交互界面,絕對有一些來自游戲行業(yè)的基因。
GDC 是規(guī)模最大的游戲開發(fā)者年度專業(yè)性質會議與展覽,提供游戲開發(fā)者間的技術交流、獲取靈感以及聯(lián)誼平臺,SpaceX 曾多次現(xiàn)身擺攤招人。
一家火箭公司為什么會出現(xiàn)在游戲開發(fā)者大會上?在“龍”飛船 V2 的一次發(fā)布會活動上,F(xiàn)ast Company 曾就此提問馬斯克。馬斯克回答:“實際上,我們從游戲行業(yè)中聘用了許多最好的軟件工程師 。” “在游戲中,有很多聰明的工程學人才從事著真正復雜的事情。相比大型多人在線游戲中涉及的許多算法,在航天器之間對接序列實際上相對簡單。因此,我鼓勵游戲業(yè)考慮幫忙制造下一代航天器和火箭。”
所以“龍”飛船早期的操作界面會有一種“電競游戲艙”的既視感,4個下拉式觸摸面板控制臺使宇航員可以與各種控制和反饋接口交互,有點兒特斯拉的風格延續(xù),萬一整個屏幕被毀,一些至關重要的功能(例如降落傘部署、氧氣儲備、備用生命支持等)還可以通過手動按鈕進行控制。
而整個座艙的設計起初也非常夢幻,與傳統(tǒng)航天設備堆滿儀器、操作復雜的樣子大相徑庭,SpaceX 讓人們看到了未來太空飛船該有的樣子。
2013 年,SpaceX 軟件工程師團隊曾在 reddit 社區(qū)中發(fā)布招聘內容。從中可以窺見,這些開發(fā)人員致力于兩件事:火箭和航天器上的代碼,支持火箭和航天器設計和制造過程的代碼。
SpaceX 早期的工程師團隊部分人員
他們從事從大型 Web 應用程序到微型嵌入式計算平臺的所有工作,通過 REST 到 C#/ MVC4 / EF / MSSQL上 的 Java,Knockout / Handlebars / LESS,C++ / 嵌入式 Linux,Python,LabVIEW 等技術堆棧,共同使團隊能夠構建、啟動和監(jiān)視進入太空的內容。
在 SpaceX 內部,初始有 4 個獨立的軟件團隊:1.飛行軟件團隊大約有 35 人。他們?yōu)楂C鷹 9,Grasshopper(SpaceX 早期的型號)和“龍”飛船應用程序編寫所有代碼,并在這些平臺上進行核心測試工作。例如編寫仿真軟件、測試飛行代碼、編寫部署在地面站中的通信和分析軟件,還在任務控制領域支持各種進行中的任務。2.企業(yè)信息系統(tǒng)團隊構建了使 SpaceX 運行的內部軟件系統(tǒng),開發(fā)和發(fā)布的產品是公司幾乎每個人都使用的內部 Web 應用程序:這包括創(chuàng)建采購訂單和填充零件庫存的人員,使用這些零件創(chuàng)建設計和工作訂單的工程師、技術人員的工作進程分配安排等。雖然市售軟件也可以做到這一點,但因為不是專門定制的,使用起來會有很多麻煩,SpaceX 正在從一家研究和工程公司轉變?yōu)橐患翌I先的商業(yè)火箭制造和運營公司,搭建自己的內部軟件系統(tǒng)架構對于今后的成功至關重要,工程師團隊則站在實現(xiàn)這一目標的最前沿,他們利用 C#/ MVC4 / EF / SQL 做開發(fā);3、地面軟件團隊大約有 9 人,主要使用 LabVIEW 進行編碼。他們開發(fā)用于任務和發(fā)射控制的 GUI,供工程師和操作員監(jiān)控遙測并指揮火箭,航天器和各種支持設備,圍繞高度分散的系統(tǒng)推送高帶寬數(shù)據,并實施嚴格要求的復雜用戶界面開發(fā),以確保操作員能夠及時控制和評估航天器;4、航空電子測試團隊與航空電子硬件設計師合作,編寫用于測試的軟件。他們能盡早發(fā)現(xiàn)硬件問題,當需要與飛行軟件進行集成和測試時,能夠合并成為一個工作單位。主要目標是編寫非常全面且強大的軟件,以便能夠自動發(fā)現(xiàn)硬件問題,該軟件通常在機械環(huán)境測試期間運行。
在 UI 設計方面,為了使飛船的交互界面更為美觀簡潔,SpaceX 其實還專門找了設計師做外援。一位名為 AJ Fitzpartric 的設計師在自己的作品主頁上展示了為龍飛船觸摸屏做的設計貢獻,他是一個獨立承包商,為初創(chuàng)企業(yè)和產品團隊提供 UI 和 UX 設計咨詢。
他與 SpaceX 軟件團隊合作創(chuàng)建了觸摸屏應用程序,向宇航員提供有關航天器功能狀態(tài)的實時信息,從運載工具在太空中的位置,到可能的目的地,再到船上的環(huán)境檢測等。由于這項設計工作從始至終是機密的,并受《國際武器貿易條例》的約束,除非 SpaceX 公司公開,否則無法共享作品的更多細節(jié)。
不過,AJ Fitzpartric 還是分享了自己在這項合作中承擔的幾個流程:1.為駕駛艙觸摸屏顯示器創(chuàng)建線框和 UI 流程;2.向 SpaceX 團隊、NASA 客戶以及宇航員演示講解全新的設計和 UI 流程;3.針對太空旅行的獨特條件開發(fā)了樣式指南和設計規(guī)范,例如宇航員手套的觸摸目標和振動時的易讀性;4.與軟件工程師緊密合作,了解硬件和技術限制,確定用戶體驗差距和設計任務并確定優(yōu)先級;5.將設計和生產資料交付給軟件工程師進行開發(fā)。
美國載人航天工程歷程
AJ Fitzpartric的作品案例
與從游戲行業(yè)招募開發(fā)者類似,這位 UI/UX 設計師也并非專業(yè)為航空航天領域客戶服務的,而是主要做 App 與 Web 設計的,他的代表作品包括插圖項目、索尼設計規(guī)范和圖片編輯器、還有 iOS 應用等。
這在航天領域或許獨樹一幟。正如 SpaceX 對外分享的一份 PPT 中介紹的那樣,算力上的進步帶來了全新可能:存儲、計算和渲染能力上的突破,可實現(xiàn) 3D 渲染和交互式界面;移動設備的創(chuàng)新改善了重量和能耗問題;觸摸屏便宜且普及。
基于瀏覽器的技術棧可作為界面開發(fā)的新平臺:各種庫和框架提供了穩(wěn)定的功能,能快速實現(xiàn)原型;現(xiàn)代化的開發(fā)和調試工具加速迭代;技術的跨界通用性融合好處多多。
從這些層面來看,SpaceX“龍”飛船的成功發(fā)射不僅把技術開發(fā)、軟件創(chuàng)新進行了一番試煉,還直接把 UI 設計這個職業(yè)拉到了“航天級”高度,新一代 UI 技術??赡軙ξ磥砗教煸O備領域產生越來越廣泛的影響,這背后是從游戲、設計、軟硬件工程師多方跨界人才的智慧火花碰撞。
SpaceX 關于載人飛船技術創(chuàng)新的講解
所有這些看似能簡單完成的集成和設計,并非一蹴而就,成果是一代代航天人數(shù)十年的技術開發(fā)和工程經驗積累。
美國從20世紀60年代便開始進行載人航天任務,那時候的航天設備儀器并不足夠先進,各種條件與安全保障要比現(xiàn)在惡劣得多。宇航員們必須穿著笨重防護外套駕駛航天器,從水星計劃、雙子座計劃、阿波羅計劃到航天飛機,航天員們可謂是一邊飛一邊修,大小故障不斷,憑借著智慧和勇氣深入太空探索,一度遠征月球并活著回來。
那是一個略顯粗糙的年代,卻也是堪稱奇跡的年代。航天器座艙和交互方式的變革就在這一代代航天人的努力下實現(xiàn)了進化,最終,將成百上千個按鈕濃縮成幾個大屏幕和幾個關鍵物理按鈕。而隨著更多人工智能和自動化技術的加入,未來航天員可以用最簡單的方式操控著一臺最復雜和精密的飛行設備,為航天普及化、更接地氣的商業(yè)航天打下基礎,這是最顯著的一大進步。
SpaceX“龍”飛船的儀表板正在把飛船的操作門檻降到普通人經過培訓就能上手的程度,或許未來某一天,一個普通人經過“航天模擬器”的操作培訓,掌握一些應急操作,就能駕駛這樣的飛船進行太空飛行。當然,前提還是能付得起這張飛船票,據了解,“龍”飛船的報價為每個座位 5500 萬美元,將來如果發(fā)射成本壓縮可能還會再降低一些。或許 SpaceX 可以借此開一個富豪太空旅行飛船駕校了。
“龍”飛船宇航員的操控場景
對于這樣的飛船操控交互系統(tǒng)創(chuàng)新,網友們褒貶不一。有人認為,以前的載人航天是國家行為,成敗關乎國家榮譽和歷史進程,可靠性大于用戶體驗,原則上不允許出現(xiàn)任何事故和設備隱患的,但馬斯克的載人航天是商業(yè)行為,發(fā)生意外商業(yè)保險覆蓋就好,沒有太多束縛可以大膽發(fā)揮。
也有人對大號液晶觸控屏表示擔憂,航天飛行受外部環(huán)境干擾因素非常多,萬一斷電了黑屏了,或者震動破裂了,顯示不出來任何內容就十分嚇人,而機械按鈕儀表損壞的概率就小得多,即使出現(xiàn)故障,也是一部分,而不是整個系統(tǒng)完全崩潰不能用。
(綜合整理報道)(編輯/華生)