Skip to content

colconを使用したパッケージのビルド

目標: colconを使用してROS 2ワークスペースをビルドします。

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

所要時間: 20分

これは、colconを使用してROS 2ワークスペースを作成およびビルドする方法に関する簡潔なチュートリアルです。実践的なチュートリアルであり、コアドキュメントの代替として設計されていません。

背景

colconは、ROSビルドツールcatkin_makecatkin_make_isolatedcatkin_toolsament_toolsの改良版です。colconの設計についての詳細情報は、このドキュメントを参照してください。

ソースコードはcolcon GitHub organizationにあります。

前提条件

colconのインストール

Linux:

bash
$ sudo apt install python3-colcon-common-extensions

macOS:

bash
$ brew install colcon

Windows:

cmd
> pip3 install colcon-common-extensions

ROS 2のインストール

サンプルをビルドするには、ROS 2をインストールする必要があります。

インストール手順に従ってください。

注意

debパッケージからインストールする場合、このチュートリアルにはデスクトップインストールが必要です。

基本

ROSワークスペースは、特定の構造を持つディレクトリです。一般的にsrcサブディレクトリがあります。そのサブディレクトリ内にROSパッケージのソースコードが配置されます。通常、ディレクトリは最初は空の状態で開始されます。

colconはアウトオブソースビルドを実行します。デフォルトでは、srcディレクトリと同レベルに以下のディレクトリを作成します:

  • buildディレクトリは、中間ファイルが格納される場所です。各パッケージに対してサブフォルダーが作成され、そこでCMakeなどが呼び出されます。

  • installディレクトリは、各パッケージがインストールされる場所です。デフォルトでは、各パッケージは別々のサブディレクトリにインストールされます。

  • logディレクトリには、各colcon実行に関するさまざまなログ情報が含まれます。

注意

catkinと比較して、develディレクトリはありません。

ワークスペースの作成

まず、ワークスペースを含むディレクトリ(ros2_ws)を作成します:

Linux/macOS:

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

Windows:

cmd
> mkdir C:\dev\ros2_ws\src
> cd C:\dev\ros2_ws

この時点で、ワークスペースには単一の空のディレクトリsrcが含まれています:

.
└── src

1 directory, 0 files

ソースの追加

ワークスペースのsrcディレクトリにexamplesリポジトリをクローンしましょう:

bash
$ git clone https://github.com/ros2/examples src/examples -b humble

これで、ワークスペースにROS 2サンプルのソースコードが含まれるはずです:

.
└── src
    └── examples
        ├── CONTRIBUTING.md
        ├── LICENSE
        ├── rclcpp
        ├── rclpy
        └── README.md

4 directories, 3 files

アンダーレイのソース

サンプルパッケージに必要なビルド依存関係をワークスペースに提供する既存のROS 2インストールの環境をソースすることが重要です。これは、バイナリインストールまたはソースインストール(つまり、別のcolconワークスペース)によって提供されるセットアップスクリプトをソースすることで実現されます(インストールを参照)。この環境をアンダーレイと呼びます。

私たちのワークスペースros2_wsは、既存のROS 2インストールの上のオーバーレイになります。一般的に、同じワークスペースにすべてのパッケージを配置するのではなく、少数のパッケージで反復を計画している場合はオーバーレイの使用をお勧めします。

ワークスペースのビルド

注意

WindowsでパッケージをビルドするにはVisual Studio環境にいる必要があります。詳細はBuilding the ROS 2 Codeを参照してください。

ワークスペースのルートで、colcon buildを実行します。ament_cmakeなどのビルドタイプはdevelスペースの概念をサポートせず、パッケージのインストールを必要とするため、colconは--symlink-installオプションをサポートしています。これにより、より高速な反復のために、sourceスペースのファイル(例:Pythonファイルや他の非コンパイル済みリソース)を変更することでインストールされたファイルを変更できます。

Linux/macOS:

bash
$ colcon build --symlink-install

Windows:

cmd
> colcon build --symlink-install

ヒント

colcon buildを実行すると、CPU、RAM、I/Oが制限されたシステム(例:Raspberry Pi)で画面とマウスがフリーズする場合があるため、並列処理を使用する代わりに--executor sequential引数を使用してパッケージを1つずつビルドすることが有用な場合があります。必要に応じてより多くの引数についてはcolconドキュメントを参照してください。

ビルドが完了すると、buildinstalllogディレクトリが表示されるはずです:

.
├── build
├── install
├── log
└── src

4 directories, 0 files

テストの実行

先ほどビルドしたパッケージのテストを実行するには、以下を実行します:

Linux/macOS:

bash
$ colcon test

Windows:

cmd
> colcon test

環境のソース

colconが正常にビルドを完了すると、出力はinstallディレクトリに配置されます。インストールされた実行可能ファイルやライブラリを使用する前に、それらをパスとライブラリパスに追加する必要があります。colconは、環境の設定を支援するためにbash/batファイルをinstallディレクトリに生成します。これらのファイルは、必要なすべての要素をパスとライブラリパスに追加し、パッケージによってエクスポートされたbashまたはシェルコマンドも提供します。

Linux/macOS:

bash
$ source install/setup.bash

Windows:

cmd
> call install/setup.bat

デモの試行

環境がソースされると、colconによってビルドされた実行可能ファイルを実行できます。サンプルからサブスクライバーノードを実行してみましょう:

bash
$ ros2 run examples_rclcpp_minimal_subscriber subscriber_member_function

別のターミナルで、パブリッシャーノードを実行しましょう(セットアップスクリプトをソースすることを忘れないでください):

bash
$ ros2 run examples_rclcpp_minimal_publisher publisher_member_function

数値が増加するパブリッシャーとサブスクライバーからのメッセージが表示されるはずです。

独自のパッケージの作成

colconはREP 149で定義されたpackage.xml仕様を使用します(format 2もサポートされています)。

colconは複数のビルドタイプをサポートしています。推奨されるビルドタイプはament_cmakeament_pythonです。純粋なcmakeパッケージもサポートされています。

ament_pythonビルドの例はament_index_python packageで、setup.pyがビルドの主要なエントリーポイントです。

demo_nodes_cppのようなパッケージはament_cmakeビルドタイプを使用し、CMakeをビルドツールとして使用します。

便宜上、ツールros2 pkg createを使用してテンプレートに基づいて新しいパッケージを作成できます。パッケージの作成とros2 pkg createの使用方法の完全な説明は、今後のチュートリアルパッケージの作成にあります。

注意

catkinユーザーにとって、これはcatkin_create_packageに相当します。

colcon_cdのセットアップ

colcon_cdコマンドを使用すると、シェルの現在の作業ディレクトリをパッケージのディレクトリにすばやく変更できます。例として、colcon_cd some_ros_package~/ros2_ws/src/some_ros_packageディレクトリにすばやく移動します。colcon_cdをセットアップするには、シェルスタートアップスクリプトを変更するために以下のコマンドを実行する必要があります:

Linux/macOS:

bash
$ echo "source /usr/share/colcon_cd/function/colcon_cd.sh" >> ~/.bashrc
$ echo "export _colcon_cd_root=/opt/ros/humble/" >> ~/.bashrc

colcon_cdをインストールした方法とワークスペースの場所によって、上記の手順は異なる場合があります。詳細についてはドキュメントを参照してください。LinuxとmacOSでこれを元に戻すには、システムのシェルスタートアップスクリプトを見つけて、追加されたsourceとexportコマンドを削除してください。

colconタブ補完のセットアップ

colconコマンドは、bashおよびbashライクシェルでのコマンド補完をサポートしています。colcon-argcompleteパッケージをインストールし、いくつかのセットアップが必要な場合があります

ヒント

  • 特定のパッケージをビルドしたくない場合は、ディレクトリにCOLCON_IGNOREという名前の空のファイルを配置すると、インデックスされません。

  • CMakeパッケージでテストの設定とビルドを避けたい場合は、--cmake-args -DBUILD_TESTING=0を渡すことができます。

  • パッケージから単一の特定のテストを実行したい場合:

bash
$ colcon test --packages-select YOUR_PKG_NAME --ctest-args -R YOUR_TEST_IN_PKG

colcon mixinsのセットアップ

さまざまなコマンドライン オプションは、書くのが面倒で、覚えるのが困難です。

例えば、CMakeビルドタイプをデバッグに変更するには、通常以下を使用します:

bash
$ colcon build --cmake-args -DCMAKE_BUILD_TYPE=Debug

一般的なコマンドラインオプションを呼び出しやすくするために、このリポジトリはこれらの「ショートカット」を利用可能にします。

デフォルトのcolcon mixinsをインストールするには、以下を実行します:

bash
$ colcon mixin add default https://raw.githubusercontent.com/colcon/colcon-mixin-repository/master/index.yaml
$ colcon mixin update default

次に、debug mixinの使用を試してみてください:

bash
$ colcon build --mixin debug

詳細については、colcon mixin repositoryを参照してください。

Released under the MIT License.