Ubuntu で ROS 2 のインストールとテスト実行

ROS 2 のインストールとテスト実行について説明する.このページでは Ubuntu 24.04 LTS と,ROS 2 の LTS リリースである Jazzy Jalisco(サポート期限 2029 年 5 月)を対象とする.

ROS 2 のディストリビューションは,対応する Ubuntu のバージョンが定められている.Jazzy Jalisco は Ubuntu 24.04 LTS,2026 年 5 月にリリースされた Lyrical Luth(サポート期限 2031 年 5 月)は Ubuntu 26.04 LTS を Tier 1 のプラットフォームとする.Ubuntu 26.04 を使用する場合は,以下の手順の「jazzy」を「lyrical」に読み替える.

初代 ROS(ROS 1)は最終リリースの Noetic Ninjemys が 2025 年 5 月にサポートを終了しており,新規に導入する場合は ROS 2 を用いる.

関連する外部ページ】は https://docs.ros.org/en/jazzy/Installation/Ubuntu-Install-Debs.html

前準備

Ubuntu のシステム更新

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

Ubuntu のインストールはこちらの別ページで説明する。

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

ロケールの設定

ROS 2 は UTF-8 に対応したロケールを前提とする. 端末で,次のコマンドを実行する.

# 現在のロケールを確認 (UTF-8 であるかを確認)
locale

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 のインストール

  1. Ubuntu universe リポジトリの有効化

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

    sudo apt update
    sudo apt -y install software-properties-common
    sudo add-apt-repository universe
    
  2. ROS 2 の apt リポジトリと署名鍵の設定

    ros2-apt-source パッケージは,ROS 2 リポジトリの署名鍵と apt ソース設定を提供する.このパッケージを導入すると,リポジトリ設定の更新は apt による通常の更新で自動的に反映される.

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

    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
    
  3. ROS 2 のインストール

    ros-jazzy-desktop には,ROS 2 本体,RViz,デモ,チュートリアルが含まれる.GUI ツールを必要としない場合は,代わりに ros-jazzy-ros-base をインストールする.

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

    # パッケージリストの情報を更新
    sudo apt update
    sudo apt full-upgrade
    sudo apt -y install ros-jazzy-desktop
    
  4. 開発ツールのインストール

    パッケージのビルドを行う場合は ros-dev-tools をインストールする.これには colcon,rosdep,vcstool などが含まれる.

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

    sudo apt update
    sudo apt -y install ros-dev-tools
    
    Ubuntu 24.04 で ros-dev-tools のインストール時に依存関係の衝突が発生する場合がある.これは apt のソース設定に noble-updatesnoble-backports が含まれていないことが原因である.次のコマンドで確認する.
    grep Suites /etc/apt/sources.list.d/ubuntu.sources
    

    表示された行が「Suites: noble noble-updates noble-backports」でない場合は,このファイルを編集して上記の内容に書き換え,次のコマンドを実行する.

    sudo apt clean && sudo apt update && sudo apt full-upgrade -y
    
  5. rosdep の初期化

    rosdep は,パッケージが必要とするシステム依存パッケージを解決する仕組みである.

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

    sudo rosdep init
    rosdep update
    
  6. 環境設定

    ROS 2 のコマンドを使用するには,setup.bash を読み込んで環境変数を設定する必要がある.端末を開くたびに自動で読み込むために,~/.bashrc に追記する.

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

    echo "if [ -f /opt/ros/jazzy/setup.bash ]; then" >> ~/.bashrc
    echo "  source /opt/ros/jazzy/setup.bash" >> ~/.bashrc
    echo "fi" >> ~/.bashrc
    source ~/.bashrc
    
  7. 環境変数の確認

    新しい端末を開き,次のコマンドを実行する.「jazzy」と表示され,ROS_DISTRO や ROS_VERSION などの環境変数が設定されていれば,環境設定は完了している.

    printenv ROS_DISTRO
    env | grep ROS
    

インストールの確認(talker と listener)

ROS 2 の基本となる通信は,データを送信するパブリッシャ(publisher)と,データを受信するサブスクライバ(subscriber)によって行われる.これらの実行単位をノード(node)と呼ぶ.C++ 版のパブリッシャ talker と Python 版のサブスクライバ listener を実行することで,C++ と Python の両方の API が動作することを確認できる.

  1. talker の起動

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

    ros2 run demo_nodes_cpp talker
    
  2. listener の起動

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

    ros2 run demo_nodes_py listener
    

    talker 側に「Publishing」,listener 側に「I heard」と表示されれば,インストールは正常である.終了するときは,それぞれの端末で Ctrl + C を押す.

ROS 2 ワークスペースとパッケージの作成

  1. ROS 2 ワークスペースの作成

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

    mkdir -p ~/ros2_ws/src
    cd ~/ros2_ws
    
  2. パッケージの作成

    ros2 pkg create でパッケージの雛形を作成する.--dependencies に指定した rclcpp(C++ クライアントライブラリ)と std_msgs(標準メッセージ型)が,依存関係として package.xml と CMakeLists.txt に記述される.

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

    cd ~/ros2_ws/src
    ros2 pkg create --build-type ament_cmake --license Apache-2.0 beginner_tutorials --dependencies rclcpp std_msgs
    
  3. 作成された package.xml の確認

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

    cat ~/ros2_ws/src/beginner_tutorials/package.xml
    
  4. ワークスペースのビルド

    ROS 2 のビルドツールは colcon である.

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

    cd ~/ros2_ws
    colcon build
    
  5. ワークスペースの環境設定

    ビルドしたパッケージを利用できるようにするため,ワークスペースの setup.bash を読み込む.

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

    cd ~/ros2_ws
    source install/setup.bash
    

turtlesim の実行

turtlesim は,ROS 2 の基本操作を学ぶための 2 次元シミュレータである.

  1. turtlesim のインストール

    ros-jazzy-desktop をインストールした場合は,turtlesim も導入済みである.個別にインストールするときは, 端末で,次のコマンドを実行する.

    sudo apt update
    sudo apt -y install ros-jazzy-turtlesim
    
  2. turtlesim の起動

    turtlesim_node はノード名である.

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

    ros2 run turtlesim turtlesim_node
    
  3. ノード一覧の表示

    別の端末を開き,次のコマンドを実行する.「/turtlesim」と表示されれば,ノードが起動している.

    ros2 node list
    
  4. ノードの詳細情報の表示

    端末で,次のコマンドを実行する.そのノードが送受信するトピック,サービス,アクションが表示される.

    ros2 node info /turtlesim
    
  5. turtle_teleop_key の起動

    turtle_teleop_key はノード名である.

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

    ros2 run turtlesim turtle_teleop_key
    
  6. turtle_teleop_key を実行した端末でカーソルキーを操作すると,turtlesim のウィンドウ内のタートルが動く.

    終了するときは,それぞれの端末で Ctrl + C を押す.