Sidereon について
Sidereonは、開発者や科学分野向けのRust製GNSS測位・天体力学エンジンで、6言語のインターフェースを備えています。衛星軌道伝播、測位、観測品質検査、各種地理空間フォーマットを扱い、CLIからMCP経由でAIエージェントに機能を公開できます。
主な機能
- 01衛星軌道伝播と通過予測
- 02GNSS測位、完全性検査、融合
- 03RINEX品質管理とフォーマット処理
- 04測地、時刻、大気モデル
- 05CLIによる監視と解析
活用シーン
- 01衛星の可視性と地上軌跡の計算
- 02RINEXデータからのGNSS測位
- 03観測品質と解の誤差範囲の評価
- 04AIエージェントへの天体力学ツール提供
MCP 対応
CLIの`serve-mcp`は、タスクツールと型付き機能グラフを通じてエンジンをAIエージェントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
sidereon
RustによるGNSS測位と軌道力学に加え、Python、C、Go、WebAssembly、Elixir向けの一級インターフェースを提供します。参照実装による検証済みで、重要な箇所では公開オラクルとビット単位で完全に一致します。
sidereonは単一のエンジンです。衛星軌道伝搬、GNSS測位、時刻と座標系の変換、大気モデル、標準交換形式に対応するRustコアを、6つの言語でそれぞれの慣用的なインターフェースとして公開し、検証済みの計算をあらゆる作業環境から利用できます。
ライブデモ: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)(公開 ITRF 局ペアに対してミリメートル単位で検証済みの、raw RINEX から直接構築した基線付き)、放送暦に対する SSR または Galileo HAS 補正を使用する PPP フロートおよび固定解、時間相関共分散を使用する静的 PPP(1 日の長さに応じて較正された境界付き)、任意の仰角カットオフ、任意の対流圏勾配推定、GPS/GLONASS/Galileo/BeiDou/QZSS を対象とする DGNSS、および 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 カーネル、これら 3 種すべてにわたる情報源に依存しない衛星状態サンプリング、複数衛星の一括補間、うるう秒処理と呼び出し元から更新可能なうるう秒・UT1 テーブルを備えた時刻系対応の時刻(UTC/TAI/TT/UT1/TDB/TCG/TCB および GNSS 各システムの時刻)、地球姿勢(EOP)。
- 時刻計測とクロック: Allan 系安定度解析(ADEV/MDEV/HDEV/TDEV)、5 係数フィットによるべき乗則クロックノイズ識別(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 オプション付き)、疎結合・密結合(衛星ごとの擬似距離・距離変化率測定。衛星 1 基から有効)、IGG-III 疎結合更新(公開済み方式に基づく、外れ値ガード下での測定値再重み付けと適応型予測スケーリング)、記録履歴に対する RTS 固定区間平滑化器、チェックポイント付きの遅着測定再生による時刻同期、シリアライズ可能なフィルター状態、決定論的 IMU 誤差シミュレーター。フィールド動作はシミュレーターを用いたテストで固定されています。外れ値の予算内で融合結果が独自 GNSS 測位を上回ること、途絶時にも IMU 品質の境界内で推測航法を継続すること、衛星数が 4 基未満の時間窓でも共分散の整合性が保たれることを検証します。
- 幾何とイベント: TEME/GCRS/ITRS/測地/地形座標系の変換(IAU/IERS)、高精度な地球姿勢回転プロバイダー、視線角、食、Clohessy-Wiltshire 伝播を用いた RIC/RTN/LVLH 座標系での相対運動、衝突確率(TCA/Pc)を伴う接近スクリーニング、古典軌道要素および等角軌道要素への変換。
- 観測と暦表: 太陽、月、惑星の見かけの位置(地心・地形中心の RA/Dec および az/el)、太陽と月の出没、月の照度、季節、月相、惑星の太陽面通過、月食・日食、太陽直下点・観測者直下点とターミネーターの幾何、角距離、位置角・位相角・β角、衛星の視等級。
- 観測品質: 標準ツールチェーンとの照合で検証済みの RINEX 観測 QC(完全性、マルチパス、サイクルスリップ)。区間メタデータの明示的処理、搬送波位相の組み合わせ、Hatch 平滑化も含みます。
- シミュレーション: ライブラリを検証手段に変える決定論的シナリオシミュレーター。項目ごとの誤差予算を持つバージョン管理されたシナリオから、ビット単位で再現可能な合成観測値と、予算項目ごとにソルバー誤差の要因を示すグラウンドトゥルース台帳を生成します。
- 大気と地形: Klobuchar および完全版 Galileo NeQuick-G 電離圏モデル、IONEX グリッド(鉛直 TEC と斜距離遅延)、対流圏遅延、NRLMSISE-00 密度、DTED 地形標高検索と一括プローブ、メモリーマップ可能な地形ストア、EGM96/EGM2008 ジオイドグリッド、明示的に融合または個別に丸めてラジアン補間する PROJ 9.3 互換の EGM96 GTX ローダー。
- RF リンクと信号解析: 自由空間伝搬損失、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 統合超速報および Wuhan の毎時 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);
6 つすべての言語で実行できる例をさらに見るには、ライブデモをご覧ください。
コマンドライン
このリポジトリには、コードを書かずに操作できる単一のバイナリが含まれています。
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
クレート
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、ログに記録された RINEX セッションを再生するか、ライブの NTRIP/TCP RTCM ストリームを監視するターミナル測位モニター(tui)、およびタスクツールと型付き機能グラフを通じて AI エージェントにエンジンを公開する Model Context Protocol サーバーserve-mcpを備えています。このリポジトリからcargo build -p sidereon-cliでビルドできます。crates.io ではまだ公開されていません。trust-region-least-squares:SciPy の信頼領域反射型least_squaresをビット単位で再現する、単体で独立して公開可能な非線形最小二乗ソルバーです。エンジンには依存しません。
インターフェース
Rust インターフェースは、上記の sidereon クレートです。その他の言語インターフェースは、それぞれ独自のリポジトリにあり、いずれも同じコアを基盤としています。
- 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 et al.、『SciPy 1.0』、Nature Methods 17(2020) |
| GNSS 測位(SPP / RTK / PPP) | RTKLIB のオラクルアークおよび実際の IGS 精密プロダクト | RTKLIB;国際 GNSS サービス(IGS) |
| ジオイド高(EGM96 15 分角) | PROJ(us_nga_egm96_15)、5 mm 以内 | PROJ |
| RINEX 観測データの品質管理 - マルチパス(MP1/MP2) | 実際に取得したストリームに対する teqc +qc、サブマイクロメートル以内 | teqc |
| RTCM MSM のロック時間から RINEX LLI への変換 | 実際の MSM ストリームを RTKLIB convbin でデコード | RTKLIB |
| RTCM 3 MSM1..MSM7、従来形式の 1001..1004 / 1009..1012、NavIC 1041、GLONASS 1230、IGS SSR 4076 のデコード | 実際のマルチコンステレーションストリームおよび RTKLIB でエンコードしたストリームを RTKLIB decode_rtcm3 でビット単位に照合 | RTKLIB |
| RTCM 3 SSR 1057..1270 および IGS SSR 4076(VTEC を含む全サブタイプ)のデコード | BNC でエンコードしたストリーム、RTKLIB でエンコードしたストリーム、実際の IGS SSR ストリームを BNC SSR デコーダーでビット単位に照合 | BKG NTRIP クライアント(BNC) |
| RTCM 3 ネットワーク RTK および変換メッセージ(1014-1017、1021-1027、1030-1032、1034、1035、1037-1039) | pyrtcm のメッセージレイアウト、フィールド単位で照合 | pyrtcm |
クレートごとのテストスイートには、正確なリファレンス、フィクスチャ、許容誤差が記載されています。 Python オラクルのバージョン固定に関する注記には、バージョンをまたいだ FITPACK と疑似逆行列のチェック、およびそこから定められたフィクスチャ再生成ルールが記録されています。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。