(57)【特許請求の範囲】
【請求項１】
足裏の前後少なくとも２箇所に配置されており、路面までの距離を計測する複数の距離センサと、
足の目標軌道から脚の各関節の目標角の時系列データを算出するとともに算出した時系列データに追従するように脚の各関節を制御するコントローラと、を備えており、コントローラは、
距離センサによって、目的軌道上で予定されている離地タイミング以外で足平が路面に対して傾いたことを検知したときに、そのときの重心の加速度を算出するステップと、
算出した重心の加速度により実現される重心の速度を初期値とし、予め定められた期間の終端で予め定められた重心の速度を有することを終端条件としてＺＭＰ方程式を解いて重心の軌道を算出するステップと、
算出された重心の軌道から脚関節の目標角の時系列データを再計算するステップと、
を実行するとともに、再計算された目標角の時系列データに追従するように脚の各関節を制御することを特徴とする２脚歩行ロボット。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、２脚歩行ロボット（Biped Robot）に関する。
【背景技術】
【０００２】
２脚歩行ロボットを歩行させるためのデータは歩容データと呼ばれる。歩容データは、通常、重心（或いは体幹）目標位置と足目標位置の時系列データで表される。歩容データの各時点のデータから脚の各関節の目標角が算出され、その目標角に追従するように各関節が制御される。なお、本明細書では、「時系列データ」を「軌道」と称することがある。また、歩容データは重心と足の目標軌道で表されるものとする。
【０００３】
２脚歩行ロボットは、適切な歩容データを用いないと転倒してしまう。転倒するか否かは、ロボットが現実に歩行して初めて確認できる事項であるので、本明細書では、理論上転倒せずに歩行することが予想できることを便宜上、「安定に歩行することができる」と表現する。さらに、理論上で安定な歩行を実現することができる歩容データを便宜上「安定な歩容データ」と称する。また、以下では簡単のため「２脚歩行ロボット」を単に「ロボット」と称する。
【０００４】
安定な歩容データを生成する一つの手法は、ＺＭＰ方程式に基づいてロボットの重心軌道（時系列データ）を生成し、重心軌道から脚各関節の目標角を求めることである。転倒するか否かは、ロボットの重心軌道が支配的な要素だからである。多くの２脚歩行ロボットがＺＭＰ方程式に基づいて歩容データを生成している。
【０００５】
歩容データに予定されているとおりに各足が離地・着地すればよいが、外乱等によって実際には歩容データに予定されているとおりには動かない場合がある。ここで、「外乱」とは、例えば２脚歩行ロボットが他の物体と接触したときに当該他の物体から受ける接触力や、路面の想定外の起伏によって生じる２脚歩行ロボット全体の傾きなどである。
【０００６】
外乱等によって足が離地することがある。そのような場合は通常、足の一部（例えばつま先）が接地したまま他の一部（例えばかかと）が浮き出す。即ち、足平が予定外に路面に対して傾く。足平が路面に対して傾くと、足平を通じて体幹に床反力によるモーメントを加えることができなくなり、転倒に繋がる可能性が高くなる。そのため、足平が予定外に傾くことは避けなければならない。路面に対する足平の傾きを是正する技術が例えば特許文献１に開示されている。以下、路面に対する足平の傾きを単に足平の傾きと称する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００８−１８８６８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１の技術は、足平が傾き始めた際、体幹の傾きを元に戻そうとする制御（特許文献１では倒立制御と称している）と、傾いた足平を再び路面に面接触させようとする制御（特許文献１では倣い制御と称している）を巧みに組み合わせる。ここで、倒立制御は足平の傾きがより大きくなる方向に作用し、倣い制御は足平の傾きを小さくするように作用する。即ち、倒立制御と倣い制御はトレードオフの関係にある。特許文献１の技術は、このトレードオフを巧みに調整する技術である。
【０００９】
しかしながら、特許文献１の技術は、トレードオフを調整する技術であるため、倒立制御と倣い制御のいずれも最適とはならない。本発明は、特許文献１が開示する技術的思想とは全く異なる技術的思想に基づき、トレードオフという概念を要さずに、歩行安定性を確保しながら足平の傾きを元に戻す技術を提供する。
【課題を解決するための手段】
【００１０】
特許文献１における倒立制御とは、体幹の傾きを当初の目標角度に戻すという技術的思想に基づいている。本明細書が開示する新規な技術は、体幹の傾きを目標角度に戻すのではなく、体幹が傾いていく方向（即ち足平の傾きが増大する方向）の重心の加速度を脚の各関節の目標角に取り込むことによって、体幹を加速する慣性力の反力で足平の傾きを元に戻す。歩行安定性は、その加速度で安定して歩行ができるようにＺＭＰ方程式を使って重心軌道を作成し直すことによって確保する。別言すれば、この方法は、直近の期間（例えば数十ｍｓｅｃの間）は体幹が傾いていく方向へ体幹を加速するように脚の関節を制御することによって足平の傾きを抑えるとともに、長期的（例えば現在の遊脚が着地するまでの間）なスパンで歩行が安定するように脚の関節を制御する。本発明は以上のように、時間軸方向で短期的には足平の傾きを抑えるように、そして、長期的には歩行を安定させるように、脚の目標関節角を決定する。そのような技術思想によって、トレードオフという概念を導入することなく、足平の傾きの抑制と歩行安定性を両立する。なお、本発明は、足平の傾きを抑える期間と歩行を安定させるための期間を時間軸上で明示的に分けるものではない。重心の軌道を定めるＺＭＰ方程式において、直近の重心の軌跡を支配するパラメータ（現在時刻における重心の加速度）と所定時間後の重心軌道全体を支配するパラメータ（所定時間後の重心速度）の２つに着目することによって、短期的には足平の傾きを抑えるように、長期的に軌道全体としては歩行安定性が保たれるように重心軌道を生成する。
【００１１】
本明細書が開示する新規な２脚歩行ロボットは、各脚に複数の距離センサを備えている。距離センサは、足裏の前後少なくとも２箇所に配置されており、路面までの距離を計測する。コントローラは、足の目標軌道から脚の各関節の目標角の時系列データを算出するとともに算出した時系列データに追従するように脚の各関節を制御する。コントローラは、足の予定外の傾きを検知すると目標関節角の時系列データを再計算する。再計算する処置は以下の通りである。重心加速度算出ステップ：距離センサによって予定外（足の目的軌道上で予定されている離地タイミング以外）に足平が路面に対して傾いたことを検知したときに、そのときの重心の加速度を算出する。重心軌道決定ステップ：算出した重心の加速度により実現される重心の速度を初期値とし、予め定められた期間の終端で予め定められた重心の速度を有することを終端条件としてＺＭＰ方程式を解いて重心の軌道を算出する。関節目標角算出ステップ：算出された重心の軌道から脚関節の目標角の時系列データを再計算する。そしてコントローラは、関節目標角算出ステップで再計算された目標角の時系列データに追従するように脚の各関節を制御する。
【００１２】
ここで、「予定外に足平が路面に対して傾いたとき」とは、歩容データ（足の目標軌道）上で予定されている離地タイミング以外に足平が路面に対して傾いたとき」という意味である。歩容データ上で予定されている離地の際、即ち、予定されているとおりに足平が傾いたときには、特別な処理をすることなく、元々の歩容データに従って脚の各関節を制御すればよいからである。
【００１３】
上記コントローラが実行する処理の特徴は、特に、重心軌道決定ステップにある。安定な歩行を実現するための重心の軌道は、ＺＭＰ方程式で与えられる。ＺＭＰ方程式は、重心位置の加速度を与える方程式である。発明の実施形態の欄で説明するように、ＺＭＰ方程式は、現在注目する期間について、重心軌道の初期速度と終端速度を境界条件として与えると、重心軌道を一意に決定することができる。上記の重心軌道決定ステップでは、足平が傾いたときの重心加速度によって定まる現時点での重心速度を初期値として与える。これによって、予定していなかった重心の加速度を新しい重心軌道に取り込み、その加速度を実現する重心軌道を決定する。新たな加速度を実現するように脚の各関節を制御することによって、重心を加速する力の反力で足平の傾きを抑制する。初期値を上記のとおりに与えることによって、直近の期間（例えば数十ｍｓｅｃの間）は体幹が傾いていく方向へ重心を加速する重心軌道が求まり、そのような重心軌道に基づいて脚関節を制御することによって足平の傾きが抑えられる。他方、重心軌道の終端では、過大とならない適切な終端速度を境界条件として与える。この終端速度条件によって、重心軌道の終端で速度が過大とならないことが保証される。そのような終端速度条件の下で得られる重心軌道は、その終端で速度が増大しないこと、即ち、重心速度が増加の一途を辿って制御不能なまでに過大となることが回避される。即ち、歩行安定性が確保される。
【発明の効果】
【００１４】
本発明の２脚歩行ロボットは、予定外に足平が路面に対して傾いた場合であっても、歩行安定性を確保しつつ足平の傾きを抑えることができる。
【図面の簡単な説明】
【００１５】
【図１】２脚歩行ロボットの側面図を示す。
【図２】重心軌道決定処理のフローチャートを示す。
【図３】２脚歩行ロボットが傾いた状態の一例を示す。
【図４】３個の距離センサを備える場合の距離センサの用法を説明する図である。
【発明を実施するための形態】
【００１６】
図１に、歩行中の２脚歩行ロボット１０の側面図を示す。以下、２脚歩行ロボット１０を単にロボット１０と称する。脚の各関節には関節角を制御するアクチュエータと、関節角を検出するエンコーダが内蔵されている。ロボット１０はコントローラ２０を備えており、コントローラ２０が、歩容データに基づいて脚の各関節を制御する。ここで、「各関節を制御する」とは、歩容データから得られる各関節の目標角度に追従するようにアクチュエータを制御することを意味する。コントローラ２０は、通常は歩容データ（足の目標軌道と重心の目標軌道）から各関節の目標角の時系列データを算出し、算出した目標角に追従するように各関節を制御する。コントローラ２０は、歩容データに予定されていない足平の傾きが検知された場合、歩容データに記述されている重心軌道に関わらず、重心の加速度に基づいて重心軌道を再計算する。歩容データの生成方法、及び、歩容データから関節目標角を生成する手法については、従来から知られている手法を用いればよいので詳しい説明は省略する。
【００１７】
ロボット１０は、足裏に２個の距離センサ１６ａ、１６ｂを備えており、これら距離センサによって足平の傾きを検出する。距離センサ１６ａはつま先に相当する位置に配置されており、距離センサ１６ｂは踵に相当する位置に配置されている。距離センサ１６ａ、１６ｂは、夫々の位置で路面と足裏面との間の距離を計測する。２個の距離センサのセンサデータから、路面に対する足平の傾き角度を求めることができる。
【００１８】
歩容データ上に予定されていない足平の傾きが検知された場合の処理を説明する前に、歩行安定性を確保する重心軌道について説明する。図１において、符号１０Ａは現在時刻Ｔ０におけるロボットの姿勢を示しており、符号１０Ｂは時刻Ｔ１におけるロボットの予定姿勢を示している。符号ｘｇ（Ｔ０）は、現在時刻Ｔ０における重心Ｇのｘ座標を示しており、符号ｚｇ（Ｔ０）は、現在時刻Ｔ０における重心Ｇのｚ座標を示している。符号符号ｑｘ（Ｔ０）は、現在時刻Ｔ０におけるＺＭＰのｘ座標を示している。ｘｐ（Ｔ０）は、現在時刻Ｔ０における足位置のｘ座標を示している。ここで、足位置ｘｐは、足のつま先に固定された点の位置で表される。
【００１９】
以下では、重心軌道のｘ成分ｘｇ（ｉ）（符号「ｉ」は時離散時間系における時刻を表す）について説明する。以下の議論はｙ成分についても成立する。ＺＭＰは、足裏に分布する圧力（反力）に等価な集中反力が床面と交差する点で定義される。重心Ｇに作用するピッチ軸（ｙ軸）周りのモーメントをｒｙ（ｉ）で表すと、時刻（ｉ）における重心Ｇを中心とするピッチ軸（ｙ軸）回りの釣り合い方程式は次の（数１）で与えられる。
【００２０】
【数１】
0005463991.tif 000002
【００２１】
ここで、ｍはロボット全体の質量を表し、ｇは重心加速度を表す。ｚｇ（ｉ）は重心Ｇのｚ座標を表す。上付き文字の（２）は時間２回微分を表す。即ち、ｘｇ（２）（ｉ）は、重心Ｇの加速度のｘ成分を表す。（数１）が、ｘ軸方向のＺＭＰ方程式に相当する。（数１）は、時刻ｉにおけるＺＭＰ位置ｑｘ（ｉ）と、重心位置ｘｇ（ｉ）、ｚｇ（ｉ）とそれらの加速度ｘｇ（２）（ｉ）、ｚｇ（２）（ｉ）の関係を示している。
【００２２】
重心Ｇの加速度のｚ成分、即ち、ｚｇ（２）（ｉ）は予め与えられる。ｚｇ（２）（ｉ）は、歩行時の腰の上下動にほぼ相当する。重心Ｇの加速度のｘ成分、即ち、ｘｇ（２）（ｉ）、及び、重心Ｇの速度のｘ成分ｘｇ（１）（ｉ）は、微小時間間隔Δｔを用いたオイラー近似に基づいて次の（数２）で表される。
【００２３】
【数２】
0005463991.tif 000003
【００２４】
（数２）より、重心Ｇの加速度のｘ成分ｘｇ（２）（ｉ）は重心Ｇの連続する３つの時刻の位置、ｘｇ（ｉ）、ｘｇ（ｉ＋１）、ｘｇ（ｉ＋２）によって次の（数３）で近似できる。
【００２５】
【数３】
0005463991.tif 000004
【００２６】
（数３）を（数１）に代入し、ｒｙ（ｉ）＝０とおくと次の（数４）が得られる。
【００２７】
【数４】
0005463991.tif 000005
【００２８】
（数４）は、（数１）のＺＭＰ方程式において、ｘ軸方向の重心加速度ｘｇ（２）（ｉ）を連続する３つの時刻の重心位置（ｘ成分）の変数、即ち、ｘｇ（ｉ＋１）、ｘｇ（ｉ）及び、ｘｇ（ｉ−１）によって近似した３項方程式である。（数４）は、ＺＭＰの位置ｑｘ（ｉ）によって、重心位置のｘ成分の時間的に連続する３点ｘｇ（ｉ＋１）、ｘｇ（ｉ）及び、ｘｇ（ｉ−１）の位置関係が定まることを表している。
【００２９】
ｉ＝１からｎまでについて、（数４）をマトリクス表現すると次の（数５）が得られる。なお、時刻（ｎ）は、図１において遊脚（右脚）が着地する予定時刻Ｔ１に相当する。歩行速度は予め与えられており、従って着地予定時刻Ｔ１は定まっている。現在時刻Ｔ０も検知することができるから、（数５）の時間スパンは現在時刻Ｔ０から着地予定時刻Ｔ１までの時間ＴＳである。（数５）の次数ｎは、時間スパンＴＳを予め与えられたサンプリングタイムΔｔで除した値で定まる。
【００３０】
【数５】
0005463991.tif 000006
【００３１】
なお、（数５）のｑｘ（１）とｑｘ（ｎ）は、他のｑｘ（ｉ）すなわち、ＺＭＰの位置とは別の意味を含んでいる。（数５）の第１行は、初期速度が現在時刻の重心速度に一致することを保証する初期境界条件に相当し、第ｎ行は、遊脚が着地する予定時刻Ｔ１における重心速度が予定された速度に一致することを保証する終端境界条件に相当する。（数２）の定義から、ｑｘ（１）＝ｖ（Ｔ０）Δｔ、ｑｘ（ｎ）＝ｖ（Ｔ１）Δｔである。ｖ（Ｔ０）とｖ（Ｔ１）は、第１図に示した通り、現在時刻Ｔ０と遊脚着地予定時刻Ｔ１における重心Ｇの速度のｘ成分である。（数５）より、重心軌道のｘ成分［Ｘｇ］（即ち、ｘｇ（ｉ），ｉ＝１〜ｎ）は、次の（数６）で求めることができる。
【００３２】
【数６】
0005463991.tif 000007
【００３３】
（数６）は、初期境界条件と終端境界条件を含むＺＭＰ軌道［Ｑｘ］を与えると重心軌道［Ｘｇ］が求まることを表している。なお、（数６）は、ＺＭＰ軌道［Ｑｘ］に対する重心軌道［Ｘｇ］を与える。即ち、得られた時刻（ｉ）の重心位置ｘｇ（ｉ）は、ＺＭＰ位置に対する相対位置を示している。そこで、（数６）によってＺＭＰ軌道［Ｑｘ］に対する相対的な重心軌道［Ｘｇ］を求めたのち、時刻（０）の重心位置ｘｇ（０）が図１の時刻Ｔ０における重心位置ｘｇ（Ｔ０）に一致するように、ＺＭＰ軌道［Ｑｘ］と重心軌道［Ｘｇ］を路面（ＸＹ平面）に平行にシフトする。この処理によって、（数６）によって求めた重心軌道と、それまでの重心軌道（終端における位置はｘｇ（Ｔ０））との連続性が維持される。こうして、時刻Ｔ０からＴ１までの重心軌道が求まる。なお、ＺＭＰは足平が受ける床反力の中心点であるから、ＺＭＰ位置が足平面内となるように足平位置が定められる。
【００３４】
（数６）で得られる重心軌道が、歩行安定性を保証していることを説明する。（数６）の解［Ｘｇ］を得るために与える境界条件は、初期時刻における重心速度と終端時刻における重心速度である。このうち、初期時刻における重心速度は、現在時刻における実際の重心速度を与えればよい。これは、現在時刻までの過去の重心軌道と、現在時刻から将来の重心軌道の連続性を確保するためである。終端時刻における重心速度として適切な値、例えば、歩行速度に等しい速度Ｖ０、を与えると、（数６）で得られる重心軌道［Ｘｇ］は、その終端で必ず速度Ｖ０を有することが保証される。軌道終端における重心の速度（ｘ軸方向の速度）は、ＺＭＰ位置から離れるほど大きくなる。このことは、倒立振子の先端の速度は、先端位置が支点から遠いほど早くなることから類推される。倒立振子の先端が重心に対応し、倒立振子の支点がＺＭＰに対応する。ＺＭＰ方程式は、終端境界条件として適切な大きさの速度を与えると、その速度が実現される位置を導出する。適切な速度が実現できる位置とは、ＺＭＰからそう遠く離れていない位置（ＸＹ平面内における位置）に他ならない。重心位置がＺＭＰからそう遠く離れていないということは、ロボット自体が大きく傾かないことを意味する。即ち、ＺＭＰ方程式は終端境界条件として適切な大きさの速度を与えると、終端位置としてロボットが大きく傾くことのない重心位置を与える。終端において重心の速度が与えられた適切な大きさであり、重心の位置もＺＭＰからそう遠く離れていない位置となることが、重心軌道の終端で歩行安定性が確保されることを意味する。重心軌道の終端時刻を２歩先、或いは３歩先の着地予定時刻とすることによって、２歩先、或いは３歩先まで安定して歩行できることが保証される。
【００３５】
脚式ロボット１０は、上記（数６）によって、２歩先まで歩行安定性が確保された重心軌道を算出している。但しここでは、（数６）で考慮する時間期間（ｉ＝０〜ｎまでの期間）として、現在時刻から２歩目の着地予定時刻までの時間間隔を採用する。また、ロボット１０の歩容データには足の目標軌道（図１におけるXｐ（ｉ））も含まれている。足の目標軌道は、現在の着地位置と次の着地位置の間を予め与えられた曲線で結んで生成されている。ロボット１０は、上記した重心軌道生成処理を予め与えられた周期（例えば２０ｍｓｅｃ毎）に行い、結果として常に歩行安定性が確保された重心軌道に基づいて脚の各関節を制御している。なお、目標関節角の時系列データは、各時刻における重心の位置と足の位置からいわゆる逆キネマティクス（重心逆キネマティクス）によって求められる。
【００３６】
上述したように脚式ロボット１０のコントローラ２０は、定期的に現在時刻から２歩先までの重心軌道を生成する。コントローラ２０は、通常は定期的に重心軌道（歩容データ）を更新するが、歩容データに予定されていない足平の傾きが検知された場合、歩容データに記述されている重心軌道に関わらず、重心の加速度に基づいて重心軌道を再計算する。このときのコントローラ２０の処理を次に説明する。
【００３７】
図２にコントローラ２０が実行する処理のフローチャートを示す。コントローラ２０は、２個の距離センサ１６ａ、１６ｂからセンサデータを取得し（Ｓ２）、足平が予定外に路面から傾いていないかを判断する（Ｓ４）。コントローラ２０は、センサデータから得られる路面に対する足の傾斜角を、歩容データによって定められる足平の予定された傾斜角を比較し、歩容データ上では傾斜角ゼロ及び距離ゼロ（即ち足平が路面に面接触している状態）であるにも関わらず、センサデータが足平の傾斜角がゼロでないことを示している場合、予定外の傾きが発生していると判断する。
【００３８】
足平に予定外の傾きが発生していない場合（Ｓ４：ＮＯ）、コントローラ２０は、定期的に更新された歩容データに基づいて脚関節を制御する。即ち、コントローラ２０は、歩容データに記述されている重心軌道（及び足の目標軌道）から逆キネマティクスによって各関節の目標角を算出し（Ｓ１０）、実際の関節角が得られた関節目標角に追従するように各関節を制御する（Ｓ１２）。
【００３９】
他方、足平に予定外の傾きが発生している場合（Ｓ４：ＹＥＳ）、コントローラ２０は、そのときの重心の加速度を算出する（Ｓ６）。加速度算出の手法は後述する。次いでコントローラ２０は、得られた加速度によって実現される重心の速度を求める。求めた速度を初期値とし、また所定時間後の重心の速度を終端条件として与えて（数６）を解き、重心軌道を再計算する（Ｓ８）。所定時間後とは、典型的には遊脚の次の（或いは２歩先の）着地タイミングまでである。加速度の求め方は後述する。
【００４０】
ステップＳ８で重心軌道が算出された場合、コントローラ２０は、それまで用いていた重心軌道に代えてステップＳ８で新たに得られた重心軌道に基づいて、逆キネマティクスによって各関節の目標角を算出し（Ｓ１０）、実際の関節角が得られた関節目標角に追従するように各関節を制御する（Ｓ１２）。ステップＳ８で得られる重心軌道は、足平の予定外の傾きに起因する重心の加速度から得られるものである。即ち、その重心軌道の初頭の期間はステップＳ６で求めた重心の加速度を反映しており、その重心軌道から得られる各脚関節の目標角の時系列データは、その重心の加速度に合わせて脚の姿勢を変化させるものとなる。即ち、そのようにして求められた脚関節の目標角の時系列データは、路面に対する足平の傾きを戻す方向に脚全体を動かす。
【００４１】
また、ステップＳ８で得られる重心軌道の終端での重心速度は、境界条件として与えられた値となる。従って終端速度として適切な値（例えば、予め定められた歩行速度）を与えれば、例え重心軌道の初期において加速度（速度）が大きくとも、終端における重心速度は必ず既知の適切な値（例えば歩行速度）となることが保証される。即ち、重心軌道の終端においては定常な歩行動作に戻ることが保証される。
【００４２】
以上の通り実施例の２脚歩行ロボット１０は、路面に対して足平が予定外に傾いた場合、傾きに起因する重心の加速度を積極的に許容することによって足平の傾きをゼロに戻す。さらに、算出される重心軌道は、初期の期間では足平の傾きに起因する加速度の影響を受けるが、重心軌道の終端では必ず既知の速度に落ち着くので歩行の安定性が保証される。
【００４３】
足平の傾きに起因する重心加速度の求め方について説明する。図３に足平１４が傾いたときのロボット１０の姿勢の一例を示す。実線が傾いたロボットの姿勢を示しており、破線は元々の歩容データ上で予定されている姿勢を示している。このときの実際のＺＭＰは足先の位置にある（なぜならば、ＺＭＰは足平が地面から受ける反力の中心であるから、足先だけで接地している場合にはＺＭＰは当然に足先の位置となる）。実際のＺＭＰのｘ座標とｚ座標を（ｑｘ、ｑｚ）で表す。足平が予定外に傾いたときには、実際のＺＭＰは目標ＺＭＰと相違している。この相違に基づくと、重心の加速度ｘｇｄ（２）は次の（数７）で求めることができる。
【００４４】
【数７】
0005463991.tif 000008
【００４５】
（数７）において、ｑｘｄ、ｑｚｄは、目標ＺＭＰを示しており、ｑｘは実際のＺＭＰを示している。
【００４６】
重心加速度の他の求め方を説明する。図３に示すように、重心加速度ｘｇｄ（２）は、路面に対する足平の傾きをθを使って次の（数８）で表すこともできる。
【００４７】
【数８】
0005463991.tif 000009
【００４８】
（数８）において、ｘｒは、ロボット１０の回転中心、すなわち、実ＺＭＰ位置に相当する。また、ｋ１、ｋ２は、設定パラメータ（ゲイン）である。
【００４９】
（数７）又は（数８）によって、足平が予定外に傾いたときの重心の加速度が求まる。先に示したように、重心軌道を求めるためのＺＭＰ方程式（数６）は、初期境界条件として速度を与える。現在時刻における重心速度をＶｇ０とし、（数６）における時間間隔をΔｔとすると、（数７）、又は（数８）によって得られた重心加速度ｘｇｄ（２）と、（数６）の初期境界条件の速度Ｖｇ＿ｉｎｉｔとの関係は、次の（数９）で表される。
【００５０】
【数９】
0005463991.tif 000010
【００５１】
（数９）のＶｇ＿ｉｎｉｔが、重心加速度ｘｇｄ（２）を考慮したときの重心初期速度に相当する。ロボット１０のコントローラ２０はステップＳ８において、（数９）で与えられるＶｇ＿ｉｎｉｔを初期境界条件に用いて（数６）を解く。
【００５２】
足平が拇指球に相当する位置でピッチ軸周りの関節を有しており、踵に対してつま先が揺動する足平を有する２脚歩行ロボットの場合の接地センサの用法について説明する。図３に、つま先１４ａと踵１４ｂがジョイント１４ｃによって揺動可能に連結されている足平の側面図を示す。足平１４は、３個の接地センサ１６ａ、１６ｂ、及び、１６ｃを備えている。接地センサ１６ａと１６ｃはつま先１４ａの底面に取り付けられている。接地センサ１６ａはつま先１４ａの先端に配置されており、接地センサ１６ｃはつま先１４ａの後端に配置されている。接地センサ１６ｂは踵１４ｂの底面に配置されている。図３（Ａ）は、足平全体が接地している状況を示しており、図３（Ｂ）は踵１４ｂに対してつま先１４ａが屈曲しており、つま先１４ａが接地している状況を示している。図３（Ｃ）は、足平の前方が段差Ｗから突出している状況を示している。
【００５３】
図３（Ａ）のように、足平全体が接地している場合、コントローラ２０は、最先部の接地センサ１６ａと最後部の接地センサ１６ｂを使って足平の傾きを計測する。図３（Ｂ）のように、踵１４ｂは浮いているがつま先１４ａは接地している場合は、コントローラ２０はつま先１４ａの前後の接地センサ１６ａ、１６ｃを使って足平の傾きを計測する。図３（Ｃ）のように、足平の先端が段差Ｗから突出している場合は、コントローラ２０はつま先１６ａの後方の接地センサ１６ｃと踵１４ｂの接地センサ１６ｂを使って足平の傾きを計測する。
【００５４】
以上、本発明の具体例を詳細に説明したが、これらは例示に過ぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成し得るものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【００５５】
１０：２脚歩行ロボット
１４：足平
１６ａ、１６ｂ、１６ｃ：接地センサ
２０：コントローラ
【図１】
0005463991.tif 000011
【図２】
0005463991.tif 000012
【図３】
0005463991.tif 000013
【図４】
0005463991.tif 000014