本発明の脚式移動ロボットおよびその制御プログラムの実施形態について図面を用いて説明する。
図1は、本実施形態に係る歩容生成装置および制御装置が適用される脚式移動ロボットとしての2足移動ロボットの全体的構成の概略を示す概略図である。
図示の如く、2足移動ロボット(以下、ロボットという)1は上体24から下方に延設された左右一対の脚体(脚部リンク)2,2を備える。両脚体2,2は同一構造であり、それぞれ6個の関節を備える。その6個の関節は上体24側から順に、股(腰部)の回旋(回転)用(上体24に対するヨー方向の回転用)の関節10R,10L(符号R、Lはそれぞれ右側脚体、左側脚体に対応するものであることを意味する符号である。以下同じ)と、股(腰部)のロール方向(X軸まわり)の回転用の関節12R,12Lと、股(腰部)のピッチ方向(Y軸まわり)の回転用の関節14R,14Lと、膝部のピッチ方向の回転用の関節16R,16Lと、足首のピッチ方向の回転用の関節18R,18Lと、足首のロール方向の回転用の関節20R,20Lとから構成される。
各脚体2の足首の2つの関節18R(L),20R(L)の下部には、各脚体2の先端部を構成する足平(足部)22R(L)が取着されると共に、両脚体2,2の最上位には、各脚体2の股の3つの関節10R(L),12R(L),14R(L)を介して前記上体(基体)24が取り付けられている。上体24の内部には、詳細を後述する制御ユニット26などが格納されている。なお、図1では図示の便宜上、制御ユニット26を上体24の外部に記載している。
制御ユニット26は、ハードウェアとしてのCPU、ROM、RAM、信号入力回路、信号出力回路等と、このハードウェアに対してロボット1の作動制御機能を付与するソフトウェアとしての本発明の「制御プログラム」とより構成されている。
上記構成の各脚体2においては、股関節(あるいは腰関節)は関節10R(L),12R(L),14R(L)から構成され、膝関節は関節16R(L)から構成され、足関節(足首関節)は関節18R(L),20R(L)から構成される。また股関節と膝関節とは大腿リンク28R(L)で連結され、膝関節と足関節とは下腿リンク30R(L)で連結される。
なお、図示は省略するが、上体24の上部の両側部には左右一対の腕体が取り付けられると共に、上体24の上端部には頭部が配置される。これらの腕体および頭部は、本発明の要旨と直接的な関連を有しないので詳細な説明は省略するが、各腕体は、それに備える複数の関節によって、該腕体を上体24に対して前後に振る等の運動を行なうことが可能となっている。
各脚体2の上記構成により、各脚体2の足平22R(L)は、上体24に対して6つの自由度を与えられている。そして、ロボット1の移動に際して両脚体2,2を合わせて6*2=12個(この明細書で「*」はスカラに対する演算においては乗算を示し、ベクトルに対する演算においては外積を示す)の関節を適宜な角度で駆動することで、両足平22R,22Lの所望の運動を行なうことができる。これによりロボット1は任意に3次元空間を移動することができる。
なお、この明細書で後述する上体24の位置および速度は、上体24の所定位置、具体的には上体24のあらかじめ定めた代表点(例えば左右の股関節の間の中央点等)の位置およびその移動速度を意味する。同様に、各足平22R,22Lの位置および速度は、各足平22R,22Lのあらかじめ定めた代表点の位置およびその移動速度を意味する。この場合、本実施形態では各足平22R,22Lの代表点は、例えば各足平22R,22Lの底面上(より具体的には各脚体2の足首関節の中心から各足平22R,22Lの底面への垂線が該底面と交わる点等)に設定される。
図1に示す如く、各脚体2の足首関節18R(L),20R(L)の下方には足平22R(L)との間に公知の6軸力センサ34が介装されている。該6軸力センサ34は、各脚体2の足平22R(L)の着地の有無、および各脚体2に作用する床反力(接地荷重)などを検出するためのものであり、該床反力の並進力の3方向成分Fx,Fy,Fz並びにモーメントの3方向成分Mx,My,Mzの検出信号を制御ユニット26に出力する。また、上体24には、Z軸(鉛直方向(重力方向))に対する上体24の傾き(姿勢角)とその角速度とを検出するための傾斜センサ36が設置され、その検出信号が該傾斜センサ36から制御ユニット26に出力される。また、詳細構造の図示は省略するが、ロボット1の各関節には、それを駆動するために電動モータ32(図3参照)と、その電動モータ32の回転量(各関節の回転角)を検出するためのエンコーダ(ロータリエンコーダ)33(図3参照)とが設けられ、該エンコーダ33の検出信号が該エンコーダ33から制御ユニット26に出力される。
図2に示すように、各足平22R(L)の上方には、前記6軸力センサ34との間にばね機構(第1コンプライアンス機構)38が装備されると共に、足底(各足平22R(L)の底面)にはゴムなどからなる足底弾性体(第2コンプライアンス機構)40が貼られている。これらのばね機構38および足底弾性体40によりコンプライアンス機構42が構成されている。ばね機構38は具体的には、足平22R(L)の上面部に取り付けられた方形状のガイド部材(図示せず)と、足首関節18R(L)(図2では足首関節20R(L)を省略している)および6軸力センサ34側に取り付けられ、前記ガイド部材内に弾性材(ゴムやばね)を介して微動自在に収納されるピストン状部材(図示せず)とから構成されている。なお、コンプライアンス機構は、脚体2のリンク28,30によって構成されていてもよい。
図2に実線で表示された足平22R(L)は、床反力を受けていないときの状態を示している。各脚体2が床反力を受けると、コンプライアンス機構42のばね機構38と足底弾性体40とがたわみ、足平22R(L)は図中に点線で例示したような位置姿勢に移る。このコンプライアンス機構42の構造は、着地衝撃を緩和するためだけでなく、ロボット1の制御性を高めるためにも重要なものである。なお、その詳細は本出願人に先に提案した特開平5−305584号に記載されているので、詳細な説明は省略する。
さらに、図1では図示を省略するが、ロボット1の外部には、該ロボット1の操縦用のジョイスティック(操作器)44(図3参照)が設けられ、そのジョイスティック44を操作することで、直進移動しているロボット1を旋回させるなど、ロボット1の歩容に対する要求を必要に応じて制御ユニット26に入力できるように構成される。この場合、入力できる要求は、例えばロボット1の移動時の歩容形態(歩行、走行等)、遊脚の着地位置姿勢や着地時刻、あるいはこれらの着地位置姿勢や着地時刻を規定する指令データ(例えばロボット1の移動方向、移動速度等)である。
図3は制御ユニット26の構成を示すブロック図である。該制御ユニット26はマイクロコンピュータにより構成されており、CPUからなる第1の演算装置60および第2の演算装置62、A/D変換器50、カウンタ56、D/A変換器66、RAM54、ROM64、並びにこれらの間のデータ授受を行なうバスライン52を備えている。この制御ユニット26では、前記各脚体2の6軸力センサ34、傾斜センサ36、ジョイスティック44等の出力信号はA/D変換器50でデジタル値に変換された後、バスライン52を介してRAM54に入力される。また、ロボット1の各関節のエンコーダ33(ロータリエンコーダ)の出力はカウンタ56を介してRAM54に入力される。
前記第1の演算装置60は後述の如く、目標歩容を生成すると共に、関節角変位指令(各関節の変位角または各電動モータ32の回転角の指令値)を算出し、RAM54に送出する。また第2の演算装置62はRAM54から関節角変位指令と、前記エンコーダ33の出力信号に基づいて検出された関節角の実測値とを読み出し、各関節の駆動に必要な操作量を算出してD/A変換器66とサーボアンプ32aとを介して各関節を駆動する電動モータ32に出力する。
図4は、本実施形態におけるロボット1の歩容生成装置および制御装置の機能的構成を全体的に示すブロック図である。この図4中の「実ロボット」の部分以外の部分が制御ユニット26が実行する処理機能(主として第1の演算装置60および第2の演算装置62の機能)によって構成されるものである。なお、以下の説明では、脚体2の左右を特に区別する必要がないときは、前記符号R,Lを省略する。
図4において、歩容生成装置100および目標床反力分配器106が「目標床反力設定手段」を構成し、歩容生成装置100が「目標足平(接地部位)軌道設定手段」を構成し、複合コンプライアンス動作決定部104が「目標足平(接地部位)軌道修正手段」を構成し、関節変位コントローラ108が本願発明の「脚体制御手段」を構成する。
本願発明は、目標床反力が足平22に作用したときのコンプライアンス機構42の変形量が補償されるように、足平22の離床期(=脚体2の遊脚期)から着床期(=脚体2の着地期)の移行時における足平22が鉛直方向下方または床面法線方向下方に所定速度を有するように脚体2の動作が制御される点に特徴がある。この特徴については後で説明する。
以下説明すると、制御ユニット26は、後述の如く目標歩容を自在かつリアルタイムに生成して出力する歩容生成装置100を備えている。該歩容生成装置100は、その機能によって、本願発明の各手段を構成するものである。この歩容生成装置100が出力する目標歩容は、目標上体位置姿勢軌道(上体24の目標位置および目標姿勢の軌道)、目標足平位置姿勢軌道(各足平22の目標位置および目標姿勢の軌道)、目標腕姿勢軌道(各腕体の目標姿勢の軌道)、目標全床反力中心点(目標ZMP)軌道、および目標全床反力軌道から構成される。なお、脚体2や腕体以外に、上体24に対して可動な部位を備える場合には、その可動部位の目標位置姿勢軌道が目標歩容に加えられる。
ここで、上記歩容における「軌道」は時間的変化のパターン(時系列パターン)を意味し、以下の説明では、「軌道」の代わりに「パターン」と称することもある。また、「姿勢」は空間的な向きを意味する。具体的には、例えば上体姿勢はZ軸(鉛直軸)に対するロール方向(X軸まわり)の上体24の傾斜角(姿勢角)とピッチ方向(Y軸まわり)の上体24の傾斜角(姿勢角)とで表され、足平姿勢は各足平22に固定的に設定された2軸の空間的な方位角で表される。本明細書では、上体姿勢は上体姿勢角ということもある。
なお、以下の説明では、誤解を生じるおそれがない場合には、しばしば「目標」を省略する。また、歩容のうちの、床反力に係わる構成要素以外の構成要素、すなわち足平位置姿勢、上体位置姿勢等、ロボット1の運動に係わる歩容を総称的に「運動」という。また、各足平22に作用する床反力(並進力およびモーメントからなる床反力)を「各足平床反力」と呼び、ロボット1の全て(2つ)の足平22R,22Lについての「各足平床反力」の合力を「全床反力」という。但し、以下の説明においては、各足平床反力はほとんど言及しないので、特に断らない限り、「床反力」は「全床反力」と同義として扱う。
目標床反力は、一般的には、作用点とその点に作用する並進力およびモーメントによって表現される。作用点はどこにとっても良いので、同一の目標床反力でも無数の表現が考えられるが、特に目標床反力中心点(全床反力の中心点の目標位置)を作用点にして目標床反力を表現すると、目標床反力のモーメント成分は、鉛直成分(鉛直軸(Z軸)まわりのモーメント)を除いて零になる。換言すれば、目標床反力中心点まわりの目標床反力のモーメントの水平成分(水平軸(X軸およびY軸)回りのモーメント)は零になる。
なお、動力学的平衡条件を満足する歩容では、ロボット1の目標運動軌道から算出されるZMP(目標運動軌道から算出される慣性力と重力との合力がその点まわりに作用するモーメントが、鉛直成分を除いて零になる点)と目標床反力中心点は一致することから、目標床反力中心点軌道の代わりに目標ZMP軌道を与えると言っても同じことである(詳細は、本願出願人による特願2000−352011号等を参照)。
このような背景から、上記特願2000−352011号の明細書では目標歩容を、次のように定義していた。
a)広義の目標歩容とは、1歩ないしは複数歩の期間の目標運動軌道とその目標床反力軌道との組である。
b)狭義の目標歩容とは、1歩の期間の目標運動軌道とそのZMP軌道との組である。
c) 一連の歩容は、いくつかの歩容がつながったものとする。
歩行においては、本出願人が先に特開平10−86080号公報で提案した上体高さ決定手法によってロボット1の上体24の鉛直位置(上体高さ)が決定されると、並進床反力鉛直成分は従属的に決定される。さらに、目標歩容の運動による慣性力と重力との合力が目標ZMPまわりに発生するモーメントの水平成分が零になるようにロボット1の上体水平位置軌道を決定することで、並進床反力水平成分も決定される。このため、特願2000−352011号の明細書では、目標歩容の床反力に関して明示的に設定すべき物理量としては、目標ZMPだけで十分であった。従って、狭義の目標歩容の定義としては、上記のb)で十分であった。それに対し、本実施形態で説明するロボット1の走行歩容(詳細は後述する)においては、床反力鉛直成分(並進床反力鉛直成分)も制御上重要である。このため本発明では、この床反力鉛直成分の目標軌道を明示的に設定した上で、ロボット1の目標上体鉛直位置等の軌道を決定する。そこで、本明細書では、狭義の目標歩容の定義として、次のb’)を用いる。
b’)狭義の目標歩容とは、1歩の期間の目標運動軌道とその目標ZMP軌道と目標並進床反力鉛直成分軌道との組である。
この明細書では以降、理解を容易にするために、特にことわらない限り、目標歩容は上記b’)の狭義の目標歩容の意味で使用する。この場合、目標歩容の「1歩」は、ロボット1の片方の脚体2が着地してからもう一方の脚体2が着地するまでの意味で使用する。なお、以下の説明では、「床反力鉛直成分」は「並進床反力鉛直成分」を意味するものとし、床反力のうちのモーメントの鉛直成分(鉛直軸回り成分)は、「モーメント」という用語を用いて「床反力鉛直成分」と区別をする。同様に、「床反力水平成分」は「並進床反力水平成分」を意味するものとする。
また、歩容における両脚支持期とは言うまでもなく、ロボット1がその自重を両脚体2,2で支持する期間、片脚支持期とはいずれか一方のみの脚体2でロボット1の自重を支持する期間、空中期とは両脚体2,2が床から離れている(空中に浮いている)期間を言う。片脚支持期においてロボット1の自重を支持しない側の脚体2を「遊脚」と呼ぶ。なお、本実施形態で説明する走行歩容では、両脚支持期は無く、片脚支持期(着地期)と空中期とが交互に繰り返される。この場合、空中期では両脚2,2とも、ロボット1の自重を支持しないこととなるが、該空中期の直前の片脚支持期において遊脚であった脚体2、支持脚であった脚体2をそれぞれ該空中期においても遊脚、支持脚と呼ぶ。
図5に示す走行歩容を例にして、歩容生成装置100が生成する目標歩容の概要を説明する。なお、歩容に関するその他の定義および詳細は、先に本願出願人が提案した特開平10−86081号公報にも記載されているので、以下では、特開平10−86081号公報に記載されていない内容を主に説明する。
まず、図5に示す走行歩容を説明する。この走行歩容は、人間の通常的な走行歩容と同様の歩容である。この走行歩容では、ロボット1の左右いずれか一方のみの脚体2(支持脚)の足平22が着地(接地)する片脚支持期と、両脚体2,2が空中に浮く空中期とが交互に繰り返される。図5の1番目の状態は片脚支持期の開始時(初期)の状態、2番目の状態は片脚支持期の中間時点の状態、3番目の状態は片脚支持期に続く空中期の開始時(片脚支持期の終了時)の状態、4番目の状態は空中期の中間時点の状態、5番目の状態は空中期の終了時(次の片脚支持期の開始時)の状態を示している。
この走行歩容では、ロボット1は、図5の1番目の状態で示すように、片脚支持期の開始時において支持脚(ロボット1の進行方向前側の脚体2)側の足平22のかかとで着地する。続いて、図5の2番目の状態で示すように、ロボット1は、着地した足平22(支持脚側の足平22)の底面のほぼ全面を着地させた後、図5の3番目の状態で示すように、その支持脚側の足平22(図5の3番目の状態におけるロボット1の進行方向後側の脚体2の足平22)のつま先で床を蹴って空中に飛び上がる。これより片脚支持期が終了すると共に空中期が開始する。なお、片脚支持期における遊脚は、図5の1番目の状態で示すように、片脚支持期の開始時では、支持脚の後側に存在するが、図5の2番目および3番目の状態で示すように次の着地予定位置に向かって支持脚の前側に振り出される。次いで、図5の4番目の状態で示す空中期を経た後、ロボット1は、遊脚(空中期の開始直前の片脚支持期で遊脚となっていた脚体2)の足平22のかかとで着地し、次の片脚支持期が開始される。なお、ロボット1が、支持脚側の足平22の踵ではなく、当該足平22の足底のほぼ全面で着地してもよい。
図5の走行歩容を考慮しつつ、前記歩容生成装置100が生成する目標歩容の基本的な概要を説明する。詳細は後述するが、歩容生成装置100が目標歩容を生成するとき、遊脚側の足平22の着地位置姿勢(着地予定位置姿勢)や着地時刻(着地予定時刻)等の目標歩容生成用の基本的な要求値(要求パラメータ)が、前記ジョイスティック44の所要の操作等に応じて歩容生成装置100に与えられる。そして、歩容生成装置100は、その要求パラメータを用いて目標歩容を生成する。より詳しく言えば、歩容生成装置100は、上記要求パラメータに応じて、目標歩容の目標足平位置姿勢軌道、目標床反力鉛直成分軌道等、目標歩容の一部の構成要素を規定するパラメータ(歩容パラメータという)を決定した上で、その歩容パラメータを用いて目標歩容の瞬時値を逐次決定し、該目標歩容の時系列パターンを生成する。
この場合、目標足平位置姿勢軌道(より詳しくは、足平の位置および姿勢の空間的な各成分(X軸成分等)の目標軌道)は、例えば本出願人が特許第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のZ軸方向位置(以下、最高点位置という)とその最高点位置への到達時刻とが決定される。そして、その最高点位置(これは前記指定値に相当する)に応じて有限時間整定フィルタへのステップ入力の高さが決定されると共に時定数τが初期化された後、その決定されたステップ入力が有限時間整定フィルタに与えられ、前記最高点位置までのZ軸方向の足平位置軌道が逐次生成される。この際、時定数τは、最高点位置への到達時刻(前記指定時刻に相当)までに初期値から0まで減少するように逐次可変設定される。さらに、最高点位置までのZ軸方向位置の軌道の生成が終了したら、時定数τを初期化すると共にいままでのステップ入力と逆極性のステップ入力(より詳しくは、最高点位置から次の着地予定位置までのZ軸方向の変化量(これは前記指定値に相当する)に応じた高さの逆極性のステップ入力)が有限時間整定フィルタに入力され、該最高点位置から着地予定位置までのZ軸方向の足平位置の軌道が逐次生成される。この際、時定数τは足平22の着地予定時刻までに初期値から0まで減少するように逐次可変設定される。
なお、Z軸方向の足平位置軌道の生成においては、時定数τを軌道生成開始時刻から足平22の着地予定時刻まで、初期値から0まで継続的に減少するように可変設定すると共に、最高点位置への到達時刻またはその近傍時刻で、ステップ入力の極性を逆極性に切り替えることで、Z軸方向の足平位置軌道を生成するようにしてもよい。この場合には、足平22を所望の最高点位置に精度よく到達させることはできないが、着地予定時刻での着地予定位置への到達は問題なく行なうことができる。
足平姿勢軌道についても、上述した足平位置軌道と同様に有限時間整定フィルタを用いて生成することができる。この場合、足平姿勢の空間的な各成分のうち、その姿勢の角度変化が単調的(単調増加または単調減少)なものとなる成分については、前記したX軸方向の足平位置軌道の生成と同様に足平姿勢軌道を生成すればよい。また、姿勢の角度変化が極大値または極小値をもつような成分については、前記したZ軸方向の足平位置軌道の生成と同様に足平姿勢軌道を生成すればよい。
なお、上記のように有限時間整定フィルタにより生成される目標足平位置姿勢軌道は、床面に固定された後述の支持脚座標系での各足平22の目標位置姿勢軌道である。
上述のように生成される目標足平位置姿勢軌道は、各足平22の位置が、その初期接地状態(目標歩容の初期時刻の状態)から着地予定位置に向かって徐々に加速しながら移動を開始するように生成される。そして、該目標足平位置姿勢軌道は、位置の鉛直方向下方または床面垂線方向下方への変化速度が、着地予定時刻にて0となるように生成される。このため、各足平22の着地瞬間における対地速度(床に固定された支持脚座標系での各足平22の位置の変化速度)が正になる。
なお、足平姿勢に関しては、各足平22が着地予定時刻にてその踵で着地した後、該足平22の底面のほぼ全面が床に接地するまで動き続ける。このため、該足平22の底面のほぼ全面が床に接地する時刻を前記指定時刻に設定して、前記有限時間整定フィルタにより足平姿勢軌道が生成される。
また、本実施形態では、有限時間整定フィルタを用いて足平位置軌道を生成したが、着地予定時刻での足平位置の鉛直方向下方または床面垂線方向下方への変化速度が0になる(足平位置の時間微分値が鉛直方向下方または床面垂線方向下方について0になる)ように設定された多項式などの関数を用いて目標足平位置軌道を生成するようにしても良い。このことは、目標足平姿勢軌道の生成に関しても同様である。但し、該目標足平姿勢軌道の生成に関しては、上述の如く、各足平22の底面のほぼ全面が床に設置する時刻にて、各足平22の姿勢の鉛直方向下方または床面垂線方向下方への変化速度が0になるように多項式などの関数が設定される。
目標床反力鉛直成分軌道は、例えば図6のように設定される。本実施形態では、走行歩容における目標床反力鉛直成分軌道の形状(詳しくは片脚支持期での形状)は、台形状(床反力鉛直成分の増加側に凸の形状)に定められており、その台形の高さ、折れ点の時刻を目標床反力鉛直成分軌道を規定する歩容パラメータとして、それらの歩容パラメータ(床反力鉛直成分軌道パラメータ)が決定される。なお、走行歩容の空中期では、目標床反力鉛直成分は定常的に0に設定される。この例のように、目標床反力鉛直成分軌道は、実質的に連続になるように(値が不連続にならないように)設定するのが良い。これは床反力を制御する際のロボット1の関節の動作を滑らかにするためである。なお、「実質的に連続」というのは、アナログ的に連続な軌道(真の意味での連続な軌道)を離散時間系でデジタル表現したときに必然的に生じる値の飛びは、該軌道の連続性を失わせるものではないということを意味するものである。
目標ZMP軌道は次のように設定される。図5の走行歩容においては、前記したように支持脚側足平22のかかと(例えば、足平22の接地予定点のうち最初の接地点)で着地し、次にその支持脚側足平22のつま先で蹴って空中に飛び上がり、最後に遊脚側足平22のかかとで着地する。従って、片脚支持期での目標ZMP軌道は、図7の上段図に示すように、支持脚側足平22のかかとを初期位置として、次に支持脚側足平22の底面のほぼ全面が接地する期間において該足平22の前後方向の中央に移動し、その後、離床時までに支持脚側足平22のつまさきに移動するように設定される。ここで、図7の上段図は、X軸方向(前後方向)の目標ZMP軌道を示すものであり、図7の下段図はY軸方向(左右方向)の目標ZMP軌道を示すものである。なお、片脚支持期におけるY軸方向の目標ZMP軌道は、図7の下段図に示すように、Y軸方向での支持脚側脚体2の足首関節の中心位置と同じ位置に設定される。
走行歩容では、さらに片脚支持期の終了後、両脚体2,2が床から離れ、床反力鉛直成分が0になる。床反力鉛直成分が0の時、すなわち空中期には、ロボット1の全体重心は自由落下運動をし、全体重心まわりの角運動量変化は零である。この時、床の任意の点において、ロボット1に作用する重力と慣性力との合力のモーメントは0であるので、目標ZMPは不定である。すなわち、床のいずれの点も、「重力と慣性力との合力が作用するモーメントの水平成分が0である作用点」というZMPの条件を満たす。言いかえれば、任意の点に目標ZMPを設定しても、上記合力が目標ZMP回りに作用するモーメントの水平成分が0であるという動力学的平衡条件を満足する。従って、目標ZMPを不連続に設定しても構わない。例えば、空中期では、目標ZMPを、離床時(片脚支持期の終了時)の目標ZMP位置から移動しないように設定し、空中期終端において、着地時の目標ZMP位置に不連続(ステップ状)に移動するように該目標ZMP軌道を設定しても構わない。しかし本実施形態では、図7の上段図に示すように、空中期における目標ZMP軌道のX軸方向位置は、次の遊脚側脚体2の着地までに支持脚側足平22のつまさきから遊脚側足平22のかかとの着地位置まで連続的に移動するようにした。また、図7の下段図に示すように、空中期における目標ZMP軌道のY軸方向位置は、次の遊脚側脚体2の着地までに支持脚側脚体2の足首関節の中心のY軸方向位置から遊脚側脚体2の足首関節の中心のY軸方向位置まで連続的に移動するようにした。すなわち、歩容の全期間において目標ZMP軌道を連続(実質的に連続)にした。そして、後述するように、目標ZMPまわりの重力と慣性力との合力のモーメント(鉛直成分を除く)が零になるように目標歩容を生成する(より具体的には目標上体位置姿勢軌道を調整する)ようにした。
なお、本実施形態では、図7に示したような目標ZMP軌道の折れ点の位置や時刻が、ZMP軌道パラメータ(目標ZMP軌道を規定するパラメータ)として設定される。また、上記したZMP軌道の「実質的に連続」の意味は、前記床反力鉛直成分軌道の場合と同様である。
ZMP軌道パラメータは、安定余裕が高く、かつ急激な変化をしないように決定される。ここで、ロボット1の接地面を含む最小の凸多角形(いわゆる支持多角形)の中央付近に目標ZMPが存在する状態を安定余裕が高いと言う(詳細は特開平10−86081号公報を参照)。図7の目標ZMP軌道はこのような条件を満たすように設定したものである。
また、目標腕姿勢は、上体24に対する相対姿勢で表す。
また、目標上体位置姿勢、目標足平位置姿勢および後述の基準上体姿勢はグローバル座標系で記述される。グローバル座標系は前述のごとく床に固定された座標系である。グローバル座標系としては、より具体的には、後述する支持脚座標系が用いられる。
本実施形態における歩容生成装置100は、ロボット1の片方の脚体2が着地してから他方の脚体2が着地するまでの1歩分の目標歩容(前記狭義の意味での目標歩容)を単位として、その1歩分の目標歩容を順番に生成する。従って、本実施形態で生成する図5の走行歩容では、該目標歩容は片脚支持期の開始時から、これに続く空中期の終了時(次の片脚支持期の開始時)までの目標歩容が順番に生成される。ここで、新たに生成しようとしている目標歩容を「今回歩容」、その次の目標歩容を「次回歩容」、さらにその次の目標歩容を「次次回歩容」、というように呼ぶ。また、「今回歩容」の一つ前に生成した目標歩容を「前回歩容」と呼ぶ。
また、歩容生成装置100が今回歩容を新たに生成するとき、該歩容生成装置100には、ロボット1の2歩先までの遊脚側足平22の着地予定位置姿勢、着地予定時刻の要求値(要求)が歩容に対する要求パラメータとして入力される(あるいは歩容生成装置100が記憶装置から要求パラメータを読み込む)。そして、歩容生成装置100は、これらの要求パラメータを用いて、目標上体位置姿勢軌道、目標足平位置姿勢軌道、目標ZMP軌道、目標床反力鉛直成分軌道、目標腕姿勢軌道等を生成する。このとき、これらの軌道を規定する歩容パラメータの一部は、歩行の継続性を確保するように適宜修正される。
以下に図5の走行歩容を生成することを例にして、歩容生成装置100の歩容生成処理の詳細を図8〜図11を参照しつつ説明する。図8は、その歩容生成装置100が実行する歩容生成処理を示すフローチャート(構造化フローチャート)である。
まずS010において時刻tを0に初期化するなど種々の初期化作業が行なわれる。この処理は、歩容生成装置100の起動時等に行なわれる。次いで、S012を経てS014に進み、歩容生成装置100は、制御周期(図8のフローチャートの演算処理周期)毎のタイマ割り込みを待つ。制御周期はΔtである。
次いで、S016に進み、歩容の切り替わり目であるか否かが判断され、歩容の切り替わり目であるときはS018に進むと共に、切り替わり目でないときはS030に進む。ここで、上記「歩容の切り替わり目」は、前回歩容の生成が完了し、今回歩容の生成を開始するタイミングを意味し、例えば前回歩容の生成を完了した制御周期の次の制御周期が歩容の切り替わり目になる。
S018に進むときは時刻tが0に初期化され、次いでS020に進み、次回歩容支持脚座標系、次次回歩容支持脚座標系、今回歩容周期および次回歩容周期が読み込まれる。これらの支持脚座標系および歩容周期は、前記要求パラメータにより定まるものである。すなわち、本実施形態では、歩容生成装置100にジョイスティック44等から与えられる要求パラメータは、2歩先までの遊脚側足平22の着地予定位置姿勢(足平22が着地してから足底を床面にほぼ全面的に接触させるように、滑らさずに回転させた状態での足平位置姿勢)、着地予定時刻の要求値を含んでおり、その1歩目の要求値、2歩目の要求値がそれぞれ、今回歩容、次回歩容に対応するものとして、今回歩容の生成開始時(前記S016の歩容の切り替わり目)以前に歩容生成装置100に与えられたものである。なお、これらの要求値は今回歩容の生成途中でも変更することは可能である。
そして、上記要求パラメータにおける1歩目の遊脚側足平22(今回歩容での遊脚側足平22)の着地予定位置姿勢の要求値に対応して次回歩容支持脚座標系が定まる。
次いでS022に進み、歩容生成装置100は、今回歩容に続く仮想的な周期的歩容としての定常旋回歩容の歩容パラメータを決定する。該歩容パラメータは、定常旋回歩容における目標足平位置姿勢軌道を規定する足平軌道パラメータ、基準とする上体姿勢軌道を規定する基準上体姿勢軌道パラメータ、目標腕姿勢軌道を規定する腕軌道パラメータ、目標ZMP軌道を規定するZMP軌道パラメータ、目標床反力鉛直成分軌道を規定する床反力鉛直成分軌道パラメータを含む。さらに、目標床反力水平成分許容範囲を規定するパラメータも歩容パラメータに含まれる。
なお、この明細書で「定常旋回歩容」は、その歩容を繰り返したときに歩容の境界(本実施形態では1歩毎の歩容の境界)においてロボット1の運動状態(足平位置姿勢、上体位置姿勢等の状態)に不連続が生じないような周期的歩容を意味するものとして使用する。以降、「定常旋回歩容」を「定常歩容」と略す場合もある。
定常旋回歩容は、歩容生成装置100で今回歩容の終端における発散成分や上体鉛直位置速度、上体姿勢角およびその角速度等のロボット1の運動状態を決定するために暫定的に作成されるものであり、歩容生成装置100からそのまま出力されるものではない。
なお、「発散」とは、2足移動ロボット1の上体24の位置が両足平22,22の位置からかけ離れた位置にずれてしまうことを意味する。発散成分の値とは、2足移動ロボット1の上体24の位置が両足平22,22の位置(より具体的には、支持脚側足平22の接地面に設定されたグローバル座標系(支持脚座標系)の原点)からかけ離れていく具合を表す数値である。
本題に戻り、S022では、図9に示すフローチャートに従って、以下の処理が行われる。
まず、S100において、今回歩容、第1旋回歩容、第2旋回歩容の順に足平位置姿勢軌道がつながるように、定常歩容の歩容パラメータのうちの足平軌道パラメータが決定される。なお、以降の説明では、支持脚側の脚体2の足平22を支持脚足平と称し、遊脚側の脚体2の足平2を遊脚足平と称する。また、歩容の「初期」、「終端」はそれぞれ歩容の開始時刻、終了時刻またはそれらの時刻における瞬時歩容を意味する。
足平軌道パラメータは、第1旋回歩容および第2旋回歩容の初期および終端のそれぞれにおける支持脚足平および遊脚足平のそれぞれの位置姿勢、各旋回歩容の歩容周期等から構成される。この足平軌道パラメータのうち、第1旋回歩容初期遊脚足平位置姿勢は、次回歩容支持脚座標系から見た今回歩容終端支持脚足平位置姿勢とされる。この場合、走行歩容では、今回歩容終端における支持脚足平22は、空中に移動している。そして、今回歩容終端支持脚足平位置姿勢は、今回歩容初期支持脚足平位置姿勢(=前回歩容終端遊脚足平位置姿勢)から、前記要求パラメータにおける2歩目の遊脚側足平22の着地予定位置姿勢の要求値(今回歩容の支持脚足平22の次回歩容における着地予定位置姿勢の要求値)または該要求値に対応する次次回歩容支持脚座標系に応じて定まる次回歩容終端遊脚足平位置姿勢に至る足平位置姿勢軌道(詳しくは次回歩容支持脚座標系から見た軌道)を、今回歩容終端まで前記有限時間整定フィルタを用いて生成することにより求められる。
次に、S102に進み、目標上体姿勢が追従すべき基準上体姿勢軌道を規定する基準上体姿勢軌道パラメータが決定される。基準上体姿勢は、定常歩容の初期(第1旋回歩容の初期)と終端(第2旋回歩容の終端)とでつながるように(定常歩容の初期、終端での基準上体姿勢の姿勢角およびその角速度が一致するように)に設定されている限り、一定姿勢である必要はないが、本実施形態では理解を容易にするため、基準上体姿勢は、直立姿勢(鉛直姿勢)に設定される。つまり、本実施形態では、基準上体姿勢は、定常歩容の全期間において直立姿勢に設定される。従って、本実施形態では、基準上体姿勢の姿勢角の角速度および角加速度は0である。
次に、S104に進み、腕姿勢軌道パラメータ、より詳しくは鉛直軸(あるいは上体体幹軸)まわりの両腕体の角運動量変化に関すること以外の腕姿勢軌道パラメータが決定される。たとえば、上体24に対する腕体の手先の相対高さや腕全体の相対重心位置などの腕姿勢軌道パラメータが決定される。なお、本実施形態では、腕全体の相対重心位置は、上体に対して一定に維持されるように設定される。
次に、S106に進み、床反力鉛直成分軌道パラメータが設定される。この場合、該パラメータにより規定される床反力鉛直成分軌道が、第1旋回歩容および第2旋回歩容のいずれにおいても図6のように実質的に連続な(値がステップ状に飛ばない)ものとなるように床反力鉛直成分軌道パラメータが設定される。すなわち、定常旋回歩容の目標床反力鉛直成分軌道は図16のようなパターンで設定される。そのパターンでは、第1旋回歩容および第2旋回歩容のいずれにおいても、片脚支持期では床反力鉛直成分が台形状に変化し、空中期では床反力鉛直成分が0に維持される。そして、このパターンの折れ点の時刻や、台形部分の高さ(ピーク値)が床反力鉛直成分軌道パラメータとして設定される。
次に、S108に進み、上記のごとく図16のように設定された床反力鉛直成分軌道に応じて、床反力水平成分の許容範囲[Fxmin,Fxmax](より詳しくはこれを規定するパラメータ)が図10のように設定される。図10の負側の折れ線が床反力水平成分許容下限値Fxmin、正側の折れ線が床反力水平成分許容上限値Fxmaxを表す。これらの設定方法に関して以下に補足する。以下では、床面が水平である場合について説明する。
床反力水平成分は、床と足平22との間の摩擦によって発生するが、摩擦はいくらでも発生できるわけではなく、限界がある。従って、生成された目標歩容に従って実際のロボット1が移動した時にスリップしないようにするためには、目標歩容の床反力水平成分が、常に摩擦限界以内になければならない。そこで、この条件を満足させるために、床反力水平成分許容範囲を設定し、後述するように、目標歩容の床反力水平成分がこの許容範囲内になるように、目標歩容を生成することとした。
床と足平22との間の摩擦係数をμとすると、Fxminは、常に−μ*床反力鉛直成分以上に、Fxmaxはμ*床反力鉛直成分以下に設定されなければならない。最も単純な設定方法は、次式による設定である。但し、kaは1より小さい正の定数である。
Fxmin =−ka * μ* 床反力鉛直成分
Fxmax = ka * μ* 床反力鉛直成分 ・・式12
図1710の床反力水平成分許容範囲は、式12に従って設定した例である。床反力水平成分許容範囲を規定するパラメータとして、図1710の台形波形などの折れ点での値と時刻を設定してもよいが、式12により床反力水平成分許容範囲を決定するときには、単に式12における(ka * μ)の値をパラメータとして設定するだけでも良い。
次に、S110に進み、第1旋回歩容および第2旋回歩容を合わせた定常歩容のZMP軌道を規定するZMP軌道パラメータが設定される。この場合、目標ZMP軌道は、前述したように安定余裕が高くかつ急激な変化をしないように設定される。
さらに詳細には、図5の走行歩容においては、支持脚足平22のかかとで着地した後、しばらくして該支持脚足平22の底面のほぼ全面が接地し、さらにしばらくして、支持脚足平22のつま先だけが接地する。そして、次に支持脚足平22のつま先で蹴って空中に飛び上がり、最後に遊脚足平22のかかとで着地する。また、目標ZMPは接地面内に存在しなければならない。そこで、本実施形態では、定常歩容の第1旋回歩容および第2旋回歩容のそれぞれの目標ZMPのX軸方向の位置は、前記図7の上段図に示したように、支持脚足平22のかかとを初期位置として、該足平22の底面のほぼ全体が接地するまでその位置に留まるように設定される。次に、目標ZMPは支持脚足平22の中央に移動し、該足平22がつま先接地状態になるまでにつま先に移動し、その後、離床時まで支持脚足平22のつまさきに留まるように設定される。さらにその後は、目標ZMPは、前述のごとく、次の遊脚足平22の着地までに目標ZMPが、支持脚足平22のつまさきから遊脚足平22のかかとの着地位置まで連続的に移動するように設定される。そして、この目標ZMP軌道の折れ点の時刻および位置がZMP軌道パラメータとして設定される。この場合、折れ点の時刻は、前記要求パラメータに応じて定めた第1旋回歩容および第2旋回歩容の歩容周期に応じて設定され、該折れ点の位置は、次回歩容支持脚座標系および次次回歩容支持脚座標系の位置姿勢あるいはこれらの座標系を規定する要求パラメータの1歩目および2歩目の遊脚側足平着地予定位置姿勢の要求値に応じて設定される。なお、ZMP軌道のY軸方向の位置は、前記図7の下段図に示したものと同様に設定される。より詳しくは、第1旋回歩容における目標ZMPのY軸方向位置の軌道は、図7の下段図のものと同一パターンで設定され、第2旋回歩容における目標ZMPのY軸方向位置の軌道は、第1旋回歩容のものと同じ形の軌道で、該軌道の終端につながるものに設定される。
図8のS010からS022までに示す処理が行われた後、S024に進み、定常歩容の初期状態が算出される。ここで算出される初期状態は、定常歩容の初期上体水平位置速度(水平方向での初期上体位置および初期上体速度)、初期上体鉛直位置速度(鉛直方向での初期上体位置および初期上体速度)、初期発散成分、初期上体姿勢角およびその角速度である。この初期状態の算出は探索的に行なわれる。
次いで、図8のS026に進み、今回歩容の歩容パラメータを決定(一部は仮決定)する。S026では、より具体的には、図11に示すフローチャートに従って、以下の処理が行われる。
まず、S600において、今回歩容の足平位置姿勢軌道が定常歩容の足平位置姿勢軌道につながるように、今回歩容の足平軌道パラメータが設定される。
次いで、S602に進み、今回歩容の基準上体姿勢軌道パラメータが、定常歩容の第1旋回歩容や第2旋回歩容と同様に決定される。但し、今回歩容の基準上体姿勢軌道が前記定常歩容の基準上体姿勢軌道に連続してつながる(今回歩容終端での基準上体姿勢角および角速度がそれぞれ定常歩容初期の基準上体姿勢角および角速度に一致する)ように上記パラメータが設定される。なお、本実施形態では、基準上体姿勢は、今回歩容および定常歩容のいずれでも定常的な鉛直姿勢である。
次いで、S604に進み、今回歩容の腕姿勢軌道パラメータが、定常歩容の第1旋回歩容や第2旋回歩容と同様に決定される。但し、今回歩容の腕姿勢軌道が前記定常歩容の腕姿勢軌道に連続してつながるように上記パラメータを設定する。なお、ここで決定される腕姿勢軌道パラメータは、定常歩容パラメータの決定(図9のS104)の場合と同様、鉛直軸(あるいは上体体幹軸)まわりの両腕体の角運動量変化に関すること以外の運動パラメータであり、両腕体の重心位置の軌道を規定するパラメータである。
次いで、S606に進み、今回歩容の床反力鉛直成分軌道パラメータが、定常歩容の第1旋回歩容や第2旋回歩容と同様、該パラメータにより規定される床反力鉛直成分軌道が前記図6のように実質的に連続な(値がステップ状に飛ばない)軌道になるように設定される。
但し、床反力鉛直成分軌道パラメータは、今回歩容の全体重心鉛直位置速度と床反力鉛直成分軌道とのいずれもが、前記定常歩容と連続してつながるように決定される。
次いで、S608に進み、床反力水平成分許容範囲[Fxmin,Fxmax](具体的には該床反力水平成分許容範囲のパターンを規定するパラメータ)が、定常歩容の第1旋回歩容や第2旋回歩容と同様に設定される。たとえば図12に示すようなパターンで床反力水平成分許容範囲が設定される。本実施形態では、先にS606で決定した床反力鉛直成分パターンに応じて前記式12に基づいて床反力水平成分許容範囲が設定される。
次いで、S610に進み、今回歩容のZMP軌道(具体的にはZMP軌道を規定するパラメータで、軌道の折れ点の時刻や位置)が、定常歩容の第1旋回歩容や第2旋回歩容と同様、安定余裕が高くかつ急激な変化をしないように、前記図7に示すごとく設定される。但し、今回歩容のZMP軌道が前記定常歩容のZMP軌道に連続してつながるように上記パラメータを設定される。つまり、今回歩容終端におけるZMPの位置が定常歩容初期のZMP位置に一致するように、ZMP軌道パラメータが決定される。この場合、走行歩容では、片脚支持期におけるZMP軌道の折れ点の時刻や位置の設定の仕方は、前述した定常歩容のZMP軌道パラメータの設定の仕方と同様でよい。そして、空中期における目標ZMP軌道が、空中期開始時から、定常歩容初期のZMP位置まで、直線的に連続して変化するようにZMP軌道パラメータを設定すればよい。
なお、S610で決定される今回歩容のZMP軌道パラメータは、仮決定されただけであり、後述するように修正される。そこで、上記のごとく設定した今回歩容のZMP軌道を、以降、今回歩容の仮目標ZMP軌道と呼ぶこととする。
S026に示す処理(今回歩容の歩容パラメータ決定処理)を行って後、次いでS028に進み、今回歩容の歩容パラメータ(ZMP軌道パラメータ)が修正される。この処理では、上体位置姿勢軌道を定常歩容に連続させ、または近づけるべくZMP軌道パラメータが修正される。
S028において今回歩容パラメータを修正した後、あるいはS016の判断結果がNOである場合には、S030に進み、修正された今回歩容パラメータに基づき、今回歩容瞬時値が決定される。
次いでS032に進み、スピン力をキャンセルする(ロボット1の腕以外の運動によって目標ZMP回りに発生する床反力モーメント鉛直成分を略零にする)ための腕動作が決定される。具体的には、腕を振らなかった場合の目標ZMPにおける床反力モーメント鉛直成分軌道(厳密には、腕を振らずに歩容を生成した場合において、ロボットの重力と慣性力の合力が目標ZMPに作用するモーメント鉛直成分軌道の各瞬時値の符号を反転したもの)が求められる。すなわち、S030の処理によって生成された歩容の運動(これには腕振りの運動は含まれていない)の瞬時値に釣り合う目標ZMP(瞬時値)回りの床反力モーメント鉛直成分で瞬時値が求められる。そして、これを、腕振り運動の等価慣性モーメントで割ることにより、スピン力キャンセルに必要な腕振り動作の角加速度が求められる。なお、補足すると、腕の振りが大き過ぎる場合には、等価慣性モーメントよりも大きな値で割れば良い。
次に、この角加速度を2階積分し、これを積分値が過大になるのを防ぐためのローカットフィルタに通して得た角度を腕振り動作角とする。但し、腕振り動作では、左右の腕を前後逆方向に振り、両腕体の重心位置を変化させないようにする。なお、スピン力をキャンセルするための腕振り運動を定常歩容でも生成しておき、これにつながるように、今回歩容における腕振り運動を決定するようにしてもよい。
次いでS034に進み、歩容生成用時刻tをΔtだけ増やし、S014に戻り、以上のごとく歩容生成を続ける。
以上が、歩容生成装置100における目標歩容生成処理である。
図4を参照して本実施形態に係る装置の動作をさらに説明すると、歩容生成装置100において、上記したように目標歩容が生成される。生成された目標歩容のうち、目標上体位置姿勢(軌道)、目標腕姿勢(軌道)が、ロボット幾何学モデル(逆キネマティクス演算部)102に送出される。
また、目標足平位置姿勢(軌道)、目標ZMP軌道(目標全床反力中心点軌道)、および目標全床反力(軌道)(目標床反力水平成分と目標床反力鉛直成分)は、複合コンプライアンス動作決定部104に送られると共に、目標床反力分配器106にも送られる。そして、目標床反力分配器106で、床反力は各足平22R,22Lに分配され、目標各足平床反力中心点および目標各足平床反力が決定される。この決定された目標各足平床反力中心点および目標各足平床反力は複合コンプライアンス動作決定部104に送られる。
複合コンプライアンス動作決定部104から、機構変形補償付き修正目標足平位置姿勢(軌道)がロボット幾何学モデル102に送られる。ロボット幾何学モデル102は、目標上体位置姿勢(軌道)と機構変形補償付き修正目標足平位置姿勢(軌道)を入力されると、それらを満足する脚体2,2の12個の関節(10R(L)など)の関節変位指令(値)を算出して変位コントローラ108に送る。変位コントローラ108は、ロボット幾何学モデル102で算出された関節変位指令(値)を目標値としてロボット1の12個の関節の変位を追従制御する。また、ロボット幾何学モデル102は、目標腕姿勢を満足する腕関節の変位指定(値)を算出して変位コントローラ108に送る。変位コントローラ108は、ロボット幾何学モデル102で算出された関節変位指令(値)を目標値としてロボット1の腕体の12個の関節の変位を追従制御する。
ロボット1に生じた床反力(詳しくは実各足床反力)は6軸力センサ34によって検出される。その検出値は前記複合コンプライアンス動作決定部104に送られる。また、ロボット1に生じた姿勢傾斜偏差θerrx,θerry(詳しくは目標上体姿勢角に対する実姿勢角の偏差で、ロール方向(X軸回り)の姿勢角偏差がθerrxであり、ピッチ方向(Y軸回り)の姿勢角偏差がθerryである)が傾斜センサ36を介して検出され、その検出値は姿勢安定化制御演算部112に送られる。この姿勢安定化制御演算部112で、ロボット1の上体姿勢角を目標上体姿勢角に復元するための目標全床反力中心点(目標ZMP)まわり補償全床反力モーメントが算出されて複合コンプライアンス動作決定部104に送られる。複合コンプライアンス動作決定部104は、入力値に基づいて目標床反力を修正する。具体的には、目標全床反力中心点(目標ZMP)回りに補償全床反力モーメントが作用するように目標床反力を修正する。
複合コンプライアンス動作決定部(目標接地部位軌道修正手段)104は、修正された目標床反力に、センサ検出値などから算出される実ロボットの状態および床反力を一致させようと上記機構変形補償付き修正目標足平位置姿勢(軌道)を決定する。但しすべての状態を目標に一致させることは事実上不可能であるので、これらの間にトレードオフ関係を与えて妥協的になるべく一致させる。すなわち、各目標に対する制御偏差に重みを与えて、制御偏差(あるいは制御偏差の2乗)の重み付き平均が最小になるように制御する。これにより、実際の足平位置姿勢と全床反力とが目標足平位置姿勢と目標全床反力とに概ね従うように制御される。
なお、上記した複合コンプライアンス動作決定部104などの構成および動作は、本出願人が先に出願した特開平10−277969号公報などに詳細に記載されているので、説明を以上に止める。
次に、ロボット1の歩行歩容の生成に関して説明する。なお、ここで、歩行歩容は、空中期がなく、片脚支持期と両脚支持期とが交互に繰り返される歩容である。
歩行歩容を生成する場合には、S106およびS606において以下のような処理を行う。すなわち、膝の曲げ角度が適切であるかなど、少なくとも各脚体の関節の変位に関する幾何学的条件(幾何学的制約条件)から決定した上体鉛直位置軌道(本出願人による特開平10−86080号公報に示される上体高さ決定手法などを用いた上体鉛直位置軌道)の位相や振幅などの特徴量をできる限り満足するように床反力鉛直成分軌道を決定する。
これにより、歩容生成のアルゴリズムの主要部を走行と歩行とで共通化しつつ、歩行途中から走行へ、または走行途中から歩行に移行することもできるようになる。
図14を用いてその処理を説明すると、まず、S1300において、本出願人が先に特開平10−86080号公報に提案した上体高さ決定法などを用いて、少なくとも各脚体2の関節の変位に関する所定の幾何学的制約条件を満足する上体鉛直位置軌道を求める。以降、これを基準上体鉛直位置軌道と呼ぶ。より具体的には、まず、要求パラメータに応じて決定した足平軌道パラメータや目標ZMP軌道パラメータなどを基に、本出願人が先に提案した特願2000−352011号の第1実施形態を用いて、上体水平位置軌道が求められる。なお、この場合、上体水平位置軌道は、床反力鉛直成分がロボット1の自重に一致し、また、上体鉛直位置が、あらかじめ定めた一定値であるとして、目標ZMP回りの床反力モーメントの水平成分が0になるように決定される。また、このときの上体姿勢軌道は例えば一定姿勢(鉛直姿勢等)の軌道でよい。
次に、本願出願人が先に提案した上体高さ決定法(特開平10−86080号公報。より具体的には同公報の図6の手法等)を用いて、足平軌道パラメータにより定まる足平軌道や上記の如く決定した上体水平位置軌道、上体姿勢軌道を基に上体鉛直位置軌道が算出され、これをもって前記基準上体鉛直位置軌道とする。
次にS1302に進み、基準上体鉛直位置軌道になるべく似た目標上体鉛直位置軌道を生成することが可能な床反力鉛直成分軌道を決定するために、基準上体鉛直位置軌道の振幅や位相などの特徴量が算出(抽出)される。例えば、基準上体鉛直位置軌道の振幅(最小値と最大値との差)が特徴量として算出される。
次にS1304に進み、床反力鉛直成分軌道パラメータを基に生成される上体鉛直位置軌道が、前記特徴量をできる限り満足し得るように(前記基準上体鉛直位置軌道にできるだけ似たパターンになるように)、床反力鉛直成分軌道パラメータ(折れ点での時刻や床反力鉛直成分の値)が決定される。より具体的には、歩行歩容の場合、定常歩容の第1旋回歩容と第2旋回歩容、および今回歩容の床反力鉛直成分軌道は、例えば、図13のような折れ線状に設定される。すなわち、両脚支持期では、床反力鉛直成分の増加側に凸(上に凸)の台形状に設定され、片脚支持期では床反力鉛直成分の減少側に凸(下に凸)の台形状に設定される。そして、この床反力鉛直成分軌道を歩容初期(両脚支持期の開始時刻)から終端(片脚支持期の終了時刻)まで2階積分して得られるロボット1の全体重心鉛直位置軌道に対応する上体鉛直位置軌道の最大値と最小値との差が前記特徴量に一致するように、床反力鉛直成分軌道パラメータ、例えば該床反力鉛直成分軌道の2つの台形の高さC1,C2が決定される(この例では床反力鉛直成分軌道の折れ点の時刻は歩容周期に関する要求パラメータに応じて決定される)。
但し、定常歩容の床反力鉛直成分軌道のパラメータは、前述のごとく以下の条件も満足するように決定される。
条件)床反力鉛直成分軌道の定常歩容全期間(第1旋回歩容と第2旋回歩容両方の期間)における平均値をロボットの自重と一致させる。すなわち、床反力鉛直成分の平均値がロボットに作用する重力と同じ大きさで反対向きになるようにする。
また、今回歩容の床反力鉛直成分軌道のパラメータは、前述のごとく、上体(全体重心)鉛直位置軌道が定常歩容に連続してつながるあるいは近づくように決定される。
以上により、歩行歩容における目標床反力鉛直成分軌道(これを規定するパラメータ)が決定されることとなる。以上説明した目標床反力鉛直成分軌道の決定処理以外の歩容生成処理は、前記した走行歩容に係る実施形態と同一でよい。
上記のごとく基準上体鉛直位置軌道を求めるために要する演算量はかなり多いので、定常歩容の運動パラメータ(足平軌道パラメータなど)と上体(全体重心)鉛直位置軌道の特徴量(振幅など)との関係を表すマップをあらかじめ作成して記憶しておいて、与えられた定常歩容パラメータから、上記マップを参照することで、特徴量を求めるようにしてもよい。
前記図8のS032における、スピン力をキャンセルする腕振り動作の代わりに、上体24をその体幹軸(あるいは鉛直軸)まわりに回転させる(ひねる)動作を行っても良い。あるいは、腕振り動作と上体24をその体幹軸(あるいは鉛直軸)まわりに回転させる(ひねる)動作とを併用しても良い。
本願発明は、目標床反力が足平22に作用したときのコンプライアンス機構42の変形量が補償されるように、足平22の離床期(=脚体2の遊脚期)から着床期(=脚体2の着地期)の移行時における足平22が鉛直方向下方または床面法線方向下方に所定速度を有するように脚体2の動作が制御される点に特徴がある。この特徴について図15〜図18を用いて説明する。
脚体2の動作の当該制御方法の第1実施例について図15および図16を用いて説明する。
まず、足平(接地部位)22が床に着いているか否か、すなわち、着床期であるか離床期であるかが判定される(S2100)。
着床期であると判定された場合(S2100・・YES)、足平22に作用する床反力の目標瞬時値としての目標床反力瞬時値に基づき、コンプライアンス機構42の機構変形量が算出される(S2102)。そして、目標足平位置姿勢軌道と、当該機構変形量とに基づいて、機構変形補償付き修正足平位置姿勢軌道が決定される(S2104)。
具体的には、図16(a)に示されている着床期における目標床反力(瞬時値)の鉛直方向成分または床面垂線方向成分に基づき、着床期における機構変形量の鉛直方向成分または床面法線方向成分が、図16(b)に示されているように、着床期の開始後に0から連続的に増加し、一定に維持されてから着床期の終了時までに0まで連続的に減少するものとして算出される。また、図16(b)に示されている着床期における機構変形量の鉛直方向成分または床面法線方向成分に基づき、着床期における機構変形補償量の鉛直方向成分または床面法線方向成分が図16(c)に実線で示されているように、着床期の開始後に0から連続的に減少し、一定に維持されてから着床期の終了時までに0まで連続的に増加するものとして算出される。
さらに、図16(d)に破線で示されているように、0に設定された着床期における目標足平高さ(今回歩容の足平軌道パラメータ決定(S600))と、図16(c)に実線で示されている着床期における機構変形補償量の鉛直方向成分または床面法線方向成分とに基づき、着床期における機構変形補償付き修正目標足平高さが、図16(d)に実線で示されているように、着床期の開始後に0から連続的に減少し、一定に維持されてから着床期の終了時までに0まで連続的に増加するものとして決定される。
一方、離床期であると判定された場合(S2100・・NO)、上方ずれパターンが決定され(S2106)、上方ずれ瞬時値が算出された上で(S2108)、当該上方ずれ瞬時値と、目標足平位置姿勢軌道とに基づいて、機構変形補償付き修正足平位置姿勢軌道が決定される(S2110)。
具体的には、離床期における足平22の上方ずれ量が、図16(c)に破線で示されているように、離床期の開始後に0から増加してから若干減少し、再び増加した後、離床期の終了時までに0に減少するものとして決定される。そして、図16(c)に破線で示されている上方ずれ量(瞬時値)と、図16(d)に破線で示されているように設定された離床期における目標足平高さ(S600)とに基づき、離床期における機構変形補償付き修正目標足平高さが、図16(d)に実線で示されているように、着床期の開始後に0から連続的に増加し、一定に維持されてから着床期の終了時までに0まで連続的に減少するものとして決定される。
第1実施例では、目標足平高さ(図16(d)破線参照)が、着床期においては機構変形補償量の鉛直方向成分または床面法線方向成分(図16(c)実線参照)により下方に修正され、且つ、離床期においては上方ずれ量(図16(c)破線参照)により上方に修正されたものが、図16(d)に実線で示されているように、離床期から着床期への移行直前および直後、さらには着床期から離床期への移行直前および直後において滑らかに連続して変化する修正目標高さとして設定される。また、着床の瞬間において、床面に対する足平(接地部位)22の速度の鉛直方向成分または床面垂線方向成分が、着床直後の目標床反力によって発生するコンプライアンス機構の機構変形量の鉛直方向成分または床面垂線方向成分の変化率の絶対値に対して[0.1,10]の範囲内の比率となるように修正目標高さが設定される。
そして、複合コンプライアンス制御部104により設定された足平高さ(機構変形補償付き修正目標位置姿勢軌道)に従って、関節変位コントローラ108等によって左右の脚体2の動作が制御される。
これにより、足平22に作用する実床反力の鉛直方向成分または床面法線方向成分は図16(e)に示されているように、足平22の目標床反力の鉛直方向成分または床面法線方向成分(図16(a)参照)に追従性よく変化する。従って、図19(e)に示されているように非接地期から接地期への移行直後にロボット1の衝撃が過大となったり、接地期から非接地期への移行時に荷重抜けが悪くなって足平22の一部が床面に引っかかったりする事態を回避し、ロボット1を安定に制御することができる。言い換えると、本願発明のロボットによれば、着床時の脚体への衝撃を緩和するとともに、離床時の脚体の足平の一部の床への引っかかり回避するという観点から、移動中のロボット1の脚体が床面を踏みしめる力がコンプライアンス機構42の着床衝撃緩和特性に応じて適切に制御され得る。
脚体2の動作の当該制御方法の第2実施例について図17および図18を用いて説明する。
まず、足平(接地部位)22が床に着いているか否か、すなわち、足平22が着床期にあるか離床期にあるかが判定される(S2200)。
足平22が着床期にあると判定された場合(S2200・・YES)、目標床反力瞬時値に基づいて機構変形量が算出された上で(S2202)、目標足平位置姿勢軌道と、当該機構変形量とに基づいて、機構変形補償付き修正足平位置姿勢軌道が決定される(S2210)。
具体的には、図18(a)に示されている着床期における目標床反力(瞬時値)の鉛直方向成分または床面垂線方向成分に基づき、着床期における機構変形量の鉛直方向成分または床面法線方向成分が、図18(b)に示されているように、着床期の開始後に0から連続的に増加し、一定に維持されてから着床期の終了時までに0まで連続的に減少するものとして算出される。また、図18(b)に示されている着床期における機構変形量の鉛直方向成分または床面法線方向成分に基づき、着床期における機構変形補償量の鉛直方向成分または床面法線方向成分が図18(c)に示されているように、着床期の開始後に0から連続的に減少し、一定に維持されてから着床期の終了時までに0まで連続的に増加するものとして算出される。
さらに、図18(d)に破線で示されているように、0に設定された着床期における目標足平高さ(今回歩容の足平軌道パラメータ決定(S600))と、図18(c)に実線で示されている着床期における機構変形補償量の鉛直方向成分または床面法線方向成分とに基づき、着床期における機構変形補償付き修正目標足平高さが、図18(d)に実線で示されているように、着床期の開始後に0から連続的に減少し、一定に維持されてから着床期の終了時までに0まで連続的に増加するものとして決定される。
一方、足平22が離床期にあると判定された場合(S2200・・NO)、仮想的な負の目標床反力パターンが決定され(S2204)、仮想の目標床反力の瞬時値が算出され(S2206)、且つ、任意の目標床反力の瞬時値に基づいて機構変形量が算出された上で(S2208)、目標足平位置姿勢軌道と、当該機構変形量とに基づいて、機構変形補償付き修正足平位置姿勢軌道が決定される(S2210)。
具体的には、図18(a)に示されているように、離床期において、目標床反力(瞬時値)の鉛直方向成分または床面垂線方向成分が、仮想的に離床期の開始後に0から連続的に減少し、増加した後、再び減少し、離床期の終了時までに0まで連続的に増加するものとして決定される。また、図18(a)に示されている仮想的な負の目標床反力の鉛直方向成分または床面法線方向成分に基づき、離床期における機構変形量の鉛直方向成分または床面法線方向成分が、図16(b)に示されているように、離床期の開始後に0から連続的に減少し、増加した後、再び減少し、離床期の終了時までに0まで連続的に増加するものとして算出される。また、図18(b)に示されている離床期における機構変形量の鉛直方向成分または床面法線方向成分に基づき、離床期における機構変形補償量の鉛直方向成分または床面法線方向成分が図18(c)に示されているように、離床期の開始後に0から連続的に増加し、減少した後、再び増加し、離床期の終了時までに0まで連続的に減少するものとして算出される。
さらに、図18(d)に破線で示されている離床期における目標足平高さ(今回歩容の足平軌道パラメータ決定(S600))と、図18(c)に示されている離床期における機構変形補償量の鉛直方向成分または床面法線方向成分とに基づき、離床期における機構変形補償付き修正目標足平高さが、図18(d)に実線で示されているように、着床期の開始後に0から連続的に増加し、一定に維持されてから離床期の終了時までに0まで連続的に減少するものとして決定される。
第2実施例では目標足平高さ(図18(d)破線参照)が、着床期においては正の目標床反力(図18(a)参照)に応じた機構変形補償量の鉛直方向成分または床面法線方向成分(図18(c)参照)により下方に修正され、離床期においては仮想的な負の目標床反力(図18(a)参照)に応じた機構変形補償量の鉛直方向成分または床面法線方向成分(図18(c)参照)により上方に修正されたものが、図18(d)に実線で示されているように、離床期から着床期への移行直前および直後、さらには着床期から離床期への移行直前および直後において滑らかに連続して変化する修正目標高さとして設定される。また、着床の瞬間において、床面に対する足平(接地部位)22の速度の鉛直方向成分または床面垂線方向成分が、着床直後の目標床反力によって発生するコンプライアンス機構の機構変形量の鉛直方向成分または床面垂線方向成分の変化率の絶対値に対して[0.1,10]の範囲内の比率となるように修正目標高さが設定される。
そして、複合コンプライアンス制御部104により設定された足平高さ(機構変形補償付き修正目標位置姿勢軌道)に従って、関節変位コントローラ108等によって左右の脚体2の動作が制御される。
これにより、足平22に作用する実床反力の鉛直方向成分または床面法線方向成分は図18(e)に示されているように、足平22の目標床反力の鉛直方向成分または床面法線方向成分(図18(a)参照)に追従性よく変化する。従って、図19(e)に示されているように離床期から着床期への移行直後にロボット1の衝撃が過大となったり、着床期から離床期への移行時に荷重抜けが悪くなって足平22の一部が床面に引っかかったりする事態を回避し、ロボット1を安定に制御することができる。言い換えると、本願発明のロボットによれば、着床時の脚体への衝撃を緩和するとともに、離床時の脚体の足平の一部の床への引っかかりを回避するという観点から、移動中のロボット1の脚体が床面を踏みしめる力がコンプライアンス機構42の着床衝撃緩和特性に応じて適切に制御され得る。
目標床反力により脚体2の足平(接地部位)22の着床直後に発生するコンプライアンス機構42の変形量の鉛直方向または床面垂線方向の変化率の絶対値に対する、着床の瞬間における足平22の鉛直方向下方または床面垂線方向下方への速度は、着床時の脚体2への衝撃、および離床時の荷重抜けに影響を及ぼす因子である。本願発明者の得た知見によれば、当該比率が「0.1」未満である場合、着床時の脚体2への衝撃を低減する能力が急激に低下し、また、離床時に荷重抜けが悪くなって足平22の一部が床面に引っかかる可能性が急激に高くなる。一方、当該比率が「10」を超えている場合、離床時の荷重抜けは良好であるものの、着床時の脚体2への負荷が、一時的とはいえ目標床反力の最大値を超える可能性が高くなる。従って、かかる知見に鑑みて、当該比率が[0.1,10]に収まるように脚体2の動作が制御されることで、着床時の脚体2への衝撃を緩和しつつ、離床時の荷重抜けを良好なものとして、ロボット1の動作を安定に制御することができる。