2018年6月6日水曜日

サーボモータハンチング対策

ポケモンGoBotシステムの問題点の一つはサーボモータへの負荷が大きすぎる点であった
以下はサーボに起きる問題とこの負荷を軽減する施策

スマホの揺らし台

サーボモータのハンチング

ハンチングとはサーボの停止角が定まらずに±1度の振動が発生する現象
経験則的にまとまった時間使い続けると発生する
Botシステムでは動作上は問題ないのだが、非常にうるさいし部品の摩耗も怖い

サーボモータの発熱

これはモータよりもシェル内の制御用ICの発熱
数時間単位の連続使用を行うとシェルよ溶けよ!と言わんばかりの高熱が発生
SG90ではこれでよくサーボが破損した

問題点の対策

長時間停止角を維持するようなシーケンスをやめればよい
ポケモンGoBotの例ではスイングする数秒のみアタッチして動作を行う
次にスイングするまでの数十秒間はデタッチしてフリーにしてしまう
この間は当然回転角維持のトルクは働かないのだが、それを許容する機構にすればいい

これでハンチングも発熱も解決
サーボモータを数時間連速動作させること自体がそもそも筋悪であった

追記:その他のハンチングについて

その後調べたハンチング関連の情報を追記する

・稼働後しばらくしてからハンチングが起きる理由
 →ギアの摩耗などが原因
  新品が一番精度がよく、摩耗により検知/制御精度が落ちる
  アタリが出て負荷が下がるのもハンチングの原因になり得る(後述)

・チューニングによる対策
 →ハンチングが起きるメカニズムは『オーバーラン』である

   目標角度まで回転→行き過ぎる→戻し方向に回転→行き過ぎる…

  制御パラメータのチューニングでオーバーラン対策となる(ゲイン調整)
  一番簡単な方法は回転速度を下げてしまうこと
  (簡易的な機構のサーボやその制御の場合は調整できない)

・回転軸への対策
 →オーバーラン対策として回転軸に摩擦や軽い負荷をかける対策
  ブレーキをかけてから実際に軸が停止するまでの制動距離(角)を短くする
  常に余計な力がかかるということなのでロスは増える
 

0 件のコメント:

コメントを投稿