ROS2で360°カメラの画像処理・物体検出をしてみた

本サイトはアフィリエイト広告を利用しています。
AI

KR260でROS2のRviz2を使って、360°カメラ画像を処理してみました。

360°Live Streamingのデータからリアルタイムで物体検出までしています。

プログラム・テスト動画含めて紹介していきます。

 

スポンサーリンク

ROS2で360°カメラの画像処理・物体検出をしてみた

KR260でROS2のRviz2を使って、360°カメラ画像を処理してみました。

360°Live Streamingのリアルタイムで物体検出したデータを使っています。

検出した物体のBoxをマーカーとして、Rviz2上に置いてみました。

 

実際のテスト動画の1つが下記です。

360°カメラから検出した全方位の物体をROS2でマーカ出力しています。

 

プログラム・テスト動画含めて紹介していきます。

 

Rviz2のインストール

Rviz2は、ROS2(Robot Operating System 2)のための3D可視化ツールです。

今回は360°Live Streamingの画像から、物体検出したデータをRviz2で表示させます。

下記手順でインストールしました。

 

ROS2でOpenCV関連のインストール

360°カメラからOpenCV経由で、画像を取得・処理しています。

ROS2と一緒に使うために、関連のライブラリもインストールします。

 

Rviz2の操作

Rviz2は下記で起動しています。

起動すると空のMAP含めたRviz2のデフォルト画面が確認できます。

 

(KR260から)Publishされている画像を表示させます。

左側の「Displays」パネルの「Add」を選択して「Image」を選択します。

「Topic」を選びPublishされている画像を入力します。(下記例は/camera/image)

 

(KR260から)Publishされているマーカを表示させます。

左側の「Displays」パネルで「Global Options」の設定を見つけます。

「Fixed Frame」の設定をPublishされているものに変更します。(下記例は「base_link」)

 

これにより、マーカーが使用しているフレームIDと一致させることができます。

「Add」から「MarkerArray」を選択すれば、中央のビューウインドウにマーカ出力されます。

 

ROS2にマーカーをpublishする

ros2へのマーカーをpublishしています。

下記例は360°画像を4分割にしている場合のPythonの一部です。

(マーカーのサイズ・位置はかなり適当に置いています)

 

ROS2で360°Live StreamingをImage出力する

最初にROS2を使って画像(Image)を出力するテストしています

本当に画像だけを出力します。

 

 

 

 

 

 

ROS2で360°の物体検出をImage出力する

次に物体検出した画像(Image)のみを出力するテストです。

 

 

 

 

 

 

ROS2で360°の物体検出をMarker出力する

KR260からPublishされた画像とマーカを、ROS2のRviz2で出力します。

プログラムに関しては下記GitHubに置いています。

 https://github.com/iotengineer22/AMD-Pervasive-AI-Developer-Contest/blob/main/src/gst-ros2/gst-ros2-360-detect-car.py

 

テスト動画は冒頭でも紹介しましたが、下記となります。

 

 

KR260が360°画像を4分割して、各セクションで物体検出+マーカー出力しています。

360°カメラ周辺でボールをピックアップしたり、運んだりするテストをしています。

ROS2のマーカ含めて、リアルタイムで変化する様子が分かります。

 

 

 

 

 

 

 

 

ROS2で360°の物体検出を区別してMarker出力する

次のプログラムですが、今度は検出する物体を区別してマーカ出力を変えてみます。

具体的には、下記内容です。

  • スポーツボール or オレンジ … 球体(Marker.SPHERE)
  • それ以外(ペットボトルなど)  … 立方体(Marker.CUBE)

プログラムの一部を切り出すと、下記のような形です。

 

プログラムは下記です。

 https://github.com/iotengineer22/AMD-Pervasive-AI-Developer-Contest/blob/main/src/gst-ros2/gst-ros2-360-2divide.py

 

このテストではKR260が360画像を前後に2分割しています。

ペットボトルだと立方体で、スポーツボールだと球体でマーカ出力できています。

テストで物体を運んだりするとき、リアルタイムでマーカ出力も変化することが分かります。

 

まとめ

ROS2のRviz2を使って、360°カメラ画像を処理してみました。

360°Live Streamingのデータからリアルタイムでマーカー出力まで出来ました。

 

今回のKR260で実施した内容は、下記記事で紹介したテストの一部です。

AMD(Xilinx)のFPGAコンテストに参加した感想

AMD(Xilinx)のFPGAコンテストに参加した感想
AMD(Xilinx)とHackster(Avnet)が合同主催する、海外のコンテストに参加していました。AMD Pervasive AI Developer Contest の「Robotics AI」部門です。KR260というFPGAボ...

 

コメント