きっかけは、PINTO氏のツイートです。
"motpy - simple multi object tracking library. quite fast, more than realtime performance even on RaspberryPi"
— Super PINTO (@PINTO03091) 2021年3月16日
これディープラーニングじゃないのね。てか、こんなにきれいにトラッキングできるの? 画像処理すごぃぃいぃ🤪https://t.co/ZvqSC7zaKX pic.twitter.com/KGhJ5omgIq
単眼の映像で高速オブジェクトトラッキングをしているのを見て驚きました。そして次に、「ROSでこのライブラリを使いたい!」と思いました。
今回は、motpyのサンプルプログラムをROS2に移植したので、その説明をします。
motpyとは?
motpyとは、通常の物体検出プログラムを物体追跡プログラムにしたい人のためのライブラリです。余計な手間をかけずに複数の物体追跡が可能です。また、シンプルな物体検出ならRaspberry Piで動くほど軽量です。
YOLO v5での活用例もあるみたいです。
darknet_ros_msgsとは?
ここで、darknet_ros_msgsについて説明します。今回作成したリポジトリでは、バウンディングボックスのパブリッシュにdarknet_ros_msgsを使用しました。
darknet_ros_msgsは、ROS界隈では有名な物体検出リポジトリであるdarknet_rosで使用されているメッセージです。詳細は以下のリンク(GitHub)から確認してください。
インストール
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
motpyはとても高速で便利なライブラリなので使いこなしたいと思いました。成果があれば、プログラムの種類も増やしていく予定です。