Architecture v2 — Index
> 基准:本目录的所有内容均对齐 dev_doc/Refactoring/PCR_Master_Blueprint.md v1.0。 > 职责分工:Blueprint 定义 WHAT / WHERE(架构决策、目录映射、迁移计划);本目录描述 HOW(每个组件的内部实现、API 形态、跨组件 pattern)。 > 过去:dev_doc/Architecture/ 是上一代文档,已与 v1.0 严重偏离,将在 v2 全部完工后整体删除。Git 历史是唯一备份。
1. 目录树(镜像 v1.0 的 13 库依赖图,自下而上)
Architecture_v2/
├── 00_Index.md ← 本文件
│
├── 01_Foundation/ # types/ frames/ monad/ contracts/
│ ├── Monad_Toolkit.md ◇→■
│ ├── Time_and_Clock.md ◇→■
│ ├── Coordinate_Frames.md ■
│ └── Contracts_PerBodyFrames.md ■
│
├── 02_Physical_World/ # environment/ + plant/
│ ├── Environment_Fields.md ■
│ ├── Plant_Model_Assets.md ■
│ ├── Plant_Physics_Constitutive.md ■
│ └── Plant_Hardware_Mech.md ■
│
├── 03_Avionics_and_Bus/ # avionics/ + bus/
│ ├── Device_Dual_Face.md ■
│ ├── Sensor_Modeling.md ■
│ ├── Hardware_Physics_Boundary.md ■
│ └── Semantic_Bus_Pattern.md ■
│
├── 04_FCC/ # fcc/
│ ├── Three_Layer_Architecture.md ✓
│ ├── Free_Monad_DSL.md ■
│ ├── Interpreter_and_RWS.md ■
│ ├── FCC_State_Machine.md ■
│ ├── Pipeline_Factory_and_Compilation.md ■
│ ├── Navigation.md ✓
│ ├── Data_Driven_Scheduling.md ✓
│ ├── Hardware_Decoupling.md ✓
│ └── Static_Compilation_FSM.md ✓
│
├── 05_Dynamics_Core/ # dynamics_core/(普适内核)
│ ├── SpatialState_and_Frames.md ✓
│ ├── Universal_ODE_Kernel.md ■
│ ├── Forces_Monoid.md ■
│ └── Topology_Algebra.md ■
│
├── 06_Simulation/ # simulation/(跨域绑定层)
│ ├── Dual_Layer_RWS.md ■
│ ├── RocketBody_Composite.md ■
│ ├── WorldEnv_Assembly.md ■
│ └── Body_World_Tick.md ■
│
├── 07_Runtime/ # runtime/
│ ├── Assembler_and_Runner.md ■
│ ├── IDynChannel_SIL_HIL.md ■
│ ├── PlantScope.md ■
│ └── PCR_Configuration.md ✓
│
├── 08_Cross_Cutting/ # 跨子域 pattern
│ ├── Symmetric_RWS_Philosophy.md ■
│ ├── Config_and_Interpolation.md ◇→■
│ ├── Algorithm_Integration_Guide.md ■
│ ├── Testing_Framework.md ✓
│ └── Implementation_Roadmap.md ■
│
└── 09_Vision/
└── Attitude_Stabilization_Frequency.md ✓图例:
✓= 已对齐 v1.0(从旧目录直接搬运,内容无需改动)■= 新建或重写并已对齐 v1.0(v2 阶段从零写成 / 重写至闭环)◇→■= 经过 PATCH 后已对齐 v1.0◇= 已搬运,待 PATCH(路径/术语对齐)★= 待新建
2. v1.0 词汇基准表
阅读本目录前,请确认你使用的是 v1.0 术语,而不是旧 4 层架构的术语。
2.1 顶层命名变更
| v0 / 旧 4 层模型 | v1.0 命名 | 所属库 |
|---|---|---|
Util/, src/util/ | types/, monad/, frames/ | foundation |
src/rocket/(整个域) | 拆分为 avionics/ + plant/ | — |
src/rocket/device/ | avionics/devices/(电子)+ plant/hardware/(机械) | — |
src/dynamics/(含 pipeline) | dynamics_core/(仅 universal kernel) | dynamics_core |
src/dynamics/pipeline/Thrust.h | src/plant/physics/Thrust.h | plant |
src/dynamics/state/RocketBody.h | src/simulation/state/RocketBody.h | simulation |
src/runtime/WorldEnv.h | src/simulation/env/WorldEnv.h | simulation |
src/rocket/interface/ | src/contracts/ | contracts |
2.2 类型与对象命名变更
| v0 名称 | v1.0 名称 | 备注 |
|---|---|---|
DynEnv | BodyEnv(per-body)+ WorldEnv(global) | 双层 RWS 分别的 Reader |
DynLog | BodyLog + WorldLog | 双层 Writer 分别的 Log |
WorldState(在 dynamics 下) | sim::WorldState | 现属 simulation |
RocketBody(只装物理状态) | sim::RocketBody(复合体) | 含 spatial + devices + bus + fcc |
AvionicsState(单一 POD) | 拆分为 per-device 的 mech + electronic state | 整合进 RocketBody |
SemanticMsg | contracts::BusMessage | header-only POD |
PhysicalEffect | contracts::EngineEffect(具体)+ Forces(累加器) | — |
LifecycleEvent | contracts::DiscreteEvent | 由 DynInFrame.events 传输 |
RocketManager | 不存在 | 设备编排在 sim::body_tick 内 |
BusManager | bus::IBus(多协议接口) | 返回 BusM<A> = Writer<BusLog, A> |
BusMonitor | 折叠进 BusLog(Writer monad) | — |
2.3 坐标系命名变更
| 旧术语 | v1.0 术语 | 备注 |
|---|---|---|
pos_eci, vel_eci | pos_ecf, vel_ecf | ECF = Earth-Centered Equatorial(WGS84) |
ECEF 作为真值 | ECF 作为真值 | ECEF 标记为 legacy |
裸 Vec3 | Vec3_T<frame::X> | 全部需要 phantom-type 包装 |
att_eci | Quat_T<frame::LIC, frame::BODY> | 强类型四元数 |
Frame 枚举完整清单:ECF(truth)/ LIC(local inertial Cartesian, 积分用)/ BODY(体坐标)/ AERO(气动)/ NUE(FCC 内部导航)/ LLA(FCC 内部测地)。
2.4 配置与文件路径变更
| 旧路径 | v1.0 路径 | 备注 |
|---|---|---|
data/input/dynamics/env.yaml | data/input/world/atmosphere.yaml 等 | 环境场(普适) |
data/input/dynamics/engine.yaml | data/input/rocket_vN/engines.yaml | 对象资产(per-rocket) |
data/input/dynamics/aero.yaml | data/input/rocket_vN/aero/ | 同上 |
单一 stage_configs.yaml | rocket_vN/ + fcc_vN/ + sim/deployments/*.yaml | PCR 三分 |
详见 07_Runtime/PCR_Configuration.md 与 Blueprint §2.8。
3. 与 Blueprint 的双向链接
本目录的核心架构决策都在 Blueprint v1.0 中有定义。以下是反向索引:
| 本目录文档 | Blueprint 章节 |
|---|---|
01_Foundation/Monad_Toolkit.md | §2.5, §3.1, §7.12 |
01_Foundation/Time_and_Clock.md | §0, §2.6.4, §2.7 |
01_Foundation/Contracts_PerBodyFrames.md | §2.2 |
02_Physical_World/Environment_Fields.md | §2.3, §7.15 |
02_Physical_World/Plant_Model_Assets.md | §2.4 |
02_Physical_World/Plant_Physics_Constitutive.md | §2.4, §4.1 |
02_Physical_World/Plant_Hardware_Mech.md | §2.4, §7.5 |
03_Avionics_and_Bus/Device_Dual_Face.md | §2.6.1, §7.5 |
03_Avionics_and_Bus/Semantic_Bus_Pattern.md | §2.10, §7.1 |
04_FCC/Three_Layer_Architecture.md | §3, §3.1 |
04_FCC/FCC_State_Machine.md | §3.4, §3.5, §7.3 |
04_FCC/Pipeline_Factory_and_Compilation.md | §2.6.4, §3.1, §3.3, §7.3 |
05_Dynamics_Core/Universal_ODE_Kernel.md | §2.5, §7.16, §4.1 |
05_Dynamics_Core/Forces_Monoid.md | §2.5, §4.1 |
05_Dynamics_Core/Topology_Algebra.md | §2.9, §7.3, §2.6.4 |
06_Simulation/Dual_Layer_RWS.md | §2.6, §2.6.4, §1.2 |
06_Simulation/RocketBody_Composite.md | §2.6.1, §7.5, §7.16 |
06_Simulation/WorldEnv_Assembly.md | §2.6.2, §2.6.3, §4.3 |
06_Simulation/Body_World_Tick.md | §1.2, §2.6.4, §2.9 |
07_Runtime/Assembler_and_Runner.md | §2.7, §7.18 |
07_Runtime/IDynChannel_SIL_HIL.md | §1.3, §2.10 |
07_Runtime/PlantScope.md | §2.8 |
08_Cross_Cutting/Symmetric_RWS_Philosophy.md | §2.6, §2.6.4, §3.1, §7.1 |
08_Cross_Cutting/Algorithm_Integration_Guide.md | §3.1, §3.4, §7.12 |
08_Cross_Cutting/Implementation_Roadmap.md | §6 |
设计裁定全表见 Blueprint §7。讨论推理过程见 dev_doc/Refactoring/PCR_Discussion_Log.md。
4. 推荐阅读路径
4.1 新人入门(不熟悉本项目)
09_Vision/Attitude_Stabilization_Frequency.md— 项目愿景与 Code-First MBSE 哲学- Blueprint §1(设计哲学)+ §2.1(13 库依赖图)
08_Cross_Cutting/Symmetric_RWS_Philosophy.md— 全局对称性01_Foundation/Coordinate_Frames.md— 坐标系06_Simulation/Dual_Layer_RWS.md— 主循环骨架08_Cross_Cutting/Testing_Framework.md— 怎么跑测试
4.2 算法工程师(想加新 GNC 算法)
01_Foundation/Contracts_PerBodyFrames.md— 输入输出契约04_FCC/Three_Layer_Architecture.md— FCC 三层04_FCC/Free_Monad_DSL.md— 怎么写 DSL + 四段式 strategy04_FCC/Pipeline_Factory_and_Compilation.md— 工厂 / firmware / Assembler / FccTick 职责分离04_FCC/FCC_State_Machine.md— GNC Mealy + FccStage 代数04_FCC/Navigation.md— 现有 SINS 实现参考08_Cross_Cutting/Algorithm_Integration_Guide.md— 集成步骤
4.3 物理工程师(想加新力源 / 新本构)
01_Foundation/Coordinate_Frames.md+01_Foundation/Contracts_PerBodyFrames.md02_Physical_World/Plant_Model_Assets.md— 资产规格02_Physical_World/Plant_Physics_Constitutive.md— 本构计算05_Dynamics_Core/Forces_Monoid.md— 力如何累加06_Simulation/Body_World_Tick.md— 流水线如何调用
4.4 硬件 / 嵌入式工程师(想加新设备)
03_Avionics_and_Bus/Device_Dual_Face.md— 双面实体模型02_Physical_World/Plant_Hardware_Mech.md— 机械面03_Avionics_and_Bus/Semantic_Bus_Pattern.md— 总线03_Avionics_and_Bus/Sensor_Modeling.md— 传感器06_Simulation/RocketBody_Composite.md— 如何挂载
4.5 系统集成 / 部署工程师
07_Runtime/PCR_Configuration.md— 配置三分07_Runtime/PlantScope.md— 部署切片07_Runtime/Assembler_and_Runner.md— 启动流程07_Runtime/IDynChannel_SIL_HIL.md— SIL / HIL 切换08_Cross_Cutting/Implementation_Roadmap.md— 当前进度
5. 文档维护约定
- 路径写法:所有源码路径都用
src/<lib>/<path>形式(如src/simulation/state/RocketBody.h)。不写<lib>/<path>,因为这会和 Blueprint 的库名混淆。 - 代码示例:用 C++20 标准,namespace 全限定(
sim::,plant::,avionics::等)。 - 不复制 Blueprint 的内容,只引用(用
→ Blueprint §X.X)。如果发现某条信息在 Blueprint 和这里都写了,以 Blueprint 为准。 - 裁定追溯:架构决策的"为什么"放在 Blueprint §7 或
PCR_Discussion_Log.md,本目录不重复论证。 - 图例统一:依赖图用
→表示依赖方向(A → B 表示 A 依赖 B),双向数据流用⇄,状态机箭头用实线。