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