シリアルサーボ STS3032 で屈伸型倒立振子
前回はホイール駆動用にギアドモータを採用した屈伸型倒立振子を製作しました。
ギアドモータの応答性に若干もたつきがあり縦横無尽に操作とはいきませんでした。
エンコーダなどを追加して回転速度をガッチリセンスすれば可能性ありそうですが、ひとまず保留することにして分解しちゃいました。
分解してギアドモータは通常倒立振子にしました。
ギアドモータ倒立振子
ギアドモータでホイール駆動
現状安定性には劣るがパワフルで元気 pic.twitter.com/gzdwkbP6OU— HomeMadeGarbage (@H0meMadeGarbage) September 30, 2023
残りの部品を活用してホイール駆動用にもシリアルサーボ STS3032を用いた屈伸型倒立振子を再度製作することにしました。
前回はジャンプ動作などを実現できたのですが前進・後進動作がうまく出来ないまま終了となっておりました。
ここで再検討しましたので報告いたします。
目次
製作
基本的には前回製作した機体と同じ構成ですが、これまで手ハンダで作っていたシリアルサーボ駆動基板を先日製作した専用基板に置き換えました。
屈伸用とホイール用に基板を2個使用します。
STS3032 回転動作モード
前回 倒立振子の前後進制御がうまくいかなかったので、改めてシリアルサーボ STS3032 の連続回転動作モードについて考えました。
Operation Mode = 2
ここではSTS3032の回転モードは応答性の良い Operation Mode = 2 を使用しています。
トルクを指定つまり電流値指定で回転させているので負荷によって回転速度は変わります。
電流値指定での倒立振子なのだという気持ちで制御方針を考え直す必要がありそうです。
現にこれまでのモータ電圧指定による倒立振子のやり方は通用しませんでした。
Operation Mode = 1
ちなみにSTS3032の回転モード Operation Mode = 1 は回転速度を指定し内部フィードバック制御されているので、負荷がかかると速度を保つために電流が増えます。
残念ながらこのモードでは応答性に劣るため倒立振子では使用できませんでした。
動作
ホイール用のシリアルサーボは電流値指定によって回転制御されていることを意識して再検討を実施しました。
屈伸・足踏み・ジャンプ・旋回動作に加えて前進/後進動作も実現できました。
通常は以下をフィードバックして倒立動作を実現しております。
- 機体の傾きの角度 (ATOMS3内蔵のIMUセンサで計測)
- 機体の傾きの角速度 (ATOMS3内蔵のIMUセンサで計測)
- ホイール回転速度 (STS3032内蔵センサで計測)
- ホイール回転量 (回転速度の積算で算出)
前進/後進時は目標機体角度と目標回転速度にオフセットをかけて実現しました。
オフセットの大小がスピードの増減となります。
このとき ホイール回転量のフィードバックはゼロとしました。
旋回動作は前回 同様にホイール回転量に加えて回転速度の測定も止めてを値をゼロとして左右のタイヤの電流指定値にそれぞれスピード加算して実行しました。
旋回制御ももうすこし改善できそうだけど、動いたからまぁいいや。
当初はこれまでの制御方法が通用せずに愕然としましたがモータの回転制御の根本を理解することで動作を実現することができました。