Skip to content

vehicle_cmd_gate#

目的#

vehicle_cmd_gateは、緊急ハンドラ、プランニングモジュール、外部コントローラから情報を取得し、車両にメッセージを送信するためのパッケージです。

入出力#

入力#

名前 タイプ 説明
~/input/steering autoware_vehicle_msgs::msg::SteeringReport ステアリング状態
~/input/auto/control_cmd autoware_control_msgs::msg::Control Planningモジュールからの横方向・縦方向速度コマンド
~/input/auto/turn_indicators_cmd autoware_vehicle_msgs::msg::TurnIndicatorsCommand Planningモジュールからのターンインジケータコマンド
~/input/auto/hazard_lights_cmd autoware_vehicle_msgs::msg::HazardLightsCommand Planningモジュールからのハザードランプコマンド
~/input/auto/gear_cmd autoware_vehicle_msgs::msg::GearCommand Planningモジュールからのギアコマンド
~/input/external/control_cmd autoware_control_msgs::msg::Control 外部からの横方向・縦方向速度コマンド
~/input/external/turn_indicators_cmd autoware_vehicle_msgs::msg::TurnIndicatorsCommand 外部からのターンインジケータコマンド
~/input/external/hazard_lights_cmd autoware_vehicle_msgs::msg::HazardLightsCommand 外部からのハザードランプコマンド
~/input/external/gear_cmd autoware_vehicle_msgs::msg::GearCommand 外部からのギアコマンド
~/input/external_emergency_stop_heartbeat tier4_external_api_msgs::msg::Heartbeat ハートビート
~/input/gate_mode tier4_control_msgs::msg::GateMode ゲートモード (AUTO または EXTERNAL)
~/input/emergency/control_cmd autoware_control_msgs::msg::Control エマージェンシーハンドラからの横方向・縦方向速度コマンド
~/input/emergency/hazard_lights_cmd autoware_vehicle_msgs::msg::HazardLightsCommand エマージェンシーハンドラからのハザードランプコマンド
~/input/emergency/gear_cmd autoware_vehicle_msgs::msg::GearCommand エマージェンシーハンドラからのギアコマンド
~/input/engage autoware_vehicle_msgs::msg::Engage エンゲージ信号
~/input/operation_mode autoware_adapi_v1_msgs::msg::OperationModeState Autowareの動作モード

出力#

日本語訳:

自動運転ソフトウェアドキュメント#

計画コンポーネント#

自車位置推定#

自車位置推定モジュールは、各種センサーからデータを取得し、自己位置を推定します。位置、速度、加速度の推定値を出力します。

オドメトリ#

オドメトリモジュールは、車輪速度センサーや加速度計のデータを使用して、自車位置を推定します。自己位置の長期的な安定性は低いですが、短期間の推定には有用です。

外部センシング#

外部センシングモジュールは、レーダーやLiDARなどのセンサーからデータを取得して、周辺環境を認識します。物体検出、トラッキング、および障害物マッピングを行います。

Planning#

パスプランニング#

パスプランニングモジュールは、目標地点まで安全で効率的な経路を生成します。障害物回避、速度制限の遵守、「post resampling」などの制約を考慮します。

軌跡生成#

軌跡生成モジュールは、パスを滑らかな軌跡に変換します。速度、加速度、ジャークの制限を考慮します。

動作プランニング#

動作プランニングモジュールは、現在の走行条件に基づいて、適切な操作を決定します。たとえば、加速、減速、車線変更などを行います。

Safety#

障害物検出#

障害物検出モジュールは、外部センシングデータを使用して、周囲の障害物(車両、歩行者、建物など)を検出します。

逸脱量チェック#

逸脱量チェックモジュールは、速度逸脱量、加速度逸脱量、ジャーク逸脱量を監視します。安全でない動作を検出した場合は、警告または介入を行います。

緊急ブレーキ#

緊急ブレーキモジュールは、障害物との衝突が差し迫っていることを検出した場合に、自動的に緊急ブレーキをかけます。

コントロール#

ステアリング制御#

ステアリング制御モジュールは、軌跡に従うようにステアリング角を制御します。

加減速制御#

加減速制御モジュールは、軌跡に従うように速度と加速度を制御します。

その他のコンポーネント#

通信#

通信モジュールは、他の車両、インフラ、クラウドとの通信を行います。

センサーフュージョン#

センサーフュージョンモジュールは、さまざまなセンサーからのデータを統合して、周辺環境のより正確な表現を作成します。

マッピング#

マッピングモジュールは、周囲の環境を高精度マップに構築します。これにより、自動運転システムは、既知の道路でより正確に動作できます。

ローカリゼーション#

ローカリゼーションモジュールは、自己位置をマップに相対的に決定します。自己位置推定モジュールからの推定値と外部センシングモジュールからのデータを統合します。

Autowareについて#

Autowareは、オープンソースの自動運転ソフトウェアプラットフォームです。主要な機能として上記で説明したコンポーネントを提供します。詳細については、Autowareのドキュメントを参照してください。

名前 説明
~/output/vehicle_cmd_emergency tier4_vehicle_msgs::msg::VehicleEmergencyStamped コマンド内の緊急状態
~/output/command/control_cmd autoware_control_msgs::msg::Control 車両への横方向および縦方向速度コマンド
~/output/command/turn_indicators_cmd autoware_vehicle_msgs::msg::TurnIndicatorsCommand 車両へのターンインジケータコマンド
~/output/command/hazard_lights_cmd autoware_vehicle_msgs::msg::HazardLightsCommand 車両へのハザードランプコマンド
~/output/command/gear_cmd autoware_vehicle_msgs::msg::GearCommand 車両へのギアコマンド
~/output/gate_mode tier4_control_msgs::msg::GateMode ゲートモード(AUTOまたはEXTERNAL)
~/output/engage autoware_vehicle_msgs::msg::Engage エンゲージ信号
~/output/external_emergency tier4_external_api_msgs::msg::Emergency 外部緊急信号
~/output/operation_mode tier4_system_msgs::msg::OperationMode vehicle_cmd_gateの現在の動作モード

パラメータ#

パラメータ 説明
update_period double 更新周期
use_emergency_handling bool エマージェンシーハンドラ使用時はtrue
check_external_emergency_heartbeat bool エマージェンシーストップのハートビートを確認する場合true
system_emergency_heartbeat_timeout double システムエマージェンシーのタイムアウト
external_emergency_stop_heartbeat_timeout double 外部エマージェンシーのタイムアウト
filter_activated_count_threshold int フィルタアクティベーションのしきい値
filter_activated_velocity_threshold double フィルタアクティベーションの速度しきい値
stop_hold_acceleration double 車両が停止する場合の縦断加速度コマンド
emergency_acceleration double 車両がエマージェンシーで停止する場合の縦断加速度コマンド
moderate_stop_service_acceleration double 車両がモデレートストップサービスで停止する場合の縦断加速度コマンド
nominal.vel_lim double 縦断速度の制限(自律運転モードでアクティブ化)
nominal.reference_speed_point コントロールコマンドの制限の計算時に参照速度点として使用される速度点(自律運転モードでアクティブ化)。この配列のサイズは制限配列のサイズと同じにする必要があります。
nominal.lon_acc_lim 縦断加速度の限界値の配列(自律運転モードでアクティブ化)
nominal.lon_jerk_lim 縦断ジャークの限界値の配列(自律運転モードでアクティブ化)
nominal.lat_acc_lim 横断加速度の限界値の配列(自律運転モードでアクティブ化)
nominal.lat_jerk_lim 横断ジャークの限界値の配列(自律運転モードでアクティブ化)
on_transition.vel_lim double 縦断速度の制限(トランジションモードでアクティブ化)
on_transition.reference_speed_point コントロールコマンドの制限の計算時に参照速度点として使用される速度点(トランジションモードでアクティブ化)。この配列のサイズは制限配列のサイズと同じにする必要があります。
on_transition.lon_acc_lim 縦断加速度の限界値の配列(トランジションモードでアクティブ化)
on_transition.lon_jerk_lim 縦断ジャークの限界値の配列(トランジションモードでアクティブ化)
on_transition.lat_acc_lim 横断加速度の限界値の配列(トランジションモードでアクティブ化)
on_transition.lat_jerk_lim 横断ジャークの限界値の配列(トランジションモードでアクティブ化)

フィルタ機能#

このモジュールは、公開直前に制御コマンドに制限フィルタを組み込みます。主に安全上の理由から、このフィルタはAutowareを介して公開されるすべての制御コマンドの出力範囲を制限します。

制限値は、制限配列パラメータの1次元補間に基づいて計算されます。以下に縦断方向のジャーク制限の例を示します。

filter-example

注記: このフィルタは乗り心地を向上させるために設計されていません。その主な目的は、Autowareの最終段階で制御出力の異常値を検出して除去することです。このフィルタが頻繁にアクティブになる場合、制御モジュールの調整が必要になる可能性があります。ローパスフィルタや同様の手法で信号を滑らかにする場合、制御モジュールでその処理を行うべきです。フィルタがアクティブになると、トピック~/is_filter_activated が公開されます。

注記2: アクセル/ブレーキペダルによって駆動力が制御される車両を使用する場合、ペダルレート制限を表すジャーク制限は低速域で十分に緩和する必要があります。 そうでなければ、発進/停止時に素早くペダルを切り替えることができません。その結果、発進が遅れたり、下り坂でクリープ現象が発生したりします。発進/停止のためのこの機能はソースコードに埋め込まれていましたが、複雑でパラメータで実現できたため削除されました。

想定事項/既知の制限事項#

外部緊急ハートビート#

パラメータ check_external_emergency_heartbeat(デフォルトでtrue)は、外部モジュールからの緊急停止要求を有効にします。 この機能を使用するには、外部モジュールのヘルスモニタリング用のトピック~/input/external_emergency_stop_heartbeat が必要であり、vehicle_cmd_gateモジュールはトピックなしでは起動しません。 「外部緊急停止」機能を使用しない場合、check_external_emergency_heartbeat パラメータは false にする必要があります。

モード変更時のコマンド#

出力コマンドのトピック: turn_indicators_cmd, hazard_light および gear_cmdgate_mode に基づいて選択されます。 ただし、コマンドの継続性を確保するために、モードが変更された場合でも、新しい入力コマンドのトピックが届くまでこれらのコマンドは変更されません。