ROS2 パッケージをビルドする

はじめに

以下の公式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を実行しなくてよいというのがちょっと感慨深いです。

終わりに

ひとまず、何となく環境インストールからビルドの仕方まではわかりました。
次はプログラム内でのメッセージ送受信の扱い方やツール類の使い方を見ていこうと思います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です