Gazebo turtlebot3 burger Depth Camera Program

Gazebo turtlebot3 burger Depth Camera Program です。

Gazebo turtlebot3 burger Depth Camera plugin で、Depth Camera (rgbd camera) が使えるようになったので、
サンプルプログラムを作ってみます。

開発環境
OS: Ubuntu Mate 18.04
ROS: melodic
開発ツール: Visual Studio Code

1. 概要
rgbd データは、 /camera/depth/points に出てきます。
$ rostopic type /camera/depth/points
sensor_msgs/PointCloud2

さて、sensor_msgs/PointCloud2 とは、何じゃろかいから始めないといけません。
グーグルでググると、
ROSのsensor_msgs:PointCloud2データの構造と扱い方 があって、参考にさせてもらいました。ふむふむ。

サンプルプログラムもグーグルで検索すると、
https://www.programcreek.com/python/example/99841/sensor_msgs.msg.PointCloud2 がありました。
Example 6 辺りが使えそうです。
これは、どうやら、ros_numpy パッケージの抜粋みたいです。
早速、パッケージをインストールしてみます。
$ sudo apt install ros-melodic-ros-numpy

2. 作成
上記プログラムを参考に、早速テストプログラムを作ってみます。
1. ~/catkin_ws/src/ros_start/scripts/pointcloud2_test2.py

3. 実行は、
$ roscore
$ roslaunch turtlebot3_gazebo turtlebot3_world_nav_nishi.launch

$ roscd ros_start/scripts
$ python pointcloud2_test2.py

結果は、

理解するのに、おんちゃんは、時間がかかりました。
どうやら、
x が、 カメラの左右軸 (x0 から) の値(M)。
y が、カメラの上下軸 (y0 から) の値(M)。
z が、カメラの前方軸 (z0 から) の値(M)。
中心座標 (x0,y0,z0) = (0,0,0) は、カメラの中心点の様です。
受信データで言えば、行:列 = 240:320 が 中心座標 の (x,y,z,rgb) になる。
ただし、 y は値が逆転しているのか?

ここまで、わかれば、Gazebo / Turtlebot3 バーガーを、動かすプログラムができそうです。

4. 本題のプログラム
Gazebo / Turtlebot3 バーガー に、 深度カメラ(rgbd カメラ: openni kinect) プラグインを載せて、
トピックで送られてくる、 /camera/depth/points (sensor_msgs/PointCloud2) を解析して、
バーガーが壁から 35cm 近づいたら、直進をやめて、向きを変えるプログラムを作ります。

測定は、行=240 のデータのみ使います。
y=0.0 なので、カメラの高さ位置の距離データのみ利用します。
列のデータは、[0,40, 80, 120, 160, 200, 240, 280, 320, 360, 400, 440, 480, 520, 560, 600,639] の所のみチェックします。
該当箇所の x,z から、 カメラ(x0,z0) からの距離をそれぞれ計算して、 0.35 [M] 以内か判定します。

5. 作成2
1. ~/catkin_ws/src/ros_start/scripts/tbot3_rgbd_camera1.py

5. 実行は、
$ roscore

$ export TURTLEBOT3_MODEL=burger
$ roslaunch turtlebot3_gazebo turtlebot3_world_nav_nishi.launch

$rviz
   Fixed Frame : odom
   Add > RobotModel
   Add > ByTopic > /camera/depth/image_raw/image
   Add > ByTopic > /camera/depth/points/PointCloud2

$ roscd ros_start/scripts
$ python tbot3_rgbd_camera1.py

どうぞね!
少しは、バーガーが、自動で、動くかね!

このブログ記事について

このページは、おんちゃんが2020年11月18日 15:34に書いたブログ記事です。

ひとつ前のブログ記事は「Gazebo turtlebot3 burger another House world」です。

次のブログ記事は「Gazebo turtlebot3 waffle Depth Camera Slam and real time Mapping. 」です。

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

カテゴリ

ウェブページ

サイトナビ