notes
Control

電流ベースの homing (stall detection)

電流と速度の両方を監視して物理ストッパーを検出する homing 手法。振動対策は EMA + baseline 学習 + 連続条件で対応する

要点: 定速 or 低 duty で走らせて、|v| < v_min かつ filtered_i > baseline + k·σ を N 連続サンプル 満たしたら stall と判定して停止。振動誤検出は EMA フィルタ + baseline 学習 + 連続条件で潰す。

基本原理#

モータが物理ストッパーに当たると:

  • 速度 → 0
  • 電流 → 増加 (押し続けようとする)

この 2 条件で機構原点を検出する。センサーレス homing / stall detection とも呼ぶ。3D プリンタ、ロボットアーム、産業機械で標準。

検出アルゴリズム#

# baseline を先に学習 (自由回転で 2 秒程度)
baseline_i, sigma_i = measure_baseline(duration=2.0)

alpha = 0.1                       # EMA: 100Hz なら時定数 100ms
i_thresh = baseline_i + 4.0 * sigma_i
v_min = 0.05                      # rad/s
required_consecutive = 5          # 50ms 連続 (@100Hz)

filtered_i = 0
filtered_v = 0
consec = 0

while running:
    filtered_i = alpha * raw_i + (1 - alpha) * filtered_i
    filtered_v = alpha * raw_v + (1 - alpha) * filtered_v

    if abs(filtered_v) < v_min and abs(filtered_i) > i_thresh:
        consec += 1
    else:
        consec = 0

    if consec >= required_consecutive:
        homing_complete()
        break

振動の出所と対処#

出所見え方対処
Motor cogging位置に周期的 sin ノイズEMA で消える
Encoder 微分ノイズv がガタつくhost or FW で LPF、または差分ウィンドウ幅を広げる
Stick-slip 摩擦v がガクガク検出速度を上げる (0.3→1.0 rad/s)、または摩擦分を差し引く
EMI / cable電流だけ噴くハード側の問題。CAN もれ、シールド疑い
PID 発振全体的にヒステリシス震動gain 下げる、kd 抜く、homing 中は低 gain 固定
CAN aliasing100Hz sample 下で 30Hz 振動が折り返しFW 側で on-board LPF が本命

先に data を見て切り分ける。raw_i と filtered_i を並べて、振動の周波数・振幅・分布を確認する。

誤検出防止の工夫#

  • duty 上限: PID 発振で電流が上がるのを防ぐ (duty_cap = 0.3 程度)
  • speed 制御ではなく低 duty 直押し: duty = 0.15 固定 → 速度が落ちて電流が上がるのを見る。振動源が減る
  • 双方向確認: 一度当てたら少し戻して再度当てる → 位置の再現性 ε 確認
  • soft limit 併用: 過大 stroke で破損しないよう物理的な上限も別途
  • homing 中は FF 全 OFF: velocity_ff / duty_ff / 摩擦補償を切って生の応答を見る (auto-tune 前提の系で特に重要)

FW 側実装の利点#

Host からの CAN feedback は 2-10 ms 遅れ、サンプル 100 Hz。FW 側 (1 kHz サンプル) で判定するなら:

  • 1 kHz → 10 サンプル EMA で 10 ms 時定数、滑らか
  • 判定粒度が host 側の 10 倍細かい
  • FW 内完結 → host の jitter に影響されない

Baseline 学習の設計#

  • 自由回転中の電流分布は概ね Gaussian
  • 2 秒 (100 Hz なら 200 サンプル) 取って mean と std を計算
  • 温度・機構状態で変わるので毎回計測が理想 (auto-tune シーケンスの一部として)

手法比較#

方式特徴精度
Current + velocity (本手法)シンプル、追加センサー不要中〜高、振動対策必須
リミットスイッチ電気的に明確、追加センサー要高
エンコーダ Z 相光学的に明確高、位相ずれ確認要
モデル同定 (JMt 既知)トルクと予測比較中
Load cell直接トルク測定高、コスト大

リミットスイッチが 1 つでも付いてるならその方が確実。無くて機構だけで済ませるなら電流ベースが定番。

関連#

最終更新:

On this page