Raspberry Pi 3B に ROS2 Foxy をインストール
前提
Ubuntu 20.04
Raspberry Pi 3B に Ubuntu 20.04.4 (64bit)をインストール
基本情報
https://docs.ros.org/en/foxy/Installation/Ubuntu-Install-Debians.html に従う
手順記録
ロケール設定
UTF-8にするのがミソだと思う、同時に日本語設定にした。
code:shell
locale # check for UTF-8
sudo apt update && sudo apt install locales
sudo locale-gen ja_JP ja_JP.UTF-8
sudo update-locale LC_ALL=ja_JP.UTF-8 LANG=ja_JP.UTF-8
export LANG=ja_JP.UTF-8
locale # verify settings
これが
code:shell
ubuntu@ubuntu:~$ locale
LANG=C.UTF-8
LANGUAGE=
LC_CTYPE="C.UTF-8"
LC_NUMERIC="C.UTF-8"
LC_TIME="C.UTF-8"
LC_COLLATE="C.UTF-8"
LC_MONETARY="C.UTF-8"
LC_MESSAGES="C.UTF-8"
LC_PAPER="C.UTF-8"
LC_NAME="C.UTF-8"
LC_ADDRESS="C.UTF-8"
LC_TELEPHONE="C.UTF-8"
LC_MEASUREMENT="C.UTF-8"
LC_IDENTIFICATION="C.UTF-8"
LC_ALL=
こうなる
code:sh
ubuntu@ubuntu:~$ locale
LANG=ja_JP.UTF-8
LANGUAGE=
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=
ソース設定
Ubuntu Universeリポジトリが有効になっているか確かめる
code:shell
apt-cache policy | grep universe
以下のように出てくる
code:sh
ubuntu@ubuntu:~$ apt-cache policy | grep universe
500 http://ports.ubuntu.com/ubuntu-ports focal-security/universe arm64 Packages
release v=20.04,o=Ubuntu,a=focal-security,n=focal,l=Ubuntu,c=universe,b=arm64
100 http://ports.ubuntu.com/ubuntu-ports focal-backports/universe arm64 Packages
release v=20.04,o=Ubuntu,a=focal-backports,n=focal,l=Ubuntu,c=universe,b=arm64
500 http://ports.ubuntu.com/ubuntu-ports focal-updates/universe arm64 Packages
release v=20.04,o=Ubuntu,a=focal-updates,n=focal,l=Ubuntu,c=universe,b=arm64
500 http://ports.ubuntu.com/ubuntu-ports focal/universe arm64 Packages
release v=20.04,o=Ubuntu,a=focal,n=focal,l=Ubuntu,c=universe,b=arm64
出てこなかったら、以下を行うらしい(行っていない)
code:sh
sudo apt install software-properties-common
sudo add-apt-repository universe
ROS2 の apt リポジトリを追加
code:sh
sudo apt update && sudo apt install curl gnupg2 lsb-release -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
gnupg2がインストールされた
続いて、ソースリスト追加
code:sh
echo "deb arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
ROS2パッケージインストール
まずはリポジトリ更新
code:sh
sudo apt update
ROS2が追加されている
code:sh
ubuntu@ubuntu:~$ sudo apt update
ヒット:1 http://ports.ubuntu.com/ubuntu-ports focal InRelease
ヒット:2 http://ports.ubuntu.com/ubuntu-ports focal-updates InRelease
取得:3 http://packages.ros.org/ros2/ubuntu focal InRelease 4,679 B
ヒット:4 http://ports.ubuntu.com/ubuntu-ports focal-backports InRelease
ヒット:5 http://ports.ubuntu.com/ubuntu-ports focal-security InRelease
取得:6 http://packages.ros.org/ros2/ubuntu focal/main arm64 Packages 1,052 kB
1,056 kB を 5秒 で取得しました (206 kB/s)
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
パッケージはすべて最新です。
続いてアップグレード(ROS2意外を最新の状態にする)
code:sh
sudo apt upgrade
インストール
今回はDesktop版をインストールする
ROS、 RViz、 デモ、チュートリアル が含まれるとのこと
code:sh
sudo apt install ros-foxy-desktop
たくさんのパッケージがインストールされる
SDカードはA2グレードを使用しているからか、サクサク動いている感じはあるが、それでも時間はかかる
base(ベアボーン)版もあるらしい
通信ライブラリ、メッセージパッケージ、コマンドラインツール、非GUIツール で構成されているとのこと
本格的にRaspberryPiをロボットにする場合はこっちで良いのかも?
code:sh
sudo apt install ros-foxy-ros-base
環境設定
設定スクリプトをsourceする
code:sh
source /opt/ros/foxy/setup.bash
サンプルを動かしてみる
cpp実装のtalkerとPython実装のlistenerを動かす
ターミナルを2つ開いて、それぞれ動かす
talker
code:sh
source /opt/ros/foxy/setup.bash
ros2 run demo_nodes_cpp talker
listener
code:sh
source /opt/ros/foxy/setup.bash
ros2 run demo_nodes_py listener
実行例
talker側
code:sh
ubuntu@ubuntu:~$ ros2 run demo_nodes_cpp talker
INFO 1655852647.483806887 talker: Publishing: 'Hello World: 1'
INFO 1655852648.483681746 talker: Publishing: 'Hello World: 2'
INFO 1655852649.483645238 talker: Publishing: 'Hello World: 3'
INFO 1655852650.483675593 talker: Publishing: 'Hello World: 4'
INFO 1655852651.483674946 talker: Publishing: 'Hello World: 5'
INFO 1655852652.483692671 talker: Publishing: 'Hello World: 6'
INFO 1655852653.483706062 talker: Publishing: 'Hello World: 7'
INFO 1655852654.483658190 talker: Publishing: 'Hello World: 8'
INFO 1655852655.483711451 talker: Publishing: 'Hello World: 9'
INFO 1655852656.483732096 talker: Publishing: 'Hello World: 10'
INFO 1655852657.483717990 talker: Publishing: 'Hello World: 11'
INFO 1655852658.483694808 talker: Publishing: 'Hello World: 12'
INFO 1655852659.483645156 talker: Publishing: 'Hello World: 13'
INFO 1655852660.483663356 talker: Publishing: 'Hello World: 14'
INFO 1655852661.483676492 talker: Publishing: 'Hello World: 15'
INFO 1655852662.483661021 talker: Publishing: 'Hello World: 16'
INFO 1655852663.483690539 talker: Publishing: 'Hello World: 17'
INFO 1655852664.483718795 talker: Publishing: 'Hello World: 18'
INFO 1655852665.483751622 talker: Publishing: 'Hello World: 19'
...
listener側
code:sh
ubuntu@ubuntu:~$ ros2 run demo_nodes_py listener
INFO 1655852663.620489851 listener: I heard: Hello World: 17
INFO 1655852664.492311994 listener: I heard: Hello World: 18
INFO 1655852665.493224667 listener: I heard: Hello World: 19
...
listener側を先に起動したほうが、1から読み込めるので良いかも
とりあえずインストール完了
以上
#raspberry_pi
#ROS
#ROS2
#Ubuntu