概要
この記事では、ROS 2のインストール方法について説明する。
対応関係
ROSにはバージョンがあり、そのバージョンに応じてサポートされているOSのバージョンが異なる。
また、1つのバージョンのROSは複数のOSをサポートすることがあり、ROS 2ではサポートの品質はTierと呼ばれるカテゴリで分類されている。
Ubuntu LTS(Long Term Support)に対応する、Tier1(最もサポートの品質が高いカテゴリ)のROSバージョンの組み合わせに絞ると、ROSとUbuntuのバージョンの関係は以下のようになる。
表が示すように、使いたいROSのバージョンに対応したUbuntuを使用する必要がある。
ROSバージョン | Ubuntuバージョン | サポート期限 |
---|---|---|
Jazzy | 24.04 | 2029年5月 |
Humble | 22.04 | 2027年5月 |
Foxy | 20.04 | 2023年5月 |
これらのうち、本記事ではROS 2 Humbleをインストールする手順を解説する。
なお、ROSのバージョンごとにサポートされているプラットフォームは、REP2000と呼ばれるROSコミュニティの標準で定められている。
事前準備
まだUbuntuのインストールが済んでいない場合はそちらをまず先に行う。
基本的には、Ubuntu公式サイトから対象のバージョンを選択してインストールすればよい。
今回はHumbleをインストールするため、Ubuntu22.04をインストールする。
詳しいインストール方法については、Ubuntu公式サイトのガイドなどを参照する形とし本記事では省略する。
ROS 2のインストール方法
以下、ROS 2をインストールする際の手順を記載する。
紹介する手順はROS 2公式ドキュメント:Installationを参考にしているため、こちらも合わせて確認すること。
なお、今回はHumbleをインストールする手順を示す。他のバージョンをインストールする場合は、手順5でバージョン名を読み替えれば良い。
- ロケールの設定
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
- Ubuntuユニバースリポジトリを有効にする
sudo apt install software-properties-common
sudo add-apt-repository universe
- ROS 2ダウンロードのための公開鍵を取得する
sudo apt update && sudo apt install curl
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/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
- ROS 2 Humbleのインストール
sudo apt update
sudo apt upgrade
sudo apt install ros-humble-desktop python3-argcomplete
-
sudo apt install ros-humble-desktop
を実行するとRVizなどGUIツールも含めインストールすることが可能であるため、基本的にはこれを選べば良い。- GUIツールが不要な場合は、
sudo apt install ros-humble-ros-base
といったコマンドでもROS 2のインストールが可能である。 - 詳しくは、以下のサイトを参照。
ROS 2公式ドキュメント:Install ROS 2 packages
- GUIツールが不要な場合は、
-
python3-argcomplete
でコマンドのtab補完が行えるようになる。
以上でインストールは完了である。
正常にインストールされたか確認するため以下の作業を行う。
ROS 2のパスを通す
ROS 2のコマンドを現在のシェルで使用できるようにするために、以下のコマンドを実行する。
source /opt/ros/humble/setup.bash
- これも他のバージョンをインストールしたなら
humble
の部分を読み替えれば良い。 -
source
の代わりに.
を使用しても良い。
このコマンドは新しいターミナルを開いた際に毎度実行する必要がある。
下記コマンドを実行しておくとターミナル起動時に自動で設定が反映されるようになるため、行っておくと良い。
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
ただし、違うROS 2のバージョンをインストールして使用する場合は、~/.bashrcを編集してhumble
を対応するバージョン名に書き換える必要があることに注意。
テストの実行
ターミナルを二つ開き、以下のコマンドをそれぞれのターミナルで実行する。
上記のsource /opt/ros/humble/setup.bash
を事前に実行しておかないと以下のコマンドは機能しないので注意。
-
一つ目のターミナル
ros2 run demo_nodes_cpp talker
-
二つ目のターミナル
ros2 run demo_nodes_py listener
下記のような実行結果が出力されていれば、正常に動作している。
-
一つ目のターミナル
$ ros2 run demo_nodes_cpp talker [INFO] [1670560867.243833739] [talker]: Publishing: 'Hello World: 1' [INFO] [1670560868.243814406] [talker]: Publishing: 'Hello World: 2' [INFO] [1670560869.243824838] [talker]: Publishing: 'Hello World: 3' (以下省略)
-
二つ目のターミナル
$ ros2 run demo_nodes_py listener [INFO] [1670560867.251641902] [listener]: I heard: [Hello World: 1] [INFO] [1670560868.244443614] [listener]: I heard: [Hello World: 2] [INFO] [1670560869.244400955] [listener]: I heard: [Hello World: 3] (以下省略)
プログラムを停止したい場合は、そのプログラムが起動しているターミナル内でCtrl+Cを押す。
環境のセットアップ
上記の手順を行うことでROS 2のインストール自体は完了である。しかし、実際にROS 2を使用するにはいくつかの準備や設定が必要である。
それらを以下に記す。
ROS_DOMAIN_IDの設定
同一のネットワーク内で複数人がROS 2を使用すると、データが混線し自身の処理結果が意図しない形で他者に影響することがある。
これを回避するためにROS_DOMAIN_IDを設定する。
下記のコマンドで設定できる。
export ROS_DOMAIN_ID=<ID>
- <ID>に設定できる数値は0~232である。しかし、安全に通信を行ううえでは、0から101までの数値を用いることが望ましい。この範囲内での任意の数値を入力する。
このIDのルールについては、ROS 2公式ドキュメント:The ROS_DOMAIN_IDを参照すること。
なお、以下のコマンドを実行しておくと毎度コマンドを実行せずに済む。
echo "export ROS_DOMAIN_ID=<ID>" >> ~/.bashrc
- ただし、使用するROS_DOMAIN_IDを変える場合はこちらも正しい数値に変更する必要がある。
これを設定すると、同じROS_DOMAIN_ID同士でしかデータの通信を行わないようにできる。
なお、0を設定した場合はどのROS_DOMAIN_IDのデータともやり取りできる。
ROS_LOCALHOST_ONLY
ROS_LOCALHOST_ONLYを設定すると、通信先をlocalhost、つまり自身のPCのみに限定できる。
そのため、他のPCと通信を行わないのであればこちらも設定しておく。
値は1にする。
echo "export ROS_LOCALHOST_ONLY=1" >> ~/.bashrc
ワークスペースの作成
ROS 2を使用して作業を行う場合、まず始めにワークスペースを作成する必要がある。
これによりROS 2のパッケージを使用できるようになる。
以下のコマンドでワークスペースを作成できる。
mkdir -p ~/ros2_lecture_ws/src
cd ~/ros2_lecture_ws
colcon build
- ワークスペースを置くディレクトリ名は自由だが、今回は
ros2_lecture_ws
とした。 -
ros2_lecture_ws
の直下にsrc
ディレクトリを作成している。
このディレクトリにはROS 2のパッケージを置く。 - ワークスペース下で
colcon build
を行うことでワークスペースの構築が完了する。- 正常にビルドができた場合、~/ros2_lecture_ws内に/build, /install, /logが生成される。
-
colcon
がインストールされていない場合は下記コマンドでインストールする。sudo apt install python3-colcon-common-extensions
以降パッケージを作成してノードを実装した後は、このワークスペース内でcolcon build
を行う。
パッケージの作成
ROSはパッケージという単位でプログラムを管理する。
パッケージの作成は以下のようにして行う。
cd ~/ros2_lecture_ws/src
ros2 pkg create <package_name>
- パッケージ作成は必ずsrcディレクトリ以下で行う。
- には任意のパッケージ名を入力する。
パッケージのビルド
パッケージのビルド方法は二通りある。
-
ワークスペース以下のすべてのパッケージを一度にビルドする。
colcon build
-
対象のパッケージのみをビルドできる。
colcon build --packages-select <package_name>
オーバーレイ
以上でパッケージのビルドが完了するが、それだけでは実行ができない。
ビルドしたパッケージが使用できるようにパスを通す。
cd ~/ros2_lecture_ws
source install/local_setup.bash
使用するsource
コマンドの違いまとめ
-
source /opt/ros/humble/setup.bash
ROS 2にパスが通り、ROS 2のコマンドなどが使用可能になる。 -
source ~/(ワークスペース名)/install/local_setup.bash
ワークスペースにパスが通り、ワークスペース下でビルドしたパッケージが使用可能になる。