TurtleBot3(Waffle)でカメラ機能の確認とYOLOによる物体認識


TartleBot3 のシミュレーション環境を使います。

カメラはデフォルトで搭載されている深度カメラと、新規にWebカメラを試してみます。

 


デフォルトのカメラ機能の確認

TurtleBot3には深度カメラ(Intel RealSense R200)が搭載され、Gazebo のPlugin も用意されています。仮想空間(World)の中の風景がどんな風に見えるのか確認してみます。

その前に、ここで使うmy_room.worldは壁以外何もない空間なのでいくつかアセットを追加しておきます。

追加の方法は2/5のAppendixをご参照ください、

TurtleBot3 でGazebo 起動

 

こんな感じで、仮想空間にinsertしておきます(人、椅子、コーラ缶)。

 

どの地図を使うのか決めます。4/5 の hector slam で作った地図を使ってみます。

 

navigationを起動します。

roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/maps/my_room_hector_map.yaml

 

カメラ画像

Addー>By topicでRGBカメラの画像をみてみます。

 

 

 

 

 

 

 

 

 

 

 

 

左下に見えるのがRGBカメラ画像です。

 

Overlay Alpha の値を1

Zoom Factor の値を2

に設定すると見やすくなります。

 

2D Nav Goal で移動させてみます。隣室の右上にGoalを設定。移動するに従ってカメラ視野にアセットが見えます。

 


YOLO で物体認識

AI の物体認識でよく使われるYOLO はROS にも対応しています。

ナビゲーション環境で使ってみます。

インストール

 

catkin_makeでcv_bridge のエラーになった場合

findなどでopencv2を探して、リンクを張っておきます

sudo ln -s /usr/include/opencv4/opencv2/ /usr/include/opencv

再度 catkin_make。

 

こういう部屋の中を認識させてみます。

 

 

 

 

 

 

 

 

 

 

 

Gazebo を起動して物品(アセット)追加

navigationを起動

roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/maps/my_room_hector_map.yaml

 

 

YOLOスタート

 

左上がYOLOのwindowです。teleopでロボットを回転させてみます。Person とChairは比較的よく認識されています。

 

 


Web カメラ を使う場合

RealSense R200 の代わりに安価なUSB Webカメラを使ってみます。

 

 

 

 

 

 

 

 

 

 

簡単なweb-cam daeファイルを以下のフォルダーにコピー

/opt/ros/melodic/share/turtlebot3_description/meshes/sensors

 

以下の2つのファイルを編集可能にしておきます。

 

turtlebot3_waffle.gazebo.xacroを開いて、<gazebo reference=”camera_rgb_frame”>タグをまるごと削除するか、コメントアウトしておきます。

で、以下を追加

webカメラ用のPlugin はlibgazebo_ros_camera.soです(デフォルトでインストールされています)。

 

 

turtlebot3_waffle.urdf.xacroを開いて、後半にあるcamera関連のjoint、linkタグをまるごと削除するかコメントアウトしておきます。

で、以下を追加。

 

上記と同様にGazebo を起動してアセットを追加しておきます。

Rviz 起動

roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/maps/my_room_hector_map.yaml

 

Addー>By topic で/webcam_front_camera の/image_raw でCameraを選択

カメラ画像を確認できます(YOLOを使う場合、必ずしも必要というわけではないです)。

 

 

 

 

 

 

 

 

 

 

また、YOLOで物体認識させる場合

darknet_ros.launchを編集

<arg name=”image” default=”/camera/rgb/image_raw” /> を削除するかコメントアウトして、以下を追加

で、YOLOを起動します。

 

 

 

逆にturtlebot3_waffle.gazebo.xacroでcamera/rgbを記述してもいいかも。

 


Appendix

YOLO はV2、V3がインストールされいます。

darknet_ros.launchではV2が使われているようです。

V3を使う場合は、

roslaunch darknet_ros yolo_v3.launch

で起動します。

独自にトレーニングした場合、weightsファイルとcfgファイルの保存場所は…

~/catkin_ws/src/darknet_ros/darknet_ros/yolo_network_config/weights

~/catkin_ws/src/darknet_ros/darknet_ros/yolo_network_config/cfg

yamlファイル

~/catkin_ws/src/darknet_ros/darknet_ros/config

 


 

Be the first to comment

Leave a Reply

Your email address will not be published.


*