コンテンツにスキップ

ESC (ローラーモーター)

ディスク発射機構のローラーモーターは、ESC(Electronic Speed Controller) を介して PWM 信号で制御します。Raspberry Pi 5 の GPIO ピンから PWM パルスを出力します。

対応 ROS 2 パッケージ

  • esc_motor_control_cpp(C++、pigpio / lgpio バックエンド対応)
  • esc_motor_control_python(Python)

制御方式

ESC は一般的なサーボ PWM 信号(パルス幅変調)で速度を指令します。 esc_motor_control ノードの既定パラメータは次のとおりです。

パラメータ 既定値 説明
pwm_pin 13 PWM 出力に使う GPIO ピン (BCM)
min_pulse_width 0 µs speed = -1.0 に対応
max_pulse_width 2000 µs speed = +1.0 に対応
neutral_pulse_width 1000 µs アーム / アイドル(停止)位置 = 1.0 ms
max_speed 1.0 前進最大
min_speed -1.0 後進最大
full_speed_button 7 フル回転ボタン(Switch 系 ZR)
full_speed_value 1.0 フル回転時の速度値

speed = 0.0(min+max)/2 = 1000 µs にマッピングされ、停止状態になります。

PWM バックエンド

パラメータ 既定値 説明
pwm_backend auto auto(pigpio→lgpio→sim の順に試行)/ pigpio / lgpio / simulation
gpio_chip_num 4 lgpio バックエンドの GPIO チップ番号(0 = Pi4, 4 = Pi5)
test_mode false 実 GPIO を使わない純シミュレーション

安全機構

パラメータ 既定値 説明
enable_safety_stop true コマンド途絶時の自動安全停止を有効化
safety_timeout 1.0 この秒数コマンドが来なければ安全停止

状態は /roller_motor_status、緊急停止状態は /roller_emergency_status に出力されます。 これは実測回転数ではなく ESC へ送っている指令値 です。

ESC / モーターのテスト時の安全手順

リポジトリの test_esc.py は、初期化前に以下を作業者へ確認します。 実機テスト時は必ず次を守ってください。

  1. プロペラ / ディスクを外す
  2. モーターを固定する
  3. 周囲の安全を確保する(人が近くにいない)
  4. (初期確認時は)バッテリーを外す

test_esc.py は GPIO 13 で PWM を生成し、安全のためパルス幅を 1.0〜2.0 ms に制限します (pigpio 優先、なければソフトウェア PWM にフォールバック)。

配線

PWM 信号線を GPIO13 (BCM) に接続し、GND を共通化します。ESC の電源・モーター動力線は ESC の仕様に従って接続してください。詳細は ピン配置 を参照してください。