6
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ROSでIntel RealSense D435iとYOLO V3を用いて物体認識をしよう!

Last updated at Posted at 2021-03-20

本記事の目的

本記事ではIntel RealSenceD435iの導入から、ROSとYOLO V3用いて物体認識を行う事を目的とした記事になっております。背景の理論的な説明はしていません。

環境

本記事は以下の環境で実験しています。

項目 バージョン
Ubuntu 18.04
ROS Melodic
IntelRealsense D435i

UbuntuやROSの環境構築は別途他のサイトをご覧ください.

RealSense SDKのインストール手順

  • サーバーの公開鍵を登録
$ sudo apt-key adv --keyserver keys.gnupg.net --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE
  • サーバーをリポジトリのリストに追加
$ sudo add-apt-repository "deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo bionic main" -u
  • ライブラリをインストール
$ sudo apt-get install librealsense2-dkms
$ sudo apt-get install librealsense2-utils
  • 必要に応じて、開発者およびデバッグパッケージをインストール
$ sudo apt-get install librealsense2-dev
$ sudo apt-get install librealsense2-dbg
  • realsense viewerの起動
$ realsense-viewer

上記の作業を終えて、デバイスをUSB3.0に差し込んで、Stereo ModuleとRGB Cameraをoffからonにすると、以下の画像のように認識してくれるはずです。

ただしここで注意が必要です!!(私が躓いたポイントです...)

IntelRealSenseはUSB3.0に差し込まないと認識しません
なので必ずUSB3.0に差している事を確認してください
また私の様に仮想マシン(VMware)で動作確認を行おうと思っている人は、VMwareの設定でUSBの互換性を2.0から3.0に変えないとデバイス認識してくれないので注意してください

IntelRealSense D435i

RGB

Stereo

パッケージのアップグレード

パッケージのグレードアップも同時に行ってしまいましょう

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt --only-upgrade install librealsense2-utils librealsense2-dkms librealsense2-dev librealsense2-dbg

Realsense ROSのインストール

以下のコマンドを実行してインストールを行う

$ sudo apt install -y ros-melodic-ddynamic-reconfigure
$ cd ~/catkin_ws/src
$ git clone https://github.com/IntelRealSense/realsense-ros
$ catkin make
$ source devel/setup.bash

動作確認

以下のコマンドを実行してrviz上に3次元点群を表示する

$ roslaunch realsense2_camera demo_pointcloud.launch

以下の画像のように表示されれば成功!
3次元点群

次にカメラ画像を出力してみます

$ sudo apt install ros-melodic-rqt-image-view
$ roslaunch realsense2_camera rs_camera.launch
$ rosrun rqt_image_view rqt_image_view

以下のように左上の選択ボックスからトピック/camera/color/image_rawを選択して、下のように画像が表示されれば成功!
画像

出力されているトピックは以下のデータです

/camera/color/camera_info
/camera/color/image_raw
/camera/color/image_raw/compressed
/camera/color/image_raw/compressed/parameter_descriptions
/camera/color/image_raw/compressed/parameter_updates
/camera/color/image_raw/compressedDepth
/camera/color/image_raw/compressedDepth/parameter_descriptions
/camera/color/image_raw/compressedDepth/parameter_updates
/camera/color/image_raw/theora
/camera/color/image_raw/theora/parameter_descriptions
/camera/color/image_raw/theora/parameter_updates
/camera/depth/camera_info
/camera/depth/image_rect_raw
/camera/depth/image_rect_raw/compressed
/camera/depth/image_rect_raw/compressed/parameter_descriptions
/camera/depth/image_rect_raw/compressed/parameter_updates
/camera/depth/image_rect_raw/compressedDepth
/camera/depth/image_rect_raw/compressedDepth/parameter_descriptions
/camera/depth/image_rect_raw/compressedDepth/parameter_updates
/camera/depth/image_rect_raw/theora
/camera/depth/image_rect_raw/theora/parameter_descriptions
/camera/depth/image_rect_raw/theora/parameter_updates
/camera/extrinsics/depth_to_color
/camera/extrinsics/depth_to_infra1
/camera/extrinsics/depth_to_infra2
/camera/infra1/camera_info
/camera/infra1/image_rect_raw
/camera/infra1/image_rect_raw/compressed
/camera/infra1/image_rect_raw/compressed/parameter_descriptions
/camera/infra1/image_rect_raw/compressed/parameter_updates
/camera/infra1/image_rect_raw/compressedDepth
/camera/infra1/image_rect_raw/compressedDepth/parameter_descriptions
/camera/infra1/image_rect_raw/compressedDepth/parameter_updates
/camera/infra1/image_rect_raw/theora
/camera/infra1/image_rect_raw/theora/parameter_descriptions
/camera/infra1/image_rect_raw/theora/parameter_updates
/camera/infra2/camera_info
/camera/infra2/image_rect_raw
/camera/infra2/image_rect_raw/compressed
/camera/infra2/image_rect_raw/compressed/parameter_descriptions
/camera/infra2/image_rect_raw/compressed/parameter_updates
/camera/infra2/image_rect_raw/compressedDepth
/camera/infra2/image_rect_raw/compressedDepth/parameter_descriptions
/camera/infra2/image_rect_raw/compressedDepth/parameter_updates
/camera/infra2/image_rect_raw/theora
/camera/infra2/image_rect_raw/theora/parameter_descriptions
/camera/infra2/image_rect_raw/theora/parameter_updates
/camera/realsense2_camera_manager/bond
/camera/rgb_camera/auto_exposure_roi/parameter_descriptions
/camera/rgb_camera/auto_exposure_roi/parameter_updates
/camera/rgb_camera/parameter_descriptions
/camera/rgb_camera/parameter_updates
/camera/stereo_module/auto_exposure_roi/parameter_descriptions
/camera/stereo_module/auto_exposure_roi/parameter_updates
/camera/stereo_module/parameter_descriptions
/camera/stereo_module/parameter_updates
/clicked_point
/diagnostics
/initialpose
/move_base_simple/goal
/rosout
/rosout_agg
/tf
/tf_static

YOLO V3による物体認識

YOLOはリアルタイムオブジェクト検出アルゴリズムです。YOLO(You Look Only Onse)の名前通り、このアルゴリズムでは検出窓をスライドさせるような仕組みを用いず、画像を一度CNNに通すことで、オブジェクトを検出することができます。

以下のサイトでYOLOのアルゴリズムを分かりやすく解説してくれています。

YOLO V3のインストール手順

以下のコマンドを順に実行してください。

$ cd ~/catkin_ws/src
$ git clone --recursive git@github.com:leggedrobotics/darknet_ros.git
$ cd ..
$ catkin_make -DCMAKE_BUILD_TYPE=Release

ただしここで注意が必要です!!

darknet_rosはSSH接続設定を行わないとcloneする事が出来ません
なのでSSH接続の設定を行ってからcloneするようにしてください

SSH接続については以下のサイトを参照してください。

YOLO V3のモデルのインストール

yolov2-tiny.weightsとyolov3.weightsはcatkin_makeすると自動的にダウンロードされます。
その他のモデルのダウンロード方法は以下のファイルを参照してください。

$ ~/catkin_ws/src/darknet_ros/darknet_ros/yolo_network_config/weights/how_to_download_weights.txt

設定ファイルを修正

使用するカメラのトピック名に応じて、設定ファイルを修正する必要があります。
今回は、Intel RealSense D435iなので、RGB画像のトピック名は、/camera/color/image_rawになります。なので、darknet_ros/darknet_ros/config/ros.yamlを修正します。

Vscode

動作確認

以下のコマンドを順に実行します。

  • 一つ目のターミナル
$ roslaunch realsense2_camera rs_camera.launch
  • 二つ目のターミナル
$ roslaunch darknet_ros darknet_ros.launch
  • 三つ目のターミナル
$ rosrun rqt_image_view rqt_image_view

上手く動作すれば、以下のように物体認識が出来ると思います。

YOLO

fpsと精度は以下のような結果になります。

FPS:0.1
Objects:

laptop: 98%
tvmonitor: 93%

精度は良いものの、fpsがかなり低いです。(私のPCにはGPUがないため、CPUのみで動作しているためだと思われます)

動作速度を上げる

私の環境では、OpenCVとOpenMLがインストールされていたので、それらを用いて計算できるように設定を行う。darknet/Makefile を以下に変更

GPU=0
CUDNN=0
OPENCV=1
OPENMP=1
DEBUG=0

この状態に変更してcatkin makeを行い、もう一度実行した結果が以下になります。

YOLO

fpsと精度は以下のような結果になります。

FPS:0.8
Objects:

tvmonitor: 74%
laptop: 53%
keyboard: 45%

fpsは0.1から0.8に上がりましたが、精度が悪くなりました。

まとめ

  • Intel RealSenceD435iの導入から、ROSとYOLO V3用いて物体認識を行いました
  • GPUを搭載していないマシンでは、やはりfps値がかなり低いです
  • リアルタイム性の向上を狙うなら、GPU搭載のマシンを使う必要がありそうです

今後の予定

  • 物体認識から様々な情報(トピック)が取得できているので、それらの値を用いて、何か面白い事をします(特定の人物を追いかけるロボットの作成など)
  • 独自のオブジェクトを学習させて認識したいと思ってます
  • Lidarとデプスカメラのセンサフュージョンをしたいと思ってます
  • Jetson Nanoを使用したらどうなるかを検証します

参考記事

6
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?