(57)【要約】【課題】  脚式ロボットを自然な動作で継続して歩行させることが可能な技術を提供する。【解決手段】  本発明のシステムは、脚式ロボットと歩容生成装置を備える。前記歩容生成装置は、前記脚式ロボットの重心軌道と足先軌道を生成する。前記脚式ロボットは、前記重心軌道と前記足先軌道を実現する各関節の相対変位量の時系列を目標関節変位量として計算する目標関節変位量計算装置と、前記目標関節変位量に応じて各関節を駆動する関節駆動装置を備える。前記歩容生成装置は、前記脚式ロボットが一方の脚を支持脚として他方の脚を遊脚とする期間における重心軌道を、支持脚の接地位置を２軸に回転自由な支点とする倒立振子モデルを用いて生成する。【選択図】  図５
2008229747.tif 000002
【特許請求の範囲】
【請求項１】
脚式ロボットと歩容生成装置を備えるシステムであって、
前記歩容生成装置は、前記脚式ロボットの重心軌道と足先軌道を生成し、
前記脚式ロボットは、前記重心軌道と前記足先軌道を実現する各関節の相対変位量の時系列を目標関節変位量として計算する目標関節変位量計算装置と、前記目標関節変位量に応じて各関節を駆動する関節駆動装置を備えており、
前記歩容生成装置は、前記脚式ロボットが一方の脚を支持脚として他方の脚を遊脚とする期間における重心軌道を、支持脚の接地位置を２軸に回転自由な支点とする倒立振子モデルを用いて生成することを特徴とするシステム。
【請求項２】
前記脚式ロボットの実際の各関節の相対変位量を検出する関節変位量検出装置と、
前記脚式ロボットの前記重心軌道と前記足先軌道を修正する歩容修正装置をさらに備えており、
前記歩容修正装置は、
（Ａ）前記実際の各関節の相対変位量に基づいて、前記倒立振子モデルの初期状態を決定し、
（Ｂ）前記初期状態に基づいて前記倒立振子モデルを用いて新たに重心軌道と足先軌道を生成し、
（Ｃ）前記（Ｂ）で生成された前記重心軌道と前記足先軌道を、修正された前記重心軌道と前記足先軌道として前記脚式ロボットに提供することを特徴とする、請求項１のシステム。
【請求項３】
前記歩容修正装置は、前記（Ｂ）で新たに重心軌道と足先軌道を生成する際に、目標とする接地位置に基づいて遊脚を接地する際の遊脚の開脚角度を修正することを特徴とする、請求項２のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、脚式ロボットと歩容生成装置を備えるシステムに関する。
【背景技術】
【０００２】
脚式ロボットにおいて受動歩行を実現する技術が従来から開発されている。受動歩行の場合、関節をアクチュエータ等によって能動的に制御して歩行する場合に比べて、歩行のために消費するエネルギーが少なく、自然で滑らかな歩行動作を実現できるという利点がある。
【０００３】
本出願人らは、これまでにも脚式ロボットを受動歩行させる技術として、特許文献１の技術を開発している。
特許文献１の技術によれば、ラテラル面（歩行進行方向に対して垂直な面）内での足踏み動作と、サジタル面（歩行進行方向と鉛直方向を含む面）内での動作を別個の倒立振子モデルによって扱い、ラテラル面内での動作とサジタル面内での動作を協調させて、安定した受動歩行を継続することができる。
【０００４】
【特許文献１】特開２００６−０８２１４６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
特許文献１の技術には、改善の余地が残されている。特許文献１の技術では、ラテラル面における倒立振子の動作とサジタル面における倒立振子の動作を独立したものとして扱っている。従って、安定して歩行を継続するためには、それらの動作の周期を正確に一致させる必要がある。ロボットの歩幅が小さいうちは、動作の周期を一致させることはそれほど困難なことではない。しかしながら、ロボットの歩幅が大きくなるにつれて、ラテラル面における足踏み動作の周期とサジタル面における動作の周期にずれが生じて、運動の同時性が崩れてしまう。その結果、安定した歩行を持続的できなくなってしまうという問題があった。
【０００６】
本発明では上記課題を解決する。本発明では、脚式ロボットを自然な動作で継続して歩行させることが可能な技術を提供する。
【課題を解決するための手段】
【０００７】
本発明は、脚式ロボットと歩容生成装置を備えるシステムとして具現化される。その歩容生成装置は、脚式ロボットの重心軌道と足先軌道を生成する。その脚式ロボットは、その重心軌道とその足先軌道を実現する各関節の相対変位量の時系列を目標関節変位量として計算する目標関節変位量計算装置と、目標関節変位量に応じて各関節を駆動する関節駆動装置を備えている。その歩容生成装置は、脚式ロボットが一方の脚を支持脚として他方の脚を遊脚とする期間における重心軌道を、支持脚の接地位置を２軸に回転自由な支点とする倒立振子モデルを用いて生成する。
なお本明細書で関節変位量とは、関節を介在して接続する部材間の相対的な位置関係のことをいう。例えば関節が回転関節の場合には関節変位量は関節の回転角度（関節角度）を示し、関節が直動関節の場合には関節変位量は関節での相対移動量を示す。
【０００８】
本発明のシステムでは、歩容生成装置が、支持脚の接地位置を２軸に回転自由な支点とする倒立振子モデルを用いて、脚式ロボットの重心軌道と足先軌道を生成する。このような倒立振子モデルから生成される重心軌道と足先軌道は、脚式ロボットが受動歩行を行う際の重心軌道と足先軌道を表現している。生成された重心軌道と足先軌道に従って脚式ロボットを動作させることで、消費するエネルギーが少なく、安定して持続可能な歩行動作を実現することができる。本発明のシステムでは、歩容生成装置で生成された重心軌道と足先軌道を実現するように、脚式ロボットが各関節を駆動することによって、脚式ロボットを歩行させることができる。
【０００９】
本発明のシステムでは、２軸で回転可能に支持された単独の倒立振子モデルを用いて、脚式ロボットの重心軌道と足先軌道を生成する。すなわち、受動歩行時の脚式ロボットの運動を、ラテラル面内での運動に関する倒立振子モデルと、サジタル面内での運動に関する倒立振子モデルによってそれぞれ別個に生成するのではなく、重心の３次元運動を表現する単独の倒立振子モデルを用いて生成している。従って、従来技術のように別個のモデルを用いた結果運動の同時性が崩れてしまうという問題を回避することができる。
【００１０】
上記のシステムは、脚式ロボットの実際の各関節の相対変位量を検出する関節変位量検出装置と、脚式ロボットの重心軌道と足先軌道を修正する歩容修正装置をさらに備えており、その歩容修正装置が、（Ａ）実際の各関節の相対変位量に基づいて、倒立振子モデルの初期状態を決定し、（Ｂ）その初期状態に基づいて倒立振子モデルを用いて新たに重心軌道と足先軌道を生成し、（Ｃ）前記（Ｂ）で生成された重心軌道と足先軌道を、修正された重心軌道と足先軌道として脚式ロボットに提供することが好ましい。
【００１１】
本発明のシステムでは、脚式ロボットは受動歩行と同様な歩行を実現する重心軌道と足先軌道に従って能動的に各関節を駆動している。このようなシステムでは、歩行中に種々の外乱が脚式ロボットに作用した場合に、当初に予定していた受動歩行パターンから外れてしまって、歩行が不安定になってしまう場合がある。
上記のシステムのように、歩行動作中の脚式ロボットの実際の状態を検出して、検出された状態に応じてその後の脚式ロボットの重心軌道と足先軌道を新たに生成する構成とすることによって、外乱が作用する環境においても安定した歩行を継続することができる。
【００１２】
上記のシステムにおいては、歩容修正装置が、前記（Ｂ）で新たに重心軌道と足先軌道を生成する際に、目標とする接地位置に基づいて遊脚を接地する際の遊脚の開脚角度を修正することが好ましい。
【００１３】
倒立振子運動においては、初期状態における支点と重心の位置関係が変化すると、その後の運動は大きく変化する。倒立振子モデルの支点は支持脚の接地位置としているから、振り出した遊脚が接地する位置を変更することは、すなわちその後の運動における支持脚の接地位置を変更することになり、その後の歩行動作の態様も大きく変化する。
上記のシステムによれば、遊脚を接地する際の遊脚の開脚角度を修正することによって、遊脚が接地する位置を修正して、その後の脚式ロボットの歩行動作を調整することが可能となる。外乱等によって脚式ロボットの歩行動作が所望の態様から外れてしまった場合であっても、その後の脚式ロボットの歩行動作を所望の態様にすみやかに復帰させることができる。
【発明の効果】
【００１４】
本発明のシステムによれば、脚式ロボットを自然な動作で継続して歩行させることができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明を具現化した実施例について図面を参照して説明する。
（形態１）歩容修正装置は、遊脚の開脚角度の修正量についての複数の候補値それぞれについて、倒立振子モデルを用いて重心軌道と足先軌道を新たに生成して、将来の接地位置を推定し、目標とする接地位置に最も近い接地位置を実現するような遊脚の開脚角度の修正量を決定する。
【実施例】
【００１６】
（第１実施例）
図１は、ロボット１００の機械構成のスケルトン図を示す。股関節に３軸、膝関節に１軸、足首関節に２軸、肩関節に２軸、肘関節に２軸、手首関節に１軸を備えている。ロボット１００は各関節にエンコーダ付のモータを備えており、関節角度を調整でき、関節角度を計測することができる。ψ１、ψ２、・・・、ψ２４は各関節の関節角度を示す。以下では関節角度ψ１、ψ２、・・・、ψ２４を計測するエンコーダをそれぞれエンコーダ２０１、２０２、・・・、２２４と呼び、関節角度ψ１、ψ２、・・・、ψ２４を調整するモータをそれぞれモータ２５１、２５２、・・・、２７４と呼ぶ。ロボット１００は足平の裏側にホトセンサ２２５，２２６を備えている。ホトセンサ２２５，２２６は、足平が接地しているのか浮遊しているのかを検出する。
【００１７】
図２は、ロボット１００のコントローラ２００の構成を示している。コントローラ２００には、エンコーダ２０１、２０２、・・・、２２４の出力と、ホトセンサ２２５、２２６の出力が入力される。コントローラ２００は、モータ２５１、２５２、・・・、２７４に回転角度を指示する。
【００１８】
コントローラ２００は、ロボット１００を受動歩行させるような重心の軌道および遊脚の足先の軌道を、ロボット１００が歩行動作を開始する前に予め生成して、記憶している。重心の軌道と、遊脚の足先の軌道は、支持脚の足先の基準点を原点とする相対座標によって表現されている。
コントローラ２００は、ロボット１００が歩行動作を開始すると、記憶された重心の軌道および遊脚の足先の軌道を読み出して、逆キネマティクス演算によって各モータ２５１、２５２、・・・、２７４に指示する回転角度の時系列データを生成する。各モータ２５１、２５２、・・・、２７４が生成された時系列データに従って各関節の関節角度を調整することによって、ロボット１００は受動歩行を行うことができる。
またコントローラ２００は、ロボット１００の歩行動作中に、ホトセンサ２２５、２２６およびエンコーダ２０１、２０２、・・・、２２４の検出結果に基いて、ロボット１００の現在の状態を特定する。コントローラ２００は、特定されたロボット１００の現在の状態に基いて、読み出された重心の軌道および遊脚の足先の軌道を修正して、各関節の関節角度の生成を行う。
【００１９】
すなわち、本実施例のロボット１００では、コントローラ２００が、ロボット１００が歩行動作を開始する前にロボット１００の重心軌道と遊脚足先軌道を生成する歩容生成装置としての機能と、ロボット１００が歩行動作を行っている間にロボット１００の重心軌道と遊脚足先軌道を修正する歩容修正装置としての機能を備える。また、本実施例のロボット１００では、コントローラ２００が、生成されたロボット１００の重心軌道と遊脚足先軌道を実現するような各関節の関節角度の時系列データを生成する目標関節角度計算装置としての機能も備えている。
【００２０】
以下ではロボット１００の受動歩行の概要について説明する。ロボット１００は一方の脚を支持脚として接地した状態において、支持脚の足首関節を進行方向にも体側方向にも回転自由とする。この際に進行方向への慣性が存在すると、ロボット１００は支持脚の足首関節を支点とした倒立振子の挙動を示し、進行方向へ向けて倒れこんでいく。遊脚としている脚を進行方向に向けて振り出しておけば、ロボット１００が倒れこむことによって、遊脚の足先が接地する。遊脚の足先が接地した後、その接地した遊脚を新たに支持脚として、新たな支持脚の足首関節を進行方向にも体側方向にも回転自由とする。ロボット１００には進行方向への慣性が作用しているため、ロボット１００は新たな支持脚の足首関節を支点とする倒立振子の挙動を示し、さらに進行方向へ向けて倒れこんでいく。また、それまで支持脚であった脚は、ロボット１００が倒れこむことによって浮遊し、遊脚となる。その後、新たな遊脚を進行方向に向けて振り出しておけば、ロボット１００が倒れこむことによって、再び遊脚の足先が接地する。このような動作を繰り返すことによって、ロボット１００は受動的に歩行を継続することができる。
【００２１】
支持脚の足首関節を回転自由とした場合でも、実際には、足首関節には摩擦が存在する。しかしながら、回転自由とする足首関節のモータに、摩擦を相殺するだけのトルクを与えることによって、摩擦が存在しない状態を作り出すことができる。本発明で関節を回転自由にするというのは、モータに電流を加えないで受動回転を許容するようにすることのみならず、摩擦を相殺するだけのトルクを与えることによって実質的には摩擦が存在しない状態とすることの両者を言う。
【００２２】
図３を参照しながら、ロボット１００に受動歩行を行わせる際の重心の目標軌道と遊脚の足先の目標軌道を生成する倒立振子モデルについて説明する。図３の倒立振子モデル３００は、ロボット１００が一方の脚（例えば右脚）を支持脚として接地させ、他方の脚（例えば左脚）を遊脚として前方に振り出している状態をモデル化している。倒立振子モデル３００では、質量ｍの質点３０２がロボット１００の重心に相当しており、この質点３０２が支持脚の足平３０４に対して支持脚リンク３０６によって接続されている。支持脚リンク３０６の下端は、支持脚の足平３０４に対して、ピッチとヨーの２軸での回転が可能に接続されている。支持脚リンク３０６の上端は、質点３０２に対して、ピッチ、ロールおよびヨーの３軸での回転が可能に接続されている。さらに支持脚リンク３０６は、長さ方向に伸縮可能であって、振子長Ｌを調整することができる。この６自由度のモデルによって、支持脚の足平３０４から見たロボット１００の重心の並進運動と、ロボット１００の重心まわりの回転運動を記述することができる。本実施例のロボット１００では、ロボット１００の重心が床面に対してピッチおよびロールの２軸に関して回転しないように制御される。また、倒立振子モデル３００では、遊脚リンク３０８が質点３０２に対して、ピッチ、ロールおよびヨーの３軸での回転が可能に接続されている。遊脚リンク３０８の先端３１０は、ロボット１００の遊脚の足先に相当している。
【００２３】
上記した倒立振子モデル３００は、支持脚の接地位置を２軸に回転自由な支点とする倒立振子を表現している。この倒立振子モデル３００における質点３０２の運動は、図４に示す球座標系を用いることで、簡易的に扱うことができる。図４に示す球座標系では、支持脚の足先を原点として、重心の動径をＲとし、支持脚の足平の接地面に垂直な方向（図ではｚ方向としている）からの重心の偏角をθとし、支持脚の足平の接地面に重心を投影したときの支持脚の足平が向いている方向（図ではｘ方向としている）からの偏角をφとしている。
【００２４】
図３の倒立振子モデル３００において、質点３０２の位置を（Ｌ、θ、φ）の球座標で表現すると、倒立振子の運動は次式で表現される。
【００２５】
【数１】
2008229747.tif 000003
【００２６】
ここで、変数の右上に付したダッシュ（'）は、その変数の時間に関する１階微分を表現している。φ'はφの時間に関する１階微分を、θ'はθの時間に関する１階微分を表現する。Ｃ１は定数である。θ、θ’、φ、φ’についての初期条件と、倒立振子の振子長Ｌの時系列データが与えられると、上式に基く数値積分によって、θとφの時系列データを得ることができる。Ｌ、θ、φの時系列データは、ロボット１００の重心軌道を表現している。上式から明らかなように、倒立振子の振子長Ｌを変化させることで、倒立振子の運動の様子が変化し、ロボット１００に実現させる歩行態様も変化する。
【００２７】
図５はロボット１００が支持脚を切替えながら歩行していく様子を、倒立振子モデルの切替わりで表現したものである。ロボット１００が右脚を支持脚としている状態では、ロボット１００の運動は、重心Ｇが右脚の足平５０２にリンク５０４で接続された倒立振子モデル５０６で表現される。この状態から、重心Ｇが進行方向に倒れこんでいき、遊脚としていた左脚が接地して支持脚を切替えると、それ以降のロボット１００の運動は、重心Ｇが左脚の足平５０８にリンク５１０で接続された倒立振子モデル５１２によって表現される。さらに重心Ｇが進行方向に倒れこんでいき、遊脚としていた右脚が接地して支持脚を切替えると、それ以降のロボット１００の運動は、重心Ｇが右脚の足平５１４にリンク５１６で接続された倒立振子モデル５１８によって表現される。
支持脚を入れ替える時点での倒立振子モデルの切替わりにおいては、ロボット１００の外部から見て重心Ｇの位置と速度が連続しなければならない。本実施例では、遊脚が接地する際の重心の高さを一定値Ｚ０とする。倒立振子モデルの終端状態における重心の位置Ｌ２、θ２、φ２と、倒立振子モデルの初期状態における重心の位置Ｌ０、θ０、φ０は、幾何学的に以下の条件を満たす必要がある。
【００２８】
【数２】
2008229747.tif 000004
【００２９】
また、ロボット１００が歩行する際の歩幅を（Ｘ０、Ｙ０）で表現すると、幾何学的に以下の条件を満たす必要がある。
【００３０】
【数３】
2008229747.tif 000005
【００３１】
このような関係から、ロボット１００に実現させたい歩幅Ｘ０、Ｙ０、遊脚接地時の重心高さＺ０が与えられると、遊脚を浮遊させた直後における重心の位置Ｌ０、θ０、φ０に対して、その遊脚を接地させるときの重心の位置Ｌ２、θ２、φ２を決定することができる。
【００３２】
倒立振子の振子長Ｌは、ロボット１００の滑らかな運動が実現されるように調整される。本実施例では、振子長Ｌをθの関数として、例えば以下のように調整する。
【００３３】
【数４】
2008229747.tif 000006
【００３４】
ここで、θ1はθ'がゼロのときのθの値（すなわちθの最小値）である。θ'が減少していく（倒立振子が起き上がっていく）段階においては、振子長Ｌは一定としておく。その後、θ'がゼロとなり、さらにθ'が増加していく（倒立振子が倒れていく）段階においては、振子長ＬをＬ０からＬ２まで増加させる。この倒立振子モデルにおいて振子長Ｌを増加させることは、実際のロボット１００においては、各関節をモータ２５１、２５２、・・・、２７４によって回転駆動し、重心の運動にエネルギーを注入することに相当する。
【００３５】
すなわち、本実施例の倒立振子モデルにおいては、倒立振子が起き上がるまでは、エネルギーを注入することなく、慣性を利用して重心を前方に移動させる。そして、倒立振子が倒れていく際には、次に遊脚を接地して再び起き上がる動作にそなえて、重心を支持脚の足先から離れる方向に押し出して、倒立振子にエネルギーを注入する。このようにロボット１００が一歩歩行するごとに倒立振子にエネルギーを注入することによって、遊脚の接地によって失われるエネルギーが補償されて、ロボット１００は安定して受動歩行を継続することができる。このような制御を行う場合、ロボット１００の重心は進行方向への慣性力を利用して移動していくから、非常に少ないエネルギーでロボット１００を歩行させることができる。
【００３６】
上記した歩行制御において、遊脚の軌道は、（１）重心の位置がＬ０、θ０、φ０のときに、遊脚の足先から見た重心の相対的な位置がＬ２、θ２、φ２であって、（２）重心の位置がＬ２、θ２、φ２となるときに、遊脚の足先から見た重心の相対的な位置がＬ０、θ０、φ０であるという条件のもとで、任意に決定することができる。上記（１）の条件は、それまで支持脚であった脚が新たに遊脚となって振り出されることから、倒立振子運動の終端状態における支持脚足先と重心の位置関係が、その後の倒立振子運動の初期状態における遊脚足先と重心の位置関係となることに相当する。上記（２）の条件は、それまで遊脚であった脚が接地して新たに支持脚となることから、倒立振子運動の初期状態における支持脚と重心の位置関係が、その直前の倒立振子運動の終端状態における遊脚足先と重心の位置関係となることに相当する。本実施例のロボット１００では、上述の（１）と（２）の条件のもとで、多項式補間によって遊脚の軌道を生成する。
【００３７】
本実施例では、ロボット１００が所望の歩行態様Ｘ０、Ｙ０、Ｚ０で安定して歩行が可能なＬ０、θ０、φ０、Ｌ２、θ２、φ２が予め指定されており、指定されたＬ０、θ０、φ０、Ｌ２、θ２、φ２に対応する重心の目標軌道と遊脚足先の目標軌道がコントローラ２００によって予め計算されている。計算された重心の軌道と遊脚足先の軌道はコントローラ２００に記憶されており、ロボット１００が歩行を開始すると、順次読み出されていく。ロボット１００は読み出された重心の目標軌道と遊脚足先の目標軌道に従って各関節の関節角度の時系列データを生成し、各関節を回転駆動することによって、歩行動作を実現する。
【００３８】
実際にロボット１００を歩行させると、ロボット１００の現実の動力学特性と倒立振子モデルの動力学特性の相違や、床面の予期せぬ凹凸や、ロボット１００に作用する予期せぬ外乱等によって、所望の歩行態様から外れた歩行動作をしてしまう場合がある。このような状況では、安定して歩行を継続させることが困難となる。そこで、本実施例のロボット１００では、歩行中のロボット１００の状態をリアルタイムに計測して、その後の動作における重心の目標軌道と遊脚足先の目標軌道を修正する。以下では、コントローラ２００が行う重心の目標軌道と遊脚足先の目標軌道の修正処理について説明する。
【００３９】
コントローラ２００は、ホトセンサ２２５、２２６によって両方の脚が接地している状態を検出すると、エンコーダ２０１、２０２、・・・、２２４によって各関節の関節角度ψ１、ψ２、・・・、ψ２４を計測する。コントローラ２００は、計測された関節角度ψ１、ψ２、・・・、ψ２４から、新たな支持脚の足先から見た重心の相対位置であるＬ０、θ０、φ０を算出する。
【００４０】
コントローラ２００は、計算されたＬ０、θ０、φ０から、倒立振子モデルを用いてその後のロボット１００の運動をシミュレーションする。コントローラ２００が用いる倒立振子モデルは、ロボット１００が歩行動作を開始する前に予め重心の目標軌道と遊脚足先の目標軌道を計算する際に用いたものと同様である。
コントローラ２００は、倒立振子モデルを用いたシミュレーションによって、次に遊脚が接地する際の遊脚の開脚角度に応じてその後の歩行動作がどのように変化するのかを予測する。なお本明細書で遊脚の開脚角度とは、ロボット１００の体幹に沿って上方向に伸びる軸に垂直な面内に、ロボット１００の重心と、支持脚の足先と、遊脚の足先をそれぞれ投影した場合に、支持脚の足先の投影点と重心の投影点を結ぶ線と、遊脚の足先の投影点と重心の投影点を結ぶ線がなす角度のことをいう。
【００４１】
図６は重心６０４と支持脚６０６と遊脚６０２を備える倒立振子モデルを鉛直上方向から見た図である。図６に示すように、遊脚６０２を接地する際の遊脚６０２の開脚角度によって、遊脚６０２の接地位置６０８は変化する。遊脚６０２の接地位置６０８が変化すると、支持脚を切替えて再び遊脚を振り出す際の支持脚の足先から見た重心の相対的な位置が変化して、その後の倒立振子運動の初期状態が変化する。これによって、その後のロボット１００の歩行動作の態様も変化する。
【００４２】
図７は遊脚接地時の遊脚の開脚角度を修正した場合に、その後の一歩ごとの遊脚の接地位置が変化する様子を示している。支持脚の接地位置７０２（以下ではｉ歩目の接地位置７０２という）から、遊脚の開脚角度を１８０度として遊脚を接地させた場合には、ｉ＋１歩目は接地位置７０４ａで接地する。その後の歩行動作によって、ｉ＋２歩目は接地位置７０６ａで接地し、ｉ＋３歩目は接地位置７０８ａで接地する。
ｉ歩目の接地位置７０２から、遊脚の開脚角度を１８０度よりも小さくして遊脚を接地させた場合には、ｉ＋１歩目は接地位置７０４ｂで接地する。その後の歩行動作によって、ｉ＋２歩目は接地位置７０６ｂで接地し、ｉ＋３歩目は接地位置７０８ｂで接地する。
逆に、ｉ歩目の遊脚接地位置７０２から、遊脚の開脚角度を１８０度よりも大きくして遊脚を接地させた場合には、ｉ＋１歩目は接地位置７０４ｃで接地する。その後の歩行動作によって、ｉ＋２歩目は接地位置７０６ｃで接地し、ｉ＋３歩目は接地位置７０８ｃで接地する。
図７から明らかなように、遊脚を接地する際の遊脚の開脚角度を修正することによって、その後のロボット１００の歩行動作の態様は大きく変化する。
【００４３】
本実施例のコントローラ２００は、遊脚接地時の遊脚の開脚角度をδＤだけ変化させた場合のｉ＋１歩目の歩行動作を倒立振子モデルによってシミュレーションし、さらにその後のｉ＋２歩目とｉ＋３歩目の歩行動作についても倒立振子モデルによってシミュレーションする。これによって、ｉ＋１歩目の遊脚接地時において遊脚の開脚角度をδＤ変化させた場合の、ｉ＋１歩目、ｉ＋２歩目、ｉ＋３歩目の接地位置がそれぞれ計算される。
コントローラ２００は、上記のδＤを段階的に増減して、上記したシミュレーションを繰り返し実施し、ｉ＋１歩目、ｉ＋２歩目、ｉ＋３歩目の接地位置を計算する。これによって、様々なδＤの値に対応したｉ＋１歩目、ｉ＋２歩目、ｉ＋３歩目の接地位置が得られる。
【００４４】
コントローラ２００は、上記のようにして計算されたｉ＋３歩目の接地位置から、所望の歩行動作を実現した場合のｉ＋３歩目の接地位置に最も近いものを選択して、遊脚接地時の遊脚の開脚角度の修正量δＤを決定する。
【００４５】
一般に受動歩行においては、実際のロボット１００の動力学特性の左右のアンバランスや、他の様々な要因によって、歩行態様について左右のアンバランスを生じてしまうことがある。このような左右のアンバランスが生じると、右脚を遊脚としたときの歩幅と、左脚を遊脚としたときの歩幅が相違して、ロボット１００を所望の方向に歩行させることが困難となる。
本実施例のロボット１００によれば、歩行動作中にロボット１００の現実の動作状態を検出して、その後の３歩先の接地位置までを予測して、ロボット１００が所望の方向に進んでいけるように、遊脚を接地する際の遊脚の開脚角度を修正する。このような修正を行うことによって、受動歩行に特有な左右のアンバランスが解消されて、ロボット１００を所望の方向に歩行させることができる。
【００４６】
コントローラ２００は、上記のようにして遊脚の開脚角度の修正量δＤが決定されると、そのδＤに関してすでに行った倒立振子モデルを用いたシミュレーションの結果に基づいて、重心の目標軌道と遊脚足先の目標軌道をそれぞれ修正する。
【００４７】
コントローラ２００は、上記のように修正された重心の目標軌道と遊脚足先の目標軌道から、逆キネマティクス演算によって、各関節の関節角度ψ１、ψ２、・・・、ψ２４の時系列データを生成する。生成された各関節の関節角度の時系列データに基いて、モータ２５１、２５２、・・・、２７４が各関節を回転駆動して、ロボット１００は歩行を継続する。
【００４８】
以下では図８のフローチャートを参照しながら、コントローラ２００が重心の目標軌道と遊脚足先の目標軌道を修正する処理について説明する。本実施例のロボット１００では、両方の脚が接地した状態（すなわち、それまで遊脚としていた脚が接地した状態）をホトセンサ２２５、２２６によって検出すると、図８の処理を実行して、その後の重心の目標軌道と遊脚足先の目標軌道を修正する。
【００４９】
ステップＳ８０２では、エンコーダ２０１、２０２、・・・、２２４によって各関節の関節角度ψ１、ψ２、・・・、ψ２４を計測する。
【００５０】
ステップＳ８０４では、各関節の関節角度ψ１、ψ２、・・・、ψ２４の時系列データから、倒立振子モデルの初期状態として用いるロボット１００の重心の位置Ｌ０、θ０、φ０をそれぞれ算出する。
【００５１】
ステップＳ８０６では、遊脚を接地する際の遊脚の開脚角度の修正量δＤに所定値を設定する。
【００５２】
ステップＳ８０８では、重心の位置Ｌ０、θ０、φ０と、遊脚の開脚角度の修正量δＤから、倒立振子モデルを用いて、遊脚を接地するまでの重心軌道と、遊脚足先軌道を生成する。
【００５３】
ステップＳ８１０では、ステップＳ８０８で生成された重心軌道と遊脚足先軌道に基づいて、ロボット１００がその後に遊脚を接地した後の歩行動作を生成する。ロボット１００のその後の歩行動作は、倒立振子モデルを順次切替えていくことによって生成される。
【００５４】
ステップＳ８１２では、遊脚の開脚角度の修正量δＤに応じた、ロボット１００の３歩先の接地位置を取得する。
【００５５】
ステップＳ８１４では、遊脚の開脚角度の修正量δＤを他の値に変更して上記の処理を繰り返すか否かを判断する。遊脚の開脚角度の修正量δＤを他の値に変更して上記の処理を繰り返す場合（ステップＳ８１４でＹＥＳの場合）には、ステップＳ８１６へ進んで、遊脚の開脚角度の修正量δＤを他の値に変更し、ステップＳ８０８へ進む。遊脚の開脚角度の修正量δＤを他の値に変更して上記の処理を繰り返す必要がない場合（ステップＳ８１４でＮＯの場合）には、ステップＳ８１８へ進む。
【００５６】
ステップＳ８１８では、遊脚の開脚角度の修正量δＤごとに計算された３歩先の接地位置を、所望の歩行態様において実現される３歩先の目標接地位置と比較して、最も目標接地位置に近い接地位置となる遊脚の開脚角度の修正量δＤを決定する。
【００５７】
ステップＳ８２０では、ステップＳ８１８で決定された遊脚の開脚角度の修正量δＤに応じて、ステップＳ８０８とステップＳ８１０ですでに生成されている重心軌道と遊脚足先軌道を、修正された重心軌道と修正された遊脚足先軌道として、改めて記憶する。
【００５８】
上記のように、本実施例のロボット１００は、重心軌道と遊脚足先軌道の修正処理を一歩ごとに繰り返し行うことによって、安定して歩行を持続することができる。
【００５９】
本実施例のロボット１００によれば、ロボット１００の重心軌道および遊脚の足先軌道を生成する際に、ラテラル面内での運動とサジタル面内での運動を別個のモデルから生成するのではなく、２軸での回転が可能に支持された単独の倒立振子モデルを用いて運動を生成している。このような構成とすることによって、複数の異なるモデルから生成した運動を組み合わせる際に同時性が崩れてしまう問題を回避することができる。
【００６０】
なお本実施例では、コントローラ２００が、（１）歩行動作を開始する前にロボット１００の重心軌道と遊脚足先軌道を生成する歩容生成装置としての機能と、（２）重心軌道と遊脚足先軌道を読み出して、その重心軌道と遊脚足先軌道を実現する各関節の関節角度の時系列を目標関節角度として計算する目標関節角度計算装置としての機能と、（３）歩行動作中にロボット１００の重心軌道と遊脚足先軌道を修正する歩容修正装置としての機能を備えている例について説明した。
上記とは異なり、上記（１）の歩容生成装置としての機能および／または上記（３）の歩容修正装置としての機能は、ロボット１００の外部に設置され、コントローラ２００と信号通信可能な外部コンピュータによって実現されてもよい。このような構成とすると、演算負荷が高い重心軌道と遊脚足先軌道の生成処理をコントローラ２００で行う必要がなくなり、コントローラ２００における演算負荷を軽減することができる。
【００６１】
以上、本発明の実施形態について詳細に説明したが、これらは例示に過ぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組み合わせによって技術的有用性を発揮するものであり、出願時請求項記載の組み合わせに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【図面の簡単な説明】
【００６２】
【図１】図１はロボットの機械構成を示すスケルトン図である。
【図２】図２はロボットのコントローラの構成を示す図である。
【図３】図３は倒立振子モデルを模式的に示す図である。
【図４】図４は倒立振子モデルにおいて扱う球座標系を説明する図である。
【図５】図５は倒立振子モデルの切替わりによってロボットの歩行を表現する様子を示す図である。
【図６】図６は遊脚接地時における遊脚の開脚角度と遊脚の接地位置の関係を示す図である。
【図７】図７は遊脚接地時における遊脚の開脚角度とその後の１歩ごとの遊脚の接地位置の関係を示す図である。
【図８】図８は重心軌道と遊脚の足先軌道を修正する処理を説明するフローチャートである。
【符号の説明】
【００６３】
１００：ロボット
２００：コントローラ
２０１、２０２、・・・、２２４：エンコーダ
２２５、２２６：ホトセンサ
２５１、２５２、・・・、２７４：モータ
３００：倒立振子モデル
３０２：質点
３０４：支持脚の足平
３０６：支持脚リンク
３０８：遊脚リンク
３１０：遊脚リンクの先端
５０２、５０８、５１４：足平
５０４、５１０、５１６：リンク
５０６、５１２、５１８：倒立振子モデル
６０２：遊脚
６０４：重心
６０６：支持脚
６０８：遊脚の接地位置
７０２：ｉ歩目の接地位置
７０４ａ、７０４ｂ、７０４ｃ：ｉ＋１歩目の接地位置
７０６ａ、７０６ｂ、７０６ｃ：ｉ＋２歩目の接地位置
７０８ａ、７０８ｂ、７０８ｃ：ｉ＋３歩目の接地位置
【図１】
2008229747.tif 000007
【図２】
2008229747.tif 000008
【図３】
2008229747.tif 000009
【図４】
2008229747.tif 000010
【図５】
2008229747.tif 000011
【図６】
2008229747.tif 000012
【図７】
2008229747.tif 000013
【図８】
2008229747.tif 000014