0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[ROS2] ROS2 lyricalをraspberry pi OSでビルドする

0
Posted at

はじめに

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

ボード選択画面はこんな感じでした
image.png

OS選択画面はこんな感じでした
image.png

あとはウィザードにしたがって書き込み先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の末尾に追記します

.bashr
# 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です
お疲れさまでした

image.png

終わりに

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

本環境ではすべてのパッケージでエラーなくビルドが通過しました

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?