cvl-kuasのブログ

大学でのロボット製作に関する作業メモ

ZED-F9P/ZED-F9RとNEO-D9Cで、単独高精度測位システムCLASを安価に簡単に使う方法(その1)

はじめに

大学で農業用ロボットの研究をしています。

屋外で移動ロボットの位置を知るためにGPS/GNSSは便利ですが、cm精度が欲しい場合にはRTKを使う必要が有りました。
RTKは基地局からの補正情報を、LTEWiFi、LoRa等のネットワークを介して受信する必要が有り、手間とコストが掛かるという制限があります。

ところが一昨年ぐらいから、CLASというみちびきが発信している補正情報を使って、単独でcm精度の測位を実現できるようになりました。
これを使えば、安価に簡単に精度の良い位置情報が拾えそうです。
qzss.go.jp

このページでは、これを試した結果を記録します。
まだ短時間しかテストしていませんが、良好に動いています。

準備

まず、必要な機材を用意します。
RTKより安価といっても、まだ5~10万程度の金額は掛かってしまいますので、承知おきください。

今回試験のために用意した主な機材は、次の通りです。

品名 型式 メーカー名 個数 参考価格
Qwiic - ZED-F9P搭載 GPS-RTK-SMAモジュール ZED-F9P SparkFun 1 \54,715-
みちびき CLAS L6受信用 NEO-D9C開発ボード D9CX1 ジオセンス 1 \18,700-
GNSS全周波ヘリックス・アンテナ AH-4236 Hi-Target 1 \15,400-

同時にZED-F9Rでも試して、こちらも順調に動いています。

品名 型式 メーカー名 個数 参考価格
Qwiic - ZED-F9R搭載 GPS-RTK モジュール(SMA) ZED-F9R SparkFun 1 \57,700-

ハードウェアの製作

補正情報をNEO-D9CからZED-F9P/F9Rへ送るために、信号線を接続する必要が有ります。

説明書

ジオセンスのD9CX1使用説明書に概ね必要な情報は書かれていますので、まずこれを参考にしてください。
www.geosense.co.jp

実態配線図

今回は2つの基板を、UARTを使って接続します。
ZED-F9P/F9R、NEO-D9Cともに2つのUARTを持っており、ここでは両方ともTX2/RX2を使用することにします。

ZED-F9PとNEO-D9Cの実態配線図(部品面から見た図)

まず、NEO-D9CのTX2をZED-F9Pに接続します。
つぎに、ZED-F9PのTX2をNEO-D9CのRX2に接続します。こちらは必須ではないため、実験用に入り切りできるようにJPピンを間に介しています。
電源は、ZED-F9Pの3.3VピンからNEO-D9C側のD9CX1ボードのPWRピンへ供給します。
GNDは、どちらの基板も共通です。ここでは3V3ピン近くのGNDとPWRピン近くのGNDを結んでいます。
JST XHポストをZED-F9P側に用意していますが、これはArduPilot等へ接続するための予備ですので、使わない場合には不要です。

ZED-F9PとNEO-D9Cの実装(基板の配置)
ZED-F9PとNEO-D9Cの実装(部品の配置)

ソフトウェアの設定

まず、u-centerというソフトウェアを使ってZED-F9P/F9Rのファームウェアのアップデートを確認して、必要があればアップデートします。
つぎに、ZED-F9P/F9RのRX2/TX2の設定と、NEO-D9CのTX2/RX2の設定をします。

u-centerのインストール

ZED-F9P/F9Rハublox社の製品で、同社の製品の多くはu-centerという無料の公式ソフトウェアで管理することができます。
つぎのリンクから、u-center(ver. 1の方)をダウンロードしてインストールします。
www.u-blox.com

ZED-F9P/F9Rのバージョン確認と更新

こちらも詳細はジオセンスのサイトに丁寧に書かれていますので、こちらをまず参照して熟読します。
www.geosense.co.jp

CLAS対応のファームウェアは、ZED-F9P/F9RともにHPG1.30以降です。
基本的に、最新のファームウェアを適用して問題ないはずです。
ZED-F9P module | u-blox
ZED-F9R module | u-blox

WEBページの中頃にタブが有り、Documentation&resoucesを選択すると、Firmware Updateの項目を見つけることができます。

最新ファームウェアのダウンロード

ZED-F9P/F9RのRX2/TX2の設定

u-centerのメニューバーから[View]を選び、[Generation 9 Configuration View]を開きます。
左の枠から、[Advanced Configuration]を選び、①のように[CFG-UART2] [CFG-UART2INPROT] [CFG-UART2OUTPROT]の項目が見えるように展開します。

次の手順で設定します。
1. CFG-UART2-BAUDRATEを、②から[U4 38400]を選択してUART2を有効にします。ZED-F9Pの3つのメモリ領域 RAM, BBR, Flashのそれぞれに値を書きこむために、③④⑤のボタンを押して、Items to setにスタックしていきます。
2. 同様に、CFG-UART2INPROT-UBXを1に選択して、同様にItems to setヘスタックしていきます。
3. 続けて、CFG-UART2OUTPROT-UBXを1に設定し、他の2つをCFG-UART2OUTPROT-NMEA、CFG-UART2OUTPROT-RTCM3Xを0にします。
4. ⑥番の[Send config changes]を押して、設定値をZED-F9Pへ送ります。

Generation 9 Configuration ViewによるZED-F9PのRX2/TX2の設定

この図の場合では、CFG-UART2OUTPUT-UBXを1に、CFG-UART2OUTPUT-RTCM3Xを0にしています。

NEO-D9CのTX2/RX2の設定

同様に、次の手順で設定します。
1. CFG-UART2-BAUDRATEを、②から[U4 38400]を選択してUART2を有効にします。ZED-F9Pの3つのメモリ領域 RAM, BBR, Flashのそれぞれに値を書きこむために、③④⑤のボタンを押して、Items to setにスタックしていきます。
2. 同様に、CFG-UART2INPROT-UBXを1に選択して、同様にItems to setヘスタックしていきます。
3. 続けて、CFG-UART2OUTPROT-UBXを1に設定します。
4. ⑥番の[Send config changes]を押して、設定値をNEO-D9Cへ送ります。

Generation 9 Configuration ViewによるNEO-D9CのTX2/RX2の設定

動作確認

周囲に高い障害物が無くて、見開きの良い場所を選んでGPSアンテナを設置します。とくに南の空に障害物が無い場所を選びます。

CLASでFIXできるかどうかの動作確認のための実験環境例
実験時のGNSSアンテナの環境

ZED-F9P/F9RをUSB-CケーブルでPCと接続して、u-centerを開いて5分ほど待ちます。とくにu-centerに難しい設定をする必要はありません。図のようなウィンドウが表示されていない場合、Viewの設定だけ確認してください。

U-CENTERでの接続確認

Fix Modeが3D/DGNSS/FIXEDになったら、正常に動作しています。
Fix Modeが3D/Floatや3D/DGNSS/Floatのままの場合は、おそらく機器は正常に動作していますが、電波の状況があまりよくない可能性が高いです。もう少し障害物が少ない場所へ移動してみてください。また、L6対応のGPSアンテナを使用しているかどうかを再確認してください。
Fix Modeがずっと3Dのままの場合は、正しく動作していません。ハードウェアとZED-F9P/F9R・NEO-D9C両方の設定を再度確認してみてください。