経路案内アプリ「Transit」の開発チームが、GPSの利用できない地下鉄において現在地を適切に表示するためにどう工夫したのかについてのブログを投稿しました。

Transit | No GPS required: our app can now locate underground trains

https://blog.transitapp.com/go-underground/



地下鉄ではGPS衛星の電波を受信できないため、GPSを使って現在の位置を知ることはできません。経路案内アプリの場合、以下のムービーのように「現在位置のジャンプ」が発生してしまいます。



よく知っている場所であれば現在地が多少ジャンプしたところで問題ありませんが、初めて行く土地の場合には駅が近づくごとに窓から駅名標を必死に探す必要があります。この問題に対応するため、Transitの開発チームはGPSに頼らない方法を模索し始めました。

開発チームが目を付けたのは「加速度」です。現代のスマートフォンには加速度センサーが標準搭載されており、アプリから加速度のデータを使用する事ができます。チームは下図のような「現在の状態」を申告するアプリを作成し、「歩いている時」「階段を利用している時」「電車に乗っている時」のような状態ラベル付きの加速度データを収集しました。



収集された加速度データはこんな感じ。



集めた加速度データを元にAIモデルをトレーニングすることで、「動いている電車に乗っている」のか、それとも「単にスマートフォンが振動しているだけ」なのかを判断できるようにしたとのこと。



「ユーザーの現在の状態」が分かるようになったので、チームは別のAIモデルを用意し、ユーザーの状態に加えて「最後に取得できたGPSの位置情報と経過時間」「電車の時刻表」というデータを元に現在位置を割り出せるようにしました。

下図のように地下鉄の中でもGPS信号が届く場所があるので、適宜位置を補正しながら表示することで予測の精度は90%に到達したとのこと。



チームが開発した2つのモデルはともにスマートフォン上で動作可能であり、インターネットが使えない状況でも問題ないそうです。以下のムービーは実際の精度の様子で、本当の位置が「×」マークであり、AIモデルの予測結果が「Mixer v1」「Mixer v2」「Mixer v3」で表示されています。



ブログは「実際にアプリで試してみて」と書かれていましたが、残念ながら記事作成時点では日本国内で対応している場所は無い模様でした。