QUECTEL LC29H GNSS L1 L5 Receiver 使えるのか検討してみた。

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

DSC03477-1.jpg
上の写真では、刻印は見えないが、実際は、刻印があります。
早速、動作テストしなきゃいかん。

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 で接続できる。

上部コマンドの、View の下に色々な View があるので、いくつか、開いてみる。
Sky View、Signal Level、Online Map を開いてみる。

Signal Level View を見ると、QZSS の L1、L5 フラグは見えるが、半透明になっている。
AZI、ELE の値も無い。
これは、衛星をトラッキングできていないとの事の様です。

LC29H_QGNSS-2024-3-5_2.jpg
肝心の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 を組み込まないと無理のようです。

このブログ記事について

このページは、おんちゃんが2024年2月21日 13:09に書いたブログ記事です。

ひとつ前のブログ記事は「SparkFun ICM-20948 Arduino で、 DMP Fusion 9軸 がやっとOKになった。」です。

次のブログ記事は「リニア新幹線開業延期は、本当に残念。」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

カテゴリ

ウェブページ

サイトナビ