JavaScript進入太空,真正成爲“火箭科學”

SpaceX公司發射的“龍飛船”(Dragon)2號將JavaScript技術帶入了太空。飛船系統的用戶界面採用了Chromium和JavaScript,所以很大一部分依賴了Web技術。

Twitter上的相關討論以及與SpaceX軟件團隊成員進行的Reddit AMA會話出現了一些非常幽默的內容,比如“node_modules真的是太空中最重的模塊嗎”,但不管怎樣,JavaScript確實在爲SpaceX龍飛船上的觸摸UI提供支持。

正如美國宇航局(NASA)宇航員Christina Koch在最近的OpenJS世界大會上所說的那樣,SpaceX擁有非常現代的顯示器。“龍飛船”是第一艘搭載觸摸屏的航天器。“龍飛船”上的宇航員穿着帶有特殊手套的宇航服,以便能夠在極其惡劣的環境下使用觸摸屏。他們使用幾個按鈕來執行非常關鍵的任務和訪問冗餘系統。

Koch說,在空間站裏,團隊通過平板電腦使用Web應用程序,這些平板電腦連接的是與空間站其他系統相獨立的網絡。他們使用基於Web的調度軟件和程序,並定期通過網站(如YouTube)完成專業和娛樂方面的事情。

https://youtu.be/j2-mrQDJ_Sk

NASA目前正在研發獵戶座(Orion)飛船,用於登月和執行火星任務。最初,NASA通過一個快速原型實驗室爲航天員設計界面,關注的是用戶驅動型的需求,而非自上而下型的需求。雖然“獵戶座”目前還沒有使用觸摸功能,但他們計劃提供一些可編程按鈕和程序,以便獲得高效的飛行體驗。

在龍飛船上,界面使用了大量Web組件和自定義響應式框架。SpaceX公司軟件工程師Sofian Hnaide在Reddit AMA上解釋說:

在關鍵任務環境中使用Chromium和JavaScript是一個普遍的問題。我們必須明白,在這些情況下,Chromium只是作爲一個UI渲染引擎。帶有顯示和容錯功能的飛行軟件的交互層定義良好,並位於顯示邊界之外。 就是說,無論採用怎樣的技術棧,我們都遵循相同的開發流程。 我們對開發人員進行交叉培訓,使用C++編寫代碼,並懷着相同的心態開發出可靠的軟件。我們非常重視可靠性和性能,就像其他飛行軟件一樣,我們在不同條件下進行測試,以便了解所有可能出現的故障模式。我們有警報系統和處理程序,在出現故障時可採取相應的行動。

雖然我們一路上遇到了很多挑戰,但我們對自己的表現非常滿意。最重要的是,我們的兩個客戶(到目前爲止)也感到非常滿意。飛船的地表軟件已經在使用這些顯示技術棧,用不了多久,我們就會開始爲飛船設計人機界面。

SpaceX龍飛船軟件團隊經理Wendy Shimata補充說:

你可能從某些圖像中注意到了,顯示屏下方仍然有一些硬件按鈕。這是爲了確保在顯示器出現故障無法使用時,宇航員仍然可以使用硬件按鈕來啓動關鍵任務,例如響應機艙火災。

爲了保證軟件的可靠性,團隊採用了很多方法進行測試。在SpaceX團隊負責Demo-2的John Dietrick解釋說:

我們進行所有能夠想到的測試!單元測試、容器化集成測試(藉助物理模擬在本地機器上執行這些測試)以及在真實硬件上進行的完整“HITL”(硬件環路)測試(完全仿真)。使用模擬器來測試軟件是我們擁有的最強大的工具,尤其是在真實硬件上運行的時候。我們將硬件放在實驗室的桌子上,然後模擬整個任務過程,甚至是一些故障。在飛船上這麼做非常容易。爲了深入研究,我們通過通信通道和網絡快速地從飛船上獲取大量數據。

這個項目最初是一個模擬器原型,爲了向NASA展示設計願景。然後,團隊對其進行了修改並在硬件上運行,取得了一些進展。在開發原型時,SpaceX團隊對基於Web的方法有了更強的信心。正如Hnaide解釋的那樣:

我們喜歡瀏覽器附帶的所有現代化功能,也喜歡那些已經受過相關技術棧訓練的人才。我們並不擔心在這裏做一些不一樣的事情會影響我們。我們喜歡採用“第一原則”方法來解決問題,而不是隻遵循行業標準。

在一篇很長的推文中,JavaScript作者和Brave首席執行官Brendan Eich對此進行了幽默的評論,並就如何利用TypeScript、Flow或Hegel的類型安全性來確保TypeScript在太空中的安全使用做出了嚴肅的迴應。

很顯然,JavaScript現在實際上已經成了一門“火箭科學”。

原文鏈接

JavaScript Reaches the Final Frontier: Space

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章