🐡

Kria Robotics Stack(KRSの動作確認)

2022/03/12に公開

概要

KRSの環境を構築しましたので、次に簡単な所からROS2動作を確認していこうと思います。
前回生成したKRSワークスペースにExampleデザインが含まれているようなので、まずはこちらを試してみます。

動作環境

以下の環境でROSアプリをビルドし、それを含んだPetaLinuxイメージを作成します。

  • Ubuntu 20.04 Focal Fossa オペレーティングシステム
  • Vitis 2020.2.2スイート(Vitis、Vivado、Vitis HLS)
  • ROS2 Rolling ディストリビューション

実行環境にはKV260評価ボードを使用します。
https://japan.xilinx.com/products/som/kria/kv260-vision-starter-kit.html

vadd_publisher

今回はvadd_publisher(ループ内に2つのベクトルを入力し、それらを加算した結果を10Hzで出力するROS2 publisher)をビルドしてKV260評価ボード上で実行するところまで試してみます。

KRSワークスペース情報の読み込み

作成したKRSワークスペースの設定ファイルを読み込みます。

cd ~/krs_ws
source /tools/Xilinx/Vitis/2021.2/settings64.sh
source /opt/ros/rolling/setup.bash
export PATH="/usr/bin":$PATH
colcon build --merge-install
source install/setup.bash

KV260用の実行イメージ作成

ここからはKV260評価ボードで実行するためのSDカードイメージを作成していきます。
まず始めに以下のコマンドでターゲットファームウエアを選択します。

colcon acceleration select kv260

以下のコマンドで、ファームウエアが正しく選択されているか確認します。
選択されているファームウエアに*印がついているか確認します。

colcon acceleration list
kv260*

つづいて、以下のコマンドでvadd_publisherをビルドしてKV260で動作するパッケージを作成します。

colcon build --build-base=build-kv260 --install-base=install-kv260 --merge-install --mixin kv260 --packages-select ament_acceleration ament_vitis vadd_publisher

SDカードのディスクイメージを作成します。

colcon acceleration linux vanilla --install-dir install-kv260

ディスクイメージをSDカードに書き込みます。
今回はUbutusにEtcherをインストールして、Etcherから書き込みました。
https://www.balena.io/etcher

KV260での動作確認

SDカードをKV260に差し込み、USB/UART/JTAG FTDIアダプターを介してKV260評価ボードとコンピューターを接続し、電源を入れます。
Baudrate=115200でTeraTermを起動します。
起動に成功すると以下がプロンプトに表示されるので、ユーザー名petalinuxを指定してパスワードを設定します。

PetaLinux 2021.2 xilinx-k26-som-2021_2 ttyPS1

xilinx-k26-som-2021_2 login: petalinux
You are required to change your password immediately (administrator enforced)
New password:
Retype new password:

ROS2環境を読み込み、プログラムを実行します。

source /usr/bin/ros_setup.bash
. /krs_ws/local_setup.bash
ros2 topic hz /vector --window 10 &
ros2 run vadd_publisher vadd_publisher

TeraTermに以下のメッセージが表示されます。vadd_publisherノードがvectorトピックに対して10Hzの速度でデータ公開してることが分かります。

今回は、はじめの一歩の簡単なサンプルプログラムを動かしてみましたが、今回はCPUを使って動かすサンプルになります。次回以降で詳細な点を見ていきたいと思います。

Discussion