SpaceX龍飛船性能要求嚴苛,軟件開發存挑戰

{"type":"doc","content":[{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"SpaceX 的載人龍飛船又一次與國際空間站成功對接,但在軟件開發方面仍面臨一系列特殊挑戰。"}]}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"SpaceX 軟件開發存挑戰"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"北京時間 2021 年 4 月 23 日 17 時,SpaceX 進行了該公司 2021 年的首次載人發射,地點位於美國佛羅里達州肯尼迪航天中心,目的地是國際空間站。據俄羅斯衛星網報道,北京時間 4 月 24 日 17 時,搭載四名航天員的載人龍飛船已與國際空間站完成對接。這意味着,SpaceX 的載人龍飛船又一次與國際空間站成功對接。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"據瞭解,這是 SpaceX 第三次載人發射,也是第二次正式商業載人發射。不過 SpaceX 龍飛船軟件開發負責人 Steven Gerding 在近期接受 Stack Overflow 採訪時表示,SpaceX 公司在開發軟件過程中仍面臨一系列特殊挑戰。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"據 Gerding 介紹,SpaceX 的火箭飛行軟件以控制週期爲核心構建而成,軟件需要讀取所有輸入:通過 ADC 讀取到的傳感器信息、來自網絡的數據包、來自 IMU 的數據、來自恆星跟蹤器或制導傳感器的更新、還有來自地面控制臺的指令等。開發人員需要對這些信息進行處理以確定當前狀態以及輸出結果,等到下一個時鐘週期到來後再重複一遍整個過程。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這種對控制週期的強調給軟件提出了一系列嚴苛的性能要求。Gerding 表示,“在龍飛船上,某些計算機會以 50 赫茲的頻率運行控制週期,也有一些計算機的運行頻率爲 10 赫茲。主飛行計算機的運行頻率就是 10 赫茲,它負責管理整體任務並向其他計算機發送指令。至於那些運行頻率爲 50 赫茲的計算設備,是爲了對某些特定任務更快做出反應。”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"至於飛船突然出故障了怎麼辦,Gerding 稱“如果是硬件出了問題,那答案非常明確。我們設計了全面的硬件備份,包括計算機硬件、傳感器乃至執行器;我們可以及時檢測到故障並快速完成線路切換。”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"同時,Gerding 也表示,任何軟件都不可避免會存在某些bug。“所以我們只能在軟件設計當中,儘量保證把出現故障後的實際影響降到最低。”例如,如果推進系統中出現軟件錯誤,那麼飛船的生命支持系統或者負責操縱飛船的制導系統不應該受到影響,反之亦然。“將不同子系統妥善隔離起來,是解決這個問題的關鍵。”目前在組件之內,SpaceX 同樣嘗試分段隔離錯誤影響。“我們一直在檢查錯誤代碼與返回值,同時對操作人員及機組人員進行培訓,幫助他們深入瞭解算法的具體細節。”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"此外,驗證與確認流程也佔據了整個軟件開發週期中的大部分時間。“從軟件本體編寫完成到讓它在航天器上順暢運行,中間還有很長的調試道路要走。”"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"SpaceX 飛船技術棧"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"SpaceX 載人龍飛船多次成功發射的同時,很多技術人員對其應用到的技術棧也非常關注。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"事實上,SpaceX 的軟件工程師曾在 2013 年做過一次公開回應,可以總結出一些相關信息:SpaceX 使用 Actor-Judge 系統爲火箭和航天器提供三重冗餘。Falcon 9 具有 3 個雙核 x86 處理器,每個核上都運行着 Linux 實例(操作系統用的是 Linux,還有 LabVIEW 和 Matlab)。飛行軟件是用 C\/C++ 編寫的,並且在 x86 環境中運行 (SpaceX 獵鷹九號和龍飛船用的都是 Intel 雙核的 x86 處理器),整個主控程序只有幾十萬行代碼。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"italic"}],"text":"注:LabVIEW 是美國國家儀器公司所開發的圖形化程序編譯平臺。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"對於每個計算和決定,字符串都會比較不同核的返回結果。如果存在不一致,則字符串返回是錯誤的,並且不發送任何命令。如果都返回相同的結果,則字符串將命令發送到火箭上的各種微控制器,這些微控制器控制是諸如引擎之類的東西。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2020 年年中,SpaceX 龍飛船軟件的六名技術人員在 Reddit 舉行了一場以“Dragon 有問必答”爲主題的線上問答會,在問答會上,技術人員 Josh 證實了火箭和飛船的主要編程語言是 C++ 這一說法,他表示:“所有應用程序級自主軟件都是用 C ++ 編寫的。儘管我們希望編程儘可能簡單些,但通常,我們在使用面向對象的編程技術時會選擇使用 C++。”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"此外,網友也比較關心 SpaceX 的技術棧是什麼?它們主要是開源還是內部框架?這一問題 Sofian 給出了回答,他稱:“我們使用 C 和 C++來製作飛行軟件,HTML、JavaScript 和 CSS 用於顯示,python 用於測試。”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在被問到所使用的 Linux 發行版是什麼時,Dietrick 表示,“我們不使用任何現成的發行版,我們有自己的發行版。”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"至於在飛行過程中如何執行錯誤檢測和糾正這一問題,Josh 給出的回答是:“我們在飛船上部署了多臺冗餘計算機,並對其輸出進行投票,這樣就可以處理計算機中由輻射引起的錯誤。通過使用多個不同的傳感器來處理傳感器中的錯誤。而數據傳輸中的錯誤則通過使用附加到有效負載的錯誤檢測或錯誤糾正代碼來處理。”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"據瞭解,SpaceX 的軟件工程師主要工作就是編寫火箭和航天器上運行的代碼以及火箭和航天器的設計和製造過程的代碼,內部分爲飛行軟件、企業信息系統、地面軟件及航電測試四個團隊,人數在幾個到數十個人員不等,分別承擔不同的研發任務。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"此外,SpaceX 的龍飛船主控系統的芯片組僅用了 2.6 萬人民幣。要知道,這與其他載人飛船搭載的星載計算機和控制器相比(超過一億人民幣),成本極低。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"參考鏈接:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"https:\/\/stackoverflow.blog\/2021\/05\/10\/dont-push-that-button-exploring-the-software-that-flies-spacex-starships\/"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"https:\/\/www.infoq.cn\/article\/sYZCchfcGX2OSADXPKCP"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"https:\/\/www.infoq.cn\/article\/lIEeT32g4AWk5GSEY3VS"}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章