ROS2 Jazzy で、50x50[M] の static map を作って、使う。#2
ROS2 Jazzy で、50x50[M] の static map を作って、使う。の続きです。
こちらが、本題なので、先こちらを記述します。
前回は、50x50[M] の static map を作成したので、今回は、それを、実際 ROS2 で使ってみる話です。
50x50[M] の static map の 巨大サイズゆえの問題が顕在化しました。
従来の手順で、SBC で、Map をロードして、リモート PC の Rviz2 で表示すると、Map が受信できない状態になりました。
WiFi Lan のトラフィックが、対応していないのが原因みたいです。
対策は、幾つかあるみたいですが、今回は、SBC と リモート PC で、それぞれがローカルの、 pgm、yaml をロードして使う方法を試してみました。
方法 1.
今使っている、Static Map のロード launch rtabmap_ros_my localization.launch.py を修正して、topic を、/map 、/local_map の指定ができる様にする。
つまり、SBC と リモート PC で、 map server を、2 本立てて、それぞれ別の topic 名 で、publish させる。
一応、この方法も、OK でした。
方法 2.
リモート PC 用に、同じ、map ファイルをロードして、/local_map の topic 名で、map を publish する、C++ node( local_map_publisher ) を作って、これを使う。
こちらの方が、余分な node を起動しなくて良いと思うので、こちらを使ってみました。
一応、実機 自作 Turtlebot3(foxbot_core3_r2) を使って、動作かくにんしてみました。
SBC 側で、実際の node を全て起動して、その中には、 50x50[M] Static Map のロードも含みます。
そのあと、リモート PC でも、今回作った local_map_publisher を起動して、こちらは、リモート PC 上の local の 50x50[M] map ファイルをロードします。
続けて、Rviz2 の ros2 launch nav2_bringup rviz_launch.py を起動して、
Rviz2 上で、多分、status:warn になっている map の topic を /map -> /local_map
に変えれば、50x50[M] の Static Map が出てくると思います。
リモート PC のターミナルから、teleop_keyboard で、ロボットを少し動かしてみましたが、
なんとか動くみたいです。
ただ、実際に即した動作テストは、まだなので、これからですが。
リモート PC から、teleop_keyboard で、ロボットを動かしている時の Lan のトラフィックを、Ubuntu 24.04 のシステムモニターでチェックしました。
15-20[MB] の様ですが、
これは、たぶん Depth camera を point clouds2 に変換して、Rviz2 で障害物のリアルタイム表示している分だと思います。
たぶん、使えるとおもいます。あとは、Planner で、広域経路計画ができるか確認して、この件は、終わりにします。
あとで、github にでも、上げてみます。
ほとんど、Chat GPT に、C++ コードを書いてもらいましたが、
それをそのまま使ったら、起動から、/local_map の publish 終了まで、40[秒] 以上かかったので、
自分で、すこし修正しました。
そうしたら、起動から publish 完了まで、一瞬で完了するようになりました。
@tosa-no-onchan/local_map_publisher