![]() |
1.Fused Location Providerとは
スマートフォンの位置情報(緯度、経度、高度)は、GPSだけでなく、Wi-Fi、モバイルネットワーク、各種センサー(加速度計、ジャイロスコープ、磁力計、気圧計)の情報を総合して、より正確で信頼性の高い結果を得ている。このシステムは、アンドロイドではFused Location Provider(以下、FLPと略)、iOSではCore Locationというらしい。
スマートフォンがどのようなセンサーを搭載しているのか、カタログには記載がないが、価格.comの「スペック・特徴」の欄にこれが記載されている。これによると、iPhoneとGoogle Pixelではどの機種にもフルスペックといえるセンサーが搭載されている。その他のアンドロイドスマホでは、各社の最上位機種にはフルスペックのセンサーが搭載されているが、廉価版ではかなり削られている。
ただし、価格.comがどのようにしてこの情報を得ていて、どの程度の信頼性があるのか分からない。センサーツールボックスというアプリをインストールすれば、自分のスマホに実際にどのようなセンサーが搭載されているのか確認でき、各センサーの測定値を見ることができる。
気圧センサー搭載のアンドロイドスマホでは、標高データの(主な)ソースは、設定により以下のように変化するようだ。なお、室内ではWi-FiやBluetoothも使うことがあるらしいが、ここでは登山に関係した話に限定する。
「位置情報の精度を改善」をオフ:GPS
「位置情報の精度を改善」をオン
・ネットワークオン(機内モードオフ):ネットワーク
・ネットワークオフ(機内モードオン):気圧センサー
ネットワークから提供される標高データというのは、おそらくGoogle Elevation APIというものを使っている。グーグルが地球全体の数値標高データを持っていて、GPSで得た緯度経度を携帯の電波で送信し、それに対応する標高値を返す、という仕組みらしい。
気圧データを使用して計算した標高値は、GPSの標高値より高精度で安定しているが、気象現象としての気圧変化の影響を受ける。その影響を補正するには、測定時の海面気圧と気温のデータが必要であり、航空機ではこのデータを無線で入手して高度の計算を行っている。これに代わるものとして、既知の標高点での校正を頻繁に行うという方法もあり、昔のアナログ式の気圧高度計はこの方式だった。
標高値の算出に気圧データをどのように使うのか、グーグルやアップルは具体的なことを何も公表していないようである。一方、ガーミンとSuuntoについては、この技術に関する特許文書を見ることができて、標高値は基本的に気圧データから計算し、GPSの標高値の統計処理で得たデータで校正する、ということらしい。
このほかにも、GPSと気圧のデータを融合して高精度の標高値を算出するというテーマの研究文献は多数あるが、基本的にはいずれも、気圧データから計算した標高値をGPSの標高値で補正するというものである。後で示す実験の結果から、FLPでも同様の手法を用いている可能性が高い。「気圧センサー付きのスマホは、GPSの高度を気圧センサーで補正しているので、標高値が安定している」と言われることがあるが、実際は逆のようである。
2.簡単な実験
中古で購入した気圧センサー搭載のスマホ(サムスンSC-51A)を使用して、FLPの仕組みをちょっと調べてみた。
登山用アプリの場合、FLPの3つの標高値のうち、その時のスマホの設定で決まる一つだけを受け取り、表示・記録するので、3つを比較して見ることはできない。一方、Sensor Loggerというアプリは、スマホが搭載している全センサーの測定値を記録し、CSVファイルとして出力できる。これを使用して、3つの標高値を比較した。
実験といっても、Sensor Loggerでログを取りながら、東京郊外のほぼ平坦な道を約1時間10分歩いただけである。「位置情報の精度を改善」はオン、ネットワークは初めの10分間と終わりの8分間のみオン、途中はオフにした。Sensor Loggerで記録したのはLocation(これがFLPの出力)、NetworkLocation、GPSLocation、Barometerの4項目である。測定間隔は10秒に設定した。
添付の一番上のグラフはLocation、NetworkLocation、GPSLocationの標高値である(アンドロイドOSが出力する標高値はすべて楕円体標高である)。GPSの標高値は5mないし10mの振動を繰り返す不安定なものであり、かつネットワークの標高値より10m前後高い値を示す(Google Elevation APIの標高値は海抜標高だが、FLPではわざわざジオイド高を足して楕円体標高に直しているのか?)。FLPの標高値は、ネットワークに接続している間はネットワークの標高値であり、接続していない間もGPSの標高値よりは安定している。
真ん中のグラフは気圧データである。気象庁の東京と甲府の海面気圧のデータも示した。測定中の気圧は安定していたことが分かる。
一番下のグラフは、Location、NetworkLocation、GPSLocationの楕円体標高値からジオイド高を差し引いて、海抜標高にしたものである。ジオイド高は国土地理院のJPGEO2024で求めた値で、このルート沿いでは38.0〜38.2mでほとんど一定である。
このグラフには、Barometerの気圧データから計算された相対標高値も示した。これもOSの出力であり、航空業界で使用される標準大気を想定した計算値と一致する。また、GPSの緯度経度に対してDEM1Aから最近傍法で取得した標高値も示した。スマホは腰の位置に固定したので、このDEM1Aの標高値に1m足した値がほぼ正解の標高値ということになる。
一番下のグラフでFLPの標高値の推移を見てみる。前述の通り、ネットワークに接続している間はネットワークの標高値である。ネットワーク接続を切った後は、気圧から計算した相対標高値(からノイズを除いたもの)に移行していることが分かる。ネットワーク接続を切って10分後に、急に8mほど高い値にシフトする。その後の変化のパターンは、やはり気圧から計算した相対標高値のそれに近い。
8mほどのシフトは、GPS標高値を統計処理した結果を使って校正した結果と思われる。実際は海面気圧は安定していたのだから、気圧データからの相対標高値をそのまま使えば良かったのだが、これより10mほど高めの値を示すGPS標高値に影響されてシフトしてしまったのだろう。
気圧データとGPSの標高データを融合してより安定した標高値を得るということがどういうことか、大体の感じは掴めたと思う。どのくらいの頻度で、どのくらいの期間のGPS標高値を使って校正を行うのかが重要だが、これを推定するにはもっと長い実験を行う必要がある。とりあえず、FLPの算出する標高値は完璧というには程遠いが、短時間での安定度の高さという点で、GPS標高をそのまま使用するよりはずっとマシだということは確認できた。
気圧標高とGPS標高の融合手法は、短期間と長期間での標高の精度に関して、気圧標高とGPS標高が相補的な関係にあることを利用している。つまり、気圧標高は短期的には正確で安定しているが、長期的には気象現象としての気圧変化の影響で大きな誤差を生じる。一方、GPS標高値は短期的には不安定で精度が低いが、移動に伴う大きな標高の変化の傾向は(うまく統計処理すれば)把握できるはずである。後者の前提が崩れた場合、つまり谷間などで長時間に渡ってGPS標高の精度が極端に悪い場合は、当然良好な結果は得られないだろう。
この実験を平坦地で行ったのは、日々の散歩のついでということもあるが、基準となる標高データが容易に得られるという利点がある。時間に対する安定性を見たいのであれば、スマホを静置しておけば良いと思うかもしれない。しかし、FLPの機能として、静置していることを加速度センサーで感知すると、位置情報がほとんど変化しなくなるようだ。このため、歩きながら測定することが必要なのである。
登山で取得したデータの統計的検討も若干行ったが、これについては日を改めて報告する。
コメントを編集
いいねした人
コメントを書く
ヤマレコにユーザー登録いただき、ログインしていただくことによって、コメントが書けるようになります。ヤマレコにユーザ登録する