A.T.A.

ACwiki技術部見習い活動(仮)

「アリシアたんを自律制御させてみたい」

第4話 〜はじめてのジャンプ〜



pastupfuture

■ 0.序論

自律、単独、脚で移動するロボットで
「地面と接していない瞬間を作る」ことは大変です。
ロボットコンテスト等でもジャンプ動作が必要になった場合、
わざわざ脚部で移動とジャンプを兼用する人たちは殆ど居ません。
必要となる膨大なエネルギを工面するのが一苦労だからです。

そう思っていた時代が私にもありました。。。



■ 1.テーマ選定

活動の根幹である「ジャンプ」について、
その現象と物理の把握を行いたいと思います。

このため今回は、引き続き純正フレームを利用して、
・純正フレームでのジャンプ動作の可否
・可能な場合の跳躍高さ
・さらに跳躍高さを高める方法
などについて考察、検証していきます。



■ 2.現状把握と目標設定

まず、初めて作製したこのモーションについて。(音あり)


この動作では、ジャンプに必要であろう「あること」を
故意に行っていません。

このとき飛べなかったのは、
ジャンプに必要なエネルギが
しかるべき状態でしかるべき量ほど足りていないからでしょう。

その状態とは?その量とは?
これらについてお話していきます。

目標は、話の流れ上「純正フレームでジャンプができること」
とおきます。



■ 3.活動計画

・純正フレームでのエネルギ量検証
・ジャンプに必要な理論式の設定
・現状に合わせたジャンプモーション作製
・純正フレームでのジャンプ評価
・さらにジャンプ高さを稼ぐ方法の考察
という感じです。



■ 4.要因解析

まず、初めて作製したこの動作を簡単化するため、モーションから
・腕(上半身)の動作
・足首ロール軸の動作
をオミットし、完全に足首−(膝)−太腿のピッチ軸、
2軸だけを動作させます。
この軸は鉛直方向の移動量が大きく、
ジャンプに最も重要な関節ですので、
簡単化して評価します。

ジャンプの位置エネルギは
機体の運動エネルギから供給します。
その運動エネルギ、つまり


E:エネルギ
m:質量
v:速度

のうち、質量mは不変ですので鉛直方向速度vを測定しましょう。

測定方法は適当に・・・
15FPSで動画を撮影、
頭の位置≒重心位置として単位フレームあたりの
移動量を測定し、そこから速度を算出します。
それに公称質量575gを用いて運動エネルギとします。

実際の動作がこちら。(音なし)


具体的にはこうです。


この間1フレーム/15Hzですので、約66msecあることになります。
頭のてっぺんの移動量はだいたい221mm - 204mm = 17mmですので、
この間の平均速度は255mm/sec、
質量を公称575gとすれば、運動エネルギはE=113mJとなります。
測定結果をt-x、vグラフとして表したのがこちらです。


本来なら上昇速度は高さのプロットの間の平均値なのですが、
面倒なので適当です(笑)。

次に、ジャンプ後として必要な位置エネルギを考えます。
例えば、目標として1cm飛びたい!とします。
現在の重心位置から1cmほど高い位置エネルギが
供給目標の位置エネルギとすれば、位置エネルギは


E:エネルギ
m:質量
g:重力加速度
h:高さ

で表されますので、mには公称値575gを、
gにはたぶん地球上9.81m/sec^2を代入し、
高さを10mmで計算すれば、
供給目標位置エネルギは各瞬間それぞれで
E=56.4[mJ]で一定になります。

これらをt-Eグラフ上で表したものがこちらです。


おや?どうやら目標の位置エネルギを
運動エネルギが上回っている瞬間がありますね。
(上昇時質量が上半身のみの計算だとしても)
運動エネルギが最大となる点は、
計算上60Hz遅れますのでだいたい上下ストロークの中央、
ピッチ軸の関節が鉛直から45°付近のときのようです。

で、なぜ運動エネルギがあるのに飛べないのか?

これは目標となる位置エネルギが
「その瞬間+1cm」であるのに対し、
実際にはまだ脚を伸ばす速度があるため
次の瞬間にはその1cmをちゃんと超えています。
脚が伸びきる時には、関節の特異点に近づくため、
ゆっくりと減速され、ジャンプに必要なエネルギが
なくなってしまうわけです。


では、次にジャンプするための理論式を立てましょう。
ここでジャンプモーションに必要な「あること」を数値化します。

第1話ではジャンプ能力の評価を
「地面から最も近い部位の距離が遠いこと」
と設定しました。
これの理論値を求めるのはエネルギの観点からでは
ちょっと煩雑且つ不確定になりそうなので、
運動の現象のみで考察していきます。

面倒が嫌いなんだなので、
もう答えから逆順で求めていきましょう。

ジャンプできない原因は「脚を伸ばす速度があるため」
と記述しました。
これを、運動エネルギが目標の位置エネルギを上回っている瞬間に
ゼロ、あるいはマイナスにしてしまえばよいのです。

もちろん、質量や回転慣性がありますから、
すぐに脚を停止あるいは畳むことはできません。
このことから、時間に対する鉛直軸方向の次元で考えてみます。

まず、求めるべきジャンプ高さは以下の式で表します。

xh:ジャンプ高さ(地面から脚部先端までの距離)
xm:地面から重心までの高さ
xl:重心から脚部先端までの鉛直方向距離
m:機体総質量
ml:脚部等価質量
xlの係数は、脚を畳んだ時に反動で上半身が動く分の考慮です。


これらはそれぞれ、脚部を畳み始める瞬間からの
変化量として表現します。

xmに関しては、簡単な2階積分で求められます。
簡単なのでズルせず求めましょう。

重力加速度gの定義は変位軸xを時間tで2階微分したものですから、

両辺を時間で積分すれば、

t=0のとき、dx/dtを初速v0とすれば、c1=v0ですから

さらに両辺を時間で積分し、

xmに適用したとき、t=0のとき、x=0とすれば、c2=0ですから

その他の要因は排除して考えます。
高校物理で習う簡単なやつですね。
私は高校へ行ったことがないので分かりませんが・・・。

次にxlについてです。
脚部は足首ピッチ軸と大腿ピッチ軸が直列で動いていますので、
サーボ1つ分のトルクでアーム2つ分先に、
等価として脚部重量があると簡単化して考え、
その引き寄せについて立式します。

xlは、次の2パターンで考えます。
@モータトルクと慣性によってxlが変化する場合
A脚部が縮み側でフルストロークしxlが一定となる場合
ちなみにもう1つ、
B脚部が伸び側でフルストロークしxlが一定となる場合
もありますが、これは脚を伸びきっても
重心位置が上昇を続けられる状態、
つまり位置エネルギが直立状態より高くなる場合にのみ
存在するため、今回は考えません。

@について。
引き寄せ力Flは、モータトルクTとアーム長さLを用いて、

この力Flによって、脚部質量mlが引き寄せられる加速度αlは、

あとはxmの式と同様にして、
gをαlに置き換え、脚部の「ガタ」をCgとして足し、

このとき、v0はベクトルが逆ですが、
ジャンプ前までは重心速度≒脚部速度として考えます。

・・・なんてことをやってると怒られます。

Tはモータ角速度ωに対して変化しますので、
もちろん時間と共に変化します。
これを関数として表すのは面倒ですので、
(θの関数で記述し、2変数関数積分とかになりそう)
もっと簡略化してみましょう。
運動量変化が力積に等しいことから、
脚部周速度をvlとおいて

この式よりvlを算出し、xlの変化量を適当に計算しましょう。

として循環参照を避けつつ(笑)。ほんとに適当ですが・・・。
なお、xlは初期値にCgを設定します。
vlの初期値は初速-v0/sinφとします。
こんな計算なので1式でxhを表現できません。とほほ・・・。


Tはωの関数ですから、これを定義します。
モータのトルク及び速度特性は調べても出てこないので、
以下のように近似して設定します。


制御象限が第2、第4のとき、
すなわち回転方向とトルク方向が
逆転している場合は最大トルクで一定、
制御象限が第1と第3のときは直線近似です。
これを数式化した場合、モータ軸角速度ωを用いて、
ゆえに

このωを変数として、ω<0のとき

0<ω<ωmaxのとき

です。

θについては、初期値をφとして、
ゆえに

から求めます。

Aについては、xlは定数xl2で一定とします。この条件は、

tについて解くのは面倒なので数式で判定します。

ちなみにTを一定にしたときの間違えた式、
xl1からxhを計算すると、

初速v0の影響がかなり小さくなります。
(v0にm-ml/mしか影響せず、上半身が動かないとすればその値が0)

つまり、パターンBが存在しない程度のジャンプでは、
脚を畳む加速度がとても重要なのです。
これはBやAが存在しても少量な場合、
つまりBMXやボードで飛ぶ場合も同じ事で、
「飛び越える」ときや「飛び乗る」ときには、
飛び上がる速度以上に空中での姿勢が大切なのです。

もちろん初速は高ければ高いほど良いです。
初速が高くなれば滞空時間が長くなることで、
脚をたたむ時間と距離も稼げるわけです。

さてまた脱線しましたが、
この式に測定値及び公称値を入力してみましょう。
とりあえずジャンプ距離が高くなると思われるのは、
上昇速度が最も高くなる姿勢、θでいうと約45°のときに
脚部を縮ませる動作に移る場合です。

あとはだいたいでそれぞれの値を入力していきます。
m=575[g]
ml=100[g]
g=9.81[m/s^2]
vo=0.28[m/s]
L=68[mm]
Cg=2[mm]
xl2=-35[mm]
Tmax=2.2[kgf・cm]
ωmax=0.11[sec/60deg]
φ=45[deg]
です。
EXCELを用いて計算した結果を次に示します。


どうやら最大初速の時から足をたためば7mm近くジャンプできるようです。
着地(xh=0)とほぼ同時に足の縮み側フルストロークとなります。

というわけで前フリが長かったですがジャンプさせてみます。
えてして実験とはそういうものですよね。


ちょっとバランス悪いですが(笑)、
だいたい理論値近く飛べていることが確認できました。



■ 5.対策検討と実施

さらにジャンプ高さを稼ぐためにどうしたら良いでしょうか?
せっかく理論式を立てているのですから、
これを利用して各パラメータを弄りましょう。
脚を畳む能力と脚を伸ばす(初速)の能力はトレードオフなので、
パラメータを弄った場合の初速v0もxlと同様な手法で、
脚部の角度がψからφまで変化するとして求めます。
上述した初期値に、
ψ=80[deg]
を用いて計算してみましょう。

理論値そのままだと初速が高くなりますが、
現実ではサーボへの電流が不足するためか
必要トルクが得られてないようです。
測定値に近づけたグラフがこちら


おおよそ測定値に近しい曲線です。
このとき、Tmaxは1.2[kgf・cm]で計算しています。
脚は2本ありますから、最大トルクだけで見ると
値は約1/4になってしまっています。
これを解決できれば、もっと初速は伸びるはずでしょう。
ちなみに理論値Tmax=4.4[kgf・cm]では初速は1.4倍近くになります。
とりあえずは初速を得るためのトルクは1.2[kgf・cm]で計算します。

んでいろいろ弄ってみた方向性について。

m : 大きいと初速が小さくなりますが、
   相対的に脚がよく動くため、その影響は小さいです。
ml : 軽い方が良いです。影響大。
g : 火星だと・・・!?
L : 小さいほうが足をたたむ速度が大きいです。
   ただし、長くすればジャンプ時間が長くなります。
Cg : 小さいほうが良いです。
xl2 : φによって決定されますが、着地とどちらが早いかというところです。
Tmax : 高い方が良いです。影響大。
ωmax : 速い方が良いです。影響大。
φ : 大きいほうが足をたたむ力が出ます。
   ただしあまり大きいと初速が出ず、xl2が小さくなってしまいます。
ψ : 大きいほうが初速が出ます。


次に、理論式以外の要素について検討します。

1つ目は形態模写から考察します。
私は運動が苦手な方ですが、
垂直飛びや立ち幅跳びならそれなりに飛びますので・・・。

で、自分がジャンプする時を想像してみてください。
ジャンプするのに動かすのは足だけではないはずです。
そう、上半身、特に腕を大きく動かすでしょう。

これは、ジャンプ直前には腕の上方速度を出して
ジャンプのための運動エネルギを稼ぎ、
ジャンプ後には腕を振り下ろし、腕の重心高さを低くすることで
相対的に胴体の重心高さを高くする、
こういった意味があります。
跳躍能力に長けた人を観察すると、
結構腕の筋肉が発達し、それを使えていることが分かります。
このあたりが、「ジャンプは上半身の動きが重要」と言われる所以です。

このことから、ジャンプ前は腕を上げ、ジャンプ中は腕を下ろすことにします。
脚部への電流量が少なくなることが懸念ではありますが・・・。
あと、腕の前後方向の動きについては、
今回は垂直とびですので割愛します。

2つ目はエネルギに話を戻して考察します。
第1話でも少しジャンプのエネルギに関する記述をしましたが、
現状ではサーボモータからのみ運動エネルギを供給しています。
エネルギの変換順序と代表素子例を再び見てみましょう。


サーボモータ以外からエネルギを供給する場合の条件は、

・連続ジャンプを可能にするため、単独起動状態でエネルギの授受が行えること

これに尽きます。そのため、上記の素子例から言えば
ジェットやロケットは除外されるでしょう。
さらにジャンプに用いることから、その重量増は最小限に抑える必要があります。
そうなると、フライホイール、シリンダも除外です。
現状ではサーボに電流をかなり喰われるため、
ジャンプ中に電流を使うことは避けなければなりません。
このことからバイメタルも使えません。
バイメタルのサーボも使ってみたいんですけれど。

残ったのは永久磁石、ばね、ゴムです。
これらは、サーボで位置を変えることでエネルギを授受できるため、
脚を曲げてエネルギを蓄積、伸ばす時に放出・・・というふうに
簡単にジャンプへのエネルギ授受を行うことができます。
また、これは次回記述しますが、
待機状態の姿勢にもメリットとなる場合があります。

で、最終的にはかっこよさ・・・
じゃなくて、設計しやすいばねの使用を検討したいと思います。

ばねを要素として用いると理論式も変更になりますから、
とりあえず1つ目の「ジャンプ上半身の動き」を追加し、
さらに上方推力追加のため足首軸の動きも追加して
実際にジャンプさせてみましょう。



■ 6.効果確認

最適化後のジャンプモーションです。


だいたい10mm近く飛べているのではないでしょうか。
このあたりが今回の活動から導き出せる、
純正フレームでの最大の跳躍高さとなります。



■ 7.標準化及び今後の課題

ジャンプのための動作をおさらいすると、
ジャンプ前で脚を畳み腕を上げ、
上昇中は脚を伸ばし腕を下げ、
空中では脚を畳み腕を下げます。

このとき、ジャンプを高くする要素は以下のものがあります。
・それぞれの初期値
・上半身の動き
・外部からのエネルギ供給

これらを取り入れ、
ジャンプを意識したアリシアフレームを作る必要があります。


第4話は以上です。
指摘や意見がありましたら、拍手か掲示板などで
一言頂けると幸いです。

第5話では、(ようやく)アリシアフレームについての考察を予定しています。







pastupfuture