ラズパイ4でROS2を動かしてみる(DDS)では、Jetson Nao で作成したDockerイメージを使いましたが、ここではソースからセットアップしてみます。
ラズパイ4(4GB)にインストールするOSイメージとしてUbuntu 21.04のDesktopを使います。
Ubuntu Desktop 21.04
SSHはデフォルトでは使えない。サーバーをインストール。
1 |
sudo apt install openssh-server |
以下のコマンドでactiveになっていることを確認
1 |
sudo systemctl status ssh |
Dockerをインストール
前提条件をインストール
1 |
sudo apt install curl gnupg2 lsb-release |
Dockerインストール
1 |
curl -sSL https://get.docker.com | sh |
Docker Hub からUbuntuのイメージを降ろしておきます。
1 |
sudo docker pull ubuntu:18.04 |
コンテナ作成
my_ros2_camという名前で作成、Xを使います。
sudo docker create -it --name my_ros2_cam --network host -e DISPLAY=$DISPLAY -v /tmp/.X11-unix/:/tmp/.X11-unix ubuntu:18.04
起動
1 |
sudo docker start -i my_ros2_cam |
アップデート&アップグレード、パッケージなどをインストール
1 2 3 4 5 |
apt update apt upgrade -y apt install nano apt install libcanberra-gtk* -y |
ROS2 (Eloquent)インストール
ソースをインストール
1 2 3 4 5 |
apt update && apt install curl gnupg2 lsb-release curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | apt-key add - sh -c 'echo "deb [arch=amd64,arm64] http://packages.ros.org/ros2/ubuntu `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list' |
ROS2(Eloquent)をインストール。途中でTimeZoneを聞いてきます。
1 |
apt update && apt install ros-eloquent-ros-base |
シェルに反映させておきます。
1 |
source /opt/ros/eloquent/setup.bash |
ROS2環境をアンダーレイに指定
1 2 3 |
nano ~/.bashrc source /opt/ros/eloquent/setup.bash |
カメラ画像(image)をPub/Sub
Jetson からカメラ画像をpublishしたものをラズパイでsubscribeしてみます。
Jetson(4GB)でpublish
ここでやったようにカメラ画像をpublishしておきます。
ros2 run image_tools cam2image --ros-args -p device_id:=0 -p reliability:=best_effort -p width:=640 -p height:=480 -p frequency:=30.0
ラズパイ
ホストでXを設定しておきます。
1 |
sudo xhost si:localuser:root |
ラズパイのコンテナにimage_toolsをインストールしておきます。
1 |
apt install ros-eloquent-image-tools -y |
このままでimage_toolsを実行すると以下のようなWarningが出ます。ライブラリのバグのようですが、実行自体に問題はありません。
dbind-WARNING **: 15:54:20.098: Couldn’t connect to accessibility bus:
ただ気持ち悪いので、おまじない。
1 |
export NO_AT_BRIDGE=1 |
コンテナでsubscribe実行。
1 |
ros2 run image_tools showimage --ros-args -p reliability:=best_effort |
こんな感じで受信します。
WindowsからSSHで接続してXServerで確認する場合
WindowsのXServerについてはこのページの後半参照
SSHコンソールでコンテナ起動
1 |
sudo docker start -i my_ros2_cam |
WindowsのIPアドレスが192.168.0.23の場合、以下を実行
export DISPLAY=192.168.0.23:0.0
subscribe実行
1 |
ros2 run image_tools showimage |
注:SSHはリアルタイムのsubscribeは無理だと思われます。
Leave a Reply