(57)【要約】【課題】  実際の支持脚の足平配置を計測し、実際の足平配置と歩容データが記述する足平配置経路の偏差に基づいて歩容データを補正しながら歩行するロボットにおいて、歩容データが記述する足平配置経路に自然な動作で復帰することが可能な技術を提供する。【解決手段】  実際の足平配置を計測する工程と、実際の足平配置に対応する仮想的な足平配置を特定する工程と、実際の足平配置と仮想的な足平配置の偏差を計算する工程と、前記偏差に基づいて歩容データが記述する足平配置経路へ復帰するまでの歩数を決定する工程と、実際の足平配置から歩容データに基づいて歩行するときの足平配置経路を少なくとも前記歩数まで計算する工程と、実際の足平配置から前記歩数まで歩行したときの足平配置が、仮想的な足平配置から前記歩数まで歩行したときの足平配置と一致するように、一歩毎の補正量を計算する工程と、前記補正量に基づいて歩容データを補正する工程を備える。【選択図】  図４
2007007803.tif 000002
【特許請求の範囲】
【請求項１】
歩容データに基づいて歩行するロボットを制御する方法であって、
「実際の支持脚の足平配置」を計測する工程と、
「実際の支持脚の足平配置」に対応する、「歩容データが記述する足平配置経路」における「仮想的な支持脚の足平配置」を特定する工程と、
「実際の支持脚の足平配置」と、「仮想的な支持脚の足平配置」の偏差を計算する工程と、
前記偏差に基づいて、「実際の支持脚の足平配置」から、「歩容データが記述する足平配置経路」へ復帰するまでの歩数を決定する工程と、
「「実際の支持脚の足平配置」から歩容データに基づいて歩行するときの足平配置経路」を、少なくとも前記歩数まで計算する工程と、
「「実際の支持脚の足平配置」から歩容データに基づいて歩行するときの足平配置経路」における「実際の支持脚の足平配置」から前記歩数まで歩行したときの支持脚の足平配置が、「歩容データが記述する足平配置経路」における「仮想的な支持脚の足平配置」から前記歩数まで歩行したときの支持脚の足平配置と一致するように、「「実際の支持脚の足平配置」から歩容データに基づいて歩行するときの足平配置経路」の一歩毎の補正量を計算する工程と、
前記補正量に基づいて歩容データを補正する工程と、
を備えることを特徴とする制御方法。
【請求項２】
ロボットの歩行速度を計測する工程をさらに備え、
前記歩数を決定する工程では、前記偏差と前記歩行速度に基づいて、「歩容データが記述する足平配置経路」へ復帰するまでの歩数を決定することを特徴とする、請求項１の制御方法。
【請求項３】
歩容データに基づいて歩行するロボットであって、
「実際の支持脚の足平配置」を計測する手段と、
「実際の支持脚の足平配置」に対応する、「歩容データが記述する足平配置経路」における「仮想的な支持脚の足平配置」を特定する手段と、
「実際の支持脚の足平配置」と、「仮想的な支持脚の足平配置」の偏差を計算する手段と、
前記偏差に基づいて、「実際の支持脚の足平配置」から、「歩容データが記述する足平配置経路」へ復帰するまでの歩数を決定する手段と、
「「実際の支持脚の足平配置」から歩容データに基づいて歩行するときの足平配置経路」を、少なくとも前記歩数まで計算する手段と、
「「実際の支持脚の足平配置」から歩容データに基づいて歩行するときの足平配置経路」における「実際の支持脚の足平配置」から前記歩数まで歩行したときの支持脚の足平配置が、「歩容データが記述する足平配置経路」における「仮想的な支持脚の足平配置」から前記歩数まで歩行したときの支持脚の足平配置と一致するように、「「実際の支持脚の足平配置」から歩容データに基づいて歩行するときの足平配置経路」の一歩毎の補正量を計算する手段と、
前記補正量に基づいて歩容データを補正する手段と、
を備えることを特徴とするロボット。
【請求項４】
動作計画に基づいて移動するロボットを制御する方法であって、
ロボットの「実際の位置と方向」を計測する工程と、
「実際の位置と方向」に対応する、「動作計画が記述する移動経路」における「仮想的な位置と方向」を特定する工程と、
「実際の位置と方向」と、「仮想的な位置と方向」の偏差を計算する工程と、
前記偏差に基づいて、「実際の位置と方向」から、「動作計画が記述する移動経路」へ復帰するまでの時間を決定する工程と、
「「実際の位置と方向」から動作計画に基づいて移動するときの移動経路」を、少なくとも前記時間まで計算する工程と、
「「実際の位置と方向」から動作計画に基づいて移動するときの移動経路」における「実際の位置と方向」から前記時間だけ移動したときのロボットの位置と方向が、「動作計画が記述する移動経路」における「仮想的な位置と方向」から前記時間だけ移動したときのロボットの位置と方向と一致するように、「「実際の位置と方向」から動作計画に基づいて移動するときの移動経路」の補正量を計算する工程と、
計算された補正量に基づいて動作計画を補正する工程と、
を備えることを特徴とする制御方法。
【請求項５】
動作計画に基づいて移動するロボットであって、
ロボットの「実際の位置と方向」を計測する手段と、
「実際の位置と方向」に対応する、「動作計画が記述する移動経路」における「仮想的な位置と方向」を特定する手段と、
「実際の位置と方向」と、「仮想的な位置と方向」の偏差を計算する手段と、
前記偏差に基づいて、「実際の位置と方向」から、「動作計画が記述する移動経路」へ復帰するまでの時間を決定する手段と、
「「実際の位置と方向」から動作計画に基づいて移動するときの移動経路」を、少なくとも前記時間まで計算する手段と、
「「実際の位置と方向」から動作計画に基づいて移動するときの移動経路」における「実際の位置と方向」から前記時間だけ移動したときのロボットの位置と方向が、「動作計画が記述する移動経路」における「仮想的な位置と方向」から前記時間だけ移動したときのロボットの位置と方向と一致するように、「「実際の位置と方向」から動作計画に基づいて移動するときの移動経路」の補正量を計算する手段と、
計算された補正量に基づいて動作計画を補正する手段と、
を備えることを特徴とするロボット。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自律的に移動するロボットを制御する技術に関する。詳しくは、体幹（胴部）に対して脚リンクが揺動可能に連結されている機械（脚式ロボットの機械系）を制御して歩行させる際、歩行中に目標とする歩行経路から外れてしまった場合に、目標とする歩行経路へ自然な動作で復帰するロボットとその制御方法に関する。
【背景技術】
【０００２】
ヒトの行う歩行を模して、左足リンクと体幹と右足リンクの相対的姿勢を変化させることによって歩行する脚式ロボットが開発されている。
脚式ロボットが歩行するためには、左足先と体幹と右足先の運動を指示するデータを必要とする。そのうちの体幹の位置と姿勢は、足先の位置と姿勢に対して適当な値である必要があり、その値が適当でなければロボットは転倒してしまう。
脚式ロボットが転倒しない体幹の位置と姿勢を得るためには、ロボットのダイナミクスを考慮に入れた複雑な計算を必要とする。その計算過程は大略下記のものである。
（１）ロボットの左足先と右足先の位置と姿勢を指示する経時的データを指定する。
（２）足先の位置と姿勢を考慮してロボットのＺＭＰが存在しなければならない位置を指定する。ＺＭＰ（zero moment point）は、ロボットに作用する重力や床反力や慣性力の合力のモーメントがゼロになる床上の点をいう。ＺＭＰが接地脚の足平内にあればロボットは転倒しない。逆にいうと、ロボットが転倒しないためには、ＺＭＰが接地脚の足平内になければならない。そこで接地脚の足先の位置と姿勢を考慮し、下記の関係を満たす目標ＺＭＰを指定する。即ち、一方の脚リンク（例えば左脚）が遊脚になっている間は接地脚（右脚）の足平内に存在し、その一方の脚（左脚）が接地して両足接地状態になった時に新たに接地した脚（左脚）の足平内に向けて移動開始し、それまでに接地していた脚（右脚）が遊脚となる前に新たに接地した脚（左脚）の足平内に移動し終えるＺＭＰを指定する。このようにして指定されたＺＭＰは、目標ＺＭＰと呼ばれる。実際のＺＭＰが目標ＺＭＰのとおりに移動すれば、ロボットは転倒することなく歩行しつづける。
（３）足先の位置と姿勢の変化とそれに追従して変化する目標ＺＭＰが指定されると、体幹の位置と姿勢の経時的変化を仮定してロボットのダイナミクスを計算する。計算する時点で、足先の位置と姿勢の経時的変化が指定されているために、ロボットの体幹の位置と姿勢を仮定すると、ロボットの全身の姿勢が決まる。ロボットの全身の姿勢が決まると、その姿勢におけるＺＭＰの位置を計算することが可能となる。ＺＭＰの位置を計算するためには、静的な要素に加えて、ロボットに作用する慣性力の影響を織り込まなければならない。仮定した体幹の位置と姿勢の経時的変化を計算に含めることで、ロボットのダイナミクスまで考慮してＺＭＰの位置を計算することが可能となる。体幹の位置と姿勢の経時的変化を仮定するとＺＭＰの位置を計算することができることから、目標ＺＭＰに一致するＺＭＰを実現する体幹の位置と姿勢の経時的変化を探求することができる。
上記によって探求された体幹の位置と姿勢の経時的変化を示すデータを体幹歩容データといい、もともと指定されている足先の位置と姿勢の経時的変化を示すデータを足先歩容データといい、両者を総称して歩容データという。歩容データに従ってロボットが歩行すれば、実際のＺＭＰが目標ＺＭＰに一致し、ロボットは転倒せずに歩行しつづけることができる。
【０００３】
歩容データは、時間に対する位置および姿勢の経時的変化で与えられる。位置と速度と加速度は関連しており、そのうちの一つの量から他の量を計算することができるために、位置の代わりに速度または加速度の経時的変化を扱ってもよい。姿勢は座標軸に対する回転角度で表現されるが、角度と角速度と角加速度は関連しており、そのうちの一つの量から他の量を計算することができるために、角度の代わりに角速度または角加速度の経時的変化を扱ってもよい。本明細書では、歩容データが、位置・速度・加速度のいずれかと、角度・角速度・角加速度のいずれかで記述されるために、運動を記述するデータということにする。
【０００４】
目標ＺＭＰに一致するＺＭＰをもたらす体幹運動を算出する手法は、目標足先運動の変化に追従してロボットが歩行しつづけることを可能とする目標体幹運動の経時的変化を算出する手法の典型例であり、それには限られない。一般的にいうと、脚式ロボットは、体幹と体幹に対して揺動可能に連結されている脚リンクを備えており、歩容データが記述する足先運動の経時的変化を記述する足先歩容データが指示されると、目標足先運動の変化に追従して歩行しつづけることを可能とする目標体幹運動の経時的変化を記述する体幹歩容データを算出し、指示された足先歩容データと算出された体幹歩容データを用いて歩行する。
【０００５】
歩容データに基づいて関節群を駆動すると、ロボットは歩行動作を実現する。実現される歩行動作が、想定した歩容データで表現される歩行動作と一致していれば、実現されるＺＭＰは支持脚の足平内に維持されるため、ロボットは転倒することなく安定して歩行動作を継続することができる。
【０００６】
ロボットが歩行をしている間に、ロボットに予期せぬ外乱力が作用して、歩容データが記述する動作と、実際の動作との間にズレが生じることがある。路面の予期せぬ凹凸によって予期せぬ外乱力が作用することもあるし、ロボットに外界から押したり引いたりする外力が加えられることもある。ロボットの構造上のたわみや、ロボットの関節のガタや、ロボットの応答遅れ等に起因して歩容データから外れれば、予期せぬ外乱力が作用したのと同じことになる。
ロボットの実際の動作が歩容データが記述する動作からズレた場合、実際のロボットのＺＭＰと目標ＺＭＰの間に相違が生じ、ＺＭＰが支持脚の足平内へ維持されなくなって、ロボットは転倒する可能性がある。このような事態を防ぐために、ロボットが実際に動作している状態を検出して、歩容データが記述する動作にフィードバックして、安定な動作を実現する技術が開発されている。
特許文献１に記載の技術では、ロボットに作用する床反力あるいは床反力モーメントを測定してＺＭＰ位置を実測する。実測されたＺＭＰ位置を目標ＺＭＰ位置と比較し、その偏差を両足平の目標位置や姿勢へフィードバックすることで歩行の安定化をはかっている。
【特許文献１】特開平５−３０５５７９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
従来から提案されている脚式ロボットの歩行を制御する技術の多くは、ロボットに作用する力や加速度を計測して、計画された動作へのフィードバックを行う。このような制御技術によれば、ロボットの動力学的な安定性を確保することが可能であり、安定して歩行し続けるロボットを実現することができる。上記の制御技術によると、ロボットは必ずしも所望の配置で脚リンクの足平を接地するわけではないが、少なくとも安定した歩行を実現することができる。
【０００８】
しかしながら、ロボットの脚リンクの足平が所望の配置で接地するように制御したい場合がある。例えば床上に障害物が点在する室内をロボットが歩行する場合、障害物を踏まないように、接地する足平の配置を制御したい。またパフォーマンスを行うエンターテイメント用のロボットの場合、予め定めた歩行経路に沿って歩行するように制御したい。
なお本明細書でいう「足平の配置」は、脚リンクの足平が床と接地するときの、足平に当接する床上の領域を記述する情報のことを指す。このような情報としては、例えば足平が床と接地した状態で、足平の基準となる点に当接する床上の点の位置を示す情報であってもよい。また、足平が床と接地した状態で、足平の基準となる点に当接する床上の点の位置と、足平の基準となる方向（例えば踵から爪先へ向かう方向）に一致する床面内の方向の両者を示す情報であってもよい。
【０００９】
ロボットが接地するときの足平の配置を制御するためには、実際に接地している支持脚の足平の配置を計測して、ロボットの動作に反映することが望ましい。歩容データには本来目標とする足平配置経路が記述されており、実際に接地している支持脚の足平の配置を計測することができれば、歩容データが記述する足平の配置経路からの偏差を計算して、その後の動作へフィードバックし、歩容データが記述する足平の配置経路へ復帰させることができる。
ロボットを歩容データが記述する足平の配置経路へ復帰させるときに、ロボットの動作を急激に変化させると、ぎこちない動作となってしまい、見た目にも不自然な動作となってしまう。エンターテイメントに用いるロボットの場合、ヒトが行う歩行と同じように、滑らかで自然な動作によって歩容データが記述する足平配置経路へ復帰することが望ましい。自然な動作を維持しながらロボットを歩容データが記述する足平配置経路へ復帰させることが可能な技術が待望されている。
【００１０】
本発明は上記課題を解決する。本発明は、実際の支持脚の足平配置を計測し、計測された足平配置と歩容データが記述する足平配置経路の偏差に基づいて歩容データを補正しながら歩行する脚式ロボットにおいて、歩容データが記述する足平配置経路に自然な動作で復帰することが可能な技術を提供する。
また本発明の原理は歩行ロボットに限らず、動作計画に基づいて自律的に移動するロボットに応用することもできる。本発明は、ロボットの実際の位置および方向を計測し、計測された位置と方向と動作計画が記述する移動経路の偏差に基づいて動作計画を補正しながら移動するロボットにおいて、動作計画が記述する移動経路に自然な動作で復帰することが可能な技術を提供する。
【課題を解決するための手段】
【００１１】
本発明の方法は、歩容データに基づいて歩行するロボットを制御する方法である。その方法は、「実際の支持脚の足平配置」を計測する工程と、「実際の支持脚の足平配置」に対応する「歩容データが記述する足平配置経路」における「仮想的な支持脚の足平配置」を特定する工程と、「実際の支持脚の足平配置」と「仮想的な支持脚の足平配置」の偏差を計算する工程と、前記偏差に基づいて「実際の支持脚の足平配置」から「歩容データが記述する足平配置経路」へ復帰するまでの歩数を決定する工程と、「「実際の支持脚の足平配置」から歩容データに基づいて歩行するときの足平配置経路」を少なくとも前記歩数まで計算する工程と、「「実際の支持脚の足平配置」から歩容データに基づいて歩行するときの足平配置経路」における「実際の支持脚の足平配置」から前記歩数まで歩行したときの支持脚の足平配置が「歩容データが記述する足平配置経路」における「仮想的な支持脚の足平配置」から前記歩数まで歩行したときの支持脚の足平配置と一致するように「「実際の支持脚の足平配置」から歩容データに基づいて歩行するときの足平配置経路」の一歩毎の補正量を計算する工程と、前記補正量に基づいて歩容データを補正する工程とを備えている。
【００１２】
上記の制御方法では、ロボットが歩行している間に、接地している支持脚の実際の足平配置を計測する。支持脚が実際に接地している足平配置を計測することができれば、ロボットの実際の歩行経路が、歩容データが記述する目標とする歩行経路からどれだけズレているかを知ることができる。上記の制御方法では、目標とする「歩容データが記述する足平配置経路」において、「実際の支持脚の足平配置」に対応する「仮想的な支持脚の足平配置」を特定し、「実際の支持脚の足平配置」と「仮想的な支持脚の足平配置」の偏差を計算する。計算された偏差に応じて歩容データを補正し、その後の歩行経路を補正する。
上記の制御方法では、計算された偏差に基づいて、「歩容データが記述する足平配置経路」へ復帰するまでの歩数を決定する。計算された偏差が大きい場合、「歩容データが記述する足平配置経路」へ復帰するまでの歩数は大きな値に設定され、計算された偏差が小さい場合、「歩容データが記述する足平配置経路」へ復帰するまでの歩数は小さな値に設定される。
ロボットの一歩ごとの歩幅や旋回角度は、ロボットの脚リンクの可動範囲に応じて上限が定まっている。上記のように、計算された偏差に基づいて「歩容データが記述する足平配置経路」へ復帰するまでの歩数を決定することによって、ロボットに無理な動作をとらせることなく、「歩容データが記述する足平配置経路」へ自然な動作で復帰させることができる。
上記の制御方法では、「歩容データが記述する足平配置経路」へ復帰するまでの歩数が決定されると、その歩数だけ「実際の支持脚の足平配置」から歩容データに基づいて歩行するときの足平配置経路を計算する。そして、「「実際の支持脚の足平配置」から歩容データに基づいて歩行するときの足平配置経路」において、「実際の支持脚の足平配置」から前記歩数まで歩行したときの支持脚の足平配置が、「歩容データが記述する足平配置経路」における「仮想的な支持脚の足平配置」から前記歩数まで歩行したときの支持脚の足平配置と一致するように、「「実際の支持脚の足平配置」から歩容データに基づいて歩行するときの足平配置経路」の一歩毎の補正量を計算する。ここでは、歩数毎に補正量を求める。例えば２０ｃｍだけの偏差が存在し、２０ｃｍであれば４歩でずれを解消するとする歩数が決定されれば、１歩目で５ｃｍ補正し、２歩目で１０ｃｍ補正し、３歩目で１５ｃｍ補正し、４歩目で２０ｃｍ補正することによって、４歩でずれを解消する補正量を計算する。
上記の制御方法では、計算された補正量に基づいて歩容データを補正する。ロボットは補正された歩容データに基づいて歩行する。ロボットは、偏差に基づいて決定された歩数後に、歩容データが記述する足平配置経路へ復帰することができる。
【００１３】
上記の制御方法は、ロボットの歩行速度を計測する工程をさらに備え、前記歩数を決定する工程では、前記偏差と前記歩行速度に基づいて「歩容データが記述する足平配置経路」へ復帰するまでの歩数を決定することが好ましい。
【００１４】
ロボットが高速で歩行している場合、急激に動作を変更するとバランスを崩しやすいため、動作を大きく変更しないことが好ましい。逆にロボットが低速で歩行している場合、動作を大きく変更してもそれほどバランスを崩すことがないため、大きく動作を変更して歩容データが記述する足平配置経路へ速やかに復帰することが好ましい。
上記した制御方法によれば、ロボットの歩行速度に応じて歩容データが記述する足平配置経路へ復帰するまでの歩数を決定することが可能であり、ロボットの歩行の安定性を確保しながら、より迅速に歩容データが記述する足平配置経路へ復帰させることができる。
【００１５】
本発明はロボットとしても具現化される。本発明のロボットは、歩容データに基づいて歩行するロボットである。そのロボットは、「実際の支持脚の足平配置」を計測する手段と、「実際の支持脚の足平配置」に対応する「歩容データが記述する足平配置経路」における「仮想的な支持脚の足平配置」を特定する手段と、「実際の支持脚の足平配置」と「仮想的な支持脚の足平配置」の偏差を計算する手段と、前記偏差に基づいて「実際の支持脚の足平配置」から「歩容データが記述する足平配置経路」へ復帰するまでの歩数を決定する手段と、「「実際の支持脚の足平配置」から歩容データに基づいて歩行するときの足平配置経路」を少なくとも前記歩数まで計算する手段と、「「実際の支持脚の足平配置」から歩容データに基づいて歩行するときの足平配置経路」における「実際の支持脚の足平配置」から前記歩数まで歩行したときの支持脚の足平配置が「歩容データが記述する足平配置経路」における「仮想的な支持脚の足平配置」から前記歩数まで歩行したときの支持脚の足平配置と一致するように「「実際の支持脚の足平配置」から歩容データに基づいて歩行するときの足平配置経路」の一歩毎の補正量を計算する手段と、前記補正量に基づいて歩容データを補正する手段とを備えている。
【００１６】
本発明の原理は、歩行ロボットに限らず、ロボットの実際の位置および方向を計測し、計測された位置と方向と動作計画が記述する移動経路の偏差に基づいて動作計画を補正しながら移動する自律移動ロボットに応用することもできる。
本発明の他の１つの方法は、動作計画に基づいて移動するロボットを制御する方法である。その方法は、ロボットの「実際の位置と方向」を計測する工程と、「実際の位置と方向」に対応する「動作計画が記述する移動経路」における「仮想的な位置と方向」を特定する工程と、「実際の位置と方向」と「仮想的な位置と方向」の偏差を計算する工程と、前記偏差に基づいて「実際の位置と方向」から「動作計画が記述する移動経路」へ復帰するまでの時間を決定する工程と、「「実際の位置と方向」から動作計画に基づいて移動するときの移動経路」を少なくとも前記時間まで計算する工程と、「「実際の位置と方向」から動作計画に基づいて移動するときの移動経路」における「実際の位置と方向」から前記時間だけ移動したときのロボットの位置と方向が「動作計画が記述する移動経路」における「仮想的な位置と方向」から前記時間だけ移動したときのロボットの位置と方向と一致するように「「実際の位置と方向」から動作計画に基づいて移動するときの移動経路」の補正量を計算する工程と、計算された補正量に基づいて動作計画を補正する工程とを備えている。
【００１７】
上記の制御方法では、ロボットの「実際の位置と方向」を計測し、「動作計画が記述する移動経路」において「実際の位置と方向」に対応する「仮想的な位置と方向」を特定する。そして、「実際の位置と方向」と「仮想的な位置と方向」の偏差を算出し、両者の偏差に基づいて、「実際の位置と方向」から「動作計画が記述する移動経路」へ復帰するまでの時間を決定し、決定された時間で「実際の位置と方向」から「動作計画が記述する移動経路」まで復帰する移動経路を計算する。この移動経路の計算は、「実際の位置と方向」から動作計画に基づいて移動するときの移動経路を、決定された時間まで計算しておいて、この計算された移動経路が決定された時間において動作計画が記述する移動経路へ復帰するように、最適化問題を解くことによって行われる。上記の制御方法では、計算された補正量に基づいて動作計画が更新され、ロボットは動作計画が記述する移動経路へ復帰することができる。
【００１８】
本発明は動作計画に基づいて自律的に移動するロボットとしても具現化される。本発明の他の１つのロボットは、動作計画に基づいて移動するロボットである。そのロボットは、ロボットの「実際の位置と方向」を計測する手段と、「実際の位置と方向」に対応する「動作計画が記述する移動経路」における「仮想的な位置と方向」を特定する手段と、「実際の位置と方向」と「仮想的な位置と方向」の偏差を計算する手段と、前記偏差に基づいて「実際の位置と方向」から「動作計画が記述する移動経路」へ復帰するまでの時間を決定する手段と、「「実際の位置と方向」から動作計画に基づいて移動するときの移動経路」を少なくとも前記時間まで計算する手段と、「「実際の位置と方向」から動作計画に基づいて移動するときの移動経路」における「実際の位置と方向」から前記時間だけ移動したときのロボットの位置と方向が「動作計画が記述する移動経路」における「仮想的な位置と方向」から前記時間だけ移動したときのロボットの位置と方向と一致するように「「実際の位置と方向」から動作計画に基づいて移動するときの移動経路」の補正量を計算する手段と、計算された補正量に基づいて動作計画を補正する手段とを備えている。
【発明の効果】
【００１９】
本発明の制御方法とロボットによれば、支持脚の実際の足平配置を計測し、計測された足平配置と歩容データが記述する足平配置経路の偏差に基づいて歩容データを補正しながら歩行する際に、歩容データが記述する足平配置経路に自然な動作で復帰することができる。
また本発明の他の制御方法とロボットによれば、ロボットの位置および方向を実際に計測し、計測された位置と方向と動作計画が記述する移動経路の偏差に基づいて動作計画を補正しながら移動する際に、動作計画が記述する移動経路に自然な動作で復帰することができる。
【発明を実施するための最良の形態】
【００２０】
以下、本発明を具現化した実施例について図面を参照して説明する。
【実施例】
【００２１】
（実施例１）
図１に示すロボット６は、頭部１８と、体幹１２と、右脚２０と、左脚２２を備えている。ロボット６は、右脚２０が接地している間に左脚２２を遊脚として軌道７のように移動させ、左脚２２が接地すると今度は右脚２０を遊脚として軌道８のように移動させ、以下同様に、左脚２２を遊脚として軌道９のように移動させ、次には右脚２０を遊脚として軌道１０のように移動させて歩行を続ける。
【００２２】
ロボット６の歩行を制御するために、ロボット６の体幹１２にコントローラ１４が搭載されている。コントローラ１４は、ＣＰＵ、ＲＯＭ、ＲＡＭ、ハードディスク等を有する。コントローラ１４のハードウェア構成は汎用のコンピュータと同じであり、説明は省略する。コントローラ１４は歩容データを記憶しており、それに基づいてロボット６の関節群を制御する。
【００２３】
ロボット６が歩行を続けるためには、足先の運動を記述する足先歩容データと、体幹１２の運動を記述する体幹歩容データを備える歩容データが必要とされる。
足先歩容データは予めオペレータによって指定される。体幹歩容データはロボットの力学モデルを用いて計算されるＺＭＰ軌道が目標ＺＭＰ軌道に一致する関係に設定される。
【００２４】
本実施例では、図１に示すように、ロボット６の外部の床に固定された座標系を（x, y, z）とし、ロボット６の支持脚の基準点に固定された座標系を（x', y', z'）とする。座標系（x', y', z'）は、ロボット６が右脚２０を支持脚としているときは基準点 R に固定されており、ロボット６が左脚２２を支持脚としているときは、基準点 L に固定されている。座標系（x', y', z'）では、足平に沿って踵から爪先へ伸びる方向をx' 軸とし、足平に沿って x' 軸と直交する方向を y' 軸とし、足平に垂直な方向を z' 軸とする。通常は、x' 軸はロボットが歩行する方向に相当し、y' 軸はロボットの体側方向に相当し、z' 軸はロボットの高さ方向に相当する。
【００２５】
足先歩容データは、ロボット６の足先の位置と姿勢の経時的変化を表す。例えば右脚２０に関して、足先歩容データは、足先基準点 R の位置 xR, yR, zR の経時的変化と、基準点 R から足平の法線方向に伸びるベクトル Rr のオイラー角 αR, βR, γR の経時的変化を備えている。左脚２２に関しても同様に、足先歩容データは、足先基準点 L の位置 xL, yL, zL の経時的変化と、基準点 L から足平の法線方向に伸びるベクトル Lr のオイラー角 αL, βL, γL の経時的変化を備えている。
体幹歩容データは、体幹の位置と姿勢の経時的変化を表す。体幹歩容データは、体幹基準点 W の位置 xW, yW, zW の経時的変化と、基準点 W から体幹に沿って頭部に向けて伸びるベクトル Wr のオイラー角 αW, βW, γW の経時的変化を備えている。
【００２６】
ロボット６の頭部１８には、頭部位置検出装置２２０と、頭部方向検出装置２２２が搭載されている。頭部位置検出装置２２０は、ロボット６の外部に固定された座標系から見た頭部１８の基準点 H の位置 xh, yh, zh を検出して、コントローラ１４に送信する。頭部方向検出装置２２２は、ロボット６の外部に固定された座標系から見た頭部１８の方向を検出して、コントローラ１４に送信する。頭部１８の方向は、基準点 H から頭部１８の前方に向けて伸びるベクトル Hr のオイラー角 αh, βh, γh で表現される。
【００２７】
図２は、コントローラ１４の機能をブロック化して示す図である。図２に示す要素のうち、ロボットの機械系２１６、エンコーダ２１８、頭部位置検出装置２２０、頭部方向検出装置２２２を除いた部分がコントローラ１４の構成要素である。コントローラ１４は、全体が物理的に１つの装置に含まれていてもよいし、物理的に分離された装置ごとに分けて収容されていてもよい。
【００２８】
歩容データ記憶部２１０には、オペレータによって指定された足先歩容データが記憶されている。
足先歩容データは、加算器２３０によって補正され、関節角群計算部２１２へ入力される。補正された足先歩容データは、体幹歩容計算部２３２において、体幹歩容データの計算にも用いられる。
また歩容データ記憶部２１０には、歩容データが記述する足平配置経路として、支持脚の足平の接地位置 X'k, Y'k（k = 1, 2,・・・）と接地方向Γ'k（k = 1, 2,・・・）が、一歩ごとに記憶されている。支持脚の足平の接地位置 X'k, Y'k（k = 1, 2,・・・）は、足先歩容データに従って関節群を駆動したときの一歩ごとの支持脚の足平の接地位置を示しており、支持脚が接地した状態における足先の基準点の位置をロボット６の外部に固定された座標系で表現したものである。また支持脚の足平の接地方向Γ'k（k = 1, 2,・・・）は、足先歩容データに従って関節群を駆動したときの支持脚の足平の接地方向を示しており、支持脚が接地した状態において足先の基準点に固定された座標系（x', y', z'）の x' 軸が、外部に固定された座標系（x, y, z）の x 軸と成す角度を表現したものである。支持脚の足平の接地位置 X'k, Y'k（k = 1, 2,・・・）および接地方向Γ'k（k = 1, 2,・・・）は、着地配置修正部２３４や足平配置比較部２３８へ入力される。
さらに歩容データ記憶部２１０には、支持脚の一歩ごとの相対的な接地位置 ΔX'k, ΔY'k（k = 1, 2,・・・）と相対的な接地方向ΔΓ'k（k = 1, 2,・・・）が、一歩ごとに記憶されている。支持脚の相対的な接地位置ΔX'k, ΔY'k（k = 1, 2,・・・）は、支持脚の接地位置を一歩前の支持脚の接地位置から見た相対的な位置を示している。支持脚の相対的な接地方向ΔΓ'k（k = 1, 2,・・・）は、支持脚の接地方向を一歩前の支持脚の接地方向から見た相対的な方向である。支持脚の相対的な接地位置ΔX'k, ΔY'k（k = 1, 2,・・・）および相対的な接地方向ΔΓ'k（k = 1, 2,・・・）は、着地配置計算部２２６へ入力される。
【００２９】
体幹歩容生成部２３２は、加算器２３０から入力される補正された足先歩容データに基づいて、体幹歩容データを生成する。体幹歩容生成部２３２は、入力される足先歩容データに基づいて、支持脚の足平内に維持される目標ＺＭＰを特定し、実現されるＺＭＰが目標ＺＭＰと一致するような体幹の位置と姿勢の経時的変化を特定する。
生成された体幹歩容データは、加算器２３０で補正された足先歩容データとともに、関節角群計算部２１２へ入力される。
【００３０】
関節角群計算部２１２は、入力された足先歩容データと体幹歩容データに基づいて、いわゆる逆キネマティクスを解くことでロボット６の各関節角θ'i(t)（i = 1, 2,・・・, n）を計算する。計算された関節角群データは、アクチュエータ制御部２１４に入力される。
【００３１】
アクチュエータ制御部２１４は、ロボット６の関節群を回転させるアクチュエータ群を制御する。アクチュエータ群はロボットの機械系２１６に存在している。アクチュエータ群を制御すると、ロボット６の関節群を計算された関節角に調整できる。アクチュエータ制御部２１４がアクチュエータ群を駆動すると、ロボット６は歩容データに従って歩行する。
【００３２】
ロボット６の各関節には、エンコーダ２１８が設けられている。エンコーダ２１８は、ロボット６の各関節角θi(t)（i = 1, 2,・・・, n）を計測し、計測された関節角を支持脚足平配置計算部２２４と、重心速度計算部２３６へ出力する。
【００３３】
頭部位置検出部２２０は、ロボット６の外部に固定された座標系における頭部１８の位置 xh(t), yh(t), zh(t) を計測し、計測された頭部１８の位置を支持脚足平配置計算部２２４と、重心速度計算部２３６へ出力する。このような位置計測装置としては、例えばＧＰＳ受信機を用いることができる。また超音波を用いて距離を計測する装置であってもよいし、レーザー光を用いて距離を計測する装置であってもよいし、電磁波を用いて距離を計測する装置であってもよい。あるいはカメラ等を用いて外部の状況を撮影して、撮影されたデータに基づいて頭部の位置を特定してもよい。
頭部位置検出装置２２０は、頭部１８の頭頂部に搭載されている。これによって、ロボット６の機体によって位置計測に使用する信号が遮蔽されることを防止することができる。ロボット６がどのような姿勢をとっても、安定して精度よく頭部１８の位置を計測することができる。
上記のほかにも、頭部位置検出装置２２０は加速度センサと積分器の組合せであってもよい。この場合、頭部位置検出装置２２０は加速度センサで加速度を計測し、計測された加速度を積分して速度を計測し、計測された速度を積分して位置を計測する。
上記のほかにも、頭部位置検出装置２２０は、従来から知られている種々の位置計測技術によって、その位置を計測することができる。
【００３４】
頭部方向検出装置２２２は、ロボット６の外部に固定された座標系における、頭部１８の方向αh(t), βh(t), γh(t) を計測し、計測された頭部１８の方向 αh(t), βh(t), γh(t) を支持脚足平配置計算部２２４と、重心速度計測部２３６へ出力する。
上記した頭部方向検出装置２２２は、２つの位置検出装置の組み合わせであってもよい。この場合、頭部方向検出装置２２２は、一方の位置検出装置で計測される位置から、他方の位置検出装置で計測される位置までの位置偏差ベクトルを計算し、計算された位置偏差ベクトルと、各位置検出装置の頭部１８における取り付け位置から、頭部１８の方向を計算することができる。
上記のほかにも、頭部方向検出装置２２２は、ジャイロセンサと積分器の組合せであってもよい。この場合、頭部方向検出装置２２２は、ジャイロセンサで角速度を計測し、計測された角速度を積分して方向角を計測する。また上記した頭部方向検出装置２２２としては、例えば地磁気センサを用いることもできる。
上記のほかにも、頭部方向検出装置２２２は、従来から知られている種々の方向計測技術によって、その方向を計測することができる。
【００３５】
支持脚足平配置計算部２２４は、エンコーダ２１８、頭部位置検出装置２２０、頭部方向検出装置２２２からの入力に基づいて、支持脚の足平が接地している位置 Xk(t), Yk(t) と、接地している方向Γk(t) を算出する。
支持脚足平配置計算部２２４は、エンコーダ２１８から入力される各関節の関節角θi(t)（i = 1, 2,・・・,n）に基づいて、頭部１８の基準点 H から見た、支持脚の基準点 L または R の相対的な位置と、頭部１８のベクトル Hr に対する、支持脚の足平の相対的な方向を算出する。そして、算出された相対的な位置および方向と、頭部位置検出装置２２０から入力される位置 xh(t), yh(t), zh(t) と、頭部方向検出装置２２２から入力される方向 αh(t), βh(t), γh(t) から、支持脚の足平の接地位置 Xk(t), Yk(t) および接地方向Γk(t) を計算する。
【００３６】
エンコーダ２１８、頭部位置検出装置２２０、頭部方向検出装置２２２による計測が理想的に行われていれば、支持脚が切替わるまでの間、支持脚の足平の接地位置 Xk(t), Yk(t) や接地方向Γk(t) は変化しないはずである。しかしながら、計測誤差に起因して、上記で計算される支持脚の足平の接地位置 Xk(t), Yk(t) や接地方向Γk(t) が時間とともに変動することがある。本実施例のロボット６では、支持脚が切り替わらない期間において、上記で計算される支持脚の足平の接地位置 Xk(t), Yk(t) および接地方向Γk(t) のそれぞれの時間平均を算出し、支持脚の足平の接地位置 Xk, Ykおよび接地方向 Γk を特定する。
支持脚足平配置計算部２２４は、逐次支持脚の足平の接地位置 Xk(t), Yk(t) および接地方向Γk(t) を計算しながら、支持脚の切替わりを監視している。支持脚足平配置計算部２２４は、支持脚が切替わった時点で、それまでに計算されている足平の接地位置 Xk(t), Yk(t) および接地方向Γk(t) をそれぞれ時間に関して積分して平均値を算出し、算出された平均値を特定された支持脚の足平の接地位置 Xk, Yk および接地方向 Γk として、足平配置比較部２３８および着地配置計算部２２６へ出力する。
【００３７】
足平配置比較部２３８は、支持脚足平配置計算部２２４から入力される k 歩目の支持脚の足平の接地位置 Xk, Yk および接地方向 Γk と、歩容データ記憶部２１０から入力される k 歩目の支持脚の足平の目標接地位置X'k, Y'k および目標接地方向Γ'k とを比較し、歩容データの補正が必要か否かを判断する。歩容データ記憶部２１０から入力される k 歩目の支持脚の足平の目標接地位置X'k, Y'k および目標接地方向Γ'k は、ロボット６が k 歩目で目標とする足平配置であって、歩容データが記述する足平配置経路中の支持脚の足平配置を計測した時の支持脚の足平配置に相当する。歩容データの補正が必要と判断されると、着地配置計算部２２６、着地配置修正部２３４、補正量計算部２２８、加算器２３０によって足先歩容データの補正がなされる。また足平配置比較部２３８は、k 歩目の支持脚の足平の接地位置 Xk, Yk および接地方向 Γk と、k 歩目の支持脚の足平の目標接地位置X'k, Y'k および目標接地方向Γ'k との偏差を計算し、着地配置計算部２２６へ出力する。
【００３８】
重心速度計算部２３６は、エンコーダ２１８、頭部位置検出装置２２０、頭部方向検出装置２２２からの出力に基づいて、ロボット６の重心速度 V(t) を計算する。重心速度の計算は、例えばエンコーダ２１８から入力される各関節の関節角θi(t)（i = 1, 2,・・・,n）に基づいて、重心から見た頭部１８の基準点 H の相対的な位置と、重心から見た頭部１８のベクトル Hr の相対的な方向を算出する。そして、算出された相対的な位置および方向と、頭部位置検出装置２２０から入力される頭部１８の基準点 H の位置 xh(t), yh(t), zh(t) と、頭部方向検出装置２２２から入力される頭部１８のベクトル Hr の方向 αh(t), βh(t), γh(t) から、重心の位置を算出し、その時間変化から重心速度 V(t) を計算する。計算された重心速度V(t) は、着地配置計算部２２６へ出力される。
【００３９】
着地配置計算部２２６は、歩容データが記述する足平配置経路へ復帰するまでの歩数 m を設定する。また着地配置計算部２２６は、計測された支持脚の足平配置 Xk, Yk, Γk と、k+1 歩目以降に予定されている相対的な足平配置経路ΔXk+1, ΔYk+1, ΔΓk+1, ΔXk+2, ΔYk+2, ΔΓk+2,・・・に基づいて、k+1 歩目から k+m 歩目までの予定されている足平配置経路 X*k+1, Y*k+1, Γ*k+1, ・・・・, X*k+m, Y*k+m, Γ*k+m を計算する。k+1 歩目から k+m 歩目までの予定されている足平配置経路 X*k+1, Y*k+1, Γ*k+1, ・・・・, X*k+m, Y*k+m, Γ*k+m は、計測された足平配置から歩容データに基づいて歩行するときの決定された歩数までの足平配置経路に相当する。計算された予定足平配置X*k+1, Y*k+1, Γ*k+1, ・・・・, X*k+m, Y*k+m, Γ*k+m は、着地配置修正部２３４へ出力される。
上記した歩容データが記述する足平配置経路へ復帰するまでの歩数は、重心速度計算部２３６から入力されるロボット６の重心の速度 V(t) と、足平配置比較部２３８から入力される偏差に応じて設定される。
【００４０】
着地配置修正部２３４は、着地配置計算部２２６から入力される k+1 歩目以降に脚リンクが接地する予定の足平配置 X*k+1, Y*k+1, Γ*k+1, ・・・, X*k+m, Y*k+m, Γ*k+m と、歩容データ記憶部２１０から入力される k+1 歩目以降の目標足平配置 X'k+1, Y'k+1, Γ'k+1, ・・・, X'k+m, Y'k+m, Γ'k+mに基づいて、足平配置経路の補正量ΔX+k+2, ΔY+k+2, ΔΓ+k+2, ・・・, ΔX+k+m, ΔY+k+m, ΔΓ+k+m を計算する。k 歩目の支持脚の足平配置を特定した時点で、支持脚は k+1 歩目に切替わっているため、k+1 歩目の足平配置については補正がされないことに注意されたい。足平配置経路の補正量ΔX+k+2, ΔY+k+2, ΔΓ+k+2, ・・・, ΔX+k+m, ΔY+k+m, ΔΓ+k+m は、決定された歩数において計算された足平配置経路が歩容データが記述する足平配置経路へ復帰する補正量に相当する。
【００４１】
以下では着地配置修正部２３４による足平配置経路の補正量ΔX+k+2, ΔY+k+2, ΔΓ+k+2, ・・・の算出について説明する。着地配置修正部２３４は、評価関数 J を用いて、最適な足平配置経路を実現するための足平配置の補正量を計算する。
ここで用いる評価関数 J は、以下で与えられる。
【００４２】
【数１】
2007007803.tif 000003
【００４３】
ここで、JΓ, JX, JY は評価関数であり、w1, w2, w3は、各評価関数に重み付けをする重み関数である。
JΓ は歩容データが記述する足平の接地方向と実現される足平の接地方向の偏差に関する評価関数である。JΓ は次式で規定され、JΓ を最小とすることは足平の接地方向の偏差の時間変化率の積算値を最小とすることを意味する。
【００４４】
【数２】
2007007803.tif 000004
【００４５】
JX, JYはそれぞれ、歩容データが記述する足平の接地位置と実現される足平の接地位置の X 方向および Y 方向の偏差に関する評価関数である。JX, JY は次式で規定され、JX, JY を最小とすることは足平の接地位置の X 方向および Y 方向の偏差の二乗の積算値を最小とすることを意味する。
【００４６】
【数３】
2007007803.tif 000005
【００４７】
重み関数 w1, w2, w3 の値は、上記した接地方向の偏差についての条件や、接地位置の偏差についての条件について、互いの優先順位を規定するものであり、予め任意に与えておくことができる。w1, w2, w3 は、いずれか１を所定値として、他を０としてもよい。
【００４８】
着地配置修正部２３４は、以下に述べる制約条件を満足しながら上記した評価関数 J を最小とする足平配置経路を計算する。
本実施例のロボット６の一歩ごとの足平配置は、一歩前の足平配置に基づいて特定される範囲内で足平の位置と方向を設定しなければならない。上記した範囲は、脚リンクを振り出す際の関節の可動範囲や、脚リンク同士の干渉を考慮に入れて規定されている。
また k+1 歩目の足平配置については補正量が０であり、歩容データが記述する足平配置経路へ復帰するまでの歩数として設定された k+m 歩目での足平配置は目標足平配置と一致しなければならない。
上記した制約条件のもとで評価関数 J を最小化する歩行経路の設定は、従来から知られている種々の最適化手法を用いて行うことができる。本明細書では詳細についての説明を省略する。
なお、上記では評価関数 J を最小とする足平配置経路を設定する例を説明したが、評価関数を用いる代わりに、例えば足平の接地方向の偏差の上限値を予め設定しておき、足平の接地方向の偏差が常に上限値を越えないように足平配置経路を計算してもよい。
【００４９】
補正量計算部２２８は、歩容データ記憶部２１０から加算器２３０へ出力される足先歩容データ xk+2(t), yk+2(t), zk+2(t), αk+2(t), βk+2(t), γk+2(t) に対応する補正量 Δxk+2(t), Δyk+2(t), Δzk+2(t), Δαk+2(t), Δβk+2(t), Δγk+2(t) を計算する。補正量計算部２２８は、着地配置修正部２３４から入力される足平配置の補正量ΔX+k+2, ΔY+k+2, ΔΓ+k+2,・・・に応じた足先歩容データの補正量Δxk+2(t), Δyk+2(t), Δzk+2(t), Δαk+2(t), Δβk+2(t), Δγk+2(t),・・・を計算する。足先歩容データの補正量Δxk+2(t), Δyk+2(t), Δzk+2(t), Δαk+2(t), Δβk+2(t), Δγk+2(t),・・・は、遊脚の足先の位置・姿勢を記述する足先歩容データに対する補正量であり、一歩ごとに遊脚となる脚リンクの足先の位置と姿勢を、経時的に表現している。
上記した足先歩容データの補正量Δxk+2(t), Δyk+2(t), Δzk+2(t), Δαk+2(t), Δβk+2(t), Δγk+2(t),・・・は、足平配置の補正量 ΔX+k+2, ΔY+k+2, ΔΓ+k+2 に、時間とともに変化するゲインを乗じて計算される。このゲインは、支持脚が切替わった時点では０であり、徐々に増加し、それまで支持脚であった脚リンクが次に接地する時点で最大となるように、規定されている。足平の接地位置の補正量と接地方向の補正量に応じた、足先歩容データの補正の様子を図５に示す。このように足先歩容データを補正することによって、ロボットの動作を急激に変化させることなく、それまで支持脚であった脚リンクが浮遊して遊脚となり次に接地するまでの動作を、補正後の足平配置へ接地するように補正することが可能である。その脚リンクが接地するときの足平配置を、歩容データが記述する足平配置へ近づけることができる。
補正量計算部２２８は、歩容データが記述する足平配置経路へ復帰するまでの一歩ごとの足先歩容データの補正量を計算しており、計算された足先歩容データの補正量のうち、加算器２３０へ出力される足先歩容データに対応した歩数（図２では k+2 歩目）での補正量を、加算器２３０へ出力する。
補正量計算部２２８から出力される補正量Δxk+2(t), Δyk+2(t), Δzk+2(t), Δαk+2(t), Δβk+2(t), Δγk+2(t) は、加算器２３０によって足先歩容データ xk+2(t), yk+2(t), zk+2(t), αk+2(t), βk+2(t), γk+2(t) に加算される。
【００５０】
ロボット６は、歩容データ記憶部２１０から足先歩容データを読出し、必要であればその足先歩容データを補正し、体幹歩容データを計算し、関節角群を計算し、アクチュエータを制御する。アクチュエータの駆動によって、各関節が回転し、ロボット６は歩行を実現する。
【００５１】
ロボット６が動作を実施している間、コントローラ１４は図３のフローチャートに示す処理を並行して実施している。以下では、図３に示す処理について説明する。
【００５２】
ステップＳ３０２では、現在の歩数 k を特定する。歩数 k は現在接地している支持脚が、ロボット６が歩行を開始してから何歩目に該当するかを示す数である。
ステップＳ３０４では、ロボット６の外部に固定された座標系から見た頭部１８の位置 xh(t), yh(t), zh(t) を計測する。頭部１８の位置 xh(t), yh(t), zh(t) は、頭部１８に搭載された頭部位置検出装置２２０によって計測される。
ステップＳ３０６では、ロボット６の外部に固定された座標系から見た頭部１８の方向 αh(t), βh(t), γh(t) を計測する。頭部１８の方向 αh(t), βh(t), γh(t) は、頭部１８に搭載された頭部方向検出装置２２２によって計測される。
ステップＳ３０８では、ロボット６の関節群の関節角θi（ i = 1, 2,・・・,n ）を計測する。関節群の関節角θi（ i = 1, 2,・・・,n ）は、エンコーダ２１８によって計測される。
ステップＳ３１０では、その時点での支持脚であるk 歩目の支持脚の足平配置 Xk(t), Yk(t), Γk(t) を計算する。現在接地している支持脚の足平配置 Xk(t), Yk(t), Γk(t) は、ステップＳ３０４で計測された頭部１８の位置 xh(t), yh(t), zh(t) と、ステップＳ３０６で計測された頭部１８の方向 αh(t), βh(t), γh(t) と、ステップＳ３０８で計測されたロボットの関節群の関節角θi（ i = 1, 2,・・・,n ）に基づいて、ヤコビ行列を用いて算出される。
ステップＳ３１２では、その時点におけるロボット６の重心速度 V(t) を計算する。重心速度 V(t) は、ステップＳ３０４で計測された頭部１８の位置 xh(t), yh(t), zh(t) と、ステップＳ３０６で計測された頭部１８の方向 αh(t), βh(t), γh(t) と、ステップＳ３０８で計測されたロボットの関節群の関節角θi（ i = 1, 2,・・・,n ）に基づいて、重心ヤコビ行列を用いて算出される。
ステップＳ３１４では、支持脚が切替わったか否かを判断する。支持脚が切替わった場合（ステップＳ３１４でＹＥＳの場合）、処理はステップＳ３１６へ進む。支持脚がまだ切替わっていない場合（ステップＳ３１４でＮＯの場合）、処理はステップＳ３０４へ進み、ステップＳ３０４からステップＳ３１４までの処理を繰返し実施する。
ステップＳ３１６では、k 歩目の支持脚の足平配置 Xk(t), Yk(t), Γk(t) の平均値 Xk, Yk, Γk を計算する。支持脚の足平配置の平均値 Xk, Yk, Γk は、ステップＳ３１０で時々刻々計算された k 歩目の支持脚の足平配置 Xk(t), Yk(t), Γk(t) の時間平均を算出することで取得する。上記の平均値算出は、k 歩目の支持脚に切替わった時点から、k+1 歩目の支持脚に切替わった時点までの期間について行う。ステップＳ３１６の処理を実施する時点で、k+1 歩目の支持脚は接地しており、ステップＳ３１６の処理によって、先ほどまで接地していたk 歩目の支持脚の足平配置 Xk, Yk, Γk が特定される。
【００５３】
図４は本実施例のロボット６が歩行するときの足平の配置の推移を示している。歩容データが記述する足平配置経路４０２、４０４、４０６、４０８、４１０、４１２、４１４に対して、ロボット６は k−1 歩目で左脚２２を足平配置４１６へ接地し、k 歩目で右脚２０を足平配置４１８へ接地している。ロボット６が左脚２２を浮遊させて遊脚とし、k+1 歩目の足平配置４２０へ向けて左脚２２を振り出している間、コントローラ１４はステップＳ３０２からステップＳ３１４までの処理を繰返し実施し、k 歩目で支持脚である右脚２０の足平配置４１８の接地位置 Xk(t), Yk(t) と接地方向Γk(t) を繰返し計測する。遊脚である左脚２２が k+1 歩目の足平配置４２０へ接地すると、支持脚が右脚２０から左脚２２へ切替わり、ステップＳ３１６でk 歩目の支持脚の足平配置４１８の接地位置 Xk, Yk と接地方向 Γk が特定される。
【００５４】
図３に戻って、ステップＳ３１８では、足平配置比較部２３８が、特定された k 歩目の支持脚の足平配置 Xk, Yk, Γk と、k 歩目の支持脚の目標足平配置 X'k, Y'k, Γ'k の偏差δXk, δYk, δΓk を計算する。
図４に示す例では、特定された k 歩目の支持脚の足平配置４１８（Xk, Yk, Γk）と、対応する k 歩目の支持脚の目標足平配置４０４（X'k, Y'k, Γ'k）との偏差（δXk, δYk, δΓk）が計算される。
【００５５】
図３に戻って、ステップＳ３２０では、足平配置比較部２３８が、計算された偏差 δXk, δYk, δΓk をそれぞれの許容範囲を示すしきい値と比較する。計算された偏差 δXk, δYk, δΓk のうちいずれか１つでもしきい値を超えている場合（ステップＳ３２０でＹＥＳの場合）、その後の動作パターンを補正するために、処理はステップＳ３２２へ進む。計算された偏差δXk, δYk, δΓk の全てがしきい値以下である場合（ステップＳ３２０でＮＯの場合）、その後の動作パターンを補正することなく、処理はステップＳ３２８へ進む。
【００５６】
ステップＳ３２２では、着地配置計算部２３８が、現在の足平配置から歩容データが記述する足平配置経路へ復帰するまでの歩数 m を設定する。
復帰までの歩数 m は、足平配置の偏差 δXk, δYk, δΓk と、ロボット６の速度 V(t) に応じて設定される。
足平配置の偏差 δXk, δYk, δΓk が大きい場合には、復帰までの歩数 m を多く設定する。足平配置の偏差 δXk, δYk, δΓk が小さい場合には、復帰までの歩数 m を少なく設定する。このように足平配置の偏差 δXk, δYk, δΓk に応じて復帰までの歩数 m を設定することによって、ロボット６は無理な体勢をとることなく、自然な動作で歩容データが記述する足平配置経路へ復帰することができる。
速度 V(t) が速い場合には、復帰までの歩数 m を多く設定する。速度 V(t) が遅い場合には、復帰までの歩数 m を少なく設定する。このように速度V(t) に応じて復帰するまでの歩数 m を設定することによって、ロボット６がバランスを崩しやすい高速移動時の動作変更を抑制することが可能であり、ロボット６の歩行の安定性を確保することができる。またロボット６が安定して歩行することができる低速移動時には、速やかに歩容データが記述する足平配置経路へ復帰することが可能であり、歩容データが記述する足平配置経路への追従性が向上する。
図４に示す例では、計測された k 歩目の支持脚の足平配置４１８から、歩容データが記述する足平配置経路へ復帰するまでの歩数 m を５歩に設定して、k+5 歩目で歩容データが記述する足平配置４１４に復帰させる例を示している。
【００５７】
ステップＳ３２４では、ステップＳ３２２で設定された歩数で歩容データが記述する足平配置経路へ復帰することができる、最適足平配置経路を計算する。
まず着地配置計算部２２６は、k+1 歩目から k+5 歩目までの予定されている足平配置経路 X*k+1, Y*k+1, Γ*k+1, ・・・・, X*k+5, Y*k+5, Γ*k+5 を計算する。着地配置計算部２２６は、支持脚足平配置計算部２２４から入力される k 歩目の支持脚の足平配置Xk, Yk, Γk と、歩容データ記憶部２１９から入力される k+1 歩目以降に予定されている相対的な足平配置経路ΔXk+1, ΔYk+1, ΔΓk+1, ・・・, ΔXk+5, ΔYk+5, ΔΓk+5 に基づいて、k+5 歩目までの予定されている足平配置経路 X*k+1, Y*k+1, Γ*k+1, ・・・・, X*k+5, Y*k+5, Γ*k+5 を計算する。計算された予定足平配置経路 X*k+1, Y*k+1, Γ*k+1, ・・・・, X*k+5, Y*k+5, Γ*k+5 は、着地配置修正部２３４へ出力される。
【００５８】
次に着地配置修正部２３４は、k+2 歩目から k+5 歩目までの足平配置の補正量ΔX+k+2, ΔY+k+2, ΔΓ+k+2, ・・・, ΔX+k+5, ΔY+k+5, ΔΓ+k+5を計算する。ここで、ステップＳ３２４の処理を実行する時点で k+1 歩目の支持脚は既に接地しており、k+1 歩目の足平配置 X*k+1, Y*k+1, Γ*k+1 は補正されないことに注意されたい。
上記の足平配置の補正量 Δ+Xk+2, ΔY+k+2, ΔΓ+k+2, ・・・, ΔX+k+5, ΔY+k+5, ΔΓ+k+5 は、制約条件つきの最適化問題の解として計算される。
ここで用いられる制約条件は、一歩ごとの足平配置は一歩前の足平配置から特定される範囲内でのみ接地可能であることと、k+1 歩目の足平配置は補正されないことと、k+5 歩目で歩容データが記述する足平配置に一致することである。
上述した制約条件のもとで、既に述べた評価関数J を最小とするように、足平配置の補正量 ΔX+k+2, ΔY+k+2, ΔΓ+k+2, ・・・, ΔX+k+5, ΔY+k+5, ΔΓ+k+5 が計算される。最適な足平配置の補正量の計算は、従来から知られている種々の最適化手法を用いて計算することが可能であり、本明細書では詳細な説明を省略する。
図４に示す例では、k+2 歩目の予定足平配置４２２（X*k+2, Y*k+2, Γ*k+2）、k+3 歩目の予定足平配置４２４（X*k+3, Y*k+3, Γ*k+3）、k+4 歩目の予定足平配置４２６（X*k+4, Y*k+4, Γ*k+4）、k+5 歩目の予定足平配置４２８（X*k+5, Y*k+5, Γ*k+5）に対して、それぞれ補正量が計算される。このような補正の結果、k+2 歩目は補正後の予定足平配置４３０へ、k+3 歩目は補正後の予定足平配置４３２へ、k+4 歩目は補正後の予定足平配置４３４へ接地するように補正され、k+5 歩目は歩容データが記述する足平配置４１４と一致する補正後の予定足平配置へ接地するように補正される。
計算された足平配置の補正量 ΔX+k+2, ΔY+k+2, ΔΓ+k+2, ・・・, ΔX+k+5, ΔY+k+5, ΔΓ+k+5 は、補正量計算部２２８へ出力される。
【００５９】
図３に戻って、ステップＳ３２６では、補正量計算部２２８が、足先歩容データの補正量を計算する。補正量計算部２２８は、着地配置修正部２３４から入力される足平配置の補正量ΔX+k+2, ΔY+k+2, ΔΓ+k+2, ・・・, ΔX+k+5, ΔY+k+5, ΔΓ+k+5 に基づいて、足先歩容データの補正量 Δxk+2(t), Δyk+2(t), Δzk+2(t), Δαk+2(t), Δβk+2(t), Δγk+2(t) ・・・・を計算する。上記の足先歩容データの補正量は、一歩ごとの足平配置の補正量に基づいて、一歩ごとに計算される。
例えば k+2 歩目に接地する脚リンクの足先歩容データの補正量 Δxk+2(t), Δyk+2(t), Δzk+2(t), Δαk+2(t), Δβk+2(t), Δγk+2(t) は、k+2 歩目の足平の接地位置の補正量 ΔX+k+2, ΔY+k+2 と接地方向の補正量 ΔΓ+k+2 に、時間とともに変化するゲインを乗じて算出される。図５に示すように、このゲインは k 歩目で支持脚だった脚リンクが浮遊して遊脚となる時点から、次の足平配置へ着地する時点までの期間で定義され、当初は０であり、時間とともに増大するように設定されている。
補正量計算部２２８は、上記した足先歩容データの補正量を一歩ごとに計算して記憶している。補正量計算部２２８は、ロボット６の支持脚の切り替わりを監視しており、支持脚が切替わるたびに対応する歩数における足先歩容データの補正量を、加算器２３０へ出力する。
図２では、k+2歩目に接地する脚リンクの足先歩容データの補正量 Δxk+2(t), Δyk+2(t), Δzk+2(t), Δαk+2(t), Δβk+2(t), Δγk+2(t) が、加算器２３０によって足先歩容データ xk+2(t), yk+2(t), zk+2(t), αk+2(t), βk+2(t), γk+2(t)へ加算される場合を示している。補正された足先歩容データに基づいて体幹歩容データが計算され、関節角群が計算され、アクチュエータが駆動されて、ロボット６は歩行を継続する。
その後処理はステップＳ３２８へ移行し、ロボット６が所定の歩数だけ歩行を進めるまで待機する。ロボット６の支持脚が所定回数だけ切り替わり、ロボット６が所定の歩数だけ歩行を進めた後に、処理はステップＳ３０２へ移行し、上述した一連の処理を再び繰り返す。
【００６０】
上記した脚式ロボット６は、実際の支持脚の足平配置を計測し、計測された足平配置と歩容データが記述する足平配置経路の偏差に基づいて歩容データを補正しながら歩行する。上記した脚式ロボット６は、計測された足平配置と歩容データが記述する足平配置経路の偏差に基づいて、歩容データが記述する足平配置経路へ復帰するまでの歩数を決定しており、無理な体勢をとることなく歩容データが記述する足平配置経路に自然な動作で復帰することができる。
【００６１】
（第２実施例）
図面を参照して、本発明に係る他の１つのロボット６１０を説明する。図６は、ロボット６１０が進行する様子を平面的に見た図である。ロボット６１０は、会場６０２の中を進行しながら太鼓６６０を演奏する（太鼓６６０を叩く）。会場６０２には、指揮台７００が設置されている。指揮者７０２は、指揮台７００の上で指揮棒７３０を振って指揮をする。ロボット６１０は指揮者７０２が指揮棒７３０を振る様子を視認しながら、演奏動作を行う。図６では、指揮者７０２を極めて簡略化して示している。
ロボット６１０は、ヒトの頭（顔）を模してつくられた頭部６４０と、ヒトの胴体を模してつくられた胴体部６７０と、車輪６２２ａ，６２２ｂ等を有しており、太鼓６６０を保持している。ロボット６１０の詳しい構成は後で説明する。このロボット６１０は、設定された略円弧状の移動ルート（位置Ａ→位置Ｂ→位置Ｃ→…）を進行しながら太鼓６６０を演奏する。
【００６２】
まず、ロボット６１０の構成について詳しく説明する。図７に、ロボット６１０の正面図を示している。ロボット６１０は、ヒトを模してつくられたヒューマノイドロボットといえる。
ロボット６１０は、車輪６２２ａ，６２２ｂを回転させることによって自身を進行させる。このロボット６１０は、ヒトが行進しながら太鼓を演奏する（叩く）ように、移動しながら太鼓６６０を演奏する。
【００６３】
胴体部６７０は略直方体形状を有している。胴体部６７０には、ロボット６１０の動作を統括的に制御する制御部６９０と、頭部６４０を回転させるモータ６５２と、ロボット６１０の位置を計測する位置センサ７１２と、胴体部６７０が向いている方向を計測する方向センサ７１４等が収納されている。
胴体部６７０には、アーム（腕）６３０ａ，６３０ｂが接続されている。以下では、アーム６３０ａを右アームといい、アーム６３０ｂを左アームという。右アーム６３０ａは、上腕部６３２ａと下腕部６３４ａとを有している。上腕部６３２ａの一端が胴体部６７０に揺動自在に取り付けられている。上腕部６３２ａの他端には、関節６３８ａによって下腕部６３４ａが連結されている。下腕部６３４ａは、関節６３８ａを支点として揺動可能である。この関節６３８ａはヒトの肘関節に相当する。下腕部６３４ａの一端には、太鼓６６０を叩く撥６３６ａが固定されている。上腕部６３２ａの内部には、下腕部６３４ａを揺動させるアクチュエータ６３５ａ（例えばソレノイドやモータ）が設けられている。このアクチュエータ６３５ａは、制御部６９０から出力される制御信号に基づいて駆動される。左アーム６３０ｂは、右アーム６３０ａと同様の構成をしている。即ち、左アーム６３０ｂは、上腕部６３２ｂと下腕部６３４ｂを有する。下腕部６３４ｂは、肘関節６３８ｂを支点として揺動可能である。下腕部６３４ｂの一端には撥６３６ｂが固定されている。また、上腕部６３２ｂ内には、下腕部６３４ｂを揺動させるアクチュエータ６３５ｂが設けられている。
位置センサ７１２は、胴体部６７０の中心近傍に固定されている。位置センサ７１２は、ＤＧＰＳ受信機（図示されない）を備えており、会場６０２の内部におけるロボット６１０の位置を、図６に示す座標系（X, Y）で出力する。位置センサ７１２は制御部６９０に接続されており、計測された位置を制御部６９０へ出力する。
方向センサ７１４は、胴体部６７０の中心近傍に固定されている。方向センサ７１４は、地磁気の磁力線の方向を測定し、胴体部６７０が向いている方向を、会場６０２の基準となる直線（例えば図６に示す座標系のX 軸）からの傾き角θで出力する。方向センサ７１４は制御部６９０に接続されており、計測された方向を制御部６９０へ出力する。
【００６４】
頭部６４０は、略直方体形状を有している。頭部６４０には、ヒトの目を模してつくられた２つの孔６４０ａ，６４０ｂが設けられている。孔６４０ａが左目に相当し、孔６４０ｂが右目に相当する。孔６４０ａには、連続的に撮影し続けるビデオカメラ６４２のレンズが臨んでいる。
頭部６４０と胴体部６７０の間には首部６５０が設けられている。首部６５０は、略円柱形状を有している。首部６５０は、胴体部６７０に回転可能（回転軸は符号Ｃ１で示している）に支持されている。首部６５０が回転することによって、ヒトが首を振って横を向くように、ロボット６１０の頭部６４０が横を向くことになる。首部６５０を回転させるモータ６５２は、制御部６９０から出力される制御信号に基づいて駆動される。モータ６５２の回転方向によって、頭部６４０が右を向いたり左を向いたりする。ロボット６１０は動作中に、頭部６４０が指揮者７０２の方を向き、ビデオカメラ６４２が常に指揮者７０２を撮影し続けるように、首部６５０を回転する。
【００６５】
胴体部６７０の下端は移動機構６２０に固定されている。移動機構６２０は、車輪６２２ａ、６２２ｂを回転可能に保持している。車輪６２２ａ、６２２ｂは、それぞれがアクチュエータ６２４ａ、６２４ｂに結合されており、互いに異なる回転速度で回転可能である。アクチュエータ６２４ａ、６２４ｂは、制御部６９０からの指示に従って車輪６２２ａ、６２２ｂを回転させる。
また移動機構６２０は、車輪６２２ａ、６２２ｂのそれぞれの回転角度を検出するエンコーダ７１０を備えている。エンコーダ７１０は、所定の時間間隔で車輪６２２ａ、６２２ｂの回転角度を検出して、制御部６９０へ出力する。
【００６６】
図８にロボット６１０の制御部６９０の概略構成を示す。制御部６９０は、動作パターン記憶部８０２と、経路補正部８０４と、動作パターン更新部８０６と、アクチュエータ制御部８０８と、指示認識部８１２と、位置・方向比較部８１４と、経路推定部８１６と、補正量計算部８１８と、速度計算部８２０を備えている。
【００６７】
動作パターン記憶部８０２には、ロボット６１０が目標とする移動経路（動作計画が記述する経路）と、指揮台７００の位置（座標）と、ロボット６１０の動作計画が記憶されている。ロボット６１０の動作計画は、右アーム６３０ａおよび左アーム６３０ｂの上げ下げに関する動作パターンと、ロボット６１０が目標とする移動経路に沿って移動するための車輪６２２ａ、６２２ｂの回転に関する動作パターンと、指揮者７０２を撮影し続けるための首部６５０の回転に関する動作パターンが記憶されている。右アーム６３０ａおよび左アーム６３０ｂの上げ下げに関する動作パターンは、胴体部６７０に対する撥６３６ａ、６３６ｂの先端の相対的な位置の経時的な変化を記述している。車輪６２２ａ、６２２ｂの回転に関する動作パターンは、車輪６２２ａ、６２２ｂの回転角の経時的な変化を記述している。首部６５０の回転に関する動作パターンは、胴体部６７０に対する首部６５０の回転角の経時的変化を記述している。
【００６８】
経路補正部８０４は、補正量計算部８１８から入力される補正量を用いて、動作パターン記憶部８０２から入力される車輪６２２ａ、６２２ｂの回転に関する動作パターンを補正する。補正された車輪６２２ａ、６２２ｂの回転に関する動作パターンは、動作パターン更新部８０６へ入力される。また経路補正部８０４は、補正された車輪６２２ａ、６２２ｂの回転に関する動作パターンに基づいて、頭部６４０が指揮者７０２を撮影し続けるように、首部６５０の回転に関する動作パターンを補正して、動作パターン更新部８０６へ出力する。
【００６９】
動作パターン更新部８０６は、動作パターン記憶部８０２から入力される右アーム６３０ａおよび左アーム６３０ｂの上げ下げに関する動作パターンと、経路補正部８０４から入力される車輪６２２ａ、６２２ｂに関する動作パターンと、指揮者７０２を撮影し続けるための首部６５０の回転に関する動作パターンを、指示認識部８１２から入力される指示内容に基づいて更新する。指揮者７０２が指揮棒７３０を速く振ると（即ちテンポが速いと）、ロボット６１０が高速で移動するように移動機構６２０が制御される。逆に、指揮者７０２が指揮棒７３０をゆっくり振ると（即ちテンポが遅いと）、ロボット６１０が低速で進行するように移動機構６２０が制御される。
【００７０】
アクチュエータ制御部８０８は、動作パターン更新部８０６から入力される各動作パターンに基づいて、各アクチュエータの目標とする回転角度の経時的変化を計算し、計算された回転角度を実現するように、アクチュエータ群８１０を駆動する。アクチュエータ群８１０には、アクチュエータ６２４ａ、６２４ｂ、６３５ａ、６３５ｂ、モータ６５２等が含まれる。
【００７１】
指示認識部８１２は、ビデオカメラ６４２から入力される画像データに基づいて、指揮者７０２からの指示内容を認識する。認識された指示内容は、動作パターン更新部８０６に入力される。
【００７２】
速度計算部８２０は、エンコーダ７１０から入力される車輪６２２ａ、６２２ｂの回転角度と、車輪６２２ａ、６２２ｂの直径と、車輪６２２ａ、６２２ｂの間隔に基づいて、ロボット６１０の移動速度 V を計算する。
【００７３】
位置・方向比較部８１４は、位置センサ７１２および方向センサ７１４から入力される胴体部６７０の実際の位置と方向と、動作パターン記憶部８０２から入力される動作計画が記述する経路における胴体部６７０の位置と方向とを比較し、位置と方向のそれぞれについて偏差を計算する。位置・方向比較部８１４は、計算された偏差に基づいて、ロボット６１０の動作パターンを補正するか否かを判断する。位置・方向比較部８１４は、計算された偏差と補正の要否についての判断結果を、経路推定部８１６へ入力する。
【００７４】
経路推定部８１６は、位置・方向比較部８１４から動作パターンの補正が必要であるとの判断結果を受け取ると、実際の位置と方向から動作計画が記述する経路へ復帰するまでの時間を設定する。復帰するまでの時間は、位置・方向比較部８１４から入力される位置と方向の偏差と、速度計算部８２０から入力される速度 V に基づいて設定される。入力される偏差が大きいほど、復帰するまでの時間は長い値に設定され、入力される偏差が小さいほど、復帰するまでの時間は短い値に設定される。入力される速度 V が大きいほど、復帰するまでの時間は長い値に設定され、入力される速度 V が小さいほど、復帰するまでの時間は短い値に設定される。その後、経路推定部８１６は、位置センサ７１２および方向センサ７１４で計測された実際の位置および方向から動作パターン記憶部８０２に記憶された動作計画に基づいて動作したときのロボット６１０の移動経路を、復帰するまでの時間として設定された時間まで計算する。計算された移動経路は、補正量計算部８１８に入力される。
【００７５】
補正量計算部８１８は、動作パターン記憶部８０２から入力される動作計画が記述する移動経路と、経路推定部８１６から入力される計算された移動経路と、動作計画が記述する移動経路へ復帰するまでの時間に基づいて、計算された移動経路の補正量を計算する。計算された移動経路の補正量は、評価関数としてロボット６１０の方向偏差の時間変化率の絶対値の積算値と、ロボット６１０の位置偏差の自乗の積算値とを考慮し、それらの評価関数を最小化する移動経路が実現されるように計算される。移動経路の補正量が計算されると、補正量計算部８１８は、車輪６２２ａ、６２２ｂの回転に関する動作パターンの補正量を計算する。計算された動作パターンの補正量は、経路補正部８０４へ入力される。
【００７６】
ロボット６１０は、動作パターン記憶部８０２から動作計画を読込み、ビデオカメラ６４２で撮影される指揮者７０２からの指示内容に応じて動作パターン更新部８０６で動作計画を更新し、更新された動作計画に基づいてアクチュエータ群８１０を駆動して動作を行う。制御部６９０は、ロボット６１０が動作をしている間、図９のフローチャートに示す処理を逐次実行し、位置センサ７１２および方向センサ７１４から入力される位置および方向を動作計画へ反映する。
以下では図９を参照しながら、ロボット６１０の制御部６９０が実行する動作計画の補正の処理について説明する。
【００７７】
ステップＳ９０２では、位置センサ７１２を用いて、ロボット６１０の位置を計測する。ロボット６１０の位置は、図６に示す座標系（X, Y）で記述される。
【００７８】
ステップＳ９０４では、方向センサ７１４を用いて、ロボット６１０の方向を計測する。ロボット６１０の方向は、胴体部６７０が向いている方向を、図６に示す座標系のX 軸からの傾き角θで記述される。
【００７９】
ステップＳ９０６では、エンコーダ７１０からの入力を用いて、ロボット６１０の速度を計測する。ロボット６１０の速度は、車輪６２２ａ、６２２ｂの回転角度の経時的変化と、車輪６２２ａ、６２２ｂの直径と、車輪６２２ａ、６２２ｂの間隔から計算される。
【００８０】
ステップＳ９０８では、ステップＳ９０２で計測された位置と、ステップＳ９０４で計測された方向と、動作計画が記述する移動経路において対応する時点における位置と方向を比較し、位置と方向のそれぞれについて偏差を計算する。
【００８１】
ステップＳ９１０では、計算された偏差を許容範囲を示すしきい値と比較する。計算された位置と方向の偏差のいずれか一方または両方がそれぞれのしきい値を超える場合（ステップＳ９１０でＹＥＳの場合）、ロボット６１０の動作計画を補正するために、処理はステップ９１２へ進む。計算された位置と方向の偏差のいずれもがそれぞれのしきい値以下の場合（ステップＳ９１０でＮＯの場合）、ロボット６１０の動作計画を補正する必要はないと判断して、処理はステップＳ９１８へ進む。
【００８２】
ステップＳ９１２では、動作計画が記述する移動経路に復帰するまでの時間を決定する。復帰するまでの時間は、ステップＳ９０８で計算された偏差と、ステップＳ９０６で計測されたロボット６１０の移動速度 V に基づいて決定される。
上記の復帰するまでの時間は、ステップＳ９０８で計算された偏差が大きいほど、大きい値に設定され、ステップＳ９０８で計算された偏差が小さいほど、小さい値に設定される。このように移動経路に復帰するまでの時間を設定することによって、ロボット６１０は動作を急激に変化させることなく、自然な動作で目標とする移動経路へ復帰することができる。
上記の復帰するまでの時間は、ステップＳ９０６で計算された移動速度が大きいほど、大きい値に設定され、ステップＳ９０６で計算された移動速度が小さいほど、小さい値に設定される。ロボット６１０が高速で移動している場合、移動経路を急激に変化させると、車輪６２２ａ、６２２ｂを駆動しているアクチュエータ６２４ａ、６２４ｂは出力トルクを急激に変化させる必要があり、アクチュエータ６２４ａ、６２４ｂに大きな負担をかけてしまう。このように目標とする移動経路に復帰するまでの時間を設定することによって、ロボット６１０はアクチュエータ６２４ａ、６２４ｂへ大きな負担をかけることなく、自然な動作で目標とする移動経路へ復帰することができる。
【００８３】
ステップＳ９１４では、計測された位置と方向から動作計画に基づいて移動するときの経路を計算する。またステップＳ９１４では、計算された経路を最適な経路へ補正するための補正量を計算する。最適な経路は、上述した評価関数を最小化するように設定される。最適な経路と計算された経路の差分を算出することで、経路の補正量が算出される。
【００８４】
ステップＳ９１６では、ステップＳ９１４で計算された経路の補正量に基づいて、車輪６２２ａ、６２２ｂの回転に関する動作パターンの補正量を計算する。計算された補正量に基づいて、動作パターン更新部８０６へ入力される動作計画が補正される。
【００８５】
ステップＳ９１８では、所定の時間が経過するまで待機する。所定時間を待機した後、処理はステップＳ９０２へ移行し、上述した処理を繰返し実施する。
上記の一連の処理を繰返し実施することによって、ロボット６１０は目標とする経路へ自然な動作で復帰することができる。
【００８６】
図１０を参照しながら、上記した処理によってロボット６１０が動作計画が記述する経路へ復帰する様子を説明する。
本実施例のロボット６１０は、ステップＳ９０２において実際の位置１００４を計測し、ステップＳ９０４において実際の方向１００６を計測し、ステップＳ９０６において動作計画が記述する経路１００２における位置と方向と、計測された位置１００４と方向１００６の偏差を計算する。ステップＳ９１０で動作計画の補正が必要と判断されると、ステップＳ９１２で動作計画が記述する経路１００２へ復帰するまでの時間を決定し、ステップＳ９１４で計測された位置１００４と方向１００６から動作計画に従って移動するときの経路１００８から、動作計画が記述する経路１００２へ復帰するまでの最適な経路１０１０を計算し、計算された最適な経路を実現するように経路の補正量１０１２を計算する。計算された経路の補正量１０１２に基づいて、車輪６２２ａ、６２２ｂの回転に関する動作パターンの補正量を計算し、動作計画を補正する。
【００８７】
以上、本発明の実施形態について詳細に説明したが、これらは例示に過ぎず、特許請求の範囲を限定するものではない。例えば、歩容データには、時間と位置で経時的変化を記述する実施例を紹介したが、時間と速度、あるいは時間と加速度の関係で、足先や腕先や体幹の運動の経時的変化を記述してもよい。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合わせによって技術的有用性を発揮するものであり、出願時請求項記載の組合わせに限定されるものではない。また、本明細書または図面に例示した技術は複数の目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである
【図面の簡単な説明】
【００８８】
【図１】図１は脚式ロボット６の歩行の概略を示す図である。（第１実施例）
【図２】図２はコントローラ１４の機能をブロック化して示す図である。（第１実施例）
【図３】図３はコントローラ１４が実施する処理を説明するフローチャートである。（第１実施例）
【図４】図４は脚式ロボット６の支持脚の足平配置の推移を示す図である。（第１実施例）
【図５】図５は遊脚足先の軌道を示す図である。（第１実施例）
【図６】図６はロボット６１０の動作の概略を示す図である。（第２実施例）
【図７】図７はロボット６１０の概要を正面から見た図である。（第２実施例）
【図８】図８は制御部６９０の機能をブロック化して示す図である。（第２実施例）
【図９】図９は制御部６９０が実施する処理を説明するフローチャートである。（第２実施例）
【図１０】図１０はロボット６１０の動作計画の補正の様子を示す図である。（第２実施例）
【符号の説明】
【００８９】
６・・・脚式ロボット
７，８，９，１０・・・足先軌道
１２・・・体幹
１４・・・コントローラ
１８・・・頭部
２０・・・右脚
２２・・・左脚
２１０・・・歩容データ記憶部
２１２・・・関節角群計算部
２１４・・・アクチュエータ制御部
２１６・・・ロボットの機械系
２１８・・・エンコーダ
２２０・・・頭部位置検出装置
２２２・・・頭部方向検出装置
２２４・・・支持脚足平配置計算部
２２６・・・着地配置計算部
２２８・・・補正量計算部
２３０・・・加算器
２３２・・・体幹歩容計算部
２３４・・・着地配置修正部
２３６・・・重心速度計算部
２３８・・・足平配置比較部
４０２、４０４、４０６、４０８、４１０、４１２、４１４・・・歩容データが記述する足平配置
４１６、４１８、４２０・・・足平配置
４２２、４２４、４２６、４２８・・・予定された足平配置
４３０、４３２、４３４・・・補正後の足平配置
６０２・・・会場
６１０・・・ロボット
６２０・・・移動機構
６２２ａ、６２２ｂ・・・車輪
６２４ａ、６２４ｂ・・・アクチュエータ
６３０ａ、６３０ｂ・・・アーム
６３２ａ、６３２ｂ・・・上腕部
６３４ａ、６３４ｂ・・・下腕部
６３５ａ、６３５ｂ・・・アクチュエータ
６３６ａ、６３６ｂ・・・撥
６３８ａ、６３８ｂ・・・関節
６４０・・・頭部
６４０ａ、６４０ｂ・・・孔
６４２・・・ビデオカメラ
６５０・・・首部
６５２・・・モータ
６６０・・・太鼓
６７０・・・胴体部
６９０・・・制御部
７００・・・指揮台
７０２・・・指揮者
７１０・・・エンコーダ
７１２・・・位置センサ
７１４・・・方向センサ
７３０・・・指揮棒
８０２・・・動作パターン記憶部
８０４・・・経路補正部
８０６・・・動作パターン更新部
８０８・・・アクチュエータ制御部
８１０・・・アクチュエータ群
８１２・・・指示認識部
８１４・・・位置・方向比較部
８１６・・・経路推定部
８１８・・・補正量計算部
８２０・・・速度計算部
１００２・・・動作計画が記述する移動経路
１００４・・・計測された位置
１００６・・・計測された方向
１００８・・・動作計画に基づいて動作するときの移動経路
１０１０・・・補正後の移動経路
１０１２・・・移動経路の補正量
【図１】
2007007803.tif 000006
【図２】
2007007803.tif 000007
【図３】
2007007803.tif 000008
【図４】
2007007803.tif 000009
【図５】
2007007803.tif 000010
【図６】
2007007803.tif 000011
【図７】
2007007803.tif 000012
【図８】
2007007803.tif 000013
【図９】
2007007803.tif 000014
【図１０】
2007007803.tif 000015