(57)【特許請求の範囲】
【請求項１】
体幹に複数の脚リンクが揺動可能に連結されている脚式ロボットが歩行するために用いる歩容データを作成する装置であって、
脚リンク毎に、目標とする足先の位置と姿勢の経時的変化を記述している足先歩容データの記憶手段と、
体幹の高さ位置を仮定して、その足先歩容データに追従して歩行することを可能とする体幹の位置と姿勢の経時的変化を記述している体幹歩容データを作成する作成手段と、
その体幹歩容データが記述している体幹位置を高さ方向に移動したときに、脚リンクの両端間距離が所定距離となるときの体幹の高さ位置を、脚リンク毎に計算する計算手段と、
その脚リンク毎に計算した高さ位置群のなかで最も低い第１高さ位置と、その第１高さ位置とその第１高さ位置に次いで低い第２高さ位置との高低差に基づいて、目標とする体幹の高さ位置を決定する決定手段を備え、
前記決定手段は、前記高低差が所定値を上回るときには前記第１高さ位置を目標とする体幹の高さ位置とし、前記高低差が所定値を下回るときには前記第１高さ位置よりも下降させた位置を目標とする体幹の高さ位置とすることを特徴とする歩容データの作成装置。
【請求項２】
前記決定手段は、前記高低差と比較する前記所定値を、前記第１高さ位置を導出した脚リンクの足先位置と前記第２高さ位置を導出した脚リンクの足先位置との間の距離に応じて増減調節することを特徴とする請求項１に記載の歩容データの作成装置。
【請求項３】
前記決定手段は、脚リンク毎に計算された高さ位置群に、体幹の高さ位置に関して指示された制限値を新たな要素として加えた高さ位置群から、前記第１高さ位置と第２高さ位置を設定することを特徴とする請求項１又は２に記載の歩容データの作成装置。
【請求項４】
体幹に複数の脚リンクが揺動可能に連結されている脚式ロボットが歩行するために用いる歩容データを作成する方法であって、
脚リンク毎に、目標とする足先の位置と姿勢の経時的変化を記述している足先歩容データを用意する工程と、
体幹の高さ位置を仮定して、その足先歩容データに追従して歩行することを可能とする体幹の位置と姿勢の経時的変化を記述している体幹歩容データを作成する作成工程と、
その体幹歩容データが記述している体幹位置を高さ方向に移動したときに、脚リンクの両端間距離が所定距離となるときの体幹の高さ位置を、脚リンク毎に計算する計算工程と、
その脚リンク毎に計算した高さ位置群のなかで最も低い第１高さ位置と、その第１高さ位置とその第１高さ位置に次いで低い第２高さ位置との高低差に基づいて、目標とする体幹の高さ位置を決定する決定工程を備え、
前記決定工程では、前記高低差が所定値を上回るときには前記第１高さ位置を目標とする体幹の高さ位置とし、前記高低差が所定値を下回るときには前記第１高さ位置よりも下降させた位置を目標とする体幹の高さ位置とすることを特徴とする歩容データの作成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、体幹（胴部）に複数（典型的には２本）の脚リンクが揺動可能に連結されている機械（脚式ロボット）を歩行させる技術に関する。
【背景技術】
【０００２】
体幹と脚リンク群の相対的姿勢を変化させることによって歩行する脚式ロボット（以下では単にロボットと記すことがある）が開発されている。脚式ロボットは、歩容データを用いて歩行する。
脚式ロボットが歩行するためには、各足先と体幹の運動を指示するデータを必要とする。そのうちの体幹の位置と姿勢は、各足先の位置と姿勢に対して適当な値である必要があり、その値が適当でなければロボットは転倒してしまう。
脚式ロボットが転倒しない体幹の位置と姿勢を得るためには、ロボットのダイナミクスを考慮に入れた複雑な計算を必要とする。以下に、二足歩行ロボットの場合の一例を説明する。
（１）ロボットの左足先と右足先の位置と姿勢を指示する経時的データを指定する。
（２）足先の位置と姿勢を考慮してロボットのＺＭＰが存在しなければならない位置を指定する。ＺＭＰ（zero moment point）は、ロボットに作用する重力や床反力や慣性力の合力のモーメントがゼロになる床上の点をいう。ＺＭＰが接地脚の足平内にあればロボットは転倒しない。逆にいうと、ロボットが転倒しないためには、ＺＭＰが接地脚の足平内になければならない。そこで接地脚の足先の位置と姿勢を考慮し、下記の関係を満たす目標ＺＭＰを指定する。即ち、一方の脚リンク（例えば左脚）が遊脚になっている間は接地脚（右脚）の足平内に存在し、その一方の脚（左脚）が接地して両足接地状態になった時に新たに接地した脚（左脚）の足平内に向けて移動開始し、それまでに接地していた脚（右脚）が遊脚となる前に新たに接地した脚（左脚）の足平内に移動し終えるＺＭＰを指定する。このようにして指定されたＺＭＰは、目標ＺＭＰと呼ばれる。実際のＺＭＰが目標ＺＭＰのとおりに移動すれば、ロボットは転倒することなく歩行し続ける。
（３）足先の位置と姿勢の変化とそれに追従して変化する目標ＺＭＰが指定されると、体幹の位置と姿勢の経時的変化を仮定してロボットのダイナミクスを計算する。計算する時点で、足先の位置と姿勢の経時的変化が指定されているために、ロボットの体幹の位置と姿勢を仮定すると、ロボットの全身の姿勢が決まる。ロボットの全身の姿勢が決まると、その姿勢におけるＺＭＰの位置を計算することが可能となる。ＺＭＰの位置を計算するためには、静的な要素に加えて、ロボットに作用する慣性力の影響を織り込まなければならない。仮定した体幹の位置と姿勢の経時的変化を計算に含めることで、ロボットのダイナミクスまで考慮してＺＭＰの位置を計算することが可能となる。体幹の位置と姿勢の経時的変化を仮定するとＺＭＰの位置を計算することができることから、目標ＺＭＰに一致するＺＭＰを実現する体幹の位置と姿勢の経時的変化を探求することができる。
【０００３】
上記によって探求された体幹の位置と姿勢の経時的変化を示すデータを体幹歩容データといい、もともと指定されている足先の位置と姿勢の経時的変化を示すデータを足先歩容データといい、両者を総称して歩容データという。歩容データに従ってロボットが歩行すれば、実際のＺＭＰが目標ＺＭＰに一致し、ロボットは転倒せずに歩行し続けることができる。
歩容データは、時間に対する位置および姿勢の経時的変化で与えられる。位置と速度と加速度は関連しており、そのうちの一つの量から他の量を計算することができることから、位置の代わりに速度または加速度の経時的変化を扱ってもよい。姿勢は座標軸に対する回転角度で表現されるが、角度と角速度と角加速度は関連しており、そのうちの一つの量から他の量を計算することができることから、角度の代わりに角速度または角加速度の経時的変化を扱ってもよい。
【０００４】
目標ＺＭＰに一致するＺＭＰをもたらす体幹運動を算出する手法は、目標足先運動の変化に追従してロボットが歩行し続けることを可能とする目標体幹運動の経時的変化を算出する手法の典型例であり、それには限られない。一般的にいうと、脚式ロボットは、体幹と体幹に対して揺動可能に連結されている脚リンクを備えており、目標とする足先運動の経時的変化を記述する足先歩容データが指示されると、目標足先運動の変化に追従して歩行し続けることを可能とする目標体幹運動の経時的変化を記述する体幹歩容データを算出し、指示された足先歩容データと算出された体幹歩容データを用いて歩行する。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
指示された足先歩容データに基づいて体幹歩容データを算出する際には、脚リンクを最大に伸展したときの両端間距離（以下、単に脚リンクの長さということがある）を考慮して、体幹の高さ位置に制限を加える必要がある。足先歩容データが記述している足先の位置と姿勢と、算出した体幹歩容データが記述している体幹の位置と姿勢が、脚リンクを最大に伸展させても実現できない位置関係にあれば、ロボットは歩容データが記述する動作を実現することができない。
一方において、体幹の高さ位置を低く制限してしまうと、ロボットは脚リンク（特に接地脚）を過剰に曲げて歩行することになる。脚リンクの関節等に作用する曲げモーメントが大きくなってしまい、アクチュエータ等に必要とされるトルクが増大してしまう。
脚式ロボットを歩行させるためには、体幹の高さ位置を適切に制限する必要があり、そのための歩容データを作成する技術が必要とされている。
本発明は、体幹の高さ位置を適切に制限した歩容データを作成する技術を提供する。
【課題を解決するための手段】
【０００６】
本発明は、体幹に複数の脚リンクが揺動可能に連結されている脚式ロボットが歩行するために用いる歩容データを作成する装置に具現化することができる。この歩容データの作成装置は、脚リンク毎に、目標とする足先の位置と姿勢の経時的変化を記述している足先歩容データの記憶手段と、体幹の高さ位置を仮定して、その足先歩容データに追従して歩行することを可能とする体幹の位置と姿勢の経時的変化を記述している体幹歩容データを作成する作成手段と、その体幹歩容データが記述している体幹位置を高さ方向に移動したときに、脚リンクの両端間距離が所定距離となるときの体幹の高さ位置を、脚リンク毎に計算する計算手段と、その脚リンク毎に計算した高さ位置群のなかで最も低い第１高さ位置と、その第１高さ位置とその第１高さ位置に次いで低い第２高さ位置との高低差に基づいて、目標とする体幹の高さ位置を決定する決定手段とを備える。
【０００７】
この歩容データの作成装置は、記憶している足先歩容データに基づいて、脚式ロボットが歩行し続けることを可能とする体幹歩容データを、体幹の高さ位置を仮定して作成する。この体幹歩容データを作成する段階では、各脚リンクの長さを必ずしも考慮する必要はない。仮定した体幹の高さ位置によっては、脚リンクを最大に伸ばしても実現不可能なデータが作成されたり、脚リンクを過剰に曲げて歩行するデータが作成されたりするが、この段階ではそのことを許容する。
この装置では、作成した体幹歩容データが記述する体幹位置を高さ方向に移動したときに、脚リンクの両端間距離が所定距離となるときの高さ位置を、脚リンク毎に計算する。この計算に用いる所定距離は、脚リンクの長さを超えない範囲で、自由に設定することができる。例えば脚リンクを伸ばした歩行をロボットに実施させたい場合は、所定距離に脚リンクの長さを設定するとよい。あるいは、ロボットによる歩容データの補正を考慮して、脚リンクに伸展する余裕を残しておきたい場合には、所定距離を所望する伸展余裕に応じて設定するとよい。
【０００８】
体幹歩容データが記述する体幹の高さ位置を、脚リンク毎に計算した高さ位置群のなかで最も低い第１高さ位置に修正すると、すべての脚リンクの長さに関して実現可能であるとともに、脚リンクが適当に屈曲する歩容データを得ることができる。
脚リンク毎に計算した高さ位置群のなかで最も低い第１高さ位置を導出する脚リンクは、各脚リンクが支持脚となったり遊脚となったりすることに連動して、経時的に順次切替る。脚リンク毎に計算した高さ位置群のなかで最も低い第１高さ位置は、その第１高さ位置を導出する脚リンクが切替る時点において、急激に変化することがある。体幹の高さ位置が急激に変化する歩容データでは、そのデータで記述される運動をロボットが実現することができず、場合によってはロボットが転倒してしまう可能性もある。
そのことから、この装置では、脚リンク毎に計算した高さ位置群に基づいて体幹の高さ位置を決定する際に、最も低い第１高さ位置に加えて、第１高さ位置とそれに次いで低い第２高さ位置との高低差を利用する。その高低差が大きければ、第１高さ位置を導出する脚リンクが切替る時点まで猶予があると判断することができる。その高低差が小さければ、第１高さ位置を導出する脚リンクがまもなく切替ると判断することができる。第１高さ位置と、第１高さ位置と第２高さ位置の高低差に基づいて体幹の高さ位置を決定することによって、脚リンクが適当に屈曲するとともに、体幹の高さ位置が連続的に変化する歩容データを作成することができる。
必要に応じて、決定した体幹の高さ位置を仮定する体幹の高さ位置とし、ＺＭＰを考慮した体幹歩容データの作成を行い、再び体幹の高さ位置の決定処理を実行することもできる。
この装置によると、体幹の高さ位置を適切に制限した歩容データを作成することができる。
【０００９】
決定手段は、第１高さ位置と第２高さ位置との高低差が所定値を上回るときには、第１高さ位置を目標とする体幹の高さ位置とし、その高低差が所定値を下回るときには第１高さ位置よりも下降させた位置を目標とする体幹高さ位置とすることが好ましい。
それにより、脚リンクに必要な伸展余裕を与えながら、体幹の高さ位置が連続的に変化する歩容データを作成することができる。
【００１０】
前記決定手段は、第１高さ位置と第２高さ位置との高低差と比較する前記所定値を、第１高さ位置を導出した脚リンクの足先位置と第２高さ位置を導出した脚リンクの足先位置との間の距離に応じて増減調節することが好ましい。
第１高さ位置を導出した脚リンクの足先位置と、第２高さ位置を導出した脚リンクの足先位置との間の距離に応じて、第１高さ位置を導出する脚リンクが切替る時点において第１高さ位置が変動する挙動は変化する。
この装置によると、脚リンクを必要以上に屈曲させることなく、体幹の高さ位置が連続的に変化する歩容データを作成することができる。
【００１１】
歩容データを作成する際に、体幹の高さ位置に関して制限値が指示される場合もある。この場合、決定手段は、脚リンク毎に計算された高さ位置群に、体幹の高さ位置に関して指示された制限値を新たな要素として加えた高さ位置群から、第１高さ位置と第２高さ位置を設定することが好ましい。
それにより、体幹の高さ位置を制限値以下に制限するとともに、体幹の高さ位置が連続的に変化する歩容データを作成することができる。
【００１２】
本発明の技術は、体幹に複数の脚リンクが揺動可能に連結されている脚式ロボットが歩行するために用いる歩容データを作成する方法に具現化することもできる。この方法は、脚リンク毎に、目標とする足先の位置と姿勢の経時的変化を記述している足先歩容データを用意する工程と、体幹の高さ位置を仮定して、その足先歩容データに追従して歩行することを可能とする体幹の位置と姿勢の経時的変化を記述している体幹歩容データを作成する作成工程と、その体幹歩容データが記述している体幹位置を高さ方向に移動したときに、脚リンクの両端間距離が所定距離となるときの体幹の高さ位置を、脚リンク毎に計算する計算工程と、その脚リンク毎に計算した高さ位置群のなかで最も低い第１高さ位置と、その第１高さ位置とその第１高さ位置に次いで低い第２高さ位置との高低差に基づいて、目標とする体幹の高さ位置を決定する決定工程とを備える。決定工程では、前記高低差が所定値を上回るときには前記第１高さ位置を目標とする体幹の高さ位置とし、前記高低差が所定値を下回るときには前記第１高さ位置よりも下降させた位置を目標とする体幹の高さ位置とすることを特徴とする。
この方法によると、脚リンクの屈伸状態を考慮して、体幹の高さ位置を適切に制限した歩容データを作成することができる。
【発明の効果】
【００１３】
本発明により、脚式ロボットに、体幹の高さ位置を適切に制限した歩行動作を実施させることが可能となる。
【発明を実施するための最良の形態】
【００１４】
最初に、以下に説明する実施例の主要な特徴を列記する。
（形態１）  ロボットは、歩行パターンデータを記憶している記憶手段を備えている。
（形態２）  ロボットは、歩行パターンデータに基づいて、足先歩容データを作成して記憶する手段を備えている。
【実施例】
【００１５】
図１に本実施例の二足歩行ロボット（以下、単にロボットと記す）６を示す。図１に示すように、ロボット６は、体幹１２と、左腕リンク１６と、右腕リンク１８と、左脚リンク３０と、右脚リンク４０と、頭部２０等を備えている。左腕リンク１６と、右腕リンク１８と、左脚リンク３０と、右脚リンク４０と、頭部２０は、体幹１２に揺動可能に連結されている。
図１に示すように、左脚リンク３０は、左大腿リンク３２と、左下腿リンク３６と、左大腿リンク３２と左下腿リンク３６を連結している左膝関節３４を備えている。左膝関節３４は、１軸回りの自由度を持つ関節である。左脚リンク３０の基端は、左股関節３１を介して体幹１２に連結されている。左脚リンク３０の先端には、左足首関節３７を介して左足平リンク（左足先）３８が連結されている。左股関節３１は３軸回りの自由度を持つ関節であり、左足首関節３７は２軸回りの自由度を持つ関節である。
右脚リンク４０は、左脚リンク３０と鏡面対称の関係となるように構成されている。図１には、右脚リンク４０に関して、右股関節４１、右大腿リンク４２、右膝関節４４、右下腿リンク４６、右足首関節４７、右足平リンク（右足先）４８が示されている。
【００１６】
図１に示すように、ロボット６は、右足平リンク４８が位置Ｐ２に接地している間に、右脚リンク４０を支持脚とし、左脚リンク３０を遊脚として、左足平リンク３８を位置Ｐ１から位置Ｐ３まで軌道７によって移動させる。左足平リンク３８が位置Ｐ３に接地すると、今度は左脚リンク３０を支持脚とし、右脚リンク４０を遊脚として、右足平リンク４８を位置Ｐ２から位置Ｐ４まで軌道８によって移動させる。以下同様に、左足平リンク３８を位置Ｐ３から位置Ｐ５まで軌道９のように移動させ、次に右足平リンク４８を位置Ｐ４から位置Ｐ６まで軌道１０のように移動させて歩行を続ける。各接地位置において、足平リンク３８、４８の踵から爪先へ伸びる方向を接地方向という。
【００１７】
図１に示すように、本実施例では、ロボット６の外部の床に固定されている絶対座標系（ｘ，ｙ，ｚ）が定義されている。絶対座標系（ｘ，ｙ，ｚ）では、ｘ軸方向とｙ軸方向が水平方向を向いており、ｚ軸方向が鉛直方向を向いている。また、ロボット６の支持脚の基準点に固定されている相対座標系（ｘ’，ｙ’，ｚ’）が定義されている。相対座標系（ｘ’，ｙ’，ｚ’）は、ロボット６が右脚リンク４０を支持脚としているときは基準点Ｒに固定されており、ロボット６が左脚リンク３０を支持脚としているときは、基準点Ｌに固定されている。相対座標系（ｘ’，ｙ’，ｚ’）では、足平リンク３８、４８に沿って踵から爪先へと伸びる方向をｘ’軸とし、足平リンク３８、４８に沿ってｘ’軸と直交する方向をｙ’軸とし、足平リンク３８、４８に垂直な方向をｚ’軸とする。通常は、ｘ’軸はロボット６が歩行する方向に相当し、ｙ’軸はロボット６の体側方向に相当し、ｚ’軸はロボット６の高さ方向に相当する。
【００１８】
ロボット６が歩行を続けるためには、足先の運動を記述する足先歩容データと、体幹１２の運動を記述する体幹歩容データを備える歩容データが必要とされる。
足先歩容データは、ロボット６の足先の位置と姿勢の経時的変化を記述している。足先歩容データは、例えば左脚リンク３０に関して、左足平リンク３８の基準点Ｌの位置の経時的変化と、基準点Ｌから左足平リンク３８の接地面の法線方向に伸びる姿勢ベクトルＤＬのオイラー角（ロール角、ピッチ角、ヨー角）の経時的変化を記述している。右脚リンク４０に関しても同様に、右足平リンク４８の基準点Ｒの位置の経時的変化と、基準点Ｒから右足平リンク４８の接地面の法線方向に伸びる姿勢ベクトルＤＲのオイラー角（ロール角、ピッチ角、ヨー角）の経時的変化を記述している。
体幹歩容データは、体幹の位置と姿勢の経時的変化を表す。体幹歩容データは、体幹１２の基準点Ｗの位置の経時的変化と、基準点Ｗからロボット６の前方に伸びるベクトルＷのオイラー角の経時的変化を記述している。
足先や体幹の位置と姿勢の経時的変化を記述するために、歩容データは、例えば位置と姿勢の時系列データであってもよいし、位置と姿勢の変化速度の時系列データであってもよいし、位置と姿勢の変化加速度の時系列データであってもよい。本実施例では、歩容データに、位置と姿勢を時間Δｔ毎に記述するｎ個のデータを備える時系列データを用いている。
【００１９】
ロボット６の動作を制御するために、ロボット６の体幹１２にコンピュータ装置１４が搭載されている。コンピュータ装置１４は、ＣＰＵ、ＲＯＭ、ＲＡＭ、ハードディスク等を有する。コンピュータ装置１４のハードウェア構成は汎用のコンピュータと同じであり、説明は省略する。
図２に、コンピュータ装置１４の機能的な構成を示す。コンピュータ装置１４は、機能的に、歩行パターンデータ記憶装置１０２と、歩容データ作成装置１０４と、歩容データ補正装置１０６と、関節角群計算装置１０８と、アクチュエータ制御部１１０と、実際運動計算装置１１２等を備えている。
コンピュータ装置１４は、全体が物理的に１つの装置に含まれていてもよいし、物理的に分離された装置ごとに分けて収容されていてもよい。またコンピュータ装置１４の各要素は、必ずしもロボット６に搭載されていなくてもよい。ロボット６外に配備され、ロボット６に無線又は有線で指示するようにしてもよい。
【００２０】
歩行パターンデータ記憶装置１０２は、歩行パターンデータを記憶している。歩行パターンデータは、ロボット６が実施する歩行動作を１歩毎に記述している。詳しくは、１歩毎に、接地する足平リンク（左足平リンク３８と右足平リンク４８のいずれが接地するのか）と、その接地位置と、その接地方向と、その接地時刻を順に記憶している。例えば図１に示す場合では、最初の１歩データが（左足平リンク３８，接地位置Ｐ１、接地方向ｘ，接地時刻ｔ１）となり、次の１歩データが（右足平リンク４８，接地位置Ｐ２，接地方向ｘ，接地時刻ｔ２）となり、その次の１歩データが（左足平リンク３８，接地位置Ｐ３，接地方向ｘ，接地時刻ｔ３）となり、以下同様に１歩データが続くこととなる。接地位置や接地時刻は、絶対座標（ｘ，ｙ，ｚ）と絶対時刻で記述してもよいし、１歩毎に相対座標（ｘ’，ｙ’，ｚ’）と相対時刻（１歩時間）で記述することもできる。歩行パターンデータは、オペレータが予め用意して歩行パターンデータ記憶装置１０２に記憶させておくことができる。あるいは、ジョイスティック等の入力装置を用いて歩行動作中のロボット６に逐次教示し、歩行パターンデータ記憶装置１０２に記憶させてもよい。
【００２１】
歩容データ作成装置１０４は、歩行パターンデータ記憶装置１０２に記憶されている歩行パターンデータに基づいて、足先歩容データと体幹歩容データを備える歩容データを作成する。歩容データ作成装置１０４については、後段において詳細に説明する。作成された歩容データは、歩容データ補正装置１０６に入力される。
歩容データ補正装置１０６は、歩容データ作成装置１０４で作成された歩容データを、ロボット６の実際運動に基づいて補正する。必要に応じて補正された歩容データは、関節角群計算装置１０８に入力される。
関節角群計算装置１０８は、入力された歩容データに基づいて、いわゆる逆キネマティクスを解くことでロボット６の各関節角を計算する。計算された関節角群データは、アクチュエータ制御部１１０に入力される。
アクチュエータ制御装置１２０は、入力した関節角群データに基づいて、ロボット６に搭載されているアクチュエータ群を制御する。アクチュエータ制御装置１２０がアクチュエータ群を制御することによって、ロボット６の機械系１１４が歩行動作を実施する。
【００２２】
ロボット６が実際に行う歩行動作は、予期しない路面の凹凸や、ロボット６の構造上のたわみなどによる外乱力の影響を受ける。ロボット６が実際に行っている歩行動作は、ロボット６に搭載されているセンサ群１１６によって検出される。
実際運動計算装置１１２は、センサ群１１６の出力信号に基づいて、ロボット６の実際の運動を計算する。実際運動計算装置１１２は、例えば左脚リンク３０の実際運動や、右脚リンク４０の実際運動や、体幹１２の実際運動を計算することができる。実際運動計算装置１１２で計算されたロボット６の実際運動は、歩容データ補正装置１０６に入力される。
先に説明したように、歩容データ補正装置１０６は、実際運動計算装置１１２で計算されたロボット６の実際運動に基づいて、歩容データ作成装置１０４から入力した歩容データを補正する。ロボット６の歩行動作は、ロボット６の実際運動に基づいてフィードバック制御される。
【００２３】
図３を参照して、歩容データ作成装置１０４について詳細に説明する。図３に示すように、歩容データ作成装置１０４は、機能的に、足先歩容データ作成装置１５２と、体幹歩容データ作成装置１５４と、左体幹高さ計算装置１６１と、右体幹高さ計算装置１６２と、体幹高さ決定装置１６４と、体幹高さ修正装置１５６とを備えている。
足先歩容データ作成装置１５２は、歩行パターンデータ記憶装置１０２に記憶されている歩行パターンデータに基づいて、各足平リンク３８、４８の位置と姿勢の経時的変化を記述する足先歩容データを作成して記憶する。足先歩容データ作成装置１５２は、脚リンク３０、４０毎に、連続する２つの１歩データに基づいて、足平リンク３８、４８の位置と姿勢の経時的変化を計算する。このとき、連続する１歩データの標準的な相対変化量（位置、方向、時刻）に対して、基準となる足先歩容データを記憶させておくと、足先歩容データの作成処理を簡単化することができる。足先歩容データ作成装置１５２は、足先歩容データを、１歩毎に作成することもできるし、複数歩毎に作成することもできる。また、足先歩容データ作成装置１５２は、オペレータ等によって事前に準備された足先歩容データを記憶することもできる。足先歩容データは、各足平リンク３８、４８の位置と姿勢の経時的変化を、絶対座標（ｘ，ｙ，ｚ）と絶対時刻で記述してもよいし、１歩毎に相対座標（ｘ’，ｙ’，ｚ’）と相対時刻で記述してもよい。
【００２４】
体幹歩容データ作成装置１５４は、足先歩容データ作成装置１５２が作成した足先歩容データに基づいて、ロボット６が歩行し続けることを可能とする体幹１２の位置と姿勢の経時的変化を記述する体幹歩容データを作成して記憶する。体幹歩容データ作成装置１５４は、足先歩容データに基づいて目標ＺＭＰの経時的変化を計算し、ロボット６の力学モデルに基づいて実際ＺＭＰが目標ＺＭＰに一致するように、目標とする体幹１２の位置と姿勢の経時的変化を計算する。このとき体幹歩容データ作成装置１５４は、体幹１２の高さ位置と姿勢を固定し、目標とする体幹１２の位置を水平方向に探求する。なお、体幹歩容データ作成装置１５４は、オペレータ等によって事前に準備された足先歩容データを記憶することもできる。
【００２５】
左体幹高さ計算装置１６１は、体幹歩容データが記述する体幹１２の位置を高さ方向（ｚ軸方向）に移動させたときに、左脚リンク３０の両端間距離が所定の制限距離となる体幹１２の高さ位置を計算する。この計算に用いる制限距離は、左脚リンク３０の長さを超えない範囲で自由に設定することができる。ここでいう左脚リンク３０の長さとは、膝関節４４を最大に伸ばしたときに実現される左脚リンク３０の両端間距離である。例えば制限距離に左脚リンク３０の長さを設定すると、左脚リンク３０が最大に伸びるときの体幹１２の高さ位置を求めることができる。以下、左脚リンク３０が最大に伸びるときの体幹１２の高さ位置を、左脚リンク３０に関する許容体幹高さ位置ということがある。
右体幹高さ計算装置１６２は、体幹歩容データが記述する体幹１２の位置を高さ方向（ｚ軸方向）に移動させたときに、右脚リンク４０の両端間距離が所定の制限距離となる体幹１２の高さ位置を計算する。この計算に用いる制限距離は、右脚リンク４０の長さを超えない範囲で自由に設定することができる。ここで、左脚リンク３０と同様に、右脚リンク４０に関する許容体幹高さ位置を定義することができる。
図４に示すように、例えば右脚リンク４０の両端間距離ＨＲは、右足首関節４７の位置と、右股関節４１の位置との距離に相当する。右足首関節４７の位置は、右足平リンク４８の位置（基準点Ｒの位置）と姿勢（姿勢ベクトルＤＲの向き）から特定することができる。また、右股関節４１の位置は、体幹１２の位置（基準点Ｗの位置）と姿勢（姿勢ベクトルＤＷの向き）から特定することができる。
体幹高さ決定装置１６４は、左体幹高さ計算装置１６１が計算した体幹１２の高さ位置と、右体幹高さ計算装置１６２が計算した体幹１２の高さ位置の両者に基づいて、体幹１２の高さ位置を決定する。体幹高さ決定装置１６４が決定した体幹１２の高さ位置は、体幹歩容データ作成装置１５４に入力される。体幹歩容データ作成装置１５４は、記憶している体幹歩容データが記述している高さ位置を、体幹高さ決定装置１６４から入力した高さ位置に書き換える。
体幹高さ修正装置１５６は、体幹歩容データが記述している体幹１２の高さ位置の経時的変化を修正し、体幹歩容データが記述している体幹１２の高さ位置の経時的変化を平滑化する。体幹高さ修正装置１５６が修正した体幹１２の高さ位置は、体幹歩容データ作成装置１５４に入力される。体幹歩容データ作成装置１５４は、記憶している体幹歩容データが記述している高さ位置を、体幹高さ修正装置１５６から入力した高さ位置に書き換える。
【００２６】
図５は、歩容データ作成装置１０４が実行する処理の流れを示すフローチャートである。図５に示すフローに沿って、歩容データ作成装置１０４が歩容データを作成する処理手順について説明する。ここでは、ロボット６が脚リンク３０、４０を伸ばしながら歩行するための歩容データを作成する場合について説明する。
ステップＳ２では、歩容データ作成装置１０４の処理に先立って、オペレータ等から指示された歩行パターンデータが、歩行パターンデータ記憶装置１０２に記憶される。
ステップＳ４では、足先歩容データ作成装置１５２が、歩行パターンデータに基づいて、足先歩容データを作成して記憶する。なお、このステップＳ４では、事前に準備しておいた足先歩容データを、足先歩容データ作成装置１５２に記憶させてもよい。
ステップＳ６では、体幹歩容データ作成装置１５４が、足先歩容データ作成装置１５２に記憶されている足先歩容データに基づいて、ロボット６が歩行することを可能とする体幹歩容データを作成する。このとき体幹歩容データ作成装置１５４は、体幹１２の高さ位置（ｚ座標）と姿勢の経時的変化を仮定（固定）して、ロボット６が歩行することを可能とする体幹１２の水平位置の経時的変化を計算する。仮定する体幹１２の高さ位置と姿勢の経時的変化は、例えば経時的に変化しない固定値とすることもできる。なお、このステップＳ６では、事前に準備しておいた体幹歩容データを、体幹歩容データ作成装置１５４に記憶させてもよい。
【００２７】
ステップＳ８では、脚リンク３０、４０毎に、脚リンクに関する許容体幹高さ位置が計算される。左体幹高さ計算装置１６１は、足先歩容データから足先の位置と姿勢を入力し、体幹歩容データから体幹の位置と姿勢を入力し、左脚リンク３０の両端間の制限距離に左脚リンク３０の長さを設定して、左脚リンク３０に関する許容体幹高さ位置を計算する。同様に、右体幹高さ計算装置１６２は、足先歩容データから足先の位置と姿勢を入力し、体幹歩容データから体幹の位置と姿勢を入力し、右脚リンク４０の両端間の制限距離に右脚リンク４０の長さを設定して、右脚リンク４０に関する許容体幹高さ位置を計算する。なお、各脚リンク３０、４０の両端間に関する制限距離を、各脚リンク３０、４０の長さよりも短く設定しておくと、脚リンク３０、４０の両端間距離が制限距離を越えて伸びることを禁止することができ、脚リンク３０、４０にさらに伸展できる余裕を与えておくことができる。この制限距離の設定によって、脚リンク３０、４０に所望の伸展余裕を与えることができる。
図６は、左脚リンク３０に関する許容体幹高さ位置の軌道Ｚ１と、右脚リンク４０に関する許容体幹高さ位置の軌道Ｚ２の一例を経時的に示している。体幹歩容データ記憶手段１５４が記憶している体幹歩容データの高さ位置の軌道を、軌道Ｚ１と軌道Ｚ２の低い方を辿った軌道に書換えていくと、ロボット６が脚リンク３０、４０の少なくとも一方を伸ばした状態で歩行する歩容データを得ることができる。しかしながら、例えば図７に示すように、右脚リンク４０が伸びている状態（ａ）から、両脚リンク３０、４０が伸びる状態（ｂ）を経て、左脚リンク３０が伸びている状態（ｃ）へと遷移する際に、体幹１２の高さ位置が急激に変化してしまう。なお、図７（ｂ）に示す状態は、図６に図示する符号Ｂが指す時刻に対応する。本実施例の歩容データ作成装置１０４では、体幹１２の急激な上下動を抑制するために、次に説明するステップＳ１０の処理が実行される。
【００２８】
図５のステップＳ１０では、体幹高さ決定装置１６４が、左脚リンク３０に関する許容体幹高さ位置と右脚リンク４０に関する許容体幹高さ位置に基づいて、体幹１２の高さ位置を決定する。ここで図８を参照して、図５のステップＳ１０において体幹高さ決定装置１６４が実行する処理の流れを説明する。
図８のステップＳ１０２では、体幹１２の高さ位置を決定する処理を実行する対象時刻ｔを設定する。
ステップＳ１０４では、ステップＳ１０２で設定した時刻ｔに対して、左体幹高さ計算装置１６１が計算した左脚リンク３０に関する許容体幹高さ位置ｚ１（ｔ）と、右脚リンク４０に関する許容体幹高さ位置ｚ２（ｔ）を入力する。
ステップＳ１０６では、入力した体幹高さ位置ｚ１（ｔ）と体幹高さ位置ｚ２（ｔ）の高低差ｄｚ（ｔ）＝｜ｚ１（ｔ）−ｚ２（ｔ）｜を計算する。図６、図７からも明らかなように、体幹高さ位置ｚ１（ｔ）と体幹高さ位置ｚ２（ｔ）の高低差ｄｚ（ｔ）がゼロとなる時点において伸びている脚リンク３０、４０が切替り、その前後において体幹１２の高さ位置が急激に変化する。また、その高低差ｄｚ（ｔ）が小さいほど、伸びている脚リンク３０、４０が切替る時点との時間差が短いと推測することができる。このことは２本以上の脚リンクを備えるロボットにあてはまる。一般的にいえば、脚リンク毎に計算した許容体幹高さ位置のなかで、最も低い位置（第１位置）とそれに次いで低い位置（第２位置）との高低差に基づいて、伸びている脚リンクが切替る時点までの時間を推測することができる。
【００２９】
ステップＳ１０８では、計算した高低差ｄｚ（ｔ）が、高低差基準値λを超えているのか否かを判定する。高低差基準値λは、オペレータ等が適宜設定することのできるパラメータである。この判定でイエスとなればステップＳ１１０へ進み、ノーとなればステップＳ１１２に進む。
ステップＳ１１０では、高低差ｄｚ（ｔ）が大きいことから、伸びている脚リンク３０、４０が切替る時点との時間差が長いと判断することができる。この場合、入力した体幹高さ位置ｚ１（ｔ）、ｚ２（ｔ）のなかで最も低い位置（第１高さ位置）を、体幹１２の高さ位置ｚ３（ｔ）として決定する。即ち、
ｚ３（ｔ）＝Ｍｉｎ（ｚ１（ｔ），ｚ２（ｔ））
となる。
ステップＳ１１２では、高低差ｄｚ（ｔ）が小さいことから、伸びている脚リンク３０、４０が切替る時点との時間差が短いと判断することができる。この場合、入力した体幹高さ位置ｚ１（ｔ）、ｚ２（ｔ）のなかで最も低い位置（第１高さ位置）から下降させた位置を、体幹１２の高さ位置ｚ３（ｔ）として決定する。高さ位置ｚ３（ｔ）は、例えば、次式を用いて計算することができる。
ｚ３（ｔ）＝Ｍｉｎ（ｚ１（ｔ），ｚ２（ｔ））−（λ−ｄｚ）２／４λ
＝（ｚ１（ｔ）＋ｚ２（ｔ））／２−（λ２＋ｄｚ（ｔ）２）／４λ
上式に示すように、体幹高さ位置ｚ１（ｔ）、ｚ２（ｔ）のなかで最も低い位置Ｍｉｎ（ｚ１（ｔ），ｚ２（ｔ））に対して、高低差ｄｚが小さいときほど、決定する高さ位置ｚ３（ｔ）は大きく下降する。
図９に示すように、このステップＳ１１２で計算される高さ位置ｚ３（ｔ）は、左脚リンク３０に関する許容体幹高さ位置の軌道Ｚ１と、右脚リンク４０に関する許容体幹高さ位置の軌道Ｚ２から作成されるベジェ曲線軌道上に位置する。なお、上記した演算式は一例であり、軌道Ｚ１と軌道Ｚ２を平滑に接続する他の近似曲線式を用いてもよい。
【００３０】
図８のステップＳ１１４では、決定された高さ位置ｚ３（ｔ）が体幹歩容データ作成装置１５４に入力される。体幹歩容データ作成装置１５４は、記憶している体幹歩容データの高さ位置を、入力した高さ位置に書換える。
ステップＳ１１６では、上記した処理がすべての時刻に対して実行されたのか否かを判定する。イエスであれば処理を終了して図５のフローに戻る。ノーであれば、ステップＳ１０２へ戻り、処理を実行する対象時刻ｔを新たに設定し、上記の処理を繰り返す。
体幹高さ決定装置１６４によって、図１０に示す体幹１２の高さ位置の軌道Ｚ３が作成される。この軌道Ｚ３によると、ロボット６は脚リンク３０、４０を自然に伸ばして歩行することができるとともに、伸びている脚リンク３０、４０が切替る時点（例えば図中のＢ）においても、体幹１２の高さ位置が急激に変化することがない。それにより、アクチュエータ等に過大な負荷がかかることが抑制される。
【００３１】
図１１に示すように、体幹高さ決定装置１６４は、上述した処理に用いる高低差基準値λを、ロボット６の歩幅に応じて増減調節してもよい。この場合、図１１（ａ）に示すように歩幅が大きい場合は、図１１（ｂ）に示すように大きな高低差基準値λ１を用いるとよい。図１１（ｃ）に示すように歩幅が小さい場合は、図１１（ｄ）に示すように小さな高低差基準値λ２を用いるとよい。それにより、体幹１２の高さ位置を無用に低下させることなく、体幹１２の高さ位置の急激な変化を抑制することができる。
上記した体幹高さ位置の決定処理は、二足歩行ロボットに限定されず、さらに多数の脚リンクを備えるロボットにも適用可能である。脚リンク毎に計算した高さ位置のなかで最も低い第１高さ位置と、第１高さ位置とその第１高さ位置に次いで低い第２高さ位置との高低差ｄｚに基づいて、上記と同様に体幹高さ位置ｚ３を決定することができる。
【００３２】
図５のステップＳ１２では、体幹高さ修正装置１５６が、体幹歩容データ作成装置１５４が記憶している体幹歩容データの高さ位置の軌道Ｚ３を平滑化する処理を実行する。
図１２は、図５のステップＳ１２において体幹高さ修正装置１５６が実行する処理の流れを示している。体幹高さ修正装置１５６は、図１２に示すフローに沿って、体幹歩容データ作成装置１５４が記憶している体幹歩容データの高さ位置を、順次修正していく。以下、図１２に示すフローに沿って、図５のステップＳ１２で実行される処理について説明する。また図１３に、以下に説明する処理によって作成される体幹高さ位置の軌道を示す。図１３中の軌道Ｚ３は修正前の体幹高さ位置の軌道を示している。図１３中の軌道Ｚ４はステップＳ２０２からステップ２１６の処理による修正後の体幹高さ位置の軌道を示している。図１３中の軌道Ｚ５はステップＳ２１８からステップ２３２の処理による修正後の体幹高さ位置の軌道を示している。
【００３３】
ステップＳ２０２では、処理を実行する時刻ｔの初期値にゼロを設定する。
ステップＳ２０４では、時刻ｔ＝０に対する修正後の体幹高さ位置ｚ４（０）に、時刻ｔ＝０に対する修正前の体幹高さ位置ｚ４（０）を設定する。即ち、時刻ｔ＝０に対する体幹高さ位置は修正されず、その値が保持される。
ステップＳ２０６では、体幹歩容データ作成装置１５４から、体幹歩容データが記述している時刻ｔ＋Δｔに対する高さ位置ｚ３（ｔ＋Δｔ）を入力する。
ステップＳ２０８では、時刻ｔに対する修正後の体幹高さ位置ｚ４（ｔ）から、時刻ｔ＋Δｔに対する体幹高さ位置ｚ３（ｔ＋Δｔ）への変化量Δｚ３（ｔ）を計算する。この段階において、時刻ｔに対する体幹高さ位置が、既に修正済みであることに留意されたい。
【００３４】
ステップＳ２１０では、ステップＳ２０８で計算した変化量Δｚ３（ｔ）をゼロと比較する。変化量Δｚ３（ｔ）がゼロを超えていれば、ステップＳ２１２へ進む。即ち、時刻ｔから時刻ｔ＋Δｔの間で体幹高さ位置が上昇している場合は、ステップＳ２１２へ進むこととなる。一方、変化量Δｚ３（ｔ）がゼロ以下であれば、ステップＳ２１４へ進む。即ち、時刻ｔから時刻Δｔの間で体幹高さ位置が上昇していない場合は、ステップＳ２１４へ進むこととなる。
ステップＳ２１２では、体幹高さ位置ｚ３（ｔ＋Δｔ）の修正処理が行われる。この処理では、時刻ｔから時刻ｔ＋Δｔの間における体幹高さ位置の変化（上昇）量Δｚ３（ｔ）を、所定の割合αだけ減少させるように、体幹高さ位置ｚ３（ｔ＋Δｔ）の修正が行われる。修正後の体幹高さ位置ｚ４（ｔ＋Δｔ）は、例えば次式によって計算することができる。
ｚ４（ｔ＋Δｔ）＝ｚ３（ｔ＋Δｔ）−α・Δｚ３（ｔ）
体幹高さ位置の変化量を減少させる係数αは、オペレータ等によって適宜設定することができる。修正後の体幹高さ位置ｚ４（ｔ＋Δｔ）は体幹歩容データ作成装置１５４に入力され、記憶されている体幹高さ位置ｚ３（ｔ＋Δｔ）が書換えられる。
【００３５】
一方、ステップＳ２１４では、ステップＳ２１２とは異なる手法によって、体幹高さ位置ｚ３（ｔ＋Δｔ）の修正処理が行われる。時刻ｔから時刻ｔ＋Δｔの間において体幹高さ位置が下降している場合、ステップＳ２１２と同様に変化量Δｚ３（ｔ）を減少させてしまうと、修正後の体幹高さ位置が、修正前の体幹高さ位置よりも高くなってしまう。この場合、修正後の体幹高さ位置が、脚リンク３０、４０を最大に伸ばしても届かない高さ位置となることがあり、ロボット６が実現できない歩容データが作成されてしまう。ロボット６のように、脚リンク３０、４０によって体幹１２の高さ位置が制限される脚式ロボットでは、体幹１２の高さ方向の軌道を平滑化する場合に、体幹高さ位置の許容高さを考慮する必要がある。
従って、このステップＳ２１４では、体幹高さ位置の変化量Δｚ３（ｔ）を減少させる処理は実行しない。ただし、前回の処理サイクルにおいて時刻ｔに対する体幹高さ位置が修正されている場合には、その修正量α・Δｚ３（ｔ−Δｔ）を用いて、修正後の体幹高さ位置ｚ３（ｔ＋Δｔ）を、次式のように計算する。
ｚ４（ｔ＋Δｔ）＝ｚ３（ｔ＋Δｔ）−α２・Δｚ３（ｔ−Δｔ）
上式は、時刻ｔに対する体幹高さ位置の修正量α・Δｚ３（ｔ−Δｔ）を、所定の割合αだけ減少させた修正量α２・Δｚ３（ｔ−Δｔ）によって、時刻ｔ＋Δｔに対する体幹高さ位置ｚ３（ｔ＋Δｔ）を修正するものである。このように体幹高さ位置ｚ（ｔ＋Δｔ）を修正することによって、時刻ｔまでの修正済みの体幹高さ位置の軌道を、時刻ｔ＋Δｔ以降の体幹高さ位置の軌道に、漸近させながら平滑に接続することができる。修正後の体幹高さ位置ｚ４（ｔ＋Δｔ）は体幹歩容データ作成装置１５４に入力され、記憶されている体幹高さ位置ｚ３（ｔ＋Δｔ）が書換えられる。
【００３６】
ステップＳ２１６では、時刻ｔ＋Δｔがｎ・Δｔであるのか否かを判定することによって、歩容データが記述している体幹高さ位置を最終時刻ｎ・Δｔのデータまで修正したのか否かを判定する。最終時刻ｎ・Δｔのデータまで終了していればステップＳ２１８へ進む。終了していなければ、時刻ｔに歩容データの単位時間Δｔを加算し、ステップＳ２０６へ戻り、上述の処理を繰り返す。
【００３７】
ステップＳ２１８からステップＳ２３２までの処理は、上述したステップＳ２０２からステップＳ２１６までの処理と、略同一となっている。ただし、上述したステップＳ２０２からステップＳ２１６までの処理では、体幹歩容データが記述している高さ位置を、最先（時刻ｔ＝０）のデータから最終（時刻ｔ＝ｎ・Δｔ）のデータへと、順に修正している。それに対して、ステップＳ２１８からステップＳ２３２までの処理では、同様の修正処理を、最終（時刻ｔ＝ｎ・Δｔ）のデータから最先（時刻ｔ＝０）のデータへと、逆方向に再度実行する。同様の処理を逆方向に実行することにより、体幹高さ位置が低下していた区間を、体幹高さ位置が上昇する区間として扱うことが可能となり、体幹高さ位置の上昇量を抑制する処理を同様に実行することができる。
【００３８】
具体的には、図１２のステップＳ２１８において、処理を実行する時刻の初期値に、体幹歩容データの最終のデータに対応する時刻ｔ・Δｔを設定する。
Ｓ２２０では、時刻ｔ＝ｎ・Δｔに対する再修正後の体幹高さ位置ｚ５（ｎ・Δｔ）に、時刻ｔ＝ｎ・Δｔに対する体幹高さ位置ｚ４（ｎ・Δｔ）を設定する。即ち、時刻ｔ＝ｎ・Δｔに対する体幹高さ位置は再修正されず、その値が保持される。
ステップＳ２２２では、体幹歩容データ作成装置１５４から、時刻ｔから単位時間Δｔだけ遡及する時刻ｔ−Δｔに対して体幹歩容データが記述している高さ位置ｚ４（ｔ−Δｔ）を入力する。
ステップＳ２２４では、ステップＳ２２０で入力した高さ位置ｚ３（ｔ）から、ステップＳ２２２で入力した高さ位置ｚ３（ｔ−Δｔ）への変化量Δｚ４（ｔ）を計算する。
ステップＳ２２６では、ステップＳ２２４で計算した変化量Δｚ４（ｔ）をゼロと比較する。変化量Δｚ４（ｔ）がゼロを超えていればステップＳ２２８へ進み、変化量Δｚ４（ｔ）がゼロ以下であればステップＳ２３０へ進む。
【００３９】
ステップＳ２２８では、先に説明したステップＳ２１２と同様に、体幹高さ位置ｚ４（ｔ−Δｔ）の再修正処理が行われる。この処理では、時刻ｔから時刻ｔ−Δｔへと時間を遡及したときの体幹高さ位置の変化（上昇）量Δｚ４（ｔ）を、所定の割合αだけ減少させることによって、再修正後の体幹高さ位置ｚ５（ｔ−Δｔ）を計算する。再修正後の体幹高さ位置ｚ５（ｔ−Δｔ）は、例えば次式によって計算することができる。
ｚ５（ｔ−Δｔ）＝ｚ４（ｔ−Δｔ）−α・Δｚ４（ｔ）
再修正後の体幹高さ位置ｚ５（ｔ−Δｔ）は体幹歩容データ作成装置１５４に入力され、記憶されている体幹高さ位置ｚ４（ｔ−Δｔ）が書換えられる。
ステップＳ２３０では、先に説明したステップＳ２１４と同様に、体幹高さ位置ｚ４（ｔ−Δｔ）の再修正処理が行われる。即ち、再修正後の体幹高さ位置ｚ５（ｔ−Δｔ）は、例えば次式によって計算することができる。
ｚ５（ｔ−Δｔ）＝ｚ５（ｔ−Δｔ）−α・Δｚ３（ｔ−Δｔ）
修正後の体幹高さ位置ｚ４（ｔ＋Δｔ）は体幹歩容データ作成装置１５４に入力され、記憶されている体幹高さ位置ｚ３（ｔ＋Δｔ）が書換えられる。
【００４０】
ステップＳ２３２では、時刻ｔ−Δｔがゼロであるのか否かを判定することによって、歩容データが記述している体幹高さ位置を、最先時刻ゼロのデータまで修正したのか否かを判定する。最先時刻ゼロのデータまで終了していれば、体幹高さ位置の平滑化処理を終了する。終了していなければ、時刻ｔから歩容データの単位時間Δｔを減算し、ステップＳ２２２へ戻り、上述の処理を繰り返す。
図５のステップＳ１２では、以上に説明した図１２に示す処理フローが実行され、体幹歩容データ作成装置１５４が記憶している体幹歩容データの体幹高さ位置の軌道が、図１３に示す軌道Ｚ５のように平滑化される。図５のステップＳ１２の処理が終了すると、歩容データ作成装置１０４による歩容データの作成処理が終了する。
【００４１】
図５に示す処理フローでは、ステップＳ１０の体幹高さ位置の決定処理や、ステップＳ１２の体幹高さ位置の平滑化処理の後に、再度ステップＳ６の体幹歩容データの作成処理に戻ってもよい。ステップＳ１０やステップＳ１２の処理によって体幹１２の高さ位置が変更されると、歩容データに従って歩行するときのロボット６の実際ＺＭＰが、目標ＺＭＰと偏差を持つようになる。そこでステップＳ６の処理に戻り、ステップＳ１０やステップＳ１２の処理で定めた体幹高さ位置を用いて、ロボット６が歩行することを可能とする体幹１２の水平方向の位置を再度探索する。次いで、新たに探索した体幹１２の水平位置を用いて、ステップＳ１０の体幹高さ位置の決定処理やステップＳ１２の体幹高さ位置の修正処理を再度行う。ステップＳ６からステップＳ８又はステップＳ１０のサイクルを繰り返すことによって、ロボット６の実際ＺＭＰが目標ＺＭＰに略一致する歩容データを作成することが可能となる。
歩容データ作成装置１０４が作成する体幹歩容データによって、ロボット６は、脚リンク３０、４０を自然に伸ばして歩行するとともに、体幹１２を鉛直方向に緩やかに上下させながら歩行することができる。アクチュエータ等に過大な負荷がかかることがなく、ロボット６は安定した歩行動作を実現することができる。
【００４２】
本実施例のロボット６が備える歩容データ作成装置１０４は、図１４に示すように、体幹１２の高さ位置が所定高さｚｘ以下に制限されている歩容データを作成することもできる。この場合、歩容データ作成装置１０４の体幹高さ位置決定装置１６４に、体幹１２の高さ位置を所定の制限高さｚｘを事前に教示しておく。体幹高さ位置決定装置１６４は、図８に示す処理フローを、脚リンク３０、４０に関する許容体幹高さ位置に、教示された所定の制限高さｚｘを加えたなかで、最も低い位置（これを第１位置とする）と、それに次いで低い位置（これを第２位置とする）に対して実施すればよい。
【００４３】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。
本明細書または図面に説明した技術要素は、単独であるいは各種の組み合わせによって技術的有用性を発揮するものであり、出願時請求項記載の組み合わせに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【図面の簡単な説明】
【００４４】
【図１】実施例１のロボットを模式的に示す図。
【図２】ロボットが搭載しているコンピュータ装置の機能的な構成を示す図。
【図３】歩容データ作成装置の機能的な構成を示す図。
【図４】脚リンクの両端間距離を説明する図。
【図５】歩容データ作成装置が実行する処理の流れを示すフローチャート。
【図６】許容体幹高さ位置の軌道を示す図。
【図７】好ましくない体幹の上下動を説明する図。
【図８】体幹高さ決定装置が実行する処理の流れを示すフローチャート。
【図９】ベジェ曲線に沿った体幹高さ位置の軌道の一例を示す図。
【図１０】体幹高さ決定装置が作成する体幹高さ位置の軌道の一例を示す図。
【図１１】歩幅と体幹高さ位置の高低差基準値λの関係を説明する図。
【図１２】体幹高さ修正装置が実行する処理の流れを示すフローチャート。
【図１３】体幹高さ修正装置が作成する体幹高さ位置の軌道の一例を示す図。
【図１４】体幹高さ決定装置が作成する体幹高さ位置の軌道の別例を示す図。
【符号の説明】
【００４５】
６：ロボット
１２：体幹
１４：コンピュータ装置
１６：左腕リンク
１８：右腕リンク
２０：頭部
３０：左脚リンク
３１：左股関節
３２：左大腿リンク
３４：左膝関節
３６：左下腿リンク
３７：左足首関節
３８：左足平リンク
４０：右脚リンク
４１：右股関節
４２：右大腿リンク
４４：右膝関節
４６：右下腿リンク
４７：右足首関節
１０２：歩行パターンデータ記憶装置
１０４：歩容データ作成装置
１０６：歩容データ補正装置
１０８：関節角群計算装置
１１０：アクチュエータ制御装置
１１２：実際運動計算装置
１１４：ロボットの機械系
１１６：各種センサ
１５２：足先歩容データ作成装置
１５４：体幹歩容データ作成装置
１５６：体幹高さ修正装置
１６１：左体幹高さ計算装置
１６２：右体幹高さ計算装置
１６４：体幹高さ決定装置
【図１】
0004696727.tif 000002
【図２】
0004696727.tif 000003
【図３】
0004696727.tif 000004
【図４】
0004696727.tif 000005
【図５】
0004696727.tif 000006
【図６】
0004696727.tif 000007
【図７】
0004696727.tif 000008
【図８】
0004696727.tif 000009
【図９】
0004696727.tif 000010
【図１０】
0004696727.tif 000011
【図１１】
0004696727.tif 000012
【図１２】
0004696727.tif 000013
【図１３】
0004696727.tif 000014
【図１４】
0004696727.tif 000015