(57)【要約】【課題】スイング脚の着地点に置かれた障害物に対してロボットが転倒しないようにすること。【解決手段】ロボットの歩行制御中に、足裏の力センサによりスイング脚の着地点に置かれた障害物を検出すると、反射制御部１２３ｄは、着地する脚の足裏に働く力の中心ＣＯＰを計算し、ＣＯＰが安定領域内にあるか否かを判定する。その結果、ＣＯＰが安定領域内にない場合には、障害物に接触した脚の足首関節をピッチング動作させて安定領域を拡張することによって、ロボットの転倒を防ぐ。【選択図】        図６
2010069546.tif 000002
【特許請求の範囲】
【請求項１】
ロボットが転倒することなく単独で立っている参照姿勢を少なくとも含む複数の異なる時点の姿勢に基づいて制御情報を生成し、ロボットが予め定められた歩行動作を行うように制御する歩行動作制御手段と、
前記歩行動作制御手段により制御されるロボットの脚が着地する場所に置かれた障害物の存在を検出する障害物検出手段と、
前記障害物検出手段により障害物が検出されると、障害物からの反力が足裏に働く場所が安定領域内であるか否かを判定する安定不安定判定手段と、
前記安定不安定判定手段により不安定であると判定された場合に、障害物に接触した脚の足首にピッチング動作またはローリング動作を行わせて安定領域を拡張した後に、当該脚を伸ばしてＺＭＰが支持脚の平衡点に収束するように制御する反射制御手段と
を備えたことを特徴とするロボット制御装置。
【請求項２】
ロボットが転倒することなく単独で立っている参照姿勢を少なくとも含む複数の異なる時点の姿勢に基づいて制御情報を生成し、ロボットが予め定められた歩行動作を行うように制御する歩行動作制御ステップと、
前記歩行動作制御ステップにより制御されるロボットの脚が着地する場所に置かれた障害物の存在を検出する障害物検出ステップと、
前記障害物検出ステップにより障害物が検出されると、障害物からの反力が足裏に働く場所が安定領域内であるか否かを判定する安定不安定判定ステップと、
前記安定不安定判定ステップにより不安定であると判定された場合に、障害物に接触した脚の足首にピッチング動作またはローリング動作を行わせて安定領域を拡張した後に、当該脚を伸ばしてＺＭＰが支持脚の平衡点に収束するように制御する反射制御ステップと
を含んだことを特徴とするロボット制御方法。
【請求項３】
ロボットが転倒することなく単独で立っている参照姿勢を少なくとも含む複数の異なる時点の姿勢に基づいて制御情報を生成し、ロボットが予め定められた歩行動作を行うように制御する歩行動作制御手順と、
前記歩行動作制御手順により制御されるロボットの脚が着地する場所に置かれた障害物の存在を検出する障害物検出手順と、
前記障害物検出手順により障害物が検出されると、障害物からの反力が足裏に働く場所が安定領域内であるか否かを判定する安定不安定判定手順と、
前記安定不安定判定手順により不安定であると判定された場合に、障害物に接触した脚の足首にピッチング動作またはローリング動作を行わせて安定領域を拡張した後に、当該脚を伸ばしてＺＭＰが支持脚の平衡点に収束するように制御する反射制御手順と
を含んだことを特徴とするロボット制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ロボットの歩行を制御するロボット制御装置、ロボット制御方法およびロボット制御プログラムに関し、特に、スイングした脚の着地点に置かれた障害物からの反力が足裏のどこに働いてもロボットの転倒を防ぐことができるロボット制御装置、ロボット制御方法およびロボット制御プログラムに関するものである。
【背景技術】
【０００２】
近年、ヒューマノイドロボット、特にヒューマノイドロボットの歩行は数多くの研究者の注意を引いている。このヒューマノイドロボットの歩行に関する研究の大部分は、ＺＭＰ（Zero  Moment  Point）規範を用いている。このＺＭＰ規範は、支持多角形の内部にＺＭＰを留めるように制御する。このアプローチでは、ヒューマノイドロボットやロボットの周囲環境を正確にモデリングし、微分方程式を解くことになる。ところが、このモデリングはアンノウンな要素がある場合には難しくなる。さらに、微分方程式を解くのに時間がかかるため、リアルタイム制御は困難なものとなる。
【０００３】
ひとつのアプローチとして、ＺＭＰ規範を用いない方法がある。たとえば、ロボットの可動部の周期運動を利用して、ロボットの姿勢が安定するよう周期運動の位相を調節する従来技術がある（特許文献１を参照）。ここで、可動部とは、ロボットの脚や腕である。
【０００４】
また、ヒューマノイドロボットやロボットの周囲環境のモデリングを不要としつつ、ヒューマノイドロボットがさまざまな運動を安定して行うことができるよう効率的に制御することができる技術が特許文献２に記載されている。
【０００５】
また、ヒューマノイドロボットが歩行中にロボットの脚が着地する地点に置かれた障害物を検出すると、ヒューマノイドロボットの転倒を防ぐとともに、ヒューマノイドロボットを安定した状態に戻す反射制御技術が特許文献３に記載されている。この特許文献３に記載された反射制御では、支持脚へのローリング動作とスイングした脚をスイング前の位置に戻すことによってヒューマノイドロボットを安定した状態に戻すようにしている。
【０００６】
【特許文献１】特開２００５−９６０６８号公報
【特許文献２】特開２００７−１７５８０９号公報
【特許文献３】特開２００８−９３７５７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献３に記載された反射制御だけでは、ヒューマノイドロボットがスイングした脚の足裏に障害物が及ぼす力の場所が悪い場合には、ヒューマノイドロボットの転倒を防ぐことができないという問題がある。
【０００８】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、スイングした脚の着地点に置かれた障害物からの反力が足裏のどこに働いてもロボットの転倒を防止することができるロボット制御装置、ロボット制御方法およびロボット制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するため、本発明の一つの態様では、ロボット制御装置が、ロボットが転倒することなく単独で立っている参照姿勢を少なくとも含む複数の異なる時点の姿勢に基づいて制御情報を生成し、ロボットが予め定められた歩行動作を行うように制御する歩行動作制御手段と、前記歩行動作制御手段により制御されるロボットの脚が着地する場所に置かれた障害物の存在を検出する障害物検出手段と、前記障害物検出手段により障害物が検出されると、障害物からの反力が足裏に働く場所が安定領域内であるか否かを判定する安定不安定判定手段と、前記安定不安定判定手段により不安定であると判定された場合に、障害物に接触した脚の足首にピッチング動作またはローリング動作を行わせて安定領域を拡張した後に、当該脚を伸ばしてＺＭＰが支持脚の平衡点に収束するように制御する反射制御手段とを備える。
【００１０】
この態様によれば、ロボットが転倒することなく単独で立っている参照姿勢を少なくとも含む複数の異なる時点の姿勢に基づいて制御情報を生成し、ロボットが予め定められた歩行動作を行うように制御し、制御するロボットの脚が着地する場所に置かれた障害物の存在を検出すると、障害物からの反力が足裏に働く場所が安定領域内であるか否かを判定し、不安定であると判定した場合に、障害物に接触した脚の足首にピッチング動作またはローリング動作を行わせて安定領域を拡張した後に、当該脚を伸ばしてＺＭＰが支持脚の平衡点に収束するように制御することとしたので、障害物により不安定な状態になったロボットを安定な状態に戻すことができる。
【００１１】
なお、本発明の構成要素、表現または構成要素の任意の組合せを、方法、装置、システム、コンピュータプログラム、記録媒体、データ構造などに適用したものも上述した課題を解決するために有効である。
【発明の効果】
【００１２】
本発明の一つの態様によれば、スイング脚が着地する場所に置かれた障害物によって不安定な状態になったロボットの転倒を防ぐことができるという効果を奏する。
【発明を実施するための最良の形態】
【００１３】
以下に添付図面を参照して、この発明に係るロボット制御装置、ロボット制御方法およびロボット制御プログラムの好適な実施例を詳細に説明する。なお、ここでは、２本脚のヒューマノイドロボットをロボットの例として取り上げるが、４本脚のロボットなど、その他のロボットに対して本発明を適用することとしてもよい。
【実施例】
【００１４】
図１は、本実施例に係るロボット歩行を説明する図である。ここで、ロボットの右脚は実線で、ロボットの左脚は点線で表されている。ここでは、あらかじめロボットの歩行運動中のさまざまな姿勢を定義する複数のフレームＰｉがロボット制御装置に設定される。正確には、フレームはロボットの関節の角度などのパラメータを定義する。
【００１５】
図１では、Ｐ０からＰ１１までの１２のフレームが設定されている。ただし、このフレーム数は任意である。フレームＰ０は、ロボットが倒れることなく単独で立っている歩行前の姿勢を表している。フレームＰ１，Ｐ６，Ｐ１１は、ロボットが倒れることなく単独で立って、動かないでいる姿勢である。
【００１６】
たとえば、フレームＰ６では、ロボットのリニア速度は０であり、ロボットは左脚のみで立っており、歩幅は０である。フレームＰ１とフレームＰ１１のロボットの状態は同じである。すなわち、これらのフレームＰ１，Ｐ１１においては、ロボットのリニア速度は０であり、ロボットは右脚のみで立っており、歩幅は０となっている。歩幅が０とは、ロボットの両脚が揃っていることを意味する。フレームＰ１，Ｐ６，Ｐ１１においては、ロボットは単独で立っており、また、歩幅は０であるので、これらのフレームをリファレンスフレームと呼ぶこととする。
【００１７】
あるフレームから別のフレームへの切り替えは、すべての介在するフレームの姿勢を補間することにより行われる。また、リファレンスフレーム以外のフレームにおける各姿勢は大まかに定義されたものであり、これらの各姿勢は歩行が安定的に行われるように適宜修正される。
【００１８】
図２は、各フレームＰ０〜Ｐ１１の状態遷移図である。ロボットの状態は、フレームＰ０からリファレンスフレームＰ１（リファレンスフレームＰ１１と同じ）あるいはリファレンスフレームＰ６に遷移する。また、ロボットの状態は、リファレンスフレームＰ１あるいはリファレンスフレームＰ６からフレームＰ０に遷移することもできる。図１の例では、まず、フレームＰ０からリファレンスフレームＰ１にロボットの状態が遷移する。その後、ロボットの状態は、リファレンスフレームＰ２からリファレンスフレームＰ１０を経由してリファレンスフレームＰ１１に遷移する。
【００１９】
このように、ロボットが転倒することなく単独で立っているリファレンスフレームを含むフレーム情報を取得し、ロボットの動作がリファレンスフレームの姿勢となるようフレームＰ０〜Ｐ１１の間で姿勢を補間することにより、ロボットの状態が制御される。その結果、たとえロボットの姿勢が不安定になった場合でも、リファレンスフレームでは姿勢が安定な状態となる。すなわち、ロボットは歩行運動を安定して継続することができる。
【００２０】
また、リファレンスフレームＰ６，Ｐ１１では、ロボットは歩行を停止し、安定して立っている状態なので、それ以降の歩行の歩幅を変更したり、歩行する方向を変更したり、あるいは、歩行以外の運動を開始したりすることが容易にできる。
【００２１】
図３は、本実施例に係るロボットの概略図である。本実施例に係るロボットは、胴体２０、胴体に備えられたジャイロセンサ６０、右脚３０Ｒおよび左脚３０Ｌの２本の脚を有する。また、各脚は６つの関節を有する。すなわち、各脚の自由度は６である。なお、関節の数は任意である。
【００２２】
関節は、ピッチ腰関節１０、右ヨー股関節１１Ｒ、左ヨー股関節１１Ｌ、右ロール股関節１２Ｒ、左ロール股関節１２Ｌ、右ピッチ股関節１３Ｒ、左ピッチ股関節１３Ｌ、右ピッチ膝関節１４Ｒ、左ピッチ膝関節１４Ｌ、右ピッチ足首関節１５Ｒ、左ピッチ足首関節１５Ｌ、右ロール足首関節１６Ｒ、左ロール足首関節１６Ｌを含む。各関節には、モータ（図示せず）が組み込まれている。各関節のモータは、それぞれの関節の動きを制御する。また、各関節には位置センサ（図示せず）が組み込まれている。各関節の位置センサは、それぞれの関節の動き、具体的には回転角度を検出する。
【００２３】
ピッチ腰関節１０は、胴体２０の前後の動き（ピッチング）を制御する。右ヨー股関節１１Ｒおよび左ヨー股関節１１Ｌは、それぞれの脚の付け根部分におけるロボットの左右に回転する動き（ヨーイング）を生じさせる。
【００２４】
右ロール股関節１２Ｒおよび左ロール股関節１２Ｌは、それぞれの脚の付け根部分におけるロボットの横向きの回転（ローリング）を生じさせる。右ピッチ股関節１３Ｒおよび左ピッチ股関節１３Ｌは、それぞれの脚の付け根部分におけるロボットの前後の回転（ピッチング）を生じさせる。
【００２５】
また、右ピッチ膝関節１４Ｒおよび左ピッチ膝関節１４Ｌは、それぞれの膝部分におけるロボットの前後の動き（ピッチング）を生じさせる。右ピッチ足首関節１５Ｒおよび左ピッチ足首関節１５Ｌは、それぞれの足首部分におけるロボットの前後の動き（ピッチング）を生じさせる。右ロール足首関節１６Ｒおよび左ロール足首関節１６Ｌは、それぞれの足首部分におけるロボットの横向きの動き（ローリング）を生じさせる。
【００２６】
また、それぞれの脚には、足裏が取り付けられている。図３には、左脚３０Ｌに取り付けられた足裏４０が示されている。それぞれの足裏には、４つの力センサが組み込まれている。なお、力センサの数は任意である。図３には、足裏４０に備えられた力センサ５０ａ〜５０ｄが示されている。これらの力センサは、足裏４０が床面から受ける反力を測定する。力センサにより測定された反力は、ロボットの動きのコンプライアンス制御およびフィードバック制御に用いられる。
【００２７】
ジャイロセンサ６０は、横向き（ローリング）方向および前後（ピッチング）方向の胴体２０の回転角度を測定する。ジャイロセンサ６０により測定された回転角度は、ロボットの動きのフィードバック制御に用いられる。
【００２８】
図４は、ロボットの歩行運動を説明するタイムチャートである。時間ｔ０で、右ロール股関節１２Ｒ、左ロール股関節１２Ｌ、右ロール足首関節１６Ｒ、左ロール足首関節１６Ｌは、左脚を持ち上げるため、両脚をロボットの右側に傾けるローリングの動作を行う。この動作を行う場合、右ロール股関節１２Ｒ、左ロール股関節１２Ｌ、右ロール足首関節１６Ｒ、左ロール足首関節１６Ｌの動きは、ギアバックラッシュ補償の分だけわずかに異なるものとなる。
【００２９】
ローリング動作の振幅は、試行錯誤により決定される。あるいは、ローリング動作の振幅は、胴体２０のローリング角の評価関数が最小となるようにフィードバック制御を行うことにより決定される。
【００３０】
時間ｔ１では、右ロール股関節１２Ｒ、左ロール股関節１２Ｌ、右ロール足首関節１６Ｒ、左ロール足首関節１６Ｌはローリングの動作を停止する。そして、左脚を持ち上げるため、すなわち、左脚のリフティング操作を行うため、左ピッチ膝関節１４Ｌは、左脚を縮めるように回転し、左ピッチ足首関節１５Ｌは、左足首を縮めるように回転する。
【００３１】
時間ｔ２では、左ピッチ膝関節１４Ｌおよび左ピッチ足首関節１５Ｌはリフティングの動作を停止する。そして、右ピッチ股関節１３Ｒおよび右ピッチ足首関節１５Ｒは回転して、胴体２０が前方に移動するようピッチングの動作を行う。
【００３２】
時間ｔ２と時間ｔ３の間では、右ピッチ股関節１３Ｒおよび右ピッチ足首関節１５Ｒは、ピッチングの動作を停止する。
【００３３】
時間ｔ３では、左ピッチ膝関節１４Ｌは、左脚を床面に着地させるため、左脚を伸ばすように回転し、左ピッチ足首関節１５Ｌは、左足首を伸ばすように回転する。
【００３４】
時間ｔ４では、左脚が床面に着地する。加えて、右ロール股関節１２Ｒ、左ロール股関節１２Ｌ、右ロール足首関節１６Ｒ、左ロール足首関節１６Ｌは、右脚を持ち上げるため、両脚をロボットの左側に傾けるローリングの動作を行う。さらに、右ピッチ股関節１３Ｒおよび右ピッチ足首関節１５Ｒは、元の状態、すなわち、時間ｔ２における状態に戻るように回転する。さらに、右脚を前方に振り出すため、左ピッチ股関節１３Ｌおよび左ピッチ足首関節１５Ｌは回転して、胴体２０が前方に移動するようピッチングの動作を行う。
【００３５】
時間ｔ４と時間ｔ５の間では、右ピッチ股関節１３Ｒおよび右ピッチ足首関節１５Ｒは元の状態に戻るとともに、左ピッチ股関節１３Ｌおよび左ピッチ足首関節１５Ｌはピッチングの動作を停止する。
【００３６】
そして、時間ｔ５では、右ロール股関節１２Ｒ、左ロール股関節１２Ｌ、右ロール足首関節１６Ｒ、左ロール足首関節１６Ｌはローリングの動作を停止する。さらに、右脚を持ち上げるため、すなわち、右脚のリフティング操作を行うため、右ピッチ膝関節１４Ｒは、右脚を縮めるように回転し、右ピッチ足首関節１５Ｒは、右足首を縮めるように回転する。
【００３７】
時間ｔ６では、右ピッチ膝関節１４Ｒおよび右ピッチ足首関節１５Ｒはリフティングの動作を停止する。さらに、左ピッチ股関節１３Ｌおよび左ピッチ足首関節１５Ｌは、元の状態、すなわち、時間ｔ４における状態に戻るように回転する。その結果、ロボットの姿勢が、リファレンスフレームＰ６で定義される姿勢に設定される。
【００３８】
時間ｔ６と時間ｔ７の間では、左ピッチ股関節１３Ｌおよび左ピッチ足首関節１５Ｌは元の状態に復帰する。その結果、ロボットの姿勢が、リファレンスフレームＰ６で定義される姿勢に設定される。すなわち、ロボットのリニア速度は０であり、ロボットは左脚のみで立っており、歩幅は０となる。
【００３９】
時間ｔ７では、右脚を前方に振り出すため、左ピッチ股関節１３Ｌおよび左ピッチ足首関節１５Ｌは回転して、胴体２０が前方に移動するようピッチングの動作を行う。
【００４０】
時間ｔ７と時間ｔ８の間では、左ピッチ股関節１３Ｌおよび左ピッチ足首関節１５Ｌは、ピッチングの動作を停止する。時間ｔ８では、右脚を床面に着地させるため、右ピッチ膝関節１４Ｒは、右脚を伸ばすように回転し、右ピッチ足首関節１５Ｒは、右足首を伸ばすように回転する。
【００４１】
時間ｔ９では、右脚が床面に着地する。加えて、右ロール股関節１２Ｒ、左ロール股関節１２Ｌ、右ロール足首関節１６Ｒ、左ロール足首関節１６Ｌは、左脚を持ち上げるため、両脚をロボットの右側に傾けるローリングの動作を行う。さらに、左脚を前方に振り出すため、右ピッチ股関節１３Ｒおよび右ピッチ足首関節１５Ｒは回転して、胴体２０が前方に移動するようピッチングの動作を行う。さらに、左ピッチ股関節１３Ｌおよび左ピッチ足首関節１５Ｌは、元の状態、すなわち、時間ｔ７における状態に戻るように回転する。
【００４２】
時間ｔ１０では、右ロール股関節１２Ｒ、左ロール股関節１２Ｌ、右ロール足首関節１６Ｒ、左ロール足首関節１６Ｌはローリングの動作を停止する。さらに、左脚を持ち上げるため、すなわち、左脚のリフティング操作を行うため、左ピッチ膝関節１４Ｌは、左脚を縮めるように回転し、左ピッチ足首関節１５Ｌは、左足首を縮めるように回転する。
【００４３】
時間ｔ１１では、左ピッチ膝関節１４Ｌおよび左ピッチ足首関節１５Ｌはリフティングの動作を停止する。さらに、右ピッチ股関節１３Ｒおよび右ピッチ足首関節１５Ｒは、元の状態、すなわち、時間ｔ９における状態に戻るように回転する。その結果、ロボットの姿勢が、リファレンスフレームＰ１１で定義される姿勢に設定される。
【００４４】
時間ｔ１１以後、右ピッチ股関節１３Ｒおよび右ピッチ足首関節１５Ｒは元の状態に復帰する。その結果、ロボットの姿勢が、リファレンスフレームＰ１１で定義される姿勢に設定される。すなわち、ロボットのリニア速度は０であり、ロボットは右脚のみで立っており、歩幅は０となる。このような動きを繰り返すことにより、ロボットの歩行運動が実現される。
【００４５】
図５は、本実施例に係るロボット制御システムの機能ブロック図である。本実施例に係るロボット制御システムは、外部端末装置１００とロボット１１０とを含む。
【００４６】
外部端末装置１００は、ロボットの動作を管理するオペレータにより操作されるパーソナルコンピュータなどである。外部端末装置１００は、ロボット１１０との間で通信を行う。この通信は、さまざまな種類の情報の授受を含むものである。
【００４７】
外部端末装置１００は、あらかじめ設定したロボット１１０のフレーム情報および／またはロボット１１０への指令情報などをロボット１１０に送信したり、ロボット１１０からロボット１１０の状態（姿勢や速度など）に係る情報などを受信する。ロボット１１０から得られた情報は、表示装置（図示せず）に表示される。
【００４８】
ロボット１１０は、たとえば２本脚のヒューマノイドロボットである。ロボット１１０は、ジャイロセンサ１１１、ジャイロセンサ制御部１１２、関節１１３1〜１１３n、関節制御部１１４1〜１１４ n（ｎは自然数）、力センサ１１５1〜１１５m（ｍは自然数）、力センサ制御部１１６1〜１１６m、位置センサ１１７1〜１１７n、位置センサ制御部１１８1〜１１８n、通信インターフェース１２１、メモリ１２２、中央制御部１２３を有する。
【００４９】
ジャイロセンサ１１１は、図３に示したジャイロセンサ６０と同様の機能を有する。ジャイロセンサ１１１は、ロボット１１０の胴体２０に備えられ、横向き（ローリング）方向および前後（ピッチング）方向の胴体２０の回転角度を測定する。ジャイロセンサ制御部１１２は、ジャイロセンサ１１１の機能を制御するとともに、ジャイロセンサ１１１により測定された回転角度の情報を中央制御部１２３に送信する。
【００５０】
関節１１３1〜１１３nは、ロボット１１０のさまざまな関節を動かすものである。モータ（図示せず）がこれらの関節を駆動させる。関節には、図３で説明したピッチ腰関節１０、右ヨー股関節１１Ｒ、左ヨー股関節１１Ｌ、右ロール股関節１２Ｒ、左ロール股関節１２Ｌ、右ピッチ股関節１３Ｒ、左ピッチ股関節１３Ｌ、右ピッチ膝関節１４Ｒ、左ピッチ膝関節１４Ｌ、右ピッチ足首関節１５Ｒ、左ピッチ足首関節１５Ｌ、右ロール足首関節１６Ｒ、左ロール足首関節１６Ｌが含まれる。
【００５１】
関節制御部１１４1〜１１４nは、各関節１１３1〜１１３nの動作を制御する。特に、関節制御部１１４1〜１１４nは、関節１１３1〜１１３nが所定の時間に、所定の角速度で所定の角度だけ回転するよう制御する。この角度、角速度、時間は中央制御部１２３により指定される。
【００５２】
力センサ１１５1〜１１５mは、ロボット１１０の右脚および左脚の足裏に設けられる。力センサ１１５1〜１１５mは、床面からの反力を測定する。また、力センサ１１５1〜１１５mは、図３で説明した力センサ５０ａ〜５０ｄと同様の機能を有する。力センサ制御部１１６1〜１１６mは、力センサ１１５1〜１１５mの機能を制御するとともに、力センサ１１５1〜１１５mにより測定された反力の情報を中央制御部１２３に送信する。
【００５３】
位置センサ１１７1〜１１７nは、各関節１１３1〜１１３nに取り付けられ、各関節１１３1〜１１３nの位置を検出するセンサであり、具体的には各関節１１３1〜１１３nの回転角度を検出する。位置センサ制御部１１８1〜１１８nは、各位置センサ１１７1〜１１７nの動作を制御するとともに、位置センサ１１７1〜１１７nにより測定された位置情報を中央制御部１２３に送信する。
【００５４】
通信インターフェース１２１は、外部端末装置１００との間で通信を行う。通信インターフェース１２１は、外部端末装置１００との間で無線通信および／または有線通信を行う。
【００５５】
メモリ１２２は、さまざまな情報を記憶する。たとえば、メモリ１２２は、外部端末装置１００から受信した情報および／または外部端末装置１００に送信される情報を記憶するとともに、中央制御部１２３によりなされた種々の演算の結果に係る情報を記憶する。
【００５６】
中央制御部１２３は、ロボット１１０を全体制御する。中央制御部１２３は、たとえば、外部端末装置１００から受信したフレーム情報を基にして、ロボット１１０が動作する際の各関節１１３1〜１１３ nの回転開始時間、角速度、回転角などを算出する。そして、その結果を関節制御部１１４1〜１１４nに送信する。
【００５７】
また、中央制御部１２３は、外部端末装置１００から通信インターフェース１２１を介してロボット１１０の動作制御要求を受け付ける。動作制御要求とは、歩幅の変更要求や歩行方向の変更要求、あるいは歩行以外の動作の実行要求を含むものである。
【００５８】
中央制御部１２３は、リファレンスフレームＰ１，Ｐ６，Ｐ１１の姿勢が実現された後にのみ、上記要求を実行する。要求を実行する際には、中央制御部１２３は、要求された動作に対応する関節１１３1〜１１３nの回転開始時間、角速度、回転角などの情報を関節制御部１１４1〜１１４nに送信する。リファレンスフレームＰ１，Ｐ６，Ｐ１１においては、ロボット１１０は、片足で安定して立っているので、ロボット１１０がリファレンスフレームＰ１，Ｐ６，Ｐ１１に対応する姿勢で立っている場合に上記要求を実行することは都合がよいことである。
【００５９】
なお、ここでは、中央制御部１２３がさまざまなパラメータを算出することとしているが、外部端末装置１００がそれらを算出し、ロボットを制御する構成を採用することとしてもよい。このような構成を採用する場合には、外部端末装置１００は、回転開始時間、角速度、回転角などの算出に必要な情報をロボット１１０から受信し、受信した情報に基づいて各パラメータを算出する。関節制御部１１４1〜１１４nは、外部端末装置１００から算出結果の情報を受信し、受信した情報に基づいてロボット１１０の動作制御を行う。
【００６０】
以下に、中央制御部１２３が行うロボット制御処理について詳細に説明する。図６は、中央制御部１２３の構成を示す機能ブロック図である。図６に示すように、中央制御部１２３は、動作生成部１２３ａと、コンプライアンス制御部１２３ｂと、フィードバック制御部１２３ｃと、反射制御部１２３ｄと、補正部１２３ｅとを有する。
【００６１】
動作生成部１２３ａは、外部端末装置１００から受信したフレーム情報を基にして、ロボット１１０が動作する際の各関節１１３1〜１１３nの回転開始時間、角速度、回転角などを算出し、補正部１２３ｅに出力する処理部である。また、動作生成部１２３ａは、ロボット１１０がローリングフェーズ、リフティングフェーズ、着地（ランディング）フェーズうちのどのフェーズにあるかのフェーズ情報をコンプライアンス制御部１２３ｂおよびフィードバック制御部１２３ｃに渡す。
【００６２】
コンプライアンス制御部１２３ｂは、力センサ１１５1〜１１５mによって測定された力センサデータおよび動作生成部１２３ａからのフェーズ情報に基づいて着地動作などのコンプライアンス制御を行う処理部である。コンプライアンス制御部１２３ｂは、コンプライアンス制御量を算出して補正部１２３ｅに出力する。
【００６３】
フィードバック制御部１２３ｃは、ジャイロセンサ１１１によって測定されたジャイロセンサデータに基づくジャイロフィードバック制御および力センサ１１５1〜１１５mによって測定された力センサデータに基づくＺＭＰフィードバック制御を行う処理部である。フィードバック制御部１２３ｃは、フィードバック制御量を算出して補正部１２３ｅに出力する。
【００６４】
反射制御部１２３ｄは、周期的な歩行動作に対して発生する想定外の事象を検出し、反射制御を行う処理部である。反射制御部１２３ｄは、力センサ１１５1〜１１５m、位置センサ１１７1〜１１７n、ジャイロセンサ１１１によって測定されたジャイロセンサデータを用いて、歩行面に置かれた障害物など想定外の事象を検出する。なお、歩行面に置かれた障害物に対する反射制御の詳細については後述する。
【００６５】
図７は、反射制御部１２３ｄによる反射制御の考え方を説明するための説明図である。図７に示すように、反射制御部１２３ｄは、ロボット１１０の状態が各フレームに対応する状態を遷移するときに、想定外の事象を検出すると、想定外の状態ｊに一端遷移し、想定外の状態ｊから通常の状態に戻るように制御する。このとき、反射制御部１２３ｄは、ロボット１１０の慣性変化を最小にするような想定外の状態ｊに遷移する。このように、ロボット１１０の慣性変化を最小にするような想定外の状態ｊに遷移することによって、安定した反射制御を行うことができる。
【００６６】
補正部１２３ｅは、動作生成部１２３ａが各関節１１３1〜１１３nに対して算出した回転開始時間、角速度、回転角などをコンプライアンス制御部１２３ｂ、フィードバック制御部１２３ｃおよび反射制御部１２３ｄの出力で補正する処理部である。そして、補正後の回転開始時間、角速度、回転角などに基づいて各関節１１３1〜１１３nのモータに対するコマンドを出力する。
【００６７】
次に、ロボット１１０の動作モデルについて説明する。ロボット１１０のローリング動作は式（１）により近似することができる。
【数１】
2010069546.tif 000003
【００６８】
ここで、ｃ(ｔ)は入力信号であり、式（２）に示すように、Ｎ個の区分的に線形な関数ｕi(ｔ)（ｕi(ｔ)∈［０，１］、ｔi≧０、ｃiは実数）の時系列として表現される。また、a(ｔ)はアクティベートされる関数（activation  function）である。
【数２】
2010069546.tif 000004
【００６９】
そこで、ロボット１１０の歩行制御を以下のように表すこととする。
【数３】
2010069546.tif 000005
【００７０】
上式で、インデックスｉはローリングまたはリフティングを表し、θiは生成される関節の動きであり、ｆi(ｔ，θi)は区分的に線形でｔに関して連続な関数であり、ｇi(ｔ)は歩行を生成する区分的に線形な、式（２）に示した関数である。平衡点ではロボット１１０は以下のＰＤコントローラで制御される。
【数４】
2010069546.tif 000006
【００７１】
上式で、ｖ(ｔ)はピッチ関節、ロール関節へのＰＤコントローラの出力であり、ｕsはセンサ入力であり、ＮはＰＤコントローラの次数であり、ここではＮ＝２とする。パラメータａij＞０であり、最適値である必要はないためａij、ｂiの値は簡単に決めることができる。したがって、関節のモータへのコマンドは以下のように表される。以下の式で、ｈi(ｔ)は反射動作を表し、ｚi(ｔ)は関節のモータへのコマンドである。
【数５】
2010069546.tif 000007
【００７２】
ロボット１１０の歩行は、図８に示す倒立振子モデルで表されるが、倒立振子システムをフィードバック制御を有する２次のＯＤＥ（Open  Dynamics  Engine）で以下のように表すこととする。
【数６】
2010069546.tif 000008
【００７３】
ここで、α∈Ｒは倒立振子の垂線からの逆時計回りの角度であり、ζ∈Ｒは減衰比であり、μ＝ｇ／ｌ∈Ｒであり、ｕg∈Ｒはシステムを安定化させるためのフィードバック制御入力である。θを腰関節の角度とし、θrをＣＯＭ（Center  Of  Mass）の投影が支持多角形内にあるときの腰関節の角度とし、α＝θ−θrとすると式（７）は以下のようになる。
【数７】
2010069546.tif 000009
【００７４】
ここで、ｕg(θ)はθ＝θr周辺の場合に倒立振子を安定させるジャイロフィードバック制御信号である。そして、各平衡点においてシステムは以下の同じ固有値を有する。
【数８】
2010069546.tif 000010
【００７５】
ζ＜＜μであるため、式（９）の平衡点は鞍点である。図８に示す周期運動を生成するために、ジャイロセンサによって測定された倒立振子の角速度を用いてフィードバック制御ｕg(θ)＝ｋ1θ＋２ｋ2ｄθ/ｄｔによって平衡点を安定させる。なお、倒立振子モデルは大まかなモデルであり、最適なフィードバックゲインを設計する必要はないが、フィードバックゲインはロボット１１０に激しい振動を発生させないように決定される。
【００７６】
ローリング動作に関して生成されるリズミカルな動きは台形で近似され、式（１）を用いてスムーズ化される。腰および足首への角度コマンドを図９に示す。図９において、左右の切り換え時刻ｔ＝ｋτにおける制御法則は以下のように表される。
【数９】
2010069546.tif 000011
【００７７】
ここで、ｋは半歩行周期τの数であり、ｔ-およびｔ+はそれぞれ転換点の直前および直後を表す。ｔ≠ｋτでの軌跡は図９に示すとおりであり、平衡点での安定性は式（６）に示したジャイロフィードバックループにより保証される。
【００７８】
図９のＭ0からＭ1へのローリング動作θ(ｔ)を時間遅れε、関節角速度ω、歩行周期Ｔ、ローリング振幅ａrの関数として以下のように定式化する。
【数１０】
2010069546.tif 000012
【００７９】
そして、ｕ(ｔi，ωi)＝ωi(ｔ−ｔi)（０≦ｕ(ｔi，ωi)≦１）で定義されるｕを用いて、周期的なローリング動作は以下のように表される。
【数１１】
2010069546.tif 000013
【００８０】
ここで、ｔr0、ｔfはそれぞれローリング動作の開始および終了のスイッチング時刻であり、ｎは歩行ステップ数であり、ｆ1およびｆ2は歩行に関係する時間である。ｐ＝ｔr1−ｔr0−１／ωiをロボット１１０が最大ローリング位置に留まる時間とし、ｔr1を片脚支持フェーズでの最初の左右スイッチング時刻とするとｆ1＝（１／ωr＋ｐ）／Ｔ、ｆ2は２ｆ1＋１／ωrＴ）である。腰関節および足首関節へのコマンドは以下のようになる。
【数１２】
2010069546.tif 000014
【００８１】
腰関節へのコマンドは足首関節へのコマンドの符号を反転したものであるので、ロボット１１０の上体は外乱がなければ不動となる。すなわち、歩行時のローリング軸のまわりの角速度は０である。
【００８２】
スイング脚の動きも振子の動きと同じであると考えられ、補償器なしで安定したものとなる。スイング動作はローリング動作と同様に生成され、図１０に基づいて以下のように表される。
【数１３】
2010069546.tif 000015
【００８３】
ここで、θlはリフティング動作であり、ａlはリフティングの大きさであり、ｔl0、ｔl2はそれぞれ最初と２度目のリフティングのスイッチング時刻である。また、ｔl1、ｔlfはそれぞれ最初と最後のランディングのスイッチング時刻であり、ωlはリフティング動作を生成する関節角速度である。
【００８４】
ストライドを生成する角度θsは以下のように表される。
【数１４】
2010069546.tif 000016
【００８５】
ここで、ａsはストライドの大きさであり、ｔs1、ｔs2はそれぞれストライドの開始と終了の時刻であり、ωsは関節角速度である。また、ピッチング動作に関するモータコマンドは以下のように表される。
【数１５】
2010069546.tif 000017
【００８６】
歩行動作について図１１に示す座標系でのＺＭＰのｘ成分の状態空間における軌跡を図１２に示す。図１２に示すように、歩行動作は起点から始まって周期的に２つの平衡点の間をスイッチングすることがわかる。なお、ＺＭＰのｘ成分ｘm、ｙ成分ｙmは足裏の力センサによって測定された値によって以下の式で計算される。下式でＦTは足裏に働く全ての力の和である。
【数１６】
2010069546.tif 000018
【００８７】
次に、反射制御部１２３ｄによる反射制御の詳細について説明する。歩行面に置かれた障害物に対する基本的な反射制御は以下のとおりである。
・足裏の力センサにより障害物を検出
・ロボット１１０の動作を停止
・ロボット１１０の状態を直前の平衡点に戻れる状態に移行
【００８８】
また、反射動作は以下のように表すことができる。
【数１７】
2010069546.tif 000019
【００８９】
ここで、ｕ(ｔi)はｔiを開始点とする単位ステップ関数であり、ｈr(ｔ)およびｈp(ｔ)はそれぞれローリング動作およびピッチング動作を表す関数であり、εrおよびεpは式（４）のεと比較して非常に小さな値である。また、θswrおよびθswpはそれぞれ障害物が検出されたときのローリング値およびピッチング値であり、θsは図１０に示したローリングの振幅である。
【００９０】
しかしながら、図１３（ａ）に示すように障害物が足裏の支持脚側の半分の領域に触れた場合には、ロボット１１０の状態を直前の平衡点に戻れる状態に移行することができない。また、障害物が安定した面を提供しない場合には、ロボット１１０は障害物の上を進むこともできない。
【００９１】
図１３（ａ）に示す場合には、ロボット１１０の動的歩行パターンおよび反射制御起動の遅れにより、ＺＭＰが支持多角形の外に出てしまうことがあり、この場合には、式（１９）および（２０）による反射動作ではロボット１１０の転倒を防ぐことはできない。
【００９２】
そこで、ＺＭＰが支持多角形の外に出てしまった場合には、障害物に接触した脚の足首関節のローリング動作またはピッチング動作により、ＺＭＰの支持領域を拡大する。このような反射動作は以下のように表される。
【数１８】
2010069546.tif 000020
【００９３】
ここで、εr＞０、ｅjは足裏の中心からＺＭＰまでの距離であり、ｋは積分定数であり、ｒa(ｔ)はピッチ足首関節の反射動作であり、ｓa(ｔ)は障害物が検出された時点（ｔobs）から足裏が地面に接触して安定する時点（ｔcont）までの角度の積分である。また、ａij＞０、ａijおよびｂiは式（５）で示したＰＤ制御器のパラメータである。図１４に示すローリング開始時安定領域Ｄは、歩行ストライドに依存し、脚が地面に接触した時点で定義される。なお、図１３（ｂ）に示すように障害物が足裏の支持脚と反対側の半分の領域で接触した場合には、ロボット１１０の状態を直前の平衡点に戻れる状態に移行することができる。
【００９４】
次に、スイング脚の着地点に置かれた障害物に対する反射制御処理の処理手順について説明する。図１５は、スイング脚の着地点に置かれた障害物に対する反射制御処理の処理手順を示すフローチャートである。図１５に示すように、反射制御部１２３ｄは、障害物を検出する（ステップＳ１）と、着地する脚の足裏に働く力の中心ＣＯＰ（Center  Of  Pressure）を計算し（ステップＳ２）、ＣＯＰが安定領域内にあるか否かを判定する（ステップＳ３）。
【００９５】
その結果、ＣＯＰが安定領域内にない場合には、式（２１）に基づいて障害物に接触した脚の足首関節をピッチング動作させる（ステップＳ４）。そして、障害物に接触した脚を伸ばし、ＺＭＰが他の脚の平衡点に収束するように制御する（ステップＳ５）。そして、歩行を再開するパスがあるか否かを判定し（ステップＳ６）、パスがある場合には、パスを生成する（ステップＳ７）。
【００９６】
一方、パスがない場合には、式（１３）に基づいてローリング動作を行い（ステップＳ８）、ＺＭＰが他の脚の足裏の下にあるか否かを判定する（ステップＳ９）。その結果、ＺＭＰが他の脚の足裏の下にない場合には、ステップＳ８に戻ってローリング動作を継続し、ＺＭＰが他の脚の足裏の下にある場合には、式（１６）に基づいてピッチング動作を行う。ここで、歩行面に対応するために、着地時は足首をコンプライアントに保つ（ステップＳ１０）。
【００９７】
このように、ＣＯＰが安定領域内にない場合に、式（２１）に基づいて障害物に接触した脚の足首関節をピッチング動作させ、安定領域を拡張することによって、ロボット１１０の転倒を防ぐことができる。
【００９８】
図１６は、スイング脚の着地点に置かれた障害物に対する従来の反射制御の例を示す図であり、図１７は、スイング脚の着地点に置かれた障害物に対する本実施例に係る反射制御の例を示す図である。また、図１８は、本実施例に係る反射制御における足首関節の動作を示す図である。
【００９９】
図１６に示すように、式（１９）および（２０）による従来の反射制御では、障害物が足裏と衝突した場所が図１４に示した安定領域Ｄ内でないと、ロボット１１０の転倒を防ぐことができない。一方、図１７および１８に示すように、本実施例に係る反射制御では、３．１４Ｓの時点で左脚の力センサが障害物を検出し、足首のピッチ関節が式（２１）に基づいてＳa(ｔ)で制御され、３．２７Ｓの時点で１／ａijだけ遅れてｒa(ｔ)で制御される。したがって、ロボット１１０の転倒を防ぐことができる。
【０１００】
図１９は、ＺＭＰ位置を示す図である。ここでは、障害物が図１３（ａ）に示した位置にある場合を示す。図１９に示すように、約４．０Ｓでロボット１１０の状態は平衡点に到達している。
【０１０１】
上述してきたように、本実施例では、ロボット１１０の歩行制御中に、障害物が検出されると、反射制御部１２３ｄは、着地する脚の足裏に働く力の中心ＣＯＰを計算し、ＣＯＰが安定領域内にあるか否かを判定する。その結果、ＣＯＰが安定領域内にない場合には、式（２１）に基づいて障害物に接触した脚の足首関節をピッチング動作させる。したがって、安定領域を拡張することができ、ロボット１１０の転倒を防ぐことができる。
【０１０２】
なお、本実施例では、ロボット制御装置について説明したが、ロボット制御装置が有する構成をソフトウェアによって実現することで、同様の機能を有するロボット制御プログラムを得ることができる。そこで、ロボット制御プログラムを実行するコンピュータについて説明する。
【０１０３】
図２０は、本実施例に係るロボット制御プログラムを実行するコンピュータの構成を示す機能ブロック図である。図２０に示すように、コンピュータ２００は、ＲＡＭ２１０と、ＣＰＵ２２０と、フラッシュメモリ２３０と、ＵＳＢインターフェース２４０と、ＣＯＭインターフェース２５０とを有する。
【０１０４】
ＲＡＭ２１０は、プログラムやプログラムの実行途中結果などを記憶するメモリであり、図５に示したメモリ１２２に対応する。ＣＰＵ２２０は、ＲＡＭ２１０からプログラムを読み出して実行する中央処理装置である。フラッシュメモリ２３０は、プログラムやデータを格納する不揮発性メモリであり、ＵＳＢインターフェース２４０は、コンピュータ２００を関節やセンサに接続するためのインターフェースである。ＣＯＭインターフェース２５０は、外部端末装置１００と通信するためのインターフェースであり、図５に示した通信インターフェース１２１に対応するものである。そして、コンピュータ２００において実行されるロボット制御プログラム２３１は、フラッシュメモリ２３０から読み出されてＣＰＵ２２０によって実行される。
【図面の簡単な説明】
【０１０５】
【図１】本実施例に係るロボット歩行を説明する図である。
【図２】各フレームＰ０〜Ｐ１１の状態遷移図である。
【図３】本実施例に係るロボットの概略図である。
【図４】ロボットの歩行運動を説明するタイムチャートである。
【図５】本実施例に係るロボット制御システムの機能ブロック図である。
【図６】中央制御部の構成を示す機能ブロック図である。
【図７】反射制御部による反射制御の考え方を説明するための説明図である。
【図８】片脚支持フェーズで定義される平衡点間でのロボットの状態の遷移を示す図である。
【図９】ローリングコマンド、リフティングコマンドを示す図である。
【図１０】ローリング動作と設計パラメータを示す図である。
【図１１】足裏に働く力およびＺＭＰを示す図である。
【図１２】ＺＭＰのｘ成分の状態空間における軌跡を示す図である。
【図１３】障害物の位置とロボットの状態を示す図である。
【図１４】ローリング開始時の安定領域を示す図である。
【図１５】スイング脚の着地点に置かれた障害物に対する反射制御処理の処理手順を示すフローチャートである。
【図１６】従来の反射制御例を示す図である。
【図１７】本実施例に係る反射制御例を示す図である。
【図１８】足首関節の動作を示す図である。
【図１９】ＺＭＰ位置を示す図である。
【図２０】本実施例に係るロボット制御プログラムを実行するコンピュータの構成を示す機能ブロック図である。
【符号の説明】
【０１０６】
１０    ピッチ腰関節
１１Ｒ    右ヨー股関節
１１Ｌ    左ヨー股関節
１２Ｒ    右ロール股関節
１２Ｌ    左ロール股関節
１３Ｒ    右ピッチ股関節
１３Ｌ    左ピッチ股関節
１４Ｒ    右ピッチ膝関節
１４Ｌ    左ピッチ膝関節
１５Ｒ    右ピッチ足首関節
１５Ｌ    左ピッチ足首関節
１６Ｒ    右ロール足首関節
１６Ｌ    左ロール足首関節
２０    胴体
３０Ｒ    右脚
３０Ｌ    左脚
４０    足裏
５０ａ〜５０ｄ，１１５1〜１１５m    力センサ
６０，１１１    ジャイロセンサ
１００    外部端末装置
１１０    ロボット
１１２    ジャイロセンサ制御部
１１３1〜１１３n    関節
１１４1〜１１４n    関節制御部
１１６1〜１１６m    力センサ制御部
１１７1〜１１７n    位置センサ
１１８1〜１１８n    位置センサ制御部
１２１    通信インターフェース
１２２    メモリ
１２３    中央制御部
１２３ａ    動作生成部
１２３ｂ    コンプライアンス制御部
１２３ｃ    フィードバック制御部
１２３ｄ    反射制御部
１２３ｅ    補正部
２００    コンピュータ
２１０    ＲＡＭ
２２０    ＣＰＵ
２３０    フラッシュメモリ
２３１    ロボット制御プログラム
２４０    ＵＳＢインターフェース
２５０    ＣＯＭインターフェース
【図１】
2010069546.tif 000021
【図２】
2010069546.tif 000022
【図３】
2010069546.tif 000023
【図４】
2010069546.tif 000024
【図５】
2010069546.tif 000025
【図６】
2010069546.tif 000026
【図７】
2010069546.tif 000027
【図８】
2010069546.tif 000028
【図９】
2010069546.tif 000029
【図１０】
2010069546.tif 000030
【図１１】
2010069546.tif 000031
【図１２】
2010069546.tif 000032
【図１３】
2010069546.tif 000033
【図１４】
2010069546.tif 000034
【図１５】
2010069546.tif 000035
【図１６】
2010069546.tif 000036
【図１７】
2010069546.tif 000037
【図１８】
2010069546.tif 000038
【図１９】
2010069546.tif 000039
【図２０】
2010069546.tif 000040