(57)【特許請求の範囲】
【請求項１】
脚式ロボットの歩容データを生成する方法であり、
脚式ロボットのＺＭＰ方程式において、脚式ロボットの脚の動作に起因して重心回りに作用する動作依存モーメント項に予め定められた初期値を代入して重心と足の目標軌道を決定する第１ステップと、
夫々の脚を１個の質点でモデル化し、第１ステップで得られた重心と足の目標軌道に質点モデルを適用して重心の目標軌道上の各時刻における重心回りの角運動量を算出する第２ステップと、
第２ステップで算出された各時刻における角運動量から、時刻間の角運動量変化に相当する角運動量変化相当モーメントを算出する第３ステップと、
前記ＺＭＰ方程式の動作依存モーメントの項に第３ステップで算出された角運動量変化相当モーメントを代入して重心と足の目標軌道を再決定する第４ステップと、
を含むことを特徴とする脚式ロボットの歩容データ生成方法。
【請求項２】
第１ステップで得られた重心と足の目標軌道に代えて第４ステップで得られた重心と足の目標軌道を用い、第２ステップから第４ステップを複数回繰り返すことを特徴とする請求項１に記載の歩容データ生成方法。
【請求項３】
請求項１又は２の方法を実行することによって重心と足の目標軌道を生成し、生成された目標軌道に追従するように脚関節を制御するコントローラと、
歩行動作中に体幹の姿勢角を検出するセンサと、を備えており、コントローラは、
検出された姿勢角を体幹の目標姿勢角に近づける方向に作用する重心回りのフィードバックモーメントを第１ステップと第４ステップにおけるＺＭＰ方程式の動作依存モーメントの項に加算することを特徴とする脚式ロボット。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、脚式ロボットとそのための歩容データ生成方法に関する。
【背景技術】
【０００２】
脚式ロボットを歩行させるための脚関節角の目標軌道を規定するデータは、歩容データと呼ばれる。歩容データは、脚の各関節の目標関節角の時系列データで表されるか、または、体幹の目標位置と各足の目標位置の時系列データで表される。両者は基本的に等価である。これは、脚の関節角と、体幹の位置及び足の位置の組が、ロボット工学におけるいわゆる順キネマティクス変換（又は逆キネマティクス変換）によって一意に対応するからである。また、体幹の目標位置の時系列データの代わりに、脚式ロボットの重心の目標位置の時系列データであってもよい。重心の位置と足の位置の組は、重心ヤコビアンと呼ばれる変換行列を用いることによって、関節角に変換することができることが知られている。本明細書では、歩容データは、脚式ロボットの重心と各足の目標位置の時系列データで記述されるものとして説明する。
【０００３】
なお、「体幹の目標位置」には、体幹の目標姿勢角（いわゆるロール角、ピッチ角、及びヨー角）を含む。「足の目標位置」も同様である。脚式ロボットが質点でモデル化される場合は、目標位置には姿勢角は含まれない。「重心の目標位置」の場合も、姿勢角は含まれない。
【０００４】
以下では、説明を簡単にするために、脚式ロボットを単に「ロボット」と称する場合がある。また、目標位置の時系列データを「目標軌道」と称する場合がある。
【０００５】
歩容データが適切でないと、ロボットは安定に歩行することができない。特に２脚を有する人型のロボットでは、歩容データが適切でないと転倒する虞がある。安定歩行を実現するための歩容データを生成するための一つの技術として、１９７２年にユーゴスラビアのブコブラトビットによってＺＭＰ（Ｚｅｒｏ  Ｍｏｍｅｎｔ  Ｐｏｉｎｔ）が考案された。ＺＭＰは、ロボットに作用する重力と、ロボットの動作に起因して生じる慣性力との合力が歩行面と交わる点を意味する。ＺＭＰが足面内（複数の足が接地している場合には、接地している全ての足面の縁を結んだ面内であり、支持面と称される場合がある）に存在すればロボットは転倒しない。即ち、ＺＭＰが支持面内に存在するように歩容データを生成すれば、ロボットは安定に歩行することができる。
【０００６】
ＺＭＰを求めるための式はＺＭＰ方程式と呼ばれる。ＺＭＰ方程式とは、歩行面上の特定位置Ｐを基準とした上記合力の釣り合い方程式であり、ＺＭＰ方程式を満足する特定位置Ｐが即ちＺＭＰに相当する。並進力は、特定位置Ｐを中心とするモーメントで表すことができる。そのため、ＺＭＰ方程式は、「動作依存モーメント」＋「重心位置依存モーメント」＋「重力依存モーメント」＝０という形式で表すと簡単である。ここで、「動作依存モーメント」とは、ロボットの動作に起因してロボットの重心周りに作用するモーメントを表す。「重心位置依存モーメント」は、重心の並進運動に起因する特定位置Ｐ（ＺＭＰ）回りのモーメントを表す。「重力依存モーメント」は、重心に作用する重力に起因する特定位置Ｐ（ＺＭＰ）回りのモーメントを表す。「動作依存モーメント」と「重心位置依存モーメント」がロボットの慣性力に相当する。
【０００７】
ＺＭＰ方程式を解くことは簡単ではない。脚の関節角の軌道が定まらないと動作依存モーメントが定まらず、ＺＭＰ方程式を解析的に解くことはできない。他方、ＺＭＰ方程式を解いてＺＭＰを定めないと、安定歩行のための足の位置を定めることができず、従って脚の関節角の軌道が定まらない。脚の関節角の軌道が定まらないと、動作依存モーメントを定めることができない。即ち、ＺＭＰ方程式では、方程式の数よりも未知数の数の方が多い。そこで、たとえば特許文献１に開示された技術では、動作依存モーメントをゼロとしてＺＭＰ方程式を解いている。また、特許文献２の技術では、体幹の姿勢角と各足の目標軌道を仮に決定してＺＭＰ方程式を解き、体幹の目標軌道を求める。仮に決定した足の目標軌道と体幹の目標軌道から動作依存モーメントを算出し、算出された動作依存モーメントを使って再びＺＭＰ方程式を解く。そして、仮に決定した足の目標軌道が、動作依存モーメントを考慮したＺＭＰ方程式を満足するように、先に求めた体幹の目標軌道を修正する。なお、特許文献２では、ロボットを体幹２点、両足２点、及び、両膝２点の合計６点の質点でモデル化して動作依存モーメントを算出している。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００４−１１４２４３号公報
【特許文献２】特開２００９−１９５９９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
特許文献１の技術では動作依存モーメントをゼロと仮定してＺＭＰ方程式を解くので正確なＺＭＰを求めることができない。そのため、安定歩行を保証するために何らかの対策が必要となる。例えば、支持面の内周にマージンを確保し、マージンより内側にＺＭＰが位置するように歩容データを作成するなどの対策が必要となる。
【００１０】
特許文献２の技術では、体幹の姿勢角と各足の目標軌道を先に決定する必要がある。また、特許文献１と２以外の方法としては、各足の目標軌道と、体幹或いは重心の目標軌道を変化させながら、ＺＭＰ方程式を繰り返し計算する手法が考えられる。しかしそのような方法は効率が悪い。特に、多くの関節（少なくとも股関節と膝関節及び足首関節）を有する脚式ロボットでは、逆キネマティクス変換（体幹と足の位置（姿勢）から関節角を求める変換）は計算量が多い。そのため、歩行中にリアルタイムに歩容データを生成する脚式ロボットには、複雑な逆キネマティクス演算の繰り返しを含む歩容データ生成は不向きである。なお、例えば、方向経路をリアルタイムに変更可能なロボットでは、歩行中に歩容データをリアルタイムで生成する必要がある。
【００１１】
本明細書は、動作依存モーメントを考慮したＺＭＰ方程式に基づく歩容データを効率よく生成する一つの技術を提供する。そのような効率のよい歩容データ生成方法は、計算負荷を軽減することができるので、リアルタイム演算、即ち脚式ロボットに実装するのに好適である。さらに本明細書は、提案する歩容データ生成方法をさらに向上させ、歩行中の体幹の姿勢角を目標姿勢角に追従させる動作を含む歩容データを効率よく生成するための技術を提供する。
【課題を解決するための手段】
【００１２】
本明細書が開示する一つの歩容データ生成方法は、次のステップを含む。
（１）第１ステップ：ＺＭＰ方程式において、脚式ロボットの脚の動作に起因して重心回りに作用する動作依存モーメント項に予め定められた初期値を代入して重心と足の目標軌道を決定する。ここで、ＺＭＰ方程式は、前述したように、脚式ロボットの慣性力を、脚の動作に起因して脚式ロボットの重心周りに作用する動作依存モーメントと重心の並進運動とで表したものである。また、初期値は、典型的にはゼロであってよい。
（２）第２ステップ：脚式ロボットの質点モデルを第１ステップで得られた重心と足の目標軌道に適用し、質点の運動に起因して生じる重心の目標軌道上の各時刻における重心回りの角運動量を算出する。ここで、質点モデルは、夫々の脚を１個の質点でモデル化したものを用いる。なお、「質点モデルを目標軌道に適用する」とは、質点モデルで表される脚式ロボットの目標軌道に従った運動をシミュレーションすることを意味する。質点は、、膝方向に一定距離オフセットした座標点に定めることが好ましい。質点をそのように設定することによって、１個の質点で脚の運動を良く近似することができる。
（３）第３ステップ：第２ステップで算出された各時刻における角運動量から、時刻間の角運動量変化に相当する角運動量変化相当モーメントを算出する。
（４）第４ステップ：ＺＭＰ方程式の動作依存モーメントの項に第３ステップで算出された角運動量変化相当モーメントを代入して重心と足の目標軌道を再決定する
【００１３】
上記の歩容データ生成方法は、脚式ロボットの夫々の脚を１個の質点でモデル化する。そのため、逆キネマティクスを解いて脚の関節角を求めることなく、動作依存モーメントを質点の並進運動から直接求めることができる。即ち、動作依存モーメントを高速に計算することができる。
【００１４】
また、上記の方法では、まず既定の初期値を用いてＺＭＰ方程式を解き、重心と足の目標軌道を決定し、決定された目標軌道から３質点モデルを用いて動作依存モーメントを算出し、算出された動作依存モーメントを用いて再びＺＭＰ方程式を解く。各脚１質点の２質点モデルに基づくものではあるが動作依存モーメントを考慮しているので、第４ステップにおけるＺＭＰ方程式の求解では、正確なＺＭＰに基づく足の目標軌道を生成することができる。なお、第１ステップで得られた重心と足の目標軌道に代えて第４ステップで得られた重心と足の目標軌道を用い、第２ステップから第４ステップを複数回繰り返すことも好適である。
【００１５】
本明細書が開示する他の一つの技術は、体幹の姿勢角と目標姿勢角の差を考慮した歩容データをリアルタイムに生成し、体幹の姿勢角を目標姿勢角に追従させることのできる脚式ロボットを提供する。その脚式ロボットは、上記した歩容データ生成方法を実行することによって重心と足の目標軌道を生成し、生成された目標軌道に追従するように脚関節を制御するコントローラと、歩行動作中に体幹の姿勢角を検出するセンサを備える。このコントローラは、上記した歩容データ生成方法を実行する際、検出された姿勢角を体幹の目標姿勢角に近づける方向に作用する重心回りのフィードバックモーメントを第１ステップと第４ステップにおけるＺＭＰ方程式の動作依存モーメントの項に加算する。
【００１６】
歩行中、体幹の姿勢角を目標姿勢角に一致させるためには、そのためのトルクを各関節が出力する必要がある。体幹の姿勢角を目標姿勢角に追従させるために各関節が出力すべきトルクを求めることは計算負荷が高い。上記の脚式ロボットでは、体幹の姿勢角を目標姿勢角に追従させるためのトルクを、重心回りの一つのトルクとして表す。そうしてＺＭＰ方程式を解く。得られた足の目標軌道では、体幹の姿勢角を修正するためのトルクが考慮されている。上記の脚式ロボットは、体幹の姿勢角を目標姿勢角に追従させるためのトルクを関節毎に計算する必要なく、姿勢角を目標姿勢角に追従させる歩容データを生成することができる。上記の脚式ロボットは、姿勢角を目標角に追従させながら歩行することができる。
【００１７】
なお、脚式ロボットが歩容データをリアルタイムで生成する場合、数歩分の歩容データを生成し、その数歩分の歩行中に、次の数歩分の歩容データを生成するように構成される場合がある。その場合、第１ステップで用いる動作依存モーメントの初期値として、前回の歩容データ生成時に算出した角運動量変化相当モーメントを使うことも好適である。
【発明の効果】
【００１８】
本明細書は、動作依存モーメントを考慮したＺＭＰ方程式に基づく歩容データを効率よく生成する一つの技術を提供する。さらに本明細書は、歩行中の体幹の姿勢角を目標姿勢角に追従させるための歩容データのリアルタイム生成しながら歩行することができる脚式ロボットを提供する。
【図面の簡単な説明】
【００１９】
【図１】第１実施例の脚式ロボットの模式図を示す。
【図２】ＺＭＰを説明する図である。
【図３】脚式ロボットの質点モデルを説明する図である。
【図４】脚式ロボットのコントローラのブロック図を示す。
【図５】コントローラが実行する処理のフローチャートを示す。
【図６】第２実施例の脚式ロボットの模式図を示す。
【図７】第２実施例の脚式ロボットのコントローラのブロック図を示す。
【図８】第２実施例のコントローラが実行する処理のフローチャートを示す。
【実施例１】
【００２０】
図１に、第１実施例の脚式ロボット１０の模式図を示す。以下、脚式ロボット１０を簡単のためロボット１０と称する。ロボット１０は、体幹１４に２本の脚（右脚１２Ｒ、左脚１２Ｌ）が連結された人型のロボットである。体幹１４にはコントローラ１８が内蔵されている。夫々の脚は、人の脚を模した多リンク構造を有している。脚の各関節にはモータ（不図示）が内蔵されている。コントローラ１８は、上位のコントローラ（不図示）からの移動指令に基づいて、数歩分の歩容データをリアルタイムに生成し、歩容データに沿ってロボット１０が動作するようにモータを制御する。数歩分の歩容データに基づいて歩行している間に、次の数歩分の歩容データを生成する。
【００２１】
ロボット１０の歩容データについて説明する。ロボット１０の歩容データは、ロボット全体の重心Ｇの目標軌道ＢＧと、各足１３Ｒ、１３Ｌの目標軌道ＢＦＲ、ＢＦＬで表される。目標軌道は、重心Ｇ或いは各足１３Ｒ、１３Ｌの目標位置の時系列データである。重心Ｇには姿勢が定義されないので、目標軌道ＢＧは、絶対座標系ＸＹＺにおける重心Ｇの座標値で与えられる。右足１３Ｒには姿勢（ロール角、ピッチ角、及び、ヨー角）が定義されるので、目標軌道ＢＦＲには、重心固定の座標系に対する足の座標と重心固定の座標系の各軸に対する足のロール角、ピッチ角、及びヨー角が含まれる。左足１３Ｌの目標軌道ＢＦＬについても同様である。なお、足の位置は、足固定の座標系の原点で定義され、足の姿勢は、重心固定の座標系に対する足固定座標系の回転角で定義される。重心の目標軌道ＢＧ（即ち、重心Ｇの各時刻における目標位置の時系列データ）と足の目標軌道（即ち、足１３Ｒ、１３Ｌの各時刻における目標位置（姿勢含む）の時系列データ）が定まると、逆キネマティクス演算によって各時刻の各関節の目標角が定まる。なお、重心位置と足位置（或いはロボットの他の部位）からロボット各関節の角度を求める逆キネマティクス変換には「重心ヤコビアン」と呼ばれる行列が用いられる。以上の事項は、ロボット工学の分野では良く知られているので詳しい説明は省略する。以下、図面における絶対座標系ＸＹＺは、進行方向がＸ軸に相当し、Ｚ軸が鉛直方向に相当する。絶対座標系の原点は歩行面上に設定している。
【００２２】
ＺＭＰとＺＭＰ方程式について概説する。図２は、ロボット１０を、重心Ｇに位置する質点とみなしたときの重心Ｇに作用する力を示している。なお、図２は、ＸＺ平面における力を示している。以下、ＸＺ平面について説明するが、ＸＹ平面、ＹＺ平面についても同様である。重心Ｇは、ロボット１０全体の質量に相当する質量Ｍを有する。符号Ｘｇ、Ｚｇは夫々、重心ＧのＸ座標とＺ座標を示している。符号ｄｄＸｇ、ｄｄＺｇは夫々、重心ＧのＸ方向の加速度、Ｚ方向の加速度を示している。即ち、符号ｄｄＸｇの「ｄ」は、一回微分を表す。符号ｇは重力加速度を示している。なお、鉛直上方を正に取るので、下向きの重力ベクトルは「−ｇ」で表される。符号ｄＰｙは、ロボットの動作に起因して生じる重心Ｇ周りのモーメントを示している。このモーメントが動作依存モーメントに相当する。動作依存モーメントは、関節駆動により各部分が動くことによって生じる。
【００２３】
符号ＸＺＭＰは、ＺＭＰのＸ座標値を示している。ＺＭＰは、ロボットに作用する重力と、ロボットの動作に起因して生じる慣性力との合力が歩行面と交わる点であるから、本実施例におけるＺＭＰのＺ座標値は常にゼロである。ＸＺ平面内におけるＺＭＰ回りの釣り合い方程式、即ちＺＭＰ方程式は、次の（数１）で与えられる。
【００２４】
【数１】
0005440152.tif 000002
【００２５】
（数１）において、左辺第１項は、重心Ｇの並進運動に起因するＺＭＰ回りの重心位置依存モーメントに相当する。左辺第２項は、ロボット１０の各部の動作に起因して重心Ｇ回りに作用する動作依存モーメントに相当する。即ち、（数１）では、動作依存モーメントをｄＰｙで一括して表している。左辺第３項は、重心Ｇに作用する重力に起因するＺＭＰ回りの重力依存モーメントに相当する。
【００２６】
（数１）をＸＺＭＰについて解くと、次の（数２）が得られる。
【数２】
0005440152.tif 000003
【００２７】
（数２）はＺＭＰのＸ座標（ＸＺＭＰ）の式であるが、ＺＭＰのＹ座標も同様に求めることができる。（数２）によってＺＭＰが求まれば、そのＺＭＰが支持面内に位置するように足の目標軌道を定めることができる。安定した歩行を実現するためには、接地している足が既定する支持面内にＺＭＰが存在するように、足の目標軌道を決めればよい。具体的には例えば、片脚立脚時の立脚の接地面内にＺＭＰが位置するように足の着地位置が定められる。足の位置が足裏面の中心で表されている場合、ＺＭＰが足の着地位置に定められる。遊脚の目標軌道は、立脚の接地面内にＺＭＰが留まるように定められる。
【００２８】
（数２）では、ＺＭＰ（ＸＺＭＰ）と重心位置の軌道（Ｘｇ、Ｚｇ、ｄｄＸｇ、及びｄｄＺｇ）、及び、動作依存モーメントｄＰｙが未知である。従って（数２）を解析的に解くことはできない。特に、動作依存モーメントｄＰｙは関節角の軌道によって定まり、逆に関節角の軌道は足の軌道、即ちＺＭＰが定まらなければ決めることができない。仮に動作依存モーメントｄＰｙが定まれば、重心Ｇの運動に拘束条件を与えることによって（数２）から重心Ｇの目標軌道とＺＭＰを定めることができる。ＺＭＰが定まれば、上記したとおり足の目標軌道を定めることができる。拘束条件は例えば、次の通りである。ＸＹ面内の重心Ｇの軌跡は歩行経路で与えられる。ここで、「軌跡」は速度を含まない。ＸＹ面内の重心Ｇの平均速度は歩行速度で与えられる。鉛直方向の重心Ｇの軌道（ｄｄＺｇ）は、歩行動作のパターンに基づいて予め与えられる。
【００２９】
本実施例のロボット１０は、概ね次の処理によって、目標軌道を生成する。まず、コントローラ１８は、動作依存モーメントｄＰｙに既定の初期値を与えて（数２）に基づき重心Ｇと足の目標軌道を一旦生成する。その後、コントローラ１８は、脚式ロボットの各脚を１質点でモデル化した質点モデルを目標軌道に適用し、動作依存モーメントｄＰｙを求める。さらにコントローラ１８は、求めた動作依存モーメントｄＰｙを（数２）に代入して再び目標軌道を生成する。こうして得られた目標軌道は、ロボット１０の動作依存モーメントを考慮しているので、正確なＺＭＰが得られる。即ち安定な歩容データが得られる。
【００３０】
コントローラ１８が採用する質点モデルを、図３を参照して説明する。図３の符号ＣＲは、右足１３Ｒに固定された座標系を示している。質点モデルでは、右脚１２Ｒを、右足に固定された座標系ＣＲにおいて足１３Ｒから膝方向に一定距離Ｌｏｆｆだけオフセットした座標点ｍＲに位置する１個の質点で表す。その質点の質量は、右脚１２Ｒ全体の質量に略等しく定められる。以下では、符号ｍＲを、右脚１２Ｒをモデル化した質点の位置及び質量の両者の意味で用いる。左脚１２Ｌについても同様にモデル化し、質点ｍＬで表す。
【００３１】
質点の位置は、膝の略前方に設定することが好ましい。発明者の検討によれば、そのような位置に質点を設定することで、１質点であっても脚全体の動きを良く近似できることが判明した。また、質点の位置は、足から概ね膝方向の位置であればよい。
【００３２】
先に説明したように、動作依存モーメントｄＰｙに既知の初期値を与えて（数２）を解くことによって、重心Ｇと足の目標軌道ＢＧ、ＢＦＲ、ＢＦＬが一旦求まる。足の目標軌道が求まると、脚をモデル化した質点ｍＲ、ｍＬの軌道も求まる。質点の目標軌道は、各時刻における質点の位置を示しているから、各時刻における質点の速度も求まる。質点の速度は、時刻間の位置の差分から求まる。各時刻における質点の速度から、質点に起因する各時刻における重心回りの角運動量が求まる。この角運動量は、脚の動作によって生じる重心回りの角運動量の近似値に相当する。図３を用いて具体的に説明する。図３の時刻において、質点ｍＲは速度ｖＲを有し、重心位置Ｇから距離ＤＲ離れている。従って質点ｍＲによる重心Ｇ回りの角運動量Ｐｙｃは次の（数３）で与えられる。
【００３３】
【数３】
0005440152.tif 000004
【００３４】
左脚１２Ｌを表す質点ｍＬについても同様であるから、２個の質点ｍＲ、ｍＬによって生じる重心Ｇ回りの角運動量Ｐｙｃは、次の（数４）で表される。
【００３５】
【数４】
0005440152.tif 000005
ここで、ｖＬ、ＤＬは夫々、質点ｍＬの速度、重心Ｇと質点ｍＬの間の距離を表す。
【００３６】
目標軌道の時刻毎に角運動量Ｐｙｃを求めた後、時刻間の角運動量Ｐｙｃの差分から角運動量変化、即ちモーメントｄＰｙｃが求まる。このモーメントｄＰｙｃが角運動量変化相当モーメントに相当する。
【００３７】
角運動量変化相当モーメントｄＰｙｃは、動作依存モーメントの近似値に相当する。コントローラ１８は、この角運動量変化相当モーメントｄＰｙｃをＺＭＰ方程式（数２）に代入して再びＺＭＰ方程式を解き、目標軌道を求める。なお、コントローラ１８は、再び求めた目標軌道から再度、角運動量変化相当モーメントｄＰｙｃを求め、求めた角運動量変化相当モーメントｄＰｙｃをＺＭＰ方程式に代入して目標軌道を求める処理を数回繰り返す。繰り返す毎に角運動量変化相当モーメントｄＰｙｃは動作依存モーメントの正確な値に近づいていく。即ち、繰り返す毎に、ＺＭＰの精度が向上する。
【００３８】
図４にコントローラ１８のブロック図を示し、図５にコントローラ１８が実行する処理のフローチャートを示す。これらの図を参照してコントローラ１８の処理フローの全体を整理して説明する。コントローラ１８は、メモリ５１、軌道演算部５２、モーメント演算部５３、及び、逆キネマティクス演算部５４を有する。メモリ５１には、ＺＭＰ方程式（数２）を最初に解く際の初期値が格納されている。メモリ５１、軌道演算部５２、モーメント演算部５３が目標軌道生成部５０を構成する。
【００３９】
軌道演算部５２はまず、メモリ５１から初期値を読み出し、読み出した初期値をＺＭＰ方程式（数２）の動作依存モーメントの項ｄＰｙに代入し、重心と足の目標軌道を生成する（Ｓ２）。次にモーメント演算部５３が、得られた目標軌道に脚式ロボットの質点モデルを適用し、質点に起因する重心Ｇ回りの角運動量Ｐｙｃを算出する（Ｓ４）。ステップＳ４では、重心Ｇの目標軌道上の各時刻における重心Ｇ回りの角運動量Ｐｙｃを算出する。こうして角運動量Ｐｙｃの時系列データが得られる。次にモーメント演算部５３は、得られた角運動量Ｐｙｃの時間差分を求め、時刻間の角運動量変化に相当する角運動量変化相当モーメントｄＰｙｃを算出する（Ｓ６）。算出された角運動量変化相当モーメントｄＰｙｃは軌道演算部５２に送られる。軌道演算部５２は、角運動量変化相当モーメントｄＰｙｃをＺＭＰ方程式（数２）の動作依存モーメントの項ｄＰｙに代入し、重心と足の目標軌道を再び生成する（Ｓ８）。ステップＳ８で得られた目標軌道は再びモーメント演算部５３に送られ、ステップＳ４からＳ８の処理が数回繰り返される（Ｓ１０）。繰り返しが終了したときの目標軌道が最終的な目標軌道に相当する。なお、コントローラ１８は、予め定められた回数だけ、Ｓ４からＳ８の処理を繰り返す。
【００４０】
目標軌道生成部５０は、歩行動作数歩分の目標軌道を生成する。生成された目標軌道は逆キネマティクス演算部５４へ送られる。逆キネマティクス演算部５４は、目標軌道における重心位置と足位置から重心ヤコビアンを使って逆キネマティクスを解き、関節角の目標軌道、即ち、各時刻の関節目標角の時系列データを算出する。コントローラ１８は、ロボットの各関節が算出された関節目標角の時系列データに追従するようにモータ６２を制御する。なお、図４のモータ６２は、脚１２Ｌと１２Ｒの全ての関節のモータを意味している。
【００４１】
上記ロボット１０の主な特徴を以下にまとめる。上記のロボット１０は、歩容データを生成する際、脚式ロボットの夫々の脚を１つの質点でモデル化した質点モデルを採用する。それゆえ、逆キネマティクスを解くことなく、足の目標軌道から動作依存モーメントの近似値（即ち角運動量変化相当モーメント）を得ることができる。逆キネマティクスを解く必要がないので、動作依存モーメントの近似値を効率よく高速に求めることができる。そのため、上記した歩容データ生成方法は、オンライン処理に適している。
【００４２】
また、ロボット１０は、一旦算出した目標軌道から質点モデルを使って動作依存モーメントの近似値を求め、その近似値を使って再びＺＭＰ方程式から目標軌道を生成する。その処理を複数回繰り返す。発明者らの検討によると、この繰り返し計算は収束性が良い。
【実施例２】
【００４３】
次に、第２実施例の脚式ロボット２０（ロボット２０）を説明する。図６は、ロボット２０の模式図を示す。このロボット２０は、体幹１４の姿勢角を目標姿勢角に一致させる動作を含む歩容データを生成する。ロボット２０の構造は、姿勢角センサ１５を備える以外は第１実施例のロボット１０と同じであるので説明は省略する。姿勢角センサ１５は、体幹１４の姿勢角を計測する。本実施例における姿勢角とは、鉛直方向に対する体幹１４の長手方向の傾斜角に相当する。
【００４４】
図６に示す直線Ｌ１は、目標とする体幹１４の姿勢角（目標姿勢角）を示しており、直線Ｌ２が体幹１４の実際の姿勢角（姿勢角センサ１５が計測する姿勢角）を示している。符号θは、目標姿勢角と計測された姿勢角の差を示している。
【００４５】
図７にロボット２０のコントローラ２８のブロック図を示し、図８にコントローラ２８が実行する処理のフローチャートを示す。
【００４６】
コントローラ２８は、第１実施例のコントローラ１８に加え、目標姿勢角を格納したメモリ５５と姿勢フィードバック部５６を備える。姿勢フィードバック部５６は、目標姿勢角と計測された姿勢角との差θを小さくする方向に作用する重心回りのフィードバックトルクＴＦＢを算出する（Ｓ２０）。フィードバックトルクＴＦＢは、姿勢角の差θに位置ゲインを乗じたものである。コントローラ２８の軌道演算部５２は、メモリ５１から初期値を読み出し、読み出した初期値にフィードバックトルクＴＦＢを加えた値をＺＭＰ方程式（数２）の動作依存モーメントの項ｄＰｙに代入し、重心と足の目標軌道を生成する（Ｓ２２）。ステップＳ２４とＳ２６は、第１実施例におけるステップＳ４とＳ６と同様である。角運動量変化相当モーメントｄＰｙｃを用いた再度の軌道演算の際、軌道演算部５２は、角運動量変化相当モーメントｄＰｙｃにフィードバックトルクＴＦＢを加えた値をＺＭＰ方程式（数２）の動作依存モーメントの項ｄＰｙに代入し、重心と足の目標軌道を再び生成する（Ｓ２８）。ステップＳ２８で得られた目標軌道は再びモーメント演算部５３に送られ、ステップＳ２４からＳ２８の処理が数回繰り返される（Ｓ３０）。繰り返しが終了したときの目標軌道が最終的な目標軌道、即ち歩容データに相当する。
【００４７】
上記説明した通り、第２実施例のロボット２０は、目標軌道演算の際に、体幹の姿勢角を目標姿勢角に近づけるためのフィードバックトルクを加味している。即ち、生成された目標軌道から導かれる各角関節の目標角の時系列データに、体幹の姿勢角を目標姿勢角に近づけるため成分が含まれている。生成された歩容データに基づいてロボット２０を動作させると、歩行しながら体幹の姿勢角が目標姿勢角に近づく。現実の動作では、体幹の姿勢角が目標姿勢角に完全に一致することはないので、歩行動作中に姿勢角差θを小さくするためのローカルなフィードバックループを備えることが好適である。
【００４８】
上記の説明では、Ｙ軸周りの姿勢角について説明したが、Ｚ軸周りとＸ軸周りの姿勢角についても同様である。また、フィードバックトルクの算出方法、即ち、フィードバック制御ルールは、実施例に示したルール以外のルール（例えばＰＩＤ制御ルール）であってもよい。
【００４９】
第２実施例のロボットの利点を説明する。通常、歩容データには、姿勢角差θ（目標姿勢角と計測された姿勢角の差）は考慮されない。姿勢角差θは、歩容データとは独立に、ローカルなフィードバックループ（フィードバックトルク）で補正される。或いは、ローカルなフィードバックを考慮して歩容データが補正される。いずれの場合も、ローカルなフィードバックループは、生成された歩容データによる歩行制御にとって外乱となる。即ち、ローカルなフィードバックループは、歩行を乱す方向に作用する。上記したロボット２０は、歩容データ生成の過程で姿勢角差を是正するためのフィードバックトルクＴＦＢが考慮されている。即ち、姿勢角差を是正するフィードバックトルクＴＦＢの影響を含めて安定に歩行するための歩容データが生成される。ロボット２０は、従来の脚式ロボットに比べて安定して歩行することができる。
【００５０】
実施例で説明した技術について留意点を述べる。実施例では、オンラインで歩容データを生成するロボットを説明した。上記実施例で説明した歩容データ生成方法は、オフラインで実行することも好適である。
【００５１】
脚を質点でモデル化する際、質点の質量（ｍＲ、ｍＬ）を、脚の質量のｋ倍に設定することも好適である。定数ｋは、質量の調整ゲインであり、約１．５に設定することが好ましい。実施例の脚式ロボットでは、脚全体を１個の質点でモデル化しているため、質点による重心回りの角運動量変化相当モーメント（即ち、動作依存モーメントの近似値）が動作依存モーメントよりも小さくなる傾向がある。調整ゲインｋは、角運動量変化相当モーメントを動作依存モーメントに近づけるために採用される。調整ゲインｋは、脚の質量分布等に応じて適宜に定められる。
【００５２】
第１実施例の脚式ロボットが実行する歩容データ生成方法の特徴は、以下の通り要約することもできる。
（１）第１ステップ： ZMP方程式において、動作依存モーメントの項に予め定められた初期値を代入して重心と足の目標軌道を決定する。ここで、ＺＭＰ方程式は、脚式ロボットの慣性力を、脚の動作に起因して脚式ロボットの重心周りに作用する動作依存モーメントと重心の並進運動で表した歩行面の特定位置（ＺＭＰ）における力の釣り合い式である。
（２）第２ステップ：脚式ロボットの質点モデルを第１ステップで得られた重心と足の目標軌道に適用し、前記質点の運動に起因して生じる重心の目標軌道上の各時刻における重心回りの角運動量を算出する。ここで採用される質点モデルは、夫々の脚を、足に固定された座標系において足から膝方向に一定距離オフセットした座標点に位置する質点でモデル化したものである。
（３）第３ステップ：第２ステップで算出された各時刻における角運動量から、時刻間の角運動量変化に相当する角運動量変化相当モーメントを算出する。
（４）第４ステップ：ＺＭＰ方程式の動作依存モーメントの項に第３ステップで算出された角運動量変化相当モーメントを代入して重心と足の目標軌道を再決定する。
（５）第５ステップ：第１ステップで得られた重心と足の目標軌道に代えて第４ステップで得られた重心と足の目標軌道を用い、第２ステップから第４ステップを複数回繰り返す。
【００５３】
以上、本発明の具体例を詳細に説明したが、これらは例示に過ぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。
本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成し得るものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【００５４】
１０、２０：脚式ロボット
１２Ｌ、１２Ｒ：左脚
１３Ｌ、１３Ｒ：足
１４：体幹
１５：姿勢角センサ
１８、２８：コントローラ
【図１】
0005440152.tif 000006
【図２】
0005440152.tif 000007
【図３】
0005440152.tif 000008
【図４】
0005440152.tif 000009
【図５】
0005440152.tif 000010
【図６】
0005440152.tif 000011
【図７】
0005440152.tif 000012
【図８】
0005440152.tif 000013