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?

Raspberry Pi OS(Raspberry Pi 5)にROS2(Jazzy Jalisco)をインストールする

Posted at

なぜ、UbuntuではなくRaspberry Pi OS?

ROS2がTier 1サポートとしているLinuxディストリビューションはUbuntuです。Rasperry Pi OSは、DebianベースなのでTier 3に該当します。
よって、ROS2を動かすにはRaspberry Pi 5の場合はUbuntu 24.04を使った方が良いのですが、デバイス・ドライバ周りで大変になりそうな予感がします。ですので、Raspberry Pi OSにインストールする事にしました。

なぜ、Jazzy Jalisco?

これを書いている2024年5月4日現在はJazzy Jaliscoはリリースされていません。(5月23日リリース予定)
しかし、Raspberry Pi 5にインストールできるRaspberry Pi OSはDebian 12(Bookworm)がベースになっています。このBookwormをサポートするROS2はJazzy Jaliscoです。ちょうど5月1日からJazzy Jalisco Testing and Tutorial Partyが実施されるので、チュートリアルにしたがってインストールする事にしました。

ソースからのインストール手順

システムセットアップ

ロケールの設定

現状の設定の確認をしたところ、イギリスの設定になっていました。

$ locale
LANG=en_GB.UTF-8
LANGUAGE=
LC_CTYPE="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_PAPER="en_GB.UTF-8"
LC_NAME="en_GB.UTF-8"
LC_ADDRESS="en_GB.UTF-8"
LC_TELEPHONE="en_GB.UTF-8"
LC_MEASUREMENT="en_GB.UTF-8"
LC_IDENTIFICATION="en_GB.UTF-8"
LC_ALL=

ROS2の前提はen_US.UTF-8になっています。今回は、この他にC.UTF-8ja_JP.UTF-8も変更できるようにしておきます。
まず、localsパッケージをインストールします。

sudo apt update && sudo apt install locales

/etc/locale.genを編集します。

sudo vi /etc/locale.gen

3行を以下のようにアンコメントします。

# 前略
C.UTF-8 UTF-8
# 中略
en_US.UTF-8 UTF-8
# 中略
ja_JP.UTF-8 UTF-8
# 後略

ロケールを生成し、更新します。

sudo locale-gen
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8

必要なリポジトリを有効化

必要なパッケージをインストールします。

sudo apt install software-properties-common

ROS 2 GPG keyを追加します。

sudo apt update && sudo apt install curl -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

リポジトリを追加します。

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2-testing/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

開発ツールをインストール

以下のようにコマンドを実行してパッケージをインストールします。

sudo apt update && sudo apt install -y \
  python3-pip \
  python3-pytest-cov \
  python3-flake8-blind-except \
  python3-flake8-class-newline \
  python3-flake8-deprecated \
  python3-pytest-repeat \
  python3-pytest-rerunfailures \
  ros-dev-tools

ROS 2のビルド

ROS 2のコードの取得

mkdir -p ~/ros2_jazzy/src
cd ~/ros2_jazzy
vcs import --input https://raw.githubusercontent.com/ros2/ros2/jazzy/ros2.repos src

rosdepを使って依存パッケージをインストール

~/ros2_jazzyディレクトリで、以下のコマンドを実行します。

sudo apt upgrade
sudo rosdep init
rosdep update
rosdep install --from-paths src --ignore-src -y --skip-keys "fastcdr rti-connext-dds-6.0.1 urdfdom_headers"

RMWの追加インストール

RMWについては、デフォルトのFastDDSを使うのでスキップします。

ワークスペースでビルド

以下のようにビルドします。3〜4時間かかりました。

cd ~/ros2_jazzy/
colcon build --symlink-install

環境のセットアップ

. ~/ros2_jazzy/install/local_setup.bash

例題を実行

新しいターミナルを開いて以下のようにtalkerを実行します。

$ . ~/ros2_jazzy/install/local_setup.bash
$ ros2 run demo_nodes_cpp talker
[INFO] [1714799965.074857896] [talker]: Publishing: 'Hello World: 1'
[INFO] [1714799966.074809413] [talker]: Publishing: 'Hello World: 2'
[INFO] [1714799967.074837432] [talker]: Publishing: 'Hello World: 3'
[INFO] [1714799968.074872230] [talker]: Publishing: 'Hello World: 4'
# 後略

別ターミナルで以下のようにlistenerを実行します。talkerの実行の後から開始したので、最初のメッセージは受け取れていません。

$ ros2 run demo_nodes_py listener
[INFO] [1714799984.097407047] [listener]: I heard: [Hello World: 20]
[INFO] [1714799985.076156630] [listener]: I heard: [Hello World: 21]
[INFO] [1714799986.076119553] [listener]: I heard: [Hello World: 22]
[INFO] [1714799987.076113662] [listener]: I heard: [Hello World: 23]
# 後略

終了するには、Ctrl + Cを入力します。

無事、インストールできてROS 2が動きました。

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?