Custom Meta Tags
2503 Hero Banner

AMD製品に関連する技術ブログ

Long Copy

KR260でROS2 Perception Stack Applicationを動かしてみた!

皆さん、こんにちは。「ノリさん」です!AMDのGitHubにある『KR260上で動くPerception Stack Application』の記事を参考に、実際に動かしてみました!
この記事を書こうと思ったキッカケは、上記の記事の説明だけでは不足があって動かないと聞いたことです。作業内容を補完しつつ書きました。

2023-07-03
(2023-10-17更新)

Static HTML

ハードウェア要件

  • KR260 ロボティクス スターター キット
  • KR260 電源とアダプター (KR260 ロボティクス スターター キットに付属)
  • Cat 5e イーサネット ケーブル (KR260 ロボティクス スターター キットに付属)
  • USB-A-micro-B ケーブル (KR260 ロボティクス スターター キットに同梱)
  • 16GB MicroSD カード (KR260 ロボティクス スターター キットに同梱)
  • USBポート付きPC (OS : Linux)
  • インターネットに接続可能なルーター

 

PCへのROS2-HumbleとGazebo Classic 11.0のインストール

適当なディレクトリでターミナルを開きます。
次のコマンドでUTF-8をサポートするロケールがあることを確認します。

$ locale

ロケールがUTF-8をサポートしていない場合は次のコマンドを実行してUTF-8をサポートするロケールを生成します。

$ sudo apt update && sudo apt install locales
$ sudo locale-gen en_US en_US.UTF-8
$ sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
$ export LANG=en_US.UTF-8

ロケール生成後、再度設定を確認します。

$ locale

Ubuntu ユニバース リポジトリが有効になっていることを確認します。

$ apt-cache policy | grep universe

次のような出力が得られます。
500 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 Packages release v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=universe,b=amd64
上記のような出力が得られない場合は、次のコマンドでUbuntu ユニバース リポジトリを有効化します。

$ sudo apt install software-properties-common
$ sudo add-apt-repository universe

ROS2のGPGキーをaptで認証し、ROS2のリポジトリをソースリストに追加します。

$ sudo apt update && sudo apt install curl gnupg lsb-release
$ sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

apt のパッケージリスト及びパッケージを更新します。

$ sudo apt update
$ sudo apt upgrade

ROS2-Humbleのフルバージョンをインストールします。
ROS公式ページだと-full が付いていないが、付けないと一部のパッケージがインストールされないので注意)

$ sudo apt install ros-humble-desktop-full

Gazeboをインストールします。

$ curl -sSL http://get.gazebosim.org | sh

 

ボードのセットアップ

あらかじめ、ホストPCにPutty をインストールしておきます。

$ sudo apt install putty putty-tools -y

https://ubuntu.com/download/amd-xilinx から、KR260用のUbuntu 22.04イメージを~/Downloads にダウンロードします。
SDカードを Ubuntu に挿入します。
ホストUbuntu 画面左下の、show Applications をクリックし、検索窓から Disks を検索して、開き、Device と書かれた行を探します。
(*2 ここに書かれているのが、dev/mmcblk0p1形式である場合は /dev/mmcblk0/dev/ 、sdb1形式の場合は /dev/sdb がドライブ アドレスとなる)
ランチャーバーのアイコン、ファイルマネージャーの取り出しアイコンを右クリック、または「ディスク」アプリケーションの四角いアイコンをクリックして、SDカードをアンマウントします。
次のコマンドでUbuntuイメージをSDに展開します。(には *2 のドライブアドレスを指定、実行後は書き込みが終わるまでは何も表示されない、実行時間 : 20~30分程)

$ xzcat ~/Downloads/iot-limerick-kria-classic-desktop-2204-x06-20220614-78.img.xz | sudo dd of=<drive address> bs=32M

コマンドを用いずにEtcherなどの書き込みツールを用いてもOKです。
書き込みが終わったら、SDカードを取り外し、KR260の裏側にあるSDカードの差し込み口に差し込みます。(図1の 1. の部分)
図1の 2.~5. までを数字の順番通りに接続します。
(6. は電源であり後で差し込む、ホストPCと通信を行うので 5. のイーサネットはホストPCと同じルーターに接続しておく)
以下を実行し、ttyUSB0~ttyUSB3 が表示されることを確認します。

$ ls /dev/ | grep ttyUSB

Putty を起動

$ sudo putty

図2のように設定し、Openを押した後、上の図の6. の電源を差し込みます。
(Selial line の番号は人によっては異なる場合があるが、ttyUSB0~ttyUSB3のいずれかになる)

 

図1. KR260にペリフェラルを接続した図

 

図2. Puttyの設定画面

 

電源を差し込むと、Ubuntu が起動するので、ユーザー名を入力できるまで待ちます。
(何も表示されない場合は、Selial line の番号を変えて再接続、文字化けする場合は、付録の 5. を参照)
ユーザー名の入力画面になったら、ユーザー名をubuntu、初期パスワードをubuntuとしてログインする
sudoを実行する際、パスワードの変更を求められるので、変更します。
デモアプリケーションのアーカイブを追加します。

$ sudo add-apt-repository ppa:xilinx-apps
$ sudo add-apt-repository ppa:ubuntu-xilinx/sdk
$ sudo apt update
$ sudo apt upgrade

再起動します。

$ sudo reboot

 

動作確認

ファームウェアをダウンロードします。

$ sudo apt install xlnx-firmware-kr260-perception

ROS 2 humble と LTTng をインストールします。
ROS2-Humbleのインストール方法はPCへのROS2-HumbleとGazebo Classic 11.0のインストールを参照してください。
今回はフルバージョンをインストールする必要はないので、-hull は外しておきます。
次のコマンドでLTTngをインストールします。

$ sudo apt install lttng-modules-dkms lttng-tools ros-humble-tracetools-launch

ROS 2 アプリケーションをインストールします。

$ mkdir -p ~/Downloads
$ cd ~/Downloads
$ wget https://github.com/Xilinx/kria_ros_perception/releases/download/xlnx-rel-v2022.1_update4/kria-ros-perception_1.0-1_arm64.deb 
$ sudo apt install ./kria-ros-perception_1.0-1_arm64.deb

Gnome デスクトップ GUI を無効にします。

$ sudo xmutil desktop_disable

PCにシミュレーション用のプログラムをインストールします。

$ git clone https://github.com/Xilinx/kria_ros_perception
$ cd kria_ros_perception
$ rm -rf src/image_proc src/tracetools_image_pipeline src/vitis_common src/tracing src/image_pipeline_examples
$ source /opt/ros/humble/setup.bash  # source ROS2 Humble
$ colcon build

PCでシミュレーションを実行します。

$ source install/setup.bash  # source the workspace as an overlay
$ ros2 launch perception_2nodes simulation.launch.py

PCで rqt を実行します。

$ source /opt/ros/humble/setup.bash 
$ rqt

Plugins -> Introspection -> Node Graph をクリックし、図3のように構成を設定します。

 

図3. rqtの設定画面1

 

同様に、Plugins -> Visualization -> Image View から 動画表示用のウィンドウを3つ開きます。

 

図4. rqtの設定画面1

 

CPU ベースでKR260アプリケーションを実行します。(アクセラレーションは使用しない)

$ source /opt/xilinx/kria_ros_perception/setup.bash
$ ros2 launch perception_2nodes trace_rectify_resize.launch.py 

下図のように表示するには、各ウィンドウの左上にあるリロードボタンを押してリロードする必要があります。
今回は/camera/image_raw、/image_rect、 /resize/resize_compressed を表示させました。

図5. アクセラレーション使用前のグラフと動画

 

FPGAによるアクセラレーションを使用してKR260アプリケーションを実行します。

$ sudo xmutil unloadapp
$ sudo xmutil loadapp kr260-perception
$ source /opt/xilinx/kria_ros_perception/setup.bash
$ ros2 launch perception_2nodes trace_rectify_resize_fpga_streamlined.launch.py

下図のように表示するには、各ウィンドウの左上にあるリロードボタンを押してリロードする必要があります。
今回は/camera/image_raw、 /image_rect 、/resize/compressed を表示させました。

図6. アクセラレーション使用後のグラフと動画

 

 

感想

今回はKR260によるROS2とGazeboのアクセラレーションを行いました。
個人的にROS2はあまり触れることがなかったのですが、これから触れる機会が増えていきそうです。
今後もROS2関連の記事を書くことがあるかもしれません。
それでは、また次回お会いしましょう!See you next time!

2503 Grid Box Light - Blog

ブログ

AMDによる設計およびデバッグ手法のブログ、およびアヴネット社員によるAMD製品を用いた開発チャレンジのブログです。

2503 Grid Box Light - Kria

Kria

Kria SOMはアダプティブSoCデバイスを搭載しており、スマートカメラやエンベデッドビジョンなどに最適です。