Ubuntu で ROS 2 Jazzy Jalisco のビルドとインストール(ソースコードを使用)

ROS 2 は,毎年 5 月に新しいディストリビューションが公開される。ここでは 長期サポート(LTS)版の Jazzy Jalisco(2029年5月までサポート)をソースコードからビルドする手順を示す。ROS 1 の Melodic Morenia は 2023年5月にサポート終了となっており,Python 2 に依存する python-rosdep などのパッケージも現在の Ubuntu では提供されていない。

Jazzy Jalisco の対象プラットフォームは,Tier 1 が Ubuntu 24.04 (Noble) 64ビット,Tier 3 が Ubuntu 22.04 (Jammy) 64ビットおよび Debian 12 (Bookworm) 64ビットである。

目次

  1. 前準備
  2. ROS 2 のビルドとインストール
  3. ROS 2 の更新

前準備

Ubuntu のシステム更新

Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行する.

Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行する。これは、パッケージ情報を最新の状態に保ち、インストール済みのパッケージをセキュリティアップデートやバグ修正を含めて更新するためである。

Ubuntu のインストールはこちらの別ページで説明する。
# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを包括的に更新 (依存関係も考慮)
sudo apt full-upgrade
# カーネル更新等で実際に再起動が必要な場合のみ実行を推奨
# sudo shutdown -r now

C/C++ コンパイラと Make とビルドツールのインストール

ソフトウェアをソースコードからビルドするには、C/C++コンパイラ (通常はGCC) や make ユーティリティといった開発ツールが必要である。Ubuntuでは、これらのツールは build-essential パッケージにまとめられている。インストールするには,端末で,次のコマンドを実行する。

sudo apt -y install build-essential libtool texinfo dpkg-dev pkg-config

libtool, texinfo, dpkg-dev, pkg-config は、より複雑なビルドやパッケージ管理の際に役立つ開発関連ツールである。

ロケールの設定

ROS 2 のビルドと実行には UTF-8 に対応したロケールが必要である。端末で,次のコマンドを実行する。

sudo apt update
sudo apt -y 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

ROS 2 のビルドとインストール

https://docs.ros.org/en/jazzy/Installation/Alternatives/Ubuntu-Development-Setup.html の記述に従う

apt リポジトリの追加

開発ツールの入手のため,Ubuntu の universe リポジトリと ROS 2 の apt リポジトリを有効にする。端末で,次のコマンドを実行する。

sudo apt -y install software-properties-common
sudo add-apt-repository universe
sudo apt update && sudo apt -y install curl
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 -y install \
  python3-flake8-blind-except \
  python3-flake8-class-newline \
  python3-flake8-deprecated \
  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

ros-dev-tools には,ソースコードの取得に使う vcstool,依存関係の解決に使う rosdep,ビルドに使う colcon が含まれる。

いくつかの前準備

  1. ワークスペースの生成とソースコードの取得
    mkdir -p ~/ros2_jazzy/src
    cd ~/ros2_jazzy
    wget https://raw.githubusercontent.com/ros2/ros2/jazzy/ros2.repos
    vcs import src < ros2.repos
    
  2. rosdep の初期化と更新
    sudo rosdep init
    rosdep update
    
  3. 前提ソフトウェアのインストール
    cd ~/ros2_jazzy
    sudo apt update
    rosdep install --from-paths src --ignore-src -y --skip-keys "fastcdr rti-connext-dds-6.0.1 urdfdom_headers"
    

    Ubuntu を基にした他のディストリビューション(Linux Mint など)で Unsupported OS のエラーが出る場合は,上のコマンドに --os=ubuntu:noble を追加する。

  4. colcon mixin の設定
    colcon mixin add default https://github.com/colcon/colcon-mixin-repository/raw/master/index.yaml
    colcon mixin update default
    
  5. ワークスペースの構築

    apt などで別途 ROS 2 をインストールしている場合は,その設定を読み込んでいない端末でビルドを行う。printenv | grep -i ROS の出力が空であることを確認する。

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

    特定のパッケージのビルドで問題が起きる場合は,--packages-skip オプションでそのパッケージを除外できる(例:colcon build --symlink-install --packages-skip image_tools intra_process_demo)。

環境設定と動作確認

  1. 環境設定ファイルの読み込み
    . ~/ros2_jazzy/install/local_setup.bash
    
  2. C++ の talker の実行

    端末で,次のコマンドを実行する.

    . ~/ros2_jazzy/install/local_setup.bash
    ros2 run demo_nodes_cpp talker
    
  3. Python の listener の実行

    別の端末で,次のコマンドを実行する.

    . ~/ros2_jazzy/install/local_setup.bash
    ros2 run demo_nodes_py listener
    
  4. 結果の確認

    talker 側に Publishing,listener 側に I heard のメッセージが表示されること。これにより C++ と Python の両方の API が動作していることを確認できる。

ROS 2 の更新

ソースコードからインストールした ROS 2 を最新版に更新する手順を示す
  1. ros2.repos ファイルの待避と,その最新版の取得
    cd ~/ros2_jazzy
    mv -i ros2.repos ros2.repos.old
    wget https://raw.githubusercontent.com/ros2/ros2/jazzy/ros2.repos
    diff -u ros2.repos ros2.repos.old
    
  2. 取得済みリポジトリの情報の更新
    vcs custom --args remote update
    
  3. ソースコードの更新
    vcs import src < ros2.repos
    vcs pull src
    
  4. ワークスペースのリビルド
    colcon build --symlink-install
    
  5. ワークスペースの状態の書き出し

    現在のワークスペース内の各リポジトリのバージョンを記録・共有するときは,次のコマンドを実行する。

    cd ~/ros2_jazzy
    vcs export src > my_ros2.repos