(57)【要約】【課題】  歩容データの作成時間を短縮することができる技術を提供すること。【解決手段】  本発明に係るコンピュータ装置３０は、足先位置データの記憶手段４６ａと、「ロボットの両腕は胴体に固定されている」という仮定の下で体幹位置データを作成する手段４０と、手先位置データの記憶手段４６ｃ’と、手先位置の差と体幹位置の修正量との関係を記憶している体幹位置修正量記憶部１２６と、体幹位置データを修正する装置１２８を備える。この修正装置１２８は、前記の仮定の下での手先位置と手先位置データの手先位置との差を計算し、その差と体幹位置修正量記憶部１２６の記憶内容とから体幹位置修正量を特定し、特定された体幹位置修正量に基づいて体幹位置データを修正する。【選択図】  図３
2005118924.tif 000002
【特許請求の範囲】
【請求項１】
両腕を動作させながら歩行するロボットの歩容データを作成する装置であり、
ロボットの動作開始からの経過時間毎の足先位置が記述された足先位置データを記憶している手段と、
「ロボットの両腕は胴体に固定されている」という仮定の下で、ロボットの動作開始からの経過時間毎の体幹位置が記述された体幹位置データを作成する手段と、
ロボットの動作開始からの経過時間毎の手先位置が記述された手先位置データを記憶する手段と、
手先位置の差と体幹位置の修正量との関係を記憶している体幹位置修正量データベースと、
作成された体幹位置データを修正する装置とを備え、
その修正装置は、
ロボットの動作開始からの経過時間毎の「前記仮定の下での手先位置と手先位置データの手先位置との差」を計算する手段と、
ロボットの動作開始からの経過時間毎の「前記仮定の下での手先位置と手先位置データの手先位置との差」と、体幹位置修正量データベースの記憶内容とに基づいて、ロボットの動作開始からの経過時間毎の「体幹位置の修正量」を特定する手段と、
ロボットの動作開始からの経過時間毎の「体幹位置の修正量」に基づいて、作成された体幹位置データを修正する手段とを有することを特徴とする歩容データ作成装置。
【請求項２】
両腕を動作させながら歩行するロボットの歩容データを作成する装置であり、
ロボットの動作開始からの経過時間毎の足先位置が記述された足先位置データを記憶している手段と、
「ロボットの両腕は胴体に固定されている」という仮定の下で、ロボットの動作開始からの経過時間毎の体幹位置が記述された体幹位置データを作成する手段と、
ロボットの動作開始からの経過時間毎の手先位置が記述された手先位置データを記憶する手段と、
重心位置の差と体幹位置の修正量との関係を記憶している体幹位置修正量データベースと、
作成された体幹位置データを修正する装置とを備え、
その修正装置は、
前記仮定の下で、足先位置データと作成された体幹位置データと各足の質量と体幹の質量と各腕の質量とに基づいて、ロボットの動作開始からの経過時間毎の重心位置を計算する第１計算手段と、
足先位置データと作成された体幹位置データと手先位置データと各足の質量と体幹の質量と各腕の質量とに基づいて、ロボットの動作開始からの経過時間毎の重心位置を計算する第２計算手段と、
ロボットの動作開始からの経過時間毎の「第１計算手段で計算された重心位置と第２計算手段で計算された重心位置との差」を計算する第３計算手段と、
ロボットの動作開始からの経過時間毎の「第１計算手段で計算された重心位置と第２計算手段で計算された重心位置との差」と、体幹位置修正量データベースの記憶内容とに基づいて、ロボットの動作開始からの経過時間毎の「体幹位置の修正量」を特定する手段と、
ロボットの動作開始からの経過時間毎の「体幹位置の修正量」に基づいて、作成された体幹位置データを修正する手段とを有することを特徴とする歩容データ作成装置。
【請求項３】
請求項１又は２の歩容データ作成装置と、その歩容データ作成装置で作成された歩容データに従って運動するロボットと、オペレータによって操作される操作部材とを備えるロボットシステムであり、
歩容データ作成装置は、操作部材が操作されると前記手先位置データを作成して前記手先位置データ記憶手段に記憶させる手段を有し、
ロボットは、操作部材が操作されると歩容データ作成装置の前記手先位置データ記憶手段の記憶内容に従って両腕を動作させ、
歩容データ作成装置の前記修正装置は、操作部材が操作されると前記体幹位置データを修正することを特徴とするロボットシステム。
【請求項４】
両腕を動作させながら歩行するロボットの、歩行パターンが同じであって両腕の動作パターンが異なる複数パターンの歩容データを作成する装置であり、
ロボットの動作開始からの経過時間毎の足先位置が記述された足先位置データを記憶している手段と、
少なくとも２パターンの「ロボットの動作開始からの経過時間毎の手先位置」が記述された手先位置データを記憶している手段と、
足先位置データと一方のパターンの手先位置データとに基づいて、一方のパターンの「ロボットの動作開始からの経過時間毎の体幹位置」が記述された体幹位置データを作成する第１作成装置と、
手先位置の差と体幹位置の修正量との関係を記憶している体幹位置修正量データベースと、
他方のパターンの「ロボットの動作開始からの経過時間毎の体幹位置」が記述された体幹位置データを作成する第２作成装置とを備え、
その第２作成装置は、
ロボットの動作開始からの経過時間毎の「一方のパターンの手先位置データの手先位置と他方のパターンの手先位置データの手先位置との差」を計算する手段と、
ロボットの動作開始からの経過時間毎の「一方のパターンの手先位置データの手先位置と他方のパターンの手先位置データの手先位置との差」と、体幹位置修正量データベースの記憶内容とに基づいて、ロボットの動作開始からの経過時間毎の「体幹位置の修正量」を特定する手段と、
ロボットの動作開始からの経過時間毎の「体幹位置の修正量」に基づいて一方のパターンの体幹位置データを修正することによって、他方のパターンの体幹位置データを作成する手段とを有することを特徴とする歩容データ作成装置。
【請求項５】
両腕を動作させながら歩行するロボットの、歩行パターンが同じであって両腕の動作パターンが異なる複数パターンの歩容データを作成する装置であり、
ロボットの動作開始からの経過時間毎の足先位置が記述された足先位置データを記憶している手段と、
少なくとも２パターンの「ロボットの動作開始からの経過時間毎の手先位置」が記述された手先位置データを記憶している手段と、
足先位置データと一方のパターンの手先位置データとに基づいて、一方のパターンの「ロボットの動作開始からの経過時間毎の体幹位置」が記述された体幹位置データを作成する第１作成装置と、
重心位置の差と体幹位置の修正量との関係を記憶している体幹位置修正量データベースと、
他方のパターンの「ロボットの動作開始からの経過時間毎の体幹位置」が記述された体幹位置データを作成する第２作成装置とを備え、
その第２作成装置は、
足先位置データと一方のパターンの手先位置データと一方のパターンの体幹位置データと各足の質量と体幹の質量と各腕の質量とに基づいて、ロボットの動作開始からの経過時間毎の重心位置を計算する第１計算手段と、
足先位置データと他方のパターンの手先位置データと一方のパターンの体幹位置データと各足の質量と体幹の質量と各腕の質量とに基づいて、ロボットの動作開始からの経過時間毎の重心位置を計算する第２計算手段と、
ロボットの動作開始からの経過時間毎の「第１計算手段で計算された重心位置と第２計算手段で計算された重心位置との差」を計算する第３計算手段と、
ロボットの動作開始からの経過時間毎の「第１計算手段で計算された重心位置と第２計算手段で計算された重心位置との差」と、体幹位置修正量データベースの記憶内容とに基づいて、ロボットの動作開始からの経過時間毎の「体幹位置の修正量」を特定する手段と、
ロボットの動作開始からの経過時間毎の「体幹位置の修正量」に基づいて一方のパターンの体幹位置データを修正することによって、他方のパターンの体幹位置データを作成する手段とを有することを特徴とする歩容データ作成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、体幹（胴体）に対して両足と両腕が揺動可能に連結されているロボットを、両腕を動作させながら歩行させるのに必要なデータ（歩容データ）の作成技術に関する。
【背景技術】
【０００２】
体幹に対して両足と両腕の相対的姿勢を変化させることによって、両腕を動作させながら歩行するロボットが開発されている。このロボットの場合、体幹と左足先と右足先と左手先と右手先の位置を指示する歩容データが利用される。
歩容データは、ロボットが活動する空間の座標を定めるグローバル座標系において、体幹と両足先と両手先の位置を指示する。体幹と両足先と両手先の位置を指示するために、体幹と左足先と右足先と左手先と右手先にそれぞれ基準点が定められている。歩容データは、体幹の基準点と左足先の基準点と右足先の基準点と左手先の基準点と右手先の基準点の位置を経時的に指示する、グローバル座標系での座標データ（ｘ、ｙ、ｚ）を備えている。（ｘ、ｙ、ｚ）の座標データは、ロボットの動作開始からの経過時間ｔに対して変化する。経時的に変化する体幹と左足先と右足先と左手先と右手先の位置を指示する歩容データに従って、体幹と両足と両腕の相対的姿勢を経時的に変化させることによって、ロボットは両腕を動作させながら歩行する。
【０００３】
より具体的に説明すると、経時的に変化する体幹と左足先と右足先と左手先と右手先の位置を指示する歩容データに従って、その姿勢を実現するのに必要な各関節の関節角を計算し、関節を回転させるアクチュエータを制御して計算された関節角に調整する。経時的に変化する歩容データに従って計算される関節角も経時的に変化する。ロボットは、経時的に関節角を変化させることによって体幹と両足と両腕の相対位置関係を経時的に変化させ、その結果として両腕を動作させながら歩行する。
【０００４】
体幹位置を経時的に指示するデータＷ（ｘ（ｔ）、ｙ（ｔ）、ｚ（ｔ））と、左足先位置を経時的に指示するデータＬｆ（ｘ（ｔ）、ｙ（ｔ）、ｚ（ｔ））と、右足先位置を経時的に指示するデータＲｆ（ｘ（ｔ）、ｙ（ｔ）、ｚ（ｔ））と、左手先位置を経時的に指示するデータＬｈ（ｘ（ｔ）、ｙ（ｔ）、ｚ（ｔ））と、右手先位置を経時的に指示するデータＲｈ（ｘ（ｔ）、ｙ（ｔ）、ｚ（ｔ））は、独立に決定できるのものでなく、ロボットがバランスを保って転倒を免れられるものでなければならない。
【０００５】
歩容データを作成する第１段階では、両足と両腕の相対的姿勢の変化を想定しながら、左足先位置を経時的に指示するデータと、右足先位置を経時的に指示するデータと、左手先位置を経時的に指示するデータと、右手先位置を経時的に指示するデータを作成する。
歩容データを作成する第２段階では、上記の各データから、体幹位置を経時的に指示するデータを計算して算出する。
体幹位置を指示するデータを計算するために、ＺＭＰ（zero moment point）が利用される。ＺＭＰは、ロボットが床から受ける反力によるモーメントがゼロになる点をいい、ＺＭＰが接地足の足平内にあればロボットは転倒しない。逆にいうと、ロボットが転倒しないためには、ＺＭＰが接地足の足平内になければならない。そこで、体幹位置を指示するデータを計算するために、接地足の足平内に存在する目標ＺＭＰを定める。この目標ＺＭＰは接地足の足平内にあることが必要とされ、左足先位置を経時的に指示するデータと右足先位置を経時的に指示するデータから、目標ＺＭＰを経時的に指示するデータＺＭＰＴ（ｘ（ｔ）、ｙ（ｔ））を定めることができる。平地を歩行する場合、目標ＺＭＰのｚ座標はゼロとすることができる。
【０００６】
左足先位置を経時的に示すデータと、右足先位置を経時的に示すデータと、左手先位置を経時的に示すデータと、右手先位置を経時的に示すデータと、体幹位置を経時的に示すデータを利用することによって、実際に得られるＺＭＰの位置を経時的に指示するデータＺＭＰＲ（ｘ（ｔ）、ｙ（ｔ））を計算することができる。
そこで、体幹位置を経時的に示すデータを仮定し、それから実際に得られるＺＭＰの位置を経時的に指示するデータＺＭＰＲ（ｘ（ｔ）、ｙ（ｔ））を計算する。次に、計算されたＺＭＰＲ（ｘ（ｔ）、ｙ（ｔ））と、目標ＺＭＰを示すＺＭＰＴ（ｘ（ｔ）、ｙ（ｔ））の偏差を求める。そしてその偏差が小さくなる側に体幹位置を示すデータを修正する。
即ち、（１）体幹位置を仮定して実際に得られるＺＭＰの位置を計算し、（２）目標ＺＭＰとの偏差を計算し、（３）その偏差が小さくなるように体幹位置を修正し、再度（１）〜（３）の計算を繰返す処理を相当回数に亘って繰返すことによって目標ＺＭＰを実現する体幹位置を計算している。
特許文献１には、上記のようにして体幹位置を計算することが開示されている。
【特許文献１】特開平１０−２３０４８５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
体幹位置を経時的に示すデータと、左足先位置を経時的に示すデータと、右足先位置を経時的に示すデータと、左手先位置を経時的に示すデータと、右手先位置を経時的に示すデータの５つのデータから、実際に得られるＺＭＰの位置（ＺＭＰＲ）を計算するには多くの時間がかかる。しかも、実際に得られるＺＭＰの位置と目標ＺＭＰの位置の偏差が少なくなるように体幹位置を修正し、実際に得られるＺＭＰの位置（ＺＭＰＲ）を計算する処理を複数回に亘って繰り返す必要があるために、膨大な計算時間を要する。
【０００８】
本発明は、上記した実情に鑑みてなされたものであり、体幹位置を計算するための時間を短縮することができる技術を提供し、これにより、歩容データの作成に要する時間を短縮することを目的とする。
【課題を解決するための手段】
【０００９】
創作された一つの技術は、両腕を動作させながら歩行するロボットの歩容データを作成する装置である。この装置は、ロボットの動作開始からの経過時間毎の足先位置（左足先位置と右足先位置）が記述された足先位置データを記憶している手段を備える。また、「ロボットの両腕は胴体に固定されている」という仮定の下で、ロボットの動作開始からの経過時間毎の体幹位置が記述された体幹位置データを作成する手段を備える。また、ロボットの動作開始からの経過時間毎の手先位置（左手先位置と右手先位置）が記述された手先位置データを記憶する手段を備える。また、手先位置の差と体幹位置の修正量との関係を記憶している体幹位置修正量データベースを備える。また、作成された体幹位置データを修正する装置を備える。この修正装置は、ロボットの動作開始からの経過時間毎の「前記の仮定の下での手先位置と手先位置データの手先位置との差」を計算する手段を有する。また、ロボットの動作開始からの経過時間毎の「前記の仮定の下での手先位置と手先位置データの手先位置との差」と、体幹位置修正量データベースの記憶内容とに基づいて、ロボットの動作開始からの経過時間毎の「体幹位置の修正量」を特定する手段を有する。さらに、ロボットの動作開始からの経過時間毎の「体幹位置の修正量」に基づいて、作成された体幹位置データを修正する手段を有する。
【００１０】
上記の歩容データ作成装置では、「ロボットの両腕は胴体に固定されている」と仮定して仮の体幹位置データを作成する。即ち、左手先位置と右手先位置の経時的変化を示すデータ（手先位置データ）を加味しないで、目標ＺＭＰを実現する体幹位置の経時的変化を示すデータ（体幹位置データ）を計算する。従って、体幹位置データを計算するための時間を大幅に短縮することができる。手先位置を計算にもりこまないので計算量が圧縮される。
実際は、上記の仮定が成立しない動作を両腕にさせるために、上記の仮定の下で作成された仮の体幹位置データを利用してロボットが動作すると、ロボットの姿勢が不安定になってしまう。従って、この歩容データ作成装置には、体幹位置修正量データベースと、作成された体幹位置データ（即ち仮の体幹位置データ）を修正する装置が設けられている。
体幹位置修正量データベースには、手先位置の差から体幹位置の修正量を特定できる情報が記憶されている。即ち、上記の仮定の下での手先位置と実際の手先位置との差から、作成された仮の体幹位置をどれだけ修正すればよいのかを特定できる情報が記憶されている。
修正装置は、上記のデータベースの情報を用いて、上記した仮定の下で作成された体幹位置データを修正する。即ち、上記の仮定の下での手先位置と実際の手先位置との差（ズレ）を計算し、計算された手先位置の差から体幹位置の修正量を特定し、特定された修正量の分だけ体幹位置を修正する。これにより、両腕を自由に動作させてもロボットの姿勢が安定する体幹位置データが作成されることになる。
この歩容データ作成装置では、仮の体幹位置データを作成し、それを修正することによって真の体幹位置データを作成する。仮の体幹位置データを作成するための計算時間を大幅に短縮できるために、仮の体幹位置データを修正するための時間が必要だとしても、全体としては歩容データの作成に要する時間を短縮することができる。
ここで、上記の手先位置データ記憶手段は、ロボットを実際に動作させながら手先位置データを記憶していくものであってもよい。歩行パターンから仮の歩容データを作成しておくことができる。この段階までをロボットの実際の動作前に完了しておくことができる。この段階までを完了しておくと、実際の体幹位置を求める計算は修正のみで済み、短時間で実行できるために、手の動きについてはロボットの動作とリアルタイムで指示することができる。
【００１１】
体幹位置修正量データベースは、手先位置の差と体幹位置の修正量との関係を記憶するかわりに、重心位置の差と体幹位置の修正量との関係を記憶していてもよい。即ち、上記の仮定の下での重心位置と、実際に両腕を動作させたときの重心位置との差から、作成された仮の体幹位置をどれだけ修正すればよいのかを特定できる情報を記憶するようにしてもよい。
この場合、体幹位置の修正装置は、第１計算手段と第２計算手段と第３計算手段と特定手段と修正手段から構成されるようにしてもよい。
第１計算手段は、前記の仮定の下で、足先位置データと作成された体幹位置データと各足の質量と体幹の質量と各腕の質量とに基づいて、ロボットの動作開始からの経過時間毎の重心位置を計算する。これにより、上記の仮定の下での重心位置が計算されることになる。
第２計算手段は、足先位置データと作成された体幹位置データと手先位置データと各足の質量と体幹の質量と各腕の質量とに基づいて、ロボットの動作開始からの経過時間毎の重心位置を計算する。これにより、実際の手先位置が加味された重心位置が計算される。
第３計算手段は、ロボットの動作開始からの経過時間毎の「第１計算手段で計算された重心位置と第２計算手段で計算された重心位置との差」を計算する。これにより、上記の仮定の下での重心位置と、実際の手先位置が加味された重心位置との差（ズレ）が計算される。
特定手段は、ロボットの動作開始からの経過時間毎の「第１計算手段で計算された重心位置と第２計算手段で計算された重心位置との差」と、体幹位置修正量データベースの記憶内容とに基づいて、ロボットの動作開始からの経過時間毎の「体幹位置の修正量」を特定する。
修正手段は、ロボットの動作開始からの経過時間毎の「体幹位置の修正量」に基づいて、作成された体幹位置データを修正する。
この歩容データ作成装置によると、仮の体幹位置データをまず作成し、それを修正することによって真の体幹位置データを作成する。仮の体幹位置データを計算するのに要する時間を大幅に短縮できる。仮の体幹位置データを修正するための時間が必要だとしても、全体としては歩容データを作成するのに必要な時間を短縮することができる。
【００１２】
上記した歩容データ作成装置を用いて、以下のロボットシステムを構築することができる。このシステムは、上記した歩容データ作成装置と、その歩容データ作成装置で作成された歩容データに従って運動するロボットと、オペレータによって操作される操作部材とを備える。歩容データ作成装置は、操作部材が操作されると前記した手先位置データを作成して前記の手先位置データ記憶手段に記憶させる手段を有する。ロボットは、操作部材が操作されると歩容データ作成装置の前記の手先位置データ記憶手段の記憶内容に従って両腕を動作させる。歩容データ作成装置の前記した修正装置は、操作部材が操作されると前記の体幹位置データを修正する。
このシステムによると、オペレータによる操作部材の操作に応じてロボットが両腕を動作させることになる。ロボットが両腕を動作させるのに必要な手先位置データは、オペレータによって操作部材が操作されると作成され、これに追従して体幹位置が修正される。従って、ロボットが両腕を動作させても、ロボットの姿勢が不安定になることはない。比較的簡単な修正計算で真の体幹位置が計算できるために、ロボットの実際の腕の動きに追随しながら真の体幹位置を計算していくことができる。
本発明では、ロボットの両腕の動作をオペレータがリアルタイムに指示することができるシステムが実現されている。
【００１３】
本発明では、両腕を動作させながら歩行するロボットの、歩行パターンが同じであって両腕の動作パターンが異なる複数パターンの歩容データを作成する装置も提供する。
この歩容データ作成装置は、ロボットの動作開始からの経過時間毎の足先位置が記述された足先位置データを記憶している手段を備える。また、少なくとも２パターンの「ロボットの動作開始からの経過時間毎の手先位置」が記述された手先位置データを記憶している手段を備える。また、足先位置データと一方のパターンの手先位置データとに基づいて、一方のパターンの「ロボットの動作開始からの経過時間毎の体幹位置」が記述された体幹位置データを作成する第１作成装置を備える。また、手先位置の差と体幹位置の修正量との関係を記憶している体幹位置修正量データベースを備える。また、他方のパターンの「ロボットの動作開始からの経過時間毎の体幹位置」が記述された体幹位置データを作成する第２作成装置を備える。この第２作成装置は、ロボットの動作開始からの経過時間毎の「一方のパターンの手先位置データの手先位置と他方のパターンの手先位置データの手先位置との差」を計算する手段を有する。また、ロボットの動作開始からの経過時間毎の「一方のパターンの手先位置データの手先位置と他方のパターンの手先位置データの手先位置との差」と、体幹位置修正量データベースの記憶内容とに基づいて、ロボットの動作開始からの経過時間毎の「体幹位置の修正量」を特定する手段を有する。さらに、ロボットの動作開始からの経過時間毎の「体幹位置の修正量」に基づいて一方のパターンの体幹位置データを修正することによって、他方のパターンの体幹位置データを作成する手段を有する。
【００１４】
例えば、歩行パターンが同じであって両腕の動作パターンが異なる２パターンの歩容データを作成する場合、従来は、共通の足先位置データと一方の手先位置データから一方の体幹位置データを作成し、共通の足先位置データと他方の手先位置データから他方の体幹位置データを作成する。この場合、膨大な計算時間を要する。
上記した歩容データ作成装置は、共通の足先位置データと一方の手先位置データから一方の体幹位置データを作成するところまでは従来と同じである。しかしながら、一方の手先位置と他方の手先位置との差から体幹位置の修正量を特定し、一方の体幹位置を修正することによって他方の体幹位置を作成する点が従来と異なる。一方の体幹位置データを修正して他方の体幹位置データを作成する方が、共通の足先位置データと他方の手先位置データから他方の体幹位置データを作成するよりも計算時間を短くすることができる。この歩容データ作成装置によると、複数パターンの歩容データを短時間で作成することができる。
【００１５】
手先位置の差から体幹位置の修正量を特定できるようにするかわりに、重心位置の差から体幹位置の修正量を特定できるようにして他方の体幹位置データを作成するようにしてもよい。この場合、体幹位置修正量データベースは、重心位置の差と体幹位置の修正量との関係を記憶している必要がある。
第２作成装置は、第１計算手段と第２計算手段と第３計算手段と特定手段と作成手段から構成されるようにしてもよい。
第１計算手段は、足先位置データと一方のパターンの手先位置データと一方のパターンの体幹位置データと各足の質量と体幹の質量と各腕の質量とに基づいて、ロボットの動作開始からの経過時間毎の重心位置を計算する。
第２計算手段は、足先位置データと他方のパターンの手先位置データと一方のパターンの体幹位置データと各足の質量と体幹の質量と各腕の質量とに基づいて、ロボットの動作開始からの経過時間毎の重心位置を計算する。
第３計算手段は、ロボットの動作開始からの経過時間毎の「第１計算手段で計算された重心位置と第２計算手段で計算された重心位置との差」を計算する。
特定手段は、ロボットの動作開始からの経過時間毎の「第１計算手段で計算された重心位置と第２計算手段で計算された重心位置との差」と、体幹位置修正量データベースの記憶内容とに基づいて、ロボットの動作開始からの経過時間毎の「体幹位置の修正量」を特定する。
作成手段は、ロボットの動作開始からの経過時間毎の「体幹位置の修正量」に基づいて一方のパターンの体幹位置データを修正することによって、他方のパターンの体幹位置データを作成する。
この歩容データ作成装置によると、一方の体幹位置データを修正することによって他方の体幹位置データを作成する。一方の体幹位置データを修正する時間は確かに必要だが、この時間は、従来の手法を用いて他方の体幹位置データを作成するよりも短くて済む。この歩容データ作成装置によると、複数パターンの歩容データを作成するのに要する計算時間を短縮することができる。
【発明を実施するための最良の形態】
【００１６】
（形態１）ロボットが両腕を左右対称に動作させる場合は、「ロボットの両腕が胴体に固定されている」という仮定が成立するものとして、体幹位置データを作成することができる。この思想を用いた技術を以下に記載しておく。
この技術は、両腕を左右対称に動作させながら歩行するロボットの歩容データを作成する装置である。この装置は、ロボットの動作開始からの経過時間毎の足先位置が記述された足先位置データを記憶している手段を備える。また、「ロボットの両腕は胴体に固定されている」という仮定の下で、ロボットの動作開始からの経過時間毎の体幹位置が記述された体幹位置データを作成する手段を備える。
この歩容データ作成装置によると、手先位置データを加味しないで体幹位置データを作成することができるために、両腕を左右対称に動作させるロボットの歩容データを短時間で作成することができる。
（形態２）「手先位置の差」は、以下のようにして表現されるものであってもよい。ある時間ｔにおいて、両腕が胴体に固定されている場合（即ち上記した仮定の下での場合）の左手先位置が位置ＡＬであり右手先位置が位置ＡＲであるとする。このとき、左手先の位置ＡＬを実現するための胴体に対する左腕の回転角がθＡＬであり、右手先の位置ＡＲを実現するための胴体に対する右腕の回転角がθＡＲであるとする。さらに、上記した時間ｔにおいて、実際の左手先位置が位置ＢＬであり右手先位置が位置ＢＲであるとする。この場合、左手先の位置ＢＬを実現するための胴体に対する左腕の回転角がθＢＬであり、右手先の位置ＢＲを実現するための胴体に対する右腕の回転角がθＢＲであるとする。このとき、両腕が胴体に固定されている場合の手先位置と、実際の手先位置との差（即ち手先位置の差）は、θＡＬとθＢＬの差と、θＡＲとθＢＲの差との和で表現することができる。
【実施例】
【００１７】
（第１実施例）  図面を参照して本発明の実施例を説明する。図1は、ロボット５０の機械構成のスケルトン図を示す。本実施例では、ロボット５０の進行方向をＸ軸とし、ロボット５０の左右方向をＹ軸とし、ロボット５０の高さ方向をＺ軸とする。各軸は相互に直交している。
ロボット５０は、左右の股関節にそれぞれ２軸（符号１，２，６，７）の自由度を持ち、以下同様に、腰関節（腰関節とは通常言わないが本明細書では例外的に使用する）に１軸（符号１７）、左右の膝関節にそれぞれ１軸（符号３，８）、左右の足首関節にそれぞれ２軸（符号４，５，９，１０）、左右の肩関節にそれぞれ２軸（符号１１，１２，１４，１５）、左右の肘関節にそれぞれ１軸（１３，１６）の自由度を持つ。各関節にエンコーダ付のモータを備えており、関節角を調整でき、関節角を計測することができる。
【００１８】
図２は、ロボット５０が歩行する様子を簡単に示した斜視図である。この実施例では、ロボット５０の右足２２が接地している間に左足２４を遊脚として軌道２４ａのように移動させ、左足２４が接地すると今度は右足２２を遊脚として軌道２２ａのように移動させ、以後同様に、左足２４を遊脚として軌道２４ｂのように移動させ、次には右足２２を遊脚として軌道２２ｂのように移動させて歩行を続ける。
ロボット５０が歩行を続けるには、両足先（左足先Ｌｆ、右足先Ｒｆ）の軌道２２ａ，２２ｂ，２４ａ，２４ｂを記述するデータが必要とされ、そのためにコンピュータ装置３０が用意されている（コンピュータ装置３０は図１及び図２では図示省略しているが、図３に示されている）。コンピュータ装置３０はロボット５０に内臓されている。コンピュータ装置３０の機能については後で詳しく説明する。
本実施例のロボット５０は、ジョイスティック６０と無線接続されている。ジョイスティック６０は、オペレータＨによって操作される。ジョイスティック６０は、オペレータＨによって所定の操作がなされると、操作信号を出力する。この操作信号は、コンピュータ装置３０に取り込まれる。ロボット５０は、ジョイスティック６０に所定の操作が加えられると、両腕２６，２８を大きく上げる動作を実行する（軸１１，１４（図１参照）を大きく回転させて万歳する）。この点については後で詳しく説明する。
【００１９】
コンピュータ装置３０は、ロボット５０を運動させるための歩容データを作成する装置である。コンピュータ装置３０のハードウエア構成は汎用のコンピュータと同じであり、説明を省略する。コンピュータ装置３０は、ロボット５０を運動させる前に、基本となる歩容データ（以下では基本歩容データという）を作成する。そして、ロボット５０が運動をはじめた後にジョイスティック６０が操作されると、基本歩容データを修正する。まず、基本歩容データを作成するための各機能について説明していく。図３に、コンピュータ装置３０の機能を示す。
コンピュータ装置３０は、足先軌道記憶部３２を有しており、足先軌道を記憶している。図４（ａ）及び（ｂ）に、足先軌道記憶部３２の記憶内容を例示している。図４（ａ）は、ロボット５０の両足先Ｌｆ，Ｒｆ（図２参照）のｘ方向（即ちロボット進行方向）への経時的変化を例示している。
図４（ａ）の実線で示されたカーブ７０は、左足先Ｌｆのｘ方向の座標（縦軸）と時間（横軸）の関係を例示している。カーブ７０によると、左足２４を持ち上げたら前方に送り（部分７０ａ参照）、着地点に近づいたら前進速度を緩め（部分７０ｂ参照）、着地させる。着地中はｘ方向の座標は変動しない（部分７０ｃ参照）。
図４（ａ）の一点鎖線で示されたカーブ７２は、右足先Ｒｆのｘ方向の座標（縦軸）と時間（横軸）の関係を例示している。カーブ７２をみるとわかるように、左足２４が着地しているときに右足２２が進行方向に進められる。
【００２０】
足先軌道記憶部３２は、図４（ｂ）に示されるように、両足先Ｌｆ，Ｒｆのｚ方向（即ち高さ方向）の座標（縦軸）と時間（横軸）の関係も記憶している。図４（ｂ）の実線のカーブ７４が左足先Ｌｆの座標の経時変化であり、図４（ｂ）の一点鎖線のカーブ７６は右足先Ｒｆの座標の経時変化である。
図４（ａ）と図４（ｂ）の時間軸は一致している。従って、左足先Ｌｆを持ち上げているときに（カーブ７４）、左足先Ｌｆを進行方向に送る（部分７０ａ）ことがよくわかる。また、右足先Ｒｆを持ち上げているときに（カーブ７６）、右足先Ｒｆを進行方向に送る（カーブ７２の立上り部分）ことがよくわかる。
図４では図示省略しているが、足先軌道記憶部３２には、両足先Ｌｆ，Ｒｆのｙ方向の座標と時間の関係も記憶されている。
【００２１】
足先位置指令値生成部３４（図３参照）は、足先軌道記憶部３２の記憶内容を参照して、右足先Ｒｆの位置と左足先Ｌｆの位置を指令する指令値が生成する。ここでは、右足先Ｒｆの位置の指令値をＲｆｓと表現し、左足先Ｌｆの位置の指令値をＬｆｓと表現する。ＬｆｓとＲｆｓは、それぞれ３次元の座標（ｘ、ｙ、ｚ）で表現される。足先位置指令値生成部３４は、Ｌｆｓの経時的変化Ｌｆｓ（ｔ）を生成するとともに、Ｒｆｓの経時的変化Ｒｆｓ（ｔ）を生成する。例えば、時間ｔ１のときはＬｆｓ１，Ｒｆｓ１であり、時間ｔ２のときはＬｆｓ２，Ｒｆｓ２であり、…、といったデータを生成する。なおここでの時間ｔ１，ｔ２等は、ロボット５０の動作開始（歩行開始）からの経過時間に相当する。
足先位置指令値生成部３４が作成したＬｆｓ（ｔ）及びＲｆｓ（ｔ）は、歩容データ記憶部４６の足先位置データ記憶部４６ａにおいて記憶される。
【００２２】
コンピュータ装置３０に用意されている目標ＺＭＰ位置計算部３６は、接地足の位置の情報（即ち足先位置指令値生成部３４が生成した情報）に基づいて目標ＺＭＰ位置（これをＺＭＰＴと記載する）を計算する。ＺＭＰＴは接地足の足平内にあるように計算される。即ち、ＺＭＰＴの軌道は、接地足の足平内から次の接地足の足平内に順次移動していくようになる。実際のＺＭＰがＺＭＰＴに一致し、接地足の足平内から次の接地足の足平内に順次移動していけば、ロボット５０は転倒することなく歩行を続けることができる。
目標ＺＭＰ位置は、２次元の座標（ｘ、ｙ）で表現される。ここでは、ロボット５０の歩行面のｚ座標をゼロとしている。目標ＺＭＰ位置計算部３６は、目標ＺＭＰ位置の経時的変化ＺＭＰＴ（ｔ）を計算する。
【００２３】
コンピュータ装置３０には、標準手先軌道記憶部４２が用意されている。標準手先軌道記憶部４２は、足先軌道記憶部３２で記憶されている足先Ｌｆ，Ｒｆの軌道に対応してロボット５０が自然な感じで手足を振って歩行する外観を呈する手先Ｌｈ，Ｒｈ（図２参照）の軌道が記憶されている。このデータは、図４に例示した足先位置の経時的変化のデータと同様の形式で記述されたものであり、手先Ｌｈ，Ｒｈのｘ座標と時間の関係、及び、手先Ｌｈ，Ｒｈのｚ座標と時間の関係が記述されている。
【００２４】
手先位置指令値生成部４４は、基本歩容データを作成する過程では、標準手先軌道記憶部４２の記憶内容を参照して、左右の手先位置Ｌｈ，Ｒｈを指示する指令値を生成する。以下では、手先位置指令値生成部４４が生成した左手先Ｌｈの指令値をＬｈｓと記載し、右手先Ｒｈの指令値をＲｈｓと記載する。Ｌｈｓ及びＲｈｓは、３次元の座標（ｘ、ｙ、ｚ）で表現される。手先位置指令値生成部４４は、Ｌｈｓの経時的変化Ｌｈｓ（ｔ）を生成するとともに、Ｒｈｓの経時的変化Ｒｈｓ（ｔ）を生成する。例えば、時間ｔ１のときはＬｈｓ１，Ｒｈｓ１であり、時間ｔ２のときはＬｈｓ２，Ｒｈｓ２であり、…、といったデータを生成する。生成されたＬｈｓ（ｔ）及びＲｈｓ（ｔ）は、歩容データ記憶部４６の標準手先位置データ記憶部４６ｃにおいて記憶される。
【００２５】
コンピュータ装置３０は、体幹位置指令値生成部４０を有している。体幹位置指令値生成部４０は、目標ＺＭＰ位置計算部３４で計算されたＺＭＰＴ（ｔ）を実現するはずの体幹の基準位置Ｗ（符号Ｗは図２に示されている）の指令値を生成（計算）する。体幹の基準位置Ｗは、予め任意に設定された位置である。なお以下では、体幹の基準位置Ｗのことを体幹位置Ｗと呼び、その指令値を符号Ｗｓで表現することにする。
体幹位置指令値Ｗｓは、３次元の座標（ｘ、ｙ、ｚ）で表現される。体幹位置指令値生成部４０は、体幹位置指令値Ｗｓの経時的変化Ｗｓ（ｔ）を作成する。体幹位置指令値生成部４０がどのようにしてＷｓ（ｔ）を作成するのかは後で説明する。作成されたＷｓ（ｔ）は、歩容データ記憶部４６の体幹位置データ記憶部４６ｂにおいて記憶される。
【００２６】
ここでは、コンピュータ装置３０が基本歩容データを作成する過程について説明していく。図５に、コンピュータ装置３０が基本歩容データを作成するときのフローチャートを示している。図５の実線の矢印は実行される処理の流れを示している。破線の矢印は、矢印の始点にある情報が、矢印の終点にある処理によって使用されることを示している。
まず、足先位置指令値生成部３４が、足先軌道記憶部３２の記憶内容に基づいて、足先位置指令値Ｌｆｓ（ｔ），Ｒｆｓ（ｔ）を生成する（ステップＳ２）。生成された足先位置指令値Ｌｆｓ（ｔ），Ｒｆｓ（ｔ）は、歩容データ記憶部４６に記憶させる（ステップＳ４）。
続いて、目標ＺＭＰ位置計算部３６が、生成された足先位置指令値Ｌｆｓ（ｔ），Ｒｆｓ（ｔ）に基づいて、ＺＭＰＴ（ｔ）を計算する（ステップＳ６）。
【００２７】
ＺＭＰＴ（ｔ）が計算されると、体幹位置指令値生成部４０がＷｓ（ｔ）を計算する処理を実行する（ステップＳ８）。この処理は、ロボット５０の両腕２６，２８は胴体に固定されているという仮定が成立するものとして実行される。
ロボット５０が自然な感じで両腕２６，２８を動作させて歩行するということは、左脚２４が前に出て右脚２２が後にある場合は、右腕２６が前に出て左腕２８が後ろに引かれる。逆に、右脚２２が前に出て左脚２４が後にある場合は、左腕２８が前に出て右腕２６が後に引かれる。即ち、自然な感じで両腕２６，２８を動作させるということは、両腕２６，２８が左右対称に動作することになる。なお、図６（ａ）には、右腕２８が前に出て左腕２６が後に引かれる様子が示されている。ロボット５０が両腕２６，２８を左右対称に動作させる場合、ロボット５０の上半身（胴体、両腕２６，２８、首部、頭部等）の重心位置は、ロボット５０の下半身に対してほぼ一定の位置に存在する。当然に、ロボット５０の両腕２６，２８が胴体に固定されている場合（図６（ｂ）に両腕２６，２８が胴体に固定されている場合を例示している）は、ロボット５０の上半身の重心位置は下半身に対してほぼ一定の位置に存在する。従って、下半身に対する上半身の重心位置は、両腕２６，２８を左右対称に動作させる場合と、両腕２６，２８を胴体に固定している場合とでほとんど差がない。このために、ロボット５０が自然な感じで歩行動作を行なう場合には、両腕が胴体に固定されていると仮定してＷｓ（ｔ）を計算することができる。
【００２８】
以下に、体幹位置指令値Ｗｓ（ｔ）を計算する手法について簡単に説明する。より詳しい説明は、本願出願人によって出願された特願２００３−１７１９６７号に記載されている。
（１）まず、仮の体幹位置（これを符号Ｗｋと記載する）を設定する。
（２）次いで、足先位置指令値Ｌｆｓ，Ｒｆｓが入力されたロボット力学モデル（これについては上記の特願２００３−１７１９６７号に詳しく記載されている）を用いて、仮の体幹位置Ｗｋとその加速度に基づいて得られるＺＭＰ位置と、ＺＭＰＴ（目標ＺＭＰ位置）の偏差を計算し、その偏差を解消するように、仮の体幹位置Ｗｋとその加速度を増減修正する。このとき、両腕２６，２８が胴体に固定されていると仮定しているために、手先位置指令値Ｒｈｓ，Ｌｈｓをロボット力学モデルに入力してＺＭＰ位置を計算する必要がない。
（３）増減修正された仮の体幹位置Ｗｋを用いて、再び（２）の処理を実行する。仮の体幹位置Ｗｋとその加速度に基づいて得られるＺＭＰ位置と、ＺＭＰＴの偏差が所定値以下になるまで、この処理を繰り返して実行する。
（４）上記の（３）で偏差が所定値以下になった仮の体幹位置Ｗｋを、体幹位置指令値Ｗｓとして採用する。
上記の（１）〜（４）の処理を時間毎に行なっていくことによって、体幹位置指令値の経時的変化Ｗｓ（ｔ）を得ることができる。
【００２９】
ステップＳ８で計算されたＷｓ（ｔ）は、歩容データ記憶部４６に記憶させる（ステップＳ１０）。
ステップＳ１２では、標準手先軌道記憶部４２の記憶内容に基づいて、手先位置指令値Ｌｈｓ（ｔ），Ｒｈｓ（ｔ）を生成する。これにより、ロボット５０が自然な感じで両腕２６，２８を振る動作を実現するためのデータが生成されることになる。
ステップＳ１２で生成されたＬｈｓ（ｔ），Ｒｈｓ（ｔ）は、歩容データ記憶部４６で記憶させる（ステップＳ１４）。
以上のステップＳ２〜Ｓ１４の処理によって、歩容データ記憶部４６に基本歩容データが記憶されることになる。
【００３０】
歩容データ記憶部４６に記憶されているデータ群（基本歩容データ）は、ロボット５０の姿勢を決めるのに充分なデータである。ロボット５０は、歩容データ記憶部４６に記憶されている基本歩容データに基づいて、ロボット５０を運動させるための装置（関節角群計算装置１００、アクチュエータ制御装置１０２；図３参照）を有している。
関節角群計算装置１００は、歩容データ（Ｌｆｓ（ｔ），Ｒｆｓ（ｔ），Ｌｈｓ（ｔ），Ｒｈｓ（ｔ），Ｗｓ（ｔ））から、いわゆる逆キネマティクスを解いて各関節角を計算する。計算された関節角群は、アクチュエータ制御装置１０２に送られる。
アクチュエータ制御装置１０２は、送られてくる関節角群に基づいて、各関節のアクチュエータ１〜１７（図１参照）の駆動制御を実行する。これによって、ロボット５０の関節角が計算された関節角に調整される。
【００３１】
ロボット５０は、上述のようにして生成される基本歩容データに基づいて、両腕２６，２８を自然な感じで振りながら歩行することができる。この歩行中にオペレータＨ（図２参照）はジョイスティック６０を操作することができ、このとき、ロボット５０は両腕２６，２８を振り上げる動作を実行する。この動作を実行するために、ロボット５０は、特別手先軌道記憶部１２０と信号入出力部１２２と体幹位置修正量記憶部１２６と歩容データ修正部１２８を有している（図３参照）。以下では、これらの各機能について説明していく。
【００３２】
特別手先軌道記憶部１２０は、ロボット５０が両腕２６，２８を挙げて万歳するような外観を呈する腕先位置Ｌｈ，Ｒｈの経時変化を記憶している。特別手先軌道記憶部１２０に記憶されているデータは、ジョイスティック６０において所定の操作がなされると手先位置指令値生成部４４に取り込まれる。特別手先軌道記憶部１２０の記憶内容は、図４に例示した足先位置の経時的変化のデータと同様の形式で記述されたものであり、両腕先Ｌｈ，Ｒｈのｘ座標と時間の関係、及び、両腕先Ｌｈ，Ｒｈのｚ座標と時間の関係が記述されている。
【００３３】
信号入出力部１２２は、手先位置指令値生成部４４と有線接続されている。また信号入出力部１２２は、ジョイスティック６０と無線接続されている。信号入出力部１２２は、ジョイスティック６０から出力された操作信号を入力する。信号入出力部１２２は、ジョイスティック６０から操作信号が出力されるまでの間は、手先位置指令値生成部４４に対してｌｏｗ状態の信号を出力し、ジョイスティック６０から出力された操作信号を入力した後は、手先位置指令値生成部１２２に対してｈｉｇｈ状態の信号を出力する。
手先位置指令値生成部４４は、信号入出力部１２２から出力されたｈｉｇｈ状態の信号を入力すると、特別手先軌道記憶部１２０の記憶内容を参照して、手先位置指令値を生成する。これにより、両腕２６，２８を大きく上げる動作を指令するデータが生成されることになる。なお、以下では、特別手先軌道記憶部１２０の記憶内容を参照して手先位置指令値生成部４４が生成する手先位置指令値をＬｈｓ＊（ｔ），Ｒｈｓ＊（ｔ）と記載することにする。
生成されたＬｈｓ＊（ｔ），Ｒｈｓ＊（ｔ）は、歩容データ記憶部４６の特別手先位置データ記憶部４６ｃ’において記憶される。
【００３４】
生成されたＬｈｓ＊（ｔ），Ｒｈｓ＊（ｔ）は、両腕２６，２８を大きく上げる動作を指令するデータであり、このデータどおりにロボット５０が動作すると、両腕２６，２８は胴体に固定されているという上記の仮定に反する動作をロボット５０が実行することになる。この場合、上記した仮定が成立するものとして生成された体幹位置指令値Ｗｓ（ｔ）に従ってロボット５０が動作すると、ロボット５０の姿勢が不安定になる。これを防止するために、体幹位置修正量記憶部１２６と歩容データ修正部１２８が設けられている。
【００３５】
歩容データ修正部１２８は、Ｌｈｓ（ｔ）、Ｒｈｓ（ｔ）、Ｌｈｓ＊（ｔ）、及びＲｈｓ＊（ｔ）から、上記の仮定が成立する場合の手先位置Ｌｈｓ，Ｒｈｓと、実際の手先位置Ｌｈｓ＊，Ｒｈｓ＊との差（これをΔＨと表現することにする）を計算する。以下に、時間ｔｘにおける手先位置の差を計算する例を示す。
（１）まず、Ｌｈｓ（ｔｘ）とＬｈｓ＊（ｔｘ）の差を計算する。即ち、Ｌｈｓ（ｔｘ）からＬｈｓ＊（ｔｘ）まで左腕２８を移動させるのに必要である、左腕２８のＹ軸回りの回転角θＬＸを計算する。本実施例では、ここで計算されたθＬＸを、時間ｔｘにおける上記仮定が成立する場合の左手先位置と、時間ｔｘにおける実際の左手先位置との差として表現する。なお、図６（ｃ）に、上記仮定が成立する場合の左手先位置Ｌｈ（破線で示されている）と、実際の左手先位置Ｌｈ（実線で示されている）の差θＬを図示している。なお、θＬは前方に向って正とされる。
（２）続いて、Ｒｈｓ（ｔｘ）とＲｈｓ＊（ｔｘ）の差を計算する。即ち、Ｒｈｓ（ｔｘ）からＲｈｓ＊（ｔｘ）まで右腕２６を移動させるのに必要である、左腕２６のＹ軸回りの回転角θＲＸを計算する。本実施例では、ここで計算されたθＲＸを、時間ｔｘにおける上記仮定が成立する場合の右手先位置と、時間ｔｘにおける実際の右手先位置との差として表現する。なお、θＲは前方に向って正とされる。
（３）そして、θＬＸとθＲｘの和を計算することによって、時間ｔｘにおける手先位置の差ΔＨ（ｔｘ）を得る。即ち、本実施例では、手先位置の差ΔＨは、上記した仮定が成立する場合の左手先位置から実際の左手先位置まで移動させるのに必要な左腕２８のＹ軸回りの回転角θＬと、上記した仮定が成立する場合の右手先位置から実際の右手先位置まで移動させるのに必要な右腕２６のＹ軸回りの回転角θＲとの和で表現する。歩容データ修正部１２８は、時間毎の手先位置の差ΔＨ（ｔ）を計算する。
【００３６】
体幹位置指令値生成部４０で作成されたＷｓ（ｔ）は、上記の仮定の下での体幹位置指令値である。従って、実際の手先位置にロボット５０の両腕２６，２８がおかれる場合には、そのときの体幹位置Ｗｓを修正する必要がある。体幹位置修正量記憶部１２６には、上記の仮定の下での手先位置を実際の手先位置に変更するのに必要な体幹位置修正量ΔＷｓが記憶されている。即ち、上記の仮定の下での手先位置と実際の手先位置との差ΔＨから、体幹位置修正量ΔＷｓを特定することができる情報が記憶されている。例えば、ΔＷｓ＝ｆ（ΔＨ）という関数が記憶されている。また、例えば、ΔＨとΔＷｓが対応づけられた情報が複数組記憶されている。
歩容データ修正部１２８は、ΔＨ（ｔ）からΔＷｓ（ｔ）を特定する（即ち時間毎のΔＷｓを特定する）。これにより、時間ｔ１のときはΔＷｓ１、時間ｔ２のときはΔＷｓ２、…、といったデータが得られる。歩容データ修正部１２８は、歩容データ記憶部４６に記憶されている基本歩容データのＷｓ（ｔ）を、得られたΔＷｓ（ｔ）に基づいて修正する（補正する）。これにより、上記の仮定が成立するものとして作成された体幹位置指令値Ｗｓ（ｔ）が修正されて、ロボット５０が安定して歩行し続ける体幹位置データが作成されることになる。
【００３７】
なお、図３では図示省略しているが、ジョイスティック６０は、関節角群計算装置１００（図３参照）とも無線接続されている。関節角群計算装置１００は、ジョイスティック６０が操作される前は、足先位置データ記憶部４６ａの記憶内容と体幹位置データ記憶部４６ｂの記憶内容と標準手先位置データ記憶部４６ｃの記憶内容から関節角群を計算する。一方、ジョイスティック６０が操作されると、足先位置データ記憶部４６ａの記憶内容と体幹位置データ記憶部４６ｂの記憶内容（これは歩容データ修正部１２８によって修正されている）と特別手先位置データ記憶部４６ｃ’の記憶内容に従って関節角群を計算する。これにより、ジョイスティック６０が操作された以降は、ロボット５０において両腕２６，２８を大きく回転させる動作が実現されることになる。
【００３８】
本実施例によると、体幹位置指令値生成部４０において体幹位置指令値Ｗｓ（ｔ）を作成する段階では、両腕２６，２８は胴体に固定されていると仮定して両腕２６，２８の動作を考慮しないために、Ｗｓ（ｔ）を作成するための計算時間が非常に短い。しかも、実際は、両腕２６，２８は胴体に固定されていると仮定できない動作をさせることができる。両腕２６，２８を大きく動作させる場合であっても、歩容データ修正部１２８によって体幹位置指令値Ｗｓ（ｔ）が修正されるために、ロボット５０が安定した姿勢で歩行を続けることができる。Ｗｓ（ｔ）を修正するための時間は短いために、ジョイスティック６０の操作に対応して瞬時にＷｓ（ｔ）を修正することができる。
本実施例によると、両腕２６，２８を大きく動作させるロボット５０の歩容データを短時間で作成することができる。
なお、上記実施例では、ジョイスティック６０が操作されると両腕２６，２８を前方に持ち上げる動作を実行するが、一対のジョイスティックを利用して左腕２８と右腕２６の動きをリアルタイムで操縦するようにしてもよい。Ｗｓ（ｔ）を修正する時間が短いために、リアルタイムで操縦することができる。
【００３９】
（第２実施例）
ここでは第１実施例と異なる点を説明する。本実施例では、体幹位置修正量記憶部１２６（図３参照）の記憶内容が第１実施例と異なる。また、歩容データ修正部１２８の機能が第１実施例と異なる。
本実施例の体幹位置修正量記憶部１２６は、ロボット５０の重心位置の差（これを記号ΔＧで表現する）と、体幹位置の修正量ΔＷｓとの関係を記憶している。ΔＧは、異なる姿勢をしているロボット５０のそれぞれの重心位置の距離で定義される。例えば、姿勢Ａをしているロボット５０の重心位置をＧＡとし、姿勢Ｂをしているロボット５０の重心位置をＧＢとした場合に、ＧＡとＧＢの間の距離が、姿勢Ａ及び姿勢Ｂの重心位置の差である。
【００４０】
歩容データ修正部１２８は、以下のようにし体幹位置Ｗｓ（ｔ）を修正する。
（１）まず、Ｌｆｓ（ｔ）とＲｆｓ（ｔ）と修正前のＷｓ（ｔ）とＬｈｓ（ｔ）とＲｈｓ（ｔ）と左脚２４の質量と右脚２２の質量と左腕２８の質量と右腕２６の質量と体幹（胴体部、首部、頭部）の質量とに基づいて、ロボット５０の時間毎の重心位置を計算する。ここで計算された重心位置をＧ１と表現し、その経時変化をＧ１（ｔ）と表現する。なお、コンピュータ装置３０には、左脚２４の質量と右脚２２の質量と左腕２８の質量と右腕２６の質量と体幹（胴体部、首部、頭部）の質量が予め記憶されている。
（２）続いて、Ｌｆｓ（ｔ）とＲｆｓ（ｔ）と修正前のＷｓ（ｔ）とＬｈｓ＊（ｔ）とＲｈｓ＊（ｔ）と左脚２４の質量と右脚２２の質量と左腕２８の質量と右腕２６の質量と体幹の質量とに基づいて、ロボット５０の時間毎の重心位置を計算する。ここで計算された重心位置をＧ２と表現し、その経時変化をＧ２（ｔ）と表現する。
（３）続いて、Ｇ１（ｔ）とＧ２（ｔ）に基づいて、時間毎の重心位置の差を計算する。ここで計算された重心位置の差がΔＧであり、その経時変化がΔＧ（ｔ）である。
（４）次に、体幹位置修正量記憶部１２６の記憶内容を参照にしてΔＧからΔＷｓを特定する処理を実行する。ここでは時間毎のΔＧから時間毎のΔＷｓを特定する（即ちΔＧ（ｔ）からΔＷｓ（ｔ）を特定する）。
（５）特定されたΔＷｓ（ｔ）に基づいて、Ｗｓ（ｔ）を修正する点は第１実施例と同じである。
【００４１】
本実施例のようにしても、Ｗｓ（ｔ）を作成するための計算時間が非常に短い。両腕２６，２８を大きく動作させる場合であっても、歩容データ修正部１２８によって体幹位置指令値Ｗｓ（ｔ）が修正されるために、ロボット５０が安定した姿勢で歩行を続けることができる。
本実施例によると、両腕２６，２８を大きく動作させるロボット５０の歩容データを短時間で作成することができる。
【００４２】
（第３実施例）
本実施例では、コンピュータ装置（本実施例のコンピュータ装置の符号は１３０とする）の機能が第１実施例のものと異なる。コンピュータ装置は、２パターンの歩容データ（歩容データＡ及びＢ）を作成する。図７に、歩容データのパターンを示している。歩容データＡと歩容データＢは、両足２２，２４の動作パターン（パターンＰ）は同じであるが、両腕２６，２８の動作パターンが異なる。歩容データＡの両腕２６，２８の動作パターンはＱであり、歩容データＢの両腕２６，２８の動作パターンはＲである。
【００４３】
図８に、本実施例のコンピュータ装置１３０の機能を示している。以下に、コンピュータ装置１３０の各機能について説明していく。ただし、上記の各実施例と同様の機能をするものについては簡単に説明する。まず、歩容データＡを生成するための各機能について説明していく。
パターンＰ足先軌道記憶部１３２には、足先Ｌｆ，Ｒｆの軌道を示すデータが記憶されている。パターンＰ足先軌道記憶部１３２には、図４に例示されるものと同様の形式で記憶されている。即ち、足先Ｌｆ，Ｒｆのｘ座標と時間の関係、足先Ｌｆ，Ｒｆのｙ座標と時間の関係、及び、足先Ｌｆ，Ｒｆのｚ座標と時間の関係が記憶されている。
足先位置指令値生成部１３４は、パターンＰ足先軌道記憶部１３２の記憶内容に基づいて、足先位置指令値Ｌｆｓ（ｔ），Ｒｆｓ（ｔ）を作成する。
目標ＺＭＰ位置計算部１３６は、足先位置指令値生成部１３４で作成されたＬｆｓ（ｔ），Ｒｆｓ（ｔ）に基づいてＺＭＰＴ（ｔ）を計算する。
パターンＱ手先軌道記憶部１４２Ｑには、手先Ｌｈ，Ｒｈの軌道を示すデータが記憶されている。ここに記憶されている手先軌道はパターンＱであり、後述するパターンＲ手先軌道記憶部１４２Ｒに記憶されているパターンＲの手先軌道と相違する。パターンＱ手先軌道記憶部１４２Ｑは、手先Ｌｈ，Ｒｈのｘ座標と時間の関係、手先Ｌｈ，Ｒｈのｙ座標と時間の関係、及び、手先Ｌｈ，Ｒｈのｚ座標と時間の関係を記憶している。
第１手先位置指令値生成部１４４Ｑは、パターンＱ手先軌道記憶部１４２Ｑの記憶内容に基づいて、手先位置指令値Ｌｈｓ（ｔ），Ｒｈｓ（ｔ）を作成する。
第１体幹位置指令値生成部１４０は、Ｌｆｓ（ｔ）、Ｒｆｓ（ｔ）、Ｌｈｓ（ｔ）、Ｒｈｓ（ｔ）、及びＺＭＰＴ（ｔ）に基づいて体幹位置指令値Ｗｓ（ｔ）を作成する。第１実施例と異なり、Ｌｈｓ（ｔ）とＲｈｓ（ｔ）もロボット力学モデルに入力してＺＭＰ位置を計算することによってＷｓ（ｔ）を作成する。
【００４４】
足先位置指令値生成部１３４で生成されたＬｆｓ（ｔ），Ｒｆｓ（ｔ）、第１手先位置指令値生成部１４４Ｑで生成されたＬｈｓ（ｔ），Ｒｈｓ（ｔ）、及び、第１体幹位置指令値生成部１４０で生成されたＷｓ（ｔ）は、歩容データ記憶部１４６に記憶される。これにより、歩容データＡが記憶されることになる。
【００４５】
続いて、歩容データＢを生成するための各機能について説明していく。
パターンＲ手先軌道記憶部１４２Ｒには、パターンＲの手先軌道を示すデータが記憶されている。パターンＲ手先軌道記憶部１４２Ｒは、手先Ｌｈ，Ｒｈのｘ座標と時間の関係、手先Ｌｈ，Ｒｈのｙ座標と時間の関係、及び、手先Ｌｈ，Ｒｈのｚ座標と時間の関係を記憶している。
第２手先位置指令値生成部１４４Ｒは、パターンＲ手先軌道記憶部１４２Ｒの記憶内容に基づいて、手先位置指令値Ｌｈｓ＊（ｔ），Ｒｈｓ＊（ｔ）を作成する。
【００４６】
体幹位置修正量記憶部２２６には、手先位置の差ΔＨと、そのΔＨに対応した体幹位置修正量ΔＷｓが対応づけて記憶されている（ΔＷｓ＝ｆ（ΔＨ））。本実施例におけるΔＨも第１実施例と同様に両腕２６，２８の回転角の単位で設定されている。
【００４７】
第２体幹位置指令値生成部２２８は、歩容データＢの体幹位置指令値Ｗｓ＊（ｔ）を作成する。第２体幹位置指令値生成部２２８が実行する処理を以下に示す。
（１）Ｌｈｓ（ｔ）とＬｈｓ＊（ｔ）に基づいて、時間毎の左手先位置の差を計算する。例えば、Ｌｈｓ（ｔｘ）からＬｈｓ＊（ｔｘ）まで左腕２８を移動させるのに必要である、左腕２８のＹ軸回りの回転角θＬｘを計算すれば、時間ｔｘにおける左手先位置の差を計算することができる。ここでは時間毎の左手先位置の差をθＬ（ｔ）と表現する。
（２）続いて、Ｒｈｓ（ｔ）とＲｈｓ＊（ｔ）に基づいて、時間毎の右手先位置の差を計算する。例えば、Ｒｈｓ（ｔｘ）からＲｈｓ＊（ｔｘ）まで右腕２６を移動させるのに必要である、右腕２６のＹ軸回りの回転角θＲｘを計算すれば、時間ｔｘにおける右手先位置の差を計算することができる。ここでは時間毎の左手先位置の差をθＲ（ｔ）と表現することにする。
（３）次に、上記の（１）で計算された左手先位置の差θＬと、上記の（２）で計算された右手先位置の差θＲの和を計算することによって、手先位置の差ΔＨを得る。ここでは時間毎の手先位置の差ΔＨ（ｔ）を得る。
（４）体幹位置修正量記憶部２２６には、θＬとθＲの和によって表現されるΔＨから体幹位置修正量ΔＷｓを特定することができる情報が記憶されている。第２体幹位置指令値生成部２２８は、体幹位置修正量記憶部２２６の記憶内容とΔＨ（ｔ）から、時間毎の体幹位置修正量ΔＷｓ（ｔ）を特定する。
（５）そして、第１体幹位置指令値生成部１４０で生成されたＷｓ（ｔ）をΔＷｓ（ｔ）に基づいて修正することによって、歩容データＢの体幹位置指令値Ｗｓ＊（ｔ）を得る。
作成されたＷｓ＊（ｔ）を歩容データ記憶部１４６で記憶することによって、歩容データＡ及び歩容データＢが完成する。
【００４８】
本実施例によると、歩容データＡを作成する段階では、従来と同じ手法を用いる。しかしながら、歩容データＡの体幹位置指令値Ｗｓ（ｔ）を修正することによって、歩容データＢの体幹位置指令値Ｗｓ＊（ｔ）を作成する。これにより、歩容データＢのＷｓ＊（ｔ）を作成するための計算時間を大幅に短縮することができる。
本実施例によると、複数の歩容データを従来よりも短時間で作成することができる。
【００４９】
（第４実施例）
ここでは第３実施例と異なる点について説明する。本実施例では、体幹位置修正量記憶部２２６（図８参照）の記憶内容が第３実施例と異なる。また、第２体幹位置指令値生成部２２８の機能が第３実施例と異なる。
本実施例の体幹位置修正量記憶部２２６は、ロボット５０の重心位置の差（これを記号ΔＧで表現する）と、体幹位置の修正量ΔＷｓとの関係を記憶している。ΔＧは、異なる姿勢をしているロボット５０のそれぞれの重心位置の距離で定義される。この点は第２実施例と同様である。
【００５０】
第２体幹位置指令値生成部２２８は、以下の各処理を実行する。
（１）まず、Ｌｆｓ（ｔ）とＲｆｓ（ｔ）とＷｓ（ｔ）とＬｈｓ（ｔ）とＲｈｓ（ｔ）（即ち歩容データＡ）に従ってロボット５０が動作する場合の重心位置の経時変化を計算する。ここでの重心位置の計算には、左脚２４の質量と右脚２２の質量と左腕２８の質量と右腕２６の質量と体幹（胴体部、首部、頭部）の質量が用いられる。ここで計算された重心位置をＧ１と表現し、その経時変化をＧ１（ｔ）と表現する。
（２）続いて、Ｌｆｓ（ｔ）とＲｆｓ（ｔ）とＷｓ（ｔ）とＬｈｓ＊（ｔ）とＲｈｓ＊（ｔ）に従ってロボット５０が動作する場合の重心位置の経時変化を計算する。ここでの重心位置の計算には、左脚２４の質量と右脚２２の質量と左腕２８の質量と右腕２６の質量と体幹の質量が用いられる。ここで計算された重心位置をＧ２と表現し、その経時変化をＧ２（ｔ）と表現する。
（３）次に、Ｇ１（ｔ）とＧ２（ｔ）に基づいて、時間毎の重心位置の差を計算する。ここで計算された重心位置の差がΔＧであり、その経時変化がΔＧ（ｔ）である。
（４）次に、体幹位置修正量記憶部２２６の記憶内容を参照にしてΔＧからΔＷｓを特定する処理を実行する。ここでは時間毎のΔＧから時間毎のΔＷｓを特定する。即ち、ΔＧ（ｔ）からΔＷｓ（ｔ）を特定する。
（５）特定されたΔＷｓ（ｔ）に基づいてＷｓ（ｔ）を修正することによって、Ｗｓ＊（ｔ）を得る点は第３実施例と同じである。これにより、歩容データＡ及びＢが完成する。
【００５１】
本実施例によると、歩容データＡを作成する段階では従来と同じ手法を用いるが、歩容データＡの体幹位置指令値Ｗｓ（ｔ）を修正することによって、歩容データＢの体幹位置指令値Ｗｓ＊（ｔ）を作成する。これにより、歩容データＢのＷｓ＊（ｔ）を作成するための計算時間を大幅に短縮することができる。本実施例によっても、複数の歩容データを従来よりも短時間で作成することができる。
【００５２】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組み合わせによって技術的有用性を発揮するものであり、出願時請求項記載の組み合わせに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【図面の簡単な説明】
【００５３】
【図１】ロボットのスケルトン図を示す。
【図２】ロボットが歩行する様子を示す。
【図３】コンピュータ装置の機能を示しており、それに接続される各種装置を模式的に示している（第１実施例と第２実施例）。
【図４】足先軌道記憶部の記憶内容の一例を示す。
【図５】コンピュータ装置が基本歩容データを作成する処理を説明するための図である。
【図６】ロボットを側面から見た図であり、両腕の動作を説明するための図である。
【図７】２種類の歩容データのそれぞれについて、歩行パターンと両腕の動作パターンを示している。
【図８】コンピュータ装置の機能を示している（第３実施例と第４実施例）。
【符号の説明】
【００５４】
Ｌｆ：左足先
Ｒｆ：右足先
Ｌｈ：左足先
Ｒｈ：右足先
Ｗ：体幹基準位置
Ｈ：オペレータ
１〜１７：軸（アクチュエータ）
２２：右足
２４：左足
２６：右腕
２８：左腕
３０：コンピュータ装置
５０：ロボット
６０：ジョイスティック
【図１】
2005118924.tif 000003
【図２】
2005118924.tif 000004
【図３】
2005118924.tif 000005
【図４】
2005118924.tif 000006
【図５】
2005118924.tif 000007
【図６】
2005118924.tif 000008
【図７】
2005118924.tif 000009
【図８】
2005118924.tif 000010