ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

火箭绳网回收三维仿真:用 Modelica 看一次完整的捕获过程一枚要“稳稳落回网里”的火箭

火箭绳网回收三维仿真:用 Modelica 看一次完整的捕获过程一枚要“稳稳落回网里”的火箭 可重复使用火箭的回收方式有很多除了常见的动力反推垂直着陆还有一种比较有意思的思路利用绳网对下降中的飞行器进行捕获和缓冲。从仿真角度看这个过程并不只是让火箭“掉进一张网”这么简单。火箭需要先下降再调整横向位置进入捕获区域接触绳网后还要通过缓冲过程逐渐降低速度同时根据不同阶段切换控制策略。最近在整理航天相关的 Modelica 案例时我在 MoHub 上看到一个RocketRecoveryLib模型于是实际运行了一遍。这个案例没有追求复杂的火箭气动和柔性绳网建模而是采用等效模型把火箭运动、捕获缓冲、控制逻辑和三维动画组合在了一起。这篇文章主要记录一下这个模型的结构以及实际运行后能看到的回收过程。一、这个案例模拟了什么这个模型模拟的是一个简化的火箭绳网捕获过程。整个过程可以概括为下降 → 横向对准 → 进入捕获区域 → 接触绳网 → 缓冲减速 → 稳定捕获从模型结构来看主要包含五个部分火箭动力学计算火箭的位置、速度和姿态变化绳网捕获模型判断火箭是否进入捕获区域并模拟网面的缓冲作用回收控制器控制火箭下降速度和横向位置任务逻辑根据高度、速度、位置误差等条件切换不同任务阶段三维可视化显示火箭、绳网、地面以及发动机等场景。这种组织方式比较适合用来理解一个多学科系统是如何组合起来的。需要说明的是这个案例属于等效仿真模型。火箭动力学采用简化的三维运动模型绳网也没有进一步建立真实的柔性绳索和网面结构而是通过捕获区域、接触权重以及等效弹簧阻尼来模拟缓冲过程。因此它更适合用于建模教学、仿真演示和系统逻辑验证而不是直接用于实际火箭回收系统的工程设计。二、怎么运行这个模型模型使用 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。火箭初始速度约为11.9 m/s随着下降和捕获过程不断进行速度逐渐降低。进入绳网后网面的等效弹簧-阻尼作用进一步消耗火箭的运动能量配合控制器的卸载策略最终速度衰减到接近零。速度变化曲线这也是整个案例最直观的一个结果火箭并不是直接停止而是经历了一个明显的缓冲减速过程。五、这个案例值得关注的地方5.1 状态机让整个回收过程更清楚如果只建立火箭运动模型可能只能看到位置和速度的变化。加入任务状态机之后可以进一步回答当前火箭到底处于下降、对准、捕获还是缓冲阶段对于这种包含多个任务阶段的系统状态机能够把连续的物理过程转换成更加清晰的任务逻辑。5.2 绳网采用等效模型降低了复杂度真实绳网属于典型的柔性结构涉及大量绳索之间的连接、接触和变形。如果完全按照真实结构建立模型计算量和建模复杂度都会明显增加。这个案例采用捕获区域 弹簧阻尼的方式进行等效在保留主要缓冲特征的同时把模型规模控制在比较容易运行的范围内。对于教学和概念验证来说这种取舍比较实用。5.3 多个子系统可以放在同一个模型里观察这个案例涉及的内容其实比较多火箭运动控制系统绳网接触任务状态机三维可视化。但最终都可以在同一个顶层模型中连接起来。这也是 Modelica 这类多领域建模工具比较适合展示的场景不同类型的模型可以按照系统关系组合而不需要分别运行多个独立程序再手动拼接结果。六、总结这次运行RocketRecoveryLib后比较直观地看到了一次完整的火箭绳网捕获过程火箭从高空下降 → 横向位置逐渐对准 → 进入捕获区域 → 绳网发生下陷 → 速度逐渐降低 → 最终进入稳定捕获状态。模型本身并没有试图把真实火箭和绳网的所有物理细节都建立出来而是用相对简化的动力学、接触和控制模型把整个任务流程串联起来。因此如果关注的是多学科系统如何建模、控制逻辑如何与物理模型连接以及如何通过三维动画观察整个任务过程这个案例还是比较容易上手的。如果后续需要进一步研究则可以在现有结构上逐步替换火箭动力学、绳网模型或者控制器而不需要从零开始搭建整个系统。案例地址https://mohub.net/model/26101/summary本文中的参数和结果来自该案例当前的模型配置实际仿真结果可能会受到模型版本、参数及运行环境影响。
返回列表