かかる目的を達成するために、本発明の移動ロボットの歩容生成装置の第1発明は、
所定の期間における移動ロボットの歩容を規定する複数のパラメータの組である歩容パラメータを決定し、その決定した歩容パラメータと前記移動ロボットの動力学モデルとを用いて前記所定の期間における移動ロボットの目標歩容を生成する歩容生成装置において、
前記移動ロボットの運動と該ロボットに作用する床反力との関係を表す運動・床反力モデルを含むと共に、該運動・床反力モデルと、該運動・床反力モデルにおける移動ロボットの運動に対して付加される制約条件と、該運動・床反力モデルにおける床反力に対して付加される制約条件とのうちの少なくともいずれか一つが互いに異なるように構成されたn個(n:2以上の整数)の動力学モデルと、
前記複数のパラメータの仮値の組である第1歩容パラメータを、該第1歩容パラメータと前記n個の動力学モデルのうちの所定の動力学モデルである第1動力学モデルとを用いて生成される前記所定の期間における歩容が所定の境界条件を満たすように決定する第1歩容パラメータ決定手段と、
前記n個の動力学モデルのうちの前記第1動力学モデルを除くn−1個の動力学モデルのそれぞれを第m動力学モデル(m:2≦m≦nを満たす整数)としたとき、第m−1歩容パラメータのうちの所定の修正対象パラメータを修正してなる歩容パラメータである第m歩容パラメータを、第m動力学モデルを用いて第2歩容パラメータから第n歩容パラメータまで順番に決定する歩容パラメータ修正手段とを備えると共に、
前記第m動力学モデルは、第m−1動力学モデルよりも動力学的精度が高くなるように構成された動力学モデルであり、
前記歩容パラメータ修正手段は、前記第m歩容パラメータをそれぞれ決定するとき、第m−1歩容パラメータと第m動力学モデルとを用いて前記所定の期間における歩容を生成し、少なくともその生成した歩容の前記所定の境界条件からのずれ度合いである修正前ずれ度合いを基に、第m歩容パラメータと第m動力学モデルとを用いて生成される前記所定の期間における歩容の前記所定の境界条件からのずれ度合いである修正後ずれ度合いが前記修正前ずれ度合いよりも小さくなり、または、該修正後ずれ度合いが所定のずれ度合い許容範囲に収まるように前記第m−1歩容パラメータのうちの前記修正対象パラメータを修正することにより前記第m歩容パラメータを決定する手段であり、
前記決定された第n歩容パラメータと第n動力学モデルとを用いて、前記所定の期間における目標歩容を生成するようにしたことを特徴とするものである。
なお、この第1発明を含めて本願発明においては、目標歩容は、ロボットの運動(各部位の位置・姿勢、あるいは各関節の変位量)の目標瞬時値の時系列から構成され、あるいは、該運動の目標瞬時値の時系列とロボットに作用する床反力(並進力、モーメント、作用点の少なくともひとつ)の目標瞬時値の時系列とから構成される。また、ロボットの動力学モデルは、少なくともロボットの運動とロボットに作用する床反力との関係を表す運動・床反力モデル(ロボットの動力学方程式)を含むモデルである。この動力学モデルには、ロボットの運動に関する制約条件(ロボットのある部位の可動範囲など)あるいは床反力に関する制約条件(床反力の所定成分の許容範囲、あるいは該床反力の作用点の存在許容範囲など)が付加されていてもよく、その場合、それらの制約条件と上記運動・床反力モデルとを合わせたものが動力学モデルである。また、歩容パラメータと動力学モデルとを用いて歩容を生成するということは、歩容パラメータを基に、動力学モデルに対する入力量あるいは動力学モデルの状態量を決定して、該動力学モデル上の動力学(運動・床反力モデルの関係、あるいはその関係と付加された制約条件)を満たす歩容を生成することを意味する。
前記第1発明によれば、第1歩容パラメータは、それと第1動力学モデルとを用いて前記所定の期間における歩容を生成したとき、その歩容が第1動力学モデル上で所定の境界条件を満足するように決定される。該境界条件は、例えば前記所定の期間の一端(始端または終端の時刻)における歩容(瞬時値)の所定の状態量(例えばロボットのある部位の位置、姿勢、もしくはその変化速度、あるいは、床反力)が所定の値に一致またはほぼ一致するというような条件である。そして、この第1歩容パラメータを起点として、第m−1歩容パラメータの修正対象パラメータを第m動力学モデルを用いて修正して、第m動力学モデル上で前記所定の境界条件を満足する歩容を生成し得る第m歩容パラメータ、あるいは、第m−1歩容パラメータよりも前記所定の境界条件に対する適合性がより高い歩容を第m動力学モデル上で生成し得る第m歩容パラメータを決定する処理が、前記歩容パラメータ修正手段により順次実行され、最終的に第n歩容パラメータが決定される。つまり、第1歩容パラメータが第1動力学モデルを除く各動力学モデルを用いて段階的に修正されていく。
従って、例えば任意のmに対して第m−1動力学モデルよりも第m動力学モデルの方がその動力学的精度が高いようにしておき、また、その動力学的精度の違いが極端に大きくならないようにしておくことで、最終的に第n歩容パラメータを決定したときに、動力学精度を高めつつ、所定の境界条件を適切に満足し得る歩容を第n動力学モデル上で生成することが可能な第n歩容パラメータを決定することが可能となる。なお、動力学モデルの動力学的精度は、該動力学モデル上でのロボットの運動と床反力の関係の、実際のロボットの運動と床反力との関係に対する一致度合いを意味し、動力学的精度が高いほど、その一致度合いが高まる。
ここで、第m歩容パラメータは、第m−1歩容パラメータと第m動力学モデルとを用いて生成した歩容の前記所定の境界条件からのずれ度合い(修正前ずれ度合い)を基に、換言すれば、第m動力学モデル上で第m−1歩容パラメータの前記所定の境界条件に対する適合度合いを基に、該第m−1歩容パラメータの修正対象パラメータを修正することによって決定される。そして、その修正は、それにより決定される第m歩容パラメータと第m動力学モデルとを用いて歩容を生成したときに、その歩容の前記所定の境界条件からのずれ度合い(修正後ずれ度合い)が第m−1歩容パラメータに対応する修正前ずれ度合いよりも小さくなり、または、該修正後ずれ度合いが所定のずれ度合い許容範囲に収まるように決定される。
この場合、第m−1歩容パラメータは、第m−1動力学モデル上で前記所定の境界条件を満たす歩容パラメータ、もしくはそれに近い歩容パラメータであるから、前記の如く、第m動力学モデルの動力学的精度を第m−1動力学モデルの動力学的精度よりも若干高いものにしておくことで、前記修正前ずれ度合いを基に、第m動力学モデル上で適正な第m歩容パラメータ(所定の境界条件を満たすかもしくは該境界条件に対する適合性の高い第m歩容パラメータ)を決定し得る修正対象パラメータの修正量を容易に予測することができる。従って、最終的な第n動力学モデルの動力学的精度を比較的高いものとしても、第n動力学モデル上で適正な第n歩容パラメータを、該第n歩容パラメータに対応する歩容の発散などを生じることなく、第1歩容パラメータから段階的に効率よく決定することができる。そして、第1発明では、最終的に決定された第n歩容パラメータと第n動力学モデルとを用いて、前記所定の期間における目標歩容が生成されるので、該目標歩容は、第n動力学モデル上で前記所定の境界条件を十分に満たし得る歩容となる。
従って、第1発明によれば、目標歩容の発散を防止しつつ、所要の境界条件を高い動力学的精度で満足し得る目標歩容を効率よく生成することが可能となる。また、発散しない、あるいは発散し難い目標歩容を生成できることから、発散を防止するために目標歩容のうちの目標ZMPや目標床反力モーメントなどを大きく修正したりする必要がなくなり、移動ロボットの安定余裕を高めることができる。
また、本発明の移動ロボットの歩容生成装置の第2発明は、前記の目的を達成するために、
所定の期間における移動ロボットの目標歩容を生成するとき、該目標歩容に続く仮想的な周期的歩容である定常歩容を規定する複数のパラメータの組である定常歩容パラメータを決定すると共に、その決定した定常歩容パラメータと前記移動ロボットのあらかじめ定めた動力学モデルとを用いて生成される定常歩容に前記目標歩容を近づけるように該目標歩容を生成する移動ロボットの歩容生成装置において、
前記移動ロボットの運動と該ロボットに作用する床反力との関係を表す運動・床反力モデルを含むと共に、該運動・床反力モデルと、該運動・床反力モデルにおける移動ロボットの運動に対して付加される制約条件と、該運動・床反力モデルにおける床反力に対して付加される制約条件とのうちの少なくともいずれか一つが互いに異なるように構成されたn個(n:2以上の整数)の動力学モデルと、
前記複数のパラメータの仮値の組である第1定常歩容パラメータを、該第1定常歩容パラメータと前記n個の動力学モデルのうちの所定の動力学モデルである第1動力学モデルとを用いて生成される定常歩容が所定の境界条件を満たすように決定する第1定常歩容パラメータ決定手段と、
前記n個の動力学モデルのうちの前記第1動力学モデルを除くn−1個の動力学モデルのそれぞれを第m動力学モデル(m:2≦m≦nを満たす整数)としたとき、第m−1定常歩容パラメータのうちの所定の修正対象パラメータを修正してなる定常歩容パラメータである第m定常歩容パラメータを、第m動力学モデルを用いて第2定常歩容パラメータから第n定常歩容パラメータまで順番に決定する定常歩容パラメータ修正手段とを備えると共に、
前記第m動力学モデルは、第m−1動力学モデルよりも動力学的精度が高くなるように構成された動力学モデルであり、
前記定常歩容パラメータ修正手段は、前記第m定常歩容パラメータを決定するとき、第m−1定常歩容パラメータと第m動力学モデルとを用いて少なくとも前記定常歩容の1周期の期間の歩容を生成し、少なくともその生成した歩容の前記所定の境界条件からのずれ度合いである修正前ずれ度合いを基に、第m定常歩容パラメータと第m動力学モデルとを用いて生成される歩容の前記所定の境界条件からのずれ度合いである修正後ずれ度合いが前記修正前ずれ度合いよりも小さくなり、または、該修正後ずれ度合いが所定のずれ度合い許容範囲に収まるように前記第m−1定常歩容パラメータのうちの前記修正対象パラメータを修正することにより前記第m定常歩容パラメータを決定する手段であり、
前記決定された第n定常歩容パラメータと第n動力学モデルとを用いて生成される定常歩容に近づけるように前記所定の期間における目標歩容を生成するようにしたことを特徴とするものである。
この第2発明によれば、第1定常歩容パラメータは、それと第1動力学モデルとを用いて前記定常歩容を生成したとき、その定常歩容が第1動力学モデル上で所定の境界条件を満足するように決定される。該境界条件は、例えば定常歩容の1周期の期間の両端(該期間の始端および終端)における該歩容の所定の状態量(ロボットのある部位の位置、姿勢、もしくはその変化速度、あるいは、床反力)が互いに一致するというような条件である。そして、この第1定常歩容パラメータを起点として、第m−1定常歩容パラメータの修正対象パラメータを第m動力学モデルを用いて修正して、第m動力学モデル上で前記所定の境界条件を満足する定常歩容を生成し得る第m定常歩容パラメータ、あるいは、第m−1定常歩容パラメータよりも前記所定の境界条件に対する適合性がより高い定常歩容を第m動力学モデル上で生成し得る第m定常歩容パラメータを決定する処理が、前記定常歩容パラメータ修正手段により順次実行され、最終的に第n定常歩容パラメータが決定される。つまり、第1定常歩容パラメータが第1動力学モデルを除く各動力学モデルを用いて段階的に修正されていく。
従って、第1発明の場合と同様に、例えば任意のmに対して第m−1動力学モデルよりも第m動力学モデルの方がその動力学的精度が高いようにしておき、また、その動力学的精度の違いが極端に大きくならないようにしておくことで、最終的に第n定常歩容パラメータを決定したときに、動力学精度を高めつつ、所定の境界条件を適切に満足し得る定常歩容を第n動力学モデル上で生成することが可能な第n定常歩容パラメータを決定することが可能となる。
ここで、第m定常歩容パラメータは、第m−1定常歩容パラメータと第m動力学モデルとを用いて生成した定常歩容(少なくとも1周期の期間の定常歩容)の前記所定の境界条件からのずれ度合い(修正前ずれ度合い)を基に、換言すれば、第m動力学モデル上で第m−1定常歩容パラメータの前記所定の境界条件に対する適合度合いを基に、該第m−1定常歩容パラメータの修正対象パラメータを修正することによって決定される。そして、その修正は、それにより決定される第m定常歩容パラメータと第m動力学モデルとを用いて歩容を生成したときに、その定常歩容の前記所定の境界条件からのずれ度合い(修正後ずれ度合い)が第m−1定常歩容パラメータに対応する修正前ずれ度合いよりも小さくなり、または、該修正後ずれ度合いが所定のずれ度合い許容範囲に収まるように決定される。
この場合、第m−1定常歩容パラメータは、第m−1動力学モデル上で前記所定の境界条件を満たす定常歩容パラメータ、もしくはそれに近い定常歩容パラメータであるから、前記の如く、第m動力学モデルの動力学的精度を第m−1動力学モデルの動力学的精度よりも若干高いものにしておくことで、前記修正前ずれ度合いを基に、第m動力学モデル上で適正な第m定常歩容パラメータ(所定の境界条件を満たすかもしくは該境界条件に対する適合性の高い第m定常歩容パラメータ)を決定し得る修正対象パラメータの修正量を容易に予測することができる。従って、最終的な第n動力学モデルの動力学的精度を比較的高いものとしても、第n動力学モデル上で適正な第n定常歩容パラメータを、その第n定常歩容パラメータに対応する定常歩容の発散などを生じることなく、第1定常歩容パラメータから段階的に効率よく決定することができる。
その結果、第2発明によれば、定常歩容が所要の境界条件を高い動力学的精度で満足し得る定常歩容の歩容パラメータ(定常歩容パラメータ)を効率よく決定することが可能となる。そして、第2発明では、最終的に決定された第n定常歩容パラメータと第n動力学モデルとを用いて生成される定常歩容に近づけるように、前記所定の期間における目標歩容が生成されるので、該目標歩容は、第n動力学モデル上でロボットの継続的な安定性を適切に高め得る歩容となるので、該目標歩容の発散を防止することができる。また、発散しない、あるいはし難い目標歩容を生成できることから、発散を防止するために目標歩容のうちの目標ZMPや目標床反力モーメントなどを大きく修正したりする必要がなくなり、移動ロボットの安定余裕を高めることができる。
なお、第1発明と第2発明とは複合させてもよい。すなわち、第1発明において、所定の期間における目標歩容を第2発明における定常歩容に近づけるように生成し、このとき、その定常歩容を規定する定常歩容パラータを第2発明の如く決定する。この場合、第1発明において第nまでの歩容パラメータを決定するためのn個の動力学モデルと、第2発明において第nまでの定常歩容パラメータを決定するためのn個の動力学モデルとは、同じ動力学モデルでよい。但し、同じである必要はなく歩容パラメータを決定する場合と、定常歩容パラメータを決定する場合とで、互いに異なる(あるいは一部の動力学モデルのみが異なる)複数の動力学モデルを使用してもよい。さらには、両者の場合において使用する動力学モデルの個数が互いに相違してもよい。
前記第1発明では、前記n個の動力学モデルは、任意の歩容パラメータと前記第m−1動力学モデルとを用いて生成される歩容の前記所定の境界条件からのずれ度合いと、該歩容パラメータのうちの前記修正対象パラメータとの間の線形性が、該歩容パラメータと前記第m動力学モデルとを用いて生成される歩容の前記所定の境界条件からのずれ度合いと、該歩容パラメータのうちの前記修正対象パラメータとの間の線形性よりも高くなるように構成されていることが好ましい(第3発明)。
同様に、第2発明にあっては、前記n個の動力学モデルは、任意の定常歩容パラメータと前記第m−1動力学モデルとを用いて生成される定常歩容の前記所定の境界条件からのずれ度合いと、該定常歩容パラメータのうちの前記修正対象パラメータとの間の線形性が、該定常歩容パラメータと前記第m動力学モデルとを用いて生成される定常歩容の前記所定の境界条件からのずれ度合いと、該歩容パラメータのうちの前記修正対象パラメータとの間の線形性よりも高くなるように構成されていることが好ましい(第4発明)。
前記第3発明によれば、前記所定の境界条件からのずれ度合いと、前記歩容パラメータのうちの修正対象パラメータとの間の線形性が第m動力学モデルよりも第m−1動力学モデルの方が高いので、特に各番数の歩容パラメータの修正対象パラメータを探索的に決定する場合に、歩容番数の低い動力学モデルを用いた歩容パラメータの決定を効率よく短時間で行なうことが可能となる。これは、探索処理の際の修正対象パラメータの初期値が本来の適正値から比較的大きくずれていても、適正値を容易に探索できるからである。この場合、番数の高い動力学モデル(これを例えば第ma動力学モデルとする)は、線形性が低くなるものの、その一つ前の番数の動力学モデルである第ma−1動力学モデルを用いて、適切な第ma歩容パラメータに近い第ma−1歩容パラメータが決定されているので、その第ma−1歩容パラメータを探索処理の初期値とすることで、第ma歩容パラメータもさほど時間を要したりすることなく決定できる。ひいては、第n歩容パラメータまでの決定処理を短時間で効率よく行なうことができる。同様に、第4発明によれば、第n定常歩容パラメータまでの決定処理を短時間で効率よく行なうことができる。
また、前記第1発明においては、前記n個の動力学モデルは、任意の歩容パラメータと前記第m−1動力学モデルとを用いてコンピュータにより前記所定の期間における歩容を生成するときの演算時間が、該歩容パラメータと前記第m動力学モデルとを用いて前記コンピュータにより前記所定の期間における歩容を生成するときの演算時間より短くなるように構成されていることが好ましい(第5発明)。
同様に、第2発明においては、前記n個の動力学モデルは、任意の定常歩容パラメータと前記第m−1動力学モデルとを用いてコンピュータにより前記定常歩容の1周期の期間の歩容を生成するときの演算時間が、該歩容パラメータと前記第m動力学モデルとを用いて前記コンピュータにより前記定常歩容の1周期の期間の歩容を生成するときの演算時間よりも短くなるように構成されていることが好ましい(第6発明)。
前記第5発明によれば、特に各番数の歩容パラメータの修正対象パラメータを探索的に決定する場合に、番数の低い動力学モデルを用いた歩容パラメータの決定を短時間で行なうことが可能となる。これは、探索処理において、実際に歩容を生成する処理を短時間で行なうことができるからである。そして、番数の高い動力学モデル(例えば第ma動力学モデルとする)は、歩容を生成するのに要する時間が長くなるものの、その一つ前の番数の動力学モデルである第ma−1動力学モデルを用いて、適切な第ma歩容パラメータまたは第maに近い第ma−1歩容パラメータが決定されているので、その第ma−1歩容パラメータを探索処理の初期値とすることで、第ma歩容パラメータもさほど時間を要したりすることなく決定できる。ひいては、第n歩容パラメータまでの決定処理を短時間で効率よく行なうことができる。同様に、第6発明によれば、第n歩容パラメータまでの決定処理を短時間で効率よく行なうことができる。
また、前記第1発明または第2発明において、前記移動ロボットが脚式移動ロボットである場合には、前記n個の動力学モデルのうちの少なくとも第1動力学モデルと第2動力学モデルとは、第1動力学モデルにおける移動ロボットの全体質量に対する該ロボットの脚体の質量の比が、前記第2動力学モデルにおける移動ロボットの全体質量に対する該ロボットの脚体の質量の比よりも小さくなるように構成されていることが好ましい(第7発明)。
この第7発明によれば、少なくとも第1動力学モデルは第2動力学モデルよりも線形性が高まるので、特に第1動力学モデルを用いて前記第1歩容パラメータあるいは第1定常歩容パラメータを探索的に決定する場合に、第1動力学モデル上で境界条件を満たす前記所定期間における歩容または定常歩容に対応する歩容パラメータまたは定常歩容パラメータを効率よく短時間で決定することができる。
前記第1発明または第2発明では、n個の動力学モデルは、基本的にはその運動・床反力モデルの構造(構成要素の質点数やイナーシャなど)あるいは動力学方程式(運動方程式)が互いに異なるものであればよいが、必ずしも、運動・床反力モデルが互いに異なることは必須ではない。
例えば、第1発明において、前記n個の動力学モデルのうちの第n動力学モデルを除く一つの所定の動力学モデルを第k動力学モデル(k:1≦k≦n−1を満たすいずれかの整数)としたとき、少なくとも該第k動力学モデルと第k+1動力学モデルとは、それぞれ、該動力学モデルと任意の歩容パラメータを用いて生成される歩容における移動ロボットの運動および床反力のうちの少なくともいずれか一方がそれぞれの動力学モデルに対して設定された所定の許容範囲に収まることを前記制約条件として付加される動力学モデルであり、前記第k+1動力学モデルで用いる前記許容範囲は、前記第k動力学モデルで用いる前記許容範囲よりも狭い範囲に設定されるようにしてもよい(第8発明)。
同様に、第2発明において、前記n個の動力学モデルのうちの第n動力学モデルを除く一つの所定の動力学モデルを第k動力学モデル(k:1≦k≦n−1を満たすいずれかの整数)としたとき、少なくとも該第k動力学モデルと第k+1動力学モデルとは、それぞれ、該動力学モデルと任意の定常歩容パラメータを用いて生成される定常歩容における移動ロボットの運動および床反力のうちの少なくともいずれか一方がそれぞれの動力学モデルに対して設定された所定の許容範囲に収まることを前記制約条件として付加される動力学モデルであり、前記第k+1動力学モデルで用いる前記許容範囲は、前記第k動力学モデルで用いる前記許容範囲よりも狭い許容範囲に設定されるようにしてもよい(第9発明)。
このようにした場合、動力学的精度は、第k動力学モデルよりも第k+1動力学モデルの方が高めることが可能であるが、第k動力学モデルの方が第k+1動力学モデルよりも線形性を高めることができる。従って、第k動力学モデルを用いた第k歩容パラメータまたは第k定常歩容パラメータの決定を迅速に行いつつ、第k+1動力学モデルを用いて動力学的精度の高い歩容を生成し得る第k+1歩容パラメータまたは第k+1定常歩容パラメータを決定できる。
また、前記第1発明または第2発明において、前記n個の動力学モデルは、必ずしも互いに独立した構造を持つものである必要はなく、例えば2つの互いに異なる運動・床反力モデルを合成することで、複数の動力学モデルを構成するようにしてもよい。具体的には、前記移動ロボットの運動と床反力との関係を表すものとしてあらかじめ定めた運動・床反力モデルを第A運動・床反力モデルとし、前記移動ロボットの運動と床反力との関係を表すものとしてあらかじめ定められ、且つ該ロボットの所定の運動に対応して発生する床反力が前記第A運動・床反力モデルと異なるように前記関係が構成された運動・床反力モデルを第B運動・床反力モデルとし、前記n個の動力学モデルのうちの第n動力学モデルを除く一つの所定の動力学モデルを第k動力学モデル(k:1≦k≦n−1を満たすいずれかの整数)としたとき、前記第k動力学モデルを、前記移動ロボットの任意の運動に対応して該第k動力学モデル上で発生する床反力が、該運動に対応して前記第A運動・床反力モデル上で発生する床反力と、該運動に対応して前記第B運動・床反力モデル上で発生する床反力とから所定の重みを用いて算出される重み付き平均値となる動力学モデルとし、第k+1動力学モデルを、前記移動ロボットの任意の運動に対応して該第k動力学モデル上で発生する床反力が、該運動に対応して前記第A運動・床反力モデル上で発生する床反力と、該運動に対応して前記第B運動・床反力モデル上で発生する床反力とから前記第k動力学モデルと異なる所定の重みを用いて算出される重み付き平均値となる動力学モデルとする(第10発明)。
このようにすることで、運動と床反力との関係(すなわち運動・床反力モデル)が互いに相違する第k動力学モデルと第k+1動力学モデルとを第A運動・床反力モデルおよび第B運動・床反力モデルから合成的に構成することができる。なお、例えば第A運動・床反力モデルの動力学的精度が第B運動・床反力モデルの動力学的精度よりも高いとした場合、第k+1動力学モデルは、第k動力学モデルよりも、所定の運動に対する床反力が第A運動・床反力モデルにより近いものとなることが望ましい。また、第1発明または第2発明における動力学モデルの総数nが3以上である場合には、第k動力学モデルと第k+1動力学モデル以外の全ての動力学モデルあるいは複数の動力学モデルを第k動力学モデル、第k+1動力学モデルと同様に、第A運動・床反力モデルおよび第B運動床反力モデルの床反力の重み付き平均値が前記所定の運動に対応して発生するように構成してもよい。この場合、それらの動力学モデル(第k動力学モデル、第k+1動力学モデルを含む)に対応する重みは、互いに異なる重みに設定される。
また、前記第1発明においては、前記歩容パラメータは、前記所定の期間における歩容のうちの目標ZMP軌道を規定するパラメータを前記修正対象パラメータとして含むことが好ましい(第11発明)。
この第11発明によれば、目標ZMP軌道をロボットの安定余裕を確保するために好適な軌道から大きく修正しないようにしつつ、第n動力学モデル上で境界条件を満足し得る目標歩容を生成することが可能となる。
また、前記第2発明においては、前記定常歩容パラメータは、前記定常歩容の1周期の期間の一端における移動ロボットの運動の所定の状態量を規定するパラメータを前記修正対象パラメータとして含むことが好ましい(第12発明)。
この第12発明によれば、第m動力学モデル上で定常歩容の境界条件が満たされる定常歩容パラメータ、あるいはそれに近い定常歩容パラメータを、定常歩容の1周期の期間の一端における移動ロボットの運動の所定の状態量を調整することで決定することとなるので、安定余裕の高い定常歩容を規定する定常歩容パラメータを決定できる。なお、定常歩容は、周期的な歩容であるので、その1周期の一端におけるロボットの運動の所定の状態量を調整することは、1周期の他端におけるロボットの運動の所定の状態量を調整することを意味する。
また、前記第1発明において、前記所定の境界条件は、前記所定の期間における歩容の境界における移動ロボットの運動の所定の状態量が前記境界において隣接する歩容における移動ロボットの運動の該所定の状態量と一致するという条件を含む(第13発明)。
すなわち、目標歩容は、連続している必要があるので、前記所定の期間における目標歩容を生成するとき、該所定の期間における歩容の境界(該所定の期間の始端または終端における歩容)で、移動ロボットの歩容の運動の所定の状態量(例えばある移動ロボットのある部位の位置、姿勢、もしくはその変化速度)が該歩容に隣接する歩容における当該運動の所定の状態量と一致することが望ましい。
また、第1発明において、前記所定の期間における目標歩容に続く仮想的な周期的歩容である定常歩容(あるいはこれを規定する定常歩容パラメータ)を決定した上で、この目標歩容に近づけるように目標歩容を生成する場合には、前記所定の境界条件は、前記所定の期間における歩容の終端側の境界における移動ロボットの運動の所定の状態量が該歩容に続くべき仮想的な周期的歩容として決定された定常歩容における移動ロボットの運動の該所定の状態量と一致するという条件を含むことが好ましい(第14発明)。
このように前記目標歩容に対応する境界条件を定めることで、目標歩容の終端側(前記所定の期間の終端側)で定常歩容に近づけるような目標歩容を第n動力学モデル上で生成し得る第n歩容パラメータを効率よく生成できる。なお、第14発明において、定常歩容は、必ずしもそれを規定する定常歩容パラメータを第2発明の如く複数の動力学モデルを用いて段階的に決定する必要はないが、第2発明の如く決定するようにしてもよい。
また、前記第2発明においては、前記所定の境界条件は、前記定常歩容の1周期の始端と終端における移動ロボットの運動の所定の状態量が一致するという条件を含むことが好ましい(第15発明)。
定常歩容は、周期的な歩容であるので、上記のように境界条件を定めることで、周期性の条件を満たす定常歩容を生成し得る定常歩容パラメータを適切に決定できる。なお、この第15発明における定常歩容の1周期の始端は必ずしも、前記目標歩容の終端と一致する必要はない。
前記第12〜第15発明では、特に前記移動ロボットが、上体から延設された複数の脚体を備えた脚式移動ロボットである場合には、前記所定の状態量は、該ロボットの上体の位置、該上体の速度、該上体の姿勢角、該上体の姿勢角の角速度、該上体の位置と速度との重み付き平均値、該ロボットの全体重心の位置、該全体重心の速度、該全体重心の位置と速度との重み付き平均値、および発散成分のうちの少なくともいずれか一つを含むことが好ましい(第16発明)。
これによれば、第12発明にあっては、第m定常歩容パラメータを決定するときの修正対象パラメータを少なくしつつ、定常歩容の境界条件を満たすような第m定常歩容パラメータを効率よく決定できる。また、特に第14発明にあっては、前記所定の期間における目標歩容を定常歩容に近づけるための第m歩容パラメータを、修正対象パラメータを少なくしつつ効率よく決定できる。なお、第14発明では、特に、前記所定の状態量としては、上体の位置と速度との重み付き平均値、あるいは全体重心の位置と速度との重み付き平均値、あるいは発散成分が好適である。
また、前記第1発明においては、前記歩容パラメータ修正手段は、前記第m歩容パラメータをそれぞれ決定するとき、第m−1歩容パラメータと第m動力学モデルとを用いて前記所定の期間における歩容を生成すると共に、前記第m−1歩容パラメータのうちの前記修正対象パラメータを所定量だけ修正してなる少なくとも一組の補助歩容パラメータを決定して、その決定した各組の補助歩容パラメータと前記第m動力学モデルとを用いて前記所定の期間における歩容を生成し、前記第m−1歩容パラメータを用いて生成した歩容の前記所定の境界条件からのずれ度合いである修正前ずれ度合いと、前記各組の補助歩容パラメータを用いて生成した歩容の前記所定の境界条件からのずれ度合いである補助ずれ度合いとを基に、前記第m−1歩容パラメータのうちの前記修正対象パラメータを修正量を決定して、該修正対象パラメータを修正することにより前記第m歩容パラメータを決定する手段であることが好ましい(第17発明)。
同様に第2発明においては、前記定常歩容パラメータ修正手段は、前記第m定常歩容パラメータをそれぞれ決定するとき、第m−1定常歩容パラメータと第m動力学モデルとを用いて少なくとも前記定常歩容の1周期の期間の歩容を生成すると共に、前記第m−1歩容パラメータのうちの前記修正対象パラメータを所定量だけ修正してなる少なくとも一組の補助定常歩容パラメータを決定して、その決定した各組の補助定常歩容パラメータと前記第m動力学モデルとを用いて少なくとも前記定常歩容の1周期の期間の歩容を生成し、前記第m−1定常歩容パラメータを用いて生成した歩容の前記所定の境界条件からのずれ度合いである修正前ずれ度合いと、前記各組の補助定常歩容パラメータを用いて生成した歩容の前記所定の境界条件からのずれ度合いである補助ずれ度合いとを基に、前記第m−1定常歩容パラメータのうちの前記修正対象パラメータを修正量を決定して、該修正対象パラメータを修正することにより前記第m定常歩容パラメータを決定する手段であることが好ましい(第18発明)。
前記第17発明においては、前記第m歩容パラメータをそれぞれ決定するとき、第m−1歩容パラメータと第m動力学モデルとを用いて前記所定の期間における歩容を生成すると共に、前記第m−1歩容パラメータのうちの前記修正対象パラメータを所定量だけ修正してなる少なくとも一組の補助歩容パラメータを決定して、その決定した各組の補助歩容パラメータと前記第m動力学モデルとを用いて前記所定の期間における歩容を生成するので、第m−1歩容パラメータのうちの修正対象パラメータを修正したときに、どのように第m動力学モデル上で生成される歩容が変化するかを観測することができ、ひいては第m動力学モデル上で境界条件を満たす第m歩容パラメータ、あるいはそれに近い第m歩容パラメータの修正対象パラメータの修正量の予測がつきやすくなる。従って、前記第m−1歩容パラメータを用いて生成した歩容の境界条件からのずれ度合いである修正前ずれ度合いと、前記各組の補助歩容パラメータを用いて生成した歩容の境界条件からのずれ度合いである補助ずれ度合いとを基に、前記第m−1歩容パラメータのうちの修正対象パラメータの適切な修正量を容易に決定して、適切な第m歩容パラメータを効率よく探索することが容易になる。
同様に第18発明においても、前記第m−1定常歩容パラメータのうちの修正対象パラメータの適切な修正量を容易に決定して、適切な第m定常歩容パラメータを効率よく探索することが容易になる。
以下、添付図面を参照して本発明の実施形態を説明する。尚、本明細書の実施形態では、移動ロボットとしては脚式移動ロボットとしての2足移動ロボットを例にとる。
図1は、本発明の実施形態を適用する2足移動ロボットの全体的構成の概略を示す概略図である。
図示の如く、2足移動ロボット(以下、ロボットという)1は上体(ロボット1の基体)3から下方に延設された左右一対の脚体(脚部リンク)2,2を備える。両脚体2,2は同一構造であり、それぞれ6個の関節を備える。その6個の関節は上体3側から順に、股(腰部)の回旋(回転)用(上体3に対するヨー方向の回転用)の関節10R,10Lと、股(腰部)のロール方向(X軸まわり)の回転用の関節12R,12Lと、股(腰部)のピッチ方向(Y軸まわり)の回転用の関節14R,14L、膝部のピッチ方向の回転用の関節16R,16Lと、足首のピッチ方向の回転用の関節18R,18Lと、足首のロール方向の回転用の関節20R,20Lとから構成される。なお、本明細書において、符号R,Lはそれぞれロボット1の右側、左側に対応するものであることを意味する符号である。
各脚体2の足首の2つの関節18R(L),20R(L)の下部には、各脚体2の先端部を構成する足平(足部)22R(L)が取着されると共に、両脚体2,2の最上位には、各脚体2の股の3つの関節10R(L),12R(L),14R(L)を介して前記上体3が取り付けられている。上体3の内部には、詳細を後述する制御ユニット60などが格納される。なお、図1では図示の便宜上、制御ユニット60を上体3の外部に記載している。
上記構成の各脚体2においては、股関節(あるいは腰関節)は関節10R(L),12R(L),14R(L)から構成され、膝関節は関節16R(L)から構成され、足首関節は関節18R(L),20R(L)から構成される。また股関節と膝関節とは大腿リンク24R(L)で連結され、膝関節と足首関節とは下腿リンク26R(L)で連結される。
上体3の上部の両側部には左右一対の腕体5,5が取り付けられると共に、上体3の上端部には頭部4が配置される。各腕体5は、3つの関節30R(L),32R(L),34R(L)から構成された肩関節と、関節36R(L)から構成された肘関節と、関節38R(L)から構成された手首関節と、この手首関節に連結された手先部40R(L)とを備えている。肩関節と肘関節との間、および肘関節と手首関節との間はそれぞれ剛体状のリンクで構成されている。
上記のロボット1の構成により、各脚体2の足平22R(L)は、上体3に対して6つの自由度を与えられている。そして、ロボット1の歩行等の移動中に、両脚体2,2を合わせて6*2=12個(この明細書で「*」はスカラに対する演算としては乗算を、ベクトルに対する演算としては外積を示す)の関節を適宜な角度で駆動することで、両足平22R,22Lの所望の運動を行うことができる。これにより、ロボット1は任意に3次元空間を移動することができる。また、各腕体5は、その肩関節、肘関節、手首関節の回転によって、腕振り等の運動を行うことができる。
図1に示す如く、各脚体2の足首関節18R(L),20R(L)の下方には足平22R(L)との間に公知の6軸力センサ50が介装されている。該6軸力センサ50は、各脚体2の足平22R(L)の着地の有無、および各脚体2に作用する床反力(接地荷重)等を検出するためのものであり、該床反力の並進力の3方向成分Fx,Fy,Fz並びにモーメントの3方向成分Mx,My,Mzの検出信号を制御ユニット60に出力する。また、上体3には、Z軸(鉛直方向(重力方向))に対する上体3の傾斜角(姿勢角)およびその角速度を検出するための姿勢センサ54が備えられ、その検出信号が該姿勢センサ54から制御ユニット60に出力される。この姿勢センサ54は、図示を省略する加速度センサおよびジャイロセンサを備え、これらのセンサの検出信号が上体3の傾斜角およびその角速度を検出するために用いられる。また、詳細構造の図示は省略するが、ロボット1の各関節には、それを駆動するための電動モータ64(図3参照)と、その電動モータ64の回転量(各関節の回転角)を検出するためのエンコーダ(ロータリエンコーダ)65(図3参照)とが設けられ、該エンコーダ65の検出信号が該エンコーダ65から制御ユニット60に出力される。
さらに、図1では図示を省略するが、ロボット1の外部には、ロボット1を操縦するためのジョイスティック(操作器)73(図3参照)が設けられ、そのジョイスティック73を操作することで、直進移動しているロボット1を旋回させるなどロボット1の移動方向を指定する、ロボット1の歩行、走行などの運動形態および床面の摩擦状態(路面状態)を指定するなど、ロボット1の歩容に対する要求もしくは制約条件を必要に応じて制御ユニット60に入力できるように構成されている。ジョイスティック73は有線もしくは無線により制御ユニット60との通信が可能とされている。
図2は本実施形態における各脚体2の先端部分(各足平22R(L)を含む)の基本構成を概略的に示す図である。同図に示すように、各足平22R(L)の上方には、前記6軸力センサ50との間にばね機構70が装備されると共に、足底(各足平22R,Lの底面)にはゴムなどからなる足底弾性体71が貼られている。これらのばね機構70及び足底弾性体71によりコンプライアンス機構72が構成されている。詳細な図示は省略するが、ばね機構70は、足平22R(L)の上面部に取り付けられた方形状のガイド部材(図示省略)と、足首関節18R(L)(図2では足首関節20R(L)を省略している)および6軸力センサ50側に取り付けられ、前記ガイド部材に弾性材(ゴムやばね)を介して微動自在に収納されるピストン状部材(図示省略)とから構成されている。
図2に実線で表示された足平22R(L)は、床反力を受けていないときの状態を示している。各脚体2が床反力を受けると、コンプライアンス機構72のばね機構70と足底弾性体71とがたわみ、足平22R(L)は図中に点線で例示したような位置姿勢に移る。このコンプラインアス機構72の構造は、着地衝撃を緩和するためだけでなく、制御性を高めるためにも重要なものである。その詳細は、例えば本出願人が先に提案した特開平5−305584号公報に詳細に説明されているので、本明細書でのさらなる説明は省略する。
図3は制御ユニット60の構成を示すブロック図である。該制御ユニット60はマイクロコンピュータにより構成されており、CPUからなる第1の演算装置90及び第2の演算装置92、A/D変換器80、カウンタ86、D/A変換器96、RAM84、ROM94、並びにこれらの間のデータ授受を行うバスライン82を備えている。この制御ユニット60では、各脚体2の6軸力センサ50、姿勢センサ54(加速度センサおよびレートジャイロセンサ)、ジョイスティック73等の出力信号はA/D変換器80でデジタル値に変換された後、バスライン82を介してRAM84に送られる。またロボット1の各関節のエンコーダ65(ロータリーエンコーダ)の出力は、カウンタ86を介してRAM84に入力される。
前記第1の演算装置90は後述の如く目標歩容を生成すると共に、関節角変位指令(各関節の変位角もしくは各電動モータ64の回転角の指令値)を算出し、RAM84に送出する。また、第2の演算装置92はRAM84から関節角変位指令と、前記エンコーダ65の出力信号に基づいて検出された関節角の実測値とを読み出し、各関節の駆動に必要な操作量を算出して、その操作量をD/A変換器96とサーボアンプ64aとを介して各関節を駆動する電動モータ64に出力する。
図4は、本明細書の実施形態におけるロボット1の制御ユニット60の主な機能的構成を示すブロック図である。この図4中の「実ロボット」の部分以外の部分が制御ユニット60が実行する処理機能(主として第1の演算装置90及び第2の演算装置92の機能)によって構成されるものである。その処理機能は、制御ユニット60に実装されたプログラム等によって実現されている。尚、以下の説明では、ロボット1の各部(脚体2、腕体5など)の左右を特に区別する必要がないときは、前記符号R,Lを省略する。
以下説明すると、制御ユニット60は、後述の如く目標歩容を自在かつリアルタイムに生成して出力する歩容生成装置100を備えている。この歩容生成装置100は、その機能によって本発明の実施形態を実現するものである。この歩容生成装置100が出力する目標歩容は、補正目標上体姿勢軌道(上体3の目標姿勢の軌道)、補正目標上体位置軌道(上体3の目標位置の軌道)、目標足平位置姿勢軌道(各足平22の目標位置及び目標姿勢の軌道)、目標腕姿勢軌道(各腕体の目標姿勢の軌道)、目標ZMP(目標全床反力中心点)軌道、目標ZMPまわりの補正目標床反力モーメント軌道および目標全床反力軌道から構成される。尚、脚体2や腕体5以外に、上体3に対して可動な部位(頭部など)を備える場合には、その可動部位の目標位置姿勢軌道が目標歩容に加えられる。
ここで、本明細書での歩容に関する基本的な用語の定義などについて説明しておく。歩容における「軌道」は時間的変化のパターン(時系列パターン)を意味し、「軌道」の代わりに「パターン」と称することもある。また、「姿勢」は空間的な向きを意味する。例えば上体姿勢はZ軸(鉛直軸)に対するロール方向(X軸まわり)の上体3の傾斜角(姿勢角)とピッチ方向(Y軸まわり)の上体3の傾斜角(姿勢角)とで表され、足平姿勢は各足平22に固定的に設定された2軸の空間的な方位角で表される。本明細書では、上体姿勢は上体姿勢角もしくは上体傾斜角ということもある。なお、腕体5に関する目標腕姿勢は、本明細書の実施形態では上体3に対する相対姿勢で表される。
上体位置は、上体3のあらかじめ定めた代表点(上体3に対して任意に固定設定したローカル座標系でのある固定点)の位置を意味する。同様に、足平位置は、各足平22のあらかじめ定めた代表点(各足平22に対して任意に固定設定したローカル座標系での固定点)の位置を意味する。例えば各足平22の代表点は、各足平22の底面上(より具体的には各脚体2の足首関節の中心から各足平22の底面への垂線が該底面と交わる点等)に設定される。
上体3に関する前記補正目標上体姿勢および補正目標上体位置は、ある基本となる目標上体姿勢(仮目標上体姿勢)および目標上体位置(仮目標上体位置)を補正したものである。本明細書の実施形態では、基本となる目標上体位置姿勢は、後述するで決定される目標上体位置姿勢(後述の図12のS032で決定される目標上体位置姿勢)が相当する。
なお、以降の説明では、誤解を生じるおそれがない場合には、しばしば「目標」を省略する。
歩容のうちの、床反力に係わる構成要素以外の構成要素、すなわち足平位置姿勢、上体位置姿勢等、ロボット1の各部位の位置姿勢に関する構成要素を総称的に「運動」という。また、各足平22に作用する床反力(並進力及びモーメントからなる床反力)を「各足平床反力」と呼び、ロボット1の全て(2つ)の足平22R,22Lについての「各足平床反力」の合力を「全床反力」という。ただし、以下の説明においては、各足平床反力はほとんど言及しないので、特に断らない限り、「床反力」は「全床反力」と同義として扱う。
目標床反力は、一般的には、作用点とその点に作用する並進力及びモーメントによって表現される。作用点はどこにとっても良いので、同一の目標床反力でも無数の表現が考えられるが、特に目標床反力中心点(全床反力の中心点の目標位置)を作用点にして目標床反力を表現すると、目標床反力のモーメント成分は、鉛直成分(鉛直軸(Z軸)まわりのモーメント成分)を除いて零になる。換言すれば、目標床反力中心点まわりの目標床反力のモーメントの水平成分(水平軸(X軸及びY軸)まわりのモーメント)は零になる。
なお、動力学的平衡条件を満足する歩容では、ロボット1の目標運動軌道から算出されるZMP(目標運動軌道から算出される慣性力と重力との合力がその点まわりに作用するモーメントが、鉛直成分を除いて零になる点)と目標床反力中心点とは一致することから、目標床反力中心点軌道の代わりに目標ZMP軌道を与えると言っても同じことである。
ここで、ロボット1の歩行を行う場合には、例えば本出願人が先に特開平10−86080号公報で提案した上体高さ決定手法によってロボット1の上体3の鉛直位置(上体高さ)が決定されると、並進床反力鉛直成分は従属的に決定される。さらに、目標歩容の運動による慣性力と重力との合力が目標ZMPまわりに発生するモーメントの水平成分が0になるようにロボット1の上体水平位置軌道(あるいは全体重心の位置軌道)を決定することで、並進床反力水平成分も従属的に決定される。このため、ロボット1の歩行を行う場合には、目標歩容の床反力に関して明示的に設定すべき物理量としては、目標ZMPだけでもよい。
一方、床反力が0もしくはほぼ0になるような時期を伴う歩容でのロボット1の移動、例えばロボット1の走行を行う場合には、並進床反力鉛直成分もロボット1の動作制御上重要である。このため、並進床反力鉛直成分の目標軌道を明示的に設定した上で、ロボット1の目標上体鉛直位置等の軌道を決定することが望ましい。また、ロボット1の歩行においても、摩擦係数が低い床面上(低ミュー路上)でロボット1を移動させるような場合には、並進床反力鉛直成分(より厳密には並進床反力の床面に垂直な成分)が摩擦力に影響を及ぼすことから、ロボット1のスリップなどを防止する上で、並進床反力鉛直成分の目標軌道を明示的に設定することが望ましい。さらに、本発明の実施形態では、最終的に歩容生成装置100が出力する目標歩容では、目標ZMPまわりに補正目標床反力モーメント(水平成分が0とは限らないモーメント)を発生させる。
このようなことから、本明細書の実施形態では、歩容生成装置100が出力する目標歩容の床反力に関する構成要素として、目標ZMP軌道のほか、目標ZMPまわりの補正目標床反力モーメントと、目標並進床反力鉛直成分とを含ませている。
そして、本明細書では、歩容生成装置100が出力する目標歩容は、広義には、「1歩ないしは複数歩の期間の目標運動軌道と目標床反力軌道との組」の意味で使用され、狭義には、「1歩の期間の目標運動軌道と、目標ZMP、補正目標床反力モーメント及び目標並進床反力鉛直成分を含む目標床反力軌道との組」の意味で使用される。
但し、本明細書の実施形態においては、最終的な目標歩容(歩容生成装置100が出力する目標歩容)を決定するまでの過程で作成する目標歩容(仮目標歩容)では、目標ZMPまわりの目標床反力モーメントの水平成分は、本来の目標ZMPの定義どおりに0とされる。従って、最終的に決定する目標歩容以外の仮目標歩容では、上記狭義の目標歩容から、補正目標床反力モーメントを除いたものが目標歩容の意味で使用される。補足すると、本明細書の実施形態では、最終的な目標歩容(歩容生成装置100が出力する目標歩容)を決定するまでの過程で作成する目標歩容(仮目標歩容)が本発明に密接に関連するものとなっている。このため、以降の説明で現れる目標歩容の大部分は、前記狭義の目標歩容から、補正目標床反力モーメントを除いたもの(目標ZMPを満足する歩容)の意味で使用される。
なお、以降の説明では、「床反力鉛直成分」は「並進床反力鉛直成分」を意味するものとし、床反力のうちのモーメントの鉛直成分(鉛直軸回り成分)は、「モーメント」という用語を用いて「床反力鉛直成分」と区別をする。同様に、「床反力水平成分」は「並進床反力水平成分」を意味するものとする。
また、目標歩容の「1歩」は、ロボット1の片方の脚体2が着地してからもう一方の脚体2が着地するまでの意味で使用する。
また、歩容における両脚支持期とは、ロボット1がその自重を両脚体2,2で支持する期間、片脚支持期とはいずれか一方のみの脚体2でロボット1の自重を支持する期間、空中期とは両脚体2,2が床から離れている(空中に浮いている)期間を言う。片脚支持期においてロボット1の自重を支持しない側の脚体2を遊脚と呼ぶ。なお、片脚支持期と空中期とが交互に繰り返されるロボット1の走行歩容では両脚支持期は無い。この場合、空中期では両脚2,2とも、ロボット1の自重を支持しないこととなるが、便宜上、該空中期の直前の片脚支持期において遊脚であった脚体2、支持脚であった脚体2をそれぞれ該空中期においても遊脚、支持脚と呼ぶ。
また、目標歩容の軌道は、グローバル座標系(床に固定された座標系)で記述される。グローバル座標系としては、例えば支持脚足平22の着地位置姿勢に対応して定まる支持脚座標系が用いられる。この支持脚座標系は、例えば支持脚足平22の底面のほぼ全面を床に接地した状態で、その足平22が連結された足首関節の中心から床面に延ばした垂線が床と交わる点を原点とし、その原点を通る水平面に支持脚足平22を投影したときの該足平22の前後方向をX軸方向、左右方向をY軸方向とする座標系(Z軸方向は鉛直方向)である。以降の説明では、特にことわらない限り、X、Y、Z座標は、この支持脚座標系の座標を意味する。
図5は、歩容生成装置100の詳細を示すブロック図である。この図5を参照して、歩容生成装置100の処理のより具体的な概要を以下に説明する。
図示の如く、歩容生成装置100は歩容パラメータ決定部100aを備える。歩容パラメータ決定部100aは、目標歩容を規定する歩容パラメータの値あるいは時系列テーブルを決定する。この歩容パラメータ決定部100aは、本発明の中核に係わる処理を担うものである。
本明細書の実施形態では、歩容パラメータ決定部100aが決定する歩容パラメータには、目標歩容のうちの、目標足平位置姿勢軌道、目標腕姿勢軌道、目標ZMP軌道、および目標床反力鉛直成分軌道をそれぞれ規定するパラメータが含まれる。
ここで、歩容生成装置100が目標歩容を生成するとき、遊脚足平22の着地予定位置姿勢、着地予定時刻、あるいは歩幅、移動速度等の歩容生成用の基本的な要求値(要求パラメータ)が、前記ジョイスティック73、もしくは図示しない行動計画部(ロボット1の行動計画を作成する装置)などの装置から歩容生成装置100に与えられる。あるいは、上記要求パラメータをあらかじめ記憶保持した記憶媒体から該要求パラメータを歩容生成装置100が読み込む。そして、歩容生成装置100の歩容パラメータ決定部100aは、その要求パラメータに応じて歩容パラメータを決定する。
また、本明細書の実施形態では、歩容パラメータ決定部100aが決定する歩容パラメータには、基準上体姿勢軌道、ZMP許容範囲、床反力水平成分許容範囲をそれぞれ規定するパラメータも含まれる。
ここで、前記基準上体姿勢軌道は、最終的に歩容生成装置100が出力するものではないが、目標歩容を決定するときに参酌されるものである。この基準上体姿勢軌道は、ロボット1の上体姿勢に関して、前記ジョイスティック73あるいは行動計画部から与えられ、もしくはあらかじめ定められた要求(上体姿勢を鉛直姿勢に保つなどの要求)にそのまま従って生成される上体姿勢軌道である。目標上体姿勢(以降、「基準」が付いていない「上体姿勢」は、目標上体姿勢を表す)は、基準上体姿勢に長期的に追従するか、または一致するように生成される。
また、前記ZMP許容範囲に関して補足すると、本明細書の実施形態では、目標歩容は、目標ZMPのまわりに補正目標床反力モーメント(これは一般には0ではない)を発生するように修正される。したがって、目標ZMPは、本来の定義(床反力モーメント水平成分が0である点という定義)とは異なる点となり、本来の定義を満足するZMP(以下、真のZMPという)は、補正目標床反力モーメントを目標床反力鉛直成分で割った値だけ目標ZMPからずれた位置に移る。
修正された歩容(歩容生成装置100が最終的に出力する目標歩容)の真のZMPは、少なくともZMP存在可能範囲(いわゆる支持多角形のこと。床と足平22の底面との間に粘着力が作用しないと仮定した場合における床反力作用点(ZMP)の存在可能範囲)内になければならない。さらにロボット1の安定余裕を十分にとるためには、修正された歩容の真のZMPは、ZMP存在可能範囲のなかの中心付近の範囲にあることが望ましい。そこで、本明細書の実施形態では修正された歩容の真のZMPが存在できる許容範囲を設定する。この範囲をZMP許容範囲と呼ぶ。ZMP許容範囲は、ZMP存在可能範囲と一致あるいはZMP存在可能範囲内に包含されるように設定される。
なお、前記したように、目標ZMPまわりの補正目標床反力モーメントを目標床反力鉛直成分で除算したものが、目標ZMPに対する真のZMPの位置のずれ量を表すので、目標ZMPまわりの補正目標床反力モーメントを設定する代わりに、目標ZMPに対する真のZMPの位置のずれ量(補正目標床反力モーメントのZMP換算値)を設定してもよい。また、ZMP許容範囲は、その境界の位置に目標床反力鉛直成分を乗算することで、補正目標床反力モーメント許容範囲に変換することができ、その補正目標床反力モーメント許容範囲をZMP許容範囲の代わりに設定するようにしてもよい。
また、前記床反力水平成分許容範囲は、ロボット1の足平22の床との接地面に、足平22が滑らないような大きさの摩擦力を発生させ得る床反力水平成分の許容範囲である。本明細書の実施形態では、少なくとも最終的に歩容生成装置100が出力する目標歩容の運動(目標運動)は、それによって発生するロボット1の慣性力の水平成分に釣り合う床反力水平成分が床反力水平成分許容範囲内に収まるように生成される。
なお、本明細書の実施形態で設定する床反力水平成分許容範囲は、後述のS022の処理で設定される定常歩容用のものと、S026の処理で設定される基本歩容用のものと、S030で設定される歩容補正用(フルモデル補正用)のものとがある。ただし、これらの床反力水平成分許容範囲は必ずしも互いに異なる必要はなく、同一でもよい。一方、ZMP許容範囲は、S030処理で設定される歩容補正用(フルモデル補正用)のものだけである。
補足すると、目標歩容を生成するための歩容パラメータには、上記したパラメータ以外のパラメータも含まれる。それらは、歩容パラメータ決定部100aの中で、所要の境界条件を満たすように決定される。
歩容パラメータ決定部100aで決定された歩容パラメータは目標瞬時値発生部100bに入力される。目標瞬時値発生部100bは入力された歩容パラメータに基づき、動力学モデルを用いて目標上体位置姿勢、目標足平位置姿勢、目標ZMP、目標床反力鉛直成分、ZMP許容範囲、床反力水平成分許容範囲等、目標歩容の構成要素の瞬時値(前記制御ユニット60の所定の制御処理周期毎の値)を逐次算出(発生)する。なお、図5では一部の目標瞬時値のみを代表的に記載している。
目標瞬時値発生部100bで算出された目標瞬時値は、フルモデル補正部100cに入力される。このフルモデル補正部100cは、目標瞬時値発生部100bが求めた目標上体位置姿勢を、動力学的精度の高い動力学モデルとしてのフルモデルを用いて補正してなる補正目標上体位置姿勢を算出すると共に、目標ZMPまわりの床反力モーメント水平成分の目標値である補正目標床反力モーメントを算出する。
フルモデル補正部100cは、より一般的には、次のD1〜D3の条件を満足するように、E1あるいはE2の処理を実行する。すなわち、フルモデル補正部100cは、
D1)目標瞬時値発生部100bで生成した歩容よりも高い精度で動力学的平衡条件を満足する。
D2)真のZMP(目標ZMPのまわりに補正目標床反力モーメントを発生させることによって修正された本来の定義を満足するZMP)は、ZMP許容範囲(安定余裕が十分維持できる許容範囲)に存在する。
D3)床反力水平成分は床反力水平成分許容範囲内になる。
という条件を満足するように、
E1)目標瞬時値発生部100bで生成した歩容の上体位置姿勢を補正する。
あるいは
E2)目標瞬時値発生部100bで生成した歩容の上体位置姿勢を補正すると共に、目標ZMPまわりの補正目標床反力モーメントを出力する(目標床反力を補正する)。
本明細書の実施形態では、D1〜D3の条件を満足するように、E2の処理が実行される。なお、本明細書の実施形態におけるフルモデル補正部100cの処理は、例えば本願出願人が先に提案したPCT国際公開公報WO/03/057427/A1にて詳細に説明されているもの(具体的には、同公報の図13のS038の処理)と同じである。従って、本明細書でのフルモデル補正部100cの処理の詳細な説明は省略する。
また、本明細書の実施形態では、フルモデル補正部100cによる補正を行うが、その補正を省略し、目標瞬時値発生部100bで決定した目標歩容の瞬時値をそのまま歩容生成装置100から出力するようにしてもよい。
図4に戻って、上述のように決定される補正目標上体位置姿勢、目標ZMPまわりの補正目標床反力モーメント、目標足平位置姿勢の瞬時値を含む目標歩容の瞬時値は、複合コンプライアンス制御装置101(図4で破線で囲んだ部分)に入力される。この複合コンプライアンス制御装置101では、ロボット1のバランスを保ちつつ、目標歩容に追従するように関節アクチュエータ(電動モータ64)が制御される。なお、複合コンプライアンス制御装置101のより具体的な処理は後述する。
以上が歩容生成装置100の概要である。なお、以上説明した歩容生成装置100の概要は、本明細書のいずれの実施形態においても同じである。
次に、本発明の第1実施形態を具体的に説明していく。第1実施形態では、歩容パラメータ決定部100aによって、前記制御ユニット60の制御処理周期毎に、複数の動力学モデルを用いて、目標ZMP軌道(より正確には歩容パラメータのうちの目標ZMP軌道を規定するパラメータ)を修正するためのパラメータを段階的に決定したり、前記したパラメータ以外のパラメータを探索的に決定することにより、目標歩容を規定する一組の歩容パラメータを決定する。そして、その決定した歩容パラメータと1つの動力学モデルとを用いて目標瞬時値発生部100bにより目標歩容の瞬時値の時系列を決定する。
ここで、第1実施形態で歩容生成に用いられる上体運動モードと動力学モデルとについて説明する。
走行など、空中期がある歩容や、低摩擦床面での歩行においては、単に上体水平加速度を調整するだけでは、目標歩容の床反力水平成分が許容範囲内(あるいは摩擦限界内)に存在しつつ動力学的平衡条件を満足することができない場合がある。そこで、本実施形態では、以下に説明する上体3の2つの運動モード(上体並進モード及び上体回転モード)を複合的に発生させることにより、目標歩容の床反力水平成分が許容範囲内(あるいは摩擦限界内)に存在しつつ動力学的平衡条件を満足するようにしている。
図6(a)のように、ある運動状態から、上体水平加速度だけを摂動させると、全体重心水平加速度と全体重心まわりの角運動量が摂動する。すなわち、上体水平加速度の摂動は、それによって発生する慣性力と重力の合力に対して動力学的に釣り合う床反力鉛直成分を摂動させずに、目標ZMPまわりの床反力モーメント(ただし鉛直軸まわり成分を除く)と床反力水平成分(厳密には、並進床反力水平成分)とを摂動させる。この運動モードを上体並進モードと呼ぶ。
言いかえると、床反力鉛直成分を変化させずに、目標ZMPまわりの床反力モーメントの水平成分と床反力水平成分(並進床反力水平成分)を変化させる運動を上体並進モードと呼ぶ。
この時の単位加速度当たりの床反力モーメント成分の変化をΔMp、単位加速度当たりの床反力水平成分の変化をΔFpとする。図6(a)に示す状況で上体3を前方に水平加速すると、ΔMpとΔFpは図6(a)に示す矢印の向きに作用する。
感覚的に判り易くするために、運動によって発生する慣性力と重力の合力に釣り合う床反力を用いて表現したが、慣性力と重力の合力を用いて表現した方が、理論的には的確である。なお、上記合力と床反力は、互いに大きさが同じで向きが逆になっている。
一方、図6(b)のように、ある運動状態から、ある点Prまわりに上体姿勢角加速度を摂動させると、全体重心は摂動せずに、全体重心まわりの角運動量が摂動する。すなわち、点Prまわりの上体姿勢角加速度摂動は、床反力鉛直成分と床反力水平成分(厳密には、並進床反力鉛直成分と並進床反力水平成分)を摂動させずに、目標ZMPまわりの床反力モーメントの水平成分を摂動させる。この運動モードを上体回転モードと呼ぶ。
言いかえると、床反力鉛直成分と床反力水平成分を変化させずに、目標ZMPまわりの床反力モーメントの水平成分を変化させる運動を上体回転モードと呼ぶ。
この時の単位角加速度当たりの床反力モーメント成分の変化をΔMr、単位角加速度当たりの床反力の水平成分の変化をΔFrとする。ΔFrは零である。図6(b)に示す状況で上体が前傾するように角加速度を与えると、ΔMrは図6(b)に示す矢印の向きに作用する。
上体3の運動には、上体並進モードと上体回転モード以外に、上体鉛直移動モードがある。これは、上体3を鉛直方向に移動させる運動である。
第1実施形態においては、歩容生成装置100は、以下に示す複数の動力学モデルを用いて歩容を生成する。本実施形態では、その複数の動力学モデルとして、例えば第1〜第3の3個の動力学モデルが用いられる。
図7に第1動力学モデル(より正確には、第1動力学モデルのうちの、ロボット1の運動と床反力との関係を表す運動・床反力モデルの構造)の例を示す。この第1動力学モデルは、上体3に対応する上体質点を有する倒立振子と、各足平22に対応する足平質点とで構成されたモデルであり、上体質点の水平運動が前記上体並進モードに対応している。上体質点は、上体3に任意に固定設定されたローカル座標系において上体3の代表点と一定の位置関係を有する点である。同様に、各足平質点は、それに対応する足平22に任意に固定設定されたローカル座標系において該足平22の代表点と一定の位置関係を有する点である。この第1動力学モデルは、本願出願人が先に例えば特開2002−542574号公報もしくはPCT国際公開公報WO/02/040224に例示した動力学モデルである。従って、本明細書での詳細な説明は省略するが、第1動力学モデルの動力学(運動と床反力との関係)は、次のように変数を定義したとき、式1a〜1dにより表される。
msup1:支持脚足平質点の質量、mswg1:遊脚足平質点の質量、mb1:上体質点の質量、mtotal:ロボット1の全体質量(=msup1+mswg1+mb1)、mfeet:両脚質量(=msup1+mswg1)、xsup:支持脚足平質点の位置、xswg:遊脚足平質点の位置、xb:上体質点の位置、h:倒立振子の高さ(倒立振子の支点から上体質点までの高さ)、g:重力加速度定数、G:X、Y座標成分が0で、Z座標成分が−gである重力加速度ベクトル。なお、本明細書において、任意の変数Xに対してd2X/dt2は、Xの2階微分値を意味するものとする。
点Pまわりの脚総慣性力モーメント
=msup1*(xsup1−xp)*G−msup1*(xsup1−xp)*d2xsup1/dt2
+mswg1*(xswg1−xp)*G−mswg*(xswg1−xp)*d2xswg1/dt2 …式1a
点Pまわりの脚総慣性力モーメント=mfeet*(ZMPfeet−xp)*G …式1b
ZMPpend=mtotal/mb*目標ZMP−mfeet/mb*ZMPfeet …式1c
d2xb/dt2の水平成分=g/h*(xbの水平成分−ZMPpendの水平成分) …式1d
ここで、ZMPpendは上体質点のZMPであり、倒立振子の支点の位置である。また、ZMPfeetは両脚体2,2(両足平質点)の運動によって発生する慣性力と重力との合力(総慣性力)がある点Pのまわりに発生するモーメント(脚総慣性力モーメント)に擬似的に対応させたZMP(脚総慣性力モーメントのZMP換算値。以下、脚ZMPという)であり、その点Pの位置がxpである。この場合、点Pは、第1の動力学モデルの近似精度ができるだけ高くなるように設定される。補足すると、第1動力学モデルでは、全体質量mtotalに対する両脚質量mfeetの比率を0に近づけると、さらに線形性の高い単純倒立振子となる。
図8は第1動力学モデルを用いた上体位置姿勢の算出処理を示すブロック図である。第1動力学モデルでは、目標足平位置姿勢、目標ZMPおよび目標上体姿勢から、同図のブロック図に従って演算を行うことで目標上体位置姿勢が算出される。この場合、第1動力学モデルを用いた上体位置姿勢の算出処理では、上体姿勢は、基準上体姿勢と同一とされる。ここで、同ブロック図中の脚ZMP算出器200は、前記式1a、1bとを基にZMPfeetを算出するものであり、線形倒立振子201は、前記式1dを基に、d2xb/dt2の水平成分を求め、さらに、それを2階積分することで、上体質点の水平位置xbを求めるものである。また、上体位置姿勢決定器202は、目標上体姿勢と上体質点の水平位置xbとから目標上体位置姿勢を決定するものである。この場合、上体位置姿勢決定器202が出力する目標上体姿勢は、入力される目標上体姿勢(基準上体姿勢)と同一である。また、上体質点の鉛直位置(倒立振子の高さ)は、上体位置姿勢決定器202において、第1動力学モデルの全体重心の鉛直方向の慣性力と重力との合力が目標床反力鉛直成分に釣り合う(目標床反力鉛直成分の符号を反転させたものに等しくなる)ように決定される。
図9に、第2動力学モデル(より正確には、第2動力学モデルのうちの、ロボット1の運動と床反力との関係を表す運動・床反力モデルの構造)の例を示す。図示の如く、この第2動力学モデルはロボット1の各脚体2にそれぞれ対応する2つの質点(足平質点)2m,2m、及び上体3に対応する質点(上体質点)24mからなる合計3質点と、イナーシャがあって質量のないフライホイールFHとから構成されるモデルである。上体質点は、上体3に任意に固定設定されたローカル座標系において上体3の代表点と一定の位置関係を有する点である。同様に、各足平質点は、それに対応する足平22に任意に固定設定されたローカル座標系において該足平22の代表点と一定の位置関係を有する点である。この第2動力学モデルは、本願出願人が例えば先に提案したPCT国際公開公報WO/03/057427/A1に例示した動力学モデルである。従って、本明細書での詳細な説明は省略するが、第2動力学モデルの動力学は、次のように変数を定義したとき、式2a〜2cにより表される。なお、ここでは、本明細書の理解を容易にするために、サジタルプレーン(前後軸(X軸)と鉛直軸(Z軸)を含む平面)での動力学方程式(運動と床反力との関係を表す式)のみを記述し、ラテラルプレーン(左右軸(Y軸)と鉛直軸(Z軸)を含む平面)での動力学方程式を省略する。
Zsup2:支持脚質点鉛直位置、Zswg2:遊脚質点鉛直位置、Zb2:上体質点鉛直位置、ZGtotal2:全体重心鉛直位置、Xsup2:支持脚質点水平位置、Xswg2:遊脚質点水平位置、Xb2:上体質点水平位置、XGtotal2:全体重心水平位置、θby2:鉛直方向に対するY軸回りの上体姿勢角(傾斜角)、mb2:上体質点質量、msup2:支持脚質点質量、mswg2:遊脚質点質量、mtotal:ロボット総質量(=mb2+msup2+mswg2)、J:上体慣性モーメント(上体回転モードにおける等価慣性モーメント)、Fx:床反力水平成分(詳しくは並進床反力の前後方向(X軸)成分)、Fz:床反力鉛直成分(詳しくは並進床反力の鉛直方向(Z軸)成分)、My:目標ZMPまわりの床反力モーメント(詳しくは床反力モーメントの左右軸(Y軸)まわり成分)。
Fz=mb2*(g+d2Zb2/dt2)+msup2*(g+d2Zsup2/dt2)
+mswg2*(g+d2Zswg2/dt2) ……式2a
Fx=mb2*d2Xb/dt2+msup2*d2Xsup2/dt2+mswg2*d2Xswg2/dt2
……式2b
My=−mb2*(Xb2−Xzmp)+(g+d2Zb2/dt2)+mb2*(Zb2−Zzmp)*d2Xb2/dt2
−msup2*(Xsup2−Xzmp)*(g+d2Zsup2/dt2)
+msup2*(Zsup2−Zzmp)*d2Xsup2/dt2
−mswg2*(Xswg2−Xzmp)*(g+d2Zswg2/dt2)
+mswg2*(Zswg2−Zzmp)*(d2Xswg2/dt2)+J*d2θby/dt2
……式2c
なお、ロボット全体重心位置には次の関係式が成立する。
ZGtotal2=(mb2*Zb2+msup2*Zsup2+mswg2*Zswg2)/mtotal …式2d
XGtotal2=(mb2*Xb2+msup2*Xsup2+mswg2*Xswg2)/mtotal …式2e
この第2動力学モデルでは、脚体2,2の動力学(各質点2m,2mの動力学)と上体3の動力学(質点24m及びフライホイールFHの動力学)とが相互に非干渉に構成されると共に、ロボット1全体の動力学は、それらの線形結合で表される。また、さらに、上体3の運動と床反力との関係は、上体3の並進運動(上体並進モード)と床反力との関係、並びに上体3の回転運動(上体回転モード)と床反力との関係に分離される。具体的には、上体質点24mの水平運動によって発生する床反力は、上体3の水平方向並進運動(上体並進モード)によって発生する床反力に対応し、フライホイールの回転運動によって発生する床反力は、上体3の姿勢角の回転運動(上体回転モード)によって発生する床反力に対応する。
尚、ロボット1の腕体の質量は上体質点24mに含まれるものとし、上体質点24mは腕体の質量を含む質量をもつ。本実施形態では、目標歩容における腕体の運動(腕振り運動)は、後述するように、ロボット1の腕振り以外の運動によってロボット1に発生する鉛直軸まわりの慣性力のモーメントを打ち消しつつも、上体3に対する両腕体の全体の重心の相対位置が動かないように行なわれるので、腕体の腕振り運動による(鉛直軸まわり成分を除く)床反力モーメントへの影響と床反力水平成分への影響とは無視する。補足すると、第2動力学モデルの全体質量に対する両脚体2,2の質量(両足平質点の質量の和)の比率は、前記第1動力学モデルの全体質量に対する両脚体2,2の質量(両足平質点の質量の和)の比率よりも大きいものとなっている。
図10に第3動力学モデル(より正確には、第3動力学モデルのうちの、ロボット1の運動と床反力との関係を表す運動・床反力モデルの構造)を例示する。同図に示す如く、第3動力学モデルは、上体3、各足平22、各脚体2の膝関節の近傍部分(大腿リンクの膝関節寄りの部分)にそれぞれ対応する質点を有すると共に、上体3に上体質点の回りにイナーシャ(慣性モーメント)Ibをもつモデルである。この第3動力学モデルでは、動力学的方程式は省略するが、ロボット1の運動と床反力との関係は、前記第2動力学モデルと同様に、各質点の並進運動および上体3の姿勢変化運動と、床反力(並進床反力および目標ZMP回りの床反力モーメント)との関係として記述される。なお、ロボット1の上体3の位置姿勢と、両足平22の位置姿勢とが決定されると各脚体2の各部の位置姿勢は一義的に定まるので、第3動力学モデルにおいては、上体質点と各足平質点と各膝関節の近傍分の質点との間の位置関係には、所定の制約条件が付加されており、その制約条件の範囲内で、各質点の運動が可能とされている。
前記第1〜第3動力学モデルは、その順番で、動力学的な精度が高いものとなっている。また、本実施形態では、各動力学モデルには、後述するように、床反力水平成分に関する制約条件が付加され、その制約条件が満たされる範囲内で各動力学モデルの質点の運動が可能とされている。
なお、前記フルモデル補正部100cで用いるフルモデルは、例えば図11に示す如く、ロボット1の各リンクに質点をもつような多質点モデルである。この場合、ロボット1の各リンクは、それに対応する質点の回りにイナーシャをもつようなものであってもよい。
次に、本発明の第1実施形態に関して、歩容生成装置100の処理の詳細をより具体的に説明する。
本実施形態における歩容生成装置100は、ロボット1の片方の脚体2が着地してから他方の脚体2が着地するまでの1歩の期間の目標歩容(前記狭義の目標歩容)を単位として、その1歩の期間の目標歩容を順番に生成する。ここで、新たに生成しようとしている目標歩容を「今回歩容」、その次の目標歩容を「次回歩容」、さらにその次の目標歩容を「次次回歩容」、というように呼ぶ。また、「今回歩容」の一つ前に生成した目標歩容を「前回歩容」と呼ぶ。「今回歩容」は、本発明における「所定の期間における目標歩容」に相当するものである。
また、歩容生成装置100が今回歩容を新たに生成するとき、該歩容生成装置100には、ロボット1の2歩先までの遊脚側足平22の着地予定位置姿勢、着地予定時刻の要求値(要求)等が歩容に対する要求パラメータとして入力される(あるいは歩容生成装置100が記憶装置から要求パラメータを読み込む)。そして、歩容生成装置100は、これらの要求パラメータを基に、補正目標上体位置姿勢軌道、目標足平位置姿勢軌道、目標ZMP軌道、目標床反力鉛直成分軌道、目標腕姿勢軌道、補正目標床反力モーメント軌道等を生成する。なお、本実施形態では、要求パラメータには、2歩先までの遊脚側足平22の着地予定位置姿勢、着地予定時刻の要求値の他、基準上体姿勢に対する要求、上体姿勢に対する相対的な腕姿勢に対するの要求、目標床反力鉛直成分のパターンに対する要求、床の摩擦力(もしくは摩擦係数)に対する要求などを規定するパラメータも含まれる。基準上体姿勢に対する要求は、例えば上体姿勢を鉛直姿勢に維持するというような要求であり、腕姿勢に対する要求は、上体3に対して腕姿勢を所定の姿勢に維持するというような要求である。また、目標床反力鉛直成分のパターンに対する要求は、ロボット1の空中期では、目標床反力鉛直成分を0にし、また、片脚支持期では、目標床反力鉛直成分を台形状のパターンで変化させるというような要求である。また、床の摩擦力に対する要求は、目標床反力鉛直成分と摩擦係数(要求値)との積により定まる摩擦力限界に対して、どの程度の範囲内に目標床反力水平成分を収めるかというような要求である。
以下に歩容生成装置100の歩容生成処理の詳細を図12〜図27を参照しつつ説明する。図12は、その歩容生成装置100が実行する歩容生成処理のメインルーチンを示すフローチャート(構造化フローチャート)である。なお、このメインルーチン処理の手順自体は、その一部のサブルーチン処理を除いて、例えば本願出願人による前記PCT国際公開公報WO/03/057427/A1(以下、公報文献1という)と同じである。
まずS010において時刻tを0に初期化するなど種々の初期化作業が行なわれる。この処理は、歩容生成装置100の起動時等に行なわれる。次いで、S012を経てS014に進み、歩容生成装置100は、制御周期(図12のフローチャートの演算処理周期)毎のタイマ割り込みを待つ。制御周期はΔtである。
次いで、S016に進み、歩容の切り替わり目であるか否かが判断され、歩容の切り替わり目であるときはS018に進むと共に、切り替わり目でないときはS030に進む。ここで、上記「歩容の切り替わり目」は、前回歩容の生成が完了し、今回歩容の生成を開始するタイミングを意味し、例えば前回歩容の生成を完了した制御周期の次の制御周期が歩容の切り替わり目になる。
S018に進むときは時刻tが0に初期化され、次いでS020に進み、次回歩容支持脚座標系、次次回歩容支持脚座標系、今回歩容周期および次回歩容周期が読み込まれる。これらの支持脚座標系及び歩容周期は、前記要求パラメータにより定まるものである。すなわち、本実施形態では、歩容生成装置100にジョイスティック44等から与えらる要求パラメータは、2歩先までの遊脚足平22の着地予定位置姿勢(足平22が着地してから足底を床面にほぼ全面的に接触させるように、滑らさずに回転させた状態での足平位置姿勢)、着地予定時刻の要求値を含んでおり、その1歩目の要求値、2歩目の要求値がそれぞれ、今回歩容、次回歩容に対応するものとして、今回歩容の生成開始時(前記S016の歩容の切り替わり目)以前に歩容生成装置100に与えられたものである。なお、これらの要求値は今回歩容の生成途中でも変更することは可能である。
そして、上記要求パラメータにおける1歩目の遊脚足平22(今回歩容での遊脚足平22)の着地予定位置姿勢の要求値に対応して次回歩容支持脚座標系が定まる。また、2歩目の遊脚足平22の着地予定位置姿勢の要求値に応じて次々回歩容支持脚座標系が定まる。また、今回歩容周期は、今回歩容の支持脚足平22の着地予定時刻(要求値)から、1歩目(今回歩容)の遊脚足平22の着地予定時刻(要求値)までの時間として定まり、次回歩容周期は、1歩目の遊脚足平22の着地予定時刻(要求値)から2歩目の遊脚足平22の着地予定時刻(要求値)までの時間として定まる。
このS020の処理は、前記公報文献1の図13のS020の処理と同一であり、本明細書での説明は以上に留める。
次いでS022に進み、歩容生成装置100は、今回歩容に続く仮想的な周期的歩容としての定常歩容の歩容パラメータ(定常歩容パラメータ)を決定する。ここで決定する歩容パラメータとしては、定常歩容における各足平22の目標足平位置姿勢軌道を規定する足平軌道パラメータ、基準とする上体姿勢軌道を規定する基準上体姿勢軌道パラメータ、目標腕姿勢軌道を規定する腕姿勢軌道パラメータ、目標ZMP軌道を規定するZMP軌道パラメータ、目標床反力鉛直成分軌道を規定する床反力鉛直成分軌道パラメータと、目標床反力水平成分許容範囲を規定するパラメータとがある。
この明細書で「定常歩容」は、その歩容を繰り返したときに歩容の境界においてロボット1の運動状態(足平位置姿勢、上体位置姿勢等の状態)に不連続が生じないような周期的歩容を意味するものとして使用する。「定常歩容」は、ロボット1を直進させる周期的歩容を含むことはもちろん、ロボット1を旋回させる周期的歩容も含む。この場合、旋回率を零とするときは直進を意味することから、「旋回」には、広義の意味で直進も含まれる。このため、本明細書の実施形態では、「定常歩容」をしばしば「定常旋回歩容」と言うこともある。
定常旋回歩容の詳細は、前記公報文献1や特願2000−352011号などにて説明されているので、本明細書での詳細な説明は省略するが、その概要は次の通りである。
周期的歩容である定常旋回歩容は、本実施形態では、ロボット1の2歩分の歩容、すなわち今回歩容に続く第1旋回歩容と該第1旋回歩容に続く第2旋回歩容とからなる歩容を該定常旋回歩容の1周期分の歩容として、その1周期分の歩容を繰り返す歩容である。また、生成する今回歩容が例えばロボット1の走行を行う走行歩容(片脚支持期と空中期とを有する歩容)であるときには、定常旋回歩容の第1旋回歩容及び第2旋回歩容も走行歩容であり、ロボット1の歩行を行う歩行歩容(片脚支持期と両脚支持期とを有する歩容)であるときには、定常旋回歩容の第1旋回歩容及び第2旋回歩容も走行歩容である。つまり、第1旋回歩容及び第2旋回歩容の基本的な歩容形態は今回歩容と同一である。
なお、以降の説明では、特にことわらない限り、生成する歩容として走行歩容を例にとって説明する。
定常旋回歩容は、歩容生成装置100で今回歩容の終端における発散成分や上体鉛直位置速度、上体姿勢角及びその角速度等のロボット1の運動の状態量を決定するために暫定的に作成されるものであり、歩容生成装置100からそのまま出力されるものではない。
尚、「発散」とは、ロボット1の上体3の位置が両足平22,22の位置からかけ離れた位置にずれてしまうことを意味する。発散成分の値とは、ロボット1の上体3の位置が両足平22,22の位置(より具体的には、支持脚側足平22の接地面に設定されたグローバル座標系(支持脚座標系)の原点)からかけ離れていく具合を表す数値である。例えば、本明細書の実施形態では、前記した各動力学モデルに対して、発散成分は、次式により求められる。
発散成分=上体質点水平位置+上体質点水平速度/ω0 …式3
この式3のω0は所定の値である。なお、歩容における発散成分は、式3の上体質点水平位置、上体質点水平速度の代わりに、それぞれ上体水平位置、上体水平速度を用いて発散成分が求められる。
本明細書の実施形態では、目標歩容が前記発散を生じることなく、継続的に生成されるように、発散成分を指標にして歩容(今回歩容)を生成するようにした。すなわち、これから生成しようとする今回歩容の後に続く定常歩容(より正確には定常歩容パラメータ)が前記今回歩容に係わる要求パラメータ等に応じて決定され、定常歩容の初期発散成分を求めてから、今回歩容の終端発散成分を定常歩容の初期発散成分に一致させる(より一般的には、今回歩容を定常歩容に連続させ、もしくは近づける)ように、今回歩容を生成する。
本題に戻り、S022では、図13に示すサブルーチン処理のフローチャートに従って、定常歩容の歩容パラメータが決定される。すなわち、定常歩容に係る前記足平軌道パラメータ、基準上体姿勢軌道パラメータ、腕軌道パラメータ、ZMP軌道パラメータ、床反力鉛直成分軌道パラメータ、目標床反力水平成分許容範囲を規定するパラメータがそれぞれS100〜S110の処理で決定される。そして、S112において、定常歩容の初期時刻Tsと、1歩の期間(定常歩容の1周期の時間)Tcycとが再定義される。これらの処理は、前記公報文献1の図15のフローチャートの処理と同一であるので、ここでの詳細な説明は省略するが、S100〜S110で決定される定常歩容のパラメータは、そのそれぞれのパラメータにより規定される軌道が定常歩容の周期性を満たしつつ、前記した要求パラメータなどにより表される歩容に関する要求を満足するように決定されるパラメータである。例えば、前記公報文献1の図15のフローチャートに関して説明されている如く、定常歩容の足平軌道パラメータは、今回歩容に続く第1旋回歩容の遊脚足平22の着地予定位置姿勢(前記次回歩容支持脚座標系で見た着地予定位置姿勢)が前記した2歩目の着地予定位置姿勢(要求値)に合致し、且つ、該第2旋回歩容の遊脚足平22の着地予定位置姿勢(前記次次回歩容支持脚座標系で見た着地予定位置姿勢)が、今回歩容の遊脚足平22の着地予定位置姿勢(要求値)に合致するように決定される。なお、ZMP軌道パラメータは、足平軌道パラメータを基に、目標ZMPが支持脚足平22の接地面のほぼ中央付近に位置し、且つ、定常歩容の全期間にわたって連続的に変化するように決定される。
また、図13のS112で再定義する定常歩容の初期時刻Tsは、定常歩容の1周期分の歩容を後述するように作成するときの始点の時刻(これは本実施形態では今回歩容の終端の時刻とは相違する)を意味し、第1旋回歩容の空中期(目標床反力鉛直成分が0となる時期)の開始直前の時刻である。また、定常歩容の1歩の期間Tcycは、定常歩容の第1旋回歩容と第2旋回歩容との合計時間の期間である。定常歩容は、その周期性によって、任意の時刻Txにおける状態(ロボット1の各部位の位置姿勢やその変化速度の状態)は時刻Tx+Tcycにおける状態と同一になる歩容である。定常歩容は、2歩分の歩容を1周期とする周期的な歩容であるので、本明細書では、その1周期の期間(第1旋回歩容と第2旋回歩容)との合計時間を定常歩容の1歩の期間とみなす。
補足すると、S100〜S110の処理で決定される定常歩容のパラメータは、定常歩容パラメータを構成する全てのパラメータではない。本実施形態では、定常歩容を規定する歩容パラメータ(定常歩容パラメータ)は、S022で決定するパラメータの他に、定常歩容の1周期の期間の始端(該期間の開始時刻)あるいは終端(該期間の終了時刻)における上体3の位置および速度、並びに上体3の姿勢角およびその角速度と、後述の上体傾斜復元モーメントZMP換算値のピーク値とが含まれる。これらのパラメータのうち、上体3の水平位置および水平速度、上体3の姿勢角の角速度、上体傾斜復元モーメントZMP換算値のピーク値は、後述のS024の処理で探索的に決定される。定常歩容パラメータは、それを構成する各パラメータの値と、前記した各動力学モデルとを用いて定常歩容を一義的に生成することができる歩容パラメータである。
次いで、S024に進み、定常歩容の初期状態が算出される。ここで算出される初期状態は、定常歩容の初期上体水平位置速度(水平方向での初期上体位置及び初期上体速度)、初期上体鉛直位置速度(鉛直方向での初期上体位置及び初期上体速度)、初期発散成分、初期上体姿勢角およびその角速度である。この初期状態の算出は、図14のサブルーチン処理のフローチャートに従って、前記第1〜第3動力学モデルを順次使用する段階的な探索処理により行なわれる。
図14に示すとおり、S200−1、S200−2、……、S200−n(第1実施形態ではn=3)、S204、S222、S224の処理が順次実行され、最終的に第nモデル(第n動力学モデル)上で、定常歩容の境界条件(定常歩容の任意の時刻での状態と、1周期後の時刻での状態とが一致もしくはほぼ一致するという条件)を満たすように、定常歩容の初期状態が決定される。なお、図14の処理で最終的に決定する定常歩容の初期状態は、今回歩容の終端の時刻(定常歩容の本来の初期時刻0)での状態であるが、本実施形態では、S200−1〜S200−nの処理が終了するまでは、図13のS112で設定した初期時刻Tsでの状態を定常歩容の初期状態とする。
補足すると、図14中の「第1モデル」、「第2モデル」、……、「第nモデル」は、第1動力学モデル、第2動力学モデル、……、第n動力学モデルのことである。以降、この明細書では、一般的に第k動力学モデル(k=1、2、……、n)を単に第kモデルということがある。第1実施形態では、n=3である。また、図14のフローチャートの処理中で求める上体傾斜復元モーメントZMP換算値ピーク値ZMPrecpeekは、ロボット1の片脚支持期(より詳しくは、片脚支持期の開始直後から終了直前までの時期。以下、上体傾斜角復元期間ということがある)で上体姿勢を基準上体姿勢に近づけるために必要な床反力モーメントのZMP換算値ZMPrec(基準となる目標ZMP(S022で決定したZMP軌道パラメータにより規定される目標ZMP)からのずれ量)のピーク値を示すものであり、その例を図示したものが図25である。ZMPrecが同図示の如く台形状のパターンとされ、そのピーク値(台形の高さ)がZMPrecpeekである。
図14の処理の概要を説明すると、まず、定常歩容の境界条件を第1動力学モデル上で満たすように(前記S022で決定したパラメータを含む定常歩容パラメータと第1動力学モデルとを用いて生成される定常歩容がその境界条件を満たすように)定常歩容の初期状態(時刻Tsでの状態)が探索的に決定される。そして、この第1動力学モデルを用いて決定した定常歩容の初期状態を、新たに探索初期値として用い、定常歩容の境界条件を第2動力学モデル上で満たすように(前記S022で決定したパラメータを含む定常歩容パラメータと第2動力学モデルとを用いて生成される定常歩容がその境界条件を満たすように)定常歩容の初期状態時刻(Tsでの状態)が改めて探索的に決定される。さらに、この第2動力学モデルを用いて決定した定常歩容の初期状態を、探索初期値として用い、定常歩容の境界条件を第3動力学モデル上で満たすように(前記S022で決定したパラメータを含む定常歩容パラメータと第3動力学モデルとを用いて生成される定常歩容がその境界条件を満たすように)定常歩容の初期状態(Tsでの状態)が改めて探索的に決定される。より一般化して言えば、動力学モデルの個数をnとしたとき、第m−1動力学モデル(m:2以上、n以下の整数)を用いて決定した定常歩容の初期状態を、探索初期値として用い、定常歩容の境界条件を第m動力学モデル上で満たすように(前記S022で決定したパラメータを含む定常歩容パラメータと第m動力学モデルとを用いて生成される定常歩容がその境界条件を満たすように)定常歩容の初期状態(Tsでの状態)を探索的に決定する、という処理を繰り返す。そして、最終的に、第n動力学モデルを用いて決定した定常歩容の初期状態(時刻0での状態)が、求めるべき初期状態として得られる(該初期状態をパラメータとして持つ定常歩容パラメータが決定される)。
S200−1の処理は、より詳しくは、図15のフローチャートに示す如く実行される。すなわち、まず、S250において、定常旋回歩容パラメータを基に足平位置姿勢、上体姿勢角θbs1および腕姿勢の初期状態(定常旋回歩容の初期時刻Tsでの状態)が決定される。なお、これらの初期状態は、第1旋回歩容の支持脚座標系(前記次回歩容支持脚座標系)で見た状態である。この処理では、足平位置姿勢の初期状態は、前記S022で決定した足平軌道パラメータを基に有限時間整定フィルタを用いて算出される足平位置姿勢軌道のうちの時刻Tsでの各足平22の位置姿勢に決定される。該有限時間整定フィルタは、前記公報文献1等にて説明されているので、ここでの説明は省略する。また、上体姿勢角θbs1の初期状態は、S022で決定した基準上体姿勢軌道パラメータから定まる時刻Tsでの基準上体姿勢角と同一に決定され、腕姿勢の初期状態は、S022で決定した腕姿勢軌道パラメータにより定まる時刻Tsでの状態と同一に決定される。
次いで、S252において、第1モデル(第1動力学モデル)上での初期(時刻Ts)上体水平位置、初期上体水平速度、初期上体姿勢角速度、および上体傾斜復元モーメントZMP換算値ピーク値を探索対象(この探索対象は前記第2発明における修正対象パラメータに相当する)として、これらの探索対象の初期状態の候補(Xs1,Vx1,ωbs1,ZMPrecpeek1)が仮決めされる(定常歩容パラメータのうちの探索対象のパラメータの候補値の初期値が決定される)。この場合、その仮決めの候補値は、基本的には任意でよいが、例えば、前回歩容の生成時に求めた定常歩容の初期状態を基に決定してもよい。この仮決めにより、該探索対象を含む定常歩容パラメータの全体が仮決めされることとなる。なお、これらの仮決めされる値は、第1旋回歩容の支持脚座標系(前記次回歩容支持脚座標系)で見た値である。
次いで、S256〜S268のループ処理が実行される。その処理を概略的に説明すれば、前記の如く仮決めした探索対象を含む定常歩容パラメータと第1動力学モデルとを用いて定常歩容の終端(時刻Ts+Tcyc)までの歩容を生成する。そして、その生成した定常歩容が境界条件(初期と終端での状態(本実施形態では上体水平位置、上体水平速度、上体姿勢角、上体姿勢角速度)がほぼ一致すること)を満たしているか否かを判断し、満たしていない場合には、探索対象の値を変更する。これを繰り返すことで、最終的に第1モデル上で定常歩容の境界条件を満たすことができる該定常歩容の初期状態が決定される。
S256〜S268の処理をより具体的に説明すると、S256において、第1モデル上での定常歩容の初期(時刻Ts)の上体鉛直位置および上体鉛直速度(Zs1,Vzs1)が決定される。この場合、第1モデル上でのロボット1の全体重心の鉛直方向の慣性力と重力との合力が目標床反力鉛直成分に釣り合い、且つ、全体重心の鉛直位置が定常歩容の境界条件を満たすように決定される。この処理は、前記公報文献1の図20のS206の処理と同様に行なわれる。但し、ここで使用する動力学モデルは、本実施形態では前記第1モデルであり、この動力学モデルのみが公報文献1のものと相違している。なお、(Zs1,Vzs1)は、前述の如く決定もしくは仮決めされたXs1,Vxs1,θbs1,ωs1に依存する。
次いで、S258において、現在の探索候補の値と、上体3の鉛直位置および鉛直速度と、ZMPrecpeek1とを含む定常歩容パラメータを基に、第1動力学モデルを用いて定常歩容としての第1モデル歩容が時刻Ts+Tcyc(定常歩容の終端)まで生成される。この処理は、図17のフローチャートで示すサブルーチン処理により実行され、さらに、この図17のS304の処理は、図18のフローチャートで示すサブルーチン処理により実行される。さらに、図18のS412の処理は、図19のフローチャートで示すサブルーチン処理により実行される。これらの処理については後述する。
次いで、S260において、S258で生成した歩容(第1モデル歩容)の終端の上体水平位置、上体水平速度、上体姿勢角およびその角速度を、該1モデル歩容の次の1歩の支持脚座標系(第1モデル歩容の第2旋回歩容に続く第1旋回歩容の支持脚座標系)から見た値に変換し、その値を(Xe1,Vxe1,θbe1,ωbe1)とする。
そして、S262において、現在の(Xs1,Vxs1,θbs1,ωbs1)の値と、(Xe1,Vxe1,θbe1,ωbe1)の値との差を第1モデル歩容(定常歩容)の境界条件誤差(errx,errv,errθ,errω)として求める。定常歩容の境界条件を満足するためには、境界条件誤差はほぼ0でなければならない。この境界条件誤差は、S258において作成した定常旋回歩容の、境界条件からのずれ度合いを表すものである。
次いで、S264において、errx,errv,errθ,errωがいずれも十分に小さい(0近傍の)所定の許容範囲内にあるか否かを判断し、その判断結果がYESである場合には、S256〜S268のループ処理を終了する(S200−1の処理が終了する)。この場合、現在の定常歩容パラメータが第1モデル上で境界条件を満たし得る定常歩容パラメータとして得られる。
一方、S264の判断結果がNOである場合には、現在の探索対象(Xs1,Vx1,ωbs1,ZMPrecpeek1)の値の近辺に、それぞれのパラメータの値を所定の微小量ΔXs,ΔVx,Δωbs,ΔZMPrecpeekだけ変化させた複数(本実施形態では4個)の探索対象の候補を決めて、それぞれの探索対象の候補を含む定常歩容パラメータ(現在の定常歩容パラメータの探索対象を新たに決めた各候補に修正した定常歩容パラメータ)を基に、S258〜S262と同じ処理を実行して、それぞれの探索対象の候補に対応する境界条件誤差を求める。
次いで、S268において、現在の(Xs1,Vx1,ωbs1,ZMPrecpeek1)およびその近辺の探索対象の候補のそれぞれに対応する境界条件誤差を基に、最急降下法やシンプレックス法などの探索手法によって、探索対象(Xs1,Vx1,ωbs1,ZMPrecpeek1)の新たな候補を決定する。そして、S256からの処理が再び繰り返される。
以上のようにして、(Xs1,Vx1,ωbs1,ZMPrecpeek1)を探索対象として、定常歩容の境界条件を満たす定常歩容パラメータが探索的に決定される。
なお、以上説明したS200−1の処理は、第2発明における第1定常歩容パラメータ決定手段を構成するものである。そして、この処理で、最終的に探索された(Xs1,Vx1,ωbs1,ZMPrecpeek1)を含む歩容パラメータが第2発明における第1定常歩容パラメータに相当するものである。
補足すると、図15の処理の基本的な考え方(手法)は、前記公報文献1の図20の処理と同様である。但し、本明細書の実施形態では、上記探索対象として、上体姿勢角速度と上体傾斜復元モーメントZMP換算値ピーク値とが含まれ、この点は、前記公報文献1の図20の処理と相違している。また、後述するS258の処理の細部の処理(サブルーチン処理)の一部も前記公報文献1のものと相違している。
また、図14のS200−2、……、S200−nの処理は、いずれも図16のフローチャートに示す如く実行される。この処理は、S1202で設定する探索対象の初期値と、S1208およびS1216で用いる動力学モデルとが図15の処理と相違し、これ以外は、図15の処理と同一である。なお、図16では、「n」は、2以上の整数を一般的に表しており、本実施形態では、2又は3である。すなわち、S200−2の処理は、図16の「n」を「2」とした処理であり、S200−3の処理は、図16の「n」を「3」とした処理である。
S1202では、第nモデル(第n動力学モデル)上での初期(時刻Ts)上体水平位置姿勢、初期上体水平速度、初期上体姿勢角速度、上体傾斜復元モーメントZMP換算値ピーク値からなる探索対象の初期値(初期候補値)として、第mモデル(m=n−1)を用いて先に求めた探索対象の値(S200−mで最終的に求めた値)を設定する。そして、S1208およびS1216の処理では、第nモデルを用いて定常歩容が作成される。
なお、図16の処理のうちのS1208の処理は、図15のS258と同様、図17のフローチャートで示すサブルーチン処理により実行され、さらに、この図17のS304の処理は、図18のフローチャートで示すサブルーチン処理により実行される。さらに、図18のS412の処理は、図19のフローチャートで示すサブルーチン処理により実行される。以下、図17〜図19の処理を説明する。なお、これらの図17〜図19の処理の説明では、「n」は、1,2,3のいずれかの整数であるとする。n=1の場合は、図15のS258の処理に対応しており、n=2または3の場合は、図16のS1202の処理に対応している。
図17の処理は、図示の通り、図15または図16の処理で仮決めもしくは決定した(Xsn,Vxsn,θbsn,ωbsn,Zsn,Vzsn)を定常歩容における上体3の運動の初期状態として(S300)、その初期(時刻Ts)状態から、時刻Ts+Tcycまで(終端状態まで)の定常歩容の瞬時値を時系列的に実際に作成する(S302〜S306)処理である。なお、図17の「k」は、作成する定常歩容の瞬時値の時系列の時刻である。
この図17のS304のサブルーチン処理(第nモデルを使用した定常歩容の瞬時値を決定するサブルーチン処理)である図18の処理では、S400〜S410の処理によって、S022で求めた定常歩容のパラメータを基に、目標床反力鉛直成分、目標ZMP、目標両足平位置姿勢、基準上体姿勢、目標腕姿勢、目標上体鉛直位置、床反力水平成分許容範囲の瞬時値が求められる。
さらに、S412の処理によって、第nモデル(nは、S200−1の処理の中では「1」、S200−2の処理の中では「2」、……、S200−nの処理の中では「n」。このことは、後述の図19においても同じ)を用いて、図中に記載された条件を満たすように上体水平加速度および上体姿勢角加速度の瞬時値が決定される。そして、S414の処理によって、上体水平加速度および上体姿勢角加速度をそれぞれ2階積分して、上体水平位置および上体姿勢角の瞬時値が決定される。
補足すると、図18の処理のうち、S412以外の処理は、前記公報文献1の図22ののS400〜S410、S414の処理と同じである。従って、S412の処理以外の図18の処理については詳細な説明を省略する。
図18のS412のサブルーチン処理である図19の処理では、まず、定常歩容の上体傾斜角復元期間を規定する時刻Tm、Ts2、Tm2を決定する。これらの時刻は、それぞれ、図25に示す如く、前記上体傾斜復元モーメントZMP換算値ZMPrecを発生させる期間を規定するものである。すなわち、定常歩容の初期時刻Tsの後の最初の片脚支持期の開始直後の時刻をTm、該片脚支持期の終了直前の時刻をTs2、次の片脚支持期の開始直後の時刻をTm2として決定する。そして、期間[Tm,Ts2]と、期間[Tm2,Te]を、それぞれZMPrecを発生させる期間(以下、上体傾斜角復元期間という)とする。これは、前記公報文献1の図23のS500の処理と同じである。
次いで、S502において、定常歩容の瞬時値を作成しようとしている現在時刻k(作成中の定常歩容内での時刻)が上体傾斜角復元期間にあるか否かが判断される。そして、現在時刻kが前記上体傾斜角復元期間内の時刻でないとき、換言すれば、現在時刻kが、片脚支持期の終了直前から次の片脚支持期の開始直後までの期間(目標床反力鉛直成分が0であるかもしくは0に近い期間)にあるときには、S504〜S516の処理によって、第nモデル上で、目標ZMPを満足し、且つ、該第nモデル上でのロボット1の全体重心の水平加速度による慣性力に釣り合う床反力水平成分が時刻kの床反力水平成分許容範囲の瞬時値内に収まるように、上体並進モードの上体水平加速度αと、上体回転モードの上体角加速度β(上体姿勢角の角加速度)とが決定される。これらのS504〜S516の処理は、使用する動力学モデル以外は、前記公報文献1の図19のS504〜S516の処理と同じである(n=2のときは、動力学モデルも前記公報文献1のものと同じ)。
ただし、本実施形態では、第1動力学モデルは、上体回転モードを考慮していないので、S200−1の処理の中で、図19のS504〜S516の処理を行うときには、床反力水平成分許容範囲は、前記図18のS410で決定したものによらずに、常に、強制的に無限大の範囲とするか、もしくは、床反力水平成分が確実に許容範囲内に収まるように十分に大きい範囲に定める。この場合、S516の処理によって、α=αtmp、β=0となる。あるいは、S200−1の処理の中での図18のS410において、第1モデル用の床反力水平成分許容範囲を上記のように決定してもよい。
なお、第1実施形態において第2モデルあるいは第3モデルを使用するS200−2またはS200−3の中で設定する床反力水平成分許容範囲は基本的には同じでよいが、異なる範囲に設定してもよい。この場合、第3モデルは第2モデルよりも動力学的精度が高いので、例えばS200−3の中で設定する床反力水平成分許容範囲を、S200−2の中で設定する床反力水平成分許容範囲よりも、床面の実際の摩擦力の範囲により近いものに設定してもよい。
また、現在時刻k(作成中の定常歩容内での時刻)が前記上体傾斜角復元期間内の時刻であるときには、S518〜S526の処理によって、上体角加速度βは、第n動力学モデル上で、上体傾斜復元モーメントZMP換算値パターンの瞬時値(これは、前記仮決定された上体傾斜復元モーメントZMP換算値ピーク値と現在時刻kとに応じて定まる。図25を参照)に対応する床反力モーメントを目標ZMPまわりに発生するように決定される。また、上体水平加速度は、第n動力学モデル上で、上体並進モードによって発生する目標ZMPまわりの床反力モーメントが0になるための上体水平加速度と、上体角加速度βによる目標ZMPまわりの床反力モーメントと同等の床反力モーメントを発生する上体水平加速度との差として求められる。これにより、上体傾斜角復元期間では、上体姿勢を基準上体姿勢に向かって復元させつつ、目標ZMPを満足するように上体角加速度βおよび上体水平加速度αが決定される。
なお、本実施形態では、第1モデルは、上体回転モードを考慮していないので、S200−1の処理の中で、図19のS518〜S526の処理を行うときには、常にβ=0とされる。
補足すると、本実施形態の図19のS518〜S526の処理は、使用する動力学モデル以外は、前記公報文献1の図23のS520〜S528の処理と同じである(n=2のときは、動力学モデルも前記公報文献1のものと同じ)。
また、本願発明との関連性について補足すると、図14のS200−2〜200−nの処理は、第2発明における定常歩用パラメータ修正手段を構成するものである。そして、図14のS200−2〜200−nのそれぞれの処理の中で実行される図16のS1212で求められる境界条件誤差は第2発明におけるずれ度合いに相当するものである。さらに同図16のS1216で決定される、現在の探索対象(Xsn,Vxn,ωbsn,ZMPrecpeekn)の値の近辺の複数の候補を探索対象(修正対象パラメータ)として持つ歩容パラメータは、第18発明における補助定常歩容パラメータに相当し、それらの補助定常歩容パラメータにそれぞれ対応する境界条件誤差は、第18発明における補助ずれ度合いに相当するものである。なお、探索対象(Xsn,Vxn,ωbsn,ZMPrecpeekn)は、第2発明におえる修正対象パラメータに相当するものであることはもちろんであるが、(Zsn,Vzsn)も、第2発明における修正対象パラメータである。これは、(Zsn,Vzsn)は、前述の如く決定もしくは仮決めされたXsn,Vxsn,θbsn,ωsnに依存するので、Xsn,Vxsn,ωsnを修正すると、(Zsn,Vzsn)も従属的に修正されるからである。このように、直接的な探索対象に従属して修正されるパラメータも第2発明における修正対象パラメータに含まれる。
以上説明した図14の処理において、本実施形態では、第1動力学モデル、第2動力学モデル、第3動力学モデルは、この順に動力学的な精度が高いものとなっている。このため、図14の処理によって、定常歩容の境界条件を満足するような定常歩容を上体位置姿勢の発散が生じたりすることなく、しかも、動力学的な精度も十分に満たしつつ効率よく短時間で作成して、定常歩容の初期状態を適切に求めることができる。
また、第n動力学モデル(n=1,2,3)は、前記した如く構成されているので、前記図15または図16の処理の如く、探索処理を行なうとき、定常歩容パラメータの前記探索対象の値と、前記境界条件誤差との間の線形性(探索対象の値の変化に対する境界条件誤差の変化のリニアリティ)は、nの値が小さいほど、高いものとなっている。このため、第1動力学モデルを使用する前記図15の探索処理では、迅速に境界条件を満足する探索対象の値を見出すことができる。そして、第2動力学モデルを使用した探索処理では、第1動力学モデルを使用した探索処理よりも線形性は低下すものの、第1動力学モデルを使用した探索処理で、近似的に適切な定常歩容パラメータの探索対象が得られているので、それを初期候補として、探索処理を行なうことで、第2動力学モデル上で適切な(境界条件を満たす)定常歩容パラメータを、探索対象の値の発散を生じたりすることなく、迅速に決定できる。第3動力学モデルを使用した探索処理においても同様である。
また、第n動力学モデル(n=1,2,3)は、前記した如く構成されているので、nの値が小さいほど、定常歩容を実際に生成するときの演算時間が、短いものとなる。この場合、nの値が大きいほど、定常歩容を実際に生成するときの演算時間は長くなるものの、探索対象の初期候補を前記したように適切に設定できることから、境界条件を満たす探索対象を迅速に見出だすことができる。従って、結果的に、最終的な定常歩容パラメータを効率よく短時間で決定できる。
なお、以降の説明では、定常歩容の初期状態は、本来の初期時刻0での状態を意味するものとする。
図14の説明に戻って、上記の如くS200−1〜S200−nの処理を実行して、第n動力学モデル(n=3)上で境界条件を満たす定常歩容を作成した後、S204において、その第nモデル定常旋回歩容を基に、本来の初期時刻0における定常歩容の上体3の運動状態である第nモデル初期上体水平位置X0n、初期上体水平速度Vx0n、初期上体姿勢角θb0nおよびその角速度ωb0n、並びに初期上体鉛直位置Z0n、初期上体鉛直速度Vz0nとが求められる。さらに、S222において、前記した初期発散成分qの定義式に従って、第nモデル定常旋回歩容の、本来の初期時刻0における発散成分である第nモデル定常旋回初期発散成分q[0]が求められる。S204およびS222で求められる値は、今回歩容に続く定常旋回歩容の第1旋回歩容の支持脚座標系で見た値である。そして、S224において、第nモデル定常旋回初期発散成分q[0]を今回歩容の支持脚座標系から見た値であるq''と、第nモデル初期上体鉛直位置・速度を今回歩容の支持脚座標系から見た値である(Z0'',Vz0'')を求める。
以上が、図14の処理の詳細である。
図12の説明に戻って、以上説明したようにS024の処理を実行した後、S026において、今回歩容の歩容パラメータが決定(一部は仮決定)される。この処理は、図20のフローチャートに従って実行される。ここで決定する歩容パラメータとしては、今回歩容における足平位置姿勢軌道(各足平22の位置姿勢軌道)、基準上体姿勢軌道、腕姿勢軌道、床反力鉛直成分軌道、床反力水平成分許容範囲、ZMP軌道をそれぞれ規定するパラメータがあり、これらの各パラメータがS600〜S610の処理で決定される。そして、S612において、今回歩容における上体傾斜角復元期間[Ta,Tb]が設定される。これらの処理は、前記公報文献1の図33のフローチャートの処理と同一であるので、ここでの詳細な説明は省略するが、上記各軌道が前回歩容の終端の状態(=今回歩容の初期状態)から、今回歩容に関する前記した要求を満たしつつ、定常歩容につながるように各軌道を規定するパラメータが決定される。例えば、今回歩容の遊脚足平22に関する足平軌道パラメータは、今回歩容の遊脚足平22の着地予定位置姿勢および時刻がそれらの要求値を満たしつつ、今回歩容の終端において該遊脚足平22の位置姿勢が定常歩容の初期(今回歩容の終端の時刻)で一致するように決定される。
補足すると、S610で決定されるZMP軌道パラメータは仮値であり、その仮値により規定されるZMP軌道の例(X軸方向の軌道の例)が図27の最上段に示されている。該ZMP軌道パラメータは、今回歩容の片脚支持期において、支持脚足平22の接地面のほぼ中央付近に目標ZMP位置し、且つ、片脚支持期に続く空中期では、目標ZMPが今回歩容の終端において定常歩容の初期のZMPまで連続的に変化するように決定される。また、図20のS612で設定する上体傾斜角復元期間は、図27の時刻Taから時刻Tbまでの期間であり、今回歩容の片脚支持期の開始直後から終了直前までの期間である。
補足すると、S600〜S610の処理で決定される今回歩容のパラメータは、今回歩容パラメータを構成する全てのパラメータではない。本実施形態では、今回歩容を規定する歩容パラメータ(今回歩容パラメータ)は、S022で決定するパラメータの他に、ZMP軌道パラメータを修正するためのZMP修正量(ZMP修正パラメータ)と、上体傾斜復元モーメントZMP換算値のピーク値(この場合2種類のピーク値)とが含まれる。これらのパラメータは、以下に説明するS028の処理の中で探索的に決定される。
次いで、図12のS028に進んで、今回歩容の歩容パラメータ(ZMP軌道パラメータ)が修正される(最終的な今回歩容パラメータが決定される)。この処理では、今回歩容の終端における発散成分がS024で決定した定常旋回歩容の初期発散成分q''に一致するように(より詳しくは上体位置姿勢軌道を定常歩容に連続させ、もしくは近づけるように)、今回歩容の歩容パラメータが修正されて、最終的な今回歩容パラメータが決定される(より詳しくは、ZMP修正パラメータと上体傾斜復元モーメントZMP換算値の2種類のピーク値とが決定される)。本実施形態では、上記の如く、今回歩容の終端における発散成分が定常旋回歩容の初期発散成分q''に一致する(もしくはほぼ一致する)ことが今回歩容の終端における境界条件である。
この処理は、図21のフローチャートで示すサブルーチン処理に従って、前記第1〜第3動力学モデルを順次使用する段階的な探索処理により行われる。
図21に示すとおり、S700−1、S700−2、……、S700−n(第1実施形態ではn=3)の処理が順次実行され、最終的に第nモデル(第n動力学モデル)上で、今回歩容の終端発散成分が定常歩容の初期発散成分に一致もしくはほぼ一致するように(今回歩容の終端での境界条件を満足するように)、ZMP修正パラメータaと、上体傾斜復元モーメントZMP換算値の第1ピーク値ZMPrecpeekaおよび第2ピーク値ZMPrecpeekbとが決定される。ここで、図21のフローチャートの処理中で求める上体傾斜復元モーメントZMP換算値の第1ピーク値ZMPrecpeekaおよび第2ピーク値ZMPrecpeekbは、今回歩容の上体傾斜角復元期間[Ta,Tb]で上体姿勢を基準上体姿勢に近づけるために必要な床反力モーメントのZMP換算値のパターンの2つのピーク値を示すものであり、その例を図示したものが図26である。定常歩容の場合の上体傾斜復元モーメントZMP換算値のピーク値は1つであったが、今回歩容の終端における上体姿勢角およびその角速度をそれぞれ定常歩容の初期上体姿勢角およびその角速度に一致させるために、本実施形態では、上体傾斜復元モーメントZMP換算値の調整可能な2つのパラメータとして、第1ピーク値ZMPrecpeekaおよび第2ピーク値ZMPrecpeekbが用いられる。本実施形態では、図26に示す如く、今回歩容における上体傾斜復元モーメントZMP換算値は、片脚支持期の前半の台形状のパターンと、後半側の台形状のパターンとを合成した形のパターンとされ、その前半側の台形状のパターンのピーク値が第1ピーク値ZMPrecpeeka、後半側の台形状のパターンのピーク値が第2ピーク値ZMPrecpeekbである。
また、図21のフローチャートの処理中で求めるZMP修正パラメータaは、今回歩容を定常歩容につなげる(今回歩容の終端の発散成分を定常歩容の初期発散成分q''にほぼ一致させる)ための目標ZMPの修正量を規定するパラメータであり、その例を図示したものが、図27の中段の図である。図示の如く、ZMP修正量は、片脚支持期の開始直後から終了直前まで発生させる台形状のパターンとされ、そのピーク値aがZMP修正量のパターンを規定するZMP修正パラメータとして用いられる。
図21の処理の概要を説明すると、まず、第1動力学モデル上で今回歩容を定常歩容につながらせるように(今回歩容の終端発散成分を定常歩容の初期発散成分に一致もしくはほぼ一致させるように)、換言すれば、S028で決定したパラメータを含む今回歩容パラメータと第1動力学モデルとを用いて生成される今回歩容がその終端の境界条件を満たすように、探索対象としてのZMP修正パラメータaと、上体傾斜復元モーメントZMP換算値の第1ピーク値ZMPrecpeekaおよび第2ピーク値ZMPrecpeekbとが探索的に決定される。そして、この第1動力学モデルを用いて決定したa、ZMPrecpeekaおよびZMPrecpeekbを新たに探索初期値として用い、第2動力学モデル上で今回歩容を定常歩容につながらせるように(今回歩容の終端の境界条件を満たすように)a、ZMPrecpeekaおよびZMPrecpeekbが改めて探索的に決定される。さらに、この第2動力学モデルを用いて決定したa、ZMPrecpeekaおよびZMPrecpeekbを新たに探索初期値として用い、第3動力学モデル上で今回歩容を定常歩容につながらせるように(今回歩容の終端の境界条件を満たすように)a、ZMPrecpeekaおよびZMPrecpeekbが改めて探索的に決定される。より一般化して言えば、動力学モデルの個数をnとしたとき、第m−1動力学モデル(m:2以上、n以下の整数)を用いて決定したa、ZMPrecpeekaおよびZMPrecpeekbを探索初期値として用い、第m動力学モデル上で今回歩容を定常歩容につながらせるようにa、ZMPrecpeekaおよびZMPrecpeekbを改めて探索的に決定する、という処理を繰り返す。そして、最終的に、第n動力学モデルを用いて決定したa、ZMPrecpeekaおよびZMPrecpeekbが求めるべき歩容パラメータ(今回歩容の歩容パラメータ)の修正値として得られる。
S700−1の処理は、より詳しくは、図22のフローチャートに示す如く実行される。すなわち、まず、S750において、探索対象であるa、ZMPrecpeekaおよびZMPrecpeekbの第1モデル(第1動力学モデル)上での値の初期候補が仮決定される。この場合、その初期候補は、基本的には、任意でよいが、例えば前回歩容の作成時に最終的に決定したa、ZMPrecpeekaおよびZMPrecpeekbの値などを基に決定してもよい。
次いで、S754〜S766のループ処理が実行される。その処理を概略的に説明すれば、まず、S754において、探索対象であるa、ZMPrecpeekaおよびZMPrecpeekbの現在値と第1モデルとを用いて今回歩容(仮今回歩容)が算出される。より詳しくは、ZMP修正パラメータaの現在値を基に修正したZMP軌道パラメータと、ZMPrecpeekaおよびZMPrecpeekbの現在値と、S026で決定したZMP軌道パラメータ以外のパラメータとから構成される今回歩容パラメータと、第1モデルとを用いて仮今回歩容が算出される。なお、S754のより具体的な処理については後述する。
そして、S756〜S766において、S754で算出した仮今回歩容の終端(今回歩容の遊脚足平の着地予定時刻)での発散成分と定常歩容の初期発散成分q''(前記S024で第nモデルを用いて最終的に算出したもの)との差、仮今回歩容の終端での上体姿勢角と定常歩容の初期上体姿勢角(前記S024で第nモデルを用いて最終的に算出したもの)との差、並びに、仮今回歩容の終端での上体姿勢角の角速度と定常歩容の初期上体姿勢角速度(前記S024で第nモデルを用いて最終的に算出したもの)との差が求められる。そして、これらの差の値がいずれも許容範囲内にあるか否か(0に近いか否か)の条件を満たしているか判断し、満たしていない場合には、探索対象の値を変更する。これを繰り返すことで、最終的に第1モデル上で仮今回歩容を定常歩容につながらせることが可能な歩容パラメータの修正値としてのa、ZMPrecpeekaおよびZMPrecpeekbが決定される。
S756〜S766の処理をより具体的に説明すると、S756において、仮今回歩容の終端での上体位置速度(Xe1,Ve1)から、今回歩容の終端発散成分q01kを前記した発散成分の定義式に従って算出する。
次いで、S758において、この終端発散成分q01kと定常旋回歩容の初期発散成分q''との差を終端発散成分誤差errqとして求める。
さらに、S760において、第nモデル(n=3)を用いて求めた定常歩容の初期上体姿勢角と、第1モデルを用いて求めた今回歩容の終端上体姿勢角との差を終端上体姿勢角誤差θberrとして求めると共に、第nモデル(n=3)を用いて求めた定常歩容の初期上体姿勢角速度と、第1モデルを用いて求めた今回歩容の終端上体姿勢角速度との差を終端上体姿勢角速度誤差ωberrとして求める。
上記の如くもとめた誤差errq、θberr、ωberrは、S754において作成した仮今回歩容の、境界条件からのずれ度合いを表すものである。
次いで、S762において、上記の如くもとめたerrq、θberr、ωberrがいずれも0近傍の所定の許容範囲内にあるか否かを判断し、その判断結果がYESである場合には、S754〜S766のループ処理を終了する(S700−1の処理が終了する)。この場合、現在の探索対象を含む今回歩容パラメータが第1モデル上で境界条件を満たし得る今回歩容パラメータとして得られる。
一方、S762の判断結果がNOである場合には、現在の探索対象(a1,ZMPrecpeeka1,ZMPrecpeekb1)の値の近辺に、それぞれのパラメータの値を所定の微小量Δa,ΔZMPrecpeeka,ΔZMPrecpeekbだけ変化させた複数(本実施形態では3個)の探索対象の候補を決めて、それぞれの探索対象の候補を含む今回歩容パラメータ(現在の今回歩容パラメータの探索対象を新たに決めた各候補に修正した今回歩容パラメータ)を基に、S754〜S760と同じ処理を実行して、それぞれの探索対象の候補に対応する誤差(errq、θberr、ωberr)の組を求める。
次いで、S766において、現在の(a1,ZMPrecpeeka1,ZMPrecpeekb1)およびその近辺の探索対象の候補のそれぞれに対応する誤差(errq、θberr、ωberr)の組を基に、最急降下法やシンプレックス法などの探索手法によって、探索対象(a1,ZMPrecpeeka1,ZMPrecpeekb1)の新たな候補を決定する。そして、S754からの処理が再び繰り返される。
以上のようにして、(a1,ZMPrecpeeka1,ZMPrecpeekb1)を探索対象として、今回歩容の終端の境界条件を満たす今回歩容パラメータが探索的に決定される。
なお、図22の処理のうちのS754の処理は、図24のフローチャートで示すサブルーチン処理により実行される。これについては後述する。
以上説明したS700−1の処理は、第1発明における第1歩容パラメータ決定手段を構成するものである。
また、図21のS700−2、……、S700−nの処理は、いずれも図23のフローチャートに示す如く実行される。この処理は、S1700で設定する探索対象の初期値と、S1704およびS1714で用いる動力学モデルとが図22の処理と相違し、これ以外は、図22の処理と同一である。なお、図23では、「n」は、2以上の整数を一般的に表しており、第1実施形態では、2又は3である。すなわち、S700−2の処理は、図23の「n」を「2」とした処理であり、S700−3の処理は、図23の「n」を「3」とした処理である。
S1700では、探索対象であるa、ZMPrecpeekaおよびZMPrecpeekbの初期値(初期候補値)として、第mモデル(m=n−1)を用いて先に求めた探索対象の値(S700−mで求めた値)を設定する。そして、S1704およびS1714の処理では、第nモデルを用いて仮今回歩容が算出される。
なお、図23の処理のうちのS1704の処理は、図22のS754と同様、図24のフローチャートで示すサブルーチン処理により実行される。
図24の処理は、図示の通り、前回歩容の終端状態(詳しくは今回歩容の支持脚座標系で見た前回歩容の終端状態)を今回歩容(仮今回歩容)の初期状態として(S800)、その初期状態から今回歩容の終端時刻Tcurr(今回歩容の遊脚足平22の着地予定時刻)まで今回歩容の瞬時値を時系列的に作成する(S802〜S806)処理である。なお、図24の「k」は、作成する定常歩容の瞬時値の時系列の時刻である。そして、図24のS804のサブルーチン処理は、先に定常歩容の作成処理に関して説明した図18の処理と同様に行なわれる。
この場合の図18の処理では、S400、S404〜S410の処理では、S026で求めた今回歩容のパラメータを基に、目標床反力鉛直成分、目標両足平位置姿勢、基準上体姿勢、目標腕姿勢、目標上体鉛直位置、床反力水平成分許容範囲の瞬時値が求められる。これらは、図21のS700−1、700−2、……、700−nのいずれにおいても同じである。また、図21のS700−m(m=1,2,3)のそれぞれの中で実行される図18中のS402の処理では、前記図20のS610で仮決定したZMP軌道パラメータをZMP修正パラメータaの現在の候補値amで補正したものを基に、目標ZMPの瞬時値が求められる。すなわち、現在の候補値amにより規定されるZMP修正量(図27の中段図を参照)をS610で仮決定したZMP軌道パラメータにより規定される目標ZMP軌道(図27の上段図を参照)に加えることで、該目標ZMP軌道を修正してなるZMP軌道(図27の下段図を参照)の瞬時値が、S402で求められる。
さらに、S412の処理によって、第nモデル(nは、S700−1の処理の中では「1」、S700−2の処理の中では「2」、……、S700−nの処理の中では「n」。このことは、S412のサブルーチン処理である図19においても同じ)を用いて、図中に記載された条件を満たすように上体水平加速度および上体姿勢角加速度の瞬時値が決定される。そして、S414の処理によって、上体水平加速度および上体姿勢角加速度をそれぞれ2階積分して、上体水平位置および上体姿勢角の瞬時値が決定される。
また、仮今回歩容の作成時におけるS412のサブルーチン処理である図19の処理も、定常歩容の場合と同様に行われる。すなわち、仮今回歩容の瞬時値を作成しようとしている現在時刻k(作成中の仮今回歩容内での時刻)が前記上体傾斜角復元期間内の時刻でないときには、S504〜S516の処理によって、第nモデル上で、目標ZMP(ZMP修正量により修正した目標ZMP)を満足し、且つ、全体重心の水平加速度による慣性力に釣り合う床反力水平成分が時刻kの床反力水平成分許容範囲の瞬時値内に収まるように、上体並進モードの上体水平加速度αと、上体回転モードの上体角加速度β(上体姿勢角の角加速度)とが決定される。
補足すると、本実施形態では、第1動力学モデルは、上体回転モードを考慮していないので、S700−1の処理の中で、図19のS504〜S516の処理を行うときには、S200−1の処理の中で図19のS504〜S516の処理を行う場合と同様に、床反力水平成分許容範囲は、無限大の範囲とするか、もしくは、床反力水平成分が確実に許容範囲内に収まるように十分に大きい範囲に設定される。
なお、本実施形態において第2モデルあるいは第3モデルを使用するS700−2またはS700−3の中で設定する床反力水平成分許容範囲は、S200−2、S200−3の場合と同様、基本的には同じでよいが、異なる範囲に設定してもよい。
また、現在時刻k(作成中の仮今回歩容内での時刻)が前記上体傾斜角復元期間内の時刻であるときには、S518〜S526の処理によって、上体角加速度βは、第n動力学モデル上で、上体傾斜復元モーメントZMP換算値パターンの瞬時値(これは、S700−n(n=1,2,3)の中で仮決定された上体傾斜復元モーメントZMP換算値の第1ピーク値ZMPrecpeekaおよび第2ピーク値ZMPrecpeekbの現在の候補値と現在時刻kとに応じて定まる。図26を参照)に対応する床反力モーメントを発生するように決定される。また、上体水平加速度は、第n動力学モデル上で、上体並進モードによって発生する目標ZMPまわりの床反力モーメントが0になるための上体水平加速度と、上体角加速度βによる床反力モーメントと同等の床反力モーメントを発生する上体水平加速度との差として求められる。これにより、上体姿勢を基準上体姿勢に向かって復元させつつ、目標ZMPを満足するように上体角加速度βおよび上体水平加速度αが決定される。
なお、第1実施形態では、第1動力学モデルは、上体回転モードを考慮していないので、S700−1の処理の中で、図19のS518〜S526の処理を行うときには、常にβ=0とされる。
また、仮今回歩容を生成する場合の上体傾斜復元期間は前記図20のS612で決定した時刻TaからTbの期間であるので、図19のS500の処理は省略される。
ここで、本願発明との関連性について補足すると、図21のS700−2〜700−nの処理は、第1発明における歩用パラメータ修正手段を構成するものである。そして、図21のS700−2〜700−nのそれぞれの処理の中で実行される図23のS1712で求められるerrq,θberr,ωberrの組は第1発明におけるずれ度合いに相当するものである。さらに同図23のS1714で決定される、現在の探索対象(an,ZMPrecpeekan,ZMPrecpeekbn)の値の近辺の複数の候補を探索対象(修正対象パラメータ)として持つ歩容パラメータは、第17発明における補助歩容パラメータに相当し、それらの補助歩容パラメータにそれぞれ対応するerrq,θberr,ωberrの組は、第17発明における補助ずれ度合いに相当するものである。なお、探索対象(an,ZMPrecpeekan,ZMPrecpeekbn)は、第2発明における修正対象パラメータであることはもちろんである。この場合、anは目標ZMP軌道パラメータを修正するものであるので、目標ZMP軌道パラメータ自体の少なくとも一部も修正対象パラメータであると言える。
以上説明した図21の処理において、本実施形態では、第1動力学モデル、第2動力学モデル、第3動力学モデルは、この順に動力学的な精度が高いものとなっている。このため、図21の処理によって、定常歩容につながるような(今回歩容の終端の境界条件を満たすような)今回歩容を作成し得る歩容パラメータを、上体位置姿勢の発散が生じたりすることなく、しかも、動力学的な精度も十分に満たしつつ効率よく短時間で決定できる。
また、第n動力学モデル(n=1,2,3)は、前記した如く構成されているので、前記図22または図23の処理の如く、探索処理を行なうとき、今回歩容パラメータの前記探索対象の値と、今回歩容の終端の誤差errq、θberr、ωberrとの間の線形性(探索対象の値の変化に対する誤差の変化のリニアリティ)は、nの値が小さいほど、高いものとなっている。このため、第1動力学モデルを使用する前記図22の探索処理では、迅速に境界条件を満足する探索対象の値を見出すことができる。そして、第2動力学モデルを使用した探索処理では、第1動力学モデルを使用した探索処理よりも線形性は低下すものの、第1動力学モデルを使用した探索処理で、近似的に適切な今回歩容パラメータの探索対象が得られているので、それを初期候補として、探索処理を行なうことで、第2動力学モデル上で適切な(境界条件を満たす)今回歩容パラメータを、探索対象の値の発散を生じたりすることなく、迅速に決定できる。第3動力学モデルを使用した探索処理においても同様である。
また、第n動力学モデル(n=1,2,3)は、前記した如く構成されているので、nの値が小さいほど、今回歩容を実際に生成するときの演算時間が、短いものとなる。この場合、nの値が大きいほど、今回歩容を実際に生成するときの演算時間は長くなるものの、探索対象の初期候補を前記したように適切に設定できることから、境界条件を満たす探索対象を迅速に見出だすことができる。従って、結果的に、最終的な今回歩容パラメータを効率よく短時間で決定できる。
図12の説明に戻って、以上説明したようにS028の処理を実行した後、S030に進んで、フルモデル補正用のZMP許容範囲と床反力水平成分許容範囲を規定するパラメータが決定される。
この処理は、前記公報文献1の図13のS030の処理と同一であり、ここでの説明は省略する。
以上説明したS018からS030までの処理が、前記図5の歩容パラメータ決定部100aで実行される処理である。
S030の処理を実行した後、あるいは、S016の判断結果がNOであるときには、S032に進んで、今回歩容の瞬時値を逐次決定する。この処理のサブルーチン処理は、仮今回歩容の生成に関して説明した前記図24のフローチャートの処理と同じである。但し、この場合に使用する動力学モデルは、本実施形態では第3モデルに固定される。また、ZMP修正量を規定するZMP修正パラメータa、上体傾斜復元モーメントZMP換算値の第1ピーク値ZMPrecpeekaおよび第2ピーク値ZMPrecpeekbとしては、図12のS028で最終的に決定したもの(図21のS700−nの処理で最終的に探索されたもの)が用いられる。
次いで、S034に進んで、ロボット1のスピン(鉛直軸まわりの回転)をキャンセルするための腕体5,5の動作が決定される。この処理は、ロボット1の腕を振らずに目標歩容通りにロボット1を運動させた場合に目標ZMPまわりに発生する床反力モーメントの鉛直成分と逆向きの床反力モーメントを腕体5,5の腕振り(両腕体5,5を前後逆方向に振る運動)によって発生させるように腕体5,5の姿勢を決定するものであり、前記公報文献1の図13のS034と全く同様に行われる。その詳細は、同公報文献1に記載されているので、ここではさらなる説明を省略する。
次いで、S036に進んで、フルモデル補正用(前記フルモデル補正部100eの処理用)のZMP許容範囲の瞬時値と、床反力水平成分許容範囲の瞬時値とが決定される。この処理では、前記S030で決定したZMP許容範囲および床反力水平成分許容範囲を規定する歩容パラメータに基づいて決定される。
以上説明したS032〜S036の処理が、前記図5の目標瞬時値発生部100bで実行される処理の詳細である。
次いで、S038に進んで、フルモデルを用いた補正歩容を発生する。この処理は、前記フルモデル補正部100cにより実行される処理である。この場合、この処理は、前記公報文献1の図13のS038の処理と同一であり、同公報文献1に記載されたとおりに実行される。従って、本明細書では詳細な説明は省略する。この処理により、目標上体位置姿勢(前記変位次元補正歩容の上体位置姿勢)をさらに修正してなる補正目標上体位置姿勢と補正目標床反力モーメントとが決定される。
以上が、本実施形態における歩容生成装置100の歩容生成処理である。
次に図4を参照して複合コンプアライアンス制御装置101の動作を説明しておく。なお、複合コンプライアンス制御装置101の動作は、本出願人が先に出願した特開平10−277969号公報などに詳細に記載されているので、本明細書では概略的な説明にとどめる。歩容生成装置100において、上記したように生成された目標歩容のうち、補正目標上体位置姿勢(軌道)、目標腕姿勢(軌道)が、ロボット幾何学モデル(逆キネマティクス演算部)102に送出される。
また、目標足平位置姿勢(軌道)、目標ZMP軌道(目標全床反力中心点軌道)、および目標全床反力(軌道)(補正目標床反力モーメントと目標床反力鉛直成分)は、複合コンプライアンス動作決定部104に送られると共に、目標床反力分配器106にも送られる。そして、目標床反力分配器106で、床反力は各足平22に分配され、目標各足平床反力中心点および目標各足平床反力が決定される。この決定された目標各足平床反力中心点および目標各足平床反力は複合コンプライアンス動作決定部104に送られる。
複合コンプライアンス動作決定部104から、機構変形補償付き修正目標足平位置姿勢(軌道)がロボット幾何学モデル102に送られる。ロボット幾何学モデル102は、目標上体位置姿勢(軌道)と機構変形補償付き修正目標足平位置姿勢(軌道)を入力されると、それらを満足する脚体2,2の12個の関節の関節変位指令(値)を算出して変位コントローラ108に送る。変位コントローラ108は、ロボット幾何学モデル102で算出された関節変位指令(値)を目標値としてロボット1の12個の関節の変位を追従制御する。また、ロボット幾何学モデル102は、目標腕姿勢を満足する腕関節の変位指定(値)を算出して変位コントローラ108に送る。変位コントローラ108は、ロボット幾何学モデル102で算出された関節変位指令(値)を目標値としてロボット1の腕体の12個の関節の変位を追従制御する。
ロボット1に生じた床反力(詳しくは実各足床反力)は6軸力センサ50によって検出される。その検出値は前記複合コンプライアンス動作決定部104に送られる。また、ロボット1に生じた姿勢傾斜偏差θerrx,θerry(詳しくは目標上体姿勢角に対する実姿勢角の偏差で、ロール方向(X軸回り)の姿勢角偏差がθerrxであり、ピッチ方向(Y軸回り)の姿勢角偏差がθerryである)が姿勢センサ54を介して検出され、その検出値は姿勢安定化制御演算部112に送られる。この姿勢安定化制御演算部112で、ロボット1の上体姿勢角を目標上体姿勢角に復元するための目標全床反力中心点(目標ZMP)まわり補償全床反力モーメントが算出されて複合コンプライアンス動作決定部104に送られる。複合コンプライアンス動作決定部104は、入力値に基づいて目標床反力を修正する。具体的には、目標全床反力中心点(目標ZMP)回りに補償全床反力モーメント、あるいは、補償全床反力モーメントと補正目標床反力モーメントとの和が作用するように目標床反力を修正する。
複合コンプライアンス動作決定部104は、修正された目標床反力に、センサ検出値などから算出される実ロボットの状態および床反力を一致させようと上記機構変形補償付き修正目標足平位置姿勢(軌道)を決定する。この場合、機構変形補償付き修正目標足平位置姿勢は、前記コンプライアンス機構72の等の機構的変形を考慮したものである。ただしすべての状態を目標に一致させることは事実上不可能であるので、これらの間にトレードオフ関係を与えて妥協的になるべく一致させる。すなわち、各目標に対する制御偏差に重みを与えて、制御偏差(あるいは制御偏差の2乗)の重み付き平均が最小になるように制御する。これにより、実際の足平位置姿勢と全床反力とが目標足平位置姿勢と目標全床反力とに概ね従うように制御される。
なお、以上説明した第1実施形態では、前記した第1〜第3動力学モデルを用いたが、これ以外の複数の動力学モデルを用いてもよい。この場合の複数の動力学モデルは、例えば次のように構成してもよい。以下、これを第2実施形態として説明する。
すわなち、図28を参照して、モデルAを例えば前記第2動力学モデル、モデルBを前記第3動力学モデルとする。この場合、モデルA,Bは、いずれも、目標上体位置姿勢などの目標運動と、目標ZMP、目標床反力水平成分許容範囲などを入力として、目標ZMPまわりの床反力モーメントと並進床反力(床反力水平成分)とを出力する動力学モデルとして表現できることとなる。そして、モデルCを、モデルAが出力する床反力モーメントにある重みr(0≦r≦1)を乗算したものとモデルBが出力する床反力モーメントに重み1−rを乗算したものとの和の床反力モーメントを出力すると共に、モデルAが出力する並進床反力に重みrを乗算したものとモデルBが出力する並進床反力に重み1−rを乗算したものとの和の並進床反力を出力するモデルとする。このようにモデルCを定めたとき、モデルCは、重みrを1に近づけると、その動力学的挙動はモデルAに近くなり、重みrを0に近づけると、その動力学的挙動はモデルBに近くなる。従って、rの値を0から1の範囲で、複数種類の値に設定すれば、複数種類の動力学モデルCが構築できることとなる。そこで、第2実施形態では、このように構築した複数の動力学モデルを前記第1〜第3動力学モデルの代わりに使用することとした。この場合、例えば、重みrの値として、0、0.5、1の3種類を設定し、それぞれに対応して定まる動力学モデルCを第1動力学モデル、第2動力学モデル、第3動力学モデルとする。そして、これらの第1〜第3動力学モデルを第1実施形態の第1〜第3動力学モデルの代わりに用いることで、第2実施形態を構築した。従って、第2実施形態では、図14のS200−1、S200−2、……、S200−n(n=3)と、図21のS700−1、S700−2、……、S700−n(n=3)とで使用する第1〜第3動力学モデルだけが第1実施形態のものと相違するものであり、それ以外は、第1実施形態と同じである。
なお、前記第1実施形態の如く、上体回転モードを調整することによって並進床反力水平成分許容範囲を満足する歩容を生成する場合には、モデルA,Bはいずれも上体回転モードによって発生する床反力モーメントを考慮した(無視しない)モデルである必要がある。この場合、例えばモデルA,Bをそれぞれ第1実施形態の第2動力学モデル、第3動力学モデルと同じにすることで、その必要条件が満たされる。この場合、第2実施形態では、いずれの動力学モデルでも、上体回転モードを調整できるので、第1実施形態で説明したように第1動力学モデルを使用するときに、床反力水平成分許容範囲を実質的に無視できるような大きな許容範囲もしくは無限大の許容範囲に設定する必要はなく、いずれの動力学モデルにおいても、適切な許容範囲を設定できる。
以上が本発明の第2実施形態である。
また、前記第1実施形態では、複数の動力学モデルは、その運動と床反力との関係を表す運動・床反力モデルを互いに異なる構造に設定したが、複数の動力学モデルは、その運動・床反力モデル(該モデルの質点、イナーシャなどの構造と動力学的方程式(運動方程式))を互いに同じにしつつ、それぞれの動力学モデルに付加するロボット1の運動あるいは床反力に関する制約条件を互いに異なるものとしてもよい。その例を第3実施形態として以下に説明すると、複数(本実施形態では3つの)の動力学モデルの運動・床反力モデルを第1実施形態の例えば第2動力学モデルの運動・床反力モデルと同じとする。そして、第1〜第3の各動力学モデルに付加される床反力の制約条件としての床反力水平成分許容範囲が図29に示す如く、互いに異なるようにする。この例では、ロボット1の片脚支持期における床反力水平成分許容範囲は、第1動力学モデル、第2動力学モデル、第3動力学モデルの順に小さくなるように設定される。そして、第3実施形態では、図14のS200−1、S200−2、……、S200−n(n=3)と、図21のS700−1、S700−2、……、S700−n(n=3)とで使用する第1〜第3動力学モデルとして、上記の如く構築した第1〜第3動力学モデルが使用され、それ以外は、第1実施形態と同じである。なお、第3実施形態では、いずれの動力学モデルでも、上体回転モードを調整できるので、第1実施形態で説明したように第1動力学モデルを使用するときに、床反力水平成分許容範囲を実質的に無視できるような大きな許容範囲もしくは無限大の許容範囲に設定する必要はない。
補足すると、第3実施形態では、第n動力学モデル(n=1、2、3)は、nの値が小さいほど、床反力水平成分の許容範囲が広くなって、線形性が高まる。従って、第1動力学モデルにより歩容パラメータ(定常歩容パラメータまたは今回歩容パラメータ)の探索対象を探索するとき、その探索処理を短時間で完了することができる。
また、複数の動力学モデルのうちの最も動力学的精度の高いモデルは、前記フルモデルと同じでもよい。その場合、これらの複数の動力学モデル(前記図12のS024、S028で用いる動力学モデル)に対する床反力水平成分許容範囲は、歩容パラメータの探索処理の収束性を高めるために、フルモデル補正用のものよりも広めにすることが望ましい。
補足すると、前記図12のS024、S028で用いる複数の動力学モデルは、フルモデル補正用のフルモデルよりも若干動力学的精度が低いものであることが効果的である。これは、歩容パラメータの探索処理の収束性を高めつつ、フルモデル補正における目標ZMPまわりの補正目標床反力モーメント、あるいはこれに相当する目標ZMPの修正量を小さくでき、その結果、最終的にフルモデル補正によって生成される歩容の安定余裕を高めることができるからである。
なお、以上説明した各実施形態では、今回歩容を定常歩容に近づけるために、今回歩容の終端の発散成分を定常歩容の初期発散成分にほぼ一致させることを今回歩容の境界条件として、その境界条件を満たすように今回歩容パラメータの探索対象を探索して決定するようにしたが、今回歩容の終端の上体位置(水平位置および鉛直位置)と、上体速度(水平速度および鉛直速度)とをそれぞれ定常歩容の初期の上体位置、上体速度にほぼ一致させることを今回歩容の境界条件とし、この境界条件を満たすように今回歩容パラメータの探索対象を探索して決定するようにしてもよい。
あるいは、今回歩容の終端のロボット1の全体重心の位置とその変化速度との重み付き平均値を、定常歩容の初期の当該重み付き平均値にほぼ一致させることを境界条件として、その境界条件を満たすように今回歩容パラメータの探索対象を決定するようにしてもよい。
また、定常歩容パラメータを決定するとき、定常歩容の境界条件を満たすために、定常歩容パラメータの探索対象として、ロボット1の上記重み付き平均値、または発散成分を用いてもよい。なお、重み付き平均値は、所定の重みを設定することで、絶対的な大きさを無視すれば、発散成分と等価(より正確には、発散成分と比例関係)になる。