生の GNSS 測定値

Android フレームワークにより、一部の Android デバイスから生の GNSS の測定値にアクセスできます。

ここで説明するツールは、GitHub の GPS Measurement Tools リポジトリから入手できます。GitHub には、GnssLogger の予備版のソースコードと、LinuxWindowsmacOS 用のデスクトップ GNSS Analysis アプリの実行可能ファイルが含まれています。インストールとユーザー マニュアル

Google スマートフォン デシメートル チャレンジ

Google、Institute of Navigation の Satellite Division、Kaggle は、ION GNSS+ で開催される第 3 回スマートフォン デシメートル チャレンジをスポンサーしています。このコンテストは 2023 年 9 月 12 日に始まり、2024 年 5 月 23 日に終了します。生の GNSS 測定値、センサーデータ、正確なグラウンド トゥルースを含む 150 を超える新しいトレースを利用できるようになります。コンテストへの参加はどなたでも可能です。参加者は、ION GNSS+ 2024 で開催される「スマートフォンのデシメートル チャレンジ」というセッションに要約を提出することをおすすめします。

ルールや規制など、詳細については、Kaggle の競技ページをご覧ください。このページは、2023 年 9 月 12 日午後 3 時 30 分(MDT)に公開されます。

生の GNSS 測定値をサポートする Android デバイス

Android 10(API レベル 29)以降を搭載しているデバイスでは、未加工の GNSS 測定値のサポートが必須です。Android 9(API レベル 28)以前では、2016 年以降のハードウェアを搭載したすべての Android デバイスで、生の GNSS 測定値のサポートが必須です。現在、既存の Android スマートフォンの 90% 以上が未加工の測定値を使用しています。

生の GNSS 測定フィールドの一部はオプションであり、使用される GNSS チップセットによって異なる場合があります。これらのフィールドの例を次に示します。

  • 疑似距離と疑似距離レート
  • ナビゲーション メッセージ。
  • 自動ゲイン コントローラ(AGC)の値。
  • 積算デルタレンジ(ADR)または搬送波位相。

次の表に、Android 搭載デバイスの例と、生の GNSS 測定値のサポートレベルを示します。

モデル Android バージョン AGC ADR(搬送波位相) L5 測位システム
Google Pixel 4/5/6/7 12 はい はい はい GPS
GLO
GAL
BDS
QZS
Xiaomi Mi 9 9 はい いいえ はい GPS
GLO
GAL
BDS
QZS
Xiaomi Mi 8 8.1 いいえ はい はい GPS
GLO
GAL
BDS
QZS
Huawei P30 Pro 9 × はい はい GPS
GLO
GAL
BDS
Huawei Mate 20 9 × はい はい GPS
GLO
GAL
BDS
OnePlus 7 Pro 9 はい いいえ はい GPS
GLO
GAL
OnePlus 7 9 はい いいえ はい GPS
GLO
GAL
Samsung Galaxy S20/S21 Ultra(Exynos)* 12 はい はい はい GPS
GLO
GAL
BDS
QZS
Samsung Galaxy S9(Exynos)* 8.0 いいえ はい いいえ GPS
GLO
GAL
QZS
Samsung Galaxy S9+ 8.0 いいえ いいえ いいえ GPS
GLO
GAL

* Samsung Galaxy Exynos バージョンは、近年 ADR を提供しています。Samsung Snapdragon バージョンでは ADR はまだ提供されていません。

Android デバイスから提供される未加工の測定値フィールドの定義については、Global Navigation Satellite Systems をご覧ください。

相手先ブランド製品製造企業(OEM)、デベロッパー、研究者は、このページで説明するツールを、GNSS を利用したアプリを開発するためだけでなく、新しいスマートフォンの設計の検証、機能のテスト、新しいアルゴリズムの開発、GNSS システムの実装に対する改善の評価にも利用できます。

SUPL クライアントのサンプルコード

Suplclient は、supl.google.com にアクセスしてリアルタイムのエフェメリスを取得するサンプルコードです。SuplTester クラスは、SUPL Client Project の使い方の例になります。SuplTester は、SUPL TCP 接続仕様をセットアップし、指定の緯度と経度で LPP SUPL リクエストを送信して、SUPL サーバーからのレスポンスを出力します。

アンテナ較正情報

Android 11(API レベル 30)以降では、GnssAntennaInfo クラスを使用して、位相中心オフセット(PCO)座標、位相中心変動(PCV)補正、信号ゲイン補正などのアンテナ特性にアクセスできます。これらの補正を元の測定値に適用すると、精度が向上します。

GnssAntennaInfo を使用する際は、次のシステム動作に注意してください。ユーザーのプライバシーを強化するように設計されています。

  • この API によって提供される特性は、個々のデバイスではなく、デバイスモデルに固有のものです。

生の測定値のロギング

Android Studio を使用して、生の GNSS 測定値やその他の位置情報を取得してログをファイルに出力するアプリを構築できます。このようなアプリのソースコードの例については、GPS Measurement Tools をご覧ください。

Google の GNSSLogger は、この機能を使用して開発されたサンプルアプリです。サンプルアプリで GNSS 出力を取得するには、デバイスが生の GNSS 測定値をサポートしている必要があります。

GNSS Logger を使用して GNSS のログを作成したら、そのログファイルをデバイスからパソコンにコピーして分析できます。ログファイルは、GNSS Logger 内からメールで送信したり、Google ドライブに保存したりできます。デバイスのファイル管理アプリを使用してファイルを保存することもできます。デバイスにファイルをコピーする、デバイスからファイルをコピーするで説明されている、Android Debug Bridge(ADB)を利用することもできます。

生の測定値の分析

GNSS Analysis アプリでは、GNSS Logger で収集された生の GPS(GNSS)測定値を読み取って、GNSS レシーバの動作を分析します(図 1)。

このアプリは、LinuxWindowsmacOS システム用をダウンロードできます。

GNSS Logger と GNSS Analysis

図 1. GNSS Logger では GNSS Analysis で処理可能な測定値が収集される。

GNSS Analysis アプリは MATLAB で構築されていますが、MATLAB を実行する必要はありません。アプリの実行可能ファイルは、MATLAB Runtime のコピーをインストールするようコンパイルされています。

GNSS Analysis コントロール パネル

GNSS Analysis コントロール パネル(図 2)では、アプリの以下のような機能を管理できます。

  • 表示する衛星の選択
  • 測定誤差の計算に使用する基準の位置、速度、時間(PVT)の制御
  • 分析レポートの生成
  • 開始時刻と終了時刻の間におけるデータ ウィンドウの定義

GNSS Analysis コントロール パネル

図 2. GNSS Analysis コントロール パネル

GNSS Analysis インタラクティブ プロット

GNSS Analysis アプリには、無線周波数(RF)、クロック、測定値の列で構成されたインタラクティブなプロットが用意されています(図 3)。

GNSS Analysis インタラクティブ プロット

図 3. GNSS Analysis アプリのインタラクティブ プロット

RF 列には次のデータが表示されます。

  • 各コンステレーションについて、最も強い電波を持つ 4 つの衛星。
  • 各衛星の、搬送波対雑音密度比(C/No)の時間プロット。
  • 衛星位置のスカイプロット。

クロック列には次のデータが表示されます。

  • 疑似距離。
  • 受信機クロックのオフセット周波数。次のいずれかの基準位置を使用して計算されます。

    • 自動計算された平均位置。
    • ユーザーが入力した緯度、経度、高度。
    • 真の基準 PVT を含む米国海洋電子機器協会(NMEA)のファイル。
  • 受信機がメイン発振器のデューティ サイクルをリセットする時間を維持するスタンバイ クロックのオフセット。

測定値列には次のデータが表示されます。

  • 擬似距離の生データから重み付き最小二乗法で得られた位置。重み付けは、各測定で報告される不確実性に基づいて行われます。これは、生の測定値の API における仕様です。
  • 測定ごとの各擬似距離の誤差。
  • 測定ごとの各擬似距離レートの誤差。

GNSS Analysis テストレポート

GNSS Analysis は、API 実装、受信電波、クロック動作、測定精度を評価したテストレポート(図 4)を生成します。ケースごとに、測定されたパフォーマンスが既知のベンチマークに基づいて評価され、受信機のテストの合否が報告されます。このテストレポートは、新しいデバイスの設計と実装を繰り返し行うデバイス メーカーにとって有用です。テストレポートを生成するには、[Make Report] をクリックします。

GNSS Analysis テストレポート

図 4. GNSS Analysis テストレポート

[Compare] タブには、複数の GNSS ログファイルからの C/No が横に並べて表示されます(図 5)。複数のデバイスの RF パフォーマンスを比較する際に役立ちます。

C/No データを横に並べての比較

図 5. 複数のログファイルからの C/No データを横に並べての比較

ソースコードに興味がある場合は、GPS Measurement Tool Project でオープンソースの MATLAB サンプルをご覧ください。このサンプルでは、GPS コンステレーション電波を使用した次の操作を実行できます。

  • GNSS Logger サンプルアプリで取得したデータの読み込み。
  • 疑似距離の計算と可視化。
  • 位置と速度の重み付き最小二乗法による計算。
  • 搬送波位相の表示と分析。

GNSS Analysis アプリ v4.6.0.1 リリースノート

GNSS Analysis アプリ バージョン 4.6.0.1 には以下の更新が含まれています。

  • Matlab R2022a で GnssAnalysisTool を構築し、次の新機能を利用できるようにしました。
  • ステータス ウィンドウの自動スクロール: 最新のステータス メッセージが常に表示されます。
  • コンステレーションごとの C/N0 の比較と、L1 と L5 の比較の表を追加しました。
  • 疑似距離レートの残差プロットを追加しました。
  • 参照 PVT の「静止」と「移動中」の個別のタブを削除し、選択されている参照 PVT のタイプを簡単に確認できるようにしました。
  • [レポートを作成] の結果を HTML からステータス ウィンドウに移動しました。
  • [ミッション プランナー] タブを削除しました。gnssmissionplanning.com/ または www.gnssplanning.com/ を使用してください。
  • RINEX 観測ファイルの解析に関連する修正を行いました。
  • BKG が機能していない場合、GPS と GLO の NASA CDDIS エフェメリス ソースにフォールバック。
  • igs.bkg.bund.de から igs-ftp.bkg.bund.de に移動
  • GAL、QZSS、BDS エフェメリスのダウンロードに失敗しても、分析を終了しない。
  • チップセットが BaseBandCNo をサポートしていない場合でも、アンテナ CNo 分析を作成

インストールとユーザー マニュアル

フィードバックを送信

Google では、Android における GNSS のサポートの改善を図っています。Android における GNSS のサポートに問題があれば、GNSS Issue Tracker を使用してお知らせください。その際には、あらかじめよくある質問に同じ問題が掲載されていないかご確認ください。

GNSS Analysis ツールをすでにご使用の場合は、簡単なアンケートに回答してフィードバックをお寄せください。その他の質問やサポート リクエストについては、デベロッパー サポート リソースをご覧ください。

よくある質問に対する回答は、GNSS Analysis ツールについてのよくある質問に掲載されている可能性があります。