(57)【要約】【課題】制御性よく、複雑な制御を実現することができる関節駆動型ロボット、及びその制御方法を提供すること。【解決手段】本発明の一態様にかかる関節駆動型ロボットは、入力された駆動量に応じて駆動する関節を有する関節駆動型ロボットであって、駆動量を求めるための制御量を関節駆動型ロボットの目標姿勢に応じて各々算出する制御量算出部を複数有する制御量算出部群１４５と、制御量算出部群１４５の各々の制御量算出部１３５で算出された制御量を合成処理し、関節の駆動量として出力する合成部１３８と、制御量算出部群の少なくとも一つの制御量算出部に対して、制御量のリミット値を設定するリミット値設定部１３８と、リミット値と制御量とを比較する比較部１３７とを備え、制御量がリミット値を超えた場合に合成部１３８で合成される制御量をリミット値を超えない値にするものである。【選択図】図３
2008126383.tif 000002
【特許請求の範囲】
【請求項１】
入力される駆動量に応じて駆動する関節を有する関節駆動型ロボットであって、
前記駆動量を算出するための制御量を前記関節駆動型ロボットの目標姿勢に応じて各々算出する複数の制御量算出部を有する制御量算出部群と、
前記制御量算出部群の各々の制御量算出部で算出された制御量を合成処理し、前記関節の駆動量として出力する合成部と、
前記制御量算出部群の少なくとも一つの制御量算出部で算出される前記制御量に対して設定されたリミット値を記憶するリミット値設定部と、
前記リミット値と前記制御量とを比較する比較部と、を備え、
前記比較部において前記制御量が前記リミット値を超えた場合に、前記合成部で合成される制御量を前記リミット値を超えない値にする関節駆動型ロボット。
【請求項２】
コントローラから出力される駆動量に応じて駆動する関節を有する関節駆動型ロボットであって、
前記駆動量を求めるための制御量を前記関節駆動型ロボットの目標姿勢に応じて各々算出する制御量算出部が複数設けられた第１の制御量算出部群を有し、前記第１の制御量算出部群の各々の制御量算出部で算出された制御量を合成処理して、前記関節を駆動する第１の駆動量を出力する第１のコントローラと、
前記駆動量を求めるための制御量を前記関節駆動型ロボットの目標姿勢に応じて各々算出する制御量算出部が複数設けられた第２の制御量算出部群を有し、前記第２の制御量算出部群の各々の制御量算出部で算出された制御量を合成処理して、前記関節を駆動する第２の駆動量を出力する第２のコントローラと、
前記第１のコントローラからの第１の駆動量と前記第２のコントローラからの第２の駆動量とを切替え、前記第１の駆動量及び前記第２の駆動量のうちの一方の駆動量を出力する切替部と、
前記切替部から出力された前記第１の駆動量及び前記第２の駆動量の一方の駆動量に応じて前記関節を駆動する関節駆動部と、
前記第１の制御量算出部群の少なくとも一つの制御量算出部で算出される前記制御量に対して設定されたリミット値を記憶するリミット値設定部と、
前記制御量と前記リミット値とを比較する比較部と、を備え、
前記制御量が前記リミット値を越えた場合に、前記切替部から出力される駆動量を前記第１の駆動量から前記第２の駆動量に切替える切替信号を出力する関節駆動型ロボット。
【請求項３】
前記第１のコントローラと前記第２のコントローラとが、相反する目標運動を実行することを特徴とする請求項２に記載の関節駆動型ロボット。
【請求項４】
入力される駆動量に応じて駆動する関節を有する関節駆動型ロボットの制御方法であって、
前記駆動量を求めるための制御量を前記関節駆動型ロボットの目標姿勢に応じて複数算出するステップと、
前記複数の制御量のうちの少なくとも一つの制御量に対するリミット値を前記制御量と比較して、前記制御量が前記リミット値を超えた場合に前記リミット値を超えない値を前記制御量にするステップと、
前記リミット値を超えない値を含む複数の制御量を合成処理し、前記関節の駆動量として出力するステップと、
を備える関節駆動型ロボットの制御方法。
【請求項５】
関節駆動型ロボットに設けられ、コントローラから出力される駆動量に応じて駆動する関節と、
前記駆動量を求めるための制御量を前記関節駆動型ロボットの目標姿勢に応じて各々算出する制御量算出部が複数設けられた第１の制御量算出部群を有し、前記第１の制御量算出部群の各々の制御量算出部で算出された制御量を合成処理して、前記関節を駆動する第１の駆動量として出力する第１のコントローラと、
前記駆動量を求めるための制御量を各々算出する制御量算出部が複数設けられた第２の制御量算出部群を有し、前記第２の制御量算出部群の各々の制御量算出部で算出された制御量を合成処理して、前記関節を駆動する第２の駆動量として出力する第２のコントローラと、を備え、前記第１の駆動量、又は前記第２の駆動量に応じて前記関節を駆動する関節駆動型ロボットの制御方法であって、
前記第１の制御量算出部群のうちの１つ以上の制御量算出部に対して設定されたリミット値と、前記制御量とを比較するステップと
前記制御量が前記リミット値を超えた場合に、前記第１のコントローラから前記第２のコントローラに切り替えるステップと、
前記第２のコントローラによって出力された前記第２の駆動量によって前記関節を駆動するステップと、
を備える関節駆動型ロボットの制御方法。
【請求項６】
前記第１のコントローラと前記第２のコントローラとが、相反する目標運動を実行することを特徴とする請求項５に記載の関節駆動型ロボットの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、関節を有する関節駆動型ロボット、及びその制御方法に関するものである。
【背景技術】
【０００２】
近年、歩行するための脚部を備え、この脚部を駆動し、脚部の下端に設けられた足平部分を所定の歩容データに基づいて床面上に配置することで歩行動作を行う脚式移動型のロボットが開発されている。（例えば特許文献１）
【０００３】
このような脚式移動型のロボットは、まず、脚部の足平部分を床面に接触させて支持脚とし、その後に足平の裏面で床面を押して脚部全体（ロボット全体）を上げるように脚部を駆動することで、次の歩行動作を行う。駆動された脚部は遊脚となる一方、他の脚部が支持脚となり、このように、遊脚と支持脚とを交互に繰り返して切り換えることで、歩行動作を行うことが可能になる。
【０００４】
このような歩行動作を安定して行う際には、ロボット全体の重心位置を制御して、脚部を駆動する必要がある。すなわち、左右に各々脚部を有する２足歩行タイプの脚式歩行型ロボットの場合、歩行する床面に接地する支持脚の足平部分の接地面内部に、ロボット全体の重心によるモーメントが作用しない点（ＺＭＰ＝Ｚｅｒｏ  Ｍｏｍｅｎｔ  Ｐｏｉｎｔ）を位置させる。
【特許文献１】特開平５−３０５５８０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
特許文献１に示されている脚式移動型ロボットの脚部は、股関節、大腿、膝関節、下腿、足首関節、及び足平を備えている。そして、脚部に連結された胴体の目標重心位置と実際の重心位置との偏差から、腰の移動量を算出している。そして、算出された腰の移動量から駆動する関節角度をそれぞれ求めて、駆動している。
【０００６】
上記の各関節は、通常、モータによって駆動する。従って、各関節を駆動するために駆動量を算出する必要がある。駆動量としては、モータのトルクや、角度がある。そして、各関節の目標角度に追従するよう、モータを制御する。このように、ロボットの演算処理部では、各関節のモータに対して、それぞれ駆動量が算出される。
【０００７】
ところで、脚式移動型ロボットでは、通常、複数の目標姿勢を組み合わせて、目標運動を実現している。安定歩行を行なうという目標運動を実行する場合、目標姿勢としては、例えば、（１）「予め定められている各関節目標角度に追従する」（２）「足平を床面に倣わせる」（３）「胴体を倒立させる」（４）「着地衝撃を吸収する」などが挙げられる。
【０００８】
上記の（１）〜（４）までの目標姿勢を同時に達成するため、それぞれの目標姿勢に対して制御量を算出する。すなわち、ロボットの演算処理部は、それぞれの目標姿勢に対応する制御量を算出するための制御量算出部を複数有している。上記の場合、（１）〜（４）の目標姿勢に対応して、４つの制御量算出部が設けられている。そして、それぞれの制御量算出部では、所定のプログラムを実行することによって、目標姿勢に対応する制御量を算出している。さらに、ロボットの演算処理部は、１つの関節の駆動量を求めるため、複数の制御量を合成している。
【０００９】
しかしながら、より複雑な運動を実現しようとするほど、多数の目標姿勢を組み合わる必要がある。従って、各目標姿勢に応じて制御量算出部をそれぞれ個別に最適化して設計しても、合成部を通じてそれらを合成した結果、ロボットが相互作用によって予期しない動きをしてしまうおそれがある。ここで、予期しない動きとは、（ａ）「予め定められた目標関節角度に追従しない」（ｂ）「足平が床面形状に倣わない」（ｃ）「胴体が倒立しない」（ｄ）「着地衝撃を吸収できない」等といった目標姿勢を満たせてない状態である。すなわち、複数の目標姿勢のうちの一つ以上を達成できなくなってしまうという問題点がある。
【００１０】
従来技術では、達成できない目標姿勢を特定して、該当する制御量算出部を再設計することで上記の問題点の発生を防いでいる。しかしながら、再設計された制御量算出部では、その目標姿勢に対して最適化されている状態ではなくなるため、制御性が低下してしまうという問題点がある。すなわち、制御量算出部におけるプログラムにおいて、制御量を算出するためのゲインを下げる必要があるため、制御性が低下してしまうという問題点がある。このように、従来のロボットでは、制御性よく、複雑な制御を実現することが困難であるという問題点がある。
【００１１】
本発明は、このような問題を解決するためになされたものであり、制御性よく、複雑な制御を実現することができる関節駆動型ロボット、及びその制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の第１の態様にかかる関節駆動型ロボットは、入力される駆動量に応じて駆動する関節を有する関節駆動型ロボットであって、前記駆動量を算出するための制御量を前記関節駆動型ロボットの目標姿勢に応じて各々算出する複数の制御量算出部を有する制御量算出部群と、前記制御量算出部群の各々の制御量算出部で算出された制御量を合成処理し、前記関節の駆動量として出力する合成部と、前記制御量算出部群の少なくとも一つの制御量算出部で算出される前記制御量に対して設定されたリミット値を記憶するリミット値設定部と、前記リミット値と前記制御量とを比較する比較部と、を備え、前記比較部において前記制御量が前記リミット値を超えた場合に、前記合成部で合成される制御量を前記リミット値を超えない値にするものである。このような構成によれば、制御量がリミット値を越えなくなるため、各目標姿勢の相互作用による相殺を防ぐことができる。よって、制御量に対して適切なゲインを設定することができるため、制御性よく、複雑な制御を実行することができる。
【００１３】
本発明の第２の態様にかかる関節駆動型ロボットは、コントローラから出力される駆動量に応じて駆動する関節を有する関節駆動型ロボットであって、前記駆動量を求めるための制御量を前記関節駆動型ロボットの目標姿勢に応じて各々算出する制御量算出部が複数設けられた第１の制御量算出部群を有し、前記第１の制御量算出部群の各々の制御量算出部で算出された制御量を合成処理して、前記関節を駆動する第１の駆動量を出力する第１のコントローラと、前記駆動量を求めるための制御量を各々算出する制御量算出部が複数設けられた第２の制御量算出部群を有し、前記第２の制御量算出部群の各々の制御量算出部で算出された制御量を合成処理して、前記関節を駆動する第２の駆動量を出力する第２のコントローラと、前記第１のコントローラからの第１の駆動量と前記第２のコントローラからの第２の駆動量とを切替え、前記第１の駆動量及び前記第２の駆動量のうちの一方の駆動量を出力する切替部と、前記切替部から出力された前記第１の駆動量及び前記第２の駆動量の一方の駆動量に応じて前記関節を駆動する関節駆動部と、前記第１の制御量算出部群の少なくとも一つの制御量算出部で算出される前記制御量に対して設定されたリミット値を記憶するリミット値設定部と、前記制御量と前記リミット値とを比較する比較部と、を備え、前記制御量が前記リミット値を越えた場合に、前記切替部から出力される駆動量を前記第１の駆動量から前記第２の駆動量に切替える切替信号を出力するものである。このような構成では、目標姿勢を満たすことができなくなると、制御量がリミット値を越えるため、コントローラが切り替わる。よって、コントローラの切替を適切に行なうことができるため、制御性よく、複雑な制御を実行することができる。
【００１４】
本発明の第３の態様にかかる関節駆動型ロボットは、上述の関節駆動型ロボットであって、前記第１のコントローラと前記第２のコントローラとが、相反する目標運動を実行することを特徴とするものである。これにより、リミット値を越えた場合は相反する目標運動を実行するコントローラに切り替えられるため、状況に応じた制御に切り替えることができる。
【００１５】
本発明の第４の態様にかかる関節駆動型ロボットの制御方法は、入力される駆動量に応じて駆動する関節を有する関節駆動型ロボットの制御方法であって、前記駆動量を求めるための制御量を前記関節駆動型ロボットの目標姿勢に応じて複数算出するステップと、前記複数の制御量のうちの少なくとも一つの制御量に対するリミット値を前記制御量と比較して、前記制御量が前記リミット値を超えた場合に前記リミット値を超えない値を前記制御量にするステップと、前記リミット値を超えない値を含む複数の制御量を合成処理し、前記関節の駆動量として出力するステップと、備えるものである。これにより、制御量がリミット値を越えなくなるため、各目標姿勢の相互作用による相殺を防ぐことができる。よって、制御量に対して適切なゲインを設定することができるため、制御性よく、複雑な制御を実行することができる。
【００１６】
本発明の第５の態様にかかる関節駆動型ロボットは、関節駆動型ロボットに設けられ、コントローラから出力される駆動量に応じて駆動する関節と、前記駆動量を求めるための制御量を前記関節駆動型ロボットの目標姿勢に応じて各々算出する制御量算出部が複数設けられた第１の制御量算出部群を有し、前記第１の制御量算出部群の各々の制御量算出部で算出された制御量を合成処理して、前記関節を駆動する第１の駆動量として出力する第１のコントローラと、前記駆動量を求めるための制御量を各々算出する制御量算出部が複数設けられた第２の制御量算出部群を有し、前記第２の制御量算出部群の各々の制御量算出部で算出された制御量を合成処理して、前記関節を駆動する第２の駆動量として出力する第２のコントローラと、を備え、前記第１の駆動量、又は前記第２の駆動量に応じて前記関節を駆動する関節駆動型ロボットの制御方法であって、前記第１の制御量算出部群のうちの１つ以上の制御量算出部に対して設定されたリミット値と、前記制御量とを比較するステップと、前記制御量が前記リミット値を超えた場合に、前記第１のコントローラから前記第２のコントローラに切り替えるステップと、前記第２のコントローラによって出力された前記第２の駆動量によって前記関節を駆動するステップと、備えるものである。このような構成では、目標姿勢を満たすことができなくなると、制御量がリミット値を越えるため、コントローラが切り替わる。よって、コントローラの切替を適切に行なうことができるため、制御性よく、複雑な制御を実行することができる。
【００１７】
本発明の第６の態様にかかる関節駆動型ロボットの制御方法は、上述の制御方法であって、前記第１のコントローラと前記第２のコントローラとが、相反する目標運動を実行することを特徴とするものである。これにより、リミット値を越えた場合は相反する目標運動を実行するコントローラに切り替えられるため、状況に応じた制御に切り替えることができる。
【発明の効果】
【００１８】
本発明によれば、制御性よく、複雑な制御を実現することができる関節駆動型ロボット、及びその制御方法を提供することが可能となる。
【発明を実施するための最良の形態】
【００１９】
第１の態様にかかるロボットは、出力される駆動量に応じて駆動する関節を有する関節駆動型ロボットである。この関節駆動型ロボットは、駆動量を求めるための制御量を各々算出する複数の制御量算出部を有している。ここで、制御量とは、関節の駆動量を算出するために用いられる値であり、例えば、その関節の目標トルク、目標角度、及び目標角速度等である。すなわち、制御量は、関節の駆動において制御の目標となる値である。さらに、制御量はその関節以外の関節の位置、角度などであってもよい。例えば、胴体の位置や傾斜角度を制御量とすることができる。この制御量が変化することにより、駆動量も変化する。制御量算出部は目標姿勢に応じて制御量を算出する。すなわち、ロボットに対して目標姿勢を実現させる制御を行うための目標値が制御量として算出される。ここで、ロボット制御では、複数の目標姿勢が組み合わされて実行されるため、複数の制御量が算出される。関節駆動型ロボットは、複数の制御量算出部でそれぞれ算出された制御量を合成処理し、関節の駆動量として出力する。ここで、少なくとも一つの制御量に対してリミット値が設定されている。そして、制御量がリミット値を超えた場合に制御量をリミット値を超えない値にしている。
【００２０】
発明の実施の形態１．
以下に、図１を参照しつつ本発明の実施の形態１にかかる脚式移動ロボット（以下、単にロボットという）について説明する。
図１は、ロボット１を正面から見た様子を概略的に表す概略図であり、床面Ｆ上をロボット１が歩行する様子を表している。なお、図１においては、説明の便宜上、ロボット１が進行する向き（前後方向）をｘ軸、ロボット１が進行する方向について水平方向に直交する向き（左右方向）をｙ軸、移動体の移動する平面から鉛直方向に延びる向き（上下方向）をｚ軸とし、これらの３軸からなる座標系を用いて説明する。すなわち、図１中において、前記ｘ軸は紙面の奥行方向、ｙ軸は紙面に向かって左右方向、ｚ軸は紙面中の上下方向を示す。
【００２１】
図１に示すように、ロボット１は、頭部２と、体幹（胴体）３と、体幹３に結合された腰部４と、体幹３に接続された右腕５、左腕６と、腰部４に対して回動自在に固定される脚部１０と、を備えた２足歩行型のロボットである。以下、詳細に説明する。
【００２２】
頭部２は、ロボット１の周囲の環境を視覚的に撮像するための左右一対の撮像部（図示せず）を備えているとともに、体幹３に対して頭部２を鉛直方向に平行な軸周りに回動させることで、周囲の環境を広く撮像する。撮像した周囲の環境を示す画像データは、後述する演算処理部１３０に送信され、ロボット１の動作を決定するための情報として用いられる。
【００２３】
体幹３は、その内部にロボット１の動作を制御する演算処理部１３０や、脚部のモータ等に電力を供給するためのバッテリー（図示せず）等を収容するものである。演算処理部１３０は、脚部１０を駆動し、ロボット１を動かすための歩容データを記憶する記憶領域と、この記憶領域に記憶された歩容データを読み出す演算処理部と、脚部１０に含まれるモータを駆動するモータ駆動部と、を備えている。なお、演算処理部１３０の構成については後述する。これらの各構成要素は、体幹３の内部に設けられたバッテリー（図示せず）から電力を供給されることで動作する。
【００２４】
また、演算処理部１３０は、記憶領域に記憶された歩容データを読み出すとともに、読み出した歩容データによって特定されるロボット１の姿勢を実現するために必要な脚部１０の関節角を算出する。そして、このように算出した関節角に基づく信号をモータ駆動部に送信する。
【００２５】
モータ駆動部は、演算処理部１３０より送信された信号に基づいて、脚部を駆動するための各モータの駆動量を特定し、これらの駆動量でモータを駆動させるためのモータ駆動信号を各モータに送信する。これによって脚部１０の各関節における駆動量が変更され、ロボット１の動きが制御される。
【００２６】
また、演算処理部１３０は、読み出した歩容データに基づいてモータの駆動を行うように指令するほか、ロボット１に組み込まれたジャイロや加速度計やロータリーエンコーダなどセンサ（図示せず）からの信号を受けて、モータの駆動量を調整する。このように、センサにより検出したロボット１に作用する外力や、ロボット１の姿勢などに応じて脚部１０の関節角を調整することで、ロボット１が安定した状態を維持することができる。
【００２７】
右腕５および左腕６は、体幹３に対して回動自在に接続されており、肘部分および手首部分に設けられた関節部分を駆動することにより、人間の腕部と同様の動きを行うことができる。また、手首部分の先端に接続された手先部は、図示を省略するが物体を把持するためのハンド構造を備えており、ハンド構造に組み込まれた複数の指関節を駆動することで、様々な形状の物体を把持することが可能となる。
【００２８】
腰部４は、体幹３に対して回動するように接続されており、歩行動作を行う際に腰部４の回動動作を組み合わせることで、脚部１０を駆動するために必要な駆動エネルギーを低減させることができる。
【００２９】
２足歩行を行うための脚部１０（右脚２０、左脚３０）は、右脚２０と左脚３０とから構成されている。詳細には、図２に示すように、右脚２０は右股関節２１、右上腿２２、右膝関節２３、右下腿２４、右足首関節２５、右足平２６を備え、同様に、左脚３０は左股関節３１、左上腿３２、左膝関節３３、左下腿３４、左足首関節３５、左足平３６を備えている。
【００３０】
そして、右脚２０および左脚３０とは、図示しないモータからの駆動力が、同じく図示しないプーリおよびベルトを介して伝達されることで、各関節部が所望の角度に駆動され、その結果、脚部に所望の動きをさせることができる。
【００３１】
なお、本実施形態においては、脚部１０（右脚２０および左脚３０）は、下腿を膝関節回りに前方側に持ち上げると、人間の脚部のように、上腿と下腿が後方側に向かって開いた状態（上腿の延長線よりも後方側に、下腿が膝関節回りに回転した状態）となる。
【００３２】
記憶領域に記憶された歩容データは、操作部（図示せず）から送られる信号で特定される脚部１０の移動量に対応づけて、脚部１０の足平（右足平２６、左足平３６）の先端（足先）の位置と、ロボット１本体の位置とを、ロボット１の移動する空間を定める座標系（例えばｘｙｚ座標系）において経時的に指示するものである。なお、歩容データの生成については、従来から広く用いられている方法を用いることができるため、説明を省略する。
【００３３】
ここで、演算処理部１３０について説明する。演算処理部１３０は、所定の演算処理を行なうＣＰＵ（Central Processing Unit）、記憶領域であるＲＯＭ（Read Only Memory）やＲＡＭ（Random Access Memory）、通信用のインターフェースなどを有し、ロボット１の各種動作を制御する。例えば、ＲＯＭには、制御するための制御プログラムや、各種の設定データ等が記憶されている。そして、ＣＰＵは、このＲＯＭに記憶されている制御プログラムを読み出し、RAMに展開する。そして、設定データや、センサ等からの出力に応じてプログラムを実行する。このようにして、演算処理部１３０はロボット１を制御する。
【００３４】
次に、ロボット１の演算処理部１３０の構成について図２を用いて説明する。図２では複数の関節のうち、１つの関節を駆動するためのコントローラ１３１が示されている。従って、演算処理部１３０には、関節の自由度の数だけ図２に示すコントローラ１３１が設けられている。
【００３５】
コントローラ１３１は、複数の制御量算出部１３５からなる制御量算出部群１４５と、合成部１３８とを有している。それぞれの制御量算出部１３５は、目標姿勢に応じて制御量を算出する。ここでは、複数の目標姿勢が設定されているため、複数の制御量算出部１３５が設けられている。具体的には、目標姿勢１〜目標姿勢ｎを実現するため、ｎ個の制御量算出部１３５が設けられている。すなわち、コントローラ１３１は、ｎ（ｎは２以上の整数）個の制御量算出部１３５からなる制御量算出部群１４５を有している。
【００３６】
制御量算出部群１４５に含まれているｎ個の制御量算出部１３５は、目標姿勢１〜ｎと１対１に対応している。すなわち、ｎ個の制御量算出部１３５のうちの１個目の制御量算出部１３５は、目標姿勢１を実現するために設けられており、ｎ個目の制御量算出部１３５は、目標姿勢ｎを実現するために設けられている。ここで、目標姿勢としては、例えば、（１）「予め定められている各関節目標角度に追従する」（２）「足平を床面に倣わせる」（３）「胴体を倒立させる」（４）「着地衝撃を吸収する」などが挙げられる。もちろん、これ以外の目標姿勢を有していてもよく、目標姿勢の数は２以上であればよい。例えば、制御量算出部１３５には、それぞれ別の制御量算出プログラムが記憶されている。これにより、目標姿勢１〜ｎを同時に達成することができる。それぞれの制御量算出部１３５は、各々の目標姿勢に対して、個別に最適化されている。
【００３７】
制御量としては、例えば、その関節の目標トルク、目標角度、及び目標角速度等が挙げられる。もちろん、制御量として、目標トルク、目標角度、及び目標角速度のうちの一つ以上があればよく、複数を組み合わせてもよい。さらに、制御量はその関節以外の位置、角度などであってもよい。例えば、胴体の位置や傾斜角度を制御量とすることができる。なお、制御量算出部１３５には、制御量を算出するために必要な値が入力されていてもよい。例えば、ロボット１に設けられているセンサによって計測された位置や力などの値が、必要に応じて入力される。
【００３８】
制御量算出部群１４５で算出された制御量１〜ｎは合成部１３８に入力される。合成部１３８は、制御量１〜ｎを合成して、駆動量を算出する。例えば、合成部１３８は、制御量１〜ｎのそれぞれに対してゲインをかけ、それらの和を駆動量として算出する。そして、合成部１３８は、制御量１〜ｎを合成処理することにより得られた駆動量を駆動信号としてモータ１４１に出力する。関節を駆動する関節駆動部であるモータ１４１は、合成部１３８からの駆動量に応じて駆動する。例えば、駆動量としてモータ１４１のトルクを用いた場合、駆動量に応じたトルクでモータ１４１が回転駆動する。ここで、コントローラ１３１は、１つのモータ１４１に対応しているため、コントローラ１３１からは1つの駆動量が出力される。
【００３９】
ところで、従来のロボット制御では、制御量算出部１３５が、各々の目標姿勢に対して、個別に最適化されていても、ロボットが予期しない動きをすることがある。これは、複数の制御量を合成部１３８で合成した結果、互いの相互作用によって、効果を相殺してしまうからである。予期しない動きとは、例えば、上記（１）〜（４）のうちの複数の目標姿勢が同時に満たされていない状態をいう。すなわち、（ａ）「予め定められた目標関節角度に追従しない」（ｂ）「足平が床面形状に倣わない」（ｃ）「胴体が倒立しない」（ｄ）「着地衝撃を吸収できない」等という目標未達状態が複数同時に発生してしまう。具体的には、「足平が床面形状に倣わず、胴体が倒立できない」状態となり、予期しない動きをしてしまう。このような問題を防ぐため、従来のロボット制御では、ゲインを低くして、制御性を低下させている。
【００４０】
本実施の形態にかかるロボット制御では、以下のように制御することによって、制御性を低下させずに、複数の目標姿勢を達成している。以下に、図３を参照して、本実施の形態にかかるロボット制御について説明する。図３は、合成部における制御を示すブロック線図である。
【００４１】
図３に示すように、合成部１３８には、制御量に対するリミット値を設定するリミット値設定部１３６が設けられている。さらに、合成部１３８には、リミット値設定部１３６で設定されているリミット値と、制御量とを比較する比較部１３７が設けられている。制御量がリミット値を越えている場合、比較部１３７は制御量をリミット値を越えない値に変更する。具体的には、比較部１３７は、制御量をリミット値と同じ値にして出力する。なお、制御量がリミット値を越えていない場合、比較部１３７は、制御量をそのまま出力する。これにより、制御量がリミット値を越えなくなる。なお、ここでは制御量１、及び制御量ｎのみに対してリミット値を設定しているが、その他の制御量に対してリミット値を設定することも可能である。さらには、１つ以上の制御量に対して、リミット値が設定されていればよい。
【００４２】
そして、これらの制御量は、変換部１３９に入力される。ここで、制御量算出部１３５でリミット値を越える制御量が算出された場合でも、その制御量がリミット値を越えない値となって変換部１３９に入力される。変換部１３９は、制御量を異なる制御量に変換する。例えば、変換部１３９は、目標関節角度をその関節の目標トルクに変換する。具体的には、各変換部１３９には、最適化されたゲインが設定されている。そして、このゲインを制御量にかけることによって、変換制御量を算出する。なお、変換部１３９によって変換された制御量を変換制御量とする。ここで、リミット値を越えた制御量が算出されていても、その制御量は、比較部１３７でリミット値を越えない値に変更される。よって、変換部１３９では、リミット値を越えない値が変換制御量に変換される。
【００４３】
合成部１３８は、上記の変換制御量を合成処理する。具体的には、変換制御量１〜ｎを足し合わせて、駆動量を算出する。この駆動量は、合成部１３８からモータ１４１に出力される。よって、モータ１４１は、駆動量に応じて駆動される。例えば、変換制御量が目標トルクの場合、合成部１３８は、全ての変換制御量１〜ｎの和を取り、最終的な目標トルクとする。これにより、モータ１４１が目標トルクで駆動される。このように、駆動量は、リミット値を越えない制御量に基づいて算出されている。
【００４４】
このように、制御量算出部群１４５から出力される制御量の少なくも１つ以上にリミット値を設定する。そして、制御量がリミット値を越える場合、その制御量をリミット値とする。よって、リミット値を越えない値に基づいて駆動量が算出される。これにより、各目標姿勢の相互作用による相殺を防ぐことができる。よって、各制御量に対するゲインを上げることができ、制御性の低下を防ぐことができる。すなわち、個々の制御量算出部１３５を最適に設計することができるため、制御性よく、複雑な制御を行うことができる。さらに、コントローラの設計を容易にすることができる。
【００４５】
なお、上記の説明では、制御量に対してリミット値を設定したが、変換制御量に対してリミット値を設定してもよい。例えば、制御量を目標関節角度とし、変換制御量を目標トルクとした場合、目標関節角度である制御量だけでなく、目標トルクである変換制御量に対してもリミット値を設定することができる。さらには、１つの関節に対する直接的な制御量のみならず、複数の関節に対する全体制御量（グローバルＦＢ量）に対してもリミット値を設定することができる。全体制御量としては、例えば、ロボット１の腰の位置、重心の位置、胴体傾斜角、脚長などがある。このような、複数の関節の駆動量を算出するために用いられる全体制御量に対してリミット値を設定してもよい。なお、モータ１４１によって駆動する関節は脚部１０の関節に限られるものではなく、その他の部分の関節であってもよい。すなわち、歩行動作以外の動作を制御してもよい。このように、モータによって関節を駆動する関節駆動型ロボットに対して複雑な制御を行う場合でもあっても、制御性を高くすることができる。
【００４６】
発明の実施の形態２．
本実施の形態にかかるロボット制御について図４を用いて説明する。図４は、本実施の形態にかかるロボットの演算処理部の構成を示すブロック線図である。なお、本実施の形態にかかるロボット１の全体構成、及び演算処理部１３０の基本的構成は実施の形態１と同様であるため、説明を省略する。すなわち、基本的な歩行動作は、実施の形態１にかかるロボット１と同様である。
【００４７】
本実施の形態では、１つの関節に対して、コントローラ１３１が２つ設けられている。図４に示すように、２つのコントローラのうちの一方を第１のコントローラ１３１ａとし、他方を第２のコントローラ１３１ｂとする。第１のコントローラ１３１ａ、及び第２のコントローラ１３１ｂには、実施の形態１と同様に、合成部１３８、及び複数の制御量算出部１３５が設けられている。第１のコントローラ１３１ａに設けられている合成部１３８を第１の合成部１３８ａとし、第２のコントローラ１３１ｂに設けられている合成部１３８を第２の合成部１３８ｂとする。また、第１のコントローラ１３１ａに設けられている制御量算出部１３５を第１の制御量算出部１３５ａとし、第２のコントローラ１３１ｂに設けられている制御量算出部１３５を第２の制御量算出部１３５ｂとする。
【００４８】
第１の合成部１３８ａ、及び第２の合成部１３８ｂにはそれぞれ制御量に対するリミット値が設定されている。リミット値は、１つ以上の制御量に対して設定されている。第１のコントローラ１３１ａ、及び第２のコントローラ１３１ｂの構成は、実施の形態１で示したコントローラ１３１と同様であるため、詳細な説明を省略する。
【００４９】
第１のコントローラ１３１ａと第２のコントローラ１３１ｂとは、異なる目標運動を実現するために設計されている。すなわち、第１のコントローラ１３１ａと第２のコントローラ１３１ｂには、同時に成立しない目標運度を実行するための制御プログラムが記憶されている。目標運動の例としては、Ａ「予め決められた速度、歩幅で決められた方向に歩行する運動」、Ｂ「現在の状態に応じて（予め決められた動きに制限されることなく）次の着地位置を決め、その着地位置に着地する運動」、Ｃ「現在の状態に応じて、歩行を中断し、危険回避運動を実行する運動」等が挙げられる。
【００５０】
上記のＡ、Ｂ、Ｃの目標運動は、それぞれ相反するものであり、同時には実現されない。例えば、第１のコントローラ１３１ａが、上記Ａの目標運動が実行し、第２のコントローラ１３１ｂが、上記Ｃの目標運動を実行するとする。第１のコントローラ１３１ａで実行される目標運動Ａと第２のコントローラ１３１ｂで実行される目標運動Ｃとは相反するものであり、同時に実現することができない。具体的には、第２のコントローラ１３１ｂでは、現在の状態に応じて、歩行を中断し、危険回避運動を実行する運動を実行している。目標運動Ｃの危険回避運動では、第１のコントローラ１３１ａの目標運動Ａによる歩行の着地位置と異なる位置に着地する。すなわち、第２のコントローラ１３１ｂでは、予め決められた動きに制限されることなく危険回避運動をするため、センサなどで計測された現在の状態量に応じて、次の着地位置が決定される。よって、目標運動Ｃでは、目標運動Ａの「予め決められた速度、歩幅で決められた方向に歩行する運動」での着地位置とは異なる位置に着地する。この場合、第１のコントローラ１３１ａ、及び第２のコントローラ１３１ｂで算出される駆動量が異なる値となるはずである。
【００５１】
そこで、本実施の形態では、演算処理部１３０に第１のコントローラ１３１ａと第２のコントローラ１３１ｂとを切り替える切替部１４８が設けられている。この切替部１４８は、に第１のコントローラ１３１ａと第２のコントローラ１３１ｂとの目標運動を切り替える。すなわち、第１のコントローラ１３１ａからの駆動量を第１の駆動量とし、第２のコントローラ１３１ｂからの駆動量を第２の駆動量とすると、切替部１４８は、第１の駆動量、及び第２の駆動量の一方の駆動量のみをモータ１４１に出力する。
【００５２】
ここで、切替部１４８は、制御量がリミット値を越えた場合に、第１のコントローラ１３１ａと、第２のコントローラ１３１ｂとを切り替えている。すなわち、切替部１４８による制御の切り替えは、比較部１３７からの切替信号１４７に基づいて行なわれる。ここで、第１のコントローラ１３１ａに設けられている合成部を第１の合成部１３８ａとし、第２のコントローラ１３１ｂに設けられている合成部を第２の合成部１３８ｂとする。さらに、第１の合成部１３８ａに設けられている比較部１３７を第１の比較部１３７ａとし、第２の合成部１３８ｂに設けられている比較部１３７を第２の比較部１３７ｂとする。
【００５３】
第１の比較部１３７ａは、制御量と、リミット値設定部に設定されているリミット値とを比較する。そして、第１の比較部１３７ａは、制御量がリミット値を越えた場合に、切替信号１４７ａを出力する。切替部１４８は、切替信号１４７ａが入力されると、第１のコントローラ１３１ａから第２のコントローラ１３１ｂに切り替える。すなわち、モータ１４１に出力する駆動量を第１の駆動量から第２の駆動量に切り替える。
【００５４】
第２の比較部１３７ｂは、制御量と、リミット値設定部に設定されているリミット値とを比較する。そして、第２の比較部１３７ｂは、制御量がリミット値を越えた場合に、切替信号１４７ｂを出力する。切替部１４８は、切替信号１４７ｂが入力されると、第２のコントローラ１３１ｂから第１のコントローラ１３１ａに切り替える。すなわち、モータ１４１に出力する駆動量を第２の駆動量から第１の駆動量に切り替える。
【００５５】
このように、切替部１４８は切替信号１４７に応じて、第１の駆動量と第２の駆動量とを切り替える。すなわち、切替部１４８は、切替信号１４７ａが入力されると、第１の駆動量から第２の駆動量に切り替えて出力し、切替信号１４７ｂが入力されると、第２の駆動量から第１の駆動量に切り替えて出力する。換言すると、第１のコントローラ１３１ａにおいて制御量がリミット値を越えた場合、切替部１４８が第１の駆動量をモータに出力する。一方、第２のコントローラ１３１ｂにおいて制御量がリミット値を越えた場合、切替部１４８が第２の駆動量をモータに出力する。従って、モータ１４１は、リミット値を越えていないコントローラ１３１からの駆動量に応じて駆動する。
【００５６】
ここで、第１のコントローラ１３１ａが目標運動Ａを実行し、第２のコントローラ１３１ｂが目標運動Ｃを実行する場合について説明する。この場合、演算処理部１３０は、通常、運動目標Ａを実行する。すなわち、第１のコントローラ１３１ａからの駆動量を用いて、予め決められた歩行運動を実行する。従って、通常時では、切替部１４８が、第１の駆動量をモータ１４１に出力する。そして、外乱が加わらない限り、制御量が設定されているリミット値を越えないため、そのまま、第１の駆動量が出力され続ける。ここで、目標運動Ａを実行する第１のコントローラ１３１ａでは、（１）〜（４）の目標姿勢を有している。すなわち、（１）「予め定められている各関節目標角度に追従する」（２）「足平を床面に倣わせる」（３）「胴体を倒立させる」（４）「着地衝撃を吸収する」の目標姿勢を達成するように制御量を算出している。従って、目標運動Ａを実行中では、予め定められている各関節目標角度に追従する歩行動作を行なうことができる。また、歩行動作中は、支持脚の足平が床面に倣い、胴体が倒立した状態で歩行動作を行なっている。そして、着地時には、着地衝撃を吸収している。
【００５７】
しかしながら、目標運動Ａの実行中に、例えば、外乱が加わった場合、制御量が通常時から大きく異なる値となる。すなわち、ロボット１が想到外の状態となるため、状態量が大きく異なっている。よって、目標運動Ａを実行するためには、リミット値を越える制御量が算出されてしまう。しかしながら、複数の制御量１〜ｎのうち、特定の制御量がリミット値を越えてしまう状況において、第１の合成部１３８ａで合成処理を行うと、目標姿勢を全て満たすことができなくなってしまう。すなわち、制御量がリミット値を越えてしまうと、比較部１３７ａは制御量をリミット値に変更する。従って、制御量算出部１３５で実際に算出された制御量ではなく、リミット値内の制御量に基づいて駆動量が求められる。この場合、リミット値を越えた制御量に対応する目標姿勢が達成できなくなってしまう。例えば、足平が床面Ｆに倣っているが、胴体は倒立できない状態になってしまう。これでは、全ての目標姿勢を達成しつつ、「予め決められた速度、歩幅で決められた方向に歩行する」という目標運動Ａを実行することができなくなってしまう。
【００５８】
そこで、本実施の形態では、上述のように、比較部１３７からの切替信号１４７によってコントローラ１３１を切り替えている。すなわち、合成部１３８に設けられている比較部１３７で制御量がリミット値を越えたと判定された場合、他のコントローラに切り替える切替信号１４７を出力する。これにより、制御量がリミット値を越えた比較部１３７を有するコントローラ１３１の駆動量がモータ１４１に出力されなくなり、他のコントローラからの駆動量がモータ１４１に出力される。
【００５９】
予め決められた速度、歩幅で決められた方向に歩行する」という目標運動Ａの実行中に、外乱が生じた場合、危険回避運動を取る必要がある。ここで、外乱が生じると制御量がリミット値を越えるため、第１のコントローラ１３１ａから第２のコントローラ１３１ｂによる制御に切り替えられる。換言すると、比較部１３７ａにおける比較結果で、制御量がリミット値を越えていた場合、現在の歩行動作を続行することができずに、危険回避運動を取る必要があると判定される。そして、第１のコントローラ１３１ａによる目標運動Ａから第２のコントローラ１３１ｂによる目標運動Ｃに切り替える。
【００６０】
このように、本実施の形態では、制御量とリミット値との比較結果によって、複数のコントローラを切り替えている。これにより、複数のコントローラ１３１を切り替えるという複雑な判断を容易に行うことができる。すなわち、制御量がリミット値を越えた場合は、そのコントローラの全目標姿勢を達成できないと判定される。従って、他のコントローラによる制御に切り替えて、切り替えられたコントローラからの駆動量によってモータ１４１を駆動する。これにより、例えば、上記のように目標運動Ａから目標運動Ｃの実行に切り替えることができる。また、反対に第２のコントローラ１３１ｂに設定されたリミット値との比較結果によって、危険回避運動が必要ないと判定して、第２のコントローラ１３１ｂから第１のコントローラ１３１ａによる制御に切り替えてもよい。これにより、通常の歩行動作を実行することができる。
【００６１】
このようにすることによって、コントローラの切替判断を適切に行なうことができる。さらに、合理的にコントローラの切替を実現することができる。制御量算出部１３５を増やした場合でも、容易に切替を行うことができる。また、切替判断となる状態量の選定や、切替アルゴリズムの設計、検証を簡素化することができるため、コントローラの設計を簡単に行なうことができる。よって、複雑な制御を制御性よく行うことができる。なお、上記の説明では、２つのコントローラを切り替える例について説明したが、３つ以上のコントローラを切り替えるように制御してもよい。これにより、現在の状態に応じて適切な目標運動を実行することができる。なお、モータ１４１によって駆動する関節は脚部１０の関節に限られるものではなく、その他の部分の関節であってもよい。このように、モータによって関節を駆動する関節駆動型ロボットに対して複雑な制御を行う場合でもあっても、制御性を高くすることができる。
【図面の簡単な説明】
【００６２】
【図１】本発明に係るロボットの全体を概略的に表した全体概略図である。
【図２】本発明の実施の形態１に係るロボットに設けられた演算処理部を示すブロック線図である。
【図３】本発明の実施の形態１に係るロボットに設けられた合成部を示すブロック線図である。
【図４】本発明の実施の形態２に係るロボットに設けられた合成部を示すブロック線図である。
【符号の説明】
【００６３】
１  ロボット、２  頭部、３  体幹、４  腰部、５  右腕、６左腕、
１０  脚部、２０  右脚、２１  右股関節、２２  右上腿、２３  右膝関節、
２４  右下腿、２５  右足首関節、２６  右足平、
３０  左脚３０、３１  左股関節、３２  左上腿、３３  左膝関節、３４  左下腿、
３５  左足首関節、３６  左足平、
１３０  演算処理部、１３１  コントローラ、１３５  制御量算出部、
１３６  リミット値設定部、１３７  比較部、１３８  合成部、１３９  変換部、
１４１  モータ、１４５  制御量算出部群、１４７  切替信号、１４８  切替部、
【図１】
2008126383.tif 000003
【図２】
2008126383.tif 000004
【図３】
2008126383.tif 000005
【図４】
2008126383.tif 000006