colconを使用したパッケージのビルド
目標: colconを使用してROS 2ワークスペースをビルドします。
チュートリアルレベル: 初心者
所要時間: 20分
これは、colconを使用してROS 2ワークスペースを作成およびビルドする方法に関する簡潔なチュートリアルです。実践的なチュートリアルであり、コアドキュメントの代替として設計されていません。
背景
colconは、ROSビルドツールcatkin_make、catkin_make_isolated、catkin_tools、ament_toolsの改良版です。colconの設計についての詳細情報は、このドキュメントを参照してください。
ソースコードはcolcon GitHub organizationにあります。
前提条件
colconのインストール
Linux:
$ sudo apt install python3-colcon-common-extensionsmacOS:
$ brew install colconWindows:
> pip3 install colcon-common-extensionsROS 2のインストール
サンプルをビルドするには、ROS 2をインストールする必要があります。
インストール手順に従ってください。
注意
debパッケージからインストールする場合、このチュートリアルにはデスクトップインストールが必要です。
基本
ROSワークスペースは、特定の構造を持つディレクトリです。一般的にsrcサブディレクトリがあります。そのサブディレクトリ内にROSパッケージのソースコードが配置されます。通常、ディレクトリは最初は空の状態で開始されます。
colconはアウトオブソースビルドを実行します。デフォルトでは、srcディレクトリと同レベルに以下のディレクトリを作成します:
buildディレクトリは、中間ファイルが格納される場所です。各パッケージに対してサブフォルダーが作成され、そこでCMakeなどが呼び出されます。installディレクトリは、各パッケージがインストールされる場所です。デフォルトでは、各パッケージは別々のサブディレクトリにインストールされます。logディレクトリには、各colcon実行に関するさまざまなログ情報が含まれます。
注意
catkinと比較して、
develディレクトリはありません。
ワークスペースの作成
まず、ワークスペースを含むディレクトリ(ros2_ws)を作成します:
Linux/macOS:
$ mkdir -p ~/ros2_ws/src
$ cd ~/ros2_wsWindows:
> mkdir C:\dev\ros2_ws\src
> cd C:\dev\ros2_wsこの時点で、ワークスペースには単一の空のディレクトリsrcが含まれています:
.
└── src
1 directory, 0 filesソースの追加
ワークスペースのsrcディレクトリにexamplesリポジトリをクローンしましょう:
$ 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:
$ colcon build --symlink-installWindows:
> colcon build --symlink-installヒント
colcon buildを実行すると、CPU、RAM、I/Oが制限されたシステム(例:Raspberry Pi)で画面とマウスがフリーズする場合があるため、並列処理を使用する代わりに--executor sequential引数を使用してパッケージを1つずつビルドすることが有用な場合があります。必要に応じてより多くの引数についてはcolconドキュメントを参照してください。
ビルドが完了すると、build、install、logディレクトリが表示されるはずです:
.
├── build
├── install
├── log
└── src
4 directories, 0 filesテストの実行
先ほどビルドしたパッケージのテストを実行するには、以下を実行します:
Linux/macOS:
$ colcon testWindows:
> colcon test環境のソース
colconが正常にビルドを完了すると、出力はinstallディレクトリに配置されます。インストールされた実行可能ファイルやライブラリを使用する前に、それらをパスとライブラリパスに追加する必要があります。colconは、環境の設定を支援するためにbash/batファイルをinstallディレクトリに生成します。これらのファイルは、必要なすべての要素をパスとライブラリパスに追加し、パッケージによってエクスポートされたbashまたはシェルコマンドも提供します。
Linux/macOS:
$ source install/setup.bashWindows:
> call install/setup.batデモの試行
環境がソースされると、colconによってビルドされた実行可能ファイルを実行できます。サンプルからサブスクライバーノードを実行してみましょう:
$ ros2 run examples_rclcpp_minimal_subscriber subscriber_member_function別のターミナルで、パブリッシャーノードを実行しましょう(セットアップスクリプトをソースすることを忘れないでください):
$ ros2 run examples_rclcpp_minimal_publisher publisher_member_function数値が増加するパブリッシャーとサブスクライバーからのメッセージが表示されるはずです。
独自のパッケージの作成
colconはREP 149で定義されたpackage.xml仕様を使用します(format 2もサポートされています)。
colconは複数のビルドタイプをサポートしています。推奨されるビルドタイプはament_cmakeとament_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:
$ echo "source /usr/share/colcon_cd/function/colcon_cd.sh" >> ~/.bashrc
$ echo "export _colcon_cd_root=/opt/ros/humble/" >> ~/.bashrccolcon_cdをインストールした方法とワークスペースの場所によって、上記の手順は異なる場合があります。詳細についてはドキュメントを参照してください。LinuxとmacOSでこれを元に戻すには、システムのシェルスタートアップスクリプトを見つけて、追加されたsourceとexportコマンドを削除してください。
colconタブ補完のセットアップ
colconコマンドは、bashおよびbashライクシェルでのコマンド補完をサポートしています。colcon-argcompleteパッケージをインストールし、いくつかのセットアップが必要な場合があります。
ヒント
特定のパッケージをビルドしたくない場合は、ディレクトリに
COLCON_IGNOREという名前の空のファイルを配置すると、インデックスされません。CMakeパッケージでテストの設定とビルドを避けたい場合は、
--cmake-args -DBUILD_TESTING=0を渡すことができます。パッケージから単一の特定のテストを実行したい場合:
$ colcon test --packages-select YOUR_PKG_NAME --ctest-args -R YOUR_TEST_IN_PKGcolcon mixinsのセットアップ
さまざまなコマンドライン オプションは、書くのが面倒で、覚えるのが困難です。
例えば、CMakeビルドタイプをデバッグに変更するには、通常以下を使用します:
$ colcon build --cmake-args -DCMAKE_BUILD_TYPE=Debug一般的なコマンドラインオプションを呼び出しやすくするために、このリポジトリはこれらの「ショートカット」を利用可能にします。
デフォルトのcolcon mixinsをインストールするには、以下を実行します:
$ colcon mixin add default https://raw.githubusercontent.com/colcon/colcon-mixin-repository/master/index.yaml
$ colcon mixin update default次に、debug mixinの使用を試してみてください:
$ colcon build --mixin debug詳細については、colcon mixin repositoryを参照してください。