QUECTEL LC29H GNSS L1 L5 Receiver 使えるのか検討してみた。
最近見つけたのだが、GNSS L1 L5 Receiver があるみたい。
QUECTEL LC29H
www.waveshare.com/wiki/LC29H(XX)_GPS/RTK_HAT
www.waveshare.com/lc29h-gps-hat
実際に、使えるのか、検討してみた。
紹介記事
幾つか種類があって、LC29H(DA) GPS/RTK HAT が、Rover 向けの様です。
但し、補正信号? RTK が、中国、香港、USAの一部なのか?
注1) DA - RTK : 1[Hz] なのかな?
1[Hz] だと、ROS2 ロボットカーにつかえるのだろうか?
注2) EA- RTK : 10[Hz] みたいだが、EA は、まだ販売していないのか?
下記に、あった。
GNSS RTK 3 Click
GNSS RTK 3 CLICK - LC29HEA
注3) ZED-F9P GPS-RTK も、1 ~ 8 [Hz] みたい。
おんちゃんは、よくわからんが、RTKの補正信号に、
store.shopping.yahoo.co.jp/geosense2/d9cx1.html が使えないもんじゃろうか?
もし、使えれば、かなり安く、cm級の GNSS が実現でくるのじゃが?
注4) BS だと、RTKの基地局になるみたい。ここで得たRTKデータは、いったん、公開サーバー(rtk2go NTRIP Caster server : 有料か無料か気になる) にアップロードして、
DA、EA では、そのサーバーから、RTKデータを取り込めば良いみたい。
ローバーで、インターネットに接続出来るのであれば、この構成もありかも。
2. UM982 と言うのもあるみたい。
2アンテナGNSS受信機Unicore Communications UM982
しかし、こらは、販売箇所で、値段に開きがるいみたい。
とても高いか。
ユニセックス効果差動センサーモジュール,高精度ベースステーション,um982 gnsrtk,互換性,bd982 bd990 bd990
しかし、ドキュメント不足かも
3. 自作 Turtlebot3 ROS2 で、Navigation2 and EKFで、GPS 1[Hz] で使えるものかテストしてみてからか。
早速、foxbot_nav2_stereo_gps.launch.py で試してみた。
現状は、gysfdmaxb_gps.launch.py で、6[hz] で、GPS データをpublishiして、
robot_localization/navsat_transform_node で、subscribe して、その publish : 'odometry/gps' を
robot_localization/ekf_node に渡している。
ただし、ekf_node では、gysfdmaxb は、位置情報としては使い物にならないので、向きだけ使っている。
gysfdmaxb_gps.launch.py で、1[hz] で試してみたが、navigation2 の方では、それらしいエラーは出していない。
ロボットは、完走できた。
もしかしたら、つかえるのかも知れない。
4. デモがあるので、見てみます。
Demo
zip を解凍すると、lc29h_gps_rtk_hat_code/python/rtk_rover/main.py があるので、見てみます。
起動は、
$ python3 main.py landsd-gncaster.realtime.data.gov.hk 2101 T430_32
どうやら、PC上で、rtk caster から、rtk 情報を取り込んで、Serial 通信で、LC29HDA に送っている様です。
注) もし、違っていたら、ごめんぞね。
実際、LC29HDA or LC29HEA をつなげていないので、確かなことは言えないが、
上記 while data: の中で、
data=self.socket.recv(self.buffer) で、internet からRTKを受信して、
self.stream.write(data) で、LC29HDA に送って、
self.nmr.read() で、LC29HDA から、'GNGGA' を受信したら、raw_data をプリントする。
これだったら、main.py で、日本の善意の基地局からのRTK情報を使えば、LC29HDA - RTK ができそうです。
試しに、1個購入して試してみるべきか?
Quectel-精密デュアルバンドlc29h....
注1) 今は、売り切れみたい。
注2) できれば、LC29HEA が良いと思うが。
高精度ライト付きドローンタイドモジュール,飛行制御付き,10hz出力...
おんちゃんは、こちらを注文してみた。
PC から、rtk 情報を、Serial で送れれば、将来的には、
store.shopping.yahoo.co.jp/geosense2/d9cx1.html のデータを、一度 PC で取り込んで、再度、LC29HDA へ送れば、
みちびき L6 を使った、LC29HDA - RTK が実現できそうぞね!!
main.py を少しいじれば、OK のような気がします。
直接、d9cx1 から、LC29HDA へ、Serial で送れれば一番ですが。
5. メモ。
1) YouTube に出ている。
LC29H GNSS module: High precision positioning performance
2) 安いGNSSのブログ。
Alternative gps module
3) Forums の記事が、参考になるかも?
LC29H -DA and BS module configuration and latest firmware with documentation
Serial Terminal から、コマンドを送って、設定するみたい。
----
You can send $PQTMVERNO*58 querying firmware version both on LC29HD and LC29HBS.
I will send you LC29H(BS) EVB User Guide doc via message.
----
しかし、ケツに checksum は、いらないのか? 必要だとお思うが。
この人の構成は、LC29HBS から、RTK を公開サーバーにアップロードして、それを、PCから、Serial で LC29HDA に送る構成みたいだ?
6. 実際に試した。
2024.2.25 に注文して、2024.3.4 に届いたぞね。結構早かった。
商品を確認してみたが、結構小さい。同時に注文したアンテナも、結構小さい。
ボードのサイズと同じくらいぞね。ドローンにも載せられそう。 by nishi 2024.3.4
上の写真では、刻印は見えないが、実際は、刻印があります。
早速、動作テストしなきゃいかん。
1) Windows 11で、Power GPS Trial 2.3.5 があったので、それで試した。
i) 初め、TYPE-C USB で試したが、どうも文字化けする。
回線速度が、115,200 でないので、文字化けする。
Boardの設定
USB SW: not 1
UART SW: 1
Power GPS Trial 2.3.5 で、
Setting -> Auto Scan NMEA Port で、回線速度を検出させて、残念、Type-C USB では、検出できなかった。
port: COM6
Baud rate: 460,800
注) ドライバー、CP210x_USB_TO_UART_.zip をダウンロード&インストールすれば良いのかも。
多分、EA で、ドローン向けなので、ディフォルトの回線速度を上げているのでは?
DA で、ローバー向けであれば、115,200 でもOK か。
ii) 次に、ピンヘッダーに、USB TTL-Serial を繋げて、それ経由で試した。
Boardの設定
USB SW: 1
UART SW: not 1
注) この意味は、分からんが、どうも、石のUART1、UART2 の指定のようか?
Power GPS Trial 2.3.5 で、
Setting -> Auto Scan NMEA Port で、回線速度を検出させて、
port: COM5
Baud rate: 460,800
で、旨くつながった。
暫く、Power GPS Trial 2.3.5 を眺めている。
Skey View には、いくつも捉えた衛星が見える。
一応、第一段階は、OK みたいぞね。 by nishi 2024.3.4
iii) Quecte提供のオリジナルソフトの方も試す。
Software -> QGNSS_V1.8 google をダウンロード& 展開して、QGNSS.exe を実行する。一度、実行すると、
新しいバージョンのダウンロードを案内してくるので、それをダウンロード& 展開して、起動すると、OKでした。
後は、自分で必要な View を開けば使えます。
こちらの方が、インストール不要なので、良いかも。
操作方法は、Quectel_QGNSS_User_Guide_V2.2.pdf を参考にする。
上部コマンドのDevice -> Set Device Infomation で、
Model:LC29HEA
port:
Baud Rate:460800
を指定して、OK で接続できる。
注) Boardの Dip SW の設定。add by nishi 2024.9.13
USB SW: 1
UART SW: 1
上部コマンドの、View の下に色々な View があるので、いくつか、開いてみる。
Sky View、Signal Level、Online Map を開いてみる。
Signal Level View を見ると、QZSS の L1、L5 フラグは見えるが、半透明になっている。
AZI、ELE の値も無い。
これは、衛星をトラッキングできていないとの事の様です。
肝心のQZSS の L1、L5が取れないのは、問題だ。買った意味が無い。
多分、QZSSのフラグが増えたり、減ったりするので、受信自体は出来ているが、電波が弱くて、Tracking Fix していないのだろう。
各フラグの上部に数字が出ている。
The number above the flag represents the C/N0 value.
C/N0 value とは、なんぞや?
GPS/GNSS用語集(時刻同期)
信号強度(SNR , C/N0) の欄に記述がある。
GNSS受信機は、衛星から受信した信号の強度を表す値を出力しています。との事。
Quectel_QGNSS_User_Guide_V2.2.pdf の Signal Levelサンプルと見比べると、おんちゃんの今の Signal Level の値が、全体的に小さい。
木造家屋の2階なら、みちびきの L1、L5 は届きそうだが。屋外にすべきか。
もしかしたら、一緒に買ったアンテナの感度が低いのが、原因かも知れない。
28[db] 版だったのかも知れない。
将来用に、QZSS L1、L5、L6 対応の感度の良いアンテナを購入すべきか?
ジオセンスの技術ブログが、参考になるかも。
みちびきCLAS受信用アンテナのテスト
注) BT-345AJ 38[db] 版が良いのかも。
上記ページの、"Q7衛星の平均受信強度(dBHz)" を見ると、おんちゃんの今の Signal Level で見て取れる値とは、
違うので、なんとも言えないが、やはり、アンテナの性能の問題なのか?
GPS L1/L5 でも、水平精度 <= 1.5[M] なのだろうか? それなら別に、QZSS L1/L5が取れなくても、今は、良いのかも?
Online Map View を見ると、自分の場所が、Map で確認出来ます。
それらしい位置を示しています。
iv) 後は、RTK で実際使えるのかどうか、確認せんといかんぞね。
RTK Rober の所を試せばOKか。
50kM 以内の reference base station を使わないといけないみたい。
残念ながら、無い。
これは、ぶっつけ本番で、 D9CX1 & L6 から取った、RTK信号を与えてみるしかないか?
或いは、さらに LC29HBS & アンテナを買って、それを基地局にして、RTK を渡す方法か。
v) 後、気になった点。
cold start した時に、Fix するまでかなり時間が掛かるみたい。
雨の日は、捉える衛星が、かなり少なくなる。これは、そう言うシステムとして捉えるべきか。
QZSS の L1、L5 フラグは、1個も出ない。やはり、アンテナの性能の問題か?
vi) Ubuntu 22.04 で試す。
Type-C USB
USB SW: 1
UART SW: 1
port: /dev/ttyUSB0
bardrate: 460800
上記で、受信できた。
lc29h_gps_rtk_hat_code/python/rtk_rover/main.py で、port、baudrate を変更して、受信OKでした。
ただし、RTK Fix は、していないと思う。
7. 参考ページ。
1) ジオセンス 技術ブログ
2) QGNSS_V1.10_EN.zip の中には、QGNSSLog.exe 、gpsbabel.exe が含まれている。
QGNSSLog.exeで、ログを取って、gpsbabel.exe で、移動軌跡を観れるのかも知れない。
しかし、Windows11 が、タブレットで無いと、屋外ではできないか。
8. Ros2 Humble で使えるようにしてみました。
電源をOn したままの状態で、データを受信して、パブリッシュしているだけです。
lc29h_gps
ROS2 自作 Turtlebot3 による 草刈りロボット開発。屋外走行 のランチファイルに組み込んで早速テストしてみました。
ekf robot_localization の ekf.yaml で、odom_gps の x,y を有効にしてテストしましたが、やはり、誤差が大きくて、
RTK を組み込まないと無理のようです。