以下、一実施の形態について図面を参照しつつ説明する。
<1.ロボットシステムの構成>
まず、図1を参照しつつ、本実施形態に係るロボットシステム1の構成の一例について説明する。
図1に示すように、ロボットシステム1は、第1容器3と、ロボット5と、載置台7と、第2容器9と、治具11とを有する。
第1容器3(第1の容器の一例)は、上方から見た形状が例えば略四角形状であり、底部を備えた有底状の容器である。第1容器3の一例として、例えば金属製のドラム缶が挙げられる。なお、第1容器3の形状は四角形(直方体形状)に限らず、例えば六角形等の他の多角形状や、円形(円筒形状)の容器としてもよい。また、例えば樹脂製等、金属製以外の容器としてもよい。第1容器3は、例えば台車(図示省略)により移動されてロボット5の近傍に設置され、空になるとワークWが収容された新たな第1容器3に交換される。
第1容器3の内部にはワークWが収容されている。ワークWの種類は、ロボット5のエンドエフェクタ13によりすくうことが可能であれば、特に限定されるものではない。例えば、粘体、粉体、粒体、液体、半固形体、バラ積みされた固形物等である。具体的には、クリーム、餡子、ご飯、アイスクリーム等の粘性の高い物体が好適である。また、バラ積みされた揚げ物等でもよい。なお、食品に限定されるものではなく、工業材料でもよい。例えば、樹脂材、ゴム材、溶剤、バラ積みされた部品(ネジや釘等)等も含まれる。本実施形態は、ワークWが、エンドエフェクタ13によるすくい動作の最中に、後述するトルクセンサTs1~Ts6により検出されるトルクが増大する性質を有する物体である場合に、特に有効である。
ロボット5は、ワークWを移送元の第1容器3から移送先の第2容器9に移送する作業(所定の作業の一例)を行う。ロボット5は、例えば6つの関節部を備えた垂直多関節型の6軸ロボットとして構成されており、その先端にはエンドエフェクタ13が取り付けられている。エンドエフェクタ13は、例えばスコップ状又はシャベル状のツールである。ロボット5は、第1容器3と第2容器9がエンドエフェクタ13の可動範囲内となるように、第1容器3と載置台7の近傍に配置されている。また、ロボット5は、ロボット台15上に設置されることにより高さ(Z軸方向の位置)を調整されている。ロボット5は、第1容器3に収容されたワークWをエンドエフェクタ13ですくって保持し、エンドエフェクタ13を第1容器3から第2容器9に移動させて、ワークWを治具11を使用してエンドエフェクタ13から掻き落とし、第2容器9に落とし込む。
なお、ロボット5を6軸以外(例えば5軸や7軸等)のロボットとしてもよい。また、水平多関節型やパラレルリンクロボット等、ロボット5を垂直多関節型以外のロボットとしてもよい。
載置台7上には、第2容器9が載置される。第2容器9(第2の容器の一例)は、上方から見た形状が例えば略四角形状であり、底部を備えた有底状の容器である。第2容器9の一例として、例えば樹脂製のパレットが挙げられる。なお、第2容器9の形状は四角形に限らず、例えば円形の容器としてもよい。また、例えば金属製等、樹脂製以外の容器としてもよい。第2容器9は、例えば作業者により載置台7上に載置され、ワークWが一杯になると新たな空の第2容器9に交換される。
治具11は、エンドエフェクタ13に付着したワークWを、エンドエフェクタ13から掻き落とすための器具である。治具11は、支持部17と、接触部19とを有する。支持部17は、下端が載置台7に連結された、略上下方向(Z軸方向)に延設された第1支持部17aと、一端が第1支持部17aの上端に連結され、略水平方向(例えばY軸方向)に延設された第2支持部17bとを有する。第2支持部17bの他端には、接触部19が連結されている。接触部19(治具の一例)は、例えば略四角柱状の部材であり、第2容器9の上方において略水平方向(例えばX軸方向)に延設されている。ロボット5は、エンドエフェクタ13を上下方向に略平行な姿勢として表面を接触部19に当接させ、エンドエフェクタ13を引き上げることにより、エンドエフェクタ13に付着したワークWを掻き落とす。
なお、上述したロボットシステム1の構成は一例であり、上述の内容に限定されるものではない。例えば、第1容器3を台車で移動する代わりに、コンベア等の搬送装置により搬送する構成としてもよい。この場合、ワークWが充填された第1容器3をコンベアによりロボット5に順次供給し、空となった第1容器3をコンベアにより順次排出する構成としてもよい。同様に、例えば第2容器9を載置台7に載置する代わりに、コンベア等の搬送装置により搬送する構成としてもよい。この場合、空の第2容器9をコンベアによりロボット5に順次供給し、ワークWが充填された第2容器9をコンベアにより順次排出する構成としてもよい。
<2.ロボットの構成>
次に、図2を参照しつつ、ロボット5の構成の一例について説明する。
図2に示すように、ロボット5は、基台21と、旋回部23と、アーム25とを有する。基台21は、ロボット台15の上端に固定される。
旋回部23は、基台21の上端部に、上下方向に平行な回転軸Ax1周りに旋回可能に支持されている。旋回部23は、基台21との間の関節部に設けられたアクチュエータAc1の駆動により、基台21の上端部に対し、回転軸Ax1周りに旋回駆動される。アクチュエータAc1は、基台21と旋回部23との間の回転軸Ax1周りのトルクを検出するトルクセンサTs1を有する。トルクセンサTs1の検出値はモーションコントローラ45(後述の図3参照)に送信される。
アーム25は、旋回部23の例えば一方側の側部に支持されている。このアーム25は、下腕部27と、肘部29と、上腕部31と、手首部33と、フランジ部35とを有する。
下腕部27は、旋回部23の一方側の側部に、回転軸Ax1に垂直な回転軸Ax2周りに旋回可能に支持されている。下腕部27は、旋回部23との間の関節部に設けられたアクチュエータAc2の駆動により、旋回部23の一方側の側部に対し、回転軸Ax2周りに旋回駆動される。アクチュエータAc2は、旋回部23と下腕部27との間の回転軸Ax2周りのトルクを検出するトルクセンサTs2を有する。トルクセンサTs2の検出値はモーションコントローラ45に送信される。
肘部29は、下腕部27の先端側に、回転軸Ax2に平行な回転軸Ax3周りに旋回可能に支持されている。肘部29は、下腕部27との間の関節部に設けられたアクチュエータAc3の駆動により、下腕部27の先端側に対し、回転軸Ax3周りに旋回駆動される。アクチュエータAc3は、下腕部27と肘部29との間の回転軸Ax3周りのトルクを検出するトルクセンサTs3を有する。トルクセンサTs3の検出値はモーションコントローラ45に送信される。
上腕部31は、肘部29の先端側に、回転軸Ax3に垂直な回転軸Ax4周りに回動可能に支持されている。上腕部31は、肘部29との間の関節部に設けられたアクチュエータAc4の駆動により、肘部29の先端側に対し、回転軸Ax4周りに回動駆動される。アクチュエータAc4は、肘部29と上腕部31との間の回転軸Ax4周りのトルクを検出するトルクセンサTs4を有する。トルクセンサTs4の検出値はモーションコントローラ45に送信される。
手首部33は、上腕部31の先端側に、回転軸Ax4に垂直な回転軸Ax5周りに旋回可能に支持されている。手首部33は、上腕部31との間の関節部に設けられたアクチュエータAc5の駆動により、上腕部31の先端側に対し、回転軸Ax5周りに旋回駆動される。アクチュエータAc5は、上腕部31と手首部33との間の回転軸Ax5周りのトルクを検出するトルクセンサTs5を有する。トルクセンサTs5の検出値はモーションコントローラ45に送信される。
フランジ部35は、手首部33の先端側に、回転軸Ax5に垂直な回転軸Ax6周りに回動可能に支持されている。フランジ部35は、手首部33との間の関節部に設けられたアクチュエータAc6の駆動により、手首部33の先端側に対し、回転軸Ax6周りに回動駆動される。アクチュエータAc6は、手首部33とフランジ部35との間の回転軸Ax6周りのトルクを検出するトルクセンサTs6を有する。トルクセンサTs6の検出値はモーションコントローラ45に送信される。
エンドエフェクタ13は、フランジ部35の先端に取り付けられており、フランジ部35の回転軸Ax6周りの回動と共に、回転軸Ax6周りに回動する。エンドエフェクタ13は、フランジ部35に取り付けられる背板部13aと、ワークWをすくい保持する略長方形状の底板部13bとを有する。本実施形態では、底板部13bが平板状である場合を一例として説明するが、底板部13bを例えば円弧状に湾曲させてもよい。
以上の構成であるロボット5は、6つのアクチュエータAc1~Ac6を備えた6つの関節部を有する6軸ロボットである。各関節部を駆動するアクチュエータAc1~Ac6の各々は、例えばサーボモータ(図3参照)、エンコーダ(図3参照)、及び減速機(図3参照)等により構成されている。ロボット5は、各関節部においてトルクセンサTs1~Ts6でトルクを検出することにより、ロボット5が例えば人や物に衝突した場合には直ちに動作を停止させたり、外力が作用した方向と逆方向に動作させる等が可能となっており、作業者と共に稼働することが可能な人協働ロボットとして構成されている。
なお、上記では、アーム25の長手方向(あるいは延在方向)に沿った回転軸周りの回転を「回動」と呼び、アーム25の長手方向(あるいは延在方向)に垂直な回転軸周りの回転を「旋回」と呼んで区別している。
<3.ロボットシステムの機能構成>
次に、図3及び図4~図16を参照しつつ、ロボットシステム1の機能構成の一例について説明する。
図3に示すように、ロボットシステム1は、ロボットコントローラ41とロボット5とを有する。ロボットコントローラ41は、モーションコントローラ45と多軸サーボコントローラ43を有する。なお、モーションコントローラ45と多軸サーボコントローラ43とは、一体でなく別体の制御装置として構成されてもよい。
多軸サーボコントローラ43は、サーボ制御部47と、サーボアンプ49とを有する。サーボ制御部47は、モーションコントローラ45から入力された指令(例えば各サーボモータへの位置指令等)とアクチュエータAc1~Ac6の各エンコーダの検出値に基づいて、アクチュエータAc1~Ac6の各サーボモータのサーボ制御をおこない各サーボモータのトルクや電流値を算出する。サーボアンプ49は、サーボ制御部47から入力された各サーボモータのトルクや電流値に基づいて各サーボモータに供給する駆動電力の制御を行い、ロボット5の動作を制御する。なお、サーボアンプ49は、ロボット5の各アクチュエータAc1~Ac6と一体的に設置されてもよい(アンプ内蔵型アクチュエータ)。
モーションコントローラ45は、動作制御部51と、設定情報切替部53と、外力算出部55と、第1外力判定部57と、第2外力判定部59と、切替位置記録部61とを有する。
動作制御部51は、ロボット5のエンドエフェクタ13の先端部(制御点P。図2参照)がティーチングにより教示された位置と向きに移動させるために必要となる各アクチュエータAc1~Ac6の各サーボモータの目標回転角度等を演算(逆運動学演算)し、対応するサーボモータの位置指令を出力する。教示された位置と向きを表す教示データは、例えば図1に示すような互いに直交するX軸、Y軸、Z軸からなる直交座標系の座標値で表現される。この例ではZ軸が上下方向、XY平面が略水平面であり、Y軸は例えばワークWの移送方向(第1容器3の中心軸から第2容器9の中心軸へ向かう方向)となるように、各軸が設定されている。なお、X軸とY軸は上記以外の方向に設定されてもよい。
ロボット5の動作には、第1容器3に収容されたワークWをエンドエフェクタ13ですくうためのすくい動作(保持動作の一例)と、エンドエフェクタ13ですくったワークWを第2容器9に搬送するための搬送動作とが含まれる。すくい動作には、エンドエフェクタ13を水平方向に略直線状に移動させる動作と、エンドエフェクタ13を第1容器3の壁面に沿って移動させる動作とが含まれる。
図4に、エンドエフェクタ13を水平方向に略直線状に移動させる動作の一例を示す。図4に示す例では、例えば第1容器3の中心軸Oを通りYZ平面に平行な鉛直面VPを起点(開始位置)として、エンドエフェクタ13をX軸正の方向に第1容器3の内周面近傍まで移動させる動作が、Y軸方向に所定距離ずつ移動させながら複数回に亘って実行される(矢印AR1~AR5で示す)。また、同様に鉛直面VPを起点として、エンドエフェクタ13をX軸負の方向に第1容器3の内周面近傍まで移動させる動作が、Y軸方向に所定距離ずつ移動しながら複数回に亘って実行される(矢印AR6~AR10で示す)。この際、エンドエフェクタ13は、鉛直面VPにおいては、底板部13bの長手方向をZ軸に平行且つ底板部13bの短手方向(幅方向)をY軸方向に平行な姿勢としながら、ワークWに挿入される。また、底板部13bの水平方向に対する傾斜角度が略90度から徐々に小さくなるように旋回されながら、第1容器3の内周面近傍まで移動される。なお、図4中の符号SR1は上記の各動作でワークWがすくわれる範囲である。各動作は、範囲SR1がそれぞれ適宜の量だけ重複するように設定されている。
図5に、エンドエフェクタ13を第1容器3の壁面に沿って移動させる動作の一例を示す。図5に示す例では、例えば鉛直面VPを起点として、エンドエフェクタ13が第1容器3の壁面に略沿って1周するように移動される(矢印AR11で示す)。この際、エンドエフェクタ13は、例えば底板部13bの長手方向をZ軸に平行な姿勢としながら移動される。なお、図5中の符号SR2は上記動作でワークWがすくわれる範囲である。図5の動作が図4の動作の後に実行されることで、第1容器3内における所定の深さまでのワークWが満遍なくすくわれる。そして、図4の動作及び図5の動作を含む一連の動作が、エンドエフェクタ13をワークWに差し込む深さを段階的に深くしながら第1容器3の底部近傍に至るまで複数回に亘って実行されることにより、第1容器3内のほぼ全てのワークWがすくわれる。
なお、上記図4に示すエンドエフェクタ13の動作は一例であり、これに限定されるものではない。例えば、矢印AR1~AR5の動作の順番及び矢印AR6~AR10の動作の順番は、この符号の数字順で行われてもよいし、適宜変更されてもよい。また、鉛直面VPを起点とせずに第1容器3の壁面を起点として、例えば矢印AR1,AR6の動作範囲を一続きのすくい動作として実行してもよい。
なお、例えば第1容器3が円筒形状の場合には、図4と同様の動作を行ってもよいし、例えばエンドエフェクタ13を中心軸Oから第1容器3の内周面に向かって放射状に移動させる動作を、周方向に所定角度ずつ移動させながら複数回に亘って実行してもよい。また、図5の動作として、例えば鉛直面VPを起点として、エンドエフェクタ13が第1容器3の内周面に沿うように中心軸O周りに略360度に亘って旋回されてもよい。この場合、エンドエフェクタ13は、例えば底板部13bの長手方向をZ軸に平行且つ底板部13bの短手方向(幅方向)を中心軸O周りの半径方向に平行な姿勢としながら、中心軸O周りに旋回される。
また、エンドエフェクタ13によりワークWを保持するための保持動作は、上記すくい動作に限定されるものではない。例えばワークWが液体や粘体であるような場合には、例えばコップ状のエンドエフェクタによりワークWを汲む動作も保持動作に含まれる。
図3に戻り、設定情報切替部53は、ロボット5の動作によりエンドエフェクタ13が予め設定された位置に移動された際に、ロボット5の各関節に作用するトルクの計算値を算出するためのエンドエフェクタの設定情報を、質量が異なる他の設定情報に切り替える。「予め設定された位置」は、教示データの中に含まれる制御点Pの特定の位置であり、本実施形態では、第1の情報切替位置IP1と第2の情報切替位置IP2の2つの情報切替位置が設定されている。「エンドエフェクタの設定情報」は、例えばエンドエフェクタ13の質量、慣性テンソル等の情報を含む。「トルクの計算値」は、ロボット5のリンク情報(例えば質量、慣性テンソル、重心位置、長さ等)及びエンドエフェクタ13の設定情報と、ロボット5の動作情報(例えば各関節の角度、角速度、角加速度等)とに基づいて、逆動力学演算により算出される、各関節に作用するトルクの計算値である。例えば、エンドエフェクタ13の設定情報に含まれる質量が大きいときはトルクの計算値も大きくなり、質量が小さいときはトルクの計算値も小さくなる。トルクの計算値は、後述する外力算出部55により算出される。なお、説明の便宜上、以下では適宜、各トルクセンサTs1~Ts6により検出されるトルクを「実関節トルク」、外力算出部55により算出されるトルクの計算値を「計算関節トルク」という。
図6に、第1の情報切替位置IP1の一例を示す。なお、図6に示す第1容器3は前述の図4における矢視X-X断面に相当し(図7~図11、図15~図16、図18~図19も同様)、且つ、図6は図4に示す矢印AR1のすくい動作に対応している。図6に示す例では、第1の情報切替位置IP1は、例えば第1容器3の上端の高さ位置H0に設定されている。すなわち、設定情報切替部53は、ロボット5がすくい動作を実行する前において、エンドエフェクタ13の制御点Pが中心軸Oに沿ってZ軸負の方向に移動され、高さ位置H0を通過する際に、エンドエフェクタ13の設定情報を、第1の設定情報(エンドエフェクタ13の質量が例えば3kg)から質量がより大きな第2の設定情報(エンドエフェクタ13の質量が例えば7kg)に切り替える。第2の設定情報と第1の設定情報の質量差は、例えば1回の搬送動作で搬送されるワークWの質量の最大値以上に設定される。このように設定情報が切り替えられることにより、実際にはエンドエフェクタ13は交換されていないにもかかわらず、質量がより大きなエンドエフェクタ13に交換されたものとみなされる。なお、前述の図4及び図5に示した、矢印AR1以外の各すくい動作(矢印AR2~AR11)の場合も同様に、エンドエフェクタ13の制御点Pが各すくい動作の起点に向けてZ軸負の方向に移動され、高さ位置H0を通過する際に、第1の設定情報が第2の設定情報に切り替えられる。
なお、上記の第1の情報切替位置IP1は一例であり、他の位置に設定されてもよい。例えば、高さ位置H0よりもさらに下方の位置又は上方の位置でもよい。
図3に戻り、外力算出部55は、上述のように、ロボット5のリンク情報及びエンドエフェクタ13の設定情報と、ロボット5の動作情報とに基づいて、逆動力学演算により計算関節トルクを算出する。そして、外力算出部55は、ロボット5の各トルクセンサTs1~Ts6により検出された実関節トルクと、上記算出した計算関節トルクに基づいて、実関節トルクから計算関節トルクを差し引いた外力を算出する。「外力」は、ロボット5自身、エンドエフェクタ13、ワークW以外のものから作用する力(例えばロボット5が人やワークW以外の物に衝突したり接触する等により各関節に作用する力)である。この外力算出部55による外力の算出は、ロボット5の動作中に継続して実行される。
第1外力判定部57は、外力算出部55により算出された外力が第1のしきい値TH1に到達したか否かを判定する。例えば第1のしきい値TH1は、各関節ごとに設定されており、対応する関節の後述する第2のしきい値TH2よりも小さな値に設定されている。なお、第1のしきい値TH1はロボット5全体に対して1つのしきい値として設定されてもよい。動作制御部51は、ロボット5にすくい動作を実行させている最中に、少なくとも1つの関節の外力が第1のしきい値TH1に到達したと判定された場合、すくい動作の途中でワークWを搬送するための搬送動作に切り替える。この第1外力判定部57による判定は、すくい動作の最中に継続して実行される。
第2外力判定部59は、外力算出部55により算出された外力が第2のしきい値TH2に到達したか否かを判定する。例えば第2のしきい値TH2は、各関節ごとに設定されており、対応する関節の第1のしきい値TH1よりも大きな値に設定されている。なお、第2のしきい値TH2はロボット5全体に対して1つのしきい値として設定されてもよい。動作制御部51は、ロボット5の動作中に、少なくとも1つの関節の外力が第2のしきい値T2に到達したと判定された場合、動作の種類に関わりなくロボット5の動作を停止させる。あるいは、ロボット5を外力が作用した方向と反対方向に動作させてもよい。この第2外力判定部59による判定は、ロボット5の動作中に継続して実行される。
切替位置記録部61は、第1外力判定部57の判定によりロボット5のすくい動作の途中で搬送動作に切り替えられた場合に、当該切り替えた位置である動作切替位置MPを記録する。動作制御部51は、搬送動作の完了後、ロボット5に次のすくい動作を実行させる際には、記録された動作切替位置MPを開始位置として次のすくい動作を実行させる。
図7~図11に、ロボット5のすくい動作及び搬送動作の一例を示す。なお、図7~図11に示す動作は、前述の図4に示す矢印AR1のすくい動作に対応している。図7に示すように、ロボット5はエンドエフェクタ13を、底板部13bの長手方向がZ軸に平行且つ底板部13bの短手方向(幅方向)がY軸に平行な姿勢とし、その先端をワークWに所定量だけ挿入する。この際、例えばエンドエフェクタ13の制御点Pが、第1容器3の上端の高さ位置H0からZ軸負の方向側への距離(深さ)がh1である高さ位置H1まで中心軸Oに沿って移動するように、ロボット5の動作が制御される。なお距離h1は、例えば第1容器3の高さ(深さ)やワークWの収容高さ等に応じて適宜の値に設定され、教示データとして記録されている。
図7の状態から、図8に示すように、ロボット5はエンドエフェクタ13を、X軸正の方向に第1容器3の内周面近傍まで移動させることで、ワークWのすくい動作を実行する。なお、図8は、すくい動作の最中に全ての関節の外力が第1のしきい値TH1に到達しなかった場合の例である。この際、エンドエフェクタ13は、例えば制御点Pが高さ位置H1で水平方向に移動しつつ、底板部13bと水平方向との角度が90°から徐々に小さくなるように旋回されながら、第1容器3の内周面近傍まで移動される。なお、エンドエフェクタ13の先端が第1容器3の内周面近傍に到達した時点で、底板部13bが略水平方向となる姿勢とされてもよい。
図8の状態から、図9に示すように、ロボット5はエンドエフェクタ13をZ軸正の方向に移動させて持ち上げることで、ワークWをすくい上げる。なお、エンドエフェクタ13のワークWへの挿入が開始されてから上記持ち上げ動作の直前までがワークWのすくい動作を構成し、持ち上げ動作からがワークWの搬送動作を構成する。この際、エンドエフェクタ13は、例えば制御点Pが第1容器3の内周面に沿ってZ軸正の方向に移動するように持ち上げられ、所定の高さにおいて底板部13bが略水平方向となる姿勢で保持される。その後、エンドエフェクタ13が第2容器9の方向に移動されることで、ワークWの搬送動作が実行される。なお、この搬送動作の最中に、いずれかの関節の外力が第2のしきい値T2に到達したと判定された場合には、ロボット5の動作停止等が行われる。
一方、すくい動作の最中に、いずれかの関節の外力が第1のしきい値TH1に到達した場合の動作の一例を、図10及び図11に示す。図7に示す状態から、図10に示すように、ロボット5がエンドエフェクタ13をX軸正の方向に第1容器3の内周面近傍まで移動させる途中で、いずれかの関節の外力が第1のしきい値TH1に到達した場合には、その時点ですくい動作が搬送動作に切り替えられる。これにより、図11に示すように、ロボット5はすくい動作の途中位置において、エンドエフェクタ13をZ軸正の方向に移動させて持ち上げ、ワークWをすくい上げる。この際、切替位置記録部61により、動作を切り替えた時点の制御点Pの位置である動作切替位置MPが記録される。その後、エンドエフェクタ13が第2容器9の方向に移動されることで、ワークWの搬送動作が実行される。なお、この搬送動作の最中に、いずれかの関節の外力が第2のしきい値T2に到達したと判定された場合には、ロボット5の動作停止等が行われる。
図12及び図13に、治具11を用いたワークWの掻き落とし動作の一例を示す。図12に示すように、ロボット5はエンドエフェクタ13を、底板部13bの長手方向がZ軸に平行且つ底板部13bの短手方向(幅方向)がX軸に平行な姿勢として、底板部13bの基端側(フランジ部35側)におけるワーク保持側の表面を、治具11の接触部19に当接させる。そして、図13に示すように、ロボット5はエンドエフェクタ13を、例えば制御点Pが接触部19の下端の高さ位置H2に到達するまでZ軸正の方向に引き上げることにより、エンドエフェクタ13に付着したワークWを掻き落とし、第2容器9に落とし込む。なお、エンドエフェクタ13を第1容器3において持ち上げる動作から、第2容器9に向けて移動し、治具11の接触部19に当接させて、制御点Pが高さ位置H2に到達するまで引き上げる動作までが、ワークWの搬送動作を構成する。また、エンドエフェクタ13を上記以外の姿勢、例えば底板部13bの長手方向をZ軸に対して傾斜させてワークWの掻き落とし動作を行ってもよい。
図14に、第2の情報切替位置IP2の一例を示す。図14に示す例では、第2の情報切替位置IP2は、例えば治具11の接触部19の上端の高さ位置H3に設定されている。この場合、設定情報切替部53は、ロボット5が搬送動作を実行し、治具11を用いてワークWをエンドエフェクタ13から第2容器9に掻き落とした後において、エンドエフェクタ13の制御点PがZ軸正の方向に移動され、高さ位置H3を通過する際に、エンドエフェクタ13の設定情報を、第2の設定情報から質量がより小さな第1の設定情報に復帰させる。このように設定情報が切り替えられることにより、実際にはエンドエフェクタ13は交換されていないにもかかわらず、質量がより小さなエンドエフェクタ13に交換されたものとみなされる。
なお、上記の第2の情報切替位置IP2は一例であり、他の位置に設定されてもよい。例えば、高さ位置H2としてもよいし、高さ位置H3よりもさらに上方の位置でもよい。
図15及び図16に、すくい動作の途中で搬送動作に切り替えられた場合における、次のすくい動作の一例を示す。この場合、動作制御部51は、切替位置記録部61により記録された動作切替位置MPを開始位置として、次のすくい動作をロボット5に実行させる。例えば図15に示すように、ロボット5はエンドエフェクタ13を、制御点Pが動作切替位置MPに向けてZ軸負の方向に移動するように、下降させる。このとき、制御点Pが第1容器3の上端の高さ位置H0を通過した際に、エンドエフェクタ13の設定情報が第1の設定情報から質量がより大きな第2の設定情報に切り替えられる。そして、ロボット5はエンドエフェクタ13を、制御点Pが動作切替位置MPに到達するまでZ軸負の方向に移動させる。その後、図16に示すように、ロボット5はエンドエフェクタ13を、X軸正の方向に第1容器3の内周面近傍まで移動させることで、ワークWのすくい動作を前回中断した位置から再開する。なお、当該再開したすくい動作の最中に、いずれかの関節の外力が第1のしきい値TH1に到達した場合には、すくい動作が搬送動作に再度切り替えられ、同様の動作が繰り返される。
なお、上記の場合において、エンドエフェクタ13の制御点Pが高さ位置H0を通過した際ではなく、制御点Pが動作切替位置MPの近傍に移動された際(制御点Pが動作切替位置MPに到達する直前)に、エンドエフェクタ13の設定情報が第1の設定情報から第2の設定情報に切り替えられるようにしてもよい。この場合には、動作切替位置MPの近傍位置が第1の情報切替位置IP1となる。
なお、上述したモーションコントローラ45の動作制御部51、設定情報切替部53、外力算出部55、第1外力判定部57、第2外力判定部59、切替位置記録部61等における処理等は、これらの処理の分担の例に限定されるものではなく、例えば、更に少ない数の処理部(例えば1つの処理部)で処理されてもよく、また、更に細分化された処理部により処理されてもよい。また、モーションコントローラ45の上記の機能は後述するCPU901(図21参照)が実行するプログラムにより実装されてもよいし、その一部又は全部がASICやFPGA、その他の電気回路等の実際の装置により実装されてもよい。
<4.ロボットコントローラの制御手順>
次に、図17を用いて、ロボットコントローラ41によって実行される制御手順の一例について説明する。
ステップS5では、ロボットコントローラ41は、モーションコントローラ45の動作制御部51により、教示データに基づくアクチュエータAc1~Ac6の各サーボモータへの指令を演算し、多軸サーボコントローラ43へ入力、各サーボモータのサーボ制御を実行し、ロボット5の動作を開始する。
ステップS10では、ロボットコントローラ41は、モーションコントローラ45の外力算出部55により、各トルクセンサTs1~Ts6により検出した実関節トルクと、エンドエフェクタ13の設定情報とに基づいて、実関節トルクから計算関節トルクを差し引いた外力の算出を開始する。この外力の算出は、ロボット5の動作中は継続して実行される。
ステップS15では、ロボットコントローラ41は、モーションコントローラ45の第2外力判定部59により、上記ステップS10で算出した外力が第2のしきい値TH2以上であるか否かの判定を開始する。この第2のしきい値TH2以上であるか否かの判定は、ロボット5の動作中は継続して実行される。外力が第2のしきい値TH2以上であると判定した場合には(ステップS15:YES)、ステップS20に移る。
ステップS20では、ロボットコントローラ41は、モーションコントローラ45の動作制御部51により、アクチュエータAc1~Ac6の各サーボモータへの停止指令を演算し、多軸サーボコントローラ43によりロボット5の動作を停止させる。あるいは、ロボット5を外力が作用した方向と反対方向に動作させてもよい。そして、本フローチャートを終了する。
一方、上記ステップS15において、外力が第2のしきい値TH2未満であると判定した場合には(ステップS15:NO)、ステップS25に移る。
ステップS25では、ロボットコントローラ41は、モーションコントローラ45の設定情報切替部53により、エンドエフェクタ13の制御点Pが第1の情報切替位置IP1に到達したか否かを判定する。制御点Pが第1の情報切替位置IP1に到達するまで本ステップを繰り返し(ステップS25:NO)、制御点Pが第1の情報切替位置IP1に到達した場合には(ステップS25:YES)、ステップS30に移る。
ステップS30では、ロボットコントローラ41は、モーションコントローラ45の設定情報切替部53により、エンドエフェクタ13の設定情報を、第1の設定情報から質量がより大きな第2の設定情報に切り替える。
ステップS35では、ロボットコントローラ41は、モーションコントローラ45の動作制御部51及び多軸サーボコントローラ43により、エンドエフェクタ13の制御点Pをすくい動作の開始位置に向けて移動させることで、エンドエフェクタ13の先端をワークWに挿入し、すくい動作を開始する。
ステップS40では、ロボットコントローラ41は、モーションコントローラ45の第1外力判定部57により、上記ステップS10で算出した外力が第1のしきい値TH1以上か否かを判定する。なお、この外力が第1のしきい値TH1以上か否かの判定は、ロボット5がすくい動作を実行している最中に継続して実行される。外力が第1のしきい値TH1以上であると判定した場合には(ステップS40:YES)、ステップS45に移る。
ステップS45では、ロボットコントローラ41は、モーションコントローラ45の切替位置記録部61により、外力が第1のしきい値TH1以上であると判定した時点の制御点Pの位置である動作切替位置MPを記録する。その後、後述のステップS55に移る。
一方、上記ステップS40において、外力が第1のしきい値TH1未満であると判定した場合には(ステップS40:NO)、ステップS50に移る。
ステップS50では、ロボットコントローラ41は、モーションコントローラ45の動作制御部51により、すくい動作が完了したか否か、具体的には制御点Pが教示データで規定されるすくい動作の完了位置(例えば第1容器3の内周面近傍位置)に到達したか否かを判定する。すくい動作が完了していない場合には(ステップS50:NO)、先のステップS40に戻る。一方、すくい動作が完了した場合には(ステップS50:YES)、ステップS55に移る。
ステップS55では、ロボットコントローラ41は、モーションコントローラ45の動作制御部51及び多軸サーボコントローラ43により、エンドエフェクタ13を持ち上げてワークWをすくい上げ、搬送動作を開始する。
ステップS60では、ロボットコントローラ41は、モーションコントローラ45の動作制御部51により、エンドエフェクタ13が搬送先(例えば第2容器9の近傍)に到達したか否かを判定する。エンドエフェクタ13が搬送先に到達するまでは本ステップを繰り返し(ステップS60:NO)、エンドエフェクタ13が搬送先に到達した場合には(ステップS60:YES)、ステップS65に移る。
ステップS65では、ロボットコントローラ41は、モーションコントローラ45の動作制御部51及び多軸サーボコントローラ43により、エンドエフェクタ13を例えばZ軸方向に平行に立てた姿勢とし、ワークWが保持された表面の上側を治具11の接触部19に当接させて、エンドエフェクタ13をZ軸正の方向に引き上げることにより、エンドエフェクタ13に付着したワークWを掻き落とす。
ステップS70では、ロボットコントローラ41は、モーションコントローラ45の設定情報切替部53により、エンドエフェクタ13の制御点Pが第2の情報切替位置IP2に到達したか否かを判定する。制御点Pが第2の情報切替位置IP2に到達するまで本ステップを繰り返し(ステップS70:NO)、制御点Pが第2の情報切替位置IP2に到達した場合には(ステップS70:YES)、ステップS75に移る。
ステップS75では、ロボットコントローラ41は、モーションコントローラ45の設定情報切替部53により、エンドエフェクタ13の設定情報を、第2の設定情報から質量がより小さな第1の設定情報に切り替える。
ステップS80では、ロボットコントローラ41は、モーションコントローラ45により、ワークWを第1容器3から第2容器9に移送する作業が終了したか否かを判定する。移送作業が終了していない場合には(ステップS80:NO)、先のステップS25に戻り、上記と同様の手順を繰り返す。一方、移送作業が終了した場合には(ステップS80:YES)、本フローチャートを終了する。
<5.実施形態の効果>
以上説明したように、本実施形態のロボットシステム1は、ワークWを保持するエンドエフェクタ13を備え、移送作業を実行する、複数の関節を備えたロボット5と、複数の関節の各々に設置され、関節に作用するトルクを検出するトルクセンサTs1~Ts6と、教示データに基づいてロボット5を動作させる動作制御部51及び多軸サーボコントローラ43と、ロボット5の動作によりエンドエフェクタ13が予め設定された位置IP1,IP2に移動された際に、各関節に作用するトルクの計算値を算出するためのエンドエフェクタ13の設定情報を、質量が異なる他の設定情報に切り替える設定情報切替部53と、トルクセンサTs1~Ts6で検出したトルクとエンドエフェクタ13の設定情報とに基づいて、検出したトルクからトルクの計算値を差し引いた外力を算出する外力算出部55と、を有する。
本実施形態のロボットシステム1では、各関節にトルクセンサTs1~Ts6を備えたロボット5が、エンドエフェクタ13を用いてワークWの第1容器3から第2容器9への移送作業を実行する。このとき、ワークWの性質や作業の種類によっては、作業の途中にトルクセンサTs1~Ts6で検出した実関節トルクが大きく変動する場合がある。その結果、実関節トルクから計算関節トルクを差し引いた外力に基づく判断(外力としきい値との比較による衝突判断等)によりロボット5の停止等が度々生じると、稼働率が低下する要因となる。
そこで本実施形態では、エンドエフェクタ13が予め設定された位置に移動した際に、計算関節トルクを算出するためのエンドエフェクタ13の設定情報を、質量が異なる他の設定情報に切り替える。これにより、例えばエンドエフェクタ13がワークWを保持する際に、エンドエフェクタ13の設定情報を質量がより重い設定情報に切り替えることにより、実関節トルクが大きく増大した場合でも、当該実関節トルクから計算関節トルクを差し引いて算出される外力を見かけ上小さくすることが可能となり、ロボット5の停止等を生じにくくすることができる。したがって、ロボット5に作用する外力が大きく変動する場合でも稼働率の低下を抑制することができる。
また、本実施形態では特に、ロボットシステム1は、外力が第1のしきい値TH1に到達したか否かを判定する第1外力判定部57をさらに有し、動作制御部51は、ロボット5にワークWを保持するための保持動作(本実施形態ではすくい動作)を実行させている最中に、外力が第1のしきい値TH1に到達したと判定された場合、保持動作の途中でワークWを搬送するための搬送動作に切り替える。
これにより、例えば第1のしきい値TH1をロボット5の動作停止等を行うための第2のしきい値TH2よりも低い値に設定しておくことで、ワークWを保持する最中に外力が大きく増大した場合でも、ロボット5の動作停止等となる前に搬送動作に切り替えることが可能となる。したがって、外力が過大となることによるロボット5の動作停止等を低減でき、稼働率の低下を抑制できる。
また、本実施形態では特に、ロボットシステム1は、外力が第1のしきい値TH1よりも大きい第2のしきい値TH2に到達したか否かを判定する第2外力判定部59をさらに有し、動作制御部51は、外力が第2のしきい値TH2に到達したと判定された場合、ロボット5の動作を停止させる。
これにより、例えばロボット5が人やワークW以外の物に衝突したり接触する等により、ロボット5に作用する外力が過大となった場合に、直ちに動作を停止させることができる。したがって、安全性を向上でき、人と協働することが可能となる。
また、本実施形態では特に、ロボットシステム1は、保持動作を搬送動作に切り替えた位置である動作切替位置MPを記録する切替位置記録部61をさらに有し、動作制御部51は、搬送動作の完了後、ロボット5に次の保持動作を実行させる際には、動作切替位置MPを開始位置として次の保持動作を実行させる。
これにより、前回の保持動作の実行途中で搬送動作に切り替えた場合でも、次回の保持動作を前回の保持動作を中断した位置から引き続いて実行することができる。したがって、ワークWに対してエンドエフェクタ13による保持(上記実施形態ではすくい上げ)を満遍なく実行することができる。
また、本実施形態では特に、設定情報切替部53は、ロボット5が保持動作を実行する前において、エンドエフェクタ13が予め設定された第1の情報切替位置IP1に移動された際に、第1の設定情報を質量がより大きな第2の設定情報に切り替え、ロボット5が搬送動作を実行した後において、エンドエフェクタ13が予め設定された第2の情報切替位置IP2に移動された際に、第2の設定情報から第1の設定情報に切り替える。
本実施形態では、保持動作の実行前の予め設定された位置で設定情報を質量がより大きな設定情報に切り替え、搬送動作の実行後の予め設定された位置で設定情報を元の設定情報に復帰させる。このように固定された位置で設定情報を切り替えるようにすることで、制御処理や設定処理を簡易化できる。
また、本実施形態において、設定情報切替部53が、ロボット5が保持動作を実行する前において、エンドエフェクタ13が動作切替位置MPの近傍に移動された際に、第1の設定情報を質量がより大きな第2の設定情報に切り替えるようにした場合には、次のような効果を奏する。
すなわち、動作切替位置MPは毎回の保持動作において変動する位置である。このように変動する動作切替位置MPで設定情報を切り替えるようにすることで、常に保持動作を開始する直前に設定情報を切り替えることができる。これにより、必要最小限の区間(ワークWを保持している区間)に限定して設定情報の切り替えを行うことができる。
また、本実施形態では特に、保持動作は、第1容器3に収容されたワークWをエンドエフェクタ13ですくうためのすくい動作であり、搬送動作は、エンドエフェクタ13ですくったワークWを第2容器9に搬送するための搬送動作であり、ワークWは、すくい動作の最中に実関節トルクが増大する性質を有する物体である。
これにより、第1容器3に収容された、すくい動作の最中に実関節トルクが増大する性質を有するワークW(例えば粘体、粉体、粒体、液体、バラ積みされた固形物等)を、エンドエフェクタ13ですくい、すくったワークWを第2容器9に搬送する作業を、稼働率の低下を抑制しつつ安全に実行可能なロボットシステム1を実現できる。
また、本実施形態では特に、ロボットシステム1は、第2容器9の上方に配置され、ワークWをエンドエフェクタ13から掻き落とすための治具11(接触部19)をさらに有する。
これにより、エンドエフェクタ13に付着したワークWを第2容器9に掻き落とすことができる。したがって、例えばクリーム、餡子、アイスクリーム、ご飯等の粘性の高いワークWについても効率良く搬送することができる。また、エンドエフェクタ13にワークWを掻き落とす機構を設ける必要がなくなるので、エンドエフェクタ13を簡素化できる。
また、本実施形態では特に、設定情報切替部53は、ロボット5が治具11を用いてワークWをエンドエフェクタ13から第2容器9に掻き落とした後に、第2の設定情報から第1の設定情報に切り替える。
これにより、実際にエンドエフェクタ13がワークWを保持している期間に限定して実効的に設定情報の切り替えを行うことができる。
また、本実施形態では特に、すくい動作は、エンドエフェクタ13を水平方向に略直線状に移動させる動作と、エンドエフェクタ13を第1容器3の壁面に沿って移動させる動作と、を含む。
これにより、第1容器3内において壁面に付着したワークWについてもすくうことができる。したがって、第1容器3内のワークWの取り残しを低減することができる。
また、本実施形態によれば、例えば人協働ロボットとして構成された、外力検知機能を有するロボット5で使用している各関節のトルクセンサTs1~Ts6の検出値を利用して、外力の算出や、当該外力としきい値TH1,TH2との比較によるすくい動作から搬送動作への切替又はロボット5の動作停止等を実行することができる。したがって、新たな外力センサをロボット5に設置することが不要となる。
<6.変形例等>
なお、開示の実施形態は、上記に限られるものではなく、その趣旨及び技術的思想を逸脱しない範囲内で種々の変形が可能である。以下、そのような変形例を説明する。
(6-1.挿入位置を検出して挿入量を制御する場合)
ロボット5によるすくい動作を実行した後は、第1容器3内におけるワークWの表面は平坦となるが、すくい動作を実行する前は、ワークWの表面に凹凸がある場合がある。このため、上述した実施形態のように、教示データにより予め定められた高さ位置H1までエンドエフェクタ13を挿入してすくい動作を実行する場合には、エンドエフェクタ13がワークWに挿入されなかったり、挿入量が大きすぎたりする可能性があり、ワークWのすくい量にバラつきが生じる可能性がある。
そこで本変形例では、図18に示すように、モーションコントローラ45が挿入位置検出部63を有する。挿入位置検出部63は、外力算出部55で算出した外力に基づいて、エンドエフェクタ13の先端がワークWへ挿入された位置である挿入位置を検出する。例えば図19に示す例では、エンドエフェクタ13の先端が高さ位置H2でワークWへの挿入を開始されている。挿入位置検出部63は、例えばZ軸正の方向の外力(エンドエフェクタ13がワークWから受ける反力)を検出することで挿入開始を検出し、その時点の制御点PのZ軸方向の位置から高さ位置H2(挿入位置の一例)を検出する。検出された高さ位置H2は記録される。そして、動作制御部51は、検出された高さ位置H2に基づいて、エンドエフェクタ13のワークWに対する挿入量を制御し、ロボット5にすくい動作を実行させる。例えば図20に示す例では、エンドエフェクタ13の制御点Pが、高さ位置H2からZ軸負の方向側への距離(深さ)がh2である高さ位置H3まで中心軸Oに沿って移動するように、挿入量が制御される。なお距離h2は、例えば第1容器3の高さ(深さ)やワークWの収容高さ等に応じて適宜の値に設定されている。その後、前述の図8や図10に示すように、エンドエフェクタ13が水平方向に移動されてワークWのすくい動作が実行される。なお、上記の処理は、ワークWの表面に凹凸がある最初のすくい動作でのみ実行されてもよいし、ワークWの表面が平坦となった後、すなわち深さを変更して行われる2回目以降のすくい動作についても、上記と同様の処理が実行されてもよい。
本変形例によれば、エンドエフェクタ13をワークWに対して適切な量だけ挿入することができる。これにより、ワークWのすくい量を略均一にすることが可能となり、すくい動作を適切に実行することができる。
(6-2.その他)
上記実施形態では、ロボット5が全ての関節にトルクセンサを備える場合について説明したが、これに限定されるものではなく、少なくとも1つの関節にトルクセンサを備えていればよい。このようなロボットに対しても本発明を適用できる。
<7.モーションコントローラのハードウェア構成例>
次に、図21を参照しつつ、モーションコントローラ45のハードウェア構成例について説明する。
図21に示すように、モーションコントローラ45は、例えば、CPU901と、ROM903と、RAM905と、ASIC又はFPGA等の特定の用途向けに構築された専用集積回路907と、入力装置913と、出力装置915と、記録装置917と、ドライブ919と、接続ポート921と、通信装置923とを有する。これらの構成は、バス909や入出力インターフェース911を介し相互に信号を伝達可能に接続されている。
プログラムは、例えば、ROM903やRAM905、記録装置917等に記録しておくことができる。
また、プログラムは、例えば、フレキシブルディスクなどの磁気ディスク、各種のCD・MOディスク・DVD等の光ディスク、半導体メモリ等のリムーバブルな記録媒体925に、一時的又は非一時的(永続的)に記録しておくこともできる。このような記録媒体925は、いわゆるパッケージソフトウエアとして提供することもできる。この場合、これらの記録媒体925に記録されたプログラムは、ドライブ919により読み出されて、入出力インターフェース911やバス909等を介し上記記録装置917に記録されてもよい。
また、プログラムは、例えば、ダウンロードサイト・他のコンピュータ・他の記録装置等(図示せず)に記録しておくこともできる。この場合、プログラムは、LANやインターネット等のネットワークNWを介し転送され、通信装置923がこのプログラムを受信する。そして、通信装置923が受信したプログラムは、入出力インターフェース911やバス909等を介し上記記録装置917に記録されてもよい。
また、プログラムは、例えば、適宜の外部接続機器927に記録しておくこともできる。この場合、プログラムは、適宜の接続ポート921を介し転送され、入出力インターフェース911やバス909等を介し上記記録装置917に記録されてもよい。
そして、CPU901が、上記記録装置917に記録されたプログラムに従い各種の処理を実行することにより、上記の動作制御部51、設定情報切替部53、外力算出部55、第1外力判定部57、第2外力判定部59、切替位置記録部61等による処理が実現される。この際、CPU901は、例えば、上記記録装置917からプログラムを直接読み出して実行してもよいし、RAM905に一旦ロードした上で実行してもよい。更にCPU901は、例えば、プログラムを通信装置923やドライブ919、接続ポート921を介し受信する場合、受信したプログラムを記録装置917に記録せずに直接実行してもよい。
また、CPU901は、必要に応じて、例えばプログラミングペンダント・マウス・キーボード・マイク(図示せず)等の入力装置913から入力する信号や情報に基づいて各種の処理を行ってもよい。
そして、CPU901は、上記の処理を実行した結果を、例えば表示装置や音声出力装置等の出力装置915から出力してもよく、さらにCPU901は、必要に応じてこの処理結果を通信装置923や接続ポート921を介し送信してもよく、上記記録装置917や記録媒体925に記録させてもよい。
なお、以上の説明において、「垂直」「平行」「平面」等の記載がある場合には、当該記載は厳密な意味ではない。すなわち、それら「垂直」「平行」「平面」とは、設計上、製造上の公差、誤差が許容され、「実質的に垂直」「実質的に平行」「実質的に平面」という意味である。
また、以上の説明において、外観上の寸法や大きさ、形状、位置等が「同一」「同じ」「等しい」「異なる」等の記載がある場合は、当該記載は厳密な意味ではない。すなわち、それら「同一」「同じ」「等しい」「異なる」とは、設計上、製造上の公差、誤差が許容され、「実質的に同一」「実質的に同じ」「実質的に等しい」「実質的に異なる」という意味である。
但し、例えばしきい値(図17のフローチャート参照)や基準値等、所定の判定基準となる値あるいは区切りとなる値の記載がある場合は、それらに対しての「同一」「等しい」「異なる」等は、上記とは異なり、厳密な意味である。
また、以上既に述べた以外にも、上記実施形態や各変形例による手法を適宜組み合わせて利用しても良い。その他、一々例示はしないが、上記実施形態や各変形例は、その趣旨を逸脱しない範囲内において、種々の変更が加えられて実施されるものである。