tmytのらくがき

個人の日記レベルです

NEO-M8UでUDRしてみたい!

UDR(Untethered Dead Reckoning)というのがあります。GNSSが受信できない状態で自車位置を推定する技術のうち、車両信号を利用しないものをこう呼ぶそうです。

u-bloxというスイスのメーカーからリリースされているNEO-M8シリーズのうち、NEO-M8UというモジュールがこのUDRをサポートしています。

NEO-M8Uは、3軸ジャイロと3軸加速度センサを内蔵していてセンサを通して車両の挙動を推定してくれます。なんかしらの計算結果を位置情報に反映してNMEA形式で推定結果を出力してくれるのでとても賢くて使いやすいんじゃないかと思ってこれを使います。

改造する

さっそくNEO-M8Uを使えるようにしたいと思います。まず、M5StackのGPSモジュールを用意します。このGPSモジュールはNEO-M8Nというモジュールが使用されています。似たような名前だけどこっちはUDRできないやつ。なんでM5StackのGPSモジュールを用意したかというと

  • M5Stackが使いたかった
  • M8Uの製品情報に "Compatible with all modules of the NEO family" と書いてあるのでNEOシリーズが搭載されているやつを用意した

という理由です。先に上げた通り、M8UはNEOシリーズの全モジュールと完全な互換性があるそうです。つまり、剥がして貼りなおせば使えるはず。

改造に必要なGPSモジュールとM8UはDigi-keyで用意しました。3日くらいで届いたのでDigi-keyさまさま。

さて改造といっても、剥がして

f:id:tmyt:20200202055408p:plain

貼るだけ

f:id:tmyt:20200202055436p:plain

剥がしスキルが低すぎて、PPSのランドが剥がれてしまったのはそのうち適当に配線しよう…

UDR使えるか試す

散々M5Stackがどうこう言っていたのにGPS部分しか持っていないのでまずはUARTをPCへ接続してu-centerで様子を見ます。Navigation Expert 5を確認すると最初からADR*1/UDRが有効になってました。

f:id:tmyt:20200202052710p:plain

次に自動車へ設置。センサーで自動車の挙動を推定するので車両にしっかり固定しろよな!ということなのでとりあえずテープで止めました。

f:id:tmyt:20200202055546p:plain

このままGNSS信号が受信できている状態でしばらく走っていると、センサーのキャリブレーションが終わってUDRが使えるようになるはず…とドキュメントに書いていました。 3D+DGNSSの状態で15分くらい車を走らせていると、キャリブレーションが完了したようです。

f:id:tmyt:20200202055612p:plain

あとはこのままGNSS信号が受信できない場所へ行けばUDRの動作が確認できるはず!!!ということで近場のトンネルへ出かけてみたところ、UDRの動作が確認できました。

f:id:tmyt:20200202055731p:plain

出口付近は推定結果がちょっと怪しめ。距離が長くなると誤差が累積してしまうので仕方ないといえば仕方ない。固定場所とかの条件にもよるのかもしれない。

f:id:tmyt:20200202055753p:plain

ちなみに、UDR中のNMEAメッセージを見ると

$GNGLL,3438.68839,N,13525.04534,E,181743.00,A,E*7D

ちゃんとModeがEになっているのでちゃんと測位情報がDRで計算されてます。

まとめ

  • UDRができました
  • M8Uは仕組み上車両に固定しないといけないからマイコンで遊ぶ用にはなかなかリリースしてもらえなくて寂しい
  • キャリブレーションが割と時間かかるのが難点
  • UDRの性能は割と悪くないと思うけど長いトンネルとかはちょっと苦しそう

*1:車両と電気的接続をするやつ。GNSS以外を使用して自車位置推定をする機能ってことでひとまとめになってる