以下、本発明の一実施形態を説明する。
図1に示す如く、本実施形態の2足移動ロボット1(以下、単にロボット1という)は、基体としての上体24と、この上体24から延設された左右一対の脚体(脚部リンク)2R,2Lとを備える左右対称構造のロボットである。なお、本実施形態の説明では、符号「R」,「L」はそれぞれ右側脚体、左側脚体に対応するものであることを示す。
上体24は、両脚体2R,2Lの基端部(上端部)に後述する腰関節(股関節)を介して連結されており、両脚体2R,2Lのうちの接地した脚体によって床面の上方に支持される。
両脚体2R,2Lは同一構造であり、それぞれ6個の関節を備える。その6個の関節は上体24側から順に、腰(股)の回旋用(上体24に対するヨー方向の回転用)の関節10R,10Lと、腰(股)のロール方向(X軸まわり)の回転用の関節12R,12Lと、腰(股)のピッチ方向(Y軸まわり)の回転用の関節14R,14Lと、膝部のピッチ方向の回転用の関節16R,16Lと、足首部のピッチ方向の回転用の関節18R,18Lと、足首部のロール方向の回転用の関節20R,20Lとから構成される。
なお、上記X軸、Y軸、Z軸は、後述する支持脚座標系の3つの座標軸を意味する。この支持脚座標系のX軸方向、Y軸方向は、水平面上で互いに直交する2軸方向であり、X軸方向はロボット1の前後方向(ロール軸方向)、Y軸方向はロボット1の左右方向(ピッチ軸方向)に相当する。また、Z軸方向は鉛直方向(重力方向)であり、ロボット1の上下方向(ヨー軸方向)に相当する。
各脚体2R(L)の関節10R(L),12R(L),14R(L)によって3自由度の腰関節(股関節)が構成され、関節16R(L)によって1自由度の膝関節が構成され、関節18R(L),20R(L)によって2自由度の足首関節が構成されている。
そして、腰関節(股関節)10R(L),12R(L),14R(L)と膝関節16R(L)とは大腿リンク28R(L)で連結され、膝関節16R(L)と足首関節18R(L),20R(L)とは下腿リンク30R(L)で連結されている。また、各脚体2R(L)の足首関節18R(L),20R(L)の下部に、各脚体2R(L)の先端部(下端部)を構成する足平22R(L)が取着されている。また、各脚体2R(L)の上端部(基端部)が、腰関節(股関節)10R(L),12R(L),14R(L)を介して上体24に連結されている。
上記した各関節は、公知の構造のものでよい。この場合、各関節を回転駆動するアクチュエータは、例えば、減速機を備える電動モータ42(図2参照)により構成される。
なお、本実施形態では、各脚体2R(L)の足首関節18R(L),20R(L)と足平22R(L)との間には、図示を省略するゴムやばね等の弾性体を内蔵するばね機構部32が介装されている。また、各足平22R(L)の底面には、ゴム等からなる足底弾性体34が取付けられている。これらのばね機構部32及び足底弾性体34は、各脚体2R(L)が受ける床反力により弾性変形することによって、緩衝機構又はコンプライアンス機構として機能する。
各脚体2R(L)の上記構成により、各脚体2R(L)の足平22R(L)は、上体24に対して6自由度を有する。そして、ロボット1の移動に際して両脚体2R,2Lを合わせて6*2=12個(本明細書で「*」はスカラに対する演算においては乗算を示し、ベクトルに対する演算においては外積を示す)の関節をそれぞれ適宜な角度に駆動することで、両足平22R,22Lの所望の運動を行なうことができる。これにより、ロボット1は歩行動作や走行動作等、3次元空間を移動する運動を行うことが可能となっている。
なお、図示は省略するが、本実施形態では、上体24の上部の両側部には左右一対の腕体が取り付けられると共に、上体24の上端部には頭部が搭載される。そして、各腕体は、それに備える複数の関節(肩関節、肘関節、手首関節など)によって、該腕体を上体24に対して前後に振る等の運動を行なうことが可能となっている。ただし、これらの腕体および頭部は無くてもよい。
上体24の内部にはロボット1の動作制御を行う制御ユニット26が格納されている。なお、図1では図示の便宜上、制御ユニット26を上体24の外部に記載している。
各脚体2R(L)の足首関節18R(L),20R(L)と前記ばね機構部32との間には、足平22R(L)に作用する床反力を計測するための6軸力センサ36が介装されている。この6軸力センサ36は、足平22R(L)から伝達される床反力の3軸方向の並進力成分及び3軸まわりのモーメント成分を検出し、その検出信号を制御ユニット26に出力する。
上体24には、鉛直方向(重力方向)に対する上体24の傾斜角(ロール方向及びピッチ方向の傾斜角)とその変化速度(角速度)とを計測するための傾斜センサ38が搭載されている。この傾斜センサ38は、より詳しくは、加速度センサとジャイロセンサ等のレートセンサ(角速度センサ)とから構成され、これらのセンサの検出信号を制御ユニット26に出力する。そして、制御ユニット26において、傾斜センサ38の出力を基に、公知の手法によって鉛直方向に対する上体24の傾斜角と角速度とが計測される。
また、各関節を回転駆動する電動モータ42(図2参照)には、各関節の回転角を検出するためのエンコーダ(ロータリエンコーダ)40(図2参照)が付設され、該エンコーダ40の検出信号が制御ユニット26に出力される。
図2を参照して、制御ユニット26はマイクロコンピュータを有する電子回路ユニットにより構成されており、CPUからなる第1演算装置50及び第2演算装置52、A/D変換器54、カウンタ56、D/A変換器58、RAM60、ROM62、並びにこれらの間のデータ授受を行なうバスライン64を備えている。
この制御ユニット26では、前記6軸力センサ36及び傾斜センサ38の出力はA/D変換器54でデジタル値に変換された後、バスライン64を介してRAM60に入力される。また、ロボット1の各関節のエンコーダ(ロータリエンコーダ)40の出力はカウンタ56を介してRAM60に入力される。
前記第1演算装置50は、後述する目標歩容を生成すると共に、関節変位指令(各関節の回転角の目標値)を算出し、RAM60に送出する。また、第2演算装置52はRAM60から関節変位指令と、前記エンコーダ40の出力からカウンタ56を介して計測された実関節変位(各関節の回転角の実測値)とを読み出し、該実関節変位を関節変位指令に追従させるために必要な各関節の電動モータ42の駆動指令(電動モータ42の出力トルクを規定する指令値)を算出する。
そして、第2演算装置52は、その算出した駆動指令をD/A変換器58を介して電動モータ42の駆動用のサーボアンプ44に出力する。このとき、サーボアンプ44は、入力された駆動指令に応じて電動モータ42を駆動する(電動モータ42に通電する)。これにより、各関節の実関節変位が関節変位指令に追従するように制御される。
次に、図3のブロック図を参照して、本実施形態におけるロボット1の制御ユニット26が実行する処理をより具体的に説明する。図3中の「実ロボット」以外の部分が制御ユニット26が実行する処理(主として第1演算装置50及び第2演算装置52の処理)によって実現される機能である。
なお、図3では、便宜上、ロボット1に搭載された前記の各センサの出力から制御ユニット26が認識する実測値(実関節変位など)が実ロボット1から出力されるものとして示している。また、以下の説明では、脚体2R,2Lの左右を特に区別する必要がないときは、前記符号R,Lを省略する。
制御ユニット26は、後述の如く目標歩容を自在かつリアルタイムに生成して出力する歩容生成装置100を備えている。
この歩容生成装置100が出力する目標歩容は、ロボット1の各関節の変位量(回転角)の目標値の時系列パターンを規定する目標運動軌道(目標運動の軌道)と、ロボット1に作用させるべき外力に関する目標軌道とから構成される。
目標運動軌道は、本実施形態では、目標上体位置姿勢軌道(上体24の目標位置及び目標姿勢の軌道)と目標足平位置姿勢軌道(各足平22の目標位置及び目標姿勢の軌道)と目標腕姿勢軌道(各腕体の目標姿勢の軌道)とから構成される。また、外力に関する目標軌道は、目標全床反力中心点(目標ZMP)軌道と目標全床反力軌道とから構成される。なお、脚体2や腕体以外に、上体24に対して可動な部位を備える場合には、その可動部位の目標位置姿勢軌道が上記目標運動軌道に加えられる。
ここで、上記目標歩容に係わる用語について補足しておく。なお、以下の説明では、誤解を生じるおそれがない場合には、しばしば「目標」を省略する。
目標歩容における「軌道」は時間的変化のパターン(瞬時値の時系列パターン)を意味する。
上体24の位置及び速度は、上体24のあらかじめ定めた代表点(例えば左右の股関節の間の中央点等)の位置及びその移動速度を意味する。同様に、各足平22の位置及び速度は、各足平22のあらかじめ定めた代表点の位置及びその移動速度を意味する。各足平22の代表点は、本実施形態では、各足平22の底面上の点、例えば、各脚体2の足首関節の中心から各足平22の底面への垂線が該底面と交わる点に設定される。
また、「姿勢」は空間的な向きを意味する。例えば上体姿勢は鉛直方向に対するロール方向(X軸まわり)の上体24の傾斜角(姿勢角)とピッチ方向(Y軸まわり)の上体24の傾斜角(姿勢角)とで表され、足平姿勢は各足平22に固定的に設定された2軸の空間的な方位角で表される。本明細書では、上体姿勢は上体姿勢角ということもある。なお、上体姿勢にヨー方向(Z軸まわり)の上体24の回転角を含めてもよい。
また、各足平22に作用する床反力(並進力及びモーメントからなる床反力)を「各足平床反力」と呼び、ロボット1の全て(2つ)の足平22R,22Lについての「各足平床反力」の合力を「全床反力」という。ただし、以下の説明においては、各足平床反力はほとんど言及しないので、特にことわらない限り、「床反力」は「全床反力」と同義として扱う。
目標床反力は、一般には、作用点と、その作用点に作用する並進力及びモーメントとにより表現される。但し、本実施形態では、説明の便宜上、作用点と、その作用点に作用する並進力及びモーメントを区別し、目標床反力には作用点は含まれないものとする。そして、本実施形態では、目標床反力中心点を目標床反力の作用点とする。この場合、目標床反力のモーメント成分は、鉛直成分(Z軸周りのモーメント成分)を除いて零になる。
なお、以降の説明では、床反力の並進力成分(並進床反力)の鉛直成分及び水平成分をそれぞれ、床反力鉛直成分、床反力水平成分という。また、床反力のモーメント成分(床反力モーメント)の鉛直成分及び水平成分をそれぞれ、床反力モーメント鉛直成分、床反力モーメント水平成分という。
ZMP(Zero Moment Point)は、ロボット1の運動によって発生する慣性力とロボット1に作用する重力との合力がその点まわりに作用するモーメントの水平成分(水平軸まわりのモーメント成分)が零になる床面上の点を意味する。動力学的平衡条件を満足する歩容では、ZMPと床反力中心点とは一致する。このため、本実施形態では、目標床反力中心点を、しばしば目標ZMPと称する。
なお、本実施形態では、目標歩容のうち、目標上体位置姿勢、目標足平位置姿勢、目標全床反力中心点(目標ZMP)、目標全床反力は、ロボット1の動作環境(外界)の床に対して固定されるグローバル座標系としての後述の支持脚座標系で記述される。また、目標腕姿勢は、上体24に対する相対的な姿勢として記述される。
歩容生成装置100により生成される目標歩容(その生成処理の詳細は後述する)のうち、目標上体位置姿勢軌道と目標腕姿勢軌道とは、ロボット幾何学モデル(キネマティクス演算部)102に入力される。
また、目標足平位置姿勢軌道、目標床反力中心点軌道(目標ZMP軌道)、および目標床反力軌道(詳細には目標並進床反力鉛直成分軌道、目標並進床反力水平成分軌道、目標全床反力中心点周りの目標床反力モーメント軌道)は、複合コンプライアンス動作決定部104と目標床反力分配器106とに入力される。
そして、目標床反力分配器106にて、目標床反力は各足平22R,22Lに分配され、目標各足平床反力中心点(各足平22R,22Lの床反力中心点の目標位置)と、目標各足平床反力(各足平22R,22Lの床反力中心点に作用させる目標床反力)とが決定される。この決定された目標各足平床反力中心点及び目標各足平床反力の軌道は複合コンプライアンス動作決定部104に入力される。なお、歩容生成装置100から出力する目標床反力は、複合コンプライアンス動作決定部104によるコンプライアンス制御に必要な成分だけを出力しても良い。例えば、目標並進床反力水平成分を歩容生成装置100から出力することを省略してもよい。
複合コンプライアンス動作決定部104では、目標足平位置姿勢を修正してなる機構変形補償付き修正目標足平位置姿勢が求められ、この修正目標足平位置姿勢の軌道がロボット幾何学モデル102に入力される。
ロボット幾何学モデル102は、入力された目標上体位置姿勢と機構変形補償付き修正目標足平位置姿勢とを満足する両脚体2,2の各関節の関節変位指令(各関節の変位量の目標値)を、ロボット1のキネマティクスモデル(剛体リンクモデル)に基づく逆キネマティクス演算によって算出し、その算出した関節変位指令を変位コントローラ108に出力する。さらに、ロボット幾何学モデル102は、目標腕姿勢を満足する各腕体の各関節の関節変位指令を算出し、その算出した関節変位指令を変位コントローラ108に出力する。
そして、変位コントローラ108は、ロボット幾何学モデル102で算出された関節変位指令を目標値として、ロボット1の両脚体2,2及び両腕体の各関節の回転角(実関節変位)を前記サーボアンプ44を介して追従制御する。より詳しくは、変位コントローラ108は、エンコーダ40の出力から計測される実関節変位(実測値)を関節変位指令に一致させるように、アクチュエータ駆動力としての電動モータ42の出力トルクを調整する。
上記のような追従制御によるロボット1の実際の運動によって該ロボット1の各足平22に実際に作用する床反力である実各足平床反力が前記6軸力センサ36の出力から計測され、その実各足平床反力の実測値が前記複合コンプライアンス動作決定部104に入力される。
また、ロボット1の上体24の実際の姿勢角(鉛直方向に対する傾斜角)である実上体姿勢角が前記傾斜センサ38の出力から計測され、その実上体姿勢角の実測値が姿勢安定化制御演算部112に入力される。さらに、姿勢安定化制御演算部112には、歩容生成装置100が生成する目標上体位置姿勢のうちの目標上体姿勢角(鉛直方向に対する上体24の姿勢角の目標値)等も入力される。
そして、姿勢安定化制御演算部112は、ロボット1の実際の姿勢と目標とする姿勢とのずれの程度を表す指標として、入力される実上体姿勢角(実測値)と目標上体姿勢角との偏差である上体姿勢角偏差Δθを算出する。さらに、姿勢安定化制御演算部112は、この上体姿勢角偏差Δθを“0”に収束させるための要求操作量(フィードバック要求操作量)として、目標ZMPまわりでロボット1に付加的に作用させる床反力モーメントの要求値である補償全床反力モーメントMdmdを、算出した上体姿勢角偏差Δθに応じてフィードバック制御則により算出する。
この場合、フィードバック制御則としては、例えばPD則が用いられる。すなわち、上体姿勢角偏差Δθと、その時間的変化率(微分値)Δωとから、次式50によって、補償全床反力モーメントMdmdが算出される。
Mdmd=K1*Δθ+K2*Δω ……式50
この式50におけるK1、K2は、それぞれ比例ゲイン、微分ゲインである。これらのK1、K2の値は、本実施形態では、あらかじめ設定された所定値である。
この場合、補償全床反力モーメントMdmdは、より詳しくは、ロール方向(X軸まわり)の成分Mdmdxと、ピッチ方向(Y軸まわり)の成分Mdmdyとからなる。Mdmdx,Mdmdyは、それぞれ、上体姿勢角偏差Δθのうちのロール方向(X軸まわり)の成分、ピッチ方向(Y軸まわり)の成分を“0”に収束させるために必要な、目標ZMPまわりの要求モーメント(詳しくは目標ZMPまわりの床反力モーメントの摂動分の要求値)を意味する。
そして、X軸まわりの成分Mdmdxは、Δθ、ΔωのX軸まわりの成分に応じて式50により算出される。また、Y軸まわりの成分Mdmdyは、Δθ、ΔωのY軸まわりの成分に応じて式50により算出される。
なお、式50のゲインK1、K2の値は、ロボット1の運動状態に応じて適宜可変的に設定するようにしてもよい。例えば、ロボット1の全体重心又は上体24の鉛直方向の慣性力に応じて、K1、K2の一方又は両方の値を可変的に決定するようにしてもよい。このようにすることにより、ロボット1の運動に伴う鉛直方向の慣性力の影響を補償して、上体姿勢角偏差Δθを円滑に“0”に収束させ得るMdmdの値を算出することができる。
また、ロボット1の実際の姿勢と目標とする姿勢とのずれの程度を表す指標として、上体姿勢角偏差Δθの代わりに、例えば、ロボット1の全体重心の実際の位置と、目標歩容(詳しくは目標運動)により規定される該全体重心の目標位置との水平方向の位置偏差を使用し、この位置偏差から、PD則等のフィードバック制御則により補償全床反力モーメントMdmdを算出するようにしてもよい。
また、ロボット1に作用する床反力以外の外力及びその作用点を、上体24に搭載した適宜の力センサ等により計測し、その外力及び作用点の計測値から、該外力によって目標ZMPまわりで実際のロボット1に作用するモーメントを算出するようにしてもよい。そして、その算出したモーメントに釣り合う(逆向きの)床反力モーメントに“1”以下の正のゲインを乗じてなる床反力モーメントを式50の右辺に加算することよって、補償全床反力モーメントMdmdを算出するようにしてもよい。
姿勢安定化制御演算部112で上記の如く決定された補償全床反力モーメントMdmdは、補償全床反力モーメント分配器110を介してコンプライアンス制御用目標床反力モーメントとモデル操作床反力モーメントとに分配される。
コンプライアンス制御用目標床反力モーメントは、前記上体姿勢角偏差Δθを“0”に近づけるために、実ロボット1に付加的に作用させる目標ZMPまわりの摂動床反力モーメントである。モデル操作床反力モーメントは、コンプライアンス制御用目標床反力モーメントと同じ目的のために後述する歩容生成用の動力学モデル上でのロボット1に付加的に作用させる目標ZMPまわりの摂動床反力モーメントである。モデル操作床反力モーメントは、言い換えると、歩容生成装置100により最終的に決定された目標歩容(歩容生成装置100が出力する目標歩容)の運動が目標ZMPまわりに発生する摂動床反力モーメントである。
これらの床反力モーメントは、ロール方向(X軸まわり)及びピッチ方向(Y軸まわり)の各成分毎に以下のように決定される。まず、モデル操作床反力モーメントが次式52により決定される。なお、式52におけるMdmdは、ロール方向(X軸まわり)及びピッチ方向(Y軸まわり)の各成分(Mdmdx又はMdmdy)を意味する。同様に、床反力モーメント許容範囲は、ロール方向(X軸まわり)及びピッチ方向(Y軸まわり)の各成分の床反力モーメントの許容範囲を意味する。この床反力モーメント許容範囲は、歩容生成装置100が、後述する図10のS028の処理によって決定する床反力モーメント許容範囲パラメータにより規定される現在時刻での床反力モーメント許容範囲である。
Mdmd>床反力モーメント許容範囲上限値である場合
モデル操作床反力モーメント=−(Mdmd−床反力モーメント許容範囲上限値)
Mdmd<床反力モーメント許容範囲下限値である場合
モデル操作床反力モーメント=−(Mdmd−床反力モーメント許容範囲下限値)
床反力モーメント許容範囲下限値≦Mdmd≦床反力モーメント許容範囲上限値である場合
モデル操作床反力モーメント=0
……式52
なお、上記式52では、補償全床反力モーメントMdmd(詳しくはMdmdx又はMdmdy)そのものを床反力モーメント許容範囲と比較しているが、より一般的には、上記式52で床反力モーメント許容範囲と比較すべき対象は、Mdmdを目標ZMPまわりの床反力モーメントの基準瞬時値に加えてなるモーメントである。該基準瞬時値は、前記上体姿勢角偏差Δθが定常的に“0”に維持されていると仮定した場合に歩容生成装置100が生成する目標全床反力のうちの目標ZMPまわりのモーメントである。
この場合、本実施形態では、目標ZMPまわりのモーメントの基準瞬時値は、ロール方向(X軸まわり)及びピッチ方向(Y軸まわり)のいずれの成分についても、定常的に“0”である。従って、この基準瞬時値にMdmdを加えたものは、Mdmdに等しい。このため、上記式52では、Mdmd(詳しくはMdmdx又はMdmdy)を直接的に床反力モーメント許容範囲と比較するようにしている。
次に、コンプライアンス制御用目標床反力モーメントがロール方向(X軸まわり)及びピッチ方向(Y軸まわり)の各成分毎に次式54により決定される。なお、式50の場合と同様に、式54におけるMdmdは、ロール方向(X軸まわり)及びピッチ方向(Y軸まわり)の各成分(Mdmdx又はMdmdy)を意味する。
コンプライアンス制御用目標床反力モーメント
=Mdmd+モデル操作床反力モーメント ……式54
従って、コンプライアンス制御用目標床反力モーメントとモデル操作床反力モーメントとの差がMdmdに等しくなるようにそれらの床反力モーメントが決定される。
上記のような演算を行なう補償全床反力モーメント分配器110をブロック図で表すと、図4に示すようになる。この演算処理により、ロール方向(X軸まわり)及びピッチ方向(Y軸まわり)の各成分毎に、補償全床反力モーメントMdmd(Mdmdx又はMdmdy)が、床反力モーメント許容範囲内に収まっている場合には、Mdmdがそのままコンプライアンス制御用目標床反力モーメントとして決定されると共に、モデル操作床反力モーメントは“0”に決定される。
また、ロール方向(X軸まわり)及びピッチ方向(Y軸まわり)の各成分毎に、補償全床反力モーメントMdmd(Mdmdx又はMdmdy)が、床反力モーメント許容範囲から逸脱している場合には、床反力モーメント許容範囲の上限値及び下限値のうちのMdmdに近い方の境界値が、コンプライアンス制御用目標床反力モーメントとして決定されると共に、床反力モーメント許容範囲からのMdmdの逸脱分(=Mdmd−床反力モーメント許容範囲の境界値)の符号を反転させてなるモーメントがモデル操作床反力モーメントとして決定される。
図3の説明に戻って、歩容生成装置100には上記の如く決定されたモデル操作床反力モーメントが入力される。
そして、歩容生成装置100は、詳細は後述するが、目標ZMP軌道を決定しつつ、その決定した目標ZMPまわりの床反力モーメントの水平成分がモデル操作床反力モーメントとなるように、動力学モデルを用いて目標歩容の運動(目標運動)を生成する。
なお、歩容生成装置100から複合コンプライアンス動作決定部104に対して出力される目標全床反力は、目標ZMPまわりの床反力モーメントの水平成分が“0”になることを目標とするものとして出力される。
また、補償全床反力モーメント分配器110で上記の如く決定されたコンプライアンス制御用目標床反力モーメントは、複合コンプライアンス動作決定部104に入力される。そして、複合コンプライアンス動作決定部104は、歩容生成装置100が生成する目標歩容の運動にロボット1の運動を追従させつつ、目標ZMPまわりの実床反力モーメントがコンプライアンス制御用目標床反力モーメントに近づくように、目標足平位置姿勢を修正することにより、機構変形補償付き修正目標足平位置姿勢(軌道)を決定する。
この場合、ロボット1の足平位置姿勢及び床反力の全ての状態を目標に一致させることは事実上不可能であるので、これらの間にトレードオフ関係を与えて妥協的になるべく一致させる。すなわち、複合コンプライアンス動作決定部104は、各目標に対する制御偏差に重みを与えて、制御偏差(あるいは制御偏差の2乗)の重み付き平均が最小になるように機構変形補償付き修正目標足平位置姿勢(軌道)を決定する。
換言すれば、目標ZMPまわりの実床反力モーメントと、ロボット1の実際の足平位置姿勢とがそれぞれコンプライアンス制御用目標床反力モーメント、目標足平位置姿勢にできるだけ近づくように機構変形補償付き修正目標足平位置姿勢(軌道)が決定される。そして、複合コンプライアンス動作決定部104は、この修正目標足平位置姿勢をロボット幾何学モデル102に足平位置姿勢の最終的な目標値として出力することで、ロボット1の動作を制御する。すなわち、複合コンプライアンス動作決定部104は、ロボット1の実際の運動を目標歩容の運動に追従させつつ、コンプライアンス制御用目標床反力モーメントを付加的外力としてロボット1に付加的に作用させるように実際のロボット1の動作制御を行なう。
なお、上記した複合コンプライアンス動作決定部104などの構成および動作は、本出願人が先に出願した特開平10−277969号公報などに詳細に記載されている。従って、複合コンプライアンス動作決定部104に関する本明細書での説明は以上に留める。
以上の如く、ロボット1の動作制御を行うことによって、ロボット1の動力学モデル上でモデル操作外力としてのモデル操作床反力モーメントが目標ZMPまわりに付加的に発生するように目標歩容の運動が生成されつつ、実際のロボッ1の床反力には、モデル操作床反力モーメントが付加されないように制御される。したがって、差し引きモデル操作床反力モーメント分だけ、目標歩容の運動と床反力の不平衡(アンバランス)を生じる。このことは、前記上体姿勢角偏差Δθを“0”に収束させる効果に関して言えば、モデル操作床反力モーメントの符号を反転した床反力モーメントを実ロボット1に作用させることと等価である。
つまり、モデル操作床反力モーメントを適宜決定することにより、実ロボット1の上体24の実際の姿勢を目標姿勢に収束させ、ひいては、実ロボット1の全体の姿勢が目標とする姿勢から大きく崩れることがないようにして、該実ロボット1の全体の姿勢を安定化させることができる。
この場合、モデル操作床反力モーメントの符号を反転したモーメントとコンプライアンス制御用目標床反力モーメントとの和が上体姿勢角偏差Δθを“0”に収束させるトータルの復元力(床反力モーメント)になる。すなわち、コンプライアンス制御用目標床反力モーメントとモデル操作床反力モーメントとの差がトータルの復元力になる。
以下に、前記歩容生成装置100の処理をより詳細に説明する。
まず、歩容生成装置100の処理の基本的な前提となる事項を説明しておく。
本実施形態では、ロボット1の動作モードとして、各脚体2の離床・着床動作(離床動作とこれに続く着床動作とからなる一連の動作)を2つの脚体2,2で交互に行なうことによって、ロボット1の移動を行なう両脚交互離床・着床動作モードと、一方の脚体2を離床させた状態で、他方の脚体2だけで離床・着床動作を行う動作である片脚ホッピング動作によってロボット1の移動を行なう片脚ホッピング動作モードと、これらの両脚交互離床・着床動作モード及び片脚ホッピング動作モードの動作ではロボット1の姿勢の崩れを回避することが困難となる状況でのロボット1の動作モードである非常用動作モードとがある。なお、両脚交互離床・着床動作モードは、換言すれば、ロボット1の歩行動作又は走行動作を行なう動作モードである。
そして、歩容生成装置100は、上記動作モードを選択的に決定しつつ、各動作モードに対応する目標歩容を生成する。以降の説明では、両脚交互離床・着床動作モードに対応する目標歩容を両脚交互離床・着床歩容、片脚ホッピング動作モードに対応する目標歩容を片脚ホッピング歩容、非常用動作モードに対応する目標歩容を非常用歩容という。この場合、両脚交互離床・着床歩容には、ロボット1の歩行動作を行なわせる目標歩容(歩行歩容)と、走行動作を行なわせる目標歩容(走行歩容)とが含まれる。
ここで、これらの両脚交互離床・着床歩容、片脚ホッピング歩容、非常用歩容のそれぞれにおけるロボット1の基本的な運動パターンの概要を図5〜図8を参照して説明しておく。なお、以降の説明では、「着床」を、「着地」又は「接地」と言い換えることがある。
図5は、両脚交互離床・着床歩容のうちの歩行歩容におけるロボット1の瞬時的な動作状態を時系列的に例示している。同図中の時刻t1の状態は、一方の脚体2(図示例では脚体2R)を離床状態から着床させた直後の状態を示している。この状態では、他方の脚体2(2L)は既に着床状態となっている。
歩行歩容では、この時刻t1の状態の次に、ロボット1は、着床させた当該一方の脚体2(2R)で自重を支えるようにしつつ、他方の脚体2(2L)を離床させる(時刻t2の状態)。続いて、ロボット1は、一方の脚体2(2R)を着床させたまま、離床させた他方の脚体2(2L)の足平22(22L)をロボット1の進行方向前方に移動させるようにして該他方の脚体2(2L)を振り出す(時刻t3の状態)。
次いで、ロボット1は、当該他方の脚体2(2L)を着床させる(時刻t4の状態)。この時、ロボット1の両脚体2,2が着床状態となる。その後は、前記一方の脚体2(2R)の離床・着床動作が上記と同様に行なわれる。歩行歩容は、以上説明した両脚体2,2の一連の動作が繰り返される歩容である。
図6は、両脚交互離床・着床歩容のうちの走行歩容におけるロボット1の瞬時的な動作状態を時系列的に例示している。同図中の時刻t1の状態は、一方の脚体2(図示例では脚体2R)を離床状態から着床させた直後の状態を示している。この状態では、他方の脚体2(2L)は既に離床状態となっている。
走行歩容では、この時刻t1の状態の次に、ロボット1は、着床させた当該一方の脚体2(2R)で自重を支えるようにしつつ、離床している他方の脚体2(2L)の足平22(22L)をロボット1の進行方向前方に移動させるようにして該他方の脚体2(2L)を振り出す(時刻t2,t3の状態)。さらに、ロボット1は、該他方の脚体2(2L)を離床させたまま、着床している前記一方の脚体2(2R)の足平22Rで床を蹴る(時刻t3の状態)ことによって、該一方の脚体2(2R)を離床させる(時刻t4)。これによりロボット1はその全体が空中に浮上する。
続いてロボット1は、前記一方の脚体2(2R)を離床させたまま、先に進行方向前方に振り出した前記他方の脚体2(2L)で着床する(時刻t5の状態)。その後は、該他方の脚体2(2L)の離床動作と、該他方の脚体2(2L)の着床直前に離床した前記一方の脚体2(2R)の空中での振り出し及びこれに続く着床動作とが上記と同様に行なわれる。走行歩容は、以上説明した両脚体2,2の一連の動作が繰り返される歩容である。
図7は、片脚ホッピング歩容におけるロボット1の瞬時的な動作状態を時系列的に例示している。同図中の時刻t1の状態は、一方の脚体2(図示例では脚体2R)を離床状態から着床させた直後の状態を示している。この状態では、他方の脚体2(2L)は既に離床状態となっている。
片脚ホッピング歩容では、この時刻t1の状態の次に、ロボット1は、上記他方の脚体2(2L)を離床させたまま、着床している上記一方の脚体2(2R)の足平22(22R)で床面を蹴ることによって、該一方の脚体2(2R)を離床させて空中に浮上し、目標とする位置に向かって空中を移動する(時刻t2の状態)。続いて、ロボット1は、上記他方の脚体2(2L)を離床させたまま、上記一方の脚体2(2R)で着床する(時刻t3の状態)。そして、この着床直後においては、着地衝撃を緩和するために、ロボット1は、上記他方の脚体2(2L)を離床させたまま、一方の脚体2(2R)を膝関節で屈曲させていくことによって、ロボット1の全体重心を下降させる(時刻t4の状態)。
その後は、片脚ホッピング動作を継続する場合は、上記一方の脚体2(2R)の離床・着床動作が上記の如く繰り返される。片脚ホッピング歩容は、このように他方の脚体2(2L)を離床させたまま、一方の脚体2(2R)の離床・着床動作を行なう歩容である。なお、図7では、左側の脚体2Lを離床状態に維持する片脚ホッピング歩容を例示したが、右側の脚体2Rを離床状態に維持する片脚ホッピング歩容についても同様である。
図8は、非常用歩容におけるロボット1の瞬時的な動作状態を時系列的に例示している。この例では、ロボット1は、両脚体2,2を着床させた状態(時刻t1の状態)で、両脚体2,2を膝関節で屈曲させるように動作させる(時刻t2,t3の状態)ことによって、ロボット1の全体重心を下降させる。非常用歩容は、このようにロボット1の全体重心を下降させるように脚体2,2を動作させることによって、ロボット1が転倒しても、該ロボット1が受ける衝撃を低減し、該ロボット1が損傷を受け難いようにする歩容である。なお、片方の脚体2を着床させた状態で、両脚体2,2を膝関節で屈曲させるように動作させることによって、ロボット1の全体重心を下降させてもよい。
以上が、両脚交互離床・着床歩容、片脚ホッピング歩容、非常用歩容でのロボット1の運動パターンの概要である。
以降の説明では、両脚交互離床・着床歩容及び片脚ホッピング歩容において、2つの脚体2,2のうち、ロボット1の自重を支える方の脚体2(自重を支える床反力を受ける脚体2)を支持脚又は支持脚側脚体、支持脚でない方の脚体2を遊脚又は遊脚側脚体ということがある。この場合、両脚体2,2が離床状態となる期間である空中期を有する走行歩容又は片脚ホッピング歩容においては、該空中期では、いずれの脚体2,2もロボット1の自重を支える脚体ではないものの、便宜上、該空中期の直前に支持脚であった脚体2を、該空中期においても支持脚又は支持脚側脚体という。また、両脚体2,2が共に着床状態となる期間である両脚支持期を有する歩行歩容においては、該両脚支持期では、両脚体2,2でロボット1の自重を支えることとなるものの、便宜上、該両脚支持期の開始時に離床状態から着床した脚体2を支持脚又は支持脚側脚体という。また、両脚交互離床・着床歩容及び片脚ホッピング歩容において、いずれか一方の脚体2のみが着床状態となる期間を片脚支持期という。
前記片脚ホッピング歩容は、換言すれば、空中期とその前後の片脚支持期とを有し、該空中期の前の片脚支持期と後の片脚支持期とで、支持脚と遊脚とをそれぞれ同じ脚体2に保つ歩容である。これに対して、前記両脚交互離床・着床歩容(歩行歩容又は走行歩容)は、換言すれば、支持脚と遊脚とをそれぞれ2つの脚体2,2で交互に切替えながらロボット1を移動させる歩容である。この場合、歩行歩容では、両脚支持期とその前後の片脚支持期とを有し、該両脚支持期の前の片脚支持期と後の片脚支持期とで、支持脚となる脚体2及び遊脚となる脚体2が切り替わる。また、走行歩容では、空中期とその前後の片脚支持期とを有し、該空中期の前の片脚支持期と後の片脚支持期とで、支持脚となる脚体2及び遊脚となる脚体2が切り替わる。
また、前記支持脚座標系について説明しておくと、本実施形態では、該支持脚座標系は、支持脚として着床している脚体2の足平22の位置姿勢を、該足平22の底面のほぼ全面が床面と平行な姿勢で該床面に接触(密着)する位置姿勢に一致させた状態(以降、この状態での支持脚の足平22の位置姿勢を基本着地位置姿勢という)において、該支持脚の足首中心から床面に延ばした垂線が該床面と交わる点を原点とし、その原点を通る水平面をXY平面とする、床に固定された座標系である。この場合、支持脚座標系のX軸方向、Y軸方向は、それぞれ支持脚の足平22(詳しくは、水平面に投影して見た足平22)の前後方向、左右方向である。また、Z軸方向は鉛直方向である。
従って、本実施形態における支持脚座標系は、その原点の位置とX軸及びY軸の方向とが、支持脚として着床している脚体2の足平22の基本着地位置姿勢に対して上記の関係に従って規定される3軸直交座標系(XYZ座標系)である。
尚、支持脚の着床中の目標足平位置姿勢は、その着床中のある時刻で前記基本着地位置姿勢に一致することは必ずしも必要ではない。この場合、支持脚座標系を規定する前記基本着地位置姿勢は、目標歩容において着床している足平22を、仮想的に滑らせないように回転させることによって達成し得る基本着地位置姿勢(該足平22の底面のほぼ全面が床面に接触する位置姿勢)を意味する。
補足すると、支持脚座標系の原点は、必ずしも上記の点である必要はなく、上記の点からずらした床面上の点であってもよい。また、本実施形態では、支持脚座標系は、支持脚の着地毎に更新されることとなるが、該支持脚座標系の原点の位置及び座標軸の姿勢を一定に保つようにしてもよい。
次に、本実施形態で歩容生成処理に使用するロボット1の動力学モデルを図9を参照して説明しておく。なお、この動力学モデルは、前記特許文献1の図10に示した動力学モデルと同じであるので、本実施形態では概略的な説明に留める。
図9を参照して、本実施形態で歩容生成処理に使用するロボット1の動力学モデルは、例えば前記特許文献1の図10に示した動力学モデルと同じである。すなわち、この動力学モデルは、ロボット1の各脚体2にそれぞれ対応する2つの質点2m,2m、及び上体24に対応する質点24mからなる合計3質点と、イナーシャ(慣性モーメント)があって質量のないフライホイールFHとから構成されるモデルである。
なお、上体質点24mの質量には、脚体2,2以外で上体24に連結もしくは固定されて部位(腕体など)の質量も含まれる。
この動力学モデルでは、脚体2,2の動力学(各質点2m,2mの動力学)と上体24の動力学(質点24m及びフライホイールFHの動力学)とが相互に非干渉に構成されると共に、ロボット1全体の動力学は、それらの線形結合で表される。
この動力学モデルの挙動(該動力学モデル上でのロボットの動力学)は、以下に示すように数式化される。ただし、説明を簡単にするために、サジタルプレーン(支持脚座標系のX軸及びZ軸を含むXZ平面(矢状面))での運動方程式のみを記述し、ラテラルプレーン(支持脚座標系のY軸及びZ軸を含むYZ平面(前額面))での運動方程式を省略した。
説明の便宜上、動力学モデルに関する変数及びパラメータを以下のように定義する。
Zsup:支持脚質点鉛直位置
Zswg:遊脚質点鉛直位置
Zb:上体質点鉛直位置
ZGtotal:全体重心鉛直位置
Xsup:支持脚質点水平位置
Xswg:遊脚質点水平位置
Xb:上体質点水平位置
XGtotal:全体重心水平位置
θby:鉛直方向に対するY軸周りの上体姿勢角(傾斜角)
mb:上体質点質量
msup:支持脚質点質量
mswg:遊脚質点質量
mtotal:ロボット総質量(=mb+msup+mswg)
J:フライホイールFHの慣性モーメント
Fx:床反力水平成分
Fz:床反力鉛直成分
My:目標ZMPまわりの床反力モーメント(詳しくは床反力モーメントのY軸周り成分)
なお、本実施形態では、各脚体2の質点2mの位置は、その脚体2の足平22の位置及び姿勢に応じて規定される位置である。また、上体質点24mの位置は、上体24の位置及び姿勢に応じて規定される位置である。また、フライホイールFHの回転角度は、上体姿勢角に一致するものとされる。
また、任意の変数Aに対して、dA/dtはAの1階微分を表わし、d2A/dt2はAの2階微分を表わす。従って、変数Aが変位ならば、dA/dtは速度、d2A/dt2は加速度を意味する。また、gは重力加速度定数を示す。ここでは、gは正の値とする。
上記動力学モデルの運動方程式(動力学モデル上でのロボットの動力学)は、次式01、式02、式03で表される。
Fz=mb*(g+d2Zb/dt2)+msup*(g+d2Zsup/dt2)
+mswg*(g+d2Zswg/dt2) ……式01
Fx=mb*d2Xb/dt2+msup*d2Xsup/dt2+mswg*d2Xswg/dt2
……式02
My=−mb*(Xb−Xzmp)*(g+d2Zb/dt2)+mb*(Zb−Zzmp)*d2Xb/dt2
−msup*(Xsup−Xzmp)*(g+d2Zsup/dt2)
+msup*(Zsup−Zzmp)*d2Xsup/dt2
−mswg*(Xswg−Xzmp)*(g+d2Zswg/dt2)
+mswg*(Zswg−Zzmp)*d2Xswg/dt2+J*d2θby/dt2
……式03
また、ロボット1の全体重心の位置には次の関係式が成立する。
ZGtotal=(mb*Zb+msup*Zsup+mswg*Zswg)/mtotal ……式04
XGtotal=(mb*Xb+msup*Xsup+mswg*Xswg)/mtotal ……式05
以上が歩容生成装置100の歩容生成処理で使用する動力学モデルである。この動力学モデルでは、ロボット1の全体重心を動かさないように(すなわち、ロボット1に作用する並進床反力が変化しないように)、ロボット1の上体姿勢角を変化させる運動が、フライホイールFHの回転運動として表現される。そして、ロボット1の上体24の並進運動が、上体質点24bの並進運動として表現される。
補足すると、動力学モデルは、前記特許文献1の図10に示したものと異なるものであってもよい。例えば、ロボット1の各リンクに質点を有するような多質点モデルによって、ロボット1の動力学を表現する動力学モデルを使用してもよい。
次に、歩容生成装置100の処理の概略を説明する。歩容生成装置100には、前記モデル操作床反力モーメントの他、床形状情報、ロボット1の移動形態に関する指示情報(ロボット1の移動経路や、移動速度、移動計画を指示する情報等)が入力される。そして、歩容生成装置100は、これらの入力データ等を基に、ロボット1ができるだけ姿勢を崩すことなく、運動(移動)を継続できるように、該ロボット1の動作モードを選択的に決定し、その決定した動作モードに対応する目標歩容を生成する。この場合、両脚交互離床・着床動作モードと片脚ホッピング動作モードとにそれぞれ対応する両脚交互離床・着床歩容、片脚ホッピング歩容については、歩容生成装置100は、1歩分の歩容を単位として、その1歩分の目標歩容を順番に生成する。
ここで、本実施形態では、「1歩分の歩容」というのは、前記両脚交互離床・着床歩容では、一方の脚体2の着床動作と、これに続く他方の脚体2の着床動作との間の期間分の歩容を意味する。また、前記片脚ホッピング歩容においては、「1歩分の歩容」は、支持脚としての一方の脚体2の着床動作と、該一方の脚体2の次の着床動作との間の期間分の歩容を意味する。
以降の説明では、新たに生成しようとしている目標歩容(1歩分の目標歩容)を「今回歩容」、その次の目標歩容を「次回歩容」、さらにその次の目標歩容を「次次回歩容」というように呼ぶ。また、「今回歩容」の1つ前に生成した目標歩容を「前回歩容」と呼ぶ。
上記今回歩容の生成処理においては、両脚交互離床・着床歩容及び片脚ホッピング歩容のいずれにおいても、歩容生成装置100は、目標足平位置姿勢軌道、目標床反力鉛直成分軌道、目標ZMP軌道等、今回歩容の一部の構成要素を規定するパラメータとしての今回歩容パラメータ(今回歩容の歩容パラメータ)を決定する。
この場合、歩容生成装置100は、ロボット1の実際の運動を今回歩容(両脚交互離床・着床歩容又は片脚ホッピング歩容)の運動に追従させた場合に、該ロボット1の姿勢を崩すことなく、該ロボット1が継続的に運動を行なうことができるようにするために、いくつかの所要の制約条件を満足するように、今回歩容パラメータを決定する。そして、歩容生成装置100は、この今回歩容パラメータと前記動力学モデルとを用いて、今回歩容の瞬時値を逐次生成する。
以下に歩容生成装置100の歩容生成処理の詳細を図10〜図38参照しつつ説明する。歩容生成装置100は、図10のフローチャート(構造化フローチャート)に示す歩容生成処理(メインルーチン処理)を実行することによって目標歩容(詳しくは、両脚移動動作歩容又は片脚ホッピング歩容)を生成する。
まず、S010において時刻tを“0”に初期化するなど種々の初期化作業が行なわれると共に、上体位置姿勢などの運動を表す状態量は、前回歩容の支持脚座標系から今回歩容の支持脚座標系に変換される。この処理は、歩容生成装置100の起動時等に行なわれる。
次いで、S012を経てS014に進み、歩容生成装置100は、制御周期(図10のフローチャートの演算処理周期)毎のタイマ割り込みを待つ。制御周期はΔtである。
次いで、S016に進み、歩容生成装置100は、歩容の切り替わり目であるか否かを判断する。このとき、歩容の切り替わり目である場合には、S018の処理を経て、S020に進む。この場合、S018では、歩容生成装置100は、時刻tを“0”に初期化する。また、S016で歩容の切り替わり目でない場合には、直ちにS020に進む。
ここで、上記「歩容の切り替わり目」は、前回歩容の生成が完了し、今回歩容の生成を開始するタイミングを意味する。補足すると、歩容の切り替わり目でない場合には、初期化は行なわず、S020以降の処理によって直前まで生成した今回歩容の残り部分が生成されることとなる。ただし、S026で決定される今回歩容パラメータが直前までの値に一致するとは限らない。例えば、直前でのモデル操作床反力モーメントが“0”でなければ、生成される今回歩容は、後述する定常歩容に漸近する歩容からずれてしまうので、今回歩容パラメータは変更されることとなる。
次いで、S020では、歩容生成装置100は、次回歩容の動作モードを決定する。このS020の処理を概略的に説明すると、歩容生成装置100は、両脚交互離床・着床動作モードでのロボット1の動作(歩行動作又は走行動作。以降、これらを総称的に両脚交互離床・着床動作ということがある)によって、該ロボット1を安定な姿勢で継続的に移動させることができると判断される状況では、次回歩容の動作モードとして、両脚交互離床・着床動作モードを選択する。なお、両脚交互離床・着床動作モードでのロボット1の動作は、歩行動作と走行動作とがあるが、それらのいずれの動作を行なうか(歩行歩容及び走行歩容のいずれの歩容を生成するか)は、例えば後述する指示情報により要求されるロボット1の移動速度に応じて決定される。
また、歩容生成装置100は、両脚交互離床・着床動作モードでのロボット1の動作ではロボット1を安定な姿勢で継続的に移動させることが困難となり、且つ、片脚ホッピング動作モードでのロボット1の動作によって、該ロボット1を安定な姿勢で継続的に移動させることができると判断される状況では、次回歩容の動作モードとして、片脚ホッピング動作モードを選択する。
さらに、歩容生成装置100は、両脚交互離床・着床動作モードでのロボット1の動作及び片脚ホッピング動作モードでのロボット1の動作のいずれの動作でも、ロボット1を安定な姿勢で継続的に移動させることが困難となると判断される状況では、次回歩容の動作モードとして、非常用動作モードを選択する。
このように次回歩容の動作モードを決定するS020の処理は、具体的には、図11のフローチャートに示す如く実行される。
以下説明すると、歩容生成装置100は、まず、S040において、次回歩容の動作モードを両脚交互離床・着床動作モードに決定したと仮定して、ロボット1の運動を安定な姿勢で継続し得る適切な今回歩容を生成することが可能であるか否かを判断する処理を実行する。なお、以降の説明では、具体的な処理を説明する場合に、両脚交互離床・着床動作の動作が走行動作である場合を主要例として説明する。
このS040では、図12のフローチャートに示す処理が実行される。以下、説明すると、まず、S060において、歩容生成装置100は、次回歩容での(1歩先の)支持脚として予定される脚体2の足平22の目標着地位置姿勢と、次次回歩容での(2歩先の)支持脚として予定される脚体2の足平22の目標着地位置姿勢と、次回歩容の支持脚として予定される脚体2の足平22の目標着地時刻と、次次回歩容の支持脚として予定される脚体2の足平の目標着地時刻とをそれぞれ規定するものとして、次回歩容支持脚座標系、次次回歩容支持脚座標系、今回歩容周期および次回歩容周期を決定する。
ここで、足平22の着地位置姿勢は、例えば該足平22の着地瞬間の位置姿勢でもよいが、本実施形態の説明では、理解の便宜上、該足平22を着地させてから、該足平22を滑らせないように回転させて、該足平22の底面のほぼ全面を床面に接触させた状態での該足平22の位置姿勢、すなわち、前記基本着地位置姿勢を意味するものとする。また、足平22の着地時刻は、本実施形態の説明では、該足平22の着地瞬間の時刻を意味するものとする。なお、足平22の着地瞬間の位置姿勢が、前記基本着地位置姿勢に合致していてもよい。
また、支持脚座標系を決定するということは、詳しくは、その原点の位置と該支持脚座標系の姿勢(各座標軸の向き)とを決定することを意味する。この場合、支持脚座標系と前記基本着地位置姿勢とは前記した関係で規定されるので、支持脚座標系を決定するということは、支持脚となる脚体2の足平22の目標着地位置姿勢を決定することと同等である。
また、今回歩容周期は、今回歩容の開始から終了までの時間であり、次回歩容周期は、次回歩容の開始から終了までの時間である。従って、今回歩容周期及び次回歩容周期を決定するということは、次回歩容での支持脚の足平22の目標着地時刻と、次次回歩容での支持脚の足平22の目標着地時刻とを決定することと同等である。
S060では、これらの支持脚座標系及び歩容周期は、例えば、ロボット1の外部の操縦装置もしくはサーバ等から制御ユニット26に与えられ、あるいは、制御ユニット26にあらかじめ記憶保持されたロボット1の動作に関する指示情報(例えばロボット1の移動経路、移動速度、移動方向、移動計画等を指示する情報)と、前回歩容の生成処理時に最終的に決定された今回歩容の動作モードとに基づいて決定される。
この場合、ロボット1の各脚体2は、該脚体2の関節や、これを駆動するアクチュエータの構造等に起因する幾何学的な(運動学的な)制約を受け、その制約による可動範囲内でしか動くことはできない。その制約条件(以降、幾何学的脚体運動必要条件という)は、例えば、各関節の変位量(回転角)が各関節及びその駆動系の構造等に応じて規定される所定の範囲を逸脱しない、左右の脚体2R,2Lが互いに干渉しないというような制約条件である。
このため、歩容生成装置100は、各回の歩容の次の歩容における支持脚足平22の着地位置姿勢(詳しくは、各回の歩容での支持脚座標系に対する相対的な着地位置姿勢)と各回の歩容周期とをそれぞれ所要の範囲内に制限する。そして、S060では、歩容生成装置100は、その制限内で、前記指示情報により規定される移動経路や移動速度等の要求にできるだけ従うように、次回歩容及び次次回歩容の支持脚座標系と、今回歩容及び次回歩容の歩容周期とを決定する。
具体的には、本実施形態では、次回歩容支持脚座標系及び次次回歩容支持脚座標系を前記幾何学的脚体運動必要条件を満足し得る範囲内で決定するために、次回歩容及び次次回歩容で支持脚として予定される脚体2の足平22の目標着地位置の許容領域である幾何学的着地許容領域を、ロボット1の動作環境の床形状情報から認識される床面上に設定する。なお、床形状情報は、ロボット1の外部のサーバ等から制御ユニット26に適宜入力され、あるいは、制御ユニット26が、ロボット1に搭載された撮像カメラ等の視覚センサや、地図情報等から取得した情報である。
上記幾何学的着地許容領域は、両脚交互離床・着床歩容及び片脚ホッピング歩容のそれぞれに対応して、その位置姿勢(各回の歩容の支持脚座標系に対する相対的な位置姿勢)と形状とが、例えば図13(a),(b)及び図14に例示する如くあらかじめ定めれた領域である。
図13(a)は両脚交互離床・着床歩容において、支持脚が右側脚体2Rである状態での、次の支持脚である左側脚体2Lの幾何学的着地許容領域を示している。また、図13(b)は両脚交互離床・着床歩容において、支持脚が左側脚体2Lである状態での、次の支持脚である右側脚体2Rの幾何学的着地許容領域を示している。これらの幾何学的着地許容領域は、支持脚座標系に対して左右対称の領域である。なお、これらの幾何学的着地許容領域は、両脚交互離床・着床歩容が歩行歩容である場合と走行歩容である場合とで異なるように設定してもよい。
また、図14は片脚ホッピング歩容において、支持脚が右側脚体2R(又は左側脚体2L)である状態での、次の支持脚である右側脚体2R(又は左側脚体2L)の幾何学的着地許容領域を示している。なお、片脚ホッピング歩容における図示例の幾何学的着地許容領域は、支持脚が左右いずれの脚体2であっても、支持脚座標系に対して同じ位置姿勢及び形状の領域としているが、支持脚が右側脚体2Rである場合と、左側脚体2Lである場合とで、対称的な形状の領域であってもよい。
次回歩容での支持脚の足平22の目標着地位置を制限する幾何学的着地許容領域は、今回歩容支持脚座標系上で、今回歩容の動作モードに応じて設定される。より詳しくは、今回歩容の動作モードが両脚交互離床・着床動作モードである場合には、今回歩容の支持脚が右側脚体2Rであるか、左側脚体2Lであるかに応じて、図13(a)又は図13(b)に示す如く幾何学的着地許容領域が設定される。また、今回歩容の動作モードが片脚ホッピング動作モードである場合には、図14に示す如く幾何学的着地許容領域が設定される。
なお、図13及び図14に示した幾何学的着地許容領域は、床面が平坦面である場合の領域であるが、床形状情報から床面が飛び石状の床面である場合や、該床面に障害物が設置されている場合等のように、ロボット1の脚体2を着地させ得る床面の領域が制限されるような場合には、その制限された床面の領域と、図13及び図14に示した領域との重なり領域を幾何学的着地許容領域として設定すればよい。
また、歩容生成装置100は、前記幾何学的脚体運動必要条件を満足させるように次回歩容での支持脚の足平22の目標着地姿勢を制限するために、該目標着地姿勢の許容範囲である着地姿勢許容範囲(今回歩容支持脚座標系で見た着地姿勢許容範囲)も設定する。この着地姿勢許容範囲は、例えば、今回歩容の動作モードが両脚交互離床・着床動作モード及び片脚ホッピング動作モードのいずれの動作モードであるかと、今回歩容の支持脚が左右いずれの脚体2であるかとに応じて決定される。
そして、歩容生成装置100は、前記指示情報と今回歩容の動作モードとにより規定される次回歩容での支持脚の足平22の目標着地位置(今回歩容支持脚座標系で見た着地位置)が、上記の如く設定した幾何学的着地許容領域から逸脱するか否かを判断し、逸脱する場合には、該目標着地位置を幾何学的着地許容領域内の位置(例えば、該幾何学的着地許容領域内で、前記指示情報と今回歩容の動作モードとにより規定される着地位置に最も近い位置)に制限した上で、その制限後の目標着地位置に対応させて次回歩容支持脚座標系の原点位置を決定する。
また、歩容生成装置100は、前記指示情報と今回歩容の動作モードとにより規定される次回歩容での支持脚の足平22の目標着地姿勢(今回歩容支持脚座標系で見た着地姿勢)が、上記の如く設定した着地姿勢許容範囲から逸脱するか否かを判断し、逸脱する場合には、該目標着地姿勢を該着地姿勢許容範囲内の姿勢(例えば、該着地姿勢許容範囲内で、前記指示情報と今回歩容の動作モードとにより規定される着地姿勢に最も近い姿勢)に制限した上で、その制限後の目標着地姿勢に対応させて次回歩容支持脚座標系の姿勢(X軸及びY軸の向き)を決定する。
そして、歩容生成装置100は、これらの以外の場合には、前記指示情報と今回歩容の動作モードとにより規定される次回歩容での支持脚の足平22の目標着地位置姿勢に対応させて、次回歩容支持脚座標系を決定する。
また、歩容生成装置100は、このように次回歩容支持脚座標系を決定した上で、次次回歩容での支持脚足平22の目標着地位置を制限する幾何学的着地許容領域を、次回歩容支持脚座標系上で設定する。この場合、S040の処理の中で実行されるS060では、次次回歩容での支持脚の足平22の着地予定位置を制限する幾何学的着地許容領域は、次回歩容での動作モードが両脚交互離床・着床動作モードであるとして設定される領域、すなわち、図13(a)又は図13(b)に示す幾何学的着地許容領域である。
さらに、歩容生成装置100は、次回歩容の動作モードが、両脚交互離床・着床動作モードであるとして、次次回歩容での支持脚足平22の目標着地姿勢を制限する着地姿勢許容範囲を、次回歩容支持脚座標系上で設定する。その設定の仕方は、今回歩容支持脚座標系上で着地姿勢許容範囲を設定した場合と同様である。
そして、歩容生成装置100は、次回歩容支持脚座標系を決定した場合と同様に、この幾何学的着地許容領域と着地姿勢許容範囲とを用いて次次回歩容での支持脚の足平22の着地位置姿勢を制限しつつ、該着地位置姿勢が、前記指示情報と次回歩容の動作モードとにより規定される着地位置姿勢にできるだけ一致もしくは近いものとなるように、次次回歩容支持脚座標系を決定する。
なお、各回の歩容で支持脚となる脚体2の足平22の前記幾何学的着地許容領域は、該足平22の着地姿勢に応じて変化するように設定してもよい。また、床面が飛び石状の床面である場合や、床面に障害物がある場合の幾何学的着地許容領域は、床形状情報を反映させて決定してもよい。例えば、床面にロボット1の脚体2を着地させることができないか、もしくは、着地させることが好ましくない領域がある場合には、その領域を除外するように幾何学的着地許容領域を設定するようにしてもよい。
また、歩容生成装置100は、歩容周期に関しては、前記指示情報と今回歩容の動作モードとにより規定される今回歩容周期と、前記指示情報と次回歩容の動作モードとにより規定される次回歩容周期とが、それぞれ、今回歩容、次回歩容における各脚体2の関節の変位速度等を制限するための所定の許容範囲である歩容周期許容範囲から逸脱するか否かを判断し、逸脱する場合には、それらの歩容周期を該歩容周期許容範囲内の周期(例えば、該歩容周期許容範囲内で、前記指示情報により規定される歩容周期に最も近い周期)に強制的に制限する。そして、歩容生成装置100は、前記指示情報と今回歩容の動作モードとにより規定される今回歩容周期と、前記指示情報と次回歩容の動作モードとにより規定される次回歩容周期とが、歩容周期許容範囲から逸脱しない場合には、それぞれの歩容周期をそのまま、今回歩容周期、次回歩容周期として決定する。
なお、今回歩容周期及び次回歩容周期の歩容周期許容範囲は、それぞれ、今回歩容、次回歩容の動作モードに応じて決定される。
以上が、S040の処理の中で実行されるS060の処理の詳細である。図15は、上記のように決定される次回歩容支持脚座標系及び次次回歩容支持脚座標系の例を示している。図示例では、今回歩容及び前回歩容の動作モードは、次回歩容の動作モードと同じ動作モード(両脚交互離床・着床動作モード)であるとしている。
補足すると、S060で決定する支持脚座標系及び歩容周期は、暫定的なものであり、これらは、今回歩容を最終的に確定するまでに変更される場合もある。
次いでS062に進み、歩容生成装置100は、今回歩容に続く仮想的な周期的歩容(今回歩容の将来の収束目標とする仮想的な周期的歩容)としての定常旋回歩容の歩容パラメータを決定する。該歩容パラメータは、本実施形態では、定常旋回歩容における目標足平位置姿勢軌道を規定する足平軌道パラメータと、基準とする上体姿勢軌道を規定する基準上体姿勢軌道パラメータと、目標腕姿勢軌道を規定する腕姿勢軌道パラメータと、目標ZMP軌道を規定するZMP軌道パラメータと、目標床反力鉛直成分軌道を規定する床反力鉛直成分軌道パラメータと、目標床反力水平成分の許容範囲を規定するパラメータとが含まれる。
ここで、上記「定常旋回歩容」は、前記特許文献1の実施形態にて説明されている如く、その歩容を繰り返したときに歩容の境界(1周期毎の歩容の境界)においてロボット1の運動状態(ロボット1の各部の位置姿勢や、その変化速度等の運動状態)に不連続が生じないような周期的歩容を意味する。換言すれば、「定常旋回歩容」は、歩容の軌道の不連続を発生することなく、同じパターンの運動を繰り返すことができる周期的歩容である。
周期的歩容である定常旋回歩容は、本実施形態では、ロボット1の2歩分の歩容、すなわち今回歩容に続く第1旋回歩容と該第1旋回歩容に続く第2旋回歩容とからなる歩容を1周期分の歩容として、その1周期分の歩容を一定周期で繰り返す歩容である。
なお、定常歩容の第1旋回歩容及び第2旋回歩容でのロボット1の動作モードは、次回歩容の動作モードに一致するものとされる。
定常旋回歩容(以降、単に定常歩容ということがある)について補足すると、両脚交互離床・着床歩容(歩行歩容又は走行歩容)の如く、支持脚と遊脚とを2つの脚体で交互に切替える歩容では、定常歩容の1周期分の歩容には、少なくとも2歩分の歩容が含まれる必要がある。
一方、支持脚と遊脚とがそれぞれ同じ脚体2に保持される片脚ホッピング歩容にあっては、定常歩容の1周期分の歩容は、1歩分の歩容であってもよい。但し、本実施形態では、片脚ホッピング歩容の生成処理を、両脚交互離床・着床歩容の生成処理と整合させるために、片脚ホッピング歩容においても、定常歩容の1周期分の歩容を2歩分の歩容とする。この場合、本実施形態では、片脚ホッピング歩容の定常歩容では、その第1旋回歩容と第2旋回歩容とは(より正確には、次回歩容支持脚座標系から見た第1旋回歩容と次次回歩容支持脚座標系から見た第2旋回歩容とは)、同一パターンの歩容である。
本実施形態では、両脚交互離床・着床歩容及び片脚ホッピング歩容のいずれを生成する場合においても、特許文献1の実施形態と同様に、ロボット1の継続的な運動を可能とする目標歩容を生成するための指標として、次式10により定義される発散成分を用いる。なお、ω0はある所定の値である。
発散成分=上体質点水平位置+上体質点水平速度/ω0 ……式10
そして、歩容生成装置100は、定常歩容の初期発散成分(定常歩容の開始時刻での上記発散成分の値)を決定した上で、この初期発散成分に、今回歩容の終端発散成分(今回歩容の終了時刻での発散成分の値)を一致させることを指針として、今回歩容を生成する。これにより、将来において定常歩容に収束させ得る今回歩容を生成する。
本題に戻り、S062では、歩容生成装置100は、図16のフローチャートに示すサブルーチン処理を実行する。なお、S040の処理の中で実行される図12のフローチャートの処理では、次回歩容の動作モードが両脚交互離床・着床動作モードであることを前提としているので、定常歩容の動作モードも両脚交互離床・着床動作モードである。従って、S040の処理の説明での定常歩容は、両脚交互離床・着床歩容である。
まず、S100において、歩容生成装置100は、今回歩容、第1旋回歩容、第2旋回歩容の順に足平位置姿勢軌道がつながるように、定常歩容の歩容パラメータのうちの足平軌道パラメータを決定する。
本実施形態では、各歩容における足平位置姿勢軌道は、前記特許文献1の実施形態で足平位置姿勢軌道を生成する場合と同様に、有限時間整定フィルタを用いて生成される。このため、定常歩容の足平軌道パラメータは、第1旋回歩容及び第2旋回歩容の初期及び終端のそれぞれにおける支持脚足平及び遊脚足平のそれぞれの位置姿勢、各旋回歩容の歩容周期から構成される。
定常歩容が、両脚交互離床・着床歩容(歩行歩容又は走行歩容)である場合の足平軌道パラメータの設定の仕方は、例えば、前記特許文献1や、特許3726081号にて本願出願人が説明した手法と同じでよい。ここでは、定常歩容が走行歩容である場合を一例として、足平軌道パラメータのより具体的な設定の仕方を図15を参照して以下に説明する。
尚、以降の説明では、支持脚側の脚体2の足平22を支持脚足平22と称し、遊脚側の脚体2の足平22を遊脚足平22と称する。また、歩容の「初期」、「終端」はそれぞれ歩容の開始時刻、終了時刻、あるいは、それらの時刻における瞬時歩容を意味する。
足平軌道パラメータのうち、第1旋回歩容初期遊脚足平位置姿勢は、次回歩容支持脚座標系から見た今回歩容終端支持脚足平位置姿勢とされる。
この場合、走行歩容では、今回歩容終端における支持脚足平22は、空中に移動している。そして、今回歩容終端支持脚足平位置姿勢は、今回歩容初期支持脚足平位置姿勢(=前回歩容終端遊脚足平位置姿勢)から、次次回歩容での支持脚足平22(次回歩容での遊脚足平22)の目標着地位置姿勢(又は次次回歩容支持脚座標の位置姿勢)に応じて定まる次回歩容終端遊脚足平位置姿勢に至る足平位置姿勢軌道(詳しくは次回歩容支持脚座標系から見た軌道)を、今回歩容終端まで生成することにより求められる。この場合、本実施形態では、足平位置姿勢軌道は、前記特許文献1の実施形態で足平位置姿勢軌道を生成する場合と同様に、有限時間整定フィルタを用いて生成される。
尚、次回歩容終端遊脚足平位置姿勢は、次次回歩容での支持脚足平22(次回歩容での遊脚足平22)のつま先を上げてかかとを着地させた状態での該足平22の位置姿勢であり、その位置姿勢から、該足平22を滑らせないようにピッチ方向に回転させて、該足平22の底面のほぼ全面を接地させた状態での位置姿勢が、次次回歩容支持脚座標系に対応する前記基本着地位置姿勢に合致するように決定される。
また、第1旋回歩容初期支持脚足平位置姿勢は、次回歩容支持脚座標系から見た今回歩容終端遊脚足平位置姿勢とされる。この場合、今回歩容終端遊脚足平位置姿勢は、今回歩容での遊脚足平22(次回歩容での支持脚足平22)のつま先を上げてかかとを着地させた状態での該足平22の位置姿勢であり、その位置姿勢から、該足平22を滑らせないようにピッチ方向に回転させて、該足平22の底面のほぼ全面を接地させた状態での位置姿勢が、次回歩容支持脚座標系に対応する前記基本着地位置姿勢に合致するように決定される。
第1旋回歩容終端遊脚足平位置姿勢は、次回歩容支持脚座標系から見た上記次回歩容終端遊脚足平位置姿勢とされる。
第1旋回歩容終端では、支持脚足平22は離床して空中にある。支持脚足平22が離床してから後の軌道を決定するために、第1旋回歩容での支持脚足平22(第2旋回歩容での遊脚足平22)の離床後の目標着地位置姿勢に対応する次次次回歩容支持脚座標系が図15に示す如く設定される。この次次次回歩容支持脚座標系は、次次回歩容支持脚座標系と該次次次回歩容支持脚座標系との相対的位置姿勢関係(図15中のxnext,ynext,θznextにより表される位置姿勢関係)が、今回歩容支持脚座標系と次回歩容支持脚座標系との相対的位置姿勢関係と一致するように決定される。
そして、第1旋回歩容終端支持脚足平位置姿勢は、第1旋回歩容初期支持脚足平位置姿勢を求めた場合と同様に、第1旋回歩容初期支持脚足平位置姿勢から、上記次次次回歩容支持脚座標系に応じて定まる次次回歩容終端遊脚足平位置姿勢に至る足平位置姿勢軌道(より詳しくは次回歩容支持脚座標系から見た軌道)を、第1旋回歩容終端まで前記有限時間整定フィルタを用いて生成することにより求められる。この場合、次次回歩容終端遊脚足平位置姿勢は、次次次回歩容での支持脚足平22(次次回歩容での遊脚足平22)のつま先を上げてかかとを着地させた状態での該足平22の位置姿勢であり、その位置姿勢から、該足平22を滑らせないようにピッチ方向に回転させて、該足平22の底面のほぼ全面を接地させた状態での位置姿勢が、次次次回歩容支持脚座標系に対応する前記基本着地位置姿勢に合致するように決定される。
第2旋回歩容初期遊脚足平位置姿勢は、次次回歩容支持脚座標系から見た第1旋回歩容終端支持脚足平位置姿勢とされる。第2旋回歩容初期支持脚足平位置姿勢は、次次回歩容支持脚座標系から見た第1旋回歩容終端遊脚足平位置姿勢とされる。
第2旋回歩容終端遊脚足平位置姿勢は、今回歩容支持脚座標系から見た今回歩容終端遊脚足平位置姿勢とされる。第2旋回歩容終端支持脚足平位置姿勢は、今回歩容支持脚座標系から見た今回歩容終端支持脚足平位置姿勢とされる。
第1旋回歩容および第2旋回歩容の歩容周期は、次回歩容周期と同一に設定される。これらの第1旋回歩容及び第2旋回歩容の歩容周期は、互いに同一にすることは必ずしも必要ではないが、いずれの周期も、少なくとも次回歩容周期に応じて決定するのが好ましい。
以上が、定常歩容が走行歩容である場合にS100で決定される足平軌道パラメータの例である。
次に、S102に進み、定常歩容の上体姿勢が追従すべき基準上体姿勢軌道を規定する基準上体姿勢軌道パラメータが決定される。基準上体姿勢軌道は、ロボット1の上体姿勢の長期的な追従目標に相当するものである。
定常歩容が両脚交互離床・着床歩容である場合、本実施形態では、基準上体姿勢は、例えば、ロボット1の上体24の体幹軸の方向が鉛直方向に一致する状態での該上体24の姿勢角(ロボット1を直立姿勢で起立させた場合の上体姿勢角。以降、この姿勢角を“0”とする)に設定される。そして、この姿勢角の値が、基準上体姿勢軌道パラメータとして決定される。なお、定常歩容の各旋回歩容における基準上体姿勢角は、必ずしも一定である必要はない。
次いでS104に進み、歩容生成装置100は、Z軸(あるいは上体体幹軸)周りの両腕体の角運動量変化に関すること以外の腕姿勢軌道パラメータを決定する。たとえば、上体24に対する腕体全体の相対重心位置の軌道を規定するパラメータが腕姿勢軌道パラメータとして決定される。この場合、本実施形態では、腕体全体の相対重心位置は、上体24に対して一定に維持されるように設定される。
次に、S106に進み、歩容生成装置100は、床反力鉛直成分軌道パラメータを決定する。具体的には、定常歩容が例えば走行歩容である場合、該定常歩容の床反力鉛直成分軌道は、例えば図17に示すようなパターンで設定される。そのパターンでは、第1旋回歩容及び第2旋回歩容のいずれにおいても、片脚支持期では床反力鉛直成分が台形状に変化し、空中期では床反力鉛直成分が“0”に維持される。そして、このパターンの折れ点の時刻や、台形部分の高さ(ピーク値)が床反力鉛直成分軌道パラメータとして決定される。
この床反力鉛直成分軌道パラメータは、定常歩容の1周期分の期間における床反力鉛直成分の平均値が、ロボット1の全体に作用する重力と同じ大きさで反対向きになるように決定される。これは、定常歩容のあらゆる状態量(ロボット1の各部の位置、姿勢、速度等の運動状態量)についての初期状態(定常歩容の第1旋回歩容の支持脚座標系から見た該第1旋回歩容の初期状態)と終端状態(定常歩容の第2旋回歩容に続く第1旋回歩容の支持脚座標系から見た該第2旋回歩容の終端状態)とが一致しているという条件(以下、この条件を定常歩容の境界条件ということがある)を満足する必要があるからである。
なお、定常歩容が歩行歩容である場合の床反力鉛直成分軌道は、例えば前記特許文献1の図42に示したようなパターンで設定すればよい。あるいは、定常歩容が歩行歩容である場合の床反力鉛直成分を、例えば、定常歩容の全期間において一定値(ロボット1の全体に作用する重力と同じ大きさの一定値)に設定してもよい。
次いで、S108に進み、歩容生成装置100は、上記のごとく設定した床反力鉛直成分軌道に応じて、床反力水平成分の許容範囲[Fxmin,Fxmax](より詳しくはこれを規定するパラメータ)を設定する。
この許容範囲[Fxmin,Fxmax]の境界値である床反力水平成分許容下限値Fxmin及び床反力水平成分許容上限値Fxmaxは、それらの大きさ(絶対値)が、支持脚足平22と床面との間で発生可能な摩擦力の大きさの上限値を超えないように設定される。
例えば、Fxmin及びFxmaxは、S106で決定した床反力鉛直成分に応じて、次式12a,12bより設定される。なお、ここでは、説明の便宜上、床面は水平面であるとしている。
Fxmin=−ka*μ*床反力鉛直成分 ……式12a
Fxmax=ka*μ*床反力鉛直成分 ……式12b
これらの式12a,12bにおけるkaは正の定数(<1)、μは足平22と床面との間の摩擦係数である。この場合、床反力水平成分許容範囲を規定するパラメータとしては、例では、式12a,12bにおける(ka*μ)の値を用いることができる。
図18は、一例として、定常歩容が走行歩容である場合に上記の如く設定される許容範囲[Fxmin,Fxmax]を示している。図18の負側の折れ線が床反力水平成分許容下限値Fxmin、正側の折れ線が床反力水平成分許容上限値Fxmaxを表す。
なお、床反力水平成分許容範囲[Fxmin,Fxmax]は、足平22と床面との間で発生可能な摩擦力の限界内であれば、他の手法により設定してもよい。
次いで、S110に進み、歩容生成装置100は、定常歩容における目標ZMP軌道を規定するZMP軌道パラメータを決定する。目標ZMP軌道は、所謂、支持多角形(ロボット1の接地面(床との接触面)を含む最小の凸多角形)内に目標ZMPが存在すると共に、安定余裕が高く、かつ急激な変化をしないように決定される。なお、安定余裕が高いというのは、支持多角形の境界に近づき過ぎない位置(支持多角形の中央付近の位置)に目標ZMPが存在する状態を言う。なお、支持多角形は、より詳しくは、片脚支持期では、ロボット1の着床している片方の脚体2の足平22と床面との接触面の領域となり、両脚支持期では、両脚体2,2の足平22,22のそれぞれの床面との接触面を連接してなる領域となる。
一例として、定常歩容が歩行歩容である場合の目標ZMP軌道(詳しくは目標ZMPのX軸方向位置)は、例えば図19に示すパターンで設定される。このパターンでは、第1旋回歩容及び第2旋回歩容のいずれにおいても、目標ZMPのX軸方向の位置は、片脚支持期において、支持脚足平22の踵側からつま先側に移動するように設定される。なお、片脚支持期内で、支持脚足平22の底面のほぼ全面が接地する(床面に接触する)期間では、目標ZMPのX軸方向の位置は一定に保持される。また、空中期では、目標ZMPのX軸方向の位置は、次の片脚支持期の開始時の位置(次の支持脚の踵側の位置)まで、連続的に移動していくように設定される。
なお、図示は省略するが、走行歩容における目標ZMPのY軸方向の位置は、片脚支持期においては、例えば支持脚の足首関節のY軸方向の位置と同じ位置(足首関節の直下の位置)に保たれるように設定される。そして、空中期では、目標ZMPのY軸方向の位置は、次の片脚支持期の開始時の位置(次の支持脚の足首関節のY軸方向の位置)まで、連続的に移動していくように設定される。
本実施形態では、上記の如く設定されるZMP軌道の折れ点の位置や時刻がZMP軌道パラメータとして設定される。
次いで、S112に進み、歩容生成装置100は、定常歩容の1周期の初期時刻Ts及び終端時刻Teを以下のように再定義する。
本実施形態では、定常歩容の決定を容易にするために、定常歩容を決定するまでは、定常歩容の1歩の初期時刻Ts及び終端時刻Teを便宜上、図17に例示した如く定める。すなわち、第1旋回歩容の片脚支持期の後半において床反力鉛直成分がある程度減少した時刻Tsが定常歩容の初期時刻Tsとして設定される。
また、この初期時刻Tsに、定常歩容の1周期Tcyc(第1旋回歩容と第2旋回歩容との総和の時間)を加えてなる時刻が定常歩容の終端時刻Teとして設定される。
本実施形態では、定常歩容を決定した後に、定常歩容の初期時刻を本来の時刻(支持脚足平22の着地当初の時刻)に戻す。以下の説明では、定常歩容の本来の初期時刻を“0”とし、定常歩容を決定するまで用いる上記初期時刻Tsと区別する。
以上が、S040の中で実行される図12のS062の処理の詳細である。
図12に戻って、歩容生成装置100は、上記の如くS062の処理を実行した後、S064に進み、定常歩容の初期状態を算出する。ここで算出する初期状態は、具体的には、定常歩容の初期上体位置速度(初期上体位置及び初期上体速度)、初期発散成分、初期上体姿勢角及びその角速度である。これらの初期状態の算出は、図20のフローチャートに示す処理によって、探索的に行なわれる。
以下説明すると、まず、S200において、歩容生成装置100は、定常歩容パラメータ(図12のS062で決定した定常歩容パラメータ)に基づいて、定常歩容の目標足平位置姿勢、目標腕姿勢、および目標上体姿勢角の初期状態(初期時刻Tsでの状態)を決定する。ここで「状態」とは、位置又は姿勢とその時間的変化率(位置又は姿勢の変化速度)との組を意味する。
この場合、支持脚側の足平位置姿勢の初期状態と、遊脚側の足平位置姿勢の初期状態とは、図16のS100で決定した足平軌道パラメータに基づいて決定される。
具体的には、支持脚側の足平位置姿勢の初期状態に関しては、前記第1旋回歩容初期支持脚足平位置姿勢から第1旋回歩容終端支持脚足平位置姿勢に至る支持脚足平22の位置姿勢軌道が、前記有限時間整定フィルタを用いて生成される。そして、この足平位置姿勢軌道における初期時刻Tsでの位置及び姿勢と、その位置及び姿勢のそれぞれの変化速度(時間的変化率)とが、支持脚側の足平位置姿勢の初期状態として決定される。
同様に、遊脚側の足平位置姿勢の初期状態に関しては、前記第1旋回歩容初期遊脚足平位置姿勢から第1旋回歩容終端遊脚足平位置姿勢に至る遊脚足平22の位置姿勢軌道が、有限時間整定フィルタを用いて生成される。そして、この足平位置姿勢軌道における初期時刻Tsでの位置及び姿勢と、その位置及び姿勢のそれぞれの変化速度とが、遊脚側の足平位置姿勢の初期状態として決定される。
また、目標腕姿勢の初期状態は、図16のS104で決定した腕姿勢軌道パラメータに基づいて時刻Tsにおける腕姿勢(上体24に対する両腕体の全体重心位置等)とその変化速度とを求めることで決定される。
また、目標上体姿勢角の初期状態は、図16のS102で決定した基準上体姿勢軌道パラメータにより規定される時刻Tsでの基準上体姿勢角及びその角速度が該目標上体姿勢角の初期状態として決定される。なお、本実施形態では、定常歩容が両脚交互離床・着床歩容である場合の基準上体姿勢角は一定値であるので、目標上体姿勢角の角速度の初期状態は“0”である。
次いで歩容生成装置100は、S202において初期上体水平位置速度の候補(時刻Tsでの上体24の水平位置及び水平速度の候補)である(Xs,Vxs)(Xs:水平位置、Vxs:水平速度)を仮決めする。ここで仮決めする候補(Xs,Vxs)は、任意でよいが、例えば前回歩容の生成時に求めた定常歩容の初期状態(時刻Tsでの状態)における上体水平位置速度を候補(Xs,Vxs)として仮決めすればよい。
尚、説明を簡略にするため、サジタルプレーン(XZ平面)上でX軸方向での定常歩容の初期状態(初期上体水平位置速度)を探索する場合を例にとって説明する。ただし、実際には位置及び速度のいずれについても、X軸方向と、Y軸方向とで別々に、あるいは同時に定常歩容の初期状態(定常歩容の前記境界条件を満たす初期状態)を探索する必要がある。
探索的な決定手法としては、擬似ヤコビアン(感度マトリックス)を求め、最急降下法などにより次候補を決定する方法や、シンプレックス法などを用いればよい。本実施形態では、例えば最急降下法を用いる。
次いで、S204を経てS206に進み、歩容生成装置100は、定常歩容の初期時刻(時刻Ts)での上体24の鉛直位置(Z軸方向位置)Zs及び鉛直速度(Z軸方向速度)Vzsの組である初期上体鉛直位置速度(Zs,Vzs)を決定する。
初期上体鉛直速度Vzsは、本実施形態では例えば以下のように決定される。
ロボット1には、動力学的関係として、次式が成立する。
終端全体重心鉛直位置−初期全体重心鉛直位置
=(床反力鉛直成分/ロボットの全体質量)の2階積分
+重力加速度の2階積分
+初期全体重心鉛直速度*1周期の時間
…式13
但し、式13の重力加速度は負の値とする。
また、定常歩容では、終端全体重心鉛直位置と初期全体重心鉛直位置は一致するので、上記の式13の右辺は“0”にならなければならない。従って、これらの関係から初期全体重心鉛直速度を求めることができる。
具体的には、まず、前記図16のS106で設定した床反力鉛直成分軌道パラメータから算出される床反力鉛直成分をロボット1の全体質量で割った値を、定常歩容の1周期の期間(時刻Tsから時刻Teまでの期間)で2階積分することにより、床反力鉛直成分による全体重心移動量(式13の右辺第1項)が求められる。
さらに、重力加速度を定常歩容の1周期の期間で2階積分することにより、重力による全体重心移動量(式13の右辺第2項)が求められる。そして、上記の如く求めた床反力による全体重心移動量と重力による全体重心移動量との和の符号を反転させたものを、定常歩容の1周期Tcycの時間で割ることにより、初期全体重心鉛直速度が求められる。
次に、初期上体鉛直位置Zsを求めるために、次式14を用いて、時刻“0”での全体重心鉛直速度が求められる。この場合、次式14における時刻Tsの全体重心鉛直速度には、式13に基づいて上記の通り求めた値を代入する。また、積分期間は時刻“0”から時刻Tsまでの期間とする。
時刻Tsの全体重心鉛直速度−時刻“0”の全体重心鉛直速度
=(床反力鉛直成分/ロボットの全体質量)の1階積分
+重力加速度の1階積分
…式14
(ただし、重力加速度は負の値とする。)
次に、例えば、本願出願人が先に特開平10−86080号公報で提案した上体高さ決定手法を用いて時刻“0”における上体鉛直位置が決定される。このとき、時刻“0”における足平位置姿勢(図16のS100で決定した第1旋回歩容初期支持脚足平位置姿勢及び第1旋回歩容初期遊脚足平位置姿勢)と、各脚体2の膝部の曲げ角に関する所定の幾何学的条件とに基づいて、時刻“0”での各脚体2,2の膝部が伸び切らないような上体鉛直位置(上体高さ)が決定される。
具体的には、支持脚側脚体2の膝曲げ角をθsup、遊脚側脚体2の膝曲げ角をθswgとしたとき、例えばそれらの膝曲げ角θsup,θswgの正弦値の逆数の和がある所定値(有限値)になるように、上体鉛直位置が決定される。ここで、膝曲げ角θsup,θswgは、各脚体2の大腿部の軸心に対する下腿部の軸心の角度であり、各脚体2が伸びきった状態から膝部を曲げていくに伴い、“0”から増加していく角度である。
次に、このように決定した時刻“0”における上体鉛直位置や、足平位置姿勢などから時刻“0”における全体重心鉛直位置が求められる。例えば図9に示したモデルに対応する前記式04のキネマティクスモデルを用いることで、時刻“0”における全体重心鉛直位置が求められる。
具体的には、時刻“0”での上体鉛直位置と上体姿勢角とから上体質点24mの鉛直位置が求められる。また、時刻“0”での支持脚足平位置姿勢及び遊脚足平位置姿勢(これらは、図16のS100で設定した第1旋回歩容初期支持脚足平位置姿勢及び第1旋回歩容初期遊脚足平位置姿勢である)とからそれぞれ支持脚質点2m及び遊脚質点2mの鉛直位置が求められる。そして、これらの求めた上体質点24m、支持脚質点2m及び遊脚質点2mの鉛直位置を、前記式04のZb、Zsup、Zswgに代入することで、全体重心鉛直位置(式04のZGtotal)が求められる。なお、ロボット1のより厳密なモデル(例えば、ロボット1の各リンクに対応する質点を有するモデル)を用い、時刻“0”での上体水平位置や腕姿勢をも考慮して、時刻“0”での全体重心鉛直位置を求めるようにしてもよい。
次に、前記式13において、上記の如く求めた時刻“0”での全体重心鉛直位置を同式13の左辺の初期全体重心鉛直位置に代入し、上記の如く求めた時刻“0”での全体重心鉛直速度を同式13の右辺の初期全体重心鉛直速度に代入し、さらに、同式13の1周期の時間をTs(=時刻“0”から時刻Tsまでの時間)とし、積分期間を時刻“0”から時刻Tsまでの期間とすることで、式13の左辺の終端全体重心鉛直位置の値が算出され、この算出値が初期(時刻Ts)全体重心鉛直位置として得られる。
さらに、この求めた初期(時刻Ts)全体重心鉛直位置と時刻Tsにおける足平位置姿勢(S200で決定された初期状態の足平位置姿勢)とから、ロボット1のモデル(例えば式04のキネマティクスモデル)を用いて、初期(時刻Ts)上体鉛直位置Zsが求められる。
具体的には、時刻Tsにおける支持脚及び遊脚の各足平位置姿勢から、図9に示したモデルの支持脚質点2m及び遊脚質点2mの鉛直位置が求められる。そして、これらの鉛直位置と、上記の如く求めた初期(時刻Ts)全体重心鉛直位置とを式04に適用することで、上体質点24mの鉛直位置(式04のZb)が求められる。そして、この上体質点24mの鉛直位置と時刻Tsでの上体姿勢(S200で決定された初期状態の上体姿勢)とから初期(時刻Ts)上体鉛直位置Zsが求められる。なお、この場合も、より厳密なモデルを用い、上体水平位置や腕姿勢をも考慮して初期上体鉛直位置Zsを求めるようにしてもよい。
さらに、前記S200で決定した足平位置姿勢の初期状態や、S206で求めた初期全体重心鉛直速度等から、ロボット1のモデル(例えば式04のキネマティクスモデル)を用いて、初期(時刻Ts)上体鉛直速度が求められる。
具体的には、式04の両辺を時間微分してなる式に、前記式13に基づいて求めた初期全体重心鉛直速度と、支持脚及び遊脚の各足平位置姿勢の初期状態により規定される支持脚質点2m及び遊脚質点2mの鉛直速度とを適用することで、上体質点22mの鉛直速度が求められる。そして、この上体質点22mの鉛直速度と上体姿勢角の初期状態(S200もしくは後述のS208で決定されたもの)とから、上体鉛直速度が求められる。なお、各足平位置姿勢の初期状態や、初期全体重心鉛直速度のほか、腕姿勢の初期状態(S200で決定されたもの)、仮決定した上体水平位置の初期状態(S202もしくは後述のS216もしくはS218で仮決定された最新のもの)、上記の如く求めた初期上体鉛直位置を考慮し、上記の如く求めた初期全体重心鉛直速度を満足するような初期上体鉛直速度を、ロボット1のより厳密なモデルを用いて求めるようにしてもよい。
S206の処理の後、次いでS208に進み、歩容生成装置100は、定常歩容の候補としての歩容(定常歩容の1周期分の歩容)を仮生成する。より具体的には、前記図12のS062で決定した定常歩容の歩容パラメータを基に、初期時刻Tsから終端時刻Teまでの各瞬間(所定の刻み時間毎の時刻)における目標ZMP、目標床反力鉛直成分、目標足平位置姿勢、基準上体姿勢、目標腕姿勢及び床反力水平成分許容範囲が逐次求められる。
そして、求めた目標ZMPと目標床反力鉛直成分とに関する動力学的平衡条件、並びに床反力水平成分許容範囲の条件を満足するように、前記動力学モデル(図9のモデル)を用いて、上体位置姿勢を逐次決定することによって、初期時刻Tsから終端時刻Teまでの1周期分の定常歩容を生成する。
この場合、前記上体水平位置速度(Xs,Vxs)、上体鉛直位置速度(Zs、Vzs)が上体24の初期(時刻Ts)状態とされる。また、上体姿勢は、基準上体姿勢になるべく一致するように生成される。
なお、S208での定常歩容の生成は歩容生成装置100の内部で行われるだけであり、歩容生成装置100から出力されるものではない。
S208の処理は、具体的には、図21のフローチャートに示す如く実行される。
以下説明すると、歩容生成装置100は、まず、S300において、諸々の初期化を行なう。
具体的には、歩容生成用時刻Tkに定常歩容の初期時刻Tsが代入される。また、上体水平位置速度に、初期(時刻Ts)上体水平位置速度(Xs,Vxs)の最新の候補値(図20のS202もしくは後述のS216もしくはS218で決定された最新の候補値)が代入され、上体鉛直位置速度に、初期(時刻Ts)上体鉛直位置速度(Zs,Vzs)の最新値(図20のS206で決定された最新値)が代入される。また、上体姿勢角に、基準上体姿勢角の初期値(時刻Tsでの基準上体姿勢)が代入され、上体姿勢角速度に、基準上体姿勢角速度の初期値(時刻Tsでの基準上体姿勢角速度)が代入される。補足すると、後述するごとく最終的には初期(時刻Ts)上体姿勢角速度の初期値は変更されるので、上体姿勢角速度の初期値を、基準上体姿勢角速度の初期値と異なる値に設定してもよい。
次いで、S302を経てS304において、歩容生成装置100は、歩容生成用時刻Tk(現在値)が終端時刻Te(=Ts+Tcyc)以前の時刻であるか否か(Tk≦Teであるか否か)を判断する。この判断結果が肯定的である場合には、歩容生成装置100は、S306の処理(詳細は後述する)を実行することによって、時刻Tkでの歩容の瞬時値を決定する。
次いで、S308に進み、歩容生成装置100は、歩容生成用時刻Tkを所定の刻み時間ΔTkだけ増加させた後、S304の判断を再び行なう。ここで、刻み時間ΔTkは、例えば制御周期Δtと一致させておけばよい。ただし、演算量を低減するために、ΔTkをΔtよりも長い時間に設定してもよい。
S304の判断結果が否定的である場合には、S310に進む。以上の処理により、S310に進むまでに定常歩容が初期(時刻Ts)から終端(時刻Te)まで生成される。
以下に、S306で定常歩容の瞬時値を決定する処理の詳細を図22及び図23のフローチャートを参照して説明する。
S306の処理は、図22のフローチャートに示す如く実行される。
まずS400において、歩容生成装置100は、定常歩容パラメータ(詳しくは床反力鉛直成分軌道パラメータ)を基に、図17に示した目標床反力鉛直成分の時刻Tkでの瞬時値を求める。
次いでS402に進み、歩容生成装置100は、定常歩容パラメータ(詳しくはZMP軌道パラメータ)を基に、時刻Tkでの目標ZMPの瞬時値を求める。
次いでS404に進み、歩容生成装置100は、定常歩容パラメータ(詳しくは足平軌道パラメータ、基準上体姿勢軌道パラメータ、及び腕姿勢軌道パラメータ)を基に、時刻Tkにおける目標足平位置姿勢、基準上体姿勢及び目標腕姿勢の瞬時値をそれぞれ求める。但し、目標腕姿勢に関しては、より詳しくは両腕体の全体重心位置が決定されるが、鉛直軸(又は上体24の体幹軸)まわりの角運動量を変化させる腕体の運動(腕振り運動)は、未だ決定されていない。
なお、時刻Tkでの目標足平位置姿勢の瞬時値は、図20のS200で初期時刻Tsでの足平位置姿勢を求めた場合と同様に、有限時間整定フィルタを使用して求められる。
次いでS406に進み、歩容生成装置100は、目標床反力鉛直成分を満足する(ロボット1の鉛直方向の慣性力と重力との和を目標床反力鉛直成分に釣り合わせる)ような全体重心鉛直位置速度の瞬時値(時刻Tkでの瞬時値)を算出する。
具体的には、床反力鉛直成分(≧0)とロボット1の全体に作用する重力(ここでは重力<0とする)との総和を、ロボット1の全体質量により除算することによって、ロボット1の全体重心鉛直加速度(全体重心の鉛直方向の加速度)が求められる。
そして、この全体重心鉛直加速度を積分することにより、時刻Tkでの全体重心鉛直速度が算出される。さらにこの全体重心鉛直速度を積分することにより、時刻Tkでの全体重心鉛直位置が算出される。これらの算出は、より具体的には、次式15及び式16により行なわれる。
時刻Tkにおける全体重心鉛直速度
=時刻(Tk−ΔTk)における全体重心鉛直速度
+((時刻Tkにおける反力鉛直成分/ロボットの全体質量)
+重力加速度)*ΔTk
……式15
時刻Tkにおける全体重心鉛直位置
=時刻(Tk−ΔTk)における全体重心鉛直位置
+時刻Tkにおける全体重心鉛直速度*ΔTk
……式16
なお、式15における重力加速度は、負の値である。
次いでS408に進み、歩容生成装置100は、時刻Tkでの全体重心鉛直位置を満足する上体鉛直位置を算出する。具体的には、例えば図9のモデルに係わる前記式04を用いて上体鉛直位置が算出される。すなわち、時刻Tkでの支持脚及び遊脚の目標足平位置姿勢から、支持脚質点2m及び遊脚質点2mの鉛直位置が求められる。そして、これらの支持脚質点2m及び遊脚質点2mの鉛直位置と、S406で求めた時刻Tkでの全体重心鉛直位置とを式04に適用することで、上体質点24mの鉛直位置が求められる。さらに、この求めた上体質点24mの鉛直位置と時刻(Tk−ΔTk)の目標上体姿勢角(又は時刻Tkでの目標上体姿勢角の予測値)とから上体鉛直位置が求められる。
なお、より厳密なモデル(例えばロボット1の各リンクに対応する質点を有するモデル)を用いて上体鉛直位置を求めてもよい。
次いでS410に進み、歩容生成装置100は、定常歩容パラメータ(詳しくは、床反力水平成分許容範囲を規定するパラメータ)を基に、図18に示した床反力水平成分許容範囲[Fxmin,Fxmax]の時刻Tkにおける瞬時値を算出する。
次いでS412に進み、歩容生成装置100は、時刻Tkでの上体水平加速度と上体姿勢角加速度とを決定する。この場合、これらの上体水平加速度と上体姿勢角速度とは、目標ZMPを満足する(詳しくは、ロボット1の目標運動によって発生する慣性力とロボット1に作用する重力との合力が目標ZMPまわりに発生するモーメントの水平成分が“0”であるという条件を満足する)ことに加えて、ロボット1の水平方向の慣性力に釣り合う床反力水平成分Fxが許容範囲[Fxmin,Fxmax]から逸脱しないという条件と、上体姿勢角速度が定常歩容の初期時刻Tsと終端時刻Teとで一致するという条件とを満足するように決定される。
一例として、定常歩容が走行歩容である場合、このS412の処理は、図23のフローチャートに示す如く実行される。
まず、S500において、歩容生成装置100は、図17に示した時刻Tm、Ts2、Tm2を設定する。本実施形態では、時刻Tmは、第2旋回歩容の開始直後で、床反力鉛直成分がある所定の大きさまで増加した時刻に設定される。また、時刻Ts2は、第2旋回歩容の片脚支持期の後半において床反力鉛直成分がある程度減少した時刻に設定される。また、時刻Tm2は、第2旋回歩容の空中期の後の第1旋回歩容の開始直後で、床反力鉛直成分がある所定の大きさまで増加した時刻に設定される。
次いで、S502に進み、歩容生成装置100は、現在時刻Tkが、時刻TsからTmまでの期間内の時刻と、時刻Ts2からTm2までの期間内の時刻とのうちのいずれか一方の時刻であるか否かを判断する。このS502の判定結果が肯定的となる場合(時刻Tkでの床反力水平成分の許容範囲が比較的狭いか、もしくは“0”である場合)には、S504に進む。また、S502の判断結果が否定的となる場合(時刻Tkでの床反力水平成分の許容範囲が比較的広い場合)には、S518に進む。
上記S504では、歩容生成装置100は、時刻Tkでの上体姿勢角加速度が時刻Tkでの基準上体姿勢角加速度β0(定常歩容の基準上体姿勢軌道パラメータにより規定される基準上体姿勢の角加速度)に一致すると仮定して、時刻Tkでの目標ZMPを満足するために必要な上体水平加速度をαtmpとして求める。このαtmpは、例えば図9の動力学モデルに係わる前記式03を用いて求められる。
より具体的には、例えば、現在時刻Tkまでに求められた目標足平位置姿勢の時系列を用いて、現在時刻Tkにおける支持脚質点2m及び遊脚質点2mの鉛直加速度が求められると共に、現在時刻Tkの目標足平位置姿勢から支持脚質点2m及び遊脚質点2mの鉛直位置が求められる。また、現在時刻Tkの目標上体鉛直位置を用いて上体質点24mの鉛直位置が求められると共に、現在時刻Tkまでに求めた目標上体鉛直位置の時系列値を用いて現在時刻Tkにおける上体質点24mの鉛直加速度が求められる。そして、これらの求めた値を前記式03に代入すると共に、同式03のMy、d2θby/dt2をそれぞれ、“0”、β0に一致させてなる式から算出される上体質点水平加速度d2Xb/dt2が上体水平加速度αtmpとして求められる。
なお、定常歩容が両脚交互離床・着床歩容である場合、本実施形態では、該定常歩容の基準上体姿勢角は、前記した如く一定値であるため、基準上体姿勢角加速度β0は常に“0”である
補足すると、より厳密な動力学モデルを用いて、目標ZMP周りの床反力モーメントの水平成分を“0”にするような上体水平加速度αtmpを探索的に求めるようにしてもよい。
次に、S506に進み、歩容生成装置100は、上体水平加速度がαtmpである場合の時刻Tkにおける床反力水平成分Fxtmpを動力学モデルを用いて求める。本実施形態においては、前記動力学モデルの式02を用いてFxtmpが求められる。すなわち、次式17によってFxtmpが求められる。但し、d2Xsup/dt2及びd2Xswg/dt2はそれぞれ時刻Tkにおける支持脚足平質点水平加速度、遊脚足平質点水平加速度を表す。
Fxtmp=mb*αtmp+msup*d2Xsup/dt2+mswg*d2Xswg/dt2 ……式17
次に、S508に進み、歩容生成装置100は、Fxtmpと現在時刻Tkでの床反力水平成分許容範囲の上限値Fxmax及び下限値Fxminとの大小関係を判断する。そして、この判断結果に応じて、歩容生成装置100は、上体水平加速度αと、これによって発生する床反力水平成分Fxと、上体姿勢角加速度βとを次のように決定する(S508〜S516)。
すなわち、
Fxtmp>Fxmaxならば、S510に進み、次式によりFxが決定される。
Fx=Fxmax ……式18
また、
Fxtmp<Fxminならば、S512に進み、次式によりFxが決定される。
Fx=Fxmin ……式19
また、Fxtmpが、床反力水平成分許容範囲[Fxmin,Fxmax]内に存在するならば、S514に進み、次式によりFxが決定される。
Fx=Fxtmp ……式20
そして、いずれの場合においても、次いでS516に進み、次式21、22により上体水平加速度α、上体姿勢角加速度βが決定される。
α=αtmp+(Fx−Fxtmp)/ΔFp ……式21
β=β0+(αtmp−α)*ΔMp/ΔMr ……式22
ここで、ΔFpは、上体水平加速度を単位加速度だけ変化させた場合の床反力水平成分の変化量、ΔMpは、上体水平加速度を単位加速度だけ変化させた場合の目標ZMP周りの床反力モーメントの水平成分の変化量、ΔMrは、ロボット1の全体重心を摂動させることなく、上体姿勢角加速度を単位角加速度だけ変化させた場合の目標ZMP周りの床反力モーメントの水平成分の変化量である。これらのΔFp、ΔMp、ΔMrは、本実施形態では、図9の動力学モデルに関する前記式02、03、04に基づいて、それぞれ、次式02a,03a,04aにより決定される値である。
ΔFp=mb ……式02a
ΔMp=mb*(Zb−Zzmp) ……式03a
ΔMr=J ……式04a
補足すると、より動力学演算の精度を高めようとするならば、上記のごとく上体姿勢角加速度βを求めた後、この上体姿勢角加速度βと上体水平加速度αとを合成した運動によって目標ZMPを満足させ得る上体水平加速度αを、より厳密な動力学モデルを用いて解析的あるいは探索的に決定することが好ましい。この場合、探索的な決定手法としては、例えば、擬似ヤコビアン(感度マトリックス)を求め、擬似ニュートン法などにより次候補を決定する方法や、シンプレックス法などを用いればよい。
さらに床反力水平成分Fxが床反力水平成分許容範囲[Fxmin,Fxmax]を厳密に越えないようにするために、S510においては、Fx=Fxmaxとなり、且つ、目標ZMP周りの床反力モーメントの水平成分が“0”になるように、上体水平加速度αと上体姿勢角加速度βとの組を探索的に求めるようにしてもよい。同様に、S512においては、Fx=Fxminとなり、且つ、目標ZMP周りの床反力モーメントの水平成分が“0”になるように、αとβとの組を探索的に求めるようにしてもよい。
以上のS504〜S514の処理によって、Fxtmpが許容範囲[Fxmin,Fxmax]内に収まる場合には、FxtmpがそのままFxとなる。また、Fxtmpが許容範囲[Fxmin,Fxmax]の上限値Fxmaxを超え、もしくは下限値Fxminを下回った場合には、それぞれFxは、それぞれ強制的にFxmax、Fxminに制限される。特に片脚ホッピング定常歩容の空中期では、常に、Fxmax=Fxmin=0であるので、Fx=0となる。
また、上体姿勢角加速度βは、Fxが許容範囲[Fxmin,Fxmax]を越えないように、上体水平加速度αを制限したことによって目標ZMP周りに発生する床反力モーメントを打ち消す床反力モーメントを発生させるように決定される。
以上が、時刻Tkが、時刻TsからTmまでの期間内の時刻、又は、時刻Ts2からTm2までの期間内の時刻である場合の処理である。
S502の判定結果が否定的である場合(Tm≦Tk<Ts2、又はTm2≦Tk≦Teである場合)には歩容生成装置100は、以下の処理を実行する。まず、S518に進み、上体姿勢角速度を、現在時刻Tkが時刻Ts2以前ならば時刻Ts2までに、そうでないならば時刻Teまでに、初期値(現在時刻Tkが時刻Ts2以前ならば時刻Tsでの値、そうでないならば時刻Ts2での値)に戻すための上体姿勢角加速度を発生させる床反力モーメントのZMP換算値(以降、上体姿勢復元モーメントZMP換算値と呼び、ZMPrecと略す)のパターンを設定する。
この場合、現在時刻Tkが時刻Tm2以降の時期の処理は、時刻Ts2以前の時期の処理と同じである。そこで、以下に、現在時刻Tkが時刻Ts2以前の時期である場合の処理を代表的に説明する。
時刻Tm以降、時刻Ts2までに、上体姿勢角速度を初期値(時刻Tsでの値)に戻すための上体姿勢角加速度パターンにおける時刻Tkでの値をβ(k)とする。
このとき、このβ(k)に起因して、床反力モーメントβ(k)*ΔMrが発生する。この結果、時刻Tkにおける床反力鉛直成分がFz(k)であるとすると、ロボット1の運動から算出されるZMP(k)の水平位置は、次式23で求められるΔZMP(k)だけ目標ZMPからずれることとなる。
ΔZMP(k)=−β(k)*ΔMr/Fz(k) ……式23
従って、ΔMrのパターンとFz(k)のパターンとが決まっていれば(既知であれば)、ΔZMP(k)のパターンを適切に設定することによって、式23を満足する上体姿勢角加速度パターンを発生させて、上体姿勢角速度を基準上体姿勢軌道の初期(時刻Ts)状態における上体姿勢角速度に戻すことができる。
前記上体姿勢復元モーメントZMP換算値(ZMPrec)は、そのように適切に設定されたΔZMP(k)を意味する。なお、式23におけるΔMrは、厳密には一定値ではないが、本実施形態では、近似的に一定値(=J)であるとする。
この場合、β(k)とZMPrecとの間の関係は、次式24により与えられる。
β(k)=−ZMPrec*Fz(k)/ΔMr ……式24
以降、このβ(k)を上体姿勢復元用角加速度という。
本実施形態では、上記ZMPrecのパターン形状を、例えば図24に示す如く、台形状とする。そして、歩容生成装置100は、時刻Ts2での上体姿勢角速度を時刻Tsでの上体姿勢角速度に一致させるために、時刻TsからTs2までの上体姿勢角加速度βの積分値が“0”になるように、ZMPrecのパターンを規定するパラメータ(台形の高さ等)を決定する。
すなわち、時刻Tmから時刻Ts2までの期間で、式24によりZMPrecに応じて決定されるβ(k)と、基準上体姿勢角加速度β0との総和の角加速度を積分してなる積分値が、時刻Tsから時刻Tmまでの期間における上体姿勢角加速度β(図23のS504〜S516で前述のように求められた角加速度)の積分値に−1を乗じた値に一致するように、ZMPrecのパターンを規定するパラメータが決定される。
この場合、本実施形態では、歩容生成装置100は、ZMPrecの台形状のパターンにおける折れ点の時刻を時刻TmとTs2との間の規定の(既知の)時刻とすると共に、該台形状のパターンの高さを該パターンを規定する未知数のパラメータとし、上記関係を満足するZMPrecのパターンの高さを求める。これにより、台形状のパターンの高さが、ZMPrecのパターンを規定するパラメータとして算出される。
次いでS520に進み、歩容生成装置100は、上記の如く決定したZMPrecのパターンに基づいて、時刻Tkにおける上体姿勢復元モーメントZMP換算値ZMPrecを算出する。
次いでS522に進み、歩容生成装置100は、時刻TkでのZMPrecの値から、前記式24により算出される上体姿勢復元用角加速度β(k)を、時刻Tkでの基準上体姿勢角加速度β0に加え合わせることによって、時刻Tkにおける上体姿勢角加速度βを算出する。
すなわち、次式24aにより、βが算出される。
β=β0+β(k)
=β0−ZMPrec*Fz(k)/ΔMr ……式24a
次いでS524に進み、前記S504と同じ処理を実行することによって、時刻Tkでの上体姿勢角加速度が時刻Tkでの基準上体姿勢角加速度β0に一致すると仮定して、時刻Tkでの目標ZMPを満足するために必要な上体水平加速度をαtmpとして求める。
次いでS526に進み、歩容生成装置100は、次式25を用いて、上体水平加速度αを算出する。
α=αtmp−(ΔMr/ΔMp)*(β−β0)
=αtmp−(ΔMr/ΔMp)*β(k)
……式25
さらにS528に進み、歩容生成装置100は、上体水平加速度が上記の如く求めたαである場合の時刻Tkにおける床反力水平成分Fxを動力学モデルを用いて求める。この場合、前記式17の右辺のαtmpをαに置き換えてなる次式26によって、Fxが算出される。
Fx=mb*α+msup*d2Xsup/dt2+mswg*d2Xswg/dt2 ……式26
補足すると、より動力学演算の精度を高めようとするならば、上記のごとく上体姿勢角加速度βを求めた後、S526において、上体姿勢角加速度βと上体水平加速度αとを合成した運動によって目標ZMPを満足させ得る上体水平加速度αを、より厳密な動力学モデルを用いて解析的あるいは探索的に決定することが好ましい。
以上説明したS518〜S528の処理が、S502の判定結果が否定的である場合(Tm≦Tk<Ts2、又はTm2≦Tk≦Teである場合)の処理である。
この場合、時刻TmからTs2までの期間と時刻Tm2からTeまでの期間とにおいては、床反力水平成分許容範囲が十分に大きいため、目標ZMPを満足しつつ、上体姿勢角速度を戻すように上体姿勢角加速度βを決定しても、床反力水平成分Fxが、許容範囲[Fxmin,Fxmax]から逸脱するのを回避することができる。
補足すると、定常歩容が歩行歩容である場合においては、該定常歩容の1周期の全期間において、ロボット1と床面との間で発生可能な摩擦力が比較的大きなものとなる(床反力水平成分Fxの許容範囲が比較的大きなものとなる)ため、S504と同じ処理によって上体水平加速度を算出するようにしても、その算出される上体水平加速度に対応する床反力水平成分Fxは、一般には、ロボット1と床面との間で発生可能な摩擦力の限界内に収まると考えられる。従って、定常歩容が歩行歩容である場合には、図22のS412では、例えば、S504の処理だけによって上体水平加速度を決定し、上体姿勢角加速度を基準上体姿勢角加速度に一致させるようにしてもよい。ただし、定常歩容が歩行歩容である場合にも、走行歩容の場合と同様の処理によって、上体水平加速度及び上体姿勢角加速度を決定するようにしてもよい。
次いで図22のS414に進み、歩容生成装置100は、S412で求めた上体水平加速度を逐次積分する(時刻Tsから現在時刻Tkまで積算する)ことにより時刻Tkでの上体水平速度を求める。さらに、歩容生成装置100は、その上体水平速度を逐次積分する(時刻Tsから現在時刻Tkまで積算する)ことにより、時刻Tkでの上体水平位置を求める。また、歩容生成装置100は、S412で求めた上体姿勢角加速度を逐次積分する(時刻Tsから現在時刻Tkまで積算する)ことにより時刻Tkでの上体姿勢角速度を求める。さらに、歩容生成装置100は、その上体姿勢角速度を逐次積分する(時刻Tsから現在時刻Tkまで積算する)ことにより、時刻Tkでの上体姿勢角を求める。
以上のごとく定常歩容の瞬時値を決定する図21のS306の処理を実行した後、S308に進み、歩容生成用時刻Tkの値が刻み時間ΔTkだけ増加される。
次いでS304に戻り、S304に示す条件が成立している限り、歩容生成装置100は、S306及びS308の処理を繰り返す。そして、S304に示す条件が成立しなくなったら、すなわち終端時刻Te(=Ts+Tcyc)まで、定常歩容の生成が完了したら、S310に進む。
S310では、歩容生成装置100は、初期(時刻Ts)上体姿勢角と初期(時刻Ts)上体姿勢角速度とを、上記の如くS300〜S308の処理により生成された定常歩容(以降、これを仮歩容ということがある)の終端時刻Teでの上体姿勢角などを基に修正する。この修正は、上体姿勢角及びその角速度に関する定常歩容の境界条件(定常歩容の初期と終端とで上体姿勢角及び角速度がそれぞれ一致するという条件)を満たすようにするためのものである。
本実施形態では、この修正は、例えば次式30,31に従って行なわれる。
新たな初期上体姿勢角速度
=仮歩容の初期上体姿勢角速度
−(仮歩容の終端上体姿勢角−仮歩容の初期上体姿勢角)/Tcyc
……式30
新たな初期上体姿勢角=基準上体姿勢角初期値 ……式31
これらの式30、31における「初期」、「終端」は、それぞれ、時刻Ts、Teを意味する。
なお、初期上体姿勢角は、本実施形態では、式31のように基準上体姿勢角初期値に一致させるようにしたが、例えば、定常歩容の上体姿勢角の平均値が基準上体姿勢角初期値に一致するように初期上体姿勢角を設定するようにしてもよい。あるいは、定常歩容の上体姿勢角の最大値と最小値との平均値が基準上体姿勢角初期値に一致するように初期上体姿勢角を設定してもよい。
図21のS310の処理を完了した後、図20のS210に進む。このS210では、歩容製生成装置100は、S208で生成した定常歩容(仮歩容)の終端上体水平位置速度(時刻Teでの上体水平位置及び上体水平速度)を、その瞬間の支持脚に対応する支持脚座標系から見た値に変換し、その値を(Xe,Vxe)とする(Xe:終端上体水平位置、Vxe:終端上体水平速度)。
次いでS212に進み、歩容生成装置100は、初期上体水平位置速度(Xs,Vxs)と終端上体水平位置速度(Xe,Vxe)との差を境界条件誤差(errx,errv)として算出する。定常歩容では、前記境界条件を満たす必要があるので、境界条件誤差(errx,errv)が“0”又はほぼ“0”でなければならない。
次いでS214に進み、歩容生成装置100は、S212で算出した境界条件誤差(errx,errv)が、あらかじめ設定された許容範囲内にあるか否かが判断される。なお、このように境界条件誤差(errx,errv)が許容範囲にあるか否かを判断する代わりに、前記式10により定義される発散成分と、前記式10の右辺の「+」を「−」に置き換えた式により定義される収束成分とを用い、初期発散成分(=Xs+Vxs/ω0)と終端発散成分(=Xe+Vxe/ω0)との差、及び初期収束成分(=Xs−Vxs/ω0)と終端収束成分(=Xe−Vxe/ω0)との差がそれぞれある許容範囲内にあるか否か判断するようにしてもよい。
S214の判断結果が否定的である場合には、境界条件誤差(errx,errv)が“0”又はほぼ“0”となる(Xs,Vxs)を探索的に求めるために、S216に進む。このS216では、歩容生成装置100は、(Xs,Vxs)の付近に複数(本実施形態では2つ)の初期値候補(Xs+ΔXs,Vxs),(Xs,Vxs+ΔVxs)を決定する。ここで、ΔXs,ΔVxsは、それぞれXs,Vxsに対する所定の微小変化量を意味している。そして、これらの初期値候補のそれぞれを上体水平位置速度の初期状態として、前記S208と同様の処理によって定常歩容が生成される。さらに、その生成された定常歩容の終端上体位置速度を、その瞬間(時刻Te)の支持脚に対応する支持脚座標系から見た値に変換した値(Xe+ΔXe1,Vxe+ΔVxe1),(Xe+ΔXe2,Vxe+ΔVxe2)が求められる。ここで、(Xe+ΔXe1,Vxe+ΔVxe1)は(Xs+ΔXs,Vxs)に対応する終端上体位置速度を意味し、(Xe+ΔXe2,Vxe+ΔVxe2)は(Xs,Vxs+ΔVxs)に対応する終端上体位置速度を意味している。なお、この場合の定常歩容(仮歩容)の生成処理では、上体水平位置速度以外の変数の初期状態(時刻Tsでの状態)は、例えば上体水平位置速度の初期値候補を(Xs,Vxs)とした場合と同一に設定すればよい。S216ではさらに、前記S210と同様の処理によって、各初期値候補とこれに対応する終端上体位置速度との差、すなわち、各初期値候補(Xs+ΔXs,Vxs),(Xs,Vxs+ΔVxs)のそれぞれに対応する境界条件誤差(errx,errv)が求められる。
次いでS218に進み、歩容生成装置100は、(Xs,Vxs)及びその付近の初期値候補(Xs+ΔXs,Vxs),(Xs,Vxs+ΔVxs)のそれぞれに対する上体水平位置速度境界条件誤差を基に、(Xs,Vxs)の次の初期値候補が探索手法(擬似ヤコビアン(感度マトリックス)を求め、最急降下法などにより次候補を決定する方法や、シンプレックス法など)により決定する。
すなわち、(Xs,Vxs)及びその付近の初期値候補(Xs+ΔXs,Vxs),(Xs,Vxs+ΔVxs)のそれぞれに対する境界条件誤差によって、上体水平位置及び上体水平速度をそれぞれ初期値候補(Xs,Vxs)から微小変化させたときの、上体水平位置速度境界条件誤差の変化度合いを示す感度マトリックスが求められ、その感度マトリックスに基づいて、境界条件誤差をより小さくするような初期値候補(Xs,Vxs)が新たに決定される。そして、このように上体水平位置速度の新たな初期値候補(Xs,Vxs)が決定された後、S206に戻る。
S214の判断結果が否定的となる限りは上記した処理(S206〜S218の処理)が繰り返される。なお、この場合、上体水平位置速度の新たな初期値候補(Xs,Vxs)に対応する定常歩容の生成処理(S208)におけるS300では、上体姿勢角速度の初期値は、基準上体姿勢角速度の初期値ではなく、上体水平位置速度の前回の初期値候補(Xs,Vxs)に対応するS208の処理におけるS310で決定したものに設定される。そして、S214の判断結果が肯定的になると、繰り返しループ(S204)を抜けてS220に進む。なお、S204の繰り返しループを抜けたときの直前に生成された仮歩容が、境界条件を満たす定常歩容として得られることとなる。
S220では、歩容生成装置100は、本来の初期時刻“0”(今回歩容の終端時刻)における初期上体水平位置速度(X0,Vx0)と初期時刻“0”における初期上体鉛直位置速度(Z0,Vz0)と初期時刻“0”における初期上体姿勢角及び角速度とを求める。
具体的には、(X0,Vx0)と(Z0,Vz0)は、図22に示したS408及びS414において、第2旋回歩容から第1旋回歩容に切り換わった瞬間の時刻、すなわち、時刻Tk=Tcyc(=Te−Ts)であるときに決定された上体水平位置速度と上体鉛直位置速度とを、それぞれ時刻Tcycから始まる第1旋回歩容の支持脚に対応する支持脚座標系から見た値に変換してなる値に決定される。同様に、初期時刻“0”における初期上体姿勢角及び角速度は、時刻Tcycであるときに決定された上体姿勢角及び角加速度を、時刻Tcycから第1旋回歩容の支持脚に対応する支持脚座標系から見た値に変換してなる値に決定される。
次いでS222に進み、歩容生成装置100は、定常歩容初期発散成分q[0]が、前記式10に対応する次式40により算出する。
q[0]=X0+V0/ω0 ……式40
さらに、S224に進み、歩容生成装置100は、定常歩容初期発散成分q[0]を、今回歩容支持脚座標系から見た値に変換してなる値を、q”[0]として求める。また、歩容生成装置100は、初期上体鉛直位置速度(Z0,Vz0)を、今回歩容支持脚座標系から見た値に変換してなる値を、(Z0”,Vz0”)として求める。
補足すると、(Z0”,Vz0”)は、第2旋回歩容の支持脚座標系(図15の次次回歩容支持脚座標系)から見た第2旋回歩容の終端上体鉛直位置速度に一致している。また、q”[0]は第2旋回歩容の支持脚座標系から見た第2旋回歩容の終端発散成分に一致している。従って、これらの一致関係を利用して、(Z0”,Vz0”)及びq”[0]を算出するようにしてもよい。
以上により、図12のS064の処理、すなわち定常歩容の初期状態を求めるサブルーチン処理が終了する。
次いで、図12のS066に進み、歩容生成装置100は、今回歩容の歩容パラメータを決定(一部は仮決定)する。S066の処理は、図25に示すフローチャートに従って実行される。ここでは、一例として、今回歩容が走行歩容である場合について、図25のフローチャートの処理を説明する。
まず、S600において、歩容生成装置100は、今回歩容の足平位置姿勢軌道が定常歩容の足平位置姿勢軌道に連続的につながるように、今回歩容の足平軌道パラメータを決定する。一例として、今回歩容が走行歩容である場合、この足平軌道パラメータは、次のように決定される。
今回歩容初期遊脚足平位置姿勢は、今回歩容で遊脚とされた脚体2の足平22の、前回歩容終端での位置姿勢(今回歩容支持脚座標系から見た位置姿勢)に設定される。同様に、今回歩容初期支持脚足平位置姿勢は、今回歩容で支持脚とされた脚体2の足平22の、前回歩容終端での位置姿勢(今回歩容支持脚座標系から見た位置姿勢)に設定される。
また、今回歩容終端遊脚足平位置姿勢は、今回歩容支持脚座標系で見た前記第1旋回歩容初期支持脚足平位置姿勢(次回歩容で支持脚として予定された脚体2の足平22の、定常歩容初期での位置姿勢)に設定される。同様に、今回歩容終端支持脚足平位置姿勢は、今回歩容支持脚座標系で見た前記第1旋回歩容初期遊脚足平位置姿勢(次回歩容で遊脚として予定された脚体2の足平22の、定常歩容初期での位置姿勢)に設定される。
次いで、S602に進み、歩容生成装置100は、今回歩容の基準上体姿勢軌道が、定常歩容の基準上体姿勢軌道に連続的につながるように、今回歩容の基準上体姿勢軌道パラメータを決定する。
一例として、今回歩容が走行歩容である場合、今回歩容の基準上体姿勢は、定常歩容と同じ上体姿勢角、すなわち、“0”とされる。
次いで、S604に進み、歩容生成装置100は、今回歩容の腕姿勢軌道パラメータを、定常歩容の腕姿勢軌道パラメータと同様に決定する。但し、今回歩容の腕姿勢軌道が定常歩容の腕姿勢軌道に連続的につながるように今回歩容の腕姿勢軌道パラメータが決定される。なお、ここで決定される腕姿勢軌道パラメータは、定常歩容の腕姿勢軌道パラメータを決定する場合と同様、Z軸(あるいは上体体幹軸)まわりの両腕体の角運動量変化に関すること以外の運動パラメータ(具体的には、上体24に対する両腕体の相対重心位置の軌道を規定するパラメータ)である。
次いで、S606に進み、歩容生成装置100は、今回歩容の床反力鉛直成分軌道パラメータを決定する。一例として、今回歩容が走行歩容である場合、今回歩容の床反力鉛直成分軌道パラメータは、それにより規定される床反力鉛直成分軌道が、図17に示した定常歩容の各旋回歩容の床反力鉛直成分軌道と同様のパターンになるように決定される。すなわち、図26に示すパターンで床反力鉛直成分軌道が変化するように、今回歩容の床反力鉛直成分軌道パラメータが決定される。
この場合、床反力鉛直成分軌道パラメータは、今回歩容の全体重心鉛直位置速度と床反力鉛直成分軌道とが、定常歩容に連続的につながるように決定される。
具体的には、まず、図12のS064の処理で最終的に求めた定常歩容の初期上体位置姿勢及びその変化速度等の初期運動状態から、ロボット1のキネマティクスモデルを用いて今回歩容支持脚座標系から見た定常歩容の初期全体重心鉛直位置速度が求められる。
例えば、今回歩容支持脚座標系から見た定常歩容の初期全体重心鉛直位置は、今回歩容支持脚座標系から見た定常歩容の初期上体鉛直位置に対応する図9のモデルの上体質点鉛直位置と、今回歩容支持脚座標系から見た定常歩容の初期の各足平位置に対応する図9のモデルの支持脚質点鉛直位置及び遊脚質点鉛直位置とから、前記式04により求められる。
また、今回歩容支持脚座標系から見た定常歩容の初期全体重心鉛直速度は、今回歩容支持脚座標系から見た定常歩容の上体鉛直速度に対応する図9のモデルの上体質点鉛直速度と、今回歩容支持脚座標系から見た定常歩容の初期の各足平鉛直速度に対応する図9のモデルの支持脚質点鉛直速度及び遊脚質点鉛直速度とから、前記式04の両辺を微分してなる式により求められる。
なお、これらの初期全体重心鉛直位置速度は、定常歩容の初期運動状態から、より厳密なモデルを用いて算出するようにしてもよい。
そして、このようにして求めた定常歩容の初期全体重心鉛直位置速度を前記式13及び次式41の終端全体重心鉛直位置速度に代入すると共に、前回歩容終端の全体重心鉛直位置速度(より詳しくは、前回歩容終端の全体重心鉛直位置及び全体重心鉛直速度を今回歩容支持脚座標系から見た値)を前記式13及び次式41の初期全体重心鉛直位置速度に代入し、式13及び式41の関係を満足するように、今回歩容の床反力鉛直成分軌道パラメータが決定される。なお、式13及び式41における積分は今回歩容の初期から終端までの期間での積分である。
終端全体重心鉛直速度−初期全体重心鉛直速度
=(床反力鉛直成分/ロボットの質量)の1階積分
+重力加速度の1階積分
…式41
ただし、式41の重力加速度は負の値とする。
より具体的には、まず、図26のような床反力鉛直成分パターンを規定する床反力鉛直成分軌道パラメータ(折れ点の時刻等)のうちの、少なくとも2つのパラメータを独立な未知変数として、その未知変数の値を、式13と式41とからなる連立方程式によって決定する。
未知変数とするパラメータには、例えば、図26の台形の高さ(床反力鉛直成分のピーク値)と幅(片脚支持期の時間)とを選択すればよい。この場合、図26の台形の両側部分の傾きは今回歩容周期等に応じてあらかじめ定めた値とし、あるいは、片脚支持期から空中期に移行する時刻を除く床反力鉛直成分パターンの折れ点の時刻を今回歩容周期等に応じてあらかじめ定めた値とする。
次いで、S608に進み、歩容生成装置100は、床反力水平成分許容範囲[Fxmin,Fxmax](具体的には該床反力水平成分許容範囲のパターンを規定するパラメータ)を決定する。
一例として、今回歩容が走行歩容である場合、今回歩容の床反力水平成分許容範囲[Fxmin,Fxmax]は、図18に示した各旋回歩容の床反力水平成分許容範囲と同様に決定される。たとえば図27に示すようなパターンで床反力水平成分許範囲が設定される。本実施形態では、先にS606で決定した床反力鉛直成分軌道から、前記式12a,12bに基づいて床反力水平成分許容範囲が決定される。
次いで、S610に進み、歩容生成装置100は、今回歩容のZMP軌道を規定するZMP軌道パラメータを仮決定する。
この場合、該ZMP軌道パラメータは、これにより規定される目標ZMPが、安定余裕が高く、且つ急激に変化しないようにしつつ、前回歩容の終端での目標ZMPから、定常歩容の初期の目標ZMPまで、今回歩容における支持多角形内で連続的に変化するように仮決定される。
一例として、今回歩容が走行歩容である場合、今回歩容の目標ZMP軌道は、定常歩容が走行歩容である場合について先に説明した各旋回歩容におけるパターンと同様のパターンで設定される。例えば、今回歩容の目標ZMP軌道のX軸方向位置は、図28に示す如く決定される。今回歩容の目標ZMP軌道のY軸方向位置についても同様である。そして、この目標ZMP軌道の折れ点の位置や時刻が、今回歩容の目標ZMP軌道パラメータとして決定される。
補足すると、S610で決定される今回歩容のZMP軌道パラメータは、仮決定されただけであり、後述するように修正される。そこで、上記のごとくS610で仮決定したZMP軌道パラメータにより規定される今回歩容のZMP軌道を、以降、今回歩容の仮目標ZMP軌道という。
次いで、S612に進み、歩容生成装置100は、上体姿勢復元期間[Ta,Tb]を決定する。上体姿勢復元期間の開始時刻Taは、定常歩容の第2旋回歩容におけるTmに相当し、上体姿勢復元期間の終了時刻Tbは、定常歩容の第2旋回歩容におけるTs2に相当するものである。これらの時刻Ta,Tbの設定の仕方は、それぞれTm及びTs2の設定の仕方と同様である。従って、上体姿勢復元期間[Ta,Tb]は、図26に例示する如く決定される。
以上がS066で実行される処理である。
図12に戻って、上記のごとくS066の処理(今回歩容の歩容パラメータを決定もしくは仮決定する処理)を行った後、次いでS068に進み、歩容生成装置100は、今回歩容の歩容パラメータを修正する(今回歩容パラメータを確定する)。ここで修正する歩容パラメータは、前記仮目標ZMP軌道を規定するZMP軌道パラメータである。このS068の処理では、今回歩容の上体位置姿勢軌道を定常歩容に連続させ、もしくは漸近させるべくZMP軌道パラメータが修正される。
このS068の処理は、具体的には、図29のフローチャートに従って実行される。
まずS700を経てS702に進み、仮今回歩容パラメータを基に、今回歩容の終端時刻までの仮今回歩容が生成される。なお、仮今回歩容パラメータは、仮目標ZMP軌道(S066又は後述のS716で決定された仮目標ZMP軌道)を規定するZMP軌道パラメータと、S066で前記した如く決定された、ZMP軌道パラメータ以外の歩容パラメータとの組を意味する。
一例として、今回歩容が走行歩容である場合のS702の処理は、具体的には、図30のフローチャートに従って実行される。
以下説明すると、歩容生成装置100は、まず、S800において、仮今回歩容の生成用時刻Tk等の初期化を行なう。具体的には、仮今回歩容の生成用時刻Tkが現在時刻tに初期化される。また、時刻t−Δtで歩容生成装置100が既に決定した目標上体位置及び目標上体速度、目標上体姿勢角及びその角速度、目標足平位置姿勢、目標腕姿勢など、時刻t−Δtでの目標歩容の運動状態(今回歩容支持脚座標系で見た運動状態)が、仮今回歩容の現在時刻tの直前の初期運動状態として設定される。
次いで、S802を経てS804において、歩容生成装置100は、仮歩容生成用時刻Tkが今回歩容の終端時刻Tcurr以前の時刻であるか否か(Tk≦Tcurrであるか否か)を判断する。そして、この判断結果が肯定的である場合には、S806に進み、歩容生成装置100は、今回歩容の瞬時値(時刻Tkでの値)を決定する。次いでS808に進み、歩容生成装置100は、仮歩容生成用時刻Tkを所定の刻み時間ΔTkだけ増加させた後、S804の判断を再び行なう。なお、刻み時間ΔTkは、例えば、制御周期Δtに一致する時間である。
また、S804の判断結果が否定的である場合には、図30に示すフローチャートの処理が完了する。
以上の処理により、仮今回歩容が初期から終端まで生成される。
S806の処理は、具体的には、図31のフローチャートに従って実行される。
まずS900において、歩容生成装置100は、歩容パラメータ(詳しくは仮今回歩容の床反力鉛直成分軌道パラメータ)を基に、図26に示した目標床反力鉛直成分の時刻Tkでの瞬時値を求める。
次いで、S902において、歩容生成装置100は、歩容パラメータ(詳しくは、仮今回歩容のZMP軌道パラメータ)を基に、時刻Tkでの仮目標ZMPの瞬時値を求める。
次いでS904に進み、歩容生成装置100は、歩容パラメータ(詳しくは、足平軌道パラメータ、基準上体姿勢軌道パラメータ及び腕姿勢軌道パラメータ)を基に、時刻Tkにおける目標足平位置姿勢、基準上体姿勢及び目標腕姿勢の瞬時値をそれぞれ求める。但し、目標腕姿勢に関しては、より詳しくは両腕体の全体重心位置が決定されるが、鉛直軸(又は上体24の体幹軸)まわりの角運動量を変化させる腕体の運動(腕振り運動)は、未だ決定されていない。
なお、時刻Tkでの目標足平位置姿勢の瞬時値は、図20のS200で初期時刻Tsでの足平位置姿勢を求めた場合と同様に、有限時間整定フィルタを使用して求められる。
次いでS906に進み、歩容生成装置100は、S900で求めた目標床反力鉛直成分を満足する(ロボット1の鉛直方向の慣性力と重力との和を目標床反力鉛直成分に釣り合わせる)ような全体重心鉛直位置速度を算出する。この算出は、具体的には図22のS406と同様の処理により行なわれる。
次いでS908に進み、歩容生成装置100は、上記の如く求めた全体重心鉛直位置を満足する上体鉛直位置の時刻Tkでの瞬時値を算出する。この算出は、具体的には、前記図22のS408と同様の処理により行なわれる。
次いでS910に進み、歩容生成装置100は、歩容パラメータ(詳しくは、仮今回歩容の床反力水平成分許容範囲を規定するパラメータ)に基づいて、図27に示す床反力水平成分許容範囲[Fxmin,Fxmax]の時刻Tkにおける瞬時値を算出する。
次いでS912に進み、歩容生成装置100は、仮今回歩容の時刻Tkでの上体水平加速度と上体姿勢角加速度とを決定する。このS912の処理は、図22のS412の処理と若干相違し、前記補償全床反力モーメント分配器110から歩容生成装置100に入力されるモデル操作床反力モーメントが反映される。すなわち、S912の処理では、上体水平加速度と上体姿勢角速度とは、目標ZMP周りにモデル操作床反力モーメントが発生し、且つ、ロボット1の水平方向の慣性力に釣り合う床反力水平成分Fxが許容範囲[Fxmin,Fxmax]から逸脱しないという条件を満足するように決定される。
この処理は、具体的には、図32のフローチャートに示す如く実行される。
まずS1000おいて、歩容生成装置100は、時刻Tkが図25のS612で設定した上体姿勢復元期間[Ta,Tb]内の時刻であるか否かを判断する。
この判断結果が否定的である場合(時刻Tkでの床反力水平成分許容範囲が比較的狭いか、もしくは“0”である場合)には、歩容生成装置100は、S1002からS1014までの処理を実行する。
S1002では、歩容生成装置100は、補償全床反力モーメント分配器110から入力される時刻Tkでのモデル操作床反力モーメントが図9の動力学モデル上で目標ZMPまわりに発生するように(ロボット1の慣性力と重力との合力が目標ZMPまわりに発生するモーメントの水平成分がモデル操作床反力モーメントに釣り合うように)、仮今回歩容の時刻Tkでの上体水平加速度αtmpを算出する。
但し、この場合、時刻Tkが現在時刻tよりも後の時刻である場合には、歩容生成装置100には、未だ補償全床反力モーメント分配器110からモデル操作床反力モーントが入力されていない。このため、時刻Tkが現在時刻tよりも後の時刻である場合には、歩容生成装置100は、該時刻Tkでのモデル操作床反力モーメントを“0”として(すなわち、目標ZMPの周りの床反力モーメントの水平成分が“0”となるように)、仮今回歩容の時刻Tkでの上体水平加速度αtmpを算出する。
従って、本実施形態におけるS1002の処理では、時刻Tkが現在時刻tである場合には、時刻Tkでの上体水平加速度αtmpは、補償全床反力モーメント分配器110から歩容生成装置100に実際に入力される現在時刻tでのモデル操作床反力モーメントが目標ZMPまわりに発生するように決定される。一方、時刻Tkが現在時刻tよりも後の時刻である場合には、時刻Tkでの上体水平加速度αtmpは、目標ZMPを満足するように決定される。
この場合、モデル操作床反力モーメントが“0”である場合の上体水平加速度の決定の仕方は、図23のS504の処理と同じである。一方、モデル操作床反力モーメントが“0”でない場合には、前記式03のMyを、“0”の代わりに、モデル操作床反力モーメントに一致させた式から算出される上体質点水平加速度d2Xb/dt2が上体水平加速度αtmpとして求められる。
なお、現在時刻tよりも後のモデル操作床反力モーメントを現在時刻t又はそれ以前に歩容生成装置100に入力されたモデル操作床反力モーメントから予測し、その予測されたモデル操作床反力モーメントを目標ZMP周りに発生させるように、現在時刻tよりも後の時刻Tkでの上体水平加速度を決定するようにしてもよい。
以上の如くS1002の処理を実行した後のS1004〜S1014の処理は、図23のS506〜S516の処理と同じである。従って、これらの処理の説明は省略する。
一方、S1000の判断結果が肯定的である場合(時刻Tkでの床反力水平成分の許容範囲が比較的広い場合)には、S1016に進み、歩容生成装置100は、上体姿勢復元モーメントZMP換算値ZMPrecのパターンを設定する。この場合、定常歩容の生成に係わる図23のS518と異なり、ZMPrecは、一定値“0”となるパターン(すなわち図24に示す台形パターンの高さが“0”であるパターン)に設定される。
次に、S1018からS1026までの処理が行われる。これらの処理のうちのS1018、S1020では、それぞれ、図23のS520、S522と同じ処理が実行される。
また、S1020に続くS1022では、歩容生成装置100は、前記S1002と同じ処理を実行することで、モデル操作床反力モーメントを反映させて上体水平加速度αtmpを算出する。
そして、S1022の後のS1024、S1026では、それぞれ、図23のS526、S528と同じ処理が実行される。
なお、S1016〜S1026の処理では、上体姿勢復元モーメントZMP換算値ZMPrecの瞬時値は常に“0”になるので、S1020で求められる上体姿勢角加速度βは、時刻Tkでの基準上体姿勢角加速度β0に一致する。従って、β=β0として、S1022、S1024及びS1026の処理のみを行なうようにしてもよい。また、S1024で算出される上体水平加速度αは、常にαtmpに一致するので、S1024の処理は省略してもよい。
以上のごとく図31のS912の処理を完了した後、次いでS914に進み、歩容生成装置100は、S912で求めた上体水平加速度を時刻Tkまでの期間で逐次積分することにより時刻Tkでの上体水平速度を求める。さらに、歩容生成装置100は、その上体水平速度を時刻Tkまでの期間で逐次積分することにより、時刻Tkでの上体水平位置を求める。また、歩容生成装置100は、S912で求めた上体姿勢角加速度を時刻Tkまでの期間で逐次積分することにより時刻Tkでの上体姿勢角速度を求める。さらに、歩容生成装置100は、その上体姿勢角速度を時刻Tkまでの期間で逐次積分することにより、時刻Tkでの上体姿勢角を求める。
以上のごとく図29のS702の処理(終端時刻までの仮今回歩容の生成処理)が完了した後、次にS704に進む。このS704では、歩容生成装置100は、S702で求めた仮今回歩容の終端での上体水平位置速度(Xe,Vxe)(Xe:仮今回歩容の終端上体水平位置、Vxe:仮今回歩容の終端上体水平速度)から、前記式10に基づいて仮今回歩容の終端発散成分qe1(=Xe+Vxe/ω0)を算出する。
次いでS706に進み、歩容生成装置100は、仮今回歩容の終端発散成分qe1と、図20のS224で先に求めた定常歩容の初期発散成分q0”との差である終端発散成分誤差errq(=qe1−q0”)を算出する。
次いで、S708に進んで、歩容生成装置100は、算出した終端発散成分誤差errqが許容範囲内(“0”近傍の所定の範囲)にあるか否か判断する。
このS708の判断結果が否定的である場合には、S710に進み、歩容生成装置100は、a=Δa(Δa:所定の微小量)として、図28に示す如く設定した台形パターンのZMP修正量によって、同図に示す如く仮目標ZMP軌道を修正してなる目標ZMP軌道を用いて、前記S702と同様に、終端時刻までの仮今回歩容を生成する。すなわち、歩容生成装置100は、S702での仮今回歩容の生成に用いた仮目標ZMP軌道の代わりに、それを修正してなる目標ZMP軌道を用いて、改めて仮今回歩容を生成する。この場合、目標ZMP以外の今回歩容パラメータは、S702で使用したものと同じである。
ここで、上記ZMP修正量は、今回歩容の終端発散成分を定常歩容の初期発散成分にできるだけ一致させる(ひいては、今回歩容の上体位置姿勢軌道を将来において、定常歩容の上体位置姿勢軌道に収束させる)ために、仮目標ZMPの修正を行なう(仮目標ZMPに加え合わせる)修正量を意味する。そして、本実施形態では、このZMP修正量は、台形パターンの修正量とされ、この台形パターンの高さが、上記“a”である。
この場合、本実施形態では、仮目標ZMP軌道の修正は、床反力水平成分許容範囲が十分に広いものとなる期間としての前記上体姿勢復元期間[Ta,Tb]で行なうようにしており、上記台形パターンは、上体姿勢復元期間[Ta,Tb]内で設定されている。なお、この上体姿勢復元期間[Ta,Tb]は、支持脚足平22の底面のほぼ全面が接地する期間(足底全面接地期間)でもある。また、上記台形パターンのZMP修正量の折れ点の時刻は、仮目標ZMP軌道の折れ点の時刻に合わせて設定されている。なお、S710でa=Δa(Δa:所定の微小量)とするのは、現在の仮目標ZMP軌道を上記台形パターンのZMP修正量によって微小量だけ、修正したときの前記終端発散成分誤差errqの変化を観測するためである。
補足すると、S710の上記の処理では、目標ZMPのX軸方向位置を修正することを例に採って説明したが、実際には目標ZMPのY軸方向位置の修正も併せて行なわれる。そのY軸方向位置の修正は、X軸方向位置の修正と同様に、目標ZMP軌道を仮目標ZMP軌道から台形パターンで変化させるように行なわれる。この場合、上記Δaは各軸方向で同じ値でよいが、互いに異なる値に設定してもよい。
なお、X軸方向及びY軸方向の一方の軸方向での目標ZMP軌道の修正が、他方の軸方向での終端発散成分に影響を及ぼさないか、もしくはその影響が十分に小さい場合には、S710から、後述のS716までの処理をX軸方向とY軸方向とで各別に行なうようにしてもよい。
また、上記Δaは、微小量の定数でよいが、以下に説明する繰り返し演算によって終端発散成分誤差errqが小さくなるにつれてΔaを減少させるように該Δaを設定するようにしてもよい。
上記のようにS710にて、ZMP修正量による修正後の仮目標ZMP軌道を用いて仮今回歩容を生成した後、次にS712に進む。このS712では、歩容生成装置100は、S710で生成した仮今回歩容の終端での上体水平位置速度(Xe1,Vxe1)(Xe1:仮今回歩容の終端上体水平位置、Vxe1:仮今回歩容の終端上体水平速度)から、前記式10に基づいて、仮今回歩容(S710で生成した仮今回歩容)の終端発散成分qe2(=Xe1+Vxe1/ω0)を算出する。
次いでS714に進み、歩容生成装置100は、パラメータ感度r(Δaに対する終端発散成分誤差errqの変化の割合)を図中に示す式により算出する。すなわち、qe2とqe1との差をΔaにより除算することにより、パラメータ感度rが算出される。
次いで、さらに、S716に進み、歩容生成装置100は、a=−errq/r、すなわちS706で求めた終端発散成分誤差errqを、S714で求めたパラメータ感度rで除算してなる値を高さaとすることによって台形パターンのZMP修正量を設定し、このZMP修正量により仮目標ZMP軌道(S702の処理で仮今回歩容を生成するために使用した仮目標ZMP軌道)を修正することによって、新たな仮目標ZMP軌道を決定する。
次いで、歩容生成装置100は、S702からの処理を再び実行する。なお、この場合、S702では、S716で決定された新たな仮目標ZMP軌道を用いて、仮今回歩容が生成される。
そして、S708の判断結果が否定的となる限りは、上記したS702〜S716の処理が繰り返され、S708の判断結果が肯定的となった場合には、その繰り返しループを抜けてS718に進む。
以上のS702〜S716の処理の繰り返しによって、仮目標ZMP軌道は、仮今回歩容の終端発散成分が定常歩容の初期発散成分に一致もしくはほぼ一致するように修正されることとなる。
次に、S718では、歩容生成装置100は、仮今回歩容(S702〜S716の繰り返しループを抜ける直前のS702で生成された仮今回歩容)と定常歩容とを基に、今回歩容の上体姿勢角を定常歩容の上体姿勢角に近づけるように、今回歩容の上体姿勢復元モーメントZMP換算値(ZMPrec)のパターンを決定する。
この場合、上体姿勢復元モーメントZMP換算値(ZMPrec)のパターンは、仮今回歩容の終端上体姿勢角と定常歩容の初期上体姿勢角との差、及び仮今回歩容の終端上体姿勢角速度と定常歩容の初期上体姿勢角速度との差などを基に決定される。
ここで決定するZMPrecは、後述する今回歩容の瞬時値の生成処理(S032の処理)で、床反力水平成分許容範囲が十分に大きいものとなる期間(前記上体姿勢復元期間[Ta,Tb])において、上体姿勢角軌道を定常歩容につながらせる(近づける)ように上体姿勢角加速度を発生させても、今回歩容終端発散成分と定常歩容初期発散成分との一致性(S708の条件)を維持できるように、仮目標ZMPを修正するためのものである。
このZMPrecは、前記定常歩容の生成処理で説明したものと同様に台形状のパターンであり、次のように決定される。すなわち、図24に例示したZMPrecの台形パターンにおいて、台形の頂点(折れ点)の時刻は、前記上体姿勢復元期間[Ta,Tb]内の所定の時刻(例えば前記ZMP修正量の台形パターンの折れ点の時刻)とされる。そして、台形高さを未知数のパラメータとし、以下のようにZMPrecの台形高さが求められる。なお、S718では図24におけるTm及びTs2をそれぞれTa,Tbに置き換えるものとする。
上記のように上体姿勢復元モーメントZMP換算値ZMPrecのパターンの未知数のパラメータが1つである場合には、今回歩容の終端において上体姿勢角と上体姿勢角速度との両方を定常歩容に連続につなげることは一般的にはできない。そこで、本実施形態では、複数の歩容周期で徐々に、生成される歩容の状態が定常歩容の状態に近づくように、未知数のパラメータを決定することとする。
補足すると、ZMPrecのパターンをより複雑にすることによって、そのパターンの未知数のパラメータを2つ以上にしてもよい。そして、今回歩容の終端において上体姿勢角と上体姿勢角速度との両者を定常歩容に連続につなげるように2つ以上の未知数のパラメータを決定するようにしてもよい。ただし、このようにした場合には、ZMPrecのパターンがジグザグに変動し過ぎるおそれがある。
ZMPrecの未知数のパラメータとしての台形高さは、以下に説明する如く決定される。
以下では、算出原理を説明した後、算出手順を説明する。
前述のごとくS702でZMPrec=0として生成した仮今回歩容の終端上体姿勢角と定常歩容の初期上体姿勢角との差をθerrとする。また、この仮今回歩容の終端上体姿勢角速度と定常歩容の初期上体姿勢角速度との差をVθerrとする。
ここで、ZMPrecのパターンの台形高さをある値bcurrとして今回歩容を生成し、引き続いて、今回歩容と同様のアルゴリズムによって定常歩容の第1旋回歩容を生成する場合を想定する。但し、第1旋回歩容の上体姿勢復元モーメントZMP換算値ZMPrecパターンの高さは、図23のS518において求められた第1旋回歩容のZMPrecパターンの高さ(図24に例示する台形パターンの高さ)とある値b1との和であるとする。
このようにして生成された歩容をZMPrec修正歩容と呼び、その終端(第1旋回歩容の終端)の上体姿勢角とその角速度とをそれぞれθ1、Vθ1とする。
図12のS064の処理(定常歩容の初期状態を決定する処理)が完了した時点で求められた本来の定常歩容(最終的にS310で決定された定常歩容の初期上体姿勢角及び角速度を初期値とし、第1旋回歩容及び第2旋回歩容のそれぞれのZMPrecのパターンをS518において求められたパターンとした場合の定常歩容)の第1旋回歩容の終端上体姿勢角と角速度とをそれぞれθ1org、Vθ1orgとする。
ここで、Δθ1、ΔVθ1を次のように定義する。
Δθ1=θ1−θ1org ……式50
ΔVθ1=Vθ1−Vθ1org ……式51
上記Δθ1は、ZMPrec修正歩容の終端における上体姿勢角と本来の定常歩容の第1旋回歩容の終端における上体姿勢角との差を意味する。同様に、Vθ1は、ZMPrec修正歩容の終端における上体姿勢角速度と本来の定常歩容の第1旋回歩容の終端における上体姿勢角速度との差を意味する。もし、Δθ1及びΔVθ1が“0”になれば、ZMPrec修正歩容に引き続いて、今回歩容と同様のアルゴリズムによって、ZMPrecパターンをS518において求められた第2旋回歩容用のZMPrecに一致させて該第2旋回歩容を生成すれば、その第2旋回歩容の上体姿勢角と角速度とに関しては、本来の定常歩容の第2旋回歩容のそれに一致する。
従って、Δθ1及びΔVθ1が“0”となるbcurr(以降、今回歩容台形高さbcurrという)とb1(以降、第1旋回歩容台形高さb1という)とを求め、求めたbcurrを今回歩容の台形高さとして最終的に決定すればよい。
一方、ロボット1の上体姿勢角に関する動力学モデルが、図9に示すフライホイールFHのような線形特性を持つことから、Δθ1及びΔVθ1は、今回歩容台形高さbcurr、第1旋回歩容台形高さb1、仮今回歩容の終端上体姿勢角と定常歩容の初期上体姿勢角との差θerr、仮今回歩容の終端上体姿勢角速度と定常歩容の初期上体姿勢角速度との差Vθerrと以下の関係を持つ。
Δθ1=c11*bcurr+c12*b1+θerr+e1*Vθerr ……式52
ΔVθ1=c21*bcurr+c22*b1+e2*Vθerr ……式53
但し、c11、c12、c21、c22、e1、e2は、今回歩容の歩容周期、第1旋回歩容の歩容周期、上体姿勢復元モーメントZMP換算値ZMPrecのパターンのパラメータ(特に時間に関するパラメータ)などによって一義的に決定される係数である。
以上の原理に基づき、歩容生成装置100は、ZMPrecの未知数のパラメータとしての台形高さを、次のように決定する。
まず、歩容生成装置100は、仮今回歩容と定常歩容との境界での上体姿勢角の差θerrと上体姿勢角速度の差Vθerrとを求める。
次いで、歩容生成装置100は、式52,53の係数であるc11、c12、c21、c22、e1、e2を、今回歩容の歩容周期、第1旋回歩容の歩容周期、上体姿勢復元モーメントZMP換算値ZMPrecのパターンのパラメータ(特に時間に関するパラメータ)などを基に決定する。
次いで、歩容生成装置100は、式52、式53の右辺の演算結果の値が“0”となるように今回歩容台形高さbcurr及び第1旋回歩容台形高さb1を決定する。すなわち、式52、式53の左辺を“0”とした連立方程式を解くことによって、bcurr、b1が求められる。
そして、歩容生成装置100は、上記の如く求めたbcurrを、今回歩容の上体姿勢復元モーメントZMP換算値(ZMPrec)の台形パターンの台形高さとして決定する。
以上の如くS718で上体姿勢復元モーメントZMP換算値ZMPrecのパターンを決定した後、次に、S720に進む。このS720では、歩容生成装置100は、現在の仮目標ZMP軌道(S702〜S716の繰り返しループを抜けたときの仮目標ZMP軌道)に、S718で決定した上体姿勢復元モーメントZMP換算値のパターンを重畳する(加え合わせる)ことによって得られるパターンを、今回歩容の目標ZMP軌道として決定する。
以上の如く、仮目標ZMP軌道に上体姿勢復元モーメントZMP換算値のパターンを重畳することによって今回歩容の目標ZMP軌道を決定することによって、上体水平位置軌道を仮今回歩容の水平位置軌道からずらさない(ひいては、今回歩容の終端発散成分が定常歩容の初期発散成分とほぼ一致する状態を保つ)ようにしつつ、今回歩容の上体姿勢角軌道が定常歩容につながるように、今回歩容の歩容パラメータが最終的に決定されることとなる。
図12に戻って、上記のごとくS068において今回歩容パラメータを修正した後(今回歩容パラメータを確定した後)、S070に進み、歩容生成装置100は、修正後の目標ZMP軌道が、ZMP存在許容領域条件を満足するか否かを判断する。
ここで、S066で設定される仮目標ZMP軌道は、前記したように支持多角形内に存在する(詳しくは、仮目標ZMP軌道の各時刻での瞬時値が、その時刻での支持多角形内に存在する)ように設定されるものの、その仮目標ZMP軌道は、今回歩容のロボット1の運動軌道を、将来において定常歩容の運動軌道に収束させるようにする(具体的には、今回歩容の終端発散成分を定常歩容の初期発散成分に一致もしくはほぼ一致させる)ために、S068において前記ZMP修正量等によって修正される。このため、S068で決定される修正後の目標ZMP軌道は、支持多角形内の領域から逸脱してしまう場合もある。
S070の判断処理は、このことを確認するための処理であり、この判断処理におけるZMP存在許容領域条件というのは、目標ZMP軌道の各時刻での瞬時値が、その時刻での支持多角形内の所定のZMP存在許容領域内に存在するという必要条件である。
S070では、より具体的には、歩容生成装置100は、S066で決定した足平位置姿勢軌道パラメータに基づいて、今回歩容の各足平22の足平位置姿勢軌道を算出し、この足平位置姿勢軌道に基づいて、現在時刻t(歩容生成装置100の現在の制御周期の時刻)から今回歩容終端までの各時刻(所定の刻み時間毎の時刻)での支持多角形を算出する。さらに、歩容生成装置100は、その支持多角形内にZMP存在許容領域を設定する。
この場合、ZMP存在許容領域は、支持多角形に一致する領域でよいが、余裕を見込んで、該支持多角形よりも若干小さめの領域であってもよい。また、ZMP存在許容領域の外形は、支持多角形の外形と同じ形状でよいことはもちろんであるが、該支持多角形内に収まる範囲内で支持多角形と異なる形状(例えば単なる長方形等、支持多角形よりも単純な形状)であってもよい。
そして、歩容生成装置100は、今回歩容の各時刻(現在時刻以後の各時刻)での目標ZMPが、その時刻でのZMP存在許容領域内に存するか否かによって、目標ZMP軌道がZMP存在許容領域条件を満足するか否かを判断する。S070の判断結果が肯定的である場合には、S072に進み、歩容生成装置100は、適切な今回歩容(前記脚体ロボット1の継続的な運動を行ない得る今回歩容)を生成可能であるとして、フラグの値を“1”に設定する。
また、S070の判断結果が否定的である場合には、歩容生成装置100は、次にS074の判断処理を実行する。このS074では、前記した幾何学的脚体運動必要条件を満足し得る範囲内で、前記ZMP存在許容領域条件と運動継続性必要条件とを満足させるように次回歩容の支持脚足平22の目標着地位置を変更可能か否かを判断する。
ここで、上記運動継続性必要条件というのは、一般的に言えば、生成されるロボット1の目標運動軌道が、ロボット1の姿勢を崩すことなく、安定な姿勢でロボット1の継続的な運動を行なうことができる目標運動軌道となるという条件である。
この場合、本実施形態では、歩容生成装置100は、今回歩容の運動軌道における終端発散成分を定常歩容の初期発散成分に一致もしくはほぼ一致させるように、該今回歩容の運動軌道をロボット1の動力学モデルを用いて生成することによって、換言すれば、将来において定常歩容の運動軌道に収束させ得る今回歩容の運動軌道を生成することによって、上記運動継続性必要条件を満足させるように、動力学モデルを用いて今回歩容の運動軌道を生成する。そして、この場合、このように運動継続性必要条件を満足させ得る今回歩容の運動軌道を生成するために、歩容生成装置100は、動力学モデル上でロボット1に作用させる床反力に係わる要素としての目標ZMP軌道を調整する。
また、今回歩容の各時刻における前記支持多角形は、両脚体2,2の足平22,22の運動軌道に依存するので、例えば、次回歩容の支持脚足平22の目標着地位置(ひいては次回歩容支持脚座標系)を変更すれば、該支持多角形の時系列パターンも変化することとなる。
従って、S074の判断処理で、幾何学的脚体運動必要条件を満足し得る範囲内で、前記ZMP存在許容領域条件と運動継続性必要条件とを満足させるように次回歩容の支持脚足平22の目標着地位置を変更可能か否かということは、換言すれば、次回歩容の支持脚足平22の目標着地位置を変更したと仮定した場合に、前記支持多角形内のZMP存在許容領域に目標ZMPの瞬時値を存在させるようにしつつ、前記運動継続性必要条件を満足させるように今回歩容の目標ZMP軌道を設定することができ、且つ、次回歩容の支持脚足平22の変更後の目標着地位置を前記幾何学的脚体運動必要条件を満足させるための前記幾何学的着地許容領域に存在させるようにすることができるか否かということを意味する。
かかるS074の判断処理は、例えば次のように行うことができる。すなわち、歩容生成装置100は、S070の判断結果が否定的となった目標ZMP軌道の、ZMP存在許容領域からの逸脱量や逸脱方向等に応じて、次回歩容の支持脚足平22の目標着地位置の変更量(次回歩容支持脚座標系の原点位置の変更量)を設定する。該変更量(変更方向を含む)は、S040の処理の中で、先に決定された最新の次回歩容支持脚座標系に対応する支持脚足平22の目標着地位置からの変更量である。また、該変更量は、その大きさが所定の範囲内に制限される。
そして、歩容生成装置100は、次回歩容の支持脚足平22の変更後の目標着地位置が、S060で説明した如く今回歩容支持脚座標系で設定した前記幾何学的着地許容領域内に存在するか否かを判断する。そして、歩容生成装置100は、変更後の目標着地位置が幾何学的着地許容領域内に存在しない場合、すなわち先に決定された最新の次回歩容支持脚座標系に対応する支持脚足平22の目標着地位置が幾何学的着地許容領域の境界又はその近辺に設定されていて、変更後の目標着地位置が該幾何学的着地許容領域から逸脱してしまう場合には、S074の判断結果が否定的であるとする。
また、次回歩容の支持脚足平22の変更後の目標着地位置が、今回歩容支持脚座標系で設定した前記幾何学的着地許容領域に存在する場合には、歩容生成装置100は、次回歩容支持脚座標系の原点位置を、変更後の目標着地位置に対応する位置に設定しつつ、次回歩容支持脚座標系及び次次回歩容支持脚座標系と、今回歩容周期及び次回歩容周期を改めて設定する。この場合の各支持脚座標系及び歩容周期の設定の仕方は、次回歩容支持脚座標系の原点位置の設定以外は、前記したS060の処理での設定の仕方と同じでよい。
次いで、歩容生成装置100は、改めて設定した次回歩容支持脚座標系及び次次回歩容支持脚座標系と、今回歩容周期及び次回歩容周期とを前提として、前記したS062からS070までの処理と同じ処理を実行する。そして、このときのS070の判断結果が肯定的となる場合には、歩容生成装置100は、S074の判断結果が肯定的であるとする。
また、このときのS070の判断結果が否定的となる場合には、歩容生成装置100は、次回歩容の支持脚足平22の目標着地位置の変更量を上記と同様に再設定し、さらに、該変更量の再設定後の処理を上記と同様に実行する。そして、最終的に、次回歩容の支持脚足平22の変更後の目標着地位置が今回歩容支持脚座標系で設定した前記幾何学的着地許容領域から逸脱してしまうものとなった場合には、歩容生成装置100は、S074の判断結果が否定的であるとする。
以上がS074で実行される判断処理である。
なお、次回歩容の支持脚足平22の目標着地位置の初回の変更時に、該目標着地位置の1つもしくは複数種類の変更量(変更方向等が互いに異なる複数種類の変更量)の候補値を設定して、それぞれの候補値を基に、上記と同様の処理を実行することによって、該目標着地位置の変更量と前記運動継続性条件を満足するための目標ZMP軌道の修正量(S064で仮決定される仮目標ZMP軌道からの修正量)との関係を推定するようにしてもよい。そして、推定した当該関係を考慮して、該目標着地位置の変更量を再設定するようにしてもよい。このようにすると、S074でS062〜S068の処理を繰り返すこととなる回数を少なくすることが可能となる。
以上のS074の判断結果が肯定的となる場合には、歩容生成装置100は、S072と同様に、適切な今回歩容を生成することができるとして、フラグの値を“1”に設定する。また、S078の判断結果が否定的となる場合には、歩容生成装置100は、適切な今回歩容を生成するとができないとして、フラグの値を“0”に設定する。
以上が、S040で実行される図12のフローチャートの処理の詳細である。この処理により、次回歩容の動作モードを両脚移動動作モードに決定したと仮定した場合に、ロボット1の運動を継続し得る適切な今回歩容を生成することが可能であるか否かが判断されることとなる。
図11に戻って、歩容生成装置100は、上記の如くS040の処理を実行した後、次に、S042の判断処理を実行する。すなわち、歩容生成装置100は、S040で設定されたフラグの値によって、適切な今回歩容を生成可能であるか否かを判断する。そして、この判断結果が肯定的である場合(フラグの値が“1”である場合)には、S044に進む。このS044では、歩容生成装置100は、次回歩容の動作モードを両脚交互離床・着床動作モードに決定する。
また、S042の判断結果が否定的である場合は、次回歩容の動作モードを両脚交互離床・着床動作モードに決定すると、前記幾何学的脚体運動必要条件、ZMP存在許容領域条件、運動継続性必要条件を満足させるような今回歩容を生成することができない場合である。
そこで、この場合には、歩容生成装置100は、S046において、次回歩容の動作モードを片脚ホッピング動作モードに決定したと仮定して、ロボット1の運動を安定な姿勢で継続し得る適切な今回歩容を生成することが可能であるか否かを判断する処理を実行する。
このS046では、S040と同様に、図12のフローチャートに示す処理が実行される。但し、この場合、一部の歩容パラメータの具体的な設定の仕方等が、S040の処理の場合と相違する。そこで、S046の処理の説明においては、S040の処理と相違する事項を中心に説明し、同じ処理については説明を省略する。また、以降の説明では、S046の中での処理とS040の中での処理とを区別するために、S046の中での処理に、添え字“b”を付し、S040の中での処理に添え字“a”を付する。例えば、S046の中でのS060の処理をS060b、S040の中でのS060の処理をS060aと表記する。
以下説明すると、歩容生成装置100は、S060bにおいて、前記したS060aと同様に、次回歩容支持脚座標系、次次回歩容支持脚座標系、今回歩容周期、及び次回歩容周期を決定する。ただし、この場合は、次回歩容の動作モードが、片脚ホッピング動作モードであることを前提として、次次回歩容支持脚座標系と次回歩容周期とが決定される。これ以外は、S060bの処理は、S060aの処理と同じである。
図33は、次回歩容の動作モードが片脚ホッピング動作モードである場合に、S060bで決定される次回歩容支持脚座標系及び次次回歩容支持脚座標系を例示している。この図示例では、今回歩容の動作モードも片脚ホッピング動作モードであるとしている。そして、図示例では、今回歩容及び次回歩容における片脚ホッピング歩容は、右側脚体2Rを支持脚とする歩容であり、今回歩容及び次回歩容のそれぞれの空中期にロボット1が概略右向きに移動するものとしている。なお、図示例では、前回歩容は歩行歩容である。
次いで、歩容生成装置100は、S062bにおいて、定常旋回歩容の歩容パラメータを決定する。このS062bでは、図16のフローチャートに示した処理が、S062aと同様に実行される。ただし、この場合、次回歩容の動作モードが片脚ホッピング歩容であるので、S062bにおける定常歩容の第1旋回歩容及び第2旋回歩容は、いずれも片脚ホッピング歩容である。
このために、S062bの処理では、一部の定常歩容パラメータの設定の仕方が、走行歩容を例として説明したS062aの処理と相違する。
具体的には、図16のフローチャートのうちのS100bでの足平軌道パラメータの決定の仕方と、S102bでの基準上体姿勢軌道パラメータの決定の仕方と、S110bでのZMP軌道パラメータの決定の仕方とが、それぞれ、前記したS100a、S102a、S110aの処理と相違する。
S100bでは、歩容生成装置100は、今回歩容、第1旋回歩容、第2旋回歩容の順に足平位置姿勢軌道がつながるように、第1旋回歩容及び第2旋回歩容の初期及び終端のそれぞれにおける支持脚足平及び遊脚足平のそれぞれの位置姿勢、各旋回歩容の歩容周期から構成される足平軌道パラメータを決定する。このような足平軌道パラメータの決定指針はS100aと同じであるが、S100bでは、具体的には、足平軌道パラメータが例えば次のように決定される。なお、ここでは、理解の便宜上、一例として今回歩容が片脚ホッピング歩容であるとする。
すなわち、足平軌道パラメータのうち、第1旋回歩容初期遊脚足平位置姿勢は、次回歩容支持脚座標系から見た今回歩容終端遊脚足平位置姿勢とされる。
本実施形態では、今回歩容が片脚ホッピング歩容である場合、次回歩容支持脚座標系から見た今回歩容終端遊脚足平位置姿勢は、あらかじめ設定された所定の位置姿勢(空中に存在する位置姿勢。以降、片脚ホッピング歩容終端遊脚足平位置姿勢という)とされる。
また、第1旋回歩容初期支持脚足平位置姿勢は、次回歩容支持脚座標系から見た今回歩容終端支持脚足平位置姿勢とされる。この場合、本実施形態では、今回歩容が片脚ホッピング歩容である場合、次回歩容支持脚座標系から見た今回歩容終端支持脚足平位置姿勢は、次回歩容支持脚座標系に対応して定まる前記基本着地位置姿勢である。
第1旋回歩容終端遊脚足平位置姿勢は、次回歩容支持脚座標系から見た足平位置姿勢で表現され、この足平位置姿勢を次次回歩容支持脚座標系から見た位置姿勢に変換した場合に、前記片脚ホッピング歩容終端遊脚足平位置姿勢に一致するように設定される。
第1旋回歩容終端支持脚足平位置姿勢は、次回歩容支持脚座標系から見た足平位置姿勢で表現され、この足平位置姿勢を次次回歩容支持脚座標系から見た位置姿勢に変換した場合に、該次次回歩容支持脚座標系に対応して定まる前記基本着地位置姿勢(次次回歩容支持脚座標系の原点の位置とX軸及びY軸の向きとを規定する前記基本着地位置姿勢)に一致するように設定される。
第2旋回歩容初期遊脚足平位置姿勢は、次次回歩容支持脚座標系から見た第1旋回歩容終端遊脚足平位置姿勢(すなわち、前記片脚ホッピング歩容終端遊脚足平位置姿勢)とされる。
第2旋回歩容初期支持脚足平位置姿勢は、次次回歩容支持脚座標系から見た第1旋回歩容終端支持脚足平位置姿勢(すなわち、次次回歩容支持脚座標系の原点の位置とX軸及びY軸の向きとを規定する前記基本着地位置姿勢)とされる。
第2旋回歩容終端遊脚足平位置姿勢は、次次回歩容支持脚座標系から見た足平位置姿勢で表現され、次回歩容支持脚座標系から見た第1旋回歩容終端遊脚足平位置姿勢と一致するように設定される。
第2旋回歩容終端支持脚足平位置姿勢は、次次回歩容支持脚座標系から見た足平位置姿勢で表現され、次回歩容支持脚座標系から見た第1旋回歩容終端支持脚足平位置姿勢と一致するように設定される。
第1旋回歩容及び第2旋回歩容の歩容周期は、次回歩容周期と同一に設定される。
以上が、次回歩容の動作モードが片脚ホッピング動作モードである場合にS100で決定される足平軌道パラメータの例である。
また、S102bでは、定常歩容の基準上体姿勢軌道を規定する基準上体姿勢軌道パラメータが例えば次のように決定される。
本実施形態では、片脚ホッピング歩容を繰り返す定常歩容(以降、片脚ホッピング定常歩容ということがある)における基準上体姿勢角は一定値とされ、この一定値の基準上体姿勢角が基準上体姿勢軌道パラメータとして決定される。この基準上体姿勢角は、以下に説明する如く設定された姿勢角(傾斜角)である。
片脚ホッピング定常歩容の基準上体姿勢角のうち、Y軸周り(ピッチ方向)の成分(鉛直方向に対する上体24のY軸周りの傾斜角)は、“0”とされる。すなわち、そのY軸周りの成分は、XZ平面(サジタルプレーン)で見たロボット1の上体24の体幹軸の方向が鉛直方向となる姿勢角(ロボット1を直立姿勢で起立させた場合の上体姿勢角)に設定される。
一方、片脚ホッピング定常歩容の基準上体姿勢角のうち、X軸周り(ロール方向)の成分(鉛直方向に対する上体24のX軸周りの傾斜角)は、YZ平面(ラテラルプレーン)で見たロボット1の上体24の体幹軸の方向が鉛直方向からロボット1の右側又は左側に傾いたものとなる姿勢角に設定される。
具体的には、図34に示す如く、片脚ホッピング定常歩容の支持脚が右側脚体2Rである場合には、X軸周りの基準上体姿勢角は、該片脚ホッピング定常歩容の1周期の全期間において、上体24の体幹軸の方向が鉛直方向からX軸周りで正の向き(ロボット1の前方に向かって時計周りの向き)に、所定角度である図中の片脚ホッピング用ロール方向上体姿勢角だけ傾いたものとなる姿勢角に設定される。
また、片脚ホッピング定常歩容の支持脚が左側脚体2Lである場合には、X軸周りの基準上体姿勢角は、該片脚ホッピング定常歩容の1周期の全期間において、上体24の体幹軸が、鉛直方向からロール方向(X軸周り)で負の向き(ロボット1の前方に向かって反時計周りの向き)に上記片脚ホッピング用ロール方向上体姿勢角だけ傾いたものとなる姿勢角に設定される。
なお、本実施形態の説明では、上体24の体幹軸の方向が鉛直方向に一致する状態(上体姿勢が、ロボット1を直立姿勢で起立させた場合の上体姿勢に一致する状態)での基準上体姿勢角を“0”とする。
上記片脚ホッピング用ロール方向上体姿勢角は、以下に図35及び図36を参照して説明するような指針で設定されている。
図35は、片脚ホッピング歩容における空中期の後の支持脚(図示例では右側脚体2R)の着床状態において、仮に、上体24を傾けずに、上体姿勢角を“0”とした場合のロボット1の動作状態を示している。この動作状態は、図7に示した片脚ホッピング歩容における時刻t3とt4との間の時刻での動作状態に相当している。
片脚ホッピング歩容における空中期の後の支持脚の着床直後の状態においては、支持脚足平22(22R)の接地面からロボット1に作用する並進床反力の作用線は、図示の如く、ロボット1の全体重心Ga(ロボット1の全体の重心点Ga)の近くを通ることが必要となる。なぜなら、該作用線が全体重心Gaから大きく離れていると、全体重心Ga周りに床反力によるモーメントが発生し、ロボット1全体が大きく回転してしまうからである。
この状況において、図35に示す如く、仮に、上体24を傾けずに、上体姿勢角を“0”とした場合には、支持脚の股関節と、並進床反力の作用線との間のY軸方向(ロボット1の横方向)の距離Ofsが比較的大きなものとなる。
このため、支持脚の股関節には、概略鉛直方向の並進床反力によってロール方向(X軸周り)に比較的大きなモーメントが作用することとなる。特に、空中期の後の支持脚の着床後に、該支持脚を屈曲させることによってロボット1の全体重心Gaの高さが最も低くなる時刻付近(図7の時刻t4付近)での並進床反力が大きくなることから、上記モーメントも大きなものとなる。このため、支持脚の股関節に該モーメントに抗する比較的大きな駆動トルクを作用させることが必要となる。
そこで、本実施形態では、空中期の後の支持脚の着床状態で該支持脚の股関節に作用するモーメントを低減するために、片脚ホッピング歩容における上体24を、図36に示す如く傾斜させるものとした。この場合、より詳しくは、傾斜させた上体姿勢は、支持脚(図示例では右側脚体2R)の股関節よりも、遊脚(図示例では左側脚体2L)の股関節の方が相対的に高い位置になるように、上体24の体幹軸の方向を鉛直方向から傾斜させてなる上体姿勢である。
なお、支持脚が右側脚体2Rである場合には、支持脚の股関節よりも、遊脚の股関節の方が相対的に高い位置になるように、上体24の体幹軸を鉛直方向から傾斜させるということは、X軸周りで正の向きに(ロボット1の前方に向かって時計周りに)上体24の体幹軸を鉛直方向に対して傾斜させることによって実現される。支持脚が左側脚体2Lである場合には、支持脚の股関節よりも、遊脚の股関節の方が相対的に高い位置になるように、上体24の体幹軸を鉛直方向から傾斜させるということは、X軸周りで負の向きに(ロボット1の前方に向かって反時計周りに)上体24の体幹軸を鉛直方向に対して傾斜させることによって実現される。
このように、ロボット1の上体姿勢を、X軸周りで鉛直方向に対して傾斜させることによって、ロボット1の全体重心Gaが支持脚足平22の接地面のほぼ真上の位置に存在するように支持脚側脚体2の各関節を動作させた状態において、支持脚の股関節と、並進床反力の作用線との間のY軸方向(ロボット1の横方向)の距離Ofsを、上体姿勢角が“0”である場合(図35に示す場合)に比して、図36に示す如く小さくできることとなる。ひいては、並進床反力によって、支持脚の股関節に作用するモーメントを低減できることとなる。
図34に示した前記片脚ホッピング用ロール方向上体姿勢角は、上記の如く支持脚の股関節に作用するモーメントを低減し得るように設定された、X軸周りの上体姿勢角の基準目標値である。この片脚ホッピング用ロール方向上体姿勢角は、これにロボット1の上体姿勢角を一致させ、且つ、ロボット1の全体重心Gaが着床している支持脚足平22の接地面のほぼ真上の位置に存在するように支持脚側脚体2の各関節を動作させた場合に、上記距離Ofsが“0”、もしくは“0”近傍の所定範囲内の値になるようにあらかじめ設定されている。
なお、本実施形態では、片脚ホッピング定常歩容の基準上体姿勢角を該定常歩容の全期間において一定値としたが、該基準上体姿勢角を片脚ホッピング定常歩容の1周期の期間内で連続的に変化させるようにしてもよい。ただし、この場合、空中期の後の支持脚の着床状態となる期間内で(特に、ロボット1に作用する床反力鉛直成分の大きさが最大となる近辺の期間内で)、X軸周りの基準上体姿勢角が上記片脚ホッピング用ロール方向上体姿勢角もしくはそれに近い姿勢角となるように、X軸周りの基準上体姿勢角を変化させる。
また、S110bでは、支持多角形内に目標ZMPが存在すると共に、安定余裕が高く、かつ急激な変化をしないように目標ZMP軌道を規定するZMP軌道パラメータが決定される。このようなZMP軌道パラメータの決定指針はS110aと同じであるが、S100bでは、具体的には、ZMP軌道パラメータが例えば次のように決定される。
片脚ホッピング定常歩容の第1旋回歩容における目標ZMP軌道は、例えば図33の次回歩容支持脚座標系に対応する支持脚足平22(図示例では22R)と次次回歩容支持脚座標系に対応する支持脚足平22(図示例では22R)との間の目標ZMP軌道で示す如く決定される。なお、図33に示す目標ZMP軌道のうち、実線で示す部分は、支持脚足平22が着床している状態での目標ZMP軌道を示し、破線で示す部分は空中期での目標ZMP軌道を示している。
図33に示す例では、次回歩容支持脚座標系に対応する支持脚足平22(図示例では22R)の接地面内のほぼ中央の点が片脚ホッピング定常歩容の初期(第1旋回歩容の初期)の目標ZMPとして設定される。また、次次回歩容支持脚座標系に対応する支持脚足平22(図示例では22R)の接地面内のほぼ中央の点が第1旋回歩容の終端の目標ZMPとして設定される。そして、第1旋回歩容における目標ZMP軌道は、その初期の目標ZMPから終端の目標ZMPまでZMPの位置が連続的に変化していくように設定される。この場合、片脚支持期における目標ZMPは、該片脚支持期の一部の期間(例えば片脚支持期の開始直後の期間)において、一定に保つようにしてもよい。
図示は省略するが、片脚ホッピング定常歩容の第2旋回歩容における目標ZMP軌道も上記と同様に設定される。
この場合、第1旋回歩容及び第2旋回歩容のそれぞれの初期及び終端における目標ZMPや、空中期の開始直前(片脚支持期の終了直前)の目標ZMP等が、片脚ホッピング定常歩容のZMP軌道パラメータとして決定される。
S062bにおける図16のフローチャートの処理は、上記S100b、S102b、S110bの処理以外の処理は、S062aでの処理と同様である。
図12に戻って、歩容生成装置100は、次に、S064bにおいて、定常旋回歩容の初期状態を決定する。このS064bでは、S064aの処理と同様に図20〜図23に示したフローチャートの処理が実行される。
次いで、歩容生成装置100は、次にS066bにおいて、今回歩容の歩容パラメータを仮決定する。S066bの処理は、図25に示すフローチャートに従って実行される。ここでは、一例として、今回歩容が走行歩容である場合と片脚ホッピング歩容である場合とについて、図25のフローチャートの処理を説明する。
まず、S600bにおいて、歩容生成装置100は、今回歩容の足平位置姿勢軌道が定常歩容の足平位置姿勢軌道に連続的につながるように、今回歩容の足平軌道パラメータを決定する。この足平軌道パラメータの決定の仕方は、今回歩容が走行歩容である場合と片脚ホッピング歩容である場合とのいずれの場合であってもS600aの処理と同様である。
次いで、S602bにおいて、歩容生成装置100は、今回歩容の基準上体姿勢軌道が、定常歩容の基準上体姿勢軌道に連続的につながるように、今回歩容の基準上体姿勢軌道パラメータを決定する。
この処理では、今回歩容が片脚ホッピング歩容である場合には、今回歩容の基準上体姿勢軌道パラメータは、今回歩容の基準上体姿勢角を、片脚ホッピング定常歩容における基準上体姿勢角と同一の一定値に維持するように決定される。すなわち、X軸周りの基準上体姿勢角及びY軸周りの基準上体姿勢角は、それぞれ、前記片脚ホッピング用ロール方向上体姿勢角、“0”とされ、これらの値が今回歩容の基準上体姿勢軌道パラメータとして決定される。
また、今回歩容が走行歩容である場合には、今回歩容の基準上体姿勢軌道パラメータは、今回歩容の基準上体姿勢角を、両脚交互離床・着床歩容用の基準上体姿勢角(詳しくは、定常歩容が両脚交互離床・着床歩容である場合の基準上体姿勢角)から、片脚ホッピング歩容用の基準上体姿勢角(詳しくは、定常歩容が片脚ホッピング定常歩容である場合の基準上体姿勢角)に連続的に変化させていくように決定される。
この場合、本実施形態では、両脚交互離床・着床歩容用の基準上体姿勢角のY軸周りの成分と、片脚ホッピング歩容用の基準上体姿勢角のY軸周りの成分とは、いずれも“0”であるので、今回歩容の基準上体姿勢角のY軸周りの成分は“0”に維持される。
一方、両脚交互離床・着床歩容用の基準上体姿勢角のX軸周りの成分と、片脚ホッピング歩容用の基準上体姿勢角のX軸周りの成分とは、それぞれ“0”、片脚ホッピング用ロール方向上体姿勢角(≠0)であるので、今回歩容の基準上体姿勢角のY軸周りの成分は、例えば、図37に示す如く、“0”から片脚ホッピング用ロール方向上体姿勢角まで連続的に変化するように設定される。
補足すると、次回歩容の動作モードを両脚交互離床・着床動作モードと仮定する前記S040の中のS602aの処理において、今回歩容の動作モードが例えば片脚ホッピング歩容である場合には、今回歩容の基準上体姿勢軌道パラメータは、今回歩容の基準上体姿勢角を片脚ホッピング歩容用の基準上体姿勢角から両脚交互離床・着床歩容用に基準上体姿勢角まで連続的に変化させていくように決定される。従って、この場合の今回歩容の基準上体姿勢角のX軸周り成分は、図37の場合と逆に、図38に示す如く片脚ホッピング用ロール方向上体姿勢角から“0”まで連続的に変化するように設定される。なお、この場合の今回歩容の基準上体姿勢角のY軸周り成分は“0”に維持される。
次いで、S604bに進み、歩容生成装置100は、今回歩容の腕姿勢軌道パラメータを決定する。この処理は、今回歩容が走行歩容である場合と、今回歩容が片脚ホッピング歩容である場合とのいずれの場合でも、S604aと同様である。
次いで、S606bに進み、歩容生成装置100は、今回歩容の床反力鉛直成分軌道パラメータを決定する。この処理は、今回歩容が走行歩容である場合と、今回歩容が片脚ホッピング歩容である場合とのいずれの場合でも、今回歩容が走行歩容である場合の例について先に説明したS606aの処理と同様である。
次いで、S608bに進み、歩容生成装置100は、床反力水平成分許容範囲[Fxmin,Fxmax](具体的には該床反力水平成分許容範囲のパターンを規定するパラメータ)を決定する。この処理では、S608aの処理と同様に、S606bで決定した床反力鉛直成分軌道から、前記式12a,12bに基づいて床反力水平成分許容範囲が決定される。
次いで、S610bに進み、歩容生成装置100は、今回歩容のZMP軌道を規定するZMP軌道パラメータを仮決定する。この処理では、該ZMP軌道パラメータは、これにより規定される目標ZMPが、安定余裕が高く、且つ急激に変化しないようにしつつ、前回歩容の終端での目標ZMPから、定常歩容の初期の目標ZMPまで、今回歩容における支持多角形内で連続的に変化するように仮決定される。
具体的には、一例として、今回歩容が走行歩容である場合には、今回歩容の目標ZMP軌道は、前記S610bの処理に関して説明した如く設定される。例えば今回歩容の目標ZMP軌道のX軸方向位置は、図28に例示したようなパターンで決定される。そして、その目標ZMP軌道の折れ点の位置や時刻が、今回歩容の目標ZMP軌道パラメータとして決定される。
また、今回歩容が片脚ホッピング歩容である場合には、例えば図33の今回歩容支持脚座標系に対応する支持脚足平22(図示例では22R)と次回歩容支持脚座標系に対応する支持脚足平22(図示例では22R)との間の目標ZMP軌道で示す如く決定される。
この例では、前回歩容は、両脚交互離床・着床歩容であり、今回歩容の片脚支持期では、目標ZMPは、支持脚足平22(22R)の踵寄りの位置(前回歩容の終端での目標ZMPの位置)から、該支持脚足平22の接地面の右前寄りの位置に向かって連続的に移動するように設定される。そして、空中期では、目標ZMPは、支持脚足平22の接地面の右前寄りの位置から、次回歩容支持脚座標系に対応する支持脚足平22(22R)の接地面内のほぼ中央の点(定常歩容の初期の目標ZMPの位置)まで連続的に移動していくように設定される。この場合、片脚支持期における目標ZMPは、該片脚支持期の一部の期間において、一定に保つようにしてもよい。
そして、このように設定される目標ZMP軌道における片脚支持期の終了直前の目標ZMPの位置等が、今回歩容のZMP軌道パラメータとして決定される。
なお、上記の如くS610bで決定されるZMP軌道パラメータにより規定される目標ZMP軌道は、S610aで決定されるものと同様に、今回歩容の仮目標ZMP軌道である。
次いで、S612bに進み、歩容生成装置100は、上体姿勢復元期間[Ta,Tb]を決定する。この処理は、S612aの処理と同様である。上体姿勢復元期間の開始時刻Taは、定常歩容の第2旋回歩容におけるTmに相当し、上体姿勢復元期間の終了時刻Tbは、定常歩容の第2旋回歩容におけるTs2に相当するものである。これらの時刻Ta,Tbの設定の仕方は、それぞれTm及びTs2の設定の仕方と同様である。従って、上体姿勢復元期間[Ta,Tb]は、図26に例示する如く決定される。
以上がS066bで実行される処理である。
図12に戻って、上記のごとくS066bの処理(今回歩容の歩容パラメータを決定もしくは仮決定する処理)を行った後、次いでS068bに進み、歩容生成装置100は、今回歩容の歩容パラメータを修正する(今回歩容パラメータを確定する)。ここで修正する歩容パラメータは、前記仮目標ZMP軌道を規定するZMP軌道パラメータである。このS068の処理では、今回歩容の上体位置姿勢軌道を定常歩容に連続させ、もしくは漸近させるべくZMP軌道パラメータが修正される。
このS068bでは、今回歩容が走行歩容である場合と片脚ホッピング歩容である場合とのいずれの場合であっても、S068aと同様に図29〜図32のフローチャートに示す処理によって、前記運動継続性必要条件を満足するように(今回歩容の終端発散成分が定常歩容の初期発散成分に一致もしくはほぼ一致するように)、仮目標ZMP軌道が修正され、今回歩容パラメータが確定される。
次いで、S070bに進み、歩容生成装置100は、修正後の目標ZMP軌道が、ZMP存在許容領域条件を満足するか否かを、S070aと同様に判断する。そして、この判断結果が肯定的である場合には、S072bに進み、歩容生成装置100は、適切な今回歩容を生成できるとして、前記フラグの値を改めて“1”に設定する。
また、S070bの判断結果が否定的である場合には、S074bに進み、歩容生成装置100は、前記幾何学的脚体運動必要条件を満足し得る範囲内で、前記ZMP存在許容領域条件と運動継続性必要条件とを満足させるように次回歩容の支持脚足平22の目標着地位置を変更可能が否かを判断する。この判断処理は、前記S074aと同様に行なわれる。
そして、このS074bの判断結果が肯定的となる場合には、S076bに進み、歩容生成装置100は、適切な今回歩容を生成できるとして、前記フラグの値を改めて“1”に設定する。
また、S074bの判断結果が否定的となる場合には、S078bに進み、歩容生成装置100は、適切な今回歩容を生成することができないとして、前記フラグの値を改めて“0”に設定する。
以上が、S046の中で実行される図12のフローチャートの処理の詳細である。
図11に戻って、上記の如くS046の処理を実行した後、次に、歩容生成装置100は、S048の判断処理を実行する。すなわち、歩容生成装置100は、S046で設定されたフラグの値によって、適切な今回歩容を生成可能であるか否かを判断する。そして、この判断結果が肯定的である場合(フラグの値が“1”である場合)には、S050に進む。このS050では、歩容生成装置100は、次回歩容の動作モードを片脚ホッピング動作モードに決定する。
また、S048の判断結果が否定的である場合は、次回歩容の動作モードを両脚交互離床・着床動作モード及び片脚ホッピング動作モードのいずれの動作モードに決定しても、前記幾何学的脚体運動必要条件、ZMP存在許容領域条件、運動継続性必要条件を満足させるような今回歩容を生成することができない場合である。
そこで、この場合には、歩容生成装置100は、S052において、次回歩容の動作モードを非常用動作モードに決定する。
以上により図10のS020の処理が終了し、次回歩容の動作モードが決定される。
図10に戻って、S020の処理の次に、歩容生成装置100は、S022の判断処理を実行する。この処理では、歩容生成装置100は、今回歩容の動作モード(前回歩容の生成時に、最終的に決定された動作モード)が非常用動作モードであるか否かを判断する。なお、ロボット1の移動開始時における初期の動作モードは、例えば両脚交互離床・着床動作モードとされる。
そして、S022の判断結果が肯定的である場合には、歩容生成装置100は、図10のフローチャートの処理を中止し、非常用歩容の生成処理を行なう。この非常用歩容の生成処理では、歩容生成装置100は、例えば、両脚体2,2を速やかに着床させ、さらに、図8に示した如く、両脚体2,2をそれぞれの膝関節で折り曲げることによって、ロボット1の全体重心を下降させるようなロボット1の目標運動を生成する。
一方、S022の判断結果が否定的である場合、すなわち、今回歩容の動作モードが両脚交互離床・着床動作モード又は片脚ホッピング動作モードである場合には、S026に進み、歩容生成装置100は、今回歩容の歩容パラメータを決定する。
この場合、S026では、S020の処理の中で、前記幾何学的脚体運動必要条件、ZMP存在許容領域条件、運動継続性必要条件を満足させ得る適切な今回歩容を生成し得るものとして最終的に確定された今回歩容パラメータが、そのまま、S026で今回歩容パラメータとして決定される。すなわち、図12のS070又はS074の判断結果が肯定的となる直前に決定された最新の今回歩容パラメータ(前記上体姿勢復元期間[Ta,Tb]を含む)が、そのまま、S026で今回歩容パラメータとして決定される。
次いで、S028に進み、歩容生成装置100は、今回歩容の初期から終端までの各時刻での目標ZMPまわりの床反力モーメント(より詳しくは床反力モーメントの水平成分)の許容範囲を規定する床反力モーメント許容範囲パラメータを決定する。この床反力モーメント許容範囲パラメータにより規定される床反力モーメントの許容範囲は、前記補償全床反力モーメント分配器110において、前述の如く使用されるものである。
この場合、目標ZMP周りの床反力モーメントを、床反力鉛直成分で割ったものが、ZMP(床反力中心点)の目標ZMPからのずれ量に相当するものとなる。そこで、S028では、歩容生成装置100は、例えば、この関係に基づいて、床反力モーメント許容範囲パラメータを決定する。すなわち、歩容生成装置100は、S026で決定した今回歩容パラメータの足平軌道パラメータに応じて決定される前記支持多角形内のZMP存在許容領域と、該今回歩容の床反力鉛直成分軌道パラメータにより規定される目標床反力鉛直成分軌道と、該今回歩容のZMP軌道パラメータにより規定される目標ZMP軌道とから、上記の関係に基づいて、今回歩容の各時刻でのZMP存在許容領域を床反力モーメント許容範囲に変換することで、床反力モーメント許容範囲パラメータを決定する。
なお、床反力モーメント許容範囲は、ロボット1の接地面(床面との接触面)に依存して規定される支持多角形だけでなく、床形状や床の性状(床の硬さ等)を考慮して決定するようにしてもよい。
次いで、S030に進み、歩容生成装置100は、今回歩容瞬時値(現在の制御周期での今回歩容の目標足平位置姿勢等の瞬時値)を決定する。このS030では、前記補償全床反力モーメント分配器110から入力されるモデル操作床反力モーメントが目標ZMPまわりに発生するように今回歩容瞬時値が決定される。
具体的には、S030では、歩容生成装置100は、図31のS900からS910までと同一の処理を実行し、次いで、S912のサブルーチン処理である図32のS1000〜S1026の処理を実行する。但し、この場合、S030の処理の中で実行される図32のS1016においては、上体姿勢復元モーメントZMP換算値(ZMPrec)のパターンとして、前記S020の中で、最終的に図29のS718の処理によって決定された最新の上体姿勢復元モーメントZMP換算値(ZMPrec)のパターン(図12のS070又はS074の判断結果が肯定的となる直前に決定された最新のZMPrecのパターン)が設定される。
次いで、歩容生成装置100は、図31のS914と同一の処理を実行し、これにより、図10のS030の処理が完了する。
なお、S030の処理の中での時刻Tkは、歩容生成装置100の現在の制御周期(今回制御周期)の時刻tである。
次いでS032に進み、歩容生成装置100は、スピン力をキャンセルする(ロボット1の腕体以外の運動によって目標ZMP周りに発生する床反力モーメント鉛直成分(Z軸周り成分)を“0”又はほぼ“0”にする)ための腕振り動作(左右の腕体を前後逆方向に振る運動)を決定する。
具体的には、腕体の腕振り動作を行なわないように今回歩容を生成したと仮定した場合の床反力モーメント鉛直成分軌道(厳密には、腕体を振らずに今回歩容を生成した場合において、ロボット1の運動によって発生する慣性力とロボット1に作用する重力との合力が目標ZMPに作用するモーメント鉛直成分軌道の各瞬時値の符号を反転したもの)が求められる。
すなわち、S030の処理によって生成された今回歩容の運動(これには腕振り動作は含まれていない)によって目標ZMP周りに発生する慣性力モーメント鉛直成分の瞬時値に釣り合う床反力モーメント鉛直成分の瞬時値が算出される。そして、この床反力モーメント鉛直成分の瞬時値を、腕振り動作の等価慣性モーメントで除算することにより、スピン力をキャンセルするのに必要な腕振り動作の角加速度が求められる。なお、腕の振りが大きくなり過ぎる場合には、床反力モーメント鉛直成分の瞬時値を、腕振り動作の等価慣性モーメントよりも大きな値で除算することによって、腕振り動作の角加速度を求めるようにしてもよい。
次に、歩容生成装置100は、この腕振り動作の角加速度を2階積分し、この積分値をローカットフィルタに通すことによって得られる角度を腕振り動作角とする。これにより、腕振り動作を含む両腕体の姿勢が決定されることとなる。但し、腕振り動作では、左右の腕体を前後逆方向に振り、両腕体の重心位置を変化させないようにする。
なお、スピン力をキャンセルするための腕振り動作を定常歩容でも生成しておき、これにつながるように、今回歩容における腕振り動作を決定するようにしてもよい。
次いでS034に進み、歩容生成装置100は、歩容生成用時刻tをΔt(歩容生成装置100の制御周期)だけ増やし、S014からの処理を再び実行する。
以上が、歩容生成装置100における目標歩容の生成処理である。
以上説明した本実施形態によれば、両脚交互離床・着床動作モードでロボット1の運動(移動)を行なっている時に逐次実行されるS040の判断処理によって、両脚交互離床・着床動作モードでのロボット1の運動を継続したと仮定した場合に、両脚交互離床・着床動作モードでロボット1の運動を継続させ得る適切な目標歩容(前記幾何学的脚体運動必要条件、運動継続性必要条件及びZMP存在許容領域条件を満足し得る今回歩容)を生成することができるか否かが判断される。そして、この判断結果が肯定的となる場合には、次回歩容の動作モードが今回歩容と同じ両脚交互離床・着床動作モードに維持され、両脚交互離床・着床動作モードに対応する両脚交互離床・着床歩容が生成される。
また、上記判断結果が否定的となる場合には、S046の判断処理によって、今回歩容の終了後にロボット1の動作モードを両脚交互離床・着床動作モードから片脚ホッピング動作モードに変更したと仮定した場合に、ロボット1の運動を継続させ得る適切な目標歩容(前記幾何学的脚体運動必要条件、運動継続性必要条件及びZMP存在許容領域条件を満足し得る今回歩容)を生成することができるか否かが判断される。そして、この判断結果が肯定的となる場合には、次回歩容の動作モードが片脚ホッピング動作モードに設定され、両脚交互離床・着床歩容から片脚ホッピング歩容に円滑に移行させていくように(歩容の瞬時値の系列が滑らかに連続するように)、今回歩容が生成される。
また、ロボット1の動作モードが片脚ホッピング動作モードに変更された後に、該片脚ホッピング動作モードでロボット1の運動(移動)を行なっている時には、S040の判断処理によって、今回歩容の終了後にロボット1の動作モードを片脚ホッピング動作モードから両脚交互離床・着床動作モードに戻したと仮定した場合に、ロボット1の運動を継続させ得る適切な目標歩容(前記幾何学的脚体運動必要条件、運動継続性必要条件及びZMP存在許容領域条件を満足し得る今回歩容)を生成することができるか否かが判断される。そして、この判断結果が肯定的となる場合には、次回歩容の動作モードが両脚交互離床・着床動作モードに設定され、片脚ホッピング歩容から両脚交互離床・着床歩容に円滑に移行させていくように(歩容の瞬時値の系列が滑らかに連続するように)、今回歩容が生成される。
また、上記判断結果が否定的となる場合には、S046の判断処理によって、片脚ホッピング動作モードでのロボット1の運動を継続したと仮定した場合に、片脚ホッピング動作モードでロボット1の運動を継続させ得る適切な目標歩容(前記幾何学的脚体運動必要条件、運動継続性必要条件及びZMP存在許容領域条件を満足し得る今回歩容)を生成することができるか否かが判断される。そして、この判断結果が肯定的となる場合には、次回歩容の動作モードが今回歩容と同じ片脚ホッピング動作モードに維持され、片脚ホッピング動作モードに対応する片脚ホッピング歩容が生成される。
そして、以上の如く生成される歩容に追従させるように、前記複合コンプライアンス動作決定部104、ロボット幾何学モデル(キネマティクス演算部)102、及び関節変位コントローラ108を介してロボット1の動作制御が行われる。
以上により本実施形態によれば、両脚交互離床・着床動作(歩行動作又は走行動作)というロボット1の標準的な移動動作によって、該ロボット1の姿勢を崩したりすることなく、該ロボット1の運動を適切に継続することが困難となると判断される状況で、且つ、ロボット1の動作モードを両脚交互離床・着床動作モードから片脚ホッピング動作モードに変更すれば、該ロボット1の運動を適切に継続することできると判断される状況では、両脚交互離床・着床歩容から片脚ホッピング歩容に移行させるように、ロボット1の目標歩容が生成されることとなる。このため、両脚交互離床・着床動作(歩行動作又は走行動作)によって、ロボット1の運動を適切に継続することが困難となると判断される状況でも、ロボット1の姿勢が崩れてしまったり、該ロボット1の運動を強制的に停止させたりすることなく、可能な限り、ロボット1の運動を安定した姿勢で継続することができる。
また、ロボット1の動作モードを片脚ホッピング動作モードに変更した後に、該動作モードを両脚交互離床・着床動作に戻しても、ロボット1の姿勢を崩したりすることなく、該ロボット1の運動を適切に継続することができると判断される状況では、片脚ホッピング歩容から両脚交互離床・着床歩容に移行させるように、ロボット1の目標歩容が生成される。このため、ロボット1の片脚ホッピング動作を一時的なものとして、安定感の高い歩行動作又は走行動作でロボット1が移動することとなる頻度を高めることができる。
また、前記S040又はS046の判断処理では、脚体2の着地位置を幾何学的着地許容領域内の位置に制限することを要求する幾何学的脚体運動必要条件と、今回歩容のロボット1の目標運動軌道が周期的歩容である定常歩容の運動の収束させ得る運動軌道となることを要求する運動継続性必要条件と、目標ZMPが支持多角形内のZMP存在許容領域内の位置に制限することを要求するZMP存在許容領域条件を満足し得る今回歩容を生成できる場合に、ロボット1の運動を継続し得る適切な目標歩容を生成することができると判断するので、ロボット1の脚体2,2の幾何学的な(運動学的な)制約条件や、ロボット1の運動の継続性を確保するための要件、ZMPに関する動力学的な制約を、それぞれ上記幾何学的脚体運動必要条件、運動継続性必要条件、ZMP存在許容領域条件を適切に反映させて、適切な目標歩容を生成することができるか否かを判断することができる。このため、この判断結果の信頼性を高めることができる。ひいては、ロボット1の動作モードの変更を、適切なタイミング、あるいは状況で行なうことができる。
また、ロボット1の動作モードを変更する場合には、次回歩容から動作モードを変更することを前提として、換言すれば、次回歩容で支持脚となる脚体2のの着地後に動作モードを変更することを前提として、今回歩容を生成するので、ロボット1の目標運動が急激に変化するようなことを回避することができる。ひいては、該ロボット1の目標運動を動作モードの変更前の運動から、変更後の運動に滑らかに連続させるように、該ロボット1の目標歩容を生成することができる。
また、本実施形態では、特に、片脚ホッピング動作モードでのロボット1の運動に関して次のような効果を奏することもできる。
すなわち、ロボット1が片脚ホッピング動作モードで片脚ホッピング動作を行なう場合に、ロール方向の(X軸周りの)基準上体姿勢角として、図34及び図36に示した片脚ホッピング用ロール方向上体姿勢角が設定される。このため、空中期の後の支持脚の着床状態におけるロール方向の目標上体姿勢角は、基準上体姿勢角としての片脚ホッピング用ロール方向上体姿勢角に一致するか、もしくはこれに近い姿勢角に決定されることとなる。ここで、空中期の後の支持脚の着床状態におけるロール方向の目標上体姿勢角が必ずしも基準上体姿勢角に一致しないのは、水平床反力許容範囲を満足させるために、基準上体姿勢角から修正されるためである。
従って、片脚ホッピング動作の空中期の後の支持脚の着床状態において、目標上体姿勢角は、図36に示す如く、支持脚側脚体2の基端部(股関節)よりも遊脚側脚体2の基端部(股関節)が相対的に高い位置になるように上体24が傾斜する姿勢角となる。このため、ロボット1の全体重心Gaが、支持脚側脚体2の股関節の直上位置もしくはそれに近い位置に存在するようにロボット1の目標歩容(片脚ホッピング歩容)が生成されることとなる。
また、目標ZMPが支持脚の着床状態において支持脚足平22の接地面内の位置に設定されるので、支持脚側脚体2の着床直後の上記全体重心Gaは、平均的には、支持脚足平22の接地面のほぼ直上に位置することとなる。
この結果、この目標歩容(片脚ホッピング歩容)に追従させるようにロボット1の動作制御を行うことで、片脚ホッピング動作の空中期の直後の支持脚側脚体2の着床動作時に、ロボット1の動力学的平衡条件を満たしつつ、支持脚側脚体2の股関節に大きなモーメント(X軸周りのモーメント)が作用するのを防止することができる。ひいては、該股関節の関節アクチュエータ(本実施形態では電動モータ42)の負担を軽減し、該関節アクチュエータや股関節の小型化あるいは軽量化を図ることができると共に、該関節アクチュエータや股関節の耐久性を高めることができる。
ここで、以上説明した本実施形態と本発明との対応関係について補足しておく。
本実施形態では、図11のS040の処理によって、本発明における第1判断手段又は第3判断手段が実現される。より詳しくは、今回歩容の動作モードが両脚交互離床・着床動作モードである場合におけるS040の判断処理によって、本発明における第1判断手段が実現され、今回歩容の動作モードが片脚ホッピング動作モードである場合におけるS040の判断処理によって、本発明における第3判断手段が実現される。
この場合、今回歩容の動作モードが両脚交互離床・着床動作モードである場合に、次回歩容の動作モードが両脚交互離床・着床動作モードであることを仮定した場合における前記幾何学的脚体運動必要条件、運動継続性必要条件、ZMP存在許容領域条件がそれぞれ本発明における第1A条件、第1B条件、第1C条件に相当し、これらの条件の組によって、本発明における第1条件が構成される。また、前記図13(a)又は(b)に示した幾何学的着地許容領域が、第1A条件に係わる所定の着地許容領域に相当する。
また、今回歩容の動作モードが片脚ホッピング動作モードである場合に、次回歩容の動作モードが両脚交互離床・着床動作モードであることを仮定した場合における前記幾何学的脚体運動必要条件、運動継続性必要条件、ZMP存在許容領域条件がそれぞれ本発明における第3A条件、第3B条件、第3C条件に相当し、これらの条件の組によって、本発明における第3条件が構成される。また、前記図14に示した幾何学的着地許容領域が、第3A条件に係わる所定の着地許容領域に相当する。
また、本実施形態では、図11のS046の処理によって、本発明における第2判断手段又は第4判断手段が実現される。より詳しくは、今回歩容の動作モードが両脚交互離床・着床動作モードである場合におけるS046の判断処理によって、本発明における第2判断手段が実現され、今回歩容の動作モードが片脚ホッピング動作モードである場合におけるS046の判断処理によって、本発明における第4判断手段が実現される。
この場合、今回歩容の動作モードが両脚交互離床・着床動作モードである場合に、次回歩容の動作モードが片脚ホッピング動作モードであることを仮定した場合における前記幾何学的脚体運動必要条件、運動継続性必要条件、ZMP存在許容領域条件がそれぞれ本発明における第2A条件、第2B条件、第2C条件に相当し、これらの条件の組によって、本発明における第2条件が構成される。また、前記図13(a)又は(b)に示した幾何学的着地許容領域が、第2A条件に係わる所定の着地許容領域に相当する。
また、今回歩容の動作モードが片脚ホッピング動作モードである場合に、次回歩容の動作モードが片脚ホッピング動作モードであることを仮定した場合における前記幾何学的脚体運動必要条件、運動継続性必要条件、ZMP存在許容領域条件がそれぞれ本発明における第4A条件、第4B条件、第4C条件に相当し、これらの条件の組によって、本発明における第4条件が構成される。また、前記図14に示した幾何学的着地許容領域が、第4A条件に係わる所定の着地許容領域に相当する。
また、本実施形態では、図11のS044、S050及びS052の処理によって、本発明における動作モード決定手段が実現される。
また、本実施形態では、歩容生成装置100によって(より詳しくは歩容生成装置100が制御周期毎に逐次実行する図10のS022〜S032の処理によって)、本発明における目標歩容生成手段が実現される。
なお、以上説明した実施形態では、歩容生成用の動力学モデルは、図9に示した動力学モデルに限られるものではない。例えば、ロボット1の各リンクに質点を有するような多質点モデルを動力学モデルとして使用してもよい。歩容生成用の動力学モデルは、両脚交互離床・着床動作や片脚ホッピング動作等におけるロボット1の動力学を適切に表現し得るものであれば、その他の動力学モデルを使用してもよい。
あるいは、例えば特許第4246538号等にて本願出願人が開示している歩容生成技術のように、比較的単純な動力学モデルを使用して、目標歩容を生成した後、その目標歩容をより厳密な動力学モデルを用いて補正することによって、両脚交互離床・着床動作歩容と片脚ホッピング歩容とを含めた種々の目標歩容を生成するようにしてもよい。
また、前記実施形態では、モデル操作床反力モーメントを歩容生成装置100フィードバックして、このモデル操作床反力モーメントをロボット1の動力学モデル上で該ロボット1に付加的に作用させるようにしたが、このモデル操作床反力モーメントを省略するようにしてもよい。
また、前記実施形態では、運動を継続し得る適切な目標歩容を生成できるか否かを判断するための条件(本発明における第1〜第4条件)として、幾何学的脚体運動必要条件、運動継続性必要条件、ZMP存在許容領域条件の組を使用したが、これら以外の条件を使用したり、あるいは、さらなる条件を付加するようにしてもよい。運動を継続し得る適切な目標歩容を生成できるか否かの条件は、ロボットの構造や、歩容の生成アルゴリズムの形態、ロボットの動作環境などを勘案して、適宜設定すればよい。