「Blynk」タグアーカイブ

ロボット犬『Mini Pupperミニぷぱ』逆運動学で足制御

前回は足を自由に動かすための準備として、ラズパイ4のOS吟味等実施しました。

ロボット犬『Mini Pupperミニぷぱ』カスタマイズ下準備

ここではさらにカスタマイズを進めて足を逆運動学で自由自在に制御できるようになりましたので報告いたします。

 

 

PCA9685検証

専用基板にはサーボドライバPCA9685が載っており、ラズパイからI2Cでサーボを制御していることが前回わかりました。

 

そこでラズパイ4に専用基板を載せて、Node-REDからPCA9685を制御してサーボを動かしてみようと考えました。

PCA9685用Node-REDノードは以下を使用
 https://flows.nodered.org/node/node-red-contrib-pca9685

しかし、専用基板からバッテリを接続して起動しましたが、サーボの電源には電圧がフルで共有されず動かすことができませんでした。。。

恐らく、専用基板にロードスイッチかDCDCのイネーブルピンなどの起動制御があるのだと思いますが、
現状 回路図が未公開なのでラズパイによるサーボ制御は一旦保留とします。

 

ESP32とPCA9685

こうなったら一旦ラズパイ4は忘れて、慣れ親しんだESP32でPCA9685を制御しちゃいましょう。

 

ESP32開発ボードと以下のPCA9685モジュールを使用しました。

 

いつもの組み合わせなので簡単にサーボを制御できます。
BlynkをつかってBLEでスマホから制御しています。

 

ミニぷぱの右前足のサーボ3個を繋げてみました。

それぞれのサーボの角度を指定して自由に動かすことができるようになりました。

 

逆運動学で足を制御

右前足を位置座標を指定して動かせるようにします。

座標は腿のつけ根を原点として以下で定義します。

 

腿の長さ$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$と平行になるように$θ_1$とも連動しています。
こういうの平行リンクっていうんでしょうか。
同様に余弦定理を用いて導出します。

${l_d}^2 = {L_1}^2 + {L_2}^2 – 2{L_1}{L_2}\cos\left({\pi-θ_2+θ_1}\right) = {L_1}^2 + {L_2}^2 + 2{L_1}{L_2}\cos\left({θ_2-θ_1}\right) $

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

 

以上で 足のロール角$θ_0$と足の前後(X軸)位置と上下(Z軸)位置の指定で足のサーボを制御できるようになりました。

動作

実際導出した式で足を動かしてみます。

スマホから前後(X軸)位置と上下(Z軸)位置を指定し、サーボ角を導出して制御します。

 

ロール角を動かしても前後(X軸)位置と上下(Z軸)位置は保たれています。

 

おわりに

ラズパイ4と専用基板での制御を一旦諦め、邪道ですがESP32での足制御を検討しました。

逆運動学でやっと自由に動かせるようになったので、コレを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の足を逆運動学での制御を検討しました。

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

歩行検討2 -シリアルサーボと距離を詰めたい俺7-

前回からシリアルサーボ (KRS3301)を用いて製作した足ロボットの歩行の検討を始めました。

シリアルサーボで足踏み -シリアルサーボと距離を詰めたい俺4-

 

引き続き検討を行いましたので報告します。

 

 

歩行検討

重心移動と足の移動の連動を実現し、より人間らしい歩行を目指しました。
前回の検討結果が以下です。

以下のように連動動作させてみたのですが、スケートを滑ってるような不自然な動作になってしまいました。

  1. 重心右移動&左足上前に移動&右足まっすぐ
  2. 重心中央に戻す&右足後ろ
  3. 重心左移動&右足上前に移動&左足まっすぐ
  4. 重心中央に戻す&左足後ろ

動作再検討

先の失敗を踏まえて、足の位置をさらに細かく指定して自然な動作を目指します。
ここで足の座標は以下のように定義しました。

各足の付け根を原点として、直立時の足先の座標は(0, 0, 204mm)となります。

以下のように足を動かしてみました。

重心移動時 (Y軸) に足を上げて (Z軸) さらに足を前に出して他方は後ろに出して (X軸) 前進します。

上のように足上げや前後の座標を2点ではなく中間値を設けて自然な歩行を目指します。
また急な加速度がかからないように正弦波形で位置を各タームごとに制御します。

動作

T = 500msecで動作させてみました。

だいぶ自然な歩行になってきたかなと思います。

 

おわりに

シリアルサーボによる足ロボットで歩行動作を楽しんできました。
かなり理解が深まると同時に2足歩行の難しさも痛感いたしました。

これ以上の動作を目指すにはIMUセンサや足裏センサで外乱や加速度の制御が必要になってくるかと思います。
ここではセンサの追加は実施しない予定でおります。

なぜなら私には そう
姿勢制御モジュール SHISEIGYOがついているのですから。

歩行検討1 -シリアルサーボと距離を詰めたい俺6-

前回は製作した足を逆運動学で制御して各足を任意の座標に動かせるようにしました。

足を逆運動学で制御 -シリアルサーボと距離を詰めたい俺5-

ここからはいよいよ歩行の検討にはいります。

 

 

足踏み運動

歩行の前にまずは以前に順運動学でやった足踏みを逆運動学でやってみます。

シリアルサーボで足踏み -シリアルサーボと距離を詰めたい俺4-

 

重心移動距離と足上げの高さを順次指定しています。

 

より自然な足踏みを実現するべく、重心移動と足上げ下げを同時に実施してみました。

連動動作でかなり自然な動作になりました。
この調子で歩行動作に行きましょう!

 

歩行検討

まずは以下の書籍の歩行サンプルコードを前回導出した逆運動学関数で動かしてみました。

サンプルコード ダウンロード先: https://www.ohmsha.co.jp/book/9784274222115/

 

歩いた!歩いた!

 

サンプルコードでは重心移動と足を前に上げて下げる動作がそれぞれ分離していたので、足踏み同様に連動させてみました。

以下のように連動動作させてみたのですが、なんかスケート滑ってるみたいになっちゃった。。

  1. 重心右移動&左足上前に移動&右足まっすぐ
  2. 重心中央に戻す&右足後ろ
  3. 重心左移動&右足上前に移動&左足まっすぐ
  4. 重心中央に戻す&左足後ろ

前に出した足をそのままの状態で重心を戻し逆足を下げるのが不自然かな??
歩行動作についてはもっと学習が必要のようです。。。

 

おわりに

逆運動学によって足を自由自在に所定の位置に移動できるようになりましたが、
重心をうまいこと移動させつつ人間のように歩行させるのは非常に難しいことが鮮明にわかりました。

普段歩いてるときに足の座標なんか指定してこなかったもんな。。。
日常の歩行の際にも意識をしつつ検討進めていく所存です。

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

足を逆運動学で制御 -シリアルサーボと距離を詰めたい俺5-

前回はシリアルサーボ (KRS3301)を用いて製作した足で足踏み動作を実現しました。。

シリアルサーボで足踏み -シリアルサーボと距離を詰めたい俺4-

ここでは歩行の実現に向けて、足を逆運動学による座標指定制御を目指しましたので報告いたします。

以前、逆運動学でロボットアームを制御した経験が大変役に立ちました。

逆運動学 で制御 ーロボットアーム自作への道2ー

 

 

足の座標

足の座標は以下のように定義しました。
前方をX軸、右足側をY軸、高さ方向をZ軸とします。

 

足の長さは以下の通りです。

 

逆運動学

足先の座標 (x, y, z)から各サーボの角度を導出します。

Y軸方向

Y軸方向へは足の一番上と一番下のサーボを制御して移動させます(重心移動)。
一番上と一番下のサーボの角度$θ_0$を同一にすることで足底は天板と常に平行を保つことができます。

移動量$y$から角度$θ_0$は以下で導出できます。
ここでは膝曲げによる足長の変化は加味していません。
(おそらくここ近似しても今後の歩行には大きく影響しないはず)

$$θ_0 = \sin^{-1} \left(\frac{y}{L1+L2+L3+L1} \right)$$

X-Z方向

足を上げて(Z軸)、前後(X軸)するためのサーボ角度は以下で導出されます。

サーボの角度$θ_1$は余弦定理を用いて導出します。ちなみにL2 = L3。

${L_3}^2 = {L_2}^2 + {l_d}^2 – 2{L_2}{l_d}\cos{θ_1}’  $

${θ_1}’ = \cos^{-1} \left(\frac{l_d}{2{L_2}} \right)$

$$θ_1 = φ + {θ_1}’  = φ +\cos^{-1} \left(\frac{l_d}{2{L_2}} \right) $$

$$      但し、φ = \tan^{-1} \left(\frac{x}{z – L_1 – L_4} \right)$$

$$       l_d = \sqrt{x^2 + \left(z – L_1 – L_4\right)^2}$$

 

膝のサーボの角度$θ_2$も余弦定理を用いて導出します。

${l_d}^2 = {L_2}^2 + {L_3}^2 – 2{L_2}{L_3}\cos{θ_2}’ = {L_2}^2 + {L_3}^2 – 2{L_2}{L_3}\cos\left({\pi-θ_2}\right) = {L_2}^2 + {L_3}^2 – 2{L_2}{L_3}\cos{θ_2}$

$$θ_2 = \cos^{-1} \left(\frac{{l_d}^2-{L_2}^2 – {L_3}^2}{2{L_2}{L_3}} \right)$$

 

足首のサーボの角度$θ_3$は足を平行にするために

$$θ_3 =θ_2-θ_1$$

 

プログラム

逆運動学によるサーボを制御するプログラムは以下の書籍のサンプルコードを参考にしました。

サンプルコード ダウンロード先: https://www.ohmsha.co.jp/book/9784274222115/

 
サンプルコードを製作した足用に調整して使用しました。
逆運動学の関数ik()は以下のようにしました。

 

動作

逆運動学で各種動作を確認しました。

制御マイコンESP32にスマホアプリBlynkを用いてBLE通信で座標を指定します。

重心移動

Y軸の移動距離を指定 (y: ±50mm)

屈伸

Z軸の移動距離を指定 (z: 0~30mm)

足移動

X軸とZ軸の座標を指定 (x: ±35mm, z: 0~30mm)

 

おわりに

ここでは製作した足を逆運動学で制御してみました。

各足を任意の座標にほぼ動かせるようになったので、次回はいよいよ歩行に挑戦です。

頑張ります!

タムラトウサクさん

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-3 Unplugged  ーリアクションホイールへの道42ー

以前から実現したいと思っていた3軸姿勢制御モジュール SHISEIGYO-3のバッテリ内蔵化を実施しましたので報告いたします。

 

 

昇圧 DCDCコンバータ検討

3軸姿勢制御モジュール SHISEIGYO-3 は 24V入力のブラシレスモータを3つ使用しています。
これまでは24V ACアダプタで電源供給をしておりました。

24Vのバッテリを搭載するのは難しいと考え、DCDCで24Vに昇圧しようと考えました。

以下のDCDCコンバータの使用を検討します。安かったので購入。

 

電子負荷で電流を引っ張って負荷特性を観てみました。
DCDCのポテンショメータを調整して出力電圧を24Vに設定しました。
入力電圧は3セルのLiPoバッテリの使用を想定して11Vとしました。

1次側の電源の電流能力の限界で1.1A以上引けませんでしたが、
1A以上の負荷でも24V出力できておりました。

波形を見てないため正確な安定度は分かりませんが電圧値をみている感じでは特に問題なく使えそうな印象を受けました。

 
電子負荷は以下を使用

 

バッテリ内蔵化

以前製作した3軸姿勢制御モジュール SHISEIGYO-3 eternal をバッテリ内蔵にしてみました。

SHISEIGYO-3-eternal 爆誕 ーリアクションホイールへの道35ー

 

ブラシレスモータ1つにつきDCDC1つで24V電源供給します。

 

バッテリには以下の3セルのLiPoバッテリを使用しました。

 

システム概要図

 

SHISEIGYO-3 Unplugged

動作もバッチリで SHISEIGYO-3 Unplugged の爆誕となりました。

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

前回は山形大学の開発した球状歯車を参考に2軸 姿勢制御モジュール SHISEIGYO-2 のホイールへの応用を試しました。

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

 

 

球体ホイールの検討

ホイールを球状にすることによって、移動が非常に安定することが前回わかりました。

しかし、球状歯車を自由自在に動かして様々な方向に移動させるには
機構が複雑になりそうで技術的にも難しいです。

どうしてもSHISEIGYO-2 Go を自由自在に動かしたいのでホイールを再検討いたしました。

 

ORENICS

半球にそれぞれ歯車の溝をつくり、独立して動く機構を考案いたしました。

 

2つの360°回転サーボでそれぞれ回します。

 

 

動作

 

まだまだ自由自在というわけにはいきませんが、方向転換とカーブ走行が実現できました。

 

おわりに

ここでは球体ホイールを検討、製作し動作確認を実施いたしました。

球体を構成するそれぞれの半球の接地精度や制御方法を精査して、縦横無尽に走り回るSHISEIGYO-2 Go を目指したい思います。

それでは次の道でお会いしましょう!

追記

調整 (2021/6/26)

走行調整中

なかなかいい感じになってきました。

SHISEIGYO-2 Go ホイール検討 球状歯車を味見 ーリアクションホイールへの道40ー

前回 2軸 姿勢制御モジュール SHISEIGYO-2にギアのホイールを追加して移動できるようにしました。

SHISEIGYO-2 Go の爆誕でした。

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

今回はホイールの検討を進めましたので報告させていただきます。

 

 

ABENICS

先日 Twitterでとんでもない動画を観ました。

 
めっちゃヤバない?動画もカッコいいし

模倣

気づいたらFusion360を開いて球状歯車を作っていました。

動画を参考にギアを360°回して球体を作り、直交するものとANDをとれば完成です。

 

 

いじくってみると更に面白さと凄さを感じることができました。
体験って重要ですね。

 

SHISEIGYO-2 Goへの応用

早速、こしらえた球状歯車をSHISEIGYO-2 Goで試してみました。

 

以下のように360°回転サーボに普通のギアを付けて球状歯車を回している(左のサーボは重量バランスのためのダミー)のですが、たまにギアがロックしてしまい振動が大きくあまりスムーズに動けませんでした。

 

球状歯車をL字の固定具で四方から挟むように固定していたのですが
安定性向上のためにTPUフィラメントでホルダーをこしらえました。

 

しかし、大きな改善はありませんでした。。。
やはり回す方のギアも専用の複雑な形状に加工が必要そうです。

 

SHISEIGYO-2 Go 爆走

専用の回しギアのモデリングはあまりにも難しそうなので断念し、
ギア1個を回転させた以下の写真右の球状歯車を試してみました。

 

したら、いい感じにホールドもできてロックせずにスムーズにまわり
SHISEIGYO-2 Go 爆走したよね。

 

このスピードで動けたら申し分なくSHISEIGYO-2 Go ですね!!

 

おわりに

球状歯車をためして思いがけない進展を得ることができました。

しかし、せっかく球状のホイールを採用するのであれば前後移動だけでは寂しいですね。

もっと縦横無尽に動かしたいです。
別に歯車状である必要もない気がしてきているので検討進めたいと思います。

それでは次の道でお会いしましょう!

各種モーションを堪能 ー二足歩行ロボットへの道2ー

前回は書籍を参考に二足歩行ロボットを製作いたしました。

ここでは各種モーションを試しましたので報告させていただきます。

 

 

歩行

書籍の歩行モーション(mr5-7)を試しました。

非常にスムーズに歩くので驚きました!

ロボットのボディはPCB基板で制作されることが想定され厚さ1.6mmとなっているのですが、
3Dプリントで厚さ1.6mmですと、横すねパーツが強度弱いので3mm厚さに修正しました。

 

いい感じ♪

 

BLE遠隔操作

スマホアプリBlynk を用いてBLEで操作を操作できるようにしました。
制御にM5StickC Plusを用いておりますので無線通信は容易に可能です。

動作は書籍で紹介されている前進、後退、左右旋回、左右横歩きを追加しました。

各種モーション(特に旋回)は調整が必要そうですが、遠隔での操作が可能となしました。

 

Blynk接続で開眼するようにしました。実に可愛いですね。

 

起き上がり

書籍の著者様のサイトに起き上がり用のコードが載っていましたので試してみました。

サイトの指示に従い以下修正加えました。

  • 左右のHip (ロール) サーボホーンを前側にひと歯ずらし、
    オフセットで直立するように調整
     
  • 手先を延長

     

 

頭が重くうまく立てません。。。
コチラも調整が必要のようです。

 

おわりに

ここでは書籍で詳細されている各種動作を試しました。

実機に合わせて調整が必要のようなので次の道では、より二足歩行ロボットの理解を深め
モーション調整に加えて、更にはオリジナルの動作を製作できるよう学習進めます。

それでは次の道でお会いしましょう!

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

私が姿勢制御モジュールの研究を開始して、もうすぐ1年が経とうとしています。
多くの学びと成果を得たのですが、このたびもう一歩前進することができました。

姿勢制御モジュールはあくまで”モジュール”
何かの構成要素の一つとして活用してこそであると常々考えておりました。

今回、1例となる活用実験が成功しましたので報告させていただきます。

 

 

SHISEIGYO-2 Go 爆誕

以前製作し、レシピ販売も実施している2軸 姿勢制御モジュール SHISEIGYO-2 の支点をタイヤにして倒立を保ったまま前後移動できないかと考えました。

 

早速、結果をご覧ください。

見事に1つのタイヤを支点に倒立前後移動が実現できました。

 

タイヤ

タイヤは360°回転サーボと3Dプリンタで出力したギアで構成しました。

 

 

ギアを連動させての機構は初めてやりましたが、なかなかうまくいきました。
もう3Dプリンタで何でもできちゃいますね。

ギア機構もっと勉強しよっと 🙄 

参考

 

SHISEIGYO-2 Go 動作

SHISEIGYO-2 Go は起き上がり動作も可能です。

 

坂道だってなんのその

 

おわりに

SHISEIGYO-2 をモジュールとして活用することによって、比較的簡単に1輪走行ロボットを実現することができました。

引き続き自作の姿勢制御モジュールの活用実験に励みたいと考えております。

SHISEIGYO-3 eternal 改良 ーリアクションホイールへの道38ー

以前、電源を入れると点倒立するまで自律的に パラメータ調整しつつ動き続けるシステム”SHISEIGYO-3 eternal”を構築しました。

SHISEIGYO-3-eternal 爆誕 ーリアクションホイールへの道35ー

ここではSHISEIGYO-3 eternalに改良を施しましたので報告させていただきます。

 

 

筐体調整

モータの負担をさらに低減するために、角のRを大きくしました。

 

倒立調整

新筐体で倒立の調整を行いました。

角を丸めた効果でモータの負担が減り、点倒立成功確度も非常に高くなりました。

また、この動作をTweetしたところ
“マツモト”、”マツモトだ”と少し騒がれましたww

なんのことだろうと思ったのですが、アニメのキューブロボットのことだったようで思いっきり のっかってみました。
似ていますでしょうか? 😀 

 

eternal動作

前回同様に電源起動で自律的にモータ回転速度などを調整しながら点倒立動作し続けるようにしました。

 

おわりに

だいぶ点倒立の確度も向上しましたので現状でも見れいられるシステムになったかと思います。

電源線の巻き込みなどケア考えたいです。

どっかで展示してみたいなぁ 🙄 

SHISEIGYO-1 を改良 APモードでパラメータ調整 ーリアクションホイールへの道37ー

以下で1軸 姿勢制御モジュール SHISEIGYO-1の製作例をまとめたレシピを販売しております。

SHISEIGYO-1 の制作レシピ

上記レシピのサンプルコードでは各種パラメータをコードに書き込んでいるため、調整が容易ではありませんでした。

 

2軸 姿勢制御モジュール SHISEIGYO-2ではコントローラにM5Stack CORE2を用いているためタッチパネルでパラメータ調整できるように改良を施しました。

SHISEIGYO-2 を改良しました ーリアクションホイールへの道36ー

 

SHISEIGYO-1はM5 ATOM Matrixを用いていますので、ここではAPモードでM5 ATOMに接続してブラウザでパラメータを調整できるようにしました。

 

 

APモード

M5 ATOM Matrix (ESP32-PICO) をアクセスポイントにして、スマホやPCをWiFi接続してブラウザでパラメータ調整できるようにしました。

 

ブラウザには起き上がりボタンと各種パラメータ調整が表示されます。

参考

 

サンプルコード

サンプルコードは以下でダウンロードできます。
zipファイルでダウンロードされますので解凍してご使用ください。

https://welno.homemadegarbage.com/products/make/shiseigyo-1-AP/SHISEIGYO-1_Ap.zip

動作

 

 

使用方法

  • 改良版サンプルコードを書き込んだSHISEIGYO-1を起動
     
  • スマホもしくはPCのWiFi接続設定でM5 ATOMに接続
    サンプルコードではSSID:SHISEIGYO-1、パスワード:passwordとしています。
     
  • ブラウザページにアクセス
    サンプルコードではIP:192.168.22.1
     
  • GetUpボタンで起き上がり動作、各種パラメータ調整は-/+クリックで実施
    パラメータは電源OFF後も保持されます。

起き上がり動作

今回の改良で左右の起き上がり時の起き上がり直前の最大回転速度を左右それぞれ独立で指定できるようにしました (rotMaxL, rotMaxR)。

回転速度は0~1023で指定でき、0に近づくほど高速になります。

IDRS (倒立角動的再調整システム)

倒立後のモータ回転速度をフィードバックして、逐一 倒立ターゲット角度を調整する手法 IDRS を導入しました。

 

IDRSを使用しない場合はコードの変数IDRSを0にしてください(デフォルトは3.0)。

 

おわりに

今回の改良でSHISEIGYO-1のパラメータ調整が容易になりました。

WiFI設定やパラメータの追加などいろいろアレンジしてご使用ください。

SHISEIGYO-2 を改良しました ーリアクションホイールへの道36ー

2軸の姿勢制御モジュール SHISEIGYO-2のM5Stack CORE2用アプリを改良いたしました。

 

上の動画のように各制御パラメータをタッチパネルで変更できるようにしました。
調整した変数はメモリに保存され電源OFF後も保持されます。

コード書き込みや外部からの通信も必要なく変数が調整できますので非常に使いやすくなりました。

動作時の演出もささやかですが追加させていただきました。
 

変数保持

タッチパネルで変更した変数は NVS(Non-volatile storage不揮発性のメモリ)に保持されます。

Preferencesライブラリを使用いたしました。
ライブラリ使用方法については以下を参考にいたしました。


 

Arduinoコード

コードは以下にアップしておりますのでご参照ください。

https://gist.github.com/homemadegarbage/aa009fec3e0b91eb4d2233683147852f

 

SHOPのご案内

SHISEIGYO-2の製作レシピを以下で販売しております。
筐体3Dモデルも以下で無料ダウンロード可能です。

SHISEIGYO-2 の製作レシピ

 

また部品搭載済みのM5Stack CORE2用SHISEIGYO-2 駆動モジュールも販売しておりますので、是非ご検討ください。

SHISEIGYO-2 駆動モジュール

SHISEIGYO-3-eternal 爆誕 ーリアクションホイールへの道35ー

電源を入れると点倒立するまで自律的に パラメータ調整しつつ動き続けるシステムを確立いたしました。

名付けて
“SHISEIGYO-3-eternal “
です。

動作は見ていただいた通りなのですが、ここでは開発の流れを紹介させていただきます。

 

 

筐体検討

SHISEIGYO-3は上部が解放された筐体となっていますが、SHISEIGYO-3-eternalは立方体の筐体を採用することにしました。

自律動作を実現するにあたり、モジュールはかなりの回数転倒する可能性があり筐体に強度が必要であろうと考えたためです。

とりあえずSHISEIGYO-3の外部筐体を立方体にしてみました。

点倒立は安定して実施できますが、筐体の重量が増したため起き上がり動作は出来なくなりました。

筐体軽量化

モジュールが極力軽くなるように、強度が落ちない程度に軽量化を目指しました。

 

ブレーキ改良

SHISEIGYO-3は以下のように3軸すべて一方方向への起き上がり動作しかできませんでした。

 

自律的点倒立実現のためには3軸すべてで左右どちらにも起き上がれることが望ましいです。
そこでバンドブレーキを改良し両方向への起き上がり機構を実現しました。

フライホイール検討

筐体の軽量化とブレーキの改良を実施しましたが、まだまだモジュールを自由自在に起き上がらせて動かすことはできませんでした。

慣性モーメント向上

そこでフライホイールの慣性モーメントを向上させて、起き上がり動作を実現させることにしました。

3Dプリンタでフライホイールにナットを追加できる治具を製作して慣性モーメントを増加させました。

 

これにより左右の起き上がり動作を実現することができました。

3Dプリント

フライホイールの慣性モーメント向上で左右の起き上がり動作が実現できそうでしたので3軸すべてに展開します。

しかし現状の直径120mmのホイールにバンドブレーキを実装すると、隣り合う面で干渉してしまい3軸に展開ができませんでした。

 

そこでホイールの直径を小さくすることにし、フライホイールを3Dプリンタで出力することにしました。
モータシャフト固定部のみ市販品を流用しました。

分子間力

フライホイールを3Dプリントすることでサイズやナットによる慣性モーメント調整は容易になったのですが、ここで大きな問題にぶち当たります。

3DプリントしたPLAフィラメント製のホイールがブレーキ時にバンドブレーキの革とくっつく現象が起きたのです。

 

この現象をtwitter上で問うたところ、分子間力でくっついているのではという助言をいただきました。
確かに以下の動画のように
 ・革ーPLA
 ・革ー紙(マスキングテープ)
 ・革ービニルテープ
と高分子っぽいものがくっつき、
 ・革ーAl
 ・革ーCu
はくっつかなかったのです。

そこでPLAフィラメントで出力したフライホイールはサイドに銅箔を張り付けて、この吸着を避けることにしました。

まさかこんなところで分子間力を目の当たりにすることになるとは。。。驚きました 🙄 。

 

筐体再検討

フライホイールを3Dプリントし直径を小さくして3軸すべてに改良ブレーキを搭載することができました。

 

しかし、フライホイールの重量が増したこともあり依然として縦横無尽にモジュールを動かすことはできません。。。。

いよいよ詰んだかとあきらめかけたとき以前製作したSHISEIGYO-1Rを思い出しました。

丸くすればさほどトルクなくても所望の角度に移動できたなと。。。

筐体の角丸めればいいじゃん!

筐体の角をできるだけ丸めて起き上がり時に必要なトルクの低減を行い、
無事に3軸の左右起き上がりを実現できました。

見た目も可愛いです 😛 

起き上がり辺倒立と点倒立も実現できました。

 

 

おわりに

ざっと以上のような流れでSHISEIGYO-3-eternalを実現することができました。

自律動作の精度や電源線の巻き込み防止などまだまだ課題はございますので
引き続き研究を続けていきたいと思います!

どっかで展示できればいいなぁ。

3軸 姿勢制御モジュール SHISEIGYO-3 基板製作 ーリアクションホイールへの道34ー

前回は3軸 姿勢制御モジュール SHISEIGYO-3に起き上がりボタンの追加などの改良を加えました。

1軸 姿勢制御モジュール 物理ブレーキの検証 ーリアクションホイールへの道12ー

今回はSHISEIGYO-3の制御基板を製作したので報告させていただきます。

 

 

基板設計

これまでSHISEIGYO-3はユニバーサル基板に手配線で構築しておりました。

配線がかなり大変なので基板を製作しようと思い立ちました。
これが私自身生まれて初めての自費製作基板となります (業務での基板製造経験はございます)。

EAGLE

PCB設計ツールにはFusion360でもお世話になっているAUTODESKのEAGLEを採用しました。

 

ESP32やIMUセンサMPU6050、ディスプレイモジュールを接続するだけの基板なので比較的簡単にできました。
モータが電流流れるのでモータ電源ラインだけ引き回しに注意しました。

EAGLEの使用方法は以下のサイトが非常に参考になりました。

https://tool-lab.com/mac-eagle-101-1/

 

基板製造

PCB製造はseeed社を使用しました。

2021年1月31に基板設計データをアップ・発注して2021年2月12に基板が到着しました。
工程も早くサイトでリアルタイムに確認できました。春節前に上がってよかったです。

費用は60×82mm 基板10枚で製造費$4.90、送料$19.33と非常に安くできました。

 

参考

 

基板実装

基板に部品を実装していきます。

 

基板によって非常にすっきりカッコよく仕上がりました。

 

動作

無事に動作も確認できました!

 

おわりに

ついに基板もできましたので、プログラムをブラッシュアップしてSHISEIGYO-3の製作レシピの執筆にとりかかりたいと思います。

それでは次の道でお会いしましょう!

姿勢制御検討2 ードローンへの道3ー

前回から随分時間がかかってしまいましたが、これまでの進捗報告をさせていただきます。

ドローンへの道 爆誕 ードローンへの道1ー

 

 

姿勢制御検討

前回に引き続きホバリングの実現を目指して、姿勢制御の検討を実施していました。

基本的には前回と同じコードで簡単なPID制御でパラメータ調整します。
前回はすべての軸を同じパラメータにしていましたが、
ここではx, y軸とz軸 (Yaw角) のパラメータをわけて違う値を指定するようにしました。

ガイドを設けて外部から電源供給して実験していたところ
飛行には非常に多くの電流消費があることを知りました。

 

LiPoバッテリ

飛行には電流能力の大きいバッテリが必要であることが判明しましたので、以下の元気なバッテリを購入しました。

容量650mA、電流能力 39A (60C)で瞬間放電能力は78A (120C)とかなり強力です。
出力電圧も通常のLiPoバッテリより高い4.35Vなので、電圧降下でのマイコンリセットの心配も低減されます。

早速バッテリを積んでひもに吊るして実験しましたところ、バランスを崩してモータがひもを巻き込んでしまい過電流が流れてモータと駆動FETを1対 壊してしまいました。。。。

 

部品交換

交換用のFETとモータを購入しました。

 

FETは1月12日に注文して2月2日に着とかなり時間がかかってしまいました。
(しかしこの間にSHISEIGYO-2を完成させたり、SHISEIGYO-3を改良したりできたので非常に良い時間だったと思います。
私は色々なテーマで自身の好奇心をくすぐる生活を送っていますので、こういった部品待ちの時間は想像を深めたり俯瞰で振り返ったり寄り道したりできる貴重な時間となります。
北海道住みですのでどうしても部品の入手には時間がかかってしまいます。
私はそれをディスアドバンテージとは思っておりません。
私の好奇心とアイディアが途絶えることなくあふれ出るのは むしろコノ部品待ちの時間のおかげだと思っております。)

 

破損したFETを実装し直して、モータを交換しました。

 

 

姿勢制御検討再開

再度 姿勢制御パラメータの再開です。

 

Yaw角の調整。前回コレでモータ壊したのでひもを巻き込まないように治具に工夫を凝らしました。

 

機体調整

プロペラが怖いのでプロペラガードを3Dプリンタで制作して装着しました。
プロペラガード分重量が増しましたので、プロペラを若干大きいものに変更しました。

飛行実験

浮遊直前で機体が回ってしまい安定ホバリングには至っていません。

 

おわりに

現状はまだホバリングが実現できておりません。以下今後の予定です。

  • ガードがフニャフニャで大きいプロペラだと接触することがあるので、プロペラガード再設計
  • 姿勢制御パラメータ再調整
  • 再調整でもホバリングできない場合はPID制御の見直し

単純なPID制御ではダメな可能性がありますので、Interface 2020年 03 月号に記載のあった2重ル―プによる制御も視野に入れないといけないかもしれません。

なかなか険しい道ですね。

それでは次の道でお会いしましょう!