(57)【特許請求の範囲】
【請求項１】
基体から延設された複数の脚体を備える脚式移動ロボットの運動中に、複数種類の必要条件を満足するように、各脚体の先端部の運動軌道を規定する脚体運動パラメータと前記ロボットに作用させるべき床反力の所定の構成要素である床反力要素の目標軌道を規定する床反力要素パラメータとを決定しつつ、該脚体運動パラメータと床反力要素パラメータとを用いて該ロボットの目標運動を少なくとも含む目標歩容を生成し、その目標歩容に該ロボットの実際の歩容を追従させるように該ロボットの動作制御を行う制御装置であって、
前記複数種類の必要条件は、前記脚体運動パラメータにより規定される各脚体の先端部の運動軌道が、該脚体の幾何学的な可動範囲内での運動軌道となるという幾何学的脚体運動必要条件と、前記床反力要素パラメータにより規定される前記床反力要素の目標軌道が、前記ロボットの動力学を表現する動力学モデル上での該ロボットの継続的な運動を実現し得る目標軌道となるという運動継続性必要条件と、前記床反力要素パラメータにより規定される前記床反力要素の目標軌道における該床反力要素の目標値が所定の許容範囲内に収まるという床反力要素許容範囲必要条件とを少なくとも含んでおり、
さらに前記床反力要素は、前記ロボットに作用する全床反力の作用点としてのＺＭＰの位置であり、前記床反力要素の目標値に関する前記許容範囲は、前記ロボットと床面との接触面に応じて定まる支持多角形内に設定される前記ＺＭＰの存在許容領域であり、
前記ロボットの脚体のうち、現在時刻以後に着地させようとする遊脚の先端部の目標着地位置の第１の許容領域である第１着地許容領域を前記幾何学的脚体運動必要条件を満足するように決定する第１着地許容領域決定手段と、
前記運動継続性必要条件と前記床反力要素許容範囲必要条件とを満足する前記床反力要素の目標軌道を決定し得る前記目標着地位置の第２の許容領域である第２着地許容領域を、少なくとも前記遊脚の先端部の目標着地位置の変化と前記運動継続性必要条件を満足する前記床反力要素の変化との間の関係と、前記床反力要素の目標値に関する前記許容範囲とに基づいて決定する第２着地許容領域決定手段と、
少なくとも前記第１着地許容領域と第２着地許容領域とが重なり合う領域内に前記遊脚の先端部の目標着地位置が存するように前記脚体運動パラメータを決定する脚体運動パラメータ決定手段と、
該脚体運動パラメータを用いて、前記床反力要素の目標軌道を規定する前記床反力要素パラメータを決定する床反力要素パラメータ決定手段とを備えることを特徴とする脚式移動ロボットの制御装置。
【請求項２】
請求項１記載の脚式移動ロボットの制御装置において、
前記ロボットの外界の環境情報に基づいて、前記遊脚の先端部の目標着地位置の第３の許容領域である第３着地許容領域を決定する第３着地許容領域決定手段をさらに備え、
前記脚体運動パラメータ決定手段は、少なくとも前記第１着地許容領域と第２着地許容領域と第３着地許容領域とが重なり合う領域内に前記遊脚の先端部の目標着地位置が存するように前記脚体運動パラメータを決定することを特徴とする脚式移動ロボットの制御装置。
【請求項３】
請求項１又は２記載の脚式移動ロボットの制御装置において、
前記運動継続性必要条件は、前記床反力要素パラメータにより規定される床反力要素の目標軌道を前記動力学モデルに入力して前記ロボットの運動を生成した場合に、該生成される運動軌道が、前記ロボットの同一パターンの運動を周期的に繰り返す歩容である周期歩容における運動軌道に収束するという条件であることを特徴とする脚式移動ロボットの制御装置。
【請求項４】
請求項１〜３のいずれか１項に記載の脚式移動ロボットの制御装置において、
前記脚体運動パラメータ決定手段は、前記遊脚の目標着地時刻を所定の許容範囲内で調整可能に前記脚体運動パラメータを決定する手段であり、
前記第２着地許容領域決定手段は、前記第２着地許容領域を、前記遊脚の先端部の目標着地位置の変化と該遊脚の先端部の目標着地時刻の変化と前記運動継続性必要条件を満足する前記床反力要素の変化との間の関係と、該床反力要素の目標値に関する前記許容範囲と、前記遊脚の目標着地時刻に関する前記許容範囲とに基づいて決定することを特徴とする脚式移動ロボットの制御装置。
【請求項５】
請求項１〜３のいずれか１項に記載の脚式移動ロボットの制御装置において、
前記遊脚の目標着地位置が前記第１着地許容領域内に存するように前記脚体運動パラメータの暫定値を決定する脚体運動パラメータ暫定決定手段と、
前記決定された脚体運動パラメータの暫定値を用いて、少なくとも前記床反力要素許容範囲必要条件を満足するように、前記床反力要素としての前記ＺＭＰの位置の目標軌道を規定する前記床反力要素パラメータの暫定値を決定する床反力要素パラメータ暫定決定手段と、
前記決定された床反力要素パラメータの暫定値により規定される前記ＺＭＰの位置の目標軌道である暫定ＺＭＰ軌道と前記動力学モデルとを用いて、前記運動継続性必要条件を満足するように前記暫定ＺＭＰ軌道を修正するためのＺＭＰ修正量を決定するＺＭＰ修正量決定手段と、
前記決定されたＺＭＰ修正量によって前記暫定ＺＭＰ軌道を修正してなるＺＭＰの位置が前記存在許容領域内に存するか否かを判断する判断手段とをさらに備えており、
前記第２着地許容領域決定手段は、前記判断手段の判断結果が否定的である場合に、前記遊脚の目標着地位置を前記決定された脚体運動パラメータの暫定値により規定される目標着地位置から所定量だけ変化させた場合における前記ＺＭＰ修正量の変化量を算出することによって、前記遊脚の先端部の目標着地位置の変化と前記運動継続性必要条件を満足する前記床反力要素の変化との間の関係を規定する着地位置・床反力要素間関係パラメータを決定し、該着地位置・床反力要素間関係パラメータにより規定される関係に従って、前記床反力要素の目標値に関する前記許容範囲を前記遊脚の先端部の目標着地位置の許容領域に変換することにより、前記第２着地許容領域を決定することを特徴とする脚式移動ロボットの制御装置。
【請求項６】
請求項４記載の脚式移動ロボットの制御装置において、
前記遊脚の目標着地位置が前記第１着地許容領域内に存するように前記脚体運動パラメータの暫定値を決定する脚体運動パラメータ暫定決定手段と、
前記決定された脚体運動パラメータの暫定値を用いて、少なくとも前記床反力要素許容範囲必要条件を満足するように、前記床反力要素としての前記ＺＭＰの位置の目標軌道を規定する前記床反力要素パラメータの暫定値を決定する床反力要素パラメータ暫定決定手段と、
前記決定された床反力要素パラメータの暫定値により規定される前記ＺＭＰの位置の目標軌道である暫定ＺＭＰ軌道と前記動力学モデルとを用いて、前記運動継続性必要条件を満足するように前記暫定ＺＭＰ軌道を修正するためのＺＭＰ修正量を決定するＺＭＰ修正量決定手段と、
前記決定されたＺＭＰ修正量によって前記暫定ＺＭＰ軌道を修正してなるＺＭＰの位置が前記存在許容領域内に存するか否かを判断する判断手段とをさらに備えており、
前記第２着地許容領域決定手段は、前記判断手段の判断結果が否定的である場合に、前記遊脚の目標着地位置を前記決定された脚体運動パラメータの暫定値により規定される目標着地位置から所定量だけ変化させた場合における前記ＺＭＰ修正量の変化量と、前記遊脚の目標着地時刻を前記決定された脚体運動パラメータの暫定値により規定される目標着地時刻から所定量だけ変化させた場合における前記ＺＭＰ修正量の変化量とを算出することによって、前記遊脚の先端部の目標着地位置の変化と該遊脚の先端部の目標着地時刻の変化と前記運動継続性必要条件を満足する前記床反力要素の変化との間の関係を規定する着地位置・着地時刻・床反力要素間関係パラメータを決定し、該着地位置・着地時刻・床反力要素間関係パラメータにより規定される関係に従って、前記床反力要素の目標値に関する前記許容範囲と前記遊脚の先端部の目標着地時刻に関する前記許容範囲とを前記遊脚の先端部の目標着地位置の許容領域に変換することにより、前記第２着地許容領域を決定することを特徴とする脚式移動ロボットの制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は脚式移動ロボットの制御装置に関する。
【背景技術】
【０００２】
２足移動ロボット等の脚式移動ロボットの歩行動作等の運動を行ないながら、リアルタイムで該ロボットの目標運動を含む目標歩容を生成し、その目標歩容に追従させるようにロボットの動作制御を行う技術が従来より、本願出願人等により提案されている。例えば、特許文献１には、ロボットの継続的な運動（ロボットの姿勢が崩れるような発散を生じない運動）を行い得るようにするために、同じパターンの運動を繰り返す周期的な歩容を、ロボットの目標運動の将来的な収束目標とし、この周期的な歩容の運動に、ロボットの１歩毎の目標運動を収束させるようにして、該ロボットの目標歩容を生成する技術が本願出願人により提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許３７２６０８１号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、脚式移動ロボットの目標歩容は、運動学的あるいは動力学的な種々様々の必要条件を満足し得るように生成する必要がある。例えば、脚体の運動に関しては、その関節の可動範囲が機構的な制約を受けることから、その関節の可動範囲内で脚体の目標運動を決定する必要がある。また、ロボットに作用する床反力の作用点としてのＺＭＰ（Zero Moment Point）は、ロボットの脚体と床面との接触面に応じて定まる、所謂、支持多角形に存在しなければならないので、その条件を満足するように、該ＺＭＰの目標位置、あるいは、所定の作用点周りの床反力モーメントの目標値を設定する必要がある。また、ロボットの継続的な運動を安定に行ない得るようにするためには、前記特許文献１に見られる如く、目標運動の軌道が将来において、周期的な歩容の運動に収束するように該目標運動を生成する必要がある。
【０００５】
一方、脚式移動ロボットは、接地させた各脚体を介して外力としての床反力を受けつつ、その外力によって動力学的に実現可能な運動を行なうものであるから、該ロボットの目標歩容を該ロボットの運動を行ないつつリアルタイムで生成する場合、特に、該ロボットの各脚体の先端部の目標運動軌道（特にロボットの各脚体の先端部の着地位置や、その着地タイミング）を、上記の如き種々様々の必要条件下で効率よく適切に設定することが望まれる。
【０００６】
しかるに、ロボットの目標歩容を生成するために考慮すべき種々様々な必要条件は、一般に、それぞれの直接的な制約対象が異なる。このため、従来は、例えば、脚体の運動を直接的に制約する特定の必要条件を満足するように、各脚体の先端部の運動軌道を仮決めした上で、ＺＭＰの目標位置の軌道等を決定しつつロボット全体の目標歩容を試行的に生成し、その生成した目標歩容が他の必要条件を満足するか否かを観測するという処理を繰り返すことによって、各脚体の先端部の目標運動軌道を探索的に決定するということが一般に行なわれている。
【０００７】
しかるに、このような手法では、種々様々な必要条件を満足することが可能となる各脚体の先端部の目標運動軌道を決定するまでに時間がかかる場合があり、ひいては、各脚体の先端部の好適な目標運動軌道を効率よく短時間で決定することが困難となる場合がある。
【０００８】
本発明はかかる背景に鑑みてなされたものであり、脚式移動ロボットの運動中に、複数の必要条件を満足させることが可能となる各脚体の先端部の運動軌道を効率よく決定しつつ、前記複数の必要条件を満足させる目標歩容を生成することができる制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の脚式移動ロボットの制御装置は、かかる目的と達成するために、基体から延設された複数の脚体を備える脚式移動ロボットの運動中に、複数種類の必要条件を満足するように、各脚体の先端部の運動軌道を規定する脚体運動パラメータと前記ロボットに作用させるべき床反力の所定の構成要素である床反力要素の目標軌道を規定する床反力要素パラメータとを決定しつつ、該脚体運動パラメータと床反力要素パラメータとを用いて該ロボットの目標運動を少なくとも含む目標歩容を生成し、その目標歩容に該ロボットの実際の歩容を追従させるように該ロボットの動作制御を行う制御装置であって、
前記複数種類の必要条件は、前記脚体運動パラメータにより規定される各脚体の先端部の運動軌道が、該脚体の幾何学的な可動範囲内での運動軌道となるという幾何学的脚体運動必要条件と、前記床反力要素パラメータにより規定される前記床反力要素の目標軌道が、前記ロボットの動力学を表現する動力学モデル上での該ロボットの継続的な運動を実現し得る目標軌道となるという運動継続性必要条件と、前記床反力要素パラメータにより規定される前記床反力要素の目標軌道における該床反力要素の目標値が所定の許容範囲内に収まるという床反力要素許容範囲必要条件とを少なくとも含んでおり、
さらに前記床反力要素は、前記ロボットに作用する全床反力の作用点としてのＺＭＰの位置であり、前記床反力要素の目標値に関する前記許容範囲は、前記ロボットと床面との接触面に応じて定まる支持多角形内に設定される前記ＺＭＰの存在許容領域であり、
前記ロボットの脚体のうち、現在時刻以後に着地させようとする遊脚の先端部の目標着地位置の第１の許容領域である第１着地許容領域を前記幾何学的脚体運動必要条件を満足するように決定する第１着地許容領域決定手段と、
前記運動継続性必要条件と前記床反力要素許容範囲必要条件とを満足する前記床反力要素の目標軌道を決定し得る前記目標着地位置の第２の許容領域である第２着地許容領域を、少なくとも前記遊脚の先端部の目標着地位置の変化と前記運動継続性必要条件を満足する前記床反力要素の変化との間の関係と、前記床反力要素の目標値に関する前記許容範囲とに基づいて決定する第２着地許容領域決定手段と、
少なくとも前記第１着地許容領域と第２着地許容領域とが重なり合う領域内に前記遊脚の先端部の目標着地位置が存するように前記脚体運動パラメータを決定する脚体運動パラメータ決定手段と、
該脚体運動パラメータを用いて、前記床反力要素の目標軌道を規定する前記床反力要素パラメータを決定する床反力要素パラメータ決定手段とを備えることを特徴とする（第１発明）。
【００１０】
この第１発明によれば、前記幾何学的脚体運動必要条件、運動継続性必要条件、床反力要素許容範囲必要条件という互いに異なる３つの必要条件を満足させ得るように、各脚体の先端部の運動軌道を規定する脚体運動パラメータを決定するための代表的な指標として、前記遊脚の先端部の目標着地位置が用いられる。
【００１１】
この場合、各脚体の運動を直接的に制約する必要条件としての前記幾何学的脚体運動必要条件に対応する前記第１着地許容領域が前記第１着地許容領域決定手段により決定される。すなわち、この第１着地許容領域は、前記幾何学的脚体運動必要条件を満足するように決定される。
【００１２】
一方、前記複数の必要条件のうち、前記運動継続性必要条件と前記床反力要素許容範囲必要条件とは、直接的には、前記床反力要素の目標軌道を制約する必要条件である。ただし、ロボットに作用する床反力は、接地している（着地中の）脚体を介して該ロボットに作用するものであるから、該床反力要素の目標軌道は、結果的に、適宜着地する脚体の先端部の運動軌道（特に前記遊脚の着地位置等）に対する依存性を有することとなる。すなわち、前記遊脚の着地位置を変化させれば、前記運動継続性必要条件と床反力要素許容範囲必要条件とを満足させ得る前記床反力要素の目標軌道も変化する。従って、前記運動継続性必要条件と前記床反力要素許容範囲必要条件とは、各脚体の先端部の目標運動軌道（特に前記遊脚の着地位置等）を間接的に制約する必要条件となる。
【００１３】
そこで、第１発明では、前記運動継続性必要条件と前記床反力要素許容範囲必要条件とを満足する前記床反力要素の目標軌道を決定し得る前記目標着地位置の第２の許容領域である第２着地許容領域を、少なくとも前記遊脚の先端部の目標着地位置の変化と前記運動継続性必要条件を満足する前記床反力要素の変化との間の関係と、前記床反力要素の目標値に関する前記許容範囲とに基づいて決定する前記第２着地許容領域決定手段を備える。
【００１４】
これにより、前記運動継続性必要条件と前記床反力要素許容範囲必要条件とが、前記第２着地許容領域に変換されることとなる。
【００１５】
そして、第１発明では、前記脚体運動パラメータ決定手段によって、少なくとも前記第１着地許容領域と第２着地許容領域とが重なり合う領域内に前記遊脚の先端部の目標着地位置が存するように前記脚体運動パラメータを決定する。さらに、前記床反力要素パラメータ決定手段によって、この脚体運動パラメータを用いて、前記床反力要素の目標軌道を規定する前記床反力要素パラメータを決定する。
【００１６】
この場合、少なくとも前記第１着地許容領域と第２着地許容領域とが重なり合う領域内に前記遊脚の先端部の目標着地位置が存するように前記脚体運動パラメータを決定されるので、該脚体運動パラメータを繰り返し調整したりせずとも、前記運動継続性必要条件と前記床反力要素許容範囲必要条件とを満足し得る床反力要素の目標軌道を規定する床反力要素パラメータを決定できる。
【００１７】
例えば、前記床反力要素パラメータを決定するとき、前記運動継続性必要条件と前記床反力要素許容範囲必要条件とのうちの前記運動継続性必要条件を満足させるように前記床反力要素パラメータを決定することで、基本的には、運動継続性必要条件だけでなく、床反力要素許容範囲必要条件をも満足し得る床反力要素の目標軌道を規定する床反力要素パラメータを決定できる。
【００１８】
従って、第１発明によれば、脚式移動ロボットの運動中に、前記幾何学的脚体運動必要条件、運動継続性必要条件及び床反力要素許容範囲必要条件を満足させることが可能となる各脚体の先端部の運動軌道を効率よく決定しつつ、これらの必要条件を満足させる目標歩容を生成することができる。
また、第１発明では、前記床反力要素は、前記ロボットに作用する全床反力の作用点としてのＺＭＰの位置であり、前記床反力要素の目標値に関する前記許容範囲は、前記ロボットと床面との接触面に応じて定まる支持多角形内に設定される前記ＺＭＰの存在許容領域である。
このため、前記遊脚の先端部の目標着地位置の変化と前記運動継続性必要条件を満足する前記床反力要素の変化との間の関係、あるいは、前記遊脚の先端部の目標着地位置の変化と該遊脚の先端部の目標着地時刻の変化と前記運動継続性必要条件を満足する前記床反力要素の変化との間の関係の線形性が高まり、前記第２着地許容領域の決定処理が容易になる。
【００１９】
なお、第１発明において、前記脚体運動パラメータと床反力要素パラメータとを用いて前記ロボットの目標運動を生成する場合、例えば、該脚体運動パラメータにより規定される各脚体の先端部の目標運動軌道を前提として、前記ロボットの動力学を表現する動力学モデル上で、前記床反力要素パラメータにより規定される前記床反力要素の目標軌道を満足するように、該ロボットの基体の目標運動を含めた該ロボットの全体の目標運動を決定するようにすればよい。あるいは、例えば、ロボットの上体の実際の姿勢あるいは全体重心点の実際の位置を、ロボットの目標運動におけるそれぞれの目標値にフィードバック制御するような場合には、該上体の実際の姿勢あるいは全体重心点の実際の位置と目標値との偏差に応じて、前記動力学モデル上での床反力要素のフィードバック操作量を決定し、前記床反力要素の目標軌道にフィードバック操作量を付加してなる修正軌道を満足するように、ロボットの全体の目標運動を決定するようにしてもよい。
【００２０】
かかる第１発明においては、前記ロボットの外界の環境情報に基づいて、前記遊脚の先端部の目標着地位置の第３の許容領域である第３着地許容領域を決定する第３着地許容領域決定手段をさらに備え、
前記脚体運動パラメータ決定手段は、少なくとも前記第１着地許容領域と第２着地許容領域と第３着地許容領域とが重なり合う領域内に前記遊脚の先端部の目標着地位置が存するように前記脚体運動パラメータを決定することが好ましい（第２発明）。
【００２１】
なお、上記環境情報としては、床面の形状や性状に関する情報（例えば床の凹凸や段差の有無、滑り易さ等の情報）、床面上に設置されている物体等の障害物に関する情報等が挙げられる。
【００２２】
この第２発明によれば、床面上の凹凸部分や段差部分、床面上の滑り易い部分、床面上の障害物等、ロボットの遊脚を着地させることを回避すべき部分を除外するようにして、前記第３着地許容領域を決定することができる。このため、前記遊脚の先端部の目標着地位置が、前記前記幾何学的脚体運動必要条件、運動継続性必要条件、床反力要素許容範囲必要条件だけでなく、ロボットの外界の環境に依存する制約条件をも反映させた適切な位置になるように、前期脚体運動パラメータを決定することが可能となる。
【００２３】
また、上記第１発明又は第２発明においては、前記運動継続性必要条件は、例えば、前記床反力要素パラメータにより規定される床反力要素の目標軌道を前記動力学モデルに入力して前記ロボットの運動を生成した場合に、該生成される運動軌道が、前記ロボットの同一パターンの運動を周期的に繰り返す歩容である周期歩容における運動軌道に収束するという条件であることが好ましい（第３発明）。
【００２４】
この第３発明によれば、ロボットの継続的な運動（ロボットの姿勢が崩れることのない運動）を安定に行い得るように、前記目標歩容を生成できる。
を特徴とする脚式移動ロボットの制御装置。
【００２５】
また、前記第１〜第３発明において、前記脚体運動パラメータ決定手段は、前記遊脚の目標着地時刻を所定の許容範囲内で調整可能に前記脚体運動パラメータを決定する手段である場合には、前記第２着地許容領域決定手段は、前記第２着地許容領域を、前記遊脚の先端部の目標着地位置の変化と該遊脚の先端部の目標着地時刻の変化と前記運動継続性必要条件を満足する前記床反力要素の変化との間の関係と、該床反力要素の目標値に関する前記許容範囲と、前記遊脚の目標着地時刻に関する前記許容範囲とに基づいて決定することが好ましい（第４発明）。
【００２６】
この第４発明によれば、前記第２着地許容領域は、前記遊脚の先端部の目標着地位置の変化と該遊脚の先端部の目標着地時刻の変化と前記運動継続性必要条件を満足する前記床反力要素の変化との間の関係と、該床反力要素の目標値に関する前記許容範囲と、前記遊脚の目標着地時刻に関する前記許容範囲とに基づいて決定される。このため、前記遊脚の目標着地時刻に関する前記許容範囲内での該目標着地時刻の調整による影響分を含めて前記第２着地許容領域を決定できる。
【００２７】
そして、この場合、前記第１着地許容領域と第２着地許容領域とが重なり合う領域内に前記遊脚の先端部の目標着地位置を決定することによって、それに付随して、該遊脚の先端部の目標着地時刻が制約されることとなるので、該目標着地位置と目標着地時刻との組を相互に関連付けて容易に決定することができる。ひいては、該目標着地位置と目標着地時刻との両方の自由度を確保しつつ、前記の３つの必要条件を満足する上で適切な脚体運動パラメータを効率よく決定できる。
【００３０】
また、前記第１〜第３発明において、前記遊脚の目標着地位置が前記第１着地許容領域内に存するように前記脚体運動パラメータの暫定値を決定する脚体運動パラメータ暫定決定手段と、
前記決定された脚体運動パラメータの暫定値を用いて、少なくとも前記床反力要素許容範囲必要条件を満足するように、前記床反力要素としての前記ＺＭＰの位置の目標軌道を規定する前記床反力要素パラメータの暫定値を決定する床反力要素パラメータ暫定決定手段と、
前記決定された床反力要素パラメータの暫定値により規定される前記ＺＭＰの位置の目標軌道である暫定ＺＭＰ軌道と前記動力学モデルとを用いて、前記運動継続性必要条件を満足するように前記暫定ＺＭＰ軌道を修正するためのＺＭＰ修正量を決定するＺＭＰ修正量決定手段と、
前記決定されたＺＭＰ修正量によって前記暫定ＺＭＰ軌道を修正してなるＺＭＰの位置が前記存在許容領域内に存するか否かを判断する判断手段とをさらに備えており、
前記第２着地許容領域決定手段は、前記判断手段の判断結果が否定的である場合に、前記遊脚の目標着地位置を前記決定された脚体運動パラメータの暫定値により規定される目標着地位置から所定量だけ変化させた場合における前記ＺＭＰ修正量の変化量を算出することによって、前記遊脚の先端部の目標着地位置の変化と前記運動継続性必要条件を満足する前記床反力要素の変化との間の関係を規定する着地位置・床反力要素間関係パラメータを決定し、該着地位置・床反力要素間関係パラメータにより規定される関係に従って、前記床反力要素の目標値に関する前記許容範囲を前記遊脚の先端部の目標着地位置の許容領域に変換することにより、前記第２着地許容領域を決定することが好ましい（第５発明）。
【００３１】
この第５発明によれば、前記判断手段の判断結果が肯定的である場合には、前記脚体運動パラメータの暫定値は、結果的に、前記幾何学的脚体運動必要条件、運動継続性必要条件及び床反力要素許容範囲必要条件を満足させることが可能となる各脚体の先端部の運動軌道を規定するものとなる。従って、この場合には、前記第２着地許容領域を決定したりすることなく、前記脚体運動パラメータの暫定値により規定される各脚体の先端の目標運動軌道と、前記床反力要素パラメータの暫定値により規定される前記暫定ＺＭＰ軌道を、前記決定されたＺＭＰ修正量によって修正してなるＺＭＰ軌道（ＺＭＰの目標位置の軌道）とを用いて、前記ロボットの目標歩容を生成すればよい。
【００３２】
一方、前記判断手段の判断結果が否定的である場合には、前記幾何学的脚体運動必要条件、運動継続性必要条件及び床反力要素許容範囲必要条件を満足させることが可能となる各脚体の先端部の運動軌道を規定する脚体運動パラメータを改めて決定するために、前記第２着地許容領域を決定する必要がある。
【００３３】
この場合、前記第２着地許容領域決定手段は、前記遊脚の目標着地位置を前記決定された脚体運動パラメータの暫定値により規定される目標着地位置から所定量だけ変化させた場合における前記ＺＭＰ修正量の変化量を算出することによって、前記着地位置・床反力要素間関係パラメータを決定する。これにより、前記遊脚の先端部の目標着地位置の変化と前記運動継続性必要条件を満足する前記床反力要素の変化との間の関係を規定するパラメータとして信頼性の高い着地位置・床反力要素間関係パラメータを決定できる。
【００３４】
そして、第２着地許容領域決定手段は、このように決定した着地位置・床反力要素間関係パラメータにより規定される関係に従って、前記床反力要素の目標値に関する前記許容範囲を前記遊脚の先端部の目標着地位置の許容領域に変換することにより、前記第２着地許容領域を決定する。これにより、前記運動継続性必要条件と前記床反力要素許容範囲必要条件とを満足する前記床反力要素の目標軌道を決定し得る前記第２着地許容領域を適切に決定できる。
【００３５】
ひいては、前記幾何学的脚体運動必要条件、運動継続性必要条件及び床反力要素許容範囲必要条件を満足させ得る適切な脚体運動パラメータと床反力要素パラメータとを速やかに効率よく決定し、目標歩容を生成することができる。
【００３６】
また、第５発明によれば、前記判断手段の判断結果が否定的となる場合にだけ、前記第２着地許容領域決定手段の処理を実行すればよいので、目標歩容の生成処理の演算負荷を軽減できる。
【００３７】
また、前記第４発明においては、前記遊脚の目標着地位置が前記第１着地許容領域内に存するように前記脚体運動パラメータの暫定値を決定する脚体運動パラメータ暫定決定手段と、
前記決定された脚体運動パラメータの暫定値を用いて、少なくとも前記床反力要素許容範囲必要条件を満足するように、前記床反力要素としての前記ＺＭＰの位置の目標軌道を規定する前記床反力要素パラメータの暫定値を決定する床反力要素パラメータ暫定決定手段と、
前記決定された床反力要素パラメータの暫定値により規定される前記ＺＭＰの位置の目標軌道である暫定ＺＭＰ軌道と前記動力学モデルとを用いて、前記運動継続性必要条件を満足するように前記暫定ＺＭＰ軌道を修正するためのＺＭＰ修正量を決定するＺＭＰ修正量決定手段と、
前記決定されたＺＭＰ修正量によって前記暫定ＺＭＰ軌道を修正してなるＺＭＰの位置が前記存在許容領域内に存するか否かを判断する判断手段とをさらに備えており、
前記第２着地許容領域決定手段は、前記判断手段の判断結果が否定的である場合に、前記遊脚の目標着地位置を前記決定された脚体運動パラメータの暫定値により規定される目標着地位置から所定量だけ変化させた場合における前記ＺＭＰ修正量の変化量と、前記遊脚の目標着地時刻を前記決定された脚体運動パラメータの暫定値により規定される目標着地時刻から所定量だけ変化させた場合における前記ＺＭＰ修正量の変化量とを算出することによって、前記遊脚の先端部の目標着地位置の変化と該遊脚の先端部の目標着地時刻の変化と前記運動継続性必要条件を満足する前記床反力要素の変化との間の関係を規定する着地位置・着地時刻・床反力要素間関係パラメータを決定し、該着地位置・着地時刻・床反力要素間関係パラメータにより規定される関係に従って、前記床反力要素の目標値に関
する前記許容範囲と前記遊脚の先端部の目標着地時刻に関する前記許容範囲とを前記遊脚の先端部の目標着地位置の許容領域に変換することにより、前記第２着地許容領域を決定することが好ましい（第６発明）。
【００３８】
この第６発明によれば、前記判断手段の判断結果が肯定的である場合には、前記第５発明と同様に、前記脚体運動パラメータの暫定値は、結果的に、前記幾何学的脚体運動必要条件、運動継続性必要条件及び床反力要素許容範囲必要条件を満足させることが可能となる各脚体の先端部の運動軌道を規定するものとなる。従って、この場合には、前記第２着地許容領域を決定したりすることなく、前記脚体運動パラメータの暫定値により規定される各脚体の先端の目標運動軌道と、前記床反力要素パラメータの暫定値により規定される前記暫定ＺＭＰ軌道を、前記決定されたＺＭＰ修正量によって修正してなるＺＭＰ軌道（ＺＭＰの目標位置の軌道）とを用いて、前記ロボットの目標歩容を生成すればよい。
【００３９】
一方、前記判断手段の判断結果が否定的である場合には、前記第５発明と同様に、前記第２着地許容領域を決定する必要がある。
【００４０】
この場合、第６発明では、前記第２着地許容領域決定手段は、前記遊脚の目標着地位置を前記決定された脚体運動パラメータの暫定値により規定される目標着地位置から所定量だけ変化させた場合における前記ＺＭＰ修正量の変化量と、前記遊脚の目標着地時刻を前記決定された脚体運動パラメータの暫定値により規定される目標着地時刻から所定量だけ変化させた場合における前記ＺＭＰ修正量の変化量とを算出することによって、前記着地位置・着地時刻・床反力要素間関係パラメータを決定する。これにより、前記遊脚の先端部の目標着地位置の変化と該遊脚の先端部の目標着地時刻の変化と前記運動継続性必要条件を満足する前記床反力要素の変化との間の関係を規定するパラメータとして信頼性の高い着地位置・着地時刻・床反力要素間関係パラメータを決定できる。
【００４１】
そして、第２着地許容領域決定手段は、このように決定した着地位置・着地時刻・床反力要素間関係パラメータにより規定される関係に従って、前記床反力要素の目標値に関する前記許容範囲と前記遊脚の先端部の目標着地時刻に関する前記許容範囲とを前記遊脚の先端部の目標着地位置の許容領域に変換することにより、前記第２着地許容領域を決定する。これにより、前記遊脚の先端部の目標着地時刻の調整による影響分を含めて、前記運動継続性必要条件と前記床反力要素許容範囲必要条件とを満足する前記床反力要素の目標軌道を決定し得る前記第２着地許容領域を適切に決定できる。
【００４２】
ひいては、前記幾何学的脚体運動必要条件、運動継続性必要条件及び床反力要素許容範囲必要条件を満足させ得る適切な脚体運動パラメータと床反力要素パラメータとを速やかに効率よく決定し、目標歩容を生成することができる。
【００４３】
また、第６発明によれば、前記第５発明と同様に、前記判断手段の判断結果が否定的となる場合にだけ、前記第２着地許容領域決定手段の処理を実行すればよいので、目標歩容の生成処理の演算負荷を軽減できる。
【図面の簡単な説明】
【００４４】
【図１】本発明の第１実施形態における脚式移動ロボットとしての２足移動ロボットの概略構成を示す斜視図。
【図２】図１のロボットに備えた制御ユニットのハード構成を示すブロック図。
【図３】制御ユニットの機能的構成を示すブロック図。
【図４】図３に示す補償全床反力モーメント分配器の処理を示すブロック図。
【図５】図３に示す歩容生成装置で生成される目標床反力鉛直成分軌道の例を示すグラフ。
【図６】図３に示す歩容生成装置で生成される目標ＺＭＰ軌道（Ｘ軸方向成分）の例を示すグラフ。
【図７】図３に示す歩容生成装置と姿勢安定化制御演算部との処理で使用されるロボットの動力学モデルを視覚的に示す図。
【図８】図３に示す歩容生成装置が実行するメインルーチン処理を示すフローチャート。
【図９】図８のＳ０２０の処理で使用する第１着地許容領域の例を視覚的に示す図。
【図１０】図１に示すロボットの姿勢の発散状態を視覚的に示す図。
【図１１】図８のＳ０２２のサブルーチン処理を示すフローチャート。
【図１２】図１に示すロボットの足平の動きの形態と支持脚座標系とを例示する図。
【図１３】図１に示すロボットの定常旋回歩容での目標床反力鉛直成分軌道を例示するグラフ。
【図１４】図１に示すロボットの定常旋回歩容での目標ＺＭＰ軌道（Ｘ軸方向成分）を例示するグラフ。
【図１５】図８のＳ０２４のサブルーチン処理を示すフローチャート。
【図１６】図１５のＳ２０８のサブルーチン処理を示すフローチャート。
【図１７】図８のＳ０２６のサブルーチン処理を示すフローチャート。
【図１８】図８のＳ０２８のサブルーチン処理を示すフローチャート。
【図１９】図１８のＳ７０２のサブルーチン処理を示すフローチャート。
【図２０】図１８のＳ７１０の処理を説明するためのグラフ。
【図２１】図８のＳ０３０の処理を説明するための図。
【図２２】図８のＳ０３１の判断結果が否定的である場合に実行されるＳ０２０の処理で使用する第２着地許容領域の例を視覚的に示す図。
【図２３】図８のＳ０３１の判断結果が否定的である場合に実行されるＳ０２０での遊脚足平の目標着地位置の決定処理を説明するための図。
【図２４】図８のＳ０３２のサブルーチン処理を示すフローチャート。
【図２５】本発明の第２実施形態における図８のＳ０２０での遊脚足平の目標着地位置の決定処理を説明するための図。
【発明を実施するための形態】
【００４５】
［第１実施形態］
以下、脚式移動ロボットとして２足移動ロボットを例にとって、本発明の第１実施形態を説明する。
【００４６】
図１に示す如く、本実施形態の２足移動ロボット１（以下、単にロボット１という）は、基体としての上体２４と、この上体２４を床面上で移動させる移動機構として該上体２４から延設された左右一対の脚体２，２とを備える。
【００４７】
上体２４は、両脚体２，２の基端部（上端部）に後述する腰関節（股関節）を介して連結されており、両脚体２，２のうちの接地した脚体によって床面の上方に支持される。
【００４８】
両脚体２，２は同一構造であり、それぞれ６個の関節を備える。その６個の関節は上体２４側から順に、腰（股）の回旋用（上体２４に対するヨー方向の回転用）の関節１０Ｒ，１０Ｌと、腰（股）のロール方向（Ｘ軸まわり）の回転用の関節１２Ｒ，１２Ｌと、腰（股）のピッチ方向（Ｙ軸まわり）の回転用の関節１４Ｒ，１４Ｌと、膝部のピッチ方向の回転用の関節１６Ｒ，１６Ｌと、足首部のピッチ方向の回転用の関節１８Ｒ，１８Ｌと、足首部のロール方向の回転用の関節２０Ｒ，２０Ｌとから構成される。
【００４９】
なお、本実施形態の説明では、符号Ｒ，Ｌはそれぞれ右側脚体、左側脚体に対応するものであることを意味する。また、Ｘ軸、Ｙ軸、Ｚ軸は、後述する支持脚座標系の３つの座標軸を意味する。この支持脚座標系のＸ軸方向、Ｙ軸方向は、水平面上で互いに直交する２軸方向であり、Ｘ軸方向はロボット１の前後方向（ロール軸方向）、Ｙ軸方向はロボット１の左右方向（ピッチ軸方向）に相当する。また、Ｚ軸方向は鉛直方向（重力方向）であり、ロボット１の上下方向（ヨー軸方向）に相当する。
【００５０】
各脚体２の関節１０Ｒ（Ｌ），１２Ｒ（Ｌ），１４Ｒ（Ｌ）によって３自由度の腰関節（股関節）が構成され、関節１６Ｒ（Ｌ）によって１自由度の膝関節が構成され、関節１８Ｒ（Ｌ），２０Ｒ（Ｌ）によって２自由度の足首関節が構成されている。
【００５１】
そして、腰関節（股関節）１０Ｒ（Ｌ），１２Ｒ（Ｌ），１４Ｒ（Ｌ）と膝関節１６Ｒ（Ｌ）とは大腿リンク３２Ｒ（Ｌ）で連結され、膝関節１６Ｒ（Ｌ）と足首関節１８Ｒ（Ｌ），２０Ｒ（Ｌ）とは下腿リンク３４Ｒ（Ｌ）で連結されている。また、各脚体２の足首関節１８Ｒ（Ｌ），２０Ｒ（Ｌ）の下部に、各脚体２の先端部（下端部）を構成する足平２２Ｒ（Ｌ）が取着されている。また、各脚体２の上端部（基端部）が、腰関節（股関節）１０Ｒ（Ｌ），１２Ｒ（Ｌ），１４Ｒ（Ｌ）を介して上体２４に連結されている。
【００５２】
上記した各関節は、例えば本願出願人が特開平３−１８４７８２号などにて提案した公知の構造のものでよい。この場合、各関節を回転駆動するアクチュエータは、減速機を備える電動モータ４２（図２参照）により構成される。
【００５３】
各脚体２の上記構成により、各脚体２の足平２２Ｒ（Ｌ）は、上体２４に対して６自由度を有する。そして、ロボット１の移動に際して両脚体２，２を合わせて６＊２＝１２個（この明細書で「＊」はスカラに対する演算においては乗算を示し、ベクトルに対する演算においては外積を示す）の関節をそれぞれ適宜な角度に駆動することで、両足平２２Ｒ，２２Ｌの所望の運動を行なうことができる。これにより、ロボット１は歩行動作や走行動作等、３次元空間を移動する運動を行うことが可能となっている。
【００５４】
なお、図示は省略するが、本実施形態では、上体２４の上部の両側部には左右一対の腕体が取り付けられると共に、上体２４の上端部には頭部が搭載される。そして、各腕体は、それに備える複数の関節（肩関節、肘関節、手首関節など）によって、該腕体を上体２４に対して前後に振る等の運動を行なうことが可能となっている。ただし、これらの腕体および頭部は無くてもよい。
【００５５】
上体２４の内部にはロボット１の動作制御を行う制御ユニット２６が格納されている。なお、図１では図示の便宜上、制御ユニット２６を上体２４の外部に記載している。
【００５６】
各脚体２の足首関節１８Ｒ（Ｌ），２０Ｒ（Ｌ）と足平２２Ｒ（Ｌ）との間には６軸力センサ３６が介装されている。この６軸力センサ３６は、床から足平２２Ｒ（Ｌ）を介して各脚体２に伝達される床反力の３軸方向の並進力成分及び３軸まわりのモーメント成分を検出し、その検出信号を制御ユニット２６に出力する。
【００５７】
上体２４には、鉛直方向（重力方向）に対する上体２４の傾斜角（ロール方向及びピッチ方向の傾斜角）とその変化速度（角速度）とを計測するための傾斜センサ４０が搭載されている。この傾斜センサ４０は、より詳しくは、加速度センサとジャイロセンサ等のレートセンサ（角速度センサ）とから構成され、これらのセンサの検出信号を制御ユニット２６に出力する。そして、制御ユニット２６において、傾斜センサ４０の出力を基に、公知の手法によって鉛直方向に対する上体２４の傾斜角と角速度とが計測される。
【００５８】
また、各関節を回転駆動する電動モータ４２（図２参照）には、各関節の回転角を検出するためのエンコーダ（ロータリエンコーダ）４４（図２参照）が付設され、該エンコーダ４４の検出信号が制御ユニット２６に出力される。
【００５９】
図２を参照して、制御ユニット２６はマイクロコンピュータを有する電子回路ユニットにより構成されており、ＣＰＵからなる第１演算装置５０及び第２演算装置５２、Ａ／Ｄ変換器５４、カウンタ５６、Ｄ／Ａ変換器５８、ＲＡＭ６０、ＲＯＭ６２、並びにこれらの間のデータ授受を行なうバスライン６４を備えている。
【００６０】
この制御ユニット２６では、前記６軸力センサ３６及び傾斜センサ４０の出力はＡ／Ｄ変換器５４でデジタル値に変換された後、バスライン６４を介してＲＡＭ６０に入力される。また、ロボット１の各関節のエンコーダ（ロータリエンコーダ）４４の出力はカウンタ５６を介してＲＡＭ６０に入力される。
【００６１】
前記第１の演算装置５０は、後述する目標歩容を生成すると共に、関節変位指令（各関節の回転角の目標値）を算出し、ＲＡＭ６０に送出する。また、第２の演算装置５２はＲＡＭ６０から関節変位指令と、前記エンコーダ４４の出力からカウンタ５６を介して計測された実関節変位（各関節の回転角の実測値）とを読み出し、該実関節変位を関節変位指令に追従させるために必要な各関節の電動モータ４２の駆動指令（電動モータ４２の出力トルクを規定する指令値）を算出する。
【００６２】
そして、第２の演算装置５２は、その算出した駆動指令をＤ／Ａ変換器５８を介して電動モータ４２の駆動用のサーボアンプ４６に出力する。このとき、サーボアンプ４６は、入力された駆動指令に応じて電動モータ４２を駆動する（電動モータ４２に通電する）。これにより、各関節の実関節変位が関節変位指令に追従するように制御される。
【００６３】
次に、図３を参照して、本実施形態におけるロボット１の制御装置の動作の概要を説明する。図３中の「実ロボット」以外の部分が制御ユニット２６が実行する処理（主として第１の演算装置５０及び第２の演算装置５２の処理）によって実現される機能である。
【００６４】
なお、図３では、便宜上、ロボット１に搭載された前記の各センサの出力から制御ユニット２６が認識する実測値（実関節変位など）が実ロボット１から出力されるものとして示している。また、以下の説明では、脚体２の左右を特に区別する必要がないときは、前記符号Ｒ，Ｌを省略する。
【００６５】
制御ユニット２６は、ロボット１の動作（歩容）の目標である目標歩容を、該ロボット１の動力学（ロボット１の運動とロボット１に作用する外力との関係）を表現する動力学モデルを用いて生成して出力する歩容生成装置１００を備える。この歩容生成装置１００が生成して出力する目標歩容は、本実施形態では、ロボット１の各関節の変位量（回転角）の軌道を規定する目標運動と、ロボット１に作用する外力に関する目標とから構成される。
【００６６】
より具体的には、本実施形態では、該目標歩容は、上体２４の目標位置及び目標姿勢の軌道である目標上体位置姿勢軌道と、各足平２２の目標位置及び目標姿勢の軌道である目標足平位置姿勢軌道と、各腕体の目標姿勢の軌道である目標腕姿勢軌道と、ロボット１のＺＭＰ（Zero Morment Point）の目標位置の軌道である目標ＺＭＰ軌道と、ロボット１に作用する外力としての全床反力の目標の軌道である目標全床反力軌道とから構成される。これらの構成要素のうち、目標上体位置姿勢軌道、目標足平位置姿勢軌道及び目標腕姿勢軌道が目標運動に相当し、目標ＺＭＰ軌道及び目標全床反力軌道が、外力に関する目標に相当する。なお、脚体２や腕体以外に、上体２４に対して可動な部位を備える場合には、その可動部位の目標位置姿勢軌道がロボット１の目標運動に加えられる。
【００６７】
ここで、上記目標歩容における「軌道」は時間的変化のパターン（時系列パターン）を意味し、歩容生成装置１００の制御周期（演算処理周期）毎に算出される瞬時値の時系列により構成される。以下の説明では、「軌道」の代わりに「パターン」と称することもある。また、以下の説明では、誤解を生じるおそれがない場合には、しばしば「目標」を省略する。
【００６８】
上体２４の位置及び速度は、上体２４のあらかじめ定めた代表点（例えば左右の股関節の間の中央点等）の位置及びその移動速度を意味する。同様に、各足平２２の位置及び速度は、各足平２２のあらかじめ定めた代表点の位置及びその移動速度を意味する。各足平２２の代表点は、本実施形態では、各足平２２の底面上の点、例えば、各脚体２の足首関節の中心から各足平２２の底面への垂線が該底面と交わる点に設定される。
【００６９】
また、「姿勢」は空間的な向きを意味する。例えば上体姿勢は鉛直方向に対するロール方向（Ｘ軸まわり）の上体２４の傾斜角（姿勢角）とピッチ方向（Ｙ軸まわり）の上体２４の傾斜角（姿勢角）とで表され、足平姿勢は各足平２２に固定的に設定された２軸の空間的な方位角で表される。本明細書では、上体姿勢は上体姿勢角ということもある。なお、上体姿勢にヨー方向（Ｚ軸まわり）の上体２４の回転角を含めてもよい。
【００７０】
また、歩容のうちの、ロボット１に作用する外力に係わる要素（目標ＺＭＰおよび目標全床反力）以外の構成要素、すなわち足平位置姿勢、上体位置姿勢等、ロボット１の各部の運動に係わる歩容を総称的に「運動」という。
【００７１】
また、各足平２２に作用する床反力（並進力及びモーメントからなる床反力）を「各足平床反力」と呼び、ロボット１の全て（２つ）の足平２２Ｒ，２２Ｌについての「各足平床反力」の合力を「全床反力」という。ただし、以下の説明においては、各足平床反力はほとんど言及しないので、特にことわらない限り、「床反力」は「全床反力」と同義として扱う。
【００７２】
ＺＭＰは、ロボット１の運動によって発生する慣性力とロボット１に作用する重力との合力がその点まわりに作用するモーメントの水平成分（水平軸まわりのモーメント成分）が“０”になる床面上の点を意味する。動力学的平衡条件を満足する歩容では、ＺＭＰと床反力中心点とは一致する。この場合、目標ＺＭＰを与えるということは、目標床反力中心点を与えるということと同じである。
【００７３】
目標床反力は、一般的には、作用点とその点に作用する並進力及びモーメントとにより表現される。作用点はどこに設定してもよいが、本実施形態では、目標ＺＭＰを目標床反力の作用点とする。動力学的平衡条件を満足する歩容では、上記の如くＺＭＰと床反力中心点とは一致するので、目標ＺＭＰを作用点とする目標床反力のモーメント成分は、鉛直成分（Ｚ軸まわりのモーメント成分）を除いて零になる。
【００７４】
歩容生成装置１００により生成される目標歩容のうち、目標上体位置姿勢軌道と目標腕姿勢軌道とは、ロボット幾何学モデル（キネマティクス演算部）１０２に入力される。
【００７５】
また、目標足平位置姿勢軌道、目標ＺＭＰ軌道（目標床反力中心点軌道）、および目標全床反力軌道（詳細には目標並進床反力鉛直成分軌道、目標並進床反力水平成分軌道、目標ＺＭＰまわりの目標床反力モーメント軌道）は、複合コンプライアンス動作決定部１０４と目標床反力分配器１０６とに入力される。
【００７６】
そして、目標床反力分配器１０６にて、目標床反力は各足平２２Ｒ，２２Ｌに分配され、目標各足平床反力中心点（各足平２２Ｒ，２２Ｌの床反力中心点の目標位置）と、目標各足平床反力（各足平２２Ｒ，２２Ｌの床反力中心点に作用させる目標床反力）とが決定される。この決定された目標各足平床反力中心点及び目標各足平床反力の軌道は複合コンプライアンス動作決定部１０４に入力される。なお、歩容生成装置１００から出力する目標床反力は、複合コンプライアンス動作決定部１０４によるコンプライアンス制御に必要な成分だけを出力しても良い。例えば、目標並進床反力水平成分を歩容生成装置１００から出力することを省略してもよい。
【００７７】
複合コンプライアンス動作決定部１０４では、目標足平位置姿勢を修正してなる機構変形補償付き修正目標足平位置姿勢が求められ、この修正目標足平位置姿勢の軌道がロボット幾何学モデル１０２に入力される。
【００７８】
ロボット幾何学モデル１０２は、入力された目標上体位置姿勢と機構変形補償付き修正目標足平位置姿勢とを満足する両脚体２，２の各関節の関節変位指令を、ロボット１のキネマティクスモデル（剛体リンクモデル）に基づく逆キネマティクス演算によって算出し、その算出した関節変位指令を関節変位コントローラ１０８に出力する。さらに、ロボット幾何学モデル１０２は、目標腕姿勢を満足する各腕体の各関節の関節変位指令を算出し、その算出した関節変位指令を関節変位コントローラ１０８に出力する。
【００７９】
そして、関節変位コントローラ１０８は、ロボット幾何学モデル１０２で算出された関節変位指令を目標値として、ロボット１の両脚体２，２及び両腕体の各関節の回転角（実関節変位）を前記サーボアンプ４６を介して追従制御する。より詳しくは、関節変位コントローラ１０８は、エンコーダ４４の出力から計測される実関節変位（実測値）を関節変位指令に一致させるように、アクチュエータ駆動力としての電動モータ４２の出力トルクを調整する。
【００８０】
上記のような追従制御によるロボット１の実際の運動によって該ロボット１の各足平２２に実際に作用する床反力である実各足平床反力が前記６軸力センサ３６の出力から計測され、その実各足平床反力の実測値が前記複合コンプライアンス動作決定部１０４に入力される。
【００８１】
また、ロボット１の上体２４の実際の姿勢角（鉛直方向に対する傾斜角）である実上体姿勢角が前記傾斜センサ４０の出力から計測され、その実上体姿勢角の実測値が姿勢安定化制御演算部１１２に入力される。さらに、姿勢安定化制御演算部１１２には、歩容生成装置１００が生成する目標上体位置姿勢のうちの目標上体姿勢角（鉛直方向に対する上体２４の姿勢角の目標値）等も入力される。目標上体姿勢角は、本実施形態では一定値（固定値）であり、例えば、ロボット１の上体２４の体幹軸が鉛直方向を向く姿勢での該上体２４の姿勢角（＝０）である。このように目標上体姿勢角が一定値（固定値）である場合には、姿勢安定化制御演算部１１２に目標上体姿勢角を入力することを省略してもよい。
【００８２】
そして、姿勢安定化制御演算部１１２は、入力される実上体姿勢角（実測値）と目標上体姿勢角との偏差である上体姿勢角偏差Δθを算出する。さらに、姿勢安定化制御演算部１１２は、この上体姿勢角偏差Δθを“０”に収束させるための要求操作量（フィードバック要求操作量）として、目標ＺＭＰまわりでロボット１に付加的に作用させる床反力モーメントの要求値である補償全床反力モーメントMdmdを、算出した上体姿勢角偏差Δθに応じてフィードバック制御則により算出する。
【００８３】
この場合、フィードバック制御則としては、例えばＰＤ則が用いられる。すなわち、上体姿勢角偏差Δθと、その時間的変化率（微分値）Δωとから、次式５０によって、補償全床反力モーメントMdmdが算出される。
【００８４】
Ｍdmd＝Ｋ1＊Δθ＋Ｋ2＊ΔωＶx      ……式５０
この式５０におけるＫ1、Ｋ2は、それぞれ比例ゲイン、微分ゲインである。これらのＫ1、Ｋ2の値は、本実施形態では、あらかじめ設定された所定値である。
【００８５】
この場合、補償全床反力モーメントMdmdは、より詳しくは、ロール方向（Ｘ軸まわり）の成分Mdmdxと、ピッチ方向（Ｙ軸まわり）の成分Mdmdyとからなる。Mdmdx，Mdmdyは、それぞれ、上体姿勢角偏差Δθのうちのロール方向（Ｘ軸まわり）の成分、ピッチ方向（Ｙ軸まわり）の成分を“０”に収束させるために必要な、目標ＺＭＰまわりの要求モーメント（詳しくは目標ＺＭＰまわりの床反力モーメントの摂動分の要求値）を意味する。
【００８６】
そして、Ｘ軸まわりの成分Ｍdmdxは、Δθ、ΔωのＸ軸まわりの成分に応じて式５０により算出される。また、Ｙ軸まわりの成分Ｍdmdyは、Δθ、ΔωのＹ軸まわりの成分に応じて式５０により算出される。
【００８７】
なお、式５０のゲインＫ1、Ｋ2の値は、ロボット１の運動状態に応じて適宜可変的に設定するようにしてもよい。例えば、ロボット１の全体重心又は上体２４の鉛直方向の慣性力に応じて、Ｋ1、Ｋ2の一方又は両方の値を可変的に決定するようにしてもよい。このようにすることにより、ロボット１の運動に伴う鉛直方向の慣性力の影響を補償して、上体姿勢角偏差Δθを円滑に“０”に収束させ得るＭdmdの値を算出することができる。
【００８８】
また、Δθを後述する倒立振子モデルの質点の位置偏差に変換し（具体的には、Δθに後述する上体質点２４ｂの高さｈを乗じる）、この位置偏差とその時間的変化率とからＰＤ則により、Ｍdmdを算出するようにしてもよい。
【００８９】
姿勢安定化制御演算部１１２で決定された補償全床反力モーメントMdmdは、補償全床反力モーメント分配器１１０を介してコンプライアンス制御用目標床反力モーメントとモデル操作床反力モーメントとに分配される。
【００９０】
コンプライアンス制御用目標床反力モーメントは、前記上体姿勢角偏差Δθを“０”に近づけるために、実ロボット１に付加的に作用させる目標ＺＭＰまわりの摂動床反力モーメントである。モデル操作床反力モーメントは、コンプライアンス制御用目標床反力モーメントと同じ目的のために後述する歩容生成用の動力学モデルに付加的に発生させる目標ＺＭＰまわりの摂動床反力モーメントである。モデル操作床反力モーメントは、言い換えると、歩容生成装置１００により最終的に決定された目標歩容（歩容生成装置１００が出力する目標歩容）の運動が目標ＺＭＰまわりに発生する摂動床反力モーメントである。
【００９１】
これらの床反力モーメントは、ロール方向（Ｘ軸まわり）及びピッチ方向（Ｙ軸まわり）の各成分毎に以下のように決定される。まず、モデル操作床反力モーメントが次式５２により決定される。なお、式５２におけるMdmdは、ロール方向（Ｘ軸まわり）及びピッチ方向（Ｙ軸まわり）の各成分（Mdmdx又はMdmdy）を意味する。同様に、床反力モーメント許容範囲は、ロール方向（Ｘ軸まわり）及びピッチ方向（Ｙ軸まわり）の各成分の床反力モーメントの許容範囲を意味する。この床反力モーメント許容範囲は、歩容生成装置１００において（図２４のＳ１００８において）後述するごとく決定されるものである。
【００９２】
Mdmd＞床反力モーメント許容範囲上限値である場合
モデル操作床反力モーメント＝−（Mdmd−床反力モーメント許容範囲上限値）
Mdmd＜床反力モーメント許容範囲下限値である場合
モデル操作床反力モーメント＝−（Mdmd−床反力モーメント許容範囲下限値）
床反力モーメント許容範囲下限値≦Mdmd≦床反力モーメント許容範囲上限値である場合
モデル操作床反力モーメント＝０
……式５２
なお、上記式５２では、補償全床反力モーメントMdmd（詳しくはMdmdx又はMdmdy）そのものを床反力モーメント許容範囲と比較しているが、より一般的には、上記式５２で床反力モーメント許容範囲と比較すべき対象は、Mdmdを目標ＺＭＰまわりの床反力モーメントの基準瞬時値に加えてなるモーメントである。該基準瞬時値は、前記上体姿勢角偏差Δθが定常的に“０”に維持されていると仮定した場合に歩容生成装置１００が生成する目標全床反力のうちの目標ＺＭＰまわりのモーメントである。
【００９３】
この場合、本実施形態では、目標ＺＭＰまわりのモーメントの基準瞬時値は、ロール方向（Ｘ軸まわり）及びピッチ方向（Ｙ軸まわり）のいずれの成分についても、定常的に“０”である。従って、この基準瞬時値にMdmdを加えたものは、Mdmdに等しい。このため、上記式５２では、Mdmd（詳しくはMdmdx又はMdmdy）を直接的に床反力モーメント許容範囲と比較するようにしている。
【００９４】
次に、コンプライアンス制御用目標床反力モーメントがロール方向（Ｘ軸まわり）及びピッチ方向（Ｙ軸まわり）の各成分毎に次式５４により決定される。なお、式５０の場合と同様に、式５４におけるMdmdは、ロール方向（Ｘ軸まわり）及びピッチ方向（Ｙ軸まわり）の各成分（Mdmdx又はMdmdy）を意味する。
【００９５】
コンプライアンス制御用目標床反力モーメント
＝Mdmd＋モデル操作床反力モーメント        ……式５４
従って、コンプライアンス制御用目標床反力モーメントとモデル操作床反力モーメントとの差がMdmdに等しくなるようにそれらの床反力モーメントが決定される。
【００９６】
上記のような演算を行なう補償全床反力モーメント分配器１１０をブロック図で表すと、図４に示すようになる。この演算処理により、ロール方向（Ｘ軸まわり）及びピッチ方向（Ｙ軸まわり）の各成分毎に、補償全床反力モーメントMdmd（Mdmdx又はMdmdy）が、床反力モーメント許容範囲内に収まっている場合には、Mdmdがそのままコンプライアンス制御用目標床反力モーメントとして決定されると共に、モデル操作床反力モーメントは“０”に決定される。
【００９７】
また、ロール方向（Ｘ軸まわり）及びピッチ方向（Ｙ軸まわり）の各成分毎に、補償全床反力モーメントMdmd（Mdmdx又はMdmdy）が、床反力モーメント許容範囲から逸脱している場合には、床反力モーメント許容範囲の上限値及び下限値のうちのMdmdに近い方の境界値が、コンプライアンス制御用目標床反力モーメントとして決定されると共に、床反力モーメント許容範囲からのMdmdの逸脱分（＝Mdmd−床反力モーメント許容範囲の境界値）の符号を反転させてなるモーメントがモデル操作床反力モーメントとして決定される。
【００９８】
図３の説明に戻って、歩容生成装置１００には上記の如く決定されたモデル操作床反力モーメントが入力される。また、歩容生成装置１００には、ロボット１の周辺の床形状情報（より一般的には、ロボット１の外界の環境情報）や後述の要求パラメータも入力される。
【００９９】
そして、モデル操作床反力モーメントや床形状情報、要求パラメータが入力された歩容生成装置１００は、詳細は後述するが、目標ＺＭＰ軌道を決定しつつ、その決定した目標ＺＭＰまわりの床反力モーメントの水平成分がモデル操作床反力モーメントとなるように、動力学モデルを用いて目標歩容の運動（目標運動）を生成する。この場合、足平位置姿勢軌道は、上記床形状情報と要求パラメータとを反映させて決定される。
【０１００】
なお、歩容生成装置１００から複合コンプライアンス動作決定部１０４に対して出力される目標全床反力は、目標ＺＭＰまわりの床反力モーメントの水平成分が“０”になることを目標とするものとして出力される。
【０１０１】
また、補償全床反力モーメント分配器１１０で上記の如く決定されたコンプライアンス制御用目標床反力モーメントは、複合コンプライアンス動作決定部１０４に入力される。そして、複合コンプライアンス動作決定部１０４は、歩容生成装置１００が生成する目標歩容の運動にロボット１の運動を追従させつつ、目標ＺＭＰまわりの実床反力モーメントがコンプライアンス制御用目標床反力モーメントに近づくように、目標足平位置姿勢を修正することにより、機構変形補償付き修正目標足平位置姿勢（軌道）を決定する。
【０１０２】
この場合、ロボット１の足平位置姿勢及び床反力の全ての状態を目標に一致させることは事実上不可能であるので、これらの間にトレードオフ関係を与えて妥協的になるべく一致させる。すなわち、複合コンプライアンス動作決定部１０４は、各目標に対する制御偏差に重みを与えて、制御偏差（あるいは制御偏差の２乗）の重み付き平均が最小になるように機構変形補償付き修正目標足平位置姿勢（軌道）を決定する。
【０１０３】
換言すれば、目標ＺＭＰまわりの実床反力モーメントと、ロボット１の実際の足平位置姿勢とがそれぞれコンプライアンス制御用目標床反力モーメント、目標足平位置姿勢にできるだけ近づくように機構変形補償付き修正目標足平位置姿勢（軌道）が決定される。そして、複合コンプライアンス動作決定部１０４は、この修正目標足平位置姿勢をロボット幾何学モデル１０２に足平位置姿勢の最終的な目標値として出力することで、ロボット１の動作を制御する。すなわち、複合コンプライアンス動作決定部１０４は、ロボット１の実際の運動を目標歩容の運動に追従させつつ、コンプライアンス制御用目標床反力モーメントを付加的外力としてロボット１に付加的に作用させるように実際のロボット１の動作制御を行なう。
【０１０４】
なお、上記した複合コンプライアンス動作決定部１０４などの構成および動作は、本出願人が先に出願した特開平１０−２７７９６９号公報などに詳細に記載されている。従って、複合コンプライアンス動作決定部１０４に関する本明細書での説明は以上に留める。
【０１０５】
以上の如く、ロボット１の動作制御を行うことによって、目標歩容の運動は、ロボット１の動力学モデル上でモデル操作外力としてのモデル操作床反力モーメントが目標ＺＭＰまわりに付加的に発生するように生成されつつ、実際のロボッ１の床反力には、モデル操作床反力モーメントが付加されないように制御される。したがって、差し引きモデル操作床反力モーメント分だけ、目標歩容の運動と床反力の不平衡（アンバランス）を生じる。このことは、前記上体姿勢角偏差Δθを０に収束させる効果に関して言えば、モデル操作床反力モーメントの符号を反転した床反力モーメントを実ロボット１に作用させることと等価である。
【０１０６】
つまり、モデル操作床反力モーメントを適宜決定することにより、実ロボット１の上体２４の実際の姿勢を目標姿勢に収束させ、ひいては、実ロボット１の全体の姿勢を安定化させることができる。
【０１０７】
この場合、モデル操作床反力モーメントの符号を反転したモーメントとコンプライアンス制御用目標床反力モーメントとの和が上体姿勢角偏差Δθを０に収束させるトータルの復元力（床反力モーメント）になる。すなわち、コンプライアンス制御用目標床反力モーメントとモデル操作床反力モーメントとの差がトータルの復元力になる。
【０１０８】
なお、モデル操作床反力モーメントは、ＺＭＰ存在可能範囲を無視していかなる値でも取ることが可能であるので、非常に高い姿勢復元力を発生することができる。
【０１０９】
以下に、ロボット１の歩行を行う場合を例にとって、前記歩容生成装置１００の処理をより詳細に説明する。
【０１１０】
なお、以降の説明では、「床反力鉛直成分」、「床反力水平成分」は、それぞれ、特に断らない限り、「並進床反力鉛直成分」、「並進床反力水平成分」を意味するものとする。
【０１１１】
また、歩容における「両脚支持期」とは、ロボット１がその自重を両脚体２，２で支持する期間、「片脚支持期」とはいずれか一方のみの脚体２でロボット１の自重を支持する期間を言う。本実施形態で主に例示するロボット１の歩行動作では、両脚支持期と片脚支持期とが交互に繰り返される。また、片脚支持期においてロボット１の自重を支持する側の脚体２を「支持脚」、自重を支持しない側の脚体２を「遊脚」と呼ぶ。さらに、支持脚となる脚体２の足平２２を支持脚足平２２、遊脚となる脚体２の足平２２を遊脚足平２２という。なお、本実施形態の説明では、便宜上、片脚支持期における「支持脚」となる脚体２、「遊脚」となる脚体２をそれぞれ、該片脚支持期の直前の両脚支持期においても、支持脚、遊脚と呼ぶ。
【０１１２】
歩容生成装置１００が目標歩容を生成するとき、ロボット１の運動形態に関する基本的な要求を表す要求パラメータが、ロボット１の外部の図示しない操縦装置やサーバ等から無線通信等により歩容生成装置１００に入力される。該要求パラメータは、例えば、ロボット１の運動種別（歩行、走行等）や、遊脚足平２２の目標着地位置姿勢（該遊脚足平２２の着地時の目標位置姿勢）、目標着地時刻を決定するための基本的な指針となるパラメータ（例えばロボット１の平均移動速度や、移動方向もしくは移動経路等）により構成される。なお、このような要求パラメータは、ロボット１の図示しない記憶装置に事前に記憶保持しておき、それを歩容生成装置１００が所定のスケジュールで読み込むようにしてもよい。
【０１１３】
また、歩容生成装置１００には前記床形状情報も入力される。この床形状情報は、例えば、ロボット１の頭部等に搭載される撮像カメラ（図示省略）の撮像画像に基づいて制御ユニット２６で生成される。なお、上記床形状情報は、例えば、ロボット１の外部のサーバー等から、随時、ロボット１との無線通信によって制御ユニット２６に入力するようにしてもよい。あるいは、ロボット１に自己位置認識機能（グローバル座標系でのロボット１の自己位置及び向きを認識する機能）を備えておくと共に、ロボット１の移動環境の床形状情報を含む地図情報をロボット１の記憶装置に事前に記憶しておくようにしてもよい。そして、ロボット１の自己位置及び向きとから認識されるロボット１の周辺の床形状情報を地図情報から取得し、それを歩容生成装置１００に入力するようにしてもよい。また、床形状情報には、床の摩擦係数や硬さ等の性状情報が含まれていてもよい。
【０１１４】
歩容生成装置１００は、入力された上記要求パラメータや床形状情報を用いて所定のアルゴリズムにより目標歩容を生成する。より詳しく言えば、本実施形態では、歩容生成装置１００は、上記要求パラメータや床形状情報に応じて、目標歩容の目標足平位置姿勢軌道、目標床反力鉛直成分軌道、目標ＺＭＰ軌道等、目標歩容の一部の構成要素を規定するパラメータとしての歩容パラメータを決定した上で、その歩容パラメータとロボット１の動力学モデルとを用いて目標歩容の瞬時値を逐次決定する。これにより歩容生成装置１００は、目標歩容の時系列パターン（軌道）を生成する。
【０１１５】
この場合、目標足平位置姿勢軌道は、例えば本願出願人が特許第３２３３４５０号にて提案した有限時間整定フィルタを用いて各足平２２毎に生成される。この有限時間整定フィルタは、可変時定数の１次遅れフィルタ、すなわち、伝達関数が１／（１＋τｓ）の形で表されるフィルタ（τは可変の時定数。以下、このフィルタを単位フィルタという）を複数段（本実施形態では３段以上）、直列に接続したものであり、所望の指定時刻に指定値に到達するような軌道を生成・出力することができるものである。
【０１１６】
この場合、各段の単位フィルタの時定数τは、いずれも、有限時間整定フィルタの出力生成を開始してから、上記指定時刻までの残時間に応じて逐次可変的に設定される。より詳しくは、該残時間が短くなるに伴いτの値が所定の初期値（＞０）から減少されていき、最終的には、該残時間が“０”になる指定時刻にて、τの値が“０”になるように設定される。そして、有限時間整定フィルタには、前記指定値（より詳しくは、有限時間整定フィルタの出力の初期値から前記指定値への変化量）に応じた高さのステップ入力が与えられる。
【０１１７】
このような有限時間整定フィルタは、指定時刻にて指定値に達するような出力が生成されるだけでなく、指定時刻における有限時間整定フィルタの出力の変化速度を“０”もしくはほぼ“０”にすることができる。特に、単位フィルタを３段以上（３段でよい）、接続した場合には、有限時間整定フィルタの出力の変化加速度（変化速度の微分値）をも“０”もしくはほぼ“０”にすることができる。
【０１１８】
このような有限時間整定フィルタを用いる足平位置姿勢軌道（足平２２が着地してから次に着地するまでの位置姿勢軌道）の生成は、例えば次のように行なわれる。例えばＸ軸方向（前後方向）の目標足平位置軌道は次のように生成される。
【０１１９】
すなわち、各足平２２の次の目標着地位置のＸ軸方向位置（より詳しくは、次の目標着地位置のひとつ前の着地位置に対するＸ軸方向の変化量（移動量）。これは前記指定値に相当する）に応じて有限時間整定フィルタへのステップ入力の高さが決定されると共に前記時定数τが所定の初期値に初期化された後、その決定されたステップ入力が有限時間整定フィルタに与えられ、足平２２のＸ軸方向位置の軌道生成が開始される。そして、この軌道生成時には、前記時定数τは、足平２２の目標着地時刻（これは前記指定時刻に相当する）までに初期値から“０”まで減少していくように、逐次可変設定される。これにより、目標着地時刻で目標着地位置に達するような、足平２２のＸ軸方向の位置の軌道が生成される。
【０１２０】
また、Ｚ軸方向（鉛直方向）の目標足平位置軌道は、例えば次のように生成される。すなわち、まず、足平２２の次の目標着地位置及び目標着地時刻、並びに床形状情報（詳しくは足平２２の現在の着地位置と次の目標着地位置とを通る縦断面上での床形状情報）に応じて、該足平２２の高さ（鉛直位置）が最大になるときの該足平２２のＺ軸方向位置（以下、最高点位置という）とその最高点位置への到達時刻とが決定される。
【０１２１】
そして、その最高点位置（これは前記指定値に相当する）に応じて有限時間整定フィルタへのステップ入力の高さが決定されると共に時定数τが初期化された後、その決定されたステップ入力が有限時間整定フィルタに与えられ、前記最高点位置までのＺ軸方向の足平位置軌道が逐次生成される。この際、時定数τは、最高点位置への到達時刻（前記指定時刻に相当）までに初期値から０まで減少するように逐次可変設定される。
【０１２２】
さらに、最高点位置までのＺ軸方向位置の軌道の生成が終了したら、時定数τを初期化すると共にいままでのステップ入力と逆極性のステップ入力（より詳しくは、最高点位置から次の着地予定位置までのＺ軸方向の変化量（これは前記指定値に相当する）に応じた高さの逆極性のステップ入力）が有限時間整定フィルタに入力され、該最高点位置から目標着地位置までのＺ軸方向の足平位置の軌道が逐次生成される。この際、時定数τは足平２２の目標着地時刻までに初期値から０まで減少するように逐次可変設定される。
【０１２３】
尚、Ｚ軸方向の足平位置軌道の生成においては、時定数τを軌道生成開始時刻から足平２２の目標着地時刻まで、初期値から“０”まで継続的に減少するように可変設定すると共に、最高点位置への到達時刻もしくはその近傍時刻で、ステップ入力の極性を逆極性に切り替えることで、Ｚ軸方向の足平位置軌道を生成するようにしてもよい。この場合には、足平２２を所望の最高点位置に精度よく到達させることはできないが、目標着地時刻での目標着地位置への到達は問題なく行なうことができる。
【０１２４】
足平姿勢軌道についても、上述した足平位置軌道と同様に有限時間整定フィルタを用いて生成することができる。この場合、足平姿勢の空間的な各成分のうち、その姿勢の角度変化が単調的（単調増加もしくは単調減少）なものとなる成分については、前記したＸ軸方向の足平位置軌道の生成と同様に足平姿勢軌道を生成すればよい。また、姿勢の角度変化が極大値もしくは極小値をもつような成分については、前記したＺ軸方向の足平位置軌道の生成と同様に足平姿勢軌道を生成すればよい。
【０１２５】
尚、上記のように有限時間整定フィルタにより生成される目標足平位置姿勢軌道は、後述の支持脚座標系での各足平２２の目標位置姿勢軌道である。
【０１２６】
上述のように生成される目標足平位置姿勢軌道は、各足平２２の位置が、その初期接地状態（目標歩容の初期時刻の状態）から目標着地位置に向かって徐々に加速しながら移動を開始するように生成される。そして、該目標足平位置姿勢軌道は、最終的に着地予定時刻までに徐々に位置の変化速度を“０”またはほぼ“０”にまで減速し、着地予定時刻にて着地予定位置に到達して停止するように生成される。このため、各足平２２の着地瞬間における対地速度（床に固定された支持脚座標系での各足平２２の位置の変化速度）が“０”またはほぼ“０”になる。
【０１２７】
また、本実施形態では、有限時間整定フィルタは、単位フィルタを３段以上（例えば３段）、直列に接続したものであるため、目標着地時刻までに各足平２２の速度（足平位置の変化速度）が“０”またはほぼ“０”になるだけでなく、各足平２２は、その加速度も目標着地時刻にて０またはほぼ０になって停止する。つまり、着地瞬間における対地加速度も“０”またはほぼ“０”になる。したがって、着地衝撃がより一層小さくなる。特に、実際のロボット１の着地時刻が目標の着地時刻からずれても、衝撃があまり増大しなくなる。補足すると、目標着地時刻にて各足平２２の対地速度を“０”またはほぼ“０”にする上では、有限時間整定フィルタの単位フィルタの段数は２段でもよい。
【０１２８】
尚、足平姿勢に関しては、各足平２２が目標着地時刻にてその踵で着地した後、該足平２２の底面のほぼ全面が床に接地するまで動き続ける。このため、該足平２２の底面のほぼ全面が床に接地する時刻を前記指定時刻に設定して、前記有限時間整定フィルタにより足平姿勢軌道が生成される。
【０１２９】
また、本実施形態では、有限時間整定フィルタを用いて足平位置軌道を生成したが、目標着地時刻での足平位置の変化速度が“０”またはほぼ“０”になる（足平位置の時間微分値が“０”になる）ように、さらには、該目標着地時刻での足平位置の変化加速度（変化速度の時間微分値）が“０”またはほぼ“０”になるように設定された多項式などの関数を用いて目標足平位置軌道を生成するようにしても良い。このことは、目標足平姿勢軌道の生成に関しても同様である。但し、該目標足平姿勢軌道の生成に関しては、上述の如く、各足平２２の底面のほぼ全面が床に接地する時刻にて、各足平２２の姿勢の変化速度、さらにはその変化加速度が“０”またはほぼ“０”になるように多項式などの関数が設定される。
【０１３０】
補足すると、本実施形態で主に説明する歩容である歩行歩容（ロボット１の歩行動作を行う歩容）で生成される目標足平位置姿勢軌道においては、片脚支持期から両脚支持期への移行時に、遊脚側の足平２２がその踵で床面に着地する。次いで、その着地した足平２２は、そのつま先が床面に近づくように回転され、該足平２２の底面のほぼ全面が床面に接触する。次いで、該足平２２は、その踵が浮き上がると共につま先のみが接地するように回転された後、離床する。
【０１３１】
また、歩容生成装置１００は目標床反力鉛直成分軌道を設定する。ロボット１の歩行歩容における目標床反力鉛直成分軌道は、例えば図５に示す如く設定される。この例では、目標床反力鉛直成分軌道は、両脚支持期では、床反力鉛直成分の増加側に凸（上に凸）の台形状に設定され、片脚支持期では床反力鉛直成分の減少側に凸（下に凸）の台形状に設定される。そして、各台形部分での床反力鉛直成分の値、折れ点の時刻等が目標床反力鉛直成分軌道を規定する歩容パラメータ（床反力鉛直成分軌道パラメータ）として決定される。
【０１３２】
なお、ロボット１の歩行歩容における床反力鉛直成分軌道は、床反力鉛直成分の値がほぼ一定に保たれるような軌道であってもよい。
【０１３３】
目標ＺＭＰ軌道は、所謂、支持多角形（ロボット１の接地面（床との接触面）を含む最小の凸多角形）内に目標ＺＭＰが存すると共に、安定余裕が高く、かつ急激な変化をしないように決定される。なお、支持多角形の中央付近に目標ＺＭＰが存在する状態を安定余裕が高いと言う（詳細は特開平１０−８６０８１号公報を参照）。
【０１３４】
例えば、歩行歩容における目標ＺＭＰ軌道は、図６のグラフで例示する如く設定される。なお、図６に例示する目標ＺＭＰ軌道は、詳しくは、Ｘ軸方向における目標ＺＭＰ軌道（目標ＺＭＰのＸ軸方向の位置の軌道）の例である。
【０１３５】
この例では、目標ＺＭＰのＸ軸方向の位置は、両脚支持期においては、直前の片脚支持期で着地していた脚体２の足平２２のつま先寄りの位置から、新たに着地させた脚体２の足平２２の踵寄りの位置に移動するように設定される。そして、当該新たに着地させた脚体２が支持脚となる片脚支持期において、目標ＺＭＰのＸ軸方向の位置は、該脚体２の足平２２の踵寄りの位置からつま先寄りの位置まで移動するように設定される。この場合、図示の例では、片脚支持期における目標ＺＭＰのＸ軸方向の位置は、該脚体２の足平２２の底面のほぼ全面が接地する期間内において一定に維持される。
【０１３６】
なお、図示は省略するが、歩行歩容における目標ＺＭＰのＹ軸方向の位置は、片脚支持期においては、例えば支持脚である脚体２の足首関節のＹ軸方向の位置と同じ位置（足首関節の直下の位置）に保たれるように設定される。そして、両脚支持期においては、目標ＺＭＰのＹ軸方向の位置は、直前の片脚支持期において支持脚となっていた脚体２の足首関節のＹ軸方向の位置と同じ位置から、新たに着地させた脚体２の足首関節のＹ軸方向の位置と同じ位置まで移動していくように設定される。
【０１３７】
本実施形態では、図６に示す如く設定した目標ＺＭＰ軌道の折れ点の位置や時刻が、ＺＭＰ軌道パラメータ（目標ＺＭＰ軌道を規定するパラメータ）として設定される。
【０１３８】
また、目標腕姿勢は、上体２４に対する相対姿勢で表される。
【０１３９】
また、目標歩容はグローバル座標系で記述される。グローバル座標系は床に固定された座標系であり、より具体的には、以下に説明する支持脚座標系が用いられる。該支持脚座標系は、支持脚足平２２をその着地後に滑らせないように回転させて、該支持脚足平２２の底面のほぼ全面を床面に接触（密着）させた状態において、支持脚側脚体２の足首中心から床面に延ばした垂線が該床面と交わる点（この点は、本実施形態の例では支持脚足平２２の底面のほぼ全面を床面に接触させた状態では、該足平２２の代表点と合致する）を原点とし、その原点を通る水平面をＸＹ平面とする、床に固定された座標系である。この場合、Ｘ軸方向、Ｙ軸方向は、それぞれ支持脚足平２２の前後方向、左右方向である。また、Ｚ軸方向は、鉛直方向である。
【０１４０】
尚、支持脚座標系の原点は、必ずしも支持脚足平２２の底面のほぼ全面を床面に接触させた状態での該足平２２の代表点（足平２２の位置を代表する点）に合致する必要はなく、該代表点と異なる床面上の点に設定されてもよい。
【０１４１】
また、本実施形態では、歩行歩容の両脚支持期とこれに続く片脚支持期における支持脚座標系としては、該両脚支持期に続く片脚支持期での支持脚足平２２に対応して、上記した関係に従って規定される座標系が使用される。
【０１４２】
次に、本実施形態で歩容生成に用いられるロボット１の動力学モデルについて図７を参照して説明する。
【０１４３】
本実施形態に用いられるロボット１の動力学モデルは、図７に示す如く、目標ＺＭＰを支点として揺動自在な可変長のロッド２４ａと、このロッド２４ａの上端に支持された質点２４ｂとを備える倒立振子により構成されるモデル（以下、倒立振子モデルということがある）である。なお、ロッド２４ａは、質量を持たないものとする。
【０１４４】
この動力学モデルでは、倒立振子の質点２４ｂの運動が、ロボット１の上体２４の運動に対応しており、上体２４の運動とロボット１に作用する床反力との間の関係が、質点２４ｂ（以降、上体質点２４ｂという）の運動と、倒立振子に作用する床反力との間の関係として表現される。また、この動力学モデルでは、ロボット１の脚体２，２の質量は、上体２４（または上体２４と腕体及び頭部を合わせた質量）よりも十分に小さいものとみなし、上体質点２４ｂの質量は、ロボット１の全体の質量に一致するものとされる。なお、上体質点２４ｂの位置は、ロボット１の上体位置姿勢から一義的に定まる位置に設定される。
【０１４５】
この動力学モデルの挙動（該動力学モデル上でのロボットの動力学）は、以下に示すように数式化される。ただし、説明を簡単にするために、サジタルプレーン（支持脚座標系のＸ軸とＺ軸とを含む平面）での運動方程式のみを記述し、ラテラルプレーン（支持脚座標系のＹ軸とＺ軸とを含む平面）での運動方程式を省略した。
【０１４６】
説明の便宜上、動力学モデルに関する変数およびパラメータを以下のように定義する。
Ｚb：上体質点鉛直位置（Ｚ軸方向位置）
Ｘb：上体質点水平位置（Ｘ軸方向位置）
mb：上体質点質量
Ｘzmp：目標ＺＭＰの水平位置（Ｘ軸方向位置）
Ｚzmp：目標ＺＭＰの鉛直位置（Ｚ軸方向位置）
Ｆx：床反力水平成分（詳しくは並進床反力のＸ軸方向成分）
Ｆz：床反力鉛直成分（詳しくは並進床反力のＺ軸方向成分）
Ｍzmp_y：目標ＺＭＰまわりの床反力モーメント（詳しくは該床反力モーメントのＹ軸まわり成分）
Ｍb_y：支持脚座標系の原点まわりの床反力モーメント（詳しくは該床反力モーメントのＹ軸まわり成分）
また、任意の変数Ａに対して、dA/dtはＡの１階微分値を表わし、d2A/dt2はＡの２階微分値を表わす。したがって、変数Ａが変位（位置）ならば、dA/dtは速度、d2A/dt2は加速度を意味する。ｇは重力加速度定数を示す。ここでは、ｇは正の値とする。
【０１４７】
上記動力学モデルの運動方程式は、式０１〜０４で表される。
【０１４８】
Fz＝mb＊(g＋d2Zb/dt2)      ……式０１
Fx＝mb＊d2Xb/dt2      ……式０２
Mb_y＝−mb＊Xb＊(g＋d2Zb/dt2)
＋mb＊Zb＊(d2Xb/dt2)      ……式０３
Mzmp_y＝−mb＊(Xb−Xzmp)＊(g＋d2Zb/dt2)
＋mb＊(Zb−Zzmp)＊(d2Xb/dt2)      ……式０４
この場合、Mb_yとMzmp_yとの間の関係は、次式０５により表される。
【０１４９】
Mb_y＝Mzmp_y−mb＊Xzmp＊(g＋d2Zb/dt2)＋mb＊Zzmp＊(d2Xb/dt2)
＝Mzmp_y−Xzmp＊Fz＋Zzmp＊Fx
……式０５
なお、目標ＺＭＰと支持脚座標系の原点との鉛直方向（Ｚ軸方向）での位置の差は通常、“０”又はほぼ“０”となるので、Ｚzmp＝０と見なしてもよい。
【０１５０】
また、ロボット１の移動時の上体２４の高さ（鉛直方向位置）の、平均的な高さに対する相対的な変動量（換言すれば上体２４の鉛直方向位置の分散）は一般には十分に小さいので、Ｚb≒ｈ（ｈ：上体２４の平均的な高さに対応する上体質点２４ｂの平均的な高さとしての一定値）と見なすことができる。従って、上記式０３の右辺第２項と式０４の右辺第２項とにおけるＺbを定数値ｈで置き換えてもよい。
【０１５１】
本実施形態における歩容生成装置１００は、ロボット１の片方の脚体２が着地してから他方の脚体２が着地するまでの１歩分の目標歩容を単位として、その１歩分の目標歩容を順番に生成する。従って、本実施形態で説明する歩行歩容では、該目標歩容は両脚支持期の開始時から、これに続く片脚支持期の終了時（次の両脚支持期の開始時）までの目標歩容が順番に生成される。
【０１５２】
ここで、本明細書では、目標歩容の「１歩」は、ロボット１の片方の脚体２が着地してからもう一方の脚体２が着地するまでの意味で使用する。また、新たに生成しようとしている１歩分の目標歩容を「今回歩容」、その次の１歩分の目標歩容を「次回歩容」、さらにその次の１歩分の目標歩容を「次次回歩容」、というように呼ぶ。また、「今回歩容」の一つ前に生成した１歩分の目標歩容を「前回歩容」と呼ぶ。
【０１５３】
また、歩容生成装置１００は、ロボット１の運動の継続性を確保し得る今回歩容を生成するために、今回歩容に続く仮想的な周期的歩容（同じパターンのロボット１の運動が一定周期で継続的に繰り返される歩容）としての定常旋回歩容を決定する。そして、歩容生成装置１００は、今回歩容の上体２４の運動軌道を、将来において定常旋回歩容での上体２４の運動軌道に収束させるようにして、該今回歩容を生成する。換言すれば、歩容生成装置１００は、定常旋回歩容を将来の収束目標として、今回歩容を生成する。この場合、本実施形態では、今回歩容の遊脚側脚体２の足平２２の着地時の位置姿勢（着地位置姿勢）又は着地時刻は、今回歩容の生成途中で、適宜更新される。
【０１５４】
以下に歩行歩容を生成することを主要例にして、歩容生成装置１００の歩容生成処理の詳細を図８〜図２４を参照しつつ説明する。歩容生成装置１００は、図８のフローチャート（構造化フローチャート）に示す歩容生成処理（メインルーチン処理）を実行することによって目標歩容を生成する。
【０１５５】
まずＳ０１０において時刻ｔを“０”に初期化するなど種々の初期化作業が行なわれる。この処理は、歩容生成装置１００の起動時等に行なわれる。
【０１５６】
次いで、Ｓ０１２を経てＳ０１４に進み、歩容生成装置１００は、制御周期（図８のフローチャートの演算処理周期）毎のタイマ割り込みを待つ。制御周期はΔｔである。
【０１５７】
次いで、Ｓ０１６に進み、歩容生成装置１００は、歩容の切り替わり目であるか否かを判断する。このとき、歩容の切り替わり目である場合には、Ｓ０１８の処理を経て、Ｓ０２０に進む。この場合、Ｓ０１８では、歩容生成装置１００は、時刻ｔを“０”に初期化する。また、Ｓ０１６で歩容の切り替わり目でない場合には、Ｓ０２０に進む。
【０１５８】
ここで、上記「歩容の切り替わり目」は、前回歩容の生成が完了し、今回歩容の生成を開始するタイミングを意味し、例えば前回歩容の生成を完了した制御周期の次の制御周期が歩容の切り替わり目になる。
【０１５９】
次いで、Ｓ０２０では、歩容生成装置１００は、次回歩容支持脚座標系、次次回歩容支持脚座標系、今回歩容周期および次回歩容周期を決定する。
【０１６０】
なお、支持脚座標系を決定するということは、詳しくは、その原点の位置と該支持脚座標系の姿勢（各座標軸の向き）とを決定することを意味する。この場合、支持脚座標系は、その位置姿勢（詳しくは原点の位置とＸ軸及びＹ軸の向き）が、前記したように、支持脚足平２２の底面のほぼ全面を床面に接触させた状態での該足平２２の位置姿勢に対して所定の関係に従って規定される座標系であるから、次回歩容支持脚座標系及び次次回歩容支持脚座標系を決定するということは、それぞれ、今回歩容の遊脚足平２２の目標着地位置姿勢、次回歩容の遊脚足平２２の目標着地位置姿勢を決定することと同等である。
【０１６１】
Ｓ０２０での支持脚座標系及び歩容周期の決定処理は、Ｓ０１８の処理の次、又はＳ０１６の判断結果が否定的である場合のＳ０１６の処理の次に実行される場合（すなわち、各制御周期で最初に実行される場合）と、後述のＳ０３１の判断結果が否定的である場合にＳ０３１の処理の次に実行される場合とで相違している。ここでは、Ｓ０３１の判断結果が否定的である場合の処理の説明は後述することとし、Ｓ０１８の処理、又はＳ０１６の判断処理の次に実行されるＳ０２０の処理を説明する。従って、ここでのＳ０２０の処理の説明は、特にことわらない限り、Ｓ０１８の処理、又はＳ０１６の判断処理の次に実行されるＳ０２０の処理に関する説明である。
【０１６２】
Ｓ０１８の処理、又はＳ０１６の判断処理の次に実行されるＳ０２０の処理では、次回歩容支持脚座標系及び次次回歩容支持脚座標系は、基本的には、脚体２の運動に関する幾何学的な（運動学的な）制約条件である幾何学的脚体運動必要条件を満足し得る範囲内で、前記要求パラメータに基づき決定される。
【０１６３】
ここで、上記幾何学的脚体運動必要条件は、各脚体２の先端部の目標運動軌道としての足平位置姿勢軌道が、ロボット１の各脚体２の幾何学的な（運動学的な）可動範囲内での運動軌道となるべきであるという条件である。この幾何学的脚体運動必要条件には、より具体的には、例えば、各脚体２の関節の変位量（回転角）が、各関節及びその駆動系の構造等に応じて規定される所定の範囲を逸脱しないという条件と、左右の脚体２Ｒ，２Ｌが互いに干渉しないという条件とが含まれる。
【０１６４】
また、前記要求パラメータは、２歩先までの遊脚足平２２の着地位置姿勢と着地時刻とを規定する要求値を含んでいる。そして、その１歩目の要求値、２歩目の要求値がそれぞれ、今回歩容、次回歩容に対応するものとして、今回歩容の生成開始時（前記Ｓ０１６の歩容の切り替わり目）以前に歩容生成装置１００に与えられる。これらの要求値は今回歩容の生成途中で変更し得るようにすることも可能である。
【０１６５】
なお、２歩目までの遊脚足平２２の着地位置姿勢及び着地時刻の要求値は、外部の操縦装置等からの指令（要求）とそのときまでのロボットの１の移動履歴とを基に決定してもよい。また、要求パラメータは、前記次回及び次次回歩容支持脚座標系の位置及び姿勢の要求値、並びに今回及び次回歩容周期の要求値を直接的に指定するパラメータであってもよい。
【０１６６】
また、遊脚足平２２の着地位置姿勢は、着地瞬間の位置姿勢でもよいが、本実施形態の説明では、理解の便宜上、該遊脚足平２２を着地させてから、該足平２２を滑らせないように回転させて、該足平２２の底面のほぼ全面を床面に接触させた状態での該足平２２の位置姿勢を意味するものとする。そして、その位置姿勢を着地時足平基準位置姿勢ということがある。また、遊脚足平２２の着地時刻は、本実施形態では、該足平２２の着地瞬間の時刻を意味するものとする。
【０１６７】
Ｓ０２０では、歩容生成装置１００は、上記要求パラメータにより規定される１歩目の遊脚足平２２（今回歩容の遊脚足平２２）の着地位置姿勢の要求値と２歩目の遊脚足平２２（次回歩容の遊脚足平２２）の着地位置姿勢の要求値とが、それぞれ、前記幾何学的脚体運動必要条件を満足させ得る要求値であるか否かを判断し、その判断結果に応じて次回歩容支持脚座標系と次次回歩容支持脚座標系とを決定する。
【０１６８】
より具体的には、歩容生成装置１００は、幾何学的脚体運動必要条件を満足し得るように次回歩容支持脚座標系と次次回歩容支持脚座標系とを決定するために、前記幾何学的脚体運動必要条件を満足し得る遊脚足平２２の着地位置の許容領域である第１着地許容領域（詳しくは、今回歩容及び次回歩容のそれぞれの支持脚座標系で見た遊脚足平２２の第１着地許容領域）を、入力された床形状情報から認識される床面上に設定する。
【０１６９】
上記第１着地許容領域は、本実施形態では、前記着地時足平基準位置姿勢の支持脚足平２２に対する相対的な位置姿勢（該支持脚足平２２に対応する支持脚座標系から見た位置姿勢）及び形状が、支持脚足平２２が右側足平２２Ｒである場合と、支持脚足平２２が左側足平２２Ｌである場合とでそれぞれ、あらかじめ定められた領域である。
【０１７０】
右側足平２２Ｒが支持脚足平である場合の遊脚足平２２Ｌの第１着地許容領域（以降、左足平第１着地許容領域ということがある）は、該支持脚足平２２Ｒに対応する支持脚座標系に対して、図９に実線で示すような位置姿勢関係で設定される領域（図９では今回歩容における第１着地許容領域として示される、今回歩容支持脚座標系で見た領域）である。
【０１７１】
また、左側足平２２Ｌが支持脚足平である場合の遊脚足平２２Ｒの第１着地許容領域（以降、右足平第１着地許容領域ということがある）は、該支持脚足平２２Ｌに対応する支持脚座標系に対して、図９に破線で示すようにな位置姿勢関係で設定される領域（図９では次回歩容における第１着地許容領域として示される、次回歩容支持脚座標系で見た領域）である。
【０１７２】
この場合、左足平第１着地許容領域の形状及び位置姿勢は、遊脚足平２２Ｌの着地姿勢（詳しくは支持脚足平２２Ｒに対応する支持脚座標系のＺ軸周りの姿勢）が所定の許容範囲内に存する状態で、該遊脚足平２２Ｌの着地位置が該左足平第１着地許容領域内に存するように該遊脚足平２２Ｌを着地させた場合に、前記幾何学的脚体運動必要条件を満足し得るように設定されている。
【０１７３】
同様に、右足平第１着地許容領域の形状及び位置姿勢は、遊脚足平２２Ｒの着地姿勢（詳しくは支持脚足平２２Ｌに対応する支持脚座標系のＺ軸周りの姿勢）が所定の許容範囲内に存する状態で、該遊脚足平２２Ｒの着地位置が該右足平第１着地許容領域内に存するように該遊脚足平２２Ｒを着地させた場合に、前記幾何学的脚体運動必要条件を満足し得るように設定されている。
【０１７４】
なお、左足平第１着地許容領域と右足平第１着地許容領域とは、支持脚座標系に対して左右対称の領域である。
【０１７５】
Ｓ０１８の次のＳ０２０では、歩容生成装置１００は、まず、次回歩容支持脚座標系を決定するために、今回歩容支持脚座標系上において、今回歩容の遊脚足平２２の第１着地許容領域を設定する。そして、歩容生成装置１００は、今回歩容の遊脚足平２２の着地姿勢の要求値が所定の許容範囲内に存し、且つ、該遊脚足平２２の着地位置の要求値が、今回歩容支持脚座標系における第１着地許容領域内に存する場合に、該遊脚足平２２の着地位置姿勢の要求値が、前記幾何学的脚体運動必要条件を満足し得る要求値であると判断する。そして、この場合には、歩容生成装置１００は、今回歩容の遊脚足平２２の着地位置姿勢の要求値を、そのまま該遊脚足平２２の着地位置姿勢の目標値（目標着地位置姿勢）とし、この目標着地位置姿勢に対応する支持脚座標系を、次回歩容支持脚座標系として決定する。
【０１７６】
また、歩容生成装置１００は、今回歩容の遊脚足平２２の着地姿勢の要求値が所定の許容範囲から逸脱し、又は、該遊脚足平２２の着地位置の要求値が、今回歩容支持脚座標系における第１着地許容領域から逸脱している場合には、該遊脚足平２２の着地位置姿勢の要求値が、前記幾何学的脚体運動必要条件を満足し得る要求値でないと判断する。
【０１７７】
このとき、遊脚足平２２の着地姿勢の要求値が所定の許容範囲から逸脱している場合には、歩容生成装置１００は、該所定の許容範囲内で、該遊脚足平２２の着地姿勢の要求値に最も近い姿勢を遊脚足平２２の着地姿勢の目標値とする。なお、遊脚足平２２の着地姿勢の要求値が所定の許容範囲内に存する場合には、該遊脚足平２２の着地姿勢の要求値をそのまま、目標値とする。
【０１７８】
また、遊脚足平２２の着地位置の要求値が、今回歩容支持脚座標系における第１着地許容領域から逸脱している場合には、該第１着地許容領域内で、該着地位置の要求値に最も近い位置を今回歩容の遊脚足平２２の着地位置の目標値とする。なお、遊脚足平２２の着地位置の要求値が今回歩容支持脚座標系における第１着地許容領域内に存する場合には、該遊脚足平２２の着地位置の要求値をそのまま、目標値とする。
【０１７９】
そして、歩容生成装置１００は、上記の如く決定した今回歩容の遊脚足平２２の目標着地位置姿勢に対応する支持脚座標系を、次回歩容支持脚座標系として決定する。
【０１８０】
さらに、歩容生成装置１００は、上記の如く決定した次回歩容支持脚座標系において、次回歩容における遊脚足平２２の第１着地許容領域を設定する。そして、歩容生成装置１００は、次回歩容の遊脚足平２２の着地姿勢の要求値が所定の許容範囲に存し、且つ、該遊脚足平２２の着地位置が次回歩容支持脚座標系における第１着地許容領域に存するか否かを判断し、その判断結果に応じて、次次回歩容支持脚座標系を決定する。この次次回歩容支持脚座標系の決定の仕方は、上記した次回歩容支持脚座標系の決定の仕方と同様である。
【０１８１】
Ｓ０１８の次のＳ０２０では、上記の如く、幾何学的脚体運動必要条件を満足する範囲内で、前記要求パラメータにより規定される２歩目までの遊脚足平２２の着地位置姿勢の要求値にできるだけ従うように、次回歩容支持脚座標系及び次次回歩容支持脚座標系が決定される。
【０１８２】
図９は、上記のように決定される次回歩容支持脚座標系及び次次回歩容支持脚座標系の例を示している。この例では、今回歩容の遊脚足平２２（図では２２Ｌ）の着地位置の要求値は、今回歩容支持脚座標系における第１着地許容領域（左足平第１着地許容領域）内に存しており、次回歩容の遊脚足平２２（図では２２Ｒ）の着地位置の要求値は、次回歩容支持脚座標系における第１着地許容領域（右足平第１着地許容領域）内に存するものとしている。
【０１８３】
また、歩容生成装置１００は、今回歩容周期に関しては、前記要求パラメータにより規定される今回歩容の遊脚足平２２の着地時刻の要求値と、前回歩容の遊脚足平２２の目標着地時刻との差としての今回歩容周期の要求値が、各脚体２の関節の変位速度等を制限するための所定の許容範囲（以降、歩容周期許容範囲という）内に存する場合には、該要求値をそのまま、今回歩容周期の目標値として決定する。また、該今回歩容周期の要求値が歩容周期許容範囲を逸脱している場合には、歩容生成装置１００は、該歩容周期許容範囲内で、該要求値に最も近い値を、今回歩容周期の目標値として決定する。
【０１８４】
さらに、歩容生成装置１００は、前記要求パラメータにより規定される次回歩容の遊脚足平２２の着地時刻の要求値と、上記の如く決定した今回歩容周期の目標値に対応する今回歩容の遊脚足平２２の目標着地時刻（＝前回歩容の遊脚足平２２の目標着地時刻＋今回歩容周期の目標値）との差としての次回歩容周期の要求値が、上記歩容周期許容範囲内に存する場合には、該要求値をそのまま、次回歩容周期の目標値として決定する。また、該次回歩容周期の要求値が歩容周期許容範囲を逸脱している場合には、歩容生成装置１００は、該歩容周期許容範囲内で、該要求値に最も近い値を、次回歩容周期の目標値として決定する。
【０１８５】
以上が、Ｓ０１８の処理又はＳ０１６の判断処理の次のＳ０２０で歩容生成装置１００が実行する処理の詳細である。
【０１８６】
補足すると、本実施形態では、今回歩容及び次回歩容の一方又は両方におけるロボット１の遊脚足平２２の目標着地位置姿勢（ひいては、次回歩容支持脚座標系及び次次回歩容支持脚座標系のうちの少なくともいずれか一方の位置姿勢）、あるいは、今回歩容もしくは次回歩容の歩容周期は、各制御周期において、Ｓ０２０で最初に決定されたものから、修正される場合もある。
【０１８７】
次いでＳ０２２に進み、歩容生成装置１００は、今回歩容に続く仮想的な周期的歩容（今回歩容の将来の収束目標とする仮想的な周期的歩容）としての定常旋回歩容の歩容パラメータを決定する。該歩容パラメータは、本実施形態では、定常旋回歩容における目標足平位置姿勢軌道を規定する足平軌道パラメータ、目標上体姿勢軌道を規定する上体姿勢軌道パラメータ、目標腕姿勢軌道を規定する腕軌道パラメータ、目標ＺＭＰ軌道を規定するＺＭＰ軌道パラメータ、目標床反力鉛直成分軌道を規定する床反力鉛直成分軌道パラメータを含む。
【０１８８】
ここで、「定常旋回歩容」は、その歩容を繰り返したときに歩容の境界（１周期毎の歩容の境界）においてロボット１の運動状態（足平位置姿勢、上体位置姿勢等の運動状態）に不連続が生じないような周期的歩容を意味する。また、「定常旋回歩容」は、周期的歩容、すなわち同じパターンの歩容を一定周期で繰り返す歩容であるから、ロボット１の運動を継続的に行い得る歩容である。換言すれば、「定常旋回歩容」は、歩容の軌道の不連続を発生することなく、同じパターンの運動を繰り返すことができる周期的歩容（原理上、無限回繰り返しても後述の「発散」が発生しない歩容）である。
【０１８９】
周期的歩容である定常旋回歩容は、本実施形態では、ロボット１の２歩分の歩容、すなわち今回歩容に続く第１旋回歩容と該第１旋回歩容に続く第２旋回歩容とからなる歩容を１周期分の歩容として、その１周期分の歩容を一定周期で繰り返す歩容である。ここで「旋回」なる用語を用いたのは、旋回率を零とするときは直進を意味するので、直進も広義の意味で旋回に含ませることができるからである。
【０１９０】
定常旋回歩容（以降、単に定常歩容ということがある）について補足すると、２足移動ロボットでは、定常歩容の１周期分の歩容には、少なくとも２歩分の歩容が含まれる必要である。この場合、３歩以上の歩容を１周期分の歩容とする複雑な定常歩容を設定することも可能である。但し、定常歩容は、後述の如く、今回歩容の終端（終了時刻）における目標とする（適切な）発散成分の値を決定するためだけに用いられる。このため、３歩以上の歩容を１周期とする定常歩容を用いることは、歩容生成の処理が煩雑となるにもかかわらず、効果は少ない。そこで、本実施形態での定常歩容の１周期分の歩容を２歩分の歩容（第１旋回歩容及び第２旋回歩容の組）により構成するようにしている。尚、３足以上の脚式移動ロボットにあっては、それに応じて定常歩容を定義するに足る歩容数が増加する。
【０１９１】
ここで、「発散」とは、図１０に示すように、ロボット１の上体２４の位置が両足平２２，２２の位置からかけ離れた位置にずれてしまうことを意味する。また、発散成分の値とは、ロボット１の上体２４の位置が両足平２２，２２の位置（より具体的には、支持脚足平２２の接地面に設定された支持脚座標系の原点）からかけ離れていく具合を表す数値である。
【０１９２】
定常歩容は、歩容生成装置１００で今回歩容の終端におけるロボット１の目標とする運動状態を決定するために作成される仮想的な歩容である。従って、定常旋回歩容は、歩容生成装置１００からそのまま出力されるものではない。
【０１９３】
本実施形態では、目標歩容が、上記発散を生じることなく、継続的に生成されるように、発散成分を指標にして歩容を生成するようにした。この場合、継続的な歩容の代表例である定常歩容であっても、定常歩容の歩容パラメータが変われば、該定常歩容の初期発散成分（定常歩容の初期時刻での発散成分）も変わる。すなわち、歩き方、走り方、移動速度等の歩容形態によって、適切な発散成分が変わる。
【０１９４】
そこで、本実施形態では、歩容生成装置１００は、今回歩容を生成しようとするときに、まず、その生成しようとする今回歩容の後に続く歩容（将来的な収束目標とする歩容）として好適な将来の仮想的な周期的歩容（ロボット１の安定な移動を継続することが可能な将来の仮想的な周期的歩容）としての定常歩容を、今回歩容に係わる要求パラメータ（又はＳ０２０で決定した支持脚座標系及び歩容周期）に応じて決定した上で、該定常歩容の初期発散成分を求める。そして、歩容生成装置１００は、今回歩容の終端発散成分を、その求めた定常歩容の初期発散成分に一致させる（より一般的には、今回歩容を定常歩容に連続させもしくは漸近させる）ように、今回歩容を生成する。このような歩容生成の基本的な指針は本出願人が先に提案した特許第３７２６０８１号のものと同様である。
【０１９５】
本題に戻り、Ｓ０２２では、歩容生成装置１００は、図１１のフローチャートに示すサブルーチン処理を実行する。
【０１９６】
まず、Ｓ１００において、歩容生成装置１００は、今回歩容、第１旋回歩容、第２旋回歩容の順に足平位置姿勢軌道がつながるように、定常歩容の歩容パラメータのうちの足平軌道パラメータが決定される。以下に、定常歩容が歩行歩容である場合を例にとって、具体的な設定方法を図１２を参照して説明する。尚、以降の説明では、支持脚側の足平２２を支持脚足平２２と称し、遊脚側の足平２２を遊脚足平２２と称する。また、歩容の「初期」、「終端」はそれぞれ歩容の開始時刻、終了時刻、あるいは、それらの時刻における瞬時歩容を意味する。
【０１９７】
足平軌道パラメータは、第１旋回歩容および第２旋回歩容のそれぞれの初期と終端とにおける支持脚足平２２及び遊脚足平２２のそれぞれの位置姿勢、各旋回歩容の歩容周期（各旋回歩容の初期から終端までの時間）等から構成される。この足平軌道パラメータのうち、第１旋回歩容初期遊脚足平位置姿勢は、次回歩容支持脚座標系から見た今回歩容終端支持脚足平位置姿勢とされる。この場合、今回歩容終端支持脚足平位置姿勢は、今回歩容の支持脚足平２２を、今回歩容支持脚座標系に対応する前記着地時足平基準位置姿勢から、滑らせないようにピッチ方向に（該足平２２の踵が持ち上がる向きに）所定角度だけ回転させた状態での位置姿勢である。
【０１９８】
また、第１旋回歩容初期支持脚足平位置姿勢は、次回歩容支持脚座標系から見た今回歩容終端遊脚足平位置姿勢とされる。この場合、今回歩容終端遊脚足平位置姿勢は、今回歩容の遊脚足平２２を、該今回歩容終端遊脚足平位置姿勢から、滑らせないようにピッチ方向に（該足平２２のつま先が下がる向きに）所定角度だけ回転させた状態での該足平２２の位置姿勢が、次回歩容支持脚座標系に対応する前記着地時足平基準位置姿勢に合致するように決定される。
【０１９９】
第１旋回歩容終端遊脚足平位置姿勢は、次回歩容支持脚座標系から見た次回歩容終端遊脚足平位置姿勢とされる。この場合、次回歩容終端遊脚足平位置姿勢は、次回歩容の遊脚足平２２を、該次回歩容終端遊脚足平位置姿勢から、滑らせないようにピッチ方向に（該足平２２のつま先が下がる向きに）所定角度だけ回転させた状態での該足平２２の位置姿勢が、次次回歩容支持脚座標系に対応する前記着地時足平基準位置姿勢に合致するように決定される。
【０２００】
第１旋回歩容終端支持脚足平位置姿勢は、次回歩容支持脚座標系から見た次回歩容終端支持脚足平位置姿勢とされる。この場合、次回歩容終端支持脚足平位置姿勢は、次回歩容の支持脚足平２２を、次回歩容支持脚座標系に対応する前記着地時足平基準位置姿勢から、滑らせないようにピッチ方向に（該足平２２の踵が持ち上がる向きに）所定角度だけ回転させた状態での位置姿勢である。
【０２０１】
第２旋回歩容初期遊脚足平位置姿勢は、次次回歩容支持脚座標系から見た第１旋回歩容終端支持脚足平位置姿勢とされる。第２旋回歩容初期支持脚足平位置姿勢は、次次回歩容支持脚座標系から見た第１旋回歩容終端遊脚足平位置姿勢とされる。
【０２０２】
第２旋回歩容終端遊脚足平位置姿勢は、次次回歩容支持脚座標系から見た位置姿勢であり、その位置姿勢は、今回歩容支持脚座標系から見た今回歩容終端遊脚足平位置姿勢に一致するものとされる。該第２旋回歩容終端遊脚足平位置姿勢は、換言すれば、第２旋回歩容での遊脚足平２２を、該第２旋回歩容終端遊脚足平位置姿勢から、滑らせないようにピッチ方向に（つま先が下がる向きに）所定角度だけ回転させた状態での該足平２２の位置姿勢が、定常歩容における次次次回歩容支持脚座標系（図１２に示す）に対応する着地時足平基準位置姿勢に合致するように決定された位置姿勢である。ここで、次次次回歩容支持脚座標系は、次次回歩容支持脚座標系で見た該次次次回歩容支持脚座標系の位置姿勢（図１２中のxnext，ynext，θznextにより表される位置姿勢）が、今回歩容支持脚座標系で見た次回歩容支持脚座標系の位置姿勢に合致する支持脚座標系である。
【０２０３】
また、第２旋回歩容終端支持脚足平位置姿勢は、次次回歩容支持脚座標系から見た位置姿勢であり、その位置姿勢は、今回歩容支持脚座標系から見た今回歩容終端支持脚足平位置姿勢に一致するものとされる。すなわち、第２旋回歩容終端支持脚足平位置姿勢は、次次回歩容における支持脚足平２２を、次次回歩容支持脚座標系に対応する着地時足平基準位置姿勢から、滑らせないようにピッチ方向に（該足平２２の踵が持ち上がる向きに）所定角度だけ回転させた状態での位置姿勢である。
【０２０４】
第１旋回歩容および第２旋回歩容の歩容周期は、次回歩容周期と同一に設定される。これらの第１旋回歩容及び第２旋回歩容の歩容周期は、互いに同一にすることは必ずしも必要ではないが、いずれの周期も、少なくとも次回歩容周期に応じて決定するのが好ましい。
【０２０５】
次に、Ｓ１０２に進み、歩容生成装置１００は、定常歩容における目標上体姿勢軌道を規定する上体姿勢軌道パラメータを決定する。
【０２０６】
この場合、本実施形態では、定常歩容の上体姿勢軌道パラメータは、それにより規定される目標上体姿勢軌道があらかじめ定められた所定パターンの基準上体姿勢の軌道に一致するように決定される。この基準上体姿勢は、本実施形態では、経時的な変化の無い一定姿勢（固定的な姿勢）に設定されている。その基準上体姿勢は、例えば上体２４の体幹軸が定常的に鉛直方向を向く姿勢（ロボット１が直立姿勢で起立した状態での上体姿勢）、すなわち、鉛直方向に対する上体姿勢角が定常的に“０”に保たれる姿勢である。そして、このような基準上体姿勢の軌道を規定するパラメータ（基準上体姿勢の一定の上体姿勢角の値等）が上体姿勢軌道パラメータとして決定される。なお、このように上体姿勢を一定姿勢とした場合には、必然的に上体姿勢角の角速度及び角加速度も定常的に“０”に保たれる。
【０２０７】
補足すると、定常歩容の上体姿勢は、定常歩容の初期（第１旋回歩容の初期）と終端（第２旋回歩容の終端）とでつながるように（上体姿勢角及びその角速度がそれぞれ、定常歩容の初期と終端とで一致するように）に設定されている限り、一定姿勢である必要はない。本実施形態では、本実施形態の理解を容易にするために基準上体姿勢を上記の如く一定姿勢とした。
【０２０８】
次に、Ｓ１０４に進み、歩容生成装置１００は、腕姿勢軌道パラメータ、より詳しくは鉛直軸（あるいは上体２４の体幹軸）まわりの両腕体の角運動量変化に関すること以外の腕姿勢軌道パラメータが決定される。たとえば、上体２４に対する腕体の手先の相対高さや腕体全体の相対重心位置などを規定するパラメータが腕姿勢軌道パラメータとして決定される。この場合、本実施形態では、腕体全体の相対重心位置は、上体２４に対して一定に維持されるように設定される。
【０２０９】
次に、Ｓ１０６に進み、歩容生成装置１００は、床反力鉛直成分軌道パラメータを決定する。この場合、該パラメータにより規定される床反力鉛直成分軌道が、第１旋回歩容および第２旋回歩容のいずれにおいても、実質的に連続なものとなるように床反力鉛直成分軌道パラメータが決定される。
【０２１０】
具体的には、定常歩容が歩行歩容である場合の目標床反力鉛直成分軌道は、例えば図１３に示すようなパターンで設定される。そのパターンは、第１旋回歩容及び第２旋回歩容のいずれにおいても、先に図５に示したパターンと同様のパターンである。そして、このパターンの折れ点の時刻や床反力鉛直成分の値が床反力鉛直成分軌道パラメータとして決定される。
【０２１１】
この床反力鉛直成分軌道パラメータは、定常歩容の１周期分の期間（第１旋回歩容の期間と第２旋回歩容の期間とを合わせた期間）における床反力鉛直成分の平均値をロボット１の自重と一致させるように決定される。すなわち、定常歩容の１周期分の期間における床反力鉛直成分の平均値がロボット１の全体に作用する重力と同じ大きさで反対向きになるようにする。
【０２１２】
上記のごとく床反力鉛直成分軌道パラメータ（ひいては床反力鉛直成分軌道）を決定することは、定常歩容のあらゆる状態量（ロボット１の各部の位置、姿勢、速度等の運動状態量）についての初期状態（定常歩容の第１旋回歩容の支持脚座標系から見た該第１旋回歩容の初期状態）と終端状態（定常歩容の第２旋回歩容に続く第１旋回歩容の支持脚座標系から見た該第２旋回歩容の終端状態）とが一致しているという条件（以下、この条件を定常歩容の境界条件ということがある）が成立する必要があるからである。
【０２１３】
次いで、Ｓ１０８に進み、歩容生成装置１００は、第１旋回歩容および第２旋回歩容を合わせた定常歩容の目標ＺＭＰ軌道を規定するＺＭＰ軌道パラメータを決定する。この場合、目標ＺＭＰ軌道は、前述したように安定余裕が高くかつ急激な変化をしないように決定される。
【０２１４】
定常歩容が歩行歩容である場合の目標ＺＭＰ軌道（詳しくは目標ＺＭＰのＸ軸方向位置）は、例えば図１４に示すパターンで設定される。このパターンは、第１旋回歩容及び第２旋回歩容のいずれにおいても、先に図６に示したパターンと同様のパターンである。そして、このパターンの折れ点の時刻や目標ＺＭＰの位置がＺＭＰ軌道パラメータとして決定される。
【０２１５】
なお、図示は省略するが、定常歩容が歩行歩容である場合の目標ＺＭＰのＹ軸方向の位置は、第１旋回歩容及び第２旋回歩容のいずれにおいても、片脚支持期においては、支持脚である脚体２の足首関節のＹ軸方向の位置と同じ位置（足首関節の直下の位置）に保たれるように設定される。そして、両脚支持期においては、目標ＺＭＰのＹ軸方向の位置は、直前の片脚支持期において支持脚となっていた脚体２の足首関節のＹ軸方向の位置と同じ位置から、新たに着地させた脚体２の足首関節のＹ軸方向の位置と同じ位置まで移動していくように設定される。
【０２１６】
以上が、図８のＳ０２２の処理の詳細である。
【０２１７】
図８に戻って、歩容生成装置１００は、上記の如くＳ０２２の処理を実行した後、Ｓ０２４に進み、定常歩容の初期状態を算出する。ここで算出する初期状態は、具体的には、定常歩容の初期上体位置速度（初期上体位置及び初期上体速度）及び初期発散成分である。この初期状態の算出は、図１５のフローチャートに示す処理によって、探索的に行なわれる。
【０２１８】
以下説明すると、まず、Ｓ２００において、歩容生成装置１００は、定常歩容パラメータ（図８のＳ０２２で決定された歩容パラメータ）に基づいて、定常歩容の目標足平位置姿勢、目標腕姿勢、および目標上体姿勢角の初期状態（定常歩容の初期時刻（＝今回歩容の終端時刻）での状態）を決定する。ここで「状態」とは、位置又は姿勢とその時間的変化率（位置又は姿勢の変化速度）との組を意味する。例えば目標足平位置姿勢の初期状態は、定常歩容の初期時刻での足平位置姿勢と、その時間的変化率（すなわち、足平２２の移動速度及び姿勢の変化速度）との組を意味する。目標腕姿勢の初期状態、目標上体姿勢角の初期状態についても同様である。
【０２１９】
この場合、支持脚側の足平位置姿勢の初期状態と、遊脚側の足平位置姿勢の初期状態とは、図１１のＳ１００で決定した足平軌道パラメータに基づいて決定される。
【０２２０】
具体的には、足平軌道パラメータのうちの、前記第１旋回歩容初期支持脚足平位置姿勢と、第１旋回歩容初期遊脚足平位置姿勢とが、それぞれ、定常歩容の初期時刻での支持脚側の足平位置姿勢、遊脚側の足平位置姿勢として決定される。
【０２２１】
また、定常歩容の初期時刻での支持脚側の足平位置姿勢の時間的変化率は、第１旋回歩容初期支持脚足平位置姿勢から第２旋回歩容終端遊脚足平位置姿勢に至る足平位置姿勢軌道（次回歩容支持脚座標系から見た軌道）を有限時間整定フィルタにより生成した場合における該軌道の初期時刻（定常歩容の初期時刻）での足平位置姿勢の時間的変化率として算出される。この場合、第１旋回歩容初期支持脚足平位置姿勢から第２旋回歩容終端遊脚足平位置姿勢に至る足平位置姿勢軌道のうち、定常歩容の初期時刻からその直後の時刻までの軌道から定常歩容の初期時刻での支持脚側の足平位置姿勢の時間的変化率を算出することができる。
【０２２２】
また、定常歩容の初期時刻での遊脚側の足平位置姿勢の時間的変化率は、今回歩容初期支持脚足平位置姿勢から第１旋回歩容終端終端遊脚足平位置姿勢に至る足平位置姿勢軌道（次回歩容支持脚座標系から見た軌道）を有限時間整定フィルタにより生成した場合における該軌道の初期時刻（定常歩容の初期時刻）での足平位置姿勢の時間的変化率として算出される。この場合、今回歩容初期支持脚足平位置姿勢から第１旋回歩容終端終端遊脚足平位置姿勢に至る足平位置姿勢軌道のうち、今回歩容の初期時刻から定常歩容の初期時刻（又はその直後の時刻）までの軌道を生成すれば、該軌道（定常歩容の初期時刻の近辺の軌道）から定常歩容の初期時刻での遊脚側の足平位置姿勢の時間的変化率を算出することができる。
【０２２３】
また、腕姿勢の初期状態は、図１１のＳ１０４で決定した腕姿勢軌道パラメータに基づいて、定常歩容の初期時刻における腕姿勢（上体２４に対する両腕体の全体重心位置等）と該初期時刻の直後の期間の腕姿勢の変化量とを求めることで決定される。
【０２２４】
また、上体姿勢角の初期状態は、図１１のＳ１０２で決定した上体姿勢軌道パラメータ基づいて、定常歩容の初期時刻における上体姿勢角と該初期時刻の直後の期間の上体姿勢角の変化量とを求めることで決定される。なお、本実施形態では、上体姿勢軌道パラメータにより規定される上体姿勢は、定常的に上体２４の体幹軸が鉛直方向に向く姿勢であるので、定常歩容の初期時刻での上体姿勢角およびその角速度は、いずれも“０”である。
【０２２５】
次いで歩容生成装置１００は、Ｓ２０２において初期上体水平位置速度の候補（定常歩容の初期時刻での上体２４の水平位置及び水平速度の候補）である（Ｘs，Ｖxs）（Ｘs：水平位置、Ｖxs：水平速度）を仮決めする。ここで仮決めする候補（Ｘs，Ｖxs）は、任意でよいが、例えば前回歩容の生成時に求めた定常歩容の初期状態における上体水平位置速度の候補（Ｘs，Ｖxs）として仮決めすればよい。
【０２２６】
尚、説明を簡略にするため、サジタルプレーン上でＸ軸方向（ロール軸方向）での定常歩容の初期状態（初期上体水平位置速度）を探索する場合を例にとって説明する。ただし、実際には位置・速度のいずれについても、Ｘ軸方向（ロール軸方向）と、Ｙ軸方向（ピッチ軸方向）とで別々に、あるいは同時に定常歩容の初期状態（定常歩容の前記境界条件を満たす初期状態）を探索する必要がある。
【０２２７】
探索的な決定手法としては、擬似ヤコビアン（感度マトリックス）を求め、最急降下法などにより次候補を決定する方法や、シンプレックス法などを用いればよい。本実施形態では、例えば最急降下法を用いる。
【０２２８】
次いで、Ｓ２０４を経てＳ２０６に進み、定常歩容の初期時刻での上体２４の鉛直位置（Ｚ軸方向位置）Ｚs及び鉛直速度（Ｚ軸方向速度）Ｖzsの組である初期上体鉛直位置速度（Ｚs，Ｖzs）が決定される。
【０２２９】
初期上体鉛直速度Ｖzsは、本実施形態では例えば以下のように決定される。
【０２３０】
ロボット１には、動力学的関係として、次式が成立する。
【０２３１】
終端全体重心鉛直位置−初期全体重心鉛直位置
＝（床反力鉛直成分／ロボットの全体質量）の２階積分
＋重力加速度の２階積分
＋初期全体重心鉛直速度＊１歩の時間
…式１３
（ただし、重力加速度は負の値とする。）
また、定常歩容では、終端全体重心鉛直位置と初期全体重心鉛直位置は一致するので、上式１３の右辺は零にならなければならない。したがって、これらの関係から初期全体重心鉛直速度を求めることができる。具体的には、まず、前記図１１のＳ１０６で決定した床反力鉛直成分軌道パラメータによって算出される床反力鉛直成分をロボット１の全体質量で割った値を、定常歩容の初期から終端までの期間において２階積分することにより、床反力鉛直成分による全体重心移動量（式１３の右辺第１項）が求められる。
【０２３２】
さらに、重力加速度を定常歩容の初期から終端までの期間において２階積分することにより、重力による全体重心移動量（式１３の右辺第２項）が求められる。そして、上記の如く求めた、床反力鉛直成分による全体重心移動量と重力による全体重心移動量との和の符号を反転させたものを、定常歩容の１周期Tcycの時間で割ることにより、初期全体重心鉛直速度が求められる。
【０２３３】
そして、本実施形態では、例えば、上体２４と他の部位（脚体２，２や腕体）とに質点を有する多質点モデル（幾何学モデル）を用い、該多質点モデルの重心点の鉛直速度が上記初期全体重心鉛直速度に一致するような上体２４の鉛直速度を、Ｓ２００で決定した足平位置姿勢、腕姿勢等の初期状態と、Ｓ２０２（又は後述のＳ２１８）で決定された初期上体水平位置速度（Ｘs，Ｖxs）とを基に求め、その求めた鉛直速度を初期上体鉛直速度Ｖzsとして決定する。
【０２３４】
上記多質点モデルとしては、例えば、上体２４の質量（又は上体２４と腕体とを合わせた質量）を有する１つの上体質点と、両脚体２，２のそれぞれの質量を有する２つの脚質点とから構成される３質点モデルが挙げられる。この場合、例えば、上体質点の位置は、上体２４の位置姿勢に応じて規定され、各脚質点の位置は、各脚体２の足平位置姿勢に応じて規定されるものとする。このような３質点モデルを用いた場合には、上記の如く求めた初期全体重心鉛直速度と、足平位置姿勢の初期状態とを基に、上体質点の鉛直速度を算出できる。そして、その上体質点の鉛直速度と、Ｓ２００で決定された上体姿勢角の初期状態とを基に、初期上体鉛直速度Ｖzsを決定することが可能である。
【０２３５】
なお、より多くの質点を有する多質点モデル（例えばロボット１の各リンクに質点を有する幾何学モデル）を用いることによってより正確に、初期上体鉛直速度Ｖzsを決定するようにしてもよい。また、ロボット１の上体２４以外の部位の質量が上体２４に比して十分に小さいような場合には、例えばロボット１の全体重心の鉛直速度が上体２４の鉛直速度にほぼ一致すると見なし、上記初期全体重心鉛直速度を、そのまま初期上体鉛直速度Ｖzsとして決定するようにしてもよい。
【０２３６】
一方、定常歩容の初期上体鉛直位置Ｚsは、例えば本出願人が先に特開平１０−８６０８０号公報で提案した上体高さ決定手法を用いて決定される。このとき、初期時刻における足平位置姿勢（前記図１１のＳ１００で決定した第１旋回歩容初期支持脚足平位置姿勢及び第１旋回歩容初期遊脚足平位置姿勢）と、各脚体２の膝部の曲げ角に関する所定の幾何学的条件とに基づいて、初期時刻での各脚体２，２の膝部が伸び切らないような初期上体鉛直位置Ｚsが決定される。例えば、支持脚側脚体２の膝曲げ角をθsup、遊脚側脚体２の膝曲げ角をθswgとしたとき、それらの膝曲げ角θsup，θswgの正弦関数値の逆数の和がある所定値（有限値）になるように、初期上体鉛直位置が決定される。ここで、膝曲げ角θsup，θswgは、各脚体２の大腿部の軸心に対する下腿部の軸心の角度であり、各脚体２が伸びきった状態から膝部を曲げていくに伴い、“０”から増加していく角度である。なお、このような上体２４の鉛直位置の決定手法は、上記特開平１０−８６０８０号公報に詳細に説明されているので、ここでは以上の説明に留める。
【０２３７】
補足すると、ロボット１は、片脚当たり６自由度であることから、足平位置姿勢軌道および上体位置姿勢軌道の初期状態（位置姿勢とその時間的変化率）が与えられれば、ロボット１の上体２４及び脚体２，２の運動の初期状態は一義的にすべて決定されることになる。したがって、例えば、上体２４及び脚体２，２の全体の質量がロボット１の全体の質量にほぼ一致するような場合には、上体２４及び脚体２，２の運動の初期状態が与えられれば、初期全体重心鉛直速度も一義的に決定される。逆に、片脚当たり６自由度であることから、足平位置姿勢軌道および上体位置姿勢軌道の初期状態の内で速度に関する状態のひとつ（例えば初期上体鉛直速度）が未定であっても、初期全体重心鉛直速度が与えられれば、未定の初期状態は一義的に決定される。
【０２３８】
Ｓ２０６の処理の後、次いでＳ２０８に進み、定常歩容の候補としての歩容（定常歩容の１歩分（１周期分）の歩容）が仮に生成される。より具体的には、図８のＳ０２２で決定した定常歩容パラメータを基に、初期時刻から終端時刻までの各瞬間における目標ＺＭＰ、目標床反力鉛直成分、目標足平位置姿勢、目標上体姿勢および目標腕姿勢の瞬時値が逐次求められる。そして、求めた目標ＺＭＰと目標床反力鉛直成分とを満足するように、図７に示した動力学モデル（倒立振子モデル）を用いて上体位置を逐次決定することによって、定常歩容の初期時刻から終端時刻までの歩容を生成する。この場合、前記初期上体水平位置速度（Ｘs，Ｖxs）、初期上体鉛直位置速度（Ｚs，Ｖzs）が上体２４の位置及び速度の初期状態として設定される。
【０２３９】
尚、この歩容生成は歩容生成装置１００の内部で行われるだけであって、実際のロボット１を駆動するための目標値として、歩容生成装置１００から出力されることはない。
【０２４０】
Ｓ２０８の処理は、具体的には、図１６のフローチャートに示す如く実行される。
【０２４１】
以下説明すると、歩容生成装置１００は、まず、Ｓ３００において、諸々の初期化を行なう。具体的には、歩容生成用時刻Ｔkが定常歩容の初期時刻Ｔsに初期化される。さらに、上体水平位置速度に、初期上体水平位置速度（Ｘs，Ｖxs）の最新の候補値（図１５のＳ２０２もしくは後述のＳ２１６もしくはＳ２１８で決定された最新の候補値）が代入され、上体鉛直位置速度に、初期上体鉛直位置速度（Ｚs，Ｖzs）の最新値（図１５のＳ２０６で決定された最新値）が代入される。また、上体姿勢角には、基準上体姿勢角の初期値、上体姿勢角速度には、基準上体姿勢角速度の初期値が代入される。
【０２４２】
次いで、Ｓ３０２を経てＳ３０４において、歩容生成装置１００は、歩容生成用時刻Ｔk（現在値）が終端時刻Ｔe（＝Ｔs＋Ｔcyc）以前の時刻であるか否か（Ｔk≦Ｔeであるか否か）を判断する。この判断結果が肯定的である場合には、歩容生成装置１００は、Ｓ３０６〜Ｓ３１６の処理（詳細は後述する）を実行することによって、時刻Ｔkでの歩容の瞬時値を決定する。
【０２４３】
次いでＳ３１８に進み、歩容生成装置１００は、歩容生成用時刻Ｔkを所定の刻み時間ΔＴkだけ増加させた後、Ｓ３０４の判断を再び行なう。ここで、刻み時間ΔTkは、例えば制御周期Δｔと一致させておけばよい。ただし、演算量を低減するために、ΔTkをΔｔよりも長い時間に設定してもよい。
【０２４４】
Ｓ３０４の判断結果が肯定的である場合には、Ｓ３０６からＳ３１８までの処理が繰り返され、Ｓ３０４の判断結果が否定的になった場合には、図１６の処理、すなわち、図１５のＳ２０８の処理は終了する。これにより、定常歩容の初期時刻から終端時刻までの１周期分の定常歩容（仮の定常歩容）の生成が完了する。
【０２４５】
歩容生成装置１００は、上記Ｓ３０６〜Ｓ３１６で仮の定常歩容の瞬時値を決定する処理を次のように実行する。まずＳ３０６において、歩容生成装置１００は、定常歩容パラメータ（より詳しくは床反力鉛直成分軌道パラメータ）を基に、図１３に示した目標床反力鉛直成分軌道の時刻Ｔkでの瞬時値を求める。
【０２４６】
さらに、Ｓ３０８において、歩容生成装置１００は、定常歩容パラメータ（より詳しくはＺＭＰ軌道パラメータ）を基に、図１４に示した目標ＺＭＰ軌道の時刻Ｔkでの瞬時値を求める。
【０２４７】
次いでＳ３１０に進み、歩容生成装置１００は、定常歩容パラメータ（より詳しくは足平軌道パラメータ、上体姿勢軌道パラメータ、及び腕姿勢軌道パラメータ）を基に、目標足平位置姿勢（支持脚側及び遊脚側の両方の目標足平位置姿勢）、目標上体姿勢および目標腕姿勢の時刻Ｔkでの瞬時値をそれぞれ求める。ただし、目標腕姿勢に関しては、より詳しくは両腕体の全体重心位置が決定されるが、鉛直軸（または上体２４の体幹軸）まわりの角運動量を変化させる腕体の運動（腕振り運動）は、未だ決定されない。
【０２４８】
次いでＳ３１２に進み、歩容生成装置１００は、Ｓ３０６で求めた目標床反力鉛直成分を満足する（ロボット１の全体重心の鉛直方向の慣性力と重力との和を目標床反力鉛直成分に釣り合わせる）ように、時刻Ｔkでの上体鉛直位置を算出する。
【０２４９】
具体的には、次式１５および式１６で表される動力学関係式（鉛直方向でのニュートンの運動方程式を離散化した式）を用いてロボット１の全体重心鉛直速度と全体重心鉛直位置とが算出される。
【０２５０】
時刻Ｔkにおける全体重心鉛直速度
＝時刻(Ｔk−ΔTk)における全体重心鉛直速度
＋((時刻Ｔkにおける床反力鉛直成分／ロボットの全体質量)＋重力加速度)＊ΔTk
（ただし、重力加速度は負の値とする。）
…式１５
時刻Ｔkにおける全体重心鉛直位置
＝時刻(Ｔk−ΔTk)における全体重心鉛直位置
＋時刻Ｔkにおける全体重心鉛直速度＊ΔTk
…式１６
そして、本実施形態では、歩容生成装置１００は、上記の如く算出した時刻Ｔkでの全体重心鉛直位置と、目標足平位置姿勢と、基準上体姿勢（目標上体姿勢）とを基に、例えば、前記した３質点モデル（Ｓ２０６の処理に関して説明した３質点モデル）を用いて上体鉛直位置を求める。この場合、目標足平位置姿勢に基づき、３質点モデルにおける２つの脚質点の位置が決定される。さらに、この３質点モデルにおける全体重心の鉛直位置が、上記の如く求めた時刻Ｔkでの全体重心鉛直位置に一致するような上体質点の鉛直位置が決定される。そして、この上体質点の鉛直位置と目標上体姿勢（基準上体姿勢）とから上体鉛直位置が決定される。
【０２５１】
なお、より多くの質点を有する多質点モデル（例えばロボット１の各リンクに質点を有するモデル）を用いることによって、より正確に上体鉛直位置を求めるようにしてもよい。また、上体２４以外の部位の質量が上体２４に比して十分に小さいような場合には、簡略的に、全体重心鉛直位置が、上体２４の重心の鉛直位置に一致するものとみなし、該全体重心鉛直位置と、目標上体姿勢（基準上体姿勢）とから上体鉛直位置を決定するようにしてもよい。
【０２５２】
次いでＳ３１４に進み、歩容生成装置１００は、目標ＺＭＰを満足するように（ロボット１の慣性力と重力との合力が目標ＺＭＰまわりに発生するモーメントの水平成分が“０”であるという動力学的平衡条件を満足するように）、時刻Ｔkでの上体水平加速度（上体２４の水平方向の加速度）を決定する。
【０２５３】
この時点において、定常歩容（仮の定常歩容）の足平位置姿勢、腕姿勢、上体姿勢および上体鉛直位置の瞬時値（現在時刻Ｔkでの値）が決定されているので、残りの上体水平位置を決定すれば、鉛直軸まわりの角運動量を変化させる腕体の運動自由度を除いて、ロボット１の全体の目標運動が決定されることとなる。したがって、上体水平位置を決定すれば、床反力の鉛直軸まわりのモーメントを除き、すべての床反力も一義的に決定される。
【０２５４】
なお、本実施形態では、定常歩容（仮の定常歩容）の目標床反力鉛直成分及び目標ＺＭＰは、それぞれ前記図８のＳ０２２で決定した定常歩容パラメータの床反力鉛直成分軌道パラメータ、目標ＺＭＰ軌道パラメータによって規定される。したがって、上体水平位置の決定に応じて従属的に決定される床反力は、床反力水平成分のみである。
【０２５５】
補足すると、本実施形態のロボット１は、各脚体２の自由度が６自由度であることから、目標足平位置姿勢と目標上体位置姿勢とを決定すれば、各脚体２の各部の位置姿勢も一義的に決定されることとなる。なお、鉛直軸まわりの角運動量を変化させる腕の運動自由度は、後述するように、スピン力を打ち消すために用いられる。
【０２５６】
Ｓ３１４では、例えば図７の動力学モデル（倒立振子モデル）に係わる前記式０４を用いて上体水平加速度が求められる。より具体的には、現在時刻Ｔkの上体鉛直位置と、時刻（Ｔk−ΔTk)の上体水平位置と、現在時刻Ｔkの目標上体姿勢とから、現在時刻Ｔkでの上体質点２４ｂの鉛直位置及び水平位置が決定される。なお、時刻(Ｔk−ΔTk)までの上体水平位置の時系列又は時刻(Ｔk−ΔTk)での歩容状態を基に時刻Ｔkでの上体水平位置を補間的に推定し、その推定した上体水平位置を時刻(Ｔk−ΔTk)の上体水平位置の代わりに用いてもよい。
【０２５７】
また、現在時刻Ｔkでの床反力鉛直成分から、上体質点２４ｂに作用する重力（＝ｍb＊ｇ）を差し引いた値を、上体質点２４ｂの質量ｍbにより除算することによって、現在時刻Ｔkでの上体質点２４ｂの鉛直加速度が求められる。
【０２５８】
そして、上記の如く求めた上体質点２４ｂの鉛直位置、水平位置、鉛直加速度をそれぞれ、前記式０４のＺb、Ｘb、d2Zb/dt2に代入すると共に、現在時刻Ｔkでの目標ＺＭＰの水平位置および鉛直位置を式０４のＸzmp，Ｚzmpに代入し、さらに、同式０４のＭzmp_yを“０”にしてなる式を、d2Xb/dt2について解くことにより、現在時刻Ｔkでの上体質点水平加速度d2Xb/dt2が算出される。そして、この上体質点水平加速度d2Xb/dt2が現在時刻Ｔkでの上体水平加速度として求められる。
【０２５９】
尚、より厳密な動力学モデルを用いて、目標ＺＭＰまわりの床反力モーメントの水平成分を“０”にするような上体水平加速度を探索的に求めるようにしてもよい。
【０２６０】
次いでＳ３１６に進み、歩容生成装置１００は、Ｓ３１４で求めた上体水平加速度を２階積分することにより現在時刻Ｔkでの上体水平位置を算出する。より詳しくは、上体水平加速度に刻み時間ΔTkを乗じてなる値を時刻Ｔk−ΔTkでの上体水平速度に加算することによって、現在時刻Ｔkでの上体水平速度が求められる。さらにその上体水平速度に刻み時間ΔTkを乗じてなる値を時刻Ｔk−ΔTkでの上体水平位置に加算することによって現在時刻Ｔkでの上体水平位置が求められる。
【０２６１】
以上がＳ３０６〜Ｓ３１６で実行される歩容の生成処理の詳細である。
【０２６２】
図１５のＳ２０８の処理を完了した後、Ｓ２１０に進み、歩容生成装置１００は、生成した歩容（仮定常歩容）の終端上体水平位置・速度を、その瞬間の支持脚に対応する支持脚座標系（図１２のＸ'''軸及びＹ'''軸を水平方向の２軸とする支持脚座標系）から見た値に変換し、その値を（Ｘe，Ｖxe）とする（Ｘe：終端上体水平位置、Ｖxe：終端上体水平速度）。
【０２６３】
次いでＳ２１２に進み、図示の如く、歩容生成装置１００は、初期上体水平位置速度（Ｘs，Ｖxs）と終端上体水平位置速度（Ｘe，Ｖxe）との差を算出する。この差（Ｘs−Ｘe，Ｖxs−Ｖxe）を上体水平位置速度境界条件誤差（errx，errv）と呼ぶ。定常歩容は、前記境界条件を満たす歩容であるので、（Ｘs，Ｖxs）と（Ｘe，Ｖxe）とが一致している必要がある。従って、上体水平位置速度境界条件誤差（errx，errv）が零またはほぼ零である必要がある。本実施形態では、以下のように、上体水平位置速度境界条件誤差（errx，errv）がほぼ零となる（Ｘs，Ｖxs）が探索的に求められる。
【０２６４】
次いでＳ２１４に進み、歩容生成装置１００は、上体水平位置速度境界条件誤差（errx，errv）が、あらかじめ適宜設定された許容範囲内にあるか否か（errx，errvのいずれもが、許容範囲内にあるか否か）を判断する。
【０２６５】
Ｓ２１４の判断結果が否定的であるときにはＳ２１６に進む。このＳ２１６では、（Ｘs，Ｖxs）の近辺に複数（本実施形態では２つ）の初期値候補（Ｘs＋ΔＸs，Ｖxs），（Ｘs，Ｖxs＋ΔＶxs）が決定される。ここで、ΔＸs，ΔＶxsは、それぞれＸs，Ｖxsに対する所定の微小変化量を意味している。そして、これらの初期値候補のそれぞれを上体水平位置速度の初期状態として、前記Ｓ２０８と同様の処理によって定常歩容（仮定常歩容）が歩容パラメータを用いて生成される。さらに、その生成された定常歩容の終端上体位置速度を、その瞬間の支持脚に対応する支持脚座標系（図１２のＸ'''軸及びＹ'''軸を水平方向の２軸とする支持脚座標系）から見た値に変換した値（Ｘe＋ΔＸe1，Ｖxe＋ΔＶxe1），（Ｘe＋ΔＸe2，Ｖxe＋ΔＶxe2）が求められる。ここで、（Ｘe＋ΔＸe1，Ｖxe＋ΔＶxe1）は（Ｘs＋ΔＸs，Ｖxs）に対応する終端上体位置速度を意味し、（Ｘe＋ΔＸe2，Ｖxe＋ΔＶxe2）は（Ｘs，Ｖxs＋ΔＶxs）に対応する終端上体位置速度を意味している。なお、この場合の定常歩容（仮定常歩容）の生成処理では、上体水平位置速度以外の状態量の初期状態は、例えば上体水平位置速度の初期値候補を（Ｘs，Ｖxs）とした場合と同一に設定すればよい。Ｓ２１６ではさらに、前記Ｓ２１２と同様の処理によって、各初期値候補とこれに対応する終端上体位置速度との差、すなわち、各初期値候補（Ｘs＋ΔＸs，Ｖxs），（Ｘs，Ｖxs＋ΔＶxs）のそれぞれに対応する上体水平位置速度境界条件誤差が求められる。
【０２６６】
次いでＳ２１８に進み、歩容生成装置１００は、（Ｘs，Ｖxs）およびその付近の初期値候補（Ｘs＋ΔＸs，Ｖxs），（Ｘs，Ｖxs＋ΔＶxs）のそれぞれに対する上体水平位置速度境界条件誤差を基に、（Ｘs，Ｖxs）の次の初期値候補を探索法により決定する。該探索法としては、擬似ヤコビアン（感度マトリックス）を求め、最急降下法などにより次候補を決定する方法や、シンプレックス法などを用いることができる。例えば、（Ｘs，Ｖxs）およびその付近の初期値候補（Ｘs＋ΔＸs，Ｖxs），（Ｘs，Ｖxs＋ΔＶxs）のそれぞれに対する上体水平位置速度境界条件誤差によって、上体水平位置及び上体水平速度をそれぞれ初期値候補（Ｘs，Ｖxs）から微小変化させたときの、上体水平位置速度境界条件誤差の変化度合いを示す感度マトリックスが求められる。そして、その感度マトリックスに基づいて、上体水平位置速度境界条件誤差をより小さくするような初期値候補（Ｘｓ，Ｖｘｓ）が新たに決定される。このように上体水平位置速度の新たな初期値候補（Ｘｓ，Ｖｘｓ）が決定された後、Ｓ２０６に戻る。
【０２６７】
Ｓ２１４の判断結果が否定的となる限りは歩容生成装置１００は、Ｓ２０６〜Ｓ２１８の処理を繰り返す。そして、Ｓ２１４の判断結果が肯定的になると、繰り返しループ（Ｓ２０４）を抜けてＳ２２０に進む。この場合、Ｓ２０４の繰り返しループを抜けたときの直前に生成された仮定常歩容が、境界条件を満たす定常歩容として得られることとなる。
【０２６８】
Ｓ２２０では、Ｓ２０４の繰り返しループのＳ２０８で最終的に生成した仮定常歩容における初期上体水平位置速度の初期値候補（Ｘs，Ｖxs）と、初期上体鉛直位置速度（Ｚs，Ｖzs）とを、それぞれ求めるべき定常歩容の初期上体水平位置速度（Ｘ0，Ｖx0）、初期上体鉛直位置速度（Ｚ0，Ｖz0）として決定する。
【０２６９】
次いでＳ２２２に進み、歩容生成装置１００は、定常歩容初期発散成分（定常歩容の初期時刻Ｔsでの発散成分の値）ｑ0を算出する。
【０２７０】
本実施形態では、歩容の発散成分の値は、以下に説明するように定義される。そして、Ｓ２２２では、この定義に従って、定常歩容初期発散成分ｑ0が算出される。
【０２７１】
まず、図７の倒立振子モデルにおける上体質点２４ｂの運動と、床反力モーメント（支持脚座標系の原点まわりの床反力モーメント）との間の関係を表す前記式０３を、状態方程式により表現すると次式１００となる。なお、ここでは、ロボット１の移動時の上体２４の高さ（鉛直位置）の、平均的な高さに対する相対的な変動量（上体２４の高さの分散）は十分に小さいものとして、式０３の右辺の第２項のＺbが、上体質点２４ｂの平均的な高さとしてあらかじめ設定された一定値ｈに一致するものとしている。また、ここでは、前記式０３の床反力モーメントＭb_yを、倒立振子に対する入力モーメントとして、Ｍinと表記している。
【０２７２】
【数１】
0005456588.tif 000002
【０２７３】
この式１００を離散時間系での表現に書き直すことによって、次式１０２の状態方程式が得られる。
【０２７４】
XVb(k+1)＝Ａ(k)＊XVb(k)＋Ｂ(k)＊Min(k)    ……式１０２
なお、添え字(k)、(k+1)を付した変数は、それぞれ、離散時間系のｋ番目の時刻での値、ｋ＋１番目の時刻での値を意味する。以降の説明では、ｋ番目の時刻、ｋ＋１番目の時刻をそれぞれ、単に時刻ｋ、時刻ｋ＋１、というように表現する場合がある。
【０２７５】
式１０２におけるXVbは、式１００に関するただし書きで定義した通り、上体質点２４ｂの水平位置Xbと、その時間的変化率である水平速度Ｖxbとをそれぞれ状態変数とする状態変数ベクトル（縦ベクトル）である。
【０２７６】
また、式１０２におけるＡ(k)、Ｂ(k)は、それぞれ、２次の正方行列（状態遷移行列）、２次の縦ベクトルであり、それぞれの各成分値が以下の式１０４ａ〜１０４ｃ，１０６ａ〜１０６ｃの如く決定されるものである。なお、ΔＴは離散時間系の刻み時間であり、ω0は下記のただし書きの式１０８によって定義される角周波数値である。また、exp(  )は、自然対数の底の指数関数である。
【０２７７】
【数２】
0005456588.tif 000003
【０２７８】
この場合、式１０４ａ〜１０４ｃ，１０６ａ〜１０６ｃと式１０８とから明らかなように、Ａ(k)，Ｂ(k)の各成分値は、上体質点２４ｂの鉛直加速度d2Zb/dt2（鉛直方向の運動加速度d2Zb/dt2）の値に依存して定まる。従って、Ａ(k)，Ｂ(k)の各成分値は、上体質点２４ｂの鉛直方向の慣性力（＝−ｍb＊d2Zb/dt2）に依存する値、すなわち該慣性力の関数値となる。なお、上体質点２４ａに作用する重力は一定値であるから、Ａ(k)，Ｂ(k)の各成分値は、別の言い方をすれば、上体質点２４ｂの鉛直方向の慣性力と上体質点２４ｂに作用する重力との合力、または、該合力に釣り合う床反力鉛直成分の関数値でもある。
【０２７９】
補足すると、本実施形態の如く倒立振子の上体質点２４ｂの質量ｍbがロボット１の全体質量に一致するものとした場合には、上体質点２４ｂの鉛直方向の慣性力と上体質点２４ｂに作用する重力との合力に釣り合う床反力鉛直成分は、ロボット１に作用する床反力鉛直成分（全床反力の並進床反力鉛直成分）に一致する。
【０２８０】
上記式１０２の状態方程式により表される系では、状態変数ベクトルＸＶbの初期値ＸＶb(0)（ｋ＝０の時刻（時刻０）でのＸＶbの値）と、時刻０から時刻ｋ−１までの入力モーメントMin（床反力モーメントの水平成分Ｍb_y）の時系列とが与えられたとき、任意の時刻ｋ（＞０）での状態変数ベクトルＸＶbの値ＸＶb(k)は、次式１１０により与えられることとなる。
【０２８１】
【数３】
0005456588.tif 000004
【０２８２】
なお、式１１０中のただし書きで定義したφ(k,j)に関しては、ｊ＝ｋの場合はφ(k,j)≡単位行列とする。
【０２８３】
次に、前記した定常歩容での倒立振子モデルの挙動に着目し、定常歩容の初期時刻Ｔsをｋ＝０の時刻、定常歩容の終端時刻Ｔe（＝Ｔs＋Ｔcyc）をｋ＝ｋcyc（ただし、ｋcyc≡Ｔcyc／ΔＴ）の時刻とし、初期時刻Ｔsでの定常歩容の運動により規定される状態変数ベクトルＸＶbがＸＶb(0)であるとする。そして、定常歩容の終端時刻Ｔe（ｋ＝ｋcycの時刻）における状態変数ベクトルＸＶbのうち、定常歩容の初期時刻Ｔsでの状態変数ベクトルの値ＸＶb(0)に依存する成分をＸＶb(kcyc)とおく。このとき、ＸＶb(kcyc)と、ＸＶb(0)との間の関係は、上記式１１０に基づいて、次式１１２により表されることとなる。
【０２８４】
XVb(kcyc)＝φ(kcyc,0)＊XVb(0)    ……式１１２
ただし、φ(kcyc,0)＝Ａ(kcyc-1)＊……＊Ａ(1)＊Ａ(0)
さらに、この式１１２の右辺の行列φ(kcyc,0)の２つの固有値をλ1，λ2、それぞれの固有値に対応する固有ベクトル（縦ベクトル）を(a11，a21)T、(a12，a22)T、これらの固有ベクトルをそれぞれ第１列、第２列とする２次の正方行列をΓcycとおき、この行列Γcycを用いてφ(kcyc,0)を対角化してなる行列をΛとおく。すなわち、Λを次式１１４により定義する。以降、行列Γcycを対角化用行列という。
【０２８５】
【数４】
0005456588.tif 000005
【０２８６】
この式１１４と前記式１１２とから次式１１６が得られる。
【０２８７】
Γcyc-1＊XVb(kcyc)＝Λ＊Γcyc-1＊XVb(0)    ……式１１６
なお、上記対角化用行列Γcycによる対角化の対象とする行列φ(kcyc,0)は、前記式１１２のただし書きに示したように、定常歩容の１周期の初期時刻（時刻０）から、終端時刻（時刻ｋcyc）のまでの期間内の各時刻（詳しくは時刻０から時刻ｋcyc−１までの刻み時間ΔＴ毎の各時刻）での状態遷移行列Ａ(0)、Ａ(1)、……、Ａ(kcyc-1)の積であるから、定常歩容の１周期の期間内での上体質点２４ｂの慣性力の時系列に依存して定まるものとなる。従って、対角化用行列Γcycも、結果的に、その各成分値が定常歩容の１周期の期間内での上体質点２４ｂの慣性力の時系列に依存して定まるものとなる。
【０２８８】
ここで、任意の時刻ｋでの状態変数ベクトルＸＶb(k)を、対角化用行列Γcycの逆行列Γcyc-1によって線形変換してなるベクトル（以降、変換状態変数ベクトルという）を(ｐ(k)，ｑ(k))Tとおく。すなわち、変換状態変数ベクトル(ｐ(k)，ｑ(k))Tを次式１１８により定義する。
【０２８９】
(ｐ(k)，ｑ(k))T≡Γcyc-1＊XVb(k)    ……式１１８
この式１１８と前記式１１６とから、次式１２０が得られる。
【０２９０】
(ｐ(kcyc)，ｑ(kcyc))T＝Λ＊(ｐ(0)，ｑ(0))T    ……式１２０
この式１２０において、λ1＞１であれば、ｐ(kcyc)の絶対値＞初期値ｐ(0)の絶対値となり、λ1≦１であれば、ｐ(kcyc)の絶対値≦初期値ｐ(0)の絶対値となる。同様に、λ2
＞１であれば、ｑ(kcyc)の絶対値＞初期値ｑ(0)の絶対値となり、λ2≦１であれば、ｑ(kcyc)の絶対値≦初期値ｑ(0)の絶対値となる。
【０２９１】
一方、定常歩容におけるｇ＋d2Zb/dt2の値は、ｇ＋d2Zb/dt2≦０となる状態に常に保持されるということはなく、ｇ＋d2Zb/dt2≦０となる状態と、ｇ＋d2Zb/dt2＞０となる状態とが交互に生じると考えてよい。このような定常歩容では、一般にφ(kcyc,0)の２つの固有値λ1，λ2の一方が、“１”よりも大きい値となり、他方が“１”よりも小さい値となる。
【０２９２】
そこで、以降、λ1＜１、λ2＞１であるとする。すなわち、変換状態変数ベクトル(ｐ(k)，ｑ(k))Tのうちの、第１成分ｐ(k)が、“１”よりも小さい固有値λ1に対応する成分、第２成分ｑ(k)が、“１”よりも大きい固有値λ2に対応する成分であるとする。このとき、ｐ(k)は、無限に繰り返される定常歩容において収束性を有する運動成分の状態量としての意味を持ち、ｑ(k)は、無限に繰り返される定常歩容において発散性を有する運動成分の状態量としての意味を持つ。
【０２９３】
そこで、本実施形態では、式１１８により定義した変換状態変数ベクトル(ｐ(k)，ｑ(k))Tのうちの第２成分ｑ(k)を前記発散成分として定義する。このようにして定義される発散成分ｑ(k)は、状態変数Ｘb(k)，Ｖxb(k)の線形結合値となる。この場合、その線形結合において、Ｘb(k)，Ｖxb(k)にそれぞれ掛かる重み係数は、定常歩容の１周期の期間内での上体質点２４ｂの慣性力の時系列に依存して定まるものとなる。なお、式１１８により定義した変換状態変数ベクトル(ｐ(k)，ｑ(k))Tのうちの第１成分ｐ(k)を収束成分と言う。
【０２９４】
なお、前記式１１８で定義される収束成分ｐ(k)及び発散成分ｑ(k)は、詳しくはサジタルプレーン上での収束成分ｑ(k)及び発散成分ｑ(k)（Ｘ軸方向での上体質点２４ｂの水平位置Xbと水平速度Ｖxbとを成分とする状態変数ベクトルＸＶbに対応する収束成分及び発散成分）であるが、これと同様に、ラテラルプレーン上での収束成分及び発散成分も定義される。具体的には、式１１８の右辺の状態変数ベクトルＸＶb(k)の各成分Ｘb、Ｖxbをそれぞれ、Ｙ軸方向での上体質点２４ｂの水平位置と水平速度とに置き換えた式によって、ラテラルプレーン上での収束成分及び発散成分が定義される。この場合、式１１８の行列Γcyc-1はＸ軸方向及びＹ軸方向のいずれの軸方向に関しても同一である。
【０２９５】
以上説明した発散成分ｑの定義に従って、Ｓ２２２では、定常歩容初期発散成分ｑ0は次のように算出される。
【０２９６】
すなわち、歩容生成装置１００は、定常歩容の初期時刻Ｔsから終端時刻Ｔeまでの１周期の期間内の刻み時間ΔＴ毎の各時刻Ｔk（離散時間系で言えばｋ＝０の時刻からｋ＝ｋcyc−１の時刻までの各時刻ｋ）における上体質点２４ｂの慣性力の瞬時値を、定常歩容パラメターを基に算出する。この場合、倒立振子の上体質点２４ｂの質量ｍbがロボット１の全体の質量に一致するものとした場合には、定常歩容での上体質点２４ｂの鉛直方向の慣性力と該上体質点２４ｂに作用する重力との合力が、定常歩容における床反力鉛直成分に釣り合うものとなる。そこで、本実施形態では、歩容生成装置１００は、定常歩容パラメータのうちの前記床反力鉛直成分軌道パラメータを基に、定常歩容の１周期の期間内の各時刻における床反力鉛直成分の瞬時値を算出する。該瞬時値は、図１６のＳ３０６で算出される値と同じである。そして、歩容生成装置１００は、その算出した床反力鉛直成分の各瞬時値を上体質点２４ｂの質量ｍb（＝ロボット１の全体質量）で除算してなる値を前記式１００の（ｇ＋d2Zb/dt2）の値として、前記式１０４ａ〜１０４ｃによって、状態遷移行列Ａ(k)（ｋ＝０，１，……,kcyc−１）を算出する。
【０２９７】
補足すると、前記した３質点モデルなどの多質点モデル（幾何学モデル）を用いて、定常歩容におけるロボット１の上体２４の鉛直方向の慣性力（又は鉛直加速度）を算出し、その算出した慣性力（又は鉛直加速度）を、上体質点２４ｂの慣性力（又は鉛直加速度）として用いることによって、各時刻での状態遷移行列Ａ(k)（ｋ＝０，１，……,kcyc−１）を算出するようにしてもよい。例えば、前記３質点モデルを用いて、次のようにして、定常歩容における上体質点２４ｂの慣性力の瞬時値を算出するようにしてもよい。すなわち、定常歩容の足平軌道パラメータを基に、前記３質点モデルにおける２つの脚質点の鉛直方向の慣性力の瞬時値を算出すると共に、床反力鉛直成分軌道を基に、ロボット１の全体重心の鉛直方向の慣性力の瞬時値を算出する。そして、全体重心の鉛直方向の慣性力の瞬時値から、２つの脚質点の鉛直方向の慣性力の瞬時値を差し引いたものを、上体質点２４ｂの鉛直方向の慣性力の瞬時値として算出する。
【０２９８】
歩容生成装置１００は、上記の如く定常歩容の初期時刻Ｔsから終端時刻Ｔeまでの１周期の期間におけるｋcyc個のＡ(k)（ｋ＝０，１，…，ｋcyc−１）を算出した後、これらのＡ(k)を掛け合わせることによって、式１１２の右辺の行列φ(kcyc,0)（＝Ａ(kcyc-1)＊…＊Ａ(1)＊Ａ(0)）を算出する。
【０２９９】
さらに歩容生成装置１００は、この行列φ(kcyc,0)の固有値λ1，λ2と、これらに対応する固有ベクトル(a11，a21)T、(a12，a22)Tとを算出し、それらの固有ベクトルから、前記式１１４のただし書きに従って、前記対角化用行列Γcycを決定する。そして、歩容生成装置１００は、この対角化用行列Γcycの逆行列Γcyc-1を算出する。
【０３００】
また、歩容生成装置１００は、Ｓ２２０で決定した定常歩容の初期上体水平位置速度（Ｘ0，Ｖx0）と、定常歩容の上体姿勢角の初期状態とから、定常歩容の初期時刻Ｔsでの倒立振子の上体質点２４ｂの水平位置及び水平速度の組である初期上体質点位置速度を決定する。
【０３０１】
そして、歩容生成装置１００は、上記の如く求めた逆行列Γcyc-1と、初期上体質点水平位置速度とから、前記式１１８に基づいて定常歩容初期発散成分ｑ0を算出する。より詳しくは、初期上体質点水平位置速度のＸ軸方向成分（Ｘ軸方向での状態量ベクトル）及びＹ軸方向成分（Ｙ軸方向での状態量ベクトル）に、それぞれΓ-1を乗じることによって、Ｘ軸方向及びＹ軸方向の各軸方向での初期発散成分ｑ0が算出される。
【０３０２】
なお、本実施形態では、発散成分ｑ(k)を前記式１１８により定義したが、簡易的に、上体質点２４ｂの水平位置Xbと水平速度Ｖxbとから、次式１２２により発散成分ｑ(k)を定義するようにしてもよい。
【０３０３】
ｑ(k)＝Ｘb(k)＋Ｖxb(k)／ωa      ……式１２２
この式１２２におけるωaはあらかじめ定めた所定値（例えば、前記式１０８の右辺のd2Zb/dt2を“０”としてなるω0の値、又はそれに近い値）である。
【０３０４】
以上の如く定常歩容の初期発散成分ｑ0を算出した後、Ｓ２２４に進み、歩容生成装置１００は、定常歩容の初期発散成分ｑ0を今回歩容支持脚座標系から見た値に変換し、これをｑ0”として求める。また、歩容生成装置１００は、初期上体鉛直位置速度（Ｚ0，Ｖz0）を今回歩容支持脚座標系から見た値に変換し、これを（Ｚ0”，Ｖz0”）として求める。
【０３０５】
補足すると、（Ｚ0”，Ｖz0”）は、第２旋回歩容の支持脚座標系（図１２のＸ”軸、Ｙ”軸を水平面の２軸とする支持脚座標系）から見た第２旋回歩容終端上体鉛直位置速度に一致する。また、ｑ0”も第２旋回歩容の支持脚座標系から見た第２旋回歩容終端発散成分に一致している。したがって、これらの性質を用いて、（Ｚ0”，Ｖz0”）およびｑ0”を算出するようにしても良い。
【０３０６】
以上により、図８のＳ０２４の処理、すなわち定常歩容の初期状態を求めるサブルーチン処理が終了する。
【０３０７】
次いで、図８のＳ０２６に進み、歩容生成装置１００は、今回歩容の歩容パラメータを決定（一部は仮決定）する。Ｓ０２６では、より具体的には、図１７のフローチャートに示す処理が実行される。
【０３０８】
まず、Ｓ６００において、歩容生成装置１００は、今回歩容の足平位置姿勢軌道が定常歩容の足平位置姿勢軌道につながるように、今回歩容の足平軌道パラメータを決定する。
【０３０９】
具体的には、今回歩容初期遊脚足平位置姿勢（今回歩容の初期の遊脚足平位置姿勢）は、今回歩容支持脚座標系から見た前回歩容終端支持脚足平位置姿勢（現在の遊脚足平位置姿勢）に設定される。
【０３１０】
今回歩容初期支持脚足平位置姿勢（今回歩容の初期の支持脚足平位置姿勢）は、今回歩容支持脚座標系から見た前回歩容終端遊脚足平位置姿勢（現在の支持脚足平位置姿勢）に設定される。
【０３１１】
また、今回歩容終端遊脚足平位置姿勢は、今回歩容の遊脚足平２２を、該今回歩容終端遊脚足平位置姿勢から、滑らせないようにピッチ方向に（該足平２２のつま先を下げる向きに）所定角度だけ回転させた状態での該足平２２の位置姿勢が、次回歩容支持脚座標系に対応する前記着地時足平基準位置姿勢に合致するように決定される。
【０３１２】
今回歩容終端支持脚足平位置姿勢は、今回歩容の支持脚足平２２を、今回歩容支持脚座標系に対応する着地時足平基準位置姿勢から、滑らせないようにピッチ方向に（該足平２２の踵を持上げる向きに）所定角度だけ回転させた状態での該足平２２の位置姿勢とされる。
【０３１３】
次いで、Ｓ６０２に進み、歩容生成装置１００は、今回歩容の上体姿勢軌道パラメータを決定する。この上体姿勢軌道パラメータは、それにより規定される上体姿勢軌道が、定常歩容の上体姿勢軌道に連続してつながる（今回歩容終端での上体姿勢角及び角速度がそれぞれ定常歩容初期の上体姿勢角及び角速度に一致する）ように決定される。この場合、本実施形態では、今回歩容の上体姿勢軌道パラメータにより規定される上体姿勢は、定常歩容の上体姿勢と同様に、定常的に一定姿勢である前記基準上体姿勢（上体２４の体幹軸が鉛直方向を向く姿勢）に設定される。
【０３１４】
なお、今回歩容の上体姿勢軌道は、定常歩容の上体姿勢軌道に連続的につながるように設定されておれば、今回歩容の初期から終端まで経時的に変化するように設定してもよい。
【０３１５】
次いで、Ｓ６０４に進み、歩容生成装置１００は、今回歩容の腕姿勢軌道パラメータを決定する。この腕姿勢軌道パラメータは、今回歩容の腕姿勢軌道が前記定常歩容の腕姿勢軌道に連続してつながるようにして、定常歩容の腕姿勢軌道パラメータと同様に決定される。
【０３１６】
なお、ここで決定される今回歩容の腕姿勢軌道パラメータは、定常歩容の腕姿勢軌道パラメータと同様に、鉛直軸（あるいは上体２４の体幹軸）まわりの両腕体の角運動量変化に関すること以外のパラメータ（例えば上体２４に対する腕体の手先の相対高さや腕体全体の相対重心位置などを規定するパラメータ）である。
【０３１７】
次いで、Ｓ６０６に進み、歩容生成装置１００は、今回歩容の床反力鉛直成分軌道パラメータを、それにより規定される床反力鉛直成分軌道が前記図５に示したパターンになるように決定する。ただし、今回歩容の床反力鉛直成分軌道パラメータは、今回歩容のロボット１の全体重心鉛直位置速度と床反力鉛直成分軌道とのいずれもが、前記定常歩容に連続してつながるように決定される。
【０３１８】
具体的には、まず、図８のＳ０２４の処理（定常歩容初期状態の決定処理）で最終的に求めた定常歩容の初期上体鉛直位置速度を今回歩容支持脚座標系から見た値に変換した値（Ｚ0”，Ｖz0”）、すなわち、図１５のＳ２２４で求めた（Ｚ0”，Ｖz0”）等を基に、今回歩容支持脚座標系から見た定常歩容の初期全体重心鉛直位置速度が求められる。
【０３１９】
例えば、前記した３質点モデル（Ｓ２０６の処理に関して説明した３質点モデル）を用いて定常歩容の初期全体重心鉛直位置速度が求められる。この場合、今回歩容支持脚座標系から見た定常歩容初期の目標足平位置姿勢とその時間的変化率（変化速度）とに基づき、３質点モデルにおける２つの脚質点の位置・速度が求められる。さらに、上記（Ｚ0”，Ｖz0”）と、定常歩容初期の上体姿勢角（＝基準上体姿勢角）及びその時間的変化率とから、３質点モデルにおける上体質点の位置・速度が求められる。そして、これらの３つの質点の位置・速度から、その３質点の重心位置及び速度が、定常歩容の初期全体重心鉛直位置速度として算出される。
【０３２０】
なお、より多くの質点を有する多質点モデル（例えばロボット１の各リンクに質点を有する幾何学モデル）を用いることによってより正確に、定常歩容の初期全体重心鉛直位置速度を求めるようにしてもよい。また、上体２４以外の部位の質量が上体２４に比して十分に小さいような場合には、上記（Ｚ0”，Ｖz0”）と、定常歩容初期の上体姿勢角（＝基準上体姿勢角）及びその時間的変化率とから、定常歩容の初期全体重心鉛直位置速度を求めるようにしてもよい。
【０３２１】
このようにして求めた定常歩容の初期全体重心鉛直位置速度を、前記式１３と下記式４１の終端全体重心鉛直位置速度に代入すると共に、前回歩容の瞬時値（より詳しくは、前回歩容の終端状態を今回歩容支持脚座標系から見た値）の全体重心鉛直位置および速度を、前記式１３と下記式４１の初期全体重心鉛直位置および速度に代入し、式１３と式４１の関係を満足するように、今回歩容の床反力鉛直成分軌道パラメータが決定される。ただし、式１３と式４１における積分値は今回歩容の初期から終端までの期間の積分値とする。
【０３２２】
終端全体重心鉛直速度−初期全体重心鉛直速度
＝（床反力鉛直成分/ロボットの質量）の１階積分
＋重力加速度の１階積分
…式４１
（ただし、重力加速度は負の値とする。）
より具体的には、まず、図５に示したような床反力鉛直成分軌道を規定する床反力鉛直成分軌道パラメータ（折れ点の時刻等）のうちの、少なくとも２つのパラメータ（例えば、床反力鉛直成分の最大値と最小値）を独立な未知変数として、その未知変数の値を、式１３と式４１とからなる連立方程式を解くことによって決定する。
【０３２３】
次いで、Ｓ６０８に進み、歩容生成装置１００は、今回歩容のＺＭＰ軌道が、安定余裕が高くかつ急激な変化をしないように、該ＺＭＰ軌道を規定するＺＭＰ軌道パラメータ（ＺＭＰ軌道の折れ点の時刻や位置等）を決定する。例えば、ＺＭＰ軌道が、図６に示したようなパターンになるようにＺＭＰ軌道パラメータが仮決定される。ただし、今回歩容のＺＭＰ軌道が前記定常歩容のＺＭＰ軌道に連続してつながるように（今回歩容終端におけるＺＭＰの位置が定常歩容初期のＺＭＰの位置に一致するように）、今回歩容のＺＭＰ軌道パラメータが仮決定（暫定的に決定）される。
【０３２４】
なお、Ｓ６０８で決定される今回歩容のＺＭＰ軌道パラメータは、仮決定されたものであり、後述するように修正される。以降、その修正が終了するまでの仮決定されたＺＭＰ軌道パラメータにより規定される今回歩容の目標ＺＭＰを、以降、仮目標ＺＭＰと呼ぶ。その仮決定されたＺＭＰ軌道パラーメータを含む今回歩容の歩容パラメータを仮今回歩容パラメータという。
【０３２５】
図８の説明に戻って、歩容生成装置１００は、上記のごとくＳ０２６の処理を行った後、次いでＳ０２８において、今回歩容の歩容パラメータ（詳しくはＺＭＰ軌道パラメータ）を修正する処理を実行する。この処理では、今回歩容の上体位置姿勢軌道を定常歩容に連続させ、もしくは近づけるべく歩容パラメータのうちのＺＭＰ軌道パラメータが修正される。
【０３２６】
この処理は、図１８のフローチャートに示す如く実行される。
【０３２７】
まずＳ７００を経てＳ７０２に進み、歩容生成装置１００は、仮決定されたＺＭＰ軌道パラメータを含む仮今回歩容パラメータ（暫定的な今回歩容パラメータ）を基に、今回歩容の終端時刻までの仮今回歩容を生成する。
【０３２８】
Ｓ７０２では、図１９のフローチャートに示す処理が実行される。
【０３２９】
以下説明すると、歩容生成装置１００は、まず、Ｓ８００において、仮今回歩容の生成用時刻Ｔk等の初期化を行なう。具体的には、仮今回歩容の生成用時刻Ｔkが現在時刻ｔに初期化される。また、時刻ｔ−Δｔで歩容生成装置１００が既に決定した目標上体位置及び目標上体速度、目標上体姿勢角及びその角速度、目標足平位置姿勢、目標腕姿勢など、時刻ｔ−Δｔでの目標歩容の運動状態（今回歩容支持脚座標系で見た運動状態）が、仮今回歩容の現在時刻ｔの直前の初期運動状態として設定される。
【０３３０】
次いで、Ｓ８０２を経てＳ８０４において、歩容生成装置１００は、仮今回歩容の生成用時刻Ｔk（現在値）が今回歩容の終端時刻Tcurr以前の時刻であるか否か（Ｔk≦Tcurrであるか否か）を判断する。この判断結果が肯定的である場合には、歩容生成装置１００は、Ｓ８０６〜Ｓ８１６の処理（詳細は後述する）を実行することによって、時刻Ｔkでの歩容の瞬時値を決定する。
【０３３１】
次いでＳ８１８に進み、歩容生成装置１００は、仮今回歩容の生成用時刻Ｔkを、所定の刻み時間ΔＴkだけ増加させた後、Ｓ８０４の判断を再び行なう。ここで、刻み時間ΔTkは、例えば制御周期Δｔと一致させておけばよい。ただし、演算量を低減するために、ΔTkをΔｔよりも長い時間に設定してもよい。
【０３３２】
Ｓ８０４の判断結果が肯定的である場合には、Ｓ８０６からＳ８１８までの処理が繰り返され、Ｓ８０４の判断結果が否定的になった場合には、図１９の処理、すなわち、図１８のＳ７０２の処理は終了する。これにより、今回歩容の初期時刻から終端時刻までの仮今回歩容の生成が完了する。
【０３３３】
歩容生成装置１００は、上記Ｓ８０６〜Ｓ８１６で仮今回歩容の瞬時値を決定する処理を次のように実行する。この仮今回歩容の瞬時値の決定の仕方は、図１６のＳ３０６〜Ｓ３１６で定常歩容（仮の定常歩容）の瞬時値を決定する仕方と同様である。
【０３３４】
まずＳ８０６において、歩容生成装置１００は、仮今回歩容パラメータ（より詳しくは床反力鉛直成分軌道パラメータ）を基に、図５に示した目標床反力鉛直成分軌道の時刻Ｔkでの瞬時値を求める。
【０３３５】
次いで、Ｓ８０８において、歩容生成装置１００は、仮今回歩容パラメータ（より詳しくは仮決定のＺＭＰ軌道パラメータ）を基に、図６に示した目標ＺＭＰ軌道（仮目標ＺＭＰ軌道）の時刻Ｔkでの瞬時値を求める。
【０３３６】
次いでＳ８１０に進み、歩容生成装置１００は、仮今回歩容パラメータ（より詳しくは足平軌道パラメータ、上体姿勢軌道パラメータ、及び腕姿勢軌道パラメータ）を基に、目標足平位置姿勢、目標上体姿勢および目標腕姿勢の時刻Ｔkでの瞬時値をそれぞれ求める。ただし、目標腕姿勢に関しては、より詳しくは両腕体の全体重心位置が決定されるが、鉛直軸（または上体２４の体幹軸）まわりの角運動量を変化させる腕体の運動（腕振り運動）は、未だ決定されない。
【０３３７】
次いでＳ８１２に進み、歩容生成装置１００は、Ｓ８０６で求めた目標床反力鉛直成分を満足する（ロボット１の全体重心の鉛直方向の慣性力と重力との和を目標床反力鉛直成分に釣り合わせる）ように、時刻Ｔkでの上体鉛直位置を算出する。その算出の仕方は、図１６のＳ３１２（定常歩容の上体鉛直位置の瞬時値を算出する処理）と同じでよい。ただし、Ｓ８１２で使用する多質点モデルは、Ｓ３１２で使用するものと異ならせてもよい。
【０３３８】
次いでＳ８１４に進み、歩容生成装置１００は、仮今回歩容の時刻Ｔkでの上体水平加速度を決定する処理を実行する。
【０３３９】
具体的には、仮今回歩容の生成用の時刻Ｔkが現在時刻ｔ（歩容生成装置１００の現在の制御周期の時刻）に一致する場合には、歩容生成装置１００は、補償全床反力モーメント分配器１１０から与えられたモデル操作床反力モーメント（現在の制御周期での値）が目標ＺＭＰまわりに発生するように（ロボット１の慣性力と重力との合力が目標ＺＭＰまわりに発生するモーメントの水平成分がモデル操作床反力モーメントに釣り合うように）、仮今回歩容の時刻Ｔkでの上体水平加速度を決定する。
【０３４０】
言い換えると、ロボット１の慣性力と重力との合力が目標ＺＭＰまわりに発生するモーメントがモデル操作床反力モーメントの符号を反転したモーメントに一致するように、時刻Ｔkでの上体水平加速度が決定される。
【０３４１】
また、仮今回歩容の生成用の時刻Ｔkが、現在時刻ｔよりも将来の時刻である場合（Ｔk＞現在時刻ｔである場合）には、歩容生成装置１００は、目標ＺＭＰを満足するように（ロボット１の慣性力と重力との合力が目標ＺＭＰまわりに発生するモーメントの水平成分が“０”であるという動力学的平衡条件を満足するように）、時刻Ｔkでの上体水平加速度を決定する。
【０３４２】
これらの場合において、仮今回歩容の時刻Ｔkでの上体水平加速度を算出する処理は、例えば図７の動力学モデル（倒立振子モデル）を用いて行なわれる。
【０３４３】
具体的には、仮今回歩容の時刻Ｔkの上体鉛直位置と、時刻（Ｔk−ΔＴk)の上体水平位置と、時刻Ｔkでの目標上体姿勢とから、時刻Ｔkでの上体質点２４ｂの鉛直位置及び水平位置が決定される。なお、時刻Ｔkが現在時刻ｔである場合には、時刻（Ｔk−ΔＴk)の上体水平位置としては、Ｓ８００で設定した初期運動状態での上体水平位置が用いられる。
【０３４４】
補足すると、時刻(Ｔk−ΔＴk)までの上体水平位置の時系列又は時刻(Ｔk−ΔＴk)での歩容状態を基に時刻Ｔkでの上体水平位置を補間的に推定し、その推定した上体水平位置を時刻(Ｔk−ΔＴk)の上体水平位置の代わりに用いてもよい。
【０３４５】
また、仮今回歩容の時刻Ｔkでの床反力鉛直成分から、上体質点２４ｂに作用する重力（＝ｍb＊ｇ）を差し引いた値を、上体質点２４ｂの質量ｍbにより除算することによって、時刻Ｔkでの上体質点２４ｂの鉛直加速度が求められる。
【０３４６】
そして、Ｔk＝現在時刻ｔである場合には、上記の如く求めた上体質点２４ｂの鉛直位置、水平位置、鉛直加速度をそれぞれ、前記式０４のＺb、Ｘb、d2Zb/dt2に代入すると共に、時刻Ｔkでの目標ＺＭＰの水平位置および鉛直位置を式０４のＸzmp，Ｚzmpに代入し、さらに、同式０４のＭzmp_yを、モデル操作床反力モーメント（現在値）に一致させてなる式を、d2Xb/dt2について解くことにより、時刻Ｔkでの上体質点水平加速度d2Xb/dt2が算出される。そして、この上体質点水平加速度d2Xb/dt2が時刻Ｔkでの上体水平加速度として求められる。
【０３４７】
また、Ｔk＞現在時刻ｔである場合には、式０４のＭzmp_yを、“０”としてなる式をd2Xb/dt2について解くことにより、時刻Ｔkでの上体水平加速度が算出される。この場合、式０４のＭzmp_yを、“０”とすること以外の処理は、Ｔk＝現在時刻ｔである場合と同様である。
【０３４８】
尚、より厳密な動力学モデルを用いて、目標ＺＭＰまわりの床反力モーメントの水平成分をモデル操作床反力モーメントに一致させ、あるいは、“０”とするような上体水平加速度を探索的に求めるようにしてもよい。
【０３４９】
次いでＳ８１６に進み、歩容生成装置１００は、Ｓ８１４で求めた上体水平加速度を２階積分することにより現在時刻Ｔkでの上体水平位置を算出する。この算出の仕方は、図１６のＳ３１４と同じである。
【０３５０】
以上が図１８のＳ７０２で歩容生成装置１００が実行する処理（仮今回歩容の生成処理）の詳細である。
【０３５１】
歩容生成装置１００は、以上のごとくＳ７０２の処理を実行した後、次にＳ７０４の処理を実行する。
【０３５２】
Ｓ７０４では、歩容生成装置１００は、Ｓ７０２で生成した仮今回歩容の終端での上体水平位置速度（Ｘe，Ｖxe）を基に、終端発散成分ｑe1（仮今回歩容の終端での発散成分ｑe1）を算出する。
【０３５３】
具体的には、歩容生成装置１００は、まず、（Ｘe，Ｖxe）と仮今回歩容の終端での上体姿勢（本実施形態では基準上体姿勢）とから、図７の倒立振子モデルの上体質点２４ｂの水平位置速度（水平位置及び水平速度）を決定する。そして、この上体質点水平位置速度から、前記した図１５のＳ２２２と同様に、前記式１１８に基づいて、仮今回歩容の終端発散成分ｑe1を算出する。この場合に、ｑe1を算出するために用いるΓ-1は、Ｓ２２２の処理で算出したものと同じである。
【０３５４】
次いでＳ７０６に進み、歩容生成装置１００は、上記の如く求めた仮今回歩容の終端発散成分ｑe1と、図１５のＳ２２４で求めた定常歩容の初期発散成分ｑ0”との差である終端発散成分誤差errq（＝ｑe1−ｑ0''）を算出する。
【０３５５】
さらに、Ｓ７０８に進んで、歩容生成装置１００は、上記の如く求めた終端発散成分誤差errqが許容範囲内（“０”近傍の範囲内）にあるか否か、すなわち、errqが“０”もしくはほぼ“０”であるか否かを判断する。なお、Ｓ７０８の判断は、詳しくは、Ｘ軸方向及びＹ軸方向の各軸方向の終端発散成分誤差errqに対して行なわれる。そして、Ｘ軸方向及びＹ軸方向の両軸方向の終端発散成分誤差errqが許容範囲内にある場合にＳ７０８の判断結果が肯定的になり、いずれかの軸方向の終端発散成分誤差errqが許容範囲内に無い場合には、がＳ７０８の判断結果が否定的になる。
【０３５６】
このＳ７０８の判断結果が否定的である場合には、Ｓ７１０に進み、歩容生成装置１００は、ａ＝Δａ（Δａ：所定の微小量）として、現在の仮目標ＺＭＰ軌道を台形パターンの修正量によって図２０に示す如く修正してなる目標ＺＭＰ軌道を用いて、前記Ｓ７０２と同様に、終端時刻までの仮今回歩容を生成する。すなわち、歩容生成装置１００は、Ｓ７０２での仮今回歩容の生成に用いた仮目標ＺＭＰ軌道の代わりに、それを修正してなる目標ＺＭＰ軌道を用いて、改めて仮今回歩容を生成する。この場合、目標ＺＭＰ以外の今回歩容パラメータは、Ｓ７０２で使用したものと同じである。
【０３５７】
ここで、図２０を参照して、上記「ａ」は、仮今回歩容の終端発散成分を定常歩容の初期発散成分にできるだけ一致させる（ひいては今回歩容の上体水平位置姿勢軌道を定常歩容の上体水平位置姿勢軌道に収束させる）ために、仮目標ＺＭＰ軌道を修正する（仮目標ＺＭＰ軌道に加える）台形パターンの修正量（以下、ＺＭＰ修正量ということがある）の高さである。
【０３５８】
この場合、本実施形態では、仮目標ＺＭＰ軌道の修正は、片脚支持期において行なうようにしている。このため、ＺＭＰ修正量は、片脚支持期において、ＺＭＰ修正量≠０となり、両脚支持期では、ＺＭＰ修正量＝０となるように設定されている。また、上記台形パターンのＺＭＰ修正量の折れ点の時刻は、片脚支持期における仮目標ＺＭＰ軌道の折れ点の時刻に合わせて設定されている。なお、Ｓ７１０でａ＝Δａ（Δａ：所定の微小量）とするのは、現在の仮目標ＺＭＰ軌道を上記台形パターンのＺＭＰ修正量によって微小量だけ、修正したときの前記終端発散成分誤差errqの変化を観測するためである。
【０３５９】
補足すると、Ｓ７１０の上記の処理では、目標ＺＭＰのＸ軸方向位置を修正することを例に採って説明したが、実際には目標ＺＭＰのＹ軸方向位置の修正も併せて行なわれる。そのＹ軸方向位置の修正は、Ｘ軸方向位置の修正と同様に、片脚支持期における目標ＺＭＰ軌道を仮目標ＺＭＰ軌道から台形パターンで変化させるように行なわれる。この場合、上記Δａは各軸方向で同じ値でよいが、互いに異なる値に設定してもよい。
【０３６０】
なお、Ｘ軸方向及びＹ軸方向の一方の軸方向での目標ＺＭＰ軌道の修正が、他方の軸方向での終端発散成分に影響を及ぼさないか、もしくはその影響が十分に小さい場合には、Ｓ７１０から、後述のＳ７１６までの処理をＸ軸方向とＹ軸方向とで各別に行なうようにしてもよい。
【０３６１】
上記のようにＳ７１０にて仮今回歩容を生成した後、次にＳ７１２に進み、歩容生成装置１００は、Ｓ７１０で求めた仮今回歩容の終端での上体水平位置速度（Ｘe2，Ｖxe2）を基に、この仮今回歩容における終端発散成分ｑe2をＳ７０４と同様に算出する。
【０３６２】
尚、本実施形態では、Ｓ７１０においてΔａを所定値の微小量としたが、以下に説明する繰り返し演算によって終端発散成分誤差errqが小さくなるにつれてΔａを“０”に近づけるように、該Δａを可変的に設定するようにしてもよい。ただし、一般には、Δａを定数にしておいても、数回の繰り返し演算で終端発散成分誤差errqを許容範囲内に収めることができる。
【０３６３】
次いでＳ７１４に進み、歩容生成装置１００は、パラメータ感度ｒ（Δａに対する終端発散成分誤差の変化の割合）を図中の式によって算出する。すなわち、歩容生成装置１００は、Ｓ７１２で算出した終端発散成分ｑe2とＳ７０４で算出した終端発散成分ｑe1との差（＝ｑe2−ｑe1）をΔａにより除算することによって、パラメータ感度ｒを算出する。この場合、より詳しくは、例えば（ｑe2−ｑe1）のＸ軸方向成分を、Ｘ軸方向のＺＭＰ修正量に係わるΔａにより除算することによって、Ｘ軸方向でのパラメータ感度ｒが算出される。また、（ｑe2−ｑe1）のＹ軸方向成分を、Ｙ軸方向のＺＭＰ修正量に係わるΔａにより除算することによって、Ｙ軸方向でのパラメータ感度ｒが算出される。
【０３６４】
次いでＳ７１６に進み、歩容生成装置１００は、ａ＝−errq／r、すなわちＳ７０６で求めた終端発散成分誤差errqを、Ｓ７１４で求めたパラメータ感度ｒで割った値の符号を反転させてなる値を台形パターンのＺＭＰ修正量の高さａとして、このＺＭＰ修正量によって図２０に示す如く仮目標ＺＭＰパターンを修正してなる目標ＺＭＰを、改めて仮目標ＺＭＰとして決定する。この場合、ＺＭＰ修正量の高さａは、Ｘ軸方向とＹ軸方向とで各別に算出される。
【０３６５】
なお、Ｘ軸方向及びＹ軸方向の一方の軸方向での目標ＺＭＰ軌道の修正が、他方の軸方向での終端発散成分に影響を及ぼす場合には、その影響分を考慮して各軸方向でのＺＭＰ修正量の高さａを決定することが好ましい。
【０３６６】
次いで歩容生成装置１００は、Ｓ７０２からの処理を再び実行する。このとき、Ｓ７０８の判断結果が否定的である限りは、上記したＳ７０２〜Ｓ７１６の処理が繰り返され、Ｓ７０８の判断結果が肯定的となった場合に、その繰り返しループ（Ｓ７００）を抜けてＳ７１８に進む。
【０３６７】
以上のＳ７０２〜Ｓ７１６のループ処理によって、終端発散成分ｑe1を、定常歩容の初期発散成分ｑ0''に一致もしくはほぼ一致させることができるＺＭＰ修正量が（ひいては今回歩容の目標ＺＭＰ軌道が）探索的に求められる。換言すれば、今回歩容の上体水平位置姿勢軌道を定常歩容の上体水平位置姿勢軌道に収束させることができるＺＭＰ修正量が求められる。
【０３６８】
かかるループ処理の次のＳ７１８では、歩容生成装置１００は、現在の仮目標ＺＭＰ軌道（Ｓ７００の繰り返しループを抜ける直前で設定された仮目標ＺＭＰ軌道）を最終的に今回歩容の目標ＺＭＰ軌道として、これに対応するＺＭＰ軌道パラメータを決定する。これにより、図８のＳ０２８の処理（今回歩容パラメータの修正処理）が終了する。
【０３６９】
なお、本実施形態では、ＺＭＰ修正量を台形パターンに設定したが、例えば、三角形状のパターンや、曲率が連続的に変化するようなパターン等に決定してもよい。
【０３７０】
図８に戻って、上記のごとくＳ０２８において今回歩容パラメータを修正した後、Ｓ０３０に進み、歩容生成装置１００は、今回歩容の初期から終端までの各時刻での目標ＺＭＰまわりの床反力モーメント（より詳しくは床反力モーメントの水平成分）の許容範囲を規定する床反力モーメント許容範囲パラメータを決定する。この床反力モーメント許容範囲パラメータにより規定される床反力モーメントの許容範囲は、前記補償全床反力モーメント分配器１１０において、前述の如く使用されるものである。
【０３７１】
なお、床反力モーメントを、床反力鉛直成分で割ったものが、ＺＭＰ（床反力中心点）の目標ＺＭＰからのずれ量に相当するものとなる。従って、床反力モーメント許容範囲を、ＺＭＰ（床反力中心点）の位置の許容範囲としてのＺＭＰ許容範囲（床反力中心点許容範囲）に変換し、このＺＭＰ許容範囲を規定するパラメータを決定するようにしてもよい。
【０３７２】
Ｓ０３０で決定する床反力モーメント許容範囲は、前記補償全床反力モーメント分配器１１０において使用される場合に、前記複合コンプライアンス動作決定部１０４の制御処理（コンプライアンス制御）によって制御される目標ＺＭＰまわりの実床反力モーメントの許容範囲としての意味を持つものである。この床反力モーメント許容範囲について以下に説明する。
【０３７３】
複合コンプライアンス動作決定部１０４の処理によるコンプライアンス制御は、目標ＺＭＰまわりに発生する床反力モーメントがコンプライアンス制御用目標床反力モーメントになるように足平２２の位置姿勢を制御する。コンプライアンス制御が目標通りに忠実に作動すると、実床反力中心点は、目標床反力モーメントを床反力鉛直成分で割った値だけ、目標ＺＭＰから水平方向に位置をずらした点になる。実床反力中心点は、いわゆる支持多角形で表されるＺＭＰ存在可能範囲（厳密な表現では、実床反力中心点の存在可能範囲）を逸脱することはできない。そして、実床反力中心点がＺＭＰ存在可能範囲の境界に近づき過ぎると、足平２２の本来の接地感を低下させたり、足平２２の底面が浮いてしまうような不具合が発生する。
【０３７４】
床反力モーメント許容範囲は、このような不具合を防止するために、コンプライアンス制御用床反力モーメントに制限を加えるものである。したがって、床反力モーメント許容範囲は、これを床反力鉛直成分で割ることによって求められる床反力中心点許容範囲が、ＺＭＰ存在可能範囲に含まれるように決定されることが望ましい。
【０３７５】
より具体的には、床反力中心点許容範囲（ＺＭＰ許容範囲）は、支持多角形に応じて決定されるべきである。この場合、床反力中心点許容範囲は、一般的には、複雑な形状に設定することができる。ただし、本実施形態では、演算を簡素化するために、床反力中心点許容範囲を、例えば床面上の長方形（Ｘ軸方向およびＹ軸方向に平行な辺を有する長方形）の領域とする。この場合、床反力中心点許容範囲を床反力モーメントに変換してなる床反力モーメント許容範囲は、X軸方向成分とＹ軸方向成分とでそれぞれ独立に範囲が設定される。
【０３７６】
例えば、支持多角形と目標ＺＭＰとが図２１に示すような状況にある場合には、図示のごとく、床反力中心点許容範囲（ＺＭＰ許容範囲）は支持多角形に内包されるように設定される。また同時に、床反力中心点許容範囲（ＺＭＰ許容範囲）は目標ＺＭＰを内包するように設定される。
【０３７７】
なお、図２１に点描領域として示す支持多角形は、歩行歩容の両脚支持期での支持多角形を例示している。この例では、右足平２２Ｒのつま先が接地し、左足平２２Ｌのかかとが接地している状態を模式的に示している。
【０３７８】
歩行歩容における片脚支持期では、支持多角形は、支持脚足平２２の接地面（床面との接触面）である。また、両脚支持期では、支持多角形は、両足平２２，２２のそれぞれの接地面を連接してなる領域（詳しくは、両足平２２，２２のそれぞれの接地面を含む最小の凸多角形の領域）である。そして、本実施形態では、床反力中心点許容範囲は、目標ＺＭＰを内包しつつ、該支持多角形に内包され、もしくは、その支持多角形とほぼ一致するように設定される。この場合、今回歩容における支持多角形は、Ｓ０２６で決定した今回歩容パラメータの足平位置姿勢軌道パラメータを基に算出される。
【０３７９】
なお、目標ＺＭＰが支持多角形から逸脱している場合、あるいは、支持多角形の境界に近過ぎる場合には、例えば、暫定的に、目標ＺＭＰを含まない支持多角形内の任意の領域、あるいは、目標ＺＭＰとは異なる支持多角形内の点（面積が“０”となる領域）が床反反力中心点許容範囲として設定される。
【０３８０】
本実施形態では、上記の如く設定した床反力中心点許容範囲を床反力モーメントに変換してなる範囲を、床反力モーメント許容範囲として決定する。
【０３８１】
なお、床反力モーメント許容範囲は、ロボット１の接地面に依存して規定される支持多角形だけでなく、床形状や床の性状（床の硬さ等）を考慮して決定するようにしてもよい。
【０３８２】
上記のごとくＳ０３０において床反力モーメント許容範囲パラメータを決定した後、Ｓ０３１に進み、歩容生成装置１００は、Ｓ０２８で決定したＺＭＰ軌道パラメータにより規定される目標ＺＭＰ軌道が適切な軌道であるか否かを判断する。この場合、本実施形態では、歩容生成装置１００は、今回歩容のＺＭＰ軌道パラメータにより規定される目標ＺＭＰ軌道の各瞬時値（所定の刻み時間毎の瞬時値）が、前記支持多角形内に設定した所定のＺＭＰ存在許容領域内に存するか否かによって、該目標ＺＭＰ軌道が適切な軌道であるか否かを判断する。
【０３８３】
より具体的には、歩容生成装置１００は、Ｓ０２６で決定した足平位置姿勢軌道パラメータに基づいて、今回歩容の各足平２２の足平位置姿勢軌道を算出し、この足平位置姿勢軌道に基づいて、現在時刻（歩容生成装置１００の現在の制御周期の時刻）以後の各時刻での支持多角形を算出し、その支持多角形内にＺＭＰ存在許容領域を設定する。この場合、ＺＭＰ存在許容領域は、支持多角形に一致する領域でよいが、該支持多角形よりも若干小さめの領域であってもよい。
【０３８４】
そして、歩容生成装置１００は、今回歩容の各時刻（現在時刻以後の各時刻）での目標ＺＭＰが、その時刻でのＺＭＰ存在許容領域内に存する場合には、今回歩容のＺＭＰ軌道パラメータにより規定される目標ＺＭＰ軌道が適切な軌道であると判断する。また、今回歩容のいずれかの時刻での目標ＺＭＰが、その時刻でのＺＭＰ存在許容領域を逸脱する場合には、今回歩容のＺＭＰ軌道パラメータにより規定される目標ＺＭＰ軌道が適切な軌道でないと判断する。
【０３８５】
Ｓ０３１の判断結果が否定的である場合（目標ＺＭＰ軌道が適切な軌道でない場合）には、歩容生成装置１００は、Ｓ０２０からの処理を改めて実行する。この場合、Ｓ０２０においては、歩容生成装置１００は、Ｓ０３１の判断結果が肯定的となる目標ＺＭＰ軌道を決定するために、例えば、今回歩容の遊脚足平２２の目標着地位置姿勢のうちの目標着地位置（ひいては、今回歩容支持脚座標系の原点位置）と、今回歩容の遊脚足平２２の目標着地時刻（ひいては今回歩容周期）とのうちの少なくともいずれか一方を以下に説明する如く修正する。
【０３８６】
ここで、Ｓ０３１の判断結果が否定的である場合のＳ０２０の処理を具体的に説明する前に、前記したＳ０２０〜Ｓ０２８の処理における目標ＺＭＰ軌道の決定処理を改めて概説しておく。
【０３８７】
本実施形態では、歩容生成装置１００は、今回歩容の目標ＺＭＰ軌道の各瞬時値（各時刻の目標ＺＭＰ）が支持多角形内のＺＭＰ存在許容領域に存するという条件（以下、ＺＭＰ存在領域必要条件という）を満足しつつ、ロボット１の動力学モデル（本実施形態では図７に示した倒立振子モデル）上で該目標ＺＭＰ軌道に応じて生成される今回歩容の運動が継続的に実現し得る運動となるという条件（以下、運動継続性必要条件という）とを満足するように、今回歩容の目標ＺＭＰ軌道を生成する。
【０３８８】
ここで、本実施形態における上記運動継続性必要条件は、ロボット１の動力学モデル上で目標ＺＭＰ軌道を満足するように（ロボット１の運動によって発生する慣性力とロボット１に作用する重力との合力が目標ＺＭＰまわりに発生するモーメントの水平成分が“０”になるように）生成される今回歩容の運動が、将来において定常歩容の運動に収束し得る運動となるという条件である。
【０３８９】
この場合、前記したＳ０２０〜Ｓ０２８の処理では、歩容生成装置１００は、Ｓ０２０で前記したように幾何学的脚体運動必要条件を満足するように決定した次回歩容支持脚座標系（又は、今回歩容の遊脚足平２２の目標着地位置姿勢）と、今回歩容周期とを前提として設定した足平位置姿勢軌道パラメータを基に、Ｓ０２６において前記ＺＭＰ存在領域必要条件を満足する仮目標ＺＭＰ軌道を決定する。さらに、歩容生成装置１００は、Ｓ０２０で決定した次回歩容及び次次回歩容の支持脚座標系（又は、今回歩容及び次回歩容の遊脚足平２２の目標着地位置姿勢）と、今回歩容周期及び次回歩容周期（又は、今回歩容及び次回歩容の遊脚足平２２の目標着地時刻）とを前提として、今回歩容に続く定常歩容を決定する。そして、歩容生成装置１００は、ロボット１の動力学モデル上で生成される今回歩容の終端発散成分が、定常歩容の初期発散成分に一致又はほぼ一致するようにＺＭＰ修正量を決定し、そのＺＭＰ修正量によって、仮目標ＺＭＰ軌道を修正することで、前記運動継続性必要条件を満足させるように目標ＺＭＰ軌道を決定する。
【０３９０】
すなわち、本実施形態では、歩容生成装置１００は、足平位置姿勢軌道を規定する足平位置姿勢軌道パラメータを決定した上で、前記ＺＭＰ存在領域必要条件を満足するように仮目標ＺＭＰ軌道を決定し、さらに、この仮目標ＺＭＰ軌道を、前記運動継続性必要条件を満足させるようにＺＭＰ修正量により修正することによって、目標ＺＭＰ軌道を決定する。
【０３９１】
このように、目標ＺＭＰ軌道を決定するとき、運動継続性必要条件を満足するためのＺＭＰ修正量が大きいと、修正後の目標ＺＭＰ軌道が前記ＺＭＰ存在領域必要条件を満足できなくなる場合が生じる。そして、このような場合に、Ｓ０３１の判断結果が否定的となる。
【０３９２】
一方、例えば今回歩容の遊脚足平２２の目標着地位置又は目標着地時刻を変化させることによって、今回歩容の足平位置姿勢軌道が変化することとなるので、これに付随して、前記ＺＭＰ存在領域必要条件を満足し得る仮目標ＺＭＰ軌道も変化することとなる。また、今回歩容の遊脚足平２２の目標着地位置又は目標着地時刻を変化させ、ひいては、今回歩容の足平位置姿勢軌道を変化させることによって、運動継続性必要条件を満足するためのＺＭＰ修正量も変化する。従って、今回歩容の遊脚足平２２の目標着地位置又は目標着地時刻を前記幾何学的脚体運動必要条件を満足し得る範囲で適切に修正することよって、ＺＭＰ存在領域必要条件と運動継続性必要条件とを満足させ得る目標ＺＭＰ軌道を決定することが可能である。
【０３９３】
そこで、本実施形態では、歩容生成装置１００は、Ｓ０３１の判断結果が否定的となる場合のＳ０２０の処理において、今回歩容の遊脚足平２２の目標着地位置又は目標着地時刻を修正し、次回歩容及び次次回歩容の支持脚座標系と、今回歩容周期及び次回歩容周期とを改めて決定する。
【０３９４】
この場合、ＺＭＰ存在領域必要条件と運動継続性必要条件とを満足させ得る目標ＺＭＰ軌道を決定し得るようにすると共に、幾何学的脚体運動必要条件をも満足し得るようにするために、今回歩容の遊脚足平２２の目標着地位置又は目標着地時刻をどのように修正すれば良いかが問題となる。
【０３９５】
ここで、各制御周期における最新のＳ０２０の処理（Ｓ０３１の判断処理の以前に実行したＳ０２０の処理のうちの最新の処理）で決定した次回歩容支持脚座標系及び次次回歩容支持脚座標系と、今回歩容周期及び次回歩容周期とを前提として、Ｓ０２８で決定された台形パターンのＺＭＰ修正量の高さ（ピーク値）ａを、現状ＺＭＰ修正量高さａ0とおく。そして、今回歩容の遊脚足平２２の目標着地位置の修正量（各制御周期における最新のＳ０２０の処理で決定した次回歩容支持脚座標系に対応する目標着地位置からの修正量。以降、着地位置修正量という）をΔＰＯＳ、今回歩容の遊脚足平２２の目標着地時刻の修正量（各制御周期における最新のＳ０２０の処理で決定した今回歩容周期に対応する目標着地時刻からの修正量。以降、着地時刻修正量という）をΔＴmとおく。さらに、今回歩容の遊脚足平２２の目標着地位置と目標着地時刻とをそれぞれ、ΔＰＯＳ、ΔＴｍだけ現在値（最新値）から変化させた場合にＳ０２８で決定されるＺＭＰ修正量の高さ（ピーク値）ａの変化量（現状ＺＭＰ修正量高さａ0からの変化量）をΔＺＭＰとおく。換言すれば、今回歩容の遊脚足平２２の目標着地位置と目標着地時刻とをそれぞれ、ΔＰＯＳ、ΔＴｍだけ現在値（最新値）から変化させた場合にＳ０２８で決定されるＺＭＰ修正量の高さ（ピーク値）ａを（ａ0＋ΔＺＭＰ）とおく。
【０３９６】
このとき、ΔＺＭＰとΔＰＯＳ、ΔＴｍとの間には、近似的に次式１５０の関係が成立すると考えられる。
【０３９７】
ΔＺＭＰ＝Ｓp＊ΔＰＯＳ＋Ｓt＊ΔＴｍ    ……式１５０
この式１５０におけるＳpはΔＰＯＳの変化に対するΔＺＭＰの変化の感度（以下、ＺＭＰ／着地位置感度Ｓpという）、ＳtはΔＴｍの変化に対するΔＺＭＰの変化の感度（以下、ＺＭＰ／着地時刻感度Ｓtという）である。なお、式１５０は、実際には、Ｘ軸方向の成分に関する式（ΔＺＭＰ、ΔＰＯＳがＸ軸方向の成分である場合の式）と、Ｙ軸方向の成分に関する式（ΔＺＭＰ、ΔＰＯＳがＹ軸方向の成分である場合の式）とから構成される。この場合、Ｘ軸方向の成分に関する式１５０におけるＳp，Ｓtの値と、Ｙ軸方向の成分に関する式１５０におけるＳp，Ｓtの値とは、一般には互いに相違する。以降の説明では、ΔＺＭＰ、ΔＰＯＳを、Ｘ軸方向の成分とＹ軸方向の成分とに区別する場合に、Ｘ軸方向の成分をそれぞれΔＺＭＰx、ΔＰＯＳxと表記し、Ｙ軸方向の成分をそれぞれΔＺＭＰy、ΔＰＯＳyと表記する。また、Ｘ軸方向の成分ΔＺＭＰx、ΔＰＯＳxに係わるＳp，Ｓtをそれぞれ、Ｓpx，Ｓtxと表記し、Ｙ軸方向の成分ΔＺＭＰy、ΔＰＯＳyに係わるＳp，Ｓtをそれぞれ、Ｓpy，Ｓtyと表記する。
【０３９８】
上記式１５０から、次式１５２が得られる。従って、ΔＰＯＳは、ΔＺＭＰとΔＴｍとの関数値として表現することができる。
【０３９９】
ΔＰＯＳ＝（ΔＺＭＰ−Ｓt＊ΔＴｍ）／Ｓp    ……式１５２
ここで、台形パターンの高さａがａ＝ａ0＋ΔＺＭＰであるＺＭＰ修正量によって仮目標ＺＭＰ軌道を修正してなる目標ＺＭＰ軌道が前記ＺＭＰ存在領域必要条件を満足するためには、片脚支持期における該目標ＺＭＰ軌道の瞬時値が、該片脚支持期における支持脚足平２２の接地面に相当する支持多角形内の前記ＺＭＰ存在許容領域内に存する必要がある。
【０４００】
従って、この必要要件によって、ＺＭＰ存在領域必要条件を満足するためのΔＺＭＰの許容範囲が規定されることとなる。
【０４０１】
例えば、Ｘ軸方向の成分に関して、Ｘ軸方向での現状ＺＭＰ修正量高さａ0がａ0xであり、片脚支持期におけるＺＭＰ存在許容領域のＸ軸方向の範囲の下限値及び上限値がそれぞれ、ＺＭＰx1、ＺＭＰx2であるとする。
【０４０２】
このとき、目標ＺＭＰのＸ軸方向位置が、ＺＭＰ存在領域必要条件を満足するためには、ＺＭＰx1≦ａ0x＋ΔＺＭＰx＋ＺＭＰx≦ＺＭＰx2でなければならない。これにより、ΔＺＭＰxの許容範囲が、ＺＭＰx1−ａ0x−ＺＭＰx≦ΔＺＭＰx≦ＺＭＰx2−ａ0x−ＺＭＰxという範囲に規定されることとなる。
【０４０３】
同様に、Ｙ軸方向での現状ＺＭＰ修正量高さａ0がａ0yであり、片脚支持期におけるＺＭＰ存在許容領域のＹ軸方向の範囲の下限値及び上限値がそれぞれ、ＺＭＰy1、ＺＭＰy2であるとしたとき、ΔＺＭＰyの許容範囲は、ＺＭＰy1−ａ0y−ＺＭＰy≦ΔＺＭＰy≦ＺＭＰy2−ａ0y−ＺＭＰyという範囲に規定されることとなる。
【０４０４】
また、本実施形態では、１歩分の各歩容の歩容周期は、前記したように、各脚体２の関節の変位速度等を制限するための所定の歩容周期許容範囲内に制限される。すなわち、今回歩容の遊脚足平２２の、ΔＴｍによる修正後の目標着地時刻と前回歩容における遊脚足平２２の目標着地時刻との差である今回歩容周期は、上記歩容周期許容範囲内の値でなければならない。従って、この必要要件によって、ΔＴｍの許容範囲が規定されることとなる。この場合、最新のＳ０２０の処理で決定した今回歩容周期をＴcyc0、歩容周期許容範囲の下限値及び上限値をそれぞれ、Ｔcyc1、Ｔcyc2とおくと、ΔＴｍの許容範囲は、Ｔcyc1−Ｔcyc0≦ΔＴｍ≦Ｔcyc2−Ｔcyc0という範囲である。
【０４０５】
このように、式１５２におけるΔＺＭＰ及びΔＴｍは、それぞれの許容範囲が規定されるものとなる。そして、これらの許容範囲から、式１５２によって、前記ＺＭＰ存在領域必要条件と運動継続性必要条件とを満足するために必要なΔＰＯＳの許容範囲を、今回歩容の遊脚足平２２の着地時刻修正量ΔＴｍの影響分を含めて決定できることとなる。ひいては、前記ＺＭＰ存在領域必要条件と運動継続性必要条件とを満足するために必要な今回歩容の遊脚足平２２の目標着地位置の許容領域を、今回歩容の遊脚足平２２の着地時刻修正量ΔＴｍの影響分を含めて決定できることとなる。換言すれば、ＺＭＰ存在領域必要条件と運動継続性必要条件とを満足するための必要要件を、今回歩容の遊脚足平２２の目標着地位置（次回歩容支持脚座標系の原点の目標位置）の許容領域として表現できることとなる。
【０４０６】
そこで、本実施形態では、Ｓ０３１の判断結果が否定的である場合のＳ０２０の処理では、前記ＺＭＰ存在領域必要条件と運動継続性必要条件とを満足する目標ＺＭＰ軌道を決定するための今回歩容の遊脚足平２２の目標着地位置の許容領域（以降、第２着地許容領域という）を、式１５２に基づいて決定し、この第２着地許容領域と、前記幾何学的脚体運動必要条件に対応する前記第１着地許容領域とが重なる領域内に、今回歩容の遊脚足平２２の目標着地位置を決定する。
【０４０７】
この場合、第２着地許容領域が次のように決定される。
【０４０８】
まず、歩容生成装置１００は、前記式１５２におけるＺＭＰ／着地位置感度Ｓpと、ＺＭＰ／着地時刻感度Ｓtとを決定する。
【０４０９】
具体的には、Ｓpは次のように決定される。すなわち、歩容生成装置１００は、最新のＳ０２０で先に決定した次次回歩容支持脚座標系と、今回歩容周期及び次回歩容周期と、最新のＳ０２０で先に決定した次回歩容支持脚座標系から、原点のＸ軸方向（今回歩容支持脚座標系のＸ軸方向）の位置を所定量（微小な摂動量）ΔＸだけずらしてなる感度演算用の次回歩容支持脚座標系とを用いて、Ｓ０２２〜Ｓ０２８と同じ処理を実行することによって、Ｘ軸方向におけるＺＭＰ修正量を算出する。なお、この感度演算用の次回歩容支持脚座標系の原点のＹ軸方向（今回歩容支持脚座標系のＹ軸方向）の位置と、該次回歩容支持脚座標系の姿勢とは、最新のＳ０２０で先に決定した次回歩容支持脚座標系と同一とされる。そして、歩容生成装置１００は、このＸ軸方向でのＺＭＰ修正量の高さ（ピーク値）ａxと、Ｘ軸方向の現状ＺＭＰ修正量高さａ0x（最新のＳ０２８で先に算出したＸ軸方向のＺＭＰ修正量の高さ）との差（＝ａx−ａ0x）を上記所定量ΔＸで除算してなる値を、Ｘ軸方向におけるＺＭＰ／着地位置感度Ｓpとして決定する。
【０４１０】
Ｙ軸方向におけるＺＭＰ／着地位置感度Ｓpも上記と同様に決定される。この場合、感度演算用の次回歩容支持脚座標系は、最新のＳ０２０で先に決定した次回歩容支持脚座標系から、原点のＹ軸方向（今回歩容支持脚座標系のＹ軸方向）の位置を所定量ΔＹだけずらしてなる座標系である。
【０４１１】
また、Ｓtは次のように決定される。すなわち、歩容生成装置１００は、最新のＳ０２０で先に決定した次回歩容支持脚座標系及び次次回歩容支持脚座標系と、次回歩容周期と、最新のＳ０２０で先に決定した今回歩容周期から、所定時間（微小な摂動時間）ΔＴだけずらしてなる感度演算用の今回歩容周期とを用いて、Ｓ０２２〜Ｓ０２８と同じ処理を実行することによって、Ｘ軸方向におけるＺＭＰ修正量とＹ軸方向におけるＺＭＰ修正量とを算出する。そして、歩容生成装置１００は、このＸ軸方向でのＺＭＰ修正量の高さ（ピーク値）ａxと、Ｘ軸方向の現状ＺＭＰ修正量高さａ0x（最新のＳ０２８で先に算出したＸ軸方向のＺＭＰ修正量の高さ）との差（＝ａx−ａ0x）を上記所定時間ΔＴで除算してなる値を、Ｘ軸方向におけるＺＭＰ／着地時刻感度Ｓtとして決定する。同様に、歩容生成装置１００は、算出したＹ軸方向でのＺＭＰ修正量の高さ（ピーク値）ａyと、Ｙ軸方向の現状ＺＭＰ修正量高さａ0y（最新のＳ０２８で先に算出したＹ軸方向のＺＭＰ修正量の高さ）との差（＝ａy−ａ0y）を上記所定時間ΔＴで除算してなる値を、Ｙ軸方向におけるＺＭＰ／着地時刻感度Ｓtとして決定する。
【０４１２】
以上により、式１５２におけるＳp，Ｓtが決定される。
【０４１３】
次に、歩容生成装置１００は、最新のＳ０３１の判断処理で前記した如く設定した今回歩容の各時刻でのＺＭＰ存在許容領域（支持多角形内の領域）のうち、今回歩容の片脚支持期でのＺＭＰ存在許容領域と、最新のＳ０２６、Ｓ０２８の処理でそれぞれ先に決定した片脚支持期での仮目標ＺＭＰ軌道及びＺＭＰ修正量とを基に、式１５２のΔＺＭＰの許容範囲（Ｘ軸方向の許容範囲及びＹ軸方向の許容範囲）を前記した如く決定する。すなわち、ΔＺＭＰのＸ軸方向の成分ΔＺＭＰxの許容範囲は、ＺＭＰx1−ａ0x−ＺＭＰx≦ΔＺＭＰx≦ＺＭＰx2−ａ0x−ＺＭＰxという範囲に決定され、Ｙ軸方向の成分ΔＺＭＰyの許容範囲は、ＺＭＰy1−ａ0y−ＺＭＰy≦ΔＺＭＰy≦ＺＭＰy2−ａ0y−ＺＭＰyという範囲に決定される。このように決定されるΔＺＭＰの許容範囲のＸ軸方向の幅と、Ｙ軸方向の幅とは、それぞれ、ＺＭＰ存在許容領域のＸ軸方向の幅、Ｙ軸方向の幅と同じである。
【０４１４】
なお、本実施形態では、片脚支持期でのＺＭＰ存在許容領域は、図２２に例示する如く、方形状の領域（今回歩容支持脚座標系のＸ軸方向に平行な２辺と、Ｙ軸方向に平行な２辺とから構成される四角形により囲まれる領域）とされる。該ＺＭＰ存在許容領域は、片脚支持期で接地している支持脚足平２２の接地面により形成される支持多角形とほぼ同一形状の領域である。
【０４１５】
また、歩容生成装置１００は、最新のＳ０２０の処理で先に決定した今回歩容周期と、前記歩容周期許容範囲とを基に、式１５２のΔＴｍの許容範囲を前記した如く決定する。すなわち、ΔＴｍの許容範囲は、Ｔcyc1−Ｔcyc0≦ΔＴｍ≦Ｔcyc2−Ｔcyc0という範囲に決定される。
【０４１６】
以上の如く式１５２のＳp，Ｓtの値と、ΔＺＭＰ及びΔＴｍの許容範囲とを決定した後、次に、歩容生成装置１００は、ΔＴｍの値を、その許容範囲の下限値（＝Ｔcyc1−Ｔcyc0。以下、これをΔＴｍ_minとおく）に一致させた場合と、上限値（＝Ｔcyc2−Ｔcyc0。以下、これをΔＴｍ_maxとおく）に一致させた場合とで、ΔＺＭＰの許容範囲に対応するΔＰＯＳの許容範囲（Ｘ軸方向の許容範囲及びＹ軸方向の許容範囲）を、前記式１５２に基づき決定する。
【０４１７】
具体的には、歩容生成装置１００は、式１５２のΔＴｍに、下限値ΔＴｍ_minを代入し、さらに、式１５２のΔＺＭＰに、Ｘ軸方向のΔＺＭＰxの許容範囲の下限値と上限値とをそれぞれの代入することによって、ΔＴｍ＝ΔＴｍ_minである場合の、Ｘ軸方向におけるΔＰＯＳxの許容範囲の下限値と上限値とを算出する。同様に、歩容生成装置１００は、式１５２のΔＴｍに、下限値ΔＴｍ_minを代入し、さらに、式１５２のΔＺＭＰに、Ｙ軸方向のΔＺＭＰyの許容範囲の下限値と上限値とをそれぞれの代入することによって、ΔＴｍ＝ΔＴｍ_minである場合の、Ｙ軸方向におけるΔＰＯＳyの許容範囲の下限値と上限値とを算出する。これにより、ＺＭＰ存在領域必要条件と運動継続性必要条件とを満足するためのΔＺＭＰの許容範囲が、ΔＴｍ＝ΔＴｍ_minである場合のΔＰＯＳの許容範囲に変換される。
【０４１８】
また、歩容生成装置１００は、式１５２のΔＴｍに、上限値ΔＴｍ_maxを代入し、さらに、式１５２のΔＺＭＰに、Ｘ軸方向のΔＺＭＰxの許容範囲の下限値と上限値とをそれぞれの代入することによって、ΔＴｍ＝ΔＴｍ_maxである場合の、Ｘ軸方向におけるΔＰＯＳxの許容範囲の下限値と上限値とを算出する。同様に、歩容生成装置１００は、式１５２のΔＴｍに、上限値ΔＴｍ_maxを代入し、さらに、式１５２のΔＺＭＰに、Ｙ軸方向のΔＺＭＰyの許容範囲の下限値と上限値とをそれぞれの代入することによって、ΔＴｍ＝ΔＴｍ_maxである場合の、Ｙ軸方向におけるΔＰＯＳyの許容範囲の下限値と上限値とを算出する。これにより、ＺＭＰ存在領域必要条件と運動継続性必要条件とを満足するためのΔＺＭＰの許容範囲が、ΔＴｍ＝ΔＴｍ_maxである場合のΔＰＯＳの許容範囲に変換される。
【０４１９】
なお、ΔＴｍ＝ΔＴｍ_maxである場合のΔＰＯＳのＸ軸方向の許容範囲は、ΔＴｍ＝ΔＴｍ_minである場合のΔＰＯＳのＸ軸方向の許容範囲を、Ｘ軸方向に、−（Ｓtx／Ｓpx）＊（ΔＴｍ_max−ΔＴｍ_min）だけオフセットさせた許容範囲である。また、ΔＴｍ＝ΔＴｍ_maxである場合のΔＰＯＳのＹ軸方向の許容範囲は、ΔＴｍ＝ΔＴｍ_minである場合のΔＰＯＳのＹ軸方向の許容範囲を、Ｙ軸方向に、−（Ｓty／Ｓpy）＊（ΔＴｍ_max−ΔＴｍ_min）だけオフセットさせた許容範囲である。
【０４２０】
次いで、歩容生成装置１００は、上記の如く決定したΔＴｍ＝ΔＴｍ_minである場合のΔＰＯＳの許容範囲と、最新のＳ０２０の処理で先に決定した次回歩容支持脚座標系に対応する今回歩容の遊脚足平２２の目標着地位置とから、ΔＴｍ＝ΔＴｍ_minである場合に、前記ＺＭＰ存在領域必要条件と運動継続性必要条件とを満足するための、今回歩容の遊脚足平２２の目標着地位置の許容領域を決定する。
【０４２１】
ΔＴｍ＝ΔＴｍ_minである場合の今回歩容の遊脚足平２２の目標着地位置の許容領域（以降、ΔＴｍ下限時着地許容領域という）は、最新のＳ０２０の処理で先に決定した次回歩容支持脚座標系に対応する今回歩容の遊脚足平２２の目標着地位置を、ΔＴｍ＝ΔＴｍ_minである場合のΔＰＯＳの許容範囲内の任意のΔＰＯＳによって修正してなる位置の存在可能領域である。この場合、該ΔＴｍ下限時着地許容領域のＸ軸方向の境界位置は、最新のＳ０２０の処理で先に決定した次回歩容支持脚座標系に対応する今回歩容の遊脚足平２２の目標着地位置のＸ軸方向成分に、Ｘ軸方向のΔＰＯＳxの下限値及び上限値をそれぞれ加えた位置として決定される。また、該ΔＴｍ下限時着地許容領域のＹ軸方向の境界位置は、最新のＳ０２０の処理で先に決定した次回歩容支持脚座標系に対応する今回歩容の遊脚足平２２の目標着地位置のＹ軸方向成分に、Ｙ軸方向のΔＰＯＳyの下限値及び上限値をそれぞれ加えた位置として決定される。
【０４２２】
また、歩容生成装置１００は、上記と同様に、ΔＴｍ＝ΔＴｍ_maxである場合のΔＰＯＳの許容範囲と、最新のＳ０２０の処理で先に決定した次回歩容支持脚座標系に対応する今回歩容の遊脚足平２２の目標着地位置とから、ΔＴｍ＝ΔＴｍ_maxである場合に、前記ＺＭＰ存在領域必要条件と運動継続性必要条件とを満足するための、今回歩容の遊脚足平２２の目標着地位置の許容領域（以降、ΔＴｍ上限時着地許容領域という）を決定する。
【０４２３】
以上のようにして、決定されるΔＴｍ下限時着地許容領域と、ΔＴｍ上限時着地許容領域との一例を図２２に視覚的に示す。これらのΔＴｍ下限時着地許容領域及びΔＴｍ上限時着地許容領域のＸ軸方向の幅は、ΔＺＭＰxの許容範囲の幅、すなわち、今回歩容の片脚支持期におけるＺＭＰ存在許容領域のＸ軸方向の幅を、Ｘ軸方向のおけるＺＭＰ／着地位置感度Ｓpxによって除算してなる値に一致する。また、ΔＴｍ下限時着地許容領域及びΔＴｍ上限時着地許容領域のＹ軸方向の幅は、ΔＺＭＰyの許容範囲の幅、すなわち、今回歩容の片脚支持期におけるＺＭＰ存在許容領域のＹ軸方向の幅を、Ｙ軸方向のおけるＺＭＰ／着地位置感度Ｓpyによって除算してなる値に一致する。
【０４２４】
次いで、歩容生成装置１００は、上記ΔＴｍ下限時着地許容領域と、ΔＴｍ上限時着地許容領域とを図２２に示す如く連接してなる領域（ΔＴｍ下限時着地許容領域と、ΔＴｍ上限時着地許容領域とを包含する最小の凸多角形の領域）を、前記ＺＭＰ存在領域必要条件と運動継続性必要条件とを満足する目標ＺＭＰ軌道を決定するための今回歩容の遊脚足平２２の目標着地位置の許容領域としての第２着地許容領域として決定する。
【０４２５】
Ｓ０３１の判断結果が否定的である場合のＳ０２０の処理では、上記の如く第２着地許容領域が決定される。
【０４２６】
次に、歩容生成装置１００は、上記の如く決定した第２着地許容領域と、前記した今回歩容の遊脚足平２２の第１着地許容領域（図９に示す今回歩容における第１着地許容領域）とを基に、今回歩容の遊脚足平２２の新たな目標着地位置を決定する。この場合、図２３に示す如く、第１着地許容領域と第２着地許容領域とが重なり合う領域内に、今回歩容の遊脚足平２２の新たな目標着地位置が決定される。
【０４２７】
その新たな目標着地位置は、第１着地許容領域と第２着地許容領域とが重なり合う領域内の、例えば中央付近の位置でもよいが、当該重なり合う領域内であれば、他の位置に決定するようにしてもよい。例えば、当該重なり合う領域内で、前記要求パラメータにより規定される今回歩容の遊脚足平２２の着地位置の要求値にできるだけ近い位置に新たな目標着地位置を決定するようにしてもよい。
【０４２８】
さらに、歩容生成装置１００は、今回歩容の遊脚足平２２の新たな目標着地姿勢を、最新のＳ０２０の処理で先に決定した次回歩容支持脚座標系に対応する目標着地姿勢と同じ姿勢に決定する。
【０４２９】
そして、歩容生成装置１００は、上記の如く決定した今回歩容の遊脚足平２２の新たな目標着地位置姿勢に対応する支持脚座標系を、新たな次回歩容支持脚座標系として決定する。
【０４３０】
また、歩容生成装置１００は、今回歩容周期の修正量ΔＴｍを、歩容周期許容範囲内で、上記の如く新たに決定した今回歩容の遊脚足平２２の目標着地位置に応じて決定する。すなわち、決定するΔＴｍの値がΔＴｍaであるとしたとき、ΔＴｍ＝ΔＴｍaである場合におけるΔＰＯＳの許容範囲と、最新のＳ０２０の処理で先に決定した次回歩容支持脚座標系に対応する今回歩容の遊脚足平２２の目標着地位置とから、前記ΔＴｍ下限時着地許容領域及びΔＴｍ上限時着地許容領域と同様に算出される今回歩容の遊脚足平２２の目標着地位置の許容領域内に、新たに決定した今回歩容の遊脚足平２２の目標着地位置が含まれるようにΔＴｍaが決定される。
【０４３１】
この場合、ΔＴｍaは、例えば、ΔＴｍ＝ΔＴｍaである場合における今回歩容の遊脚足平２２目標着地位置の許容領域に、新たに決定した今回歩容の遊脚足平２２の目標着地位置が含まれることとなるΔＴｍの範囲内で、前記要求パラメータにより規定される要求値にできるだけ近い値となるように決定すればよい。あるいは、例えば、ΔＴｍ＝ΔＴｍaである場合における今回歩容の遊脚足平２２目標着地位置の許容領域に、新たに決定した今回歩容の遊脚足平２２の目標着地位置が含まれることとなるΔＴｍの範囲内で、最も“０”に近い値（“０”を含む）にΔＴｍを決定するようにしてもよい。
【０４３２】
歩容生成装置１００は、上記の如く決定したΔＴｍを、最新のＳ０２０の処理で先に決定した今回歩容周期に加えることによって、新たな今回歩容周期を決定する。
【０４３３】
また、歩容生成装置１００は、新たに決定した今回歩容の遊脚足平２２の目標着地位置姿勢に応じて、次回歩容支持脚座標系における前記第１着地許容領域（次回歩容の遊脚足平２２の第１着地許容領域）を設定する。そして、歩容生成装置１００は、例えば、この第１着地許容領域内で、最新のＳ０２０の処理で先に決定した次次回歩容支持脚座標系に対応する遊脚足平２２の目標着地位置に最も近い位置（当該目標着地位置と同じ位置を含む）を、次回歩容の遊脚足平２２の新たな目標着地位置として決定する。
【０４３４】
さらに、歩容生成装置１００は、次回歩容の遊脚足平２２の新たな目標着地姿勢を、最新のＳ０２０の処理で先に決定した次次回歩容支持脚座標系に対応する遊脚足平２２の目標着地姿勢と同じ姿勢に決定する。
【０４３５】
そして、歩容生成装置１００は、このように新たに決定した次回歩容の遊脚足平２２の目標着地位置姿勢に対応する支持脚座標系を、新たな次次回歩容支持脚座標系として決定する。
【０４３６】
また、歩容生成装置１００は、新たな次回歩容周期を、最新のＳ０２０の処理で先に決定した次回歩容周期と同じ値に決定する。
【０４３７】
以上説明した処理が、Ｓ０３１の判断結果が否定的である場合のＳ０２０で実行される処理である。これにより、次回歩容支持脚座標系、次次回歩容支持脚座標系、今回歩容周期及び次回歩容周期が改めて決定されることとなる。
【０４３８】
その後のＳ０２２からの処理は、先に説明した通りに実行される。すなわち、Ｓ０３１の判断結果が肯定的になるまで、Ｓ０２０〜Ｓ０２８の処理が繰り返される。
【０４３９】
図８に戻って、Ｓ０３１の判断結果が肯定的である場合には、次にＳ０３２において、歩容生成装置１００は、今回歩容瞬時値（現在の制御周期での今回歩容の目標足平位置姿勢等の瞬時値）を決定する。このＳ０３２では、前記姿勢安定化制御演算部１１２で前述の如く決定されるモデル操作床反力モーメントが目標ＺＭＰまわりに発生するように今回歩容瞬時値が決定される。
【０４４０】
具体的には、図２４のフローチャートに示す如く、歩容瞬時値が決定される。以下説明すると、歩容生成装置１００は、まず、Ｓ１０００からＳ１００６まで、図１９のＳ８０６からＳ８１２まで（または図１６のＳ３０６からＳ３１２まで）と同様に処理を実行することによって、今回歩容の現在時刻ｔ（現在の制御周期）での目標床反力鉛直成分、目標ＺＭＰ、目標足平位置姿勢、目標上体姿勢、目標腕姿勢、目標上体鉛直位置の瞬時値を算出する。
【０４４１】
これらの各瞬時値の算出の仕方は、歩容パラメータとして、図８のＳ０２８で最終的に修正した今回歩容パラメータを使用する点を除いて、図１９のＳ８０６からＳ８１２まで（または図１６のＳ３０６からＳ３１２まで）の処理と同じである。
【０４４２】
次いで、Ｓ１００８に進み、歩容生成装置１００は、図８のＳ０３０で決定した床反力モーメント許容範囲パラメータを基に、今回歩容の現在時刻ｔでの床反力モーメント許容範囲の瞬時値を求める。この床反力モーメント許容範囲の瞬時値は、歩容生成装置１００から、前記補償全床反力モーメント分配器１１０（図３参照）に出力される。そして、この分配器１１０で前記式５２により算出されたモデル操作床反力モーメント（現在時刻ｔの値）が歩容生成装置１００に与えられる。
【０４４３】
次いで、Ｓ１０１０に進み、歩容生成装置１００は、補償全床反力モーメント分配器１１０から与えられたモデル操作床反力モーメントが目標ＺＭＰまわりに発生するように（ロボット１の慣性力と重力との合力が目標ＺＭＰまわりに発生するモーメントの水平成分がモデル操作床反力モーメントに釣り合うように）、今回歩容の現在時刻ｔでの上体水平加速度を決定する。
【０４４４】
言い換えると、ロボット１の慣性力と重力との合力が目標ＺＭＰまわりに発生するモーメントがモデル操作床反力モーメントの符号を反転したモーメントに一致するように、今回歩容の現在時刻ｔでの上体水平加速度が決定される。
【０４４５】
この場合、図１９のＳ８１４の処理と同様の仕方で、例えば図７の動力学モデル（倒立振子モデル）を用いて今回歩容の上体水平加速度が算出される。
【０４４６】
具体的には、今回歩容の現在時刻ｔの上体鉛直位置と、時刻（ｔ−Δｔ)の上体水平位置と、現在時刻ｔの目標上体姿勢とから、現在時刻ｔでの上体質点２４ｂの鉛直位置及び水平位置が決定される。なお、時刻(ｔ−Δｔ)までの上体水平位置の時系列又は時刻(ｔ−Δｔ)での歩容状態を基に時刻ｔでの上体水平位置を補間的に推定し、その推定した上体水平位置を時刻(ｔ−Δｔ)の上体水平位置の代わりに用いてもよい。
【０４４７】
また、今回歩容の現在時刻ｔでの床反力鉛直成分から、上体質点２４ｂに作用する重力（＝ｍb＊ｇ）を差し引いた値を、上体質点２４ｂの質量ｍbにより除算することによって、現在時刻ｔでの上体質点２４ｂの鉛直加速度が求められる。
【０４４８】
そして、上記の如く求めた上体質点２４ｂの鉛直位置、水平位置、鉛直加速度をそれぞれ、前記式０４のＺb、Ｘb、d2Zb/dt2に代入すると共に、現在時刻ｔでの目標ＺＭＰの水平位置および鉛直位置を式０４のＸzmp，Ｚzmpに代入し、さらに、同式０４のＭzmp_yを、モデル操作床反力モーメントに一致させてなる式を、d2Xb/dt2について解くことにより、現在時刻ｔでの上体質点水平加速度d2Xb/dt2が算出される。そして、この上体質点水平加速度d2Xb/dt2が現在時刻ｔでの上体水平加速度として求められる。
【０４４９】
尚、より厳密な動力学モデルを用いて、目標ＺＭＰまわりの床反力モーメントの水平成分をモデル操作床反力モーメントに一致させるような上体水平加速度を探索的に求めるようにしてもよい。
【０４５０】
次いで、Ｓ１０１２に進み、Ｓ１０１０で上記の如く求めた上体水平加速度を２階積分することにより現在時刻ｔでの上体水平位置を算出する。この算出の仕方は、図１６のＳ３１６（又は図１９のＳ８１６）と同じである。これにより、図８のＳ０３２の処理が完了する。
【０４５１】
次いでＳ０３４に進み、スピン力をキャンセルする（ロボット１の腕体以外の運動によって目標ＺＭＰ回りに発生する床反力モーメント鉛直成分を“０”もしくはほぼ“０”にする）ための腕体の動作が決定される。具体的には、腕体を振らなかった場合の目標ＺＭＰにおける床反力モーメント鉛直成分軌道（厳密には、腕体を振らずに歩容を生成した場合において、ロボットの重力と慣性力の合力が目標ＺＭＰに作用するモーメント鉛直成分軌道の各瞬時値の符号を反転したもの）が求められる。すなわち、Ｓ０３２の処理によって生成された今回歩容の運動（これには腕振りの運動は含まれていない）の瞬時値に釣り合う目標ＺＭＰ回りの床反力モーメント鉛直成分の瞬時値が求められる。そして、この床反力モーメント鉛直成分の瞬時値を、腕振り運動の等価慣性モーメントで割ることにより、スピン力キャンセルに必要な腕振り動作の角加速度が求められる。なお、腕の振りが大き過ぎる場合には、等価慣性モーメントよりも大きな値で床反力モーメント鉛直成分の瞬時値を除算するようにしてもよい。
【０４５２】
次に、歩容生成装置１００は、この角加速度を２階積分し、これを積分値が過大になるのを防ぐためのローカットフィルタに通して得た角度を腕振り動作角とする。ただし、腕振り動作では、左右の腕体を前後逆方向に振り、両腕体の重心位置を変化させないようにする。なお、スピン力をキャンセルするための腕振り運動を定常歩容でも生成しておき、これにつながるように、今回歩容における腕振り運動を決定するようにしてもよい。
【０４５３】
次いでＳ０３６に進み、歩容生成装置１００は、時刻ｔに制御周期Δｔを加え、Ｓ０１４からの処理を再び実行する。
【０４５４】
以上により、今回歩容の瞬時値が時系列的に生成されることとなる。
【０４５５】
この場合、今回歩容は、その目標運動の軌道を、将来において、仮想的な規範運動としての周期的運動である定常歩容の運動軌道に収束させる（漸近させる）ように決定される。
【０４５６】
より詳しくは、今回歩容に続く定常歩容の初期状態（初期発散成分等）を決定した後に、前記幾何学的脚体運動必要条件を満足し得る今回歩容の足平位置姿勢軌道を規定する足平軌道パラメータを暫定的に決定した上で、今回歩容の目標運動の軌道を定常歩容の運動軌道に収束させるための前記運動継続性必要条件を満足させることができるように（本実施形態では、今回歩容の終端発散成分が、定常歩容の初期発散成分に一致又はほぼ一致するように）、目標ＺＭＰ軌道を規定するＺＭＰ軌道パラメータがロボット１の動力学モデル（本実施形態では図７の動力学モデル）を用いて決定される。そして、このように決定した目標ＺＭＰ軌道が前記ＺＭＰ存在領域必要条件を満足する場合（図８のＳ０３１の判断結果が肯定的となる場合）には、先に暫定的に決定した足平軌道パラメータと、ＺＭＰ軌道パラメータと、ロボット１の動力学モデル（本実施形態では図７の動力学モデル）とを用いて、目標足平位置姿勢及び目標上体位置姿勢を含む目標歩容（今回歩容）の瞬時値が逐次決定される。
【０４５７】
なお、この場合、本実施形態では、ロボット１の実際の上体姿勢を目標姿勢にフィードバック制御するために、今回歩容の目標運動の瞬時値を逐次生成する際には、上記動力学モデル上で、フィードバック操作量としての前記モデル操作床反力モーメントが目標ＺＭＰのまわりに発生するように、ロボット１の目標上体位置が決定される。
【０４５８】
また、図８のＳ０３１の判断結果が否定的となる場合には、前記ＺＭＰ存在領域必要条件と運動継続性必要条件とを満足し得る目標ＺＭＰ軌道を決定することができるようにするために、今回歩容における遊脚足平２２の目標着地位置又は目標着地時刻が修正される。この場合、着地位置修正量ΔＰＯＳと、着地時刻修正量ΔＴｍと、運動継続性必要条件を満足するための目標ＺＭＰの変化量ΔＺＭＰ（ＺＭＰ修正量の台形パターンの高さａの変化量）との間の関係が、前記式１５２により表現される。
【０４５９】
そして、この式１５２により表現される関係を規定するＺＭＰ／着地位置感度ＳpとＺＭＰ／着地時刻感度Ｓtとを算出した上で、該式１５２に基づいて、ＺＭＰ存在領域必要条件に関するＺＭＰ存在許容領域と前記歩容周期許容範囲とが今回歩容の遊脚足平２２の着地位置の許容領域としての前記第２着地許容領域に変換される。
【０４６０】
これにより、今回歩容の遊脚足平２２の目標着地時刻の修正（前記歩容周期許容範囲を満足し得る範囲内での修正）による影響分を含めて、前記ＺＭＰ存在領域必要条件と運動継続性必要条件とを満足し得る目標ＺＭＰ軌道を決定することを可能とする、今回歩容の遊脚足平２２の目標着地位置の許容領域（第２着地許容領域）が決定される。
【０４６１】
そして、この第２着地許容領域と、前記幾何学的脚体運動必要条件に対応する前記第１着地許容領域とが重なり合う領域内に、今回歩容の遊脚足平２２の新たな目標着地位置が決定され、ひいては、今回歩容支持脚座標系が決定される。また、この目標着地位置を実現し得るように新たな今回歩容周期が決定される（結果的に今回歩容の遊脚足平２２の新たな目標着地時刻が決定される）。
【０４６２】
さらに、このように新たに決定した今回歩容支持脚座標系及び今回歩容周期を用いて、今回歩容の新たな足平軌道パラメータと、新たなＺＭＰ軌道パラメータ（今回歩容の目標運動を定常歩容の運動に収束させ得る目標ＺＭＰ軌道を規定するパラメータ）とが改めて決定され、Ｓ０３１の判断処理が再び行われる。この場合、新たな足平軌道パラメータにより表される今回歩容の遊脚足平２２の目標着地位置は、前記第２着地許容領域内の位置に決定されているので、基本的には、Ｓ０３１の判断結果は肯定的となる。そして、新たな足平軌道パラメータと新たなＺＭＰ軌道パラメータとロボット１の動力学モデル（本実施形態では図７の動力学モデル）とを用いて、目標足平位置姿勢及び目標上体位置姿勢を含む目標歩容（今回歩容）の瞬時値が逐次決定される。
【０４６３】
かかる本実施形態によれば、Ｓ０３１の判断結果が否定的となり、今回歩容の遊脚足平２２の目標着地位置や目標着地時刻を修正する必要がある場合に、前記の如く決定される第２着地許容領域を使用し、この第２着地許容領域と前記第１着地許容領域とが重なり合う領域に、今回歩容の遊脚足平２２の目標着地位置が決定される。これにより、前記幾何学的脚体運動必要条件を満足することに加えて、前記ＺＭＰ存在領域必要条件と運動継続性必要条件とを満足し得る目標ＺＭＰ軌道を決定することができるように、足平軌道パラメータを決定できる。
【０４６４】
このため、前記幾何学的脚体運動必要条件とＺＭＰ存在領域必要条件と運動継続性必要条件とを満足させ得るように今回歩容の遊脚足平２２の目標着地位置や目標着地時刻を修正して、足平軌道パラメータを決定することを、適切な指針で行なうことができる。このため、今回歩容の遊脚足平２２の目標着地位置や目標着地時刻を試行錯誤的に繰り返し修正するような探索処理を行わないようにして、前記幾何学的脚体運動必要条件とＺＭＰ存在領域必要条件と運動継続性必要条件とを満足させる上で適切な足平軌道パラメータを短時間で効率よく決定することができる。
【０４６５】
この結果、制御周期を短縮することが可能となり、ひいては、ロボット１の動作制御の応答性を高めることができる。
【０４６６】
ここで、以上説明した本実施形態と、本発明との対応関係について補足しておく。
【０４６７】
本実施形態では、前記足平軌道パラメータとＺＭＰ軌道パラータとが、それぞれ、本発明における脚体運動パラメータ、床反力要素パラメータに相当する。そして、ＺＭＰ（床反力中心点）が本発明における床反力要素に相当する。
【０４６８】
また、本実施形態における前記幾何学的脚体運動必要条件と、前記ＺＭＰ存在領域必要条件と、運動継続性必要条件とが、それぞれ、本発明における幾何学的脚体運動必要条件、床反力要素許容範囲必要条件、運動継続性必要条件に相当する。
【０４６９】
また、各制御周期において、最初に実行されるＳ０２６の処理のうちのＳ６００の処理によって、本発明における脚体運動パラメータ暫定決定手段が実現される。なお、各制御周期において、最初に実行されるＳ０２６の処理のうちのＳ６００の処理によって決定される足平軌道パラメータは、各制御周期において最初に実行されるＳ０２０の処理（Ｓ０１６又はＳ０１８の処理の次に実行されるＳ０２０の処理）で決定される次回歩容支持脚座標系及び今回歩容周期によって実質的に規定されるので、このＳ０２０の処理を脚体運動パラメータ暫定決定手段と見なすこともできる。
【０４７０】
また、各制御周期において、最初に実行されるＳ０２６の処理のうちのＳ６０８の処理によって、本発明における床反力要素パラメータ暫定決定手段が実現される。
【０４７１】
また、各制御周期において、最初に実行されるＳ０２８の処理のうちの、Ｓ７０２〜Ｓ７１６のループ処理によって、本発明におけるＺＭＰ修正量決定手段が実現される。
【０４７２】
また、Ｓ０３１の判断処理によって、本発明における判断手段が実現される。
【０４７３】
また、Ｓ０２０の処理によって（詳しくは、Ｓ０２０の処理の中で、前記第１着地許容領域を決定する処理によって）、本発明における第１着地許容領域決定手段が実現される。
【０４７４】
また、Ｓ０３１の判断結果が否定的となる場合に実行されるＳ０２０の処理によって（詳しくは、Ｓ０２０の処理の中で、前記第２着地許容領域を決定する処理によって）、本発明における第２着地許容領域決定手段が実現される。この場合、前記ＺＭＰ／着地位置感度Ｓpと、ＺＭＰ／着地時刻感度Ｓtとが本発明における着地位置・着地時刻・床反力要素間関係パラメータに相当する。
【０４７５】
さらに、Ｓ０３１の判断結果が否定的となる場合に実行されるＳ０２６の処理のうちのＳ６００の処理によって、本発明における脚体運動パラメータ決定手段が実現され、Ｓ０３１の判断結果が否定的となる場合に実行されるＳ０２８の処理のうちのＳ７１８の処理によって、本発明における床反力要素パラメータ決定手段が実現される。
【０４７６】
［第２実施形態］
前記実施形態では、床面が、任意の箇所に遊脚足平２２を着地させることが可能な面であることを前提として、前記Ｓ０２０の処理において、遊脚足平２２の目標着地位置を制約する許容領域として、前記幾何学的脚体運動必要条件に対応する第１着地許容領域と、運動継続性必要条件及びＺＭＰ存在領域必要条件（床反力要素許容範囲必要条件）に対応する第２着地許容領域との２つの許容領域を使用した。
【０４７７】
但し、遊脚足平２２の着地可能な位置が、ロボット１の外界の環境に依存する制約を受けるような場合（例えば、床面が飛び石状の床面である場合、床面上に足平２２を着地させることが好ましくない凹凸もしくは段差もしくは障害物が存在する場合、床面上に局所的に滑りやすい部分が存在する場合等）には、該環境に依存させた第３着地許容領域をさらに設定し、Ｓ０２０の処理において、この第３着地許容領域をさらに加味して、遊脚足平２２の目標着地位置を決定するようにしてもよい。
【０４７８】
このように第３着地許容領域を用いる場合のより具体的な例を第２実施形態として、以下に図２５等を参照して以下に説明する。なお、本実施形態は、図８のＳ０２０で歩容生成装置１００が実行する処理の一部のみが、第１実施形態と相違するものであるので、その相違点を中心に説明する。そして、第１実施形態と同一の部分については、第１実施形態と同一の参照符号を使用し、説明を省略する。
【０４７９】
本実施形態では、歩容生成装置１００には、前記床形状情報を含めてロボット１の外界の環境情報が入力される。該環境情報には、床形状情報以外に、例えば、床面の滑り易さ（もしくは摩擦係数）や柔らかさ等の性状情報、床面上に設置されている障害物の配置情報等が含まれる。また、環境情報のうちの床形状情報には、例えば、床面に存在する凹凸、段差、飛び石面の配置情報等、床面の形状に関するより詳しい情報が含まれる。
【０４８０】
そして、歩容生成装置１００は、前記Ｓ０２０の処理の中で、上記環境情報に基づいて、第３着地許容領域を決定する。例えば図２５に二点鎖線で示すような領域Ｒ１、Ｒ２、Ｒ３が第３着地許容領域として決定される。この図示の例では、第３着地許容領域Ｒ１、Ｒ２，Ｒ３の内側の床面は、概ね平坦で滑り難いなど、遊脚足平２２（図示例では２２Ｌ）を支障なく着地させ得る床面である。また、第３着地許容領域Ｒ１、Ｒ２，Ｒ３の間の箇所は、例えば、凹凸や、段差、障害物、滑りやすい部分等が存在して、遊脚足平２２（図示例では２２Ｌ）を着地させることができないか、もしくは、着地させることが好ましくない箇所である。
【０４８１】
なお、環境情報は、一般には、今回歩容の生成処理の期間内等、比較的短い期間内で変化することは無いので、第３着地許容領域を決定する処理は、例えば、Ｓ０１６の判断結果が肯定的となる場合にだけ行なうようにしてもよい。
【０４８２】
そして、歩容生成装置１００は、Ｓ０２０の処理において、上記の如く決定した第３着地許容領域を反映させて、次回歩容支持脚座標系や次次回歩容支持脚座標系を決定する。
【０４８３】
具体的には、Ｓ０１８の処理又はＳ０１６の判断処理の次に実行されるＳ０２０の処理においては、歩容生成装置１００は、まず、今回歩容の遊脚足平２２の着地位置を制限する前記第１着地許容領域（今回歩容支持脚座標系上での第１着地許容領域）を前記第１実施形態と同様に設定した上で、この第１着地許容領域と上記第３着地許容領域とが重なり合う領域内で、該遊脚足平２２の目標着地位置を決定する。例えば図２５に示した例では、図示の如く、第１着地許容領域と第３着地許容領域Ｒ１，Ｒ２，Ｒ３のうちのＲ１とが重なり合う領域内に今回歩容の遊脚足平２２Ｌの目標着地位置が決定される。
【０４８４】
この場合、第１着地許容領域と第３着地許容領域とが重なり合う領域内での遊脚足平２２の目標着地位置の決定の仕方は、前記第１実施形態におけるＳ０２０で第１着地許容領域内で遊脚足平２２の目標着地位置を決定する仕方と同じでよい。
【０４８５】
さらに、歩容生成装置１００は、前記第１実施形態と同様に、今回歩容の遊脚足平２２の目標着地姿勢を決定する。そして、歩容生成装置１００は、このように決定した今回歩容の遊脚足平２２の目標着地位置姿勢に対応する支持脚座標系を次回歩容支持脚座標系として決定する。
【０４８６】
次いで、歩容生成装置１００は、次回歩容の遊脚足平２２の着地位置を制限する第１着地許容領域（次回歩容支持脚座標系上での第１着地許容領域）を前記第１実施形態と同様に設定した上で、上記と同様に次次回歩容支持脚座標系を決定する。
【０４８７】
この場合、次次回歩容支持脚座標系の原点位置を規定する次回歩容の遊脚足平２２の目標着地位置は、次回歩容の遊脚足平２２の目標着地位置の許容領域として次回歩容支持脚座標系上に設定された第１着地許容領域と前記第３着地許容領域とが重なり合う領域内に決定される。その決定の仕方は、前記第１実施形態におけるＳ０２０で次回歩容支持脚座標系上の第１着地許容領域内で次回歩容の遊脚足平２２の目標着地位置を決定する仕方と同じでよい。また、次回歩容の遊脚足平２２の目標着地姿勢は、前記第１実施形態と同様に決定される。
【０４８８】
なお、Ｓ０１８の処理又はＳ０１６の判断処理の次に実行されるＳ０２０の処理において、今回歩容及び次回歩容の歩容周期は、前記第１実施形態と同様に決定される。
【０４８９】
また、Ｓ０３１の判断処理の次に実行されるＳ０２０の処理においては、歩容生成装置１００は、まず、今回歩容の遊脚足平２２の着地位置を制限する前記第１着地許容領域及び第２着地許容領域（今回歩容支持脚座標系上での第１着地許容領域及び第２着地許容領域）を前記第１実施形態と同様に設定した上で、この第１着地許容領域及び第２着地許容領域と上記第３着地許容領域とが重なり合う領域内で、今回歩容の遊脚足平２２の目標着地位置を決定する。例えば図２５に示した例では、図示の如く、第１着地許容領域と、第２着地許容領域と、第３着地許容領域Ｒ１，Ｒ２，Ｒ３のうちのＲ１とが重なり合う領域内に今回歩容の遊脚足平２２Ｌの目標着地位置が決定される。
【０４９０】
この場合、第１着地許容領域、第２着地許容領域及び第３着地許容領域が重なり合う領域内での今回歩容の遊脚足平２２の目標着地位置の決定の仕方は、前記第１実施形態におけるＳ０２０で、第１着地許容領域と第２着地許容領域とが重なり合う領域内に今回歩容の遊脚足平２２の目標着地位置を決定する仕方と同じでよい。
【０４９１】
さらに、歩容生成装置１００は、今回歩容の遊脚足平２２の目標着地姿勢を前記第１実施形態と同様に決定する。そして、このように決定した今回歩容の遊脚足平２２の目標着地位置姿勢に対応する支持脚座標系を次回歩容支持脚座標系として決定する。
【０４９２】
次いで、歩容生成装置１００は、次回歩容の遊脚足平２２に対する第１着地許容領域（次回歩容支持脚座標系上での第１着地許容領域）を前記第１実施形態と同様に決定し、この第１着地許容領域と前記第３着地許容領域とが重なり合う領域内で、次回歩容の遊脚足平２２の目標着地位置を決定する。この決定の仕方は、前記第１実施形態におけるＳ０２０で、第１着地許容領域内に次回歩容の遊脚足平２２の目標着地位置を決定する仕方と同じでよい。
【０４９３】
さらに、歩容生成装置１００は、次回歩容の遊脚足平２２の目標着地姿勢を前記第１実施形態と同様に決定する。そして、このように決定した次回歩容の遊脚足平２２の目標着地位置姿勢に対応する支持脚座標系を次次回歩容支持脚座標系として決定する。
【０４９４】
なお、Ｓ０３１の判断処理の次に実行されるＳ０２０の処理において、今回歩容及び次回歩容の歩容周期は、前記第１実施形態と同様に決定される。
【０４９５】
以上説明した以外の処理は、第１実施形態と同じである。
【０４９６】
補足すると、第２実施形態では、第３着地許容領域が複数の領域に分散している場合に、第１着地許容領域と第３着地許容領域とが重なり合う領域、あるいは、第１着地許容領域と第２着地許容領域と第３着地許容領域とが重なり合う領域が複数の領域に分散する場合もある。このような場合に、遊脚足平２２の目標着地位置を、例えば複数の重なり領域のうちの最も広い面積の領域内に決定するようにしてもよい。
【０４９７】
かかる本実施形態によれば、前記幾何学的脚体運動必要条件、ＺＭＰ存在領域必要条件、運動継続性必要条件に加えて、ロボット１の外界の環境に依存する制約をも加味した適切な足平軌道パラメータを短時間で効率よく決定することができる。
【０４９８】
なお、本実施形態では、Ｓ０２０の処理によって（詳しくは、Ｓ０２０の処理の中で、前記第３着地許容領域を決定する処理によって）、本発明における第３着地許容領域決定手段が実現される。
【０４９９】
［変形態様について］
次に、以上説明した実施形態の変形態様いくつか説明しておく。
【０５００】
前記実施形態では、Ｓ０３１の判断結果が否定的である場合に、今回歩容周期（今回歩容の遊脚足平２２の目標着地時刻）も修正し得るようにしたが、今回歩容の遊脚足平２２の目標着地位置だけを修正するようにしてもよい。この場合には、前記式１５２のΔＴｍを“０”とした式に基づいて、第２着地許容領域を決定するようにすればよい。なお、この場合、ＺＭＰ／着地時刻感度Ｓtの算出は不要である。そして、ＺＭＰ／着地位置感度Ｓpが本発明における着地位置・床反力要素間関係パラメータに相当するものとなる。
【０５０１】
また、前記実施形態では、前記上体姿勢角偏差Δθを“０”に収束させるためのフィードバック要求操作量としてのモデル操作床反力モーメントを歩容生成装置１００にフィードバックするようにしたが、該モデル操作床反力モーメントと定常的に“０”にするようにしてもよい。
【０５０２】
また、前記実施形態では、前記ＺＭＰ／着地位置感度Ｓpや、ＺＭＰ／着地時刻感度Ｓtを算出する場合に、Ｓ０２２及びＳ０２４と同じ処理を実行することによって、定常歩容の初期状態を新ためて算出するようにしたが、ＳpやＳtを算出する際には、今回歩容の遊脚足平２２の目標着地位置や目標着地時刻を微小な所定量だけ変化させるだけなので、Ｓ０３１の判断処理を行う前の最新のＳ０２２及びＳ０２４の処理によって決定した定常歩容の初期状態をそのまま使用して、Ｓ０２６、Ｓ０２８と同じ処理を実行するようにしてもよい。
【０５０４】
また、前記実施形態では、ロボット１の歩行動作を行なう場合を例にとって説明したが、ロボット１の走行動作を行なうような場合にも、前記実施形態と同様に、今回歩容の遊脚足平２２の目標着地位置や、目標着地時刻の修正を行なうことができる。なお、この場合、ロボット１の目標歩容を生成するための動力学モデルとしては、例えば本願出願人が、特許第４２４６６３８号公報の実施形態にて提示したような動力学モデル（フライホイールと複数の質点とを備える動力学モデル）を用いることができる。
【０５０５】
また、歩行動作を行なう場合においても、ロボット１の動力学モデルとして、特許第４２４６６３８号公報の実施形態にて提示したような動力学モデルを使用して、あるいは、ロボット１の各リンクに質点を備えるような多質点モデルを使用して、目標歩容を生成するようにしてもよい。
【０５０６】
また、前記実施形態では、本発明における床反力要素として、ＺＭＰを使用したが、例えば、床面上の所定の点のまわりの床反力モーメントを使用してもよい。
【符号の説明】
【０５０７】
１…脚式移動ロボット、２…脚体、２２…足平（脚体の先端部）、２４…上体（基体）、Ｓ０２０…第１着地許容領域決定手段，第２着地許容領域決定手段，第３着地許容領域決定手段、Ｓ６００…脚体運動パラメータ暫定決定手段，脚体運動パラメータ暫定決定手段、Ｓ６０８…床反力要素パラメータ暫定決定手段、Ｓ７０２〜Ｓ７１６…ＺＭＰ修正量決定手段、Ｓ０３１…判断手段、Ｓ７１８…床反力要素パラメータ決定手段。
【図１】
0005456588.tif 000006
【図２】
0005456588.tif 000007
【図３】
0005456588.tif 000008
【図４】
0005456588.tif 000009
【図５】
0005456588.tif 000010
【図６】
0005456588.tif 000011
【図７】
0005456588.tif 000012
【図８】
0005456588.tif 000013
【図９】
0005456588.tif 000014
【図１０】
0005456588.tif 000015
【図１１】
0005456588.tif 000016
【図１２】
0005456588.tif 000017
【図１３】
0005456588.tif 000018
【図１４】
0005456588.tif 000019
【図１５】
0005456588.tif 000020
【図１６】
0005456588.tif 000021
【図１７】
0005456588.tif 000022
【図１８】
0005456588.tif 000023
【図１９】
0005456588.tif 000024
【図２０】
0005456588.tif 000025
【図２１】
0005456588.tif 000026
【図２２】
0005456588.tif 000027
【図２３】
0005456588.tif 000028
【図２４】
0005456588.tif 000029
【図２５】
0005456588.tif 000030