notes
ProjectSalamander

吸引ポンプ制御 (salamander)

suction_node と MD 基板による吸引ポンプ (M3508) の制御経路・2 段速度・弁・回転検知

要点#

吸引ポンプ (M3508+C620、ee_md motor2) は速度制御。suction_node が VELOCITY 指令を送り、MD 基板が速度 PID を回す。on 中は一定速度 (on_velocity)。吸着センサは無い。

注意 (2026-09-10): 「on から一定時間で保持速度に落とす」時間ベース 2 段化は誤り。 suction on のタイミングは掴むタイミングではなく、吸着口がワークでシールされて初めて真空が 保持できる。シール前に減速すると真空が崩れて掴めない。減速するなら「シール/把持が確定した 条件」でトリガする必要がある (時間では不可)。要検討 (下記)。

指令経路#

suction (std_srvs/SetBool) / suction/command (std_msgs/Bool)
  → suction_node
  → <prefix>/target  (fibril_control_msgs/Target)   prefix=/salamander/suction/pump/motor
  → MD 基板 (ee_md motor2, M3508+C620) が速度 PID

suction_node の動作#

  • ON: Target(VELOCITY)=on_velocity を送る (一定速度)。
    • republish_hz (既定 10Hz) で送り続ける (ee_md respawn 後の指令復元)
  • OFF: Target(DUTY)=0 を 1 回。
  • 電磁弁: valve_service (air0/set_state) を on/off で叩き、valve_reassert_sec ごと再送。 suction/valve (latched Bool) = 指令状態を publish (HSM の suction.valve 観測)。
  • 回転検知: feedback の |velocity| >= running_threshold で suction/pump_running (latched)。 feedback_timeout_sec 途絶で false。
  • arming 非依存: motors/arm ゲートを通さない。明示 on 指令でしか回らない。

パラメータ#

suction.param.yaml (/**/suction_node):

param既定意味
on_velocity20.0on の速度 [rad/s, 出力軸]
republish_hz10.0on 中の Target 再送周期
running_threshold2.0pump_running 判定の速度しきい値
feedback_timeout_sec1.0feedback 途絶で pump_running=false
valve_on_statetrue吸着 on で弁へ送る state (配管 NC/NO で反転)
valve_reassert_sec2.0on 中の弁再送周期

速度ループは MD 基板側 (md_motors.param.yaml motor2.velocity): kp 0.2, ki 0.002, kd 0, max 0.5 (duty 上限), i_sat 0.3。速度制御のみ (位置 PID・reset_encoder は不使用)。

注意#

  • 吸着センサは無い。「掴めたか」は suction_node では判定できず、field_state_node が pad TF / valve から gripper/holding を導出する。
  • sim では suction_bridge_node が同じ外部 I/F (suction / suction/valve) を提供する。

保持中の省電力化 (要検討)#

掴んだ後にポンプ出力を落として発熱/電流/騒音を下げたいが、トリガは時間でなく状態にする:

  • 前提: 吸着口がワークでシールされ真空が保持できている状態でのみ減速可。良シール (低リーク) なら 低速でも真空維持できるが、リークが大きいと減速で崩れる。
  • 候補トリガ:
    1. ポンプ電流でシール検出: 一定速度指令に対しシール時は負荷=電流が変化する。閾値超えが継続 したら減速、下がったら (リーク/脱落) 全開へ戻す。追加センサ不要だが電流シグネチャの実測が要る。
    2. 把持確定の明示信号: pick 完了 (ワーク把持・退避後) に BT/HSM が「hold へ」を指令。決定的だが BT 側の追加が要る。
    3. 減速しない (現状=常に on_velocity)。最も安全。
  • 吸着圧センサは無いので、真空そのものは直接測れない。

関連#

最終更新:

On this page