以下に、本開示の実施の形態にかかる制御装置、ロボットシステム、および制御方法を図面に基づいて詳細に説明する。
実施の形態1.
図1は、実施の形態1にかかる制御装置の構成を示す図である。制御装置10は、ロボット(後述するロボット1)の動作を制御する装置である。制御装置10は、ロボット1に所望の動作をさせるため後述するアクチュエータ3を制御する。
制御装置10は、位置制御モード、またはダイレクトティーチ制御モードでロボット1を制御する。位置制御モードは、位置指令に従ってロボット1を制御する制御モードである。ダイレクトティーチ制御モードは、作業者が、ロボット1が備える後述のエンドエフェクタ6などに直接外力を加えて手動でロボット1を動作させる制御モードである。作業者が力を加える箇所は、ロボット1のうち移動可能な箇所である。
なお、作業者が外力を加える位置である制御点(後述するロボット制御点7)は、エンドエフェクタ6に限らず、ロボットアームのアーム部、ロボットアームの関節部など、何れの位置であってもよい。
また、ダイレクトティーチ制御モードには、後述する通常制御モードと、後述する詳細制御モードとがある。作業者は、ダイレクトティーチによって、制御装置10にロボット1の動作位置を教示することができる。
以下の説明では、主にダイレクトティーチ制御モードについて説明する。実施の形態1の制御装置10は、ダイレクトティーチ制御において、通常制御モードおよび詳細制御モードの中から、作業中の作業者の意図に合わせた制御モードに自動的に切替える。
制御装置10は、ダイレクトティーチ制御モードの際には、作業者によるロボット1への手動操作に基づいて、作業者がロボット1を移動させた位置にロボット1を移動させるための動作指令を生成する。制御装置10が生成する動作指令は、ロボット1の動作を制御するための指令である。制御装置10は、動作指令を生成すると、動作指令に従って、ロボット1の位置を制御する。このように、制御装置10は、ダイレクトティーチ制御モードで生成した動作指令を用いて、ロボット1の制御を実行する。
制御装置10は、力検出部5および位置検出部4に接続されている。制御装置10は、外力算出部11と、制御モード判定部12と、動作指令生成部13と、設定部14と、記憶部15と、表示部16と、姿勢演算部17とを備えている。
力検出部5は、ロボット1が備えるロボットアームの先端部とエンドエフェクタ6との間などに配置されている。力検出部5は、エンドエフェクタ6に作用する力およびモーメントを計測するセンサである。力検出部5は、計測した力およびモーメントを制御装置10に送信する。このように、力検出部5は、エンドエフェクタ6に加えられた外力を検出して制御装置10に送信する。
なお、力検出部5は、エンドエフェクタ6に作用する力およびモーメントを、力およびモーメントを計測する6軸力センサを用いて直接計測してもよいが、他の手段で計測してもよい。力検出部5は、例えば、ロボット1の全ての関節に取り付けられたトルクセンサを用いて、ロボット1の手先に作用する力を演算することで力およびモーメントを計測してもよい。
位置検出部4は、ロボット1が備えるロボットアームの関節部などに配置されている。位置検出部4は、関節部に配置されている後述のアクチュエータ3の回転角度を検出するセンサである。位置検出部4が検出する回転角度は、アクチュエータ3のフィードバック制御に利用されるとともに、制御装置10に送信される。
姿勢演算部17は、位置検出部4が検出した回転角度に対して順運動学を用いた演算を実行することにより、ロボット1による作業点であるロボット制御点7の位置および姿勢を算出する。ロボット制御点7は、作業者がダイレクトティーチの際に移動させる点であり、制御装置10は、作業者に教示してもらったロボット制御点7の位置に基づいて、制御プログラムを生成する。
また、姿勢演算部17は、算出したロボット制御点7の位置および姿勢の変化の情報(差分情報)に基づいて、ロボット制御点7の速度および角速度を算出することができる。
このように、姿勢演算部17は、検出した回転角度に基づいて位置および姿勢を算出し、算出した位置および姿勢の変化の情報に基づいて、速度および角速度と加速度および角加速度を算出する。
外力算出部11は、計測された力およびモーメントから、ロボットアームなどの重力、慣性力、遠心力、コリオリ力等の影響を取り除き、作業者が、ロボット1の先端部に加えた力(外力)およびモーメントを算出する。すなわち、外力算出部11は、計測された操作力に基づいて、作業者による操作力を算出する。
重力、慣性力、遠心力、コリオリ力等の計算に用いられる動力学モデルは、記憶部15に格納されている。外力算出部11は、記憶部15から読み出した動力学モデルを用いて、作業者による操作力を算出する。具体的には、外力算出部11は、動力学モデルに、力検出部5が検出した力およびモーメントと、姿勢演算部17が算出した位置、姿勢、速度、および角速度と、外力算出部11が算出した加速度および角加速度とを適用することで、ロボット1の先端部に加えられた力およびモーメントを算出する。
作業者によってロボット1に力が加えられていない場合、ロボット1の動作(姿勢、トルクなど)に基づいて検出される力およびモーメントは、センサを用いて検出された力およびモーメントと略同じになるはずである。したがって、ロボット1の動作に基づいて検出される力およびモーメントと、センサを用いて検出された力およびモーメントとに差がある場合、この差が作業者による操作力であると考えられる。したがって、外力算出部11は、ロボット1の動作に基づいて検出される力およびモーメントと、センサを用いて検出された力およびモーメントとの差に基づいて、作業者による操作力を算出してもよい。
なお、以下の説明では、力検出部5が検出した力およびモーメントを、それぞれ検出力、検出モーメントという場合がある。外力算出部11は、算出した操作力(作業者が加えた力およびモーメント)を制御モード判定部12および動作指令生成部13に送信する。
制御モード判定部12は、外力算出部11が算出した力およびモーメントである操作力(力情報)と、位置検出部4が検出した変化率情報とに基づいて、ダイレクトティーチ制御モードにおける制御モードを判定する。位置検出部4が検出する変化率情報は、例えば、アクチュエータ3の動作の速度を示す速度データである。なお、変化率情報は、アクチュエータ3の動作の角速度を示す角速度データであってもよい。速度データは、ロボット制御点7の位置の変化率に対応し、各速度データは、ロボット制御点7の姿勢の変化率に対応している。実施の形態1の制御装置10がダイレクトティーチ制御モード時に用いる制御モードは、通常制御モードと、詳細制御モードとの何れかである。
ここで、通常制御モードおよび詳細制御モードについて説明する。通常制御モードは、ロボット1の大まかな位置調整に利用することを想定した通常のダイレクトティーチ制御の制御モードである。通常制御モードでは、作業者がロボット1に加えた力およびモーメントを用いた、フィードバック制御系(力フィードバック制御系およびモーメントフィードバック制御系)が組まれている。通常制御モードでは、ロボット1に加えられた力およびモーメントの方向にロボット1が動作し、この時の動作速度は力およびモーメントが大きいほど速くなる。
詳細制御モードは、ロボット1の詳細な位置調整に利用することを想定したダイレクトティーチ制御の制御モードである。詳細制御モードでは、詳細な位置調整を行い易くするため、ダイレクトティーチの際のロボット1の動作速度および動作方向のうちの少なくとも一方が制限される。すなわち、詳細制御モードは、通常制御モードの制御系に対して、動作速度の上限値と動作可能な軸方向との少なくとも一方が設定されることで、動作速度を予め定められた値に制限するか、または動作方向を予め定められた方向に制限する。
制御モード判定部12は、通常制御モードおよび詳細制御モードの何れを適用するかを判定する。制御モード判定部12は、詳細制御モードでロボット1を制御すると判定した場合は、動作させる軸(以下、動作可能軸という)を判定する。動作可能軸は、例えば、エンドエフェクタ6を移動させる軸方向である。換言すると、動作可能軸は、例えば、エンドエフェクタ6の移動を許可する軸方向である。制御モード判定部12は、動作モードの判定結果および動作可能軸を動作指令生成部13に送信する。
動作指令生成部13は、外力算出部11が算出した操作力と、制御モード判定部12が判定した制御モードおよび動作可能軸とに基づいて、ロボット1への動作指令(ロボット動作指令)を生成する。制御装置10では、操作力を打ち消す方向にロボット1が動作するような力制御系が組まれる。
動作指令生成部13は、ロボット1の大まかな位置調整を可能にする通常制御モードでは、作業者がかける力およびモーメントが大きいほどロボット1が速く動作するように動作指令を生成する。
また、動作指令生成部13は、ロボット1の詳細な位置調整を可能にする詳細制御モードでは、作業者がかける力およびモーメントの大きさに関わらず、動作速度と動作可能な軸方向が制限されるように動作指令を生成する。
詳細制御モードにおける動作速度の上限値および動作可能軸(動作可能な方向)は、予め作業者によって設定変更が可能となっている。詳細制御モードにおける動作速度の上限値および動作可能軸は、設定部14を介して記憶部15に登録される。動作指令生成部13は、記憶部15に登録されている動作速度の上限値および動作可能軸の少なくとも一方に基づいて、詳細制御モードでの動作指令を生成する。これにより、詳細制御モードでは、ロボット1の移動速度および移動方向に制限が課される。
詳細制御モードの際に動作可能な軸方向は、X軸方向、Y軸方向、およびZ軸方向のうちの1軸方向または2軸方向である。例えば、詳細制御モードの際に動作可能な軸方向がX軸方向である場合、ロボット1に加えられた力にY軸方向の力およびZ軸方向の力が含まれていても、制御装置10は、ロボット1をX軸方向に平行な方向のみに移動させ、Y軸方向およびZ軸方向には移動させない。すなわち、制御装置10は、詳細制御モードの際に動作可能な軸方向がX軸方向である場合、ロボット1に加えられた力のうちX軸方向の力のみを抽出してロボット1をX軸方向に移動させる。
また、詳細制御モードの際に動作可能な軸方向がX軸方向およびY軸方向の2方向である場合、ロボット1に加えられた力にZ軸方向の力が含まれていても、制御装置10は、ロボット1をXY平面に平行な平面内で移動させ、Z軸方向には移動させない。
なお、X軸方向、Y軸方向、およびZ軸方向で示されるデカルト座標系(直交座標系)は、任意に定義することが可能である。作業者は、デカルト座標系として、ワールド座標系、ロボットハンドに取り付けたツール座標系、または対象ワーク(後述するワーク30)に取り付けたワーク座標系などを事前に選択することが可能である。ツール座標系は、ロボットアームの先端部に取り付けられたツールの位置を原点として定義された座標系である。ワーク座標系は、載置されたワーク30の位置を原点として定義された座標系である。
制御装置10は、詳細制御モードでは、作業者によって予め定義された座標系で、作業者が予め設定した軸方向にのみエンドエフェクタ6を動作させる。このように、制御装置10は、詳細制御モードの動作方向の制限において、動作可能な方向を、予め定義されたデカルト座標系上のX軸方向、Y軸方向、およびZ軸方向のうちの何れかの軸方向に平行な方向に限定する。
なお、制御装置10は、デカルト座標系として、X軸方向周りのA軸方向、Y軸方向周りのB軸方向、およびZ軸方向周りのC軸方向のうちの、予め設定された軸方向にのみエンドエフェクタ6を動作させてもよい。制御装置10は、A軸方向、B軸方向、およびC軸方向のうちの1軸方向または2軸方向に平行な方向にのみエンドエフェクタ6を動作させてもよい。すなわち、制御装置10は、例えば、予め定義されたデカルト座標系上のX軸方向、Y軸方向、およびZ軸方向の何れかの軸の周りの回転方向に動作方向を限定してもよい。
動作指令生成部13は、詳細制御モードの場合には、記憶部15から動作速度の上限値および動作可能な軸方向である動作可能軸を読み出す。動作指令生成部13は、詳細制御モードの場合には、記憶部15から読み出した動作速度の上限値よりも遅い動作速度で、かつ動作可能軸の軸方向にロボット制御点7を移動させる動作指令を生成する。
設定部14は、外部端末などから送られてくる制御に用いられる種々の制御設定を受信して、制御用の情報に設定する。設定部14は、例えば、作業者が外部端末などに入力した制御設定を外部端末から受信して、制御用の情報に設定する。設定部14は、制御用の情報が変更される際に、外部端末などから制御設定を受信する。設定部14は、制御用の情報を記憶部15などに格納する。
記憶部15は、ロボット1の動力学モデルに関する物理情報、制御に用いる種々の情報(制御設定など)を格納する。記憶部15が格納している情報の例は、制御装置10が用いる座標系の情報、詳細制御モードの際の動作速度の上限値および動作可能軸の情報などである。
表示部16は、制御装置10が用いる情報を表示する。なお、表示部16は、制御装置10の構成要素に含まれていなくてもよい。この場合、表示部16は、制御装置10の外部に配置され、制御装置10に接続される。
このように、実施の形態1の制御装置10は、作業者による操作力である力情報(外力算出部11が算出した力およびモーメント)と、ロボット制御点7の位置または姿勢の変化率(速度データまたは角速度データ)とに基づいて、通常制御モードと、詳細制御モードとを切替える。
図2は、実施の形態1にかかる制御装置を備えたロボットシステムの構成を示す図である。ロボットシステム2は、ロボット1と、制御装置10とを備えている。ロボットシステム2では、制御装置10がロボット1に接続されており、制御装置10がロボット1を制御する。
ロボット1は、1または複数の関節を有している。ロボット1には、各関節にアクチュエータ3と位置検出部4とが搭載されている。制御装置10は、位置検出部4が検出した位置、姿勢、速度、および角速度に基づいて、アクチュエータ3を駆動することで、ロボット1の姿勢を制御する。また、ロボット1は、ロボットアームの先端部に力検出部5を備えている。また、ロボット1には、力検出部5の先にハンド等のエンドエフェクタ6が搭載されている。ロボット制御点7は、例えば、エンドエフェクタ6内の何れかの位置である。ロボット制御点7は、作業者によって任意に変更可能である。制御装置10は、作業者によって設定されたロボット制御点7に基づいて、ダイレクトティーチ制御モードでロボット1を制御する。
制御装置10は、ダイレクトティーチ制御モードでロボット1を制御する際に、力検出部5が検出した力情報(検出力および検出モーメント)と、位置検出部4が検出した変化率情報(速度および角速度)とを用いて、制御モードを通常制御モードまたは詳細制御モードに切替える。
ここで、通常制御モードが実行される際のエンドエフェクタ6の動作、および詳細制御モードが実行される際のエンドエフェクタ6の動作について説明する。図3は、実施の形態1にかかる制御装置が通常制御モードを実行する際のエンドエフェクタの動作を説明するための図である。
通常制御モードは、ロボット1の大まかな位置調整が実行される際に適用される制御モードである。作業者は、エンドエフェクタ6の位置を教示する際に、エンドエフェクタ6を大きな力または高速で移動させる場合がある。図3では、作業者がエンドエフェクタ6を位置21から、ワーク30が載置されている位置の近傍の位置である位置22まで、大きな力または高速で移動させる場合を示している。
図4は、実施の形態1にかかる制御装置が詳細制御モードを実行する際のエンドエフェクタの動作を説明するための図である。図4では、図4の紙面に垂直な方向をX軸方向とし、図4の紙面内で互いに垂直な2つの方向をY軸方向およびZ軸方向としている。詳細制御モードは、ロボット1の詳細な位置調整が実行される際に適用される制御モードである。
作業者は、エンドエフェクタ6の位置を教示する際に、エンドエフェクタ6を小さな力で且つ低速で移動させる場合がある。図4では、作業者がエンドエフェクタ6を位置23から、ワーク30が載置されている位置24まで、小さな力で且つ低速で移動させる場合を示している。
ロボット1への教示作業は、図3に示すように、エンドエフェクタ6を教示位置の周辺まで動作させる作業(以下、大移動作業という場合がある)と、図4に示すようにエンドエフェクタ6を詳細な位置に微調整する作業(以下、小移動作業という場合がある)とに大別できる。作業者が大移動作業を実行する際には、エンドエフェクタ6が大きな力または高速で移動させられるので、制御装置10は通常制御モードを選択する。一方、作業者が小移動作業を実行する際には、エンドエフェクタ6が小さな力で且つ低速で移動させられるので、制御装置10は詳細制御モードを選択する。
制御装置10は、作業者がエンドエフェクタ6に加えた力情報が特定値(後述する力判定値)よりも大きいか、または作業者が移動させたエンドエフェクタ6の速度情報が特定値(後述する速度判定値)よりも大きい場合に、通常制御モードを適用する。この場合、制御装置10は、エンドエフェクタ6に加えられた力の方向に、力の大きさに応じた速度または角速度でエンドエフェクタ6を移動させる。
制御装置10は、作業者がエンドエフェクタ6に加えた力情報が力判定値以下で、且つ作業者が移動させたエンドエフェクタ6の速度情報が速度判定値以下の場合に、詳細制御モードを適用する。この場合、制御装置10は、エンドエフェクタ6の移動速度および移動方向の少なくとも一方に制限を与える。
制御装置10が、通常制御モードおよび詳細制御モードの何れを適用するかを判定する際に用いる力情報は、作業者がエンドエフェクタ6に加えた力およびモーメントである。したがって、力判定値は、力の基準値の情報と、モーメントの基準値の情報とを含んでいる。
制御装置10は、作業者がエンドエフェクタ6に加えた力が力の基準値よりも大きい場合、および作業者がエンドエフェクタ6に加えたモーメントがモーメントの基準値よりも大きい場合の少なくとも一方が成立する場合に、力情報が力判定値よりも大きいと判定する。
また、制御装置10は、作業者がエンドエフェクタ6に加えた力が力の基準値以下の場合、且つ作業者がエンドエフェクタ6に加えたモーメントがモーメントの基準値以下の場合に、力情報が力判定値以下であると判定する。
制御装置10が、通常制御モードおよび詳細制御モードの何れを適用するかを判定する際に用いる速度情報は、作業者が移動させたエンドエフェクタ6の速度および角速度である。したがって、速度判定値は、速度の基準値の情報と、角速度の基準値の情報とを含んでいる。
制御装置10は、作業者が移動させたエンドエフェクタ6の速度が速度の基準値よりも大きい場合、および作業者が移動させたエンドエフェクタ6の角速度が角速度の基準値よりも大きい場合の少なくとも一方が成立する場合に、速度情報が速度判定値よりも大きいと判定する。
また、制御装置10は、作業者が移動させたエンドエフェクタ6の速度が速度の基準値以下の場合、且つ作業者が移動させたエンドエフェクタ6の角速度が角速度の基準値以下の場合に、速度情報が速度判定値以下であると判定する。
このように、制御装置10は、以下の条件C1~C4の何れかが成立する場合に、通常制御モードを適用する。
(C1)エンドエフェクタ6に加えられた力が力の基準値よりも大きい
(C2)エンドエフェクタ6に加えられたモーメントがモーメントの基準値よりも大きい
(C3)エンドエフェクタ6の速度が速度の基準値よりも大きい
(C4)エンドエフェクタ6の角速度が角速度の基準値よりも大きい
一方、制御装置10は、以下の条件C5~C8の全てが成立する場合に、詳細制御モードを適用する。
(C5)エンドエフェクタ6に加えられた力が力の基準値以下である
(C6)エンドエフェクタ6に加えられたモーメントがモーメントの基準値以下である
(C7)エンドエフェクタ6の速度が速度の基準値以下である
(C8)エンドエフェクタ6の角速度が角速度の基準値以下である
図5は、実施の形態1にかかる制御装置がダイレクトティーチ制御モード時に実行する処理の処理手順を示すフローチャートである。ここでは、制御装置10が、ダイレクトティーチ制御モード時に通常制御モードと詳細制御モードとの何れを選択するかの選択処理について説明する。
制御装置10の外力算出部11は、力検出部5が検出した検出力および検出モーメントを力検出部5から受信する。また、外力算出部11は、位置検出部4が検出した位置、姿勢、速度、および角速度を位置検出部4から受信する。
外力算出部11は、力検出部5が計測した力およびモーメントと、位置検出部4が検出した位置、姿勢、速度、および角速度と、動力学モデルとに基づいて、作業者が、エンドエフェクタ6に加えた力およびモーメントを算出する。外力算出部11は、算出した力およびモーメントを示す力情報(操作力)を、制御モード判定部12に送信する。また、外力算出部11は、速度および角速度を示す速度情報を制御モード判定部12に送信する。
制御モード判定部12は、速度情報が速度判定値よりも大きいか否かを判定する(ステップS10)。すなわち、作業者が移動させたエンドエフェクタ6の速度が速度の基準値よりも大きいか否か、または作業者が移動させたエンドエフェクタ6の角速度が角速度の基準値よりも大きいか否かを判定する。
制御モード判定部12は、速度情報が速度判定値よりも大きいと判定した場合(ステップS10、Yes)、制御モードを通常制御モードに決定する(ステップS20)。制御モード判定部12は、通常制御モードに決定したことを動作指令生成部13に通知する。これにより、動作指令生成部13は、通常制御モードに応じた制御を実行する。すなわち、動作指令生成部13は、作業者がかける力およびモーメントが大きいほどロボット1が速く動作するように動作指令を生成する。
動作指令生成部13が通常制御モードに応じた制御を実行している間、制御モード判定部12は、速度情報が速度判定値よりも大きいか否かを判定する(ステップS10)。制御モード判定部12は、速度情報が速度判定値以下であると判定した場合(ステップS10、No)、力情報が力判定値よりも大きいか否かを判定する(ステップS30)。すなわち、作業者がエンドエフェクタ6に加えた力が力の基準値よりも大きいか否か、または作業者がエンドエフェクタ6に加えたモーメントがモーメントの基準値よりも大きいか否かを判定する。
制御モード判定部12は、力情報が力判定値よりも大きいと判定した場合(ステップS30、Yes)、制御モードを通常制御モードに決定する(ステップS20)。制御モード判定部12は、通常制御モードに決定したことを動作指令生成部13に通知する。これにより、動作指令生成部13は、通常制御モードに応じた制御を実行する。
一方、制御モード判定部12は、力情報が力判定値以下であると判定した場合(ステップS30、No)、制御モードを詳細制御モードに決定する(ステップS40)。制御モード判定部12は、詳細制御モードに決定したことを動作指令生成部13に通知する。これにより、動作指令生成部13は、詳細制御モードに応じた制御を実行する。すなわち、動作指令生成部13は、動作速度の上限値と動作可能な軸方向に制限を与えながらエンドエフェクタ6の動作を制御する。制御装置10は、ステップS10~S40の処理を繰り返す。
このように、制御装置10は、速度情報および力情報に基づいて、ダイレクトティーチ制御モードを、通常制御モードおよび詳細制御モードの何れかに自動的に切替える。このように、制御装置10が、作業者の意図と一致する制御モードに自動変更できるので、作業者は、制御モードを手動で切替える必要が無い。
つぎに、大移動作業の場合の力情報および速度情報の例と、小移動作業の場合の力情報および速度情報の例とについて説明する。図6は、実施の形態1にかかる制御装置が力情報および速度情報の第1例に対して選択する制御モードの例を説明するための図である。図6では、停止しているエンドエフェクタ6が作業者による操作によって移動を開始し、その後、移動を停止する場合の力情報の推移および速度情報の推移の例を示している。図6に示す上段および下段のグラフの横軸は時間である。また、図6に示す上段のグラフの縦軸は力情報であり、下段のグラフの縦軸は速度情報である。
図6では、大移動作業において、作業者がロボット1に加えた力に対応する力情報と、ロボット制御点7の速度に対応する速度情報と、選択される制御モードとの関係を示している。作業者は、大移動作業を実行する際には、ロボット1を大きく移動する必要があるので、エンドエフェクタ6を適度に速く動かしたいという心理が働き、エンドエフェクタ6に加える力が必然的に大きくなる。したがって、制御装置10は、動作開始直後は、詳細制御モードを選択しているが、瞬時に通常制御モードに切替えるので、ストレスのない移動が可能となる。
すなわち、大移動作業の実行前および大移動作業が開始された直後は、力情報が力判定値V1以下であり、且つ速度情報が速度判定値V2以下であるので、制御装置10は、詳細制御モードを選択する。そして、大移動作業が開始された後、力情報が力判定値V1よりも大きくなるか、速度情報が速度判定値V2よりも大きくなると、制御装置10は、通常制御モードに切替える。図6では、力情報が力判定値V1よりも大きくなり、且つ速度情報が速度判定値V2よりも大きくなる時間を時刻T1で示している。
また、大移動作業の動作途中に加えられる力が一瞬だけ弱くなるような場合も想定されるが、力情報の変動に対して速度情報の追従が緩やかであるので、制御モードが不用意に切替えられることはない。
この後、作業者が、エンドエフェクタ6を停止させようとすると、力情報が力判定値V1以下になり、且つ速度情報が速度判定値V2以下になる。図6では、力情報が力判定値V1以下となった後に、速度情報が速度判定値V2以下となる時間を時刻T2で示している。このように、制御装置10は、力情報が力判定値V1以下になり、且つ速度情報が速度判定値V2以下になると、詳細制御モードに切替える。
図7は、実施の形態1にかかる制御装置が力情報および速度情報の第2例に対して選択する制御モードの例を説明するための図である。図7では、詳細制御モードの際の力情報の推移および速度情報の推移の例を示している。図7に示す上段および下段のグラフの横軸は時間である。また、図7に示す上段のグラフの縦軸は力情報であり、下段のグラフの縦軸は速度情報である。
図7では、小移動作業において、作業者がロボット1に加えた力に対応する力情報と、ロボット制御点7の速度に対応する速度情報と、選択される詳細制御モードとの関係を示している。作業者は、小移動作業を実行する際には、ロボット1の微細な位置調整を行うので、ロボット1をゆっくり動かそうという心理が働き、エンドエフェクタ6に加える力が必然的に小さくなる。したがって、制御装置10は、小移動作業の場合には、詳細制御モードを常時選択することとなる。
図7では、力情報が力判定値V1以下であり、速度情報が速度判定値V2以下であり、詳細制御モードが選択されている状態を示している。制御装置10は、詳細制御モードを選択している間は、動作速度に上限を設けておく。図7では、制御装置10が、詳細制御モードの間に、動作速度の上限値である速度リミッタV3を設けている場合を示している。速度リミッタV3は、速度判定値V2以下の値である。
制御装置10は、力の入力に対する動作感度を調整できるようなダイレクトティーチ制御システムに適用される場合がある。この場合、ダイレクトティーチ制御では、力制御系が組まれているので、応答の感度は力フィードバックゲインによって大きく変わる。そして、外力×ゲイン(外力とゲインとの乗算値)が速度に比例するので、ゲインを上げると、弱い力でも速度が上がることとなる。このような場合、弱い力で操作されたにもかかわらず速度が大きくなる場合が想定されるが、制御装置10は、詳細制御モードの間は動作速度に上限を設けているので、不用意な制御モードの切替えを抑制することが可能となる。
このように、作業者は、目標の教示位置までエンドエフェクタ6を大まかな移動をさせる場合は、比較的大きな力でエンドエフェクタ6を動作させようとするので、エンドエフェクタ6の動作速度も速くなる。一方、作業者は、細かな位置調整を行う場合は、比較的小さな力でエンドエフェクタ6を動作させようとするので、エンドエフェクタ6の動作速度も遅くなる。
したがって、制御装置10は、以下の制御モードの切替条件例に基づいて、制御モードを切替えることにより、作業者の意図に合う制御モードに自動的に切替えることができる。また、制御装置10は、力情報および速度情報の両方の情報を用いることにより、通常制御モード中に一瞬だけ力が変動しても、不用意に制御モードが切替わることを防止できるので、モード切替えの誤判定を防ぐことができる。
<制御モードの切替条件例>
通常制御モード:(F>3Nm)または(V>10mm/s)
詳細制御モード:(V≦10mm/s)かつ(F≦3Nm)
なお、ここでのFは、作業者が加えた力であり、Vはロボット制御点7の速度である。
制御装置10を上述した構成および動作とすることで、作業者が意図した通りの制御モードが自動選択されるユーザインタフェースを提供できる。
図6に示したように、力情報は急激に変化する場合がある。このような場合において、速度情報を考慮せずに制御モードを切替えると、突発的な力の変化であっても制御モードを切替えてしまい、不安定な制御となってしまう。このため、速度情報を考慮せずに制御モードの切替え判定を正しく行うためには、長時間の力の測定が必要となる。この場合、力を加えてから制御モードが切替わるまでにタイムラグが発生し、力の大きさに応じた適切な制御モードで制御することができなくなる。すなわち、速度情報を考慮しない場合、制御モードの切替え判定の安定化のためには数サイクル分の力の変化情報を用いる必要があるので、制御モードの切替えに時間遅れが生じ、作業者の意図した制御モードに瞬時に切替わらない。
一方、実施の形態1の制御装置10は、力情報とともに速度情報も考慮して制御モードを詳細制御モードと通常制御モードとの何れかに設定しているので、力の大きさに応じた適切な制御モードでロボット1を制御することができる。
これにより、制御装置10は、ダイレクトティーチにおいても、高精度なティーチングを容易に実現できるとともに、作業者の意図した制御モードに自動的に切替えることができるので、操作性が向上する。また、制御装置10が適用された場合、作業者は、ダイレクトティーチ中に制御モードを切替える必要がないので、ダイレクトティーチの操作が容易になり、何れの作業者であっても直感的に操作することが可能となる。
このように実施の形態1の制御装置10は、速度情報および力情報に基づいて、通常制御モードまたは詳細制御モードを設定しているので、高精度なティーチングを容易に実現できる。
実施の形態2.
つぎに、図8および図9を用いて実施の形態2について説明する。実施の形態2では、制御装置10が、詳細制御モード中の動作方向を、力検出部5が検出した検出力または検出モーメントの方向に基づいて制限する。
図8は、実施の形態2にかかる制御装置が詳細制御モード中に力検出部が検出した力ベクトルの方向に基づいて決定する動作方向を説明するための図である。図8では、図8の紙面に垂直な方向をX軸方向とし、図8の紙面内で互いに垂直な2つの方向をY軸方向およびZ軸方向としている。図8では、詳細制御モード中のデカルト座標系におけるエンドエフェクタ6に加えられる力のイメージを示している。
制御装置10は、力検出部5が検出した検出力の方向に基づいて、作業者がロボット制御点7をデカルト座標系の何れの軸方向(X軸方向、Y軸方向、Z軸方向)に動作させようとしているかを演算し、動作させようとしている軸方向のみにエンドエフェクタ6を動作させる。すなわち、制御装置10が、詳細制御モード中に力検出部5が検出した検出力の方向に基づいて、作業者がエンドエフェクタ6を移動させようとする方向が、X軸方向、Y軸方向、およびZ軸方向の何れの方向であるかを判定する。そして、制御装置10は、判定した方向にのみエンドエフェクタ6の移動を許可する。
図8では、作業者が、ツール座標系のZ軸方向にエンドエフェクタ6を動作させようとしている場合を示している。この場合において、エンドエフェクタ6に実際に作用する力ベクトル51には、ツール座標系上のX軸方向の成分およびY軸方向の成分も僅かに含まれている。
制御装置10は、力検出部5が検出した検出力のベクトルである力ベクトル51とデカルト座標系の各軸ベクトル(X軸ベクトル50X、Y軸ベクトル50Y、Z軸ベクトル50Z)との内積を比較することで、作業者が何れの軸方向にエンドエフェクタ6を動作させようしているかを推定する。具体的には、制御装置10は、力ベクトル51とデカルト座標系の各軸ベクトルとの内積のうち、内積が最大の軸ベクトルの方向にのみエンドエフェクタ6の移動を許可する。このように、制御装置10は、内積を比較することで、作業者が何れの軸方向にエンドエフェクタ6を動作させようとしているかを容易に推定できる。
図8に示す例では、力ベクトル51とZ軸ベクトル50Zとの内積が、他の内積よりも大きいので、制御装置10は、作業者がZ軸方向にエンドエフェクタ6を動作させようとしていることを容易に推定できる。この場合、制御装置10は、X軸方向およびY軸方向にエンドエフェクタ6が動作しないように、エンドエフェクタ6の動作に制限をかける。これにより、制御装置10は、作業者の操作に応じた軸方向にのみエンドエフェクタ6を動作させることができるので、詳細制御モードにおいて詳細な操作を実現することができる。
なお、デカルト座標系は、任意に定義することが可能である。作業者は、デカルト座標系として、ワールド座標系、ロボットハンドに設定したツール座標系、または対象ワークに設定したワーク座標系などを事前に選択することが可能である。制御装置10は、作業者によって定義された座標系に基づいて、作業者が何れの軸方向にエンドエフェクタ6を動作させようしているかを推定する。
なお、制御装置10が、詳細制御モード中にエンドエフェクタ6を動作させる軸方向は1方向に限らず、2方向でもよい。すなわち、制御装置10が、詳細制御モード中にエンドエフェクタ6をXY平面内、YZ平面内、およびZX平面内の何れかの面内で移動させてもよい。換言すると、制御装置10は、詳細制御モード中には、X軸方向、Y軸方向、およびZ軸方向のうちの1軸方向または2軸方向への動作を制限する。
制御装置10は、例えば、力検出部5が検出した各軸方向の検出力の大きさに基づいて、XY平面内、YZ平面内、およびZX平面内の何れかの面内で移動させるか、X軸方向、Y軸方向、およびZ軸方向の何れかの軸方向に移動させるかを判定する。
例えば、X軸方向、Y軸方向、およびZ軸方向のうち、力が最も大きな軸方向を第1軸方向、力が2番目に大きな軸方向を第2軸方向、力が最も小さな軸方向を第3軸方向とする。この場合において、制御装置10は、第1軸方向の力と、第2軸方向の力との差が第1の閾値以下である場合に、第1軸方向および第2軸方向を含む面内方向にのみエンドエフェクタ6を移動させ、他の方向にはエンドエフェクタ6を移動させない。この場合、制御装置10は、第1軸方向の力と、第2軸方向の力との差が第1の閾値よりも大きい場合に、第1軸方向にのみエンドエフェクタ6を移動させ、他の方向にはエンドエフェクタ6を移動させない。
また、制御装置10は、第2軸方向の力と、第3軸方向の力との差が第2の閾値以上の場合に、第1軸方向および第2軸方向を含む面内方向にのみエンドエフェクタ6を移動させ、他の方向にはエンドエフェクタ6を移動させないようにしてもよい。この場合、制御装置10は、第2軸方向の力と、第3軸方向の力との差が第2の閾値よりも小さい場合に、第1軸方向にのみエンドエフェクタ6を移動させ、他の方向にはエンドエフェクタ6を移動させないようにする。
このように、制御装置10は、詳細制御モードの動作方向の制限において、動作可能な方向を、予め定義されたデカルト座標系上のX軸方向、Y軸方向、およびZ軸方向のうちの何れかの軸方向に平行な方向に限定する。制御装置10は、エンドエフェクタ6の移動方向が、力検出部5が検出した力の方向に一番近い軸方向となるように、ロボット1を制御する。
なお、実施の形態2において、制御装置10は、デカルト座標系におけるX軸方向、Y軸方向、およびZ軸方向の代わりに、X軸周りの回転であるA軸方向、Y軸周りの回転であるB軸方向、Z周りの回転であるC軸方向を用いてもよい。制御装置10は、軸周りの軸方向を用いる場合も、デカルト座標系での処理と同様の処理によって、エンドエフェクタ6の動作を特定方向の動作のみに限定する。
図9は、実施の形態2にかかる制御装置が詳細制御モード中に力検出部が検出したモーメントベクトルの方向に基づいて決定する動作方向を説明するための図である。図9では、図9の紙面に垂直な方向の回転軸方向をA軸方向とし、図9の紙面内で互いに垂直な2つの方向の回転軸方向をB軸方向およびC軸方向としている。図9では、詳細制御モード中のデカルト座標系におけるエンドエフェクタ6に加えられるモーメントのイメージを示している。
制御装置10は、力検出部5が検出した検出モーメントの方向に基づいて、作業者がロボット制御点7をデカルト座標系の何れの軸方向(A軸方向、B軸方向、C軸方向)に動作させようとしているかを演算し、動作させようとしている軸方向のみにエンドエフェクタ6を動作させる。そして、制御装置10は、判定した方向にのみエンドエフェクタ6の移動を許可する。
図9では、作業者が、ツール座標系のC軸方向(Z軸周りの回転)にエンドエフェクタ6を回転させようとしている場合を示している。この場合において、エンドエフェクタ6に実際に作用するモーメントベクトル61には、ツール座標系上のA軸方向(X軸周りの回転)の回転成分およびB軸方向(Y軸周りの回転)の回転成分も僅かに含まれている。
制御装置10は、力検出部5が検出した検出モーメントのベクトルであるモーメントベクトル61とデカルト座標系の各軸ベクトル(A軸ベクトル60A、B軸ベクトル60B、C軸ベクトル60C)との内積を比較することで、作業者が何れの軸方向にエンドエフェクタ6を動作させようしているかを推定する。
図9に示す例では、モーメントベクトル61とC軸ベクトル60Cとの内積が、他の内積よりも大きいので、制御装置10は、作業者がC軸方向にエンドエフェクタ6を動作させようとしていることを容易に推定できる。この場合、制御装置10は、A軸方向を回転軸とした動作、およびB軸方向を回転軸とした動作が行われないように、エンドエフェクタ6の動作に制限をかける。
このように、制御装置10は、詳細制御モードの動作方向の制限において、動作可能な方向を、予め定義されたデカルト座標系上のX軸方向、Y軸方向、Z軸方向の何れかの軸の周りの回転方向に限定する。制御装置10は、エンドエフェクタ6の回転方向が、力検出部5が検出したモーメントの方向に一番近い方向となるように、ロボット1を制御する。
このように実施の形態2によれば、制御装置10は、詳細制御モードの際に力情報および速度情報に基づいて、制御モードを切替えるので、実施形態1と同様の効果を得ることができる。
また、制御装置10は、エンドエフェクタ6の移動方向が、力検出部5が検出した力の方向に一番近い軸方向となるようにロボット1を制御するので、作業者が微小な位置調整を行う際に、動作させたくない方向には動作しないように制御でき、これにより作業性を向上させることができる。
また、制御装置10は、エンドエフェクタ6の回転方向が、力検出部5が検出したモーメント力の方向に一番近い回転方向となるようにロボット1を制御するので、作業者が微小な位置調整を行う際に、動作させたくない方向には回転しないように制御でき、これにより作業性を向上させることができる。
実施の形態3.
つぎに、図10を用いて実施の形態3について説明する。実施の形態3では、制御装置10が、詳細制御モード中の動作を、連続的に動作させるのではなく、予め定めた微小量の移動と、停止とを特定周期で繰り返すように制御する。
図10は、実施の形態3にかかる制御装置が制御する、詳細制御モード中におけるエンドエフェクタの移動量を説明するための図である。図10に示すグラフの横軸は時間であり、縦軸はエンドエフェクタ6の移動量である。
実施の形態3の制御装置10は、作業者がエンドエフェクタ6に対して連続的に力を加えた場合であっても、エンドエフェクタ6の一時停止と、エンドエフェクタ6の移動とを繰り返すようにエンドエフェクタ6の動作を制御する。この場合の1回当たりの一時停止時間は、一定時間であり、ロボット1の1回当たりの移動量は一定量M1である。したがって、作業者がエンドエフェクタ6に対して一定の力を加える場合、一定時間の停止と、一定速度での移動(一定量M1の移動)とが繰り返される。
なお、1回当たりの一時停止時間および1回当たりの移動時間が、一定時間であってもよい。この場合も、作業者がエンドエフェクタ6に対して一定の力を加える場合、一定時間の停止と、一定速度での移動(一定量M1の移動)とが繰り返される。
ロボット1の1回当たりの移動量である一定量M1は、作業者が制御装置10に設定可能となっている。また、ロボット1の1回当たりの移動時間は、作業者が制御装置10に設定可能となっている。また、ロボット1の1回当たりの一時停止時間は、作業者が制御装置10に設定可能となっている。
ロボット1の1回当たりの移動量が一定量M1である場合、制御装置10は、作業者によって設定されたロボット1の1回当たりの移動量に基づいて動作指令を生成する。また、1回当たりの移動時間が一定時間である場合、制御装置10は、作業者によって設定されたロボット1の1回当たりの移動時間に基づいて動作指令を生成する。また、1回当たりの一時停止時間が一定時間である場合、制御装置10は、作業者によって設定されたロボット1の1回当たりの一時停止時間に基づいて動作指令を生成する。
エンドエフェクタ6の移動量は、一定量M1であるので、エンドエフェクタ6が高速で操作された場合、エンドエフェクタ6の移動時間は短くなり、エンドエフェクタ6が低速で操作された場合、エンドエフェクタ6の移動時間は長くなる。
なお、エンドエフェクタ6の移動時間が一定時間である場合、エンドエフェクタ6が高速で操作された場合、エンドエフェクタ6の移動量は大きくなり、エンドエフェクタ6が低速で操作された場合、エンドエフェクタ6の移動量は小さくなる。
制御装置10は、エンドエフェクタ6に対する力の大きさに応じてエンドエフェクタ6の速度を変えてもよいし、エンドエフェクタ6に対する力の大きさが特定量以上である場合には、力の大きさにかかわらずエンドエフェクタ6の速度を一定にしてもよい。制御装置10が、エンドエフェクタ6の速度を一定に制御する場合、エンドエフェクタ6は、予め定められた微小量だけの移動を繰り返すこととなる。
図10では、作業者が、時刻T3でエンドエフェクタ6に連続的な力を加えはじめた場合を示している。この場合、制御装置10は、時刻T3からエンドエフェクタ6が一定量M1を移動するまでの時間(時刻T3から時刻T4までの時間)だけエンドエフェクタ6を移動させ、一定量M1を移動した時刻T4でエンドエフェクタ6を停止させる。制御装置10は、時刻T4から一定時間(時刻T4から時刻T5までの時間)だけエンドエフェクタ6を一時停止させ、時刻T5で一時停止を解除する。
そして、制御装置10は、エンドエフェクタ6への力の印加が継続している場合には、時刻T5からエンドエフェクタ6が一定量M1を移動するまでの時間(時刻T5から時刻T6までの時間)だけエンドエフェクタ6を移動させ、一定量M1を移動した時刻T6でエンドエフェクタ6を停止させる。制御装置10は、時刻T6から一定時間(時刻T3から時刻T4までの時間と同じ時間)だけエンドエフェクタ6を一時停止させ、その後、一時停止を解除する。
エンドエフェクタ6へかけられる力の大きさが一定である場合、時刻T3から時刻T4までの間にエンドエフェクタ6が移動する移動量と、時刻T5から時刻T6までの間にエンドエフェクタ6が移動する移動量とは一定量M1である。
このように、制御装置10は、エンドエフェクタ6に連続的な力が加えられている場合であっても、エンドエフェクタ6の移動と停止とを繰り返す。図10では、一時停止時間および移動時間が、一定時間である場合を示している。この場合、エンドエフェクタ6の移動と停止とは、一定周期(特定周期)Txで繰り返される。一定周期Txの時間は、時刻T3から時刻T5までの時間である。
制御装置10は、移動量を小さい値に設定することで、移動量単位での微細な位置調整および微小な姿勢調整を容易に実現できる。
このように実施の形態3によれば、制御装置10は、微小量の移動と停止とを一定周期Txで繰り返すようにエンドエフェクタ6の移動を制御しているので、力を加えた方向にエンドエフェクタ6が動き続けるというダイレクトティーチの利便性を損なうことなく、一定量単位での細かな位置調整が可能となる。
ここで、制御装置10のハードウェア構成について説明する。図11は、実施の形態1~3にかかる制御装置を実現するハードウェア構成例を示す図である。制御装置10は、入力装置300、プロセッサ100、メモリ200、および出力装置400により実現することができる。プロセッサ100の例は、CPU(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、DSP(Digital Signal Processor)ともいう)またはシステムLSI(Large Scale Integration)である。メモリ200の例は、RAM(Random Access Memory)、ROM(Read Only Memory)である。
制御装置10は、プロセッサ100が、メモリ200で記憶されている制御装置10の動作を実行するための、コンピュータで実行可能な、制御プログラムを読み出して実行することにより実現される。制御装置10の動作を実行するためのプログラムである制御プログラムは、制御装置10の手順または方法をコンピュータに実行させるものであるともいえる。
制御装置10で実行される制御プログラムは、外力算出部11と、制御モード判定部12と、動作指令生成部13と、設定部14と、姿勢演算部17とを含むモジュール構成となっており、これらの構成要素が主記憶装置上にロードされ主記憶装置上に生成される。
入力装置300は、力検出部5が検出した力およびモーメントを力検出部5から受信してプロセッサ100に送る。また、入力装置300は、位置検出部4が検出した位置、姿勢、速度、および角速度を位置検出部4から受信してプロセッサ100に送る。
メモリ200は、力判定値V1、速度判定値V2、速度リミッタV3などを記憶する。また、メモリ200は、プロセッサ100が各種処理を実行する際の一時メモリに使用される。出力装置400は、ロボット1に制御動作を出力する。
制御プログラムは、インストール可能な形式または実行可能な形式のファイルで、コンピュータが読み取り可能な記憶媒体に記憶されてコンピュータプログラムプロダクトとして提供されてもよい。また、制御プログラムは、インターネットなどのネットワーク経由で制御装置10に提供されてもよい。なお、制御装置10の機能について、一部を専用回路などの専用のハードウェアで実現し、一部をソフトウェアまたはファームウェアで実現するようにしてもよい。
なお、制御装置10が備える構成要素の一部のハードウェア構成を、図11に示したハードウェア構成としてもよい。
以上の実施の形態に示した構成は、一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、実施の形態同士を組み合わせることも可能であるし、要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。