关于 Sidereon
Sidereon 是面向开发者和科研用户的 Rust GNSS 定位与天体动力学引擎,并提供六种语言接口。它涵盖卫星轨道传播、定位、观测质量检查和多种地理空间格式;CLI 还可通过 MCP 向 AI Agent 提供引擎能力。
主要功能
- 01卫星轨道传播与过境预测
- 02GNSS 定位、完整性检查与融合
- 03RINEX 质量控制与格式处理
- 04大地测量、计时与大气模型
- 05CLI 监控与分析命令
适用场景
- 01计算卫星可见性与地面轨迹
- 02根据 RINEX 数据求解 GNSS 位置
- 03评估观测质量与解算误差界限
- 04向 AI Agent 提供天体动力学工具
MCP 相关
CLI 提供 `serve-mcp`,通过任务工具和类型化能力图向 AI Agent 暴露引擎。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
sidereon
使用 Rust 实现的 GNSS 定位与天体动力学,并提供一流的 Python、C、Go、WebAssembly 和 Elixir 接口。通过参考验证,并在关键之处与公开基准保持位级精确一致。
sidereon 是一套引擎:以 Rust 核心实现卫星轨道传播、GNSS 定位、时间与坐标系转换、大气模型和标准交换格式,并通过六种语言的惯用接口提供功能,让你无论在哪里工作,都能使用经过验证的同一套数学实现。
在线演示:sidereon.dev:实时卫星追踪器(地球仪、地面轨迹、覆盖范围、交会筛查、轨道确定),通过 WebAssembly 构建在浏览器中计算。
功能
- **轨道传播:**基于 TLE/OMM 的 SGP4/SDP4、采用可组合力模型的数值传播(球谐地球重力场,阶次和次数可选;依据 IERS 规范计算的固体潮和极潮;太阳/月球第三体引力;带圆锥阴影的太阳辐射压;地球反照辐射和红外辐射压;相对论修正;NRLMSISE-00 阻力)、带衰减后有效性锁存的衰减/再入预测、开普勒传播和轨道异常转换、批量/星座传播、地面轨迹、过境、可见性和覆盖范围。
- **轨道确定:**初始轨道确定(Gibbs、Herrick-Gibbs、仅测角度的 Gauss 方法)、将数值传播器拟合到精密星历的批量最小二乘拟合(带逐卫星 RTN 残差台账),以及协方差传播。
- **GNSS 定位:**单点定位(SPP)、RINEX 观测数据到 SPP 的组装和求解辅助工具、支持协方差的公开多历元
static_positioning/solve_static求解、留一冗余诊断和稳健加权(包括一次调用即可完成的参考站静态定位:输入流动站和参考站 RINEX,输出带协方差的测站坐标)、带时钟漂移的多普勒测速、RTK 浮点和固定解(LAMBDA),基线直接由原始 RINEX 构建(与已发布的 ITRF 测站对比结果精确到毫米)、使用 SSR 或 Galileo HAS 修正驱动广播星历求解的 PPP 浮点和固定解、采用时间相关协方差的静态 PPP(经过标定的日长边界)、可选高度角截止值和可选对流层梯度估计、DGNSS;支持 GPS/GLONASS/Galileo/BeiDou/QZSS,并提供 DOP(G/P/H/V/T)。 - **完好性和误差界限:**RAIM 故障检测与排除、多星座 ARAIM(MHSS 保护级别)、SBAS 保护级别(DO-229)、经典可靠性(每次观测的最小可检测偏差、内部/外部可靠性)、每次求解的可观测性分类(秩、冗余度、条件数),以及协方差推导的误差指标(CEP、R95、drms、SEP、误差椭圆)。几何条件较弱时会报告宽泛或带标记的界限,而不是捏造置信度;还支持考虑不确定性的测地围栏(根据位置协方差计算包含和穿越概率,并带滞回)。
- **GNSS 修正:**SBAS 消息解码和修正应用、带明确提供方参考点处理的 RTCM SSR 和 Galileo HAS 轨道/时钟/偏差修正存储、NTRIP 客户端流处理,以及来自 Bias-SINEX 和 CODE 产品的差分码偏差(DCB/OSB)。
- **星历和时间:**广播星历和精密星历(SP3)、依据产品插值器推导的模板范围给出的窗口范围连续性判定、GPS(1019)、GLONASS(1020)、Galileo(1045/1046)、BeiDou(1042)和 QZSS(1044)的 RTCM 3 广播星历解码(均已通过真实数据验证)、JPL SPK 内核、跨三类数据源的卫星状态采样、多卫星批量插值、可感知时间尺度的时间处理(UTC/TAI/TT/UT1/TDB/TCG/TCB 和 GNSS 系统时间),支持闰秒处理和调用方可更新的闰秒表与 UT1 表,以及地球定向参数(EOP)。
- **计时和时钟:**Allan 系列稳定性分析(ADEV/MDEV/HDEV/TDEV)、采用五系数拟合的幂律时钟噪声识别(IEEE 1139),以及跨产品的时钟比较。
- **估计和检测:**用于位置解的协方差加权轨迹滤波器(无需 IMU:几何条件较弱且协方差较宽的位置解不会使轨迹产生尖峰),带固定区间 RTS 平滑器,以及标量 Kalman 和 alpha-beta 跟踪器、创新门限检测(NIS)、MAD 统计、CFAR 检测阈值,以及根据已知传感器的到达时间进行源定位(ToA/TDOA)。
- **大地测量和监测:**椭球上的测地正算和反算(Karney)、带历元感知功能的地球参考框架目录(包含已发布的 ITRF 和 ETRF Helmert 参数集)、测站位移修正(根据调用方提供的 BLQ 系数计算固体潮、极潮和海潮负荷)、测站速度(MIDAS)、含季节项和偏移量的轨迹拟合、阶跃检测、带共模去除的网络运动场,以及采用覆盖感知模板的重复几何(恒星日)滤波。
- **GNSS/INS 融合:**面向真实接收机的现场模式(零速度和零角速度更新、车辆非完整约束、按定位解状态加权、IMU 到机体的安装 DCM、跨失锁时段速度匹配),以及带严格姿态积分的 ECEF 捷联惯导、采用 Joseph 形式更新的误差状态 EKF(可选 UKF)、松耦合和紧耦合(逐卫星伪距和距离率测量,单颗卫星即可有效工作)、IGG-III 松耦合更新(根据已发布方案在异常值保护下进行测量重加权和自适应预测缩放)、对记录历史进行 RTS 固定区间平滑、带检查点的延迟测量重放时间同步、可序列化滤波器状态,以及确定性 IMU 误差模拟器。由模拟器支持的测试确保现场行为符合要求:在异常值预算内,融合结果优于单独 GNSS;失锁期间的漂移不超过 IMU 级别界限;少于 4 颗卫星的时间窗口内协方差保持一致。
- **几何和事件:**TEME/GCRS/ITRS/大地坐标/地形坐标变换(IAU/IERS)、精密地球定向旋转提供器、观测角、日蚀、RIC/RTN/LVLH 坐标系下的相对运动及 Clohessy-Wiltshire 传播、带碰撞概率(TCA/Pc)的交会筛查,以及经典和等角根数转换。
- **观测和年历:**太阳、月球和行星的视位置(地心和地形 RA/Dec 与 az/el)、日出日落和月出月落、月球照明度、季节、月相、行星凌日、月食和日食、日下点/观测者下点与晨昏线几何、角距和位置角/相位角/β 角,以及卫星视星等。
- **观测质量:**RINEX 观测数据质量控制(完整性、多路径、周跳),已根据标准工具链验证,并提供明确的间隔元数据处理、载波相位组合和 Hatch 平滑。
- **仿真:**确定性场景模拟器可将该库转化为验证工具:带版本的场景及逐项误差预算会生成逐位可复现的合成观测值,以及将求解器误差归因到各预算项的真实值台账。
- **大气和地形:**Klobuchar 和完整的 Galileo NeQuick-G 电离层模型、IONEX 网格(垂直 TEC 和斜向延迟)、对流层延迟、NRLMSISE-00 密度、支持批量探测的 DTED 地形高程查询、可内存映射的地形存储、EGM96/EGM2008 大地水准面网格,以及兼容 PROJ 9.3 的 EGM96 GTX 加载器,支持明确选择融合或分别舍入的弧度插值。
- **射频链路和信号分析:**自由空间路径损耗、EIRP、载波噪声比(C/N0)、链路余量,以及闭式导航信号品质指标(BPSK/BOC 频谱、频谱分离系数、DLL 热噪声抖动、多路径误差包络),并已根据已发布的常数验证。
- **格式:**TLE/OMM(Alpha-5 目录编号和 CelesTrak GP CSV/JSON)、CCSDS OEM/OPM/CDM/TDM、RINEX 观测/导航/时钟、CRINEX(Hatanaka 编码/解码)、SP3、IONEX、ANTEX、Bias-SINEX、CODE DCB、RTCM 3.x、NMEA 0183;提供宽容的解析器,以及对支持此功能的格式提供可往返序列化器。
- **公开产品分发:**精确的 GNSS 产品标识与其直接归档、NASA CDDIS/Earthdata、本地文件或内存来源无关。无网络核心可推导官方 SP3/IONEX 名称、来源位置和抗冲突缓存路径;Python 和 Elixir 接口则提供经过身份验证的获取、验证、类型化错误和不含机密信息的来源记录。参见设计说明。
应对分析中心发布延迟:可选择跨行遍历 CODE 预测电离层(先
P1后P2,使用相同地图日期,来源记录注明所用行)、有界的发布状态查询(每个中心和行最新发布的期次、归档报告的发布日期文本及其相对标称时间的延迟;可区分“尚未发布”和“归档无法访问”)、无网络的下一期到期时间查询(包含精确标识以及实测/预测覆盖范围),以及纳入 IGS 组合超快速产品和武汉逐小时 MGEX NRT 产品的扩展超快速产品池。将广播星历作为韧性底线的方案已记录在设计问题中。
安装
cargo add sidereon
use sidereon::astro::passes::{look_angle, GroundStation, UtcInstant};
let line1 = "1 25544U 98067A 24001.50000000 .00016717 00000-0 10270-3 0 9009";
let line2 = "2 25544 51.6400 208.8657 0002644 250.3037 109.7782 15.49560812999990";
let elements = sidereon::astro::tle::parse(line1, line2)?.elements.to_element_set()?;
let station = GroundStation { latitude_deg: 51.5, longitude_deg: -0.1, altitude_m: 10.0 };
let when = UtcInstant::from_utc(2024, 1, 1, 12, 0, 0, 0).ok_or("bad datetime")?;
let look = look_angle(&elements, station, when)?;
println!("az {:.2} el {:.2} range {:.1} km", look.azimuth_deg, look.elevation_deg, look.range_km);
六种语言的更多可运行示例,请参阅在线演示。
命令行
此仓库提供一个二进制文件,无需编写代码即可使用:
sidereon solve --obs rover.obs --nav brdc.nav # SPP per epoch, bounds always shown
sidereon qc --obs rover.obs # teqc-style observation quality report
sidereon inspect FILE [--window FROM THROUGH] # summarize a file and optionally scope SP3 continuity
sidereon metrics --enu-cov "..." # CEP / DRMS / R95 / ellipse from a covariance
sidereon tui --obs rover.obs --nav brdc.nav # replay a session in the terminal monitor
sidereon tui --ntrip host:2101 --mount MP ... # watch a live stream solve in real time
sidereon serve-mcp # expose the engine to AI agents over MCP
Crate
sidereon-core:引擎。SGP4/SDP4 传播、坐标和时间转换、RINEX/SP3/ANTEX/OMM/RTCM 解析、广播星历和精密星历、SPP/RTK/PPP/静态/DGNSS 定位、DOP 和可见性、会合评估,以及配套的数值内核。sidereon:基于sidereon-core的便捷 Rust 接口。产品加载器、CRINEX 编码/解码、太阳/月球天空辅助工具、大地坐标/地心坐标转换及 TLE 观测角/地面轨迹快捷工具、多普勒辅助工具,以及提供结果结构体和统一错误枚举的 SPP/RTK/PPP/静态解算。这是 Rust 接口,其对等覆盖标准与下方的绑定保持一致。sidereon-cli:基于引擎的sidereon命令行工具:solve(根据 RINEX 进行 SPP,始终显示由协方差推导出的边界)、qc、metrics、inspect、终端解算监视器(tui),可重放已记录的 RINEX 会话,或监视实时 NTRIP/TCP RTCM 流;以及serve-mcp,一种模型上下文协议服务,通过任务工具和类型化能力图向 AI Agent 提供引擎能力。使用cargo build -p sidereon-cli从此仓库构建;尚未发布到 crates.io。trust-region-least-squares:独立、可单独发布的非线性最小二乘求解器,可逐位复现 SciPy 的 trust-region-reflectiveleast_squares。它不依赖该引擎。
接口
Rust 接口是上文提到的 sidereon crate。其他语言的接口位于各自的仓库中,均基于同一个核心:
- Python:
sidereon-python(PyPI:sidereon) - C:
sidereon-c - Go:
sidereon-go - Elixir:
sidereon-ex(Hex:sidereon) - JavaScript / WebAssembly:
sidereon-wasm(npm:@neilberkman/sidereon)
所有 Sidereon 库均以相同版本发布。新增 API 和行为变更会经过评审,确保各接口的覆盖范围一致;请参阅协调发布政策。
验证
评估结果是确定性的:相同的产品、相同的版本和相同的平台会产生完全相同的位;如果某个版本会改变现有功能的评估结果位,变更日志会注明这一点。只有测试固定了结果的情况下,跨平台位一致性才成立。
每个数值算法都会与其领域的参考实现或已发布标准进行交叉验证,而不只是与内部基准值比较。每项检查都会在测试套件中针对已提交的参考测试数据运行,并记录其来源(工具、版本、出处);许多检查都要求逐位完全一致。
| 能力 | 交叉验证对象 | 参考来源 |
|---|---|---|
| SGP4 / SDP4 传播 | Vallado / CelesTrak 验证状态 | Vallado、Crawford、Hujsak 和 Kelso,Revisiting Spacetrack Report #3,AIAA 2006-6753 |
| 坐标系、时间、星历(TEME/GCRS/ITRS、IAU 2006/2000A) | 固定版本的 Skyfield 向量(底层使用 ERFA/SOFA 例程) | IAU SOFA / ERFA |
| 地球定向 | IERS 地球定向参数 | Petit 和 Luzum(编),IERS Conventions (2010),IERS TN 36 |
| 最小二乘引擎(TRF) | SciPy least_squares,位级精确 | Virtanen 等,SciPy 1.0,Nature Methods 17 (2020) |
| GNSS 定位(SPP / RTK / PPP) | RTKLIB 标准测试数据流和真实 IGS 精密产品 | RTKLIB;International GNSS Service (IGS) |
| 大地水准面起伏(EGM96 15 角分) | PROJ(us_nga_egm96_15),精度达 5 mm | PROJ |
| RINEX 观测质量控制 — 多路径(MP1/MP2) | 对真实采集数据流运行 teqc +qc,精度达亚微米级 | teqc |
| RTCM MSM 锁定时间到 RINEX LLI 的转换 | 使用 RTKLIB convbin 解码真实 MSM 数据流 | RTKLIB |
| RTCM 3 MSM1..MSM7、传统格式 1001..1004 / 1009..1012、NavIC 1041、GLONASS 1230 和 IGS SSR 4076 解码 | 使用 RTKLIB decode_rtcm3 解码真实多星座数据流及 RTKLIB 编码数据流,逐位完全一致 | RTKLIB |
| RTCM 3 SSR 1057..1270 和 IGS SSR 4076(包括所有子类型及 VTEC)的解码 | 使用 BNC SSR 解码器解码 BNC 编码、RTKLIB 编码和真实 IGS SSR 数据流,逐位完全一致 | BKG NTRIP Client (BNC) |
| RTCM 3 网络 RTK 和转换消息(1014-1017、1021-1027、1030-1032、1034、1035、1037-1039) | pyrtcm 消息布局,逐字段验证 | pyrtcm |
各 crate 的测试套件记录了确切的参考来源、测试数据和容差。 Python oracle 版本固定说明记录了跨版本 FITPACK 和伪逆检查,以及由此确立的测试数据重新生成规则。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。