脚式ロボットとその制御方法ならびに歩容データの作成装置と作成方法
【課題】 脚式ロボットが、脚リンク群(特に接地脚)を伸ばしながら歩行することを可能とする技術を提供する。
【解決手段】 脚式ロボットは、体幹と、基端が体幹に揺動可能に連結されており、先端に足先を備えている複数の脚リンクと、事前に準備されている歩容データを、実際の歩行状態に基づいて補正する手段と、脚リンク毎に、補正した歩容データの体幹目標位置に基づいて基端位置を特定する手段と、脚リンク毎に、特定した基端位置を鉛直方向に移動したときに補正した歩容データの足先目標位置からの距離が所定距離となるときの鉛直移動量を計算する手段と、脚リンク毎に計算した鉛直移動量から鉛直下方に最大の移動量を選択する手段と、補正した歩容データの体幹目標位置の鉛直座標を選択手段で選択した鉛直移動量だけ鉛直方向に修正する手段とを備える。
【解決手段】 脚式ロボットは、体幹と、基端が体幹に揺動可能に連結されており、先端に足先を備えている複数の脚リンクと、事前に準備されている歩容データを、実際の歩行状態に基づいて補正する手段と、脚リンク毎に、補正した歩容データの体幹目標位置に基づいて基端位置を特定する手段と、脚リンク毎に、特定した基端位置を鉛直方向に移動したときに補正した歩容データの足先目標位置からの距離が所定距離となるときの鉛直移動量を計算する手段と、脚リンク毎に計算した鉛直移動量から鉛直下方に最大の移動量を選択する手段と、補正した歩容データの体幹目標位置の鉛直座標を選択手段で選択した鉛直移動量だけ鉛直方向に修正する手段とを備える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、体幹(胴部)に複数(典型的には2本)の脚リンクが揺動可能に連結されている機械(脚式ロボット)を歩行させる技術に関する。
【背景技術】
【0002】
体幹と脚リンク群の相対的姿勢を変化させることによって歩行する脚式ロボット(以下では単にロボットと記すことがある)が開発されている。脚式ロボットは、歩容データを用いて歩行する。
歩容データは、足先位置の経時的変化を記述する足先目標位置データと、足先位置の経時的変化に追従して歩行しつづけることを可能とする体幹位置の経時的変化を記述する体幹目標位置データ等から構成されている。
ロボットが転倒しない歩容データを得るためには、ロボットのダイナミクスを考慮に入れた複雑な計算を必要とする。以下に、その一例を説明する。
(1)ロボットの左足先位置と右足先位置の経時的変化を記述する足先目標位置データを指定する。
(2)足先位置の経時的変化を考慮してロボットのZMPが存在しなければならない位置を指定する。ZMP(zero moment point)とは、ロボットに作用する重力や床反力や慣性力の合力によるモーメントがゼロになる床上の点のことである。ZMPが接地脚の足先内にあればロボットは転倒しない。逆にいうと、ロボットが転倒しないためには、ZMPが接地脚の足先内になければならない。そこで接地脚の足先位置を考慮し、下記の関係を満たす目標ZMPを指定する。即ち、一方の脚リンク(例えば左脚)が遊脚になっている間は接地脚(右脚)の足先内に存在し、その一方の脚(左脚)が接地して両足接地状態になった時に新たに接地した脚(左脚)の足先内に向けて移動開始し、それまでに接地していた脚(右脚)が遊脚となる前に新たに接地した脚(左脚)の足先内に移動し終えるZMPを指定する。このようにして指定されたZMPは、目標ZMPと呼ばれる。実際のZMPが目標ZMPのとおりに移動すれば、ロボットは転倒することなく歩行しつづける。
(3)両足先位置の経時変化とそれに追従して変化する目標ZMPが指定されると、体幹位置の経時的変化を仮定してロボットのダイナミクスを計算する。計算する時点で、足先位置が指定されているので、ロボットの体幹位置を仮定するとロボットの姿勢が決まる。ロボットの姿勢が決まると、その姿勢におけるZMPの位置を計算することが可能となる。ZMPの位置を計算するためには、静的な要素に加えて、ロボットに作用する慣性力の影響を織り込まなければならない。仮定した体幹位置の経時的変化を計算に含めることで、ロボットのダイナミクスまで考慮してZMPの位置を計算することが可能となる。体幹位置の経時的変化(体幹軌道)を仮定するとZMPの位置を計算することができることから、目標ZMPに一致するZMPを実現する体幹位置の経時的変化(体幹軌道)を探求することができる。
(4)以上の工程によって予め歩容データを準備しておく。
ロボットは、歩容データからいわゆる逆キネマティクスを解くことによって、各関節の関節角を計算する関節角群計算装置を備えている。ロボットが実際に動作する際には、歩容データに従った歩行を実現する各関節の関節角を計算する。ロボットは各関節の関節角を計算した角度に調節することによって、歩容データに従って歩行する。歩容データに従ってロボットが歩行すれば、実際のZMPが目標ZMPに一致し、ロボットは転倒せずに歩行しつづけることができる。
【0003】
足先位置や体幹位置は、時間に対する位置の変化で記述することができるが、位置と速度と加速度は関連しており、そのうちの一つの量から他の量を計算することができることから、速度や加速度で位置を記述することができる。位置のデータという場合、速度や加速度で位置を特定するデータも含む。
足先位置や体幹位置という場合、足先や体幹は剛体であるから、代表点の位置によって足先や体幹の位置を示すことができる。また、足先位置や体幹位置という場合、位置のみならず、足先姿勢や体幹姿勢を含むものとする。姿勢は、足先や体幹の姿勢角によって記述することができる。歩行中の足先姿勢や体幹姿勢が所定のパターンに従う場合には、歩容データからは姿勢を記述するデータが不要化される。
目標ZMPに一致するZMPをもたらす体幹位置(通常は姿勢を含む)の経時的変化を解析的に探求する手法は、足先位置の変化に追従してロボットが転倒しないように体幹を移動させるのに必要な体幹の目標位置を算出する手法の典型例である。脚式ロボットの体幹目標位置を算出する手法は、これに限定されるものではない。
【0004】
ロボットが事前に準備されている歩容データに従って歩行している間に、ロボットに予期せぬ外乱力が作用することがある。路面の予期せぬ凹凸によって予期せぬ外乱力が作用することもあるし、ロボットに外界から押したり引いたりする外力が加えられることもある。ロボットの構造上のたわみや、ロボットの関節のガタや、ロボットの応答遅れ等に起因してロボットの実際の位置や姿勢が歩容データから外れれば、予期せぬ外乱力が作用したのと同じことになる。予期せぬ外乱力が作用した場合、事前に準備されている歩容データどおりには歩行しつづけることができなくなる。
そこでロボットには、実際の歩行状態に基づいて、事前に準備されている歩容データを補正する手段が用意されている。予期せぬ外乱力が作用したときには、例えば事前に準備されている歩容データの体幹目標位置を補正することによって、予期せぬ外乱力が作用した場合でも歩行しつづけることができるようにしている。
【発明の開示】
【発明が解決しようとする課題】
【0005】
事前に準備されている歩容データを、実際の歩行状態に基づいて補正するときに、脚リンク(特に接地脚)がすでに伸びきった状態になっていると、体幹位置や足先位置を補正した目標位置にまで動かすことができないことがある。この場合、ロボットが転倒する可能性が生じてくる。
そこで従来の技術では、体幹の高さを低く設定した歩容データを事前に準備している。この歩容データを用いると、脚リンクが伸びきった状態となることがない。実際の歩行状態に基づいて補正するときに必要ならば脚リンクをさらに伸ばすことが可能である。脚リンクが伸びきらない歩容データを事前に準備しておくことによって、実際の歩行状態に基づいて補正することができるようにしている。
しかしながら、そのことは結果として、事前に準備されている歩容データのままに歩行する場合には、接地脚を常に曲げた状態で歩行することとなる。実際の歩行状態に基づいて補正できるようにするためには、接地脚を常に曲げておき、必要に応じてさらに伸ばせるようにしておく必要がある以上、通常は接地脚を常に曲げた状態で歩行する他はない。
しかしながら、接地脚を常に曲げながら歩行すると、脚リンクの関節に作用する曲げモーメントが大きくなってしまう。これは、人が膝を曲げて歩行すると大腿部等の筋肉が強く緊張するとともに膝関節に強い負担を感じる一方、膝を伸ばして歩行すると大腿部等の筋肉の緊張が弱められ膝関節に作用する負担も軽くなることに相当する。また人を模した二足歩行ロボットの場合には、接地脚を常に曲げて歩行すると、その歩行動作にロボット特有の不自然さが発現してしまう。
本発明は上記の問題を解決する。本発明では、ロボットが脚リンク群(特に接地脚)を伸ばして歩行することを可能とする技術を提供する。
【課題を解決するための手段】
【0006】
本発明によって具現化される脚式ロボットは、体幹と複数の脚リンクを供えている。各脚リンクの基端は体幹に揺動可能に連結されており、各脚リンクの先端には足先が用意されている。このロボットは、事前に準備されている歩容データを実際の歩行状態に基づいて補正する手段を備えている。
このロボットは、歩容データをさらに修正して用いる。そのために、補正した歩容データの体幹目標位置に基づいて、脚リンクの基端位置を特定する手段と、特定した基端位置を鉛直方向に移動したときに、補正した歩容データの足先目標位置からの距離が所定距離となるときの鉛直移動量を計算する手段を備えている。これらの手段は、脚リンク毎に用意されている。さらに、脚リンク毎に計算した鉛直移動量から、鉛直下方に最大の移動量を選択する手段と、補正した歩容データの体幹目標位置の鉛直座標を、選択手段で選択した鉛直移動量だけ鉛直方向に修正する手段を備えている。
【0007】
前記したように、事前に準備されている歩容データを用いることによって、ロボットは意図した歩行を実現する。予期せぬ外乱力が作用することが避けられないことから、ロボットは、事前に準備されている歩容データを実際の歩行状態に基づいて補正する手段を備えている。このときに、事前に準備されている歩容データによって、脚リンク(特に接地脚)がすでに伸びきった状態になっていると、体幹位置や足先位置を実際の歩行状態に基づいて補正した目標位置にまで動かすことができないことがある。そこで、従来の技術では、事前に準備されている歩容データでは、脚リンクを伸ばしきらない歩行姿勢を記述しておく必要があった。
本発明では、体幹目標位置の鉛直座標を鉛直方向に修正する手段を利用することから、事前に準備しておく歩容データでは脚リンクを伸ばしきらない歩行姿勢を記述しておく必要がなくされる。事前に準備しておいた歩容データに従うと脚リンク(特に接地脚)を伸ばしきることになる状態において、実際の歩行状態に基づいて補正した体幹目標位置や足先目標位置がさらに脚リンクを伸ばすことを要求する場合、従来の技術ではそれ以上に脚リンクを伸ばせないので対応不能となるのに対し、本発明では脚リンクの長さの不足を補うだけ体幹目標位置を鉛直下方に修正することができる。
上記のために、本発明では、補正した歩容データの体幹目標位置に基づいて脚リンクの基端位置を特定する手段を利用する。特定した基端位置と、補正した歩容データの足先目標位置の間の距離を計算する手段を利用する。後記の計算手段は、基端位置を鉛直方向に移動させた場合の基端と足先間の距離を計算することが可能であり、基端と足先間の距離が所定距離となるときの鉛直移動量を計算することができる。このとき、足先の位置は脚リンク先端の位置を一義的に示すことから、足先目標位置自体を計算に用いるようにしてもよいし、あるいは足先目標位置に基づいて脚リンクの先端位置を特定し、特定した先端位置を計算に用いるようにしてもよい。
この所定距離を、有限な長さを持つ脚リンクで実現可能な距離としておけば、修正された歩容データに従って歩行することが可能となる。事前に準備しておく歩容データでは脚リンクを伸ばしきらない歩行姿勢を記述しておく必要がなくなる。
このロボットでは、脚リンク毎に計算した鉛直移動量から、鉛直下方に最大の移動量を選択し、補正後の歩容データが記述している体幹目標位置の鉛直座標を、選択した鉛直移動量だけ修正する。それにより、すべての脚リンクにとって実現可能な歩容データに修正することができる。なお、脚リンクの長さからすると基端を不必要に大きく鉛直下方に修正する脚リンクが登場することになるが、それに対しては脚リンクを曲げることで対応することができる。
鉛直方向に体幹目標位置を修正すると、ZMPが目標ZMPからずれる恐れがあるが、体幹目標位置を鉛直方向に移動させることによってZMPが変化する変化量は小さく、実際には問題とならない。
この脚式ロボットでは、脚リンク群(特に接地脚)を曲げて歩行する歩容データを事前に準備しておく必要がなく、脚リンク群を自然に伸ばして歩行することができる。
【0008】
上記の脚式ロボットでは、事前に準備しておく歩容データで、脚リンク群を自然に伸ばして歩行する運動を記述しておくことが好ましい。
そして、事前に準備されている歩容データの体幹目標位置から特定される基端位置と、事前に準備されている歩容データの足先目標位置から、両者間の距離を計算する手段を備えていることが好ましい。この手段は、脚リンク毎に脚リンクの基端と足先間の距離を計算する。
その上で、鉛直移動量計算手段では、前記の距離計算手段で計算した距離を所定距離として鉛直移動量を計算することが好ましい。
このロボットでは、修正後の歩容データで規定される脚リンクの基端と足先間の距離が、事前に準備しておく歩容データで規定される基端と足先間の距離に近い値となる。それにより、事前に準備しておく歩容データを作成したオペレータ等が意図している歩行姿勢を保ちながら歩行することができる。
【0009】
上記のロボットの選択手段は、脚リンク毎に計算した鉛直移動量の中に、鉛直下方への移動量が存在しなければ、ゼロを選択することが好ましい。
体幹位置を鉛直上方に移動するように修正すると、ロボットの歩行動作に不自然さが発現することがある。このロボットでは、補正された歩容データの体幹目標位置を修正する際に、鉛直上方に修正することを禁止し、鉛直下方にのみ修正する。それにより、脚式ロボットは、より自然に足を伸ばしながら歩行することができる。
この場合、事前に準備しておく歩容データでは、脚リンクを伸ばしきって歩行するレベルに体幹目標位置の鉛直座標を設定しておいてもよい。鉛直下方に修正する機会が多く、鉛直上方に修正する機会が少ないようにしておくことができる。
【0010】
本発明の技術は、脚式ロボットの歩行動作を制御する方法に具現化することもできる。この歩行制御方法は、基端が体幹に揺動可能に連結されているとともに先端に足先を備えている複数の脚リンクを備えているロボットの歩行を制御する。
この歩行制御方法は、ロボットに予定している歩行を記述する歩容データを事前に準備しておく工程と、事前に準備しておいた歩容データを実際の歩行状態に基づいて補正する工程を備えている。
この歩行制御方法では、歩容データをさらに修正して用いる。そのために、補正した歩容データの体幹目標位置に基づいて、脚リンクの基端位置を特定する工程と、特定した基端位置を鉛直方向に移動したときに、補正した歩容データの足先目標位置からの距離が所定距離となるときの鉛直移動量を計算する工程を備えている。これらの工程では、脚リンク毎に計算する。さらに、脚リンク毎に計算した鉛直移動量から鉛直下方に最大の移動量を選択する工程と、補正した歩容データの体幹目標位置の鉛直座標を選択工程で選択した鉛直移動量だけ鉛直方向に修正する工程と、修正した歩容データを脚式ロボットの関節角群計算装置に教示する工程を備えている。
この歩行制御方法によると、脚リンク群(特に接地脚)を無用に曲げて歩行する歩容データを事前に準備しておく必要がなくなる。脚式ロボットは脚リンク群を自然に伸ばしながら歩行することができる。
【0011】
本発明はまた、脚式ロボットが用いる歩容データを事前に準備しておく装置をも提供する。この歩容データの作成装置は、基端が体幹に揺動可能に連結されているとともに先端に足先を備えている複数の脚リンクを備えているロボットに教示する歩容データを事前に準備しておくために利用される。
この歩容データの作成装置は、脚リンク毎に足先位置の経時的変化を記述する足先目標位置データを記憶しておく手段と、その足先目標位置データに追従して歩行することを可能とする体幹目標位置を仮定する手段を備えている。
仮定した体幹目標位置を修正するために、仮定した体幹目標位置に基づいて脚リンクの基端位置を特定する手段と、特定した基端位置を鉛直方向に移動したときに、記憶している足先目標位置からの距離が所定距離となるときの鉛直移動量を計算する手段を備えている。これらの手段は、脚リンク毎に用意されている。
さらに、脚リンク毎に計算した鉛直移動量から、鉛直下方に最大の移動量を選択する手段と、作成しておいた体幹目標位置の鉛直座標を、選択手段で選択した鉛直移動量だけ鉛直方向に修正する手段を備えている。
そして、修正した体幹目標位置が、記憶している足先目標位置データに追従して歩行することを可能とする位置でなければ、体幹位置の経時的変化を再び仮定する手段を備えている。
【0012】
この装置では、足先位置の経時的変化を記述する足先目標位置データに追従して脚式ロボットが転倒しないで歩行することを可能とする体幹位置の経時的変化を仮定する。体幹位置の経時的変化を仮定する段階では、各脚リンクの長さを考慮する必要はない。脚リンクの長さが足らず、実際には実現不能なほど高い体幹目標位置を仮定してもよい。
この装置では、最初に仮定した体幹目標位置に基づいて脚リンクの基端位置を特定する。さらに、特定した基端位置を鉛直方向に移動したときに、鉛直方向に移動した基端位置と、記憶している足先目標位置の間の距離が、所定距離となるときの鉛直移動量を計算する。この鉛直移動量は、脚リンク毎に計算される。
この装置では、脚リンク毎に計算した鉛直移動量から、鉛直下方に最大の移動量を選択し、仮定した体幹目標位置の鉛直座標を、選択した鉛直移動量だけ鉛直方向に修正する。これによって、すべての脚リンクの長さに関して、実現可能な体幹目標位置に修正することができる。
この装置では、修正した体幹目標位置が、記憶している足先目標位置データに追従して歩行することを可能とする位置でなければ、体幹位置の経時的変化を新たに仮定する。新たに仮定された体幹目標位置は、上記の処理によって再び鉛直座標が修正される。体幹位置の経時的変化を仮定し、仮定した体幹目標位置の鉛直座標を修正して、脚式ロボットが歩行することを可能とする体幹目標位置を探求する。導出される体幹目標位置は、脚リンクの長さに関して実現可能な位置となる。
この歩容データの作成装置では、仮定された体幹目標位置を修正する際に、体幹位置を鉛直方向に修正する。脚式ロボットの動的バランスを大きく変化させることなく、各脚リンクの基端と足先の間の距離を大きく変化させることができる。
この歩容データの作成装置によると、脚式ロボットが脚リンク群を自然に伸ばしながら歩行する歩容データを作成することができる。この歩容データの作成装置で作成する歩容データは、上述した脚式ロボットや脚式ロボットの歩行制御方法に有効に用いることができる。上述した脚式ロボットや脚式ロボットの歩行制御方法では、脚リンクを曲げた歩容データを必要とせず、脚リンク群を自然に伸ばしながら歩行する歩容データに対応することが可能だからである。
本発明の技術思想は、歩容データを事前に準備しておく段階で活用することもできれば、歩容データを修正しながら実際の歩行を制御する段階で活用することもできる。
【0013】
前記した鉛直移動量計算手段では、脚リンクの最大長さを所定距離として鉛直方向移動距離を計算することが好ましい。それにより、脚式ロボットの少なくとも1つの脚リンクを最大に伸ばしながら歩行する歩容データを作成することができる。
【0014】
鉛直方向に修正することによって得られた体幹目標位置は経時的に変化し、軌道を規定する。この軌道は不連続に変化するものでなく、スムーズな連続曲線であることが好ましい。
そのためには、鉛直方向に修正した体幹目標位置を所定周期毎にサンプリングする手段と、サンプリングした体幹目標位置を連続曲線でなぞる平滑軌道を作成する手段と、作成した平滑軌道が修正した体幹目標位置よりも鉛直上方に位置する期間を特定する手段と、特定した期間に対応する修正した体幹目標位置を鉛直下向きに所定距離だけ再修正する手段と、再修正後の体幹目標位置を用いて平滑軌道を再度作成する手段をさらに備えていることが好ましい。
【0015】
この歩容データの作成装置では、鉛直下方に修正した体幹目標位置(時間とともに高さと水平面内位置を変える)を所定周期毎にサンプリングし、サンプリングした複数の体幹目標位置を連続曲線で滑らかになぞる平滑軌道を作成する。このように作成した平滑軌道には、平滑化前の体幹目標位置よりも鉛直上方に位置する期間が存在しうる。その期間の平滑軌道は、いずれかの脚リンクに関して実現不可能な軌道となることから、そのままでは歩容データに用いることが難しい。
そこで、この歩容データの作成装置では、作成した平滑軌道が平滑化前の体幹目標位置よりも鉛直上方に位置する期間を特定する。特定された期間については、体幹目標位置を所定距離だけ鉛直下方にさらに修正する。その後に、平滑軌道を再度作成する。
以上の処理を繰り返すことによって、最初に算出した体幹目標位置よりも常に鉛直下方に位置する平滑軌道を得ることができる。脚リンクの長さからみて実現可能な平滑軌道が得られる。
【0016】
本発明の技術は、歩容データを作成する方法にも具現化することができる。この歩容データの作成方法は、基端が体幹に揺動可能に連結されているとともに先端に足先を備えている複数の脚リンクを備えているロボットに教示する歩容データを事前に準備しておくために利用される。
この歩容データの作成方法は、脚リンク毎に足先位置の経時的変化を記述する足先目標位置データを記憶しておく工程と、その足先目標位置データに追従して歩行することを可能とする体幹目標位置を仮定する工程を備えている。
仮定した体幹目標位置を修正するために、仮定した体幹目標位置に基づいて脚リンクの基端位置を特定する工程と、特定した基端位置を鉛直方向に移動したときに、記憶している足先目標位置からの距離が所定距離となるときの鉛直移動量を計算する工程を備えている。これらの工程は、脚リンク毎に実行される。
さらに、脚リンク毎に計算した鉛直移動量から、鉛直下方に最大の移動量を選択する工程と、仮定した体幹目標位置の鉛直座標を、選択工程で選択した鉛直移動量だけ鉛直方向に修正する工程を備えている。
そして、修正した体幹目標位置が、記憶している足先目標位置データに追従して歩行することを可能とする位置でなければ、体幹位置の経時的変化を再び仮定する工程を備えている。
【0017】
この歩容データの作成方法によると、脚式ロボットが脚リンク群を自然に伸ばしながら歩行する歩容データを作成することができる。この歩容データの作成方法で作成する歩容データは、上述した脚式ロボットや脚式ロボットの歩行制御方法に有効に用いることができる。
【発明の効果】
【0018】
本発明により、脚式ロボットが脚リンク群(特に接地脚)を伸ばしながら歩行することを可能とする技術が提供される。
【発明を実施するための最良の形態】
【0019】
最初に、以下に説明する実施例の主要な特徴を列記する。
(形態1) ロボットは、事前に準備された歩容データの体幹目標位置を、実際の歩行状態に基づいて補正する歩容データの補正装置を備えている。
(形態2) ロボットが備える歩容データの補正装置は、事前に準備された歩容データの体幹目標位置を、水平方向に移動した位置に補正する。
(形態3) 歩容データの作成装置は、仮定した体幹目標位置が、与えられた足先目標位置の経時的変化に追従して歩行することを可能とする位置であるか否かを判別する装置を備えている。
【実施例】
【0020】
(実施例1) 本発明を実施する実施例1について図面を参照して説明する。本実施例は、本発明の技術を二足歩行ロボットに適用したものである。
図1に本実施例の二足歩行ロボット(以下、単にロボットと記す)6を示す。図1に示すように、ロボット6は、体幹12と、体幹12に対して揺動可能に接続されている左脚リンク30と右脚リンク40を備えている。またロボット6は、体幹12に対して揺動可能に接続されている左腕リンク16と右腕リンク18と頭部20等を供えている。
図1に示すように、左脚リンク30は、左大腿部32と、左下腿部36と、左大腿部32と左下腿部36を連結している左膝関節34を備えている。左膝関節34は、1軸回りに自由度を持つ関節である。左脚リンク30の基端は左股関節31を介して体幹12に連結されている。左脚リンク30の先端には左足首関節37を介して左足(左足先)38が連結されている。左股関節31は3軸回りに自由度を持つ関節であり、左足首関節37は2軸回りに自由度を持つ関節である。
右脚リンク40は、左脚リンク30と鏡面対称の関係となるように構成されている。右脚リンク40に関して、図1に右股関節41、右大腿部42、右膝関節44、右下腿部46、右足首関節47、右足(右足先)48が示されている。
ロボット6は、各関節を駆動するためのアクチュエータ群を備えている。アクチュエータ群は、後述する制御装置14によって制御される。
ロボット6は、ロボット6の実際の運動を検出するためのセンサ群を備えている。センサ群は、例えば各関節の関節角を検出するためのエンコーダや、体幹12等の運動を検出するための加速度センサ等である。センサ群の出力信号は、後述する制御装置14の処理に利用される。
【0021】
図1に示すように、ロボット6は、右足48が接地している間に左脚リンク30を遊脚として左足38を軌道7のように移動させ、左足38が接地すると今度は右脚リンク40を遊脚として右足48を軌道8のように移動させ、以下同様に、左足38を軌道9のように移動させ、次に右足48を軌道10のように移動させて歩行を続ける。
本実施例では、図1に示すように、ロボット6の歩行方向をx軸とし、体側方向をy軸とし、高さ方向をz軸とする。xy平面は水平面であり、z軸方向は鉛直方向である。
【0022】
ロボット6は、図1に示す歩行動作をするために歩容データを必要とする。歩容データは、オペレータによって事前に準備され、ロボット6に指示される。事前に準備する歩容データは、コンピュータ装置を利用した歩容データ作成装置によって作成することができる。歩容データの作成過程を簡単に説明すると、オペレータは足先目標位置データを用意し、歩容データ作成装置に教示する。歩容データ作成装置は、教示された足先目標位置データとロボット6の力学モデルに基づいて、予定された状況で歩行することを可能とする体幹12の運動を計算し、計算した体幹12の運動を記述する体幹目標位置データを作成する。
ロボット6が利用する歩容データは、左足38の目標とする位置と姿勢の経時的変化を記述する左足目標位置データや、右足48の目標とする位置と姿勢の経時的変化を記述する右足目標位置データや、体幹12の目標とする位置と姿勢の経時的変化を記述する体幹目標位置データや、左右の腕先の目標とする位置と姿勢の経時的変化を記述する腕先目標位置データや、目標ZMPの経時的変化を記述している目標ZMPデータ等を備えている。
体幹目標位置データは、体幹12の位置を代表点Wの位置PW(xW,yW,zW)で記述し、体幹12の姿勢を体幹12の姿勢角(ロール角、ピッチ角、ヨー角)で記述している。左足目標位置データは、左足38の位置を代表点Lの位置PL(xL,yL,zL)で記述し、左足38の姿勢を左足38の姿勢角で記述している。右足目標位置データは、右足48の位置を代表点Rの位置PR(xR,yR,zR)で記述し、右足48の姿勢を右足48の姿勢角で記述している。位置や姿勢のデータは、経過時間とともに値を変える経時的データである。
【0023】
ロボット6は、ロボット6の動作を制御する制御装置14を備えている。制御装置14は、CPU、ROM、RAM、ハードディスク等を備えている。制御装置14のハードウェア構成は汎用のコンピュータと同じであり、説明は省略する。
【0024】
図2は、制御装置14の機能的な構成を示すブロック図である。図2に示すように、制御装置14は、機能的に、歩容データ記憶装置110と、歩容データ補正装置112と、体幹位置修正装置114と、関節角群計算装置118と、アクチュエータ制御装置120と、実際運動計算装置116等を備えている。図2に示す要素のうち、ロボットの機械系122と各種センサ124は、制御装置14の構成要素に含まれないが、以下の説明を明瞭にするために併せて記載している。
制御装置14は、全体が物理的に1つの装置に含まれていてもよいし、物理的に分離された装置ごとに分けて収容されていてもよい。また制御装置14の各要素は、必ずしもロボット6に搭載されていなくてもよい。ロボット6外に配備され、ロボット6に無線又は有線で指示するようにしてもよい。
【0025】
歩容データ記憶装置110は、オペレータ等が事前に準備した歩容データを記憶している。歩容データ記憶装置110が記憶している歩容データは、歩容データ補正装置112と、体幹位置修正装置114に入力される。
歩容データ補正装置112は、歩容データ記憶装置110が記憶している歩容データと、実際運動計算装置116から入力したロボット6の実際運動に基づいて、歩容データ記憶装置110から入力した歩容データを補正する。補正された歩容データは、体幹位置修正装置114と、関節角群計算装置118に入力される。ただし、補正後の体幹目標位置データについては、関節角群計算装置118には入力されず、体幹位置修正装置114のみに入力される。
体幹位置修正装置114は、歩容データ補正装置112によって補正された体幹12のz座標を、左脚リンク30と右脚リンク30の長さを考慮して修正する。体幹位置修正装置114の詳細については後述する。
関節角群計算装置118は、体幹目標位置データや左足38や右足48等の各部の目標位置データを入力し、入力した目標位置に基づいて、いわゆる逆キネマティクスを解くことでロボット6の各関節角θ1(t)、θ2(t)、θ3(t)、・・・を計算する装置である。計算された関節角群データは、アクチュエータ制御部114に入力される。
アクチュエータ制御装置120は、入力した関節角群データに基づいて、ロボット6に搭載されているアクチュエータ群を制御する装置である。アクチュエータ制御装置120がアクチュエータ群を制御することによって、ロボット6の機械系122が歩行動作を実施する。
【0026】
ロボット6が実際に行う歩行動作は、予期しない路面の凹凸や、ロボットの構造上のたわみなどによる外乱力の影響を受ける。ロボット6が実際に行っている歩行動作は、ロボット6に搭載されているセンサ群124によって検出される。
実際運動計算装置116は、センサ群124の出力信号に基づいて、ロボット6の実際の運動を計算する。実際運動計算装置116は、例えば左足38の実際の運動や、右足48の実際の運動や、体幹12の実際の運動を計算することができる。実際運動計算装置116で計算されたロボット6の実際運動は、歩容データ補正装置112に入力される。
先に説明したように、歩容データ補正装置112は、実際運動計算装置116で計算されたロボット6の実際運動に基づいて、歩容データ記憶装置110に記憶されている歩容データを補正する。制御装置14は、ロボット6の実際の運動に基づいてフィードバックしながら、ロボット6の歩行動作を制御する。
【0027】
歩容データ補正装置112が、ロボット6の実際運動に基づいて歩容データを補正する処理について説明する。歩容データ補正装置112は、第一に、ロボット6の実際運動に基づいて、左足38の目標とする位置と姿勢と、右足48の目標とする位置と姿勢を補正する。次に、補正した左足38の目標とする位置と姿勢と、補正した右足48の目標とする位置と姿勢に基づいて、体幹目標位置を補正する。
歩容データ補正装置112は、体幹12の目標位置を補正する際に、補正前の体幹12の目標位置を水平面内で移動させるように補正する。即ち、体幹目標位置のz座標は固定されている。
ロボット6のような歩行ロボットでは、体幹12の位置を水平方向に移動するとZMPの位置がよく移動する。それに対して体幹12の位置を鉛直方向に移動してもZMPの位置はあまり移動しない。そのことから、体幹目標位置を水平方向にのみ補正しても、ZMPが目標ZMPに一致するように体幹目標位置を補正することができる。
なお、ロボット6が実際の歩行状況に基づいて歩容データを補正する方法は、上記の方法に限定されるものではない。例えばロボット6がカメラを搭載し、前方の歩行面の凹凸を予め検出しながら、歩容データを補正してもよい。ロボット6は、指示された歩容データを実際の状況に応じて補正する様々な方法を採用することができる。
【0028】
図3は、体幹位置修正装置114の機能的な構成を示すブロック図である。図3に示すように、体幹位置修正装置114は、機能的に、左脚指示位置計算装置142と、左脚補正位置計算装置144と、右脚指示位置計算装置146と、右脚補正位置計算装置148と、左体幹修正量計算装置152と、右体幹修正量計算装置154と、修正量選択装置156と、体幹高さ抽出装置158と、加算器162と、体幹高さ書換装置164とを備えている。
【0029】
左脚指示位置計算装置142は、歩容データ記憶装置110が記憶している事前に準備されていた歩容データを入力し、入力した歩容データが示す左足首関節37に対する左股関節31の相対的な位置関係を計算する。
図4を参照して、左脚指示位置計算装置142の処理を説明する。図4は、歩容データ記憶装置110に記憶されている歩容データに従うときのロボット6を模式的に示している。図4に示すように、歩容データ記憶装置110に記憶されている歩容データが示す体幹12の目標位置をPw0とする。体幹12の目標とする姿勢をDw0(例えばロール角、ピッチ角、ヨー角を記述する行列)とする。左足38の目標とする位置をPL0とする。左足38の目標とする姿勢をDL0とする。右足48の目標とする位置をPR0とする。右足48の目標とする姿勢をDR0とする。
左脚指示位置計算装置142は、体幹12の目標位置Pw0と体幹12の目標姿勢Dw0と、予め記憶している体幹12の代表点Wと左股関節31との相対的な位置関係に基づいて、左股関節31の位置を求める。左股関節31の位置は、左脚リンク30の体幹12側の基端の位置でもある。また左脚指示位置計算装置142は、左足38の目標位置PL0と左足38の目標姿勢DL0と、予め記憶している左足38の代表点Lと左足首関節37との相対的な位置関係に基づいて、左足首関節37の位置を求める。左足首関節37の位置は、左脚リンク30の左足38側の基端の位置でもある。そして、左足首関節37の位置から左股関節31の位置へと向かうベクトルHL0=(xL0、yL0、zL0)を求める。
【0030】
左脚補正位置計算装置144は、歩容データ補正装置112によって補正された歩容データを入力し、入力した補正後の歩容データが示す左足首関節37に対する左股関節31の相対的な位置関係を計算する。
図5を参照して、左脚補正位置計算装置144の処理を説明する。図5は、歩容データ補正装置112による補正後の歩容データに従うときのロボット6を模式的に示している。補正後の歩容データが示す体幹12の目標位置をPw1とする。体幹12の目標とする姿勢をDw1とする。左足38の目標とする位置をPL1とする。左足38の目標とする姿勢をDL1とする。右足48の目標とする位置をPR1とする。右足48の目標とする姿勢をDR1とする。歩容データ補正装置112は、歩容データを補正する際に、体幹12の目標位置を水平方向に移動した位置に補正することから、補正後の体幹12の目標位置Pw1は、補正前の体幹12の目標位置Pw0を水平方向に移動した位置となる。
左脚指示位置計算装置142は、体幹12の目標位置Pw1と体幹12の目標姿勢Dw1と、予め記憶している体幹12の代表点Wと左股関節31との相対的な位置関係に基づいて、左股関節31の位置を求める。また左脚指示位置計算装置142は、左足38の目標位置PL0と左足38の目標姿勢DL0と、予め記憶している左足38の代表点Lと左足首関節37との相対的な位置関係に基づいて、左足首関節股37の位置を求める。そして、左足首関節37の位置から左股関節31の位置へと向かうベクトルHL1=(xL1、yL1、zL1)を求める。なお、ここではzL1=zL0となる。
【0031】
歩容データの補正の前後で、歩容データが示す左足首関節37と左股関節31の距離は変化する。即ち、上記した図4に示すベクトルHL0の長さと、上記した図5に示すベクトルHL1の長さは一致しない。補正後の歩容データが示す左足首関節37と左股関節31の距離(ベクトルHL1の長さ)が、左脚リンク30を最大に伸ばしたときの両端間距離(左脚リンク30の長さ)を超える場合もある。この場合、補正後の歩容データは、左脚リンク30の長さに対して実現できない歩容データである。従来の技術では、このような結果が導出されないようにするために、指示する歩容データが示す左足首関節37と左股関節31の距離の上限を、左脚リンク30の長さに対して十分に低く設定する必要があった。それにより、ロボットは接地脚の膝関節を不自然に曲げた歩行を実施する。
本実施例のロボット6は、歩容データを補正する段階では、左脚リンク30の最大長さの制約から実際には実現できない歩容データに補正することを許容する。換言すれば、事前に準備しておく歩容データが示す左足首関節37と左股関節31の距離の上限を、左脚リンク30の最大長さに略等しく設定してことが可能である。
【0032】
左体幹修正量計算装置152は、図6に示すように、左脚補正位置計算装置144で計算したベクトルHL1のz方向成分zL1を修正したときに、その修正後のベクトル(図中のベクトルHL2)が、左脚指示位置計算装置144で計算したベクトルHL0の長さ|HL0|に等しくなるときの、修正量ΔzLを計算する。修正量ΔzLは、
ΔzL=−zL1+(|HL0|2−(xL1)2−(yL1)2)1/2
と計算することができる。ここで、
|HL0|2=(xL0)2+(yL0)2+(zL0)2
である。ΔzLは正負の符合を持つ値であり、ΔzLが正の値であるときは、z軸の正方向(鉛直上向き)への修正を示す。
図7は、補正後の歩容データが記述する体幹の目標位置Pw1を、計算した修正量ΔzLだけ鉛直方向に修正した位置Pw2を示している。体幹12が位置Pw2に位置する場合、左足首関節37に対する左股関節31の相対位置は、図6に示したベクトルHL2に等しくなる。即ち、左足首関節37と左股関節31の距離が、補正前の歩容データが示す左足首関節37と左股関節31の距離に等しい状態であって、左脚リンク30に関して実現可能な距離となる。従って、補正後の歩容データが記述する体幹12の目標位置PW1を、修正量ΔzLだけ鉛直方向に修正することによって、補正後の歩容データを左脚リンク30の長さに対して実現可能な歩容データに修正することができる。
左体幹修正量計算装置152は、修正量ΔzLを計算する際に、歩容データから計算される足首関節37と左股関節31の距離|HL0|にかえて、左脚リンク30の最大長さを超えない所定値を用いることもできる。左脚リンク30の最大長さとは、左脚リンク30が実現できる両端間の最大距離を意味する。即ち、左膝関節34を伸ばしたときの左脚リンク30の長さを意味する。
【0033】
右脚指示位置計算装置146は、左脚指示位置計算装置142と略同様の処理によって、補正前の歩容データが示す右足首関節47に対する右股関節41の相対的な位置関係を計算する。
右脚補正位置計算装置148は、左脚補正位置計算装置144と略同様の処理によって、補正後の歩容データが示す右足首関節47に対する右股関節41の相対的な位置関係を計算する。
右体幹修正量計算装置154は、左体幹修正量計算装置152と略同様に処理によって、右脚リンクに関する修正量ΔzRを計算する。
【0034】
修正量決定装置156は、左体幹修正量計算装置152で計算した修正量ΔzLと、右体幹修正量計算装置154で計算した修正量ΔzRに基づいて、体幹12の目標位置PW2を鉛直方向に修正するときの体幹修正量Δzを決定する。修正量決定装置156は、左脚リンク30に関する修正量ΔzLと、右脚リンク40に関する修正量ΔzRのうち、小さい方(正確にいうと、マイナス側であって、絶対値が大きなマイナスの値をいう)の修正量を体幹修正量Δzに決定する。即ち、体幹12の目標位置PW1をより鉛直下向きに修正する修正量を選択する。鉛直下方に大きく修正する量によって体幹12の目標位置Pw1を修正すれば、補正後の歩容データは左脚リンク30と右脚リンク40の両者の長さに対して実現可能な歩容データに修正されることとなる。また、両脚の修正量がともに正の値であり、鉛直下方への修正量が計算されない場合には、体幹修正量Δzをゼロと決定する。即ち、体幹12の目標位置PW2を鉛直上向きに修正することを禁止する。ロボット6では、体幹12の位置を鉛直上向きに移動すると、歩行動作に不自然さが発現しやすい。体幹12の目標位置PW2を鉛直上向きに修正することを禁止することにより、ロボット6が不自然な動作をすることを抑制する。修正量決定装置156で決定された修正量Δzは、加算器162に入力される。
体幹高さ抽出装置158は、歩容データ補正装置112による補正後の歩容データが記述する体幹12の目標位置Pw1のz座標を抽出し、加算器162に入力する。
加算器162は、修正量決定装置156から入力した体幹修正量Δzと、体幹高さ抽出装置158から入力したz座標を加算した値を出力する。
体幹高さ書換装置164は、補正後の歩容データが記述する体幹12の目標位置Pw1のz座標を、加算器162から入力した値に書き換える。z座標が書き換えられた体幹12の目標位置は、関節角群計算装置118に入力される。
【0035】
図2に示したように、歩容データ補正装置112は、各種センサ124と実際運動計算装置116で認識される実際の歩行状態に基づいて、歩容データ記憶装置110に記憶されている事前に準備されて歩容データを補正する。
図3に示したように、左脚補正位置計算装置144は、補正した歩容データの体幹目標位置に基づいて、左股関節(左基端)位置を特定する。左脚補正位置計算装置144は、補正した歩容データの左足先目標位置に基づいて、左足首関節37の位置も特定する。
左体幹修正量計算装置152は、左脚補正位置計算装置144が特定した左基端位置を鉛直方向に移動したときに、歩容データ補正装置112が補正した歩容データによるときの足先目標位置(左足首関節の位置に置き換えてもよい)からの距離が所定距離となるときの鉛直移動量を計算する。
そこで利用する所定距離は、歩容データ記憶装置110に記憶されている事前に準備された歩容データによるときの、左股関節31と左足首関節37の距離であってもよいし、左膝関節34を伸ばしたときの左股関節31と左足首関節37の距離であってもよい。
右脚補正位置計算装置144と右体幹修正量計算装置152は、上記と同様にして、右脚リンクの鉛直移動量を計算する。
修正量決定装置156は、脚リンク毎に計算した鉛直移動量から、鉛直下方に最大の移動量を選択する。加算器162は、歩容データ補正装置112が補正した歩容データの体幹目標位置の鉛直方向座標を、修正量決定装置156が選択した鉛直移動量だけ鉛直下方に修正する。
上記に代えて、接地脚についてのみ鉛直移動量を計算するようにしてもよい。実際上は接地脚についての鉛直移動量の方が、遊脚についての鉛直移動量よりも、鉛直下方に向けて大きいことが多いことから、接地脚について鉛直移動量を計算することは、鉛直下方に最大の鉛直移動量を計算するのと数学的に同等の場合が多いからである。
【0036】
図8を参照して、ロボット6の歩行制御方法の流れを説明する。
ステップS2では、事前に準備された歩容データを歩容データ記憶装置110に記憶する。
ステップS4では、ロボット6が歩行制御を開始する。ロボット6は、以下に説明するステップS6からステップS14の処理を、所定の動作周期で繰り返し実行する。
ステップS6では、実際運動計算装置116が、ロボット6に搭載されている各種センサ124の出力に基づいて、ロボット6が実際に行っている運動を計算する。
ステップS8では、歩容データ補正装置112が、ステップS2で指示された歩容データを、ステップS6で計算されたロボット6の実際運動に基づいて補正する。歩容データ補正装置112は、体幹12の目標位置を補正する場合、指示された歩容データが記述する体幹12の目標位置を、水平面内で移動する位置に限定して補正する。
ステップS10では、体幹位置修正装置114が、歩容データ補正装置112による補正後の歩容データが記述する体幹12の目標位置(実際には高さ)の修正処理を行う。ステップS10で行う処理の詳細については後述する。
ステップS12では、関節角群記憶装置118が、ステップS8で補正された歩容データ(体幹12の高さ座標を除く)と、ステップS10で修正された体幹の目標高さ座標を入力し、いわゆる逆キネマティクスを解くことによってロボット6の各関節角θ1(t)、θ2(t)、θ3(t)・・・を計算する。
ステップS14では、アクチュエータ制御装置120が、ステップS12で計算された各関節角を入力し、ロボット6の各関節を動かすアクチュエータ群の動作を制御する。ロボット6は歩行動作を実施する。ロボット6に搭載されている各種センサ124から、ロボット6の実際の運動状態に応じた出力が実際運動計算装置116に入力される。このステップS14の処理が終わると、再びステップS4の処理に戻る。
【0037】
図9を参照して、図8のステップS10で行う処理を詳細に説明する。
ステップS32では、左脚指示位置計算装置142が、ステップS2で記憶された歩容データが示す左足首関節37と左股関節31の相対位置を計算する。詳しくは、左足首関節37に対する左股関節31の位置(図4に示すベクトルHL0)を計算する。
ステップS34では、左脚補正位置計算装置144が、ステップS8による補正後の歩容データが示す左足首関節37と左股関節31の相対位置を計算する。詳しくは、左足首関節37に対する左股関節31の位置(図5に示すベクトルHL1)を計算する。
ステップS36では、左体幹修正量計算装置152が、ステップS34で計算したベクトルHL1のz座標を修正したときに、修正後のベクトル(図6に示すベクトルHL2)の長さが、ステップS32で計算したベクトルHL0の長さと等しくなるときの修正量ΔzLを計算する。図7に示したように、歩容データ補正装置112による補正後の体幹12の目標位置PW1を鉛直方向に修正量ΔzLだけ修正すると、修正後の歩容データが示す左足首関節37と左股関節31の距離が、事前に準備された歩容データが示す左足首関節37と左股関節31の距離と等しくなる。即ち、修正後の歩容データが示す左脚リンク30の両端間距離と、事前に準備された歩容データが示す左脚リンク30の両端間距離が等しくなる。
【0038】
ステップS38では、右脚指示位置計算装置146が、ステップS2で記憶された歩容データが示す右足首関節47と右股関節41の相対位置を計算する。詳しくは、右足首関節47に対する右股関節41の位置を計算する。
ステップS40では、右脚補正位置計算装置148が、ステップS8による補正後の歩容データが示す右足首関節47と右股関節41の相対位置を計算する。詳しくは、右足首関節47に対する右股関節41の位置を計算する。
ステップS42では、右体幹修正量計算装置154が、ステップS40で計算したベクトルのz座標を修正したときに、修正後のベクトルの長さが、ステップS38で計算したベクトルの長さと等しくなるときの修正量ΔzRを計算する。
上記のステップS38〜S42は、ステップS32〜S36で左足リンク30に関して行った処理を、右脚リンク40に関して同様に行うものである。
【0039】
ステップS44では、体幹修正量計算装置156が、ステップS36で計算した左脚リンク30に関する修正量ΔzLと、ステップS42で計算した右脚リンク40に関する修正量ΔzRのなかから、鉛直下方に向けて大きい方を選択する。即ち、鉛直下向きに大きく修正することを示す修正量を選択する。
ステップS46では、ステップS44で選択した修正量が正の値であれば、選択した修正量をゼロに変更する。即ち、選択した修正量が鉛直上向きに修正することを示す修正量であれば、修正量をゼロに変更する。即ち、左右の脚リンクに関する修正量がともに正であり、鉛直下方に向く修正量が計算されない場合には、ゼロを選択するのである。
ステップS48では、ステップS8による補正後の歩容データが記述する体幹12の目標位置の高さ座標を、ステップS44、S46で決定した修正量だけ、鉛直下向きに修正する。
【0040】
上述のように、ロボット6は、事前に準備された歩容データを実際の状況に応じて補正するとともに、補正後の歩容データを左右の脚リンク30、40の長さを考慮して修正する。それにより、事前に準備された歩容データを実際の状況に応じて補正する際に、左右の脚リンク30、40の最大長さの制約から実現できない歩容データに補正されることを許容することができる。事前に準備する歩容データを作成する段階で、左右の脚リンク30、40に伸縮する余裕を与えておく必要がない。ロボット6は、接地脚の膝関節を自然に伸ばした歩行動作を実施することができる。
ロボット6は、補正後の歩容データを左右の脚リンク30、40の長さを考慮して修正する際に、体幹12の目標位置を鉛直下方に移動させた位置に修正する。ロボット6では、体幹の位置を鉛直方向に移動しても、特に鉛直下方に移動しても、ZPMの位置はさほど移動しないことから、この修正処理によってロボット6がバランスを崩すこともない。
【0041】
(実施例2) 本発明を実施する実施例2について図面を参照して説明する。本実施例は、本発明の技術を事前に準備する歩容データの作成装置に適用したものである。本実施例の歩容データ作成装置は、例えば実施例1のロボット6に指示する歩容データを事前に作成するために利用することができる。以下、実施例1のロボット6に指示する歩容データを事前に作成する場合を例に挙げて、本実施例の歩容データ作成装置を詳細に説明する。
【0042】
図10に示すように、本実施例の歩容データ作成装置200は、機能的に、記憶装置210と、体幹軌道データ作成装置214と、平滑軌道データ作成装置220を備えている。
記憶装置210は、オペレータ等が指示した各種のデータを記憶する。記憶装置210は、左足目標位置データ202と、右足目標位置データ204と、体幹初期位置データ206と、目標ZMPデータ207と、ロボット6の諸元を記述しているロボット諸元データ208等を記憶することができる。目標位置データ202、204、体幹初期位置データ206、目標ZMPデータ207は、経過時間とともに座標を変える経時的データである。これらのデータは、オペレータ等によって予め作成される。
図11を参照して、記憶装置210が記憶しているデータについて説明する。左足目標位置データ202は、左足38が接地位置38a、38b、38c・・を順に移動するときの左足38の位置の経時的変化(軌道)を記述している。右足目標位置データ204は、右足48が接地位置48a、48b、48c・・を順に移動するときの右足48の位置の経時的変化(軌道)を記述している。体幹初期位置データ206は、体幹12の代表点Wの経時的な目標位置の経時的変化を記述しており、図11に示す軌道PWA(t)を記述している。体幹12の軌道PWA(t)は、z方向の高さ位置が、ロボット6が直立したときの体幹12の代表点Wの高さ位置zAに固定されている。即ち、軌道PWA(t)は、z座標がzAである水平面上の軌道を示す。本実施例の歩容データの作成装置200は、体幹初期位置データ206が記述している体幹目標位置を初期値として、以下に説明する処理を実施する。目標ZMPデータ207は、図11に示す軌道ZMP(t)を記述している。
体幹初期位置データ206が記述している体幹12の目標位置は、左右の脚リンク30、40の長さを考慮すると、ロボット6にとって実現不可能な位置となりうることがある。歩容データの作成装置200では、この段階において、体幹初期位置データ206が記述している体幹12の目標位置が、ロボット6にとって実現不可能な位置であることを許容する。
ここで、体幹初期位置データ206(軌道PWA(t))を作成する方法を例示しておく。第1に、左足目標位置データ202が記述する左足38の接地位置38a、38b、38c・・と、右足目標位置データ204が記述する右足48の接地位置48a、48b、48c・・に基づいて、目標とするZMPの軌道ZMP(t)を計算する。次に、ロボット諸元データ208を用いて、ロボット6が直立した場合の体幹12の代表点Wの高さ位置zAを計算する。次に、体幹位置12の代表点Wの高さ位置(z座標)を座標zAに固定し、計算した目標ZMPの軌道ZMP(t)を満たす体幹12の代表点Wの軌道PWA(t):(x(t),y(t),zA)を解析計算する。この水平面内の軌道PWA(t)を記述するデータが、体幹初期位置データ206である。体幹初期位置データ206は、従来の歩容データの作成装置を用いて作成することができる。
体幹初期位置データは、必ずしも目標ZMPを正確に満足する体幹目標位置を記述している必要はなく、概算して求めた位置でもよい。また、ロボット6が直立したときの代表点Wの高さ位置zAにかえて、他の高さ位置の軌道を記述するものでもよい。また、必ずしも水平面内に固定された軌道データを記述していなくてもよい。
【0043】
体幹軌道データ作成装置214は、記憶装置210に記憶されているデータに基づいて、体幹軌道データを作成する。体幹軌道データとは、体幹初期位置データが記述する体幹12の目標位置を修正したものである。
平滑軌道データ作成装置216は、体幹軌道データ作成装置214が作成した体幹軌道データが記述する体幹12の鉛直方向の目標軌道を、微分可能な連続曲線を描く平滑な軌道に修正した平滑軌道データを作成する。平滑軌道データ作成装置216は、サンプリングデータ作成部222と、曲線補完部224と、データ比較部226と、サンプリングデータ修正部228等を備えている。
【0044】
図12に示すように、体幹軌道データ作成装置214は、体幹位置仮定装置212と、左脚位置計算装置242、右脚位置計算装置244、左修正量計算装置246、右修正量計算装置248、修正量決定装置250、体幹高さ修正装置251、ZMP計算装置252と、体幹軌道データ記憶装置254を備えている。
体幹位置仮定装置212は、体幹12の目標位置を仮定する装置である。体幹位置仮定装置212は、体幹目標位置を仮定する際に、体幹初期位置データ206に記述されている体幹12の目標位置を、仮定する体幹目標位置の初期値として用いる。
左脚位置計算装置242は、記憶装置210から左足目標位置データ202とロボット諸元データ208を入力し、体幹位置仮定装置212から体幹12の仮定された目標位置を入力する。左脚位置計算装置242は、まずロボット諸元データ208を利用して、体幹12の代表点Wと左股関節31の相対位置を把握する。次いで、把握した代表点Wと左股関節31の相対位置と、体幹位置仮定装置212で仮定された体幹12の目標位置から、体幹12が仮定された目標位置にあるときの左股関節31の位置を計算する。また左脚位置計算装置242は、ロボット諸元データ208を利用して、左足38の代表点Lと左足首関節37の相対位置を把握する。次いで、把握した代表点Lと左足首関節37の相対位置と、左足目標位置データ202が記述している左足38の目標位置から、左足38が左足目標位置データ202に従って運動するときの左足首関節37の位置を計算する。左脚位置計算装置242は、計算した左股関節31の位置と計算した左足首関節37の位置から、左股関節31に対する左足首関節37の相対位置を計算する。即ち、脚位置計算装置242は、図5に示すベクトルHL1に相当するベクトル(以下、相当ベクトルHL1ということがある)を計算する。相当ベクトルHL1は経時的に変化することから、時刻(歩行時間)の関数となる。
【0045】
左修正量計算装置246は、記憶装置210からロボット諸元データ208を入力し、左脚位置計算装置242から左股関節31に対する左足首関節37の相対位置(相当ベクトルHL1)を入力する。
左修正量計算装置246は、まずロボット諸元データ208を利用して、左脚リンク30の最大長さを計算する。左脚リンク30の最大長さを、図6に示すベクトルHL0の長さに対応させると理解しやすい。次いで、左脚位置計算装置242が計算した相当ベクトルHL1のz方向成分を修正したときに、その修正後のベクトル(図6のベクトルHL2に相当する)の長さが、計算した左脚リンク30の最大長さに等しくなるときの、修正量(図6の修正量ΔzLに相当する)を計算する。この修正量は経時的に変化することから、時刻(歩行時間)の関数となる。
【0046】
右脚位置計算装置244は、左脚位置計算装置242と略同様の処理を右脚リンク40に関して行うことで、体幹12の仮定された目標位置と右足目標位置データ204に従ってロボット6が歩行するときの右足首関節47に対する右股関節41の相対的な位置関係を計算する。
右修正量計算装置248は、左修正量計算装置246と略同様に処理によって、右脚リンク40に関する修正量を計算する。
【0047】
修正量決定装置250は、左修正量計算装置246で計算した修正量と、右修正量計算装置248で計算した修正量に基づいて、仮定された体幹12の目標位置を、高さ方向(鉛直方向)に修正する体幹修正量Δzを決定する。即ち、修正量決定装置250は、実施例1のロボット6が備える修正量決定装置152に対応する処理を行う。
修正量決定装置250は、左修正量計算装置246と右修正量計算装置248のそれぞれで計算された修正量を入力し、小さい方の修正量(鉛直上方を正とする)を体幹修正量Δzに採用する。即ち、鉛直下方に向けて大きい方の修正量を採用する。
体幹高さ修正装置251は、体幹位置仮定装置212で仮定された体幹12の目標位置の高さ位置(z座標)を、修正量決定装置250で決定された修正量だけ、修正する。
ZMP計算装置252は、記憶装置210に記憶されているデータと、体幹高さ修正装置251で修正された体幹12の目標位置に基づいて、ロボット6のZMPを計算する。そして、計算したZMPと、目標ZMPデータ207が記述している目標ZMPとを比較し、その偏差を計算する。計算した偏差が所定値以下であれば、体幹高さ修正装置251から入力した体幹12の目標位置を、体幹軌道データ記憶装置254に教示する。体幹軌道データ記憶装置254は、教示された体幹12の目標位置を記憶する。一方、計算した偏差が所定値よりも大きいときは、体幹高さ修正装置251から入力した体幹12の目標位置を、計算した偏差とともに、体幹位置仮定装置212に教示する。
体幹位置仮定装置212は、ZMP計算装置252から、体幹12の目標位置とZMPに関する偏差を入力すると、体幹12の目標位置を再び仮定する。体幹位置仮定装置212が新たに仮定する体幹12の目標位置は、入力したZMPに関する偏差に基づいて、入力した体幹12の目標位置を水平方向に移動した位置である。
体幹位置仮定装置212が新たに仮定した体幹12の目標位置は、再び左脚位置計算装置242と右脚位置計算装置242に入力される。新たに仮定された体幹12の目標位置は、再びz座標が修正され、目標ZMPを満足するか否かが判別される。以上の処理が繰り返されることによって、目標ZMPを満足するとともに左右の脚リンク30、40の長さに関して実現可能な体幹12の目標位置が、体幹軌道データ記憶装置254に記憶される。
体幹軌道データ作成装置214は、体幹初期位置データ206に経時的に記述されているすべての体幹目標位置に対して上述の処理を繰り返す。その結果、体幹軌道データ記憶装置254には、目標ZMPを満足するとともに左右の脚リンク30、40の長さに関して実現可能な体幹軌道PWB(t)を記述する体幹軌道データが記憶される。
【0048】
体幹軌道データ作成装置214が作成する体幹軌道データは、記憶装置210が記憶している左足目標位置データ202や右足目標位置データ204と併せて、ロボット6に指示する歩容データとして利用することができる。この歩容データをロボット6に指示すると、ロボット6は左右の脚リンク30、40を自然に伸ばしながら歩行をすることになる。ロボット6は、実施例1で説明した歩行制御によって、予期せぬ外乱力が作用した場合でも、歩行しつづけることができる。
【0049】
図13は、体幹軌道データPWB(t)が記述する鉛直方向の軌道zB(t)を示している。図13に示すように、体幹軌道データPWB(t)が記述する鉛直方向の軌道zB(t)では、軌道が不連続的に変化する箇所が存在する。このような体幹軌道データPWB(t)をロボット6に指示すると、ロボット6は体幹12を乱暴に上下させて歩行することとなり、ロボット6の歩行動作に不自然さが発現してしまう。
そこで、本実施例の歩容データの作成装置200では、平滑軌道データ作成装置216用意されている。
【0050】
平滑軌道データ216の処理を、図13、図14、図15を参照しながら説明する。平滑軌道データ作成装置216は、体幹軌道データ作成装置214から体幹軌道データPWB(t)を入力する。
図13に示すように、平滑軌道データ作成装置216のサンプリングデータ作成部222は、入力した体幹軌道データPWB(t)が記述する鉛直方向の軌道zB(t)から、1歩時間ΔTの略4分の1の周期毎の軌道点SP1、SP2、SP3、・・・をサンプリングし、軌道点SP1、SP2、SP3、・・・を記述するサンプリングデータを作成する。
図14に示すように、平滑軌道データ作成装置216の曲線補完部224は、サンプリングデータ作成部222が作成したサンプリングデータを入力し、サンプリングデータが記述する軌道点SP1、SP2、SP3、・・・を曲線で補完した補完曲線zE(t)を作成する。詳しくは、まず軌道点SP1、SP2、SP3、・・・を直線で連結した補完屈折線zC(t)を作成し、補完屈折線zC(t)に対して移動平均処理を行うことで、補完曲線zE(t)を作成する。補完曲線zE(t)は、軌道点SP1、SP2、SP3、・・・を微分可能な連続曲線でなぞる軌道である。図14に示すように、補完曲線zE(t)は、軌道点SP1、SP2、SP3、・・・を通るとは限らない。なお、補完曲線zE(t)の作成方法は、この方法に限定されず、様々な近似曲線の作成方法を用いることができる。
【0051】
平滑軌道データ作成装置216のデータ比較部226は、体幹軌道データ作成装置214から入力した体幹軌道データが記述する鉛直方向の軌道zB(t)と、曲線補完部224が作成した補完曲線zE(t)を比較する。そして、例えば図14に示す期間Mのように、補完曲線zE(t)が軌道zB(t)よりも鉛直上方に位置する期間を検出すると、その期間をサンプリングデータ修正部228に指示する。
サンプリングデータ修正部228は、データ比較部226から指示された期間を画定している軌道点をサンプリングデータから抽出し、抽出した軌道点の位置を所定距離だけ鉛直下方に修正する。例えば図14に示す区間Mが指示された場合では、軌道点SP3を修正軌道点SQ3に修正し、軌道点SP4の位置を修正軌道点SQ4に修正にする。
サンプリングデータ修正部228によってサンプリングデータが修正されると、再び曲線補完部224が補完曲線を作成する。曲線補完部224が再作成した補完曲線は、データ比較部226によって軌道zB(t)と再び比較される。再作成した補完曲線が軌道zB(t)よりも再び上方に位置していれば、サンプリングデータ修正部228がサンプリングデータを再び修正する。
平滑軌道データ作成装置216は、上記の処理を繰り返すことによって、図15に示す平滑鉛直軌道zD(t)を作成する。図15に示すSQ1〜SQ9は、サンプリングデータ修正部228によって修正された修正軌道点である。平滑鉛直軌道zD(t)は、体幹軌道データPWB(t)が記述する鉛直方向の軌道zB(t)よりも、常に鉛直下方に位置している。
平滑軌道データ作成装置216は、体幹軌道データPWB(t)が記述している鉛直方向の軌道zB(t)を、作成した平滑鉛直軌道zD(t)に書き換えることによって、平滑軌道データを作成する。
【0052】
図15に示すように、平滑軌道データが記述する平滑鉛直軌道zD(t)は、微分可能な曲線を描いている。平滑軌道データをロボット6に指示すると、ロボット6は体幹12を滑らかに上下させながら歩行することとなり、ロボット6は左右の脚リンク30、40を自然な感じに伸ばして歩行することとなる。
平滑軌道データは、体幹軌道データ作成装置214で作成した体幹軌道データPWB(t)に対して、体幹12の目標位置が鉛直方向に移動されている。それにより、平滑軌道データから計算されるZMPの位置は、目標ZMPの位置に対して偏差を生じている。体幹12の鉛直方向の移動はZMPの位置の変化に影響が少ないことから、この偏差はさほど大きくなく、ロボット6は平滑軌道データを用いて歩行することができる。
【0053】
一方、平滑軌道データ作成装置216で作成した平滑軌道データを、体幹軌道データ作成装置214に入力することができるように構成してもよい。体幹軌道データ作成装置214は、平滑軌道データが記述する体幹12の目標位置を初期値として、新たな体幹軌道データ作成する。新たに作成された体幹軌道データは、再び平滑軌道データ作成装置216に入力されて、新たな平滑軌道データが作成される。それにより、脚リンク30、40を自然に伸ばしながら、ロボット6が体幹12を滑らかに移動させて歩行する歩容データであって、動的バランスが正確に維持される歩容データを作成することができる。
【0054】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。
本明細書または図面に説明した技術要素は、単独であるいは各種の組み合わせによって技術的有用性を発揮するものであり、出願時請求項記載の組み合わせに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【図面の簡単な説明】
【0055】
【図1】実施例1のロボットを模式的に示す図。
【図2】ロボットが搭載している制御装置の構成を示すブロック図。
【図3】制御装置の体幹位置修正装置の構成を示すブロック図。
【図4】事前に準備された歩容データに従うときの脚リンクの両端の位置を説明する図。
【図5】補正された歩容データに従うときの脚リンクの両端の位置を説明する図。
【図6】体幹位置の修正量を説明する図。
【図7】体幹位置が修正されたときの脚リンクの両端の位置を説明する図。
【図8】制御装置の処理の流れを示すフローチャート。
【図9】体幹位置修正装置の処理の流れを示すフローチャート。
【図10】実施例2の歩容データの作成装置の構成を示すブロック図。
【図11】記憶装置に記憶されているデータが記述している軌道を説明する図。
【図12】体幹軌道データ作成装置の構成を示すブロック図。
【図13】体幹軌道データが記述する体幹の鉛直方向の軌道を示す図。
【図14】サンプリングした軌道点から作成した平滑軌道を示す図。
【図15】修正した軌道点から作成した平滑軌道を示す図。
【符号の説明】
【0056】
6:ロボット
12:体幹
14:制御装置
16:左腕リンク
18:右腕リンク
20:頭部
30:左脚リンク
31:左股関節
32:左大腿部
34:左膝関節
36:左下腿部
37:左足首関節
40:右脚リンク
41:右股関節
42:右大腿部
44:右膝関節
46:右下腿部
47:右足首関節
110:歩容データ記憶装置
112:歩容データ補正装置
114:体幹位置修正装置
116:実際運動計算装置
118:関節角群計算装置
120:アクチュエータ制御装置
122:ロボットの機械系
124:各種センサ
142:左脚指示位置計算装置
144:左脚補正位置計算装置
146:右脚指示位置計算装置
148:右脚補正位置計算装置
152:左体幹修正量計算装置
154:右体幹修正量計算装置
156:修正量決定装置
158:体幹高さ抽出装置
164:体幹高さ書換装置
200:歩容データの作成装置
210:記憶装置
212:体幹位置仮定装置
214:体幹軌道データ作成装置
216:平滑軌道データ作成装置
222:サンプリングデータ作成部
224:曲線補完部
226:データ比較部
228:サンプリングデータ修正部
242:左脚位置計算装置
244:右脚位置計算装置
246:左修正量計算装置
248:右修正量計算装置
250:修正量決定装置
251:体幹高さ修正装置
252:ZMP計算装置
254:体幹軌道データ記憶装置
【技術分野】
【0001】
本発明は、体幹(胴部)に複数(典型的には2本)の脚リンクが揺動可能に連結されている機械(脚式ロボット)を歩行させる技術に関する。
【背景技術】
【0002】
体幹と脚リンク群の相対的姿勢を変化させることによって歩行する脚式ロボット(以下では単にロボットと記すことがある)が開発されている。脚式ロボットは、歩容データを用いて歩行する。
歩容データは、足先位置の経時的変化を記述する足先目標位置データと、足先位置の経時的変化に追従して歩行しつづけることを可能とする体幹位置の経時的変化を記述する体幹目標位置データ等から構成されている。
ロボットが転倒しない歩容データを得るためには、ロボットのダイナミクスを考慮に入れた複雑な計算を必要とする。以下に、その一例を説明する。
(1)ロボットの左足先位置と右足先位置の経時的変化を記述する足先目標位置データを指定する。
(2)足先位置の経時的変化を考慮してロボットのZMPが存在しなければならない位置を指定する。ZMP(zero moment point)とは、ロボットに作用する重力や床反力や慣性力の合力によるモーメントがゼロになる床上の点のことである。ZMPが接地脚の足先内にあればロボットは転倒しない。逆にいうと、ロボットが転倒しないためには、ZMPが接地脚の足先内になければならない。そこで接地脚の足先位置を考慮し、下記の関係を満たす目標ZMPを指定する。即ち、一方の脚リンク(例えば左脚)が遊脚になっている間は接地脚(右脚)の足先内に存在し、その一方の脚(左脚)が接地して両足接地状態になった時に新たに接地した脚(左脚)の足先内に向けて移動開始し、それまでに接地していた脚(右脚)が遊脚となる前に新たに接地した脚(左脚)の足先内に移動し終えるZMPを指定する。このようにして指定されたZMPは、目標ZMPと呼ばれる。実際のZMPが目標ZMPのとおりに移動すれば、ロボットは転倒することなく歩行しつづける。
(3)両足先位置の経時変化とそれに追従して変化する目標ZMPが指定されると、体幹位置の経時的変化を仮定してロボットのダイナミクスを計算する。計算する時点で、足先位置が指定されているので、ロボットの体幹位置を仮定するとロボットの姿勢が決まる。ロボットの姿勢が決まると、その姿勢におけるZMPの位置を計算することが可能となる。ZMPの位置を計算するためには、静的な要素に加えて、ロボットに作用する慣性力の影響を織り込まなければならない。仮定した体幹位置の経時的変化を計算に含めることで、ロボットのダイナミクスまで考慮してZMPの位置を計算することが可能となる。体幹位置の経時的変化(体幹軌道)を仮定するとZMPの位置を計算することができることから、目標ZMPに一致するZMPを実現する体幹位置の経時的変化(体幹軌道)を探求することができる。
(4)以上の工程によって予め歩容データを準備しておく。
ロボットは、歩容データからいわゆる逆キネマティクスを解くことによって、各関節の関節角を計算する関節角群計算装置を備えている。ロボットが実際に動作する際には、歩容データに従った歩行を実現する各関節の関節角を計算する。ロボットは各関節の関節角を計算した角度に調節することによって、歩容データに従って歩行する。歩容データに従ってロボットが歩行すれば、実際のZMPが目標ZMPに一致し、ロボットは転倒せずに歩行しつづけることができる。
【0003】
足先位置や体幹位置は、時間に対する位置の変化で記述することができるが、位置と速度と加速度は関連しており、そのうちの一つの量から他の量を計算することができることから、速度や加速度で位置を記述することができる。位置のデータという場合、速度や加速度で位置を特定するデータも含む。
足先位置や体幹位置という場合、足先や体幹は剛体であるから、代表点の位置によって足先や体幹の位置を示すことができる。また、足先位置や体幹位置という場合、位置のみならず、足先姿勢や体幹姿勢を含むものとする。姿勢は、足先や体幹の姿勢角によって記述することができる。歩行中の足先姿勢や体幹姿勢が所定のパターンに従う場合には、歩容データからは姿勢を記述するデータが不要化される。
目標ZMPに一致するZMPをもたらす体幹位置(通常は姿勢を含む)の経時的変化を解析的に探求する手法は、足先位置の変化に追従してロボットが転倒しないように体幹を移動させるのに必要な体幹の目標位置を算出する手法の典型例である。脚式ロボットの体幹目標位置を算出する手法は、これに限定されるものではない。
【0004】
ロボットが事前に準備されている歩容データに従って歩行している間に、ロボットに予期せぬ外乱力が作用することがある。路面の予期せぬ凹凸によって予期せぬ外乱力が作用することもあるし、ロボットに外界から押したり引いたりする外力が加えられることもある。ロボットの構造上のたわみや、ロボットの関節のガタや、ロボットの応答遅れ等に起因してロボットの実際の位置や姿勢が歩容データから外れれば、予期せぬ外乱力が作用したのと同じことになる。予期せぬ外乱力が作用した場合、事前に準備されている歩容データどおりには歩行しつづけることができなくなる。
そこでロボットには、実際の歩行状態に基づいて、事前に準備されている歩容データを補正する手段が用意されている。予期せぬ外乱力が作用したときには、例えば事前に準備されている歩容データの体幹目標位置を補正することによって、予期せぬ外乱力が作用した場合でも歩行しつづけることができるようにしている。
【発明の開示】
【発明が解決しようとする課題】
【0005】
事前に準備されている歩容データを、実際の歩行状態に基づいて補正するときに、脚リンク(特に接地脚)がすでに伸びきった状態になっていると、体幹位置や足先位置を補正した目標位置にまで動かすことができないことがある。この場合、ロボットが転倒する可能性が生じてくる。
そこで従来の技術では、体幹の高さを低く設定した歩容データを事前に準備している。この歩容データを用いると、脚リンクが伸びきった状態となることがない。実際の歩行状態に基づいて補正するときに必要ならば脚リンクをさらに伸ばすことが可能である。脚リンクが伸びきらない歩容データを事前に準備しておくことによって、実際の歩行状態に基づいて補正することができるようにしている。
しかしながら、そのことは結果として、事前に準備されている歩容データのままに歩行する場合には、接地脚を常に曲げた状態で歩行することとなる。実際の歩行状態に基づいて補正できるようにするためには、接地脚を常に曲げておき、必要に応じてさらに伸ばせるようにしておく必要がある以上、通常は接地脚を常に曲げた状態で歩行する他はない。
しかしながら、接地脚を常に曲げながら歩行すると、脚リンクの関節に作用する曲げモーメントが大きくなってしまう。これは、人が膝を曲げて歩行すると大腿部等の筋肉が強く緊張するとともに膝関節に強い負担を感じる一方、膝を伸ばして歩行すると大腿部等の筋肉の緊張が弱められ膝関節に作用する負担も軽くなることに相当する。また人を模した二足歩行ロボットの場合には、接地脚を常に曲げて歩行すると、その歩行動作にロボット特有の不自然さが発現してしまう。
本発明は上記の問題を解決する。本発明では、ロボットが脚リンク群(特に接地脚)を伸ばして歩行することを可能とする技術を提供する。
【課題を解決するための手段】
【0006】
本発明によって具現化される脚式ロボットは、体幹と複数の脚リンクを供えている。各脚リンクの基端は体幹に揺動可能に連結されており、各脚リンクの先端には足先が用意されている。このロボットは、事前に準備されている歩容データを実際の歩行状態に基づいて補正する手段を備えている。
このロボットは、歩容データをさらに修正して用いる。そのために、補正した歩容データの体幹目標位置に基づいて、脚リンクの基端位置を特定する手段と、特定した基端位置を鉛直方向に移動したときに、補正した歩容データの足先目標位置からの距離が所定距離となるときの鉛直移動量を計算する手段を備えている。これらの手段は、脚リンク毎に用意されている。さらに、脚リンク毎に計算した鉛直移動量から、鉛直下方に最大の移動量を選択する手段と、補正した歩容データの体幹目標位置の鉛直座標を、選択手段で選択した鉛直移動量だけ鉛直方向に修正する手段を備えている。
【0007】
前記したように、事前に準備されている歩容データを用いることによって、ロボットは意図した歩行を実現する。予期せぬ外乱力が作用することが避けられないことから、ロボットは、事前に準備されている歩容データを実際の歩行状態に基づいて補正する手段を備えている。このときに、事前に準備されている歩容データによって、脚リンク(特に接地脚)がすでに伸びきった状態になっていると、体幹位置や足先位置を実際の歩行状態に基づいて補正した目標位置にまで動かすことができないことがある。そこで、従来の技術では、事前に準備されている歩容データでは、脚リンクを伸ばしきらない歩行姿勢を記述しておく必要があった。
本発明では、体幹目標位置の鉛直座標を鉛直方向に修正する手段を利用することから、事前に準備しておく歩容データでは脚リンクを伸ばしきらない歩行姿勢を記述しておく必要がなくされる。事前に準備しておいた歩容データに従うと脚リンク(特に接地脚)を伸ばしきることになる状態において、実際の歩行状態に基づいて補正した体幹目標位置や足先目標位置がさらに脚リンクを伸ばすことを要求する場合、従来の技術ではそれ以上に脚リンクを伸ばせないので対応不能となるのに対し、本発明では脚リンクの長さの不足を補うだけ体幹目標位置を鉛直下方に修正することができる。
上記のために、本発明では、補正した歩容データの体幹目標位置に基づいて脚リンクの基端位置を特定する手段を利用する。特定した基端位置と、補正した歩容データの足先目標位置の間の距離を計算する手段を利用する。後記の計算手段は、基端位置を鉛直方向に移動させた場合の基端と足先間の距離を計算することが可能であり、基端と足先間の距離が所定距離となるときの鉛直移動量を計算することができる。このとき、足先の位置は脚リンク先端の位置を一義的に示すことから、足先目標位置自体を計算に用いるようにしてもよいし、あるいは足先目標位置に基づいて脚リンクの先端位置を特定し、特定した先端位置を計算に用いるようにしてもよい。
この所定距離を、有限な長さを持つ脚リンクで実現可能な距離としておけば、修正された歩容データに従って歩行することが可能となる。事前に準備しておく歩容データでは脚リンクを伸ばしきらない歩行姿勢を記述しておく必要がなくなる。
このロボットでは、脚リンク毎に計算した鉛直移動量から、鉛直下方に最大の移動量を選択し、補正後の歩容データが記述している体幹目標位置の鉛直座標を、選択した鉛直移動量だけ修正する。それにより、すべての脚リンクにとって実現可能な歩容データに修正することができる。なお、脚リンクの長さからすると基端を不必要に大きく鉛直下方に修正する脚リンクが登場することになるが、それに対しては脚リンクを曲げることで対応することができる。
鉛直方向に体幹目標位置を修正すると、ZMPが目標ZMPからずれる恐れがあるが、体幹目標位置を鉛直方向に移動させることによってZMPが変化する変化量は小さく、実際には問題とならない。
この脚式ロボットでは、脚リンク群(特に接地脚)を曲げて歩行する歩容データを事前に準備しておく必要がなく、脚リンク群を自然に伸ばして歩行することができる。
【0008】
上記の脚式ロボットでは、事前に準備しておく歩容データで、脚リンク群を自然に伸ばして歩行する運動を記述しておくことが好ましい。
そして、事前に準備されている歩容データの体幹目標位置から特定される基端位置と、事前に準備されている歩容データの足先目標位置から、両者間の距離を計算する手段を備えていることが好ましい。この手段は、脚リンク毎に脚リンクの基端と足先間の距離を計算する。
その上で、鉛直移動量計算手段では、前記の距離計算手段で計算した距離を所定距離として鉛直移動量を計算することが好ましい。
このロボットでは、修正後の歩容データで規定される脚リンクの基端と足先間の距離が、事前に準備しておく歩容データで規定される基端と足先間の距離に近い値となる。それにより、事前に準備しておく歩容データを作成したオペレータ等が意図している歩行姿勢を保ちながら歩行することができる。
【0009】
上記のロボットの選択手段は、脚リンク毎に計算した鉛直移動量の中に、鉛直下方への移動量が存在しなければ、ゼロを選択することが好ましい。
体幹位置を鉛直上方に移動するように修正すると、ロボットの歩行動作に不自然さが発現することがある。このロボットでは、補正された歩容データの体幹目標位置を修正する際に、鉛直上方に修正することを禁止し、鉛直下方にのみ修正する。それにより、脚式ロボットは、より自然に足を伸ばしながら歩行することができる。
この場合、事前に準備しておく歩容データでは、脚リンクを伸ばしきって歩行するレベルに体幹目標位置の鉛直座標を設定しておいてもよい。鉛直下方に修正する機会が多く、鉛直上方に修正する機会が少ないようにしておくことができる。
【0010】
本発明の技術は、脚式ロボットの歩行動作を制御する方法に具現化することもできる。この歩行制御方法は、基端が体幹に揺動可能に連結されているとともに先端に足先を備えている複数の脚リンクを備えているロボットの歩行を制御する。
この歩行制御方法は、ロボットに予定している歩行を記述する歩容データを事前に準備しておく工程と、事前に準備しておいた歩容データを実際の歩行状態に基づいて補正する工程を備えている。
この歩行制御方法では、歩容データをさらに修正して用いる。そのために、補正した歩容データの体幹目標位置に基づいて、脚リンクの基端位置を特定する工程と、特定した基端位置を鉛直方向に移動したときに、補正した歩容データの足先目標位置からの距離が所定距離となるときの鉛直移動量を計算する工程を備えている。これらの工程では、脚リンク毎に計算する。さらに、脚リンク毎に計算した鉛直移動量から鉛直下方に最大の移動量を選択する工程と、補正した歩容データの体幹目標位置の鉛直座標を選択工程で選択した鉛直移動量だけ鉛直方向に修正する工程と、修正した歩容データを脚式ロボットの関節角群計算装置に教示する工程を備えている。
この歩行制御方法によると、脚リンク群(特に接地脚)を無用に曲げて歩行する歩容データを事前に準備しておく必要がなくなる。脚式ロボットは脚リンク群を自然に伸ばしながら歩行することができる。
【0011】
本発明はまた、脚式ロボットが用いる歩容データを事前に準備しておく装置をも提供する。この歩容データの作成装置は、基端が体幹に揺動可能に連結されているとともに先端に足先を備えている複数の脚リンクを備えているロボットに教示する歩容データを事前に準備しておくために利用される。
この歩容データの作成装置は、脚リンク毎に足先位置の経時的変化を記述する足先目標位置データを記憶しておく手段と、その足先目標位置データに追従して歩行することを可能とする体幹目標位置を仮定する手段を備えている。
仮定した体幹目標位置を修正するために、仮定した体幹目標位置に基づいて脚リンクの基端位置を特定する手段と、特定した基端位置を鉛直方向に移動したときに、記憶している足先目標位置からの距離が所定距離となるときの鉛直移動量を計算する手段を備えている。これらの手段は、脚リンク毎に用意されている。
さらに、脚リンク毎に計算した鉛直移動量から、鉛直下方に最大の移動量を選択する手段と、作成しておいた体幹目標位置の鉛直座標を、選択手段で選択した鉛直移動量だけ鉛直方向に修正する手段を備えている。
そして、修正した体幹目標位置が、記憶している足先目標位置データに追従して歩行することを可能とする位置でなければ、体幹位置の経時的変化を再び仮定する手段を備えている。
【0012】
この装置では、足先位置の経時的変化を記述する足先目標位置データに追従して脚式ロボットが転倒しないで歩行することを可能とする体幹位置の経時的変化を仮定する。体幹位置の経時的変化を仮定する段階では、各脚リンクの長さを考慮する必要はない。脚リンクの長さが足らず、実際には実現不能なほど高い体幹目標位置を仮定してもよい。
この装置では、最初に仮定した体幹目標位置に基づいて脚リンクの基端位置を特定する。さらに、特定した基端位置を鉛直方向に移動したときに、鉛直方向に移動した基端位置と、記憶している足先目標位置の間の距離が、所定距離となるときの鉛直移動量を計算する。この鉛直移動量は、脚リンク毎に計算される。
この装置では、脚リンク毎に計算した鉛直移動量から、鉛直下方に最大の移動量を選択し、仮定した体幹目標位置の鉛直座標を、選択した鉛直移動量だけ鉛直方向に修正する。これによって、すべての脚リンクの長さに関して、実現可能な体幹目標位置に修正することができる。
この装置では、修正した体幹目標位置が、記憶している足先目標位置データに追従して歩行することを可能とする位置でなければ、体幹位置の経時的変化を新たに仮定する。新たに仮定された体幹目標位置は、上記の処理によって再び鉛直座標が修正される。体幹位置の経時的変化を仮定し、仮定した体幹目標位置の鉛直座標を修正して、脚式ロボットが歩行することを可能とする体幹目標位置を探求する。導出される体幹目標位置は、脚リンクの長さに関して実現可能な位置となる。
この歩容データの作成装置では、仮定された体幹目標位置を修正する際に、体幹位置を鉛直方向に修正する。脚式ロボットの動的バランスを大きく変化させることなく、各脚リンクの基端と足先の間の距離を大きく変化させることができる。
この歩容データの作成装置によると、脚式ロボットが脚リンク群を自然に伸ばしながら歩行する歩容データを作成することができる。この歩容データの作成装置で作成する歩容データは、上述した脚式ロボットや脚式ロボットの歩行制御方法に有効に用いることができる。上述した脚式ロボットや脚式ロボットの歩行制御方法では、脚リンクを曲げた歩容データを必要とせず、脚リンク群を自然に伸ばしながら歩行する歩容データに対応することが可能だからである。
本発明の技術思想は、歩容データを事前に準備しておく段階で活用することもできれば、歩容データを修正しながら実際の歩行を制御する段階で活用することもできる。
【0013】
前記した鉛直移動量計算手段では、脚リンクの最大長さを所定距離として鉛直方向移動距離を計算することが好ましい。それにより、脚式ロボットの少なくとも1つの脚リンクを最大に伸ばしながら歩行する歩容データを作成することができる。
【0014】
鉛直方向に修正することによって得られた体幹目標位置は経時的に変化し、軌道を規定する。この軌道は不連続に変化するものでなく、スムーズな連続曲線であることが好ましい。
そのためには、鉛直方向に修正した体幹目標位置を所定周期毎にサンプリングする手段と、サンプリングした体幹目標位置を連続曲線でなぞる平滑軌道を作成する手段と、作成した平滑軌道が修正した体幹目標位置よりも鉛直上方に位置する期間を特定する手段と、特定した期間に対応する修正した体幹目標位置を鉛直下向きに所定距離だけ再修正する手段と、再修正後の体幹目標位置を用いて平滑軌道を再度作成する手段をさらに備えていることが好ましい。
【0015】
この歩容データの作成装置では、鉛直下方に修正した体幹目標位置(時間とともに高さと水平面内位置を変える)を所定周期毎にサンプリングし、サンプリングした複数の体幹目標位置を連続曲線で滑らかになぞる平滑軌道を作成する。このように作成した平滑軌道には、平滑化前の体幹目標位置よりも鉛直上方に位置する期間が存在しうる。その期間の平滑軌道は、いずれかの脚リンクに関して実現不可能な軌道となることから、そのままでは歩容データに用いることが難しい。
そこで、この歩容データの作成装置では、作成した平滑軌道が平滑化前の体幹目標位置よりも鉛直上方に位置する期間を特定する。特定された期間については、体幹目標位置を所定距離だけ鉛直下方にさらに修正する。その後に、平滑軌道を再度作成する。
以上の処理を繰り返すことによって、最初に算出した体幹目標位置よりも常に鉛直下方に位置する平滑軌道を得ることができる。脚リンクの長さからみて実現可能な平滑軌道が得られる。
【0016】
本発明の技術は、歩容データを作成する方法にも具現化することができる。この歩容データの作成方法は、基端が体幹に揺動可能に連結されているとともに先端に足先を備えている複数の脚リンクを備えているロボットに教示する歩容データを事前に準備しておくために利用される。
この歩容データの作成方法は、脚リンク毎に足先位置の経時的変化を記述する足先目標位置データを記憶しておく工程と、その足先目標位置データに追従して歩行することを可能とする体幹目標位置を仮定する工程を備えている。
仮定した体幹目標位置を修正するために、仮定した体幹目標位置に基づいて脚リンクの基端位置を特定する工程と、特定した基端位置を鉛直方向に移動したときに、記憶している足先目標位置からの距離が所定距離となるときの鉛直移動量を計算する工程を備えている。これらの工程は、脚リンク毎に実行される。
さらに、脚リンク毎に計算した鉛直移動量から、鉛直下方に最大の移動量を選択する工程と、仮定した体幹目標位置の鉛直座標を、選択工程で選択した鉛直移動量だけ鉛直方向に修正する工程を備えている。
そして、修正した体幹目標位置が、記憶している足先目標位置データに追従して歩行することを可能とする位置でなければ、体幹位置の経時的変化を再び仮定する工程を備えている。
【0017】
この歩容データの作成方法によると、脚式ロボットが脚リンク群を自然に伸ばしながら歩行する歩容データを作成することができる。この歩容データの作成方法で作成する歩容データは、上述した脚式ロボットや脚式ロボットの歩行制御方法に有効に用いることができる。
【発明の効果】
【0018】
本発明により、脚式ロボットが脚リンク群(特に接地脚)を伸ばしながら歩行することを可能とする技術が提供される。
【発明を実施するための最良の形態】
【0019】
最初に、以下に説明する実施例の主要な特徴を列記する。
(形態1) ロボットは、事前に準備された歩容データの体幹目標位置を、実際の歩行状態に基づいて補正する歩容データの補正装置を備えている。
(形態2) ロボットが備える歩容データの補正装置は、事前に準備された歩容データの体幹目標位置を、水平方向に移動した位置に補正する。
(形態3) 歩容データの作成装置は、仮定した体幹目標位置が、与えられた足先目標位置の経時的変化に追従して歩行することを可能とする位置であるか否かを判別する装置を備えている。
【実施例】
【0020】
(実施例1) 本発明を実施する実施例1について図面を参照して説明する。本実施例は、本発明の技術を二足歩行ロボットに適用したものである。
図1に本実施例の二足歩行ロボット(以下、単にロボットと記す)6を示す。図1に示すように、ロボット6は、体幹12と、体幹12に対して揺動可能に接続されている左脚リンク30と右脚リンク40を備えている。またロボット6は、体幹12に対して揺動可能に接続されている左腕リンク16と右腕リンク18と頭部20等を供えている。
図1に示すように、左脚リンク30は、左大腿部32と、左下腿部36と、左大腿部32と左下腿部36を連結している左膝関節34を備えている。左膝関節34は、1軸回りに自由度を持つ関節である。左脚リンク30の基端は左股関節31を介して体幹12に連結されている。左脚リンク30の先端には左足首関節37を介して左足(左足先)38が連結されている。左股関節31は3軸回りに自由度を持つ関節であり、左足首関節37は2軸回りに自由度を持つ関節である。
右脚リンク40は、左脚リンク30と鏡面対称の関係となるように構成されている。右脚リンク40に関して、図1に右股関節41、右大腿部42、右膝関節44、右下腿部46、右足首関節47、右足(右足先)48が示されている。
ロボット6は、各関節を駆動するためのアクチュエータ群を備えている。アクチュエータ群は、後述する制御装置14によって制御される。
ロボット6は、ロボット6の実際の運動を検出するためのセンサ群を備えている。センサ群は、例えば各関節の関節角を検出するためのエンコーダや、体幹12等の運動を検出するための加速度センサ等である。センサ群の出力信号は、後述する制御装置14の処理に利用される。
【0021】
図1に示すように、ロボット6は、右足48が接地している間に左脚リンク30を遊脚として左足38を軌道7のように移動させ、左足38が接地すると今度は右脚リンク40を遊脚として右足48を軌道8のように移動させ、以下同様に、左足38を軌道9のように移動させ、次に右足48を軌道10のように移動させて歩行を続ける。
本実施例では、図1に示すように、ロボット6の歩行方向をx軸とし、体側方向をy軸とし、高さ方向をz軸とする。xy平面は水平面であり、z軸方向は鉛直方向である。
【0022】
ロボット6は、図1に示す歩行動作をするために歩容データを必要とする。歩容データは、オペレータによって事前に準備され、ロボット6に指示される。事前に準備する歩容データは、コンピュータ装置を利用した歩容データ作成装置によって作成することができる。歩容データの作成過程を簡単に説明すると、オペレータは足先目標位置データを用意し、歩容データ作成装置に教示する。歩容データ作成装置は、教示された足先目標位置データとロボット6の力学モデルに基づいて、予定された状況で歩行することを可能とする体幹12の運動を計算し、計算した体幹12の運動を記述する体幹目標位置データを作成する。
ロボット6が利用する歩容データは、左足38の目標とする位置と姿勢の経時的変化を記述する左足目標位置データや、右足48の目標とする位置と姿勢の経時的変化を記述する右足目標位置データや、体幹12の目標とする位置と姿勢の経時的変化を記述する体幹目標位置データや、左右の腕先の目標とする位置と姿勢の経時的変化を記述する腕先目標位置データや、目標ZMPの経時的変化を記述している目標ZMPデータ等を備えている。
体幹目標位置データは、体幹12の位置を代表点Wの位置PW(xW,yW,zW)で記述し、体幹12の姿勢を体幹12の姿勢角(ロール角、ピッチ角、ヨー角)で記述している。左足目標位置データは、左足38の位置を代表点Lの位置PL(xL,yL,zL)で記述し、左足38の姿勢を左足38の姿勢角で記述している。右足目標位置データは、右足48の位置を代表点Rの位置PR(xR,yR,zR)で記述し、右足48の姿勢を右足48の姿勢角で記述している。位置や姿勢のデータは、経過時間とともに値を変える経時的データである。
【0023】
ロボット6は、ロボット6の動作を制御する制御装置14を備えている。制御装置14は、CPU、ROM、RAM、ハードディスク等を備えている。制御装置14のハードウェア構成は汎用のコンピュータと同じであり、説明は省略する。
【0024】
図2は、制御装置14の機能的な構成を示すブロック図である。図2に示すように、制御装置14は、機能的に、歩容データ記憶装置110と、歩容データ補正装置112と、体幹位置修正装置114と、関節角群計算装置118と、アクチュエータ制御装置120と、実際運動計算装置116等を備えている。図2に示す要素のうち、ロボットの機械系122と各種センサ124は、制御装置14の構成要素に含まれないが、以下の説明を明瞭にするために併せて記載している。
制御装置14は、全体が物理的に1つの装置に含まれていてもよいし、物理的に分離された装置ごとに分けて収容されていてもよい。また制御装置14の各要素は、必ずしもロボット6に搭載されていなくてもよい。ロボット6外に配備され、ロボット6に無線又は有線で指示するようにしてもよい。
【0025】
歩容データ記憶装置110は、オペレータ等が事前に準備した歩容データを記憶している。歩容データ記憶装置110が記憶している歩容データは、歩容データ補正装置112と、体幹位置修正装置114に入力される。
歩容データ補正装置112は、歩容データ記憶装置110が記憶している歩容データと、実際運動計算装置116から入力したロボット6の実際運動に基づいて、歩容データ記憶装置110から入力した歩容データを補正する。補正された歩容データは、体幹位置修正装置114と、関節角群計算装置118に入力される。ただし、補正後の体幹目標位置データについては、関節角群計算装置118には入力されず、体幹位置修正装置114のみに入力される。
体幹位置修正装置114は、歩容データ補正装置112によって補正された体幹12のz座標を、左脚リンク30と右脚リンク30の長さを考慮して修正する。体幹位置修正装置114の詳細については後述する。
関節角群計算装置118は、体幹目標位置データや左足38や右足48等の各部の目標位置データを入力し、入力した目標位置に基づいて、いわゆる逆キネマティクスを解くことでロボット6の各関節角θ1(t)、θ2(t)、θ3(t)、・・・を計算する装置である。計算された関節角群データは、アクチュエータ制御部114に入力される。
アクチュエータ制御装置120は、入力した関節角群データに基づいて、ロボット6に搭載されているアクチュエータ群を制御する装置である。アクチュエータ制御装置120がアクチュエータ群を制御することによって、ロボット6の機械系122が歩行動作を実施する。
【0026】
ロボット6が実際に行う歩行動作は、予期しない路面の凹凸や、ロボットの構造上のたわみなどによる外乱力の影響を受ける。ロボット6が実際に行っている歩行動作は、ロボット6に搭載されているセンサ群124によって検出される。
実際運動計算装置116は、センサ群124の出力信号に基づいて、ロボット6の実際の運動を計算する。実際運動計算装置116は、例えば左足38の実際の運動や、右足48の実際の運動や、体幹12の実際の運動を計算することができる。実際運動計算装置116で計算されたロボット6の実際運動は、歩容データ補正装置112に入力される。
先に説明したように、歩容データ補正装置112は、実際運動計算装置116で計算されたロボット6の実際運動に基づいて、歩容データ記憶装置110に記憶されている歩容データを補正する。制御装置14は、ロボット6の実際の運動に基づいてフィードバックしながら、ロボット6の歩行動作を制御する。
【0027】
歩容データ補正装置112が、ロボット6の実際運動に基づいて歩容データを補正する処理について説明する。歩容データ補正装置112は、第一に、ロボット6の実際運動に基づいて、左足38の目標とする位置と姿勢と、右足48の目標とする位置と姿勢を補正する。次に、補正した左足38の目標とする位置と姿勢と、補正した右足48の目標とする位置と姿勢に基づいて、体幹目標位置を補正する。
歩容データ補正装置112は、体幹12の目標位置を補正する際に、補正前の体幹12の目標位置を水平面内で移動させるように補正する。即ち、体幹目標位置のz座標は固定されている。
ロボット6のような歩行ロボットでは、体幹12の位置を水平方向に移動するとZMPの位置がよく移動する。それに対して体幹12の位置を鉛直方向に移動してもZMPの位置はあまり移動しない。そのことから、体幹目標位置を水平方向にのみ補正しても、ZMPが目標ZMPに一致するように体幹目標位置を補正することができる。
なお、ロボット6が実際の歩行状況に基づいて歩容データを補正する方法は、上記の方法に限定されるものではない。例えばロボット6がカメラを搭載し、前方の歩行面の凹凸を予め検出しながら、歩容データを補正してもよい。ロボット6は、指示された歩容データを実際の状況に応じて補正する様々な方法を採用することができる。
【0028】
図3は、体幹位置修正装置114の機能的な構成を示すブロック図である。図3に示すように、体幹位置修正装置114は、機能的に、左脚指示位置計算装置142と、左脚補正位置計算装置144と、右脚指示位置計算装置146と、右脚補正位置計算装置148と、左体幹修正量計算装置152と、右体幹修正量計算装置154と、修正量選択装置156と、体幹高さ抽出装置158と、加算器162と、体幹高さ書換装置164とを備えている。
【0029】
左脚指示位置計算装置142は、歩容データ記憶装置110が記憶している事前に準備されていた歩容データを入力し、入力した歩容データが示す左足首関節37に対する左股関節31の相対的な位置関係を計算する。
図4を参照して、左脚指示位置計算装置142の処理を説明する。図4は、歩容データ記憶装置110に記憶されている歩容データに従うときのロボット6を模式的に示している。図4に示すように、歩容データ記憶装置110に記憶されている歩容データが示す体幹12の目標位置をPw0とする。体幹12の目標とする姿勢をDw0(例えばロール角、ピッチ角、ヨー角を記述する行列)とする。左足38の目標とする位置をPL0とする。左足38の目標とする姿勢をDL0とする。右足48の目標とする位置をPR0とする。右足48の目標とする姿勢をDR0とする。
左脚指示位置計算装置142は、体幹12の目標位置Pw0と体幹12の目標姿勢Dw0と、予め記憶している体幹12の代表点Wと左股関節31との相対的な位置関係に基づいて、左股関節31の位置を求める。左股関節31の位置は、左脚リンク30の体幹12側の基端の位置でもある。また左脚指示位置計算装置142は、左足38の目標位置PL0と左足38の目標姿勢DL0と、予め記憶している左足38の代表点Lと左足首関節37との相対的な位置関係に基づいて、左足首関節37の位置を求める。左足首関節37の位置は、左脚リンク30の左足38側の基端の位置でもある。そして、左足首関節37の位置から左股関節31の位置へと向かうベクトルHL0=(xL0、yL0、zL0)を求める。
【0030】
左脚補正位置計算装置144は、歩容データ補正装置112によって補正された歩容データを入力し、入力した補正後の歩容データが示す左足首関節37に対する左股関節31の相対的な位置関係を計算する。
図5を参照して、左脚補正位置計算装置144の処理を説明する。図5は、歩容データ補正装置112による補正後の歩容データに従うときのロボット6を模式的に示している。補正後の歩容データが示す体幹12の目標位置をPw1とする。体幹12の目標とする姿勢をDw1とする。左足38の目標とする位置をPL1とする。左足38の目標とする姿勢をDL1とする。右足48の目標とする位置をPR1とする。右足48の目標とする姿勢をDR1とする。歩容データ補正装置112は、歩容データを補正する際に、体幹12の目標位置を水平方向に移動した位置に補正することから、補正後の体幹12の目標位置Pw1は、補正前の体幹12の目標位置Pw0を水平方向に移動した位置となる。
左脚指示位置計算装置142は、体幹12の目標位置Pw1と体幹12の目標姿勢Dw1と、予め記憶している体幹12の代表点Wと左股関節31との相対的な位置関係に基づいて、左股関節31の位置を求める。また左脚指示位置計算装置142は、左足38の目標位置PL0と左足38の目標姿勢DL0と、予め記憶している左足38の代表点Lと左足首関節37との相対的な位置関係に基づいて、左足首関節股37の位置を求める。そして、左足首関節37の位置から左股関節31の位置へと向かうベクトルHL1=(xL1、yL1、zL1)を求める。なお、ここではzL1=zL0となる。
【0031】
歩容データの補正の前後で、歩容データが示す左足首関節37と左股関節31の距離は変化する。即ち、上記した図4に示すベクトルHL0の長さと、上記した図5に示すベクトルHL1の長さは一致しない。補正後の歩容データが示す左足首関節37と左股関節31の距離(ベクトルHL1の長さ)が、左脚リンク30を最大に伸ばしたときの両端間距離(左脚リンク30の長さ)を超える場合もある。この場合、補正後の歩容データは、左脚リンク30の長さに対して実現できない歩容データである。従来の技術では、このような結果が導出されないようにするために、指示する歩容データが示す左足首関節37と左股関節31の距離の上限を、左脚リンク30の長さに対して十分に低く設定する必要があった。それにより、ロボットは接地脚の膝関節を不自然に曲げた歩行を実施する。
本実施例のロボット6は、歩容データを補正する段階では、左脚リンク30の最大長さの制約から実際には実現できない歩容データに補正することを許容する。換言すれば、事前に準備しておく歩容データが示す左足首関節37と左股関節31の距離の上限を、左脚リンク30の最大長さに略等しく設定してことが可能である。
【0032】
左体幹修正量計算装置152は、図6に示すように、左脚補正位置計算装置144で計算したベクトルHL1のz方向成分zL1を修正したときに、その修正後のベクトル(図中のベクトルHL2)が、左脚指示位置計算装置144で計算したベクトルHL0の長さ|HL0|に等しくなるときの、修正量ΔzLを計算する。修正量ΔzLは、
ΔzL=−zL1+(|HL0|2−(xL1)2−(yL1)2)1/2
と計算することができる。ここで、
|HL0|2=(xL0)2+(yL0)2+(zL0)2
である。ΔzLは正負の符合を持つ値であり、ΔzLが正の値であるときは、z軸の正方向(鉛直上向き)への修正を示す。
図7は、補正後の歩容データが記述する体幹の目標位置Pw1を、計算した修正量ΔzLだけ鉛直方向に修正した位置Pw2を示している。体幹12が位置Pw2に位置する場合、左足首関節37に対する左股関節31の相対位置は、図6に示したベクトルHL2に等しくなる。即ち、左足首関節37と左股関節31の距離が、補正前の歩容データが示す左足首関節37と左股関節31の距離に等しい状態であって、左脚リンク30に関して実現可能な距離となる。従って、補正後の歩容データが記述する体幹12の目標位置PW1を、修正量ΔzLだけ鉛直方向に修正することによって、補正後の歩容データを左脚リンク30の長さに対して実現可能な歩容データに修正することができる。
左体幹修正量計算装置152は、修正量ΔzLを計算する際に、歩容データから計算される足首関節37と左股関節31の距離|HL0|にかえて、左脚リンク30の最大長さを超えない所定値を用いることもできる。左脚リンク30の最大長さとは、左脚リンク30が実現できる両端間の最大距離を意味する。即ち、左膝関節34を伸ばしたときの左脚リンク30の長さを意味する。
【0033】
右脚指示位置計算装置146は、左脚指示位置計算装置142と略同様の処理によって、補正前の歩容データが示す右足首関節47に対する右股関節41の相対的な位置関係を計算する。
右脚補正位置計算装置148は、左脚補正位置計算装置144と略同様の処理によって、補正後の歩容データが示す右足首関節47に対する右股関節41の相対的な位置関係を計算する。
右体幹修正量計算装置154は、左体幹修正量計算装置152と略同様に処理によって、右脚リンクに関する修正量ΔzRを計算する。
【0034】
修正量決定装置156は、左体幹修正量計算装置152で計算した修正量ΔzLと、右体幹修正量計算装置154で計算した修正量ΔzRに基づいて、体幹12の目標位置PW2を鉛直方向に修正するときの体幹修正量Δzを決定する。修正量決定装置156は、左脚リンク30に関する修正量ΔzLと、右脚リンク40に関する修正量ΔzRのうち、小さい方(正確にいうと、マイナス側であって、絶対値が大きなマイナスの値をいう)の修正量を体幹修正量Δzに決定する。即ち、体幹12の目標位置PW1をより鉛直下向きに修正する修正量を選択する。鉛直下方に大きく修正する量によって体幹12の目標位置Pw1を修正すれば、補正後の歩容データは左脚リンク30と右脚リンク40の両者の長さに対して実現可能な歩容データに修正されることとなる。また、両脚の修正量がともに正の値であり、鉛直下方への修正量が計算されない場合には、体幹修正量Δzをゼロと決定する。即ち、体幹12の目標位置PW2を鉛直上向きに修正することを禁止する。ロボット6では、体幹12の位置を鉛直上向きに移動すると、歩行動作に不自然さが発現しやすい。体幹12の目標位置PW2を鉛直上向きに修正することを禁止することにより、ロボット6が不自然な動作をすることを抑制する。修正量決定装置156で決定された修正量Δzは、加算器162に入力される。
体幹高さ抽出装置158は、歩容データ補正装置112による補正後の歩容データが記述する体幹12の目標位置Pw1のz座標を抽出し、加算器162に入力する。
加算器162は、修正量決定装置156から入力した体幹修正量Δzと、体幹高さ抽出装置158から入力したz座標を加算した値を出力する。
体幹高さ書換装置164は、補正後の歩容データが記述する体幹12の目標位置Pw1のz座標を、加算器162から入力した値に書き換える。z座標が書き換えられた体幹12の目標位置は、関節角群計算装置118に入力される。
【0035】
図2に示したように、歩容データ補正装置112は、各種センサ124と実際運動計算装置116で認識される実際の歩行状態に基づいて、歩容データ記憶装置110に記憶されている事前に準備されて歩容データを補正する。
図3に示したように、左脚補正位置計算装置144は、補正した歩容データの体幹目標位置に基づいて、左股関節(左基端)位置を特定する。左脚補正位置計算装置144は、補正した歩容データの左足先目標位置に基づいて、左足首関節37の位置も特定する。
左体幹修正量計算装置152は、左脚補正位置計算装置144が特定した左基端位置を鉛直方向に移動したときに、歩容データ補正装置112が補正した歩容データによるときの足先目標位置(左足首関節の位置に置き換えてもよい)からの距離が所定距離となるときの鉛直移動量を計算する。
そこで利用する所定距離は、歩容データ記憶装置110に記憶されている事前に準備された歩容データによるときの、左股関節31と左足首関節37の距離であってもよいし、左膝関節34を伸ばしたときの左股関節31と左足首関節37の距離であってもよい。
右脚補正位置計算装置144と右体幹修正量計算装置152は、上記と同様にして、右脚リンクの鉛直移動量を計算する。
修正量決定装置156は、脚リンク毎に計算した鉛直移動量から、鉛直下方に最大の移動量を選択する。加算器162は、歩容データ補正装置112が補正した歩容データの体幹目標位置の鉛直方向座標を、修正量決定装置156が選択した鉛直移動量だけ鉛直下方に修正する。
上記に代えて、接地脚についてのみ鉛直移動量を計算するようにしてもよい。実際上は接地脚についての鉛直移動量の方が、遊脚についての鉛直移動量よりも、鉛直下方に向けて大きいことが多いことから、接地脚について鉛直移動量を計算することは、鉛直下方に最大の鉛直移動量を計算するのと数学的に同等の場合が多いからである。
【0036】
図8を参照して、ロボット6の歩行制御方法の流れを説明する。
ステップS2では、事前に準備された歩容データを歩容データ記憶装置110に記憶する。
ステップS4では、ロボット6が歩行制御を開始する。ロボット6は、以下に説明するステップS6からステップS14の処理を、所定の動作周期で繰り返し実行する。
ステップS6では、実際運動計算装置116が、ロボット6に搭載されている各種センサ124の出力に基づいて、ロボット6が実際に行っている運動を計算する。
ステップS8では、歩容データ補正装置112が、ステップS2で指示された歩容データを、ステップS6で計算されたロボット6の実際運動に基づいて補正する。歩容データ補正装置112は、体幹12の目標位置を補正する場合、指示された歩容データが記述する体幹12の目標位置を、水平面内で移動する位置に限定して補正する。
ステップS10では、体幹位置修正装置114が、歩容データ補正装置112による補正後の歩容データが記述する体幹12の目標位置(実際には高さ)の修正処理を行う。ステップS10で行う処理の詳細については後述する。
ステップS12では、関節角群記憶装置118が、ステップS8で補正された歩容データ(体幹12の高さ座標を除く)と、ステップS10で修正された体幹の目標高さ座標を入力し、いわゆる逆キネマティクスを解くことによってロボット6の各関節角θ1(t)、θ2(t)、θ3(t)・・・を計算する。
ステップS14では、アクチュエータ制御装置120が、ステップS12で計算された各関節角を入力し、ロボット6の各関節を動かすアクチュエータ群の動作を制御する。ロボット6は歩行動作を実施する。ロボット6に搭載されている各種センサ124から、ロボット6の実際の運動状態に応じた出力が実際運動計算装置116に入力される。このステップS14の処理が終わると、再びステップS4の処理に戻る。
【0037】
図9を参照して、図8のステップS10で行う処理を詳細に説明する。
ステップS32では、左脚指示位置計算装置142が、ステップS2で記憶された歩容データが示す左足首関節37と左股関節31の相対位置を計算する。詳しくは、左足首関節37に対する左股関節31の位置(図4に示すベクトルHL0)を計算する。
ステップS34では、左脚補正位置計算装置144が、ステップS8による補正後の歩容データが示す左足首関節37と左股関節31の相対位置を計算する。詳しくは、左足首関節37に対する左股関節31の位置(図5に示すベクトルHL1)を計算する。
ステップS36では、左体幹修正量計算装置152が、ステップS34で計算したベクトルHL1のz座標を修正したときに、修正後のベクトル(図6に示すベクトルHL2)の長さが、ステップS32で計算したベクトルHL0の長さと等しくなるときの修正量ΔzLを計算する。図7に示したように、歩容データ補正装置112による補正後の体幹12の目標位置PW1を鉛直方向に修正量ΔzLだけ修正すると、修正後の歩容データが示す左足首関節37と左股関節31の距離が、事前に準備された歩容データが示す左足首関節37と左股関節31の距離と等しくなる。即ち、修正後の歩容データが示す左脚リンク30の両端間距離と、事前に準備された歩容データが示す左脚リンク30の両端間距離が等しくなる。
【0038】
ステップS38では、右脚指示位置計算装置146が、ステップS2で記憶された歩容データが示す右足首関節47と右股関節41の相対位置を計算する。詳しくは、右足首関節47に対する右股関節41の位置を計算する。
ステップS40では、右脚補正位置計算装置148が、ステップS8による補正後の歩容データが示す右足首関節47と右股関節41の相対位置を計算する。詳しくは、右足首関節47に対する右股関節41の位置を計算する。
ステップS42では、右体幹修正量計算装置154が、ステップS40で計算したベクトルのz座標を修正したときに、修正後のベクトルの長さが、ステップS38で計算したベクトルの長さと等しくなるときの修正量ΔzRを計算する。
上記のステップS38〜S42は、ステップS32〜S36で左足リンク30に関して行った処理を、右脚リンク40に関して同様に行うものである。
【0039】
ステップS44では、体幹修正量計算装置156が、ステップS36で計算した左脚リンク30に関する修正量ΔzLと、ステップS42で計算した右脚リンク40に関する修正量ΔzRのなかから、鉛直下方に向けて大きい方を選択する。即ち、鉛直下向きに大きく修正することを示す修正量を選択する。
ステップS46では、ステップS44で選択した修正量が正の値であれば、選択した修正量をゼロに変更する。即ち、選択した修正量が鉛直上向きに修正することを示す修正量であれば、修正量をゼロに変更する。即ち、左右の脚リンクに関する修正量がともに正であり、鉛直下方に向く修正量が計算されない場合には、ゼロを選択するのである。
ステップS48では、ステップS8による補正後の歩容データが記述する体幹12の目標位置の高さ座標を、ステップS44、S46で決定した修正量だけ、鉛直下向きに修正する。
【0040】
上述のように、ロボット6は、事前に準備された歩容データを実際の状況に応じて補正するとともに、補正後の歩容データを左右の脚リンク30、40の長さを考慮して修正する。それにより、事前に準備された歩容データを実際の状況に応じて補正する際に、左右の脚リンク30、40の最大長さの制約から実現できない歩容データに補正されることを許容することができる。事前に準備する歩容データを作成する段階で、左右の脚リンク30、40に伸縮する余裕を与えておく必要がない。ロボット6は、接地脚の膝関節を自然に伸ばした歩行動作を実施することができる。
ロボット6は、補正後の歩容データを左右の脚リンク30、40の長さを考慮して修正する際に、体幹12の目標位置を鉛直下方に移動させた位置に修正する。ロボット6では、体幹の位置を鉛直方向に移動しても、特に鉛直下方に移動しても、ZPMの位置はさほど移動しないことから、この修正処理によってロボット6がバランスを崩すこともない。
【0041】
(実施例2) 本発明を実施する実施例2について図面を参照して説明する。本実施例は、本発明の技術を事前に準備する歩容データの作成装置に適用したものである。本実施例の歩容データ作成装置は、例えば実施例1のロボット6に指示する歩容データを事前に作成するために利用することができる。以下、実施例1のロボット6に指示する歩容データを事前に作成する場合を例に挙げて、本実施例の歩容データ作成装置を詳細に説明する。
【0042】
図10に示すように、本実施例の歩容データ作成装置200は、機能的に、記憶装置210と、体幹軌道データ作成装置214と、平滑軌道データ作成装置220を備えている。
記憶装置210は、オペレータ等が指示した各種のデータを記憶する。記憶装置210は、左足目標位置データ202と、右足目標位置データ204と、体幹初期位置データ206と、目標ZMPデータ207と、ロボット6の諸元を記述しているロボット諸元データ208等を記憶することができる。目標位置データ202、204、体幹初期位置データ206、目標ZMPデータ207は、経過時間とともに座標を変える経時的データである。これらのデータは、オペレータ等によって予め作成される。
図11を参照して、記憶装置210が記憶しているデータについて説明する。左足目標位置データ202は、左足38が接地位置38a、38b、38c・・を順に移動するときの左足38の位置の経時的変化(軌道)を記述している。右足目標位置データ204は、右足48が接地位置48a、48b、48c・・を順に移動するときの右足48の位置の経時的変化(軌道)を記述している。体幹初期位置データ206は、体幹12の代表点Wの経時的な目標位置の経時的変化を記述しており、図11に示す軌道PWA(t)を記述している。体幹12の軌道PWA(t)は、z方向の高さ位置が、ロボット6が直立したときの体幹12の代表点Wの高さ位置zAに固定されている。即ち、軌道PWA(t)は、z座標がzAである水平面上の軌道を示す。本実施例の歩容データの作成装置200は、体幹初期位置データ206が記述している体幹目標位置を初期値として、以下に説明する処理を実施する。目標ZMPデータ207は、図11に示す軌道ZMP(t)を記述している。
体幹初期位置データ206が記述している体幹12の目標位置は、左右の脚リンク30、40の長さを考慮すると、ロボット6にとって実現不可能な位置となりうることがある。歩容データの作成装置200では、この段階において、体幹初期位置データ206が記述している体幹12の目標位置が、ロボット6にとって実現不可能な位置であることを許容する。
ここで、体幹初期位置データ206(軌道PWA(t))を作成する方法を例示しておく。第1に、左足目標位置データ202が記述する左足38の接地位置38a、38b、38c・・と、右足目標位置データ204が記述する右足48の接地位置48a、48b、48c・・に基づいて、目標とするZMPの軌道ZMP(t)を計算する。次に、ロボット諸元データ208を用いて、ロボット6が直立した場合の体幹12の代表点Wの高さ位置zAを計算する。次に、体幹位置12の代表点Wの高さ位置(z座標)を座標zAに固定し、計算した目標ZMPの軌道ZMP(t)を満たす体幹12の代表点Wの軌道PWA(t):(x(t),y(t),zA)を解析計算する。この水平面内の軌道PWA(t)を記述するデータが、体幹初期位置データ206である。体幹初期位置データ206は、従来の歩容データの作成装置を用いて作成することができる。
体幹初期位置データは、必ずしも目標ZMPを正確に満足する体幹目標位置を記述している必要はなく、概算して求めた位置でもよい。また、ロボット6が直立したときの代表点Wの高さ位置zAにかえて、他の高さ位置の軌道を記述するものでもよい。また、必ずしも水平面内に固定された軌道データを記述していなくてもよい。
【0043】
体幹軌道データ作成装置214は、記憶装置210に記憶されているデータに基づいて、体幹軌道データを作成する。体幹軌道データとは、体幹初期位置データが記述する体幹12の目標位置を修正したものである。
平滑軌道データ作成装置216は、体幹軌道データ作成装置214が作成した体幹軌道データが記述する体幹12の鉛直方向の目標軌道を、微分可能な連続曲線を描く平滑な軌道に修正した平滑軌道データを作成する。平滑軌道データ作成装置216は、サンプリングデータ作成部222と、曲線補完部224と、データ比較部226と、サンプリングデータ修正部228等を備えている。
【0044】
図12に示すように、体幹軌道データ作成装置214は、体幹位置仮定装置212と、左脚位置計算装置242、右脚位置計算装置244、左修正量計算装置246、右修正量計算装置248、修正量決定装置250、体幹高さ修正装置251、ZMP計算装置252と、体幹軌道データ記憶装置254を備えている。
体幹位置仮定装置212は、体幹12の目標位置を仮定する装置である。体幹位置仮定装置212は、体幹目標位置を仮定する際に、体幹初期位置データ206に記述されている体幹12の目標位置を、仮定する体幹目標位置の初期値として用いる。
左脚位置計算装置242は、記憶装置210から左足目標位置データ202とロボット諸元データ208を入力し、体幹位置仮定装置212から体幹12の仮定された目標位置を入力する。左脚位置計算装置242は、まずロボット諸元データ208を利用して、体幹12の代表点Wと左股関節31の相対位置を把握する。次いで、把握した代表点Wと左股関節31の相対位置と、体幹位置仮定装置212で仮定された体幹12の目標位置から、体幹12が仮定された目標位置にあるときの左股関節31の位置を計算する。また左脚位置計算装置242は、ロボット諸元データ208を利用して、左足38の代表点Lと左足首関節37の相対位置を把握する。次いで、把握した代表点Lと左足首関節37の相対位置と、左足目標位置データ202が記述している左足38の目標位置から、左足38が左足目標位置データ202に従って運動するときの左足首関節37の位置を計算する。左脚位置計算装置242は、計算した左股関節31の位置と計算した左足首関節37の位置から、左股関節31に対する左足首関節37の相対位置を計算する。即ち、脚位置計算装置242は、図5に示すベクトルHL1に相当するベクトル(以下、相当ベクトルHL1ということがある)を計算する。相当ベクトルHL1は経時的に変化することから、時刻(歩行時間)の関数となる。
【0045】
左修正量計算装置246は、記憶装置210からロボット諸元データ208を入力し、左脚位置計算装置242から左股関節31に対する左足首関節37の相対位置(相当ベクトルHL1)を入力する。
左修正量計算装置246は、まずロボット諸元データ208を利用して、左脚リンク30の最大長さを計算する。左脚リンク30の最大長さを、図6に示すベクトルHL0の長さに対応させると理解しやすい。次いで、左脚位置計算装置242が計算した相当ベクトルHL1のz方向成分を修正したときに、その修正後のベクトル(図6のベクトルHL2に相当する)の長さが、計算した左脚リンク30の最大長さに等しくなるときの、修正量(図6の修正量ΔzLに相当する)を計算する。この修正量は経時的に変化することから、時刻(歩行時間)の関数となる。
【0046】
右脚位置計算装置244は、左脚位置計算装置242と略同様の処理を右脚リンク40に関して行うことで、体幹12の仮定された目標位置と右足目標位置データ204に従ってロボット6が歩行するときの右足首関節47に対する右股関節41の相対的な位置関係を計算する。
右修正量計算装置248は、左修正量計算装置246と略同様に処理によって、右脚リンク40に関する修正量を計算する。
【0047】
修正量決定装置250は、左修正量計算装置246で計算した修正量と、右修正量計算装置248で計算した修正量に基づいて、仮定された体幹12の目標位置を、高さ方向(鉛直方向)に修正する体幹修正量Δzを決定する。即ち、修正量決定装置250は、実施例1のロボット6が備える修正量決定装置152に対応する処理を行う。
修正量決定装置250は、左修正量計算装置246と右修正量計算装置248のそれぞれで計算された修正量を入力し、小さい方の修正量(鉛直上方を正とする)を体幹修正量Δzに採用する。即ち、鉛直下方に向けて大きい方の修正量を採用する。
体幹高さ修正装置251は、体幹位置仮定装置212で仮定された体幹12の目標位置の高さ位置(z座標)を、修正量決定装置250で決定された修正量だけ、修正する。
ZMP計算装置252は、記憶装置210に記憶されているデータと、体幹高さ修正装置251で修正された体幹12の目標位置に基づいて、ロボット6のZMPを計算する。そして、計算したZMPと、目標ZMPデータ207が記述している目標ZMPとを比較し、その偏差を計算する。計算した偏差が所定値以下であれば、体幹高さ修正装置251から入力した体幹12の目標位置を、体幹軌道データ記憶装置254に教示する。体幹軌道データ記憶装置254は、教示された体幹12の目標位置を記憶する。一方、計算した偏差が所定値よりも大きいときは、体幹高さ修正装置251から入力した体幹12の目標位置を、計算した偏差とともに、体幹位置仮定装置212に教示する。
体幹位置仮定装置212は、ZMP計算装置252から、体幹12の目標位置とZMPに関する偏差を入力すると、体幹12の目標位置を再び仮定する。体幹位置仮定装置212が新たに仮定する体幹12の目標位置は、入力したZMPに関する偏差に基づいて、入力した体幹12の目標位置を水平方向に移動した位置である。
体幹位置仮定装置212が新たに仮定した体幹12の目標位置は、再び左脚位置計算装置242と右脚位置計算装置242に入力される。新たに仮定された体幹12の目標位置は、再びz座標が修正され、目標ZMPを満足するか否かが判別される。以上の処理が繰り返されることによって、目標ZMPを満足するとともに左右の脚リンク30、40の長さに関して実現可能な体幹12の目標位置が、体幹軌道データ記憶装置254に記憶される。
体幹軌道データ作成装置214は、体幹初期位置データ206に経時的に記述されているすべての体幹目標位置に対して上述の処理を繰り返す。その結果、体幹軌道データ記憶装置254には、目標ZMPを満足するとともに左右の脚リンク30、40の長さに関して実現可能な体幹軌道PWB(t)を記述する体幹軌道データが記憶される。
【0048】
体幹軌道データ作成装置214が作成する体幹軌道データは、記憶装置210が記憶している左足目標位置データ202や右足目標位置データ204と併せて、ロボット6に指示する歩容データとして利用することができる。この歩容データをロボット6に指示すると、ロボット6は左右の脚リンク30、40を自然に伸ばしながら歩行をすることになる。ロボット6は、実施例1で説明した歩行制御によって、予期せぬ外乱力が作用した場合でも、歩行しつづけることができる。
【0049】
図13は、体幹軌道データPWB(t)が記述する鉛直方向の軌道zB(t)を示している。図13に示すように、体幹軌道データPWB(t)が記述する鉛直方向の軌道zB(t)では、軌道が不連続的に変化する箇所が存在する。このような体幹軌道データPWB(t)をロボット6に指示すると、ロボット6は体幹12を乱暴に上下させて歩行することとなり、ロボット6の歩行動作に不自然さが発現してしまう。
そこで、本実施例の歩容データの作成装置200では、平滑軌道データ作成装置216用意されている。
【0050】
平滑軌道データ216の処理を、図13、図14、図15を参照しながら説明する。平滑軌道データ作成装置216は、体幹軌道データ作成装置214から体幹軌道データPWB(t)を入力する。
図13に示すように、平滑軌道データ作成装置216のサンプリングデータ作成部222は、入力した体幹軌道データPWB(t)が記述する鉛直方向の軌道zB(t)から、1歩時間ΔTの略4分の1の周期毎の軌道点SP1、SP2、SP3、・・・をサンプリングし、軌道点SP1、SP2、SP3、・・・を記述するサンプリングデータを作成する。
図14に示すように、平滑軌道データ作成装置216の曲線補完部224は、サンプリングデータ作成部222が作成したサンプリングデータを入力し、サンプリングデータが記述する軌道点SP1、SP2、SP3、・・・を曲線で補完した補完曲線zE(t)を作成する。詳しくは、まず軌道点SP1、SP2、SP3、・・・を直線で連結した補完屈折線zC(t)を作成し、補完屈折線zC(t)に対して移動平均処理を行うことで、補完曲線zE(t)を作成する。補完曲線zE(t)は、軌道点SP1、SP2、SP3、・・・を微分可能な連続曲線でなぞる軌道である。図14に示すように、補完曲線zE(t)は、軌道点SP1、SP2、SP3、・・・を通るとは限らない。なお、補完曲線zE(t)の作成方法は、この方法に限定されず、様々な近似曲線の作成方法を用いることができる。
【0051】
平滑軌道データ作成装置216のデータ比較部226は、体幹軌道データ作成装置214から入力した体幹軌道データが記述する鉛直方向の軌道zB(t)と、曲線補完部224が作成した補完曲線zE(t)を比較する。そして、例えば図14に示す期間Mのように、補完曲線zE(t)が軌道zB(t)よりも鉛直上方に位置する期間を検出すると、その期間をサンプリングデータ修正部228に指示する。
サンプリングデータ修正部228は、データ比較部226から指示された期間を画定している軌道点をサンプリングデータから抽出し、抽出した軌道点の位置を所定距離だけ鉛直下方に修正する。例えば図14に示す区間Mが指示された場合では、軌道点SP3を修正軌道点SQ3に修正し、軌道点SP4の位置を修正軌道点SQ4に修正にする。
サンプリングデータ修正部228によってサンプリングデータが修正されると、再び曲線補完部224が補完曲線を作成する。曲線補完部224が再作成した補完曲線は、データ比較部226によって軌道zB(t)と再び比較される。再作成した補完曲線が軌道zB(t)よりも再び上方に位置していれば、サンプリングデータ修正部228がサンプリングデータを再び修正する。
平滑軌道データ作成装置216は、上記の処理を繰り返すことによって、図15に示す平滑鉛直軌道zD(t)を作成する。図15に示すSQ1〜SQ9は、サンプリングデータ修正部228によって修正された修正軌道点である。平滑鉛直軌道zD(t)は、体幹軌道データPWB(t)が記述する鉛直方向の軌道zB(t)よりも、常に鉛直下方に位置している。
平滑軌道データ作成装置216は、体幹軌道データPWB(t)が記述している鉛直方向の軌道zB(t)を、作成した平滑鉛直軌道zD(t)に書き換えることによって、平滑軌道データを作成する。
【0052】
図15に示すように、平滑軌道データが記述する平滑鉛直軌道zD(t)は、微分可能な曲線を描いている。平滑軌道データをロボット6に指示すると、ロボット6は体幹12を滑らかに上下させながら歩行することとなり、ロボット6は左右の脚リンク30、40を自然な感じに伸ばして歩行することとなる。
平滑軌道データは、体幹軌道データ作成装置214で作成した体幹軌道データPWB(t)に対して、体幹12の目標位置が鉛直方向に移動されている。それにより、平滑軌道データから計算されるZMPの位置は、目標ZMPの位置に対して偏差を生じている。体幹12の鉛直方向の移動はZMPの位置の変化に影響が少ないことから、この偏差はさほど大きくなく、ロボット6は平滑軌道データを用いて歩行することができる。
【0053】
一方、平滑軌道データ作成装置216で作成した平滑軌道データを、体幹軌道データ作成装置214に入力することができるように構成してもよい。体幹軌道データ作成装置214は、平滑軌道データが記述する体幹12の目標位置を初期値として、新たな体幹軌道データ作成する。新たに作成された体幹軌道データは、再び平滑軌道データ作成装置216に入力されて、新たな平滑軌道データが作成される。それにより、脚リンク30、40を自然に伸ばしながら、ロボット6が体幹12を滑らかに移動させて歩行する歩容データであって、動的バランスが正確に維持される歩容データを作成することができる。
【0054】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。
本明細書または図面に説明した技術要素は、単独であるいは各種の組み合わせによって技術的有用性を発揮するものであり、出願時請求項記載の組み合わせに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【図面の簡単な説明】
【0055】
【図1】実施例1のロボットを模式的に示す図。
【図2】ロボットが搭載している制御装置の構成を示すブロック図。
【図3】制御装置の体幹位置修正装置の構成を示すブロック図。
【図4】事前に準備された歩容データに従うときの脚リンクの両端の位置を説明する図。
【図5】補正された歩容データに従うときの脚リンクの両端の位置を説明する図。
【図6】体幹位置の修正量を説明する図。
【図7】体幹位置が修正されたときの脚リンクの両端の位置を説明する図。
【図8】制御装置の処理の流れを示すフローチャート。
【図9】体幹位置修正装置の処理の流れを示すフローチャート。
【図10】実施例2の歩容データの作成装置の構成を示すブロック図。
【図11】記憶装置に記憶されているデータが記述している軌道を説明する図。
【図12】体幹軌道データ作成装置の構成を示すブロック図。
【図13】体幹軌道データが記述する体幹の鉛直方向の軌道を示す図。
【図14】サンプリングした軌道点から作成した平滑軌道を示す図。
【図15】修正した軌道点から作成した平滑軌道を示す図。
【符号の説明】
【0056】
6:ロボット
12:体幹
14:制御装置
16:左腕リンク
18:右腕リンク
20:頭部
30:左脚リンク
31:左股関節
32:左大腿部
34:左膝関節
36:左下腿部
37:左足首関節
40:右脚リンク
41:右股関節
42:右大腿部
44:右膝関節
46:右下腿部
47:右足首関節
110:歩容データ記憶装置
112:歩容データ補正装置
114:体幹位置修正装置
116:実際運動計算装置
118:関節角群計算装置
120:アクチュエータ制御装置
122:ロボットの機械系
124:各種センサ
142:左脚指示位置計算装置
144:左脚補正位置計算装置
146:右脚指示位置計算装置
148:右脚補正位置計算装置
152:左体幹修正量計算装置
154:右体幹修正量計算装置
156:修正量決定装置
158:体幹高さ抽出装置
164:体幹高さ書換装置
200:歩容データの作成装置
210:記憶装置
212:体幹位置仮定装置
214:体幹軌道データ作成装置
216:平滑軌道データ作成装置
222:サンプリングデータ作成部
224:曲線補完部
226:データ比較部
228:サンプリングデータ修正部
242:左脚位置計算装置
244:右脚位置計算装置
246:左修正量計算装置
248:右修正量計算装置
250:修正量決定装置
251:体幹高さ修正装置
252:ZMP計算装置
254:体幹軌道データ記憶装置
【特許請求の範囲】
【請求項1】
体幹と、
基端が体幹に揺動可能に連結されており、先端に足先を備えている複数の脚リンクと、
事前に準備されている歩容データを、実際の歩行状態に基づいて補正する手段と、
脚リンク毎に、補正した歩容データの体幹目標位置に基づいて、基端位置を特定する手段と、
脚リンク毎に、特定した基端位置を鉛直方向に移動したときに、補正した歩容データの足先目標位置からの距離が所定距離となるときの鉛直移動量を計算する手段と、
脚リンク毎に計算した鉛直移動量から、鉛直下方に最大の移動量を選択する手段と、
補正した歩容データの体幹目標位置の鉛直座標を、選択手段で選択した鉛直移動量だけ鉛直方向に修正する手段と、
を備える脚式ロボット。
【請求項2】
脚リンク毎に、事前に準備されている歩容データの体幹目標位置から特定される基端位置と、事前に準備されている歩容データの足先目標位置から、両者間の距離を計算する手段をさらに備え、
前記の鉛直移動量計算手段は、前記の距離計算手段で計算した距離を前記所定距離とすることを特徴とする請求項1の脚式ロボット。
【請求項3】
前記選択手段は、鉛直下方への移動量が存在しなければ、ゼロを選択することを特徴とする請求項1又は2の脚式ロボット。
【請求項4】
基端が体幹に揺動可能に連結されているとともに先端に足先を備えている複数の脚リンクを備えているロボットに予定している歩行を記述する歩容データを事前に準備しておく工程と、
事前に準備しておいた歩容データを、実際の歩行状態に基づいて補正する工程と、
脚リンク毎に、補正した歩容データの体幹目標位置に基づいて、基端位置を特定する工程と、
脚リンク毎に、特定した基端位置を鉛直方向に移動したときに、補正した歩容データの足先目標位置からの距離が所定距離となるときの鉛直移動量を計算する工程と、
脚リンク毎に計算した鉛直移動量から、鉛直下方に最大の移動量を選択する工程と、
補正した歩容データの体幹目標位置の鉛直座標を、選択工程で選択した鉛直移動量だけ鉛直方向に修正する工程と、
修正した歩容データを脚式ロボットの関節角群計算装置に教示する工程と、
を備える脚式ロボットの歩行制御方法。
【請求項5】
基端が体幹に揺動可能に連結されているとともに先端に足先を備えている複数の脚リンクを備えているロボットの脚リンク毎に、足先位置の経時的変化を記述する足先目標位置データを記憶しておく手段と、
その足先目標位置データに追従して歩行することを可能とする体幹位置の経時的変化を仮定する手段と、
脚リンク毎に、仮定した体幹目標位置に基づいて、基端位置を特定する手段と、
脚リンク毎に、特定した基端位置を鉛直方向に移動したときに、記憶している足先目標位置からの距離が所定距離となるときの鉛直移動量を計算する手段と、
脚リンク毎に計算した鉛直移動量から、鉛直下方に最大の移動量を選択する手段と、
仮定した体幹目標位置の鉛直座標を、選択手段で選択した鉛直移動量だけ鉛直方向に修正する手段と、
修正した体幹目標位置が、記憶している足先目標位置データに追従して歩行することを可能とする位置でなければ、体幹位置の経時的変化を再び仮定する手段と、
を備える歩容データの作成装置。
【請求項6】
前記の鉛直移動量計算手段は、脚リンクの最大長さを前記所定距離とすることを特徴とする請求項5の歩容データの作成装置。
【請求項7】
修正した体幹目標位置を所定周期毎にサンプリングする手段と、
サンプリングした体幹目標位置を連続曲線でなぞる平滑軌道を作成する手段と、
作成した平滑軌道が、修正した体幹目標位置よりも、鉛直上方に位置する期間を特定する手段と、
特定した期間に対応する修正した体幹目標位置を、鉛直下向きに所定距離だけ再修正する手段と、
再修正後の体幹目標位置を用いて、平滑軌道を再度作成する手段と、
をさらに備えることを特徴とする請求項5又は6の歩容データの作成装置。
【請求項8】
基端が体幹に揺動可能に連結されているとともに先端に足先を備えている複数の脚リンクを備えているロボットの脚リンク毎に、足先位置の経時的変化を記述する足先目標位置データを用意して記憶しておく工程と、
その足先目標位置データに追従して歩行することを可能とする体幹位置の経時的変化を仮定する工程と、
脚リンク毎に、仮定した体幹目標位置に基づいて、基端位置を特定する工程と、
脚リンク毎に、特定した基端位置を鉛直方向に移動したときに、記憶している足先目標位置からの距離が所定距離となるときの鉛直移動量を計算する工程と、
脚リンク毎に計算した鉛直移動量から、鉛直下方に最大の移動量を選択する工程と、
仮定した体幹目標位置の鉛直座標を、選択工程で選択した鉛直移動量だけ鉛直方向に修正する工程と、
修正した体幹目標位置が、記憶している足先目標位置データに追従して歩行することを可能とする位置でなければ、体幹位置の経時的変化を再び仮定する工程と、
を備える歩容データの作成方法。
【請求項1】
体幹と、
基端が体幹に揺動可能に連結されており、先端に足先を備えている複数の脚リンクと、
事前に準備されている歩容データを、実際の歩行状態に基づいて補正する手段と、
脚リンク毎に、補正した歩容データの体幹目標位置に基づいて、基端位置を特定する手段と、
脚リンク毎に、特定した基端位置を鉛直方向に移動したときに、補正した歩容データの足先目標位置からの距離が所定距離となるときの鉛直移動量を計算する手段と、
脚リンク毎に計算した鉛直移動量から、鉛直下方に最大の移動量を選択する手段と、
補正した歩容データの体幹目標位置の鉛直座標を、選択手段で選択した鉛直移動量だけ鉛直方向に修正する手段と、
を備える脚式ロボット。
【請求項2】
脚リンク毎に、事前に準備されている歩容データの体幹目標位置から特定される基端位置と、事前に準備されている歩容データの足先目標位置から、両者間の距離を計算する手段をさらに備え、
前記の鉛直移動量計算手段は、前記の距離計算手段で計算した距離を前記所定距離とすることを特徴とする請求項1の脚式ロボット。
【請求項3】
前記選択手段は、鉛直下方への移動量が存在しなければ、ゼロを選択することを特徴とする請求項1又は2の脚式ロボット。
【請求項4】
基端が体幹に揺動可能に連結されているとともに先端に足先を備えている複数の脚リンクを備えているロボットに予定している歩行を記述する歩容データを事前に準備しておく工程と、
事前に準備しておいた歩容データを、実際の歩行状態に基づいて補正する工程と、
脚リンク毎に、補正した歩容データの体幹目標位置に基づいて、基端位置を特定する工程と、
脚リンク毎に、特定した基端位置を鉛直方向に移動したときに、補正した歩容データの足先目標位置からの距離が所定距離となるときの鉛直移動量を計算する工程と、
脚リンク毎に計算した鉛直移動量から、鉛直下方に最大の移動量を選択する工程と、
補正した歩容データの体幹目標位置の鉛直座標を、選択工程で選択した鉛直移動量だけ鉛直方向に修正する工程と、
修正した歩容データを脚式ロボットの関節角群計算装置に教示する工程と、
を備える脚式ロボットの歩行制御方法。
【請求項5】
基端が体幹に揺動可能に連結されているとともに先端に足先を備えている複数の脚リンクを備えているロボットの脚リンク毎に、足先位置の経時的変化を記述する足先目標位置データを記憶しておく手段と、
その足先目標位置データに追従して歩行することを可能とする体幹位置の経時的変化を仮定する手段と、
脚リンク毎に、仮定した体幹目標位置に基づいて、基端位置を特定する手段と、
脚リンク毎に、特定した基端位置を鉛直方向に移動したときに、記憶している足先目標位置からの距離が所定距離となるときの鉛直移動量を計算する手段と、
脚リンク毎に計算した鉛直移動量から、鉛直下方に最大の移動量を選択する手段と、
仮定した体幹目標位置の鉛直座標を、選択手段で選択した鉛直移動量だけ鉛直方向に修正する手段と、
修正した体幹目標位置が、記憶している足先目標位置データに追従して歩行することを可能とする位置でなければ、体幹位置の経時的変化を再び仮定する手段と、
を備える歩容データの作成装置。
【請求項6】
前記の鉛直移動量計算手段は、脚リンクの最大長さを前記所定距離とすることを特徴とする請求項5の歩容データの作成装置。
【請求項7】
修正した体幹目標位置を所定周期毎にサンプリングする手段と、
サンプリングした体幹目標位置を連続曲線でなぞる平滑軌道を作成する手段と、
作成した平滑軌道が、修正した体幹目標位置よりも、鉛直上方に位置する期間を特定する手段と、
特定した期間に対応する修正した体幹目標位置を、鉛直下向きに所定距離だけ再修正する手段と、
再修正後の体幹目標位置を用いて、平滑軌道を再度作成する手段と、
をさらに備えることを特徴とする請求項5又は6の歩容データの作成装置。
【請求項8】
基端が体幹に揺動可能に連結されているとともに先端に足先を備えている複数の脚リンクを備えているロボットの脚リンク毎に、足先位置の経時的変化を記述する足先目標位置データを用意して記憶しておく工程と、
その足先目標位置データに追従して歩行することを可能とする体幹位置の経時的変化を仮定する工程と、
脚リンク毎に、仮定した体幹目標位置に基づいて、基端位置を特定する工程と、
脚リンク毎に、特定した基端位置を鉛直方向に移動したときに、記憶している足先目標位置からの距離が所定距離となるときの鉛直移動量を計算する工程と、
脚リンク毎に計算した鉛直移動量から、鉛直下方に最大の移動量を選択する工程と、
仮定した体幹目標位置の鉛直座標を、選択工程で選択した鉛直移動量だけ鉛直方向に修正する工程と、
修正した体幹目標位置が、記憶している足先目標位置データに追従して歩行することを可能とする位置でなければ、体幹位置の経時的変化を再び仮定する工程と、
を備える歩容データの作成方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【公開番号】特開2006−68871(P2006−68871A)
【公開日】平成18年3月16日(2006.3.16)
【国際特許分類】
【出願番号】特願2004−257671(P2004−257671)
【出願日】平成16年9月3日(2004.9.3)
【出願人】(000003207)トヨタ自動車株式会社 (59,920)
【Fターム(参考)】
【公開日】平成18年3月16日(2006.3.16)
【国際特許分類】
【出願日】平成16年9月3日(2004.9.3)
【出願人】(000003207)トヨタ自動車株式会社 (59,920)
【Fターム(参考)】
[ Back to top ]