「ミニぷぱ」タグアーカイブ

次期モデル Mini Pupper 2 ラズパイCM4で足座標指定

すき 1
0

前回はラズパイ CM4で直接サーボ角度を指定してミニぷぱ動作を楽しみました。

次期モデル Mini Pupper 2 ラズパイCM4で足座標指定

 

ここではラズパイ CM4で足の座標を指定しての動作を楽しみました。

 

足座標指定

ここではMini Pupper2に搭載されたラズパイCM4からサーボを制御するESP32に足の座標をシリアルデータ送信して動作させます。

足の座標は各足の付け根を原点にして前後方方向のX [mm]とY方向へのロール角 [°]と高さZ [mm]を指定するようにいたしました。

 

更に座標移動には以前実験したスムージング機能を持たせて、シリアルデータにスムージングの効き具合も一緒に送るようにいたしました。

 

具体的には以下の13のデータを送って動作させます。
[スムージング[%],  前右x, θ. z, 後右x, θ. z, 前左x, θ. z, 後左x, θ. z, ]

スムージングは以下のように実施しています。

$$現在の座標 = 指示座標 * (100 -スムージング) [\%] + 前回の座標 * スムージング [\%] $$

 

動作

まずは各足の高さを指定して屈伸させてみました。
スムージングがない(0%)と動作が急峻になります。

 

スムージング機能によって動作が柔らかくなり振動も減っています。
移動座標と一緒にスムージング具合[%]も送っていることが今回のミソです。

歩行

足の座標を指定して歩行も試してみました。


こちらもスムージングによって動きが非常にスムーズになっています。

 

歩行動作は以下の4ステートをシリアルデータとしてCM4からESP32(シリアルサーボ)に送るだけで実現できました。

各ステートを100msec毎に送信。

 

スムージングによって各ステート間が良い感じで補完されてスムーズな歩行が実現されました。

次の動作座標を動的に動かしても同様にスムーズな動作が可能であると考えます。
足座標指定による動作は非常に有用な方法なのではないでしょうか。

おわりに

ここではラズパイ CM4で足先の座標を指定してのミニぷぱ動作を楽しみました。

スムージング具合も指定することで大まかな座標指定でも滑らかに動けることがわかりました。
CM4でモーション座標をサクサク流したり、もしくはセンシングで動的に座標を指定しても十分な動作が期待できそうで大変喜んでおります。

それではまた。

次期モデル Mini Pupper 2 ラズパイCM4でサーボ角度指定

1
0

前回はミニぷぱ2でディスプレイ表示とスピーカによる音声再生を楽しみました。

次期モデル Mini Pupper 2 CM4でメディアを堪能

 

また前々回はRaspberry Pi Compute Module 4 (CM4) からESP32に組み込まれた動作モードを起動しての動作を楽しみました。

次期モデル Mini Pupper 2 に Raspberry Pi Compute Module 4 を搭載

ここではCM4で直接サーボの角度を指定して動かす仕組みを構築して、ミニぷぱを楽しんでみました。

ミニぷぱ2構成

ミニぷぱ2の構成は大まかに以下の通りです (製品版は変更となる可能性がございます)。

前々回はCM4からシリアル通信で1文字モーションコード送って、ESP32に書き込んだ動作を起動させました。

ここではミニぷぱの12個のサーボの角度をCM4から直接指定して動作させてみました。

サーボ角度指定

CM4から12個分のサーボの角度をシリアル送信してESP32でサーボを指定の角度に動かします。

以下の動画のようにCM4のNode-REDでシリアルデータを送信しました。

伏せの状態を初期姿勢としすべてのサーボの角度を0°としています。
Node-REDでは以下のようにシリアル送信しています。

ミニぷぱのサーボは12個ありIDが1から12まで割り振られています。配列の0が扱いにくいのでa[13]としてa[1]~a[12]をサーボ角度として使用しています。

立ちの姿勢は以下の通り。

 

ミニぷぱ立つ

CM4から直接サーボの角度を指定できるようになったので、モーションの作りこみが楽になりました。
ESP32は書き込みに時間がかかりますので。。

早速モーションバリエーションを楽しみました。

なんと立ってしまいましたwww

詳細説明は省略しますがNode-REDのフローは以下のような感じ

 

サーボ角度をビシビシ指定しているので動きが急峻ですね。。
動作間のスムージングは必要そうです。

 

本当は立ち上がった後に前進歩行させたかったのだけど。。w
以下のように かかとかつま先のアタッチメントつければいいかもしれませんね。

おわりに

ここではCM4で直接サーボ角度を指定してミニぷぱ動作を楽しみました。

IMUはESP32に接続されているので、IMUと動作を絡める際にはどうすればよいかなどまだまだ検討の余地はあります。

CM4でサクサク モーション指定できるので色々な動作を検討したいです。
指定角度間のスムージングなども検討したいです。

それではまた。

追記

バク宙挑戦 (2022/11/15)

前機種でも試したバク宙。

 

今回もやってみた。CM4によってかなり軽量化されてるのでさてどうなるか。。

ダメでした。。後頭部殴打www

構造上後ろ足が後ろにまっすぐ伸びないのよ。。
前宙も試したけどダメだった。。

サーボのトルクどうこう以前に構造的に無理そうでした。

次の記事

次期モデル Mini Pupper 2 ラズパイCM4で足座標指定

次期モデル Mini Pupper 2 ラズパイCM4でメディアを堪能

0
0

前回はRaspberry Pi Compute Module 4 (CM4) をミニぷぱ基板に搭載してESP32との連動やAlexa連携を楽しみました。

次期モデル Mini Pupper 2 CM4でメディアを堪能

ここではミニぷぱ2基板上でCM4に接続されたディスプレイとスピーカの動作を楽しみました。

ここで使用している基板は製品版と異なる場合があります。何卒ご了承ください。

 

ディスプレイ

ディスプレイは前モデルと同様にST7789が使用されておりました。
以前と同じようにディスプレイ表示させてみました。バックライトのGPIOピンが異なるくらいの違いでした。

ロボット犬『Mini Pupperミニぷぱ』Pythonでモーション記述

動作

無事に表示。画像はST7789のpythonライブラリのサンプルを使用。
https://github.com/pimoroni/st7789-python

スピーカ

基板にはスピーカアンプ (NS4890B)も搭載されておりました。

アンプへの電源供給ON/OFFピンがGPIO22、モノラル入力がGPIO12でした。

アンプ出力に手持ちのスピーカを接続しました。
コネクタが持ってない型だったのではんだ付けしました。

動作

GPIO22をHighにしてアンプの電源をONにして、GPIO12からPWMを出力してみました。

ブザーのような音が出力されています。

 

CM4には通常のラズパイのようにヘッドホンジャックがないので、以下をconfig.txt に追加します。

これによって、音声再生出力がGPIO12, 13からされるようになります。
ミニぷぱ2基板はモノラル出力なのでGPIO12のみ使用します。

CM4でYoutubeを再生しスピーカから音声が再生されることを確認しました。

参考

おわりに

ここではミニぷぱ2でディスプレイ表示とスピーカによる音声再生を楽しみました。

やはりラズパイはメディアに強いなという実感を強く受けました。
ミニぷぱの動作にメディアを絡めることでさらに表現が増すのではないでしょうか。

それではまたお会いしましょう。

追記

移動するメディアプレイヤー (2022/11/17)

CM4でYoutube再生しつつディスプレイにはサムネイルを表示。
ただそれだけww

次の記事

次期モデル Mini Pupper 2 に Raspberry Pi Compute Module 4 を搭載

次期モデル Mini Pupper 2 に Raspberry Pi Compute Module 4 を搭載

0
0

これまでは次期モデル Mini Pupper 2 をESP32のみで楽しんでまいりました。
前回はより製品版に近いとされる基板の動作を確認しました。

次期モデル Mini Pupper 2 新規基板を味見

 

Mini Pupper 2 の基板にはRaspberry Pi Compute Module 4 (CM4) も搭載可能です。

 

この度、CM4を提供いただきました。MangDang社様本当にいつもありがとうございます!!

ここからはCM4とESP32によるミニぷぱ動作を検証します。

ここで使用している基板は製品版と異なる場合があります。何卒ご了承ください。

 

CM4設定

提供いただいたCM4モジュールはeMMCのないモデルでした。
小さくてビックリ!!

 

早速搭載。

 

Mini Pupper 2基板にはSDカードスロットとmicro-HDMIコネクタが搭載されています。

 

Raspi OS(32bit)を書き込んだSDカードを入れて起動を試みたのですが、すぐにリセットしてしまう謎の症状に苦しみました。。

調査したところ以下でも同様の症状が報告されており、解決策として書き込みのあった
config.txt を修正 ( “dtoverlay=vc4-kms-v3d” -> “dtoverlay=vc4-fkms-v3d”) する方法で改善し無事に起動できました。

https://forums.raspberrypi.com/viewtopic.php?t=323920

CM4 – ESP32間通信確立

CM4の起動が無事できたので更にVNCとNode-REDの設定も実施し、ここではESP32-S3との通信を目指します。

基板上ではESP32-S3のUART1とCM4のUART3が接続されていましたので、以下を参考にCM4のUART3を有効化しました。
https://toki-blog.com/pi-serial/#UART3UART4UART5

無事にシリアル通信が可能になりました。

ミニぷぱ動作

CM4とESP32-S3 間の通信ができるようになったので、CM4から文字を送ってESP32に仕込んだ動作を起動してみました。

CM4上のNode-REDから文字をシリアル送信してESP32で文字に対応した動作でサーボを制御しています。

 

Alexa連携

ミニぷぱがラズパイOS (Node-RED) で使えるようになりましたのでAlexaとの連携も容易となります。

以下と同じ方法で連携してみました。

ラズパイで気圧測定

 

Node-RED Alexa Home Skill Bridgeでミニぷぱ動作用のデバイスを用意してAlexaアプリの定型アクションで起動発話を設定します。

 

Node-REDで動作用デバイスとモーションコマンドを連結させます。

動作

簡単にミニぷぱとAlexaを連携できました♪

おわりに

ここでは提供いただいたCM4モジュールをミニぷぱ基板に搭載してESP32との連動やAlexa連携を楽しみました。

これまでにCM4なしでESP32のみでミニぷぱ動作を実現していましたので、ここではCM4はESP32に組み込まれた動作を指定するのみの仕事しかしておりません。
しかしESP32で制御用のブラウザページを作りこむのはかなり大変だったので、ラズパイ(CM4)でかなり楽になりそうです。

ミニぷぱ動作においてCM4とESP32の役割の振り分けにはいろいろな方法が考えられそうです。
思いついたモノを上げると

  1. ESP32で各動作を組み込んでおいてCM4で起動 (今回の手法)
  2. CM4から足の座標をESP32に指定
  3. CM4から各サーボの角度をESP32に指定

ESP32のプログラム書き込みが面倒なので上の手法の2か3が良いのかなと現時点では思っています。
製品版の手法もウォッチしつつ検討すすめます。

 

次回はディスプレイやスピーカの動作確認を実施したいです。

次の記事

次期モデル Mini Pupper 2 に Raspberry Pi Compute Module 4 を搭載

次期モデル Mini Pupper 2 新規基板を味見

0
0

前回はMini Pupper 2の初期サンプル基板搭載の6軸IMUセンサ QMI8658C の値を取得して、平行姿勢制御を楽しみました。

次期モデル Mini Pupper 2 新規基板を味見

 

今回はより製品版に近い仕様であろう新規基板をいただきましたので動作確認いたします。

 

新規基板

初期サンプル同様に天板が基板になっています。
大きく異なるのがRaspberry Pi 4と同じSoC搭載のCompute Module 4 (CM4)が載ることでしょう。

ここまでは正直、ESP32とラズパイの共存のイメージが湧いていなかったのですが、
この基板をみて多くのインスピレーションとアイディアが溢れている状況です。

大きく役割を分けるとラズパイでディスプレイや音声などを制御してESP32でサーボをコントロールするといった感じになっています。


ESP32とラズパイの搭載でネットワークにつながるデバイスが2個存在することになるのでかなりひろい応用ができそうです。
センサ等の拡張性も高く繋げられないものはないと言っても過言ではないでしょう。

ただ現在、私はCM4を所有できていないので融合動作を体験できないのが残念です。
入手出来次第、すぐに体験したいです。楽しみ

ESP32動作確認

新規基板でラズパイなしのESP32のみの動作確認を実施します。

初期サンプルではESP32と接続するシリアル変換ICの実装とUSBコネクタがありましたが、新規基板では直結のコネクタのみとなっていました。
馴染みのないコネクタだったのでちょっと加工してUSBシリアルコネクタと繋げられるようにしました。
いちいち手動でブートモードにする必要はありますが問題なく書き込みができました。

製品版ではESP32書き込み専用ケーブルが同梱されるようになると想像します。

動作

ESP32周りは大きな変更はないので、初期サンプルのコードがほぼそのまま使用できました。
IMUセンサQMI8658C の値も取れてバランス動作バッチリです。

 

製品版では更に変更もあると思いますが、念のためESP32周りで初期サンプル基板と異なった点を以下にまとめておきます。

  • 書き込み用シリアル変換ICとUSBコネクタの廃止
  • 前方フルカラーLEDの廃止
  • シリアルサーボ通信UARTピンの変更
  • IMUセンサQMI8658C の実装向きの変更

おわりに

ここではMini Pupper 2の新規基板のESP32の動作確認を行いました。

とにかくラズパイとの融合動作を試したくてしょうがない状況です。
実基板をみて強くそう思いました。

これまではESP32にコントロールブラウザ画面を実装していましたが、
その辺はラズパイでやったほうが楽ですし更に高機能にもできそうです。

Mini Pupper 2はかなりおすすめのロボット犬になりそうです。
私は非常にワクワクしております。

次の記事

ラズパイで気圧測定

次期モデル Mini Pupper 2 でIMUセンサを堪能

0
0

前回はサーボのトルクフィードバックやポジションフィードバックを味見しました。

次期モデル Mini Pupper 2 でIMUセンサを堪能

 

ここでは毎度やるといっていたMini Pupper 2 搭載のIMUの検証をやっとこ実施しましたので報告いたします。

 

IMUセンサ

Mini Pupper 2にはESP32の他になんとIMUセンサも搭載されております。

いただいたサンプル基板には 6軸 IMUセンサ QMI8658C が搭載されていました。

 

Arduino用サンプルをESP32で使えるようにする修正にてこずりましたが、
やっとセンサの値 (加速度3軸、角速度3軸) を取得できるようになりました。


通信はI2Cを使用。

参考

 

平行制御

内蔵IMUの値を取得できるようになったので、以前 Mini PupperにATOM Matrix を載せて実施した平行姿勢制御を実施してみました。

ロボット犬『Mini Pupperミニぷぱ』を ATOM Matrix で堪能

 

前回同様にX軸、Y軸の加速度から傾きを算出して、角速度と合わせてカルマン・フィルタを通してPD制御で足の高さを制御しています。

おわりに

ここでは念願の基板搭載の6軸IMUセンサ QMI8658C の値を取得して、平行姿勢制御を楽しみました。

Mini Pupper 2にはESP32に加えてIMUセンサも標準搭載されるとのことですので、非常に楽しみです。
応用の幅も大きく広がりそうです。

次の記事

次期モデル Mini Pupper 2 でIMUセンサを堪能

次期モデル Mini Pupper 2 で初級ハプティック体験

1
0

前回はMini Pupper 2 で動作バリエーションによるダンスを楽しみ、
汎用性の高いコントロールシステムの作成を実施いたしました。

次期モデル Mini Pupper 2 で初級ハプティック体験

 

ここではサーボモータのトルクフィードバックについて確認しました。

 

トルクフィードバック

Mini Pupperの公式に以下のような動画が紹介されておりました。

おそらく次期モデル Mini Pupper 2の製品用カスタムサーボによる実験だと思われますが、
サーボの負荷を検出し、作用点での力の大きさとその方向を描画している様子です。

提供いただいたMini Pupper 2 超初期サンプルのサーボモータ SCS0009 にもトルクフィードバック機能がありましたので実験してみました。

サーボのアームに負荷をかけるとトルク値が上昇し、方向によって符号が変わりました。
細かい精度はないようですが(設定で変えられるのかな?)、コレは面白い応用ができそうです。

初級ハプティック体験

サーボのトルクが取得できましたので、Mini Pupper 2 サンプルの足に応用してみます。

サーボに一定以上のトルクがかかるとその方向に回転するようにしました。

 

負荷をかけた方向に足が動いている様子が分かります。

足を任意の方向に動かすには、サーボトルクを現状の姿勢と力の作用点からベクトル合成してなどなど
ややこしい演算が必要かと想像していましたが
サーボのトルク値オーバーでおのおの回転という簡単な動作で割と所望の動作をしてくれ大変驚きました。

トルクの検出精度の向上や応答の度合いの調整を更に施せば、良い感じのハプティックデバイスのような動作になる予感がいたしました。
製品版のカスタムサーボモータに期待したいところです。

おわりに

ここではサーボのトルクフィードバックを味見し初級ハプティック体験をいたしました。
Mini Pupperの動作に組み込めば、人間が強要するお手動作などの実装ができそうです。

毎度やるといっているMini Pupper 2 搭載のIMUの検証は本当に次こそは実施したいです!!!

追記

サーボ位置フィードバック

次の記事

次期モデル Mini Pupper 2 でIMUセンサを堪能

次期モデル Mini Pupper 2 でダンス

0
0

前回は提供いただいた新モデル Mini Pupper 2 の初期サンプルをArduino IDEで動作開発できるようにいたしました。

次期モデル Mini Pupper 2 の初期サンプルを味わう

ここでは更に動作のバリエーションを増やしてダンスに挑戦いたしました。

 

ダンスに挑戦

前回からサーボの初期位置の微調整を実施し足座標の精度を高めました。
更に動作バリエーションを増やしてダンスに挑戦

各種動作を組み合わせることで、ダンスっぽくはなりましたかね。。

APモードによる遠隔コントロール

ここまではMini Pupper 2のコントロールにはBLEを介してBlynk legacyで制御してまいりました。
Blynkは大きな改変がありBlynk legacyは使用できないユーザも多いため、共有しやすい方法を検討します。

Mini Pupper 2にはESP32-S3が搭載されていますのでESP32をアクセスポイントにしてブラウザでコントる方法を採用いたしました。
これであれば環境にWiFiが無くてもMini Pupper 2とスマホやPC間での通信で制御が可能です。

 

ブラウザ画面に以下のように動作ボタンとパラメータ設定項目を用意しました。

 

これでBlynkを用いず直接ESP32に接続してのコントロールが可能となりました。

おわりに

ここではMini Pupper 2 で動作バリエーションによるダンスを楽しみ、
汎用性の高いコントロールシステムの作成を実施いたしました。

前回やるといっていたMini Pupper 2 搭載のIMUの検証は次こそ実施したいです!!

追記

SHISEIGYO-1 Walke Jr. とお戯れ

ロボットの魅力

お散歩

 

次の記事

次期モデル Mini Pupper 2 で初級ハプティック体験

次期モデル Mini Pupper 2 の初期サンプルを味わう

2
0

なんとロボット犬 ミニぷぱの新モデル Mini Pupper 2 の初期サンプルを提供いただけました!

ここでは前機種との違いを実感しながら Arduino IDEで動作させるところまで記載いたします。

Clock Arm 時計を自作

今回提供いただいた 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 も搭載されていますので、書き込みテストしてみました。


環境が整えばこっちのものです。

足のサーボモータ

サンプルのシリアルサーボはFEETECH SCS0009と同等品でした。
秋月のサイトにアップされているライブラリで無事に動作確認できました。


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軸)位置の指定で足のサーボを制御できるようになりました。

動作

足先の座標指定での動作が実現されました。

 

初期姿勢は以下のように足が直角で伏せるような格好でサーボの角度が中間値 (512) になるようにしました。

各種動作

歩行などのモーションを仕込んで動かしました。
コントロールはBLE介してBlynk Legacyで実施。


以前作ったTPU製のマシュマロ靴を履いてウキウキの様子です。
若干まだサーボ位置にオフセットがある感じですがおいおい微調整します。

おわりに

ここでは提供いただいた Mini Pupper 2 サンプルでArduino IDEでの制御を楽しみました。

サンプル基板にはなんとIMUも搭載されているので次回はコチラを楽しみたいと思います。

次の記事

次期モデル Mini Pupper 2 の初期サンプルを味わう

ロボット犬『Mini Pupperミニぷぱ』で 書道

0
0

これまでミニぷパに色々な動作や機能を実装し楽しんでまいりましたが、
ついに字を書けるようになりました!

 

動作

早速 凛々しい書道スタイルをご覧ください。

 

足に筆ペンを固定していますw

 

機構

基本的には以前ロボットアームで実施した機構と同じです。

Processing で制御 ーロボットアーム自作への道3ー

 

Processingのウィンドウ上の座標をミニぷパに送信して足の平面座標(x, y)として制御します。

マウスをクリックすると足の高さを下げて筆ペンを地面に接地します。
ドラッグで線や絵を描けます。マウスがクリックされていない時は足を20mm上げてペン先を浮かせています。

 

ProcessingからのUSBシリアルはATOM Liteで直接うまく受信できなかったので
前回のAIカメラ HuskyLensの時と同様に一旦Seeeduino XIAOで受信してATOMに座標情報を送りました。

次の記事

次期モデル Mini Pupper 2 の初期サンプルを味わう

ロボット犬『Mini Pupperミニぷぱ』を AIカメラ HuskyLens で堪能

0
0

前回は9軸 IMUセンサ BNO055を用いてミニぷぱ制御を楽しみました。

ダイソー版 プラレール を改造したよ♪

 

ここでは更に AIカメラ HuskyLensを追加して ミニぷぱを賢くしちゃいます。

 

 

AIカメラ HuskyLens

HuskyLensは顔認識、物体追跡、物体認識、ライン追跡、色認識、タグ認識などの機能を有するAIカメラです。

 

 

ここではHuskyLensの設定で色認識データをI2C出力にして使用しました。

 

認識した色の座標位置でミニぷぱを制御します。

 

 

HuskyLensをミニぷぱに接続

前回製作したATOM Liteをコントローラに採用したミニぷぱにHuskyLensを接続します。

注意点

HuskyLensのI2C出力をATOM Liteに接続して素直に行きたかったのですが。。
毎度恒例の問題発生。

以下のHuskyLens Arduinoライブラリを使用してI2C通信したいのですが、ESP32には使用できませんでした。
 https://github.com/HuskyLens/HUSKYLENSArduino/tree/master/HUSKYLENS/examples/HUSKYLENS_I2C

かなりライブラリを修正しないといけない感じだったので直結は潔くあきらめて、Seeeduino XIAOで中継することにいたしました。

 

構成

 

HuskyLensとATOM Lite間にSeeeduino XIAOを挿入してI2C-Uart変換を実施しています。

 

 

部品

 

動作

赤色の横方向座標で旋回移動させてみました。

XIAOからのHuskyLensデータをATOM Liteを2コアにしてCore0で常時シリアル受信するようにして、サーボ制御との並行動作を実現しています。

 

これまで仕込んだ歩行動作なども問題なく実行できます。

 

おわりに

AIカメラ HuskyLensの追加によって ミニぷぱ がとても賢くなりました!

今回は色認識で制御していますが顔認識やライントレースなどもできそうです。

どんどん賢く 高機能になる 我が家のミニぷぱ

 

そのうちしゃべりだして立ち上がって二足歩行するかもしれませんね。

次の記事

Clock Arm 時計を自作

ロボット犬『Mini Pupperミニぷぱ』を BNO055で姿勢制御

0
0

前回まではラズパイ4でミニぷぱを楽しみました。

ロボット犬『Mini Pupperミニぷぱ』がやってきた

ここではまたマイコンによる制御に立ち戻って新たなIMUセンサを楽しみます。

 

 

BNO055

以前はコントロールにATOM Matrixを用いて、内蔵のIMUセンサ MPU6886を用いて姿勢制御も楽しみました。

重力方向軸の回転角度 Yaw角を検出して床を回転させても常に同じ方向に旋回する制御も実施したかったのですが、MPU6886ではYaw角のドリフトがかなり大きく断念しました。

ここでは違うIMUセンサを採用してYaw角旋回制御を目指します。

6軸IMUのMPU6886がYaw角がとれないことはしょうがないのですが、同じ6軸でもMPU6050ではオフセット校正を施すと割とドリフトの小さいYaw角を得ることができます。

MPU6050を使用しても良かったのですがここでは9軸IMUセンサ BNO055を使ってみようと思います。

BNO055は正直内部でどういった処理をしているのか不明なのですが、正確な姿勢角を得ることができます。

以下のサンプルコードで校正や補正なしですぐに姿勢角を得ることができます。
 https://github.com/adafruit/Adafruit_BNO055/blob/master/examples/rawdata/rawdata.ino

 

 

以下でIMUセンサを各種比較してますのでよろしければどうぞ

スマート靴占い 『 IしたoTんきになぁ〜れ 』

 

BNO055をミニぷぱに導入

以前のATOM Matrixの機構にBNO055を追加しても良かったのですが、MPU6886を搭載したATOM Matrixに更にIMUを追加するのが冗長でどうしても許せなかったのでコントローラにはATOM Liteを採用しました。

 

注意点

BNO055とはI2Cで通信するのですが、M5Stack ArduinoのM5Atom.hではI2Cピンを指定してAdafruit_BNO055ライブラリでのBNO055との通信ができませんでした。

 

そこでここではM5Stack Arduinoライブラリは使用せずESP32 ArduinoライブラリでATOM Liteを使用することにしました。ESP32 ArduinoライブラリではI2Cピンを自由に指定してもBNO055と通信が問題なくできました。

ここではBNO055との通信はWire.begin(25, 21)で実施し、
サーボドライバ PCA9685とはWire1 .begin(22, 19)で実施しました。
これで問題なく動作を確認できました。

 

宴会芸

BNO055導入によって、正確な姿勢角を得ることが可能となりました。

ここではカルマンフィルタなど使用せず姿勢角の生データをそのまま使用しました。
BNO055が優秀で非常に楽です。

 

Yaw角を検出して旋回動作させて一方方向を保持する動作をさせてみました。

いい感じ!!

 

以前仕込んだ動作も問題なくできています。

床を傾けた時の足の高さでの平行制御もBNO055の姿勢角のみのP制御ですがスムーズに実現できています。

 

おわりに

ここでは9軸 IMUセンサ BNO055を用いてミニぷぱ制御を楽しみました。

BNO055が有能すぎて夢だったミニぷぱ宴会芸も実現できました!!

ミニぷぱがドンドン賢くなってくので大変嬉しいです!
引き続き勉強進めます!

次の記事

ロボット犬『Mini Pupperミニぷぱ』で 書道

ロボット犬『Mini Pupperミニぷぱ』Pythonでモーション記述

0
0

前回はミニぷぱ正規の構成でラズパイ4にRaspi OSとNode-REDを導入して動作を確認いたしました。

ロボット犬『Mini Pupperミニぷぱ』がやってきた

 

ここでは、動作モーションを増やしてのコントロールを検討します。

 

 

モーション制御検討

Python

前回はNode-REDで動作を仕込みましたが、複数のモーションになると煩雑になるためPythonを採用することにしました。

サーボドライバ PCA9685用のPythonライブラリは以下を使用しました。
 https://github.com/adafruit/Adafruit_Python_PCA9685

ちなみにこのライブラリでも専用基板のサーボナンバー 1~12がPCA9685ノードの15~4に対応していました。基板上そういった接続なっているのかもしれません。

Node-RED Dashboard

ミニぷぱコントロールUIにはNode-RED-Dashboardを使用することにしました。
 https://flows.nodered.org/node/node-red-dashboard

これによってブラウザ上のボタンなどで制御可能となります。

動作

Node-RED-Dashboardのボタンで足の高さを指定しています。
ブラウザで動くのでスマホでもコントロールできます。

 

ミニぷぱモーション制御

Dashboard

Node-RED Dashboardのnumericノードで足の高さや上げ幅、歩幅などを指定します。
buttonノードで各種モーションを起動します。

モーションは初期姿勢、足踏み、ジャンプ、ランニングマンを用意しました。

Node-RED

Node-REDの構成は以下のとおり

 

動作指定ボタンを受けて各モーションのPythonコードを起動しています。

Python起動時にnumericノードで指定したパラメータをmsg.payloadで引数として渡しています。

Pythonコード

足踏み動作は以下のような感じで

 

参考

動作

 

前後左右への歩行を仕込もうと思ったのですがdashboardにはジョイスティックがなくボタンやスライダじゃきついなぁと思った時に
Blynkはラズパイもいけたことに気づきました。。。

次はBlynkでの動作検証します。

おわりに

ここではNode-RED DashboardとPythonを用いてモーションコントロールを楽しみました。

しかしNode-RED DashboardのUIではリアルタイムラジコンを制御するには少し物足りない印象でした。

Blynkがラズパイ対応していたことに今さら気づいたので次回検証進めます!

 

追記 (ディスプレイ表示)

どうもラズパイ4はBlynkに対応されてないようなので、ラズパイを用いた本構成の検討はコレで一旦休止しようと思います。

最後にせっかくなのでディスプレイ表示だけ確認しました。

ディスプレイには320×240ピクセルのST7789が使用されていることが以下で解ります。
SPIで制御されておりピン配もPythonコードから読み取ることができます。
 https://github.com/mangdangroboticsclub/QuadrupedRobot/tree/MiniPupper_V2/Mangdang/LCD

ST7789制御

以下を参考にST7789用Python環境を構築しました。

 

またRaspiコンフィグでSPIを有効にします。

Pythonコード

上記を参考にして320×240のJPEG画像を表示するPythonコードをこしらえました。

動作

 

表示できました!
思えばラズパイにLCDつないでSPIで制御したの初めてかも
勉強になりました!

次の記事

ロボット犬『Mini Pupperミニぷぱ』を BNO055で姿勢制御

ロボット犬『Mini Pupperミニぷぱ』ラズパイ4 Node-REDで味見

0
0

前回はATOM Matrixを用いて ミニぷぱの動作を楽しみました。

ロボット犬『Mini Pupperミニぷぱ』がやってきた

ここでは正規のラズパイ4と専用基板を用いて ミニぷぱを動かせるようにします。

 

 

ミニぷぱ専用基板

以前 ミニぷぱに同梱のラズパイ4にRaspi OSを入れて専用基板でのサーボモータ制御を試みたのですが、サーボに電源が供給されず断念しました。
(2022/2/16現在 専用基板の回路図は未公開)

そうしましたところ、ミニぷぱの開発元様よりサーボ電源のイネーブルピンの存在をご教示いただきました。

ラズパイのGPIO21、GPIO25がサーボ電源供給のENピンとのことです。
それぞれサーボモータドライバのPCA9685の16個分のサーボの半分ずつの電源スイッチとなっているようです。

PCA9685動作

サーボドライバ PCA9685 はI2Cがインターフェースとなっております。

 

Raspi OSでI2C通信を有効にします。

 

I2C有効後に専用基板を載せてi2cdetect で接続されているI2Cデバイスを調べてみました。

0x40がPCA9685です。0x70はなんだろ? 🙄 
https://github.com/mangdangroboticsclub/QuadrupedRobot/tree/MiniPupper_V2/Mangdang によると
専用基板にはI2Cは3系統あって正規のI2Cピン(i2c-1)にはPCA9685しか つながってないはずだけど?

i2c-1 : for pwm controller PCA9685
i2c-3 : for EEPROM
i2c-4 : for fuel gauge max17205

サーボ制御

ラズパイ4にNode-REDを導入して専用基板でサーボを動かしてみました。
以下のPCA9685用のノードで制御しています。
 https://flows.nodered.org/node/node-red-contrib-pca9685

ちょっとハマったのが専用基板のサーボ1を動かすためにはPCA9685ノードで15を設定する必要がありました。
専用基板のサーボナンバー 1~12がPCA9685ノードの15~4に対応していました。
PCA9685ノードがおかしいのか専用基板の配線がそのようになっているのかは不明です。

rpi-gpio outノードでGPIO21、GPIO25をHighにしてサーボに電源供給しています。

 

無事に専用基板でサーボを動かせるようになったので、いよいよミニぷぱ制御に挑戦です!

 

ミニぷぱ 足制御

ESP32やATOM Matrixで行っていた時と同様に逆運動学でミニぷぱの足を制御します。

とりあえず1本動かしてみた。

 

Node-REDで足の高さを指定して制御しています。

IK 右前足ファンクションで足の高さをうけて各サーボの角度を導出しています。

 

足踏み

足1本を制御出来ればこっちのもんです。同じように残り3本も制御できるようにして足踏み動作してみました。

足踏み動作実現!
久しぶりに外装も全て取り付けて可愛さが復活しました。
ディスプレイも表示させたいな 🙄 

 

しかしNode-REDで動作シーケンス組むのは結構大変だったな。。。

歩行動作とかも仕込みたいので実装手法は検討が必要そうです。

 

おわりに

ついにラズパイ4と専用基板でミニぷぱを動かせるようになりました。

引き続きもろもろ検証して自由自在に動かせるようにしたいと思います。

次の記事

ロボット犬『Mini Pupperミニぷぱ』を BNO055で姿勢制御

ロボット犬『Mini Pupperミニぷぱ』ATOM Matrix で動作再検討

0
0

前回はコントローラにATOM Matrixを採用してIMUセンサによるバランス制御を実現しました。

ロボット犬『Mini Pupperミニぷぱ』がやってきた

ここではさらに動作の検証を進めましたので報告いたします。

 

バク転

↑このロボットのようにバク転できたらいいなと思い、試してみました。

 

できるわけねーか。。

次だ 次

 

歩行改善

他の4足歩行に比べて、歩行がぎこちないのでロボット犬との距離が以前に比べ縮まった現在、
改めて歩行動作を検討してみました。

これまでは対角線の2本を上げている間に接地している2本を動かして歩行しており、足上げと前後運動が分断し かつ足上げの時間が長く前後運動も等速ではありませんでした。

足上げの時間を短くし、足の前後運動を等速したところ非常にスムーズな歩行が実現されました。
機体のブレも小さく移動もスムーズです。これが正解の歩行方法のようですね。
生き物らしさは失われた気もしますが 🙄 

ランニングマン

4足歩行ロボットといえばSPOTのこの動作ですよね。
そうランニングマン!

 

ミニぷぱでも実現したく以下動画で勉強しつつ。。

 

ランニングマン動作を作りこんでみましたが。。

う~ん。。。イマイチ。。
よくよく見るとランニングマンは全足が一瞬浮く時間があって、その際に足を引いてるのですよね。。

ちょっとミニぷぱでは厳しいのかな?
引継ぎ勉強いたします。

おわりに

ここではATOM Matrixを用いて ミニぷぱの動作を再検証いたしました。

 

だいぶ4足歩行ロボットの理解が深まりましたので、次はミニぷぱ正規の専用回路の動作を検証しラズパイ4での制御に挑戦したいです。

次の記事

ロボット犬『Mini Pupperミニぷぱ』ラズパイ4 Node-REDで味見