図1は、本実施例に係るロボット歩行を説明する図である。ここで、ロボットの右脚は実線で、ロボットの左脚は点線で表されている。ここでは、あらかじめロボットの歩行運動中のさまざまな姿勢を定義する複数のフレームPiがロボット制御装置に設定される。正確には、フレームはロボットの関節の角度などのパラメータを定義する。
図1では、P0からP11までの12のフレームが設定されている。ただし、このフレーム数は任意である。フレームP0は、ロボットが倒れることなく単独で立っている歩行前の姿勢を表している。フレームP1,P6,P11は、ロボットが倒れることなく単独で立って、動かないでいる姿勢である。
たとえば、フレームP6では、ロボットのリニア速度は0であり、ロボットは左脚のみで立っており、歩幅は0である。フレームP1とフレームP11のロボットの状態は同じである。すなわち、これらのフレームP1,P11においては、ロボットのリニア速度は0であり、ロボットは右脚のみで立っており、歩幅は0となっている。歩幅が0とは、ロボットの両脚が揃っていることを意味する。フレームP1,P6,P11においては、ロボットは単独で立っており、また、歩幅は0であるので、これらのフレームをリファレンスフレームと呼ぶこととする。
あるフレームから別のフレームへの切り替えは、すべての介在するフレームの姿勢を補間することにより行われる。また、リファレンスフレーム以外のフレームにおける各姿勢は大まかに定義されたものであり、これらの各姿勢は歩行が安定的に行われるように適宜修正される。
図2は、各フレームP0〜P11の状態遷移図である。ロボットの状態は、フレームP0からリファレンスフレームP1(リファレンスフレームP11と同じ)あるいはリファレンスフレームP6に遷移する。また、ロボットの状態は、リファレンスフレームP1あるいはリファレンスフレームP6からフレームP0に遷移することもできる。図1の例では、まず、フレームP0からリファレンスフレームP1にロボットの状態が遷移する。その後、ロボットの状態は、リファレンスフレームP2からリファレンスフレームP10を経由してリファレンスフレームP11に遷移する。
このように、ロボットが転倒することなく単独で立っているリファレンスフレームP1,P6,P11を含むフレーム情報を取得し、ロボットの動作がリファレンスフレームP1,P6,P11の姿勢となるようフレームP0〜P11の間で姿勢を補間することにより、ロボットの状態が制御される。その結果、たとえロボットの姿勢が不安定になった場合でも、リファレンスフレームでは姿勢が安定な状態となる。すなわち、ロボットは歩行運動を安定して継続することができる。
また、リファレンスフレームP6,P11では、ロボットは歩行を停止し、安定して立っている状態なので、それ以降の歩行の歩幅を変更したり、歩行する方向を変更したり、あるいは、歩行以外の運動を開始したりすることが容易にできる。
図3は、本実施例に係るロボットの概略図である。このロボットは、胴体20、胴体に備えられたジャイロセンサ60、右脚30Rおよび左脚30Lの2本の脚を有する。また、各脚は6つの関節を有する。すなわち、各脚の自由度は6である。なお、関節の数は任意である。
関節は、ピッチ腰関節10、右ヨー股関節11R、左ヨー股関節11L、右ロール股関節12R、左ロール股関節12L、右ピッチ股関節13R、左ピッチ股関節13L、右ピッチ膝関節14R、左ピッチ膝関節14L、右ピッチ足首関節15R、左ピッチ足首関節15L、右ロール足首関節16R、左ロール足首関節16Lを含む。各関節には、モータ(図示せず)が組み込まれている。各関節のモータは、それぞれの関節の動きを制御する。また、各関節には位置センサ(図示せず)が組み込まれている。各関節の位置センサは、それぞれの関節の動き、具体的には回転角度を検出する。
ピッチ腰関節10は、胴体20の前後の動き(ピッチング)を制御する。右ヨー股関節11Rおよび左ヨー股関節11Lは、それぞれの脚の付け根部分におけるロボットの左右に回転する動き(ヨーイング)を生じさせる。
右ロール股関節12Rおよび左ロール股関節12Lは、それぞれの脚の付け根部分におけるロボットの横向きの回転(ローリング)を生じさせる。右ピッチ股関節13Rおよび左ピッチ股関節13Lは、それぞれの脚の付け根部分におけるロボットの前後の回転(ピッチング)を生じさせる。
また、右ピッチ膝関節14Rおよび左ピッチ膝関節14Lは、それぞれの膝部分におけるロボットの前後の動き(ピッチング)を生じさせる。右ピッチ足首関節15Rおよび左ピッチ足首関節15Lは、それぞれの足首部分におけるロボットの前後の動き(ピッチング)を生じさせる。右ロール足首関節16Rおよび左ロール足首関節16Lは、それぞれの足首部分におけるロボットの横向きの動き(ローリング)を生じさせる。
また、それぞれの脚には、足裏が取り付けられている。図3には、左脚30Lに取り付けられた足裏40が示されている。それぞれの足裏には、4つの力センサが組み込まれている。なお、力センサの数は任意である。図3には、足裏40に備えられた力センサ50a〜50dが示されている。これらの力センサは、足裏40が床面から受ける反力を測定する。力センサにより測定された反力は、ロボットの動きのコンプライアンス制御およびフィードバック制御に用いられる。
ジャイロセンサ60は、横向き(ローリング)方向および前後(ピッチング)方向の胴体20の回転角度を測定する。ジャイロセンサ60により測定された回転角度は、ロボットの動きのフィードバック制御に用いられる。
図4は、ロボットの歩行運動を説明するタイムチャートである。時間t0で、右ロール股関節12R、左ロール股関節12L、右ロール足首関節16R、左ロール足首関節16Lは、左脚を持ち上げるため、両脚をロボットの右側に傾けるローリングの動作を行う。この動作を行う場合、右ロール股関節12R、左ロール股関節12L、右ロール足首関節16R、左ロール足首関節16Lの動きは、ギアバックラッシュ補償の分だけわずかに異なるものとなる。
ローリング動作の振幅は、試行錯誤により決定される。あるいは、ローリング動作の振幅は、胴体20のローリング角の評価関数が最小となるようにフィードバック制御を行うことにより決定される。
時間t1では、右ロール股関節12R、左ロール股関節12L、右ロール足首関節16R、左ロール足首関節16Lはローリングの動作を停止する。そして、左脚を持ち上げるため、すなわち、左脚のリフティング操作を行うため、左ピッチ膝関節14Lは、左脚を縮めるように回転し、左ピッチ足首関節15Lは、左足首を縮めるように回転する。
時間t2では、左ピッチ膝関節14Lおよび左ピッチ足首関節15Lはリフティングの動作を停止する。そして、右ピッチ股関節13Rおよび右ピッチ足首関節15Rは回転して、胴体20が前方に移動するようピッチングの動作を行う。
時間t2と時間t3の間では、右ピッチ股関節13Rおよび右ピッチ足首関節15Rは、ピッチングの動作を停止する。
時間t3では、左ピッチ膝関節14Lは、左脚を床面に着地させるため、左脚を伸ばすように回転し、左ピッチ足首関節15Lは、左足首を伸ばすように回転する。
時間t4では、左脚が床面に着地する。加えて、右ロール股関節12R、左ロール股関節12L、右ロール足首関節16R、左ロール足首関節16Lは、右脚を持ち上げるため、両脚をロボットの左側に傾けるローリングの動作を行う。さらに、右ピッチ股関節13Rおよび右ピッチ足首関節15Rは、元の状態、すなわち、時間t2における状態に戻るように回転する。さらに、右脚を前方に振り出すため、左ピッチ股関節13Lおよび左ピッチ足首関節15Lは回転して、胴体20が前方に移動するようピッチングの動作を行う。
時間t4と時間t5の間では、右ピッチ股関節13Rおよび右ピッチ足首関節15Rは元の状態に戻るとともに、左ピッチ股関節13Lおよび左ピッチ足首関節15Lはピッチングの動作を停止する。
そして、時間t5では、右ロール股関節12R、左ロール股関節12L、右ロール足首関節16R、左ロール足首関節16Lはローリングの動作を停止する。さらに、右脚を持ち上げるため、すなわち、右脚のリフティング操作を行うため、右ピッチ膝関節14Rは、右脚を縮めるように回転し、右ピッチ足首関節15Rは、右足首を縮めるように回転する。
時間t6では、右ピッチ膝関節14Rおよび右ピッチ足首関節15Rはリフティングの動作を停止する。さらに、左ピッチ股関節13Lおよび左ピッチ足首関節15Lは、元の状態、すなわち、時間t4における状態に戻るように回転する。その結果、ロボットの姿勢が、リファレンスフレームP6で定義される姿勢に設定される。
時間t6と時間t7の間では、左ピッチ股関節13Lおよび左ピッチ足首関節15Lは元の状態に復帰する。その結果、ロボットの姿勢が、リファレンスフレームP6で定義される姿勢に設定される。すなわち、ロボットのリニア速度は0であり、ロボットは左脚のみで立っており、歩幅は0となる。
時間t7では、右脚を前方に振り出すため、左ピッチ股関節13Lおよび左ピッチ足首関節15Lは回転して、胴体20が前方に移動するようピッチングの動作を行う。
時間t7と時間t8の間では、左ピッチ股関節13Lおよび左ピッチ足首関節15Lは、ピッチングの動作を停止する。時間t8では、右脚を床面に着地させるため、右ピッチ膝関節14Rは、右脚を伸ばすように回転し、右ピッチ足首関節15Rは、右足首を伸ばすように回転する。
時間t9では、右脚が床面に着地する。加えて、右ロール股関節12R、左ロール股関節12L、右ロール足首関節16R、左ロール足首関節16Lは、左脚を持ち上げるため、両脚をロボットの右側に傾けるローリングの動作を行う。さらに、左脚を前方に振り出すため、右ピッチ股関節13Rおよび右ピッチ足首関節15Rは回転して、胴体20が前方に移動するようピッチングの動作を行う。さらに、左ピッチ股関節13Lおよび左ピッチ足首関節15Lは、元の状態、すなわち、時間t7における状態に戻るように回転する。
時間t10では、右ロール股関節12R、左ロール股関節12L、右ロール足首関節16R、左ロール足首関節16Lはローリングの動作を停止する。さらに、左脚を持ち上げるため、すなわち、左脚のリフティング操作を行うため、左ピッチ膝関節14Lは、左脚を縮めるように回転し、左ピッチ足首関節15Lは、左足首を縮めるように回転する。
時間t11では、左ピッチ膝関節14Lおよび左ピッチ足首関節15Lはリフティングの動作を停止する。さらに、右ピッチ股関節13Rおよび右ピッチ足首関節15Rは、元の状態、すなわち、時間t9における状態に戻るように回転する。その結果、ロボットの姿勢が、リファレンスフレームP11で定義される姿勢に設定される。
時間t11以後、右ピッチ股関節13Rおよび右ピッチ足首関節15Rは元の状態に復帰する。その結果、ロボットの姿勢が、リファレンスフレームP11で定義される姿勢に設定される。すなわち、ロボットのリニア速度は0であり、ロボットは右脚のみで立っており、歩幅は0となる。このような動きを繰り返すことにより、ロボットの歩行運動が実現される。
図5は、本実施例に係るロボット制御システムの機能ブロック図である。このロボット制御システムは、外部端末装置100とロボット110とを含む。
外部端末装置100は、ロボットの動作を管理するオペレータにより操作されるパーソナルコンピュータなどである。この外部端末装置100は、ロボット110との間で通信を行う。この通信は、さまざまな種類の情報の授受を含むものである。
この外部端末装置100は、あらかじめ設定したロボット110のフレーム情報および/またはロボット110への指令情報などをロボット110に送信したり、ロボット110からロボット110の状態(姿勢や速度など)に係る情報などを受信する。ロボット110から得られた情報は、表示装置(図示せず)に表示される。
ロボット110は、たとえば2本脚のヒューマノイドロボットである。このロボット110は、ジャイロセンサ111、ジャイロセンサ制御部112、関節1131〜113n、関節制御部1141〜114n(nは自然数)、力センサ1151〜115m(mは自然数)、力センサ制御部1161〜116m、位置センサ1171〜117n、位置センサ制御部1181〜118n、距離センサ1191〜1192、距離センサ制御部1201〜1202、通信インターフェース121、メモリ122、中央制御部123を有する。
ジャイロセンサ111は、図3に示したジャイロセンサ60と同様の機能を有する。このジャイロセンサ111は、ロボット110の胴体20に備えられ、横向き(ローリング)方向および前後(ピッチング)方向の胴体20の回転角度を測定する。ジャイロセンサ制御部112は、ジャイロセンサ111の機能を制御するとともに、ジャイロセンサ111により測定された回転角度の情報を中央制御部123に送信する。
関節1131〜113nは、ロボット110のさまざまな関節を動かすものである。モータ(図示せず)がこれらの関節を駆動させる。関節には、図3で説明したピッチ腰関節10、右ヨー股関節11R、左ヨー股関節11L、右ロール股関節12R、左ロール股関節12L、右ピッチ股関節13R、左ピッチ股関節13L、右ピッチ膝関節14R、左ピッチ膝関節14L、右ピッチ足首関節15R、左ピッチ足首関節15L、右ロール足首関節16R、左ロール足首関節16Lが含まれる。
関節制御部1141〜114nは、各関節1131〜113nの動作を制御する。特に、関節制御部1141〜114nは、関節1131〜113nが所定の時間に、所定の角速度で所定の角度だけ回転するよう制御する。この角度、角速度、時間は中央制御部123により指定される。
力センサ1151〜115mは、ロボット110の右脚および左脚の足裏に設けられる。この力センサ1151〜115mは、床面からの反力を測定する。また、この力センサ1151〜115mは、図3で説明した力センサ50a〜50dと同様の機能を有する。力センサ制御部1161〜116mは、力センサ1151〜115mの機能を制御するとともに、力センサ1151〜115mにより測定された反力の情報を中央制御部123に送信する。
位置センサ1171〜117nは、各関節1131〜113nに取り付けられ、各関節1131〜113nの位置を検出するセンサであり、具体的には各関節1131〜113nの回転角度を検出する。位置センサ制御部1181〜118nは、各位置センサ1171〜117nの動作を制御するとともに、位置センサ1171〜117nにより測定された位置情報を中央制御部123に送信する。
距離センサ1191〜1192は、歩行面が高くなる段差を検出するセンサであり、右脚および左脚の前方に設けられる。距離センサ制御部1201〜1202は、各距離センサ1191〜1192の動作を制御するとともに、距離センサ1191〜1192により歩行面が高くなる場合に、その情報を中央制御部123に送信する。
通信インターフェース121は、外部端末装置100との間で通信を行う。この通信インターフェース121は、外部端末装置100との間で無線通信および/または有線通信を行う。
メモリ122は、さまざまな情報を記憶する。たとえば、メモリ122は、外部端末装置100から受信した情報および/または外部端末装置100に送信される情報を記憶するとともに、中央制御部123によりなされた種々の演算の結果に係る情報を記憶する。
中央制御部123は、ロボット110を全体制御する。この中央制御部123は、たとえば、外部端末装置100から受信したフレーム情報を基にして、ロボット110が動作する際の各関節1131〜113nの回転開始時間、角速度、回転角などを算出し、その結果を関節制御部1141〜114nに送信する。
また、中央制御部123は、外部端末装置100から通信インターフェース121を介してロボット110の動作制御要求を受け付ける。動作制御要求とは、歩幅の変更要求や歩行方向の変更要求、あるいは歩行以外の動作の実行要求を含むものである。
中央制御部123は、リファレンスフレームP1,P6,P11の姿勢が実現された後にのみ、上記要求を実行する。要求を実行する際には、中央制御部123は、要求された動作に対応する関節1131〜113nの回転開始時間、角速度、回転角などの情報を関節制御部1141〜114nに送信する。リファレンスフレームP1,P6,P11においては、ロボット110は、片足で安定して立っているので、ロボット110がリファレンスフレームP1,P6,P11に対応する姿勢で立っている場合に上記要求を実行することは都合がよいことである。
なお、ここでは、中央制御部123がさまざまなパラメータを算出することとしているが、外部端末装置100がそれらを算出し、ロボットを制御する構成を採用することとしてもよい。このような構成を採用する場合には、外部端末装置100は、回転開始時間、角速度、回転角などの算出に必要な情報をロボット110から受信し、受信した情報に基づいて各パラメータを算出する。関節制御部1141〜114nは、外部端末装置100から算出結果の情報を受信し、受信した情報に基づいてロボット110の動作制御を行う。
以下に、中央制御部123が行うロボット制御処理について詳細に説明する。図6は、中央制御部123の構成を示す機能ブロック図である。同図に示すように、この中央制御部123は、動作生成部123aと、コンプライアンス制御部123bと、フィードバック制御部123cと、反射制御部123dと、補正部123eとを有する。
動作生成部123aは、外部端末装置100から通信インターフェース121を介して受信したフレーム情報を基にして、ロボット110が動作する際の各関節1131〜113nの回転開始時間、角速度、回転角などを算出し、補正部123eに出力する処理部である。また、この動作生成部123aは、ロボット110がローリングフェーズ、リフティングフェーズ、着地(ランディング)フェーズうちのどのフェーズにあるかのフェーズ情報をコンプライアンス制御部123bおよびフィードバック制御部123cに渡す。
コンプライアンス制御部123bは、力センサ1151〜115mによって測定された力センサデータおよび動作生成部123aからのフェーズ情報に基づいて着地動作などのコンプライアンス制御を行う処理部であり、コンプライアンス制御量を算出して補正部123eに出力する。
フィードバック制御部123cは、ジャイロセンサ111によって測定されたジャイロセンサデータに基づくジャイロフィードバック制御および力センサ1151〜115mによって測定された力センサデータに基づくZMPフィードバック制御を行う処理部であり、フィードバック制御量を算出して補正部123eに出力する。
反射制御部123dは、周期的な歩行動作に対して発生する想定外の事象を検出し、反射制御を行う処理部であり、力センサ1151〜115mによって測定された力センサデータ、位置センサ1171〜117nによって測定された位置センサデータ、距離センサ1191〜1192によって測定された距離センサデータ、ジャイロセンサ111によって測定されたジャイロセンサデータを用いてロボット110に対する外乱、スイングした脚の着地点に置かれた障害物、歩行面の上下段差、ロボット110が保持する荷物の落下を想定外の事象として検出する。
図7は、反射制御部123dによる反射制御の考え方を説明するための説明図である。同図に示すように、この反射制御部123dは、ロボット110の状態が各フレームに対応する状態を遷移するときに、想定外の事象を検出すると、想定外の状態jに一端遷移し、想定外の状態jから通常の状態に戻るように制御する。このとき、反射制御部123dは、ロボット110の慣性変化を最小にするような想定外の状態jに遷移する。このように、ロボット110の慣性変化を最小にするような想定外の状態jに遷移することによって、安定した反射制御を行うことができる。
補正部123eは、動作生成部123aが各関節1131〜113nに対して算出した回転開始時間、角速度、回転角などをコンプライアンス制御部123b、フィードバック制御部123cおよび反射制御部123dの出力で補正し、各関節1131〜113nのモータに対するコマンドを出力する処理部である。
次に、反射制御部123dによる反射制御の詳細について、ロボット110に対する大きな外乱、スイングした脚の着地点に置かれた障害物、歩行面の上下段差、ロボット110が保持する荷物の重さが突然変化したときを想定外の事象として順に説明する。
図8は、大きな外乱に対する反射制御を説明するための説明図である。ここで、大きな外乱とは、ロボット110が外部から押されるなどによって受ける大きな力のことである。また、図8では、ロボット110が歩行中に右脚で片脚立ちをしている場合の通常のZMPの軌跡を太い矢印で示している。
ロボット110が歩行中に外乱を受けると、外乱を受けた方向によって、ZMPは通常の軌跡からはずれるが、反射制御部123dは、ZMPが図8に示すa、b、c、dのいずれの領域に移動したかを判定し、ZMPの移動したa、b、c、dの各領域に予め対応付けられたフレームの状態にロボット110の状態が遷移するように制御する。例えば、ロボット110が右後方から押されるとZMPはaの領域に移動し、反射制御部123dは、aの領域に予め対応付けられたフレームの状態にロボット110の状態が遷移するように制御する。なお、各領域とフレームの対応付けは学習によって行われる。
また、反射制御部123dは、ZMPが図8に示すa、b、c、dのいずれの領域に移動したかを判定するために、力センサデータを用いてZMPを計算する。図9は、反射制御部123dによるZMPの計算法を示す図である。同図に示すように、反射制御部123dは、4つの力センサデータF1〜F4および力センサが取り付けられた座標を用いてZMP(xm,ym)を計算する。
図10は、大きな外乱に対する歩行制御処理の処理手順を示すフローチャートである。同図に示すように、この歩行制御処理では、中央制御部123は、ロボット110が片脚立ちの時のZMPを記録し(ステップS101)、ジャイロセンサの|測定値|が所定の閾値より小さいか否かを判定する(ステップS102)。その結果、ジャイロセンサの|測定値|が所定の閾値より小さい場合には、大きな外乱が発生していないので、通常の歩行制御を行う(ステップS103)。
一方、ジャイロセンサの|測定値|が所定の閾値より小さくない場合には、大きな外乱が発生した場合なので、反射制御部123dは、ロボット110の歩行動作を停止し(ステップS104)、ZMPの移動位置が図8に示したa〜dのいずれの領域であるかを特定する(ステップS105)。
そして、反射制御部123dは、特定した領域に対応するフレームを特定し(ステップS106)、位置センサが測定した現在位置から、特定したフレームに移行するように動作を生成して補正部123eに出力する(ステップS107)。そして、中央制御部123は、コンプライアンス制御およびフィードバック制御を起動する(ステップS108)。
このように、反射制御部123dが、大きな外乱が発生した場合に、ロボット110の歩行動作を停止し、ZMPの移動位置に基づいて特定したフレームに移行するロボット110の動作を生成することによって、大きな外乱が発生した場合にもロボット110を対応させることができる。
図11は、大きな外乱に対する反射制御例を示す図である。同図(1)は、ロボット110が右片脚立ちのときに斜め前方へ押され、ZMPが領域aに移動した場合の例を示す。同図(2)は、ロボット110が右片脚立ちのときに後方へ押され、ZMPが領域bに移動した場合の例を示す。同図(3)は、ロボット110が右片脚立ちのときに斜め後方へ押され、ZMPが領域bとdの間に移動した場合の例を示す。同図(3)では、反射制御部123dは、領域bに対応するフレームと領域dに対応するフレームを補間するフレームを生成し、生成したフレームにロボット110が移行するように制御する。
図12および図13は、スイングした脚の着地点に置かれた障害物に対する反射制御を説明するための説明図である。図12に示すようにスイング脚の力センサで障害物が検出されると、反射制御部123dは、スイング脚を元の位置に戻すように制御する。したがって、ZMPは、図13に示すように、スイング脚から支持脚に戻る。なお、スイング脚の力サンサで障害物を検出するために、コンプライアンス制御のゲインは大きく設定される。
図14は、着地点に置かれた障害物に対する歩行制御処理の処理手順を示すフローチャートである。同図に示すように、この歩行制御処理では、中央制御部123は、コンプライアンス制御のゲインを大きく設定し(ステップS201)、障害物を検出しない間は(ステップS202、否定)、通常の歩行制御を行う(ステップS203)。
一方、中央制御部123が障害物を検出すると(ステップS202、肯定)、反射制御部123dは、動作生成部123aに指示して、腰を支持脚に戻すとともに、他の関節の動きをスムーズに停止する(ステップS204)。
そして、反射制御部123dは、動作生成部123aに指示して、ゲート時間(歩行動作時間)を増加し、スイング脚を元に戻す(ステップS205)。その後、中央制御部123は、上位制御に従って動作を継続する(ステップS206)。なお、ステップS204およびステップS205の動作中、コンプライアンス制御およびフィードバック制御は起動された状態にある。
このように、スイングした脚の着地点に障害物がある場合に、反射制御部123dが、動作生成部123aに指示して、腰を支持脚に戻すとともに、他の関節の動きをスムーズに停止し、また、ゲート時間を増加し、スイング脚を元に戻すことによって、ロボット110を障害物に対応させることができる。
図15は、障害物に対する反射制御例を示す図である。同図に示すように、スイングした左脚が着地の際に障害物に接触し、元の位置に戻されている。
図16は、歩行面が低くなる場合の反射制御を説明するための説明図である。同図に示すように、歩行面が低くなる場合には、高さの低下に対応するために追加動作が必要となる。具体的には、ゲート時間を延長し、着地動作をハードウェアの限界まで継続する必要がある。
図17は、歩行面が低くなる場合の歩行制御処理の処理手順を示すフローチャートである。同図に示すように、この歩行制御処理では、中央制御部123は、コンプライアンス制御のゲインを大きく設定し(ステップS301)、予定時間に着地する間は(ステップS302、肯定)、通常の歩行制御を行う(ステップS303)。
一方、中央制御部123が予定時間に着地が行われなかったことを検出すると(ステップS302、否定)、反射制御部123dは、着地動作の継続およびゲート時間の延長を動作生成部123aに指示し(ステップS304)、ハードウェアの限界内で足裏面が床に触れるか否かを判定する(ステップS305)。
その結果、ハードウェアの限界内で足裏面が床に触れた場合には、ステップ303に進んで中央制御部123は通常の歩行制御を行い、ハードウェアの限界内で足裏面が床に触れない場合には、反射制御部123dは、スイング脚を元に戻すように動作生成部123aに指示する(ステップS306)。その後、中央制御部123は、上位制御に従って動作を継続する(ステップS307)。なお、ステップS304〜ステップS306の動作中、コンプライアンス制御およびフィードバック制御は起動された状態にある。
このように、歩行面が低くなる場合に、反射制御部123dが、着地動作の継続およびゲート時間の延長を動作生成部123aに指示することによって、歩行面の低下にロボット110を対応させることができる。
図18は、歩行面が低くなる場合の関節の角度を示す図である。同図において、aは左ピッチ膝関節14Lの角度を示し、bは左ピッチ足首関節15Lの角度を示し、cは左ピッチ股関節13Lの角度を示している。また、dは支持脚関節の追加動作を示している。
図19は、歩行面が低くなる場合の反射制御例を示す図である。同図に示すように、歩行面が低くなる場合にも、ロボット110は、着地動作を継続することによって、安定して歩行することができる。
図20は、歩行面が高くなる場合の反射制御を説明するための説明図である。同図に示すように、歩行面が高くなる場合には、高さの増加に対応するために脚の持ち上げを増加する必要がある。
図21は、歩行面が高くなる場合の歩行制御処理の処理手順を示すフローチャートである。同図に示すように、この歩行制御処理では、中央制御部123は、コンプライアンス制御のゲインを大きく設定し(ステップS401)、距離センサが歩行面の上りを検出しない間は(ステップS402、否定)、通常の歩行制御を行う(ステップS403)。
一方、距離センサが歩行面の上りを検出すると(ステップS402、肯定)、反射制御部123dは、動作生成部123aに指示して、脚の持ち上げを増加し、ゲート時間を延長する(ステップS404)。そして、足裏面に床が触れると(ステップS405、肯定)、動作生成部123aに指示して、ストライドを増加する(ステップS406)。そして、中央制御部123は、ステップS403に戻って通常の歩行制御を行う。
なお、反射制御部123dは、足裏面が床に触れない間は、脚の持ち上げをハードウェアの限界内で増加し、ハードウェアの限界まで脚を持ち上げても足裏が床に触れない場合には、スイング脚を元に戻すように動作生成部123aに指示する。
このように、歩行面が高くなる場合に、反射制御部123dが、脚の持ち上げを増加し、ゲート時間を延長するように動作生成部123aに指示することによって、歩行面の上りの段差にロボット110を対応させることができる。
図22は、ロボット110が荷物を落とした場合の反射制御を説明するための説明図である。同図に示すように、ロボット110が運んでいた荷物を落とすと、図22(b)に示すように、ロボット110に後回転のモーメントが発生する。したがって、反射制御では、腰および足首に後回転のモーメントを打ち消す動きを生成する。
図23は、ロボット110が荷物を落とした場合の歩行制御処理の処理手順を示すフローチャートである。同図に示すように、この歩行制御処理では、中央制御部123は、ジャイロセンサの|測定値|が所定の閾値より小さいか否かを判定する(ステップS501)。その結果、ジャイロセンサの|測定値|が所定の閾値より小さい場合には、ロボット110は荷物を落としていないので、通常の歩行制御を行う(ステップS502)。
一方、ジャイロセンサの|測定値|が所定の閾値より小さくない場合には、ロボット110が荷物を落とした場合なので、反射制御部123dは、ジャイロフィードバック制御のゲインを減少し、足首と腰に図24に示す動きを生成するように動作生成部123aに指示する(ステップS503)。図24において、θwは反射制御によって生成されるピッチ腰関節10の動きを示し、θaは反射制御によるピッチ足首関節の動きを示す。
そして、反射制御部123dは、ジャイロフィードバック制御のゲインを元に戻し(ステップS504)、通常の歩行制または停止を動作生成部123aに指示する(ステップS505)。
このように、ロボット110が荷物を落とした場合に、反射制御部123dが、ZMPフィードバック制御のゲインを減少し、足首と腰に図24に示す動きを生成するように動作生成部123aに指示することによって、ロボット110を制御下に置くことができる。
図25は、ロボット110が荷物を落とした場合の反射制御例を示す図である。同図に示すように、反射制御によって、ロボット110は荷物を落としても安定した状態を保つことができる。図26は、ロボット110が荷物を落とした場合の関節の角度を示す図である。同図において、VZMPはピッチ腰関節10のZMPフィードバックを示し、UZMPはピッチ足首関節のZMPフィードバックを示す。
上述してきたように、本実施例では、中央制御部123がロボット110の歩行制御中に、大きな外乱、障害物、歩行面の上下段差、運搬荷物の落下など想定外の事象を検出した場合に、反射制御部123dが事象に対応してロボット110の慣性変化が最小になるように動作指示を動作生成部123aに出し、動作生成部123aが修正動作を生成する、あるいは、反射制御部123dが修正動作を直接生成して補正部123eに出力することとしたので、ロボット110を歩行環境の変化に対応させることができる。
なお、本実施例では、ロボット制御装置について説明したが、ロボット制御装置が有する構成をソフトウェアによって実現することで、同様の機能を有するロボット制御プログラムを得ることができる。そこで、このロボット制御プログラムを実行するコンピュータについて説明する。
図27は、本実施例に係るロボット制御プログラムを実行するコンピュータの構成を示す機能ブロック図である。同図に示すように、このコンピュータ200は、RAM210と、CPU220と、フラッシュメモリ230と、USBインターフェース240と、COMインターフェース250とを有する。
RAM210は、プログラムやプログラムの実行途中結果などを記憶するメモリであり、図5に示したメモリ122に対応する。CPU220は、RAM210からプログラムを読み出して実行する中央処理装置である。フラッシュメモリ230は、プログラムやデータを格納する不揮発性メモリであり、USBインターフェース240は、コンピュータ200を関節やセンサに接続するためのインターフェースである。COMインターフェース250は、外部端末装置100と通信するためのインターフェースであり、図5に示した通信インターフェース121に対応するものである。そして、このコンピュータ200において実行されるロボット制御プログラム231は、フラッシュメモリ230から読み出されてCPU220によって実行される。
(付記1)ロボットの歩行を制御するロボット制御装置であって、
ロボットが転倒することなく単独で立っている参照姿勢を少なくとも含む複数の異なる時点の姿勢に基づいて制御情報を生成し、ロボットが予め定められた歩行動作を行うように制御する歩行動作制御手段と、
前記予め定められた歩行動作の継続を不可能とする歩行環境の変化を検出し、該検出した変化に対応して前記歩行動作制御手段による歩行動作の制御を修正する反射制御手段と、
を備えたことを特徴とするロボット制御装置。
(付記2)前記反射制御手段は、ロボットの脚が着地する場所に置かれた障害物の存在を検出すると、支持脚へのローリング動作とスイングした脚をスイング前の位置に戻す動作を行うように前記歩行動作制御手段に指示することを特徴とする付記1に記載のロボット制御装置。
(付記3)前記反射制御手段は、ロボットが歩行する歩行面が低くなることを検出すると、歩行動作時間を長くするとともに着地動作を継続するように前記歩行動作制御手段に指示することを特徴とする付記1に記載のロボット制御装置。
(付記4)前記反射制御手段は、ロボットが歩行する歩行面が高くなることを検出すると、歩行動作時間を長くするとともに着地する脚を高く上げるように前記歩行動作制御手段に指示することを特徴とする付記1に記載のロボット制御装置。
(付記5)前記反射制御手段は、ロボットが保持していた荷物の重さが突然変化したとき、ジャイロフィードバック制御のゲインを所定の値まで減少し、足首および腰を回転させるように歩行動作制御手段に指示することを特徴とする付記1に記載のロボット制御装置。
(付記6)前記反射制御手段は、ロボットが保持していた荷物の落下をロボットの胴体部に取り付けられたジャイロセンサの測定値に基づいて検出することを特徴とする付記5に記載のロボット制御装置。
(付記7)前記反射制御手段は、ロボットを押す力を検出すると、歩行動作を停止し、押す力の方向に対して予め定められた姿勢に移行するように制御を修正することを特徴とする付記1に記載のロボット制御装置。
(付記8)前記反射制御手段は、前記予め定められた歩行動作を行うように制御する場合と比較してコンプライアンス制御のゲインを大きくして歩行環境の変化を検出することを特徴とする付記2、3または4に記載のロボット制御装置。
(付記9)ロボットの歩行を制御するロボット制御方法であって、
ロボットが転倒することなく単独で立っている参照姿勢を少なくとも含む複数の異なる時点の姿勢に基づいて制御情報を生成し、ロボットが予め定められた歩行動作を行うように制御する歩行動作制御ステップと、
前記予め定められた歩行動作の継続を不可能とする歩行環境の変化を検出し、該検出した変化に対応して前記歩行動作制御ステップによる歩行動作の制御を修正する反射制御ステップと、
を含んだことを特徴とするロボット制御方法。
(付記10)ロボットの歩行を制御するロボット制御プログラムであって、
ロボットが転倒することなく単独で立っている参照姿勢を少なくとも含む複数の異なる時点の姿勢に基づいて制御情報を生成し、ロボットが予め定められた歩行動作を行うように制御する歩行動作制御手順と、
前記予め定められた歩行動作の継続を不可能とする歩行環境の変化を検出し、該検出した変化に対応して前記歩行動作制御手順による歩行動作の制御を修正する反射制御手順と、
をコンピュータに実行させることを特徴とするロボット制御プログラム。