測位系オープンソース一覧
GNSSを自分で触るための定番オープンソース — 何ができるソフトなのかをざっくり掴む
市販の受信機は中身がブラックボックスですが、オープンソースを使えば受信・解析・生成・測位計算の各段を自分の手で動かせます。このページでは用途別に定番ツールを整理しました。ライセンスやバージョンは変わることがあるので、導入時は各公式リポジトリで最新情報を確認してください。
受信機・信号処理 — SDRで受信して復調する
GNSS-SDR
受信機本格的なソフトウェアGNSS受信機。生のI/Qサンプルから捕捉→追尾→航法メッセージ復調→測位(PVT)まで全部ソフトで行う。
- 多コンステレーション・多周波(GPS/Galileo/GLONASS/BeiDou、L1/L5等)
- RTL-SDRやUSRPなど各種SDRに対応
- RINEX/KML出力、他の解析ソフトへ橋渡し
PocketSDR
受信機RTKLIB作者による軽量ソフトGNSS受信機(+小型フロントエンド)。生I/Qから捕捉・追尾を可視化でき、研究・教育に人気。
- 捕捉の2次元サーチや相関を見て学べる
- 多くのGNSS信号・新しい信号にも対応
- 専用の小型RFフロントエンド設計も公開
GNU Radio
SDR基盤汎用のSDR信号処理フレームワーク。ブロックを線でつなぐだけで受信機や送信機を組み立てられる、SDRの土台。
- GUI(GRC)でフロー図を描いて信号処理
- GNSSに限らずFM・無線全般に使える
- GNSS-SDR等もこの上や周辺で動く
SoapySDR
SDR基盤SDRハードウェアを共通APIで扱うための抽象化層。RTL-SDR/HackRF/LimeSDR/USRPなどをアプリ側から同じ書き方で。
- ボードごとの差異を吸収するドライバ層
- 多くの受信・生成ツールが内部で利用
- SDR入門で挙げたボード群をまとめて扱える
測位・補正・後処理 — 位置を計算する / 精度を上げる
RTKLIB
測位GNSS高精度測位の定番。観測データから単独測位・DGPS・RTK・PPPまで、リアルタイムと後処理の両方を扱える万能ツール群。
- RTK/PPPでcm級の測位(補正の実装)
- RINEX変換、基準局データ処理、各種フォーマット対応
- GUI(RTKNAVI等)とCLI(rtkrcv/rnx2rtkp)
gnsstk(旧GPSTk)
ライブラリGNSS処理の部品箱ライブラリ。軌道計算・時刻系・座標変換・RINEX処理など、測位アプリを自作するための土台。
- エフェメリスから衛星位置を計算する関数群
- ECEF↔緯度経度など座標変換
- C++本体+Pythonバインディング
laika
ライブラリcomma.ai製のPython GNSSライブラリ。擬似距離の補正と測位を素直なコードで書けて、研究・実験向き。
- 電離層・対流圏・衛星クロックの補正を実装
- 生の観測から位置を出すまでをPythonで
- 自動運転文脈での実用ライブラリ
georinex
データGNSSの標準データ形式RINEX(観測・航法)を読み込むPythonツール。解析の入口として定番。
- RINEX 2/3 の観測・航法ファイルをxarray/pandasへ
- 大きな観測ログの前処理に便利
- 自作解析やグラフ化の土台に
RINGO
データ国土地理院(GSI)が公開するGo製のRINEXツールキット。観測・航法データの変換・編集・結合・品質チェックをコマンドラインで。
- RINEXの変換・編集・マージ・品質チェック(QC)
- 日本の電子基準点(GEONET)データの扱いに便利
- 単一バイナリで動く、公的機関製の実用ツール
信号生成・テスト — GNSS信号を作る
gps-sdr-sim
信号生成任意の位置・時刻のGPS L1 C/A信号のI/Qファイルを生成し、SDRで再生して受信機をテストする定番ツール。
- 航法データ(RINEX)+座標を指定してI/Q生成
- LimeSDR等で再生(SDRでGNSS送信参照)
- 空間放射は違法。有線+減衰器で自機のみに
どれから触ればいい? — おすすめの入り口
まず受信を体験したい: RTL-SDR(TCXO版)+パッチアンテナ+GNSS-SDR か PocketSDR。本物のL1を捕捉・追尾して、受信の流れで見たブロックが実際に動くのは感動があります。
高精度測位を試したい: 公開されている基準局のRINEXデータ+RTKLIB。まず後処理(rnx2rtkp)でRTK/PPPを回すと、補正で誤差がcmまで縮む様子を自分のデータで確認できます。
信号の中身を作りたい: gps-sdr-simでI/Qを生成 → SDRで再生。ただしSDRでGNSS送信のとおり、必ず有線+減衰器で。空間に出すと電波法違反です。
プログラムで解析したい: georinexでRINEXを読み、gnsstkやlaikaで衛星位置・補正・測位を計算。Pythonで一連の流れを追えます。
ライセンスと使い方の注意
掲載したライセンスや対応状況は執筆時点の目安です。実際に使うときは各リポジトリのLICENSEとREADMEを確認してください(商用利用・再配布の条件はライセンスごとに異なります)。
信号生成系は特に注意が必要です。GNSS帯の電波を空間に放射することは日本の電波法で禁止されており、他人の受信機を欺けば犯罪になります。テストは必ず同軸ケーブル直結+十分な減衰器、またはシールドボックス内で、自分の機器に対してのみ行ってください(妨害と偽装のページも参照)。