華人博士回收了虛擬版 SpaceX 火箭,專案現已開源
馬斯克旗下的 SpaceX 可以說帶火了“火箭回收”這一話題。
這不,連粉絲們都已經開始摩拳擦掌,用自己的方式挑戰起了這個技術難題。
例如一位來自密歇根大學的華人博士,就用強化學習試了一把回收火箭!
他根據現實中的星艦 10 號一同進行模擬,還真在虛擬環境中穩穩地完成了懸停和著陸!
這個專案迅速在 Reddit 上引發了大批網友們的關注:
那麼,他是如何實現的呢?
給火箭回收設立“獎勵機制”
要在模擬環境中回收火箭,那麼大一隻構造複雜的火箭肯定是不能直接抱來用的。
於是,這位 SpaceX 的鐵桿粉絲首先基於氣缸動力學,將火箭簡化為一個二維平面上的剛體:
這個火箭的底部安裝有推力向量發動機,能夠提供不同方向的可調的推力值(0.2g,1.0g 和 2.0g);同時,火箭噴嘴上還增加了一個角速度約束,最大轉速為 30°/秒。
火箭模型所受到的空氣阻力則設定為與速度成正比。
現在,這個模型的一些基本屬性就能夠以下面兩個集合來表示:
動作空間:發動機離散控制訊號的集合,包括推力加速度和噴嘴角速度
狀態空間:由火箭位置、速度、角度、角速度、噴管角度和模擬時間組成的集合
而“火箭回收”這一流程,則被分為了懸停和著陸兩個任務。
在懸停任務中,火箭模型需要遵循這樣一種獎勵機制:
火箭與預定目標點的距離:距離越近,獎勵越大;
火箭體的角度:火箭應該儘可能保持豎直。
著陸任務則基於星艦 10 號的基本引數,將火箭模型的初始速度設定為-50 米/秒,方向設定為 90°(水平方向),著陸燃燒高度設定為離地面 500 米。
▲星艦 10 號發射和著陸的合成影象
火箭模型在著陸時同樣需要遵循這樣一種“獎勵機制”:
當著陸速度小於安全閾值,並且角度接近豎直 0° 時,就會受到最大的“獎勵”,也會被認為是一次成功的著陸。
總體而言,這是一個基於策略的參與者-評判者的模型。
接下來就是進行訓練:
最終,在經歷了 20000 次的訓練後,火箭模型在懸停和著陸兩個任務上都實現了較好的效果:
最終,模型得到了很好的收斂效果:
而這枚模擬環境中的偽・星艦 10 號,也就像開頭展示的那張動圖一樣,學會了腹部著陸,穩穩地落地了。
下一步:增加燃料變數
這一專案一經發出,就引來了紅迪眾多網友的圍觀和稱讚。
有人覺得用強化學習來解決傳統任務非常有趣,因為它具有更好的魯棒性(Robust 的音譯,也就是健壯和強壯的意思,指在異常和危險情況下系統生存的能力)。
作者也在下方回覆表示:現實中惡劣的環境條件可以成為環境制約因素,而強化學習則能在一個統一的框架內解決這些問題。
不過在稱讚之餘,也有網友提出了最直接的這樣一個問題:
既然我們已經可以使用經典控制方法找到這些任務的最優解,那為啥 SpaceX 之前沒人做?
下方有人解答到:這或許是因為之前的數字控制系統、感測器等技術並不成熟,採用新方法就意味著要重新設計火箭的關鍵部分。
這也就是控制系統層面之外的“工程類的問題”,而 SpaceX 正是在這些相關領域中做了改進。
而那些較為傳統保守的航天航空工業則會使用使用凸優化(Convexification)來解決火箭著陸問題。
也就是評論區有人貼出的這篇論文中提到的方法:
不少評論也為開發者提供了下一步開發的新思路,比如這條評論建議將“剩餘燃料”也作為一個變數,模型燃料的減少或耗盡也是現實中的一個重要影響因素。
作者欣然接受了這一建議:是很容易新增的有趣設定,安排!
密歇根大學華人博士
開發者已經為這一專案建立了一個網站,在主頁他這樣介紹到:
這是我的第一個強化學習專案,所以,我希望通過這些“低水平程式碼”儘可能地從頭實現包括環境、火箭動力學和強化學習 agent 在內的所有內容。
作者叫 Zhengxia Zou,是一位來自密歇根大學博士,主要研究計算機視覺、遙感、自動駕駛等領域。
他的論文曾被 ICCV 2021、CVPR 2021 等多個頂會收錄:
下載連結:
https://github.com/jiupinjia/rocket-recycling
專案主頁:
https://jiupinjia.github.io/rocket-recycling/
參考連結:
https://www.reddit.com/r/MachineLearning/comments/qt2tws/pr_rocketrecycling_with_reinforcement_learning/