ROS2 で、Rtabmap_ros を試す。#2

ROS2 で、Rtabmap_ros を試す。#2
--- ROS2 & Rtabmap_ros で、Gazbo Turtlebot3 with Scan (Acitve SLAM も可) ---
Foxy devel Rtabmap_ros を参考に、rtabmap_ros で、ROS2 Gazebo Turtlebot3 with Scanを、動かしてみました。
PC 環境:
Ubuntu Mate 20.04
ROS2 :foxy

1. 手順。
Example with Turtlebot3 を参考にすればできます。
$ ros2 launch turtlebot3_gazebo turtlebot3_house.launch.py

$ ros2 launch rtabmap_ros rtabmap.launch.py \
visual_odometry:=false \
frame_id:=base_footprint \
subscribe_scan:=true depth:=false \
approx_sync:=true \
odom_topic:=/odom \
scan_topic:=/scan \
qos:=2 \
args:="-d --RGBD/NeighborLinkRefining true --Reg/Strategy 1" \
use_sim_time:=true \
rviz:=true

Teleop keyboard を起動して操作。
$ ros2 run turtlebot3_teleop teleop_keyboard

ROS2 で navigation2 の Active SLAM を試す。

ROS2 で navigation2 の Active SLAM を試す。
--- ROS2 Gazbo Turtlebot3 で、Mapping しながら、 Navigationでロボットを動かす。 ---

(SLAM) Navigating While Mapping を参考に、ROS2 Gazebo Turtlebot3 を、動かしてみました。
PC 環境:
Ubuntu Mate 20.04
ROS2 :foxy

1. Gazebo turtlebot3_house Waffle の準備。

$ ros2 launch turtlebot3_gazebo turtlebot3_house.launch.py
で、Gazebo House が起動出来ますが、ロボットの起点がちょっと、ROS と比べて変なので、修正します。
~/colcon_ws/src/turtlebot3_simulations/turtlebot3_gazebo/worlds/turtlebot3_houses/waffle.model


注)ロボットの pose(位置と向き) は、tf base_footprint が、 tf odom の pose からの距離と向きの差で決まる。ので、tf odom を起点とした値を使います。
tf odom の x 軸は、ロボットの前、後、 y軸は、ロボットの左右になっていて、Rviz2 の開始時の画面が、90[度] 左に回転しているのがややこしいが、
Rviz2 の開始時の画面を、90[度] 右に回転すれば、理解しやすい。
tf base_footprint は、tf odom から、後ろに 3[m] (x軸で、-3.0) 、左に 1.0[m] (y軸で、+1.0) になります。これが、起動時のロボットの位置になります。
z軸=0.01 は、ちょっと浮かせているのかな? 向きは、変わらず。

tf odom は、tf map からの距離と、向が与えられる。
tf map は、 Map原点(左、下が 0,0) からの距離が、Map データ上から与えられる。
注)全ては、MAP 情報の定義で自由に決まる。
Turtlebot3 Gazebo の MAP 定義が上記のようになっているだけです。

2. (SLAM) Navigating While Mapping の 4- Getting Started Simplification を参考に、

$ ros2 launch nav2_bringup tb3_simulation_launch.py slam:=True
すれば、Gazbo も一緒に起動できるようですが、
なぜか、おんちゃんが試すと、Gazebo が起動途中でだんまりになります。

ROS2 で、Rtabmap_ros を試す。

ROS2 で、 Rtabmap_ros を試す。

rtabmap_ros/ros2
Ubuntu Mate 20.04 で、Rtabmap_ros のソースビルドが出来たので、
次は、Jetson Nano 2G で、Rtabmap_ros のソースビルドを行って見たのですが、
これがなかなかうまく行かない。

84[%] 辺りまで進んで、それからずっと進まない。
途中で、なんやら変なエラー表示が出てくる。


最初は、swapfile のサイズを 5G から、思い切って 10G にしてみる。
結構、ビルドの進捗が早くなった、がこれでも、状況は、85[%] 辺りから、変わらない。

JetsonNano 2G のメディアの不良か? と思って、ネットでパーテイションチェックの方法を検索したが、出てこない。
ものは試しで、別の Ubuntu PC に、SDカードRead/Write で、JetsonNano 2G の SDカードを、挿すと、
/dev/sdb1 に、JetsonNano 2G の '/' が出てくるので、
これを、 fsck で修復することにしました。

Ubuntu 20.04 PC で、JetsonNano 2G の SDHCカードを、外付けドライブで、挿す

$ sudo umount /dev/sdb1
$ sudo badblocks -s -o ./badblocks-text.txt /dev/sdb1

$ sudo fsck -v[c]f /dev/sdb1
-c: badblocks を先に実行して、不良ブロックを、使用不可にする。

これで、OK か?

ROS2 で、ESP32(Arduino) を使う。

ROS2 で、ESP32(Arduino) を使う。
--- Turtlebot3 の自作 を、 ROS2 に移植する。 ---

1. 環境。
PC
Ubuntu Mate 20.04
ros2: foxy
SBC
Jetson Nano 2G
JetsPack 4.x and Ubuntu 20.04
ros2: foxy


2. ros2arduino を試す。
どうやら、こちらは、開発が止まっているようです。
ESP32 にサンプルを入れて試してみましたが、うまく行かないので、止めました。
ESP32 Serial は、まだ使えないままの様です。

上記をテストするのに、eProsima Micro XRCE-DDS が必要な様で、試しにインストールしてみましたが、
次の micor-ROS を試す段階で、/usr/local/lib/libfastrtps.so /usr/local/lib/libfastrtps.so.2.8.0 が競合するようで、
削除する事にしましたが、あいにく make uninstall が無いので、削除するのが大変でした。
$ sudo make install すると、Micro-XRCE-DDS-Agent/build/install_manifest.txt にインスしたファイル一覧があるので、
Shell で、これを読みこんで、削除しました。

uninstall_from_files.sh


$ sudo sh ./uninstall_from_files.sh
$ sudo ldconfig /usr/local/lib

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

自作 Turtlebot3 自律走行に向けたプログラム。#15
--- 自作 Turtlebot3 (foxbot_core3) で、屋外での走行 ---

1. 屋外走行に向けて。
いま、おんちゃんの頭の中には、屋外で、自作 Turtlebot3(foxbot_core3) を走らせる為のハード機器の構成をどうするかで、
一杯ぞね。
ロボット自体のコントロールは、C++プログラムから行うので、自律走行になりますが、せめて、ロボットの Start、Stop、
Go back home くらいは、PC タブレットから、WiFi 経由で ロボットに指示したいです。

Windows PC タブレットを安く手に入れて、其れに Ubuntu 20.04 をインストールして、今、部屋で PCに載せている部分を、
それに入れられれば、一番簡単そうですが。
なかなか、安い Windows PC タブレット だと、荷が重いかも?
最終的には、ロボットカーの方に、全部乗っけて、Start/Stop の操作コマンドだけを送る構成にしないといかんぞね。

なんと、Linux デスクトップアプリが動く、 Linuxスマホ - pinePhone がありました。
これなら、簡単にできそう。

取り敢えず、おんちゃんは、メルカリで、 ASUS TransBook T100TA をそれなりの価格で買ったきに、
Xubuntu 辺りが乗りそうなので、これでトライしてみます。
ASUS TransBook T90chiにXubuntuを入れてみました。キーボードドックも使えるようになりました。
T100TA ubuntu インストールは、下記が参考になるみたい。
T100TA_guide.md
OSをふっとばされたタブレットPCにUbuntuを入れてみた

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

自作 Turtlebot3 自律走行に向けたプログラム。#14
--- 自作 Turtlebot3 (foxbot_core3) で、GPS( gysfdmaxb ) を使ってみる。 ---

手持ちに、gysfdmaxb があったので、これを使って、自作 Turtlebot3 (foxbot_core3) の GPS として試してみました。
みちびき(QZSS) の受信ができると言うので、ずっと前に買って、少し試して、そのままだったのですが、
自作 Turtlebot3 自律走行に向けたプログラム。#13 で、Gazbo Trutlebot3 で、GPSプラグインを試したので、こんどは、
実機でどうなのかと試してみました。
ただ、測位確度:2m の様なので、期待は、していませんが、robot_localization/ekf_localization_node で、
Fusionしたらどうなのか、試してみました。

結論から言えば、部屋の中で、2[M] 行って、元の位置へ帰ってくるテストでは、なぜかうまく動いているようです。
次は、屋外で、100[M] 位プログラムで自動走行させてみたくなりました。

さて、ROSでの使用方法ですが、インターネットで、ros gysfdmaxb で検索しても出てこないので、結局自分で作る事にしました。

GPSデータをrostopicとして取り扱う 辺りを参考に github.com/KumarRobotics/ublox をベースに作ってみました。
でも、却って、結構大変でした。
callback ルーチンの使い方と、boost::asio::io_service、boost::asio::serial_port を使った Serial I/O が初めてだったので、
それを真似して、C++ の勉強にはなりました。

開発環境
Remote PC:
 Ubuntu Mate 20.04
 ros noetic

SBC:
Jetson Nano 2G
 Ubuntu 20.04 and Jetpack 4.0
 ros noetic
 Moter Controll : ESP32
 IMU、USB Serial Stereo Camera
 rtabmap_ros、move_base、ebnad_local_planner

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

自作 Turtlebot3 自律走行に向けたプログラム。#13
--- Gazebo Turtlebot3 burger で、GPS を使ってみる。 ---

ROS IMUとGPSのGazeboプラグインを使う に、Gazebo で、GPS を使う例があったので、試してみました。

1. GPS プラグインの組み込み。
パッケージ版があったので、おんちゃんは、こちらををつかってみました。

$ sudo apt install ros-noetic-hector-gazebo-plugins

2. URDF の作成。
URDF は、上記ページにも例がありますが、おんちゃんは、以前、IMU、Camera を組み込んだ例に習って、今回も作りました。

catkin_ws/src/turtlebot3/turtlebot3_description/urdf/gps_macro.xacro

注) 使えるパラメータは、hector_gazebo_plugins に、記載があります。
注2) frameId
<frameID>${prefix}_link</frameID> --- Bad
<frameId>${prefix}_link</frameId> --- OK

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

自作 Turtlebot3 自律走行に向けたプログラム。#12
--- Gazebo Turtlebot3 burger で、C++プログラムによる自律走行でMap を自動作成する 2。 ---

前回、自作 Turtlebot3 自律走行に向けたプログラム。#11 で、rtabmap_ros with Depth Camera の /map の 、
未知領域 と自由領域の境界を目標にロボットを走行させて、2D Map を自動作成しましたが、今回は、障害物の領域のみを使ってみます。

1. 開発環境
PC
  Ubuntu Mate 20.04
  ROS:noetic
  Gazebo Turtlebot3 with Depth Camera、Rtabmap_ros

2. アルゴリズム。
1) /map から、障害物のみを2値画像に変換して、それを、ブロブ化します。
2) 上記ブロブの外周を辿って、一定間隔でアンカーを付けて、そこへロボットを行かせて、/map を更新します。
注1) 『OpenCVによる画像処理入門』(講談社) P157 周囲長 を求める処理を参考にします。
3) ロボットを向かわせる地点は、上記アンカーから、半径Rのマスク処理を、今度は、非障害物に対して行って、その重心の方向へ、ロボットを動かした点とします。
4) ロボットを向かわせている途中、到着点が、障害物に含まれるか近接した場合は、その場所は、止めて、ロボットを次の候補地に向かわせます。
5) ロボットを向かわせる候補地は、ロボットから近い順に選びます。
6) 少し大きめのブロックで、/map を分割して、一度行った所はチェックして、次からは行かないようにします。

アルゴリズムは、簡単じゃ、後は、プログラムで試すのみじゃ。
当初のアルゴリズムは、ちょっと無理だったので、変更したぞね。by nishi 2022.8.16

但し、オンちゃんの GPU が壊れたのでちょっと、意気消沈しちょります。
GPUが買える迄、CPU オンリーで試すしかないぞね!!

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

自作 Turtlebot3 自律走行に向けたプログラム。#11
--- Gazebo Turtlebot3 burger で、C++プログラムによる自律走行でMap を自動作成する。 ---

自作 Turtlebot3 自律走行に向けたプログラム。#10 で、Gazebo & Turtlebot3 burger with Depth Camera and Rtabmap_ros だと、
床が自由領域だと判定できるのが判ったので roslaunch turtlebot3_gazebo turtlebot3_house.launch で、
Burger を起動して、全て C++プログラムで、Houseの中の、自由領域と未知領域の境界を選んで自由に走らせて、
Rtabmap_ros で、Map を完成させられるか試してみます。

注) Stereo Camera だと、Rtabmap_ros で、床が自由領域として、 /map に出てこないのでこちらは、この方法ではできません。
あくまでも、Depth Camera の場合です。

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

自作 Turtlebot3 自律走行に向けたプログラム。#10
--- local_costmap をプログラムから直接アクセスして、障害物の判定に使う ---

自作 Turtlebot3 自律走行に向けたプログラム。#9 で、move_base を使わないで、
cmd_vel を操作して、ロボットを移動させる事ができたの、今回は、Turtlebt3 の local_costmap をc++ プログラムから、
直接アクセスして、障害物の判定に使う方法を考えてみます。

と言うのも、Single USB Stereo Camera から stereo_image_proc -> rtabmap_ros/point_cloud_xyz を通すと、
障害物の PointCloud2 が得られるので、
それを、 local_costmap の入力に与えると、 Stereo Camera による障害物の判定結果が、自動的に、local_costmap の
出力に出てきます。

1. 開発環境。
Turtlebot3
Gazebo Sumilation または、自作 Turtlebot3 (foxbot_core3.ino)

PC
 Ubuntu Mate 20.04
 ROS noetic
 rtabmap_ros
注) 今回から、ROS noetic での開発になります。

SBC
 Jetson Nano
 Single USB Stereo Camera
 JetPack4.6 and Ubuntu 20.04
 ROS noetic
 rtabmap_ros

または、
Gazebo & Turtlebot3 burger with Stero Camera

JetsonNano Jetpack4.6をubuntu20.04にする

JetsonNano Jetpack4.6をubuntu20.04にする
上記見出しのページがあったので、試してみました。

参考にさせてもらったページ
1) JetsonNano Jetpack4.6をubuntu20.04にする
2) Upgrade NVIDIA Jetson Nano from Ubuntu Bionic Beaver to Focal Fossa
3) mmdebstrapを使ってJetson NanoへUbuntu 20.04環境を最小クリーンインストールす
4) OSを最新の状態に更新する
注) edgeplant-l4t-tools はありません。
$sudo udevadm trigger
なのか?

おんちゃんは、1) と 2) の方法でなんとかできました。
但し、ちょっと足りない処理が必要になったので、書いてみました。

3) の記事は、 1) 、2) の方法で、起動出来なくなった場合の復旧作業に応用できるので役立ちます。

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

自作 Turtlebot3 自律走行に向けたプログラム。#9
--- 草地をまんべんなく走行する仕掛け ---
副題: move_base を使わずに、Python 、C++ から、/cmd_vel を使ってロボットを動かす。また、C++ から、global_planner、
local_palnner を直接使って、Navigationを行う。

1. 前方の1平米を、障害物が無いことをチェックして、隈なく通る。
プログラムを作るにあたっての考察。
ほとんど、お掃除ロボットの動きぞね。

実機環境
1) ロボットカー。
自作 Turtlebot3(foxbot_core3)
 ESP32(モータ制御、IMUアクセス) + Jetson Nano 2G(SBC)+ Single Stero USB Camera
 ROS
 WiFi
ハードの制作は、Turtlebot3 自作
ソフトインストールは、
関連する git
i) tosa-no-onchan/foxbot_core3
ii) tosa-no-onchan/lib-nishi3
ii) tosa-no-onchan/rtabmap_ros_my
iv) tosa-no-onchan/turtlebot3_navi_my
v) tosa-no-onchan/uvc_camera_single

2) ROS PC
 Ubuntu Mate 20.04
 WiFi Lan
 ROS:noetic

アルゴリズム
i) rtabmap_ros を、Mapping モードで起動。
ii) ロボットを 360度 1回転させて、周囲の3D & 2D マップ を rtabmap_ros で作成する。
iii) Mapping か完了したら、rtabmap_ros をそのまま、Navigation モードに切り替えて。
iv) 作成された、2Dマップから、前方1平米だけを、ロボットの横幅サイズのブロックで分割して、その中から通行できるブロックを全て順繰り通る。
この部分は、以前 Gazebo 草刈りロボット で試した処理が使えるぞね。
Python Scripts は、
/tosa-no-onchan/turtlebot3_navi_my/tree/main/scripts の、

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

自作 Turtlebot3 自律走行に向けたプログラム。#8
--- Turtlebot3 SBC(Jetson Nano 2G) で、rtabmap_ros で、色々試す。#2 ---
補記) move_baseのローカルプランナーを変更する 。

自作 Turtlebot3 自律走行に向けたプログラム。#7 の続きです。

Spark Fun DMP 6軸フュージョンをキャリブレーション でロボットの前傾姿勢 (IMUの観測値) の補正が出来なくて、
IMUの取り付けスペーサーの両面テープで、前傾を調整して、それから、ロボットを平らな所に置いて、
$ rostopic echo /odom_fox | more
で、見てみると orientation:y = 0.013
で少し前傾しているので、最後の手段、foxbot_core3.ino で、むりやり、q[1] -= 0.013
をして、やっと、前傾がなくなりました。

注) ここは、クォータニオンの回転の計算をしないといけないようです。
クォータニオン(四元数)を使用して座標を回転させる
P2 = Q x P x 共役Q
クォータニオン積を2回行う様です。
今は、手抜きの計算なので、ロボットが、後ろ、179[Deg] から -179[Deg] へ回転する時、変にぶれます。by nishi 2022.6.12

後、ロボットの起点を平らな所に移して、これで、rtabmap_ros で試すと、Rviz の画面で、以前ほどは、沈み込はなくなりました。
ただ、高さの計測が出来ているかと言えば、まだまだその精度には、なっていません。

ROS IMU による移動距離(距離測定) と向き測定

ROS IMU による移動距離(距離測定) と 向き測定。

IMU 6軸フュージョンを使って、距離と向きを測定します。

このページは、自作 Turtlebot3 自立走行に向けたプログラム。#7 の、16. 再挑戦。 以降を、実際のやり方に向けて、改めて記述したものです。
今回のプログラムの考え方を書いているの、一度ご覧ください。

IMU(ICM-20948) 6軸センサー(加速度、ジャイロ)値を、ESP32で取り込んで、6軸フュージョン(MadgwickAHRS) で、
クオータニオンを算出して、それを元に、加速度センサーの読み取り値から、1G の影響をキャンセルした正味のAccを算出した、加速度と時間から速度、移動距離を出して、
ロボットの座標系から、ROS の基準座標系に変換した位置と姿勢データを、ESP32 Wi-Fi で、リモートPC 上のROS サーバーへ送って、
リモートPC上の Rviz を用いて、3D での姿勢と移動距離を見える化します。

良くYouTube で見かける、IMU を手に持って、空中で動かして、それに連れて、PCのモニターの中の物が3Dで動く、やつです。
注) 但し、あまり完成度は、高くありません。ぜひ、ご自分で完成度を上げっていてください。by nishi 2022.5.13
注2) 基準座標系: ロボットの開始時点の座標。ROS の TF で言えば、odom になります。

開発環境
1. 開発 PC
 Ubuntu Mate 18.04
 Visual Studio Code + Platform I/O IDE
   ESP32 Arduino Framework
 Arduino IDE ( こちらは、Tools -> Serial Plottter を使う為 )

2.実行環境
1) PC / ROS Server
 Ubuntu Mate 18.04
 WiFi 環境が必要です。
2) SOC
  ESP32
  Wi-Fi Ros Serial通信
  TTL-Serial : デバッグ用に使います。テストが終われば、不要です。
3) IMU
 Spark Fun ICM-20948
 SPI 接続

3. ハード構成
ESP32端子 SPI & TTL-Serial
IO1(TxD0) ---- Rx
IO3(RxD0) ---- Tx
IO23(MOSI) ---- MOSI(DA/SDA) and with 1K Pull Up
IO19(MISO) ---- MISO(ADO) and with 1K Pull Up
IO18(SCLK) ---- SCLK(CL/SCL) and with 1K Pull Up
IO5(CS) ---- CS(SS) and with 1K Pull Up
IO17 ---- LED

Single USB Stereo Camera を試す。

Single USB Stereo Camera を試す。

OAK-D-Lite が、rtabmap_ros with Depth Camera で、役立たないので、
最近購入した、HBV-1780-2 S2.0 を 使ってみました。
当初、使い方が判らなかったので、困りました。

Web で検索して、画像サイズの指定のしかたで、
1画像に、Stereo 画像の、左右を一緒に Capture して送って来るみたいです。
640x240 -> 320x240 Stereo

下記に、記述がありました。
https://www.programmersought.com/article/17263978832/

Python のサンプルも、下記にありました。

depthai-core examples を試す。

depthai-core examples を試す。

depthai-core/examples に、プログラムサンプルが色々有るので、ビルドして試してみました。

1. 先に、depthai-ros のインストールが必要です。
depthai-ros のインストールは、Jetson Nano 2G ROS Oak-D-Lite を参照して下さい。

2. depthai-ros のインストール後に、Examples をビルドします。
ビルド方法は、luxonis/depthai-core の Running examples にあります。
$ cd ~/local/oakd-lite/depthai-core
$ rm -rf build
$ mkdir build
$ cd build
$ cmake .. -D'DEPTHAI_BUILD_EXAMPLES=ON'
$ cmake --build .

一応簡単にビルド出来ました。
build/examples に、作成されます。

3. Jeston Nano 2G の rtabmap_ros で、将来使えそうな、
StereoDepth/rgb_depth_aligned.cpp を試してみました。

これを参考にして、 ROS で、depth データと、中央の RGB カメラの rgb データを、同期してpublish するnodelet を作れば、
rtabmap_ros でそのまま使えそうです。
fps も設定できる様です。
fps=15 位で、軽量に実現できれば、 Jeston Nano 2G and rtabmap_ros で使えそうです。
注1) fps の設定は、今は、未対応みたいです。自分でプログラムで押さえないといけないみたいです。
デフォルトだと、30[Hz] になります。
注2) RGB 画像と、Depth 画像が完全に一致していません。Rtabmap_ros で使う時、この誤差がすこし問題になりそうです。

Jetson Nano 2G ROS rtabmap_ros with Oak-D-Lite

Jetson Nano 2G ROS rtabmap_ros with Oak-D-Lite

いよいよ本題の、rtabmap_ros で、Oak-D-Lite(depthai) を使って見ることにします。
自作 Turtlebot3(foxbot_core3) に組み込んで、確認してみます。

1. 環境:
自作 Turtlebot3(foxbot_core)
1) SBC
Jetson Nano 2G
ros: melodic
arduino: ESP32

2) リモートPC
Ubuntu Mate 18.04
ros: melodic

2. 処理の流れ。
1) SBC での処理。
i) depthai_examples の stereo_node.launch の、stereo_publisher node の部分を動かして、
/stereo_publisher/stereo/depth を publish させます。
ii) rtabmap_ros で、上記、 /stereo_publisher/stereo/depth を取り込んで、3D-Map をpublish させる。
2) リモートPC の Rviz で動作を確認します。

Jetson Nano 2G ROS Oak-D-Lite

Jetson Nano 2G ROS Oak-D-Lite

やっと、OAK-D-Lite を購入できたので、
Jetson Nano 2G の ROS(Melodic) で、Oak-D-Lite(depthai-ros) を使えるようにしてみました。
参考は、 luxonis / depthai-ros です。

環境:
1) 実行 SBC
Jetson Nano 2G: jetpack4 (ubuntu 18.04 相当)
OpenCV4.1.1
注) OpenCV4.x が必要とのことです。
Jetson Nano 2G OpenCV4.1.1 Build を参考にして下さい。
Ubuntu 18.04 は、OpenCV3.2 です。
後、他のROSパッケージも、OpenCV4.x 対応にしないと行けないので、下記を参考にして下さい。
自作 Turtlebot3 自立走行に向けたプログラム。#5
2) Rviz の確認用 リモートPC
Ubuntu Mate 18.04
ROS:melodic
注) こちらにも、同じように、depthai-core、 depthai-ros をインストールします。
但し、OpenCV3.2 なので、完全にはインストール出来ませんが、Rviz での確認に必要になります。

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

自作 Turtlebot3 自律走行に向けたプログラム。#7
--- Turtlebot3 SBC(Jetson Nano 2G) で、rtabmap_ros で、色々試す。 ---

自作 Turtlebot3 自律走行に向けたプログラム。#5 の続きです。

14. たまに、IMU データの音信不通がありますが、それでも大夫安定して動く様になったので、 rtabmap_ros の使い込みをしています。
その中で、判った事を書いています。
注) IMU データの音信不通 の原因がわかりました。/odom_fox の出力を、camera_info に同期して出す
様に組み込んだ処理にバグがあるようです。
いまは、この機能を外して使用します。by nishi 2022.5.18

1)
RGBD/OptimizeMaxError=3.0(default) - 3.3
この値によって、tf-odom の補正の量が左右されるみたいです。
デフォルトの 3.0 より大きめの 3.3 にしています。動かしていて、ワーニングが出たので少しだけ大きくしました。
試しに、2.1 など、小さくして試しましたが、そうすると、tf-odom の補正がされなくなりす。
Rviz で見ていると、tf-odom が補正されると、黄色の線が表示されるようです。
tf-odom が補正されないと、2M 行って帰ってきた時、出発点から、随分ずれて止まります。

自作 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}]

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

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

アイテム

  • robotcar-DSC03445.jpg
  • foxbot3_core_chassis-img007.jpg
  • foxbot3_core_chassis-img006.jpg
  • foxbot3_core_chassis-img005.jpg
  • foxbot3_core-eagle-schema.jpg
  • foxbot3_core-eagle-board.jpg
  • robocar-DSC03418.jpg
  • img004.jpg
  • img003.jpg
  • esp32-gysfdmaxb-server_2018.10.6.jpg

ウェブページ

サイトナビ