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さまさま。
さて改造といっても、剥がして
貼るだけ
剥がしスキルが低すぎて、PPSのランドが剥がれてしまったのはそのうち適当に配線しよう…
UDR使えるか試す
散々M5Stackがどうこう言っていたのにGPS部分しか持っていないのでまずはUARTをPCへ接続してu-centerで様子を見ます。Navigation Expert 5を確認すると最初からADR*1/UDRが有効になってました。
次に自動車へ設置。センサーで自動車の挙動を推定するので車両にしっかり固定しろよな!ということなのでとりあえずテープで止めました。
このままGNSS信号が受信できている状態でしばらく走っていると、センサーのキャリブレーションが終わってUDRが使えるようになるはず…とドキュメントに書いていました。 3D+DGNSSの状態で15分くらい車を走らせていると、キャリブレーションが完了したようです。
あとはこのままGNSS信号が受信できない場所へ行けばUDRの動作が確認できるはず!!!ということで近場のトンネルへ出かけてみたところ、UDRの動作が確認できました。
出口付近は推定結果がちょっと怪しめ。距離が長くなると誤差が累積してしまうので仕方ないといえば仕方ない。固定場所とかの条件にもよるのかもしれない。
ちなみに、UDR中のNMEAメッセージを見ると
$GNGLL,3438.68839,N,13525.04534,E,181743.00,A,E*7D
ちゃんとModeがEになっているのでちゃんと測位情報がDRで計算されてます。