ros-tooling/generate_parameter_library

Declarative ROS 2 Parameters

解決する課題

ROS 2 ノードでは、パラメータの宣言、読み取り、検証、および動的な更新が必要です。これらのボイラープレートコードを手動で記述するのは面倒で、ミスも発生しやすくなります。このプロジェクトでは、シンプルな YAML 定義からすべてのコードを自動生成するため、ロジックを重複させることなく、一貫性のある検証済みのパラメータ処理を実現できます。

仕組み

各パラメータの型、デフォルト値、説明、検証ルール(範囲や許容値など)を記述した YAML ファイルを作成します。ビルドシステムがそのファイルを読み込み、構造体を含む C++ ヘッダーまたは Python モジュールを生成します。実行時には、生成された ParamListener クラスがノード上でパラメータを宣言し、値を取得して検証を行います。無効な値や必須パラメータの欠落がある場合は例外がスローされます。その後、get_params() を呼び出すことで、すべての値を含むスナップショット構造体(またはオブジェクト)を取得し、ネストされたフィールドとして簡単にアクセスできます。動的パラメータについては、変更の有無を確認したり、更新時に実行されるコールバックをアタッチしたりすることが可能です。

対象ユーザー

C++ や Python でノードパラメータを管理する際に、繰り返しコードを書きたくない ROS 2 開発者向けです。シンプルな構成から、カスタム検証、ネストされたパラメータ構造、他のパラメータをキーとするパラメータマップが必要な複雑な構成まで対応しています。

主な特徴

  • クリーンな YAML でパラメータを記述し、C++ または Python コードを自動生成。
  • 組み込みバリデーター:bounds、one_of、unique、size、not_empty など。
  • カスタム C++ バリデーターを追加し、YAML から参照可能。
  • シンプルな is_old() チェックやユーザーコールバックにより、動的なパラメータ更新が容易。
  • ノードのパラメータドキュメントを自動生成。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト