autoware_raw_vehicle_cmd_converter#
概要#
raw_vehicle_command_converter は、望ましいステアリングおよび加速度入力を具体的な車両制御コマンドに変換する、車両自動化システムにおける重要なノードです。この処理は、ルックアップテーブルとオプションのフィードバック制御システムの組み合わせによって実現されます。
ルックアップテーブル#
変換器の機能の中心は、CSV 形式のルックアップテーブルを使用することです。このテーブルは、スロットル/ブレーキペダル(車両制御インターフェイスによって異なります)と、さまざまな速度における対応する車両加速度との関係性をカプセル化します。変換器はこのデータを使用して、目標加速度を適切なスロットル/ブレーキ値に正確に変換します。
基準データの作成#
ルックアップテーブルの基準データは、次の手順で生成されます。
- データ収集: 平坦な道路で、一定値のコマンド(例: スロットル/ブレーキペダル)が適用されて車両を加速または減速させます。
- データ記録: この段階で、IMU 加速度と車両速度の両方のデータが記録されます。
- CSV ファイル生成: コマンド値、車両速度、および結果として得られた加速度の関係を示す CSV ファイルが作成されます。
アクセルマップが作成されると、RawVehicleCmdConverter ノードを起動するときにロードされ、起動ファイルでファイルパスが定義されます。
自動キャリブレーションツール#
ルックアップテーブルのキャリブレーションと調整を容易にするために、自動キャリブレーションツールが用意されています。このツールの詳細と手順は こちら で確認できます。
可変ギア比 (VGR)#
これは、タイヤ角をステアリング角に変換するためのギア比です。一般的に、操作性を向上させるために、速度が上がるにつれて、またはステアリング角が小さくなるにつれて、ギア比が動的に大きくなります。特定の車両では、データが収集され、ギア比は次の公式で近似されました。
その車両の場合、係数は次のとおりでした。
vgr_coef_a: 15.713
vgr_coef_b: 0.053
vgr_coef_c: 0.042
convert_steer_cmd_method: "vgr"
が選択されている場合、このノードはコントローラーからの制御コマンドを目的タイヤ角として受け取り、出力する目的操舵角を計算します。また、convert_actuation_to_steering_status: true
の場合、このノードはactuation_status
トピックを受信し、steer_wheel_angle
から操舵タイヤ角を計算してパブリッシュします。
入力トピック#
名称 | タイプ | 説明 |
---|---|---|
~/input/control_cmd |
autoware_control_msgs::msg::Control |
ターゲットの速度/加速度/ステアリング角度/ステアリング角度速度は、アクチュエータコマンドを計算するために必要です。 |
~/input/steering" |
autoware_vehicle_msgs::msg::SteeringReport |
convert_actuation_to_steering_status: false の場合のみサブスクライブします。ステアリングフィードバック制御に使用されるステアリングの現在の状態 |
~/input/odometry |
navigation_msgs::Odometry |
オドメトリの twist トピックが使用されます。 |
~/input/actuation_status |
tier4_vehicle_msgs::msg::ActuationStatus |
アクチュエータステータスは、車両側に送信されるのと同じタイプのステータスを受信すると想定されています。たとえば、スロットル/ブレーキペダル/ステアリングホイール角度が送信された場合、同じタイプのステータスが受信されます。ステアリングホイール角度の場合は、このノードでステアリングタイヤ角度と VGR の計算に使用されます。 |
出力トピック#
名称 | タイプ | 説明 |
---|---|---|
~/output/actuation_cmd |
tier4_vehicle_msgs::msg::ActuationCommandStamped |
車両が機械的入力を適用するためのアクチュエーションコマンド |
~/output/steering_status |
autoware_vehicle_msgs::msg::SteeringReport |
convert_actuation_to_steering_status: true の場合のみ公開されます。ステアリングタイヤ角度はステアリングホイール角度から計算されて公開されます。 |
パラメータ#
Name | Type | Description | Default | Range |
---|---|---|---|---|
csv_path_accel_map | string | path for acceleration map csv file | $(find-pkg-share autoware_raw_vehicle_cmd_converter)/data/default/accel_map.csv | N/A |
csv_path_brake_map | string | path for brake map csv file | $(find-pkg-share autoware_raw_vehicle_cmd_converter)/data/default/brake_map.csv | N/A |
csv_path_steer_map | string | path for steer map csv file | $(find-pkg-share autoware_raw_vehicle_cmd_converter)/data/default/steer_map.csv | N/A |
convert_accel_cmd | boolean | use accel or not | true | N/A |
convert_brake_cmd | boolean | use brake or not | true | N/A |
convert_steer_cmd | boolean | use steer or not | true | N/A |
use_steer_ff | boolean | steering steer controller using steer feed forward or not | true | N/A |
use_steer_fb | boolean | steering steer controller using steer feed back or not | true | N/A |
is_debugging | boolean | debugging mode or not | false | N/A |
max_throttle | float | maximum value of throttle | 0.4 | ≥0.0 |
max_brake | float | maximum value of brake | 0.8 | ≥0.0 |
max_steer | float | maximum value of steer | 10.0 | N/A |
min_steer | float | minimum value of steer | -10.0 | N/A |
steer_pid.kp | float | proportional coefficient value in PID control | 150.0 | N/A |
steer_pid.ki | float | integral coefficient value in PID control | 15.0 | >0.0 |
steer_pid.kd | float | derivative coefficient value in PID control | 0.0 | N/A |
steer_pid.max | float | maximum value of PID | 8.0 | N/A |
steer_pid.min | float | minimum value of PID | -8.0. | N/A |
steer_pid.max_p | float | maximum value of Proportional in PID | 8.0 | N/A |
steer_pid.min_p | float | minimum value of Proportional in PID | -8.0 | N/A |
steer_pid.max_i | float | maximum value of Integral in PID | 8.0 | N/A |
steer_pid.min_i | float | minimum value of Integral in PID | -8.0 | N/A |
steer_pid.max_d | float | maximum value of Derivative in PID | 0.0 | N/A |
steer_pid.min_d | float | minimum value of Derivative in PID | 0.0 | N/A |
steer_pid.invalid_integration_decay | float | invalid integration decay value in PID control | 0.97 | >0.0 |
convert_steer_cmd_method | string | method for converting steer command | vgr | ['vgr', 'steer_map'] |
vgr_coef_a | float | coefficient a for variable gear ratio | 15.713 | N/A |
vgr_coef_b | float | coefficient b for variable gear ratio | 0.053 | N/A |
vgr_coef_c | float | coefficient c for variable gear ratio | 0.042 | N/A |
convert_actuation_to_steering_status | boolean | convert actuation to steering status or not. Whether to subscribe to actuation_status and calculate and publish steering_status For example, receive the steering wheel angle and calculate the steering wheel angle based on the gear ratio. If false, the vehicle interface must publish steering_status. | true | N/A |
制限事項#
現在のフィードバック実装は、操舵制御のみに適用されます。