テンプレート#
autoware_behavior_velocity_speed_bump_module に基づく動作速度モジュールのテンプレート。
Autoware 動作速度モジュールテンプレート#
Scene#
TemplateModule クラス#
TemplateModule クラスは Autoware 動作速度プランナー内のシーンモジュールを作成するための基盤として機能します。モジュールの動作に必要なコアメソッドと機能を定義します。プレースホルダーコードは、特定の動作速度モジュールに合わせた実際のインプリメンテーションに置き換える必要があります。
コンストラクタ#
TemplateModuleのコンストラクタはモジュールを作成するための重要なパラメータを受け取ります:const int64_t module_id,const rclcpp::Logger & logger, andconst rclcpp::Clock::SharedPtr clock。これらのパラメータは、新しいモジュールを登録するときにTemplateModuleManagerによって供給されます。特定のモジュールインプリメンテーションで必要に応じて、他のパラメータをコンストラクタに追加できます。
modifyPathVelocity メソッド#
TemplateModuleクラスで定義されたこのメソッドは、特定の条件に基づいて入力パスの速度を変更することが期待されています。提供されるコードでは、テンプレートモジュールが実行されるときに一度だけ情報メッセージをログに記録します。- 速度変更の特定のロジックは、モジュールの要件に基づいてこのメソッドにインプリメントする必要があります。
createDebugMarkerArray メソッド#
TemplateModuleクラスで定義されているこのメソッドは、デバッグマーカーのビジュアライゼーションを作成し、visualization_msgs::msg::MarkerArrayとして返します。提供されるコードでは、空のMarkerArrayを返します。- モジュールの機能に固有のデバッグマーカーを生成するロジックを実装する必要があります。
createVirtualWalls メソッド#
createVirtualWallsメソッドはシーンの仮想壁を作成し、autoware::motion_utils::VirtualWallsとして返します。提供されるコードでは、空のVirtualWallsオブジェクトが返されます。- モジュールの要件に基づいて仮想壁を作成するロジックを実装する必要があります。
Manager#
モジュールの管理は manager.hpp と manager.cpp で定義されます。管理は 2 つのクラスによって処理されます:
TemplateModuleManagerクラスは、動作速度テンプレートシーンの管理と起動 (behavior_velocity_template_module/src/scene.cpp/hpp で定義) のコアロジックを定義します。親クラスSceneModuleManagerInterfaceから重要なマネージャー属性を継承します。TemplateModulePluginクラスは、TemplateModuleManagerを動作速度プランナーのロジックに統合する方法を提供します。
TemplateModuleManager クラス#
コンストラクタ TemplateModuleManager#
- これは
TemplateModuleManagerクラスのコンストラクタであり、パラメータとしてrclcpp::Node参照を受け取ります。 - メンバー変数
dummy_parameter_を 0.0 に初期化します。
getModuleName() メソッド#
- このメソッドは
SceneModuleManagerInterfaceクラスの仮想メソッドのオーバーライドです。 - モジュールの名前である定数文字列へのポインタを返します。この場合、モジュール名を「テンプレート」として返します。
launchNewModules() メソッド#
- これは
tier4_planning_msgs::msg::PathWithLaneId型の引数を取るプライベートメソッドです。 - 与えられたパス情報 (PathWithLaneId) に基づいて新しいモジュールを起動する責任があります。このメソッドの実装には、
TemplateModuleクラスを使用して動作速度プランナーに固有のモジュールの初期化と設定が含まれます。 - 提供されるソースコードでは、
module_idを 0 に初期化し、同じ ID を持つモジュールがすでに登録されているかどうかを確認します。登録されていない場合、TemplateModuleをモジュール ID で新しく登録します。TemplateModuleManagerによって管理される各モジュールは一意の ID を持つ必要があることに注意してください。テンプレートコードは単一のモジュールを登録するため、module_idは単純さのために 0 に設定されます。
getModuleExpiredFunction() メソッド#
- これは
tier4_planning_msgs::msg::PathWithLaneId型の引数を取るプライベートメソッドです。
- このメソッドの実装は、モジュールの有効期限ステータスを確認するために使用できる関数を返すことが期待されています。
メソッド launchNewModules() と getModuleExpiredFunction() の具体的な機能は、ビヘイビア速度モジュールの詳細とその Autoware システム内での管理方法によって異なります。モジュールの要件に従ってこれらのメソッドを実装する必要があります。
TemplateModulePlugin クラス#
TemplateModulePlugin クラス#
- このクラスは
PluginWrapper<TemplateModuleManager>から継承します。これは本質的に、動的にロードおよび管理できるプラグイン内へのTemplateModuleManagerクラスをラップします。
Example Usage#
次の例では、パスの各点を取得して 2 倍にします。つまり、速度を複製します。すべてのビヘイビア速度モジュールが実行された後、Velocity Smoother がパス速度をさらに変更することに注意してください。
bool TemplateModule::modifyPathVelocity(
[[maybe_unused]] PathWithLaneId * path, [[maybe_unused]] StopReason * stop_reason)
{
for (auto & p : path->points) {
p.point.longitudinal_velocity_mps *= 2.0;
}
return false;
}