(57)【要約】      （修正有）【課題】少ない計算量で高速に、歩行ロボットのＺＭＰゼロモーメント・ポイントを計算して歩容データを計算する歩容データ作成装置を提供する。【解決手段】両足平位置と姿勢と体幹姿勢を示すデータを入力して記憶する手段２９２と、その位置と姿勢を実現する一つの体幹位置を示すデータを生成する手段２９４と、記憶した前記データと生成した前記データとから両膝位置を示すデータを計算する手段２９６を備えている。さらに両膝位置と両足平位置に質量が集中して存在する力学系と、両足平位置と姿勢と体幹位置と姿勢を示すデータから歩行ロボットのＺＭＰ位置を示すデータを計算する手段２９８を備えている。さらにＺＭＰ位置の偏差を解消する側に体幹位置を示すデータを補正する手段３１０を備えており、その補正手段３１０は、体幹位置を示すデータを補正すると両膝位置が変化してＺＭＰ位置が変化する関係を利用して、体幹位置を示すデータを補正する。【選択図】  図２９
2004237403.tif 000002
【特許請求の範囲】
【請求項１】
歩行ロボットの、左足平位置と右足平位置と体幹姿勢を示すデータを入力して記憶する手段と、
前記の位置と姿勢を実現する一つの体幹位置を示すデータを入力または生成して記憶する手段と、
前記データ群から、左膝位置と右膝位置を示すデータを計算する手段と、
左膝位置と右膝位置と左足平近傍位置と右足平近傍位置に質量が集中して存在する力学系と、前記した左足平位置と右足平位置と体幹位置と体幹姿勢と左膝位置と右膝位置を示すデータから、歩行ロボットのＺＭＰ位置を示すデータを計算する手段と、
目標ＺＭＰ位置を示すデータを入力して記憶する手段と、
計算されたＺＭＰ位置と目標ＺＭＰ位置の偏差を解消する側に体幹位置を示すデータを補正する手段を備え、
前記補正手段が、体幹位置を示すデータを補正すると左膝位置と右膝位置が変化して「計算されるＺＭＰ位置」が変化する関係を利用して、体幹位置を示すデータを補正することを特徴とする歩行ロボットの制御用データの作成装置。
【請求項２】
前記ＺＭＰ位置データ計算手段で利用する力学系が、左膝位置と右膝位置と左足平近傍位置と右足平近傍位置と体幹下部基準点と体幹上部基準点に質量が集中して存在する力学系であることを特徴とする請求項１の制御用データ作成装置。
【請求項３】
前記力学系が、左足平近傍位置に左脛下半分質量と左足首質量と左足平質量の合計質量が集中して存在し、右足平近傍位置に右脛下半分質量と右足首質量と右足平質量の合計質量が集中して存在し、左膝位置に左脛上半分質量と左膝関節質量と左腿下半分質量の合計質量が集中して存在し、右膝位置に右脛上半分質量と右膝関節質量と右腿下半分質量の合計質量が集中して存在し、体幹下部基準点に左腿上半分質量と左股関節質量と右腿上半分質量と右股関節質量と体幹下半分質量の合計質量が集中して存在し、体幹上部基準点に体幹上半分質量が集中して存在する力学系であることを特徴とする請求項２の制御用データ作成装置。
【請求項４】
体幹下部基準点と体幹上部基準点の高さが、水平軸回りの体幹の慣性モーメントの大きさを維持する高さに設定されていることを特徴とする請求項３の制御用データ作成装置。
【請求項５】
歩行ロボットをモデル化した「左膝位置と右膝位置と左足平近傍位置と右足平近傍位置に質量が集中して存在する力学系」を用いて歩行ロボットのＺＭＰ位置を示すデータを計算する方法。
【請求項６】
歩行ロボットをモデル化した「体幹上部基準点と体幹下部基準点と左膝位置と右膝位置と左足平近傍位置と右足平近傍位置に質量が集中して存在する力学系」を用いて歩行ロボットのＺＭＰ位置を示すデータを計算する方法。
【請求項７】
歩行ロボットをモデル化した「体幹上部基準点と体幹下部基準点と左膝位置と右膝位置と左足平近傍位置と右足平近傍位置に質量が集中して存在する力学系」と、左足平位置と右足平位置と左膝位置と右膝位置と体幹位置と体幹姿勢を示すデータとから、歩行ロボットのＺＭＰ位置を示すデータを計算する方法。
【請求項８】
歩行ロボットをモデル化した「体幹基準点と膝位置と足平近傍位置に質量が集中して存在する力学系」と、体幹位置と膝位置と足平位置の経時的変化を示すデータとから、歩行ロボットのＺＭＰ位置を示すデータを計算する方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】本発明は、脚を利用して歩行するロボットが、脚を利用して歩行するのに必要とする制御用データを作成する装置に関する。本発明は、制御用データの作成過程で用いるＺＭＰ位置の計算方法にも関する。
【０００２】
【従来の技術】２足で歩行するロボットは、ＩＥＥＥ  Ｈｕｍａｎｏｉｄｓ  ２０００，  Ｔｈｅ  ＦｉｒｓｔＩＥＥＥ−ＲＡＳ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｈｕｍａｎｏｉｄ  Ｒｏｂｏｔｓ，  Ｓｅｐｔｅｍｂｅｒ  ７−８，  ２０００  ｐａｇｅ  １  ｔｏ  １２，  Ａ  Ｆａｓｔ  Ｇｅｎｅｒａｔｉｏｎ  Ｍｅｔｈｏｄ  ｏｆ  ａ  Ｄｙｎａｍｉｃａｌｌｙ  Ｓｔａｂｌｅ  Ｈｕｍａｎｏｉｄ  Ｒｏｂｏｔ  Ｔｒａｊｅｃｔｏｒｙ  ｗｉｔｈ  Ｅｎｈａｎｃｅｄ  ＺＭＰ  Ｃｏｎｓｔｒａｉｎｔ，  Ｓａｔｏｓｈｉ  Ｋａｇａｍｉ  ｅｔ．  ａｌ．に記載されているように、どのルートをどのように足を運んで歩行するかを指定するデータを必要とする。通常は、図３１に示すように、歩行ルートと足の運びを指示する人間が、左足平位置ベクトルＣ、左足平姿勢ベクトルＤ、右足平位置ベクトルＥ、右足平姿勢ベクトルＦを指定する。この他に、歩行ルート等を指示する人間が、ロボットの体幹姿勢ベクトルＲと体幹高さＱを指定する。ロボットが時間とともに位置と姿勢を変化させることに対応して、上記のベクトル等を時系列に従って次々に指定する。（ｔ）は、時系列に従って変化することを示している。
左足平位置ベクトルＣは、座標原点Ｏから見たロボットの左足平位置を示す。左足平姿勢ベクトルＤは、左足平の向きを示す。右足平位置ベクトルＥは、座標原点Ｏから見たロボットの右足平位置を示す。右足平姿勢ベクトルＦは、右足平の向きを示す。体幹姿勢ベクトルＲは、ロボットの体幹の向きを示し、人間の背骨に相当する部材が伸びる方向を示す。
【０００３】
２足で歩行するロボットの場合、ＺＭＰ（ゼロモーメントポイント：動的平衡点ともいう：ロボットが歩行するとロボットから路面に重力と歩行運動に伴って生じる慣性力が作用し、ロボットには路面からその反力が作用する。路面からロボットに作用する力によるモーメントがゼロになる点をＺＭＰという）を足平の接地面内に維持することによって、転倒を防止できる。
そこで、歩行時の足平の接地面位置の時間的変化を考察し、時間的に変化する接地面位置に追従して変化する目標ＺＭＰを設定する。歩行時に観測される実際ＺＭＰが目標ＺＭＰに一致するように制御することによって、ロボットが転倒しないで歩行することが可能となる。
【０００４】
図１は、目標ＺＭＰの指定方法を示している。この場合、ロボットはＸ方向に歩行する。歩行方向に直交する方向をＹ方向とする。ロボットは、両足接地期間と片足接地期間を交互に繰り返して歩行する。片足接地期間内の目標ＺＭＰは、接地足の接地面内になければならない。さもなければ、実際ＺＭＰを目標ＺＭＰに一致させてもロボットは転倒してしまう。両足接地期間内の目標ＺＭＰは、２つの接地面を結ぶ領域にあればよい。Ｙ方向の現象を考察すると明らかに、両足が接地している期間内に、目標ＺＭＰは左足接地面内から右足接地面内に移動しなければならない（傾斜線Ｃ２参照）。あるいは、右足接地面内から左足接地面内に移動しなければならない（傾斜線Ｃ４参照）。水平線Ｃ１は、左足のみが接地している場合の目標ＺＭＰを示し、目標ＺＭＰは左足接地面内に維持されている。水平線Ｃ３は、右足のみが接地している場合の目標ＺＭＰを示し、目標ＺＭＰは右足接地面内に維持されている。
Ｘ方向の目標ＺＭＰもほぼ同様の条件を満たす必要がある。水平線Ｃ６は、左足のみが接地している場合のＸ方向の目標ＺＭＰを示し、Ｘ方向の目標ＺＭＰは左足接地面内に維持されている。水平線Ｃ８は、右足のみが接地している場合のＸ方向の目標ＺＭＰを示し、Ｘ方向の目標ＺＭＰは右足接地面内に維持されている。両足が接地している期間内に、Ｘ方向の目標ＺＭＰは左足接地面内から右足接地面内に移動し（傾斜線Ｃ７参照）、あるいは、右足接地面内から左足接地面内に移動しなければならない（傾斜線Ｃ９参照）。水平線Ｃ１０は、再び左足のみが接地している場合のＸ方向の目標ＺＭＰを示し、Ｘ方向の目標ＺＭＰは左足接地面内に維持されている。この場合、ロボットが歩行してＸ方向に移動するために、水平線Ｃ６のＸ座標と水平線Ｃ１０のＸ座標は、歩幅分変化している。
目標ＺＭＰ軌道を指定する技術が特許文献１，２に記載されている。
【０００５】
【特許文献１】
特開平５−３０５５８１号公報
【特許文献２】
特開２００１−２７７１５８号公報
【０００６】
図１に示した目標ＺＭＰを設定しておき、歩行時に観測される実際ＺＭＰが目標ＺＭＰに一致するように制御することによって、ロボットは転倒しないで歩行することが可能となる。
【０００７】
図３１を参照して説明したように、ロボットの歩行ルート等を定める人間が、左足平位置ベクトルＣ、左足平姿勢ベクトルＤ、右足平位置ベクトルＥ、右足平姿勢ベクトルＦ、ロボットの体幹姿勢ベクトルＲと体幹高さＱを指定するが、それだけではロボットの位置と姿勢は決定されない。この他に、体幹位置を指定するベクトルＰが決定されないとロボットの位置と姿勢は決定されない。
体幹位置を指定するベクトルＰを指定すると、ロボットの位置と姿勢が決定される。ロボットの位置と姿勢が決定されると、ＺＭＰの位置が決定される。
【０００８】
ロボットの歩行ルート等を定める人間が、左足平位置ベクトルＣ、左足平姿勢ベクトルＤ、右足平位置ベクトルＥ、右足平姿勢ベクトルＦ、体幹高さＱ、体幹姿勢ベクトルＲを指定すると、そのデータは歩容データ作成装置３６０（図３１）に入力されて記憶される。
左足平位置ベクトルＣ、左足平姿勢ベクトルＤ、右足平位置ベクトルＥ、右足平姿勢ベクトルＦ、体幹高さＱ、体幹姿勢ベクトルＲが指定されても、ロボットの位置と姿勢は決定されない。指定された「左足平位置ベクトルＣ、左足平姿勢ベクトルＤ、右足平位置ベクトルＥ、右足平姿勢ベクトルＦ、体幹高さＱ、体幹姿勢ベクトルＲ」を実現する体幹位置ベクトルＰは、一意には決定されないで、複数が存在するからである。
歩容データ作成装置３６０では、与えられた「左足平位置ベクトルＣ、左足平姿勢ベクトルＤ、右足平位置ベクトルＥ、右足平姿勢ベクトルＦ、体幹高さＱ、体幹姿勢ベクトルＲ」を実現する体幹位置ベクトルＰの一つを仮定する（３６２）。これによって、ロボットの位置と姿勢が決定され、各関節の関節角を計算することが可能となる。
図３２は、通常の２足歩行ロボットのスケルトンを示し、図中のθ１〜θ１２に示す１２関節と１３リンクを備えている。歩容データ作成装置３６０は、与えられた「左足平位置ベクトルＣ（ｔ）、左足平姿勢ベクトルＤ（ｔ）、右足平位置ベクトルＥ（ｔ）、右足平姿勢ベクトルＦ（ｔ）、体幹姿勢ベクトルＲ（ｔ）」と、仮定された体幹位置ベクトルＰ（ｔ）から、各関節の関節角θ１（ｔ）〜θ１２（ｔ）を計算する（図３１の３６４参照）。逆キネマ解析することによって、関節角θ１（ｔ）〜θ１２（ｔ）を計算することができる。
各関節の関節角の時間的変化θ１（ｔ）〜θ１２（ｔ）が計算されると、図３２の１３リンクを持つ力学系の運動状態が判明する。即ち、各リンクの重心位置の移動速度と加速度が判明し、路面からロボットに作用する力によるモーメントがゼロになる点の位置を計算することができる（図３１の３６６参照）。
そうして計算されたＺＭＰ位置が目標ＺＭＰ位置に一致していれば、手段３６２で仮定した体幹位置ベクトルＰを用いてロボットを制御すればよいことがわかる。しかしながら通常は一致せず、手段３６２で仮定した体幹位置ベクトルＰを用いてロボットを制御すると、実際のＺＭＰが目標ＺＭＰからずれてしまうことがわかる。そこで、実際のＺＭＰと目標ＺＭＰの偏差を計算し（３６８）、その偏差に応じて体幹位置ベクトルＰを補正する（３７０）。人間が、体幹位置ベクトルＰを調節することによってバランスをとりながら歩行するのに対応する補正を実施する。
【０００９】
体幹位置ベクトルＰが補正されると、与えられた「左足平位置ベクトルＣ、左足平姿勢ベクトルＤ、右足平位置ベクトルＥ、右足平姿勢ベクトルＦ、体幹姿勢ベクトルＲ」と、補正された体幹位置ベクトルＰから、各関節の関節角を再計算することが可能となり（３７２）、実際に得られるであろうＺＭＰ位置を再計算することが可能となる（３７４）。
ＺＭＰ偏差から体幹位置ベクトルＰを補正する場合、図３２に示す１２関節、１３リンクの複雑な力学系の場合、ＺＭＰ偏差を解消する体幹位置ベクトルＰの補正量を代数的に解くことができない。そこで、ＺＭＰ偏差を小さくするであろう側に体幹位置ベクトルＰを補正し、それに基づいてＺＭＰ位置を再計算する。ＺＭＰ偏差の再計算と、体幹位置ベクトルＰの補正を繰返して計算するうちに、ＺＭＰ偏差を解消する体幹位置ベクトルＰに収束していく。
ＺＭＰ偏差の計算と体幹位置ベクトルＰの補正計算を繰返し、ＺＭＰ偏差が許容範囲内に収まる体幹位置ベクトルＰが計算されると、２足で歩行するロボットが２足で歩行するために必要とする制御用データ（歩容データ）が完成する（３８０）。即ち、与えられた「左足平位置ベクトルＣ（ｔ）、左足平姿勢ベクトルＤ（ｔ）、右足平位置ベクトルＥ（ｔ）、右足平姿勢ベクトルＦ（ｔ）、体幹姿勢ベクトルＲ（ｔ）」と、計算で求められた体幹位置ベクトルＰ（ｔ）を用いてロボットが歩行すると、実際に得られるであろうＺＭＰ位置（ｔ）が目標ＺＭＰ位置（ｔ）に一致する関係が得られる矛盾のない制御用データが完成する。
なお計算時間を所定時間に収めるために、収束計算の繰返し回数を制約することが多い（３７８）。
【００１０】
【発明が解決しようとする課題】従来の技術では、与えられた「左足平位置ベクトルＣ（ｔ）、左足平姿勢ベクトルＤ（ｔ）、右足平位置ベクトルＥ（ｔ）、右足平姿勢ベクトルＦ（ｔ）、体幹姿勢ベクトルＲ（ｔ）」から、与えられた目標ＺＭＰ位置ベクトル（ｔ）をもたらす体幹位置ベクトルＰ（ｔ）を計算するにあたって、図３２に示した「１２関節１３リンク」の複雑な力学系に依拠しており、ＺＭＰ偏差から体幹位置ベクトルＰの補正量を代数的に計算することができない。このために、体幹位置ベクトルＰを補正してからＺＭＰ偏差を計算する処理を多数回繰返すことによって、与えられた目標ＺＭＰ位置ベクトル（ｔ）をもたらす体幹位置ベクトルＰ（ｔ）を計算する手法をとっており、その計算に長時間を要する。
その計算が単時間で終了すれば、例えばジョイスティック等で人が「左足平位置ベクトルＣ、左足平姿勢ベクトルＤ、右足平位置ベクトルＥ、右足平姿勢ベクトルＦ、体幹姿勢ベクトルＲ、目標ＺＭＰ位置ベクトル」を逐次に指定するのに追従して目標ＺＭＰ位置をもたらす体幹位置ベクトルＰを計算することができ、人のジョイスティック操作等に追従してロボットが歩行ルートや歩行姿勢や歩行速度を変えることができる。即ち、リアルタイムで目標ＺＭＰ位置をもたらす体幹位置ベクトルＰ（ｔ）を計算することができれば、リアルタイムで歩行ロボットに制御用データを指示できる。
しかながら現状では、収束計算を多数回繰返すことによって目標ＺＭＰ位置ベクトルをもたらす体幹位置ベクトルＰを計算する手法をとっており、その計算に長時間を要する。リアルタイムで処理することができず、予めオフラインで目標ＺＭＰ位置ベクトルをもたらす体幹位置ベクトルＰ（ｔ）を計算しておかなければならない。
【００１１】
本発明は、目標ＺＭＰ位置ベクトルをもたらす体幹位置ベクトルＰを短時間で計算する技術を実現することを目的とする。
好ましくは、ロボットの動作に追従して、即ち、リアルタイムで体幹位置ベクトルＰを計算する技術を実現することを一つの目的とする。但し、目標ＺＭＰ位置ベクトル（ｔ）をもたらす体幹位置ベクトルＰ（ｔ）を計算するために必要な計算量が減少して計算時間が短縮化されればそれ自体で有意義であり、リアルタイムで処理できるほどには高速化されなくても、本発明の利益を享受することができる。
従来の技術では、ＺＭＰ偏差からＺＭＰ偏差を解消する体幹位置ベクトルＰの補正量を計算することができない。そこで、計算を多数回繰返す計算方法をとっていた。本発明の一つの目的は、ＺＭＰ偏差からＺＭＰ偏差を解消する体幹位置ベクトルＰの補正量を計算することができる技術を創作し、繰返し計算を不用とする。
従来の技術では、「左足平位置ベクトルＣ、右足平位置ベクトルＥ、体幹位置ベクトルＰ、体幹姿勢ベクトルＲ」からＺＭＰ位置を計算するにあたって、図３２に示した「１２関節１３リンクの力学系」を用い、関節角を解いてからＺＭＰ位置を計算していた。この計算量が多いことから、体幹位置ベクトルＰ（ｔ）を計算するのに時間を要していた。
本発明の他の一つの目的は、「左足平位置ベクトルＣ、右足平位置ベクトルＥ、体幹位置ベクトルＰ、体幹姿勢ベクトルＲ」から、ＺＭＰ位置を計算するにあたって、その計算量を少なくして短時間で計算できる方法を実現する。
短時間でＺＭＰ位置を計算できるようになると、繰り返しの補正処理が不要化されるために短時間化されることとあいまって、極めて高速化できる。
【００１２】
【課題を解決するための手段と作用】本発明では、歩行ロボットが歩行に用いる制御用データの作成装置を創作した。創作された制御用データ作成装置２９０は、図２９に示すように、人が指定する「左足平位置と右足平位置と体幹姿勢」を示すデータを入力して記憶する手段２９２と、前記の位置と姿勢を実現する一つの体幹位置を示すデータを入力または生成して記憶する手段２９４と、前記のデータ群から左膝位置と右膝位置を示すデータを計算する手段２９６を備えている。さらに左膝位置と右膝位置と左足平近傍位置と右足平近傍位置に質量が集中して存在する力学系と、前記した左足平位置と右足平位置と体幹位置と体幹姿勢と左膝位置と右膝位置を示すデータから、歩行ロボットのＺＭＰ位置を示すデータを計算する手段２９８を備えている。この他に目標ＺＭＰ位置を示すデータを入力して記憶する手段２９２を備えており、計算されたＺＭＰ位置と目標ＺＭＰ位置の偏差を計算することができる（３００）。創作された制御用データ作成装置２９０は、ＺＭＰ位置の偏差を解消する側に体幹位置を示すデータを補正する手段３１０を備えており、その補正手段３１０は、体幹位置を示すデータを補正すると左膝位置と右膝位置が変化して「計算されるＺＭＰ位置」が変化する関係を利用して、体幹位置を示すデータを補正することを特徴とする。
【００１３】
上記の制御用データ作成装置２９０は、入力して記憶した左足平位置と右足平位置と体幹姿勢を示すデータと、その位置と姿勢を実現する一つの体幹位置を示すデータを用いる。その一つの体幹位置を示すデータは仮に用いるものであり、人が指定してもよいし、歩容データ作成装置２９０で生成してもよい。上記のデータ群によってロボットの位置と姿勢は決定される。本装置では、上記のデータ群から、左膝位置と右膝位置を示すデータを計算する（２９６）。この計算は、ロボットの寸法データから幾何学的に計算することができ、各関節の関節角を算出するよりもはるかに少ない計算量で済ませることができる。
本装置では、ロボットの位置と姿勢と運動状態からＺＭＰ位置を計算するにあたって、従来の「１２関節１３リンク」という複雑な力学系を用いず、代わって左膝位置と右膝位置と左足平近傍位置と右足平近傍位置に質量が集中して存在する力学系を用いる。集中した質量が上記位置に存在するとした力学系を用いることによって、歩行ロボットのＺＭＰ位置を少ない計算量で正確に計算できることが検証された。本装置では、上記手段２９２，２９４，２９６，２９８によって少ない計算量で短時間でＺＭＰ偏差を計算することができるようになった。
本装置２９０では、体幹位置を示すデータから、与えられた左足平位置と右足平位置と体幹姿勢を実現する「左膝位置と右膝位置を示すデータ」を計算し、ＺＭＰ位置を示すデータを計算する。この計算方法によると、体幹位置を示すデータをどれだけ補正すると左膝位置と右膝位置を示すデータがどれだけ変化してＺＭＰ位置を示すデータがどれだけ変化するかを知ることができる。即ち、体幹位置を示すデータを補正すると、左膝位置と右膝位置が変化してＺＭＰ位置が変化する関係を利用することができる。補正手段３１０では、上記関係を利用して体幹位置を示すデータの補正量を求める。本補正手段３１０によると、繰返し計算して補正量を収束させる必要がなく、一度の補正でＺＭＰ偏差を解消することができる。
本装置２９０によると、歩行ロボットが歩行に用いる制御用データ（歩容データ）を、少ない計算量で短時間で計算することが可能となる。
なお、歩容データ作成装置２９０に、左足平姿勢を示すベクトルＤと、右足平姿勢を示すベクトルＦを入力することが多いが、後記するように、足平姿勢の変化パターンを規格化することができ、左足平姿勢ベクトルＤと右足平姿勢ベクトルＦの入力は不可欠でない。
【００１４】
本装置２９０によると、体幹位置を示すデータを一回補正するだけでＺＭＰ偏差を解消することができる。精度を向上させるために、体幹位置を示すデータをさらに補正することもでき、補正回数を２回、３回と繰返すことでＺＭＰ偏差を正確にゼロに近づけることができる。その場合でも、繰返して計算して解を収束させる方式に比較すれば格段に少ない繰返し回数ですむ。
【００１５】
ＺＭＰ位置を計算する際には、左膝位置と右膝位置と左足平近傍位置と右足平近傍位置と体幹下部基準点と体幹上部基準点に質量が集中して存在する６質点の力学系を用いて、ＺＭＰ位置を示すデータを計算することが好ましい。
体幹に対して１つの質点を与える力学系を用いることが可能であり、体幹下部基準点と体幹上部基準点に分けることが必ずしも必要ではないが、体幹下部基準点と体幹上部基準点に分けることによって体幹姿勢を正確に反映することができるために、ＺＭＰ位置の計算精度が向上する。
【００１６】
図３０に模式的に示すように、左足平近傍位置に、左脛下半分３２４の質量と左足首３２２の質量と左足平３２０の質量の合計質量Ｍ１が集中して存在し、右足平近傍位置に、右脛下半分３４０の質量と右足首３３８の質量と右足平３３６の質量の合計質量Ｍ３が集中して存在し、左膝位置に、左脛上半分３２６の質量と左膝関節３２８の質量と左腿下半分３３０の質量の合計質量Ｍ２が集中して存在し、右膝位置に、右脛上半分３４２の質量と右膝関節３４４の質量と右腿下半分３４６の質量の合計質量Ｍ４が集中して存在し、体幹下部基準点に、左腿上半分３３２の質量と左股関節３３４の質量と右腿上半分３４８の質量と右股関節３５０の質量と体幹下半分３５２の質量の合計質量Ｍ５が集中して存在し、体幹上部基準点に、体幹上半分３５４の質量Ｍ６が集中して存在する力学系を用いて、ＺＭＰ位置を示すデータを計算することが好ましい。
この力学系は、簡単でありながらロボットを精度よくモデル化しており、計算の簡単化を損ねることなくＺＭＰ位置の計算精度を向上させる。
【００１７】
特に、体幹下部基準点と体幹上部基準点の高さが、水平軸回りの体幹の慣性モーメントの大きさを維持する高さに設定されていることが好ましい。
体幹は質量が大きく、ＺＭＰ位置の計算にあたって慣性モーメントを加味することが好ましい。特に、垂直軸回りの慣性に比して水平軸回りの慣性がＺＭＰ位置に大きく影響する。体幹下部基準点と体幹上部基準点の高さが、水平軸回りの体幹の慣性モーメントの大きさを維持する高さ、即ち、体幹の実際の慣性モーメントをもたらす高さに設定されていると、水平軸回りの体幹の慣性モーメントを正確に考慮してＺＭＰ位置を計算することができる。
【００１８】
本発明は、歩行ロボットのＺＭＰ位置の新たな計算方法をも創作した。本発明で創作された方法では、歩行ロボットをモデル化した「左膝位置と右膝位置と左足平近傍位置と右足平近傍位置に質量が集中して存在する力学系」を用いて歩行ロボットのＺＭＰ位置を示すデータを計算する。
本方法によると、関節角を求める必要がなくなり、極めて少ない計算量でＺＭＰ位置を示すデータを計算することが可能となる。
【００１９】
ＺＭＰ位置を示すデータを計算するにあたって、体幹については体幹上部基準点と体幹下部基準点に質量が集中して存在するモデルを用いることが好ましい。即ち、歩行ロボットをモデル化した「体幹上部基準点と体幹下部基準点と左膝位置と右膝位置と左足平近傍位置と右足平近傍位置に質量が集中して存在する力学系」を用いてロボットのＺＭＰ位置を示すデータを計算することが好ましい。
【００２０】
歩行ロボットをモデル化した「体幹上部基準点と体幹下部基準点と左膝位置と右膝位置と左足平近傍位置と右足平近傍位置に質量が集中して存在する力学系」と、左足平位置と右足平位置と左膝位置と右膝位置と体幹位置と体幹姿勢を示すデータとから、歩行ロボットのＺＭＰ位置を示すデータを計算すると、左足平位置と右足平位置と体幹位置と体幹姿勢から幾何学的に計算することができる左膝位置と右膝位置を用いてＺＭＰ位置を示すデータを計算することができ、ＺＭＰ位置を示すデータを少ない計算量で短時間で計算することができる。
【００２１】
本発明で創作されたＺＭＰ位置計算方法は、２足歩行ロボットに限られない。脚の数に限定されない。即ち、ロボットをモデル化した「体幹基準点と膝位置と足平近傍位置に質量が集中して存在する力学系」と、体幹位置と膝位置と足平位置の経時的変化を示すデータとから、歩行ロボットのＺＭＰ位置を示すデータを計算するということができる。
この方法によると、２脚以上の任意の数の脚を用いて歩行するロボットのＺＭＰ位置を示すデータを、少ない計算量で短時間で計算することができる。
【００２２】
【発明の実施の形態】下記に説明する実施例の主要な特徴を最初に整理する。
（形態１）体幹の位置と姿勢を示すデータから左右の股関節の位置を示すデータを計算する。左股関節の位置と左足平の位置を示すデータから左膝の位置を計算するデータを計算する。右股関節の位置と右足平の位置を示すデータから右膝の位置を計算するデータを計算する。
（形態２）体幹の位置を示すデータの補正量ΔＰに、係数をかけることによって膝関節の位置の移動量を計算する。
【００２３】
【実施例】図５は、２足歩行ロボットが２足で歩行するために必要とする制御用データ（歩容データ）を作成する歩容データ作成装置１を示している。この歩容データ作成装置１は、２足歩行ロボットを実際に歩行させるのに先立って用いられ、２足歩行ロボットを実際に歩行させるために必要な制御用データを作成する。この装置１で作成された歩容データは、２足歩行ロボットに伝達される。２足歩行ロボットは、伝達された歩容データに従って動作することによって歩行する。
歩容データ作成装置１は、十分に高速に歩容データを作成することができ、実質上リアルタイムで歩容データを作成することができる。歩行ロボットが歩行している様子を見ながら、人がジョイスティック等を使って次の一歩の足の運びを指定してから、次の一歩を実際に実施するまでの短時間の間に、次の一歩のための歩容データを作成することができるために、実質的にはリアルタイムで歩容データを作成することができる。
【００２４】
オペレータが、歩行指令データ（歩容データ）作成装置１に、歩行ロボットを歩行させたいコース等のデータを入力する。具体的には、図５の左下の（Ａ）に示される、５個のベクトルと１個のスカラ量を入力する。ベクトルＣは左足平位置ベクトルであり、座標原点Ｏから見たロボットの左足平位置を示す。ベクトルＤは左足平姿勢ベクトルであり、左足平の向きを示す。ベクトルＥは右足平位置ベクトルであり、座標原点Ｏから見たロボットの右足平位置を示す。ベクトルＦは右足平姿勢ベクトルであり、右足平の向きを示す。ベクトルＲは体幹姿勢ベクトルであり、ロボットの体幹の向きを示す。人間の背骨に相当する部材が伸びる方向を示す。ロボットの胴部が腰部（下胴部）と上胴部に分離されている場合には、腰部が体幹に相当し、体幹姿勢ベクトルＲは腰部に垂直な方向を定義する。Ｑは、体幹高さであり、人間で言う腰位置の高さに相当する。オペレータは、これらの５種のベクトルと１種のスカラ量を時系列に従って次々に入力する。なお、このためのデータ入力支援ソフトが開発されており、主要タイミングでのデータを指定することで、時系列での中間データが補完計算されるようになっている。また、一歩分の入力データを繰り返して利用するように指示することで、入力量を低減することができる。
オペレータがジョイスティック等で歩行コースや歩行速度等を指示することもある。一歩分の標準的な足平姿勢ベクトルの変化パターンと体幹姿勢ベクトルの変化パターンと体幹高さの変化パターンを記憶しておくと、オペレータがジョイスティック等で歩行コースや歩行速度を指示するによって、一歩分の５種ベクトルＣ（ｔ），Ｄ（ｔ），Ｅ（ｔ），Ｆ（ｔ），Ｒ（ｔ）と１種スカラ量Ｑ（ｔ）を生成して記憶することができる。
歩容データを作成するのに必要な５種のベクトルＣ（ｔ），Ｄ（ｔ），Ｅ（ｔ），Ｆ（ｔ），Ｒ（ｔ）と１種スカラ量Ｑ（ｔ）は、歩容データ作成装置１に入力されて記憶装置２に記憶される。
【００２５】
オペレータは、さらに、目標ＺＭＰ位置ベクトルを時系列に従って入力する。この場合、ベクトルＣ〜Ｆによって、左足接地状態・両足接地状態・右足接地状態の別がわかっていることから、左足接地状態では左足接地面内の位置を指定し、右足接地状態では右足接地面内の位置を指定する。ベクトルＣ〜Ｆを用いることによって、目標ＺＭＰ位置ベクトル（ＺＭＰ＊ベクトル）を指定することができる。
【００２６】
図１は、目標ＺＭＰ位置ベクトルの設定方法を示している。この場合、ロボットはＸ方向に歩行する。歩行方向に直交する方向をＹ方向とする。ロボットは、両足接地期間と片足接地期間を交互に繰返して歩行する。片足接地期間内の目標ＺＭＰは、接地足の接地面内になければならない。さもなければ、実際ＺＭＰを目標ＺＭＰに一致させてもロボットは転倒してしまう。両足接地期間内の目標ＺＭＰは、２つの接地面を結ぶ領域にあればよい。Ｙ方向の現象を考察すると明らかに、両足が接地している期間内に、目標ＺＭＰは左足接地面内から右足接地面内に移動しなければならない（傾斜線Ｃ２参照）。あるいは、右足接地面内から左足接地面内に移動しなければならない（傾斜線Ｃ４参照）。水平線Ｃ１は、左足のみが接地している場合の目標ＺＭＰを示し、目標ＺＭＰは左足接地面内に維持されている。水平線Ｃ３は、右足のみが接地している場合の目標ＺＭＰを示し、目標ＺＭＰは右足接地面内に維持されている。
【００２７】
Ｘ方向の目標ＺＭＰもほぼ同様の条件を満たす必要がある。水平線Ｃ６は、左足のみが接地している場合のＸ方向の目標ＺＭＰを示し、Ｘ方向の目標ＺＭＰは左足接地面内に維持されている。水平線Ｃ８は、右足のみが接地している場合のＸ方向の目標ＺＭＰを示し、Ｘ方向の目標ＺＭＰは右足接地面内に維持されている。両足が接地している期間内に、Ｘ方向の目標ＺＭＰは左足接地面内から右足接地面内に移動し（傾斜線Ｃ７参照）、あるいは、右足接地面内から左足接地面内に移動しなければならない（傾斜線Ｃ９参照）。水平線Ｃ１０は、再び左足のみが接地している場合のＸ方向の目標ＺＭＰを示し、Ｘ方向の目標ＺＭＰは左足接地面内に維持されている。この場合、ロボットが歩行してＸ方向に移動するために、水平線Ｃ６のＸ座標と水平線Ｃ１０のＸ座標は、歩幅分変化している。ベクトルＣ〜Ｆを用いることによって、目標ＺＭＰ位置ベクトルを指定することができる。
【００２８】
図１に示した目標ＺＭＰを設定しておき、歩行時に観測される実際ＺＭＰが目標ＺＭＰに一致するように制御することによって、ロボットは転倒しないで歩行することが可能となる。
しかしながら、図１に示す目標ＺＭＰは、時間に対して、静止・等速変化・静止・等速変化・・・を繰返す。静止から等速変化に切り替わるタイミングや、等速変化から静止に切り替わるタイミングでは、無限大の加速度または減速度が必要とされ、ロボットには大きな負荷が作用する。またロボットの動作はぎこちないものとなる。これらの要素が、ロボットの最大歩行速度を低く抑えている。
【００２９】
無限大の加速度または減速度が必要とされる目標ＺＭＰの変化パターンを修正する試みがいくつかなされている。図２（Ｂ）は、図２（Ａ）のパターンを遅延処理することによって平滑化したものであり、平滑化することによって、必要な加速度や減速度の最大値を小さく抑えることができる。
遅延処理して平滑化した目標ＺＭＰは、歩行パターンに比して遅れるために、ロボットの歩行姿勢が安定しないという問題が生じる。図２（Ｂ）のＰ１２は、両足接地状態から右足接地状態に移行するタイミングに相当する。このときには目標ＺＭＰが右足接地面内になければならない。しかしながら、図２（Ｂ）に示すように、遅延処理して平滑化した目標ＺＭＰの変化パターンは遅すぎ、例えば右足接地面内になければならないときにまだ右足接地面内にないことがあり、その遅れがロボットの歩行姿勢を不安定なものとし、ひどい場合には転倒してしまうことになる。
なお本明細書では「右足接地状態」という場合は、右足のみが接地している状態を意味する。両足接地状態でも右足は接地しているが、その場合には両足接地状態といい、右足接地状態とはいわない。左足接地状態も同様である。
【００３０】
図２（Ｃ）は、目標ＺＭＰのシャープな変化点をスムージング処理した目標ＺＭＰを示している。スムージング処理することによって、必要な加速度や減速度の最大値を小さく抑えることができる。
スムージング処理した目標ＺＭＰは、歩行パターンに比して、早すぎたり遅すぎたりするためにロボットの歩行姿勢が安定しないという問題が生じる。図２（Ｃ）のＰ１３は、両足接地状態に移行する直前であって左足接地状態にまだあるタイミングに相当する。それにも係わらず、目標ＺＭＰは左足接地面内から外れ始めている。これでは早すぎる。図２（Ｃ）のＰ１４は、両足接地状態から右足接地状態に移行するタイミングに相当する。このときには、目標ＺＭＰが右足接地面内になければならない。それにも係わらず、目標ＺＭＰはまだ右足接地面内にない。これでは遅すぎる。スムージング処理した目標ＺＭＰは、歩行パターンに比して早すぎたり遅すぎたりし、そのずれがロボットの歩行姿勢を不安定なものとし、ひどい場合には転倒してしまうことになる。
【００３１】
現在の技術では、図２（Ａ）に示した目標ＺＭＰ軌道が持つ問題点を、新たな問題が起こらないようにして解決することができず、ロボットの高速歩行を妨げる一つの要因となっている。この問題に対して、本実施例では、下記のように対応する。
【００３２】
図１に例示されるように、入力された目標ＺＭＰは時間軸に沿ってみると急激に変化する。図５に示される歩行指令データ作成装置１には、時間に対して急激に変化する目標ＺＭＰを円滑化した軌道に変換する円滑処理部７が用意されている。処理部７では、図２（Ａ）に例示された時間的に急激に変化する目標ＺＭＰを、図２（Ｄ）に例示するように、当加速度軌道Ａと等速度軌道Ｂと等減速度軌道Ｃで生らかに接続する軌道に変換する。
等加速度軌道Ａでは、２足方向ロボットが無理なく実現できる最高加速度を維持するものとする。等加速度軌道Ａによって目標ＺＭＰの移動速度は増速する。目標ＺＭＰの移動速度が２足方向ロボットの最高速度に到達すると、以後は等速度軌道Ｂを採用する。反対足側の目標ＺＭＰに接近すると、等減速度軌道Ｃに切り変える。等減速度軌道Ｃでは、２足方向ロボットが無理なく実現できる最高減速度を維持するものとする。等減速軌道Ｃによって目標ＺＭＰの移動速度はゼロとなる。ゼロになったときに、目標ＺＭＰが反対足側の目標ＺＭＰに一致する軌道が計算される。これは、あたかも、電車が加速して最高速度を維持して減速して停止するのと同様であり、無理無駄のかからない運動パターンである。減速して所定位置に停止させる軌道を計算する様々な技術が開発されている。
図２（Ｄ）は、等加速度軌道Ａと等速度軌道Ｂと等減速度軌道Ｃを含む軌道で接続した目標ＺＭＰ軌道の一例を示しており、点Ｐ１５に示すように、両足接地状態に移行するのを待ってから目標ＺＭＰは他方の足側に移動するから、目標ＺＭＰの変化が早すぎるという問題はない。一方点Ｐ１６に示すように、両足接地状態から片足接地状態に変化するのに先立って、目標ＺＭＰは片足接地面内の位置に移動しており、目標ＺＭＰの変化が遅すぎるいう問題もない。図２（Ｅ）は、目標ＺＭＰの移動速度の時間変化を示し、等加速度軌道で増速し（Ａ）、最高速度に達すれば最高速度を維持し（Ｂ）、ついで等減速度で減速する（Ｃ）。
【００３３】
図２では、片足接地期間内の目標ＺＭＰが静止しているとした。しかしながら片足接地期間内の目標ＺＭＰが静止している必要はなく、例えば、踵方向から爪先方向に移動してもよい。片足接地期間内の目標ＺＭＰは、接地している足の接地面内にあればよく、人間の場合には、踵方向から爪先方向に移動する。
図３は、片足接地期間内に踵方向から爪先方向に移動する目標ＺＭＰの軌道（Ｃ１１、Ｃ１２、Ｃ１３）を、等加速度軌道と最高速度の等速度軌道と等減速度軌道によって接続した軌道Ｃ１４を例示している。等加速度軌道は、片足接地期間内に踵方向から爪先方向に移動する目標ＺＭＰの移動速度で開始し、等減速度軌道は、片足接地期間内の目標ＺＭＰの移動速度で終了する。目標ＺＭＰの移動速度は連続的に変化し、不連続な変化が生じない。
図３のＣ１５は、従来の技術で接続した目標ＺＭＰの軌道を示し、速度が不連続に変動するために、ロボットは大きな加速度または減速度で動作することが求められる
【００３４】
図２、図３に例示した軌道は、時間軸に対するＸ座標またはＹ座標の変化を示す。ここでは、ロボットが最高速度で歩行するものとして時間軸を設定する。等加速度軌道、等速度軌道、等減速度軌道では、ロボットの能力の範囲内で可能な最高加速度、最高速度、最高減速度で計算する。
歩行指令データ作成装置１で作成されたデータは、時間軸を引き伸ばしてロボットに教示されることがある。例えば、時間軸に対して図４（Ａ）に例示されるパターンで設定された目標ＺＭＰ軌道を、図４（Ｂ）に示すように、徐々にゆっくりしたパターンに変換してロボットに教示することがある。この場合、ロボットの動作は徐々に緩やかになる。歩行指令データ作成装置１で作成された１秒分のデータを、２秒分のデータとしてロボットに教示すると、ロボットの動作速度は半分に低下する。あるいは、ロボットに教示された歩行指令データを実行する段階で、時間軸を引き伸ばして実行することによって動作をゆっくりさせることもある。歩行指令データ作成装置１で作成した段階では、等加速度軌道、等速度軌道、等減速度軌道であったものが、ロボットの実際の動作段階では、等加速度軌道、等速度軌道、等減速度軌道にならないことがある。本技術は、最高速度で想定する目標ＺＭＰ軌道の算出に用いられるものであり、その段階で、等加速度軌道、等速度軌道、等減速度軌道で接続することが重要であり、ロボットの実際の動作段階では、等加速度軌道、等速度軌道、等減速度軌道にならなくてもかまわない。
【００３５】
図５に示す歩容データ作成装置１は、オペレータが入力した５種のベクトルと１種のスカラ量に基づいて、実際に生じるであろうＺＭＰを計算して目標ＺＭＰとの偏差を求め、そのＺＭＰ偏差から目標ＺＭＰをもたらす体幹位置ベクトルＰを計算して歩容データを作成する。
手段３は、５種のベクトルと１種のスカラ量で定義されるロボットの位置と姿勢を実現する一つの体幹位置を示すデータを生成する。５種のベクトルと１種のスカラ量で定義されるロボットの位置と姿勢を実現する体幹位置は複数存在するので一意に決定することができない。ここでは任意の一個を採用する。体幹位置ベクトルＰを生成すると、６種のベクトルＣ，Ｄ，Ｅ，Ｆ，Ｐ，Ｒが揃うので、ロボットの位置と姿勢が一意に決定される。
【００３６】
ここで用いる体幹ベクトルＰは、仮に用いられるものであり、後述する手段９によって補正されるので、ラフなものでよい。人が指定して歩容データ作成装置１に入力して記憶してもよいし、歩容データ作成装置１で生成してもよい。
【００３７】
体幹位置ベクトルＰに対する、体幹姿勢ベクトルＲや足先位置ベクトルＣ，Ｅや足先姿勢ベクトルＤ，Ｆや体幹高さＱや目標ＺＭＰベクトルの変化パターンを規格化しておくことができる。一歩分の変化パターンが規格化されていれば、人が体幹位置ベクトルＰを指定することによって、歩容データ作成装置１が必要とする５種のベクトルと１個のスカラ量を入力することができる。体幹位置ベクトルＰはジョイスティック等を利用して指定することができる。歩行するロボットを観測しながらジョイスティック等を操作して体幹位置ベクトルＰをリアルタイムで入力することが可能である。
体幹位置ベクトルＰをリアルタイムで入力することができ、歩容データ作成装置１が必要とする５種のベクトルと１個のスカラ量をリアルタイムで入力することができ、歩容データ作成装置１がリアルタイムの制御に間に合うほど高速に歩容データを作成できれば、２足歩行ロボットの歩行をリアルタイムで指定することができる。
【００３８】
体幹の位置Ｐと姿勢Ｒが決定されれば、左右の股関節の位置が決定する。左足平位置Ｃと左足平姿勢Ｄが決定されれば、左足首の位置が決定する。左股関節の位置と左足首の位置が決定されれば、左膝の位置Ｇが決定される。左腿の長さと左脛の長さが既知であり、左膝関節の回転自由度が１自由度しかないことから、左股関節の位置と左足首の位置が決まれば左膝の位置Ｇが一意に決定される。同様に、右足平位置Ｅと右足平姿勢Ｆから、右足首の位置が決定する。右股関節の位置と右足首の位置から、右膝の位置Ｈが決定される。
手段４は、上記の幾何学的関係を利用して、左膝位置ベクトルＧと右膝位置ベクトルＨを計算する。
手段５では、ロボットのＺＭＰ位置を計算する。ここでは、図３０に示した６質点系モデルを用いる。
６質点を持つ力学系では、左足平近傍位置に、左脛下半分３２４の質量と左足首３２２の質量と左足平３２０の質量の合計質量Ｍ１が集中して存在し、右足平近傍位置に、右脛下半分３４０の質量と右足首３３８の質量と右足平３３６の質量の合計質量Ｍ３が集中して存在し、左膝位置に、左脛上半分３２６の質量と左膝関節３２８の質量と左腿下半分３３０の質量の合計質量Ｍ２が集中して存在し、右膝位置に、右脛上半分３４２の質量と右膝関節３４４の質量と右腿下半分３４６の質量の合計質量Ｍ４が集中して存在し、体幹下部基準点に、左腿上半分３３２の質量と左股関節３３４の質量と右腿上半分３４８の質量と右股関節３５０の質量と体幹下半分３５２の質量の合計質量Ｍ５が集中して存在し、体幹上部基準点に、体幹上半分３５４の質量Ｍ６が集中して存在するものとする。
【００３９】
質点Ｍ１の位置は、左足平近傍位置にあればよく、左足首関節位置からずれていてもよく、左足平位置ベクトルＣの終点からずれていてもよい。質点Ｍ３の位置は、右足平近傍位置にあればよく、右足首関節位置からずれていてもよく、右足平位置ベクトルＥの終点からずれていてもよい。これに対し、質点Ｍ２の位置は、左膝関節置にあるとするのが極めて効果的であり、左膝関節置に質量が集中して存在しているとすることによって、ＺＭＰ位置の計算が極めて簡単化され、体幹位置の補正量の計算が極めて簡単化される。同様に、質点Ｍ４の位置は、右膝関節置にあるとするのが極めて効果的である。
質点Ｍ５とＭ６は人間の背骨上に存在している。その高さは、集中質量Ｍ５とＭ６を用いて体幹の水平軸回りの慣性モーメントを計算した値と、実際の体幹の水平軸回りの慣性モーメントが一致する高さに設定しておくことが好ましい。
【００４０】
図５の手段５では、手段４で決定されるロボットの位置と姿勢の変化から、質点Ｍ１〜Ｍ６の速度と加速度と、集中質量Ｍ５とＭ６による水平軸回りの慣性モーメントを利用して、ロボットに生じるＺＭＰ位置を計算する。
【００４１】
図５に示す歩容データ作成装置１は、目標ＺＭＰ位置を示すデータを入力して記憶する手段６と、それを円滑化した目標ＺＭＰ位置を示すデータを記憶する手段７を備えており、手段３で計算されたＺＭＰ位置と、手段７に記憶されている目標ＺＭＰ位置との偏差を計算することができる（手段８）。
歩容データ作成装置１は、手段８で計算されたＺＭＰ偏差を解消するのに必要な体幹位置ベクトルの補正量を計算して、目標ＺＭＰ位置と等しいＺＭＰ位置が計算される体幹位置ベクトルＰを計算する手段９を備えている。
手段９は、体幹位置を示すデータをどれだけ補正すると左膝位置と右膝位置を示すデータがどれだけ変化してＺＭＰ位置を示すデータがどれだけ変化するか示関係を利用して体幹位置を示すデータの補正量を求める。補正手段９によると、繰返し計算して補正量を収束させる必要がなく、一度の補正でＺＭＰ偏差を解消することができる。
体幹位置の補正量から左膝位置と右膝位置の移動量を計算するにあたって、体幹位置の補正量ΔＰに係数をかけることによって左膝位置と右膝位置の移動量を計算するようにすると計算が一層に簡単化される。体幹高さと膝位置高さの比例係数を利用することによって、体幹位置の補正量ΔＰから左膝位置と右膝位置の移動量を簡単に計算することができる。
【００４２】
図５の参照数字９ａは、体幹位置ベクトルＰをΔＰだけ補正することによってＺＭＰ偏差が解消される様子を概念的に示しており、補正量ΔＰだけ補正した新たな体幹位置ベクトルを用いて左膝位置と右膝位置を示すデータを計算してＺＭＰを計算すると、目標ＺＭＰ位置にほぼ一致するＺＭＰ位置が計算されることを示している。
【００４３】
上記によって、目標ＺＭＰ位置にほぼ一致するＺＭＰ位置が計算されるが、体幹位置ベクトルＰを１回補正しただけでは、なおもＺＭＰ偏差が十分に解消されない場合がある。この場合、手段４以降を再度活用して２回補正すると、ＺＭＰ偏差をさらに解消することができる。
【００４４】
図３３の（ａ）は、Ｙ方向の目標ＺＭＰの経時的変化を示している。図中の（ｂ）は、その拡大図を示し、カーブ３９２は、本実施例の技術によって体幹位置ベクトルＰを１回補正することによって得られた歩容データから計算されたＺＭＰの経時的変化を示している。与えられた目標ＺＭＰの経時的変化３９０によく一致している。カーブ３９４は、従来の技術によって収束計算を１０回繰返した後の歩容データから計算されたＺＭＰの経時的変化を示している。与えられた目標ＺＭＰの経時的変化に十分に一致せず、特にオーバーシュートが大きいことがわかる。
本実施例の技術によって、目標ＺＭＰによく追従する歩容データを、少ない計算量で短時間で計算できることが検証されている。
【００４５】
次に２足歩行ロボットの機械的構造を、図６〜１８を参照して説明する。本明細書では、足部の前後方向（ロボットの進行方向）をＸ軸とし、左右方向をＹ軸とし、垂直軸をＺ軸とする。各軸は相互に直交している。図６は本実施例の２足歩行ロボットの両下肢の正面図であり、図７は左下肢の側面図であり、図８は足首関節の構造を説明するための図であり、図９はアクチュエータの詳細を説明する図であり、図１０〜１３は足部の動きを説明する図である。なお、左右の下肢形状は鏡対称である
【００４６】
図６に示すように、本実施例のロボット１０の左右の下肢１２は、大腿部１４と下腿部（脛）１６と足部１８から構成され、大腿部１４と胴体部２０は股関節２２によって接続されており、大腿部１４と下腿部１６は膝関節２４によって接続されており、下腿部１６と足部１８は足首関節２６によって接続されている。
【００４７】
最初に股関節２２について説明する。ほぼ水平に伸びる板状の骨盤部２８には、図７に示すように、Ｚ軸回りに回転する円板３６がベアリング３４によって取付けられている。円板３６は、図６において左右に一対設けられている。各円板３６の中心には、骨盤部２８側から大腿部１４側に伸びる（Ｚ軸方向に伸びる）シャフト３０が固定されている。シャフト３０は骨盤部２８に対してＺ軸回りに回転する。板状の骨盤部２８には、体幹が固定されている。
シャフト３０の下端に対して大腿部１４の上端がユニバーサルジョイント３２によって接続されている。ユニバーサルジョイント３２は、十字型自在継手を備えており、シャフト３０に対して大腿部１４がＸ軸回りとＹ軸回りに回転することを許容する。股関節２２は、骨盤部２８に対してＺ軸回りに回転できるシャフト３０と、シャフト３０に対して大腿部１４がＸ軸回りとＹ軸回りに回転することを許容するユニバーサルジョイント３２を持ち、Ｘ，Ｙ，Ｚ軸のそれぞれの回りに回転することを許容する３軸関節である。
【００４８】
次に膝関節２４を説明する。各大腿部１４の下端にはＹ軸方向に平行に並ぶ２つのフランジ４０が下方へ伸びており、各下腿部１６を構成するシャフト４２の上端にはＹ軸方向に平行に並ぶ２つのフランジ４４が上向きに設けられている。膝関節２４は、これらのフランジ４０，４４を貫通してＹ軸方向に伸びる軸４６を備える。膝関節２４は、大腿部１４に対して下腿部１６がＹ軸回りに回転することを許容する。
【００４９】
次に足首関節２６を説明する。図８は足首関節２６の構造を説明するために単純化してデフォルメした図であり、実際の形状や寸法とは必ずしも一致しない。下腿部１６のシャフト４２の下部にはＸ軸方向に平行に並んだ２つのフランジ５８が下方に伸びている。また、足部１８の上面にはＹ軸方向に平行に並んだ２つのフランジ６０が上方に伸びている。これら下腿部１６のフランジ５８と足部１８のフランジ６０は十字型自在継手６２によって接続されてユニバーサルジョイントを成している。足首関節２６は、下腿部２４に対して足部１８が、Ｘ軸回りとＹ軸回りに回転することを許容する。即ち、足首関節２６はＸ，Ｙ軸のそれぞれについて自由度を持つ２軸関節である。
【００５０】
各関節はワイヤによって駆動される（股関節のＺ軸回りの回転を除く。この回転のみはワイヤを利用せずに、モータで直接に回転される）。各ワイヤの一端は末端側部材に取付けられており、他端はモータと送りネジから構成されるアクチュエータに接続されている。モータによって送りネジ（Ｚ方向に伸びる）が回転すると、送りネジに螺合しているナットが送りネジ方向に送られ、ナットに接続されているワイヤ先端がＺ軸方向に進退する。ワイヤ先端をＺ軸方向に進退させることによってワイヤによって末端側部材を引いたり緩めたりすることができる。
【００５１】
最初に図７と８を参照して足首関節を回転させるワイヤ群を説明する。足部１８には、図示しない取付け板によってワイヤ終端ガイド７０ａ，７０ｂ，７０ｃが固定されている。各ワイヤ終端ガイド７０ａ，７０ｂ，７０ｃは円弧形状であり、それぞれの円弧の中心軸はＹ軸方向に伸びており、円弧面は所定の巾（Ｙ軸に沿って伸びる距離）を有している。ワイヤ終端ガイド７０ａは足首関節２６のＹ軸よりも前方に位置し、Ｘ軸上配置されている。その円弧面はＸ軸前方を向いている。ワイヤ終端ガイド７０ｂ，７０ｃは足首関節２６のＹ軸よりも後方に位置している。ワイヤ終端ガイド７０ｂは足首関節２６のＸ軸よりも外側に位置し、ワイヤ終端ガイド７０ｃは足首関節２６のＸ軸よりも内側に位置している。ワイヤ終端ガイド７０ｂ，７０ｃの円弧面はＸ軸後方を向いている。
３本のワイヤ６６ａ，６６ｂ，６６ｃの下端は、ワイヤ終端ガイド７０ａ，７０ｂ，７０ｃのそれぞれの下端のワイヤ接続点７２ａ，７２ｂ，７２ｃに固定されており、各ワイヤ６６ａ，６６ｂ，６６ｃの他端は、膝関節２４側に伸びている。各ワイヤ終端ガイド７０ａ，７０ｂ，７０ｃの円弧面はワイヤ６６ａ，６６ｂ，６６ｃが小さな曲率半径で鋭く曲がることを禁止している。
【００５２】
ワイヤ接続点７２ａは足首関節２６のＹ軸よりも前方に位置しており、ワイヤ６６ａが膝関節２４側に引かれると足部１８は足首関節２６のＹ軸回りに回転して爪先を持ち上げる。ワイヤ接続点７２ａは足首関節２６のＸ軸上に配置されており、ワイヤ６６ａが膝関節２４側に引かれても足部１８のＸ軸回りの回転角には影響しない。ワイヤ接続点７２ｂは足首関節２６のＸ軸よりも外側に位置しており、ワイヤ６６ｂが膝関節２４側に引かれると足部１８は足首関節２６のＸ軸回りに回転して足部１８の外側を持ち上げる。ワイヤ接続点７２ｃは足首関節２６のＸ軸よりも内側に位置しており、ワイヤ６６ｃが膝関節２４側に引かれると足部１８は足首関節２６のＸ軸回りに回転して足部１８の内側を持ち上げる。足部１８の内側を持ち上げる場合には、ワイヤ６６ｃを引くと同時にワイヤ６６ｂを緩めて足部１８の外側が下がることを許容する。同様に、足部１８の外側を持ち上げる場合には、ワイヤ６６ｂを引くと同時にワイヤ６６ｃを緩めて足部１８の内側が下がることを許容する。足部１８を足首関節２６のＸ軸回りに回転させる場合にはワイヤ６６ａを操作する必要はない。ワイヤ６６ｂ、６６ｃを同時に引くと足部１８は足首関節２６のＹ軸回りに回転してかかとを持ち上げる。この場合には、ワイヤ６６ａを緩めて爪先が下がるのを許容する。ワイヤ６６ａを引いて爪先を持ち上げるときには、ワイヤ６６ｂ、６６ｃを緩めてかかとが下がるのを許容する。
３本のワイヤ６６ａ、６６ｂ、６６ｃによって、足首関節２６のＸ軸回りの回転角とＹ軸回りの回転角を独立に調整することができる。
【００５３】
なお、ワイヤ接続点を足首関節２６のＹ軸よりも前方のＸ軸の両側と、Ｙ軸よりも後方のＸ軸上に配置してもよい。このようにワイヤ接続点を配置しても、ワイヤによって足首関節２６のＸ軸回りの回転角とＹ軸回りの回転角を独立して調整することができる。
【００５４】
図１０〜１３は足部１８の動きを説明するための模式図であり、図１０と図１１はＸ軸回りの回転を説明するための図である。図１０は足部１８の平面図であり、図１１は足部１８の背面図である。各ワイヤ６６ａ，６６ｂ，６６ｃの終端ではワイヤ終端ガイド７０ａ，７０ｂ，７０ｃの図示を省略し、ワイヤ接続点７２ａ，７２ｂ，７２ｃのみで示してある。
【００５５】
図１０は、ワイヤ接続点７２ａに接続されているワイヤ（図示省略）は中立状態を維持しながらワイヤ接続点７２ｂに接続されているワイヤ６６ｂの有効長を収縮させ、ワイヤ接続点７２ｃに接続されているワイヤ６６ｃの有効長を伸長させることを示している。このとき、足部１８は図１１の破線で示したようにＸ軸回りに矢印の方向に回転する。また、ワイヤの有効長の伸長・収縮を逆にすると、足部１８は矢印とは逆方向に回転する。即ち、このようにワイヤの有効長の伸長・収縮を調整することによって、足部１８をＸ軸の回りに自在に回転させることができる。
【００５６】
図１２と図１３はＹ軸回りの回転を説明するための図である。図１２は足部１８の平面図であり、図１３は足部１８の側面図である。各ワイヤ６６ａ，６６ｂ，６６ｃの終端ではワイヤ終端ガイド７０ａ，７０ｂ，７０ｃの図示を省略し、ワイヤ接続点７２ａ，７２ｂ，７２ｃのみで示してある。図１２はワイヤ接続点７２ａに接続されているワイヤ６６ａの有効長を収縮させ、ワイヤ接続点７２ｂ，７２ｃに接続されているワイヤ６６ｂ，６６ｃの有効長を共に伸長させた場合を示している。このとき、足部１８は図１３の破線で示すように、Ｙ軸回りに矢印の方向に回転する。また、ワイヤの有効長の伸長・収縮を逆にすると、足部１８は矢印と逆方向に回転する。このようにワイヤの有効長の伸長・収縮を調整することによって、足部１８をＹ軸の回りに自在に回転させることができる。
なお、足部１８の前側を持ち上げるのに要するワイヤの張力に比べ、足部１８の後ろ側を持ち上げるのに要するワイヤの張力は大きい。このため、３点のワイヤ接続点７２ａ，７２ｂ，７２ｃのうちの１点を前側にし、２点を後側にし、２本のワイヤと２個のアクチュエータでかかとを持ち上げることが好ましい。この場合、各アクチュエータの能力を等しくすることができる。
【００５７】
なお図示はしないが、足部１８を同時にＸ軸回りにもＹ軸回りにも回転させることができる。例えば、ワイヤ６６ｂの有効長を速度ａ−ｂで収縮させ、ワイヤ６６ｃの有効長を速度ａ＋ｂで伸長させ（即ち−ａ−ｂで収縮させる）、ワイヤ６６ａの有効長をｂで収縮させると、足部１８はＸ軸の回りに速度ａで回転して外側が上がり、且つ、Ｙ軸の回りに速度ｂで回転して前側が上がる。このように３本のワイヤの有効長を同時に調整すると、足部１８をＸ軸の回りとＹ軸の回りに同時に自在に回転させることができる。またＸ軸回りの回転速度とＹ軸回りの回転速度を自在に調整することもできる。これらのことから、Ｘ，Ｙの２軸に対して３本のワイヤ、即ち、軸数＋１本のワイヤを用いることによって、Ｘ，Ｙ軸について互いに独立に調整することが可能である。
【００５８】
図８に示すように、下腿部１６のシャフト４２の上部には、フランジ４４を貫通するＹ軸方向の軸４６の回りに自由回転可能な３つのプーリ６４ａ，６４ｂ，６４ｃが２つのフランジ４４と交互に配されている。それぞれのプーリ６４ａ，６４ｂ，６４ｃにはワイヤ６６ａ，６６ｂ，６６ｃが１本ずつ巻かれている。ワイヤ６６ａ，６６ｂ，６６ｃは、プーリ６４ａ，６４ｂ，６４ｃの前側でプーリから離反している。ワイヤ６６ａ，６６ｂ，６６ｃは足部１８に対して膝関節の前方位置から引張力を加える。このために、３本のワイヤ６６ａ，６６ｂ，６６ｃを同時に同一速度で収縮させると、下腿部１６に対する足部１８の回転角度は変えないで（足首関節２６を回転させないで）、下腿部１６を膝関節２４の回りに前向きに回転させることができる。
【００５９】
図８に明瞭に示されている３本のワイヤ６６ａ，６６ｂ，６６ｃの上端はアクチュエータ６８ａ，６８ｂ，６８ｃ（図６、図７参照）に接続されている。図６と７では図示の明瞭化のためにアクチュエータが簡略化されて表示されている。図９はアクチュエータ６８の詳細を模式的に示しており（すべてのアクチュエータは同様の構造を有するために、添え字を省略して共通的に説明する）、一対のフランジ１０２と１０６が３本の案内ロッド１０８，１１０，１１２で接続されている。一対のフランジ間には送りネジ１２０が回転自在で軸方向には移動不能に配置されている。送りネジ１２０は、モータ１１４とギヤ１１６と１１８によって回転させられる。可動プレート１０４は送りネジ１２０に螺合するナットを備えている。可動プレート１０４は案内ロッド１０８，１１０，１１２に案内されて軸方向に移動可能で回転不能となっている。その可動プレート１０４にワイヤ６６の先端が固定されている。
モータ１１４が回転すると送りネジ１２０が回転して可動プレート１０４が案内ロッドに沿って滑り、ワイヤ６６が引き込まれたり、緩められたりする。
アクチュエータ６８のモ−タは１１４と、一対のフランジ１０２、１０６は大腿部１４に固定されている。案内ロッド１０８，１１０，１１２は大腿部１４の長手方向に伸びており、モ−タは１１４がアクチュエータ６８を回転させることで、ワイヤ６６は大腿部１４の長手方向に引かれたり緩められたりする。
ワイヤ６６ａ，６６ｂ，６６ｃのプーリ６４ａ，６４ｂ，６４ｃと接続点７２ａ、７２ｂ、７２ｃ間の距離をワイヤの有効長とすると、ワイヤ６６ａ，６６ｂ，６６ｃの有効長はモータ１１４によって伸長させられる。ワイヤ６６ａ，６６ｂ，６６ｃの有効長を伸長させるアクチュエータ群６８ａ，６８ｂ，６８ｃは、股関節２２に近い大腿部１４に配置されている。
【００６０】
図９に示されているように、アクチュエータ６８にコントローラ２００が接続されている。コントローラ２００には、ロボット１０の動き全体を制御している別のコントローラ（図示省略）から、足首関節２６の回転角と各ワイヤ（６６ａ、６６ｂ、６６ｃ）の張力を指示する信号が入力される。コントローラ２００は、モータ１１４の回転角及び／またはトルクを制御する。
【００６１】
図７に示されているように、下腿部４２には下腿部４２を膝関節２４の回りに後方に回転させるワイヤ６６ｄの一端が接続されている。ワイヤ６６ｄは膝関節に回転自在に配置されているプーリ６４ｄ（図６参照）の後方を通ってアクチュエータ６８ｄの可動プレート１０４に接続されている。アクチュエータ６８ｄの可動プレート１０４はモータによって進退する。可動プレート１０４が進退すると、ワイヤ６６ｄは引き込まれたり、緩められたりする。
【００６２】
以上によって下記の姿勢変化が実現される。
（１）アクチュエータ６８ａを縮めてアクチュエータ６８ｂ、６８ｃを緩めることで爪先が上がる。アクチュエータ６８ａを緩めてアクチュエータ６８ｂ、６８ｃを縮めることで爪先が下がる。
（２）アクチュエータ６８ｂを縮めてアクチュエータ６８ｃを緩めることで足部１８の外側が上がる。アクチュエータ６８ｂを緩めてアクチュエータ６８ｃを縮めることで内側が上がる。
（３）アクチュエータ６８ａ、６８ｂ、６８ｃを縮めてアクチュエータ６８ｄを緩めることで下腿部１６が前方に回転する。アクチュエータ６８ａ、６８ｂ、６８ｃを緩めてアクチュエータ６８ｄを縮めることで下腿部１６が後方に回転する。
４本のアクチュエータと４本のワイヤで、足首関節２６のＸ軸回りの回転角（前記２の回転）と、足首関節２６のＹ軸回りの回転角（前記１の回転）と、膝関節２４回りの回転角（前記３の回転）が独立に調整できる。
４本のアクチュエータで３軸回りの回転角を調整するために、アクチュエータは冗長であるように見える。しかしながら、この冗長性を利用して回転角に関する剛性を調整することができる。なおこの点については後記する。
【００６３】
膝関節２４のみならず足首関節２６の回転角を調整するためのアクチュエータまでもが大腿部１４に配置されているために、この人工下肢の先端部は軽く、股関節回りの慣性モーメントは小さい。このために、小さなトルクで股関節２２の回りに高速に回転させることができる下肢が得られる。
【００６４】
次に股関節２２回りの回転角を調整するワイヤとアクチュエータを説明する。図６と図７に示すように、大腿部１４の上部の所定位置には３個の円弧形状のワイヤ終端ガイド４８ａ，４８ｂ，４８ｃが３箇所に取付けられ、それぞれにワイヤ５０ａ，５０ｂ，５０ｃが１本ずつ掛けられている。それぞれのワイヤ５０ａ，５０ｂ，５０ｃの下端はそれぞれワイヤ終端ガイド４８ａ，４８ｂ，４８ｃの下端４９ａ，４９ｂ，４９ｃに固定されている。後側に取付けられたワイヤ５０ｃの中程にはプーリ５４が配置され、プーリ５４は股関節２２のＹ軸よりも後方に位置している。ワイヤ５０ａ，５０ｂ，５０ｃの上端はそれぞれアクチュエータ５２ａ，５２ｂ，５２ｃの可動プレートに接続されている。アクチュエータ５２ａ，５２ｂのそれぞれの送りネジはそれぞれ図示しないモータによって回転するために、送りネジに螺合している可動プレートはモータの回転によって進退する。この結果、ワイヤ５０ａ，５０ｂ，５０ｃの有効長が伸長・収縮する。なお、アクチュエータ５２ａ，５２ｂ，５２ｃとそのためのモータ５６等は胴体部に配置されており、股関節２２の回りに回転する下肢の慣性モーメントを全く増加させない。
【００６５】
アクチュエータ５２ａ，５２ｂは、股関節２２のＹ軸よりも前方に位置しており、収縮すると大腿部１４を股関節２２のＹ軸の回りに前方に回転させる。ワイヤ５０ｃを案内するプーリ５４は股関節２２のＹ軸よりも後方に位置しており、アクチュエータ５２ｃが収縮すると大腿部１４を股関節２２のＹ軸の回りに後方に回転させる。なお、骨盤部２８に回転自在な円板３６はモータ３８によってＺ軸の回りに回転させられる。モータ３８は骨盤部２８に固定されている。
【００６６】
ワイヤ接続点４９ｃは股関節２２のＹ軸よりも後方に位置しており、ワイヤ５０ｃが引かれると大腿部１４は股関節２２のＹ軸回りに後方に回転する。ワイヤ接続点４９ｃは股関節２２のＸ軸上に配置されており、ワイヤ５０ｃが引かれても大腿部１４のＸ軸回りの回転には影響しない。ワイヤ接続点４９ａは股関節２２のＸ軸よりも外側に位置しており、ワイヤ５０ａが引かれると大腿部１４は股関節２２のＸ軸回りに回転して大腿部１４を開ける。ワイヤ接続点４９ｂは股関節２２のＸ軸よりも内側に位置しており、ワイヤ５０ｂが引かれると大腿部１４は股関節２２のＸ軸回りに回転して大腿部１４を閉じる。大腿部１４を閉じる場合には、ワイヤ５０ｂを引くと同時にワイヤ５０ａを緩めて大腿部１４が閉じることを許容する。同様に、大腿部１４を開ける場合には、ワイヤ５０ａを引くと同時にワイヤ５０ｂを緩めて大腿部１４が開くことを許容する。大腿部１４を股関節２２のＸ軸回りに回転させる場合にはワイヤ５０ｃを操作する必要はない。ワイヤ５０ａ，５０ｂを同時に引くと大腿部１４は股関節２２のＹ軸回りに前方に回転して大腿部１４を持ち上げる。この場合には、ワイヤ５０ｃを緩めて大腿部１４が前方に回転するのを許容する。ワイヤ５０ｃを引いて大腿部１４を後方に回転させる場合には、同時にワイヤ５０ａ，５０ｂを緩めて大腿部が下がるのを許容する。
【００６７】
以上によって股関節２２は下記のように調整される。
（１）アクチュエータ５２ｃを縮めてアクチュエータ５２ａ，５２ｂを緩めることで大腿部１４は後方に回転する。アクチュエータ５２ｃを緩めてアクチュエータ５２ａ、５２ｂを縮めることで大腿部１４が前方に回転する。大腿部１４を前方に持ち上げるには大きなトルクが必要とされるのに対し、後方に下げるには大きなトルクが要らない。大きなトルクが必要とされる側に２本のアクチュエータと２本のワイヤが利用され、小さな力しか必要とされない側に１本のアクチュエータと１本のワイヤが利用されている。
（２）アクチュエータ５２ａを縮めてアクチュエータ５２ｂを緩めることで大腿部１４が外向きに持ち上げられる。アクチュエータ５２ａを緩めてアクチュエータ５２ｂを縮めることで大腿部１４が閉じる。
３本のアクチュエータと３本のワイヤで、股関節２２のＸ軸回りの回転角（前記２の回転）と、股関節２２のＹ軸回りの回転角（前記１の回転）が独立に調整できる。
【００６８】
股関節２２の回りに大腿部１４を動かすためのアクチュエータは胴体側に配置されているために、大腿部１４を動かす際にはアクチュエータごとに動かす必要がない。股関節２２回りの慣性モーメントは小さい。このために、小さなトルクで股関節２２の回りに下肢を高速に回転させることができる。
【００６９】
図８に明瞭に示されている３本のワイヤ６６ａ，６６ｂ，６６ｃ等の中間部には、図１４、図１５に示す非線形バネ１４０が挿入されている。バネ１４０はバネ鋼で形成されており、平板部１２２と一対のフランジ１２６，１２６ともう一対のフランジ対１３０，１３０を備えている。フランジ対１２６，１２６間にはシャフト１２８が差し渡され、フランジ対１３０，１３０間にはシャフト１３２が差し渡されている。平板部１２２には、シャフト１２８，１３２と平行に伸びる峰部１２４が形成されている。ワイヤ６６は、屈曲しながら、シャフト１２８の下方、峰部１２４の上方、シャフト１３２の下方を通過している。
図１６に示されるように、ワイヤ６６が強く引かれると、バネ鋼製の平板部１２２が撓んでワイヤ６６は引き伸ばされる。
【００７０】
上記のバネ１４０がワイヤに挿入されているために、アクチュエータによってワイヤ張力を調整することができる。
図６において、アクチュエータ６８ｂの引き込み量とアクチュエータ６８ｃの引き込み量が等しく、足部１８はＸ軸回りに下腿部１６のシャフト４２に直角に調整されているとする。この状態から、アクチュエータ６８ｂとアクチュエータ６８ｃを同一速度でさらに引き込むとする。この場合、ワイヤ６６ｂとワイヤ６６ｃは同一速度で引き込まれるために、足部１８はＸ軸の回りに回転しない。しかしながら、ワイヤ６６ｂとワイヤ６６ｃが引き込まれるのに応じて、図１６に示すように、バネ１４０が変形し、ワイヤ６６ｂとワイヤ６６ｃの張力は増大する。即ち、このロボットは、２本のワイヤの一方を引いて時計方向に回転させ、他方のワイヤを引いて反時計方向に回転させる方式であるために、両方のワイヤを同時に引き込むことによって、回転角を変えないで、ワイヤ張力のみを増大させることができる。同様に、両方のワイヤを同時に緩めることによって、回転角を変えないで、ワイヤ張力のみを減少させることができる。
【００７１】
ワイヤ張力は関節回りの回転角の剛性を決定する。例えば、図６の足部１８が地面に接地する場合、両ワイヤの張力が弱くて剛性が低ければ、接地した地面が足部の左側で高くて右側で低い場合に、足部１８の右側を引き上げているワイヤが伸びて足部１８が地面の傾斜に倣って傾斜して足部１８の全体が接地する。剛性が低ければ外部事象に柔軟に追従する。
一方において、片側の足部１８が空中にある場合、その空中姿勢を調整する両ワイヤの張力が弱くて剛性が低ければ、ロボットにわずかな外力が作用することでワイヤが伸びるために空中姿勢が不安定となる。姿勢を安定させるためには、剛性が高い方が好ましい。剛性が高い状態の方が、アクチュエータの動きと関節回りの回転角が良く一致し、関節回りに高速で回転ないし動作させることができる。
【００７２】
この実施例のロボットは、２本のワイヤのうちの一方を引いて時計方向に回転させ、他方のワイヤを引いて反時計方向に回転させる方式（プルプル方式）であり、しかも、ワイヤの中間部に非線形バネを挿入しているために、ロボット姿勢とは独立に剛性を調整できる。柔軟に追従することが必要な時には低剛性とし、姿勢を安定させることが必要な時には高剛性に調整することができる。
【００７３】
プルプル方式と非線形バネとによって、関節回りの剛性を調整できる理由を、図１７、図１８を参照しながら説明する。なお、この説明では、２本のワイヤによって足部がＹ軸回りに回転する簡単な例を取り上げて説明する。図１７は、このような構成を模式的に図示したものである。図１７に示されているように、足部３０２は円筒状のプーリ３０３と一体化されている。プーリ３０３は、Ｙ軸３０３ｃの回りに回転可能に軸支されている。前方ワイヤ３０４と後方ワイヤ３０６はプーリ３０３に巻き付けられ、それぞれの一端はワイヤ接続点３０３ａ、３０３ｂでプーリ３０３に接続されている。前方ワイヤ３０４と後方ワイヤ３０６の他端は、それぞれ前方アクチュエータ３１２と後方アクチュエータ３１４に接続されている。前方アクチュエータ３１２と後方アクチュエータ３１４は、固定部材３２２、３２４に固定されている。アクチュエータ３１２、３１４は、ワイヤ３０４、３０６を引き込んだり、緩めたりする。ワイヤ３０４、３０６の途中には、前方非線形バネ３０５と後方非線形バネ３０７が装着されている。
【００７４】
図１８は、前方非線形バネ３０５と後方非線形バネ３０７のバネ特性を示すグラフである。縦軸（ｙ軸）はバネ力を示し、横軸（ｘ軸）はバネの伸び量を示している。ｙ軸の右側のカーブが後方非線形バネ３０７のバネ特性を表し、ｙ軸の左側が前方非線形バネ３０５のバネ特性を表している。図１８から明らかなように、前方非線形バネ３０５と後方非線形バネ３０７のバネ特性は、その伸びが大きくなると急にバネ力が大きくなる（カーブの傾斜が急になる）非線形性を有している。すなわちフックの法則には従わない。
図１８を用いて、足部３０２の回転軸３０３ｃ回りの剛性が調整される様子を具体的に説明する。例えば、バネ３０５、３０７の伸び量がゼロで足部３０２の角度が所定位置に調整されたときのアクチュエータ３１２、３１４の作動量からアクチュエータ３１２、３１４がさらにＡ（ｍｍ）づつ引き込まれとする。するとバネ３０５、３０７が伸び、Ｂ（ｋｇ）のバネ力が発生する（点Ｄ、点Ｆ参照）。ワイヤ張力はＢ（ｋｇ）に調整される。前方ワイヤ３０４と後方ワイヤ３０６の張力は等しいので、足部３０２は回転せず、調整された位置を保つ。この状態で足部３０２に時計方向のモーメントを加えて回転させ、後方バネ３０７がＣ（ｍｍ）伸びたとする（点Ｄ→点Ｅ）。一方、後方バネ３０７がＣ（ｍｍ）伸びると、これと等しい量（Ｃ（ｍｍ））前方バネ３０５は縮む（点Ｆ→点Ｇ）。従って、足部３０２を回転させてバネ（３０５、３０７）をＣ（ｍｍ）伸縮させるのには、点Ｅと点Ｇのバネ力の差であるＨ（ｋｇ）の力をプーリ３０３に加える必要がある。
【００７５】
アクチュエータ３１２、３１４が大きくＪ（ｍｍ）づつ引き込まれたとする（点Ｌ、点Ｍ）。このときにバネ３０５、３０７が発生するバネ力はＫ（ｋｇ）である。この場合でも、ワイヤ３０４、３０６の張力は等しいので、足部３０２は回転せずにそのままの位置を保つ。この状態で足部３０２に時計方向のモーメントが加わって、後方バネ３０７がＣ（ｍｍ）伸びたとする（点Ｌ→点Ｎ）。前方バネ３０５はＣ（ｍｍ）縮む（点Ｍ→点Ｐ）。従って、足部３０２を回転させてバネ３０７、３０５をＣ（ｍｍ）伸縮させるのには、点Ｎと点Ｐのバネ力の差であるＱ（ｋｇ）の力をプーリ３０３に加える必要がある。
【００７６】
アクチュエータ３１２、３１４がＡ（ｍｍ）引き込まれて実現された張力Ｂの状態からバネ３０７、３０５をＣ（ｍｍ）伸縮させるのに必要な力は、Ｈ（ｋｇ）である。アクチュエータ３１２、３１４がＪ（ｍｍ）引き込まれて実現された張力Ｋの状態からバネ３０７、３０５をＣ（ｍｍ）伸縮させるのに必要な力は、Ｑ（ｋｇ）である。明らかにＱ（ｋｇ）の方が、Ｈ（ｋｇ）よりも大きい。すなわち、アクチュエータ３１２、３１４を大きく引き込んで、大きな張力をワイヤ３０４、３０６に発生させているときの方が、足部３０２の剛性（足部３０２を所定角回転させるに要するＹ軸回りの回転モーメント）は高くなる。アクチュエータ３１２、３１４がワイヤ３０４、３０６を引き込む量を変化させることによって、足部３０２の剛性を調整することができる。
プルプル方式と非線形バネ組合せて用いると、関節の回転角と独立に、剛性を調整することができる。
【００７７】
図１８のバネ特性グラフの傾斜角が剛性に比例する。そこで、その傾斜角が意図した剛性に相当するバネの伸び量を求め、その伸び量を与えることで、意図した剛性に調整することができる。
ロボットの姿勢にかかわらず、回転中心からワイヤにおろした垂線の長さ、即ちモーメントの腕の長さがほぼ一定であれば、剛性から張力ないし伸び量を決定することができる。
しかしながら、回転中心からワイヤにおろした垂線の長さ、即ちモーメントの腕の長さが変化する場合には、剛性から張力を決定するまでの間にモーメントの腕の長さを考慮しなければならない。例えば、ともにワイヤ張力が１ｋｇであるとする。このとき、回転中心からその１ｋｇの張力の作用点までの長さが１０ｃｍ（ケース１）と２０ｃｍ（ケース２）とする。このとき、ケース２の方がモーメントの腕の長さが長く、モーメントも大きい。ケース２の方が、同じ張力でありながら、外力に抗して関節回転角を所定値に維持する程度は強い。剛性は、張力とモーメントの腕の長さによって決まる。
コントローラ２００は、剛性が指定されたときに、指定された剛性とそのときのモーメントの腕の長さから指定された剛性に調整するのに必要な張力を計算し、次いで、その張力に調整するのに必要なワイヤの伸びの長さを計算する。ロボットの姿勢と独立して関節回りの柔軟性を指定された剛性に調整することができる。
足首関節２６のＸ軸回りの回転角度は、アクチュエータ６８ｂによるワイヤ６６ｂの引き込み量によって決定され、ワイヤ６６ｃは冗長である。本実施例では冗長な、アクチュエータ６８ｃによるワイヤ６６ｃの引き込量を利用して、足首関節２６のＸ軸回りの回転に対する剛性を制御する。
足首関節２６のＹ軸回りの回転角度は、アクチュエータ６８ａによるワイヤ６６ａの引き込み量によって決定され、ワイヤ６６ｂとワイヤ６６ｃは冗長である。本実施例では、冗長な、アクチュエータ６８ｂによるワイヤ６６ｂの引き込み量とアクチュエータ６８ｃによるワイヤ６６ｃの引き込量を利用して、足首関節２６のＹ軸回りの回転に対する剛性を制御する。
膝関節２４の回りの回転角度は、アクチュエータ６８ａ、６８ｂ、６８ｃによって決定され、ワイヤ６６ｄは冗長である。本実施例では、冗長な、アクチュエータ６８ｄによるワイヤ６６ｄの引き込量を利用して、膝関節２４の回りの回転に対する剛性を制御する。
股関節２２のＸ軸回りの回転角度は、アクチュエータ５２ａによるワイヤ５０ａの引き込み量によって決定され、ワイヤ５０ｂは冗長である。本実施例では、冗長な、アクチュエータ５２ｂによるワイヤ５０ｂの引き込量を利用して、股関節２２のＸ軸回りの回転に対する剛性を制御する。
股関節２２のＹ軸回りの回転角度は、アクチュエータ５２ｃによるワイヤ５０ｃの引き込み量によって決定され、ワイヤ５０ａとワイヤ５０ｂは冗長である。本実施例では、冗長な、アクチュエータ５２ａによるワイヤ５０ａの引き込み量とアクチュエータ５２ｂによるワイヤ５０ｂの引き込量を利用して、股関節２２のＹ軸回りの回転に対する剛性を制御する。
【００７８】
本発明のロボットはワイヤ駆動であり、各関節にアクチュエータを実装する必要がない。アクチュエータを関節から離れた位置に実装することができるため、関節を小型化、軽量化することができ、アクチュエータの実装位置の自由度が上がる。また、本発明の場合、ワイヤ数は２軸の関節に対しては３本、３軸の関節に対しては４本、即ち、１関節に対して軸数＋１本でよい。通常であれば、関節の１自由度について２本のワイヤを必要とする。必要なワイヤ本数とアクチュエータ数が少数化するため、四肢等のスリム化や軽量化が図れる。これらのことにより、末端側部材の動きを高速化することができ、外観的にも動作的にも人間や動物に類似したロボットを実現することが可能となる。
【００７９】
アクチュエータ群は大腿部に配置されることに限られるものではない。例えば、上肢の上腕部にアクチュエータ群を配置し、個々のアクチュエータが動作して上腕に対して前腕が回転されたり、前腕に対して手部が回転されたりするように構成することができる。
上述したアクチュエータのコントローラは、関節の回転角と張力とが入力されているが、張力に代えて関節の剛性を入力するように構成してもよい。
このような構成では、コントローラは、関節の回転角から末端側部材（例えば、足部）の回転中心とワイヤの接続点との間のモーメントアームの長さを計算し、このモーメントアームの長さから関節が所望の剛性となるワイヤの張力を計算する。そして、ワイヤの張力を計算された値とするアクチュエータの作動量がアクチュエータに出力される。モーメントアームが末端側部材の回転にともなって大きく変化する構成（ワイヤ終端ガイドが存在しないような構成）においては、上記のように張力に代えて剛性をコントローラに入力し、これを計算処理することにより、関節の剛性をより正確にコントロールすることができる。
【００８０】
次に、上記の機械構成を備える２足歩行ロボットの制御装置を説明する。
図１９は、ロボットの２足歩行を制御する制御装置の構成を示し、歩行指令データ作成装置１で作成された、体幹位置ベクトルＰ（これは歩行指令データ作成装置１によってオペレータが入力したものから修正されている）と、体幹姿勢ベクトルＲと、左足先位置ベクトルＣと、左足先姿勢ベクトルＤと、右足先位置ベクトルＥと、右足先姿勢ベクトルＦを入力し、逆キネマティクス計算する計算装置３０４を備えている。ただし、体幹位置ベクトルＰについては、歩行指令データ作成装置１によって修正されるのみならず、後記する「倒立振子制御」と「ならい制御」を実施するために、さらに修正されて計算装置３０４に入力される。また、体幹姿勢ベクトルＲについても、実際の体幹姿勢ベクトルが目標体幹姿勢ベクトルに一致するように、目標体幹姿勢ベクトルを補正する処理が実施されて計算装置３０４に入力される。
【００８１】
計算装置３０４は、入力された体幹位置ベクトルＰ（これは修正されている）と、体幹姿勢ベクトルＲ（これも補正されている）と、左足先位置ベクトルＣと、左足先姿勢ベクトルＤと、右足先位置ベクトルＥと、右足先姿勢ベクトルＦに基づいて、入力した各ベクトルで記述される位置と姿勢を実現するのに必要な各関節の回転角θを計算する。回転角は、各関節を回転させるモータの回転量で計算される。図１９では、２個のアクチュエータ分しか表示されていないが、すべてのアクチュエータのモータ回転量が計算される。この計算では、逆キネマティクス演算が実施される。
各アクチュエータごとに計算された目標回転量θは、各アクチュエータのためのドライバ３０６，３１６に入力される。各ドライバは、目標回転量と実際回転量の偏差に基づいて各アクチュエータのモータ３０８，３１８に加えるトルクを調整する。実際回転量は、アクチュエータのモータ毎に設けられているエンコーダ３１０，３２０で検出される。このフィードバック制御によって、アクチュエータのモータ３０８，３１８は、実際回転量が目標回転量に一致するようにフィードバック制御される。
【００８２】
目標ＺＭＰは、倒立振子モデル３３４に入力される。倒立振子モデル３３４には、実際の体幹位置ベクトルＰも入力される。実際の体幹位置ベクトルＰは、ロボットの体幹に設けられているジャイロ３２８の信号を演算装置３３０で演算して求められる。
倒立振子モデル３３４は、目標ＺＭＰと実際の体幹位置ベクトルＰを用いて、目標ＺＭＰから体幹位置ベクトルＰに向かう傾斜線の垂直からの傾きφを計算する。計算されたφは、ＺＭＰの修正量算出装置３３６に入力される。ＺＭＰの修正量算出装置３３６は、ΔＺＭＰ＝ｋ１×φ＋ｋ２×ｄφ／ｄｔの式によって、ＺＭＰの修正量を算出する。即ち、前記した傾斜角φに比例する値と、傾斜角φの時間微分に比例する値を加算してＺＭＰの修正量を算出する。算出されたＺＭＰの修正量ΔＺＭＰは、入力された目標ＺＭＰに加算され、目標ＺＭＰはΔＺＭＰだけ修正される。以上のように、目標ＺＭＰをΔＺＭＰだけ修正する処理を、通常は倒立振子制御と称している。
人間は、歩行する場合、とくに高速で走行する場合には顕著なように、体幹を前方に傾けて走行しやすくする。体幹を前方に傾斜させることで重心を前方に移動させ、前方に移動した重心に追従するように足を前方に移動させる。倒立振子制御は、人間のこの種の制御に対応するものであり、体幹位置を前方に傾ける制御をする。
【００８３】
倒立振子モデルで修正された目標ＺＭＰ（３４０）は、実際のＺＭＰ（３２６）と比較され、その偏差（３４２）が算出される。実際のＺＭＰ（３２６）は、ロボットの足の裏に設けられている複数の力センサ３２２の出力を演算装置３２４によって演算することで演算される。偏差３４２にはゲインｋ３が乗じられて体幹位置ベクトルＰのディメンジョンに変換される。体幹位置ベクトルＰのディメンジョンに変換された偏差ΔＰは、体幹位置ベクトルＰに足し合わされる。目標ＺＭＰ（３４０）と実際ＺＭＰ（３２６）の偏差（３４２）を体幹位置ベクトルＰのディメンジョンに変換して体幹位置ベクトルＰに足し合わせる処理を、通常は「ならい制御処理」と称している。
【００８４】
ロボットが歩行する面には、体幹位置ベクトルＰと、体幹姿勢ベクトルＲと、左足先位置ベクトルＣと、左足先姿勢ベクトルＤと、右足先位置ベクトルＥと、右足先姿勢ベクトルＦと、目標ＺＭＰを決定する段階では、予期していない凹凸が存在し、ロボットの足が例えば凸を踏むことがある。これは、人間であれば蹴躓くことに相当する。人間はそのとき、膝を曲げて腰の位置を前方に送ることによって転倒しないようにする。ならい制御処理は、人間のこの種の制御に対応するものであり、体幹を前方に平行移動する制御をする。
膝を曲げて体幹を前方に平衡移動することによって転倒を防止する場合、そのままでは歩行を続けることができない。転倒を防止したあとには、膝を伸ばして通常の歩行姿勢に復帰することが必要である。倒立振子モデルは、それに相当する制御を実行する。
比喩的にいえば、ならいモデルは体の柔軟性に相当し、倒立振子モデルは歩行姿勢の維持力に相当する。
【００８５】
本実施例では、倒立振子制御系３３４で目標ＺＭＰを修正し、ならい制御系で目標ＺＭＰと実際ＺＭＰの偏差（３４２）によって目標体幹位置ベクトルＰを修正するにあたって、修正量制限装置３４６を組み込むことによって修正量を制限している。
ならい制御モデルで算出した目標体幹位置ベクトルの修正量をΔＰとする。入力された体幹位置ベクトルＰに修正量ΔＰをベクトル加算し、それによって逆キネマティクス計算装置３０４で逆キネマティクスを解いて関節角を計算すると、計算された関節角が関節の許容回転範囲を超えてしまうことがある。この場合、ロボットの機械的制約によって、図１９の制御装置が演算したならい制御を実行することができない。本実施例では、ならい制御ループで算出した目標体幹位置ベクトルの修正量ΔＰにαｎを乗じたもので体幹位置ベクトルＰを修正する。ここでαは０から１の間の数であり、ｎは後記する回数であり、ｎ＝０，１，２，３・・・と変化する。
即ち、従来のように一律にＰ＋ΔＰの式で体幹位置ベクトルＰを修正するではなく、Ｐ＋αｎ×ΔＰに従って体幹位置ベクトルＰを修正する。最初にｎ＝０で対応できれば、Ｐ＋α０×ΔＰ（＝Ｐ＋ΔＰ）で修正する。２回目のｎ＝１で対応できれば、Ｐ＋α１×ΔＰで修正する。３回目のｎ＝２で対応できれば、Ｐ＋α２×ΔＰで修正する。４回目のｎ＝３で対応できれば、Ｐ＋α３×ΔＰで修正する。
具体的処理手順は下記のものである。
（１）ならい制御モデルで算出した目標体幹位置ベクトルの修正量をΔＰとする。
（２）  最初にｎ＝０として、Ｐ＋α０×ΔＰ（＝Ｐ＋ΔＰ）で修正する。
（３）  Ｐ＋ΔＰで、逆キネマティクスを解いて関節角θを求めた結果、すべての関節で許容回転角内であれば、そこで処理を終了する。
（４）前記の（３）で、少なくとも一つの関節について、計算された関節角θが許容回転角外となれば、修正量を低下させる。
（５）そのために、ｎ＝１として、Ｐ＋α×ΔＰで修正する。αは１以下であり、修正量は低減される。
（６）  Ｐ＋α×ΔＰで、逆キネマティクスを解いて関節角θを求めた結果、すべての関節で許容回転角内であれば、そこで処理を終了する。
（７）  前記の（６）で、少なくとも一つの関節について、計算された関節角θが許容回転角外となれば、修正量を低下させる。
（５）そのために、ｎ＝２として、Ｐ＋α２×ΔＰで修正する。αは１以下であり、修正量は低減される。
以下ｎ＝３，４，５・・としながら、Ｐ＋αｎ×ΔＰで修正された体幹位置ベクトルＰを実現するすべての関節回転角θが許容回転角内となるまで、上記手順を繰り返す。
【００８６】
Ｐ＋αｎ×ΔＰと補正することから、ｎ＝０でない限り、ならい制御は不十分である。しかしながら、ロボットがならい制御を十分に効かせるだけの柔軟性を備えていなければ、ならい制御が不十分となってもやむをえない。ならい制御を十分に効かせた結果、関節回転角が限界まで回転し、限界となってもまだ回転角が不足していると転倒の恐れがある。本実施例のように、関節回転角が限界内で収まるようにならい制御の制御量を低減させるようにすると、ロボットが持つ柔軟性の範囲内でならい制御が実施され、ロボットが転倒する事態を著減することができる。
【００８７】
ならい制御は、体の柔軟性に相当する。ならい制御のためのゲインｋ３（変換装置３４４）が大きいほど、ロボットの肢体は柔軟に姿勢を変え、受けるショックを和らげる。従って、着地時等のようにショックを受ける場合には、ならい制御が強く働くことが好ましい。
反面ならい制御が常時に強く働いていると、片足立脚時に慣性力で姿勢が乱れ、着地予定でないタイミングで着地して着地ショックが大きくなることがある。ならい制御のためのゲインｋ３の値の設定には、上述した相反する要素があり、最適値に調整することが難しい。
【００８８】
本実施例では、この相反関係を解決するために、ならい制御のためのゲインｋ３の値をロボットの状態に合わせて増減する手法を取り入れた。
図２０の（Ａ）は、歩行パターンの変化等に合わせてならい制御のためのゲインｋ３を変化させる例を示し、片足接地状態から両足接地状態に切り替わる前後において、ならい制御のためのゲインｋ３を増大させ、その他のときには低く維持する。この場合、着地ショックを受ける前後ではならい制御がよく効くためにロボットの肢体は柔軟に対応して着地ショックを和らげる。その他のときには、ならい制御のためのゲインｋ３は小さく、姿勢維持力が高く保たれる。片足立脚時に慣性力で姿勢が乱れることがなく、着地予定でないタイミングで着地するために着地ショックが大きくなることもない。ならい制御のためのゲインｋ３は、歩行指令データ作成装置１で作成される６個のベクトルの時系列変化に合わせて増減させることができる。
【００８９】
図２０の（Ｂ）は、左足裏に設置されている力センサが受ける力を示し、（Ｃ）は、右足裏に設置されている力センサが受ける力を示し、（Ｄ）は、両センサの受ける力の合計を示している。着地時には、強い慣性力が働くために、合計した力は着地時に大きい。合計した力とならい制御のためのゲインｋ３を比例させれば、着地ショックを受けるときにならい制御のためのゲインｋ３を大きくし、その他のときには低く維持することができる。図１９の力センサ３２２の信号を演算する装置３２４から、変換装置３４４に伸びる処理３６０は、力センサ３２２が受ける力の合計力に、ならい制御のためのゲインｋ３を比例させる処理を示している。
なお、ならい制御を強く働かせる場合に、倒立振子モデルのゲインｋ１、ｋ２を同時に増大させてもよいが、ならい制御のためのゲインｋ３のみを大きくしてもよい。
【００９０】
倒立振子モデルでは、目標ＺＭＰから体幹位置ベクトルＰに向かう傾斜線の垂直からの傾きφを計算する（図１９の３３４参照）。計算されたφは、ＺＭＰの修正量算出装置３３６に入力され、ΔＺＭＰ＝ｋ１×φ＋ｋ２×ｄφ／ｄｔの式によって、ＺＭＰの修正量ΔＺＭＰを算出する。ロボットが円滑に歩行するには、ゲインｋ１とｋ２の値を適当な値に調整する必要がある。さらには、ならい制御のためのゲインｋ３も適当な値に調整する必要がある。
ゲインｋ１、ｋ２、ｋ３の値を歩行制御に適当な値に調整しておくと、ロボットが歩行しないで静止しているあいだにも、ロボットが体幹を前方に傾けてからそれを修正する動作を繰り返すことが生じる。ここではそれを自励振動という。自励振動が生じると、ロボットの動力が無駄に消費されて不都合である。
これを解消するために、ロボットが歩行しないで静止している間は、ＺＭＰの修正量ΔＺＭＰを算出するｋ１×φ＋ｋ２×ｄφ／ｄｔの式に用いるゲインｋ１、ｋ２の値を、歩行時に適当な値よりも下げることが有効であることがわかった。この場合、ならい制御のためのゲインｋ３も同時にさげてもよいが、ゲインｋ１、ｋ２の値を下げれば、ならい制御のためのゲインｋ３は下げないでもすむ。ロボットが歩行しないで静止している間に、ゲインｋ１、ｋ２（さらにはゲインｋ３）の値を下げても、ロボットは直立しつづけることが確認されている。自励振動に無駄に動力が消費されることがない。
図１９では、力センサ３２２の信号を演算する装置３２４によって、ロボットが静止しているか歩行しているかを判別し、その結果によってゲインｋ１、ｋ２を切替えることを図示している。
【００９１】
この実施例のロボットは、２本のワイヤのうちの一方を引いて時計方向に回転させ、他方のワイヤを引いて反時計方向に回転させる方式（プルプル方式）であり、ワイヤの中間部に非線形バネを挿入しているために、ロボット姿勢とは独立に剛性を調整できる。この特性を活用し、歩行時に剛性を変化させながら歩行するのが有効である。
着地中には、予期しない凹凸を踏んでいることがあり、下肢が柔軟な方が予期しない凹凸の影響を受けにくい。剛性を高めて指示された姿勢に忠実に制御すると、予期しない凹凸の影響を吸収できないためにロボットがスリップしたり転倒したりする恐れがある。
そこで、本実施例では、歩行パターンの進行に合わせて剛性を変化させる。ここでは、左右の下肢の剛性を別々に変化させる。
図２１（Ａ）は、歩行パターンと左右の下肢の剛性の変化パターンを示し、左右の下肢とも、接地中は剛性が低く維持されて、空中移動している間は高く保たれる。左足接地状態から両足接地状態に移行する直前タイミングで右下肢の剛性が下げられ、右足接地状態から両足接地状態に移行する直前タイミングで左下肢の剛性が下げられる。左下肢の剛性と右下肢の剛性は別々に制御される。接地中の下肢の剛性が低いために、予期しない凹凸を踏んでいても、接地した下肢が柔軟に対応して凹凸の影響を吸収する。一方、空中にある足の剛性は高く維持され、姿勢維持力が高く保たれる。片足立脚時に慣性力で姿勢が乱れることがない。
剛性の変化パターンには、図２１の（Ａ）〜（Ｃ）に例示する種々のバリエーションが存在する。
（Ａ）  左下肢の剛性を、左足接地状態と両足接地状態の間は低め、右足接地状態の間は高める。右下肢の剛性を、右足接地状態と両足接地状態の間は低め、左足接地状態の間は高める。
（Ｂ、Ｃ）  左下肢の剛性を、右足接地状態から両足接地状態に移行する直前タイミングで下げ、次の右足接地状態までの間に高める。右下肢の剛性を、左足接地状態から両足接地状態に移行する直前タイミングで下げ、次の左足接地状態までの間に高める。
（Ｂ）  下肢の剛性を連続的に上昇させる。
（Ｃ）  下肢の剛性を階段状に上昇させる。
いずれの変化パターンによっても、接地した下肢が柔軟に対応して凹凸の影響を吸収する一方、空中にある足の剛性は高く維持され、姿勢維持力が高く保たれる。
【００９２】
以下では、図１９の制御装置によって、経時的に変化する目標回転角と、経時的に変化する剛性に関する指示値に追従するようにアクチュエータを制御する技術を説明する。以下では、アクチュエータ６８ｂと６８ｃによって、足首関節２６のＸ軸回りの回転角と剛性を、指示された回転角と剛性に追従するように制御する例について説明する。
【００９３】
（第１の制御技術）
図２２は、足首関節２６をワイヤ６６ｂによってＸ軸回りに外向きに回転させるアクチュエータ６８ｂのためのコントローラ２００ｂの制御ブロック図と、ワイヤ６６ｃによって内向きに回転させるアクチュエータ６８ｃのためのコントローラ２００ｃの制御ブロック図を示す。これは、図１９のドライバ３０６と３１６の詳細に対応する。この場合、逆キネマティクス計算装置３０４は、関節の回転に対する剛性も指示する。剛性の指示値は、経時的に変化する。
最初にコントローラ２００ｂについて説明する。第１変換機２ｂは、足首関節２６の回転角の指示値Ｐ１から、その回転角の指示値Ｐ１を実現するのに必要なモータ１１４ｂの回転角Ｐ２に変換する。ここでは、バネ１４０が伸びないものとして計算する。計算された回転角Ｐ２は、モータ１１４ｂの実際の回転角Ｐ７と比較されて偏差Ｐ３が求められる。モータ１１４ｂの実際の回転角Ｐ７は、モータ１１４ｂに内蔵されているエンコーダ１１５ｂから得られる。第２変換機４ｂは、回転角偏差Ｐ３をモータ１１４ｂの回転速度Ｐ４に変換する。ここでは、偏差Ｐ３が大きいほど大きな回転速度Ｐ４に変換する。偏差Ｐ３がゼロであれば回転速度Ｐ４もゼロである。第３変換機６ｂは、モータ１１４ｂの回転速度Ｐ４をモータ１１４ｂに加えるトルクＰ５に変換する。モータ１１４ｂは、通電する電流値と発生するトルクが比例する特性を備えている。モータ１１４ｂに加えるトルクＰ５は電流の単位で指令される。電流の単位で指令されるトルクＰ５は、指示された回転角と実際の回転角との偏差に基づいてアクチュエータのトルクをフィードバック制御するトルクの増減値に相当し、指示された回転角に対して不十分なアクチュエータのトルクを増大させ、指示された回転角に対して過大なアクチュエータのトルクを減少させる。これによって、実際の回転角が指示された回転角にフィードバック制御される。
剛性の指示値Ｑ１は、第４変換機１０ｂに入力される。第４変換機１０ｂは、回転角の指示値Ｐ１からワイヤ６６ｂの張力が足首関節２６の回りのモーメントを発生させる腕の長さを計算し、剛性の指示値Ｑ１とモーメントの腕の長さから指示された剛性Ｑ１に調整するのに必要なワイヤ張力Ｑ２を計算する。ここでは図１８に示したバネ特性が参照され、バネ定数とモーメントの腕の長さから、指示された剛性Ｑ１に調整できるバネ特性を実現するワイヤ張力Ｑ２に変換する。第５変換機１２ｂは、張力Ｑ２をモータトルクＱ３に変換する。この変換には、図９のアクチュエータの特性式が利用される。モータのトルクの全部がワイヤ張力に反映されるわけでない。モータトルクの一部は、アクチュエータ等の摩擦や慣性に費やされる。第６変換機１４ｂは、必要なワイヤ張力を発生するモータトルクＱ３に摩擦や慣性に費やされる分を補償して実際に必要とされるモータトルクＱ４を算出する。
摩擦や慣性に費やされる分を補償したモータトルクＱ４は、回転角のフィードバック制御によって算出されたモータトルクの増減値Ｐ５に加算される。最終的には、加算されたモータトルクＰ６が指令される。実際には、モータ１１４ｂのトルクは通電電流に比例するので、モータ１１４ｂに、加算されたトルクＰ６に比例する電流を通電する。
【００９４】
コントローラ２００ｃについても、制御ブロックは同一であり、重複説明はしない。この場合、アクチュエータ６８ｂとアクチュエータ６８ｃは左右対称のために、Ｐ２とＱ２とＱ３は、コントローラ２００ｂと２００ｃとで、異符号で同じ値を持つ。ただし、慣性項と摩擦項は左右対称にならないので、Ｑ４の値は等しくならない。
【００９５】
この制御ブロックによると、指示された剛性に調整するのに必要なモータトルクＱ４が加算される。このために、足首関節２６のＸ軸回りの剛性は、指示された剛性Ｑ１に制御される。指示された剛性Ｑ１に調整するためのモータトルクＱ３（ここではワイヤ張力となるモータトルク）は、アクチュエータ６８ｂとアクチュエータ６８ｃによるものとがバランスし、足首関節２６のＸ軸回りの回転角に影響しない。足首関節２６のＸ軸回りの回転角は、剛性に調整するためのモータトルクと無関係に、指示された回転角Ｐ１にフィードバック制御される。
図２２の制御ブロックによると、回転角Ｐ１と剛性Ｑ１が独立に指示されても、指示された回転角Ｐ１と剛性Ｑ１に制御することができる。
上記した事象は、回転角と剛性の指示値Ｐ１、Ｑ１が時々刻々に変化する動作中常に得られ、経時的に変化する指示値Ｐ１、Ｑ１に常に追従させることができる。
剛性の指示値Ｑ１を歩行の状態に応じて経時的に変化させるには、歩行指令データの経時的変化に対応させてもよいし、ロボットの足の裏に接地されている力センサ３２２の出力に基づいて変化させてもよい。図１９の場合、力センサ３２２が検知する力によって、モータドライバ３０６、３１６に指示する剛性の値を変化させる。
【００９６】
（第２の制御技術）
図２３は、第２の制御技術に係わるコントローラ２００ｂとコントローラ２００ｃの制御ブロック図を示す。図１９のドライバ３０６と３１６に対応する。この場合、逆キネマティクス演算回路３０４は、関節の回転角を調整するアクチュエータについては目標回転角を演算し、関節の回転角を調整するには冗長なアクチュエータについては目標剛性値を演算する。この場合、モータ１１４ｂは関節の回転角を調整するアクチュエータであり、モータ１１４ｃは関節の回転角を調整するには冗長なアクチュエータであり、剛性を調整する。
この場合、コントローラ２００ｂは、回転角の指示値Ｐ１に基づいてモータ１１４ｂの回転角をフィードバック制御し、コントローラ２００ｃは、剛性の指示値に基づいてモータ１１４ｃのトルクをフィードバック制御する。モータ１１４ｃの実際のトルクＱ６は、モータ１１４ｃに通電する電流を測定する電流計１１５ｃで測定される。モータは１１４ｂ、１１４ｃは、電流値とトルクが比例する特性をもっている。
モータ１１４ｂの回転角のフィードバック制御のための制御ブロック図は、図２２とほぼ同様であり、モータ１１４ｃのトルクのフィードバック制御のための制御ブロック図も図２２とほぼ同様であり、重複説明はしない。
この制御技術によると、指示された剛性Ｑ１に調整するために必要なトルクがモータ１１４ｃから加えられる。このトルクが働いた状態で、モータ１１４ｂは、指示された回転角Ｐ１に調整するのに必要なだけ回転される。このとき、結果的には、モータ１１４ｂのトルクも、指示された剛性Ｑ１に調整するのに必要なトルクに調整され、モータ１１４ｃの回転角も、指示された回転角Ｐ１に調整するのに必要な回転角に調整される。
図２３の制御技術は、回転角という１の自由度に対して、２個のモータを利用するという冗長性を利用して、回転角と剛性を独立に制御するものであり、ヒトに類似している。ヒトも、関節の自由度からみると冗長な数の筋肉を利用して関節の回りに回転させる。その冗長性を利用して剛性を調整している。
図２３の制御ブロックによると、回転角と剛性が独立に指示されたときに、指示された回転角と剛性に制御することができる。
【００９７】
図２２，２３の技術を用いると、歩行パターンに合わせて剛性を変化させることができ、姿勢を柔軟に変える必要があるときには柔軟にでき、姿勢を維持する必要があるときには剛性を上げて姿勢を維持することができる。本実施例では、図２１で説明したように、接地した足の剛性を低くし、宙に浮いている足の剛性を高く調整しながら歩行する。
【００９８】
本実施例では、歩行パターンにあわせて、ならい制御のためのゲインｋ３と、下肢の剛性を変化させる。ゲインの変化と剛性の変化のいずれか一方のみを用いても有用であるが、組合わせて用いることが有効であり、組合わせて用いると、ならい制御と剛性の変化の相乗作用によって、ロボットの挙動を柔軟で安定したものとできる。
【００９９】
図５に示した歩行指令データ作成装置１を用いて歩行指令データを作成する場合、通常は体幹姿勢については体幹姿勢ベクトルＲのみを指定する。確かに、体幹姿勢ベクトルＲを指定すれば、ロボットは円滑に歩行することができる。
ただしより高速で歩行する場合、体幹を捩って歩行することが有利であり、体幹ベクトルの他に、体幹の捩れに関する姿勢も入力するのが有利である。
【０１００】
図２４（Ａ）は、従来のティーチング技術による場合の歩行姿勢を示し、体幹は前方に傾くことがあっても、捩れることはない。そもそも体幹の捩れを指定するベクトルが教示されていない。
図２４（Ｂ）は、体幹の左右対称軸線の方向を示す体幹ベクトルＲに加えて、体幹の左右を結ぶ線の方向を示す体幹捩れベクトルＱを教示することによって得られる歩行姿勢を示している。足の動きに連動して体幹を捩じると、体幹に対する足の動作速度が同じでも一歩の歩幅を伸ばすことができ、ロボットは高速で歩行することが可能となる。
図２４（Ｃ）は、体幹捩れベクトルＱの教示例を示し、平面視している。（１）は左右の足が揃っている状態を示し、（２）は左足を踏み出した状態を示し、（３）は左足をさらに大きく踏み出した状態を示し、（４）は右足を踏み出した状態を示している。
左足先位置ベクトルＣと右足先位置ベクトルＥが教示されているために、左右の足の中心同士を結ぶ線Ｌが進行方向Ｘに直交する線Ｙとなす角度θがわかる。そこで、体幹の左右を結ぶ体幹捩れベクトルＱを、体幹捩れベクトルＱと進行方向Ｘに直交する線Ｙとなす角度がαθとなるように教示する。ここではαを５０％とする。体幹捩れベクトルＱとＹ軸のなす角度が、左右の足の中心同士を結ぶ線ＬがＹ軸となす角度θの５０％となるような体幹捩れベクトルＱをロボットにティーチングするのである。なお前記の比率は５０％に限定されるものでなく、その前後の幅を有している。比率があまりに小さいと体幹を捩る意味がなく、比率があまりに大きいと体幹に捩るのに大きなエネルギーが費やされることになるので、３０〜６０％くらいの範囲が好ましい。図２４（Ｃ）の（１）から（４）に示すように、比率αを一定に維持してもよいが、一歩のストロークの中で比率αを変化させてもよい。
左右の足の動きに連動して捩じる体幹ベクトルＱを教示すると、同じ能力のロボットの歩幅を広げることができ、高速歩行させることができる。
体幹捩じれベクトルＱを指定する代わりに、左右の足の中心同士を結ぶ線ＬがＹ軸となす角度から体幹捩じれベクトルＱを計算して求めるようにしてもよい。
図２５に示すように、ロボットの上半身２５０を腰部（下胴部）２５４と胸部（上胴部）２５２に分離し、両者が人間の背骨に相当する部材を中心にして相対回転可能に構成することができる。この場合、左右の足の基部である腰部２５４を捩じりながら歩行し、胸部２５２については常時進行方向に向けておくことができる。このようにしても、体幹（腰部）に対する足の動作速度を同じにしながら歩幅を伸ばすことができる。図２６の平面図に示すように、体幹２５４を捩じることによって歩幅を距離Ｄだけ大きくすることができる。この場合、胸部２５２は安定しており、ロボットの歩行姿勢は安定したものとなる。また歩幅が伸びることからロボットが高速で歩行することが可能となる
左右の足の踏跡が一直線２５６上にあると、歩行姿勢が美しいだけでなく、狭い通路を通過することが可能となる。図２７は、体幹を捩じらないで条件で、左右の足を直線２５６上において歩行する場合の平面図を示し、体幹に対して左右の足を水平面内で角度αだけスイングしなければならない。図２８は、体幹を捩じりながら左右の足を直線２５６上において歩行する場合の平面図を示し、体幹に対して左右の足を水平面内で角度βだけスイングすればたりる。明らかに、体幹を捩じりながら歩行すると、左右の足を直線２５６上において歩行するのに必要なスイング角度が小さく抑えられ、ロボットは無理なく直線上を歩行できることになる。左右の足の足跡が厳密な意味では直線上になく、２本の平行な直線上にある場合でも、その２本の直線間距離が小さいと、ロボットの歩行姿勢がきれいで安定感のあるものとなる。体幹を捩じると、２本の直線間の距離を小さくしやすく、体幹を捩じることによって歩行姿勢をきれいで安定感のあるもにしやすい。
【０１０１】
図１９の制御装置では、体幹姿勢ベクトルＲを入力し、逆キネマティクス演算し、入力された体幹姿勢ベクトルＲに制御するために必要な関節角を演算し、そうして得られた関節角を目標関節角としてフィードバック制御するため、実際の体幹ベクトルＲは、指示された体幹ベクトルＲ、即ち、歩行指令データ作成装置１（図５）で得られた体幹ベクトルＲに一致するはずである。しかしながら、ロボットにジャイロを取付けて実際の体幹ベクトルを測定すると一致しないことが判明した。これは、関節のガタや部材の撓み等に起因するものと推測される。
目標体幹姿勢ベクトルと実際体幹姿勢ベクトルが一致しなければ、意図する体幹姿勢をロボットにとらせることができない。
本実施例では、図５の歩行指令データ作成装置１で作成された体幹姿勢ベクトルＲ（ここには、オペレータがロボットにとらせたい姿勢が記述されている）をそのままロボットに教示せず（そのまま教示すると、目標体幹姿勢ベクトルと実際体幹姿勢ベクトルが一致しなので、実際体幹姿勢ベクトルを意図したものにすることができない）、目標体幹姿勢ベクトルと実際体幹姿勢ベクトルが一致しないことを見越し、目標体幹姿勢ベクトルを人為的に補正し、補正された目標体幹姿勢ベクトルと実際体幹姿勢ベクトルが一致しないために、結果として目標体幹姿勢ベクトルと実際体幹姿勢ベクトルを一致させる手法を採用している。
【０１０２】
（１）  具体的は、最初に、歩行指令データ作成装置１で作成された体幹姿勢ベクトルＲをロボットにティーチングする。ティーチングされたロボットを動作させて実際の体幹姿勢ベクトルＲを検出する。
以下では、目標体幹姿勢ベクトルをＲ１とし、実際体幹姿勢ベクトルをＲ２とする。実際体幹姿勢ベクトルをＲ２はジャイロ３２８の出力を演算する装置３３０で演算される。
（２）  目標の体幹姿勢ベクトルＲ１と実際の体幹姿勢ベクトルＲ２のずれベクトルΔＲを計算する（図１９の装置３５０）。ずれベクトルΔＲは、Ｒ１・Ｒ２−１で計算できる。
（３）  そこで、目標体幹姿勢ベクトルをＲ１の方を、ずれベクトルΔＲを見越して補正する。補正された目標体幹姿勢ベクトルをＲ１＊とすると、Ｒ１＊＝Ｒ１・ΔＲで計算される。
（４）ロボットは、補正された目標体幹姿勢ベクトルＲ１＊を目標として動作する。ロボットによって実現される実際体幹姿勢ベクトルはＲ１＊とならない。それからはずれる。はずれた結果、目標体幹姿勢ベクトルＲ１に一致する。補正された目標体幹姿勢ベクトルＲ１＊は、オペレータと意図する体幹姿勢ベクトルＲ１にずれベクトルΔＲを見越して補正されているからである。
（５）  補正された目標体幹姿勢ベクトルをＲ１＊を計算する際に、まず、
Ｙ＝α・ΔＲ＋（１−α）・Ｉを計算し、ついで、Ｒ１＊＝Ｒ１・Ｙで計算してもよい。図１９の補正装置３５２は、この処理を実行する。ここで、αは１以下の正の値であり、Ｉは単位ベクトルである。
この場合、ずれベクトルΔＲのα％だけを見越して目標体幹姿勢ベクトルＲ１を補正することに相当する。
目標体幹姿勢ベクトルの補正処理は、種々の段階で実施できる。ずれベクトルΔＲが判明した段階で、歩行指令データ作成装置１で作成された体幹姿勢ベクトルＲを補正し、補正された目標体幹姿勢ベクトルをロボットに教示してもよい。この場合、ロボットの制御装置には、目標体幹姿勢ベクトルを補正するための装置３５０，３５２は要らない。それに代わって、ずれベクトルΔＲで補正する前の目標体幹姿勢ベクトルをロボットに教示し、ロボットの動作中に次々とずれベクトルΔＲを算出し、ずれベクトルΔＲが算出されとき以降の目標体幹姿勢ベクトルをずれベクトルΔＲで補正するようにしてもよい。
【０１０３】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。
本明細書または図面に説明した技術要素は、単独であるいは各種の組み合わせによって技術的有用性を発揮するものであり、出願時請求項記載の組み合わせに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【図面の簡単な説明】
【図１】目標ＺＭＰが移動する様子を説明する図。
【図２】シャープに変化する目標ＺＭＰをスムーズにした各種のカーブを例示する図。
【図３】目標ＺＭＰが移動する他の例を説明する図。
【図４】目標ＺＭＰのデータを出力する速度が可変であることを説明する図。
【図５】歩行指令データ作成装置の構成を示す図。
【図６】本実施例のロボットの両下肢の正面図。
【図７】同ロボットの左下肢の側面図。
【図８】同ロボットの足首関節の構造を説明するための図。
【図９】同ロボットのアクチュエータの詳細を説明する図。
【図１０】同ロボットの足部の動きを説明する図。
【図１１】同ロボットの足部の動きを説明する図。
【図１２】同ロボットの足部の動きを説明する図。
【図１３】同ロボットの足部の動きを説明する図。
【図１４】ワイヤの組込まれている非線形バネの正面図。
【図１５】ワイヤの組込まれている非線形バネの側面図。
【図１６】ワイヤテンションによって非線形バネが変形する様子を示す図。
【図１７】同ロボットの関節回りの剛性を説明する図。
【図１８】非線形ばね特性と関節回りの剛性を説明するグラフ。
【図１９】制御装置の構成を示す制御ブロック図。
【図２０】歩行パターンに追従してならい制御のためのゲインを増減するパターンを示す図。
【図２１】歩行パターンに追従して下肢の剛性を増減するパターンを示す図。
【図２２】関節回転角と剛性を独立に制御する第１の制御ブロック図。
【図２３】関節回転角と剛性を独立に制御する第２の制御ブロック図。
【図２４】体幹捩じれベクトルの教示方法と教示結果を模式的に示す図。
【図２５】上半身が腰部（下胴部）と胸部（上胴部）に分割されたロボットが体幹を捩じりながら歩行する姿勢を示す。
【図２６】体幹を捩じることで歩幅が広がることを示す平面図。
【図２７】体幹を捩じらないで直線上を歩行するのに必要な足の水平面内のスイング角を示す。
【図２８】体幹を捩じりながら直線上を歩行するのに必要な足の水平面内のスイング角を示す。
【図２９】６質点系モデルで歩容データを作成する装置のシステム構成を示す図。
【図３０】６質点系モデルを概念的に示す図。
【図３１】１２関節１３リンクモデルで歩容データを作成する装置のシステム構成を示す図。
【図３２】１２関節１３リンクモデルを概念的に示す図。
【図３３】６質点系モデルで作成した歩容データと、１２関節１３リンクモデルで作成した歩容データから計算されるＺＭＰを目標ＺＭＰに対比して示す図。
【符号の説明】
１：歩行指令データ作成装置
２：ＺＭＰ演算部
３：比較部
４：体幹位置ベクトル修正部
５：完成した歩行指令データ
１０：ロボット
１２：下肢部
１４：大腿部
１６：下腿部
１８：足部
２０：胴体部
２２：股関節
２４：膝関節
２６：足首関節
２８：骨盤部
３０：シャフト
３２：ユニバーサルジョイント
３４：ベアリング
３６：円板
３８：モータ
４０：フランジ
４２：シャフト
４４：フランジ
４６：軸
４８ａ，４８ｂ，４８ｃ：ワイヤ終端ガイド
４９ａ，４９ｂ，４９ｃ：ワイヤ接続点
５０ａ，５０ｂ，５０ｃ：ワイヤ
５２ａ，５２ｂ，５２ｃ：アクチュエータ
５４：プーリ
５６：アクチュエータ
５８：フランジ
６０：フランジ
６２：十字型自在継手
６４ａ，６４ｂ，６４ｃ，６４ｄ：プーリ
６６ａ，６６ｂ，６６ｃ，６６ｄ：ワイヤ
６８ａ，６８ｂ，６８ｃ，６８ｄ：アクチュエータ（ボールネジ）
１０２：フランジ
１０４：可動プレート
１０６：フランジ
１０８：案内ロッド
１１０：案内ロッド
１１２：案内ロッド
１１４：モータ
１１６：ギヤ
１１８：ギヤ
１２０：送りネジ
１２２：平板部
１２４：峰部
１２６：フランジ
１２８：シャフト
１３０：フランジ
１３２：シャフト
３０４：逆キネマティクス計算部
３３４：倒立振子モデル
ｋ１、ｋ２、ｋ３：ゲイン
３２２：力センサ
３２８：ジャイロ
３５０：ずれベクトル演算部
３５２：目標体幹姿勢ベクトル補正ベクトル演算装置
【図１】
2004237403.tif 000003
【図２】
2004237403.tif 000004
【図３】
2004237403.tif 000005
【図４】
2004237403.tif 000006
【図５】
2004237403.tif 000007
【図６】
2004237403.tif 000008
【図７】
2004237403.tif 000009
【図８】
2004237403.tif 000010
【図９】
2004237403.tif 000011
【図１０】
2004237403.tif 000012
【図１１】
2004237403.tif 000013
【図１２】
2004237403.tif 000014
【図１３】
2004237403.tif 000015
【図１４】
2004237403.tif 000016
【図１５】
2004237403.tif 000017
【図１６】
2004237403.tif 000018
【図１７】
2004237403.tif 000019
【図１８】
2004237403.tif 000020
【図１９】
2004237403.tif 000021
【図２０】
2004237403.tif 000022
【図２１】
2004237403.tif 000023
【図２２】
2004237403.tif 000024
【図２３】
2004237403.tif 000025
【図２４】
2004237403.tif 000026
【図２５】
2004237403.tif 000027
【図２６】
2004237403.tif 000028
【図２７】
2004237403.tif 000029
【図２８】
2004237403.tif 000030
【図２９】
2004237403.tif 000031
【図３０】
2004237403.tif 000032
【図３１】
2004237403.tif 000033
【図３２】
2004237403.tif 000034
【図３３】
2004237403.tif 000035