自作 Turtlebot3 自律走行に向けたプログラム。#6

自作 Turtlebot3 自律走行に向けたプログラム。#6
--- Turtlebot3 SBC(Jetson Nano 2G) で、rtabmap_ros で、move_base の ~recovery_behaviors を変更してみる。 ---

自作 Turtlebot3 で、Stereo Camera を使って、rtabmap_ros で、Active SLAM を試していると、突然ロボットがクルクルまわりだす。
どうやら、move_base の、~recovery_behaviors default List の中の、
{name: rotate_recovery, type: rotate_recovery/RotateRecovery}
の指定の所為みたいです。

wiki.ros.org/move_base
~recovery_behaviors (list, default: [{name: conservative_reset, type:
clear_costmap_recovery/ClearCostmapRecovery}, {name: rotate_recovery, type:
rotate_recovery/RotateRecovery}, {name: aggressive_reset, type:
clear_costmap_recovery/ClearCostmapRecovery}]

草刈りロボットの動きとしては、まずいので、このリカバリー指定を外してみました。

1. おんちゃんの、自作Turtlebot3 の rtabamap_ros の起動 launchの move_base の起動の指定は、下記になっています。

2. move_base.launch をチェック。
catkin_ws/src/turtlebot3/turtlebot3_navigation/launch/move_base.launch

3. move_base_params.yaml でパラメータを読み込んでいるみたいなので、
このファイルの中で、~recovery_behaviors を List 形式で指定します。
catkin_ws/src/turtlebot3/turtlebot3_navigation/param/move_base.params.yaml

リカバリー動作に、このくるくる回るのは、必要なのだろうか?
ちょっと、様子見じゃ!!

なんの事はない、wiki.ros.org/rtabmap_ros/Tutorials/StereoOutdoorNavigation
costmap_common_params.yaml: にちゃんと記述がありました。

4. あと、move_base に 障害物の判定方法に、scan(LiDar Sensor) から、Stereo Camera に変更したことを伝えないといけないです。
これも、上のページの local_costmap_params.yaml: に記述があります。

おんちゃんは、下記ファイルに記述しました。
turtlebot3/turtlebot3_navigation/param/costmap_common_params_waffle.yaml


min_obstacle_height 、 max_obstacle_height で、障害物判定の高さ範囲をしてやらないといかんぞね!

topic: planner_cloud が何処かと言うと、
rtabmap_ros/obstacles_detection ノードの、obstacles を remap したものになる。
これが、また、stereo_nodelet -> stereo_image_proc.launch -> rtabmap_ros/point_cloud_xyz -> rtabmap_ros/obstacles_detection と繋いでやっと取れます。
オリジナルのサンプルは、az3_mapping_robot_stereo_nav.launch. になります。

おんちゃんの、自作 Stereo Camera の場合は、下記になっちょります。
uvc_camera の stereo_nodelet.launch で、自作 Stereo Camera の映像を取り込みます。
stereo_nodelet.launch で、取り込めるようになるまで、結構大変じゃった!!

注) stereo_nodelet.launch の プロセス Name が、 /camera_process なので、 以下のノードレットも、それに合わせます。
これが、最初は判らずに、苦労しました。コッホ!!
後、<group></group> に、名前属性をつけたらいかんぞね!!。このまま使うのじゃ。

5. rtabmap_ros with Stereo Camera の時の、障害物判定の高さを制限する方法について。 最近判った事ですが、
rtabmap_ros で障害物の高さを制限するには、

Grid/MaxObstacleHeight=1.0

を使います。by nishi 2022.7.13
部屋の中で、低い天井が障害物と判定されて、rtabmap_ros の 2D Map 上に障害物と表示される場合は、有効です。
例えば、Gazebo で、roslaunch turtlebot3_gazebo turtlebot3_house.launch で隣の部屋への通路が、障害物で埋まってしまう場合。

このブログ記事について

このページは、おんちゃんが2021年12月28日 17:39に書いたブログ記事です。

ひとつ前のブログ記事は「自作 Turtlebot3 自律走行に向けたプログラム。#5」です。

次のブログ記事は「自作 Turtlebot3 自律走行に向けたプログラム。#7」です。

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

カテゴリ

ウェブページ

サイトナビ