(57)【特許請求の範囲】
【請求項１】
移動ロボットの運動によって発生する床反力モーメント水平成分の目標値と並進床反力水平成分の許容範囲とを設定し、該床反力モーメント水平成分の目標値と並進床反力水平成分の許容範囲とを満足するように、移動ロボットの目標運動を少なくとも含む目標歩容を生成する歩容生成装置において、
前記移動ロボットの所定の第１動力学モデルを用い、該第１動力学モデル上で前記床反力モーメント水平成分の目標値と前記並進床反力水平成分の許容範囲とを満足するように前記目標運動の仮値である仮運動を作成する仮運動作成手段と、前記作成した仮運動を、前記第１動力学モデルと、該第１動力学モデルよりも動力学的精度の高い所定の第２動力学モデルとを用いて修正し、その修正後の運動を前記目標運動として得る仮運動修正手段とを備え、
前記仮運動の任意の時刻ｔに対し、該仮運動によって前記第２動力学モデル上で前記時刻ｔに発生する前記床反力モーメント水平成分M2(t)と該仮運動によって前記第１動力学モデル上で前記時刻ｔに発生する前記床反力モーメント水平成分M1(t)との差（M2(t)−M1(t)）を床反力モーメント水平成分誤差Merr(t)とし、且つ、該仮運動によって前記第２動力学モデル上で前記時刻ｔに発生する並進床反力水平成分F2(t)と該仮運動によって前記第１動力学モデル上で前記時刻ｔに発生する並進床反力水平成分F1(t)との差（F2(t)−F1(t)）を並進床反力水平成分誤差Ferr(t)としたとき、
前記仮運動修正手段は、前記仮運動の修正後の運動によって前記第１動力学モデル上で前記時刻ｔに発生する前記床反力モーメント水平成分に、前記床反力モーメント水平成分誤差Merr(t)と少なくとも該床反力モーメント水平成分誤差Merr(t)に応じて決定した第１床反力補正量とのいずれかを加えたものが該時刻ｔでの前記目標値に一致し、且つ、前記仮運動の修正後の運動によって前記第１動力学モデル上で前記時刻ｔに発生する並進床反力水平成分に、前記並進床反力水平成分誤差Ferr(t)と少なくとも該並進床反力水平成分誤差Ferr(t)に応じて決定した第２床反力補正量とのいずれかを加えたものが該時刻ｔでの前記許容範囲を満足するように該時刻ｔにおける前記仮運動の瞬時値を修正することを特徴とする移動ロボットの歩容生成装置。
【請求項２】
移動ロボットの運動によって発生する床反力モーメント水平成分の目標値と並進床反力水平成分の許容範囲とを設定し、該床反力モーメント水平成分の目標値と並進床反力水平成分の許容範囲とを満足するように、移動ロボットの目標運動を少なくとも含む目標歩容を生成する歩容生成装置において、
前記移動ロボットの所定の第１動力学モデルを用い、該第１動力学モデル上で前記床反力モーメント水平成分の目標値と前記並進床反力水平成分の許容範囲とを満足するように前記目標運動の仮値である仮運動を作成する仮運動作成手段と、前記作成した仮運動を、前記第１動力学モデルと、該第１動力学モデルよりも動力学的精度の高い所定の第２動力学モデルとを用いて修正し、その修正後の運動を前記目標運動として得る仮運動修正手段とを備え、
前記仮運動の任意の時刻ｔに対し、該仮運動によって前記第２動力学モデル上で前記時刻ｔに発生する前記床反力モーメント水平成分M2(t)と前記時刻ｔにおける前記床反力モーメント水平成分の前記目標値MT(t)との差（M2(t)−MT(t)）を床反力モーメント水平成分誤差Merr(t)とし、且つ、該仮運動によって前記第２動力学モデル上で前記時刻ｔに発生する並進床反力水平成分F2(t)と該仮運動によって前記第１動力学モデル上で前記時刻ｔに発生する並進床反力水平成分F1(t)との差（F2(t)−F1(t)）を並進床反力水平成分誤差Ferr(t)としたとき、
前記仮運動修正手段は、前記仮運動の修正後の運動によって前記第１動力学モデル上で前記時刻ｔに発生する前記床反力モーメント水平成分に、前記床反力モーメント水平成分誤差Merr(t)と少なくとも該床反力モーメント水平成分誤差Merr(t)に応じて決定した第１床反力補正量とのいずれかを加えたものが該時刻ｔでの前記目標値に一致し、且つ、前記仮運動の修正後の運動によって前記第１動力学モデル上で前記時刻ｔに発生する並進床反力水平成分に、前記並進床反力水平成分誤差Ferr(t)と少なくとも該並進床反力水平成分誤差Ferr(t)に応じて決定した第２床反力補正量とのいずれかを加えたものが該時刻ｔでの前記許容範囲を満足するように該時刻ｔにおける前記仮運動の瞬時値を修正することを特徴とする移動ロボットの歩容生成装置。
【請求項３】
移動ロボットの目標ＺＭＰと該移動ロボットの運動によって発生する並進床反力水平成分の許容範囲とを設定し、該目標ＺＭＰと並進床反力水平成分の許容範囲とを満足するように、移動ロボットの目標運動を少なくとも含む目標歩容を生成する歩容生成装置において、
前記移動ロボットの所定の第１動力学モデルを用い、該第１動力学モデル上で前記目標ＺＭＰと前記並進床反力水平成分の許容範囲とを満足するように前記目標運動の仮値である仮運動を作成する仮運動作成手段と、前記作成した仮運動を、前記第１動力学モデルと、該第１動力学モデルよりも動力学的精度の高い所定の第２動力学モデルとを用いて修正し、その修正後の運動を前記目標運動として得る仮運動修正手段とを備え、
前記仮運動の任意の時刻ｔに対し、該仮運動から前記第２動力学モデル上で前記時刻ｔに算出されるＺＭＰであるZMP2(t)と該仮運動から前記第１動力学モデル上で前記時刻ｔに算出されるＺＭＰであるZMP1(t)との差（ZMP2(t)−ZMP1(t)）をＺＭＰ誤差ZMPerr(t)とし、且つ、該仮運動によって前記第２動力学モデル上で前記時刻ｔに発生する並進床反力水平成分F2(t)と該仮運動によって前記第１動力学モデル上で前記時刻ｔに発生する並進床反力水平成分F1(t)との差（F2(t)−F1(t)）を並進床反力水平成分誤差Ferr(t)としたとき、
前記仮運動修正手段は、前記仮運動の修正後の運動から前記第１動力学モデル上で前記時刻ｔに算出されるＺＭＰに、前記ＺＭＰ誤差ZMPerr(t)と少なくとも該ＺＭＰ誤差ZMPerr(t)に応じて決定したＺＭＰ補正量とのいずれかを加えたものが該時刻ｔでの前記目標ＺＭＰに一致し、且つ、前記仮運動の修正後の運動によって前記第１動力学モデル上で前記時刻ｔに発生する並進床反力水平成分に、前記並進床反力水平成分誤差Ferr(t)と少なくとも該並進床反力水平成分誤差Ferr(t)に応じて決定した床反力補正量とのいずれかを加えたものが該時刻ｔでの前記許容範囲を満足するように該時刻ｔにおける前記仮運動の瞬時値を修正することを特徴とする移動ロボットの歩容生成装置。
【請求項４】
移動ロボットの目標ＺＭＰと該移動ロボットの運動によって発生する並進床反力水平成分の許容範囲とを設定し、該目標ＺＭＰと並進床反力水平成分の許容範囲とを満足するように、移動ロボットの目標運動を少なくとも含む目標歩容を生成する歩容生成装置において、
前記移動ロボットの所定の第１動力学モデルを用い、該第１動力学モデル上で前記目標ＺＭＰと前記並進床反力水平成分の許容範囲とを満足するように前記目標運動の仮値である仮運動を作成する仮運動作成手段と、前記作成した仮運動を、前記第１動力学モデルと、該第１動力学モデルよりも動力学的精度の高い所定の第２動力学モデルとを用いて修正し、その修正後の運動を前記目標運動として得る仮運動修正手段とを備え、
前記仮運動の任意の時刻ｔに対し、該仮運動から前記第２動力学モデル上で前記時刻ｔに算出されるＺＭＰであるZMP2(t)と前記時刻ｔでの前記目標ＺＭＰである目標ＺＭＰ(t)との差（ZMP2(t)−目標ＺＭＰ(t)）をＺＭＰ誤差ZMPerr(t)とし、且つ、該仮運動によって前記第２動力学モデル上で前記時刻ｔに発生する並進床反力水平成分F2(t)と該仮運動によって前記第１動力学モデル上で前記時刻ｔに発生する並進床反力水平成分F1(t)との差（F2(t)−F1(t)）を並進床反力水平成分誤差Ferr(t)としたとき、
前記仮運動修正手段は、前記仮運動の修正後の運動から前記第１動力学モデル上で前記時刻ｔに算出されるＺＭＰに、前記ＺＭＰ誤差ZMPerr(t)と少なくとも該ＺＭＰ誤差ZMPerr(t)に応じて決定したＺＭＰ補正量とのいずれかを加えたものが該時刻ｔでの前記目標ＺＭＰ(t)に一致し、且つ、前記仮運動の修正後の運動によって前記第１動力学モデル上で前記時刻ｔに発生する並進床反力水平成分に、前記並進床反力水平成分誤差Ferr(t)と少なくとも該並進床反力水平成分誤差Ferr(t)に応じて決定した床反力補正量とのいずれかを加えたものが該時刻ｔでの前記許容範囲を満足するように該時刻ｔにおける前記仮運動の瞬時値を修正することを特徴とする移動ロボットの歩容生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は２足移動ロボット等の目標歩容を生成する装置に関する。
【背景技術】
【０００２】
２足移動ロボット等の移動ロボットの目標歩容を生成する技術としては、例えば特許第３４４３０７７号（特許文献１）、あるいは、第１８回日本ロボット学会学術講演／３Ｐ１４／「２足ヒューマノイドロボットのリアルタイム歩行安定化制御  −HRPにおける歩行制御モジュールの有効性の検証−」（非特許文献１）に見られるように、目標ＺＭＰまわりの床反力モーメントの誤差、あるいは実ＺＭＰの目標ＺＭＰからの誤差を観測し、その誤差を小さくするように歩容を修正する技術が知られている。【０００３】
しかし、これらの技術では、並進床反力の誤差が考慮されていないため、摩擦係数の低い路面でロボットを歩行させたり、走行のように並進床反力鉛直成分が０もしくはほぼ０になる時期を有する歩容を生成する場合には、ロボットのスリップを生じないような歩容を生成することが困難である。【０００４】
このため、例えば特開２００２−３２６１７３号公報（特許文献２）や、ＰＣＴ国際公開公報ＷＯ／０３／０５７４２７／Ａ１（特許文献３）に見られる技術が本願出願人により提案されている。これらの特許文献３，４に見られる技術では、ロボットの運動（各部位の位置、姿勢）と、床反力との関係を表す第１の動力学モデル（単純化モデル）を用いて該第１の動力学モデル上での動力学的平衡条件（床反力の並進力成分が目標値になる、ある点のまわりの床反力モーメントが目標値になるなどの条件）を満足するようにロボットの目標運動の瞬時値（瞬時目標運動）と目標床反力の瞬時値（瞬時目標床反力）とからなる瞬時目標歩容が逐次作成される。そして、この瞬時目標歩容を第２の動力学モデル（フルモデル）に入力して、該瞬時目標運動の一部（目標上体位置姿勢や目標ＺＭＰまわりの目標モーメントなど）を補正することで、最終的な瞬時目標歩容が時系列的に生成される。【０００５】
この技術では、第１の動力学モデル（単純化モデル）として、線形性の高いモデルを使用することで、ロボットの安定な運動を継続的に行い得る歩容を効率よく短時間で作成することが可能となると共に、第２の動力学モデル（フルモデル）として比較的動力学的精度の高いモデルを使用することで、最終的に生成される歩容の運動と床反力との間の動力学的精度を実ロボットの動力学により近づけることが可能となる。【０００６】
ところで、前記特許文献２，３に見られる技術では、任意の時刻ｔにおいて第２の動力学モデルを用いた瞬時目標運動の補正（上体位置姿勢の補正）は、該第２の動力学モデルから出力される目標ＺＭＰまわりのモーメント（目標ＺＭＰまわりのモーメントの補正量）の過去値を用いて行なわれる。すなわち、特許文献２，３に見られる技術は、第２の動力学モデルから出力される目標ＺＭＰまわりのモーメントの過去値を、第１の動力学モデルで新たに作成した歩容の瞬時値の動力学的誤差を表すものと見なして、該モーメントの過去値に応じて新たな歩容の瞬時値を修正するようにしている。換言すれば、第２の動力学モデルを用いて最終的に補正した歩容の運動と、その補正のために参照する床反力（目標ＺＭＰまわりのモーメント）との間には時間的なずれが生じている。【０００７】
しかるに、第１の動力学モデルで作成される歩容の動力学的誤差は、歩容の運動パターンによって変化するため、第２の動力学モデルから出力される目標ＺＭＰまわりのモーメントの過去値は、必ずしも第１の動力学モデルで作成した新たな歩容の瞬時値の動力学的誤差を表すものとはならない。また、第２の動力学モデルは、非線形性が高いため、それを用いて作成される歩容の運動は発散しやすい。このため、特許文献２，３に見られる技術では、目標ＺＭＰ軌道を修正するかもしくは目標ＺＭＰまわりに床反力モーメントを発生させるようにして、ロボットの目標運動軌道が第１の動力学モデルで作成された歩容の運動軌道からかけはなれないようにする必要があった。そして、この場合、目標ＺＭＰ軌道の修正量や、目標ＺＭＰまわりの床反力モーメントが比較的大きくなることがあり、このような場合には、ロボットの安定余裕を高く保つことが困難となる場合あった。逆に、安定余裕を高く保つために、目標ＺＭＰ軌道の修正量や、目標ＺＭＰまわりの床反力モーメントの許容範囲を狭く設定すると、歩容が発散する恐れが高まるという不具合があった。【０００８】
本発明はかかる背景に鑑みてなされたものであり、ロボットのスリップを防止し得る歩容を効率よく生成できると共に、その歩容の運動と床反力との間の時間的整合性を採りつつ、それらの間の動力学的精度を良好に確保することができる移動ロボットの歩容生成装置を提供することを目的とする。
【発明の開示】
【０００９】
かかる目的を達成するために、本発明の移動ロボットの歩容生成装置の第１発明は、移動ロボットの運動によって発生する床反力モーメント水平成分の目標値と並進床反力水平成分の許容範囲とを設定し、該床反力モーメント水平成分の目標値と並進床反力水平成分の許容範囲とを満足するように、移動ロボットの目標運動を少なくとも含む目標歩容を生成する歩容生成装置において、
前記移動ロボットの所定の第１動力学モデルを用い、該第１動力学モデル上で前記床反力モーメント水平成分の目標値と前記並進床反力水平成分の許容範囲とを満足するように前記目標運動の仮値である仮運動を作成する仮運動作成手段と、前記作成した仮運動を、前記第１動力学モデルと、該第１動力学モデルよりも動力学的精度の高い所定の第２動力学モデルとを用いて修正し、その修正後の運動を前記目標運動として得る仮運動修正手段とを備え、
前記仮運動の任意の時刻ｔに対し、該仮運動によって前記第２動力学モデル上で前記時刻ｔに発生する前記床反力モーメント水平成分M2(t)と該仮運動によって前記第１動力学モデル上で前記時刻ｔに発生する前記床反力モーメント水平成分M1(t)との差（M2(t)−M1(t)）を床反力モーメント水平成分誤差Merr(t)とし、且つ、該仮運動によって前記第２動力学モデル上で前記時刻ｔに発生する並進床反力水平成分F2(t)と該仮運動によって前記第１動力学モデル上で前記時刻ｔに発生する並進床反力水平成分F1(t)との差（F2(t)−F1(t)）を並進床反力水平成分誤差Ferr(t)としたとき、
前記仮運動修正手段は、前記仮運動の修正後の運動によって前記第１動力学モデル上で前記時刻ｔに発生する前記床反力モーメント水平成分に、前記床反力モーメント水平成分誤差Merr(t)と少なくとも該床反力モーメント水平成分誤差Merr(t)に応じて決定した第１床反力補正量とのいずれかを加えたものが該時刻ｔでの前記目標値に一致し、且つ、前記仮運動の修正後の運動によって前記第１動力学モデル上で前記時刻ｔに発生する並進床反力水平成分に、前記並進床反力水平成分誤差Ferr(t)と少なくとも該並進床反力水平成分誤差Ferr(t)に応じて決定した第２床反力補正量とのいずれかを加えたものが該時刻ｔでの前記許容範囲を満足するように該時刻ｔにおける前記仮運動の瞬時値を修正することを特徴とするものである。
【００１０】
なお、本発明において、第２動力学モデルの動力学的精度が第１動力学モデルよりも高いというのは、ロボットの任意の運動によって第２動力学モデル上で発生する床反力が、該運動によって第１動力学モデル上で発生する床反力よりも、該運動で想定されている床上で実際のロボットが該運動を行なったときに該ロボットに作用する実際の床反力（実床反力）により近いものとなることを意味する。このことは、第１発明に限らず、後述の第２〜第４発明のいずれにおいても同様である。
【００１１】
また、ロボットの任意の運動に対して、任意の動力学モデル上で床反力モーメント水平成分の目標値を満足するということは、該運動によって、ある設定された作用点（例えば目標ＺＭＰ、ロボットの全体重心点など）のまわりに該動力学モデル上で発生する床反力モーメント水平成分（該運動に対して該動力学モデルの動力学が成立する床反力のうちのモーメント水平成分）が目標値に一致もしくはほぼ一致することを意味する。このことは、第１発明に限らず後述の第２発明においても同様である。さらに、ロボットの任意の運動に対して、任意の動力学モデル上で並進床反力水平成分の許容範囲を満足するということは、該運動によって該動力学モデル上で発生する並進床反力水平成分（該運動に対して該動力学モデルの動力学が成立する床反力のうちの並進床反力水平成分）が前記許容範囲に収まるということを意味する。このことは、第１発明に限らず後述の第２〜第４発明のいずれにおいても同様である。
【００１２】
かかる第１発明によれば、前記仮運動作成手段によって、とりあえず、第１動力学モデルを用いて、前記床反力モーメントの目標値と並進床反力水平成分の許容範囲とを満足するように前記仮運動が生成される。そして、この仮運動が仮運動修正手段により修正され、その修正後の運動が目標運動として得られる。
【００１３】
このとき、仮運動修正手段は、仮運動の修正後の運動によって前記第１動力学モデル上で前記時刻ｔに発生する前記床反力モーメント水平成分に、前記床反力モーメント水平成分誤差Merr(t)と少なくとも該床反力モーメント水平成分誤差Merr(t)に応じて決定した第１床反力補正量とのいずれかを加えたものが該時刻ｔでの前記目標値に一致するように時刻ｔにおける仮運動の瞬時値を修正する。同時に、仮運動修正手段は、仮運動の修正後の運動によって前記第１動力学モデル上で前記時刻ｔに発生する並進床反力水平成分に、前記並進床反力水平成分誤差Ferr(t)と少なくとも該並進床反力水平成分誤差Ferr(t)に応じて決定した第２床反力補正量とのいずれかを加えたものが該時刻ｔでの前記許容範囲を満足するように該時刻ｔにおける仮運動の瞬時値を修正する。この場合、時刻ｔでの前記床反力モーメント水平成分誤差Merr(t)は、仮運動によって前記第２動力学モデル上で該時刻ｔに発生する床反力モーメント水平成分M2(t)と該仮運動によって前記第１動力学モデル上で該時刻ｔに発生する床反力モーメント水平成分M1(t)との差であるから、その時刻ｔでの仮運動に対応する第１動力学モデル上での床反力モーメント水平成分の誤差を意味する。同様に、時刻ｔでの前記並進床反力水平成分誤差Ferr(t)は、仮運動によって前記第２動力学モデル上で該時刻ｔに発生する並進床反力水平成分F2(t)と該仮運動によって前記第１動力学モデル上で該時刻ｔに発生する並進床反力水平成分F1(t)との差であるから、その時刻ｔでの仮運動に対応する第１動力学モデル上での並進床反力水平成分の誤差を意味する。
【００１４】
従って、上記の如く仮運動を修正してなる目標運動は、それと床反力との間の時間的整合性が採れたものとなる。
【００１５】
また、該目標運動によって第１動力学モデル上で発生する床反力モーメント水平成分に、前記床反力モーメント水平成分誤差Merr(t)とこのMerr(t)に応じた前記第１床反力補正量とのいずれかを加えてなる床反力モーメント水平成分（ここでは、M1'(t)という）は、該目標運動によって第２動力学モデル上で発生する床反力モーメント水平成分に近いものとなるので、M1'(t)は目標運動に対する動力学的精度が高い。同様に、該目標運動によって第１動力学モデル上で発生する並進床反力水平成分に、前記並進床反力水平成分誤差Ferr(t)とこのFerr(t)に応じた前記第２床反力補正量とのいずれかを加えてなる並進床反力水平成分（ここでは、F1'(t)という）は、該目標運動によって第２動力学モデル上で発生する並進床反力水平成分に近いものとなるので、F1'(t)も目標運動に対する動力学的精度が高い。このため、これらのM1'(t)およびF1'(t)がそれぞれ前記目標値、許容範囲を満足するように目標運動を決定する（仮運動を修正する）ことによって、該目標値および許容範囲を適切に満足しつつ動力学的精度の高い目標歩容を生成できることとなる。
【００１６】
さらに前記仮運動およびこの仮運動の修正（目標運動の生成）は、第１動力学モデル（これは第２動力学モデルよりも一般に線形性が高い）で行なわれ、第２動力学モデルは、単に仮運動から床反力を求めるために使用されるので、仮運動と目標運動の生成処理、並びに、仮運動に対する床反力の算出処理を効率よく短時間で行うことができる。
【００１７】
よって、第１発明によれば、ロボットのスリップを防止し得る歩容を効率よく生成できると共に、その歩容の運動と床反力との間の時間的整合性を採りつつ、それらの間の動力学的精度を良好に確保することができる。
【００１８】
また、本発明の移動ロボットの歩容生成装置の第２発明は、前記の目的を達成するために、移動ロボットの運動によって発生する床反力モーメント水平成分の目標値と並進床反力水平成分の許容範囲とを設定し、該床反力モーメント水平成分の目標値と並進床反力水平成分の許容範囲とを満足するように、移動ロボットの目標運動を少なくとも含む目標歩容を生成する歩容生成装置において、
前記移動ロボットの所定の第１動力学モデルを用い、該第１動力学モデル上で前記床反力モーメント水平成分の目標値と前記並進床反力水平成分の許容範囲とを満足するように前記目標運動の仮値である仮運動を作成する仮運動作成手段と、前記作成した仮運動を、前記第１動力学モデルと、該第１動力学モデルよりも動力学的精度の高い所定の第２動力学モデルとを用いて修正し、その修正後の運動を前記目標運動として得る仮運動修正手段とを備え、
前記仮運動の任意の時刻ｔに対し、該仮運動によって前記第２動力学モデル上で前記時刻ｔに発生する前記床反力モーメント水平成分M2(t)と前記時刻ｔにおける前記床反力モーメント水平成分の前記目標値MT(t)との差（M2(t)−MT(t)）を床反力モーメント水平成分誤差Merr(t)とし、且つ、該仮運動によって前記第２動力学モデル上で前記時刻ｔに発生する並進床反力水平成分F2(t)と該仮運動によって前記第１動力学モデル上で前記時刻ｔに発生する並進床反力水平成分F1(t)との差（F2(t)−F1(t)）を並進床反力水平成分誤差Ferr(t)としたとき、
前記仮運動修正手段は、前記仮運動の修正後の運動によって前記第１動力学モデル上で前記時刻ｔに発生する前記床反力モーメント水平成分に、前記床反力モーメント水平成分誤差Merr(t)と少なくとも該床反力モーメント水平成分誤差Merr(t)に応じて決定した第１床反力補正量とのいずれかを加えたものが該時刻ｔでの前記目標値に一致し、且つ、前記仮運動の修正後の運動によって前記第１動力学モデル上で前記時刻ｔに発生する並進床反力水平成分に、前記並進床反力水平成分誤差Ferr(t)と少なくとも該並進床反力水平成分誤差Ferr(t)に応じて決定した第２床反力補正量とのいずれかを加えたものが該時刻ｔでの前記許容範囲を満足するように該時刻ｔにおける前記仮運動の瞬時値を修正することを特徴とするものである。
【００１９】
この第２発明は、前記仮運動によって前記第２動力学モデル上で前記時刻ｔに発生する前記床反力モーメント水平成分M2(t)と前記時刻ｔにおける前記床反力モーメント水平成分の前記目標値MT(t)との差（M2(t)−MT(t)）を床反力モーメント水平成分誤差Merr(t)とした点だけが、第１発明と相違するものである。すなわち、前記仮運動は、前記床反力モーメント水平成分の目標値を満足するように生成されるので、この仮運動によって、第１動力学モデル上で発生する床反力モーメント水平成分（仮運動から第１動力学モデル上で算出される床反力モーメント水平成分）は、該目標値に一致もしくはほぼ一致する。そこで、第２発明は、上記の如く構成した。
【００２０】
かかる第２発明によれば、第１発明と同様に、仮運動を修正してなる目標運動は、それと床反力との間の時間的整合性が採れたものとなる。
【００２１】
また、第１発明と同様に、該目標運動によって第１動力学モデル上で発生する床反力モーメント水平成分に、前記床反力モーメント水平成分誤差Merr(t)とこのMerr(t)に応じた前記第１床反力補正量とのいずれかを加えてなる床反力モーメント水平成分M1'(t)が前記目標値を満足し、且つ、該目標運動によって第１動力学モデル上で発生する並進床反力水平成分に、前記並進床反力水平成分誤差Ferr(t)とこのFerr(t)に応じた前記第２床反力補正量とのいずれかを加えてなる並進床反力水平成分F1'(t)が前記許容範囲を満足するように目標運動を決定する（仮運動を修正する）ことによって、該目標値および許容範囲を適切に満足しつつ動力学的精度の高い目標歩容を生成できる。
【００２２】
さらに、第１発明と同様に、前記仮運動およびこの仮運動の修正（目標運動の生成）は、第１動力学モデルで行なわれ、第２動力学モデルは、単に仮運動から床反力を求めるために使用されるので、仮運動と目標運動の生成処理、並びに、仮運動に対する床反力の算出処理を効率よく短時間で行うことができる。
【００２３】
よって、第２発明によれば、第１発明と同様に、ロボットのスリップを防止し得る歩容を効率よく生成できると共に、その歩容の運動と床反力との間の時間的整合性を採りつつ、それらの間の動力学的精度を良好に確保することができる。
【００２４】
また、本発明の移動ロボットの歩容生成装置の第３発明は、前記の目的を達成するために、移動ロボットの目標ＺＭＰと該移動ロボットの運動によって発生する並進床反力水平成分の許容範囲とを設定し、該目標ＺＭＰと並進床反力水平成分の許容範囲とを満足するように、移動ロボットの目標運動を少なくとも含む目標歩容を生成する歩容生成装置において、
前記移動ロボットの所定の第１動力学モデルを用い、該第１動力学モデル上で前記目標ＺＭＰと前記並進床反力水平成分の許容範囲とを満足するように前記目標運動の仮値である仮運動を作成する仮運動作成手段と、前記作成した仮運動を、前記第１動力学モデルと、該第１動力学モデルよりも動力学的精度の高い所定の第２動力学モデルとを用いて修正し、その修正後の運動を前記目標運動として得る仮運動修正手段とを備え、
前記仮運動の任意の時刻ｔに対し、該仮運動から前記第２動力学モデル上で前記時刻ｔに算出されるＺＭＰであるZMP2(t)と該仮運動から前記第１動力学モデル上で前記時刻ｔに算出されるＺＭＰであるZMP1(t)との差（ZMP2(t)−ZMP1(t)）をＺＭＰ誤差ZMPerr(t)とし、且つ、該仮運動によって前記第２動力学モデル上で前記時刻ｔに発生する並進床反力水平成分F2(t)と該仮運動によって前記第１動力学モデル上で前記時刻ｔに発生する並進床反力水平成分F1(t)との差（F2(t)−F1(t)）を並進床反力水平成分誤差Ferr(t)としたとき、
前記仮運動修正手段は、前記仮運動の修正後の運動から前記第１動力学モデル上で前記時刻ｔに算出されるＺＭＰに、前記ＺＭＰ誤差ZMPerr(t)と少なくとも該ＺＭＰ誤差ZMPerr(t)に応じて決定したＺＭＰ補正量とのいずれかを加えたものが該時刻ｔでの前記目標ＺＭＰに一致し、且つ、前記仮運動の修正後の運動によって前記第１動力学モデル上で前記時刻ｔに発生する並進床反力水平成分に、前記並進床反力水平成分誤差Ferr(t)と少なくとも該並進床反力水平成分誤差Ferr(t)に応じて決定した床反力補正量とのいずれかを加えたものが該時刻ｔでの前記許容範囲を満足するように該時刻ｔにおける前記仮運動の瞬時値を修正するものである。
【００２５】
なお、この第３発明において、ロボットの任意の運動に対して、任意の動力学モデル上で目標ＺＭＰを満足するということは、該運動によって該動力学モデル上で発生するロボットの慣性力と該ロボットに作用する重力との合力が目標ＺＭＰまわりに発生するモーメントの水平成分（あるいは、そのモーメントに釣り合う床反力モーメント水平成分）が０もしくはほぼ０になることを意味する。このことは、後述の第４発明においても同様である。
【００２６】
かかる第３発明によれば、前記仮運動作成手段によって、とりあえず、第１動力学モデルを用いて、前記目標ＺＭＰと並進床反力水平成分の許容範囲とを満足するように前記仮運動が生成される。そして、この仮運動が仮運動修正手段により修正され、その修正後の運動が目標運動として得られる。なお、この仮運動は、前記第１発明における床反力モーメントの作用点を目標ＺＭＰとしたときには、該第１発明の仮運動作成手段で作成される仮運動と同等になる。
【００２７】
このとき、仮運動修正手段は、仮運動の修正後の運動によって前記第１動力学モデル上で前記時刻ｔに算出されるＺＭＰに、前記ＺＭＰ誤差ZMPerr(t)と少なくとも該ＺＭＰ誤差ZMPerr(t)に応じて決定したＺＭＰ補正量とのいずれかを加えたものが該時刻ｔでの前記目標ＺＭＰに一致するように時刻ｔにおける仮運動の瞬時値を修正する。なお、このことは、目標ＺＭＰまわりに、ＺＭＰ誤差ZMPerr(t)、あるいはこれに応じた前記ＺＭＰ補正量に相当する床反力モーメント水平成分を発生させることを意味する。同時に、仮運動修正手段は、前記第１発明と同様に、仮運動の修正後の運動によって前記第１動力学モデル上で前記時刻ｔに発生する並進床反力水平成分に、前記並進床反力水平成分誤差Ferr(t)と少なくとも該並進床反力水平成分誤差Ferr(t)に応じて決定した床反力補正量とのいずれかを加えたものが該時刻ｔでの前記許容範囲を満足するように該時刻ｔにおける仮運動の瞬時値を修正する。この場合、時刻ｔでの前記ＺＭＰ誤差ZMPerr(t)は、仮運動から前記第２動力学モデル上で該時刻ｔに算出されるＺＭＰ（ZMP2(t)）と該仮運動から前記第１動力学モデル上で該時刻ｔに算出されるＺＭＰ（ZMP1(t)）との差であるから、その時刻ｔでの仮運動に対応する第１動力学モデル上でのＺＭＰの誤差を意味する。また、第１発明の場合と同様に、時刻ｔでの前記並進床反力水平成分誤差Ferr(t)は、その時刻ｔでの仮運動に対応する第１動力学モデル上での並進床反力水平成分の誤差を意味する。
【００２８】
従って、上記の如く仮運動を修正してなる目標運動は、それと床反力との間の時間的整合性が採れたものとなる。なお、このように仮運動を修正することは、第１発明における床反力モーメントの作用点を目標ＺＭＰとしたとき、該第１発明の仮運動を修正することと等価である。
【００２９】
また、該目標運動から第１動力学モデル上で算出されるＺＭＰに、前記ＺＭＰ誤差ZMPerr(t)とこのZMPerr(t)に応じた前記ＺＭＰ補正量とのいずれかを加えてなるＺＭＰ（ここでは、ZMP1'(t)という）は、該目標運動から第２動力学モデル上で算出されるＺＭＰに近いものとなるので、ZMP1'(t)は目標運動に対する動力学的精度が高い。そして、第１発明の場合と同様に、該目標運動によって第１動力学モデル上で発生する並進床反力水平成分に、前記並進床反力水平成分誤差Ferr(t)とこのFerr(t)に応じた前記床反力補正量とのいずれかを加えてなる並進床反力水平成分F1'(t)も目標運動に対する動力学的精度が高い。このため、これらのZMP1'(t)およびF1'(t)がそれぞれ前記目標ＺＭＰ、許容範囲を満足するように目標運動を決定する（仮運動を修正する）ことによって、該目標ＺＭＰおよび許容範囲を適切に満足しつつ動力学的精度の高い目標歩容を生成できることとなる。
【００３０】
さらに第１発明と同様に、前記仮運動およびこの仮運動の修正（目標運動の生成）は、第１動力学モデルで行なわれ、第２動力学モデルは、単に仮運動から床反力を求めるために使用されるので、仮運動と目標運動の生成処理、並びに、仮運動に対する床反力の算出処理を効率よく短時間で行うことができる。
【００３１】
よって、第３発明によれば、ロボットのスリップを防止し得る歩容を効率よく生成できると共に、その歩容の運動と床反力との間の時間的整合性を採りつつ、それらの間の動力学的精度を良好に確保することができる。
【００３２】
また、本発明の移動ロボットの歩容生成装置の第４発明は、前記の目的を達成するために、移動ロボットの目標ＺＭＰと該移動ロボットの運動によって発生する並進床反力水平成分の許容範囲とを設定し、該目標ＺＭＰと並進床反力水平成分の許容範囲とを満足するように、移動ロボットの目標運動を少なくとも含む目標歩容を生成する歩容生成装置において、
前記移動ロボットの所定の第１動力学モデルを用い、該第１動力学モデル上で前記目標ＺＭＰと前記並進床反力水平成分の許容範囲とを満足するように前記目標運動の仮値である仮運動を作成する仮運動作成手段と、前記作成した仮運動を、前記第１動力学モデルと、該第１動力学モデルよりも動力学的精度の高い所定の第２動力学モデルとを用いて修正し、その修正後の運動を前記目標運動として得る仮運動修正手段とを備え、
前記仮運動の任意の時刻ｔに対し、該仮運動から前記第２動力学モデル上で前記時刻ｔに算出されるＺＭＰであるZMP2(t)と前記時刻ｔでの前記目標ＺＭＰである目標ＺＭＰ(t)との差（ZMP2(t)−目標ＺＭＰ(t)）をＺＭＰ誤差ZMPerr(t)とし、且つ、該仮運動によって前記第２動力学モデル上で前記時刻ｔに発生する並進床反力水平成分F2(t)と該仮運動によって前記第１動力学モデル上で前記時刻ｔに発生する並進床反力水平成分F1(t)との差（F2(t)−F1(t)）を並進床反力水平成分誤差Ferr(t)としたとき、
前記仮運動修正手段は、前記仮運動の修正後の運動から前記第１動力学モデル上で前記時刻ｔに算出されるＺＭＰに、前記ＺＭＰ誤差ZMPerr(t)と少なくとも該ＺＭＰ誤差ZMPerr(t)に応じて決定したＺＭＰ補正量とのいずれかを加えたものが該時刻ｔでの前記目標ＺＭＰ(t)に一致し、且つ、前記仮運動の修正後の運動によって前記第１動力学モデル上で前記時刻ｔに発生する並進床反力水平成分に、前記並進床反力水平成分誤差Ferr(t)と少なくとも該並進床反力水平成分誤差Ferr(t)に応じて決定した床反力補正量とのいずれかを加えたものが該時刻ｔでの前記許容範囲を満足するように該時刻ｔにおける前記仮運動の瞬時値を修正することを特徴とするものである。
【００３３】
この第４発明は、前記仮運動から前記第２動力学モデル上で前記時刻ｔに算出されるＺＭＰであるZMP2(t)と前記時刻ｔでの前記目標ＺＭＰである目標ＺＭＰ(t)との差（ZMP2(t)−目標ＺＭＰ(t)）をＺＭＰ誤差ZMPerr(t)とした点だけが、第３発明と相違するものである。すなわち、前記仮運動は、前記目標ＺＭＰを満足するように生成されるので、この仮運動から第１動力学モデル上で算出されるＺＭＰは、該目標ＺＭＰに一致もしくはほぼ一致する。そこで、第４発明は、上記の如く構成した。
【００３４】
かかる第４発明によれば、第３発明と同様に、仮運動を修正してなる目標運動は、それと床反力との間の時間的整合性が採れたものとなる。
【００３５】
また、第３発明と同様に、該目標運動から第１動力学モデル上で算出されるＺＭＰに、ＺＭＰ誤差ZMPerr(t)とこのZMPerr(t)に応じた前記ＺＭＰ補正量とのいずれかを加えてなるＺＭＰが前記目標ＺＭＰを満足し、且つ、該目標運動によって第１動力学モデル上で発生する並進床反力水平成分に、前記並進床反力水平成分誤差Ferr(t)とこのFerr(t)に応じた前記床反力補正量とのいずれかを加えてなる並進床反力水平成分F1'(t)が前記許容範囲を満足するように目標運動を決定する（仮運動を修正する）ことによって、該目標値および許容範囲を適切に満足しつつ動力学的精度の高い目標歩容を生成できる。
【００３６】
さらに、第３発明と同様に、前記仮運動およびこの仮運動の修正（目標運動の生成）は、第１動力学モデルで行なわれ、第２動力学モデルは、単に仮運動から床反力を求めるために使用されるので、仮運動と目標運動の生成処理、並びに、仮運動に対する床反力の算出処理を効率よく短時間で行うことができる。
【００３７】
よって、第４発明によれば、第３発明と同様に、ロボットのスリップを防止し得る歩容を効率よく生成できると共に、その歩容の運動と床反力との間の時間的整合性を採りつつ、それらの間の動力学的精度を良好に確保することができる。
【００３８】
なお、以上説明した第１〜第４発明において目標歩容に目標運動だけでなく目標床反力を含める場合には、前記第１および第２発明では、例えば前記M1'(t)、F1'(t)を目標床反力の構成要素とし、また、前記第３および第４発明では、例えば前記ZMP1'(t)、F1'(t)を目標床反力の構成要素とすればよい。あるいは、前記第１および第２発明では、M2(t)、F2(t)を目標床反力の構成要素とし、前記第３および第４発明では、ZMP2(t)、F2(t)を目標床反力の構成要素としてもよい。
【００３９】
また、第１〜第４発明では、それにより生成した目標歩容を前記特許文献２，３のものの如く、フルモデル（第３動力学モデル）を用いてさらに補正するようにしてもよい。この場合、第１〜第４発明で生成される目標歩容は、動力学的精度が高いので、フルモデルにおける歩容の発散が生じにくい。このため、目標ＺＭＰ軌道の修正量、あるいは、目標ＺＭＰまわりの床反力モーメントが過大になるのを防止し、ロボットの安定余裕を高く保つことができる。
【発明を実施するための最良の形態】
【００４０】
以下、添付図面を参照して本発明の実施形態を説明する。尚、本明細書の実施形態では、移動ロボットとしては２足移動ロボットを例にとる。【００４１】
図１は、本発明の実施形態を適用する２足移動ロボットの全体的構成の概略を示す概略図である。【００４２】
図示の如く、２足移動ロボット（以下、ロボットという）１は上体(ロボット１の基体）３から下方に延設された左右一対の脚体（脚部リンク）２，２を備える。両脚体２，２は同一構造であり、それぞれ６個の関節を備える。その６個の関節は上体３側から順に、股（腰部）の回旋（回転）用（上体３に対するヨー方向の回転用）の関節１０Ｒ，１０Ｌと、股（腰部）のロール方向（Ｘ軸まわり）の回転用の関節１２Ｒ，１２Ｌと、股（腰部）のピッチ方向（Ｙ軸まわり）の回転用の関節１４Ｒ，１４Ｌ、膝部のピッチ方向の回転用の関節１６Ｒ，１６Ｌと、足首のピッチ方向の回転用の関節１８Ｒ，１８Ｌと、足首のロール方向の回転用の関節２０Ｒ，２０Ｌとから構成される。なお、本明細書において、符号Ｒ，Ｌはそれぞれロボット１の右側、左側に対応するものであることを意味する符号である。【００４３】
各脚体２の足首の２つの関節１８Ｒ（Ｌ），２０Ｒ（Ｌ）の下部には、各脚体２の先端部を構成する足平（足部）２２Ｒ（Ｌ）が取着されると共に、両脚体２，２の最上位には、各脚体２の股の３つの関節１０Ｒ（Ｌ），１２Ｒ（Ｌ），１４Ｒ（Ｌ）を介して前記上体３が取り付けられている。上体３の内部には、詳細を後述する制御ユニット６０などが格納される。なお、図１では図示の便宜上、制御ユニット６０を上体３の外部に記載している。【００４４】
上記構成の各脚体２においては、股関節（あるいは腰関節）は関節１０Ｒ（Ｌ），１２Ｒ（Ｌ），１４Ｒ（Ｌ）から構成され、膝関節は関節１６Ｒ（Ｌ）から構成され、足首関節は関節１８Ｒ（Ｌ），２０Ｒ（Ｌ）から構成される。また股関節と膝関節とは大腿リンク２４Ｒ（Ｌ）で連結され、膝関節と足首関節とは下腿リンク２６Ｒ（Ｌ）で連結される。【００４５】
上体３の上部の両側部には左右一対の腕体５，５が取り付けられると共に、上体３の上端部には頭部４が配置される。各腕体５は、３つの関節３０Ｒ（Ｌ），３２Ｒ（Ｌ），３４Ｒ（Ｌ）から構成された肩関節と、関節３６Ｒ（Ｌ）から構成された肘関節と、関節３８Ｒ（Ｌ）から構成された手首関節と、この手首関節に連結された手先部４０Ｒ（Ｌ）とを備えている。肩関節と肘関節との間、および肘関節と手首関節との間はそれぞれ剛体状のリンクで構成されている。【００４６】
上記のロボット１の構成により、各脚体２の足平２２Ｒ（Ｌ）は、上体３に対して６つの自由度を与えられている。そして、ロボット１の歩行等の移動中に、両脚体２，２を合わせて６＊２＝１２個（この明細書で「＊」はスカラに対する演算としては乗算を、ベクトルに対する演算としては外積を示す）の関節を適宜な角度で駆動することで、両足平２２Ｒ，２２Ｌの所望の運動を行うことができる。これにより、ロボット１は任意に３次元空間を移動することができる。また、各腕体５は、その肩関節、肘関節、手首関節の回転によって、腕振り等の運動を行うことができる。【００４７】
図１に示す如く、各脚体２の足首関節１８Ｒ（Ｌ），２０Ｒ（Ｌ）の下方には足平２２Ｒ（Ｌ）との間に公知の６軸力センサ５０が介装されている。該６軸力センサ５０は、各脚体２の足平２２Ｒ（Ｌ）の着地の有無、および各脚体２に作用する床反力（接地荷重）等を検出するためのものであり、該床反力の並進力の３方向成分Ｆｘ，Ｆｙ，Ｆｚ並びにモーメントの３方向成分Ｍｘ，Ｍｙ，Ｍｚの検出信号を制御ユニット６０に出力する。また、上体３には、Ｚ軸（鉛直方向（重力方向））に対する上体３の傾斜角およびその角速度を検出するための姿勢センサ５４が備えられ、その検出信号が該姿勢センサ５４から制御ユニット６０に出力される。この姿勢センサ５４は、図示を省略する加速度センサおよびジャイロセンサを備え、これらのセンサの検出信号が上体３の姿勢角（傾斜角）およびその角速度を検出するために用いられる。また、詳細構造の図示は省略するが、ロボット１の各関節には、それを駆動するための電動モータ６４（図３参照）と、その電動モータ６４の回転量（各関節の回転角）を検出するためのエンコーダ（ロータリエンコーダ）６５（図３参照）とが設けられ、該エンコーダ６５の検出信号が該エンコーダ６５から制御ユニット６０に出力される。【００４８】
さらに、図１では図示を省略するが、ロボット１の外部には、ロボット１を操縦するためのジョイスティック（操作器）７３（図３参照）が設けられ、そのジョイスティック７３を操作することで、直進移動しているロボット１を旋回させるなどロボット１の移動方向を指定する、ロボット１の歩行、走行などの運動形態および床面の摩擦状態（路面状態）を指定するなど、ロボット１の歩容に対する要求もしくは制約条件を必要に応じて制御ユニット６０に入力できるように構成されている。ジョイスティック７３は有線もしくは無線により制御ユニット６０との通信が可能とされている。【００４９】
図２は本実施形態における各脚体２の先端部分（各足平２２Ｒ（Ｌ）を含む）の基本構成を概略的に示す図である。同図に示すように、各足平２２Ｒ（Ｌ）の上方には、前記６軸力センサ５０との間にばね機構７０が装備されると共に、足底（各足平２２Ｒ，Ｌの底面）にはゴムなどからなる足底弾性体７１が貼られている。これらのばね機構７０及び足底弾性体７１によりコンプライアンス機構７２が構成されている。詳細な図示は省略するが、ばね機構７０は、足平２２Ｒ（Ｌ）の上面部に取り付けられた方形状のガイド部材（図示省略）と、足首関節１８Ｒ（Ｌ）（図２では足首関節２０Ｒ（Ｌ）を省略している）および６軸力センサ５０側に取り付けられ、前記ガイド部材に弾性材（ゴムやばね）を介して微動自在に収納されるピストン状部材（図示省略）とから構成されている。【００５０】
図２に実線で表示された足平２２Ｒ（Ｌ）は、床反力を受けていないときの状態を示している。各脚体２が床反力を受けると、コンプライアンス機構７２のばね機構７０と足底弾性体７１とがたわみ、足平２２Ｒ（Ｌ）は図中に点線で例示したような位置姿勢に移る。このコンプラインアス機構７２の構造は、着地衝撃を緩和するためだけでなく、制御性を高めるためにも重要なものである。その詳細は、例えば本出願人が先に提案した特開平５−３０５５８４号公報に詳細に説明されているので、本明細書でのさらなる説明は省略する。【００５１】
図３は制御ユニット６０の構成を示すブロック図である。該制御ユニット６０はマイクロコンピュータにより構成されており、ＣＰＵからなる第１の演算装置９０及び第２の演算装置９２、Ａ／Ｄ変換器８０、カウンタ８６、Ｄ／Ａ変換器９６、ＲＡＭ８４、ＲＯＭ９４、並びにこれらの間のデータ授受を行うバスライン８２を備えている。この制御ユニット６０では、各脚体２の６軸力センサ５０、姿勢センサ５４（加速度センサおよびレートジャイロセンサ）、ジョイスティック７３等の出力信号はＡ／Ｄ変換器８０でデジタル値に変換された後、バスライン８２を介してＲＡＭ８４に送られる。またロボット１の各関節のエンコーダ６５（ロータリーエンコーダ）の出力は、カウンタ８６を介してＲＡＭ８４に入力される。【００５２】
前記第１の演算装置９０は後述の如く目標歩容を生成すると共に、関節角変位指令（各関節の変位角もしくは各電動モータ６４の回転角の指令値）を算出し、ＲＡＭ８４に送出する。また、第２の演算装置９２はＲＡＭ８４から関節角変位指令と、前記エンコーダ６５の出力信号に基づいて検出された関節角の実測値とを読み出し、各関節の駆動に必要な操作量を算出して、その操作量をＤ／Ａ変換器９６とサーボアンプ６４ａとを介して各関節を駆動する電動モータ６４に出力する。【００５３】
図４は、本明細書の実施形態におけるロボット１の制御ユニット６０の主な機能的構成を示すブロック図である。この図４中の「実ロボット」の部分以外の部分が制御ユニット６０が実行する処理機能（主として第１の演算装置９０及び第２の演算装置９２の機能）によって構成されるものである。その処理機能は、制御ユニット６０に実装されたプログラム等によって実現されている。尚、以下の説明では、ロボット１の各部（脚体２、腕体５など）の左右を特に区別する必要がないときは、前記符号Ｒ，Ｌを省略する。【００５４】
以下説明すると、制御ユニット６０は、後述の如く目標歩容を自在かつリアルタイムに生成して出力する歩容生成装置１００を備えている。この歩容生成装置１００は、その機能によって本発明の実施形態を実現するものである。この歩容生成装置１００が出力する目標歩容は、補正目標上体姿勢軌道（上体３の目標姿勢の軌道）、補正目標上体位置軌道（上体３の目標位置の軌道）、目標足平位置姿勢軌道（各足平２２の目標位置及び目標姿勢の軌道）、目標腕姿勢軌道（各腕体の目標姿勢の軌道）、目標ＺＭＰ（目標全床反力中心点）軌道、目標ＺＭＰまわりの補正目標床反力モーメント軌道および目標全床反力軌道から構成される。尚、脚体２や腕体５以外に、上体３に対して可動な部位（頭部など）を備える場合には、その可動部位の目標位置姿勢軌道が目標歩容に加えられる。【００５５】
ここで、本明細書での歩容に関する基本的な用語の定義などについて説明しておく。歩容における「軌道」は時間的変化のパターン（時系列パターン）を意味し、「軌道」の代わりに「パターン」と称することもある。また、「姿勢」は空間的な向きを意味する。例えば上体姿勢はＺ軸（鉛直軸）に対するロール方向（Ｘ軸まわり）の上体３の傾斜角（姿勢角）とピッチ方向（Ｙ軸まわり）の上体３の傾斜角（姿勢角）とで表され、足平姿勢は各足平２２に固定的に設定された２軸の空間的な方位角で表される。本明細書では、上体姿勢は上体姿勢角ということもある。なお、腕体５に関する目標腕姿勢は、本明細書の実施形態では上体３に対する相対姿勢で表される。【００５６】
上体位置は、上体３のあらかじめ定めた代表点（上体３に対して任意に固定設定したローカル座標系でのある固定点）の位置を意味する。同様に、足平位置は、各足平２２のあらかじめ定めた代表点（各足平２２に対して任意に固定設定したローカル座標系での固定点）の位置を意味する。例えば各足平２２の代表点は、各足平２２の底面上（より具体的には各脚体２の足首関節の中心から各足平２２の底面への垂線が該底面と交わる点等）に設定される。【００５７】
上体３に関する前記補正目標上体姿勢および補正目標上体位置は、ある基本となる目標上体姿勢（仮目標上体姿勢）および目標上体位置（仮目標上体位置）を補正したものである。本明細書の実施形態では、基本となる目標上体位置姿勢は、後述する単純化モデル歩容生成部で決定される目標上体位置姿勢（後述の図１０のＳ０３２で決定される目標上体位置姿勢）が相当する。【００５８】
なお、以降の説明では、誤解を生じるおそれがない場合には、しばしば「目標」を省略する。【００５９】
歩容のうちの、床反力に係わる構成要素以外の構成要素、すなわち足平位置姿勢、上体位置姿勢等、ロボット１の各部位の位置姿勢に関する構成要素を総称的に「運動」という。また、各足平２２に作用する床反力（並進力及びモーメントからなる床反力）を「各足平床反力」と呼び、ロボット１の全て（２つ）の足平２２Ｒ，２２Ｌについての「各足平床反力」の合力を「全床反力」という。ただし、以下の説明においては、各足平床反力はほとんど言及しないので、特に断らない限り、「床反力」は「全床反力」と同義として扱う。【００６０】
目標床反力は、一般的には、作用点とその点に作用する並進力及びモーメントによって表現される。作用点はどこにとっても良いので、同一の目標床反力でも無数の表現が考えられるが、特に目標床反力中心点（全床反力の中心点の目標位置）を作用点にして目標床反力を表現すると、目標床反力のモーメント成分は、鉛直成分（鉛直軸（Ｚ軸）まわりのモーメント成分）を除いて零になる。換言すれば、目標床反力中心点まわりの目標床反力のモーメントの水平成分（水平軸（Ｘ軸及びＹ軸）まわりのモーメント）は零になる。【００６１】
なお、動力学的平衡条件を満足する歩容では、ロボット１の目標運動軌道から算出されるＺＭＰ（目標運動軌道から算出される慣性力と重力との合力がその点まわりに作用するモーメントが、鉛直成分を除いて零になる点）と目標床反力中心点とは一致することから、目標床反力中心点軌道の代わりに目標ＺＭＰ軌道を与えると言っても同じことである。【００６２】
ここで、ロボット１の歩行を行う場合には、例えば本出願人が先に特開平１０−８６０８０号公報で提案した上体高さ決定手法によってロボット１の上体３の鉛直位置（上体高さ）が決定されると、並進床反力鉛直成分は従属的に決定される。さらに、目標歩容の運動による慣性力と重力との合力が目標ＺＭＰまわりに発生するモーメントの水平成分が０になるようにロボット１の上体水平位置軌道（あるいは全体重心の位置軌道）を決定することで、並進床反力水平成分も従属的に決定される。このため、ロボット１の歩行を行う場合には、目標歩容の床反力に関して明示的に設定すべき物理量としては、目標ＺＭＰだけでもよい。【００６３】
一方、床反力が０もしくはほぼ０になるような時期を伴う歩容でのロボット１の移動、例えばロボット１の走行を行う場合には、並進床反力鉛直成分もロボット１の動作制御上重要である。このため、並進床反力鉛直成分の目標軌道を明示的に設定した上で、ロボット１の目標上体鉛直位置等の軌道を決定することが望ましい。また、ロボット１の歩行においても、摩擦係数が低い床面上（低ミュー路上）でロボット１を移動させるような場合には、並進床反力鉛直成分（より厳密には並進床反力の床面に垂直な成分）が摩擦力に影響を及ぼすことから、ロボット１のスリップなどを防止する上で、並進床反力鉛直成分の目標軌道を明示的に設定することが望ましい。さらに、本発明の実施形態では、最終的に歩容生成装置１００が出力する目標歩容では、目標ＺＭＰまわりに補正目標床反力モーメント（水平成分が０とは限らないモーメント）を発生させる。【００６４】
このようなことから、本明細書の実施形態では、歩容生成装置１００が出力する目標歩容の床反力に関する構成要素として、目標ＺＭＰ軌道のほか、目標ＺＭＰまわりの補正目標床反力モーメントと、目標並進床反力鉛直成分とを含ませている。【００６５】
そして、本明細書では、歩容生成装置１００が出力する目標歩容は、広義には、「１歩ないしは複数歩の期間の目標運動軌道と目標床反力軌道との組」の意味で使用され、狭義には、「１歩の期間の目標運動軌道と、目標ＺＭＰ、補正目標床反力モーメント及び目標並進床反力鉛直成分を含む目標床反力軌道との組」の意味で使用される。【００６６】
但し、本明細書の実施形態においては、最終的な目標歩容（歩容生成装置１００が出力する目標歩容）を決定するまでの過程で作成する目標歩容（仮目標歩容）では、上記狭義の目標歩容から、補正目標床反力モーメントを除いたものが目標歩容の意味で使用される。補足すると、本明細書の実施形態では、最終的な目標歩容（歩容生成装置１００が出力する目標歩容）を決定するまでの過程で作成する目標歩容（仮目標歩容）が本発明に密接に関連するものとなっている。このため、以降の説明で現れる目標歩容の大部分は、前記狭義の目標歩容から、補正目標床反力モーメントを除いたものの意味で使用される。【００６７】
なお、以降の説明では、「床反力鉛直成分」は「並進床反力鉛直成分」を意味するものとし、床反力のうちのモーメントの鉛直成分（鉛直軸回り成分）は、「モーメント」という用語を用いて「床反力鉛直成分」と区別をする。同様に、「床反力水平成分」は「並進床反力水平成分」を意味するものとする。並進床反力は、床反力並進力成分ということもある。【００６８】
また、目標歩容の「１歩」は、ロボット１の片方の脚体２が着地してからもう一方の脚体２が着地するまでの意味で使用する。【００６９】
また、歩容における両脚支持期とは、ロボット１がその自重を両脚体２，２で支持する期間、片脚支持期とはいずれか一方のみの脚体２でロボット１の自重を支持する期間、空中期とは両脚体２，２が床から離れている（空中に浮いている）期間を言う。片脚支持期においてロボット１の自重を支持しない側の脚体２を遊脚と呼ぶ。なお、片脚支持期と空中期とが交互に繰り返されるロボット１の走行歩容では両脚支持期は無い。この場合、空中期では両脚２，２とも、ロボット１の自重を支持しないこととなるが、便宜上、該空中期の直前の片脚支持期において遊脚であった脚体２、支持脚であった脚体２をそれぞれ該空中期においても遊脚、支持脚と呼ぶ。【００７０】
また、目標歩容の軌道は、グローバル座標系（床に固定された座標系）で記述される。グローバル座標系としては、例えば支持脚足平２２の着地位置姿勢に対応して定まる支持脚座標系が用いられる。この支持脚座標系は、例えば支持脚足平２２の底面のほぼ全面を床に接地した状態で、その足平２２が連結された足首関節の中心から床面に延ばした垂線が床と交わる点を原点とし、その原点を通る水平面に支持脚足平２２を投影したときの該足平２２の前後方向をＸ軸方向、左右方向をＹ軸方向とする座標系（Ｚ軸方向は鉛直方向）である。以降の説明では、特にことわらない限り、Ｘ、Ｙ、Ｚ座標は、この支持脚座標系の座標を意味する。【００７１】
図５は、歩容生成装置１００の詳細を示すブロック図である。この図５を参照して、歩容生成装置１００の処理のより具体的な概要を以下に説明する。【００７２】
図示の如く、歩容生成装置１００は歩容パラメータ決定部１００ａを備える。歩容パラメータ決定部１００ａは、目標歩容を規定する歩容パラメータの値あるいは時系列テーブルを決定する。【００７３】
本明細書の実施形態では、歩容パラメータ決定部１００ａが決定する歩容パラメータには、目標歩容のうちの、目標足平位置姿勢軌道、目標腕姿勢軌道、目標ＺＭＰ軌道、および目標床反力鉛直成分軌道をそれぞれ規定するパラメータが含まれる。【００７４】
ここで、歩容生成装置１００が目標歩容を生成するとき、遊脚足平２２の着地予定位置姿勢、着地予定時刻、あるいは歩幅、移動速度等の歩容生成用の基本的な要求値（要求パラメータ）が、前記ジョイスティック７３、もしくは図示しない行動計画部（ロボット１の行動計画を作成する装置）などの装置から歩容生成装置１００に与えられる。あるいは、上記要求パラメータをあらかじめ記憶保持した記憶媒体から該要求パラメータを歩容生成装置１００が読み込む。そして、歩容生成装置１００の歩容パラメータ決定部１００ａは、その要求パラメータに応じて歩容パラメータを決定する。【００７５】
また、本明細書の実施形態では、歩容パラメータ決定部１００ａが決定する歩容パラメータには、基準上体姿勢軌道、ＺＭＰ許容範囲、床反力水平成分許容範囲をそれぞれ規定するパラメータも含まれる。【００７６】
ここで、前記基準上体姿勢軌道は、最終的に歩容生成装置１００が出力するものではないが、目標歩容を決定するときに参酌されるものである。この基準上体姿勢軌道は、ロボット１の上体姿勢に関して、前記ジョイスティック７３あるいは行動計画部から与えられ、もしくはあらかじめ定められた要求（上体姿勢を鉛直姿勢に保つなどの要求）にそのまま従って生成される上体姿勢軌道である。目標上体姿勢（以降、「基準」が付いていない「上体姿勢」は、目標上体姿勢を表す）は、基準上体姿勢に長期的に追従するか、または一致するように生成される。【００７７】
また、前記ＺＭＰ許容範囲に関して補足すると、本明細書の実施形態では、目標歩容は、目標ＺＭＰのまわりに補正目標床反力モーメント（これは一般には０ではない）を発生するように修正される。したがって、目標ＺＭＰは、本来の定義（床反力モーメント水平成分が０である点という定義）とは異なる点となり、本来の定義を満足するＺＭＰ（以下、真のＺＭＰという）は、補正目標床反力モーメントを目標床反力鉛直成分で割った値だけ目標ＺＭＰからずれた位置に移る。【００７８】
修正された歩容（歩容生成装置１００が最終的に出力する目標歩容）の真のＺＭＰは、少なくともＺＭＰ存在可能範囲（いわゆる支持多角形のこと。床と足平２２の底面との間に粘着力が作用しないと仮定した場合における床反力作用点（ＺＭＰ）の存在可能範囲）内になければならない。さらにロボット１の安定余裕を十分にとるためには、修正された歩容の真のＺＭＰは、ＺＭＰ存在可能範囲のなかの中心付近の範囲にあることが望ましい。そこで、本明細書の実施形態では修正された歩容の真のＺＭＰが存在できる許容範囲を設定する。この範囲をＺＭＰ許容範囲と呼ぶ。ＺＭＰ許容範囲は、ＺＭＰ存在可能範囲と一致あるいはＺＭＰ存在可能範囲内に包含されるように設定される。【００７９】
なお、前記したように、目標ＺＭＰまわりの補正目標床反力モーメントを目標床反力鉛直成分で除算したものが、目標ＺＭＰに対する真のＺＭＰの位置のずれ量を表すので、目標ＺＭＰまわりの補正目標床反力モーメントを設定する代わりに、目標ＺＭＰに対する真のＺＭＰの位置のずれ量（補正目標床反力モーメントのＺＭＰ換算値）を設定してもよい。また、ＺＭＰ許容範囲は、その境界の位置に目標床反力鉛直成分を乗算することで、補正目標床反力モーメント許容範囲に変換することができ、その補正目標床反力モーメント許容範囲をＺＭＰ許容範囲の代わりに設定するようにしてもよい。【００８０】
また、前記床反力水平成分許容範囲は、ロボット１の足平２２の床との接地面に、足平２２が滑らないような大きさの摩擦力を発生させ得る床反力水平成分の許容範囲である。本明細書の実施形態では、少なくとも最終的に歩容生成装置１００が出力する目標歩容の運動（目標運動）は、それによって発生するロボット１の慣性力の水平成分に釣り合う床反力水平成分が床反力水平成分許容範囲内に収まるように（床反力水平成分許容範囲を満足するように）生成される。【００８１】
なお、本明細書の実施形態で設定する床反力水平成分許容範囲は、後述のＳ０２２の処理で設定される定常歩容用のものと、Ｓ０２６の処理で設定される基本歩容用のものと、Ｓ０３０で設定される歩容補正用（フルモデル補正用）のものとがある。ただし、これらの床反力水平成分許容範囲は必ずしも互いに異なる必要はなく、同一でもよい。一方、ＺＭＰ許容範囲は、Ｓ０３０処理で設定される歩容補正用（フルモデル補正用）のものだけである。【００８２】
補足すると、目標歩容を生成するための歩容パラメータには、上記したパラメータ以外のパラメータも含まれる。それらは、歩容パラメータ決定部１００ａの中で、所要の境界条件を満たすように決定される。【００８３】
歩容パラメータ決定部１００ａで決定された歩容パラメータは目標瞬時値発生部１００ｂに入力される。目標瞬時値発生部１００ｂは入力された歩容パラメータに基づき、基準上体姿勢、目標足平位置姿勢、目標ＺＭＰ、目標床反力鉛直成分、ＺＭＰ許容範囲、床反力水平成分許容範囲等、目標歩容の一部の構成要素（目標上体位置姿勢を除く）の瞬時値（前記制御ユニット６０の所定の制御処理周期毎の値）を逐次算出（発生）する。また、目標瞬時値発生部１００ｂは、並進床反力（床反力の並進力成分）誤差軌道（詳しくは並進床反力水平成分の誤差の瞬時値の時系列）および床反力モーメント誤差軌道（詳しくは目標ＺＭＰまわりの床反力モーメントの水平成分の誤差の瞬時値の時系列）も出力する。これらの誤差軌道は、歩容の運動によって後述のセミフルモデル（第２動力学モデル）で発生する床反力に対する、後述の単純化モデル（第１動力学モデル）で発生する床反力の誤差の時系列パターンに相当するものである。【００８４】
目標瞬時値発生部１００ｂで算出された目標瞬時値は、単純化モデル歩容生成部１００ｃに入力される。単純化モデル歩容生成部１００ｃは、入力された目標瞬時値を基に、ロボット１の運動と床反力との関係を近似表現する動力学モデルとしての後述の単純化モデル（第１動力学モデル）とセミフルモデル（第２動力学モデル）とを用いて目標上体位置姿勢（後述のフルモデル補正部にとっての仮目標上体位置姿勢）の瞬時値を算出する。なお、ここで使用する単純化モデルは、目標瞬時値発生部１００ｂで使用するものと同一である。単純化モデル歩容生成部１００ｃは、目標ＺＭＰまわりの床反力モーメントと並進床反力とに関する所要の動力学的条件が満たされるように目標上体位置姿勢の瞬時値を算出する。その動力学的条件は、歩容の運動によって単純化モデル上で発生する目標ＺＭＰまわりの床反力モーメント水平成分を床反力モーメント誤差に応じて修正してなる床反力モーメント水平成分が、目標ＺＭＰまわりの床反力モーメント水平成分の本来の目標値である目標床反力モーメント水平成分（＝０）に一致もしくはほぼ一致し、また、歩容の運動によって単純化モデル上で発生する並進床反力水平成分を前記並進床反力誤差に応じて修正してなる並進床反力水平成分が、床反力水平成分許容範囲を満足するという条件である。補足すると、本明細書の実施形態では、目標床反力鉛直成分軌道を明示的に設定するので、目標上体位置姿勢の瞬時値は、目標運動によって発生する慣性力と重力との合力の並進力鉛直成分（換言すれば、ロボット１の全体重心の鉛直方向の並進運動に伴う慣性力と重力との合力）が目標床反力鉛直成分に釣り合うという動力学的条件も満足するように決定される。【００８５】
単純化モデル歩容生成部１００ｃの演算処理により、目標上体位置姿勢を含む目標歩容（仮目標歩容）の瞬時値が逐次決定されていくこととなる。以降、単純化モデル歩容生成部１００ｃで求められた目標上体位置姿勢を構成要素とする目標歩容を単純化モデル歩容という。【００８６】
単純化モデル歩容生成部１００ｃで求められた目標上体位置姿勢を含む単純化モデル歩容は、フルモデル補正部１００ｄに入力される。このフルモデル補正部１００ｄは、単純化モデル歩容の目標上体位置姿勢を、動力学的精度の高い動力学モデルとしてのフルモデルを用いて補正してなる補正目標上体位置姿勢を算出すると共に、目標ＺＭＰまわりの床反力モーメント水平成分の目標値である補正目標床反力モーメントを算出する。【００８７】
フルモデル補正部１００ｄは、より一般的には、次のD1〜D3の条件を満足するように、E1あるいはE2の処理を実行する。すなわち、フルモデル補正部１００ｄは、
D1）単純化モデルを用いて生成した歩容（単純化モデル歩容）を変位次元補正用モデルを用いて修正してなる歩容（以降、変位次元補正歩容と呼ぶ）よりも高い精度で動力学的平衡条件を満足する。
D2）真のＺＭＰ（目標ＺＭＰのまわりに補正目標床反力モーメントを発生させることによって修正された本来の定義を満足するＺＭＰ）は、ＺＭＰ許容範囲（安定余裕が十分維持できる許容範囲）に存在する。
D3）床反力水平成分は床反力水平成分許容範囲内になる。
という条件を満足するように、
E1）単純化モデル歩容の上体位置姿勢を補正する。
あるいは
E2）単純化モデル歩容の上体位置姿勢を補正すると共に、目標ＺＭＰまわりの補正目標床反力モーメントを出力する（目標床反力を補正する）。【００８８】
本明細書の実施形態では、D1〜D3の条件を満足するように、E2の処理が実行される。なお、本明細書の実施形態におけるフルモデル補正部１００ｄの処理は、例えば本願出願人が先に提案したＰＣＴ国際公開公報ＷＯ／０３／０５７４２７／Ａ１にて詳細に説明されているもの（具体的には、同公報の図１３のＳ０３８の処理）と同じである。従って、本明細書でのフルモデル補正部１００ｄの処理の詳細な説明は省略する。【００８９】
また、本明細書の実施形態では、フルモデル補正部１００ｄによる補正を行うが、その補正を省略し、単純化モデル歩容の瞬時値をそのまま歩容生成装置１００から出力するようにしてもよい。【００９０】
補足すると、本明細書の実施形態では、歩容パラメータ決定部１００ａ、目標瞬時値発生部１００ｂおよび単純化モデル歩容生成部１００ｃが、本発明の中核に係わる処理を実行するものとなっている。【００９１】
図４に戻って、上述のように決定される補正目標上体位置姿勢、目標ＺＭＰまわりの補正目標床反力モーメント、目標足平位置姿勢の瞬時値を含む目標歩容の瞬時値は、複合コンプライアンス制御装置１０１（図４で破線で囲んだ部分）に入力される。この複合コンプライアンス制御装置１０１では、ロボット１のバランスを保ちつつ、目標歩容に追従するように関節アクチュエータ（電動モータ６４）が制御される。なお、複合コンプライアンス制御装置１０１のより具体的な処理は後述する。【００９２】
次に、本発明の実施形態をさらに具体的に説明していく。本実施形態では、歩容生成装置１００は、前記制御ユニット６０の制御処理周期毎に、以下に詳説する第１動力学モデルとしての単純化モデルと第２動力学モデルとしてのセミフルモデルとを用いて、目標歩容の瞬時値を決定する。【００９３】
ここで、本実施形態で歩容生成に用いられる上体運動モードと動力学モデルとについて説明する。【００９４】
走行など、空中期がある歩容や、低摩擦床面での歩行においては、単に上体水平加速度を調整するだけでは、目標歩容の床反力水平成分が許容範囲内（あるいは摩擦限界内）に存在しつつ動力学的平衡条件を満足することができない場合がある。そこで、本実施形態では、以下に説明する上体３の２つの運動モード（上体並進モード及び上体回転モード）を複合的に発生させることにより、目標歩容の床反力水平成分が許容範囲内（あるいは摩擦限界内）に存在しつつ動力学的平衡条件を満足するようにしている。【００９５】
図６（ａ）のように、ある運動状態から、上体水平加速度だけを摂動させると、全体重心水平加速度と全体重心まわりの角運動量が摂動する。すなわち、上体水平加速度の摂動は、（それによって発生する慣性力と重力の合力に対して動力学的に釣り合う）床反力鉛直成分を摂動させずに、目標ＺＭＰまわりの床反力モーメント（ただし鉛直軸まわり成分を除く）と床反力水平成分（厳密には、並進床反力水平成分）とを摂動させる。この運動モードを上体並進モードと呼ぶ。【００９６】
言いかえると、床反力鉛直成分を変化させずに、目標ＺＭＰまわりの床反力モーメントの水平成分と床反力水平成分（並進床反力水平成分）を変化させる運動を上体並進モードと呼ぶ。【００９７】
この時の単位加速度当たりの床反力モーメント成分の変化をΔMｐ、単位加速度当たりの床反力水平成分の変化をΔFpとする。図６（ａ）に示す状況で上体３を前方に水平加速すると、ΔMｐとΔFpは図６（ａ）に示す矢印の向きに作用する。【００９８】
感覚的に判り易くするために、運動によって発生する慣性力と重力の合力に釣り合う床反力を用いて表現したが、慣性力と重力の合力を用いて表現した方が、理論的には的確である。なお、上記合力と床反力は、互いに大きさが同じで向きが逆になっている。【００９９】
一方、図６（ｂ）のように、ある運動状態から、ある点Ｐｒまわりに上体姿勢角加速度を摂動させると、全体重心は摂動せずに、全体重心まわりの角運動量が摂動する。すなわち、点Ｐｒまわりの上体姿勢角加速度摂動は、床反力鉛直成分と床反力水平成分（厳密には、並進床反力鉛直成分と並進床反力水平成分）を摂動させずに、目標ＺＭＰまわりの床反力モーメントの水平成分を摂動させる。この運動モードを上体回転モードと呼ぶ。【０１００】
言いかえると、床反力鉛直成分と床反力水平成分を変化させずに、目標ＺＭＰまわりの床反力モーメントの水平成分を変化させる運動を上体回転モードと呼ぶ。【０１０１】
この時の単位角加速度当たりの床反力モーメント成分の変化をΔMｒ、単位角加速度当たりの床反力の水平成分の変化をΔFｒとする。ΔFｒは零である。図６（ｂ）に示す状況で上体が前傾するように角加速度を与えると、ΔMｒは図６（ｂ）に示す矢印の向きに作用する。【０１０２】
上体３の運動には、上体並進モードと上体回転モード以外に、上体鉛直移動モードがある。これは、上体３を鉛直方向に移動させる運動である。【０１０３】
本実施形態においては、前記単純化モデル歩容生成部１００ｃで単純化モデルが用いられると共に、歩容パラメータ決定部１００ａおよび目標瞬時値発生部１００ｂの処理で、単純化モデルと、セミフルモデルとが用いられる。以下にこれらの動力学モデルを説明する。
【０１０４】
図７に、単純化モデルの構造例を示す。図示の如く、この単純化モデルはロボット１の各脚体２にそれぞれ対応する２つの質点（足平質点）２ｍ，２ｍ、及び上体３に対応する質点（上体質点）２４ｍからなる合計３質点と、イナーシャがあって質量のないフライホイールＦＨとから構成されるモデルである。この単純化モデルは、本願出願人が例えば先に提案したＰＣＴ国際公開公報ＷＯ／０３／０５７４２７／Ａ１に例示した動力学モデルである。従って、本明細書での詳細な説明は省略するが、単純化モデルの動力学は、次のように変数を定義したとき、式１ａ〜１ｃにより表される。なお、ここでは、本明細書の理解を容易にするために、サジタルプレーン（前後軸（Ｘ軸）と鉛直軸（Ｚ軸）を含む平面）での運動方程式（動力学方程式）のみを記述し、ラテラルプレーン（左右軸（Ｙ軸）と鉛直軸（Ｚ軸）を含む平面）での運動方程式を省略する。
Ｚsup：支持脚質点鉛直位置、Ｚswg：遊脚質点鉛直位置、Ｚb：上体質点鉛直位置、ＺGtotal：全体重心鉛直位置、Ｘsup：支持脚質点水平位置、Ｘswg：遊脚質点水平位置、Ｘb：上体質点水平位置、ＸGtotal：全体重心水平位置、θby：鉛直方向に対するＹ軸回りの上体姿勢角（傾斜角）、mb：上体質点質量、msup：支持脚質点質量、mswg：遊脚質点質量、mtotal：ロボット総質量（＝mb＋msup＋mswg）、Ｊ：上体慣性モーメント（上体回転モードにおける等価慣性モーメント）、Fx：床反力水平成分（詳しくは並進床反力の前後方向（Ｘ軸）成分）、Fz：床反力鉛直成分（詳しくは並進床反力の鉛直方向（Ｚ軸）成分）、My：目標ＺＭＰまわりの床反力モーメント（詳しくは床反力モーメントの左右軸（Ｙ軸）まわり成分）、ｇ：重力加速度。なお、任意の変数Ｘに対してd2X/dt2は、Ｘの２階微分値を意味するものとする。【０１０５】
Ｆz＝mb＊(g+d2Zb/dt2)＋msup＊(g＋d2Zsup/dt2)
＋mswg＊(g＋d2Zswg/dt2)            ……式１ａ
Ｆx＝mb＊d2Xb/dt2＋msup＊d2Xsup/dt2＋mswg＊d2Xswg/dt2
……式１ｂ
Ｍy＝−mb＊(Xb−Xzmp)＋(g＋d2Zb/dt2)＋mb＊(Zb−Zzmp)＊d2Xb/dt2
−msup＊(Xsup−Xzmp)＊(g＋d2Zsup/dt2)
＋msup*(Zsup−Zzmp)＊d2Xsup/dt2
−mswg＊(Xswg−Xzmp)＊(g＋d2Zswg/dt2)
＋mswg*(Zswg−Zzmp)＊(d2Xswg/dt2)＋J＊d2θby/dt2
……式１ｃ
なお、ロボット全体重心位置には次の関係式が成立する。
ＺGtotal＝(mb＊Zb＋msup＊Zsup＋mswg＊Zswg)／mtotal  …式１ｄ
ＸGtotal＝(mb＊Xb＋msup＊Xsup＋mswg＊Xswg)／mtotal  …式１ｅ
この単純化モデルでは、脚体２，２の動力学（各質点２ｍ，２ｍの動力学）と上体３の動力学（質点２４ｍ及びフライホイールＦＨの動力学）とが相互に非干渉に構成されると共に、ロボット１全体の動力学は、それらの線形結合で表される。また、さらに、上体３の運動と床反力との関係は、上体３の並進運動（上体並進モード）と床反力との関係、並びに上体３の回転運動（上体回転モード）と床反力との関係に分離される。具体的には、上体質点２４ｍの水平運動によって発生する床反力は、上体３の水平方向並進運動（上体並進モード）によって発生する床反力に対応し、フライホイールの回転運動によって発生する床反力は、上体３の回転運動（上体回転モード）、すなわち上体３の姿勢変化運動によって発生する床反力に対応する。【０１０６】
尚、ロボット１の腕体の質量は上体質点２４ｍに含まれるものとし、上体質点２４ｍは腕体の質量を含む質量をもつ。本実施形態では、目標歩容における腕体の運動（腕振り運動）は、後述するように、ロボット１の腕振り以外の運動によってロボット１に発生する鉛直軸まわりの慣性力のモーメントを打ち消しつつも、上体３に対する両腕体の全体の重心の相対位置が動かないように行なわれるので、腕体の腕振り運動による（鉛直軸まわり成分を除く）床反力モーメントへの影響と床反力水平成分への影響とは無視する。【０１０７】
図８にセミフルモデルの構造を例示する。同図に示す如く、セミフルモデルは、上体３、各足平２２、各脚体２の膝関節の近傍部分（大腿リンクの膝関節寄りの部分）にそれぞれ対応する質点を有すると共に、上体３に上体質点の回りにイナーシャ（慣性モーメント）Ｉｂをもつモデルである。このセミフルモデルでは、動力学的方程式は省略するが、ロボット１の運動と床反力との関係は、前記単純化モデルと同様に、各質点の並進運動および上体３の姿勢変化運動と、床反力（並進床反力および目標ＺＭＰ回りの床反力モーメント）との関係として記述される。このセミフルモデルは、前記単純化モデルよりも動力学的精度が高いものとなっている。ここで、セミフルモデルの動力学的精度が単純化モデルよりも高いということは、より詳しくは、ロボット１の任意の目標運動によってセミフルモデル上で発生する床反力が、該目標運動によって単純化モデル上で発生する床反力よりも、当該目標運動を、想定されている床面上で実際のロボット１が行ったときに該ロボット１に実際に作用する実床反力により一致する）ものとなっている。【０１０８】
なお、前記フルモデル補正部１００ｄで用いるフルモデルは、例えば図９に示す如く、ロボット１の各リンクに質点をもつような多質点モデルである。この場合、ロボット１の各リンクは、それに対応する質点の回りにイナーシャをもつようなものであってもよい。【０１０９】
補足すると、前記セミフルモデルは、フルモデルと同じ構造のものであってもよい。【０１１０】
次に、本実施形態に関して、歩容生成装置１００の処理の詳細をより具体的に説明する。【０１１１】
本実施形態における歩容生成装置１００は、ロボット１の片方の脚体２が着地してから他方の脚体２が着地するまでの１歩分の目標歩容（前記狭義の目標歩容）を単位として、その１歩分の目標歩容を順番に生成する。ここで、新たに生成しようとしている目標歩容を「今回歩容」、その次の目標歩容を「次回歩容」、さらにその次の目標歩容を「次次回歩容」、というように呼ぶ。また、「今回歩容」の一つ前に生成した目標歩容を「前回歩容」と呼ぶ。【０１１２】
また、歩容生成装置１００が今回歩容を新たに生成するとき、該歩容生成装置１００には、ロボット１の２歩先までの遊脚側足平２２の着地予定位置姿勢、着地予定時刻の要求値（要求）が歩容に対する要求パラメータとして入力される（あるいは歩容生成装置１００が記憶装置から要求パラメータを読み込む）。そして、歩容生成装置１００は、これらの要求パラメータを基に、補正目標上体位置姿勢軌道、目標足平位置姿勢軌道、目標ＺＭＰ軌道、目標床反力鉛直成分軌道、目標腕姿勢軌道、補正目標床反力モーメント軌道等を生成する。【０１１３】
以下に歩容生成装置１００の歩容生成処理の詳細を図１０〜図２１を参照しつつ説明する。図１０は、その歩容生成装置１００が実行する歩容生成処理のメインルーチンを示すフローチャート（構造化フローチャート）である。なお、このメインルーチン処理の手順自体は、その一部のサブルーチン処理を除いて、例えば本願出願人による前記ＰＣＴ国際公開公報ＷＯ／０３／０５７４２７／Ａ１（以下、公報文献１という）と同じである。【０１１４】
まずＳ０１０において時刻ｔを０に初期化するなど種々の初期化作業が行なわれる。この処理は、歩容生成装置１００の起動時等に行なわれる。次いで、Ｓ０１２を経てＳ０１４に進み、歩容生成装置１００は、制御周期（図１０のフローチャートの演算処理周期）毎のタイマ割り込みを待つ。制御周期はΔｔである。【０１１５】
次いで、Ｓ０１６に進み、歩容の切り替わり目であるか否かが判断され、歩容の切り替わり目であるときはＳ０１８に進むと共に、切り替わり目でないときはＳ０３０に進む。ここで、上記「歩容の切り替わり目」は、前回歩容の生成が完了し、今回歩容の生成を開始するタイミングを意味し、例えば前回歩容の生成を完了した制御周期の次の制御周期が歩容の切り替わり目になる。【０１１６】
Ｓ０１８に進むときは時刻ｔが０に初期化され、次いでＳ０２０に進み、次回歩容支持脚座標系、次次回歩容支持脚座標系、今回歩容周期および次回歩容周期が読み込まれる。これらの支持脚座標系及び歩容周期は、前記要求パラメータにより定まるものである。すなわち、本実施形態では、歩容生成装置１００にジョイスティック４４等から与えられる要求パラメータは、２歩先までの遊脚側足平２２の着地予定位置姿勢（足平２２が着地してから足底を床面にほぼ全面的に接触させるように、滑らさずに回転させた状態での足平位置姿勢）、着地予定時刻の要求値を含んでおり、その１歩目の要求値、２歩目の要求値がそれぞれ、今回歩容、次回歩容に対応するものとして、今回歩容の生成開始時（前記Ｓ０１６の歩容の切り替わり目）以前に歩容生成装置１００に与えられたものである。なお、これらの要求値は今回歩容の生成途中でも変更することは可能である。【０１１７】
そして、上記要求パラメータにおける１歩目の遊脚側足平２２（今回歩容での遊脚側足平２２）の着地予定位置姿勢の要求値に対応して次回歩容支持脚座標系が定まる。また、２歩目の遊脚側足平２２の着地予定位置姿勢の要求値に応じて次々回歩容支持脚座標系が定まる。また、今回歩容周期は、今回歩容の支持脚側足平２２の着地予定時刻（要求値）から、１歩目（今回歩容）の遊脚側足平２２の着地予定時刻（要求値）までの時間として定まり、次回歩容周期は、１歩目の遊脚側足平２２の着地予定時刻（要求値）から２歩目の遊脚側足平２２の着地予定時刻（要求値）までの時間として定まる。【０１１８】
このＳ０２０の処理は、前記公報文献１の図１３のＳ０２０の処理と同一であり、本明細書での説明は以上に留める。【０１１９】
次いでＳ０２２に進み、歩容生成装置１００は、今回歩容に続く仮想的な周期的歩容としての定常歩容の歩容パラメータ（定常歩容パラメータ）を決定する。ここで決定する歩容パラメータとしては、定常歩容における目標足平位置姿勢軌道を規定する足平軌道パラメータ、基準とする上体姿勢軌道を規定する基準上体姿勢軌道パラメータ、目標腕姿勢軌道を規定する腕軌道パラメータ、目標ＺＭＰ軌道を規定するＺＭＰ軌道パラメータ、目標床反力鉛直成分軌道を規定する床反力鉛直成分軌道パラメータと、目標床反力水平成分許容範囲を規定するパラメータとがある。【０１２０】
この明細書で「定常歩容」は、その歩容を繰り返したときに歩容の境界においてロボット１の運動状態（足平位置姿勢、上体位置姿勢等の状態）に不連続が生じないような周期的歩容を意味するものとして使用する。「定常歩容」は、ロボット１を直進させる周期的歩容を含むことはもちろん、ロボット１を旋回させる周期的歩容も含む。この場合、旋回率を零とするときは直進を意味することから、「旋回」には、広義の意味で直進も含まれる。このため、本明細書の実施形態では、「定常歩容」をしばしば「定常旋回歩容」と言うこともある。【０１２１】
定常旋回歩容の詳細は、前記公報文献１や特願２０００−３５２０１１号などにて説明されているので、本明細書での詳細な説明は省略するが、その概要は次の通りである。【０１２２】
周期的歩容である定常旋回歩容は、本実施形態では、ロボット１の２歩分の歩容、すなわち今回歩容に続く第１旋回歩容と該第１旋回歩容に続く第２旋回歩容とからなる歩容を該定常旋回歩容の１周期分の歩容として、その１周期分の歩容を繰り返す歩容である。また、生成する今回歩容が例えばロボット１の走行を行う走行歩容（片脚支持期と空中期とを有する歩容）であるときには、定常旋回歩容の第１旋回歩容及び第２旋回歩容も走行歩容であり、ロボット１の歩行を行う歩行歩容（片脚支持期と両脚支持期とを有する歩容）であるときには、定常旋回歩容の第１旋回歩容及び第２旋回歩容も歩行歩容である。つまり、第１旋回歩容及び第２旋回歩容の基本的な歩容形態は今回歩容と同一である。
【０１２３】
なお、以降の説明では、特にことわらない限り、生成する歩容として走行歩容を例にとって説明する。【０１２４】
定常旋回歩容は、歩容生成装置１００で今回歩容の終端における発散成分や上体鉛直位置速度、上体姿勢角及びその角速度等のロボット１の運動状態を決定するために暫定的に作成されるものであり、歩容生成装置１００からそのまま出力されるものではない。【０１２５】
尚、「発散」とは、ロボット１の上体３の位置が両足平２２，２２の位置からかけ離れた位置にずれてしまうことを意味する。発散成分の値とは、ロボット１の上体３の位置が両足平２２，２２の位置（より具体的には、支持脚側足平２２の接地面に設定されたグローバル座標系（支持脚座標系）の原点）からかけ離れていく具合を表す数値である。例えば、本明細書の実施形態では、発散成分は、前記した各動力学モデルに対して、次式により求められる。【０１２６】
発散成分＝上体質点水平位置＋上体質点水平速度／ω0      …式２
この式２のω0は所定の値である。なお、本実施形態では、歩容における発散成分は、式２の上体質点水平位置、上体質点水平速度の代わりに、それぞれ上体水平位置、上体水平速度を用いて求められる。【０１２７】
本明細書の実施形態では、目標歩容が前記発散を生じることなく、継続的に生成されるように、発散成分を指標にして歩容（今回歩容）を生成するようにした。すなわち、これから生成しようとする今回歩容の後に続く定常歩容（より正確には定常歩容パラメータ）が前記今回歩容に係わる要求パラメータ等に応じて設定され、定常歩容の初期発散成分を求めてから、今回歩容の終端発散成分を定常歩容の初期発散成分に一致させる（より一般的には、今回歩容を定常歩容に連続させ、もしくは近づける）ように、今回歩容を生成する。【０１２８】
本題に戻り、Ｓ０２２では、図１１に示すサブルーチン処理のフローチャートに従って、定常歩容の歩容パラメータ（定常歩容を規定するパラメータ）が決定される。すなわち、定常歩容に係る前記足平軌道パラメータ、基準上体姿勢軌道パラメータ、腕軌道パラメータ、ＺＭＰ軌道パラメータ、床反力鉛直成分軌道パラメータ、目標床反力水平成分許容範囲を規定するパラメータがそれぞれＳ１００〜Ｓ１１０の処理で決定される。そして、Ｓ１１２において、定常歩容の初期時刻Tsと、１歩の期間（定常歩容の１周期の時間）Tcycとが再定義される。これらの処理は、前記公報文献１の図１５のフローチャートの処理と同一であるので、ここでの詳細な説明は省略するが、Ｓ１００〜Ｓ１１０で決定される定常歩容のパラメータは、そのそれぞれのパラメータにより規定される軌道が定常歩容の周期性を満たしつつ、前記した要求パラメータなどにより表される歩容に関する要求を満足するように決定されるパラメータである。例えば、前記公報文献１の図１５のフローチャートに関して説明されている如く、定常歩容の足平軌道パラメータは、今回歩容に続く第１旋回歩容の遊脚足平２２の着地予定位置姿勢（前記次回歩容支持脚座標系で見た着地予定位置姿勢）が前記した２歩目の着地予定位置姿勢（要求値）に合致し、且つ、該第２旋回歩容の遊脚足平２２の着地予定位置姿勢（前記次次回歩容支持脚座標系で見た着地予定位置姿勢）が、今回歩容の遊脚足平２２の着地予定位置姿勢（要求値）に合致するように決定される。なお、ＺＭＰ軌道パラメータは、足平軌道パラメータを基に、目標ＺＭＰが支持脚足平２２の接地面のほぼ中央付近に位置し、且つ、定常歩容の全期間にわたって連続的に変化するように決定される。【０１２９】
また、図１３のＳ１１２で再定義する定常歩容の初期時刻Ｔsは、定常歩容の１周期分の歩容を後述するように作成するときの始点の時刻（これは本実施形態では今回歩容の終端の時刻とは相違する）を意味し、第１旋回歩容の空中期（目標床反力鉛直成分が０となる時期）の開始直前の時刻である。また、定常歩容の１歩の期間Ｔcycは、定常歩容の第１旋回歩容と第２旋回歩容との合計時間の期間である。定常歩容は、その周期性によって、任意の時刻Ｔxにおける状態（ロボット１の各部位の位置姿勢やその変化速度の状態）は時刻Ｔx＋Ｔcycにおける状態と同一になる歩容である。定常歩容は、２歩分の歩容を１周期とする周期的な歩容であるので、本明細書では、その１周期の期間（第１旋回歩容と第２旋回歩容）との合計時間を定常歩容の１歩の期間とみなす。【０１３０】
補足すると、Ｓ１００〜Ｓ１１０の処理で決定される定常歩容のパラメータは、定常歩容を規定する全てのパラメータではない。本実施形態では、定常歩容を規定する歩容パラメータ（定常歩容パラメータ）は、Ｓ０２２で決定するパラメータの他に、定常歩容の１周期の期間の始端（該期間の開始時刻）あるいは終端（該期間の終了時刻）における上体３の位置および速度、並びに上体３の姿勢角およびその角速度と、後述の上体傾斜復元モーメントＺＭＰ換算値のピーク値とが含まれる。これらのパラメータのうち、上体３の水平位置および水平速度、上体３の姿勢角の角速度、上体傾斜復元モーメントＺＭＰ換算値のピーク値は、後述のＳ０２４の処理で探索的に決定される。定常歩容パラメータは、それを構成する各パラメータの値と、前記した単純化モデルとを用いて定常歩容を一義的に生成することができる歩容パラメータである。【０１３１】
次いで、Ｓ０２４に進み、定常歩容の初期状態が算出される。ここで算出される初期状態は、定常歩容の初期上体水平位置速度（水平方向での初期上体位置及び初期上体速度）、初期上体鉛直位置速度（鉛直方向での初期上体位置及び初期上体速度）、初期発散成分、初期上体姿勢角およびその角速度である。この初期状態の算出は、図１２のサブルーチン処理のフローチャートに従って、前記単純化モデルおよびセミフルモデルを使用して行なわれる。【０１３２】
図１２の処理を概略的に説明すれば、時刻Ｔs（定常歩容の初期時刻）でのロボット１の初期上体水平位置、初期上体水平速度、初期上体姿勢角速度、上体傾斜復元モーメントＺＭＰ換算値ピーク値を探索対象として、これらの探索対象を含む定常歩容の初期状態を仮決めし、この初期状態から、動力学モデル（単純化モデルおよびセミフルモデル）を用いて定常歩容の終端（時刻Ｔs＋Ｔcyc）までの歩容を生成する。そして、その生成した定常歩容が境界条件（初期と終端での状態（本実施形態では上体水平位置、上体水平速度、上体姿勢角、上体姿勢角速度）がほぼ一致すること）を満たしているか否かを判断し、満たしていない場合には、探索対象の値を変更する。これを繰り返すことで、最終的に定常歩容の境界条件を満たすことができる初期状態が決定される。【０１３３】
補足すると、図１２の処理の基本的な考え方（手法）は、前記公報文献１の図２０の処理と同様である。但し、本明細書の実施形態では、上記探索対象として、上体姿勢角速度と上体傾斜復元モーメントＺＭＰ換算値のピーク値とが含まれ、この点は、前記公報文献１の図２０の処理と相違している。また、Ｓ２０８の処理の細部の処理（サブルーチン処理）の一部も前記公報文献１のものと相違している。【０１３４】
なお、図１２のフローチャートの処理中で求める上体傾斜復元モーメントＺＭＰ換算値ピーク値ZMPrecpeekは、ロボット１の片脚支持期（より詳しくは、片脚支持期の開始直後から終了直前までの時期。以下、上体傾斜角復元期間ということがある）で上体姿勢を基準上体姿勢に近づけるために必要な床反力モーメントのＺＭＰ換算値ZMPrec（基準となる目標ＺＭＰ（Ｓ０２２で決定したＺＭＰ軌道パラメータにより規定される目標ＺＭＰ）からのずれ量）のピーク値を示すものであり、その例を図示したものが図１９である。ZMPrecが同図示の如く台形状のパターンとされ、そのピーク値（台形の高さ）がZMPrecpeekである。【０１３５】
以下に図１２の処理を具体的に説明すると、まず、Ｓ２００において、定常歩容パラメータ（Ｓ０２２で決定されたパラメータ）を基に足平位置姿勢、上体姿勢角θbsおよび腕姿勢の初期状態（定常旋回歩容の初期時刻Tsでの状態）が決定される。なお、これらの初期状態は、第１旋回歩容の支持脚座標系（前記次回歩容支持脚座標系）で見た状態である。この処理では、足平位置姿勢の初期状態は、前記Ｓ０２２で決定した足平軌道パラメータを基に有限時間整定フィルタを用いて算出される足平位置姿勢軌道のうちの時刻Tsでの各足平２２の位置姿勢に決定される。該有限時間整定フィルタは、前記公報文献１等にて説明されているので、ここでの説明は省略する。また、上体姿勢角θbsの初期状態は、Ｓ０２２で決定した基準上体姿勢軌道パラメータから定まる時刻Tsでの基準上体姿勢角と同一に決定され、腕姿勢の初期状態は、Ｓ０２２で決定した腕姿勢軌道パラメータにより定まる時刻Tsでの状態と同一に決定される。【０１３６】
次いで、Ｓ２０２において、前記単純化モデル上での初期（時刻Ｔs）上体水平位置、初期上体水平速度、初期上体姿勢角速度、および上体傾斜復元モーメントＺＭＰ換算値のピーク値を探索対象として、これらの探索対象の候補（Xs，Vx，ωbs，ZMPrecpeek）が仮決めされる（探索対象の候補値の初期値が決定される）。この場合、その仮決めの候補値は、基本的には任意でよいが、例えば、前回歩容の生成時に求めた定常歩容の初期状態を基に決定してもよい。なお、これらの仮決めされる値は、第１旋回歩容の支持脚座標系（前記次回歩容支持脚座標系）で見た値である。【０１３７】
次いで、Ｓ２０６〜Ｓ２１８のループ処理が実行される。その処理を概略的に説明すれば、前記の如く仮決めした探索対象を含む定常歩容パラメータと単純化モデルとを用いて定常歩容の初期（時刻Ｔs）から終端（時刻Ｔs＋Ｔcyc）までの歩容を生成する。そして、その生成した定常歩容が境界条件（初期と終端での状態（本実施形態では上体水平位置、上体水平速度、上体姿勢角、上体姿勢角速度）がほぼ一致すること）を満たしているか否かを判断し、満たしていない場合には、探索対象の値を変更する。これを繰り返すことで、最終的に単純化モデル上で定常歩容の境界条件を満たすことができる該定常歩容の初期状態が決定される。【０１３８】
Ｓ２０６〜Ｓ２１８の処理をより具体的に説明すると、Ｓ２０６において、単純化モデル上での定常歩容の初期（時刻Ts）の上体鉛直位置および上体鉛直速度（Zs，Vzs）が決定される。この場合、単純化モデル上でのロボット１の全体重心の鉛直方向の慣性力と重力との合力が目標床反力鉛直成分に釣り合い、且つ、全体重心の鉛直位置が定常歩容の境界条件を満たすように決定される。この処理は、前記公報文献１の図２０のＳ２０６の処理と同様に行なわれる。なお、（Zs，Vzs）は、前述の如く決定もしくは仮決めされたXs1，Vxs1，θbs1，ωs1の値（候補値）に依存する。【０１３９】
次いで、Ｓ２０８において、現在の探索対象の候補値と、上体３の鉛直位置および鉛直速度と、ZMPrecpeekとを含む定常歩容パラメータを基に、単純化モデルを用いて歩容（仮の定常歩容）が時刻Ts＋Tcyc（定常歩容の終端）まで生成される。この処理については後述する。【０１４０】
次いで、Ｓ２１０において、Ｓ２０８で生成した歩容の終端の上体水平位置、上体水平速度、上体姿勢角およびその角速度を、該歩容の次の１歩の支持脚座標系（Ｓ２０８で生成した定常歩容の第２旋回歩容に続く第１旋回歩容の支持脚座標系）から見た値に変換し、その値を(Xe，Vxe，θbe，ωbe）とする。【０１４１】
そして、Ｓ２１２において、現在の(Xs，Vxs，θbs，ωbs）の値と、(Xe1，Vxe1，θbe1，ωbe1）の値との差を定常歩容（Ｓ２０８で生成した仮の定常歩容）の境界条件誤差（errx，errv，errθ，errω）として求める。定常歩容の境界条件を満足するためには、境界条件誤差はほぼ０でなければならない。この境界条件誤差は、Ｓ２０８において作成した歩容の、境界条件からのずれ度合いを表すものである。【０１４２】
次いで、Ｓ２１４において、errx，errv，errθ，errωがいずれも十分に小さい（０近傍の）所定の許容範囲内にあるか否かを判断し、その判断結果がＹＥＳである場合には、Ｓ２０６〜Ｓ２１８のループ処理を終了し、Ｓ２２０に進む。この場合には、Ｓ２０８で生成した歩容が定常歩容の境界条件を満たしていることとなるので、その歩容が今回歩容をつながらせるべき適切な定常歩容となる。【０１４３】
一方、Ｓ２１４の判断結果がＮＯである場合には、現在の探索対象（Xs，Vx，ωbs，ZMPrecpeek）の候補値の近辺に、Xs，Vx，ωbs，ZMPrecpeekのそれぞれの値を所定の微小量ΔXs，ΔVx，Δωbs，ΔZMPrecpeekだけ変化させた複数（本実施形態では４個）の探索対象の候補を決めて、それぞれの探索対象の候補を含む定常歩容パラメータ（定常歩容パラメータの探索対象を新たに決めた各候補に修正した定常歩容パラメータ）を基に、Ｓ２０８〜Ｓ２１２と同じ処理を実行して、それぞれの探索対象の候補に対応する境界条件誤差を求める。
【０１４４】
次いで、Ｓ２１８において、現在の（Xs，Vx，ωbs，ZMPrecpeek）およびその近辺の探索対象の候補のそれぞれに対応する境界条件誤差を基に、最急降下法やシンプレックス法などの探索手法によって、探索対象（Xs，Vx，ωbs，ZMPrecpeek）の新たな候補を決定する。そして、Ｓ２０６からの処理が再び繰り返される。【０１４５】
Ｓ２０６〜Ｓ２１８のループ処理を終了した後のＳ２２０では、該ループ処理のＳ２０８で最後に生成された定常歩容（定常歩容の境界条件を満たす歩容）を基に、本来の初期時刻０（今回歩容の終端時刻）における定常歩容の上体３の運動状態である初期上体水平位置X0、初期上体水平速度Vx0、初期上体姿勢角θb0およびその角速度ωb0、並びに初期上体鉛直位置Z0、初期上体鉛直速度Vz0とが求められる。さらに、Ｓ２２２において、前記した初期発散成分ｑの定義式に従って、定常旋回歩容の、本来の初期時刻０における発散成分である定常旋回初期発散成分q[0]が求められる。Ｓ２２２で求められる値は、今回歩容に続く定常旋回歩容の第１旋回歩容の支持脚座標系で見た値である。そして、Ｓ２２４において、定常旋回初期発散成分ｑ[0]を今回歩容の支持脚座標系から見た値であるｑ''と、初期（時刻０）上体鉛直位置・速度を今回歩容の支持脚座標系から見た値である（Z0''，Vz0''）を求める。【０１４６】
以上のようにして、探索対象である（Xs，Vx，ωbs，ZMPrecpeek）の値が、定常歩容の境界条件を満たすように決定され、その探索対象の値を用いて単純化モデル上で生成される定常歩容の、本来の初期時刻（時刻０）における状態（上体３の運動状態）である初期状態（初期発散成分を含む）が決定される。【０１４７】
図１２の処理のうちの説明を後回しにしたＳ２０８の処理は、図１３のフローチャートで示すサブルーチン処理により実行され、さらに、この図１３のＳ３０６およびＳ３２２の処理は、図１４のフローチャートで示すサブルーチン処理により実行される。さらに、図１４のＳ４１２の処理は、図１５のフローチャートで示すサブルーチン処理により実行される。以下、これらの処理を説明する。【０１４８】
図１３の処理の概要を説明すると、まず、Ｓ３００〜Ｓ３１０の処理によって、定常歩容の初期時刻Tsから終端時刻Ｔs＋Ｔcycまでの各時刻ｋ（所定の時間幅Δｋ毎の時刻）において、単純化モデル上で目標ＺＭＰを満足し、且つ、床反力成分許容範囲を満足するように定常歩容が仮作成される。このとき、その仮作成された歩容の運動（仮運動）によって単純化モデル上で発生する目標ＺＭＰまわりの床反力モーメント水平成分の誤差としての床反力モーメント誤差Merr_p(k)の時系列と、該運動によって単純化モデル上で発生する並進床反力水平成分の誤差としての並進床反力誤差Ferr_p(k)の時系列とが求められる。図１３の処理では、定常歩容を作成するだけでなく、これらの誤差Merr_p(k)およびFerr_p(k)を求める処理も含まれる。【０１４９】
ここで、床反力モーメント誤差Merr_p(k)は、単純化モデルを用いて仮作成した歩容の各時刻ｋにおいて、該歩容の運動によってセミフルモデル上で発生する目標ＺＭＰまわりの床反力モーメント水平成分と、該運動によって単純化モデル上で発生する床反力モーメント水平成分またはその目標値（＝０）との差として求められるものである。また、並進床反力誤差Ferr_p(k)は、仮作成した歩容の各時刻ｋにおいて、該歩容の運動によってセミフルモデル上で発生する並進床反力水平成分と、該運動によって単純化モデル上で発生する並進床反力水平成分との差として求められるものである。【０１５０】
次いで、Ｓ３１８〜Ｓ３２４の処理によって、前記仮作成した歩容の運動を、誤差Merr_p(k)およびFerr_p(k)を用いて修正してなる定常歩容が作成される。このとき、定常歩容は、その初期から終端までの各時刻ｋにおいて、その歩容（作成する定常歩容）の運動によって単純化モデル上で発生する目標ＺＭＰまわりの床反力モーメントに床反力モーメント誤差Merr_p(k)を加えたものが、目標ＺＭＰまわりの真の床反力モーメントであるとみなし、その真の床反力モーメントが０となるように（目標ＺＭＰの本来の定義を満足するように）作成される。また、同時に、定常歩容は、その初期から終端までの各時刻ｋにおいて、その歩容（作成する定常歩容）の運動によって、単純化モデル上で発生する並進床反力水平成分に並進床反力誤差Ｆerr_p(k)を加えたものが、真の並進床反力水平成分であるとみなし、その真の床反力水平成分が床反力水平成分許容範囲を満足するように、作成される。この場合、誤差Merr_p(k)およびＦerr_p(k)の基準とする床反力の真値として、セミフルモデル上で発生する床反力が用いられる。補足すると、単純化モデル上で発生する目標ＺＭＰまわりの床反力モーメントに床反力モーメント誤差Merr_p(k)を加えたものが０となるように歩容を作成するということは、目標ＺＭＰまわりの床反力モーメント水平成分の本来の目標値（＝０）から床反力モーメント誤差Merr_p(k)を差し引いてなる床反力モーメント水平成分（＝−Merr_p(k)）が単純化モデル上で目標ＺＭＰまわりに発生するように歩容を作成することと等価である。【０１５１】
以下に図１３の処理を具体的に説明すると、まず、Ｓ３００において、上体３の運動の初期状態（時刻Ｔsでの状態）として、図１２の処理中で仮決めした値（現在候補値）（Xs，Vxs，θbs，ωs，Zs，Vzs）がセットされる。【０１５２】
次いで、Ｓ３０２において、床反力モーメント誤差Merr_p(k)および並進床反力誤差Ｆerr_p(k)の時系列の各値が０に初期化される。なお、ここでMerr_p(k)およびFerr_p(k)を０に初期化するのは、後述するＳ３０６において、単純化モデル上で目標ＺＭＰを満足し、且つ、床反力水平成分許容範囲を満足する歩容を作成するためである。、
前記Ｓ３０２の次に、Ｓ３０４を経て、定常歩容の初期時刻Tsから終端時刻Ts＋Tcycまでの各時刻に対し、Ｓ３０６〜Ｓ３１０の処理が実行される。Ｓ３０６では、Ｓ３０２で初期化した誤差Merr_p(k)およびFerr_p(k)の時系列を用い、単純化モデル上で時刻ｋの目標ＺＭＰ（Ｓ０２２の中で決定されたＺＭＰ軌道パラメータにより規定される目標ＺＭＰ）まわりに−Ｍerr_p(k)が発生し、且つ、並進床反力水平成分（単純化モデル上での歩容の全体重心の並進加速度水平成分に伴う慣性力に釣り合う並進床反力）にFerr_p(k)を加えたものが時刻ｋの床反力水平成分許容範囲（Ｓ０２２の中で決定されたパラメータにより規定される床反力水平成分許容範囲）に収まるように定常歩容の瞬時値の時系列が作成される。この場合、Ｓ３０６では、Merr_p(k)＝０且つFerr_p(k)＝０であるから、Ｓ３０６で作成される（仮作成される）歩容は、結局、単純化モデル上で目標ＺＭＰを満足し、且つ、床反力水平成分許容範囲を満足する歩容となる。Ｓ３０６のより具体的な処理は後述するが、Ｓ３０６の処理の中では、各時刻ｋにおいて、仮作成中の歩容の運動によってセミフルモデル上で発生する目標ＺＭＰまわりの床反力モーメント水平成分と該運動によってセミフルモデル上で発生する目標ＺＭＰまわりの床反力モーメント水平成分との差Merr(k)が求められると共に、該運動によってセミフルモデル上で発生する並進床反力水平成分と該運動によって単純化モデル上で発生する並進床反力水平成分との差Ferr(k)が求められる。【０１５３】
次いで、Ｓ３０８において、上記の如く求められたMerr(k)およびFerr(k)がそれぞれMerr_p(k)、Ferr_p(k)の新たな値としてセットされる。さらに、Ｓ３１０において時刻ｋがｋ＋Δｋに更新される。以上のＳ３０６〜Ｓ３１０の処理が、ｋ＝Ts＋Tcycとなるまで繰り返される。これにより、単純化モデル上で目標ＺＭＰを満足し、且つ、床反力水平成分許容範囲を満足する歩容の瞬時値の時系列が仮作成されると共に、それに対応するMerr_p(k)およびFerr_p(k)の時系列が決定される。このようにして決定されるMerr_p(k)およびFerr_p(k)は、Ｓ３０６で作成される定常歩容の運動（仮運動）によって単純化モデル上で発生する床反力の誤差を表すものである。【０１５４】
次いで、Ｓ３１８において、Ｓ３００と同様に上体３の初期状態がセットされる。さらに、Ｓ３２０を経て、定常歩容の初期時刻Tsから終端時刻Ts＋Tcycまでの各時刻に対し、Ｓ３２２およびＳ３２４の処理が実行される。これらのＳ３２２およびＳ３２４の処理は、それぞれ前記Ｓ３０６、Ｓ３１０の処理と同じである。但し、Ｓ３２２の処理においては、そこで用いるMerr_p(k)およびFerr_p(k)の時系列は、前記Ｓ３０２で初期化された値（＝０）ではなく、最新の時系列、すなわち前記Ｓ３０８で決定されたMerr_p(k)およびFerr_p(k)の時系列（これらは一般には０ではない）である。【０１５５】
これにより図１３の処理は終了し、Ｓ３２０〜Ｓ３２４の処理により作成された定常歩容が図１２のＳ２０８で作成すべき定常歩容として得られる。【０１５６】
図１３のＳ３０６およびＳ３２２の処理（定常歩容の瞬時値の時系列の作成処理）は、図１４のフローチャートで示すサブルーチン処理により実行される。【０１５７】
この図１４の処理では、まず、Ｓ４００〜Ｓ４１０の処理によって、前記Ｓ０２２で決定した定常歩容のパラメータを基に、目標床反力鉛直成分、目標ＺＭＰ、目標両足平位置姿勢、基準上体姿勢、目標腕姿勢、目標上体鉛直位置、床反力水平成分許容範囲の瞬時値が求められる。このＳ４００〜Ｓ４１０の処理は、前記公報文献１の図２２のＳ４００〜Ｓ４１０処理と同じであるので、ここでの詳細説明は省略する。【０１５８】
次いで、Ｓ４１２の処理によって、図中に記載された条件を満たすように上体水平加速度および上体姿勢角加速度の瞬時値が決定される。この場合、Merr_p(k)が、作成中の歩容の運動によって時刻ｋにおいて単純化モデル上で発生する目標ＺＭＰまわりの床反力モーメント水平成分の誤差分であるとみなした場合、単純化モデル上で、目標ＺＭＰ（Ｓ４０２で求めた目標ＺＭＰ）まわりに−Merr_p(k)が発生するように、歩容の運動を決定すれば、その決定した運動によって実際のロボット１が発生する目標ＺＭＰまわりの真の床反力モーメント水平成分（厳密にはセミフルモデル上で発生する目標ＺＭＰまわりの床反力モーメント水平成分）はほぼ０（目標ＺＭＰまわりの床反力モーメント水平成分の本来の目標値）になると考えられる。従って、Ｓ４１２では、単純化モデル上で、目標ＺＭＰまわりに−Merr_p(k)が発生するように上体水平加速度および上体姿勢角加速度を決定する。なお、このことは、作成しようとしている歩容の運動によって単純化モデル上で発生する目標ＺＭＰまわりの床反力モーメント水平成分（≒−Merr_p(k)）に誤差Merr_p(k)を加えたものが、目標ＺＭＰまわりの床反力モーメント水平成分の本来の目標値である０になるように、上体水平加速度および上体姿勢角加速度を決定することと等価である。【０１５９】
また、Ferr_p(k)が、作成中の歩容の運動によって時刻ｋにおいて単純化モデルで発生する並進床反力水平成分の誤差分であるとみなした場合、単純化モデル上で歩容の運動によって発生する並進床反力水平成分にFerr_p(k)を加えたものが床反力水平成分許容範囲（Ｓ４１０で決定された許容範囲）を超えないように歩容の運動を決定すれば、その決定した運動によって実際のロボット１に作用する並進床反力水平成分（厳密にはセミフルモデル上で発生する並進床反力水平成分）は、当該床反力水平成分許容範囲内に収まると考えられる。従って、Ｓ４１２では、作成しようとしている歩容の運動によって単純化モデル上で発生する並進床反力水平成分にFerr_p(k)を加えたものが、床反力水平成分許容範囲（Ｓ４１０で決定した現在時刻ｋでの許容範囲）を超えないように上体水平加速度および上体姿勢角加速度を決定する。【０１６０】
なお、Ｓ４１２の処理のより具体的な内容については後述する。【０１６１】
次いで、Ｓ４１４の処理によって、上記の如くＳ４１２で決定した上体水平加速度および上体姿勢角加速度をそれぞれ２階積分して、上体水平位置および上体姿勢角の瞬時値が決定される。この時点までに、上体鉛直位置、足平位置姿勢および腕姿勢の瞬時値は既に決定されているので（Ｓ４０４、Ｓ４０８を参照）、これらと、上体水平位置および上体姿勢角の瞬時値とから構成されるロボット１の運動の瞬時値（定常歩容の目標運動の瞬時値）が決定されたこととなる。補足すると、本実施形態のロボット１は、各脚体２が６自由度を有するので、各足平２２の目標位置姿勢の瞬時値と上体３の目標位置姿勢の瞬時値とが決まれば、ロボット１の各脚体２の各関節の変位量は一義的に定まる。【０１６２】
また、Ｓ４１４に続くＳ４１５の処理によって、上記の如く決定された定常歩容の目標運動によって単純化モデル上で発生する時刻ｋ（現在時刻）における目標ＺＭＰまわりの床反力モーメント水平成分Msmpl(k)と、並進床反力水平成分Fsmpl(k)とが算出される。【０１６３】
この場合、決定された足平位置姿勢、上体位置・速度、上体姿勢角・角速度からなる目標運動を基に、単純化モデルを用いて目標ＺＭＰまわりの床反力モーメント水平成分Msmpl(k)と並進床反力水平成分Fsmpl(k)とを算出すればよい。すなわち、Msmpl(k)は、目標運動に対応して定まる、単純化モデルの各要素（本実施形態では質点およびフライホイール）の運動によってそれぞれ発生する慣性力と単純化モデルの全体重心に作用する重力との合力が目標ＺＭＰまわりに発生するモーメントの水平成分の瞬時値（各時刻ｋでの値）の符合を反転させたものとして算出される。また、Fsmpl(k)は、目標運動に対応する単純化モデルの全体重心の並進加速度の水平成分の瞬時値（各時刻ｋでの値）に単純化モデルの全体質量を乗じてなる値（全体重心の運動が発生する慣性力の水平成分）の符号を反転させたものとして算出される。【０１６４】
なお、Msmpl(k)およびFsmpl(k)は、上述のように単純化モデルの演算を行なう代わりに、次式によって求めてもよい。【０１６５】
Msmpl(k)＝０−Merr_p(k)        ……式３ａ
Fsmpl(k)＝Fx'(k)−Ferr_p(k)      ……式３ｂ
すなわち、Ｓ４１０〜Ｓ４１４までの処理で作成する歩容は、目標ＺＭＰまわりに−Merr_p(k)（より正確には、目標ＺＭＰまわりの本来の目標床反力モーメント水平成分（＝０）からMerr_p(k)を差し引いたもの）が発生するように作成されるので、その歩容の運動によって単純化モデル上で発生する目標ＺＭＰまわりの床反力モーメントMsmpl(k)は、−Merr_p(k)に一致もしくはほぼ一致する。従って、Msmpl(k)は、前記式３ａにより求めてもよい。なお、当然ながら、式３ａ中の「０」は省略してもよい。【０１６６】
また、式３ｂ中のＦx'(k)は、Ｓ４１０〜Ｓ４１４までの処理で作成する歩容の運動によって単純化モデル上で発生する並進床反力水平成分Fsmpl(k)に、並進床反力誤差（並進床反力水平成分誤差）Ferr_p(k)を加えたものであり、それは、Ｓ４１２の後述する処理の中で床反力水平成分許容範囲を満足するように決定される（より詳しくは、上体水平加速度を決定するときの床反力水平成分（Fsmpl(k)＋Ferr_p(k)）の目標値（床反力水平成分許容範囲を満足する目標値）として決定される）。従って、Ｓ４１０〜Ｓ４１４までの処理で作成する歩容の運動によって単純化モデル上で発生する並進床反力水平成分Fsmpl(k)は、式３ｂの右辺の値と一致もしくはほぼ一致するので、Fsmpl(k)をＳ４１２の処理中で決定するＦx'(k)の値を用いて式３ｂにより求めてもよい。【０１６７】
上記のように式３ａ、式３ｂを用いてMsmpl(k)およびFsmpl(k)を求めてもよいことは、後述する今回歩容の作成処理（後述のＳ０２８の処理、あるいはＳ０３２の処理）においても同様である。【０１６８】
次いで、Ｓ４１５に続くＳ４１６の処理によって、上記の如く決定された歩容の目標運動を基に、前記セミフルモデル上で発生する目標ＺＭＰまわりの床反力モーメント水平成分の瞬時値Msemifull(k)と並進床反力水平成分の瞬時値Fsemifull(k)とが算出される。その算出の仕方は、前記Ｓ４１５において単純化モデル上での瞬時値Msmpl(k)、Fsmpl(k)を算出する場合と同様である。ただし、この場合は、前記式３ａ，３ｂと同様の手法でMsemifull(k)、Fsemifull(k)を求めることはできないので、セミフルモデルの実際の演算処理を行なう必要がある。これらのMsemifull(k)、Fsemifull(k)は、それぞれ目標運動に従って実際のロボット１の運動を行ったときにロボット１に作用する床反力モーメント水平成分、並進床反力水平成分の真値に相当するものである。【０１６９】
次いで、Ｓ４１８の処理において、次式３ｃ，３ｄによって、新たな床反力モーメント誤差Merr(k)および並進床反力誤差Ferr(k)が算出される。【０１７０】
Merr(k)＝Msemifull(k)−Msmpl(k)        ……式３ｃ
Ferr(k)＝Fsemifull(k)−Fsmpl(k)          ……式３ｄ
補足すると、図１３のＳ３２２の処理の中では、図１４のＳ４１５〜Ｓ４１８の処理は行なう必要はない。本実施形態では、図１３のＳ３０６およびＳ３２２のサブルーチン処理を同じにしたために、Ｓ３０６およびＳ３２２のいずれでも、Ｓ４１５〜Ｓ４１８の処理を行なうようになっている。Ｓ３０６およびＳ３２２のサブルーチン処理を各別に構築する場合には、Ｓ３０６の処理では、当初からMerr_p(k)＝０、Ferr_p(k)＝０を前提としてアルゴリズムを構築しておけばよく、その場合には、図１３のＳ３０２の処理は不要である。また、この場合、Ｓ３２２の処理の中では、当初からＳ４１５〜Ｓ４１８の処理を削除しておけばよい。また、Ｓ３０６の処理の中のＳ４１５において、前記式３ａを適用する場合には常にMsmpl(k)＝０となるので、Ｓ３２２の処理の中では、Ｓ４１５の処理を省略してもよい。以上説明した補足事項は、後述する今回歩容の作成処理（後述のＳ０２８の処理）においても同様である。【０１７１】
図１４のＳ４１２のサブルーチン処理は、図１５のフローチャートで示す如く実行される。【０１７２】
この図１５の処理では、まず、定常歩容の上体傾斜角復元期間を規定する時刻Tm、Ts2、Tm2を決定する。これらの時刻は、図１９に示す如く、前記上体傾斜復元モーメントＺＭＰ換算値ZMPrecを発生させる期間を規定するものである。すなわち、定常歩容の初期時刻Tsの後の最初の片脚支持期の開始直後の時刻をTm、該片脚支持期の終了直前の時刻をTs2、次の片脚支持期の開始直後の時刻をTm2として決定する。そして、期間［Tm，Ts2］と、期間［Tm2，Te］を、それぞれZMPrecを発生させる期間（定常歩容における上体傾斜角復元期間）とする。これは、前記公報文献１の図２３のＳ５００の処理と同じである。【０１７３】
次いで、Ｓ５０２において、定常歩容の瞬時値を作成しようとしている現在時刻ｋ（作成中の定常歩容内での時刻）が上体傾斜角復元期間にあるか否かが判断される。そして、現在時刻ｋが前記上体傾斜角復元期間内の時刻でないとき、換言すれば、現在時刻ｋが、片脚支持期の終了直前から次の片脚支持期の開始直後までの期間（目標床反力鉛直成分が０であるかもしくは０に近い期間）にあるときには、Ｓ５０４〜Ｓ５１８の処理が実行される。これらの処理では、まず、目標ＺＭＰまわりの本来の目標床反力モーメント水平成分（＝０）から床反力モーメント誤差（床反力モーメント水平成分誤差）の現在値Merr_p(k)を差し引いてなる床反力モーメント水平成分−Merr_p(k)が単純化モデル上で発生するように、前記上体並進モードの運動による上体水平加速度αtmpを算出する（Ｓ５０４）。αtmpは作成中の歩容における上体水平加速度の仮値である。そして、上体水平加速度がαtmpである場合の単純化モデルの全体重心の水平加速度による慣性力に釣り合う並進床反力水平成分Fxtmpに、並進床反力誤差（並進床反力水平成分誤差）の現在値Ferr_p(k)を加えてなる並進床反力水平成分Fxtmp'（＝Fxtmp＋Ferr_p(k)）が床反力水平成分許容範囲と比較される（Ｓ５０６〜Ｓ５１０）。この比較において、Fxtmp’が床反力水平成分許容範囲を逸脱している場合には、作成中の歩容の運動によって発生させるべき並進床反力水平成分Fx’（このFx’は、作成中の歩容の運動によって単純化モデル上で発生する並進床反力水平成分にFerr_p(k)を加えたものの目標値を意味する）を床反力水平成分許容範囲の上限値Fxmaxまたは下限値Fxminに制限し、Fxtmp’が床反力水平成分許容範囲に収まっている場合には、FxtmpをそのままFx'として決定する（Ｓ５１２〜Ｓ５１４）。
【０１７４】
そして、作成中の歩容の運動によって単純化モデル上で発生させる並進床反力水平成分Fxに、並進床反力誤差（並進床反力水平成分誤差）の現在値Ferr_p(k)を加えてなる並進床反力水平成分（＝Fx＋Ferr_p(k)）が上記の如く決定したFx'に一致するように、前記上体並進モードの上体水平加速度αが決定されると共に、この上体水平加速度αの上体並進モードの運動と前記上体回転モードの運動とによって単純化モデル上で目標ＺＭＰまわりの床反力モーメント水平成分が−Merr_p(k)になるように、該上体回転モードの上体角加速度βが決定される（Ｓ５１８）。【０１７５】
これにより、単純化モデル上で目標ＺＭＰまわりに−Merr_p(k)が発生し（作成中の歩容の運動によって単純化モデル上で目標ＺＭＰまわりに発生する床反力モーメント水平成分に床反力モーメント誤差の現在値Merr(k)を加えたものが目標ＺＭＰまわりの本来の目標値である０になり）、且つ、単純化モデル上で全体重心の水平加速度による慣性力に釣り合う床反力水平成分Fxに、並進床反力誤差の現在値Ferr_p(k)を加えてなる並進床反力水平成分Fx'（これは作成中の歩容の運動によって真に発生する並進床反力水平成分に相当する）が床反力水平成分許容範囲に収まるように上体並進モードの上体水平加速度αと上体回転モードの上体角加速度βとが決定される。【０１７６】
また、現在時刻ｋ（作成中の定常歩容内での時刻）が前記上体傾斜角復元期間内の時刻であるときには、Ｓ５２０〜Ｓ５３０の処理が実行される。これらの処理では、まず、上体角加速度βは、単純化モデル上で、上体傾斜復元モーメントＺＭＰ換算値パターンの瞬時値（これは、前記Ｓ１２の処理中で仮決定された上体傾斜復元モーメントＺＭＰ換算値ピーク値（最新の候補値）と現在時刻ｋとに応じて定まる。図１９を参照）に対応する床反力モーメントを目標ＺＭＰまわりに発生するように決定される（Ｓ５２０およびＳ５２２）。また、上体水平加速度αは、単純化モデル上で、上体並進モードの運動によって発生する目標ＺＭＰまわりの床反力モーメントが、本来の目標床反力モーメント水平成分（＝０）から床反力モーメント誤差の現在値Merr_p(k)を差し引いてなる床反力モーメント水平成分−Merr_p(k)に一致するための上体水平加速度αtmpと、先に決定した上体角加速度βによる床反力モーメントと同等の床反力モーメントを発生する上体水平加速度との差として求められる（Ｓ５２４およびＳ５２６）。【０１７７】
これにより、単純化モデル上で、上体姿勢を基準上体姿勢に向かって復元させつつ、目標ＺＭＰまわりに、−Merr_p(k)が発生するように上体角加速度βおよび上体水平加速度αが決定される。同時に、上体水平加速度が上記の如く求めた加速度αである場合に、単純化モデル上で全体重心の水平加速度による慣性力に釣り合う床反力水平成分Fxに、並進床反力誤差の現在値Ferr_p(k)を加えてなる並進床反力水平成分Fx'が作成中の歩容の運動によって真に発生する並進床反力水平成分として決定される。なお、現在時刻ｋが前記上体傾斜角復元期間内の時刻であるときには、床反力水平成分許容範囲は十分に大きいので、上記の如く決定される並進床反力水平成分Fx'は該許容範囲を逸脱することはない。このため、Ｓ５２０〜Ｓ５３０の処理では、Fx’を床反力水平成分許容範囲と比較することは行なっていない。
【０１７８】
補足すると、図１５の処理の基本的な考え方（手法）は、前記公報文献１の図２２の処理と同様である。但し、同公報文献１のものでは、単純化モデル上で目標ＺＭＰを満足し（目標ＺＭＰまわりの床反力モーメント水平成分が０になる）、且つ、単純化モデル上で床反力水平成分許容範囲を満足するように上体水平加速度および上体姿勢角加速度が決定される。これに対して、本実施形態の図１５の処理では、目標ＺＭＰまわりの本来の目標床反力モーメント水平成分（＝０）から床反力モーメント誤差の現在値Merr_p(k)を差し引いてなる床反力モーメント水平成分−Merr_p(k)が単純化モデル上で発生し（換言すれば、単純化モデル上でロボット１の運動によって目標ＺＭＰまわりに発生する床反力モーメント水平成分に、床反力モーメント誤差の現在値Merr_p(k)を加えたものが目標ＺＭＰまわりの本来の目標床反力モーメント水平成分である０になる）、且つ、単純化モデル上で全体重心の水平加速度による慣性力に釣り合う床反力水平成分Fxに、並進床反力誤差の現在値Ferr_p(k)を加えてなる並進床反力水平成分Fx’が床反力水平成分許容範囲を満足する（該許容範囲内に収まる）ように上体水平加速度および上体姿勢角加速度が決定される。【０１７９】
なお、本実施形態では、単純化モデル上で全体重心の水平加速度による慣性力に釣り合う床反力水平成分Fxに、並進床反力誤差の現在値Ferr_p(k)を加えてなる並進床反力水平成分Fx'が床反力水平成分許容範囲を満足する（該許容範囲に収まる）ようにしたが、Fxが、床反力水平成分許容範囲の上限値および下限値からそれぞれ並進床反力誤差の現在値Ferr_p(k)を減じてなる許容範囲を満足するように上体水平加速度および上体姿勢角加速度を決定するようにしてもよい。このようにしても元の方法と等価である。【０１８０】
本実施形態では、以上説明した如く、定常歩容を生成するので、Ｓ０２４で最終的に生成された定常歩容は、その運動によってセミフルモデル上で発生する床反力（これは該運動によって実際のロボット１に作用する床反力に精度よく一致する）が、目標ＺＭＰと床反力水平成分許容範囲とを満足するように決定されることとなる。この際、定常歩容は、歩容の運動に対して単純化モデル上で発生する床反力の誤差Merr_p(k)およびFerr_p(k)を加味した上で、線形性の高い単純化モデルの動力学を基に生成される。また、定常歩容の各時刻ｋの瞬時値は、その時刻でのMerr_p(k)およびFerr_p(k)による修正を加えて生成される。このため、歩容の運動が発散したりすることなく短時間で効率よく定常歩容の初期状態を探索的に決定することができる。また、セミフルモデルは、単純化モデルを用いて作成した歩容の運動によって発生する床反力（床反力モーメント水平成分および並進床反力水平成分）を算出するためにだけに用いられるので、その算出は、探索的な処理などを必要とせずに、短時間で容易に行なうことができる。【０１８１】
図１０の説明に戻って、以上説明したようにＳ０２４の処理を実行した後、Ｓ０２６において、今回歩容の歩容パラメータが決定（一部は仮決定）される。この処理は、図１６のフローチャートに従って実行される。ここで決定する歩容パラメータとしては、今回歩容における足平位置姿勢軌道（各足平２２の位置姿勢軌道）、基準上体姿勢軌道、腕姿勢軌道、床反力鉛直成分軌道、床反力水平成分許容範囲、ＺＭＰ軌道を規定するパラメータがあり、これらの各パラメータががＳ６００〜Ｓ６１０の処理で決定される。そして、Ｓ６１２において、今回歩容における上体傾斜角復元期間［Ta，Ｔｂ]が設定される。これの処理は、前記公報文献１の図３３のフローチャートの処理と同一であるので、ここでの詳細な説明は省略するが、上記各軌道が前回歩容の終端の状態（今回歩容の初期状態）から、今回歩容に関する前記した要求を満たしつつ、定常歩容につながるように各軌道を規定する歩容パラメータが決定される。例えば、今回歩容の遊脚足平２２に関する足平軌道パラメータは、今回歩容の遊脚足平２２の着地予定位置姿勢および時刻がそれらの要求値を満たしつつ、今回歩容の終端において該遊脚足平２２の位置姿勢が定常歩容の初期（今回歩容の終端の時刻）で一致するように決定される。【０１８２】
補足すると、Ｓ６１０で決定されるＺＭＰ軌道パラメータは仮値であり、その仮値により規定されるＺＭＰ軌道の例（Ｘ軸方向の軌道の例）が図２１の最上段に示されている。該ＺＭＰ軌道パラメータは、今回歩容の片脚支持期において、支持脚足平２２の接地面のほぼ中央付近に目標ＺＭＰが位置し、且つ、片脚支持期に続く空中期では、目標ＺＭＰが今回歩容の終端において定常歩容の初期のＺＭＰまで連続的に変化するように決定される。また、図１６のＳ６１２で設定する上体傾斜角復元期間は、図２１の時刻Ｔａから時刻Ｔｂまでの期間であり、今回歩容の片脚支持期の開始直後から終了直前までの期間である。【０１８３】
なお、Ｓ６００〜Ｓ６１０の処理で決定される今回歩容のパラメータは、今回歩容パラメータを構成する全てのパラメータではない。本実施形態では、今回歩容を規定する歩容パラメータ（今回歩容パラメータ）は、Ｓ０２６で決定するパラメータの他に、ＺＭＰ軌道パラメータにより規定されるＺＭＰ軌道を修正するためのＺＭＰ修正パラメータと、上体傾斜復元モーメントＺＭＰ換算値のピーク値（この場合２種類のピーク値）とが含まれる。これらのパラメータは、以下に説明するＳ０２８の処理の中で探索的に決定される。【０１８４】
次いで、Ｓ０２８に進んで、今回歩容の歩容パラメータ（ＺＭＰ軌道パラメータ）が修正される。この処理では、今回歩容の終端における発散成分がＳ０２４で決定した定常旋回歩容の初期発散成分に一致するように（より詳しくは上体位置姿勢軌道を定常歩容に連続させ、もしくは近づけるように）、今回歩容の歩容パラメータが修正されて、最終的な今回歩容パラメータが決定される（より詳しくは、ＺＭＰ修正パラメータと上体傾斜復元モーメントＺＭＰ換算値の２種類のピーク値とが決定される）。【０１８５】
この処理は、図１７のフローチャートで示すサブルーチン処理に従って行われる。【０１８６】
図１７の処理を概説すると、単純化モデル上で、今回歩容の終端発散成分が定常歩容の初期発散成分に一致もしくはほぼ一致するように（今回歩容を定常歩容につながらせるように）、ＺＭＰ修正量を規定するパラメータであるＺＭＰ修正パラメータａと、上体傾斜復元モーメントＺＭＰ換算値の第１ピーク値ZMPrecpeekaおよび第２ピーク値ZMPrecpeekbとが探索的に決定される。ここで、図１７の処理中で求める上体傾斜復元モーメントＺＭＰ換算値の第１ピーク値ZMPrecpeekaおよび第２ピーク値ZMPrecpeekbは、今回歩容の上体傾斜角復元期間［Ta，Tb］で上体姿勢を基準上体姿勢に近づけるために必要な床反力モーメントのＺＭＰ換算値のパターンの２つのピーク値を示すものであり、その例を図示したものが図２０である。定常歩容の場合の上体傾斜復元モーメントＺＭＰ換算値のピーク値は１つであったが、今回歩容の終端における上体姿勢角およびその角速度をそれぞれ定常歩容の初期上体姿勢角およびその角速度に一致させるために、本実施形態では、上体傾斜復元モーメントＺＭＰ換算値の調整可能な２つのパラメータとして、第１ピーク値ZMPrecpeekaおよび第２ピーク値ZMPrecpeekbが用いられる。本実施形態では、図２０に示す如く、今回歩容における上体傾斜復元モーメントＺＭＰ換算値は、片脚支持期の前半の台形状のパターンと、後半側の台形状のパターンとを合成した形のパターンとされ、その前半側の台形状のパターンのピーク値が第１ピーク値ZMPrecpeeka、後半側の台形状のパターンのピーク値が第２ピーク値ZMPrecpeekbである。【０１８７】
また、図１７の処理中で求めるＺＭＰ修正パラメータａは、今回歩容を定常歩容につなげる（今回歩容の終端の発散成分を定常歩容の初期発散成分ｑ''にほぼ一致させる）ための目標ＺＭＰの修正量を規定するパラメータであり、その例を図示したものが、図２１の中段の図である。図示の如く、ＺＭＰ修正パラメータａにより規定されるＺＭＰ修正量は、片脚支持期の開始直後から終了直前まで発生させる台形状のパターンとされ、そのピーク値ａがＺＭＰ修正パラメータとして用いられる。【０１８８】
図１７の処理をより詳しく説明すると、まず、Ｓ７００において、探索対象であるａ、ZMPrecpeekaおよびZMPrecpeekbの単純化モデル上での値の初期候補が仮決定される。この場合、その初期候補は、基本的には、任意でよいが、例えば前回歩容の作成時に最終的に決定したａ、ZMPrecpeekaおよびZMPrecpeekbの値などを基に決定してもよい。【０１８９】
次いで、Ｓ７０４〜Ｓ７１４のループ処理が実行される。その処理を概略的に説明すれば、まず、Ｓ７０４において、探索対象であるａ、ZMPrecpeekaおよびZMPrecpeekbの現在の候補値と単純化モデルとを用いて今回歩容（仮今回歩容）が算出される。より詳しくは、ＺＭＰ修正パラメータａの現在値を基に修正したＺＭＰ軌道パラメータと、ZMPrecpeekaおよびZMPrecpeekbの現在値と、Ｓ０２６で決定したＺＭＰ軌道パラメータ以外のパラメータ（足平軌道パラメータ、床反力鉛直成分軌道パラメータ等）とから構成される今回歩容パラメータと、単純化モデルを用いて仮今回歩容が算出される。なお、Ｓ７０４のより具体的な処理については後述する。【０１９０】
そして、Ｓ７０６〜Ｓ７１６において、Ｓ７０４で算出した仮今回歩容の終端（今回歩容の遊脚足平の着地予定時刻）での発散成分と定常歩容の初期発散成分ｑ''（前記Ｓ０２４で最終的に算出したもの）との差、仮今回歩容の終端での上体姿勢角と定常歩容の初期上体姿勢角（前記Ｓ０２４で最終的に算出したもの）との差、並びに、仮今回歩容の終端での上体姿勢角の角速度と定常歩容の初期上体姿勢角速度（前記Ｓ０２４で最終的に算出したもの）との差が求められる。そして、これらの差の値がいずれも許容範囲内にあるか否か（０に近いか否か）の条件を満たしているか判断し、満たしていない場合には、探索対象の値を変更する。これを繰り返すことで、最終的に単純化モデル上で仮今回歩容を定常歩容につながらせることが可能な歩容パラメータの修正値としてのａ、ZMPrecpeekaおよびZMPrecpeekbが決定される。【０１９１】
Ｓ７０６〜Ｓ７１６の処理をより具体的に説明すると、Ｓ７０６において、仮今回歩容の終端での上体位置速度（Xe，Ve）から、該仮今回歩容の終端発散成分ｑ0[k]を前記した発散成分の定義式に従って算出する。【０１９２】
次いで、Ｓ７０８において、この終端発散成分ｑ0[k]と定常旋回歩容の初期発散成分ｑ''との差を終端発散成分誤差errqとして求める。【０１９３】
さらに、Ｓ７１０において、定常歩容の初期上体姿勢角と、Ｓ７０４で作成した仮今回歩容の終端上体姿勢角との差を終端上体姿勢角誤差θberrとして求めると共に、定常歩容の初期上体姿勢角速度と、Ｓ７０４で作成した仮今回歩容の終端上体姿勢角速度との差を終端上体姿勢角速度誤差ωberrとして求める。【０１９４】
上記の如くもとめた誤差errq、θberr、ωberrは、Ｓ７０４において作成した仮今回歩容の境界条件（今回歩容がその終端で定常歩容につながるという条件）からのずれ度合いを表すものである。【０１９５】
次いで、Ｓ７１２において、上記の如くもとめたerrq、θberr、ωberrがいずれも０近傍の所定の許容範囲内にあるか否かを判断し、その判断結果がＹＥＳである場合には、Ｓ７０４〜Ｓ７１６のループ処理を終了する。この場合、探索対象の現在の候補値を含む今回歩容パラメータが単純化モデル上で定常歩容につながるような歩容を生成し得る今回歩容パラメータとして得られる。【０１９６】
一方、Ｓ７１２の判断結果がＮＯである場合には、現在の探索対象（ａ，ZMPrecpeeka，ZMPrecpeekb）の候補値の近辺に、それぞれのパラメータの値を所定の微小量Δa，ΔZMPrecpeeka，ΔZMPrecpeekbだけ変化させた複数（本実施形態では３個）の探索対象の候補を決めて、それぞれの探索対象の候補を含む今回歩容パラメータを基に、Ｓ７０４〜Ｓ７１０と同じ処理を実行して、それぞれの探索対象の候補に対応する誤差（errq、θberr、ωberr）の組を求める。【０１９７】
次いで、Ｓ７１６において、探索対象の現在の候補（ａ，ZMPrecpeeka，ZMPrecpeekb）およびその近辺の探索対象の候補のそれぞれに対応する誤差（errq、θberr、ωberr）の組を基に、最急降下法やシンプレックス法などの探索手法によって、探索対象（ａ，ZMPrecpeeka，ZMPrecpeekb）の新たな候補を決定する。そして、Ｓ７０４からの処理が再び繰り返される。【０１９８】
以上のようにして、（ａ，ZMPrecpeeka，ZMPrecpeekb）を探索対象として、今回歩容が定常歩容につながるように今回歩容パラメータが探索的に決定される。【０１９９】
かかる図１７の処理のうちのＳ７０４の処理は、図１８のフローチャートで示すサブルーチン処理により実行される。【０２００】
この図１８の処理は、定常歩容の作成に係わる前記図１３の処理と同様に、目標ＺＭＰまわりの床反力モーメント誤差および並進床反力誤差を決定し、今回歩容（仮今回歩容）の瞬時値をその初期から終端まで時系列的に逐次作成する処理である。この場合、図１３の定常歩容の生成処理との違いは、歩容の初期状態と、歩容生成の期間だけである。より詳しくは、この相違点に関し、図１８の処理では、Ｓ８００、Ｓ８１８において、前回歩容の終端状態（詳しくは今回歩容の支持脚座標系で見た終端状態）が今回歩容（仮今回歩容）の初期状態として設定される。また、Ｓ８０４〜Ｓ８１０の処理、並びに、Ｓ８２０〜Ｓ８２４の処理を実行する期間は、今回歩容の初期時刻（ｋ＝０）から、今回歩容の終端時刻Ｔcurr（今回歩容の遊脚足平２２の着地予定時刻）までの期間である（Ｓ８０４、Ｓ８２０を参照）。これ以外の処理は、図１３の処理と同一である。この場合、Ｓ８００〜Ｓ８１０の処理は、図１３のＳ３００〜Ｓ３１０の処理に対応し、Ｓ８１８〜Ｓ８２４の処理は、図１３のＳ３１８〜Ｓ３２４の処理に対応している。従って、図１８のＳ８０６、Ｓ８２２の処理は、前記図１４のサブルーチン処理によって実行され、図１４のＳ４１２の処理は、図１５のサブルーチン処理によって実行される。ただし、図１８のＳ８０６、Ｓ８２２の処理の中では、図１４のＳ４１２のサブルーチン処理である図１５の処理においては、Ｓ５００の処理は省略される。これは、今回歩容の上体傾斜角復元期間は図１６のＳ６１２で設定された期間［Ｔa，Ｔb］であるからである。【０２０１】
本実施形態では、Ｓ０２８において以上説明した如く仮今回歩容を生成する。この場合、定常歩容の作成の場合と同様、図１８のＳ８００〜Ｓ８１０の処理では、今回歩容の初期から終端まで、単純化モデル上で目標ＺＭＰ（Ｓ０２６で決定したＺＭＰ軌道パラメータにより規定される目標ＺＭＰを図１７の処理中で仮決定したＺＭＰ修正パラメータａ（最新の候補値）によって修正してなる目標ＺＭＰ）を満足し、且つ、床反力水平成分許容範囲（Ｓ０２６で決定したパラメータにより規定される許容範囲）を満足するように今回歩容が仮作成される。そして、この仮作成された歩容の運動（仮運動）を基に、単純化モデルとセミフルモデルとを用いて床反力モーメント誤差（床反力モーメント水平成分誤差）Merr_p(k)と並進床反力誤差Ferr_p(k)との時系列が決定される。さらに、図１８のＳ８１８〜Ｓ８２４の処理によって、今回歩容の各時刻ｋにおいて、単純化モデル上で上記目標ＺＭＰまわりに発生する床反力モーメント水平成分が−Merr_p(k)になり（作成中の歩容の運動によって単純化モデル上で目標ＺＭＰまわりに発生する床反力モーメント水平成分に床反力モーメント誤差の現在値Merr(k)を加えたものが目標ＺＭＰまわりの本来の目標値である０になり）、且つ、単純化モデル上で発生する並進床反力水平成分にFerr_p(k)を加えたものが今回歩容に係わる床反力水平成分許容範囲に収まるように仮今回歩容の瞬時値の時系列が作成される。【０２０２】
従って、Ｓ０２８で最終的に生成される仮今回歩容は、セミフルモデル上で目標ＺＭＰと床反力水平成分許容範囲を満足しつつ、定常歩容につながるような（今回歩容の境界条件を満たすような）ものとなる。この際、仮今回歩容は、単純化モデル上での床反力の誤差Merr_p(k)およびFerr_p(k)を加味した上で、該単純化モデルの動力学を基に生成される。また、今回歩容の各時刻ｋの瞬時値は、その時刻でのMerr_p(k)およびFerr_p(k)による修正を加えて生成される。このため、歩容の運動が発散したりすることなく短時間で効率よく今回歩容の歩容パラメータ（ａ、ZMPrecpeekaおよびZMPrecpeekb）を探索的に決定することができる。【０２０３】
図１０の説明に戻って、以上説明したようにＳ０２８の処理を実行した後、Ｓ０３０に進んで、フルモデル補正用のＺＭＰ許容範囲と床反力水平成分許容範囲を規定するパラメータが決定される。【０２０４】
この処理は、前記公報文献１の図１３のＳ０３０の処理と同一であり、ここでの説明は省略する。【０２０５】
以上説明したＳ０１８〜Ｓ０３０までの処理が、前記歩容パラメータ決定部１００ａで実行される処理である。補足すると、Ｓ０２８で最終的に生成された仮今回歩容に係るMerr_p(k)の時系列が前記床反力モーメント誤差軌道（図５参照）であり、また、該仮今回歩容に係るFerr_p(k)の時系列が前記並進床反力誤差軌道（図５参照）である。【０２０６】
Ｓ０３０の処理を実行した後、あるいは、Ｓ０１６の判断結果がＮＯであるときには、Ｓ０３２に進んで、今回歩容の瞬時値を逐次決定する。この処理のサブルーチン処理は、前記図１４のフローチャートの処理と同じである。但し、この場合には、Ｓ４１２で用いるMerr_p(k)およびFerr_p(k)の時系列の値として、前記図１０のＳ０２８で最終的に決定された値が用いられる。また、Ｓ４１６およびＳ４１８の処理は省略される。また、今回歩容の瞬時値の時系列の時間の刻み幅（前記Δｋの値）は、制御ユニット６０の制御周期Δｔとされる。【０２０７】
次いで、Ｓ０３４に進んで、ロボット１のスピン（鉛直軸まわりの回転）をキャンセルするための腕体の動作が決定される。この処理は、ロボット１の腕を振らずに目標歩容通りにロボット１を運動させた場合に目標ＺＭＰまわりに発生する床反力モーメントの鉛直成分と逆向きの床反力モーメントを腕体の腕振り（両腕を前後逆方向に振る運動）によって発生させるように腕体の姿勢を決定するものであり、前記公報文献１の図１３のＳ０３４と同様に行われる。その詳細は、同公報文献１に記載されているので、ここではさらなる説明を省略する。【０２０８】
補足すると、Ｓ０３２の中のＳ４１２およびＳ４１４の処理とＳ０３４の処理とが、前記単純化モデル歩容生成部１００ｃで実行される処理である。【０２０９】
次いで、Ｓ０３６に進んで、フルモデル補正用（前記フルモデル補正部１００ｅの処理用）のＺＭＰ許容範囲の瞬時値と、床反力水平成分許容範囲の瞬時値とが決定される。この処理では、前記Ｓ０３０で決定したＺＭＰ許容範囲および床反力水平成分許容範囲を規定する歩容パラメータに基づいて決定される。【０２１０】
補足すると、Ｓ０３２〜Ｓ０３６（Ｓ０３２の中のＳ４１２およびＳ４１４の処理とＳ０３４の処理とを除く）の処理が、前記目標瞬時値発生部１００ｂで実行される処理である。【０２１１】
次いで、Ｓ０３８に進んで、フルモデルを用いた補正歩容を発生する。この処理は、前記フルモデル補正部１００ｃにより実行される処理である。この場合、この処理は、前記公報文献１の図１３のＳ０３８の処理と同一であり、同公報文献１に記載されたとおりに実行される。従って、本明細書では詳細な説明は省略する。この処理により、目標上体位置姿勢（前記変位次元補正歩容の上体位置姿勢）をさらに修正してなる補正目標上体位置姿勢と補正目標床反力モーメントとが決定される。【０２１２】
以上が、本実施形態における歩容生成装置１００の歩容生成処理である。【０２１３】
ここで、本実施形態における歩容生成装置１００の歩容生成処理と、本願発明との対応関係について説明しておく。【０２１４】
本実施形態では、図１０のＳ０２４の処理で最終的に生成される定常歩容は、前記第１発明または第２発明における目標歩容に相当するものとなっている。この場合、当該最終的な定常歩容に対応して、Ｓ０２４の処理の中で図１３のＳ３００〜Ｓ３１０の処理によって作成される定常歩容の運動が第１または第２発明における仮運動に相当し、Ｓ３００〜Ｓ３１０の処理は、前記第１発明または第２発明における仮運動作成手段に相当している。そして、図１３のＳ３１８〜Ｓ３２４の処理が第１発明または第２発明における仮運動修正手段に相当する。より詳しくは、Ｓ３２２の処理の中で図１４のＳ４１５において、目標運動によって単純化モデル上で発生する目標ＺＭＰまわりの床反力モーメント水平成分Msmpl(k)を実際に単純化モデルの演算によって算出したときの実施形態が第１発明に対応し、該Msmpl(k)を求めるときに前記式３ａを用いたときの実施形態が第２発明に対応している。【０２１５】
同様に、図１０のＳ０２８の処理で最終的に生成される今回歩容あるいはＳ０３２の処理で生成される今回歩容も、前記第１発明または第２発明における目標歩容に相当するものとなっている。この場合、当該最終的な定常歩容に対応して、Ｓ０２８の処理の中で図１８のＳ８００〜Ｓ８１０の処理によって作成される定常歩容の運動が第１または第２発明における仮運動に相当し、Ｓ８００〜Ｓ８１０の処理は、前記第１発明または第２発明における仮運動作成手段に相当している。そして、図１８のＳ８１８〜Ｓ８２４の処理が第１発明または第２発明における仮運動修正手段に相当する。より詳しくは、Ｓ８２２の処理の中で図１４のＳ４１５において、目標運動によって単純化モデル上で発生する目標ＺＭＰまわりの床反力モーメント水平成分Msmpl(k)を実際に単純化モデルの演算によって算出したときの実施形態が第１発明に対応し、該Msmpl(k)を求めるときに前記式３ａを用いたときの実施形態が第２発明に対応している。
【０２１６】
次に図４を参照して複合コンプアライアンス制御装置１０１の動作を説明しておく。なお、複合コンプライアンス制御装置１０１の動作は、本出願人が先に出願した特開平１０−２７７９６９号公報などに詳細に記載されているので、本明細書では概略的な説明にとどめる。歩容生成装置１００において、上記したように生成された目標歩容のうち、補正目標上体位置姿勢（軌道）、目標腕姿勢（軌道）が、ロボット幾何学モデル（逆キネマティクス演算部）１０２に送出される。【０２１７】
また、目標足平位置姿勢（軌道）、目標ＺＭＰ軌道（目標全床反力中心点軌道）、および目標全床反力（軌道）（補正目標床反力モーメントと目標床反力鉛直成分）は、複合コンプライアンス動作決定部１０４に送られると共に、目標床反力分配器１０６にも送られる。そして、目標床反力分配器１０６で、床反力は各足平２２に分配され、目標各足平床反力中心点および目標各足平床反力が決定される。この決定された目標各足平床反力中心点および目標各足平床反力は複合コンプライアンス動作決定部１０４に送られる。【０２１８】
複合コンプライアンス動作決定部１０４から、機構変形補償付き修正目標足平位置姿勢（軌道）がロボット幾何学モデル１０２に送られる。ロボット幾何学モデル１０２は、目標上体位置姿勢（軌道）と機構変形補償付き修正目標足平位置姿勢（軌道）を入力されると、それらを満足する脚体２，２の１２個の関節の関節変位指令（値）を算出して変位コントローラ１０８に送る。変位コントローラ１０８は、ロボット幾何学モデル１０２で算出された関節変位指令（値）を目標値としてロボット１の１２個の関節の変位を追従制御する。また、ロボット幾何学モデル１０２は、目標腕姿勢を満足する腕関節の変位指令（値）を算出して変位コントローラ１０８に送る。変位コントローラ１０８は、ロボット幾何学モデル１０２で算出された関節変位指令（値）を目標値としてロボット１の腕体の１２個の関節の変位を追従制御する。
【０２１９】
ロボット１に生じた床反力（詳しくは実各足床反力）は６軸力センサ５０によって検出される。その検出値は前記複合コンプライアンス動作決定部１０４に送られる。また、ロボット１に生じた姿勢傾斜偏差θerrx，θerry（詳しくは目標上体姿勢角に対する実姿勢角の偏差で、ロール方向（Ｘ軸回り）の姿勢角偏差がθerrxであり、ピッチ方向（Ｙ軸回り）の姿勢角偏差がθerryである）が姿勢センサ５４を介して検出され、その検出値は姿勢安定化制御演算部１１２に送られる。この姿勢安定化制御演算部１１２で、ロボット１の上体姿勢角を目標上体姿勢角に復元するための目標全床反力中心点（目標ＺＭＰ）まわり補償全床反力モーメントが算出されて複合コンプライアンス動作決定部１０４に送られる。複合コンプライアンス動作決定部１０４は、入力値に基づいて目標床反力を修正する。具体的には、目標全床反力中心点（目標ＺＭＰ）回りに補償全床反力モーメント、あるいは、補償全床反力モーメントと補正目標床反力モーメントとの和が作用するように目標床反力を修正する。【０２２０】
複合コンプライアンス動作決定部１０４は、修正された目標床反力に、センサ検出値などから算出される実ロボットの状態および床反力を一致させようと上記機構変形補償付き修正目標足平位置姿勢（軌道）を決定する。この場合、機構変形補償付き修正目標足平位置姿勢は、前記コンプライアンス機構７２等の機構的変形を考慮したものである。ただしすべての状態を目標に一致させることは事実上不可能であるので、これらの間にトレードオフ関係を与えて妥協的になるべく一致させる。すなわち、各目標に対する制御偏差に重みを与えて、制御偏差（あるいは制御偏差の２乗）の重み付き平均が最小になるように制御する。これにより、実際の足平位置姿勢と全床反力とが目標足平位置姿勢と目標全床反力とに概ね従うように制御される。
【０２２１】
次に、以上説明した実施形態の変形態様をいくつか説明しておく。なお、以下に説明する変形態様は、定常歩容、今回歩容のいずれを生成する場合でも適用できるものである。【０２２２】
前記実施形態では、歩容（定常歩容または今回歩容）の初期から終端までの各時刻ｋにおいて、目標ＺＭＰまわりの床反力モーメントが、本来の目標床反力モーメント水平成分（＝０）から床反力モーメント誤差の現在値Merr_p(k)を差し引いてなる床反力モーメント水平成分−Merr_p(k)になるように上体加速度および上体姿勢角加速度を決定した（ひいては目標歩容（定常歩容もしくは今回歩容）を決定した）。但し、床反力モーメント誤差の現在値Merr_p(k)にある所定の係数（例えば１以下の正数）を乗じたものを目標床反力モーメント水平成分から差し引いてなる床反力モーメント水平成分を単純化モデル上での目標ＺＭＰまわりの床反力モーメントの目標値として上体加速度および上体姿勢角加速度を決定してもよい。なお、このことは、決定しようとしている上体加速度および上体姿勢角加速度を含む歩容（目標歩容）の運動によって単純化モデル上で目標ＺＭＰまわりに発生する床反力モーメント水平成分に、床反力モーメント誤差の現在値Merr_p(k)にある所定の係数（例えば１以下の正数）を乗じたもの（これは本発明における第１床反力補正量に相当する）を加えてなる床反力モーメント水平成分が本来の目標床反力モーメント水平成分に一致するように上体加速度および上体姿勢角加速度を決定することを意味する。このように、Merr_p(k)に応じて決定した床反力補正量を、決定しようとしている上体加速度および上体姿勢角加速度を含む歩容（目標歩容）の運動によって単純化モデル上で目標ＺＭＰまわりに発生する床反力モーメント水平成分に加えてなる床反力モーメント水平成分が本来の目標床反力モーメント水平成分に一致するように歩容の運動を決定するようにしてもよい。なお、上記床反力補正量は、Merr_p(k)から単調増加の非線形関数を用いて決定するようにしてもよい。【０２２３】
同様の考え方によって、単純化モデル上で全体重心の水平加速度（決定しようとしている上体水平加速度および上体姿勢角加速度を含む歩容（目標歩容）の運動による全体重心の水平加速度）による慣性力に釣り合う床反力水平成分Fxに、並進床反力誤差の現在値Ferr_p(k)に所定の係数（例えば１以下の正数）を乗じたもの（これは本発明における第２床反力補正量に相当する）を加えてなる並進床反力水平成分が床反力水平成分許容範囲を満足するように上体加速度および上体姿勢角加速度を決定してもよい。このように、Ferr_p(k)に応じて決定した床反力補正量を、決定しようとしている上体加速度および上体姿勢角加速度を含む歩容（目標歩容）の運動による慣性力に釣り合う床反力水平成分Fxに加えてなる並進床反力水平成分が床反力水平成分許容範囲を満足するように歩容の運動を決定するようにしてもよい。なお、上記床反力補正量は、Ferr_p(k)から単調増加の非線形関数を用いて決定するようにしてもよい。【０２２４】
また、図１３のＳ３００〜Ｓ３１０の処理の終了後、図１３のＳ３１８〜Ｓ３２４の処理を実行する前に、Ｓ３０４〜Ｓ３１０の処理で決定された誤差Merr_p(k)およびFerr_p(k)の時系列がそれぞれ十分に０に近い値であるか否かを判断し、この判断結果に応じて、Ｓ３１８〜Ｓ３２４の処理を省略してもよい。すなわち、該判断結果がＹＥＳである場合には、Ｓ３０４〜Ｓ３１０の処理で生成された歩容の運動は、それによって単純化モデル上で発生する床反力の動力学的精度が十分に確保されている（該床反力が真値に近い）ということを意味する。従って、その場合には、Ｓ３１８〜Ｓ３２４の処理を省略し、Ｓ３０４〜Ｓ３１０の処理で生成された歩容を図１３の処理で最終的に得るべき目標歩容としてもよい。このことは、今回歩容の作成を行なう図１８の処理においても同様である。なお、誤差Merr_p(k)およびFerr_p(k)の時系列がそれぞれ０に近い値であるか否かを判断するときには、Merr_p(k)およびFerr_p(k)の時系列の各値が０近傍の許容範囲にあるか否かを判断すればよいことはもちろんであるが、Merr_p(k)およびFerr_p(k)のそれぞれの時系列のパターンのある特徴量（例えば該時系列の各値の絶対値の最大値、もしくは該絶対値の実効値、もしくは該時系列のパターンの最大値と最小値との差など）が０近傍の許容範囲にあるか否かを判断するようにしてもよい。【０２２５】
また、前記実施形態では、目標ＺＭＰまわりの床反力モーメント水平成分に関する誤差Merr_p(k)を用いるようにしたが、目標ＺＭＰと異なる点に作用点を設定し、その作用点まわりの床反力モーメント水平成分に関する誤差（ここでは、これをMerr_p'(k)とする）を用いてもよい。この場合、図１４のＳ４１２の処理において、該作用点のまわりの床反力モーメント水平成分の目標値（目標ＺＭＰまわりの床反力モーメント水平成分が０になるような目標値）から当該誤差Merr_p'(k)を差し引いたものが発生するように上体水平加速度と上体姿勢角加速度とを決定することが、目標ＺＭＰまわりに−Merr_p(k)が発生するように上体水平加速度と上体姿勢角加速度を決定する（ひいては目標歩容の運動の瞬時値を決定する）ことと同等になる。【０２２６】
また、前記実施形態ではロボット１の走行を行なう場合を例に採って説明したが、ロボット１の歩行を行なう場合でも本発明を適用できる。この場合、床反力鉛直成分軌道（あるいはそれを規定するパラメータ）は、例えば前記公報文献１の図４０に示される如く設定すればよい。また、上体傾斜角復元期間は、例えば両脚支持期に設定すればよい。あるいは、歩容生成で想定する床の摩擦係数が大きく、歩容の１歩の全期間において床反力水平成分許容範囲が十分に大きい場合（生成する歩容の運動によって発生する並進床反力水平成分が確実に床反力水平成分許容範囲に収まる場合）には、その全期間を上体傾斜角復元期間としてもよい。なお、この場合には、上体傾斜復元モーメントＺＭＰ換算値は、０でよい。【０２２７】
また、前記実施形態では、床反力モーメント誤差Merr_p(k)を用いるようにしたが、このMerr_p(k)を、歩容の各時刻ｋにおいて目標床反力鉛直成分で除算したものが、時刻ｋにおけるＺＭＰ（ロボット１の歩容の運動によって発生する慣性力と重力との合力のモーメント水平成分が０となる床面上の点）の目標ＺＭＰからのずれ量（誤差）に相当するものとなる。従って、床反力モーメント誤差Merr_p(k)の代わりにＺＭＰの目標ＺＭＰからの誤差（ここでは、これをZMPerr_p(k)とする）を用いるようにしてもよい。この場合、図１４のＳ４１２の処理では、ロボット１の歩容の運動によって発生する慣性力と重力との合力が、誤差ZMPerr_p(k)（Merr_p(k)を目標ＺＭＰに対するＺＭＰのずれ量に換算した値）の分だけ、あるいは誤差ZMPerr_p(k)に所定の係数（例えば１以下の正数）を乗じてなる値の分だけ、目標ＺＭＰから逆向きにずらした点（目標ＺＭＰから−ZMPerr_p(k)だけ位置をずらした点、または、目標ＺＭＰから、−ZMPerr_p(k)に所定の係数を乗じてなる値の分だけ位置をずらした点）の回りに作用する床反力モーメントの水平成分が０になるように上体水平加速度と上体姿勢角加速度を決定することが、目標ＺＭＰまわりに−Merr_p(k)またはこれに所定の係数を乗じてなる床反力モーメント水平成分が発生するように上体水平加速度と上体姿勢角加速度を決定する（ひいては目標歩容の運動の瞬時値を決定する）ことと同等になる。なお、このことは、作成しようとする歩容の運動から単純化モデル上で算出されるＺＭＰの位置に、ZMPerr_p(k)、あるいはZMPerr_p(k)に所定の係数を乗じてなる値を加えたものが目標ＺＭＰの位置に一致するように上体水平加速度と上体姿勢角加速度を決定する（ひいては目標歩容の運動の瞬時値を決定する）ことと同じである。【０２２８】
このように前記実施形態においてMerr_p(k)の代わりに誤差ZMPerr_p(k)を用いることで、前記第３発明または第４発明の実施形態が構築されることとなる。この場合、より詳しくは、図１３のＳ３０６または図１８のＳ８０６の処理の中で、図１４のＳ４１８で求めたMerr(k)を該当時刻ｋでの床反力鉛直成分の瞬時値で除算したものを誤差ZMPerr_p(k)として決定すればよい。このとき、図１４のＳ４１４において、単純化モデル上で目標ＺＭＰまわりに発生する床反力モーメントMsmpl(k)を、該単純化モデルの実際の演算により算出した場合には、上記の如く決定される誤差ZMPerr_p(k)は、図１３のＳ３０６または図１８のＳ８０６の処理で作成中の歩容の運動（仮運動）からセミフルモデル上で算出されるＺＭＰと、該運動から単純化モデル上で算出されるＺＭＰとの差を意味するものとなる。従って、この場合の実施形態は、前記第３発明の実施形態に相当するものとなる。【０２２９】
また、図１４のＳ４１４において、単純化モデル上で目標ＺＭＰまわりに発生する床反力モーメントMsmpl(k)を、前記式３ａにより目標ＺＭＰまわりの床反力モーメント水平成分の目標値（＝０）とMerr_p(k)との差として算出した場合には、上記の如く決定される誤差ZMPerr_p(k)は、図１３のＳ３０６または図１８のＳ８０６の処理で作成中の歩容の運動（仮運動）からセミフルモデル上で算出されるＺＭＰと、目標ＺＭＰとの差を意味するものとなる。従って、この場合の実施形態は、前記第４発明の実施形態に相当するものとなる。【０２３０】
このように前記実施形態においてMerr_p(k)の代わりに誤差ZMPerr_p(k)を用いることで、前記第３発明または第４発明の実施形態が構築されることとなる。但し、空中期を有する歩容を生成する場合、その空中期では、床反力鉛直成分が０になってＺＭＰが不定となるため、前記実施形態の如く、床反力モーメント誤差を用いることが好ましい。なお、ロボット１の歩行歩容を生成する場合には、空中期が無いので、歩容の全期間においてZMPerr_p(k)を用いることができる。また、これらの実施形態においても、床反力モーメント水平成分誤差Merr(t)、並進床反力水平成分誤差Ferr(t)の代わりに、前記第１発明または第２発明の変形態様に関して説明したが如く、それらの値に応じて決定した床反力補正量を用いてもよい。【０２３１】
また、前記実施形態では、図１３または図１８の処理で、目標ＺＭＰと床反力水平成分許容範囲とを満足する歩容をその初期から終端まで生成した上で、床反力モーメント誤差Merr_p(k)および並進床反力Ferr_p(k)の修正を加えた歩容（定常歩容または今回歩容）をその初期から終端まで生成するようにしたが、各時刻ｋ毎に、目標ＺＭＰと床反力水平成分許容範囲とを満足する歩容の瞬時値の生成と、この歩容の運動（仮運動）を基に決定される床反力モーメント誤差Merr_p(k)および並進床反力Ferr_p(k)の修正を加えた歩容の瞬時値の生成とを、歩容の初期から終端まで逐次行なうようにしてもよい。【０２３２】
また、先にも述べたように前記セミフルモデルは、フルモデル補正用のフルモデルと同一でもよい。この場合、歩容パラメータを探索的に決定するための処理（図１０のＳ０２４、Ｓ０２８の処理）を短時間で効率よく行ううえでは、セミフルモデル用の床反力水平成分許容範囲は、フルモデル用の床反力水平成分許容範囲よりも広めに設定することが好ましい。【０２３３】
また、前記実施形態では、フルモデルによる歩容の補正処理を除いて、目標ＺＭＰまわりの並進床反力水平成分の許容範囲だけを設定するようにしたが、ロボット１のスピンを防止するために、目標ＺＭＰまわりの床反力モーメント鉛直成分の許容範囲も設定するようにしてもよい。この場合、床反力モーメント誤差に関しては、目標ＺＭＰ、床反力水平成分許容範囲、および床反力モーメント鉛直成分の許容範囲を満足するように単純化モデル上で作成した歩容の運動に対して、床反力モーメント水平成分の誤差だけでなく、床反力モーメント鉛直成分の誤差も求めておき、単純化モデル上で発生する床反力モーメント鉛直成分に該鉛直成分に対する誤差を加えたモーメントが、該鉛直成分に対する許容範囲を満足するように目標歩容の運動を生成してもよい。【０２３４】
また、図１３のＳ３０６または図１８のＳ８０６の処理の中で、並進床反力鉛直成分の誤差も求めておき、単純化モデル上で発生する並進床反力鉛直成分に当該誤差を加えたものが、並進床反力鉛直成分の目標値を満足するように目標歩容の運動を生成してもよい。
【産業上の利用可能性】
【０２３５】
以上の説明から明らかなように、本発明の移動ロボットの歩容生成装置は、ロボットのスリップを防止し得る歩容を効率よく生成できると共に、その歩容の運動と床反力との間の時間的整合性を採りつつ、それらの間の動力学的精度を良好に確保することができ、特に２足移動ロボットのような本来的な安定性が低い移動ロボットの歩容を該移動ロボットの安定性を確保しつつ生成できる点で有用である。
【図面の簡単な説明】
【０２３６】
【図１】本発明の実施形態を適用する移動ロボット（２足歩行ロボット）の全体構成の概略を示す図。
【図２】図１のロボットの各脚体の足平部分の構成を示す側面図。
【図３】図１のロボットに備えた制御ユニットの構成を示すブロック図。
【図４】図３の制御ユニットの機能的構成を示すブロック図。
【図５】図４に示す歩容生成装置の機能を示すブロック図。
【図６】（ａ），（ｂ）はそれぞれロボットの運動モード（上体並進モード、上体回転モード）を説明するための図。
【図７】歩容生成で用いる第１動力学モデル（単純化モデル）の構造を示す図。
【図８】歩容生成で用いる第２動力学モデル（セミフルモデル）の構造を示す図。
【図９】歩容生成で用いるフルモデルの構造を示す図。
【図１０】実施形態における歩容生成装置のメインルーチン処理を示すフローチャート。
【図１１】図１０のサブルーチン処理を示すフローチャート。
【図１２】図１０のサブルーチン処理を示すフローチャート。
【図１３】図１２のサブルーチン処理を示すフローチャート。
【図１４】図１３のサブルーチン処理を示すフローチャート。
【図１５】図１４のサブルーチン処理を示すフローチャート。
【図１６】図１０のサブルーチン処理を示すフローチャート。
【図１７】図１０のサブルーチン処理を示すフローチャート。
【図１８】図１７のサブルーチン処理を示すフローチャート。
【図１９】定常歩容における上体傾斜復元モーメントＺＭＰ換算値の例を示すグラフ。
【図２０】今回歩容における上体傾斜復元モーメントＺＭＰ換算値の例を示すグラフ。
【図２１】今回歩容における仮目標ＺＭＰとＺＭＰ修正量と目標ＺＭＰとの例を示すグラフ。
【図１】
0004805817.tif 000002
【図２】
0004805817.tif 000003
【図３】
0004805817.tif 000004
【図４】
0004805817.tif 000005
【図５】
0004805817.tif 000006
【図６】
0004805817.tif 000007
【図７】
0004805817.tif 000008
【図８】
0004805817.tif 000009
【図９】
0004805817.tif 000010
【図１０】
0004805817.tif 000011
【図１１】
0004805817.tif 000012
【図１２】
0004805817.tif 000013
【図１３】
0004805817.tif 000014
【図１４】
0004805817.tif 000015
【図１５】
0004805817.tif 000016
【図１６】
0004805817.tif 000017
【図１７】
0004805817.tif 000018
【図１８】
0004805817.tif 000019
【図１９】
0004805817.tif 000020
【図２０】
0004805817.tif 000021
【図２１】
0004805817.tif 000022