
可重復使用火箭的回收方式有很多除了常見的動力反推垂直著陸還有一種比較有意思的思路利用繩網對下降中的飛行器進行捕獲和緩沖。從仿真角度看這個過程并不只是讓火箭“掉進一張網”這么簡單。火箭需要先下降再調整橫向位置進入捕獲區域接觸繩網后還要通過緩沖過程逐漸降低速度同時根據不同階段切換控制策略。最近在整理航天相關的 Modelica 案例時我在 MoHub 上看到一個RocketRecoveryLib模型于是實際運行了一遍。這個案例沒有追求復雜的火箭氣動和柔性繩網建模而是采用等效模型把火箭運動、捕獲緩沖、控制邏輯和三維動畫組合在了一起。這篇文章主要記錄一下這個模型的結構以及實際運行后能看到的回收過程。一、這個案例模擬了什么這個模型模擬的是一個簡化的火箭繩網捕獲過程。整個過程可以概括為下降 → 橫向對準 → 進入捕獲區域 → 接觸繩網 → 緩沖減速 → 穩定捕獲從模型結構來看主要包含五個部分火箭動力學計算火箭的位置、速度和姿態變化繩網捕獲模型判斷火箭是否進入捕獲區域并模擬網面的緩沖作用回收控制器控制火箭下降速度和橫向位置任務邏輯根據高度、速度、位置誤差等條件切換不同任務階段三維可視化顯示火箭、繩網、地面以及發動機等場景。這種組織方式比較適合用來理解一個多學科系統是如何組合起來的。需要說明的是這個案例屬于等效仿真模型?;鸺齽恿W采用簡化的三維運動模型繩網也沒有進一步建立真實的柔性繩索和網面結構而是通過捕獲區域、接觸權重以及等效彈簧阻尼來模擬緩沖過程。因此它更適合用于建模教學、仿真演示和系統邏輯驗證而不是直接用于實際火箭回收系統的工程設計。二、怎么運行這個模型模型使用 Modelica 編寫頂層依賴 Modelica 4.0.0.TY.1。在 MWORKS.Sysplorer 中打開模型庫后可以直接運行默認示例RocketRecoveryLib.Examples.SuccessfulCaptureDemo基本流程就是打開模型 → 檢查模型 → 翻譯 → 仿真 → 查看結果默認仿真參數為參數設置StartTime0 sStopTime30 sInterval0.03 s仿真完成后可以重點查看以下變量logic.phase當前任務階段rocket.position火箭位置rocket.speed火箭速度大小net.netDeflection繩網下陷量net.captureMetric捕獲權重。三、模型內部是怎么組織的模型視圖打開頂層模型RocketRecoveryDemo后可以看到整個系統大致分成五個子系統。1. 火箭動力學Rocket3DOF是火箭的運動模型。這里沒有建立完整的六自由度火箭動力學而是采用三維質點運動加簡化姿態角的方式描述。模型輸入主要包括控制加速度和繩網產生的等效作用輸出則包括三維位置速度姿態角速度大小。同時加入了一個簡化的二次阻力項用于讓下降過程更加接近實際運動狀態。2. 繩網捕獲CaptureNet是整個案例比較有特點的一部分。模型沒有直接建立復雜的柔性網而是把繩網捕獲過程等效成幾個簡單的物理關系捕獲區域判斷平滑接觸權重垂向彈簧-阻尼橫向居中彈簧-阻尼。最終得到一個等效的繩網作用力并轉換成火箭受到的等效加速度。這樣處理后雖然不能描述真實繩網每根繩索的變形但可以把“進入網面后減速”的主要過程表現出來。3. 回收控制器RecoveryController主要負責兩個方向的控制。一方面控制火箭的下降速度使其按照設定速度接近捕獲區域另一方面根據橫向位置誤差調整火箭位置使火箭逐漸靠近繩網中心。當火箭進入捕獲階段后控制策略還會進行相應切換讓網面緩沖過程發揮更明顯的作用。控制輸出經過限幅處理避免出現過大的控制指令。4. 任務邏輯MissionLogic使用狀態機描述整個回收任務。模型中設置了 7 個階段Init—— 初始化Descent—— 下降AlignToNet—— 對準繩網CaptureContact—— 捕獲接觸Buffering—— 緩沖CapturedStable—— 穩定捕獲Failure—— 失敗不同階段之間根據高度、橫向誤差、捕獲權重、速度和網面下陷量等條件進行切換。這樣做的一個好處是整個任務過程不再只是連續的物理計算還能夠比較清楚地表達“當前火箭正在執行什么任務”。四、實際運行后的幾個結果4.1 任務階段能夠完整走完首先觀察logic.phase。仿真開始后系統從Init進入Descent隨后進入AlignToNet、CaptureContact和Buffering最后停留在CapturedStable。整個過程中沒有進入Failure狀態。這說明在當前默認參數下模型能夠完整走完一次成功捕獲過程。任務階段切換4.2 火箭從高空逐漸下降并向網心靠近火箭初始高度約為82 m。初始狀態下火箭在水平方向存在一定的位置偏差例如 X 方向約為 12 mY 方向約為 -8 m。隨著仿真進行火箭一邊下降一邊通過控制器逐漸調整橫向位置。最終高度下降到繩網附近橫向位置也逐漸靠近繩網中心?;鸺陆蹈叨惹€這里可以比較直觀地看到兩個控制目標是同時進行的不僅要“降下來”還要“對準網”。4.3 進入繩網后出現明顯的緩沖過程進入捕獲區域之后net.netDeflection開始快速變化。當前仿真中網面下陷量峰值約為0.99 m之后逐漸回落到約0.47 m的穩定狀態。與此同時net.captureMetric也從較低水平逐漸上升峰值約為0.59最終穩定在約0.37。從曲線關系來看這一階段基本對應進入捕獲區域 → 網面發生下陷 → 火箭受到緩沖作用 → 速度逐漸降低 → 最終保持穩定。4.4 火箭速度逐漸降低到接近零再看rocket.speed?;鸺跏妓俣燃s為11.9 m/s隨著下降和捕獲過程不斷進行速度逐漸降低。進入繩網后網面的等效彈簧-阻尼作用進一步消耗火箭的運動能量配合控制器的卸載策略最終速度衰減到接近零。速度變化曲線這也是整個案例最直觀的一個結果火箭并不是直接停止而是經歷了一個明顯的緩沖減速過程。五、這個案例值得關注的地方5.1 狀態機讓整個回收過程更清楚如果只建立火箭運動模型可能只能看到位置和速度的變化。加入任務狀態機之后可以進一步回答當前火箭到底處于下降、對準、捕獲還是緩沖階段對于這種包含多個任務階段的系統狀態機能夠把連續的物理過程轉換成更加清晰的任務邏輯。5.2 繩網采用等效模型降低了復雜度真實繩網屬于典型的柔性結構涉及大量繩索之間的連接、接觸和變形。如果完全按照真實結構建立模型計算量和建模復雜度都會明顯增加。這個案例采用捕獲區域 彈簧阻尼的方式進行等效在保留主要緩沖特征的同時把模型規??刂圃诒容^容易運行的范圍內。對于教學和概念驗證來說這種取舍比較實用。5.3 多個子系統可以放在同一個模型里觀察這個案例涉及的內容其實比較多火箭運動控制系統繩網接觸任務狀態機三維可視化。但最終都可以在同一個頂層模型中連接起來。這也是 Modelica 這類多領域建模工具比較適合展示的場景不同類型的模型可以按照系統關系組合而不需要分別運行多個獨立程序再手動拼接結果。六、總結這次運行RocketRecoveryLib后比較直觀地看到了一次完整的火箭繩網捕獲過程火箭從高空下降 → 橫向位置逐漸對準 → 進入捕獲區域 → 繩網發生下陷 → 速度逐漸降低 → 最終進入穩定捕獲狀態。模型本身并沒有試圖把真實火箭和繩網的所有物理細節都建立出來而是用相對簡化的動力學、接觸和控制模型把整個任務流程串聯起來。因此如果關注的是多學科系統如何建模、控制邏輯如何與物理模型連接以及如何通過三維動畫觀察整個任務過程這個案例還是比較容易上手的。如果后續需要進一步研究則可以在現有結構上逐步替換火箭動力學、繩網模型或者控制器而不需要從零開始搭建整個系統。案例地址https://mohub.net/model/26101/summary本文中的參數和結果來自該案例當前的模型配置實際仿真結果可能會受到模型版本、參數及運行環境影響。