ESP-EYE CameraWebServer with QR Code Detection.
ESP-EYE QR Code Scanner with qrdec. の続きです。
前回の、ESP-EYE を使った、QR Code Scanner で、実際 に、カメラで、QR Code がどのように写っているのか知りたくて作ってみました。
CameraWebServer に、 Face Detect の代わりに、qrdec を使って、QR Detect にしてみました。
グレースケールで、320x240 の画像で、ピンとはどうなのかが確認できました。
プログラム開発の最近のブログ記事
QR Code Decode C++ with qrdec.
qrdec というのがあったので、試してみました。
quirc より少し重いけど、性能は良いみたいぞね。
開発環境
Ubuntu Mate 22.04 PC
1. git clone
$ cd ~/Documents/VisualStudio-CPP/
$ git clonehttps://github.com/torque/qrdec.git
$ cd qrdec
2. オリジナルのテストプログラムのビルド。
$ make test
/usr/bin/ld: -liconv が見つかりません: そのようなファイルやディレクトリはありません
と怒られた。
libghc-iconv-doc が必要か?
$ sudo apt install libghc-iconv-doc
違うみたい。
$ sudo apt remove --purge libghc-iconv-dev
$ sudo apt autoremove
判らん。
glibc の中に元からあるみたい。
[Build] Build failed due to undefined reference to libiconv #15560
gcc or clang++ みたい。
Makefile が問題みたい。
#TEST_LDFLAGS = $(LDFLAGS) $(shell pkg-config --libs libpng) -liconv $(LIBRARY) -fPIE
TEST_LDFLAGS = $(LDFLAGS) $(shell pkg-config --libs libpng) $(LIBRARY) -fPIE
$ make clean
$ make test
build/qrdec ができた。
実行は、
$ build/qrdec 画像ファイル
ですが、テスト画像は、下記にあります。
mchehab/zbar/examples
qr-code.png
3. build library
$ make clean
$ make production
build/libqrdec.a が出来る。
4. おんちゃんのテストプログラムをビルド。
$ mkdir qrdec_reader-nishi
$ cd qrdec_reader-nishi
この下に、reader.c を参考に、 OpenCV を使った、reader.cc を作ります。
あと、reader.c, image.c, image.h は、ライブラリー外のソースとのことです。
上記、3 ファイルをコピーします。
reader.c を reader.cc に rename して、opencv の処理を組み込みます。
ROS2 自作 Turtlebot3 による 草刈りロボット開発。-- 屋外走行
ROS2 自作 Turtlebot3(foxbot_core3_r2) rtabmap_ros も一応完成したので、
草刈りロボットとしての、屋外での走行にチャレンジします。
1. 屋外でのMap
屋外での走行で、 そもそも、Static Map 作成をどうするのか?
map 自体は、 画像ソフト(Gimp等) で作成できるとのこと。
Creating map with paint(or any other image editor)
Youtube
ROS Map Editor と言うのもある。
こちらが簡単。git clone して、python3 で、そのまま起動できる。
例) ~/map4.pgm ~/map4.pgm.yaml があったら。
$ python3 MapEditor.py ~/map4
だとしたら、ただ走行可能領域のみの、空白の Map だけで良いのでは?
その状態で、GPS を元にした、robot_localization/ekf_node で、自己位置を特定して、Stereo Camera からの
rtabmap_ros/point_cloud_xyz で、 local_costmap、global_costmap に障害物情報を与えてやるだけで、
navigation2 で、1[m] 先の位置、2[m] 先の位置と、順々に走行できるのでは、ないじゃろか?
10[m] 先も、1[m] 毎に区切って行けば、OK か?
ROS2 自作 Turtlebot3(foxbot_core3_r2) Rtabmap_ros with Stereo rgbd and GPS. #2
--- GPS を付けて、robot_localization ekf で試す。続き ---
ROS2 自作 Turtlebot3(foxbot_core3_r2) Rtabmap_ros with Stereo rgbd and GPS. の続きです。
自作 Turtlebot3 自律走行に向けたプログラム。#14 の ROS2版です。
1. 環境。
1) Remote PC
Ubuntu Mate 20.04
ros2: galactic
rtabmap_ros, navigation2, Rviz2
2) SBC
Jetson Nanao 2G
Jet Pack4 .x and Ubuntu 20.04
ros2: galactic
micro-ROS Agent
Single USB Stereo Camera
GPS: AE-GYSFDMAXB
USB SSD Stick
3) SOC
ESP32 Arduino
micro-ROS
IMU
4) 自動走行プログラム。
turtlebot3_navi_my / multi_goals4_nav2
5) lanuch ファアイル。
rtabmap_ros_my/launch/ratbmap_stero_rgbd_gps.launch.py
1. galactic 版へ移行しての再テスト。by nishi 2023.3.2
galactic だと、 foxy版で出た、navigation2 の不具合などは、まるきりでなくて、すんなり動いた。
ちょと、走行テストをしていたら、たまに、 navigation2 を動かしている Remote PC と、foxbot_core3_r2 の通信が切断されるようです。
これは、改善しないと、まともにテストできましぇん。
方法は、Remote PC 上で、navigation2 を動かす時は、 heart beat を出すプログラムを同時に動かして、foxbot_core3_r2 からこの、
heart beat を取れなくなったら、モータドライブを止めて、heart beat が回復するのを待つ。
ROS2 自作 Turtlebot3(foxbot_core3_r2) Rtabmap_ros with Stereo rgbd and GPS. by T100TA
--- GPS を付けて、robot_localization ekf で試すを、T100TA から操作。 ---
ROS2 自作 Turtlebot3(foxbot_core3_r2) Rtabmap_ros with Stereo rgbd and GPS. の続きです。
前回、SBC(Jetson Nano 2G) で、全て起動して、Remote PC からは、ssh2 で、SBCにログインして、launch の起動と、Rviz2の表示だけを行いましたが、
Remote PC を、ASUS Tablet(T100TA) に変えて同じ操作を行いました。
一応、ロボットは、完走できましたが、navigation2 のログ表示に、結構 ERROR、WARN がでているので、それの考察です。
しかし、T100TA にすると、このようになるのか? 疑問ぞね。
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 で、ESP32(Arduino) を使う。
--- Turtlebot3 の自作 を、 ROS2 に移植する。 ---
前回の、自作 Turtlebot3 自律走行に向けたプログラム。#15 で、ROS の限界を感じたので、ROS2 を試す事にしました。
1. 環境。
PC
Ubuntu Mate 22.04
ros2: foxy galactic humble
SBC
Orange pi 5
Armbian jammy
ros2: foxy galactic humble
注1) foxy navigation2、teb_local_planner には、不具合があるので、パッチが必要になる。
注2) ubuntu 20.04 で、galactic が使えるので、こちらの方が良い。by nishi 2023.1.21
しかし、なぜか、galactic 版は、EOL になっているみたい。
foxy/Releases
EOL 版でも大丈夫みたいぞね。
下記で、eol 版の galactic 版も、同じようにビルドできます。
$ rosdep update --rosdistro=${ROS_DISTRO} && rosdep install --from-path src --ignore-src -y
rosdep オプション
注3) 今は、ubuntu 22.04 Ros2 Humble対応です。navigation2 rpp
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 自律走行に向けたプログラム。#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
--- 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 Ros2 C++ AutoMap II
--- Ros2 Gazebo Turtlebot3 waffle で、C++プログラムによる自律走行でMap を自動作成する 2。 ---
前回、自作 Turtlebot3 自律走行に向けたプログラム。#11 で、rtabmap_ros with Depth Camera の /map の
、
未知領域 と自由領域の境界を目標にロボットを 自律走行させて、2D Map を自動作成しましたが、今回は、障害物の領域のみを使ってみます。
注1) オペレータは、C++ プログラを起動したあとは、人の操作は必要ありません。すべて、ロボットの自律走行で、Map が作成されます。
最後に、Map の保存だけ操作してください。
1. 開発環境
PC
Ubuntu Mate 22.04
ROS2:humble
Gazebo Turtlebot3 with Depth Camera、Rtabmap_ros
注1) 今は、Ros2 Humble 版で、waffle になっています。by nishi 2024.3.12
2. アルゴリズム。
1) /map から、障害物のみを2値画像に変換して、それを、ブロブ化します。
2) 上記ブロブの外周を辿って、一定間隔でアンカーを付けて、そこへロボットを行かせて、/map を更新します。
注1) 『OpenCVによる画像処理入門』(講談社) P157 周囲長 を求める処理を参考にします。
3) ロボットを向かわせる地点は、上記アンカーから、半径Rのマスク処理を、今度は、非障害物に対して行って、その重心の方向へ、ロボットを動かした点とします。
4) ロボットを向かわせている途中、到着点が、障害物に含まれるか近接した場合は、その場所は、止めて、ロボットを次の候補地に向かわせます。
5) ロボットを向かわせる候補地は、ロボットから近い順に選びます。
6) 少し大きめのブロックで、/map を分割して、一度行った所はチェックして、次からは行かないようにします。
アルゴリズムは、簡単じゃ、後は、プログラムで試すのみじゃ。
当初のアルゴリズムは、ちょっと無理だったので、変更したぞね。by nishi 2022.8.16
但し、オンちゃんの GPU が壊れたのでちょっと、意気消沈しちょります。
GPUが買える迄、CPU オンリーで試すしかないぞね!!
その後、Humble 版になったら、非GPU でも、問題なくなりました。
自作 Turtlebot3 自律走行に向けたプログラム。#11 -- Ros2 C++ AutoMap
--- Ros2 Gazebo Turtlebot3 waffle で、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 を完成させられるか試してみます。
注1) オペレータは、C++ プログラを起動したあとは、人の操作は必要ありません。すべて、ロボットの自律走行で、Map が作成されます。
最後に、Map の保存だけ操作してください。
注2) Stereo Camera だと、Rtabmap_ros で、床が自由領域として、 /map に出てこないのでこちらは、この方法ではできません。
あくまでも、Depth Camera の場合です。
注3) 今は、Ros2 Humble 版で、waffle になっています。by nishi 2024.3.12
開発環境
Ubuntu Mate 22.04
Ros2 Humble
Navigation2
Gazebo & Turtlebot3 Waffle
自作 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
自作 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 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 による移動距離(距離測定) と 向き測定。
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 を試す。
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 に、プログラムサンプルが色々有るので、ビルドして試してみました。
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 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 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 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}]
草刈りロボットの動きとしては、まずいので、このリカバリー指定を外してみました。