Raspberry pi OSにDockerを使用しROSを入れてみた。

ROSの公式サイトを見てみたがRaspberry pi OSにROSをインストールする正規の手段はないという事らしい。Raspberry pi OSを使用する場合はDockerを使用してくれということらしい。

ROS公式サイト

docs.ros.org

画像をクリックすると楽天に飛びます。

Dockerのインストール

下記のサイト様を参考にDockerをインストールする。

raspida.com

まずはアップデートを行う。

sudo apt update && sudo apt full-upgrade -y 

次にDockerのインストール

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh 

Dockerをユーザー権限で実行できるようにする。

sudo usermod -aG docker ユーザー名 

画像をクリックすると楽天に飛びます。

ROSの構築

Dockerイメージの入手。

docker pull arm64v8/ros:humble-perception 

コンテナを作成し起動する。

docker run -it arm64v8/ros:humble-perception 

これでROSがインストールされた。しかし私としては公式サイトと同じ構成にしたかったので以下の通りにコンテナ内にROSをインストールする。こんなことして良いのかわからないがとりあえずやってみる。まずはアップデートから行う。

sudo apt update
sudo apt -y upgrade 

ROSのインストール。

sudo apt install ros-humble-desktop 

ROS-BASEのインストール。

sudo apt install ros-humble-ros-base 

toolのインストール。

sudo apt install ros-dev-tools 

これでROSがインストールされた。

テスト用のプログラムの起動

公式サイトのTry some examplesを実行してみる。

https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html#install-ros-2-packages

まずはsetupfileを読込、talerプログラムを起動。

source /opt/ros/humble/setup.bash
ros2 run demo_nodes_cpp talker  

次に別のコンソールアプリを立ち上げ、先ほどのコンテナにアクセスする。

 docker exec -it コンテナNAMES bash

コンテナNAMESは下記コマンドで見ることができる。

docker ps -a

コンテナ内でsetupfileを読込、listenerプログラムを起動する。

source /opt/ros/humble/setup.bash
ros2 run demo_nodes_py listener  

listenerのアプリにHello worldが表示され通信できたのがわかる。

コンソールアプリ内ではROSを終了するときはCTRL+C、Dockerを終了する時はCTRL*Dとなる。

画像をクリックすると楽天に飛びます。

備考

・turtleismのようなGUIアプリは実行できない。

 *やり方がないわけではない。

・Dockerのイメージは公式サイトからのリンクであるGIT HUBのページから探す。

GitHub - osrf/docker_images: A repository to hold definitions of docker images maintained by OSRF

このページのROSのarm64のリンクからDockerイメージの一覧が載っているページへ飛ぶことができるので好きなイメージを選択する。

Raspberry piアーキテクチャはarmなのでamdでは起動できない。

まとめ

すべてが終わった後にDockerではGUIは使えないって知りました。GUI使う予定だったのに・・・まあ公式サイトしてUbuntでやれみたいに書いてあるのでそうするのが一番良いみたいですね。