manvaのエンジニアリング魂

エンジニアリング・ものづくり・DIYをもっと身近にするためのブログ。インスピレーションを刺激します。

ZMPが支持多角形を出る話

梶田氏の著書「ヒューマノイドロボット」の第二版が出版された。

ヒューマノイドロボット(改訂2版)

ヒューマノイドロボット(改訂2版)

名著である。
コンパクトで無駄がない説明。
運動学の計算はDenavit–Hartenbergよりわかりやすい方法を使っている。
ソースコードも非常に美しい。プログラムって賢い人が書くとこんなに短くて綺麗に書けるものなんだと感心する。

が、疑問に思える部分もある。
3.5.2節「重心の加速運動でZMPは支持多角形から出るか?」の議論で,ZMPが支持多角形から出ることがある、という主張をトンデモ扱いしている点だ。本書では,ZMPの定義を床反力中心点のことを指すように考えており、この定義であれば,もちろん床反力中心点が支持多角形の範囲を出るはずないのだが、ZMPはもう一つの捉え方ができる。ZMPは,重力と加速度で決まる直線と床面との交点である,とする定義である。ややこしくなるのでこれをZMP2と呼ぶことにする。例えば早稲田大学の高西氏らの文献ではこちらの定義で考えている。ZMP2は上記のZMPと必ずしも一致しない。

梶田氏の著書3.5.2節では,ZMPとZMP2は常に一致するものとして同一視している。ロボットが慣性モーメントを持たない質点であるとした場合にはZMPとZMP2が常に一致するのだが,質量0の物体に力が加えられないと言っているようなもので、モデルに問題がある。
ZMP2の定義で考えた部分で,「加速度を大きくすればZMPを支持多角形のはるか後方へ移動できるではないか!この議論のどこが間違っているかを・・に示そう。」とあるが,間違っていない(ZMP2は支持多角形の外に出ることがある)のである。
間違っている理由として,加速するとロボット全体が踵を中心に回転するため、と説明されているが、慣性モーメントを考慮しないモデルでは回転する理由が説明できない。慣性モーメントを考慮したモデルで考えると,ZMPとZMP2とのズレによって回転が生じることが理論的に言える。
「前提B ロボットの姿勢,ならびに絶対速度・絶対角度を計測できる」場合,式(3.71),(3.72)で計算したZMPは「足部の力・トルクセンサで計測したものと一致し,絶対に支持多角形を出ることはない」とあるが,式(3.71),(3.72)では角運動量Lを含んでいるので一致するだろう。式(3.71),(3.72)で角運動量L=0として定義した点がZMP2であり,ZMP2は支持多角形を出ることがある。
ZMPは支持多角形を出ないので安定性の評価には使えない,という主張も見かけるが,これはZMPとZMP2を同一視しているためである。ZMP2を使えば,支持多角形を出ているかどうかで安定性を評価できる。

第一版のときから気になっていて、第二版で修正されているかと期待したがそのままだった。名著であるがゆえに影響力が大きいと思われる。正しいことを主張しているのにトンデモ扱いされて苦しんでいる人がいるかもしれないのでここに書いておこう。

参考:
下記文献では,上記ZMPをCenter of Pressure(CoP), ZMP2をZero Moment Point(ZMP)と呼んでいる。
Forces Acting on a Biped Robot. Center of Pressure—Zero Moment Point
http://www.cs.cmu.edu/~cga/legs/sardain-bessonnet.pdf