はじめに
ROS2 lyricalがリリースされ、ついに最新のraspbery pi OS(Debian Trixie 13)でも使用できるようになりました
備忘録を兼ねてセットアップ~pub/subの疎通までを記事にします
結論
ROS2 lyricalの公式ビルド手順でほぼほぼうまくいきます
環境
今回使用した環境は以下になります
ただしホストPCはssh接続元なので、別にwindowsでなくてもOKだと思います
- ホストPC: Windows11 Pro 25H2
- Raspberry Pi Imager: v2.0.10
- ボード: Raspberry pi 5 8GB
- OS: Rasbperry pi OS 64bit
- ROS2: lyrical
Raspberry pi のセットアップ
イメージ選択
今回はRaspberry pi 5用のRaspberry pi OSを選択します
Raspberry Pi 5 > Raspberry Pi OS
あとはウィザードにしたがって書き込み先SDカードやWiFI設定をしていきます
今回はオプションとしてsshを有効化しています
初回起動
イメージ書き込みまで完了したら、Raspberry Piを起動します
以降はsshにてホスト機からRaspberry Piに接続することを前提とします
OSバージョン確認
/etc/os-releaseの情報を確認しておきます
Debian GNU/Linux 13 (trixie)ならOK
raspi@raspi5:~ $ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 13 (trixie)"
NAME="Debian GNU/Linux"
VERSION_ID="13"
VERSION="13 (trixie)"
VERSION_CODENAME=trixie
DEBIAN_VERSION_FULL=13.6
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
ROS2 lyricalのビルド
事前準備
ROS2クライアントライブラリのビルドは時間がかかるため、
あらかじめターミナルマルチプレクサを導入しておきます。
sudo apt install tmux
### インストール時のログは省略 ###
locale設定
ラズパイにlocaleを設定します
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8
locale # locale確認
以下のようにlocaleが設定されていればOK
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
required repositoriesの有効化
software-properties-commonの有効化
これはラズパイでは設定できない&設定しなくても支障ないためスキップします
ROS2 aptリポジトリの有効化
以下のコマンドでaptリポジトリを有効化します
sudo apt update && sudo apt install curl -y
export ROS_APT_SOURCE_VERSION=$(curl -s https://api.github.com/repos/ros-infrastructure/ros-apt-source/releases/latest | grep -F "tag_name" | awk -F'"' '{print $4}')
curl -L -o /tmp/ros2-apt-source.deb "https://github.com/ros-infrastructure/ros-apt-source/releases/download/${ROS_APT_SOURCE_VERSION}/ros2-apt-source_${ROS_APT_SOURCE_VERSION}.$(. /etc/os-release && echo ${UBUNTU_CODENAME:-${VERSION_CODENAME}})_all.deb"
sudo dpkg -i /tmp/ros2-apt-source.deb
ビルドツールのインストール
必要なビルドツールを以下コマンドでインストールします
sudo apt update && sudo apt install -y \
python3-mypy \
python3-pip \
python3-pytest \
python3-pytest-cov \
python3-pytest-mock \
python3-pytest-repeat \
python3-pytest-rerunfailures \
python3-pytest-runner \
python3-pytest-timeout \
ros-dev-tools
ROS2 lyricalのソースコード取得
以下コマンドでソースコードを取得してきます
mkdir -p ~/ros2_lyrical/src
cd ~/ros2_lyrical
vcs import --input https://raw.githubusercontent.com/ros2/ros2/lyrical/ros2.repos src
tmuxの実行
以降の手順はtmuxセッション内で実行します
待ち時間が長くなりsshの接続切れによって中断されると面倒なためです
以下コマンドでtmuxセッションを起動します
tmux new -s lyrical_build
これで万が一接続が切れても再接続&lyrical_buildセッションへアタッチで戻ってこれます
依存関係解決
rosdepを使用してROS2 lyricalのビルドに必要な依存パッケージを取得してきます
なお、以下コマンドは~/ros2_lyrical配下で実行しています
sudo apt update && sudo apt upgrade -y
sudo rosdep init
rosdep update
rosdep install --from-paths src --ignore-src -y --skip-keys "fastcdr rti-connext-dds-7.7.0 urdfdom_headers"
colcon mixinのインストール
colcon mixinをインストールしていきます
colcon mixinはcolcon buildやcolcon testのときに渡す引数のショートカット集だそうです
colcon mixin add default https://github.com/colcon/colcon-mixin-repository/raw/master/index.yaml
colcon mixin update default
クライアントライブラリのビルド
いよいよROS2 lyricalをビルドしていきます
かなり時間がかかるので気長に待ちます
cd ~/ros2_lyrical/
colcon build --symlink-install --mixin release
余談ですが本環境ではすべてのパッケージでエラーなくビルドが通過しました
ROSのoverlay設定
ROSのoverlayを.bashrcの末尾に追記します
# ROS2
export ROS_DISTRO=lyrical
source ~/ros2_lyrical/install/setup.bash
ROS_DISTROを設定しているのに使っていない...
追記後は.bashrcをsourceしてoverlayを適用します
source ~/.bashrc
pub/subの導通テスト
デモノードを使って導通テストをします
わかりやすさのため、tmuxのペイン分割を使って縦に分けます
ROS2をビルドした時とは別のtmuxセッションを使用しています
同じセッションでも問題ありませんが、本記事ではわかりやすさのため分けています
tmux new -s pub_sub_test
# Ctrl+bの後に%を押すと左右に分割できます
# ペイン同士はCtrl+bの後に左右の方向キーで移動できます
# 片方のペインで以下を実行
ros2 run demo_nodes_cpp talker
# もう片方で以下を実行
ros2 run demo_noes_py listener
以下のような画面になれば導通テストはOKです
お疲れさまでした
終わりに
Raspberry PiでROS2を使用する場合はUbuntu22.04やUbuntu24.04を選ぶ方が多いと思いますが、
Raspberry Pi Camera v3やGPIO系を使用する際にRaspberry Pi OSのほうが都合がいい時もあります
そのような場合に本記事が一助になれば幸いです
Appendix
ご存じの方が多いと思いますが、ROS2ではデフォルトのRTPS以外にも
いくつかのRMWが選択可能です
今回はzenohを使用できるよう、公式の手順を参考にソースからビルドしました。
以下に実際に行った手順を示します
リポジトリのクローン
以下コマンドでリポジトリをクローンします
mkdir ~/ws_rmw_zenoh/src -p && cd ~/ws_rmw_zenoh/src
git clone https://github.com/ros2/rmw_zenoh.git -b lyrical
tmuxセッション有効化
ビルド用にtmuxセッションを立てます
tmux new -s zenoh_build
依存解決 & ソースビルド
rosdepを使用して依存解決をします
cd ~/ws_rmw_zenoh
rosdep install --from-paths src --ignore-src --rosdistro lyrical -y
公式の手順ではROSのOverlayを有効化していますが、
本環境は.bashrcにて設定済みのためスキップし、そのままビルドを実行します
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release
本環境ではすべてのパッケージでエラーなくビルドが通過しました


