測位系オープンソース一覧

GNSSを自分で触るための定番オープンソース — 何ができるソフトなのかをざっくり掴む

市販の受信機は中身がブラックボックスですが、オープンソースを使えば受信・解析・生成・測位計算の各段を自分の手で動かせます。このページでは用途別に定番ツールを整理しました。ライセンスやバージョンは変わることがあるので、導入時は各公式リポジトリで最新情報を確認してください。

受信機・信号処理 — SDRで受信して復調する

GNSS-SDR

受信機

本格的なソフトウェアGNSS受信機。生のI/Qサンプルから捕捉→追尾→航法メッセージ復調→測位(PVT)まで全部ソフトで行う。

  • 多コンステレーション・多周波(GPS/Galileo/GLONASS/BeiDou、L1/L5等)
  • RTL-SDRやUSRPなど各種SDRに対応
  • RINEX/KML出力、他の解析ソフトへ橋渡し
C++Apache-2.0GitHub →

PocketSDR

受信機

RTKLIB作者による軽量ソフトGNSS受信機(+小型フロントエンド)。生I/Qから捕捉・追尾を可視化でき、研究・教育に人気。

  • 捕捉の2次元サーチや相関を見て学べる
  • 多くのGNSS信号・新しい信号にも対応
  • 専用の小型RFフロントエンド設計も公開
Python/CオープンGitHub →

GNU Radio

SDR基盤

汎用のSDR信号処理フレームワーク。ブロックを線でつなぐだけで受信機や送信機を組み立てられる、SDRの土台。

  • GUI(GRC)でフロー図を描いて信号処理
  • GNSSに限らずFM・無線全般に使える
  • GNSS-SDR等もこの上や周辺で動く
C++/PythonGPLv3GitHub →

SoapySDR

SDR基盤

SDRハードウェアを共通APIで扱うための抽象化層。RTL-SDR/HackRF/LimeSDR/USRPなどをアプリ側から同じ書き方で。

  • ボードごとの差異を吸収するドライバ層
  • 多くの受信・生成ツールが内部で利用
  • SDR入門で挙げたボード群をまとめて扱える
C/C++BoostGitHub →

測位・補正・後処理 — 位置を計算する / 精度を上げる

RTKLIB

測位

GNSS高精度測位の定番。観測データから単独測位・DGPS・RTK・PPPまで、リアルタイムと後処理の両方を扱える万能ツール群。

  • RTK/PPPでcm級の測位(補正の実装)
  • RINEX変換、基準局データ処理、各種フォーマット対応
  • GUI(RTKNAVI等)とCLI(rtkrcv/rnx2rtkp)

gnsstk(旧GPSTk)

ライブラリ

GNSS処理の部品箱ライブラリ。軌道計算・時刻系・座標変換・RINEX処理など、測位アプリを自作するための土台。

  • エフェメリスから衛星位置を計算する関数群
  • ECEF↔緯度経度など座標変換
  • C++本体+Pythonバインディング
C++/PythonLGPLGitHub →

laika

ライブラリ

comma.ai製のPython GNSSライブラリ。擬似距離の補正と測位を素直なコードで書けて、研究・実験向き。

  • 電離層・対流圏・衛星クロックの補正を実装
  • 生の観測から位置を出すまでをPythonで
  • 自動運転文脈での実用ライブラリ
PythonMITGitHub →

georinex

データ

GNSSの標準データ形式RINEX(観測・航法)を読み込むPythonツール。解析の入口として定番。

  • RINEX 2/3 の観測・航法ファイルをxarray/pandasへ
  • 大きな観測ログの前処理に便利
  • 自作解析やグラフ化の土台に
PythonMITGitHub →

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-SDRPocketSDR。本物のL1を捕捉・追尾して、受信の流れで見たブロックが実際に動くのは感動があります。

高精度測位を試したい: 公開されている基準局のRINEXデータ+RTKLIB。まず後処理(rnx2rtkp)でRTK/PPPを回すと、補正で誤差がcmまで縮む様子を自分のデータで確認できます。

信号の中身を作りたい: gps-sdr-simでI/Qを生成 → SDRで再生。ただしSDRでGNSS送信のとおり、必ず有線+減衰器で。空間に出すと電波法違反です。

プログラムで解析したい: georinexでRINEXを読み、gnsstklaikaで衛星位置・補正・測位を計算。Pythonで一連の流れを追えます。

ライセンスと使い方の注意

掲載したライセンスや対応状況は執筆時点の目安です。実際に使うときは各リポジトリのLICENSEとREADMEを確認してください(商用利用・再配布の条件はライセンスごとに異なります)。

信号生成系は特に注意が必要です。GNSS帯の電波を空間に放射することは日本の電波法で禁止されており、他人の受信機を欺けば犯罪になります。テストは必ず同軸ケーブル直結+十分な減衰器、またはシールドボックス内で、自分の機器に対してのみ行ってください(妨害と偽装のページも参照)。