Raspberry Pi 3B に ROS2 Foxy をインストール
前提
Ubuntu 20.04
基本情報
手順記録
ロケール設定
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=
ソース設定
code:shell
apt-cache policy | grep universe
以下のように出てくる
code:sh
ubuntu@ubuntu:~$ apt-cache policy | grep universe
release v=20.04,o=Ubuntu,a=focal-security,n=focal,l=Ubuntu,c=universe,b=arm64
release v=20.04,o=Ubuntu,a=focal-backports,n=focal,l=Ubuntu,c=universe,b=arm64
release v=20.04,o=Ubuntu,a=focal-updates,n=focal,l=Ubuntu,c=universe,b=arm64
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
gnupg2がインストールされた
続いて、ソースリスト追加
code:sh
ROS2パッケージインストール
まずはリポジトリ更新
code:sh
sudo apt update
ROS2が追加されている
code:sh
ubuntu@ubuntu:~$ sudo apt update
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
...
listener側
code:sh
ubuntu@ubuntu:~$ ros2 run demo_nodes_py listener
...
listener側を先に起動したほうが、1から読み込めるので良いかも
とりあえずインストール完了
以上