(57)【特許請求の範囲】
【請求項１】
縦軸回りに相対的に回動可能な上部および下部上体と、上部上体の左右両側から延設された左右の腕体と、下部上体から下方に延設された左右の脚体とを備え、左右の脚体の先端を構成する足平にはそれぞれコンプライアンス機構を備え、第１脚体が遊脚となってから支持脚となるまでの期間に、第１脚体の根元部分よりも先端側にある所定部分を第１脚体の根元部分の後方から前方に移動させ、且つ、第２脚体の根元部分よりも先端側にある所定部分を第２脚体の根元部分の前方から後方に移動させることによって前進する脚式移動ロボットであって、
第１脚体が遊脚となってから支持脚となるまでの期間に、
第１脚体の根元部分を第２脚体の根元部分の後方から前方に移動させ、
第１脚体側の第１腕体の根元部分を第２脚体側の第２腕体の根元部分の前方から後方に移動させ、
第１腕体の根元部分よりも先端側にある所定部分を第１腕体の根元部分の前方から後方に移動させ、且つ、
第２腕体の根元部分よりも先端側にある所定部分を第２腕体の根元部分の後方から前方に移動させるように作動が制御され、
第１脚体の前記コンプライアンス機構がたわみ始める着地時点と、第１脚体の根元部分と第２脚体の根元部分との前後間隔が最大値となる時点と、第１腕体の根元部分と第２腕体の根元部分との前後間隔が最大値となる時点とが同一となるように作動が制御されることを特徴とする、
脚式移動ロボット。
【請求項２】
請求項１記載の脚式移動ロボットにおいて、
第１脚体が遊脚となってから支持脚となるまでの期間のロボットの移動速度または歩幅が大きくなるほど、該期間において、第２腕体の根元部分を基準とする第１腕体の根元部分の後方移動量に対する、第１腕体の根元部分を基準とする所定部分の後方移動量と、第２腕体の根元部分を基準とする所定部分の前方移動量の和の比率である第１比率が大きくなるように作動が制御されることを特徴とする脚式移動ロボット。
【請求項３】
請求項２記載の脚式移動ロボットにおいて、
第１脚体が遊脚となってから支持脚となるまでの期間のロボットの移動速度または歩幅が大きくなるほど、該期間において、第２脚体の根元部分を基準とする第１脚体の根元部分の前方移動量に対する、第１脚体の根元部分を基準とする所定部分の前方移動量と、第２脚体の根元部分を基準とする所定部分の後方移動量との和の比率である第２比率が大きくなるように作動が制御されることを特徴とする脚式移動ロボット。
【請求項４】
請求項１記載の脚式移動ロボットにおいて、
ロボットの移動速度または歩幅が大きくなるほど、左右の腕体のそれぞれの根元部分から先端部分までの距離が短縮されるように左右の腕体を屈曲させることを特徴とする脚式移動ロボット。
【請求項５】
縦軸回りに相対的に回動可能な上部および下部上体と、上部上体の左右両側から延設された左右の腕体と、下部上体から下方に延設された左右の脚体とを備え、左右の脚体の先端部を構成する足平にはそれぞれコンプライアンス機構を備え、第１脚体が遊脚となってから支持脚となるまでの期間に、第１脚体の根元部分よりも先端側にある所定部分を第１脚体の根元部分の後方から前方に移動させ、且つ、第２脚体の根元部分よりも先端側にある所定部分を第２脚体の根元部分の前方から後方に移動させることによって前進する脚式移動ロボットを制御する機能を該ロボットに搭載されているコンピュータに対して付与するプログラムであって、
第１脚体が遊脚となってから支持脚となるまでの期間に、第１脚体の根元部分を第２脚体の根元部分の後方から前方に移動させ、第１脚体側の第１腕体の根元部分を第２脚体側の第２腕体の根元部分の前方から後方に移動させ、第１腕体の根元部分よりも先端側にある所定部分を第１腕体の根元部分の前方から後方に移動させ、且つ、第２腕体の根元部分よりも先端側にある所定部分を第２腕体の根元部分の後方から前方に移動させるように前記ロボットの作動を制御する機能と、
第１脚体の前記コンプライアンス機構がたわみ始める着地時点と、第１脚体の根元部分と第２脚体の根元部分との前後間隔が最大値となる時点と、第１腕体の根元部分と第２腕体の根元部分との前後間隔が最大値となる時点とが同一となるように前記ロボットの作動を制御する機能とを該ロボットに搭載されているコンピュータに対して付与することを特徴とする制御プログラム。
【請求項６】
請求項５記載の制御プログラムにおいて、
第１脚体が遊脚となってから支持脚となるまでの期間のロボットの移動速度または歩幅が大きくなるほど、該期間において、第２腕体の根元部分を基準とする第１腕体の根元部分の後方移動量に対する、第１腕体の根元部分を基準とする所定部分の後方移動量と、第２腕体の根元部分を基準とする所定部分の前方移動量の和の比率である第１比率が大きくなるように前記ロボットの作動を制御する機能を該ロボットに搭載されているコンピュータに対して付与することを特徴とする制御プログラム。
【請求項７】
請求項６記載の制御プログラムにおいて、
第１脚体が遊脚となってから支持脚となるまでの期間のロボットの移動速度または歩幅が大きくなるほど、該期間において、第２脚体の根元部分を基準とする第１脚体の根元部分の前方移動量に対する、第１脚体の根元部分を基準とする所定部分の前方移動量と、第２脚体の根元部分を基準とする所定部分の後方移動量との和の比率である第２比率が大きくなるように前記ロボットの作動を制御する機能を該ロボットに搭載されているコンピュータに対して付与することを特徴とする制御プログラム。
【請求項８】
請求項５記載の制御プログラムにおいて、
ロボットの移動速度または歩幅が大きくなるほど、左右の腕体のそれぞれの根元部分から先端部分までの距離が短縮されるように左右の腕体を屈曲させるように前記ロボットの作動を制御する機能を該ロボットに搭載されているコンピュータに対して付与することを特徴とする制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、脚式移動ロボットおよびその制御プログラムに関する。
【背景技術】
【０００２】
上体から下方に延びる左右の脚体を交互に前進させて移動（歩行）する脚式移動ロボットの体幹を捩らせることで、その歩幅を大きくして高速歩行を可能とする技術が提案されている（例えば、特開２００４−２０２６５２号公報  ００７７段落、図２４〜図２８参照）。【０００３】
しかし、歩行が高速になるほどロボットの体幹の捩り方向に生じるモーメントが大きくなり、これによりロボットの進行方向が左右にぶれ、さらにはロボットがスピンしてしまい、その歩行動作が不安定になる可能性がある。特に空中期（＝全ての脚体が空中にある期間）を含むロボットの走行動作は、脚体が着床したときにおけるぶれに応じて不安定になる可能性が高い。【０００４】
そこで、本発明は、移動に伴う動作を安定に維持し得る脚式移動ロボット、およびその制御プログラムを提供することを解決課題とする。
【発明の開示】
【０００５】
本発明は、縦軸回りに相対的に回動可能な上部および下部上体と、上部上体の左右両側から延設された左右の腕体と、下部上体から下方に延設された左右の脚体とを備え、左右の脚体の先端を構成する足平にはそれぞれコンプライアンス機構を備え、第１脚体が遊脚となってから支持脚となるまでの期間に、第１脚体の根元部分よりも先端側にある所定部分を第１脚体の根元部分の後方から前方に移動させ、且つ、第２脚体の根元部分よりも先端側にある所定部分を第２脚体の根元部分の前方から後方に移動させることによって前進する脚式移動ロボットに関する。
【０００６】
前記課題を解決するための本発明の脚式移動ロボットは、第１脚体が遊脚となってから支持脚となるまでの期間に、第１脚体の根元部分を第２脚体の根元部分の後方から前方に移動させ、第１脚体側の第１腕体の根元部分を第２脚体側の第２腕体の根元部分の前方から後方に移動させ、第１腕体の根元部分よりも先端側にある所定部分を第１腕体の根元部分の前方から後方に移動させ、且つ、第２腕体の根元部分よりも先端側にある所定部分を第２腕体の根元部分の後方から前方に移動させるように作動が制御され、第１脚体の前記コンプライアンス機構がたわみ始める着地時点と、第１脚体の根元部分と第２脚体の根元部分との前後間隔が最大値となる時点と、第１腕体の根元部分と第２腕体の根元部分との前後間隔が最大値となる時点とが同一となるように作動が制御されることを特徴とする。
【０００７】
本発明の脚式移動ロボットによれば、第１脚体が遊脚となってから支持脚となるまでの期間に、第１脚体の根元部分が第２脚体の根元部分の後方から前方に移動し、且つ、第１脚体側の第１腕体の根元部分が第２脚体側の第２腕体の根元部分の前方から後方に移動するようにロボットが作動する。これにより、当該期間において上部上体のひねり運動方向と下部上体のひねり運動方向とが反対になる。
【０００８】
また、第１脚体が遊脚となってから支持脚となるまでの期間に、第１腕体の根元部分よりも先端側にある所定部分が第１腕体の根元部分の前方から後方に移動し、且つ、第２腕体の根元部分よりも先端側にある所定部分が第２腕体の根元部分の後方から前方に移動するようにロボットが作動する。これにより、当該期間において左右の腕体が下部上体に対する上部上体のひねり運動により生じるモーメントと同方向のモーメントを生じさせるような方向に振られる。
【０００９】
従って、本発明の脚式移動ロボットによれば、第１脚体が遊脚となってから支持脚となるまでの期間に下部上体のひねり運動等により生じたモーメントが、下部上体に対する上部上体のひねり運動および腕体の振り運動により生じるモーメントによりキャンセルされ、第１脚体が支持脚となった後でのロボットのスピンが確実に防止され得る。そして、移動、特に高速歩行または走行に伴うロボットの動作が安定に維持される。また、第１脚体が着地したときに下部上体の回動方向、および上部上体の回動方向が変更されるようにロボットが作動する。これにより、脚体の着地時に下部上体または上部上体の回動動作によって生じるモーメントを打ち消し、ひいてはロボットのスピンをさらに確実に防止することができる。
【００１０】
また、本発明の脚式移動ロボットは、第１脚体が遊脚となってから支持脚となるまでの期間のロボットの移動速度または歩幅が大きくなるほど、該期間において、第２腕体の根元部分を基準とする第１腕体の根元部分の後方移動量に対する、第１腕体の根元部分を基準とする所定部分の後方移動量と、第２腕体の根元部分を基準とする所定部分の前方移動量の和の比率である第１比率が大きくなるように作動することを特徴とする。
【００１１】
本発明の脚式移動ロボットによれば、第１脚体が遊脚となってから支持脚となるまでの期間のロボットの移動速度または歩幅が大きいほど、下部上体に対する上部上体のひねり運動により生じるモーメントに対する、左右の腕体の振り運動により生じるモーメントの比率が大きくなるようにロボットが作動する。これにより、当該期間において、上部上体の左右への振れを抑えながら、ロボットの高速歩行または走行動作に伴う下部上体のひねり運動等により生じたモーメントを下部上体に対する上部上体のひねり運動および腕体の振り運動により生じるモーメントによって確実に打ち消すことができる。
【００１２】
さらに、本発明の脚式移動ロボットは、第１脚体が遊脚となってから支持脚となるまでの期間のロボットの移動速度または歩幅が大きくなるほど、該期間において、第２脚体の根元部分を基準とする第１脚体の根元部分の前方移動量に対する、第１脚体の根元部分を基準とする所定部分の前方移動量と、第２脚体の根元部分を基準とする所定部分の後方移動量との和の比率である第２比率が大きくなるようにロボットの動作を制御することを特徴とする。
【００１３】
本発明の脚式移動ロボットによれば、ロボットの移動速度または歩幅を大きくしてその高速移動を実現しながら、前記のように下部上体のひねり運動等により生じるモーメントを下部上体に対する上部上体のひねり運動および左右の腕体の振り運動により生じるモーメントによって確実に打ち消すことで、スピンを防止してロボットの動作を安定に維持することができる。
【００１４】
さらに、本発明の脚式移動ロボットは、ロボットの移動速度または歩幅が大きくなるほど、左右の腕体のそれぞれの根元部分から先端部分までの距離が短縮されるように左右の腕体を屈曲させることを特徴とする。
【００１５】
本発明の脚式移動ロボットによれば、ロボットの移動速度または歩幅が大きくなるほど、左右の腕体がそれぞれの根元部分から先端部分までの距離が短縮されるように屈曲させられる。これにより、左右の腕体の動作速度の増大に伴う腕体の根元部分の負担が軽減され、腕体の駆動系の安定性が確保され、ロボットの動作が安定に制御され得る。
【００２２】
本発明は、縦軸回りに相対的に回動可能な上部および下部上体と、上部上体の左右両側から延設された左右の腕体と、下部上体から下方に延設された左右の脚体とを備え、左右の脚体の先端を構成する足平にはそれぞれコンプライアンス機構を備え、第１脚体が遊脚となってから支持脚となるまでの期間に、第１脚体の根元部分よりも先端側にある所定部分を第１脚体の根元部分の後方から前方に移動させ、且つ、第２脚体の根元部分よりも先端側にある所定部分を第２脚体の根元部分の前方から後方に移動させることによって前進する脚式移動ロボットを制御する機能を該ロボットに搭載されているコンピュータに対して付与するプログラムに関する。
【００２３】
前記課題を解決するための本発明の制御プログラムは、第１脚体が遊脚となってから支持脚となるまでの期間に、第１脚体の根元部分を第２脚体の根元部分の後方から前方に移動させ、第１脚体側の第１腕体の根元部分を第２脚体側の第２腕体の根元部分の前方から後方に移動させ、第１腕体の根元部分よりも先端側にある所定部分を第１腕体の根元部分の前方から後方に移動させ、且つ、第２腕体の根元部分よりも先端側にある所定部分を第２腕体の根元部分の後方から前方に移動させるように前記ロボットの作動を制御する機能と、第１脚体の前記コンプライアンス機構がたわみ始める着地時点と、第１脚体の根元部分と第２脚体の根元部分との前後間隔が最大値となる時点と、第１腕体の根元部分と第２腕体の根元部分との前後間隔が最大値となる時点とが同一となるように前記ロボットの作動を制御する機能とを該ロボットに搭載されているコンピュータに対して付与することを特徴とする。
【００２４】
また、本発明の制御プログラムは、第１脚体が遊脚となってから支持脚となるまでの期間のロボットの移動速度または歩幅が大きくなるほど、該期間において、第２腕体の根元部分を基準とする第１腕体の根元部分の後方移動量に対する、第１腕体の根元部分を基準とする所定部分の後方移動量と、第２腕体の根元部分を基準とする所定部分の前方移動量の和の比率である第１比率が大きくなるように前記ロボットの作動を制御する機能を該ロボットに搭載されているコンピュータに対して付与することを特徴とする。
【００２５】
さらに、本発明の制御プログラムは、第１脚体が遊脚となってから支持脚となるまでの期間のロボットの移動速度または歩幅が大きくなるほど、該期間において、第２脚体の根元部分を基準とする第１脚体の根元部分の前方移動量に対する、第１脚体の根元部分を基準とする所定部分の前方移動量と、第２脚体の根元部分を基準とする所定部分の後方移動量との和の比率である第２比率が大きくなるように前記ロボットの作動を制御する機能を該ロボットに搭載されているコンピュータに対して付与することを特徴とする。
【００２６】
また、本発明の制御プログラムは、ロボットの移動速度または歩幅が大きくなるほど、左右の腕体のそれぞれの根元部分から先端部分までの距離が短縮されるように左右の腕体を屈曲させるように前記ロボットの作動を制御する機能を該ロボットに搭載されているコンピュータに対して付与することを特徴とする。
【００２９】
さらに、本発明の制御プログラムは、第１脚体の着地時点と、第１脚体の根元部分と第２脚体の根元部分との前後間隔が最大値となる時点と、第１腕体の根元部分と第２腕体の根元部分との前後間隔が最大値となる時点とが同一となるように前記ロボットの作動を制御する機能を該ロボットに搭載されているコンピュータに対して付与することを特徴とする。
【図面の簡単な説明】
【００３０】
【図１】本発明の実施形態における脚式移動ロボットとしての２足移動ロボットの全体的構成の概略を示す概略図。
【図２】図１のロボットの各脚体の足平部分の構成を示す側面図。
【図３】図１のロボットに備えた制御ユニットの構成を示すブロック図。
【図４】図３の制御ユニットの機能的構成を示すブロック図。
【図５】図１のロボットの走行歩容を例示する説明図。
【図６】目標床反力鉛直成分の設定例を示す線図。
【図７】目標ＺＭＰの設定例を示す線図。
【図８】図３の制御ユニットに備えた歩容生成装置のメインルーチン処理を示すフローチャート。
【図９】図８のフローチャートサブルーチン処理を示すフローチャート。
【図１０】定常歩容の床反力水平成分許容範囲の設定例を示す線図。
【図１１】図８のフローチャートのサブルーチン処理を示すフローチャート。
【図１２】今回歩容の床反力水平成分許容範囲の設定例を示す線図。
【図１３】歩行歩容における目標床反力鉛直成分の設定例を示す線図。
【図１４】歩行歩容における目標床反力鉛直成分の設定処理を例示するフローチャート。
【図１５】本発明の脚式移動ロボットの作動説明図。
【図１６】本発明の脚式移動ロボットの作動説明図。
【図１７】本発明の脚式移動ロボットの作動説明図。
【図１８】本発明の脚式移動ロボットの作動説明図。
【発明を実施するための最良の形態】
【００３１】
本発明の脚式移動ロボットおよびその制御プログラムの実施形態について図面を用いて説明する。【００３２】
まず、本発明の制御対象である脚式移動ロボットの構成について図１を用いて説明する。【００３３】
図１に示されている２足移動ロボット（以下、ロボットという）１は上体２４から下方に延設された左右一対の脚体（脚部リンク）２，２を備える。上体２４は、上部上体２４１と、下部上体２４２とを備えている。上部上体２４１と、下部上体２４２とは、関節７０によりＺ軸まわりに相対的に回動可能に連結されている。また、上部上体２４１は、関節７２および７４によりＸ軸まわり、Ｙ軸まわりにそれぞれ下部上体２４２に対して傾動可能とされている。【００３４】
両脚体２，２は同一構造であり、それぞれ６個の関節を備える。その６個の関節は上体２４側から順に、股（腰部）の回旋（回転）用（上体２４に対するヨー方向の回転用）の関節１０Ｒ，１０Ｌ（符号Ｒ、Ｌはそれぞれ右側脚体、左側脚体に対応するものであることを意味する符号である。以下同じ）と、股（腰部）のロール方向（Ｘ軸まわり）の回転用の関節１２Ｒ，１２Ｌと、股（腰部）のピッチ方向（Ｙ軸まわり）の回転用の関節１４Ｒ，１４Ｌと、膝部のピッチ方向の回転用の関節１６Ｒ，１６Ｌと、足首のピッチ方向の回転用の関節１８Ｒ，１８Ｌと、足首のロール方向の回転用の関節２０Ｒ，２０Ｌとから構成される。【００３５】
各脚体２の足首の２つの関節１８Ｒ（Ｌ），２０Ｒ（Ｌ）の下部には、各脚体２の先端部を構成する足平（足部）２２Ｒ（Ｌ）が取着されるとともに、両脚体２，２の最上位には、各脚体２の股の３つの関節１０Ｒ（Ｌ），１２Ｒ（Ｌ），１４Ｒ（Ｌ）を介して前記上体（上体）２４が取り付けられている。上体２４の内部には、詳細を後述する制御ユニット２６などが格納されている。なお、図１では図示の便宜上、制御ユニット２６を上体２４の外部に記載している。【００３６】
制御ユニット２６は、ハードウェアとしてのＣＰＵ、ＲＯＭ、ＲＡＭ、信号入力回路、信号出力回路等と、このハードウェアに対してロボット１の作動制御機能を付与するソフトウェアとしての本発明の「制御プログラム」とより構成されている。【００３７】
前記構成の各脚体２においては、股関節（または腰関節）は関節１０Ｒ（Ｌ），１２Ｒ（Ｌ），１４Ｒ（Ｌ）から構成され、膝関節は関節１６Ｒ（Ｌ）から構成され、足関節（足首関節）は関節１８Ｒ（Ｌ），２０Ｒ（Ｌ）から構成される。また股関節と膝関節とは大腿リンク２８Ｒ（Ｌ）で連結され、膝関節と足関節とは下腿リンク３０Ｒ（Ｌ）で連結される。【００３８】
各脚体２の前記構成により、各脚体２の足平２２Ｒ（Ｌ）は、上体２４に対して６つの自由度を与えられている。そして、ロボット１の移動に際して両脚体２，２を合わせて６*２＝１２個（この明細書で「*」はスカラに対する演算においては乗算を示し、ベクトルに対する演算においては外積を示す）の関節を適宜な角度で駆動することで、両足平２２Ｒ，２２Ｌの所望の運動を行なうことができる。これによりロボット１は任意に３次元空間を移動することができる。【００３９】
上体２４の上部の両側部には左右一対の腕体８０が取り付けられるとともに、上体２４の上端部には頭部９０が配置される。各腕体８０は、それに備える複数の関節によって、該腕体８０を上体２４に対して前後に振る等の運動を行なうことが可能となっている。両腕体８０，８０は同一構造であり、それぞれ４個の関節を備える。その４個の関節は上体２４側から順に、肩部のロール方向（Ｘ軸まわり）の回転用の関節８２Ｒ，８２Ｌと、肩部のピッチ方向（Ｙ軸まわり）の回転用の関節８４Ｒ，８４Ｌと、肘部のピッチ方向の回転用の関節８６Ｒ，８６Ｌと、手首のピッチ方向の回転用の関節８８Ｒ，８８Ｌとから構成される。各腕体８０の手首の関節８８Ｒ（Ｌ）の下部には、手部８９Ｒ（Ｌ）が設けられている。【００４０】
各腕体８０において、肩関節は関節８２Ｒ（Ｌ），８４Ｒ（Ｌ）から構成され、肘関節は関節８６Ｒ（Ｌ）から構成され、手根関節は関節８８Ｒ（Ｌ）から構成される。また肩関節と肘関節とは上部腕体８５Ｒ（Ｌ）で連結され、肘関節と手根関節とは下部腕体８７Ｒ（Ｌ）で連結されている。【００４１】
頭部９０は、上体２４に対して関節（図示略）のまわりに回動可能とされている。頭部９０には、ロボット１の周囲を撮像するカメラ９２が設けられている。【００４２】
なお、この明細書で後述する上体２４の位置および速度は、上体２４の所定位置、具体的には上体２４のあらかじめ定めた代表点（例えば左右の股関節の間の中央点等）の位置およびその移動速度を意味する。同様に、各足平２２Ｒ，２２Ｌの位置および速度は、各足平２２Ｒ，２２Ｌのあらかじめ定めた代表点の位置およびその移動速度を意味する。この場合、本実施形態では各足平２２Ｒ，２２Ｌの代表点は、例えば各足平２２Ｒ，２２Ｌの底面上（より具体的には各脚体２の足首関節の中心から各足平２２Ｒ，２２Ｌの底面への垂線が該底面と交わる点等）に設定される。【００４３】
図１に示す如く、各脚体２の足首関節１８Ｒ（Ｌ），２０Ｒ（Ｌ）の下方には足平２２Ｒ（Ｌ）との間に公知の６軸力センサ３４が介装されている。該６軸力センサ３４は、各脚体２の足平２２Ｒ（Ｌ）の着地の有無、および各脚体２に作用する床反力（接地荷重）などを検出するためのものであり、該床反力の並進力の３方向成分Ｆｘ，Ｆｙ，Ｆｚ並びにモーメントの３方向成分Ｍｘ，Ｍｙ，Ｍｚの検出信号を制御ユニット２６に出力する。また、上体２４には、Ｚ軸（鉛直方向（重力方向））に対する上体２４の傾き（姿勢角）とその角速度とを検出するための傾斜センサ３６が設置され、その検出信号が該傾斜センサ３６から制御ユニット２６に出力される。また、詳細構造の図示は省略するが、ロボット１の各関節には、それを駆動するために電動モータ３２（図３参照）と、その電動モータ３２の回転量（各関節の回転角）を検出するためのエンコーダ（ロータリエンコーダ）３３（図３参照）とが設けられ、該エンコーダ３３の検出信号が該エンコーダ３３から制御ユニット２６に出力される。【００４４】
図２に示すように、各足平２２Ｒ（Ｌ）の上方には、前記６軸力センサ３４との間にばね機構３８が装備されるとともに、足底（各足平２２Ｒ（Ｌ）の底面）にはゴムなどからなる足底弾性体４０が貼られている。これらのばね機構３８および足底弾性体４０によりコンプライアンス機構４２が構成されている。ばね機構３８は具体的には、足平２２Ｒ（Ｌ）の上面部に取り付けられた方形状のガイド部材（図示せず）と、足首関節１８Ｒ（Ｌ）（図２では足首関節２０Ｒ（Ｌ）を省略している）および６軸力センサ３４側に取り付けられ、前記ガイド部材内に弾性材（ゴムやばね）を介して微動自在に収納されるピストン状部材（図示せず）とから構成されている。【００４５】
図２に実線で表示された足平２２Ｒ（Ｌ）は、床反力を受けていないときの状態を示している。各脚体２が床反力を受けると、コンプライアンス機構４２のばね機構３８と足底弾性体４０とがたわみ、足平２２Ｒ（Ｌ）は図中に点線で例示したような位置姿勢に移る。このコンプライアンス機構４２の構造は、着地衝撃を緩和するためだけでなく、ロボット１の制御性を高めるためにも重要なものである。なお、その詳細は本出願人に先に提案した特開平５−３０５５８４号に記載されているので、詳細な説明は省略する。【００４６】
さらに、図１では図示を省略するが、ロボット１の外部には、該ロボット１の操縦用のジョイスティック（操作器）４４（図３参照）が設けられ、そのジョイスティック４４を操作することで、直進移動しているロボット１を旋回させるなど、ロボット１の歩容に対する要求を必要に応じて制御ユニット２６に入力できるように構成される。この場合、入力できる要求は、例えばロボット１の移動時の歩容形態（歩行、走行等）、遊脚の着地位置姿勢や着地時刻、またはこれらの着地位置姿勢や着地時刻を規定する指令データ（例えばロボット１の移動方向、移動速度等）である。【００４７】
図３は制御ユニット２６の構成を示すブロック図である。該制御ユニット２６はマイクロコンピュータにより構成されており、ＣＰＵからなる第１の演算装置６０および第２の演算装置６２、Ａ／Ｄ変換器５０、カウンタ５６、Ｄ／Ａ変換器６６、ＲＡＭ５４、ＲＯＭ６４、並びにこれらの間のデータ授受を行なうバスライン５２を備えている。この制御ユニット２６では、前記各脚体２の６軸力センサ３４、傾斜センサ３６、ジョイスティック４４等の出力信号はＡ／Ｄ変換器５０でデジタル値に変換された後、バスライン５２を介してＲＡＭ５４に入力される。また、ロボット１の各関節のエンコーダ３３（ロータリエンコーダ）の出力はカウンタ５６を介してＲＡＭ５４に入力される。【００４８】
前記第１の演算装置６０は後述の如く、目標歩容を生成するとともに、関節角変位指令（各関節の変位角または各電動モータ３２の回転角の指令値）を算出し、ＲＡＭ５４に送出する。また第２の演算装置６２はＲＡＭ５４から関節角変位指令と、前記エンコーダ３３の出力信号に基づいて検出された関節角の実測値とを読み出し、各関節の駆動に必要な操作量を算出してＤ／Ａ変換器６６とサーボアンプ３２ａとを介して各関節を駆動する電動モータ３２に出力する。【００４９】
図４は、本実施形態におけるロボット１の歩容生成装置および制御装置の機能的構成を全体的に示すブロック図である。この図４中の「実ロボット」の部分以外の部分が制御ユニット２６が実行する処理機能（主として第１の演算装置６０および第２の演算装置６２の機能）によって構成されるものである。なお、以下の説明では、脚体２の左右を特に区別する必要がないときは、前記符号Ｒ，Ｌを省略する。【００５０】
以下説明すると、制御ユニット２６は、後述の如く目標歩容を自在かつリアルタイムに生成して出力する歩容生成装置１００を備えている。該歩容生成装置１００は、その機能によって、本願発明の各手段を構成するものである。この歩容生成装置１００が出力する目標歩容は、目標上体位置姿勢軌道（上体２４の目標位置および目標姿勢の軌道を意味する。上体２４の目標姿勢には、上部上体２４１の目標姿勢および下部上体２４２の目標姿勢が含まれる。）、目標足平位置姿勢軌道（各足平２２の目標位置および目標姿勢の軌道）、目標腕姿勢軌道（各腕体８０の目標姿勢の軌道）、目標全床反力中心点（目標ＺＭＰ）軌道、および目標全床反力軌道から構成される。なお、脚体２や腕体８０以外に、上体２４に対して可動な部位を備える場合には、その可動部位の目標位置姿勢軌道が目標歩容に加えられる。【００５１】
ここで、前記歩容における「軌道」は時間的変化のパターン（時系列パターン）を意味し、以下の説明では、「軌道」の代わりに「パターン」と称することもある。また、「姿勢」は空間的な向きを意味する。具体的には、例えば上体姿勢はＺ軸（鉛直軸）に対するロール方向（Ｘ軸まわり）の上体２４の傾斜角（姿勢角）とピッチ方向（Ｙ軸まわり）の上体２４の傾斜角（姿勢角）とで表され、足平姿勢は各足平２２に固定的に設定された２軸の空間的な方位角で表される。本明細書では、上体姿勢は上体姿勢角ということもある。【００５２】
なお、以下の説明では、誤解を生じるおそれがない場合には、しばしば「目標」を省略する。また、歩容のうちの、床反力に係わる構成要素以外の構成要素、すなわち足平位置姿勢、上体位置姿勢等、ロボット１の運動に係わる歩容を総称的に「運動」という。また、各足平２２に作用する床反力（並進力およびモーメントからなる床反力）を「各足平床反力」と呼び、ロボット１の全て（２つ）の足平２２Ｒ，２２Ｌについての「各足平床反力」の合力を「全床反力」という。但し、以下の説明においては、各足平床反力はほとんど言及しないので、特に断らない限り、「床反力」は「全床反力」と同義として扱う。【００５３】
目標床反力は、一般的には、作用点とその点に作用する並進力およびモーメントによって表現される。作用点はどこにとっても良いので、同一の目標床反力でも無数の表現が考えられるが、特に目標床反力中心点（全床反力の中心点の目標位置）を作用点にして目標床反力を表現すると、目標床反力のモーメント成分は、鉛直成分（鉛直軸（Ｚ軸）まわりのモーメント）を除いて零になる。換言すれば、目標床反力中心点まわりの目標床反力のモーメントの水平成分（水平軸（Ｘ軸およびＹ軸）回りのモーメント）は零になる。【００５４】
なお、動力学的平衡条件を満足する歩容では、ロボット１の目標運動軌道から算出されるＺＭＰ（目標運動軌道から算出される慣性力と重力との合力がその点まわりに作用するモーメントが、鉛直成分を除いて零になる点）と目標床反力中心点は一致することから、目標床反力中心点軌道の代わりに目標ＺＭＰ軌道を与えると言っても同じことである（詳細は、本願出願人による特願２０００−３５２０１１号等を参照）。【００５５】
このような背景から、前記特願２０００−３５２０１１号の明細書では目標歩容を、次のように定義していた。
ａ）広義の目標歩容とは、１歩ないしは複数歩の期間の目標運動軌道とその目標床反力軌道との組である。
ｂ）狭義の目標歩容とは、１歩の期間の目標運動軌道とそのＺＭＰ軌道との組である。
ｃ) 一連の歩容は、いくつかの歩容がつながったものとする。【００５６】
歩行においては、本出願人が先に特開平１０−８６０８０号公報で提案した上体高さ決定手法によってロボット１の上体２４の鉛直位置（上体高さ）が決定されると、並進床反力鉛直成分は従属的に決定される。さらに、目標歩容の運動による慣性力と重力との合力が目標ＺＭＰまわりに発生するモーメントの水平成分が零になるようにロボット１の上体水平位置軌道を決定することで、並進床反力水平成分も決定される。このため、特願２０００−３５２０１１号の明細書では、目標歩容の床反力に関して明示的に設定すべき物理量としては、目標ＺＭＰだけで十分であった。従って、狭義の目標歩容の定義としては、前記のｂ）で十分であった。それに対し、本実施形態で説明するロボット１の走行歩容（詳細は後述する）においては、床反力鉛直成分（並進床反力鉛直成分）も制御上重要である。このため本発明では、この床反力鉛直成分の目標軌道を明示的に設定した上で、ロボット１の目標上体鉛直位置等の軌道を決定する。そこで、本明細書では、狭義の目標歩容の定義として、次のｂ’）を用いる。
ｂ’）狭義の目標歩容とは、１歩の期間の目標運動軌道とその目標ＺＭＰ軌道と目標並進床反力鉛直成分軌道との組である。【００５７】
この明細書では以降、理解を容易にするために、特にことわらない限り、目標歩容は前記ｂ’）の狭義の目標歩容の意味で使用する。この場合、目標歩容の「１歩」は、ロボット１の片方の脚体２が着地してからもう一方の脚体２が着地するまでの意味で使用する。なお、以下の説明では、「床反力鉛直成分」は「並進床反力鉛直成分」を意味するものとし、床反力のうちのモーメントの鉛直成分（鉛直軸回り成分）は、「モーメント」という用語を用いて「床反力鉛直成分」と区別をする。同様に、「床反力水平成分」は「並進床反力水平成分」を意味するものとする。【００５８】
また、歩容における両脚支持期とは言うまでもなく、ロボット１がその自重を両脚体２Ｌ，２Ｒで支持する期間、片脚支持期とはいずれか一方のみの脚体２でロボット１の自重を支持する期間、空中期とは両脚体２Ｌ，２Ｒが床から離れている（空中に浮いている）期間を言う。片脚支持期においてロボット１の自重を支持しない側の脚体２を「遊脚」と呼ぶ。なお、本実施形態で説明する走行歩容では、両脚支持期は無く、片脚支持期（着地期）と空中期とが交互に繰り返される。この場合、空中期では両脚２Ｌ，２Ｒとも、ロボット１の自重を支持しないこととなるが、該空中期の直前の片脚支持期において遊脚であった脚体２、支持脚であった脚体２をそれぞれ該空中期においても遊脚、支持脚と呼ぶ。【００５９】
図５に示す走行歩容を例にして、歩容生成装置１００が生成する目標歩容の概要を説明する。なお、歩容に関するその他の定義および詳細は、先に本願出願人が提案した特開平１０−８６０８１号公報にも記載されているので、以下では、特開平１０−８６０８１号公報に記載されていない内容を主に説明する。【００６０】
まず、図５に示す走行歩容を説明する。この走行歩容は、人間の通常的な走行歩容と同様の歩容である。この走行歩容では、ロボット１の左右いずれか一方のみの脚体２（支持脚）の足平２２が着地（接地）する片脚支持期と、両脚体２Ｌ，２Ｒが空中に浮く空中期とが交互に繰り返される。図５の１番目の状態は片脚支持期の開始時（初期）の状態、２番目の状態は片脚支持期の中間時点の状態、３番目の状態は片脚支持期に続く空中期の開始時（片脚支持期の終了時）の状態、４番目の状態は空中期の中間時点の状態、５番目の状態は空中期の終了時（次の片脚支持期の開始時）の状態を示している。【００６１】
この走行歩容では、ロボット１は、図５の１番目の状態で示すように、片脚支持期の開始時において支持脚（ロボット１の進行方向前側の脚体２）側の足平２２のかかとで着地する。続いて、図５の２番目の状態で示すように、ロボット１は、着地した足平２２（支持脚側の足平２２）の底面のほぼ全面を着地させた後、図５の３番目の状態で示すように、その支持脚側の足平２２（図５の３番目の状態におけるロボット１の進行方向後側の脚体２の足平２２）のつま先で床を蹴って空中に飛び上がる。これより片脚支持期が終了するとともに空中期が開始する。なお、片脚支持期における遊脚は、図５の１番目の状態で示すように、片脚支持期の開始時では、支持脚の後側に存在するが、図５の２番目および３番目の状態で示すように次の着地予定位置に向かって支持脚の前側に振り出される。次いで、図５の４番目の状態で示す空中期を経た後、ロボット１は、遊脚（空中期の開始直前の片脚支持期で遊脚となっていた脚体２）の足平２２のかかとで着地し、次の片脚支持期が開始される。【００６２】
図５の走行歩容を考慮しつつ、前記歩容生成装置１００が生成する目標歩容の基本的な概要を説明する。詳細は後述するが、歩容生成装置１００が目標歩容を生成するとき、遊脚側の足平２２の着地位置姿勢（着地予定位置姿勢）や着地時刻（着地予定時刻）等の目標歩容生成用の基本的な要求値（要求パラメータ）が、前記ジョイスティック４４の所要の操作等に応じて歩容生成装置１００に与えられる。そして、歩容生成装置１００は、その要求パラメータを用いて目標歩容を生成する。より詳しく言えば、歩容生成装置１００は、前記要求パラメータに応じて、目標歩容の目標足平位置姿勢軌道、目標床反力鉛直成分軌道等、目標歩容の一部の構成要素を規定するパラメータ（歩容パラメータという）を決定した上で、その歩容パラメータを用いて目標歩容の瞬時値を逐次決定し、該目標歩容の時系列パターンを生成する。【００６３】
この場合、目標足平位置姿勢軌道（より詳しくは、足平の位置および姿勢の空間的な各成分（Ｘ軸成分等）の目標軌道）は、例えば本出願人が特許第３２３３４５０号にて提案した有限時間整定フィルタを用いて足平２２ごとに生成される。この有限時間整定フィルタは、可変時定数の１次遅れフィルタ、すなわち、伝達関数が１／（１＋τｓ）の形で表されるフィルタ（τは可変の時定数。以下、このフィルタを単位フィルタという）を複数段（本実施形態では３段以上）、直列に接続したものであり、所望の指定時刻に指定値に到達するような軌道を生成・出力することができるものである。この場合、各段の単位フィルタの時定数τは、いずれも、有限時間整定フィルタの出力生成を開始してから、前記指定時刻までの残時間に応じて逐次可変的に設定される。より詳しくは、該残時間が短くなるに伴いτの値が所定の初期値（＞０）から減少されていき、最終的には、該残時間が０になる指定時刻にて、τの値が０になるように設定される。そして、有限時間整定フィルタには、前記指定値（より詳しくは、有限時間整定フィルタの出力の初期値から前記指定値への変化量）に応じた高さのステップ入力が与えられる。このような有限時間整定フィルタは、指定時刻にて指定値に達するような出力が生成されるだけでなく、指定時刻における有限時間整定フィルタの出力の変化速度を０またはほぼ０にすることができる。特に、単位フィルタを３段以上（３段でよい）、接続した場合には、有限時間整定フィルタの出力の変化加速度（変化速度の微分値）をも０またはほぼ０にすることができる。【００６４】
このような有限時間整定フィルタを用いる足平位置姿勢軌道（足平２２が着地してから次に着地するまでの位置姿勢軌道）の生成は、例えば次のように行なわれる。例えばＸ軸方向（前後方向）の目標足平位置軌道は次のように生成される。すなわち、前記要求パラメータにより定まる各足平２２の次の着地予定位置のＸ軸方向位置（より詳しくは、次の着地予定位置のひとつ前の着地位置に対するＸ軸方向の変化量（移動量）。これは前記指定値に相当する）に応じて有限時間整定フィルタへのステップ入力の高さが決定されるとともに前記時定数τが所定の初期値に初期化された後、その決定されたステップ入力が有限時間整定フィルタに与えられ、足平２２のＸ軸方向位置の軌道生成が開始される。そして、この軌道生成時には、前記時定数τは、足平２２の着地予定時刻（これは前記指定時刻に相当する）までに初期値から０まで減少していくように、逐次可変設定される。これにより、着地予定時刻で着地予定位置に達するような、足平２２のＸ軸方向の位置の軌道が生成される。【００６５】
また、Ｚ軸方向（鉛直方向）の目標足平位置軌道は、例えば次のように生成される。すなわち、まず、足平２２の次の着地予定位置および着地予定時刻に応じて、該足平２２の高さ（鉛直位置）が最大になるときの該足平２２のＺ軸方向位置（以下、最高点位置という）とその最高点位置への到達時刻とが決定される。そして、その最高点位置（これは前記指定値に相当する）に応じて有限時間整定フィルタへのステップ入力の高さが決定されるとともに時定数τが初期化された後、その決定されたステップ入力が有限時間整定フィルタに与えられ、前記最高点位置までのＺ軸方向の足平位置軌道が逐次生成される。この際、時定数τは、最高点位置への到達時刻（前記指定時刻に相当）までに初期値から０まで減少するように逐次可変設定される。さらに、最高点位置までのＺ軸方向位置の軌道の生成が終了したら、時定数τを初期化するとともにいままでのステップ入力と逆極性のステップ入力（より詳しくは、最高点位置から次の着地予定位置までのＺ軸方向の変化量（これは前記指定値に相当する）に応じた高さの逆極性のステップ入力）が有限時間整定フィルタに入力され、該最高点位置から着地予定位置までのＺ軸方向の足平位置の軌道が逐次生成される。この際、時定数τは足平２２の着地予定時刻までに初期値から０まで減少するように逐次可変設定される。【００６６】
なお、Ｚ軸方向の足平位置軌道の生成においては、時定数τを軌道生成開始時刻から足平２２の着地予定時刻まで、初期値から０まで継続的に減少するように可変設定するとともに、最高点位置への到達時刻またはその近傍時刻で、ステップ入力の極性を逆極性に切り替えることで、Ｚ軸方向の足平位置軌道を生成するようにしてもよい。この場合には、足平２２を所望の最高点位置に精度よく到達させることはできないが、着地予定時刻での着地予定位置への到達は問題なく行なうことができる。【００６７】
足平姿勢軌道についても、前述した足平位置軌道と同様に有限時間整定フィルタを用いて生成することができる。この場合、足平姿勢の空間的な各成分のうち、その姿勢の角度変化が単調的（単調増加または単調減少）なものとなる成分については、前記したＸ軸方向の足平位置軌道の生成と同様に足平姿勢軌道を生成すればよい。また、姿勢の角度変化が極大値または極小値をもつような成分については、前記したＺ軸方向の足平位置軌道の生成と同様に足平姿勢軌道を生成すればよい。【００６８】
なお、前記のように有限時間整定フィルタにより生成される目標足平位置姿勢軌道は、床面に固定された後述の支持脚座標系での各足平２２の目標位置姿勢軌道である。【００６９】
前述のように生成される目標足平位置姿勢軌道は、各足平２２の位置が、その初期接地状態（目標歩容の初期時刻の状態）から着地予定位置に向かって徐々に加速しながら移動を開始するように生成される。そして、該目標足平位置姿勢軌道は、最終的に着地予定時刻までに徐々に位置の変化速度を０またはほぼ０にまで減速し、着地予定時刻にて着地予定位置に到達して停止するように生成される。このため、各足平２２の着地瞬間における対地速度（床に固定された支持脚座標系での各足平２２の位置の変化速度）が０またはほぼ０になる。従って、走行歩容において同時に全脚体２，２が空中に存在する状態（空中期での状態）から着地しても、着地衝撃が小さくなる。【００７０】
前記走行歩容においては、ロボット１に作用する重力によって空中期後半から上体２４の鉛直速度は下向きになり、着地時でも下向きのままである。従って、前記のように各足平２２の着地瞬間における対地速度が０またはほぼ０になるように目標足平位置姿勢軌道を生成するとともに、後述する如く動力学的平衡条件を満たすように上体２４の目標位置姿勢軌道を生成したとき、着地直前において、上体２４に対する遊脚側の足平２２の相対速度は、上向きになる。すなわち、走行歩容の着地瞬間では、ロボット１の目標歩容は遊脚側の脚体２２を上体２４側に引っ込めながら着地するような歩容となる。言い換えれば、本実施例での目標歩容では、ロボット１は、着地瞬間において、遊脚側の足平２２の対地速度が０またはほぼ０になるように、上体２４から見て該足平２２を引き上げるようにして着地する。これによって、着地衝撃は小さくなり、着地衝撃が過大になるのを防止するようにしている。【００７１】
また、本実施形態では、有限時間整定フィルタは、単位フィルタを３段以上（例えば３段）、直列に接続したものであるため、着地予定時刻までに各足平２２の速度（足平位置の変化速度）が０またはほぼ０になるだけでなく、各足平２２は、その加速度も着地予定時刻にて０またはほぼ０になって停止する。つまり、着地瞬間における対地加速度も０またはほぼ０になる。従って、着地衝撃がより一層小さくなる。特に、実際のロボット１の着地時刻が目標の着地時刻からずれても、衝撃があまり増大しなくなる。補足すると、着地予定時刻にて各足平２２の対地速度を０またはほぼ０にする上では、有限時間整定フィルタの単位フィルタの段数は２段でもよいが、この場合には、着地予定時刻での各足平２２の加速度は一般には０にならない。【００７２】
なお、足平姿勢に関しては、各足平２２が着地予定時刻にてその踵で着地した後、該足平２２の底面のほぼ全面が床に接地するまで動き続ける。このため、該足平２２の底面のほぼ全面が床に接地する時刻を前記指定時刻に設定して、前記有限時間整定フィルタにより足平姿勢軌道が生成される。【００７３】
また、本実施形態では、有限時間整定フィルタを用いて足平位置軌道を生成したが、着地予定時刻での足平位置の変化速度が０またはほぼ０になる（足平位置の時間微分値が０になる）ように、さらには、該着地予定時刻での足平位置の変化加速度（変化速度の時間微分値）が０またはほぼ０になるように設定された多項式などの関数を用いて目標足平位置軌道を生成するようにしても良い。このことは、目標足平姿勢軌道の生成に関しても同様である。但し、該目標足平姿勢軌道の生成に関しては、前述の如く、各足平２２の底面のほぼ全面が床に接地する時刻にて、各足平２２の姿勢の変化速度、さらにはその変化加速度が０またはほぼ０になるように多項式などの関数が設定される。
【００７４】
目標床反力鉛直成分軌道は、例えば図６のように設定される。本実施形態では、走行歩容における目標床反力鉛直成分軌道の形状（詳しくは片脚支持期での形状）は、台形状（床反力鉛直成分の増加側に凸の形状）に定められており、その台形の高さ、折れ点の時刻を目標床反力鉛直成分軌道を規定する歩容パラメータとして、それらの歩容パラメータ（床反力鉛直成分軌道パラメータ）が決定される。なお、走行歩容の空中期では、目標床反力鉛直成分は定常的に０に設定される。この例のように、目標床反力鉛直成分軌道は、実質的に連続になるように（値が不連続にならないように）設定するのが良い。これは床反力を制御する際のロボット１の関節の動作を滑らかにするためである。なお、「実質的に連続」というのは、アナログ的に連続な軌道（真の意味での連続な軌道）を離散時間系でデジタル表現したときに必然的に生じる値の飛びは、該軌道の連続性を失わせるものではないということを意味するものである。【００７５】
目標ＺＭＰ軌道は次のように設定される。図５の走行歩容においては、前記したように支持脚側足平２２のかかとで着地し、次にその支持脚側足平２２のつま先で蹴って空中に飛び上がり、最後に遊脚側足平２２のかかとで着地する。従って、片脚支持期での目標ＺＭＰ軌道は、図７の上段図に示すように、支持脚側足平２２のかかとを初期位置として、次に支持脚側足平２２の底面のほぼ全面が接地する期間において該足平２２の前後方向の中央に移動し、その後、離床時までに支持脚側足平２２のつまさきに移動するように設定される。ここで、図７の上段図は、Ｘ軸方向（前後方向）の目標ＺＭＰ軌道を示すものであり、図７の下段図はＹ軸方向（左右方向）の目標ＺＭＰ軌道を示すものである。なお、片脚支持期におけるＹ軸方向の目標ＺＭＰ軌道は、図７の下段図に示すように、Ｙ軸方向での支持脚側脚体２の足首関節の中心位置と同じ位置に設定される。【００７６】
走行歩容では、さらに片脚支持期の終了後、両脚体２，２が床から離れ、床反力鉛直成分が０になる。床反力鉛直成分が０の時、すなわち空中期には、ロボット１の全体重心は自由落下運動をし、全体重心まわりの角運動量変化は零である。この時、床の任意の点において、ロボット１に作用する重力と慣性力との合力のモーメントは０であるので、目標ＺＭＰは不定である。すなわち、床のいずれの点も、「重力と慣性力との合力が作用するモーメントの水平成分が０である作用点」というＺＭＰの条件を満たす。言いかえれば、任意の点に目標ＺＭＰを設定しても、前記合力が目標ＺＭＰ回りに作用するモーメントの水平成分が０であるという動力学的平衡条件を満足する。従って、目標ＺＭＰを不連続に設定しても構わない。例えば、空中期では、目標ＺＭＰを、離床時（片脚支持期の終了時）の目標ＺＭＰ位置から移動しないように設定し、空中期終端において、着地時の目標ＺＭＰ位置に不連続（ステップ状）に移動するように該目標ＺＭＰ軌道を設定しても構わない。しかし本実施形態では、図７の上段図に示すように、空中期における目標ＺＭＰ軌道のＸ軸方向位置は、次の遊脚側脚体２の着地までに支持脚側足平２２のつまさきから遊脚側足平２２のかかとの着地位置まで連続的に移動するようにした。また、図７の下段図に示すように、空中期における目標ＺＭＰ軌道のＹ軸方向位置は、次の遊脚側脚体２の着地までに支持脚側脚体２の足首関節の中心のＹ軸方向位置から遊脚側脚体２の足首関節の中心のＹ軸方向位置まで連続的に移動するようにした。すなわち、歩容の全期間において目標ＺＭＰ軌道を連続（実質的に連続）にした。そして、後述するように、目標ＺＭＰまわりの重力と慣性力との合力のモーメント（鉛直成分を除く）が零になるように目標歩容を生成する（より具体的には目標上体位置姿勢軌道を調整する）ようにした。【００７７】
なお、本実施形態では、図７に示したような目標ＺＭＰ軌道の折れ点の位置や時刻が、ＺＭＰ軌道パラメータ（目標ＺＭＰ軌道を規定するパラメータ）として設定される。また、前記したＺＭＰ軌道の「実質的に連続」の意味は、前記床反力鉛直成分軌道の場合と同様である。【００７８】
ＺＭＰ軌道パラメータは、安定余裕が高く、かつ急激な変化をしないように決定される。ここで、ロボット１の接地面を含む最小の凸多角形（いわゆる支持多角形）の中央付近に目標ＺＭＰが存在する状態を安定余裕が高いと言う（詳細は特開平１０−８６０８１号公報を参照）。図７の目標ＺＭＰ軌道はこのような条件を満たすように設定したものである。【００７９】
また、目標腕姿勢は、上体２４に対する相対姿勢で表す。【００８０】
また、目標上体位置姿勢、目標足平位置姿勢および後述の基準上体姿勢はグローバル座標系で記述される。グローバル座標系は前述のごとく床に固定された座標系である。グローバル座標系としては、より具体的には、後述する支持脚座標系が用いられる。【００８１】
本実施形態における歩容生成装置１００は、ロボット１の片方の脚体２が着地してから他方の脚体２が着地するまでの１歩分の目標歩容（前記狭義の意味での目標歩容）を単位として、その１歩分の目標歩容を順番に生成する。従って、本実施形態で生成する図５の走行歩容では、該目標歩容は片脚支持期の開始時から、これに続く空中期の終了時（次の片脚支持期の開始時）までの目標歩容が順番に生成される。ここで、新たに生成しようとしている目標歩容を「今回歩容」、その次の目標歩容を「次回歩容」、さらにその次の目標歩容を「次次回歩容」、というように呼ぶ。また、「今回歩容」の一つ前に生成した目標歩容を「前回歩容」と呼ぶ。【００８２】
また、歩容生成装置１００が今回歩容を新たに生成するとき、該歩容生成装置１００には、ロボット１の２歩先までの遊脚側足平２２の着地予定位置姿勢、着地予定時刻の要求値（要求）が歩容に対する要求パラメータとして入力される（または歩容生成装置１００が記憶装置から要求パラメータを読み込む）。そして、歩容生成装置１００は、これらの要求パラメータを用いて、目標上体位置姿勢軌道、目標足平位置姿勢軌道、目標ＺＭＰ軌道、目標床反力鉛直成分軌道、目標腕姿勢軌道等を生成する。このとき、これらの軌道を規定する歩容パラメータの一部は、歩行の継続性を確保するように適宜修正される。【００８３】
以下に図５の走行歩容を生成することを例にして、歩容生成装置１００の歩容生成処理の詳細を図８〜図１２を参照しつつ説明する。図８は、その歩容生成装置１００が実行する歩容生成処理を示すフローチャート（構造化フローチャート）である。【００８４】
まずＳ０１０において時刻ｔを０に初期化するなど種々の初期化作業が行なわれる。この処理は、歩容生成装置１００の起動時等に行なわれる。次いで、Ｓ０１２を経てＳ０１４に進み、歩容生成装置１００は、制御周期（図８のフローチャートの演算処理周期）毎のタイマ割り込みを待つ。制御周期はΔｔである。【００８５】
次いで、Ｓ０１６に進み、歩容の切り替わり目であるか否かが判断され、歩容の切り替わり目であるときはＳ０１８に進むとともに、切り替わり目でないときはＳ０３０に進む。ここで、前記「歩容の切り替わり目」は、前回歩容の生成が完了し、今回歩容の生成を開始するタイミングを意味し、例えば前回歩容の生成を完了した制御周期の次の制御周期が歩容の切り替わり目になる。【００８６】
Ｓ０１８に進むときは時刻ｔが０に初期化され、次いでＳ０２０に進み、次回歩容支持脚座標系、次次回歩容支持脚座標系、今回歩容周期および次回歩容周期が読み込まれる。これらの支持脚座標系および歩容周期は、前記要求パラメータにより定まるものである。すなわち、本実施形態では、歩容生成装置１００にジョイスティック４４等から与えられる要求パラメータは、２歩先までの遊脚側足平２２の着地予定位置姿勢（足平２２が着地してから足底を床面にほぼ全面的に接触させるように、滑らさずに回転させた状態での足平位置姿勢）、着地予定時刻の要求値を含んでおり、その１歩目の要求値、２歩目の要求値がそれぞれ、今回歩容、次回歩容に対応するものとして、今回歩容の生成開始時（前記Ｓ０１６の歩容の切り替わり目）以前に歩容生成装置１００に与えられたものである。なお、これらの要求値は今回歩容の生成途中でも変更することは可能である。【００８７】
そして、前記要求パラメータにおける１歩目の遊脚側足平２２（今回歩容での遊脚側足平２２）の着地予定位置姿勢の要求値に対応して次回歩容支持脚座標系が定まる。【００８８】
次いでＳ０２２に進み、歩容生成装置１００は、今回歩容に続く仮想的な周期的歩容としての定常旋回歩容の歩容パラメータを決定する。該歩容パラメータは、定常旋回歩容における目標足平位置姿勢軌道を規定する足平軌道パラメータ、基準とする上体姿勢軌道を規定する基準上体姿勢軌道パラメータ、目標腕姿勢軌道を規定する腕軌道パラメータ、目標ＺＭＰ軌道を規定するＺＭＰ軌道パラメータ、目標床反力鉛直成分軌道を規定する床反力鉛直成分軌道パラメータを含む。さらに、目標床反力水平成分許容範囲を規定するパラメータも歩容パラメータに含まれる。【００８９】
なお、この明細書で「定常旋回歩容」は、その歩容を繰り返したときに歩容の境界（本実施形態では１歩毎の歩容の境界）においてロボット１の運動状態（足平位置姿勢、上体位置姿勢等の状態）に不連続が生じないような周期的歩容を意味するものとして使用する。以降、「定常旋回歩容」を「定常歩容」と略す場合もある。【００９０】
定常旋回歩容は、歩容生成装置１００で今回歩容の終端における発散成分や上体鉛直位置速度、上体姿勢角およびその角速度等のロボット１の運動状態を決定するために暫定的に作成されるものであり、歩容生成装置１００からそのまま出力されるものではない。【００９１】
なお、「発散」とは、２足移動ロボット１の上体２４の位置が両足平２２，２２の位置からかけ離れた位置にずれてしまうことを意味する。発散成分の値とは、２足移動ロボット１の上体２４の位置が両足平２２，２２の位置（より具体的には、支持脚側足平２２の接地面に設定されたグローバル座標系（支持脚座標系）の原点）からかけ離れていく具合を表す数値である。【００９２】
本題に戻り、Ｓ０２２では、図９に示すフローチャートに従って、以下の処理が行われる。【００９３】
まず、Ｓ１００において、今回歩容、第１旋回歩容、第２旋回歩容の順に足平位置姿勢軌道がつながるように、定常歩容の歩容パラメータのうちの足平軌道パラメータが決定される。なお、以降の説明では、支持脚側の脚体２の足平２２を支持脚足平と称し、遊脚側の脚体２の足平２２を遊脚足平と称する。また、歩容の「初期」、「終端」はそれぞれ歩容の開始時刻、終了時刻またはそれらの時刻における瞬時歩容を意味する。
【００９４】
足平軌道パラメータは、第１旋回歩容および第２旋回歩容の初期および終端のそれぞれにおける支持脚足平および遊脚足平のそれぞれの位置姿勢、各旋回歩容の歩容周期等から構成される。この足平軌道パラメータのうち、第１旋回歩容初期遊脚足平位置姿勢は、次回歩容支持脚座標系から見た今回歩容終端支持脚足平位置姿勢とされる。この場合、走行歩容では、今回歩容終端における支持脚足平２２は、空中に移動している。そして、今回歩容終端支持脚足平位置姿勢は、今回歩容初期支持脚足平位置姿勢（＝前回歩容終端遊脚足平位置姿勢）から、前記要求パラメータにおける２歩目の遊脚側足平２２の着地予定位置姿勢の要求値（今回歩容の支持脚足平２２の次回歩容における着地予定位置姿勢の要求値）または該要求値に対応する次次回歩容支持脚座標系に応じて定まる次回歩容終端遊脚足平位置姿勢に至る足平位置姿勢軌道（詳しくは次回歩容支持脚座標系から見た軌道）を、今回歩容終端まで前記有限時間整定フィルタを用いて生成することにより求められる。【００９５】
次に、Ｓ１０２に進み、目標上体姿勢が追従すべき基準上体姿勢軌道を規定する基準上体姿勢軌道パラメータが決定される。基準上体姿勢は、定常歩容の初期（第１旋回歩容の初期）と終端（第２旋回歩容の終端）とでつながるように（定常歩容の初期、終端での基準上体姿勢の姿勢角およびその角速度が一致するように）に設定されている限り、一定姿勢である必要はないが、本実施形態では理解を容易にするため、基準上体姿勢は、直立姿勢（鉛直姿勢）に設定される。つまり、本実施形態では、基準上体姿勢は、定常歩容の全期間において直立姿勢に設定される。従って、本実施形態では、基準上体姿勢の姿勢角の角速度および角加速度は０である。【００９６】
次に、Ｓ１０４に進み、腕姿勢軌道パラメータ、より詳しくは鉛直軸（または上体体幹軸）まわりの両腕体の角運動量変化に関すること以外の腕姿勢軌道パラメータが決定される。例えば、上体２４に対する腕体の手先の相対高さや腕全体の相対重心位置などの腕姿勢軌道パラメータが決定される。なお、本実施形態では、腕全体の相対重心位置は、上体に対して一定に維持されるように設定される。【００９７】
次に、Ｓ１０６に進み、床反力鉛直成分軌道パラメータが設定される。この場合、該パラメータにより規定される床反力鉛直成分軌道が、第１旋回歩容および第２旋回歩容のいずれにおいても図６のように実質的に連続な（値がステップ状に飛ばない）ものとなるように床反力鉛直成分軌道パラメータが設定される。そのパターンでは、第１旋回歩容および第２旋回歩容のいずれにおいても、片脚支持期では床反力鉛直成分が台形状に変化し、空中期では床反力鉛直成分が０に維持される。そして、このパターンの折れ点の時刻や、台形部分の高さ（ピーク値）が床反力鉛直成分軌道パラメータとして設定される。【００９８】
次に、Ｓ１０８に進み、前記のごとく設定された床反力鉛直成分軌道に応じて、床反力水平成分の許容範囲[Fｘmin，Fｘmaｘ]（より詳しくはこれを規定するパラメータ）が図１０のように設定される。図１０の負側の折れ線が床反力水平成分許容下限値Fｘmin、正側の折れ線が床反力水平成分許容上限値Fｘmaｘを表す。これらの設定方法に関して以下に補足する。以下では、床面が水平である場合について説明する。【００９９】
床反力水平成分は、床と足平２２との間の摩擦によって発生するが、摩擦はいくらでも発生できるわけではなく、限界がある。従って、生成された目標歩容に従って実際のロボット１が移動した時にスリップしないようにするためには、目標歩容の床反力水平成分が、常に摩擦限界以内になければならない。そこで、この条件を満足させるために、床反力水平成分許容範囲を設定し、後述するように、目標歩容の床反力水平成分がこの許容範囲内になるように、目標歩容を生成することとした。【０１００】
床と足平２２との間の摩擦係数をμとすると、Fｘminは、常に−μ*床反力鉛直成分以上に、Fｘmaｘはμ*床反力鉛直成分以下に設定されなければならない。最も単純な設定方法は、次式による設定である。但し、kaは１より小さい正の定数である。【０１０１】
Fｘmin =−ka * μ* 床反力鉛直成分
Fｘmaｘ =  ka * μ* 床反力鉛直成分  ・・式１２
図１０の床反力水平成分許容範囲は、式１２に従って設定した例である。床反力水平成分許容範囲を規定するパラメータとして、図１０の台形波形などの折れ点での値と時刻を設定してもよいが、式１２により床反力水平成分許容範囲を決定するときには、単に式１２における(ka * μ)の値をパラメータとして設定するだけでも良い。【０１０２】
次に、Ｓ１１０に進み、第１旋回歩容および第２旋回歩容を合わせた定常歩容のＺＭＰ軌道を規定するＺＭＰ軌道パラメータが設定される。この場合、目標ＺＭＰ軌道は、前述したように安定余裕が高くかつ急激な変化をしないように設定される。【０１０３】
さらに詳細には、図５の走行歩容においては、支持脚足平２２のかかとで着地した後、しばらくして該支持脚足平２２の底面のほぼ全面が接地し、さらにしばらくして、支持脚足平２２のつま先だけが接地する。そして、次に支持脚足平２２のつま先で蹴って空中に飛び上がり、最後に遊脚足平２２のかかとで着地する。また、目標ＺＭＰは接地面内に存在しなければならない。そこで、本実施形態では、定常歩容の第１旋回歩容および第２旋回歩容のそれぞれの目標ＺＭＰのＸ軸方向の位置は、前記図７の上段図に示したように、支持脚足平２２のかかとを初期位置として、該足平２２の底面のほぼ全体が接地するまでその位置に留まるように設定される。次に、目標ＺＭＰは支持脚足平２２の中央に移動し、該足平２２がつま先接地状態になるまでにつま先に移動し、その後、離床時まで支持脚足平２２のつまさきに留まるように設定される。さらにその後は、目標ＺＭＰは、前述のごとく、次の遊脚足平２２の着地までに目標ＺＭＰが、支持脚足平２２のつまさきから遊脚足平２２のかかとの着地位置まで連続的に移動するように設定される。そして、この目標ＺＭＰ軌道の折れ点の時刻および位置がＺＭＰ軌道パラメータとして設定される。この場合、折れ点の時刻は、前記要求パラメータに応じて定めた第１旋回歩容および第２旋回歩容の歩容周期に応じて設定され、該折れ点の位置は、次回歩容支持脚座標系および次次回歩容支持脚座標系の位置姿勢またはこれらの座標系を規定する要求パラメータの１歩目および２歩目の遊脚側足平着地予定位置姿勢の要求値に応じて設定される。なお、ＺＭＰ軌道のＹ軸方向の位置は、前記図７の下段図に示したものと同様に設定される。より詳しくは、第１旋回歩容における目標ＺＭＰのＹ軸方向位置の軌道は、図７の下段図のものと同一パターンで設定され、第２旋回歩容における目標ＺＭＰのＹ軸方向位置の軌道は、第１旋回歩容のものと同じ形の軌道で、該軌道の終端につながるものに設定される。【０１０４】
図８のＳ０１０からＳ０２２までに示す処理が行われた後、Ｓ０２４に進み、定常歩容の初期状態が算出される。ここで算出される初期状態は、定常歩容の初期上体水平位置速度（水平方向での初期上体位置及び初期上体速度）、初期上体鉛直位置速度（鉛直方向での初期上体位置及び初期上体速度）、初期発散成分、初期上体姿勢角及びその角速度である。この初期状態の算出は、探索的に行なわれる。【０１０５】
次いで、図８のＳ０２６に進み、今回歩容の歩容パラメータを決定（一部は仮決定）する。Ｓ０２６では、より具体的には、図１１に示すフローチャートに従って、以下の処理が行われる。【０１０６】
まず、Ｓ６００において、今回歩容の足平位置姿勢軌道が定常歩容の足平位置姿勢軌道につながるように、今回歩容の足平軌道パラメータが設定される。【０１０７】
次いで、Ｓ６０２に進み、今回歩容の基準上体姿勢軌道パラメータが、定常歩容の第１旋回歩容や第２旋回歩容と同様に決定される。但し、今回歩容の基準上体姿勢軌道が前記定常歩容の基準上体姿勢軌道に連続してつながる（今回歩容終端での基準上体姿勢角および角速度がそれぞれ定常歩容初期の基準上体姿勢角および角速度に一致する）ように前記パラメータが設定される。なお、本実施形態では、基準上体姿勢は、今回歩容および定常歩容のいずれでも定常的な鉛直姿勢である。【０１０８】
次いで、Ｓ６０４に進み、今回歩容の腕姿勢軌道パラメータが、定常歩容の第１旋回歩容や第２旋回歩容と同様に決定される。但し、今回歩容の腕姿勢軌道が前記定常歩容の腕姿勢軌道に連続してつながるように前記パラメータを設定する。なお、ここで決定される腕姿勢軌道パラメータは、定常歩容パラメータの決定（図９のＳ１０４）の場合と同様、鉛直軸（または上体体幹軸）まわりの両腕体の角運動量変化に関すること以外の運動パラメータであり、両腕体の重心位置の軌道を規定するパラメータである。【０１０９】
次いで、Ｓ６０６に進み、今回歩容の床反力鉛直成分軌道パラメータが、定常歩容の第１旋回歩容や第２旋回歩容と同様、該パラメータにより規定される床反力鉛直成分軌道が前記図６のように実質的に連続な（値がステップ状に飛ばない）軌道になるように設定される。【０１１０】
但し、床反力鉛直成分軌道パラメータは、今回歩容の全体重心鉛直位置速度と床反力鉛直成分軌道とのいずれもが、前記定常歩容と連続してつながるように決定される。【０１１１】
次いで、Ｓ６０８に進み、床反力水平成分許容範囲[Fｘmin，Fｘmaｘ]（具体的には該床反力水平成分許容範囲のパターンを規定するパラメータ）が、定常歩容の第１旋回歩容や第２旋回歩容と同様に設定される。例えば図１２に示すようなパターンで床反力水平成分許容範囲が設定される。本実施形態では、先にＳ６０６で決定した床反力鉛直成分パターンに応じて前記式１２に基づいて床反力水平成分許容範囲が設定される。【０１１２】
次いで、Ｓ６１０に進み、今回歩容のＺＭＰ軌道（具体的にはＺＭＰ軌道を規定するパラメータで、軌道の折れ点の時刻や位置）が、定常歩容の第１旋回歩容や第２旋回歩容と同様、安定余裕が高くかつ急激な変化をしないように、前記図７に示すごとく設定される。但し、今回歩容のＺＭＰ軌道が前記定常歩容のＺＭＰ軌道に連続してつながるように前記パラメータを設定される。つまり、今回歩容終端におけるＺＭＰの位置が定常歩容初期のＺＭＰ位置に一致するように、ＺＭＰ軌道パラメータが決定される。この場合、走行歩容では、片脚支持期におけるＺＭＰ軌道の折れ点の時刻や位置の設定の仕方は、前述した定常歩容のＺＭＰ軌道パラメータの設定の仕方と同様でよい。そして、空中期における目標ＺＭＰ軌道が、空中期開始時から、定常歩容初期のＺＭＰ位置まで、直線的に連続して変化するようにＺＭＰ軌道パラメータを設定すればよい。【０１１３】
なお、Ｓ６１０で決定される今回歩容のＺＭＰ軌道パラメータは、仮決定されただけであり、後述するように修正される。そこで、前記のごとく設定した今回歩容のＺＭＰ軌道を、以降、今回歩容の仮目標ＺＭＰ軌道と呼ぶこととする。【０１１４】
図８の説明に戻って、前記のごとくＳ０２６に示す処理（今回歩容の歩容パラメータ決定処理）を行って後、次いでＳ０２８に進み、今回歩容の歩容パラメータ（ＺＭＰ軌道パラメータ）が修正される。この処理では、上体位置姿勢軌道を定常歩容に連続させ、または近づけるべくＺＭＰ軌道パラメータが修正される。【０１１５】
図８に戻って、前記のごとくＳ０２８において今回歩容パラメータを修正した後、またはＳ０１６の判断結果がＮＯである場合には、Ｓ０３０に進み、今回歩容瞬時値が決定される。【０１１６】
続いてＳ０３１に進み、下部上体２４２の向きが決定される。【０１１７】
次いでＳ０３２に進み、スピン力をキャンセルする（ロボット１の腕体８０および上部上体２４１以外の部分（下部上体２４２、脚体２等）の運動によって目標ＺＭＰ回りに発生する床反力モーメント鉛直成分を略零にする）ための腕体８０の振り姿勢と、上部上体２４１の向きとが決定される。【０１１８】
但し、腕体８０の振り動作では、左右の腕を前後逆方向に振り、両腕体の重心位置を変化させないようにする。なお、スピン力をキャンセルするための上部上体２４１のひねり運動および腕体８０の振り運動を定常歩容でも生成しておき、これにつながるように、今回歩容における上部上体２４１のひねり運動および腕体８０の振り運動を決定するようにしてもよい。【０１１９】
本願発明は、上部上体２４１のひねり運動および腕体８０の振り運動によって、下部上体２４１や脚体２等の運動によって生じたスピン力がキャンセルされることで、ロボット１が安定に動作する点に特徴があるが、この点については後で詳述する。【０１２０】
次いでＳ０３４に進み、歩容生成用時刻ｔをΔｔだけ増やし、Ｓ０１４に戻り、以上のごとく歩容生成を続ける。【０１２１】
以上が、歩容生成装置１００における目標歩容生成処理である。【０１２２】
図４を参照して本実施形態に係る装置の動作をさらに説明すると、歩容生成装置１００において、前記したように目標歩容が生成される。生成された目標歩容のうち、目標上体位置姿勢（軌道）、目標腕姿勢（軌道）が、ロボット幾何学モデル（逆キネマティクス演算部）１０２に送出される。【０１２３】
また、目標足平位置姿勢（軌道）、目標ＺＭＰ軌道（目標全床反力中心点軌道）、および目標全床反力（軌道）（目標床反力水平成分と目標床反力鉛直成分）は、複合コンプライアンス動作決定部１０４に送られるとともに、目標床反力分配器１０６にも送られる。そして、目標床反力分配器１０６で、床反力は各足平２２Ｒ，２２Ｌに分配され、目標各足平床反力中心点および目標各足平床反力が決定される。この決定された目標各足平床反力中心点および目標各足平床反力は複合コンプライアンス動作決定部１０４に送られる。【０１２４】
複合コンプライアンス動作決定部１０４から、機構変形補償付き修正目標足平位置姿勢（軌道）がロボット幾何学モデル１０２に送られる。ロボット幾何学モデル１０２は、目標上体位置姿勢（軌道）と機構変形補償付き修正目標足平位置姿勢（軌道）を入力されると、それらを満足する脚体２，２の１２個の関節（１０Ｒ（Ｌ）など）の関節変位指令（値）を算出して変位コントローラ１０８に送る。変位コントローラ１０８は、ロボット幾何学モデル１０２で算出された関節変位指令（値）を目標値としてロボット１の脚体の１２個の関節の変位（関節駆動用モータ３２に備えられたエンコーダ３３の値）を追従制御する。また、ロボット幾何学モデル１０２は、目標腕姿勢を満足する腕関節の変位指定（値）を算出して変位コントローラ１０８に送る。変位コントローラ１０８は、ロボット幾何学モデル１０２で算出された関節変位指令（値）を目標値としてロボット１の腕体の１２個の関節の変位を追従制御する。
【０１２５】
ロボット１に生じた床反力（詳しくは実各足床反力）は６軸力センサ３４によって検出される。その検出値は前記複合コンプライアンス動作決定部１０４に送られる。また、ロボット１に生じた姿勢傾斜偏差θerrｘ，θerry（詳しくは目標上体姿勢角に対する実姿勢角の偏差で、ロール方向（Ｘ軸回り）の姿勢角偏差がθerrｘであり、ピッチ方向（Ｙ軸回り）の姿勢角偏差がθerryである）が傾斜センサ３６を介して検出され、その検出値は姿勢安定化制御演算部１１２に送られる。この姿勢安定化制御演算部１１２で、ロボット１の上体姿勢角を目標上体姿勢角に復元するための目標全床反力中心点（目標ＺＭＰ）まわり補償全床反力モーメントが算出されて複合コンプライアンス動作決定部１０４に送られる。複合コンプライアンス動作決定部１０４は、入力値に基づいて目標床反力を修正する。具体的には、目標全床反力中心点（目標ＺＭＰ）回りに補償全床反力モーメントが作用するように目標床反力を修正する。【０１２６】
複合コンプライアンス動作決定部１０４は、修正された目標床反力に、センサ検出値などから算出される実ロボットの状態および床反力を一致させようと前記機構変形補償付き修正目標足平位置姿勢（軌道）を決定する。但しすべての状態を目標に一致させることは事実上不可能であるので、これらの間にトレードオフ関係を与えて妥協的になるべく一致させる。すなわち、各目標に対する制御偏差に重みを与えて、制御偏差（または制御偏差の２乗）の重み付き平均が最小になるように制御する。これにより、実際の足平位置姿勢と全床反力とが目標足平位置姿勢と目標全床反力とに概ね従うように制御される。【０１２７】
なお、この発明の要旨は歩容生成装置１００におけるロボット１の歩容生成にあり、前記した複合コンプライアンス動作決定部１０４などの構成および動作は、本出願人が先に出願した特開平１０−２７７９６９号公報などに詳細に記載されているので、説明を以上に止める。【０１２８】
なお、前記実施形態において、ブロック線図、フローチャート、およびアルゴリズムなどは、演算処理順序を変えるなどの等価変形をしても良い。また、適宜ローパスフィルタを挿入しても良い。【０１２９】
また、前記実施形態を２足移動ロボットに関して説明してきたが、３足以上の多脚ロボットにも応用することができる。【０１３０】
次に、ロボット１の歩行歩容の生成に関して説明する。なお、ここで、歩行歩容は、空中期がなく、片脚支持期と両脚支持期とが交互に繰り返される歩容である。【０１３１】
歩行歩容を生成する場合には、Ｓ１０６およびＳ６０６において以下のような処理を行う。すなわち、膝の曲げ角度が適切であるかなど、少なくとも各脚体の関節の変位に関する幾何学的条件（幾何学的制約条件）から決定した上体鉛直位置軌道（本出願人による特開平１０−８６０８０号公報に示される上体高さ決定手法などを用いた上体鉛直位置軌道）の位相や振幅などの特徴量をできる限り満足するように床反力鉛直成分軌道を決定する。【０１３２】
これにより、歩容生成のアルゴリズムの主要部を走行と歩行とで共通化しつつ、歩行途中から走行へ、または走行途中から歩行に移行することもできるようになる。【０１３３】
図１４を用いてその処理を説明すると、まず、Ｓ１３００において、本出願人が先に特開平１０−８６０８０号公報に提案した上体高さ決定法などを用いて、少なくとも各脚体２の関節の変位に関する所定の幾何学的制約条件を満足する上体鉛直位置軌道を求める。以降、これを基準上体鉛直位置軌道と呼ぶ。より具体的には、まず、要求パラメータに応じて決定した足平軌道パラメータや目標ＺＭＰ軌道パラメータなどを基に、本出願人が先に提案した特願２０００−３５２０１１号の第１実施形態を用いて、上体水平位置軌道が求められる。なお、この場合、上体水平位置軌道は、床反力鉛直成分がロボット１の自重に一致し、また、上体鉛直位置が、あらかじめ定めた一定値であるとして、目標ＺＭＰ回りの床反力モーメントの水平成分が０になるように決定される。また、このときの上体姿勢軌道は例えば一定姿勢（鉛直姿勢等）の軌道でよい。【０１３４】
次に、本願出願人が先に提案した上体高さ決定法（特開平１０−８６０８０号公報。より具体的には同公報の図６の手法等）を用いて、足平軌道パラメータにより定まる足平軌道や前記の如く決定した上体水平位置軌道、上体姿勢軌道を基に上体鉛直位置軌道が算出され、これをもって前記基準上体鉛直位置軌道とする。【０１３５】
次にＳ１３０２に進み、基準上体鉛直位置軌道になるべく似た目標上体鉛直位置軌道を生成することが可能な床反力鉛直成分軌道を決定するために、基準上体鉛直位置軌道の振幅や位相などの特徴量が算出（抽出）される。例えば、基準上体鉛直位置軌道の振幅（最小値と最大値との差）が特徴量として算出される。【０１３６】
次にＳ１３０４に進み、床反力鉛直成分軌道パラメータを基に生成される上体鉛直位置軌道が、前記特徴量をできる限り満足し得るように（前記基準上体鉛直位置軌道にできるだけ似たパターンになるように）、床反力鉛直成分軌道パラメータ（折れ点での時刻や床反力鉛直成分の値）が決定される。より具体的には、歩行歩容の場合、定常歩容の第１旋回歩容と第２旋回歩容、および今回歩容の床反力鉛直成分軌道は、例えば、図１３のような折れ線状に設定される。すなわち、両脚支持期では、床反力鉛直成分の増加側に凸（上に凸）の台形状に設定され、片脚支持期では床反力鉛直成分の減少側に凸（下に凸）の台形状に設定される。そして、この床反力鉛直成分軌道を歩容初期（両脚支持期の開始時刻）から終端（片脚支持期の終了時刻）まで２階積分して得られるロボット１の全体重心鉛直位置軌道に対応する上体鉛直位置軌道の最大値と最小値との差が前記特徴量に一致するように、床反力鉛直成分軌道パラメータ、例えば該床反力鉛直成分軌道の２つの台形の高さC1，C2が決定される（この例では床反力鉛直成分軌道の折れ点の時刻は歩容周期に関する要求パラメータに応じて決定される）。【０１３７】
但し、定常歩容の床反力鉛直成分軌道のパラメータは、前述のごとく以下の条件も満足するように決定される。
条件）床反力鉛直成分軌道の定常歩容全期間（第１旋回歩容と第２旋回歩容両方の期間）における平均値をロボットの自重と一致させる。すなわち、床反力鉛直成分の平均値がロボットに作用する重力と同じ大きさで反対向きになるようにする。【０１３８】
また、今回歩容の床反力鉛直成分軌道のパラメータは、前述のごとく、上体（全体重心）鉛直位置軌道が定常歩容に連続してつながるまたは近づくように決定される。【０１３９】
以上により、歩行歩容における目標床反力鉛直成分軌道（これを規定するパラメータ）が決定されることとなる。以上説明した目標床反力鉛直成分軌道の決定処理以外の歩容生成処理は、前記した走行歩容に係る実施形態と同一でよい。【０１４０】
前記のように、本願発明は、上部上体２４１のひねり運動および腕体８０の振り運動によって、下部上体２４１や脚体２等の運動によって生じたスピン力がキャンセルされることで、ロボット１が安定に動作する点に特徴があるが、この点について説明する（図８／Ｓ０３０，Ｓ０３１，Ｓ０３２参照）。【０１４１】
制御ユニット２６は、Ｓ０３０、Ｓ０３１、Ｓ０３２において決定された目標歩容の瞬時値にロボット１を追従させる。すなわち、制御ユニット２６は図１５（ａ）〜図１５（ｅ）に示されているように脚体２、腕体８０、上部上体２４１および下部上体２４２の動作を含むロボット１の動作を制御する。【０１４２】
具体的には左脚体（第１脚体）２Ｌが遊脚となってから支持脚となるまでの間に、図１５（ａ）、図１５（ｂ）、図１５（ｃ）、図１５（ｄ）、図１５（ｅ）の順で示されているように、左股関節（第１脚体の根元部分）１０Ｌが、右股関節（第２脚体の根元部分）１０Ｒの後方から前方に移動させられる。また、左肩関節（第１脚体側の第１腕体の根元部分）８２Ｌが、右肩関節（第２脚体側の第２腕体の根元部分）８２Ｒの前方から後方に移動させられる。さらに、左肘関節（第１腕体の根元部分よりも先端側にある所定部分）８６Ｌが、左肩関節（第１腕体の根元部分）８２Ｌの前方から後方に移動させられる。また、右肘関節（第２腕体の根元部分よりも先端側にある所定部分）８６Ｒが、右肩関節（第２腕体の根元部分）８２Ｒの後方から前方に移動させられる。さらに、左足関節（第１脚体の根元部分よりも先端側にある所定部分）１８Ｌが、左股関節（第１脚体の根元部分）１０Ｌの後方から前方に移動させられる。また、右足関節（第２脚体の根元部分よりも先端側にある所定部分）１８Ｒが、右股関節（第２脚体の根元部分）１０Ｒの前方から後方に移動させられる。【０１４３】
一方、右脚体（第１脚体）２Ｒが遊脚となってから支持脚となるまでの間に、図１５（ｅ）、図１５（ｄ）、図１５（ｃ）、図１５（ｂ）、図１５（ａ）の順で示されているように、右股関節（第１脚体の根元部分）１０Ｒが、左股関節（第２脚体の根元部分）１０Ｌの後方から前方に移動させられる。また、右肩関節（第１脚体側の第１腕体の根元部分）８２Ｒが、左肩関節（第２脚体側の第２腕体の根元部分）８２Ｌの前方から後方に移動させられる。さらに、右肘関節（第１腕体の根元部分よりも先端側にある所定部分）８６Ｒが、右肩関節（第１腕体の根元部分）８２Ｒの前方から後方に移動させられる。また、左肘関節（第２腕体の根元部分よりも先端側にある所定部分）８６Ｌが、左肩関節（第２腕体の根元部分）８２Ｌの後方から前方に移動させられる。さらに、右足関節（第１脚体の根元部分よりも先端側にある所定部分）１８Ｒが、右股関節（第１脚体の根元部分）１０Ｒの後方から前方に移動させられる。また、左足関節（第２脚体の根元部分よりも先端側にある所定部分）１８Ｌが、左股関節（第２脚体の根元部分）１０Ｌの前方から後方に移動させられる。【０１４４】
これにより、ロボット１の走行に伴い、図１６に示されているように左右の股関節１０Ｌ，１０Ｒのうち一方の股関節を基準位置とする他方の股関節の前後方向の相対位置ｘ（１０）（実線）、左右の足関節１８Ｌ，１８Ｒのうち一方の足関節を基準位置とする他方の足関節の前後方向の相対位置ｘ（１８）（破線）、左右の肩関節８２Ｌ，８２Ｒのうち一方の肩関節を基準位置とする他方の肩関節の前後方向の相対位置ｘ（８２）（実線）および左右の肘関節８６Ｌ，８６Ｒのうち一方の肘関節を基準位置とする他方の肘関節の前後方向の相対位置ｘ（８６）（破線）のそれぞれが周期的に変化する。【０１４５】
さらに、第１脚体が遊脚となってから支持脚となるまでの間の、ロボット１の移動速度の目標値若しくは測定値、または歩幅の目標値若しくは測定値が大きいほど「第１比率」が大きくなるようにロボット１の動作が制御される。「第１比率」は、第２腕体の肩関節を基準とする第１腕体の肩関節の後方移動量に対する、第１腕体の肩関節を基準とする肘関節の後方移動量と、第２腕体の肩関節を基準とする肘関節の前方移動量の和の比率である。【０１４６】
また、第１脚体が遊脚となってから支持脚となるまでの間の、ロボット１の移動速度の目標値若しくは測定値、または歩幅の目標値若しくは測定値が大きいほど「第２比率」が大きくなるようにロボット１の動作が制御される。「第２比率」は、第２脚体の股関節を基準とする第１脚体の股関節の前方移動量に対する、第１脚体の股関節を基準とする足関節の前方移動量と、第２脚体の股関節を基準とする足関節の後方移動量との和の比率である。【０１４７】
さらに、第１脚体の着地時点と、第１脚体の股関節と第２脚体の股関節との前後間隔（＝｜ｘ（１０）｜）が最大値となる時点（例えば、図１６における時刻ｔ２）と、第１腕体の肩関節と第２腕体の肩関節との前後間隔（＝｜ｘ（８２）｜）が最大値となる時点（例えば、図１６における時刻ｔ１）とが近づくように、ロボット１の動作が制御される。【０１４８】
また、第１腕体の肩関節と第２腕体の肩関節との前後間隔（＝｜ｘ（８２）｜）が最大値となる時点（例えば、図１６における時刻ｔ１）と、第１腕体の肘関節と第２腕体の肘関節との前後間隔（＝｜ｘ（８６）｜）が最大値となる時点（例えば、図１６における時刻ｔ１’）とが第１時間間隔Ｔ１に近づくように、ロボット１の動作が制御される。【０１４９】
さらに、第１脚体の股関節と第２脚体の股関節との前後間隔（＝｜ｘ（１０）｜）が最大値となる時点（例えば、図１６における時刻ｔ２）と、第１脚体の足関節と第２脚体の足関節との前後間隔（＝｜ｘ（１８）｜）が最大値となる時点（例えば、図１６における時刻ｔ２’）とが第２時間間隔Ｔ２に近づくように、ロボット１の動作が制御される。【０１５０】
また、ロボット１の移動速度の目標値若しくは測定値、または歩幅の目標値若しくは測定値が大きくなるほど、左右の腕体８０のそれぞれの肩関節（根元部分）８２から手根関節８８または手部８９（先端部分）までの距離が短縮されるように左右の腕体８０が肘関節８６において屈曲させられる。【０１５１】
このような制御により、走行中のロボット１を推進方向前方および右側からみると図１７（ａ）〜図１７（ｈ）および図１８（ａ）〜図１８（ｈ）に示されているようにその様子が変化する。【０１５２】
図１７（ａ）および図１８（ａ）に示されているようにロボット１が起立しているとき、両股関節１０Ｌ，１０Ｒの前後位置は同一であり、また、両肩関節８２Ｌ，８２Ｒの前後位置も同一である（図１５（ｃ）参照）。【０１５３】
ロボット１の走行開始に伴い、図１７（ｂ）および図１８（ｂ）に示されているように左脚体２Ｌが離床して前方に振り出され、図１７（ｃ）および図１８（ｃ）に示されているように左脚体２Ｌに加えて右脚体２Ｒも離床し、さらに図１７（ｄ）および図１８（ｄ）に示されているように左脚体２Ｌが着床する。このように第１脚体としての左脚体２Ｌが遊脚となってから支持脚となるまでの間に、左股関節（第１脚体の根元部分）１０Ｌが、右股関節（第２脚体の根元部分）１０Ｒに対して後方から前方に移動させられる。また、左足関節（第１脚体の根元部分よりも先端側にある所定部分）１８Ｌが、左股関節（第１脚体の根元部分）１０Ｌの後方から前方に移動させられる。さらに、右足関節（第２脚体の根元部分よりも先端側にある所定部分）１８Ｒが、右股関節（第２脚体の根元部分）１０Ｒの前方から後方に移動させられる（図１５（ｄ）（ｅ）参照）。【０１５４】
また、左肩関節（第１脚体側の第１腕体の根元部分）８２Ｌが、右肩関節（第２脚体側の第２腕体の根元部分）８２Ｒの前方から後方に移動させられる。さらに、左肘関節（第１腕体の根元部分よりも先端側にある所定部分）８６Ｌが、左肩関節（第１腕体の根元部分）８２Ｌの前方から後方に移動させられる。また、右肘関節（第２腕体の根元部分よりも先端側にある所定部分）８６Ｒが、右肩関節（第２腕体の根元部分）８２Ｒの後方から前方に移動させられる（図１５（ｄ）（ｅ）参照）。これにより、ロボット１の上方から見て、下部上体２４２が時計回りにひねり運動するとともに、左脚体（第１脚体）２Ｌおよび右脚体（第２脚体）２Ｒが下部上体２４２の回動に追従するようにそれぞれ前方および後方に振り運動する。一方、上部上体２４１が反時計回りにひねり運動するとともに、肘関節８６において屈曲した右腕体８０Ｒおよび左腕体８０Ｌがそれぞれ上部上体２４１のひねり運動に追従するように前方および後方に振り運動する。【０１５５】
その後のロボット１の走行に伴い、図１７（ｅ）および図１８（ｅ）に示されている状態を経て、図１７（ｆ）および図１８（ｆ）に示されているように離床している右脚体２Ｒが前方に振り出され、図１７（ｇ）および図１８（ｇ）に示されているように右脚体２Ｒに加えて左脚体２Ｌも離床し、さらに図１７（ｈ）および図１８（ｈ）に示されているように右脚体２Ｒが着床する。このように第１脚体としての右脚体２Ｒが遊脚となってから支持脚となるまでの間に、右股関節（第１脚体の根元部分）１０Ｒが、左股関節（第２脚体の根元部分）１０Ｌに対して後方から前方に移動させられる。また、右足関節（第１脚体の根元部分よりも先端側にある所定部分）１８Ｒが、右股関節（第１脚体の根元部分）１０Ｒの後方から前方に移動させられる。さらに、左足関節（第２脚体の根元部分よりも先端側にある所定部分）１８Ｌが、左股関節（第２脚体の根元部分）１０Ｌの前方から後方に移動させられる（図１５（ａ）（ｂ）参照）。【０１５６】
また、右肩関節（第１脚体側の第１腕体の根元部分）８２Ｒが、左肩関節（第２脚体側の第２腕体の根元部分）８２Ｌの前方から後方に移動させられる。さらに、右肘関節（第１腕体の根元部分よりも先端側にある所定部分）８６Ｒが、右肩関節（第１腕体の根元部分）８２Ｒの前方から後方に移動させられる。また、左肘関節（第２腕体の根元部分よりも先端側にある所定部分）８６Ｌが、左肩関節（第２腕体の根元部分）８２Ｌの後方から前方に移動させられる（図１５（ａ）（ｂ）参照）。これにより、ロボット１の上方から見て、下部上体２４２が反時計回りにひねり運動するとともに、右脚体（第１脚体）２Ｒおよび左脚体（第２脚体）２Ｌが下部上体２４２のひねり運動に追従するようにそれぞれ前方および後方に振り運動する。一方、上部上体２４１が時計回りにひねり運動するとともに、肘関節８６において屈曲した右腕体８０Ｒおよび左腕体８０Ｌがそれぞれ上部上体２４１のひねり運動に追従するように後方および前方に振り運動する。【０１５７】
前記例では図１７（ｃ）、図１８（ｃ）、図１７（ｇ）および図１８（ｇ）に示されているように左右の脚体２が離床している空中期を含む走行動作の様子について説明したが、空中期を含まない歩行動作についても、ロボット１の動作は同様に制御される。【０１５８】
本発明のロボット１によれば、第１脚体の股関節と第２脚体の股関節との前後間隔｜Ｘ（１０）｜が最大値となる時点ｔ２と、第１脚体の足関節と第２脚体の足関節との前後間隔｜Ｘ（１８）｜が最大値となる時点ｔ２’との時間間隔が、第２時間間隔（０近傍の微小値に設定され得る。）Ｔ２に近づくように、ロボット１の動作が制御される（図１６参照）。また、ロボット１の移動速度の目標値若しくは測定値、または歩幅の目標値若しくは測定値が大きいほど、第２比率が大きくなるようにロボット１の動作が制御される。これにより、右股関節１０Ｒが左股関節１０Ｌの後方から前方に移動するように下部上体２４２がひねり運動するとき、このひねり運動に追従するように右脚体２Ｌが前方に振り運動する（図１５（ａ）（ｂ）参照）。同様に、左股関節１０Ｌが右股関節１０Ｒの後方から前方に移動するように下部上体２４２がひねり運動するとき、このひねり運動に追従するように左脚体２Ｌが前方に振り運動する（図１５（ｄ）（ｅ）参照）。脚体の振り出し量は、ロボット１の移動速度の目標値若しくは測定値、または歩幅の目標値若しくは測定値が大きくなるほど大きくなる。従って、ロボット１の移動速度の目標値若しくは測定値、または歩幅の目標値若しくは測定値が大きくなるほどこのロボット１の歩幅を大きくして、ロボット１の動作を高速歩行または走行に適したものとすることができる。
【０１５９】
また、第１脚体が遊脚となってから支持脚となるまでの期間に、第１脚体の股関節が第２脚体の股関節の後方から前方に移動し、且つ、第１腕体の肩関節が第２腕体の肩関節の前方から後方に移動するようにロボット１の動作が制御される。これにより、当該期間において、上部上体２４１と下部上体２４２とのひねり運動方向が反対になる。【０１６０】
さらに、第１腕体の肩関節が第２腕体の肩関節の前方から後方に移動し、第１腕体の肘関節が肩関節の前方から後方に移動し、且つ、第２腕体の肘関節が肩関節の後方から前方に移動させるようにロボット１の動作が制御される。また、第１腕体の肩関節と第２腕体の肩関節との前後間隔｜ｘ（８２）｜が最大値となる時点ｔ１と、第１腕体の肘関節と第２腕体の肘関節との前後間隔｜ｘ（８６）｜が最大値となる時点ｔ１’との時間間隔が、第１時間間隔Ｔ１（０近傍の微小値に設定され得る。）に近づくように、ロボット１の動作が制御される。これにより、左肩関節８２Ｌが右肩関節８２Ｒの後方から前方に移動するように上部上体２４１がひねり運動するとき、このひねり運動に追従するように左腕体８０Ｌが前方に振り運動し、且つ、右腕体８０Ｒが後方に振り運動する（図１５（ａ）（ｂ）参照）。同様に、右肩関節８２Ｒが左肩関節８２Ｌの後方から前方に移動するように上部上体２４１がひねり運動するとき、このひねり運動に追従するように右腕体８０Ｒが前方に振り運動し、且つ、左腕体８０Ｌが後方に振り運動する（図１５（ｄ）（ｅ）参照）。従って、上部上体２４１のひねり運動方向と同方向にモーメントを生じさせるように左右の腕体８０Ｌ，８０Ｒが振り運動する。
【０１６１】
従って、第１脚体が遊脚となってから支持脚となるまでの期間に下部上体２４２のひねり運動および脚体２の振り運動により生じたモーメントの一部が、下部上体２４２に対する上部上体２４１のひねり運動および腕体８０の振り運動により生じるモーメントによりキャンセルされ、第１脚体が支持脚となった後でもロボット１のスピンが確実に防止され得る。そして、前記のようにロボット１が高速で歩行または走行するときでも、ロボット１の動作を安定に維持することができる。【０１６２】
また、第１脚体が遊脚となってから支持脚となるまでの期間のロボット１の移動速度の目標値若しくは測定値、または歩幅の目標値若しくは測定値が大きいほど、当該期間において第１比率が大きくなるようにロボット１の動作が制御される（図１５（ａ）（ｂ）（ｄ）（ｅ）参照）。これにより、上部上体２４１の左右への振れを抑えながら、ロボット１の高速歩行または走行動作に伴う下部上体２４２のひねり運動および脚体２の振り運動により生じたモーメントを、下部上体２４２に対する上部上体２４１のひねり運動および腕体８０の振り運動により生じるモーメントによって確実に打ち消すことができる。【０１６３】
さらに、ロボット１の移動速度の目標値若しくは測定値、または歩幅の目標値若しくは測定値が大きくなるほど、左右の腕体８０がそれぞれ肩関節８２から手根関節８８または手部８９までの距離が短縮されるように肘関節８６において屈曲させられる。これにより、左右の腕体８０の動作速度の増大に伴う腕体８０の根元部分の負担が軽減され、腕体８０の駆動系の安定性が確保され、ロボット１の動作が安定に制御され得る。【０１６４】
また、第１腕体の肩関節と第２腕体の肩関節との前後間隔｜ｘ（８２）｜が最大値となる時点ｔ１と、第１腕体の肘関節と第２腕体の肘関節との前後間隔｜ｘ（８６）｜が最大値となる時点ｔ１’との時間間隔が、第１時間間隔Ｔ１に近づくように、ロボット１の動作が制御される。このため、ロボット１の移動速度や歩幅等の移動形態に応じて第１時間間隔Ｔ１が設定されることで、ロボット１の上部上体２４１および腕体８０の動きを人間の上半身の動きに近づける等の観点から、ロボット１の動作が適切に制御され得る。
【０１６５】
さらに、第１脚体の股関節と第２脚体の股関節との前後間隔｜Ｘ（１０）｜が最大値となる時点ｔ２と、第１脚体の足関節と第２脚体の足関節との前後間隔δＸ（１８）が最大値となる時点ｔ２’との時間間隔が、第２時間間隔Ｔ２に近づくように、ロボット１の動作が制御される。このため、ロボット１の移動速度や歩幅等の移動形態に応じて第２時間間隔Ｔ２が設定されることで、ロボット１の下部上体２４２および脚体２の動きを人間の下半身の動きに近づける等の観点から、ロボット１の動作が適切に制御され得る。
【０１６６】
また、本発明のロボット１は、第１脚体の着地時点と、第１脚体の股関節と第２脚体の股関節との前後間隔｜ｘ（１０）｜が最大値となる時点ｔ２と、第１腕体の肩関節と第２腕体の肩関節との前後間隔｜ｘ（８２）｜が最大値となる時点ｔ１とが近づくように、ロボット１の動作が制御される（図１６参照）。これにより、第１脚体が着地したときに下部上体２４２の回動方向、および上部上体２４１の回動方向が変更されるようにロボット１の動作が制御される。従って、脚体２の着地時に下部上体２４２または上部上体２４１等のひねり運動によってモーメントが発生すること、ひいてはロボット１の着地時に生じ得るスピン力をさらに確実にキャンセルすることができる。【０１６７】
なお、ロボット１が前進する場合のみならず、後退する場合や、横移動する場合も、前進の場合と同様の手法によりスピンが打ち消されうる。
【図１】
0005123527.tif 000002
【図２】
0005123527.tif 000003
【図３】
0005123527.tif 000004
【図４】
0005123527.tif 000005
【図５】
0005123527.tif 000006
【図６】
0005123527.tif 000007
【図７】
0005123527.tif 000008
【図８】
0005123527.tif 000009
【図９】
0005123527.tif 000010
【図１０】
0005123527.tif 000011
【図１１】
0005123527.tif 000012
【図１２】
0005123527.tif 000013
【図１３】
0005123527.tif 000014
【図１４】
0005123527.tif 000015
【図１５】
0005123527.tif 000016
【図１６】
0005123527.tif 000017
【図１７】
0005123527.tif 000018
【図１８】
0005123527.tif 000019