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()チェックやユーザーコールバックにより、動的なパラメータ更新が容易。 - ノードのパラメータドキュメントを自動生成。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト