(57)【特許請求の範囲】
【請求項１】
ＺＭＰ方程式を離散化した３項方程式に周期境界条件と与えられた目標ＺＭＰとを設定することで、歩行動作と、走行動作と、停止動作の少なくともいずれかの動作を含む足踏み動作における重心軌道であって、安定な足踏みを実現できるような足踏み動作における重心軌道を生成し、当該生成した足踏み動作における重心軌道から当該重心軌道における重心速度を求める軌道生成手段と、
前記軌道生成手段により求められた前記重心速度と、与えられた移動速度とに基づいて速度条件を定め、当該速度条件と前記与えられた目標ＺＭＰとを前記３項方程式に設定することで、歩行動作と、走行動作と、停止動作の少なくともいずれかの動作を実現する重心軌道を生成する軌道更新手段と、
前記軌道更新手段により生成された前記重心軌道に基づいて、前記関節角の目標値の経時的データを計算する軌道再生手段と、
前記軌道再生手段により計算された前記関節角の目標値の経時的データに基づいて、前記関節を回転する関節駆動手段と、
を備える脚式ロボット。
【請求項２】
前記軌道再生手段が、
該軌道再生手段に格納している軌道データが所定の時間区間分以下となった場合に、前記軌道更新手段に対して軌道データの生成を要求し、
前記軌道更新手段が、
複数の軌道データを格納し、該軌道データが所定の時間区間分以下となった場合に、前記軌道生成手段に対して軌道データの生成を要求し、
前記軌道生成手段が、
前記軌道更新手段からの軌道データ生成要求を受けた場合に、前記足踏み動作における重心軌道を生成する
ことを特徴とする請求項１に記載の脚式ロボット。
【請求項３】
ＺＭＰ方程式を離散化した３項方程式に周期境界条件と与えられた目標ＺＭＰとを設定することで、歩行動作と、走行動作と、停止動作の少なくともいずれかの動作を含む足踏み動作における重心軌道であって、安定な足踏みを実現できるような足踏み動作における第１の重心軌道を生成するステップと、
前記第１の重心軌道から前記第１の重心軌道における重心速度を求めるステップと、
前記求めた重心速度と、与えられた移動速度とに基づいて速度条件を定め、当該速度条件と前記与えられた目標ＺＭＰとを前記３項方程式に設定することで、歩行動作と、走行動作と、停止動作の少なくともいずれかの動作を実現する第２の重心軌道を生成するステップと、
前記第２の重心軌道に基づいて、前記関節角の目標値の経時的データを計算するステップと、
前記計算した前記関節角の目標値の経時的データに基づいて、前記関節を回転するステップと、
を備える脚式ロボットの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は関節角を変更して動作する脚式ロボット、及びその制御方法に関する。
【背景技術】
【０００２】
脚式歩行ロボットに関する歩行軌道を生成する技術が数多く提案されている。従来、脚式歩行ロボットの歩行軌道生成技術として、重心の上下動を指定してロボットの歩行動作を生成することで、転倒しない最適な着地位置を実時間で算出する技術が知られている（例えば特許文献１など）。尚、本明細書で「軌道」とは、位置の経時的な変化を記述するデータのことを言う。
【０００３】
特許文献１などに記載の従来技術では、ロボットに与える次の動作区間の軌道データについて、足の着地位置を予め複数の歩数分指定して、その着地位置へと到達する軌道を生成する。そして、それら複数の歩数分の軌道のうちの最初の一歩分を取り出してロボットに与えるものである。軌道を生成する際には、ＺＭＰ方程式で算出されるＺＭＰが目標ＺＭＰに一致する重心軌道を生成する。このとき、一歩の軌道データは、ロボットの現在状態（重心の位置及び移動速度など）に関して連続した軌道となるように、その一歩ごとの境界条件として重心の並進速度条件を指定するものである。
【特許文献１】特開２００６−２１２７３６号公報
【特許文献２】特開２００４−１６７６７６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１などに記載の従来技術には、様々な歩行・走行パターンに関して、一歩区間における速度境界条件をどのように指定すればよいのかという点について開示されていないものであった。速度境界条件は、その速度境界条件の下でＺＭＰ方程式を求解した結果得られる重心位置や目標ＺＭＰ位置（接地位置）が実現可能なものとなる必要がある。
【０００５】
例えばその場足踏み動作を行う場合には、重心の速度条件についてどのような値を予め設定すればよいのか必ずしも明確ではないため、予め調整した限られたパターンしか実現することができない。さらに、従来技術では、一歩軌道の速度境界条件を決定する手法を用いて、歩行・走行軌道を実時間で生成可能とする構成が開示されていないものであった。
【０００６】
このように、様々な歩行・走行パターンに関して、予め妥当な速度境界条件を設定した上で軌道データを生成することは困難であり、従来技術では、予め調整した限られた動作パターンのみしか実現することができないという問題があった。
【０００７】
本発明は、かかる課題を解決するためになされたものであり、様々な動作パターンを柔軟に生成することができる脚式ロボット、及びその制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明にかかる脚式ロボットは、関節角を変更して動作する脚式ロボットであって、
足踏み動作における重心軌道を計算し、該足踏み軌道を変形することで重心軌道を生成する手段と、生成された前記重心軌道に基づいて、前記関節を回転する手段と
を備えるものである。
【０００９】
このように、足踏み動作における軌道（重心位置及び、足先位置・姿勢の軌道）を計算することで安定した軌道データの雛形を容易に作り出すことができ、その軌道データを変形することで、一般的な歩行・走行動作のための軌道を生成することができる。従って、様々な動作パターンを柔軟に生成することができる。
【００１０】
また、前記足踏み動作が、歩行動作と、走行動作と、停止動作の少なくともいずれかの動作を含み、指定する足踏み動作における重心軌道を計算するようにしてもよい。これにより、指定した足踏み動作における重心軌道を計算することで、所望の動作における軌道データを柔軟に生成することができる。
【００１１】
さらにまた、前記脚式ロボットが、足踏み動作における重心軌道を計算し、該足踏み軌道を変形する場合に、計算された前記足踏み軌道のうち、指定する一部の軌道を取得し、該取得した一部の軌道を変形するようにしてもよい。これにより、足踏み軌道のうち、指定した一部を取り出して変形することで、所望の単位分の軌道データを柔軟に生成することができる。
【００１２】
また、前記足踏み軌道のうち、指定する一部の軌道が、前記脚式ロボットの一歩軌道であるようにしてもよい。これにより、足踏み軌道のうち、指定した一歩軌道部分を取り出して変形することで、所望の次の一歩の軌道データを柔軟に生成することができる。
【００１３】
さらにまた、前記脚式ロボットが、足踏み動作における重心軌道を計算し、該足踏み軌道を変形する場合に、該足踏み軌道に移動速度を重畳することで変形するようにしてもよい。このように、足踏み軌道を計算し、それに移動速度を重畳して変形することで、移動速度に応じた所望の一歩軌道を生成することができる。
【００１４】
また、前記脚式ロボットが、ＺＭＰ方程式を離散化した３項方程式と、目標ＺＭＰとに基づいて、足踏み動作における重心軌道を生成する軌道生成手段と、生成された前記足踏み軌道を変形することで重心軌道を更新する軌道更新手段と、更新された前記重心軌道に基づいて、前記関節角の目標値の経時的データを計算する軌道再生手段と、計算された前記関節角の目標値の経時的データに基づいて、前記関節を回転する関節駆動手段とを備えるようにしてもよい。尚、本明細書では、単位時間で離散化した３つの時刻位置座標からＺＭＰを計算する式を「ＺＭＰ方程式を離散化した３項方程式」という。この３項方程式を利用すると、目標ＺＭＰと一致するＺＭＰを実現する重心軌道の計算が可能となる。
【００１５】
さらにまた、前記軌道生成手段は、重心の鉛直方向軌道に基づいて計算される係数を持つ行列と、重心の水平方向の軌道の列と、目標ＺＭＰの列との間に成立する連立方程式を解いて重心軌道を計算するようにしてもよい。
【００１６】
また、前記行列が、前記目標ＺＭＰの列における最初の要素に関する方程式が前記重心軌道の列における最後の要素を含み、かつ、前記目標ＺＭＰの列における最後の要素に関する方程式が前記重心軌道の列における最初の要素を含むように、前記鉛直方向軌道に基づいて計算される係数を持つ行列であるようにしてもよい。これにより、足踏み動作について、周期境界条件の下で軌道生成処理を実行することで、予め速度境界条件を指定することなく軌道を生成することできる。
【００１７】
さらにまた、前記軌道更新手段は、重心の鉛直方向軌道に基づいて計算される係数を持つ３重対角行列と、重心の水平方向の軌道の列と、目標ＺＭＰ及び移動速度から計算される距離の列との間に成立する連立方程式を解いて重心軌道を計算するようにしてもよい。３重対角行列を用いて表現される連立方程式については、少ない計算負荷で高速に求界する技術が開発されている。従って、このような構成によれば、少ない計算負荷で高速に重心軌道を計算することができる。
【００１８】
また、前記軌道再生手段が、該軌道再生手段に格納している軌道データが所定の個数以下となった場合に、前記軌道更新手段に対して軌道データの生成を要求し、前記軌道更新手段が、複数の軌道データを格納し、該軌道データが所定の個数以下となった場合に、前記軌道生成手段に対して軌道データの生成を要求し、前記軌道生成手段が、前記軌道更新手段からの軌道データ生成要求を受けた場合に、足踏み動作における重心軌道を生成するようにしてもよい。これにより、軌道更新部に複数の軌道データを格納し、軌道再生部から次の一歩軌道データの生成要求がなされた場合に、起動更新部に格納されている軌道データが所定の個数以下となった場合に軌道生成部に軌道データの生成要求を行うことで、次の一歩軌道データを必要とする直前まで軌道生成処理を留保することができ、要求に応じてリアルタイムに軌道生成処理を実行することができる。
【００１９】
本発明に係る脚式ロボットの制御方法は、関節角を変更して動作する脚式ロボットの制御方法であって、足踏み動作における重心軌道を計算するステップと、該足踏み軌道を変形することで重心軌道を生成するステップと、生成された前記重心軌道に基づいて、前記関節を回転するステップとを備えるものである。
【００２０】
このように、足踏み動作における軌道（重心位置及び、足先位置・姿勢の軌道）を計算することで安定した軌道データの雛形を容易に作り出すことができ、その軌道データを変形することで、一般的な歩行・走行動作のための軌道を生成することができる。従って、様々な動作パターンを柔軟に生成することができる。
【００２１】
また、前記脚式ロボットの制御方法では、歩行動作と、走行動作と、停止動作の少なくともいずれかの動作を含み、指定する足踏み動作における重心軌道を計算するステップと、計算された前記足踏み軌道のうち、指定する一部のみを取得するステップと、取得された前記一部の足踏み軌道に移動速度を重畳するステップとを備えるようにしてもよい。
【００２２】
さらにまた、前記脚式ロボットの制御方法では、ＺＭＰ方程式を離散化した３項方程式と、目標ＺＭＰとに基づいて、足踏み動作における重心軌道を生成するステップと、生成された前記足踏み軌道を変形することで重心軌道を更新するステップと、更新された前記重心軌道に基づいて、前記関節角の目標値の経時的データを計算するステップと、計算された前記関節角の目標値の経時的データに基づいて、前記関節を回転するステップとを備えるようにしてもよい。
【発明の効果】
【００２３】
本発明によれば、様々な動作パターンを柔軟に生成することができる脚式ロボット、及びその制御方法を提供することを目的とする。
【発明を実施するための最良の形態】
【００２４】
発明の実施の形態１．
本実施の形態１にかかる脚式ロボットは、まず、指定する足踏み動作における重心軌道を計算する。次いで、計算された足踏み軌道のうち、指定する一部の軌道を取得する。次いで、取得した一部の足踏み軌道に移動速度を重畳して変形する。このようにして変形した重心軌道に基づいて、脚式ロボットは関節角を変更して動作する。
【００２５】
以下、図面を参照しながら本実施の形態１に係るロボットの軌道計算方法について説明する。図１は、本実施の形態１に係る脚式ロボットの概要を示す図である。ロボット２は、体幹４と、左脚リンク６と、右脚リンク８と、制御部１０と、コントローラ１２を備えている。左脚リンク６は一方の端部は股関節を介して体幹４に揺動可能に接続されている。左脚リンク６はさらに膝関節と足首関節を備え、先端には足平を備えている。右脚リンク８は一方の端部は股関節を介して体幹４に揺動可能に接続されている。右脚リンク８はさらに膝関節と足首関節を備え、先端には足平を備えている。ロボット２の各関節はアクチュエータ（不図示）を備えており、それらのアクチュエータは制御部１０からの指示によって回転駆動する。左脚リンク６と右脚リンク８の足平の中心には、それぞれ基準点Ｌ０、Ｒ０が設けられている。基準点Ｌ０、Ｒ０は、ロボット２の動作パターンを生成する際の基準となる点である。図中Ｇは、ロボット２の重心位置を示す。
【００２６】
制御部１０は、ＣＰＵ、ＲＯＭ、ＲＡＭ、ハードディスクなどを有するコンピュータ装置である。制御部１０はコントローラ１２と通信可能であり、ユーザーが捜査するコントローラ１２から指令値を入力する。制御部１０はユーザーから入力される指令値に基づいて、ロボット２の動作パターンを生成ないし計算する。制御部１０は生成した動作パターンを記憶し、記憶された動作パターンを実現するように各関節を駆動する。制御部１０の詳細については後述する。
【００２７】
以下では、ロボット２の軌道を表現するための座標系として、ロボット２の外部で床に固定された座標系（ｘ，ｙ，ｚ）を用いる。また、ロボット２上の基準点に固定された座標系を（ｘ'，ｙ'，ｚ'）で表現する。本実施の形態１に係るロボット２では、図１に示すように、支持脚の足平の中心を座標系（ｘ'，ｙ'，ｚ'）の基準点とする。以下では、ロボット２の基準点に固定された座標系（ｘ'，ｙ'，ｚ'）で記述された位置、速度、加速度及び軌道を、それぞれ、相対位置、相対速度、相対加速度及び相対軌道と表現する。
【００２８】
続いて、制御部１０の動作の詳細について説明する。図２は、制御部１０の機能構成を示す機能ブロック図である。制御部１０は、ユーザー指令記憶部３０２と、軌道生成部３０４と、軌道更新部３０６と、軌道再生部３０８と、関節駆動部３１０とを備えている。
【００２９】
ユーザー指令記憶部３０２は、ユーザーから入力されるユーザー指令値３５０を記憶する。ユーザー指令記憶部３０２は、（１）動作の指定種類（歩行／走行／停止）３２０、（２）動作の取得部分（右足／左足／両足）３２２、（３）動作の移動速度３２４、などのデータを記憶している。これらのデータの詳細については後述する。
【００３０】
ロボット２の動作中に新たなユーザー指令値３５０が入力されると、制御部１０はユーザー記憶部３０２に記憶されたユーザー指令値を、新たに入力されたユーザー指令値に書き換える。制御部１０は、ユーザー指令記憶部３０２に記憶されているデータに基づいて逐次動作を計算して生成してゆくため、ユーザーから入力される新たな指令値は、それ以降のロボット２の動作の生成に反映される。ユーザーは、ロボット２の運動を視認しながら、例えばジョイスティックなどのコントローラ１２を用いてユーザー指令値を入力することで、ロボット２の動作をリアルタイムに制御することができる。
【００３１】
軌道生成部３０４は、ユーザー指令記憶部３０２に記憶されているユーザー指令値に基づいて、ロボット２の重心の軌道を生成する。より詳細には、ユーザー指令値により指定される足踏み動作の種類に基づいて、当該足踏み動作における重心の軌道データを生成する。生成した足踏み軌道データから、その動作の指定部分に係る軌道データを取得し、当該軌道データに対して指定速度を重畳する。ここで生成される重心の軌道は、ロボット２の外部に固定された座標系（ｘ，ｙ，ｚ）で記述されたものであるが、ロボット２が床に接地している相である接地相においてはロボット２の基準点（支持脚の足平に位置する）が床に対して移動しないため、ロボット２の基準点に固定された座標系（ｘ'，ｙ'，ｚ'）で記述されたデータとして扱うことができる。軌道生成処理の詳細については後述する。
【００３２】
軌道データ３３０〜３３８は、ロボット２の支持脚の足先に設けられた基準点を原点とする座標系（ｘ'，ｙ'，ｚ'）で重心の軌道を記述したデータを含む。また、軌道データは、重心位置の軌道に加えて、重心周りの回転運動量及び足先位置・姿勢の時系列データも含む。軌道データは、ロボット２が動作を開始してから完了するまでの時間区間の順序を示す符号と、その時間区間における重心の相対軌道が、関連付けられている。
【００３３】
軌道更新部３０６は、後述する軌道再生部３０８からの要求を受けて起動する。軌道更新部３０６は、所定の時間区間分の軌道データを格納しており、所定の周期で、格納しているこれら軌道データを更新する。また、軌道更新部３０６内に格納している軌道データが所定の個数以下となった場合には、軌道生成部３０４に対して、次の軌道データ（一歩分もしくはその一部相当の軌道データ）を要求する。
【００３４】
さらにまた、軌道更新部３０６は、軌道生成部３０４で計算されるロボット２の重心位置の軌道データに基づいて、ロボット２の遊脚の足先の接地位置を計算し、当該足先の接地位置からロボット２の遊脚の足先の位置・姿勢に関する軌道データを計算する。ここで計算される遊脚の足先の軌道データは、ロボット２の支持脚の足先に設けられた基準点を原点とする座標系（ｘ'，ｙ'，ｚ'）で記述されたものである。
【００３５】
軌道更新部３０６は、所定の時間区間として、例えば３歩相当分の軌道データを格納する。また、例えば１０ｍｓ周期で、格納している軌道データを更新する。尚、軌道更新部３０６が処理を行う周期はこれに限定されず、軌道更新部３０６は、軌道再生部３０８が処理を行う周期に比べて比較的遅い周期で処理を行うことが好ましい。
【００３６】
軌道再生部３０８は、所定時間区間分の軌道データを格納しており、所定の周期で、関節駆動部３１０へとロボット２を動作させるための関節角目標値を与える。このとき、軌道再生部３０８は、軌道データに基づいて、ロボット２の各関節の関節角目標値の経時的データ３４０を演算する。また、軌道再生部３０８内に格納している軌道データが所定の個数以下となった場合には、軌道更新部３０６に対して、次の軌道データ（一歩分もしくはその一部相当の軌道データ）を要求する。
【００３７】
軌道再生部３０８は、所定の時間区間として、例えば１０〜５０ｍｓ相当分の軌道データを格納する。また、例えば２ｍｓ周期で、関節駆動部３１０へと関節角目標値を与える。尚、軌道再生部３０８が行う周期はこれに限定されず、軌道更新部３０６より比較的早い周期で軌道再生部３０８は処理を行うことが好ましい。例えば、軌道更新部３０６が１０ｍｓ周期で処理を行う場合には、軌道再生部３０８は１〜５ｍｓの周期で処理を行うことが好ましい。
【００３８】
関節角目標値経時的データ３４０は、ロボット２の各関節の目標関節角の経時的データを備えている。関節駆動部３１０は、関節角目標値の経時的データ３４０に基づいて、ロボット２の各関節を駆動する。
【００３９】
続いて、図３を参照しながら、本実施の形態１に係るロボット２が行う処理について説明する。図３は、動作生成処理の概要を説明するためのフローチャートである。図３の処理では、周期的な運動に基づいて任意の歩行・走行動作を生成可能であるが、以下では例として、足踏み歩行動作に基づいて歩行・走行動作を生成する場合について説明する。
【００４０】
まず、ステップＳ１０１において、軌道再生部３０８は、格納している軌道データを関節角目標値経時的データへと変換し、関節駆動部３１０へと与えている。このようにして、軌道データが再生される。軌道再生部３０８は、例えば、１０ｍｓ（２ｍｓ×５個）分程度の軌道データを格納することができるものとし、２ｍｓ周期で、一つの軌道データ（２ｍｓの時間区間分の軌道データ）を取り出して、関節駆動部３１０へと与えている。軌道再生部３０８において、例えば６ｍｓ相当の軌道データＡが格納されているものとし、２ｍｓの周期で、関節駆動部３１０へと関節角目標値経時的データが与えられる。ロボット２により変換された軌道データが再生されることで、軌道データが消費されてゆく。尚、以下では、ロボット２が動作を行う際に必要とする一歩分の軌道データは、１０ｍｓ相当の軌道データであるものとする。
【００４１】
次いで、軌道再生部３０８は、格納している軌道データが所定の時間区間分以下となっているか否かを判定する（ステップＳ１０２）。例えば、図２に示した軌道データＡは、４ｍｓ相当の軌道データが既に消費されたものとして、残り６ｍｓ相当の軌道データが存在する状態であるものとする。ここで、６ｍｓ後には関節駆動部３１０へと与える関節角目標値経時的データが無くなってしまうため、軌道再生部３０８は、格納している軌道データが所定の時間区間分以下であるものと判定し、軌道更新部３０６に対して新たな軌道データを要求する（ステップＳ１０３）。一方、格納している軌道データが所定の時間区間分以下でないものと判定した場合には、ステップＳ１０１へと戻り、軌道再生処理を続ける。尚、所定の時間区間としては６ｍｓに限定されず、ロボットの２に搭載される計算機の性能や軌道再生部３０８などの処理周期に応じて決定することができる。
【００４２】
軌道再生部３０８は、軌道更新部３０６に対して新たな軌道データを要求するに際して、現時点でのロボットの状態（センサや実測関節角度などに基づいて計算される、重心位置及び足先位置・姿勢など）を軌道更新部３０６へと与えることができる。軌道更新部３０６では、当該ロボット２の状態に基づいて、軌道更新部３０６に格納している軌道データについて、その軌道データにおける先頭の条件を更新することができる。これにより、現在のロボット２の状態を、軌道再生部３０８からの要求に対して与えられる次の軌道データに反映させることができる。
【００４３】
次いで、軌道更新部３０６は、軌道再生部３０８からの要求を受けて起動し、格納している軌道データが所定の時間区間分以下となっているか否かを判定する（ステップＳ１０４）。軌道更新部３０６には、例えば、一歩ごとに分かれた軌道データの列を３歩分格納することができるものとし、軌道再生部３０８からの要求を受けた時点において、軌道データＢ及びＣが格納されている状態であるものとする。ここで、軌道更新部３０６に格納してある軌道データが例えば残り３歩分を切った場合には、格納している軌道データが所定の時間区間分以下であるものと判定し、新たな一歩分の軌道データを軌道生成部３０４に要求する（ステップＳ１０５）。
【００４４】
尚、軌道データＢは、軌道再生部３０８において次に再生される一歩軌道データであり、左足のみが着地してから右足が離床するまでの軌道データである。軌道データＣは、軌道データＢに続く次の一歩軌道データであり、右足のみが着地してから左足が離床するまでの軌道データである。また、軌道データＤは、軌道データＣに続く次の一歩軌道データであり、後述する軌道生成部３０４により与えられる。
【００４５】
一方、格納している軌道データが所定の時間区間分以下でないものと判定した場合には、軌道更新部３０６は軌道再生部３０８に対して軌道データを与えて、ステップＳ１０１へと戻り、軌道再生処理を続ける。軌道更新部３０６から軌道再生部３０８に対して軌道データが与えられていくことで、軌道更新部３０６に格納してある軌道データが消費されてゆく。２足歩行ロボットを実時間で駆動するためには、所定の時間区間分以上の軌道データを軌道更新部３０６に格納することが必要となる。尚、所定の時間区間としては３歩分に限定されず、ロボットの２に搭載される計算機の性能や軌道更新部３０６などの処理周期に応じて決定することができる。
【００４６】
次いで、軌道生成部３０４は、軌道更新部３０６からの要求を受けて起動し、ユーザー指令値に基づいて軌道データを生成する（ステップＳ１０６）。軌道データの生成処理については後述する。
【００４７】
次いで、軌道生成部３０４は、生成した軌道データに対して、ユーザー指令値に基づいて移動速度を重畳して、軌道更新部３０６へと与える（ステップＳ１０７）。移動速度を重畳された起動データが、軌道更新部３０６に格納されている軌道データの末尾へと追加される。
【００４８】
軌道更新部３０６は、軌道生成部３０４より軌道データを与えられると、追加された軌道データを含めて更新処理を行う（ステップＳ１０８）。より詳細には、軌道更新部３０６は、格納している軌道データの先頭から末尾までのデータを更新し、軌道再生部３０８に対して、先頭から一定時間区分の軌道データを与える。尚、ロボットの現在状態を反映するため、軌道再生部３０８より軌道更新部３０６に対してロボットの現在状態が与えられた場合には、軌道更新部３０６に蓄えられている先頭の軌道データの先頭状態を更新すると共に、格納されている全ての軌道に関して連続するように更新することができる。軌道更新処理は、速度境界条件を用いてＺＭＰ方程式を求解することにより行われ、詳細については後述する。
【００４９】
軌道更新部３０６は、ステップＳ１０３において起動してから、ステップＳ１０４乃至ステップＳ１０８までの一連の処理に関して、例えば１０ｍｓ周期でこれらの処理を行う。尚、軌道更新部３０６の処理周期はこれに限定されず、軌道再生部３０８に格納されている軌道データが全て消費されるまでに行われるように、各部の処理周期などが調整される。
【００５０】
以上の一連の処理により、任意の歩行・走行データをつなげた動作を生成することが可能となる。また、新たな一歩軌道を生成するための処理においては、三項方程式を合計で４回程度解くことにより実現可能であるため、非常に高速に処理を実行することができる。
【００５１】
続いて、図４乃至６を参照しながら、本実施の形態１に係るロボット２が行う軌道生成処理の詳細について説明する。図４は、軌道生成処理の詳細を説明するためのフローチャートである。図５は、走行・歩行動作における一歩と、足踏み軌道における一歩を示す図である。図６は、軌道生成処理の様子を説明するための概念図である。以下では例として、足踏み歩行動作に基づいて、歩行・走行動作における軌道を生成する処理について説明する。
【００５２】
軌道生成部３０４では、まず、その場足踏み動作における重心の軌道データ（重心位置及び足先の位置・姿勢）を計算する。そして、その軌道データの一部を取得する。次いで、取得した一部の軌道データに移動速度を重畳することで、一般的な歩行・走行動作における重心の軌道データを生成して、軌道更新部３０６へと与える。
【００５３】
軌道生成部３０４は、軌道更新部３０６からの新しい軌道データ生成要求を受けて、足踏み動作における重心の軌道を生成する（ステップＳ２０１）。軌道生成部３０４が、ユーザー指令値に基づいて足踏み軌道を生成する処理については後述する。本実施の形態１においては、軌道生成部３０４が生成する軌道に関して、一歩分の軌道データを以下のようにして定義する。
【００５４】
例えば、左足、右足、左足、右足という順番で足を接地する歩行パターンに関して、左足の一歩とは、左足のみが接地し始めてから、両足が接地して、再び、左足が離床する前までの動作期間を指す。図５（ａ）に示すように、歩行動作における左足の一歩は、左足のみが接地する期間である基準相と、両足が接地する期間である遷移相とを含む。
【００５５】
また、走行動作を行う場合における左足の一歩とは、左足で着地し、左足で踏み切り、右足で着地するまでを指す。ここで、歩行動作と同じデータ構造として扱うため、走行動作を行う場合において、両足が空中に跳躍する空中相を遷移相として、歩行動作の場合と同じように扱うものとする。図５（ｂ）に示すように、走行動作における右足の一歩は、右足のみが接地する期間である基準相と、両足が空中に跳躍する期間である遷移相とを含む。即ち、歩行動作及び走行動作では、遷移相において両足が接地する又は空中に跳躍するという点において異なる。
【００５６】
以上から、軌道生成部３０４が生成する「一歩の軌道データ」は、いずれかの足が接地する基準相と、両方の足が接地又は空中に跳躍する遷移相とからなるデータとして扱うことができる。
【００５７】
ロボット２が転倒しないような安定な軌道は、これら一歩軌道がそれぞれ独立に存在するものではなく、例えば、ある足踏み軌道の一部を取り出したものであると考えることができる。例えば、図５（ａ）に示した左足の一歩は、図５（ｃ）に示す足踏み軌道の一部であるものと考えることができる。図５（ｃ）に示す足踏み軌道は、左足が接地して両足が接地し→右足が接地して両足が接地し→再び左足が接地して両足が接地する、という動作を繰り返す足踏み軌道であり、「左足が接地して両足が接地する」部分の軌道が、図５（ａ）に示した左足の一歩軌道に相当する。
【００５８】
足踏み動作は、ロボットの足が空中に跳躍する相を含まない歩行動作や、空中に跳躍する相を含む走行動作を含む。さらに、足踏み動作は、左足で着地し、左足で踏み切り、右足で着地するという走行動作や、その場で直立するという停止状態などをも含む。即ち、足踏み動作は、走行、歩行、及び停止動作を含む。そこで、軌道生成部３０４は、軌道更新部３０６から次の一歩が要求された場合に、これら走行、歩行、停止のいずれかの動作を指定して、指定した動作からなる足踏み軌道を生成する。尚、足踏み軌道は、その場で足踏み動作を行う際の重心軌道である。
【００５９】
まず、軌道生成部３０４は足踏み軌道を生成するため、ユーザー指令値をユーザー指令記憶部３０２から読み出す。ユーザー指令値としては、以下のパラメータ（１）動作の指定種類（歩行／走行／停止）３２０、（２）動作の取得部分（右足／左足／両足）３２２、（３）動作の移動速度３２４を与えることができ、ここでは、（１）動作の指定種類（歩行／走行／停止）３２０を用いる。
【００６０】
動作の指定種類３２０は、足踏み動作の種類を指定するユーザー指令値であり、歩行、走行、停止のいずれかの動作種類を指定する。また、動作の指定種類３２０は、その場足踏み動作に含まれる各動作について、相対ＺＭＰ軌道や、動作の周期や、足を上げる順序や、足先の接地位置などのデータを含む。これらのデータは、ロボット２の性能や機構が許す範囲内で、ユーザーが任意に与えることができる。
【００６１】
相対ＺＭＰ軌道は、目標ＺＭＰの支持脚の足平の基準点に対する位置の経時的データであって、ユーザーが任意に与えることができる。接地相においては、支持脚となる脚リンクの足平内にＺＭＰが存在していれば、ロボット２は転倒することなく動作を継続することができる。本実施の形態１に係るロボット２では、相対ＺＭＰ軌道を、支持脚の足平の中心に固定するように設定する。このような相対ＺＭＰ軌道が実現される場合、ロボット２は転倒することなく、安定して動作を実現することができる。なお相対ＺＭＰ軌道は、足平の内部に維持されていれば、どのような軌道を与えてもよい。例えば支持脚の足平の内部の後方から前方へ移動するような軌道を用いてもよい。このような相対ＺＭＰ軌道が実現される場合も、ロボット２は転倒することなく、安定して動作を実現することができる。
【００６２】
軌道生成部３０４は足踏み動作における重心の相対軌道を計算する。重心の相対軌道は、後述する周期境界条件の下、目標とする相対ＺＭＰ軌道に基づいて決定される。重心の相対軌道を実現したときの実際の相対ＺＭＰ軌道が、目標とする相対ＺＭＰ軌道に一致するように、重心の相対軌道を計算する。
【００６３】
ここで、重心の相対軌道の計算について説明する。ロボット２が実現する相対ＺＭＰ位置（ｑｘ'，ｑｙ'）は、ロボット２の相対重心位置（ｘ'，ｙ'，ｚ'）と、ロボット２の重心まわりの角運動量（ｒｘ'，ｒｙ'）から計算することができる。ロボット２の相対重心位置とロボットの重心まわりの角運動量から、実際に生じるＺＭＰを計算する下記の式をＺＭＰ方程式と呼ぶ。
【００６４】
【数１】
0004440956.tif 000002
【００６５】
ここで、（１）は時間ｔに関する１階微分を示し、（２）は時間ｔに関する２階微分を示している。また、ｍはロボット２の質量であり、ｇは重力加速度である。上式のｚ'及びｚ'（２）は、ロボットの支持脚の足先を原点とする重心の鉛直方向位置と鉛直方向加速度である。本実施の形態１に係るロボット２の動作では、重心の高さは一定であり質点がｚ'方向に変化しないものと仮定して、ｚ'は一定値とし、ｚ'（２）は０とする。上式のｒｘ'（１）とｒｙ'（１）は、ロボット２の重心まわりの角運動量の変化の影響を示す。本実施の形態１においては、運動の全域にわたって角運動量（ｒｘ'，ｒｙ'）を０とする。
【００６６】
上記数１のＺＭＰ方程式を離散化することによって、重心の水平方向位置（ｘ'、ｙ'）の経時的データを算出する式を導出することができる。ここで言う離散化は、時間ｔに関して単位時間Δｔを用いて行う。例えば重心のｘ'方向の軌道に関しては、下記の三項方程式を得る。
【００６７】
【数２】
0004440956.tif 000003
【００６８】
ここでｘ'ｉとｑｘ'ｉは、それぞれ重心のｘ'方向軌道ｘ'(ｔ)と、ｘ'方向の相対ＺＭＰ軌道ｑｘ'(ｔ)を離散化した変数である。ｉは単位時間で区分した時刻の順序を示す。上記数２は、時刻ｉにおけるＺＭＰのｘ'方向座標ｑｘ'ｉが、直前のｘ'方向座標ｘ'ｉ−１と、そのときのｘ'方向座標ｘ'ｉと、直後のｘ'方向座標ｘ'ｉ＋１から計算できることを示している。係数ａｉ，ｂｉ，ｃｉは、下記によって算出される係数である。
【００６９】
【数３】
0004440956.tif 000004
【００７０】
上記のΔｔはＺＭＰ方程式の離散化に用いる時間幅であり、ｚ'iとｚ'（２）iはそれぞれ重心の鉛直方向の位置と加速度を離散化した変数である。本実施例では、Δｔは動作開始から完了までの時間をｎ等分する時間幅である。
【００７１】
その場足踏み動作は、ロボット２が直立の状態から、ロボット２のバランスを取りつつ、右足を一旦上げて、床面に接地させ、同じくロボット２のバランスを取りつつ、左足を一旦上げて、床面に接地させ、直立の状態に戻る動作である。言い換えると、直立の状態から、ロボット２の脚を交互に駆動させることで、重心を支持させる動作である。このような周期運動であるその場足踏み動作は、その動作を実現するための重心相対軌道を一意に決定することができる。即ち、周期運動をするという周期境界条件（ロボット２の重心位置が、動作の開始及び完了時において循環するという条件）を付け加えることにより、その場足踏みの動作を実現するための一意な重心相対軌道を得ることができる。
【００７２】
上記した関係を整理すると、結局のところ、実現される相対ＺＭＰ軌道が目標とする相対ＺＭＰ軌道と等しくなる、重心のｘ'方向軌道（ｘ'１，ｘ'２，・・・，ｘ'ｎ）は、以下の行列で示される方程式を解くことによって算出することができる。ここで、周期境界条件の下では、下記の行列は、三重対角行列に対して周期境界条件を加えた循環対角行列により構成することができる。
【００７３】
【数４】
0004440956.tif 000005
【００７４】
上記数４において、左辺は行列と列ベクトルの積で表現されており、その行列は重心の鉛直方向成分から計算される係数を持つ行列である。本実施の形態１に係るロボット２の足踏み動作においては、行列は、三重対角行列に周期境界条件を加えた循環対角行列である。周期境界条件とは、１行ｎ列目に係数ａ１を、ｎ行１列目に係数ｃｎをそれぞれ設定することで、ロボット２の重心位置が、動作の開始及び完了時において循環するという条件のことを言う。３重対角行列とは、対角成分とそれに隣接する副対角成分のみが有意な値を備え、それ以外の成分が０である行列のことを言う。言い換えると、周期境界条件の下では、上記数４によって示される連立方程式に関して、目標ＺＭＰの列における最初の要素に関する方程式が重心軌道の列における最後の要素を含み、かつ、目標ＺＭＰの列における最後の要素に関する方程式が重心軌道の列における最初の要素を含むように係数行列の要素が配置される。左辺の列ベクトルは、重心のｘ'方向軌道（ｘ'１，ｘ'２，・・・，ｘ'ｎ）を示す列ベクトルである。右辺の列ベクトルは、目標とする相対ＺＭＰ軌道を備える列ベクトルである。
【００７５】
上記数４において、左辺の循環対角行列の逆行列を算出し、その逆行列と右辺との積を計算することによって、未知数（ｘ'１，ｘ'２，・・・，ｘ'ｎ）を計算することができる。従って、重心のｘ'方向軌道を計算することができる。上記した計算では、試行錯誤的に重心の相対軌道を計算することなく、直接的に目標とする相対ＺＭＰ軌道を満足する重心の相対軌道を計算することができる。上記した計算は少ない計算量で実施することが可能であり、軌道生成部３０４は高速で計算を実施することができる。重心軌道に関する離散化数をｎとする場合には、計算量はＯ（ｎ）となり、非常に高速に解を求めることができる。軌道生成部３０４は、重心の相対軌道を実現したときの実際の相対ＺＭＰ軌道が、目標とする相対ＺＭＰ軌道に一致するように、重心の相対軌道を計算する。
【００７６】
ｙ'方向の重心軌道（ｙ'１，ｙ'２，・・・，ｙ'ｎ）についても、周期境界条件の下で、ｙ'方向の相対ＺＭＰ位置（ｑｙ'１，ｑｙ'２，・・・，ｑｙ'ｎ）から、ｘ'方向の重心軌道（ｘ'１，ｘ'２，・・・，ｘ'ｎ）と同様にして算出することができる。
【００７７】
軌道生成部３０４は、上述した処理を実施することによって、足踏み動作における重心の軌道を生成することができる。上記の処理によって生成される重心の軌道を実現することで、ロボット２はＺＭＰを支持脚の足平の内部に維持しながら、その場足踏み動作を実現することができる。
【００７８】
図４に戻って説明を続ける。次いで、軌道生成部３０４は、足踏み軌道を、ユーザー指令値によって指定される一歩の軌道に分解して、その一歩軌道を取得する（ステップＳ２０２）。
【００７９】
軌道生成部３０４は足踏み軌道を分解して一歩軌道データを取得するため、まず、ユーザー指令値をユーザー指令記憶部３０２から読み出す。ここで、ユーザー指令値として、（２）動作の取得部分（右足／左足／両足）３２２を用いる。動作の取得部分３２２は、足踏み軌道に含まれる取得対象とする一歩部分を指定するユーザー指令値であり、右足、左足、両足のいずれかの取得部分を指定する。
【００８０】
例えば、歩行動作を継続させたい場合には、歩行動作を含む足踏み動作を指定して、生成した足踏み軌道から歩行動作における一歩軌道を取得する。このとき、足踏み軌道の状態には、右足により支持している状態と、左足により支持している状態と、両足により支持している状態があり、そのうちのどの状態が欲しいのかということを指定する。例えば、左足の一歩が欲しいのであれば、足踏み軌道のうち、左足の一歩に相当する部分の軌道を取得する。
【００８１】
次いで、軌道生成部３０４は、取得した一歩軌道データに対して移動速度を重畳する（ステップＳ２０３）。一歩軌道データの末尾の条件に移動速度を追加し、後述するように、軌道更新部３０６により更新処理が行わることで、所望の移動速度や移動方向を満足する軌道データを得ることができる。
【００８２】
軌道生成部３０４は移動速度を重畳するため、ユーザー指令値をユーザー指令記憶部３０２から読み出す。ここで、ユーザー指令値として、（３）動作の移動速度３２４を用いる。動作の移動速度３２４は、一歩軌道データに対する移動速度を指定するユーザー指令値である。軌道生成部３０４により生成された一歩軌道は、その場足踏み動作における軌道であるため、その移動速度は０である。このため、次の一歩軌道データについて、例えば前進方向に移動速度を時速３ｋｍとして指定する場合には、前進時速３ｋｍを指定して追加し、軌道更新部３０６へと与える。
【００８３】
次いで、軌道生成部３０４は、軌道更新部３０６に対して、移動速度を重畳した一歩軌道データを与える（ステップＳ２０４）。
【００８４】
以上の操作により、軌道更新部３０６に与える一歩軌道データを生成することができる。軌道生成部３０４により生成された一歩軌道データは、指定した周期運動（例えば足踏み運動）を満足する一意な重心軌道及び境界条件を備えている。後述するように、この一歩軌道データを軌道更新部３０６が更新して、軌道再生部３０８へと与えることで、任意の歩行・走行動作を実現することができる。
【００８５】
続いて、軌道生成部３０４により生成・取得された一歩軌道データが軌道更新部３０６に与えられた場合に、軌道更新部３０６がこの一歩軌道データを更新する方法について説明する。軌道生成部３０４により生成された一歩軌道データの末尾には、指定された移動速度Ｖが追加される。ここで、軌道生成部３０４により足踏み軌道が生成されて一歩軌道が取得されたときには、一歩軌道データには既に重心の移動速度ｖが存在している。軌道生成部３０４により指定された移動速度Ｖが移動速度ｖに対して加算され、軌道更新部３０６において、加算された後の移動速度（ｖ＋Ｖ）を用いて再び一歩軌道を求解する。
【００８６】
以下では、軌道更新処理について詳細に説明する。本実施の形態１に係るロボット２では、軌道更新部３０６に格納されている複数歩数分の軌道データについて、重心の軌道が滑らかに変化するように、ロボット２の動作を計算する。このように動作を計算することで、例えばロボット２が支持脚を入れ替える場合であっても、ロボット２の重心位置は滑らかに推移し、ロボット２は安定した動作を実現する。軌道生成部３０４により生成された一歩軌道データの開始時の重心のｘ'方向速度ｖｘ'１は、分割時間幅Δｔと、重心の位置ｘ'１及びｘ'２とを用いて、以下によって表現される。
【００８７】
【数５】
0004440956.tif 000006
【００８８】
同じように、軌道生成部３０４により生成された一歩軌道データの終了時における重心のｘ'方向速度ｖｘ'ｎは、分割時間幅Δｔと、重心の位置ｘ'ｎ−１、ｘ'ｎと、以下の関係がある。
【００８９】
【数６】
0004440956.tif 000007
【００９０】
軌道生成部３０４により生成された一歩軌道データの開始時における重心のｘ'方向速度ｖｘ'１は、軌道更新部３０６に既に格納されている軌道データから計算することができる。軌道生成部３０４により生成された一歩軌道データの終了時における重心のｘ'方向速度ｖｘ'ｎは、ｖｘ'ｎ＝ｖ＋Ｖとして設定する。
【００９１】
上記した関係を整理すると、結局のところ、実現される相対ＺＭＰ軌道が目標とする相対ＺＭＰ軌道と等しくなる、歩行動作における重心のｘ'方向軌道（ｘ'１，ｘ'２，・・・，ｘ'ｎ）は、以下の三重対角行列で示される方程式を解くことによって算出することができる。
【００９２】
【数７】
0004440956.tif 000008

【００９３】
上記数７において、左辺は行列と列ベクトルの積で表現されており、その行列は重心の鉛直方向軌道から計算される係数を持つ３重対角行列である。３重対角行列とは、対角成分とそれに隣接する副対角成分のみが有意な値を備え、それ以外の成分が０である行列のことを言う。左辺の列ベクトルは、重心のｘ'方向軌道（ｘ'１，ｘ'２，・・・，ｘ'ｎ）を示す列ベクトルである。右辺の列ベクトルは、目標とする相対ＺＭＰ軌道と、開始時における重心のｘ'方向速度ｖｘ'１に単位時間Δｔを乗じて距離に変換した値ｖｘ'１Δｔと、終了時における重心のｘ'方向速度ｖｘ'ｎに単位時間Δｔを乗じて距離に変換した値ｖｘ'ｎΔｔとを備える列ベクトルである。
【００９４】
上記数７において、左辺の３重対角行列の逆行列を算出し、その逆行列と右辺との積を計算することによって、未知数（ｘ'１，ｘ'２，・・・，ｘ'ｎ）を計算することができる。従って、重心のｘ'方向軌道を計算することができる。上記した計算では、試行錯誤的に重心の相対軌道を計算することなく、直接的に目標とする相対ＺＭＰ軌道を満足する重心の相対軌道を計算することができる。上記した計算は少ない計算量で実施することが可能であり、軌道更新部３０６は高速で計算を実施することができる。
【００９５】
ｙ'方向の重心軌道（ｙ'１，ｙ'２，・・・，ｙ'ｎ）についても、ｘ'方向の重心軌道（ｘ'１，ｘ'２，・・・，ｘ'ｎ）と同様にして算出することができる。
【００９６】
以上説明したように、本実施の形態１に係るロボット２では、まず、指定する足踏み動作における重心軌道を計算する。次いで、計算された足踏み軌道のうち、指定する一歩相当の軌道を取得する。次いで、取得した一歩分の足踏み軌道に移動速度を重畳することで、任意の一歩軌道を生成する。このようにして生成した一歩軌道に基づいて、ロボット２は関節角を変更して動作する。
【００９７】
このように、本実施の形態１に係るロボット２では、足踏み軌道を計算する際に、所望の移動速度を重畳することで、ＺＭＰ条件を完全に満足する重心軌道を求解することができる。即ち、求められた重心軌道に基づいて計算される足の着地位置は、もともとの足踏み軌道に対して指定した移動速度を反映したものとなり、ＺＭＰ位置が最適な着地位置となっているものである。また、このような手法によれば、足の着地位置を指定することなく、指定した移動速度を実現するために最適な着地位置を生成することができる。
【００９８】
図６は、本実施の形態１に係る軌道生成処理を示す概念図である。図６は、ロボット２の足平を示す上面図である。ロボット２の足平の中心には、それぞれ基準点Ｌ０、Ｒ０が設けられている。基準点Ｌ０、Ｒ０は、ロボット２の動作パターンを生成する際の基準となる点である。まず、軌道生成部３０４は、その場足踏み動作における重心軌道を生成する。すると、図６（ａ）に示すような、左右に周期的に振れながら動く足踏み動作における重心の軌道Ｄ１を得ることができる。次いで、軌道生成部３０４は、得られた足踏み軌道データを分解し、例えば図６（ｂ）に示すような、軌道データＤ２及びＤ３を得る。次いで、軌道生成部３０４により、所望の軌道データを取得した上で移動速度が追加され、軌道更新部３０６により、軌道データがその移動速度に応じて更新される。すると、例えば、図６（ｃ）に示すような、指定した移動速度及び方向に応じた軌道Ｄ４を得ることができる。この軌道に従って、ロボット２の着地位置を決定することができる。
【００９９】
また、本実施の形態１に係るロボット２は、軌道生成処理に係る構成が柔軟なものであり、最も安定な足の接地位置を容易に得ることができる。即ち、本実施の形態１に係るロボット２によれば、ロボット２に対する動作入力を、足を接地する位置から移動速度へと抽象化することができる。このため、足の接地位置を指定する必要がなくなり、動作指令が簡潔となり、軌道生成処理に係る構成を柔軟なものとすることができる。
【０１００】
従来では、足の着地位置を予め指定するため、新たに生成する軌道が重心位置・速度に関して以前の軌道と連続するように求めることが困難であった。従来では、最小二乗法を用いて連続する軌道の近似解を得るものであったが、例えば重心軌道が急峻に変化する場合には、求められた軌道が実現不可能なものとなる虞がある。
【０１０１】
以下に、図７及び図８を用いて、従来手法と本手法による効果の違いについて説明する。図７及び図８は、例えばジョイスティックを用いたユーザー操作により、ロボット２を操作する場合の動作例を示す図である。
【０１０２】
図８は、従来技術にかかるロボット２の動作の概要を説明するための図である。図８は、ロボット２の足平を示す上面図である。ロボット２の足平の中心には、それぞれ基準点Ｌ０、Ｒ０が設けられている。基準点Ｌ０、Ｒ０は、ロボット２の動作パターンを生成する際の基準となる点である。白抜矢印は、ロボット２に対する指令方向・速度を示す。図８（ａ）において、ロボット２に対して白抜矢印ＦＲに示す指令方向・速度がユーザーより指令された場合に、ロボット２は図８（ｂ）に示すように、次の一歩目を含む複数の歩数分の着地位置を仮定して重心軌道を生成する。図８（ｂ）においては、１歩目、２歩目、及び３歩目の着地位置を仮定し、重心軌道が生成される。
【０１０３】
図８（ｂ）に示した着地位置を仮定して重心軌道を生成した後に、指令速度を変化させる場合を想定する。ユーザーにより、ロボット２に対して白抜矢印ＢＲに示す指令方向・速度が指令された場合には、従来技術では、今までの指令値の情報をもとに、経験的に実現可能と思われる目標着地位置を計算する必要があった。即ち、白抜矢印ＢＲに示すように、後方へと足の位置を変更するような移動速度・方向が指令された場合には、それ以前に生成済みの重心軌道とは連続につながらないものとなるため、指令値のみではどのような着地位置を与えれば実現可能な軌道を生成可能であるかが不明であった。このため、経験的に実現可能と思われる目標着地位置を計算するものとしていた。従って、図８（ｃ）においては、経験的に２歩目、３歩目、及び４歩目の着地位置を仮定する必要があり、これらの着地位置に基づいては、指令変化に対応して柔軟に新たな重心軌道を生成することができないものであった。
【０１０４】
本実施の形態１に係るロボット２では、足の着地位置を指定することなく、移動速度・方向を指定することで軌道データを更新することができる。これは、軌道データの更新において、その場足踏み軌道における一歩軌道を、指定速度に基づく速度条件の下でＺＭＰ方程式を求解する構成としたことによる。即ち、まず、軌道生成部３０４において、もともとの足踏み動作に関して周期境界条件の下で足踏み軌道を生成する。次いで、軌道更新部３０６において、生成した足踏み軌道における一歩軌道を指定した速度条件の下で更新することで、指定移動速度を反映した軌道を生成する。これによって、次の一歩に関する足の着地位置を要求に応じて柔軟に計算することができる。
【０１０５】
図７は、本実施の形態１に係るロボット２の動作の概要を説明するための図である。図７は、ロボット２の足平を示す上面図である。ロボット２の足平の中心には、それぞれ基準点Ｌ０、Ｒ０が設けられている。基準点Ｌ０、Ｒ０は、ロボット２の動作パターンを生成する際の基準となる点である。白抜矢印は、ロボット２に対する指令方向・速度を示す。図７（ａ）において、ロボット２に対して白抜矢印ＦＲに示す指令方向・速度がユーザーより指令された場合に、ロボット２は図７（ｂ）に示すように、指令方向・速度に応じて、次の一歩の重心軌道を生成して、その着地位置を決定する。図７（ｂ）においては、次の１歩の重心軌道のみが与えられる。
【０１０６】
図７（ｂ）に示した着地位置を決定して、１歩目へと足を着地させた場合を想定する。１歩目への着地後に指令速度を変化させ、ロボット２に対して白抜矢印ＢＲに示す指令方向・速度がユーザーより指令された場合には、本実施の形態１に係るロボット２では、与えられた指令方向・速度を実現するため、足を前方に接地する一歩軌道を生成する。即ち図７（ｃ）に示す２歩目の着地位置を決定する。続いて３歩目を決定する際には、このように２歩目の着地位置を前方へと決定したことで、実現可能な安定な軌道に基づく３歩目の着地位置を後方へと容易に決定することができる。従って、本実施の形態１に係るロボット２では、与えられた指令方向・速度が変化した場合においても、与えられた指令方向・速度に応じて接地位置が変化することで、安定な軌道を柔軟に実現することができる。
【０１０７】
また、例えばジョイスティックを用いたユーザー操作によりロボット２を操作する場合に、本実施の形態１に係るロボット２では、移動速度を指定する（移動速度の変更要求を指令する）ことにより、次の一歩を得ることができる。このため、ロボット２は次の一歩の要求に対してリアルタイムで応答することができ、即応性に優れたものである。従って、例えば、ロボット２が前方に傾斜して前向きの速度が発生している場合には、ロボット２は状態を安定化するため、その速度に応じた一歩を容易に得ることができるため、フィードバック制御をより容易に実行することができる。
【０１０８】
さらにまた、本実施の形態１に係るロボット２では、足踏み動作に関して、周期境界条件の下で軌道生成処理を実行することで、予め速度境界条件を指定することなく、重心の上下動を伴う軌道を容易に生成することできる。
【０１０９】
さらにまた、本実施の形態１に係るロボット２では、次の一歩軌道についての軌道生成処理と、軌道更新部３０６に格納する軌道データの更新処理についてＺＭＰ方程式を求解すればよいため、計算量が少なく、高速に軌道生成を実行することができる。
【０１１０】
また、本実施の形態１に係るロボット２では、軌道再生部３０８に格納する軌道データが所定時間区間分以下となった時点で次の軌道データを要求する。要求を受けた場合に、軌道更新部３０６は、軌道更新部３０６に格納する軌道データが所定時間区間分以下となった時点で次の軌道を生成要求する。要求を受けた場合に、軌道生成部３０４が次の一歩軌道データを生成する構成としている。これにより、次の一歩軌道データの生成要求を、ロボット２が次の一歩軌道データを必要とする直前まで留保することができ、リアルタイムで軌道生成処理を実行することができる。
【０１１１】
尚、本実施の形態１に係るロボット２では、足の位置関係について判定を行うようにしてもよい。これにより、例えば、生成された軌道が足の可到達範囲を超えた位置であるか否かを判定することができ、実現不可能な軌道となることを容易に回避することができる
【０１１２】
その他の実施の形態．
尚、上述した実施の形態１においては、軌道生成部３０４が一歩相当の軌道データを生成するものとしたが本発明はこれに限定されず、取得する軌道データは、一歩部相当分よりも短い時間区分に対応する部分の軌道データを取得するようにしてもよい。
【０１１３】
また、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【図面の簡単な説明】
【０１１４】
【図１】本発明の実施の形態にかかる脚式ロボットの構成図である。
【図２】本発明の実施の形態にかかる脚式ロボットの構成を示す機能ブロック図である。
【図３】本発明の実施の形態に係る脚式ロボットの制御部が行う処理を示すフローチャートである。
【図４】本発明の実施の形態に係る軌道生成処理を示すフローチャートである。
【図５】本発明の実施の形態に係る軌道データの一例を示す図である
【図６】本発明の実施の形態に係る軌道生成処理を示す概念図である。
【図７】本発明の実施の形態に係る脚式ロボットの動作の概要を示す図である。
【図８】従来の脚式ロボットの動作の概要を示す図である。
【符号の説明】
【０１１５】
２  脚式ロボット、４  体幹、６  左脚リンク、８  右脚リンク、１０  制御部、
１２  コントローラ、
３０２  ユーザー指令記憶部、３０４  軌道生成部、
３０６  軌道更新部、３０８  軌道再生部、３１０  関節駆動部
【図１】
0004440956.tif 000009
【図２】
0004440956.tif 000010
【図３】
0004440956.tif 000011
【図４】
0004440956.tif 000012
【図５】
0004440956.tif 000013
【図６】
0004440956.tif 000014
【図７】
0004440956.tif 000015
【図８】
0004440956.tif 000016