PYNQは、公式サポートのボードの他、Zynqが載っているボードなら大抵自分でSDカードを作れば動きます(例)。
しかし、通常のROS2のインストール手順で、PYNQにROS2を入れようとすると上手くいかないので、以下の修正が必要です。
ROS2のバージョン:ros-eloquent-desktop
PYNQのバージョン:PYNQ2.5 および PYNQ2.6 (Ubuntu18.04ベース)
追記:5か月前にROSのdiscourseにも投稿してました。。。Pynq2.3およびROS1も同様です
https://discourse.ros.org/t/installation-of-ros-ros2-on-pynq/15549?fbclid=IwAR3pfSqelt0csqQz8PJkIsyXlCGgexswOZnmREJSob5SfaNeJFIHMV0RpA8
修正すべきは以下の2点です。
1.Ubuntuのバージョンを自分で書く
ROS2の通常手順だと以下をやれと書いてあります。
sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2-latest.list'
しかしPYNQの場合、$(lsb_release -cs) で出てくるのがbionicではないため、ROS/ROS2のパッケージ取得に失敗します。
xilinx@pynq:~$ lsb_release -cs
WFH
そのため、上記の代わりに、以下を実行してください。
sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] http://packages.ros.org/ros2/ubuntu bionic main" > /etc/apt/sources.list.d/ros2-latest.list'
2.aptソースリストに、bionic-updatesを追加する
ROS2が依存しているfast-rtps が、 libssl1.1 (>=1.1.1) を必要とします。
しかし、18.04 bionic (armhf or arm64)のバージョンは、 libssl1.1.0gです。
そのため、/etc/apt/sources.list.d/multistrap-bionic.listに、bionic-updates repository を追加してください。
xilinx@pynq:~$ cat /etc/apt/sources.list.d/multistrap-bionic.list
deb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports bionic universe main
deb-src http://ports.ubuntu.com/ubuntu-ports bionic universe main
deb http://ports.ubuntu.com/ubuntu-ports bionic-updates main
([arch=armhf]は環境によっては無いかもしれません。)
インストールと動作確認
以上の操作を行うと、無事PYNQ上にROS2がインストールできるはずです。
sudo apt update
sudo apt install ros-eloquent-desktop
新しいウィンドウを2つ開いて、TalkerとListenerを動かしてみましょう
source /opt/ros/eloquent/setup.bash
ros2 run demo_nodes_cpp talker
そして、
source /opt/ros/eloquent/setup.bash
ros2 run demo_nodes_py listener
上手く動作しましたか?ROS2ではROSのようなマスターノード(roscore)が不要なので、躓きがなくて良いですね。