KV260でROS2とGPIOのテスト。Webカメラと一緒に動かしてみた

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

KV260のDPU-PYNQで物体検出したデータを応用してみました。

WebカメラからリアルタイムでYOLOXを使っています。

特定の物体を検出してGPIOを出力したり、ROS2のマーカ表示をしてみました。

 

スポンサーリンク

KV260でROS2とGPIOのテスト。Webカメラと一緒に動かしてみた

KV260のDPU-PYNQで物体検出したデータを応用してみました。

特定の物体(オレンジボール)を検出すると、GPIOを出力(Lチカ)をさせています。

 

テスト動画が下記です。

 

また検出した物体をROS2でマーカ表示したテストも行いました。

 

テスト動画が下記です。

 

プログラムやDPU、YOLOXのモデルは下記GitHubに保存しています。

kv260-ubuntu-test/usb-camera at main · iotengineer22/kv260-ubuntu-test
This repository present solution for my KV260 Ubuntu test - iotengineer22/kv260-ubuntu-test

詳細を紹介していきます。

 

テスト・合成環境

最初にテスト環境に関して説明します。

コンパイル・合成などはKV260とは別のデスクトップPC(Ubuntu)で実施しています。

またツール・合成環境は以下の通りです。

  • Vivado, Vitis…2023.1
  • Vitis AI …3.5 → 2.5

 

またDPU-PYNQのインストール・テストに関しては下記記事で紹介しています。

今回は応用編ということで、リアルタイムで検出しつつ、GPIOやROS2に出力させます。

KV260とDPU-PYNQでYOLOXの物体検出してみる

KV260とDPU-PYNQでYOLOXの物体検出してみる
KV260とDPU-PYNQで物体検出してみました。 YOLOXを使って、高速に物体検出しています。 jupyter_notebooksとpythonの両方でテストしてみました。 KV260とDPU-PYNQでYOLOXの物体検出してみる ...

 

Webカメラ(logicool C270n)

使用するWebカメラは「logicool Web camera C270n」です。

非常に安いWebカメラですが、(スペック上では)640x480で30fpsの速度があります。

テストには十分なカメラです。

 

GStreamer・libuvc・v4l2loopback-dkmsのインストール

USBカメラからライブストリーミングできるようにライブラリをインストールします。

GStreamer・libuvc・v4l2loopback-dkmsなどが必要となります。

 

またPYNQ環境でもGStreamerを使うための環境を用意しています。

PYNQのデフォルトのopencv-pythonにはGStreamerがインストールされていないためです。

アンインストールしてUbuntu側のOpenCVと紐づけます。

 

ROS2・rviz2のインストール

KV260のROS2のインストール方法は沢山あると思います。

今回は以前に参加した下記コンテストのリファレンスのスクリプトを利用して楽をします。

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

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

 

下記の「install_ros.sh」でROS2-Humble環境構築ができます。

ダウンロードするかコピーして、実行します。

 https://github.com/amd/Kria-RoboticsAI/blob/main/files/scripts/install_ros.sh

 

可視化ツールやros2のopencv関連もインストールしときます。

(前述のスクリプトで一緒に入るかもしれません)

 

WebカメラでYOLOX + GPIO出力のテスト

Webカメラでライブストリーミングをしつつ、YOLOXで物体検出を行います。

また特定の物体(オレンジボール)を検出すると、GPIOを出力(Lチカ)をさせています。

プログラムは下記です。

 https://github.com/iotengineer22/kv260-ubuntu-test/blob/main/usb-camera/app_gst-yolox-real-normal-camera-gpio.py

 

またGPIOの出力に関しては、下記のデバッグ基板を自作して使っています。

GitHub - iotengineer22/PCB-KV260-PMOD-TEST: PCB-KV260(KR260)-PMOD-INOUT
PCB-KV260(KR260)-PMOD-INOUT. Contribute to iotengineer22/PCB-KV260-PMOD-TEST development by creating an account on GitHu...

基板発注の仕方などは、下記記事でも紹介しています。

プリント基板の発注を個人でやってみた(PCBGOGO編)

 

下記例のようにテストしました。

オレンジボール検出時に青色のLEDが点灯していることが分かります。

 

テスト動画が下記です。

 

WebカメラでYOLOX + ROS2出力のテスト

Webカメラでライブストリーミングをしつつ、ROS2出力を行います。

YOLOXで物体検出した画像(Image)と座標をマーカ出力しています。

プログラムは下記です。

 https://github.com/iotengineer22/kv260-ubuntu-test/blob/main/usb-camera/gst-yolox-ros2-normal-camera.py

 

最初にrviz2を起動しておきます。

 

左のウインドウにある「Add」から「MarkerArray」と「Image」を表示させています。

  • Image…/camera/image/q1
  • Fixed Frame…base_link

 

別のターミナル開いて実行すれば、自動的にrviz2にPublishされて表示されます。

 

テスト動画が下記です。

 

まとめ

KV260のDPU-PYNQで物体検出したデータを応用してみました。

WebカメラからリアルタイムでYOLOXを使っています。

特定の物体を検出してGPIOを出力したり、ROS2のマーカ表示をしてみました。

 

よろしければ皆様もぜひ試してみてください。

コメント