はじめに
以下の公式Wikiの手順に従って進めます。
https://index.ros.org/doc/ros2/Tutorials/Colcon-Tutorial/
ROS2ではcolconというコマンドを用いてビルドを行います。どうもROSはビルドシステムが落ち着かないようで、ROS1の頃はrosbuild→catkinと変更され、ROS2初期にはamentというシステムだったようです。現在のROS2は内部的にはamentを使うものの、ROS1 catkinとの相互運用性のために、一段上のレイヤのインタフェースコマンドであるcolconを用いるのが一般的だそうです。
事前準備
例によって、必要パッケージのインストールです。
sudo apt install python3-colcon-common-extensions
まず、ROSのワークスペースは、特定の決められたディレクトリ構造を持つ必要があります。~/ros2_example_ws/src
のような、ワークスペースディレクトリがあって、その中にsrcディレクトリがあるものです。colconコマンドはsrcディレクトリと同列に、build,install,logのディレクトリを生成します。ここまではcatkinと同じですが、catkinで存在したdevelディレクトリは無くなったようです。
ワークスペース作成
以下の手順で、ワークスペースを作成していきます。
mkdir -p ~/ros2_example_ws/src
cd ~/ros2_example_ws
サンプルのビルド
作成したら、srcディレクトリにサンプルソースをクローンしてきます。
git clone https://github.com/ros2/examples src/examples
ブランチをdashing用のものに切り替えます。
cd ~/ros2_example_ws/src/examples
git checkout dashing
cd ~/ros2_example_ws
ビルドの前に、sourceコマンドでROS2ディストリビューションのsetup.bashを実行しておく必要があります。ROS2ではこれをunderlayというそうです。そしてそれにかぶせるようにして、ワークスペースのsetup.bashを実行します。これをoverlayと呼ぶそうです。
環境設定をレイヤで重ねていくようなイメージですね。
ここではワークスペースはまだできていないため、ディストリビューションのsetup.bashのみ実行しておきます。インストール時に.bashrcに追記した人は必要ありません。
source /opt/ros/dashing/setup.bash
以下のコマンドでビルド開始です。
colcon build --symlink-install
--symlink-install
を指定することで、srcフォルダ内のリソースを自動生成ディレクトリにコピーするのではなくリンクとされるようになり、.pyなどの更新がリビルドなしに可能になるようです。
ここで、ビルドしたワークスペースのsetup.bashを実行します。これで、ビルドしたプログラムを実行できるようになります。
「.」はsourceコマンドの別名のようです。
. install/setup.bash
実行
端末を2つ開いて、以下のそれぞれを実行します。それぞれの端末で2つのsetup.bashを実行することを忘れてはいけません。
ros2 run examples_rclcpp_minimal_subscriber subscriber_member_function
ros2 run examples_rclcpp_minimal_publisher publisher_member_function
上のほうが受信(購読)側、下のほうが送信(出版)側です。両者でHello, world!の文字列が表示されれば成功です。
ROS1を知っている者としては、roscoreを実行しなくてよいというのがちょっと感慨深いです。
終わりに
ひとまず、何となく環境インストールからビルドの仕方まではわかりました。
次はプログラム内でのメッセージ送受信の扱い方やツール類の使い方を見ていこうと思います。