「M5stack」タグアーカイブ

M5Stack UnitCatM 位置情報送信システム実証実験

以前製作したM5Stack UnitCatMを用いた 位置情報送信システムの実証実験を実施しましたので報告いたします。

 

 

構成おさらい

製作した位置情報送信システムの構成をおさらいいたしましょう。

制御はマイコンXIAOで実施し、30分おきにスリープから起床し5V DCDCをONしてUnitCatMユニットを起動します。
ユニットで基地局の位置情報を取得してサーバにHTTP通信で送信して5V DCDCをOFFしてXIAOをスリープしています。

部品

HTTP通信

サーバへの位置情報送信にはHTTPを採用いたしました。

M5Stack UnitCatM で HTTP通信

 

位置情報取得

位置情報は基地局の座標を取得するATコマンド (AT+CLBS=?) をUnitCatMユニットに送って取得します。

基地局の座標を得るまでに5回までリトライ実行します。

M5Stack UnitCatM を Seeeduino XIAO で制御

 

SIMカード

ここではIIJmioのデータSIMを使用しています。

M5Stack UnitCatM の 消費電力とデータSIM契約

 

乾電池駆動検証

実証実験の準備としましてシステムの乾電池駆動を検証しました。

 

アルカリ単三電池 3本で動かしました。
7/17~7/31までの17日経過しても動作しつづけ、乾電池による長期動作は問題ないことを確認できたので中断終了いたしました。

低消費設計がうまくいっていると言えるでしょう。

M5Stack UnitCatM を Seeeduino XIAO で制御

 

実証実験

東京旅行ついでに実証実験を決行いたしました。

乾電池駆動の位置情報送信システムを箱詰めして、羽田空港の郵便局から自宅に送ってみました。
乾電池が入っていることを伝え、特定記録による陸路での郵送をお願いいたしました。

 

位置情報データ

以下が位置情報送信システムからサーバに送られてきたデータです。

30分おきにデータが来るはずですが電波状況の影響のためかデータが届いていなかったり、基地局座標を得られていなかったりしております。
しかし断続的には座標を得ることができました。

2日かからずに札幌に到着しています。
しかし土日のために実際に投函されたのは月曜日の8/8でした。
その間は最寄りの郵便局の座標が断続的に送られておりました。保管されていたのでしょう。
 

座標プロット

 

 

 

恐らくフェリーも使ってこんなルートでやってきたのだと思う

 

おわりに

無事に位置情報送信システムによる座標取得動作が確認できました!
おもしろいな。

いよいよをもってコレを川に投げ流したくなってきた。。。

センサレス クローズドループ矩形波制御 その1 ーブラシレスモータ駆動への道2ー

前回はブラシレスモータをいじくりつつ、駆動ドライバ基板を製作して矩形波駆動でいわゆるオープンループ制御でのモータ回転を楽しみました。

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

 

ここではモータの回転をセンサレスでフィードバックするクローズドループ矩形波制御での駆動を目指します。

 

 

参考書籍

ここからは以下の電子書籍を参考に進めます。Kindle Unlimitedメンバーでしたら無料で読むことができます。

ブラシレスレスモータの制御方法が各種紹介されPICマイコンでの実例が記載されております。
原理説明も明確になされているのでかなり理解が深まりました。

書籍のChapter8 センサレス 制御(120 °通電方式) を参考に回転制御の実現を目指します。

 

モータ誘起電圧

ここではエンコーダなどの外部センサを用いずに回転位置を把握しながらの矩形波回転制御を目指します。

モータは前回に引き続き以下のセンサのないものを使用します。

 

センサレスの場合はブラシレスモータが回転したときに発生する端子の誘起電圧から回転位置を読み取る必要があります。

参考書籍のブラシレスモータ誘起電圧観測回路を製作し、実際の回転時の発生する電圧を観てみます。
以下が製作した誘起電圧観測用フィルタ回路です。

$v_u, v_v, v_w$でモータ端子の誘起電圧を観測します。

実動作時にはドライバによるPWMオン電圧がモータ端子には印可されますので、誘起電圧はフィルタを介して観測します。
参考書籍にならってフィルタのカットオフ周波数は1.78kHzとしました。
モータ回転制御時のPWM周波数は20kHzとしますので十分スイッチングの影響はカットされるはずです。

$v_n$は各端子間を抵抗で分圧してモータコイルの中間の電圧(中性点電圧)を観測します。

 

モータを電動ドライバで回してフィルタ回路を介して誘起電圧を観測してみました。

 
以下が観測波形。それぞれ120°位相が異なる電圧が観られました。

 

回転位置検出

次にモータに前回製作した駆動ドライバを接続した状態(電源はOFF)で電動ドライバでモータを回して、
誘起電圧$v_u$と中性点電圧$v_n$を観ました。

誘起電圧$v_u$と中性点電圧$v_n$と一致する点がコイルが永久磁石による磁束と直行せずに電磁誘導が起きない位置にあることを示しており、更にモータ端子の誘起電圧が$v_n$より大きいか小さいかでモータの位置を分類することができます。

 

フィルタ回路の出力をESP32のアナログ入力ピンに接続して、各誘起電圧と中性点電圧$v_n$を比較することでモータの回転位置を1周6分割で把握することができました。

 

各誘起電圧が中性点電圧$v_n$より大きければ1を出力し、各状態を分類することで6つの位置ステートに分けれました。

中性点との比較にはヒステリシスのあるコンパレータなどは用いず、ESP32アナログピンによるanalogReadで実施しました。
若干ノイズ的な比較出力もありますが$v_u > v_n、v_v < v_n、v_w > v_n$ならモータ位置①などと明確な場合分けによって6分割できました。
ステートの時間を観測すれば回転速度も把握できることになります。

以上、誘起電圧と中性点電圧比較によってモータの位置と回転速度を把握できるようになりました!

センサレス クローズドループ矩形波制御

いよいよモータ位置と回転速度に基づいて制御を実施します。

構成

ここでの駆動システムの構成は以下の通りです。

スイッチでモータの正転・逆転を変えれるようにしました。
またここではモータの回転速度ではなくドライバのハイサイドON時の20kHz PWMデューティを可変抵抗で指定するようにいたしました。
 

動作

制御の詳細説明の前に動作をご覧ください。

無事に回転制御できました!

可変抵抗による速度制御やスイッチによる正転・逆転切り替えも動作しました。

 

以下は動作時の誘起電圧$v_u$と中性点電圧$v_n$です。
スイッチングノイズの影響を受けておりますが、電動ドライバでモータを動かしたときと同様の波形で制御出来ております。

Arduinoコード

ESP32用に制作したプログラムを元に制御方法説明します。

 

モータ回転時の誘起電圧を検出できないと回転位置の把握ができないため、
コントローラ起動時にモータを少し回して誘起電圧を発生させています (L. 185-201)。

デュアルコアのcore0でモータの位置と速度を算出しています (L. 43-141)。
モータの位置ステートの切り替わり時にIO14をHIGHに立ち上げてIO12でそれを受けて割り込みでドライバを駆動するようにいたしました (L. 159)。

駆動するためのドライバのトランジスタON/OFFステートはスイッチ(IO39)のH/Lで正転用・逆転用に切り替えています (L. 80-116)。

回転速度rotTimeAve は各位置ステートの時間の平均で割り出しています (L. 128-136)。

ステートの切り替えの割り込みでドライバ駆動関数rot() (L. 210-263)が呼ばれます。
rotTimeAveの半分待った後 (L. 216) に位置ステートと正転/逆転に基づいたトランジスタON/OFF設定が実行されます。
位置ステートの時間の真ん中でモータが駆動して次の位置ステートに移行し回転が継続されます。

トランジスタのハイサイドONはledcWriteを用いて20kHz PWMで印可します。分解能は10ビット(0~1023)でオンデューティ設定します (L. 161-171)。
オンデューティは可変抵抗(IO13)で設定するようにしました (L. 224)。

 

おわりに

センサレス クローズドループ矩形波制御が実現できました。
モータの誘導起電力で回転位置や速度を判定しているため、低速では起電力が小さくモータを駆動できませんでした。

 

またここではモータを駆動するドライバのハイサイドトランジスタのPWMオンデューティを指定して制御しましたが、この場合モータの負荷によって速度は変わってしまいます。

次回は回転速度を指定するようにして、実回転速度からPWMオンデューティをコントロールするようにしたいと思います。

ブラシレスモータ駆動への道 爆誕

以前、デジタルおかもちをブラシレスモータを使用して製作しました。

デジタルおかもち

 

デジタルおかもちは要するに1軸のジンバルのようなもので2軸にも挑戦したいと思ったのですが、使用しているモータが重たいのでさすがに2個搭載は厳しいものがございます。

ちなみに使用したモータは自作の姿勢制御モジュールに使用しているものです。
ドライバとコントローラ内蔵で制御はデジタル信号だけで実施できるので非常に便利なモータです。

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

 

将来的に2軸のジンバルを自作してみたいので小型のブラシレスモータを自由自在に制御してみたいと強く思いましたので、ここに”ブラシレスモータ駆動への道”の開設を宣言します。

 

 

ブラシレスモータいじり

まずは小型のブラシレスモータと各種コントローラを購入して、自身とブラシレスモータとの距離を縮めることにいたしました。

センサのない3端子のみの小型で軽いブラシレスモータを2種類 購入しました。

コントローラ①

ESCを購入してブラシレスモータを回転させてみました。

 

PWM入力でモータ速度を制御できます。
ツマミ付きのPWM出力するコントローラも付属され、
50Hz 5%~10%のPWMを出力します。

無事にブラシレスモータを回転させることができましたがESCが何をしているか分からず(分解すればいいのだが。。)、回転方向も変えれず一方方向のみです。

コントローラ②

回転方向を変えれるコントローラも購入し試してみました。

 

問題なく動作しましたが回転方向の切り替え応答が遅かったです。

 
参考: Brushless Motor Controller Board

 

試しにこのコントローラを用いてIMUセンサ MPU6050で回転を制御する1軸ジンバルにしてみましたが
応答が遅くてダメダメでした。。

手動

乾電池を使用して手で印可方向を変えながらモータを回してみました。

 

手で印可方向を変えるのは大変なので、3Dプリンタで治具を製作しました。
単4電池がすっぽり入る円形の容器を出力し、フチに銅箔テープで3分割した電極を設けました。
電極とブラシレスモータの端子を3対接続して、中で電池を回せば先ほどの手動での作業が容易にできます。

 

電池の回転方向や速度に応じてブラシレスモータも回転しています。
要するにこの電圧印可方法をコントローラで自動化してあげればよいということが実感されました。

 

この道の目標

ブラシレスモータの回し方を実感としても理解できましたので、コントローラの自作を目指します。
現状以下のように段階を経て理解を深め良いコントローラの完成を目指します。

  • モータ駆動ドライバの実現
  • 簡単な矩形波駆動でモータの回転を確認する
  • センサレスでの回転速度制御実現
  • 正弦波駆動やベクトル制御など他の制御も学習する

 

駆動ドライバの製作

ブラシレスモータのコントローラ自作に先立ってまずはモータを駆動するドライバを製作します。

市販コントローラの検証

以下のコントローラのドライバ部を参考に検証します。

 

ドライバ のローサイド、ハイサイドは意外にも共にNch MOSFET (NCE6990) が使用されていました。

 

前段にはIR2101というICが載ってブートストラップでハイサイドトランジスタを 駆動していました。

ドライバ製作

検証したコントローラの部品をとって駆動基板を製作します。

1ch

まずは1ch分のMOSFETとIR2101をとって改めて基板に実装してみました。

ゲート抵抗 (100 ohm)やブートストラップのダイオードとコンデンサもそのまま移植しました。

 

駆動ICのIR2101の入力を制御して出力波形を観測しました。
ドライバの電源は12V、入力にはATOM LiteのIO出力(0-3.3V)を使用しました。

 

問題なく動作しました。
両サイドのトランジスタがONしないように1usecのデッドタイムを設けています。

 

3ch

同様に残りの2chも部品をとって3chの駆動基板を完成させました。

3ch分のハイサイド、ローサイド駆動用入力ピン6個と3個の出力ピンと電源(12V)・GNDピンがございます。

 

矩形波駆動

作製したドライバ基板を用いてブラシレスモータを回してみます。

駆動方法は矩形波駆動を用います。ちょうど先の動画の乾電池をくるくる回した方法を自動化するイメージです。

 

矩形波駆動は以下のように6個の印可ステートを順に変えてモータを回します。
このステートの変え方を逆にすればモータは逆転します。

参考: 矩形波駆動とは

動作

ATOM Liteの6個のIOをもちいて3chのハイサイド、ローサイドのトランジスタを上記の矩形波駆動のステートでON/OFFさせました。
ATOM Liteのボタンを押すと逆転します。

各ステートの時間は10usecで駆動しました。
かなり電流が流れるので回転はしていますが振動して元気ですww

 

PWM駆動

ハイサイドのオンをフルオンではなくPWM デューティ 12.5% (20kHz)にして電流低減を図りました。

電源電流も減って回転も落ち着きました。

自動での回転速度追従や負荷に応じたPWM制御などできるようになりたいです。

Arduinoコード

 

おわりに

ブラシレスモータをいじくりつつ、駆動ドライバ基板を製作して矩形波駆動でモータ回転を楽しみました。

徐々に学習を進めて この道の目標を達成しつつ ブラシレスモータのコントローラを完成させたいと考えています。

ここではいわゆるオープンループ制御を楽しみましたので
次回はモータの回転をセンサレスでフィードバックしての回転速度制御を目指します。

姿勢制御装置とバーサライタの融合2 ーリアクションホイールへの道51ー

前回は 1軸 姿勢制御モジュール SHISEIGYO-1のホイールにLEDをつけてバーサライタ動作させてみました。

姿勢制御装置とバーサライタの融合 ーリアクションホイールへの道50ー

 

姿勢制御モジュールのホイールはバランス状況によって正転・逆転及び回転スピードが変わるので、安定した画の表示は出来ませんでした。

 

 

スリップリング

前回はホイールにLEDと制御用のマイコン(Adafruit Trinket M0)と回転検出用フォトリフレクタを載せてワイヤレスチャージモジュールで無線電源給電しました。

ここでは画の表示にホイールを駆動するブラシレスモータのエンコーダ出力を使用したいと考えました。
エンコーダによる回転検出値でLEDの点灯パターンを制御すればホイールの正転・逆転及び回転スピードが変わっても表示する画に影響はありません。
しかし問題はどのようにエンコーダ出力値をLED制御に反映させるかです。

そこで遂にスリップリングに手を出してしまいました。

 

スリップリングは回転部に電源線や信号線を接続できるコネクタです。

 

ここでは4線のスリップリングを用いて回転部のSPI入力LEDと接続します。

 

SHISEIGYO-1 POV 構築

購入したスリップリングをSHISEIGYO-1のモータに通したかったのですが、シャフトが短く埋もれてしまいました。。

 

マウントハブと平行ピンでシャフトを延長してスリップリングとフライホイールを固定しました。

 

凄く仰々しくなってしまいました。。

完成

スリップリングの回転部用の配線に11セルのLEDを接続し、他方の配線をSHISEIGYO-1のコントローラであるATOM Matrixに接続します。

 

ATOM Matrix (デュアルコア) で姿勢制御しつつモータエンコーダ出力(1周100分解能)に基づいてSPI LEDを制御します。

 

動作

まずはホイール1周を4分割して4色で発光
エンコーダで回転位置を検出してホイール速度や正転・逆転に依存しない表示を確認。

倒立動作も問題なく出来ています。

 

アニメーション表示

LEDのセル数が少なく回転速度も一定ではなくそれほど早くないので、きれいな表示は出来ていませんがスリップリングの使用によってかつてない表現が実現できました。

 

おわりに

ここでは初めてのスリップリング体験を堪能し、姿勢制御モジュールとPOVの融合による新たな表現を検証いたしました。

今後はスリップリングを用いたガチPOVの製作も検討したいなと考えております。

それではまた。

デジタルおかもち2

前回はサーボモータを用いてデジタルおかもちを製作しました。

デジタルおかもち

前回において以下の課題や疑問が生じました

  • サーボの応答が遅いのか
  • 制御が遅いのか
  • そもそも制御の思想自体が誤っているのか
  • 手で持って移動させているのが悪いのか(実際サーボの移動に影響されてリンギングすることもあった)

 

 

ブラシレスモータを試してみた

試しに姿勢制御モジュールSHISEIGYO-1のブラシレスモータでデジタルおかもちを試してみました。

なんと!すごくいい感じに1軸デジタルおかもちが実現できました!!

おかもち台は3Dプリントして姿勢制御モジュールのホイールの代わりに取り付けました。

 

SHISEIGYO-1で使用しているブラシレスモータにはコントローラとエンコーダが内蔵されています。

モータの回転方向やブレーキはデジタル制御でき、回転スピードはPWM信号で制御します。
エンコーダは1周100パルス出力され、ここでは4逓倍して使用しました。

 

ATOM Matrixに内蔵のIMU(MPU6886)の加速度(acc)と角速度(gyro)のセンシング値を用いてカルマンフィルタを通して筐体の傾斜$θ$と角速度$ω$を計測します。

計測値とエンコーダによるモータの回転目標位置$θ_{GOAL}$を用いて
以下のようにモータ回転PWM信号$M$を生成し、PD制御しました。

$$M = {Kp}_X × (θ – θ_{GOAL}) + {Kd}_X × ω  $$

$$   但し、Kp, Kd:係数$$

 

ブラシレスモータによるデジタルおかもち動作は前回のサーボモータに比べ非常に応答性がよく驚きました。
ブラシレスモータでもこのように目標位置にパタッと止める制御ができちゃうんですね!

大変勉強になりました!

 

前述の課題や疑問はブラシレスモータ版のデジタルおかもち体験を経て以下のようにステータスが変化しました

  • サーボの応答が遅いのか
    →おそい!ブラシレスモータ最高!
  • 制御が遅いのか
  • そもそも制御の思想自体が誤っているのか
    →制御思想やセンサは悪くなさそう
  • 手で持って移動させているのが悪いのか
    →モータの応用早いと手の揺れも吸収してくれる

 

エンコーダ未使用版 検討

SHISEIGYO-1の機構を流用して1軸デジタルおかもちを楽しみましたが、筐体の姿勢を検出してモータを制御するためには、モータの回転量を検出するエンコーダが必須になってしまいます。

ここではエンコーダを使わない方法を検証します。

おかもち台にIMUを仕込んで、平行になるようにモータを回転させる機構にすればエンコーダは必要なくなるはずです。

早速試してみました。

問題なくモータのエンコーダを使用せずにおかもち動作を確認できました。

 

おかもち台にはIMUセンサMPU6050をつけて、コントローラにはATOM Liteを用いました。

 

MPU6050で測定した加速度からおかもち台の傾斜を計測し角速度と共にカルマンフィルタを通しておかもち台の角度$θ$と角速度$ω$を計測します。

以下のようにモータ回転PWM信号$M$を生成し、PD制御でおかもち台が常に水平($θ = 0$)になるようにします。

$$M = {Kp}_X × θ + {Kd}_X × ω  $$

$$   但し、Kp, Kd:係数$$

 

おわりに

ここではブラシレスモータによる1軸 デジタルおかもちを検証しました。
ブラシレスモータの回転エンコーダなしでもIMUセンサに基づくブラシレスモータ制御が実現できました。

ブラシレスモータでもサーボモータのように任意角度に回転移動制御できるようになり、その応答性の良さに大変驚きました。

 

2軸のデジタルおかもちもブラシレスモータで実施したいのですが、ここで使用したモータは重すぎるため以下の軽そうなブラシレスモータを購入してみました。

回転させるためのコントローラが必要そうですが届き次第 勉強したいと思います。
エンコーダなしでの制御が確認できていますので2軸のブラシレスモータ デジタルおかもちの実現障壁もそれほど高くないと思っています。

それではまた。

デジタルおかもち

凄い動画がTwitterにありました。

 

リンクの記事によるとマジックペンを載せたロボットアームの先の台を、移動時にうまいこと傾けて倒れたり滑り落ちないようにしているとのこと

この台の制御をリアルタイムに実施しているのか、アームの移動動作に基づいてあらかじめシーケンス組んでいるのかは不明ですがいずれにしても凄いですね。

なんか自分でも試してみたくなったので動く台(デジタルおかもち)を作ってみました。
ロボットアームなど持っていないので自分の手でもって実験します。

 

 

1軸おかもち

サクッと1軸で動く台を作ってみました。
サーボモータRDS3115とATOM Matrixを使用しました。

 

ATOM Matrixは持ち手の下部につけて内蔵のIMUセンサ MPU6886のセンサ値を使用しました。
上の動画ではMPU6886の加速度から傾きを計算して、10回計測した値の平均を用いてサーボを動かしています。

1軸上での重力加速度の傾き分、サーボを動かしますのでゆっくり動かせば天板は常に平行になるように動きます。

素早く動かすと加速度がかかりますので、1軸上の加速度と重力加速度のベクトル和の方向と垂直になるように天板が傾きます。

 

2軸おかもち

サーボモータRDS3115を追加して2軸にしました。
1軸の時と直行する傾き検出を追加して2個目のサーボを制御します。

 

これで常に平行を保とうとする台が完成しましたので、さっそく物を載せてみました。

 

持ち手を傾けても天板は平行に保たれておりますが、加速移動時になんか挙動がおかしいです。

よくよく考えてみると持ち手を傾けた際に天板とセンサは違う方向を向いており、移動時の加速度がかかる方向が違いました。

センサの位置がまずいですね。

 

天板にセンサ移動

ATOM Matrixを持ち手の底面から天板に移動しました。

 

おかもちの座標は以下のとおり。

 

ATOM MatrixのIMUの加速度(acc)と角速度(gyro)のセンシング値を用いて
以下のようにX軸、Y軸のサーボの角度($θ$)を制御して天板水平方向の加速度がゼロになるように制御しています。

$$θ_X = θ_{X-1} + {Kp}_X × {acc_Y} + {Kd}_X × {gyro_X}  $$

$$θ_Y = θ_{Y-1} + {Kp}_Y × {acc_X}  – {Kd}_Y × {gyro_Y}  $$

$$   但し、θ_{X-1}, θ_{Y-1}:直前に算出した角度、 Kp, Kd:係数$$

これによって持ち手が傾いても天板は平行になるようにサーボが動き、移動時には加速度と重力加速度のベクトル和の方向に対して常に垂直になるように天板が傾くという魂胆です。

 

しかし、はやく移動させると積載物は落ちてしまいました。

 

サーボの応答が遅いのか
制御が遅いのか
そもそも制御の思想自体が誤っているのか
手で持って移動させているのが悪いのか(実際サーボの移動に影響されてリンギングすることもあった)
色々原因が考えられますが完ぺきなる おかもち は実現できませんでした。

 

おわりに

ロボットアームによるペンの移動に感化され、デジタルおかもちを製作してみました。

結果的には成功しませんでしたが、いつかロボットアームを手に入れたら先端に本機構のおかもちを取り付けて再検討実施したいです。

 

姿勢制御装置とバーサライタの融合 ーリアクションホイールへの道50ー

姿勢制御モジュールのホイールにLEDを付けてバーサライタにしてみてはどうだろう。

思いついてしまったので どうなるかは考えずに作り上げることだけを考えて手を動かした。
ちょうど祝日 天皇誕生日。俺なりの祝いの儀式だ。

 

 

とにかく作る

1軸 姿勢制御モジュール SHISEIGYO-1のホイールにLEDをつけてバーサライタ動作させます。

回転部への給電はハンディバーサライタ PovRanianの機構をそのまま利用してワイヤレスチャージモジュールを使用します。

 

ワイヤレスチャージモジュール送信側をSHISEIGYO-1の筐体に固定。
電源は5V DCDC出力に接続しました。

 

ホイールにLEDやワイヤレスチャージモジュールの受信部を固定する治具を3Dプリントいたしました。

マイコンはAdafruit Trinket M0 を使用しました。

 

SPI入力のLEDを11セル前面に固定。
更にホイールに固定後に回転を検出するフォトリフレクタセンサも固定します。

 

ホイールを固定して完成!

筐体に貼ったマスキングテープの白マーカをフォトリフレクタで検出します。

 

動作

 

プログラム的にはフォトリフレクタセンサで回転時間を検出して、1周の時間を4分割してLEDを赤、緑、青、黄で光らせます。

姿勢制御モジュールの場合は回転速度常時変化するのでマーカ1個で回転検出するPovRanian形式だときれいな絵を出すのが難しいです。

ブラシレスモータのエンコーダ出力を利用できれば回転速度や正転・逆転に関係なく絵が出せそうですが無線では厳しいと思います。

いつかスリップリングを使用した有線でのバーサライタ動作も試してみたいです。

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

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

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

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

 

バク転

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

 

できるわけねーか。。

次だ 次

 

歩行改善

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

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

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

ランニングマン

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

 

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

 

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

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

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

おわりに

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

 

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

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

前回はミニぷぱのコントローラにESP32を採用し、足を自由自在に制御できるようになり4足歩行についての理解を深めました。

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

ここではコントローラにIMUを内蔵したATOM Matrixを使用してみましたので報告いたします。

 

 

ATOM Matrix

4足歩行について理解が深まりましたので、次は以下を再現してみたいと考えました。

恐らくIMUセンサで姿勢を検出して足の高さを制御して、機体を平行に保っているものと思われます。

 

これまでのESP32を使用した機構にIMUセンサを追加しようとも思ったのですが、
ESP32-PICOとIMUセンサ MPU6886がコンパクトに内蔵されたATOM Matrixを使用することにしました。

コントロール基板

SHISEIGYO-1 専用基板PCA9685モジュールを用いてコントローラを構築しました。

 

注意点

ATOM MatrixとPCA9685モジュール間のI2C通信として
Wire.begin(22, 19); //SDA, SCL
を使用しました。

ATOM内蔵の MPU6886は
Wire1.begin(25,21);  (https://github.com/m5stack/M5Atom/blob/master/src/utility/MPU6886.cpp)
でI2C通信しているのでPCA9685モジュールとの干渉は心配ありません。

但し、M5Atomライブラリを用いて
M5.begin(true, true, true);   (Serial Enable, I2C Enable, Display Enable)
でI2Cを初期化してしまうと
Wire.begin(25, 21, 100000UL);
が実行されPCA9685モジュールと干渉してしまうので
M5.begin(true, false, true);
とする必要があります。

アドレスが違うので同じI2Cピンを用いても良いのですがMPU6886とPCA9685モジュールの既存のライブラリを使用したく、そのライブラリでWre設定がなされてるので通信ピンを分けました。
今後 高速化のためにコアを分けることも見据えております。

動作

ATOM Matrixでも問題なく歩行動作を確認できました。

 

平行制御

いよいよIMUセンサをもちいて機体を平行に保つ制御を実現させます。

ATOM MatrixのIMUの座標軸は以下のようになっています。

X軸とY軸の姿勢角をセンシングして足の高さを制御します。
それぞれの軸の姿勢角と角速度にはカルマン・フィルタを用いました。
 https://github.com/TKJElectronics/KalmanFilter

1軸制御

まずは1軸 (Y軸)での制御を実現させます。
なかなか制御がうまくいかず。。

 

いろいろ制御方法を試行錯誤してる際にサーボが暴走しPCA9685モジュールの逆起電力防止PMOS燃えて動かなくなりました。。煙出たから。。。

しょうがないのでPMOS外してショットキーダイオードをぶち込みましたww
あくまで再購入品が届くまでの応急処置です(しかし こういったイレギュラーな状況下での対応にエンジニアの差というものが出ます)。

 

P制御

センシングしたY軸の角度$θ_Y$から機体を平行にするための足の移動量$h_Y$を以下で算出し制御してみます。

$$h_Y = h_{Y-1} + {Kp}_Y × \sin{θ_Y} $$

$$   但し、h_{Y-1}:直前に算出した移動量、 {Kp}_Y:係数$$

姿勢角から高さ変化量を導出して随時足して目標値に収束させます。
sinをとる必要はなさそうですが何となくそうした。

 

地面の傾きに追従して機体を平行に保とうとしますが、まだぎこちないです。

 

PD制御

さらにY軸の角速度$ω_Y$もフィードバックさせてみます。

$$h_Y =h_{Y-1} + {Kp}_Y × \sin{θ_Y + {Kd}_Y ×ω_Y / 100.0}   但し、{Kd}_Y:係数$$

係数${Kd}_Y$が大きい値にならないように100.0で割っています。

 

かなりヌルヌルと追従できるようになしました!

2軸制御

同様にX軸についてもセンシングして足の高さを制御し、2軸での平行追従制御を実現させました。

 

おわりに

IMUを内蔵したATOM Matrixをコントローラに採用することで、やってみたかったバランス制御が実現できました。

IMUのYaw角センスで旋回制御して常に同じ方向を向くのもやってみたかったのですが、MPU6886のドリフトが大きく実現できませんでした。
違うセンサでいつか実施したいですね。

姿勢制御モジュール 4重倒立挑戦3 ーリアクションホイールへの道49ー

久々に姿勢制御モジュールの4段倒立に挑戦しました。

DCモータで姿勢制御 SHISEIGYO-1 DC 爆誕  ーリアクションホイールへの道43ー

 

前回の倒立時間は31秒でした。今回はそれ以上を目指します。

 

 

前回の課題

前回の時点で3段倒立までは非常に安定しておりましたが、3段目に載せているSHISEGYO-1 Jr.のホイールのトルクが足りないかなと感じていました。

このトルク増加によって4段目のSHISEIGYO-1 DCの積載の影響が減り安定するのではと予想しました。

 

調整

前回の課題なども考慮しつつ諸々調整しました。

SHISEIGYO-1 DC 底面調整

SHISEIGYO-1 DCの底を滑りにくくするためにTPUフィラメント製にしました。
大変滑りにくくなりました。

SHISEIGYO-1 Jr.  ホイールトルク調整

前回からの課題であったSHISEGYO-1 Jr.のホイールのトルク不足を解消するために、ナットを増やしました。

この変更によってホイール質量は28g から 50g になりました。

安定性が増して3重で25分以上の倒立が実現できました。

SHISEIGYO-1 the END 重量調整

一番下の姿勢制御モジュール SHISEIGYO-1 the ENDの重量を増して安定化をはかりました。

1軸なので使用しないのですが、ホイールを2個追加でして増量しました。

 

記録会

上記調整を施して記録会実施しました。

47秒の4重倒立を達成しました!

 

再調整

記録会からまたまた気になる点が出てきたので再調整します。

記録会では倒立崩壊時に下から2番目のSHISEIGYO-1の制御が乱れた印象を受けました。
恐らくSHISEGYO-1 Jr.のトルク向上のためにホイール重量を増したことが影響したのだと思います。

SHISEIGYO-1 Jr.  ホイールトルク再調整

SHISEGYO-1 Jr.のホイール重量を増やし過ぎたため少し減らします。

3重だったナットを2重にしました。

この変更によってホイール質量は50g から 43g になりました。

SHISEIGYO-1 DC  ホイールトルク再調整

下から2番目のSHISEIGYO-1の負担をさらに減らすために1番上のSHISEIGYO-1 DCのホイールのネジを減らしました。

この変更によってホイール質量は22g から 15g になりました。

 

これでもSHISEIGYO-1 DC自身は問題なく倒立できることを確認しました。

 

再記録会

1分15秒の4重倒立を達成できました!!

バランスを持ち直す動作がかなりの頻度で出来ているので、もっと良い記録も目指せそうです。

置き方の鍛錬も進めたいと思います。

 

おわりに

今回の調整によって30秒以上の4重倒立は高い確率で実現できるようになりました。

置き方など研究して更なる高みを目指したいと思います!

SHISEIGYO-2 Walker の歩行を再検討3

前回はSHISEIGYO-2 Walkerで逆運動学による歩行を確認しました。

33日後に2足歩行ロボットを完成させたい俺

上下前後を正弦波形で回転するように移動させる歩行から、もう少し人間らしい歩行を目指してみました。

 

 

足の前後

まずは片足で足をどれほど前後できるのか確認してみました。

足の高さ30mmで ゆっくりとですが前後 10mm ~ -10mm 移動できました。

支点動かして機体傾けるこの動作は面白いですね。
今後なにかに応用できそう。

 

歩行検討

片足を上げて前方に下げると同時に他方を後ろに下げて前進する人間っぽい歩行を目指します。

足の座標は以下のように動かしてみます。

動作

片足接地時にも足を後方に下げているので常に前進しており、割と自然な歩行になったのではないでしょうか?
足の高さ30mmで前後 5mm ~ -5mm 移動で歩行できました。

リアクションホイールの制御ゲインや回転検出ロータリエンコーダの4逓倍化などでオートバランスの精度向上を図りましたが前後移動は ±5~6mmが限界でした。
これ以上大股で歩くには足高さを低くしたりフライホイールのトルクを上げるしかなさそうです。

 

おわりに

ここではSHISEIGYO-2 Walkerの方向の再検討を実施いたしました。

安定性や歩幅の向上が実現され大変喜んでいます。

 
でも以前のほうがロボットらしくていいかなとも思わなくもない(;^ω^)

SHISEIGYO-2 Walker の歩行を再検討2

前回は2足歩行ロボット SHISEIGYO-2 Walker の足を逆運動学で位置指定して動かせるようにしました。

SHISEIGYO-2 Walker の歩行を再検討1

ここでは逆運動学での歩行について検証しました。

 

 

歩行検証

逆運動学による足先座標の指定動作を両足に展開して歩行動作を確認します。

足踏み

まずは両足の高さのみを正弦波形で変化させて足踏み動作の確認をしました。
他方を逆相で動かせば足踏みとなります。

リニアにサーボ角度を変えていた時よりも柔らかな動作になりました。
逐次足の高さを指定できるようなったことによる恩恵ですね。

歩行

足踏みが確認できましたので、いよいよ歩行に挑戦します。

座標は以下のように前後方向をX軸、上下方向をY軸としました。

以下のようにX軸、Y軸を正弦波形で変化させて足の座標を指定して動かします。
他方の足はこれと逆相で動かします。

 

動作

使用したミニサーボ FT1117Mではトルクが足りないようで異音がでて、良い感じの歩行になりませんでした。。

足をこまかに前後することでサーボ単体にかかる負荷が増したためと考えられます。

 

サーボ交換

トルク向上のためサーボを以下に変更します(ちょっとオーバースペックでサイズがでかいのが難点ですが。。)。

足踏み

ミニサーボと同様に正弦波で足踏み動作確認。

大変力強くいい感じ!

歩行

ミニサーボと同様に正弦波で歩行動作確認。

こちらは問題なく元気に歩行できました。

以前のように線形的にサーボの角度を直接動かしていたより、柔らかく生物的になった気がします。

 

おわりに

ここではSHISEIGYO-2 Walkerで逆運動学による歩行を確認しました。

次は前後方向のバランス耐性をリアクションホイールの調整含めて確認してみたいと思います。

それではまた

SHISEIGYO-2 Walker の歩行を再検討1

以前製作したリアクションホイールを用いた2足歩行ロボットSHISEIGYO-2 Walker の歩行について再度検討したいと思います。

33日後に2足歩行ロボットを完成させたい俺

 

 

SHISEIGYO-2 Walker

バランスを2個のリアクションホイールでとって、二足歩行するロボットです。
片足を2個、合計4個のサーボモータで足を動かします。

これまでSHISEIGYO-2 Walkerの歩行は直接サーボの角度を指定して操作しておりました。

今後より精度よく足を操作するために逆運動学による制御を検討しました。

 

逆運動学

足の座標 (x, y) からサーボの角度 ($θ_1$, $θ_2$)を導出します。
片足の座標は以下で定義しました。

サーボのアームの長さは$L_1$、下肢の長さは$L_2$、サーボの軸間の長さを$l$とします。

 

各サーボの角度$θ_1$, $θ_2$は以下で導出されます。

$$θ_1=θ_a-θ_b$$

$$θ_2=θ_c-θ_d$$

$θ_a$, $θ_b$, $θ_c$, $θ_d$は三角比や余弦定理より以下で導出できます。

$θ_a = \tan^{-1} \left(\frac{y}{x-l/2} \right)$

${L_2}^2 = {L_1}^2 + {l_a}^2 – 2{L_1}{l_a}\cos{θ_b}  $
$θ_b=\cos^{-1} \left(\frac{ {L_1}^2+ {l_a}^2- {L_2}^2}{2{L_1}{l_a}} \right)$

$π-θ_c = \tan^{-1} \left(\frac{y}{x+l/2} \right)$
$θ_c =π- \tan^{-1} \left(\frac{y}{x+l/2} \right)$

${L_2}^2 = {L_1}^2 + {l_b}^2 – 2{L_1}{l_b}\cos{θ_d}  $
$θ_d=\cos^{-1} \left(\frac{ {L_1}^2+ {l_b}^2- {L_2}^2}{2{L_1}{l_b}} \right)$

 
よってサーボの角度$θ_1$, $θ_2$は足先の座標 (x, y)より以下で導出できる。

$$θ_1=\tan^{-1} \left(\frac{y}{x-l/2} \right)-\cos^{-1} \left(\frac{ {L_1}^2+ {l_a}^2- {L_2}^2}{2{L_1}{l_a}} \right)$$

$$θ_2=π- \tan^{-1} \left(\frac{y}{x+l/2} \right)-\cos^{-1} \left(\frac{ {L_1}^2+ {l_b}^2- {L_2}^2}{2{L_1}{l_b}} \right)$$

$$      但し、l_a = \sqrt{\left(x-l/2\right)^2 + y^2}$$

$$         l_b = \sqrt{\left(x+l/2\right)^2 + y^2}$$

 

動作

導出した逆運動学の式に基づいて、片足の座標を指定して動かしてみました。

 

スマホアプリBlynkで座標をジョイスティックで指定してBLEでSHISEIGYO-2 Walkerのコントローラ (ESP32)に送っています。

 

おわりに

ここでは2足歩行ロボット SHISEIGYO-2 Walkerの足を逆運動学での制御を検討しました。

制御関数が導出できましたので、次回は歩行座標を検討して歩かせてみたいと思います。

M5Stack で HelloWorld(Mac OS Big Sur)

お父ちゃんに貰ったM5Stackで、まずは定番のHelloWorldをやってみました。

インストール

Arduino IDE インストール

Software | Arduino

こちらからインストール。
これは何も問題なく(しかも早い)あっさり終わりました。

ドライバーインストール

Big Sur はドライバのインストールしなくても大丈夫みたいです。

いつの間にかMacでドライバのインストールが不要になってWindowsの方が面倒になっていた件 – 知的好奇心 for IoT

Auruino IDE 設定

色々調べていたら難しくて何がなんやらで挫けそうになりましたが
お父ちゃんに聞いた所まず説明書通りにということで、
付属していたこちらのとおりに進めていきました。

(説明書にこんなわかりやすく書いてあった・・全然見てなかった・・)

① Auruino IDE を起動

② 環境設定

Preferences(環境設定) を開く

「追加のボードマネージャーのURL」に下記URLを入力

https://dl.espressif.com/dl/package_esp32_index.json

「OK」ボタンを押して閉じる

③ ESP32 ボードの追加

ツール > ボード> ボードマネージャ

 

「esp32」と入力、「インストール」

完了した

④ M5Stack ライブラリ 追加

スケッチ > ライブラリをインクルード > ライブラリを管理

「m5stack」を検索し、インストール(結構 下の方にあった)

「install all」をクリック

下の方に「no protocol:」と赤字で表示されて不安になったけど完了したぽい

シリアルポートの選択

※ ここは説明書に書いてなかった!!

ツール > シリアルポート

なんか2つ表示されてる

USBケーブルで M5Stackを接続し、
一旦上記メニューの表示を閉じてからもう一度
ツール > シリアルポート 

一つ増えた!これがM5Stackのようだ

Example で HelloWorld

① ボードを選択

ツール > ボード

ESP 32 Arduino

M5Stack-Core-ESP32 を選択

②  Example の選択

ファイル > スケッチ例 

M5Stack(一番下にあった)

Basics > HelloWorld

開いた!

「→」ボタンで書き込む

ちょっと時間がかかる。
ウィンドウの下の方に進捗バーが表示されてる。

完了!!

HelloWorld

できた〜〜!!🙌

文字小さい!

電源を切る

電源を切る時は電源ボタンをダブルクリックでした。

カチカチッて感じで押したら切れた・・

DeepSleepになっているらしいです。

↓引用↓

電源はM5Stackの左側面にある赤いボタン(RST)を二回押すと電源を切ることができます。但し、DeepSleepのため微小電流が流れてしまいいつの間にか電池が無くなってしまいます。

M5Stack(旧Core)で困った時の対処や注意事項

感想

最初、設定の方法をぐぐったら難しすぎて挫けそうになったので、
お父ちゃん召喚

説明書という基本アイテムを見逃していた・・

あと、シリアルポートの選択の方法は書いてなくて、教えて貰って助かった!!!!

これ、自分ひとりだったらここまで1週間コースだったと思う・・・

とりあえずHelloWorldが出来たらあとはもうこっちのもんだぜ〜!!😎

33日後に2足歩行ロボットを完成させたい俺

HomeMadeGarbage Advent Calendar 2021 |24日目

これまで2軸の姿勢制御モジュール SHISEIGYO-2を用いて、特殊球体ホイール バランスロボット一脚 屈伸ロボを製作してまいりました。

 

 

ここではSHISEIGYO-2を用いて2足歩行ロボットの製作に挑戦しましたので報告いたします。

33日以内に製作するという縛りを自分に設けて実施しました。

 

 

サーボで足を構築

まずは1脚屈伸ロボを応用してサーボモータでの足製作を検討しました。

1日目

一脚 屈伸ロボ でも使用したサーボで片足を構築してみました。
滑り防止のため先はTPUフィラメントで出力しました。

2日目

足先がTPUだとフニャフニャ過ぎたのでPLAフィラメントで一体出力することにしました。

サーボはスマホアプリBlynkを用いてBLEで通信して制御しています。

3日目

もう片方の足用のサーボが届きました。

4日目

追加した足の動きもばっちりです。

5日目

両足の動作確認OK。
コントローラにはESP32を使用。

 

リアクションホイールと連結

リアクションホイール部と製作した足を繋げて倒立動作の実現を目指します。

6日目

作製した足をリアクションホイール部と接続しました。

問題なく点倒立が実現できました!

7日目

屈伸運動を確認。
問題ないようです。

8日目

片足立ちもできました。

9日目

足踏み動作を作りこみ。

10日目

リアクションホイール部と接続しての足踏み。
問題なく動作。

 

歩行に挑戦

サーボモータによる足での倒立が確認できましたので歩行に挑戦します。

11日目

前進動作を作りこみ。

12日目

2足歩行による前進が確認できました!

 

コードレス化

歩行動作が確認できましたので、制御線や電源線を内蔵化します。

13日目

これまではリアクションホイール部をM5Stack CORE2で制御し、足はESP32の評価ボードで制御していました。

足の制御をM5Stack ATOM Liteに変更しました。

14日目

M5Stack ATOM Lite とサーボ配線をユニバーサル基板でまとめて、足部をコンパクトにしました。

15日目

リアクションホイール部と結合し動作確認。
問題なし。

16日目

特殊球体ホイール バランスロボットと同様に電源供給をDCDCコンバータとLiPoバッテリで実施します。

17日目

外部からの電源線や制御線無しで独立動作を実現できました。

 

歩行検討

歩行動作の詳細検証を実施します。

18日目

後進も確認できました。

19日目

歩行スピードを可変にして動作確認。

20日目

坂道歩行もできちゃいました!

 

SDGs

マイコンを2個使っていたり、高トルクのサーボの使用などちょっと贅沢なので部品を再検討しました。

21日目

リアクションホイール部と足部でコントローラを分けていたのですが、専用ボードを製作してマイコンを一本化します。

基板は11/30に設計・発注しました。数千円で10日ほどの期間で基板が作れてしまう。
なんてすばらしいことでしょうか。

マイコンとしてESP32の評価ボードを用いてIMUセンサMPU6050とOLEDディスプレイも実装します。

22日目

新コントローラ基板での動作を確認。

23日目

サーボを 25kg・cm のものから 3.5 kg・cmのミニサーボ FT1117M に変更してみました。
問題なく動作いたしました。

高級動作検討

完成に向けて、さらに動作に磨きをかけていきます。

24日目

起き上がり動作も確認できました!

25日目

ホイールにカバーも付けて、歩行のスピードも上げて動作確認。

26日目

サーボ1個が軸がブレて高負荷時に異音がするようになったので追加購入しました。
到着までおあずけ。。

27日目

購入したサーボが届くまで25kg・cmサーボに戻して、動作検証を進めておきます。

左右の旋回が可能になり自由自在に行きたいとこに行けるようになりました。
旋回は片方の足を擦り付けるようにして回っています。

28日目

ホイールカバーと試しにニワトリ頭を付けてみました。

ニワトリは以下のモデルの頭を拝借して油性ペンで色付けしてみましたw
 https://www.thingiverse.com/thing:832722

29日目

購入したサーボが出荷されました。
早く来ーい!

30日目

サーボ到着!

 

仕上げ

部品がそろったので仕上げに入ります。

31日目

ミニサーボ FT1117M での足でも旋回動作を確認しました。
縦横無尽に動けます!

32日目

高速移動も確認!

 

完成

33日目

 

2足歩行ロボットと私

電子工作を趣味でやるようになってから結構経ちますが、
2足歩行ロボットを作るなんて夢のまた夢な状況でございました。

 

2足歩行ロボットに着手しだしたのは約半年前から

 

以下の書籍を参考に自分なりにアレンジして、自身と2足歩行ロボットとの距離を詰めてまいりました。

 

ここでの研究で気づいたのは、2足歩行ロボットは足を大きく重くして重心をそれなりに制御すればそこそこ歩けるということです。

 

実際、書籍の歩行プログラムそのままで上手に歩けています。

 

あとは人間のように自然に歩くにはサーボやセンサを増やして、自由度と感度を増やしていく方向になるかと思います。
2足歩行ロボットの歩行理論なんかも成熟しているかと存じます。

私がそこにお金をかけたところで理論を理解して人間のようなロボットを作れる確証は全くございません
(トラ技あたりが特集組んでくれればワンチャンあるかもしれないけど、今はとにかく専門書を読む気にはなれない)。

そこで、今回のようにリアクションホイールを用いた2足歩行ロボットの製作に至りました。
SHISEIGYO-2によるオートバランスシステムはすでにSHISEIGYO-2 Go屈伸ロボで確証済みでしたので、かなり実現確度が高いと踏んでおりました。

今後は足の高さや自由度の向上と考えております。
33日間でここまでやれました。333日、3333日と積み上げればドンドン進化するはずです。

とにかく継続
エンジニアリングは継続と好奇心であると思っております。

 

所感

#33日2足歩行ロボ をやってみて良かったです。

実際に思い描いた面白いモノができたことも当然良かったのですが、
ツイッターでの反応がとても良かったことも大変驚き 多くの喜びを得ることができました。
説明なく始めて説明なく淡々と動画や画像をあげるだけという実験的な試みであったので、どうなることかと思っていましたが うまくいってとにかく良かったです。

Twitterフォロワーもこの試みによって1300名以上増えました。
ありがたいことです。思いついたら なんでもやってみるものだなと改めて思いました。

あとこのロボットの名前は “SHISEIGYO-2 Walker” と命名いたします。

さて次は33日後に何を完成させようかしら

 

追記

2021/12/10

ねとらぼ様に取り上げていただきました。

姿勢制御モジュール 4重倒立挑戦2 ーリアクションホイールへの道48ー

HomeMadeGarbage Advent Calendar 2021 |15日目

前回 挑戦した姿勢制御モジュールの4段倒立。
このたび再挑戦しましたので報告します。

DCモータで姿勢制御 SHISEIGYO-1 DC 爆誕  ーリアクションホイールへの道43ー

 

 

4逓倍

4段倒立は以下の順番で積み上げます。

SHISEIGYO-1 the END、SHISEIGYO-1、SHISEIGYO-1 Jr.はモータの回転を、使用しているブラシレスモータのエンコーダ出力 1周100パルスをカウントして検出しております。

SHISEIGYO-1 DC の製作でエンコーダ出力を4逓倍する技術を身に着けましたので
上記3機種の回転検出を4逓倍して1周 400カウントで検出できるように改良しました。

 

SHISEIGYO-1 DC は1周 5パルスの磁気エンコーダを4逓倍して1周 20カウントで制御しています。

DCモータで姿勢制御 SHISEIGYO-1 DC 爆誕  ーリアクションホイールへの道43ー

 

4逓倍によって制御のきめが細かくなった気がいたします。

 

4段倒立再挑戦

 

4段倒立 最高記録は31秒でした。

 

テクノロジーと自身との戦い

課題

本挑戦により安定倒立を目指して更なる課題が見つかりました。

 

3段目に載せているSHISEGYO-1 Jr.のホイールのネジを増やしてトルク上げてみたいと思います。
現状で3段倒立までは非常に安定しておりますので、このトルク増加によって4段目のSHISEIGYO-1 DCの積載の影響が減り安定するのではと予想します。

また載せ方の鍛錬も重ねて次回の挑戦に臨みたいと考えております。

一脚 屈伸ロボ 爆誕

HomeMadeGarbage Advent Calendar 2021 |10日目

SHISEIGYO-2 Go 弐を応用して1脚ロボットを製作いたしましたので報告します。

SHISEIGYO-2 Go 爆誕 ーリアクションホイールへの道39ー

サーボテスト

手元にトルクの大きいサーボがありましたのでロボット足に使用できるのではとテスト

 

アルミのアームも付いて力強くていい感じだったのでもう1個買って検証

 

なんだかいい感じ♪
このサーボで足を構築することにいたしました。
 

足構築

3Dプリンタでひざ下部 (素材: PLAフィラメント) を作製し、足先は滑り防止を兼ねてTPUフィラメントで構成しました。

いい感じの屈伸運動です。
 

一脚ロボ 検証

SHISEIGYO-2 のリアクションホイールを合体させました。
ホイールはそれぞれ2枚重ねにしてトルクを増強しています。

屈伸動作検証

リアクションホイールによる姿勢制御のゲイン調整を施して比較的安定した屈伸運動が実現できました。

 

足を延ばしすぎたり、急な高さ変動にはまだ追従できていません。

 

起き上がり機能追加

リアクションホイールの回転制御による自立も実現できました。

 

完成

リアクションホイールと足は別マイコンで検証していましたが、
M5Stack CORE2ひとつでの制御にまとめました。

 

 

構成はSHISEIGYO-2 Go 弐 とほぼ同様で球体駆動用360度連続回転サーボが足用サーボになっただけです。

 

おまけ

開発途中で一脚ロボをAgility Roboticsのロボットと比較してみました 😆 

 

タムラトウサクさん

HomeMadeGarbage Advent Calendar 2021 |9日目

 

 
エンジニアや研究者は使用技術や着想の引用元を明確にするべきである
という教育を受けた

教育はされたが守るとは言っていない

やりたいからやった
むしゃくしゃしてやった

 

 

 

 

 

特殊球体ホイール バランスロボット SHISEIGYO-2 Go 弐

HomeMadeGarbage Advent Calendar 2021 |7日目

以前製作した球体ホイールによるバランスロボットを改良いたしましたので報告いたします。

SHISEIGYO-2 Go 球体ホイールを検討 ーリアクションホイールへの道41ー

 

SHISEIGYO-2 Go 弐

以前作った SHISEIGYO-2 Goをバッテリ駆動にして電源ラインを排除し、より自由に移動できるようにいたしました。

3セルのリポバッテリ(11.1V)を24Vに昇圧してモータに給電します。

 

また球体ホイールの左右間に細いスリットを設けて右折左折がよりスムーズに実行できる工夫も施しました。

 

360度連続回転サーボで半球をそれぞれ独立で制御して移動します。

  • 360度連続回転 Feetech FS90R マイクロサーボ

 

動作

 

バッテリ内蔵によって縦横無尽に移動が可能になりました。
左右への旋回もスムーズです。

 

 

M5Stack Japan Creativity Contest 2021

SHISEIGYO-2 Go 弐を M5Stack Japan Creativity Contest 2021 に応募しましたところ 3位入賞することができました!

 

M5Stack社のジミー・ライ社長が受賞作品を選定しコメントをくれて、しかも参加賞までいただける素晴らしいコンテストなので是非来年も実施してほしいです (ジミー社長 非常にお忙しいでしょうが。。)。

 

 

追記

2022/1/15 3位入賞 賞品が届きました!

特別色でキンピカでラグジュアリーなM5Stack CORE2をいただきました。
キレイ!嬉しい!

SHISEIGYO-1 DC 完成!  ーリアクションホイールへの道47ー

HomeMadeGarbage Advent Calendar 2021 |1日目

手頃に姿勢制御装置を楽しみたいということで入手が容易な部品での製作を目指してミニ四駆モータを用いた SHISEIGYO-1 DC の開発を進めております。

前回はモータドライバの発熱によって長時間動作ができないことを報告いたしました。

SHISEIGYO-1 DC の改善検討  ーリアクションホイールへの道44ー

ここでは発熱の改善を目指して色々検証しましたので報告いたします。
最後にお知らせもございますので何卒宜しくお願い致します。

 

 

モータドライバ変更

これまではモータドライバにDRV8835を使用してきました。
ここではDRV8835より出力トランジスタのオン抵抗の小さい TC78H653 を試してみました。

DRV8835がRon 305mΩに対してTC78H653 は220mΩということで発熱が抑えられるのではないかという算段です。

空中配線などで無理やり基板にTC78H653 を実装いたしました。
DRV8835 -> TC78H653 

 

TC78H653実装完了!

動作

早速動かしてみたのですが。。

回転する瞬間に止まる。。。 スタンバイピンをLowで復帰するので過電流保護が利いてるようです。。

程よいスピードで動かす分には動くのですが。。。

モータ変更や配線のケアで救える可能性なくもないですが、一旦過電流保護が作動するとラッチしてしまい非常に使いにくいのでTC78H653は不採用!!

 

基板修正

当初の基板ではモータドライバを裏面に実装しており、モータドライバが基板とモータの間に配置されます。
放熱性が良くないと思いモータドライバを上面に配置するように基板を修正しました。

 

結果としてはさほど大きな改善はありませんでした。。
ヒートシンクもつけてみましたがこれまためちゃくちゃな改善はありませんでした。

 

モータ変更

モータがグレードアップパーツを使用しているためハイパワーで電流が多いのではと思い、

 

ノーマルダブルシャフトモータを試してみました。

 

なんと電流が半分以下に減って 姿勢制御もゲイン調整で問題なくできてしまいました。

初めからノーマルでやっとけばよかったかな。。 
ミニ四駆のモータってこんなにもモノによって性能違うんですね。勉強になりました。

ノーマルダブルシャフトモータの使用によって発熱問題はあっさり解決いたしました 🙄 。

乾電池駆動

ノーマルダブルシャフトモータによって消費電流も減りミニ四駆のように乾電池駆動も確認できました。

 

レシピ販売

ミニ四駆モータで気軽に楽しめる姿勢制御モジュールが完成しましたので、製作レシピの販売を開始いたしました。
乾電池でも駆動可能ですので非常にフランクに姿勢制御できます。

SHISEIGYO-1 DC の製作レシピ

サンプルコードや筐体3Dモデルは上記リンクより無料でダウンロード可能です。
是非ご確認ください。

 

専用基板も以下で販売中です。

SHISEIGYO-1 DC 専用基板

 

3Dプリント済みの筐体組み立てキットも以下で販売中です。

SHISEIGYO-1 DC 筐体組み立てキット