[第1実施形態]
以下、脚式移動ロボットとして2足移動ロボットを例にとって、本発明の第1実施形態を説明する。
図1に示す如く、本実施形態の2足移動ロボット1(以下、単にロボット1という)は、基体としての上体24と、この上体24を床面上で移動させる移動機構として該上体24から延設された左右一対の脚体2,2とを備える。
上体24は、両脚体2,2の基端部(上端部)に後述する腰関節(股関節)を介して連結されており、両脚体2,2のうちの接地した脚体によって床面の上方に支持される。
両脚体2,2は同一構造であり、それぞれ6個の関節を備える。その6個の関節は上体24側から順に、腰(股)の回旋用(上体24に対するヨー方向の回転用)の関節10R,10Lと、腰(股)のロール方向(X軸まわり)の回転用の関節12R,12Lと、腰(股)のピッチ方向(Y軸まわり)の回転用の関節14R,14Lと、膝部のピッチ方向の回転用の関節16R,16Lと、足首部のピッチ方向の回転用の関節18R,18Lと、足首部のロール方向の回転用の関節20R,20Lとから構成される。
なお、本実施形態の説明では、符号R,Lはそれぞれ右側脚体、左側脚体に対応するものであることを意味する。また、X軸、Y軸、Z軸は、後述する支持脚座標系の3つの座標軸を意味する。この支持脚座標系のX軸方向、Y軸方向は、水平面上で互いに直交する2軸方向であり、X軸方向はロボット1の前後方向(ロール軸方向)、Y軸方向はロボット1の左右方向(ピッチ軸方向)に相当する。また、Z軸方向は鉛直方向(重力方向)であり、ロボット1の上下方向(ヨー軸方向)に相当する。
各脚体2の関節10R(L),12R(L),14R(L)によって3自由度の腰関節(股関節)が構成され、関節16R(L)によって1自由度の膝関節が構成され、関節18R(L),20R(L)によって2自由度の足首関節が構成されている。
そして、腰関節(股関節)10R(L),12R(L),14R(L)と膝関節16R(L)とは大腿リンク32R(L)で連結され、膝関節16R(L)と足首関節18R(L),20R(L)とは下腿リンク34R(L)で連結されている。また、各脚体2の足首関節18R(L),20R(L)の下部に、各脚体2の先端部(下端部)を構成する足平22R(L)が取着されている。また、各脚体2の上端部(基端部)が、腰関節(股関節)10R(L),12R(L),14R(L)を介して上体24に連結されている。
上記した各関節は、例えば本願出願人が特開平3−184782号などにて提案した公知の構造のものでよい。この場合、各関節を回転駆動するアクチュエータは、減速機を備える電動モータ42(図2参照)により構成される。
各脚体2の上記構成により、各脚体2の足平22R(L)は、上体24に対して6自由度を有する。そして、ロボット1の移動に際して両脚体2,2を合わせて6*2=12個(この明細書で「*」はスカラに対する演算においては乗算を示し、ベクトルに対する演算においては外積を示す)の関節をそれぞれ適宜な角度に駆動することで、両足平22R,22Lの所望の運動を行なうことができる。これにより、ロボット1は歩行動作や走行動作等、3次元空間を移動する運動を行うことが可能となっている。
なお、図示は省略するが、本実施形態では、上体24の上部の両側部には左右一対の腕体が取り付けられると共に、上体24の上端部には頭部が搭載される。そして、各腕体は、それに備える複数の関節(肩関節、肘関節、手首関節など)によって、該腕体を上体24に対して前後に振る等の運動を行なうことが可能となっている。ただし、これらの腕体および頭部は無くてもよい。
上体24の内部にはロボット1の動作制御を行う制御ユニット26が格納されている。なお、図1では図示の便宜上、制御ユニット26を上体24の外部に記載している。
各脚体2の足首関節18R(L),20R(L)と足平22R(L)との間には6軸力センサ36が介装されている。この6軸力センサ36は、床から足平22R(L)を介して各脚体2に伝達される床反力の3軸方向の並進力成分及び3軸まわりのモーメント成分を検出し、その検出信号を制御ユニット26に出力する。
上体24には、鉛直方向(重力方向)に対する上体24の傾斜角(ロール方向及びピッチ方向の傾斜角)とその変化速度(角速度)とを計測するための傾斜センサ40が搭載されている。この傾斜センサ40は、より詳しくは、加速度センサとジャイロセンサ等のレートセンサ(角速度センサ)とから構成され、これらのセンサの検出信号を制御ユニット26に出力する。そして、制御ユニット26において、傾斜センサ40の出力を基に、公知の手法によって鉛直方向に対する上体24の傾斜角と角速度とが計測される。
また、各関節を回転駆動する電動モータ42(図2参照)には、各関節の回転角を検出するためのエンコーダ(ロータリエンコーダ)44(図2参照)が付設され、該エンコーダ44の検出信号が制御ユニット26に出力される。
図2を参照して、制御ユニット26はマイクロコンピュータを有する電子回路ユニットにより構成されており、CPUからなる第1演算装置50及び第2演算装置52、A/D変換器54、カウンタ56、D/A変換器58、RAM60、ROM62、並びにこれらの間のデータ授受を行なうバスライン64を備えている。
この制御ユニット26では、前記6軸力センサ36及び傾斜センサ40の出力はA/D変換器54でデジタル値に変換された後、バスライン64を介してRAM60に入力される。また、ロボット1の各関節のエンコーダ(ロータリエンコーダ)44の出力はカウンタ56を介してRAM60に入力される。
前記第1の演算装置50は、後述する目標歩容を生成すると共に、関節変位指令(各関節の回転角の目標値)を算出し、RAM60に送出する。また、第2の演算装置52はRAM60から関節変位指令と、前記エンコーダ44の出力からカウンタ56を介して計測された実関節変位(各関節の回転角の実測値)とを読み出し、該実関節変位を関節変位指令に追従させるために必要な各関節の電動モータ42の駆動指令(電動モータ42の出力トルクを規定する指令値)を算出する。
そして、第2の演算装置52は、その算出した駆動指令をD/A変換器58を介して電動モータ42の駆動用のサーボアンプ46に出力する。このとき、サーボアンプ46は、入力された駆動指令に応じて電動モータ42を駆動する(電動モータ42に通電する)。これにより、各関節の実関節変位が関節変位指令に追従するように制御される。
次に、図3を参照して、本実施形態におけるロボット1の制御装置の動作の概要を説明する。図3中の「実ロボット」以外の部分が制御ユニット26が実行する処理(主として第1の演算装置60及び第2の演算装置62の処理)によって実現される機能である。
なお、図3では、便宜上、ロボット1に搭載された前記の各センサの出力から制御ユニット26が認識する実測値(実関節変位など)が実ロボット1から出力されるものとして示している。また、以下の説明では、脚体2の左右を特に区別する必要がないときは、前記符号R,Lを省略する。
制御ユニット26は、ロボット1の動作(歩容)の目標である目標歩容を、該ロボット1の動力学(ロボット1の運動とロボット1に作用する外力との関係)を表現する動力学モデルを用いて生成して出力する歩容生成装置100を備える。この歩容生成装置100が生成して出力する目標歩容は、本実施形態では、ロボット1の各関節の変位量(回転角)の軌道を規定する目標運動と、ロボット1に作用する外力に関する目標とから構成される。
より具体的には、本実施形態では、該目標歩容は、上体24の目標位置及び目標姿勢の軌道である目標上***置姿勢軌道と、各足平22の目標位置及び目標姿勢の軌道である目標足平位置姿勢軌道と、各腕体の目標姿勢の軌道である目標腕姿勢軌道と、ロボット1のZMP(Zero Morment Point)の目標位置の軌道である目標ZMP軌道と、ロボット1に作用する外力としての全床反力の目標の軌道である目標全床反力軌道とから構成される。これらの構成要素のうち、目標上***置姿勢軌道、目標足平位置姿勢軌道及び目標腕姿勢軌道が目標運動に相当し、目標ZMP軌道及び目標全床反力軌道が、外力に関する目標に相当する。なお、脚体2や腕体以外に、上体24に対して可動な部位を備える場合には、その可動部位の目標位置姿勢軌道がロボット1の目標運動に加えられる。
ここで、上記目標歩容における「軌道」は時間的変化のパターン(時系列パターン)を意味し、歩容生成装置100の制御周期(演算処理周期)毎に算出される瞬時値の時系列により構成される。以下の説明では、「軌道」の代わりに「パターン」と称することもある。また、以下の説明では、誤解を生じるおそれがない場合には、しばしば「目標」を省略する。
上体24の位置及び速度は、上体24のあらかじめ定めた代表点(例えば左右の股関節の間の中央点等)の位置及びその移動速度を意味する。同様に、各足平22の位置及び速度は、各足平22のあらかじめ定めた代表点の位置及びその移動速度を意味する。各足平22の代表点は、本実施形態では、各足平22の底面上の点、例えば、各脚体2の足首関節の中心から各足平22の底面への垂線が該底面と交わる点に設定される。
また、「姿勢」は空間的な向きを意味する。例えば上体姿勢は鉛直方向に対するロール方向(X軸まわり)の上体24の傾斜角(姿勢角)とピッチ方向(Y軸まわり)の上体24の傾斜角(姿勢角)とで表され、足平姿勢は各足平22に固定的に設定された2軸の空間的な方位角で表される。本明細書では、上体姿勢は上体姿勢角ということもある。なお、上体姿勢にヨー方向(Z軸まわり)の上体24の回転角を含めてもよい。
また、歩容のうちの、ロボット1に作用する外力に係わる要素(目標ZMPおよび目標全床反力)以外の構成要素、すなわち足平位置姿勢、上***置姿勢等、ロボット1の各部の運動に係わる歩容を総称的に「運動」という。
また、各足平22に作用する床反力(並進力及びモーメントからなる床反力)を「各足平床反力」と呼び、ロボット1の全て(2つ)の足平22R,22Lについての「各足平床反力」の合力を「全床反力」という。ただし、以下の説明においては、各足平床反力はほとんど言及しないので、特にことわらない限り、「床反力」は「全床反力」と同義として扱う。
ZMPは、ロボット1の運動によって発生する慣性力とロボット1に作用する重力との合力がその点まわりに作用するモーメントの水平成分(水平軸まわりのモーメント成分)が“0”になる床面上の点を意味する。動力学的平衡条件を満足する歩容では、ZMPと床反力中心点とは一致する。この場合、目標ZMPを与えるということは、目標床反力中心点を与えるということと同じである。
目標床反力は、一般的には、作用点とその点に作用する並進力及びモーメントとにより表現される。作用点はどこに設定してもよいが、本実施形態では、目標ZMPを目標床反力の作用点とする。動力学的平衡条件を満足する歩容では、上記の如くZMPと床反力中心点とは一致するので、目標ZMPを作用点とする目標床反力のモーメント成分は、鉛直成分(Z軸まわりのモーメント成分)を除いて零になる。
歩容生成装置100により生成される目標歩容のうち、目標上***置姿勢軌道と目標腕姿勢軌道とは、ロボット幾何学モデル(キネマティクス演算部)102に入力される。
また、目標足平位置姿勢軌道、目標ZMP軌道(目標床反力中心点軌道)、および目標全床反力軌道(詳細には目標並進床反力鉛直成分軌道、目標並進床反力水平成分軌道、目標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及び両腕体の各関節の回転角(実関節変位)を前記サーボアンプ46を介して追従制御する。より詳しくは、変位コントローラ108は、エンコーダ44の出力から計測される実関節変位(実測値)を関節変位指令に一致させるように、アクチュエータ駆動力としての電動モータ42の出力トルクを調整する。
上記のような追従制御によるロボット1の実際の運動によって該ロボット1の各足平22に実際に作用する床反力である実各足平床反力が前記6軸力センサ36の出力から計測され、その実各足平床反力の実測値が前記複合コンプライアンス動作決定部104に入力される。
また、ロボット1の上体24の実際の姿勢角(鉛直方向に対する傾斜角)である実上体姿勢角が前記傾斜センサ40の出力から計測され、その実上体姿勢角の実測値が姿勢安定化制御演算部112に入力される。さらに、姿勢安定化制御演算部112には、歩容生成装置100が生成する目標上***置姿勢のうちの目標上体姿勢角(鉛直方向に対する上体24の姿勢角の目標値)等も入力される。目標上体姿勢角は、本実施形態では一定値(固定値)であり、例えば、ロボット1の上体24の体幹軸が鉛直方向を向く姿勢での該上体24の姿勢角(=0)である。このように目標上体姿勢角が一定値(固定値)である場合には、姿勢安定化制御演算部112に目標上体姿勢角を入力することを省略してもよい。
そして、姿勢安定化制御演算部112は、入力される実上体姿勢角(実測値)と目標上体姿勢角との偏差である上体姿勢角偏差Δθを算出する。さらに、姿勢安定化制御演算部112は、この上体姿勢角偏差Δθを“0”に収束させるための要求操作量(フィードバック要求操作量)として、目標ZMPまわりでロボット1に付加的に作用させる床反力モーメントの要求値である補償全床反力モーメントMdmdを、算出した上体姿勢角偏差Δθに応じてフィードバック制御則により算出する。
この場合、フィードバック制御則としては、例えばPD則が用いられる。すなわち、上体姿勢角偏差Δθと、その時間的変化率(微分値)Δωとから、次式50によって、補償全床反力モーメントMdmdが算出される。
Mdmd=K1*Δθ+K2*ΔωVx ……式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の値を算出することができる。
また、Δθを後述する倒立振子モデルの質点の位置偏差に変換し(具体的には、Δθに後述する上体質点24bの高さhを乗じる)、この位置偏差とその時間的変化率とからPD則により、Mdmdを算出するようにしてもよい。
姿勢安定化制御演算部112で決定された補償全床反力モーメントMdmdは、補償全床反力モーメント分配器110を介してコンプライアンス制御用目標床反力モーメントとモデル操作床反力モーメントとに分配される。
コンプライアンス制御用目標床反力モーメントは、前記上体姿勢角偏差Δθを“0”に近づけるために、実ロボット1に付加的に作用させる目標ZMPまわりの摂動床反力モーメントである。モデル操作床反力モーメントは、コンプライアンス制御用目標床反力モーメントと同じ目的のために後述する歩容生成用の動力学モデルに付加的に発生させる目標ZMPまわりの摂動床反力モーメントである。モデル操作床反力モーメントは、言い換えると、歩容生成装置100により最終的に決定された目標歩容(歩容生成装置100が出力する目標歩容)の運動が目標ZMPまわりに発生する摂動床反力モーメントである。
これらの床反力モーメントは、ロール方向(X軸まわり)及びピッチ方向(Y軸まわり)の各成分毎に以下のように決定される。まず、モデル操作床反力モーメントが次式52により決定される。なお、式52におけるMdmdは、ロール方向(X軸まわり)及びピッチ方向(Y軸まわり)の各成分(Mdmdx又はMdmdy)を意味する。同様に、床反力モーメント許容範囲は、ロール方向(X軸まわり)及びピッチ方向(Y軸まわり)の各成分の床反力モーメントの許容範囲を意味する。この床反力モーメント許容範囲は、歩容生成装置100において(図23のS1008において)後述するごとく決定されるものである。
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には、ロボット1の周辺の床形状情報(より一般的には、ロボット1の外界の環境情報)や後述の要求パラメータも入力される。
そして、モデル操作床反力モーメントや床形状情報、要求パラメータが入力された歩容生成装置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の全体の姿勢を安定化させることができる。
この場合、モデル操作床反力モーメントの符号を反転したモーメントとコンプライアンス制御用目標床反力モーメントとの和が上体姿勢角偏差Δθを0に収束させるトータルの復元力(床反力モーメント)になる。すなわち、コンプライアンス制御用目標床反力モーメントとモデル操作床反力モーメントとの差がトータルの復元力になる。
なお、モデル操作床反力モーメントは、ZMP存在可能範囲を無視していかなる値でも取ることが可能であるので、非常に高い姿勢復元力を発生することができる。
以下に、ロボット1の歩行を行う場合を例にとって、前記歩容生成装置100の処理をより詳細に説明する。
なお、以降の説明では、「床反力鉛直成分」、「床反力水平成分」は、それぞれ、特に断らない限り、「並進床反力鉛直成分」、「並進床反力水平成分」を意味するものとする。
また、歩容における「両脚支持期」とは、ロボット1がその自重を両脚体2,2で支持する期間、「片脚支持期」とはいずれか一方のみの脚体2でロボット1の自重を支持する期間を言う。本実施形態で主に例示するロボット1の歩行動作では、両脚支持期と片脚支持期とが交互に繰り返される。また、片脚支持期においてロボット1の自重を支持する側の脚体2を「支持脚」、自重を支持しない側の脚体2を「遊脚」と呼ぶ。さらに、支持脚となる脚体2の足平22を支持脚足平22、遊脚となる脚体2の足平22を遊脚足平22という。なお、本実施形態の説明では、便宜上、片脚支持期における「支持脚」となる脚体2、「遊脚」となる脚体2をそれぞれ、該片脚支持期の直前の両脚支持期においても、支持脚、遊脚と呼ぶ。
歩容生成装置100が目標歩容を生成するとき、ロボット1の運動形態に関する基本的な要求を表す要求パラメータが、ロボット1の外部の図示しない操縦装置やサーバ等から無線通信等により歩容生成装置100に入力される。該要求パラメータは、例えば、ロボット1の運動種別(歩行、走行等)や、遊脚足平22の目標着地位置姿勢(該遊脚足平22の着地時の目標位置姿勢)、目標着地時刻を決定するための基本的な指針となるパラメータ(例えばロボット1の平均移動速度や、移動方向もしくは移動経路等)により構成される。なお、このような要求パラメータは、ロボット1の図示しない記憶装置に事前に記憶保持しておき、それを歩容生成装置100が所定のスケジュールで読み込むようにしてもよい。
また、歩容生成装置100には前記床形状情報も入力される。この床形状情報は、例えば、ロボット1の頭部等に搭載される撮像カメラ(図示省略)の撮像画像に基づいて制御ユニット26で生成される。なお、上記床形状情報は、例えば、ロボット1の外部のサーバー等から、随時、ロボット1との無線通信によって制御ユニット26に入力するようにしてもよい。あるいは、ロボット1に自己位置認識機能(グローバル座標系でのロボット1の自己位置及び向きを認識する機能)を備えておくと共に、ロボット1の移動環境の床形状情報を含む地図情報をロボット1の記憶装置に事前に記憶しておくようにしてもよい。そして、ロボット1の自己位置及び向きとから認識されるロボット1の周辺の床形状情報を地図情報から取得し、それを歩容生成装置100に入力するようにしてもよい。また、床形状情報には、床の摩擦係数や硬さ等の性状情報が含まれていてもよい。
歩容生成装置100は、入力された上記要求パラメータや床形状情報を用いて所定のアルゴリズムにより目標歩容を生成する。より詳しく言えば、本実施形態では、歩容生成装置100は、上記要求パラメータや床形状情報に応じて、目標歩容の目標足平位置姿勢軌道、目標床反力鉛直成分軌道、目標ZMP軌道等、目標歩容の一部の構成要素を規定するパラメータとしての歩容パラメータを決定した上で、その歩容パラメータとロボット1の動力学モデルとを用いて目標歩容の瞬時値を逐次決定する。これにより歩容生成装置100は、目標歩容の時系列パターン(軌道)を生成する。
この場合、目標足平位置姿勢軌道は、例えば本願出願人が特許第3233450号にて提案した有限時間整定フィルタを用いて各足平22毎に生成される。この有限時間整定フィルタは、可変時定数の1次遅れフィルタ、すなわち、伝達関数が1/(1+τs)の形で表されるフィルタ(τは可変の時定数。以下、このフィルタを単位フィルタという)を複数段(本実施形態では3段以上)、直列に接続したものであり、所望の指定時刻に指定値に到達するような軌道を生成・出力することができるものである。
この場合、各段の単位フィルタの時定数τは、いずれも、有限時間整定フィルタの出力生成を開始してから、上記指定時刻までの残時間に応じて逐次可変的に設定される。より詳しくは、該残時間が短くなるに伴いτの値が所定の初期値(>0)から減少されていき、最終的には、該残時間が“0”になる指定時刻にて、τの値が“0”になるように設定される。そして、有限時間整定フィルタには、前記指定値(より詳しくは、有限時間整定フィルタの出力の初期値から前記指定値への変化量)に応じた高さのステップ入力が与えられる。
このような有限時間整定フィルタは、指定時刻にて指定値に達するような出力が生成されるだけでなく、指定時刻における有限時間整定フィルタの出力の変化速度を“0”もしくはほぼ“0”にすることができる。特に、単位フィルタを3段以上(3段でよい)、接続した場合には、有限時間整定フィルタの出力の変化加速度(変化速度の微分値)をも“0”もしくはほぼ“0”にすることができる。
このような有限時間整定フィルタを用いる足平位置姿勢軌道(足平22が着地してから次に着地するまでの位置姿勢軌道)の生成は、例えば次のように行なわれる。例えばX軸方向(前後方向)の目標足平位置軌道は次のように生成される。
すなわち、各足平22の次の目標着地位置のX軸方向位置(より詳しくは、次の目標着地位置のひとつ前の着地位置に対するX軸方向の変化量(移動量)。これは前記指定値に相当する)に応じて有限時間整定フィルタへのステップ入力の高さが決定されると共に前記時定数τが所定の初期値に初期化された後、その決定されたステップ入力が有限時間整定フィルタに与えられ、足平22のX軸方向位置の軌道生成が開始される。そして、この軌道生成時には、前記時定数τは、足平22の目標着地時刻(これは前記指定時刻に相当する)までに初期値から“0”まで減少していくように、逐次可変設定される。これにより、目標着地時刻で目標着地位置に達するような、足平22のX軸方向の位置の軌道が生成される。
また、Z軸方向(鉛直方向)の目標足平位置軌道は、例えば次のように生成される。すなわち、まず、足平22の次の目標着地位置及び目標着地時刻、並びに床形状情報(詳しくは足平22の現在の着地位置と次の目標着地位置とを通る縦断面上での床形状情報)に応じて、該足平22の高さ(鉛直位置)が最大になるときの該足平22のZ軸方向位置(以下、最高点位置という)とその最高点位置への到達時刻とが決定される。
そして、その最高点位置(これは前記指定値に相当する)に応じて有限時間整定フィルタへのステップ入力の高さが決定されると共に時定数τが初期化された後、その決定されたステップ入力が有限時間整定フィルタに与えられ、前記最高点位置までのZ軸方向の足平位置軌道が逐次生成される。この際、時定数τは、最高点位置への到達時刻(前記指定時刻に相当)までに初期値から0まで減少するように逐次可変設定される。
さらに、最高点位置までのZ軸方向位置の軌道の生成が終了したら、時定数τを初期化すると共にいままでのステップ入力と逆極性のステップ入力(より詳しくは、最高点位置から次の着地予定位置までのZ軸方向の変化量(これは前記指定値に相当する)に応じた高さの逆極性のステップ入力)が有限時間整定フィルタに入力され、該最高点位置から目標着地位置までのZ軸方向の足平位置の軌道が逐次生成される。この際、時定数τは足平22の目標着地時刻までに初期値から0まで減少するように逐次可変設定される。
尚、Z軸方向の足平位置軌道の生成においては、時定数τを軌道生成開始時刻から足平22の目標着地時刻まで、初期値から“0”まで継続的に減少するように可変設定すると共に、最高点位置への到達時刻もしくはその近傍時刻で、ステップ入力の極性を逆極性に切り替えることで、Z軸方向の足平位置軌道を生成するようにしてもよい。この場合には、足平22を所望の最高点位置に精度よく到達させることはできないが、目標着地時刻での目標着地位置への到達は問題なく行なうことができる。
足平姿勢軌道についても、上述した足平位置軌道と同様に有限時間整定フィルタを用いて生成することができる。この場合、足平姿勢の空間的な各成分のうち、その姿勢の角度変化が単調的(単調増加もしくは単調減少)なものとなる成分については、前記したX軸方向の足平位置軌道の生成と同様に足平姿勢軌道を生成すればよい。また、姿勢の角度変化が極大値もしくは極小値をもつような成分については、前記したZ軸方向の足平位置軌道の生成と同様に足平姿勢軌道を生成すればよい。
尚、上記のように有限時間整定フィルタにより生成される目標足平位置姿勢軌道は、後述の支持脚座標系での各足平22の目標位置姿勢軌道である。
上述のように生成される目標足平位置姿勢軌道は、各足平22の位置が、その初期接地状態(目標歩容の初期時刻の状態)から目標着地位置に向かって徐々に加速しながら移動を開始するように生成される。そして、該目標足平位置姿勢軌道は、最終的に着地予定時刻までに徐々に位置の変化速度を“0”またはほぼ“0”にまで減速し、着地予定時刻にて着地予定位置に到達して停止するように生成される。このため、各足平22の着地瞬間における対地速度(床に固定された支持脚座標系での各足平22の位置の変化速度)が“0”またはほぼ“0”になる。
また、本実施形態では、有限時間整定フィルタは、単位フィルタを3段以上(例えば3段)、直列に接続したものであるため、目標着地時刻までに各足平22の速度(足平位置の変化速度)が“0”またはほぼ“0”になるだけでなく、各足平22は、その加速度も目標着地時刻にて0またはほぼ0になって停止する。つまり、着地瞬間における対地加速度も“0”またはほぼ“0”になる。したがって、着地衝撃がより一層小さくなる。特に、実際のロボット1の着地時刻が目標の着地時刻からずれても、衝撃があまり増大しなくなる。補足すると、目標着地時刻にて各足平22の対地速度を“0”またはほぼ“0”にする上では、有限時間整定フィルタの単位フィルタの段数は2段でもよい。
尚、足平姿勢に関しては、各足平22が目標着地時刻にてその踵で着地した後、該足平22の底面のほぼ全面が床に接地するまで動き続ける。このため、該足平22の底面のほぼ全面が床に接地する時刻を前記指定時刻に設定して、前記有限時間整定フィルタにより足平姿勢軌道が生成される。
また、本実施形態では、有限時間整定フィルタを用いて足平位置軌道を生成したが、目標着地時刻での足平位置の変化速度が“0”またはほぼ“0”になる(足平位置の時間微分値が“0”になる)ように、さらには、該目標着地時刻での足平位置の変化加速度(変化速度の時間微分値)が“0”またはほぼ“0”になるように設定された多項式などの関数を用いて目標足平位置軌道を生成するようにしても良い。このことは、目標足平姿勢軌道の生成に関しても同様である。但し、該目標足平姿勢軌道の生成に関しては、上述の如く、各足平22の底面のほぼ全面が床に接地する時刻にて、各足平22の姿勢の変化速度、さらにはその変化加速度が“0”またはほぼ“0”になるように多項式などの関数が設定される。
補足すると、本実施形態で主に説明する歩容である歩行歩容(ロボット1の歩行動作を行う歩容)で生成される目標足平位置姿勢軌道においては、片脚支持期から両脚支持期への移行時に、遊脚側の足平22がその踵で床面に着地する。次いで、その着地した足平22は、そのつま先が床面に近づくように回転され、該足平22の底面のほぼ全面が床面に接触する。次いで、該足平22は、その踵が浮き上がると共につま先のみが接地するように回転された後、離床する。
また、歩容生成装置100は目標床反力鉛直成分軌道を設定する。ロボット1の歩行歩容における目標床反力鉛直成分軌道は、例えば図5に示す如く設定される。この例では、目標床反力鉛直成分軌道は、両脚支持期では、床反力鉛直成分の増加側に凸(上に凸)の台形状に設定され、片脚支持期では床反力鉛直成分の減少側に凸(下に凸)の台形状に設定される。そして、各台形部分での床反力鉛直成分の値、折れ点の時刻等が目標床反力鉛直成分軌道を規定する歩容パラメータ(床反力鉛直成分軌道パラメータ)として決定される。
なお、ロボット1の歩行歩容における床反力鉛直成分軌道は、床反力鉛直成分の値がほぼ一定に保たれるような軌道であってもよい。
目標ZMP軌道は、所謂、支持多角形(ロボット1の接地面(床との接触面)を含む最小の凸多角形)内に目標ZMPが存すると共に、安定余裕が高く、かつ急激な変化をしないように決定される。なお、支持多角形の中央付近に目標ZMPが存在する状態を安定余裕が高いと言う(詳細は特開平10−86081号公報を参照)。
例えば、歩行歩容における目標ZMP軌道は、図6のグラフで例示する如く設定される。なお、図6に例示する目標ZMP軌道は、詳しくは、X軸方向における目標ZMP軌道(目標ZMPのX軸方向の位置の軌道)の例である。
この例では、目標ZMPのX軸方向の位置は、両脚支持期においては、直前の片脚支持期で着地していた脚体2の足平22のつま先寄りの位置から、新たに着地させた脚体2の足平22の踵寄りの位置に移動するように設定される。そして、当該新たに着地させた脚体2が支持脚となる片脚支持期において、目標ZMPのX軸方向の位置は、該脚体2の足平22の踵寄りの位置からつま先寄りの位置まで移動するように設定される。この場合、図示の例では、片脚支持期における目標ZMPのX軸方向の位置は、該脚体2の足平22の底面のほぼ全面が接地する期間内において一定に維持される。
なお、図示は省略するが、歩行歩容における目標ZMPのY軸方向の位置は、片脚支持期においては、例えば支持脚である脚体2の足首関節のY軸方向の位置と同じ位置(足首関節の直下の位置)に保たれるように設定される。そして、両脚支持期においては、目標ZMPのY軸方向の位置は、直前の片脚支持期において支持脚となっていた脚体2の足首関節のY軸方向の位置と同じ位置から、新たに着地させた脚体2の足首関節のY軸方向の位置と同じ位置まで移動していくように設定される。
本実施形態では、図6に示す如く設定した目標ZMP軌道の折れ点の位置や時刻が、ZMP軌道パラメータ(目標ZMP軌道を規定するパラメータ)として設定される。
また、目標腕姿勢は、上体24に対する相対姿勢で表される。
また、目標歩容はグローバル座標系で記述される。グローバル座標系は床に固定された座標系であり、より具体的には、以下に説明する支持脚座標系が用いられる。該支持脚座標系は、支持脚足平22をその着地後に滑らせないように回転させて、該支持脚足平22の底面のほぼ全面を床面に接触(密着)させた状態において、支持脚側脚体2の足首中心から床面に延ばした垂線が該床面と交わる点(この点は、本実施形態の例では支持脚足平22の底面のほぼ全面を床面に接触させた状態では、該足平22の代表点と合致する)を原点とし、その原点を通る水平面をXY平面とする、床に固定された座標系である。この場合、X軸方向、Y軸方向は、それぞれ支持脚足平22の前後方向、左右方向である。また、Z軸方向は、鉛直方向である。
尚、支持脚座標系の原点は、必ずしも支持脚足平22の底面のほぼ全面を床面に接触させた状態での該足平22の代表点(足平22の位置を代表する点)に合致する必要はなく、該代表点と異なる床面上の点に設定されてもよい。
また、本実施形態では、歩行歩容の両脚支持期とこれに続く片脚支持期における支持脚座標系としては、該両脚支持期に続く片脚支持期での支持脚足平22に対応して、上記した関係に従って規定される座標系が使用される。
次に、本実施形態で歩容生成に用いられるロボット1の動力学モデルについて図7を参照して説明する。
本実施形態に用いられるロボット1の動力学モデルは、図7に示す如く、目標ZMPを支点として揺動自在な可変長のロッド24aと、このロッド24aの上端に支持された質点24bとを備える倒立振子により構成されるモデル(以下、倒立振子モデルということがある)である。なお、ロッド24aは、質量を持たないものとする。
この動力学モデルでは、倒立振子の質点24bの運動が、ロボット1の上体24の運動に対応しており、上体24の運動とロボット1に作用する床反力との間の関係が、質点24b(以降、上体質点24bという)の運動と、倒立振子に作用する床反力との間の関係として表現される。また、この動力学モデルでは、ロボット1の脚体2,2の質量は、上体24(または上体24と腕体及び頭部を合わせた質量)よりも十分に小さいものとみなし、上体質点24bの質量は、ロボット1の全体の質量に一致するものとされる。なお、上体質点24bの位置は、ロボット1の上***置姿勢から一義的に定まる位置に設定される。
この動力学モデルの挙動(該動力学モデル上でのロボットの動力学)は、以下に示すように数式化される。ただし、説明を簡単にするために、サジタルプレーン(支持脚座標系のX軸とZ軸とを含む平面)での運動方程式のみを記述し、ラテラルプレーン(支持脚座標系のY軸とZ軸とを含む平面)での運動方程式を省略した。
説明の便宜上、動力学モデルに関する変数およびパラメータを以下のように定義する。
Zb:上体質点鉛直位置(Z軸方向位置)
Xb:上体質点水平位置(X軸方向位置)
mb:上体質点質量
Xzmp:目標ZMPの水平位置(X軸方向位置)
Zzmp:目標ZMPの鉛直位置(Z軸方向位置)
Fx:床反力水平成分(詳しくは並進床反力のX軸方向成分)
Fz:床反力鉛直成分(詳しくは並進床反力のZ軸方向成分)
Mzmp_y:目標ZMPまわりの床反力モーメント(詳しくは該床反力モーメントのY軸まわり成分)
Mb_y:支持脚座標系の原点まわりの床反力モーメント(詳しくは該床反力モーメントのY軸まわり成分)
また、任意の変数Aに対して、dA/dtはAの1階微分値を表わし、d2A/dt2はAの2階微分値を表わす。したがって、変数Aが変位(位置)ならば、dA/dtは速度、d2A/dt2は加速度を意味する。gは重力加速度定数を示す。ここでは、gは正の値とする。
上記動力学モデルの運動方程式は、式01〜04で表される。
Fz=mb*(g+d2Zb/dt2) ……式01
Fx=mb*d2Xb/dt2 ……式02
Mb_y=−mb*Xb*(g+d2Zb/dt2)
+mb*Zb*(d2Xb/dt2) ……式03
Mzmp_y=−mb*(Xb−Xzmp)*(g+d2Zb/dt2)
+mb*(Zb−Zzmp)*(d2Xb/dt2) ……式04
この場合、Mb_yとMzmp_yとの間の関係は、次式05により表される。
Mb_y=Mzmp_y−mb*Xzmp*(g+d2Zb/dt2)+mb*Zzmp*(d2Xb/dt2)
=Mzmp_y−Xzmp*Fz+Zzmp*Fx
……式05
なお、目標ZMPと支持脚座標系の原点との鉛直方向(Z軸方向)での位置の差は通常、“0”又はほぼ“0”となるので、Zzmp=0と見なしてもよい。
また、ロボット1の移動時の上体24の高さ(鉛直方向位置)の、平均的な高さに対する相対的な変動量(換言すれば上体24の鉛直方向位置の分散)は一般には十分に小さいので、Zb≒h(h:上体24の平均的な高さに対応する上体質点24bの平均的な高さとしての一定値)と見なすことができる。従って、上記式03の右辺第2項と式04の右辺第2項とにおけるZbを定数値hで置き換えてもよい。
本実施形態における歩容生成装置100は、ロボット1の片方の脚体2が着地してから他方の脚体2が着地するまでの1歩分の目標歩容を単位として、その1歩分の目標歩容を順番に生成する。従って、本実施形態で説明する歩行歩容では、該目標歩容は両脚支持期の開始時から、これに続く片脚支持期の終了時(次の両脚支持期の開始時)までの目標歩容が順番に生成される。
ここで、本明細書では、目標歩容の「1歩」は、ロボット1の片方の脚体2が着地してからもう一方の脚体2が着地するまでの意味で使用する。また、新たに生成しようとしている1歩分の目標歩容を「今回歩容」、その次の1歩分の目標歩容を「次回歩容」、さらにその次の1歩分の目標歩容を「次次回歩容」、というように呼ぶ。また、「今回歩容」の一つ前に生成した1歩分の目標歩容を「前回歩容」と呼ぶ。
また、歩容生成装置100は、ロボット1の運動の継続性を確保し得る今回歩容を生成するために、今回歩容に続く仮想的な周期的歩容(同じパターンのロボット1の運動が一定周期で継続的に繰り返される歩容)としての定常旋回歩容を決定する。そして、歩容生成装置100は、今回歩容の上体24の運動軌道を、将来において定常旋回歩容での上体24の運動軌道に収束させるようにして、該今回歩容を生成する。換言すれば、歩容生成装置100は、定常旋回歩容を将来の収束目標として、今回歩容を生成する。この場合、本実施形態では、今回歩容の遊脚側脚体2の足平22の着地時の位置姿勢(着地位置姿勢)又は着地時刻は、今回歩容の生成途中で、適宜更新される。
以下に歩行歩容を生成することを主要例にして、歩容生成装置100の歩容生成処理の詳細を図8〜図24を参照しつつ説明する。歩容生成装置100は、図8のフローチャート(構造化フローチャート)に示す歩容生成処理(メインルーチン処理)を実行することによって目標歩容を生成する。
まずS010において時刻tを“0”に初期化するなど種々の初期化作業が行なわれる。この処理は、歩容生成装置100の起動時等に行なわれる。
次いで、S012を経てS014に進み、歩容生成装置100は、制御周期(図8のフローチャートの演算処理周期)毎のタイマ割り込みを待つ。制御周期はΔtである。
次いで、S016に進み、歩容生成装置100は、歩容の切り替わり目であるか否かを判断する。このとき、歩容の切り替わり目である場合には、S018の処理を経て、S020に進む。この場合、S018では、歩容生成装置100は、時刻tを“0”に初期化する。また、S016で歩容の切り替わり目でない場合には、S020に進む。
ここで、上記「歩容の切り替わり目」は、前回歩容の生成が完了し、今回歩容の生成を開始するタイミングを意味し、例えば前回歩容の生成を完了した制御周期の次の制御周期が歩容の切り替わり目になる。
次いで、S020では、歩容生成装置100は、次回歩容支持脚座標系、次次回歩容支持脚座標系、今回歩容周期および次回歩容周期を決定する。
なお、支持脚座標系を決定するということは、詳しくは、その原点の位置と該支持脚座標系の姿勢(各座標軸の向き)とを決定することを意味する。この場合、支持脚座標系は、その位置姿勢(詳しくは原点の位置とX軸及びY軸の向き)が、前記したように、支持脚足平22の底面のほぼ全面を床面に接触させた状態での該足平22の位置姿勢に対して所定の関係に従って規定される座標系であるから、次回歩容支持脚座標系及び次次回歩容支持脚座標系を決定するということは、それぞれ、今回歩容の遊脚足平22の目標着地位置姿勢、次回歩容の遊脚足平22の目標着地位置姿勢を決定することと同等である。
S020での支持脚座標系及び歩容周期の決定処理は、S018の処理の次、又はS016の判断結果が否定的である場合のS016の処理の次に実行される場合(すなわち、各制御周期で最初に実行される場合)と、後述のS031の判断結果が否定的である場合にS031の処理の次に実行される場合とで相違している。ここでは、S031の判断結果が否定的である場合の処理の説明は後述することとし、S018の処理、又はS016の判断処理の次に実行されるS020の処理を説明する。従って、ここでのS020の処理の説明は、特にことわらない限り、S018の処理、又はS016の判断処理の次に実行されるS020の処理に関する説明である。
S018の処理、又はS016の判断処理の次に実行されるS020の処理では、次回歩容支持脚座標系及び次次回歩容支持脚座標系は、基本的には、脚体2の運動に関する幾何学的な(運動学的な)制約条件である幾何学的脚体運動必要条件を満足し得る範囲内で、前記要求パラメータに基づき決定される。
ここで、上記幾何学的脚体運動必要条件は、各脚体2の先端部の目標運動軌道としての足平位置姿勢軌道が、ロボット1の各脚体2の幾何学的な(運動学的な)可動範囲内での運動軌道となるべきであるという条件である。この幾何学的脚体運動必要条件には、より具体的には、例えば、各脚体2の関節の変位量(回転角)が、各関節及びその駆動系の構造等に応じて規定される所定の範囲を逸脱しないという条件と、左右の脚体2R,2Lが互いに干渉しないという条件とが含まれる。
また、前記要求パラメータは、2歩先までの遊脚足平22の着地位置姿勢と着地時刻とを規定する要求値を含んでいる。そして、その1歩目の要求値、2歩目の要求値がそれぞれ、今回歩容、次回歩容に対応するものとして、今回歩容の生成開始時(前記S016の歩容の切り替わり目)以前に歩容生成装置100に与えられる。これらの要求値は今回歩容の生成途中で変更し得るようにすることも可能である。
なお、2歩目までの遊脚足平22の着地位置姿勢及び着地時刻の要求値は、外部の操縦装置等からの指令(要求)とそのときまでのロボットの1の移動履歴とを基に決定してもよい。また、要求パラメータは、前記次回及び次次回歩容支持脚座標系の位置及び姿勢の要求値、並びに今回及び次回歩容周期の要求値を直接的に指定するパラメータであってもよい。
また、遊脚足平22の着地位置姿勢は、着地瞬間の位置姿勢でもよいが、本実施形態の説明では、理解の便宜上、該遊脚足平22を着地させてから、該足平22を滑らせないように回転させて、該足平22の底面のほぼ全面を床面に接触させた状態での該足平22の位置姿勢を意味するものとする。そして、その位置姿勢を着地時足平基準位置姿勢ということがある。また、遊脚足平22の着地時刻は、本実施形態では、該足平22の着地瞬間の時刻を意味するものとする。
S020では、歩容生成装置100は、上記要求パラメータにより規定される1歩目の遊脚足平22(今回歩容の遊脚足平22)の着地位置姿勢の要求値と2歩目の遊脚足平22(次回歩容の遊脚足平22)の着地位置姿勢の要求値とが、それぞれ、前記幾何学的脚体運動必要条件を満足させ得る要求値であるか否かを判断し、その判断結果に応じて次回歩容支持脚座標系と次次回歩容支持脚座標系とを決定する。
より具体的には、歩容生成装置100は、幾何学的脚体運動必要条件を満足し得るように次回歩容支持脚座標系と次次回歩容支持脚座標系とを決定するために、前記幾何学的脚体運動必要条件を満足し得る遊脚足平22の着地位置の許容領域である第1着地許容領域(詳しくは、今回歩容及び次回歩容のそれぞれの支持脚座標系で見た遊脚足平22の第1着地許容領域)を、入力された床形状情報から認識される床面上に設定する。
上記第1着地許容領域は、本実施形態では、前記着地時足平基準位置姿勢の支持脚足平22に対する相対的な位置姿勢(該支持脚足平22に対応する支持脚座標系から見た位置姿勢)及び形状が、支持脚足平22が右側足平22Rである場合と、支持脚足平22が左側足平22Lである場合とでそれぞれ、あらかじめ定められた領域である。
右側足平22Rが支持脚足平である場合の遊脚足平22Lの第1着地許容領域(以降、左足平第1着地許容領域ということがある)は、該支持脚足平22Rに対応する支持脚座標系に対して、図9に実線で示すような位置姿勢関係で設定される領域(図9では今回歩容における第1着地許容領域として示される、今回歩容支持脚座標系で見た領域)である。
また、左側足平22Lが支持脚足平である場合の遊脚足平22Rの第1着地許容領域(以降、右足平第1着地許容領域ということがある)は、該支持脚足平22Lに対応する支持脚座標系に対して、図9に破線で示すようにな位置姿勢関係で設定される領域(図9では次回歩容における第1着地許容領域として示される、次回歩容支持脚座標系で見た領域)である。
この場合、左足平第1着地許容領域の形状及び位置姿勢は、遊脚足平22Lの着地姿勢(詳しくは支持脚足平22Rに対応する支持脚座標系のZ軸周りの姿勢)が所定の許容範囲内に存する状態で、該遊脚足平22Lの着地位置が該左足平第1着地許容領域内に存するように該遊脚足平22Lを着地させた場合に、前記幾何学的脚体運動必要条件を満足し得るように設定されている。
同様に、右足平第1着地許容領域の形状及び位置姿勢は、遊脚足平22Rの着地姿勢(詳しくは支持脚足平22Lに対応する支持脚座標系のZ軸周りの姿勢)が所定の許容範囲内に存する状態で、該遊脚足平22Rの着地位置が該右足平第1着地許容領域内に存するように該遊脚足平22Rを着地させた場合に、前記幾何学的脚体運動必要条件を満足し得るように設定されている。
なお、左足平第1着地許容領域と右足平第1着地許容領域とは、支持脚座標系に対して左右対称の領域である。
S018の次のS020では、歩容生成装置100は、まず、次回歩容支持脚座標系を決定するために、今回歩容支持脚座標系上において、今回歩容の遊脚足平22の第1着地許容領域を設定する。そして、歩容生成装置100は、今回歩容の遊脚足平22の着地姿勢の要求値が所定の許容範囲内に存し、且つ、該遊脚足平22の着地位置の要求値が、今回歩容支持脚座標系における第1着地許容領域内に存する場合に、該遊脚足平22の着地位置姿勢の要求値が、前記幾何学的脚体運動必要条件を満足し得る要求値であると判断する。そして、この場合には、歩容生成装置100は、今回歩容の遊脚足平22の着地位置姿勢の要求値を、そのまま該遊脚足平22の着地位置姿勢の目標値(目標着地位置姿勢)とし、この目標着地位置姿勢に対応する支持脚座標系を、次回歩容支持脚座標系として決定する。
また、歩容生成装置100は、今回歩容の遊脚足平22の着地姿勢の要求値が所定の許容範囲から逸脱し、又は、該遊脚足平22の着地位置の要求値が、今回歩容支持脚座標系における第1着地許容領域から逸脱している場合には、該遊脚足平22の着地位置姿勢の要求値が、前記幾何学的脚体運動必要条件を満足し得る要求値でないと判断する。
このとき、遊脚足平22の着地姿勢の要求値が所定の許容範囲から逸脱している場合には、歩容生成装置100は、該所定の許容範囲内で、該遊脚足平22の着地姿勢の要求値に最も近い姿勢を遊脚足平22の着地姿勢の目標値とする。なお、遊脚足平22の着地姿勢の要求値が所定の許容範囲内に存する場合には、該遊脚足平22の着地姿勢の要求値をそのまま、目標値とする。
また、遊脚足平22の着地位置の要求値が、今回歩容支持脚座標系における第1着地許容領域から逸脱している場合には、該第1着地許容領域内で、該着地位置の要求値に最も近い位置を今回歩容の遊脚足平22の着地位置の目標値とする。なお、遊脚足平22の着地位置の要求値が今回歩容支持脚座標系における第1着地許容領域内に存する場合には、該遊脚足平22の着地位置の要求値をそのまま、目標値とする。
そして、歩容生成装置100は、上記の如く決定した今回歩容の遊脚足平22の目標着地位置姿勢に対応する支持脚座標系を、次回歩容支持脚座標系として決定する。
さらに、歩容生成装置100は、上記の如く決定した次回歩容支持脚座標系において、次回歩容における遊脚足平22の第1着地許容領域を設定する。そして、歩容生成装置100は、次回歩容の遊脚足平22の着地姿勢の要求値が所定の許容範囲に存し、且つ、該遊脚足平22の着地位置が次回歩容支持脚座標系における第1着地許容領域に存するか否かを判断し、その判断結果に応じて、次次回歩容支持脚座標系を決定する。この次次回歩容支持脚座標系の決定の仕方は、上記した次回歩容支持脚座標系の決定の仕方と同様である。
S018の次のS020では、上記の如く、幾何学的脚体運動必要条件を満足する範囲内で、前記要求パラメータにより規定される2歩目までの遊脚足平22の着地位置姿勢の要求値にできるだけ従うように、次回歩容支持脚座標系及び次次回歩容支持脚座標系が決定される。
図9は、上記のように決定される次回歩容支持脚座標系及び次次回歩容支持脚座標系の例を示している。この例では、今回歩容の遊脚足平22(図では22L)の着地位置の要求値は、今回歩容支持脚座標系における第1着地許容領域(左足平第1着地許容領域)内に存しており、次回歩容の遊脚足平22(図では22R)の着地位置の要求値は、次回歩容支持脚座標系における第1着地許容領域(右足平第1着地許容領域)内に存するものとしている。
また、歩容生成装置100は、今回歩容周期に関しては、前記要求パラメータにより規定される今回歩容の遊脚足平22の着地時刻の要求値と、前回歩容の遊脚足平22の目標着地時刻との差としての今回歩容周期の要求値が、各脚体2の関節の変位速度等を制限するための所定の許容範囲(以降、歩容周期許容範囲という)内に存する場合には、該要求値をそのまま、今回歩容周期の目標値として決定する。また、該今回歩容周期の要求値が歩容周期許容範囲を逸脱している場合には、歩容生成装置100は、該歩容周期許容範囲内で、該要求値に最も近い値を、今回歩容周期の目標値として決定する。
さらに、歩容生成装置100は、前記要求パラメータにより規定される次回歩容の遊脚足平22の着地時刻の要求値と、上記の如く決定した今回歩容周期の目標値に対応する今回歩容の遊脚足平22の目標着地時刻(=前回歩容の遊脚足平22の目標着地時刻+今回歩容周期の目標値)との差としての次回歩容周期の要求値が、上記歩容周期許容範囲内に存する場合には、該要求値をそのまま、次回歩容周期の目標値として決定する。また、該次回歩容周期の要求値が歩容周期許容範囲を逸脱している場合には、歩容生成装置100は、該歩容周期許容範囲内で、該要求値に最も近い値を、次回歩容周期の目標値として決定する。
以上が、S018の処理又はS16の判断処理の次のS020で歩容生成装置100が実行する処理の詳細である。
補足すると、本実施形態では、今回歩容及び次回歩容の一方又は両方におけるロボット1の遊脚足平22の目標着地位置姿勢(ひいては、次回歩容支持脚座標系及び次次回歩容支持脚座標系のうちの少なくともいずれか一方の位置姿勢)、あるいは、今回歩容もしくは次回歩容の歩容周期は、各制御周期において、S020で最初に決定されたものから、修正される場合もある。
次いでS022に進み、歩容生成装置100は、今回歩容に続く仮想的な周期的歩容(今回歩容の将来の収束目標とする仮想的な周期的歩容)としての定常旋回歩容の歩容パラメータを決定する。該歩容パラメータは、本実施形態では、定常旋回歩容における目標足平位置姿勢軌道を規定する足平軌道パラメータ、目標上体姿勢軌道を規定する上体姿勢軌道パラメータ、目標腕姿勢軌道を規定する腕軌道パラメータ、目標ZMP軌道を規定するZMP軌道パラメータ、目標床反力鉛直成分軌道を規定する床反力鉛直成分軌道パラメータを含む。
ここで、「定常旋回歩容」は、その歩容を繰り返したときに歩容の境界(1周期毎の歩容の境界)においてロボット1の運動状態(足平位置姿勢、上***置姿勢等の運動状態)に不連続が生じないような周期的歩容を意味する。また、「定常旋回歩容」は、周期的歩容、すなわち同じパターンの歩容を一定周期で繰り返す歩容であるから、ロボット1の運動を継続的に行い得る歩容である。換言すれば、「定常旋回歩容」は、歩容の軌道の不連続を発生することなく、同じパターンの運動を繰り返すことができる周期的歩容(原理上、無限回繰り返しても後述の「発散」が発生しない歩容)である。
周期的歩容である定常旋回歩容は、本実施形態では、ロボット1の2歩分の歩容、すなわち今回歩容に続く第1旋回歩容と該第1旋回歩容に続く第2旋回歩容とからなる歩容を1周期分の歩容として、その1周期分の歩容を一定周期で繰り返す歩容である。ここで「旋回」なる用語を用いたのは、旋回率を零とするときは直進を意味するので、直進も広義の意味で旋回に含ませることができるからである。
定常旋回歩容(以降、単に定常歩容ということがある)について補足すると、2足移動ロボットでは、定常歩容の1周期分の歩容には、少なくとも2歩分の歩容が含まれる必要である。この場合、3歩以上の歩容を1周期分の歩容とする複雑な定常歩容を設定することも可能である。但し、定常歩容は、後述の如く、今回歩容の終端(終了時刻)における目標とする(適切な)発散成分の値を決定するためだけに用いられる。このため、3歩以上の歩容を1周期とする定常歩容を用いることは、歩容生成の処理が煩雑となるにもかかわらず、効果は少ない。そこで、本実施形態での定常歩容の1周期分の歩容を2歩分の歩容(第1旋回歩容及び第2旋回歩容の組)により構成するようにしている。尚、3足以上の脚式移動ロボットにあっては、それに応じて定常歩容を定義するに足る歩容数が増加する。
ここで、「発散」とは、図10に示すように、ロボット1の上体24の位置が両足平22,22の位置からかけ離れた位置にずれてしまうことを意味する。また、発散成分の値とは、ロボット1の上体24の位置が両足平22,22の位置(より具体的には、支持脚足平22の接地面に設定された支持脚座標系の原点)からかけ離れていく具合を表す数値である。
定常歩容は、歩容生成装置100で今回歩容の終端におけるロボット1の目標とする運動状態を決定するために作成される仮想的な歩容である。従って、定常旋回歩容は、歩容生成装置100からそのまま出力されるものではない。
本実施形態では、目標歩容が、上記発散を生じることなく、継続的に生成されるように、発散成分を指標にして歩容を生成するようにした。この場合、継続的な歩容の代表例である定常歩容であっても、定常歩容の歩容パラメータが変われば、該定常歩容の初期発散成分(定常歩容の初期時刻での発散成分)も変わる。すなわち、歩き方、走り方、移動速度等の歩容形態によって、適切な発散成分が変わる。
そこで、本実施形態では、歩容生成装置100は、今回歩容を生成しようとするときに、まず、その生成しようとする今回歩容の後に続く歩容(将来的な収束目標とする歩容)として好適な将来の仮想的な周期的歩容(ロボット1の安定な移動を継続することが可能な将来の仮想的な周期的歩容)としての定常歩容を、今回歩容に係わる要求パラメータ(又はS020で決定した支持脚座標系及び歩容周期)に応じて決定した上で、該定常歩容の初期発散成分を求める。そして、歩容生成装置100は、今回歩容の終端発散成分を、その求めた定常歩容の初期発散成分に一致させる(より一般的には、今回歩容を定常歩容に連続させもしくは漸近させる)ように、今回歩容を生成する。このような歩容生成の基本的な指針は本出願人が先に提案した特許第3726081号のものと同様である。
本題に戻り、S022では、歩容生成装置100は、図11のフローチャートに示すサブルーチン処理を実行する。
まず、S100において、歩容生成装置100は、今回歩容、第1旋回歩容、第2旋回歩容の順に足平位置姿勢軌道がつながるように、定常歩容の歩容パラメータのうちの足平軌道パラメータが決定される。以下に、定常歩容が歩行歩容である場合を例にとって、具体的な設定方法を図12を参照して説明する。尚、以降の説明では、支持脚側の足平22を支持脚足平22と称し、遊脚側の足平22を遊脚足平22と称する。また、歩容の「初期」、「終端」はそれぞれ歩容の開始時刻、終了時刻、あるいは、それらの時刻における瞬時歩容を意味する。
足平軌道パラメータは、第1旋回歩容および第2旋回歩容のそれぞれの初期と終端とにおける支持脚足平22及び遊脚足平22のそれぞれの位置姿勢、各旋回歩容の歩容周期(各旋回歩容の初期から終端までの時間)等から構成される。この足平軌道パラメータのうち、第1旋回歩容初期遊脚足平位置姿勢は、次回歩容支持脚座標系から見た今回歩容終端支持脚足平位置姿勢とされる。この場合、今回歩容終端支持脚足平位置姿勢は、今回歩容の支持脚足平22を、今回歩容支持脚座標系に対応する前記着地時足平基準位置姿勢から、滑らせないようにピッチ方向に(該足平22の踵が持ち上がる向きに)所定角度だけ回転させた状態での位置姿勢である。
また、第1旋回歩容初期支持脚足平位置姿勢は、次回歩容支持脚座標系から見た今回歩容終端遊脚足平位置姿勢とされる。この場合、今回歩容終端遊脚足平位置姿勢は、今回歩容の遊脚足平22を、該今回歩容終端遊脚足平位置姿勢から、滑らせないようにピッチ方向に(該足平22のつま先が下がる向きに)所定角度だけ回転させた状態での該足平22の位置姿勢が、次回歩容支持脚座標系に対応する前記着地時足平基準位置姿勢に合致するように決定される。
第1旋回歩容終端遊脚足平位置姿勢は、次回歩容支持脚座標系から見た次回歩容終端遊脚足平位置姿勢とされる。この場合、次回歩容終端遊脚足平位置姿勢は、次回歩容の遊脚足平22を、該次回歩容終端遊脚足平位置姿勢から、滑らせないようにピッチ方向に(該足平22のつま先が下がる向きに)所定角度だけ回転させた状態での該足平22の位置姿勢が、次次回歩容支持脚座標系に対応する前記着地時足平基準位置姿勢に合致するように決定される。
第1旋回歩容終端支持脚足平位置姿勢は、次回歩容支持脚座標系から見た次回歩容終端支持脚足平位置姿勢とされる。この場合、次回歩容終端支持脚足平位置姿勢は、次回歩容の支持脚足平22を、次回歩容支持脚座標系に対応する前記着地時足平基準位置姿勢から、滑らせないようにピッチ方向に(該足平22の踵が持ち上がる向きに)所定角度だけ回転させた状態での位置姿勢である。
第2旋回歩容初期遊脚足平位置姿勢は、次次回歩容支持脚座標系から見た第1旋回歩容終端支持脚足平位置姿勢とされる。第2旋回歩容初期支持脚足平位置姿勢は、次次回歩容支持脚座標系から見た第1旋回歩容終端遊脚足平位置姿勢とされる。
第2旋回歩容終端遊脚足平位置姿勢は、次次回歩容支持脚座標系から見た位置姿勢であり、その位置姿勢は、今回歩容支持脚座標系から見た今回歩容終端遊脚足平位置姿勢に一致するものとされる。該第2旋回歩容終端遊脚足平位置姿勢は、換言すれば、第2旋回歩容での遊脚足平22を、該第2戦回歩容終端遊脚足平位置姿勢から、滑らせないようにピッチ方向に(つま先が下がる向きに)所定角度だけ回転させた状態での該足平22の位置姿勢が、定常歩容における次次次回歩容支持脚座標系(図12に示す)に対応する着地時足平基準位置姿勢に合致するように決定された位置姿勢である。ここで、次次次回歩容支持脚座標系は、次次回歩容支持脚座標系で見た該次次次回歩容支持脚座標系の位置姿勢(図12中のxnext,ynext,θznextにより表される位置姿勢)が、今回歩容支持脚座標系で見た次回歩容支持脚座標系の位置姿勢に合致する支持脚座標系である。
また、第2旋回歩容終端支持脚足平位置姿勢は、次次回歩容支持脚座標系から見た位置姿勢であり、その位置姿勢は、今回歩容支持脚座標系から見た今回歩容終端支持脚足平位置姿勢に一致するものとされる。すなわち、第2旋回歩容終端支持脚足平位置姿勢は、次次回歩容における支持脚足平22を、次次回歩容支持脚座標系に対応する着地時足平基準位置姿勢から、滑らせないようにピッチ方向に(該足平22の踵が持ち上がる向きに)所定角度だけ回転させた状態での位置姿勢である。
第1旋回歩容および第2旋回歩容の歩容周期は、次回歩容周期と同一に設定される。これらの第1旋回歩容及び第2旋回歩容の歩容周期は、互いに同一にすることは必ずしも必要ではないが、いずれの周期も、少なくとも次回歩容周期に応じて決定するのが好ましい。
次に、S102に進み、歩容生成装置100は、定常歩容における目標上体姿勢軌道を規定する上体姿勢軌道パラメータを決定する。
この場合、本実施形態では、定常歩容の上体姿勢軌道パラメータは、それにより規定される目標上体姿勢軌道があらかじめ定められた所定パターンの基準上体姿勢の軌道に一致するように決定される。この基準上体姿勢は、本実施形態では、経時的な変化の無い一定姿勢(固定的な姿勢)に設定されている。その基準上体姿勢は、例えば上体24の体幹軸が定常的に鉛直方向を向く姿勢(ロボット1が直立姿勢で起立した状態での上体姿勢)、すなわち、鉛直方向に対する上体姿勢角が定常的に“0”に保たれる姿勢である。そして、このような基準上体姿勢の軌道を規定するパラメータ(基準上体姿勢の一定の上体姿勢角の値等)が上体姿勢軌道パラメータとして決定される。なお、このように上体姿勢を一定姿勢とした場合には、必然的に上体姿勢角の角速度及び角加速度も定常的に“0”に保たれる。
補足すると、定常歩容の上体姿勢は、定常歩容の初期(第1旋回歩容の初期)と終端(第2旋回歩容の終端)とでつながるように(上体姿勢角及びその角速度がそれぞれ、定常歩容の初期と終端とで一致するように)に設定されている限り、一定姿勢である必要はない。本実施形態では、本実施形態の理解を容易にするために基準上体姿勢を上記の如く一定姿勢とした。
次に、S104に進み、歩容生成装置100は、腕姿勢軌道パラメータ、より詳しくは鉛直軸(あるいは上体24の体幹軸)まわりの両腕体の角運動量変化に関すること以外の腕姿勢軌道パラメータが決定される。たとえば、上体24に対する腕体の手先の相対高さや腕体全体の相対重心位置などを規定するパラメータが腕姿勢軌道パラメータとして決定される。この場合、本実施形態では、腕体全体の相対重心位置は、上体24に対して一定に維持されるように設定される。
次に、S106に進み、歩容生成装置100は、床反力鉛直成分軌道パラメータを決定する。この場合、該パラメータにより規定される床反力鉛直成分軌道が、第1旋回歩容および第2旋回歩容のいずれにおいても、実質的に連続なものとなるように床反力鉛直成分軌道パラメータが決定される。
具体的には、定常歩容が歩行歩容である場合の目標床反力鉛直成分軌道は、例えば図13に示すようなパターンで設定される。そのパターンは、第1旋回歩容及び第2旋回歩容のいずれにおいても、先に図5に示したパターンと同様のパターンである。そして、このパターンの折れ点の時刻や床反力鉛直成分の値が床反力鉛直成分軌道パラメータとして決定される。
この床反力鉛直成分軌道パラメータは、定常歩容の1周期分の期間(第1旋回歩容の期間と第2旋回歩容の期間とを合わせた期間)における床反力鉛直成分の平均値をロボット1の自重と一致させるように決定される。すなわち、定常歩容の1周期分の期間における床反力鉛直成分の平均値がロボット1の全体に作用する重力と同じ大きさで反対向きになるようにする。
上記のごとく床反力鉛直成分軌道パラメータ(ひいては床反力鉛直成分軌道)を決定することは、定常歩容のあらゆる状態量(ロボット1の各部の位置、姿勢、速度等の運動状態量)についての初期状態(定常歩容の第1旋回歩容の支持脚座標系から見た該第1旋回歩容の初期状態)と終端状態(定常歩容の第2旋回歩容に続く第1旋回歩容の支持脚座標系から見た該第2旋回歩容の終端状態)とが一致しているという条件(以下、この条件を定常歩容の境界条件ということがある)が成立する必要があるからである。
次いで、S108に進み、歩容生成装置100は、第1旋回歩容および第2旋回歩容を合わせた定常歩容の目標ZMP軌道を規定するZMP軌道パラメータを決定する。この場合、目標ZMP軌道は、前述したように安定余裕が高くかつ急激な変化をしないように決定される。
定常歩容が歩行歩容である場合の目標ZMP軌道(詳しくは目標ZMPのX軸方向位置)は、例えば図14に示すパターンで設定される。このパターンは、第1旋回歩容及び第2旋回歩容のいずれにおいても、先に図6に示したパターンと同様のパターンである。そして、このパターンの折れ点の時刻や目標ZMPの位置がZMP軌道パラメータとして決定される。
なお、図示は省略するが、定常歩容が歩行歩容である場合の目標ZMPのY軸方向の位置は、第1旋回歩容及び第2旋回歩容のいずれにおいても、片脚支持期においては、支持脚である脚体2の足首関節のY軸方向の位置と同じ位置(足首関節の直下の位置)に保たれるように設定される。そして、両脚支持期においては、目標ZMPのY軸方向の位置は、直前の片脚支持期において支持脚となっていた脚体2の足首関節のY軸方向の位置と同じ位置から、新たに着地させた脚体2の足首関節のY軸方向の位置と同じ位置まで移動していくように設定される。
以上が、図8のS022の処理の詳細である。
図8に戻って、歩容生成装置100は、上記の如くS022の処理を実行した後、S024に進み、定常歩容の初期状態を算出する。ここで算出する初期状態は、具体的には、定常歩容の初期上***置速度(初期上***置及び初期上体速度)及び初期発散成分である。この初期状態の算出は、図15のフローチャートに示す処理によって、探索的に行なわれる。
以下説明すると、まず、S200において、歩容生成装置100は、定常歩容パラメータ(図8のS022で決定された歩容パラメータ)に基づいて、定常歩容の目標足平位置姿勢、目標腕姿勢、および目標上体姿勢角の初期状態(定常歩容の初期時刻(=今回歩容の終端時刻)での状態)を決定する。ここで「状態」とは、位置又は姿勢とその時間的変化率(位置又は姿勢の変化速度)との組を意味する。例えば目標足平位置姿勢の初期状態は、定常歩容の初期時刻での足平位置姿勢と、その時間的変化率(すなわち、足平22の移動速度及び姿勢の変化速度)との組を意味する。目標腕姿勢の初期状態、目標上体姿勢角の初期状態についても同様である。
この場合、支持脚側の足平位置姿勢の初期状態と、遊脚側の足平位置姿勢の初期状態とは、図11のS100で決定した足平軌道パラメータに基づいて決定される。
具体的には、足平軌道パラメータのうちの、前記第1旋回歩容初期支持脚足平位置姿勢と、第1旋回歩容初期遊脚足平位置姿勢とが、それぞれ、定常歩容の初期時刻での支持脚側の足平位置姿勢、遊脚側の足平位置姿勢として決定される。
また、定常歩容の初期時刻での支持脚側の足平位置姿勢の時間的変化率は、第1旋回歩容初期支持脚足平位置姿勢から第2旋回歩容終端遊脚足平位置姿勢に至る足平位置姿勢軌道(次回歩容支持脚座標系から見た軌道)を有限時間整定フィルタにより生成した場合における該軌道の初期時刻(定常歩容の初期時刻)での足平位置姿勢の時間的変化率として算出される。この場合、第1旋回歩容初期支持脚足平位置姿勢から第2旋回歩容終端遊脚足平位置姿勢に至る足平位置姿勢軌道のうち、定常歩容の初期時刻からその直後の時刻までの軌道から定常歩容の初期時刻での支持脚側の足平位置姿勢の時間的変化率を算出することができる。
また、定常歩容の初期時刻での遊脚側の足平位置姿勢の時間的変化率は、今回歩容初期支持脚足平位置姿勢から第1旋回歩容終端終端遊脚足平位置姿勢に至る足平位置姿勢軌道(次回歩容支持脚座標系から見た軌道)を有限時間整定フィルタにより生成した場合における該軌道の初期時刻(定常歩容の初期時刻)での足平位置姿勢の時間的変化率として算出される。この場合、今回歩容初期支持脚足平位置姿勢から第1旋回歩容終端終端遊脚足平位置姿勢に至る足平位置姿勢軌道のうち、今回歩容の初期時刻から定常歩容の初期時刻(又はその直後の時刻)までの軌道を生成すれば、該軌道(定常歩容の初期時刻の近辺の軌道)から定常歩容の初期時刻での遊脚側の足平位置姿勢の時間的変化率を算出することができる。
また、腕姿勢の初期状態は、図11のS104で決定した腕姿勢軌道パラメータに基づいて、定常歩容の初期時刻における腕姿勢(上体24に対する両腕体の全体重心位置等)と該初期時刻の直後の期間の腕姿勢の変化量とを求めることで決定される。
また、上体姿勢角の初期状態は、図11のS102で決定した上体姿勢軌道パラメータ基づいて、定常歩容の初期時刻における上体姿勢角と該初期時刻の直後の期間の上体姿勢角の変化量とを求めることで決定される。なお、本実施形態では、上体姿勢軌道パラメータにより規定される上体姿勢は、定常的に上体24の体幹軸が鉛直方向に向く姿勢であるので、定常歩容の初期時刻での上体姿勢角およびその角速度は、いずれも“0”である。
次いで歩容生成装置100は、S202において初期上体水平位置速度の候補(定常歩容の初期時刻での上体24の水平位置及び水平速度の候補)である(Xs,Vxs)(Xs:水平位置、Vxs:水平速度)を仮決めする。ここで仮決めする候補(Xs,Vxs)は、任意でよいが、例えば前回歩容の生成時に求めた定常歩容の初期状態における上体水平位置速度の候補(Xs,Vxs)として仮決めすればよい。
尚、説明を簡略にするため、サジタルプレーン上でX軸方向(ロール軸方向)での定常歩容の初期状態(初期上体水平位置速度)を探索する場合を例にとって説明する。ただし、実際には位置・速度のいずれについても、X軸方向(ロール軸方向)と、Y軸方向(ピッチ軸方向)とで別々に、あるいは同時に定常歩容の初期状態(定常歩容の前記境界条件を満たす初期状態)を探索する必要がある。
探索的な決定手法としては、擬似ヤコビアン(感度マトリックス)を求め、最急降下法などにより次候補を決定する方法や、シンプレックス法などを用いればよい。本実施形態では、例えば最急降下法を用いる。
次いで、S204を経てS206に進み、定常歩容の初期時刻での上体24の鉛直位置(Z軸方向位置)Zs及び鉛直速度(Z軸方向速度)Vzsの組である初期上体鉛直位置速度(Zs,Vzs)が決定される。
初期上体鉛直速度Vzsは、本実施形態では例えば以下のように決定される。
ロボット1には、動力学的関係として、次式が成立する。
終端全体重心鉛直位置−初期全体重心鉛直位置
=(床反力鉛直成分/ロボットの全体質量)の2階積分
+重力加速度の2階積分
+初期全体重心鉛直速度*1歩の時間
…式13
(ただし、重力加速度は負の値とする。)
また、定常歩容では、終端全体重心鉛直位置と初期全体重心鉛直位置は一致するので、上式13の右辺は零にならなければならない。したがって、これらの関係から初期全体重心鉛直速度を求めることができる。具体的には、まず、前記図11のS104で決定した床反力鉛直成分軌道パラメータによって算出される床反力鉛直成分をロボット1の全体質量で割った値を、定常歩容の初期から終端までの期間において2階積分することにより、床反力鉛直成分による全体重心移動量(式13の右辺第1項)が求められる。
さらに、重力加速度を定常歩容の初期から終端までの期間において2階積分することにより、重力による全体重心移動量(式13の右辺第2項)が求められる。そして、上記の如く求めた、床反力鉛直成分による全体重心移動量と重力による全体重心移動量との和の符号を反転させたものを、定常歩容の1周期Tcycの時間で割ることにより、初期全体重心鉛直速度が求められる。
そして、本実施形態では、例えば、上体24と他の部位(脚体2,2や腕体)とに質点を有する多質点モデル(幾何学モデル)を用い、該多質点モデルの重心点の鉛直速度が上記初期全体重心鉛直速度に一致するような上体24の鉛直速度を、S200で決定した足平位置姿勢、腕姿勢等の初期状態と、S202(又は後述のS218)で決定された初期上体水平位置速度(Xs,Vxs)とを基に求め、その求めた鉛直速度を初期上体鉛直速度Vzsとして決定する。
上記多質点モデルとしては、例えば、上体24の質量(又は上体24と腕体とを合わせた質量)を有する1つの上体質点と、両脚体2,2のそれぞれの質量を有する2つの脚質点とから構成される3質点モデルが挙げられる。この場合、例えば、上体質点の位置は、上体24の位置姿勢に応じて規定され、各脚質点の位置は、各脚体2の足平位置姿勢に応じて規定されるものとする。このような3質点モデルを用いた場合には、上記の如く求めた初期全体重心鉛直速度と、足平位置姿勢の初期状態とを基に、上体質点の鉛直速度を算出できる。そして、その上体質点の鉛直速度と、S200で決定された上体姿勢角の初期状態とを基に、初期上体鉛直速度Vzsを決定することが可能である。
なお、より多くの質点を有する多質点モデル(例えばロボット1の各リンクに質点を有する幾何学モデル)を用いることによってより正確に、初期上体鉛直速度Vzsを決定するようにしてもよい。また、ロボット1の上体24以外の部位の質量が上体24に比して十分に小さいような場合には、例えばロボット1の全体重心の鉛直速度が上体24の鉛直速度にほぼ一致すると見なし、上記初期全体重心鉛直速度を、そのまま初期上体鉛直速度Vzsとして決定するようにしてもよい。
一方、定常歩容の初期上体鉛直位置Zsは、例えば本出願人が先に特開平10−86080号公報で提案した上体高さ決定手法を用いて決定される。このとき、初期時刻における足平位置姿勢(前記図11のS100で決定した第1旋回歩容初期支持脚足平位置姿勢及び第1旋回歩容初期遊脚足平位置姿勢)と、各脚体2の膝部の曲げ角に関する所定の幾何学的条件とに基づいて、初期時刻での各脚体2,2の膝部が伸び切らないような初期上体鉛直位置Zsが決定される。例えば、支持脚側脚体2の膝曲げ角をθsup、遊脚側脚体2の膝曲げ角をθswgとしたとき、それらの膝曲げ角θsup,θswgの正弦関数値の逆数の和がある所定値(有限値)になるように、初期上体鉛直位置が決定される。ここで、膝曲げ角θsup,θswgは、各脚体2の大腿部の軸心に対する下腿部の軸心の角度であり、各脚体2が伸びきった状態から膝部を曲げていくに伴い、“0”から増加していく角度である。なお、このような上体24の鉛直位置の決定手法は、上記特開平10−86080号公報に詳細に説明されているので、ここでは以上の説明に留める。
補足すると、ロボット1は、片脚当たり6自由度であることから、足平位置姿勢軌道および上***置姿勢軌道の初期状態(位置姿勢とその時間的変化率)が与えられれば、ロボット1の上体24及び脚体2,2の運動の初期状態は一義的にすべて決定されることになる。したがって、例えば、上体24及び脚体2,2の全体の質量がロボット1の全体の質量にほぼ一致するような場合には、上体24及び脚体2,2の運動の初期状態が与えられれば、初期全体重心鉛直速度も一義的に決定される。逆に、片脚当たり6自由度であることから、足平位置姿勢軌道および上***置姿勢軌道の初期状態の内で速度に関する状態のひとつ(例えば初期上体鉛直速度)が未定であっても、初期全体重心鉛直速度が与えられれば、未定の初期状態は一義的に決定される。
S206の処理の後、次いでS208に進み、定常歩容の候補としての歩容(定常歩容の1歩分(1周期分)の歩容)が仮に生成される。より具体的には、図8のS022で決定した定常歩容パラメータを基に、初期時刻から終端時刻までの各瞬間における目標ZMP、目標床反力鉛直成分、目標足平位置姿勢、目標上体姿勢および目標腕姿勢の瞬時値が逐次求められる。そして、求めた目標ZMPと目標床反力鉛直成分とを満足するように、図7に示した動力学モデル(倒立振子モデル)を用いて上***置を逐次決定することによって、定常歩容の初期時刻から終端時刻までの歩容を生成する。この場合、前記初期上体水平位置速度(Xs,Vxs)、初期上体鉛直位置速度(Zs,Vzs)が上体24の位置及び速度の初期状態として設定される。
尚、この歩容生成は歩容生成装置100の内部で行われるだけであって、実際のロボット1を駆動するための目標値として、歩容生成装置100から出力されることはない。
S208の処理は、具体的には、図16のフローチャートに示す如く実行される。
以下説明すると、歩容生成装置100は、まず、S300において、諸々の初期化を行なう。具体的には、歩容生成用時刻Tkが定常歩容の初期時刻Tsに初期化される。さらに、上体水平位置速度に、初期上体水平位置速度(Xs,Vxs)の最新の候補値(図15のS202もしくは後述のS216もしくはS218で決定された最新の候補値)が代入され、上体鉛直位置速度に、初期上体鉛直位置速度(Zs,Vzs)の最新値(図15のS206で決定された最新値)が代入される。また、上体姿勢角には、基準上体姿勢角の初期値、上体姿勢角速度には、基準上体姿勢角速度の初期値が代入される。
次いで、S302を経てS304において、歩容生成装置100は、歩容生成用時刻Tk(現在値)が終端時刻Te(=Ts+Tcyc)以前の時刻であるか否か(Tk≦Teであるか否か)を判断する。この判断結果が肯定的である場合には、歩容生成装置100は、S306〜S316の処理(詳細は後述する)を実行することによって、時刻Tkでの歩容の瞬時値を決定する。
次いでS318に進み、歩容生成装置100は、歩容生成用時刻Tkを所定の刻み時間ΔTkだけ増加させた後、S304の判断を再び行なう。ここで、刻み時間ΔTkは、例えば制御周期Δtと一致させておけばよい。ただし、演算量を低減するために、ΔTkをΔtよりも長い時間に設定してもよい。
S304の判断結果が肯定的である場合には、S306からS318までの処理が繰り返され、S304の判断結果が否定的になった場合には、図16の処理、すなわち、図15のS208の処理は終了する。これにより、定常歩容の初期時刻から終端時刻までの1周期分の定常歩容(仮の定常歩容)の生成が完了する。
歩容生成装置100は、上記S306〜S316で仮の定常歩容の瞬時値を決定する処理を次のように実行する。まずS306において、歩容生成装置100は、定常歩容パラメータ(より詳しくは床反力鉛直成分軌道パラメータ)を基に、図13に示した目標床反力鉛直成分軌道の時刻Tkでの瞬時値を求める。
さらに、S308において、歩容生成装置100は、定常歩容パラメータ(より詳しくはZMP軌道パラメータ)を基に、図14に示した目標ZMP軌道の時刻Tkでの瞬時値を求める。
次いでS308に進み、歩容生成装置100は、定常歩容パラメータ(より詳しくは足平軌道パラメータ、上体姿勢軌道パラメータ、及び腕姿勢軌道パラメータ)を基に、目標足平位置姿勢(支持脚側及び遊脚側の両方の目標足平位置姿勢)、目標上体姿勢および目標腕姿勢の時刻Tkでの瞬時値をそれぞれ求める。ただし、目標腕姿勢に関しては、より詳しくは両腕体の全体重心位置が決定されるが、鉛直軸(または上体24の体幹軸)まわりの角運動量を変化させる腕体の運動(腕振り運動)は、未だ決定されない。
次いでS310に進み、歩容生成装置100は、S306で求めた目標床反力鉛直成分を満足する(ロボット1の全体重心の鉛直方向の慣性力と重力との和を目標床反力鉛直成分に釣り合わせる)ように、時刻Tkでの上体鉛直位置を算出する。
具体的には、次式15および式16で表される動力学関係式(鉛直方向でのニュートンの運動方程式を離散化した式)を用いてロボット1の全体重心鉛直速度と全体重心鉛直位置とが算出される。
時刻Tkにおける全体重心鉛直速度
=時刻(Tk−ΔTk)における全体重心鉛直速度
+((時刻Tkにおける床反力鉛直成分/ロボットの全体質量)+重力加速度)*ΔTk
(ただし、重力加速度は負の値とする。)
…式15
時刻Tkにおける全体重心鉛直位置
=時刻(Tk−ΔTk)における全体重心鉛直位置
+時刻Tkにおける全体重心鉛直速度*ΔTk
…式16
そして、本実施形態では、歩容生成装置100は、上記の如く算出した時刻Tkでの全体重心鉛直位置と、目標足平位置姿勢と、基準上体姿勢(目標上体姿勢)とを基に、例えば、前記した3質点モデル(S206の処理に関して説明した3質点モデル)を用いて上体鉛直位置を求める。この場合、目標足平位置姿勢に基づき、3質点モデルにおける2つの脚質点の位置が決定される。さらに、この3質点モデルにおける全体重心の鉛直位置が、上記の如く求めた時刻Tkでの全体重心鉛直位置に一致するような上体質点の鉛直位置が決定される。そして、この上体質点の鉛直位置と目標上体姿勢(基準上体姿勢)とから上体鉛直位置が決定される。
なお、より多くの質点を有する多質点モデル(例えばロボット1の各リンクに質点を有するモデル)を用いることによって、より正確に上体鉛直位置を求めるようにしてもよい。また、上体24以外の部位の質量が上体24に比して十分に小さいような場合には、簡略的に、全体重心鉛直位置が、上体24の重心の鉛直位置に一致するものとみなし、該全体重心鉛直位置と、目標上体姿勢(基準上体姿勢)とから上体鉛直位置を決定するようにしてもよい。
次いでS314に進み、歩容生成装置100は、目標ZMPを満足するように(ロボット1の慣性力と重力との合力が目標ZMPまわりに発生するモーメントの水平成分が“0”であるという動力学的平衡条件を満足するように)、時刻Tkでの上体水平加速度(上体24の水平方向の加速度)を決定する。
この時点において、定常歩容(仮の定常歩容)の足平位置姿勢、腕姿勢、上体姿勢および上体鉛直位置の瞬時値(現在時刻Tkでの値)が決定されているので、残りの上体水平位置を決定すれば、鉛直軸まわりの角運動量を変化させる腕体の運動自由度を除いて、ロボット1の全体の目標運動が決定されることとなる。したがって、上体水平位置を決定すれば、床反力の鉛直軸まわりのモーメントを除き、すべての床反力も一義的に決定される。
なお、本実施形態では、定常歩容(仮の定常歩容)の目標床反力鉛直成分及び目標ZMPは、それぞれ前記図8のS022で決定した定常歩容パラメータの床反力鉛直成分軌道パラメータ、目標ZMP軌道パラメータによって規定される。したがって、上体水平位置の決定に応じて従属的に決定される床反力は、床反力水平成分のみである。
補足すると、本実施形態のロボット1は、各脚体2の自由度が6自由度であることから、目標足平位置姿勢と目標上***置姿勢とを決定すれば、各脚体2の各部の位置姿勢も一義的に決定されることとなる。なお、鉛直軸まわりの角運動量を変化させる腕の運動自由度は、後述するように、スピン力を打ち消すために用いられる。
S314では、例えば図7の動力学モデル(倒立振子モデル)に係わる前記式04を用いて上体水平加速度が求められる。より具体的には、現在時刻Tkの上体鉛直位置と、時刻(Tk−ΔTk)の上体水平位置と、現在時刻Tkの目標上体姿勢とから、現在時刻Tkでの上体質点24bの鉛直位置及び水平位置が決定される。なお、時刻(Tk−ΔTk)までの上体水平位置の時系列又は時刻(Tk−ΔTk)での歩容状態を基に時刻Tkでの上体水平位置を補間的に推定し、その推定した上体水平位置を時刻(Tk−ΔTk)の上体水平位置の代わりに用いてもよい。
また、現在時刻Tkでの床反力鉛直成分から、上体質点24bに作用する重力(=mb*g)を差し引いた値を、上体質点24bの質量mbにより除算することによって、現在時刻Tkでの上体質点24bの鉛直加速度が求められる。
そして、上記の如く求めた上体質点24bの鉛直位置、水平位置、鉛直加速度をそれぞれ、前記式04のZb、Xb、d2Zb/dt2に代入すると共に、現在時刻Tkでの目標ZMPの水平位置および鉛直位置を式04のXzmp,Zzmpに代入し、さらに、同式04のMzmp_yを“0”にしてなる式を、d2Xb/dt2について解くことにより、現在時刻Tkでの上体質点水平加速度d2Xb/dt2が算出される。そして、この上体質点水平加速度d2Xb/dt2が現在時刻kでの上体水平加速度として求められる。
尚、より厳密な動力学モデルを用いて、目標ZMPまわりの床反力モーメントの水平成分を“0”にするような上体水平加速度を探索的に求めるようにしてもよい。
次いでS316に進み、歩容生成装置100は、S314で求めた上体水平加速度を2階積分することにより現在時刻Tkでの上体水平位置を算出する。より詳しくは、上体水平加速度に刻み時間ΔTkを乗じてなる値を時刻Tk−ΔTkでの上体水平速度に加算することによって、現在時刻Tkでの上体水平速度が求められる。さらにその上体水平速度に刻み時間ΔTkを乗じてなる値を時刻Tk−ΔTkでの上体水平位置に加算することによって現在時刻Tkでの上体水平位置が求められる。
以上がS306〜S316で実行される歩容の生成処理の詳細である。
図15のS208の処理を完了した後、S210に進み、歩容生成装置100は、生成した歩容(仮定常歩容)の終端上体水平位置・速度を、その瞬間の支持脚に対応する支持脚座標系(図12のX'''軸及びY'''軸を水平方向の2軸とする支持脚座標系)から見た値に変換し、その値を(Xe,Vxe)とする(Xe:終端上体水平位置、Vxe:終端上体水平速度)。
次いでS212に進み、図示の如く、歩容生成装置100は、初期上体水平位置速度(Xs,Vxs)と終端上体水平位置速度(Xe,Vxe)との差を算出する。この差(Xs−Xe,Vxs−Vxe)を上体水平位置速度境界条件誤差(errx,errv)と呼ぶ。定常歩容は、前記境界条件を満たす歩容であるので、(Xs,Vxs)と(Xe,Vxe)とが一致している必要がある。従って、上体水平位置速度境界条件誤差(errx,errv)が零またはほぼ零である必要がある。本実施形態では、以下のように、上体水平位置速度境界条件誤差(errx,errv)がほぼ零となる(Xs,Vxs)が探索的に求められる。
次いでS214に進み、歩容生成装置100は、上体水平位置速度境界条件誤差(errx,errv)が、あらかじめ適宜設定された許容範囲内にあるか否か(errx,errvのいずれもが、許容範囲内にあるか否か)を判断する。
S214の判断結果が否定的であるときにはS216に進む。このS216では、(Xs,Vxs)の近辺に複数(本実施形態では2つ)の初期値候補(Xs+ΔXs,Vxs),(Xs,Vxs+ΔVxs)が決定される。ここで、ΔXs,ΔVxsは、それぞれXs,Vxsに対する所定の微小変化量を意味している。そして、これらの初期値候補のそれぞれを上体水平位置速度の初期状態として、前記S208と同様の処理によって定常歩容(仮定常歩容)が歩容パラメータを用いて生成される。さらに、その生成された定常歩容の終端上***置速度を、その瞬間の支持脚に対応する支持脚座標系(図12のX'''軸及びY'''軸を水平方向の2軸とする支持脚座標系)から見た値に変換した値(Xe+ΔXe1,Vxe+ΔVxe1),(Xe+ΔXe2,Vxe+ΔVxe2)が求められる。ここで、(Xe+ΔXe1,Vxe+ΔVxe1)は(Xs+ΔXs,Vxs)に対応する終端上***置速度を意味し、(Xe+ΔXe2,Vxe+ΔVxe2)は(Xs,Vxs+ΔVxs)に対応する終端上***置速度を意味している。なお、この場合の定常歩容(仮定常歩容)の生成処理では、上体水平位置速度以外の状態量の初期状態は、例えば上体水平位置速度の初期値候補を(Xs,Vxs)とした場合と同一に設定すればよい。S216ではさらに、前記S210と同様の処理によって、各初期値候補とこれに対応する終端上***置速度との差、すなわち、各初期値候補(Xs+ΔXs,Vxs),(Xs,Vxs+ΔVxs)のそれぞれに対応する上体水平位置速度境界条件誤差が求められる。
次いで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の判断結果が否定的となる限りは歩容生成装置100は、S206〜S218の処理を繰り返す。そして、S214の判断結果が肯定的になると、繰り返しループ(S204)を抜けてS220に進む。この場合、S204の繰り返しループを抜けたときの直前に生成された仮定常歩容が、境界条件を満たす定常歩容として得られることとなる。
S220では、S204の繰り返しループのS208で最終的に生成した仮定常歩容における初期上体水平位置速度の初期値候補(Xs,Vxs)と、初期上体鉛直位置速度(Zs,Vzs)とを、それぞれ求めるべき定常歩容の初期上体水平位置速度(X0,Vx0)、初期上体鉛直位置速度(Z0,Vz0)として決定する。
次いでS222に進み、歩容生成装置100は、定常歩容初期発散成分(定常歩容の初期時刻Tsでの発散成分の値)q0を算出する。
本実施形態では、歩容の発散成分の値は、以下に説明するように定義される。そして、S222では、この定義に従って、定常歩容初期発散成分q0が算出される。
まず、図7の倒立振子モデルにおける上体質点24bの運動と、床反力モーメント(支持脚座標系の原点まわりの床反力モーメント)との間の関係を表す前記式03を、状態方程式により表現すると次式100となる。なお、ここでは、ロボット1の移動時の上体24の高さ(鉛直位置)の、平均的な高さに対する相対的な変動量(上体24の高さの分散)は十分に小さいものとして、式03の右辺の第2項のZbが、上体質点24bの平均的な高さとしてあらかじめ設定された一定値hに一致するものとしている。また、ここでは、前記式03の床反力モーメントMb_yを、倒立振子に対する入力モーメントとして、Minと表記している。
この式100を離散時間系での表現に書き直すことによって、次式102の状態方程式が得られる。
XVb(k+1)=A(k)*XVb(k)+B(k)*Min(k) ……式102
なお、添え字(k)、(k+1)を付した変数は、それぞれ、離散時間系のk番目の時刻での値、k+1番目の時刻での値を意味する。以降の説明では、k番目の時刻、k+1番目の時刻をそれぞれ、単に時刻k、時刻k+1、というように表現する場合がある。
式102におけるXVbは、式100に関するただし書きで定義した通り、上体質点24bの水平位置Xbと、その時間的変化率である水平速度Vxbとをそれぞれ状態変数とする状態変数ベクトル(縦ベクトル)である。
また、式102におけるA(k)、B(k)は、それぞれ、2次の正方行列(状態遷移行列)、2次の縦ベクトルであり、それぞれの各成分値が以下の式104a〜104c,106a〜106cの如く決定されるものである。なお、ΔTは離散時間系の刻み時間であり、ω0は下記のただし書きの式108によって定義される角周波数値である。また、exp( )は、自然対数の底の指数関数である。
この場合、式104a〜104c,106a〜106cと式108とから明らかなように、A(k),B(k)の各成分値は、上体質点24bの鉛直加速度d2Zb/dt2(鉛直方向の運動加速度d2Zb/dt2)の値に依存して定まる。従って、A(k),B(k)の各成分値は、上体質点24bの鉛直方向の慣性力(=−mb*d2Zb/dt2)に依存する値、すなわち該慣性力の関数値となる。なお、上体質点24aに作用する重力は一定値であるから、A(k),B(k)の各成分値は、別の言い方をすれば、上体質点24bの鉛直方向の慣性力と上体質点24bに作用する重力との合力、または、該合力に釣り合う床反力鉛直成分の関数値でもある。
補足すると、本実施形態の如く倒立振子の上体質点24bの質量mbがロボット1の全体質量に一致するものとした場合には、上体質点24bの鉛直方向の慣性力と上体質点24bに作用する重力との合力に釣り合う床反力鉛直成分は、ロボット1に作用する床反力鉛直成分(全床反力の並進床反力鉛直成分)に一致する。
上記式102の状態方程式により表される系では、状態変数ベクトルXVbの初期値XVb(0)(k=0の時刻(時刻0)でのXVbの値)と、時刻0から時刻k−1までの入力モーメントMin(床反力モーメントの水平成分Mb_y)の時系列とが与えられたとき、任意の時刻k(>0)での状態変数ベクトルXVbの値XVb(k)は、次式110により与えられることとなる。
なお、式110中のただし書きで定義したφ(k,j)に関しては、j=kの場合はφ(k,j)≡単位行列とする。
次に、前記した定常歩容での倒立振子モデルの挙動に着目し、定常歩容の初期時刻Tsをk=0の時刻、定常歩容の終端時刻Te(=Ts+Tcyc)をk=kcyc(ただし、kcyc≡Tcyc/ΔT)の時刻とし、初期時刻Tsでの定常歩容の運動により規定される状態変数ベクトルXVbがXVb(0)であるとする。そして、定常歩容の終端時刻Te(k=kcycの時刻)における状態変数ベクトルXVbのうち、定常歩容の初期時刻Tsでの状態変数ベクトルの値XVb(0)に依存する成分をXVb(kcyc)とおく。このとき、XVb(kcyc)と、XVb(0)との間の関係は、上記式110に基づいて、次式112により表されることとなる。
XVb(kcyc)=φ(kcyc,0)*XVb(0) ……式112
ただし、φ(kcyc,0)=A(kcyc-1)*……*A(1)*A(0)
さらに、この式112の右辺の行列φ(kcyc,0)の2つの固有値をλ1,λ2、それぞれの固有値に対応する固有ベクトル(縦ベクトル)を(a11,a21)T、(a12,a22)T、これらの固有ベクトルをそれぞれ第1列、第2列とする2次の正方行列をΓcycとおき、この行列Γcycを用いてφ(kcyc,0)を対角化してなる行列をΛとおく。すなわち、Λを次式114により定義する。以降、行列Γcycを対角化用行列という。
この式114と前記式112とから次式116が得られる。
Γcyc-1*XVb(kcyc)=Λ*Γcyc-1*XVb(0) ……式116
なお、上記対角化用行列Γcycによる対角化の対象とする行列φ(kcyc,0)は、前記式112のただし書きに示したように、定常歩容の1周期の初期時刻(時刻0)から、終端時刻(時刻kcyc)のまでの期間内の各時刻(詳しくは時刻0から時刻kcyc−1までの刻み時間ΔT毎の各時刻)での状態遷移行列A(0)、A(1)、……、A(kcyc-1)の積であるから、定常歩容の1周期の期間内での上体質点24bの慣性力の時系列に依存して定まるものとなる。従って、対角化用行列Γcycも、結果的に、その各成分値が定常歩容の1周期の期間内での上体質点24bの慣性力の時系列に依存して定まるものとなる。
ここで、任意の時刻kでの状態変数ベクトルXVb(k)を、対角化用行列Γcycの逆行列Γcyc-1によって線形変換してなるベクトル(以降、変換状態変数ベクトルという)を(p(k),q(k))Tとおく。すなわち、変換状態変数ベクトル(p(k),q(k))Tを次式118により定義する。
(p(k),q(k))T≡Γcyc-1*XVb(k) ……式118
この式118と前記式116とから、次式120が得られる。
(p(kcyc),q(kcyc))T=Λ*(p(0),q(0))T ……式120
この式120において、λ1>1であれば、p(kcyc)の絶対値>初期値p(0)の絶対値となり、λ1≦1であれば、p(kcyc)の絶対値≦初期値p(0)の絶対値となる。同様に、λ2>1であれば、q(kcyc)の絶対値>初期値q(0)の絶対値となり、λ2≦1であれば、q(kcyc)の絶対値≦初期値q(0)となる。
一方、定常歩容におけるg+d2Zb/dt2の値は、g+d2Zb/dt2≦0となる状態に常に保持されるということはなく、g+d2Zb/dt2≦0となる状態と、g+d2Zb/dt2>0となる状態とが交互に生じると考えてよい。このような定常歩容では、一般にφ(kcyc,0)の2つの固有値λ1,λ2の一方が、“1”よりも大きい値となり、他方が“1”よりも小さい値となる。
そこで、以降、λ1<1、λ2>1であるとする。すなわち、変換状態変数ベクトル(p(k),q(k))Tのうちの、第1成分p(k)が、“1”よりも小さい固有値λ1に対応する成分、第2成分q(k)が、“1”よりも大きい固有値λ2に対応する成分であるとする。このとき、p(k)は、無限に繰り返される定常歩容において収束性を有する運動成分の状態量としての意味を持ち、q(k)は、無限に繰り返される定常歩容において発散性を有する運動成分の状態量としての意味を持つ。
そこで、本実施形態では、式118により定義した変換状態変数ベクトル(p(k),q(k))Tのうちの第2成分q(k)を前記発散成分として定義する。このようにして定義される発散成分q(k)は、状態変数Xb(k),Vxb(k)の線形結合値となる。この場合、その線形結合において、Xb(k),Vxb(k)にそれぞれ掛かる重み係数は、定常歩容の1周期の期間内での上体質点24bの慣性力の時系列に依存して定まるものとなる。なお、式118により定義した変換状態変数ベクトル(p(k),q(k))Tのうちの第1成分p(k)を収束成分と言う。
なお、前記式118で定義される収束成分p(k)及び発散成分q(k)は、詳しくはサジタルプレーン上での収束成分q(k)及び発散成分q(k)(X軸方向での上体質点24bの水平位置Xbと水平速度Vxbとを成分とする状態変数ベクトルXVbに対応する収束成分及び発散成分)であるが、これと同様に、ラテラルプレーン上での収束成分及び発散成分も定義される。具体的には、式118の右辺の状態変数ベクトルXVb(k)の各成分Xb、Vxbをそれぞれ、Y軸方向での上体質点24bの水平位置と水平速度とに置き換えた式によって、ラテラルプレーン上での収束成分及び発散成分が定義される。この場合、式118の行列Γcyc-1はX軸方向及びY軸方向のいずれの軸方向に関しても同一である。
以上説明した発散成分qの定義に従って、S222では、定常歩容初期発散成分q0は次のように算出される。
すなわち、歩容生成装置100は、定常歩容の初期時刻Tsから終端時刻Tsまでの1周期の期間内の刻み時間ΔT毎の各時刻Tk(離散時間系で言えばk=0の時刻からk=kcyc−1の時刻までの各時刻k)における上体質点24bの慣性力の瞬時値を、定常歩容パラメターを基に算出する。この場合、倒立振子の上体質点24bの質量mbがロボット1の全体の質量に一致するものとした場合には、定常歩容での上体質点24bの鉛直方向の慣性力と該上体質点24bに作用する重力との合力が、定常歩容における床反力鉛直成分に釣り合うものとなる。そこで、本実施形態では、歩容生成装置100は、定常歩容パラメータのうちの前記床反力鉛直成分軌道パラメータを基に、定常歩容の1周期の期間内の各時刻における床反力鉛直成分の瞬時値を算出する。該瞬時値は、図16のS306で算出される値と同じである。そして、歩容生成装置100は、その算出した床反力鉛直成分の各瞬時値を上体質点24bの質量mb(=ロボット1の全体質量)で除算してなる値を前記式100の(g+d2Zb/dt2)の値として、前記式104a〜104cによって、状態遷移行列A(k)(k=0,1,……,kcyc−1)を算出する。
補足すると、前記した3質点モデルなどの多質点モデル(幾何学モデル)を用いて、定常歩容におけるロボット1の上体24の鉛直方向の慣性力(又は鉛直加速度)を算出し、その算出した慣性力(又は鉛直加速度)を、上体質点24bの慣性力(又は鉛直加速度)として用いることによって、各時刻での状態遷移行列A(k)(k=0,1,……,kcyc−1)を算出するようにしてもよい。例えば、前記3質点モデルを用いて、次のようにして、定常歩容における上体質点24bの慣性力の瞬時値を算出するようにしてもよい。すなわち、定常歩容の足平軌道パラメータを基に、前記3質点モデルにおける2つの脚質点の鉛直方向の慣性力の瞬時値を算出すると共に、床反力鉛直成分軌道を基に、ロボット1の全体重心の鉛直方向の慣性力の瞬時値を算出する。そして、全体重心の鉛直方向の慣性力の瞬時値から、2つの脚質点の鉛直方向の慣性力の瞬時値を差し引いたものを、上体質点24bの鉛直方向の慣性力の瞬時値として算出する。
歩容生成装置100は、上記の如く定常歩容の初期時刻Tsから終端時刻Tsまでの1周期の期間におけるkcyc個のA(k)(k=0,1,…,kcyc−1)を算出した後、これらのA(k)を掛け合わせることによって、式112の右辺の行列φ(kcyc,0)(=A(kcyc-1)*…*A(1)*A(0))を算出する。
さらに歩容生成装置100は、この行列φ(kcyc,0)の固有値λ1,λ2と、これらに対応する固有ベクトル(a11,a21)T、(a12,a22)Tとを算出し、それらの固有ベクトルから、前記式114のただし書きに従って、前記対角化用行列Γcycを決定する。そして、歩容生成装置100は、この対角化用行列Γcycの逆行列Γcyc-1を算出する。
また、歩容生成装置100は、S220で決定した定常歩容の初期上体水平位置速度(X0,Vx0)と、定常歩容の上体姿勢角の初期状態とから、定常歩容の初期時刻Tsでの倒立振子の上体質点24bの水平位置及び水平速度の組である初期上体質点位置速度を決定する。
そして、歩容生成装置100は、上記の如く求めた逆行列Γcyc-1と、初期上体質点水平位置速度とから、前記式118に基づいて定常歩容初期発散成分q0を算出する。より詳しくは、初期上体質点水平位置速度のX軸方向成分(X軸方向での状態量ベクトル)及びY軸方向成分(Y軸方向での状態量ベクトル)に、それぞれΓ-1を乗じることによって、X軸方向及びY軸方向の各軸方向での初期発散成分q0が算出される。
なお、本実施形態では、発散成分q(k)を前記式118により定義したが、簡易的に、上体質点24bの水平位置Xbと水平速度Vxbとから、次式122により発散成分q(k)を定義するようにしてもよい。
q(k)=Xb(k)+Vxb(k)/ωa ……式122
この式122におけるωaはあらかじめ定めた所定値(例えば、前記式108の右辺のd2Zb/dt2を“0”としてなるω0の値、又はそれに近い値)である。
以上の如く定常歩容の初期発散成分q0を算出した後、S224に進み、歩容生成装置100は、定常歩容の初期発散成分q0を今回歩容支持脚座標系から見た値に変換し、これをq0”として求める。また、歩容生成装置100は、初期上体鉛直位置速度(Z0,Vz0)を今回歩容支持脚座標系から見た値に変換し、これを(Z0”,Vz0”)として求める。
補足すると、(Z0”,Vz0”)は、第2旋回歩容の支持脚座標系(図12のX”軸、Y”軸を水平面の2軸とする支持脚座標系)から見た第2旋回歩容終端上体鉛直位置速度に一致する。また、q0”も第2旋回歩容の支持脚座標系から見た第2旋回歩容終端発散成分に一致している。したがって、これらの性質を用いて、(Z0”,Vz0”)およびq0”を算出するようにしても良い。
以上により、図8のS024の処理、すなわち定常歩容の初期状態を求めるサブルーチン処理が終了する。
次いで、図8のS026に進み、歩容生成装置100は、今回歩容の歩容パラメータを決定(一部は仮決定)する。S026では、より具体的には、図17のフローチャートに示す処理が実行される。
まず、S600において、歩容生成装置100は、今回歩容の足平位置姿勢軌道が定常歩容の足平位置姿勢軌道につながるように、今回歩容の足平軌道パラメータを決定する。
具体的には、今回歩容初期遊脚足平位置姿勢(今回歩容の初期の遊脚足平位置姿勢)は、今回歩容支持脚座標系から見た前回歩容終端支持脚足平位置姿勢(現在の遊脚足平位置姿勢)に設定される。
今回歩容初期支持脚足平位置姿勢(今回歩容の初期の支持脚足平位置姿勢)は、今回歩容支持脚座標系から見た前回歩容終端遊脚足平位置姿勢(現在の支持脚足平位置姿勢)に設定される。
また、今回歩容終端遊脚足平位置姿勢は、今回歩容の遊脚足平22を、該今回歩容終端遊脚足平位置姿勢から、滑らせないようにピッチ方向に(該足平22のつま先を下げる向きに)所定角度だけ回転させた状態での該足平22の位置姿勢が、次回歩容支持脚座標系に対応する前記着地時足平基準位置姿勢に合致するように決定される。
今回歩容終端支持脚足平位置姿勢は、今回歩容の支持脚足平22を、今回歩容支持脚座標系に対応する着地時足平基準位置姿勢から、滑らせないようにピッチ方向に(該足平22の踵を持上げる向きに)所定角度だけ回転させた状態での該足平22の位置姿勢とされる。
次いで、S602に進み、歩容生成装置100は、今回歩容の上体姿勢軌道パラメータを決定する。この上体姿勢軌道パラメータは、それにより規定される上体姿勢軌道が、定常歩容の上体姿勢軌道に連続してつながる(今回歩容終端での上体姿勢角及び角速度がそれぞれ定常歩容初期の上体姿勢角及び角速度に一致する)ように決定される。この場合、本実施形態では、今回歩容の上体姿勢軌道パラメータにより規定される上体姿勢は、定常歩容の上体姿勢と同様に、定常的に一定姿勢である前記基準上体姿勢(上体24の体幹軸が鉛直方向を向く姿勢)に設定される。
なお、今回歩容の上体姿勢軌道は、定常歩容の上体姿勢軌道に連続的につながるように設定されておれば、今回歩容の初期から終端まで経時的に変化するように設定してもよい。
次いで、S604に進み、歩容生成装置100は、今回歩容の腕姿勢軌道パラメータを決定する。この腕姿勢軌道パラメータは、今回歩容の腕姿勢軌道が前記定常歩容の腕姿勢軌道に連続してつながるようにして、定常歩容の腕姿勢軌道パラメータと同様に決定される。
なお、ここで決定される今回歩容の腕姿勢軌道パラメータは、定常歩容の腕姿勢軌道パラメータと同様に、鉛直軸(あるいは上体24の体幹軸)まわりの両腕体の角運動量変化に関すること以外のパラメータ(例えば上体24に対する腕体の手先の相対高さや腕体全体の相対重心位置などを規定するパラメータ)である。
次いで、S606に進み、歩容生成装置100は、今回歩容の床反力鉛直成分軌道パラメータを、それにより規定される床反力鉛直成分軌道が前記図5に示したパターンになるように決定する。ただし、今回歩容の床反力鉛直成分軌道パラメータは、今回歩容のロボット1の全体重心鉛直位置速度と床反力鉛直成分軌道とのいずれもが、前記定常歩容に連続してつながるように決定される。
具体的には、まず、図8のS024の処理(定常歩容初期状態の決定処理)で最終的に求めた定常歩容の初期上体鉛直位置速度を今回歩容支持脚座標系から見た値に変換した値(Z0”,Vz0”)、すなわち、図15のS224で求めた(Z0”,Vz0”)等を基に、今回歩容支持脚座標系から見た定常歩容の初期全体重心鉛直位置速度が求められる。
例えば、前記した3質点モデル(S206の処理に関して説明した3質点モデル)を用いて定常歩容の初期全体重心鉛直位置速度が求められる。この場合、今回歩容支持脚座標系から見た定常歩容初期の目標足平位置姿勢とその時間的変化率(変化速度)とに基づき、3質点モデルにおける2つの脚質点の位置・速度が求められる。さらに、上記(Z0”,Vz0”)と、定常歩容初期の上体姿勢角(=基準上体姿勢角)及びその時間的変化率とから、3質点モデルにおける上体質点の位置・速度が求められる。そして、これらの3つの質点の位置・速度から、その3質点の重心位置及び速度が、定常歩容の初期全体重心鉛直位置速度として算出される。
なお、より多くの質点を有する多質点モデル(例えばロボット1の各リンクに質点を有する幾何学モデル)を用いることによってより正確に、定常歩容の初期全体重心鉛直位置速度を求めるようにしてもよい。また、上体24以外の部位の質量が上体24に比して十分に小さいような場合には、上記(Z0”,Vz0”)と、定常歩容初期の上体姿勢角(=基準上体姿勢角)及びその時間的変化率とから、定常歩容の初期全体重心鉛直位置速度を求めるようにしてもよい。
このようにして求めた定常歩容の初期全体重心鉛直位置速度を、前記式13と下記式41の終端全体重心鉛直位置速度に代入すると共に、前回歩容の瞬時値(より詳しくは、前回歩容の終端状態を今回歩容支持脚座標系から見た値)の全体重心鉛直位置および速度を、前記式13と下記式41の初期全体重心鉛直位置および速度に代入し、式13と式41の関係を満足するように、今回歩容の床反力鉛直成分軌道パラメータが決定される。ただし、式13と式41における積分値は今回歩容の初期から終端までの期間の積分値とする。
終端全体重心鉛直速度−初期全体重心鉛直速度
=(床反力鉛直成分/ロボットの質量)の1階積分
+重力加速度の1階積分
…式41
(ただし、重力加速度は負の値とする。)
より具体的には、まず、図5に示したような床反力鉛直成分軌道を規定する床反力鉛直成分軌道パラメータ(折れ点の時刻等)のうちの、少なくとも2つのパラメータ(例えば、床反力鉛直成分の最大値と最小値)を独立な未知変数として、その未知変数の値を、式13と式41とからなる連立方程式を解くことによって決定する。
次いで、S608に進み、歩容生成装置100は、今回歩容のZMP軌道が、安定余裕が高くかつ急激な変化をしないように、該ZMP軌道を規定するZMP軌道パラメータ(ZMP軌道の折れ点の時刻や位置等)を決定する。例えば、ZMP軌道が、図6に示したようなパターンになるようにZMP軌道パラメータが仮決定される。ただし、今回歩容のZMP軌道が前記定常歩容のZMP軌道に連続してつながるように(今回歩容終端におけるZMPの位置が定常歩容初期のZMPの位置に一致するように)、今回歩容のZMP軌道パラメータが仮決定(暫定的に決定)される。
なお、S608で決定される今回歩容のZMP軌道パラメータは、仮決定されたものであり、後述するように修正される。以降、その修正が終了するまでの仮決定されたZMP軌道パラメータにより規定される今回歩容の目標ZMPを、以降、仮目標ZMPと呼ぶ。その仮決定されたZMP軌道パラーメータを含む今回歩容の歩容パラメータを仮今回歩容パラメータという。
図8の説明に戻って、歩容生成装置100は、上記のごとくS026の処理を行った後、次いでS028において、今回歩容の歩容パラメータ(詳しくはZMP軌道パラメータ)を修正する処理を実行する。この処理では、今回歩容の上***置姿勢軌道を定常歩容に連続させ、もしくは近づけるべく歩容パラメータのうちのZMP軌道パラメータが修正される。
この処理は、図18のフローチャートに示す如く実行される。
まずS700を経てS702に進み、歩容生成装置100は、仮決定されたZMP軌道パラメータを含む仮今回歩容パラメータ(暫定的な今回歩容パラメータ)を基に、今回歩容の終端時刻までの仮今回歩容を生成する。
S702では、図19のフローチャートに示す処理が実行される。
以下説明すると、歩容生成装置100は、まず、S800において、仮今回歩容の生成用時刻Tk等の初期化を行なう。具体的には、仮今回歩容の生成用時刻Tkが現在時刻tに初期化される。また、時刻t−Δtで歩容生成装置100が既に決定した目標上***置及び目標上体速度、目標上体姿勢角及びその角速度、目標足平位置姿勢、目標腕姿勢など、時刻t−Δtでの目標歩容の運動状態(今回歩容支持脚座標系で見た運動状態)が、仮今回歩容の現在時刻tの直前の初期運動状態として設定される。
次いで、S802を経てS804において、歩容生成装置100は、仮今回歩容の生成用時刻Tk(現在値)が今回歩容の終端時刻Tcurr以前の時刻であるか否か(Tk≦Tcurrであるか否か)を判断する。この判断結果が肯定的である場合には、歩容生成装置100は、S806〜S816の処理(詳細は後述する)を実行することによって、時刻Tkでの歩容の瞬時値を決定する。
次いでS818に進み、歩容生成装置100は、仮今回歩容の生成用時刻Tkを、所定の刻み時間ΔTkだけ増加させた後、S804の判断を再び行なう。ここで、刻み時間ΔTkは、例えば制御周期Δtと一致させておけばよい。ただし、演算量を低減するために、ΔTkをΔtよりも長い時間に設定してもよい。
S804の判断結果が肯定的である場合には、S806からS818までの処理が繰り返され、S804の判断結果が否定的になった場合には、図19の処理、すなわち、図18のS702の処理は終了する。これにより、今回歩容の初期時刻から終端時刻までの仮今回歩容の生成が完了する。
歩容生成装置100は、上記S806〜S816で仮今回歩容の瞬時値を決定する処理を次のように実行する。この仮今回歩容の瞬時値の決定の仕方は、図16のS306〜S316で定常歩容(仮の定常歩容)の瞬時値を決定する仕方と同様である。
まずS806において、歩容生成装置100は、仮今回歩容パラメータ(より詳しくは床反力鉛直成分軌道パラメータ)を基に、図5に示した目標床反力鉛直成分軌道の時刻Tkでの瞬時値を求める。
次いで、S808において、歩容生成装置100は、仮今回歩容パラメータ(より詳しくは仮決定のZMP軌道パラメータ)を基に、図6に示した目標ZMP軌道(仮目標ZMP軌道)の時刻Tkでの瞬時値を求める。
次いでS810に進み、歩容生成装置100は、仮今回歩容パラメータ(より詳しくは足平軌道パラメータ、上体姿勢軌道パラメータ、及び腕姿勢軌道パラメータ)を基に、目標足平位置姿勢、目標上体姿勢および目標腕姿勢の時刻Tkでの瞬時値をそれぞれ求める。ただし、目標腕姿勢に関しては、より詳しくは両腕体の全体重心位置が決定されるが、鉛直軸(または上体24の体幹軸)まわりの角運動量を変化させる腕体の運動(腕振り運動)は、未だ決定されない。
次いでS812に進み、歩容生成装置100は、S806で求めた目標床反力鉛直成分を満足する(ロボット1の全体重心の鉛直方向の慣性力と重力との和を目標床反力鉛直成分に釣り合わせる)ように、時刻Tkでの上体鉛直位置を算出する。その算出の仕方は、図16のS312(定常歩容の上体鉛直位置の瞬時値を算出する処理)と同じでよい。ただし、S812で使用する多質点モデルは、S312で使用するものと異ならせてもよい。
次いでS814に進み、歩容生成装置100は、仮今回歩容の時刻Tkでの上体水平加速度を決定する処理を実行する。
具体的には、仮今回歩容の生成用の時刻Tkが現在時刻t(歩容生成装置100の現在の制御周期の時刻)に一致する場合には、歩容生成装置100は、補償全床反力モーメント分配器110から与えられたモデル操作床反力モーメント(現在の制御周期での値)が目標ZMPまわりに発生するように(ロボット1の慣性力と重力との合力が目標ZMPまわりに発生するモーメントの水平成分がモデル操作床反力モーメントに釣り合うように)、仮今回歩容の時刻Tkでの上体水平加速度を決定する。
言い換えると、ロボット1の慣性力と重力との合力が目標ZMPまわりに発生するモーメントがモデル操作床反力モーメントの符号を反転したモーメントに一致するように、時刻Tkでの上体水平加速度が決定される。
また、仮今回歩容の生成用の時刻Tkが、現在時刻tよりも将来の時刻である場合(Tk>現在時刻tである場合)には、歩容生成装置100は、目標ZMPを満足するように(ロボット1の慣性力と重力との合力が目標ZMPまわりに発生するモーメントの水平成分が“0”であるという動力学的平衡条件を満足するように)、時刻Tkでの上体水平加速度を決定する。
これらの場合において、仮今回歩容の時刻Tkでの上体水平加速度2を算出する処理は、例えば図7の動力学モデル(倒立振子モデル)を用いて行なわれる。
具体的には、仮今回歩容の時刻Tkの上体鉛直位置と、時刻(Tk−ΔTk)の上体水平位置と、時刻Tkでの目標上体姿勢とから、時刻Tkでの上体質点24bの鉛直位置及び水平位置が決定される。なお、時刻Tkが現在時刻tである場合には、時刻(Tk−ΔTk)の上体水平位置としては、S800で設定した初期運動状態での上体水平位置が用いられる。
補足すると、時刻(Tk−ΔTk)までの上体水平位置の時系列又は時刻(Tk−ΔTk)での歩容状態を基に時刻Tkでの上体水平位置を補間的に推定し、その推定した上体水平位置を時刻(Tk−ΔTk)の上体水平位置の代わりに用いてもよい。
また、仮今回歩容の時刻Tkでの床反力鉛直成分から、上体質点24bに作用する重力(=mb*g)を差し引いた値を、上体質点24bの質量mbにより除算することによって、時刻Tkでの上体質点24bの鉛直加速度が求められる。
そして、Tk=現在時刻tである場合には、上記の如く求めた上体質点24bの鉛直位置、水平位置、鉛直加速度をそれぞれ、前記式04のZb、Xb、d2Zb/dt2に代入すると共に、時刻Tkでの目標ZMPの水平位置および鉛直位置を式04のXzmp,Zzmpに代入し、さらに、同式04のMzmp_yを、モデル操作床反力モーメント(現在値)に一致させてなる式を、d2Xb/dt2について解くことにより、時刻Tkでの上体質点水平加速度d2Xb/dt2が算出される。そして、この上体質点水平加速度d2Xb/dt2が時刻Tkでの上体水平加速度として求められる。
また、Tk>現在時刻tである場合には、式04のMzmp_yを、“0”としてなる式をd2Xb/dt2について解くことにより、時刻Tkでの上体水平加速度が算出される。この場合、式04のMzmp_yを、“0”とすること以外の処理は、Tk=現在時刻tである場合と同様である。
尚、より厳密な動力学モデルを用いて、目標ZMPまわりの床反力モーメントの水平成分をモデル操作床反力モーメントに一致させ、あるいは、“0”とするような上体水平加速度を探索的に求めるようにしてもよい。
次いでS816に進み、歩容生成装置100は、S814で求めた上体水平加速度を2階積分することにより現在時刻Tkでの上体水平位置を算出する。この算出の仕方は、図16のS314と同じである。
以上が図18のS702で歩容生成装置100が実行する処理(仮今回歩容の生成処理)の詳細である。
歩容生成装置100は、以上のごとくS702の処理を実行した後、次にS704の処理を実行する。
S704では、歩容生成装置100は、S702で生成した仮今回歩容の終端での上体水平位置速度(Xe,Vxe)を基に、終端発散成分qe1(仮今回歩容の終端での発散成分qe1)を算出する。
具体的には、歩容生成装置100は、まず、(Xe,Vxe)と仮今回歩容の終端での上体姿勢(本実施形態では基準上体姿勢)とから、図7の倒立振子モデルの上体質点24bの水平位置速度(水平位置及び水平速度)を決定する。そして、この上体質点水平位置速度から、前記した図15のS222と同様に、前記式118に基づいて、仮今回歩容の終端発散成分qe1を算出する。この場合に、qe1を算出するために用いるΓ-1は、S222の処理で算出したものと同じである。
次いでS706に進み、歩容生成装置100は、上記の如く求めた仮今回歩容の終端発散成分qe1と、図15のS224で求めた定常歩容の初期発散成分q0”との差である終端発散成分誤差errq(=qe1−q0'')を算出する。
さらに、S708に進んで、歩容生成装置100は、上記の如く求めた終端発散成分誤差errqが許容範囲内(“0”近傍の範囲内)にあるか否か、すなわち、errqが“0”もしくはほぼ“0”であるか否かを判断する。なお、S708の判断は、詳しくは、X軸方向及びY軸方向の各軸方向の終端発散成分誤差errqに対して行なわれる。そして、X軸方向及びY軸方向の両軸方向の終端発散成分誤差errqが許容範囲内にある場合にS708の判断結果が肯定的になり、いずれかの軸方向の終端発散成分誤差errqが許容範囲内に無い場合には、がS708の判断結果が否定的になる。
このS708の判断結果が否定的である場合には、S710に進み、歩容生成装置100は、a=Δa(Δa:所定の微小量)として、現在の仮目標ZMP軌道を台形パターンの修正量によって図20に示す如く修正してなる目標ZMP軌道を用いて、前記S702と同様に、終端時刻までの仮今回歩容を生成する。すなわち、歩容生成装置100は、S702での仮今回歩容の生成に用いた仮目標ZMP軌道の代わりに、それを修正してなる目標ZMP軌道を用いて、改めて仮今回歩容を生成する。この場合、目標ZMP以外の今回歩容パラメータは、S702で使用したものと同じである。
ここで、図20を参照して、上記「a」は、仮今回歩容の終端発散成分を定常歩容の初期発散成分にできるだけ一致させる(ひいては今回歩容の上体水平位置姿勢軌道を定常歩容の上体水平位置姿勢軌道に収束させる)ために、仮目標ZMP軌道を修正する(仮目標ZMP軌道に加える)台形パターンの修正量(以下、ZMP修正量ということがある)の高さである。
この場合、本実施形態では、仮目標ZMP軌道の修正は、片脚支持期において行なうようにしている。このため、ZMP修正量は、片脚支持期において、ZMP修正量≠0となり、両脚支持期では、ZMP修正量=0となるように設定されている。また、上記台形パターンの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軸方向とで各別に行なうようにしてもよい。
上記のようにS710にて仮今回歩容を生成した後、次にS712に進み、歩容生成装置100は、S710で求めた仮今回歩容の終端での上体水平位置速度(Xe2,Vxe2)を基に、この仮今回歩容における終端発散成分qe2をS704と同様に算出する。
尚、本実施形態では、S710においてΔaを所定値の微小量としたが、以下に説明する繰り返し演算によって終端発散成分誤差errqが小さくなるにつれてΔaを“0”に近づけるように、該Δaを可変的に設定するようにしてもよい。ただし、一般には、Δaを定数にしておいても、数回の繰り返し演算で終端発散成分誤差errqを許容範囲内に収めることができる。
次いでS714に進み、歩容生成装置100は、パラメータ感度r(Δaに対する終端発散成分誤差の変化の割合)を図中の式によって算出する。すなわち、歩容生成装置100は、S712で算出した終端発散成分qe2とS704で算出した終端発散成分qe1との差(=qe2−qe1)をΔaにより除算することによって、パラメータ感度rを算出する。この場合、より詳しくは、例えば(qe2−qe1)のX軸方向成分を、X軸方向のZMP修正量に係わるΔaにより除算することによって、X軸方向でのパラメータ感度rが算出される。また、(qe2−qe1)のY軸方向成分を、Y軸方向のZMP修正量に係わるΔaにより除算することによって、Y軸方向でのパラメータ感度rが算出される。
次いでS716に進み、歩容生成装置100は、a=−errq/r、すなわちS706で求めた終端発散成分誤差errqを、S714で求めたパラメータ感度rで割った値の符号を反転させてなる値を台形パターンのZMP修正量の高さaとして、このZMP修正量によって図20に示す如く仮目標ZMPパターンを修正してなる目標ZMPを、改めて仮目標ZMPとして決定する。この場合、ZMP修正量の高さaは、X軸方向とY軸方向とで各別に算出される。
なお、X軸方向及びY軸方向の一方の軸方向での目標ZMP軌道の修正が、他方の軸方向での終端発散成分に影響を及ぼす場合には、その影響分を考慮して各軸方向でのZMP修正量の高さaを決定することが好ましい。
次いで歩容生成装置100は、S702からの処理を再び実行する。このとき、S708の判断結果が否定的である限りは、上記したS702〜S716の処理が繰り返され、S708の判断結果が肯定的となった場合に、その繰り返しループ(S700)を抜けてS718に進む。
以上のS702〜S716のループ処理によって、終端発散成分qe1を、定常歩容の初期発散成分q0''に一致もしくはほぼ一致させることができるZMP修正量が(ひいては今回歩容の目標ZMP軌道が)探索的に求められる。換言すれば、今回歩容の上体水平位置姿勢軌道を定常歩容の上体水平位置姿勢軌道に収束させることができるZMP修正量が求められる。
かかるループ処理の次のS718では、歩容生成装置100は、現在の仮目標ZMP軌道(S700の繰り返しループを抜ける直前で設定された仮目標ZMP軌道)を最終的に今回歩容の目標ZMP軌道として、これに対応するZMP軌道パラメータを決定する。これにより、図8のS028の処理(今回歩容パラメータの修正処理)が終了する。
なお、本実施形態では、ZMP修正量を台形パターンに設定したが、例えば、三角形状のパターンや、曲率が連続的に変化するようなパターン等に決定してもよい。
図8に戻って、上記のごとくS028において今回歩容パラメータを修正した後、S030に進み、歩容生成装置100は、今回歩容の初期から終端までの各時刻での目標ZMPまわりの床反力モーメント(より詳しくは床反力モーメントの水平成分)の許容範囲を規定する床反力モーメント許容範囲パラメータを決定する。この床反力モーメント許容範囲パラメータにより規定される床反力モーメントの許容範囲は、前記補償全床反力モーメント分配器110において、前述の如く使用されるものである。
なお、床反力モーメントを、床反力鉛直成分で割ったものが、ZMP(床反力中心点)の目標ZMPからのずれ量に相当するものとなる。従って、床反力モーメント許容範囲を、ZMP(床反力中心点)の位置の許容範囲としてのZMP許容範囲(床反力中心点許容範囲)に変換し、このZMP許容範囲を規定するパラメータを決定するようにしてもよい。
S030で決定する床反力モーメント許容範囲は、前記フィードバック操作量演算部110において使用される場合に、前記複合コンプライアンス動作決定部104の制御処理(コンプライアンス制御)によって制御される目標ZMPまわりの実床反力モーメントの許容範囲としての意味を持つものである。この床反力モーメント許容範囲について以下に説明する。
複合コンプライアンス動作決定部104の処理によるコンプライアンス制御は、目標ZMPまわりに発生する床反力モーメントがコンプライアンス制御用目標床反力モーメントになるように足平22の位置姿勢を制御する。コンプライアンス制御が目標通りに忠実に作動すると、実床反力中心点は、目標床反力モーメントを床反力鉛直成分で割った値だけ、目標ZMPから水平方向に位置をずらした点になる。実床反力中心点は、いわゆる支持多角形で表されるZMP存在可能範囲(厳密な表現では、実床反力中心点の存在可能範囲)を逸脱することはできない。そして、実床反力中心点がZMP存在可能範囲の境界に近づき過ぎると、足平22の本来の接地感を低下させたり、足平22の底面が浮いてしまうような不具合が発生する。
床反力モーメント許容範囲は、このような不具合を防止するために、コンプライアンス制御用床反力モーメントに制限を加えるものである。したがって、床反力モーメント許容範囲は、これを床反力鉛直成分で割ることによって求められる床反力中心点許容範囲が、ZMP存在可能範囲に含まれるように決定されることが望ましい。
より具体的には、床反力中心点許容範囲(ZMP許容範囲)は、支持多角形に応じて決定されるべきである。この場合、床反力中心点許容範囲は、一般的には、複雑な形状に設定することができる。ただし、本実施形態では、演算を簡素化するために、床反力中心点許容範囲を、例えば床面上の長方形(X軸方向およびY軸方向に平行な辺を有する長方形)の領域とする。この場合、床反力中心点許容範囲を床反力モーメントに変換してなる床反力モーメント許容範囲は、X軸方向成分とY軸方向成分とでそれぞれ独立に範囲が設定される。
例えば、支持多角形と目標ZMPとが図21に示すような状況にある場合には、図示のごとく、床反力中心点許容範囲(ZMP許容範囲)は支持多角形に内包されるように設定される。また同時に、床反力中心点許容範囲(ZMP許容範囲)は目標ZMPを内包するように設定される。
なお、図21に点描領域として示す支持多角形は、歩行歩容の両脚支持期での支持多角形を例示している。この例では、右足平22Rのつま先が接地し、左足平22Lのかかとが接地している状態を模式的に示している。
歩行歩容における片脚支持期では、支持多角形は、支持脚足平22の接地面(床面との接触面)である。また、両脚支持期では、支持多角形は、両足平22,22のそれぞれの接地面を連接してなる領域(詳しくは、両足平22,22のそれぞれの接地面を含む最小の凸多角形の領域)である。そして、本実施形態では、床反力中心点許容範囲は、目標ZMPを内包しつつ、該支持多角形に内包され、もしくは、その支持多角形とほぼ一致するように設定される。この場合、今回歩容における支持多角形は、S026で決定した今回歩容パラメータの足平位置姿勢軌道パラメータを基に算出される。
なお、目標ZMPが支持多角形から逸脱している場合、あるいは、支持多角形の境界に近過ぎる場合には、例えば、暫定的に、目標ZMPを含まない支持多角形内の任意の領域、あるいは、目標ZMPとは異なる支持多角形内の点(面積が“0”となる領域)が床反反力中心点許容範囲として設定される。
本実施形態では、上記の如く設定した床反力中心点許容範囲を床反力モーメントに変換してなる範囲を、床反力モーメント許容範囲として決定する。
なお、床反力モーメント許容範囲は、ロボット1の接地面に依存して規定される支持多角形だけでなく、床形状や床の性状(床の硬さ等)を考慮して決定するようにしてもよい。
上記のごとくS030において床反力中心点許容範囲パラメータを決定した後、S031に進み、歩容生成装置100は、S028で決定したZMP軌道パラメータにより規定される目標ZMP軌道が適切な軌道であるか否かを判断する。この場合、本実施形態では、歩容生成装置100は、今回歩容のZMP軌道パラメータにより規定される目標ZMP軌道の各瞬時値(所定の刻み時間毎の瞬時値)が、前記支持多角形内に設定した所定のZMP存在許容領域内に存するか否かによって、該目標ZMP軌道が適切な軌道であるか否かを判断する。
より具体的には、歩容生成装置100は、S026で決定した足平位置姿勢軌道パラメータに基づいて、今回歩容の各足平22の足平位置姿勢軌道を算出し、この足平位置姿勢軌道に基づいて、現在時刻(歩容生成装置100の現在の制御周期の時刻)以後の各時刻での支持多角形を算出し、その支持多角形内にZMP存在許容領域を設定する。この場合、ZMP存在許容領域は、支持多角形に一致する領域でよいが、該支持多角形よりも若干小さめの領域であってもよい。
そして、歩容生成装置100は、今回歩容の各時刻(現在時刻以後の各時刻)での目標ZMPが、その時刻でのZMP存在許容領域内に存する場合には、今回歩容のZMP軌道パラメータにより規定される目標ZMP軌道が適切な軌道であると判断する。また、今回歩容のいずれかの時刻での目標ZMPが、その時刻でのZMP存在許容領域を逸脱する場合には、今回歩容のZMP軌道パラメータにより規定される目標ZMP軌道が適切な軌道でないと判断する。
S031の判断結果が否定的である場合(目標ZMP軌道が適切な軌道でない場合)には、歩容生成装置100は、S020からの処理を改めて実行する。この場合、S020においては、歩容生成装置100は、S031の判断結果が肯定的となる目標ZMP軌道を決定するために、例えば、今回歩容の遊脚足平22の目標着地位置姿勢のうちの目標着地位置(ひいては、今回歩容支持脚座標系の原点位置)と、今回歩容の遊脚足平22の目標着地時刻(ひいては今回歩容周期)とのうちの少なくともいずれか一方を以下に説明する如く修正する。
ここで、S031の判断結果が否定的である場合のS020の処理を具体的に説明する前に、前記したS020〜S028の処理における目標ZMP軌道の決定処理を改めて概説しておく。
本実施形態では、歩容生成装置100は、今回歩容の目標ZMP軌道の各瞬時値(各時刻の目標ZMP)が支持多角形内のZMP存在許容領域に存するという条件(以下、ZMP存在領域必要条件という)を満足しつつ、ロボット1の動力学モデル(本実施形態では図7に示した倒立振子モデル)上で該目標ZMP軌道に応じて生成される今回歩容の運動が継続的に実現し得る運動となるという条件(以下、運動継続性必要条件という)とを満足するように、今回歩容の目標ZMP軌道を生成する。
ここで、本実施形態における上記運動継続性必要条件は、ロボット1の動力学モデル上で目標ZMP軌道を満足するように(ロボット1の運動によって発生する慣性力とロボット1に作用する重力との合力が目標ZMPまわりに発生するモーメントの水平成分が“0”になるように)生成される今回歩容の運動が、将来において定常歩容の運動に収束し得る運動となるという条件である。
この場合、前記したS020〜S028の処理では、歩容生成装置100は、S020で前記したように幾何学的脚体運動必要条件を満足するように決定した次回歩容支持脚座標系(又は、今回歩容の遊脚足平22の目標着地位置姿勢)と、今回歩容周期とを前提として設定した足平位置姿勢軌道パラメータを基に、S026において前記ZMP存在領域必要条件を満足する仮目標ZMP軌道を決定する。さらに、歩容生成装置100は、S020で決定した次回歩容及び次次回歩容の支持脚座標系(又は、今回歩容及び次回歩容の遊脚足平22の目標着地位置姿勢)と、今回歩容周期及び次回歩容周期(又は、今回歩容及び次回歩容の遊脚足平22の目標着地時刻)とを前提として、今回歩容に続く定常歩容を決定する。そして、歩容生成装置100は、ロボット1の動力学モデル上で生成される今回歩容の終端発散成分が、定常歩容の初期発散成分に一致又はほぼ一致するようにZMP修正量を決定し、そのZMP修正量によって、仮目標ZMP軌道を修正することで、前記運動継続性必要条件を満足させるように目標ZMP軌道を決定する。
すなわち、本実施形態では、歩容生成装置100は、足平位置姿勢軌道を規定する足平位置姿勢軌道パラメータを決定した上で、前記ZMP存在領域必要条件を満足するように仮目標ZMP軌道を決定し、さらに、この仮目標ZMP軌道を、前記運動継続性必要条件を満足させるようにZMP修正量により修正することによって、目標ZMP軌道を決定する。
このように、目標ZMP軌道を決定するとき、運動継続性必要条件を満足するためのZMP修正量が大きいと、修正後の目標ZMP軌道が前記ZMP存在領域必要条件を満足できなくなる場合が生じる。そして、このような場合に、S031の判断結果が否定的となる。
一方、例えば今回歩容の遊脚足平22の目標着地位置又は目標着地時刻を変化させることによって、今回歩容の足平位置姿勢軌道が変化することとなるので、これに付随して、前記ZMP存在領域必要条件を満足し得る仮目標ZMP軌道も変化することとなる。また、今回歩容の遊脚足平22の目標着地位置又は目標着地時刻を変化させ、ひいては、今回歩容の足平位置姿勢軌道を変化させることによって、運動継続性必要条件を満足するためのZMP修正量も変化する。従って、今回歩容の遊脚足平22の目標着地位置又は目標着地時刻を前記幾何学的脚体運動必要条件を満足し得る範囲で適切に修正することよって、ZMP存在領域必要条件と運動継続性必要条件とを満足させ得る目標ZMP軌道を決定することが可能である。
そこで、本実施形態では、歩容生成装置100は、S031の判断結果が否定的となる場合のS020の処理において、今回歩容の遊脚足平22の目標着地位置又は目標着地時刻を修正し、次回歩容及び次次回歩容の支持脚座標系と、今回歩容周期及び次回歩容周期とを改めて決定する。
この場合、ZMP存在領域必要条件と運動継続性必要条件とを満足させ得る目標ZMP軌道を決定し得るようにすると共に、幾何学的脚体運動必要条件をも満足し得るようにするために、今回歩容の遊脚足平22の目標着地位置又は目標着地時刻をどのように修正すれば良いかが問題となる。
ここで、各制御周期における最新のS020の処理(S031の判断処理の以前に実行したS020の処理のうちの最新の処理)で決定した次回歩容支持脚座標系及び次次回歩容支持脚座標系と、今回歩容周期及び次回歩容周期とを前提として、S028で決定された台形パターンのZMP修正量の高さ(ピーク値)aを、現状ZMP修正量高さa0とおく。そして、今回歩容の遊脚足平22の目標着地位置の修正量(各制御周期における最新のS020の処理で決定した次回歩容支持脚座標系に対応する目標着地位置からの修正量。以降、着地位置修正量という)をΔPOS、今回歩容の遊脚足平22の目標着地時刻の修正量(各制御周期における最新のS020の処理で決定した今回歩容周期に対応する目標着地時刻からの修正量。以降、着地時刻修正量という)をΔTmとおく。さらに、今回歩容の遊脚足平22の目標着地位置と目標着地時刻とをそれぞれ、ΔPOS、ΔTmだけ現在値(最新値)から変化させた場合にS028で決定されるZMP修正量の高さ(ピーク値)aの変化量(現状ZMP修正量高さa0からの変化量)をΔZMPとおく。換言すれば、今回歩容の遊脚足平22の目標着地位置と目標着地時刻とをそれぞれ、ΔPOS、ΔTmだけ現在値(最新値)から変化させた場合にS028で決定されるZMP修正量の高さ(ピーク値)aを(a0+ΔZMP)とおく。
このとき、ΔZMPとΔPOS、ΔTmとの間には、近似的に次式150の関係が成立すると考えられる。
ΔZMP=Sp*ΔPOS+St*ΔTm ……式150
この式150におけるSpはΔPOSの変化に対するΔZMPの変化の感度(以下、ZMP/着地位置感度Spという)、StはΔTmの変化に対するΔZMPの変化の感度(以下、ZMP/着地時刻感度Stという)である。なお、式150は、実際には、X軸方向の成分に関する式(ΔZMP、ΔPOSがX軸方向の成分である場合の式)と、Y軸方向の成分に関する式(ΔZMP、ΔPOSがY軸方向の成分である場合の式)とから構成される。この場合、X軸方向の成分に関する式150におけるSp,Stの値と、Y軸方向の成分に関する式150におけるSp,Stの値とは、一般には互いに相違する。以降の説明では、ΔZMP、ΔPOSを、X軸方向の成分とY軸方向の成分とに区別する場合に、X軸方向の成分をそれぞれΔZMPx、ΔPOSxと表記し、Y軸方向の成分をそれぞれΔZMPy、ΔPOSyと表記する。また、X軸方向の成分ΔZMPx、ΔPOSxに係わるSp,Stをそれぞれ、Spx,Stxと表記し、Y軸方向の成分ΔZMPy、ΔPOSyに係わるSp,Stをそれぞれ、Spy,Styと表記する。
上記式150から、次式152が得られる。従って、ΔPOSは、ΔZMPとΔTmとの関数値として表現することができる。
ΔPOS=(ΔZMP−St*ΔTm)/Sp ……式152
ここで、台形パターンの高さaがa=a0+ΔZMPであるZMP修正量によって仮目標ZMP軌道を修正してなる目標ZMP軌道が前記ZMP存在領域必要条件を満足するためには、片脚支持期における該目標ZMP軌道の瞬時値が、該片脚支持期における支持脚足平22の接地面に相当する支持多角形内の前記ZMP存在許容領域内に存する必要がある。
従って、この必要要件によって、ZMP存在領域必要条件を満足するためのΔZMPの許容範囲が規定されることとなる。
例えば、X軸方向の成分に関して、X軸方向での現状ZMP修正量高さa0がa0xであり、片脚支持期におけるZMP存在許容領域のX軸方向の範囲の下限値及び上限値がそれぞれ、ZMPx1、ZMPx2であるとする。
このとき、目標ZMPのX軸方向位置が、ZMP存在領域必要条件を満足するためには、ZMPx1≦a0x+ΔZMPx+ZMPx≦ZMPx2でなければならない。これにより、ΔZMPxの許容範囲が、ZMPx1−a0x−ZMPx≦ΔZMPx≦ZMPx2−a0x−ZMPxという範囲に規定されることとなる。
同様に、Y軸方向での現状ZMP修正量高さa0がa0yであり、片脚支持期におけるZMP存在許容領域のY軸方向の範囲の下限値及び上限値がそれぞれ、ZMPy1、ZMPy2であるとしたとき、ΔZMPyの許容範囲は、ZMPy1−a0y−ZMPy≦ΔZMPy≦ZMPy2−a0y−ZMPyという範囲に規定されることとなる。
また、本実施形態では、1歩分の各歩容の歩容周期は、前記したように、各脚体2の関節の変位速度等を制限するための所定の歩容周期許容範囲内に制限される。すなわち、今回歩容の遊脚足平22の、ΔTmによる修正後の目標着地時刻と前回歩容における遊脚足平22の目標着地時刻との差である今回歩容周期は、上記歩容周期許容範囲内の値でなければならない。従って、この必要要件によって、ΔTmの許容範囲が規定されることとなる。この場合、最新のS020の処理で決定した今回歩容周期をTcyc0、歩容周期許容範囲の下限値及び上限値をそれぞれ、Tcyc1、Tcyc2とおくと、ΔTmの許容範囲は、Tcyc1−Tcyc0≦ΔTm≦Tcyc2−Tcyc0という範囲である。
このように、式152におけるΔZMP及びΔTmは、それぞれの許容範囲が規定されるものとなる。そして、これらの許容範囲から、式152によって、前記ZMP存在領域必要条件と運動継続性必要条件とを満足するために必要なΔPOSの許容範囲を、今回歩容の遊脚足平22の着地時刻修正量ΔTmの影響分を含めて決定できることとなる。ひいては、前記ZMP存在領域必要条件と運動継続性必要条件とを満足するために必要な今回歩容の遊脚足平22の目標着地位置の許容領域を、今回歩容の遊脚足平22の着地時刻修正量ΔTmの影響分を含めて決定できることとなる。換言すれば、ZMP存在領域必要条件と運動継続性必要条件とを満足するための必要要件を、今回歩容の遊脚足平22の目標着地位置(次回歩容支持脚座標系の原点の目標位置)の許容領域として表現できることとなる。
そこで、本実施形態では、S031の判断結果が否定的である場合のS020の処理では、前記ZMP存在領域必要条件と運動継続性必要条件とを満足する目標ZMP軌道を決定するための今回歩容の遊脚足平22の目標着地位置の許容領域(以降、第2着地許容領域という)を、式152に基づいて決定し、この第2着地許容領域と、前記幾何学的脚体運動必要条件に対応する前記第1着地許容領域とが重なる領域内に、今回歩容の遊脚足平22の目標着地位置を決定する。
この場合、第2着地許容領域が次のように決定される。
まず、歩容生成装置100は、前記式152におけるZMP/着地位置感度Spと、ZMP/着地時刻感度Stとを決定する。
具体的には、Spは次のように決定される。すなわち、歩容生成装置100は、最新のS020で先に決定した次次回歩容支持脚座標系と、今回歩容周期及び次回歩容周期と、最新のS020で先に決定した次回歩容支持脚座標系から、原点のX軸方向(今回歩容支持脚座標系のX軸方向)の位置を所定量(微小な摂動量)ΔXだけずらしてなる感度演算用の次回歩容支持脚座標系とを用いて、S022〜S028と同じ処理を実行することによって、X軸方向におけるZMP修正量を算出する。なお、この感度演算用の次回歩容支持脚座標系の原点のY軸方向(今回歩容支持脚座標系のY軸方向)の位置と、該次回歩容支持脚座標系の姿勢とは、最新のS020で先に決定した次回歩容支持脚座標系と同一とされる。そして、歩容生成装置100は、このX軸方向でのZMP修正量の高さ(ピーク値)axと、X軸方向の現状ZMP修正量高さa0x(最新のS028で先に算出したX軸方向のZMP修正量の高さ)との差(=ax−a0x)を上記所定量ΔXで除算してなる値を、X軸方向におけるZMP/着地位置感度Spとして決定する。
Y軸方向におけるZMP/着地位置感度Spも上記と同様に決定される。この場合、感度演算用の次回歩容支持脚座標系は、最新のS020で先に決定した次回歩容支持脚座標系から、原点のY軸方向(今回歩容支持脚座標系のY軸方向)の位置を所定量ΔYだけずらしてなる座標系である。
また、Stは次のように決定される。すなわち、歩容生成装置100は、最新のS020で先に決定した次回歩容支持脚座標系及び次次回歩容支持脚座標系と、次回歩容周期と、最新のS020で先に決定した今回歩容周期から、所定時間(微小な摂動時間)ΔTだけずらしてなる感度演算用の今回歩容周期とを用いて、S022〜S028と同じ処理を実行することによって、X軸方向におけるZMP修正量とY軸方向におけるZMP修正量とを算出する。そして、歩容生成装置100は、このX軸方向でのZMP修正量の高さ(ピーク値)axと、X軸方向の現状ZMP修正量高さa0x(最新のS028で先に算出したX軸方向のZMP修正量の高さ)との差(=ax−a0x)を上記所定時間ΔTで除算してなる値を、X軸方向におけるZMP/着地時刻感度Stとして決定する。同様に、歩容生成装置100は、算出したY軸方向でのZMP修正量の高さ(ピーク値)ayと、Y軸方向の現状ZMP修正量高さa0y(最新のS028で先に算出したY軸方向のZMP修正量の高さ)との差(=ay−a0y)を上記所定時間ΔTで除算してなる値を、Y軸方向におけるZMP/着地時刻感度Stとして決定する。
以上により、式152におけるSp,Stが決定される。
次に、歩容生成装置100は、最新のS031の判断処理で前記した如く設定した今回歩容の各時刻でのZMP存在許容領域(支持多角形内の領域)のうち、今回歩容の片脚支持期でのZMP存在許容領域と、最新のS026、S028の処理でそれぞれ先に決定した片脚支持期での仮目標ZMP軌道及びZMP修正量とを基に、式152のΔZMPの許容範囲(X軸方向の許容範囲及びY軸方向の許容範囲)を前記した如く決定する。すなわち、ΔZMPのX軸方向の成分ΔZMPxの許容範囲は、ZMPx1−a0x−ZMPx≦ΔZMPx≦ZMPx2−a0x−ZMPxという範囲に決定され、Y軸方向の成分ΔZMPyの許容範囲は、ZMPy1−a0y−ZMPy≦ΔZMPy≦ZMPy2−a0y−ZMPyという範囲に決定される。このように決定されるΔZMPの許容範囲のX軸方向の幅と、Y軸方向の幅とは、それぞれ、ZMP存在許容領域のX軸方向の幅、Y軸方向の幅と同じである。
なお、本実施形態では、片脚支持期でのZMP存在許容領域は、図22に例示する如く、方形状の領域(今回歩容支持脚座標系のX軸方向に平行な2辺と、Y軸方向に平行な2辺とから構成される四角形により囲まれる領域)とされる。該ZMP存在許容領域は、片脚支持期で接地している支持脚足平22の接地面により形成される支持多角形とほぼ同一形状の領域である。
また、歩容生成装置100は、最新のS020の処理で先に決定した今回歩容周期と、前記歩容周期許容範囲とを基に、式152のΔTmの許容範囲を前記した如く決定する。すなわち、ΔTmの許容範囲は、Tcyc1−Tcyc0≦ΔTm≦Tcyc2−Tcyc0という範囲に決定される。
以上の如く式152のSp,Stの値と、ΔZMP及びΔTmの許容範囲とを決定した後、次に、歩容生成装置100は、ΔTmの値を、その許容範囲の下限値(=Tcyc1−Tcyc0。以下、これをΔTm_minとおく)に一致させた場合と、上限値(=Tcyc2−Tcyc0。以下、これをΔTm_maxとおく)に一致させた場合とで、ΔZMPの許容範囲に対応するΔPOSの許容範囲(X軸方向の許容範囲及びY軸方向の許容範囲)を、前記式152に基づき決定する。
具体的には、歩容生成装置100は、式152のΔTmに、下限値ΔTm_minを代入し、さらに、式152のΔZMPに、X軸方向のΔZMPxの許容範囲の下限値と上限値とをそれぞれの代入することによって、ΔTm=ΔTm_minである場合の、X軸方向におけるΔPOSxの許容範囲の下限値と上限値とを算出する。同様に、歩容生成装置100は、式152のΔTmに、下限値ΔTm_minを代入し、さらに、式152のΔZMPに、Y軸方向のΔZMPyの許容範囲の下限値と上限値とをそれぞれの代入することによって、ΔTm=ΔTm_minである場合の、Y軸方向におけるΔPOSyの許容範囲の下限値と上限値とを算出する。これにより、ZMP存在領域必要条件と運動継続性必要条件とを満足するためのΔZMPの許容範囲が、ΔTm=ΔTm_minである場合のΔPOSの許容範囲に変換される。
また、歩容生成装置100は、式152のΔTmに、上限値ΔTm_maxを代入し、さらに、式152のΔZMPに、X軸方向のΔZMPxの許容範囲の下限値と上限値とをそれぞれの代入することによって、ΔTm=ΔTm_maxである場合の、X軸方向におけるΔPOSxの許容範囲の下限値と上限値とを算出する。同様に、歩容生成装置100は、式152のΔTmに、上限値ΔTm_maxを代入し、さらに、式152のΔZMPに、Y軸方向のΔZMPyの許容範囲の下限値と上限値とをそれぞれの代入することによって、ΔTm=ΔTm_maxである場合の、Y軸方向におけるΔPOSyの許容範囲の下限値と上限値とを算出する。これにより、ZMP存在領域必要条件と運動継続性必要条件とを満足するためのΔZMPの許容範囲が、ΔTm=ΔTm_maxである場合のΔPOSの許容範囲に変換される。
なお、ΔTm=ΔTm_maxである場合のΔPOSのX軸方向の許容範囲は、ΔTm=ΔTm_minである場合のΔPOSのX軸方向の許容範囲を、X軸方向に、−(Stx/Spx)*(ΔTm_max−ΔTm_min)だけオフセットさせた許容範囲である。また、ΔTm=ΔTm_maxである場合のΔPOSのY軸方向の許容範囲は、ΔTm=ΔTm_minである場合のΔPOSのY軸方向の許容範囲を、Y軸方向に、−(Sty/Spy)*(ΔTm_max−ΔTm_min)だけオフセットさせた許容範囲である。
次いで、歩容生成装置100は、上記の如く決定したΔTm=ΔTm_minである場合のΔPOSの許容範囲と、最新のS020の処理で先に決定した次回歩容支持脚座標系に対応する今回歩容の遊脚足平22の目標着地位置とから、ΔTm=ΔTm_minである場合に、前記ZMP存在領域必要条件と運動継続性必要条件とを満足するための、今回歩容の遊脚足平22の目標着地位置の許容領域を決定する。
ΔTm=ΔTm_minである場合の今回歩容の遊脚足平22の目標着地位置の許容領域(以降、ΔTm下限時着地許容領域という)は、最新のS020の処理で先に決定した次回歩容支持脚座標系に対応する今回歩容の遊脚足平22の目標着地位置を、ΔTm=ΔTm_minである場合のΔPOSの許容範囲内の任意のΔPOSによって修正してなる位置の存在可能領域である。この場合、該ΔTm下限時着地許容領域のX軸方向の境界位置は、最新のS020の処理で先に決定した次回歩容支持脚座標系に対応する今回歩容の遊脚足平22の目標着地位置のX軸方向成分に、X軸方向のΔPOSxの下限値及び上限値をそれぞれ加えた位置として決定される。また、該ΔTm下限時着地許容領域のY軸方向の境界位置は、最新のS020の処理で先に決定した次回歩容支持脚座標系に対応する今回歩容の遊脚足平22の目標着地位置のY軸方向成分に、Y軸方向のΔPOSyの下限値及び上限値をそれぞれ加えた位置として決定される。
また、歩容生成装置100は、上記と同様に、ΔTm=ΔTm_maxである場合のΔPOSの許容範囲と、最新のS020の処理で先に決定した次回歩容支持脚座標系に対応する今回歩容の遊脚足平22の目標着地位置とから、ΔTm=ΔTm_maxである場合に、前記ZMP存在領域必要条件と運動継続性必要条件とを満足するための、今回歩容の遊脚足平22の目標着地位置の許容領域(以降、ΔTm上限時着地許容領域という)を決定する。
以上のようにして、決定されるΔTm下限時着地許容領域と、ΔTm上限時着地許容領域との一例を図22に視覚的に示す。これらのΔTm下限時着地許容領域及びΔTm上限時着地許容領域のX軸方向の幅は、ΔZMPxの許容範囲の幅、すなわち、今回歩容の片脚接地期におけるZMP存在許容領域のX軸方向の幅を、X軸方向のおけるZMP/着地位置感度Spxによって除算してなる値に一致する。また、ΔTm下限時着地許容領域及びΔTm上限時着地許容領域のY軸方向の幅は、ΔZMPyの許容範囲の幅、すなわち、今回歩容の片脚接地期におけるZMP存在許容領域のY軸方向の幅を、Y軸方向のおけるZMP/着地位置感度Spyによって除算してなる値に一致する。
次いで、歩容生成装置100は、上記ΔTm下限時着地許容領域と、ΔTm上限時着地許容領域とを図22に示す如く連接してなる領域(ΔTm下限時着地許容領域と、ΔTm上限時着地許容領域とを包含する最小の凸多角形の領域)を、前記ZMP存在領域必要条件と運動継続性必要条件とを満足する目標ZMP軌道を決定するための今回歩容の遊脚足平22の目標着地位置の許容領域としての第2着地許容領域として決定する。
S031の判断結果が否定的である場合のS020の処理では、上記の如く第2着地許容領域が決定される。
次に、歩容生成装置100は、上記の如く決定した第2着地許容領域と、前記した今回歩容の遊脚足平22の第1着地許容領域(図9に示す今回歩容における第1着地許容領域)とを基に、今回歩容の遊脚足平22の新たな目標着地位置を決定する。この場合、図23に示す如く、第1着地許容領域と第2着地許容領域とが重なり合う領域内に、今回歩容の遊脚足平22の新たな目標着地位置が決定される。
その新たな目標着地位置は、第1着地許容領域と第2着地許容領域とが重なり合う領域内の、例えば中央付近の位置でもよいが、当該重なり合う領域内であれば、他の位置に決定するようにしてもよい。例えば、当該重なり合う領域内で、前記要求パラメータにより規定される今回歩容の遊脚足平22の着地位置の要求値にできるだけ近い位置に新たな目標着地位置を決定するようにしてもよい。
さらに、歩容生成装置100は、今回歩容の遊脚足平22の新たな目標着地姿勢を、最新のS020の処理で先に決定した次回歩容支持脚座標系に対応する目標着地姿勢と同じ姿勢に決定する。
そして、歩容生成装置100は、上記の如く決定した今回歩容の遊脚足平22の新たな目標着地位置姿勢に対応する支持脚座標系を、新たな次回歩容支持脚座標系として決定する。
また、歩容生成装置100は、今回歩容周期の修正量ΔTmを、歩容周期許容範囲内で、上記の如く新たに決定した今回歩容の遊脚足平22の目標着地位置に応じて決定する。すなわち、決定するΔTmの値がΔTmaであるとしたとき、ΔTm=ΔTmaである場合におけるΔPOSの許容範囲と、最新のS020の処理で先に決定した次回歩容支持脚座標系に対応する今回歩容の遊脚足平22の目標着地位置とから、前記ΔTm下限時着地許容領域及びΔTm上限時着地許容領域と同様に算出される今回歩容の遊脚足平22の目標着地位置の許容領域内に、新たに決定した今回歩容の遊脚足平22の目標着地位置が含まれるようにΔTmaが決定される。
この場合、ΔTmaは、例えば、ΔTm=ΔTmaである場合における今回歩容の遊脚足平22目標着地位置の許容領域に、新たに決定した今回歩容の遊脚足平22の目標着地位置が含まれることとなるΔTmの範囲内で、前記要求パラメータにより規定される要求値にできるだけ近い値となるように決定すればよい。あるいは、例えば、ΔTm=ΔTmaである場合における今回歩容の遊脚足平22目標着地位置の許容領域に、新たに決定した今回歩容の遊脚足平22の目標着地位置が含まれることとなるΔTmの範囲内で、最も“0”に近い値(“0”を含む)にΔTmを決定するようにしてもよい。
歩容生成装置100は、上記の如く決定したΔTmを、最新のS020の処理で先に決定した今回歩容周期に加えることによって、新たな今回歩容周期を決定する。
また、歩容生成装置100は、新たに決定した今回歩容の遊脚足平22の目標着地位置姿勢に応じて、次回歩容支持脚座標系における前記第1着地許容領域(次回歩容の遊脚足平22の第1着地許容領域)を設定する。そして、歩容生成装置100は、例えば、この第1着地許容領域内で、最新のS020の処理で先に決定した次次回歩容支持脚座標系に対応する遊脚足平22の目標着地位置に最も近い位置(当該目標着地位置と同じ位置を含む)を、次回歩容の遊脚足平22の新たな目標着地位置として決定する。
さらに、歩容生成装置100は、次回歩容の遊脚足平22の新たな目標着地姿勢を、最新のS020の処理で先に決定した次次回歩容支持脚座標系に対応する遊脚足平22の目標着地姿勢と同じ姿勢に決定する。
そして、歩容生成装置100は、このように新たに決定した次回歩容の遊脚足平22の目標着地位置姿勢に対応する支持脚座標系を、新たな次次回歩容支持脚座標系として決定する。
また、歩容生成装置100は、新たな次回歩容周期を、最新のS020の処理で先に決定した次回歩容周期と同じ値に決定する。
以上説明した処理が、S031の判断結果が否定的である場合のS020で実行される処理である。これにより、次回歩容支持脚座標系、次次回歩容支持脚座標系、今回歩容周期及び次回歩容周期が改めて決定されることとなる。
その後のS022からの処理は、先に説明した通りに実行される。すなわち、S031の判断結果が肯定的になるまで、S020〜S028の処理が繰り返される。
図8に戻って、S031の判断結果が肯定的である場合には、次にS032において、歩容生成装置100は、今回歩容瞬時値(現在の制御周期での今回歩容の目標足平位置姿勢等の瞬時値)を決定する。このS032では、前記姿勢安定化制御演算部112で前述の如く決定されるモデル操作床反力モーメントが目標ZMPまわりに発生するように今回歩容瞬時値が決定される。
具体的には、図24のフローチャートに示す如く、歩容瞬時値が決定される。以下説明すると、歩容生成装置100は、まず、S1000からS1006まで、図21のS806からS812まで(または図18のS306からS312まで)と同様に処理を実行することによって、今回歩容の現在時刻t(現在の制御周期)での目標床反力鉛直成分、目標ZMP、目標足平位置姿勢、目標上体姿勢、目標腕姿勢、目標上体鉛直位置の瞬時値を算出する。
これらの各瞬時値の算出の仕方は、歩容パラメータとして、図8のS028で最終的に修正した今回歩容パラメータを使用する点を除いて、図19のS806からS812まで(または図16のS306からS312まで)の処理と同じである。
次いで、S1008に進み、歩容生成装置100は、図8のS030で決定した床反力モーメント許容範囲パラメータを基に、今回歩容の現在時刻tでの床反力モーメント許容範囲の瞬時値を求める。この床反力モーメント許容範囲の瞬時値は、歩容生成装置100から、前記補償全床反力モーメント分配器110(図3参照)に出力される。そして、この分配器110で前記式52により算出されたモデル操作床反力モーメント(現在時刻tの値)が歩容生成装置100に与えられる。
次いで、S1010に進み、歩容生成装置100は、補償全床反力モーメント分配器110から与えられたモデル操作床反力モーメントが目標ZMPまわりに発生するように(ロボット1の慣性力と重力との合力が目標ZMPまわりに発生するモーメントの水平成分がモデル操作床反力モーメントに釣り合うように)、今回歩容の現在時刻tでの上体水平加速度を決定する。
言い換えると、ロボット1の慣性力と重力との合力が目標ZMPまわりに発生するモーメントがモデル操作床反力モーメントの符号を反転したモーメントに一致するように、今回歩容の現在時刻tでの上体水平加速度が決定される。
この場合、図19のS814の処理と同様の仕方で、例えば図7の動力学モデル(倒立振子モデル)を用いて今回歩容の上体水平加速度が算出される。
具体的には、今回歩容の現在時刻tの上体鉛直位置と、時刻(t−Δt)の上体水平位置と、現在時刻tの目標上体姿勢とから、現在時刻tでの上体質点24bの鉛直位置及び水平位置が決定される。なお、時刻(t−Δt)までの上体水平位置の時系列又は時刻(t−Δt)での歩容状態を基に時刻tでの上体水平位置を補間的に推定し、その推定した上体水平位置を時刻(t−Δt)の上体水平位置の代わりに用いてもよい。
また、今回歩容の現在時刻tでの床反力鉛直成分から、上体質点24bに作用する重力(=mb*g)を差し引いた値を、上体質点24bの質量mbにより除算することによって、現在時刻tでの上体質点24bの鉛直加速度が求められる。
そして、上記の如く求めた上体質点24bの鉛直位置、水平位置、鉛直加速度をそれぞれ、前記式04のZb、Xb、d2Zb/dt2に代入すると共に、現在時刻tでの目標ZMPの水平位置および鉛直位置を式04のXzmp,Zzmpに代入し、さらに、同式04のMzmp_yを、モデル操作床反力モーメントに一致させてなる式を、d2Xb/dt2について解くことにより、現在時刻tでの上体質点水平加速度d2Xb/dt2が算出される。そして、この上体質点水平加速度d2Xb/dt2が現在時刻tでの上体水平加速度として求められる。
尚、より厳密な動力学モデルを用いて、目標ZMPまわりの床反力モーメントの水平成分をモデル操作床反力モーメントに一致させるような上体水平加速度を探索的に求めるようにしてもよい。
次いで、S1012に進み、S1010で上記の如く求めた上体水平加速度を2階積分することにより現在時刻tでの上体水平位置を算出する。この算出の仕方は、図16のS314(又は図19のS816)と同じである。これにより、図8のS032の処理が完了する。
次いでS034に進み、スピン力をキャンセルする(ロボット1の腕体以外の運動によって目標ZMP回りに発生する床反力モーメント鉛直成分を“0”もしくはほぼ“0”にする)ための腕体の動作が決定される。具体的には、腕体を振らなかった場合の目標ZMPにおける床反力モーメント鉛直成分軌道(厳密には、腕体を振らずに歩容を生成した場合において、ロボットの重力と慣性力の合力が目標ZMPに作用するモーメント鉛直成分軌道の各瞬時値の符号を反転したもの)が求められる。すなわち、S032の処理によって生成された今回歩容の運動(これには腕振りの運動は含まれていない)の瞬時値に釣り合う目標ZMP回りの床反力モーメント鉛直成分の瞬時値が求められる。そして、この床反力モーメント鉛直成分の瞬時値を、腕振り運動の等価慣性モーメントで割ることにより、スピン力キャンセルに必要な腕振り動作の角加速度が求められる。なお、腕の振りが大き過ぎる場合には、等価慣性モーメントよりも大きな値で床反力モーメント鉛直成分の瞬時値を除算するようにしてもよい。
次に、歩容生成装置100は、この角加速度を2階積分し、これを積分値が過大になるのを防ぐためのローカットフィルタに通して得た角度を腕振り動作角とする。ただし、腕振り動作では、左右の腕体を前後逆方向に振り、両腕体の重心位置を変化させないようにする。なお、スピン力をキャンセルするための腕振り運動を定常歩容でも生成しておき、これにつながるように、今回歩容における腕振り運動を決定するようにしてもよい。
次いでS036に進み、歩容生成装置100は、時刻tに制御周期Δtを加え、S014からの処理を再び実行する。
以上により、今回歩容の瞬時値が時系列的に生成されることとなる。
この場合、今回歩容は、その目標運動の軌道を、将来において、仮想的な規範運動としての周期的運動である定常歩容の運動軌道に収束させる(漸近させる)ように決定される。
より詳しくは、今回歩容に続く定常歩容の初期状態(初期発散成分等)を決定した後に、前記幾何学的脚体運動必要条件を満足し得る今回歩容の足平位置姿勢軌道を規定する足平軌道パラメータを暫定的に決定した上で、今回歩容の目標運動の軌道を定常歩容の運動軌道に収束させるための前記運動継続性必要条件を満足させることができるように(本実施形態では、今回歩容の終端発散成分が、定常歩容の初期発散成分に一致又はほぼ一致するように)、目標ZMP軌道を規定するZMP軌道パラメータがロボット1の動力学モデル(本実施形態では図7の動力学モデル)を用いて決定される。そして、このように決定した目標ZMP軌道が前記ZMP存在領域必要条件を満足する場合(図8のS031の判断結果が肯定的となる場合)には、先に暫定的に決定した足平軌道パラメータと、ZMP軌道パラメータと、ロボット1の動力学モデル(本実施形態では図7の動力学モデル)とを用いて、目標足平位置姿勢及び目標上***置姿勢を含む目標歩容(今回歩容)の瞬時値が逐次決定される。
なお、この場合、本実施形態では、ロボット1の実際の上体姿勢を目標姿勢にフィードバック制御するために、今回歩容の目標運動の瞬時値を逐次生成する際には、上記動力学モデル上で、フィードバック操作量としての前記モデル操作床反力モーメントが目標ZMPのまわりに発生するように、ロボット1の目標上***置が決定される。
また、図8のS031の判断結果が否定的となる場合には、前記ZMP存在領域必要条件と運動継続性必要条件とを満足し得る目標ZMP軌道を決定することができるようにするために、今回歩容における遊脚足平22の目標着地位置又は目標着地時刻が修正される。この場合、着地位置修正量ΔPOSと、着地時刻修正量ΔTmと、運動継続性必要条件とを満足するための目標ZMPの変化量ΔZMP(ZMP修正量の台形パターンの高さaの変化量)との間の関係が、前記式152により表現される。
そして、この式152により表現される関係を規定するZMP/着地位置感度SpとZMP/着地時刻感度Stとを算出した上で、該式152に基づいて、ZMP存在領域必要条件に関するZMP存在許容領域と前記歩容周期許容範囲とが今回歩容の遊脚足平22の着地位置の許容領域としての前記第2着地許容領域に変換される。
これにより、今回歩容の遊脚足平22の目標着地時刻の修正(前記歩容周期許容範囲を満足し得る範囲内での修正)による影響分を含めて、前記ZMP存在領域必要条件と運動継続性必要条件とを満足し得る目標ZMP軌道を決定することを可能とする、今回歩容の遊脚足平22の目標着地位置の許容領域(第2着地許容領域)が決定される。
そして、この第2着地許容領域と、前記幾何学的脚体運動必要条件に対応する前記第1着地許容領域とが重なり合う領域内に、今回歩容の遊脚足平22の新たな目標着地位置が決定され、ひいては、今回歩容支持脚座標系が決定される。また、この目標着地位置を実現し得るように新たな今回歩容周期が決定される(結果的に今回歩容の遊脚足平22の新たな目標着地時刻が決定される)。
さらに、このように新たに決定した今回歩容支持脚座標系及び今回歩容周期を用いて、今回歩容の新たな足平軌道パラメータと、新たなZMP軌道パラメータ(今回歩容の目標運動を定常歩容の運動に収束させ得る目標ZMP軌道を規定するパラメータ)とが改めて決定され、S031の判断処理が再び行われる。この場合、新たな足平軌道パラメータにより表される今回歩容の遊脚足平22の目標着地位置は、前記第2着地許容領域内の位置に決定されているので、基本的には、S031の判断結果は肯定的となる。そして、新たな足平軌道パラメータと新たなZMP軌道パラメータとロボット1の動力学モデル(本実施形態では図7の動力学モデル)とを用いて、目標足平位置姿勢及び目標上***置姿勢を含む目標歩容(今回歩容)の瞬時値が逐次決定される。
かかる本実施形態によれば、S031の判断結果が否定的となり、今回歩容の遊脚足平22の目標着地位置や目標着地時刻を修正する必要がある場合に、前記の如く決定される第2着地許容領域を使用し、この第2着地許容領域と前記第1着地許容領域とが重なり合う領域に、今回歩容の遊脚足平22の目標着地位置が決定される。これにより、前記幾何学的脚体運動必要条件を満足することに加えて、前記ZMP存在領域必要条件と運動継続性必要条件とを満足し得る目標ZMP軌道を決定することができるように、足平軌道パラメータを決定できる。
このため、前記幾何学的脚体運動必要条件とZMP存在領域必要条件と運動継続性必要条件とを満足させ得るように今回歩容の遊脚足平22の目標着地位置や目標着地時刻を修正して、足平軌道パラメータを決定することを、適切な指針で行なうことができる。このため、今回歩容の遊脚足平22の目標着地位置や目標着地時刻を試行錯誤的に繰り返し修正するような探索処理を行わないようにして、前記幾何学的脚体運動必要条件とZMP存在領域必要条件と運動継続性必要条件とを満足させる上で適切な足平軌道パラメータを短時間で効率よく決定することができる。
この結果、制御周期を短縮することが可能となり、ひいては、ロボット1の動作制御の応答性を高めることができる。
ここで、以上説明した本実施形態と、本発明との対応関係について補足しておく。
本実施形態では、前記足平軌道パラメータとZMP軌道パラータとが、それぞれ、本発明における脚体運動パラメータ、床反力要素パラメータに相当する。そして、ZMP(床反力中心点)が本発明における床反力要素に相当する。
また、本実施形態における前記幾何学的脚体運動必要条件と、前記ZMP存在領域必要条件と、運動継続性必要条件とが、それぞれ、本発明における幾何学的脚体運動必要条件、床反力要素許容範囲必要条件、運動継続性必要条件に相当する。
また、各制御周期において、最初に実行されるS026の処理のうちのS600の処理によって、本発明における脚体運動パラメータ暫定決定手段が実現される。なお、各制御周期において、最初に実行されるS026の処理のうちのS600の処理によって決定される足平軌道パラメータは、各制御周期において最初に実行されるS020の処理(S016又はS018の処理の次に実行されるS020の処理)で決定される次回歩容支持脚座標系及び今回歩容周期によって実質的に規定されるので、このS020の処理を脚体運動パラメータ暫定決定手段と見なすこともできる。
また、各制御周期において、最初に実行されるS026の処理のうちのS608の処理によって、本発明における床反力要素パラメータ暫定決定手段が実現される。
また、各制御周期において、最初に実行されるS028の処理のうちの、S702〜S716のループ処理によって、本発明におけるZMP修正量決定手段が実現される。
また、S031の判断処理によって、本発明における判断手段が実現される。
また、S020の処理によって(詳しくは、S020の処理の中で、前記第1着地許容領域を決定する処理によって)、本発明における第1着地許容領域決定手段が実現される。
また、S031の判断結果が否定的となる場合に実行されるS020の処理によって(詳しくは、S020の処理の中で、前記第2着地許容領域を決定する処理によって)、本発明における第2着地許容領域決定手段が実現される。この場合、前記ZMP/着地位置感動Spと、ZMP/着地時刻感度Stとが本発明における着地位置・着地時刻・床反力要素間関係パラメータに相当する。
さらに、S031の判断結果が否定的となる場合に実行されるS026の処理のうちのS600の処理によって、本発明における脚体運動パラメータ決定手段が実現され、S031の判断結果が否定的となる場合に実行されるS028の処理のうちのS718の処理によって、本発明における床反力要素パラメータ決定手段が実現される。
[第2実施形態]
前記実施形態では、床面が、任意の箇所に遊脚足平22を着地させることが可能な面であることを前提として、前記S020の処理において、遊脚足平22の目標着地位置を制約する許容領域として、前記幾何学的脚体運動必要条件に対応する第1着地許容領域と、運動継続性必要条件及びZMP存在領域必要条件(床反力要素許容範囲必要条件)に対応する第2着地許容領域との2つの許容領域を使用した。
但し、遊脚足平22の着地可能な位置が、ロボット1の外界の環境に依存する制約を受けるような場合(例えば、床面が飛び石状の床面である場合、床面上に足平22を着地させることが好ましくない凹凸もしくは段差もしくは障害物が存在する場合、床面上に局所的に滑りやすい部分が存在する場合等)には、該環境に依存させた第3着地許容領域をさらに設定し、S020の処理において、この第3着地許容領域をさらに加味して、遊脚足平22の目標着地位置を決定するようにしてもよい。
このように第3着地許容領域を用いる場合のより具体的な例を第2実施形態として、以下に図25等を参照して以下に説明する。なお、本実施形態は、図8のS020で歩容生成装置100が実行する処理の一部のみが、第1実施形態と相違するものであるので、その相違点を中心に説明する。そして、第1実施形態と同一の部分については、第1実施形態と同一の参照符号を使用し、説明を省略する。
本実施形態では、歩容生成装置100には、前記床形状情報を含めてロボット1の外界の環境情報が入力される。該環境情報には、床形状情報以外に、例えば、床面の滑り易さ(もしくは摩擦係数)や柔らかさ等の性状情報、床面上に設置されている障害物の配置情報等が含まれる。また、環境情報のうちの床形状情報には、例えば、床面に存在する凹凸、段差、飛び石面の配置情報等、床面の形状に関するより詳しい情報が含まれる。
そして、歩容生成装置100は、前記S020の処理の中で、上記環境情報に基づいて、第3着地許容領域を決定する。例えば図25に二点鎖線で示すような領域R1、R2、R3が第3着地許容領域として決定される。この図示の例では、第3着地許容領域R1、R2,R3の内側の床面は、概ね平坦で滑り難いなど、遊脚足平22(図示例では22L)を支障なく着地させ得る床面である。また、第3着地許容領域R1、R2,R3の間の箇所は、例えば、凹凸や、段差、障害物、滑りやすい部分等が存在して、遊脚足平22(図示例では22L)を着地させることができないか、もしくは、着地させることが好ましくない箇所である。
なお、環境情報は、一般には、今回歩容の生成処理の期間内等、比較的短い期間内で変化することは無いので、第3着地許容領域を決定する処理は、例えば、S016の判断結果が肯定的となる場合にだけ行なうようにしてもよい。
そして、歩容生成装置100は、S020の処理において、上記の如く決定した第3着地許容領域を反映させて、次回歩容支持脚座標系や次次回歩容支持脚座標系を決定する。
具体的には、S018の処理又はS016の判断処理の次に実行されるS020の処理においては、歩容生成装置100は、まず、今回歩容の遊脚足平22の着地位置を制限する前記第1着地許容領域(今回歩容支持脚座標系上での第1着地許容領域)を前記第1実施形態と同様に設定した上で、この第1着地許容領域と上記第3着地許容領域とが重なり合う領域内で、該遊脚足平22の目標着地位置を決定する。例えば図25に示した例では、図示の如く、第1着地許容領域と第3着地許容領域R1,R2,R3のうちのR1とが重なり合う領域内に今回歩容の遊脚足平22Lの目標着地位置が決定される。
この場合、第1着地許容領域と第3着地許容領域とが重なり合う領域内での遊脚足平22の目標着地位置の決定の仕方は、前記第1実施形態におけるS020で第1着地許容領域内で遊脚足平22の目標着地位置を決定する仕方と同じでよい。
さらに、歩容生成装置100は、前記第1実施形態と同様に、今回歩容の遊脚足平22の目標着地姿勢を決定する。そして、歩容生成装置100は、このように決定した今回歩容の遊脚足平22の目標着地位置姿勢に対応する支持脚座標系を次回歩容支持脚座標系として決定する。
次いで、歩容生成装置100は、次回歩容の遊脚足平22の着地位置を制限する第1着地許容領域(次回歩容支持脚座標系上での第1着地許容領域)を前記第1実施形態と同様に設定した上で、上記と同様に該第1次次回歩容支持脚座標系を決定する。
この場合、次次回歩容支持脚座標系の原点位置を規定する次回歩容の遊脚足平22の目標着地位置は、次回歩容の遊脚足平22の目標着地位置の許容領域として次回歩容支持脚座標系上に設定された第1着地許容領域と前記第3着地許容領域とが重なり合う領域内に決定される。その決定の仕方は、前記第1実施形態におけるS020で次回歩容支持脚座標系上の第1着地許容領域内で次回歩容の遊脚足平22の目標着地位置を決定する仕方と同じでよい。また、次回歩容の遊脚足平22の目標着地姿勢は、前記第1実施形態と同様に決定される。
なお、S018の処理又はS016の判断処理の次に実行されるS020の処理において、今回歩容及び次回歩容の歩容周期は、前記第1実施形態と同様に決定される。
また、S031の判断処理の次に実行されるS020の処理においては、歩容生成装置100は、まず、今回歩容の遊脚足平22の着地位置を制限する前記第1着地許容領域及び第2着地許容領域(今回歩容支持脚座標系上での第1着地許容領域及び第2着地許容領域)を前記第1実施形態と同様に設定した上で、この第1着地許容領域及び第2着地許容領域と上記第3着地許容領域とが重なり合う領域内で、今回歩容の遊脚足平22の目標着地位置を決定する。例えば図25に示した例では、図示の如く、第1着地許容領域と、第2着地許容領域と、第3着地許容領域R1,R2,R3のうちのR1とが重なり合う領域内に今回歩容の遊脚足平22Lの目標着地位置が決定される。
この場合、第1着地許容領域、第2着地許容領域及び第3着地許容領域が重なり合う領域内での今回歩容の遊脚足平22の目標着地位置の決定の仕方は、前記第1実施形態におけるS020で、第1着地許容領域と第2着地許容領域とが重なり合う領域内に今回歩容の遊脚足平22の目標着地位置を決定する仕方と同じでよい。
さらに、歩容生成装置100は、今回歩容の遊脚足平22の目標着地姿勢を前記第1実施形態と同様に決定する。そして、このように決定した今回歩容の遊脚足平22の目標着地位置姿勢に対応する支持脚座標系を次回歩容支持脚座標系として決定する。
次いで、歩容生成装置100は、次回歩容の遊脚足平22に対する第1着地許容領域(次回歩容支持脚座標系上での第1着地許容領域)を前記第1実施形態と同様に決定し、この第1着地許容領域と前記第3着地許容領域とが重なり合う領域内で、次回歩容の遊脚足平22の目標着地位置を決定する。この決定の仕方は、前記第1実施形態におけるS020で、第1着地許容領域内に次回歩容の遊脚足平22の目標着地位置を決定する仕方と同じでよい。
さらに、歩容生成装置100は、次回歩容の遊脚足平22の目標着地姿勢を前記第1実施形態と同様に決定する。そして、このように決定した次回歩容の遊脚足平22の目標着地位置姿勢に対応する支持脚座標系を次次回歩容支持脚座標系として決定する。
なお、S031の判断処理の次に実行されるS020の処理において、今回歩容及び次回歩容の歩容周期は、前記第1実施形態と同様に決定される。
以上説明した以外の処理は、第1実施形態と同じである。
補足すると、第2実施形態では、第3着地許容領域が複数の領域に分散している場合に、第1着地許容領域と第3着地許容領域とが重なり合う領域、あるいは、第1着地許容領域と第2着地許容領域と第3着地許容領域とが重なり合う領域が複数の領域に分散する場合もある。このような場合に、遊脚足平22の目標着地位置を、例えば複数の重なり領域のうちの最も広い面積の領域内に決定するようにしてもよい。
かかる本実施形態によれば、前記幾何学的脚体運動必要条件、ZMP存在領域必要条件、運動継続性必要条件に加えて、ロボット1の外界の環境に依存する制約をも加味した適切な足平軌道パラメータを短時間で効率よく決定することができる。
なお、本実施形態では、S020の処理によって(詳しくは、S020の処理の中で、前記第3着地許容領域を決定する処理によって)、本発明における第3着地許容領域決定手段が実現される。
[変形態様について]
次に、以上説明した実施形態の変形態様いくつか説明しておく。
前記実施形態では、S031の判断結果が否定的である場合に、今回歩容周期(今回歩容の遊脚足平22の目標着地時刻)も修正し得るようにしたが、今回歩容の遊脚足平22の目標着地位置だけを修正するようにしてもよい。この場合には、前記式152のΔTmを“0”とした式に基づいて、第2着地許容領域を決定するようにすればよい。なお、この場合、ZMP/着地時刻感度Stの算出は不要である。そして、ZMP/着地位置感度Spが本発明における着地位置・床反力要素間関係パラメータに相当するものとなる。
また、前記実施形態では、前記上体姿勢角偏差Δθを“0”に収束させるためのフィードバック要求操作量としてのモデル操作床反力モーメントを歩容生成装置100にフィードバックするようにしたが、該モデル操作床反力モーメントと定常的に“0”にするようにしてもよい。
また、前記実施形態では、前記ZMP/着地位置感度Spや、ZMP/着地位置感度Stを算出する場合に、S022及びS024と同じ処理を実行することによって、定常歩容の初期状態を新ためて算出するようにしたが、SpやStを算出する際には、今回歩容の遊脚足平22の目標着地位置や目標着地時刻を微小な所定量だけ変化させるだけなので、S031の判断処理を行う前の最新のS022及びS024の処理によって決定した定常歩容の初期状態をそのまま使用して、S026、S028と同じ処理を実行するようにしてもよい。
また、前記実施形態では、前記ZMP/着地位置感度Spや、ZMP/着地位置感度Stを算出する場合に、S022及びS024と同じ処理を実行することによって、定常歩容の初期状態を新ためて算出するようにしたが、SpやStを算出する際には、今回歩容の遊脚足平22の目標着地位置や目標着地時刻を微小な所定量だけ変化させるだけなので、S031の判断処理を行う前の最新のS022及びS024の処理によって決定した定常歩容の初期状態をそのまま使用して、S026、S028と同じ処理を実行するようにしてもよい。
また、前記実施形態では、ロボット1の歩行動作を行なう場合を例にとって説明したが、ロボット1の走行動作を行なうような場合にも、前記実施形態と同様に、今回歩容の遊脚足平22の目標着地位置や、目標着地時刻の修正を行なうことができる。なお、この場合、ロボット1の目標歩容を生成するための動力学モデルとしては、例えば本願出願人が、特許第4246638号公報の実施形態にて提示したような動力学モデル(フライホイールと複数の質点とを備える動力学モデル)を用いることができる。
また、歩行動作を行なう場合においても、ロボット1の動力学モデルとして、特許第4246638号公報の実施形態にて提示したような動力学モデルを使用して、あるいは、ロボット1の各リンクに質点を備えるような多質点モデルを使用して、目標歩容を生成するようにしてもよい。
また、前記実施形態では、本発明における床反力要素として、ZMPを使用したが、例えば、床面上の所定の点のまわりの床反力モーメントを使用してもよい。