Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GPSモジュールを触って学ぶ、衛星測位技術の概要 / Mobility Night #1

GPSモジュールを触って学ぶ、衛星測位技術の概要 / Mobility Night #1

2024/12/05 Mobility Night #1 - GPS・位置情報 - 発表資料
https://mobility-night.connpass.com/event/334400/

Shinya Hiruta

December 05, 2024
Tweet

More Decks by Shinya Hiruta

Other Decks in Technology

Transcript

  1. 自己紹介 蛭田 慎也(hirutas) チャリチャリ株式会社 VP of Engineering 開発チームを統括しています • 略歴

    ◦ DeNA(2013) → ソウゾウ(2017) ー転籍→ neuet(2020)→チャリチャリ(2024) 2 @hiru_ecn
  2. GPS・位置情報 • 位置情報の測位技術 ◦ ├ 衛星測位システム(GNSS) ◦ │ ├ GPS(アメリカ) ◦

    │ ├ GLONASS(ロシア) ◦ │ ├ Galileo(EU) ◦ │ ├ みちび (日本) ◦ │ ⋮ ◦ ├ Wi-fi測位 ◦ ├ 携帯電話基地局 ◦ ├ Bluetooth測位 ◦ ⋮ 様々な技術の中の 一つにす ない
  3. よくある誤解 ✕ 受信機と衛星 相互に通信する ✕ 受信機の位置を衛星 知らせる ✕ 受信機の位置を衛星 追跡する

    ✕ 1つの衛星の電波で位置 分 る ✕ 「みちび 」 あれば、数cmレベル   の精度 す に実現する ◯ 衛星 ら飛んで る電波を   受信機で受信する ◯ 衛星は、自身の軌道や電波を   発信した時刻を放送するだ ◯ 4つ以上の衛星 らの電波 必要 ◯ 位置の誤差を数cmまで抑える   ためには、GPS(GNSS)とは   異なる原理や手法を組み合わせる   必要 ある
  4. 今日のテーマ • GPSモジュールを直接触ってみる ◦ 分 ること ▪ 実際のモジュール ら、どのようなデータ形式で位置情報 通信

    されて るの ▪ 生のGPS(GNSS)データ どの程度の精度なの ▪ 位置情報サービスを実装する上で気をつ るべ ポイント
  5. 結果 $GPTXT,01,01,02,u-blox ag - www.u-blox.com*50 $GPTXT,01,01,02,HW UBX-G70xx 00070000 *77 $GPTXT,01,01,02,ROM

    CORE 1.00 (59842) Jun 27 2012 17:43:52*59 $GPTXT,01,01,02,PROTVER 14.00*1E $GPTXT,01,01,02,ANTSUPERV=AC SD PDoS SR*20 $GPTXT,01,01,02,ANTSTATUS=OK*3B $GPTXT,01,01,02,LLC FFFFFFFF-FFFFFFED-FFFFFFFF-FFFFFFFF-FFFFFFF9*50 $GPRMC,,V,,,,,,,,,,N*53 $GPVTG,,,,,,,,,N*30 $GPGGA,,,,,,0,00,99.99,,,,,,*48 $GPGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*30 $GPGLL,,,,,,V,N*64 ⋮ (秒間1回の頻度で、無限に出力され続 る)
  6. 解説 $GPTXT,01,01,02,u-blox ag - www.u-blox.com*50 $GPTXT,01,01,02,HW UBX-G70xx 00070000 *77 $GPTXT,01,01,02,ROM

    CORE 1.00 (59842) Jun 27 2012 17:43:52*59 $GPTXT,01,01,02,PROTVER 14.00*1E $GPTXT,01,01,02,ANTSUPERV=AC SD PDoS SR*20 $GPTXT,01,01,02,ANTSTATUS=OK*3B $GPTXT,01,01,02,LLC FFFFFFFF-FFFFFFED-FFFFFFFF-FFFFFFFF-FFFFFFF9*50 $GPRMC,,V,,,,,,,,,,N*53 $GPVTG,,,,,,,,,N*30 $GPGGA,,,,,,0,00,99.99,,,,,,*48 $GPGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*30 $GPGLL,,,,,,V,N*64 • NMEAフォーマット ◦ 米国海洋電子機器協会(National Marine Electronics Association) 定義 • 様々な情報を持った「センテンス」で構成
  7. 解説 $GPTXT,01,01,02,u-blox ag - www.u-blox.com*50 $GPTXT,01,01,02,HW UBX-G70xx 00070000 *77 $GPTXT,01,01,02,ROM

    CORE 1.00 (59842) Jun 27 2012 17:43:52*59 $GPTXT,01,01,02,PROTVER 14.00*1E $GPTXT,01,01,02,ANTSUPERV=AC SD PDoS SR*20 $GPTXT,01,01,02,ANTSTATUS=OK*3B $GPTXT,01,01,02,LLC FFFFFFFF-FFFFFFED-FFFFFFFF-FFFFFFFF-FFFFFFF9*50 $GPRMC,,V,,,,,,,,,,N*53 $GPVTG,,,,,,,,,N*30 $GPGGA,,,,,,0,00,99.99,,,,,,*48 $GPGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*30 $GPGLL,,,,,,V,N*64 • センテンスは $ で始まり、改行(CR+LF)まで ◦ $XXYYY の意味 ▪ XX: トーカーID(GP: GPS) ▪ YYY: センテンスの種類 • データはカンマ区切り • 例:使用しているモジュール 分 る ◦ u-blox 7
  8. 解説 $GPTXT,01,01,02,u-blox ag - www.u-blox.com*50 $GPTXT,01,01,02,HW UBX-G70xx 00070000 *77 $GPTXT,01,01,02,ROM

    CORE 1.00 (59842) Jun 27 2012 17:43:52*59 $GPTXT,01,01,02,PROTVER 14.00*1E $GPTXT,01,01,02,ANTSUPERV=AC SD PDoS SR*20 $GPTXT,01,01,02,ANTSTATUS=OK*3B $GPTXT,01,01,02,LLC FFFFFFFF-FFFFFFED-FFFFFFFF-FFFFFFFF-FFFFFFF9*50 $GPRMC,,V,,,,,,,,,,N*53 $GPVTG,,,,,,,,,N*30 $GPGGA,,,,,,0,00,99.99,,,,,,*48 $GPGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*30 $GPGLL,,,,,,V,N*64 • 主要なセンテンス ◦ RMC ▪ 最小限のナビゲーション情報 ◦ GGA ▪ 位置、時刻、Fixに関するデータ ※ この例だと起動直後で位置 取得で ていない状態
  9. 走行したルート • スタート ◦ 2k540 駐輪場 • ゴール ◦ buychari

    AKIBA ※道路標識、実際の通行規制に従って走行しています
  10. 実際のデータ $GPRMC,061200.00,A,3542.16952,N,13946.42195,E,0.168,,241124,,,A*71 $GPVTG,,T,,M,0.168,N,0.311,K,A*2F $GPGGA,061200.00,3542.16952,N,13946.42195,E,1,07,1.16,29.2,M,39.4,M,,*64 $GPGSA,A,3,28,26,32,31,29,25,16,,,,,,1.98,1.16,1.60*05 $GPGSV,3,1,11,03,07,285,,04,11,322,,16,33,258,43,18,11,120,18*7B $GPGSV,3,2,11,25,15,060,20,26,61,292,11,27,07,205,,28,70,069,40*76 $GPGSV,3,3,11,29,42,057,42,31,64,336,26,32,32,176,41*47 $GPGLL,3542.16952,N,13946.42195,E,061200.00,A,A*67 $GPRMC,061201.00,A,3542.16968,N,13946.42217,E,0.112,,241124,,,A*7D

    $GPVTG,,T,,M,0.112,N,0.208,K,A*2B $GPGGA,061201.00,3542.16968,N,13946.42217,E,1,07,1.16,28.4,M,39.4,M,,*62 $GPGSA,A,3,28,26,32,31,29,25,16,,,,,,1.98,1.16,1.60*05 $GPGSV,3,1,11,03,07,285,23,04,11,322,,16,33,258,36,18,11,120,21*72 $GPGSV,3,2,11,25,15,060,18,26,61,292,11,27,07,205,,28,70,069,41*7C $GPGSV,3,3,11,29,42,057,41,31,64,336,27,32,32,176,37*44 $GPGLL,3542.16968,N,13946.42217,E,061201.00,A,A*66 ⋮ (一部のみ抜粋)
  11. 実際のデータ $GPRMC,061200.00,A,3542.16952,N,13946.42195,E,0.168,,241124,,,A*71 $GPVTG,,T,,M,0.168,N,0.311,K,A*2F $GPGGA,061200.00,3542.16952,N,13946.42195,E,1,07,1.16,29.2,M,39.4,M,,*64 $GPGSA,A,3,28,26,32,31,29,25,16,,,,,,1.98,1.16,1.60*05 $GPGSV,3,1,11,03,07,285,,04,11,322,,16,33,258,43,18,11,120,18*7B $GPGSV,3,2,11,25,15,060,20,26,61,292,11,27,07,205,,28,70,069,40*76 $GPGSV,3,3,11,29,42,057,42,31,64,336,26,32,32,176,41*47 $GPGLL,3542.16952,N,13946.42195,E,061200.00,A,A*67 $GPRMC,061201.00,A,3542.16968,N,13946.42217,E,0.112,,241124,,,A*7D

    $GPVTG,,T,,M,0.112,N,0.208,K,A*2B $GPGGA,061201.00,3542.16968,N,13946.42217,E,1,07,1.16,28.4,M,39.4,M,,*62 $GPGSA,A,3,28,26,32,31,29,25,16,,,,,,1.98,1.16,1.60*05 $GPGSV,3,1,11,03,07,285,23,04,11,322,,16,33,258,36,18,11,120,21*72 $GPGSV,3,2,11,25,15,060,18,26,61,292,11,27,07,205,,28,70,069,41*7C $GPGSV,3,3,11,29,42,057,41,31,64,336,27,32,32,176,37*44 $GPGLL,3542.16968,N,13946.42217,E,061201.00,A,A*66 • 主に以下の6種類のセンテンス 出力され続 た ◦ RMC, VTG, GGA, GSA, GSV, GLL
  12. 実際のデータ $GPRMC,061200.00,A,3542.16952,N,13946.42195,E,0.168,,241124,,,A*71 $GPVTG,,T,,M,0.168,N,0.311,K,A*2F $GPGGA,061200.00,3542.16952,N,13946.42195,E,1,07,1.16,29.2,M,39.4,M,,*64 $GPGSA,A,3,28,26,32,31,29,25,16,,,,,,1.98,1.16,1.60*05 $GPGSV,3,1,11,03,07,285,,04,11,322,,16,33,258,43,18,11,120,18*7B $GPGSV,3,2,11,25,15,060,20,26,61,292,11,27,07,205,,28,70,069,40*76 $GPGSV,3,3,11,29,42,057,42,31,64,336,26,32,32,176,41*47 $GPGLL,3542.16952,N,13946.42195,E,061200.00,A,A*67 $GPRMC,061201.00,A,3542.16968,N,13946.42217,E,0.112,,241124,,,A*7D

    $GPVTG,,T,,M,0.112,N,0.208,K,A*2B $GPGGA,061201.00,3542.16968,N,13946.42217,E,1,07,1.16,28.4,M,39.4,M,,*62 $GPGSA,A,3,28,26,32,31,29,25,16,,,,,,1.98,1.16,1.60*05 $GPGSV,3,1,11,03,07,285,23,04,11,322,,16,33,258,36,18,11,120,21*72 $GPGSV,3,2,11,25,15,060,18,26,61,292,11,27,07,205,,28,70,069,41*7C $GPGSV,3,3,11,29,42,057,41,31,64,336,27,32,32,176,37*44 $GPGLL,3542.16968,N,13946.42217,E,061201.00,A,A*66 • GGA センテンス ら時刻、緯度経度を取得 ◦ 緯度経度は ddmm.mmmmmmm(度・分)なので注意 ▪ 3542.16952 → 35度42.16952分 → 35.70282533度
  13. 生のGPSログをプロット • 屋内では全 位置 取得 で ていない ◦ 出発ポートはJR高架下で空 全

    見えない場所にある • 道 ら大 逸れた座標 になってしまっている ◦ JRの高架のす 隣の道を通っ た箇所 ズレている ◦ 到着ポートは軒下だった 、 静止しているのに大 位置 ズレてしまっている
  14. まとめ • GPS(GNSS)単体では、数m〜数十mほどの誤差 発生する • 実際のアプリケーションに いてはこの誤差をどのように補正してい 求められる ◦ SBAS、RTKなどの補正技術

    ▪ メリット • 1メートル以下の精度を得られる ▪ デメリット • 基本的には高価な専用端末 必要 ◦ スマートフォン ら位置情報を取得する ▪ メリット • 屋内測位、携帯基地局などと組み合わせた精度の高い位置情報 、安いコストで手軽に利用で る ▪ デメリット • ロジックはスマートフォンのOS任せでブラックボックス • 精度は端末の性能やOS実装に大 依存してしまう • OSのアップデート等で利用可能なAPI 制約されるリスク ◦ 後処理での工夫 ▪ マップマッチングなど