[第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に作用する外力としての全床反力の目標の軌道である目標全床反力軌道とから構成される。これらの構成要素のうち、目標上体位置姿勢軌道、目標足平位置姿勢軌道及び目標腕姿勢軌道がロボット1の運動に関する目標に相当し、目標ZMP軌道及び目標全床反力軌道が、外力に関する目標に相当する。なお、脚体2や腕体以外に、上体24に対して可動な部位を備える場合には、その可動部位の目標位置姿勢軌道がロボット1の運動に関する目標の一部として目標歩容に加えられる。
補足すると、本実施形態では、歩容生成装置100が生成して出力する目標歩容のうちの目標上体位置姿勢軌道は、後述する如く適宜修正され、その修正後の目標上体位置姿勢軌道が上体24の実際の位置及び姿勢の追従目標として使用される。
ここで、上記目標歩容における「軌道」は時間的変化のパターン(時系列パターン)を意味し、歩容生成装置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に作用する重力との合力がその点まわりに作用するモーメントの水平成分(水平軸まわりのモーメント成分)が零になる床面上の点を意味する。動力学的平衡条件を満足する歩容では、ZMPと床反力中心点(全床反力中心点)とは一致する。この場合、目標ZMPを与えるということは、全床反力中心点の目標位置を与えるということと同じである。
目標床反力は、一般的には、作用点とその点に作用する並進力及びモーメントとにより表現される。作用点はどこに設定してもよいが、本実施形態では、目標ZMPを目標床反力の作用点とする。動力学的平衡条件を満足する歩容では、上記の如くZMPと床反力中心点とは一致するので、目標ZMPを作用点とする目標床反力のモーメント成分は、鉛直成分(Z軸まわりのモーメント成分)を除いて零になる。
歩容生成装置100により生成される目標歩容の運動のうち、目標腕姿勢軌道は、ロボット幾何学モデル(キネマティクス演算部)102に入力される。
また、目標上体位置姿勢軌道は、上体位置姿勢修正部122に入力される。そして、この上体位置姿勢修正部122は、入力された目標上体位置姿勢を、摂動モデル演算部120から与えられる値によって修正し、その修正後の目標上体位置姿勢(以下、修正目標上体位置姿勢という)をロボット幾何学モデル102に入力する。
ここで、本実施形態では、上体位置姿勢修正部122での修正対象は、より詳しくは、目標上体位置姿勢のうちの上体水平位置(水平方向での上体位置)であり、摂動モデル演算部120から上体位置姿勢修正部122に与えられる値は、目標上体水平位置の修正量としての上体水平位置摂動量である。そして、上体位置姿勢修正部122は、歩容生成装置100から入力される目標上体位置姿勢のうちの上体水平位置に、上記上体水平位置摂動量を合成する(加え合わせる)ことによって、修正目標上体位置姿勢の上体水平位置を決定する。また、上体位置姿勢修正部122は、歩容生成装置100から入力される目標上体位置姿勢のうちの上体水平位置以外の要素(上体鉛直位置及び上体姿勢)をそのまま、修正目標上体位置姿勢の当該要素として決定する。従って、本実施形態では、修正目標上体位置姿勢は、その上体水平位置だけを、歩容生成装置100が出力する目標上体位置姿勢から上体水平位置摂動量だけ修正してなるものとして決定される。そして、上体位置姿勢修正部122は、このように決定した修正目標上体位置姿勢をロボット幾何学モデル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の出力から計測され、その実上体姿勢角の実測値がフィードバック操作量演算部110に入力される。さらに、フィードバック操作量演算部110には、前記修正目標上体位置姿勢のうちの修正目標上体姿勢角と、摂動モデル演算部120における後述する摂動動力学モデルの状態量(以下、摂動モデル状態量ということがある)とが入力される。
詳細は後述するが、フィードバック操作量演算部110は、入力された実上体姿勢角(実測値)と修正目標上体姿勢角との偏差である上体姿勢角偏差と、入力された摂動モデル状態量と該状態量に対する所定の目標値との偏差であるモデル状態量偏差とを“0”に近づける機能を有するフィードバック操作量として、全モデル操作床反力モーメントとコンプライアンス制御用目標床反力モーメントとを決定して出力する。
ここで、上記コンプライアンス制御用目標床反力モーメントは、上体姿勢角偏差とモデル状態量偏差とを“0”に近づける(収束させる)ために、実ロボット1に付加的に作用させる目標ZMPまわりの摂動床反力モーメントである。また、モデル操作用床反力モーメントは、コンプライアンス制御用目標床反力モーメントと同じ目的のために、歩容生成装置100で目標歩容を生成するために用いる後述の動力学モデルと、前記摂動モデル演算部120で上体水平位置摂動量を算出するために用いる後述の摂動動力学モデルとにおけるモデル上のロボットにそれぞれ付加的に作用させる目標ZMPまわりの摂動床反力モーメントの総和である。
言い換えれば、上体姿勢角偏差とモデル状態量偏差とを“0”に近づけるためのトータルのフィードバック操作量のうち、実ロボット1にフィードバックする操作量成分(実ロボット1の負担分)がコンプライアンス制御用目標床反力モーメント、歩容生成装置100で用いる動力学モデルと前記摂動モデル演算部120で用いる摂動動力学モデルとの全体に対してフィードバックするトータルの操作量成分(当該動力学モデルの全体の負担分)が、全モデル操作床反力モーメントである。
フィードバック操作量演算部110で決定されたフィードバック操作量のうち、全モデル操作床反力モーメントは、全モデル操作床反力モーメント分配器118に入力される。
詳細は後述するが、全モデル操作床反力モーメント分配器118は、入力された全モデル操作用床反力モーメントから、歩容生成装置100にフィードバックする成分としての第1モデル操作床反力モーメントと、摂動モデル演算部120にフィードバックする成分としての第2モデル操作床反力モーメントとを決定し、それぞれの成分を歩容生成装置100、摂動モデル演算部120に入力する。
上記第1モデル操作床反力モーメントは、全モデル操作床反力モーメントのうちの、歩容生成装置100の動力学モデルに対する分配分である。また、上記第2モデル操作床反力モーメントは、全モデル操作床反力モーメントのうちの、摂動モデル演算部120の摂動動力学モデルに対する分配分である。この場合、基本的には、全モデル操作床反力モーメントは低周波成分と高周波成分とに分離され、これらの成分のうちの低周波成分が第1モデル操作床反力モーメント、高周波成分が第2モデル操作床反力モーメントとして決定される。従って、第1モデル操作床反力モーメントは、低周波域での上体姿勢角偏差とモデル状態量偏差とを“0”に近づけるためのフィードバック操作量としての機能を持ち、第2モデル操作床反力モーメントは、高周波域での上体姿勢角偏差とモデル状態量偏差とを“0”に近づけるためのフィードバック操作量としての機能を持つ。
そして、歩容生成装置100は、該歩容生成装置100において決定される目標ZMPまわりの床反力モーメントの水平成分(詳しくは、歩容生成装置100で用いる動力学モデル上でのロボットにおいて、目標ZMPまわりに発生する床反力モーメントの水平成分)が、入力された第1モデル操作床反力モーメントに一致するように動力学モデルを用いて目標歩容の運動(目標運動)を逐次生成する。なお、歩容生成装置100から複合コンプライアンス動作決定部104に対して出力される目標ZMPは、全床反力中心点の目標位置としての意味を持つものであるので、該目標ZMPまわりの床反力モーメントの水平成分が“0”になることを目標とするものとして出力される。
また、摂動モデル演算部120は、摂動動力学モデル上でのロボットに付加的に作用する床反力モーメント(目標歩容の目標ZMPまわりに付加する摂動床反力モーメント)の水平成分が入力された第2モデル操作床反力モーメントに一致するように前記上体水平位置摂動量を算出し、この上体水平位置摂動量を前記上体位置姿勢修正部122に出力する。
また、フィードバック操作量演算部110で決定されたフィードバック操作量のうち、コンプライアンス制御用目標床反力モーメントは、複合コンプライアンス動作決定部104に入力される。そして、複合コンプライアンス動作決定部104は、歩容生成装置100が生成する目標歩容の運動(上体位置姿勢については、修正目標上体位置姿勢)にロボット1の実際の運動を追従させつつ、目標ZMPまわりの実床反力モーメントがコンプライアンス制御用目標床反力モーメントに近づくように、目標足平位置姿勢を修正することにより、機構変形補償付き修正目標足平位置姿勢(軌道)を決定する。
この場合、ロボット1の足平位置姿勢及び床反力の全ての状態を目標に一致させることは事実上不可能であるので、これらの間にトレードオフ関係を与えて妥協的になるべく一致させる。すなわち、複合コンプライアンス動作決定部104は、各目標に対する制御偏差に重みを与えて、制御偏差(あるいは制御偏差の2乗)の重み付き平均が最小になるように機構変形補償付き修正目標足平位置姿勢(軌道)を決定する。
換言すれば、目標ZMPまわりの実床反力モーメントと、ロボット1の実際の足平位置姿勢とがそれぞれコンプライアンス制御用目標床反力モーメント、目標足平位置姿勢にできるだけ近づくように機構変形補償付き修正目標足平位置姿勢(軌道)が決定される。そして、複合コンプライアンス動作決定部104は、この修正目標足平位置姿勢をロボット幾何学モデル102に足平位置姿勢の最終的な目標値として出力することで、ロボット1の動作を制御する。
なお、上記した複合コンプライアンス動作決定部104などの構成および動作は、本出願人が先に出願した特開平10−277969号公報などに詳細に記載されている。従って、複合コンプライアンス動作決定部104に関する本明細書での説明は以上に留める。
以上が、本実施形態における制御ユニット26の処理の概略である。なお、本実施形態では、図3に示した制御ユニット26の処理機能のうち、歩容生成装置100を除く機能部分の演算処理は、比較的短めの制御周期(例えば1ms)で高速に実行される。これに対して、歩容生成装置100の演算処理は、他の機能部分の演算処理の制御周期よりも長めの制御周期(例えば10ms)で実行される。
次に、前記歩容生成装置100、フィードバック操作量演算部110、全モデル操作床反力モーメント分配器118、摂動モデル演算部120の処理の詳細を説明する。
まず、歩容生成装置100が生成する目標歩容の基本的な概要を、歩行歩容(ロボット1の歩行動作を行なわせる歩容)を主要例として説明する。
以降の説明では、「床反力鉛直成分」、「床反力水平成分」は、それぞれ、特に断らない限り、「並進床反力鉛直成分」、「並進床反力水平成分」を意味するものとする。
また、歩容における「両脚支持期」とは、ロボット1がその自重を両脚体2,2で支持する期間、「片脚支持期」とはいずれか一方のみの脚体2でロボット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”になるように多項式などの関数が設定される。
補足すると、本実施形態で主に説明する歩容である歩行歩容で生成される目標足平位置姿勢軌道においては、片脚支持期から両脚支持期への移行時に、遊脚側の足平22がその踵で床面に着地する。次いで、その着地した足平22は、そのつま先が床面に近づくように回転され、該足平22の底面のほぼ全面が床面に接触する。次いで、該足平22は、その踵が浮き上がると共につま先のみが接地するように回転された後、離床する。
また、歩容生成装置100は目標床反力鉛直成分軌道を設定する。ロボット1の歩行歩容における目標床反力鉛直成分軌道は、例えば図4に示す如く設定される。この例では、目標床反力鉛直成分軌道は、両脚支持期では、床反力鉛直成分の増加側に凸(上に凸)の台形状に設定され、片脚支持期では床反力鉛直成分の減少側に凸(下に凸)の台形状に設定される。そして、各台形部分での床反力鉛直成分の値、折れ点の時刻等が目標床反力鉛直成分軌道を規定する歩容パラメータ(床反力鉛直成分軌道パラメータ)として決定される。
なお、ロボット1の歩行歩容における床反力鉛直成分軌道は、床反力鉛直成分の値がほぼ一定に保たれるような軌道であってもよい。
目標ZMP軌道は、所謂、支持多角形(ロボット1の接地面(床との接触面)を含む最小の凸多角形)内に目標ZMPが存在すると共に、安定余裕が高く、かつ急激な変化をしないように決定される。なお、支持多角形の中央付近に目標ZMPが存在する状態を安定余裕が高いと言う(詳細は特開平10−86081号公報を参照)。
例えば、歩行歩容における目標ZMP軌道は、図5のグラフで例示する如く設定される。なお、図5に例示する目標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軸方向の位置と同じ位置まで移動していくように設定される。
本実施形態では、図5に示す如く設定した目標ZMP軌道の折れ点の位置や時刻が、ZMP軌道パラメータ(目標ZMP軌道を規定するパラメータ)として設定される。
また、目標腕姿勢は、上体24に対する相対姿勢で表される。
また、目標歩容はグローバル座標系で記述される。グローバル座標系は床に固定された座標系であり、より具体的には、以下に説明する支持脚座標系が用いられる。該支持脚座標系は、支持脚足平22をその着地後に滑らせないように回転させて、該支持脚足平22の底面のほぼ全面を床面に接触(密着)させた状態において、支持脚側脚体2の足首中心から床面に延ばした垂線が該床面と交わる点(この点は、本実施形態の例では支持脚足平22の底面のほぼ全面を床面に接触させた状態では、該足平22の代表点と合致する)を原点とし、その原点を通る水平面をXY平面とする、床に固定された座標系である。この場合、X軸方向、Y軸方向は、それぞれ支持脚足平22の前後方向、左右方向である。また、Z軸方向は、鉛直方向である。
尚、支持脚座標系の原点は、必ずしも支持脚足平22の底面のほぼ全面を床面に接触させた状態での該足平22の代表点(足平22の位置を代表する点)に合致する必要はなく、該代表点と異なる床面上の点に設定されてもよい。
また、本実施形態では、歩行歩容の両脚支持期とこれに続く片脚支持期における支持脚座標系としては、該両脚支持期に続く片脚支持期での支持脚足平22に対応して、上記した関係に従って規定される座標系が使用される。
次に、歩容生成装置100での歩容生成に用いられるロボット1の動力学モデルについて図6を参照して説明する。
本実施形態に用いられるロボット1の動力学モデルは、図6に示す如く、3つの質点24a,2a,2bを有する3質点モデルである。この場合、ロボット1の上体24の運動が、質点24b(以降、上体質点24という)の運動に対応し、脚体2,2のうちの支持脚の運動が、質点2a(以降、支持脚質点2a又は脚質点2aという)の運動に対応し、遊脚の運動が質点2b(以降、遊脚質点2b又は脚質点2bという)に対応するものとされる。
そして、この動力学モデルでは、ロボット1の全体の動力学は、上体質点24b、支持脚質点2a、及び遊脚質点2bのそれぞれの動力学の線形結合によって表現される。また、上体質点24b、支持脚質点2a、及び遊脚質点2bのそれぞれの質量の総和は、ロボット1の全体の質量に一致するものとされる。また、上体質点24b、支持脚質点2a、及び遊脚質点2bの位置は、それぞれ、ロボット1の上体位置姿勢、支持脚足平22の位置姿勢、遊脚足平22の位置姿勢に応じて定まる位置に設定される。
この動力学モデルの挙動(該動力学モデル上でのロボット1の動力学)は、以下に示すように数式化される。ただし、説明を簡単にするために、サジタルプレーン(支持脚座標系のX軸とZ軸とを含む平面)での運動方程式のみを記述し、ラテラルプレーン(支持脚座標系のY軸とZ軸とを含む平面)での運動方程式を省略した。
説明の便宜上、動力学モデルに関する変数およびパラメータを以下のように定義する。
Zsup:支持脚質点鉛直位置(Z軸方向位置)
Xsup:支持脚質点水平位置(X軸方向位置)
Zswg:遊脚質点鉛直位置(Z軸方向位置)
Xswg:遊脚質点水平位置(X軸方向位置)
Zb:上体質点鉛直位置(Z軸方向位置)
Xb:上体質点水平位置(X軸方向位置)
ZGtotal:ロボットの全体重心の鉛直位置(Z軸方向位置)
XGtotal:ロボットの全体重心の水平位置(X軸方向位置)
msup:支持脚質点質量
mswg:遊脚質点質量
mb:上体質点質量
mtotal:ロボットの総質量(=mb+msup+mswg)
Xzmp:目標ZMPの水平位置(X軸方向位置)
Zzmp:目標ZMPの鉛直位置(Z軸方向位置)
Fx:床反力水平成分(詳しくは並進床反力のX軸方向成分)
Fz:床反力鉛直成分(詳しくは並進床反力のZ軸方向成分)
Mzmp_y:目標ZMPまわりの床反力モーメント(詳しくは該床反力モーメントのY軸まわり成分)
また、任意の変数Aに対して、dA/dtはAの1階微分値を表わし、d2A/dt2はAの2階微分値を表わす。したがって、変数Aが変位(位置)ならば、dA/dtは速度、d2A/dt2は加速度を意味する。gは重力加速度定数を示す。ここでは、gは正の値とする。
上記動力学モデルの運動方程式は、式01〜03で表される。
Fz=mb*(g+d2Zb/dt2)+msup*(g+d2Zsup/dt2)
+mswg*(g+d2Zswg/dt2) ……式01
Fx=mb*d2Xb/dt2+msup*(g+d2Xsup/dt2)
+mswg*(g+d2Xswg/dt2) ……式02
Mzmp_y=−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) ……式03
また、ロボットの全体重心の位置は、次式により表される。
ZGtotal=(mb*Zb+msup*Zsup+mswg*Zswg)/mtotal ……式04
XGtotal=(mb*Xb+msup*Xsup+mswg*Xswg)/mtotal ……式05
本実施形態における歩容生成装置100は、ロボット1の片方の脚体2が着地してから他方の脚体2が着地するまでの1歩分の目標歩容を単位として、その1歩分の目標歩容を順番に生成する。従って、本実施形態の主要例とする歩行歩容では、該目標歩容は両脚支持期の開始時から、これに続く片脚支持期の終了時(次の両脚支持期の開始時)までの目標歩容が順番に生成される。
ここで、本明細書では、目標歩容の「1歩」は、ロボット1の片方の脚体2が着地してからもう一方の脚体2が着地するまでの意味で使用する。また、新たに生成しようとしている目標歩容を「今回歩容」、その次の目標歩容を「次回歩容」、さらにその次の目標歩容を「次次回歩容」、というように呼ぶ。また、「今回歩容」の一つ前に生成した目標歩容を「前回歩容」と呼ぶ。
また、歩容生成装置100は、ロボット1の運動の継続性を確保し得る今回歩容を生成するために、今回歩容に続く仮想的な周期的歩容(同じパターンのロボット1の運動が一定周期で継続的に繰り返される歩容)としての定常旋回歩容を決定する。そして、歩容生成装置100は、今回歩容の上体24の運動軌道を、将来において定常旋回歩容での上体24の運動軌道に収束させるようにして、該今回歩容を生成する。換言すれば、歩容生成装置100は、定常旋回歩容を将来の収束目標として、今回歩容を生成する。この場合、本実施形態では、今回歩容の遊脚側脚体2の足平22の着地時の位置姿勢(着地位置姿勢)又は着地時刻は、今回歩容の生成途中で、適宜更新される。
以下に歩行歩容を生成することを主要例にして、歩容生成装置100の歩容生成処理の詳細の詳細を図7〜図20を参照しつつ説明する。
歩容生成装置100は、図7のフローチャート(構造化フローチャート)に示す歩容生成処理(メインルーチン処理)を実行することによって目標歩容を生成する。
まずS010において時刻tを“0”に初期化するなど種々の初期化作業が行なわれる。この処理は、歩容生成装置100の起動時等に行なわれる。
次いで、S012を経てS014に進み、歩容生成装置100は、制御周期(図7のフローチャートの演算処理周期)毎のタイマ割り込みを待つ。制御周期はΔtである。
次いで、S016に進み、歩容生成装置100は、歩容の切り替わり目であるか否かを判断する。このとき、歩容の切り替わり目である場合には、S018の処理を経て、S020に進む。この場合、S018では、歩容生成装置100は、時刻tを“0”に初期化する。また、S016で歩容の切り替わり目でない場合には、S020に進む。
ここで、上記「歩容の切り替わり目」は、前回歩容の生成が完了し、今回歩容の生成を開始するタイミングを意味し、例えば前回歩容の生成を完了した制御周期の次の制御周期が歩容の切り替わり目になる。
次いで、S020では、歩容生成装置100は、次回歩容支持脚座標系、次次回歩容支持脚座標系、今回歩容周期および次回歩容周期を決定する。
なお、支持脚座標系を決定するということは、詳しくは、その原点の位置と該支持脚座標系の姿勢(各座標軸の向き)とを決定することを意味する。この場合、支持脚座標系は、その位置姿勢(詳しくは原点の位置とX軸及びY軸の向き)が、前記したように、支持脚足平22の底面のほぼ全面を床面に接触させた状態での該足平22の位置姿勢に対して所定の関係に従って規定される座標系であるから、次回歩容支持脚座標系及び次次回歩容支持脚座標系を決定するということは、それぞれ、今回歩容の遊脚足平22の目標着地位置姿勢、次回歩容の遊脚足平22の目標着地位置姿勢を決定することと同等である。
これらの支持脚座標系及び歩容周期は、基本的には、前記要求パラメータに基づき決定されるものである。すなわち、本実施形態では、歩容生成装置100に入力される要求パラメータは、2歩先までの遊脚足平22の着地予定位置姿勢(足平22が着地してから足底を床面にほぼ全面的に接触させるように、滑らさずに回転させた状態での足平位置姿勢)と着地予定時刻とを規定する要求値を含んでいる。そして、その1歩目の要求値、2歩目の要求値がそれぞれ、今回歩容、次回歩容に対応するものとして、今回歩容の生成開始時(前記S016の歩容の切り替わり目)以前に歩容生成装置100に与えられる。
そして、歩容の切り替わり目の制御周期(t=0となる制御周期)において、上記要求パラメータにおける1歩目の遊脚足平22(今回歩容での遊脚足平22)の着地予定位置姿勢の要求値に対応して次回歩容支持脚座標系が決定される。
例えば図10を参照して、今回歩容(1歩目)に係わる遊脚足平22(図では22L)の着地予定位置姿勢の要求値が、今回歩容の支持脚足平22(図では22R)の着地位置姿勢に対して、今回歩容支持脚座標系のX軸方向(今回歩容の支持脚足平22Rの前後方向)及びY軸方向(今回歩容の支持脚足平22Rの左右方向)に、それぞれxnext、ynextだけ移動し、且つZ軸まわり(鉛直軸まわり)にθznextだけ回転させた位置姿勢であるとする。
このとき、次回歩容支持脚座標系は、図示のように今回歩容の遊脚足平22Lの着地予定位置姿勢の要求値に従って該足平22Lを着地させた場合(足平22の代表点を着地予定位置の要求値に一致させ、且つ、足平22の姿勢(向き)を着地予定姿勢の要求値に一致させた場合)における該足平22Lの代表点(より詳しくは該代表点に合致する床上の点)を原点とし、該原点を通る水平面内における該足平22Lの前後方向、左右方向をそれぞれX’軸方向、Y’軸方向とする座標系に決定される。
上記と同様に、2歩目の遊脚側足平22の着地予定位置姿勢の要求値に応じて次々回歩容支持脚座標系(図10のX”Y”座標を参照)が決定される。また、今回歩容周期は、今回歩容の支持脚足平22の着地予定時刻(要求値)から、1歩目(今回歩容)の遊脚足平22の着地予定時刻(要求値)までの時間として決定され、次回歩容周期は、1歩目の遊脚足平22の着地予定時刻(要求値)から2歩目の遊脚足平22の着地予定時刻(要求値)までの時間として決定される。
また、歩容の切り替わり目以後の制御周期(t>0となる制御周期)においては、次回歩容支持脚座標系、次次回歩容支持脚座標系、今回歩容周期および次回歩容周期は、基本的には、前回の制御周期において決定されたものと同じに設定される。
なお、2歩目までの遊脚足平22の着地位置姿勢及び着地時刻の要求値は、外部の操縦装置等からの指令(要求)とそのときまでのロボットの1の移動履歴とを基に決定してもよい。また、要求パラメータは、前記次回及び次次回歩容支持脚座標系の位置及び姿勢の要求値、並びに今回及び次回歩容周期の要求値を直接的に指定するパラメータであってもよい。
また、遊脚足平22の着地位置姿勢は、着地瞬間の位置姿勢でもよいが、本実施形態の説明では、理解の便宜上、該遊脚足平22を着地させてから、該足平22を滑らせないように回転させて、該足平22の底面のほぼ全面を床面に接触させた状態での該足平22の位置姿勢を意味するものとする。そして、その位置姿勢を、以降、着地時足平基準位置姿勢ということがある。また、遊脚足平22の着地時刻は、本実施形態では、便宜上、該足平22の着地瞬間の時刻を意味するものとする。
補足すると、本実施形態では、今回歩容及び次回歩容の一方又は両方におけるロボット1の遊脚足平22の着地予定位置姿勢(ひいては、次回歩容支持脚座標系及び次次回歩容支持脚座標系のうちの少なくともいずれか一方の位置姿勢)、あるいは、今回歩容もしくは次回歩容の歩容周期は、各制御周期において、S020で最初に決定されたものから、修正される場合もある。すなわち、各制御周期において、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足以上の脚式移動ロボットにあっては、それに応じて定常歩容を定義するに足る歩容数が増加する。
ここで、「発散」とは、図8に示すように、ロボット1の上体24の位置が両足平22,22の位置からかけ離れた位置にずれてしまうことを意味する。また、発散成分の値とは、ロボット1の上体24の位置が両足平22,22の位置(より具体的には、支持脚足平22の接地面に設定された支持脚座標系の原点)からかけ離れていく具合を表す数値である。
定常歩容は、歩容生成装置100で今回歩容の終端におけるロボット1の目標とする運動状態を決定するために作成される仮想的な歩容である。従って、定常旋回歩容は、歩容生成装置100からそのまま出力されるものではない。
本実施形態では、目標歩容が、上記発散を生じることなく、継続的に生成されるように、発散成分を指標にして歩容を生成するようにした。この場合、継続的な歩容の代表例である定常歩容であっても、定常歩容の歩容パラメータが変われば、該定常歩容の初期発散成分(定常歩容の初期時刻での発散成分)も変わる。すなわち、歩き方、走り方、移動速度等の歩容形態によって、適切な発散成分が変わる。
そこで、本実施形態では、歩容生成装置100は、今回歩容を生成しようとするときに、まず、その生成しようとする今回歩容の後に続く歩容(将来的な収束目標とする歩容)として好適な将来の仮想的な周期的歩容(ロボット1の安定な移動を継続することが可能な将来の仮想的な周期的歩容)としての定常歩容を、今回歩容に係わる要求パラメータ(又はS020で決定した支持脚座標系及び歩容周期)に応じて決定した上で、該定常歩容の初期発散成分を求める。そして、歩容生成装置100は、今回歩容の終端発散成分を、その求めた定常歩容の初期発散成分に一致させる(より一般的には、今回歩容を定常歩容に連続させもしくは漸近させる)ように、今回歩容を生成する。このような歩容生成の基本的な指針は本出願人が先に提案した特許第3726081号のものと同様である。
ただし、本実施形態では、歩容の発散成分は、前記した図6の動力学モデル(倒立振子モデル)の状態方程式に基づいて後述するように定義される。該発散成分の定義の詳細については後述する。
本題に戻り、S022では、歩容生成装置100は、図9のフローチャートに示すサブルーチン処理を実行する。
まず、S100において、歩容生成装置100は、今回歩容、第1旋回歩容、第2旋回歩容の順に足平位置姿勢軌道がつながるように、定常歩容の歩容パラメータのうちの足平軌道パラメータが決定される。以下に、定常歩容が歩行歩容である場合を例にとって、具体的な設定方法を図10を参照して説明する。尚、以降の説明では、歩容の「初期」、「終端」はそれぞれ歩容の開始時刻、終了時刻、あるいは、それらの時刻における瞬時歩容を意味する。
足平軌道パラメータは、第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の位置姿勢が、定常歩容における次次次回歩容支持脚座標系(図10に示す)に対応する着地時足平基準位置姿勢に合致するように決定された位置姿勢である。ここで、次次次回歩容支持脚座標系は、次次回歩容支持脚座標系で見た該次次次回歩容支持脚座標系の位置姿勢(図10中の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旋回歩容のいずれにおいても、実質的に連続なものとなるように床反力鉛直成分軌道パラメータが決定される。
具体的には、定常歩容が歩行歩容である場合の目標床反力鉛直成分軌道は、例えば図11に示すようなパターンで設定される。そのパターンは、第1旋回歩容及び第2旋回歩容のいずれにおいても、先に図4に示したパターンと同様のパターンである。そして、このパターンの折れ点の時刻や床反力鉛直成分の値が床反力鉛直成分軌道パラメータとして決定される。
この床反力鉛直成分軌道パラメータは、定常歩容の1周期分の期間(第1旋回歩容の期間と第2旋回歩容の期間とを合わせた期間)における床反力鉛直成分の平均値をロボット1の自重と一致させるように決定される。すなわち、定常歩容の1周期分の期間における床反力鉛直成分の平均値がロボット1の全体に作用する重力と同じ大きさで反対向きになるようにする。
上記のごとく床反力鉛直成分軌道パラメータ(ひいては床反力鉛直成分軌道)を決定することは、定常歩容のあらゆる状態量(ロボット1の各部の位置、姿勢、速度等の運動状態量)についての初期状態(定常歩容の第1旋回歩容の支持脚座標系から見た該第1旋回歩容の初期状態)と終端状態(定常歩容の第2旋回歩容に続く第1旋回歩容の支持脚座標系から見た該第2旋回歩容の終端状態)とが一致しているという条件(以下、この条件を定常歩容の境界条件ということがある)が成立する必要があるからである。
次いで、S108に進み、歩容生成装置100は、第1旋回歩容および第2旋回歩容を合わせた定常歩容の目標ZMP軌道(目標床反力中心点軌道)を規定するZMP軌道パラメータを決定する。この場合、目標ZMP軌道は、前述したように安定余裕が高くかつ急激な変化をしないように決定される。
定常歩容が歩行歩容である場合の目標ZMP軌道(詳しくは目標ZMPのX軸方向位置)は、例えば図12に示すパターンで設定される。このパターンは、第1旋回歩容及び第2旋回歩容のいずれにおいても、先に図5に示したパターンと同様のパターンである。そして、このパターンの折れ点の時刻や目標ZMPの位置がZMP軌道パラメータとして決定される。
なお、図示は省略するが、定常歩容が歩行歩容である場合の目標ZMPのY軸方向の位置は、第1旋回歩容及び第2旋回歩容のいずれにおいても、片脚支持期においては、支持脚である脚体2の足首関節のY軸方向の位置と同じ位置(足首関節の直下の位置)に保たれるように設定される。そして、両脚支持期においては、目標ZMPのY軸方向の位置は、直前の片脚支持期において支持脚となっていた脚体2の足首関節のY軸方向の位置と同じ位置から、新たに着地させた脚体2の足首関節のY軸方向の位置と同じ位置まで移動していくように設定される。
以上が、図7のS022の処理の詳細である。
図7に戻って、歩容生成装置100は、上記の如くS022の処理を実行した後、S024に進み、定常歩容の初期状態を算出する。ここで算出する初期状態は、具体的には、定常歩容の初期上体位置速度(初期上体位置及び初期上体速度)及び初期発散成分である。この初期状態の算出は、図13のフローチャートに示す処理によって、探索的に行なわれる。
以下説明すると、まず、S200において、歩容生成装置100は、定常歩容パラメータ(図7のS022で決定された歩容パラメータ)に基づいて、定常歩容の目標足平位置姿勢、目標腕姿勢、および目標上体姿勢角の初期状態(定常歩容の初期時刻(=今回歩容の終端時刻)での状態)を決定する。ここで「状態」とは、位置又は姿勢とその時間的変化率(位置又は姿勢の変化速度)との組を意味する。例えば目標足平位置姿勢の初期状態は、定常歩容の初期時刻での足平位置姿勢と、その時間的変化率(すなわち、足平22の移動速度及び姿勢の変化速度)との組を意味する。目標腕姿勢の初期状態、目標上体姿勢角の初期状態についても同様である。
この場合、支持脚側の足平位置姿勢の初期状態と、遊脚側の足平位置姿勢の初期状態とは、図9のS100で決定した足平軌道パラメータに基づいて決定される。
具体的には、足平軌道パラメータにうちの、前記第1旋回歩容初期支持脚足平位置姿勢と、第1旋回歩容初期遊脚足平位置姿勢とが、それぞれ、定常歩容の初期時刻での支持脚側の足平位置姿勢、遊脚側の足平位置姿勢として決定される。
また、定常歩容の初期時刻での支持脚側の足平位置姿勢の時間的変化率は、第1旋回歩容初期支持脚足平位置姿勢から第2旋回歩容終端遊脚足平位置姿勢に至る足平位置姿勢軌道(次回歩容支持脚座標系から見た軌道)を有限時間整定フィルタにより生成した場合における該軌道の初期時刻(定常歩容の初期時刻)での足平位置姿勢の時間的変化率として算出される。この場合、第1旋回歩容初期支持脚足平位置姿勢から第2旋回歩容終端遊脚足平位置姿勢に至る足平位置姿勢軌道のうち、定常歩容の初期時刻からその直後の時刻までの軌道から定常歩容の初期時刻での支持脚側の足平位置姿勢の時間的変化率を算出することができる。
また、定常歩容の初期時刻での遊脚側の足平位置姿勢の時間的変化率は、今回歩容初期支持脚足平位置姿勢から第1旋回歩容終端終端遊脚足平位置姿勢に至る足平位置姿勢軌道(次回歩容支持脚座標系から見た軌道)を有限時間整定フィルタにより生成した場合における該軌道の初期時刻(定常歩容の初期時刻)での足平位置姿勢の時間的変化率として算出される。この場合、今回歩容初期支持脚足平位置姿勢から第1旋回歩容終端終端遊脚足平位置姿勢に至る足平位置姿勢軌道のうち、今回歩容の初期時刻から定常歩容の初期時刻(又はその直後の時刻)までの軌道を生成すれば、該軌道(定常歩容の初期時刻の近辺の軌道)から定常歩容の初期時刻での遊脚側の足平位置姿勢の時間的変化率を算出することができる。
また、腕姿勢の初期状態は、図9のS104で決定した腕姿勢軌道パラメータに基づいて、定常歩容の初期時刻における腕姿勢(上体24に対する両腕体の全体重心位置等)と該初期時刻の直後の期間の腕姿勢の変化量とを求めることで決定される。
また、上体姿勢角の初期状態は、図9の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の右辺は零にならなければならない。したがって、これらの関係から初期全体重心鉛直速度を求めることができる。具体的には、まず、前記図9のS106で決定した床反力鉛直成分軌道パラメータによって算出される床反力鉛直成分をロボット1の全体質量で割った値を、定常歩容の初期から終端までの期間において2階積分することにより、床反力鉛直成分による全体重心移動量(式13の右辺第1項)が求められる。
さらに、重力加速度を定常歩容の初期から終端までの期間において2階積分することにより、重力による全体重心移動量(式13の右辺第2項)が求められる。そして、上記の如く求めた、床反力鉛直成分による全体重心移動量と重力による全体重心移動量との和の符号を反転させたものを、定常歩容の1周期Tcycの時間で割ることにより、初期全体重心鉛直速度が求められる。
そして、本実施形態では、例えば、図6に示した3質点モデルを用い、該3質点モデルの重心点の鉛直速度が上記初期全体重心鉛直速度に一致するような上体24の鉛直速度を、S200で決定した足平位置姿勢、腕姿勢等の初期状態と、S202(又は後述のS218)で決定された初期上体水平位置速度(Xs,Vxs)とを基に求め、その求めた鉛直速度を初期上体鉛直速度Vzsとして決定する。
この場合、上記の如く求めた初期全体重心鉛直速度と、足平位置姿勢の初期状態とを基に、前記式04の両辺を1階微分した式によって、上体質点24bの鉛直速度を算出できる。そして、その上体質点24bの鉛直速度と、S200で決定された上体姿勢角の初期状態とを基に、初期上体鉛直速度Vzsを決定することが可能である。
なお、より多くの質点を有する多質点モデル(例えばロボット1の各リンクに質点を有する幾何学モデル)を用いることによってより正確に、初期上体鉛直速度Vzsを決定するようにしてもよい。また、ロボット1の上体24以外の部位の質量が上体24に比して十分に小さいような場合には、例えばロボット1の全体重心の鉛直速度が上体24の鉛直速度にほぼ一致すると見なし、上記初期全体重心鉛直速度を、そのまま初期上体鉛直速度Vzsとして決定するようにしてもよい。
一方、定常歩容の初期上体鉛直位置Zsは、例えば本出願人が先に特開平10−86080号公報で提案した上体高さ決定手法を用いて決定される。このとき、初期時刻における足平位置姿勢(前記図9の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周期分)の歩容)が仮に生成される。より具体的には、図7のS022で決定した定常歩容パラメータを基に、初期時刻から終端時刻までの各瞬間における目標ZMP、目標床反力鉛直成分、目標足平位置姿勢、目標上体姿勢および目標腕姿勢の瞬時値が逐次求められる。そして、求めた目標ZMPと目標床反力鉛直成分とを満足するように、図6に示した動力学モデル(3質点モデル)を用いて上体位置を逐次決定することによって、定常歩容の初期時刻から終端時刻までの歩容を生成する。この場合、前記初期上体水平位置速度(Xs,Vxs)、初期上体鉛直位置速度(Zs,Vzs)が上体24の位置及び速度の初期状態として設定される。
尚、この歩容生成は歩容生成装置100の内部で行われるだけであって、実際のロボット1を駆動するための目標値として、歩容生成装置100から出力されることはない。
S208の処理は、具体的には、図14のフローチャートに示す如く実行される。
以下説明すると、歩容生成装置100は、まず、S300において、諸々の初期化を行なう。具体的には、歩容生成用時刻Tkが定常歩容の初期時刻Tsに初期化される。さらに、上体水平位置速度に、初期上体水平位置速度(Xs,Vxs)の最新の候補値(図13のS202もしくは後述のS216もしくはS218で決定された最新の候補値)が代入され、上体鉛直位置速度に、初期上体鉛直位置速度(Zs,Vzs)の最新値(図13の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の判断結果が否定的になった場合には、図14の処理、すなわち、図13のS208の処理は終了する。これにより、定常歩容の初期時刻から終端時刻までの1周期分の定常歩容(仮の定常歩容)の生成が完了する。
歩容生成装置100は、上記S306〜S316で仮の定常歩容の瞬時値を決定する処理を次のように実行する。まずS306において、歩容生成装置100は、定常歩容パラメータ(より詳しくは床反力鉛直成分軌道パラメータ)を基に、図11に示した目標床反力鉛直成分軌道の時刻Tkでの瞬時値を求める。
さらに、S308において、歩容生成装置100は、定常歩容パラメータ(より詳しくはZMP軌道パラメータ)を基に、図12に示した目標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での全体重心鉛直位置と、目標足平位置姿勢と、基準上体姿勢(目標上体姿勢)とを基に、例えば、図6に示した3質点モデルを用いて上体鉛直位置を求める。この場合、目標足平位置姿勢に基づき、3質点モデルにおける2つの脚質点2a,2bの位置が決定される。さらに、この3質点モデルにおける全体重心の鉛直位置が、上記の如く求めた時刻Tkでの全体重心鉛直位置に一致するような上体質点24bの鉛直位置が決定される。そして、この上体質点24bの鉛直位置と目標上体姿勢(基準上体姿勢)とから上体鉛直位置が決定される。
なお、より多くの質点を有する多質点モデル(例えばロボット1の各リンクに質点を有するモデル)を用いることによって、より正確に上体鉛直位置を求めるようにしてもよい。また、上体24以外の部位の質量が上体24に比して十分に小さいような場合には、簡略的に、全体重心鉛直位置が、上体24の重心の鉛直位置に一致するものとみなし、該全体重心鉛直位置と、目標上体姿勢(基準上体姿勢)とから上体鉛直位置を決定するようにしてもよい。
次いでS314に進み、歩容生成装置100は、目標ZMPを満足するように(ロボット1の慣性力と重力との合力が目標ZMPまわりに発生するモーメントの水平成分が“0”であるという動力学的平衡条件を満足するように)、時刻Tkでの上体水平加速度(上体24の水平方向の加速度)を決定する。
この時点において、定常歩容(仮の定常歩容)の足平位置姿勢、腕姿勢、上体姿勢および上体鉛直位置の瞬時値(現在時刻Tkでの値)が決定されているので、残りの上体水平位置を決定すれば、鉛直軸まわりの角運動量を変化させる腕体の運動自由度を除いて、ロボット1の全体の目標運動が決定されることとなる。したがって、上体水平位置を決定すれば、床反力の鉛直軸まわりのモーメントを除き、すべての床反力も一義的に決定される。
なお、本実施形態では、定常歩容(仮の定常歩容)の目標床反力鉛直成分及び目標ZMPは、それぞれ前記図7のS022で決定した定常歩容パラメータの床反力鉛直成分軌道パラメータ、目標ZMP軌道パラメータによって規定される。したがって、上体水平位置の決定に応じて従属的に決定される床反力は、床反力水平成分のみである。
補足すると、本実施形態のロボット1は、各脚体2の自由度が6自由度であることから、目標足平位置姿勢と目標上体位置姿勢とを決定すれば、各脚体2の各部の位置姿勢も一義的に決定されることとなる。なお、鉛直軸まわりの角運動量を変化させる腕の運動自由度は、後述するように、スピン力を打ち消すために用いられる。
S314では、例えば図6の動力学モデル(3質点モデル)に係わる前記式03を用いて上体水平加速度が求められる。より具体的には、現在時刻Tkまでに求められた目標足平位置姿勢の時系列を用いて、現在時刻Tkでの各脚質点2a,2bの鉛直加速度及び水平加速度が求められると共に、現在時刻Tkでの目標足平位置姿勢を用いて現在時刻Tkでの各脚質点2a,2bの鉛直位置及び水平位置が求められる。
また、現在時刻Tkの上体鉛直位置と、時刻(Tk−ΔTk)の上体水平位置と、現在時刻Tkの目標上体姿勢とから、現在時刻Tkでの上体質点24bの鉛直位置及び水平位置が決定される。なお、時刻(Tk−ΔTk)までの上体水平位置の時系列又は時刻(Tk−ΔTk)での歩容状態を基に時刻Tkでの上体水平位置を補間的に推定し、その推定した上体水平位置を時刻(Tk−ΔTk)の上体水平位置の代わりに用いてもよい。
また、現在時刻Tkでの床反力鉛直成分と、各脚質点2a,2bの鉛直加速度とをそれぞれ、前記式01のFz、d2Zsup/dt2、d2Zswg/dt2に代入してなる式をd2Zb/dt2について解くことによって、現在時刻Tkでの上体質点24bの鉛直加速度d2Zb/dt2が求められる。
そして、上記の如く求めた上体質点24bの鉛直位置、水平位置、鉛直加速度と、各脚質点2a,2bの鉛直位置、水平位置、鉛直加速度、水平加速度をそれぞれ、前記式03のZb、Xb、d2Zb/dt2、Zsup、Xsup、d2Xsup/dt2、d2Zsup/dt2、Zswg、Xswg、d2Xswg/dt2、d2Zswg/dt2に代入すると共に、現在時刻Tkでの目標ZMPの水平位置および鉛直位置を式03のXzmp,Zzmpに代入し、さらに、同式03のMzmp_yを“0”にしてなる式を、d2Xb/dt2について解くことにより、現在時刻Tkでの上体質点水平加速度d2Xb/dt2が算出される。そして、この上体質点水平加速度d2Xb/dt2が現在時刻Tkでの上体水平加速度として求められる。
尚、より厳密な動力学モデルを用いて、目標ZMPまわりの床反力モーメントの水平成分を“0”にするような上体水平加速度を探索的に求めるようにしてもよい。
次いでS316に進み、歩容生成装置100は、S314で求めた上体水平加速度を2階積分することにより現在時刻Tkでの上体水平位置を算出する。より詳しくは、上体水平加速度に刻み時間ΔTkを乗じてなる値を時刻Tk−ΔTkでの上体水平速度に加算することによって、現在時刻Tkでの上体水平速度が求められる。さらにその上体水平速度に刻み時間ΔTkを乗じてなる値を時刻Tk−ΔTkでの上体水平位置に加算することによって現在時刻Tkでの上体水平位置が求められる。
以上がS306〜S316で実行される歩容の生成処理の詳細である。
図13のS208の処理を完了した後、S210に進み、歩容生成装置100は、生成した歩容(仮定常歩容)の終端上体水平位置・速度を、その瞬間の支持脚に対応する支持脚座標系(図10の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と同様の処理によって定常歩容(仮定常歩容)が歩容パラメータを用いて生成される。
さらに、その生成された定常歩容の終端上体位置速度を、その瞬間の支持脚に対応する支持脚座標系(図10の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を算出する。
ここで、本実施形態では、発散成分qは、例えば前記特許文献1に記載されたものと同様に、次式20により定義される。
q=上体水平位置+上体水平速度/ω0 ……式20
なお、ω0はあらかじめ設定された所定値である。
そして、S222では、歩容生成装置100は、S220で決定した初期上体水平位置速度(X0,Vx0)を用いて式20の右辺の演算を行ない、その演算結果の値を定常歩容初期発散成分q0として決定する。
次いで、S224に進み、歩容生成装置100は、定常歩容の初期発散成分q0を今回歩容支持脚座標系から見た値に変換し、これをq0”として求める。また、歩容生成装置100は、初期上体鉛直位置速度(Z0,Vz0)を今回歩容支持脚座標系から見た値に変換し、これを(Z0”,Vz0”)として求める。
補足すると、(Z0”,Vz0”)は、第2旋回歩容の支持脚座標系(図10のX”軸、Y”軸を水平面の2軸とする支持脚座標系)から見た第2旋回歩容終端上体鉛直位置速度に一致する。また、q0”も第2旋回歩容の支持脚座標系から見た第2旋回歩容終端発散成分に一致している。したがって、これらの性質を用いて、(Z0”,Vz0”)およびq0”を算出するようにしても良い。
以上により、図7のS024の処理、すなわち定常歩容の初期状態を求めるサブルーチン処理が終了する。
次いで、図7のS026に進み、歩容生成装置100は、今回歩容の歩容パラメータを決定(一部は仮決定)する。S026では、より具体的には、図15のフローチャートに示す処理が実行される。
まず、S600において、歩容生成装置100は、今回歩容の足平位置姿勢軌道が定常歩容の足平位置姿勢軌道につながるように、今回歩容の足平軌道パラメータを決定する。
具体的には、今回歩容初期遊脚足平位置姿勢(今回歩容の初期の遊脚足平位置姿勢)は、今回歩容支持脚座標系から見た前回歩容終端支持脚足平位置姿勢(現在の遊脚足平位置姿勢)に設定される。
今回歩容初期支持脚足平位置姿勢(今回歩容の初期の支持脚足平位置姿勢)は、今回歩容支持脚座標系から見た前回歩容終端遊脚足平位置姿勢(現在の支持脚足平位置姿勢)に設定される。
また、今回歩容終端遊脚足平位置姿勢は、今回歩容の遊脚足平22を、該今回歩容終端遊脚足平位置姿勢から、滑らせないようにピッチ方向に(該足平22のつま先を下げる向きに)所定角度だけ回転させた状態での該足平22の位置姿勢が、次回歩容支持脚座標系に対応する前記着地時足平基準位置姿勢に合致するように決定される。
今回歩容終端支持脚足平位置姿勢は、今回歩容の支持脚足平22を、今回歩容支持脚座標系に対応する着地時足平基準位置姿勢から、滑らせないようにピッチ方向に(該足平22の踵を持上げる向きに)所定角度だけ回転させた状態での該足平22の位置姿勢とされる。
次いで、S602に進み、歩容生成装置100は、今回歩容の上体姿勢軌道パラメータを決定する。この上体姿勢軌道パラメータは、それにより規定される上体姿勢軌道が、定常歩容の上体姿勢軌道に連続してつながる(今回歩容終端での上体姿勢角及び角速度がそれぞれ定常歩容初期の上体姿勢角及び角速度に一致する)ように決定される。この場合、本実施形態では、今回歩容の上体姿勢軌道パラメータにより規定される上体姿勢は、定常歩容の上体姿勢と同様に、定常的に一定姿勢である前記基準上体姿勢(上体24の体幹軸が鉛直方向を向く姿勢)に設定される。
なお、今回歩容の上体姿勢軌道は、定常歩容の上体姿勢軌道に連続的につながるように設定されておれば、今回歩容の初期から終端まで経時的に変化するように設定してもよい。
次いで、S604に進み、歩容生成装置100は、今回歩容の腕姿勢軌道パラメータを決定する。この腕姿勢軌道パラメータは、今回歩容の腕姿勢軌道が前記定常歩容の腕姿勢軌道に連続してつながるようにして、定常歩容の腕姿勢軌道パラメータと同様に決定される。
なお、ここで決定される今回歩容の腕姿勢軌道パラメータは、定常歩容の腕姿勢軌道パラメータと同様に、鉛直軸(あるいは上体24の体幹軸)まわりの両腕体の角運動量変化に関すること以外のパラメータ(例えば上体24に対する腕体の手先の相対高さや腕体全体の相対重心位置などを規定するパラメータ)である。
次いで、S606に進み、歩容生成装置100は、今回歩容の床反力鉛直成分軌道パラメータを、それにより規定される床反力鉛直成分軌道が前記図4に示した如く実質的に連続な軌道になるように決定する。ただし、今回歩容の床反力鉛直成分軌道パラメータは、今回歩容のロボット1の全体重心鉛直位置速度と床反力鉛直成分軌道とのいずれもが、前記定常歩容に連続してつながるように決定される。
具体的には、まず、図7のS024の処理(定常歩容初期状態の決定処理)で最終的に求めた定常歩容の初期上体鉛直位置速度を今回歩容支持脚座標系から見た値に変換した値(Z0”,Vz0”)、すなわち、図13のS224で求めた(Z0”,Vz0”)等を基に、今回歩容支持脚座標系から見た定常歩容の初期全体重心鉛直位置速度が求められる。
前記した図6の3質点モデルを用いて定常歩容の初期全体重心鉛直位置速度が求められる。この場合、今回歩容支持脚座標系から見た定常歩容初期の目標足平位置姿勢とその時間的変化率(変化速度)とに基づき、3質点モデルにおける2つの脚質点2a,2bの位置・速度が求められる。さらに、上記(Z0”,Vz0”)と、定常歩容初期の上体姿勢角(=基準上体姿勢角)及びその時間的変化率とから、3質点モデルにおける上体質点24bの位置・速度が求められる。そして、これらの3つの質点24b,2a,2bの位置・速度から、その3質点24b,2a,2bの重心位置及び速度が、定常歩容の初期全体重心鉛直位置速度として算出される。
なお、より多くの質点を有する多質点モデル(例えばロボット1の各リンクに質点を有する幾何学モデル)を用いることによってより正確に、定常歩容の初期全体重心鉛直位置速度を求めるようにしてもよい。また、上体24以外の部位の質量が上体24に比して十分に小さいような場合には、上記(Z0”,Vz0”)と、定常歩容初期の上体姿勢角(=基準上体姿勢角)及びその時間的変化率とから、定常歩容の初期全体重心鉛直位置速度を求めるようにしてもよい。
このようにして求めた定常歩容の初期全体重心鉛直位置速度を、前記式13と下記式41の終端全体重心鉛直位置速度に代入すると共に、前回歩容の瞬時値(より詳しくは、前回歩容の終端状態を今回歩容支持脚座標系から見た値)の全体重心鉛直位置および速度を、前記式13と下記式41の初期全体重心鉛直位置および速度に代入し、式13と式41の関係を満足するように、今回歩容の床反力鉛直成分軌道パラメータが決定される。ただし、式13と式41における積分値は今回歩容の初期から終端までの期間の積分値とする。
終端全体重心鉛直速度−初期全体重心鉛直速度
=(床反力鉛直成分/ロボットの質量)の1階積分
+重力加速度の1階積分
…式41
(ただし、重力加速度は負の値とする。)
より具体的には、まず、図4に示したような床反力鉛直成分軌道を規定する床反力鉛直成分軌道パラメータ(折れ点の時刻等)のうちの、少なくとも2つのパラメータ(例えば、床反力鉛直成分の最大値と最小値)を独立な未知変数として、その未知変数の値を、式13と式41とからなる連立方程式を解くことによって決定する。
次いで、S608に進み、歩容生成装置100は、今回歩容のZMP軌道が、安定余裕が高くかつ急激な変化をしないように、該ZMP軌道を規定するZMP軌道パラメータ(ZMP軌道の折れ点の時刻や位置等)を決定する。例えば、ZMP軌道が、図5に示したようなパターンになるようにZMP軌道パラメータが仮決定される。ただし、今回歩容のZMP軌道が前記定常歩容のZMP軌道に連続してつながるように(今回歩容終端におけるZMPの位置が定常歩容初期のZMPの位置に一致するように)、今回歩容のZMP軌道パラメータが仮決定(暫定的に決定)される。
なお、S608で決定される今回歩容のZMP軌道パラメータは、仮決定されたものであり、後述するように修正される。以降、その修正が終了するまでの仮決定されたZMP軌道パラメータにより規定される今回歩容の目標ZMPを、以降、仮目標ZMPと呼ぶ。その仮決定されたZMP軌道パラーメータを含む今回歩容の歩容パラメータを仮今回歩容パラメータという。
図7の説明に戻って、歩容生成装置100は、上記のごとくS026の処理を行った後、次いでS028において、今回歩容の歩容パラメータ(詳しくはZMP軌道パラメータ)を修正する処理を実行する。この処理では、今回歩容の上体位置姿勢軌道を定常歩容に連続させ、もしくは近づけるべく歩容パラメータのうちのZMP軌道パラメータが修正される。
この処理は、図16のフローチャートに示す如く実行される。
まずS700を経てS702に進み、歩容生成装置100は、仮決定されたZMP軌道パラメータを含む仮今回歩容パラメータ(暫定的な今回歩容パラメータ)を基に、今回歩容の終端時刻までの仮今回歩容を生成する。
S702では、図17のフローチャートに示す処理が実行される。
以下説明すると、歩容生成装置100は、まず、S800において、仮今回歩容の生成用時刻Tk等の初期化を行なう。具体的には、仮今回歩容の生成用時刻Tkが現在時刻tに初期化される。また、時刻t−Δtで歩容生成装置100が既に決定した目標上体位置及び目標上体速度、目標上体姿勢角及びその角速度、目標足平位置姿勢、目標腕姿勢など、時刻t−Δtでの目標歩容の運動状態(今回歩容支持脚座標系で見た運動状態)が、仮今回歩容の現在時刻tの直前の初期運動状態として設定される。
次いで、S802を経てS804において、歩容生成装置100は、仮今回歩容の生成用時刻k(現在値)が今回歩容の終端時刻Tcurr以前の時刻であるか否か(Tk≦Tcurrであるか否か)を判断する。この判断結果が肯定的である場合には、歩容生成装置100は、S806〜S816の処理(詳細は後述する)を実行することによって、時刻Tkでの歩容の瞬時値を決定する。
次いでS818に進み、歩容生成装置100は、仮今回歩容の生成用時刻Tkを、所定の刻み時間ΔTkだけ増加させた後、S804の判断を再び行なう。ここで、刻み時間ΔTkは、例えば制御周期Δtと一致させておけばよい。ただし、演算量を低減するために、ΔTkをΔtよりも長い時間に設定してもよい。
S804の判断結果が肯定的である場合には、S806からS818までの処理が繰り返され、S804の判断結果が否定的になった場合には、図17の処理、すなわち、図16のS702の処理は終了する。これにより、今回歩容の初期時刻から終端時刻までの仮今回歩容の生成が完了する。
歩容生成装置100は、上記S806〜S816で仮今回歩容の瞬時値を決定する処理を次のように実行する。この仮今回歩容の瞬時値の決定の仕方は、図14のS306〜S316で定常歩容(仮の定常歩容)の瞬時値を決定する仕方と同様である。
まずS806において、歩容生成装置100は、仮今回歩容パラメータ(より詳しくは床反力鉛直成分軌道パラメータ)を基に、図4に示した目標床反力鉛直成分軌道の時刻Tkでの瞬時値を求める。
次いで、S808において、歩容生成装置100は、仮今回歩容パラメータ(より詳しくは仮決定のZMP軌道パラメータ)を基に、図5に示した目標ZMP軌道(仮目標ZMP軌道)の時刻Tkでの瞬時値を求める。
次いでS810に進み、歩容生成装置100は、仮今回歩容パラメータ(より詳しくは足平軌道パラメータ、上体姿勢軌道パラメータ、及び腕姿勢軌道パラメータ)を基に、目標足平位置姿勢、目標上体姿勢および目標腕姿勢の時刻Tkでの瞬時値をそれぞれ求める。ただし、目標腕姿勢に関しては、より詳しくは両腕体の全体重心位置が決定されるが、鉛直軸(または上体24の体幹軸)まわりの角運動量を変化させる腕体の運動(腕振り運動)は、未だ決定されない。
次いでS812に進み、歩容生成装置100は、S806で求めた目標床反力鉛直成分を満足する(ロボット1の全体重心の鉛直方向の慣性力と重力との和を目標床反力鉛直成分に釣り合わせる)ように、時刻Tkでの上体鉛直位置を算出する。その算出の仕方は、図14のS312(定常歩容の上体鉛直位置の瞬時値を算出する処理)と同じでよい。ただし、S812で使用する多質点モデルは、S312で使用するものと異ならせてもよい。
次いでS814に進み、歩容生成装置100は、仮今回歩容の時刻Tkでの上体水平加速度を決定する処理を実行する。
具体的には、仮今回歩容の生成用の時刻Tkが現在時刻t(歩容生成装置100の現在の制御周期の時刻)に一致する場合には、歩容生成装置100は、全モデル操作床反力モーメント分配器118から与えられた第1モデル操作床反力モーメント(現在の制御周期での値)が目標ZMPまわりに発生するように(ロボット1の慣性力と重力との合力が目標ZMPまわりに発生するモーメントの水平成分が第1モデル操作床反力モーメントに釣り合うように)、仮今回歩容の時刻Tkでの上体水平加速度を決定する。
言い換えると、ロボット1の慣性力と重力との合力が目標ZMPまわりに発生するモーメントが第1モデル操作床反力モーメントの符号を反転したモーメントに一致するように、時刻Tkでの上体水平加速度が決定される。
また、仮今回歩容の生成用の時刻Tkが、現在時刻tよりも将来の時刻である場合(Tk>現在時刻tである場合)には、歩容生成装置100は、目標ZMPを満足するように(ロボット1の慣性力と重力との合力が目標ZMPまわりに発生するモーメントの水平成分が“0”であるという動力学的平衡条件を満足するように)、時刻Tkでの上体水平加速度を決定する。
これらの場合において、仮今回歩容の時刻Tkでの上体水平加速度を算出する処理は、例えば図6の動力学モデル(3質点モデル)を用いて行なわれる。
具体的には、仮今回歩容の時刻Tkまでの目標足平位置姿勢の時系列を用いて、時刻Tkでの各脚質点2a,2bの鉛直加速度及び水平加速度が求められると共に、時刻Tkでの目標足平位置姿勢を用いて時刻Tkでの各脚質点2a,2bの鉛直位置及び水平位置が求められる。
また、仮今回歩容の時刻Tkの上体鉛直位置と、時刻(Tk−ΔTk)の上体水平位置と、時刻Tkでの目標上体姿勢とから、時刻Tkでの上体質点24bの鉛直位置及び水平位置が決定される。なお、時刻Tkが現在時刻tである場合には、時刻(Tk−ΔTk)の上体水平位置としては、S800で設定した初期運動状態での上体水平位置が用いられる。
補足すると、時刻(Tk−ΔTk)までの上体水平位置の時系列又は時刻(Tk−ΔTk)での歩容状態を基に時刻Tkでの上体水平位置を補間的に推定し、その推定した上体水平位置を時刻(Tk−ΔTk)の上体水平位置の代わりに用いてもよい。
また、時刻Tkでの床反力鉛直成分と、各脚質点2a,2bの鉛直加速度とをそれぞれ、前記式01のFz、d2Zsup/dt2、d2Zswg/dt2に代入してなる式をd2Zb/dt2について解くことによって、時刻Tkでの上体質点24bの鉛直加速度d2Zb/dt2が求められる。
そして、Tk=現在時刻tである場合には、上記の如く求めた上体質点24bの鉛直位置、水平位置、鉛直加速度と、各脚質点2a,2bの鉛直位置、水平位置、鉛直加速度、水平加速度とをそれぞれ、前記式03のZb、Xb、d2Zb/dt2、Zsup、Xsup、d2Xsup/dt2、d2Zsup/dt2、Zswg、Xswg、d2Xswg/dt2、d2Zswg/dt2に代入すると共に、時刻Tkでの目標ZMPの水平位置および鉛直位置を式03のXzmp,Zzmpに代入し、さらに、同式03のMzmp_yをモデル操作床反力モーメント(現在値)に一致させてなる式を、d2Xb/dt2について解くことにより、時刻Tkでの上体質点水平加速度d2Xb/dt2が算出される。そして、この上体質点水平加速度d2Xb/dt2が時刻Tkでの上体水平加速度として求められる。
また、Tk>現在時刻tである場合には、式03のMzmp_yを、“0”としてなる式をd2Xb/dt2について解くことにより、時刻Tkでの上体水平加速度が算出される。この場合、式03のMzmp_yを、“0”とすること以外の処理は、Tk=現在時刻tである場合と同様である。
尚、より厳密な動力学モデルを用いて、目標ZMPまわりの床反力モーメントの水平成分をモデル操作床反力モーメントに一致させ、あるいは、“0”とするような上体水平加速度を探索的に求めるようにしてもよい。
次いでS816に進み、歩容生成装置100は、S814で求めた上体水平加速度を2階積分することにより現在時刻Tkでの上体水平位置を算出する。この算出の仕方は、図14のS316と同じである。
以上が図16のS702で歩容生成装置100が実行する処理(仮今回歩容の生成処理)の詳細である。
歩容生成装置100は、以上のごとくS702の処理を実行した後、次にS704の処理を実行する。
S704では、歩容生成装置100は、S702で生成した仮今回歩容の終端での上体水平位置速度(Xe,Vxe)を基に、終端発散成分qe1(仮今回歩容の終端での発散成分qe1)を算出する。
具体的には、歩容生成装置100は、まず、(Xe,Vxe)と仮今回歩容の終端での上体姿勢(本実施形態では基準上体姿勢)とから、図6の倒立振子モデルの上体質点24bの水平位置速度(水平位置及び水平速度)を決定する。そして、この上体質点水平位置速度から、前記した図13のS222と同様に、前記式118に基づいて、仮今回歩容の終端発散成分qe1を算出する。この場合に、qe1を算出するために用いるΓ-1は、S222の処理で算出したものと同じである。
次いでS706に進み、歩容生成装置100は、上記の如く求めた仮今回歩容の終端発散成分qe1と、図14の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軌道を台形パターンの修正量によって図18に示す如く修正してなる目標ZMP軌道を用いて、前記S702と同様に、終端時刻までの仮今回歩容を生成する。すなわち、歩容生成装置100は、S702での仮今回歩容の生成に用いた仮目標ZMP軌道の代わりに、それを修正してなる目標ZMP軌道を用いて、改めて仮今回歩容を生成する。この場合、目標ZMP以外の今回歩容パラメータは、S702で使用したものと同じである。
ここで、図18を参照して、上記「a」は、仮今回歩容の終端発散成分を定常歩容の初期発散成分にできるだけ一致させる(ひいては今回歩容の上体水平位置姿勢軌道を定常歩容の上体水平位置姿勢軌道に収束させる)ために、仮目標ZMP軌道を修正する(仮目標ZMP軌道に加える)台形パターンの修正量(以下、ZMP修正量ということがある)の高さである。
この場合、本実施形態では、仮目標ZMP軌道の修正は、支持脚足平22の底面のほぼ全面が接地する期間(足底全面接地期間)において行なうようにしている。このため、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修正量によって図18に示す如く仮目標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軌道が)探索的に求められる。
かかるループ処理の次のS718では、歩容生成装置100は、現在の仮目標ZMP軌道(S700の繰り返しループを抜ける直前で設定された仮目標ZMP軌道)を最終的に今回歩容の目標ZMP軌道として、これに対応するZMP軌道パラメータを決定する。これにより、図7のS028の処理(今回歩容パラメータの修正処理)が終了する。
なお、本実施形態では、ZMP修正量を台形パターンに設定したが、例えば、三角形状のパターンや、曲率が連続的に変化するようなパターン等に決定してもよい。
図7に戻って、上記のごとくS028において今回歩容パラメータを修正した後、S030に進み、歩容生成装置100は、今回歩容の初期から終端までの各時刻での目標ZMPの位置(全床反力中心点の目標位置)を制限するZMP存在許容領域(全床反力中心点の存在許容領域)を決定する。ZMP存在許容領域は、前記フィードバック操作量演算部110において、後述する如く使用されるものであると共に、後述するS031の判断処理で使用されるものである。
この場合、ZMP存在許容領域は、所謂、支持多角形内に設定される。より具体的には、歩容生成装置100は、S026で決定した今回歩容パラメータのうちの足平軌道パラメータを基に、今回歩容の各足平22の足平位置姿勢軌道を算出し、この足平位置姿勢軌道に基づいて、現在時刻(現在の制御周期の時刻)以後の各時刻(所定の刻み時間毎の各時刻)での各足平22の接地面(床面との接触面)を求める。そして、歩容生成装置100は、この接地面を基に、現在時刻以後の各時刻での支持多角形(上記接地面を含む最小の凸多角形)を決定する。該支持多角形は、片脚支持期では、支持脚足平22の接地面に一致し、両脚支持期では、両足平22,22のそれぞれの接地面を連接した領域となる。
そして、歩容生成装置100は、このように決定した各時刻の支持多角形内に、その時刻でのZMP存在許容領域を、所定の規則に従って設定する。
該ZMP存在許容領域は、支持多角形と同じ領域(外形状及び面積が支持多角形に一致する領域)でもよいが、本実施形態では、例えば、支持多角形よりも面積が若干小さい領域で、且つ、その外周の境界線が、支持多角形の外周の境界線と若干の間隔を有するような領域がZMP存在許容領域として設定される。換言すれば、本実施形態では、ZMP存在許容領域は、支持多角形内に包含され、且つ、その面積が支持多角形に比して小さくなり過ぎないような領域に設定される。
この場合、本実施形態では、片脚支持期においては、例えば方形状のZMP存在許容領域が支持多角形(支持脚足平22の接地面)内に設定される。
一方、両脚支持期においては、ZMP存在許容領域は、例えば、支持多角形と概ね相似するような形状に設定される。ここで、両脚支持期における支持多角形は、例えば図19に例示する如く、一般には、方形状と異なる形状となる。なお、図示例では、右足平22Rのつま先が接地し、左足平22Lのかかとが接地している状態(両脚支持期の開始直後の状態)を模式的に示している。
従って、本実施形態では、両脚支持期におけるZMP存在許容領域は、支持多角形が方形状と異なる形状となる状況では、図19に例示する如く、方形状と異なる外形状の領域に設定される。
補足すると、ZMP存在許容領域は、支持多角形と相似する形状である必要はない。例えば、図19に例示する支持多角形は、四角形であるが、その内部に設定するZMP存在許容領域の外形状は、5つ以上の頂点を有する多角形であってもよい。
また、両脚支持期の全期間において、ZMP存在許容領域が方形状と異なる形状である必要なない。さらに、片脚支持期においては、ZMP存在許容領域を方形状と異なる形状の領域に設定してもしてもよい。
また、ZMP存在許容領域を、あらかじめ定めた所定数の頂点を有する多角形(例えば四角形)に限定し、その多角形の各頂点の位置を支持多角形内に設定することで、ZMP存在許容領域を設定するようにしてもよい。
また、ZMP存在許容領域を、円のような曲線で設定するようにしてもよい。
上記のごとくS030においてZMP存在許容領域を決定した後、S031に進み、歩容生成装置100は、S028で決定したZMP軌道パラメータにより規定される目標ZMP軌道が適切な軌道であるか否かを判断する。この場合、本実施形態では、歩容生成装置100は、今回歩容のZMP軌道パラメータにより規定される目標ZMP軌道の各瞬時値(所定の刻み時間毎の瞬時値)が、前記S030で決定したZMP存在許容領域内に存在するか否かによって、該目標ZMP軌道が適切な軌道であるか否かを判断する。
より具体的には、歩容生成装置100は、現在時刻以後の各時刻での今回歩容の目標ZMPが、その時刻でのZMP存在許容領域内に存在する場合には、今回歩容のZMP軌道パラメータにより規定される目標ZMP軌道が適切な軌道であると判断する。また、今回歩容のいずれかの時刻での目標ZMPが、その時刻でのZMP存在許容領域を逸脱する場合には、今回歩容のZMP軌道パラメータにより規定される目標ZMP軌道が適切な軌道でないと判断する。
S031の判断結果が否定的である場合(目標ZMP軌道が適切な軌道でない場合)には、歩容生成装置100は、S020からの処理を改めて実行する。この場合、S020においては、歩容生成装置100は、例えば、今回歩容の遊脚足平22の着地予定位置姿勢(ひいては、次回歩容支持脚座標系の位置姿勢)を、現在値(今回の制御周期における1回前のS020の処理で決定した着地予定位置姿勢)からずらした位置姿勢に変更する。なお、ここで変更する着地予定位置姿勢は、より詳しくは、着地予定位置及び着地予定姿勢のうちのすくなくともいずれか一方である。この場合、該着地予定位置姿勢の変更量は、前記S031の判断処理において、ZMP存在許容領域から逸脱した目標ZMPの、当該逸脱方向やその逸脱量に応じて決定される。該変更量は、基本的には、変更後の着地予定位置姿勢に応じて規定される支持多角形内に目標ZMPが含まれるか、もしくは、含まれやすくなるように決定される。
なお、今回歩容の遊脚足平22の着地予定位置姿勢だけでなく、次回歩容の遊脚足平22の着地予定位置姿勢(ひいては次次回歩容支持脚座標系の位置姿勢)をも変更するようにしてもよい。さらに、今回歩容又は次回歩容の遊脚足平22の着地予定位置姿勢の変更に合わせて、該遊脚足平22の着地予定時刻を変更するようにしてもよい。
このようにして、歩容生成装置100は、S020の処理を改めて実行した後、S022以降の処理を前記した通りの仕方で、再び実行する。すなわち、S031の判断結果が肯定的になるまで、S020〜S030の処理が繰り返される。
図7に戻って、S031の判断結果が肯定的である場合、あるいは、S016の判断結果が否定的である場合には、次にS032において、歩容生成装置100は、今回歩容瞬時値(現在の制御周期での今回歩容の目標足平位置姿勢等の瞬時値)を決定する。このS032では、全モデル操作床反力モーメント分配器118で後述する如く決定される第1モデル操作床反力モーメントが目標ZMPまわりに発生するように今回歩容瞬時値が決定される。
具体的には、図20のフローチャートに示す如く、歩容瞬時値が決定される。以下説明すると、歩容生成装置100は、まず、S1000からS1006まで、図17のS806からS812まで(または図14のS306からS312まで)と同様に処理を実行することによって、今回歩容の現在時刻t(現在の制御周期の時刻)での目標床反力鉛直成分、目標ZMP、目標足平位置姿勢、目標上体姿勢、目標腕姿勢、目標上体鉛直位置の瞬時値を算出する。
これらの各瞬時値の算出の仕方は、歩容パラメータとして、図7のS028で最終的に修正した今回歩容パラメータを使用する点を除いて、図17のS806からS812まで(または図14のS306からS312まで)の処理と同じである。
次いで、S1008に進み、歩容生成装置100は、S1004で算出した現在時刻tの目標足平位置姿勢を基に、前記S030と同様の処理によって、今回歩容の現在時刻tでのZMP存在許容領域を求める。このZMP存在許容領域は、歩容生成装置100から、図3に示した前記フィードバック操作量演算部110(詳細は後述する)に出力される。
なお、詳細は後述するが、フィードバック操作量演算部110では、入力されたZMP存在許容領域等を用いて、前記全モデル操作床反力モーメント及びコンプライアンス制御用目標床反力モーメントが決定される。さらに、決定された全モデル操作床反力モーメントは、前記全モデル操作床反力モーメント分配器118に入力され、該分配器118により第1モデル操作床反力モーメント及び第2モデル操作床反力モーメントが決定される。そして、決定された第1モデル操作床反力モーメントが、歩容生成装置100の制御周期で、歩容生成装置100によりサンプリングされる(該歩容生成装置100に取り込まれる)。
補足すると、本実施形態では、S1008で決定する現在時刻tでのZMP存在許容領域は、S031の判断結果が肯定的となったときに、S030で決定されたZMP存在許容領域のうちの現在時刻tに対応する時刻でのZMP存在許容領域と同じである。従って、例えば現在時刻tが両脚支持期内の時刻である場合に、S1008で決定されるZMP存在許容領域は、S030の処理に関して説明した如く、方形状と異なる外形状の領域に決定されることとなる。但し、S1008で決定するZMP存在許容領域と、S031の判断結果が肯定的となったときに、S030で決定された現在時刻tでのZMP存在許容領域とは完全に一致する必要はない。例えば、それらのZMP存在許容領域の面積が若干、異なっていてもよい。
次いで、S1010に進み、歩容生成装置100は、全モデル操作床反力モーメント分配器118から与えられた第1モデル操作床反力モーメント(最新値)が目標ZMPまわりに発生するように(ロボット1の慣性力と重力との合力が目標ZMPまわりに発生するモーメントの水平成分が第1モデル操作床反力モーメントに釣り合うように)、今回歩容の現在時刻tでの上体水平加速度を決定する。
言い換えると、ロボット1の慣性力と重力との合力が目標ZMPまわりに発生するモーメントが第1モデル操作床反力モーメントの符号を反転したモーメントに一致するように、今回歩容の現在時刻tでの上体水平加速度が決定される。
この場合、図17のS814の処理と同様の仕方で、例えば図6の動力学モデル(3質点モデル)を用いて今回歩容の上体水平加速度が算出される。
具体的には、今回歩容の現在時刻tまでの目標足平位置姿勢の時系列を用いて、現在時刻tでの各脚質点2a,2bの鉛直加速度及び水平加速度が求められると共に、現在時刻tでの目標足平位置姿勢を用いて現在時刻tでの各脚質点2a,2bの鉛直位置及び水平位置が求められる。
また、今回歩容の現在時刻tで上体鉛直位置と、時刻(t−Δt)の上体水平位置と、現在時刻tの目標上体姿勢とから、現在時刻tでの上体質点24bの鉛直位置及び水平位置が決定される。なお、時刻(t−Δt)までの上体水平位置の時系列又は時刻(t−Δt)での歩容状態を基に時刻tでの上体水平位置を補間的に推定し、その推定した上体水平位置を時刻(t−Δt)の上体水平位置の代わりに用いてもよい。
また、今回歩容の現在時刻tでの床反力鉛直成分と、各脚質点2a,2bの鉛直加速度とをそれぞれ、前記式01のFz、d2Zsup/dt2、d2Zswg/dt2に代入してなる式をd2Zb/dt2について解くことによって、現在時刻tでの上体質点24bの鉛直加速度d2Zb/dt2が求められる。
そして、上記の如く求めた上体質点24bの鉛直位置、水平位置、鉛直加速度と、各脚質点2a,2bの鉛直位置、水平位置、鉛直加速度、水平加速度とをそれぞれ、前記式03のZb、Xb、d2Zb/dt2、Zsup、Xsup、d2Xsup/dt2、d2Zsup/dt2、Zswg、Xswg、d2Xswg/dt2、d2Zswg/dt2に代入すると共に、現在時刻tでの目標ZMPの水平位置および鉛直位置を式03のXzmp,Zzmpに代入し、さらに、同式03のMzmp_yをモデル操作床反力モーメントに一致させてなる式を、d2Xb/dt2について解くことにより、現在時刻tでの上体質点水平加速度d2Xb/dt2が算出される。そして、この上体質点水平加速度d2Xb/dt2が現在時刻tでの上体水平加速度として求められる。
尚、より厳密な動力学モデルを用いて、目標ZMPまわりの床反力モーメントの水平成分を第1モデル操作床反力モーメントに一致させるような上体水平加速度を探索的に求めるようにしてもよい。
次いで、S1012に進み、S1010で上記の如く求めた上体水平加速度を2階積分することにより現在時刻tでの上体水平位置を算出する。この算出の仕方は、図14のS316(又は図17のS816)と同じである。これにより、図7のS032の処理が完了する。
次いでS034に進み、スピン力をキャンセルする(ロボット1の腕体以外の運動によって目標ZMP回りに発生する床反力モーメント鉛直成分を“0”もしくはほぼ“0”にする)ための腕体の動作が決定される。具体的には、腕体を振らなかった場合の目標ZMPにおける床反力モーメント鉛直成分軌道(厳密には、腕体を振らずに歩容を生成した場合において、ロボットの重力と慣性力の合力が目標ZMPに作用するモーメント鉛直成分軌道の各瞬時値の符号を反転したもの)が求められる。すなわち、S032の処理によって生成された今回歩容の運動(これには腕振りの運動は含まれていない)の瞬時値に釣り合う目標ZMP回りの床反力モーメント鉛直成分の瞬時値が求められる。そして、この床反力モーメント鉛直成分の瞬時値を、腕振り運動の等価慣性モーメントで割ることにより、スピン力キャンセルに必要な腕振り動作の角加速度が求められる。なお、腕の振りが大き過ぎる場合には、等価慣性モーメントよりも大きな値で床反力モーメント鉛直成分の瞬時値を除算するようにしてもよい。
次に、歩容生成装置100は、この角加速度を2階積分し、これを積分値が過大になるのを防ぐためのローカットフィルタに通して得た角度を腕振り動作角とする。ただし、腕振り動作では、左右の腕体を前後逆方向に振り、両腕体の重心位置を変化させないようにする。なお、スピン力をキャンセルするための腕振り運動を定常歩容でも生成しておき、これにつながるように、今回歩容における腕振り運動を決定するようにしてもよい。
次いでS036に進み、歩容生成装置100は、時刻tに制御周期Δtを加え、S014からの処理を再び実行する。
以上により、今回歩容の瞬時値が時系列的に生成されることとなる。
この場合、本実施形態では、今回歩容の運動の軌道(時系列)は、目標床反力鉛直成分軌道パラメータ(図15のS606で決定されたパラメータ)により規定される目標床反力鉛直成分軌道を満足する(ロボット1の全体重心の鉛直方向の慣性力と該全体重心に作用する重力との総和が目標床反力鉛直成分に釣り合う)と共に、図6に示した歩容生成用の動力学モデル(本実施形態では倒立振子モデル)において、目標ZMPまわりに前記第1モデル操作床反力モーメントが付加的に発生するように決定される。
加えて、今回歩容の運動の軌道は、将来において、周期的な歩容である定常歩容の運動軌道に収束するように(漸近するように)決定される。より具体的には、今回歩容の運動の軌道は、今回歩容の終端における発散成分が、定常歩容の初期の発散成分に一致するように決定される。
次に、説明を後回しにしたフィードバック操作量演算部110、全モデル操作床反力モーメント分配器118、及び摂動モデル演算部120の処理をさらに詳細に説明する。
まず、摂動モデル演算部120の処理を説明する。摂動モデル演算部120は、本実施形態では、ロボット1の上体24の水平位置の摂動運動と目標ZMPまわりの床反力モーメントの摂動との関係を表現する動力学モデル(摂動動力学モデル)を用いて、前記上体水平位置摂動量を算出する処理を実行する。その摂動動力学モデルは、本実施形態では、図21に示す倒立振子モデルにより表現される。
すなわち、図21を参照して、摂動モデル演算部120が用いる摂動動力学モデルでは、目標ZMPを支点として揺動する倒立振子の質点としての上体質点24bの、目標ZMPの直上位置(鉛直方向上方位置)からの水平方向のずれ量ΔXpが、上体24の水平位置の摂動量に相当するものとされる。そして、ΔXpと、倒立振子の支点(目標ZMP)のまわりの床反力モーメントの水平成分の摂動量としての摂動床反力モーメントΔMpとの間の関係が例えば次式60により表現される。
ΔMp=−mb*ΔXp*(g+d2Zb/dt2)
+mb*h*(d2ΔXp/dt2) ……式60
この式60におけるhは、上体質点24bの平均的な高さとしての定数値である。なお、式60のΔMpは、詳しくは、X軸まわり成分とY軸まわり成分とからなるベクトル量である。同様に、ΔXpは、X軸方向成分とY軸方向成分とからなるベクトル量である。
そして、摂動モデル演算部120は、式60のΔXpが、出力すべき前記上体水平位置摂動量に相当し、且つ、前記全モデル操作床反力モーメント分配器118から入力される第2モデル床反力操作モーメントが式60のΔMpに相当するものとして、式60を用いて上体水平位置摂動量を決定する。
具体的には、摂動モデル演算部120は、逐次入力される第2モデル床反力操作モーメントの時系列をΔMpの時系列として用い、式60の動力学的関係を満足するΔXpを逐次算出する。
この場合、ΔXpの算出演算に必要な、式60の右辺の(g+d2Zb/dt2)の瞬時値(又はmb*(g+d2Zb/dt2)の瞬時値)は、前記式01に基づいて算出される。より詳しくは、今回歩容の床反力鉛直成分軌道パラメータ(最新の床反力鉛直成分軌道パラメータ)を基に、床反力鉛直成分の瞬時値(前記式01の左辺のFz)が算出されると共に、今回歩容における現在時刻tまでの両足平22,22の目標足平位置姿勢軌道を基に、前記式01の右辺のmsup*(g+d2Zsup/dt2)の瞬時値とmswg*(g+d2Zswg/dt2)の瞬時値とが算出される。そして、これらの求めた値から、前記式01に基づいて、(g+d2Zb/dt2)又はmb*(g+d2Zb/dt2)の瞬時値が算出される。
そして、摂動モデル演算部120は、算出したΔXpを上体水平位置摂動量として前記上体位置姿勢修正部122に出力する。なお、ΔXpは、図7のS016の判断結果が肯定的となるタイミング(前記した歩容の切替わり目)において、換言すれば、歩容生成装置100による新たな今回歩容の生成開始タイミングで“0”に初期化される。
以上が、摂動モデル演算部120の処理の詳細である。
次に、フィードバック操作量演算部110の処理を説明する。図3を参照して、フィードバック操作量演算部110には、前記したように、実上体姿勢角の実測値と、修正目標上体姿勢角と、摂動モデル演算部120で用いる摂動動力学モデルの状態量(摂動モデル状態量)とが入力される。なお、本実施形態では、フィードバック操作量演算部110に入力される摂動モデル状態量は、摂動モデル演算部120が逐次算出する上体水平位置摂動量ΔXpそのものである。なお、図示は省略しているが、フィードバック操作量演算部110には、歩容生成装置100から、前記S1008の処理によって決定されたZMP存在許容領域も逐次入力される。
そして、フィードバック操作量演算部110は、実上体姿勢角の実測値と修正目標上体姿勢角との偏差である前記上体姿勢角偏差を“0”に収束させる機能を有するフィードバック操作量としての実姿勢補償全床反力モーメントを所定のフィードバック制御則により算出する姿勢安定化制御演算部112と、摂動モデル状態量ΔXpとそれに対する所定の目標値との偏差であるモデル状態量偏差を“0”に収束させる機能を有するフィードバック操作量としてのモデル状態補償全床反力モーメントを所定のフィードバック制御則により算出するモデル安定化制御演算部114と、これらの実姿勢補償全床反力モーメント及びモデル状態補償全床反力モーメントから、前記コンプライアンス制御用目標床反力モーメントと全モデル操作床反力モーメントとを決定する補償全床反力モーメント分配器116とを備える。
上記実姿勢補償全床反力モーメントは、上体姿勢角偏差を“0”に収束させるために、実際のロボット1に対して目標ZMPまわりに付加的に作用させる床反力モーメントの要求値である。また、モデル状態補償全床反力モーメントは、モデル状態量偏差を“0”に収束させるために、前記摂動動力学モデル上でのロボットに対して目標ZMPまわりに付加的に作用させる床反力モーメントの要求値である。
なお、本実施形態では、摂動モデル状態量ΔXpの目標値は“0”である。従って、モデル状態量偏差は、摂動モデル状態量ΔXpに一致する。
補足すると、実姿勢補償全床反力モーメント及びモデル状態補償全床反力モーメントのそれぞれは、より詳しくは、ロール方向(X軸まわり)の成分と、ピッチ方向(Y軸まわり)の成分とからなる。以降の説明では、実姿勢補償全床反力モーメント及びモデル状態補償全床反力モーメントをそれぞれ、参照符号Mdmd、Mmdlにより表す。そして、Mdmdのロール方向(X軸まわり)の成分と、ピッチ方向(Y軸まわり)の成分とをそれぞれ、Mdmdx,Mdmdyと表記し、Mmdlのロール方向(X軸まわり)の成分と、ピッチ方向(Y軸まわり)の成分とをそれぞれ、Mmdlx,Mmdlyと表記する。
上記姿勢安定化制御演算部112の処理は、次のように実行される。すなわち、姿勢安定化制御演算部112は、まず、入力された実上体姿勢角の実測値と修正目標上体姿勢角とから、前記上体姿勢角偏差Δθを算出する。そして、姿勢安定化制御演算部112は、上体姿勢角偏差Δθを、図6に示した倒立振子モデルの上体質点24bの水平位置の、基準位置(上体姿勢角偏差Δθが“0”である場合の目標上体位置姿勢に対応する上体質点24bの水平位置)に対する位置偏差ΔXに変換される。具体的には、上体姿勢角偏差Δθは、次式62によって、上体質点24bの水平位置の摂動量としての位置偏差ΔXに変換される。なお、式62におけるhは、上体質点24bの平均的な高さとしての定数値である。
ΔX=h*Δθ ……式62
なお、ΔXは、X軸方向成分とY軸方向成分とからなり、X軸方向成分は、ΔθのうちのY軸まわり方向の成分、Y軸方向成分は、ΔθのうちのX軸まわり方向の成分に比例する値となる。
さらに、姿勢安定化制御演算部112は、上記の如く算出した位置偏差ΔXの時間的変化率(微分値)である速度偏差ΔVxを算出する。なお、速度偏差ΔVxは、実際のロボット1の上体姿勢角の角速度の実測値(又は上体姿勢角の実測値の時間的変化率)と修正目標上体姿勢角の角速度との偏差に、上記定数値hを乗じることによって求めてもよい。
次いで、姿勢安定化制御演算部112は、例えばフィードバック制御則としてのPD則(比例・微分則)の演算処理によって、ΔXを“0”に収束させるように(ひいては、Δθを“0”に収束させるように)、実姿勢補償全床反力モーメントMdmdを算出する。
すなわち、姿勢安定化制御演算部112は、上記の如く算出した位置偏差ΔXと速度偏差ΔVxとから、次式64によりMdmdを算出する。
Mdmd=Kx*ΔX+Kv*ΔVx ……式64
この式152におけるKx、Kvは、それぞれ比例ゲイン、微分ゲインである。これらのKx、Kvの値は、本実施形態では、あらかじめ設定された所定値である。
この場合、より詳しくは、MdmdのY軸まわりの成分Mdmdyは、ΔX、ΔVxのX軸方向成分に応じて式64により算出される。また、MdmdのX軸まわりの成分Mdmdxは、ΔX、ΔVxのY軸方向成分に応じて式64により算出される。
なお、式64のゲインKx、Kvの値は、ロボット1の運動状態に応じて適宜可変的に設定するようにしてもよい。例えば、歩容生成装置100が図16のS606で決定した今回歩容の床反力鉛直成分軌道パラメータにより規定される現在時刻での上体質点24bの鉛直方向の慣性力に応じて、あるいは、上体質点24bの鉛直方向の慣性力の時系列に応じて、Kx、Kvの一方又は両方の値を可変的に決定するようにしてもよい。このようにすることにより、ロボット1の運動に伴う鉛直方向の慣性力の影響を補償して、上体姿勢角偏差Δθを円滑に“0”に収束させ得るMdmdの値を算出することができる。
以上が、姿勢安定化制御演算部112の処理の詳細である。
なお、Mdmdは、例えば、上体姿勢角偏差Δθと、その時間的変化率である上体姿勢角の角速度偏差とから、PD則によって算出するようにしてもよい。
また、ロボット1の実際の姿勢と目標とする姿勢とのずれの程度を表す指標として、上体姿勢角偏差Δθの代わりに、例えば、ロボット1の全体重心の実際の位置と、目標歩容(詳しくは目標運動)により規定される該全体重心の目標位置との水平方向の位置偏差を使用し、この位置偏差から、PD則等のフィードバック制御則により実姿勢補償全床反力モーメントMdmdを算出するようにしてもよい。
また、ロボット1に作用する床反力以外の外力及びその作用点を、上体24に搭載した適宜の力センサ等により計測し、その外力及び作用点の計測値から、該外力によって目標ZMPまわりで実際のロボット1に作用するモーメントを算出するようにしてもよい。そして、その算出したモーメントに釣り合う(逆向きの)床反力モーメントに“1”以下の正のゲインを乗じてなる床反力モーメントを式64の右辺に加算することよって、補償全床反力モーメントMdmdを算出するようにしてもよい。
また、モデル安定化制御演算部114の処理は、次のように実行される。すなわち、モデル安定化制御演算部114は、まず、入力されたモデル状態量偏差ΔXpの時間的変化率ΔVp(=dΔXp/dt)を算出する。そして、モデル安定化制御演算部114は、姿勢安定化制御演算部112と同様に、例えば、フィードバック制御則としてのPD則の演算処理によって、ΔXpを“0”に収束させるように、モデル状態補償全床反力モーメントMmdlを算出する。
すなわち、モデル安定化制御演算部114は、入力されたモデル状態量偏差ΔXpとその時間的変化率ΔVpとから、次式66によりMmdlを算出する。
Mmdl=Ka*ΔXp+Kb*ΔVp ……式66
この式66におけるKa、Kbは、それぞれ比例ゲイン、微分ゲインである。これらのKa、Kbの値は、本実施形態では、あらかじめ設定された所定値である。
この場合、より詳しくは、MmdlのY軸まわりの成分Mmdlyは、ΔXp、ΔVpのX軸方向を成分に応じて式66により算出される。また、MmdlのX軸まわりの成分Mdmdyは、ΔXp、ΔVpのY軸方向成分に応じて式66により算出される。
なお、前記式64におけるKx,Kvに関して補足的に説明した場合と同様に、式66におけるKa,Kbの値をロボット1の運動状態(例えば上体24の鉛直方向の運動状態)に応じて可変的に設定するようにしてもよい。
以上が、モデル安定化制御演算部114の処理の詳細である。
次に、フィードバック操作量演算部110の補償全床反力モーメント分配器116は、上記の如く算出された実姿勢補償全床反力モーメントMdmdとモデル状態補償全床反力モーメントMmdlとから、以下に説明する処理によって、コンプライアンス制御用目標床反力モーメントと全モデル操作床反力モーメントとを決定する。
すなわち、補償全床反力モーメント分配器116は、コンプライアンス制御用目標床反力モーメントと全モデル操作床反力モーメントとを図22のブロック図で示す処理によって決定する。
以下説明すると、補償全床反力モーメント分配器116は、まず、処理部116aにおいて、実姿勢補償全床反力モーメントMdmdとモデル状態補償全床反力モーメントMmdlとを加え合わせることによってそれらの合成モーメント(Mdmd+Mmdl)を算出する。この合成モーメント(Mdmd+Mmdl)は、上体姿勢角偏差Δθとモデル状態量偏差ΔXpとを“0”に近づけるように、目標ZMP周りの床反力モーメントの水平成分の目標値を操作するフィードバック操作量としての意味を持つ。以降、この合成モーメント(Mdmd+Mmdl)を、補償合成モーメントという。
次いで、補償全床反力モーメント分配器116は、この補償合成モーメントを、処理部116bにおいてZMP修正量に変換する。ここで、ある時刻において、目標ZMP周りに、“0”でない補償合成モーメント(Mdmd+Mmdl)の床反力モーメントを発生させるということは、該補償合成モーメントとその時刻における全床反力鉛直成分の瞬時値とに応じて規定される変位量(変位ベクトル)だけ、実際のZMPの位置、すなわち、その点周りの床反力モーメントの水平成分が“0”となるような全床反力の実際の作用点としての全床反力中心点の位置(水平面上の位置)を目標ZMPの位置からずらすことと等価である。
上記変位量(変位ベクトル)は、この変位ベクトルと、全床反力鉛直成分の瞬時値の大きさを有する鉛直方向のベクトルとの外積が補償合成モーメント(ベクトル)に一致するような変位ベクトルである。換言すれば、上記変位量(変位ベクトル)は、その大きさが、補償合成モーメントの大きさを全床反力鉛直成分の瞬時値の大きさで除算してなる大きさとなり、且つ、補償合成モーメント(ベクトル)の方向と鉛直方向とに直交する向きを有する変位ベクトルである。
このような上記変位量が、処理部116bで求めるZMP修正量である。このZMP修正量を求めるために、処理部116bには、歩容生成装置100が図20のS1000の処理で算出した目標床反力鉛直成分の瞬時値(最新値)が入力される。そして、処理部116bでは、この目標床反力鉛直成分の瞬時値を用いて、上記の関係に従って、補償合成モーメントをZMP修正量に変換する。すなわち、該ZMP修正量は、それより表される変位ベクトルと、目標床反力鉛直成分の瞬時値の大きさを有する鉛直方向ベクトルとの外積が、補償合成モーメント(ベクトル)に一致するような変位ベクトルとして算出される。
次いで、補償全床反力モーメント分配器116は、上記の如く算出したZMP修正量を、歩容生成装置100において図20のS1002の処理で算出された目標ZMPの瞬時値(最新値)の位置ベクトルに加え合わせる処理を処理部116cで実行することによって、目標ZMP周りに補償合成モーメントの床反力モーメントをそのまま発生させたと仮定した場合の実際の全床反力中心点の推定位置としての補償ZMPを算出する。
ここで、実際のロボット1における実際のロボット1に作用させる全床反力の作用点としてのZMP(全床反力中心点)は、支持多角形内の領域から逸脱することはできないので、目標ZMP周りに発生可能な床反力モーメントは、それに応じて目標ZMPからずれることとなる実際のZMPが支持多角形内に存在し得る範囲内に制限される。
そこで、補償全床反力モーメント分配器116は、次に、上記補償ZMPを、歩容生成装置100が図20のS1008の処理で決定した最新のZMP存在許容領域内の点に制限する処理を処理部116dで実行する。
具体的には、処理部116dは、処理部116cで求められた補償ZMP(以降、制限前補償ZMPという)が、上記ZMP存在許容領域内に存在するか否かを判断し、この判断結果が肯定的である場合には、該制限前補償ZMPをそのまま制限後補償ZMPとして決定する。例えば、図19に示した如くZMP存在許容領域が設定されている状況において、図23(a)に示す如く、制限前補償ZMPが、ZMP存在許容領域内の点P1である場合には、その点P1がそのまま、制限後補償ZMPとして決定される。
また、処理部116dは、処理部116cで求められた制限前補償ZMPが、上記ZMP存在許容領域から逸脱している場合には、制限後補償ZMPを、強制的に上記ZMP存在許容領域内の点に制限する。この場合、該制限後補償ZMPは、目標ZMP(これは前記補償合成モーメントが“0”であると仮定した場合における全床反力中心点の目標位置を意味する)と前記制限前補償ZMPとを結ぶ線分と、ZMP存在許容領域の外形の境界線とが交わる点に決定される。例えば、図19に示した如くZMP存在許容領域が設定されている状況において、図23(b)に示す如く、制限前補償ZMPが、ZMP存在許容領域の外側の点P2である場合には、目標ZMPと点P2とを結ぶ線分と、ZMP存在許容領域の外形の境界線とが交わる点P3が制限後補償ZMPとして決定される。これにより、制限後補償ZMPは、ZMP存在許容領域から逸脱しない点に制限される。
次いで、補償全床反力モーメント分配器116は、上記の如く決定した制限後補償ZMPと、目標ZMPとの位置の差分のベクトル(制限後補償ZMPの位置ベクトルから目標ZMPの位置ベクトルを差し引いたベクトル)を処理部116eで算出する。この処理部116eで算出されるベクトルは、実際のロボット1で実現しようとするZMP修正量の目標を意味するものであり、以降、制限後ZMP修正目標という。
次いで、補償全床反力モーメント分配器116は、この制限後ZMP修正目標を、目標ZMP周りに付加すべき床反力モーメントに変換する処理を処理部116fで実行し、この変換によって算出された床反力モーメントをコンプライアンス制御用目標床反力モーメントとして決定する。この場合、処理部116fの処理は、処理部116bにおける変換処理の逆変換の処理であり、制限後ZMP修正目標と、目標床反力鉛直成分の瞬時値(歩容生成装置100が図20のS1000の処理で算出した目標床反力鉛直成分の瞬時値(最新値)とからコンプライアンス制御用目標床反力モーメントが決定される。より詳しくは、制限後ZMP修正目標により表される変位ベクトルと、目標床反力鉛直成分の瞬時値の大きさの鉛直方向ベクトルとの外積を算出することによって、コンプライアンス制御用目標床反力モーメント(ベクトル)が決定される。
次いで、補償全床反力モーメント分配器116は、処理部116aで算出された補償合成モーメントからコンプアライアンス制御用目標床反力モーメントを差し引く処理を処理部116gで実行することによって、補償合成モーメントのうちの、コンプアライアンス制御用目標床反力モーメントが負担しきれない余剰分のモーメントを算出する。
なお、この場合、例えば、前記制限前補償ZMPと制限後補償ZMPとの差を、処理部116hと同様の処理によりモーメントに変換することによって、上記余剰分のモーメントを算出するようにしてもよい。
さらに、補償全床反力モーメント分配器116は、この余剰分のモーメントの符号を反転させたものを、前記モデル状態補償全床反力モーメントMmdlに加え合わせる(合成する)処理を処理部116hで実行することによって、全モデル操作床反力モーメントを算出する。
以上が補償全床反力モーメント分配器116の処理の詳細である。
補足すると、補償全床反力モーメント分配器116の処理で使用する目標ZMP、床反力鉛直成分、ZMP存在許容領域は、歩容生成装置100が各制御処理周期において最終的に決定した今回歩容パラメータ(図7のS032の処理で使用する今回歩容パラメータ)を基に、補償全床反力モーメント分配器116において、逐次(該分配器116の制御周期で)決定するようにしてもよい。
以上の補償全床反力モーメント分配器116の演算処理により、前記補償ZMP(制限前補償ZMP)が、ZMP存在許容領域内に収まっている場合には、前記補償合成モーメント(Mdmd+Mmdl)がそのままコンプライアンス制御用目標床反力モーメントとして決定されると共に、Mmdlが全モデル操作床反力モーメントとして決定される。
また、前記補償ZMP(制限前補償ZMP)が、ZMP存在許容領域から逸脱している場合には、コンプライアンス制御用目標床反力モーメントは、このモーメントを目標ZMP周りに発生させることによって目標ZMPから変位する実際のZMP(実際の全床反力中心点)の位置が、目標ZMPと前記制限前補償ZMPとを結ぶ線分と、ZMP存在許容領域の境界線とが交わる点としての制限後補償ZMPの位置に一致するように、コンプライアンス制御用目標床反力モーメントが決定される。
この場合、制限後補償ZMPは、目標ZMPと前記制限前補償ZMPとを結ぶ線分上の点であるので、目標ZMPから制限後補償ZMPへの変位ベクトルの向きは、目標ZMPから制限前補償ZMPへの変位ベクトルの向きに一致する。従って、コンプライアンス制御用目標床反力モーメントは、前記補償合成モーメントと同じ向きのベクトルとなるように(換言すれば、補償合成モーメントに比例するベクトルとなるように)決定される。
そして、補償合成モーメント(Mdmd+Mmdl)のうちの、コンプアライアンス制御用目標床反力モーメントが負担しきれない余剰分のモーメントの符号を反転させたモーメントをMmdlに付加してなるモーメント(換言すれば、モデル状態補償全床反力モーメントから上記余剰分のモーメントを差し引いたモーメント)が、全モデル操作床反力モーメントとして決定される。例えば、上記余剰分のモーメントがMmdlと、Mdmdのうちの一部分のモーメントk*Mdmd(0<k<1)を合成したモーメント(=Mmdl+k*Mdmd)となる状況では、(−k*Mdmd)が全モデル操作床反力モーメントとして決定される。
従って、いずれの場合でも、次式70のように、コンプライアンス制御用床反力モーメントと全モデル操作床反力モーメントとの差が、モデル状態補償全床反力モーメントMmdlに依存することなく、実姿勢補償全床反力モーメントMdmdに一致するように、該コンプライアンス制御用床反力モーメントと全モデル操作床反力モーメントとが決定される。
コンプライアンス制御用目標床反力モーメント
−モデル操作用床反力モーメント=Mdmd ……式70
換言すれば、コンプライアンス制御用床反力モーメントと全モデル操作床反力モーメントの差が、上体姿勢角偏差Δθを“0”に収束させる機能を有するように、コンプライアンス制御用目標床反力モーメントと全モデル操作床反力モーメントとが決定される。
そして、この場合、ZMP存在許容領域に対応して実際のロボット1で目標ZMP周りに発生可能な床反力モーメントが、Mdmdに対して余裕を有する場合に、コンプライアンス制御用目標床反力モーメントに起因して目標ZMPから変位するZMPが、ZMP存在許容領域内に収まる範囲内において、Mmdlの全部又は一部がコンプライアンス制御用目標床反力モーメントと全モデル操作床反力モーメントとに、それぞれの組成成分として、付加的に包含されることとなる。
なお、前記補償ZMP(制限前補償ZMP)が、ZMP存在許容領域から逸脱する場合に決定されるコンプライアンス制御用目標床反力モーメントと全モデル操作床反力モーメントとは、補償合成モーメント(Mdmd+Mmdl)のうちのMdmdに対する依存性が高まるように決定されるので、コンプライアンス制御用目標床反力モーメント及び全モデル操作床反力モーメントのそれぞれの向きは、実姿勢補償全床反力モーメントの向きと一致又はほぼ一致する向きとなる。
次に、前記全モデル操作床反力モーメント分配器118の処理を説明する。
まず、全モデル操作床反力モーメント分配器118の処理の技術的な意義を説明しておく。歩容生成装置100における目標歩容の生成処理においては、今回歩容の目標運動の軌道は、将来において、定常歩容の運動軌道に収束するように(漸近するように)決定される。そして、このような目標運動を生成するために、今回歩容のZMP軌道パラメータが適宜修正される。さらに、修正後のZMP軌道パラメータにより規定される目標ZMPの瞬時値が、ZMP存在許容領域から逸脱するような場合には、今回歩容の遊脚足平22の着地予定位置姿勢や次回歩容の遊脚足平22の着地予定位置姿勢が適宜修正される。
歩容生成装置100では、このような処理を、各制御周期で実行する必要があるため、該歩容生成装置100の制御周期(演算処理周期)Δtは、ある程度余裕を持たせた長めの時間に設定せざるを得ない。
一方、例えばロボット1を比較的高速の移動速度で移動させるような場合には、それに伴い、ロボット1の上体姿勢角偏差Δθの高速な変動を生じやすくなる。ひいては、上体姿勢角偏差Δθには、歩容生成装置100の制御周期Δtよりも短い周期の高周波成分が含まれ易くなる。そして、上体姿勢角偏差Δθにこのような高周波成分が含まれるような場合には、歩容生成装置100による歩容生成処理(本実施形態では図8のS032の処理)に当該高周波成分を反映させることは困難である。ひいては、該高周波成分を含む上体姿勢角偏差Δθを円滑に“0”に収束させ得るような目標歩容の瞬時値を歩容生成装置100で逐次生成することが困難となる。
そこで、本実施形態では、図3のブロック図に示した制御ユニット26の機能のうち、摂動モデル演算部120等、歩容生成装置100以外の機能部分の処理を歩容生成装置100よりも短い制御周期(演算処理周期)で実行する。そして、上体姿勢角偏差Δθの、比較的緩やかな変動分(低周波成分)を“0”に収束させ得る目標歩容の運動の瞬時値の時系列を歩容生成装置100の歩容生成処理により決定すると共に、Δθの比較的素早い変動分(高周波成分)を“0”に収束させるための運動修正分(歩容生成装置100が生成する目標運動の修正量)として、前記上体水平位置摂動量ΔXpを摂動動力学モデルを用いて決定する。
上記のように歩容生成装置100の歩容生成処理と、上体水平位置摂動量ΔXpを決定する処理とを行なうようにするために、本実施形態では、全モデル操作床反力モーメント分配器118は、フィードバック操作量演算部110の補償全床反力モーメント分配器116から逐次入力される全モデル操作床反力モーメントを低周波成分と高周波成分とに分離する。そして、フィードバック操作量演算部110は、これらの低周波成分と高周波成分とのうち、低周波成分を歩容生成装置100の動力学モデル(図6に示した動力学モデル)にフィードバックする第1モデル操作床反力モーメントとして出力し、高周波成分を前記摂動モデル演算部120の摂動動力学モデル(図21に示した摂動動力学モデルにフィードバックする第2モデル操作床反力モーメントとして出力する。
全モデル操作床反力モーメント分配器118の上記の処理は、より具体的には、図24のブロック図に示す処理によって実現される。
すなわち、全モデル操作床反力モーメント分配器118は、全モデル操作床反力モーメントをローパスフィルタ(ハイカットフィルタ)118aに入力し、このローパスフィルタ118aの出力(すなわち、全モデル操作床反力モーメントの低周波成分)を、第1モデル操作床反力モーメントして決定する。なお、ローパスフィルタ118aの周波数特性は、歩容生成装置100の制御周期Δtよりも長い周期の低周波成分を通過させるように設定されている。
さらに、全モデル操作床反力モーメント分配器118は、演算部118bにおいて、全モデル操作床反力モーメントからローパスフィルタ118aの出力を差し引き、この演算部119bの演算結果の値(すなわち、全モデル操作床反力モーメントから低周波成分を除去した高周波成分)を第2モデル操作床反力モーメントとして出力する。
以上が、全モデル操作床反力モーメント分配器118の処理の詳細である。
以上のように、全モデル操作床反力モーメント分配器118の処理を実行することにより、第1モデル操作床反力モーメントは、全モデル操作床反力モーメントの低周波成分及び高周波成分のうちの高周波成分よりも低周波成分の変化に対してより高感度に変化するフィードバック操作量として決定される。また、第2モデル操作床反力モーメントは、全モデル操作床反力モーメントの低周波成分及び高周波成分のうちの低周波成分よりも高周波成分の変化に対してより高感度に変化するフィードバック操作量として決定される。
補足すると、全モデル操作床反力モーメントを、ハイパスフィルタ(ローカットフィルタ)に入力し、このハイパスフィルタの出力を第2モデル操作床反力モーメントして得るようにしてもよい。そして、この場合、ローパスフィルタ118aを省略し、該ハイパスフィルタの出力を全モデル操作床反力モーメントから差し引いたもの(すなわち、全モデル操作床反力モーメントから高周波成分を除去した低周波成分)を第1モデル操作床反力モーメントとして得るようにしてもよい。
また、第1モデル操作床反力モーメントと第2モデル操作床反力モーメントとは、それぞれ、全モデル操作床反力モーメントの高周波成分の一部、低周波成分の一部を含んでいてもよい。すなわち、第1モデル操作床反力モーメントは、第2モデル操作床反力モーメントよりも少ない割合いで、全モデル操作床反力モーメントの高周波成分の一部を含んでいてもよい。同様に、第2モデル操作床反力モーメントは、第1モデル操作床反力モーメントよりも少ない割合いで、全モデル操作床反力モーメントの低周波成分の一部を含んでいてもよい。例えば、全モデル操作床反力モーメントを低周波成分と高周波成分とに分離した後、それらの低周波成分と高周波成分とを、それぞれに掛かる重み係数を互いに異ならせて線形結合する(換言すれば、低周波成分と高周波成分との重み付き平均を算出する)ことによって、第1モデル操作床反力モーメント又は第2モデル操作床反力モーメントを決定するようにしてもよい。
以上説明した実施形態によれば、前記上体姿勢角偏差Δθを“0”に近づけるように機能するフィードバック操作量成分として姿勢安定化制御演算部112により算出された実姿勢補償全床反力モーメントMdmdと、前記モデル状態量偏差ΔXpを“0”に近づけるように機能するフィードバック操作量成分として前記モデル安定化制御部114により算出されたモデル状態補償全床反力モーメントMmdlとが、補償全床反力モーメント分配器116の処理部116aにより合成される。これにより、上記ΔθとΔXpとを“0”に近づける機能を有するフィードバック操作量として、前記補償合成モーメント(Mdmd+Mmdl)が算出される。
そして、補償全床反力モーメント分配器116において、この補償合成モーメントをそのまま実際のロボット1において目標ZMP周りに発生させると仮定した場合に要求される実際のZMP(全床反力中心点)の位置としての前記制限前補償ZMPが、支持多角形内のZMP存在許容領域内に収まるか否かが判断され、この判断結果が肯定的となる場合には、補償合成モーメントがそのままコンプライアンス制御用目標床反力モーメントとして決定される。
また、この場合には、モデル状態量補償全床反力モーメントMmdlがそのまま全モデル操作床反力モーメトとして決定される。
これにより、実際のロボット1における目標ZMP周りの床反力モーメントが、上体姿勢角偏差Δθを“0”に近づけることができるように操作されると共に、実際のロボット1における目標ZMP周りの床反力モーメントと、ロボット1の目標運動を生成するための動力学モデル(本実施形態では図6及び図21に示した動力学モデル)上でのロボット1に作用させる目標ZMP周りの床反力モーメントとが、協働してモデル状態量偏差ΔXpを“0”に近づけることができるように操作されることとなる。
また、補償合成モーメントをそのまま実際のロボット1において目標ZMP周りに発生させると仮定した場合に要求される実際のZMP(全床反力中心点)の位置としての前記制限前補償ZMPが、支持多角形内のZMP存在許容領域内から逸脱する場合には、実際のロボット1において、補償合成モーメント(Mdmd+Mmdl)をそのまま目標ZMP周りに発生させることはできない(もしくは好ましくない)ので、実際のロボット1におけるZMP(全床反力中心点)をZMP存在許容領域内に収めうるように、コンプライアンス制御用目標床反力モーメントが補償合成モーメントに対して制限されることとなる。すなわち、コンプライアンス制御用目標床反力モーメントは、補償合成モーメントの一部分を負担することとなる。
また、このとき、コンプライアンス制御用目標床反力モーメントは、実際のロボット1におけるZMP(全床反力中心点)をZMP存在許容領域内に収め得るように制限されることに加えて、補償合成モーメントと同じ向きのベクトルになるように決定される。
そして、補償合成モーメントのうちの、コンプアライアンス制御用目標床反力モーメントが負担しきれない余剰分のモーメント(=補償合成モーメント−コンプアライアンス制御用目標床反力モーメント)の符号を反転させたモーメントと、モデル状態補償全床反力モーメントとを合成してなるモーメント(換言すれば、モデル状態補償全床反力モーメントから上記余剰分のモーメントを差し引いたモーメント)が、動力学モデル上でのロボット1に作用させる目標ZMP周りの床反力モーメントを操作する全モデル操作床反力モーメントとして決定される。
さらに、この全モデル操作床反力モーメントの低周波成分と高周波成分とがそれぞれ歩容生成装置100における動力学モデル、摂動モデル演算部120における動力学モデルのフィードバックされ、それぞれの動力学モデル上でのロボット1に作用させる床反力モーメントが操作される。
これにより、実際のロボット1の床反力モーメントを操作するためのコンプアライアンス制御用目標床反力モーメントと、動力学モデル上でのロボット1の床反力モーメントを操作するための全モデル操作床反力モーメントとが協働して、上体姿勢角偏差Δθを“0”に近づけるように機能することとなる。
この場合、前記制限前補償ZMPが、支持多角形内のZMP存在許容領域内から逸脱する場合に上記の如く決定されるコンプライアンス制御用目標床反力モーメントと、全モデル操作床反力モーメントとは、基本的には、その方向が前記実姿勢補償全床反力モーメントの方向と一致もしくはほぼ一致するモーメントとなる。このため、コンプライアンス制御用目標床反力モーメントと、全モデル操作床反力モーメントとに、前記上体姿勢角偏差Δθを“0”に近づけることに寄与しない成分が含まれるのが極力防止されることとなる。
このため、ロボット1の上体24が、ヨー軸方向で見たときに渦を巻くようなふら付きを生じたりすることなく、上体姿勢角偏差Δθを“0”に近づけるようにして、該ロボット1の姿勢の安定性を高めることができる。
また、本実施形態では、コンプライアンス制御用目標床反力モーメントを補償合成モーメントに対して制限するZMP存在許容領域が、前記した如く設定されるので、以下に説明するような効果を奏することができる。
すなわち、支持多角形内に設定するZMP存在許容領域の面積が、該支持多角形に対して小さ過ぎると、コンプライアンス制御用目標床反力モーメントが、実際のロボット1で目標ZMP周りに発生可能な床反力モーメントに対して過剰な制限を受けることとなってしまう。
一方、ロボット1の歩行動作における支持多角形は、特に両脚支持期においては、図23(a),(b)に例示した如く、一般には、該支持多角形の形状が方形状と顕著に異なる形状となる。そして、このような支持多角形に対してZMP存在許容領域を単純な方形状に設定すると、該ZMP存在許容領域の面積が支持多角形に対して小さくなり過ぎるという状況が発生し易い。
このため、本実施形態では、両脚支持期におけるZMP存在許容領域を、支持多角形と概ね相似する外形状として、その面積が支持多角形に対して小さくなり過ぎないように該ZMP存在許容領域を設定するようにしている。換言すれば、両脚支持期におけるZMP存在許容領域は、その面積が支持多角形の面積を概ね近似し得るような領域に設定される。
これにより、コンプライアンス制御用目標床反力モーメントが補償合成モーメント(Mmdl+Mdmd)に対して制限される状況の発生頻度が極力少なくなるようにすることができる。ひいては、上体姿勢角偏差Δθを“0”に近づけることを、可能な限り、実際のロボット1の目標ZMP周りに付加的に発生させる床反力モーメントによって実現し得るように、該付加的な床反力モーメントの目標としてのコンプライアンス制御用目標床反力モーメントを決定できることとなる。
また、補償合成モーメントをそのまま実際のロボット1において目標ZMP周りに発生させると仮定した場合に必要となるZMP(全床反力中心点)の位置としての前記制限前補償ZMPが、支持多角形内のZMP存在許容領域内から逸脱するような状況では、前記目標ZMPと制限前補償ZMPとを結ぶ線分と、ZMP存在許容領域の境界線との交点の位置に、制限後補償ZMPが決定され、この制限後補償ZMPに対応する目標ZMP周りの床反力モーメントがコンプライアンス制御用目標床反力モーメントとして決定される。
このため、制限後補償ZMPが、ZMP存在許容領域から逸脱せず、且つ、コンプライアンス制御用目標床反力モーメントの向きを補償合成モーメントの向きに一致させるという制約条件内で、コンプライアンス制御用目標床反力モーメントの大きさが、目標ZMP周りに付加すべき床反力モーメントの本来の目標としての補償合成モーメントに対して小さくなるのを最小限に留めることができる。ひいては、上体姿勢角偏差Δθを“0”に近づける機能を、可能な限り、コンプライアンス制御用目標床反力モーメントに持たせることができる。
同時に、上記の制約条件内で、全モデル操作床反力モーメントの大きさを極力小さくできるため、前記修正目標上体位置姿勢が、両脚体2,2の目標足平位置姿勢軌道に対して好適な姿勢(動力学モデル上での目標ZMPを満足する歩容における姿勢)からずれるのを極力抑制することができる。
また、本実施形態では、全モデル操作床反力モーメントは、低周波成分と高周波成分とに分離される。そして、低周波成分が第1モデル操作床反力モーメントとして、歩容生成装置100の歩容生成用の動力学モデルにフィードバックされる一方、高周波成分が第2モデル操作床反力モーメントとして、摂動モデル演算部120が上体位置姿勢の修正量(上体水平位置摂動量)を生成するために用いる摂動動力学モデルにフィードバックされる。
この場合、該歩容生成装置100にフィードバックされる第1モデル操作床反力モーメントが、低周波域のものであるため、歩容生成装置100の制御周期を比較的長めの周期に設定しても、該第1モデル操作床反力モーメントを適切に歩容生成に反映させて目標歩容を生成できる。すなわち、比較的緩やかな変化を呈する上体姿勢角偏差Δθに対して、該上体姿勢角偏差Δθを円滑に“0”に近づけ得る目標歩容の運動を歩容生成装置100により生成できる。
また、歩容生成装置100の制御周期を長めの周期に設定できることから、定常歩容パラメータを探索的に決定する等、比較的演算負荷の大きい処理を1制御周期内に実行できる。このため、ロボット1の運動の長期的な安定性(継続性)を高い信頼性で確保し得る目標運動を歩容生成装置100により決定できる。
なお、本実施形態では、歩容生成装置100での歩容生成用の動力学モデルは、比較的単純な動力学モデル(倒立振子モデル)を使用したが、歩容生成装置100の制御周期を長めの周期に設定できることから、より高い動力学的精度を確保し得る、より複雑な動力学モデル(非線形性の高い動力学モデル)を使用することもできる。
一方、摂動モデル演算部120にフィードバックされる第2モデル操作床反力モーメントは、高周波域のものであるものの、該摂動モデル演算部120は、歩容生成装置100が出力する目標歩容の運動(基本骨格となる目標運動)に付加する部分的な修正分(本実施形態では、上体水平位置摂動量)だけを算出し得るものであればよい。このため、摂動モデル演算部120の動力学演算では、線形性の高い単純な摂動動力学モデルを使用することができる。ひいては、摂動モデル演算部120や、これに対する入力を生成する機能部分(全モデル操作床反力モーメント分配器118等)の制御周期(演算処理周期)を比較的短い周期に設定しても、その制御周期内で支障なく、摂動モデル演算部120の処理を実行できる。
従って、摂動モデル演算部120にフィードバックされる第2モデル操作床反力モーメントは、高周波域のものであっても、該第2モデル操作床反力モーメントを適切に摂動モデル演算部120の摂動動力学モデルに反映させて、目標歩容の運動の修正分たる上体水平位置摂動量を生成できる。すなわち、比較的素早い変化を呈する上体姿勢角偏差Δθに対して、該上体姿勢角偏差Δθを円滑に“0”に近づけ得る目標歩容の運動の修正量(上体水平位置摂動量を)を摂動モデル演算部120により生成できる。
そして、本実施形態では、上記の如く歩容生成装置100が生成する目標歩容の運動と、摂動モデル演算部120が生成する上体水平位置摂動量により修正することによって、前記修正目標運動が決定され、基本的には、この修正目標運動に実ロボット1の運動が追従するように実ロボット1の動作が制御される。
この結果、上体姿勢角偏差Δθを“0”に近づける機能を有する全モデル操作床反力モーメントの周波数成分に依存することなく、該上体姿勢角偏差Δθを円滑に“0”に近づけることができるように修正目標運動を逐次決定しつつ、実ロボット1の動作を制御できる。
ここで、以上説明した本実施形態と、本発明との対応関係について補足しておく。
本実施形態では、前記フィードバック操作量演算部110によって、本発明における実ロボット外力操作量決定手段、全床反力中心点要求位置算出手段、制御対象外力要素目標値決定手段、及びモデル外力基本操作量決定手段が実現される。
より詳しく言えば、フィードバック操作量演算部110のうちの、姿勢安定化制御演算部112及びモデル安定化制御演算部114の処理と、補償全床反力モーメント分配器116の処理部116aの処理とによって、本発明における実ロボット外力操作量決定手段が実現される。この場合、本実施形態では、実際のロボット1における目標ZMP周りの床反力モーメントが本発明における制御対象外力要素に相当するものとして用いられ、前記補償合成モーメント(Mdmd+Mmdl)が、本発明における実ロボット外力操作量に相当する。また、前記上体姿勢角偏差Δθ(又はこれを前記式62により変換してなる位置偏差ΔX)が本発明における姿勢状態量偏差に相当し、前記実姿勢補償全床反力モーメントMdmdが、このΔθに応じて決定されるフィードバック操作量成分に相当する。また、前記モデル安定化制御演算部114に入力されるモデル状態量偏差ΔXpが本発明におけるモデル状態量偏差に相当し、前記モデル状態補償全床反力モーメントMmdlが、このΔXpに応じて決定されるフィードバック操作量成分に相当する。そして、実ロボット外力操作量としての前記補償合成モーメントは、MdmdとMmdlとを合成することによって、上記Δθ、ΔXpを“0”に近づけるように決定される。
また、補償全床反力モーメント分配器116の処理部116b,116cの処理によって、本発明における全床反力中心点要求位置算出手段が実現される。この場合、制限前補償ZMPが本発明における全床反力中心点要求位置に相当する。
また、補償全床反力モーメント分配器116の処理部116d,116e,116fの処理によって、本発明における制御対象外力要素目標値決定手段が実現される。この場合、処理部116dに与えられるZMP存在許容領域(前記歩容生成装置100が図7のS030で決定したZMP存在許容領域)が、本発明における全床反力中心点許容領域に相当する。また、処理部116fにより求められる前記コンプライアンス制御用目標床反力モーメントが、本発明における制御対象外力要素の目標値に相当する。また、目標ZMPが、本発明における全床反力中心点基準位置に相当する。
なお、より正確に言えば、前記処理部116fにより決定されたコンプライアンス制御用目標床反力モーメントの値を、該コンプライアンス制御用目標床反力モーメントが“0”であると仮定した場合(補償合成モーメントが“0”であると仮定した場合)に目標ZMP周りに発生すべき床反力モーメントの水平成分としての基準目標値に加え合わせてなる床反力モーメントが、本発明における制御対象外力要素の目標値に相当するものである。但し、本実施形態では、上記基準目標値は“0”であるので、コンプライアンス制御用目標床反力モーメントがそのまま制御対象外力要素の目標値に相当するものとなる。
また、補償全床反力モーメント分配器116の処理部116g,116hの処理によって、本発明におけるモデル外力基本操作量決定手段が実現される。この場合、処理部116hによって算出される全モデル操作床反力モーメントが本発明におけるモデル外力基本操作量に相当する。また、処理部116gの算出値が、全床反力中心点要求位置としての制限前補償ZMPと、ZMP存在許容領域による制限後補償ZMPとの差に応じて変化させるように決定されるフィードバック操作量成分に相当する。
また、歩容生成装置100の処理(図7のフローチャートに示す処理)によって、本発明における第1運動決定手段が実現される。この場合、歩容生成装置100が逐次出力する目標歩容の運動(目標足平位置姿勢、目標上体位置姿勢、及び目標腕姿勢)、すなわち、図7のS032で決定する目標歩容の運動が、本発明における第1運動に相当する。また、図6に示した動力学モデル(本実施形態では倒立振子モデル)が、本発明における第1動力学モデルに相当する。また、図20のS1010の処理で使用する第1モデル操作床反力モーメントが本発明における第1モデル外力操作量に相当する。そして、この第1モデル外力操作量に応じて、図6に示した動力学モデル上でのロボットに対して目標ZMPまわりに発生させる床反力モーメントが該動力学モデル上でのロボットに作用させるべきモデル外力に相当する。このモデル外力は、本実施形態では、第1モデル操作床反力モーメントに一致するものとされる。
また、摂動モデル演算部120の処理によって、本発明における第2運動決定手段が実現される。この場合、図21に示した摂動動力学モデル(本実施形態では倒立振子モデル)が本発明における第2動力学モデルに相当する。また、摂動モデル演算部120が逐次出力する上体水平位置摂動量が、本発明における第2運動に相当する。また、前記第2モデル操作床反力モーメントが、本発明における第2モデル外力操作量に相当する。そして、この第2モデル外力操作量に応じて、図21に示した動力学モデル上でのロボットに対して目標ZMPまわりに発生させる床反力モーメントが該動力学モデル上でのロボットに作用させるべきモデル外力に相当する。このモデル外力は、本実施形態では、第2モデル操作床反力モーメントに一致するものとされる。
また、前記目標上体位置姿勢修正部122が、本発明における目標運動決定手段に相当し、歩容生成装置100が出力する目標歩容の運動のうち、目標上体位置姿勢を修正目標上体位置姿勢に置き換えた運動である前記修正目標運動(すなわち、目標足平位置姿勢、修正目標上体位置姿勢、目標腕姿勢の組)が本発明における目標運動に相当する。
また、歩容生成装置100の処理のうち、図7のS030の処理によって、本発明における全床反力中心点許容領域決定手段が実現される。
また、前記全モデル操作床反力モーメント分配器118の処理によって、本発明におけるモデル外力操作量分配手段が実現される。
[第2実施形態]
次に、本発明の第2実施形態を図25を参照して説明する。なお、本実施形態は、制御ユニット26が実行する処理の一部のみが、第1実施形態と相違するものである。このため、本実施形態の説明では、第1実施形態と同等の構成部分又は機能部分については、第1実施形態と同一の参照符号を用い、詳細な説明を省略する。
前記第1実施形態で説明した歩容生成装置100は、前記全モデル操作床反力モーメント分配器118から出力される第1モデル操作床反力モーメントの時系列のうち、歩容生成装置100の制御周期(演算処理周期)Δtでサンプリングした瞬時値を使用して、今回歩容の瞬時値を決定する処理(図8のS032の処理)を実行することとなる。このため、歩容生成装置100の連続する2つの制御周期の間の期間内での第1モデル操作床反力モーメントの変化分は、歩容生成装置100が今回歩容の瞬時値を決定する処理には反映されないこととなる。
そこで、本実施形態では、歩容生成装置100の連続する2つの制御周期の間の期間内での第1モデル操作床反力モーメントの変化分を、摂動モデル演算部120の摂動動力学モデルに反映させる。
具体的には、本実施形態では、制御ユニット26は、第1実施形態で説明した全モデル操作床反力モーメント分配器118の代わりに、図25のブロックで示す処理を実行する全モデル操作床反力モーメント分配器119を備える。そして、この全モデル操作床反力モーメント分配器119には、前記フィードバック操作量演算部110から全モデル操作床反力モーメントが入力されることに加えて、歩容生成装置100が図7のS032の処理で今回歩容の瞬時値を決定するために既に使用した第1モデル操作床反力モーメントの時系列のうちの最新値(以下、反映済第1モデル操作床反力モーメント最新値という)が歩容生成装置100から入力される。
より詳しくは、歩容生成装置100は、各制御周期において、出力する今回歩容の瞬時値を更新するまでは、現時点で出力している今回歩容の瞬時値を決定するために使用した第1モデル操作床反力モーメントの時系列のうちの最新値を上記反映済第1モデル操作床反力モーメント最新値として記憶保持している。そして、歩容生成装置100は、その記憶保持している反映済第1モデル操作床反力モーメント最新値を全モデル操作床反力モーメント分配器118に出力する。従って、反映済第1モデル操作床反力モーメント最新値は、歩容生成装置100が出力する今回歩容の瞬時値を更新する都度、それに合わせて、更新されることとなる。
なお、歩容生成装置100とは別の記憶手段で、歩容生成装置100の制御周期と同期した周期で反映済第1モデル操作床反力モーメント最新値を記憶保持しておき、該記憶手段から全床反力モーメント分配器119に、反映済第1モデル操作床反力モーメント最新値を入力するようにしてもよい。
そして、本実施形態では、全モデル操作床反力モーメント分配器119は、歩容生成装置100にフィードバックする第1モデル操作床反力モーメントを、第1実施形態と同じ処理によって決定する。すなわち、全モデル操作床反力モーメント分配器119は、全モデル操作床反力モーメントをローパスフィルタ119a(ハイカットフィルタ)に入力し、このローパスフィルタ119aの出力を第1モデル操作床反力モーメントとして決定する。なお、ローパスフィルタ119aの周波数通過特性は、第1実施形態におけるローパスフィルタ118aと同じでよい。
一方、全モデル操作床反力モーメント分配器119は、摂動モデル演算部120にフィードバックする第2モデル操作床反力モーメントを、第1実施形態と異なる態様で決定する。すなわち、全モデル操作床反力モーメント分配器118は、入力された全モデル操作床反力モーメントから、入力された反映済第1モデル操作床反力モーメント最新値を差し引く処理を演算部119bで実行し、この演算結果の値を、第2モデル操作床反力モーメントとして決定する。
以上が、本実施形態における全モデル操作床反力モーメント分配器119の処理である。
補足すると、以上説明した全モデル操作床反力モーメント分配器119によって第2モデル操作床反力モーメントを決定する処理は、次式72の如く、全モデル操作床反力モーメントからローパスフィルタ119aの出力を差し引いたもの(すなわち全モデル操作床反力モーメントの高周波成分)に、該ローパスフィルタ119aの出力と反映済第1モデル操作床反力モーメント最新値との差を加え合わせることによって、第2モデル操作床反力モーメントを決定する処理と同等である。
第2モデル操作床反力モーメント
=(全モデル操作床反力モーメント−ローパスフィルタの出力)
+(ローパスフィルタの出力−反映済第1モデル操作床反力モーメント最新値)
……式72
従って、本実施形態では、全モデル操作床反力モーメントの高周波成分(これは第1実施形態における全モデル操作床反力分配器118が決定する第2モデル操作床反力モーメントに相当する)に、歩容生成装置100の連続する2つの制御周期の間の期間内での第1モデル操作床反力モーメントの変化分(詳しくは、現在時刻での全モデル操作床反力モーメントの低周波成分の値と、前記反映済第1モデル操作床反力モーメント最新値との差分)を重畳したものが、第2モデル操作床反力モーメントして決定されることとなる。
本実施形態は、以上説明した事項以外は、第1実施形態と同じである。
補足すると、全モデル操作床反力モーメントをハイパスフィルタ(ローカットフィルタ)に入力し、このハイパスフィルタの出力(高周波成分)から、反映済第1モデル操作床反力モーメント最新値を差し引くことによって、第2モデル操作床反力モーメントを決定するようにしてもよい。そして、この場合、ローパスフィルタ119aを省略し、全モデル操作床反力モーメントから、ハイパスフィルタの出力を差し引くことで、第1モデル操作床反力モーメントを決定するようにしてもよい。
以上説明した本実施形態によれば、前記第1実施形態と同様の効果を奏することに加えて、次のような効果を奏することができる。すなわち、歩容生成装置100の連続する2つの制御周期の間の期間内での第1モデル操作床反力モーメントの変化分を、第2モデル操作床反力モーメントに重畳させて摂動モデル演算部120にフィードバックすることができる。このため、第1モデル操作床反力モーメントのうち、歩容生成装置100の歩容生成処理に反映されない部分となる上記変化分を、摂動モデル演算部120による上体水平位置摂動量(歩容生成装置100が出力する目標歩容の運動の修正分)に反映させることができる。
この結果、全モデル操作床反力モーメントの周波数成分に依存することなく、該全モデル操作床反力モーメント成分により上体姿勢角偏差Δθを円滑に“0”に近づける効果をより一層高めることができる。
なお、本実施形態と、本発明との対応関係は、第1実施形態の場合と同様である。
[変形態様について]
次に、以上説明した第1実施形態又は第2実施形態の変形態様をいくつか説明する。
前記各実施形態では、制御対象外力要素として、目標ZMP周りの床反力モーメントの水平成分を用いたが、例えば、目標ZMP以外の点(例えば支持脚座標系の原点)の周りの床反力モーメントの水平成分や、全床反力中心点の位置を制御対象外力要素として使用してもよい。
また、前記各実施形態では、実ロボット外力操作量としての合成補償モーメントを、上体姿勢角偏差Δθ(姿勢状態量偏差)を“0”に近づけるための実姿勢補償全床反力モーメントMdmdと、モデル状態量偏差ΔXpを“0”に近づけるためのモデル状態補償全床反力モーメントMmdlとを合成してなるモーメントして求めたが、例えば、Mdmdをそのまま、実ロボット外力操作量として用いてもよい。この場合には、モデル安定化制御演算部114を省略し、前記各実施形態における前述した制御処理を、Mmdlの値を“0”として実行するようにすればよい。
また、前記各実施形態では、合成補償モーメントとコンプライアンス制御用目標床反力モーメントとの差分に応じて、全モデル操作床反力モーメントを決定し、これを、ロボット1の目標運動を生成するための動力学モデルにフィードバックするようにしたが、このフィードバックを省略するようにしてもよい。この場合には、前記全モデル操作床反力モーメント分配器118、摂動モデル演算部120及び上体位置姿勢修正部122を省略し、前記第1モデル操作床反力モーメントを“0”として、前記各実施形態における前述の制御処理を実行するようにすればよい。
なお、この場合において、歩容生成装置100で使用する動力学モデルの所定の状態量と目標値との偏差に応じて前記モデル状態補償全床反力モーメントを算出するようにしてもよい。
また、歩容生成装置100で使用する動力学モデルは、先にも述べた如く、より多くの質点を有するような動力学モデルを使用してもよい。さらに、例えば上体24の姿勢を適宜変化させるような目標歩容を生成するような場合には、歩容生成装置100、あるいは、摂動モデル演算部120で使用する動力学モデルに、上体24の姿勢の変化に応じて発生する慣性力モーメントを表現する要素(例えばフラホイール)を含めるようにしてもよい。
また、前記各実施形態では、全モデル操作床反力モーメントを高周波成分と低周波成分とに分離し、低周波成分を歩容生成装置100で使用する動力学モデルにフィードバックすると共に、高周波成分を摂動モデル演算部120で使用する動力学モデルにフィードバックするようにした。但し、例えば、モデル安定化制御演算部114、全モデル操作床反力モーメント分配器118、摂動モデル演算部120及び上体位置姿勢修正部122を省略し、前記第1モデル操作床反力モーメントの代わりに、全モデル操作床反力モーメントをそのまま、歩容生成装置100の動力学モデルにフィードバックするようにしてもよい。このようにすることにより、前記第2発明の一実施形態を構築できることとなる。
あるいは、例えば、全モデル操作床反力モーメント分配器118を省略し、前記第2モデル操作床反力モーメントの代わりに、全モデル操作床反力モーメントをそのまま、摂動モデル演算部120の動力学モデルにフィードバックすると共に、歩容生成装置100の動力学モデルへのフィードバックを省略してもよい。このようにすることにより、前記第4発明の一実施形態を構築できることとなる。なお、この場合は、歩容生成装置100と、摂動モデル演算部120と、上体位置姿勢修正部122とにより、第4発明における目標運動決定手段が実現されることとなる。また、第4発明における動力学モデルは、歩容生成装置100で使用する動力学モデルと、摂動モデル演算部120で使用する動力学モデルとにより実現されることとなる。
また、前記各実施形態では、脚式移動ロボットとして2足移動ロボット1を例として説明したが、本発明における脚式移動ロボットは、2足移動ロボットに限らず、3つ以上の脚体を有する脚式移動ロボットであってもよい。