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, 人工智能安全, 任务规划, 光学激光通信, 几何计算, 加密认证, 卫星编排, 卫星跟踪, 卫星通信, 可视化界面, 合规性, 地面站系统, 多普勒校正, 安全加密, 异常检测, 故障恢复, 数字孪生, 时空路由, 硬件管理, 终端抽象, 联邦协作, 自托管, 调度器, 资源分配, 通信协调, 通知系统, 链路状态机, 链路管理