ROS2 自作 Turtlebot3(foxbot_core3_r2) で、Rtabmap_ros with Stereo rgbdを試す。#2
------ Jetson Nano 2G の SDCHが壊れたので、新しいカードへ移したら、問題がでた。 --------
ROS2 自作 Turtlebot3(foxbot_core3_r2) で、Rtabmap_ros with Stereo rgbdを試す。 の続きです。
1. 環境
1) SBC
Jetson Nano 2G
Jetpack 4.x and ubuntu 20.04
ROS2: Galactic
2) Remote PC
Ubuntu Mate 20.04
ROS2:Galactic
3) lanuch ファイル。
rtabmap_ros_my/launch/ratbmap_stero_rgbd.launch.py
Jetson Nano 2G の Micro SDHC を新しくして、同じ様に、 rtabmap-ros-with-stereo-rgbd が動作するようにしたのですが、
何故か、リモートPC から、/cloudXYZ(rtabmap_ros/point_cloud_xyz /cloud) が、以前のように安定して受信出来なくなりました。
$ ros2 topic hz /cloudXYZ
で、最初の30件から40件くらいは、15[hz] で受信できるのに、その後が、殆ど受信出来なくなってしまいました。
おまけに、 /disparity (stereo_image_proc.launch.pyの出力) に至っては、Remote PC からまるっきり受信できません。
どちらも、local の SBC(Jetson Nano 2G) 上では、問題なく受信できています。どちらも、
15[hz] 位、出ています。
Jetson Nano の、Ubuntu 20.04 のパッケージ不良のチェックや、 ros-galactic-* パッケージの再インストール試しましたが、
一向に改善しません。
USB Single Stero Camera の /left/image、/right/image、/left/camera_info、/right/camera_info
や
stereo_image_proc.launch.py の /left/image_rect_color、/right/image_rect_color は、Remote PCで、問題なく受信出来ます。
ROS2 galactic の、remote 通信の処理が何処か変わったのか?
2. なんとなく原因がわかりました。
同時期に、SBC(Jetson Nano) の microSDHC が壊れて、新しいメディアに交換したのと、WiMax に移行して、WiFi Router が変わったのが同時に生じたので、
原因の特定に苦労しました。
どうやら、WiMax の WiFi Router (L12) に変えた所為で、local の WiFi network の品質が落ちた気がします。
試しとして、rtabmap_ros/point_cloud_xyz.cpp の qos の reliability を default:0 から、Reliable:1 に変えてみました。
launch.py ファイルで、Parameter を指定してみる。
Parameter が正しく渡っているのか、Log表示をいれてみます。
rtabmap_ros/src/nodelets/point_cloud_xyz.cpp
PC 上で、rtabmap_ros を Source build して、試してみました。
ソース版は、Parameter を取り込んでいるようです。
Jetson Nano 側は、
$ ros2 topic hz /cloudXYZ
で、続けて、でてきました。
逆に、Jetson Nano 側 は、Binary Package 版ですが、Parameter 変えて試してみましたが、PC 側では、上手く受信できません。
後は、PC側も Binary Package 版 にして、 ためしてみないといかんぞね。
Jetson Nano 2G 上で、rtabmap、rtabmap_ros を、ソースビルドするのは大変なので、もう Binary Package 版を使おうと考えちょりましたが、
また、Source Build 版にしないといかんのか?
Binary Package 版を使って、本来の目的である、草刈りロボットのコントロール部分の作成に専念したいと思っちょりましたが、残念。
3. その後。
1) WiMAX Router L12 のWiFi 2.4 GHz の設定をいじってみました。
WiFi設定(2.4GHz) -> 2.4GHz設定 -> デュアルチャネル機能 : ON
2) ついでに、WiFi dongle も、近くのヤマダ電機で、
ELECOM WDC-300SU2SWH 2.4 Ghz 300Mbps 購入して
、交換しました。
但し、これは、挿しただけでは、認識しません。
Ubuntu 20.04でUSBのWiFiアダプタ(WDC-300SU2SBK)を認識させる方法 を参考に、
$ sudo modprobe rtl8192cu
$ echo "056E 4009" | sudo tee /sys/bus/usb/drivers/rtl8192cu/new_id
$ echo "rtl8192cu" | sudo tee -a /etc/modules
起動時の、自動設定は、
/etc/rc.local へ記述します。
初期は、ファイルが無いので、作成します。
$ sudo chmod 755 /etc/rc.local
注) ドライバーが、300Mbps に未対応なのか、Ubuntu Desktop の WiFi のプロパティーでは、
300Mbps とは、表示されません。
これで、今のところは、Remote PC で、
$ ros2 topic hz /cloudXYZ
で、連続受信できるようになりました。
4. foxbot_core3_r2.ino の改造。
ESP32 - micro-ROS Agent ( Jetson Nano 2G) 間の通信が、良く切れるのでその対応をしました。
詳しくは、ROS2 で、ESP32(Arduino) を使う。 "7. 改造 2023.2.28"
を参照。
上記改造で、ESP32 - micro-ROS Agent 間通信が切れても、リカバリーできるようになったので、随分、
Rtabmap_ros with Stereo rgbd の動作が安定しました。 これで、安心して、走行テストができるぞね。by nishi 2023.3.1
DWB Local Planner で確認出来ているので、次は、 Teb Local Planner でも確認しないといかんぞね。
5. Arducam Tof Camera と言うの見つけた。by nishi 2023.3.1
ROS2 対応で、Jetson Nano でも使えるとの事ぞね。
ROS With Arducam ToF Camera - for Jetson
感想を書かれた方もおるぞね。
Auducam ToF カメラ
6. おんちゃんの、私的なリンク。
上の、Arducam Tof Camera の TOF データは、下記プログラムで、視覚化できるのだろうか?
RGBD Depth Camera Data Format-Storage Read-Visualization
RGBD データとして取れれば、rtabmap_ros でもつかえそうだが?
少なくとも、PointClouds データなので、navigation2 の costmap voxel_layer 計算には、使えるのだろう。