次期モデル Mini Pupper 2 の初期サンプルを味わう
なんとロボット犬 ミニぷぱの新モデル Mini Pupper 2 の初期サンプルを提供いただけました!
ここでは前機種との違いを実感しながら Arduino IDEで動作させるところまで記載いたします。
今回提供いただいた Mini Pupper 2 は超初期サンプルとのことですので、製品版と大きく異なる可能性が高いことをご了承ください。
また比較対象の前機種のMini Pupperも早い時期にいただいたものですので流通版と異なる可能性があります。重ねて宜しくお願い致します。
目次
超初期サンプル
いただいた神々しいサンプル。サイズや機構は前機種とほぼ変わっていない様子です。
Mini Pupper 2はラズパイとマイコンが共存する仕様のようです。
いただいた初期サンプルでは天板が基板になっていてESP32-S3が搭載されていました。
前回ラズパイ4を取っ払ってESP32で4足歩行動作を楽しんだ私的にはご馳走の仕様です。
足のサーボはシリアルサーボが採用されており、貼られる配線によりだいぶスッキリした印象を受けます。
ESP32-S3には技適マークがなかったので念のため (技適警察がうるせーし) 技適未取得機器を用いた実験等の特例制度に申請しました。
Arduino IDEで堪能
ESP32-S3が載っているということで、ここではMini Pupper 2サンプルをArduino IDEでコーディングしての動作を目指します。
ESP32-S3をArduino IDEで書き込みするためにはESP32ライブラリを2.05にバージョンアップする必要がありました。
サンプル基板には書き込み用USB端子とカラーLED Neopixel も搭載されていますので、書き込みテストしてみました。
— HomeMadeGarbage (@H0meMadeGarbage) October 2, 2022
環境が整えばこっちのものです。
足のサーボモータ
サンプルのシリアルサーボはFEETECH SCS0009と同等品でした。
秋月のサイトにアップされているライブラリで無事に動作確認できました。
— HomeMadeGarbage (@H0meMadeGarbage) October 2, 2022
12個のサーボモータを接続。
サーボのIDは1~12であらかじめ割り振った状態で提供いただけました。
足のサーボケースは前回のように3Dプリント品ではなくなり、ロール軸の受けがベアリングになり洗練されてます。
逆運動学で足制御
サーボモータが動かせるようになりましたので、足の動作を逆運動学で位置座標の指定で動かせるようにします。
座標は以下のように定義します。
大腿の長さ$L_1$は50mm、下腿の長さ$L_2$は56mmでした。
足のロール角を$θ_0$、大腿の角度を$θ_1$、下腿を動かすサーボの角度を$θ_2$とします。
ここでは足のつけ根のロール角$θ_0$と座標x, zを指定して足を制御することにします。
足を上げて(Z軸)、前後(X軸)するためのサーボ角度は以下で導出されます。
大腿のサーボの角度$θ_1$は余弦定理を用いて導出します。
${L_2}^2 = {L_1}^2 + {l_d}^2 – 2{L_1}{l_d}\cos{θ_1}’ $
${θ_1}’ = \cos^{-1} \left(\frac{{L_1}^2+{l_d}^2 – {L_2}^2}{2{L_1}{l_d}} \right) $
$$θ_1 = φ – {θ_1}’ = φ -\cos^{-1} \left(\frac{{L_1}^2+{l_d}^2 – {L_2}^2}{2{L_1}{l_d}} \right) $$
$$ 但し、φ = \tan^{-1} \left(\frac{x}{z’} \right)$$
$$ l_d = \sqrt{x^2 + {z’}^2}$$
$$ 高さを足のロール角で補正 z’ = \frac{z}{\cos{θ_0}}$$
下腿の角度$θ_2$も同様に余弦定理を用いて導出します。
${l_d}^2 = {L_1}^2 + {L_2}^2 – 2{L_1}{L_2}\cos{θ_2}’ = {L_1}^2 + {L_2}^2 – 2{L_1}{L_2}\cos\left({\frac{\pi}{2}+θ_2+θ_1}\right)= {L_1}^2 + {L_2}^2 + 2{L_1}{L_2}\sin\left({θ_2+θ_1}\right) $
$$θ_2 = \sin^{-1} \left(\frac{{l_d}^2-{L_1}^2 – {L_2}^2}{2{L_1}{L_2}} \right)-θ_1$$
以上で 足のロール角$θ_0$と足の前後(X軸)位置と上下(Z軸)位置の指定で足のサーボを制御できるようになりました。
動作
足先の座標指定での動作が実現されました。
4足 IKバッチリ
オフセットは要調整#MiniPupper #ミニぷぱ #MiniPupper2 pic.twitter.com/eayX4BRRNy— HomeMadeGarbage (@H0meMadeGarbage) October 1, 2022
初期姿勢は以下のように足が直角で伏せるような格好でサーボの角度が中間値 (512) になるようにしました。
各種動作
歩行などのモーションを仕込んで動かしました。
コントロールはBLE介してBlynk Legacyで実施。
以前作ったTPU製のマシュマロ靴を履いてウキウキの様子です。
若干まだサーボ位置にオフセットがある感じですがおいおい微調整します。
おわりに
ここでは提供いただいた Mini Pupper 2 サンプルでArduino IDEでの制御を楽しみました。
サンプル基板にはなんとIMUも搭載されているので次回はコチラを楽しみたいと思います。