次期モデル Mini Pupper 2 ラズパイCM4でサーボ角度指定
前回はミニぷぱ2でディスプレイ表示とスピーカによる音声再生を楽しみました。
また前々回はRaspberry Pi Compute Module 4 (CM4) からESP32に組み込まれた動作モードを起動しての動作を楽しみました。
ここではCM4で直接サーボの角度を指定して動かす仕組みを構築して、ミニぷぱを楽しんでみました。
目次
ミニぷぱ2構成
ミニぷぱ2の構成は大まかに以下の通りです (製品版は変更となる可能性がございます)。
前々回はCM4からシリアル通信で1文字モーションコード送って、ESP32に書き込んだ動作を起動させました。
ここではミニぷぱの12個のサーボの角度をCM4から直接指定して動作させてみました。
サーボ角度指定
CM4から12個分のサーボの角度をシリアル送信してESP32でサーボを指定の角度に動かします。
以下の動画のようにCM4のNode-REDでシリアルデータを送信しました。
伏せの状態を初期姿勢としすべてのサーボの角度を0°としています。
Node-REDでは以下のようにシリアル送信しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
var a = new Int8Array(13); a[0] = 0; a[1] = 0; a[2] = 0; a[3] = 0; a[4] = 0; a[5] = 0; a[6] = 0; a[7] = 0; a[8] = 0; a[9] = 0; a[10] = 0; a[11] = 0; a[12] = 0; msg.payload = a + "\n"; return msg; |
ミニぷぱのサーボは12個ありIDが1から12まで割り振られています。配列の0が扱いにくいのでa[13]としてa[1]~a[12]をサーボ角度として使用しています。
立ちの姿勢は以下の通り。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
var a = new Int8Array(13); a[0] = 10; a[1] = 0; a[2] = 45; a[3] = 45; a[4] = 0; a[5] = -45; a[6] = -45; a[7] = 0; a[8] = 45; a[9] = 45; a[10] = 0; a[11] = -45; a[12] = -45; msg.payload = a + "\n"; return msg; |
ミニぷぱ立つ
CM4から直接サーボの角度を指定できるようになったので、モーションの作りこみが楽になりました。
ESP32は書き込みに時間がかかりますので。。
早速モーションバリエーションを楽しみました。
なんと立ってしまいましたwww
詳細説明は省略しますがNode-REDのフローは以下のような感じ
サーボ角度をビシビシ指定しているので動きが急峻ですね。。
動作間のスムージングは必要そうです。
本当は立ち上がった後に前進歩行させたかったのだけど。。w
以下のように かかとかつま先のアタッチメントつければいいかもしれませんね。
おわりに
ここではCM4で直接サーボ角度を指定してミニぷぱ動作を楽しみました。
IMUはESP32に接続されているので、IMUと動作を絡める際にはどうすればよいかなどまだまだ検討の余地はあります。
CM4でサクサク モーション指定できるので色々な動作を検討したいです。
指定角度間のスムージングなども検討したいです。
それではまた。
追記
バク宙挑戦 (2022/11/15)
前機種でも試したバク宙。
バク転#MiniPupper #ミニぷぱ #M5Stack pic.twitter.com/CRfuFEjIG3
— HomeMadeGarbage (@H0meMadeGarbage) February 14, 2022
今回もやってみた。CM4によってかなり軽量化されてるのでさてどうなるか。。
難しい
今後コレは バク宙問題として取り扱うことになる pic.twitter.com/5fqL7FLxqx— HomeMadeGarbage (@H0meMadeGarbage) November 15, 2022
ダメでした。。後頭部殴打www
構造上後ろ足が後ろにまっすぐ伸びないのよ。。
前宙も試したけどダメだった。。
サーボのトルクどうこう以前に構造的に無理そうでした。
本当に素晴らしい。
指定角度間のスムージングなども検討したいです。=>とても楽しみにしています。
Afreezさん!この度は機材のご提供をいただきありがとうございます!
色々試してみたいと思います!
製品版の完成も心待ちにしております。