(57)【特許請求の範囲】
【請求項１】
脚式移動ロボットの動作環境に存する互いに異なる複数の接触対象面に該ロボットの複数の部位を接触させながら、該ロボットの運動を行なわせるための該ロボットの目標運動と、該ロボットに作用させるべき外力に関する目標とを含む目標歩容を生成する歩容生成装置であって、
前記ロボットの目標運動を生成する目標運動生成手段と、
相互の姿勢関係があらかじめ定められた複数の仮想面から成る仮想面群を用い、該仮想面群の複数の仮想面が前記複数の接触対象面に一致又は近似する面になるように、該仮想面群を前記ロボットの動作環境の空間に仮想的に設定する仮想面群設定手段と、
前記生成された目標運動に基づいて、該目標運動を実現するために前記ロボットに作用させるべきトータルの外力のうちの並進力成分である必要総並進外力を決定する必要総並進外力決定手段と、
前記決定された必要総並進外力を実現するために前記仮想面群の複数の仮想面のそれぞれから前記ロボットに作用させるべき並進力である仮想面必要並進力を決定する手段であり、前記複数の仮想面のそれぞれにおける仮想面必要並進力のうちの該仮想面に垂直な成分である仮想面垂直抗力成分の合力が、前記必要総並進外力のうちの、前記仮想面群の全ての仮想面に対して平行な成分を除く成分に一致するという第１Ａ必要条件と、前記複数の仮想面のそれぞれにおける仮想面必要並進力のうちの該仮想面に平行な成分である仮想面摩擦力成分の合力が、前記必要総並進外力のうちの、前記仮想面群の全ての仮想面に対して平行な成分に一致するという第１Ｂ必要条件と、各仮想面における仮想面摩擦力成分の大きさが、少なくとも該仮想面における仮想面垂直抗力成分に応じて設定された第１所定値以下になるという第２必要条件とを少なくとも満足するように、各仮想面における仮想面必要並進力を決定する仮想面必要並進力決定手段と、
少なくとも前記各仮想面に対応して決定された前記仮想面必要並進力に基づいて、各仮想面に対応する接触対象面から前記ロボットに作用させるべき目標並進力を決定し、その決定した目標並進力を前記目標歩容の構成要素として出力する接触対象面目標並進力決定手段とを備えることを特徴とする脚式移動ロボットの歩容生成装置。
【請求項２】
請求項１記載の脚式移動ロボットの歩容生成装置において
前記仮想面必要並進力決定手段は、前記必要総並進外力のうちの前記仮想面群の全ての仮想面に対して平行な成分が“０”でない場合において、前記第１Ａ必要条件、第１Ｂ必要条件及び第２必要条件を満足しつつ、前記仮想面群の複数の仮想面のうちの前記仮想面垂直抗力成分が“０”でない各仮想面において、該仮想面に対応して設定された前記第１所定値が大きいほど、該仮想面の仮想面摩擦力成分の大きさが大きくなるように、各仮想面における仮想面必要並進力を決定することを特徴とする脚式移動ロボットの歩容生成装置。
【請求項３】
請求項１又は２記載の脚式移動ロボットの歩容生成装置において、
前記複数の接触対象面は、互いに間隔を存して対向する２つの接触対象面を含むと共に、前記仮想面群は、当該２つの接触対象面に対応する仮想面として、互いに平行に対向する２つの仮想面である対向仮想面を含んでおり、
前記仮想面必要並進力決定手段は、前記決定された必要総並進外力が前記２つの対向仮想面と直交する方向の成分である対向仮想面直交成分を有する場合に、前記第１Ａ必要条件、第１Ｂ必要条件及び第２必要条件を満足することに加えて、前記２つの対向仮想面のそれぞれにおける仮想面垂直抗力成分のうち、小さい方の仮想面垂直抗力成分の大きさがあらかじめ設定された第２所定値以下になるという第３必要条件を満足するように、各仮想面における仮想面必要並進力を決定することを特徴とする脚式移動ロボットの歩容生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、脚式移動ロボットの目標歩容を生成する装置に関する。
【背景技術】
【０００２】
脚式移動ロボット（以下、単にロボットということがある）の目標歩容を生成する技術としては、例えば、本願出願人が提案した特許文献１、２に見られる技術等が従来より知られている。これらの技術は、２足歩行ロボット等の脚式移動ロボットを床上で歩行動作や走行動作によって移動させるような目標歩容を生成する技術である。その目標歩容は、ロボットの基体、脚リンク等の各部の運動（位置及び姿勢の時系列パターン）を規定する目標運動と、ロボットに床から作用させる床反力やその作用点（全床反力中心点）を規定する目標床反力とから構成される。
【０００３】
なお、ロボットの実際の動作制御を行う場合には、一般に、ロボットの実際の運動を目標運動に制御するだけでは、ロボットの実際の動作環境（床形状等）と目標歩容で想定されていた動作環境との誤差等に起因して、目標運動を実現するために必要な外力をロボットに作用させることができない状況がしばしば発生する。そして、このような状況では、ロボットの運動の制御だけでなく、ロボットに外界（ロボットの動作環境）から作用させる外力の制御も必要となる。このため、ロボットの目標歩容には、一般に、ロボットの目標運動に加えて、上記目標床反力の如き、外力に関する目標も必要となる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第３６７４７８８号公報
【特許文献２】特許第３６７９１０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ロボットに種々様々な作業を行なわせるためには、ロボットを単に床上で移動させるだけでなく、ロボットの外界に存する複数の接触対象面にロボットの複数の部位を接触させながら（例えば、ロボットの脚の先端部と腕の先端部とをそれぞれ床面と壁面とに接触させながら）、ロボットの所要の運動を行なわせることが要求される場合もある。
【０００６】
このような場合には、ロボットを単に床上で移動させる場合と異なり、ロボットの外界の複数の接触対象面からロボットの複数の部位に外力が作用することとなる。
【０００７】
従って、このような場合には、ロボットの適切な動作制御を行うために、ロボットの目標運動に加えて、複数の接触対象面のそれぞれから作用させるべき外力に関する目標（目標外力や、その外力の作用点の目標位置）を設定しておく必要がある。
【０００８】
ところが、上記のように複数の接触対象面からロボットに外力が作用する状況でのロボットの目標歩容を生成する場合には、ロボットの目標運動を、要求される運動形態に即して生成することは可能であるものの、その目標運動を実現するために、複数の接触対象面のそれぞれから動力学的にロボットに作用させるべき外力の時系列や組み合わせのパターンは、一般には１つのパターン又は限定的な範囲内のパターンに定まるものではなく、幅広い範囲で種々様々なパターンが存在し得る。
【０００９】
従って、複数の接触対象面からロボットに外力が作用する状況でのロボットの目標歩容を生成する場合に、複数の接触対象面のそれぞれからロボットに作用させるべき外力に関する適切な目標をどのような指針で決定すべきかが問題となる。
【００１０】
しかるに、従来は、上記の如く複数の接触対象面からロボットに外力が作用する状況での目標歩容を生成する技術については、十分な検討がなされていないのが実状である。従って、このような目標歩容を適切に生成し得る技術の構築が望まれていた。
【００１１】
本発明はかかる背景に鑑みてなされたものであり、複数の接触対象面からロボットに外力が作用する状況でのロボットの目標歩容を生成する場合に、ロボットの目標運動を実現するためにロボットに作用させるべき外力に関する目標（特に並進力の目標値）を適切に決定することができる歩容生成装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の脚式移動ロボットの歩容生成装置は、上記の目的を達成するために、脚式移動ロボットの動作環境に存する互いに異なる複数の接触対象面に該ロボットの複数の部位を接触させながら、該ロボットの運動を行なわせるための該ロボットの目標運動と、該ロボットに作用させるべき外力に関する目標とを含む目標歩容を生成する歩容生成装置であって、
前記ロボットの目標運動を生成する目標運動生成手段と、
相互の姿勢関係があらかじめ定められた複数の仮想面から成る仮想面群を用い、該仮想面群の複数の仮想面が前記複数の接触対象面に一致又は近似する面になるように、該仮想面群を前記ロボットの動作環境の空間に仮想的に設定する仮想面群設定手段と、
前記生成された目標運動に基づいて、該目標運動を実現するために前記ロボットに作用させるべきトータルの外力のうちの並進力成分である必要総並進外力を決定する必要総並進外力決定手段と、
前記決定された必要総並進外力を実現するために前記仮想面群の複数の仮想面のそれぞれから前記ロボットに作用させるべき並進力である仮想面必要並進力を決定する手段であり、前記複数の仮想面のそれぞれにおける仮想面必要並進力のうちの該仮想面に垂直な成分である仮想面垂直抗力成分の合力が、前記必要総並進外力のうちの、前記仮想面群の全ての仮想面に対して平行な成分を除く成分に一致するという第１Ａ必要条件と、前記複数の仮想面のそれぞれにおける仮想面必要並進力のうちの該仮想面に平行な成分である仮想面摩擦力成分の合力が、前記必要総並進外力のうちの、前記仮想面群の全ての仮想面に対して平行な成分に一致するという第１Ｂ必要条件と、各仮想面における仮想面摩擦力成分の大きさが、少なくとも該仮想面における仮想面垂直抗力成分に応じて設定された第１所定値以下になるという第２必要条件とを少なくとも満足するように、各仮想面における仮想面必要並進力を決定する仮想面必要並進力決定手段と、
少なくとも前記各仮想面に対応して決定された前記仮想面必要並進力に基づいて、各仮想面に対応する接触対象面から前記ロボットに作用させるべき目標並進力を決定し、その決定した目標並進力を前記目標歩容の構成要素として出力する接触対象面目標並進力決定手段とを備えることを特徴とする（第１発明）。
【００１３】
なお、本発明（後述の第２発明、第３発明を含む）において、前記ロボットの動作環境に存する互いに異なる複数の接触対象面というのは、その複数の接触対象面に含まれる任意の２つの接触対象面（又はその２つの接触対象面をそれぞれ包含する平面）が互いに交差するか、又は、互いに間隔を存して平行もしくはほぼ平行に対向するような複数の接触対象面を意味する。この場合、各接触対象面は、それに接触させるロボットの部位に比して広い面積を有する面（例えば、通常の床面の如き面）である必要はなく、例えば、該部位と同程度又はそれよりも小さい面積を有する局所的な面であってもよい。
【００１４】
また、前記目標歩容の目標運動において、各接触対象面に接触させるロボットの部位は、１つの部位である必要はなく、２つ以上の部位であってもよい。この場合において、ある接触対象面に接触させるロボットの部位が２つ以上である場合には、該接触対象面からロボットに作用させるべき前記目標並進力は、該接触対象面からロボットの当該２つ以上の部位のそれぞれに作用させる並進力の合力の目標値を意味する。
【００１５】
前記第１発明によれば、前記複数の接触対象面のそれぞれからロボットに作用させるべき外力に関する目標（目標歩容の構成要素）としての前記目標並進力を決定するために、相互の姿勢関係があらかじめ定められた複数の仮想面から成る仮想面群が、前記複数の接触対象面の代用的な面として使用される。そして、この仮想面群は、前記仮想面群決定手段によって、該仮想面群の複数の仮想面が前記複数の接触対象面に一致又は近似する面になるように、前記ロボットの動作環境の空間に仮想的に設定される。
【００１６】
なお、前記仮想面群設定手段の処理において、前記仮想面群をロボットの動作環境の空間に仮想的に設定するということは、該仮想面群を構成する各仮想面の、当該空間での配置を決定すること、より詳しくは、当該空間での各仮想面の位置と姿勢（空間的な向き）とを決定することを意味する。
【００１７】
また、前記目標運動生成手段によって生成された目標運動を実現するために前記ロボットに作用させるべきトータルの外力のうちの並進力成分である必要総並進外力が前記必要総並進外力決定手段によって決定される。
【００１８】
ここで、前記必要総並進外力は、換言すれば、前記目標運動によって発生するロボット全体の並進慣性力（慣性力の並進力成分）と、該ロボット全体に作用する重力との合力に釣り合う並進力である。この場合、ロボットの目標運動によって、ロボットの各部（各リンク）の運動とロボットの全体重心点の運動とが規定されることとなるので、ロボットの適当な幾何学モデル（剛体リンクモデル）を用いることで、ロボット全体の上記並進慣性力を前記目標運動に基づいて決定できる。また、ロボット全体に作用する重力は、ロボットの全体質量と重力加速度との積である。従って、前記目標運動に基づいて、前記必要総並進外力を決定できる。
【００１９】
なお、本発明では、前記目標運動は、例えば、ロボットに要求される運動形態（ロボットの脚リンクの先端部等の動かし方や、接触対象面への接触のさせ方等）に即して生成すればよい。
【００２０】
そして、第１発明では、前記必要総並進外力決定手段によって決定された必要総並進外力を実現するために前記仮想面群の複数の仮想面のそれぞれから前記ロボットに作用させるべき並進力である仮想面必要並進力が前記仮想面必要並進力決定手段によって決定される。なお、各仮想面は、各接触対象面に対応しているので、各仮想面における仮想面必要並進力は、該仮想面に対応する接触対象面からロボットに作用させるべき並進力に対応するものである。
【００２１】
ここで、該仮想面必要並進力決定手段が決定する、各仮想面における仮想面必要並進力は、換言すれば、それらの合力が、前記必要総並進外力に一致するような並進力を意味する。そして、各仮想面における仮想面必要並進力は、該仮想面に垂直な成分である前記仮想面垂直抗力成分と該仮想面に平行な成分である前記仮想面摩擦力成分との一方又は両方から構成される。
【００２２】
この場合、本発明では、前記複数の接触対象面からロボットに外力を作用させることに対応して、前記仮想面群の複数の仮想面からロボットに外力を作用させることとなるので、前記必要総並進外力を実現するための各仮想面における仮想面必要並進力の組合せは、一般には、無数の態様を採り得る。
【００２３】
但し、各仮想面に対応する接触対象面からロボットに作用させ得る並進力のうちの摩擦力成分（接触対象面に平行な成分）の大きさは、その上限値が該接触対象面における垂直抗力成分（接触対象面に垂直な成分）の影響を受け、該垂直抗力成分の大きさが小さいほど、摩擦力成分の大きさの上限値も小さくなる。また、該摩擦力成分が大きいと、接触対象面とロボットとの間の滑りも発生し易くなる。これに対して、接触対象面における垂直抗力成分は、摩擦力成分に比して幅広い範囲で、実現し得る。
【００２４】
従って、各接触対象面に対応する仮想面における仮想面必要並進力は、できるだけ、仮想面摩擦力成分を含まないか、もしくは、該仮想面摩擦力成分の大きさが小さくなるように、決定することが望ましいと考えられる。換言すれば、前記必要総並進外力が、できるだけ、各仮想面における仮想面垂直抗力成分の合力によって実現され得るように、仮想面必要並進力を決定することが望ましいと考えられる。そして、前記必要総並進外力を実現するために、各仮想面における仮想面摩擦力成分が必要となる場合には、その仮想面摩擦力成分の大きさは、該仮想面における仮想面垂直抗力成分の大きさに応じて設定される、ある所定値以下になるように決定することが望ましい。
【００２５】
そこで、第１発明では、前記仮想面必要並進力決定手段は、前記複数の仮想面のそれぞれにおける仮想面必要並進力のうちの仮想面垂直抗力成分の合力が、前記必要総並進外力のうちの、前記仮想面群の全ての仮想面に対して平行な成分を除く成分に一致するという第１Ａ必要条件と、前記複数の仮想面のそれぞれにおける仮想面必要並進力のうちの仮想面摩擦力成分の合力が、前記必要総並進外力のうちの、前記仮想面群の全ての仮想面に対して平行な成分に一致するという第１Ｂ必要条件と、各仮想面における仮想面摩擦力成分の大きさが、少なくとも該仮想面における仮想面垂直抗力成分に応じて設定された第１所定値以下になるという第２必要条件とを少なくとも満足するように、各仮想面における仮想面必要並進力を決定する。
【００２６】
なお、前記第２必要条件における第１所定値は、仮想面で発生可能な摩擦力の大きさの上限値に相当するものである。この第１所定値は、例えば、各仮想面に対応する接触対象面における垂直抗力成分を該仮想面における仮想面垂直抗力成分に一致させた場合に該接触対象面で発生可能な摩擦力の大きさの上限値に一致するか、またはそれよりも小さめの値に設定することが好ましい。
【００２７】
これにより、前記仮想面必要並進力決定手段は、可能な限り、各仮想面における仮想面垂直抗力成分の合力によって前記必要総並進外力を実現すると共に、仮想面摩擦力成分を、前記第２必要条件を満足する範囲で必要最小限に留めるように、各仮想面における仮想面必要並進力を決定できることとなる。
【００２８】
そして、第１発明では、前記接触対象面目標並進力決定手段が、少なくとも前記各仮想面に対応して決定された前記仮想面必要並進力に基づいて、各仮想面に対応する接触対象面から前記ロボットに作用させるべき目標並進力を決定し、その決定した目標並進力を前記目標歩容の構成要素として出力する。
【００２９】
この場合、各仮想面に対応する接触対象面からロボットに作用させるべき目標並進力を、例えば、該目標並進力のうちの該接触対象面に垂直な方向の成分（垂直抗力成分）と該接触対象面に平行な成分（摩擦力成分）とがそれぞれ、該接触対象面に対応する仮想面における仮想面必要並進力の仮想面垂直抗力成分、仮想面摩擦力成分に一致するように決定すればよい。
【００３０】
以上説明した第１発明によれば、前記したように、前記仮想面必要並進力決定手段は、可能な限り、各仮想面における仮想面垂直抗力成分の合力によって前記必要総並進外力を実現すると共に、仮想面摩擦力成分を、前記第２必要条件を満足する範囲で必要最小限に留めるように、各仮想面における仮想面必要並進力を決定できる。このため、各接触対象面からロボットへの目標並進力についても、可能な限り、各接触対象面における目標並進力のうちの垂直抗力成分の合力によって前記必要総並進外力を実現すると共に、該目標並進力のうちの摩擦力成分を、該接触対象面で発生可能な摩擦力の大きさの限界内で必要最小限に留めるように、各接触対象面からロボットへの目標並進力を決定できることとなる。
【００３１】
そして、この場合、前記仮想面必要並進力決定手段の処理では、前記第１Ａ必要条件、第１Ｂ必要条件、及び第２必要条件を用いることで、各接触対象面に対応する仮想面における仮想面必要並進力を決定するための指針（前記必要総並進外力を、各仮想面における仮想面必要並進力に分配する指針）が限定され、少なくとも、前記仮想面群の全ての仮想面に対して平行な成分を除く成分を、いずれかの仮想面における仮想面摩擦力成分に一致させ、又は分配することとなるような形態が排除される。また、各仮想面は、その相互の姿勢関係があらかじめ定まっているので、前記第１Ａ必要条件、第１Ｂ必要条件、及び第２必要条件を満足し得る仮想面必要並進力を決定する処理のアルゴリズムの構築が容易になる。
【００３２】
従って、第１発明によれば、複数の接触対象面からロボットに外力が作用する状況でのロボットの目標歩容を生成する場合に、ロボットの目標運動を実現するためにロボットに作用させるべき外力のうちの並進力の目標値を、適切な指針の基で決定することができる。
【００３３】
かかる第１発明においては、前記仮想面必要並進力決定手段は、前記必要総並進外力のうちの前記仮想面群の全ての仮想面に対して平行な成分が“０”でない場合において、前記第１Ａ必要条件、第１Ｂ必要条件及び第２必要条件を満足しつつ、前記仮想面群の複数の仮想面のうちの前記仮想面垂直抗力成分が“０”でない各仮想面において、該仮想面に対応して設定された前記第１所定値が大きいほど、該仮想面の仮想面摩擦力成分の大きさが大きくなるように、各仮想面における仮想面必要並進力を決定することが好ましい（第２発明）。
【００３４】
この第２発明によれば、前記必要総並進外力のうちの前記仮想面群の全ての仮想面に対して平行な成分を、各仮想面に分配する指針がさらに限定され、各仮想面における仮想面並進力成分を決定するための処理のアルゴリズムの構築がより一層容易になる。
【００３５】
また、各仮想面における仮想面摩擦力成分の大きさを、各仮想面で発生可能な摩擦力の上限値に相当する前記第１所定値の大きさに整合した大きさに設定することができる。ひいては、各接触対象面における目標並進力の摩擦力成分を、該接触対象面で発生可能な摩擦力の大きさの限界内にバランスよく収まるように（いずれかの接触対象面での摩擦力成分が、他の接触対象面での摩擦力成分に比して、摩擦力の大きさの限界に近づき過ぎたりしないように）、決定できる。
【００３６】
前記第１発明又は第２発明において、前記複数の接触対象面が、互いに間隔を存して対向する２つの接触対象面を含むと共に、前記仮想面群が、当該２つの接触対象面に対応する仮想面として、互いに平行に対向する２つの仮想面である対向仮想面を含んでいる場合には、その２つの対向仮想面における仮想面垂直抗力成分は、それらの大きさが“０”で無い場合に、互いに逆向きの並進力となる。
【００３７】
従って、２つの対向仮想面における仮想面垂直抗力成分のうち、大きさが小さい方の仮想面垂直抗力成分を第１仮想面垂直抗力成分、大きい方の仮想面垂直抗力成分を第２仮想面垂直抗力成分としたとき、第１仮想面垂直抗力成分と、第２仮想面垂直抗力成分のうちの第１仮想面垂直抗力成分と大きさの等しい成分とは、ロボットの運動に寄与しない内力として機能するものとなる。そして、この内力の大きさが過大になると、ロボットのアクチュエータが発生可能な動力のうち、上記内力の発生のために必要な負担分が大きくなり、ロボットの運動を変化させるために利用し得るアクチュエータの動力が不足し易いものとなる。
【００３８】
そこで、前記第１発明又は第２発明では、前記複数の接触対象面が、互いに間隔を存して対向する２つの接触対象面を含むと共に、前記仮想面群が、当該２つの接触対象面に対応する２つの前記対向仮想面を含んでいる場合には、前記仮想面必要並進力決定手段は、次のように各仮想面における仮想面必要並進力を決定することが好ましい。
【００３９】
すなわち、前記仮想面必要並進力決定手段は、前記決定された必要総並進外力が前記２つの対向仮想面と直交する方向の成分である対向仮想面直交成分を有する場合に、前記第１Ａ必要条件、第１Ｂ必要条件及び第２必要条件を満足することに加えて、前記２つの対向仮想面のそれぞれにおける仮想面垂直抗力成分のうち、小さい方の仮想面垂直抗力成分の大きさがあらかじめ設定された第２所定値以下になるという第３必要条件を満足するように、各仮想面における仮想面必要並進力を決定することが好ましい（第３発明）。
【００４０】
この第３発明では、前記第３必要条件における前記第２所定値は、前記２つの対向仮想面の間での前記内力の大きさの上限値に相当するものとなる。従って、第３発明によれば、前記決定された必要総並進外力が前記２つの対向仮想面と直交する方向の成分である対向仮想面直交成分を有する場合に、前記第１Ａ必要条件、第１Ｂ必要条件及び第２必要条件を満足することに加えて、前記２つの対向仮想面の間での前記内力の大きさが過大になるのを防止しつつ、各仮想面における仮想面必要並進力を決定できる。
【００４１】
ひいては、前記２つの対向仮想面に対応する２つ接触対象面間でロボットに発生する内力が過大になるのを防止するように、各接触対象面における目標並進力を決定できる。換言すれば、ロボットのアクチュエータが発生可能な動力のうち、目標運動の実現に利用し得る動力が前記内力によって不足するのを防止しつつ、各接触対象面における目標並進力を決定できる。
【図面の簡単な説明】
【００４２】
【図１】本発明の実施形態における脚式移動ロボットの機構的な外力構成を示す図。
【図２】図１のロボットに備えた制御ユニットの機能とセンサ群とを示すブロック図。
【図３】図３（ａ）〜（ｃ）は、図１のロボットの目標歩容の一例としての壁登り歩容におけるロボットの瞬時的な動作状態を時系列的に示す図。
【図４】図４（ａ），（ｂ）は、図３（ａ）〜（ｃ）の動作状態の後におけるロボットの瞬時的な動作状態を時系列的に示す図。
【図５】図５（ａ）〜（ｃ）は壁登り歩容における外力作用点の設定位置の経時的変化の例を示すグラフ。
【図６】壁登り歩容における外力作用点の存在許容領域の面積の経時的変化の例を示すグラフ。
【図７】図２に示す外力目標生成部の、第１実施形態における処理を示すフローチャート。
【図８】図２に示す外力目標生成部の、第１実施形態における処理を示すフローチャート。
【図９】図２に示す外力目標生成部の第１実施形態における処理を示すフローチャート。
【図１０】図７のＳ０１で設定する仮想面を説明するための図。
【図１１】図１１（ａ）は図７のＳ０５の処理により決定される仮想面必要並進力（仮想面垂直抗力成分及び仮想面摩擦力成分）の例を示す図、図１１（ｂ）は図７のＳ１３までの処理により決定される仮想面必要並進力（仮想面垂直抗力成分及び仮想面摩擦力成分）の例を示す図。
【図１２】図８のＳ１９の処理を説明するための図。
【図１３】図８のＳ２５の処理を説明するための図。
【図１４】図２に示す外力目標生成部の、第２実施形態における処理を示すフローチャート。
【図１５】図２に示す外力目標生成部の、第２実施形態における処理を示すフローチャート。
【図１６】図２に示す外力目標生成部の、第３実施形態における処理を示すフローチャート。
【図１７】図２に示す外力目標生成部の、第４実施形態における処理を示すフローチャート。
【図１８】図２に示す外力目標生成部の、第４実施形態における処理を示すフローチャート。
【図１９】図１９（ａ）〜（ｅ）は図１のロボットの目標歩容の他の例におけるロボットの瞬時的な動作状態を時系列的に示す図。
【図２０】図２０（ａ）〜（ｄ）は図１のロボットの目標歩容の他の例におけるロボットの瞬時的な動作状態を時系列的に示す図。
【発明を実施するための形態】
【００４３】
［第１実施形態］
本発明の第１実施形態を図１〜図１３を参照して以下に説明する。
【００４４】
まず、図１を参照して、本実施形態における脚式移動ロボット１（以降、単にロボット１という）の機構的な概略構成を説明する。
【００４５】
このロボット１は、基体３と、この基体３から延設された複数のリンク機構５とを有する。各リンク機構５は、ロボット１の脚として機能し得る機構である。そして、リンク機構５の個数は、本実施形態の例では４つである。
【００４６】
なお、本実施形態の説明において、リンク機構５がロボット１の脚として機能し得るということは、該リンク機構５の先端部を、ロボット１の外界（動作環境）の床あるいは壁等の接触対象面に接触させた場合に、該リンク機構５が、ロボット１の自重（より正確には、ロボット１に作用する重力とロボット１の運動によって発生する慣性力との合力）の全部又は一部を支える外力を接触対象面から受けることができることを意味する。
【００４７】
各リンク機構５は、複数の要素リンク７と、これらの要素リンク７を基体３側から順番に連接する複数の関節９とから構成されている。この場合、各リンク機構５の先端部を構成する要素リンク７（以降、これを先端部リンク７ａ、又は単にリンク機構５の先端部という）が、該リンク機構５を脚として機能させる場合に、ロボット１の外界の床あるいは壁等の接触対象面に接触させる部分である。そして、各先端部リンク７ａは、板状に形成されており、その表面（外界との接触面）には図示を省略するゴム材等の弾性樹脂材が装着されている。
【００４８】
各リンク機構５の各関節９は、例えば公知の構造の回転型の関節であり、それぞれ、１つ又は複数の自由度を有する。この場合、各リンク機構５に含まれる全ての関節９のトータルの自由度数が“６”以上の自由度数となるように、各リンク機構５毎の各関節９の自由度数が設定されている。このため、基体３に対する各先端部リンク７ａの空間的な位置と姿勢（空間的な向き）とは、それぞれ３自由度を有する。なお、各リンク機構５には、回転型の関節の他に、直動型の関節が含まれていてもよい。
【００４９】
また、図１では図示を省略するが、ロボット１には、各関節９をそれぞれ駆動する電動モータ等の複数の関節アクチュエータ１１（図２に示す）が搭載されている。そして、各リンク機構５の各関節９は、それに対応する関節アクチュエータ１１から、図示しない減速機等を含む動力伝達機構を介して駆動力が伝達されるようになっている。
【００５０】
以上が本実施形態におけるロボット１の機構的な概略構成である。
【００５１】
補足すると、図１に例示するロボット１では、各リンク機構５の要素リンク７のサイズや個数、関節９の個数、トータルの自由度数等を含めた各リンク機構５の構造が、全てのリンク機構５で同じであるように記載されているが、それらの構造は、全てのリンク機構５で同じである必要はない。
【００５２】
また、図１では、ロボット１が、２つのリンク機構５ａ，５ｂを脚として機能させて平地を移動させる２脚移動ロボット（人型ロボットに類似するロボット）であるように記載されているが、例えば全てのリンク機構５を脚として機能させて平地を移動させるようなロボット（例えば４脚ロボット）であってもよい。
【００５３】
また、リンク機構５の個数は、４個である必要ななく、例えば、３個もしくは５個以上であってもよい。
【００５４】
次に、図２を参照して、以上の如く構成されたロボット１には、ロボット１の動作制御に利用されるセンサ群１３と、ＣＰＵ、ＲＡＭ、ＲＯＭ、関節アクチュエータ１１の駆動回路等を含む電子回路ユニットにより構成された制御ユニット２１とが搭載されている。
【００５５】
センサ群１３は、本実施形態の例では、ロボット１の代表リンク（代表部位）としての基体３の空間的な姿勢を計測するための姿勢センサ１５と、各リンク機構５の先端部に作用する外力を計測するための力センサ１７と、各関節９の変位量（本実施形態では回転角）を計測するための関節変位センサ１９とを備える。
【００５６】
この場合、姿勢センサ１５は、例えばジャイロセンサ等の角速度センサ（レートセンサ）と加速度センサとから構成され、図１に示す如く基体３に搭載されている。また、力センサ１７は、例えば３軸方向の並進力及び３軸周りのモーメントを検出可能な６軸力センサにより構成され、図１に示す如く、各リンク機構５の最も先端側の関節９と先端部リンク７ａとの間に介装されている。また、関節変位センサ１９は、例えば各関節９に装着されたエンコーダやポテンショメータ等により構成される。
【００５７】
制御ユニット２１は、ロボット１の適所、例えば基体３に搭載されている。この制御ユニット２１は、実装されるプログラム等により実現される主要な機能として、ロボット１の目標とする動作を表す目標歩容を生成（作成）して出力する歩容生成部２３と、この目標歩容に応じてロボット１の動作制御を行う動作制御部２９とを備える。
【００５８】
歩容生成部２３の処理の詳細な説明は後述するが、該歩容生成部２３が生成して出力する目標歩容は、ロボット１の目標運動と、ロボット１に外界から作用させる外力に関する目標とから構成される。
【００５９】
この場合、目標歩容の構成要素のうちの目標運動は、各関節９の目標変位量の時系列と、ロボット１の代表リンク（本実施形態では基体３）のグローバル座標系での目標位置及び目標姿勢の時系列とから構成される。なお、代表リンク（基体３）の目標位置は、より詳しくは、該代表リンクに設定された代表点の目標位置である。また、グローバル座標系は、ロボット１の外界に対して固定される座標系である。
【００６０】
また、目標歩容の構成要素のうちの外力に関する目標は、１つ以上のリンク機構５の先端部リンク７ａを外界の接触対象面に接触させる場合に該接触対象面からロボット１に作用させるべき外力の目標値（目標外力）の時系列と、その外力の作用点の目標位置としての目標外力作用点の時系列とから構成される。この場合、目標外力は、本実施形態では、該外力のうちの並進力成分である並進外力の目標値（目標並進力）と、該外力のうち、外界の接触対象面に垂直な方向の軸周りでのねじり力（モーメント外力）の目標値（目標ねじり力）とから構成される。
【００６１】
なお、接触対象面からロボット１に作用させるべき外力の作用点というのは、その接触対象面からロボットに作用する外力の全体によって、該作用点の周りに発生するモーメントのうち、該接触対象面に平行な軸周りの成分が“０”となるような点を意味する。その作用点は、ロボット１を単に床上で移動させる場合には、所謂、床反力中心点に相当する点である。このことは、後述する仮想面上の外力作用点についても同様である。
【００６２】
補足すると、目標歩容に関する上記「時系列」は、ある期間内の瞬時値の順序列そのものでよいことはもちろんであるが、該時系列のパターンを規定する関数式等のパラメータであってもよい。
【００６３】
また、ロボット１のあるリンク機構５のトータルの自由度数が６自由度である場合には、基体３に対する該リンク機構５の先端部リンク７ａの位置及び姿勢を指定すれば、該リンク機構５の各関節９の変位量が一義的に決定されることとなる。従って、６自由度のリンク機構５については、該リンク機構５の各関節９の目標変位量の代わりに、該リンク機構５の先端部リンク７ａの目標位置及び目標姿勢を、前記目標運動の構成要素として用いてもよい。
【００６４】
さらに、必要に応じて、ロボット１の所定の運動状態量の目標値、例えば、ロボット１の全体重心点の位置、速度、加速度の目標値、あるいは、ロボット１の基体３以外の特定の部位の位置、姿勢の目標値を、歩容生成部２３で生成する目標運動の構成要素に含めるようにしてもよい。
【００６５】
動作制御部２５は、歩容生成部２３が生成した目標歩容にロボット１の実際の動作を追従させるようにロボット１の各関節９をそれに対応する関節アクチュエータ１１を介して制御する。この場合、本実施形態では、姿勢センサ１５の出力と関節変位センサ１９の出力とから認識されるロボット１全体の重心点の実際の位置と、目標運動により規定されるロボット１全体の重心点の目標位置との偏差に応じて、該偏差を“０”に近づけるために、ロボット１に付加的に作用させるべき外力が決定される。さらに、この付加的外力を目標歩容における外力の目標値に付加してなる外力と目標運動とに、それぞれ、実際の外力（前記力センサ１７の出力から認識される外力）とロボット１の実際の運動とを追従させるように、各関節９に付与すべき駆動力が決定される。そして、この決定された駆動力に応じて各関節アクチュエータ１１の駆動力が制御される。
【００６６】
次に、前記歩容生成部２３による目標歩容の生成処理を詳細に説明する。なお、以降の説明では、４つのリンク機構５を区別する場合には、図１に示す如く参照符号５ａ，５ｂ，５ｃ，５ｄを付する。
【００６７】
歩容生成部２３は、本願発明を適用した処理によって目標歩容を生成する。この生成処理のアルゴリズムは、種々様々な動作環境でロボット１を運動させる歩容を生成することが可能である。
【００６８】
ただし、本実施形態における目標歩容の生成処理は、特に、ロボット１の外界（動作環境）に存する互いに異なる複数の接触対象面にロボット１の複数の部位を接触させながら、ロボット１の運動を行なわせるための目標歩容を生成する場合に特徴を有する。
【００６９】
そこで、以降の説明では、本実施形態の理解の便宜上、複数の接触対象面にロボット１の複数のリンク機構５の先端部リンク７ａを接触させながら、ロボット１の運動を行なわせるための一例の目標歩容を参考的に提示する。そして、その一例の目標歩容の生成処理に関する説明を適宜行いつつ、歩容生成部２３の処理を説明する。
【００７０】
以降の本実施形態の説明で参考的に例示する目標歩容に係わるロボット１の動作環境は、ロボット１の外界に存する互いに異なる接触対象面として、例えば図１に示すように、床面ＦＬと、この床面ＦＬからほぼ垂直に起立する２つの壁面ＷＬ１，ＷＬ２とを備える動作環境である。この場合、２つの壁面ＷＬ１，ＷＬ２は、互いに間隔を存して平行もしくはほぼ平行に対向する接触対象面である。
【００７１】
そして、本実施形態の説明で参考的に例示する目標歩容は、２つの壁面ＷＬ１，ＷＬ２の間で、床面ＦＬ上から壁面ＷＬ１，ＷＬ２をよじ登らせるようにロボット１を動作させる目標歩容である。以降、この目標歩容を壁登り歩容ということがある。
【００７２】
この壁登り歩容におけるロボット１の動作形態の概要を図３（ａ），（ｂ），（ｃ）及び図４（ａ），（ｂ）を参照して以下に説明しておく。図３（ａ），（ｂ），（ｃ）及び図４（ａ），（ｂ）は、壁登り歩容におけるロボット１の瞬時的な動作状態（時刻t1〜t5での動作状態）を時系列順に示している。
【００７３】
なお、これらの図では、便宜上、ロボット１の各リンク機構５のリンク要素７及び関節９の図示を省略し、各リンク機構５をその基端部（基体３側の端部）と先端部とを結ぶ線分として記載している。この場合、図面上は、各リンク機構５の先端部は点となるが、実際には、前記した板状の先端部リンク７ａである。
【００７４】
また、これらの図における矢印Ｆ1〜Ｆ10は、各図のロボット１の動作状態で、接触対象面ＦＬ又はＷＬ１又はＷＬ２からロボット１に作用する外力（並進外力）の例を視覚的に示している。この場合、各並進外力Ｆ1〜Ｆ10の始点が接触対象面ＦＬ又はＷＬ１又はＷＬ２からロボット１への該並進外力の作用点（外力作用点）に相当する。
【００７５】
また、これらの図において、接触対象面ＦＬ又はＷＬ１又はＷＬ２上に記載している丸枠領域AR1〜AR12は、各図のロボット１の動作状態で、接触対象面ＦＬ又はＷＬ１又はＷＬ２からロボット１への外力作用点の概略的な存在可能領域を視覚的に示している。その存在可能領域は、単一のリンク機構５の先端部だけが接触している接触対象面では、その単一のリンク機構５の先端部リンク７ａと接触対象面との接触面内の領域である。また、複数のリンク機構５の先端部が接触している接触対象面での外力作用点の存在可能領域は、それらの複数のリンク機構５の先端部リンク７ａのそれぞれと接触対象面との各接触面内の領域をひとまとめに連接してなる領域（所謂、支持多角形に相当する領域）である。
【００７６】
以下、これらの図を参照して壁登り歩容を説明すると、図３（ａ）は壁登り歩容の初期状態を示している。この初期状態では、ロボット１の２つのリンク機構５ａ，５ｂの先端部を床面ＦＬに接触（接地）させた状態で、ロボット１が壁面ＷＬ１，ＷＬ２の間で床面ＦＬ上に起立する。また、ロボット１の壁登り歩容の動作を開始するために、ロボット１は、残りのリンク機構５ｃ，５ｄのうちの壁面ＷＬ１側のリンク機構５ｃの先端部を該壁面ＷＬ１に接触させると共に、壁面ＷＬ２側のリンク機構５ｄの先端部を該壁面ＷＬ２に接触させる。
【００７７】
この場合、図３（ａ）の初期状態では、ロボット１の自重（より正確には、ロボット１に作用する重力とロボット１の運動によって発生する慣性力との合力）を支えるための外力として、例えば、矢印Ｆ1で示す外力が、床面ＦＬの領域AR1からロボット１に作用する。なお、図示例では、壁面ＷＬ１，ＷＬ２からロボット１に作用する外力は“０”である。
【００７８】
次いで、ロボット１の動作状態は、図３（ｂ）に示す状態に移行する。この図３（ｂ）の動作状態は、図３（ａ）の初期状態で壁面ＷＬ１，ＷＬ２に接触させたリンク機構５ｃ，５ｄの先端部をそれぞれ壁面ＷＬ１，ＷＬ２に押し付けつつ、リンク機構５ａ，５ｂのうちの一方（図示例では、リンク機構５ａ）の先端部を床面ＦＬ上から浮上させることによって、図３（ａ）の初期状態から移行する動作状態である。
【００７９】
この場合、図３（ｂ）の動作状態では、ロボット１の自重を支えるための外力として、例えば、床面ＦＬの領域AR4から矢印Ｆ2で示す外力がロボット１に作用すると共に、壁面ＷＬ１の領域AR5と壁面ＷＬ２の領域AR6とからそれぞれ矢印Ｆ3，Ｆ4で示す外力（上向きの摩擦力成分を有する外力）がロボット１に作用する。
【００８０】
次いで、ロボット１の動作状態は、図３（ｃ）に示す状態に移行する。この図３（ｃ）の動作状態は、図３（ｂ）の動作状態で壁面ＷＬ１，ＷＬ２にそれぞれ押し付けたリンク機構５ｃ，５ｄの先端部の押し付け力を増加させ、さらに、図３（ｂ）の動作状態で床面ＦＬに接触させていたリンク機構５ｂを床面ＦＬ上から浮上させる（ひいては、リンク機構５ａ，５ｂの両方を床面ＦＬ上から浮上させる）ことによって、図３（ｂ）の動作状態から移行する動作状態である。
【００８１】
この場合、図３（ｃ）の動作状態では、ロボット１の自重を支えるための外力として、例えば、壁面ＷＬ１の領域AR7と、壁面ＷＬ２の領域AR8とから、それぞれ矢印Ｆ5，Ｆ6で示す外力（上向きの摩擦力成分を有する外力）がロボット１に作用する。
【００８２】
次いで、ロボット１の動作状態は、図４（ａ）に示す状態に移行する。この図４（ａ）の動作状態は、図３（ｃ）の動作状態までに床面ＦＬから浮上させたリンク機構５ａ，５ｂのうちのリンク機構５ａの先端部を、リンク機構５ｃの先端部の下側で壁面ＷＬ１に接触させると共に、リンク機構５ｂの先端部を、リンク機構５ｄの先端部の下側で壁面ＷＬ２に接触させることによって、図３（ｃ）の動作状態から移行する動作状態である。
【００８３】
この場合、図４（ａ）に示した動作状態は、リンク機構５ａ，５ｂをそれぞれ壁面ＷＬ１，ＷＬ２に接触させた直後の状態である。この状態では、例えば、壁面ＷＬ１の領域AR9のうち、リンク機構５ｃの先端部寄りの点を外力作用点として、矢印Ｆ7で示す外力（上向きの摩擦力成分を有する外力）がロボット１に作用すると共に、壁面ＷＬ２の領域AR10のうち、リンク機構５ｄの先端部寄りの点を外力作用点として、矢印Ｆ8で示す外力（上向きの摩擦力成分を有する外力）がロボット１に作用する。
【００８４】
次いで、ロボット１の動作状態を、図４（ａ）に示した如くリンク機構５ａ，５ｃを壁面ＷＬ１に接触させ、且つ、リンク機構５ｂ，５ｄを壁面ＷＬ２に接触させた状態に維持したまま、下側のリンク機構５ａ，５ｂのそれぞれの壁面ＷＬ１，ＷＬ２への押し付け力を増加させていくと共に、上側のリンク機構５ｃ，５ｄのそれぞれの壁面ＷＬ１，ＷＬ２への押し付け力を減少させていく。
【００８５】
これにより、壁面ＷＬ１からロボット１への外力作用点を、領域AR9のうちのリンク機構５ａの先端部寄りの箇所に近づけていくと共に、壁面ＷＬ２からロボット１への外力作用点を、領域AR10のうちのリンク機構５ｂの先端部寄りの箇所に近づけていく。そして、最終的には、壁面ＷＬ１からロボット１への外力作用点を、リンク機構５ａの先端部と壁面ＷＬ１との接触面内に移動させると共に、壁面ＷＬ２からロボット１への外力作用点を、リンク機構５ｂの先端部と壁面ＷＬ２との接触面内に移動させる。
【００８６】
次いで、ロボット１の動作状態は、図４（ｂ）に示す状態に移行する。この図４（ｂ）の動作状態は、図４（ａ）の動作状態で、上記の如く壁面ＷＬ１，ＷＬ２からロボット１への外力作用点を移動させた後に、リンク機構５ａ，５ｂをそれぞれ壁面ＷＬ１，ＷＬ２に押し付けた状態を維持したまま、リンク機構５ｃ，５ｄの先端部のうちの一方（図示例では、リンク機構５ｃの先端部）を壁面ＷＬ１から離反させることによって、図４（ａ）の動作状態から移行する動作状態である。
【００８７】
この場合、図４（ｂ）に示した動作状態では、ロボット１の自重を支えるための外力として、壁面ＷＬ１の領域AR11から矢印Ｆ9で示す外力（上向きの摩擦力成分を有する外力）がロボット１に作用すると共に、壁面ＷＬ２の領域AR12から矢印Ｆ10で示す外力（上向きの摩擦力成分を有する外力）がロボット１に作用する。
【００８８】
その後は、リンク機構５ｄの先端部も壁面ＷＬ２から離反される。そして、壁面ＷＬ１，ＷＬ２から離反されたリンク機構５ｃ，５ｄの先端部が、それぞれ、図４（ａ）の動作状態よりも高所で壁面ＷＬ１，ＷＬ２に接触される。そして、図３（ｂ）以降の動作と同様の動作の繰り返しによって、ロボット１が壁面ＷＬ１，ＷＬ２をよじ登っていく。
【００８９】
以上が、壁登り歩容の概略的な形態である。
【００９０】
このような壁登り歩容等の目標歩容を生成する歩容生成部２３が実行する処理は、図２のブロック図に示す如く、基本歩容要素生成部２５の処理と、外力目標生成部２７の処理とに大別される。
【００９１】
上記基本歩容要素生成部２５は、目標歩容のうちの基本的な構成要素として、ロボット１の目標運動と、暫定的な目標外力作用点である暫定外力作用点とを生成する処理を実行する機能部である。なお、基本歩容要素生成部２５は、暫定外力作用点を決定するために、目標外力作用点の存在許容領域を設定する処理も実行する。
【００９２】
また、上記外力目標生成部２７は、基本歩容要素生成部２５が生成した目標運動と暫定外力作用点とを用いて、該目標運動を実現する上で適切な外力の目標値（目標外力）と目標外力作用点とを決定する処理を実行する機能部である。
【００９３】
この場合、本実施形態では、外力目標生成部２７は、基本歩容要素生成部２５が生成した目標運動を評価する機能を有する。そして、外力目標生成部２７は、生成された目標運動が適切である場合に、目標歩容の全期間における目標外力と目標外力作用点とを決定する処理を実行し、該目標運動が不適切であると評価されるときには、目標外力と目標外力作用点とを決定する処理を中止する。
【００９４】
歩容生成部２３が目標歩容を生成するとき、歩容生成部２３には、制御ユニット２１にあらかじめ記憶保持された移動指令データ、あるいは、外部から無線通信などにより制御ユニット２１に入力される移動指令データが与えられると共に、ロボット１の外界に存在する接触対象面等に関する環境情報が与えられる。
【００９５】
上記移動指令データは、例えば、ロボット１の移動開始時刻や、移動経路、移動の仕方等を指定するデータである。また、上記環境情報は、例えば、ロボット１の外界の接触対象面（床面ＦＬ、壁面ＷＬ１，ＷＬ２等）のロボット１に対する相対位置及び相対姿勢を認識するために必要な情報や、各接触対象面の性状（摩擦係数等）を認識するために必要な情報等から構成される。
【００９６】
なお、上記環境情報は、制御ユニット２１に外部から無線通信等により入力される情報、又は制御ユニット２１にあらかじめ記憶保持された情報でもよいが、ロボット１に搭載した図示しない撮像カメラ等の環境認識用のセンサの出力を基に、制御ユニット２１で認識された情報であってもよい。
【００９７】
そして、歩容生成部２３は、これらの移動指令データと環境情報とを用いて、まず、基本歩容要素生成部２５の処理を実行する。この基本歩容要素生成部２５は、入力された移動指令データと環境情報とに基づいて、ロボット１の運動を制約する条件（ロボット１の目標運動が満たすべき条件）を設定し、その条件を満足させるように、逆運動学の演算処理によってロボット１の目標運動を生成する。
【００９８】
この場合、ロボット１の運動を制約する条件は、基本的には、該ロボット１の要求される運動形態に応じて適宜設定される。その制約条件としては、例えば、各リンク機構５の先端部の運動を制約する条件（各リンク機構５の先端部リンク７ａを外界の接触対象面に接触させる時刻の目標、その接触時における接触対象面上の接触位置の目標、その接触時における先端部リンク７ａの姿勢の目標、外界の接触対象面に接触させていない先端部リンク７ａの、ある時刻又は期間における位置及び姿勢の目標等）と、基体２の運動を制約する条件（ある時刻又は期間における基体２の位置及び姿勢の目標等）とを使用することができる。
【００９９】
なお、基体２の運動を制約する条件に代えて、もしくは、該条件に加えて、ロボット１の運動に関する所定の状態量を制約する条件（例えばロボット１の全体の並進運動量又は角運動量の目標等）を使用するようにしてもよい。また、該制約条件には、一般には、ロボット１の関節９の可動範囲や動作速度（関節９の変位量の変化速度）の許容範囲等、機構的な制約条件も含まれる。
【０１００】
前記壁登り歩容の生成を行なう場合には、基本歩容要素生成部２５は、図３及び図４を参照して説明した時系列的な形態で、ロボット１の各リンク機構５の先端部が接触対象面ＦＬ，ＷＬ１，ＷＬ２のいずれかに接触する動作が行なわれるように、ロボット１の運動を制約する条件（例えば、各リンク機構５の先端部の運動を制約する条件と、基体３の運動を制約する条件とを含む制約条件）を決定する。そして、基本歩容要素生成部２５は、この制約条件を満足させるように、逆運動学の演算処理によってロボット１の目標運動の時系列を生成する。なお、目標運動は、不連続に（ステップ状に）変化することが無いように生成される。
【０１０１】
また、基本歩容要素生成部２５は、上記の如く決定した目標運動に基づいて、各接触対象面（１つ又は複数のリンク機構５の先端部リンク７ａを接触させている面）における暫定外力作用点の時系列を決定する。
【０１０２】
この場合、基本歩容要素生成部２５は、まず、上記の如く生成した目標運動に基づいて、各接触対象面における外力作用点の存在許容領域を設定する。より詳しくは、基本歩容要素生成部２５は、上記の如く生成した目標運動において、１つのリンク機構５の先端部リンク７ａだけを接触させる接触対象面においては、該接触対象面と先端部リンク７ａとの接触面内に外力作用点の存在許容領域を設定する。その存在許容領域は、接触対象面と先端部リンク７ａとの接触面内で、その接触面の境界に近づき過ぎないような領域に設定される。
【０１０３】
また、２つ以上のリンク機構５の先端部リンク７ａを接触させる接触対象面においては、基本歩容要素生成部２５は、該接触対象面と各先端部リンク７ａとの接触面を連接してなる領域（所謂、支持多角形の領域）内に外力作用点の存在許容領域を設定する。その存在許容領域は、支持多角形の領域内で、該支持多角形の領域の境界に近づき過ぎないような領域に設定される。
【０１０４】
そして、基本歩容要素生成部２５は、上記の如く設定した外力作用点の存在許容領域内の点（例えば、該存在許容範囲内の中央点）を暫定外力作用点として決定する。なお、各接触対象面上の暫定外力作用点は、該接触対象面にいずれかのリンク機構５が接触する状態が連続的に継続する期間内において、該作用点の位置が不連続に（ステップ状に）変化することが無いように決定される。
【０１０５】
歩容生成部２３が図３及び図４に例示した壁登り歩容の生成を行なう場合には、暫定外力作用点は、例えば、図５（ａ），（ｂ），（ｃ）に例示する時系列パターンで生成される。なお、図５（ａ）〜（ｃ）における横軸の時刻t1〜t5は、それぞれ順番に、図３（ａ）、図３（ｂ）、図３（ｃ）、図４（ａ）、図４（ｂ）の動作状態に対応する時刻を示している。
【０１０６】
図５（ａ）〜（ｃ）に示す例では、床面ＦＬ上の暫定外力作用点の位置（壁面ＷＬ１，ＷＬ２に垂直な方向での位置）は、時刻t1から時刻t2の直前までに壁面ＷＬ１側から壁面ＷＬ２側に連続的に移動していくように決定される。
【０１０７】
また、壁面ＷＬ１上の暫定外力作用点の位置（高さ方向での位置）は、時刻t3と時刻ｔ4との間の途中時刻まで一定の位置（壁面ＷＬ１とリンク機構５ｃの先端部との接触面内の位置）に維持された後、該途中時刻から時刻t4の直前まで、下方に連続的に移動していくように決定される。次いで、壁面ＷＬ１上の暫定外力作用点の位置は、時刻t4と時刻t5との間の途中時刻まで一定の位置（リンク機構５ｃの先端部の壁面ＷＬ１への接触面とリンク機構５ａの先端部の壁面ＷＬ１への接触面との間の中間位置）に維持された後、時刻t5の直前の時刻まで、下方に連続的に移動していき、さらに、時刻t5の前後の期間で一定の位置（壁面ＷＬ１とリンク機構５ａの先端部との接触面内の位置）に維持されるように決定される。
【０１０８】
また、壁面ＷＬ２上の暫定外力作用点の位置（高さ方向での位置）は、時刻t3と時刻ｔ4との間の途中時刻まで一定の位置（壁面ＷＬ２とリンク機構５ｄの先端部との接触面内の位置）に維持された後、該途中時刻から時刻t4の直前の時刻まで、下方に連続的に移動していき、その後、時刻t5の直後の時刻までの期間で一定の位置（リンク機構５ｄの先端部の壁面ＷＬ２への接触面とリンク機構５ｂの先端部の壁面ＷＬ２への接触面との間の中間位置）に維持されるように決定される。
【０１０９】
なお、この場合、床面ＦＬと壁面ＷＬ１，ＷＬ２のそれぞれにおける外力作用点の存在許容領域は、その面積が、例えば図６に示すようなパターンで連続的に変化するように設定される。
【０１１０】
補足すると、基本歩容要素生成部２５が生成する目標運動は、基本的には、ロボット１に行なわせようとする運動に関する要求を形式的に（少なくとも運動学的に）実現し得るように生成されたものであればよい。換言すれば、該目標運動は、動力学的な実現性が厳密に保障されたものでなくてもよい。従って、該目標運動を実現するためにロボット１に作用させるべき外力が、実際にはロボット１に作用させることが困難となる場合や、該外力が好適な範囲を逸脱するようなものとなる場合（該外力が過大になり過ぎる場合等）もあり得る。
【０１１１】
歩容生成部２３は、次に、外力目標生成部２７の処理を実行する。この外力目標生成部２７には、基本歩容要素生成部２５で生成された目標運動、暫定外力作用点及び外力作用点の存在許容領域が入力される。さらに、外力目標生成部２７には、前記環境情報も入力される。
【０１１２】
そして、外力目標生成部２７は、これらの入力データを用いて、図７〜図９のフローチャートに示す処理を実行することによって、目標歩容の目標外力と目標外力作用点とを決定する。図７〜図９のフローチャートに示す処理は、目標歩容の各時刻（所定の刻み時間毎の各時刻）における目標運動の評価を行いつつ、目標外力及び目標外力作用点の瞬時値を決定するための処理を示しており、この処理を目標歩容の各時刻毎に順番に行なうことによって、目標運動が適切である場合に、目標外力と目標外力作用点とが時系列的に決定される。
【０１１３】
なお、外力目標生成部２７の処理に関する以降の説明においては、図７〜図９のフローチャートの処理により今現在、決定しようとする目標外力及び目標外力作用点の瞬時値に対応する時刻を今回時刻という。また、今回時刻の１つ前の時刻を前回時刻、次の時刻を次回時刻という。
【０１１４】
以下説明すると、外力目標生成部２７は、まず、Ｓ０１の処理を実行する。このＳ０１では、外力目標生成部２７は、目標運動と環境情報とを基に、今回時刻での目標外力及び目標外力作用点を決定するための演算処理に用いる作業用の仮想面を、ロボット１の外界の各接触対象面（目標運動における今回時刻でいずれかのリンク機構５の先端部を接触させる接触対象面）に一致又は近似させるように設定する。
【０１１５】
ここで、本実施形態では、外力目標生成部２７の処理のアルゴリズムに汎用性を持たせると共に該アルゴリズムの構築を行い易くするために図１０に示す如く、相互の姿勢関係があらかじめ定められた６つの平面Ｓ1a，Ｓ2a，Ｓ3a，Ｓ1b，Ｓ2b，Ｓ3bが、作業用の仮想面として使用し得る面として用意されている。そして、外力目標生成部２７の処理では、ロボット１の目標運動を実現するために該ロボット１に各接触対象面から作用すべき外力は、各接触対象面に対応する仮想面からロボット１に作用する外力であると見なされる。
【０１１６】
この場合、本実施形態では、６つの仮想面のうちの仮想面Ｓ1a，Ｓ2a，Ｓ3aは相互に直交する平面とされ、仮想面Ｓ1b，Ｓ2b，Ｓ3bは、それぞれ仮想面Ｓ1a，Ｓ2a，Ｓ3aに平行な平面とされている。
【０１１７】
また、互いに平行に対向する２つの仮想面は、それぞれが発生し得る垂直抗力が互いに逆向き（各仮想面からこれに対向する仮想面に向かう向き）であるとされる。例えば、図１０に示す如く、３軸直交座標系（ＸＹＺ座標系）を想定した場合において、Ｘ軸に直交する仮想面Ｓ1a，Ｓ1bがそれぞれ発生可能な垂直抗力Ｎ_1a，Ｎ_1bの向きは、それぞれＸ軸方向の正の向き（Ｓ1aからＳ1bに向かう向き）、Ｘ軸方向の負の向き（Ｓ1bからＳ1aの向かう向き）である。このことは、Ｙ軸に直交する仮想面Ｓ2a，Ｓ2bの組、Ｚ軸に直交する仮想面のＳ3a，Ｓ3bの組についても同様である。
【０１１８】
そして、Ｓ０１の処理では、外力目標生成部２７は、今回時刻での外界の各接触対象面（詳しくは、各接触対象面のうちのロボット１のリンク機構５の先端部との接触面）に、それぞれ、仮想面Ｓ1a，Ｓ2a，Ｓ3a，Ｓ1b，Ｓ2b，Ｓ3bのいずれか１つを対応付ける。そして、外力目標生成部２７は、今回時刻での各接触対象面に対応付けた仮想面が、それに対応する接触対象面に一致又は近似するように、今回時刻での接触対象面と同数の仮想面を、ロボット１の外界（前記環境情報により認識される外界）に対して仮想的に設定する。なお、外界に仮想面を設定するということは、外界における仮想面の配置位置及び姿勢を決定することを意味する。
【０１１９】
この場合、今回時刻での外界の接触対象面が複数となる場合には、各接触対象面（各接触対象面のうちのロボット１のリンク機構５の先端部との接触面）とこれに対応する仮想面との間の姿勢差（空間的な角度差）が、いずれの接触対象面についてもできるだけ“０”又はそれに近いものとなるように、外界における仮想面の配置（接触対象面と同数の仮想面から成る仮想面群の配置）が決定される。例えば、各接触対象面毎の上記姿勢差の空間的な各成分（３軸周りの角度差成分）の２乗値又は絶対値を、今回時刻での全ての接触対象面に関して加え合わせてなる値（又は該２乗値又は絶対値の平均値）が最小となるように、今回時刻での全ての接触対象面と同数の仮想面から成る仮想面群の配置が決定される。
【０１２０】
従って、本実施形態では、今回時刻での外界の接触対象面が複数となる場合に、Ｓ０１で設定される複数の仮想面（仮想面群）は、接触対象面と同数の仮想面により構成され、その相互の姿勢関係は、任意の２つの仮想面が互いに直交するか、又は互いに平行に対向するものとなる。
【０１２１】
なお、今回時刻での接触対象面が前回時刻での接触対象面と同一の接触対象面を有する場合には、今回時刻において、その同一の接触対象面に対応付けられる仮想面は、前回時刻と同じ仮想面に維持される。
【０１２２】
以上のＳ０１の処理によって、歩容生成部２３が、前記壁登り歩容を生成する場合には、例えば、次のように仮想面が設定される。すなわち、図３（ａ）又は図３（ｂ）に示した動作状態の時刻では、６つの仮想面Ｓ1a，Ｓ2a，Ｓ3a，Ｓ1b，Ｓ2b，Ｓ3bのうちの互いに平行な２つの仮想面を含む３つの仮想面、例えば、仮想面Ｓ3a，Ｓ2a，Ｓ2bがそれぞれ接触対象面としての床面ＦＬ、壁面ＷＬ１、壁面ＷＬ２に対応付けられる（図中の括弧付きの参照符号を参照）。そして、これらの仮想面Ｓ3a，Ｓ2a，Ｓ2bがそれぞれ床面ＦＬ、壁面ＷＬ１、壁面ＷＬ２に一致又はほぼ一致する面になるように、ロボット１の外界における仮想面Ｓ3a，Ｓ2a，Ｓ2bの配置が決定される。
【０１２３】
また、図３（ｃ）、図４（ａ）、図４（ｂ）の動作状態の時刻では、図３（ａ），（ｂ）の動作状態での壁面ＷＬ１，ＷＬ２にそれぞれ対応付けられた仮想面Ｓ2a，Ｓ2bが、そのまま、壁面ＷＬ１，ＷＬ２にそれぞれ対応付けられる（図中の括弧付きの参照符号を参照）。そして、これらの仮想面Ｓ2a，Ｓ2bがそれぞれ壁面ＷＬ１，ＷＬ２に一致又はほぼ一致するように、ロボット１の外界における仮想面Ｓ2a，Ｓ2bの配置が決定される。
【０１２４】
なお、以降の本実施形態の説明では、Ｓ０１で設定される仮想面のうち、互いに平行に対向する２つの仮想面を対向仮想面ということがある。この対向仮想面の組は、本実施形態では、仮想面Ｓ1a，Ｓ1bの組、仮想面Ｓ2a，Ｓ2bの組、仮想面Ｓ3a，Ｓ3bの組のいずれかである。そして、これらの各組の対向仮想面を総称的に表記する場合に、対向仮想面Ｓna，Ｓnb（ｎ＝１又は２又は３）、あるいは、単に対向仮想面Ｓna，Ｓnbと表記することがある。
【０１２５】
図５の説明に戻って、外力目標生成部２７は、次に、Ｓ０３の処理を実行する。このＳ０３では、外力目標生成部２７は、基本歩容要素生成部２５が作成した目標運動を基に、この目標運動を実現するために、今回時刻でロボット１に作用させるべきトータルの外力である必要総外力のうちの並進力成分である必要総並進外力Ｆallと、該必要総外力のうちの所定の基準点周りのモーメント成分である必要総モーメント外力Ｍallとを決定する。
【０１２６】
ここで、上記所定の基準点（以降、モーメント基準点という）は、ロボット１の外界に対して固定された点（例えば、外界の接触対象面又はこれに対応する仮想面上に設定された点）である。このモーメント基準点は、目標歩容の全期間で一定の点に維持してもよいが、目標歩容の所定の期間毎に適宜更新するようにしてもよい。
【０１２７】
なお、本実施形態における外力目標生成部２７の処理では、必要総並進外力Ｆall、必要総モーメント外力Ｍall等の並進力もしくはモーメント、あるいは、空間的な位置、姿勢等の変数（ベクトル量）は、Ｓ０１で設定される仮想面に対して固定されたグローバル座標系（例えば、各仮想面に対して図１０に示すような位置及び姿勢関係で設定される３軸直交座標系（ＸＹＺ座標系））で記述される。
【０１２８】
上記必要総並進外力Ｆall及び必要総モーメント外力Ｍallは、より具体的には次のように決定される。すなわち、必要総並進外力Ｆallを決定する場合には、外力目標生成部２７は、ロボット１の目標運動を基に、ロボット１の幾何学モデル（剛体リンクモデル）を用いて、ロボット１の全体重心点の目標位置の２階微分値である目標重心加速度（今回時刻での目標重心加速度）を算出する。なお、ロボット１の全体重心点の目標位置、あるいは、目標重心加速度は、前記基本歩容要素生成部２５で目標運動の要素として算出しておくようにしてもよい。
【０１２９】
そして、外力目標生成部２７は、この目標重心加速度とロボット１の全体質量とから算出される並進慣性力（ロボット１の目標運動によって発生する慣性力の並進力成分）とロボット１に作用する重力との合力に釣り合う並進力を必要総並進外力Ｆallとして算出する。
【０１３０】
なお、目標運動によって発生するロボット１の全体の並進慣性力は、例えば、ロボット１の各リンク３，７毎の重心点の並進慣性力を加え合わせることによって算出するようにしてもよい。
【０１３１】
また、必要総モーメント外力Ｍallを決定する場合には、外力目標生成部２７は、ロボット１の目標運動を基に、ロボット１の幾何学モデル（剛体リンクモデル）を用いて、ロボット１の目標運動によって該ロボット１の全体重心点の周りに発生する今回時刻での慣性力モーメント（慣性力のモーメント成分）と、該目標運動におけるロボット１の全体重心点の運動（並進運動）が前記モーメント基準点周りに発生する今回時刻での慣性力モーメントとの総和の慣性力モーメントを算出する。そして、外力目標生成部２７は、この総和の慣性力モーメントに釣り合うモーメントを今回時刻での必要総モーメント外力Ｍallとして算出する。
【０１３２】
なお、ロボット１の目標運動によって発生する並進慣性力の時系列と、前記モーメント基準点周りの慣性力モーメントの時系列とを前記基本歩容要素生成部２５で算出しておいてもよい。そして、今回時刻での並進慣性力の値と慣性力モーメントの値とを基本歩容要素生成部２５から外力目標生成部２７に入力するようにしてもよい。
【０１３３】
上記の如く必要総並進外力Ｆall及び必要総モーメント外力Ｍallを算出した後、外力目標生成部２７は、次に、Ｓ０５〜Ｓ１５の処理を実行する。このＳ０５〜Ｓ１５の処理は、ロボット１の目標運動（より詳しくは、該目標運動により規定されるロボット１の全体重心点の並進運動）を実現するために、Ｓ０１で設定した各仮想面からロボット１に作用させるべき並進力である仮想面必要並進力を決定する処理である。この各仮想面における仮想面必要並進力は、該仮想面に垂直な成分である仮想面垂直抗力成分と、該仮想面に平行な成分である仮想面摩擦力成分とから構成される。なお、Ｓ０５〜Ｓ１５の処理によって決定される仮想面必要並進力は暫定値であり、後述のＳ１９以降の処理によって修正される場合がある。また、Ｓ０５〜Ｓ１５の処理には、決定する仮想面必要並進力に基づいて、目標運動の評価を行なう処理も含まれる。
【０１３４】
以下、Ｓ０５〜Ｓ１５の処理を具体的に説明すると、外力目標生成部２７は、まず、Ｓ０５の処理を実行する。このＳ０５では、外力目標生成部２７は、Ｓ０３で決定した必要総並進外力Ｆallに応じて、各仮想面における仮想面必要総並進力のうちの、該仮想面に垂直な成分（垂直抗力成分）である仮想面垂直抗力成分Ｎ_iと、該仮想面に平行な成分（摩擦力成分）である仮想面摩擦力成分Ｆ_iとを決定する。
【０１３５】
なお、本実施形態の説明では、参照符号Ｎ_i，Ｆ_i等における添え字“ｉ”は、今回時刻におけるＳ０１で設定された仮想面のうちの任意の仮想面の識別符号を意味する。そして、この添え字“ｉ”を付した参照符号は、識別符号ｉの仮想面に関連するものの参照符号であることを意味する。この場合、本実施形態の説明では、仮想面Ｓ1a，Ｓ2a，Ｓ3a，Ｓ1b，Ｓ2b，Ｓ3bのそれぞれの識別符号は、仮想面を表す参照符号中の“Ｓ”の添え字、すなわち、1a，2a，3a，1b，2b，3bであるとする。そして、ある特定の仮想面に関連する参照符号には、その特定の仮想面の添え字と同じ添え字を付する。例えば、仮想面Ｓ2aにおける仮想面垂直抗力成分の参照符号を“Ｎ_2a”と表記する。
【０１３６】
この場合、外力目標生成部２７は、今回時刻のＳ０１で設定した全ての仮想面における仮想面必要並進力の合力がＳ０３で決定した必要総並進外力Ｆallに一致するという第１必要条件を満足するように、各仮想面における仮想面必要並進力を構成する仮想面垂直抗力成分Ｎ_iと仮想面摩擦力成分Ｆ_iとを決定する。
【０１３７】
より詳しくは、本実施形態におけるＳ０５の処理では、上記第１必要条件を満足するために、外力目標生成部２７は、今回時刻で設定した全ての仮想面における仮想面垂直抗力成分Ｎ_iの合力が、必要総並進外力Ｆallのうち、当該全ての仮想面に対して平行な成分を除く成分に一致するという第１Ａ必要条件と、当該全ての仮想面における仮想面摩擦力成分Ｆ_iの合力が、必要総並進外力Ｆallのうち、当該全ての仮想面に対して平行な成分に一致するという第１Ｂ必要条件とを満足するように、各仮想面における仮想面垂直抗力成分Ｎ_iと仮想面摩擦力成分Ｆ_iとを決定する。
【０１３８】
なお、Ｓ０５の処理では、今回時刻で設定した仮想面が、互いに平行に対向する２つの対向仮想面Ｓna，Ｓnb（ｎ＝１又は２又は３）を含んでおり、且つ、必要総並進外力Ｆallが、これらの対向仮想面Ｓna，Ｓnbに垂直な成分Ｆall_nを有するような場合には、外力目標生成部２７は、これらの対向仮想面Ｓna，Ｓnbのうち、Ｆall_nと同じ向きの垂直抗力を発生可能な対向仮想面における仮想面垂直抗力成分Ｓna又はＳnbを、Ｆall_nに一致させると共に、他方の対向仮想面における仮想面垂直抗力成分Ｓnb又はＳnaを“０”に設定する。
【０１３９】
また、Ｓ０５の処理では、今回時刻で設定した仮想面が複数であり、且つ、必要総並進外力Ｆallが全ての仮想面に平行な成分を有する場合には、外力目標生成部２７は、上記第１Ａ必要条件を満たすように、各仮想面における仮想面垂直抗力成分Ｎ_iを決定した上で、前記第１Ｂ必要条件を満たしつつ、各仮想面における仮想面摩擦力成分Ｆ_iの大きさが、該仮想面で発生可能な摩擦力の上限値に応じた大きさとなるように（詳しくは該仮想面で発生可能な摩擦力の上限値が大きいほど、仮想面摩擦力成分Ｆ_iの大きさが大きくなるように）、各仮想面の仮想面摩擦力成分Ｆ_iを決定する。
【０１４０】
具体的には、外力目標生成部２７は、今回時刻で設定した各仮想面の摩擦係数μ_iを、前記環境情報（詳しくは、該仮想面に対応する接触対象面の摩擦係数に関する環境情報）に基づいて設定する。この場合、各仮想面の摩擦係数μ_iは、該仮想面に対応する接触対象面の実際の摩擦係数と同一もしくはほぼ同一の値に設定してもよいが、余裕を見込んで、実際の摩擦係数よりも小さめに設定しておくようにしてもよい。
【０１４１】
なお、各仮想面の摩擦係数μ_iの設定は、目標歩容の各時刻で行なう必要はない。例えば、外力目標生成部２７の処理を開始する前に、各接触対象面に対応付ける仮想面の摩擦係数を前記環境情報に基づいて事前に決定して記憶保持しておき、その記憶保持した摩擦係数から、Ｓ０１で設定した各仮想面に対応させる摩擦係数を選定してもよい。
【０１４２】
さらに、外力目標生成部２７は、各仮想面において、その仮想面に対応する摩擦係数μ_iを仮想面垂直抗力成分Ｎ_iの大きさ｜Ｎ_i｜に乗じてなる値（＝μ_i＊｜Ｎ_i｜）を、その仮想面で発生可能な摩擦力の上限値（以降、単に摩擦力上限値という）として設定する。
【０１４３】
なお、本明細書では、「＊」は乗算記号として使用する。この場合、ベクトル同士の乗算演算における「＊」は、外積（ベクトル積）を意味するものとする。
【０１４４】
そして、外力目標生成部２７は、上記の如く設定した摩擦力上限値が大きい仮想面ほど、仮想面摩擦力成分Ｆ_iの大きさがより大きくなるように、各仮想面における仮想面摩擦力成分Ｆ_iを決定する。
【０１４５】
例えば、上記第１Ｂ必要条件を満たしつつ、各仮想面の仮想面摩擦力成分Ｆ_iの大きさの相互の比率が、各仮想面の摩擦力上限値の相互の比率に一致するように、各仮想面の仮想面摩擦力成分Ｆ_iが決定される。なお、この場合、例えば、Ｆallのうちの全ての仮想面に平行な成分を、最も大きな摩擦力上限値を有する仮想面の仮想面摩擦力成分に一致させ、他の仮想面の仮想面摩擦力成分を“０”に設定するようにしてもよい。
【０１４６】
歩容生成部２３が前記壁登り歩容を生成する場合には、以上説明したＳ０５の処理によって、各仮想面における仮想面垂直抗力成分Ｎ_i及び仮想面摩擦力成分Ｆ_iは例えば、次のように決定されることとなる。
【０１４７】
例えば、図３（ｂ）に示した動作状態の時刻t2において、必要総並進外力Ｆallが、図１１（ａ）に示す如く床面ＦＬに対応する仮想面Ｓ3aに垂直な成分Ｆall_zと、壁面ＷＬ１，ＷＬ２にそれぞれ対応する仮想面（対向仮想面）Ｓ2a，Ｓ2bに垂直な成分Ｆall_yと、これらの仮想面Ｓ3a，Ｓ2a，Ｓ2bの全てに平行な成分Ｆall_xを有する状況を想定する。
【０１４８】
この状況においては、Ｓ０５の処理では、仮想面Ｓ3aの仮想面垂直抗力成分Ｎ_3aと仮想面Ｓ2aの仮想面垂直抗力成分Ｎ_2aとがそれぞれ、Ｆall_z、Ｆall_yに一致する値に決定されると共に、仮想面Ｓ2bの仮想面垂直抗力成分Ｎ_2bが“０”に決定される。これにより前記第１Ａ必要条件を満足する各仮想面垂直抗力成分Ｎ_3a，Ｎ_2a，Ｎ_2bが決定される。なお、ここでは、μ_3a＊｜Ｎ_3a｜＞μ_2a＊｜Ｎ_2a｜であるとする。
【０１４９】
そして、仮想面Ｓ3aの仮想面摩擦力成分Ｆ_3aと仮想面Ｓ2aの仮想面摩擦力成分Ｆ_2aとの合力（＝Ｆ_3a＋Ｆ_2a）がＦall_xに一致し、且つ、｜Ｆ_3a｜＞｜Ｆ_2a｜となるように（例えば｜Ｆ_2a｜／｜Ｆ_3a｜＝μ_2a＊｜Ｎ_2a｜／（μ_3a＊｜Ｎ_3a｜）となるように）、仮想面Ｓ3aの仮想面摩擦力成分Ｆ_3aと仮想面Ｓ2aの仮想面摩擦力成分Ｆ_2aとが決定されると共に、仮想面Ｓ2bの仮想面摩擦力成分Ｆ_2bが“０”に決定される。これにより前記第１Ｂ必要条件を満足する各仮想面摩擦力成分Ｆ_3a，Ｆ_2a，Ｆ_2bが決定される。
【０１５０】
なお、壁登り歩容における図３（ｃ）の動作状態以降の時刻では、必要総並進外力Ｆallが例えば図１１（ａ）に示した場合と同様であるとした場合、Ｓ０５の処理では、仮想面Ｓ2aの仮想面垂直抗力成分Ｎ_2aが、ＦallのうちのＦall_yに一致し、且つ、仮想面摩擦力成分Ｆ_2aが、ＦallのうちのＦall_zとＦall_xとの合力に一致するように仮想面垂直抗力成分Ｎ_2a及び仮想面摩擦力成分Ｆ_2aが決定されると共に、仮想面Ｓ2bの仮想面垂直抗力成分Ｎ_2b及び仮想面摩擦力成分Ｆ_2bはいずれも“０”に決定される。
【０１５１】
図５のフローチャートの説明に戻って、以上のようにＳ０５の処理を実行した後、外力目標生成部２７は、Ｓ０７の処理を実行する。このＳ０７では、外力目標生成部２７は、今回時刻のＳ０１で設定した全ての仮想面のそれぞれにおいて、仮想面摩擦力成分Ｆ_iの大きさが仮想面垂直抗力成分Ｎ_iの大きさに応じて設定される所定の上限値としての前記摩擦力上限値以下になるという第２必要条件を満足するか否かを判断する。すなわち、外力目標生成部２７は、Ｓ０１で設定した全ての仮想面のそれぞれにおいて、前記の如く決定した摩擦力上限値（＝μ_i＊｜Ｎ_i｜）を用い、｜Ｆ_i｜≦μ_i＊｜Ｎ_i｜であるか否かを判断する。
【０１５２】
外力目標生成部２７は、Ｓ０７の判断結果が肯定的である場合には、各仮想面における仮想面必要並進力（暫定値）を決定する処理を終了し、図８に示すＳ１９以降の処理を実行する。この場合、Ｓ０５で決定された、各仮想面における仮想面垂直抗力成分Ｎ_iと仮想面摩擦力成分Ｆ_iとの組が、そのまま仮想面必要並進力（暫定値）として決定されることとなる。
【０１５３】
一方、Ｓ０７の判断結果が否定的である場合には、外力目標生成部２７は、次にＳ０９の処理を実行する。このＳ０９では、外力目標生成部２７は、Ｓ０７の判断結果が否定的となる仮想面が、前記対向仮想面Ｓna又はＳnb（ｎ＝１又は２又は３）であるか否かを判断する。
【０１５４】
このＳ０９の判断結果が否定的となる状況では、Ｓ０７の判断結果が否定的となる仮想面における仮想面垂直抗力成分の大きさを、前記第１Ａ必要条件を満たしつつ増加させることができず、ひいては該仮想面における仮想面摩擦力成分の大きさを、前記摩擦力上限値以下で増加させることができない。そこで、この場合には、外力目標生成部２７は、Ｓ１７において、目標運動が不適切である（目標運動を修正する必要がある）とし、図７〜図９のフローチャートの処理（目標外力及び目標外力作用点を決定する処理）を中止する。
【０１５５】
従って、本実施形態では、Ｓ０５において前記第１Ａ必要条件及び第１Ｂ必要条件を満足するように仮想面必要並進力（仮想面垂直抗力成分Ｎ_iと仮想面摩擦力成分Ｆ_iとの組）を決定した上で、Ｓ０７、Ｓ０９の判断処理によって目標運動が評価される。そして、Ｓ０７及びＳ０９の判断結果がいずれも否定的となる場合に、目標運動が不適切であると評価されることとなる。
【０１５６】
なお、Ｓ１７で目標運動が不適切であると評価される場合、外力目標生成部２７は、基本歩容要素生成部２５にエラー情報を出力する。そして、基本歩容要素生成部２５は、そのエラー情報に応じて、目標運動を作成し直す。
【０１５７】
一方、Ｓ０９の判断結果が肯定的となる状況では、互いに平行な対向仮想面Ｓna，Ｓnb（ｎ＝１又は２又は３）の仮想面垂直抗力成分Ｎ_na，Ｎ_nbの大きさを、前記第１Ａ必要条件を満足しつつ（Ｎ_na＋Ｎ_nbを一定に保ちつつ）、増加させることができる。すなわち、Ｎ_naとＮ_nbとは、互いに逆向きの垂直抗力であるので、それらの大きさを同じ量だけ増加させても、Ｎ_naとＮ_nbとの総和は変化しない。
【０１５８】
そこで、Ｓ０９の判断結果が肯定的となる場合には、外力目標生成部２７は、次に、Ｓ１１の処理を実行する。このＳ１１では、外力目標生成部２７は、対向仮想面Ｓna，Ｓnbの仮想面垂直抗力成分Ｎ_na，Ｎ_nbの大きさの増加量ＩＮ_nを、前記第２必要条件を満足させ得るように決定する。
【０１５９】
具体的には、外力目標生成部２７は、対向仮想面Ｓna，Ｓnbのうちの、Ｓ０７の判断結果が否定的となった対向仮想面において、その仮想面摩擦力成分F_i（＝Ｆ_na又はＦ_nb）の大きさから、Ｓ０７の判断処理で用いた摩擦力上限値（＝μ_i＊｜Ｎ_i｜）を差し引いたものを、摩擦係数μ_iで除算してなる値を、上記増加量ＩＮ_nとして算出する。
【０１６０】
すなわち、外力目標生成部２７は、次式０１により、増加量ＩＮ_nを算出する。
【０１６１】
ＩＮ_n＝（｜Ｆ_i｜−μ_i＊｜Ｎ_i｜）／μ_i      ……式０１
次いで、外力目標生成部２７は、Ｓ１３の処理を実行する。このＳ１３では、外力目標生成部２７は、対向仮想面Ｓna，Ｓnbの仮想面垂直抗力成分Ｎ_na，Ｎ_nbをそれぞれ、上記の如く決定した増加量ＩＮ_nだけ、Ｓ０５の処理で決定した値の大きさよりも増加させ、その増加後の値を改めて、対向仮想面Ｓna，Ｓnbのそれぞれの仮想面垂直抗力成分Ｎ_na，Ｎ_nbとして決定する。
【０１６２】
このＳ１３までの処理によって、第１Ａ必要条件、第１Ｂ必要条件及び第２必要条件を満足する仮想面必要並進力が決定されることとなる。
【０１６３】
次いで、外力目標生成部２７は、Ｓ１５の処理を実行する。このＳ１５では、外力目標生成部２７は、Ｓ１３で大きさを増加させた仮想面垂直抗力成分Ｎ_na，Ｎ_nbの大きさのうちの小さい方の大きさ（＝ｍｉｎ（｜Ｎ_na｜，｜Ｎ_nb｜））があらかじめ設定された所定値ＩＦＣ_n以下になるという第３必要条件を満足するか否かを判断する。
【０１６４】
ここで、ｍｉｎ（｜Ｎ_na｜，｜Ｎ_nb｜）は、ロボット１の全体の並進運動に寄与しない内力に相当するものである。このような内力は、その大きさが大きくなると、ロボット１の関節アクチュエータ１１が発生可能な動力（駆動トルク）のうち、該内力を発生させるために必要な負担分が増大し、ロボット１の所望の運動を行なうための利用し得る関節アクチュエータ１１の動力（ロボット１の全体の並進運動を変化させるために利用し得る動力）が不足し易くなる。そこで、本実施形態では、この内力を所定値ＩＦＣ_n以下に制限するために、Ｓ１５の判断処理を実行する。
【０１６５】
なお、この所定値ＩＦＣ_n（以降、内力上限値ＩＦＣ_nという）は、例えば対向仮想面Ｓna，Ｓnbにより発生する内力の向き（対向仮想面Ｓna，Ｓnbの法線方向）に応じて設定される。ただし、内力上限値ＩＦＣ_nを、内力の向きによらずに固定的な値に設定するようにしてもよい。
【０１６６】
このＳ１５の判断結果が肯定的である場合には、外力目標生成部２７は、Ｓ０７の判断結果が肯定的である場合と同様に、各仮想面における仮想面必要並進力（暫定値）を決定する処理を終了し、図８に示すＳ１９以降の処理を実行する。
【０１６７】
この場合、Ｓ０７の判断結果が否定的となった仮想面を含む対向仮想面Ｓna，Ｓnaを除く各仮想面については、Ｓ０５で決定された仮想面垂直抗力成分Ｎ_iと仮想面摩擦力成分Ｆ_iとの組が、そのまま仮想面必要並進力（暫定値）として決定されることとなる。
【０１６８】
そして、上記対向仮想面Ｓna，Ｓnaのそれぞれにおいては、Ｓ１３で増加させた仮想面垂直抗力成分Ｎ_i（Ｎ_na，Ｎ_nb）と、Ｓ０５で決定された仮想面摩擦力成分Ｆ_i（Ｆ_na，Ｆ_nb）との組が、仮想面必要並進力（暫定値）として決定されることとなる。
【０１６９】
また、Ｓ１５の判断結果が否定的となる状況では、内力に関する第３必要条件を満足しつつ、ロボット１の目標運動を実現するために動力学的に必要な外力をロボット１に作用させることができないか、もしくは困難となる。このため、Ｓ１５の判断結果が否定的となる場合には、外力目標生成部２７は、Ｓ０９の判断結果が否定的となる場合と同様に、Ｓ１７において、目標運動が不適切である（目標運動を修正する必要がある）とし、図７〜図９のフローチャートの処理を中止する。
【０１７０】
補足すると、本実施形態では、Ｓ０１で設定される仮想面が互いに平行な対向仮想面Ｓna，Ｓnb（ｎ＝１又は２又は３）を含む場合に、Ｓ０５の処理で決定される対向仮想面Ｓna，Ｓnbの仮想面垂直抗力成分Ｎ_na，Ｎ_nbのうちの一方は“０”であるので、これらのＮ_na，Ｎ_nbの組は常に前記第３必要条件を満足する。従って、Ｓ０７の判断結果が肯定的である場合に、Ｓ１５の判断処理を行う必要は無い。
【０１７１】
以上のＳ０５〜Ｓ１５の処理によって、Ｓ０９又はＳ１５の判断結果が否定的となる場合（目標運動が不適切である場合）を除いて、前記第１Ａ必要条件、第１Ｂ必要条件、第２必要条件及び第３必要条件を満足するように、各仮想面の仮想面必要並進力（暫定値）を構成する仮想面垂直抗力成分Ｎ_iと仮想面摩擦力成分Ｆ_iとの組が決定されることとなる。これにより、第１Ａ必要条件、第１Ｂ必要条件、第２必要条件及び第３必要条件を満足しつつ、ロボット１の目標運動におけるロボット１の全体の並進運動（全体重心点の並進運動）を実現し得る仮想面必要並進力（暫定値）が決定されることとなる。
【０１７２】
従って、本実施形態では、Ｓ１３までの処理によって、第１Ａ必要条件、第１Ｂ必要条件及び第２必要条件を満足する仮想面必要並進力を決定した上で、Ｓ１５の判断処理によって、再度、目標運動が評価される。そして、このＳ１５の判断結果が否定的となる場合に、目標運動が不適切であると評価されることとなる。
【０１７３】
また、Ｓ０７、Ｓ０９、Ｓ１５の判断結果がいずれも肯定的となる場合には、第１Ａ必要条件、第１Ｂ必要条件、第２必要条件及び第３必要条件を満足し得る仮想面必要並進力を決定できることとなるので、基本歩容要素生成部２５で生成された目標運動は、少なくとも該目標運動のうちのロボット１全体の並進運動（ロボット１の全体重心点の並進運動）を支障なく実現し得るように、ロボット１に外力を作用させることができる適切な目標運動であると言えることとなる。
【０１７４】
歩容生成部２３が前記壁登り歩容を生成する場合に、以上説明したＳ０５〜Ｓ１５の処理によって仮想面垂直抗力成分Ｎ_i及び仮想面摩擦力成分Ｆ_iは例えば、次のように決定されることとなる。
【０１７５】
例えば、前記壁登り歩容のうちの図３（ｂ）に示す動作状態の時刻t2において、Ｓ０５の処理によって、前記した図１１（ａ）に示した如く、各仮想面における仮想面垂直抗力成分Ｎ_i及び仮想面摩擦力成分Ｆ_i（ｉ＝3a，2a，2b）が決定された場合を想定する。この場合、仮想面Ｓ3aにおける仮想面摩擦力成分Ｆ_3aと、仮想面Ｓ2aにおける仮想面摩擦力成分Ｆ_2aとが、前記第２必要条件を満たしている場合（Ｓ０７の判断結果が肯定的になる場合）には、Ｓ１５までの処理によって最終的に決定される、各仮想面における仮想面必要並進力(Ｎ_i，Ｆ_i)は、Ｓ０５で決定されたものに一致する。
【０１７６】
一方、例えば、仮想面Ｓ2aにおける仮想面摩擦力成分Ｆ_2aが前記第２必要条件を満たしていない場合には、図１１（ｂ）に示す如く、該仮想面Ｓ2aを含む対向仮想面Ｓ2a，Ｓ2bのそれぞれの仮想面垂直抗力成分Ｎ_2a，Ｎ_2bが、Ｓ０５で決定された値よりも、Ｓ１１で決定される増加量ＩＮ_2だけ増加してなる値に決定される。また、仮想面Ｓ3aの仮想面垂直抗力成分Ｎ_3a及び仮想面摩擦力成分Ｆ_3aと、仮想面Ｓ2a，Ｓ2bのそれぞれの仮想面摩擦力成分Ｆ2a，Ｆ2bの大きさは、Ｓ０５で決定された値と同じ値に決定される。
【０１７７】
補足すると、本実施形態では、Ｓ０１で設定される仮想面が互いに平行な２つの対向仮想面Ｓna，Ｓnb（ｎ＝１又は２又は３）を含む場合に、Ｓ０５の処理によって、一方の対向仮想面Ｓna又はＳnbの仮想面垂直抗力成分及び仮想面摩擦力成分はいずれも常に“０”に決定される。但し、Ｓ０５の処理において、必要総並進外力Ｆallが対向仮想面Ｓna，Ｓnbに垂直な成分を有する場合に、前記第１Ａ必要条件及び第３必要条件を満足する範囲で、両方の対向仮想面Ｓna，Ｓnbの仮想面垂直抗力成分を“０”でない値に決定してもよい。そして、この場合において、必要総並進外力Ｆallが全ての仮想面に平行な成分を有する場合に、前記第１Ｂ必要条件を満足する範囲内で両方の対向仮想面Ｓna，Ｓnbの仮想面摩擦力成分を“０”でない値に設定するようにしてもよい。
【０１７８】
なお、Ｓ０５の処理において、上記の如く、両方の対向仮想面Ｓna，Ｓnbの仮想面摩擦力成分を“０”でない値に設定するようにした場合には、その両方の対向仮想面Ｓna，Ｓnbにおいて、Ｓ０７の判断結果が否定的となる場合もあり得る。このような場合には、対向仮想面Ｓna，Ｓnbの仮想面垂直抗力成分の増加量ＩＮ_nは、例えば次のように決定することができる。すなわち、各対向仮想面Ｓna，Ｓnb毎に、前記したＳ１１の処理によって暫定的に増加量ＩＮ_nを算出し、それらの暫定的な増加量ＩＮ_nのうちの大きい方を、対向仮想面Ｓna，Ｓnbの仮想面垂直抗力成分の増加量ＩＮ_nとして決定する。
【０１７９】
以上説明したＳ１５までの処理において、Ｓ０７又はＳ１５の判断結果が肯定的である場合（各仮想面における適切な仮想面必要並進力（暫定値）が決定された場合）には、外力目標生成部２７は、次に、図８のフローチャートに示すＳ１９の処理を実行する。このＳ１９では、外力目標生成部２７は、Ｓ１５までに決定された仮想面必要並進力（暫定値）を各仮想面における仮想面上暫定外力作用点に作用させた場合（各仮想面における外力作用点を仮想面上暫定外力作用点に一致させた場合）に、該仮想面必要並進力によって前記モーメント基準点周りに発生するモーメントである仮想面必要並進力依存モーメントＭsを算出する。
【０１８０】
ここで、上記仮想面上暫定外力作用点は、前記基本歩容要素生成部２５で生成された今回時刻での各接触対象面上の暫定外力作用点を、あらかじめ定められた所定の規則に従って、該接触対象面に対応する仮想面上に投影してなる該仮想面上の外力作用点である。
【０１８１】
この場合、本実施形態では、上記投影のための規則は次のように設定されている。すなわち、図１２に示す如く、ある接触対象面上の外力作用点を点Ｐr_i、該接触対象面に対応する仮想面上の外力作用点を点Ｐs_iとしたとき、仮想面上の外力作用点Ｐs_iは、例えば、接触対象面上の外力作用点Ｐr_iを通って、仮想面に垂直な直線（外力作用点Ｐr_iから仮想面への垂線）が該仮想面と交わる点に一致するものとされる。
【０１８２】
上記仮想面上暫定外力作用点は、このような規則に従って、今回時刻での各接触対象面上の暫定外力作用点を該接触対象面に対応する仮想面上に投影してなる該仮想面上の外力作用点である。
【０１８３】
Ｓ１９の処理では、外力目標生成部２７は、上記の如く決定される仮想面上暫定外力作用点の前記モーメント基準点に対する位置ベクトルを用いて、次式０３によって、各仮想面の仮想面上暫定外力作用点に仮想面必要並進力（Ｎ_i，Ｆ_i）が作用した場合に、前記モーメント基準点の周りに発生する仮想面必要並進力依存モーメントＭsを算出する。
【０１８４】
Ｍs＝Σ(Irp_i＊Ｎ_i)＋Σ((Irp_i＋Poff_i)＊Ｆ_i)    ……式０３
この式０３におけるIrp_iは、各仮想面（今回時刻のＳ０１で設定された各仮想面）の仮想面上暫定外力作用点の前記モーメント基準点に対する位置ベクトル、Poff_iは仮想面上暫定外力作用点に対する接触対象面上の暫定外力作用点の位置ベクトル（又は該位置ベクトルのうちの仮想面に垂直な方向の成分ベクトル）である。
【０１８５】
さらに、(Irp_i＊Ｎ_i)は、各仮想面における仮想面上暫定外力作用点の位置ベクトルＩrp_iと仮想面垂直抗力成分Ｎ_iとのベクトル積、すなわち、Ｎ_iが仮想面暫定外力作用点に作用した場合にモーメント基準点周りに発生するモーメントである。
【０１８６】
そして、Σ(Irp_i＊Ｎ_i)は、各仮想面毎のモーメント(Irp_i＊Ｎ_i)の、全ての仮想面（今回時刻のＳ０１で設定される全ての仮想面）についての総和、すなわち、各仮想面における仮想面垂直抗力成分Ｎ_iに起因してモーメント基準点周りに発生するトータルのモーメントを意味する。
【０１８７】
また、((Irp_i＋Poff_i)＊Ｆ_i)は、各仮想面における仮想面上暫定外力作用点の位置ベクトルＩrp_iと仮想面摩擦力成分Ｆ_iとのベクトル積（Ｉrp_i＊Ｆ_i）、すなわち、Ｆ_iが仮想面暫定外力作用点に作用した場合にモーメント基準点周りに発生するモーメントと、仮想面上暫定外力作用点に対する接触対象面上の暫定外力作用点の位置ベクトルPoff_iとＦ_iとのベクトル積（Poff_i＊Ｆ_i）、すなわち、Ｆ_iが接触対象面上の暫定外力作用点の周りに発生するモーメントとの総和のモーメントである。
【０１８８】
そして、Σ((Irp_i＋Poff_i)＊Ｆ_i)は、各仮想面毎のモーメント((Irp_i＋Poff_i)＊Ｆ_i)の、全ての仮想面（今回時刻のＳ０１で設定される全ての仮想面）についての総和、すなわち、各仮想面における仮想面摩擦力成分Ｆ_iに起因してモーメント基準点周りに発生するトータルのモーメントを意味する。
【０１８９】
ここで、上記モーメント（Poff_i＊Ｆ_i）に関して補足すると、接触対象面とこれに対応する仮想面とは、一般には同一面とはならないので、多くの場合、図１２に示したように、接触対象面上の外力作用点Ｐr_iとこれに対応する仮想面上の外力作用点Ｐs_iとの位置ずれが生じる。そして、このような状況で、各仮想面における仮想面必要並進力が仮想面上暫定外力作用点に作用した場合にモーメント基準点周りに発生するモーメントと、該仮想面必要並進力と同じ並進力が該仮想面に対応する接触対象面上の暫定外力作用点に作用した場合にモーメント基準点周りに発生するモーメントとを比較すると、それらのモーメントには、上記位置ずれに起因する差異が生じる。この場合、接触対象面とこれに対応する仮想面とは、それらの法線方向が概ね同方向となるので、各仮想面毎の上記差異は、主に、仮想面摩擦力成分Ｆ_iに依存するものとなり、上記モーメント（Poff_i＊Ｆ_i）にほぼ一致する。
【０１９０】
そこで、本実施形態では、上記位置ずれの影響を補償して、Ｍsの信頼性を高めるために、上記モーメント（Poff_i＊Ｆ_i）を付加した式０３によって、仮想面必要並進力依存モーメントＭsを算出するようにしている。
【０１９１】
なお、接触対象面上の暫定外力作用点と、これに対応する仮想面上暫定外力作用点との位置ずれが十分に微小なものとなる場合には、式０３から、上記モーメント（Poff_i＊Ｆ_i）の項を省略した式によって、仮想面必要並進力依存モーメントＭsを算出するようにしてもよい。
【０１９２】
以上のＳ１９の処理を、歩容生成部２３が前記壁登り歩容を生成する場合に関して例示的に説明すると、例えば図１１（ｂ）に示した如く、仮想面必要並進力が決定された状況においては、図中に示す仮想面垂直抗力成分Ｎ_2a，Ｎ_2b，Ｎ_3aと仮想面摩擦力成分Ｆ_2a，Ｆ_3aとによって、モーメント基準点（例えば仮想面Ｓ2aとＳ3aとの交線上の点）の周りに発生するモーメントＭsが上記式０３によって算出されることとなる。この場合、図１１（ｂ）に示す例では、仮想面Ｓ2a，Ｓ2b，Ｓ3aは、それぞれ接触対象面ＷＬ１，ＷＬ２，ＦＬに一致（又はほぼ一致）するので、式０３における各仮想面Ｓ2a，Ｓ2b，Ｓ3a毎のPoff_i（Poff_2a，Poff_2b，Poff_3a）はいずれも“０”でよい。
【０１９３】
次いで、外力目標生成部２７は、モーメント補償量を決定するための処理であるＳ２１〜Ｓ３７の処理を実行する。ここで、この処理の概要を説明しておく。
【０１９４】
上記の如くＳ１９で算出された仮想面必要並進力依存モーメントＭsが、仮に、Ｓ０３で算出した必要総モーメント外力Ｍallに一致もしくはほぼ一致するような場合には、Ｓ１５までの処理で決定された仮想面必要並進力（暫定値）と、基本歩容要素生成部２５で生成された暫定外力作用点に対応する仮想面上暫定外力作用点とは、ロボット１の目標運動のうちの並進運動（全体重心点の並進運動）を適切に実現できるだけでなく、回転運動（モーメント基準点周りの角運動量を変化させる運動）をも適切に実現し得る外力として機能し得るものとなる。
【０１９５】
しかるに、Ｓ１５までの処理では、ロボット１の目標運動のうちの回転運動に関する動力学については考慮されていないので、一般には、必要総モーメント外力Ｍallと仮想面必要並進力依存モーメントＭsとの偏差（以下、モーメント偏差errＭという）は“０”もしくはそれに近い値とはならない。
【０１９６】
Ｓ２１〜Ｓ３７の処理によって決定するモーメント補償量は、このモーメント偏差errＭを解消する（“０”に近づける）ための操作量（外力に関する目標の操作量）である。
【０１９７】
本実施形態では、Ｓ２１〜Ｓ３７の処理によって決定するモーメント補償量には、３種類の補償量（第１〜第３補償量）があり、その第１補償量は、１つ以上の仮想面における仮想面上外力作用点の位置の修正量（仮想面上暫定外力作用点からの修正量。以降、仮想面上外力作用点修正量ということがある）により構成されるモーメント補償量である。この場合、第１補償量は、この第１補償量による修正後の仮想面上外力作用点に対応する接触対象面上の外力作用点が、前記存在許容領域内に存在するように決定される補償量である。
【０１９８】
また、第２補償量は、２つ以上の仮想面における仮想面必要並進力（暫定値）の仮想面摩擦力成分の修正量（以降、仮想面摩擦力成分修正量ということがある）から構成されるモーメント補償量である。この場合、第２補償量は、それを構成する仮想面摩擦力成分修正量の総和（合力）が“０”となるように決定される補償量である。
【０１９９】
また、第３補償量は、１つ以上の仮想面に垂直な軸周りのモーメント外力として該仮想面からロボット１に付加的に作用させるねじり力（以降、仮想面ねじり力ということがある）から構成されるモーメント補償量である。
【０２００】
なお、上記第２補償量が、２つ以上の仮想面における仮想面摩擦力成分修正量から構成されるのは、該第２補償量による修正後における仮想面必要並進力の合力が前記第１必要条件を満足する必要があるからである。
【０２０１】
ここで、上記第１〜第３補償量のうち、第１補償量は、Ｓ１５までの処理で決定した仮想面必要並進力（暫定値）の修正を必要とせずに、前記モーメント偏差を解消し、又は低減する機能を有する。従って、第１補償量によって、前記モーメント偏差を解消できるときには、目標運動を実現するための今回時刻での仮想面必要並進力として、Ｓ１５までの処理で決定した仮想面必要並進力（暫定値）をそのまま使用することができる。
【０２０２】
一方、前記第２補償量又は第３補償量は、仮想面からロボット１に作用させる外力に、仮想面摩擦力成分修正量、又は仮想面ねじり力を追加的に付加するものであるから、該仮想面で発生可能な摩擦力の限界の制約を受ける。そして、その制約を満たすために、対向仮想面Ｓna，Ｓnb（ｎ＝１又は２又は３）における仮想面垂直抗力成分Ｎ_na，Ｎ_nbの修正（ひいては、前記内力の修正）が必要となる場合もある。さらに、これらの仮想面垂直抗力成分Ｎ_na，Ｎ_nbの修正に起因して、一般には、前記モーメント基準点周りに発生するモーメントＭsも変化する。
【０２０３】
そこで、本実施形態では、外力目標生成部２７は、前記モーメント偏差errＭを解消するためのモーメント補償量として、第１〜第３補償量のうちの第１補償量を優先的に決定する。そして、外力目標生成部２７は、この第１補償量によってモーメント偏差を解消できない場合（より詳しくは、モーメント偏差errＭの全体を解消し得るように第１補償量を決定した場合に、その第１補償量による修正後の仮想面上外力作用点に対応する接触対象面上の外力作用点が前記存在許容領域を逸脱する場合）に、第１補償量を制限する。さらに、モーメント偏差errＭのうち、制限した第１補償量により解消できない部分を第２補償量及び第３補償量によって解消するように、第２補償量及び第３補償量の組を決定する。
【０２０４】
以上が、Ｓ２１〜Ｓ３７の処理（モーメント補償量の決定処理）の概要である。
【０２０５】
以下、このモーメント補償量の決定処理を具体的に説明すると、外力目標生成部２７は、まず、Ｓ２１の処理を実行する。このＳ２１では、外力目標生成部２７は、Ｓ０３で算出した必要総モーメント外力Ｍallと、Ｓ１９で算出した仮想面必要並進力依存モーメントＭsとの偏差であるモーメント偏差errM（＝Ｍall−Ｍs）を算出する。
【０２０６】
次いで、外力目標生成部２７は、Ｓ２３の処理を実行する。このＳ２３では、外力目標生成部２７は、仮想面上外力作用点の位置の変化（仮想面上暫定外力作用点からの変化）に対する仮想面必要並進力依存モーメントＭsの変化の感度を表現するヤコビアンＪを算出する。
【０２０７】
ここで、各仮想面上の外力作用点の位置の変化量（ベクトル）をΔrp_i、各仮想面上の外力作用点を仮想面上暫定外力作用点からΔrp_iだけ変化させたときの、接触対象面上の外力作用点（仮想面上の外力作用点を通って該仮想面に垂直な直線が該接触対象面と交わる点）の位置の変化量（ベクトル）をΔPoff_i、各仮想面上の外力作用点を仮想面上暫定外力作用点からΔrp_iだけ変化させたときの仮想面必要並進力依存モーメントＭsの変化量（ベクトル）をΔＭsとおく。このとき、前記式０３に基づいて、次式０５の関係式が得られる。
【０２０８】
ΔＭs＝Σ(Δrp_i＊(Ｎ_i＋Ｆi_)＋ΔPoff_i＊Ｆ_i)      ……式０５
この場合、ΔPoff_iは、Δrp_iの関数値（詳しくは、仮想面とこれに対応する接触対象面との間の姿勢差（空間的な角度差）と、Δrp_iとから一義的に規定される値）となるので、式０５は、次式０７に書き換えることができる。
【０２０９】
ΔＭs＝Ｊ＊（Δrp_i）    ……式０７
この式０７における（Δrp_i）は、全ての仮想面（今回時刻のＳ０１で設定した全ての仮想面）に係わるΔrp_iを成分とする縦ベクトルである。そして、式０７におけるＪが、仮想面上外力作用点の位置の変化（仮想面上暫定外力作用点の位置からの変化）に対する仮想面必要並進力依存モーメントＭsの変化の感度を表現するヤコビアン（行列）である。
【０２１０】
そこで、Ｓ２３の処理では、外力目標生成部２７は、各仮想面の仮想面必要並進力Ｎ_i，Ｆ_iと、式０５とに基づいてヤコビアンＪを算出する。なお、この場合、ΔPoff_iと、Δrp_iとの間の関係は、各仮想面とこれに対応する接触対象面との姿勢差に基づいて決定される。
【０２１１】
次いで、外力目標生成部２７は、Ｓ２５の処理を実行する。このＳ２５処理は、式０７のΔＭsをＳ２１で算出したモーメント偏差errＭに一致させた場合に、式０７の関係を満たす（Δrp_i）を、errＭを解消するための各仮想面における仮想面上外力作用点修正量Δrpc_iの組として算出する処理である。
【０２１２】
ここで、式０７におけるヤコビアンＪは、一般には正則行列ではない。そこで、外力目標生成部２７は、Ｓ２３で求めたヤコビアンＪの擬似逆行列Ｊinvを算出し、この擬似逆行列Ｊinvを、モーメント偏差errＭに乗じることによって、各仮想面の仮想面上外力作用点修正量Δrpc_iを算出する。この場合、擬似逆行列Ｊinvは、例えば、各仮想面に対応するΔrpc_iの二乗値又は絶対値の平均値が最小になるように決定される。
【０２１３】
なお、例えば、各仮想面に対応する接触対象面における外力作用点の存在許容領域の面積等に応じて、各仮想面に対応するΔrpc_iの重み付けをしておき、各仮想面に対応するΔrpc_iの二乗値又は絶対値の重み付き平均値が最小になるように擬似逆行列Ｊinvを決定するようにしてもよい。
【０２１４】
次いで、外力目標生成部２７は、Ｓ２７の処理を実行する。このＳ２７では、外力目標生成部２７は、各仮想面上の外力作用点の位置を、仮想面上暫定外力作用点の位置Irp_iからＳ２５で求めたΔrpc_iによって修正した場合に、全ての仮想面において、その修正後の仮想面上外力作用点の位置（Irp_i＋Δrpc_i）が、外力作用点存在領域条件を満足するか否かを判断する。
【０２１５】
ここで、上記外力作用点存在領域条件は、Δrpc_iによる修正後の各仮想面の仮想面上外力作用点の位置が、基本歩容要素生成部２５で生成された今回時刻での各接触対象面の外力作用点の存在許容領域に対応する仮想面上の存在許容領域（該接触対象面上の外力作用点の存在許容領域を仮想面上に投影してなる領域）内に存在するという条件である。この場合、接触対象面上の外力作用点の存在許容領域の、仮想面上への投影は、図１２に示す如く、接触対象面上の外力作用点の仮想面上への投影の場合と同様に行なわれる。
【０２１６】
なお、外力作用点存在領域条件は、Δrpc_iによる修正後の各仮想面の仮想面上外力作用点を、該仮想面に対応する接触対象面に逆投影してなる点が、該接触対象面上の外力作用点の存在許容領域内に存在するという条件と等価である。
【０２１７】
Ｓ２７の判断結果が肯定的である場合には、Ｓ１５までの処理で決定された各仮想面の仮想面必要並進力を修正せずとも、各仮想面の外力作用点の位置を仮想面上暫定外力作用点から修正する（ひいては各接触対象面の外力作用点の位置を暫定外力作用点から修正する）だけで、前記モーメント偏差errＭを解消できることとなる。
【０２１８】
そこで、この場合には、外力目標生成部２７は、Ｓ２９の処理を実行し、今回時刻での図７〜図９のフローチャートの処理を終了する。このＳ２９の処理では、外力目標生成部２７は、今回時刻での各接触対象面からロボット１への目標外力と目標外力作用点とを確定する。
【０２１９】
具体的には、外力目標生成部２７は、Ｓ１５までの処理で決定した各仮想面における仮想面必要並進力（Ｎ_i，Ｆ_i）を、該仮想面とこれに対応する接触対象面との姿勢差に応じて、該接触対象面からロボット１に作用させる並進力に変換し、この並進力を目標外力の構成要素である並進外力の目標値として決定する。
【０２２０】
この場合、各仮想面毎の上記変換は、例えば次のように行なわれる。すなわち、外力目標生成部２７は、各仮想面の姿勢（法線ベクトルの向き）を該仮想面に対応する接触対象面の姿勢（法線ベクトルの向き）に変換する回転変換行列Ｒθを、これらの仮想面と接触対象面との姿勢差に基づき算出する。そして、外力目標生成部２７は、この回転変換行列Ｒθを仮想面必要並進力（ベクトル）に乗じることによって、該仮想面必要並進力を、接触対象面からロボット１への並進外力の目標値に変換する。
【０２２１】
従って、本実施形態では、各接触対象面からロボット１に作用させるべき並進外力の目標値（目標並進力）は、該接触対象面に対応する仮想面における仮想面垂直抗力成分Ｎ_iと仮想面摩擦力成分Ｆ_iとそれぞれ同じ大きさの垂直抗力成分（接触対象面に垂直な成分）と摩擦力成分（接触対象面に平行な成分）とから構成される並進外力として決定される。
【０２２２】
また、外力目標生成部２７は、Ｓ２５で決定したΔrpc_iをモーメント補償量として確定する。そして、外力目標生成部２７は、このΔrpc_iによる修正後の各仮想面の仮想面上外力作用点を、該仮想面に対応する接触対象面上に逆投影してなる点（本実施形態では、修正後の仮想面上外力作用点を通って該仮想面に垂直な直線が、該仮想面に対応する接触対象面と交わる点）を、該接触対象面上の目標外力作用点として決定する。
【０２２３】
なお、Ｓ２９の処理では、目標外力の構成要素のうちの、各接触対象面のねじり力の目標値（目標ねじり力）は、いずれの接触対象面についても“０”とされる。
【０２２４】
一方、前記Ｓ２７の判断結果が否定的である場合には、モーメント偏差errＭを解消するための各仮想面における仮想面上外力作用点修正量Δrpc_iを、前記外力作用点存在領域条件を満足するように制限する必要がある。
【０２２５】
そこで、外力目標生成部２７は、次に、Ｓ３１の処理を実行する。このＳ３１では、外力目標生成部２７は、外力作用点存在領域条件を満足するように、各仮想面における仮想面上外力作用点修正量Δrpc_iを制限してなる仮想面上外力作用点制限修正量Δrpc_lim_iを第１補償量として決定する。
【０２２６】
この場合、外力作用点存在領域条件を満足する仮想面については、Ｓ２５で決定された修正量Δrpc_iがそのまま、仮想面上外力作用点制限修正量Δrpc_lim_iとして決定される。
【０２２７】
一方、外力作用点存在領域条件を満足しない仮想面については、外力目標生成部２７は、次のように仮想面上外力作用点制限修正量Δrpc_lim_iを決定する。
【０２２８】
図１３を参照して、修正前の仮想面上外力作用点（接触対象面上の暫定外力作用点を仮想面上に投影してなる点）をＰs1_i、この修正前の仮想面上外力作用点Ｐs1_iをＳ２５で決定した仮想面上外力作用点修正量Δrpc_iにより修正してなる点をＰs2_iとおく。この場合、外力作用点存在領域条件を満足しない仮想面については、修正後の仮想面上外力作用点Ｐs2_iが、図示の如く、仮想面上の外力作用点許容領域から逸脱することとなる。
【０２２９】
なお、図１３では、図示の便宜上、仮想面上の外力作用許容領域を単純な楕円状の領域として記載しているが、その領域の形状は他の形状であってもよいことはもちろんである。
【０２３０】
このとき、外力目標生成部２７は、上記仮想面上外力作用点制限修正量Δrpc_lim_iにより点Ｐs1_iを修正してなる点が、例えば、修正前の点Ｐs1_iとΔrpc_iによる修正後の点Ｐs2_iとを結ぶ線分上で、仮想面上の外力作用点許容領域の境界に存する点Ｐs_lim_iに一致するように、仮想面上外力作用点制限修正量Δrpc_lim_iを決定する。
【０２３１】
なお、上記のようにΔrpc_lim_iを決定することに代えて、例えば、仮想面上外力作用点制限修正量Δrpc_lim_iにより点Ｐs1_iを修正してなる点が、仮想面上の外力作用点許容領域の境界にする点のうち、Δrpc_iによる修正後の点Ｐs2_iに最も近い点（点Ｐs2_iとの距離が最小となる点）に一致するように、仮想面上外力作用点制限修正量Δrpc_lim_iを決定してもよい。
【０２３２】
以降の説明では、上記の如くＳ３１で決定される仮想面上外力作用点制限修正量Δrpc_lim_iによる修正後の各仮想面上の外力作用点を、仮想面上制限修正後外力作用点という。
【０２３３】
以上の如くＳ３１の処理を実行した後、外力目標生成部２７は、Ｓ３３の処理を実行する。このＳ３３では、外力目標生成部２７は、前記モーメント偏差errＭのうち、Ｓ２９で決定した各仮想面における仮想面上外力作用点制限修正量Δrpc_lim_iによって解消できない偏差成分としての残偏差成分errＭ'を算出する。
【０２３４】
具体的には、外力目標生成部２７は、制限前の仮想面上外力作用点修正量Δrpc_iと仮想面上外力作用点制限修正量Δrpc_lim_iとの差（＝Δrpc_i−Δrpc_lim_i）である仮想面上外力作用点修正誤差Δrpc_err_iを算出する。そして、外力目標生成部２７は、前記式０５におけるΔrp_iを、Δrpc_err_iに置き換えてなる次式０９によって、残偏差成分errＭ’を算出する。
【０２３５】
errＭ'＝Σ(Δrpc_err_i＊(Ｎ_i＋Ｆi_)＋ΔPoff_i＊Ｆ_i)      ……式０９
この場合、式０９におけるΔPoff_iは、Δrpc_err_iに応じて決定される値であり、前記式０５におけるΔPoff_iとΔrp_iとの間の関係に従って、Δrp_i＝Δrpc_err_iとしたときの、ΔPoff_iの値として決定される。
【０２３６】
なお、例えば、前記式０５のΔrp_iを、Δrpc_limt_iに置き換えた式によって算出されるモーメント変化量ΔＭs、すなわち、各仮想面上の外力作用点の位置を仮想面上暫定外力作用点からΔrpc_limt_iだけ修正した場合に生じるモーメント基準点周りのモーメント変化量を算出し、このモーメント変化量をモーメント偏差errＭから差し引くことによって、残偏差成分errＭ'を算出するようにしてもよい。この場合、ΔPoff_iは、前記式０５におけるΔPoff_iとΔrp_iとの間の関係に従って、Δrp_i＝Δrpc_limt_iとしたときの、ΔPoff_iの値として決定すればよい。
【０２３７】
以上の如くerrＭのうちの残偏差成分errＭ'を算出した後、次に、外力目標生成部２７は、図９に示すＳ３５、Ｓ３７の処理を順次実行することによって、第２補償量としての前記仮想面摩擦力成分修正量ｆ_iと第３補償量としての仮想面ねじり力Ｒ_iとを決定する。
【０２３８】
Ｓ３５では、各仮想面（Ｓ０１で設定した各仮想面）に任意の値の前記仮想面摩擦力成分修正量ｆ_iと前記仮想面ねじり力Ｒ_iとを付加した場合（Δrpc_lim_iによる修正後の仮想面上制限修正後外力作用点にｆ_iとＲ_iを追加的に作用させた場合）にそれらのｆ_i，Ｒ_iによって前記モーメント基準点周りに発生するモーメントＭfrと、ｆ_i，Ｒ_iとの間の関係を次式１１により表現するヤコビアン（行列）Ｊfrを算出する。
【０２３９】
Ｍfr＝Ｊfr＊(f_i  R_i)T      ……式１１
この式１１における(f_i  R_i)Tは、ｆ_i及びＲ_iを成分とする縦ベクトルである。ここで、前記仮想面摩擦力成分修正量ｆ_iは、それらの総和（合力）が“０”になるように決定されるべきモーメント補償量である。
【０２４０】
従って、仮想面摩擦力成分修正量ｆ_iのうち、任意の１つの仮想面に対応する仮想面摩擦力成分修正量は、他の残りの仮想面摩擦力成分修正量の総和の符号を反転させてなる並進力として一義的に定まる。このため、式１１における縦ベクトル(f_i  R_i)Tの成分としてのｆ_iは、任意の１つの仮想面に対応するｆ_i（以降、これをｆ_i0とおく）を除いたものである。そして、ヤコビアンＪfrは、ｆ_i0が他のｆ_iの総和の符号を反転させてなる並進力であるとして、この並進力によるモーメント基準点周りのモーメント成分が式１１の右辺の演算により算出されるＭfrに含まれるように決定される。
【０２４１】
次いで、Ｓ３７では、外力目標生成部２７は、式１１のＭfrを残偏差成分errＭ'に一致させた場合に、式１１の関係を満たすｆ_i及びＲ_iの組(f_i  R_i)Tを算出する。
【０２４２】
ここで、式１１におけるヤコビアンＪfrは、一般には正則行列ではないので、外力目標生成部２７は、Ｓ３７で求めたヤコビアンＪfrの擬似逆行列Ｊfr_invを算出し、この擬似逆行列Ｊfr_invを、残偏差成分errＭ'に乗じることによって、ｆ_i及びＲ_iの組を算出する。この場合、擬似逆行列Ｊfr_invは、例えば、式１１の縦ベクトル(f_i  R_i)Tを組成するｆ_i及びＲ_iのそれぞれの２乗値又は絶対値の平均値が最小になるように決定される。なお、上記ｆ_i0は、上記の如く算出したｆ_iの総和の符号を反転させてなる値として決定される。
【０２４３】
補足すると、上記擬似逆行列Ｊfr_invは、例えば、式１１の縦ベクトル(f_i  R_i)Tを組成するｆ_i及びＲ_iのそれぞれの２乗値又は絶対値の重み付き平均値が最小になるように決定してもよい。例えば、前記摩擦力上限値が大きい仮想面ほど、その仮想面におけるｆ_iの大きさが相対的に大きくなるように、各ｆ_iに対応する重みを設定し、その重みを用いた上記重み付き平均値が最小になるように、Ｊfr_invを決定するようにしてもよい。
【０２４４】
また、例えば、Ｓ０１で設定された仮想面が対向仮想面Ｓna，Ｓnbを含む場合において、仮想面垂直抗力成分Ｎ_iの大きさが小さい方の対抗仮想面Ｓna又はＳnbにおける仮想面摩擦力成分修正量ｆ_na又はｆnbを“０”に設定するようにしてもよい。
【０２４５】
歩容生成部２３が、前記壁登り歩容を生成する場合においては、上記Ｓ３５、Ｓ３７の処理は、例えば次にように行なわれる。
【０２４６】
例えば、図１１（ｂ）に示した動作状態において、モーメント偏差errＭのうちの残偏差成分errＭ'が存在する場合を想定する。そして、床面ＦＬ及び壁面ＷＬ１，ＷＬ２にそれぞれ対応する各仮想面Ｓ3a，Ｓ2a，Ｓ2bにおける仮想面上制限修正後外力作用点の位置ベクトル（モーメント基準点に対する位置ベクトル）をそれぞれrp_3a，rp_2a，rp_2bとおく。このとき、各仮想面Ｓ3a，Ｓ2a，Ｓ2bにおける仮想面上摩擦力成分修正量ｆ_3a，ｆ_2a，ｆ_2b及び仮想面ねじり力Ｒ_3a，Ｒ_2a，Ｒ_2bと、これらのｆ_3a，ｆ_2a，ｆ_2b，Ｒ_3a，Ｒ_2a，Ｒ_2bによってモーメント基準点周りに発生するモーメントＭfrとの間の関係は、次式１１ａにより表される。
【０２４７】
Ｍfr＝rp_3a＊ｆ_3a＋rp_2a＊ｆ_2a＋rp_2b＊ｆ_2b＋Ｒ_3a＋Ｒ_2a＋Ｒ_2b
……式１１ａ
なお、式１１ａにおける（rp_3a＊ｆ_3a），（rp_2a＊ｆ_2a），（rp_2b＊ｆ_2b）はそれぞれベクトル積である。
【０２４８】
この場合、仮想面摩擦力成分修正量に関しては、ｆ_3a＋ｆ_2a＋ｆ_2b＝０であるから、ｆ_2b＝−(ｆ_3a＋ｆ_2a)となる。従って、式１１ａは、例えばｆ_2bを含まない次式１１ｂに書き換えられる。
【０２４９】
Ｍfr＝（rp_3a−rp_2b）＊ｆ_3a＋（rp_2a−rp_2b）＊ｆ_2a＋Ｒ_3a＋Ｒ_2a＋Ｒ_2b
……式１１ｂ
従って、Ｓ３５では、この式１１ｂの右辺を、座標成分で表して整理することで、前記式１１におけるヤコビアンＪfrが求められることとなる。
【０２５０】
そして、Ｓ３７では、このヤコビアンＪfrの擬似逆行列Ｊfr_invが前記した如く算出され、このＪfr_invを、残偏差成分errＭ’に乗じることによって、ｆ_3a，ｆ_2a，Ｒ_3a，Ｒ_2a，Ｒ_2bが算出される。さらに、ｆ_3a，ｆ_2aから、ｆ_2b＝−(ｆ_3a＋ｆ_2a)という関係に従って、ｆ_3bが算出される。
【０２５１】
補足すると、例えば、前記壁登り歩容における図３（ｃ）の動作状態以降の時刻、すなわち、仮想面が対向仮想面Ｓ2a，Ｓ2bの２つだけになる状況では、式１１ａの右辺から（rp_3a＊ｆ_3a）と、Ｒ_3aとを除去してなる式と、ｆ_2a＋ｆ_2b＝０という関係とに基づいて、上記と同様に、ヤコビアンＪfrを決定することができる。
【０２５２】
以上のＳ３７までの処理によって、前記Ｓ２７の判断結果が否定的となる場合には、前記第１Ａ必要条件及び第１Ｂ必要条件を満足し、且つ、ロボット１の目標運動のうちのロボット１全体の回転運動（モーメント基準点周りの角運動量を変化させる回転運動）を実現し得る仮想面必要並進力（ｆ_iによる修正後の仮想面必要並進力）と、仮想面上外力作用点（Δrpc_lim_iによる修正後の仮想面上外力作用点）と、仮想面上ねじり力Ｒ_iとの組が実質的に決定されることとなる。ただし、この場合、ｆ_iによる仮想面必要並進力の修正が行なわれるので、その修正後の仮想面必要並進力の仮想面摩擦力成分は、前記第２必要条件を満足するとは限らない。また、仮想面上ねじり力Ｒ_iは、それを付加する仮想面とロボット１との間の摩擦力、ひいては、該仮想面に対応する接触対象面とロボット１との間の摩擦力を必要とする。
【０２５３】
そこで、以上の如く仮想面摩擦力成分修正量ｆ_iと仮想面ねじり力Ｒ_iとを決定した後、次に、外力目標生成部２７は、Ｓ３９の判断処理を実行する。このＳ３９では、外力目標生成部２７は、各仮想面において、ｆ_iによる修正後の仮想面摩擦力成分Ｆ_i（Ｓ１５までの処理で決定されたＦ_iとｆ_iとの総和の摩擦力成分）が、前記第２必要条件を満足するか否かを判断すると共に、Ｒ_iの大きさが、仮想面垂直抗力成分Ｎ_iの大きさに応じて設定される所定の上限値以下になるという第４必要条件を満足するか否かを判断する。
【０２５４】
ここで、上記第４必要条件における所定の上限値は、Ｒ_iを付加する仮想面の摩擦力によって発生可能なねじり力の大きさの上限値として、各仮想面毎に設定される値である。この上限値（以降、ねじり力上限値という）は、本実施形態では、各仮想面に対応する接触対象面の性状に関する環境情報に基づいて各仮想面毎に設定した係数μr_i（以降、ねじり力係数という）を、仮想面垂直抗力成分Ｎ_iの大きさ｜Ｎ_i｜に乗じてなる値（＝μr_i＊｜Ｎ_i｜）に設定される。
【０２５５】
なお、本実施形態では、外力目標生成部２７の処理を開始する前に、各接触対象面に対応付ける仮想面のねじり力係数が前記環境情報に基づいて事前に決定されると共に記憶保持される。そして、Ｓ３９では、その記憶保持したねじり力係数から、Ｒ_iを付加する仮想面におけるねじり力係数が選定される。
【０２５６】
補足すると、各仮想面におけるねじり力係数μr_iは、該仮想面に対応する接触対象面の性状に関する環境情報だけでなく、該仮想面における仮想面摩擦力成分のＦ_i大きさや、ロボット１と接触対象面との接触面の大きさ等を考慮して、目標歩容の各時刻で決定するように設定してもよい。
【０２５７】
Ｓ３９の判断結果が肯定的である場合には、外力目標生成部２７は、Ｓ４１の処理を実行し、今回時刻での図７〜図９のフローチャートの処理を終了する。このＳ４１の処理では、外力目標生成部２７は、今回時刻での各接触対象面からロボット１の目標外力と目標外力作用点とを確定する。
【０２５８】
具体的には、外力目標生成部２７は、Ｓ１５までの処理で決定した各仮想面における仮想面必要並進力（Ｎ_i，Ｆ_i）と、Ｓ３７の処理で決定した仮想面摩擦力成分修正量ｆ_iとから、今回時刻での各仮想面における仮想面必要並進力を確定する。この場合、Ｓ１５までの処理で決定した仮想面垂直抗力成分Ｎ_iがそのまま該仮想面における仮想面垂直抗力成分として確定されると共に、Ｓ１５までの処理で決定した仮想面摩擦力成分Ｆ_iに仮想面摩擦力成分修正量ｆ_iを加え合わせてなる摩擦力成分が、該仮想面における仮想面摩擦力成分として確定される。
【０２５９】
なお、ｆ_i＝０となる仮想面については、結果的には、Ｓ１５までの処理で決定した仮想面必要並進力（Ｎ_i，Ｆ_i）がそのまま該仮想面における仮想面必要並進力として確定されることとなる。
【０２６０】
また、外力目標生成部２７は、Ｓ３７の処理で決定した仮想面ねじり力Ｒ_iを、このＲ_iに対応する仮想面におけるねじり力として確定する。
【０２６１】
そして、外力目標生成部２７は、以上の如く確定した各仮想面における仮想面必要並進力を、該仮想面とこれに対応する接触対象面との姿勢差に応じて、該接触対象面からロボット１に作用させる並進力に変換し、この並進力を目標外力の構成要素である並進外力の目標値（目標並進力）として決定する。同様に、外力目標生成部２７は、各仮想面における仮想面ねじり力を、該仮想面に対応する接触対象面からロボット１に作用させるねじり力に変換し、この変換したねじり力を、目標外力の構成要素であるねじり力の目標値（目標ねじり力）として決定する。
【０２６２】
なお、上記変換は、図８のＳ２９の処理に関して説明した変換と同じであり、上記姿勢差に応じて決定される前記回転変換行列Ｒθを用いて行なわれる。
【０２６３】
また、外力目標生成部２７は、Ｓ２９の処理の場合と同様に、Ｓ３１で決定した仮想面上外力作用点制限修正量Δrpc_lim_iによる修正後の各仮想面上の外力作用点を該仮想面に対応する接触対象面上に逆投影してなる点を、該接触対象面上の目標外力作用点として決定する。
【０２６４】
一方、Ｓ３９の判断結果が否定的である場合、すなわち、第２必要条件又は第４必要条件を満足しない仮想面が存在する場合には、ロボット１の目標運動のうちの回転運動を実現する上で、その仮想面における摩擦力が不足する。この場合には、外力目標生成部２７は、次にＳ４３の処理を実行する。このＳ４３では、外力目標生成部２７は、Ｓ３９の判断処理で、第２必要条件又は第４必要条件を満たさない仮想面が、対向仮想面Ｓna又はＳnb（ｎ＝１又は２又は３）であるか否かを判断する。
【０２６５】
このＳ４３の判断結果が否定的となる状況では、第２必要条件又は第４必要条件を満足しない仮想面における仮想面垂直抗力成分の大きさを、前記第１Ａ必要条件を満たしつつ増加させることができず、ひいては該仮想面における仮想面摩擦力成分の大きさを、前記摩擦力上限値以下で増加させることができない。そこで、この場合には、外力目標生成部２７は、Ｓ４７において、目標運動が不適切である（目標運動を修正する必要がある）とし、図７〜図９のフローチャートの処理を中止する。なお、この場合、外力目標生成部２７は、基本歩容要素生成部２５にエラー情報を出力する。そして、基本歩容要素生成部２５は、そのエラー情報に応じて、目標運動を作成し直す。
【０２６６】
従って、本実施形態では、Ｓ３７までの処理によって、前記Ｓ２７の判断結果が否定的となる場合には、前記第１Ａ必要条件及び第１Ｂ必要条件を満足し、且つ、ロボット１の目標運動のうちのロボット１全体の回転運動を実現し得る仮想面必要並進力（ｆ_iによる修正後の仮想面必要並進力）と、仮想面上外力作用点（Δrpc_lim_iによる修正後の仮想面上外力作用点）と、仮想面上ねじり力Ｒ_iとの組を決定した上で、Ｓ３９，Ｓ４３の判断処理によって、目標運動が評価される。そして、このＳ３９及びＳ４３の判断結果がいずれも否定的となる場合に、目標運動が不適切であると評価されることとなる。
【０２６７】
一方、Ｓ４３の判断結果が肯定的となる状況では、第２必要条件又は第４必要条件を満たさない仮想面を含む、互いに平行な対向仮想面Ｓna，Ｓnb（ｎ＝１又は２又は３）の仮想面垂直抗力成分Ｎ_na，Ｎ_nbの大きさを、前記第１Ａ必要条件を満足しつつ（Ｎ_na＋Ｎ_nbを一定に保ちつつ）、増加させることができる。
【０２６８】
そこで、Ｓ４３の判断結果が肯定的となる場合には、外力目標生成部２７は、次に、Ｓ４５の処理を実行する。このＳ４５では、外力目標生成部２７は、対向仮想面Ｓna，Ｓnbの仮想面垂直抗力成分Ｎ_na，Ｎ_nbの大きさの増加量ＩＮ_nを、前記第２必要条件及び第４必要条件を満足させ得るように決定する。
【０２６９】
具体的には、外力目標生成部２７は、第２必要条件を満足しない仮想面を含む対向仮想面Ｓna，Ｓnbのそれぞれにおいて、前記仮想面摩擦力成分修正量ｆ_iによる修正後の仮想面摩擦力成分Ｆ_iの大きさから、Ｓ３９の判断処理で用いた摩擦力上限値（＝μ_i＊｜Ｎ_i｜）を差し引いたものを、摩擦係数μ_iで除算してなる値（＝（｜Ｆ_i｜−μ_i＊｜Ｎ_i｜）／μ_i）を、上記増加量ＩＮ_nの候補値として算出する（以下、このように算出されたＩＮ_nの候補値を摩擦力成分補償用候補値という）。この場合、この摩擦力成分補償用候補値ＩＮ_nは、第２必要条件を満足しない仮想面を含む対向仮想面Ｓna，Ｓnbのそれぞれ毎に算出される。
【０２７０】
例えば、歩容生成部２３が前記壁登り歩容を生成する場合において、壁面ＷＬ１，ＷＬ２にそれぞれ対応する対向仮想面Ｓ2a，Ｓ2bのうちの一方又は両方がＳ３９の判断処理で第２必要条件を満足しないものとなった場合には、これらの対向仮想面Ｓ2a，Ｓ2bのぞれぞれにおいて、ＩＮ_2の摩擦力成分補償用候補値（（｜Ｆ_2a｜−μ_2a＊｜Ｎ_2a｜）／μ_2a、（｜Ｆ_2b｜−μ_2b＊｜Ｎ_2b｜）／μ_2b）が算出される。
【０２７１】
また、外力目標生成部２７は、第４必要条件を満足しない仮想面を含む対向仮想面Ｓna，Ｓnbのそれぞれにおいて、前記仮想面ねじり力Ｒ_iの大きさから、Ｓ３９の判断処理で用いたねじり力上限値（＝μr_i＊｜Ｎ_i｜）を差し引いたものを、ねじり力係数μr_iで除算してなる値（＝（｜Ｒ_i｜−μr_i＊｜Ｎ_i｜）／μr_i）を、上記増加量ＩＮ_nの候補値として算出する（以降、このように算出されたＩＮ_nの候補値をねじり力補償用候補値という）。この場合、摩擦力成分補償用候補値と同様に、ねじり力補償用候補値ＩＮ_nは、第４必要条件を満足しない仮想面を含む対向仮想面Ｓna，Ｓnbのそれぞれ毎に算出される。
【０２７２】
そして、外力目標生成部２７は、摩擦力成分補償用候補値及びねじり力補償用候補値のうちの摩擦力成分補償用候補値だけを算出した対向仮想面Ｓna,Ｓnbについては、各対向仮想面Ｓna，Ｓnbのそれぞれの摩擦力成分補償用候補値のうちのいずれか大きい方を、該対向仮想面Ｓna，Ｓnbにおける仮想面垂直抗力成分Ｎ_na，Ｎ_nbの大きさの増加量ＩＮ_nとして決定する。
【０２７３】
また、外力目標生成部２７は、摩擦力成分補償用候補値及びねじり力補償用候補値のうちのねじり力補償用候補値だけを算出した対向仮想面Ｓna,Ｓnbについては、各対向仮想面Ｓna，Ｓnbのそれぞれのねじり力補償用候補値のうちのいずれか大きい方を、該対向仮想面Ｓna，Ｓnbにおける仮想面垂直抗力成分Ｎ_na，Ｎ_nbの大きさの増加量ＩＮ_nとして決定する。
【０２７４】
また、外力目標生成部２７は、摩擦力成分補償用候補値及びねじり力補償用候補値の両方を算出した対向仮想面Ｓna,Ｓnbについては、各対向仮想面Ｓna，Ｓnbのそれぞれの摩擦力成分補償用候補値及びねじり力補償用候補値のうちの最も大きい候補値を、該対向仮想面Ｓna，Ｓnbにおける仮想面垂直抗力成分の増加量ＩＮ_nとして決定する。
【０２７５】
ここで、Ｓ４５で上記の如く決定した増加量ＩＮ_nだけ対向仮想面Ｓna,Ｓnbにおける仮想面垂直抗力成分Ｎ_na，Ｎ_nbを増加させた場合、対向仮想面Ｓna,Ｓnbに直交する方向の内力が増加することとなる。また、Ｎ_na，Ｎ_nbの増加に伴い、モーメント基準点周りに発生するモーメントが一般には変化してしまう。そこで、本実施形態では、外力目標生成部２７は、Ｓ４５の処理を実行した後、図７のＳ１３からの処理を改めて実行する。
【０２７６】
以上が、本実施形態における外力目標生成部２７の処理の詳細である。
【０２７７】
以上説明した外力目標生成部２７の処理によって、まず、Ｓ０５〜Ｓ１５の処理によって、ロボット１の目標運動のうちの、ロボット１全体の並進運動を実現するために必要な仮想面必要並進力（Ｎ_i，Ｆ_i）が暫定的に決定される。この場合、前記モーメント基準点周りに発生するモーメントを考慮することなく、第１必要条件（第１Ａ必要条件、第１Ｂ必要条件）、第２必要条件、及び第３必要条件を満足することを指針として、仮想面必要並進力（Ｎ_i，Ｆ_i）が暫定的に決定される。この場合、各仮想面は、その相互の姿勢関係があらかじめ定まっているので、ロボット１全体の並進運動を実現し得る仮想面必要並進力（Ｎ_i，Ｆ_i）の暫定値を簡素なアルゴリズムによって効率よく決定することができる。
【０２７８】
また、Ｓ０７、Ｓ０９の判断結果がいずれも否定的となる場合、あるいは、Ｓ０７、Ｓ０９、Ｓ１５の判断結果がそれぞれ、否定的、肯定的、否定的となる場合に、基本歩容要素生成部２５で生成された目標運動が不適切であると評価され、外力目標生成部２７の処理が中止される。このため、目標運動のうちのロボット１全体の並進運動を実現するために、接触対象面とロボット１との間の摩擦力が過大になりやすい目標運動、あるいは、ロボット１の内力が過大になりやすい目標運動を、簡素なアルゴリズムで効率よく不適切であると評価することができる。ひいては、目標歩容を生成するために、無駄な演算処理を実行することとなるのを抑制することができる。
【０２７９】
そして、上記のようにロボット１全体の並進運動を実現し得る仮想面必要並進力（Ｎ_i，Ｆ_i）の暫定値を決定した上で、Ｓ１９〜Ｓ３７の処理（Ｓ２９の処理を除く）によって、ロボット１全体の回転運動（モーメント基準点周りの角運動量の変化を生じる回転運動）を実現するための付加的な操作量（モーメント補償量）として、前記仮想面上外力作用点修正量Δｒpc_iが決定され、あるいは、前記仮想面上外力作用点制限修正量Δｒpc_lim_iと仮想面摩擦力成分修正量Δｆ_iと仮想面ねじり力Ｒ_iとの組が決定される。これらの、モーメント補償量は、それによる修正対象の修正の前後で、仮想面上必要並進力の合力を変化させることのない操作量である。
【０２８０】
このため、Ｓ０５〜Ｓ１５の処理によって決定した仮想面必要並進力（Ｎ_i，Ｆ_i）の暫定値と、Ｓ１９〜Ｓ３７の処理（Ｓ２９の処理を除く）によって決定したモーメント補償量とを単純に組合わせるだけで、ロボット１全体の並進運動と回転運動との両方を適切に実現できる仮想面上必要並進力と仮想面上ねじり力と仮想面上外力作用点との組（仮想面上ねじり力が“０”になる場合を含む）を決定することができることとなる。そして、この仮想面上必要並進力と仮想面上ねじり力と仮想面上外力作用点との組から、各接触対象面からロボット１に作用させるべき目標外力（目標並進力及び目標ねじり力）と目標外力作用点とを効率よく適切に決定できることとなる。
【０２８１】
なお、この場合、Ｓ３９、Ｓ４３の判断結果がいずれも否定的となる場合に、基本歩容要素生成部２５で生成された目標運動が不適切であると評価され、外力目標生成部２７の処理が中止される。このため、目標運動のうちのロボット１全体の並進運動と回転運動とを実現するために、接触対象面とロボット１との間の摩擦力が過大になりやすい目標運動を、効率よく不適切であると評価することができる。ひいては、目標歩容を生成するために、無駄な演算処理を実行することとなるのを抑制することができる。
【０２８２】
また、本実施形態では、外力目標生成部２７の処理によって、Ｓ０９、Ｓ１５、Ｓ４３のいずれかの判断結果が否定的となる場合（目標運動が不適切である場合）を除いて、今回時刻での各接触対象面に対応する各仮想面における最終的な仮想面必要並進力（仮想面垂直抗力成分Ｎ_iと仮想面摩擦力成分Ｆ_iとの組）は、結果的に、前記第１Ａ必要条件、第１Ｂ必要条件、第２必要条件及び第３必要条件を満足するように決定される。
【０２８３】
そして、各仮想面に対応する接触対象面における並進外力の目標値（目標並進力）は、その垂直抗力成分（接触対象面に垂直な成分）と摩擦力成分（接触対象面に平行な成分）とが、それぞれ、該仮想面における仮想面垂直抗力成分Ｎ_iと仮想面摩擦力成分Ｆ_iとに一致するように決定される。
【０２８４】
このため、各接触対象面からロボット１への目標並進力は、可能な限り、各接触対象面における目標並進力のうちの垂直抗力成分の合力によって前記必要総並進外力を実現すると共に、該目標並進力のうちの摩擦力成分を、該接触対象面で発生可能な摩擦力の大きさの限界内で可能な限り小さくなるように、各接触対象面からロボット１への目標並進力を決定できる。
【０２８５】
特に、本実施形態では、モーメント補償量として、仮想面上外力作用点修正量Δｒpc_i（第１補償量）が優先的に決定される。すなわち、Ｓ２７の判断結果が肯定的となる場合には、モーメント補償量には、仮想面摩擦力成分修正量ｆ_i及び仮想面ねじり力Ｒ_iのいずれも含まれない。このため、各仮想面における仮想面摩擦力成分Ｆ_iの大きさを、前記第１Ａ必要条件、第１Ｂ必要条件、第２必要条件及び第３必要条件を満足し得る範囲内で、必要最低限の大きさに留めることができる。ひいては、各接触対象面における目標並進力の摩擦力成分の大きさも必要最低限もしくはこれと同程度に留めることができる。
【０２８６】
また、Ｓ０１で設定される仮想面が対向仮想面Ｓna，Ｓnbを含む場合において、Ｓ２７の判断結果が肯定的となる場合はもちろん、Ｓ３９の判断結果が肯定的となる場合においても、これらの対向仮想面Ｓna，Ｓnbの間でロボット１に発生する内力の大きさ（Ｎ_na，Ｎ_nbの大きさのうちの小さい方の大きさ）を、前記第１Ａ必要条件、第１Ｂ必要条件、第２必要条件及び第３必要条件を満足し得る範囲内で、必要最低限に留めることができる。ひいては、これらの対向仮想面Ｓna，Ｓnbに対応する２つの接触対象面（例えば、前記壁登り歩容における壁面ＷＬ１，ＷＬ２）の間でロボット１に発生する内力の大きさを必要最低限もしくはこれと同程度に留めることができる。このため、ロボット１の関節アクチュエータ１１が発生可能な動力（本実施形態では駆動トルク）のうち、該内力を発生するために必要な負担分を軽減することができるように対向仮想面Ｓna，Ｓnbに対応する２つの接触対象面を含む各接触対象面における目標並進力を決定できる。
【０２８７】
ここで、以上説明した本実施形態と本願発明との対応関係を補足しておく。本実施形態ででは、制御ユニット２１の歩容生成部２３が本発明における歩容生成装置として機能する。
【０２８８】
そして、この歩容生成部２３のうちの基本歩容要素生成部２５によって、本発明における目標運動生成手段が実現される。
【０２８９】
また、外力目標生成部２７が実行する処理のうち、Ｓ０１の処理によって、本発明における仮想面群設定手段が実現される。
【０２９０】
また、Ｓ０３の処理によって、本発明における必要総並進外力決定手段が実現される。
【０２９１】
また、Ｓ０５〜Ｓ１５、Ｓ１９〜Ｓ４５の処理によって、本発明における仮想面必要並進力決定手段が実現される。
【０２９２】
また、Ｓ２９及びＳ４１の処理によって、本発明における接触対象面目標並進力決定手段が実現される。
【０２９３】
［第２実施形態］
次に本発明の第２実施形態を図１４及び図１５を参照して説明する。なお、本実施形態は、外力目標生成部２７の処理の一部だけが第１実施形態と相違するものであるので、第１実施形態と同一事項については説明を省略する。
【０２９４】
前記第１実施形態では、前記モーメント偏差errＭを解消するためのモーメント補償量を決定する処理（Ｓ２１〜Ｓ３７の処理）において、第１補償量としての仮想面上外力作用点修正量を優先的に決定するようにした。
【０２９５】
ただし、例えば、第２補償量としての仮想面摩擦力成分修正量ｆ_i又は第３補償量としての仮想面ねじり力Ｒ_iを、仮想面上外力作用点修正量よりも優先的に決定するようにすることも可能である。本実施形態は、このようにモーメント補償量として、第２補償量又は第２補償量を優先的に決定する場合の一例を示す実施形態である。
【０２９６】
本実施形態では、外力目標生成部２７の処理においては、Ｓ０１〜Ｓ２１までの処理は第１実施形態と同じである。そして、本実施形態では、外力目標生成部２７は、Ｓ２１の処理（モーメント偏差errＭを算出する処理）に続いて、図１４及び図１５フローチャートに示す処理を実行する。
【０２９７】
以下説明すると、外力目標生成部２７は、Ｓ２１の処理の次にＳ６１の処理を実行する。このＳ６１では、外力目標生成部２７は、第１実施形態で説明したＳ３５の処理と同様の処理によって、仮想面摩擦力成分修正量ｆ_i（第２補償量）及び仮想面ねじり力Ｒ_i（第３補償量）と、これらのｆ_i，Ｒ_iによってモーメント基準点周りに発生するモーメントＭfrとの関係を前記式１１により表現するヤコビアンＪfrを決定する。ただし、本実施形態では、Ｓ６１において、ｆ_i，Ｒ_iを作用させる各仮想面上の外力作用点としては、仮想面上暫定外力作用点（基本歩容要素生成部２５が決定した接触対象面上の暫定外力作用点を該接触対象面に対応する仮想面に投影してなる点）が使用される。
【０２９８】
次いで、外力目標生成部２７は、Ｓ６３の処理を実行する。このＳ６３では、外力目標生成部２７は、前記式１１のＭfrをＳ２１で求めたモーメント偏差errＭに一致させた場合に、ｆ_i及びＲ_iの組(f_i  R_i)Tを算出する。
【０２９９】
なお、必ずしもｆ_i及びＲ_iの両方を算出する必要はなく、いずれか一方を“０”に設定するようにしてもよい。
【０３００】
この場合、外力目標生成部２７は、Ｓ６１で求めたヤコビアンＪfrの擬似逆行列Ｊfr_invを、第１実施形態におけるＳ３７の処理と同様の処理によって算出し、この擬似逆行列Ｊfr_invを、モーメント偏差errＭに乗じることによって、ｆ_i及びＲ_iの組(f_i  R_i)Tを算出する。これにより、errＭを解消するために必要なｆ_i及びＲ_iの組が算出される。
【０３０１】
以上のＳ６３までの処理によって、前記第１Ａ必要条件及び第１Ｂ必要条件を満足し、且つ、ロボット１の目標運動のうちのロボット１全体の回転運動（モーメント基準点周りの角運動量を変化させる回転運動）を実現し得る仮想面必要並進力（ｆ_iによる修正後の仮想面必要並進力）と、仮想面上外力作用点（＝仮想面上暫定外力作用点）と、仮想面上ねじり力Ｒ_iとの組が暫定的に決定されることとなる。ただし、この場合、ｆ_iによる仮想面必要並進力の修正が行なわれるので、その修正後の仮想面必要並進力の仮想面摩擦力成分は、前記第２必要条件を満足するとは限らない。また、仮想面上ねじり力Ｒ_iも第１実施形態で説明した第４必要条件を満足するとは限らない。
【０３０２】
そこで、外力目標生成部２７は、次に、Ｓ６５の処理を実行する。このＳ６５では、外力目標生成部２７は、第１実施形態におけるＳ３９と同じ判断処理を実行する。すなわち、外力目標生成部２７は、各仮想面において、ｆ_iによる修正後の仮想面摩擦力成分Ｆ_i（Ｓ１５までの処理で決定されたＦ_iとｆ_iとの総和の摩擦力成分）が、前記第２必要条件を満足するか否かを判断すると共に、Ｒ_iの大きさが、前記第４必要条件を満足するか否かを判断する。
【０３０３】
そして、この判断結果が肯定的である場合には、外力目標生成部２７は、Ｓ６７の処理を実行し、今回時刻での処理を終了する。このＳ６７の処理では、外力目標生成部２７は、第１実施形態におけるＳ４１と同じ処理によって、今回時刻での各接触対象面からロボット１に作用させる目標外力を確定する。
【０３０４】
一方、本実施形態におけるＳ６７の処理では、外力目標生成部２７は、各接触対象面の目標外力作用点に関しては、基本歩容要素生成部２５で生成された暫定外力作用点をそのまま目標外力作用点として確定する。
【０３０５】
前記Ｓ６５の判断結果が否定的である場合には、外力目標生成部２７は、次にＳ６９の処理を実行する。このＳ６９では、外力目標生成部２７は、第２必要条件を満足するように、仮想面摩擦力成分修正量ｆ_iを制限してなる仮想面摩擦力成分制限修正量ｆ_lim_iを決定すると共に、第４必要条件を満足するように、仮想面ねじり力Ｒ_iを制限してなる仮想面制限ねじり力Ｒ_lim_iを決定する。
【０３０６】
すなわち、外力目標生成部２７は、ｆ_lim_iによる修正後の仮想面摩擦力成分Ｆ_iが、Ｓ１５までの処理で決定した仮想面垂直抗力成分Ｎiに応じて設定した摩擦力上限値（＝μ_i＊｜Ｎ_i｜）以下になるようにｆ_lim_iを決定すると共に、Ｒ_lim_iがＳ１５までの処理で決定した仮想面垂直抗力成分Ｎiに応じて設定したねじり力上限値（＝μr_i＊｜Ｎ_i｜）以下になるようにＲ_lim_iを決定する。
【０３０７】
この場合、ｆ_lim_iに関しては、第２必要条件を満足することに加えて、それらの総和（合力）が“０”に保たれるようにｆ_lim_iが決定される。
【０３０８】
より具体的には、例えば、Ｓ６３で決定した各仮想面における仮想面摩擦力成分修正量ｆ_iのそれぞれに同じ値の、ある係数ｋを乗じてなる値を仮想面摩擦力成分制限修正量ｆ_lim_iに一致させるように、ｆ_lim_iを決定する。このようにすることでｆ_lim_iの総和（合力）は、ｆ_iの総和（＝０）のｋ倍、すなわち、“０”になる。この場合、係数ｋの値を未知数とし、各仮想面において、Ｓ１５までの処理で決定した修正前の仮想面摩擦力成分Ｆ_iにｋ＊ｆ_iを加え合わせてなる摩擦力の大きさ（＝｜Ｆ_i＋ｋ＊ｆ_i｜）が、第２必要条件を満たすように（｜Ｆ_i＋ｋ＊ｆ_i｜≦μ_i＊｜Ｎ_i｜となるように）、上記係数ｋの値を決定する。そして、この決定した係数ｋを、Ｓ６３で算出した各仮想面におけるｆ_iに乗じることによって、各仮想面におけるｆ_lim_iを決定する。
【０３０９】
なお、Ｓ０１で設定された全ての仮想面において、ｆ_iによる修正後の仮想面摩擦力成分Ｆ_iが前記第２必要条件を満足している場合には、上記係数ｋの値は“１”とされる。従って、この場合には、Ｓ６３で算出した各仮想面におけるｆ_iがそのまま、ｆlim_iとして決定される。
【０３１０】
また、各仮想面における仮想面制限ねじり力Ｒ_lim_iは例えば次のように決定される。すなわち、Ｓ６５で前記第４必要条件を満たさない各仮想面において、仮想面制限ねじり力Ｒ_lim_iは、その大きさがねじり力上限値（＝μr_i＊｜Ｎ_i｜）に一致するように決定される。また、第４必要条件を満たす各仮想面においては、Ｓ６３で算出された仮想面ねじり力Ｒ_iがそのまま仮想面制限ねじり力Ｒ_lim_iとして決定される。
【０３１１】
なお、第４必要条件を満たさない各仮想面における仮想面制限ねじり力Ｒ_lim_iを、ねじり力上限値よりも若干小さい大きさのねじり力に決定するようにしてもよい。
【０３１２】
上記の如く仮想面摩擦力成分制限修正量ｆ_lim_iと仮想面制限ねじり力Ｒ_lim_iとを決定した後、外力目標生成部２７は、次に、Ｓ７１の処理を実行する。このＳ７１では、外力目標生成部２７は、前記モーメント偏差errＭのうち、Ｓ６９で決定した各仮想面におけるｆ_lim_iとＲ_lim_iとによって解消できない偏差成分としての残偏差成分errＭ'を算出する。
【０３１３】
具体的には、外力目標生成部２７は、各仮想面において、制限前の仮想面摩擦力成分修正量ｆ_iと仮想面摩擦力成分制限修正量ｆ_lim_iとの差Δｆ_i（＝ｆ_i−ｆ_lim_i）を算出すると共に、制限前の仮想面ねじり力Ｒ_iと仮想面制限ねじり力Ｒ_lim_iとの差ΔＲ_i（＝Ｒ_i−Ｒ_lim_i）とを算出する。そして、外力目標生成部２７は、前記式１１の右辺における縦ベクトル(f_i  R_i)Tの成分ｆ_i，Ｒ_iをそれぞれに対応するΔｆ_i，ΔＲ_iに置き換え、且つ、前記式１１の左辺をerrＭ'に置き換えた式によって、残偏差成分errＭ’を算出する。
【０３１４】
なお、ｆ_lim_i及びＲ_lim_iを、仮想面上暫定外力作用点に作用させた場合にモーメント基準点周りに発生するモーメントを算出し、このモーメントを、モーメント偏差errＭから差し引くことによって、残偏差成分errＭ'を算出するようにしてもよい。
【０３１５】
次いで、外力目標生成部２７は、図１５のＳ７３の処理を実行する。このＳ７３では、外力目標生成部２７は、仮想面上外力作用点の位置の変化（仮想面上暫定外力作用点からの変化）に対する仮想面必要並進力依存モーメントＭsの変化の感度を表現するヤコビアンＪ（前記式０７の関係式におけるヤコビアンＪ）を、第１実施形態におけるＳ２３と同じ処理によって算出する。
【０３１６】
次いで、外力目標生成部２７は、Ｓ７５の処理を実行する。このＳ７５では、外力目標生成部２７は、第１実施形態におけるＳ２５と同様の処理によって、前記式０７におけるΔＭs（仮想面必要並進力依存モーメントＭsの変化量）をＳ７１で算出した残偏差成分errＭ'に一致させた場合に、式０７の関係を満たす縦ベクトル（Δrp_i）を、errＭを解消するための各仮想面における仮想面上外力作用点修正量Δrpc_iの組として算出する。すなわち、外力目標生成部２７は、Ｓ７３で決定したヤコビアンＪの擬似逆行列ＪinvをＳ２５の処理と同様に算出し、このＪinvをerrＭ'に乗じることによって、各仮想面における仮想面上外力作用点修正量Δrpc_iの組を算出する。
【０３１７】
次いで、外力目標生成部２７は、Ｓ７７の判断処理を実行する。このＳ７７の判断処理は、前記第１実施形態におけるＳ２７の判断処理と同じである。すなわち、外力目標生成部２７は、全ての仮想面において、Ｓ７５で決定したΔrpc_iによる修正後の仮想面上外力作用点の位置が外力作用点存在領域条件を満足するか否かを判断する。
【０３１８】
このＳ７７の判断結果が肯定的である場合には、外力目標生成部２７は、Ｓ７９の処理を実行し、今回時刻での処理を終了する。このＳ７９の処理では、外力目標生成部２７は、今回時刻での各接触対象面からロボット１の目標外力と目標外力作用点とを確定する。
【０３１９】
具体的には、外力目標生成部２７は、Ｓ１５までの処理で決定した各仮想面における仮想面必要並進力（Ｎ_i，Ｆ_i）と、Ｓ６９の処理で決定した仮想面摩擦力成分制限修正量ｆ_lim_iとから、今回時刻での各仮想面における仮想面必要並進力を確定する。この場合、Ｓ１５までの処理で決定した仮想面垂直抗力成分Ｎ_iがそのまま該仮想面における仮想面垂直抗力成分として確定されると共に、Ｓ１５までの処理で決定した仮想面摩擦力成分Ｆ_iに仮想面摩擦力成分制限修正量ｆ_lim_iを加え合わせてなる摩擦力成分が、該仮想面における仮想面摩擦力成分として確定される。
【０３２０】
また、外力目標生成部２７は、Ｓ６９の処理で決定した仮想面制限ねじり力Ｒ_lim_iを、このＲ_lim_iに対応する仮想面における仮想面ねじり力として確定する。
【０３２１】
そして、外力目標生成部２７は、以上の如く確定した各仮想面における仮想面必要並進力と仮想面ねじり力とを、第１実施形態におけるＳ２９又はＳ４１と同じ処理によって、該接触対象面からロボット１に作用させる並進力及びねじり力にそれぞれ変換し、この変換後の並進力とねじり力とをそれぞれ目標外力の構成要素である並進外力の目標値（目標並進力）、ねじり力の目標値（目標ねじり力）として決定する。
【０３２２】
また、外力目標生成部２７は、第１実施形態におけるＳ２９の処理の場合と同様に、Ｓ７５で決定した仮想面上外力作用点修正量Δrpc_iによる修正後の各仮想面上の外力作用点を該仮想面に対応する接触対象面上に逆投影してなる点を、該接触対象面上の目標外力作用点として決定する。
【０３２３】
前記Ｓ７７の判断結果が否定的となる状況では、外力作用点存在領域条件を満たし得る範囲内での仮想面上外力作用点の修正では、前記残偏差成分errＭ'を解消できないこととなる。このため、この場合には、各仮想面に付加する摩擦力又はねじり力をさらに増加させ得るように（ひいてはＳ６５での判断結果が肯定的になり得るように）、仮想面垂直抗力成分Ｎ_iの大きさを大きくする必要がある。
【０３２４】
そこで、Ｓ７７の判断結果が否定的となる場合には、外力目標生成部２７は、次に、Ｓ８１の処理を実行する。このＳ７７では、外力目標生成部２７は、Ｓ６５の判断処理で、第２必要条件又は第４必要条件を満たさない仮想面が、対向仮想面Ｓna又はＳnb（ｎ＝１又は２又は３）であるか否かを判断する。
【０３２５】
このＳ６５の判断結果が否定的となる状況では、Ｓ６５の判断処理で第２必要条件又は第４必要条件を満足しない仮想面における仮想面垂直抗力成分の大きさを、前記第１Ａ必要条件を満たしつつ増加させることができない。そこで、この場合には、外力目標生成部２７は、Ｓ８５において、目標運動が不適切である（目標運動を修正する必要がある）とし、今回時刻での処理を中止する。なお、この場合、外力目標生成部２７は、基本歩容要素生成部２５にエラー情報を出力する。そして、基本歩容要素生成部２５は、そのエラー情報に応じて、目標運動を作成し直す。
【０３２６】
従って、本実施形態では、Ｓ７７の判断結果が否定的となる場合に、Ｓ８１の判断処理によって、目標運動が評価される。そして、このＳ８１の判断結果が否定的となる場合に、目標運動が不適切であると評価されることとなる。
【０３２７】
一方、Ｓ８１の判断結果が肯定的となる状況では、第２必要条件又は第４必要条件を満たさない仮想面を含む、互いに平行な対向仮想面Ｓna，Ｓnb（ｎ＝１又は２又は３）の仮想面垂直抗力成分Ｎ_na，Ｎ_nbの大きさを、前記第１Ａ必要条件を満足しつつ（Ｎ_na＋Ｎ_nbを一定に保ちつつ）、増加させることができる。
【０３２８】
そこで、Ｓ８１の判断結果が肯定的となる場合には、外力目標生成部２７は、次に、Ｓ８３の処理を実行する。このＳ８３では、外力目標生成部２７は、対向仮想面Ｓna，Ｓnbの仮想面垂直抗力成分Ｎ_na，Ｎ_nbの大きさの増加量ＩＮ_nを決定する。この場合、本実施形態では、Ｓ８３で決定する増加量ＩＮ_nは、あらかじめ定められた所定値に設定される。
【０３２９】
ただし、この増加量ＩＮ_nを、例えば、第１実施形態におけるＳ４５と同様の処理によって決定するようにしてもよい。
【０３３０】
次いで、外力目標生成部２７は、図７のＳ１３からの処理を改めて実行する。
【０３３１】
以上が、本実施形態における外力目標生成部２７の処理の詳細である。
【０３３２】
以上説明した外力目標生成部２７の処理によって、まず、Ｓ０５〜Ｓ１５の処理によって、第１実施形態と同様に、ロボット１の目標運動のうちの、ロボット１全体の並進運動を実現するために必要な仮想面必要並進力（Ｎ_i，Ｆ_i）が暫定的に決定される。このため、ロボット１全体の並進運動を実現し得る仮想面必要並進力（Ｎ_i，Ｆ_i）の暫定値を簡素なアルゴリズムによって効率よく決定することができる。
【０３３３】
また、第１実施形態と同様に、Ｓ０７、Ｓ０９の判断結果がいずれも否定的となる場合、あるいは、Ｓ０７、Ｓ０９、Ｓ１５の判断結果がそれぞれ、否定的、肯定的、否定的となる場合に、基本歩容要素生成部２５で生成された目標運動が不適切であると評価され、外力目標生成部２７の処理が中止される。このため、第１実施形態と同様に、目標運動のうちのロボット１全体の並進運動を実現するために、接触対象面とロボット１との間の摩擦力が過大になりやすい目標運動、あるいは、ロボット１の内力が過大になりやすい目標運動を、簡素なアルゴリズムで効率よく不適切であると評価することができる。ひいては、目標歩容を生成するために、無駄な演算処理を実行することとなるのを抑制することができる。
【０３３４】
そして、本実施形態では、このようにロボット１全体の並進運動を実現し得る仮想面必要並進力（Ｎ_i，Ｆ_i）の暫定値を決定した上で、Ｓ１９、Ｓ２１、Ｓ６１〜Ｓ７５の処理（Ｓ６７の処理を除く）によって、ロボット１全体の回転運動（モーメント基準点周りの角運動量の変化を生じる回転運動）を実現するための付加的な操作量（モーメント補償量）として、前記仮想面摩擦力成分修正量Δｆ_iと仮想面ねじり力Ｒ_iとの組が決定され、あるいは、前記仮想面摩擦力成分修正量Δｆ_iと仮想面ねじり力Ｒ_iと仮想面上外力作用点修正量Δｒpc_iとの組が決定される。
【０３３５】
このため、第１実施形態の場合と同様に、Ｓ０５〜Ｓ１５の処理によって決定した仮想面必要並進力（Ｎ_i，Ｆ_i）の暫定値と、Ｓ１９、Ｓ２１、Ｓ６１〜Ｓ７５の処理（Ｓ６７の処理を除く）によって決定したモーメント補償量とを単純に組合わせるだけで、ロボット１全体の並進運動と回転運動との両方を適切に実現できる仮想面上必要並進力と仮想面上ねじり力と仮想面上外力作用点との組（仮想面上ねじり力が“０”になる場合を含む）を決定することができることとなる。そして、この仮想面上必要並進力と仮想面上ねじり力と仮想面上外力作用点との組から、各接触対象面からロボット１に作用させるべき目標外力（目標並進力及び目標ねじり力）と目標外力作用点とを効率よく適切に決定できることとなる。
【０３３６】
なお、この場合、Ｓ７７、Ｓ８１の判断結果がいずれも否定的となる場合に、基本歩容要素生成部２５で生成された目標運動が不適切であると評価され、外力目標生成部２７の処理が中止される。このため、前記第１Ａ必要条件及び第１Ｂ必要条件とを少なくとも満足しつつ、ロボット１全体の回転運動を実現することが困難となる目標運動を不適切であると評価することができる。ひいては、目標歩容を生成するために、無駄な演算処理を実行することとなるのを抑制することができる。
【０３３７】
また、図７に示したＳ０９及びＳ１５、並びに図１５のＳ８１のいずれかの判断結果が否定的となる場合（目標運動が不適切である場合）を除いて、第１実施形態と同様に、今回時刻での各接触対象面に対応する各仮想面における最終的な仮想面必要並進力（仮想面垂直抗力成分Ｎ_iと仮想面摩擦力成分Ｆ_iとの組）は、結果的に、前記第１Ａ必要条件、第１Ｂ必要条件、第２必要条件及び第３必要条件を満足するように決定される。
【０３３８】
そして、各仮想面に対応する接触対象面における並進外力の目標値（目標並進力）は、その垂直抗力成分（接触対象面に垂直な成分）と摩擦力成分（接触対象面に平行な成分）とが、それぞれ、該仮想面における仮想面垂直抗力成分Ｎ_iと仮想面摩擦力成分Ｆ_iとに一致するように決定される。
【０３３９】
このため、第１実施形態と同様に、各接触対象面からロボット１への目標並進力は、可能な限り、各接触対象面における目標並進力のうちの垂直抗力成分の合力によって前記必要総並進外力を実現すると共に、該目標並進力のうちの摩擦力成分を、該接触対象面で発生可能な摩擦力の大きさの限界内で可能な限り小さくなるように、各接触対象面からロボットへの目標並進力を決定できる。
【０３４０】
また、Ｓ０１で設定される仮想面が対向仮想面Ｓna，Ｓnbを含む場合において、Ｓ６５又はＳ７７の判断結果が肯定的となる場合に、第１実施形態と同様に、これらの対向仮想面Ｓna，Ｓnbの間でロボット１に発生する内力の大きさ（Ｎ_na，Ｎ_nbの大きさのうちの小さい方の大きさ）を、前記第１Ａ必要条件、第１Ｂ必要条件、第２必要条件及び第３必要条件を満足し得る範囲内で、必要最低限に留めることができる。従って、第１実施形態と同様に、ロボット１の関節アクチュエータ１１が発生可能な動力（本実施形態では駆動トルク）のうち、該内力を発生するために必要な負担分を軽減することができるように対向仮想面Ｓna，Ｓnbに対応する２つの接触対象面を含む各接触対象面における目標並進力を決定できる。
【０３４１】
ここで、以上説明した本実施形態と本願発明との対応関係を補足しておく。本実施形態ででは、Ｓ０５〜Ｓ１５、Ｓ１９、Ｓ２１、Ｓ６１〜Ｓ８３の処理によって、本発明における仮想面必要並進力決定手段が実現される。また、Ｓ６７及びＳ７９の処理によって、本発明における接触対象面目標並進力決定手段が実現される。これら以外の対応関係は、第１実施形態と同じである。
【０３４２】
［第３実施形態］
次に本発明の第３実施形態を図１６を参照して説明する。なお、本実施形態は、外力目標生成部２７の処理の一部だけが第１実施形態と相違するものであるので、第１実施形態と同一事項については説明を省略する。
【０３４３】
ロボット１の外界の接触対象面が、前記壁面ＷＬ１，ＷＬ２の如く、互いに間隔を存して対向する２つの接触対象面を有する場合、ひいては、Ｓ０１で設定される仮想面群が対向仮想面Ｓna，Ｓnbを含む場合には、これらの対向仮想面Ｓna，Ｓnbにおける仮想面垂直抗力成分Ｎ_na，Ｎ_nbの合力を一定に維持したまま、該対向仮想面Ｓna，Ｓnbの間の内力（＝ｍｉｎ（｜Ｎ_na｜，｜Ｎ_nb｜）を操作する（増減させる）ことによって、モーメント基準点周りに発生するモーメントを変化させることができる。従って、この内力は、モーメント偏差errＭ（又は残偏差成分errＭ'）を解消し、もしくは低減するためモーメント補償量として利用することもできる。
【０３４４】
そこで、本実施形態では、Ｓ０１で設定される仮想面群が対向仮想面Ｓna，Ｓnbを含む場合に、Ｓ３３で算出される前記残偏差成分errＭ'を解消するためのモーメント補償量として、第２補償量（仮想面摩擦力成分修正量ｆ_i）及び第３補償量（仮想面ねじり力Ｒ_i）と、第４補償量としての内力修正量ΔＩＮとの組を決定する。
【０３４５】
具体的には、本実施形態における外力目標生成部２７の処理のうち、前記Ｓ３３までの処理は、第１実施形態と同じである。そして、Ｓ３３の後の一部の処理が第１実施形態と相違する。
【０３４６】
以下、図１６を参照して説明すると、外力目標生成部２７は、Ｓ３３の次に、Ｓ１０１の処理を実行する。このＳ１０１では、外力目標生成部２７は、Ｓ０１で設定した仮想面群に、対向仮想面Ｓna，Ｓnbが有るか否かを判断する。そして、この判断結果が否定的である場合には、外力目標生成部２７は、図９に示したＳ３５からの処理を第１実施形態と同様に実行する。
【０３４７】
なお、本実施形態では、Ｓ１０１の判断結果が否定的となった場合において、その後、図９に示したＳ３５、Ｓ３７、Ｓ３９、Ｓ４３の処理を順次実行したとき、Ｓ４３の判断結果は常に否定的となる。従って、Ｓ１０１の判断結果が否定的となった場合の後の処理では、Ｓ４３及びＳ４５の処理は実質的に不要であり、Ｓ３９の判断結果が、否定的である場合に、直ちにＳ４７の処理を実行するようにしてもよい。
【０３４８】
一方、Ｓ１０１の判断結果が肯定的である場合には、外力目標生成部２７は、次に、Ｓ１０３の処理を実行する。このＳ１０３では、各仮想面（Ｓ０１で設定した各仮想面）の仮想面上制限修正後外力作用点に任意の値の前記仮想面摩擦力成分修正量ｆ_iと前記仮想面ねじり力Ｒ_iとを付加し、且つ、各組の対向仮想面Ｓna，Ｓnbの仮想面垂直抗力成分Ｎ_na，Ｎ_nbの大きさを任意の値の内力修正量ΔIN_nだけ変化させた場合に、それらのｆ_i，Ｒ_i，ΔIN_nによって前記モーメント基準点周りに発生するモーメントＭfrinと、ｆ_i，Ｒ_i，ΔIN_nとの間の関係を次式１３により表現するヤコビアン（行列）Ｊfrinを算出する。
【０３４９】
Ｍfrin＝Ｊfrin＊(f_i  R_i  ΔIN_n)T      ……式１３
この式１３における(f_i  R_i  ΔIN_n)Tは、ｆ_i，Ｒ_i及びΔIN_nを成分とする縦ベクトルである。なお、仮想面摩擦力成分修正量ｆ_iは、それらの総和（合力）が“０”になるように決定されるべきモーメント補償量であるので、式１３における縦ベクトル(f_i  R_i  ΔIN_n)Tの成分としてのｆ_iは、第１実施形態で説明した前記式１１におけるｆ_iと同様に、任意の１つの仮想面に対応するｆ_i（≡ｆ_i0）を除いたものである。また、Ｓ０１で設定した仮想面群に、対向仮想面Ｓna，Ｓnbの組が複数組含まれる場合には、その全ての組の対向仮想面Ｓna，Ｓnbに対応する内力修正量ΔIN_nが式１３における縦ベクトル(f_i  R_i  ΔIN_n)Tの成分として含まれる。
【０３５０】
次いで、外力目標生成部２７は、Ｓ１０５の処理を実行する。このＳ１０５では、外力目標生成部２７は、式１３のＭfrinを、Ｓ３３で算出した残偏差成分errＭ'に一致させた場合に、式１３の関係を満たすｆ_i，Ｒ_i及びΔIN_nの組(f_i  R_i  ΔIN_n)Tを算出する。
【０３５１】
すなわち、外力目標生成部２７は、Ｓ１０３で求めたヤコビアンＪfrinの擬似逆行列Ｊfrin_invを算出し、この擬似逆行列Ｊfrin_invを、残偏差成分errＭ'に乗じることによって、ｆ_i，Ｒ_i及びΔIN_nの組を算出する。この場合、擬似逆行列Ｊfrin_invは、第１実施形態で説明した図９のＳ３７の処理で擬似逆行列Ｊfr_invを算出する手法と同様に、例えば式１３の縦ベクトル(f_i  R_i  ΔIN_n)Tを組成するｆ_i，Ｒ_i，ΔIN_nのそれぞれの２乗値又は絶対値の平均値（又は重み付き平均値）が最小になるように決定される。また、式１３の縦ベクトル(f_i  R_i  ΔIN_n)Tから除いた上記ｆ_i0は、上記の如く算出したｆ_iの総和の符号を反転させてなる値として決定される。
【０３５２】
なお、必ずしもｆ_i，Ｒ_i，ΔIN_nの全てを算出する必要はない。例えば、摩擦係数μ_iが比較的小さい仮想面におけるｆ_iを“０”に設定したり、ねじり力係数μr_iが比較的小さい仮想面におけるＲ_iを“０”に設定するようにしてもよい。
【０３５３】
歩容生成部２３が、前記壁登り歩容を生成する場合においては、上記Ｓ１０３、Ｓ１０５の処理は、例えば次にように行なわれる。
【０３５４】
例えば、第１実施形態で説明した場合と同様に、図１１（ｂ）に示した動作状態において、床面ＦＬ及び壁面ＷＬ１，ＷＬ２にそれぞれ対応する各仮想面Ｓ3a，Ｓ2a，Ｓ2bにおける仮想面上制限修正後外力作用点の位置ベクトル（モーメント基準点に対する位置ベクトル）をそれぞれrp_3a，rp_2a，rp_2bとおく。このとき、各仮想面Ｓ3a，Ｓ2a，Ｓ2bにおける仮想面上摩擦力成分修正量ｆ_3a，ｆ_2a，ｆ_2b、仮想面ねじり力Ｒ_3a，Ｒ_2a，Ｒ_2b、並びに、仮想面Ｓ2a，Ｓ2b間の内力修正量ΔIN_2と、これらのｆ_3a，ｆ_2a，ｆ_2b，Ｒ_3a，Ｒ_2a，Ｒ_2b，ΔIN_2によってモーメント基準点周りに発生するモーメントＭfrinとの間の関係は、次式１３ａにより表される。
【０３５５】
Ｍfrin＝rp_3a＊ｆ_3a＋rp_2a＊ｆ_2a＋rp_2b＊ｆ_2b＋Ｒ_3a＋Ｒ_2a＋Ｒ_2b
＋（rp_2a−rp_2b）＊ΔIN_2
……式１３ａ
なお、式１３ａにおける（rp_3a＊ｆ_3a），（rp_2a＊ｆ_2a），（rp_2b＊ｆ_2b），（rp_2a−rp_2b）＊ΔIN_2はそれぞれベクトル積である。この場合、式１３ａでは、ΔIN_2は、仮想面Ｓ2aから仮想面Ｓ2bに向かうベクトル（大きさがΔIN_2であるベクトル）として表現されている。
【０３５６】
この場合、仮想面摩擦力成分修正量に関しては、ｆ_3a＋ｆ_2a＋ｆ_2b＝０であるから、ｆ_2b＝−(ｆ_3a＋ｆ_2a)となる。従って、式１３ａは、例えばｆ_2bを含まない次式１３ｂに書き換えられる。
【０３５７】
Ｍfrin＝（rp_3a−rp_2b）＊ｆ_3a＋（rp_2a−rp_2b）＊ｆ_2a＋Ｒ_3a＋Ｒ_2a＋Ｒ_2b
＋（rp_2a−rp_2b）＊ΔIN_2
……式１３ｂ
従って、Ｓ１０３では、この式１３ｂの右辺を、座標成分で表して整理することで、前記式１３におけるヤコビアンＪfrinが求められることとなる。
【０３５８】
そして、Ｓ１０５では、このヤコビアンＪfrinの擬似逆行列Ｊfrin_invが前記した如く算出され、このＪfr_invを、残偏差成分errＭ’に乗じることによって、ｆ_3a，ｆ_2a，Ｒ_3a，Ｒ_2a，Ｒ_2b，ΔIN_2が算出される。さらに、ｆ_3a，ｆ_2aから、ｆ_2b＝−(ｆ_3a＋ｆ_2a)という関係に従って、ｆ_3bが算出される。
【０３５９】
以上のＳ１０５までの処理によって、前記Ｓ２７の判断結果が否定的となり、且つ、Ｓ１０１の判断結果が肯定的となる場合には、前記第１Ａ必要条件及び第１Ｂ必要条件を満足しつつ、ロボット１の目標運動のうちのロボット１全体の回転運動（モーメント基準点周りの角運動量を変化させる回転運動）を実現するためのモーメント補償量として、仮想面上外力作用点制限修正量Δrpc_lim_iに加えて、仮想面摩擦力成分修正量ｆ_i、仮想面ねじり力Ｒ_i及び内力修正量ΔIN_nの組が算出されることとなる。
【０３６０】
次いで、外力目標生成部２７は、Ｓ１０７の判断処理を実行する。このＳ１０７では、外力目標生成部２７は、内力修正量ΔIN_nによる内力の修正を行なう対向仮想面Ｓna，Ｓnbにおいて、修正後の内力が前記第３必要条件を満足するか否かを判断する。より詳しくは、外力目標生成部２７は、対向仮想面Ｓna，Ｓnbにおいて、内力修正量ΔIN_nだけ大きさを変化させた仮想面垂直抗力成分Ｎ_na，Ｎ_nbの大きさのうちの小さい方の大きさ（すなわちΔIN_nによる修正後の内力の大きさ）が、前記内力上限値ＩＦＣ_n以下であるか否かを判断する。
【０３６１】
このＳ１０７の判断結果が否定的である場合には、外力目標生成部２７は、Ｓ１１７において、目標運動が不適切である（目標運動を修正する必要がある）とし、外力に関する目標を生成する処理を中止する。なお、この場合、外力目標生成部２７は、基本歩容要素生成部２５にエラー情報を出力する。そして、基本歩容要素生成部２５は、そのエラー情報に応じて、目標運動を作成し直す。
【０３６２】
また、Ｓ１０７の判断結果が肯定的である場合には、外力目標生成部２７は、図９のＳ３９と同じ判断処理（第２必要条件及び第４必要条件に関する判断処理）をＳ１０９で実行する。なお、この場合、対向仮想面Ｓna，Ｓnbにおける摩擦力上限値に関する仮想面垂直抗力成分Ｎ_na，Ｎ_nbの大きさは、内力修正量ΔIN_nによる修正後の値（詳しくは図７のＳ１５までの処理で決定された仮想面垂直抗力成分Ｎ_na，Ｎ_nbの大きさを、内力修正量ΔIN_nだけ変化させた後の値）である。
【０３６３】
そして、Ｓ１０９の判断結果が肯定的である場合には、外力目標生成部２７は、図９のＳ４１と同じ処理をＳ１１１で実行し、今回時刻での各接触対象面からロボット１への目標外力と目標外力作用点とを確定する。
【０３６４】
また、Ｓ１０９の判断結果が否定的である場合には、外力目標生成部２７は、図９のＳ４３と同じ判断処理をＳ１１３で実行する。そして、この判断結果が、否定的である場合には、外力目標生成部２７は、Ｓ１１７において、目標運動が不適切であるとして、外力目標生成部２７の処理（外力に関する目標を生成する処理）を中止する。
【０３６５】
従って、本実施形態では、Ｓ１０７の判断結果が否定的となる場合、あるいは、１０９及びＳ１１３の判断結果がいずれも否定的となる場合に、目標運動が不適切であると評価されることとなる。
【０３６６】
また、Ｓ１１３の判断結果が肯定的である場合には、図９のＳ４５と同じ処理をＳ１１５で実行し、対向仮想面Ｓna，Ｓnbにおける仮想面垂直抗力成分Ｎ_na，Ｎ_nbの大きさの増加量IN_nを決定する。なお、Ｓ１１５で決定する増加量IN_nは、詳しくは、Ｓ１０９の判断処理で使用した仮想面垂直抗力成分Ｎ_na，Ｎ_nbの大きさ（すなわち、内力修正量ΔIN_nによる修正後の値）からの増加量である。
【０３６７】
次いで、外力目標生成部２７は、図７のＳ１３からの処理を改めて実行する。
【０３６８】
なお、このようにＳ１３からの処理を改めて実行する場合には、Ｓ１５の判断結果が肯定的となる場合に、Ｓ１０１の判断処理を行うことなく（あるいは、Ｓ１０１の判断結果に依存することなく）、Ｓ３５からの処理を実行するようにしてもよい。
【０３６９】
以上が、本実施形態における外力目標生成部２７の処理の詳細である。
【０３７０】
以上説明した外力目標生成部２７の処理によって、第１実施形態と同様に、まず、Ｓ０５〜Ｓ１５の処理によって、ロボット１の目標運動のうちの、ロボット１全体の並進運動を実現するために必要な仮想面必要並進力（Ｎ_i，Ｆ_i）が暫定的に決定される。このため、ロボット１全体の並進運動を実現し得る仮想面必要並進力（Ｎ_i，Ｆ_i）の暫定値を簡素なアルゴリズムによって効率よく決定することができる。
【０３７１】
また、第１実施形態と同様に、Ｓ０７、Ｓ０９の判断結果がいずれも否定的となる場合、あるいは、Ｓ０７、Ｓ０９、Ｓ１５の判断結果がそれぞれ、否定的、肯定的、否定的となる場合に、基本歩容要素生成部２５で生成された目標運動が不適切であると評価され、外力目標生成部２７の処理が中止される。このため、第１実施形態と同様に、目標運動のうちのロボット１全体の並進運動を実現するために、接触対象面とロボット１との間の摩擦力が過大になりやすい目標運動、あるいは、ロボット１の内力が過大になりやすい目標運動を、簡素なアルゴリズムで効率よく不適切であると評価することができる。ひいては、目標歩容を生成するために、無駄な演算処理を実行することとなるのを抑制することができる。
【０３７２】
そして、本実施形態では、このようにロボット１全体の並進運動を実現し得る仮想面必要並進力（Ｎ_i，Ｆ_i）の暫定値を決定した上で、Ｓ１９〜Ｓ３７の処理（Ｓ２９の処理を除く）、又は、Ｓ１９〜Ｓ３３（Ｓ２９の処理を除く）、Ｓ１０３〜１０５の処理によって、ロボット１全体の回転運動（モーメント基準点周りの角運動量の変化を生じる回転運動）を実現するための付加的な操作量（モーメント補償量）として、前記仮想面上外力作用点修正量Δｒpc_iが決定され、あるいは、前記仮想面上外力作用点制限修正量Δｒpc_lim_iと仮想面摩擦力成分修正量Δｆ_iと仮想面ねじり力Ｒ_iとの組が決定され、あるいは、Δｒpc_lim_i、Δｆ_i及びＲ_iと内力修正量ΔIN_nとの組が決定される。
【０３７３】
このため、第１実施形態と同様に、Ｓ０５〜Ｓ１５の処理によって決定した仮想面必要並進力（Ｎ_i，Ｆ_i）の暫定値と、Ｓ１９〜Ｓ３７の処理（Ｓ２９の処理を除く）、又は、Ｓ１９〜Ｓ３３（Ｓ２９の処理を除く）とＳ１０３〜１０５の処理とによって決定したモーメント補償量とを単純に組合わせるだけで、ロボット１全体の並進運動と回転運動との両方を適切に実現できる仮想面上必要並進力と仮想面上ねじり力と仮想面上外力作用点との組（仮想面上ねじり力が“０”になる場合を含む）を決定することができることとなる。そして、この仮想面上必要並進力と仮想面上ねじり力と仮想面上外力作用点との組から、各接触対象面からロボット１に作用させるべき目標外力（目標並進力及び目標ねじり力）と目標外力作用点とを効率よく適切に決定できることとなる。
【０３７４】
なお、この場合、Ｓ１０９、Ｓ１１３の判断結果がいずれも否定的となる場合に、基本歩容要素生成部２５で生成された目標運動が不適切であると評価され、外力目標生成部２７の処理が中止される。このため、前記第１Ａ必要条件及び第１Ｂ必要条件とを少なくとも満足しつつ、ロボット１全体の回転運動を実現することが困難となる目標運動を不適切であると評価することができる。ひいては、目標歩容を生成するために、無駄な演算処理を実行することとなるのを抑制することができる。
【０３７５】
また、図７に示したＳ０９及びＳ１５、並びに図１６のＳ１０７、Ｓ１１３のいずれかの判断結果が否定的となる場合（目標運動が不適切である場合）を除いて、第１実施形態と同様に、今回時刻での各接触対象面に対応する各仮想面における最終的な仮想面必要並進力（仮想面垂直抗力成分Ｎ_iと仮想面摩擦力成分Ｆ_iとの組）は、結果的に、前記第１Ａ必要条件、第１Ｂ必要条件、第２必要条件及び第３必要条件を満足するように決定される。
【０３７６】
そして、各仮想面に対応する接触対象面における並進外力の目標値（目標並進力）は、その垂直抗力成分（接触対象面に垂直な成分）と摩擦力成分（接触対象面に平行な成分）とが、それぞれ、該仮想面における仮想面垂直抗力成分Ｎ_iと仮想面摩擦力成分Ｆ_iとに一致するように決定される。
【０３７７】
このため、第１実施形態と同様に、各接触対象面からロボット１への目標並進力は、可能な限り、各接触対象面における目標並進力のうちの垂直抗力成分の合力によって前記必要総並進外力を実現すると共に、該目標並進力のうちの摩擦力成分を、該接触対象面で発生可能な摩擦力の大きさの限界内で可能な限り小さくなるように、各接触対象面からロボットへの目標並進力を決定できる。
【０３７８】
特に、本実施形態では、第１実施形態と同様に、モーメント補償量として、仮想面上外力作用点修正量Δｒpc_i（第１補償量）が優先的に決定されるため、各仮想面における仮想面摩擦力成分Ｆ_iの大きさを、前記第１Ａ必要条件、第１Ｂ必要条件、第２必要条件及び第３必要条件を満足し得る範囲内で、必要最低限の大きさに留めることができる。ひいては、各接触対象面における目標並進力の摩擦力成分の大きさも必要最低限もしくはこれと同程度に留めることができる。
【０３７９】
また、Ｓ０１で設定される仮想面が対向仮想面Ｓna，Ｓnbを含む場合において、目標運動が不適切であると判断される場合を除いて、対向仮想面Ｓna，Ｓnbの間でロボット１に発生する内力の大きさ（Ｎ_na，Ｎ_nbの大きさのうちの小さい方の大きさ）が前記内力上限値ＩＦＣ_n以下に収まるように（前記第３必要条件を満足するように）、仮想面垂直抗力成分Ｎ_na，Ｎ_nbが決定される。このため、ロボット１の関節アクチュエータ１１が発生可能な動力（本実施形態では駆動トルク）のうち、内力を発生するために必要な負担分が過大にならないように、対向仮想面Ｓna，Ｓnbに対応する２つの接触対象面を含む各接触対象面における目標並進力を決定できる。
【０３８０】
ここで、以上説明した本実施形態と本願発明との対応関係を補足しておく。本実施形態ででは、Ｓ０５〜Ｓ１５、Ｓ１９〜Ｓ４５、Ｓ１０３〜Ｓ１１５の処理によって、本発明における仮想面必要並進力決定手段が実現される。また、Ｓ２９，Ｓ４１，Ｓ１１１の処理によって、本発明における接触対象面目標並進力決定手段が実現される。これら以外の対応関係は、第１実施形態と同じである。
【０３８１】
［第４実施形態］
次に本発明の第４実施形態を図１７及び図１８を参照して説明する。なお、本実施形態は、外力目標生成部２７の処理の一部だけが第２実施形態又は第３実施形態と相違するものであるので、第２実施形態又は第３実施形態と同一事項については説明を省略する。
【０３８２】
本実施形態は、モーメント偏差errＭを解消もしくは低減するためのモーメント補償量として、第３実施形態と同様に内力修正量ΔIN_n（第４補償量）を適宜利用するものである。この場合、本実施形態では、Ｓ０１で設定した仮想面群に対向仮想面が含まれる場合に、モーメント補償量として、仮想面摩擦力成分修正量ｆ_i（第２補償量）と仮想面ねじり力Ｒ_i（第３補償量）と内力修正量ΔIN_n（第４補償量）との組を決定した上で、これらの補償量によって解消できない残偏差成分errＭ’を解消するように、仮想面上外力作用点修正量Δrpc_i（第１補償量）を決定する。
【０３８３】
具体的には、本実施形態における外力目標生成部２７の処理のうち、前記Ｓ２１までの処理は、第２実施形態と同じである。そして、Ｓ２１の後の一部の処理が第２実施形態と相違する。
【０３８４】
以下図１７及び図１８を参照して説明すると、外力目標生成部２７は、Ｓ２１の次に、Ｓ１２１の判断処理を実行する。このＳ１２１では、外力目標生成部２７は、Ｓ０１で設定した仮想面群に、対向仮想面Ｓna，Ｓnbが有るか否かを判断する。そして、この判断結果が否定的である場合には、外力目標生成部２７は、図１４及び図１５に示したＳ６１からの処理を第２実施形態と同様に実行する。
【０３８５】
なお、本実施形態では、Ｓ１２１の判断結果が否定的となった場合において、その後、図１５に示したＳ８１の判断処理を実行したとき、その判断結果は常に否定的となる。従って、Ｓ１２１の判断結果が否定的となった場合の後の処理では、Ｓ８１及びＳ８３の処理は実質的に不要であり、Ｓ７７の判断結果が否定的である場合に、直ちにＳ８５の処理を実行するようにしてもよい。
【０３８６】
一方、Ｓ１２１の判断結果が肯定的である場合には、外力目標生成部２７は、次に、Ｓ１２３の処理を実行する。このＳ１２３では、外力目標生成部２７は、第３実施形態で説明したＳ１０３と同様の処理によって、仮想面摩擦力成分修正量ｆ_i（第２補償量）、仮想面ねじり力Ｒ_i（第３補償量）及び内力修正量ΔIN_n（第４補償量）と、これらのｆ_i，Ｒ_i，ΔIN_nによってモーメント基準点周りに発生するモーメントＭfrinとの関係を前記式１３により表現するヤコビアンＪfrinを決定する。ただし、本実施形態では、Ｓ１２３の処理における各仮想面上の外力作用点としては、仮想面上暫定外力作用点（基本歩容要素生成部２５が決定した接触対象面上の暫定外力作用点を該接触対象面に対応する仮想面に投影してなる点）が使用される。
【０３８７】
次いで、外力目標生成部２７は、Ｓ１２５の処理を実行する。このＳ１２５では、外力目標生成部２７は、前記式１３のＭfrinをＳ２１で求めたモーメント偏差errＭに一致させた場合に式１３の関係式を満足させ得るｆ_i、Ｒ_i及びΔIN_nの組(f_i  R_i  ΔIN_n)Tを算出する。
【０３８８】
この場合、外力目標生成部２７は、Ｓ１２３で求めたヤコビアンＪfrinの擬似逆行列Ｊfrin_invを、第３実施形態におけるＳ１０５の処理と同様の処理によって算出し、この擬似逆行列Ｊfrin_invを、モーメント偏差errＭに乗じることによって、ｆ_i，Ｒ_i，ΔIN_nの組(f_i  R_i  ΔIN_n)Tを算出する。これにより、errＭを解消するために必要なｆ_i，Ｒ_i，ΔIN_nの組が算出される。
【０３８９】
なお、必ずしもｆ_i，Ｒ_i，ΔIN_nの全てを算出する必要はない。例えば、摩擦係数μ_iが比較的小さい仮想面におけるｆ_iを“０”に設定したり、ねじり力係数μr_iが比較的小さい仮想面におけるＲ_iを“０”に設定するようにしてもよい。
【０３９０】
以上のＳ１２５までの処理によって、Ｓ１２１の判断結果が否定的となる場合には、前記第１Ａ必要条件及び第１Ｂ必要条件を満足しつつ、ロボット１の目標運動のうちのロボット１全体の回転運動（モーメント基準点周りの角運動量を変化させる回転運動）を実現するためのモーメント補償量として、仮想面摩擦力成分修正量ｆ_i、仮想面ねじり力Ｒ_i及び内力修正量ΔIN_nの組が算出されることとなる。
【０３９１】
次いで、外力目標生成部２７は、第３実施形態におけるＳ１０７と同じ判断処理をＳ１２７で実行する。すなわち、外力目標生成部２７は、ΔIN_nによる修正後の内力（＝ｍｉｎ（｜Ｎ_na｜，｜Ｎ_nb｜））が前記第３必要条件を満足するか否かを判断する。
【０３９２】
このＳ１２７の判断結果が肯定的である場合には、外力目標生成部２７は、次に、Ｓ１３１の処理を実行する。このＳ１３１では、外力目標生成部２７は、第２実施形態におけるＳ６５と同じ判断処理を実行する。すなわち、外力目標生成部２７は、各仮想面において、ｆ_iによる修正後の仮想面摩擦力成分Ｆ_i（Ｓ１５までの処理で決定されたＦ_iとｆ_iとの総和の摩擦力成分）が、前記第２必要条件を満足するか否かを判断すると共に、Ｒ_iの大きさが、前記第４必要条件を満足するか否かを判断する。
【０３９３】
そして、Ｓ１３１の判断結果が肯定的である場合には、外力目標生成部２７は、Ｓ１３３の処理を実行し、今回時刻での処理を終了する。このＳ１３３の処理では、外力目標生成部２７は、第２実施形態におけるＳ６７と同様の処理によって、今回時刻での各接触対象面からロボット１の目標外力と目標外力作用点とを確定する。
【０３９４】
具体的には、外力目標生成部２７は、Ｓ１５までの処理で決定した各仮想面における仮想面必要並進力（Ｎ_i，Ｆ_i）と、Ｓ１２５の処理で決定した仮想面摩擦力成分修正量ｆ_i及び内力修正量ΔIN_nとから、今回時刻での各仮想面における仮想面必要並進力を確定する。この場合、Ｓ１５までの処理で決定した仮想面垂直抗力成分Ｎ_iの大きさをΔIN_nだけ変化させてなる垂直抗力成分が、該仮想面における仮想面垂直抗力成分として確定されると共に、Ｓ１５までの処理で決定した仮想面摩擦力成分Ｆ_iに仮想面摩擦力成分修正量ｆ_iを加え合わせてなる摩擦力成分が、該仮想面における仮想面摩擦力成分として確定される。
【０３９５】
また、外力目標生成部２７は、Ｓ１２５の処理で決定した仮想面ねじり力Ｒ_iを、このＲ_iに対応する仮想面におけるねじり力として確定する。
【０３９６】
そして、外力目標生成部２７は、以上の如く確定した各仮想面における仮想面必要並進力と仮想面ねじり力Ｒ_iとを、Ｓ６７の処理と同様に、該仮想面に対応する接触対象面からロボット１に作用させる並進力とねじり力とにそれぞれ変換することで、目標外力の構成要素である目標並進力と目標ねじり力とを決定する。
【０３９７】
また、外力目標生成部２７は、基本歩容要素生成部２５で生成された暫定外力作用点をそのまま目標外力作用点として確定する。
【０３９８】
前記Ｓ１３１の判断結果が否定的である場合には、外力目標生成部２７は、次にＳ１３５の処理を実行する。このＳ１３５では、外力目標生成部２７は、第２実施形態におけるＳ６９と同じ処理によって、第２必要条件を満足するように、仮想面摩擦力成分修正量ｆ_iを制限してなる仮想面摩擦力成分制限修正量ｆ_lim_iを決定すると共に、第４必要条件を満足するように、仮想面ねじり力Ｒ_iを制限してなる仮想面制限ねじり力Ｒ_lim_iを決定する。
【０３９９】
一方、前記Ｓ１２７の判断結果が否定的である場合には、外力目標生成部２７は、Ｓ１２９の処理を実行した後、上記Ｓ１３５の処理を実行する。
【０４００】
この場合、Ｓ１２９では、外力目標生成部２７は、前記第３必要条件を満足するように、内力修正量ΔIN_nを制限してなる内力制限修正量ΔIN_lim_nを決定する。具体的には、Ｓ１２７の判断結果が否定的となった対向仮想面Ｓna，Ｓnbに関して、Ｓ１５までの処理で決定された仮想面垂直抗力成分Ｎ_na，Ｎnbの大きさをそれぞれ、ΔIN_lim_nだけ変化させた後の仮想面垂直抗力成分Ｎ_na，Ｎnbの大きさのうちの小さい方の大きさ（ΔIN_lim_nによる修正後の内力の大きさ）が前記内力上限値ＩＦＣ_nに一致するように（あるいは、ＩＦＣ_nよりも若干小さい値となるように）、ΔIN_lim_nを決定する。
【０４０１】
なお、Ｓ０１で設定される仮想面群が２組以上の対向仮想面Ｓna，Ｓnbを有する場合において、Ｓ１２７の判断結果が否定的とならない対向仮想面Ｓna，Ｓnbに関しては、Ｓ１２５で算出された内力修正量ΔIN_nがそのまま、内力制限修正量ΔIN_lim_nとして決定される。
【０４０２】
そして、Ｓ１２９の処理に続くＳ１３５の処理では、対向仮想面Ｓna，Ｓnbのそれぞれの摩擦力上限値及びねじり力上限値を決定するための仮想面垂直抗力成分Ｎ_na，Ｎ_nbの大きさとしては、Ｓ１５までの処理で決定された仮想面垂直抗力成分の大きさを、Ｓ１２９で決定されたΔIN_lim_nにより修正してなる値が用いられる。
【０４０３】
なお、Ｓ１２９の処理に続くＳ１３５の処理においては、Ｓ０１で設定された全ての仮想面について、Ｓ１２５で算出されたｆ_iによる修正後の仮想面摩擦力成分Ｆ_iが第２必要条件を満足し、且つ、Ｓ１２５で算出されたＲ_iが第４必要条件を満足するものとなっている場合もある。この場合には、Ｓ１２５で算出されたｆ_i，Ｒ_iがそのまま各仮想面における仮想面摩擦力成分制限修正量ｆ_lim_i、仮想面制限ねじり力Ｒ_lim_iとして決定されることとなる。
【０４０４】
また、図示は省略したが、本実施形態では、Ｓ１２７の判断結果と、Ｓ１３１の判断結果とがそれぞれ肯定的、否定的となった場合におけるＳ１３５の処理では、後の処理の便宜上、Ｓ１２５で算出された内力修正量ΔIN_nがそのまま内力制限修正量ΔIN_lim_nとして決定される。
【０４０５】
上記の如くΔIN_lim_n、ｆ_lim_i、Ｒ_lim_iを決定した後、外力目標生成部２７は、次に、Ｓ１３７の処理を実行する。このＳ１３７では、外力目標生成部２７は、前記モーメント偏差errＭのうち、ΔIN_lim_nとｆ_lim_iとＲ_lim_iとの組によって解消できない偏差成分としての残偏差成分errＭ'を算出する。
【０４０６】
具体的には、外力目標生成部２７は、各仮想面において、制限前の仮想面摩擦力成分修正量ｆ_iと仮想面摩擦力成分制限修正量ｆ_lim_iとの差Δｆ_i（＝ｆ_i−ｆ_lim_i）を算出すると共に、制限前の仮想面ねじり力Ｒ_iと仮想面制限ねじり力Ｒ_lim_iとの差ΔＲ_i（＝Ｒ_i−Ｒ_lim_i）とを算出する。さらに、外力目標生成部２７は、制限前の内力修正量ΔIN_nと内力制限修正量ΔIN_lim_iとの差ΔΔIN_n（＝ΔIN_n−ΔIN_lim_n）を算出する。
【０４０７】
そして、外力目標生成部２７は、前記式１３の右辺における縦ベクトル(f_i  R_i  ΔIN_n)Tの成分ｆ_i，Ｒ_i，ΔIN_nをそれぞれに対応するΔｆ_i，ΔＲ_i，ΔΔIN_nに置き換え、且つ、前記式１３の左辺をerrＭ'に置き換えた式によって、残偏差成分errＭ’を算出する。
【０４０８】
なお、式１３の右辺における縦ベクトル(f_i  R_i  ΔIN_n)Tの成分ｆ_i，Ｒ_i，ΔIN_nを、それぞれｆ_lim_i，Ｒ_lim_i，ΔIN_lim_nに置き換えた式によって、これらのｆ_lim_i，Ｒ_lim_i，ΔIN_lim_nに起因してモーメント基準点周りに発生するモーメントを算出し、このモーメントを、モーメント偏差errＭから差し引くことによって、残偏差成分errＭ'を算出するようにしてもよい。
【０４０９】
次いで、外力目標生成部２７は、図１８のＳ１３９からの処理を実行する。この場合、Ｓ１３９からＳ１４３までの処理は、第２実施形態におけるＳ７３からＳ７７までの処理と同じである。
【０４１０】
そして、Ｓ１４３の判断結果が肯定的である場合には、外力目標生成部２７は、外力目標Ｓ１４５の処理を実行し、今回時刻での処理を終了する。このＳ１４５の処理では、外力目標生成部２７は、第２実施形態におけるＳ７９と同様の処理によって、今回時刻での各接触対象面からロボット１の目標外力と目標外力作用点とを確定する。
【０４１１】
具体的には、外力目標生成部２７は、Ｓ１５までの処理で決定した各仮想面における仮想面必要並進力（Ｎ_i，Ｆ_i）と、Ｓ１３５までの処理で決定した内力制限修正量ΔIN_lim_nと仮想面摩擦力成分制限修正量ｆ_lim_iとから、今回時刻での各仮想面における仮想面必要並進力を確定する。この場合、対向仮想面Ｓna，Ｓnbについては、Ｓ１５までの処理で決定した仮想面垂直抗力成分Ｎ_na，Ｎ_nbの大きさをΔIN_lim_nにより変化させてなる垂直抗力成分が、該対向仮想面Ｓna，Ｓnbにおける仮想面垂直抗力成分として確定されると共に、その他の各仮想面については、Ｓ１５までの処理で決定した仮想面垂直抗力成分Ｎ_iが、そのまま該仮想面における仮想面垂直抗力成分として確定される。また、いずれの仮想面についても、Ｓ１５までの処理で決定した仮想面摩擦力成分Ｆ_iに仮想面摩擦力成分制限修正量ｆ_lim_iを加え合わせてなる摩擦力成分が、該仮想面における仮想面摩擦力成分として確定される。
【０４１２】
また、外力目標生成部２７は、Ｓ１３５の処理で決定した仮想面制限ねじり力Ｒ_lim_iを、このＲ_lim_iに対応する仮想面における仮想面ねじり力として確定する。
【０４１３】
そして、外力目標生成部２７は、以上の如く確定した各仮想面における仮想面必要並進力と仮想面ねじり力とを、Ｓ７９と同様の処理によって、該仮想面に対応する接触対象面からロボット１に作用させる並進力及びねじり力にそれぞれ変換することによって、目標外力の構成要素である目標並進力と目標ねじり力とを決定する。
【０４１４】
また、外力目標生成部２７は、Ｓ１４１で決定した仮想面上外力作用点修正量Δrpc_iによる修正後の各仮想面上の外力作用点を該仮想面に対応する接触対象面上に逆投影してなる点を、該接触対象面上の目標外力作用点として決定する。
【０４１５】
また、Ｓ１４３の判断結果が否定的となる場合には、外力目標生成部２７は、Ｓ１４７の処理を実行した後、図７のＳ１３からの処理を改めて実行する。この場合、Ｓ１４７では、外力目標生成部２７は、対向仮想面Ｓna，Ｓnbにおける仮想面垂直抗力成分Ｎ_na，Ｎ_nbの大きさの増加量ＩＮ_n（詳しくは、Ｓ１５までの処理で決定された仮想面垂直抗力成分Ｎ_na，Ｎ_nbからの増加量）を決定する。この場合、本実施形態では、Ｓ８３で決定する増加量ＩＮ_nは、あらかじめ定められた所定値に設定される。
【０４１６】
なお、このようにＳ１３からの処理を改めて実行する場合には、Ｓ２１の処理の次に、Ｓ１２１の判断処理を行うことなく（あるいは、Ｓ１２１の判断結果に依存することなく）、Ｓ６１からの処理を実行するようにしてもよい。
【０４１７】
以上が、本実施形態における外力目標生成部２７の処理の詳細である。
【０４１８】
以上説明した外力目標生成部２７の処理によって、まず、Ｓ０５〜Ｓ１５の処理によって、第１実施形態と同様に、ロボット１の目標運動のうちの、ロボット１全体の並進運動を実現するために必要な仮想面必要並進力（Ｎ_i，Ｆ_i）が暫定的に決定される。このため、ロボット１全体の並進運動を実現し得る仮想面必要並進力（Ｎ_i，Ｆ_i）の暫定値を簡素なアルゴリズムによって効率よく決定することができる。
【０４１９】
また、第１実施形態と同様に、Ｓ０７、Ｓ０９の判断結果がいずれも否定的となる場合、あるいは、Ｓ０７、Ｓ０９、Ｓ１５の判断結果がそれぞれ、否定的、肯定的、否定的となる場合に、基本歩容要素生成部２５で生成された目標運動が不適切であると評価され、外力目標生成部２７の処理が中止される。このため、第１実施形態と同様に、目標運動のうちのロボット１全体の並進運動を実現するために、接触対象面とロボット１との間の摩擦力が過大になりやすい目標運動、あるいは、ロボット１の内力が過大になりやすい目標運動を、簡素なアルゴリズムで効率よく不適切であると評価することができる。ひいては、目標歩容を生成するために、無駄な演算処理を実行することとなるのを抑制することができる。
【０４２０】
そして、本実施形態では、このようにロボット１全体の並進運動を実現し得る仮想面必要並進力（Ｎ_i，Ｆ_i）の暫定値を決定した上で、Ｓ１９、Ｓ２１、Ｓ６１〜Ｓ７５の処理（Ｓ６７の処理を除く）、又はＳ１９、Ｓ２１、Ｓ１２３〜Ｓ１４１（Ｓ１３３の処理を除く）によって、ロボット１全体の回転運動（モーメント基準点周りの角運動量の変化を生じる回転運動）を実現するための付加的な操作量（モーメント補償量）として、前記仮想面摩擦力成分修正量ｆ_iと仮想面ねじり力Ｒ_iとの組、あるいは、ｆ_iとＲ_limiと内力修正量ΔIN_nとの組、あるいは、ｆ_lim_iとＲ_lim_iとΔｒpc_iと内力制限修正量ΔIN_lim_nとの組が決定される。
【０４２１】
このため、第１実施形態の場合と同様に、Ｓ０５〜Ｓ１５の処理によって決定した仮想面必要並進力（Ｎ_i，Ｆ_i）の暫定値と、Ｓ１９、Ｓ２１、Ｓ６１〜Ｓ７５の処理（Ｓ６７の処理を除く）、又はＳ１９、Ｓ２１、Ｓ１２３〜Ｓ１４１（Ｓ１３３の処理を除く）によって決定したモーメント補償量とを単純に組合わせるだけで、ロボット１全体の並進運動と回転運動との両方を適切に実現できる仮想面上必要並進力と仮想面上ねじり力と仮想面上外力作用点との組（仮想面上ねじり力が“０”になる場合を含む）を決定することができることとなる。そして、この仮想面上必要並進力と仮想面上ねじり力と仮想面上外力作用点との組から、各接触対象面からロボット１に作用させるべき目標外力（目標並進力及び目標ねじり力）と目標外力作用点とを効率よく適切に決定できることとなる。
【０４２２】
また、図７に示したＳ０９及びＳ１５、並びにＳ８１のいずれかの判断結果が否定的となる場合（目標運動が不適切である場合）を除いて、第１実施形態と同様に、今回時刻での各接触対象面に対応する各仮想面における最終的な仮想面必要並進力（仮想面垂直抗力成分Ｎ_iと仮想面摩擦力成分Ｆ_iとの組）は、結果的に、前記第１Ａ必要条件、第１Ｂ必要条件、第２必要条件及び第３必要条件を満足するように決定される。
【０４２３】
そして、各仮想面に対応する接触対象面における並進外力の目標値（目標並進力）は、その垂直抗力成分（接触対象面に垂直な成分）と摩擦力成分（接触対象面に平行な成分）とが、それぞれ、該仮想面における仮想面垂直抗力成分Ｎ_iと仮想面摩擦力成分Ｆ_iとに一致するように決定される。
【０４２４】
このため、第１実施形態と同様に、各接触対象面からロボット１への目標並進力は、可能な限り、各接触対象面における目標並進力のうちの垂直抗力成分の合力によって前記必要総並進外力を実現すると共に、該目標並進力のうちの摩擦力成分を、該接触対象面で発生可能な摩擦力の大きさの限界内で可能な限り小さくなるように、各接触対象面からロボットへの目標並進力を決定できる。
【０４２５】
また、Ｓ０１で設定される仮想面が対向仮想面Ｓna，Ｓnbを含む場合において、目標運動が不適切であると判断される場合と除いて、対向仮想面Ｓna，Ｓnbの間でロボット１に発生する内力の大きさ（Ｎ_na，Ｎ_nbの大きさのうちの小さい方の大きさ）が前記内力上限値ＩＦＣ_n以下に収まるように（前記第３必要条件を満足するように）、仮想面垂直抗力成分が決定される。このため、ロボット１の関節アクチュエータ１１が発生可能な動力（本実施形態では駆動トルク）のうち、内力を発生するために必要な負担分が過大にならないように、対向仮想面Ｓna，Ｓnbに対応する２つの接触対象面を含む各接触対象面における目標並進力を決定できる。
【０４２６】
ここで、以上説明した本実施形態と本願発明との対応関係を補足しておく。本実施形態ででは、Ｓ０５〜Ｓ１５、Ｓ１９、Ｓ２１、Ｓ６１〜Ｓ８３、Ｓ１２３〜Ｓ１４７の処理によって、本発明における仮想面必要並進力決定手段が実現される。また、Ｓ６７、Ｓ７９、Ｓ１３３及びＳ１４５の処理によって、本発明における接触対象面目標並進力決定手段が実現される。これら以外の対応関係は、第１実施形態と同じである。
【０４２７】
なお、以上説明した各実施形態では、前記壁登り歩容のように、ロボット１の外界（動作環境）に互いに間隔を存して対向する接触対象面ＷＬ１，ＷＬ２が存在する場合を想定して説明したが、本発明は、互いに間隔を存して対向する接触対象面が存在しない動作環境でロボットを運動を行なわせるための目標歩容を生成する場合にも適用できる。例えば、互いに交差する３つの接触対象面、あるいは２つの接触対象面にロボットの複数の部位を接触させながら、ロボットの運動を行なわせるための目標歩容を生成する場合にも本発明を適用できる。
【０４２８】
前記壁登り歩容以外の目標歩容の例を図１９及び図２０に示す。
【０４２９】
図１９（ａ）〜（ｅ）は、例えば互いに交差する２つの接触対象面として、床面ＦＬと壁面ＷＬ１とが存在する動作環境で、ロボット１の運動を行なわせるための一例の目標歩容における該ロボット１の瞬時的な動作状態を時系列順に示している。
【０４３０】
この目標歩容におけるロボット１の運動は、次のような形態の運動である。すなわち、図１９（ａ）に示すようにロボット１が２つのリンク機構５ａ，５ｂを床面ＦＬに接地させて起立した状態から、図１９（ｂ）に示すように、リンク機構５ｃ，５ｄを壁面ＷＬ１に接触させる。そして、この状態で、基体３を壁面ＷＬ１に近づけて、図１９（ｃ）に示す如く、該基体３を壁面ＷＬ１に寄り掛からせるように接触させる。その後、図１９（ｄ）に示すように、リンク機構５ｃ，５ｄにより壁面ＷＬ１を押すことによって、基体３を壁面ＷＬ１から離反させ、最終的に、図１９（ｅ）に示す如く、リンク機構５ｃ，５ｄを壁面ＷＬ１から離反させる。
【０４３１】
また、図２０（ａ）〜（ｄ）は、例えば互いに交差する３つの接触対象面として、床面ＦＬと２つの壁面ＷＬ１，ＷＬ３とが存在する動作環境（例えば屋内の部屋の隅部）で、ロボット１の運動を行なわせるための一例の目標歩容における該ロボット１の瞬時的な動作状態を時系列順に示している。なお、図２０（ａ）〜（ｄ）は、ロボット１と動作環境とを上方から見た平面視で示している。そして、図２０（ａ）〜（ｄ）の各図では、ロボット１はリンク機構５ａ，５ｄ（図示省略）を床面ＦＬに接地させて起立している。
【０４３２】
この目標歩容におけるロボット１の運動は、次のような形態の運動である。すなわち、図２０（ａ）に示すようにロボット１が床面ＦＬ上に接地させて起立した状態から、図２０（ｂ）に示すように、リンク機構５ｃ，５ｄをそれぞれ壁面ＷＬ１，ＷＬ３に接触させる。そして、この状態で、基体３を壁面ＷＬ３に近づけて、図２０（ｃ）に示す如く、該基体３を壁面ＷＬ３に寄り掛からせるように接触させる。その後、リンク機構５ｃ，５ｄによりそれぞれ壁面ＷＬ１，ＷＬ２を押すことによって、図２０（ｄ）に示すように、基体３とリンク機構５ｃとを壁面ＷＬ１から離反させると共に、リンク機構５ｄを壁面ＷＬ３から離反させる。
【０４３３】
図１９又は図２０に示したような目標歩容を生成する場合においても、前記した各実施形態における外力目標生成部２７の処理によって、ロボット１に各接触対象面ＦＬ，ＷＬ１から作用させるべき目標外力と目標外力作用点とを適切に決定できる。
【０４３４】
なお、この場合、図１９に示した目標歩容の生成処理において、前記Ｓ０１の処理で設定される仮想面は、図１９（ａ），（ｅ）に示す動作状態では、１つの仮想面（図示例では仮想面Ｓ3a）であり、図１９（ｂ）〜（ｄ）に示す動作状態では、２つの仮想面（図示例では仮想面Ｓ2a，Ｓ3a）である。
【０４３５】
また、図２０に示した目標歩容の生成処理において、前記Ｓ０１の処理で設定される仮想面は、図２０（ａ），（ｄ）に示す動作状態では、１つの仮想面（図示例では仮想面Ｓ3a）であり、図２０（ｂ），（ｃ）に示す動作状態では、３つの仮想面（図示例では仮想面Ｓ1a，Ｓ2a，Ｓ3a）である。
【０４３６】
なお、図１９又は図２０に例示した場合のように、ロボット１の動作環境に対向仮想面Ｓna，Ｓnbに対応する接触対象面が存在しない場合には、図７のＳ０９、図９のＳ４３、図１５のＳ８１、図１６のＳ１０１、図１７のＳ１２１の判断処理の判断結果が常に否定的となる。従って、これらの判断結果が肯定的となる場合に専用的な処理は不要である。
【０４３７】
また、前記各実施形態では、ロボット１に搭載した制御ユニット２１で目標歩容を生成する場合を例に採って説明したが、本実施形態における目標歩容の生成処理（歩容生成部２３の処理）は、ロボット１の実際の動作時に行なう必要はない。従って、歩容生成部２３の処理は、ロボット１の外部の適宜のコンピュータによって随時行なうようにしてもよい。
【符号の説明】
【０４３８】
１…脚式移動ロボット、２３…歩容生成部（歩容生成装置）、２５…基本歩容要素生成部（目標運動生成手段）、Ｓ０１…仮想面群設定手段、Ｓ０３…必要総並進外力決定手段、Ｓ０５〜Ｓ１５，Ｓ１９〜Ｓ４５，Ｓ６１〜Ｓ８３，Ｓ１０３〜Ｓ１１５，Ｓ１２３〜Ｓ１４７…仮想面必要並進力決定手段、Ｓ２９，Ｓ４１，Ｓ６７，Ｓ７９，Ｓ１１１，Ｓ１３３，Ｓ１４５…接触対象面目標並進力決定手段、ＦＬ，ＷＬ１，ＷＬ２…接触対象面、Ｓ1a，Ｓ2a，Ｓ3a，Ｓ1b，Ｓ2b，Ｓ3b…仮想面。
【図１】
0005398587.tif 000002
【図２】
0005398587.tif 000003
【図３】
0005398587.tif 000004
【図４】
0005398587.tif 000005
【図５】
0005398587.tif 000006
【図６】
0005398587.tif 000007
【図７】
0005398587.tif 000008
【図８】
0005398587.tif 000009
【図９】
0005398587.tif 000010
【図１０】
0005398587.tif 000011
【図１１】
0005398587.tif 000012
【図１２】
0005398587.tif 000013
【図１３】
0005398587.tif 000014
【図１４】
0005398587.tif 000015
【図１５】
0005398587.tif 000016
【図１６】
0005398587.tif 000017
【図１７】
0005398587.tif 000018
【図１８】
0005398587.tif 000019
【図１９】
0005398587.tif 000020
【図２０】
0005398587.tif 000021