(57)【要約】【課題】  フィードバック補償を追加して制御ロジックを複雑にすることなく、当初作成された歩容データに対して補正量を設定することにより、歩容データ上で遊脚となるべき脚が床に接触することなくロボットを歩行させることのできる技術を提供する。【解決手段】  ロボットの撓みを考慮しない当初の歩容データによってロボットを実際に歩行させる。このとき当初歩容データ上で遊脚となるはずの脚の足平が床に接触した場合、その時点を当初歩容データ上で特定する。少なくともその時点で足平が床から離れる方向に当初歩容データの補正量を設定する。このときロボットに生じる撓み量を計算する必要はない。このように当初歩容データの補正量を設定してロボットを制御することで、当初歩容データに近く、かつフィードバック補償なしに、当初歩容データ上では遊脚となるはずの脚が床に接触することなくロボットを歩行制御することができる。【選択図】  図３
2007007794.tif 000002
【特許請求の範囲】
【請求項１】
ロボットの歩行に用いる歩容データを完成する方法であり、
ロボットの代表点の目標位置を経時的に記述する当初歩容データを用いてロボットを実際に歩行させる工程と、
当初歩容データ上では遊脚であるはずの足平が床に接触した時点を特定する工程と、
少なくとも前記特定された時点における当初歩容データを、遊脚であるはずの足平が床から離れる方向に補正する工程と、
を含むことを特徴とする歩容データ完成方法。
【請求項２】
前記特定された時点に先立つ所定期間内の当初歩容データを、補正量が漸増するように補正する工程と、
前記特定された時点に続く所定期間内の当初歩容データを、補正量が漸減するように補正する工程と、
を含むことを特徴とする請求項１の歩容データ完成方法。
【請求項３】
前記補正工程では、足首関節の周りに足平を上方に所定角だけ回転させた目標位置と目標姿勢に補正することを特徴とする請求項１又は２の歩容データ完成方法。
【請求項４】
前記補正工程では、体幹目標位置をロボットの体側方向の接地脚側に所定距離だけ移動した目標位置に補正することを特徴とする請求項１又は２の歩容データ完成方法。
【請求項５】
補正された歩容データを用いてロボットを実際に歩行させる工程と、
補正された歩容データ上では遊脚であるはずの足平が床に接触した時点を特定する工程と、
少なくとも前記特定された時点における補正された歩容データを、遊脚であるはずの足平が床から離れる方向にさらに補正する工程と、
を含むことを特徴とする請求項１から４のいずれかの歩容データ完成方法。
【請求項６】
前記補正工程では、補正前の歩容データを補正後の歩容データに置換することを特徴とする請求項１から５のいずれかの歩容データ完成方法。
【請求項７】
前記補正工程では、補正前の歩容データに補正量を対応付けて記憶することを特徴とする請求項１から５のいずれかの歩容データ完成方法。
【請求項８】
脚式ロボットの歩行制御方法であり、
補正前の歩容データとその歩容データに対応する補正量をロボットに教示する工程と、
補正前の歩容データをそれに対応する補正量で補正した歩容データから関節角を演算する工程と、
を含むことを特徴とする歩行制御方法。
【請求項９】
脚式ロボットの歩行制御装置であり、
ロボットの代表点の目標位置を経時的に記述する当初歩容データを記憶する装置と、
記憶装置が記憶している当初歩容データを用いてロボットを実際に歩行させる手段と、
記憶装置が記憶している当初歩容データ上では遊脚であるはずの足平が床に接触した時点を特定する手段と、
記憶装置が記憶している当初歩容データであって、少なくとも前記特定された時点における当初歩容データを、遊脚であるはずの足平が床から離れる方向に補正する手段と、
を有することを特徴とする歩行制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、体幹（胴部）に複数本（典型的には２本）の脚リンクが揺動可能に連結されている機械（脚式ロボット）を制御する技術に関する。詳しくは、歩容データ上では遊脚となっているはずの脚が床に接触してしまうことを回避するように歩容データを補正することによって歩容データを完成する方法と、補正された歩容データを用いてロボットが歩行するように制御する方法と、そのための装置に関する。
【背景技術】
【０００２】
体幹と脚リンク群の相対的姿勢を変化させることによって歩行する脚式ロボット（以下単にロボットと称す）が開発されている。ロボットは、歩容データを用いて歩行する。
歩容データは、ロボットの姿勢を決定する代表点の一つである足平の位置の経時的変化を記述する足平目標位置データと、代表点の他の一つである体幹の位置の経時的変化を記述する体幹目標位置データ等から構成されている。体幹目標位置データは、ロボットのダイナミクスを考慮に入れたうえで、足平位置の経時的変化に追従して歩行しつづけることを可能とする関係に計算されている。なお、足平とは脚リンク群の先端に連結されているリンク部品をいう。
【０００３】
軽量化のためにロボットの剛性は低くならざるを得ない。特に、いずれかの脚が遊脚（床から離れた脚を遊脚と称する）となるとロボットは撓みやすく、ロボットに生じる撓みによって、ロボットは歩容データが記述する姿勢よりも遊脚側に傾きやすい。ここでいうロボットの撓みは、リンク自体が撓むことと関節角が撓むことの一方または双方をいう。
今、遊脚に「離床／前方への移動／着床」という一連の動作を実行させる歩容データを作成したとする。この歩容データに基づいてロボットを制御すると、剛性不足からロボットは歩容データが記述する姿勢よりも遊脚側に傾いてしまう場合がある。この結果、歩容データ上では遊脚となっているはずの足平が床に接触してしまう可能性がある。遊脚となっているはずの足平が床に接触してしまうと、脚を引きずって歩くような格好となり、見た目がぎこちない歩行となってしまう。
【０００４】
例えば図９（Ａ）に示すロボット１００の正面図と、図９（Ｂ）に示すロボット１００の側面図に破線で示すように、ある時点における歩容データでは脚２００が遊脚となるように設定されているとする。ロボット１００の剛性が低い場合には、図９（Ａ）、（Ｂ）の実線で示すように、ロボット１００は歩容データが記述する姿勢以上に傾いてしまう。この結果、歩容データ上では遊脚であるはずの脚２００の先端が、図９（Ａ）、（Ｂ）に符号２０２で示すように実際には床と接触してしまう可能性がある。
【０００５】
この問題に対処するために、特許文献１に、各関節に作用するモーメントと、そのモーメントによる関節角の変形量を求め、求めた変形量を補償する技術が提案されている。この技術によると、見かけ上の剛性を高めることができ、ロボットは歩容データが記述する姿勢をとる。
【０００６】
【特許文献１】特開平６−６３８８１号公報（請求項１及び段落０００１）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
特許文献１の技術では、関節に作用するモーメントによる関節角の変形量を演算する必要があり、計算量が膨大となる。より簡単に、遊脚が予定外に接地することを防止することができる歩容データを完成する技術が必要とされている。
【課題を解決するための手段】
【０００８】
本発明では、撓みの影響を反映していない歩容データから撓みの影響を反映した歩容データに補正することによって、歩容データを完成する。前記したように、撓みの影響を反映するためには、通常は膨大な計算量を必要とする。
本発明では、歩容データの全部に対して撓みの影響を反映する必要はなく、撓みの影響が実際上の意味を持つときに限って反映することにする。すなわち撓みの影響によって予定外に遊脚が接地してしまう時にだけ、撓みの影響を反映する。この場合、撓みの影響を反映して歩容データを補正するデータ量が限定され、撓みの影響を反映していない歩容データから撓みの影響を反映した歩容データに補正することが可能となる。
また、実際に歩行させて遊脚が予定外に接地するか否かを観測することによって、撓みの影響が実際上の意味を持たなくなるまで歩容データが補正されたのか否かを判別することが可能となり、撓みの影響が実際上の意味を持たなくなるまで歩容データを補正することが可能となる。
本発明では、撓みの影響によって遊脚が予定外に接地しまう時に限って補正するという発想によって、簡単に「撓みの影響を反映していない歩容データから撓みの影響を反映した歩容データに補正する」ことに成功した。
【０００９】
本発明は、歩容データを完成する方法に具現化することができる。この歩容データ完成方法は、ロボットの代表点の目標位置を経時的に記述する当初歩容データを用いてロボットを実際に歩行させる工程と、当初歩容データ上では遊脚であるはずの足平が床（ロボットが歩行する歩行面）に接触した時点を特定する工程と、少なくとも特定された時点における当初歩容データを、遊脚であるはずの足平が床から離れる方向に補正する工程を含んでいる。
【００１０】
本方法は、当初歩容データを用いてロボットを実際に歩行させ、当初歩容データ上では遊脚であるはずの足平が床に接触した時点を特定する。すなわち、撓みの影響が顕在化するために撓みの影響を反映して歩容データを補正する必要があるタイミングを特定する。そうすることによって補正対象となる歩容データを絞り込むことができる。本発明では、そうして絞り込まれた歩容データに対してのみ補正を施す。
本発明では、撓みの影響を排除するように補正するための技術でありながら、撓み量を考慮しない。特許文献１の発想と相違する。本発明では、遊脚が予定外に接地してしまわないように、ともかくも遊脚であるはずの足平が床から離れる方向に歩容データを補正する。撓み量を考慮せずに補正することから、補正によって遊脚が予定外に接地する事象が解消されるまで補正されたか否かはわからない。しかしながら、補正された歩容データを用いてロボットに歩行させれば、遊脚が予定外に接地する事象が解消されるまで補正されたか否かを検証することができる。遊脚が予定外に接地する事象が解消されるまで補正することが可能となる。
本方法によると、撓みの影響が実際上の意味を持つゆえに補正する必要のある歩容データを絞り込むことができる。本方法は、撓みの影響を排除するように補正する技術でありながら、撓み量を計算する必要がない。代わりに、撓みの影響が実際上の意味を持たなくなるまで補正されたか否かを検証する。これらによって、本来は多大な計算量を必要する「撓みの影響を反映していない歩容データから撓みの影響を反映した歩容データに補正する」過程を極めて簡単化することができる。なお、「代表点」とはロボットの任意の位置に指定可能な点であるが、複数のリンクにより構成されるロボットの場合、ロボットの姿勢を良く表す所定の点を代表点とすることが好ましい。例としてはロボット頭部リンク、足平リンク、体幹リンク、手先リンクなどのリンクの所定の位置に固定された点を代表点とすることができる。また手先に複数の指リンク群を有する場合には各指先リンクに固定された特定の点を代表点としてもよい。
【００１１】
本方法は、遊脚が予定外に接地するタイミングであると特定された時点に先立つ所定期間内の当初の歩容データを補正する工程と、遊脚が予定外に接地するタイミングであると特定された時点に続く所定期間内の当初の歩容データを補正する工程を含むことが好ましい。前者の期間内では補正量が漸増するように補正し、後者の期間内では補正量が漸減するように補正することが好ましい。
これによって、遊脚が予定外に接地するタイミングの前後で、当初の歩容データからの補正量がゼロの状態から徐々に増大し、遊脚の予定外の接地が検出されたタイミングでの補正量が最大となり、その後に補正量が徐々に減少して当初の歩容データに復帰する歩容データに補正される。遊脚の予定外の接地を避けながら、ロボットがスムーズに歩行する歩容データに補正することができる。
【００１２】
遊脚の予定外の接地を避けるのに必要な補正では、足首関節の周りに足平を上方に所定角だけ回転させた目標位置と目標姿勢に補正することが好ましい。
人間の脚について、接地脚から遊脚に変化し、再度接地脚となる一連の動作を詳細に観察すると次のようになる。
（１）接地脚から遊脚に変化する時点（離床時）はつま先が最後に離床する。
（２）遊脚はそのままつま先を下に向けた状態で接地脚の横を通過する。
（３）遊脚が接地脚より前へ出てからつま先が水平より上方を向く。
（４）かかとが着床して再度接地脚状態となる。
上記動作をロボットで行わせると、（２）の状態、すなわち遊脚が接地脚の横を通過する前後において、遊脚を振る動作によってロボット全体が遊脚側に傾きやすくなる。同時にこのとき、遊脚の足平先端（つま先に相当）が最も床に接近する可能性が高い。
そこで、足首関節の周りに足平の先端を上方に所定角だけ回転させると、遊脚の予定外の接地を避けることができる。なお足首関節とは足平リンクとこれに連結される下腿リンクとを体側方向を軸として回転可能に連結する関節のことをいう。
足平は脚リンク群の先端に連結されたリンク部品である。従って足平を足首関節の周りに回転させても、足首から腰までの各部の位置／動作および体幹の位置／動作に与える影響が小さい。よって当初作成した歩容データに補正を加えることによってロボットの歩行姿勢の全体が変化することを抑えることができる。
【００１３】
遊脚の予定外の接地を避けるのに必要な補正では、体幹目標位置をロボット体側方向のうちの接地脚側へ所定距離だけ移動してもよい。ここでロボット体側方向とは、ロボット胴部の中心から胴部の側面へ向かう方向をいう。右脚を接地脚として左脚を遊脚とする場合には、体幹目標位置を右側へ所定距離だけ移動することに相当する。
体幹目標位置をロボット体側方向のうちの接地脚側へ補正することによって、ロボット全体の重心位置をロボット体側方向の接地脚側へ移動させることができる。従ってロボットが遊脚側へ傾くように働くモーメントを小さくすることができる。換言すればロボットの遊脚側への傾きを小さくすることができる。この結果、補正された歩容データによると、遊脚の足平が床から上方へ移動した位置に変化することになる。よって遊脚が予定外に接地することを回避することができる。
【００１４】
歩容データを完成する過程では、補正された歩容データを用いてロボットを実際に歩行させる工程と、補正された歩容データ上では遊脚であるはずの足平が床に接触した時点を特定する工程と、少なくとも特定された時点における補正された歩容データを遊脚であるはずの足平が床から離れる方向にさらに補正する工程を含んでいることが好ましい。
この方法は当初歩容データを所定の補正量で補正された歩容データでは歩容データ上では遊脚であるはずの足平がやはり床に接触してしまう場合、補正された歩容データにさらに所定の補正量を追加して補正する処理を繰り返すことができる。
この方法によれば、毎回の補正量を小さく設定することができ、遊脚の予定外の接地を避けるのに必要な補正量となるまで補正量を段階的に増大してゆくことができる。遊脚の予定外の接地を回避するのに必要な最小の補正量を得ることができる。補正量が小さいほど、当初作成した歩容データに近い状態でロボットをスムーズに歩行させることが可能となる。
【００１５】
遊脚の予定外の接地を避けるためには、補正前の歩容データを補正後の歩容データに置き変えてよい。あるいは、補正前の歩容データに補正量を対応付けて記憶してもよい。
補正量を徐々に増やしながら遊脚の予定外の接地を避けるのに必要な最小の補正量を探索する場合には、補正前の歩容データに補正量を対応付けて記憶する方式が好ましい。
【００１６】
脚式ロボットの通常の歩行制御方法では、完成した歩容データをロボットに教示する。しかしながら、補正量を徐々に増やしながら遊脚の予定外の接地を避けるのに必要な最小の補正量を探索する場合には、補正前の歩容データに補正量を対応付けて記憶する方式が好ましい。従って、脚式ロボットの歩行を制御する方法でも、補正前の歩容データとその歩容データに対応する補正量をロボットに教示する工程と、補正前の歩容データをそれに対応する補正量で補正した歩容データから関節角を演算する工程を備えていることが好ましい。
補正された歩容データに従ってロボットが動作したときに撓みが加わるために、当初の歩容データが記述する運動を実現させることができる。
【００１７】
本発明は、脚式ロボットの歩行制御装置自体に具現化することもできる。この歩行制御装置は、ロボットの代表点の目標位置を経時的に記述する当初歩容データを記憶する装置と、記憶装置が記憶している当初歩容データを用いてロボットを実際に歩行させる手段と、記憶装置が記憶している当初歩容データ上では遊脚であるはずの足平が床に接触した時点を特定する手段と、記憶装置が記憶している当初歩容データであって少なくとも前記特定された時点における当初歩容データを遊脚であるはずの足平が床から離れる方向に補正する手段を含んでいる。
この歩行制御装置によると、当初に教示された歩容データによるとロボットの撓みに起因して遊脚が予定外に接地するときに、遊脚の予定外の接地を避ける歩容データに補正することができる。
【発明の効果】
【００１８】
本願発明によれば、撓みを考慮しないで作成した歩容データによるとロボットに生じる撓みに起因して遊脚が予定外に接地するときに、ロボットが撓んでも遊脚の予定外の接地を避けることができる歩容データに補正することができる。
ロボットは歩容データに従って歩行すればよく、ロボットの制御ロジックは複雑化されない。またロボットに生じる撓み量を計算する必要がない。
少ない計算量で短時間のうちに、実際の歩行姿勢が優れた歩容データを完成することができる。
【発明を実施するための最良の形態】
【００１９】
実施例の主要な特徴を列記する。
（第１形態）  特定された時点の前後所定期間で漸増・漸減する補正量を設定する場合、その所定期間とは、予定外に接地する遊脚が遊脚であるはずの期間内に定めることが好ましい。遊脚期間中は床に対して拘束されるのが片足のみとなるため、各代表点位置の幾何学的拘束条件が緩やかとなる。その結果、補正可能なロボットの代表点の数、または代表点位置に対する補正量の範囲を大きく取れるからである。また前記遊脚期間の前後の期間では、ロボット代表点を補正する必要がなくなるので、歩容データの補正がロボットの歩行動作の全体に及ぼす影響を小さくすることができるからである。
（第２形態）  歩容データが終了するまでロボットを実際に歩行させ、その間に歩容データ上では遊脚となるはずの脚が床に接触した時点の全部を特定する。そして歩容データが終了した後で、先に特定された時点毎に歩容データを補正することが好ましい。換言すれば、遊脚が予定外に接触するタイミングを歩容データの全体にわたって特定した後に、特定された時点毎に歩容データを補正する。歩容データの全体に対する補正作業を1サイクルで行うことができるので、歩容データの完成までの時間と労力が節約される。
（第３形態）  当初歩容データを補正する工程では、当初歩容データ内のいずれかの代表点の目標位置を補正することが好ましい。例えば足先に代表点が設定されていればその足先目標位置を上方に所定量だけ補正する、あるいは体幹（胴部）に代表点が設定されていればこの体幹目標位置を上方に補正することなどが考えられる。
（第４形態）  ロボットを実際に歩行させる床（歩行面）は略平坦であることが好ましい。ここで略平坦とはロボットがぶつかる障害物にならない程度の凹凸があってもかまわない。ロボットが連続して歩行する際に、一歩行期間（ロボット両脚の相対位置関係がある相対位置関係となった時点から同じ相対位置関係になるまでの期間）における歩行面が同等であれば良い。なお歩行面は水平である必要はなく、各歩行期間毎の歩行面の状態（凹凸など）が同等の条件であれば歩行面は傾斜していてもよい。当初歩容データを補正する工程を繰り返す際、同じ状態の歩行面で行うことが好ましいからである。
（第５形態）  当初歩容データには、所定の座標系における足平に設定された代表点目標位置の経時的データが含まれており、各時点の前記足平の、足裏面（床と接触する面）の位置を特定する工程と、所定の座標系に対する、ロボットが実際に歩行する床（歩行面）の位置を特定するデータを記憶する記憶装置から、前記歩行面の位置を読み出す工程と、前記「各時点の前記足平の、足裏面」と前記歩行面とが交差しない場合に、その足平を有する脚が歩容データ上では遊脚であるはずと判断する工程と、を含むことが好ましい。ロボット足裏面と、歩行面とが交差しない場合にその足平を有する脚が遊脚であるはず、と判断することによって、例えば歩行面が傾斜している場合でも、歩容データ上では遊脚であるはずか否かを特定することができるからである。
（第６実施形態）  当初歩容データ上で、各時点におけるロボットの夫々の脚が遊脚状態（床から離れている状態）であるか否かのデータが予め記憶装置に記憶されており、このデータに基づいて、当初歩容データ上の各時点において夫々の脚が遊脚であるはずか否かを判断する工程、を備えていることが好ましい。夫々の脚が遊脚であるはずか否か、予めデータとして有していれば、ロボットを実際に歩行させた際に、夫々の脚が遊脚であるはずか否かを計算することなく判断することができるからである。当初歩容データを作成する際には、夫々の脚がいつ接地脚となるかまたは、いつ遊脚となるか、を計画しながら考作成される。従って当初歩容データを作成する際に、当初歩容データ上の各時点におけるロボットの夫々の脚が遊脚状態であるか否かのデータを同時に作成することが可能である。
【実施例】
【００２０】
図面を参照して実施例を詳細に説明する。
＜実施例１＞
図１から図５を用いて本発明の実施例１を説明する。図１に示すように、実施例１の装置は、歩容データ作成装置２０と、歩行制御装置１０と、ロボット１００と、フォースプレート２６を備えている。アクチュエータ制御部２４や歩容データ記憶部３４など、歩行制御装置１０の一部ないし全部は、ロボット１００の本体内に内蔵される場合もあるが、ここでは説明を容易にするため、ロボット１００とは別体として描いている。
【００２１】
歩容データ作成装置２０は、ロボット１００のダイナミクスを考慮し、ロボット１００に行わせたい動作の目標値を作成する。動作の目標値は、ロボット１００のいくつかの所定位置に設定した代表点の目標位置の経時的変化のデータとして作成される。ロボット１００は複数のリンク部品と相互のリンクを揺動可能に連結する関節から構成されている。ここで代表点の目標位置によって歩容データを記述するのは、ロボット各関節の目標値によって歩容データを記述するよりも、ロボット姿勢が人間に理解しやすいからである。代表点の具体的例としては、左右の足平位置、胴部（体幹）の重心位置、左右の手先の位置などがある。ここで位置には３次元空間上での位置の他に姿勢も含まれる。ダイナミクスを考慮するとは、歩行中にいずれかの脚が遊脚となった際にロボットが倒れないこと、また、各代表点の相対位置関係がロボットの幾何学的拘束条件を満足すること、等である。この歩容データ作成装置２０で作成された歩容データを当初歩容データと称することにする。
【００２２】
歩行制御装置１０は、歩容データ作成装置２０によって作成された当初歩容データを記憶する歩容データ記憶部３４を備えている。その他に、アクチュエータ制御部２４と、接触時点特定部２８と、補正量設定部３０と、補正量データ記憶部３２を備える。
【００２３】
ロボットを作動させる際には歩容データ記憶部３４に記憶されている当初歩容データが読み出され、アクチュエータ制御部２４は、読み出した当初歩容データに基づいて、ロボット１００に内蔵されているアクチュエータを制御する。この結果、ロボット１００は当初歩容データに基づいて姿勢を変え、実際に歩行する。アクチュエータ制御部２４の内部の構造については図２に基づいて後述する。
アクチュエータ制御部２４は、補正量データ記憶部３２に補正量データが記憶されている場合には、歩容データ記憶部３４に記憶されている当初歩容データと補正量データ記憶部３２に記憶されている補正量データの双方を読み出し、前者を後者で補正した歩容データに基づいて、ロボット１００に内蔵されているアクチュエータを制御する。
【００２４】
本実施例では、ロボット１００が歩行する床面全体にフォースプレート２６が埋設されている。フォースプレート２６は、圧力センサが格子状に配置されたものである。このフォースプレート２６上に物体が置かれると、フォースプレート２６上での物体の位置と、フォースプレート２６と物体が接触している箇所の圧力を検知することができる。アクチュエータ制御部２４により実際にロボット１００をフォースプレート２６上で歩行させると、フォースプレート２６によって、ロボットの足平が床のどこに接触しているかが検知される。
【００２５】
接触時点特定部２８は、フォースプレート２６からの信号と、アクチュエータ制御部２４からの当初歩容データを同時に取り込む。フォースプレート２６からの信号により、各時点においてロボット１００の足平が床と接触している位置を判別する。また取り込んだ当初歩容データにより、各時点での各脚の状態（遊脚か否か、またその足平位置）を判別する。
フォースプレート２６からの信号により判別された足平が接触した床面上の位置と、当初歩容データ上におけるいずれかの脚の足平の位置がほぼ同位置である場合、その足平が床に接触していると判別できる。この時点での脚の当初歩容データ上での足平目標位置が床面より上方に設定されていれば、遊脚となるはずの足平が床に接触してしまったことが判別できる。
接触時点特定部２８によって、遊脚となるべき脚の足平が床と接触していると判断された場合には、その時点を当初歩容データ上で特定する。特定された時点は、補正量設定部３０に送られる。補正量設定部３０は、特定された時点における当初歩容データ上のいずれかの代表点目標位置を、遊脚となるべき脚の足平が床から離れる方向に補正する補正量を設定する。設定された補正量は、その補正量を加えるべき当初歩容データ上の時点を特定するデータとともに補正量データ記憶部３２に記憶される。補正量をどのように設定するかについては後述する。
【００２６】
次に図２を用いてアクチュエータ制御部２４内部での処理を説明する。
アクチュエータ制御部２４は、歩容データ記憶部３４から当初歩容データ４０を読み込む。また補正量データ記憶部３２から補正量データ４２を読み込む。読み込まれた夫々のデータは加算されて加速度演算部４４に送られる。当初歩容データ４０に補正量データ４２を加算したデータは、補正後の歩容データに相当する。補正量データ４２には、経時的データである当初歩容データに対して補正量を加えるべき代表点目標位置、補正量を加えるべき時点、および補正量の大きさが記述されている。従って当初歩容データ４０に対して補正量データを加算することができるのである。
【００２７】
加速度演算部４４は、補正量データ４２が加算されて補正された歩容データから各時点における代表目標位置の加速度目標値を算出する。一方、ロボット１００ａの所定の位置には加速度センサ５０が取り付けられている。この加速度センサ５０の値から、ロボット１００ａの代表点の加速度を検出する。算出された加速度目標値から検出された加速度を減算したものがフィードバック制御部４６に送られる。フィードバック制御部４６にはＰＩＤ制御等の制御回路が組まれており、結果としてロボット１００ａの代表点に与えるべき各サンプリング毎の加速度目標値が算出される。算出された加速度目標値は、目標値変換部４８で代表点の加速度目標値からロボット１００ａの各関節の加速度目標値へと変換される。この各関節の加速度目標値がロボット１００ａの各関節に取り付けられたサーボモータ(アクチュエータ)への指令値となってロボット１００ａが動作する。
【００２８】
当初歩容データ４０はまた、アクチュエータ制御部２４から接触時点特定部２８へと送られる。前述したように接触時点特定部２８は、各時点における当初歩容データとフォースプレート２６からの出力値に基づいて、遊脚となるはずの脚の足平が床に接触した時点を特定する。
なお、図１において、歩容データ記憶部３４が当初歩容データを記憶する装置に相当する。またアクチュエータ制御部２４がロボットを歩行させる手段の一態様に、接触時点特定部２８が当初歩容データ上では遊脚であるはずの足平が床に接触した時点を特定する手段の一態様に、補正量設定部３０が当初歩容データを補正する手段の一態様に相当する。
また本実施例１では足平が床へ接触したことを検知する手段として床に埋設されたフォースプレート２６を用いた。この代替としてロボットの足平裏側に圧力センサなどの接触センサを用いることも可能である。またロボット足首に６軸力センサを組み込んで用いることも可能である。
【００２９】
次に図３のフローチャートを用いて実施例１のロボット制御の処理を説明する。
まずステップＳ１００で当初歩容データを歩容データ記憶部３４から読み込む。この当初歩容データにはロボット代表点のひとつが足平の所定の位置に設定されたデータが含まれる。すなわちこの歩容データには足平の目標位置の経時的変化のデータが含まれる。
次にステップＳ１０２で補正量の初期化を行う。例えば、歩容データ上での開始時点で補正量ゼロの初期値を与えて初期化する。なお、実施例１では補正量を設定する対象となる歩容データ上でのパラメータを予め設定しておく。ここでは遊脚の足平目標位置の姿勢目標角のひとつであるピッチ角を、足平の先端部が床から離れる方向に所定量ずつ補正量を増加させるように設定しておく。なお足平目標位置のピッチ角については図４に基づいて後述する。
【００３０】
次にステップＳ１０４では、読み込んだ当初歩容データと補正量ゼロで初期化された補正量（足平目標位置ピッチ角の補正量）に基づいてロボットを歩行させる。すなわち最初にロボットを歩行させる際は補正量なしで当初歩容データだけでロボットを制御することになる。
ステップＳ１０６では、ステップＳ１０４でロボットを歩行制御している間に、歩行データ上では遊脚となるべき脚の足平が床に接触したか否かを判断する。この判断は以下のようにして行われる。接触時点特定部２８はフォースプレート２６からの信号と、アクチュエータ制御部から当初歩容データとを同時に取り込む。フォースプレート２６からの信号により、各時点においてロボット１００の足平が床と接触している位置を判別する。また取り込んだ当初歩容データにより、各時点での各脚の状態（遊脚か否か、またその足平位置）を判別する。なお、通常ロボットが歩行する床（歩行面）の面内にＸ軸とＹ軸を定め、床面に垂直方向にＺ軸を定めた座標系を絶対座標系として採用する。そして当初歩容データには絶対座標系に対する足先の目標位置の経時的データが記憶されており、各時点での足先目標位置（姿勢含む）と足平の形状データから足平リンクにおけるＺ軸方向の最下点の座標値が求まる。最下点の座標値が正の値をとればその脚は床面から離れており遊脚状態であると判断できる。
フォースプレート２６からの信号により判別された足平が接触した床面上の位置と、その時点における当初歩容データ上でのいずれかの脚の足平の位置がほぼ同位置である場合、その足平が床に接触していると判別できる。この時点での当初歩容データ上での足平目標位置が床面より上方に設定されていれば、遊脚となるはずの脚が床に接触してしまったことが判別できる。
当初歩容データが終了するまで遊脚となるべき脚の足平が床に接触しなかった場合（ステップＳ１０６：ＮＯ）、補正量は不要であるのでそのまま終了する。
【００３１】
ステップＳ１０８では、ステップＳ１０６で遊脚となるべき脚の足平が床に接触したと判断された場合（ステップＳ１０６：ＹＥＳ）、接触したときの当初歩容データ上の時点を特定する。そしてステップＳ１１０において当初歩容データ上で特定された時点と、補正量データ上での時点とを対応付ける。例えば当初歩容データ上では歩行開始１０分後に右脚が遊脚となるように右脚の足平目標位置が設定されていたが、その時点で右脚足平が床に接触したと判別された場合、補正量データとして歩容データの開始から１０分後の足平目標位置のピッチ角に対して足平先端が床から離れる方向に補正量を加えるように対応付けられる。
そしてステップＳ１１２には初期化でゼロに設定された補正量（足平目標位置のピッチ角補正量）に所定値を加算する。所定値とは補正の対象とするパラメータにより異なる。本実施例では足平目標位置のピッチ角を補正対象としたので、所定値とは例えば５度に設定される。また足平目標位置の垂直方向位置を補正対象とするときには、所定値が例えば２ｃｍに設定される。
【００３２】
次にステップＳ１１４では、特定された当初歩容データ上での時点、例えば当初歩容データ上での歩行開始から遊脚足平が床へ接触するまでの所要時間、および補正対象パラメータとその補正量が補正量データとして補正量データ記憶部３２に記憶される。
ステップＳ１１４で補正量データが記憶されると再びステップＳ１０４に戻り当初歩容データが終了するまで繰り返す。
【００３３】
さらに当初歩容データの最後まで前述の処理を繰り返した後に、当初歩容データの最初に戻ってステップＳ１０４からステップＳ１１４の処理を繰り返すことも好適である。このときの処理を以下説明する。
【００３４】
ステップＳ１０４では読み込んだ当初歩容データと補正量データ記憶部３２に記憶された補正量を用いてロボット１００を歩行させる。
補正量で補正された当初歩容データによっても遊脚となるべき脚の足平が床に接触したと判断された場合（ステップＳ１０６：ＹＥＳ）、その接触した時点を当初歩容データ上で特定する（ステップＳ１０８）。そしてステップＳ１１０において当初歩容データ上で特定された時点と、補正量データ上での時点とを対応付ける。ここで、対応付けた時点においてすでに補正量が設定されていれば、先に設定された補正量では遊脚の床との接触を回避するには不十分であることが検証される。そこでステップＳ１１２により前回の補正量に対して前述した所定量を加算する。最後に加算された補正量と、補正量を加えるべき当初歩容データ上での時点を補正量データ記憶部３２に記憶する（ステップＳ１１４）。記憶させる際、当初歩容データ上で特定された補正すべき時点と補正量は先に設定されたデータが記憶されているがこの先のデータを新たなデータで更新する。
【００３５】
上記ステップＳ１０４からステップＳ１１４の処理を当初歩容データの開始から終了まで数回繰り返すことで、当初歩容データでは床に接触してしまった遊脚となるべき脚が接触しなくなるまで補正量を徐々に増加させることができる。従って接触を回避することができるとともに、できるだけ小さな補正量を設定することが可能となる。補正量をできるだけ小さな値とすることで当初歩容データに近い状態でロボットを歩行させる制御を実現することができる。
【００３６】
こうして最終的に遊脚の床への接触を回避することのできる補正量が決定されて、当初歩容データ上では遊脚となるはずの足平が床に接触することを回避する歩容データが完成する。この完成された歩容データによりロボットを制御することで遊脚が床に接触することなく、かつ当初歩容データにできるだけ近い状態でロボットを歩行させることができる。
【００３７】
上記処理により、ロボットの撓みを考慮しないで作成した当初歩容データでロボットを歩行させた際、考慮しなかったロボットの撓みにより当初歩容データ上では遊脚となるはずの足平が床に接触した場合、遊脚足平の床への接触を回避する補正量を設定することができる。当初歩容データ上では遊脚となるはずの足平が床に接触した時点を歩容データ上で特定し、少なくともこの時点における補正量を設定する。すなわち遊脚の床への接触という、撓みの影響が意味をもつ範囲に補正量が限定されるので、補正するデータ数が少なくてすむ。また、補正量を計算して求める必要が無く、接地するか否かを検証することによって、遊脚の床への接触を回避する最小の補正量により補正することができる。こうして撓みの影響を排除する補正量を当初歩容データに対して設定するので、複雑な計算をしないでも、遊脚となるはずの足平が床に接触することを回避することが可能となる。また、上記処理ではロボットの撓みに関して演算を行わない。ロボットの撓みを推定する複雑な演算なしに遊脚となるはずの足平が床に接触することを回避する補正量を設定することができる。本実施例では以上の各処理は全てコンピュータにより自動処理される。
【００３８】
なお、上記処理において、ステップＳ１０４の処理が「当初歩容データを用いてロボットを実際に歩行させる工程」の一態様に、ステップＳ１０６からステップＳ１１０までの処理が「遊脚となるはずの足平が床に接触した時点を特定する工程」の一態様に、ステップＳ１１２の処理が「当初歩容データを補正する工程」の一態様に相当する。
また、ステップＳ１１４で補正量を記憶後、ステップＳ１０４に戻り記憶された補正量と当初歩容データでロボットの歩行を実行させる処理が、「補正された歩容データを用いてロボットを実際に歩行させる工程」の一態様に、その後のステップＳ１０６からステップＳ１１０までの処理が「補正された歩容データ上では遊脚であるはずの足平が床に接触した時点を特定する工程」の一態様に、さらにその後のステップＳ１１２の処理が「補正された歩容データをさらに補正する工程」の一態様に相当する。
【００３９】
また図３のフローチャートにおいて、Ｓ１０６の足平が床に接地するか否かの判断を目視にてすることも好適である。そしてその時点を歩容データ上で特定する工程およびその時点における補正量を設定する工程は操作者が自ら入力することも好適である。このようにしても同じ結果・効果が得られる。
【００４０】
次に足平目標位置のピッチ角を例として補正量の設定と、この補正量により歩容データがどのように補正されるかについて図４、図５を用いて例示する。
まず図４により足平目標位置ピッチ角について説明する。ロボット１００の脚先端のリンク部品である足平５２とこれに接続されている下腿リンク５４とが足首回転関節５６で回転可能に連結されている。この足首回転関節５６はロボット進行方向（又はロボット体幹前後方向）をＸ軸、垂直方向（又はロボット体幹上下方向）をＺ軸とした座標系において足平５２をＸＺ平面内で回転させる。また図４に符合６０で示す点を足平の代表点とする。このとき足平のＹ軸（Ｘ−Ｚ平面に対して垂直な軸）周りの姿勢角を足平目標位置の目標ピッチ角と定義する。換言すれば、ＸＺ平面内で足平裏面が床面となす角６２が足平目標位置の目標ピッチ角に相当する。なお図４には接地脚は図示を省略してある。
次にこの足平目標位置を足平が床から離れる方向に補正量を設定する具体例を説明する。下腿リンク５４の目標位置（姿勢含む）を変更せずに、即ち足首関節５６の位置を変更せずに足平ピッチ角が小さくなるように足平代表位置を図４に符号６０ａの位置となるよう補正量を設定すれば、足平目標位置ピッチ角は６２ａとなる。このとき図４に示すように補正量を加えた後の足平目標位置は破線５２ａに示す位置（姿勢）となる。足平位置５２と足平位置５２ａを比較すると足平５２ａの足先が床から離れる位置となっている。すなわち当初歩容データ上の足平目標位置６０（このときの足平目標ピッチ角は符号６２で示される）を６０ａに示す位置（このときの足平目標ピッチ角は符号６２ａで示される）に補正する補正量を設定する。この補正量を当初歩容データに加算することで足平位置は床から離れる方向に補正することができる。なお、上記補正は換言すれば、足平目標位置（姿勢含む）を足首関節の周りに足平を上方に所定角だけ回転させた目標位置（姿勢含む）に補正する、ということができる。
【００４１】
図４に示した補正量によると、当初歩容データ上の足平目標位置に補正量を加えても下腿リンク５４からロボット胴部（体幹）にかけての脚の位置に影響はない。従って足平目標位置を補正量として選定すると、補正量によりロボットのその他のリンク群に与える影響を小さくすることができる。従って当初の歩容データにより近い状態で遊脚が床に接触することを回避してロボットを制御することができる。
【００４２】
次に図５に基づいて、設定された補正量によりロボットの足平の運動が変化して遊脚時の床への接触が回避される様子を例示する。図５（Ａ）には当初歩容データによる足平目標位置の経時的変化と実際のロボット足平の経時的変化を示す。図５（Ｂ）には補正量により床への接触が回避されたときの実際のロボット足平の経時的変化を示す。ロボットの進行方向は矢印７０の方向である。また矢印７０の方向は時間の経過方向ともいえる。
破線で示すａ１からａ８が当初歩容データ上での足平目標位置の経時的変化を表す。この足平目標位置の経時的変化は、ａ２の時点で離床し、ａ７の時点で着床する遊脚を表している。
実線で示すｂ１からｂ８までが実際のロボットの足平の経時的変化を表す。ａ１、ａ２、ａ６からａ８までは当初歩容データに実際のロボットが完全に追従して動作しているのでａ１、ａ２、ａ６からａ８と、ｂ１、ｂ２、ｂ６からｂ８は重なっている。当初歩容データ上では考慮されなかったロボットの撓みにより、ａ３からａ５の当初歩容データ上での足平目標位置に対して、実際のロボット足平位置はｂ３からｂ５のように目標値に追従しきれていない。ここでｂ４の時点で、符号７２で示す箇所で足平の先端が床に接触したとする。この時点が図３のフローチャート上のステップＳ１０８により特定される。そこでａ４の足平目標位置を二点鎖線ｃ４で示す位置となるように補正量が設定される（ステップＳ１１０、ステップＳ１１２）。本例示では、足平の先端が床から離れる方向に移動するよう補正量が設定される。
その結果、当初歩容データに補正量を加えた足平目標位置の経時的変化は図５（Ｂ）に破線で示すように、図５（Ａ）のａ１からａ８に対してａ４がｃ４に置き換わる。ｃ４の足平目標位置に対してこれに実際のロボットが完全に追従せずともその時点でのロボットの実際の足平位置はｄ４に示すよう、符号７４で示す分だけに床から離れた位置とすることができる。このように歩容データ上で遊脚が床に接触した時点を特定し、少なくともその時点での歩容データに補正量を設定することで、できるだけ小さい補正量により遊脚の床への接触を回避する歩容データを完成させることができる。
【００４３】
＜実施例２＞
次に実施例２について説明する。この実施例２では、補正量を設定する工程において、当初歩容データ上で特定された、遊脚が床に接触する時点における補正量をまず設定する。そして特定された時点より前の期間で、設定された補正量に至るまで漸増する補正量を設定する。同時に特定された時点から後の期間で設定された補正量から漸減する補正量を設定する。換言すればこの補正量設定工程は、歩容データ上で特定された時点における補正量を最大値とし、特定された時点の前後所定期間で経時方向に対して漸増、漸減する経時的な補正量を設定するものである。この処理は図１のブロック図においては補正量設定部３０で行われる。また図３のフローチャートではステップＳ１１２において実行される。
【００４４】
この処理によって設定される歩容データ補正量と、その補正量により実現されたロボットの足平の経時的変化について図６に例示する。図６（Ａ）には当初歩容データによる足平目標位置の経時的変化を破線ａ１からａ８で示してある。また足平目標位置に対する実際のロボット足平位置の経時的変化を実線ｂ１からｂ８で示してある。図５と同様に足平目標位置ａ４に対して実際のロボット足平位置は符号７２で示す箇所で床に接触している。矢印７０は図５と同様の意味である。
まず実施例１と同様にａ４の時点における足平目標位置をｃ４となるように補正量を設定する。このとき設定された補正量を最大補正量と呼ぶことにする。次にａ４の時点より前のａ３の時点で最大補正量より小さい値の補正量をａ３に対して設定する。またａ４の時点より後のａ５の時点で最大補正量より小さい値の補正量をａ５に対して設定する。
当初歩容データ上の足平目標位置ａ３からａ５に対して補正後の足平目標位置をｃ３からｃ４に二点鎖線で示す。遊脚が床に接触した時点での補正量を最大値とし、その前の期間で漸増するような補正量を設定し、接触した時点より後の期間で漸減するような補正量を設定することで、足平目標位置を経時的に滑らかに変化するように補正することができる。
この補正量により補正された歩容データに基づいた実際のロボットの足平位置の経時的変化を図６（Ｂ）に示す。補正された足平目標位置は図６（Ａ）のａ１からａ８に対してａ３、ａ４、ａ５がｃ３、ｃ４、ｃ５に補正される。その結果実際のロボット足平位置の経時的変化は次のように変化する。すなわち、図６（Ａ）に示すｂ３、ｂ４、ｂ５の補正前の足平位置は、図６（Ｂ）に示すｄ３、ｄ４、ｄ５へと変化する。
【００４５】
ここで実施例１の補正量の効果と実施例２の補正量の効果を比較してみる。
図５（Ｂ）に示した実施例１の補正によるロボット制御では、補正により、ｄ４の時点の足平位置が上方へ移動し床への接触が回避されている。しかしその後のｂ５の時点では補正がないでのｄ４より床に近づいている。そしてｂ６の時点で足平全体はｂ５よりも上方に位置している。そしてｂ７で着床している。すなわち遊脚中にｂ５で床に近づいた足平は次のｂ６の時点で一旦上方に移動しその後ｂ７の時点で着床する、という軌跡を描くことになる。
これに対して実施例２では図６（Ｂ）に示すようにｄ４の時点の次のｄ５の時点ではほぼ平行に足平位置は移動し、ｂ６の時点で足平全体がやや下方に移動しながら足先が上方を向き、ｂ７の時点で着床している。実施例２では、補正量設定前に遊脚が床に接触した時点（ｂ４の時点）の次の時点でも足平目標位置を上方に補正したことにより、補正後の足平目標位置の経時的変化が滑らかとなっている。足平目標位置が滑らかに変化するので実際のロボットの動作も滑らかに変化する。よって、実施例２では遊脚が床に接触した時点の前後の所定期間に漸増・漸減する補正量を設定することで、より滑らかな歩行となるロボット制御を実現することができる。ここで所定期間は、予定外に床に接触してしまった脚の遊脚期間内で設定することが好ましい。遊脚期間中は床に対して拘束されるのが片足のみとなるため、各代表点位置の幾何学的拘束条件が緩やかとなる。結果補正量を設定可能なロボット代表点の数、または代表点位置に対する補正量を設定可能な範囲を大きく取れるからである。また遊脚期間前後の接地脚時のロボット各代表点の目標位置に対して補正量を設定しないので、補正量がロボットの歩行全体に及ぼす影響を小さくすることができるからである。
【００４６】
なお実際には、歩容データ上のある一時点における足平目標位置を補正すると、その前後で加速度目標値が変化するため、補正した時点前後の実際の足平位置も変化する。図５および図６の例示ではこの加速度の影響は無視した。しかし補正量の値が小さければ加速度の変化も小さくなるのでロボット全体に与える影響も小さくなる。従って補正量はできるだけ小さい方がよいことには相違ない。また、図３のフローチャートにおけるステップＳ１０４からステップＳ１１４の処理を歩容データ全体にわたり数回繰り返すことで補正量の検証が行われる。この検証時点で加速度の影響により補正量が適正とならなければ（補正量によっても遊脚となるべき脚が床に接触してしまったなら）、さらに補正量が追加されるため、最終的には加速度変化の影響も含めて滑らかな歩行を実現する補正量が得られる。
【００４７】
＜実施例３＞
次に実施例３として補正量を設定する対象の歩容データとして、体幹（胴部）の重心位置を設定した場合を例示する。この実施例では体幹の重心位置がロボットの代表位置として設定されている。すなわち歩容データにはこの体幹の重心位置の目標値（体幹目標位置と称する）の経時的変化が記述されている。ここで体幹の重心位置とは体幹に揺動可能に連結されているリンクを除く、体幹に固定された部品により決定される重心位置を意味する。その意味では例えば体幹に対して揺動可能に連結されている両腕の姿勢を体幹に対して固定した状態で算出された重心位置であってもかまわない。換言すれば、代表位置とはあるリンクに対して固定された点であればよい。
【００４８】
実施例３の装置のブロック図および処理のフローチャートは図１および図３と同様であるので説明は省略する。
図７に体幹位置と脚の関係を模式的に示す。図７（Ａ）にロボット１００の上面図を、図７（Ｂ）に正面図を示す。なお両腕と頭部は図示を省略した。
体幹（胴体）８０の重心位置８２はこの体幹８０に揺動可能に連結された各リンクを除く体幹だけの質量分布から算出されたものである。従ってロボット各リンクの姿勢に係わりなく体幹８０の形状に対する重心位置８２は不変である。この体幹重心位置８２を単に体幹位置８２と呼ぶことにする。この体幹位置８２はロボットの代表点のひとつとして設定される。
体幹８０には幾つかの関節とリンクで構成された左脚８４ａが連結されておりその先端に左足平８６ａが連結されている。同様に体幹８０には右脚８４ｂが連結されておりその先端に右足平８６ｂが連結されている。なお、図７（Ａ）の上面図では左右の脚８４ａ、８４ｂは図示を省略してある。
【００４９】
図８にはロボット１００を歩行させた際、接地脚となった左右の足平８６ａ、８６ｂの位置を上から見た様子を経時的に示してある。いわばロボット１００の足跡を示したものである。ロボット進行方向は矢印９０で示す方向とする。即ちロボット左足平８６ａが８６ａ１の位置で接地した後、右足平８６ｂが８６ｂ１の位置で接地する。次に左足平８６ａが８６ａ２の位置で接地して次に右足平８６ｂが８６ｂ２の位置で接地する。同様に次に左足平８６ａが８６ａ３の位置で接地する。
ここで例えば左足平８６ａが８６ａ２の位置で接地しているとき、区間９２で右脚８４ｂが遊脚となる。また右足平８６ｂが８６ｂ２の位置で接地しているとき、区間９４で左脚８４ａが遊脚となる。
上記歩行動作時、図８に破線９５で示す曲線が体幹位置８２の当初歩容データ上での軌跡、換言すれば当初歩容データ上での体幹目標位置の経時的変化を示すものである。
【００５０】
実施例３は、当初歩容データには破線９５で示す体幹目標位置の経時的変化のデータが含まれている際、この当初歩容データで実際のロボットを歩行させた場合に遊脚となるべき脚の足平が床に接触してしまった場合の体幹目標位置に対して補正量を設定するものである。
体幹位置の補正量は、遊脚となるべき脚の足平が床に接触した時点において、体幹目標位置をロボット体側方向の接地脚側に補正するように設定する。
例えば右脚８４ｂの遊脚期間９２において右足平８６ｂが床に接触した場合、その時点での体幹位置を矢印９８で示す実線９６の位置へ移動させるように補正量が設定される。すなわち矢印９８が補正量そのものを示している。そして左脚８４ａの遊脚期間９４において左足平８６ａが床に接触してしまった場合にも同様に補正量が設定される。ここで例えば、破線９５で示す体幹目標位置の当初歩容データでは常に遊脚が床に接触してしまう場合を仮定する。そして遊脚の足平が床に接触した時点の前後で漸増・漸減する補正量を設定したとする。このとき歩容データに補正量を加えた体幹目標位置の軌跡は、図８に実線９６に示すようになる。この補正された体幹目標位置の経時的変化によると、右脚８６ｂが遊脚期間にあるときは体幹目標位置がロボット体側方向でより左脚８６ａ側（接地脚側）に移動している。従って体幹の重心位置もより左脚８６ａ側に移動することになり、ロボット１００を右足８６ｂ側（遊脚側）へ傾けるモーメントが小さくなる。よってロボット１００の遊脚側への傾きが小さくなり、右脚（８６ｂ）の足平位置も上方へ移動する。
上記結果、補正された体幹目標位置によってロボットを制御すればロボットは遊脚を床へ接触することなく歩行させることが可能となる。さらに図８に実線９６に示すように補正後の歩容データも滑らかなものとなり、これを体幹目標位置とするロボットの歩行も滑らかなものとなる。
【００５１】
図８の当初の歩容データ中の体幹目標位置の経時的変化（破線９５）と補正量を加えた体幹目標位置の経時的変化（実線９６）を比較すると、補正量を加えた場合、ロボットの体幹がやや左右に揺れながら歩行する格好となる。しかし実施例１で説明したように図３のフローチャートにおけるステップＳ１０４からステップＳ１１４の処理を歩容データ全体に対して数回繰り返すことで、できるだけ小さい補正量を設定することが可能となる。従ってこれにより実現されたロボットの歩行は左右の振れもできるだけ小さく抑えられたものとすることができる。
【００５２】
なお、実施例３では他のリンク群を含まない体幹だけの重心位置を代表点とした。これは補正量の設定を容易にするためである。この他に、体幹以外のリンク群を含めたロボット全体の重心位置を代表点として選定することも可能である。但しこの場合、補正量を加えるべき対象とするパラメータには複数のパラメータが考えられる。例えば上述したように体幹目標位置そのものを接地脚側に移動させる向きの補正量を設定することが考えられる。その他に接地脚側の腕を接地脚側に向けて水平方向へ上げるよう補正量を設定してもロボット全体の重心位置は接地脚側へ移動させることができる。
【００５３】
そこで、ロボット全体の重心位置を代表点として選定する場合は図３に示すフローチャートの処理を次のように変更することで対応できる。すなわち、遊脚となるべき脚の足平が床に接触したとき、歩容データ上での接触時点を特定する（ステップＳ１０８）。次にこの接触時点と補正量データ上での時点を対応付ける（ステップＳ１１０）。この次に再びステップＳ１０４へ戻る。そして歩容データが終了するまでこの処理を繰り返す。歩容データ上の遊脚が床に接触したら、そのたびごとに歩容データ上での接触時点と補正量データ上での時点を対応付ける。こうして歩容データが終了した時点で遊脚が床に接触した時点と補正データ上での時点とが対応付けられたデータが得られる。このデータには遊脚が床に接触した時点が複数回記憶される場合もある。但しこの時点では補正量そのものは設定されていない。こうして得られたデータに対して、事後的に、遊脚が床に接触した時点におけるロボット全体の重心位置を接地脚側に移動させるように適切なパラメータを選定して補正量を設定する。上記処理は換言すれば、遊脚が予定外に接触するタイミングを歩容データの全体にわたって特定した後に、特定された時点毎に歩容データを補正する。これにより歩容データの全体に対する補正作業を1サイクルで行うことができるので、歩容データの完成までの時間と労力が節約される。
またこのとき補正量の設定はロボット歩行終了後オフラインで行えるので、ロボット全体の重心位置を接地脚側に移動させるためには、どのパラメータにどの程度補正量を加えたら良いか検討を加えながら補正量を設定することができる。
【００５４】
以上実施例１および実施例２では足平目標位置を補正量設定の対象とする例を示した。また実施例３では体幹目標位置（より具体的には胴部の重心目標位置）を補正量設定の対象とする例を示した。しかし補正量を設定する対象のパラメータは足平目標位置や体幹目標位置に限らない。例えば補正量として遊脚の足平目標位置の３次元位置を単に上方に移動させるように設定することも可能である。また、実施例では当初歩容データと補正量データを分離して夫々図１に示す歩容データ記憶部３４、補正量データ記憶部３２に記憶した。そしてロボットを制御する時点で図２に示すように補正量をフィードフォワード的に加算した。このように当初の歩容データと補正量データを分離して記憶しておくと、当初の歩容データをそのまま保存できるという利点がある。その一方で夫々に記憶部を用意しなければならない。そこで設定された補正量により直ちに歩容データを補正するように構成してもよい。
【００５５】
なお、以上の実施例により当初歩容データとこれに補正量を加算する補正量データにより歩容データは完成する。脚式ロボットの通常の歩行制御方法では、完成した歩容データをロボットに教示する。しかしながら、補正量を徐々に増やしながら遊脚の予定外の接地を避けるのに必要な最小の補正量を探索する場合には、補正前の当初歩容データに補正量を対応付けて記憶する方式が好ましい。従って、脚式ロボットの歩行を制御する方法でも、補正前の当初歩容データとその歩容データに対応する補正量をロボットに教示する工程と、補正前の歩容データをそれに対応する補正量で補正した歩容データから関節角を演算する工程を備えていることが好ましい。補正された歩容データに従ってロボットが動作したときに撓みが加わり、当初の歩容データが記述する運動を実現させることができるからである。
【００５６】
また当初歩容データを補正する工程では、当初歩容データ内のいずれかの代表点の目標位置を補正することも好適である。例えば足先に代表点が設定されていればその足先目標位置を上方に所定量だけ補正する、あるいは体幹（胴部）に代表点が設定されていればこの体幹目標位置を上方に補正することなどが考えられる。また遊脚となるはずの脚と反対側の腕の手先目標位置を体幹体側方向外側へ補正することも好適である。これによりロボット全体の重心位置がロボット体側方向に遊脚と反対側に移動するので、ロボットの遊脚側への傾きを小さくすることができる。よって遊脚全体が上方に移動し、遊脚とはるはずの足平が床へ接触することを回避することができる。
またロボットを実際に歩行させる床（歩行面）は略平坦であることが好ましい。ここで略平坦とはロボットがぶつかる障害物にならない程度の凹凸があってもかまわない。ロボットが連続して歩行する際に、各歩行期間（ロボット両脚の相対位置関係がある相対位置関係となった時点から同じ相対位置関係になるまでの期間）における歩行面が同等であれば良い。なお歩行面は水平である必要はなく、各歩行期間での歩行面の状態（凹凸など）が同等の条件であればよい。当初歩容データを補正する工程を繰り返す際、同じ状態の歩行面で行うことが好ましいからである。
【００５７】
さらに床（歩行面）は水平面に対して傾いた面であってもかまわない。この場合、当初歩容データには、所定の座標系における足平に設定された代表点目標位置の経時的データが含まれており、各時点の前記足平の、足裏面（床と接触する面）の位置を特定する工程を含むことが好ましい。そして所定の座標系に対する、ロボットが実際に歩行する床（歩行面）の位置を特定するデータを記憶する記憶装置から、前記歩行面の位置を読み出す工程と、前記「各時点の前記足平の、足裏面」と前記歩行面とが交差しない場合に、その足平を有する脚が歩容データ上では遊脚であるはずと判断する工程を含むことが好ましい。ロボット足裏面と、歩行面とが交差しない場合にその足平を有する脚が遊脚であるはずと判断することによって、歩行面が傾斜している場合でも、歩容データ上では遊脚であるはずか否かを特定することができるからである。ここで所定の座標系とは水平面内に直交する２軸を有し、鉛直方向に１軸を有する３次元座標系でもよいし、傾いた床面内に直交する２軸を有し、この床面に垂直な方向に１軸を有する３次元座標系でもよい。また歩容データ内の代表点目標位置を表す座標系と床面とを位置を特定する座標系とが異なっていても両座標系間の関係が既知であれば、足平リンクの代表点目標位置すなわち足裏面と床面とを同じ座標系で表現することができる。同じ座標系で表現できれば足裏面と床面とが交差するか否かも判断することができる。
【００５８】
また実施例では、足平代表点の座標と足平リンクの形状とから足平リンクの床面に対する最下点の座標を求めた。この最下点の座標が床面より上方であればその脚は遊脚であるはず、と判定できる。これに替わって当初歩容データ上で、各時点におけるロボットの夫々の脚が遊脚状態（床から離れている状態）であるか否かのデータが予め記憶装置に記憶されており、このデータに基づいて、当初歩容データ上の各時点において夫々の脚が遊脚であるはずか否かを判断する工程、を備えていることも好適である。夫々の脚が遊脚であるはずか否か、予めデータとして有していれば、ロボットを実際に歩行させた際に、夫々の脚が遊脚であるはずか否かを計算することなく判断することができるからである。当初歩容データを作成する際には、夫々の脚がいつ接地脚となるかまたは、いつ遊脚となるか、を計画しながら考作成される。従って当初歩容データを作成する際に、当初歩容データ上の各時点におけるロボットの夫々の脚が遊脚状態であるか否かのデータを同時に作成することが可能である。
【００５９】
実施例１から３は、歩容データ上では遊脚となるべき脚の足平が実際には床に接触した場合に、歩容データを補正する補正量を設定してロボット制御する場合を例示した。しかし本発明は遊脚となるべき脚が床に接触した場合に限らず、歩容データ上での想定外に遊脚が床以外の物体に接触してしまう場合にも適用可能である。その場合の処理は図３に示すフローチャート図において、遊脚となるべき脚が物体と離れる方向にいずれかの代表点目標位置を補正する補正量を設定すればよい。
【００６０】
以上、本発明の具体例を詳細に説明したが、これらは例示に過ぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成し得るものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【図面の簡単な説明】
【００６１】
【図１】実施例１のロボット制御装置のブロック図である。
【図２】アクチュエータ制御部のブロック図である。
【図３】実施例１のロボット制御のフローチャート図である。
【図４】足平ピッチ角を説明する図である。
【図５】補正量設定前後の足平位置の経時的変化を説明する図である。
【図６】実施例２による補正量設定前後の足平位置の経時的変化を説明する図である。
【図７】ロボットの模式的正面図と上面図である。
【図８】実施例３による補正量設定前後のロボット体幹目標位置の経時的変化を説明する図である。
【図９】ロボットの傾きにより遊脚が床に接触する様子を説明する図である。
【符号の説明】
【００６２】
１０：ロボット歩行制御装置
２０：歩容データ作成部
２４：アクチュエータ制御部
２６：フォースプレート
２８：接触時点特定部
３０：補正量設定部
３２：補正量データ記憶部
３４：歩容データ記憶部
４４：加速度演算部
４６：フィードバック制御部
４８：歩容生成部
５０：加速度センサ
５２、５２ａ、８６ａ、８６ｂ：足平
９５：歩容データ中の体幹目標位置の経時的変化を示す曲線
９６：補正量設定後の体幹目標位置の経時的変化を示す曲線
１００：脚式ロボット
【図１】
2007007794.tif 000003
【図２】
2007007794.tif 000004
【図３】
2007007794.tif 000005
【図４】
2007007794.tif 000006
【図５】
2007007794.tif 000007
【図６】
2007007794.tif 000008
【図７】
2007007794.tif 000009
【図８】
2007007794.tif 000010
【図９】
2007007794.tif 000011