theoddden/GroundCore

GitHub: theoddden/GroundCore

GroundCore 是一个用 Rust 编写的开源卫星地面站编排平台,解决 RF 和光通信的统一管理与高可靠性挑战。

Stars: 1 | Forks: 0

# GroundCore GroundCore 是开源卫星上行链路及编排平台的替代方案。它基于 Apache 2.0 许可证,支持自托管,且是唯一能在单一统一 Rust 二进制文件中编排射频(RF)和激光光通信的开源系统。 ## 架构 GroundCore 由两个互补的通信层组成: ### 射频通信层 - **射频处理**:零内存分配,实现微秒级延迟 - **多普勒校正**:采用预测性数控振荡器(NCO)编程与相位连续更新 - **阴影跟踪软件定义无线电(SDR)**:实现无损故障转移(<100ms 切换) - **解调器状态快照**:支持跨故障恢复 ### 光通信层 - **PAT(指向、捕获、跟踪)**:具备精密时钟同步功能 - **几何计算**:用于指向向量、可见窗口、多普勒频移和大气衰减 - **链路状态机**:管理链路阶段、质量、退化、恢复和故障 - **终端抽象**:通过特性(traits)实现供应商互操作性(Mynaric、Tesat) - **密码学证明**:为链路及 PAT 事件提供双时态时间戳 - **时空路由**:基于时变拓扑图 - **任务规划**:将声明式意图编译为命令式任务计划 ### 非实时管理层 - **卫星跟踪**:结合 SGP4 轨道传播与无迹卡尔曼滤波(UKF)优化 - **硬件管理**:通过隔离的过境分片实现故障 containment - **调度器**:采用支配资源公平(DRF)机制及基于声誉的加权公平 - **法规合规性**:通过类型系统在编译时强制执行 - **联邦层**:采用密码学证明实现跨站协调 - **资源分配**:支持多租户隔离与抢占 ### 数字孪生层 - **偏移检测**:利用累积和(CUSUM)变点检测识别状态转移 - **基于区间的异常检测**:采用集合成员测试(可证明而非概率性) - **双时态日志记录**:记录事件时间与接收时间以供取证重放 - **快照管理**:支持反事实查询与事故调查 - **运行时通道**:用于观测指标、异常信号与预测 - **与 Bevy ECS 集成**:用于仿真与状态管理 ### 人机交互层 - **嵌入式 Claude 代码智能体**:用于异常检测与决策解释 - **REST/gRPC API**:用于外部集成 - **Web UI**(Leptos):用于操作员交互 ## 九个问题与解决方案 ### 问题 1:无损故障转移 **解决方案:** 采用阴影跟踪 SDR 及故障时的指针交换。解调器状态快照支持即时恢复,无样本丢失。 ### 问题 2:无样本丢失的多普勒校正 **解决方案:** 基于 SGP4 轨道传播和 UKF 优化的预测性 NCO 编程。相位连续的频率更新避免调谐伪影。 ### 问题 3:对抗性租户下的公平调度 **解决方案:** 基于支配资源而非单一共享资源的支配资源公平(DRF)机制。声誉加权优先考虑充分利用分配资源的租户。 ### 问题 4:对抗性对等方间的联邦 **解决方案:** 通过密码学证明进行周期性挑战传递。基于交叉验证历史计算信任分数。双时态日志提供可证明的验证。 ### 问题 5:频谱合规即类型 **解决方案:** 将监管规则编译为 Rust 类型。发送函数要求特定频段类型的许可证。违规在编译时而非运行时捕获。 ### 问题 6:代码部署期间持续运行 **解决方案:** 过程隔离的过境监管。每个过境在独立子进程中运行。部署替换父进程;过境在旧代码下运行直至完成。 ### 问题 7:跨卫星的同步 PAT 捕获 **解决方案:** 采用 GPS 驱动振荡器的精密时钟同步(约 50ns 精度)。双时态日志证明时间戳已正确协商。时钟置信度跟踪在时钟退化时阻止捕获。 ### 问题 8:时变拓扑上的时空路由 **解决方案:** 支持可配置分辨率的时间索引图预测。修改版 Dijkstra 算法支持空间与时间维度的路由。基于 5 分钟时间桶的路由缓存提升性能。 ### 问题 9:光终端供应商互操作性 **解决方案:** 基于 SDA OCT 标准的特性抽象。Mynaric CONDOR Mk3 和 Tesat SCOT80 实现共享相同的 OpticalTerminal 特性,同时处理供应商特定的控制协议。 ## 四个架构原语 ### 分片(基础) - **过境分片:** 每个过境使用 `bumpalo` 获得隔离内存区域,实现零堆分配 - **应急分片:** 为故障转移预分配的内存区域 - **租户分片:** 通过受保护内存区域对租户数据进行密码学隔离 - 多租户隔离在内核级别强制执行,而非软访问控制 - 零停机部署很简单:新代码启动新分片,旧分片在旧代码下完成 - 故障转移被限制:单个过境的故障不会级联,因为无共享可变状态 ### 缓存 - **轨道传播:** 在缓存位置间插值(无需重新运行 SGP4 即可实现亚米精度) - **TLE 刷新:** 原子批量刷新以实现一致的星座状态 - **调度片段:** <500ms 的增量重优化,而非完全退火 ### 批处理 - **TLE 刷新:** 原子星座状态更新 - **解调器输出:** 批量符号以高效传输浮点协议数据 - **日志条目:** 批量处理以提升存储效率 ### 快照 - **调度快照:** 用于增量重优化 - **解调器状态:** 用于故障转移恢复 - **联邦交换:** 用于跨站验证 ## 项目结构 ``` ground-station-core/ ├── Cargo.toml # Workspace configuration ├── core/ # Central types and error handling ├── optical/ # Optical communications layer │ ├── pat/ # Pointing, Acquisition, Tracking │ ├── geometry/ # Geometry computations │ ├── link/ # Link lifecycle management │ ├── terminal/ # Terminal abstraction │ ├── attestation/ # Cryptographic attestation │ └── routing/ # Optical routing ├── oisl/ # Optical Inter-Satellite Link control plane │ ├── mission/ # Mission planning and compilation │ ├── topology/ # Spatiotemporal topology forecasting │ ├── resource/ # Distributed resource management │ ├── physical/ # Vendor abstraction (SDA OCT) │ ├── pat/ # Synchronized PAT coordination │ └── federation/ # Cross-operator OISL coordination ├── rf-layer/ # Real-time RF processing ├── tracking/ # Satellite tracking (SGP4 + UKF) ├── hardware/ # Hardware management with sharding ├── scheduler/ # DRF scheduler with reputation weighting ├── bitemporal/ # Bi-temporal logging with provenance ├── digital-twin/ # Digital twin simulation and divergence detection ├── sdr-sim/ # Simulated SDR for testing ├── policy-compiler/ # Spectrum policy → Rust types ├── regulatory/ # Compile-time regulatory enforcement ├── federation/ # Cryptographic attestation for federation ├── agent/ # Embedded Claude Code agent ├── deployment/ # Zero-downtime process supervision ├── caching/ # Caching infrastructure ├── batching/ # Batching infrastructure └── snapshotting/ # Snapshotting infrastructure ``` ## 构建 ``` cargo build --release ``` ## 测试 ``` cargo test ``` 使用模拟 SDR 后端运行测试: ``` cargo test --features sdr-sim ``` ## 运行 ``` cargo run --bin ground-core ``` ## 依赖项 关键依赖项: - `tokio` - 异步运行时 - `serde` / `serde_json` - 序列化 - `chrono` - 支持双时态的时间处理 - `thiserror` - 错误处理 - `tracing` - 结构化日志 - `sgp4` - 轨道传播 - `nalgebra` - 用于几何计算的线性代数库 - `rustfft` - 用于信号处理的快速傅里叶变换库 - `bumpalo` - 零堆分配内存分配器 - `ed25519-dalek` - 密码学签名 - `sha2` - 哈希 - `uuid` - 用于标识符的 UUID 生成 - `async-trait` - 异步特性支持 - `futures` - 异步流工具 - `tokio-stream` - Tokio 流适配器 - `reqwest` - 用于供应商 API 的 HTTP 客户端 - `bitemporal` - 双时态数据结构 ## 许可证 Apache 2.0
标签:PAT, RF通信, Rust编程语言, SDR, SGP4, 人工智能安全, 任务规划, 光学激光通信, 几何计算, 加密认证, 卫星编排, 卫星跟踪, 卫星通信, 可视化界面, 合规性, 地面站系统, 多普勒校正, 安全加密, 异常检测, 故障恢复, 数字孪生, 时空路由, 硬件管理, 终端抽象, 联邦协作, 自托管, 调度器, 资源分配, 通信协调, 通知系统, 链路状态机, 链路管理