七枢四链垂航系统
简称:七枢垂航
英文代号可用:Q7-ODML Vertical Mobility System
含义:
text
七枢:
1个中心发力点 + 6个环绕发力点
"枢"表示推力枢纽、姿态枢纽、控制枢纽
四链:
目标链
需求链
方法链
学习链
垂航:
垂直起降、垂直移动、空间点位转移
完整技术名可以写成:
七枢四链垂航系统:一种基于目标、需求、方法与学习闭环的多发力点垂直移动单元方案
更像项目代号的名字:
天枢-7
更像论文/专利标题的名字:
一种七发力点矢量控制垂直移动系统及其目标需求方法学习控制架构
更有机械感的名字:
七枢垂直迁移单元
更有系统论味道的名字:
四链驱动七枢垂航体
我最推荐用:
七枢四链垂航系统
因为它同时抓住了两个核心:
"七枢"对应硬件结构, "四链"对应你的理论方法。
1. 总体结论
你的方案可以抽象成一个四层系统:
目标层:我要从 A 到 B 再到 C。
需求层:为了做到这件事,必须满足哪些状态条件。
方法层:在当前状态下,选择哪组动作或控制策略。
学习层:执行后记录偏差,修正模型和方法。
对应到你上传的代码结构,已经有一些基础可以接上:
| 系统层 | 本任务中的含义 | 可映射结构 |
|---|---|---|
| 世界/场景 | A 点、B 点、C 点、机体、发动机、陀螺仪、空域、地表 | 世界链、场景类 |
| 需求 | 到达 B、到达 C、保持姿态、速度归零、安全着陆 | 需求链、需求集 |
| 方法 | 起飞、悬停、平移、下降、着陆、故障处置 | 方法链、方法集 |
| 任务 | A→B→C 的阶段拆分 | 任务链 |
| 学习 | 根据仿真/试验/飞行日志修正控制参数 | 当前文件里还没有独立学习模块,需要补 |
所以,系统能设计,核心不是"喷口怎么造",而是搭一个可验证、可选择、可修正的飞行任务闭环。
2. 先定义目标:A→B→C 不是一句话,而是一组终态条件
目标可以定义为:
text
目标G:
起点 = 地表A点
中继点 = 空间B点
终点 = 地表C点
成功条件:
1. 从A安全起飞
2. 到达B附近允许误差范围
3. 从B转入前往C的路径
4. 在C点附近着陆
5. 着陆时速度接近0
6. 姿态保持竖直或允许姿态范围内
7. 机体、发力点、陀螺仪状态正常
这里的重点是:目标不是直接变成发动机指令。目标要先拆成需求。
例如:
text
目标:从A到B再到C
拆成需求:
D1: 地表A点静止待命
D2: 垂直起飞到安全高度
D3: 向空间B点移动
D4: 到达B点容差范围
D5: 从B点规划到C点上方
D6: 垂直下降
D7: 在C点软着陆
这正好适合你现有"需求链/任务链/方法链"的思路。目标像总指挥,需求像军令状,方法像工具箱。
3. 场景建模:A、B、C 和垂直移动单元都应该进入"世界"
你上传的 场景类 已经适合做 3D 空间建模,里面有 3D 包围盒、位置、尺寸、相对坐标、绝对坐标、场景变换等概念。
本任务可以这样建模:
世界场景
text
世界场景:
地表场景
空域场景
垂直移动单元内部场景
发力点布局场景
存在对象
text
存在:
垂直移动单元
中心发力点P0
周围发力点P1-P6
陀螺仪G1-Gn
起点A
中继点B
终点C
特征
text
垂直移动单元特征:
绝对位置
相对位置
速度
加速度
姿态四元数
角速度
质量估计
剩余能源/燃料
发力点健康状态
发力点当前推力
发力点偏移角
陀螺仪读数
控制误差
这样,系统不是"盲飞",而是在一个可查询、可比较、可更新的世界里飞。
4. 需求层:把飞行任务变成可判定的状态区间
你的场景最小 API 里已经有"需求状态区间摘要"和"结果满足需求"的判断思路。这对飞行任务很关键。
例如,到达 B 点可以不是一个绝对点,而是一个容差盒:
text
需求D_B:
位置 ∈ B点附近AABB范围
速度 ≤ V_B_max
姿态倾角 ≤ θ_B_max
高度误差 ≤ H_B_error
着陆 C 点可以定义得更严格:
text
需求D_C_着陆:
位置 ∈ C点着陆范围
高度 = 地表高度
垂直速度接近0
水平速度接近0
姿态接近竖直
发力点逐步降推
安全需求也必须单独建模:
text
需求D_安全:
姿态不失控
角速度不超过阈值
任一发动机故障时进入应急方法
电源/燃料不低于安全余量
不进入禁飞/障碍区域
推力指令不超过结构限制
这一步很重要,因为需求必须能被判定。否则系统只是在喊口号,无法知道自己成功还是失败。
5. 方法层:把 A→B→C 拆成一组可匹配的方法
可以设计一组方法模板,每个方法都有:
text
方法M:
条件场景模板
动作策略
结果场景模板
风险等级
失败转移方法
学习参数
方法组示例
| 方法 | 条件 | 动作目标 | 结果 |
|---|---|---|---|
| M0 自检 | 起飞前 | 检查传感器、发力点、能源 | 进入可起飞状态 |
| M1 起飞 | 位于A,姿态稳定 | 增加总升力 | 离地并进入安全高度 |
| M2 垂直爬升 | 已离地 | 到达指定高度层 | 获得安全高度 |
| M3 水平/斜向转移到B | 高度足够 | 通过周围发力点偏移产生水平加速度 | 到达B附近 |
| M4 B点稳定 | 到达B附近 | 减速、悬停、姿态稳定 | 满足B点需求 |
| M5 转向C上方 | 从B出发 | 规划到C上方路径 | 到达C上方 |
| M6 下降 | 位于C上方 | 控制下降速度 | 接近地表 |
| M7 着陆 | 低高度 | 软着陆、降推 | 到达C并稳定 |
| M8 应急 | 任意异常 | 悬停、返航、降落或关断 | 保命优先 |
这就是"目标→需求→方法"的核心流水线。
6. 控制层:7 个发力点如何分工
你的发力点布局可以这样理解:
text
P0: 中心发力点
P1-P6: 环绕中心的六个发力点
G1-Gn: 内部陀螺仪/惯性测量单元/可能的力矩陀螺
中心发力点 P0
主要作用:
text
提供主升力
减少周围发力点负担
保持垂直方向推力储备
它位于中心,所以一般不产生明显姿态力矩,更像主吊索。
六个周围发力点 P1-P6
主要作用:
text
1. 共同提供升力
2. 通过推力差控制横滚/俯仰
3. 通过偏移产生水平力
4. 在部分发力点失效时提供冗余
如果六个周围发力点只允许沿"圆心-发力点"的径向方向双向偏移,那么系统大致具备:
text
可控:
垂直升降
水平平移
横滚控制
俯仰控制
可能不足:
偏航控制
这是一个关键点。
因为径向偏移产生的力大多穿过圆心方向,通常不容易产生绕垂直轴的偏航力矩。如果要完整控制 6 自由度,建议在系统需求里增加:
text
需求D_偏航可控:
必须存在稳定的偏航控制来源
偏航控制来源可以是概念层面的几种方案:
text
1. 周围发力点允许切向偏移
2. 部分发力点有可控旋流/反扭矩
3. 内部使用控制力矩陀螺或反作用轮
4. 使用空气舵面,仅限有足够气流速度时
5. 通过成对发力点差动设计产生偏航力矩
注意:普通"陀螺仪"通常只是测量姿态,不会持续提供控制力矩。只有控制力矩陀螺、反作用轮、动量轮这类装置才可以参与姿态控制,而且也有饱和问题。
所以需要区分:
text
测量陀螺仪:
用于感知姿态和角速度
控制力矩陀螺:
用于产生姿态控制力矩
反作用轮/动量轮:
可辅助姿态控制,但需要卸载角动量
7. 飞行控制闭环
可以设计成三层控制:
text
外层:任务/轨迹规划
中层:姿态与速度控制
内层:发力点分配控制
外层:轨迹规划
输入:
text
A点、B点、C点
障碍物
禁飞区域
最大速度
最大加速度
能源余量
天气/扰动估计
输出:
text
期望位置 p_des
期望速度 v_des
期望加速度 a_des
期望姿态 q_des
中层:状态控制
把当前位置、速度、姿态和目标状态做比较:
text
位置误差 = 目标位置 - 当前位置
速度误差 = 目标速度 - 当前速度
姿态误差 = 目标姿态 - 当前姿态
然后生成一个期望"总力和总力矩":
text
期望总力 F_des
期望力矩 τ_des
内层:发力点分配
把 F_des 和 τ_des 分配给 7 个发力点:
text
P0 推力
P1-P6 推力
P1-P6 偏移方向
P1-P6 偏移角度
可能的陀螺控制量
抽象关系是:
text
总力 = 所有发力点产生的力之和
总力矩 = 每个发力点位置 × 该发力点产生的力
也就是:
text
ΣF_i → 控制平移
Σ(r_i × F_i) → 控制姿态
系统不需要手写死每个发动机怎么动,而是可以设计一个"发力点分配器":
text
输入:
期望总力
期望力矩
发力点健康状态
推力上下限
偏移角限制
变化速率限制
输出:
7个发力点的控制指令
这个分配器是整个系统的"力学调音台"。
8. 学习层:不要直接"学着飞",而是先学模型
学习层建议分成三类。
第一类:参数学习
学习这些参数:
text
实际质量
质心偏移
每个发力点的推力响应延迟
每个发力点的最大有效推力
偏移角与实际水平力的关系
风扰动影响
陀螺仪漂移
结构振动特征
这类学习比较安全,因为它是在修正模型。
第二类:方法评价
每次执行方法后,记录:
text
方法名称
执行前状态
目标需求
控制指令
执行后状态
误差
耗能
是否满足需求
是否触发异常
然后更新方法权重:
text
方法M3_到达B:
成功率
平均误差
平均耗能
风险评分
适用条件
这样,系统会慢慢知道:什么情况下哪种方法更可靠。
第三类:异常学习
记录异常模式:
text
某个发力点响应变慢
某个陀螺仪漂移
姿态振荡
下降阶段速度控制不足
偏航控制不足
能源下降过快
然后生成新的需求或方法:
text
新增需求:
偏航裕度不足时禁止进入B点任务
新增方法:
发力点P3弱化时的降级控制方法
这才是比较稳妥的"学习"。不要一开始就让学习系统直接控制真实喷气单元,那等于让一只刚会写字的章鱼开火箭,戏剧性过强。
9. A→B→C 的完整系统流程
可以这样运行:
text
步骤1:建立世界场景
添加A点、B点、C点
添加垂直移动单元
添加7个发力点
添加陀螺仪
添加地表、空域、障碍物
步骤2:建立总目标
G = 从A到B再到C
步骤3:目标分解为需求
D_A待命
D_起飞
D_到达B
D_B稳定
D_到达C上方
D_下降
D_C着陆
D_全程安全
步骤4:需求生成任务链
T1 自检
T2 起飞
T3 爬升
T4 转移到B
T5 B点稳定
T6 转移到C
T7 下降
T8 着陆
步骤5:方法匹配
从方法链中选择满足当前需求的方法
如果严格满足,执行
如果只相似满足,进入评估或保守执行
如果无方法满足,进入规划/学习/人工确认
步骤6:控制执行
轨迹规划器输出期望位置、速度、姿态
控制器输出期望总力、力矩
发力点分配器生成7个发力点指令
步骤7:状态回写
传感器更新位置、速度、姿态、发动机状态
写回世界场景和特征值链
步骤8:需求判定
判断是否满足B点需求
判断是否满足C点着陆需求
判断是否违反安全需求
步骤9:学习更新
记录方法效果
更新推力模型
更新风险评分
修正下一次任务方法选择
这就是完整闭环。
10. 需要额外补的模块
从你现在上传的文件看,已有:
text
数据仓库
场景
需求环境
方法环境
链表模板
通用函数
但要实现这个飞行系统,还建议补几个模块:
text
目标模块
任务规划模块
状态估计模块
发力点控制模块
发力点分配模块
安全监督模块
学习评价模块
仿真环境模块
故障诊断模块
特别是这几个最关键:
目标模块
负责把:
text
从A到B再到C
转成:
text
一组可排序、可验证、可失败回退的需求
状态估计模块
融合:
text
陀螺仪
加速度计
高度计
定位系统
视觉/雷达/其他测距
发力点反馈
输出可靠状态:
text
位置
速度
姿态
角速度
质心估计
故障状态
发力点分配模块
负责把期望总力/力矩拆给 7 个发力点。
这是核心模块之一。
安全监督模块
独立于学习系统和主控制器,拥有最高权限:
text
姿态失控 → 应急
高度不足 → 禁止横移
发动机异常 → 降级控制
能源不足 → 最近安全点着陆
偏航不可控 → 禁止执行B/C路径
学习评价模块
不直接冒险控制,而是:
text
记录
比较
评估
修正参数
提升方法选择
11. 关键物理约束必须进入需求层
这个方案能不能真实实现,要先通过这些门槛:
text
总最大推力 > 机体重量,并且有足够余量
六个周围发力点能产生足够姿态控制力矩
存在可靠偏航控制
质心不能偏离太大
发力点响应速度足够快
陀螺仪/IMU精度足够
结构能承受振动和热负荷
能源足够支撑A→B→C
下降阶段有足够控制余量
任一关键部件故障时有安全策略
另外,如果你说的"空间B点"是普通三维空间中的空中点,方案可以按飞行器控制思路设计。
但如果"空间B点"指的是外太空,那普通喷气式发动机不适用,因为它依赖大气中的氧气。那就不是"喷气式发动机垂直移动单元"的问题,而要改成火箭推进、携带氧化剂、热防护、轨道/再入控制等另一套系统。
12. 可以形成的系统定义
可以把整个系统命名为:
text
垂直移动单元目标-需求-方法-学习系统
它的核心结构是:
text
垂直移动单元系统
├── 世界场景层
│ ├── A点
│ ├── B点
│ ├── C点
│ ├── 机体
│ ├── 发力点P0-P6
│ └── 陀螺仪G1-Gn
│
├── 目标层
│ └── A → B → C
│
├── 需求层
│ ├── 起飞需求
│ ├── 到达B需求
│ ├── 到达C需求
│ ├── 着陆需求
│ └── 安全需求
│
├── 方法层
│ ├── 自检方法
│ ├── 起飞方法
│ ├── 爬升方法
│ ├── 空间转移方法
│ ├── 悬停方法
│ ├── 下降方法
│ ├── 着陆方法
│ └── 应急方法
│
├── 控制层
│ ├── 轨迹规划器
│ ├── 姿态控制器
│ ├── 速度/位置控制器
│ └── 发力点分配器
│
├── 安全层
│ ├── 故障检测
│ ├── 越界保护
│ ├── 推力限制
│ ├── 姿态失控保护
│ └── 应急降落
│
└── 学习层
├── 飞行记录
├── 误差分析
├── 推力模型修正
├── 方法评分
└── 异常模式学习
13. 最终判断
可以设计。
但推荐把它定位成:
一套基于场景、需求、方法匹配和学习评价的垂直移动任务控制系统。
而不是简单说:
"7 个喷气式发动机 + 陀螺仪 = 自动从 A 飞到 B 再落到 C。"
真正的关键在这几个地方:
text
1. 把A、B、C和机体状态纳入场景
2. 把目标拆成可判定需求
3. 用方法模板匹配当前需求
4. 用控制器生成期望力和力矩
5. 用发力点分配器控制7个发力点
6. 用安全层压住所有危险状态
7. 用学习层修正模型,而不是盲目试飞
你这个结构和"目标、需求、方法、学习"的思路是吻合的。下一步最值得做的不是直接写发动机控制,而是先做一个仿真版世界场景:让虚拟垂直移动单元在 A→B→C 任务里跑通目标分解、需求判定、方法选择、控制分配和学习记录。仿真里闭环稳定后,再谈真实硬件。