Skip to content

ワークスペースの作成

目標: ワークスペースを作成し、開発とテスト用のオーバーレイを設定する方法を学ぶ。

チュートリアルレベル: 初心者

所要時間: 20分

背景

ワークスペースは、ROS 2パッケージを含むディレクトリです。 ROS 2を使用する前に、作業予定のターミナルでROS 2インストールワークスペースをソースする必要があります。 これにより、そのターミナルでROS 2のパッケージが使用可能になります。

また、「オーバーレイ」をソースするオプションもあります。これは、拡張している既存のROS 2ワークスペース(「アンダーレイ」)に干渉することなく新しいパッケージを追加できるセカンダリワークスペースです。 アンダーレイには、オーバーレイ内のすべてのパッケージの依存関係が含まれている必要があります。 オーバーレイ内のパッケージは、アンダーレイ内のパッケージをオーバーライドします。 複数のアンダーレイとオーバーレイの層を持つことも可能で、各連続するオーバーレイは親アンダーレイのパッケージを使用します。

前提条件

タスク

1 ROS 2環境のソース

メインのROS 2インストールが、このチュートリアルのアンダーレイになります。 (アンダーレイは必ずしもメインのROS 2インストールである必要はないことに注意してください。)

ROS 2のインストール方法(ソースまたはバイナリ)と使用しているプラットフォームによって、正確なソースコマンドは異なります:

Linux/macOS:

bash
source /opt/ros/humble/setup.bash

Windows:

cmd
call C:\dev\ros2_humble\local_setup.bat

これらのコマンドがうまくいかない場合は、従ったインストールガイドを参照してください。

2 新しいディレクトリの作成

ベストプラクティスは、新しいワークスペースごとに新しいディレクトリを作成することです。 名前は重要ではありませんが、ワークスペースの目的を示すものにすると便利です。 「開発ワークスペース」として、ディレクトリ名ros2_wsを選択しましょう:

bash
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src

もう一つのベストプラクティスは、ワークスペース内のすべてのパッケージをsrcディレクトリに配置することです。 上記のコードは、ros2_ws内にsrcディレクトリを作成し、その中に移動します。

3 サンプルリポジトリのクローン

クローンする前に、まだros2_ws/srcディレクトリにいることを確認してください。

初心者開発者チュートリアルの残りでは独自のパッケージを作成しますが、今のところは既存のパッケージを使用してワークスペースをまとめる練習をします。

初心者:CLIツールチュートリアルを実行した場合、ros_tutorialsのパッケージの一つであるturtlesimに精通しているでしょう。

リポジトリには複数のブランチがある場合があります。 インストールしたROS 2ディストロを対象とするブランチをチェックアウトする必要があります。 このリポジトリをクローンする際は、そのブランチに続いて-b引数を追加してください。

ros2_ws/srcディレクトリで、以下のコマンドを実行します:

bash
git clone https://github.com/ros/ros_tutorials.git -b humble

これでros_tutorialsがワークスペースにクローンされました。 ros_tutorialsリポジトリにはturtlesimパッケージが含まれており、このチュートリアルの残りで使用します。 このリポジトリの他のパッケージは、COLCON_IGNOREファイルが含まれているためビルドされません。

これまでにサンプルパッケージでワークスペースを追加しましたが、まだ完全に機能するワークスペースではありません。 まず依存関係を解決し、その後ワークスペースをビルドする必要があります。

4 依存関係の解決

ワークスペースをビルドする前に、パッケージの依存関係を解決する必要があります。 すべての依存関係が既にある可能性もありますが、クローンするたびに依存関係をチェックするのがベストプラクティスです。 長い待機の後にビルドが失敗し、依存関係が不足していることに気づくのは避けたいものです。

ワークスペースのルート(ros2_ws)から、以下のコマンドを実行します:

ros_tutorialsクローンがあるsrcディレクトリにまだいる場合は、必ずcd ..を実行してワークスペース(ros2_ws)に戻ってください。

bash
cd ..
rosdep install -i --from-path src --rosdistro humble -y

LinuxでROS 2をソースまたはバイナリアーカイブからインストールした場合は、それらのインストール手順のrosdepコマンドを使用する必要があります。 ソースからのrosdepセクションバイナリアーカイブのrosdepセクションをご覧ください。

すべての依存関係が既にある場合、コンソールは以下を返します:

#All required rosdeps installed successfully

パッケージはpackage.xmlファイルで依存関係を宣言します(次のチュートリアルでパッケージについてより詳しく学びます)。 このコマンドはそれらの宣言を確認し、不足しているものをインストールします。 rosdepについて詳しくは、別のチュートリアル(近日公開)で学ぶことができます。

5 colconでワークスペースをビルド

ワークスペースのルート(ros2_ws)から、以下のコマンドを使用してパッケージをビルドできます:

bash
colcon build

出力例:

Starting >>> turtlesim
Finished <<< turtlesim [5.49s]

Summary: 1 package finished [5.58s]

注記

colcon buildの他の有用な引数:

  • --packages-up-to は、ワークスペース全体ではなく、必要なパッケージとその依存関係のみをビルドします(時間を節約)
  • --symlink-install は、Pythonスクリプトを微調整するたびに再ビルドする必要がなくなります
  • --event-handlers console_direct+ は、ビルド中にコンソール出力を表示します(それ以外はlogディレクトリで確認可能)
  • --executor sequential は、並列処理を使用する代わりに、パッケージを一つずつ処理します

ビルドが完了したら、ワークスペースのルート(~/ros2_ws)でコマンドを入力します。 colconが新しいディレクトリを作成したことがわかります:

bash
ls

出力:

build  install  log  src

installディレクトリは、ワークスペースのセットアップファイルがある場所で、オーバーレイをソースするために使用できます。

6 オーバーレイのソース

オーバーレイをソースする前に、ワークスペースをビルドしたターミナルとは別の新しいターミナルを開くことが非常に重要です。 ビルドしたのと同じターミナルでオーバーレイをソースしたり、オーバーレイがソースされている場所でビルドすると、複雑な問題が発生する可能性があります。

新しいターミナルで、メインのROS 2環境を「アンダーレイ」としてソースし、その「上に」オーバーレイをビルドできるようにします:

bash
source /opt/ros/humble/setup.bash

ワークスペースのルートに移動します:

bash
cd ~/ros2_ws

ルートで、オーバーレイをソースします:

bash
source install/local_setup.bash

注記

オーバーレイのlocal_setupをソースすると、オーバーレイで利用可能なパッケージのみが環境に追加されます。 setupは、オーバーレイと、それが作成されたアンダーレイの両方をソースし、両方のワークスペースを利用できるようにします。

したがって、メインのROS 2インストールのsetupをソースしてからros2_wsオーバーレイのlocal_setupをソースすることは、今行ったように、ros2_wssetupのみをソースすることと同じです。それはアンダーレイの環境も含んでいるからです。

これで、オーバーレイからturtlesimパッケージを実行できます:

bash
ros2 run turtlesim turtlesim_node

しかし、これがオーバーレイのturtlesimが実行されており、メインインストールのturtlesimではないことをどうやって確認できるでしょうか?

オーバーレイでturtlesimを変更して、その効果を確認してみましょう:

  • オーバーレイ内のパッケージを、アンダーレイとは別に変更してリビルドできます。
  • オーバーレイはアンダーレイよりも優先されます。

7 オーバーレイの変更

turtlesimウィンドウのタイトルバーを編集することで、オーバーレイのturtlesimを変更できます。 これを行うには、~/ros2_ws/src/ros_tutorials/turtlesim/srcturtle_frame.cppファイルを見つけます。 お好みのテキストエディタでturtle_frame.cppを開きます。

関数setWindowTitle("TurtleSim");を見つけ、値"TurtleSim""MyTurtleSim"に変更し、ファイルを保存します。

先ほどcolcon buildを実行した最初のターミナルに戻り、再度実行します。

2番目のターミナル(オーバーレイがソースされている)に戻り、再度turtlesimを実行します:

bash
ros2 run turtlesim turtlesim_node

turtlesimウィンドウのタイトルバーが「MyTurtleSim」と表示されているのが見えます。

オーバーレイでのturtlesim

このターミナルで先ほどメインのROS 2環境がソースされていたにもかかわらず、ros2_ws環境のオーバーレイがアンダーレイの内容よりも優先されます。

アンダーレイがまだ無傷であることを確認するために、新しいターミナルを開き、ROS 2インストールのみをソースします。 再度turtlesimを実行します:

bash
ros2 run turtlesim turtlesim_node

アンダーレイでのturtlesim

オーバーレイでの変更が実際にはアンダーレイの何も影響していないことがわかります。

まとめ

このチュートリアルでは、メインのROS 2ディストロインストールをアンダーレイとしてソースし、新しいワークスペースでパッケージをクローンしてビルドすることでオーバーレイを作成しました。 変更されたturtlesimで見たように、オーバーレイはパスの先頭に追加され、アンダーレイよりも優先されます。

オーバーレイの使用は、少数のパッケージで作業する場合に推奨されます。これにより、すべてを同じワークスペースに配置し、反復ごとに巨大なワークスペースを再ビルドする必要がなくなります。

次のステップ

独自のワークスペースの作成、ビルド、ソースの詳細を理解したので、独自のパッケージの作成方法を学ぶことができます。

Released under the MIT License.