(57)【特許請求の範囲】
【請求項１】
上体に関節を介して基端部が連結された２つの脚体を有する２足移動ロボットの目標歩容を生成しつつ、該目標歩容に応じて該ロボットの動作制御を行う制御装置であって、
前記ロボットの動作モードとして、各脚体の離床動作とこれに続く着床動作とから成る離床・着床動作を２つの脚体で交互に行うことにより該ロボットの移動を行なうモードである両脚交互離床・着床動作モードと、２つの脚体のうちの一方の脚体を離床させた状態で、他方の脚体のみにより前記離床・着床動作を行なうことにより該ロボットの移動を行なう片脚ホッピング動作モードとを有し、
前記両脚交互離床・着床動作モードでの前記ロボットの動作中に、該両脚交互離床・着床動作モードでのロボットの運動を継続するために必要な所定の第１条件を満足する前記目標歩容を生成することが可能であるか否かを逐次判断する第１判断手段と、
該第１判断手段の判断結果が否定的となる場合に、前記ロボットの将来の動作モードを前記両脚交互離床・着床動作モードから片脚ホッピング動作モードに変更することによって該ロボットの運動を継続するために必要な所定の第２条件を満足する前記目標歩容を生成することが可能であるか否かを逐次判断する第２判断手段と、
前記第１判断手段の判断結果が肯定的となる場合には、前記ロボットの動作モードを前記両脚交互離床・着床動作モードに維持すると共に、前記第１判断手段の判断結果と第２判断手段の判断結果とがそれぞれ否定的、肯定的となる場合には、前記ロボットの将来の動作モードを、前記両脚交互離床・着床動作モードで現在時刻以後に新たに着床させようとする脚体の着床後に該両脚交互離床・着床動作モードから前記片脚ホッピング動作モードに変更するように、前記第１判断手段及び第２判断手段の判断結果に応じて前記ロボットの動作モードを決定する動作モード決定手段と、
前記決定された動作モードでの前記ロボットの運動を行なわせるように前記目標歩容を生成する目標歩容生成手段とを備え、
前記第１条件は、前記動作モードを前記両脚交互離床・着床動作モードに維持することを前提として前記目標歩容生成手段により前記目標歩容の生成を行なったと仮定した場合に、該両脚交互離床・着床動作モードで現在時刻以後に新たに着床させようとする脚体の該目標歩容における目標着地位置が、該両脚交互離床・着床動作モードに対応する所定の着地許容領域内に存在するという第１Ａ条件と、該目標歩容により規定される前記ロボットの運動軌道が、前記両脚交互離床・着床動作モードでの同じパターンの運動を繰り返す仮想的な周期的歩容の運動軌道に将来において収束させ得る運動軌道となるという第１Ｂ条件と、該目標歩容により規定されるＺＭＰの目標位置が、該目標歩容により規定される前記２つの脚体の運動軌道に応じて設定される所定のＺＭＰ存在許容領域内に存在するという第１Ｃ条件とを少なくとも含み、
前記第２条件は、前記両脚交互離床・着床動作モードで現在時刻以後に新たに着床させようとする脚体の着床後に、前記動作モードを該両脚交互離床・着床動作モードから前記片脚ホッピング動作モードに変更することを前提として前記目標歩容生成手段により前記目標歩容の生成を行なったと仮定した場合に、該両脚交互離床・着床動作モードで新たに着床させようとする脚体の該目標歩容における目標着地位置が、該両脚交互離床・着床動作モードに対応する前記所定の着地許容領域内に存在するという第２Ａ条件と、該目標歩容により規定される前記ロボットの運動軌道が、前記片脚ホッピング動作モードでの同じパターンの運動を繰り返す仮想的な周期的歩容の運動軌道に将来において収束させ得る運動軌道となるという第２Ｂ条件と、該目標歩容により規定されるＺＭＰの目標位置が、該目標歩容により規定される前記他方の脚体の運動軌道に応じて設定される所定のＺＭＰ存在許容領域内に存在するという第２Ｃ条件とを少なくとも含むことを特徴とする２足移動ロボットの制御装置。
【請求項２】
上体に関節を介して基端部が連結された２つの脚体を有する２足移動ロボットの目標歩容を生成しつつ、該目標歩容に応じて該ロボットの動作制御を行う制御装置であって、
前記ロボットの動作モードとして、各脚体の離床動作とこれに続く着床動作とから成る離床・着床動作を２つの脚体で交互に行うことにより該ロボットの移動を行なうモードである両脚交互離床・着床動作モードと、２つの脚体のうちの一方の脚体を離床させた状態で、他方の脚体のみにより前記離床・着床動作を行なうことにより該ロボットの移動を行なう片脚ホッピング動作モードとを有し、
前記両脚交互離床・着床動作モードでの前記ロボットの動作中に、該両脚交互離床・着床動作モードでのロボットの運動を継続するために必要な所定の第１条件を満足する前記目標歩容を生成することが可能であるか否かを逐次判断する第１判断手段と、
該第１判断手段の判断結果が否定的となる場合に、前記ロボットの将来の動作モードを前記両脚交互離床・着床動作モードから片脚ホッピング動作モードに変更することによって該ロボットの運動を継続するために必要な所定の第２条件を満足する前記目標歩容を生成することが可能であるか否かを逐次判断する第２判断手段と、
前記片脚ホッピング動作モードでの前記ロボットの動作中に、該ロボットの将来の動作モードを前記片脚ホッピング動作モードから前記両脚交互離床・着床動作モードに変更することによって該ロボットの運動を継続するために必要な所定の第３条件を満足する前記目標歩容を生成することが可能であるか否かを逐次判断する第３判断手段と、
該第３判断手段の判断結果が否定的となる場合に、前記片脚ホッピング動作モードでのロボットの運動を継続するために必要な所定の第４条件を満足する前記目標歩容を生成することが可能であるか否かを逐次判断する第４判断手段と、
前記第１判断手段の判断結果が肯定的となる場合には、前記ロボットの動作モードを前記両脚交互離床・着床動作モードに維持すると共に、前記第１判断手段の判断結果と第２判断手段の判断結果とがそれぞれ否定的、肯定的となる場合には、前記ロボットの将来の動作モードを前記両脚交互離床・着床動作モードから前記片脚ホッピング動作モードに変更し、さらに、前記第３判断手段の判断結果が肯定的となる場合には、前記ロボットの将来の動作モードを、前記片脚ホッピング動作モードで現在時刻以後に新たに着床させようとする前記他方の脚体の着床後に該片脚ホッピング動作モードから前記両脚交互離床・着床動作モードに変更すると共に、前記第３判断手段の判断結果と第４判断手段の判断結果とがそれぞれ否定的、肯定的となる場合には、前記ロボットの将来の動作モードを前記片脚ホッピング動作モードに維持するように、前記第１判断手段、第２判断手段、第３判断手段及び第４判断手段の判断結果に応じて前記ロボットの動作モードを決定する動作モード決定手段と、
前記決定された動作モードでの前記ロボットの運動を行なわせるように前記目標歩容を生成する目標歩容生成手段とを備え、
前記第３条件は、前記片脚ホッピング動作モードで現在時刻以後に新たに着床させようとする前記他方の脚体の着床後に、前記動作モードを該片脚ホッピング動作モードから前記両脚交互離床・着床動作モードに変更することを前提として前記目標歩容生成手段により前記目標歩容の生成を行なったと仮定した場合に、該片脚ホッピング動作モードで新たに着床させようとする前記他方の脚体の該目標歩容における目標着地位置が、該片脚ホッピング動作モードに対応する所定の着地許容領域内に存在するという第３Ａ条件と、該目標歩容により規定される前記ロボットの運動軌道が、前記両脚交互離床・着床動作モードでの同じパターンの運動を繰り返す仮想的な周期的歩容の運動軌道に将来において収束させ得る運動軌道となるという第３Ｂ条件と、該目標歩容により規定されるＺＭＰの目標位置が、該目標歩容により規定される前記２つの脚体の運動軌道に応じて設定される所定のＺＭＰ存在許容領域内に存在するという第３Ｃ条件とを少なくとも含み、
前記第４条件は、前記動作モードを前記片脚ホッピング動作モードに維持することを前提として前記目標歩容生成手段により前記目標歩容の生成を行なったと仮定した場合に、該片脚ホッピング動作モードで現在時刻以後に新たに着床させようとする前記他方の脚体の該目標歩容における目標着地位置が、該片脚ホッピング動作モードに対応する前記所定の着地許容領域内に存在するという第４Ａ条件と、該目標歩容により規定される前記ロボットの運動軌道が、前記片脚ホッピング動作モードでの同じパターンの運動を繰り返す仮想的な周期的歩容の運動軌道に将来において収束させ得る運動軌道となるという第４Ｂ条件と、該目標歩容により規定されるＺＭＰの目標位置が、該目標歩容により規定される前記他方の脚体の運動軌道に応じて設定される所定のＺＭＰ存在許容領域内に存在するという第４Ｃ条件とを少なくとも含むことを特徴とする２足移動ロボットの制御装置。
【請求項３】
請求項１又は２記載の２足移動ロボットの制御装置において、
前記目標歩容生成手段は、前記片脚ホッピング動作で運動を前記ロボットに行わせる前記目標歩容を生成するとき、前記他方の脚体の離床後の着床状態において、前記他方の脚体の基端部よりも前記一方の脚体の基端部の方が相対的に高い位置に存在することとなる前記目標歩容を生成することを特徴とする２足移動ロボットの制御装置。
【請求項４】
請求項１又は２記載の２足移動ロボットの制御装置において、
前記目標歩容生成手段は、前記片脚ホッピング動作での運動を前記ロボットに行わせる前記目標歩容を生成するとき、前記他方の脚体の離床後の着床状態において、前記ロボットの全体の重心点と前記他方の脚体の基端部との水平方向距離が、前記ロボットが直立姿勢で起立している状態での当該水平方向距離よりも短くなる前記目標歩容を生成することを特徴とする２足移動ロボットの制御装置。
【請求項５】
請求項３又は４記載の２足移動ロボットの制御装置において、
前記他方の脚体の離床後の着床状態において前記目標歩容生成手段が生成する目標歩容は、前記ロボットの全体の重心点と、該他方の脚体の基端部とが、該他方の脚体の接地面の直上で上下に並ぶように配置される目標歩容であることを特徴とする２足移動ロボットの制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、２足移動ロボットの制御装置に関する。
【背景技術】
【０００２】
人型ロボット等、上体に関節を介して連結された２つの脚体を有する２足移動ロボットでは、各脚体の離床動作とこれに続く着床動作とから成る一連の動作（以降、単に離床・着床動作ということがある）を、２つの脚体で交互に切替えつつ行なうことによって（すなわち、ロボットの歩行動作あるいは走行動作を行なうことによって）、ロボットの移動を行なう技術が従来より本願出願人等により提案されている（例えば特許文献１を参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第４２４６６３８号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、２足移動ロボットが、各脚体の離床・着床動作を２つの脚体で交互に行なう歩行動作又は走行動作によって移動しているときに、ロボットに想定外の外力が作用すること等に起因して、該ロボットの実際の姿勢が本来の適切な姿勢（ロボットの継続的な運動を行い得る姿勢）から崩れてしまうような場合がある。
【０００５】
このような状況で、ロボットの目標歩容における２つの脚体のうちの遊脚（空中で移動させる脚体）の将来の着地位置や、ロボットに対する実際の床反力の作用点としてのＺＭＰ（Zero Moment Point）の位置を適切に調整することによって、１歩又は複数歩の期間で、ロボットの実際の姿勢（特に上体の姿勢）を適切な姿勢に復元させることができる場合もある。
【０００６】
しかるに、脚体の機構的な可動範囲等の制約上、各脚体の離床・着床動作を２つの脚体で交互に行なう歩行動作又は走行動作では、ロボットの実際の姿勢を適切な姿勢に戻すことが困難となる場合もある。
【０００７】
例えばロボットの上体が右向きに横方向の外力を受けた場合を想定する。この場合、左側の脚体を遊脚とする期間では、該左側の脚体が右側の脚体に干渉しないようにするための該左側の脚体の可動範囲の制約上、該左側の脚体を右側に大きく踏み出すことは一般には困難である。このため、上記外力によって右側に傾く上体の姿勢を左側に戻すような床反力モーメントをロボットに作用させるような目標歩容を生成することが困難となり、ひいては、該ロボットの姿勢の崩れを解消することが困難となる場合が多々ある。このことは、例えばロボットの上体が左向きに横方向の外力を受けた場合でも同様である。
【０００８】
本発明は、かかる背景に鑑みてなされたものであり、歩行動作又は走行動作のように各脚体の離床・着床動作を２つの脚体で交互に行なう動作によって、ロボットの継続的な運動を行なうことが困難となる状況でも、歩行動作又は走行動作と異なる動作形態でロボットの継続的な運動を行ない得るようにすることを可能とする２足移動ロボットの制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の２足移動ロボットの制御装置は、かかる目的を達成するために、上体に関節を介して基端部が連結された２つの脚体を有する２足移動ロボットの目標歩容を生成しつつ、該目標歩容に応じて該ロボットの動作制御を行う制御装置であって、
前記ロボットの動作モードとして、各脚体の離床動作とこれに続く着床動作とから成る離床・着床動作を２つの脚体で交互に行うことにより該ロボットの移動を行なうモードである両脚交互離床・着床動作モードと、２つの脚体のうちの一方の脚体を離床させた状態で、他方の脚体のみにより前記離床・着床動作を行なうことにより該ロボットの移動を行なう片脚ホッピング動作モードとを有し、
前記両脚交互離床・着床動作モードでの前記ロボットの動作中に、該両脚交互離床・着床動作モードでのロボットの運動を継続するために必要な所定の第１条件を満足する前記目標歩容を生成することが可能であるか否かを逐次判断する第１判断手段と、
該第１判断手段の判断結果が否定的となる場合に、前記ロボットの将来の動作モードを前記両脚交互離床・着床動作モードから片脚ホッピング動作モードに変更することによって該ロボットの運動を継続するために必要な所定の第２条件を満足する前記目標歩容を生成することが可能であるか否かを逐次判断する第２判断手段と、
前記第１判断手段の判断結果が肯定的となる場合には、前記ロボットの動作モードを前記両脚交互離床・着床動作モードに維持すると共に、前記第１判断手段の判断結果と第２判断手段の判断結果とがそれぞれ否定的、肯定的となる場合には、前記ロボットの将来の動作モードを、前記両脚交互離床・着床動作モードで現在時刻以後に新たに着床させようとする脚体の着床後に該両脚交互離床・着床動作モードから前記片脚ホッピング動作モードに変更するように、前記第１判断手段及び第２判断手段の判断結果に応じて前記ロボットの動作モードを決定する動作モード決定手段と、
前記決定された動作モードでの前記ロボットの運動を行なわせるように前記目標歩容を生成する目標歩容生成手段とを備え、
前記第１条件は、前記動作モードを前記両脚交互離床・着床動作モードに維持することを前提として前記目標歩容生成手段により前記目標歩容の生成を行なったと仮定した場合に、該両脚交互離床・着床動作モードで現在時刻以後に新たに着床させようとする脚体の該目標歩容における目標着地位置が、該両脚交互離床・着床動作モードに対応する所定の着地許容領域内に存在するという第１Ａ条件と、該目標歩容により規定される前記ロボットの運動軌道が、前記両脚交互離床・着床動作モードでの同じパターンの運動を繰り返す仮想的な周期的歩容の運動軌道に将来において収束させ得る運動軌道となるという第１Ｂ条件と、該目標歩容により規定されるＺＭＰの目標位置が、該目標歩容により規定される前記２つの脚体の運動軌道に応じて設定される所定のＺＭＰ存在許容領域内に存在するという第１Ｃ条件とを少なくとも含み、
前記第２条件は、前記両脚交互離床・着床動作モードで現在時刻以後に新たに着床させようとする脚体の着床後に、前記動作モードを該両脚交互離床・着床動作モードから前記片脚ホッピング動作モードに変更することを前提として前記目標歩容生成手段により前記目標歩容の生成を行なったと仮定した場合に、該両脚交互離床・着床動作モードで新たに着床させようとする脚体の該目標歩容における目標着地位置が、該両脚交互離床・着床動作モードに対応する前記所定の着地許容領域内に存在するという第２Ａ条件と、該目標歩容により規定される前記ロボットの運動軌道が、前記片脚ホッピング動作モードでの同じパターンの運動を繰り返す仮想的な周期的歩容の運動軌道に将来において収束させ得る運動軌道となるという第２Ｂ条件と、該目標歩容により規定されるＺＭＰの目標位置が、該目標歩容により規定される前記他方の脚体の運動軌道に応じて設定される所定のＺＭＰ存在許容領域内に存在するという第２Ｃ条件とを少なくとも含むことを特徴とする（第１発明）。
あるいは、本発明の２足移動ロボットの制御装置は、上体に関節を介して基端部が連結された２つの脚体を有する２足移動ロボットの目標歩容を生成しつつ、該目標歩容に応じて該ロボットの動作制御を行う制御装置であって、
前記ロボットの動作モードとして、各脚体の離床動作とこれに続く着床動作とから成る離床・着床動作を２つの脚体で交互に行うことにより該ロボットの移動を行なうモードである両脚交互離床・着床動作モードと、２つの脚体のうちの一方の脚体を離床させた状態で、他方の脚体のみにより前記離床・着床動作を行なうことにより該ロボットの移動を行なう片脚ホッピング動作モードとを有し、
前記両脚交互離床・着床動作モードでの前記ロボットの動作中に、該両脚交互離床・着床動作モードでのロボットの運動を継続するために必要な所定の第１条件を満足する前記目標歩容を生成することが可能であるか否かを逐次判断する第１判断手段と、
該第１判断手段の判断結果が否定的となる場合に、前記ロボットの将来の動作モードを前記両脚交互離床・着床動作モードから片脚ホッピング動作モードに変更することによって該ロボットの運動を継続するために必要な所定の第２条件を満足する前記目標歩容を生成することが可能であるか否かを逐次判断する第２判断手段と、
前記片脚ホッピング動作モードでの前記ロボットの動作中に、該ロボットの将来の動作モードを前記片脚ホッピング動作モードから前記両脚交互離床・着床動作モードに変更することによって該ロボットの運動を継続するために必要な所定の第３条件を満足する前記目標歩容を生成することが可能であるか否かを逐次判断する第３判断手段と、
該第３判断手段の判断結果が否定的となる場合に、前記片脚ホッピング動作モードでのロボットの運動を継続するために必要な所定の第４条件を満足する前記目標歩容を生成することが可能であるか否かを逐次判断する第４判断手段と、
前記第１判断手段の判断結果が肯定的となる場合には、前記ロボットの動作モードを前記両脚交互離床・着床動作モードに維持すると共に、前記第１判断手段の判断結果と第２判断手段の判断結果とがそれぞれ否定的、肯定的となる場合には、前記ロボットの将来の動作モードを前記両脚交互離床・着床動作モードから前記片脚ホッピング動作モードに変更し、さらに、前記第３判断手段の判断結果が肯定的となる場合には、前記ロボットの将来の動作モードを、前記片脚ホッピング動作モードで現在時刻以後に新たに着床させようとする前記他方の脚体の着床後に該片脚ホッピング動作モードから前記両脚交互離床・着床動作モードに変更すると共に、前記第３判断手段の判断結果と第４判断手段の判断結果とがそれぞれ否定的、肯定的となる場合には、前記ロボットの将来の動作モードを前記片脚ホッピング動作モードに維持するように、前記第１判断手段、第２判断手段、第３判断手段及び第４判断手段の判断結果に応じて前記ロボットの動作モードを決定する動作モード決定手段と、
前記決定された動作モードでの前記ロボットの運動を行なわせるように前記目標歩容を生成する目標歩容生成手段とを備え、
前記第３条件は、前記片脚ホッピング動作モードで現在時刻以後に新たに着床させようとする前記他方の脚体の着床後に、前記動作モードを該片脚ホッピング動作モードから前記両脚交互離床・着床動作モードに変更することを前提として前記目標歩容生成手段により前記目標歩容の生成を行なったと仮定した場合に、該片脚ホッピング動作モードで新たに着床させようとする前記他方の脚体の該目標歩容における目標着地位置が、該片脚ホッピング動作モードに対応する所定の着地許容領域内に存在するという第３Ａ条件と、該目標歩容により規定される前記ロボットの運動軌道が、前記両脚交互離床・着床動作モードでの同じパターンの運動を繰り返す仮想的な周期的歩容の運動軌道に将来において収束させ得る運動軌道となるという第３Ｂ条件と、該目標歩容により規定されるＺＭＰの目標位置が、該目標歩容により規定される前記２つの脚体の運動軌道に応じて設定される所定のＺＭＰ存在許容領域内に存在するという第３Ｃ条件とを少なくとも含み、
前記第４条件は、前記動作モードを前記片脚ホッピング動作モードに維持することを前提として前記目標歩容生成手段により前記目標歩容の生成を行なったと仮定した場合に、該片脚ホッピング動作モードで現在時刻以後に新たに着床させようとする前記他方の脚体の該目標歩容における目標着地位置が、該片脚ホッピング動作モードに対応する前記所定の着地許容領域内に存在するという第４Ａ条件と、該目標歩容により規定される前記ロボットの運動軌道が、前記片脚ホッピング動作モードでの同じパターンの運動を繰り返す仮想的な周期的歩容の運動軌道に将来において収束させ得る運動軌道となるという第４Ｂ条件と、該目標歩容により規定されるＺＭＰの目標位置が、該目標歩容により規定される前記他方の脚体の運動軌道に応じて設定される所定のＺＭＰ存在許容領域内に存在するという第４Ｃ条件とを少なくとも含むことを特徴とする（第２発明）。
【００１０】
かかる第１発明又は第２発明によれば、前記両脚交互離床・着床動作モードでの前記ロボットの動作中に、前記第１判断手段の判断処理が逐次実行される。そして、この第１判断手段の判断結果が否定的となる場合は、両脚交互離床・着床動作モードでのロボットの運動を継続するための適切な目標歩容（前記第１条件を満足する目標歩容）を生成することができず、両脚交互離床・着床動作モードでのロボットの運動を継続することが困難となると判断される場合である。
【００１１】
この場合には、前記第２判断手段の判断処理が実行され、前記ロボットの将来の動作モードを前記両脚交互離床・着床動作モードから片脚ホッピング動作モードに変更することによって該ロボットの運動を継続するために必要な所定の第２条件を満足する前記目標歩容を生成することが可能であるか否かが逐次判断される。
【００１２】
ここで、前記片脚ホッピング動作モードでのロボットの運動は、２つの脚体のうちの一方の脚体を離床させた状態で、他方の脚体のみにより前記離床・着床動作を行なう運動であるから、該一方の脚体と他方の脚体との干渉を生じることが無い。このため、片脚ホッピング動作モードでは、特に、ロボットの横方向（前記２つの脚体の並列方向）への移動の自由度が前記両脚交互離床・着床動作モードでのロボットの運動に比して高まることとなる。
【００１３】
このため、両脚交互離床・着床動作モードでのロボットの運動を継続することが困難となる場合でも、動作モードを片脚ホッピング動作モードに変更することによって、該ロボットの運動を継続するための適切な目標歩容（前記第２条件を満足する目標歩容）を生成することが可能となる場合がある。そして、このような場合に、前記第２判断手段の判断結果が肯定的となる。
【００１４】
そこで、第１発明又は第２発明では、前記動作モード決定手段は、前記第１判断手段の判断結果が肯定的となる場合には、前記ロボットの動作モードを前記両脚・交互着床動作モードに維持する一方、前記第１判断手段の判断結果と第２判断手段の判断結果とがそれぞれ否定的、肯定的となる場合には、前記ロボットの将来の動作モードを前記両脚交互離床・着床動作モードから片脚ホッピング動作モードに変更する。
【００１５】
そして、前記目標歩容生成手段は、前記決定された動作モードでの前記ロボットの運動を行なわせるように前記目標歩容を生成する。すなわち、該目標歩容生成手段は、決定された動作モードが両脚交互離床・着床動作モードである場合には、その動作モードでのロボットの運動を行なわせる目標歩容を生成する。また、該目標歩容生成手段は、決定された動作モードが片脚ホッピング動作モードである場合には、その動作モードでのロボットの運動を行なわせる目標歩容を生成する。そして、この目標歩容に応じてロボットの動作制御が行なわれる。すなわち、ロボットの実際の歩容が目標歩容に追従するようにロボットの動作制御が行われる。
【００１６】
これにより、第１発明又は第２発明によれば、両脚交互離床・着床動作モードでのロボットの運動を継続することが困難となる場合に、片脚ホッピング動作モードでのロボットの運動を行なうことができることとなる。よって、第１発明又は第２発明によれば、歩行動作又は走行動作のように各脚体の離床・着床動作を２つの脚体で交互に行なう動作によって、ロボットの継続的な運動を行なうことが困難となる状況でも、歩行動作又は走行動作と異なる動作形態（片脚ホッピング動作モードの動作形態）でロボットの継続的な運動を行ない得るようにすることができる。
【００１７】
かかる第１発明においては、前記動作モードが片脚ホッピング動作モードに変更された後に、該片脚ホッピング動作モードでのロボットの運動を継続するようにすることも可能であるが、２足移動ロボットでは、片脚ホッピング動作モードでの運動よりも両脚交互・離床着床動作モードでの運動の方が、一般には、ロボットの姿勢の安定性を確保し易いと共に、ロボットの脚体の関節等にかかる負荷が少なくなりやすい。
【００１８】
そこで、第２発明では、前記片脚ホッピング動作モードでの前記ロボットの動作中に、該ロボットの将来の動作モードを前記片脚ホッピング動作モードから前記両脚交互離床・着床動作モードに変更することによって該ロボットの運動を継続するために必要な所定の第３条件を満足する前記目標歩容を生成することが可能であるか否かを逐次判断する第３判断手段と、該第３判断手段の判断結果が否定的となる場合に、前記片脚ホッピング動作モードでのロボットの運動を継続するために必要な所定の第４条件を満足する前記目標歩容を生成することが可能であるか否かを逐次判断する第４判断手段とをさらに備え、前記動作モード決定手段は、前記第３判断手段の判断結果が肯定的となる場合には、前記ロボットの将来の動作モードを前記片脚ホッピング動作モードから前記両脚交互離床・着床動作モードに変更すると共に、前記第３判断手段の判断結果と第４判断手段の判断結果とがそれぞれ否定的、肯定的となる場合には、前記ロボットの将来の動作モードを前記片脚ホッピング動作モードに維持するように、前記第３判断手段及び第４判断手段の判断結果に応じて前記ロボットの動作モードを決定する。
【００１９】
この第２発明によれば、前記片脚ホッピング動作モードでの前記ロボットの動作中に、前記第３判断手段の判断処理が実行される。そして、この第３判断手段の判断結果が肯定的となる場合、すなわち、ロボットの将来の動作モードを前記片脚ホッピング動作モードから前記両脚交互離床・着床動作モードに変更することによって該ロボットの運動を継続するための適切な目標歩容（前記第３条件を満足する目標歩容）を生成することができると判断される場合には、前記動作モード決定手段は、前記動作モードを片脚ホッピング動作モードから前記両脚交互離床・着床動作モードに戻す。
【００２０】
これにより、第２発明によれば、動作モードを両脚交互離床・着床動作モードを片脚ホッピング動作モードに変更した後に、両脚交互離床・着床動作モードでのロボットの運動を継続的に行うことができる適切な目標歩容を生成得る状況になれば、ロボットの動作モードを両脚交互離床・着床動作モードに復帰させることができる。
【００２１】
また、第２発明では、前記第３判断手段の判断結果が否定的となる場合には、前記第４判断手段の判断処理が実行され、前記片脚ホッピング動作モードでのロボットの運動を継続するために適切な目標歩容（前記第３条件を満足する前記目標歩容）を生成することが可能であるか否かが逐次判断される。そして、この第４判断手段の判断結果が肯定的となる場合に、前記動作モード決定手段は、前記動作モードを片脚ホッピング動作モードに維持する。このため、両脚交互離床・着床動作モードでのロボットの運動を継続的に行なうことが困難となる状況が続いている場合には、片脚ホッピング動作でのロボットの運動を極力継続させることができる。
【００２２】
上記第１発明では、前記動作モード決定手段は、前記第１判断手段の判断結果と第２判断手段の判断結果とがそれぞれ否定的、肯定的となる場合に、前記両脚交互離床・着床動作モードで現在時刻以後に新たに着床させようとする脚体の着床後に前記ロボットの動作モードを該両脚交互離床・着床動作モードから前記片脚ホッピング動作モードに変更する。
【００２３】
また、上記第２発明では、前記動作モード決定手段は、前記第３判断手段の判断結果が肯定的となる場合に、前記片脚ホッピング動作モードで現在時刻以後に新たに着床させようとする前記他方の脚体の着床後に前記ロボットの動作モードを該片脚ホッピング動作モードから前記両脚交互離床・着床動作モードに変更する。
【００２４】
これらの第１発明及び第２発明によれば、ロボットの運動が急激に変化しないようにしつつ、ロボットの動作モードを変更することができる。
【００２５】
前記第１条件や、第２条件、第３条件、第４条件は、前記目標歩容の生成の仕方等に依存して種々様々な条件を採用することが可能であるが、典型的な形態として、例えば次のような条件を採用する。
【００２６】
すなわち、例えば前記第１発明において、前記第１条件は、前記動作モードを前記両脚交互離床・着床動作モードに維持することを前提として前記目標歩容生成手段により前記目標歩容の生成を行なったと仮定した場合に、該両脚交互離床・着床動作モードで現在時刻以後に新たに着床させようとする脚体の該目標歩容における目標着地位置が、該両脚交互離床・着床動作モードに対応する所定の着地許容領域内に存在するという第１Ａ条件と、該目標歩容により規定される前記ロボットの運動軌道が、前記両脚交互離床・着床動作モードでの同じパターンの運動を繰り返す仮想的な周期的歩容の運動軌道に将来において収束させ得る運動軌道となるという第１Ｂ条件と、該目標歩容により規定されるＺＭＰの目標位置が、該目標歩容により規定される前記２つの脚体の運動軌道に応じて設定される所定のＺＭＰ存在許容領域内に存在するという第１Ｃ条件とを少なくとも含み、前記第２条件は、前記両脚交互離床・着床動作モードで現在時刻以後に新たに着床させようとする脚体の着床後に、前記動作モードを該両脚交互離床・着床動作モードから前記片脚ホッピング動作モードに変更することを前提として前記目標歩容生成手段により前記目標歩容の生成を行なったと仮定した場合に、該両脚交互離床・着床動作モードで新たに着床させようとする脚体の該目標歩容における目標着地位置が、該両脚交互離床・着床動作モードに対応する前記所定の着地許容領域内に存在するという第２Ａ条件と、該目標歩容により規定される前記ロボットの運動軌道が、前記片脚ホッピング動作モードでの同じパターンの運動を繰り返す仮想的な周期的歩容の運動軌道に将来において収束させ得る運動軌道となるという第２Ｂ条件と、該目標歩容により規定されるＺＭＰの目標位置が、該目標歩容により規定される前記他方の脚体の運動軌道に応じて設定される所定のＺＭＰ存在許容領域内に存在するという第２Ｃ条件とを少なくとも含む。
【００２７】
この第１発明によれば、前記動作モードを前記両脚交互離床・着床動作モードに維持することを前提として前記目標歩容生成手段により前記目標歩容の生成を行なったと仮定した場合における脚体の運動に関する運動学的な制約要件、ロボットの運動の継続性を確保するための必要要件、ロボットの動力学的な制約要件を、それぞれ前記第１Ａ条件、第１Ｂ条件、第１Ｃ条件に反映させることができる。このため、前記両脚交互離床・着床動作モードでのロボットの運動を継続するために適切な目標歩容を生成することが可能であるか否かを前記第１判断手段によって判断するときに、信頼性の高い判断を行なうことができる。
【００２８】
同様に、前記両脚交互離床・着床動作モードで現在時刻以後に新たに着床させようとする脚体の着床後に、前記動作モードを該両脚交互離床・着床動作モードから前記片脚ホッピング動作モードに変更することを前提として前記目標歩容生成手段により前記目標歩容の生成を行なったと仮定した場合における脚体の運動に関する運動学的な制約要件、ロボットの運動の継続性を確保するための必要要件、ロボットの動力学的な制約要件を、それぞれ前記第２Ａ条件、第２Ｂ条件、第２Ｃ条件に反映させることができる。このため、前記ロボットの将来の動作モードを前記両脚交互離床・着床動作モードから片脚ホッピング動作モードに変更することによって該ロボットの運動を継続するために適切な目標歩容を生成することが可能であるか否かを前記第２判断手段によって判断するときに、信頼性の高い判断を行なうことができる。
【００２９】
また、例えば前記第２発明においては、前記第３条件は、前記片脚ホッピング動作モードで現在時刻以後に新たに着床させようとする前記他方の脚体の着床後に、前記動作モードを該片脚ホッピング動作モードから前記両脚交互離床・着床動作モードに変更することを前提として前記目標歩容生成手段により前記目標歩容の生成を行なったと仮定した場合に、該片脚ホッピング動作モードで新たに着床させようとする前記他方の脚体の該目標歩容における目標着地位置が、該片脚ホッピング動作モードに対応する所定の着地許容領域内に存在するという第３Ａ条件と、該目標歩容により規定される前記ロボットの運動軌道が、前記両脚交互離床・着床動作モードでの同じパターンの運動を繰り返す仮想的な周期的歩容の運動軌道に将来において収束させ得る運動軌道となるという第３Ｂ条件と、該目標歩容により規定されるＺＭＰの目標位置が、該目標歩容により規定される前記２つの脚体の運動軌道に応じて設定される所定のＺＭＰ存在許容領域内に存在するという第３Ｃ条件とを少なくとも含み、前記第４条件は、前記動作モードを前記片脚ホッピング動作モードに維持することを前提として前記目標歩容生成手段により前記目標歩容の生成を行なったと仮定した場合に、該片脚ホッピング動作モードで現在時刻以後に新たに着床させようとする前記他方の脚体の該目標歩容における目標着地位置が、該片脚ホッピング動作モードに対応する前記所定の着地許容領域内に存在するという第４Ａ条件と、該目標歩容により規定される前記ロボットの運動軌道が、前記片脚ホッピング動作モードでの同じパターンの運動を繰り返す仮想的な周期的歩容の運動軌道に将来において収束させ得る運動軌道となるという第４Ｂ条件と、該目標歩容により規定されるＺＭＰの目標位置が、該目標歩容により規定される前記他方の脚体の運動軌道に応じて設定される所定のＺＭＰ存在許容領域内に存在するという第４Ｃ条件とを少なくとも含む。
【００３０】
この第２発明によれば、前記片脚ホッピング動作モードで現在時刻以後に新たに着床させようとする前記他方の脚体の着床後に、前記動作モードを該片脚ホッピング動作モードから前記両脚交互離床・着床動作モードに変更することを前提として前記目標歩容生成手段により前記目標歩容の生成を行なったと仮定した場合における脚体の運動に関する運動学的な制約要件、ロボットの運動の継続性を確保するための必要要件、ロボットの動力学的な制約要件を、それぞれ前記第３Ａ条件、第３Ｂ条件、第３Ｃ条件に反映させることができる。このため、ロボットの将来の動作モードを前記片脚ホッピング動作モードから前記両脚交互離床・着床動作モードに変更することによって該ロボットの運動を継続するために適切な目標歩容を生成することが可能であるか否かを前記第３判断手段によって判断するときに、信頼性の高い判断を行なうことができる。
【００３１】
同様に、前記動作モードを前記片脚ホッピング動作モードに維持することを前提として前記目標歩容生成手段により前記目標歩容の生成を行なったと仮定した場合における脚体の運動に関する運動学的な制約要件、ロボットの運動の継続性を確保するための必要要件、ロボットの動力学的な制約要件を、それぞれ前記第４Ａ条件、第４Ｂ条件、第４Ｃ条件に反映させることができる。このため、前記片脚ホッピング動作モードでのロボットの運動を継続するために適切な目標歩容を生成することが可能であるか否かを前記第４判断手段によって判断するときに、信頼性の高い判断を行なうことができる。
【００３２】
なお、前記第１判断手段及び第２判断手段の判断結果がいずれも否定的となる場合、あるいは、前記第３判断手段及び第４判断手段の判断結果がいずれも否定的となる場合には、例えば、ロボットの全体重心（全体の重心点）を下降させるように該ロボットの目標歩容を生成することが考えられる。このようにすることによって、両脚交互離床・着床動作モード及び片脚ホッピング動作モードのいずれの動作モードでも、ロボットの姿勢の崩れを回避することが困難となる状況で、ロボットが転倒した場合に該ロボットが受ける衝撃を低減することができる。
【００３３】
ところで、詳細は後述するが、２足移動ロボットに前記片脚ホッピング動作モードでの運動を行なわせる場合においては、離床・着床動作を行なう前記他方の脚体が離床後に着床した状態において、ラテラルプレーン（前額面）で見たロボットの上体の体幹軸がほぼ鉛直方向に向いている場合（上体の姿勢が上記直立姿勢もしくはこれに近い姿勢である場合）には、特に、当該他方の脚体が着床した直後の期間において、ロボットに作用する重力と鉛直方向の慣性力とに起因して（換言すればこれらの重力と慣性力との合力に釣り合う床反力に起因して）、当該他方の脚体の基端部の関節に対して、ロボットの前後方向の軸周り（ロール軸周り）で比較的大きなモーメントが作用しやすい。ひいては、当該他方の脚体の基端部の関節又はこれを駆動するアクチュエータの大型化や、重量の増大化を招きやすい。
【００３４】
そこで、前記第１発明又は第２発明においては、前記目標歩容生成手段は、前記片脚ホッピング動作で運動を前記ロボットに行わせる前記目標歩容を生成するとき、前記他方の脚体の離床後の着床状態において、前記他方の脚体（以降、支持脚側脚体ということがある）の基端部よりも前記一方の脚体（以降、遊脚側脚体ということがある）の基端部の方が相対的に高い位置に存在することとなる前記目標歩容を生成することが好ましい（第３発明）。
【００３５】
ここで、前記支持脚側脚体の基端部の高さと前記遊脚側脚体の基端部の高さとの差が無い状態でのロボットの上体の姿勢は、該ロボットが直立姿勢で起立している状態での上体の姿勢に相当する。
【００３６】
このため、第３発明では、支持脚側脚体の離床後の着床状態において、前記目標歩容生成手段が上記の如く生成する目標歩容における上体の姿勢は、上記直立姿勢での上体の姿勢よりも、該上体の上部寄りの部分が、支持脚側脚体の基端部の直上に近づくように傾斜した姿勢となる。
【００３７】
このように傾斜した上体の姿勢においては、ロボットの全体の重心点と支持脚側脚体の基端部との間の水平方向の距離は、上体の姿勢が上記直立姿勢に対応する姿勢である場合に比して短いものとなる。
【００３８】
この結果、片脚ホッピング動作モードでの支持脚側脚体の離床後の着床状態において、ロボットに作用する重力と鉛直方向の慣性力との合力、又はその合力に釣り合う床反力に起因して、支持脚側脚体の基端部の関節に大きなモーメントが作用するのが抑制されることとなる。
【００３９】
よって第３発明によれば、２足移動ロボットに片脚ホッピング動作モードでの運動を行なわせるときに、離床・着床動作を行なう脚体の基端部の関節に大きなモーメントが作用するのを防止することができる。
【００４０】
また、前記第１発明又は第２発明において、前記目標歩容生成手段は、前記片脚ホッピング動作での運動を前記ロボットに行わせる前記目標歩容を生成するとき、前記他方の脚体の離床後の着床状態において、前記ロボットの全体の重心点と前記他方の脚体の基端部との水平方向距離が、前記ロボットが直立姿勢で起立している状態での当該水平方向距離よりも短くなる前記目標歩容を生成するようにしてもよい（第４発明）。
【００４１】
この第４発明によれば、前記目標歩容生成手段は、前記片脚ホッピング動作での運動を前記ロボットに行わせるとき、前記他方の脚体（支持脚側脚体）の離床後の着床状態において、上記の如く目標歩容を生成する。このため、支持脚側脚体の離床後の着床状態において生成される目標歩容にあっては、第３発明と同様に、ロボットの全体の重心点と支持脚側脚体の基端部との間の水平方向の距離は、上体の姿勢が上記直立姿勢に対応する姿勢である場合に比して短いものとなる。
【００４２】
この結果、片脚ホッピング動作モードでの支持脚側脚体の離床後の着床状態において、ロボットに作用する重力と鉛直方向の慣性力との合力、又はその合力に釣り合う床反力に起因して、支持脚側脚体の基端部の関節に大きなモーメントが作用するのが抑制されることとなる。
【００４３】
よって第４発明によれば、２足移動ロボットに片脚ホッピング動作モードでの運動を行なわせるときに、離床・着床動作を行なう脚体の基端部の関節に大きなモーメントが作用するのを防止することができる。
【００４４】
上記第３発明又は第４発明においては、前記他方の脚体の離床後の着床状態において前記目標歩容生成手段が生成する目標歩容は、前記ロボットの全体の重心点と、該他方の脚体の基端部とが、該他方の脚体の接地面の直上で上下に並ぶように配置される目標歩容であることが好ましい（第５発明）。
【００４５】
この第５発明によれば、前記基端部に作用するモーメントをほぼゼロにすることができ、前記基端部の関節を駆動するアクチュエータ（例えばモータ）の負荷を軽減することができる。
【図面の簡単な説明】
【００４６】
【図１】本発明の実施形態における２足移動ロボットの全体的構成の概略を示す図。
【図２】図１のロボットに備えた制御ユニットの構成を示すブロック図。
【図３】図２の制御ユニットの機能的構成を示すブロック図。
【図４】図３に示す補償全床反力モーメント分配器の処理を示すブロック図。
【図５】歩行歩容の運動パターンを例示する説明図。
【図６】走行歩容の運動パターンを例示する説明図。
【図７】片脚ホッピング歩容の運動パターンを例示する説明図。
【図８】非常用歩容の運動パターンを例示する説明図。
【図９】歩容生成に使用する動力学モデルを示す図。
【図１０】図３に示す歩容生成装置のメインルーチン処理を示すフローチャート。
【図１１】図１０のＳ０２０のサブルーチン処理を示すフローチャート。
【図１２】図１１のＳ０４０又はＳ０４６のサブルーチン処理を示すフローチャート。
【図１３】図１３（ａ），（ｂ）は、支持脚が右側脚体である場合と左側脚体である場合とで両脚交互離床・着床歩容での幾何学的着地許容領域を示す図。
【図１４】片脚ホッピング歩容での幾何学的着地許容領域を示す図。
【図１５】両脚交互離床・着床歩容でのロボットの足平の着地位置姿勢と支持脚座標系とを例示する図。
【図１６】図１２のＳ０６２のサブルーチン処理を示すフローチャート。
【図１７】定常歩容（走行歩容又は片脚ホッピング歩容）での目標床反力鉛直成分軌道の設定例を示すグラフ。
【図１８】定常歩容（走行歩容又は片脚ホッピング歩容）での床反力水平成分許容範囲の設定例を示すグラフ。
【図１９】定常歩容（走行歩容）での目標ＺＭＰ軌道の設定例を示すグラフ。
【図２０】図１２のＳ０６４のサブルーチン処理を示すフローチャート。
【図２１】図２０のＳ２０８のサブルーチン処理を示すフローチャート。
【図２２】図２１のＳ３０６のサブルーチン処理を示すフローチャート。
【図２３】図２２のＳ４１２のサブルーチン処理を示すフローチャート。
【図２４】図２３のＳ５１８で設定する上体姿勢復元モーメントＺＭＰ換算値のパターンの設定例を示すグラフ。
【図２５】図１２のＳ０６６のサブルーチン処理を示すフローチャート。
【図２６】今回歩容（走行歩容又は片脚ホッピング歩容）の床反力鉛直成分の設定例を示すグラフ。
【図２７】今回歩容（走行歩容又は片脚ホッピング歩容）の床反力水平成分許容範囲の設定例を示すグラフ。
【図２８】今回歩容（走行歩容）の仮目標ＺＭＰ軌道とそのの修正処理とを説明するためのグラフ。
【図２９】図１２のＳ０６８のサブルーチン処理を示すフローチャート。
【図３０】図２９のＳ７０２のサブルーチン処理を示すフローチャート。
【図３１】図３０のＳ８０６のサブルーチン処理を示すフローチャート。
【図３２】図３１のＳ９１２のサブルーチン処理を示すフローチャート。
【図３３】片脚ホッピング歩容におけるロボットの足平の着地位置姿勢と支持脚座標系とを例示する図。
【図３４】片脚ホッピング歩容におけるＸ軸周り（ロール方向）の基準上体姿勢角の設定例を示すグラフ。
【図３５】図３４に示す基準上体姿勢角の設定指針を説明するための図。
【図３６】図３４に示す基準上体姿勢角に対応するロボットの動作状態を示す図。
【図３７】両脚交互離床・着床歩容から片脚ホッピング歩容に移行する場合におけるＸ軸周り（ロール方向）の基準上体姿勢角の設定例を示すグラフ。
【図３８】片脚ホッピング歩容から両脚交互離床・着床歩容に移行する場合におけるＸ軸周り（ロール方向）の基準上体姿勢角の設定例を示すグラフ。
【発明を実施するための形態】
【００４７】
以下、本発明の一実施形態を説明する。
【００４８】
図１に示す如く、本実施形態の２足移動ロボット１（以下、単にロボット１という）は、基体としての上体２４と、この上体２４から延設された左右一対の脚体（脚部リンク）２Ｒ，２Ｌとを備える左右対称構造のロボットである。なお、本実施形態の説明では、符号「Ｒ」，「Ｌ」はそれぞれ右側脚体、左側脚体に対応するものであることを示す。
【００４９】
上体２４は、両脚体２Ｒ，２Ｌの基端部（上端部）に後述する腰関節（股関節）を介して連結されており、両脚体２Ｒ，２Ｌのうちの接地した脚体によって床面の上方に支持される。
【００５０】
両脚体２Ｒ，２Ｌは同一構造であり、それぞれ６個の関節を備える。その６個の関節は上体２４側から順に、腰（股）の回旋用（上体２４に対するヨー方向の回転用）の関節１０Ｒ，１０Ｌと、腰（股）のロール方向（Ｘ軸まわり）の回転用の関節１２Ｒ，１２Ｌと、腰（股）のピッチ方向（Ｙ軸まわり）の回転用の関節１４Ｒ，１４Ｌと、膝部のピッチ方向の回転用の関節１６Ｒ，１６Ｌと、足首部のピッチ方向の回転用の関節１８Ｒ，１８Ｌと、足首部のロール方向の回転用の関節２０Ｒ，２０Ｌとから構成される。
【００５１】
なお、上記Ｘ軸、Ｙ軸、Ｚ軸は、後述する支持脚座標系の３つの座標軸を意味する。この支持脚座標系のＸ軸方向、Ｙ軸方向は、水平面上で互いに直交する２軸方向であり、Ｘ軸方向はロボット１の前後方向（ロール軸方向）、Ｙ軸方向はロボット１の左右方向（ピッチ軸方向）に相当する。また、Ｚ軸方向は鉛直方向（重力方向）であり、ロボット１の上下方向（ヨー軸方向）に相当する。
【００５２】
各脚体２Ｒ（Ｌ）の関節１０Ｒ（Ｌ），１２Ｒ（Ｌ），１４Ｒ（Ｌ）によって３自由度の腰関節（股関節）が構成され、関節１６Ｒ（Ｌ）によって１自由度の膝関節が構成され、関節１８Ｒ（Ｌ），２０Ｒ（Ｌ）によって２自由度の足首関節が構成されている。
【００５３】
そして、腰関節（股関節）１０Ｒ（Ｌ），１２Ｒ（Ｌ），１４Ｒ（Ｌ）と膝関節１６Ｒ（Ｌ）とは大腿リンク２８Ｒ（Ｌ）で連結され、膝関節１６Ｒ（Ｌ）と足首関節１８Ｒ（Ｌ），２０Ｒ（Ｌ）とは下腿リンク３０Ｒ（Ｌ）で連結されている。また、各脚体２Ｒ（Ｌ）の足首関節１８Ｒ（Ｌ），２０Ｒ（Ｌ）の下部に、各脚体２Ｒ（Ｌ）の先端部（下端部）を構成する足平２２Ｒ（Ｌ）が取着されている。また、各脚体２Ｒ（Ｌ）の上端部（基端部）が、腰関節（股関節）１０Ｒ（Ｌ），１２Ｒ（Ｌ），１４Ｒ（Ｌ）を介して上体２４に連結されている。
【００５４】
上記した各関節は、公知の構造のものでよい。この場合、各関節を回転駆動するアクチュエータは、例えば、減速機を備える電動モータ４２（図２参照）により構成される。
【００５５】
なお、本実施形態では、各脚体２Ｒ（Ｌ）の足首関節１８Ｒ（Ｌ），２０Ｒ（Ｌ）と足平２２Ｒ（Ｌ）との間には、図示を省略するゴムやばね等の弾性体を内蔵するばね機構部３２が介装されている。また、各足平２２Ｒ（Ｌ）の底面には、ゴム等からなる足底弾性体３４が取付けられている。これらのばね機構部３２及び足底弾性体３４は、各脚体２Ｒ（Ｌ）が受ける床反力により弾性変形することによって、緩衝機構又はコンプライアンス機構として機能する。
【００５６】
各脚体２Ｒ（Ｌ）の上記構成により、各脚体２Ｒ（Ｌ）の足平２２Ｒ（Ｌ）は、上体２４に対して６自由度を有する。そして、ロボット１の移動に際して両脚体２Ｒ，２Ｌを合わせて６＊２＝１２個（本明細書で「＊」はスカラに対する演算においては乗算を示し、ベクトルに対する演算においては外積を示す）の関節をそれぞれ適宜な角度に駆動することで、両足平２２Ｒ，２２Ｌの所望の運動を行なうことができる。これにより、ロボット１は歩行動作や走行動作等、３次元空間を移動する運動を行うことが可能となっている。
【００５７】
なお、図示は省略するが、本実施形態では、上体２４の上部の両側部には左右一対の腕体が取り付けられると共に、上体２４の上端部には頭部が搭載される。そして、各腕体は、それに備える複数の関節（肩関節、肘関節、手首関節など）によって、該腕体を上体２４に対して前後に振る等の運動を行なうことが可能となっている。ただし、これらの腕体および頭部は無くてもよい。
【００５８】
上体２４の内部にはロボット１の動作制御を行う制御ユニット２６が格納されている。なお、図１では図示の便宜上、制御ユニット２６を上体２４の外部に記載している。
【００５９】
各脚体２Ｒ（Ｌ）の足首関節１８Ｒ（Ｌ），２０Ｒ（Ｌ）と前記ばね機構部３２との間には、足平２２Ｒ（Ｌ）に作用する床反力を計測するための６軸力センサ３６が介装されている。この６軸力センサ３６は、足平２２Ｒ（Ｌ）から伝達される床反力の３軸方向の並進力成分及び３軸まわりのモーメント成分を検出し、その検出信号を制御ユニット２６に出力する。
【００６０】
上体２４には、鉛直方向（重力方向）に対する上体２４の傾斜角（ロール方向及びピッチ方向の傾斜角）とその変化速度（角速度）とを計測するための傾斜センサ３８が搭載されている。この傾斜センサ３８は、より詳しくは、加速度センサとジャイロセンサ等のレートセンサ（角速度センサ）とから構成され、これらのセンサの検出信号を制御ユニット２６に出力する。そして、制御ユニット２６において、傾斜センサ３８の出力を基に、公知の手法によって鉛直方向に対する上体２４の傾斜角と角速度とが計測される。
【００６１】
また、各関節を回転駆動する電動モータ４２（図２参照）には、各関節の回転角を検出するためのエンコーダ（ロータリエンコーダ）４０（図２参照）が付設され、該エンコーダ４０の検出信号が制御ユニット２６に出力される。
【００６２】
図２を参照して、制御ユニット２６はマイクロコンピュータを有する電子回路ユニットにより構成されており、ＣＰＵからなる第１演算装置５０及び第２演算装置５２、Ａ／Ｄ変換器５４、カウンタ５６、Ｄ／Ａ変換器５８、ＲＡＭ６０、ＲＯＭ６２、並びにこれらの間のデータ授受を行なうバスライン６４を備えている。
【００６３】
この制御ユニット２６では、前記６軸力センサ３６及び傾斜センサ３８の出力はＡ／Ｄ変換器５４でデジタル値に変換された後、バスライン６４を介してＲＡＭ６０に入力される。また、ロボット１の各関節のエンコーダ（ロータリエンコーダ）４０の出力はカウンタ５６を介してＲＡＭ６０に入力される。
【００６４】
前記第１演算装置５０は、後述する目標歩容を生成すると共に、関節変位指令（各関節の回転角の目標値）を算出し、ＲＡＭ６０に送出する。また、第２演算装置５２はＲＡＭ６０から関節変位指令と、前記エンコーダ４０の出力からカウンタ５６を介して計測された実関節変位（各関節の回転角の実測値）とを読み出し、該実関節変位を関節変位指令に追従させるために必要な各関節の電動モータ４２の駆動指令（電動モータ４２の出力トルクを規定する指令値）を算出する。
【００６５】
そして、第２演算装置５２は、その算出した駆動指令をＤ／Ａ変換器５８を介して電動モータ４２の駆動用のサーボアンプ４４に出力する。このとき、サーボアンプ４４は、入力された駆動指令に応じて電動モータ４２を駆動する（電動モータ４２に通電する）。これにより、各関節の実関節変位が関節変位指令に追従するように制御される。
【００６６】
次に、図３のブロック図を参照して、本実施形態におけるロボット１の制御ユニット２６が実行する処理をより具体的に説明する。図３中の「実ロボット」以外の部分が制御ユニット２６が実行する処理（主として第１演算装置５０及び第２演算装置５２の処理）によって実現される機能である。
【００６７】
なお、図３では、便宜上、ロボット１に搭載された前記の各センサの出力から制御ユニット２６が認識する実測値（実関節変位など）が実ロボット１から出力されるものとして示している。また、以下の説明では、脚体２Ｒ，２Ｌの左右を特に区別する必要がないときは、前記符号Ｒ，Ｌを省略する。
【００６８】
制御ユニット２６は、後述の如く目標歩容を自在かつリアルタイムに生成して出力する歩容生成装置１００を備えている。
【００６９】
この歩容生成装置１００が出力する目標歩容は、ロボット１の各関節の変位量（回転角）の目標値の時系列パターンを規定する目標運動軌道（目標運動の軌道）と、ロボット１に作用させるべき外力に関する目標軌道とから構成される。
【００７０】
目標運動軌道は、本実施形態では、目標上体位置姿勢軌道（上体２４の目標位置及び目標姿勢の軌道）と目標足平位置姿勢軌道（各足平２２の目標位置及び目標姿勢の軌道）と目標腕姿勢軌道（各腕体の目標姿勢の軌道）とから構成される。また、外力に関する目標軌道は、目標全床反力中心点（目標ＺＭＰ）軌道と目標全床反力軌道とから構成される。なお、脚体２や腕体以外に、上体２４に対して可動な部位を備える場合には、その可動部位の目標位置姿勢軌道が上記目標運動軌道に加えられる。
【００７１】
ここで、上記目標歩容に係わる用語について補足しておく。なお、以下の説明では、誤解を生じるおそれがない場合には、しばしば「目標」を省略する。
【００７２】
目標歩容における「軌道」は時間的変化のパターン（瞬時値の時系列パターン）を意味する。
【００７３】
上体２４の位置及び速度は、上体２４のあらかじめ定めた代表点（例えば左右の股関節の間の中央点等）の位置及びその移動速度を意味する。同様に、各足平２２の位置及び速度は、各足平２２のあらかじめ定めた代表点の位置及びその移動速度を意味する。各足平２２の代表点は、本実施形態では、各足平２２の底面上の点、例えば、各脚体２の足首関節の中心から各足平２２の底面への垂線が該底面と交わる点に設定される。
【００７４】
また、「姿勢」は空間的な向きを意味する。例えば上体姿勢は鉛直方向に対するロール方向（Ｘ軸まわり）の上体２４の傾斜角（姿勢角）とピッチ方向（Ｙ軸まわり）の上体２４の傾斜角（姿勢角）とで表され、足平姿勢は各足平２２に固定的に設定された２軸の空間的な方位角で表される。本明細書では、上体姿勢は上体姿勢角ということもある。なお、上体姿勢にヨー方向（Ｚ軸まわり）の上体２４の回転角を含めてもよい。
【００７５】
また、各足平２２に作用する床反力（並進力及びモーメントからなる床反力）を「各足平床反力」と呼び、ロボット１の全て（２つ）の足平２２Ｒ，２２Ｌについての「各足平床反力」の合力を「全床反力」という。ただし、以下の説明においては、各足平床反力はほとんど言及しないので、特にことわらない限り、「床反力」は「全床反力」と同義として扱う。
【００７６】
目標床反力は、一般には、作用点と、その作用点に作用する並進力及びモーメントとにより表現される。但し、本実施形態では、説明の便宜上、作用点と、その作用点に作用する並進力及びモーメントを区別し、目標床反力には作用点は含まれないものとする。そして、本実施形態では、目標床反力中心点を目標床反力の作用点とする。この場合、目標床反力のモーメント成分は、鉛直成分（Ｚ軸周りのモーメント成分）を除いて零になる。
【００７７】
なお、以降の説明では、床反力の並進力成分（並進床反力）の鉛直成分及び水平成分をそれぞれ、床反力鉛直成分、床反力水平成分という。また、床反力のモーメント成分（床反力モーメント）の鉛直成分及び水平成分をそれぞれ、床反力モーメント鉛直成分、床反力モーメント水平成分という。
【００７８】
ＺＭＰ（Zero Moment Point）は、ロボット１の運動によって発生する慣性力とロボット１に作用する重力との合力がその点まわりに作用するモーメントの水平成分（水平軸まわりのモーメント成分）が零になる床面上の点を意味する。動力学的平衡条件を満足する歩容では、ＺＭＰと床反力中心点とは一致する。このため、本実施形態では、目標床反力中心点を、しばしば目標ＺＭＰと称する。
【００７９】
なお、本実施形態では、目標歩容のうち、目標上体位置姿勢、目標足平位置姿勢、目標全床反力中心点（目標ＺＭＰ）、目標全床反力は、ロボット１の動作環境（外界）の床に対して固定されるグローバル座標系としての後述の支持脚座標系で記述される。また、目標腕姿勢は、上体２４に対する相対的な姿勢として記述される。
【００８０】
歩容生成装置１００により生成される目標歩容（その生成処理の詳細は後述する）のうち、目標上体位置姿勢軌道と目標腕姿勢軌道とは、ロボット幾何学モデル（キネマティクス演算部）１０２に入力される。
【００８１】
また、目標足平位置姿勢軌道、目標床反力中心点軌道（目標ＺＭＰ軌道）、および目標床反力軌道（詳細には目標並進床反力鉛直成分軌道、目標並進床反力水平成分軌道、目標全床反力中心点周りの目標床反力モーメント軌道）は、複合コンプライアンス動作決定部１０４と目標床反力分配器１０６とに入力される。
【００８２】
そして、目標床反力分配器１０６にて、目標床反力は各足平２２Ｒ，２２Ｌに分配され、目標各足平床反力中心点（各足平２２Ｒ，２２Ｌの床反力中心点の目標位置）と、目標各足平床反力（各足平２２Ｒ，２２Ｌの床反力中心点に作用させる目標床反力）とが決定される。この決定された目標各足平床反力中心点及び目標各足平床反力の軌道は複合コンプライアンス動作決定部１０４に入力される。なお、歩容生成装置１００から出力する目標床反力は、複合コンプライアンス動作決定部１０４によるコンプライアンス制御に必要な成分だけを出力しても良い。例えば、目標並進床反力水平成分を歩容生成装置１００から出力することを省略してもよい。
【００８３】
複合コンプライアンス動作決定部１０４では、目標足平位置姿勢を修正してなる機構変形補償付き修正目標足平位置姿勢が求められ、この修正目標足平位置姿勢の軌道がロボット幾何学モデル１０２に入力される。
【００８４】
ロボット幾何学モデル１０２は、入力された目標上体位置姿勢と機構変形補償付き修正目標足平位置姿勢とを満足する両脚体２，２の各関節の関節変位指令（各関節の変位量の目標値）を、ロボット１のキネマティクスモデル（剛体リンクモデル）に基づく逆キネマティクス演算によって算出し、その算出した関節変位指令を変位コントローラ１０８に出力する。さらに、ロボット幾何学モデル１０２は、目標腕姿勢を満足する各腕体の各関節の関節変位指令を算出し、その算出した関節変位指令を変位コントローラ１０８に出力する。
【００８５】
そして、変位コントローラ１０８は、ロボット幾何学モデル１０２で算出された関節変位指令を目標値として、ロボット１の両脚体２，２及び両腕体の各関節の回転角（実関節変位）を前記サーボアンプ４４を介して追従制御する。より詳しくは、変位コントローラ１０８は、エンコーダ４０の出力から計測される実関節変位（実測値）を関節変位指令に一致させるように、アクチュエータ駆動力としての電動モータ４２の出力トルクを調整する。
【００８６】
上記のような追従制御によるロボット１の実際の運動によって該ロボット１の各足平２２に実際に作用する床反力である実各足平床反力が前記６軸力センサ３６の出力から計測され、その実各足平床反力の実測値が前記複合コンプライアンス動作決定部１０４に入力される。
【００８７】
また、ロボット１の上体２４の実際の姿勢角（鉛直方向に対する傾斜角）である実上体姿勢角が前記傾斜センサ３８の出力から計測され、その実上体姿勢角の実測値が姿勢安定化制御演算部１１２に入力される。さらに、姿勢安定化制御演算部１１２には、歩容生成装置１００が生成する目標上体位置姿勢のうちの目標上体姿勢角（鉛直方向に対する上体２４の姿勢角の目標値）等も入力される。
【００８８】
そして、姿勢安定化制御演算部１１２は、ロボット１の実際の姿勢と目標とする姿勢とのずれの程度を表す指標として、入力される実上体姿勢角（実測値）と目標上体姿勢角との偏差である上体姿勢角偏差Δθを算出する。さらに、姿勢安定化制御演算部１１２は、この上体姿勢角偏差Δθを“０”に収束させるための要求操作量（フィードバック要求操作量）として、目標ＺＭＰまわりでロボット１に付加的に作用させる床反力モーメントの要求値である補償全床反力モーメントMdmdを、算出した上体姿勢角偏差Δθに応じてフィードバック制御則により算出する。
【００８９】
この場合、フィードバック制御則としては、例えばＰＤ則が用いられる。すなわち、上体姿勢角偏差Δθと、その時間的変化率（微分値）Δωとから、次式５０によって、補償全床反力モーメントMdmdが算出される。
【００９０】
Ｍdmd＝Ｋ1＊Δθ＋Ｋ2＊Δω      ……式５０
この式５０におけるＫ1、Ｋ2は、それぞれ比例ゲイン、微分ゲインである。これらのＫ1、Ｋ2の値は、本実施形態では、あらかじめ設定された所定値である。
【００９１】
この場合、補償全床反力モーメントMdmdは、より詳しくは、ロール方向（Ｘ軸まわり）の成分Mdmdxと、ピッチ方向（Ｙ軸まわり）の成分Mdmdyとからなる。Mdmdx，Mdmdyは、それぞれ、上体姿勢角偏差Δθのうちのロール方向（Ｘ軸まわり）の成分、ピッチ方向（Ｙ軸まわり）の成分を“０”に収束させるために必要な、目標ＺＭＰまわりの要求モーメント（詳しくは目標ＺＭＰまわりの床反力モーメントの摂動分の要求値）を意味する。
【００９２】
そして、Ｘ軸まわりの成分Ｍdmdxは、Δθ、ΔωのＸ軸まわりの成分に応じて式５０により算出される。また、Ｙ軸まわりの成分Ｍdmdyは、Δθ、ΔωのＹ軸まわりの成分に応じて式５０により算出される。
【００９３】
なお、式５０のゲインＫ1、Ｋ2の値は、ロボット１の運動状態に応じて適宜可変的に設定するようにしてもよい。例えば、ロボット１の全体重心又は上体２４の鉛直方向の慣性力に応じて、Ｋ1、Ｋ2の一方又は両方の値を可変的に決定するようにしてもよい。このようにすることにより、ロボット１の運動に伴う鉛直方向の慣性力の影響を補償して、上体姿勢角偏差Δθを円滑に“０”に収束させ得るＭdmdの値を算出することができる。
【００９４】
また、ロボット１の実際の姿勢と目標とする姿勢とのずれの程度を表す指標として、上体姿勢角偏差Δθの代わりに、例えば、ロボット１の全体重心の実際の位置と、目標歩容（詳しくは目標運動）により規定される該全体重心の目標位置との水平方向の位置偏差を使用し、この位置偏差から、ＰＤ則等のフィードバック制御則により補償全床反力モーメントMdmdを算出するようにしてもよい。
【００９５】
また、ロボット１に作用する床反力以外の外力及びその作用点を、上体２４に搭載した適宜の力センサ等により計測し、その外力及び作用点の計測値から、該外力によって目標ＺＭＰまわりで実際のロボット１に作用するモーメントを算出するようにしてもよい。そして、その算出したモーメントに釣り合う（逆向きの）床反力モーメントに“１”以下の正のゲインを乗じてなる床反力モーメントを式５０の右辺に加算することよって、補償全床反力モーメントＭ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−床反力モーメント許容範囲の境界値）の符号を反転させてなるモーメントがモデル操作床反力モーメントとして決定される。
【０１０５】
図３の説明に戻って、歩容生成装置１００には上記の如く決定されたモデル操作床反力モーメントが入力される。
【０１０６】
そして、歩容生成装置１００は、詳細は後述するが、目標ＺＭＰ軌道を決定しつつ、その決定した目標ＺＭＰまわりの床反力モーメントの水平成分がモデル操作床反力モーメントとなるように、動力学モデルを用いて目標歩容の運動（目標運動）を生成する。
【０１０７】
なお、歩容生成装置１００から複合コンプライアンス動作決定部１０４に対して出力される目標全床反力は、目標ＺＭＰまわりの床反力モーメントの水平成分が“０”になることを目標とするものとして出力される。
【０１０８】
また、補償全床反力モーメント分配器１１０で上記の如く決定されたコンプライアンス制御用目標床反力モーメントは、複合コンプライアンス動作決定部１０４に入力される。そして、複合コンプライアンス動作決定部１０４は、歩容生成装置１００が生成する目標歩容の運動にロボット１の運動を追従させつつ、目標ＺＭＰまわりの実床反力モーメントがコンプライアンス制御用目標床反力モーメントに近づくように、目標足平位置姿勢を修正することにより、機構変形補償付き修正目標足平位置姿勢（軌道）を決定する。
【０１０９】
この場合、ロボット１の足平位置姿勢及び床反力の全ての状態を目標に一致させることは事実上不可能であるので、これらの間にトレードオフ関係を与えて妥協的になるべく一致させる。すなわち、複合コンプライアンス動作決定部１０４は、各目標に対する制御偏差に重みを与えて、制御偏差（あるいは制御偏差の２乗）の重み付き平均が最小になるように機構変形補償付き修正目標足平位置姿勢（軌道）を決定する。
【０１１０】
換言すれば、目標ＺＭＰまわりの実床反力モーメントと、ロボット１の実際の足平位置姿勢とがそれぞれコンプライアンス制御用目標床反力モーメント、目標足平位置姿勢にできるだけ近づくように機構変形補償付き修正目標足平位置姿勢（軌道）が決定される。そして、複合コンプライアンス動作決定部１０４は、この修正目標足平位置姿勢をロボット幾何学モデル１０２に足平位置姿勢の最終的な目標値として出力することで、ロボット１の動作を制御する。すなわち、複合コンプライアンス動作決定部１０４は、ロボット１の実際の運動を目標歩容の運動に追従させつつ、コンプライアンス制御用目標床反力モーメントを付加的外力としてロボット１に付加的に作用させるように実際のロボット１の動作制御を行なう。
【０１１１】
なお、上記した複合コンプライアンス動作決定部１０４などの構成および動作は、本出願人が先に出願した特開平１０−２７７９６９号公報などに詳細に記載されている。従って、複合コンプライアンス動作決定部１０４に関する本明細書での説明は以上に留める。
【０１１２】
以上の如く、ロボット１の動作制御を行うことによって、ロボット１の動力学モデル上でモデル操作外力としてのモデル操作床反力モーメントが目標ＺＭＰまわりに付加的に発生するように目標歩容の運動が生成されつつ、実際のロボッ１の床反力には、モデル操作床反力モーメントが付加されないように制御される。したがって、差し引きモデル操作床反力モーメント分だけ、目標歩容の運動と床反力の不平衡（アンバランス）を生じる。このことは、前記上体姿勢角偏差Δθを“０”に収束させる効果に関して言えば、モデル操作床反力モーメントの符号を反転した床反力モーメントを実ロボット１に作用させることと等価である。
【０１１３】
つまり、モデル操作床反力モーメントを適宜決定することにより、実ロボット１の上体２４の実際の姿勢を目標姿勢に収束させ、ひいては、実ロボット１の全体の姿勢が目標とする姿勢から大きく崩れることがないようにして、該実ロボット１の全体の姿勢を安定化させることができる。
【０１１４】
この場合、モデル操作床反力モーメントの符号を反転したモーメントとコンプライアンス制御用目標床反力モーメントとの和が上体姿勢角偏差Δθを“０”に収束させるトータルの復元力（床反力モーメント）になる。すなわち、コンプライアンス制御用目標床反力モーメントとモデル操作床反力モーメントとの差がトータルの復元力になる。
【０１１５】
以下に、前記歩容生成装置１００の処理をより詳細に説明する。
【０１１６】
まず、歩容生成装置１００の処理の基本的な前提となる事項を説明しておく。
【０１１７】
本実施形態では、ロボット１の動作モードとして、各脚体２の離床・着床動作（離床動作とこれに続く着床動作とからなる一連の動作）を２つの脚体２，２で交互に行なうことによって、ロボット１の移動を行なう両脚交互離床・着床動作モードと、一方の脚体２を離床させた状態で、他方の脚体２だけで離床・着床動作を行う動作である片脚ホッピング動作によってロボット１の移動を行なう片脚ホッピング動作モードと、これらの両脚交互離床・着床動作モード及び片脚ホッピング動作モードの動作ではロボット１の姿勢の崩れを回避することが困難となる状況でのロボット１の動作モードである非常用動作モードとがある。なお、両脚交互離床・着床動作モードは、換言すれば、ロボット１の歩行動作又は走行動作を行なう動作モードである。
【０１１８】
そして、歩容生成装置１００は、上記動作モードを選択的に決定しつつ、各動作モードに対応する目標歩容を生成する。以降の説明では、両脚交互離床・着床動作モードに対応する目標歩容を両脚交互離床・着床歩容、片脚ホッピング動作モードに対応する目標歩容を片脚ホッピング歩容、非常用動作モードに対応する目標歩容を非常用歩容という。この場合、両脚交互離床・着床歩容には、ロボット１の歩行動作を行なわせる目標歩容（歩行歩容）と、走行動作を行なわせる目標歩容（走行歩容）とが含まれる。
【０１１９】
ここで、これらの両脚交互離床・着床歩容、片脚ホッピング歩容、非常用歩容のそれぞれにおけるロボット１の基本的な運動パターンの概要を図５〜図８を参照して説明しておく。なお、以降の説明では、「着床」を、「着地」又は「接地」と言い換えることがある。
【０１２０】
図５は、両脚交互離床・着床歩容のうちの歩行歩容におけるロボット１の瞬時的な動作状態を時系列的に例示している。同図中の時刻ｔ1の状態は、一方の脚体２（図示例では脚体２Ｒ）を離床状態から着床させた直後の状態を示している。この状態では、他方の脚体２（２Ｌ）は既に着床状態となっている。
【０１２１】
歩行歩容では、この時刻ｔ1の状態の次に、ロボット１は、着床させた当該一方の脚体２（２Ｒ）で自重を支えるようにしつつ、他方の脚体２（２Ｌ）を離床させる（時刻ｔ2の状態）。続いて、ロボット１は、一方の脚体２（２Ｒ）を着床させたまま、離床させた他方の脚体２（２Ｌ）の足平２２（２２Ｌ）をロボット１の進行方向前方に移動させるようにして該他方の脚体２（２Ｌ）を振り出す（時刻ｔ3の状態）。
【０１２２】
次いで、ロボット１は、当該他方の脚体２（２Ｌ）を着床させる（時刻ｔ4の状態）。この時、ロボット１の両脚体２，２が着床状態となる。その後は、前記一方の脚体２（２Ｒ）の離床・着床動作が上記と同様に行なわれる。歩行歩容は、以上説明した両脚体２，２の一連の動作が繰り返される歩容である。
【０１２３】
図６は、両脚交互離床・着床歩容のうちの走行歩容におけるロボット１の瞬時的な動作状態を時系列的に例示している。同図中の時刻ｔ1の状態は、一方の脚体２（図示例では脚体２Ｒ）を離床状態から着床させた直後の状態を示している。この状態では、他方の脚体２（２Ｌ）は既に離床状態となっている。
【０１２４】
走行歩容では、この時刻ｔ1の状態の次に、ロボット１は、着床させた当該一方の脚体２（２Ｒ）で自重を支えるようにしつつ、離床している他方の脚体２（２Ｌ）の足平２２（２２Ｌ）をロボット１の進行方向前方に移動させるようにして該他方の脚体２（２Ｌ）を振り出す（時刻ｔ2，ｔ3の状態）。さらに、ロボット１は、該他方の脚体２（２Ｌ）を離床させたまま、着床している前記一方の脚体２（２Ｒ）の足平２２Ｒで床を蹴る（時刻ｔ3の状態）ことによって、該一方の脚体２（２Ｒ）を離床させる（時刻ｔ4）。これによりロボット１はその全体が空中に浮上する。
【０１２５】
続いてロボット１は、前記一方の脚体２（２Ｒ）を離床させたまま、先に進行方向前方に振り出した前記他方の脚体２（２Ｌ）で着床する（時刻ｔ5の状態）。その後は、該他方の脚体２（２Ｌ）の離床動作と、該他方の脚体２（２Ｌ）の着床直前に離床した前記一方の脚体２（２Ｒ）の空中での振り出し及びこれに続く着床動作とが上記と同様に行なわれる。走行歩容は、以上説明した両脚体２，２の一連の動作が繰り返される歩容である。
【０１２６】
図７は、片脚ホッピング歩容におけるロボット１の瞬時的な動作状態を時系列的に例示している。同図中の時刻ｔ1の状態は、一方の脚体２（図示例では脚体２Ｒ）を離床状態から着床させた直後の状態を示している。この状態では、他方の脚体２（２Ｌ）は既に離床状態となっている。
【０１２７】
片脚ホッピング歩容では、この時刻ｔ1の状態の次に、ロボット１は、上記他方の脚体２（２Ｌ）を離床させたまま、着床している上記一方の脚体２（２Ｒ）の足平２２（２２Ｒ）で床面を蹴ることによって、該一方の脚体２（２Ｒ）を離床させて空中に浮上し、目標とする位置に向かって空中を移動する（時刻ｔ2の状態）。続いて、ロボット１は、上記他方の脚体２（２Ｌ）を離床させたまま、上記一方の脚体２（２Ｒ）で着床する（時刻ｔ3の状態）。そして、この着床直後においては、着地衝撃を緩和するために、ロボット１は、上記他方の脚体２（２Ｌ）を離床させたまま、一方の脚体２（２Ｒ）を膝関節で屈曲させていくことによって、ロボット１の全体重心を下降させる（時刻ｔ4の状態）。
【０１２８】
その後は、片脚ホッピング動作を継続する場合は、上記一方の脚体２（２Ｒ）の離床・着床動作が上記の如く繰り返される。片脚ホッピング歩容は、このように他方の脚体２（２Ｌ）を離床させたまま、一方の脚体２（２Ｒ）の離床・着床動作を行なう歩容である。なお、図７では、左側の脚体２Ｌを離床状態に維持する片脚ホッピング歩容を例示したが、右側の脚体２Ｒを離床状態に維持する片脚ホッピング歩容についても同様である。
【０１２９】
図８は、非常用歩容におけるロボット１の瞬時的な動作状態を時系列的に例示している。この例では、ロボット１は、両脚体２，２を着床させた状態（時刻ｔ1の状態）で、両脚体２，２を膝関節で屈曲させるように動作させる（時刻ｔ2，ｔ3の状態）ことによって、ロボット１の全体重心を下降させる。非常用歩容は、このようにロボット１の全体重心を下降させるように脚体２，２を動作させることによって、ロボット１が転倒しても、該ロボット１が受ける衝撃を低減し、該ロボット１が損傷を受け難いようにする歩容である。なお、片方の脚体２を着床させた状態で、両脚体２，２を膝関節で屈曲させるように動作させることによって、ロボット１の全体重心を下降させてもよい。
【０１３０】
以上が、両脚交互離床・着床歩容、片脚ホッピング歩容、非常用歩容でのロボット１の運動パターンの概要である。
【０１３１】
以降の説明では、両脚交互離床・着床歩容及び片脚ホッピング歩容において、２つの脚体２，２のうち、ロボット１の自重を支える方の脚体２（自重を支える床反力を受ける脚体２）を支持脚又は支持脚側脚体、支持脚でない方の脚体２を遊脚又は遊脚側脚体ということがある。この場合、両脚体２，２が離床状態となる期間である空中期を有する走行歩容又は片脚ホッピング歩容においては、該空中期では、いずれの脚体２，２もロボット１の自重を支える脚体ではないものの、便宜上、該空中期の直前に支持脚であった脚体２を、該空中期においても支持脚又は支持脚側脚体という。また、両脚体２，２が共に着床状態となる期間である両脚支持期を有する歩行歩容においては、該両脚支持期では、両脚体２，２でロボット１の自重を支えることとなるものの、便宜上、該両脚支持期の開始時に離床状態から着床した脚体２を支持脚又は支持脚側脚体という。また、両脚交互離床・着床歩容及び片脚ホッピング歩容において、いずれか一方の脚体２のみが着床状態となる期間を片脚支持期という。
【０１３２】
前記片脚ホッピング歩容は、換言すれば、空中期とその前後の片脚支持期とを有し、該空中期の前の片脚支持期と後の片脚支持期とで、支持脚と遊脚とをそれぞれ同じ脚体２に保つ歩容である。これに対して、前記両脚交互離床・着床歩容（歩行歩容又は走行歩容）は、換言すれば、支持脚と遊脚とをそれぞれ２つの脚体２，２で交互に切替えながらロボット１を移動させる歩容である。この場合、歩行歩容では、両脚支持期とその前後の片脚支持期とを有し、該両脚支持期の前の片脚支持期と後の片脚支持期とで、支持脚となる脚体２及び遊脚となる脚体２が切り替わる。また、走行歩容では、空中期とその前後の片脚支持期とを有し、該空中期の前の片脚支持期と後の片脚支持期とで、支持脚となる脚体２及び遊脚となる脚体２が切り替わる。
【０１３３】
また、前記支持脚座標系について説明しておくと、本実施形態では、該支持脚座標系は、支持脚として着床している脚体２の足平２２の位置姿勢を、該足平２２の底面のほぼ全面が床面と平行な姿勢で該床面に接触（密着）する位置姿勢に一致させた状態（以降、この状態での支持脚の足平２２の位置姿勢を基本着地位置姿勢という）において、該支持脚の足首中心から床面に延ばした垂線が該床面と交わる点を原点とし、その原点を通る水平面をＸＹ平面とする、床に固定された座標系である。この場合、支持脚座標系のＸ軸方向、Ｙ軸方向は、それぞれ支持脚の足平２２（詳しくは、水平面に投影して見た足平２２）の前後方向、左右方向である。また、Ｚ軸方向は鉛直方向である。
【０１３４】
従って、本実施形態における支持脚座標系は、その原点の位置とＸ軸及びＹ軸の方向とが、支持脚として着床している脚体２の足平２２の基本着地位置姿勢に対して上記の関係に従って規定される３軸直交座標系（ＸＹＺ座標系）である。
【０１３５】
尚、支持脚の着床中の目標足平位置姿勢は、その着床中のある時刻で前記基本着地位置姿勢に一致することは必ずしも必要ではない。この場合、支持脚座標系を規定する前記基本着地位置姿勢は、目標歩容において着床している足平２２を、仮想的に滑らせないように回転させることによって達成し得る基本着地位置姿勢（該足平２２の底面のほぼ全面が床面に接触する位置姿勢）を意味する。
【０１３６】
補足すると、支持脚座標系の原点は、必ずしも上記の点である必要はなく、上記の点からずらした床面上の点であってもよい。また、本実施形態では、支持脚座標系は、支持脚の着地毎に更新されることとなるが、該支持脚座標系の原点の位置及び座標軸の姿勢を一定に保つようにしてもよい。
【０１３７】
次に、本実施形態で歩容生成処理に使用するロボット１の動力学モデルを図９を参照して説明しておく。なお、この動力学モデルは、前記特許文献１の図１０に示した動力学モデルと同じであるので、本実施形態では概略的な説明に留める。
【０１３８】
図９を参照して、本実施形態で歩容生成処理に使用するロボット１の動力学モデルは、例えば前記特許文献１の図１０に示した動力学モデルと同じである。すなわち、この動力学モデルは、ロボット１の各脚体２にそれぞれ対応する２つの質点２ｍ，２ｍ、及び上体２４に対応する質点２４ｍからなる合計３質点と、イナーシャ（慣性モーメント）があって質量のないフライホイールＦＨとから構成されるモデルである。
【０１３９】
なお、上体質点２４ｍの質量には、脚体２，２以外で上体２４に連結もしくは固定されて部位（腕体など）の質量も含まれる。
【０１４０】
この動力学モデルでは、脚体２，２の動力学（各質点２ｍ，２ｍの動力学）と上体２４の動力学（質点２４ｍ及びフライホイールＦＨの動力学）とが相互に非干渉に構成されると共に、ロボット１全体の動力学は、それらの線形結合で表される。
【０１４１】
この動力学モデルの挙動（該動力学モデル上でのロボットの動力学）は、以下に示すように数式化される。ただし、説明を簡単にするために、サジタルプレーン（支持脚座標系のＸ軸及びＺ軸を含むＸＺ平面（矢状面））での運動方程式のみを記述し、ラテラルプレーン（支持脚座標系のＹ軸及びＺ軸を含むＹＺ平面（前額面））での運動方程式を省略した。
【０１４２】
説明の便宜上、動力学モデルに関する変数及びパラメータを以下のように定義する。
【０１４３】
Ｚsup：支持脚質点鉛直位置
Ｚswg：遊脚質点鉛直位置
Ｚb：上体質点鉛直位置
ＺGtotal：全体重心鉛直位置
Ｘsup：支持脚質点水平位置
Ｘswg：遊脚質点水平位置
Ｘb：上体質点水平位置
ＸGtotal：全体重心水平位置
θby：鉛直方向に対するＹ軸周りの上体姿勢角（傾斜角）
mb：上体質点質量
msup：支持脚質点質量
mswg：遊脚質点質量
mtotal：ロボット総質量（＝mb＋msup＋mswg）
Ｊ：フライホイールＦＨの慣性モーメント
Fx：床反力水平成分
Fz：床反力鉛直成分
My：目標ＺＭＰまわりの床反力モーメント（詳しくは床反力モーメントのＹ軸周り成分）
なお、本実施形態では、各脚体２の質点２ｍの位置は、その脚体２の足平２２の位置及び姿勢に応じて規定される位置である。また、上体質点２４ｍの位置は、上体２４の位置及び姿勢に応じて規定される位置である。また、フライホイールＦＨの回転角度は、上体姿勢角に一致するものとされる。
【０１４４】
また、任意の変数Ａに対して、dＡ/dtはＡの１階微分を表わし、d2Ａ/dt2はＡの２階微分を表わす。従って、変数Ａが変位ならば、dＡ/dtは速度、d2Ａ/dt2は加速度を意味する。また、ｇは重力加速度定数を示す。ここでは、ｇは正の値とする。
【０１４５】
上記動力学モデルの運動方程式（動力学モデル上でのロボットの動力学）は、次式０１、式０２、式０３で表される。
【０１４６】
Ｆz＝mb＊(ｇ＋d2Zb/dt2)＋msup＊(ｇ＋d2Zsup/dt2)
＋mswg＊(ｇ＋d2Zswg/dt2)                  ……式０１
Ｆx＝mb＊d2Xb/dt2＋msup＊d2Xsup/dt2＋mswg＊d2Xswg/dt2
……式０２
Ｍy＝−mb＊(Xb−Xzmp)＊(ｇ＋d2Zb/dt2)＋mb＊(Zb−Zzmp)＊d2Xb/dt2
−msup＊(Xsup−Xzmp)＊(ｇ＋d2Zsup/dt2)
＋msup＊(Zsup−Zzmp)＊d2Xsup/dt2
−mswg＊(Xswg−Xzmp)＊(ｇ＋d2Zswg/dt2)
＋mswg＊(Zswg−Zzmp)＊d2Xswg/dt2＋Ｊ＊d2θby/dt2
……式０３
また、ロボット１の全体重心の位置には次の関係式が成立する。
ＺGtotal＝(mb＊Zb＋msup＊Zsup＋mswg＊Zswg)／mtotal  ……式０４
ＸGtotal＝(mb＊Xb＋msup＊Xsup＋mswg＊Xswg)／mtotal  ……式０５
以上が歩容生成装置１００の歩容生成処理で使用する動力学モデルである。この動力学モデルでは、ロボット１の全体重心を動かさないように（すなわち、ロボット１に作用する並進床反力が変化しないように）、ロボット１の上体姿勢角を変化させる運動が、フライホイールＦＨの回転運動として表現される。そして、ロボット１の上体２４の並進運動が、上体質点２４ｂの並進運動として表現される。
【０１４７】
補足すると、動力学モデルは、前記特許文献１の図１０に示したものと異なるものであってもよい。例えば、ロボット１の各リンクに質点を有するような多質点モデルによって、ロボット１の動力学を表現する動力学モデルを使用してもよい。
【０１４８】
次に、歩容生成装置１００の処理の概略を説明する。歩容生成装置１００には、前記モデル操作床反力モーメントの他、床形状情報、ロボット１の移動形態に関する指示情報（ロボット１の移動経路や、移動速度、移動計画を指示する情報等）が入力される。そして、歩容生成装置１００は、これらの入力データ等を基に、ロボット１ができるだけ姿勢を崩すことなく、運動（移動）を継続できるように、該ロボット１の動作モードを選択的に決定し、その決定した動作モードに対応する目標歩容を生成する。この場合、両脚交互離床・着床動作モードと片脚ホッピング動作モードとにそれぞれ対応する両脚交互離床・着床歩容、片脚ホッピング歩容については、歩容生成装置１００は、１歩分の歩容を単位として、その１歩分の目標歩容を順番に生成する。
【０１４９】
ここで、本実施形態では、「１歩分の歩容」というのは、前記両脚交互離床・着床歩容では、一方の脚体２の着床動作と、これに続く他方の脚体２の着床動作との間の期間分の歩容を意味する。また、前記片脚ホッピング歩容においては、「１歩分の歩容」は、支持脚としての一方の脚体２の着床動作と、該一方の脚体２の次の着床動作との間の期間分の歩容を意味する。
【０１５０】
以降の説明では、新たに生成しようとしている目標歩容（１歩分の目標歩容）を「今回歩容」、その次の目標歩容を「次回歩容」、さらにその次の目標歩容を「次次回歩容」というように呼ぶ。また、「今回歩容」の１つ前に生成した目標歩容を「前回歩容」と呼ぶ。
【０１５１】
上記今回歩容の生成処理においては、両脚交互離床・着床歩容及び片脚ホッピング歩容のいずれにおいても、歩容生成装置１００は、目標足平位置姿勢軌道、目標床反力鉛直成分軌道、目標ＺＭＰ軌道等、今回歩容の一部の構成要素を規定するパラメータとしての今回歩容パラメータ（今回歩容の歩容パラメータ）を決定する。
【０１５２】
この場合、歩容生成装置１００は、ロボット１の実際の運動を今回歩容（両脚交互離床・着床歩容又は片脚ホッピング歩容）の運動に追従させた場合に、該ロボット１の姿勢を崩すことなく、該ロボット１が継続的に運動を行なうことができるようにするために、いくつかの所要の制約条件を満足するように、今回歩容パラメータを決定する。そして、歩容生成装置１００は、この今回歩容パラメータと前記動力学モデルとを用いて、今回歩容の瞬時値を逐次生成する。
【０１５３】
以下に歩容生成装置１００の歩容生成処理の詳細を図１０〜図３８参照しつつ説明する。歩容生成装置１００は、図１０のフローチャート（構造化フローチャート）に示す歩容生成処理（メインルーチン処理）を実行することによって目標歩容（詳しくは、両脚移動動作歩容又は片脚ホッピング歩容）を生成する。
【０１５４】
まず、Ｓ０１０において時刻ｔを“０”に初期化するなど種々の初期化作業が行なわれると共に、上体位置姿勢などの運動を表す状態量は、前回歩容の支持脚座標系から今回歩容の支持脚座標系に変換される。この処理は、歩容生成装置１００の起動時等に行なわれる。
【０１５５】
次いで、Ｓ０１２を経てＳ０１４に進み、歩容生成装置１００は、制御周期（図１０のフローチャートの演算処理周期）毎のタイマ割り込みを待つ。制御周期はΔｔである。
【０１５６】
次いで、Ｓ０１６に進み、歩容生成装置１００は、歩容の切り替わり目であるか否かを判断する。このとき、歩容の切り替わり目である場合には、Ｓ０１８の処理を経て、Ｓ０２０に進む。この場合、Ｓ０１８では、歩容生成装置１００は、時刻ｔを“０”に初期化する。また、Ｓ０１６で歩容の切り替わり目でない場合には、直ちにＳ０２０に進む。
【０１５７】
ここで、上記「歩容の切り替わり目」は、前回歩容の生成が完了し、今回歩容の生成を開始するタイミングを意味する。補足すると、歩容の切り替わり目でない場合には、初期化は行なわず、Ｓ０２０以降の処理によって直前まで生成した今回歩容の残り部分が生成されることとなる。ただし、Ｓ０２６で決定される今回歩容パラメータが直前までの値に一致するとは限らない。例えば、直前でのモデル操作床反力モーメントが“０”でなければ、生成される今回歩容は、後述する定常歩容に漸近する歩容からずれてしまうので、今回歩容パラメータは変更されることとなる。
【０１５８】
次いで、Ｓ０２０では、歩容生成装置１００は、次回歩容の動作モードを決定する。このＳ０２０の処理を概略的に説明すると、歩容生成装置１００は、両脚交互離床・着床動作モードでのロボット１の動作（歩行動作又は走行動作。以降、これらを総称的に両脚交互離床・着床動作ということがある）によって、該ロボット１を安定な姿勢で継続的に移動させることができると判断される状況では、次回歩容の動作モードとして、両脚交互離床・着床動作モードを選択する。なお、両脚交互離床・着床動作モードでのロボット１の動作は、歩行動作と走行動作とがあるが、それらのいずれの動作を行なうか（歩行歩容及び走行歩容のいずれの歩容を生成するか）は、例えば後述する指示情報により要求されるロボット１の移動速度に応じて決定される。
【０１５９】
また、歩容生成装置１００は、両脚交互離床・着床動作モードでのロボット１の動作ではロボット１を安定な姿勢で継続的に移動させることが困難となり、且つ、片脚ホッピング動作モードでのロボット１の動作によって、該ロボット１を安定な姿勢で継続的に移動させることができると判断される状況では、次回歩容の動作モードとして、片脚ホッピング動作モードを選択する。
【０１６０】
さらに、歩容生成装置１００は、両脚交互離床・着床動作モードでのロボット１の動作及び片脚ホッピング動作モードでのロボット１の動作のいずれの動作でも、ロボット１を安定な姿勢で継続的に移動させることが困難となると判断される状況では、次回歩容の動作モードとして、非常用動作モードを選択する。
【０１６１】
このように次回歩容の動作モードを決定するＳ０２０の処理は、具体的には、図１１のフローチャートに示す如く実行される。
【０１６２】
以下説明すると、歩容生成装置１００は、まず、Ｓ０４０において、次回歩容の動作モードを両脚交互離床・着床動作モードに決定したと仮定して、ロボット１の運動を安定な姿勢で継続し得る適切な今回歩容を生成することが可能であるか否かを判断する処理を実行する。なお、以降の説明では、具体的な処理を説明する場合に、両脚交互離床・着床動作の動作が走行動作である場合を主要例として説明する。
【０１６３】
このＳ０４０では、図１２のフローチャートに示す処理が実行される。以下、説明すると、まず、Ｓ０６０において、歩容生成装置１００は、次回歩容での（１歩先の）支持脚として予定される脚体２の足平２２の目標着地位置姿勢と、次次回歩容での（２歩先の）支持脚として予定される脚体２の足平２２の目標着地位置姿勢と、次回歩容の支持脚として予定される脚体２の足平２２の目標着地時刻と、次次回歩容の支持脚として予定される脚体２の足平の目標着地時刻とをそれぞれ規定するものとして、次回歩容支持脚座標系、次次回歩容支持脚座標系、今回歩容周期および次回歩容周期を決定する。
【０１６４】
ここで、足平２２の着地位置姿勢は、例えば該足平２２の着地瞬間の位置姿勢でもよいが、本実施形態の説明では、理解の便宜上、該足平２２を着地させてから、該足平２２を滑らせないように回転させて、該足平２２の底面のほぼ全面を床面に接触させた状態での該足平２２の位置姿勢、すなわち、前記基本着地位置姿勢を意味するものとする。また、足平２２の着地時刻は、本実施形態の説明では、該足平２２の着地瞬間の時刻を意味するものとする。なお、足平２２の着地瞬間の位置姿勢が、前記基本着地位置姿勢に合致していてもよい。
【０１６５】
また、支持脚座標系を決定するということは、詳しくは、その原点の位置と該支持脚座標系の姿勢（各座標軸の向き）とを決定することを意味する。この場合、支持脚座標系と前記基本着地位置姿勢とは前記した関係で規定されるので、支持脚座標系を決定するということは、支持脚となる脚体２の足平２２の目標着地位置姿勢を決定することと同等である。
【０１６６】
また、今回歩容周期は、今回歩容の開始から終了までの時間であり、次回歩容周期は、次回歩容の開始から終了までの時間である。従って、今回歩容周期及び次回歩容周期を決定するということは、次回歩容での支持脚の足平２２の目標着地時刻と、次次回歩容での支持脚の足平２２の目標着地時刻とを決定することと同等である。
【０１６７】
Ｓ０６０では、これらの支持脚座標系及び歩容周期は、例えば、ロボット１の外部の操縦装置もしくはサーバ等から制御ユニット２６に与えられ、あるいは、制御ユニット２６にあらかじめ記憶保持されたロボット１の動作に関する指示情報（例えばロボット１の移動経路、移動速度、移動方向、移動計画等を指示する情報）と、前回歩容の生成処理時に最終的に決定された今回歩容の動作モードとに基づいて決定される。
【０１６８】
この場合、ロボット１の各脚体２は、該脚体２の関節や、これを駆動するアクチュエータの構造等に起因する幾何学的な（運動学的な）制約を受け、その制約による可動範囲内でしか動くことはできない。その制約条件（以降、幾何学的脚体運動必要条件という）は、例えば、各関節の変位量（回転角）が各関節及びその駆動系の構造等に応じて規定される所定の範囲を逸脱しない、左右の脚体２Ｒ，２Ｌが互いに干渉しないというような制約条件である。
【０１６９】
このため、歩容生成装置１００は、各回の歩容の次の歩容における支持脚足平２２の着地位置姿勢（詳しくは、各回の歩容での支持脚座標系に対する相対的な着地位置姿勢）と各回の歩容周期とをそれぞれ所要の範囲内に制限する。そして、Ｓ０６０では、歩容生成装置１００は、その制限内で、前記指示情報により規定される移動経路や移動速度等の要求にできるだけ従うように、次回歩容及び次次回歩容の支持脚座標系と、今回歩容及び次回歩容の歩容周期とを決定する。
【０１７０】
具体的には、本実施形態では、次回歩容支持脚座標系及び次次回歩容支持脚座標系を前記幾何学的脚体運動必要条件を満足し得る範囲内で決定するために、次回歩容及び次次回歩容で支持脚として予定される脚体２の足平２２の目標着地位置の許容領域である幾何学的着地許容領域を、ロボット１の動作環境の床形状情報から認識される床面上に設定する。なお、床形状情報は、ロボット１の外部のサーバ等から制御ユニット２６に適宜入力され、あるいは、制御ユニット２６が、ロボット１に搭載された撮像カメラ等の視覚センサや、地図情報等から取得した情報である。
【０１７１】
上記幾何学的着地許容領域は、両脚交互離床・着床歩容及び片脚ホッピング歩容のそれぞれに対応して、その位置姿勢（各回の歩容の支持脚座標系に対する相対的な位置姿勢）と形状とが、例えば図１３（ａ），（ｂ）及び図１４に例示する如くあらかじめ定めれた領域である。
【０１７２】
図１３（ａ）は両脚交互離床・着床歩容において、支持脚が右側脚体２Ｒである状態での、次の支持脚である左側脚体２Ｌの幾何学的着地許容領域を示している。また、図１３（ｂ）は両脚交互離床・着床歩容において、支持脚が左側脚体２Ｌである状態での、次の支持脚である右側脚体２Ｒの幾何学的着地許容領域を示している。これらの幾何学的着地許容領域は、支持脚座標系に対して左右対称の領域である。なお、これらの幾何学的着地許容領域は、両脚交互離床・着床歩容が歩行歩容である場合と走行歩容である場合とで異なるように設定してもよい。
【０１７３】
また、図１４は片脚ホッピング歩容において、支持脚が右側脚体２Ｒ（又は左側脚体２Ｌ）である状態での、次の支持脚である右側脚体２Ｒ（又は左側脚体２Ｌ）の幾何学的着地許容領域を示している。なお、片脚ホッピング歩容における図示例の幾何学的着地許容領域は、支持脚が左右いずれの脚体２であっても、支持脚座標系に対して同じ位置姿勢及び形状の領域としているが、支持脚が右側脚体２Ｒである場合と、左側脚体２Ｌである場合とで、対称的な形状の領域であってもよい。
【０１７４】
次回歩容での支持脚の足平２２の目標着地位置を制限する幾何学的着地許容領域は、今回歩容支持脚座標系上で、今回歩容の動作モードに応じて設定される。より詳しくは、今回歩容の動作モードが両脚交互離床・着床動作モードである場合には、今回歩容の支持脚が右側脚体２Ｒであるか、左側脚体２Ｌであるかに応じて、図１３（ａ）又は図１３（ｂ）に示す如く幾何学的着地許容領域が設定される。また、今回歩容の動作モードが片脚ホッピング動作モードである場合には、図１４に示す如く幾何学的着地許容領域が設定される。
【０１７５】
なお、図１３及び図１４に示した幾何学的着地許容領域は、床面が平坦面である場合の領域であるが、床形状情報から床面が飛び石状の床面である場合や、該床面に障害物が設置されている場合等のように、ロボット１の脚体２を着地させ得る床面の領域が制限されるような場合には、その制限された床面の領域と、図１３及び図１４に示した領域との重なり領域を幾何学的着地許容領域として設定すればよい。
【０１７６】
また、歩容生成装置１００は、前記幾何学的脚体運動必要条件を満足させるように次回歩容での支持脚の足平２２の目標着地姿勢を制限するために、該目標着地姿勢の許容範囲である着地姿勢許容範囲（今回歩容支持脚座標系で見た着地姿勢許容範囲）も設定する。この着地姿勢許容範囲は、例えば、今回歩容の動作モードが両脚交互離床・着床動作モード及び片脚ホッピング動作モードのいずれの動作モードであるかと、今回歩容の支持脚が左右いずれの脚体２であるかとに応じて決定される。
【０１７７】
そして、歩容生成装置１００は、前記指示情報と今回歩容の動作モードとにより規定される次回歩容での支持脚の足平２２の目標着地位置（今回歩容支持脚座標系で見た着地位置）が、上記の如く設定した幾何学的着地許容領域から逸脱するか否かを判断し、逸脱する場合には、該目標着地位置を幾何学的着地許容領域内の位置（例えば、該幾何学的着地許容領域内で、前記指示情報と今回歩容の動作モードとにより規定される着地位置に最も近い位置）に制限した上で、その制限後の目標着地位置に対応させて次回歩容支持脚座標系の原点位置を決定する。
【０１７８】
また、歩容生成装置１００は、前記指示情報と今回歩容の動作モードとにより規定される次回歩容での支持脚の足平２２の目標着地姿勢（今回歩容支持脚座標系で見た着地姿勢）が、上記の如く設定した着地姿勢許容範囲から逸脱するか否かを判断し、逸脱する場合には、該目標着地姿勢を該着地姿勢許容範囲内の姿勢（例えば、該着地姿勢許容範囲内で、前記指示情報と今回歩容の動作モードとにより規定される着地姿勢に最も近い姿勢）に制限した上で、その制限後の目標着地姿勢に対応させて次回歩容支持脚座標系の姿勢（Ｘ軸及びＹ軸の向き）を決定する。
【０１７９】
そして、歩容生成装置１００は、これらの以外の場合には、前記指示情報と今回歩容の動作モードとにより規定される次回歩容での支持脚の足平２２の目標着地位置姿勢に対応させて、次回歩容支持脚座標系を決定する。
【０１８０】
また、歩容生成装置１００は、このように次回歩容支持脚座標系を決定した上で、次次回歩容での支持脚足平２２の目標着地位置を制限する幾何学的着地許容領域を、次回歩容支持脚座標系上で設定する。この場合、Ｓ０４０の処理の中で実行されるＳ０６０では、次次回歩容での支持脚の足平２２の着地予定位置を制限する幾何学的着地許容領域は、次回歩容での動作モードが両脚交互離床・着床動作モードであるとして設定される領域、すなわち、図１３（ａ）又は図１３（ｂ）に示す幾何学的着地許容領域である。
【０１８１】
さらに、歩容生成装置１００は、次回歩容の動作モードが、両脚交互離床・着床動作モードであるとして、次次回歩容での支持脚足平２２の目標着地姿勢を制限する着地姿勢許容範囲を、次回歩容支持脚座標系上で設定する。その設定の仕方は、今回歩容支持脚座標系上で着地姿勢許容範囲を設定した場合と同様である。
【０１８２】
そして、歩容生成装置１００は、次回歩容支持脚座標系を決定した場合と同様に、この幾何学的着地許容領域と着地姿勢許容範囲とを用いて次次回歩容での支持脚の足平２２の着地位置姿勢を制限しつつ、該着地位置姿勢が、前記指示情報と次回歩容の動作モードとにより規定される着地位置姿勢にできるだけ一致もしくは近いものとなるように、次次回歩容支持脚座標系を決定する。
【０１８３】
なお、各回の歩容で支持脚となる脚体２の足平２２の前記幾何学的着地許容領域は、該足平２２の着地姿勢に応じて変化するように設定してもよい。また、床面が飛び石状の床面である場合や、床面に障害物がある場合の幾何学的着地許容領域は、床形状情報を反映させて決定してもよい。例えば、床面にロボット１の脚体２を着地させることができないか、もしくは、着地させることが好ましくない領域がある場合には、その領域を除外するように幾何学的着地許容領域を設定するようにしてもよい。
【０１８４】
また、歩容生成装置１００は、歩容周期に関しては、前記指示情報と今回歩容の動作モードとにより規定される今回歩容周期と、前記指示情報と次回歩容の動作モードとにより規定される次回歩容周期とが、それぞれ、今回歩容、次回歩容における各脚体２の関節の変位速度等を制限するための所定の許容範囲である歩容周期許容範囲から逸脱するか否かを判断し、逸脱する場合には、それらの歩容周期を該歩容周期許容範囲内の周期（例えば、該歩容周期許容範囲内で、前記指示情報により規定される歩容周期に最も近い周期）に強制的に制限する。そして、歩容生成装置１００は、前記指示情報と今回歩容の動作モードとにより規定される今回歩容周期と、前記指示情報と次回歩容の動作モードとにより規定される次回歩容周期とが、歩容周期許容範囲から逸脱しない場合には、それぞれの歩容周期をそのまま、今回歩容周期、次回歩容周期として決定する。
【０１８５】
なお、今回歩容周期及び次回歩容周期の歩容周期許容範囲は、それぞれ、今回歩容、次回歩容の動作モードに応じて決定される。
【０１８６】
以上が、Ｓ０４０の処理の中で実行されるＳ０６０の処理の詳細である。図１５は、上記のように決定される次回歩容支持脚座標系及び次次回歩容支持脚座標系の例を示している。図示例では、今回歩容及び前回歩容の動作モードは、次回歩容の動作モードと同じ動作モード（両脚交互離床・着床動作モード）であるとしている。
【０１８７】
補足すると、Ｓ０６０で決定する支持脚座標系及び歩容周期は、暫定的なものであり、これらは、今回歩容を最終的に確定するまでに変更される場合もある。
【０１８８】
次いでＳ０６２に進み、歩容生成装置１００は、今回歩容に続く仮想的な周期的歩容（今回歩容の将来の収束目標とする仮想的な周期的歩容）としての定常旋回歩容の歩容パラメータを決定する。該歩容パラメータは、本実施形態では、定常旋回歩容における目標足平位置姿勢軌道を規定する足平軌道パラメータと、基準とする上体姿勢軌道を規定する基準上体姿勢軌道パラメータと、目標腕姿勢軌道を規定する腕姿勢軌道パラメータと、目標ＺＭＰ軌道を規定するＺＭＰ軌道パラメータと、目標床反力鉛直成分軌道を規定する床反力鉛直成分軌道パラメータと、目標床反力水平成分の許容範囲を規定するパラメータとが含まれる。
【０１８９】
ここで、上記「定常旋回歩容」は、前記特許文献１の実施形態にて説明されている如く、その歩容を繰り返したときに歩容の境界（１周期毎の歩容の境界）においてロボット１の運動状態（ロボット１の各部の位置姿勢や、その変化速度等の運動状態）に不連続が生じないような周期的歩容を意味する。換言すれば、「定常旋回歩容」は、歩容の軌道の不連続を発生することなく、同じパターンの運動を繰り返すことができる周期的歩容である。
【０１９０】
周期的歩容である定常旋回歩容は、本実施形態では、ロボット１の２歩分の歩容、すなわち今回歩容に続く第１旋回歩容と該第１旋回歩容に続く第２旋回歩容とからなる歩容を１周期分の歩容として、その１周期分の歩容を一定周期で繰り返す歩容である。
【０１９１】
なお、定常歩容の第１旋回歩容及び第２旋回歩容でのロボット１の動作モードは、次回歩容の動作モードに一致するものとされる。
【０１９２】
定常旋回歩容（以降、単に定常歩容ということがある）について補足すると、両脚交互離床・着床歩容（歩行歩容又は走行歩容）の如く、支持脚と遊脚とを２つの脚体で交互に切替える歩容では、定常歩容の１周期分の歩容には、少なくとも２歩分の歩容が含まれる必要がある。
【０１９３】
一方、支持脚と遊脚とがそれぞれ同じ脚体２に保持される片脚ホッピング歩容にあっては、定常歩容の１周期分の歩容は、１歩分の歩容であってもよい。但し、本実施形態では、片脚ホッピング歩容の生成処理を、両脚交互離床・着床歩容の生成処理と整合させるために、片脚ホッピング歩容においても、定常歩容の１周期分の歩容を２歩分の歩容とする。この場合、本実施形態では、片脚ホッピング歩容の定常歩容では、その第１旋回歩容と第２旋回歩容とは（より正確には、次回歩容支持脚座標系から見た第１旋回歩容と次次回歩容支持脚座標系から見た第２旋回歩容とは）、同一パターンの歩容である。
【０１９４】
本実施形態では、両脚交互離床・着床歩容及び片脚ホッピング歩容のいずれを生成する場合においても、特許文献１の実施形態と同様に、ロボット１の継続的な運動を可能とする目標歩容を生成するための指標として、次式１０により定義される発散成分を用いる。なお、ω0はある所定の値である。
【０１９５】
発散成分＝上体質点水平位置＋上体質点水平速度／ω0      ……式１０
そして、歩容生成装置１００は、定常歩容の初期発散成分（定常歩容の開始時刻での上記発散成分の値）を決定した上で、この初期発散成分に、今回歩容の終端発散成分（今回歩容の終了時刻での発散成分の値）を一致させることを指針として、今回歩容を生成する。これにより、将来において定常歩容に収束させ得る今回歩容を生成する。
【０１９６】
本題に戻り、Ｓ０６２では、歩容生成装置１００は、図１６のフローチャートに示すサブルーチン処理を実行する。なお、Ｓ０４０の処理の中で実行される図１２のフローチャートの処理では、次回歩容の動作モードが両脚交互離床・着床動作モードであることを前提としているので、定常歩容の動作モードも両脚交互離床・着床動作モードである。従って、Ｓ０４０の処理の説明での定常歩容は、両脚交互離床・着床歩容である。
【０１９７】
まず、Ｓ１００において、歩容生成装置１００は、今回歩容、第１旋回歩容、第２旋回歩容の順に足平位置姿勢軌道がつながるように、定常歩容の歩容パラメータのうちの足平軌道パラメータを決定する。
【０１９８】
本実施形態では、各歩容における足平位置姿勢軌道は、前記特許文献１の実施形態で足平位置姿勢軌道を生成する場合と同様に、有限時間整定フィルタを用いて生成される。このため、定常歩容の足平軌道パラメータは、第１旋回歩容及び第２旋回歩容の初期及び終端のそれぞれにおける支持脚足平及び遊脚足平のそれぞれの位置姿勢、各旋回歩容の歩容周期から構成される。
【０１９９】
定常歩容が、両脚交互離床・着床歩容（歩行歩容又は走行歩容）である場合の足平軌道パラメータの設定の仕方は、例えば、前記特許文献１や、特許３７２６０８１号にて本願出願人が説明した手法と同じでよい。ここでは、定常歩容が走行歩容である場合を一例として、足平軌道パラメータのより具体的な設定の仕方を図１５を参照して以下に説明する。
【０２００】
尚、以降の説明では、支持脚側の脚体２の足平２２を支持脚足平２２と称し、遊脚側の脚体２の足平２２を遊脚足平２２と称する。また、歩容の「初期」、「終端」はそれぞれ歩容の開始時刻、終了時刻、あるいは、それらの時刻における瞬時歩容を意味する。
【０２０１】
足平軌道パラメータのうち、第１旋回歩容初期遊脚足平位置姿勢は、次回歩容支持脚座標系から見た今回歩容終端支持脚足平位置姿勢とされる。
【０２０２】
この場合、走行歩容では、今回歩容終端における支持脚足平２２は、空中に移動している。そして、今回歩容終端支持脚足平位置姿勢は、今回歩容初期支持脚足平位置姿勢（＝前回歩容終端遊脚足平位置姿勢）から、次次回歩容での支持脚足平２２（次回歩容での遊脚足平２２）の目標着地位置姿勢（又は次次回歩容支持脚座標の位置姿勢）に応じて定まる次回歩容終端遊脚足平位置姿勢に至る足平位置姿勢軌道（詳しくは次回歩容支持脚座標系から見た軌道）を、今回歩容終端まで生成することにより求められる。この場合、本実施形態では、足平位置姿勢軌道は、前記特許文献１の実施形態で足平位置姿勢軌道を生成する場合と同様に、有限時間整定フィルタを用いて生成される。
【０２０３】
尚、次回歩容終端遊脚足平位置姿勢は、次次回歩容での支持脚足平２２（次回歩容での遊脚足平２２）のつま先を上げてかかとを着地させた状態での該足平２２の位置姿勢であり、その位置姿勢から、該足平２２を滑らせないようにピッチ方向に回転させて、該足平２２の底面のほぼ全面を接地させた状態での位置姿勢が、次次回歩容支持脚座標系に対応する前記基本着地位置姿勢に合致するように決定される。
【０２０４】
また、第１旋回歩容初期支持脚足平位置姿勢は、次回歩容支持脚座標系から見た今回歩容終端遊脚足平位置姿勢とされる。この場合、今回歩容終端遊脚足平位置姿勢は、今回歩容での遊脚足平２２（次回歩容での支持脚足平２２）のつま先を上げてかかとを着地させた状態での該足平２２の位置姿勢であり、その位置姿勢から、該足平２２を滑らせないようにピッチ方向に回転させて、該足平２２の底面のほぼ全面を接地させた状態での位置姿勢が、次回歩容支持脚座標系に対応する前記基本着地位置姿勢に合致するように決定される。
【０２０５】
第１旋回歩容終端遊脚足平位置姿勢は、次回歩容支持脚座標系から見た上記次回歩容終端遊脚足平位置姿勢とされる。
【０２０６】
第１旋回歩容終端では、支持脚足平２２は離床して空中にある。支持脚足平２２が離床してから後の軌道を決定するために、第１旋回歩容での支持脚足平２２（第２旋回歩容での遊脚足平２２）の離床後の目標着地位置姿勢に対応する次次次回歩容支持脚座標系が図１５に示す如く設定される。この次次次回歩容支持脚座標系は、次次回歩容支持脚座標系と該次次次回歩容支持脚座標系との相対的位置姿勢関係（図１５中のxnext，ynext，θznextにより表される位置姿勢関係）が、今回歩容支持脚座標系と次回歩容支持脚座標系との相対的位置姿勢関係と一致するように決定される。
【０２０７】
そして、第１旋回歩容終端支持脚足平位置姿勢は、第１旋回歩容初期支持脚足平位置姿勢を求めた場合と同様に、第１旋回歩容初期支持脚足平位置姿勢から、上記次次次回歩容支持脚座標系に応じて定まる次次回歩容終端遊脚足平位置姿勢に至る足平位置姿勢軌道（より詳しくは次回歩容支持脚座標系から見た軌道）を、第１旋回歩容終端まで前記有限時間整定フィルタを用いて生成することにより求められる。この場合、次次回歩容終端遊脚足平位置姿勢は、次次次回歩容での支持脚足平２２（次次回歩容での遊脚足平２２）のつま先を上げてかかとを着地させた状態での該足平２２の位置姿勢であり、その位置姿勢から、該足平２２を滑らせないようにピッチ方向に回転させて、該足平２２の底面のほぼ全面を接地させた状態での位置姿勢が、次次次回歩容支持脚座標系に対応する前記基本着地位置姿勢に合致するように決定される。
【０２０８】
第２旋回歩容初期遊脚足平位置姿勢は、次次回歩容支持脚座標系から見た第１旋回歩容終端支持脚足平位置姿勢とされる。第２旋回歩容初期支持脚足平位置姿勢は、次次回歩容支持脚座標系から見た第１旋回歩容終端遊脚足平位置姿勢とされる。
【０２０９】
第２旋回歩容終端遊脚足平位置姿勢は、今回歩容支持脚座標系から見た今回歩容終端遊脚足平位置姿勢とされる。第２旋回歩容終端支持脚足平位置姿勢は、今回歩容支持脚座標系から見た今回歩容終端支持脚足平位置姿勢とされる。
【０２１０】
第１旋回歩容および第２旋回歩容の歩容周期は、次回歩容周期と同一に設定される。これらの第１旋回歩容及び第２旋回歩容の歩容周期は、互いに同一にすることは必ずしも必要ではないが、いずれの周期も、少なくとも次回歩容周期に応じて決定するのが好ましい。
【０２１１】
以上が、定常歩容が走行歩容である場合にＳ１００で決定される足平軌道パラメータの例である。
【０２１２】
次に、Ｓ１０２に進み、定常歩容の上体姿勢が追従すべき基準上体姿勢軌道を規定する基準上体姿勢軌道パラメータが決定される。基準上体姿勢軌道は、ロボット１の上体姿勢の長期的な追従目標に相当するものである。
【０２１３】
定常歩容が両脚交互離床・着床歩容である場合、本実施形態では、基準上体姿勢は、例えば、ロボット１の上体２４の体幹軸の方向が鉛直方向に一致する状態での該上体２４の姿勢角（ロボット１を直立姿勢で起立させた場合の上体姿勢角。以降、この姿勢角を“０”とする）に設定される。そして、この姿勢角の値が、基準上体姿勢軌道パラメータとして決定される。なお、定常歩容の各旋回歩容における基準上体姿勢角は、必ずしも一定である必要はない。
【０２１４】
次いでＳ１０４に進み、歩容生成装置１００は、Ｚ軸（あるいは上体体幹軸）周りの両腕体の角運動量変化に関すること以外の腕姿勢軌道パラメータを決定する。たとえば、上体２４に対する腕体全体の相対重心位置の軌道を規定するパラメータが腕姿勢軌道パラメータとして決定される。この場合、本実施形態では、腕体全体の相対重心位置は、上体２４に対して一定に維持されるように設定される。
【０２１５】
次に、Ｓ１０６に進み、歩容生成装置１００は、床反力鉛直成分軌道パラメータを決定する。具体的には、定常歩容が例えば走行歩容である場合、該定常歩容の床反力鉛直成分軌道は、例えば図１７に示すようなパターンで設定される。そのパターンでは、第１旋回歩容及び第２旋回歩容のいずれにおいても、片脚支持期では床反力鉛直成分が台形状に変化し、空中期では床反力鉛直成分が“０”に維持される。そして、このパターンの折れ点の時刻や、台形部分の高さ（ピーク値）が床反力鉛直成分軌道パラメータとして決定される。
【０２１６】
この床反力鉛直成分軌道パラメータは、定常歩容の１周期分の期間における床反力鉛直成分の平均値が、ロボット１の全体に作用する重力と同じ大きさで反対向きになるように決定される。これは、定常歩容のあらゆる状態量（ロボット１の各部の位置、姿勢、速度等の運動状態量）についての初期状態（定常歩容の第１旋回歩容の支持脚座標系から見た該第１旋回歩容の初期状態）と終端状態（定常歩容の第２旋回歩容に続く第１旋回歩容の支持脚座標系から見た該第２旋回歩容の終端状態）とが一致しているという条件（以下、この条件を定常歩容の境界条件ということがある）を満足する必要があるからである。
【０２１７】
なお、定常歩容が歩行歩容である場合の床反力鉛直成分軌道は、例えば前記特許文献１の図４２に示したようなパターンで設定すればよい。あるいは、定常歩容が歩行歩容である場合の床反力鉛直成分を、例えば、定常歩容の全期間において一定値（ロボット１の全体に作用する重力と同じ大きさの一定値）に設定してもよい。
【０２１８】
次いで、Ｓ１０８に進み、歩容生成装置１００は、上記のごとく設定した床反力鉛直成分軌道に応じて、床反力水平成分の許容範囲[Fxmin，Fxmax]（より詳しくはこれを規定するパラメータ）を設定する。
【０２１９】
この許容範囲[Fxmin，Fxmax]の境界値である床反力水平成分許容下限値Fxmin及び床反力水平成分許容上限値Fxmaxは、それらの大きさ（絶対値）が、支持脚足平２２と床面との間で発生可能な摩擦力の大きさの上限値を超えないように設定される。
【０２２０】
例えば、Fxmin及びFxmaxは、Ｓ１０６で決定した床反力鉛直成分に応じて、次式１２ａ，１２ｂより設定される。なお、ここでは、説明の便宜上、床面は水平面であるとしている。
【０２２１】
Fxmin＝−ｋa＊μ＊床反力鉛直成分    ……式１２ａ
Fxmax＝ｋa＊μ＊床反力鉛直成分    ……式１２ｂ
これらの式１２ａ，１２ｂにおけるｋaは正の定数（＜１）、μは足平２２と床面との間の摩擦係数である。この場合、床反力水平成分許容範囲を規定するパラメータとしては、例では、式１２ａ，１２ｂにおける（ｋa＊μ）の値を用いることができる。
【０２２２】
図１８は、一例として、定常歩容が走行歩容である場合に上記の如く設定される許容範囲[Fxmin，Fxmax]を示している。図１８の負側の折れ線が床反力水平成分許容下限値Fxmin、正側の折れ線が床反力水平成分許容上限値Fxmaxを表す。
【０２２３】
なお、床反力水平成分許容範囲[Fxmin，Fxmax]は、足平２２と床面との間で発生可能な摩擦力の限界内であれば、他の手法により設定してもよい。
【０２２４】
次いで、Ｓ１１０に進み、歩容生成装置１００は、定常歩容における目標ＺＭＰ軌道を規定するＺＭＰ軌道パラメータを決定する。目標ＺＭＰ軌道は、所謂、支持多角形（ロボット１の接地面（床との接触面）を含む最小の凸多角形）内に目標ＺＭＰが存在すると共に、安定余裕が高く、かつ急激な変化をしないように決定される。なお、安定余裕が高いというのは、支持多角形の境界に近づき過ぎない位置（支持多角形の中央付近の位置）に目標ＺＭＰが存在する状態を言う。なお、支持多角形は、より詳しくは、片脚支持期では、ロボット１の着床している片方の脚体２の足平２２と床面との接触面の領域となり、両脚支持期では、両脚体２，２の足平２２，２２のそれぞれの床面との接触面を連接してなる領域となる。
【０２２５】
一例として、定常歩容が歩行歩容である場合の目標ＺＭＰ軌道（詳しくは目標ＺＭＰのＸ軸方向位置）は、例えば図１９に示すパターンで設定される。このパターンでは、第１旋回歩容及び第２旋回歩容のいずれにおいても、目標ＺＭＰのＸ軸方向の位置は、片脚支持期において、支持脚足平２２の踵側からつま先側に移動するように設定される。なお、片脚支持期内で、支持脚足平２２の底面のほぼ全面が接地する（床面に接触する）期間では、目標ＺＭＰのＸ軸方向の位置は一定に保持される。また、空中期では、目標ＺＭＰのＸ軸方向の位置は、次の片脚支持期の開始時の位置（次の支持脚の踵側の位置）まで、連続的に移動していくように設定される。
【０２２６】
なお、図示は省略するが、走行歩容における目標ＺＭＰのＹ軸方向の位置は、片脚支持期においては、例えば支持脚の足首関節のＹ軸方向の位置と同じ位置（足首関節の直下の位置）に保たれるように設定される。そして、空中期では、目標ＺＭＰのＹ軸方向の位置は、次の片脚支持期の開始時の位置（次の支持脚の足首関節のＹ軸方向の位置）まで、連続的に移動していくように設定される。
【０２２７】
本実施形態では、上記の如く設定されるＺＭＰ軌道の折れ点の位置や時刻がＺＭＰ軌道パラメータとして設定される。
【０２２８】
次いで、Ｓ１１２に進み、歩容生成装置１００は、定常歩容の１周期の初期時刻Ｔs及び終端時刻Ｔeを以下のように再定義する。
【０２２９】
本実施形態では、定常歩容の決定を容易にするために、定常歩容を決定するまでは、定常歩容の１歩の初期時刻Ｔs及び終端時刻Ｔeを便宜上、図１７に例示した如く定める。すなわち、第１旋回歩容の片脚支持期の後半において床反力鉛直成分がある程度減少した時刻Ｔsが定常歩容の初期時刻Ｔsとして設定される。
【０２３０】
また、この初期時刻Ｔsに、定常歩容の１周期Ｔcyc（第１旋回歩容と第２旋回歩容との総和の時間）を加えてなる時刻が定常歩容の終端時刻Ｔeとして設定される。
【０２３１】
本実施形態では、定常歩容を決定した後に、定常歩容の初期時刻を本来の時刻（支持脚足平２２の着地当初の時刻）に戻す。以下の説明では、定常歩容の本来の初期時刻を“０”とし、定常歩容を決定するまで用いる上記初期時刻Ｔsと区別する。
【０２３２】
以上が、Ｓ０４０の中で実行される図１２のＳ０６２の処理の詳細である。
【０２３３】
図１２に戻って、歩容生成装置１００は、上記の如くＳ０６２の処理を実行した後、Ｓ０６４に進み、定常歩容の初期状態を算出する。ここで算出する初期状態は、具体的には、定常歩容の初期上体位置速度（初期上体位置及び初期上体速度）、初期発散成分、初期上体姿勢角及びその角速度である。これらの初期状態の算出は、図２０のフローチャートに示す処理によって、探索的に行なわれる。
【０２３４】
以下説明すると、まず、Ｓ２００において、歩容生成装置１００は、定常歩容パラメータ（図１２のＳ０６２で決定した定常歩容パラメータ）に基づいて、定常歩容の目標足平位置姿勢、目標腕姿勢、および目標上体姿勢角の初期状態（初期時刻Ｔsでの状態）を決定する。ここで「状態」とは、位置又は姿勢とその時間的変化率（位置又は姿勢の変化速度）との組を意味する。
【０２３５】
この場合、支持脚側の足平位置姿勢の初期状態と、遊脚側の足平位置姿勢の初期状態とは、図１６のＳ１００で決定した足平軌道パラメータに基づいて決定される。
【０２３６】
具体的には、支持脚側の足平位置姿勢の初期状態に関しては、前記第１旋回歩容初期支持脚足平位置姿勢から第１旋回歩容終端支持脚足平位置姿勢に至る支持脚足平２２の位置姿勢軌道が、前記有限時間整定フィルタを用いて生成される。そして、この足平位置姿勢軌道における初期時刻Ｔsでの位置及び姿勢と、その位置及び姿勢のそれぞれの変化速度（時間的変化率）とが、支持脚側の足平位置姿勢の初期状態として決定される。
【０２３７】
同様に、遊脚側の足平位置姿勢の初期状態に関しては、前記第１旋回歩容初期遊脚足平位置姿勢から第１旋回歩容終端遊脚足平位置姿勢に至る遊脚足平２２の位置姿勢軌道が、有限時間整定フィルタを用いて生成される。そして、この足平位置姿勢軌道における初期時刻Ｔsでの位置及び姿勢と、その位置及び姿勢のそれぞれの変化速度とが、遊脚側の足平位置姿勢の初期状態として決定される。
【０２３８】
また、目標腕姿勢の初期状態は、図１６のＳ１０４で決定した腕姿勢軌道パラメータに基づいて時刻Ｔsにおける腕姿勢（上体２４に対する両腕体の全体重心位置等）とその変化速度とを求めることで決定される。
【０２３９】
また、目標上体姿勢角の初期状態は、図１６のＳ１０２で決定した基準上体姿勢軌道パラメータにより規定される時刻Ｔsでの基準上体姿勢角及びその角速度が該目標上体姿勢角の初期状態として決定される。なお、本実施形態では、定常歩容が両脚交互離床・着床歩容である場合の基準上体姿勢角は一定値であるので、目標上体姿勢角の角速度の初期状態は“０”である。
【０２４０】
次いで歩容生成装置１００は、Ｓ２０２において初期上体水平位置速度の候補（時刻Ｔsでの上体２４の水平位置及び水平速度の候補）である（Ｘs，Ｖxs）（Ｘs：水平位置、Ｖxs：水平速度）を仮決めする。ここで仮決めする候補（Ｘs，Ｖxs）は、任意でよいが、例えば前回歩容の生成時に求めた定常歩容の初期状態（時刻Ｔsでの状態）における上体水平位置速度を候補（Ｘs，Ｖxs）として仮決めすればよい。
【０２４１】
尚、説明を簡略にするため、サジタルプレーン（ＸＺ平面）上でＸ軸方向での定常歩容の初期状態（初期上体水平位置速度）を探索する場合を例にとって説明する。ただし、実際には位置及び速度のいずれについても、Ｘ軸方向と、Ｙ軸方向とで別々に、あるいは同時に定常歩容の初期状態（定常歩容の前記境界条件を満たす初期状態）を探索する必要がある。
【０２４２】
探索的な決定手法としては、擬似ヤコビアン（感度マトリックス）を求め、最急降下法などにより次候補を決定する方法や、シンプレックス法などを用いればよい。本実施形態では、例えば最急降下法を用いる。
【０２４３】
次いで、Ｓ２０４を経てＳ２０６に進み、歩容生成装置１００は、定常歩容の初期時刻（時刻Ｔs）での上体２４の鉛直位置（Ｚ軸方向位置）Ｚs及び鉛直速度（Ｚ軸方向速度）Ｖzsの組である初期上体鉛直位置速度（Ｚs，Ｖzs）を決定する。
【０２４４】
初期上体鉛直速度Ｖzsは、本実施形態では例えば以下のように決定される。
【０２４５】
ロボット１には、動力学的関係として、次式が成立する。
【０２４６】
終端全体重心鉛直位置−初期全体重心鉛直位置
＝（床反力鉛直成分／ロボットの全体質量）の２階積分
＋重力加速度の２階積分
＋初期全体重心鉛直速度＊１周期の時間
…式１３
但し、式１３の重力加速度は負の値とする。
【０２４７】
また、定常歩容では、終端全体重心鉛直位置と初期全体重心鉛直位置は一致するので、上記の式１３の右辺は“０”にならなければならない。従って、これらの関係から初期全体重心鉛直速度を求めることができる。
【０２４８】
具体的には、まず、前記図１６のＳ１０６で設定した床反力鉛直成分軌道パラメータから算出される床反力鉛直成分をロボット１の全体質量で割った値を、定常歩容の１周期の期間（時刻Tsから時刻Teまでの期間）で２階積分することにより、床反力鉛直成分による全体重心移動量（式１３の右辺第１項）が求められる。
【０２４９】
さらに、重力加速度を定常歩容の１周期の期間で２階積分することにより、重力による全体重心移動量（式１３の右辺第２項）が求められる。そして、上記の如く求めた床反力による全体重心移動量と重力による全体重心移動量との和の符号を反転させたものを、定常歩容の１周期Tcycの時間で割ることにより、初期全体重心鉛直速度が求められる。
【０２５０】
次に、初期上体鉛直位置Ｚsを求めるために、次式１４を用いて、時刻“０”での全体重心鉛直速度が求められる。この場合、次式１４における時刻Ｔsの全体重心鉛直速度には、式１３に基づいて上記の通り求めた値を代入する。また、積分期間は時刻“０”から時刻Ｔsまでの期間とする。
【０２５１】
時刻Ｔsの全体重心鉛直速度−時刻“０”の全体重心鉛直速度
＝（床反力鉛直成分／ロボットの全体質量）の１階積分
＋重力加速度の１階積分
…式１４
（ただし、重力加速度は負の値とする。）
次に、例えば、本願出願人が先に特開平１０−８６０８０号公報で提案した上体高さ決定手法を用いて時刻“０”における上体鉛直位置が決定される。このとき、時刻“０”における足平位置姿勢（図１６のＳ１００で決定した第１旋回歩容初期支持脚足平位置姿勢及び第１旋回歩容初期遊脚足平位置姿勢）と、各脚体２の膝部の曲げ角に関する所定の幾何学的条件とに基づいて、時刻“０”での各脚体２，２の膝部が伸び切らないような上体鉛直位置（上体高さ）が決定される。
【０２５２】
具体的には、支持脚側脚体２の膝曲げ角をθsup、遊脚側脚体２の膝曲げ角をθswgとしたとき、例えばそれらの膝曲げ角θsup，θswgの正弦値の逆数の和がある所定値（有限値）になるように、上体鉛直位置が決定される。ここで、膝曲げ角θsup，θswgは、各脚体２の大腿部の軸心に対する下腿部の軸心の角度であり、各脚体２が伸びきった状態から膝部を曲げていくに伴い、“０”から増加していく角度である。
【０２５３】
次に、このように決定した時刻“０”における上体鉛直位置や、足平位置姿勢などから時刻“０”における全体重心鉛直位置が求められる。例えば図９に示したモデルに対応する前記式０４のキネマティクスモデルを用いることで、時刻“０”における全体重心鉛直位置が求められる。
【０２５４】
具体的には、時刻“０”での上体鉛直位置と上体姿勢角とから上体質点２４ｍの鉛直位置が求められる。また、時刻“０”での支持脚足平位置姿勢及び遊脚足平位置姿勢（これらは、図１６のＳ１００で設定した第１旋回歩容初期支持脚足平位置姿勢及び第１旋回歩容初期遊脚足平位置姿勢である）とからそれぞれ支持脚質点２ｍ及び遊脚質点２ｍの鉛直位置が求められる。そして、これらの求めた上体質点２４ｍ、支持脚質点２ｍ及び遊脚質点２ｍの鉛直位置を、前記式０４のＺb、Ｚsup、Zswgに代入することで、全体重心鉛直位置（式０４のＺGtotal）が求められる。なお、ロボット１のより厳密なモデル（例えば、ロボット１の各リンクに対応する質点を有するモデル）を用い、時刻“０”での上体水平位置や腕姿勢をも考慮して、時刻“０”での全体重心鉛直位置を求めるようにしてもよい。
【０２５５】
次に、前記式１３において、上記の如く求めた時刻“０”での全体重心鉛直位置を同式１３の左辺の初期全体重心鉛直位置に代入し、上記の如く求めた時刻“０”での全体重心鉛直速度を同式１３の右辺の初期全体重心鉛直速度に代入し、さらに、同式１３の１周期の時間をＴs（＝時刻“０”から時刻Ｔsまでの時間）とし、積分期間を時刻“０”から時刻Ｔsまでの期間とすることで、式１３の左辺の終端全体重心鉛直位置の値が算出され、この算出値が初期（時刻Ｔs）全体重心鉛直位置として得られる。
【０２５６】
さらに、この求めた初期（時刻Ｔs）全体重心鉛直位置と時刻Ｔsにおける足平位置姿勢（Ｓ２００で決定された初期状態の足平位置姿勢）とから、ロボット１のモデル（例えば式０４のキネマティクスモデル）を用いて、初期（時刻Ｔs）上体鉛直位置Ｚsが求められる。
【０２５７】
具体的には、時刻Ｔsにおける支持脚及び遊脚の各足平位置姿勢から、図９に示したモデルの支持脚質点２ｍ及び遊脚質点２ｍの鉛直位置が求められる。そして、これらの鉛直位置と、上記の如く求めた初期（時刻Ｔs）全体重心鉛直位置とを式０４に適用することで、上体質点２４ｍの鉛直位置（式０４のＺb）が求められる。そして、この上体質点２４ｍの鉛直位置と時刻Ｔsでの上体姿勢（Ｓ２００で決定された初期状態の上体姿勢）とから初期（時刻Ｔs）上体鉛直位置Ｚsが求められる。なお、この場合も、より厳密なモデルを用い、上体水平位置や腕姿勢をも考慮して初期上体鉛直位置Ｚsを求めるようにしてもよい。
【０２５８】
さらに、前記Ｓ２００で決定した足平位置姿勢の初期状態や、Ｓ２０６で求めた初期全体重心鉛直速度等から、ロボット１のモデル（例えば式０４のキネマティクスモデル）を用いて、初期（時刻Ｔs）上体鉛直速度が求められる。
【０２５９】
具体的には、式０４の両辺を時間微分してなる式に、前記式１３に基づいて求めた初期全体重心鉛直速度と、支持脚及び遊脚の各足平位置姿勢の初期状態により規定される支持脚質点２ｍ及び遊脚質点２ｍの鉛直速度とを適用することで、上体質点２２ｍの鉛直速度が求められる。そして、この上体質点２２ｍの鉛直速度と上体姿勢角の初期状態（Ｓ２００もしくは後述のＳ２０８で決定されたもの）とから、上体鉛直速度が求められる。なお、各足平位置姿勢の初期状態や、初期全体重心鉛直速度のほか、腕姿勢の初期状態（Ｓ２００で決定されたもの）、仮決定した上体水平位置の初期状態（Ｓ２０２もしくは後述のＳ２１６もしくはＳ２１８で仮決定された最新のもの）、上記の如く求めた初期上体鉛直位置を考慮し、上記の如く求めた初期全体重心鉛直速度を満足するような初期上体鉛直速度を、ロボット１のより厳密なモデルを用いて求めるようにしてもよい。
【０２６０】
Ｓ２０６の処理の後、次いでＳ２０８に進み、歩容生成装置１００は、定常歩容の候補としての歩容（定常歩容の１周期分の歩容）を仮生成する。より具体的には、前記図１２のＳ０６２で決定した定常歩容の歩容パラメータを基に、初期時刻Ｔsから終端時刻Ｔeまでの各瞬間（所定の刻み時間毎の時刻）における目標ＺＭＰ、目標床反力鉛直成分、目標足平位置姿勢、基準上体姿勢、目標腕姿勢及び床反力水平成分許容範囲が逐次求められる。
【０２６１】
そして、求めた目標ＺＭＰと目標床反力鉛直成分とに関する動力学的平衡条件、並びに床反力水平成分許容範囲の条件を満足するように、前記動力学モデル（図９のモデル）を用いて、上体位置姿勢を逐次決定することによって、初期時刻Ｔsから終端時刻Ｔeまでの１周期分の定常歩容を生成する。
【０２６２】
この場合、前記上体水平位置速度（Ｘs，Ｖxs）、上体鉛直位置速度（Ｚs、Ｖzs）が上体２４の初期（時刻Ｔs）状態とされる。また、上体姿勢は、基準上体姿勢になるべく一致するように生成される。
【０２６３】
なお、Ｓ２０８での定常歩容の生成は歩容生成装置１００の内部で行われるだけであり、歩容生成装置１００から出力されるものではない。
【０２６４】
Ｓ２０８の処理は、具体的には、図２１のフローチャートに示す如く実行される。
【０２６５】
以下説明すると、歩容生成装置１００は、まず、Ｓ３００において、諸々の初期化を行なう。
【０２６６】
具体的には、歩容生成用時刻Ｔkに定常歩容の初期時刻Ｔsが代入される。また、上体水平位置速度に、初期（時刻Ｔs）上体水平位置速度（Ｘs，Ｖxs）の最新の候補値（図２０のＳ２０２もしくは後述のＳ２１６もしくはＳ２１８で決定された最新の候補値）が代入され、上体鉛直位置速度に、初期（時刻Ｔs）上体鉛直位置速度（Ｚs，Ｖzs）の最新値（図２０のＳ２０６で決定された最新値）が代入される。また、上体姿勢角に、基準上体姿勢角の初期値（時刻Ｔsでの基準上体姿勢）が代入され、上体姿勢角速度に、基準上体姿勢角速度の初期値（時刻Ｔsでの基準上体姿勢角速度）が代入される。補足すると、後述するごとく最終的には初期（時刻Ｔs）上体姿勢角速度の初期値は変更されるので、上体姿勢角速度の初期値を、基準上体姿勢角速度の初期値と異なる値に設定してもよい。
【０２６７】
次いで、Ｓ３０２を経てＳ３０４において、歩容生成装置１００は、歩容生成用時刻Ｔk（現在値）が終端時刻Ｔe（＝Ｔs＋Ｔcyc）以前の時刻であるか否か（Ｔk≦Ｔeであるか否か）を判断する。この判断結果が肯定的である場合には、歩容生成装置１００は、Ｓ３０６の処理（詳細は後述する）を実行することによって、時刻Ｔkでの歩容の瞬時値を決定する。
【０２６８】
次いで、Ｓ３０８に進み、歩容生成装置１００は、歩容生成用時刻Ｔkを所定の刻み時間ΔＴkだけ増加させた後、Ｓ３０４の判断を再び行なう。ここで、刻み時間ΔTkは、例えば制御周期Δｔと一致させておけばよい。ただし、演算量を低減するために、ΔTkをΔｔよりも長い時間に設定してもよい。
【０２６９】
Ｓ３０４の判断結果が否定的である場合には、Ｓ３１０に進む。以上の処理により、Ｓ３１０に進むまでに定常歩容が初期（時刻Ｔs）から終端（時刻Ｔe）まで生成される。
【０２７０】
以下に、Ｓ３０６で定常歩容の瞬時値を決定する処理の詳細を図２２及び図２３のフローチャートを参照して説明する。
【０２７１】
Ｓ３０６の処理は、図２２のフローチャートに示す如く実行される。
【０２７２】
まずＳ４００において、歩容生成装置１００は、定常歩容パラメータ（詳しくは床反力鉛直成分軌道パラメータ）を基に、図１７に示した目標床反力鉛直成分の時刻Ｔkでの瞬時値を求める。
【０２７３】
次いでＳ４０２に進み、歩容生成装置１００は、定常歩容パラメータ（詳しくはＺＭＰ軌道パラメータ）を基に、時刻Ｔkでの目標ＺＭＰの瞬時値を求める。
【０２７４】
次いでＳ４０４に進み、歩容生成装置１００は、定常歩容パラメータ（詳しくは足平軌道パラメータ、基準上体姿勢軌道パラメータ、及び腕姿勢軌道パラメータ）を基に、時刻Ｔkにおける目標足平位置姿勢、基準上体姿勢及び目標腕姿勢の瞬時値をそれぞれ求める。但し、目標腕姿勢に関しては、より詳しくは両腕体の全体重心位置が決定されるが、鉛直軸（又は上体２４の体幹軸）まわりの角運動量を変化させる腕体の運動（腕振り運動）は、未だ決定されていない。
【０２７５】
なお、時刻Ｔkでの目標足平位置姿勢の瞬時値は、図２０のＳ２００で初期時刻Ｔsでの足平位置姿勢を求めた場合と同様に、有限時間整定フィルタを使用して求められる。
【０２７６】
次いでＳ４０６に進み、歩容生成装置１００は、目標床反力鉛直成分を満足する（ロボット１の鉛直方向の慣性力と重力との和を目標床反力鉛直成分に釣り合わせる）ような全体重心鉛直位置速度の瞬時値（時刻Ｔkでの瞬時値）を算出する。
【０２７７】
具体的には、床反力鉛直成分（≧０）とロボット１の全体に作用する重力（ここでは重力＜０とする）との総和を、ロボット１の全体質量により除算することによって、ロボット１の全体重心鉛直加速度（全体重心の鉛直方向の加速度）が求められる。
【０２７８】
そして、この全体重心鉛直加速度を積分することにより、時刻Ｔkでの全体重心鉛直速度が算出される。さらにこの全体重心鉛直速度を積分することにより、時刻Ｔkでの全体重心鉛直位置が算出される。これらの算出は、より具体的には、次式１５及び式１６により行なわれる。
【０２７９】
時刻Ｔkにおける全体重心鉛直速度
＝時刻(Ｔk−ΔＴk)における全体重心鉛直速度
＋（（時刻Ｔkにおける反力鉛直成分／ロボットの全体質量）
＋重力加速度）＊ΔＴk
……式１５
時刻Ｔkにおける全体重心鉛直位置
＝時刻(Ｔk−ΔＴk)における全体重心鉛直位置
＋時刻Ｔkにおける全体重心鉛直速度＊ΔＴk
……式１６
なお、式１５における重力加速度は、負の値である。
【０２８０】
次いでＳ４０８に進み、歩容生成装置１００は、時刻Ｔkでの全体重心鉛直位置を満足する上体鉛直位置を算出する。具体的には、例えば図９のモデルに係わる前記式０４を用いて上体鉛直位置が算出される。すなわち、時刻Ｔkでの支持脚及び遊脚の目標足平位置姿勢から、支持脚質点２ｍ及び遊脚質点２ｍの鉛直位置が求められる。そして、これらの支持脚質点２ｍ及び遊脚質点２ｍの鉛直位置と、Ｓ４０６で求めた時刻Ｔkでの全体重心鉛直位置とを式０４に適用することで、上体質点２４ｍの鉛直位置が求められる。さらに、この求めた上体質点２４ｍの鉛直位置と時刻(Ｔk−ΔＴk)の目標上体姿勢角（又は時刻Ｔkでの目標上体姿勢角の予測値）とから上体鉛直位置が求められる。
【０２８１】
なお、より厳密なモデル（例えばロボット１の各リンクに対応する質点を有するモデル）を用いて上体鉛直位置を求めてもよい。
【０２８２】
次いでＳ４１０に進み、歩容生成装置１００は、定常歩容パラメータ（詳しくは、床反力水平成分許容範囲を規定するパラメータ）を基に、図１８に示した床反力水平成分許容範囲[Fxmin，Fxmax]の時刻Ｔkにおける瞬時値を算出する。
【０２８３】
次いでＳ４１２に進み、歩容生成装置１００は、時刻Ｔkでの上体水平加速度と上体姿勢角加速度とを決定する。この場合、これらの上体水平加速度と上体姿勢角速度とは、目標ＺＭＰを満足する（詳しくは、ロボット１の目標運動によって発生する慣性力とロボット１に作用する重力との合力が目標ＺＭＰまわりに発生するモーメントの水平成分が“０”であるという条件を満足する）ことに加えて、ロボット１の水平方向の慣性力に釣り合う床反力水平成分Ｆxが許容範囲[Fxmin，Fxmax]から逸脱しないという条件と、上体姿勢角速度が定常歩容の初期時刻Ｔsと終端時刻Ｔeとで一致するという条件とを満足するように決定される。
【０２８４】
一例として、定常歩容が走行歩容である場合、このＳ４１２の処理は、図２３のフローチャートに示す如く実行される。
【０２８５】
まず、Ｓ５００において、歩容生成装置１００は、図１７に示した時刻Ｔm、Ｔs2、Ｔm2を設定する。本実施形態では、時刻Ｔmは、第２旋回歩容の開始直後で、床反力鉛直成分がある所定の大きさまで増加した時刻に設定される。また、時刻Ｔs2は、第２旋回歩容の片脚支持期の後半において床反力鉛直成分がある程度減少した時刻に設定される。また、時刻Ｔm2は、第２旋回歩容の空中期の後の第１旋回歩容の開始直後で、床反力鉛直成分がある所定の大きさまで増加した時刻に設定される。
【０２８６】
次いで、Ｓ５０２に進み、歩容生成装置１００は、現在時刻Ｔkが、時刻ＴsからTmまでの期間内の時刻と、時刻Ts2からTm2までの期間内の時刻とのうちのいずれか一方の時刻であるか否かを判断する。このＳ５０２の判定結果が肯定的となる場合（時刻Ｔkでの床反力水平成分の許容範囲が比較的狭いか、もしくは“０”である場合）には、Ｓ５０４に進む。また、Ｓ５０２の判断結果が否定的となる場合（時刻Ｔkでの床反力水平成分の許容範囲が比較的広い場合）には、Ｓ５１８に進む。
【０２８７】
上記Ｓ５０４では、歩容生成装置１００は、時刻Ｔkでの上体姿勢角加速度が時刻Ｔkでの基準上体姿勢角加速度β0（定常歩容の基準上体姿勢軌道パラメータにより規定される基準上体姿勢の角加速度）に一致すると仮定して、時刻Ｔkでの目標ＺＭＰを満足するために必要な上体水平加速度をαtmpとして求める。このαtmpは、例えば図９の動力学モデルに係わる前記式０３を用いて求められる。
【０２８８】
より具体的には、例えば、現在時刻Ｔkまでに求められた目標足平位置姿勢の時系列を用いて、現在時刻Ｔkにおける支持脚質点２ｍ及び遊脚質点２ｍの鉛直加速度が求められると共に、現在時刻Ｔkの目標足平位置姿勢から支持脚質点２ｍ及び遊脚質点２ｍの鉛直位置が求められる。また、現在時刻Ｔkの目標上体鉛直位置を用いて上体質点２４ｍの鉛直位置が求められると共に、現在時刻Ｔkまでに求めた目標上体鉛直位置の時系列値を用いて現在時刻Ｔkにおける上体質点２４ｍの鉛直加速度が求められる。そして、これらの求めた値を前記式０３に代入すると共に、同式０３のMy、d2θby/dt2をそれぞれ、“０”、β0に一致させてなる式から算出される上体質点水平加速度d2Xb/dt2が上体水平加速度αtmpとして求められる。
【０２８９】
なお、定常歩容が両脚交互離床・着床歩容である場合、本実施形態では、該定常歩容の基準上体姿勢角は、前記した如く一定値であるため、基準上体姿勢角加速度β0は常に“０”である
補足すると、より厳密な動力学モデルを用いて、目標ＺＭＰ周りの床反力モーメントの水平成分を“０”にするような上体水平加速度αtmpを探索的に求めるようにしてもよい。
【０２９０】
次に、Ｓ５０６に進み、歩容生成装置１００は、上体水平加速度がαtmpである場合の時刻Ｔkにおける床反力水平成分Fxtmpを動力学モデルを用いて求める。本実施形態においては、前記動力学モデルの式０２を用いてFxtmpが求められる。すなわち、次式１７によってFxtmpが求められる。但し、d2Xsup／dt2及びd2Xswg／dt2はそれぞれ時刻Ｔkにおける支持脚足平質点水平加速度、遊脚足平質点水平加速度を表す。
【０２９１】
Ｆxtmp＝mb＊αtmp＋msup＊d2Xsup/dt2＋mswg＊d2Xswg/dt2      ……式１７
次に、Ｓ５０８に進み、歩容生成装置１００は、Ｆxtmpと現在時刻Ｔkでの床反力水平成分許容範囲の上限値Ｆxmax及び下限値Ｆxminとの大小関係を判断する。そして、この判断結果に応じて、歩容生成装置１００は、上体水平加速度αと、これによって発生する床反力水平成分Ｆxと、上体姿勢角加速度βとを次のように決定する（Ｓ５０８〜Ｓ５１６）。
【０２９２】
すなわち、
Fxtmp＞Fxmaxならば、Ｓ５１０に進み、次式によりＦxが決定される。
Fx＝Fxmax      ……式１８
また、
Fxtmp＜Fxminならば、Ｓ５１２に進み、次式によりＦxが決定される。
Fx＝Fxmin      ……式１９
また、Fxtmpが、床反力水平成分許容範囲[Fxmin，Fxmax]内に存在するならば、Ｓ５１４に進み、次式によりＦxが決定される。
Fx＝Fxtmp      ……式２０
そして、いずれの場合においても、次いでＳ５１６に進み、次式２１、２２により上体水平加速度α、上体姿勢角加速度βが決定される。
α＝αtmp＋(Fx−Fxtmp)／ΔFp      ……式２１
β＝β0＋(αtmp−α)＊ΔMｐ／ΔMｒ      ……式２２
ここで、ΔＦpは、上体水平加速度を単位加速度だけ変化させた場合の床反力水平成分の変化量、ΔＭpは、上体水平加速度を単位加速度だけ変化させた場合の目標ＺＭＰ周りの床反力モーメントの水平成分の変化量、ΔＭrは、ロボット１の全体重心を摂動させることなく、上体姿勢角加速度を単位角加速度だけ変化させた場合の目標ＺＭＰ周りの床反力モーメントの水平成分の変化量である。これらのΔＦp、ΔＭp、ΔＭrは、本実施形態では、図９の動力学モデルに関する前記式０２、０３、０４に基づいて、それぞれ、次式０２ａ，０３ａ，０４ａにより決定される値である。
【０２９３】
ΔＦp＝mb      ……式０２ａ
ΔＭp＝mb＊(Ｚb−Ｚzmp)      ……式０３ａ
ΔＭr＝Ｊ      ……式０４ａ
補足すると、より動力学演算の精度を高めようとするならば、上記のごとく上体姿勢角加速度βを求めた後、この上体姿勢角加速度βと上体水平加速度αとを合成した運動によって目標ＺＭＰを満足させ得る上体水平加速度αを、より厳密な動力学モデルを用いて解析的あるいは探索的に決定することが好ましい。この場合、探索的な決定手法としては、例えば、擬似ヤコビアン（感度マトリックス）を求め、擬似ニュートン法などにより次候補を決定する方法や、シンプレックス法などを用いればよい。
【０２９４】
さらに床反力水平成分Ｆxが床反力水平成分許容範囲[Fxmin，Fxmax]を厳密に越えないようにするために、Ｓ５１０においては、Fx＝Fxmaxとなり、且つ、目標ＺＭＰ周りの床反力モーメントの水平成分が“０”になるように、上体水平加速度αと上体姿勢角加速度βとの組を探索的に求めるようにしてもよい。同様に、Ｓ５１２においては、Ｆx＝Fxminとなり、且つ、目標ＺＭＰ周りの床反力モーメントの水平成分が“０”になるように、αとβとの組を探索的に求めるようにしてもよい。
【０２９５】
以上のＳ５０４〜Ｓ５１４の処理によって、Fxtmpが許容範囲[Fxmin，Fxmax]内に収まる場合には、FxtmpがそのままＦxとなる。また、Fxtmpが許容範囲[Fxmin，Fxmax]の上限値Fxmaxを超え、もしくは下限値Fxminを下回った場合には、それぞれＦxは、それぞれ強制的にFxmax、Fxminに制限される。特に片脚ホッピング定常歩容の空中期では、常に、Fxmax＝Fxmin＝０であるので、Fx＝０となる。
【０２９６】
また、上体姿勢角加速度βは、Ｆxが許容範囲[Fxmin，Fxmax]を越えないように、上体水平加速度αを制限したことによって目標ＺＭＰ周りに発生する床反力モーメントを打ち消す床反力モーメントを発生させるように決定される。
【０２９７】
以上が、時刻Ｔkが、時刻TsからTmまでの期間内の時刻、又は、時刻Ts2からTm2までの期間内の時刻である場合の処理である。
【０２９８】
Ｓ５０２の判定結果が否定的である場合（Ｔm≦Ｔk＜Ｔs2、又はＴm2≦Ｔk≦Ｔeである場合）には歩容生成装置１００は、以下の処理を実行する。まず、Ｓ５１８に進み、上体姿勢角速度を、現在時刻Ｔkが時刻Ts2以前ならば時刻Ts2までに、そうでないならば時刻Teまでに、初期値（現在時刻Ｔkが時刻Ts2以前ならば時刻Tsでの値、そうでないならば時刻Ts2での値）に戻すための上体姿勢角加速度を発生させる床反力モーメントのＺＭＰ換算値（以降、上体姿勢復元モーメントＺＭＰ換算値と呼び、ＺＭＰrecと略す）のパターンを設定する。
【０２９９】
この場合、現在時刻Ｔkが時刻Tm2以降の時期の処理は、時刻Ts2以前の時期の処理と同じである。そこで、以下に、現在時刻Ｔkが時刻Ts2以前の時期である場合の処理を代表的に説明する。
【０３００】
時刻Ｔm以降、時刻Ｔs2までに、上体姿勢角速度を初期値（時刻Ｔsでの値）に戻すための上体姿勢角加速度パターンにおける時刻Ｔkでの値をβ(ｋ)とする。
【０３０１】
このとき、このβ(ｋ)に起因して、床反力モーメントβ(ｋ)＊ΔMrが発生する。この結果、時刻Ｔkにおける床反力鉛直成分がFz(ｋ)であるとすると、ロボット１の運動から算出されるＺＭＰ(ｋ)の水平位置は、次式２３で求められるΔＺＭＰ(ｋ)だけ目標ＺＭＰからずれることとなる。
【０３０２】
ΔＺＭＰ(ｋ)＝−β(ｋ)＊ΔMr／Fz(ｋ)      ……式２３
従って、ΔMrのパターンとFz(ｋ)のパターンとが決まっていれば（既知であれば）、ΔＺＭＰ(ｋ)のパターンを適切に設定することによって、式２３を満足する上体姿勢角加速度パターンを発生させて、上体姿勢角速度を基準上体姿勢軌道の初期（時刻Ｔs)状態における上体姿勢角速度に戻すことができる。
【０３０３】
前記上体姿勢復元モーメントＺＭＰ換算値（ＺＭＰrec）は、そのように適切に設定されたΔＺＭＰ(ｋ)を意味する。なお、式２３におけるΔＭrは、厳密には一定値ではないが、本実施形態では、近似的に一定値（＝Ｊ）であるとする。
【０３０４】
この場合、β(ｋ)とＺＭＰrecとの間の関係は、次式２４により与えられる。
【０３０５】
β(ｋ)＝−ＺＭＰrec＊Fz(ｋ)/ΔMr      ……式２４
以降、このβ(ｋ)を上体姿勢復元用角加速度という。
【０３０６】
本実施形態では、上記ＺＭＰrecのパターン形状を、例えば図２４に示す如く、台形状とする。そして、歩容生成装置１００は、時刻Ｔs2での上体姿勢角速度を時刻Ｔsでの上体姿勢角速度に一致させるために、時刻TsからTs2までの上体姿勢角加速度βの積分値が“０”になるように、ＺＭＰrecのパターンを規定するパラメータ（台形の高さ等）を決定する。
【０３０７】
すなわち、時刻Ｔmから時刻Ｔs2までの期間で、式２４によりＺＭＰrecに応じて決定されるβ(ｋ)と、基準上体姿勢角加速度β0との総和の角加速度を積分してなる積分値が、時刻Ｔsから時刻Ｔmまでの期間における上体姿勢角加速度β（図２３のＳ５０４〜Ｓ５１６で前述のように求められた角加速度）の積分値に−１を乗じた値に一致するように、ＺＭＰrecのパターンを規定するパラメータが決定される。
【０３０８】
この場合、本実施形態では、歩容生成装置１００は、ＺＭＰrecの台形状のパターンにおける折れ点の時刻を時刻ＴmとＴs2との間の規定の（既知の）時刻とすると共に、該台形状のパターンの高さを該パターンを規定する未知数のパラメータとし、上記関係を満足するＺＭＰrecのパターンの高さを求める。これにより、台形状のパターンの高さが、ＺＭＰrecのパターンを規定するパラメータとして算出される。
【０３０９】
次いでＳ５２０に進み、歩容生成装置１００は、上記の如く決定したＺＭＰrecのパターンに基づいて、時刻Ｔkにおける上体姿勢復元モーメントＺＭＰ換算値ＺＭＰrecを算出する。
【０３１０】
次いでＳ５２２に進み、歩容生成装置１００は、時刻ＴkでのＺＭＰrecの値から、前記式２４により算出される上体姿勢復元用角加速度β(ｋ）を、時刻Ｔkでの基準上体姿勢角加速度β0に加え合わせることによって、時刻Ｔkにおける上体姿勢角加速度βを算出する。
【０３１１】
すなわち、次式２４ａにより、βが算出される。
【０３１２】
β＝β0＋β(ｋ)
＝β0−ＺＭＰrec＊Fz(ｋ)/ΔMr      ……式２４ａ
次いでＳ５２４に進み、前記Ｓ５０４と同じ処理を実行することによって、時刻Ｔkでの上体姿勢角加速度が時刻Ｔkでの基準上体姿勢角加速度β0に一致すると仮定して、時刻Ｔkでの目標ＺＭＰを満足するために必要な上体水平加速度をαtmpとして求める。
【０３１３】
次いでＳ５２６に進み、歩容生成装置１００は、次式２５を用いて、上体水平加速度αを算出する。
【０３１４】
α＝αtmp−（ΔMr／ΔMp）＊（β−β0）
＝αtmp−（ΔMr／ΔMp）＊β(ｋ)
……式２５
さらにＳ５２８に進み、歩容生成装置１００は、上体水平加速度が上記の如く求めたαである場合の時刻Ｔkにおける床反力水平成分Ｆxを動力学モデルを用いて求める。この場合、前記式１７の右辺のαtmpをαに置き換えてなる次式２６によって、Ｆxが算出される。
【０３１５】
Ｆx＝mb＊α＋msup＊d2Xsup/dt2＋mswg＊d2Xswg/dt2      ……式２６
補足すると、より動力学演算の精度を高めようとするならば、上記のごとく上体姿勢角加速度βを求めた後、Ｓ５２６において、上体姿勢角加速度βと上体水平加速度αとを合成した運動によって目標ＺＭＰを満足させ得る上体水平加速度αを、より厳密な動力学モデルを用いて解析的あるいは探索的に決定することが好ましい。
【０３１６】
以上説明したＳ５１８〜Ｓ５２８の処理が、Ｓ５０２の判定結果が否定的である場合（Ｔm≦Ｔk＜Ｔs2、又はＴm2≦Ｔk≦Ｔeである場合）の処理である。
【０３１７】
この場合、時刻TmからTs2までの期間と時刻Tm2からTeまでの期間とにおいては、床反力水平成分許容範囲が十分に大きいため、目標ＺＭＰを満足しつつ、上体姿勢角速度を戻すように上体姿勢角加速度βを決定しても、床反力水平成分Ｆxが、許容範囲[Fxmin，Fxmax]から逸脱するのを回避することができる。
【０３１８】
補足すると、定常歩容が歩行歩容である場合においては、該定常歩容の１周期の全期間において、ロボット１と床面との間で発生可能な摩擦力が比較的大きなものとなる（床反力水平成分Ｆxの許容範囲が比較的大きなものとなる）ため、Ｓ５０４と同じ処理によって上体水平加速度を算出するようにしても、その算出される上体水平加速度に対応する床反力水平成分Ｆxは、一般には、ロボット１と床面との間で発生可能な摩擦力の限界内に収まると考えられる。従って、定常歩容が歩行歩容である場合には、図２２のＳ４１２では、例えば、Ｓ５０４の処理だけによって上体水平加速度を決定し、上体姿勢角加速度を基準上体姿勢角加速度に一致させるようにしてもよい。ただし、定常歩容が歩行歩容である場合にも、走行歩容の場合と同様の処理によって、上体水平加速度及び上体姿勢角加速度を決定するようにしてもよい。
【０３１９】
次いで図２２のＳ４１４に進み、歩容生成装置１００は、Ｓ４１２で求めた上体水平加速度を逐次積分する（時刻Ｔsから現在時刻Ｔkまで積算する）ことにより時刻Ｔkでの上体水平速度を求める。さらに、歩容生成装置１００は、その上体水平速度を逐次積分する（時刻Ｔsから現在時刻Ｔkまで積算する）ことにより、時刻Ｔkでの上体水平位置を求める。また、歩容生成装置１００は、Ｓ４１２で求めた上体姿勢角加速度を逐次積分する（時刻Ｔsから現在時刻Ｔkまで積算する）ことにより時刻Ｔkでの上体姿勢角速度を求める。さらに、歩容生成装置１００は、その上体姿勢角速度を逐次積分する（時刻Ｔsから現在時刻Ｔkまで積算する）ことにより、時刻Ｔkでの上体姿勢角を求める。
【０３２０】
以上のごとく定常歩容の瞬時値を決定する図２１のＳ３０６の処理を実行した後、Ｓ３０８に進み、歩容生成用時刻Ｔkの値が刻み時間ΔＴkだけ増加される。
【０３２１】
次いでＳ３０４に戻り、Ｓ３０４に示す条件が成立している限り、歩容生成装置１００は、Ｓ３０６及びＳ３０８の処理を繰り返す。そして、Ｓ３０４に示す条件が成立しなくなったら、すなわち終端時刻Ｔe（＝Ｔs＋Ｔcyc）まで、定常歩容の生成が完了したら、Ｓ３１０に進む。
【０３２２】
Ｓ３１０では、歩容生成装置１００は、初期（時刻Ｔs）上体姿勢角と初期（時刻Ｔs）上体姿勢角速度とを、上記の如くＳ３００〜Ｓ３０８の処理により生成された定常歩容（以降、これを仮歩容ということがある）の終端時刻Ｔeでの上体姿勢角などを基に修正する。この修正は、上体姿勢角及びその角速度に関する定常歩容の境界条件（定常歩容の初期と終端とで上体姿勢角及び角速度がそれぞれ一致するという条件）を満たすようにするためのものである。
【０３２３】
本実施形態では、この修正は、例えば次式３０，３１に従って行なわれる。
【０３２４】
新たな初期上体姿勢角速度
＝仮歩容の初期上体姿勢角速度
−（仮歩容の終端上体姿勢角−仮歩容の初期上体姿勢角）／Ｔcyc
……式３０
新たな初期上体姿勢角＝基準上体姿勢角初期値      ……式３１
これらの式３０、３１における「初期」、「終端」は、それぞれ、時刻Ｔs、Ｔeを意味する。
【０３２５】
なお、初期上体姿勢角は、本実施形態では、式３１のように基準上体姿勢角初期値に一致させるようにしたが、例えば、定常歩容の上体姿勢角の平均値が基準上体姿勢角初期値に一致するように初期上体姿勢角を設定するようにしてもよい。あるいは、定常歩容の上体姿勢角の最大値と最小値との平均値が基準上体姿勢角初期値に一致するように初期上体姿勢角を設定してもよい。
【０３２６】
図２１のＳ３１０の処理を完了した後、図２０のＳ２１０に進む。このＳ２１０では、歩容製生成装置１００は、Ｓ２０８で生成した定常歩容（仮歩容）の終端上体水平位置速度（時刻Ｔeでの上体水平位置及び上体水平速度）を、その瞬間の支持脚に対応する支持脚座標系から見た値に変換し、その値を（Ｘe，Ｖxe）とする（Ｘe：終端上体水平位置、Ｖxe：終端上体水平速度）。
【０３２７】
次いでＳ２１２に進み、歩容生成装置１００は、初期上体水平位置速度（Ｘs，Ｖxs）と終端上体水平位置速度（Ｘe，Ｖxe）との差を境界条件誤差（errx，errv）として算出する。定常歩容では、前記境界条件を満たす必要があるので、境界条件誤差（errx，errv）が“０”又はほぼ“０”でなければならない。
【０３２８】
次いでＳ２１４に進み、歩容生成装置１００は、Ｓ２１２で算出した境界条件誤差（errx，errv）が、あらかじめ設定された許容範囲内にあるか否かが判断される。なお、このように境界条件誤差（errx，errv）が許容範囲にあるか否かを判断する代わりに、前記式１０により定義される発散成分と、前記式１０の右辺の「＋」を「−」に置き換えた式により定義される収束成分とを用い、初期発散成分（＝Ｘs＋Ｖxs／ω0）と終端発散成分（＝Ｘe＋Ｖxe／ω0）との差、及び初期収束成分（＝Ｘs−Ｖxs／ω0）と終端収束成分（＝Ｘe−Ｖxe／ω0）との差がそれぞれある許容範囲内にあるか否か判断するようにしてもよい。
【０３２９】
Ｓ２１４の判断結果が否定的である場合には、境界条件誤差（errx，errv）が“０”又はほぼ“０”となる（Ｘs，Ｖxs）を探索的に求めるために、Ｓ２１６に進む。このＳ２１６では、歩容生成装置１００は、（Ｘs，Ｖxs）の付近に複数（本実施形態では２つ）の初期値候補（Ｘs＋ΔＸs，Ｖxs），（Ｘs，Ｖxs＋ΔＶxs）を決定する。ここで、ΔＸs，ΔＶxsは、それぞれＸs，Ｖxsに対する所定の微小変化量を意味している。そして、これらの初期値候補のそれぞれを上体水平位置速度の初期状態として、前記Ｓ２０８と同様の処理によって定常歩容が生成される。さらに、その生成された定常歩容の終端上体位置速度を、その瞬間（時刻Ｔe）の支持脚に対応する支持脚座標系から見た値に変換した値（Ｘe＋ΔＸe1，Ｖxe＋ΔＶxe1），（Ｘe＋ΔＸe2，Ｖxe＋ΔＶxe2）が求められる。ここで、（Ｘe＋ΔＸe1，Ｖxe＋ΔＶxe1）は（Ｘs＋ΔＸs，Ｖxs）に対応する終端上体位置速度を意味し、（Ｘe＋ΔＸe2，Ｖxe＋ΔＶxe2）は（Ｘs，Ｖxs＋ΔＶxs）に対応する終端上体位置速度を意味している。なお、この場合の定常歩容（仮歩容）の生成処理では、上体水平位置速度以外の変数の初期状態（時刻Ｔsでの状態）は、例えば上体水平位置速度の初期値候補を（Ｘs，Ｖxs）とした場合と同一に設定すればよい。Ｓ２１６ではさらに、前記Ｓ２１０と同様の処理によって、各初期値候補とこれに対応する終端上体位置速度との差、すなわち、各初期値候補（Ｘs＋ΔＸs，Ｖxs），（Ｘs，Ｖxs＋ΔＶxs）のそれぞれに対応する境界条件誤差（errx，errv）が求められる。
【０３３０】
次いでＳ２１８に進み、歩容生成装置１００は、（Ｘs，Ｖxs）及びその付近の初期値候補（Ｘs＋ΔＸs，Ｖxs），（Ｘs，Ｖxs＋ΔＶxs）のそれぞれに対する上体水平位置速度境界条件誤差を基に、（Ｘs，Ｖxs）の次の初期値候補が探索手法（擬似ヤコビアン（感度マトリックス）を求め、最急降下法などにより次候補を決定する方法や、シンプレックス法など）により決定する。
【０３３１】
すなわち、（Ｘs，Ｖxs）及びその付近の初期値候補（Ｘs＋ΔＸs，Ｖxs），（Ｘs，Ｖxs＋ΔＶxs）のそれぞれに対する境界条件誤差によって、上体水平位置及び上体水平速度をそれぞれ初期値候補（Ｘs，Ｖxs）から微小変化させたときの、上体水平位置速度境界条件誤差の変化度合いを示す感度マトリックスが求められ、その感度マトリックスに基づいて、境界条件誤差をより小さくするような初期値候補（Ｘs，Ｖxs）が新たに決定される。そして、このように上体水平位置速度の新たな初期値候補（Ｘs，Ｖxs）が決定された後、Ｓ２０６に戻る。
【０３３２】
Ｓ２１４の判断結果が否定的となる限りは上記した処理（Ｓ２０６〜Ｓ２１８の処理）が繰り返される。なお、この場合、上体水平位置速度の新たな初期値候補（Ｘs，Ｖxs）に対応する定常歩容の生成処理（Ｓ２０８）におけるＳ３００では、上体姿勢角速度の初期値は、基準上体姿勢角速度の初期値ではなく、上体水平位置速度の前回の初期値候補（Ｘs，Ｖxs）に対応するＳ２０８の処理におけるＳ３１０で決定したものに設定される。そして、Ｓ２１４の判断結果が肯定的になると、繰り返しループ（Ｓ２０４）を抜けてＳ２２０に進む。なお、Ｓ２０４の繰り返しループを抜けたときの直前に生成された仮歩容が、境界条件を満たす定常歩容として得られることとなる。
【０３３３】
Ｓ２２０では、歩容生成装置１００は、本来の初期時刻“０”（今回歩容の終端時刻）における初期上体水平位置速度（Ｘ0，Ｖx0）と初期時刻“０”における初期上体鉛直位置速度（Ｚ0，Ｖz0）と初期時刻“０”における初期上体姿勢角及び角速度とを求める。
【０３３４】
具体的には、（Ｘ0，Ｖx0）と（Ｚ0，Ｖz0）は、図２２に示したＳ４０８及びＳ４１４において、第２旋回歩容から第１旋回歩容に切り換わった瞬間の時刻、すなわち、時刻Ｔk＝Tcyc（＝Ｔe−Ｔs）であるときに決定された上体水平位置速度と上体鉛直位置速度とを、それぞれ時刻Tcycから始まる第１旋回歩容の支持脚に対応する支持脚座標系から見た値に変換してなる値に決定される。同様に、初期時刻“０”における初期上体姿勢角及び角速度は、時刻Tcycであるときに決定された上体姿勢角及び角加速度を、時刻Tcycから第１旋回歩容の支持脚に対応する支持脚座標系から見た値に変換してなる値に決定される。
【０３３５】
次いでＳ２２２に進み、歩容生成装置１００は、定常歩容初期発散成分ｑ[0]が、前記式１０に対応する次式４０により算出する。
【０３３６】
ｑ[0]＝Ｘ0＋Ｖ0／ω0      ……式４０
【０３３７】
さらに、Ｓ２２４に進み、歩容生成装置１００は、定常歩容初期発散成分ｑ[0]を、今回歩容支持脚座標系から見た値に変換してなる値を、ｑ”[0]として求める。また、歩容生成装置１００は、初期上体鉛直位置速度（Ｚ0，Ｖz0）を、今回歩容支持脚座標系から見た値に変換してなる値を、（Ｚ0”，Ｖz0”）として求める。
【０３３８】
補足すると、（Ｚ0”，Ｖz0”）は、第２旋回歩容の支持脚座標系（図１５の次次回歩容支持脚座標系）から見た第２旋回歩容の終端上体鉛直位置速度に一致している。また、ｑ”[0]は第２旋回歩容の支持脚座標系から見た第２旋回歩容の終端発散成分に一致している。従って、これらの一致関係を利用して、（Ｚ0”，Ｖz0”）及びｑ”[0]を算出するようにしてもよい。
【０３３９】
以上により、図１２のＳ０６４の処理、すなわち定常歩容の初期状態を求めるサブルーチン処理が終了する。
【０３４０】
次いで、図１２のＳ０６６に進み、歩容生成装置１００は、今回歩容の歩容パラメータを決定（一部は仮決定）する。Ｓ０６６の処理は、図２５に示すフローチャートに従って実行される。ここでは、一例として、今回歩容が走行歩容である場合について、図２５のフローチャートの処理を説明する。
【０３４１】
まず、Ｓ６００において、歩容生成装置１００は、今回歩容の足平位置姿勢軌道が定常歩容の足平位置姿勢軌道に連続的につながるように、今回歩容の足平軌道パラメータを決定する。一例として、今回歩容が走行歩容である場合、この足平軌道パラメータは、次のように決定される。
【０３４２】
今回歩容初期遊脚足平位置姿勢は、今回歩容で遊脚とされた脚体２の足平２２の、前回歩容終端での位置姿勢（今回歩容支持脚座標系から見た位置姿勢）に設定される。同様に、今回歩容初期支持脚足平位置姿勢は、今回歩容で支持脚とされた脚体２の足平２２の、前回歩容終端での位置姿勢（今回歩容支持脚座標系から見た位置姿勢）に設定される。
【０３４３】
また、今回歩容終端遊脚足平位置姿勢は、今回歩容支持脚座標系で見た前記第１旋回歩容初期支持脚足平位置姿勢（次回歩容で支持脚として予定された脚体２の足平２２の、定常歩容初期での位置姿勢）に設定される。同様に、今回歩容終端支持脚足平位置姿勢は、今回歩容支持脚座標系で見た前記第１旋回歩容初期遊脚足平位置姿勢（次回歩容で遊脚として予定された脚体２の足平２２の、定常歩容初期での位置姿勢）に設定される。
【０３４４】
次いで、Ｓ６０２に進み、歩容生成装置１００は、今回歩容の基準上体姿勢軌道が、定常歩容の基準上体姿勢軌道に連続的につながるように、今回歩容の基準上体姿勢軌道パラメータを決定する。
【０３４５】
一例として、今回歩容が走行歩容である場合、今回歩容の基準上体姿勢は、定常歩容と同じ上体姿勢角、すなわち、“０”とされる。
【０３４６】
次いで、Ｓ６０４に進み、歩容生成装置１００は、今回歩容の腕姿勢軌道パラメータを、定常歩容の腕姿勢軌道パラメータと同様に決定する。但し、今回歩容の腕姿勢軌道が定常歩容の腕姿勢軌道に連続的につながるように今回歩容の腕姿勢軌道パラメータが決定される。なお、ここで決定される腕姿勢軌道パラメータは、定常歩容の腕姿勢軌道パラメータを決定する場合と同様、Ｚ軸（あるいは上体体幹軸）まわりの両腕体の角運動量変化に関すること以外の運動パラメータ（具体的には、上体２４に対する両腕体の相対重心位置の軌道を規定するパラメータ）である。
【０３４７】
次いで、Ｓ６０６に進み、歩容生成装置１００は、今回歩容の床反力鉛直成分軌道パラメータを決定する。一例として、今回歩容が走行歩容である場合、今回歩容の床反力鉛直成分軌道パラメータは、それにより規定される床反力鉛直成分軌道が、図１７に示した定常歩容の各旋回歩容の床反力鉛直成分軌道と同様のパターンになるように決定される。すなわち、図２６に示すパターンで床反力鉛直成分軌道が変化するように、今回歩容の床反力鉛直成分軌道パラメータが決定される。
【０３４８】
この場合、床反力鉛直成分軌道パラメータは、今回歩容の全体重心鉛直位置速度と床反力鉛直成分軌道とが、定常歩容に連続的につながるように決定される。
【０３４９】
具体的には、まず、図１２のＳ０６４の処理で最終的に求めた定常歩容の初期上体位置姿勢及びその変化速度等の初期運動状態から、ロボット１のキネマティクスモデルを用いて今回歩容支持脚座標系から見た定常歩容の初期全体重心鉛直位置速度が求められる。
【０３５０】
例えば、今回歩容支持脚座標系から見た定常歩容の初期全体重心鉛直位置は、今回歩容支持脚座標系から見た定常歩容の初期上体鉛直位置に対応する図９のモデルの上体質点鉛直位置と、今回歩容支持脚座標系から見た定常歩容の初期の各足平位置に対応する図９のモデルの支持脚質点鉛直位置及び遊脚質点鉛直位置とから、前記式０４により求められる。
【０３５１】
また、今回歩容支持脚座標系から見た定常歩容の初期全体重心鉛直速度は、今回歩容支持脚座標系から見た定常歩容の上体鉛直速度に対応する図９のモデルの上体質点鉛直速度と、今回歩容支持脚座標系から見た定常歩容の初期の各足平鉛直速度に対応する図９のモデルの支持脚質点鉛直速度及び遊脚質点鉛直速度とから、前記式０４の両辺を微分してなる式により求められる。
【０３５２】
なお、これらの初期全体重心鉛直位置速度は、定常歩容の初期運動状態から、より厳密なモデルを用いて算出するようにしてもよい。
【０３５３】
そして、このようにして求めた定常歩容の初期全体重心鉛直位置速度を前記式１３及び次式４１の終端全体重心鉛直位置速度に代入すると共に、前回歩容終端の全体重心鉛直位置速度（より詳しくは、前回歩容終端の全体重心鉛直位置及び全体重心鉛直速度を今回歩容支持脚座標系から見た値）を前記式１３及び次式４１の初期全体重心鉛直位置速度に代入し、式１３及び式４１の関係を満足するように、今回歩容の床反力鉛直成分軌道パラメータが決定される。なお、式１３及び式４１における積分は今回歩容の初期から終端までの期間での積分である。
【０３５４】
終端全体重心鉛直速度−初期全体重心鉛直速度
＝（床反力鉛直成分／ロボットの質量）の１階積分
＋重力加速度の１階積分
…式４１
ただし、式４１の重力加速度は負の値とする。
【０３５５】
より具体的には、まず、図２６のような床反力鉛直成分パターンを規定する床反力鉛直成分軌道パラメータ（折れ点の時刻等）のうちの、少なくとも２つのパラメータを独立な未知変数として、その未知変数の値を、式１３と式４１とからなる連立方程式によって決定する。
【０３５６】
未知変数とするパラメータには、例えば、図２６の台形の高さ（床反力鉛直成分のピーク値）と幅（片脚支持期の時間）とを選択すればよい。この場合、図２６の台形の両側部分の傾きは今回歩容周期等に応じてあらかじめ定めた値とし、あるいは、片脚支持期から空中期に移行する時刻を除く床反力鉛直成分パターンの折れ点の時刻を今回歩容周期等に応じてあらかじめ定めた値とする。
【０３５７】
次いで、Ｓ６０８に進み、歩容生成装置１００は、床反力水平成分許容範囲[Fxmin，Fxmax]（具体的には該床反力水平成分許容範囲のパターンを規定するパラメータ）を決定する。
【０３５８】
一例として、今回歩容が走行歩容である場合、今回歩容の床反力水平成分許容範囲[Fxmin，Fxmax]は、図１８に示した各旋回歩容の床反力水平成分許容範囲と同様に決定される。たとえば図２７に示すようなパターンで床反力水平成分許範囲が設定される。本実施形態では、先にＳ６０６で決定した床反力鉛直成分軌道から、前記式１２ａ，１２ｂに基づいて床反力水平成分許容範囲が決定される。
【０３５９】
次いで、Ｓ６１０に進み、歩容生成装置１００は、今回歩容のＺＭＰ軌道を規定するＺＭＰ軌道パラメータを仮決定する。
【０３６０】
この場合、該ＺＭＰ軌道パラメータは、これにより規定される目標ＺＭＰが、安定余裕が高く、且つ急激に変化しないようにしつつ、前回歩容の終端での目標ＺＭＰから、定常歩容の初期の目標ＺＭＰまで、今回歩容における支持多角形内で連続的に変化するように仮決定される。
【０３６１】
一例として、今回歩容が走行歩容である場合、今回歩容の目標ＺＭＰ軌道は、定常歩容が走行歩容である場合について先に説明した各旋回歩容におけるパターンと同様のパターンで設定される。例えば、今回歩容の目標ＺＭＰ軌道のＸ軸方向位置は、図２８に示す如く決定される。今回歩容の目標ＺＭＰ軌道のＹ軸方向位置についても同様である。そして、この目標ＺＭＰ軌道の折れ点の位置や時刻が、今回歩容の目標ＺＭＰ軌道パラメータとして決定される。
【０３６２】
補足すると、Ｓ６１０で決定される今回歩容のＺＭＰ軌道パラメータは、仮決定されただけであり、後述するように修正される。そこで、上記のごとくＳ６１０で仮決定したＺＭＰ軌道パラメータにより規定される今回歩容のＺＭＰ軌道を、以降、今回歩容の仮目標ＺＭＰ軌道という。
【０３６３】
次いで、Ｓ６１２に進み、歩容生成装置１００は、上体姿勢復元期間[Ｔa，Ｔb]を決定する。上体姿勢復元期間の開始時刻Ｔaは、定常歩容の第２旋回歩容におけるＴmに相当し、上体姿勢復元期間の終了時刻Ｔbは、定常歩容の第２旋回歩容におけるＴs2に相当するものである。これらの時刻Ｔa，Ｔbの設定の仕方は、それぞれＴm及びＴs2の設定の仕方と同様である。従って、上体姿勢復元期間[Ｔa，Ｔb]は、図２６に例示する如く決定される。
【０３６４】
以上がＳ０６６で実行される処理である。
【０３６５】
図１２に戻って、上記のごとくＳ０６６の処理（今回歩容の歩容パラメータを決定もしくは仮決定する処理）を行った後、次いでＳ０６８に進み、歩容生成装置１００は、今回歩容の歩容パラメータを修正する（今回歩容パラメータを確定する）。ここで修正する歩容パラメータは、前記仮目標ＺＭＰ軌道を規定するＺＭＰ軌道パラメータである。このＳ０６８の処理では、今回歩容の上体位置姿勢軌道を定常歩容に連続させ、もしくは漸近させるべくＺＭＰ軌道パラメータが修正される。
【０３６６】
このＳ０６８の処理は、具体的には、図２９のフローチャートに従って実行される。
【０３６７】
まずＳ７００を経てＳ７０２に進み、仮今回歩容パラメータを基に、今回歩容の終端時刻までの仮今回歩容が生成される。なお、仮今回歩容パラメータは、仮目標ＺＭＰ軌道（Ｓ０６６又は後述のＳ７１６で決定された仮目標ＺＭＰ軌道）を規定するＺＭＰ軌道パラメータと、Ｓ０６６で前記した如く決定された、ＺＭＰ軌道パラメータ以外の歩容パラメータとの組を意味する。
【０３６８】
一例として、今回歩容が走行歩容である場合のＳ７０２の処理は、具体的には、図３０のフローチャートに従って実行される。
【０３６９】
以下説明すると、歩容生成装置１００は、まず、Ｓ８００において、仮今回歩容の生成用時刻Ｔk等の初期化を行なう。具体的には、仮今回歩容の生成用時刻Ｔkが現在時刻ｔに初期化される。また、時刻ｔ−Δｔで歩容生成装置１００が既に決定した目標上体位置及び目標上体速度、目標上体姿勢角及びその角速度、目標足平位置姿勢、目標腕姿勢など、時刻ｔ−Δｔでの目標歩容の運動状態（今回歩容支持脚座標系で見た運動状態）が、仮今回歩容の現在時刻ｔの直前の初期運動状態として設定される。
【０３７０】
次いで、Ｓ８０２を経てＳ８０４において、歩容生成装置１００は、仮歩容生成用時刻Ｔkが今回歩容の終端時刻Ｔcurr以前の時刻であるか否か（Ｔk≦Ｔcurrであるか否か）を判断する。そして、この判断結果が肯定的である場合には、Ｓ８０６に進み、歩容生成装置１００は、今回歩容の瞬時値（時刻Ｔkでの値）を決定する。次いでＳ８０８に進み、歩容生成装置１００は、仮歩容生成用時刻Ｔkを所定の刻み時間ΔＴkだけ増加させた後、Ｓ８０４の判断を再び行なう。なお、刻み時間ΔＴkは、例えば、制御周期Δｔに一致する時間である。
【０３７１】
また、Ｓ８０４の判断結果が否定的である場合には、図３０に示すフローチャートの処理が完了する。
【０３７２】
以上の処理により、仮今回歩容が初期から終端まで生成される。
【０３７３】
Ｓ８０６の処理は、具体的には、図３１のフローチャートに従って実行される。
【０３７４】
まずＳ９００において、歩容生成装置１００は、歩容パラメータ（詳しくは仮今回歩容の床反力鉛直成分軌道パラメータ）を基に、図２６に示した目標床反力鉛直成分の時刻Ｔkでの瞬時値を求める。
【０３７５】
次いで、Ｓ９０２において、歩容生成装置１００は、歩容パラメータ（詳しくは、仮今回歩容のＺＭＰ軌道パラメータ）を基に、時刻Ｔkでの仮目標ＺＭＰの瞬時値を求める。
【０３７６】
次いでＳ９０４に進み、歩容生成装置１００は、歩容パラメータ（詳しくは、足平軌道パラメータ、基準上体姿勢軌道パラメータ及び腕姿勢軌道パラメータ）を基に、時刻Ｔkにおける目標足平位置姿勢、基準上体姿勢及び目標腕姿勢の瞬時値をそれぞれ求める。但し、目標腕姿勢に関しては、より詳しくは両腕体の全体重心位置が決定されるが、鉛直軸（又は上体２４の体幹軸）まわりの角運動量を変化させる腕体の運動（腕振り運動）は、未だ決定されていない。
【０３７７】
なお、時刻Ｔkでの目標足平位置姿勢の瞬時値は、図２０のＳ２００で初期時刻Ｔsでの足平位置姿勢を求めた場合と同様に、有限時間整定フィルタを使用して求められる。
【０３７８】
次いでＳ９０６に進み、歩容生成装置１００は、Ｓ９００で求めた目標床反力鉛直成分を満足する（ロボット１の鉛直方向の慣性力と重力との和を目標床反力鉛直成分に釣り合わせる）ような全体重心鉛直位置速度を算出する。この算出は、具体的には図２２のＳ４０６と同様の処理により行なわれる。
【０３７９】
次いでＳ９０８に進み、歩容生成装置１００は、上記の如く求めた全体重心鉛直位置を満足する上体鉛直位置の時刻Ｔkでの瞬時値を算出する。この算出は、具体的には、前記図２２のＳ４０８と同様の処理により行なわれる。
【０３８０】
次いでＳ９１０に進み、歩容生成装置１００は、歩容パラメータ（詳しくは、仮今回歩容の床反力水平成分許容範囲を規定するパラメータ）に基づいて、図２７に示す床反力水平成分許容範囲[Fxmin，Fxmax]の時刻Ｔkにおける瞬時値を算出する。
【０３８１】
次いでＳ９１２に進み、歩容生成装置１００は、仮今回歩容の時刻Ｔkでの上体水平加速度と上体姿勢角加速度とを決定する。このＳ９１２の処理は、図２２のＳ４１２の処理と若干相違し、前記補償全床反力モーメント分配器１１０から歩容生成装置１００に入力されるモデル操作床反力モーメントが反映される。すなわち、Ｓ９１２の処理では、上体水平加速度と上体姿勢角速度とは、目標ＺＭＰ周りにモデル操作床反力モーメントが発生し、且つ、ロボット１の水平方向の慣性力に釣り合う床反力水平成分Ｆxが許容範囲[Fxmin，Fxmax]から逸脱しないという条件を満足するように決定される。
【０３８２】
この処理は、具体的には、図３２のフローチャートに示す如く実行される。
【０３８３】
まずＳ１０００おいて、歩容生成装置１００は、時刻Ｔkが図２５のＳ６１２で設定した上体姿勢復元期間[Ｔa，Ｔb]内の時刻であるか否かを判断する。
【０３８４】
この判断結果が否定的である場合（時刻Ｔkでの床反力水平成分許容範囲が比較的狭いか、もしくは“０”である場合）には、歩容生成装置１００は、Ｓ１００２からＳ１０１４までの処理を実行する。
【０３８５】
Ｓ１００２では、歩容生成装置１００は、補償全床反力モーメント分配器１１０から入力される時刻Ｔkでのモデル操作床反力モーメントが図９の動力学モデル上で目標ＺＭＰまわりに発生するように（ロボット１の慣性力と重力との合力が目標ＺＭＰまわりに発生するモーメントの水平成分がモデル操作床反力モーメントに釣り合うように）、仮今回歩容の時刻Ｔkでの上体水平加速度αtmpを算出する。
【０３８６】
但し、この場合、時刻Ｔkが現在時刻ｔよりも後の時刻である場合には、歩容生成装置１００には、未だ補償全床反力モーメント分配器１１０からモデル操作床反力モーントが入力されていない。このため、時刻Ｔkが現在時刻ｔよりも後の時刻である場合には、歩容生成装置１００は、該時刻Ｔkでのモデル操作床反力モーメントを“０”として（すなわち、目標ＺＭＰの周りの床反力モーメントの水平成分が“０”となるように）、仮今回歩容の時刻Ｔkでの上体水平加速度αtmpを算出する。
【０３８７】
従って、本実施形態におけるＳ１００２の処理では、時刻Ｔkが現在時刻ｔである場合には、時刻Ｔkでの上体水平加速度αtmpは、補償全床反力モーメント分配器１１０から歩容生成装置１００に実際に入力される現在時刻ｔでのモデル操作床反力モーメントが目標ＺＭＰまわりに発生するように決定される。一方、時刻Ｔkが現在時刻ｔよりも後の時刻である場合には、時刻Ｔkでの上体水平加速度αtmpは、目標ＺＭＰを満足するように決定される。
【０３８８】
この場合、モデル操作床反力モーメントが“０”である場合の上体水平加速度の決定の仕方は、図２３のＳ５０４の処理と同じである。一方、モデル操作床反力モーメントが“０”でない場合には、前記式０３のＭyを、“０”の代わりに、モデル操作床反力モーメントに一致させた式から算出される上体質点水平加速度d2Xb/dt2が上体水平加速度αtmpとして求められる。
【０３８９】
なお、現在時刻ｔよりも後のモデル操作床反力モーメントを現在時刻ｔ又はそれ以前に歩容生成装置１００に入力されたモデル操作床反力モーメントから予測し、その予測されたモデル操作床反力モーメントを目標ＺＭＰ周りに発生させるように、現在時刻ｔよりも後の時刻Ｔkでの上体水平加速度を決定するようにしてもよい。
【０３９０】
以上の如くＳ１００２の処理を実行した後のＳ１００４〜Ｓ１０１４の処理は、図２３のＳ５０６〜Ｓ５１６の処理と同じである。従って、これらの処理の説明は省略する。
【０３９１】
一方、Ｓ１０００の判断結果が肯定的である場合（時刻Ｔkでの床反力水平成分の許容範囲が比較的広い場合）には、Ｓ１０１６に進み、歩容生成装置１００は、上体姿勢復元モーメントＺＭＰ換算値ＺＭＰrecのパターンを設定する。この場合、定常歩容の生成に係わる図２３のＳ５１８と異なり、ＺＭＰrecは、一定値“０”となるパターン（すなわち図２４に示す台形パターンの高さが“０”であるパターン）に設定される。
【０３９２】
次に、Ｓ１０１８からＳ１０２６までの処理が行われる。これらの処理のうちのＳ１０１８、Ｓ１０２０では、それぞれ、図２３のＳ５２０、Ｓ５２２と同じ処理が実行される。
【０３９３】
また、Ｓ１０２０に続くＳ１０２２では、歩容生成装置１００は、前記Ｓ１００２と同じ処理を実行することで、モデル操作床反力モーメントを反映させて上体水平加速度αtmpを算出する。
【０３９４】
そして、Ｓ１０２２の後のＳ１０２４、Ｓ１０２６では、それぞれ、図２３のＳ５２６、Ｓ５２８と同じ処理が実行される。
【０３９５】
なお、Ｓ１０１６〜Ｓ１０２６の処理では、上体姿勢復元モーメントＺＭＰ換算値ＺＭＰrecの瞬時値は常に“０”になるので、Ｓ１０２０で求められる上体姿勢角加速度βは、時刻Ｔkでの基準上体姿勢角加速度β0に一致する。従って、β＝β0として、Ｓ１０２２、Ｓ１０２４及びＳ１０２６の処理のみを行なうようにしてもよい。また、Ｓ１０２４で算出される上体水平加速度αは、常にαtmpに一致するので、Ｓ１０２４の処理は省略してもよい。
【０３９６】
以上のごとく図３１のＳ９１２の処理を完了した後、次いでＳ９１４に進み、歩容生成装置１００は、Ｓ９１２で求めた上体水平加速度を時刻Ｔkまでの期間で逐次積分することにより時刻Ｔkでの上体水平速度を求める。さらに、歩容生成装置１００は、その上体水平速度を時刻Ｔkまでの期間で逐次積分することにより、時刻Ｔkでの上体水平位置を求める。また、歩容生成装置１００は、Ｓ９１２で求めた上体姿勢角加速度を時刻Ｔkまでの期間で逐次積分することにより時刻Ｔkでの上体姿勢角速度を求める。さらに、歩容生成装置１００は、その上体姿勢角速度を時刻Ｔkまでの期間で逐次積分することにより、時刻Ｔkでの上体姿勢角を求める。
【０３９７】
以上のごとく図２９のＳ７０２の処理（終端時刻までの仮今回歩容の生成処理）が完了した後、次にＳ７０４に進む。このＳ７０４では、歩容生成装置１００は、Ｓ７０２で求めた仮今回歩容の終端での上体水平位置速度（Ｘe，Ｖxe）（Ｘe：仮今回歩容の終端上体水平位置、Ｖxe：仮今回歩容の終端上体水平速度）から、前記式１０に基づいて仮今回歩容の終端発散成分ｑe1（＝Ｘe＋Ｖxe／ω0）を算出する。
【０３９８】
次いでＳ７０６に進み、歩容生成装置１００は、仮今回歩容の終端発散成分ｑe1と、図２０のＳ２２４で先に求めた定常歩容の初期発散成分ｑ0”との差である終端発散成分誤差errq（＝ｑe1−ｑ0”）を算出する。
【０３９９】
次いで、Ｓ７０８に進んで、歩容生成装置１００は、算出した終端発散成分誤差errqが許容範囲内（“０”近傍の所定の範囲）にあるか否か判断する。
【０４００】
このＳ７０８の判断結果が否定的である場合には、Ｓ７１０に進み、歩容生成装置１００は、ａ＝Δａ（Δａ：所定の微小量）として、図２８に示す如く設定した台形パターンのＺＭＰ修正量によって、同図に示す如く仮目標ＺＭＰ軌道を修正してなる目標ＺＭＰ軌道を用いて、前記Ｓ７０２と同様に、終端時刻までの仮今回歩容を生成する。すなわち、歩容生成装置１００は、Ｓ７０２での仮今回歩容の生成に用いた仮目標ＺＭＰ軌道の代わりに、それを修正してなる目標ＺＭＰ軌道を用いて、改めて仮今回歩容を生成する。この場合、目標ＺＭＰ以外の今回歩容パラメータは、Ｓ７０２で使用したものと同じである。
【０４０１】
ここで、上記ＺＭＰ修正量は、今回歩容の終端発散成分を定常歩容の初期発散成分にできるだけ一致させる（ひいては、今回歩容の上体位置姿勢軌道を将来において、定常歩容の上体位置姿勢軌道に収束させる）ために、仮目標ＺＭＰの修正を行なう（仮目標ＺＭＰに加え合わせる）修正量を意味する。そして、本実施形態では、このＺＭＰ修正量は、台形パターンの修正量とされ、この台形パターンの高さが、上記“ａ”である。
【０４０２】
この場合、本実施形態では、仮目標ＺＭＰ軌道の修正は、床反力水平成分許容範囲が十分に広いものとなる期間としての前記上体姿勢復元期間[Ｔa，Ｔb]で行なうようにしており、上記台形パターンは、上体姿勢復元期間[Ｔa，Ｔb]内で設定されている。なお、この上体姿勢復元期間[Ｔa，Ｔb]は、支持脚足平２２の底面のほぼ全面が接地する期間（足底全面接地期間）でもある。また、上記台形パターンのＺＭＰ修正量の折れ点の時刻は、仮目標ＺＭＰ軌道の折れ点の時刻に合わせて設定されている。なお、Ｓ７１０でａ＝Δａ（Δａ：所定の微小量）とするのは、現在の仮目標ＺＭＰ軌道を上記台形パターンのＺＭＰ修正量によって微小量だけ、修正したときの前記終端発散成分誤差errqの変化を観測するためである。
【０４０３】
補足すると、Ｓ７１０の上記の処理では、目標ＺＭＰのＸ軸方向位置を修正することを例に採って説明したが、実際には目標ＺＭＰのＹ軸方向位置の修正も併せて行なわれる。そのＹ軸方向位置の修正は、Ｘ軸方向位置の修正と同様に、目標ＺＭＰ軌道を仮目標ＺＭＰ軌道から台形パターンで変化させるように行なわれる。この場合、上記Δａは各軸方向で同じ値でよいが、互いに異なる値に設定してもよい。
【０４０４】
なお、Ｘ軸方向及びＹ軸方向の一方の軸方向での目標ＺＭＰ軌道の修正が、他方の軸方向での終端発散成分に影響を及ぼさないか、もしくはその影響が十分に小さい場合には、Ｓ７１０から、後述のＳ７１６までの処理をＸ軸方向とＹ軸方向とで各別に行なうようにしてもよい。
【０４０５】
また、上記Δａは、微小量の定数でよいが、以下に説明する繰り返し演算によって終端発散成分誤差errqが小さくなるにつれてΔａを減少させるように該Δａを設定するようにしてもよい。
【０４０６】
上記のようにＳ７１０にて、ＺＭＰ修正量による修正後の仮目標ＺＭＰ軌道を用いて仮今回歩容を生成した後、次にＳ７１２に進む。このＳ７１２では、歩容生成装置１００は、Ｓ７１０で生成した仮今回歩容の終端での上体水平位置速度（Ｘe1，Ｖxe1）（Ｘe1：仮今回歩容の終端上体水平位置、Ｖxe1：仮今回歩容の終端上体水平速度）から、前記式１０に基づいて、仮今回歩容（Ｓ７１０で生成した仮今回歩容）の終端発散成分ｑe2（＝Ｘe1＋Ｖxe1／ω0）を算出する。
【０４０７】
次いでＳ７１４に進み、歩容生成装置１００は、パラメータ感度ｒ（Δａに対する終端発散成分誤差errqの変化の割合）を図中に示す式により算出する。すなわち、ｑe2とｑe1との差をΔａにより除算することにより、パラメータ感度ｒが算出される。
【０４０８】
次いで、さらに、Ｓ７１６に進み、歩容生成装置１００は、ａ＝−errq／r、すなわちＳ７０６で求めた終端発散成分誤差errqを、Ｓ７１４で求めたパラメータ感度ｒで除算してなる値を高さａとすることによって台形パターンのＺＭＰ修正量を設定し、このＺＭＰ修正量により仮目標ＺＭＰ軌道（Ｓ７０２の処理で仮今回歩容を生成するために使用した仮目標ＺＭＰ軌道）を修正することによって、新たな仮目標ＺＭＰ軌道を決定する。
【０４０９】
次いで、歩容生成装置１００は、Ｓ７０２からの処理を再び実行する。なお、この場合、Ｓ７０２では、Ｓ７１６で決定された新たな仮目標ＺＭＰ軌道を用いて、仮今回歩容が生成される。
【０４１０】
そして、Ｓ７０８の判断結果が否定的となる限りは、上記したＳ７０２〜Ｓ７１６の処理が繰り返され、Ｓ７０８の判断結果が肯定的となった場合には、その繰り返しループを抜けてＳ７１８に進む。
【０４１１】
以上のＳ７０２〜Ｓ７１６の処理の繰り返しによって、仮目標ＺＭＰ軌道は、仮今回歩容の終端発散成分が定常歩容の初期発散成分に一致もしくはほぼ一致するように修正されることとなる。
【０４１２】
次に、Ｓ７１８では、歩容生成装置１００は、仮今回歩容（Ｓ７０２〜Ｓ７１６の繰り返しループを抜ける直前のＳ７０２で生成された仮今回歩容）と定常歩容とを基に、今回歩容の上体姿勢角を定常歩容の上体姿勢角に近づけるように、今回歩容の上体姿勢復元モーメントＺＭＰ換算値（ＺＭＰrec）のパターンを決定する。
【０４１３】
この場合、上体姿勢復元モーメントＺＭＰ換算値（ＺＭＰrec）のパターンは、仮今回歩容の終端上体姿勢角と定常歩容の初期上体姿勢角との差、及び仮今回歩容の終端上体姿勢角速度と定常歩容の初期上体姿勢角速度との差などを基に決定される。
【０４１４】
ここで決定するＺＭＰrecは、後述する今回歩容の瞬時値の生成処理（Ｓ０３２の処理）で、床反力水平成分許容範囲が十分に大きいものとなる期間（前記上体姿勢復元期間[Ｔa，Ｔb]）において、上体姿勢角軌道を定常歩容につながらせる（近づける）ように上体姿勢角加速度を発生させても、今回歩容終端発散成分と定常歩容初期発散成分との一致性（Ｓ７０８の条件）を維持できるように、仮目標ＺＭＰを修正するためのものである。
【０４１５】
このＺＭＰrecは、前記定常歩容の生成処理で説明したものと同様に台形状のパターンであり、次のように決定される。すなわち、図２４に例示したＺＭＰrecの台形パターンにおいて、台形の頂点（折れ点）の時刻は、前記上体姿勢復元期間[Ｔa，Ｔb]内の所定の時刻（例えば前記ＺＭＰ修正量の台形パターンの折れ点の時刻）とされる。そして、台形高さを未知数のパラメータとし、以下のようにＺＭＰrecの台形高さが求められる。なお、Ｓ７１８では図２４におけるＴm及びＴs2をそれぞれＴa，Ｔbに置き換えるものとする。
【０４１６】
上記のように上体姿勢復元モーメントＺＭＰ換算値ＺＭＰrecのパターンの未知数のパラメータが１つである場合には、今回歩容の終端において上体姿勢角と上体姿勢角速度との両方を定常歩容に連続につなげることは一般的にはできない。そこで、本実施形態では、複数の歩容周期で徐々に、生成される歩容の状態が定常歩容の状態に近づくように、未知数のパラメータを決定することとする。
【０４１７】
補足すると、ＺＭＰrecのパターンをより複雑にすることによって、そのパターンの未知数のパラメータを２つ以上にしてもよい。そして、今回歩容の終端において上体姿勢角と上体姿勢角速度との両者を定常歩容に連続につなげるように２つ以上の未知数のパラメータを決定するようにしてもよい。ただし、このようにした場合には、ＺＭＰrecのパターンがジグザグに変動し過ぎるおそれがある。
【０４１８】
ＺＭＰrecの未知数のパラメータとしての台形高さは、以下に説明する如く決定される。
【０４１９】
以下では、算出原理を説明した後、算出手順を説明する。
【０４２０】
前述のごとくＳ７０２でＺＭＰrec＝０として生成した仮今回歩容の終端上体姿勢角と定常歩容の初期上体姿勢角との差をθerrとする。また、この仮今回歩容の終端上体姿勢角速度と定常歩容の初期上体姿勢角速度との差をＶθerrとする。
【０４２１】
ここで、ＺＭＰrecのパターンの台形高さをある値bcurrとして今回歩容を生成し、引き続いて、今回歩容と同様のアルゴリズムによって定常歩容の第１旋回歩容を生成する場合を想定する。但し、第１旋回歩容の上体姿勢復元モーメントＺＭＰ換算値ＺＭＰrecパターンの高さは、図２３のＳ５１８において求められた第１旋回歩容のＺＭＰrecパターンの高さ（図２４に例示する台形パターンの高さ）とある値b1との和であるとする。
【０４２２】
このようにして生成された歩容をＺＭＰrec修正歩容と呼び、その終端（第１旋回歩容の終端）の上体姿勢角とその角速度とをそれぞれθ1、Ｖθ1とする。
【０４２３】
図１２のＳ０６４の処理（定常歩容の初期状態を決定する処理）が完了した時点で求められた本来の定常歩容（最終的にＳ３１０で決定された定常歩容の初期上体姿勢角及び角速度を初期値とし、第１旋回歩容及び第２旋回歩容のそれぞれのＺＭＰrecのパターンをＳ５１８において求められたパターンとした場合の定常歩容）の第１旋回歩容の終端上体姿勢角と角速度とをそれぞれθ1org、Ｖθ1orgとする。
【０４２４】
ここで、Δθ1、ΔＶθ1を次のように定義する。
【０４２５】
Δθ1＝θ1−θ1org      ……式５０
ΔＶθ1＝Ｖθ1−Ｖθ1org      ……式５１
上記Δθ1は、ＺＭＰrec修正歩容の終端における上体姿勢角と本来の定常歩容の第１旋回歩容の終端における上体姿勢角との差を意味する。同様に、Ｖθ1は、ＺＭＰrec修正歩容の終端における上体姿勢角速度と本来の定常歩容の第１旋回歩容の終端における上体姿勢角速度との差を意味する。もし、Δθ1及びΔＶθ1が“０”になれば、ＺＭＰrec修正歩容に引き続いて、今回歩容と同様のアルゴリズムによって、ＺＭＰrecパターンをＳ５１８において求められた第２旋回歩容用のＺＭＰrecに一致させて該第２旋回歩容を生成すれば、その第２旋回歩容の上体姿勢角と角速度とに関しては、本来の定常歩容の第２旋回歩容のそれに一致する。
【０４２６】
従って、Δθ1及びΔＶθ1が“０”となるbcurr（以降、今回歩容台形高さbcurrという）とb1（以降、第１旋回歩容台形高さb1という）とを求め、求めたbcurrを今回歩容の台形高さとして最終的に決定すればよい。
【０４２７】
一方、ロボット１の上体姿勢角に関する動力学モデルが、図９に示すフライホイールFHのような線形特性を持つことから、Δθ1及びΔＶθ1は、今回歩容台形高さbcurr、第１旋回歩容台形高さb1、仮今回歩容の終端上体姿勢角と定常歩容の初期上体姿勢角との差θerr、仮今回歩容の終端上体姿勢角速度と定常歩容の初期上体姿勢角速度との差Ｖθerrと以下の関係を持つ。
【０４２８】
Δθ1＝c11＊bcurr＋c12＊b1＋θerr＋e1＊Ｖθerr    ……式５２
ΔＶθ1＝c21＊bcurr＋c22＊b1＋e2＊Ｖθerr    ……式５３
但し、c11、c12、c21、c22、e1、e2は、今回歩容の歩容周期、第１旋回歩容の歩容周期、上体姿勢復元モーメントＺＭＰ換算値ＺＭＰrecのパターンのパラメータ（特に時間に関するパラメータ）などによって一義的に決定される係数である。
【０４２９】
以上の原理に基づき、歩容生成装置１００は、ＺＭＰrecの未知数のパラメータとしての台形高さを、次のように決定する。
【０４３０】
まず、歩容生成装置１００は、仮今回歩容と定常歩容との境界での上体姿勢角の差θerrと上体姿勢角速度の差Ｖθerrとを求める。
【０４３１】
次いで、歩容生成装置１００は、式５２，５３の係数であるc11、c12、c21、c22、e1、e2を、今回歩容の歩容周期、第１旋回歩容の歩容周期、上体姿勢復元モーメントＺＭＰ換算値ＺＭＰrecのパターンのパラメータ（特に時間に関するパラメータ）などを基に決定する。
【０４３２】
次いで、歩容生成装置１００は、式５２、式５３の右辺の演算結果の値が“０”となるように今回歩容台形高さbcurr及び第１旋回歩容台形高さb1を決定する。すなわち、式５２、式５３の左辺を“０”とした連立方程式を解くことによって、bcurr、b1が求められる。
【０４３３】
そして、歩容生成装置１００は、上記の如く求めたbcurrを、今回歩容の上体姿勢復元モーメントＺＭＰ換算値（ＺＭＰrec）の台形パターンの台形高さとして決定する。
【０４３４】
以上の如くＳ７１８で上体姿勢復元モーメントＺＭＰ換算値ＺＭＰrecのパターンを決定した後、次に、Ｓ７２０に進む。このＳ７２０では、歩容生成装置１００は、現在の仮目標ＺＭＰ軌道（Ｓ７０２〜Ｓ７１６の繰り返しループを抜けたときの仮目標ＺＭＰ軌道）に、Ｓ７１８で決定した上体姿勢復元モーメントＺＭＰ換算値のパターンを重畳する（加え合わせる）ことによって得られるパターンを、今回歩容の目標ＺＭＰ軌道として決定する。
【０４３５】
以上の如く、仮目標ＺＭＰ軌道に上体姿勢復元モーメントＺＭＰ換算値のパターンを重畳することによって今回歩容の目標ＺＭＰ軌道を決定することによって、上体水平位置軌道を仮今回歩容の水平位置軌道からずらさない（ひいては、今回歩容の終端発散成分が定常歩容の初期発散成分とほぼ一致する状態を保つ）ようにしつつ、今回歩容の上体姿勢角軌道が定常歩容につながるように、今回歩容の歩容パラメータが最終的に決定されることとなる。
【０４３６】
図１２に戻って、上記のごとくＳ０６８において今回歩容パラメータを修正した後（今回歩容パラメータを確定した後）、Ｓ０７０に進み、歩容生成装置１００は、修正後の目標ＺＭＰ軌道が、ＺＭＰ存在許容領域条件を満足するか否かを判断する。
【０４３７】
ここで、Ｓ０６６で設定される仮目標ＺＭＰ軌道は、前記したように支持多角形内に存在する（詳しくは、仮目標ＺＭＰ軌道の各時刻での瞬時値が、その時刻での支持多角形内に存在する）ように設定されるものの、その仮目標ＺＭＰ軌道は、今回歩容のロボット１の運動軌道を、将来において定常歩容の運動軌道に収束させるようにする（具体的には、今回歩容の終端発散成分を定常歩容の初期発散成分に一致もしくはほぼ一致させる）ために、Ｓ０６８において前記ＺＭＰ修正量等によって修正される。このため、Ｓ０６８で決定される修正後の目標ＺＭＰ軌道は、支持多角形内の領域から逸脱してしまう場合もある。
【０４３８】
Ｓ０７０の判断処理は、このことを確認するための処理であり、この判断処理におけるＺＭＰ存在許容領域条件というのは、目標ＺＭＰ軌道の各時刻での瞬時値が、その時刻での支持多角形内の所定のＺＭＰ存在許容領域内に存在するという必要条件である。
【０４３９】
Ｓ０７０では、より具体的には、歩容生成装置１００は、Ｓ０６６で決定した足平位置姿勢軌道パラメータに基づいて、今回歩容の各足平２２の足平位置姿勢軌道を算出し、この足平位置姿勢軌道に基づいて、現在時刻ｔ（歩容生成装置１００の現在の制御周期の時刻）から今回歩容終端までの各時刻（所定の刻み時間毎の時刻）での支持多角形を算出する。さらに、歩容生成装置１００は、その支持多角形内にＺＭＰ存在許容領域を設定する。
【０４４０】
この場合、ＺＭＰ存在許容領域は、支持多角形に一致する領域でよいが、余裕を見込んで、該支持多角形よりも若干小さめの領域であってもよい。また、ＺＭＰ存在許容領域の外形は、支持多角形の外形と同じ形状でよいことはもちろんであるが、該支持多角形内に収まる範囲内で支持多角形と異なる形状（例えば単なる長方形等、支持多角形よりも単純な形状）であってもよい。
【０４４１】
そして、歩容生成装置１００は、今回歩容の各時刻（現在時刻以後の各時刻）での目標ＺＭＰが、その時刻でのＺＭＰ存在許容領域内に存するか否かによって、目標ＺＭＰ軌道がＺＭＰ存在許容領域条件を満足するか否かを判断する。Ｓ０７０の判断結果が肯定的である場合には、Ｓ０７２に進み、歩容生成装置１００は、適切な今回歩容（前記脚体ロボット１の継続的な運動を行ない得る今回歩容）を生成可能であるとして、フラグの値を“１”に設定する。
【０４４２】
また、Ｓ０７０の判断結果が否定的である場合には、歩容生成装置１００は、次にＳ０７４の判断処理を実行する。このＳ０７４では、前記した幾何学的脚体運動必要条件を満足し得る範囲内で、前記ＺＭＰ存在許容領域条件と運動継続性必要条件とを満足させるように次回歩容の支持脚足平２２の目標着地位置を変更可能か否かを判断する。
【０４４３】
ここで、上記運動継続性必要条件というのは、一般的に言えば、生成されるロボット１の目標運動軌道が、ロボット１の姿勢を崩すことなく、安定な姿勢でロボット１の継続的な運動を行なうことができる目標運動軌道となるという条件である。
【０４４４】
この場合、本実施形態では、歩容生成装置１００は、今回歩容の運動軌道における終端発散成分を定常歩容の初期発散成分に一致もしくはほぼ一致させるように、該今回歩容の運動軌道をロボット１の動力学モデルを用いて生成することによって、換言すれば、将来において定常歩容の運動軌道に収束させ得る今回歩容の運動軌道を生成することによって、上記運動継続性必要条件を満足させるように、動力学モデルを用いて今回歩容の運動軌道を生成する。そして、この場合、このように運動継続性必要条件を満足させ得る今回歩容の運動軌道を生成するために、歩容生成装置１００は、動力学モデル上でロボット１に作用させる床反力に係わる要素としての目標ＺＭＰ軌道を調整する。
【０４４５】
また、今回歩容の各時刻における前記支持多角形は、両脚体２，２の足平２２，２２の運動軌道に依存するので、例えば、次回歩容の支持脚足平２２の目標着地位置（ひいては次回歩容支持脚座標系）を変更すれば、該支持多角形の時系列パターンも変化することとなる。
【０４４６】
従って、Ｓ０７４の判断処理で、幾何学的脚体運動必要条件を満足し得る範囲内で、前記ＺＭＰ存在許容領域条件と運動継続性必要条件とを満足させるように次回歩容の支持脚足平２２の目標着地位置を変更可能か否かということは、換言すれば、次回歩容の支持脚足平２２の目標着地位置を変更したと仮定した場合に、前記支持多角形内のＺＭＰ存在許容領域に目標ＺＭＰの瞬時値を存在させるようにしつつ、前記運動継続性必要条件を満足させるように今回歩容の目標ＺＭＰ軌道を設定することができ、且つ、次回歩容の支持脚足平２２の変更後の目標着地位置を前記幾何学的脚体運動必要条件を満足させるための前記幾何学的着地許容領域に存在させるようにすることができるか否かということを意味する。
【０４４７】
かかるＳ０７４の判断処理は、例えば次のように行うことができる。すなわち、歩容生成装置１００は、Ｓ０７０の判断結果が否定的となった目標ＺＭＰ軌道の、ＺＭＰ存在許容領域からの逸脱量や逸脱方向等に応じて、次回歩容の支持脚足平２２の目標着地位置の変更量（次回歩容支持脚座標系の原点位置の変更量）を設定する。該変更量（変更方向を含む）は、Ｓ０４０の処理の中で、先に決定された最新の次回歩容支持脚座標系に対応する支持脚足平２２の目標着地位置からの変更量である。また、該変更量は、その大きさが所定の範囲内に制限される。
【０４４８】
そして、歩容生成装置１００は、次回歩容の支持脚足平２２の変更後の目標着地位置が、Ｓ０６０で説明した如く今回歩容支持脚座標系で設定した前記幾何学的着地許容領域内に存在するか否かを判断する。そして、歩容生成装置１００は、変更後の目標着地位置が幾何学的着地許容領域内に存在しない場合、すなわち先に決定された最新の次回歩容支持脚座標系に対応する支持脚足平２２の目標着地位置が幾何学的着地許容領域の境界又はその近辺に設定されていて、変更後の目標着地位置が該幾何学的着地許容領域から逸脱してしまう場合には、Ｓ０７４の判断結果が否定的であるとする。
【０４４９】
また、次回歩容の支持脚足平２２の変更後の目標着地位置が、今回歩容支持脚座標系で設定した前記幾何学的着地許容領域に存在する場合には、歩容生成装置１００は、次回歩容支持脚座標系の原点位置を、変更後の目標着地位置に対応する位置に設定しつつ、次回歩容支持脚座標系及び次次回歩容支持脚座標系と、今回歩容周期及び次回歩容周期を改めて設定する。この場合の各支持脚座標系及び歩容周期の設定の仕方は、次回歩容支持脚座標系の原点位置の設定以外は、前記したＳ０６０の処理での設定の仕方と同じでよい。
【０４５０】
次いで、歩容生成装置１００は、改めて設定した次回歩容支持脚座標系及び次次回歩容支持脚座標系と、今回歩容周期及び次回歩容周期とを前提として、前記したＳ０６２からＳ０７０までの処理と同じ処理を実行する。そして、このときのＳ０７０の判断結果が肯定的となる場合には、歩容生成装置１００は、Ｓ０７４の判断結果が肯定的であるとする。
【０４５１】
また、このときのＳ０７０の判断結果が否定的となる場合には、歩容生成装置１００は、次回歩容の支持脚足平２２の目標着地位置の変更量を上記と同様に再設定し、さらに、該変更量の再設定後の処理を上記と同様に実行する。そして、最終的に、次回歩容の支持脚足平２２の変更後の目標着地位置が今回歩容支持脚座標系で設定した前記幾何学的着地許容領域から逸脱してしまうものとなった場合には、歩容生成装置１００は、Ｓ０７４の判断結果が否定的であるとする。
【０４５２】
以上がＳ０７４で実行される判断処理である。
【０４５３】
なお、次回歩容の支持脚足平２２の目標着地位置の初回の変更時に、該目標着地位置の１つもしくは複数種類の変更量（変更方向等が互いに異なる複数種類の変更量）の候補値を設定して、それぞれの候補値を基に、上記と同様の処理を実行することによって、該目標着地位置の変更量と前記運動継続性条件を満足するための目標ＺＭＰ軌道の修正量（Ｓ０６４で仮決定される仮目標ＺＭＰ軌道からの修正量）との関係を推定するようにしてもよい。そして、推定した当該関係を考慮して、該目標着地位置の変更量を再設定するようにしてもよい。このようにすると、Ｓ０７４でＳ０６２〜Ｓ０６８の処理を繰り返すこととなる回数を少なくすることが可能となる。
【０４５４】
以上のＳ０７４の判断結果が肯定的となる場合には、歩容生成装置１００は、Ｓ０７２と同様に、適切な今回歩容を生成することができるとして、フラグの値を“１”に設定する。また、Ｓ０７８の判断結果が否定的となる場合には、歩容生成装置１００は、適切な今回歩容を生成するとができないとして、フラグの値を“０”に設定する。
【０４５５】
以上が、Ｓ０４０で実行される図１２のフローチャートの処理の詳細である。この処理により、次回歩容の動作モードを両脚移動動作モードに決定したと仮定した場合に、ロボット１の運動を継続し得る適切な今回歩容を生成することが可能であるか否かが判断されることとなる。
【０４５６】
図１１に戻って、歩容生成装置１００は、上記の如くＳ０４０の処理を実行した後、次に、Ｓ０４２の判断処理を実行する。すなわち、歩容生成装置１００は、Ｓ０４０で設定されたフラグの値によって、適切な今回歩容を生成可能であるか否かを判断する。そして、この判断結果が肯定的である場合（フラグの値が“１”である場合）には、Ｓ０４４に進む。このＳ０４４では、歩容生成装置１００は、次回歩容の動作モードを両脚交互離床・着床動作モードに決定する。
【０４５７】
また、Ｓ０４２の判断結果が否定的である場合は、次回歩容の動作モードを両脚交互離床・着床動作モードに決定すると、前記幾何学的脚体運動必要条件、ＺＭＰ存在許容領域条件、運動継続性必要条件を満足させるような今回歩容を生成することができない場合である。
【０４５８】
そこで、この場合には、歩容生成装置１００は、Ｓ０４６において、次回歩容の動作モードを片脚ホッピング動作モードに決定したと仮定して、ロボット１の運動を安定な姿勢で継続し得る適切な今回歩容を生成することが可能であるか否かを判断する処理を実行する。
【０４５９】
このＳ０４６では、Ｓ０４０と同様に、図１２のフローチャートに示す処理が実行される。但し、この場合、一部の歩容パラメータの具体的な設定の仕方等が、Ｓ０４０の処理の場合と相違する。そこで、Ｓ０４６の処理の説明においては、Ｓ０４０の処理と相違する事項を中心に説明し、同じ処理については説明を省略する。また、以降の説明では、Ｓ０４６の中での処理とＳ０４０の中での処理とを区別するために、Ｓ０４６の中での処理に、添え字“ｂ”を付し、Ｓ０４０の中での処理に添え字“ａ”を付する。例えば、Ｓ０４６の中でのＳ０６０の処理をＳ０６０ｂ、Ｓ０４０の中でのＳ０６０の処理をＳ０６０ａと表記する。
【０４６０】
以下説明すると、歩容生成装置１００は、Ｓ０６０ｂにおいて、前記したＳ０６０ａと同様に、次回歩容支持脚座標系、次次回歩容支持脚座標系、今回歩容周期、及び次回歩容周期を決定する。ただし、この場合は、次回歩容の動作モードが、片脚ホッピング動作モードであることを前提として、次次回歩容支持脚座標系と次回歩容周期とが決定される。これ以外は、Ｓ０６０ｂの処理は、Ｓ０６０ａの処理と同じである。
【０４６１】
図３３は、次回歩容の動作モードが片脚ホッピング動作モードである場合に、Ｓ０６０ｂで決定される次回歩容支持脚座標系及び次次回歩容支持脚座標系を例示している。この図示例では、今回歩容の動作モードも片脚ホッピング動作モードであるとしている。そして、図示例では、今回歩容及び次回歩容における片脚ホッピング歩容は、右側脚体２Ｒを支持脚とする歩容であり、今回歩容及び次回歩容のそれぞれの空中期にロボット１が概略右向きに移動するものとしている。なお、図示例では、前回歩容は歩行歩容である。
【０４６２】
次いで、歩容生成装置１００は、Ｓ０６２ｂにおいて、定常旋回歩容の歩容パラメータを決定する。このＳ０６２ｂでは、図１６のフローチャートに示した処理が、Ｓ０６２ａと同様に実行される。ただし、この場合、次回歩容の動作モードが片脚ホッピング歩容であるので、Ｓ０６２ｂにおける定常歩容の第１旋回歩容及び第２旋回歩容は、いずれも片脚ホッピング歩容である。
【０４６３】
このために、Ｓ０６２ｂの処理では、一部の定常歩容パラメータの設定の仕方が、走行歩容を例として説明したＳ０６２ａの処理と相違する。
【０４６４】
具体的には、図１６のフローチャートのうちのＳ１００ｂでの足平軌道パラメータの決定の仕方と、Ｓ１０２ｂでの基準上体姿勢軌道パラメータの決定の仕方と、Ｓ１１０ｂでのＺＭＰ軌道パラメータの決定の仕方とが、それぞれ、前記したＳ１００ａ、Ｓ１０２ａ、Ｓ１１０ａの処理と相違する。
【０４６５】
Ｓ１００ｂでは、歩容生成装置１００は、今回歩容、第１旋回歩容、第２旋回歩容の順に足平位置姿勢軌道がつながるように、第１旋回歩容及び第２旋回歩容の初期及び終端のそれぞれにおける支持脚足平及び遊脚足平のそれぞれの位置姿勢、各旋回歩容の歩容周期から構成される足平軌道パラメータを決定する。このような足平軌道パラメータの決定指針はＳ１００ａと同じであるが、Ｓ１００ｂでは、具体的には、足平軌道パラメータが例えば次のように決定される。なお、ここでは、理解の便宜上、一例として今回歩容が片脚ホッピング歩容であるとする。
【０４６６】
すなわち、足平軌道パラメータのうち、第１旋回歩容初期遊脚足平位置姿勢は、次回歩容支持脚座標系から見た今回歩容終端遊脚足平位置姿勢とされる。
【０４６７】
本実施形態では、今回歩容が片脚ホッピング歩容である場合、次回歩容支持脚座標系から見た今回歩容終端遊脚足平位置姿勢は、あらかじめ設定された所定の位置姿勢（空中に存在する位置姿勢。以降、片脚ホッピング歩容終端遊脚足平位置姿勢という）とされる。
【０４６８】
また、第１旋回歩容初期支持脚足平位置姿勢は、次回歩容支持脚座標系から見た今回歩容終端支持脚足平位置姿勢とされる。この場合、本実施形態では、今回歩容が片脚ホッピング歩容である場合、次回歩容支持脚座標系から見た今回歩容終端支持脚足平位置姿勢は、次回歩容支持脚座標系に対応して定まる前記基本着地位置姿勢である。
【０４６９】
第１旋回歩容終端遊脚足平位置姿勢は、次回歩容支持脚座標系から見た足平位置姿勢で表現され、この足平位置姿勢を次次回歩容支持脚座標系から見た位置姿勢に変換した場合に、前記片脚ホッピング歩容終端遊脚足平位置姿勢に一致するように設定される。
【０４７０】
第１旋回歩容終端支持脚足平位置姿勢は、次回歩容支持脚座標系から見た足平位置姿勢で表現され、この足平位置姿勢を次次回歩容支持脚座標系から見た位置姿勢に変換した場合に、該次次回歩容支持脚座標系に対応して定まる前記基本着地位置姿勢（次次回歩容支持脚座標系の原点の位置とＸ軸及びＹ軸の向きとを規定する前記基本着地位置姿勢）に一致するように設定される。
【０４７１】
第２旋回歩容初期遊脚足平位置姿勢は、次次回歩容支持脚座標系から見た第１旋回歩容終端遊脚足平位置姿勢（すなわち、前記片脚ホッピング歩容終端遊脚足平位置姿勢）とされる。
【０４７２】
第２旋回歩容初期支持脚足平位置姿勢は、次次回歩容支持脚座標系から見た第１旋回歩容終端支持脚足平位置姿勢（すなわち、次次回歩容支持脚座標系の原点の位置とＸ軸及びＹ軸の向きとを規定する前記基本着地位置姿勢）とされる。
【０４７３】
第２旋回歩容終端遊脚足平位置姿勢は、次次回歩容支持脚座標系から見た足平位置姿勢で表現され、次回歩容支持脚座標系から見た第１旋回歩容終端遊脚足平位置姿勢と一致するように設定される。
【０４７４】
第２旋回歩容終端支持脚足平位置姿勢は、次次回歩容支持脚座標系から見た足平位置姿勢で表現され、次回歩容支持脚座標系から見た第１旋回歩容終端支持脚足平位置姿勢と一致するように設定される。
【０４７５】
第１旋回歩容及び第２旋回歩容の歩容周期は、次回歩容周期と同一に設定される。
【０４７６】
以上が、次回歩容の動作モードが片脚ホッピング動作モードである場合にＳ１００で決定される足平軌道パラメータの例である。
【０４７７】
また、Ｓ１０２ｂでは、定常歩容の基準上体姿勢軌道を規定する基準上体姿勢軌道パラメータが例えば次のように決定される。
【０４７８】
本実施形態では、片脚ホッピング歩容を繰り返す定常歩容（以降、片脚ホッピング定常歩容ということがある）における基準上体姿勢角は一定値とされ、この一定値の基準上体姿勢角が基準上体姿勢軌道パラメータとして決定される。この基準上体姿勢角は、以下に説明する如く設定された姿勢角（傾斜角）である。
【０４７９】
片脚ホッピング定常歩容の基準上体姿勢角のうち、Ｙ軸周り（ピッチ方向）の成分（鉛直方向に対する上体２４のＹ軸周りの傾斜角）は、“０”とされる。すなわち、そのＹ軸周りの成分は、ＸＺ平面（サジタルプレーン）で見たロボット１の上体２４の体幹軸の方向が鉛直方向となる姿勢角（ロボット１を直立姿勢で起立させた場合の上体姿勢角）に設定される。
【０４８０】
一方、片脚ホッピング定常歩容の基準上体姿勢角のうち、Ｘ軸周り（ロール方向）の成分（鉛直方向に対する上体２４のＸ軸周りの傾斜角）は、ＹＺ平面（ラテラルプレーン）で見たロボット１の上体２４の体幹軸の方向が鉛直方向からロボット１の右側又は左側に傾いたものとなる姿勢角に設定される。
【０４８１】
具体的には、図３４に示す如く、片脚ホッピング定常歩容の支持脚が右側脚体２Ｒである場合には、Ｘ軸周りの基準上体姿勢角は、該片脚ホッピング定常歩容の１周期の全期間において、上体２４の体幹軸の方向が鉛直方向からＸ軸周りで正の向き（ロボット１の前方に向かって時計周りの向き）に、所定角度である図中の片脚ホッピング用ロール方向上体姿勢角だけ傾いたものとなる姿勢角に設定される。
【０４８２】
また、片脚ホッピング定常歩容の支持脚が左側脚体２Ｌである場合には、Ｘ軸周りの基準上体姿勢角は、該片脚ホッピング定常歩容の１周期の全期間において、上体２４の体幹軸が、鉛直方向からロール方向（Ｘ軸周り）で負の向き（ロボット１の前方に向かって反時計周りの向き）に上記片脚ホッピング用ロール方向上体姿勢角だけ傾いたものとなる姿勢角に設定される。
【０４８３】
なお、本実施形態の説明では、上体２４の体幹軸の方向が鉛直方向に一致する状態（上体姿勢が、ロボット１を直立姿勢で起立させた場合の上体姿勢に一致する状態）での基準上体姿勢角を“０”とする。
【０４８４】
上記片脚ホッピング用ロール方向上体姿勢角は、以下に図３５及び図３６を参照して説明するような指針で設定されている。
【０４８５】
図３５は、片脚ホッピング歩容における空中期の後の支持脚（図示例では右側脚体２Ｒ）の着床状態において、仮に、上体２４を傾けずに、上体姿勢角を“０”とした場合のロボット１の動作状態を示している。この動作状態は、図７に示した片脚ホッピング歩容における時刻t3とt4との間の時刻での動作状態に相当している。
【０４８６】
片脚ホッピング歩容における空中期の後の支持脚の着床直後の状態においては、支持脚足平２２（２２Ｒ）の接地面からロボット１に作用する並進床反力の作用線は、図示の如く、ロボット１の全体重心Ｇa（ロボット１の全体の重心点Ｇa）の近くを通ることが必要となる。なぜなら、該作用線が全体重心Ｇaから大きく離れていると、全体重心Ｇa周りに床反力によるモーメントが発生し、ロボット１全体が大きく回転してしまうからである。
【０４８７】
この状況において、図３５に示す如く、仮に、上体２４を傾けずに、上体姿勢角を“０”とした場合には、支持脚の股関節と、並進床反力の作用線との間のＹ軸方向（ロボット１の横方向）の距離Ｏfsが比較的大きなものとなる。
【０４８８】
このため、支持脚の股関節には、概略鉛直方向の並進床反力によってロール方向（Ｘ軸周り）に比較的大きなモーメントが作用することとなる。特に、空中期の後の支持脚の着床後に、該支持脚を屈曲させることによってロボット１の全体重心Ｇaの高さが最も低くなる時刻付近（図７の時刻ｔ4付近）での並進床反力が大きくなることから、上記モーメントも大きなものとなる。このため、支持脚の股関節に該モーメントに抗する比較的大きな駆動トルクを作用させることが必要となる。
【０４８９】
そこで、本実施形態では、空中期の後の支持脚の着床状態で該支持脚の股関節に作用するモーメントを低減するために、片脚ホッピング歩容における上体２４を、図３６に示す如く傾斜させるものとした。この場合、より詳しくは、傾斜させた上体姿勢は、支持脚（図示例では右側脚体２Ｒ）の股関節よりも、遊脚（図示例では左側脚体２Ｌ）の股関節の方が相対的に高い位置になるように、上体２４の体幹軸の方向を鉛直方向から傾斜させてなる上体姿勢である。
【０４９０】
なお、支持脚が右側脚体２Ｒである場合には、支持脚の股関節よりも、遊脚の股関節の方が相対的に高い位置になるように、上体２４の体幹軸を鉛直方向から傾斜させるということは、Ｘ軸周りで正の向きに（ロボット１の前方に向かって時計周りに）上体２４の体幹軸を鉛直方向に対して傾斜させることによって実現される。支持脚が左側脚体２Ｌである場合には、支持脚の股関節よりも、遊脚の股関節の方が相対的に高い位置になるように、上体２４の体幹軸を鉛直方向から傾斜させるということは、Ｘ軸周りで負の向きに（ロボット１の前方に向かって反時計周りに）上体２４の体幹軸を鉛直方向に対して傾斜させることによって実現される。
【０４９１】
このように、ロボット１の上体姿勢を、Ｘ軸周りで鉛直方向に対して傾斜させることによって、ロボット１の全体重心Ｇaが支持脚足平２２の接地面のほぼ真上の位置に存在するように支持脚側脚体２の各関節を動作させた状態において、支持脚の股関節と、並進床反力の作用線との間のＹ軸方向（ロボット１の横方向）の距離Ｏfsを、上体姿勢角が“０”である場合（図３５に示す場合）に比して、図３６に示す如く小さくできることとなる。ひいては、並進床反力によって、支持脚の股関節に作用するモーメントを低減できることとなる。
【０４９２】
図３４に示した前記片脚ホッピング用ロール方向上体姿勢角は、上記の如く支持脚の股関節に作用するモーメントを低減し得るように設定された、Ｘ軸周りの上体姿勢角の基準目標値である。この片脚ホッピング用ロール方向上体姿勢角は、これにロボット１の上体姿勢角を一致させ、且つ、ロボット１の全体重心Ｇaが着床している支持脚足平２２の接地面のほぼ真上の位置に存在するように支持脚側脚体２の各関節を動作させた場合に、上記距離Ｏfsが“０”、もしくは“０”近傍の所定範囲内の値になるようにあらかじめ設定されている。
【０４９３】
なお、本実施形態では、片脚ホッピング定常歩容の基準上体姿勢角を該定常歩容の全期間において一定値としたが、該基準上体姿勢角を片脚ホッピング定常歩容の１周期の期間内で連続的に変化させるようにしてもよい。ただし、この場合、空中期の後の支持脚の着床状態となる期間内で（特に、ロボット１に作用する床反力鉛直成分の大きさが最大となる近辺の期間内で）、Ｘ軸周りの基準上体姿勢角が上記片脚ホッピング用ロール方向上体姿勢角もしくはそれに近い姿勢角となるように、Ｘ軸周りの基準上体姿勢角を変化させる。
【０４９４】
また、Ｓ１１０ｂでは、支持多角形内に目標ＺＭＰが存在すると共に、安定余裕が高く、かつ急激な変化をしないように目標ＺＭＰ軌道を規定するＺＭＰ軌道パラメータが決定される。このようなＺＭＰ軌道パラメータの決定指針はＳ１１０ａと同じであるが、Ｓ１００ｂでは、具体的には、ＺＭＰ軌道パラメータが例えば次のように決定される。
【０４９５】
片脚ホッピング定常歩容の第１旋回歩容における目標ＺＭＰ軌道は、例えば図３３の次回歩容支持脚座標系に対応する支持脚足平２２（図示例では２２Ｒ）と次次回歩容支持脚座標系に対応する支持脚足平２２（図示例では２２Ｒ）との間の目標ＺＭＰ軌道で示す如く決定される。なお、図３３に示す目標ＺＭＰ軌道のうち、実線で示す部分は、支持脚足平２２が着床している状態での目標ＺＭＰ軌道を示し、破線で示す部分は空中期での目標ＺＭＰ軌道を示している。
【０４９６】
図３３に示す例では、次回歩容支持脚座標系に対応する支持脚足平２２（図示例では２２Ｒ）の接地面内のほぼ中央の点が片脚ホッピング定常歩容の初期（第１旋回歩容の初期）の目標ＺＭＰとして設定される。また、次次回歩容支持脚座標系に対応する支持脚足平２２（図示例では２２Ｒ）の接地面内のほぼ中央の点が第１旋回歩容の終端の目標ＺＭＰとして設定される。そして、第１旋回歩容における目標ＺＭＰ軌道は、その初期の目標ＺＭＰから終端の目標ＺＭＰまでＺＭＰの位置が連続的に変化していくように設定される。この場合、片脚支持期における目標ＺＭＰは、該片脚支持期の一部の期間（例えば片脚支持期の開始直後の期間）において、一定に保つようにしてもよい。
【０４９７】
図示は省略するが、片脚ホッピング定常歩容の第２旋回歩容における目標ＺＭＰ軌道も上記と同様に設定される。
【０４９８】
この場合、第１旋回歩容及び第２旋回歩容のそれぞれの初期及び終端における目標ＺＭＰや、空中期の開始直前（片脚支持期の終了直前）の目標ＺＭＰ等が、片脚ホッピング定常歩容のＺＭＰ軌道パラメータとして決定される。
【０４９９】
Ｓ０６２ｂにおける図１６のフローチャートの処理は、上記Ｓ１００ｂ、Ｓ１０２ｂ、Ｓ１１０ｂの処理以外の処理は、Ｓ０６２ａでの処理と同様である。
【０５００】
図１２に戻って、歩容生成装置１００は、次に、Ｓ０６４ｂにおいて、定常旋回歩容の初期状態を決定する。このＳ０６４ｂでは、Ｓ０６４ａの処理と同様に図２０〜図２３に示したフローチャートの処理が実行される。
【０５０１】
次いで、歩容生成装置１００は、次にＳ０６６ｂにおいて、今回歩容の歩容パラメータを仮決定する。Ｓ０６６ｂの処理は、図２５に示すフローチャートに従って実行される。ここでは、一例として、今回歩容が走行歩容である場合と片脚ホッピング歩容である場合とについて、図２５のフローチャートの処理を説明する。
【０５０２】
まず、Ｓ６００ｂにおいて、歩容生成装置１００は、今回歩容の足平位置姿勢軌道が定常歩容の足平位置姿勢軌道に連続的につながるように、今回歩容の足平軌道パラメータを決定する。この足平軌道パラメータの決定の仕方は、今回歩容が走行歩容である場合と片脚ホッピング歩容である場合とのいずれの場合であってもＳ６００ａの処理と同様である。
【０５０３】
次いで、Ｓ６０２ｂにおいて、歩容生成装置１００は、今回歩容の基準上体姿勢軌道が、定常歩容の基準上体姿勢軌道に連続的につながるように、今回歩容の基準上体姿勢軌道パラメータを決定する。
【０５０４】
この処理では、今回歩容が片脚ホッピング歩容である場合には、今回歩容の基準上体姿勢軌道パラメータは、今回歩容の基準上体姿勢角を、片脚ホッピング定常歩容における基準上体姿勢角と同一の一定値に維持するように決定される。すなわち、Ｘ軸周りの基準上体姿勢角及びＹ軸周りの基準上体姿勢角は、それぞれ、前記片脚ホッピング用ロール方向上体姿勢角、“０”とされ、これらの値が今回歩容の基準上体姿勢軌道パラメータとして決定される。
【０５０５】
また、今回歩容が走行歩容である場合には、今回歩容の基準上体姿勢軌道パラメータは、今回歩容の基準上体姿勢角を、両脚交互離床・着床歩容用の基準上体姿勢角（詳しくは、定常歩容が両脚交互離床・着床歩容である場合の基準上体姿勢角）から、片脚ホッピング歩容用の基準上体姿勢角（詳しくは、定常歩容が片脚ホッピング定常歩容である場合の基準上体姿勢角）に連続的に変化させていくように決定される。
【０５０６】
この場合、本実施形態では、両脚交互離床・着床歩容用の基準上体姿勢角のＹ軸周りの成分と、片脚ホッピング歩容用の基準上体姿勢角のＹ軸周りの成分とは、いずれも“０”であるので、今回歩容の基準上体姿勢角のＹ軸周りの成分は“０”に維持される。
【０５０７】
一方、両脚交互離床・着床歩容用の基準上体姿勢角のＸ軸周りの成分と、片脚ホッピング歩容用の基準上体姿勢角のＸ軸周りの成分とは、それぞれ“０”、片脚ホッピング用ロール方向上体姿勢角（≠０）であるので、今回歩容の基準上体姿勢角のＹ軸周りの成分は、例えば、図３７に示す如く、“０”から片脚ホッピング用ロール方向上体姿勢角まで連続的に変化するように設定される。
【０５０８】
補足すると、次回歩容の動作モードを両脚交互離床・着床動作モードと仮定する前記Ｓ０４０の中のＳ６０２ａの処理において、今回歩容の動作モードが例えば片脚ホッピング歩容である場合には、今回歩容の基準上体姿勢軌道パラメータは、今回歩容の基準上体姿勢角を片脚ホッピング歩容用の基準上体姿勢角から両脚交互離床・着床歩容用に基準上体姿勢角まで連続的に変化させていくように決定される。従って、この場合の今回歩容の基準上体姿勢角のＸ軸周り成分は、図３７の場合と逆に、図３８に示す如く片脚ホッピング用ロール方向上体姿勢角から“０”まで連続的に変化するように設定される。なお、この場合の今回歩容の基準上体姿勢角のＹ軸周り成分は“０”に維持される。
【０５０９】
次いで、Ｓ６０４ｂに進み、歩容生成装置１００は、今回歩容の腕姿勢軌道パラメータを決定する。この処理は、今回歩容が走行歩容である場合と、今回歩容が片脚ホッピング歩容である場合とのいずれの場合でも、Ｓ６０４ａと同様である。
【０５１０】
次いで、Ｓ６０６ｂに進み、歩容生成装置１００は、今回歩容の床反力鉛直成分軌道パラメータを決定する。この処理は、今回歩容が走行歩容である場合と、今回歩容が片脚ホッピング歩容である場合とのいずれの場合でも、今回歩容が走行歩容である場合の例について先に説明したＳ６０６ａの処理と同様である。
【０５１１】
次いで、Ｓ６０８ｂに進み、歩容生成装置１００は、床反力水平成分許容範囲[Fxmin，Fxmax]（具体的には該床反力水平成分許容範囲のパターンを規定するパラメータ）を決定する。この処理では、Ｓ６０８ａの処理と同様に、Ｓ６０６ｂで決定した床反力鉛直成分軌道から、前記式１２ａ，１２ｂに基づいて床反力水平成分許容範囲が決定される。
【０５１２】
次いで、Ｓ６１０ｂに進み、歩容生成装置１００は、今回歩容のＺＭＰ軌道を規定するＺＭＰ軌道パラメータを仮決定する。この処理では、該ＺＭＰ軌道パラメータは、これにより規定される目標ＺＭＰが、安定余裕が高く、且つ急激に変化しないようにしつつ、前回歩容の終端での目標ＺＭＰから、定常歩容の初期の目標ＺＭＰまで、今回歩容における支持多角形内で連続的に変化するように仮決定される。
【０５１３】
具体的には、一例として、今回歩容が走行歩容である場合には、今回歩容の目標ＺＭＰ軌道は、前記Ｓ６１０ｂの処理に関して説明した如く設定される。例えば今回歩容の目標ＺＭＰ軌道のＸ軸方向位置は、図２８に例示したようなパターンで決定される。そして、その目標ＺＭＰ軌道の折れ点の位置や時刻が、今回歩容の目標ＺＭＰ軌道パラメータとして決定される。
【０５１４】
また、今回歩容が片脚ホッピング歩容である場合には、例えば図３３の今回歩容支持脚座標系に対応する支持脚足平２２（図示例では２２Ｒ）と次回歩容支持脚座標系に対応する支持脚足平２２（図示例では２２Ｒ）との間の目標ＺＭＰ軌道で示す如く決定される。
【０５１５】
この例では、前回歩容は、両脚交互離床・着床歩容であり、今回歩容の片脚支持期では、目標ＺＭＰは、支持脚足平２２（２２Ｒ）の踵寄りの位置（前回歩容の終端での目標ＺＭＰの位置）から、該支持脚足平２２の接地面の右前寄りの位置に向かって連続的に移動するように設定される。そして、空中期では、目標ＺＭＰは、支持脚足平２２の接地面の右前寄りの位置から、次回歩容支持脚座標系に対応する支持脚足平２２（２２Ｒ）の接地面内のほぼ中央の点（定常歩容の初期の目標ＺＭＰの位置）まで連続的に移動していくように設定される。この場合、片脚支持期における目標ＺＭＰは、該片脚支持期の一部の期間において、一定に保つようにしてもよい。
【０５１６】
そして、このように設定される目標ＺＭＰ軌道における片脚支持期の終了直前の目標ＺＭＰの位置等が、今回歩容のＺＭＰ軌道パラメータとして決定される。
【０５１７】
なお、上記の如くＳ６１０ｂで決定されるＺＭＰ軌道パラメータにより規定される目標ＺＭＰ軌道は、Ｓ６１０ａで決定されるものと同様に、今回歩容の仮目標ＺＭＰ軌道である。
【０５１８】
次いで、Ｓ６１２ｂに進み、歩容生成装置１００は、上体姿勢復元期間[Ｔa，Ｔb]を決定する。この処理は、Ｓ６１２ａの処理と同様である。上体姿勢復元期間の開始時刻Ｔaは、定常歩容の第２旋回歩容におけるＴmに相当し、上体姿勢復元期間の終了時刻Ｔbは、定常歩容の第２旋回歩容におけるＴs2に相当するものである。これらの時刻Ｔa，Ｔbの設定の仕方は、それぞれＴm及びＴs2の設定の仕方と同様である。従って、上体姿勢復元期間[Ｔa，Ｔb]は、図２６に例示する如く決定される。
【０５１９】
以上がＳ０６６ｂで実行される処理である。
【０５２０】
図１２に戻って、上記のごとくＳ０６６ｂの処理（今回歩容の歩容パラメータを決定もしくは仮決定する処理）を行った後、次いでＳ０６８ｂに進み、歩容生成装置１００は、今回歩容の歩容パラメータを修正する（今回歩容パラメータを確定する）。ここで修正する歩容パラメータは、前記仮目標ＺＭＰ軌道を規定するＺＭＰ軌道パラメータである。このＳ０６８の処理では、今回歩容の上体位置姿勢軌道を定常歩容に連続させ、もしくは漸近させるべくＺＭＰ軌道パラメータが修正される。
【０５２１】
このＳ０６８ｂでは、今回歩容が走行歩容である場合と片脚ホッピング歩容である場合とのいずれの場合であっても、Ｓ０６８ａと同様に図２９〜図３２のフローチャートに示す処理によって、前記運動継続性必要条件を満足するように（今回歩容の終端発散成分が定常歩容の初期発散成分に一致もしくはほぼ一致するように）、仮目標ＺＭＰ軌道が修正され、今回歩容パラメータが確定される。
【０５２２】
次いで、Ｓ０７０ｂに進み、歩容生成装置１００は、修正後の目標ＺＭＰ軌道が、ＺＭＰ存在許容領域条件を満足するか否かを、Ｓ０７０ａと同様に判断する。そして、この判断結果が肯定的である場合には、Ｓ０７２ｂに進み、歩容生成装置１００は、適切な今回歩容を生成できるとして、前記フラグの値を改めて“１”に設定する。
【０５２３】
また、Ｓ０７０ｂの判断結果が否定的である場合には、Ｓ０７４ｂに進み、歩容生成装置１００は、前記幾何学的脚体運動必要条件を満足し得る範囲内で、前記ＺＭＰ存在許容領域条件と運動継続性必要条件とを満足させるように次回歩容の支持脚足平２２の目標着地位置を変更可能が否かを判断する。この判断処理は、前記Ｓ０７４ａと同様に行なわれる。
【０５２４】
そして、このＳ０７４ｂの判断結果が肯定的となる場合には、Ｓ０７６ｂに進み、歩容生成装置１００は、適切な今回歩容を生成できるとして、前記フラグの値を改めて“１”に設定する。
【０５２５】
また、Ｓ０７４ｂの判断結果が否定的となる場合には、Ｓ０７８ｂに進み、歩容生成装置１００は、適切な今回歩容を生成することができないとして、前記フラグの値を改めて“０”に設定する。
【０５２６】
以上が、Ｓ０４６の中で実行される図１２のフローチャートの処理の詳細である。
【０５２７】
図１１に戻って、上記の如くＳ０４６の処理を実行した後、次に、歩容生成装置１００は、Ｓ０４８の判断処理を実行する。すなわち、歩容生成装置１００は、Ｓ０４６で設定されたフラグの値によって、適切な今回歩容を生成可能であるか否かを判断する。そして、この判断結果が肯定的である場合（フラグの値が“１”である場合）には、Ｓ０５０に進む。このＳ０５０では、歩容生成装置１００は、次回歩容の動作モードを片脚ホッピング動作モードに決定する。
【０５２８】
また、Ｓ０４８の判断結果が否定的である場合は、次回歩容の動作モードを両脚交互離床・着床動作モード及び片脚ホッピング動作モードのいずれの動作モードに決定しても、前記幾何学的脚体運動必要条件、ＺＭＰ存在許容領域条件、運動継続性必要条件を満足させるような今回歩容を生成することができない場合である。
【０５２９】
そこで、この場合には、歩容生成装置１００は、Ｓ０５２において、次回歩容の動作モードを非常用動作モードに決定する。
【０５３０】
以上により図１０のＳ０２０の処理が終了し、次回歩容の動作モードが決定される。
【０５３１】
図１０に戻って、Ｓ０２０の処理の次に、歩容生成装置１００は、Ｓ０２２の判断処理を実行する。この処理では、歩容生成装置１００は、今回歩容の動作モード（前回歩容の生成時に、最終的に決定された動作モード）が非常用動作モードであるか否かを判断する。なお、ロボット１の移動開始時における初期の動作モードは、例えば両脚交互離床・着床動作モードとされる。
【０５３２】
そして、Ｓ０２２の判断結果が肯定的である場合には、歩容生成装置１００は、図１０のフローチャートの処理を中止し、非常用歩容の生成処理を行なう。この非常用歩容の生成処理では、歩容生成装置１００は、例えば、両脚体２，２を速やかに着床させ、さらに、図８に示した如く、両脚体２，２をそれぞれの膝関節で折り曲げることによって、ロボット１の全体重心を下降させるようなロボット１の目標運動を生成する。
【０５３３】
一方、Ｓ０２２の判断結果が否定的である場合、すなわち、今回歩容の動作モードが両脚交互離床・着床動作モード又は片脚ホッピング動作モードである場合には、Ｓ０２６に進み、歩容生成装置１００は、今回歩容の歩容パラメータを決定する。
【０５３４】
この場合、Ｓ０２６では、Ｓ０２０の処理の中で、前記幾何学的脚体運動必要条件、ＺＭＰ存在許容領域条件、運動継続性必要条件を満足させ得る適切な今回歩容を生成し得るものとして最終的に確定された今回歩容パラメータが、そのまま、Ｓ０２６で今回歩容パラメータとして決定される。すなわち、図１２のＳ０７０又はＳ０７４の判断結果が肯定的となる直前に決定された最新の今回歩容パラメータ（前記上体姿勢復元期間[Ｔa，Ｔb]を含む）が、そのまま、Ｓ０２６で今回歩容パラメータとして決定される。
【０５３５】
次いで、Ｓ０２８に進み、歩容生成装置１００は、今回歩容の初期から終端までの各時刻での目標ＺＭＰまわりの床反力モーメント（より詳しくは床反力モーメントの水平成分）の許容範囲を規定する床反力モーメント許容範囲パラメータを決定する。この床反力モーメント許容範囲パラメータにより規定される床反力モーメントの許容範囲は、前記補償全床反力モーメント分配器１１０において、前述の如く使用されるものである。
【０５３６】
この場合、目標ＺＭＰ周りの床反力モーメントを、床反力鉛直成分で割ったものが、ＺＭＰ（床反力中心点）の目標ＺＭＰからのずれ量に相当するものとなる。そこで、Ｓ０２８では、歩容生成装置１００は、例えば、この関係に基づいて、床反力モーメント許容範囲パラメータを決定する。すなわち、歩容生成装置１００は、Ｓ０２６で決定した今回歩容パラメータの足平軌道パラメータに応じて決定される前記支持多角形内のＺＭＰ存在許容領域と、該今回歩容の床反力鉛直成分軌道パラメータにより規定される目標床反力鉛直成分軌道と、該今回歩容のＺＭＰ軌道パラメータにより規定される目標ＺＭＰ軌道とから、上記の関係に基づいて、今回歩容の各時刻でのＺＭＰ存在許容領域を床反力モーメント許容範囲に変換することで、床反力モーメント許容範囲パラメータを決定する。
【０５３７】
なお、床反力モーメント許容範囲は、ロボット１の接地面（床面との接触面）に依存して規定される支持多角形だけでなく、床形状や床の性状（床の硬さ等）を考慮して決定するようにしてもよい。
【０５３８】
次いで、Ｓ０３０に進み、歩容生成装置１００は、今回歩容瞬時値（現在の制御周期での今回歩容の目標足平位置姿勢等の瞬時値）を決定する。このＳ０３０では、前記補償全床反力モーメント分配器１１０から入力されるモデル操作床反力モーメントが目標ＺＭＰまわりに発生するように今回歩容瞬時値が決定される。
【０５３９】
具体的には、Ｓ０３０では、歩容生成装置１００は、図３１のＳ９００からＳ９１０までと同一の処理を実行し、次いで、Ｓ９１２のサブルーチン処理である図３２のＳ１０００〜Ｓ１０２６の処理を実行する。但し、この場合、Ｓ０３０の処理の中で実行される図３２のＳ１０１６においては、上体姿勢復元モーメントＺＭＰ換算値（ＺＭＰrec）のパターンとして、前記Ｓ０２０の中で、最終的に図２９のＳ７１８の処理によって決定された最新の上体姿勢復元モーメントＺＭＰ換算値（ＺＭＰrec）のパターン（図１２のＳ０７０又はＳ０７４の判断結果が肯定的となる直前に決定された最新のＺＭＰrecのパターン）が設定される。
【０５４０】
次いで、歩容生成装置１００は、図３１のＳ９１４と同一の処理を実行し、これにより、図１０のＳ０３０の処理が完了する。
【０５４１】
なお、Ｓ０３０の処理の中での時刻Ｔkは、歩容生成装置１００の現在の制御周期（今回制御周期）の時刻ｔである。
【０５４２】
次いでＳ０３２に進み、歩容生成装置１００は、スピン力をキャンセルする（ロボット１の腕体以外の運動によって目標ＺＭＰ周りに発生する床反力モーメント鉛直成分（Ｚ軸周り成分）を“０”又はほぼ“０”にする）ための腕振り動作（左右の腕体を前後逆方向に振る運動）を決定する。
【０５４３】
具体的には、腕体の腕振り動作を行なわないように今回歩容を生成したと仮定した場合の床反力モーメント鉛直成分軌道（厳密には、腕体を振らずに今回歩容を生成した場合において、ロボット１の運動によって発生する慣性力とロボット１に作用する重力との合力が目標ＺＭＰに作用するモーメント鉛直成分軌道の各瞬時値の符号を反転したもの）が求められる。
【０５４４】
すなわち、Ｓ０３０の処理によって生成された今回歩容の運動（これには腕振り動作は含まれていない）によって目標ＺＭＰ周りに発生する慣性力モーメント鉛直成分の瞬時値に釣り合う床反力モーメント鉛直成分の瞬時値が算出される。そして、この床反力モーメント鉛直成分の瞬時値を、腕振り動作の等価慣性モーメントで除算することにより、スピン力をキャンセルするのに必要な腕振り動作の角加速度が求められる。なお、腕の振りが大きくなり過ぎる場合には、床反力モーメント鉛直成分の瞬時値を、腕振り動作の等価慣性モーメントよりも大きな値で除算することによって、腕振り動作の角加速度を求めるようにしてもよい。
【０５４５】
次に、歩容生成装置１００は、この腕振り動作の角加速度を２階積分し、この積分値をローカットフィルタに通すことによって得られる角度を腕振り動作角とする。これにより、腕振り動作を含む両腕体の姿勢が決定されることとなる。但し、腕振り動作では、左右の腕体を前後逆方向に振り、両腕体の重心位置を変化させないようにする。
【０５４６】
なお、スピン力をキャンセルするための腕振り動作を定常歩容でも生成しておき、これにつながるように、今回歩容における腕振り動作を決定するようにしてもよい。
【０５４７】
次いでＳ０３４に進み、歩容生成装置１００は、歩容生成用時刻ｔをΔｔ（歩容生成装置１００の制御周期）だけ増やし、Ｓ０１４からの処理を再び実行する。
【０５４８】
以上が、歩容生成装置１００における目標歩容の生成処理である。
【０５４９】
以上説明した本実施形態によれば、両脚交互離床・着床動作モードでロボット１の運動（移動）を行なっている時に逐次実行されるＳ０４０の判断処理によって、両脚交互離床・着床動作モードでのロボット１の運動を継続したと仮定した場合に、両脚交互離床・着床動作モードでロボット１の運動を継続させ得る適切な目標歩容（前記幾何学的脚体運動必要条件、運動継続性必要条件及びＺＭＰ存在許容領域条件を満足し得る今回歩容）を生成することができるか否かが判断される。そして、この判断結果が肯定的となる場合には、次回歩容の動作モードが今回歩容と同じ両脚交互離床・着床動作モードに維持され、両脚交互離床・着床動作モードに対応する両脚交互離床・着床歩容が生成される。
【０５５０】
また、上記判断結果が否定的となる場合には、Ｓ０４６の判断処理によって、今回歩容の終了後にロボット１の動作モードを両脚交互離床・着床動作モードから片脚ホッピング動作モードに変更したと仮定した場合に、ロボット１の運動を継続させ得る適切な目標歩容（前記幾何学的脚体運動必要条件、運動継続性必要条件及びＺＭＰ存在許容領域条件を満足し得る今回歩容）を生成することができるか否かが判断される。そして、この判断結果が肯定的となる場合には、次回歩容の動作モードが片脚ホッピング動作モードに設定され、両脚交互離床・着床歩容から片脚ホッピング歩容に円滑に移行させていくように（歩容の瞬時値の系列が滑らかに連続するように）、今回歩容が生成される。
【０５５１】
また、ロボット１の動作モードが片脚ホッピング動作モードに変更された後に、該片脚ホッピング動作モードでロボット１の運動（移動）を行なっている時には、Ｓ０４０の判断処理によって、今回歩容の終了後にロボット１の動作モードを片脚ホッピング動作モードから両脚交互離床・着床動作モードに戻したと仮定した場合に、ロボット１の運動を継続させ得る適切な目標歩容（前記幾何学的脚体運動必要条件、運動継続性必要条件及びＺＭＰ存在許容領域条件を満足し得る今回歩容）を生成することができるか否かが判断される。そして、この判断結果が肯定的となる場合には、次回歩容の動作モードが両脚交互離床・着床動作モードに設定され、片脚ホッピング歩容から両脚交互離床・着床歩容に円滑に移行させていくように（歩容の瞬時値の系列が滑らかに連続するように）、今回歩容が生成される。
【０５５２】
また、上記判断結果が否定的となる場合には、Ｓ０４６の判断処理によって、片脚ホッピング動作モードでのロボット１の運動を継続したと仮定した場合に、片脚ホッピング動作モードでロボット１の運動を継続させ得る適切な目標歩容（前記幾何学的脚体運動必要条件、運動継続性必要条件及びＺＭＰ存在許容領域条件を満足し得る今回歩容）を生成することができるか否かが判断される。そして、この判断結果が肯定的となる場合には、次回歩容の動作モードが今回歩容と同じ片脚ホッピング動作モードに維持され、片脚ホッピング動作モードに対応する片脚ホッピング歩容が生成される。
【０５５３】
そして、以上の如く生成される歩容に追従させるように、前記複合コンプライアンス動作決定部１０４、ロボット幾何学モデル（キネマティクス演算部）１０２、及び関節変位コントローラ１０８を介してロボット１の動作制御が行われる。
【０５５４】
以上により本実施形態によれば、両脚交互離床・着床動作（歩行動作又は走行動作）というロボット１の標準的な移動動作によって、該ロボット１の姿勢を崩したりすることなく、該ロボット１の運動を適切に継続することが困難となると判断される状況で、且つ、ロボット１の動作モードを両脚交互離床・着床動作モードから片脚ホッピング動作モードに変更すれば、該ロボット１の運動を適切に継続することできると判断される状況では、両脚交互離床・着床歩容から片脚ホッピング歩容に移行させるように、ロボット１の目標歩容が生成されることとなる。このため、両脚交互離床・着床動作（歩行動作又は走行動作）によって、ロボット１の運動を適切に継続することが困難となると判断される状況でも、ロボット１の姿勢が崩れてしまったり、該ロボット１の運動を強制的に停止させたりすることなく、可能な限り、ロボット１の運動を安定した姿勢で継続することができる。
【０５５５】
また、ロボット１の動作モードを片脚ホッピング動作モードに変更した後に、該動作モードを両脚交互離床・着床動作に戻しても、ロボット１の姿勢を崩したりすることなく、該ロボット１の運動を適切に継続することができると判断される状況では、片脚ホッピング歩容から両脚交互離床・着床歩容に移行させるように、ロボット１の目標歩容が生成される。このため、ロボット１の片脚ホッピング動作を一時的なものとして、安定感の高い歩行動作又は走行動作でロボット１が移動することとなる頻度を高めることができる。
【０５５６】
また、前記Ｓ０４０又はＳ０４６の判断処理では、脚体２の着地位置を幾何学的着地許容領域内の位置に制限することを要求する幾何学的脚体運動必要条件と、今回歩容のロボット１の目標運動軌道が周期的歩容である定常歩容の運動の収束させ得る運動軌道となることを要求する運動継続性必要条件と、目標ＺＭＰが支持多角形内のＺＭＰ存在許容領域内の位置に制限することを要求するＺＭＰ存在許容領域条件を満足し得る今回歩容を生成できる場合に、ロボット１の運動を継続し得る適切な目標歩容を生成することができると判断するので、ロボット１の脚体２，２の幾何学的な（運動学的な）制約条件や、ロボット１の運動の継続性を確保するための要件、ＺＭＰに関する動力学的な制約を、それぞれ上記幾何学的脚体運動必要条件、運動継続性必要条件、ＺＭＰ存在許容領域条件を適切に反映させて、適切な目標歩容を生成することができるか否かを判断することができる。このため、この判断結果の信頼性を高めることができる。ひいては、ロボット１の動作モードの変更を、適切なタイミング、あるいは状況で行なうことができる。
【０５５７】
また、ロボット１の動作モードを変更する場合には、次回歩容から動作モードを変更することを前提として、換言すれば、次回歩容で支持脚となる脚体２のの着地後に動作モードを変更することを前提として、今回歩容を生成するので、ロボット１の目標運動が急激に変化するようなことを回避することができる。ひいては、該ロボット１の目標運動を動作モードの変更前の運動から、変更後の運動に滑らかに連続させるように、該ロボット１の目標歩容を生成することができる。
【０５５８】
また、本実施形態では、特に、片脚ホッピング動作モードでのロボット１の運動に関して次のような効果を奏することもできる。
【０５５９】
すなわち、ロボット１が片脚ホッピング動作モードで片脚ホッピング動作を行なう場合に、ロール方向の（Ｘ軸周りの）基準上体姿勢角として、図３４及び図３６に示した片脚ホッピング用ロール方向上体姿勢角が設定される。このため、空中期の後の支持脚の着床状態におけるロール方向の目標上体姿勢角は、基準上体姿勢角としての片脚ホッピング用ロール方向上体姿勢角に一致するか、もしくはこれに近い姿勢角に決定されることとなる。ここで、空中期の後の支持脚の着床状態におけるロール方向の目標上体姿勢角が必ずしも基準上体姿勢角に一致しないのは、水平床反力許容範囲を満足させるために、基準上体姿勢角から修正されるためである。
【０５６０】
従って、片脚ホッピング動作の空中期の後の支持脚の着床状態において、目標上体姿勢角は、図３６に示す如く、支持脚側脚体２の基端部（股関節）よりも遊脚側脚体２の基端部（股関節）が相対的に高い位置になるように上体２４が傾斜する姿勢角となる。このため、ロボット１の全体重心Ｇaが、支持脚側脚体２の股関節の直上位置もしくはそれに近い位置に存在するようにロボット１の目標歩容（片脚ホッピング歩容）が生成されることとなる。
【０５６１】
また、目標ＺＭＰが支持脚の着床状態において支持脚足平２２の接地面内の位置に設定されるので、支持脚側脚体２の着床直後の上記全体重心Ｇaは、平均的には、支持脚足平２２の接地面のほぼ直上に位置することとなる。
【０５６２】
この結果、この目標歩容（片脚ホッピング歩容）に追従させるようにロボット１の動作制御を行うことで、片脚ホッピング動作の空中期の直後の支持脚側脚体２の着床動作時に、ロボット１の動力学的平衡条件を満たしつつ、支持脚側脚体２の股関節に大きなモーメント（Ｘ軸周りのモーメント）が作用するのを防止することができる。ひいては、該股関節の関節アクチュエータ（本実施形態では電動モータ４２）の負担を軽減し、該関節アクチュエータや股関節の小型化あるいは軽量化を図ることができると共に、該関節アクチュエータや股関節の耐久性を高めることができる。
【０５６３】
ここで、以上説明した本実施形態と本発明との対応関係について補足しておく。
【０５６４】
本実施形態では、図１１のＳ０４０の処理によって、本発明における第１判断手段又は第３判断手段が実現される。より詳しくは、今回歩容の動作モードが両脚交互離床・着床動作モードである場合におけるＳ０４０の判断処理によって、本発明における第１判断手段が実現され、今回歩容の動作モードが片脚ホッピング動作モードである場合におけるＳ０４０の判断処理によって、本発明における第３判断手段が実現される。
【０５６５】
この場合、今回歩容の動作モードが両脚交互離床・着床動作モードである場合に、次回歩容の動作モードが両脚交互離床・着床動作モードであることを仮定した場合における前記幾何学的脚体運動必要条件、運動継続性必要条件、ＺＭＰ存在許容領域条件がそれぞれ本発明における第１Ａ条件、第１Ｂ条件、第１Ｃ条件に相当し、これらの条件の組によって、本発明における第１条件が構成される。また、前記図１３（ａ）又は（ｂ）に示した幾何学的着地許容領域が、第１Ａ条件に係わる所定の着地許容領域に相当する。
【０５６６】
また、今回歩容の動作モードが片脚ホッピング動作モードである場合に、次回歩容の動作モードが両脚交互離床・着床動作モードであることを仮定した場合における前記幾何学的脚体運動必要条件、運動継続性必要条件、ＺＭＰ存在許容領域条件がそれぞれ本発明における第３Ａ条件、第３Ｂ条件、第３Ｃ条件に相当し、これらの条件の組によって、本発明における第３条件が構成される。また、前記図１４に示した幾何学的着地許容領域が、第３Ａ条件に係わる所定の着地許容領域に相当する。
【０５６７】
また、本実施形態では、図１１のＳ０４６の処理によって、本発明における第２判断手段又は第４判断手段が実現される。より詳しくは、今回歩容の動作モードが両脚交互離床・着床動作モードである場合におけるＳ０４６の判断処理によって、本発明における第２判断手段が実現され、今回歩容の動作モードが片脚ホッピング動作モードである場合におけるＳ０４６の判断処理によって、本発明における第４判断手段が実現される。
【０５６８】
この場合、今回歩容の動作モードが両脚交互離床・着床動作モードである場合に、次回歩容の動作モードが片脚ホッピング動作モードであることを仮定した場合における前記幾何学的脚体運動必要条件、運動継続性必要条件、ＺＭＰ存在許容領域条件がそれぞれ本発明における第２Ａ条件、第２Ｂ条件、第２Ｃ条件に相当し、これらの条件の組によって、本発明における第２条件が構成される。また、前記図１３（ａ）又は（ｂ）に示した幾何学的着地許容領域が、第２Ａ条件に係わる所定の着地許容領域に相当する。
【０５６９】
また、今回歩容の動作モードが片脚ホッピング動作モードである場合に、次回歩容の動作モードが片脚ホッピング動作モードであることを仮定した場合における前記幾何学的脚体運動必要条件、運動継続性必要条件、ＺＭＰ存在許容領域条件がそれぞれ本発明における第４Ａ条件、第４Ｂ条件、第４Ｃ条件に相当し、これらの条件の組によって、本発明における第４条件が構成される。また、前記図１４に示した幾何学的着地許容領域が、第４Ａ条件に係わる所定の着地許容領域に相当する。
【０５７０】
また、本実施形態では、図１１のＳ０４４、Ｓ０５０及びＳ０５２の処理によって、本発明における動作モード決定手段が実現される。
【０５７１】
また、本実施形態では、歩容生成装置１００によって（より詳しくは歩容生成装置１００が制御周期毎に逐次実行する図１０のＳ０２２〜Ｓ０３２の処理によって）、本発明における目標歩容生成手段が実現される。
【０５７２】
なお、以上説明した実施形態では、歩容生成用の動力学モデルは、図９に示した動力学モデルに限られるものではない。例えば、ロボット１の各リンクに質点を有するような多質点モデルを動力学モデルとして使用してもよい。歩容生成用の動力学モデルは、両脚交互離床・着床動作や片脚ホッピング動作等におけるロボット１の動力学を適切に表現し得るものであれば、その他の動力学モデルを使用してもよい。
【０５７３】
あるいは、例えば特許第４２４６５３８号等にて本願出願人が開示している歩容生成技術のように、比較的単純な動力学モデルを使用して、目標歩容を生成した後、その目標歩容をより厳密な動力学モデルを用いて補正することによって、両脚交互離床・着床動作歩容と片脚ホッピング歩容とを含めた種々の目標歩容を生成するようにしてもよい。
【０５７４】
また、前記実施形態では、モデル操作床反力モーメントを歩容生成装置１００フィードバックして、このモデル操作床反力モーメントをロボット１の動力学モデル上で該ロボット１に付加的に作用させるようにしたが、このモデル操作床反力モーメントを省略するようにしてもよい。
【０５７５】
また、前記実施形態では、運動を継続し得る適切な目標歩容を生成できるか否かを判断するための条件（本発明における第１〜第４条件）として、幾何学的脚体運動必要条件、運動継続性必要条件、ＺＭＰ存在許容領域条件の組を使用したが、これら以外の条件を使用したり、あるいは、さらなる条件を付加するようにしてもよい。運動を継続し得る適切な目標歩容を生成できるか否かの条件は、ロボットの構造や、歩容の生成アルゴリズムの形態、ロボットの動作環境などを勘案して、適宜設定すればよい。
【符号の説明】
【０５７６】
１…２足移動ロボット、２Ｒ，２Ｌ…脚体、２４…上体、１００…歩容生成装置（目標歩容生成手段）、Ｓ０４０…第１判断手段，第３判断手段、Ｓ０４６…第２判断手段，第４判断手段、Ｓ０４４，Ｓ０５０，Ｓ０５２…動作モード決定手段。
【図１】
0005465074.tif 000002
【図２】
0005465074.tif 000003
【図３】
0005465074.tif 000004
【図４】
0005465074.tif 000005
【図５】
0005465074.tif 000006
【図６】
0005465074.tif 000007
【図７】
0005465074.tif 000008
【図８】
0005465074.tif 000009
【図９】
0005465074.tif 000010
【図１０】
0005465074.tif 000011
【図１１】
0005465074.tif 000012
【図１２】
0005465074.tif 000013
【図１３】
0005465074.tif 000014
【図１４】
0005465074.tif 000015
【図１５】
0005465074.tif 000016
【図１６】
0005465074.tif 000017
【図１７】
0005465074.tif 000018
【図１８】
0005465074.tif 000019
【図１９】
0005465074.tif 000020
【図２０】
0005465074.tif 000021
【図２１】
0005465074.tif 000022
【図２２】
0005465074.tif 000023
【図２３】
0005465074.tif 000024
【図２４】
0005465074.tif 000025
【図２５】
0005465074.tif 000026
【図２６】
0005465074.tif 000027
【図２７】
0005465074.tif 000028
【図２８】
0005465074.tif 000029
【図２９】
0005465074.tif 000030
【図３０】
0005465074.tif 000031
【図３１】
0005465074.tif 000032
【図３２】
0005465074.tif 000033
【図３３】
0005465074.tif 000034
【図３４】
0005465074.tif 000035
【図３５】
0005465074.tif 000036
【図３６】
0005465074.tif 000037
【図３７】
0005465074.tif 000038
【図３８】
0005465074.tif 000039