以下、添付図面を参照して本発明の実施形態を説明する。尚、本明細書の実施形態では、移動ロボットとしては脚式移動ロボットとしての2足移動ロボットを例にとる。
図1は、本発明の実施形態を適用する2足移動ロボットの全体的構成の概略を示す概略図である。
図示の如く、2足移動ロボット(以下、ロボットという)1は上体(ロボット1の基体)3から下方に延設された左右一対の脚体(脚部リンク)2,2を備える。両脚体2,2は同一構造であり、それぞれ6個の関節を備える。その6個の関節は上体3側から順に、股(腰部)の回旋(回転)用(上体3に対するヨー方向の回転用)の関節10R,10Lと、股(腰部)のロール方向(X軸まわり)の回転用の関節12R,12Lと、股(腰部)のピッチ方向(Y軸まわり)の回転用の関節14R,14L、膝部のピッチ方向の回転用の関節16R,16Lと、足首のピッチ方向の回転用の関節18R,18Lと、足首のロール方向の回転用の関節20R,20Lとから構成される。なお、本明細書において、符号R,Lはそれぞれロボット1の右側、左側に対応するものであることを意味する符号である。
各脚体2の足首の2つの関節18R(L),20R(L)の下部には、各脚体2の先端部を構成する足平(足部)22R(L)が取着されると共に、両脚体2,2の最上位には、各脚体2の股の3つの関節10R(L),12R(L),14R(L)を介して前記上体3が取り付けられている。上体3の内部には、詳細を後述する制御ユニット60などが格納される。なお、図1では図示の便宜上、制御ユニット60を上体3の外部に記載している。
上記構成の各脚体2においては、股関節(あるいは腰関節)は関節10R(L),12R(L),14R(L)から構成され、膝関節は関節16R(L)から構成され、足首関節は関節18R(L),20R(L)から構成される。また股関節と膝関節とは大腿リンク24R(L)で連結され、膝関節と足首関節とは下腿リンク26R(L)で連結される。
上体3の上部の両側部には左右一対の腕体5,5が取り付けられると共に、上体3の上端部には頭部4が配置される。各腕体5は、3つの関節30R(L),32R(L),34R(L)から構成された肩関節と、関節36R(L)から構成された肘関節と、関節38R(L)から構成された手首関節と、この手首関節に連結された手先部40R(L)とを備えている。肩関節と肘関節との間、および肘関節と手首関節との間はそれぞれ剛体状のリンクで構成されている。
上記のロボット1の構成により、各脚体2の足平22R(L)は、上体3に対して6つの自由度を与えられている。そして、ロボット1の歩行等の移動中に、両脚体2,2を合わせて6*2=12個(この明細書で「*」はスカラに対する演算としては乗算を、ベクトルに対する演算としては外積を示す)の関節を適宜な角度で駆動することで、両足平22R,22Lの所望の運動を行うことができる。これにより、ロボット1は任意に3次元空間を移動することができる。また、各腕体5は、その肩関節、肘関節、手首関節の回転によって、腕振り等の運動を行うことができる。
図1に示す如く、各脚体2の足首関節18R(L),20R(L)の下方には足平22R(L)との間に公知の6軸力センサ50が介装されている。該6軸力センサ50は、各脚体2の足平22R(L)の着地の有無、および各脚体2に作用する床反力(接地荷重)等を検出するためのものであり、該床反力の並進力の3方向成分Fx,Fy,Fz並びにモーメントの3方向成分Mx,My,Mzの検出信号を制御ユニット60に出力する。また、上体3には、Z軸(鉛直方向(重力方向))に対する上体3の傾斜角(姿勢角)およびその角速度を検出するための姿勢センサ54が備えられ、その検出信号が該姿勢センサ54から制御ユニット60に出力される。この姿勢センサ54は、図示を省略する加速度センサおよびジャイロセンサを備え、これらのセンサの検出信号が上体3の傾斜角およびその角速度を検出するために用いられる。また、詳細構造の図示は省略するが、ロボット1の各関節には、それを駆動するための電動モータ64(図3参照)と、その電動モータ64の回転量(各関節の回転角)を検出するためのエンコーダ(ロータリエンコーダ)65(図3参照)とが設けられ、該エンコーダ65の検出信号が該エンコーダ65から制御ユニット60に出力される。
さらに、図1では図示を省略するが、ロボット1の外部には、ロボット1を操縦するためのジョイスティック(操作器)73(図3参照)が設けられ、そのジョイスティック73を操作することで、直進移動しているロボット1を旋回させるなどロボット1の移動方向を指定する、ロボット1の歩行、走行などの運動形態および床面の摩擦状態(路面状態)を指定するなど、ロボット1の歩容に対する要求もしくは制約条件を必要に応じて制御ユニット60に入力できるように構成されている。ジョイスティック73は有線もしくは無線により制御ユニット60との通信が可能とされている。
図2は本実施形態における各脚体2の先端部分(各足平22R(L)を含む)の基本構成を概略的に示す図である。同図に示すように、各足平22R(L)の上方には、前記6軸力センサ50との間にばね機構70が装備されると共に、足底(各足平22R,Lの底面)にはゴムなどからなる足底弾性体71が貼られている。これらのばね機構70及び足底弾性体71によりコンプライアンス機構72が構成されている。詳細な図示は省略するが、ばね機構70は、足平22R(L)の上面部に取り付けられた方形状のガイド部材(図示省略)と、足首関節18R(L)(図2では足首関節20R(L)を省略している)および6軸力センサ50側に取り付けられ、前記ガイド部材に弾性材(ゴムやばね)を介して微動自在に収納されるピストン状部材(図示省略)とから構成されている。
図2に実線で表示された足平22R(L)は、床反力を受けていないときの状態を示している。各脚体2が床反力を受けると、コンプライアンス機構72のばね機構70と足底弾性体71とがたわみ、足平22R(L)は図中に点線で例示したような位置姿勢に移る。このコンプラインアス機構72の構造は、着地衝撃を緩和するためだけでなく、制御性を高めるためにも重要なものである。その詳細は、例えば本出願人が先に提案した特開平5−305584号公報に詳細に説明されているので、本明細書でのさらなる説明は省略する。
図3は制御ユニット60の構成を示すブロック図である。該制御ユニット60はマイクロコンピュータにより構成されており、CPUからなる第1の演算装置90及び第2の演算装置92、A/D変換器80、カウンタ86、D/A変換器96、RAM84、ROM94、並びにこれらの間のデータ授受を行うバスライン82を備えている。この制御ユニット60では、各脚体2の6軸力センサ50、姿勢センサ54(加速度センサおよびレートジャイロセンサ)、ジョイスティック73等の出力信号はA/D変換器80でデジタル値に変換された後、バスライン82を介してRAM84に送られる。またロボット1の各関節のエンコーダ65(ロータリーエンコーダ)の出力は、カウンタ86を介してRAM84に入力される。
前記第1の演算装置90は後述の如く目標歩容を生成すると共に、関節角変位指令(各関節の変位角もしくは各電動モータ64の回転角の指令値)を算出し、RAM84に送出する。また、第2の演算装置92はRAM84から関節角変位指令と、前記エンコーダ65の出力信号に基づいて検出された関節角の実測値とを読み出し、各関節の駆動に必要な操作量を算出して、その操作量をD/A変換器96とサーボアンプ64aとを介して各関節を駆動する電動モータ64に出力する。
図4は、本明細書の実施形態におけるロボット1の制御ユニット60の主な機能的構成を示すブロック図である。この図4中の「実ロボット」の部分以外の部分が制御ユニット60が実行する処理機能(主として第1の演算装置90及び第2の演算装置92の機能)によって構成されるものである。その処理機能は、制御ユニット60に実装されたプログラム等によって実現されている。尚、以下の説明では、ロボット1の各部(脚体2、腕体5など)の左右を特に区別する必要がないときは、前記符号R,Lを省略する。
以下説明すると、制御ユニット60は、後述の如く目標歩容を自在かつリアルタイムに生成して出力する歩容生成装置100を備えている。この歩容生成装置100は、その機能によって本発明の実施形態を実現するものである。この歩容生成装置100が出力する目標歩容は、補正目標上体姿勢軌道(上体3の目標姿勢の軌道)、補正目標上体位置軌道(上体3の目標位置の軌道)、目標足平位置姿勢軌道(各足平22の目標位置及び目標姿勢の軌道)、目標腕姿勢軌道(各腕体の目標姿勢の軌道)、目標ZMP(目標全床反力中心点)軌道、目標ZMPまわりの補正目標床反力モーメント軌道および目標全床反力軌道から構成される。尚、脚体2や腕体5以外に、上体3に対して可動な部位(頭部など)を備える場合には、その可動部位の目標位置姿勢軌道が目標歩容に加えられる。
ここで、本明細書での歩容に関する基本的な用語の定義などについて説明しておく。歩容における「軌道」は時間的変化のパターン(時系列パターン)を意味し、「軌道」の代わりに「パターン」と称することもある。また、「姿勢」は空間的な向きを意味する。例えば上体姿勢はZ軸(鉛直軸)に対するロール方向(X軸まわり)の上体3の傾斜角(姿勢角)とピッチ方向(Y軸まわり)の上体3の傾斜角(姿勢角)とで表され、足平姿勢は各足平22に固定的に設定された2軸の空間的な方位角で表される。本明細書では、上体姿勢は上体姿勢角もしくは上体傾斜角ということもある。なお、腕体5に関する目標腕姿勢は、本明細書の実施形態では上体3に対する相対姿勢で表される。
上体位置は、上体3のあらかじめ定めた代表点(上体3に対して任意に固定設定したローカル座標系でのある固定点)の位置を意味する。同様に、足平位置は、各足平22のあらかじめ定めた代表点(各足平22に対して任意に固定設定したローカル座標系での固定点)の位置を意味する。例えば各足平22の代表点は、各足平22の底面上(より具体的には各脚体2の足首関節の中心から各足平22の底面への垂線が該底面と交わる点等)に設定される。
上体3に関する前記補正目標上体姿勢および補正目標上体位置は、ある基本となる目標上体姿勢(仮目標上体姿勢)および目標上体位置(仮目標上体位置)を補正したものである。本明細書の実施形態では、基本となる目標上体位置姿勢は、後述する目標瞬時値発生部で決定される目標上体位置姿勢(後述の図12のS032で決定される目標上体位置姿勢)が相当する。
なお、以降の説明では、誤解を生じるおそれがない場合には、しばしば「目標」を省略する。
歩容のうちの、床反力に係わる構成要素以外の構成要素、すなわち足平位置姿勢、上体位置姿勢等、ロボット1の各部位の位置姿勢に関する構成要素を総称的に「運動」という。また、各足平22に作用する床反力(並進力及びモーメントからなる床反力)を「各足平床反力」と呼び、ロボット1の全て(2つ)の足平22R,22Lについての「各足平床反力」の合力を「全床反力」という。ただし、以下の説明においては、各足平床反力はほとんど言及しないので、特に断らない限り、「床反力」は「全床反力」と同義として扱う。
目標床反力は、一般的には、作用点とその点に作用する並進力及びモーメントによって表現される。作用点はどこにとっても良いので、同一の目標床反力でも無数の表現が考えられるが、特に目標床反力中心点(全床反力の中心点の目標位置)を作用点にして目標床反力を表現すると、目標床反力のモーメント成分は、鉛直成分(鉛直軸(Z軸)まわりのモーメント成分)を除いて零になる。換言すれば、目標床反力中心点まわりの目標床反力のモーメントの水平成分(水平軸(X軸及びY軸)まわりのモーメント)は零になる。
なお、動力学的平衡条件を満足する歩容では、ロボット1の目標運動軌道から算出されるZMP(目標運動軌道から算出される慣性力と重力との合力がその点まわりに作用するモーメントが、鉛直成分を除いて零になる点)と目標床反力中心点とは一致することから、目標床反力中心点軌道の代わりに目標ZMP軌道を与えると言っても同じことである。
ここで、ロボット1の歩行を行う場合には、例えば本出願人が先に特開平10−86080号公報で提案した上体高さ決定手法によってロボット1の上体3の鉛直位置(上体高さ)が決定されると、並進床反力鉛直成分は従属的に決定される。さらに、目標歩容の運動による慣性力と重力との合力が目標ZMPまわりに発生するモーメントの水平成分が0になるようにロボット1の上体水平位置軌道(あるいは全体重心の位置軌道)を決定することで、並進床反力水平成分も従属的に決定される。このため、ロボット1の歩行を行う場合には、目標歩容の床反力に関して明示的に設定すべき物理量としては、目標ZMPだけでもよい。
一方、床反力が0もしくはほぼ0になるような時期を伴う歩容でのロボット1の移動、例えばロボット1の走行を行う場合には、並進床反力鉛直成分もロボット1の動作制御上重要である。このため、並進床反力鉛直成分の目標軌道を明示的に設定した上で、ロボット1の目標上体鉛直位置等の軌道を決定することが望ましい。また、ロボット1の歩行においても、摩擦係数が低い床面上(低ミュー路上)でロボット1を移動させるような場合には、並進床反力鉛直成分(より厳密には並進床反力の床面に垂直な成分)が摩擦力に影響を及ぼすことから、ロボット1のスリップなどを防止する上で、並進床反力鉛直成分の目標軌道を明示的に設定することが望ましい。さらに、本発明の実施形態では、最終的に歩容生成装置100が出力する目標歩容では、目標ZMPまわりに補正目標床反力モーメント(水平成分が0とは限らないモーメント)を発生させる。
このようなことから、本明細書の実施形態では、歩容生成装置100が出力する目標歩容の床反力に関する構成要素として、目標ZMP軌道のほか、目標ZMPまわりの補正目標床反力モーメントと、目標並進床反力鉛直成分とを含ませている。
そして、本明細書では、歩容生成装置100が出力する目標歩容は、広義には、「1歩ないしは複数歩の期間の目標運動軌道と目標床反力軌道との組」の意味で使用され、狭義には、「1歩の期間の目標運動軌道と、目標ZMP、補正目標床反力モーメント及び目標並進床反力鉛直成分を含む目標床反力軌道との組」の意味で使用される。
但し、本明細書の実施形態においては、最終的な目標歩容(歩容生成装置100が出力する目標歩容)を決定するまでの過程で作成する目標歩容(仮目標歩容)では、目標ZMPまわりの目標床反力モーメントの水平成分は、本来の目標ZMPの定義どおりに0とされる。従って、最終的に決定する目標歩容以外の仮目標歩容では、上記狭義の目標歩容から、補正目標床反力モーメントを除いたものが目標歩容の意味で使用される。補足すると、本明細書の実施形態では、最終的な目標歩容(歩容生成装置100が出力する目標歩容)を決定するまでの過程で作成する目標歩容(仮目標歩容)が本発明に密接に関連するものとなっている。このため、以降の説明で現れる目標歩容の大部分は、前記狭義の目標歩容から、補正目標床反力モーメントを除いたもの(目標ZMPを満足する歩容)の意味で使用される。
なお、以降の説明では、「床反力鉛直成分」は「並進床反力鉛直成分」を意味するものとし、床反力のうちのモーメントの鉛直成分(鉛直軸回り成分)は、「モーメント」という用語を用いて「床反力鉛直成分」と区別をする。同様に、「床反力水平成分」は「並進床反力水平成分」を意味するものとする。
また、目標歩容の「1歩」は、ロボット1の片方の脚体2が着地してからもう一方の脚体2が着地するまでの意味で使用する。
また、歩容における両脚支持期とは、ロボット1がその自重を両脚体2,2で支持する期間、片脚支持期とはいずれか一方のみの脚体2でロボット1の自重を支持する期間、空中期とは両脚体2,2が床から離れている(空中に浮いている)期間を言う。片脚支持期においてロボット1の自重を支持しない側の脚体2を遊脚と呼ぶ。なお、片脚支持期と空中期とが交互に繰り返されるロボット1の走行歩容では両脚支持期は無い。この場合、空中期では両脚2,2とも、ロボット1の自重を支持しないこととなるが、便宜上、該空中期の直前の片脚支持期において遊脚であった脚体2、支持脚であった脚体2をそれぞれ該空中期においても遊脚、支持脚と呼ぶ。
また、目標歩容の軌道は、グローバル座標系(床に固定された座標系)で記述される。グローバル座標系としては、例えば支持脚足平22の着地位置姿勢に対応して定まる支持脚座標系が用いられる。この支持脚座標系は、例えば支持脚足平22の底面のほぼ全面を床に接地した状態で、その足平22が連結された足首関節の中心から床面に延ばした垂線が床と交わる点を原点とし、その原点を通る水平面に支持脚足平22を投影したときの該足平22の前後方向をX軸方向、左右方向をY軸方向とする座標系(Z軸方向は鉛直方向)である。以降の説明では、特にことわらない限り、X、Y、Z座標は、この支持脚座標系の座標を意味する。
図5は、歩容生成装置100の詳細を示すブロック図である。この図5を参照して、歩容生成装置100の処理のより具体的な概要を以下に説明する。
図示の如く、歩容生成装置100は歩容パラメータ決定部100aを備える。歩容パラメータ決定部100aは、目標歩容を規定する歩容パラメータの値あるいは時系列テーブルを決定する。この歩容パラメータ決定部100aは、本発明の中核に係わる処理を担うものである。
本明細書の実施形態では、歩容パラメータ決定部100aが決定する歩容パラメータには、目標歩容のうちの、目標足平位置姿勢軌道、目標腕姿勢軌道、目標ZMP軌道、および目標床反力鉛直成分軌道をそれぞれ規定するパラメータが含まれる。
ここで、歩容生成装置100が目標歩容を生成するとき、遊脚足平22の着地予定位置姿勢、着地予定時刻、あるいは歩幅、移動速度等の歩容生成用の基本的な要求値(要求パラメータ)が、前記ジョイスティック73、もしくは図示しない行動計画部(ロボット1の行動計画を作成する装置)などの装置から歩容生成装置100に与えられる。あるいは、上記要求パラメータをあらかじめ記憶保持した記憶媒体から該要求パラメータを歩容生成装置100が読み込む。そして、歩容生成装置100の歩容パラメータ決定部100aは、その要求パラメータに応じて歩容パラメータを決定する。
また、本明細書の実施形態では、歩容パラメータ決定部100aが決定する歩容パラメータには、基準上体姿勢軌道、ZMP許容範囲、床反力水平成分許容範囲をそれぞれ規定するパラメータも含まれる。
ここで、前記基準上体姿勢軌道は、最終的に歩容生成装置100が出力するものではないが、目標歩容を決定するときに参酌されるものである。この基準上体姿勢軌道は、ロボット1の上体姿勢に関して、前記ジョイスティック73あるいは行動計画部から与えられ、もしくはあらかじめ定められた要求(上体姿勢を鉛直姿勢に保つなどの要求)にそのまま従って生成される上体姿勢軌道である。目標上体姿勢(以降、「基準」が付いていない「上体姿勢」は、目標上体姿勢を表す)は、基準上体姿勢に長期的に追従するか、または一致するように生成される。
また、前記ZMP許容範囲に関して補足すると、本明細書の実施形態では、目標歩容は、目標ZMPのまわりに補正目標床反力モーメント(これは一般には0ではない)を発生するように修正される。したがって、目標ZMPは、本来の定義(床反力モーメント水平成分が0である点という定義)とは異なる点となり、本来の定義を満足するZMP(以下、真のZMPという)は、補正目標床反力モーメントを目標床反力鉛直成分で割った値だけ目標ZMPからずれた位置に移る。
修正された歩容(歩容生成装置100が最終的に出力する目標歩容)の真のZMPは、少なくともZMP存在可能範囲(いわゆる支持多角形のこと。床と足平22の底面との間に粘着力が作用しないと仮定した場合における床反力作用点(ZMP)の存在可能範囲)内になければならない。さらにロボット1の安定余裕を十分にとるためには、修正された歩容の真のZMPは、ZMP存在可能範囲のなかの中心付近の範囲にあることが望ましい。そこで、本明細書の実施形態では修正された歩容の真のZMPが存在できる許容範囲を設定する。この範囲をZMP許容範囲と呼ぶ。ZMP許容範囲は、ZMP存在可能範囲と一致あるいはZMP存在可能範囲内に包含されるように設定される。
なお、前記したように、目標ZMPまわりの補正目標床反力モーメントを目標床反力鉛直成分で除算したものが、目標ZMPに対する真のZMPの位置のずれ量を表すので、目標ZMPまわりの補正目標床反力モーメントを設定する代わりに、目標ZMPに対する真のZMPの位置のずれ量(補正目標床反力モーメントのZMP換算値)を設定してもよい。また、ZMP許容範囲は、その境界の位置に目標床反力鉛直成分を乗算することで、補正目標床反力モーメント許容範囲に変換することができ、その補正目標床反力モーメント許容範囲をZMP許容範囲の代わりに設定するようにしてもよい。
また、前記床反力水平成分許容範囲は、ロボット1の足平22の床との接地面に、足平22が滑らないような大きさの摩擦力を発生させ得る床反力水平成分の許容範囲である。本明細書の実施形態では、少なくとも最終的に歩容生成装置100が出力する目標歩容の運動(目標運動)は、それによって発生するロボット1の慣性力の水平成分に釣り合う床反力水平成分が床反力水平成分許容範囲内に収まるように生成される。
なお、本明細書の実施形態で設定する床反力水平成分許容範囲は、後述のS022の処理で設定される定常歩容用のものと、S026の処理で設定される基本歩容用のものと、S030で設定される歩容補正用(フルモデル補正用)のものとがある。ただし、これらの床反力水平成分許容範囲は必ずしも互いに異なる必要はなく、同一でもよい。一方、ZMP許容範囲は、S030処理で設定される歩容補正用(フルモデル補正用)のものだけである。
補足すると、目標歩容を生成するための歩容パラメータには、上記したパラメータ以外のパラメータも含まれる。それらは、歩容パラメータ決定部100aの中で、所要の境界条件を満たすように決定される。
歩容パラメータ決定部100aで決定された歩容パラメータは目標瞬時値発生部100bに入力される。目標瞬時値発生部100bは入力された歩容パラメータに基づき、動力学モデルを用いて目標上体位置姿勢、目標足平位置姿勢、目標ZMP、目標床反力鉛直成分、ZMP許容範囲、床反力水平成分許容範囲等、目標歩容の構成要素の瞬時値(前記制御ユニット60の所定の制御処理周期毎の値)を逐次算出(発生)する。なお、図5では一部の目標瞬時値のみを代表的に記載している。
目標瞬時値発生部100bで算出された目標瞬時値は、フルモデル補正部100cに入力される。このフルモデル補正部100cは、目標瞬時値発生部100bが求めた目標上体位置姿勢を、動力学的精度の高い動力学モデルとしてのフルモデルを用いて補正してなる補正目標上体位置姿勢を算出すると共に、目標ZMPまわりの床反力モーメント水平成分の目標値である補正目標床反力モーメントを算出する。
フルモデル補正部100cは、より一般的には、次のD1〜D3の条件を満足するように、E1あるいはE2の処理を実行する。すなわち、フルモデル補正部100cは、
D1)目標瞬時値発生部100bで生成した歩容よりも高い精度で動力学的平衡条件を満足する。
D2)真のZMP(目標ZMPのまわりに補正目標床反力モーメントを発生させることによって修正された本来の定義を満足するZMP)は、ZMP許容範囲(安定余裕が十分維持できる許容範囲)に存在する。
D3)床反力水平成分は床反力水平成分許容範囲内になる。
という条件を満足するように、
E1)目標瞬時値発生部100bで生成した歩容の上体位置姿勢を補正する。
あるいは
E2)目標瞬時値発生部100bで生成した歩容の上体位置姿勢を補正すると共に、目標ZMPまわりの補正目標床反力モーメントを出力する(目標床反力を補正する)。
本明細書の実施形態では、D1〜D3の条件を満足するように、E2の処理が実行される。なお、本明細書の実施形態におけるフルモデル補正部100cの処理は、例えば本願出願人が先に提案したPCT国際公開公報WO/03/057427/A1にて詳細に説明されているもの(具体的には、同公報の図13のS038の処理)と同じである。従って、本明細書でのフルモデル補正部100cの処理の詳細な説明は省略する。
また、本明細書の実施形態では、フルモデル補正部100cによる補正を行うが、その補正を省略し、目標瞬時値発生部100bで決定した目標歩容の瞬時値をそのまま歩容生成装置100から出力するようにしてもよい。
図4に戻って、上述のように決定される補正目標上体位置姿勢、目標ZMPまわりの補正目標床反力モーメント、目標足平位置姿勢の瞬時値を含む目標歩容の瞬時値は、複合コンプライアンス制御装置101(図4で破線で囲んだ部分)に入力される。この複合コンプライアンス制御装置101では、ロボット1のバランスを保ちつつ、目標歩容に追従するように関節アクチュエータ(電動モータ64)が制御される。なお、複合コンプライアンス制御装置101のより具体的な処理は後述する。
以上が歩容生成装置100の概要である。
次に、本発明の実施形態を具体的に説明していく。本実施形態では、歩容パラメータ決定部100aは、前記制御ユニット60の制御処理周期毎に、目標ZMP軌道(より正確には歩容パラメータのうちの目標ZMP軌道を規定するパラメータ)を修正するためのパラメータを段階的に決定したり、前記したパラメータ以外のパラメータを探索的に決定することにより、そして、その決定した歩容パラメータと前記動力学モデルとを用いて目標瞬時値発生部100bにより目標歩容の瞬時値の時系列を決定する。この場合、歩容パラメータは、既に作成済みの歩容に係わる歩容パラメータを初期値として、その歩容パラメータの一部のパラメータを、これから作成しようとする歩容に対応して定まる歩容パラメータに段階的に近づけつつ、残りのパラメータのうちの所定のパラメータが探索的に決定される。
ここで、本実施形態で歩容生成に用いられる上体運動モードと動力学モデルとについて説明する。
走行など、空中期がある歩容や、低摩擦床面での歩行においては、単に上体水平加速度を調整するだけでは、目標歩容の床反力水平成分が許容範囲内(あるいは摩擦限界内)に存在しつつ動力学的平衡条件を満足することができない場合がある。そこで、本実施形態では、以下に説明する上体3の2つの運動モード(上体並進モード及び上体回転モード)を複合的に発生させることにより、目標歩容の床反力水平成分が許容範囲内(あるいは摩擦限界内)に存在しつつ動力学的平衡条件を満足するようにしている。
図6(a)のように、ある運動状態から、上体水平加速度だけを摂動させると、全体重心水平加速度と全体重心まわりの角運動量が摂動する。すなわち、上体水平加速度の摂動は、それによって発生する慣性力と重力の合力に対して動力学的に釣り合う床反力鉛直成分を摂動させずに、目標ZMPまわりの床反力モーメント(ただし鉛直軸まわり成分を除く)と床反力水平成分(厳密には、並進床反力水平成分)とを摂動させる。この運動モードを上体並進モードと呼ぶ。
言いかえると、床反力鉛直成分を変化させずに、目標ZMPまわりの床反力モーメントの水平成分と床反力水平成分(並進床反力水平成分)を変化させる運動を上体並進モードと呼ぶ。
この時の単位加速度当たりの床反力モーメント成分の変化をΔMp、単位加速度当たりの床反力水平成分の変化をΔFpとする。図6(a)に示す状況で上体3を前方に水平加速すると、ΔMpとΔFpは図6(a)に示す矢印の向きに作用する。
感覚的に判り易くするために、運動によって発生する慣性力と重力の合力に釣り合う床反力を用いて表現したが、慣性力と重力の合力を用いて表現した方が、理論的には的確である。なお、上記合力と床反力は、互いに大きさが同じで向きが逆になっている。
一方、図6(b)のように、ある運動状態から、ある点Prまわりに上体姿勢角加速度を摂動させると、全体重心は摂動せずに、全体重心まわりの角運動量が摂動する。すなわち、点Prまわりの上体姿勢角加速度摂動は、床反力鉛直成分と床反力水平成分(厳密には、並進床反力鉛直成分と並進床反力水平成分)を摂動させずに、目標ZMPまわりの床反力モーメントの水平成分を摂動させる。この運動モードを上体回転モードと呼ぶ。
言いかえると、床反力鉛直成分と床反力水平成分を変化させずに、目標ZMPまわりの床反力モーメントの水平成分を変化させる運動を上体回転モードと呼ぶ。
この時の単位角加速度当たりの床反力モーメント成分の変化をΔMr、単位角加速度当たりの床反力の水平成分の変化をΔFrとする。ΔFrは零である。図6(b)に示す状況で上体が前傾するように角加速度を与えると、ΔMrは図6(b)に示す矢印の向きに作用する。
上体3の運動には、上体並進モードと上体回転モード以外に、上体鉛直移動モードがある。これは、上体3を鉛直方向に移動させる運動である。
第1実施形態においては、目標瞬時値発生部100bは、以下に示す動力学モデルを用いて歩容を生成する。本実施形態では、その動力学モデルとして、例えば図7に示す動力学モデルが用いられる。
図7を参照して、この動力学モデルはロボット1の各脚体2にそれぞれ対応する2つの質点(足平質点)2m,2m、及び上体3に対応する質点(上体質点)24mからなる合計3質点と、イナーシャがあって質量のないフライホイールFHとから構成されるモデルである。上体質点は、上体3に任意に固定設定されたローカル座標系において上体3の代表点と一定の位置関係を有する点である。同様に、各足平質点は、それに対応する足平22に任意に固定設定されたローカル座標系において該足平22の代表点と一定の位置関係を有する点である。この動力学モデルは、本願出願人が例えば先に提案したPCT国際公開公報WO/03/057427/A1に例示した動力学モデルである。従って、本明細書での詳細な説明は省略するが、該動力学モデルの動力学は、次のように変数を定義したとき、式2a〜2cにより表される。なお、ここでは、本明細書の理解を容易にするために、サジタルプレーン(前後軸(X軸)と鉛直軸(Z軸)を含む平面)での動力学方程式(運動と床反力との関係を表す式)のみを記述し、ラテラルプレーン(左右軸(Y軸)と鉛直軸(Z軸)を含む平面)での動力学方程式を省略する。
Zsup2:支持脚質点鉛直位置、Zswg2:遊脚質点鉛直位置、Zb2:上体質点鉛直位置、ZGtotal2:全体重心鉛直位置、Xsup2:支持脚質点水平位置、Xswg2:遊脚質点水平位置、Xb2:上体質点水平位置、XGtotal2:全体重心水平位置、θby2:鉛直方向に対するY軸回りの上体姿勢角(傾斜角)、mb2:上体質点質量、msup2:支持脚質点質量、mswg2:遊脚質点質量、mtotal:ロボット総質量(=mb2+msup2+mswg2)、J:上体慣性モーメント(上体回転モードにおける等価慣性モーメント)、Fx:床反力水平成分(詳しくは並進床反力の前後方向(X軸)成分)、Fz:床反力鉛直成分(詳しくは並進床反力の鉛直方向(Z軸)成分)、My:目標ZMPまわりの床反力モーメント(詳しくは床反力モーメントの左右軸(Y軸)まわり成分)。
Fz=mb2*(g+d2Zb2/dt2)+msup2*(g+d2Zsup2/dt2)
+mswg2*(g+d2Zswg2/dt2) ……式2a
Fx=mb2*d2Xb/dt2+msup2*d2Xsup2/dt2+mswg2*d2Xswg2/dt2
……式2b
My=−mb2*(Xb2−Xzmp)+(g+d2Zb2/dt2)+mb2*(Zb2−Zzmp)*d2Xb2/dt2
−msup2*(Xsup2−Xzmp)*(g+d2Zsup2/dt2)
+msup2*(Zsup2−Zzmp)*d2Xsup2/dt2
−mswg2*(Xswg2−Xzmp)*(g+d2Zswg2/dt2)
+mswg2*(Zswg2−Zzmp)*(d2Xswg2/dt2)+J*d2θby/dt2
……式2c
なお、ロボット全体重心位置には次の関係式が成立する。
ZGtotal2=(mb2*Zb2+msup2*Zsup2+mswg2*Zswg2)/mtotal …式2d
XGtotal2=(mb2*Xb2+msup2*Xsup2+mswg2*Xswg2)/mtotal …式2e
この動力学モデルでは、脚体2,2の動力学(各質点2m,2mの動力学)と上体3の動力学(質点24m及びフライホイールFHの動力学)とが相互に非干渉に構成されると共に、ロボット1全体の動力学は、それらの線形結合で表される。また、さらに、上体3の運動と床反力との関係は、上体3の並進運動(上体並進モード)と床反力との関係、並びに上体3の回転運動(上体回転モード)と床反力との関係に分離される。具体的には、上体質点24mの水平運動によって発生する床反力は、上体3の水平方向並進運動(上体並進モード)によって発生する床反力に対応し、フライホイールの回転運動によって発生する床反力は、上体3の姿勢角の回転運動(上体回転モード)によって発生する床反力に対応する。
尚、ロボット1の腕体の質量は上体質点24mに含まれるものとし、上体質点24mは腕体の質量を含む質量をもつ。本実施形態では、目標歩容における腕体の運動(腕振り運動)は、後述するように、ロボット1の腕振り以外の運動によってロボット1に発生する鉛直軸まわりの慣性力のモーメントを打ち消しつつも、上体3に対する両腕体の全体の重心の相対位置が動かないように行なわれるので、腕体の腕振り運動による(鉛直軸まわり成分を除く)床反力モーメントへの影響と床反力水平成分への影響とは無視する。
なお、前記フルモデル補正部100cで用いるフルモデルは、例えば図8に示す如く、ロボット1の各リンクに質点をもつような多質点モデルである。この場合、ロボット1の各リンクは、それに対応する質点の回りにイナーシャをもつようなものであってもよい。
次に、歩容生成装置100の処理の詳細をより具体的に説明する。
本実施形態における歩容生成装置100は、ロボット1の片方の脚体2が着地してから他方の脚体2が着地するまでの1歩の期間の目標歩容(前記狭義の目標歩容)を単位として、その1歩の期間の目標歩容を順番に生成する。ここで、新たに生成しようとしている目標歩容を「今回歩容」、その次の目標歩容を「次回歩容」、さらにその次の目標歩容を「次次回歩容」、というように呼ぶ。また、「今回歩容」の一つ前に生成した目標歩容を「前回歩容」と呼ぶ。「今回歩容」は、本発明における「所定の期間における目標歩容」に相当するものである。
また、歩容生成装置100が今回歩容を新たに生成するとき、該歩容生成装置100には、ロボット1の2歩先までの遊脚側足平22の着地予定位置姿勢、着地予定時刻の要求値(要求)等が歩容に対する要求パラメータとして入力される(あるいは歩容生成装置100が記憶装置から要求パラメータを読み込む)。そして、歩容生成装置100は、これらの要求パラメータを基に、補正目標上体位置姿勢軌道、目標足平位置姿勢軌道、目標ZMP軌道、目標床反力鉛直成分軌道、目標腕姿勢軌道、補正目標床反力モーメント軌道等を生成する。なお、本実施形態では、要求パラメータには、2歩先までの遊脚側足平22の着地予定位置姿勢、着地予定時刻の要求値の他、基準上体姿勢に対する要求、上体姿勢に対する相対的な腕姿勢に対するの要求、目標床反力鉛直成分のパターンに対する要求、床の摩擦力(もしくは摩擦係数)に対する要求などを規定するパラメータも含まれる。基準上体姿勢に対する要求は、例えば上体姿勢を鉛直姿勢に維持するというような要求であり、腕姿勢に対する要求は、上体3に対して腕姿勢を所定の姿勢に維持するというような要求である。また、目標床反力鉛直成分のパターンに対する要求は、ロボット1の空中期では、目標床反力鉛直成分を0にし、また、片脚支持期では、目標床反力鉛直成分を台形状のパターンで変化させるというような要求である。また、床の摩擦力に対する要求は、目標床反力鉛直成分と摩擦係数(要求値)との積により定まる摩擦力限界に対して、どの程度の範囲内に目標床反力水平成分を収めるかというような要求である。
以下に歩容生成装置100の歩容生成処理の詳細を図9〜図22を参照しつつ説明する。図9は、その歩容生成装置100が実行する歩容生成処理のメインルーチンを示すフローチャート(構造化フローチャート)である。なお、このメインルーチン処理の手順自体は、その一部のサブルーチン処理を除いて、例えば本願出願人による前記PCT国際公開公報WO/03/057427/A1(以下、公報文献1という)と同じである。
まずS010において時刻tを0に初期化するなど種々の初期化作業が行なわれる。この処理は、歩容生成装置100の起動時等に行なわれる。次いで、S012を経てS014に進み、歩容生成装置100は、制御周期(図9のフローチャートの演算処理周期)毎のタイマ割り込みを待つ。制御周期はΔtである。
次いで、S016に進み、歩容の切り替わり目であるか否かが判断され、歩容の切り替わり目であるときはS018に進むと共に、切り替わり目でないときはS030に進む。ここで、上記「歩容の切り替わり目」は、前回歩容の生成が完了し、今回歩容の生成を開始するタイミングを意味し、例えば前回歩容の生成を完了した制御周期の次の制御周期が歩容の切り替わり目になる。
S018に進むときは時刻tが0に初期化され、次いでS020に進み、次回歩容支持脚座標系、次次回歩容支持脚座標系、今回歩容周期および次回歩容周期が読み込まれる。これらの支持脚座標系及び歩容周期は、前記要求パラメータにより定まるものである。すなわち、本実施形態では、歩容生成装置100にジョイスティック44等から与えらる要求パラメータは、2歩先までの遊脚足平22の着地予定位置姿勢(足平22が着地してから足底を床面にほぼ全面的に接触させるように、滑らさずに回転させた状態での足平位置姿勢)、着地予定時刻の要求値を含んでおり、その1歩目の要求値、2歩目の要求値がそれぞれ、今回歩容、次回歩容に対応するものとして、今回歩容の生成開始時(前記S016の歩容の切り替わり目)以前に歩容生成装置100に与えられたものである。なお、これらの要求値は今回歩容の生成途中でも変更することは可能である。
そして、上記要求パラメータにおける1歩目の遊脚足平22(今回歩容での遊脚足平22)の着地予定位置姿勢の要求値に対応して次回歩容支持脚座標系が定まる。また、2歩目の遊脚足平22の着地予定位置姿勢の要求値に応じて次々回歩容支持脚座標系が定まる。また、今回歩容周期は、今回歩容の支持脚足平22の着地予定時刻(要求値)から、1歩目(今回歩容)の遊脚足平22の着地予定時刻(要求値)までの時間として定まり、次回歩容周期は、1歩目の遊脚足平22の着地予定時刻(要求値)から2歩目の遊脚足平22の着地予定時刻(要求値)までの時間として定まる。
このS020の処理は、前記公報文献1の図13のS020の処理と同一であり、本明細書での説明は以上に留める。
次いでS022に進み、歩容生成装置100は、今回歩容に続く仮想的な周期的歩容としての定常歩容の歩容パラメータ(定常歩容パラメータ)を決定する。ここで決定する歩容パラメータとしては、定常歩容における各足平22の目標足平位置姿勢軌道を規定する足平軌道パラメータ、基準とする上体姿勢軌道を規定する基準上体姿勢軌道パラメータ、目標腕姿勢軌道を規定する腕姿勢軌道パラメータ、目標ZMP軌道を規定するZMP軌道パラメータ、目標床反力鉛直成分軌道を規定する床反力鉛直成分軌道パラメータと、目標床反力水平成分許容範囲を規定するパラメータとがある。
この明細書で「定常歩容」は、その歩容を繰り返したときに歩容の境界においてロボット1の運動状態(足平位置姿勢、上体位置姿勢等の状態)に不連続が生じないような周期的歩容を意味するものとして使用する。「定常歩容」は、ロボット1を直進させる周期的歩容を含むことはもちろん、ロボット1を旋回させる周期的歩容も含む。この場合、旋回率を零とするときは直進を意味することから、「旋回」には、広義の意味で直進も含まれる。このため、本明細書の実施形態では、「定常歩容」をしばしば「定常旋回歩容」と言うこともある。
定常旋回歩容の詳細は、前記公報文献1や特願2000−352011号などにて説明されているので、本明細書での詳細な説明は省略するが、その概要は次の通りである。
周期的歩容である定常旋回歩容は、本実施形態では、ロボット1の2歩分の歩容、すなわち今回歩容に続く第1旋回歩容と該第1旋回歩容に続く第2旋回歩容とからなる歩容を該定常旋回歩容の1周期分の歩容として、その1周期分の歩容を繰り返す歩容である。また、生成する今回歩容が例えばロボット1の走行を行う走行歩容(片脚支持期と空中期とを有する歩容)であるときには、定常旋回歩容の第1旋回歩容及び第2旋回歩容も走行歩容であり、ロボット1の歩行を行う歩行歩容(片脚支持期と両脚支持期とを有する歩容)であるときには、定常旋回歩容の第1旋回歩容及び第2旋回歩容も歩行歩容である。つまり、第1旋回歩容及び第2旋回歩容の基本的な歩容形態は今回歩容と同一である。
なお、以降の説明では、特にことわらない限り、生成する歩容として走行歩容を例にとって説明する。
定常旋回歩容は、歩容生成装置100で今回歩容の終端における発散成分や上体鉛直位置速度、上体姿勢角及びその角速度等のロボット1の運動の状態量を決定するために暫定的に作成されるものであり、歩容生成装置100からそのまま出力されるものではない。
尚、「発散」とは、ロボット1の上体3の位置が両足平22,22の位置からかけ離れた位置にずれてしまうことを意味する。発散成分の値とは、ロボット1の上体3の位置が両足平22,22の位置(より具体的には、支持脚側足平22の接地面に設定されたグローバル座標系(支持脚座標系)の原点)からかけ離れていく具合を表す数値である。例えば、本明細書の実施形態では、前記した各動力学モデルに対して、発散成分は、次式により求められる。
発散成分=上体質点水平位置+上体質点水平速度/ω0 …式3
この式3のω0は所定の値である。なお、歩容における発散成分は、式3の上体質点水平位置、上体質点水平速度の代わりに、それぞれ上体水平位置、上体水平速度を用いて発散成分が求められる。
本明細書の実施形態では、目標歩容が前記発散を生じることなく、継続的に生成されるように、発散成分を指標にして歩容(今回歩容)を生成するようにした。すなわち、これから生成しようとする今回歩容の後に続く定常歩容(より正確には定常歩容パラメータ)が前記今回歩容に係わる要求パラメータ等に応じて決定され、定常歩容の初期発散成分を求めてから、今回歩容の終端発散成分を定常歩容の初期発散成分に一致させる(より一般的には、今回歩容を定常歩容に連続させ、もしくは近づける)ように、今回歩容を生成する。
本題に戻り、S022では、図10に示すサブルーチン処理のフローチャートに従って、定常歩容の歩容パラメータが決定される。すなわち、定常歩容に係る前記足平軌道パラメータ、基準上体姿勢軌道パラメータ、腕軌道パラメータ、ZMP軌道パラメータ、床反力鉛直成分軌道パラメータ、目標床反力水平成分許容範囲を規定するパラメータがそれぞれS100〜S110の処理で決定される。そして、S112において、定常歩容の初期時刻Tsと、1歩の期間(定常歩容の1周期の時間)Tcycとが再定義される。これらの処理は、前記公報文献1の図15のフローチャートの処理と同一であるので、ここでの詳細な説明は省略するが、S100〜S110で決定される定常歩容のパラメータは、そのそれぞれのパラメータにより規定される軌道が定常歩容の周期性を満たしつつ、前記した要求パラメータなどにより表される歩容に関する要求を優先的に満足するように決定されるパラメータである。例えば、前記公報文献1の図15のフローチャートに関して説明されている如く、定常歩容の足平軌道パラメータは、今回歩容に続く第1旋回歩容の遊脚足平22の着地予定位置姿勢(前記次回歩容支持脚座標系で見た着地予定位置姿勢)が前記した2歩目の着地予定位置姿勢(要求値)に合致し、且つ、該第2旋回歩容の遊脚足平22の着地予定位置姿勢(前記次次回歩容支持脚座標系で見た着地予定位置姿勢)が、今回歩容の遊脚足平22の着地予定位置姿勢(要求値)に合致するように決定される。なお、ZMP軌道パラメータは、足平軌道パラメータを基に、目標ZMPが支持脚足平22の接地面のほぼ中央付近に位置し、且つ、定常歩容の全期間にわたって連続的に変化するように決定される。
また、図10のS112で再定義する定常歩容の初期時刻Tsは、定常歩容の1周期分の歩容を後述するように作成するときの1周期の始点の時刻(これは本実施形態では今回歩容の終端の時刻とは相違する)を意味し、第1旋回歩容の空中期(目標床反力鉛直成分が0となる時期)の開始直前の時刻である。また、定常歩容の1歩の期間Tcycは、定常歩容の第1旋回歩容と第2旋回歩容との合計時間の期間である。定常歩容は、その周期性によって、任意の時刻Txにおける状態(ロボット1の各部位の位置姿勢やその変化速度の状態)は時刻Tx+Tcycにおける状態と同一になる歩容である。定常歩容は、2歩分の歩容を1周期とする周期的な歩容であるので、本明細書では、その1周期の期間(第1旋回歩容と第2旋回歩容との合計時間)を定常歩容の1歩の期間とみなす。
補足すると、S100〜S110の処理で決定される定常歩容のパラメータは、定常歩容に関する要求を優先的に満足するように決定されるパラメータであるので、前記第2発明における優先パラメータに相当し、その決定された値は、優先パラメータ要求値に相当するものである。従って、S100〜S110の処理は、第2発明における優先パラメータ要求値決定手段に相当するものである。また、S100〜S110の処理で決定される定常歩容のパラメータは、定常歩容パラメータを構成する全てのパラメータではない。この他にも、定常歩容の歩容パラメータには種々様々なパラメータが含まれる。本実施形態では、定常歩容パラメータを構成するパラメータとして、S100〜S110で決定されるパラメータ(優先パラメータ)の他に、例えば、定常歩容の1周期の期間の始端(該期間の開始時刻)あるいは終端(該期間の終了時刻)における上体3の位置および速度、並びに上体3の姿勢角およびその角速度と、後述の上体傾斜復元モーメントZMP換算値のピーク値とが含まれる。これらのパラメータのうち、上体3の水平位置および水平速度、上体3の姿勢角の角速度、上体傾斜復元モーメントZMP換算値のピーク値は、後述のS024の処理で定常歩容の境界条件(定常歩容の任意の時刻での状態と、1周期後の時刻での状態とが一致もしくはほぼ一致するという条件)を満足するように探索的に決定される。定常歩容パラメータは、それを構成する各パラメータの値と、前記した各動力学モデルとを用いて定常歩容を一義的に生成することができる歩容パラメータである。
また、定常歩容パラメータを構成するパラメータを大別すると、前記優先パラメータとそれ以外の非優先パラメータとに大別される。そして、非優先パラメータには、上記の如く探索的に決定されるパラメータ(前記第2発明における探索対象パラメータ)が含まれる。なお、定常歩容パラメータの非優先パラメータには、歩容に関する要求、あるいは歩容に関する境界条件に依存せずに固定的に決定されるパラメータもある。例えば、本実施形態では、ロボット1の遊脚足平22の持ち上げ高さ(支持脚足平22の接地面に対する相対的な高さ)は、固定的に設定されるパラメータである。固定的に設定されるパラメータは、制御処理周期毎に、S100からS110の処理において設定することは無駄であるので、ROMに記憶しておくか、あるいは、制御ユニット60の電源投入直後における諸々の初期化処理(図9のS010)において設定すればよい。
また、一つもしくは複数の上位のパラメータから従属的に決定される下位のパラメータもある。例えば、本実施形態では、定常歩容の初期(前記時刻Ts)での上体姿勢は、基準上体姿勢と同一とされ、基準上体姿勢軌道パラメータから従属的に決定される。本明細書では、一つの上位のパラメータから従属的に決定されるパラメータは、その上位のパラメータと同じ属性(優先パラメータであるか、非優先パラメータであるか、探索対象パラメータであるか、固定的なパラメータであるかの属性)のパラメータであると見なす。そして、複数の上位のパラメータを基に決定される下位のパラメータについては、上位のパラメータに探索対象パラメータが含まれる場合には、下位のパラメータも探索対象パラメータと見なし、上位のパラメータに探索対象パラメータが含まれず、且つ優先パラメータが含まれる場合には、下位のパラメータは優先パラメータと見なす。本明細書では、全ての定常歩容パラメータの構成パラメータを列挙することは省略し、本願発明を理解する上で十分な典型的なパラメータだけを例示する。
図9の説明に戻って、次にS024に進み、定常歩容の初期状態が算出される。ここで算出される初期状態は、定常歩容の初期上体水平位置速度(水平方向での初期上体位置及び初期上体速度)、初期上体鉛直位置速度(鉛直方向での初期上体位置及び初期上体速度)、初期発散成分、初期上体姿勢角およびその角速度である。この初期状態の算出は、図11のサブルーチン処理のフローチャートに従って探索処理により行なわれる。なお、図11の処理で最終的に決定する定常歩容の初期状態は、今回歩容の終端の時刻(定常歩容の本来の初期時刻0)での状態であるが、本実施形態では、図11のS2008の処理が終了するまでは、図10のS112で設定した初期時刻Tsでの状態を定常歩容の初期状態とする。
図11のサブルーチン処理を説明すると、まず、S2000において、前回歩容(今回歩容の1歩前の歩容)を生成したときのS022およびS024の処理で最終的に決定された、初期(時刻Ts)上体位置Xsおよびその変化速度Vxs、初期(時刻Ts)上体姿勢角速度ωbs、並びに上体傾斜復元モーメントZMP換算値ピーク値ZMPrecpeekを含む第2旋回歩容パラメータ(第2旋回歩容を規定する歩容パラメータ)の各パラメータ値を今回歩容に対応する定常旋回歩容の第1旋回歩容パラメータの各パラメータの仮値とする。
なお、前記上体傾斜復元モーメントZMP換算値ピーク値ZMPrecpeekは、ロボット1の片脚支持期(より詳しくは、片脚支持期の開始直後から終了直前までの時期。以下、上体傾斜角復元期間ということがある)で上体姿勢を基準上体姿勢に近づけるために必要な床反力モーメントのZMP換算値ZMPrec(基準となる目標ZMP(S022で決定したZMP軌道パラメータにより規定される目標ZMP)からのずれ量)のピーク値を示すものであり、その例を図示したものが図20である。ZMPrecは同図示の如く台形状のパターンとされ、そのピーク値(台形の高さ)がZMPrecpeekである。
S2000においてはさらに、前回歩容を生成するときのS022およびS024の処理で最終的に決定された第1旋回歩容パラメータ(第1旋回歩容を規定するパラメータ)の各パラメータ値を今回歩容に対応する定常旋回歩容の第2旋回歩容パラメータの各パラメータの仮値とする。なお、前回歩容に対応する定常旋回歩容における上体3の初期状態を旋回歩容パラメータに含ませたのは、本実施形態では、定常旋回歩容の1周期分を生成するときの初期時刻Tsが本来の初期時刻0と異なり、本来の初期時刻0での上体3の初期状態は、第2旋回歩容内の途中時刻における上体3の状態と同じになるからである。以上がS2000の処理である。
このS2000の処理は、今回歩容に対応する定常旋回歩容の第1旋回歩容パラメータおよび第2旋回歩容パラメータの候補をそれぞれ、とりあえず、前回歩容に対応する定常旋回歩容の第2旋回歩容パラメータ、第1旋回歩容パラメータに一致させるということを意味する。このように設定された、今回歩容に対応する第1旋回歩容パラメータおよび第2旋回歩容パラメータからなる定常旋回歩容パラメータを基に前記動力学モデルを用いて定常旋回歩容を生成すると、その定常旋回歩容は、定常旋回歩容の境界条件を満たすものとなる。なお、上記のように設定された今回歩容に対応する第1旋回歩容パラメータおよび第2旋回歩容パラメータからなる定常旋回歩容パラメータは、第2発明におけるベース定常歩容パラメータに相当するものである。従って、S2000の処理は、第2発明におけるベース定常歩容パラメータ設定手段に相当する。
次いで、S2000−1において、探索対象(探索対象パラメータ)である初期(Ts)上体水平位置Xs、初期(Ts)上体水平速度、初期(Ts)上体姿勢角速度ωbsおよび上体傾斜復元モーメント換算値ZMPrecpeekを除く定常歩容パラメータの優先パラメータ(より詳しくはS022で決定する定常歩容の足平軌道パラメータ、基準上体姿勢軌道パラメータ、腕姿勢軌道パラメータ、床反力鉛直成分軌道パラメータ、床反力水平成分許容範囲を規定するパラメータ、ZMP軌道パラメータ)の値を現在候補値(S2000で設定された値)から前記S022で決定した値に所定量だけ近づけた値に更新する。
次いで、S2004−1において、現在候補の定常歩容パラメータ(S2000で仮決定された定常歩容パラメータの優先パラメータをS2002−1で更新したもの)を基に、定常歩容の境界条件を満足するような探索対象Xs、Vxs、ωbs、ZMPrecpeekの値を探索的に決定する。この処理は、図12のフローチャートに示す如く行なわれる。なお、以下の図12の処理(その処理の中のサブルーチン処理を含む)の説明においては、歩容パラメータの各パラメータの値に関する「現在値」は、該当するパラメータの「現在(該当処理の実行時点)設定されている候補値もしくは仮値」の意味で使用する。また、「現在の○○」(○○はあるパラメータ)というときは、「現在(該当処理の実行時点)候補となっている○○」の意味で使用する。
以下、図12の処理を説明すると、まず、S1200において、現在の定常旋回歩容パラメータを基に足平位置姿勢、上体姿勢角θbsおよび腕姿勢の初期状態(定常旋回歩容の初期時刻Tsでの状態)が決定される。なお、これらの初期状態は、第1旋回歩容の支持脚座標系(前記次回歩容支持脚座標系)で見た状態である。この処理では、足平位置姿勢の初期状態は、現在の定常歩容パラメータの足平軌道パラメータを基に有限時間整定フィルタを用いて算出される足平位置姿勢軌道のうちの時刻Tsでの各足平22の位置姿勢に決定される。該有限時間整定フィルタは、前記公報文献1等にて説明されているので、ここでの説明は省略する。また、上体姿勢角θbsの初期状態は、現在の定常歩容パラメータの基準上体姿勢軌道パラメータから定まる時刻Tsでの基準上体姿勢角と同一に決定され、腕姿勢の初期状態は、現在の定常歩容パラメータの腕姿勢軌道パラメータにより定まる時刻Tsでの状態と同一に決定される。
次いで、S1202において、探索対象である初期(時刻Ts)上体水平位置、初期上体水平速度、初期上体姿勢角速度、および上体傾斜復元モーメントZMP換算値ピーク値(Xs1,Vx1,ωbs1,ZMPrecpeek1)の現在値を、これらの探索対象の初期候補として設定する。なお、これらの探索対象の値は、第1旋回歩容の支持脚座標系(前記次回歩容支持脚座標系)で見た値である。
次いで、S1206〜S1218のループ処理が実行される。その処理を概略的に説明すれば、前記の如く設定した探索対象の初期候補を含む定常歩容パラメータと前記動力学モデルとを用いて定常歩容の終端(時刻Ts+Tcyc)までの歩容を生成する。そして、その生成した定常歩容が境界条件(初期と終端での状態(本実施形態では上体水平位置、上体水平速度、上体姿勢角、上体姿勢角速度)がほぼ一致すること)を満たしているか否かを判断し、満たしていない場合には、探索対象の値を変更する。これを繰り返すことで、最終的に前記動力学モデル上で定常歩容の境界条件を満たすことができる該定常歩容の初期状態が決定される。
S1202〜S1218の処理をより具体的に説明すると、S1202において、動力学モデル上での定常歩容の初期(時刻Ts)の上体鉛直位置および上体鉛直速度(Zs,Vzs)が決定される。この場合、動力学モデル上でのロボット1の全体重心の鉛直方向の慣性力と重力との合力が目標床反力鉛直成分に釣り合い、且つ、全体重心の鉛直位置が定常歩容の境界条件を満たすように決定される。この処理は、前記公報文献1の図20のS206の処理と同様に行なわれる。なお、(Zs,Vzs)は、前記探索対象Xs,Vxs,θbs,ωsに依存する。従って、(Zs,Vzs)は従属的な探索対象パラメータとしての属性を持つ。
次いで、S1208において、上体3の初期状態(θbs,Xs,Vxs,ωbs,Zs,Vzs)の現在値とZMPrecpeekの現在値とを含む定常歩容パラメータを基に、動力学モデルを用いて定常歩容が時刻Ts+Tcyc(定常歩容の終端)まで生成される。この処理は、図13のフローチャートで示すサブルーチン処理により実行され、さらに、この図13のS304の処理は、図14のフローチャートで示すサブルーチン処理により実行される。さらに、図14のS412の処理は、図15フローチャートで示すサブルーチン処理により実行される。これらの処理については後述する。
次いで、S1210において、S1208で生成した定常歩容の終端の上体水平位置、上体水平速度、上体姿勢角およびその角速度を、該定常歩容の次の1歩の支持脚座標系(定常歩容の第2旋回歩容に続く第1旋回歩容の支持脚座標系)から見た値に変換し、その値を(Xe1,Vxe1,θbe1,ωbe1)とする。
そして、S1212において、現在の(Xs1,Vxs1,θbs1,ωbs1)の値と、(Xe1,Vxe1,θbe1,ωbe1)の値との差を定常歩容の境界条件誤差(errx,errv,errθ,errω)として求める。定常歩容の境界条件を満足するためには、境界条件誤差はほぼ0でなければならない。この境界条件誤差は、S1208において作成した定常歩容の、境界条件からのずれ度合いを表すものである。
次いで、S1214において、errx,errv,errθ,errωがいずれも十分に小さい(0近傍の)所定の許容範囲内にあるか否かを判断し、その判断結果がYESである場合には、S1206〜S1218のループ処理を終了する。この場合、このループ処理の終了時現在の定常歩容パラメータが動力学モデル上で境界条件を満たし得る定常歩容パラメータとして得られる。
一方、S1214の判断結果がNOである場合には、現在の探索対象(Xs,Vx,ωbs,ZMPrecpeek)の値の近辺に、それぞれのパラメータの値を所定の微小量ΔXs,ΔVx,Δωbs,ΔZMPrecpeekだけ変化させた複数(本実施形態では4個)の探索対象の候補を決めて、それぞれの探索対象の候補を含む定常歩容パラメータ(現在の定常歩容パラメータの探索対象を新たに決めた各候補に修正した定常歩容パラメータ)を基に、S1206〜S1212と同じ処理を実行して、それぞれの探索対象の候補に対応する境界条件誤差を求める。
次いで、S1218において、現在の(Xs,Vx,ωbs,ZMPrecpeek)およびその近辺の探索対象の候補のそれぞれに対応する境界条件誤差を基に、最急降下法やシンプレックス法などの探索手法によって、探索対象(Xs,Vx,ωbs,ZMPrecpeek)の新たな候補を決定する。そして、S1206からの処理が再び繰り返される。
以上のようにして、(Xs,Vx,ωbs,ZMPrecpeek)を探索対象として、定常歩容の境界条件を満たす新たな定常歩容パラメータが探索的に決定される。なお、図12の処理では、定常歩容パラメータのうちの優先パラメータ(足平軌道パラメータ、基準上体姿勢軌道パラメータなど)は図12の処理の開始時の値に維持される。
補足すると、図12の処理の基本的な考え方(手法)は、前記公報文献1の図20の処理と同様である。但し、本明細書の実施形態では、上記探索対象として、上体姿勢角速度と上体傾斜復元モーメントZMP換算値ピーク値とが含まれ、この点は、前記公報文献1の図20の処理と相違している。また、後述するS1208の処理の細部の処理(サブルーチン処理)の一部も前記公報文献1のものと相違している。
前記S1208のサブルーチン処理を以下に説明する。
S1208のサブルーチン処理である図13の処理は、図示の通り、(Xs,Vxs,θbs,ωbs,Zs,Vzs)の現在値(候補値または仮決め値)を定常歩容における上体3の運動の初期状態として(S300)、その初期(時刻Ts)状態から、時刻Ts+Tcycまで(終端状態まで)の定常歩容の瞬時値を時系列的に実際に作成する(S302〜S306)処理である。なお、図13の「k」は、作成する定常歩容の瞬時値の時系列の時刻である。
この図13のS304のサブルーチン処理(定常歩容の瞬時値を決定するサブルーチン処理)である図14の処理では、S400〜S410の処理によって、現在の定常歩容パラメータ(詳しくは優先パラメータ)を基に、目標床反力鉛直成分、目標ZMP、目標両足平位置姿勢、基準上体姿勢、目標腕姿勢、目標上体鉛直位置、床反力水平成分許容範囲の瞬時値が求められる。
さらに、S412の処理によって、動力学モデルを用いて、図中に記載された条件を満たすように上体水平加速度および上体姿勢角加速度の瞬時値が決定される。そして、S414の処理によって、上体水平加速度および上体姿勢角加速度をそれぞれ2階積分して、上体水平位置および上体姿勢角の瞬時値が決定される。
補足すると、図14の処理のうち、S412以外の処理は、前記公報文献1の図22ののS400〜S410、S414の処理と同じである。従って、S412の処理以外の図13の処理については詳細な説明を省略する。
図14のS412のサブルーチン処理である図15の処理では、まず、定常歩容の上体傾斜角復元期間を規定する時刻Tm、Ts2、Tm2を決定する。これらの時刻は、それぞれ、図20に示す如く、前記上体傾斜復元モーメンZMP換算値ZMPrecを発生させる期間を規定するものである。すなわち、定常歩容の初期時刻Tsの後の最初の片脚支持期の開始直後の時刻をTm、該片脚支持期の終了直前の時刻をTs2、次の片脚支持期の開始直後の時刻をTm2として決定する。そして、期間[Tm,Ts2]と、期間[Tm2,Te]を、それぞれZMPrecを発生させる期間(以下、上体傾斜角復元期間という)とする。これは、前記公報文献1の図23のS500の処理と同じである。
次いで、S502において、定常歩容の瞬時値を作成しようとしている現在時刻k(作成中の定常歩容内での時刻)が上体傾斜角復元期間にあるか否かが判断される。そして、現在時刻kが前記上体傾斜角復元期間内の時刻でないとき、換言すれば、現在時刻kが、片脚支持期の終了直前から次の片脚支持期の開始直後までの期間(目標床反力鉛直成分が0であるかもしくは0に近い期間)にあるときには、S504〜S516の処理によって、動力学モデル上で、目標ZMPを満足し、且つ、該動力学モデル上でのロボット1の全体重心の水平加速度による慣性力に釣り合う床反力水平成分が時刻kの床反力水平成分許容範囲の瞬時値内に収まるように、上体並進モードの上体水平加速度αと、上体回転モードの上体角加速度β(上体姿勢角の角加速度)とが決定される。これらのS504〜S516の処理は、前記公報文献1の図19のS504〜S516の処理と同じである。
また、現在時刻k(作成中の定常歩容内での時刻)が前記上体傾斜角復元期間内の時刻であるときには、S518〜S526の処理によって、上体角加速度βは、動力学モデル上で、上体傾斜復元モーメントZMP換算値パターンの瞬時値(これは、現在設定されている上体傾斜復元モーメントZMP換算値ピーク値(図12のS1208の処理の直前に決定された候補値)と現在時刻kとに応じて定まる。図20を参照)に対応する床反力モーメントを目標ZMPまわりに発生するように決定される。また、上体水平加速度は、動力学モデル上で、上体並進モードによって発生する目標ZMPまわりの床反力モーメントが0になるための上体水平加速度と、上体角加速度βによる目標ZMPまわりの床反力モーメントと同等の床反力モーメントを発生する上体水平加速度との差として求められる。これにより、上体傾斜角復元期間では、上体姿勢を基準上体姿勢に向かって復元させつつ、目標ZMPを満足するように上体角加速度βおよび上体水平加速度αが決定される。
補足すると、本実施形態の図15のS518〜S526の処理は、前記公報文献1の図23のS520〜S528の処理と同じである。
以上、説明した図11のS2002−1、2004−1の処理は、それを簡潔的に言えば、定常歩容パラメータの優先パラメータ(足平軌道パラメータなど)の値を現在値(現在候補値)からS022の処理(詳しくは図10のS100〜S110の処理)で決定した値に所定量だけ近づけて更新し、その更新後の優先パラメータを含んで、定常歩容の境界条件を動力学モデル上で満足し得る新たな定常歩容パラメータを探索する処理である。そして、この処理では、(Xs,Vx,ωbs,ZMPrecpeek)が探索対象とされる。なお、S2002−1における定常歩容パラメータの優先パラメータの現在値(更新前の候補値)は、S2000で決定された定常歩容パラメータの仮値のうちの優先パラメータの値である。また、S2004−1の処理では、探索対象の初期候補値として、S2000で決定された仮値が用いられる。
図11の説明に戻って、S2002−1,S2004−1の上記した処理の後、S2002−1,S2004−1の処理と同様の処理(図11ではS2002−2,S2004−2)が繰り返される。そして、最終的に、S2004−n(nは総繰り返し回数)において、定常歩容パラメータの優先パラメータは、S022の処理で決定された値に一致させる。さらに、S2004−nにおいて、S2004−1と同様に、現在候補の定常歩容パラメータを基に、動力学モデル上で定常歩容の境界条件を満足するような探索対象Xs,Vx,ωbs,ZMPrecpeekの値が探索的に決定され、新たな定常歩容パラメータが決定される。
これらの繰り返し処理において、S2002−k(k=2,…,n)で優先パラメータを更新する前における優先パラメータの値は、S2002−(k−1)での更新後の優先パラメータの値である(S2002−1では、前記したように更新前の優先パラメータの値はS2000で決定された仮値である)。また、S2004−k(k=2,…,n)の処理は、S2004−1の処理と同じである。但し、S2004−kでは、探索対象Xs,Vx,ωbs,ZMPrecpeekの初期値補(図12のS1202で設定する初期値候補)として、S2004−kの処理の開始時に設定されている値、すなわち、S2004−(k−1)の処理で最終的に探索された探索対象の値が用いられる(S2004−1では、前記したように探索対象の初期値候補は、S2000で決定された仮値である)。
以上のようにして、S2000で決定された定常歩容パラメータの優先パラメターの値(仮値)を初期値として、該優先パラメータの値が、段階的にS022の処理で決定された値(これは今回歩容に関する要求を満足するための優先パラメータの値(優先パラメータ要求値)である)に近づくように、該優先パラメータの値が段階的に更新され、最終的にS022の処理で決定された値に一致させられる(S2002−1,S2002−2,……,S2002−n)。従って、これらのS2002−1,S2002−2,……,S2002−nの処理は、第2発明における優先パラメータ漸近手段に相当する。そして、その優先パラメータの更新の都度、その更新後の優先パラメータを含む定常歩容パラメータの探索対象の値が、その更新の直前に決定された値を初期値候補として、定常歩容の境界条件を満たすように探索され、その探索結果の探索対象を含む定常歩容パラメータが新たに決定される(S2004−1,2004−2,……,S2004−n)。従って、これらのS2004−1,S2004−2,……,S2004−nの処理は、第2発明における新規定常歩容パラメータ決定手段に相当し、それぞれの処理で最終的に決定される探索対象を含む定常歩容パラメータが第2発明における新規定常歩容パラメータに相当する。そして、S2004−nで最終的に決定された新たな定常歩容パラメータがこれから生成しようとする今回歩容に続くべき定常歩容の歩容パラメータとされる。
補足すると、上記の繰り返し処理の総繰り返し回数nは、S2000で決定する定常歩容パラメータの優先パラメータの値と、S022で決定した優先パラメータの値(優先パラメータ要求値)との差に応じて決定される。また、定常歩容パラメータのうち、優先パラメータおよび探索対象のパラメータ以外のパラメータ(固定的なパラメータ)は、S2000で決定された定常歩容パラメータの当該パラメータの値に維持される。
上記の如くS2002−1〜S2004−nの繰り返し処理が実行された後、S2006において、現在候補の定常旋回歩容(S2004−nの処理で最後に作成された定常歩容)を基に、本来の初期時刻0における定常歩容の上体3の運動状態である初期上体水平位置X0、初期上体水平速度Vx0、初期上体姿勢角θb0およびその角速度ωb0、並びに初期上体鉛直位置Z0、初期上体鉛直速度Vz0が求められる。さらに、S2008において、前記した初期発散成分qの定義式に従って、定常旋回歩容の、本来の初期時刻0における発散成分である定常旋回初期発散成分q[0]が求められる。S2006およびS2008で求められる値は、今回歩容に続く定常旋回歩容の第1旋回歩容の支持脚座標系で見た値である。そして、S2010において、定常旋回初期発散成分q[0]を今回歩容の支持脚座標系から見た値であるq''と、初期上体鉛直位置・速度を今回歩容の支持脚座標系から見た値である(Z0'',Vz0'')を求める。
以上が、図11の処理の詳細である。
以上説明した図11の処理によって、S2000で決定された仮の定常歩容パラメータ(定常歩容の境界条件を満足するように過去に決定された定常歩容パラメータ)の優先パラメータの値を徐々にS022で決定した優先パラメータ(これから生成しようとする今回歩容に続く定常歩容の優先パラメータ)の値に近づけるように更新しつつ、その更新の都度、定常歩容の境界条件を満足する定常歩容パラメータが新たに決定される。このため、定常歩容の境界条件を満足するような定常歩容を上体位置姿勢の発散が生じたりすることなく、効率よく短時間で作成して、今回歩容に対応する定常歩容の初期状態を適切に求めることができる。
図9の説明に戻って、以上説明したようにS024の処理を実行した後、S026において、今回歩容の歩容パラメータが決定(一部は仮決定)される。この処理は、図16のフローチャートに従って実行される。ここで決定する歩容パラメータとしては、今回歩容における足平位置姿勢軌道(各足平22の位置姿勢軌道)、基準上体姿勢軌道、腕姿勢軌道、床反力鉛直成分軌道、床反力水平成分許容範囲、ZMP軌道をそれぞれ規定するパラメータがあり、これらの各パラメータがS600〜S610の処理で決定される。そして、S612において、今回歩容における上体傾斜角復元期間[Ta,Tb]が設定される。これらの処理は、前記公報文献1の図33のフローチャートの処理と同一であるので、ここでの詳細な説明は省略するが、上記各軌道が前回歩容の終端の状態(=今回歩容の初期状態)から、今回歩容に関する前記した要求を満たしつつ、定常歩容につながるように各軌道を規定するパラメータが決定される。例えば、今回歩容の遊脚足平22に関する足平軌道パラメータは、今回歩容の遊脚足平22の着地予定位置姿勢および時刻がそれらの要求値を満たしつつ、今回歩容の終端において該遊脚足平22の位置姿勢が定常歩容の初期(今回歩容の終端の時刻)で一致するように決定される。
補足すると、S610で決定されるZMP軌道パラメータは今回歩容の基準とするZMP軌道(仮目標ZMP軌道)を規定するパラメータであり、そのパラメータにより規定される仮ZMP軌道の例(X軸方向の軌道の例)が図22の最上段に示されている。該ZMP軌道パラメータは、今回歩容の片脚支持期において、支持脚足平22の接地面のほぼ中央付近に目標ZMP位置し、且つ、片脚支持期に続く空中期では、目標ZMPが今回歩容の終端において定常歩容の初期のZMPまで連続的に変化するように決定される。また、図16のS612で設定する上体傾斜角復元期間は、図22の時刻Taから時刻Tbまでの期間であり、今回歩容の片脚支持期の開始直後から終了直前までの期間である。
補足すると、S600〜S610の処理で決定される今回歩容のパラメータは、今回歩容に関する要求を優先的に満足するように決定されるパラメータであるので、前記S600〜S610の処理で決定される今回歩容のパラメータは、前記第1発明における優先パラメータに相当し、その決定された値は、優先パラメータ要求値に相当するものである。従って、S600〜S610の処理は、第1発明における優先パラメータ要求値決定手段に相当するものである。また、S600〜S610の処理で決定される今回歩容のパラメータは、今回歩容パラメータを構成する全てのパラメータではない。定常歩容パラメータの場合と同様、この他にも、今回歩容の歩容パラメータには種々様々なパラメータが含まれる。本実施形態では、今回歩容パラメータを構成するパラメータとして、S600〜S610で決定されるパラメータ(優先パラメータ)の他に、例えば、ZMP軌道パラメータを修正するためのZMP修正量を規定するZMP修正パラメータと、上体傾斜復元モーメントZMP換算値のピーク値(この場合2種類のピーク値)とが含まれる。これらのパラメータは、以下に説明するS028の処理の中で今回歩容の境界条件(定常歩容に近づける条件)を満足するように探索的に決定されるパラメータである。
なお、定常歩容パラメータの場合と同様、今回歩容パラメータを構成するパラメータを大別すると、前記優先パラメータとそれ以外の非優先パラメータとに大別される。そして、非優先パラメータには、上記の如く探索的に決定されるパラメータ(前記第1発明における探索対象パラメータ)が含まれる。また、非優先パラメータには、歩容に関する要求、あるいは歩容に関する境界条件に依存しない固定的なパラメータもある(例えば、ロボット1の遊脚足平22の持ち上げ高さ)。また、一つもしくは複数の上位のパラメータから従属的に決定される下位のパラメータもある。この場合、下位のパラメータの属性については、定常歩容パラメータの場合と同じである。
図9のS028に進んで、今回歩容の歩容パラメータ(ZMP軌道パラメータ)が修正される(最終的な今回歩容パラメータが決定される)。この処理では、今回歩容の終端における発散成分がS024で決定した定常旋回歩容の初期発散成分q''に一致するように(より詳しくは上体位置姿勢軌道を定常歩容に連続させ、もしくは近づけるように)、今回歩容の歩容パラメータが修正されて、最終的な今回歩容パラメータが決定される(より詳しくは、ZMP修正パラメータと上体傾斜復元モーメントZMP換算値の2種類のピーク値とが決定される)。本実施形態では、上記の如く、今回歩容の終端における発散成分が定常旋回歩容の初期発散成分q''に一致する(もしくはほぼ一致する)ことが今回歩容の終端における境界条件である。
この処理は、図17のフローチャートで示すサブルーチン処理に従って、段階的な探索処理により行われる。
図17のサブルーチン処理を説明すると、まず、S2100において、前回歩容を生成したときのS026およびS028の処理で最終的に決定されたZMP修正パラメータa、並びに上体傾斜復元モーメント換算値の第1ピーク値ZMPrecpeekaおよび第2ピーク値ZMPrecpeekbを含む今回歩容パラメータの各パラメータ値を、これから生成しようとする今回歩容パラメータの各パラメータの仮値とする。但し、前回歩容の歩容パラメータの左右を反転させた上で、今回歩容の当該パラメータの仮値とする。例えば、今回歩容の支持脚側の足平軌道パラメータ、遊脚側の足平軌道パラメータ、ZMP軌道パラメータの仮値は、前回歩容のこれらのパラメータの左右を反転させたものに設定される。
ここで、図17のフローチャートの処理中で求める(探索する)上体傾斜復元モーメントZMP換算値の第1ピーク値ZMPrecpeekaおよび第2ピーク値ZMPrecpeekbは、今回歩容の上体傾斜角復元期間[Ta,Tb]で上体姿勢を基準上体姿勢に近づけるために必要な床反力モーメントのZMP換算値のパターンの2つのピーク値を示す探索対象パラメータであり、その例を図示したものが図21である。定常歩容の場合の上体傾斜復元モーメントZMP換算値のピーク値は1つであったが、今回歩容の終端における上体姿勢角およびその角速度をそれぞれ定常歩容の初期上体姿勢角およびその角速度に一致させるために、本実施形態では、上体傾斜復元モーメントZMP換算値の調整可能な2つのパラメータとして、第1ピーク値ZMPrecpeekaおよび第2ピーク値ZMPrecpeekbが用いられる。本実施形態では、図21に示す如く、今回歩容における上体傾斜復元モーメントZMP換算値は、片脚支持期の前半の台形状のパターンと、後半側の台形状のパターンとを合成した形のパターンとされ、その前半側の台形状のパターンのピーク値が第1ピーク値ZMPrecpeeka、後半側の台形状のパターンのピーク値が第2ピーク値ZMPrecpeekbである。
また、図17のフローチャートの処理中で求めるZMP修正パラメータaは、今回歩容を定常歩容につなげる(今回歩容の終端の発散成分を定常歩容の初期発散成分q''にほぼ一致させる)ための目標ZMPの修正量を規定するパラメータであり、その例を図示したものが、図22の中段の図である。図示の如く、ZMP修正量は、片脚支持期の開始直後から終了直前まで発生させる台形状のパターンとされ、そのピーク値aがZMP修正量のパターンを規定するZMP修正パラメータとして用いられる。
以上説明したS2100の処理は、とりあえず、前回歩容(これは既に歩容の境界条件を満足するように決定されている)の左右を反転させたものの歩容パラメータを今回歩容の歩容パラメータとして設定するということを意味する。このように設定された、今回歩容パラメータを基に前記動力学モデルを用いて今回歩容を生成すると、その今回歩容は、既に歩容の境界条件を満たすように決定された前回歩容の左右を反転させたものと一致することとなる。なお、上記のように設定された今回歩容パラメータは、第1発明におけるベース歩容パラメータに相当するものである。従って、S2100の処理は、第1発明におけるベース歩容パラメータ設定手段に相当する。
補足すると、今回歩容をロボット1の2歩分の歩容から成る歩容とした場合には、左右の反転などを行なうことなく、前回歩容(2歩前の歩容)の歩容パラメータをそのままS2100で今回歩容の歩容パラメータの仮値として設定するようにしてもよい。あるいは、今回歩容の歩容パラメータの仮値を前前回歩容の歩容パラメータに設定してもよい。
次いで、S2102−1において、探索対象(探索対象パラメータ)であるZMP修正パラメータaと上体姿勢傾斜復元モーメントZMP換算値の第1ピーク値ZMPrecpeekaおよび第2ピーク値ZMPrecpeekbとを除く今回歩容パラメータの優先パラメータ(より詳しくは、S026で決定する今回歩容の足平軌道パラメータ、基準上体姿勢軌道パラメータ、腕姿勢軌道パラメータ、床反力鉛直成分軌道パラメータ、床反力水平成分許容範囲を規定するパラメータ、ZMP軌道パラメータ)の値を現在候補値(S2100で設定された値)から前記S026で決定した値に所定量だけ近づけた値に更新する。
次いで、S2104−1において、現在候補の今回歩容パラメータ(S2100で仮決定された定常歩容パラメータの優先パラメータをS2102−1で更新したもの)を基に、今回歩容の前記境界条件(今回歩容の終端の発散成分が定常歩容の初期の発散成分に一致、もしくはほぼ一致するという条件)を満足するような探索対象a、ZMPrecpeeka、ZMPrecpeekbの値を探索的に決定する。この処理は、図18のフローチャートに示す如く行なわれる。なお、前記図12の処理の説明の場合と同様、以下の図18の処理(その処理の中のサブルーチン処理を含む)の説明においては、歩容パラメータの各パラメータの値に関する「現在値」は、該当するパラメータの「現在(該当処理の実行時点)設定されている候補値もしくは仮値」の意味で使用する。また、「現在の○○」(○○はあるパラメータ)というときは、「現在(該当処理の実行時点)候補となっている○○」の意味で使用する。
以下、図18の処理を説明すると、まず、S1700において、探索対象であるZMP修正パラメータ、上体傾斜復元モーメントZMP換算値の第1ピーク値、第2ピーク値(a,ZMPrecpeeka,ZMPrecpeekb)の現在値を、これらの探索対象の初期値候補として設定する。
次いで、S1704〜S1716のループ処理が実行される。その処理を概略的に説明すれば、まず、S1704において、探索対象であるa、ZMPrecpeekaおよびZMPrecpeekbの現在値(現在候補値)と前記動力学モデルとを用いて今回歩容(仮今回歩容)が算出される。より詳しくは、探索対象a,ZMPrecpeeka,ZMPrecpeekbの現在値と優先パラメータの現在値とを含む今回歩容パラメータと、動力学モデルとを用いて仮今回歩容が算出される。なお、S1704のより具体的な処理については後述する。
そして、S1706〜S1716において、S1704で算出した仮今回歩容の終端(今回歩容の遊脚足平の着地予定時刻)での発散成分と定常歩容の初期発散成分q''(前記S024で最終的に算出したもの)との差、仮今回歩容の終端での上体姿勢角と定常歩容の初期上体姿勢角(前記S024で最終的に算出したもの)との差、並びに、仮今回歩容の終端での上体姿勢角の角速度と定常歩容の初期上体姿勢角速度(前記S024で最終的に算出したもの)との差が求められる。そして、これらの差の値がいずれも許容範囲内にあるか否か(0に近いか否か)の条件を満たしているか判断し、満たしていない場合には、探索対象の値を変更する。これを繰り返すことで、最終的に動力学モデル上で仮今回歩容を定常歩容につながらせることが可能な探索対象のパラメータの修正値としてのa、ZMPrecpeekaおよびZMPrecpeekbを含む今回歩容パラメータが新たに決定される。
S1706〜S1716の処理をより具体的に説明すると、S1706において、仮今回歩容の終端での上体位置速度(Xe,Ve)から、今回歩容の終端発散成分q0[k]を前記した発散成分の定義式に従って算出する。
次いで、S1708において、この終端発散成分q0[k]と定常旋回歩容の初期発散成分q''との差を終端発散成分誤差errqとして求める。
さらに、S1710において、定常歩容の初期上体姿勢角と、今回歩容(仮今回歩容)の終端上体姿勢角との差を終端上体姿勢角誤差θberrとして求めると共に、定常歩容の初期上体姿勢角速度と、今回歩容(仮今回歩容)の終端上体姿勢角速度との差を終端上体姿勢角速度誤差ωberrとして求める。
上記の如くもとめた誤差errq、θberr、ωberrは、S1704において作成した仮今回歩容の、境界条件からのずれ度合いを表すものである。
次いで、S1712において、上記の如くもとめたerrq、θberr、ωberrがいずれも0近傍の所定の許容範囲内にあるか否かを判断し、その判断結果がYESである場合には、S1704〜S1716のループ処理を終了する。この場合、このループ処理の終了時現在の探索対象を含む今回歩容パラメータが動力学モデル上で境界条件を満たし得る今回歩容パラメータとして得られる。
一方、S1712の判断結果がNOである場合には、現在の探索対象(a,ZMPrecpeeka,ZMPrecpeekb)の値の近辺に、それぞれのパラメータの値を所定の微小量Δa,ΔZMPrecpeeka,ΔZMPrecpeekbだけ変化させた複数(本実施形態では3個)の探索対象の候補を決めて、それぞれの探索対象の候補を含む今回歩容パラメータ(現在の今回歩容パラメータの探索対象を新たに決めた各候補に修正した今回歩容パラメータ)を基に、S1704〜S1710と同じ処理を実行して、それぞれの探索対象の候補に対応する誤差(errq、θberr、ωberr)の組を求める。
次いで、S1716において、現在の(a,ZMPrecpeeka,ZMPrecpeekb)およびその近辺の探索対象の候補のそれぞれに対応する誤差(errq、θberr、ωberr)の組を基に、最急降下法やシンプレックス法などの探索手法によって、探索対象(a,ZMPrecpeeka,ZMPrecpeekb)の新たな候補を決定する。そして、S1704からの処理が再び繰り返される。
以上のようにして、(a,ZMPrecpeeka,ZMPrecpeekb)を探索対象として、今回歩容の終端の境界条件を満たす新たな今回歩容パラメータが探索的に決定される。なお、図18の処理では、今回歩容パラメータのうちの優先パラメータ(足平軌道パラメータ、基準上体姿勢軌道パラメータなど)は、図18の処理の開始時の値に維持される。
この図18の処理中の前記S1704の処理を以下に説明する。この処理は、図19のフローチャートで示すサブルーチン処理により実行される。図19のサブルーチン処理は、図示の通り、前回歩容の終端状態(詳しくは今回歩容の支持脚座標系で見た前回歩容の終端状態)を今回歩容(仮今回歩容)の初期状態として(S800)、その初期状態から今回歩容の終端時刻Tcurr(今回歩容の遊脚足平22の着地予定時刻)まで今回歩容の瞬時値を時系列的に作成する(S802〜S806)処理である。なお、図19の「k」は、作成する今回歩容の瞬時値の時系列の時刻である。そして、図19のS804のサブルーチン処理は、先に定常歩容の作成処理に関して説明した図14の処理と同様に行なわれる。
この場合の図14の処理では、S400、S404〜S410の処理では、現在の今回歩容パラメータの優先パラメータを基に、目標床反力鉛直成分、目標両足平位置姿勢、基準上体姿勢、目標腕姿勢、目標上体鉛直位置、床反力水平成分許容範囲の瞬時値が求められる。また、図19のS804の中で実行される図14中のS402の処理では、ZMP修正パラメータaの現在値(候補値)aにより規定されるZMP修正量(図22の中段図を参照)を現在の今回歩容パラメータのZMP軌道パラメータにより規定される目標ZMP軌道(図22の上段図を参照)に加えることで、該目標ZMP軌道を修正してなるZMP軌道(図22の下段図を参照)の瞬時値が求められる。
さらに、S412の処理によって、動力学モデルを用いて、図中に記載された条件を満たすように上体水平加速度および上体姿勢角加速度の瞬時値が決定される。そして、S414の処理によって、上体水平加速度および上体姿勢角加速度をそれぞれ2階積分して、上体水平位置および上体姿勢角の瞬時値が決定される。
また、仮今回歩容の作成時におけるS412のサブルーチン処理である図15の処理も、定常歩容の場合と同様に行われる。すなわち、仮今回歩容の瞬時値を作成しようとしている現在時刻k(作成中の仮今回歩容内での時刻)が前記上体傾斜角復元期間内の時刻でないときには、S504〜S516の処理によって、動力学モデル上で、目標ZMP(ZMP修正量により修正した目標ZMP)を満足し、且つ、全体重心の水平加速度による慣性力に釣り合う床反力水平成分が時刻kの床反力水平成分許容範囲の瞬時値内に収まるように、上体並進モードの上体水平加速度αと、上体回転モードの上体角加速度β(上体姿勢角の角加速度)とが決定される。
また、現在時刻k(作成中の仮今回歩容内での時刻)が前記上体傾斜角復元期間内の時刻であるときには、S518〜S526の処理によって、上体角加速度βは、動力学モデル上で、上体傾斜復元モーメントZMP換算値パターンの瞬時値(これは上体傾斜復元モーメントZMP換算値の第1ピーク値ZMPrecpeekaおよび第2ピーク値ZMPrecpeekbの現在値(候補値)と現在時刻kとに応じて定まる。図21を参照)に対応する床反力モーメントを発生するように決定される。また、上体水平加速度は、動力学モデル上で、上体並進モードによって発生する目標ZMP(ZMP修正量により修正した目標ZMP)まわりの床反力モーメントが0になるための上体水平加速度と、上体角加速度βによる床反力モーメントと同等の床反力モーメントを発生する上体水平加速度との差として求められる。これにより、上体姿勢を基準上体姿勢に向かって復元させつつ、目標ZMPを満足するように上体角加速度βおよび上体水平加速度αが決定される。
なお、仮今回歩容を生成する場合の上体傾斜角復元期間は前記図16のS612で決定した時刻TaからTbの期間であるので、図15のS500の処理は省略される。
以上、説明した図17のS2102−1、2104−1の処理は、それを簡潔的に言えば、今回歩容パラメータの優先パラメータ(足平軌道パラメータなど)の値を現在値(現在候補値)からS026の処理(詳しくは図16のS600〜S610の処理)で決定した値に所定量だけ近づけて更新し、その更新後の優先パラメータを含んで、今回歩容の境界条件を動力学モデル上で満足し得る新たな今回歩容パラメータを探索する処理である。そして、この処理では、(a,ZMPrecpeeka,ZMPrecpeekb)が探索対象とされる。なお、S2102−1における今回歩容パラメータの優先パラメータの現在値(更新前の候補値)は、S2100で決定された今回歩容パラメータの仮値のうちの優先パラメータの値である。また、S2104−1の処理では、探索対象の初期候補値として、S2100で決定された仮値が用いられる。
図17の説明に戻って、S2102−1,S2104−1の上記した処理の後、S2102−1,S2104−1の処理と同様の処理(図17ではS2102−2,S2104−2)が繰り返される。そして、最終的に、S2104−n(nは総繰り返し回数)において、今回歩容パラメータの優先パラメータは、S026の処理で決定された値に一致させる。さらに、S2104−nにおいて、S2104−1と同様に、現在候補の今回歩容パラメータを基に、動力学モデル上で今回歩容の境界条件を満足するような探索対象a,ZMPrecpeeka,ZMPrecpeekbの値が探索的に決定され、新たな今回歩容パラメータが決定される。
これらの繰り返し処理において、S2102−k(k=2,…,n)で優先パラメータを更新する前における優先パラメータの値は、S2102−(k−1)での更新後の優先パラメータの値である(S2102−1では、前記したように更新前の優先パラメータの値はS2100で決定された仮値である)。また、S2104−k(k=2,…,n)の処理は、S2104−1の処理と同じである。但し、S2104−kでは、探索対象a,ZMPrecpeeka,ZMPrecpeekbの初期値候補(図18のS1700で設定する初期値候補)として、S2104−kの処理の開始時に設定されている値、すなわち、S2104−(k−1)の処理で最終的に探索された探索対象の値が用いられる(S2104−1では、前記したように探索対象の初期値候補は、S2100で決定された仮値である)。
以上のようにして、S2100で決定された今回歩容パラメータの優先パラメータの値(仮値)を初期値として、該優先パラメータの値が段階的にS026の処理で決定された値(これは今回歩容に関する要求を満足するための優先パラメータの値(優先パラメータ要求値)である)に近づくように、該優先パラメータの値が段階的に更新され、最終的にS026の処理で決定された値に一致させられる(S2102−1,S2102−2,……,S2102−n)。従って、これらのS2102−1,S2102−2,……,S2102−nの処理は、第1発明における優先パラメータ漸近手段に相当する。そして、その優先パラメータの更新の都度、その更新後の優先パラメータを含む今回歩容パラメータの探索対象の値が、その更新の直前に決定された値を初期値候補として、今回歩容の境界条件を満たすように探索され、その探索結果の探索対象を含む今回歩容パラメータが新たに決定される(S2104−1,2104−2,……,S2104−n)。従って、これらのS2104−1,S2104−2,……,S2104−nの処理は、第1発明における新規歩容パラメータ決定手段に相当し、それぞれの処理で最終的に決定される探索対象を含む今回歩容パラメータが第1発明における新規歩容パラメータに相当する。そして、S2104−nで最終的に決定された新たな今回歩容パラメータがこれから生成しようとする今回歩容の歩容パラメータである。
補足すると、上記の繰り返し処理の総繰り返し回数nは、S2100で決定する今回歩容パラメータの優先パラメータの値と、S026で決定した優先パラメータの値(優先パラメータ要求値)との差に応じて決定される。また、今回歩容パラメータのうち、優先パラメータおよび探索対象のパラメータ以外のパラメータ(固定的なパラメータ)は、S2100で決定された今回歩容パラメータの当該パラメータの値に維持される。
以上説明した図17の処理によって、S2100で決定された仮の今回歩容パラメータ(今回歩容の境界条件を満足するように過去に決定された今回歩容パラメータ)の優先パラメータの値を徐々にS026で決定した優先パラメータ(これから生成しようとする今回歩容の優先パラメータ)の値に近づけるように更新しつつ、その更新の都度、境界条件を満足する今回歩容パラメータが新たに決定される。このため、境界条件を満足するような今回歩容を上体位置姿勢の発散が生じたりすることなく、効率よく短時間で作成することができる。
図12の説明に戻って、以上説明したようにS028の処理を実行した後、S030に進んで、フルモデル補正用のZMP許容範囲と床反力水平成分許容範囲を規定するパラメータが決定される。
この処理は、前記公報文献1の図13のS030の処理と同一であり、ここでの説明は省略する。
以上説明したS018からS030までの処理が、前記図5の歩容パラメータ決定部100aで実行される処理である。
S030の処理を実行した後、あるいは、S016の判断結果がNOであるときには、S032に進んで、今回歩容の瞬時値を逐次決定する。この処理のサブルーチン処理は、仮今回歩容の生成に関して説明した前記図19のフローチャートの処理と同じである。この場合、ZMP修正パラメータa、上体傾斜復元モーメントZMP換算値の第1ピーク値ZMPrecpeekaおよび第2ピーク値ZMPrecpeekbとしては、図12のS028で最終的に決定したもの(図17のS2104−nの処理で最終的に探索されたもの)が用いられる。
次いで、S034に進んで、ロボット1のスピン(鉛直軸まわりの回転)をキャンセルするための腕体5,5の動作が決定される。この処理は、ロボット1の腕を振らずに目標歩容通りにロボット1を運動させた場合に目標ZMPまわりに発生する床反力モーメントの鉛直成分と逆向きの床反力モーメントを腕体5,5の腕振り(両腕体5,5を前後逆方向に振る運動)によって発生させるように腕体5,5の姿勢を決定するものであり、前記公報文献1の図13のS034と全く同様に行われる。その詳細は、同公報文献1に記載されているので、ここではさらなる説明を省略する。
次いで、S036に進んで、フルモデル補正用(前記フルモデル補正部100cの処理用)のZMP許容範囲の瞬時値と、床反力水平成分許容範囲の瞬時値とが決定される。この処理では、前記S030で決定したZMP許容範囲および床反力水平成分許容範囲を規定する歩容パラメータに基づいて決定される。
以上説明したS032〜S036の処理が、前記図5の目標瞬時値発生部100bで実行される処理の詳細である。
次いで、S038に進んで、フルモデルを用いた補正歩容を発生する。この処理は、前記フルモデル補正部100cにより実行される処理である。この場合、この処理は、前記公報文献1の図13のS038の処理と同一であり、同公報文献1に記載されたとおりに実行される。従って、本明細書では詳細な説明は省略する。この処理により、目標上体位置姿勢(前記変位次元補正歩容の上体位置姿勢)をさらに修正してなる補正目標上体位置姿勢と補正目標床反力モーメントとが決定される。
以上が、本実施形態における歩容生成装置100の歩容生成処理である。
次に図4を参照して複合コンプアライアンス制御装置101の動作を説明しておく。なお、複合コンプライアンス制御装置101の動作は、本出願人が先に出願した特開平10−277969号公報などに詳細に記載されているので、本明細書では概略的な説明にとどめる。歩容生成装置100において、上記したように生成された目標歩容のうち、補正目標上体位置姿勢(軌道)、目標腕姿勢(軌道)が、ロボット幾何学モデル(逆キネマティクス演算部)102に送出される。
また、目標足平位置姿勢(軌道)、目標ZMP軌道(目標全床反力中心点軌道)、および目標全床反力(軌道)(補正目標床反力モーメントと目標床反力鉛直成分)は、複合コンプライアンス動作決定部104に送られると共に、目標床反力分配器106にも送られる。そして、目標床反力分配器106で、床反力は各足平22に分配され、目標各足平床反力中心点および目標各足平床反力が決定される。この決定された目標各足平床反力中心点および目標各足平床反力は複合コンプライアンス動作決定部104に送られる。
複合コンプライアンス動作決定部104から、機構変形補償付き修正目標足平位置姿勢(軌道)がロボット幾何学モデル102に送られる。ロボット幾何学モデル102は、目標上体位置姿勢(軌道)と機構変形補償付き修正目標足平位置姿勢(軌道)を入力されると、それらを満足する脚体2,2の12個の関節の関節変位指令(値)を算出して変位コントローラ108に送る。変位コントローラ108は、ロボット幾何学モデル102で算出された関節変位指令(値)を目標値としてロボット1の12個の関節の変位を追従制御する。また、ロボット幾何学モデル102は、目標腕姿勢を満足する腕関節の変位指定(値)を算出して変位コントローラ108に送る。変位コントローラ108は、ロボット幾何学モデル102で算出された関節変位指令(値)を目標値としてロボット1の腕体の12個の関節の変位を追従制御する。
ロボット1に生じた床反力(詳しくは実各足床反力)は6軸力センサ50によって検出される。その検出値は前記複合コンプライアンス動作決定部104に送られる。また、ロボット1に生じた姿勢傾斜偏差θerrx,θerry(詳しくは目標上体姿勢角に対する実姿勢角の偏差で、ロール方向(X軸回り)の姿勢角偏差がθerrxであり、ピッチ方向(Y軸回り)の姿勢角偏差がθerryである)が姿勢センサ54を介して検出され、その検出値は姿勢安定化制御演算部112に送られる。この姿勢安定化制御演算部112で、ロボット1の上体姿勢角を目標上体姿勢角に復元するための目標全床反力中心点(目標ZMP)まわり補償全床反力モーメントが算出されて複合コンプライアンス動作決定部104に送られる。複合コンプライアンス動作決定部104は、入力値に基づいて目標床反力を修正する。具体的には、目標全床反力中心点(目標ZMP)回りに補償全床反力モーメント、あるいは、補償全床反力モーメントと補正目標床反力モーメントとの和が作用するように目標床反力を修正する。
複合コンプライアンス動作決定部104は、修正された目標床反力に、センサ検出値などから算出される実ロボットの状態および床反力を一致させようと上記機構変形補償付き修正目標足平位置姿勢(軌道)を決定する。この場合、機構変形補償付き修正目標足平位置姿勢は、前記コンプライアンス機構72の等の機構的変形を考慮したものである。ただしすべての状態を目標に一致させることは事実上不可能であるので、これらの間にトレードオフ関係を与えて妥協的になるべく一致させる。すなわち、各目標に対する制御偏差に重みを与えて、制御偏差(あるいは制御偏差の2乗)の重み付き平均が最小になるように制御する。これにより、実際の足平位置姿勢と全床反力とが目標足平位置姿勢と目標全床反力とに概ね従うように制御される。
なお、以上説明した実施形態では、歩容パラメータ(定常歩容パラメータおよび今回歩容パラメータ)を、前回歩容(過去に決定した歩容)に対応するものから徐々に更新していくようにしたが、定常歩容、今回歩容のいずれにおいても、あらかじめ該歩容の境界条件を満足する標準(基準)歩容パラメータを用意(作成)して記憶保持しておき、それを起点として歩容パラメータを徐々に更新していくようにしてもよい。例えば、今回歩容の足平軌道パラメータに係る遊脚足平22の着地予定位置姿勢を、ロボット1の同じ場所での足踏みを行なう場合の位置姿勢から、要求値に対応する位置姿勢に徐々に更新したり、歩行周期を徐々に更新していくようにしてもよい。
また、前記実施形態では、今回歩容を定常歩容に近づけるために、今回歩容の終端の発散成分を定常歩容の初期発散成分にほぼ一致させることを今回歩容の境界条件として、その境界条件を満たすように今回歩容パラメータの探索対象を探索して決定するようにしたが、今回歩容の終端の上体位置(水平位置および鉛直位置)と、上体速度(水平速度および鉛直速度)とをそれぞれ定常歩容の初期の上体位置、上体速度にほぼ一致させることを今回歩容の境界条件とし、この境界条件を満たすように今回歩容パラメータの探索対象を探索して決定するようにしてもよい。
あるいは、今回歩容の終端のロボット1の全体重心の位置とその変化速度との重み付き平均値を、定常歩容の初期の当該重み付き平均値にほぼ一致させることを境界条件として、その境界条件を満たすように今回歩容パラメータの探索対象を決定するようにしてもよい。
また、定常歩容パラメータを決定するとき、定常歩容の境界条件を満たすために、定常歩容パラメータの探索対象として、ロボット1の上記重み付き平均値、または発散成分を用いてもよい。なお、重み付き平均値は、所定の重みを設定することで、絶対的な大きさを無視すれば、発散成分と等価(より正確には、発散成分と比例関係)になる。