
 |
 |
ロボットが歩行しているとき、ロボットには地球からの「重力」と歩行の加減速によって生じる「慣性力」が働いています。これらの合力を「総慣性力」と呼びます。一方、ロボットの着地している足には地面からの反作用として「床反力」が働きます。
「総慣性力」の軸と地面との交点は、「総慣性力」のモーメントが「0」となるので、ZMP(Zero Moment Point)と呼ばれています。また、「床反力」が作用する点を「床反力作用点」といいます。
基本的には、ロボットは、理想の歩行パターンをコンピュータで生成し、これに従うように関節を動かして歩きます。理想の歩行パターンの総慣性力を「目標総慣性力」、理想の歩行パターンのZMPを「目標ZMP」と呼びます。ロボットが理想的なバランスを保って歩行をしているときには、「目標総慣性力」と「実際の床反力」の軸は一致しています。したがって、「目標ZMP」と「実際の床反力作用点」は一致しています。
ロボットが歩行していて地面の凹凸などを踏んだ場合、「目標総慣性力」と「実際の床反力」の軸がずれてバランスを崩し、転倒力が発生します。この転倒力は「目標ZMP」と「実際の床反力作用点」のズレにほぼ比例します。つまり、「目標ZMP」と「実際の床反力作用点」のズレが、バランスを崩す最大の原因であると言えます。
Hondaのロボットは、バランスを崩して倒れそうになると、次の3つの制御を働かせて、倒れずに歩き続けようとします。 |
 |
 |
|
床反力制御
「床反力制御」は、床の凹凸を吸収しながらも、倒れそうになったときに足の裏で踏ん張る制御です。例えば、ロボットがつま先で石を踏んだ場合、「実際の床反力作用点」はつま先側にずれますが、このときに床反力制御は、つま先側を少し持ち上げて「実際の床反力作用点」を「目標ZMP」まで戻します。また例えば、何らかの原因でロボットが前傾してしまったときには、つま先を下げて踏ん張ることにより、「実際の床反力作用点」を前にずらし、姿勢復元力を発生させます。ただし、「実際の床反力作用点」は足裏接地面の範囲から越えることができないので、姿勢の復元力には限界があり、ロボットが大きく傾いた場合には転倒してしまいます。 |
 |
 |
|
目標ZMP制御
ロボットが大きく傾いた場合には、さらに「目標ZMP制御」が働いて転倒を防ぎます。前述のように、「目標ZMP」と「実際の床反力作用点」のズレによって転倒力が発生するのですが、「目標ZMP制御」は、この転倒力を逆に積極的に活用することで安定化を図る制御です。具体的には、例えば左図のように前方に倒れそうな場合には、ロボットの上体を理想の歩行パターンよりも一層強く前方に加速させます。この結果、「目標ZMP」が「実際の床反力作用点」よりも後方に移動し、後ろに倒そうとする力が働き、姿勢の傾きが戻ります。 |
 |
 |
|
着地位置制御
「目標ZMP制御」が働くと、目標としていた上体の位置が、より強く加速した方向にズレてしまいます。このとき、いつもと同じ歩幅(理想の歩幅)で次の足を出すと、上体に対して足が取り残されてしまいます。「着地位置制御」は、歩幅を適切に修正して、上体と足の理想的な位置関係を取り戻します。 |