【ROS2】amentについて

目次

amentの概要

amentはcatkinの進化形。※catkinはROS1時代のビルドシステム。

複数のパッケージに分かれたアプリケーションのビルドを効率化するためのシステム。

  • パッケージを設定、ビルド、インストールするためのシステム (例:CMakeやPython setuptools)
  • 依存関係を考慮し、パッケージを正しい順番でビルドするためのツール

各パッケージは独立してビルドされ、他のパッケージがその成果物を利用できるように環境を整える。
成果物が一般的な場所(例: /usr)にインストールされる場合、特別な設定は不要。

amentコマンドラインツール

パッケージのビルド、テスト、インストール、アンインストールを行うPythonツール。
ワークスペース内のパッケージを順番にビルドする。異なるビルドシステムにも対応できる柔軟性を持つ。
(異なるビルドシステム:現在はCMakeとPythonがサポートされている)

ビルドタイプ:ament_cmake

CMakeを使ってパッケージを簡単に作成するためのツール。

  • インクルードディレクトリやライブラリの情報を他のパッケージに伝える設定ファイルを自動生成。
    CMakeLists.txt
  • テストの登録を簡単にし、テスト結果をJUnit形式で出力。
  • PATHなどの環境変数を自動で拡張。
  • パッケージ情報を管理するリソースインデックスを作成。
  • アンインストール機能も利用可能。

これらの機能はモジュール化されており、新しい機能を追加できる。

ビルドタイプ:ament_python

    • ‘setup.py’を使用してsetuptoolsでパッケージをビルド
    • 標準のPythonパッケージビルドのワークフローを使用。
    • パッケージのマニュフェストをインストール先にコピー
    • 環境変数’PYTHONPATH’と’PATH’を拡張し、パッケージのPythonモジュールと実行可能ファイルを含める。

    環境設定

    • インストール先:一般的にFilesystem Hierarchy Standard(FHS)に従うべきですが、
      amentでは矯正されていない
    • 環境設定の必要性:パッケージがインストールされる場所によって、リソースを見つけるために環境を設定する必要があります。
    • パッケージ固有のスクリプト:各パッケージは、自分の環境設定に合わせたシェルスクリプトを提供できます。これらのスクリプトは<prefix>/share/<pkg-name>フォルダにあり、local_setup.*ファイルが環境変数を更新します。
    • amentツールの役割:インストール先のルートには、amentツールが生成する異なるシェルスクリプトがあります。local_setup.*ファイルは、すべてのパッケージの固有の設定ファイルを読み込みます。setup.*ファイルは、このインストール先の外にあるワークスペースも考慮し、その設定ファイルを読み込んでからlocal_setup.*ファイルを読み込みます。

    シンボリックリンクによるインストール (オプション)

    • 開発効率の向上: コードの変更、ビルド、インストール、実行を効率的に行うために、シンボリックリンクを利用することが重要です。通常、インストール時にはリソースをソーススペースから最終的なインストール場所にコピーしますが、amentではシンボリックリンクを使用するオプションを提供しています(プラットフォームがサポートしている場合)。
    • シンボリックリンクの利点::ソーススペース内のリソースを変更し、インストールステップをスキップできるため、開発効率が向上します。
    • CMakeパッケージ::install()関数をオーバーライドすることでシンボリックリンクを使用できます。
    • Pythonパッケージ: 開発モードを利用してパッケージをインストールします。
    • 有効化方法::シンボリックリンクによるインストールはオプション機能であり、コマンドラインオプション--symlink-installを使用して明示的に有効にする必要があります。

    実行例

    前提条件

    • Raspberry pi 4
    • ubuntu 22.04
    • ROS2 humble インストール済
    • colconインストール済
    • pythonでコーディングしていく

    開発専用のワークスペースというディレクトリ(trial_ws)を~/の直下に作る。

    cd ~/
    mkdir trial_ws

    ROS2では、プログラムコードをパッケージ単位でまとめて扱う。
    パッケージは機能単位ごとにまとめて作る。
    パッケージはワークスペースの直下に作るディレクトリsrcに配置される。

    cd ~/trial_ws
    mkdir src

    ターミナルでROS2のコマンドが使えるようにし、ROS2の環境設定をするため、次のコマンドを入力する。

    source /opt/ros/hubmle/setup.bash

    パッケージ ‘dummy_package’をsrcディレクトリの中に作る。

    cd src
    ros2 pkg create --build-type ament_python dummy_package

    Pythonでコーディングしていくので、ament_python
    パッケージ名はdummy_package

    dummy_packageディレクトリ内に下記が作成されているか確認する。

    • dummy_package:パッケージと同名のディレクトリ
    • package.xml:ソースファイルをビルドするためのファイル
    • resource
    • setup.cfg
    • setup.py:ソースファイルをビルドするためのファイル
    • test

    colconでビルドする。 ※colcon build するときは、必ずワークスペースで実行する

    cd ~/trial_ws
    colcon build

    trial_wsの中を確認

    • build:作成されたディレクトリ
    • install:作成されたディレクトリ
    • log:作成されたディレクトリ
    • src:もともとあったディレクトリ

    ビルド後は、ワークスペースの環境変数が変わっているので、ワークスペースとターミナルの設定するため
    次のコマンドを入力する。このコマンドもワークスペースのディレクトリで入力する。
    今回は ~/trial_ws

    . install /setup.bush

    一連の流れ

    1. パッケージ作成
    2. Pythonのソースファイル作成
    3. setup.pyを書き換え
    4. package.xmlを書き換え
    5. ビルド
    よかったらシェアしてね!
    • URLをコピーしました!
    • URLをコピーしました!

    コメント

    コメントする

    目次