以下、添付図面を参照してこの発明に係る脚式移動ロボットの制御装置を説明する。尚、脚式移動ロボットとしては2足歩行ロボットを例にとる。
図1はその脚式移動ロボットの制御装置を全体的に示す概略図である。
図示の如く、2足歩行ロボット1は左右それぞれの脚部リンク2に6個の関節を備える(理解の便宜のために各関節をそれを駆動する電動モータで示す)。6個の関節は上から順に、股(腰部)の脚部回旋用の関節10R,10L(右側をR、左側をLとする。以下同じ)、股(腰部)のロール方向(Y軸まわり)の関節12R,12L、同ピッチ方向(X軸まわり)の関節14R,14L、膝部のロール方向の関節16R,16L、足首のロール方向の関節18R,18L、同ピッチ方向の関節20R,20Lから構成される。
関節18R(L),20R(L)の下部には足平(足部)22R,22Lが取着されると共に、最上位には上体(基体)24が設けられ、その内部にマイクロコンピュータからなる制御ユニット26(後述)などが格納される。上記において股関節(あるいは腰関節)は関節10R(L),12R(L),14R(L)から、足関節(足首関節)は関節18R(L),20R(L)から構成される。また股関節と膝関節とは大腿リンク28R,28L、膝関節と足関節とは下腿リンク30R,30Lで連結される。
上記の構成により、脚部リンク2は左右の足についてそれぞれ6つの自由度を与えられ、歩行中にこれらの6*2=12個の関節を適宜な角度で駆動することで、足全体に所望の動きを与えることができ、任意に3次元空間を歩行させることができる(この明細書で「*」はスカラに対する演算としては乗算を、ベクトルに対する演算としては外積を示す)。
尚、この明細書で後述する上体の位置およびその速度は、上体24の所定位置、具体的には上体24の重心位置などの代表点の位置およびその移動速度を意味する。
図1に示す如く、足関節の下方には公知の6軸力センサ44が取着され、力の3方向成分Fx,Fy,Fzとモーメントの3方向成分Mx,My,Mzとを測定し、足部の着地の有無および床反力(接地荷重)などを検出する。また、上体24には傾斜センサ60が設置され、Z軸(鉛直方向(重力方向))に対する傾きとその角速度を検出する。また各関節の電動モータには、その回転量を検出するロータリエンコーダが設けられる。
図2に示すように、足平22R(L)の上方には、ばね機構32が装備されると共に、足底にはゴムなどからなる足底弾性体34が貼られる。ばね機構32は具体的には、足平22R(L)に取り付けられた方形状のガイド部材と、足首関節18R(L)および6軸力センサ44側に取り付けられ、前記ガイド部材に弾性材を介して微動自在に収納されるピストン状部材とからなる。
図中に実線で表示された足平22R(L)は、床反力を受けていないときの状態を示す。床反力を受けるとバネ機構32と足底弾性体34がたわみ、足平は図中に点線で表示された位置・姿勢に移る。この構造は、着地衝撃を緩和するためだけでなく、制御性を高めるためにも重要なものである。尚、その詳細は前記した特開平5−305584号に記載されているので、詳細な説明は省略する。
更に、図1では図示を省略するが、2足歩行ロボット1の適宜な位置にはジョイスティック62が設けられ、外部から必要に応じて直進歩行しているロボットを旋回させるなど歩容に対する要求を入力できるように構成される。
図3は制御ユニット26の詳細を示すブロック図であり、マイクロ・コンピュータから構成される。そこにおいて傾斜センサ60などの出力はA/D変換器70でデジタル値に変換され、その出力はバス72を介してRAM74に送られる。また各電動モータに隣接して配置されるエンコーダの出力はカウンタ76を介してRAM74内に入力される。
制御ユニット内にはCPUからなる第1、第2の演算装置80,82が設けられており、第1の演算装置80は後述の如く、ROM84に格納されている歩容に基づいて後述の如く関節角変位指令を算出し、RAM74に送出する。また第2の演算装置82はRAM74からその指令と検出された実測値とを読み出し、各関節の駆動に必要な制御値を算出してD/A変換器86とサーボアンプを介して各関節を駆動する電動モータに出力する。
ここで、この明細書および図面で使用する用語について定義する(尚、定義しない用語に関しては、本出願人が前記した技術とは別に提案した出願(特願平8−214261号)で使用した定義に従う)。
『歩容』は、ロボット工学における一般的な定義と異なり、目標運動パターンと床反力パターンを合わせたものを指称する意味で使用する。但し、床反力パターンとしては、例えば『ZMP軌跡だけ』というように、部分情報であっても良い。そのため、目標運動パターンだけを出力して床反力パターンに関する情報を出力しない装置に対して「歩容生成装置」と言う言葉を用いない。
各脚には、通し番号をつける。第n脚に作用する床反力を第n足平床反力という(n:1または2。以下同じ)。全脚に作用する床反力を合成したものを全床反力という(ロボット工学では一般的には床反力と呼ばれるが、足平床反力と区別するためにここでは『全床反力』という)。
足平床反力は作用点とそこにかかる力と力のモーメントによって表現され、同一の足平床反力に対して、表現の組み合わせは無限通りある。その中には、鉛直軸まわりの成分を除くモーメント成分が0でかつ作用点が床面上にある表記が存在する。この表現における作用点を、ここでは足平床反力中心点という(本出願人が別途提案した後述する特開平6−79657号では『接地圧重心点』と称した)。
同様に、全床反力は作用点とそこにかかる力と力のモーメントによって表現され、同一の全床反力に対して表現の組み合わせは無限通りある。その中には、鉛直軸まわりの成分を除くモーメント成分が0でかつ作用点が床面上にある表現が存在する。この表現における作用点を、ここでは全床反力中心点という。
全床反力の目標値を目標全床反力という。目標全床反力は、通常、目標運動パターンに対して動力学的に平衡する全床反力である。従って、通常、目標全床反力中心点は、目標ZMPに一致する。
尚、始めに触れたように、目標ZMP(Zero Moment Point )は次のように定義される。即ち、目標運動パターンによって発生する慣性力と重力の合力を動力学的に求め、これが床面上のある点に作用するモーメントが、鉛直軸まわりの成分を除き0であるならば、その点を目標ZMP(Zero Moment Point)という。目標ZMPは、合力の垂直方向力成分が0でない限り、一義的に求められる。以下の説明では、理解しやすくするために、目標ZMPという言葉を用いる場合もあるが、厳密には目標全床反力中心点と言うべき箇所が多い。
各足平床反力の目標値を目標各足平床反力という。但し、目標全床反力とは異なり、目標運動パターンが決まっていても目標各足平床反力は一義的には決定されない。実際のロボットに作用する全床反力を実全床反力という。実際のロボットに作用する各足平床反力を実各足平床反力という。
ここで、この発明の課題について再説すると、局所的な傾きや段差に対して先に提案した両脚コンプライアンス制御では良好な姿勢安定性を得ることが困難であると共に、その不都合は足首コンプライアンス制御を用いれば解消することができるが、両者を単純に併用するだけでは干渉しあい、実全床反力と実各足平床反力が望ましい値からずれたり、発振する不都合があった。
その問題点を先の図40に示す状況で説明すると、第1足平はかかとに予期しなかった過大な床反力を受けているため、第1足首のまわりに過大な実足平床反力モーメントが発生する。足首コンプライアンス制御は、このモーメントを0にしようと第1足首を図43に示すように回転させる。
しかしながら、足首の回転によって、第1足平のかかと位置が高くなるので、第1足平床反力の鉛直成分が減少する。この結果、目標全床反力中心点(目標ZMP)まわりの実全床反力モーメントが変化する。これは、両脚コンプライアンス制御の制御量である実全床反力モーメントが、足首コンプライアンス制御に干渉されることを意味する。
従って、足首コンプライアンス制御による干渉を考慮しないで、両脚コンプライアンス制御を、足首コンプライアンス制御がない場合と同様に働かせると、目標全床反力中心点(目標ZMP)まわりの実全床反力モーメントが0からずれたり、干渉による振動や発振が生じる。
それを防止する方法のひとつとして、両脚コンプライアンス制御と足首コンプライアンス制御の間の干渉量を求め、それを打ち消すような操作量を加えることによって干渉しないようにすることが考えられるが、歩行中は姿勢が時々刻々と変化し、干渉関係も時々刻々と変化するため、この手法で干渉を回避することは極めて難しい。
また、図43に示す状況では、第1足平が接触している床は想定していた床よりも登り傾斜なので、第1足平は、目標歩容よりもつまさきを上げるべきである。それにもかかわらず、足首コンプライアンス制御によりつまさきが下がってしまうことは、足首コンプライアンス制御が適切に作用していないとも言える。
以上のように、足首コンプライアンス制御は足平の着地点の局所的な床の傾きや段差には効果があるが、長い距離でゆったりと変化する傾斜やうねりには、却って悪影響を与える場合がある。
従って、実施例に係る装置においては、脚式移動ロボットに作用する床反力、より具体的には、目標全床反力中心点まわりの実全床反力モーメントと、目標各足平床反力中心点まわりの実各足平床反力モーメントを容易かつ適切に制御できるようにした。
また、それによって大域的なうねりや傾斜だけでなく、局所的な凹凸や傾斜なども含む予期しない床形状変化があっても、その影響をあまり受けずに安定した姿勢でロボットを歩行継続させるようにした。
図4は、この実施例に係る脚式移動ロボットの制御装置(主として図3の第1の演算装置80に相当)の構成および動作を機能的に示すブロック図である。以下、図4を参照してこの装置の全体構成を概説する。
この装置は歩容生成器を備え、歩容生成器は目標歩容を生成し、出力する。目標歩容は、前述の定義の通り、目標運動パターンと目標床反力パターン、より具体的には目標上体位置・姿勢軌道、目標足平位置・姿勢軌道、目標全床反力中心点(目標ZMP)軌道および目標全床反力軌道からなる。目標床反力パターンは、このように、目標全床反力中心点軌跡を含む(後述する機構変形補償を行わないならば、目標床反力パターンとしては目標全床反力中心点軌跡だけでも良い)。
この実施例において歩容生成器が出力する目標全床反力は、目標運動パターンに対して動力学的に平衡する全床反力である。従って、目標全床反力中心点は、目標ZMPに一致する。
図5にロボット1が平地を歩行するときの目標運動パターンの一例を示す。これに対応する目標ZMP軌道の床面上軌跡を図6に、タイム・チャートを図7に示す。この歩容の期間に床に接触したままの足平を、第1足平、もう一方を第2足平ということとする。尚、歩容生成器の詳細は先に提案した特願平8−214261号に詳細に述べられているので、これ以上の説明は省略する。
図4の説明に戻ると、この装置は目標床反力分配器を備え、目標床反力分配器は、目標全床反力中心点(目標ZMP)と目標足平位置・姿勢を主な入力とし、目標各足平床反力中心点を決定して出力する。実際には、歩容生成器から歩容のパラメータ(例えば、両脚支持期の時間や遊脚足平の目標着地位置など)や、歩容の時期・時刻(例えば、現在時刻が両脚支持期の初めから0.1secであるなど)などの情報も必要に応じて取り込む。
図5に示すような歩容に対して、目標床反力分配器は、目標各足平床反力中心点が以下の条件を満足するように設定する。
条件1)目標各足平床反力中心点軌跡は連続である。
条件2)両脚支持期では、目標第1足平床反力中心点はかかとに、目標第2足平床反力中心点はつまさきに存在する。
条件3)このとき目標第1足平床反力中心点と目標第2足平床反力中心点を結ぶ線分上に、目標全床反力中心点が存在する。
条件4)片脚支持期では、目標第1足平床反力中心点は、目標全床反力中心点に一致する。
条件5)片脚支持期の間に、目標第2足平床反力中心点は、つまさきからかかとに移動する。
これら条件を満足する目標第1足平床反力中心点軌跡のタイム・チャートを図8に、目標第2足平床反力中心点軌跡のタイム・チャートを図9に示す。尚、この図では足首(関節18,20R(L))から足平22R(L)への垂直投影点を原点とし、図1に示すように足平前方向をX軸の正の向き、足平左方向をY軸の正の向きにとる。
目標床反力分配器は、更に、付随的ではあるが、目標各足平床反力も決定して出力する。目標各足平床反力は、ばね機構32などのたわみ補償のために必要である。
次式を用いて上記のように設定された目標各足平床反力中心点に対応する目標各床反力を決定すれば、目標各足平床反力の合力は目標全床反力に一致しなければならないと言う条件を満足する。
目標第1足平床反力=目標全床反力*(目標第2足平床反力中心点と目標ZMPの距離)/(目標第1足平床反力中心点と目標第2足平床反力中心点の距離) 目標第2足平床反力=目標全床反力*(目標第1足平床反力中心点と目標ZMPの距離)/(目標第1足平床反力中心点と目標第2足平床反力中心点の距離)
・・・式1
このように求めた目標各足平床反力は連続的に変化するので、衝撃の少ない歩行を実現するために適している。尚、上記の詳細は本出願人が別途提案した技術(特開平6−79657号)に記述されている。
図4の説明に戻ると、この装置は姿勢安定化制御演算部を備え、姿勢安定化制御演算部はロボットのセンサ情報に基づいてロボットの状態を推定し、補償全床反力を算出する。即ち、実際にロボットが歩行あるいは直立しているときなどには後述する変位コントローラによって実関節変位を目標関節変位に完全に追従させることができたとしても、ロボットの位置・姿勢は必ずしも望ましい位置・姿勢にならない。
ロボットの姿勢を長期的に安定化させるためには、ロボットを望ましい位置・姿勢に復元させるために必要な力とモーメントを求め、これを目標全床反力中心点(目標ZMP)を作用点として付加的に発生させる必要がある。この付加的な力とモーメントを補償全床反力という。また、補償全床反力のモーメント成分を補償全床反力モーメントという。
尚、脚式移動ロボットの目標歩容が床反力以外の反力を環境から受けるように想定し、それを例えば、目標対象物反力と称し、先に述べた目標ZMPの定義を次のように拡張しても良い。即ち、目標運動パターンによって発生する慣性力と重力と目標対象物反力の合力を動力学的に求め、それが床面上のある点に作用するモーメントが、鉛直軸まわりの成分を除いて零であるならば、その点を改めて目標ZMPとするようにしても良い。
もし、ロボット1が完全剛体であって、変位コントローラによって実関節変位を目標関節変位に完全に追従させることができたと仮定すると、足平のばね機構32および足底弾性体34のたわみによって生じるロボット全体の位置・姿勢の摂動的な運動は、以下の6自由度に分解できる。
モード1)目標全床反力中心点(目標ZMP)を中心とした前後軸まわり回転(即ち、左右傾き)
モード2)目標全床反力中心点(目標ZMP)を中心とした左右軸まわり回転(即ち、前後傾き)
モード3)目標全床反力中心点(目標ZMP)を中心とした鉛直軸まわり回転(即ち、スピン)
モード4)前後平行移動揺れ
モード5)左右平行移動揺れ
モード6)上下平行移動揺れ
この内で、モード4とモード5は、足平のばね機構32および弾性体34が前後左右方向のせん断力を受けてたわむことによって発生するものである。ばね機構32および足底弾性体34は剪断方向の剛性が高いように製作するので、この揺れは極めて少なく、歩行に及ぼす悪影響はほとんどない。
残り4自由度の内、モード3とモード6はこの発明に直接の関連を有しないので、この実施例および後述する第2の実施例ではモード1とモード2に対する制御だけを行うこととする。モード1とモード2に対する制御は、これがないとほとんどの場合ロボットが転倒するので、重要度は極めて高い。尚、第3の実施例でモード3に対する制御を行う。
モード1を制御するための操作量は、補償全床反力の前後軸(X軸)まわりモーメント成分である。モード2を制御するための操作量は、補償全床反力の左右軸(Y軸)まわりモーメント成分である。従って、補償全床反力の成分の内、前後軸方向モーメント成分と左右軸方向モーメント成分だけを求めれば良い。他の成分は、この実施例(および第2の実施例)では用いないので0で良い。
尚、以降は次の定義に従う。即ち、補償全床反力のモーメント成分を補償全床反力モーメントMdmd(詳しくは目標全床反力中心点(目標ZMP)まわりの補償全床反力モーメントMdmd)という。図5に示す如く、ロボットの前方向をX軸、左横方向をY軸、上方向をZ軸にとり、第1足平の足首直下の床面上の点を原点とした座標系を支持脚座標系と呼び、断らない限り、位置、力およびモーメントはこの座標系で表現されるものとする。また、MdmdのX成分をMdmdx、Y成分をMdmdy、Z成分をMdmdzと記述する。上体24の傾斜偏差(即ち、実上体傾斜−目標上体傾斜)θerr のX成分をθerrx, Y成分をθerry、これらの時間微分値を(dθerrx / dt),(dθerry / dt)と記述する。
MdmdxおよびMdmdyは、例えば次式の制御則によって決定される。
Mdmdx = - Kthxθerrx - Kwx (dθerrx / dt)
Mdmdy = - Kthyθerry - Kwy (dθerry / dt)
・・・式2
ここで、Kthx,Kthy,KwxおよびKwyは、上体傾斜安定化制御ゲインである。
後述する複合コンプライアンス動作決定部は、目標全床反力と補償全床反力の合力に実全床反力を一致させようと働く。
図4の説明に戻ると、この装置は実各足平床反力検出器を備え、実各足平床反力検出器は、6軸力センサ44によって実各足平床反力(その合力が実全床反力)を検出する。更に、関節のエンコーダによって検出される実変位(あるいは変位指令)に基づき、上体に固定された座標系に対する各足平の相対位置・姿勢を算出し、それによって6軸力センサ44の検出値を座標変換し、上体に固定された座標系で表現された実各足平床反力を算出した後、更に、支持脚座標系に変換する。
この装置はロボット幾何学モデル(逆キネマティクス演算部)を備え、ロボット幾何学モデルは、上体位置・姿勢と足平位置・姿勢を入力されると、それらを満足する各関節変位を算出する。この実施例におけるロボット1のような1脚あたりの関節自由度が6である場合には、各関節変位は一義的に求まる。
この実施例では逆キネマティクスの解の式を直接的に求めておき、式に上体位置・姿勢と足平位置・姿勢を代入するだけで各関節変位を得るようにした。即ち、ロボット幾何学モデルは、目標上体位置・姿勢と複合コンプライアンス動作決定部で修正された修正目標足平位置・姿勢軌道(機構変形補償入り修正目標足平位置・姿勢軌道)を入力し、それらから12個の関節(10R(L)など)の関節変位指令(値)を算出する。
この装置は変位コントローラ(前記した第2の演算装置82に同じ)を備え、変位コントローラは、ロボット幾何学モデル(逆キネマティクス演算部)で算出された関節変位指令(値)を目標値としてロボット1の12個の関節の変位を追従制御する。
この装置は前記複合コンプライアンス動作決定部を備え、複合コンプライアンス動作決定部は以下の2つの要求を満足させようと、目標足平位置・姿勢軌道を修正する。
要求1)ロボットの位置・姿勢制御のために、実全床反力を姿勢安定化制御部が出力する補償全床反力(モーメントMdmd)と目標全床反力の合力に追従させる。ロボットの姿勢傾きだけを制御したい場合には、目標全床反力中心点まわりの実全床反力水平方向モーメント成分だけを補償全床反力モーメントMdmdに追従させる。
要求2)各足平の接地性を確保するために、できるかぎり目標各足平床反力中心点まわりの実各足平床反力モーメントの絶対値を小さくする。
尚、補足すると、通常は実全床反力を補償全床反力と目標全床反力の合力に一致させながら目標各足平床反力中心点まわりの実各足平床反力モーメントを0にすることが、物理的に不可能な場合が多い。従って、要求1)と要求2)は完全に両立させることはできず、ある点で妥協しなくてはならない。
上記を前提として図10フロー・チャート(構造化フロー・チャート)を参照してこの装置の動作を説明する。尚、図の左端に該当する処理を行う図4装置の構成要素を示す。
先ずS10において装置を初期化し、S12を経てS14に進み、タイマ割り込みを待機する。タイマ割り込みは50msごとになされ、即ち、制御周期は50msである
続いてS16に進んで歩容の切り替わり目、即ち、支持脚の切り替わり目か否か判断し、否定されるときはS22に進むと共に、肯定されるときはS18に進んでタイマtをイニシャライズし、S20に進んで目標歩容パラメータを設定する。前記の如く、歩容パラメータは、運動パラメータと床反力パラメータ(ZMP軌道パラメータ)から構成される。
続いてS22に進み、目標歩容の瞬時値を決定する。ここで『瞬時値』は制御周期ごとの値を意味し、目標歩容瞬時値は、目標上体位置・姿勢、目標各足平位置・姿勢、および目標ZMP位置から構成される。尚、ここで『姿勢』はX,Y,Z空間における『向き』を意味する。
続いてS24に進んで目標各足平床反力中心点を求める。これは目標床反力分配器の説明で述べたように行う。具体的には、図8および図9に示すように、設定した目標各足平床反力中心点軌跡の現在時刻tにおける値を求めることで行う。
続いてS26に進んで目標各足平床反力を求める。これは目標床反力分配器の説明で述べた式1を用いて目標各足平床反力を演算することで行う。
続いてS28に進み、前記した傾斜センサ60などの出力から上体24の傾斜などロボット1の状態を検出する。
続いてS30に進み、ロボット1の状態などから姿勢を安定化するための(目標全床反力中心点(目標ZMP)まわりの)補償全床反力モーメントMdmdx,Mdmdyを求める。具体的には、上体傾斜が検出されたとき姿勢安定化を図るために前記した式2に従って補償全床反力モーメントMdmdx,Mdmdyを演算する。
続いてS32に進んで実各足平床反力を検出する。これは前記の如く、6軸力センサ44の出力から検出する。
続いてS34に進み、両脚補償角θdbvおよび各足平補償角θnx(y)を決定する。これは、前記した複合コンプライアンス動作決定部が行う作業である。
その複合コンプライアンス動作決定部の作業について説明する。説明の便宜のため、両脚支持期において図11に示すように第1足平22R(L)と第2足平22L(R)に実各足平床反力が作用している状況と仮定する。
ここでベクトルFnactは第n足平床反力の力成分を表す。ベクトルMnactは第n足平床反力のモーメント成分を表す。ベクトルMnactの向きは、向きに対して時計回りのモーメントが床から足平に作用していることを表す。
この瞬間の目標全床反力は、図12に示すようになっていると仮定する。ちなみに、目標全床反力中心点(目標ZMP)における目標全床反力モーメントベクトルMsumrefは垂直である(定義により、目標ZMPは目標全床反力モーメントの水平方向成分が0である点であるから)。
これを式1に従って目標各足平床反力に分配すると、図13に示すようになる。同図において、ベクトルFnrefは目標第n足平床反力の力成分を表す。ベクトルMnrefは目標第n足平床反力のモーメント成分を表す。ベクトルMnrefの向きの表現は、Mnactと同様である。
説明のため、上体姿勢が左後ろに倒れそうな状態を想定する。
前述の姿勢安定化制御演算部では、ロボット1の上体傾斜偏差検出値θerrx,θerryに基づいて補償全床反力モーメントMdmdを算出する。この実施例では鉛直軸(Z軸)まわりのスピンを制御しないので、補償全床反力モーメントMdmdの鉛直軸成分は0である。上体位置の揺れも制御しないので、補償全床反力モーメントの力成分も0である。この状態に対応する補償全床反力モーメントMdmdを図14に示す。
姿勢を復元させるためには、目標全床反力中心点(目標ZMP)まわりの実全床反力モーメントの水平成分を、目標全床反力モーメントMsumrefと補償全床反力モーメントMdmdの和の水平成分に追従させれば良い。
一方、目標全床反力中心点(目標ZMP)では目標全床反力モーメントMsumrefの水平方向成分は0である。従って、前後左右の姿勢傾きを復元させるためには、目標ZMPまわりの実全床反力モーメントの水平成分を、Mdmdの水平成分に追従させれば良い。
この実施例にあっては複合コンプライアンス動作決定部は、以下の要求をできる限り満足するように足平の位置・姿勢を修正する。
要求1)ロボットの姿勢傾斜を安定化制御するために、目標全床反力中心点(目標ZMP)まわりの実全床反力モーメントの水平方向(X,Y軸方向)成分を、補償全床反力モーメントMdmdの水平方向成分に追従させる。
要求2)各足平の接地性を確保するために、できるかぎり目標各足平床反力中心点まわりの実各足平床反力モーメントの絶対値を小さくする。
但し、前述の通り、要求1)と要求2)は、完全に両立させることはできず、ある点で妥協しなくてはならない。
足平の位置・姿勢の修正は、この実施例では次のように行う。
1)目標第1足平床反力中心点Q1と目標第2足平床反力中心点Q2を含み、かつ水平面と垂直な平面の法線ベクトルVを求める。Vの大きさは1とする。Vを図15に示す。
2)目標第1足平床反力中心点Q1の座標を、目標全床反力中心点(目標ZMP)を回転中心に法線ベクトルVまわりに、ある回転角θdbvだけ回転移動する。移動した後の点をQ1’とする。同様に、目標第2足平床反力中心点Q2の座標を、目標全床反力中心点(目標ZMP)を回転中心に法線ベクトルVまわりに回転角θdbvだけ回転移動する。移動した後の点をQ2’とする。
この回転角θdbvを両脚補償角という。始点がQ1、終点がQ1’のベクトルをベクトルQ1Q1’とする。同様に、始点がQ2、終点がQ2’のベクトルをベクトルQ2Q2’とする。図16にQ1’とQ2’を示す。
3)目標第1足平を、姿勢は変えずにベクトルQ1Q1’だけ平行移動(ほぼ上下移動)させる。同様に、目標第2足平を、姿勢は変えずにベクトルQ2Q2’だけ平行移動させる。移動後の目標各足平を図16に太線で示す。
4)次に、目標第1足平をQ1’を中心に、前後方向軸(X軸)まわりに回転角θ1x、左右方向軸(Y軸)まわりに回転角θ1yだけ回転させる。同様に、目標第2足平を目標第2足平をQ2’を中心に前後方向軸(X軸)まわりに回転角θ2x、左右方向軸(Y軸)まわりに回転角θ2yだけ回転させる。回転角θnx,θnyをそれぞれ第n足平X補償角、第n足平Y補償角という。回転後の目標各足平を図17に太線で示す。
以上の補償動作量が過大でなければ、接地圧力分布は変わっても、接地領域(足底面の圧力が正の領域)は変わらない。このような場合には、補償動作量に比例して各足平に装着されたばね機構32や足底弾性体34などが変形し、変形量に応じた実各足平床反力が発生する。この結果、補償動作量と補償動作によって発生する実床反力の変化量との間の関係は、以下に示す良好な特性を持つ。
特性1)両脚補償角θdbvだけを操作して目標各足平位置を移動させると、下がった足平の実足平床反力の力成分が増加し、上がった足平の実足平床反力の力成分が減少する。このとき、修正目標各足平床反力中心点まわりの実各足平床反力モーメントは、ほとんど変化しない。
特性2)第n足平X補償角だけを操作して目標第n足平姿勢を回転させると、目標第n足平床反力中心点に作用する実第n足平床反力のモーメントのX成分だけが変化し、その他の床反力成分は少ししか変化しない。同様に、第n足平Y補償角だけを操作して目標第n足平姿勢を回転させると、実第n足平床反力のモーメントのY成分だけが変化し、その他の床反力成分は少ししか変化しない。
特性3)両脚補償角θdbv、各足平X補償角および各足平Y補償角を同時に操作すると、実各足平床反力の変化量は、それぞれを単独に操作したときの変化量の和になる。
特性1および特性2は、これらの操作に独立性があることを示し、特性3はこれらの操作に線形性があることを示していると言える。
図18は複合コンプライアンス動作決定部の演算処理を示すブロック図であり、同図を参照してこの作業を説明する。
概説すると、補償全床反力モーメント分配器において補償全床反力モーメントMdmdの分配を行う。次に、実各足平床反力と分配された補償全床反力モーメントなどから、両脚補償角決定部および第n足平X(Y)補償角決定部において前述の補償角θdbvおよびθnx(y)を決定する。
次に、決定された各種補償角に基づいて修正目標足平位置算出部は、補償された足平位置・姿勢(これを修正目標足平位置・姿勢という)を幾何学演算によって求める。最後に、機構変形補償入り修正目標足平位置・姿勢算出部は、目標各足平床反力によって発生が予想されるばね機構32や足底弾性体34の変形量を求め、それらを打ち消すように修正目標足平位置・姿勢をさらに修正する。
以下詳説すると、補償全床反力モーメント分配器は、補償全床反力モーメントMdmdを、両脚補償モーメントMdmddb、各足平補償モーメントMdmd1x,y,Mdmd2x,yに分配する。両脚補償モーメントMdmddbは、両脚補償角(足平上下量)θdbvを操作することによって目標全床反力中心点(目標ZMP)まわりに各足平床反力の力成分が作るモーメントの目標値である。
両脚補償モーメントMdmddbのV方向まわりの成分をMdmddbvと記述する。尚、ベクトルVは複合コンプライアンス動作決定部の説明で定義したベクトルである。Vに直交し、鉛直方向にも直交するベクトルをUとすると、両脚補償モーメントMdmddbのU方向成分Mdmddbuは0に設定される。両脚補償角θdbvを操作しても、床反力のU方向モーメント成分を発生することはできないからである。
この実施例では補償全床反力モーメントMdmdの鉛直方向成分が0なので、Mdmddbの鉛直方向成分Mdmddbzも0に設定される。
第1足平補償モーメントMdmd1は、第1足平補償角θ1x,θ1yを操作することによって目標第1足平床反力中心点まわりに発生させたいモーメントである。第1足平補償モーメントMdmd1のX成分をMdmd1x、Y成分をMdmdlyと記述する。第2足平補償モーメントMdmd2は、第2足平補償角θ2x,θ2yを操作することによって目標第2足平床反力中心点まわりに発生させたいモーメントである。第2足平補償モーメントMdmd2のX成分をMdmd2x、Y成分をMdmd2yと記述する。
分配は、例えば次のように行う。
Mdmddbv = Wdbx * Mdmdx + Wdby * Mdmdy
・・・式3
Mdmd1x = W1x * (Mdmdx - Wint * Vx * Mdmddbv)
Mdmd1y = W1y * (Mdmdy - Wint * Vy * Mdmddbv)
Mdmd2x = W2x * (Mdmdx - Wint * Vx * Mdmddbv)
Mdmd2y = W2y * (Mdmdy - Wint * Vy * Mdmddbv)
・・・式4
ここで、Wdbx,Wdby,W1x,W1y,W2x,W2yおよびWintは分配用重み変数である。VxはベクトルVのX成分の値、VyはベクトルVのY成分の値である。この中で、Wintは、両脚補償角を操作することによって発生した全床反力モーメントを各足平補償角を操作することによって打ち消すためのものである。
式3と式4の演算処理を行う補償全床反力モーメント分配器のブロック図を図19に示す。
歩行時の分配用重み変数Wdbx,Wdby,W1x,W1y,W2x,W2yおよびWintの設定例を図20に示す。図20のパターンは、以下の注意点を考慮して決定することが望ましい。
注意点1)両脚補償角と各足平補償角が不連続的に変化すると、関節に過大なトルクが発生する。そこで、両脚補償角と各足平補償角を連続的に変化させるために、分配用重み変数は連続的に変化させる。
注意点2)両脚補償角および各足平補償角を操作することによって発生する実床反力モーメントが、なるべく補償全床反力モーメントMdmdに近い値になるように、分配用重み変数を決定する。
この際、直立時や歩行時など状況に応じて以下に示すように設定方針を変えた方が良い。直立時などのように、両脚補償モーメントのV方向成分Mdmddbv、各足平補償モーメントMdmd1,Mdmd2を忠実に実各足平床反力に発生させることができる状況では以下のように設定する。
この状況では目標全床反力中心点(目標ZMP)まわりの実全床反力モーメントの水平方向成分を、補償全床反力モーメントMdmdの水平方向成分に一致させるために、(即ち、前述の複合コンプライアンス動作決定部に対する要求1を満足するために、)式5と式6の両方をなるべく満足するように重みを設定すべきである。
Mdmddbv*Vx + Mdmd1x + Mdmd2x = Mdmdx
・・・式5
Mdmddbv*Vy + Mdmd1y + Mdmd2y = Mdmdy
・・・式6
これに式3、式4を代入すると、式5は式7に、式6は式8に変換される。
(Wdbx * Mdmdx + Wdby * Mdmdy)*Vx + W1x * (Mdmdx - Wint * Vx * (Wdbx *
Mdmdx + Wdby * Mdmdy)) + W2x * (Mdmdx - Wint * Vx * (Wdbx * Mdmdx +
Wdby * Mdmdy))= Mdmdx
・・・式7
(Wdbx * Mdmdx + Wdby * Mdmdy)*Vy + W1y * (Mdmdy - Wint * Vy * (Wdbx *
Mdmdx + Wdby * Mdmdy)) + W2y * (Mdmdy - Wint * Vy * (Wdbx * Mdmdx +
Wdby * Mdmdy)) = Mdmdy
・・・式8
MdmdxとMdmdyが任意の値を取っても、式7と式8が恒等的に成立するためには、式9、式10、および式11を同時に満足すれば良い。
Wint = 1 ・・・式9
W1x + W2x =1 ・・・式10
W1y + W2y =1 ・・・式11
即ち、以上の状況では式9、式10および式11を同時に満足するように、重みを決定すれば良い。
歩行時ではMdmddbvを目標にして両脚補償角θdbvを操作して足平の位置を修正しても、実全床反力モーメントの発生量がMdmddbvに較べて不足する場合がある。例えば図21のように両脚支持期の初期にロボットが後傾して第1足平が未だ着地していない状況では、θdbvによって第1足平の位置を下げても、実床反力は変化しない。
同様に、Mdmd2を目標にして第2足平補償角θ2を操作して第2足平の角度を修正しても、実床反力モーメントの増加量がMdmd2に較べて不足する場合がある。例えば、図22のように両脚支持期の後半にロボットが後傾している状況では、θ2によって第2足平のかかとを下げても実床反力は変化しない。
従って、式5、式6を満足するように各重みを設定しても、複合コンプライアンス制御によって発生する実全床反力の増加量が補償全床反力モーメントMdmdに届かない場合がある。このようなことが生じる可能性が高い状況では、式5、式6の左辺の値を1より大きくすべきである。
歩行時の分配用重み変数設定例である図20では、Wintを0に設定することによって、図21の状況のように、両脚補償角θdbv を操作しても実全床反力モーメントが発生できなくなっても、各足平補償角を操作して不足分を補うようにした。
好都合なことに、図21のように後傾すると第2足平のかかとが結果的に下がって床に接地しやすくなるので、第2足平補償角を操作することによって実全床反力モーメントを発生させることができるようになる。
また、後傾していないときには両脚補償角θdbvを操作することによる実全床反力モーメントが発生するが、第2足平のかかとが床に接地しないので、第2足平補償角を操作しても実全床反力モーメントは発生しない。
つまり、両脚補償角θdbvが有効に働くときには各足平補償角が有効に働かず、各足平補償角が有効に働くときには両脚補償角θdbvが有効に働かないので、結果的に両脚補償角および各足平補償角を操作することによって発生する実床反力モーメントの総量は、ほぼ補償全床反力モーメントMdmdに等しくなる。
状況によっては、両脚補償角および各足平補償角を操作することによって発生する実床反力モーメントの総量が補償全床反力モーメントMdmdよりも大きくなってしまう場合がある。
しかし、この場合でも、Mdmdがこの実施例のように姿勢安定化のためのフィードバック操作量であるならば、あまり問題にならない。何故ならば、Mdmdの大きさが多少違っていても、一般的に制御系に言えることであるが、制御系のオープンループゲインが多少変化するだけで、クローズドループ特性はほとんど変わらないからである。
注意点3)片脚支持期では、両脚補償角用の分配用重み変数であるWdbx,Wdbyの絶対値を小さくする。片脚支持期では両脚補償角を変化させても、接地していない足平が無駄に上下するだけで、実各足平床反力は変化しないからである。
注意点4)足平の接地性を確保するために、目標足平床反力の力成分が小さいときには、その足平の足平補償角のための分配用重み変数の絶対値を小さくする。特に、足平が床から遠く離れているときには、その足平の足平補償角を動かしても、その足平の実足平床反力は変化しないので、不要な動きをさせないためにも、その足平の足平補償角のための分配用重み変数の絶対値を小さくすべきである。
注意点5)両脚補償角を操作することによって制御できる実全床反力モーメントの方向と、各足平補償角を操作することによって制御できる実全床反力モーメントの方向は通常異なる。
例えば、両脚補償角θdbvを操作することによって発生する実全床反力モーメントの向きは必ずV方向であり、V方向に直交する成分を発生させることはできない。一方、各足平補償角を操作することによって発生できる実全床反力モーメントの向きは、足平の接地状況によって制約を受ける。
例えば、つまさきのエッジだけまたはかかとのエッジだけが接地している場合には、エッジ線方向にモーメントを発生することはできない。両脚支持期では、この特性を考慮して、なるべく無駄なく両脚補償角および各足平補償角を操作する。
例えば、両脚補償角を操作するための分配重みWdbx,Wdbyは次のように決定する。
X成分がWdbx、Y成分がWdby、Z成分が0のベクトルをWdbとすると、式3はベクトルWdbとMdmdの内積になっている。従って、MdmdをベクトルWdb方向成分とその直交成分に分解し、ベクトルWdb方向成分だけを抽出して、ベクトルWdbの大きさを乗じたものが、式3によって求められるMdmddbvであると言える。
この場合のMdmddbvを図23に示す。これは、両脚補償角を操作することによって実全床反力モーメントのWdb方向成分を制御するフィードバック制御系を構成することを意味する。もし、Wdb方向がベクトルVと直交していたら、両脚補償角をいくら操作しても実全床反力モーメントのWdb方向成分は発生しないから、このフィードバック制御系はただ無駄に両脚補償角を操作するだけになる。
従って、無駄な動きを減らした場合には、Wdb方向をベクトルV方向に一致させるか、またはなるべく近づけるべきである。また、補償全床反力モーメントMdmdのWdb方向成分を、各足平補償角に頼らずに両脚補償角を操作するだけで発生させたいならば、WdbとVの内積が1になるように設定する。一部を各足平補償角に頼らせたいならば、WdbとVの内積が1より小さくなるように設定する。
ところで、足平の横幅が狭い場合には、各足平補償角を操作することによって発生し得る実各足平床反力モーメントのX成分は小さくなる。この場合には、Wdbxを大きめに設定する。Wdb方向とベクトルV方向は一致しなくなり、両脚補償角の変動が増加するが、安定性が増す。
両脚補償角決定部について更に詳説すると、図24は両脚補償角決定部の演算処理のブロック図であり、両脚補償角θdbvは図示の如く演算される。
図24を参照して説明すると、目標第1足平床反力中心点Q1に作用するF1actと目標第2足平床反力中心点Q2に作用するF2actが、目標全床反力中心点Pのまわりに発生させるモーメントMf1f2actを、次式により求める。
Mf1f2act = PQ1*F1act + PQ2*F2act ・・・式12
ここで、PQ1は始点がP、終点がQ1のベクトル、PQ2は始点がP、終点がQ2のベクトルである。
また、式12の代わりに、次式を用いても実際上はほとんど問題がない。
Mf1f2act = PQ1*F1act + PQ2*F2act+ M1act+ M2act ・・・式12a
式12aは、目標全床反力中心点まわりに作用する実全床反力モーメントMnactを算出する式になっている。尚、式12は、目標全床反力中心点まわりに作用する実全床反力モーメントから、目標各足平床反力中心点まわりに作用する実各足平床反力モーメントを減じたものになっている。
次に、Mf1f2actのベクトルV方向成分Mf1f2actvを抽出する。これは、ベクトルの内積演算を用いた次式によって得られる。尚、ベクトルVは前述の動作説明において図15に示したVである。
Mf1f2actv = Mf1f2act・V ・・・式13
次に、Mf1f2actvをローパスフィルタに通してMf1f2actvfiltを得る。
次に、両脚補償モーメントV方向成分Mdmddbvを補償用フィルタに通し、それを、Mf1f2actvfiltから減じ、偏差モーメントV方向成分Mdiffvを得る。
尚、補償用フィルタは、Mdmddbvから実全床反力モーメントまでの伝達関数の周波数応答特性を改善するものである。
次に、足平ばね機構などの変形による両脚補償モーメントV方向成分への影響を打ち消すための両脚機構変形補償角θffdbvを求める。これは、いわゆるフィードフォワード補償である。
具体的には、両脚補償モーメントV方向成分Mdmddbvと変形量との関係を表す機構コンプライアンスモデルを用い、目標第1足平床反力中心点Q1と目標第2足平床反力中心点Q2を結ぶ線分の変形角度を求め、それの極性を反転したものを両脚機構変形補償角θffdbvとすれば良い。
両脚機構変形補償角θffdbvは、近似的には次式により求めれば良い。
θffdbv =−α*Mdmddbv ・・・式14
ここでαは所定の定数である。
最後に次式によって両脚補償角θdbvを得る。ここでKdbは制御ゲインであり、通常、これは正の値に設定する。
θdbv = Kdb * Mdiffv+θffdbv ・・・式15
第n足平補償角決定部について説明すると、図25はその中の第1足平X補償角決定部の演算処理を示すブロック図であり、第1足平X補償角θ1xは図示の如く演算する。説明は省略するが、第1足平Y補償角θ1y、第2足平X補償角θ2x、第2足平Y補償角θ2yも同様に求める。ここでは第1足平X補償角θ1xを求めるアルゴリズムだけを説明する。
第1足平床反力モーメントX成分M1actxをローパスフィルタに通してM1actfiltxを得る。第1足平補償モーメントX成分Mdmd1xを補償用フィルタに通し、それを、M1actfiltxから減じ、偏差モーメントMdiff1xを得る。両脚補償角決定と同様、補償用フィルタは、Mdmd1xから実全床反力までの伝達関数の周波数応答特性を改善するものである。
次に、両脚補償角決定と同様、足平ばね機構などの変形による第1足平補償モーメントX成分への影響を打ち消すための第1足平X機構変形補償角θff1xを求める。これは、いわゆるフィードフォワード補償である。
具体的には、第1足平補償モーメントX方向成分Mdmd1xと変形量との関係を表す機構コンプライアンスモデルを用い、第1足平の変形角度を求め、それの極性を反転したものを第1足平X機構変形補償角θff1xとすれば良い。
第1足平X機構変形補償角θff1xは、近似的には次式により求めれば良い。
θff1x=−α1x*Mdmd1x ・・・式16
ここでα1xは所定の定数である。
最後に次式によって第1足平X補償角θ1xを得る。ここでK1xは制御ゲインであり、通常、これも正の値に設定する。
θ1x = K1x * Mdiff1x+θff1x ・・・式17
尚、図示のブロック線図は、演算処理順序を変えるなどの等価変形をしても良い。
図18に戻って説明を続けると、修正目標足平位置・姿勢算出部は、両脚補償角θdbv、第1足平X補償角θ1x、第1足平Y補償角θ1y、第2足平X補償角θ2x、第2足平Y補償角θ2yに基づき、前述の複合コンプライアンス動作の足平位置・姿勢修正手法に従って目標足平位置・姿勢を修正し、修正目標足平位置・姿勢を得る。
機構変形量算出部は、目標各足平床反力によって発生が予想されるばね機構32や足底弾性体34の変形量を求める。
機構変形補償入り修正目標足平位置・姿勢算出部は、算出された機構変形量を打ち消すように、修正目標足平位置・姿勢をさらに修正し、機構変形補償入り修正目標足平位置・姿勢を得る。
例えば、図26に示すような機構変形量が予想されるときには、機構変形補償入り修正目標足平位置・姿勢は、図27に実線で示す位置・姿勢に修正される。即ち、図27に示す機構変形補償後の足平が目標足平床反力を受けて変形したときの位置・姿勢が、図26に示す機構変形補償前の足平位置・姿勢に一致するように、機構変形補償入り修正目標足平位置・姿勢を算出する。
機構変形補償は、ばね機構32や足底弾性体34の変形によって生じる実足平位置・姿勢のずれをフィードフォワード的に打ち消す制御であり、この制御がない場合に比較し、より一層、目標歩容に近い歩行を実現することができる。
上記を前提として図10フロー・チャートの説明に戻ると、前記の如く、S34において上記した補償角を決定する。
図28はその作業を示すサブルーチン・フロー・チャートである。
同図を参照して説明すると、先ずS100において前記したベクトルVを求め、S102に進んで分配用重み変数を図20に示すように設定し、現在時刻tでのこれらの値を求める。続いてS104に進み、式3および式4によって補償全床反力モーメントMdmdを両脚補償モーメントMdmddbvと各足平補償モーメントMdmdnx(y)に分配し、S106に進んで既述の如く両脚補償角θdbvを求め、S108に進んで各足平補償角θnx(y)を求める。
次いで図10フロー・チャートのS36に進み、目標各足平床反力に基づいて機構変形補償量を算出し、S38に進んで目標足平位置・姿勢を補償角θdbv,θnx(y)に応じて修正し、更にこれを機構変形補償量に応じて修正し、機構変形補償入り修正目標足平位置・姿勢を得る。
次いでS40に進み、上体位置・姿勢と機構変形補償入り修正足平位置・姿勢から関節変位指令(値)を算出し、S42に進んで実関節変位を算出された関節変位指令(値)にサーボ制御し、S44に進んで時刻をΔt更新し、S14に戻って上記の処理を繰り返す。
この実施例は上記の如く構成したので、これによって、概括すれば、実全床反力の制御と実各足平床反力の制御が殆ど干渉しないようになり、それらを容易に制御することができる。
即ち、この実施例に係る装置は、先に提案した技術に対して以下の点を改良した。即ち、特開平5−305584号公報で提案した足首コンプライアンス制御では、足首または足底の基準点などの足平に固定された点における実床反力モーメントを検出し、それに基づいて前記固定されたを中心に足平を回転させていたが、この実施例に係る装置では、移動する目標足平床反力中心点における実各足平床反力モーメントを算出し、それに基づいて目標足平床反力中心点を中心に足平を回転させるように変更し、その点まわりのモーメントを望ましい値に制御するようにした。
この結果、実全床反力と実各足平床反力がほとんど干渉することなく、容易に制御することが可能となった。より干渉を少なくするために、各瞬間における想定していた足底接地領域内にもっと適切な点を選定しても良い。
更には、ロボットに作用する床反力、より具体的には目標全床反力中心点(目標ZMP)まわりの実全床反力モーメントと目標各足平中心点まわりの実各足平床反力モーメントを容易かつ適切に制御することができる。換言すれば、先に提案した両脚コンプライアンス制御および足首コンプライアンス制御の併用に比較して、制御の干渉がなく、実全床反力と実各足平床反力が望ましい値からずれたり発振することがない。
従って、大域的なうねりや傾斜だけでなく、局所的な凹凸や傾斜なども含む予期しない床形状変化があっても、その影響をあまり受けずに脚式移動ロボットに作用する床反力を適切に制御することができる。
また、脚式移動ロボットの姿勢安定化制御を容易に実現できると共に、脚式移動ロボットが受ける着地衝撃を低減することができ、脚式移動ロボットの接地性を高め、歩行時のスリップやスピンを防止することができる。更に、脚式移動ロボットのアクチュエータの負荷を低減することができる。
また、特開平5−305586号公報で提案した両脚コンプライアンス制御では実全床反力(各足平床反力の合力)の目標全床反力中心点(目標ZMP)まわりのモーメント成分を検出し、その値が望ましい値になるように制御していたが、この実施例に係る装置においては、目標各足平床反力中心点に作用する足平床反力の内のモーメント成分を除いた並進力成分の合成が目標全床反力中心点(目標ZMP)まわりに作用するモーメントを検出し、その値を望ましい値になるように制御するように変更した(尚、この点は先に提案した制御手法であっても良い)。
図29はこの発明に係る脚式移動ロボットの制御装置の第2の実施例を示す、図16と同様な説明図である。
第2の実施例に係る装置は補償動作を簡易化した。この実施例においては、各足平の床反力の力成分を操作する足平位置修正動作の手法としては、図16に示した手法に代え、図29に示すように、鉛直方向にだけ移動させるようにした。このとき、第1足平鉛直方向移動量Z1と第2足平鉛直方向移動量Z2は、次式によって求める。
Z1 = -線分PQ1 の長さ *θdbv
Z2 = 線分PQ2 の長さ *θdbv
・・・式18
但し、ここで、θdbvには式15で求められる値を代入する。
尚、その他の構成は、第1の実施例と異ならない。第2の実施例においては、上記の如く構成したことで、第1の実施例とほぼ同様の作用、効果を得ることができる。
図30はこの発明に係る脚式移動ロボットの制御装置の第3の実施例を示す、図4と同様な説明図である。また、図31は、その動作を示す、図10と同様なフロー・チャートである。
第3の実施例においては、実全床反力モーメントのZ成分(鉛直軸まわり成分)に対するコンプライアンス制御を追加した。即ち、第3の実施例は、前記したZ軸まわり固有回転振動に起因する実各足平床反力モーメントのZ成分を低減するようにした。
第3の実施例にあっては、そのために、第1の実施例に係る装置の構成に、状態検出器、姿勢安定化制御演算部、複合コンプライアンス動作決定部に新たな機能を追加した。
図30を参照して説明すると、第3の実施例に係る装置においては先ず、ロボット1の上体24の適宜位置にヨーレートセンサ100を設けると共に、その出力などを入力し、現在の位置、姿勢、および進行方向を推定する自己位置・姿勢・方向推定器102を備えるようにした。ヨーレートセンサ100は、ロボット1のZ軸まわりのヨーレート(回転角速度)に応じた信号を出力する。尚、X,Y軸まわりの回転角速度は、傾斜センサ60の出力に基づいて算出する。
自己位置・姿勢・方向推定器102は、目標足平軌道または実関節角に基づいて一歩前の着地位置に対する今回の着地位置の相対位置および方向を求めると共に、ヨーレートセンサ100の検出値を積分することにより、ロボットの進行方向を検出する。
さらに、これらの情報に基づき、デッドレコニングによって、目標経路に対するロボット1の位置ずれと方向ずれを推定する。尚、デッドレコニングでは推定値の誤差が発散する傾向があるので、カメラなどを用いて環境を認識して補正しても良い。また、上体24が鉛直軸に対して傾くと、旋回時のヨーレート検出値は実際値より少ない値となるので、傾斜センサ60の出力によってヨーレート検出値を補正するのが望ましい。
第3の実施例に係る装置を図31フロー・チャートを参照して説明すると、S10からS30まで進んだ後、S30aにおいて、推定されたロボット1の位置および/または方向のずれに基づき、そのずれが減少するように、補償全床反力モーメントのZ成分Mdmdzを求める。
以下、図32に示す経路に沿って歩行する場合を例にとって説明すると、上記した補償全床反力モーメントのZ成分Mdmdzを求める制御則として次式を用いる。
Mdmdz =−Kthzθerrz− Kwz (dθerrz / dt)− Khzh
・・・式19
ここで、θerrzは方向のずれ、dθerrz/dtはその時間微分値、hは経路からの横ずれである。同図にθerrz,hを示す。この図の状態では、θerrz,hは正である。また、Kthz,KwzおよびKhzは経路誘導制御ゲイン(定数)である。
前記した如く、ロボット1が歩行しているとき、足平のばね機構32や足底弾性体34のねじれ弾性とロボット1の鉛直軸まわりの慣性力モーメントによって、上体24が鉛直軸まわりに回転振動する。これをZ軸まわり固有回転振動と呼ぶ。この振動によって、実各足平床反力モーメントのZ成分が振動する。ロボット1が歩行しているとき、実足平床反力は、ほぼ、目標足平床反力モーメントと上記振動の和になる。
上記振動の振幅が過大になると、実足平床反力モーメントのピーク値が摩擦の限界を超え、その瞬間に足底が滑り、ロボット1はスピンする。スピンが大きいと、姿勢安定性を失って転倒する場合もある。つまり、Z軸まわり固有回転振動を抑制するだけでも、姿勢安定性を向上させる効果があることがわかる。
尚、単にZ軸まわり固有回転振動を抑制するだけならば、ヨーレートのずれ(方向ずれの時間微分値)だけから補償全床反力モーメントのZ成分Mdmdzを決定すれば良い。即ち、式19において、Kwz以外の経路誘導制御ゲインを0に設定すれば良い。
また、第3の実施例においては、複合コンプライアンス動作決定部に新たな機能を追加した。具体的には、実全床反力と実各足平床反力のZ軸まわりモーメント成分を操作するため、足平22R(L)の位置姿勢の修正動作を、第1の実施例での動作に加えた。複合コンプライアンス動作決定部は、この修正量を決定する。
その決定方法を述べる前に、追加される動作を以下に具体的に説明する。
全床反力と各足平床反力のZ軸まわりモーメント成分を操作するための足平の位置姿勢の修正は、第1の実施例で述べた複合コンプライアンス動作によって得られた、修正目標各足平位置姿勢(図16の太線の足平)と修正目標各足平床反力中心点(図16のQ1’,Q2’)に対して次のような修正を加えることによって行われる。
1)修正目標第1足平床反力中心点(図16のQ1’)の座標を、目標全床反力作用点(目標ZMP)を回転中心に、Z軸まわりに、ある回転角θdbzだけ回転移動(rotate)する。移動した後の点をQ1”とする。
同様に、目標第2足平床反力中心点(図16のQ2’)の座標を、目標全床反力作用点(目標ZMP)を回転中心に、Z軸まわりに、ある回転角θdbzだけ回転移動(rotate)する。移動した後の点をQ2”とする。この回転角θdbzを、Z軸まわり両脚補償角と呼ぶ。
2)始点がQ1’終点がQ1”のベクトルをベクトルQ1’Q1”とする。同様に、始点がQ2’終点がQ2”のベクトルをベクトルQ2’Q2”とする。図33に上方から見たQ1”とQ2”を示す。
3)修正目標第1足平を、姿勢は変えずに、ベクトルQ1’Q1”だけ平行移動させる。同様に、修正目標第2足平を、姿勢は変えずに、ベクトルQ2’Q2”だけ平行移動させる。移動後の修正目標各足平を図33に太線で示す。
4)次に、3)で得られた修正目標第1足平をQ1”を中心に、鉛直方向軸(Z軸)まわりに回転角θ1zだけ回転させる。同様に、3)で得られた修正目標第2足平をQ2”を中心に、鉛直方向軸(Z軸)まわりに回転角θ2zだけ回転させる。回転角θnzを第n足平Z補償角と呼ぶ。回転後の修正目標各足平を図34に太線で示す。
以上の補償動作量が過大でなければ、補償動作量と補償動作によって発生する実床反力の変化量との間の関係は、以下に示す良好な特性を持つ。
特性1)Z軸まわり両脚補償角θdbzだけを操作して修正目標各足平位置を移動させると、移動向きと逆向きに実各足平床反力の力成分が発生する。このとき、修正目標各足平実床反力中心点まわりの実各足平床反力モーメントは、ほとんど変化しない。
特性2)第n足平Z補償角だけを操作して目標各足平姿勢を回転させると、目標第n足平床反力中心点に作用する実第n足平床反力のモーメントのZ軸成分だけが変化し、その他の床反力成分は少ししか変化しない。
特性3)両脚補償角θdbz、各足平X補償角、各足平Y補償角、Z軸まわり両脚補償角θdbzおよび各足平Z補償角を同時に操作すると、実各足平床反力の変化量は、それぞれを単独に操作したときの変化量の和になる(換言すれば、線形結合が可能になる)。
特性1および特性2は、これらの操作に独立性があることを示し、特性3は全ての操作に線形性があることを示していると言える。
以上の動作におけるZ軸まわり両脚補償角θdbzおよび各足平Z補償角を、複合コンプライアンス動作決定部において以下のように決定する。
図35に第3の実施例の複合コンプライアンス部の概要ブロック図を示す。図示の如く、モーメントZ成分補償動作決定部104を追加した。図36にそのモーメントZ成分補償動作決定部104の詳細を示す。以下、この追加部分を中心に説明する。
図36に示す如く、このZ成分補償モーメント決定部104においては、補償全床反力モーメント分配器の出力から、両脚補償モーメントMdmddbのZ成分Mdmdbzと各足平補償モーメントMdmd1z,Mdmd2zを決定すると共に、実各足平床反力と分配された補償モーメントZ成分(Mdmddbz,Mdmdnz)などから、Z軸まわり両脚補償角θdbz、第1足平Z補償角θ1zおよび第2足平Z補償角θ2zを決定する(これは図38フロー・チャートでS34aの処理に相当する)。
修正目標足平位置姿勢算出部では、Z軸まわり両脚補償角および各足平Z補償角も含めて、修正足平位置姿勢を幾何学演算によって求める。
以下に追加処理の詳細を説明する。
図37を参照して補償全床反力モーメントの分配について説明すると、補償全床反力モーメント分配器では、補償全床反力モーメントMdmdのZ成分Mdmdzを、両脚補償モーメントMdmddbのZ成分Mdmddbz、第1足平補償モーメントMdmd1のZ成分Mdmd1z、第2足平補償モーメントMdmd2のZ成分Mdmd2z、に分配する処理が追加される。
尚、両脚補償モーメントのZ成分Mdmddbzは、両脚補償角θdbzを操作することによって目標全床反力中心点(目標ZMP)まわりに各足平床反力の力成分Fnactが作るモーメントのZ成分の目標値である。
また、第1足平補償モーメントのZ成分Mdmd1zは、第1足平補償角θ1zを操作することによって目標第1足平床反力中心点まわりに発生させたいモーメントZ成分(図34にM1で示す)である。同様に、第2足平補償モーメントのZ成分Mdmd2は、第2足平補償角θ2zを操作することによって目標第2足平床反力中心点まわりに発生させたいモーメントZ成分(図34にM2で示す)である。
分配は、例えば、次式を用いて行う。
Mdmddbz =Wdbz× Mdmdz
Mdmd1z =W1z × Mdmdz
Mdmd2z =W2z × Mdmdz
・・・式20
ここで、Wdbz,W1z,W2zは歩行時の分配用重み変数である。その分配用重み変数Wdbz,W1z,W2zの設定例を、図38に示す。同図の設定パターンは、以下の注意点を考慮して決定される。
注意点1)両脚補償角と各足平補償角が不連続的に変化すると、関節に過大なトルクが発生する。そこで、両脚補償角と各足平補償角を連続的に変化させるために、分配用重み変数は連続的に変化させる。
注意点2)Z軸まわり両脚補償角および各足平Z補償角を操作することによって発生する実床反力モーメントのZ成分が、なるべく補償全床反力モーメントのZ成分Mdmdzに近い値になるように、分配用重み変数Wdbz,W1z,W2zを決定する。
直立時などのように、両脚補償モーメントのZ成分Mdmddbz、各足平補償モーメントZ成分Mdmd1z,Mdmd2zを忠実に実各足平床反力に発生させることができる状況では、以下のように設定する。即ち、目標全床反力中心点(目標ZMP)まわりの実床反力モーメントMactのZ成分を、補償全床反力モーメントMdmdのZ成分に一致させる(換言すれば、第1の実施例で述べた複合コンプライアンス動作部に対する要求1を満足する)ために、以下の式21を可能な限り満足するように重みを設定する。
Wdbz+ W1z+ W2z= 1
・・・式21
尚、歩行時では、式21の左辺が1に近ければ十分である。換言すれば、必ずしも1でなくても良い。
注意点3)遊脚足平が着地する時点でZ軸まわり両脚補償角θdbzが0でないと、足平着地位置が目標位置からずれ、軌道誘導制御に悪影響を及ぼす場合がある。従って、足平が着地する時点付近で、Z軸まわり両脚補償角用の分配用重み変数Wdbzを0にするのが望ましい。
注意点4)遊脚足平が着地する時点でその足平のZ補償角が0でないと、足平着地向きが目標向きからずれ、軌道誘導制御に悪影響を及ばす場合がある。従って、第1足平が着地する時点付近で、第1足平Z補償角用の分配用重み変数W1zを0にし、第2足平が着地する頃では、第2足平Z補償角用の分配用重み変数W2zを0にするのが望ましい。
また、Z軸まわり両脚補償角θdbzの決定処理が追加される。Z軸まわり両脚補償角θdbzは、両脚補償角θdbvと同様のアルゴリズムによって求められる。違いは、モーメントと角度の向きがV方向からZ方向に変わっただけである。従って、Z軸まわり両脚補償角θdbzを決定する処理のブロック図は、図24のVをZに置き換えることによって得ることができる。
さらに、第1足平補償角θ1z、第2足平補償角θ2zの決定処理が追加される。第n足平Z補償角θnzは、第1足平X補償角θ1xを求めるアルゴリズムと同様のアルゴリズムによって求めるられる。違いは、XがZに、1がnに変わっただけである。従って、第n足平Z補償角θnzを決定する処理のブロック図は、図25のXをZに、1をnに置き換えることによって得ることができる。
上記した、図31のS34aで行われる処理のサブルーチンを、図39のS200ないしS206に示す。
上記に基づいて、修正目標足平位置姿勢算出(図31フロー・チャートのS38に相当)において、両脚補償角θdbv、Z軸まわり両脚補償角θdbz、第1足平X補償角θ1x、第1足平Y補償角θ1y、第1足平Z補償角θ1z、第2足平X補償角θ2x、第2足平Y補償角θ2y、第2足平Z補償角θ2zに基づき、前述のZ軸まわり補償動作を追加した複合コンプライアンス動作の足平位置姿勢修正手法に従って目標足平位置姿勢を修正し、修正目標足平位置姿勢を得る。
第3の実施例は上記の如く、実全床反力モーメントのZ成分(鉛直軸まわりの成分)に対するコンプライアンス制御を追加したので、従前の実施例で述べた作用、効果に加えて、Z軸まわり固有回転振動に起因する実各足平床反力モーメントのZ成分の振動を抑制することができ、よって脚式移動ロボットの姿勢安定化制御を一層効果的に実現することができる。
さらには、図32に示した経路誘導制御などを行うときも、目的とする経路に沿って精度良く誘導することができる。
尚、第3の実施例において、ヨーレートセンサ100、自己位置・姿勢・方向推定器102ならびに経路誘導制御演算部などを設けず、単に補償全床反力モーメントのZ成分Mdmdzを零またはその近傍に固定するだけでも、実全床反力モーメントのZ成分に対するコンプライアンス制御として、かなり有効である。
第1ないし第3の実施例では上記の如く、少なくとも基体(上体24)と、前記基体に第1の関節(10,12,14R(L))を介して連結されると共に、その先端に第2の関節(18,20R(L))を介して連結される足部(足平22R(L))を備えた複数本(2本)の脚部(脚部リンク2)からなる脚式移動ロボットの制御装置において、前記ロボットの少なくとも前記足部の目標位置および姿勢を含む運動パターン(目標上体位置・姿勢、目標足平位置・姿勢)と、前記ロボットに作用する全床反力の目標パターン(目標全床反力、目標全床反力中心点(=目標ZMP))を少なくとも含む前記ロボットの歩容を生成する歩容生成手段(歩容生成器、S10からS22)、前記生成された歩容の全床反力を前記足部のそれぞれに分配したときの前記足部上の作用中心点たる目標足部床反力中心点(目標各足平床反力中心点)を決定する目標足部床反力中心点決定手段(目標床反力分配器、S24,S26)、前記足部に作用する実床反力(実各足平床反力)を検出する実床反力検出手段(6軸力センサ44、実各足平床反力検出器、S32)、前記検出された実床反力が前記算出された目標足部床反力中心点まわりに作用するモーメント(実第n足平床反力モーメントMactx,y,z)を算出し、少なくとも前記算出されたモーメントに基づいて前記足部を回転させる回転量(両脚補償角θdbv,z、第n足平補償角θnx,y,z)を決定する足部回転量決定手段(複合コンプライアンス動作決定部、S32からS34,S34a、両脚補償角決定部、第n足平補償角決定部、S100からS108およびS200からS206)、前記決定された足部回転量に基づいて前記足部の位置および/または姿勢が回転するように前記目標位置および/または姿勢を修正する足部位置・姿勢修正手段(複合コンプライアンス動作決定部、S38,S40、修正目標足平位置・姿勢算出部)、および、前記修正された足部の位置・姿勢に基づいて前記ロボットの第1および第2の関節(10,12,14,18,20R(L))を変位させる関節変位手段(ロボット幾何学モデル(キネマティクス演算部)、変位コントローラ、S40,S42)を備えるように構成した。
また、少なくとも基体(上体24)と、前記基体に第1の関節(10,12,14R(L))を介して連結されると共に、その先端に第2の関節(18,20R(L))を介して連結される足部(足平22R(L))を備えた複数本(2本)の脚部(脚部リンク2)からなる脚式移動ロボット1の制御装置において、前記ロボットの少なくとも前記足部の目標位置および姿勢を含む運動パターン(目標上体位置・姿勢、目標足平位置・姿勢)と、前記ロボットに作用する全床反力の目標パターン(目標全床反力、目標全床反力中心点(=目標ZMP))を少なくとも含む前記ロボットの歩容を生成する歩容生成手段(歩容生成器、S10からS22)、前記生成された歩容の全床反力を前記足部のそれぞれに分配したときの前記足部上の作用中心点たる目標足部床反力中心点(目標各足平床反力中心点)を決定する目標足部床反力中心点決定手段(目標床反力分配器、S24)、前記足部に作用する実床反力(実各足平床反力)を検出する実床反力検出手段(6軸力センサ44、実各足平床反力検出器、S32)、少なくとも前記検出された実床反力に基づいて前記足部を回転させる回転量(両脚補償角θdbv,z、第n足平補償角θnx,y,z)を決定する足部回転量決定手段(複合コンプライアンス動作決定部、S32,S34,S34a、両脚補償角決定部、第n足平補償角決定部、S100からS108およびS200からS206)、前記決定された足部回転量に基づいて前記足部の位置および/または姿勢が、前記決定された目標足部床反力中心点あるいはその近傍まわりに回転するように、前記目標位置および/または姿勢を修正する足部位置・姿勢修正手段(複合コンプライアンス動作決定部、S38,S40、修正目標足平位置・姿勢算出部)、および前記修正された足部の位置・姿勢に基づいて前記ロボットの第1および第2の関節(10,12,14,18,20R(L))を変位させる関節変位手段(ロボット幾何学モデル(キネマティクス演算部)、変位コントローラ、S42)を備えるように構成した。
また、前記足部位置・姿勢修正手段は、前記決定された足部回転量に基づいて前記足部の位置および/または姿勢が、前記決定された目標足部床反力中心点あるいはその近傍まわりに回転するように、前記目標位置および/または姿勢を修正する如く構成した。
さらに、前記ロボットに実際に作用する全床反力モーメント(より正確にはモーメント成分PQ1 *F1act +PQ2 *F2act +M1act +M2act)、または前記ロボットに実際に作用する全床反力のモーメント(PQ1 *F1act +PQ2 *F2act +M1act +M2act )から前記足部に作用する床反力モーメント(M1act +M2act)を減算して得たモーメント(Mf1f2act=PQ1 *F1act +PQ2 *F2act )のいずれかを算出し、少なくとも前記算出されたモーメントに応じて前記足部を移動させる移動量(θdbv,z)を決定する足部移動量決定手段(複合コンプライアンス動作決定部、S34,S34a、両脚補償角決定部、S100からS108,S200からS206)を備え、前記足部位置・姿勢修正手段は、前記決定された足部回転量および前記決定された移動量に基づいて前記足部の位置および/または姿勢を修正するように構成した。
また、前記全床反力の目標パターンに付加する姿勢安定化補償全床反力モーメント(補償全床反力Mdmd)を求め、前記足部回転量決定手段および/または前記足部移動量決定手段は、少なくとも前記検出された実床反力(実各足平床反力)と前記求めた姿勢安定化補償全床反力モーメントに基づいて前記足部の回転量および/または移動量を決定する(S34,S34a,S100からS108,S200からS206)如く構成した。
また、前記姿勢安定化補償全床反力モーメントを、少なくとも前記ロボットの傾き偏差(θerrx,y)に基づいて求める(S28,S30a)如く構成した。
また、前記姿勢安定化補償全床反力モーメントを、少なくとも前記ロボットのヨーレート(θerrz,dθerrz/dt)に基づいて求める(S28,S30a)ように構成した。
また、前記姿勢安定化補償全床反力モーメントを、少なくとも前記ロボットの目標経路からのずれ、即ち、目標軌道からの横ずれあるいは方向ずれhに基づいて求める(S28,S30a)如く構成した。
また、前記姿勢安定化補償全床反力モーメント(補償全床反力Mdmd)の中の所定の成分(Mdmdz)を零またはその近傍に設定するように構成した。
また、前記足部位置・姿勢修正手段は、前記ロボットの姿勢偏差に基づいて前記目標位置および/または姿勢をさらに修正する如く構成した。
また、前記足部回転量決定手段および/または前記足部移動量決定手段は、前記姿勢安定化補償全床反力モーメントが前記複数本の脚部のそれぞれに分配されるように、前記足部の回転量および/または移動量を決定する(S34,S34a,S100からS108,S200からS206)如く構成した。
また、少なくとも基体(上体24)と、前記基体に第1の関節(10,12,14R(L))を介して連結されると共に、その先端に第2の関節(18,20R(L))を介して連結される足部(足平22R(L))を備えた複数本(2本)の脚部(脚部リンク2)からなる脚式移動ロボット1の制御装置において、前記ロボットの少なくとも前記足部の目標位置および姿勢を含む運動パターン(目標上体位置・姿勢、目標足平位置・姿勢)と、前記ロボットに作用する全床反力の目標軌跡パターン(目標全床反力、目標全床反力中心点(=目標ZMP))からなる前記ロボットの歩容を生成する歩容生成手段(歩容生成器、S10からS22,S24)、前記ロボットの姿勢安定化のための補償全床反力(補償全床反力Mdmd)を算出する姿勢安定化補償全床反力算出手段(姿勢安定化制御演算部、S30,S30a)、前記足部に作用する実床反力(実各足平床反力)を検出する足部床反力検出手段(6軸力センサ44、実各足平床反力検出器、S32)、前記目標歩容の全床反力と前記補償全床反力を分配する床反力分配手段(目標床反力分配器、S34,S34a,S100からS104,S200からS202)、前記分配された目標歩容の全床反力と補償床反力と前記検出された足部実床反力に基づいて前記目標歩容の足部の位置および/または姿勢を修正する修正手段(複合コンプライアンス動作決定部、S36からS38、補償角決定部、機構変形量算出部、修正目標足平位置・姿勢算出部、機構変形補償入り修正目標足平位置姿勢算出部)、および前記修正された目標足部位置および姿勢に基づいて前記ロボットの第1および第2の関節(10,12,14,18,20R(L))を変位制御する関節変位制御手段(ロボット幾何学モデル(キネマティクス演算部)、変位コントローラ、S40,S42)を備える如く構成した。
また、前記修正手段は、前記ロボットの姿勢偏差に基づいて前記目標歩容の足部の位置および/または姿勢をさらに修正する如く構成した。
尚、上記した第1ないし第3の実施例において、補償動作における足平回転中心点の取り方を更に敷衍すると、補償動作における足平回転中心点は、図17に示したような目標各足平床反力中心点の代わりに、その瞬間に想定している足底接地領域の中の別の点を回転中心点に設定しても良い。
その設定手法例を以下に列挙する。演算処理は複雑になるが、場合によっては、足平を回転させても、足平実床反力モーメントだけが変化して、足平実床反力の力成分に対しては、より干渉しないようにすることができる。但し、いずれの方式であっても、足平回転中心点の移動軌跡が不連続にならないように注意する。不連続であると、補償動作が急激に変わって足平がばたつくからである。
手法1)各補償モーメントと各足平目標床反力の力成分から、各補償モーメントを発生させたときに実各足平床反力中心点があるべき位置を求め、これを修正目標各足平床反力中心点と呼ぶ。但し、修正目標各足平床反力中心点は、その瞬間に想定している足底接地領域から越えないように設定する。修正目標各足平床反力中心点またはその点の近傍を回転中心点にする。
手法2)想定している足底接地領域の面積中心点を求め、その点またはその点近傍を回転中心点にする。
手法3)実各足平床反力から実各足平床反力中心点を求め、その点またはその点近傍を回転中心点にする。
手法4)手法1から3に挙げた各種回転中心点候補や目標各足平床反力中心点などの内から複数の候補を選び、その加重平均の点を回転中心点とする。
尚、上記において、足底接地領域の圧力分布の一部に負の圧力が発生しない限り、すなわち粘着力が発生しない限り、実足平床反力中心点は必ず足底接地領域内に存在する。
また、上記した第1ないし第3の実施例において、図4にあっては、目標上体位置・姿勢軌道をそのままロボット幾何学モデルに入力する代わりに、目標上体位置・姿勢軌道の水平位置と修正目標足平位置・姿勢軌道から上体高さを、本出願人が先に特願平8−214260号で提案した上体高さ決定手法を用いて再計算することによって修正し、それをロボット幾何学モデルに入力しても良い。
目標足平位置・姿勢軌道を大幅に修正すると、元の上体高さのままでは脚が伸び切って姿勢がとれなくなるおそれがある。このような場合には、上記再計算を行えば、余程のことがない限り脚が伸び切るおそれはなくなる。
また、上記した第1ないし第3の実施例において、上体が傾くと、床に対する実足平の位置・姿勢がずれ、その結果、実各足平床反力が目標角足平床反力からずれる。このずれを打ち消したい場合には、上体が傾くことによって生じる実足平の位置・姿勢のずれを、両脚補償角θdbvおよび各足平補償角θnx,θnyを補正することによって打ち消せば良い。
具体的には、次のように、上体の傾斜偏差のX成分θerrx、Y成分θerryと前記ベクトルVを用いて補正する。即ち、前述の両脚補償角決定方法で得られた両脚補償角θdbvに、次式のΔθdbvを加えたものを改めて両脚補償角θdbvとする。
Δθdbv = -(θerrx * Vx + θerry * Vy )
前述の各足平補償角決定手法で得られた第1足平X補償角θ1x、第2足平X補償角θ2xからそれぞれθerrxを引いたものを改めて第1足平X補償角θ1x、第2足平X補償角θ2xとする。
同様に各足平補償角決定方法で得られた第1足平Y補償角θ1y、第2足平Y補償角θ2yからそれぞれθerryを引いたものを改めて第1足平Y補償角θ1y、第2足平Y補償角θ2yとする。
また、上記した第1ないし第3の実施例において、制御精度を高くする必要がない場合には、両脚機構変形補償角θffdbvは零でも良い。即ち、機構変形補償角の演算を省略しても良い。
また、上記した第1ないし第3の実施例において、制御精度を高くする必要がない場合には、第1足平X機構変形補償角θff1xは零でも良い。即ち、機構変形補償角の演算を省略しても良い。
また、上記した第1ないし第3の実施例において、分配用重み変数は目標歩容のタイミングに合わせて決定されるので、処理が簡単である。但し、実際の床面状況が目標歩容が想定している床面と大きく異なる場合には、着地タイミングがずれるために実床反力の増加量がMdmdに較べて大きくずれる場合がある。
予期しない床面状況の変化に対するロバスト性を高めるためには、実床反力の力成分から着地と離床の瞬間を検知し、これをトリガにして分配用重み変数を変化させても良い。
また、実各足平床反力から足平の接地状態(例えば各足平実床反力中心点が望みの接地領域から外れていないかなど)を推定し、接地状態が良くないならば重みを下げてモーメントの発生を抑制するなど、実各足平床反力も考慮して適宜分配用重み変数の値を変えても良い。
また、上記した第1ないし第3の実施例においては逆キネマティクスの解の式を直接的に求めておき、式に上体位置・姿勢と足平位置・姿勢を代入するだけで各関節変位を得るようにした。これらの実施例では解があるが、関節の配置によっては直接解が存在しない場合があり、その場合には当然使えない。
そのときは、上体位置・姿勢に対する足平の相対位置・姿勢の摂動に対する関節の摂動の比などをマトリックスの形で表現する逆ヤコビアンまたは疑似逆ヤコビアンを用い、近似的に各関節変位を得ても良い。通常の産業用ロボットなどでも良く用いられる手法である。前記の手法が使えない場合でも、この手法ならば、解を近似的に求めることができる。
また、上記した第1ないし第3の実施例において、ばね機構32(および足底弾性体34)自身はこの発明の本質部分ではない。この発明の本質はフィードバック制御部分にあり、機構変形補償は付随的なものである。
また、上記した第1ないし第3の実施例において、ブロック線図は演算処理順序を変えるなどの等価変形をしても良い。
また、上記した第1ないし第3の実施例において、先にも触れた如く、目標歩容が床反力以外の反力(目標対象物反力)を環境から受けるように想定し、目標ZMPの定義を、目標運動パターンによって発生する慣性力と重力と目標対象物反力の合力を動力学的に求め、それが床面上のある点に作用するモーメントが、鉛直軸まわりの成分を除いて零であるならば、その点を改めて目標ZMPとしても良い。
また、本出願人は、特開平5−337849号公報において、目標全床反力中心点をそのままに、目標運動パターンだけを修正し、修正された目標運動パターンのZMPと目標全床反力中心点にずれを生じさせることによって、姿勢の傾きを復元させる手法を提案している。その手法を併用する場合には、目標全床反力中心点は、目標ZMPに一致しない。
また、この発明を2足歩行ロボットに関して説明してきたが、2足歩行ロボットに限らず、多脚ロボットにも応用することができる。