(57)【要約】【課題】歩容データを簡便に作成できる技術を創作する。【解決手段】コンピュータ装置１４は、標準歩幅での遊脚足先の歩行方向の座標値ｘと経過時間ｔの関係を記述する標準足先ｘ−ｔ軌道を記憶している手段３２と、時間に対して連続的に変化する歩幅係数を入力する手段１２等と、入力された歩幅係数を前記の歩行方向（ｘ軸方向）の座標値に乗じて補正した歩行方向の座標値ｘと前記の経過時間ｔで記述される歩幅補正後の遊脚足先ｘ−ｔ軌道を計算する手段３０を備えている。【選択図】図２
2005022039.tif 000002
【特許請求の範囲】
【請求項１】
標準歩幅での遊脚足先の歩行方向の座標値と経過時間の関係を記述する標準足先軌道を記憶している手段と、
時間に対して連続的に変化する歩幅係数を入力する手段と、
入力した歩幅係数を前記の歩行方向の座標値に乗じて補正した歩行方向の座標値と前記の経過時間で記述される歩幅補正後の遊脚足先軌道を計算する手段とを備えている歩容データ作成装置。
【請求項２】
標準歩幅での遊脚足先の歩行方向の座標値と経過時間の関係を記述する標準足先軌道を記憶しておく工程と、
（１）時間に対して連続的に変化する歩幅係数を入力する工程と、
（２）入力した歩幅係数を前記の歩行方向の座標値に乗じて補正した歩行方向の座標値と前記の経過時間で記述される歩幅補正後の遊脚足先軌道を計算する工程と、
（３）経過時間を増大させながら歩幅補正後の遊脚足先軌道の歩行方向の座標値を読み出す工程と、
前記（１）から（３）の工程を繰返す工程を備えている歩容データ作成方法。
【請求項３】
標準リフトでの遊脚足先の高さ方向の座標値と経過時間の関係を記述する標準足先軌道を記憶している手段と、
時間に対して連続的に変化するリフト係数を入力する手段と、
入力したリフト係数を前記の高さ方向の座標値に乗じて補正した高さ方向の座標値と前記の経過時間で記述されるリフト補正後の遊脚足先軌道を計算する手段とを備えている歩容データ作成装置。
【請求項４】
標準リフトでの遊脚足先の高さ方向の座標値と経過時間の関係を記述する標準足先軌道を記憶しておく工程と、
（１）時間に対して連続的に変化するリフト係数を入力する工程と、
（２）入力したリフト係数を前記の高さ方向の座標値に乗じて補正した高さ方向の座標値と前記の経過時間で記述されるリフト補正後の遊脚足先軌道を計算する工程と、
（３）経過時間を増大させながらリフト補正後の遊脚足先軌道の高さ方向の座標値を読み出す工程と、
前記（１）から（３）の工程を繰返す工程を備えている歩容データ作成方法。
【請求項５】
標準歩幅での遊脚足先の歩行方向の座標値と高さ方向の座標値を記述する標準足先軌跡を記憶している手段と、
時間に対して連続的に変化する歩幅係数を入力する手段と、
入力した歩幅係数を前記の歩行方向の座標値に乗じて補正した歩行方向の座標値と前記の高さ方向の座標値で記述される歩幅補正後の遊脚足先軌跡を計算する手段とを備えている歩容データ作成装置。
【請求項６】
標準歩幅での遊脚足先の歩行方向の座標値と高さ方向の座標値を記述する標準足先軌跡を記憶しておく工程と、
（１）時間に対して連続的に変化する歩幅係数を入力する工程と、
（２）入力した歩幅係数を前記の歩行方向の座標値に乗じて補正した歩行方向の座標値と前記の高さ方向の座標値で記述される歩幅補正後の遊脚足先軌跡を計算する工程と、
（３）歩行方向の座標値を増大させながら歩幅補正後の遊脚足先軌跡の高さ方向の座標値を読み出す工程と、
前記（１）から（３）の工程を繰返す工程を備えている歩容データ作成方法。
【請求項７】
標準リフトでの遊脚足先の歩行方向の座標値と高さ方向の座標値を記述する標準足先軌跡を記憶している手段と、
時間に対して連続的に変化するリフト係数を入力する手段と、
入力したリフト係数を前記の高さ方向の座標値に乗じて補正した高さ方向の座標値と前記の歩行方向の座標値で記述されるリフト補正後の遊脚足先軌跡を計算する手段とを備えている歩容データ作成装置。
【請求項８】
標準リフトでの遊脚足先の歩行方向の座標値と高さ方向の座標値を記述する標準足先軌跡を記憶しておく工程と、
（１）時間に対して連続的に変化するリフト係数を入力する工程と、
（２）入力したリフト係数を前記の高さ方向の座標値に乗じて補正した高さ方向の座標値と前記の歩行方向の座標値で記述されるリフト補正後の遊脚足先軌跡を計算する工程と、
（３）歩行方向の座標値を増大させながらリフト補正後の遊脚足先軌跡の高さ方向の座標値を読み出す工程と、
前記（１）から（３）の工程を繰返す工程を備えている歩容データ作成方法。
【請求項９】
左足先と右足先の位置を指示する経時的データと、目標ＺＭＰの位置を示す経時的データから、所望歩行速度における体幹の位置を示す経時的データを計算する装置であり、
経時的データの変化速度を高速に設定したときに目標ＺＭＰを実現する体幹の位置を示す経時的データを記憶している手段と、
経時的データの変化速度を低速に設定したときに目標ＺＭＰを実現する体幹の位置を示す経時的データを記憶している手段と、
高速変化時の体幹位置の経時的データと低速変化時の体幹位置の経時的データを比例配分して、所望歩行速度における体幹の位置を示す経時的データを計算する手段とを備えている歩容データ作成装置。
【請求項１０】
左足先と右足先の位置を指示する経時的データと、目標ＺＭＰの位置を示す経時的データから、所望歩行速度における体幹の位置を示す経時的データを計算する方法であり、
経時的データの変化速度を高速に設定したときに目標ＺＭＰを実現する体幹の位置を示す経時的データを計算する工程と、
経時的データの変化速度を低速に設定したときに目標ＺＭＰを実現する体幹の位置を示す経時的データを計算する工程と、
高速変化時の体幹位置の経時的データと低速変化時の体幹位置の経時的データを比例配分して、所望歩行速度における体幹の位置を示す経時的データを計算する工程とを備えている歩容データ作成方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】本発明は、体幹（胴部）に対して脚リンクが揺動可能に連結されている機械（脚式ロボット）を制御して歩行させる技術に関する。詳しくは、脚式ロボットを歩行させるのに必要なデータ（歩容データ）の作成技術に関する。
【０００２】
【従来の技術】左脚リンクと体幹と右脚リンクの相対的姿勢を変化させることによって歩行するロボットが開発されている。このロボットの場合、結果として歩行した結果が得られるように、左脚リンクと体幹と右脚リンクの相対的姿勢を変化させなければならない。このために、左足先と体幹と右足先の位置を指示する歩容データが利用される。
図２４に示すように、歩容データは、ロボットが活動する空間の座標を定めるグローバル座標系において、左足先と体幹と右足先の位置を指示する。左足先と体幹と右足先の位置を指示するために、左足先には基準点Ｌ０が定められており、体幹には基準点Ｗ０が定められており、右足先には基準点Ｒ０が定められている。歩容データは、左足先の基準点Ｌ０のｘ、ｙ、ｚ座標、体幹の基準点Ｗ０のｘ、ｙ、ｚ座標、右足先の基準点Ｒ０のｘ、ｙ、ｚ座標を指示する。
歩容データは、左足先と体幹と右足先の基準点Ｌ０、Ｗ０、Ｒ０の位置を指示するデータを経時的に記憶している。経時的に変化する左足先と体幹と右足先の位置を指示する歩容データに従って、左脚リンクと体幹と右脚リンクの相対的姿勢を経時的に変化させることによってロボットは歩行する。
歩容データの作成段階では、左脚リンクと体幹と右脚リンクの相対的姿勢の変化を想定して歩容データを作成する。左脚リンクと右脚リンクの両足先が接地している状態から、一方の脚リンクの足先を上昇させ、前方に移動させ、ついで下降させることによって遊脚リンクを一歩すすめて着地させる歩容データを作成する。歩容データの作成技術の一例が特許文献１に記載されている。
【０００３】
【特許文献１】
特開２００１−１５７９７３号公報
【０００４】
【発明が解決しようとする課題】歩容データの作成には多大な労力が必要とされる。歩幅を大きくとるときには遊脚を大きく進める歩容データを作成しなければならない。歩幅を小さくするときには遊脚を小さく進める歩容データを作成しなければならない。遊脚を大きく持ち上げて（この明細書では遊脚の上昇距離をリフトという）歩行するときには遊脚を高く持ち上げる歩容データを作成しなければならない。小さなリフトで歩行するときには遊脚を低く持ち上げる歩容データを作成しなければならない。
そのときそのときに必要とされる歩幅とリフトを記述する歩容データを作成するには多大な労力が必要とされており、簡単に歩容データを作成できる技術が必要とされている。
【０００５】
一定の歩幅を予定して遊脚を進めている途中で歩幅を変動させることがある。このような動きを実現する歩容データを作成することはひどく困難であり、現在の技術では、歩幅変動前の足先軌跡と歩幅変動後の足先軌跡をスプライン曲線で滑らかに接続した足先軌跡を数学的に作り出して歩容データを完成している。同様に、一定のリフトを予定して遊脚を持ち上げている途中でリフトを変動させることがある。この場合にも、リフト変動前の足先軌跡とリフト変動後の足先軌跡をスプライン曲線で滑らかに接続した足先軌跡を数学的に作り出して歩容データを完成している。
上記の処理をする計算量は膨大であり、リアルタイムで歩容データを作成する方式を採用すると、歩容データの計算速度が遅いためにロボットの歩行速度を低速に制約せざるを得ない。あるいは、非常に計算速度の速い高価なコンピュータを必要とする。
【０００６】
ロボットが歩行するためには、左足先と体幹と右足先の位置を指示するデータを必要とする。そのうちの体幹の位置は、足先の位置に対して適当な値である必要があり、その値が適当でなければロボットは転倒してしまう。
ロボットが転倒しない体幹位置を得るためには、ロボットのダイナミクスを考慮に入れた複雑な計算を必要とする。その計算過程は大略下記のものである。
（１）ロボットの歩行コースや歩幅やリフトを指定するオペレータが、左足先と右足先の位置を指示する経時的データを指定する。
（２）足先位置を考慮してロボットのＺＭＰが存在しなければならない位置を指定する。ＺＭＰ（ｚｅｒｏ  ｍｏｍｅｎｔ  ｐｏｉｎｔ）は、ロボットが床から受ける反力によるモーメントがゼロになる点をいい、ＺＭＰが接地脚の足平内にあればロボットは転倒しない。逆にいうと、ロボットが転倒しないためには、ＺＭＰが接地脚の足平内になければならない。そこで接地脚の足先位置を考慮し、下記の関係を満たすＺＭＰを指定する。即ち、一方の脚リンク（例えば左脚）が遊脚になっている間は接地脚（右脚）の足平内に存在し、その一方の脚（左脚）が接地して両足接地状態になったときに新たに接地した脚（左脚）の足平位置に向けて移動し、それまでに接地していた脚（右脚）が遊脚となる前に新たに接地した脚（左脚）の足平内に移動を終えるＺＭＰを指定する。このようにして指定されたＺＭＰは、目標ＺＭＰといわれる。
（３）足先位置の変化とそれに追従して変化する目標ＺＭＰが指定されると、ロボットのダイナミクスを計算する。計算する時点で、足先の軌跡が指定されているために、ロボットの体幹位置を仮定するとロボットの姿勢が決まる。ロボットの姿勢が決まると、その姿勢におけるＺＭＰの位置を計算することが可能となる。ＺＭＰの位置を計算するためには、静的な要素に加えて、ロボットに作用する慣性の影響を織り込まなければならない。このために、ＺＭＰの位置を計算するためには、ロボットの姿勢を知るだけでは足らず、その変化速度を仮定しなければならない。
そこで足先位置の変化とそれに追従して変化する目標ＺＭＰの位置が指定されると、さらにその変化速度を指定し、ついで体幹位置を仮定する。するとロボットのダイナミクスを考慮に入れたうえでＺＭＰの位置を計算することが可能となり、目標ＺＭＰに一致するＺＭＰをもたらす体幹位置を解くことが可能となる。歩容データ作成装置は、指定された目標ＺＭＰを実現する体幹位置を解くプログラムを備えている。こうして解かれる体幹位置は変化速度に依存し、足先と目標ＺＭＰの軌跡が同じであっても、その変化速度が変われば体幹位置は変化することになる。人がゆっくり歩行する場合には胴を左右に大きく揺動させながら歩行するのに対し、高速で歩行する場合には胴の左右の揺動量が小さく抑えられることに対応する。
足先と目標ＺＭＰの軌跡が同じであっても、歩行速度を変化させると再度体幹位置を計算しなおす必要があり、その計算負荷が高い。リアルタイムで歩容データを作成する方式を採用すると、歩容データの計算速度が遅いためにロボットの歩行速度を低速に制約せざるを得ないことがここでも生じる。あるいは、非常に計算速度の速い高価なコンピュータを必要とする問題がここでも生じる。
【０００７】
本発明は、歩容データを簡便に作成できる技術を創作するものである。ここでは、遊脚足先の標準的軌道又は軌跡を予め定めておき、それを変形することによって歩幅の変化やリフトの変化に対応する。標準的軌道又は軌跡を変形して遊脚の足先軌道又は軌跡を計算する方式によると、計算量を圧縮することができる。
あるいは、遊脚の足先軌道又は軌跡に対して、高速歩行時の体幹位置と、低速歩行時の体幹位置を予め計算しておく。そして予め計算しておいた高速歩行時の体幹位置と低速歩行時の体幹位置を用いて所望の歩行速度での体幹位置を計算する。予め計算しておいた体幹位置から所望の歩行速度での体幹位置を計算するようにすると計算量を圧縮することができる。
本発明によって歩容データを作成するために必要な計算量が圧縮されると、リアルタイムで歩容データを作成する場合に、ロボットの歩行速度を増大させることが可能となる。
なお、「軌道」とは、運動する物体（点）が描く軌跡のことをいう。「軌道」は、物体の位置が時間との関係で表される。一方、「軌跡」とは、ある条件を満たす物体（点）が描く図形のことををいう。「軌跡」は、物体の位置を示す座標の集合で表される。
【０００８】
【課題を解決するための手段と作用】本発明で創作された一つの歩容データ作成装置は、標準歩幅での遊脚足先の歩行方向の座標値と経過時間の関係を記述する標準足先軌道を記憶している手段と、時間に対して連続的に変化する歩幅係数を入力する手段と、入力した歩幅係数を前記の歩行方向の座標値に乗じて補正した歩行方向の座標値と前記の経過時間で記述される歩幅補正後の遊脚足先軌道を計算する手段とを備えている。
【０００９】
図５（Ａ）は、標準歩幅での遊脚足先の歩行方向（ｘ方向）の座標値と経過時間の関係で記述される標準足先軌道（ｘ−ｔ）１４０を例示している。後記するように、遊脚足先の高さ方向（ｚ方向）の座標値と経過時間の関係で記述される標準足先軌道（ｚ−ｔ）と組合せて用いることにより、標準足先軌跡（ｘ−ｚ）が記述される。歩幅を広くする場合、図５（Ａ）の歩行方向（ｘ方向）の座標値に１．０以上の倍率をかければよい。歩幅を狭くする場合、歩行方向の座標値に１．０以下の倍率をかければよい。この倍率を歩幅係数という。図５（Ｂ）は、歩幅係数が２．０の場合の遊脚の足先軌道１４５を例示している。
歩幅係数を不連続に変化させると足先軌道が不連続に変化し、ロボットが対応できない。本発明の歩容データ作成装置では、時間に対して連続的に変化する歩幅係数を入力する。例えば、歩幅係数を１．０から２．０に変化させようとする場合、歩幅係数は、１．０、１．１、１．２・・・と徐々に連続的に変化しながら、２．０に落ち着く。時間に対して連続的に変化する歩幅係数を利用することによって、歩幅変更前の足先軌道から連続的に変化して歩幅変更後の足先軌道に推移する遊脚の足先軌道が求められる。
【００１０】
本発明を方法として理解することも可能であり、この場合には、標準歩幅での遊脚足先の歩行方向の座標値と経過時間の関係を記述する標準足先軌道を記憶しておく工程を最初に実施する。その準備工程を終了しておいてから、
（１）時間に対して連続的に変化する歩幅係数を入力する工程と、
（２）入力した歩幅係数を前記の歩行方向の座標値に乗じて補正した歩行方向の座標値と前記の経過時間で記述される歩幅補正後の遊脚足先軌道を計算する工程と、
（３）経過時間を増大させながら歩幅補正後の遊脚足先軌道の歩行方向の座標値を読み出す工程を実施する。
前記（１）から（３）の工程を繰返して実施する。
【００１１】
先に例示したように、歩幅係数を１．０から２．０に変化させる場合を想定する。この場合、歩幅係数は、１．０から１．１、１．２・・・と徐々に連続的に変化する。図６のカーブ１４０は歩幅補正前の標準足先軌道を例示しており、カーブ１４１は歩幅係数１．２で補正した補正後の遊脚足先軌道を例示しており、以下同様に、カーブ１４５は歩幅係数２．０で補正した補正後の遊脚足先軌道を例示している。
図中１４６のポイント通過時に歩幅係数が１．０から２．０に変化すると、歩幅係数は、１．０から１．１、１．２・・・と徐々に連続的に変化し、補正後足先軌道１４１，１４２，１４３・・・が計算されていく。経過時間をΔｔだけ増大させながら歩幅補正後の遊脚足先軌道の歩行方向の座標値ｘを読み出すと、ポイント１４６でカーブ１４０から離れ、ポイント１４７，１４８・・・を経て、ポイント１５１でカーブ１４５に乗り換える連続カーブ１５２が得られる。このカーブ１５２は、標準足先軌道１４０からポイント１４６，１４７・・・等を経て２．０の歩幅係数で補正された補正後の遊脚足先軌道１４５に変化する遊脚足先軌道１５２となっている。ポイント１４６で歩幅係数が変化すると、それ以降には徐々に補正後の遊脚足先軌道に向かって補正され、一定時間後に補正後の遊脚足先軌道に切替えられる足先軌道が計算される。
【００１２】
同様の技術が、リフトの変更時にも適用できる。リフトの変更に対応する歩容データを作成する装置は、標準リフトでの遊脚足先の高さ方向の座標値と経過時間の関係を記述する標準足先軌道を記憶している手段と、時間に対して連続的に変化するリフト係数を入力する手段と、入力したリフト係数を前記の高さ方向の座標値に乗じて補正した高さ方向の座標値と前記の経過時間で記述されるリフト補正後の遊脚足先軌道を計算する手段とを備えている。
【００１３】
図７（Ａ）は、標準リフトでの遊脚足先の高さ方向（ｚ方向）の座標値と経過時間で記述される標準足先軌道（ｚ−ｔ）１６０を示している。図５（Ａ）の歩行方向（ｘ方向）の座標値と経過時間の関係（ｘ−ｔ）を記述する軌道と組合せることで標準足先軌跡（ｘ−ｚ）が形成される。ｘ−ｔとｚ−ｔが組合わさって軌道（ｘ−ｚ−ｔ）が記述されるが、ここでは、ｘ−ｔもｚ−ｔも軌道を記述するデータの一部であることから簡単に軌道データという。リフトを高くする場合、図７（Ａ）の高さ方向（ｚ方向）の座標値に１．０以上の倍率をかければよい。リフトを低くする場合、高さ方向の座標値に１．０以下の倍率をかければよい。この倍率をリフト係数という。図７（Ｂ）は、リフト係数が１．５の場合の遊脚の足先軌道１６５を例示している。
リフト係数を不連続に変化させると遊脚足先軌道が不連続に変化し、ロボットが対応できない。本発明の歩容データ作成装置では、時間に対して連続的に変化するリフト係数を入力する。例えばリフト係数を１．０から１．５に変化させようとする場合、リフト係数は、１．０、１．１、１．２・・・と徐々に連続的に変化しながら、１．５に落ち着く。時間に対して連続的に変化するリフト係数を利用することによって、リフト変更前の遊脚足先軌道から連続的に変化してリフト変更後の遊脚足先軌道に推移する遊脚足先軌道が求められる。
【００１４】
リフト係数を利用して歩容データを作成する過程では、標準リフトでの遊脚足先の高さ方向の座標値と経過時間の関係を記述する標準足先軌道を記憶しておく工程を最初に実施する。その準備工程を終了しておいてから、
（１）時間に対して連続的に変化するリフト係数を入力する工程と、
（２）入力したリフト係数を前記の高さ方向の座標値に乗じて補正した高さ方向の座標値と前記の経過時間で記述されるリフト補正後の遊脚足先軌道を計算する工程と、
（３）経過時間を増大させながらリフト補正後の遊脚足先軌道の高さ方向の座標値を読み出す工程を実施する。
前記（１）から（３）の工程を繰返して実施する。
【００１５】
先に例示したように、リフト係数を１．０から１．５に変化させる場合を想定する。この場合、リフト係数は、１．０から１．１、１．２・・・と徐々に連続的に変化する。図８のカーブ１６０はリフト補正前の標準足先軌道を例示しており、カーブ１６１はリフト係数１．１で補正した補正後の遊脚足先軌道を例示しており、以下同様に、カーブ１６５はリフト係数１．５で補正した補正後の遊脚足先軌道を例示している。
図中１６６のポイント通過時にリフト係数が１．０から１．５に変化すると、リフト係数は、１．０から１．１、１．２・・・と徐々に連続的に変化し、補正後の遊脚足先軌道１６１，１６２，１６３・・・が計算されていく。経過時間をΔｔだけ増大させながらリフト補正後の遊脚足先軌道の高さ方向の座標値ｚを読み出すと、ポイント１６６でカーブ１６０から離れ、ポイント１６７，１６８・・・を経て、ポイント１７１でカーブ１６５に乗り換える連続カーブ１７２が得られる。このカーブ１７２は、標準足先軌道１６０からポイント１６６，１６７・・・等を経て、１．５のリフト係数で補正された補正後の遊脚足先軌道１６５に変化する足先軌道となっている。ポイント１６６でリフト係数が変化すると、それ以降には徐々に補正後の遊脚足先軌道に向かって補正され、一定時間後に補正後の遊脚足先軌道に切替えられる足先軌道が計算される。ここで計算される軌道はｚ−ｔであり、別に計算されるｘ−ｔと相俟ってｘ−ｚ（軌跡）ないしｘ−ｚ−ｔ（軌道）を定める。ｘ−ｔのみを歩幅係数で補正してもよいし、ｚ−ｔのみをリフト係数で補正してもよい。また、ｘ−ｔを歩幅係数で補正して、ｚ−ｔをリフト係数で補正してもよい。
【００１６】
本発明で創作された他の一つの歩容データ作成装置は、標準歩幅での遊脚足先の歩行方向の座標値と高さ方向の座標値を記述する標準足先軌跡を記憶している手段と、時間に対して連続的に変化する歩幅係数を入力する手段と、入力した歩幅係数を前記の歩行方向の座標値に乗じて補正した歩行方向の座標値と前記の高さ方向の座標値で記述される歩幅補正後の遊脚足先軌跡を計算する手段とを備えている。
【００１７】
本発明を方法として理解することも可能であり、この場合には、標準歩幅での遊脚足先の歩行方向の座標値と高さ方向の座標値を記述する標準足先軌跡を記憶しておく工程を最初に実施する。その準備工程を終了しておいてから、
（１）時間に対して連続的に変化する歩幅係数を入力する工程と、
（２）入力した歩幅係数を前記の歩行方向の座標値に乗じて補正した歩行方向の座標値と前記の高さ方向の座標値で記述される歩幅補正後の遊脚足先軌跡を計算する工程と、
（３）歩行方向の座標値を増大させながら歩幅補正後の遊脚足先軌跡の高さ方向の座標値を読み出す工程を実施する。
前記（１）から（３）の工程を繰返して実施する。
【００１８】
この場合には、歩幅方向の座標値の増加量Δｘを一定にすると、遊脚の足先を歩行方向に進める速度が一定となり、歩行速度が一定に維持される。歩幅方向の座標値の増加量Δｘを修正された歩幅係数ａに比例させると、遊脚の足先を歩行方向に進める速度が歩幅係数ａに比例し、歩行速度が歩幅係数ａに比例する。歩幅方向の座標値の増加量Δｘを一定に維持しながら、歩幅方向の座標値をΔｘだけ増加させるに要する時間を歩幅係数ａに反比例させても、歩行速度を歩幅係数ａに比例させることができる。
【００１９】
同様の技術が、リフトの変更時にも適用できる。リフトの変更に対応する歩容データを作成する装置は、標準リフトでの遊脚足先の歩行方向の座標値と高さ方向の座標値を記述する標準足先軌跡を記憶している手段と、時間に対して連続的に変化するリフト係数を入力する手段と、入力したリフト係数を前記の高さ方向の座標値に乗じて補正した高さ方向の座標値と前記の歩行方向の座標値で記述されるリフト補正後の遊脚足先軌跡を計算する手段とを備えている。
【００２０】
リフト係数を利用して歩容データを作成する過程では、標準リフトでの遊脚足先の歩行方向の座標値と高さ方向の座標値を記述する標準足先軌跡を記憶しておく工程を最初に実施する。その準備工程を終了しておいてから、
（１）時間に対して連続的に変化するリフト係数を入力する工程と、
（２）入力したリフト係数を前記の高さ方向の座標値に乗じて補正した高さ方向の座標値と前記の歩行方向の座標値で記述されるリフト補正後の遊脚足先軌跡を計算する工程と、
（３）歩行方向の座標値を増大させながらリフト補正後の遊脚足先軌跡の高さ方向の座標値を読み出す工程を実施する。
前記（１）から（３）の工程を繰返して実施する。
【００２１】
本発明によって、左足先と右足先の位置を指示する経時的データと目標ＺＭＰの位置を示す経時的データから、所望歩行速度における体幹の位置を示す経時的データを計算する装置も実現された。
この装置は、経時的データの変化速度を高速に設定したときに目標ＺＭＰを実現する体幹の位置を示す経時的データを記憶している手段と、経時的データの変化速度を低速に設定したときに目標ＺＭＰを実現する体幹の位置を示す経時的データを記憶している手段と、高速変化時の体幹位置の経時的データと低速変化時の体幹位置の経時的データを比例配分して、所望歩行速度における体幹の位置を示す経時的データを計算する手段とを備えている。
【００２２】
例えば、左足接地時の左足接地面の体側方向（ｙ方向）の座標が１．０から２．０の範囲であり、右足接地時の右足接地面の体側方向の座標が−１．０から−２．０の範囲である場合、左足接地時の目標ＺＭＰの体側方向の座標は左足接地面内に設定されているから例えば１．５の位置に設定されており、右足接地時の目標ＺＭＰの体側方向の座標は右足接地面内に設定されているから例えば−１．５の位置に設定されている。
左足接地時のＺＭＰ位置が１．５となる体幹の体側方向の座標は、低速歩行時と高速歩行時では相違する。高速歩行時には大きな慣性が作用することから、高速歩行時の体幹の体側方向の座標は小さくてよい。例えば、高速歩行時には体幹のｙ座標を１．３に調整するとＺＭＰのｙ座標が１．５となり、低速歩行時には体幹のｙ座標を１．８に調整するとＺＭＰのｙ座標が１．５となる。
本発明では、高速歩行時と低速歩行時のそれぞれについて、体幹の位置を示すデータを予め求めておく。先の例でいえば、高速歩行時用に１．３の体幹位置を求めておき、低速歩行時用に１．８の体幹位置を求めておく。
本発明では、高速歩行時用の体幹位置と低速歩行時用の体幹位置を予め求めておき、それを比例配分することによって所望歩行速度における体幹の位置を示す経時的データを計算する。
上記の装置によると、歩行速度が様々に変更されるような場合に、体幹位置を計算する計算量が劇的に圧縮化され、計算負荷が大幅に軽減される。
【００２３】
上記の技術は方法として理解することが可能であり、この方法では、左足先と右足先と目標ＺＭＰの位置を示す経時的データの変化速度を高速に設定したときに目標ＺＭＰを実現する体幹の位置を示す経時的データを計算する工程と、経時的データの変化速度を低速に設定したときに目標ＺＭＰを実現する体幹の位置を示す経時的データを計算する工程を予め実行しておく。その上で、高速変化時の体幹位置の経時的データと低速変化時の体幹位置の経時的データを比例配分して所望歩行速度における体幹の位置を示す経時的データを計算する。
上記の方法によると、歩行速度が様々に変更されるような場合に、体幹位置を計算する計算量が劇的に圧縮化され、計算負荷が大幅に軽減される。
【００２４】
【実施の形態】以下に説明する実施例の主要な特徴を最初に列記する。
（形態１）  オペレータは、動作するロボットを観察しながら、ジョイスティック等を利用して、それ以後の歩幅係数とリフト係数を指定する。指定された係数は歩容データ作成装置に入力され、入力された係数で標準足先軌道又は軌跡を補正した遊脚足先軌道又は軌跡を算出し、補正後の遊脚足先軌道又は軌跡による歩容データをロボットに指示する。
（形態２）  オペレータは、動作するロボットを観察しながら、ジョイスティック等を利用して、それ以後の歩行速度を指定する。指定された歩行速度は歩容データ作成装置に入力され、予め計算されている体幹位置を比例配分することによって指定された歩行速度での体幹位置を計算し、計算された体幹位置による歩容データをロボットに指示する。
（形態３）  歩容データ作成装置はロボット外に搭載されており、作成した歩容データを有線または無線でロボットに指令する。
（形態４）  歩容データ作成装置はロボット外に搭載されており、作成した歩容データを有線または無線でロボットに指令する。歩容データから関節角を計算する装置はロボットに搭載されている。
（形態５）  歩容データ作成装置と、歩容データから関節角を計算する装置はロボット外に搭載されており、計算された関節角を有線または無線でロボットに指令する。
（形態６）  歩容データ作成装置はロボットに搭載されており、動作するロボットを観察しながら、オペレータがジョイスティック等を利用して指定した歩幅係数とリフト係数と歩行速度（速度係数）が、有線または無線でロボットに伝達される。
【００２５】
【実施例】
（第１実施例）  図１に示すロボット６は、右脚が接地している間に左脚を遊脚として軌道７のように移動させ、左脚が接地すると今度は右脚を遊脚として軌道８のように移動させ、以後同様に、左脚を遊脚として軌道９のように移動させ、次には右脚を遊脚として軌道１０のように移動させて歩行を続ける。
ロボット６が歩行を続けるには、遊脚足先の軌道７，８，９，１０を記述する足先軌道データ、目標ＺＭＰ位置データ、腕先軌道データ、体幹位置データで構成される歩容データが必要とされる。
【００２６】
歩容データを作成する等のために、コンピュータ装置１４が用意されている。コンピュータ装置１４は、ＣＰＵ、ＲＯＭ、ＲＡＭ、ハードディスク等を有する。コンピュータ装置１４のハードウエア構成は汎用のコンピュータと同じであり、説明は省略する。コンピュータ装置１４には、歩容データを作成するプログラムがインストールされており、その実行に必要な記憶容量が確保されている。
本実施例では、図１に示すように、ロボット６の歩行方向をｘ軸方向とし、体側方向をｙ軸方向とし、高さ方向をｚ軸方向とする。但し、以下の説明は任意の歩行方向について成立する。
【００２７】
以下では、図１０に示すように、点０に質量ｍ０を持つ質点で体幹が代表され、点１に質量ｍ１を持つ質点で右腕が代表され、点２に質量ｍ２を持つ質点で左腕が代表され、点３に質量ｍ３を持つ質点で右脚が代表され、点４に質量ｍ４を持つ質点で左脚が代表されるとして、図１に示すロボット６をモデル化した力学モデルで記述することがある。
【００２８】
図２は、コンピュータ装置１４の機能をブロック化して示す図である。図２に示す要素のうち、ロボットの機械系５２を除いた部分がコンピュータ装置１４の構成要素である。この構成要素の中で、関節角群計算装置４８とアクチュエータ制御部５０を除いた部分が歩容データ作成装置と考えてよい。このコンピュータ装置１４は全体が物理的に１つの装置に含まれていてもよいし、物理的に分離された装置ごとに分けて収容されていてもよい。以下では、これらの構成要素について説明する。
【００２９】
標準足先軌道記憶装置３２には、標準歩幅と標準リフトで遊脚足先を移動させるときの一歩分の足先位置の経時的変化を記述する標準足先軌道が記憶されている。
図４はその標準足先軌道の例を示し、グラフ１４０と１３０はそれぞれ、左脚と右脚の歩行方向の座標ｘと経過時間ｔの関係（ｘ−ｔ軌道）を示している。
左脚を持ち上げたら前方に送り（部分１４０ａ参照）、着地点に近づいたら前進速度を緩め（部分１４０ｂ参照）、着地させる。着地中は歩行方向の座標は変動しない（部分１４０ｃ参照）。左脚の着地中（時間ｔ１に示される）に、右脚の座標を部分１３０ａに示すように歩行方向に進める。歩行方向の標準足先軌道は、図５（Ａ）にも示されている。
【００３０】
一方、高さ方向の標準足先軌道は、図７（Ａ）に示されるように、高さ方向の座標値ｚと経過時間ｔの関係（ｚ−ｔ軌道）で記述されている。図５（Ａ）のｘ−ｔグラフと図７（Ａ）のｚ−ｔグラフの関係から、標準足先軌道ｘ−ｚ−ｔと、標準足先軌跡ｘ−ｚが得られる。経過時間ｔをΔｔだけ増分させたときのｘ座標の集合と、経過時間ｔをΔｔだけ増分させたときのｚ座標の集合と、これらに対応する経過時間ｔの集合で、標準足先軌道ｘ−ｚ−ｔが記述される。図５（Ａ）や図７（Ａ）ではｔの増分Δｔが大きく表示されているが、実際には、これよりも細かな増分となっている。
【００３１】
図１と図２に示す入力装置（この例ではジョイスティック）１２は、オペレータＨが歩幅係数、リフト係数、歩行方向等を入力するために用いられる。また、入力装置１２を利用して、基準歩行速度を入力できる。基準歩行速度とは、歩幅係数が基準値（１．０）の場合の歩行速度である。本実施例では後述するように、入力した歩幅係数に連動して歩行速度も変化するが、基準歩行速度は、その基準となるものである。この基準歩行速度に基づいて、図５（Ａ）に示す歩行方向の標準足先軌道の形状が決められる。この入力装置１２によって、オペレータＨは、歩行するロボット６を観察しながら上記係数等を入力できる。入力装置１２もコンピュータ装置１４の一部と考えてよい。
【００３２】
歩幅係数は、標準的な歩行方向の座標値変化量を拡大縮小する係数である。図４のグラフ１３２は、歩幅を広げる係数が入力されたときの歩行方向の座標と時間の関係を例示している。１．０以上の歩幅係数を入力すると広い歩幅で歩行する足先軌道に補正される（図６参照）。１．０未満の歩幅係数を入力すると狭い歩幅で歩行する足先軌道に補正される。
リフト係数は、標準的な高さ方向の座標値変化量を拡大縮小する係数である。１．０以上のリフト係数を入力すると、遊脚を高く持ち上げて歩行する足先軌道に補正される（図８参照）。１．０未満のリフト係数を入力すると遊脚を低く持ち上げて歩行する足先軌道に補正される。
入力装置１２によって入力された歩行方向が本実施例のようにｘ軸方向であれば、図２の縦軸の変化がｘ座標の変化とされ、ｘ軸方向に歩行する軌道が指令される。これに対し、歩行方向がｙ軸方向であれば、図２の縦軸の変化がｙ座標の変化とされ、ｙ軸方向に歩行する軌道が指令される。中間方位に向けて歩行する場合には、図２の縦軸の変化がｘ座標とｙ座標に振り分けられる。例えば、ｘ軸に対して４５度の方向に歩行する場合には、ｘ座標とｙ座標の変化量が図２の縦軸の変化量の（１／ルート２）倍される。
【００３３】
図２に示す足先軌道生成部３０には、図３に示すように、計算手段５６，５８，６０が用意されている。計算手段５６は、入力装置１２から入力された歩幅係数ａ（正確には、それのローパスフィルタ（ＬＰＦ）５２による処理値）に基づいて、記憶装置３２に記憶されている標準足先ｘ−ｔ軌道を補正する計算を行い、補正足先ｘ−ｔ軌道を求める。計算手段５８は、入力装置１２から入力されたリフト係数ｂ（正確には、それのローパスフィルタ５４による処理値）に基づいて、記憶装置３２に記憶されている標準足先ｚ−ｔ軌道を補正する計算を行い、補正足先ｚ−ｔ軌道を求める。計算手段６０は、経過時間ｔをΔｔだけ増分した場合における補正足先軌道のｘ座標とｚ座標を読み出し、そのｘ座標値とｚ座標値を遊脚の足先軌道データに追加して記憶することによって、遊脚足先軌道データを生成する。
【００３４】
上記したローパスフィルタ５２，５４はソフトウエアによって実現されている。オペレータＨが、それまでの歩幅係数ａやリフト係数ｂとは異なる係数を入力すると、ローパスフィルタ５２，５４は、それまでの係数から新たに入力された係数まで滑らかに連続的に変化する係数を出力する。図３の参照番号６２のように係数が指定された場合、ローパスフィルタ処理された係数は参照番号６４で示すように変化する。なお、ローパスフィルタ６２，６４は、ハードウエアで構成してもよいし、コンピュータにプログラムを実行させることで構成してもよい。
【００３５】
足先軌道生成部３０の上記処理によって、オペレータＨが意図する歩幅に対応する足先軌道データｘ（ｔ）と、オペレータＨが意図するリフト量に対応する足先軌道データｚ（ｔ）が得られる。なお、この実施例では、上記したようにロボットがｘ軸方向に沿って歩行している例を説明しており、歩幅係数やリフト係数が変更されても、足先軌道データｙ（ｔ）は一定とみなし、その値は既知であるものとする。よって、足先軌道生成部３０で上記計算を行うことで、足先軌道データとして、右足先の軌道データＲ（ｘ（ｔ）、ｙ（ｔ）、ｚ（ｔ））と、左足先の軌道データＬ（ｘ（ｔ）、ｙ（ｔ）、ｚ（ｔ））が得られる。
右足先の軌道データＲのｘ（ｔ）は、図１０のモデルの場合、質点３のｘ座標ｘ３（ｔ）に対応する。左足先の軌道データＬのｘ（ｔ）は、図１０のモデルの場合、質点４のｘ座標ｘ４（ｔ）に対応する。上記した足先軌道データは、接地脚を持ち上げて歩行方向に前進させて着地させる軌道を記述している。足先軌道データは、左右の脚のいずれが接地しているのかという情報と、接地脚の位置の座標を含んでいる。足先軌道データは、図２に示す目標ＺＭＰ位置計算部２６と、ディメンジョン変換部２８と、歩容データ記憶装置４６に送られる。
【００３６】
図５の（Ａ）は、先に述べたように、標準足先ｘ−ｔ軌道１４０を例示している。標準的な歩幅によるときの遊脚の足先の軌道を示している。図５の（Ｂ）は、歩幅を２倍にしたときの軌道を示している。歩行方向の座標値が２．０倍されている。
図６は、足先ｘ−ｔ軌道を拡大して示すものであり、カーブ１４０は標準足先軌道を示し、１４１から１４５は、図中にａに示す歩幅係数によって補正した足先軌道を示している。歩行方向（ｘ方向）の座標値がａ倍されている。
図６は、図１に示すロボット６の遊脚の足先を、標準軌道１４０に沿ってポイント１４６まで移動させた段階で、オペレータＨが歩幅係数ａを１．０から２．０に変化させた場合を示す。
軌道はｔ方向にΔｔだけ増分させながらｘ方向座標を読み出すことによって記述される。ポイント１４６まで進んだ以降には、Δｔだけ増分させたときのｘ座標を読み出す。
例示の場合、ポイント１４６から＋Δｔだけ進行した時点におけるローパスフィルタ処理された歩幅係数が１．２であり、歩幅係数１．２で補正した足先軌道がカーブ１４１で示されている。＋Δｔの時点では、ポイント１４７のｘ座標が読み出される。以下同様に処理されるために、＋２Δｔの時点では、歩幅係数１．４で補正した足先軌道１４２のポイント１４８のｘ座標が読み出される。＋３Δｔの時点では、歩幅係数１．６で補正した足先軌道１４３のポイント４９のｘ座標が読み出される。＋４Δｔの時点では、歩幅係数１．８で補正した足先軌道１４４のポイント１５０のｘ座標が読み出される。＋５Δｔまで進行すると、ローパスフィルタ処理された歩幅係数が２．０に至り、歩幅係数２．０で補正した足先軌道１４５のポイント１５１のｘ座標が読み出される。＋５Δｔ以降は、ローパスフィルタ処理された歩幅係数が２．０で安定し、Δｔだけ増分しながら足先軌道１４５のｘ座標が読み出される。
この結果、標準足先軌道１４０に沿ってポイント１４６に至り、以後、ポイント１４６，１４７，１４８，１４９，１５０，１５１を滑らかに結んで、歩幅係数２．０で補正した足先軌道１４５に乗り換える足先軌道１５２が得られる。
【００３７】
図５や図６に示す例では、歩幅係数を増加させると、これに伴ってｘ−ｔグラフの傾きも増加することになるから、歩行速度も増加することになる。同様に、歩行係数を減少させると、歩行速度も減少する。よって、本実施例では、歩行速度は、歩幅係数に依存する。標準足先軌道１４０における歩行速度（標準足先軌道１４０の形状）は、入力装置１２から入力される基準歩行速度によって決められる。
【００３８】
図７の（Ａ）は、先に述べたように、標準足先ｚ−ｔ軌道１６０を例示している。標準的なリフトによるときの遊脚足先の軌道を示している。図７の（Ｂ）は、リフトを１．５倍にしたときの足先軌道を示している。高さ方向（ｚ方向）の座標値が１．５倍されている。
図８は、足先軌道を拡大して示すものであり、カーブ１６０は標準足先軌道を示し、１６１から１６５は、図中にｂに示すリフト係数によって補正した軌道を示している。高さ方向の座標値がｂ倍されている。
図８は、ロボットの遊脚の足先を、標準軌道１６０に沿ってポイント１６６まで移動させた段階で、オペレータがリフト係数ｂを１．０から１．５に変化させた場合を示す。
軌道はｔ方向にΔｔだけ増分させながらｚ方向座標を読み出すことによって記述される。ポイント１６６まで進んだ以降には、Δｔだけ増分させたときのｚ座標を読み出す。
例示の場合、ポイント１６６から＋Δｔだけ進行した時点におけるローパスフィルタ処理されたリフト係数が１．１であり、リフト係数１．１で補正した足先軌道がカーブ１６１で示されている。＋Δｔの時点では、ポイント１６７のｚ座標が読み出される。以下同様に処理されるために、＋２Δｔの時点では、リフト係数１．２で補正した足先軌道１６２のポイント１６８のｚ座標が読み出される。＋３Δｔの時点では、リフト係数１．３で補正した足先軌道１６３のポイント１６９のｚ座標が読み出される。＋４Δｔの時点では、リフト係数１．４で補正した足先軌道１６４のポイント１７０のｚ座標が読み出される。＋５Δｔまで進行すると、ローパスフィルタ処理されたリフト係数が１．５に至り、リフト係数１．５で補正した軌道１６５のポイント１７１のｚ座標が読み出される。＋５Δｔ以降は、ローパスフィルタ処理されたリフト係数が１．５で安定し、Δｔだけ増分しながら軌道１６５のｚ座標が読み出される。
この結果、標準足先軌道１６０に沿ってポイント１６６に至り、以後、ポイント１６６，１６７，１６８，１６９，１７０，１７１を滑らかに結んで、リフト係数１．５で補正した足先軌道１４５に乗り換える軌道１７２が得られる。
【００３９】
図２に示す目標ＺＭＰ位置計算部２６は、生成部３０で生成された足先軌道データに基づいて、目標ＺＭＰ位置を計算する。目標ＺＭＰ位置は接地脚の足平内に位置するように計算される。図２では、目標ＺＭＰのｘ座標をＰＴｘ（ｔ）としている。図９には、目標ＺＭＰ位置計算部２６で計算される目標ＺＭＰの軌道ＺＭＰＴ（ｔ）が例示されている。図９には、目標ＺＭＰの軌道ＺＭＰＴ（ｔ）が接地脚の足平内から次の接地脚の足平内に順次移動していく様子が示されている。実際のＺＭＰ位置が目標ＺＭＰ位置に一致し、接地脚の足平内から次の接地脚の足平内に順次移動していけば、図１に示すロボット６は転倒することなく歩行を続ける。この目標ＺＭＰ位置データは、図２に示すディメンジョン変換部２８と、歩容データ記憶装置４６に送られる。
【００４０】
図２に示す腕先軌道生成部２４は、腕先位置の経時的変化を示す腕先軌道を計算する。この腕先軌道データは、足先軌道生成部３０で生成された足先軌道データに対応して生成され、ロボット６が自然な感じで手脚を振って歩行するように生成される。この腕先軌道データには、図１０に示す質点１のｘ座標ｘ１（ｔ）と質点２のｘ座標ｘ２（ｔ）が含まれている。この腕先軌道データは、図２に示すディメンジョン変換部２８と、歩容データ記憶装置４６に送られる。
【００４１】
図１０に示すロボットの力学モデルから、図１０の（１）式が成立する。ここで、ｘ１〜ｘ４は、質点１〜４の歩行方向の座標を示す。ｘ１〜ｘ４は、足先軌道生成部３０と腕先軌道生成部２４で生成されており、コンピュータ装置１４にとって既知の量である。ｚ１〜ｚ４は、質点１〜４の高さ方向の座標を示す。ｚ１〜ｚ４は、図２の足先軌道生成部３０と腕先軌道生成部２４で生成されており、コンピュータ装置１４にとって既知の量である。ｚ０は、体幹の高さ方向の座標を示しているが、体幹の重心位置の高さ方向の変化量は小さく、ここでは既知とすることができる。Ｐｘ（ｔ）は、ロボットの力学モデルから計算される実際のＺＭＰのｘ座標を示している。
【００４２】
図１０の（１）式の第１項は、ｚ方向の加速度に起因する力にＺＭＰからの腕の長さを乗じることによってＺＭＰ回りのモーメントに変換した値である。第２項は、ｘ方向の加速度に起因する力にＺＭＰからの腕の長さを乗じることによってＺＭＰ回りのモーメントに変換した値である。ＺＭＰのｚ方向の座標はゼロである。（１）式には、質点０から４の重力に起因するモーメントが含まれていないが、必要に応じて（１）式に含ませることができる。
【００４３】
図１０の（２）式は、（１）式から得られるＺＭＰのｘ座標Ｐｘ（ｔ）と、目標ＺＭＰのｘ座標ＺＭＰＴｘ（ｔ）（あるいはＰＴｘ（ｔ））が一致する条件を示しており、（２）式が成立すればロボット６は転倒しない。
【００４４】
図１０の（３）式は、（１）式から計算される実際のＺＭＰのｘ座標Ｐｘ（ｔ）を、後記するディメンジョンに変換する式であり、腕先位置ｘ１、ｘ２、ｚ１、ｚ２とそれらの加速度と、足先位置ｘ３、ｘ４、ｚ３、ｚ４とそれらの加速度と、腕リンクの質量ｍ１、ｍ２と、脚リンクの質量ｍ３、ｍ４と、体幹の質量ｍ０と、体幹の高さ座標ｚ０を加味することによって、実際のＺＭＰのｘ座標Ｐｘ（ｔ）をｆｘ（ｔ）のディメンジョンの値に変換することができる。
【００４５】
図１０の（４）式は、（１）式と（３）式から得られる式であり、（３）式で変換されるディメンジョンの値は、体幹の歩行方向の座標ｘ０とその加速度から線形計算することによって簡単に計算できることがわかる。
【００４６】
図２に示すディメンジョン変換部２８は、計算部２６で計算された目標ＺＭＰ位置を、ロボットの体幹位置とその加速度から線形計算できるディメンジョンに変換する。図１０の（３）式に従って目標ＺＭＰを変換する。但し、この変換では、（３）式における実際のＺＭＰのｘ軸方向の座標Ｐｘ（ｔ）の代わりに、目標ＺＭＰのｘ軸方向の座標ＰＴｘ（ｔ）を用いる。ディメンジョンが変換された目標ＺＭＰを、以下ではｆＴｘ（ｔ）とする。変換された目標ＺＭＰは、体幹位置計算部３４に入力される。
【００４７】
図２に示す体幹位置計算部３４は、詳細な内容は後述するが、体幹の歩行方向の座標ｘ０とその加速度をロボットの力学モデル４０に出力する。ロボットの力学モデル４０には、手足の移動軌道のデータｘ１（ｔ），ｘ２（ｔ），ｘ３（ｔ），ｘ４（ｔ）も入力される。
【００４８】
体幹の歩行方向の座標ｘ０とその加速度がロボットの力学モデル４０に入力されると、ＺＭＰ位置計算部４２は、図１０の（１）式に従って、そのときに実現される実際のＺＭＰ位置Ｐｘを計算する。この実際のＺＭＰ位置Ｐｘは、ディメンジョン変換部４４に入力される。
【００４９】
図２に示すディメンジョン変換部４４は、計算部４２で計算された実際のＺＭＰ位置Ｐｘを、前記ディメンジョンに変換する。図１０の（３）式に従って実際のＺＭＰ位置Ｐｘを変換する。ディメンジョンが変換された実際のＺＭＰ位置のｘ軸方向の座標を、以下ではｆｘ（ｔ）とする。このときに、ＺＭＰ位置計算部４２が前記のディメンジョンでＺＭＰ位置ｆｘ（ｔ）を計算してもよい。数学的には同等である。変換された実際のＺＭＰ位置ｆｘ（ｔ）は、体幹位置計算部３４に入力される。
【００５０】
図２に示す体幹位置計算部３４は、フィードバック制御部３８と、フィードフォワード制御部３６を有する。これらの制御部３８と３６は、並列に接続されている。フィードバック制御部３８には、変換部２８で前記ディメンジョンに変換された目標ＺＭＰ値ｆＴｘ（ｔ）と、変換部４４で前記ディメンジョンに変換された実際のＺＭＰ値ｆｘ（ｔ）の偏差が入力される。フィードバック制御部３８は、入力された前記偏差がゼロとなるようにフィードバック制御して、体幹の歩行方向（ｘ軸方向）の座標ｘ０とその加速度を増減修正する。言い換えると、フィードバック制御部３８は、実際のＺＭＰ位置が目標ＺＭＰ位置に一致するようにフィードバック制御して、体幹の歩行方向の座標ｘ０とその加速度を増減修正する。上記した構成によると、実際のＺＭＰ位置が目標ＺＭＰ位置に一致するような歩行方向の体幹位置ｘ０を高速に求めることができる。この結果、ロボットにリアルタイムで指定することが許容される最大の歩行速度を速くすることができる。
体幹の歩行方向の座標ｘ０とその加速度を増減修正して実際のＺＭＰ位置と目標ＺＭＰ位置が一致する関係を得やすくするために、本実施例のようにフィードフォワード制御部３６を付加してもよい。
【００５１】
以上では、体幹の歩行方向（ｘ軸方向）の位置ｘ０等を求めるため処理について説明したが、体幹の体側方向（ｙ軸方向）の位置ｙ０についても、上記した説明の中に現れるｘをｙに置き換えることで、同様に求めることができる。また、体幹の高さ方向の位置ｚ０については、先に述べたように既知である。よって、体幹位置計算部３４での上記計算によって、実際のＺＭＰ位置を目標ＺＭＰ位置に一致させるような体幹位置Ｗ（ｘ（ｔ）、ｙ（ｔ）、ｚ（ｔ））が得られる。この体幹位置データＷは、上記したロボットの力学モデル４０の他に、歩容データ記憶装置４６にも送られる。
【００５２】
上記したように、図２に示す歩容データ記憶装置４６には、生成部３０で生成された足先軌道データ、計算部２６で計算された目標ＺＭＰ位置データ、生成部２４で生成された腕先軌道データ、計算部３４で計算された体幹位置データが入力され、記憶される。これらのデータを統合することで、歩容データが完成される。この歩容データは、図１に示すロボット６の姿勢を決めるのに充分なデータを含んでいる。この歩容データは、図２に示す関節角群計算装置４８に入力される。
【００５３】
関節角群計算装置４８は、入力された歩容データに基づいて、いわゆる逆キネマティクスを解くことでロボット６の各関節部の関節角θ１（ｔ）、θ２（ｔ）、θ３（ｔ）…（関節角の具体的な図示は省略する）を計算する。計算された関節角群データは、図２に示すロボットのアクチュエータ制御部５０に入力される。
【００５４】
アクチュエータ制御部５０は、図１のロボット６の関節を回転させるアクチュエータを制御する。アクチュエータはロボットの機械系５２（図２参照）に存在している。このようにアクチュエータを制御すると、ロボット６の関節角を、計算された関節角に調整できる。
【００５５】
この結果、図１のロボット６は、オペレータＨが入力した歩幅とリフト量を実現するような軌道７，８，９，１０に沿って遊脚を移動させて歩行する。このとき、ロボット６の体幹位置は、体幹位置計算部３４で実際のＺＭＰ位置が目標ＺＭＰに一致するようにフィードバック制御により計算した体幹位置に保たれるため、ロボット６が転倒することは防止されている。
【００５６】
コンピュータ装置１４の全部をロボット６に搭載することもできる。この場合には、オペレータＨが指令する歩幅係数とリフト係数を有線または無線でロボット６に伝達する。コンピュータ装置１４の大半をロボット外に搭載することもできる。例えば、関節角群計算装置４８までをロボット外に搭載することもできる。この場合には、計算された関節角を有線または無線でロボット６に伝達する。もちろん、コンピュータ装置１４の一部分をロボット６に搭載し、その他の部分をロボット６外に搭載することもできる。
【００５７】
図１１は、上記したコンピュータ装置１４の処理手順を示す。
ステップＳ２では、図２に示す足先軌道生成部３０は、以前に入力され、記憶していた歩幅係数ａを１．０とリフト係数ｂを１．０に初期化し、経過時間ｔを０．０に初期化する。経過時間ｔを０．０に初期化することは、脚の接地位置における経過時間をゼロにリセットすることに相当する。即ち、図５（Ａ）に示された標準足先軌道ｘ−ｔと、図７（Ａ）に示された標準足先軌道ｚ−ｔが原点から参照されることに相当する。
ステップＳ４では、足先軌道生成部３０は、記憶装置３２から、図５（Ａ）に示す標準足先ｘ−ｔ軌道データと、図７（Ａ）に示す標準足先ｚ−ｔ軌道データを読み出す。
【００５８】
ステップＳ６では、足先軌道生成部３０は、遊脚を決定する。ロボット６は、図１に示すように歩行し、両足接地状態で停止する。停止時には、左右のどちらかの足が後脚となっている。ステップＳ６では、後脚を遊脚とする。両足をそろえて停止するロボット６の場合であれば、左右のどちらの足を遊脚にしてもよい。オペレータＨが踏み出す脚を指定できるようにしてもよい。
ステップＳ８は、オペレータＨが入力装置１２を利用して歩行開始信号を入力するのを、足先軌道生成部３０が待っている状態である。
ステップＳ８においてオペレータＨが歩行開始信号を入力すると、足先軌道生成部３０はステップＳ１０を実行する。即ち、足先軌道生成部３０は、所定時間（時間間隔Δｔ）ごとにステップＳ１２以降の処理を繰返し実行する。
【００５９】
ステップＳ１２では、足先軌道生成部３０の計算手段５６は、ローパスフィルタ５２で処理された歩幅係数ａを取得する。計算手段５８は、ローパスフィルタ５４で処理されたリフト係数ｂを取得する。歩幅係数ａとリフト係数ｂは、オペレータＨによって入力装置１４からリアルタイムで入力される。ステップＳ１４では、計算手段５６は、ローパスフィルタ５２で処理された歩幅係数ａに基づいて標準足先ｘ−ｔ軌道を補正し、補正足先ｘ−ｔ軌道を求める。計算手段５８は、ローパスフィルタ５４で処理されたリフト係数ｂに基づいて標準足先ｚ−ｔ軌道を補正し、補正足先ｚ−ｔ軌道を求める。この補正処理の詳細は、図５〜図８を参照して詳しく説明した通りである。
ステップＳ１６では、足先軌道生成部３０の計算手段６０は、経過時間ｔをΔｔだけ増分した場合における補正足先軌道のｘ座標とｚ座標を読み出す。この読み出す過程は、図５〜図８を参照して詳しく説明した通りである。ステップＳ１８では、読み出したｚ座標から、軌道を計算している脚の足先が接地したか否かを判定する。
【００６０】
ロボット６の歩行中にオペレータＨが入力装置１２を利用して歩行停止信号を入力することがあるが、片足接地中（ステップＳ１８でＮＯの場合）に歩行停止信号が入力されても（ステップＳ２０）、片足接地中は歩行停止処理を実行しないで、歩行停止信号が入力されたことのみを記憶する（ステップＳ２２）。
片足接地中には、上記計算手段６０は、ステップＳ１６で読み出されたｘ座標値とｚ座標値を遊脚の足先軌道データに追加して記憶することによって、足先軌道データを作成する（ステップＳ２４）。このときに、歩幅を累積することによって、足先のｘ座標をグローバル座標系の座標値に変換しておく（ステップＳ２３）。歩行開始時の後脚のグローバル座標系でのｘ座標を０．０とすれば、後脚の最初の１歩については、ステップＳ１６で読み出されたｘ座標をグローバル座標系でのｘ座標とし、２歩目については、１歩目の歩幅にステップＳ１６で読み出されたｘ座標を加算した値をグローバル座標系でのｘ座標とし、３歩目については、１歩目の歩幅と２歩目の歩幅とステップＳ１６で読み出されたｘ座標を加算した値をグローバル座標系でのｘ座標とする。
【００６１】
遊脚の軌道がグローバル座標系で定義されるのに追従して、目標ＺＭＰ位置計算部２６は、接地足の足裏内に目標ＺＭＰが来るような目標ＺＭＰ位置を計算する（ステップＳ２６）。目標ＺＭＰ位置は、グローバル座標系で計算される。
【００６２】
ステップＳ２８では、体幹位置計算部３４のフィードバック制御部３８は、先に述べたように、実際のＺＭＰ位置が目標ＺＭＰ位置に一致するようにフィードバック制御して、体幹の歩行方向の位置ｘ０とその加速度を増減修正する。同様にして、体幹の体側方向の位置ｙ０とその加速度を増減修正する。これにより、実際のＺＭＰ位置が目標ＺＭＰ位置に一致するような体幹位置が得られる。
なお、上記のように体幹位置を計算するために、ステップＳ１４やＳ２４等に示したように生成部３０で足先軌道データを生成する他に、生成部２４で腕先軌道データを生成する。また、ステップＳ２６に示したように計算部２６で目標ＺＭＰ位置を計算する他に、計算部４２で実際のＺＭＰ位置を計算する。さらに、目標ＺＭＰ位置は変換部２８で、実際のＺＭＰ位置は変換部４４で、ロボットの体幹位置とその加速度から線形計算できるディメンジョンに変換する。
【００６３】
ステップＳ３０では、歩容データ記憶装置４６に入力された足先軌道データ、目標ＺＭＰ位置データ、腕先軌道データ、体幹位置データを統合することで、歩容データを完成させる。この歩容データを、間接角群計算装置４８に入力する（ステップＳ３２）。
【００６４】
ステップＳ３４では、関節角群計算装置４８は、入力された歩容データに基づいて、先に述べたように、ロボット６の各関節部の関節角を計算する。計算された関節角群データは、ロボットのアクチュエータ制御部５０に入力される。アクチュエータ制御部５０は、ロボット６の関節を回転させるアクチュエータを制御する。これにより、ロボット６の関節角が計算値に調整される。
【００６５】
先に述べたように、ステップＳ１２からステップＳ３４の処理は、所定時間（時間間隔Δｔ）ごとに繰返し実行される（ステップＳ１０）。ロボット６は、オペレータＨによって指示された歩幅係数ａとリフト係数ｂの変化に追従して、リアルタイムで遊脚の軌道を変える。歩行の途中で歩幅係数ａが増大されれば、例えば図６の足先軌道に従って歩行し、リフト係数ｂが増大されれば、例えば図８の足先軌道に従って歩行する。
【００６６】
遊脚の足先が接地すれば（ステップＳ１８でＹＥＳとなれば）、遊脚を交換する。このときに、経過時間ｔは０．０に初期化され（ステップＳ３６）、次にステップＳ１２以降を繰り返して実行する場合には、図５（Ａ）と図７（Ａ）に示された標準足先軌道の原点から処理し直すようにする。歩行停止信号が入力された場合（ステップＳ３８）、歩行停止処理を実行する（ステップＳ４０）。この結果、ロボット６は歩行を停止する。
【００６７】
以上の処理がコンピュータ装置１４で行われるため、オペレータＨは、ロボット６の歩行コース等を観察しながら、歩幅を広めたり狭めたり、リフトを高くしたり低くしたりすることができる。オペレータＨが作成した歩行コース等のデータは、歩容データ記憶装置４６に記憶される。歩行コース等のデータが記憶されると、ロボット６は記憶されている歩容データによって歩行を再現することができる。
【００６８】
上記の技術によると、歩幅を変更したりリフト量を変更する複雑な足先軌道を短時間に簡便に指定することができる。今までのように、スプライン曲線を利用して歩幅変更の前後の軌道を滑らかに接続した足先軌道を数学的に作り出す必要がなく、短時間で歩容データを作成することが可能となり、ロボットに足の運び（軌道）を教示する作業と、ロボットを実際に歩行させる作業を同時並行的にリアルタイムで処理することが可能となる。
【００６９】
図１１のステップＳ２３とＳ２６で、足先と目標ＺＭＰの軌道がグローバル座標系で定義されることによって、ロボットの足先と目標ＺＭＰの軌道を示すデータが完成する。ロボットを実際に歩行させるのと同時にリアルタイムでロボットの足先と目標ＺＭＰの軌道を示すデータを教示することができる。教示されたデータは歩容データ記憶装置４６に記憶され、その記憶された歩容データを用いることによって、ロボットは教示されたコースを歩行する動作を繰り返すことが可能となる。
【００７０】
（第２実施例）  第２実施例で使用されるコンピュータ装置は、図２と図３に示す足先軌道生成部３０を、図１２に示す足先軌跡生成部３０Ａに置換えた点で、図２に示す第１実施例で使用されるコンピュータ装置１４と主に異なる。
図１２に示す足先軌跡生成部３０Ａには、計算手段６６が用意されている。計算手段６６は、入力装置１２から入力された歩幅係数ａ（正確には、ローパスフィルタ５２による処理値）及び／又はリフト係数ｂ（正確には、ローパスフィルタ５４による処理値）に基づいて、記憶装置３２に記憶されている標準足先ｘ−ｚ軌跡を補正する計算を行い、補正足先ｘ−ｚ軌跡を求める。図１２の参照番号６８のように係数が指定された場合、ローパスフィルタ処理された係数は参照番号７０で示すように変化する。
【００７１】
図１３の（Ａ）は、標準足先ｘ−ｚ軌跡２４０を例示している。標準的な歩幅と標準的なリフトによるときの遊脚の足先の軌跡を示している。図１３の（Ｂ）は、歩幅を２倍にしたときの軌跡２４５を示している。歩行方向の座標値が２．０倍されている。高さ方向の座標値には変化がなく、リフトは変化していない。
図１４は、足先軌跡を拡大して示すものであり、カーブ２４０は標準足先軌跡を示し、２４１から２４５は、図中にａに示す歩幅係数によって補正した足先軌跡を示している。歩行方向の座標値がａ倍されている。
図１４は、ロボット６（図１参照）の遊脚の足先を、標準軌跡２４０に沿ってポイント２４６まで移動させた段階で、オペレータが歩幅係数ａを１．０から２．０に変化させた場合を示す。
軌跡はｘ方向にΔｘだけ増分させながらｚ方向座標を読み出すことによって記述される。ポイント２４６まで進んだ以降には、Δｘだけ増分させたときのｚ座標を読み出す。
【００７２】
例示の場合、ポイント２４６から＋Δｘだけ進行した時点におけるローパスフィルタ処理された歩幅係数が１．２であり、歩幅係数１．２で補正した足先軌跡がカーブ２４１で示されている。＋Δｘの時点では、ポイント２４７のｚ座標が読み出される。以下同様に処理されるために、＋２Δｘの時点では、歩幅係数１．４で補正した足先軌跡２４２のポイント２４８のｚ座標が読み出される。＋３Δｘの時点では、歩幅係数１．６で補正した足先軌跡２４３のポイント２４９のｚ座標が読み出される。＋４Δｘの時点では、歩幅係数１．８で補正した足先軌跡２４４のポイント２５０のｚ座標が読み出される。＋５Δｘまで進行すると、ローパスフィルタ処理された歩幅係数が２．０に至り、歩幅係数２．０で補正した足先軌跡２４５のポイント２５１のｚ座標が読み出される。＋５Δｘ以降は、ローパスフィルタ処理された歩幅係数が２．０で安定し、Δｘだけ増分しながら足先軌跡２４５のｚ座標が読み出される。
この結果、標準足先軌跡２４０に沿ってポイント２４６に至り、以後、ポイント２４６，２４７，２４８，２４９，２５０，２５１を滑らかに結んで、歩幅係数２．０で補正した足先軌跡２４５に乗り換える足先軌跡２５２が得られる。
【００７３】
図１５の（Ａ）は、標準足先ｘ−ｚ軌跡２６０を例示しており、図１３の（Ａ）に示した軌跡２４０に等しい。標準的な歩幅と標準的なリフトによるときの遊脚足先の軌跡を示している。図１５の（Ｂ）は、リフトを１．５倍にしたときの足先軌跡２６５を示している。高さ方向の座標値が１．５倍されている。歩行方向の座標値には変化がなく、歩幅は変化していない。
図１６は、足先軌跡を拡大して示すものであり、カーブ２６０は標準足先軌跡を示し、２６１から２６５は、図中にｂに示すリフト係数によって補正した軌跡を示している。高さ方向の座標値がｂ倍されている。
図１６は、ロボットの遊脚の足先を、標準軌跡２６０に沿ってポイント２６６まで移動させた段階で、オペレータがリフト係数ｂを１．０から１．５に変化させた場合を示す。
軌跡はｘ方向にΔｘだけ増分させながらｚ方向座標を読み出すことによって記述される。ポイント２６６まで進んだ以降には、Δｘだけ増分させたときのｚ座標を読み出す。
【００７４】
例示の場合、ポイント２６６から＋Δｘだけ進行した時点におけるローパスフィルタ処理されたリフト係数が１．１であり、リフト係数１．１で補正した足先軌跡がカーブ２６１で示されている。＋Δｘの時点では、ポイント２６７のｚ座標が読み出される。以下同様に処理されるために、＋２Δｘの時点では、リフト係数１．２で補正した足先軌跡２６２のポイント２６８のｚ座標が読み出される。＋３Δｘの時点では、リフト係数１．３で補正した足先軌跡２６３のポイント２６９のｚ座標が読み出される。＋４Δｘの時点では、リフト係数１．４で補正した足先軌跡２６４のポイント２７０のｚ座標が読み出される。＋５Δｘまで進行すると、ローパスフィルタ処理されたリフト係数が１．５に至り、リフト係数１．５で補正した軌跡２６５のポイント２７１のｚ座標が読み出される。＋５Δｘ以降は、ローパスフィルタ処理されたリフト係数が１．５で安定し、Δｘだけ増分しながら軌跡２６５のｚ座標が読み出される。
この結果、標準足先軌跡２６０に沿ってポイント２６６に至り、以後、ポイント２６６，２６７，２６８，２６９，２７０，２７１を滑らかに結んで、リフト係数１．５で補正した足先軌跡２４５に乗り換える軌跡２７２が得られる。
【００７５】
図１３や図１４に示す例（ｘ−ｚ軌跡）では、図５や図６に示した例（ｘ−ｔ軌道）と異なり、歩幅係数を増加又は減少させても、歩行速度は一定である。よって、本実施例では、入力装置１２から入力された基準歩行速度がそのまま歩行速度となる。
【００７６】
図１７は、ロボットの遊脚の足先を、図１３（Ａ）と図１５（Ａ）に示した標準足先軌跡２８０に沿ってポイント２８６まで移動させた段階で、オペレータが歩幅係数を１．０から２．０に変化させ、リフト係数ｂを１．０から１．５に変化させた場合を示す。
足先軌跡はｘ方向にΔｘだけ増分させながらｚ方向座標を読み出すことによって記述される。ポイント２８６まで進んだ以降には、Δｘだけ増分させたときのｚ座標を読み出す。
【００７７】
例示の場合、ポイント２８６から＋Δｘだけ進行した時点におけるローパスフィルタ処理された歩幅係数が１．２でリフト係数が１．１であり、歩幅係数１．２とリフト係数１．１で補正した足先軌跡がカーブ２８１で示されている。＋Δｘの時点では、ポイント２８７のｚ座標が読み出される。以下同様に処理されるために、＋２Δｘの時点では、歩幅係数１．４とリフト係数１．２で補正した足先軌跡２８２のポイント２８８のｚ座標が読み出される。＋３Δｘの時点では、歩幅係数１．６とリフト係数１．３で補正した足先軌跡２８３のポイント２８９のｚ座標が読み出される。＋４Δｘの時点では、歩幅係数１．８とリフト係数１．４で補正した足先軌跡２８４のポイント２９０のｚ座標が読み出される。＋５Δｘまで進行すると、ローパスフィルタ処理された歩幅係数が２．０に至ってリフト係数が１．５に至り、歩幅係数２．０とリフト係数１．５で補正した軌跡２８５のポイント２９１のｚ座標が読み出される。＋５Δｘ以降は、ローパスフィルタ処理された歩幅係数が２．０で安定しリフト係数が１．５で安定し、Δｘだけ増分しながら足先軌跡２８５のｚ座標が読み出される。
この結果、標準足先軌跡２８０に沿ってポイント２８６に至り、以後、ポイント２８６，２８７，２８８，２８９，２９０，２９１を滑らかに結んで、歩幅係数２．０とリフト係数１．５で補正した足先軌跡２８５に乗り換える足先軌跡２９２が得られる。
【００７８】
第２実施例の場合も、第１実施例において図１１を参照して説明した処理手順と基本的には同様の処理手順を実行すればよい。但し、第２実施例の場合は、図１１のステップＳ２では、経過時間ｔに代えて、座標ｘを０．０に初期化する。ステップＳ４では、標準足先軌跡を読み出す。ステップＳ１４では、標準足先軌跡を補正する。ステップＳ１６では、座標ｘをΔｘだけ増分した場合における補正足先軌跡のｚ座標を読み出す。ステップＳ２４では、ステップＳ１６で読み出されたｚ座標値を遊脚の足先軌跡データに追加して記憶することによって、足先軌跡データを作成する。
【００７９】
（第３実施例）  図１に示すオペレータＨがリアルタイムでロボット６の歩行速度を指定する場合、予め体幹位置を示すデータを計算しておくことができない。足先位置と目標ＺＭＰが決まっていても、その目標ＺＭＰを実現する体幹位置は歩行速度に依存して変化するからである。
【００８０】
足先位置と、目標ＺＭＰ位置と、歩行速度が指定されれば、指定された歩行速度における実際のＺＭＰを目標ＺＭＰに一致させる体幹位置を計算することができる。第１実施例で説明した体幹位置の計算技術によると、従来に比べて体幹位置を高速に求めることができる。この結果、ロボットにリアルタイムで指定することが許容される最大の歩行速度を速くすることができる。しかし、その速度を無制限に速くすることができるわけではなく、その速度に制約が存在することは避けられない。
【００８１】
これに対し、図１８の体幹軌跡の作成装置３０６は、ロボットにリアルタイムで足先軌道を指定することが許容される最大の歩行速度よりも速く歩く速度係数を指定できる構成となっている。言い換えると、ロボット６にリアルタイムで速度係数を指定したときに、指定された速度における体幹位置をより少ない計算量でより高速に計算できる構成となっている。この作成装置３０６は、図１や図２に示すコンピュータ装置１４と一体的なものであってもよいし、別体のものであってもよい。
【００８２】
体幹軌跡の作成装置３０６には、体幹軌跡の計算手段３２０が用意されている。計算手段３２０には、第１実施例で説明した歩容データ記憶装置４６（図２参照）から、足先軌道（接地脚の位置と遊脚の軌道）と、目標ＺＭＰ位置が入力される。なお、第１実施例で説明した足先軌道生成部３０や目標ＺＭＰ位置計算部２６（図２参照）から直接に、それぞれ足先軌道や目標ＺＭＰ位置が入力されるようにしてもよい。このように、体幹軌跡の作成装置３０６には、足先軌道と目標ＺＭＰ位置のデータが予め教示されるようになっている。
【００８３】
また、体幹軌跡の作成装置３０６は、歩行速度が最低速である場合の体幹位置（Ｗｘ，Ｗｙ）の軌跡と、歩行速度が最高速である場合の体幹位置（Ｗｘ，Ｗｙ）の軌跡をオフライン処理で予め計算して、標準体幹軌跡記憶装置３０３に予め記憶しておく。この体幹位置の計算は、第１実施例で説明した体幹位置計算部３４（図２参照）で行ってもよいし、作成装置３０６自身で行ってもよいし、その他の計算部で行ってもよい。オフラインで予め計算するから、上記最高速は、第１実施例で許容される最大の歩行速度よりも速い速度に設定できる。上記最低速は任意の速度に設定すればよい。
【００８４】
体幹位置の計算は、第１実施例で説明した処理内容に限られない。例えば、次のような処理であってもよい。（１）体幹の位置を仮定して実際のＺＭＰの位置を計算する。次に、（２）実際のＺＭＰ位置と目標ＺＭＰ位置の偏差を計算する。次に、（３）その偏差が小さくなるように体幹の位置を補正する。再度（１）〜（３）の計算を繰り返す処理を複数回に亘って繰り返す。このような処理によっても目標ＺＭＰを実現する体幹位置を求めることができる。第１実施例で紹介した制御技術を用いて体幹位置を求めることに代えて、特定解に収束するまで計算を繰り返すことで体幹位置の軌道を解く方法を用いることができる。
【００８５】
体幹軌道は遊脚のｘ座標に対応して記憶される。図１８の記憶装置３０３の欄に示すｘ−Ｗｘ，１は、遊脚のｘ座標に対し、歩行速度が最低速である場合の体幹位置のｘ座標の関係を示す。ｘ−Ｗｙ，１は、歩行速度が最低速である場合の体幹位置のｙ座標の関係を示す。ｘ−Ｗｘ，２は、歩行速度が最高速である場合の体幹位置のｘ座標の関係を示す。ｘ−Ｗｙ，２は、歩行速度が最高速である場合の体幹位置のｙ座標の関係を示す。これらは予め計算して記憶しておく。
【００８６】
オペレータＨは、入力装置１２（図１と図２参照）を利用してリアルタイムでロボット６の歩行速度を指定する。計算手段３２０に入力される足先軌道は足先の座標と時間の関係を示すものであるから、歩行速度の情報が含まれている。
本実施例では、入力された足先軌道から求められる歩行速度を、速度係数ｃによって変更することで、ロボット６の歩行速度を最終的に決定する。速度係数ｃ＝１．０は最低速を示す。速度係数ｃ＝２．０は最高速を示す。オペレータＨは、速度係数ｃを１．０から２．０の範囲で指定する。指定された速度係数ｃは、図１８に示すローパスフィルタ３１７で処理され、指定された歩行速度における体幹の軌跡を計算する手段３２０に入力される。ローパスフィルタ３１７は、それまでの速度係数から新たに入力された速度係数まで滑らかに連続的に変化する速度係数を出力する。
【００８７】
図１９（Ａ）は、横軸に時間をとり、縦軸にリフト量を取っている。右脚の足先の高さの変化を示している。カーブ３２２ａと３２２ｃは遊脚になっている間の変化を示し、直線３２２ｂは接地状態であることを示す。図１９（Ｂ）は、左脚の足先の高さの変化を示している。カーブ３２４ｂは遊脚になっている間の変化を示し、直線３２４ａ、３２４ｃは接地状態であることを示す。右脚と左脚を交互に遊脚として歩行するときの軌道を示している。
【００８８】
図１９（Ｃ）は、ｙ方向の目標ＺＭＰの軌道３２６を示し、右脚と左脚が交互に接地脚となるのに対応して、目標ＺＭＰのｙ座標値は左右に振動する。片足接地中には接地脚の足裏内にあり、両足接地中に、次に接地脚となる足裏位置に移動する。図１９（Ｄ）は、ｘ方向の目標ＺＭＰの軌道３２８を示し、右脚と左脚が交互に接地脚となるのに対応して、階段状に増大する。片足接地中には接地脚の足裏内にあり、両足接地中に、次に接地脚となる足裏内位置に移動する。
【００８９】
図１９（Ｅ）には最低速で歩行する場合のｙ方向の目標ＺＭＰの軌道３２６が示され、図１９（Ｆ）には最高速で歩行する場合のｙ方向の目標ＺＭＰの軌道３２６ａが示されている。図１９（Ｅ）には最低速で歩行する場合のｙ方向の体幹位置の軌道３３０が示され、図１９（Ｆ）には最高速で歩行する場合のｙ方向の体幹位置の軌道３３０ａが示されている。ｙ方向の体幹位置の軌道３３０、３３０ａは、目標ＺＭＰの左右方向の振動に対応して左右方向に振動する。しかしながら振動の幅は相違する。図１９（Ｅ）の軌道３３０が示すように、最低速で歩行する場合には、体幹位置を左右方向に大きく移動させないと目標ＺＭＰを実現することができない。図１９（Ｆ）の軌道３３０ａが示すように、最高速で歩行する場合には、体幹位置を左右方向に小さく移動させるだけで目標ＺＭＰを実現することができる。これは、歩行速度によって慣性の影響が相違してくるからであり、人間の場合でも、ゆっくり歩く場合には体幹を左右に大きく振ってバランスをとるのに、高速で歩行する場合には体幹の左右の揺動量が小さくてすむのに対応している。
【００９０】
図１９（Ｇ）には最低速で歩行する場合のｘ方向の目標ＺＭＰの軌道３２８が示され、図１９（Ｈ）には最高速で歩行する場合のｘ方向の目標ＺＭＰの軌道３２８ａが示されている。図１９（Ｇ）には最低速で歩行する場合のｘ方向の体幹位置の軌道３３２が示され、図１９（Ｈ）には最高速で歩行する場合のｘ方向の体幹位置の軌道３３２ａが示されている。ｘ方向の体幹位置の軌道３３２、３３２ａは、目標ＺＭＰが階段状に変化するのに対応して階段状に変化する。しかしながら滑らかさの程度が相違する。図１９（Ｇ）の軌道３３２が示すように、最低速で歩行する場合には、明確に階段状に移動させないと目標ＺＭＰを実現することができない。図１９（Ｈ）の軌道３３２ａが示すように、最高速で歩行する場合には、体幹位置をｘ方向に一様に移動させるようにしても目標ＺＭＰを実現することができる。これは、歩行速度によって慣性の影響が相違してくるからであり、人間の場合でも、ゆっくり歩く場合には体幹を一歩一歩に対応して前進させるのに、高速で歩行する場合には体幹を連続的に前進させるのに対応している。
【００９１】
図２０は、図１９（Ｅ）と（Ｆ）のグラフを、ｘ軸にとって整理したグラフであり、ｘ軸に沿って整理すると、歩行速度によらないで体幹位置Ｗｙの振動周期が一定にそろい、歩行速度によって振幅が変化するだけであることがわかる。図中で、３３０ｂは低速歩行時の体幹位置Ｗｙの変化を示し、３３０ｃは高速歩行時の体幹位置Ｗｙの変化を示している。
同様に、図２１は、図１９（Ｇ）と（Ｈ）のグラフを、ｘ軸にとって整理したグラフであり、ｘ軸に沿って整理すると、歩行速度によらないで体幹位置Ｗｘの階段状変化の周期が一定にそろい、歩行速度によって滑らかさの程度が変化するだけであることがわかる。図中で、３３２ｂは低速歩行時の体幹位置Ｗｘの変化を示し、３３２ｃは高速歩行時の体幹位置Ｗｘの変化を示している。
図２０と図２１は、実時間に速度係数ｃを乗じた標準時間で統一的に扱っているということができる。標準時間で扱うと、歩行速度によらないで、体幹位置Ｗｘ，Ｗｙの振動周期等を統一させることができる。
【００９２】
図２０と図２１を用いると、任意の速度係数に対して、体幹位置Ｗｘの変化と、体幹位置Ｗｙの変化を計算することができる。
最低速でのｘ−Ｗｘ，１（グラフ３３２ｂ）とｘ−Ｗｙ，１（グラフ３３０ｂ）と、最高速でのｘ−Ｗｘ，２（グラフ３３２ｃ）とｘ−Ｗｙ，２（グラフ３３０ｃ）とが既知であれば、任意の速度係数ｃにおける体幹位置は、比例配分方式で下記のように計算することができる。
（Ｗｘ，ｃ）＝（Ｗｘ，１）＋（ｃ−１）×（（Ｗｘ，２）−（Ｗｘ，１））
（Ｗｙ，ｃ）＝（Ｗｙ，１）＋（ｃ−１）×（（Ｗｙ，２）−（Ｗｙ，１））
【００９３】
オペレータＨによって指定された速度係数によって、体幹位置Ｗｘ，Ｗｙを直接に計算する方式によると、計算量が多くて計算に長時間を要する。それに対して最低速でのｘ−Ｗｘ，１（グラフ３３２ｂ）とｘ−Ｗｙ，１（グラフ３３０ｂ）と、最高速でのｘ−Ｗｘ，２（グラフ３３２ｃ）とｘ−Ｗｙ，２（グラフ３３０ｃ）を予め求めておくと、任意の速度係数ｃに対して比例配分するだけで体幹位置Ｗｘ，Ｗｙを計算することができ、計算量が少なく、高速に計算することができる。
【００９４】
図１８の標準体幹軌跡記憶装置３０３は、予め求めておいた最低速でのｘ−Ｗｘ，１（グラフ３３２ｂ）とｘ−Ｗｙ，１（グラフ３３０ｂ）と、最高速でのｘ−Ｗｘ，２（グラフ３３２ｃ）とｘ−Ｗｙ，２（グラフ３３０ｃ）を記憶している。
計算手段３２０は、ローパスフィルタ処理された速度係数ｃを入力し、記憶装置３０３に記憶されている体幹位置（Ｗｘ，１）（Ｗｘ，２）（Ｗｙ，１）（Ｗｙ，２）を比例配分して、速度係数ｃにおける体幹位置（Ｗｘ，ｃ）（Ｗｙ，ｃ）を計算する。この計算速度は早く、ロボットを高速に歩行させるのに追従して計算することができる。
【００９５】
予め、足先軌道（接地脚の位置と、遊脚の軌道）と、目標ＺＭＰの軌道が指定されていれば、歩行速度についてはリアルタイムで指定することが可能であり、ロボットの高速歩行に追従して指定された歩行速度での体幹位置を計算することができる。足先軌道（接地脚の位置と遊脚の軌道）と、目標ＺＭＰの軌道に加えて、リアルタイムで体幹の軌跡が計算されることから、リアルタイムで歩容データが作成され、リアルタイムで作成された歩容データは、歩容データ記憶装置４６（図２参照）に一旦記憶されてからロボット６に伝達される。ロボット６は、図１１のステップＳ３４（関節角の計算）を繰り返して歩行する。
【００９６】
図２２は、足先軌道（接地脚の位置と、遊脚の軌道）と、目標ＺＭＰの軌道が指定された時点でする準備処理手順を示す。この準備作業はオフラインで処理しておくことができる。この準備作業は、図２のコンピュータ装置１４、図１８の作成装置３０６又はその他の計算部で行うことができる。ステップＳ４０では、歩容データ記憶装置４６（図２参照）から、左脚の足先の位置と姿勢を示すデータと、左脚の足先の位置と姿勢を示すデータと、目標ＺＭＰの位置を示すデータを取得する。ステップＳ４２では、最低速での体幹軌跡ｘ−Ｗｘ，１（グラフ３３２ｂ）とｘ−Ｗｙ，１（グラフ３３０ｂ）を計算し、標準速度での体幹軌跡を記憶する記憶装置３０３に記憶する。ステップＳ４４では、最高速での体幹軌跡ｘ−Ｗｘ，２（グラフ３３２ｃ）とｘ−Ｗｙ，２（グラフ３３０ｃ）を計算し、標準速度での体幹軌跡を記憶する記憶装置３０３に記憶する。以上によって準備処理は完了する。
【００９７】
図２３は、予め予定されている足先軌道（接地脚の位置と遊脚の軌道）と目標ＺＭＰの軌道に従って、実際に歩行する場合の処理手順を示す。オペレータは、リアルタイムで速度係数ｃを指定することができる
ステップＳ５０では、体幹軌跡の作成装置３０６の計算手段３２０は、歩容データ記憶装置４６から、左脚の足先の位置と姿勢を示すデータと、左脚の足先の位置と姿勢を示すデータと、目標ＺＭＰの位置を示すデータを取得する。
ステップＳ５２では、計算手段３２０は、標準速度での体幹軌跡を記憶している記憶装置３０３から、ステップＳ５０で読み出された歩容データに対応する標準速度（最高速と最低速）での体幹軌跡を読み出す。
ステップＳ５４では、計算手段３２０は、オペレータＨが歩行開始信号を入力するのを待つ。歩行開始信号が入力されたら、ステップＳ５６で、計算手段３２０は、ローパスフィルタ処理された速度係数ｃを取得する。
【００９８】
ステップＳ５８では、計算手段３２０は、ステップＳ６２以下の処理を所定時間（時間間隔Δｔ）ごとに繰り返すように手配する。そして、計算手段３２０は、指定された速度係数ｃに応じた遊脚の歩行量とリフト量と目標ＺＭＰ位置を読み出す（ステップＳ６２）。さらに、ステップＳ６４では、計算手段３２０は、指定された速度係数ｃでの体幹軌跡（Ｗｘ，ｃ）（Ｗｙ，ｃ）を計算する。ステップＳ６６では、接地脚の足先の位置と姿勢と、遊脚の足先の位置と姿勢と、目標ＺＭＰの位置と、指定された速度係数での体幹位置（Ｗｘ，ｃ）（Ｗｙ，ｃ）を統合した歩容データが、歩容データ記憶装置４６から関節角群の計算装置４８に入力される。図１１のステップＳ３４（関節角の計算処理）を繰り返すことで、ロボット６は歩行を継続できる。
ステップＳ６８では、作成装置３０６は、歩行停止信号の入力を待ち、入力されなければ、ステップＳ５６以降の処理を繰り返す。歩行停止信号が入力されれば歩行停止処理を実行する（Ｓ７０）。ステップＳ６４の計算量が少ないために、図２３の処理は短時間で実行できる。ロボットは、高速で歩行することができる。
【００９９】
以上、本発明の具体例を詳細に説明したが、これらは例示であり、特許請求の範囲を限定するものではない。また、本発明はいくつかの目的を解決するものであり、全部の目的を同時に解決するときに限って有意義なものではなく、一または二の目的を解決するだけで有意義なものである。
【０１００】
【発明の効果】本発明によると、歩容データが短時間で簡便に作成できるために、動作するロボットにリアルタイムで指示し、指示内容を反映した歩容データを短時間で作成し、作成された歩容データをロボットに指示してリアルタイムでロボットの歩行を制御することを可能とする。
【図面の簡単な説明】
【図１】ロボットにリアルタイムで指令する様子を説明する図。
【図２】コンピュータ装置の機能をブロック化して示す図。
【図３】足先軌道生成部等の構成図。
【図４】標準足先軌道と、それを補正する歩幅係数の意味を説明する図。
【図５】標準足先軌道と歩幅係数で補正された補正足先軌道を例示する図。
【図６】標準足先軌道と補正足先軌道から歩幅変化時の足先軌道を計算する過程を示す図。
【図７】標準足先軌道とリフト係数で補正された補正足先軌道を例示する図。
【図８】標準足先軌道と補正足先軌道からリフト変化時の足先軌道を計算する過程を示す図。
【図９】目標ＺＭＰ位置を説明する図。
【図１０】ロボットの力学モデルと、ＺＭＰの計算式と、ＺＭＰの変換式を説明する図。
【図１１】標準足先軌道と指定された歩幅係数とリフト係数に基づいて足先軌道を算出しながらリアルタイムでロボットを歩行させるための処理手順図。
【図１２】足先軌道生成部等の構成図。
【図１３】標準足先軌跡と歩幅係数で補正された補正足先軌跡を例示する図。
【図１４】標準足先軌跡と補正足先軌跡から歩幅変化時の足先軌跡を計算する過程を示す図。
【図１５】標準足先軌跡とリフト係数で補正された補正足先軌跡を例示する図。
【図１６】標準足先軌跡と補正足先軌跡からリフト変化時の足先軌跡を計算する過程を示す図。
【図１７】標準足先軌跡と補正足先軌跡から歩幅とリフト変化時の足先軌跡を計算する過程を示す図。
【図１８】リアルタイムで、速度係数を指定して、体幹位置を計算して歩容データを作成するシステム構成を示す図。
【図１９】足先軌道と体幹位置の関係を例示する図。
【図２０】座標軸を揃えて、異なる速度での体幹位置の変化を示す図。
【図２１】座標軸を揃えて、異なる速度での体幹位置の変化を示す図。
【図２２】体幹位置を計算するために準備工程で実施する処理手順図。
【図２３】指定された速度での体幹位置を計算する処理手順図。
【図２４】歩容データの基準点を示す図。
【符号の説明】
１２：入力装置
１４：コンピュータ装置
２６：目標ＺＭＰ位置計算部
３０：足先軌道生成部
３２：標準足先軌道記憶装置
３４：体幹位置計算部
４０：ロボット力学モデル
４２：実際のＺＭＰ位置計算部
４６：歩容データ記憶装置
【図１】
2005022039.tif 000003
【図２】
2005022039.tif 000004
【図３】
2005022039.tif 000005
【図４】
2005022039.tif 000006
【図５】
2005022039.tif 000007
【図６】
2005022039.tif 000008
【図７】
2005022039.tif 000009
【図８】
2005022039.tif 000010
【図９】
2005022039.tif 000011
【図１０】
2005022039.tif 000012
【図１１】
2005022039.tif 000013
【図１２】
2005022039.tif 000014
【図１３】
2005022039.tif 000015
【図１４】
2005022039.tif 000016
【図１５】
2005022039.tif 000017
【図１６】
2005022039.tif 000018
【図１７】
2005022039.tif 000019
【図１８】
2005022039.tif 000020
【図１９】
2005022039.tif 000021
【図２０】
2005022039.tif 000022
【図２１】
2005022039.tif 000023
【図２２】
2005022039.tif 000024
【図２３】
2005022039.tif 000025
【図２４】
2005022039.tif 000026