シリアルサーボモータ SCS0009 で倒立振子 屈伸動作
前回はサーボモータSCS0009を用いて倒立振子を作製し、倒立動作を確認しました。
ここではそもそも倒立振子を製作しようと思ったきっかけである屈伸運動の検討をいたします。
another demo pic.twitter.com/vN2phdIVem
— XGO (@luwu_dynamics) April 8, 2023
目次
屈伸するための機構
以下の動画によると機体を上下するために、足を屈伸のように曲げています。
しかもそれを片足1個のサーボモータで実現しているようです。
Introducing XGO team latest creation, a dual-wheeled legged robot! We are proud to share our passion for robotics with the world and hope to continue to push the boundaries of what's possible. #robotics #technology pic.twitter.com/LyAt740GRG
— XGO (@luwu_dynamics) April 10, 2023
コチラを拝見しての第一印象は
”サーボ1個だと屈伸のたびに機体は前後に傾くんじゃね?” でした。
ただ動画をよく見るとそれほど足(ホイールの回転軸)はブレずに上下できている様子。。
ちょっと理解できないので試してみます。
Fusion360で上の倒立振子の足を模擬してみました。
へーこの感じだと比較的リニアに上下できるんだな
数理的に解くのはしんどそう#Fusion360 pic.twitter.com/N2OeZZgDZM— HomeMadeGarbage (@H0meMadeGarbage) April 16, 2023
大腿部を平行ではなく下部を狭めてリンク機構にすると、比較的リニアに上下できるんですね!!
このリニア具合は足の長さや付け根の位置で変わるんだろけど、数理的に導くのは難しそうなのでとりあえず作ってみました。
以後の生活に彩を与えることに成功 pic.twitter.com/y7qclNmQt4
— HomeMadeGarbage (@H0meMadeGarbage) April 17, 2023
全く水平方向にブレがないとはいきませんでしたが、なかなかいい感じにできました。
屈伸用のサーボにもSCS0009を使用しています。
とりあえずコレで倒立振子を作ってみましょう。
参考
屈伸機能付き倒立振子の製作
先ほどの屈伸足を両足に展開して倒立振子を製作します。
できた。
僕のご馳走
考えることいっぱい pic.twitter.com/10yRHFtKWj— HomeMadeGarbage (@H0meMadeGarbage) April 18, 2023
無事に倒立はできました。但し適当に作った足のため足先位置が前に出てしまい さらに足機構自体の重さもあいまって重心が後ろ気味になってしまい、前傾で倒立するように目標角度を指定しています。
流石に足を上下させての安定倒立は難しいです。重心動き放題。。
足の数理設計
屈伸による上下での重心移動はフィードバック制御でもなんとか克服できそうな気もしますが、、、
実際に作って手にとってイジっているうちに、この機構を数理的に解いて最適化できるような自信がついてきました。
ということで余弦定理を駆使して解いてみた。
サーボの回転軸を原点として、もう一方の大腿足の付け根を(x, y)、そして足先(ホイールの回転軸)座標 を(X, Y)としました。
サーボの回転角θを動かしたときに足先の水平位置 Xのブレが小さくなるように(x, y) 位置や足の長さを決めればいいのです。
ちなみに適当につくった現状の寸法を導出した計算式でみてみると
サーボ角度θ 10°~65°の間で足先の水平位置Xはほぼブレがありません。
しかし位置が8mm付近で重心が更に後ろに行ってしまっているので、この位置をサーボの回転軸より下げたいです (つまりX<0)。
この計算表を用いて数理的に足の機構を設計いたしましょう。X<0でリニアに上下する寸法を目指します。
大腿足の付け根の位置(x, y)と長さL2を変えてみました。
サーボ角度θ 20°~60°の間で足先の水平位置Xが0 ~ -1 mmの範囲に収まっています。
この結果で作り直しました。
倒立動作。
ハード改修でバランス改善
ただ足高さでシフトする重心には動的にソフトで追従する必要あるだろな pic.twitter.com/edAVwP3US9
— HomeMadeGarbage (@H0meMadeGarbage) April 18, 2023
改修により重心が改善し、かつ上下による重心シフトも小さいため倒立が維持できております。
動作改善
機体の構成が決定できたので、これより倒立動作の向上を目指します。
サーボ制御信号
ホイールサーボと屈伸用サーボのUARTを分けて更にATOMS3のcoreも分けてみました。
ホイールサーボと屈伸サーボをcoreとUARTわけた。
屈伸サーボは受信なしで直結なので動きがぎこちない pic.twitter.com/O4h025GHw7— HomeMadeGarbage (@H0meMadeGarbage) April 20, 2023
屈伸用サーボはUARTの送信線直結で受信ができていないのでちょっと動作がぎこちないですが、これでホイールと足を完全に独立で動作させることができます。
回転数フィードバック
SCS0009は本来 可動範囲が 0~300°のサーボモータであるため、連続回転モードで回転位置や回転スピードが300°以上で不正確な値が返ってきます。。
フィードバック動作
SCS0009って可動範囲300°のサーボだから
連続回転で位置とスピードのフィードバック値みると300°以上の範囲でおかしな値が返ってくるわ。。。ってことでモータモードでフィードバック使用することはないかなっと pic.twitter.com/zoOqfcrJTX
— HomeMadeGarbage (@H0meMadeGarbage) April 14, 2023
それでも回転速度を倒立制御においてフィードバックさせたいので、センシング値ではなく直前の指定回転速度をフィードバックしてみました。
直前の指定回転速度を目標倒立角度にフィードバックしてみたところ安定性が向上しました。
本当は実回転速度をセンシングしてフィードバックしたいけど とりあえずこの方向性で煮詰めてみようと思います。
おわりに
ここではサーボモータSCS0009を用いて屈伸動作する倒立振子の検討を実施しました。
方向性が見えてきましたので今後は精度向上に努めたいと思います。
現状の残件は以下かなと
- UART-1Wire回路作成
現状は公式基板使用しているけど自作して小型化。ホイール用と屈伸用の2個必要 - バッテリ搭載
電源線がジャマ!搭載の際には重心に気を配る - 安定倒立制御を目指す。
屈伸による安定パラメータへの追従方法を探る
それではまた