コンテンツにスキップ

DDT モーター ID 変更

このページでわかること

ddt_checker.py を使って DDT モーター(M0602C)の ID を確認・変更する手順がわかります。新品モーターの初期 ID 設定や、モーターを交換したときの再設定に使います。

なぜ ID 変更が必要か

QUESTiX の走行モーターは RS-485 バスで制御されます。バス上では ID でモーターを識別 するため、左右のモーターが別々の ID を持っている必要があります。

モーター 標準 ID
左モーター 4
右モーター 5

新品の DDT モーターは ID が異なる場合があります。組立前・交換後に必ず確認してください。


安全注意事項

作業前に必ず確認

  • DDT モーターを 1 台だけ 接続した状態で行ってください。複数台を同じ RS-485 バスに繋いだまま変更すると、すべてのモーターが同じ ID になるおそれがあります。
  • 作業前に ROS 2 の走行ノード・QUESTiX Launcher・他のシリアル通信ツールをすべて終了してください。
  • 非常停止ボタンをすぐに押せる状態で作業してください。

前提

項目 内容
ツール ddt_checker.py~/questix/ddt_checker.py
実行環境 Python 3 + tkinter が使える端末(Pi または開発機)
接続 USB/RS-485 変換器が /dev/ttyACM0 に現れていること
ボーレート 57600

手順

全体フローを確認する
flowchart TD
    A["① ddt_checker.py を起動\npython3 ~/questix/ddt_checker.py"] --> B
    B["② ポートの確認\n/dev/ttyACM0@57600 が利用可能か"] --> C
    C["③「情報更新」で現在 ID を確認"] --> D
    D["④ 新しい ID を入力\n左=4 / 右=5"] --> E
    E["⑤「ID変更」ボタンを押す\n完了ダイアログを確認"] --> F
    F["⑥ モーターの電源を入れ直す\n(ID はリセット後に有効)"] --> G
    G["⑦「情報更新」で変更後 ID を確認\nFault: 0x00 であること"]

① ddt_checker.py を起動する

cd ~/questix
python3 ddt_checker.py

GUI ウィンドウが開きます。

起動直後の画面。Port Status が緑色で「利用可能 (/dev/ttyACM0@57600)」と表示されている。

Port Status: 利用可能 (/dev/ttyACM0@57600) が緑色で表示されていることを確認します。表示されない場合は、モーター電源・USB/RS-485 変換器の接続・ポート名・アクセス権限を確認してください。

ボーレート自動検出について

「ボーレート自動検出」ボタンは現バージョンでは使用できません。手動で 57600 を選択してください。

②③「情報更新」で現在の ID を確認する

「情報更新」ボタンをクリックすると、端末に送信コマンドと受信データが表示され、GUI のフィールドが更新されます。

情報更新後の画面。ID: 4、Fault: 0x00 が表示されている。端末には送信バイト列と受信データが出力されている。

端末出力の見方:

送信コマンド: C8 64 00 00 00 00 00 00 00 DE
利用可能バイト数: 10
受信データ: 04 02 FF E6 00 00 7D 1F 00 B2
             先頭バイトが現在の ID(この例では 04)

GUI フィールドの確認ポイント:

表示項目 確認ポイント
ID 変更前後で期待値(4 または 5)になっているか
Mode 参考値
Current 停止中は小さい値(例:-0.026 A
Velocity 停止中は 0 rpm
Temperature N/A (not in this response) は正常
Position 参考値(16 進数)
Fault 0x00 = エラーなし

④ ID 設定欄をスクロールして ID を入力する

ウィンドウ右側のスクロールバーを下へ動かすと「ID 設定」欄が現れます。「新しい ID (0〜255)」欄に目的の値を入力します。

スクロールして ID 設定欄が表示された画面。入力欄に「5」が入力されており、「ID変更」ボタンが見える。

対象 入力する ID
左モーター 4
右モーター 5

接続台数を再確認

入力前に、モーターが 1 台だけ 接続されていることを再確認してください。

⑤「ID変更」ボタンを押す

「ID変更」をクリックすると完了ダイアログが表示されます。

完了ダイアログ。「ID を 5 に変更しました。再接続時に有効になります。」と表示されている。

ダイアログの内容(例:「ID を 5 に変更しました。再接続時に有効になります。」)を確認して OK を押します。

⑥ モーターの電源を入れ直す

ID 変更は電源再投入後に有効になります。モーターの電源を切り、数秒待ってから再投入してください。

⑦「情報更新」で変更後の ID を確認する

再度「情報更新」をクリックし、以下を確認します。

  • ID が設定した値(4 または 5)になっている
  • Fault: 0x00(エラーなし)

config ファイルとの照合

ID 変更後、motor_control_app/config/drive_component.yaml の設定値と一致しているか確認します。

drive_component:
  ros__parameters:
    left_motor_id: 4   # ← 左モーターの ID
    right_motor_id: 5  # ← 右モーターの ID

ID が一致しない場合、走行ノードが誤ったモーターに指令を送り正常に動作しません。


トラブルシューティング

ポートが利用不可になる

# デバイスファイルが存在するか確認
ls -l /dev/ttyACM* /dev/ttyUSB* 2>/dev/null || echo "デバイスなし"

# ポートを使用しているプロセスを確認
fuser -v /dev/ttyACM0
  • 別プロセスがポートを占有している場合は終了してください。
  • USB/RS-485 変換器を抜き差しするとポート名が変わることがあります(/dev/ttyACM1 等)。

「情報更新」で応答がない

  • モーター電源が入っているか・非常停止が解除されているか確認してください。
  • RS-485 の A/B 配線が逆になっていないか確認してください。
  • ボーレートが 57600 であることを確認してください。
  • モーターが 1 台だけ 接続されているか確認してください。

ID が変わっていない

  • 電源を入れ直していない場合は、モーターの電源を切り再投入してください。
  • 完了ダイアログが表示されなかった場合は、ポートの占有や接続不良が原因の可能性があります。ポートを確認して再試行してください。

Temperature が N/A と表示される

現在の「情報更新」コマンドの応答に温度フィールドは含まれていません。N/A (not in this response) は正常な表示です。