2015-06-26

ISAC TokyoでGPS/GNSS高精度測位の世界を垣間みた

今年のInternational Space Apps Challenge、グローバル審査の結果まで出たので顛末を書きます。結果は東京ローカル審査で優秀賞を頂いて、グローバル審査に進んだものの敗退といった所です。

International Space Apps Challenge(ISAC)とは

今年で4回目となるNASA主催の国際ハッカソンで、今年は世界133ヶ所で行なわれた模様。地球観測衛星から得られたデータを有効活用したり、世界規模の問題解決に取り組むといったテーマが与えられた中でチームを作りハードウェアやWebサービスの開発に取り組みます。

何を作ったか

SENSOR YOURSELF テーマを選び、屋外用の安価な高精度測位モジュールを作りました。モチベーションとしては既存の機器、例えば農機や建設機器のオプションとして売られている物があまりに高いため、高精度測位の普及が進んでいない。安価に実現可能な事と利用法を示せれば、廉価品を作るメーカーが出てきたりスマホだけで利用可能になって嬉しいのでは、という話です。農機になぜ高精度測位が必要かと言うと、例えば植えた稲を踏まないように自動運転させるためだそうで。

作りとしてはRaspberry Pi + GPS/GNSS受信機 + ケースです。ネットワーク必須なので、そこはテザリングで。スマホ内蔵の受信機の信号が直接使えるようになればラズパイも受信機も不要なのですが、iOSはCore Location経由でしか位置情報にアクセスできないので不可能なのと、Androidでも特定の機種に限られるのでこの形に。測位モジュールを作るだけでなく、有効なユースケースを提示する予定だったのですがハッカソン中に良い案が思いつかず。

これでどの程度の精度が出るかと言うと、単独測位の誤差が10メートル程度なのに対して誤差1 ~ 10cm程度です。デモページで取得したデータをプロットしているのですが、1cm程度に収まっています。ただ、これは建物の屋上の受信機で測定したデータなので(Height 117m)地上でやるよりも精度が出ています。
デモのスクリーンショット

READMEに載せた構成図
 +------------------+          +--------------------------------------+                            
 | Smartphone       |          | RaspberryPi                          |                            
 | +--------------+ | Location |  +------------+       +-----------+  |           +-----------------+
 | |   Browser    <----(HTTP)-----+ API Server <-(TCP)-+  RTKLIB   <----(Serial)--+ GNSS/GPS Device |
 | +------^-------+ |          |  +------------+       +-----^-----+  |           +-----------------+
 +--------|---------+          +-----------------------------|--------+                            
          |                                                  |                                     
          |                                               (NTRIP)                                     
          |                                                  |                                     
 +--------+---------+                               +--------+---------+                           
 | Web Server       |                               |  Base Station    |                           
 | HTML, JavaScript |                               |                  |                           
 +------------------+                               +------------------+                           
 Serve User Interface
Submitしたプロジェクトページ

最近はGPSでは無くGNSSと呼ぶらしい

今回のハッカソンで勉強になったのがGPS周りの技術。基本的な所ではGPSは米軍の衛星測位システムを指すが、ロシアのGLONASSやEUが稼動準備中のGalileoと利用可能な衛星測位システムは複数存在するため、今はGPSでは無く総称のGNSS(Global Navigation Satellite System)を使うのが時流らしい。といっても文献ではGPS/GNSSと併記しているパターンが一番多かったので、この記事でも併記にしました。

単独測位と高精度測位

スマートフォンでWi-Fiを切った状態での位置情報の正確さ、地図上で小さな通りだと一本ずれてしまう事は良くあります。受信機単体測位による精度は良くて10メートルとされているので、普段の感覚通りですね。この時、4つ以上の衛星との距離を元に3次元空間上の位置を計算しています。距離は信号伝播時間と光速度の積で求まります。3点からの距離さえわかれば位置は計算できるはずですが、受信機の時計補正のために4台目の衛星を必要としています。

この精度を上げる方法がいくつかあり、DGPSだとメートル単位、RTKだとセンチメートル単位での測位が可能になります。
  • DGPS (Differential GPS) 
  • PPP (Precise Point Positioning) 
  • RTK (Real Time Kinematic GPS)
今回のハッカソンでは海洋大のRTK基準局が使えるとの事で、RTKにしました。ただ、RTKの基準局の有効範囲は15km程度なので、基準局がどこにでもある時代にならないとこの方式は普及しないのでは、とも思ったり。
出展: RTK-GPSの原理と応用

渋谷とIngressとマルチパス

これらの高精度測位が使えれば、常に数十メートルのドリフト(位置のずれ)によって苦戦を強いられている渋谷IngressエージェントもUltra Strikeが有効活用できそうですが、ビルの谷間では上手くいきません。前述の高精度測位手法は、誤差を発生させる要因の1つである反射波(マルチパス)をケアしないからです。ハッカソン会場は秋葉原だったのですが、地上においてRTK方式では一度も位置がFixしませんでした。RTK方式が利用できるのは、空が開けた場所に限定される様です。

ハッカソン参加で得られた物

1年目は二行軌道要素(TLE)について知り、2年目は太陽光パネルの発電量計算モデルと電力買い取りサービス、Modis(地球観測システム)のデータとGIS。今年はGPS/GNSS。普段の仕事では組まない人とプロジェクトをやると新しい知見が得られて面白い。あと、気になってるけど触った事のないライブラリを試すのに良くて、今年はRxJSを投入。毎年何らかの学びがあるので楽しみにしています。

状況です。

関連プロジェクト

どちらも専用ハードで小型化を実現していて凄い。海外だとRTK基準局がそこら中にあるのか、もしくは基準局を自分で立てて運用できるGPSおじさん向けのプロダクトかもしれない。

参考文献

坂井 丈泰: GPS/GNSSの基礎知識
土井下健治, 村本英一, 神田俊彦: 建設機械への ICT 応用
浪江 宏宗: RTK-GPSの原理と応用
安田 明生 et al, 東京湾仮想RTK基準局ネットワーク
このエントリーをはてなブックマークに追加