2003/03/25 【アクチュエータ編TOPに戻る】
さて、前回201.屈伸運動時に加わる各関節のモーメントのページで、両足立ちによる各関節のモーメントを求めてみました。今回はその続きとして片足で立った時の各関節のモーメントを求めてみます。片足立ちというと、正面から見た時の左右への体重移動に伴うモーメントを求める場合もありますが、今回は前回の続きということで、側面から見た時の前後方向へのモーメントに焦点を当てることにしましょう。つまり、片足を支持脚として、もう一方の脚(遊脚)を前に突き出してキックのポーズなどを取らせた場合に、支持脚と遊脚の各関節はどれくらのモーメントが掛かるのか?という辺りを見てみることにします。
そして前回と同じように、各関節のモーメントを自動計算してくれるExelのツールも併せてご紹介します。ただし、今回の計算はちょっと簡易的にしていますので、それに伴う制限や条件などについてもご説明します。
202−1.ロボットのモデル
今回、各関節のモーメントを計算するためのロボットのモデルをご紹介しましょう。
![]() |
左図がそのモデルです。今回はちょっと調子に乗って、腰の自由度を増やして両腕と頭を追加してみました。(^^ 両脚、両腕の長さと重心位置と重量は左右同じとしています。 W1:スネの重量[Kg] L1:スネの長さ[cm] l1:スネの重心位置[cm] W2:モモの重量[Kg] L2:モモの長さ[cm] l2:モモの重心位置[cm] W3腰の重量[Kg] L3:腰の長さ[cm] l3:腰の重心位置[cm] W4:胸部の重量 L4:胸部の長さ[cm] l4:胸部の重心位置[cm] W5:頭部の重量[Kg] l5:頭部の重心位置[cm] W6:上腕部の重量[Kg] L6:上腕部の長さ[cm] l6:上腕部の重心位置[cm] W7:前腕部の重量[Kg] L7:前腕部の長さ[cm] l7:前腕部の重心位置[cm] W8:足の重量[Kg] l8:足の重心位置[cm] |
各関節の角度は、前回の201.屈伸運動時に加わる各関節のモーメントと同様に関節の中心を通る水平線の右側を基準の0°とします。
| θ7:右肩 | θ9:左肩 |
| θ8:右ヒジ | θ10:左ヒジ |
| θ6:胸部 | |
| θ5:腰 | |
| θ2:支持脚ヒザ | θ4:遊脚ヒザ |
| θ1支持脚足首 | θ3:遊脚足首 |
なお、
遊脚太ももの角度=遊脚ヒザの角度θ4+180°= −(180°−遊脚ヒザの角度θ4)
遊脚スネの角度=遊脚足首の角度θ3+180°= −(180°−遊脚足首の角度θ3)
です。
202−2.各関節モーメントの計算式
上でご紹介したモデルにおける各関節モーメントの計算方法は、前回の201.屈伸運動時に加わる各関節のモーメントと同じ考えに基づきます。今回は両腕などを付けたものですから、足元に近いほど計算が煩雑になってしまっています。ここでは主に各関節のモーメントの意味合いについてお話しますので、計算式を参照したい方はリンク部分をクリックしてください。
■ポイントP1 支持脚足首の総モーメント 計算式はここをクリック
片足立ちでは全体重による全てのモーメントは足首に加わります。計算上は姿勢によって非常に大きなモーメントとなる部分ですが、実際のロボット設計では最大のモーメントを支えるだけのトルクは必要ありません。なぜかというと、モーメントが大きくなるとバランスを崩して倒れてしまうことになっているからです。実際の人間でも同じです。試しに「かかと」と背中をぴったりと壁に付けて、片足を持ち上げて前にまっすぐ伸ばしてみてください。バランスを崩して前に倒れてしまうはずです。え?倒れない?その場合はあなたの足の上げ方が足りないか、よっぽど支持脚のつま先の力が強いかのどちらかです。そんなあなたは、更に両腕をまっすく前に伸ばしてみてください。どうですか?倒れるでしょう...? それでも倒れないあなたは、足に根が生えていますのでしょう。(^^; 足に根が生えている場合は姿勢によって転倒することなく、支持脚の足首には計算通りのモーメントが加わります。
実際問題として足首の前後方向に加わるモーメントの最大値は、
足首前後方向のモーメントの最大値 = 全体重[Kg] x 足首から爪先までの距離[cm]
が目安となります。これは、全体重の重心を床面に投影した場合、爪先よりも前になるとバランスが保てずに転倒してしまうところから来ています。なので、足首から爪先までの距離が長い(足の平がでかい)ロボットほど安定性が高く、同時に足首に必要なトルクも大きくなるということになります。
■ポイントP2 支持脚ヒザの総モーメント 計算式はここをクリック
支持脚のヒザは、支持脚のスネを土台として支持されているため、支持脚のスネによるモーメントは計算に入れません。それ以外の計算方法は足首の場合と一緒です。
■ポイントP5 支持脚モモ=腰の総モーメント 計算式はここをクリック
ポイントP5の関節は太ももの付け根とも、腰とも取れる位置です。ここはそれより上の上体と、前に振り出した遊脚を結ぶ中心点という位置付けになります。なので、上体と遊脚の両方のモーメントの総和となります。遊脚を前に出して静止させた場合、上体を後ろに反らせるとモーメントの釣り合いがとれてバランスが保てることも理解できると思います。
■ポイントP5’(ダッシュ) 遊脚モモ=腰の総モーメント 計算式はここをクリック
ポイント5’(ダッシュ)は遊脚側の太ももの付け根を指しています。遊脚はこのP5’を支点として支持されます。従って、遊脚を好きな高さに持ち上げる時に加わるモーメントを指します。
■ポイントP4 遊脚ヒザの総モーメント 計算式はここをクリック
ポイントP4は遊脚側のヒザを指しています。遊脚のスネから下はP4を支点として支持されますので、スネと足を好きな高さに持ち上げる時に加わるモーメントを指すことになります。
■ポイントP3 遊脚足首の総モーメント 計算式はここをクリック
遊脚側の足首が支えるものは足首より下、つまり足だけになります。また、今回ロボットの取りうる姿勢として、足の底面は常に地面に対して平行であるという前提に立ちました。従って、遊脚の足首に加わるモーメントは、「足の重さ」x「足首からの重心位置」という計算式になります。
■ポイントP6 上体胸部の総モーメント 計算式はここをクリック
胸部はそれより下の腰を土台として支持されているため、ポイントP6以上の総モーメントだけを計算に入れています。つまりここでは腰より下がどんな姿勢をとっていようとも、上体胸部のモーメントは変化しないとしています。
■ポイントP7、P7'(ダッシュ) 肩の総モーメント P7の計算式とP7'の計算式
ポイントP7とP7’(ダッシュ)は左右独立した肩であるとしています。なので、肩に加わるモーメントも左右別々の腕の姿勢から計算します。
■ポイントP8、P9 ヒジの総モーメント P8の計算式とP9の計算式
左右のヒジに加わる、前腕部を支持する場合に発生するモーメントです。
202−3.各関節モーメントの自動計算ツール
では、上記の計算を自動で行ってくれる計算ツールをご紹介します。今回もWindowsの表計算ソフトExcelを使って自動計算をさせることにしましょう。
ご紹介する自動計算ツールは、ロボットのボディに関するパラメータを入力して、各関節の角度を表計算形式でズラっと並べてあげると、それらの角度(姿勢)における各関節のモーメントを計算し、角度の推移に伴ったモーメントの変化をグラフで表示してくれます。
ここをクリックするとExcelファイルがダウンロードできます。moment2.xls
Microsoft(R) Excel2000で作成しています。他のバージョンでの動作は検証していませんので、ご了承下さい。画面は以下のようになっています。

基本的な使い方は前回ご紹介した屈伸姿勢での自動計算ツールと一緒です。ただし、ちょっと入力する項目が増えています。
■1.ロボットのボディに関するパラメータ入力
画面左上側オレンジの領域に、ロボットの身体に関する値を入力します。ここで入力した値をもとに、各部のモーメントが計算されます。
■2.ロボットの関節角度(姿勢)の入力
画面下側ピンクの領域に、ロボットの足首、ヒザ、上体(腰)の各角度を入力します。この時、202−1.の項でご紹介したモデルを参考にして、基準0°は各関節の水平線右側であることを守って下さい。関節の角度は横一列でひとつのグループになっていて、ロボットのある時点での姿勢を示します。
入力する角度を、行を変えて少しずつ変化させることによって、連続した姿勢の変化を表すことができます。ピンクの領域の右側に続く領域は、個別の計算結果を表示する領域です。ちょっと覗いて見てもらうと、すぐに分かってもらえると思いますので、説明は省略します。
■3.モーメントのグラフ表示
画面右上に大きく表示されているのが、角度の変化に対応した各関節に掛かるモーメントのグラフです。時計廻りに加わるモーメントが正(プラス)の値で、反時計廻りが負(マイナス)の値となります。
グラフの描画としては、ピンク領域に入力した角度の計算結果を、上の行から順に表示しているだけです。
パラメータの入力は、オレンジとピンクの領域のみでOKです。下半分の大部分を占めるピンク以外のセルには、各種の計算式が入力されているので、間違って消したり上書きしたりしないように注意して下さい。
角度入力の行数は、勝手に増やしたり減らしたりしてもかまいません。増やす場合には、各セルに入力されている計算式もコピーして下さい。
202−4.ツールの制限や注意事項
冒頭でもお話していますが、今回のモーメント計算は簡易的にしており、数値の概略を掴むという程度のものであると思ってください。それは、以下のような制限や注意事項によります。
■1.モデルロボットは、あくまで支持脚だけで立っています。
見れば分かると言われそうですが、両脚とも同じ角度データを入力して、見た目で屈伸姿勢となるように設定しても、全体重は支持脚だけで支えられ、遊脚は空中にぶら下がっているという前提で計算されます。なので、モデルのロボットは、高くて面積の小さな台の上に、片足だけで立っていると思ってください。
■2.モデルロボットの横幅は考えていません。
横から見た時の前後方向のモーメントだけを対象としているので当然ですが、実際のロボットには横幅があり、そもそも片足立ちをするためには左右方向への体重移動が必須です。今回の計算には、左右方向への体重移動に伴う幾何学的な影響を考慮していません。具体的にどの程度の影響があるのかについても検討が必要と思いますが、今回の目的は「概略を掴む」ということにしているので、深く追求していません。
■3.腰から上の姿勢について回転座標の変換をしていません。
実は、これが一番大きな欠点なのですが、下の3つのモデルを見てください。

ロボットがAの姿勢の時、胸部の角度を少し前に傾けて前傾姿勢にしたのがBとCです。自然に前傾姿勢をとっているのがBで、ちょっと不自然に感じる姿勢がCだと思います。BとCの違いはどこにあるのでしょう?
Bの姿勢は、胸部の角度の変化に伴って、腕の姿勢も全体的に回転して付いて行っています。つまり土台の回転に合わせて同じように回転しているわけで、胸部と腕の相対的な位置関係に変化はありません。普通にロボットを作ると、当然ながらこういう動きになります。
Cの姿勢は、胸部の角度だけが変化しており、肩から腕にかけたパーツの姿勢はそれに付いて行っていません。元の姿勢から平行移動しているだけです。なので不自然に感じるのです。普通のロボットでは、このような動きを実現するほうがよっぽど大変です。
で、今回の計算ツールでは、胸部の角度だけに変化を持たせて解析しようとすると、ロボットはCのような動きをしていることを前提に計算されてしまいます。これが簡易的と言う所以です。
これは胸部と腕との間だけではなく、腰の角度に対する上体、遊脚太ももを持ち上げた時に対するスネの角度、など全てについて言えます。ただし、支持脚に対する上体の角度については、Cのような動きが角度入力を行う上で都合が良いといえます。一長一短がありますので良く理解した上でご利用下さい。
以上のような制限や注意事項を考えると、果たしてどこまで利用価値があるのか? などと思ってしまい、ご紹介するのもやめてしまおうかとも思ったのですが、まあ、取り合えず載せてしまおう、というレベルのものです。 あまり真面目に検証されるとボロが出そうですが、ご容赦下さい。(^^;
自動計算ツールには、既にモデルとなるデータが入力されています。そこでは、背筋をピンと伸ばして中腰になった姿勢を基本とし、先ず遊脚の太ももが水平になるまで持ち上げ、続いてスネが水平になるまで持ち上げるという2段の動作としています。そのため、モーメントのグラフは2段の丘のような形となっています。
興味のある方は、是非自分で色々なデータを入力して試してみて下さい。何かが見えてくるかもしれませんよ。(^^