コンテンツにスキップ

パラメータ詳説

このページでわかること

motor_control_app/config/ 配下の YAML ファイルにある全パラメータの意味・既定値・変更時の注意点がわかります。

パラメータファイルは ~/questix/motor_control_app/config/ にあります。--symlink-install でビルド済みの場合、YAML の変更はノード再起動のみで反映されます(再ビルド不要)。


drive_component.yaml(走行)

走行コンポーネント(drive_component)の設定です。

drive_component:
  ros__parameters:
    serial_port: "/dev/ttyACM0"
    baud_rate: 57600
    wheel_radius: 0.1
    wheel_separation: 0.5
    left_motor_id: 4
    right_motor_id: 5
    max_motor_rpm: 1000
    control_mode: "current"
    current_kp: 0.001
    current_ki: 0.0
    max_current_amp: 1.0
    integral_limit_amp: 0.3
    current_zero_deadband_rpm: 5
    status_publish_rate: 10.0
    status_topic: "/drive_motor_status"

シリアル通信

パラメータ 既定値 説明
serial_port /dev/ttyACM0 DDT モーターが接続された RS-485 アダプターのデバイスファイル
baud_rate 57600 ボーレート。DDT M0602C の既定に合わせる

ロボット物理パラメータ

パラメータ 既定値 説明
wheel_radius 0.1 m ホイール半径。変更すると速度換算に影響
wheel_separation 0.5 m 左右ホイール間隔。旋回半径の計算に使用

モーター設定

パラメータ 既定値 説明
left_motor_id 4 左側 DDT モーターの ID
right_motor_id 5 右側 DDT モーターの ID
max_motor_rpm 1000 最大回転数 [RPM]。組立直後は 100 程度から始めることを推奨

制御モード

パラメータ 既定値 説明
control_mode "current" "velocity"(ファーム内蔵速度ループ)または "current"(ソフトウェア PI 制御)
current_kp 0.001 電流モード比例ゲイン [A/rpm]。発振した場合は下げる
current_ki 0.0 電流モード積分ゲイン [A/(rpm·s)]。安定確認後に上げる
max_current_amp 1.0 電流指令の絶対値上限 [A]
integral_limit_amp 0.3 積分項の絶対値上限(アンチワインドアップ)
current_zero_deadband_rpm 5 目標 0 かつ実測がこの値以内のとき PI を停止・積分リセット

control_mode の選び方

  • velocity: DDT ファームウェアの速度ループを使用。シンプルで安定。
  • current: ソフトウェア PI で RPM → 電流指令を計算。精密操縦向きだが調整が必要。 初めて使う場合は velocity から始めることを推奨します。

joy_axis_drive_params.yaml(コントローラ軸)

コントローラのアナログ軸で走行を制御する際の設定です。

joy_axis_drive:
  ros__parameters:
    serial_port: "/dev/ttyACM0"
    baud_rate: 57600
    left_motor_id: 4
    right_motor_id: 5
    max_motor_rpm: 100
    left_axis_index: 1
    right_axis_index: 4
    invert_left_axis: false
    invert_right_axis: true
    status_publish_rate: 10.0
    publish_twist: true
パラメータ 既定値 説明
left_axis_index 1 左モーターを制御する Joy 軸番号(左スティック縦)
right_axis_index 4 右モーターを制御する Joy 軸番号(右スティック縦)
invert_left_axis false 左軸を反転するか(前後が逆の場合は true
invert_right_axis true 右軸を反転するか
max_motor_rpm 100 テスト用の低速設定。実際の使用では drive_component.yaml の値を使用

shot_config.yaml(発射・サーボ)

発射コンポーネント(shot_component)の設定です。コントローラ種別に応じて shot_config.dualshock.yaml / shot_config.uart.yaml のバリエーションがあります。

shot_component:
  ros__parameters:
    joy_topic: "/joy"
    port: "/dev/servo"
    baudrate: 115200
    tilt_servo_id: 11
    trigger_servo_id: 10
    fire_button: 5
    fire_duration_ms: 300
    tilt_axis: 7
    tilt_up_button_index: 4
    tilt_down_button_index: 6
    fire_angle: 145.0
    home_angle: 245.0
    tilt_max_angle: 120.0
パラメータ 既定値 説明
port /dev/servo サーボコントローラのデバイスファイル
baudrate 115200 サーボ通信のボーレート
tilt_servo_id 11 チルト(上下)サーボの ID
trigger_servo_id 10 トリガー(発射)サーボの ID
fire_button 5 発射ボタンの Joy インデックス(DualShock: R1、Switch: R)
fire_duration_ms 300 発射動作の持続時間 [ms]
tilt_axis 7 チルト操作に使う Joy 軸番号(-1 でボタンモードに切替)
tilt_up_button_index 4 チルト上ボタンのインデックス(DualShock: L1、Switch: L)
tilt_down_button_index 6 チルト下ボタンのインデックス(DualShock: L2、Switch: ZL)
fire_angle 145.0 発射角度 [°]
home_angle 245.0 ホーム(待機)角度 [°]
tilt_max_angle 120.0 チルトの最大可動角度 [°]

tilt_axis の切替

tilt_axis: 7 は D-pad の縦軸で連続チルト操作を行います。tilt_axis: -1 にするとボタン操作モードになり、tilt_up_button_index / tilt_down_button_index で操作します。


single_ddt_motor_config.yaml(単体 DDT テスト用)

1 台の DDT モーターを /cmd_vel で直接制御するテスト・デバッグ用ノードの設定です。

single_ddt_motor_node:
  ros__parameters:
    serial_port: "/dev/ttyACM0"
    baud_rate: 57600
    motor_id: 4
    max_motor_rpm: 100
    wheel_radius: 0.1
    velocity_scale_factor: 60.0
    watchdog_timeout: 1.0
    status_publish_rate: 5.0
パラメータ 既定値 説明
motor_id 4 制御するモーターの ID
max_motor_rpm 100 最大 RPM(テスト用に低め)
velocity_scale_factor 60.0 RPM = linear_x × velocity_scale_factor の係数
watchdog_timeout 1.0 秒。この時間 Twist が来ないとモーターを停止する

コントローラ種別バリエーション

shot_config.dualshock.yamlshot_config.uart.yaml は、コントローラの Joy インデックスが異なる以外は同じです。

パラメータ DualShock UART (Switch)
fire_button 5(R1) 5(R)
tilt_axis 7(D-pad 縦) 7(D-pad 縦)
tilt_up_button_index 4(L1) 4(L)
tilt_down_button_index 6(L2) 6(ZL)

launch 時に controller_type:=dualshock または controller_type:=uart を指定すると、対応する YAML が自動的に読み込まれます。