Android フレームワークにより、一部の Android デバイスから生の GNSS の測定値にアクセスできます。
この記事では、生の GNSS 測定値をサポートする Android デバイスを紹介します。また、GNSS データのロギングや分析に使用するツールについても説明します。ここで説明するツールは、GitHub の GPS Measurement Tools リポジトリから入手できます。GitHub には、GNSS Logger APK、Linux 用、Windows 用、macOS 用の GNSS Analysis アプリ、インストール ガイドとユーザー マニュアルなどがあります。
相手先ブランド製品製造企業(OEM)、デベロッパー、研究者は、このページで説明するツールを、GNSS を利用したアプリを開発するためだけでなく、新しいスマートフォンの設計の検証、機能のテスト、新しいアルゴリズムの開発、GNSS システムの実装に対する改善の評価にも利用できます。
SUPL クライアントのサンプルコード
Suplclient は、supl.google.com にアクセスしてリアルタイムのエフェメリスを取得するサンプルコードです。SuplTester
クラスは、SUPL Client Project の使い方の例になります。SuplTester
は、SUPL TCP 接続仕様をセットアップし、指定の緯度と経度で LPP SUPL リクエストを送信して、SUPL サーバーからのレスポンスを出力します。
生の GNSS 測定値をサポートする Android デバイス
生の GNSS 出力を取得する前に、使用するデバイスでそのようなデータのキャプチャが可能なことを確認する必要があります。2016 年以降に製造され、Android 7.0 以降を搭載して出荷されたデバイスのほとんどが、生の GNSS データに対応しています。
デバイスに応じて、生の GNSS 測定値には以下のデータのすべて、または一部が含まれています。
- 疑似距離と疑似距離レート
- ナビゲーション メッセージ
- 積算デルタレンジ(搬送波)
- ハードウェア(HW)クロック
以下の表に、生の GNSS 測定値をサポートするデバイスと、取得できるデータを示します。ただし、この表にすべてが含まれるわけではありません。使用するデバイスが生の GNSS 測定値をサポートしているか確認するには、メーカーにお問い合わせください。
モデル | Android バージョン | AGC | ナビゲーション メッセージ | ADR(搬送波位相) | L5 | 測位システム |
---|---|---|---|---|---|---|
Xiaomi Mi 9 | 9.0 | はい | いいえ | いいえ | はい | GPS GLOGALBDSQZS |
Samsung Galaxy Note10+ | 9.0 | はい | いいえ | いいえ | はい | GPS GLOGAL |
Samsung Galaxy Note10 | 9.0 | はい | いいえ | いいえ | はい | GPS GLOGAL |
Samsung Galaxy S10e | 9.0 | はい | いいえ | いいえ | いいえ | GPS GLOGAL |
Samsung Galaxy S10+ | 9.0 | はい | いいえ | いいえ | いいえ | GPS GLO |
Samsung Galaxy S10 | 9.0 | はい | いいえ | いいえ | いいえ | GPS GLOGAL |
Huawei P30 Pro | 9.0 | いいえ | いいえ | はい | はい | GPS GLOGALBDS |
LG G8 ThinQ | 9.0 | はい | いいえ | いいえ | いいえ | GPS GLOGAL |
OnePlus 7 Pro | 9.0 | はい | いいえ | いいえ | はい | GPS GLOGAL |
OnePlus 7 | 9.0 | はい | いいえ | いいえ | はい | GPS GLOGAL |
Huawei Mate 20 X | 9.0 | いいえ | はい | はい | はい | GPS GLOGALQZS |
Huawei Mate 20 RS(PORSCHE DESIGN) | 9.0 | いいえ | いいえ | はい | はい | GPS GLOGALBDS |
Huawei Mate 20 Pro | 9.0 | いいえ | いいえ | はい | はい | GPS GLOGALBDS |
Huawei Mate 20 | 9.0 | いいえ | いいえ | はい | はい | GPS GLOGALBDS |
Huawei Mate RS(PORSCHE DESIGN) | 8.1 | いいえ | はい | はい | いいえ | GPS GLO GAL |
Pixel 3 XL | 9.0 | はい | いいえ | いいえ | いいえ | GPS GLOGALBDS |
Pixel 3 | 9.0 | はい | いいえ | いいえ | いいえ | GPS GLOGALBDS |
Vivo X21 | 9.0 | いいえ | いいえ | いいえ | いいえ | GPS GLOBDS |
OPPO R15 Pro | 9.0 | いいえ | いいえ | いいえ | いいえ | GPS GLOGALBDS |
Xiaomi Mi 8 | 8.1 | いいえ | はい | はい | はい | GPS GLOGALBDSQZS |
LG V40 ThinQ | 8.1 | いいえ | いいえ | いいえ | いいえ | GPS GLOGALQZS |
OnePlus 6T | 9.0 | いいえ | いいえ | いいえ | いいえ | GPS GLOGALQZS |
Samsung Galaxy Note9 | 8.1 | いいえ | いいえ | いいえ | いいえ | GPS GLOGAL QZSSBAS |
LG G7 ThinQ | 8.0 | いいえ | いいえ | いいえ | いいえ | GPS GLO |
Xiaomi Mi MIX 2S | 9.0 | いいえ | いいえ | いいえ | いいえ | GPS GLOGALSBAS |
Huawei P20 | 8.1 | いいえ | はい | はい | いいえ | GPS GLOQZS |
Samsung Galaxy S9(Exynos)1 | 8.0 | いいえ | はい | はい | いいえ | GPS GLOGALQZS |
Samsung Galaxy S9+ | 8.0 | いいえ | いいえ | いいえ | いいえ | GPS GLOGAL |
Sony Xperia XZ2 | 8.0 | いいえ | いいえ | いいえ | いいえ | GPS GLOGALQZS |
OPPO R15 | 9.0 | いいえ | いいえ | いいえ | いいえ | GPS GLOGALBDS |
HTC U11+ | 8.0 | いいえ | いいえ | いいえ | いいえ | GPS GLO |
HTC U11 life | 8.0 | いいえ | いいえ | いいえ | いいえ | GPS GLO |
Huawei Mate 10 | 8.0 | いいえ | はい | はい | いいえ | GPS GLO |
Huawei Mate 10 Pro | 8.0 | いいえ | はい | はい | いいえ | GPS GLOQZS |
Google Pixel 2 XL | 8.0 | はい | いいえ | いいえ | いいえ | GPS GLOGALBDSQZS |
Google Pixel 2 | 8.0 | はい | いいえ | いいえ | いいえ | GPS GLOGALBDSQZS |
Sony Xperia XZ1 | 8.0 | いいえ | いいえ | いいえ | いいえ | GPS GLOGALBDS |
Samsung Galaxy Note8(Exynos) | 7.1 | いいえ | はい | はい | いいえ | GPS GLOGALBDS |
Samsung Galaxy Note8(Qualcomm) | 7.1 | いいえ | いいえ | いいえ | いいえ | GPS GLOGALBDS |
LG V30 | 7.1.2 | いいえ | いいえ | いいえ | いいえ | GPS GLOGAL |
Moto X4 2017 | 7.1 | いいえ | いいえ | いいえ | いいえ | GPS GLO GAL |
Essential PH-1 | 7.1 | いいえ | いいえ | いいえ | いいえ | GPS GLO |
Moto Z2 | 7.1 | いいえ | いいえ | いいえ | いいえ | GPS GLO |
HTC U11 | 7.1 | いいえ | いいえ | いいえ | いいえ | GPS GLO |
OPPO R11 | 7.1 | いいえ | いいえ | いいえ | いいえ | GPS GLOGALBDS |
Huawei Honor 9 | 7.0 | いいえ | はい | はい | いいえ | GPS GLO |
Samsung Galaxy S8(Exynos)2 | 7.0 | いいえ | はい | はい | いいえ | GPS GLOGALBDSQZS |
Samsung Galaxy S8(Qualcomm)3 | 7.0 | いいえ | いいえ | いいえ | いいえ | GPS |
Huawei P10 | 7.0 | いいえ | はい | はい | いいえ | GPS GLOGALBDSQZS |
Huawei P10 lite | 7.0 | いいえ | いいえ | いいえ | いいえ | GPS |
Huawei Honor 8 | 7.0 | いいえ | はい | はい | いいえ | GPS GLOBDS |
Huawei Mate 9 | 7.0 | いいえ | はい | はい | いいえ | GPS GLOBDS |
Huawei P9 | 7.0 | いいえ | はい | はい | いいえ | GPS GLOBDS |
Google Pixel XL | 7.0 | いいえ | いいえ | いいえ | いいえ | GPS |
Google Pixel | 7.0 | いいえ | いいえ | いいえ | いいえ | GPS |
Nexus 6P4 | 7.0 | いいえ | いいえ | いいえ | いいえ | GPS |
Nexus 5X4 | 7.0 | いいえ | いいえ | いいえ | いいえ | GPS |
Nexus 9(Wi-Fi 専用モデル)5 | 7.1 | いいえ | はい | はい | いいえ | GPS GLO |
1 Exynos、EMEA 仕様デバイス、モデル: G960F、G965F
2 Exynos、EMEA 仕様デバイス、モデル: G950F、G955F
3 Qualcomm、米国仕様デバイス、モデル: G950U、G955U
4 生の測定値は、GPS 測位が可能な場合にのみ提供されます。
5 デューティ サイクリングなし。Wi-Fi 専用モデルの Nexus 9 でのみ利用できます。
デバイスから提供されるデータの詳細については、Global Navigation Satellite Systemsをご覧ください。
生の測定値のロギング
Android Studio を使用して、生の GNSS 測定値を取得してログをファイルに出力するアプリを構築できます。GPS Measurement Tools プロジェクトには、生の GNSS 測定値をはじめ Android の位置関連データをロギングする、GNSS Logger というサンプルアプリが含まれています。
GNSS Logger APK をダウンロードして、このサンプルアプリをデバイスにインストールしてください。
サンプルアプリで GNSS 出力を取得するには、デバイスが生の GNSS 測定値をサポートしている必要があります。詳細については、生の GNSS 測定値をサポートする Android デバイスをご覧ください。
GNSS Logger を使用して GNSS のログを作成したら、そのログファイルをデバイスからパソコンにコピーして分析できます。ログファイルは、GNSS Logger 内からメールで送信したり、Google ドライブに保存したりできます。デバイスのファイル管理アプリを使用してファイルを保存することもできます。デバイスにファイルをコピーする、デバイスからファイルをコピーするで説明されている、Android Debug Bridge(ADB)を利用することもできます。
ソースコードのサンプルを参照するには、GitHub の GPS Measurement Tools リポジトリにある GNSSLogger
フォルダをご覧ください。
生の測定値の分析
GNSS Analysis アプリでは、GNSS Logger で収集された生の GPS(GNSS)測定値を読み取って、GNSS レシーバの動作を分析します(図 1)。
このアプリは、Linux用、Windows用、macOS用をダウンロードできます。また、インストール ガイドとユーザー マニュアルもダウンロードできます。
図 1. GNSS Logger では GNSS Analysis で処理可能な測定値が収集される
GNSS Analysis アプリはMATLABで構築されていますが、MATLAB を実行する必要はありません。アプリの実行可能ファイルは、MATLAB Runtime のコピーをインストールするようコンパイルされています。
GNSS Analysis コントロール パネル
GNSS Analysis コントロール パネル(図 2)では、アプリの以下のような機能を管理できます。
- 表示する衛星の選択
- 測定誤差の計算に使用する基準の位置、速度、時間(PVT)の制御
- 分析レポートの生成
- 開始時刻と終了時刻の間におけるデータ ウィンドウの定義
)
図 2. GNSS Analysis コントロール パネル
GNSS Analysis インタラクティブ プロット
GNSS Analysis アプリには、無線周波数(RF)、クロック、測定値の列で構成されたインタラクティブなプロットが用意されています(図 3)。
)
図 3. GNSS Analysis アプリのインタラクティブ プロット
RF 列には次のデータが表示されます。
- 各コンステレーションについて、最も強い電波を持つ 4 つの衛星。
- 各衛星の、搬送波対雑音密度比(C/No)の時間プロット。
- 衛星位置のスカイプロット。
クロック列には次のデータが表示されます。
- 疑似距離。
受信機クロックのオフセット周波数。次のいずれかの基準位置を使用して計算されます。
- 自動計算された平均位置。
- ユーザーが入力した緯度、経度、高度。
- 真の基準 PVT を含む米国海洋電子機器協会(NMEA)のファイル。
受信機がメイン発振器のデューティ サイクルをリセットする時間を維持するスタンバイ クロックのオフセット。
測定値列には次のデータが表示されます。
- 擬似距離の生データから重み付き最小二乗法で得られた位置。重み付けは、各測定で報告される不確実性に基づいて行われます。これは、生の測定値の API における仕様です。
- 測定ごとの各擬似距離の誤差。
測定ごとの各擬似距離レートの誤差。
GNSS Analysis テストレポート
GNSS Analysis は、API 実装、受信電波、クロック動作、測定精度を評価したテストレポート(図 4)を生成します。ケースごとに、測定されたパフォーマンスが既知のベンチマークに基づいて評価され、受信機のテストの合否が報告されます。このテストレポートは、新しいデバイスの設計と実装を繰り返し行うデバイス メーカーにとって有用です。テストレポートを作成するには、[Make Report] をクリックします。
図 4. GNSS Analysis テストレポート
[Compare] タブには、複数の GNSS ログファイルからの C/No が横に並べて表示されます(図 5)。複数のデバイスの RF パフォーマンスを比較する際に役立ちます。
図 5. 複数のログファイルからの C/No データを横に並べての比較
ソースコードに興味がある場合は、GPS Measurement Tool Project でオープンソースの MATLAB サンプルをご覧ください。このサンプルでは、GPS コンステレーション電波を使用した次の操作を実行できます。
- GNSS Logger サンプルアプリで取得したデータの読み込み。
- 疑似距離の計算と可視化。
- 位置と速度の重み付き最小二乗法による計算。
- 搬送波位相の表示と分析。
GNSS Analysis アプリ v3.0.3.0 リリースノート
GNSS Analysis アプリ バージョン 3.0.3.0 には以下の更新が含まれています。
- 次のプロット機能の追加。
- WLS PVT からのカルマン フィルタ位置
- ADR(搬送波位相)からの WLS 相対位置
- ADR(搬送波位相)一重差残差
- 選択した衛星に基づいて位置のプロットを再生成する位置更新機能の追加。
- 仰角マスク調整機能の追加。
- すべての BKG *.gz ZIP ファイルに MATLAB Runtime 内のネイティブ解凍を使用することによるエフェメリス ファイルのダウンロード最適化。
- 基準 PVT の選択肢としてのデバイス位置の追加。
- # Raw ヘッダー値のいずれでもフィルタできる
CustomDataFilter.m
機能の追加。
フィードバックを送信
Google では、Android における GNSS のサポートの改善を図っています。Android における GNSS のサポートに問題があれば、GNSS Issue Trackerを使用してお知らせください。その際には、あらかじめよくある質問に同じ問題が掲載されていないかご確認ください。
GNSS Analysis ツールをすでにご使用の場合は、簡単なアンケートに回答してフィードバックをお寄せください。その他の質問やサポート リクエストについては、デベロッパー サポート リソースをご覧ください。
一般的な質問に対する回答は、GNSS Analysis ツールについてのよくある質問に掲載されている可能性があります。