開扒SpaceX飛船技術棧,程序員搞了個3D版飛船生成器過癮

在經歷了 十幾個小時的飛行後,SpaceX的載人龍飛船與國際空間站成功對接,國際空間站迎來第一艘商業載人飛船的到訪,其背後的技術棧也引起了開發人員的關注,甚至有程序員搞起了3D版飛船生成器。

SpaceX飛船技術棧

美國當地時間 5 月 30 號下午 3 點 22 分,北京時間 5 月 31 日凌晨 3 點 22 分,由埃隆·馬斯克創辦的航天公司 SpaceX 執行的載人航天發射任務在肯尼迪航天中心圓滿完成,可能很多技術人員對於SpaceX應用到的技術棧非常關注,導致這個話題在Reddit和Hacker News上的熱度都不低。

載人“龍”飛船完成分離

事實上,SpaceX的軟件工程師曾在2013年做過一次公開回應,可以總結出一些相關信息:

SpaceX使用Actor-Judge系統爲火箭和航天器提供三重冗餘。 Falcon 9具有3個雙核x86處理器,每個核上都運行着Linux實例(操作系統用的是Linux,還有LabVIEW和Matlab)。飛行軟件是用C/C ++編寫的(這一點也得到了SpaceX 工程師的確認,火箭和飛船的主要編程語言是C++),並且在x86環境中運行 (SpaceX 獵鷹九號和龍飛船用的都是Intel雙核的x86處理器),整個主控程序只有幾十萬行代碼。

注:LabVIEW是美國國家儀器公司所開發的圖形化程序編譯平臺

對於每個計算和決定,字符串都會比較不同核的返回結果。如果存在不一致,則字符串返回是錯誤的,並且不發送任何命令。如果都返回相同的結果,則字符串將命令發送到火箭上的各種微控制器,這些微控制器控制是諸如引擎之類的東西。

SpaceX的軟件工程師主要工作就是編寫火箭和航天器上運行的代碼以及火箭和航天器的設計和製造過程的代碼,內部分爲飛行軟件、企業信息系統、地面軟件及航電測試四個團隊,人數在幾個到數十個人員不等,分別承擔不同的研發任務。

此外,SpaceX的龍飛船主控系統的芯片組僅用了2.6萬人民幣。要知道,這與其他載人飛船搭載的星載計算機和控制器相比(超過一億人民幣),成本極低。

在對SpaceX飛船技術棧進行探索的同時,也有開發者搞出了一個3D版本的開源飛船生成器項目,這個項目的實際開發時間是在2016年,但卻在馬斯克的SpaceX 首次載人飛船發射成功後被送上了Hacker News熱搜,我們也一起看看該項目的實際效果。

Reddit討論鏈接:

https://www.reddit.com/r/programming/comments/gtvmb4/what_computer_and_software_is_used_by_the_falcon_9/

開源3D版飛船生成器

Spaceship Generator項目在GitHub上收穫了5.7k的star,這是一個Blender腳本,可根據代碼生成3D飛船。真的飛船搞不來,搞一個3D版的過過癮還是可以的。

使用

開發者需要自行安裝Blender 2.76或更高版本,然後從 Releases 中下載最新的add_mesh_SpaceshipGenerator.zip,打開下載的ZIP文件,然後按照Under File > User Preferences… > Add-ons enable this script (search for “spaceship”)這個路徑啓用這個腳本,最後在 3D View 中添加宇宙飛船(Add > Mesh > Spaceship)。

Blender最新版本下載地址:https://www.blender.org/download/

Blender是一款免費的開源3D創作套件,可用於創建3D可視化的靜態圖像、3D動畫、VFX鏡頭,也可作爲視頻編輯工具。它是一個跨平臺的應用程序,可以在Linux、macOS和Windows系統上運行。與其他3D創作套件相比,Blender對內存和驅動器的要求也相對較小。它的界面使用OpenGL框架(創建),爲所有支持的硬件和平臺提供一致的體驗。

主要特徵

  • Blender是一個完全集成的3D內容創建套件,提供了廣泛的基本工具,包括建模、渲染、動畫和 Rigging、視頻編輯、VFX、合成、紋理繪製和多種類型的模擬。

  • 它是跨平臺的,擁有在所有主流平臺上統一的OpenGL GUI(並可通過Python腳本進行定製)。
    擁有一個高質量的3D架構,可以實現快速、高效地創建工作流程。

  • 擁有活躍的社區支持,詳情請參見 blender.org/community。

  • 它有一個小的、可選的輕量級可執行文件。

實際效果

首先從一個盒子開始延伸建造船體,多次拉伸前、後表面,並在此過程中隨機添加平移、縮放、旋轉效果;其次開始在船體上增加不對稱性,選取隨機的面並將其以類似的方式改變;然後向船體添加細節,按其朝向對每個面孔進行分類,並在其上生成一些細節,例如引擎、天線、炮塔、照明燈等;最後進行一些細微調整等,如下圖:

算法原理

以下截屏使用船體線段數和非對稱線段數的極值創建,以顯示算法的工作原理。

GitHub地址:https://github.com/a1studmuffin/SpaceshipGenerator

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