えいあーるれいの技術日記

ROS2やM5 Stack、Ubuntuについて書いています

motpyのサンプルをROS2に実装してみた(motpy_ros)

 きっかけは、PINTO氏のツイートです。

 単眼の映像で高速オブジェクトトラッキングをしているのを見て驚きました。そして次に、「ROSでこのライブラリを使いたい!」と思いました。

 今回は、motpyのサンプルプログラムをROS2に移植したので、その説明をします。


motpyとは?

 motpyとは、通常の物体検出プログラムを物体追跡プログラムにしたい人のためのライブラリです。余計な手間をかけずに複数の物体追跡が可能です。また、シンプルな物体検出ならRaspberry Piで動くほど軽量です。

github.com

 YOLO v5での活用例もあるみたいです。

github.com

darknet_ros_msgsとは?

 ここで、darknet_ros_msgsについて説明します。今回作成したリポジトリでは、バウンディングボックスのパブリッシュにdarknet_ros_msgsを使用しました。

 darknet_ros_msgsは、ROS界隈では有名な物体検出リポジトリであるdarknet_rosで使用されているメッセージです。詳細は以下のリンク(GitHub)から確認してください。

github.com

インストール

 作成したリポジトリは以下のリポジトリにあります。

github.com

 ROS2 Foxyを前提とします。

$ sudo apt install ros-foxy-v4l2-camera
$ pip3 install opencv-python motpy

$ source /opt/ros/foxy/setup.bash
$ cd ~
$ mkdir -p ros2_ws/src
$ cd ros2_ws/src
$ git clone https://github.com/Ar-Ray-code/motpy_ros.git
$ cd motpy_ros
$ git checkout motpy_ros
$ cd ~/ros2_ws
$ colcon build

デモ

 ウェブカメラを接続します。初回実行時は、${HOME}/.cache/motpy/にウェイトファイルがダウンロードされます。

$ source /opt/ros/foxy/setup.bash
$ source ~/ros2_ws/install/local_setup.bash
$ ros2 launch motpy_ros face_tracking.launch.py

f:id:Ray_ar:20210321191308j:plain
実行結果

 motpyはとても高速で便利なライブラリなので使いこなしたいと思いました。成果があれば、プログラムの種類も増やしていく予定です。