Gazebo Turtlebot3 Burger stereo camera plugin
Gazebo シュミレータの Turtlebot3 バーガーに、モノカメラ、マルチカメラ(ステレオカメラ)のプラグインを導入します。
参考にしたのは、下記ページです。
プラグインをマクロで記述するのは、下記ページが参考になります。
ROS講座67 車輪ロボットを作る7(カメラのシミュレーション)
開発環境
OS: Ubuntu Mate 18.04
ROS: melodic
開発ツール: Visual Studio Code
1. プラグイン作成の手順は、最近覚えたのですが、
1) urdf(xacro) で、 Rviz の表示で、プラグインの筐体とする、<link></link> と、
それを親link に接続する、<joint></joint> を作ります。
ここで、例えば、
カメラの筐体となる、ボックス型の link を定義します。
box のサイズ、向き、色 の定義
joint タグで、その筐体ボックスを、親の筐体(リンク) のどこに配置するかを、
記述します。
2) 1) で作った<link name="xxxx"> の xxxx名 を指定して、<gazebo></gazebo> タグの中で、
<plugin name="xxxx" filename="yyyyy.so"></plugin> と言う様に、名前を一致させて、
filename="yyyyy.so" で、公開されているプラグインを指定して使います。
なおかつ、前述のサンプル、sim2_lecture/xacro/camera_macro.xacro は、
<xacro:macro name="camera_macro" params="parent prefix xyz"> は、マクロを
定義して、その中で、urdf の部分と gazeb の部分を同時に記述しています。
2. マルチカメラのプラグインのサンプルは、下記にあります。
No.6-6:GazeboをROSに繋ぐ (ROSにおけるGazeboのプラグイン 編)
>マルチカメラ
このページにも、プラグインの作り方があるので、参考になります。
この、ページの、サンプルコードを、
camera_macro.xacro に取り込んで、モノカメラ用とステレオカメラ用の2つのマクロを
作れば、便利です。
早速取り込んで作ってみます。
camera_macro.xacro
注1) カメラが少し下向きなので、上に向けました。by nishi 2022.7.10
<origin xyz="${xyz}" rpy="0 -0.02967 0"/> <!-- -1.7[deg] -->
3. gazebo/turtlebot3 burger への取り込み。
ここで、gazebo turtlebot3 のファイル構成をみてみます。
起動の流れ
$ roslaunch turtlebot3_gazebo turtlebot3_wolrd.launch
turtlebot3_simulation/turtlebot3_gazebo/launch/
turtlebot3_world.launch が起動 launch で、
|
turtlebot3/turtlebot3_description/urdf/
turtlebot3_$(arg model).urdf.xacro が launchファイルからスポーンされます。
注) $(arg model) は、 burger, waffle, waffle_pi になる。
なので、今回の目標は、burger へのステレオカメラの導入なので、
turtlebot3_burger.urdf.xacro へ今回作成した、 camera_macro.xacro を
インクルードして、マクロコールしてあげれば、OK となります。
3.1 camera_macro.xacro ファイルを
~/catkin_ws/src/turtlebot3/turtlebot3_description/urdf/ へセット。
3.2 turtlebot3_burger.urdf.xacro の修正。
( ~/catkin_ws/src/turtlebot3/turtlebot3_description/urdf/turtlebot3_burger.urdf.xacro )
上記ファイルに、camera_macro.xacro をインクルードして、
<xacro:stereo_camera_macro...../>
を記述すれば、OKです。
4. 動作確認。
$ roscore
$ export TURTLEBOT3_MODEL=burger
$ roslaunch turtlebot3_gazebo turtlebot3_house.launch
$ rqt_image_view で確認
/stereo_camera/left/image_raw
/stereo_camera/right/image_raw
または、rviz で
$ rviz
add > by Topic > /streo_camera > lefft > image_raw - Image
add > by Topic > /streo_camera > right > image_raw - Image
どうぞね、上手くいったかね!