特許第6885856号(P6885856)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 東芝機械株式会社の特許一覧

特許6885856ロボットシステムおよびキャリブレーション方法
<>
  • 特許6885856-ロボットシステムおよびキャリブレーション方法 図000009
  • 特許6885856-ロボットシステムおよびキャリブレーション方法 図000010
  • 特許6885856-ロボットシステムおよびキャリブレーション方法 図000011
  • 特許6885856-ロボットシステムおよびキャリブレーション方法 図000012
  • 特許6885856-ロボットシステムおよびキャリブレーション方法 図000013
  • 特許6885856-ロボットシステムおよびキャリブレーション方法 図000014
  • 特許6885856-ロボットシステムおよびキャリブレーション方法 図000015
  • 特許6885856-ロボットシステムおよびキャリブレーション方法 図000016
  • 特許6885856-ロボットシステムおよびキャリブレーション方法 図000017
  • 特許6885856-ロボットシステムおよびキャリブレーション方法 図000018
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6885856
(24)【登録日】2021年5月17日
(45)【発行日】2021年6月16日
(54)【発明の名称】ロボットシステムおよびキャリブレーション方法
(51)【国際特許分類】
   B25J 19/04 20060101AFI20210603BHJP
   G01B 11/00 20060101ALI20210603BHJP
【FI】
   B25J19/04
   G01B11/00 H
【請求項の数】8
【全頁数】18
(21)【出願番号】特願2017-227929(P2017-227929)
(22)【出願日】2017年11月28日
(65)【公開番号】特開2019-98409(P2019-98409A)
(43)【公開日】2019年6月24日
【審査請求日】2020年7月29日
【早期審査対象出願】
(73)【特許権者】
【識別番号】000003458
【氏名又は名称】芝浦機械株式会社
(74)【代理人】
【識別番号】100091982
【弁理士】
【氏名又は名称】永井 浩之
(74)【代理人】
【識別番号】100091487
【弁理士】
【氏名又は名称】中村 行孝
(74)【代理人】
【識別番号】100082991
【弁理士】
【氏名又は名称】佐藤 泰和
(74)【代理人】
【識別番号】100105153
【弁理士】
【氏名又は名称】朝倉 悟
(74)【代理人】
【識別番号】100118843
【弁理士】
【氏名又は名称】赤岡 明
(74)【代理人】
【識別番号】100141830
【弁理士】
【氏名又は名称】村田 卓久
(72)【発明者】
【氏名】風 間 拓 朗
(72)【発明者】
【氏名】大 野 佳名美
(72)【発明者】
【氏名】牧 雄 一
【審査官】 臼井 卓巳
(56)【参考文献】
【文献】 特開昭60−252914(JP,A)
【文献】 特開2014−180720(JP,A)
【文献】 特開2016−097474(JP,A)
【文献】 特開平01−109202(JP,A)
【文献】 特開平03−092712(JP,A)
【文献】 特開2000−094370(JP,A)
【文献】 特開2009−172718(JP,A)
【文献】 特開2010−076054(JP,A)
【文献】 特開2012−101306(JP,A)
【文献】 米国特許出願公開第2011/0320039(US,A1)
【文献】 米国特許出願公開第2014/0288710(US,A1)
【文献】 米国特許第05321353(US,A)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 9/00−19/04
G01B 11/00
(57)【特許請求の範囲】
【請求項1】
アームを有するロボットと、
ワークを載置可能なテーブル上の複数のマーカの第1画像データを取得する撮像部と、
前記撮像部を制御し、前記第1画像データに基づいて、前記撮像部により撮像される画像内の座標系であるカメラ座標系における前記複数のマーカの第1カメラ座標値を取得する撮像制御部と、
前記ロボットを制御し、前記アームの先端部に設けられるキャリブレーション治具を前記複数のマーカの上方に位置させたときに、前記ロボットを基準とする座標系であるロボット座標系における前記複数のマーカの第1ロボット座標値を取得するとともに、前記キャリブレーション治具を前記複数のマーカに接触させたときに、2次元平面である前記ロボット座標系に垂直な方向における前記複数のマーカの高さを示す鉛直ロボット座標値を取得するロボット制御部と、
前記撮像制御部および前記ロボット制御部から前記第1カメラ座標値および前記第1ロボット座標値を取得し該第1カメラ座標値および該第1ロボット座標値に基づいて前記カメラ座標系の座標値を前記ロボット座標系の座標値に変換する変換式を導出する演算部により導出された該変換式を記憶する記憶部と、を備え
前記ロボット制御部は、前記第1ロボット座標値および前記鉛直ロボット座標値に基づいて前記テーブルの平面方程式を演算すロボットシステム。
【請求項2】
前記撮像部は、前記ワークの第2画像データを取得し、
前記撮像制御部は、前記第2画像データに基づいて前記ワークの第2カメラ座標値を取得し、
前記ロボット制御部は、前記変換式により前記第2カメラ座標値を前記ワークのワーク変換座標値に変換する、請求項1に記載のロボットシステム。
【請求項3】
前記ロボット制御部は、前記平面方程式および前記ワーク変換座標値に基づいて、前記撮像部の光軸の垂直面に対する前記テーブルの傾きによる座標値のずれを補正した前記ワークのワーク補正座標値を演算する、請求項に記載のロボットシステム。
【請求項4】
前記平面方程式をax+by+cz+d=0とし、前記撮像部の座標値を(xv,yv,zv)とし、前記ワーク変換座標値を(xsf,ysf)とし、前記撮像部の焦点距離をZLとし、zv+ZLをzsfとし、前記ワーク補正座標値(xsc,ysc,zsc)は次の式によって演算される
【数1】
請求項に記載のロボットシステム。
【請求項5】
前記撮像部は、前記テーブルの第3画像データを取得し、
前記撮像制御部は、前記第3画像データに基づいて、前記テーブル上において前記撮像部の光軸から最遠部の第3カメラ座標値を取得し、
前記ロボット制御部は、前記変換式により前記第3カメラ座標値を前記最遠部の最遠部変換座標値に変換し、
前記ロボット制御部は、前記平面方程式および前記最遠部変換座標値に基づいて、前記撮像部の光軸の垂直面に対する前記テーブルの傾きによる座標値のずれを補正した前記最遠部の最遠部補正座標値を演算し、
前記ロボット制御部は、前記最遠部変換座標値と前記最遠部補正座標値との差と、前記ロボットの位置決め精度と、を比較し、
前記差が前記位置決め精度を超える場合、前記ロボット制御部は、前記平面方程式および前記ワーク変換座標値に基づいて、前記撮像部の光軸の垂直面に対する前記テーブルの傾きによる座標値のずれを補正した前記ワークのワーク補正座標値を演算し、前記ワーク補正座標値を前記ワークの座標値とし、
前記差が前記位置決め精度の範囲内である場合、前記ロボット制御部は、前記ワーク変換座標値を前記ワークの座標値とする、請求項に記載のロボットシステム。
【請求項6】
前記平面方程式をax+by+cz+d=0とし、前記撮像部の座標値を(xv,yv,zv)とし、前記ワーク変換座標値を(xsf,ysf)とし、前記撮像部の焦点距離をZLとし、zv+ZLをzsfとし、前記ワーク補正座標値(xsc,ysc,zsc)は次の式によって演算され、
【数2】
前記最遠部変換座標値を(xaf,yaf)とし、zv+ZLをzafとし、前記最遠部補正座標値(xac,yac,zac)は次の式によって演算される
【数3】
請求項に記載のロボットシステム。
【請求項7】
前記複数のマーカは、3行3列に配置される、請求項1から請求項のいずれか一項に記載のロボットシステム。
【請求項8】
アームを有するロボットと、ワークを載置可能なテーブルを撮像する撮像部と、前記撮像部を制御する撮像制御部と、前記ロボットを制御するロボット制御部と、前記撮像部により撮像される画像内の座標系であるカメラ座標系の座標値を、前記ロボットを基準とする座標系であるロボット座標系の座標値に変換する変換式を記憶する記憶部とを備えるロボットシステムにおけるキャリブレーション方法であって、
前記アームの先端部に設けられるキャリブレーション治具を前記テーブル上の複数のマーカの上方に位置させたときに、前記ロボット座標系における前記複数のマーカの第1ロボット座標値を前記ロボット制御部で取得するとともに、前記キャリブレーション治具を前記複数のマーカに接触させたときに、2次元平面である前記ロボット座標系に垂直な方向における前記複数のマーカの高さを示す鉛直ロボット座標値を前記ロボット制御部で取得し、
前記複数のマーカの第1画像データを前記撮像部で取得し、
前記第1画像データに基づいて、前記カメラ座標系における前記複数のマーカの第1カメラ座標値を前記撮像制御部で取得し、
前記撮像制御部および前記ロボット制御部から前記第1カメラ座標値および前記第1ロボット座標値を取得し該第1カメラ座標値および該第1ロボット座標値に基づいて前記変換式を導出する演算部により導出された該変換式を前記記憶部で記憶することを具備し、
前記第1ロボット座標値および前記鉛直ロボット座標値に基づいて前記テーブルの平面方程式を前記ロボット制御部で演算する、ことをさらに具備するキャリブレーション方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明による実施形態は、ロボットシステムおよびキャリブレーション方法に関する。
【背景技術】
【0002】
産業用ロボットと2次元ビジョンシステムとを組み合わせたロボットシステムが使用されている。例えば、まず、2次元ビジョンシステムに含まれるカメラがワークを撮像することにより、2次元ビジョンシステムがワークの座標値を取得する。その後、取得したワークの座標値をもとにロボットアームが動いて作業をする場合がある。このとき、カメラから見た座標(カメラ座標)とロボットから見た座標(ロボット座標)とは座標の基準が異なる。従って、カメラ座標とロボット座標との間で、同一のワークの座標値が異なってしまう。そこで、カメラ座標をロボット座標に変換する必要がある。この変換の演算に使用する行列式を導入する作業は、キャリブレーション作業と呼ばれる。
【0003】
しかし、このキャリブレーション作業は、作業工数が多く、手間がかかるため、長時間を要していた。また、作業手順が複雑であり、ユーザが手作業でデータの記録等を行うため、作業ミスも多かった。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2014−180720号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
カメラ座標とロボット座標との間のキャリブレーション作業を容易かつ迅速に行うことができ、かつ、作業ミスを減少させることができるロボットシステムおよびキャリブレーション方法を提供する。
【課題を解決するための手段】
【0006】
本実施形態によるロボットシステムは、アームを有するロボットと、ワークを載置可能なテーブル上の複数のマーカの第1画像データを取得する撮像部と、撮像部を制御し、第1画像データに基づいて、撮像部により撮像される画像内の座標系であるカメラ座標系における複数のマーカの第1カメラ座標値を取得する撮像制御部と、ロボットを制御し、アームの先端部に設けられるキャリブレーション治具を複数のマーカの上方に位置させたときに、ロボットを基準とする座標系であるロボット座標系における複数のマーカの第1ロボット座標値を取得するとともに、キャリブレーション治具を複数のマーカに接触させたときに、2次元平面であるロボット座標系に垂直な方向における複数のマーカの高さを示す鉛直ロボット座標値を取得するロボット制御部と、撮像制御部およびロボット制御部から第1カメラ座標値および第1ロボット座標値を取得し該第1カメラ座標値および該第1ロボット座標値に基づいてカメラ座標系の座標値をロボット座標系の座標値に変換する変換式を導出する演算部により導出された該変換式を記憶する記憶部と、を備え、ロボット制御部は、第1ロボット座標値および鉛直ロボット座標値に基づいてテーブルの平面方程式を演算する。
【図面の簡単な説明】
【0007】
図1】第1実施形態によるロボットシステムの構成の一例を示す図。
図2】スカラロボットにおけるツール座標系の座標取得を示す図。
図3】テーブルの上方から見た、テーブルおよび複数のマーカの図。
図4】ロボット座標値およびカメラ座標値の取得から変換式の保存までのデータの流れの一例を示すブロック図。
図5】第1実施形態によるロボットシステムの動作の一例を示すフロー図
図6】第2実施形態によるロボットシステムの構成の一例を示す図。
図7】垂直多関節ロボットにおけるツール座標系の座標取得を示す図。
図8】第3実施形態によるテーブルの傾きを示す模式図。
図9】第3実施形態によるロボットシステムの動作の一例を示すフロー図。
図10】変形例によるロボットシステムの動作の一例を示すフロー図
【発明を実施するための形態】
【0008】
以下、図面を参照して本発明に係る実施形態を説明する。本実施形態は、本発明を限定するものではない。本願明細書と各図において、既出の図に関して前述したものと同様の要素には同一の符号を付して詳細な説明は適宜省略する。
【0009】
(第1実施形態)
図1は、第1実施形態によるロボットシステム100の構成の一例を示す図である。ロボットシステム100は、スカラロボット1と、ロボットコントローラ2と、操作部3と、撮像部5と、ビジョンコントローラ6と、表示部7と、端末8と、演算部9と、LAN(Local Area Network)用ハブ10とを備える。
【0010】
ロボットとしてのスカラロボット1は、アームを有し、通常動作では、アームを動作させて、例えば、テーブル4に載置されるワークを把持または加工する。このとき、スカラロボット1は、撮像部5で撮像される画像データに基づいてアーム等の位置を決める。撮像部5により撮像される画像内の位置を示すカメラ座標系とスカラロボット1のアームの位置を示すロボット座標系とがずれている場合、スカラロボット1は、ワークを正確に把持したり、加工することができない。従って、通常動作の前にキャリブレーションが行われる。キャリブレーションとは、カメラ座標系の座標値をロボット座標系の座標値に変換する変換式を導出することである。カメラ座標系とは、撮像部5により撮像される画像内の位置を示すために用いられる座標系である。ここでは、ロボット座標系とは、スカラロボット1のアームの先端部を基準とする座標系である。従って、ロボット座標系は、アームの先端部の位置を示すために用いられる。尚、スカラロボット1は、スカラロボットに限られず、同様な機能を有するロボットであればよい。
【0011】
テーブル4は、ワークまたはキャリブレーションに用いられる複数のマーカ18を載置可能である。通常動作では、ワークがテーブル4上にある。ここでは、キャリブレーションが行われるため、複数のマーカ18がテーブル4上にある。
【0012】
キャリブレーションでは、スカラロボット1のアームの先端部に、キャリブレーション治具11が設けられる。キャリブレーション治具11は、スカラロボット1のZ軸1aと平行になるように取り付けられる。キャリブレーション治具11の先端は、先鋭であることが好ましい。これにより、キャリブレーションの精度を向上させることができるからである。
【0013】
ロボット制御部としてのロボットコントローラ2は、スカラロボット1に接続される。ロボットコントローラ2は、スカラロボット1を制御する。また、図4を用いて後で説明するように、ロボットコントローラ2は、スカラロボット1から取得しているエンコーダ情報に基づいてロボット座標値を取得する。エンコーダ情報とは、スカラロボット1の各軸を動かすモータに取り付けられるエンコーダからのモータの角度情報である。ロボットコントローラ2は、この角度情報をスカラロボット1の位置情報に変換している。ロボット座標値は、この位置情報に含まれる。ロボットコントローラ2は、キャリブレーション治具11を複数のマーカ18の上方に位置させたときに、ロボット座標系における複数のマーカ18の第1ロボット座標値を取得する。ロボット座標値は、ロボット座標系の内、2次元平面(XY平面)のX,Y座標値である。
【0014】
操作部3は、ロボットコントローラ2に接続される。操作部3は、ユーザによって手動でスカラロボット1を操作することを可能とする。
【0015】
撮像部5は、テーブル4の上方に設けられ、テーブル4を撮像する。撮像部5は、複数のマーカ18を撮像することにより、複数のマーカ18の第1画像データを取得する。撮像部5は、例えば、2次元カメラである。撮像部5は、取得した第1画像データをビジョンコントローラ6へ送信する。
【0016】
撮像制御部としてのビジョンコントローラ6は、撮像部5に接続されている。ビジョンコントローラ6は、撮像部5を制御する。また、ビジョンコントローラ6は、第1画像データに基づいて、カメラ座標系における複数のマーカ18の第1カメラ座標値を取得する。カメラ座標値は、2次元平面(XY平面)のX,Y座標値である。
【0017】
表示部7は、ビジョンコントローラ6に接続されている。表示部7は、撮像部5で撮像された画像データを表示する。また、表示部7は、ビジョンコントローラ6の設定を行うために使用される。
【0018】
端末8は、ロボットコントローラ2およびビジョンコントローラ6に対して外部に設けられる。端末8はキャリブレーションに用いられるため、通常動作においては、端末8はロボットシステム100から外されてもよい。端末8は、演算部9を有する。端末8は、例えば、パーソナルコンピュータである。
【0019】
演算部9は、例えば、1つまたは複数のCPU(Central Processor Unit)および/またはロジックLSI(Large Scale Integration)等で構成してよい。演算部9は、キャリブレーションプログラムを実行することにより、座標取得命令をロボットコントローラ2およびビジョンコントローラ6へ送る。ロボットコントローラ2およびビジョンコントローラ6は、座標取得命令を受けて、それぞれ第1カメラ座標値および第1ロボット座標値を取得する。そして、演算部9は、ビジョンコントローラ6およびロボットコントローラ2から第1カメラ座標値および第1ロボット座標値を取得する。さらに、演算部9は、キャリブレーションでは、第1カメラ座標値および第1ロボット座標値に基づいて、カメラ座標系の座標値をロボット座標系の座標値に変換する変換式を導出する。演算部9は、キャリブレーションにより得られた変換式をロボットコントローラ2へ送る。変換式は、通常動作においてカメラ座標系の座標値をロボット座標系の座標値に変換するために用いられる。キャリブレーションプログラムは、例えば、東芝機械株式会社製のロボットプログラム作成支援ツール「TSAssist(登録商標)」等である。また、演算部9は、後述するキャリブレーション治具11のオフセットを取得し、ツール座標系を設定する。
【0020】
LAN用ハブ10は、ロボットコントローラ2、ビジョンコントローラ6および端末8と接続される。これにより、後述する図4に示すように、カメラ座標値およびロボット座標値のデータを送受信することができる。LAN用ハブ10は、例えば、イーサネット(登録商標)等に用いられるハブでよい。尚、他の方法によりカメラ座標値およびロボット座標値のデータの送受信が可能である場合、ロボットシステム100はLAN用ハブ10を備えていなくてもよい。
【0021】
図2は、スカラロボット1におけるツール座標系の座標取得を示す図である。ツール座標系とは、アームの先端部に設けられるツールの先端を基準とし、ツールの先端の位置を示す座標系である。ツールは、キャリブレーションにおいてはキャリブレーション治具11である。ツール座標系の座標値は、アームの先端部を基準とするロボット座標値に対して、キャリブレーション治具11の寸法に対応するオフセットがある。このオフセットを取得してツール座標系を設定することにより、ツール座標系の座標値からロボット座標値を取得することができる。そこで、キャリブレーション前に、キャリブレーション治具11を取り付けた状態でオフセットを取得し、ツール座標系を設定する必要がある。設定されたツール座標系は、キャリブレーション作業がすべて完了するまで有効となる。尚、CADデータ等によりキャリブレーション治具11の寸法がわかる場合には、ツール座標系の設定にオフセットの取得を省略することができる場合もある。
【0022】
オフセットを取得することは、アームの先端部からキャリブレーション治具11の先端までのXY平面の距離rおよびキャリブレーション治具11の先端が位置決めされた基準点の座標値(X0,Y0)を求めることである。アームの1つの姿勢によって、未知数r,X0,Y0の関係式を求めることができる。従って、3つの姿勢によって、3つの未知数r,X0,Y0を求めることができる。さらに、求めたr,X0,Y0の確認のため、もう1つの姿勢が必要となる。従って、アームの4つの姿勢からオフセットを取得することができる。
【0023】
図3は、テーブル4の上方から見た、テーブル4および複数のマーカ18の図である。複数のマーカ18は、図3に示すように、撮像部5の撮像範囲17内に配置される。尚、マーカ18の大きさや形は、撮像部5が検出可能であればよい。
【0024】
複数のマーカ18は、図3に示すように、3行3列に配置される。これにより、撮像部5のレンズの歪みにより生じる、魚眼レンズのような画像の歪みを補正することができる。尚、複数のマーカ18は、3行3列の9個に限られない。例えば、複数のマーカ18は、直線上にない3点等、2次元平面を形成するように設けられていてもよい。また、複数のマーカ18は、等間隔に配置されることが好ましい。これにより、キャリブレーションの精度を向上させることができる。また、複数のマーカ18は、撮像範囲17内の広範囲に設けられることが好ましい。これにより、広範囲においてキャリブレーションすることができる。また、マーカ18の高さは、ワークの高さと略同一である必要がある。
【0025】
図4は、ロボット座標値およびカメラ座標値の取得から変換式の保存までのデータの流れの一例を示すブロック図である。スカラロボット1は、エンコーダ21を備える。ロボットコントローラ2は、位置情報取得部13と、データ中継部19と、記憶部20とを備える。演算部9は、ロボット座標取得部14と、カメラ座標取得部15と、変換式演算部16とを備える。
【0026】
まず、第1カメラ座標値を取得する場合のデータの流れについて説明する。カメラ座標取得部15は、ユーザの命令により、カメラ座標取得命令をデータ中継部19へ送信する。データ中継部19は、カメラ座標取得命令を、ロボットフォーマットからビジョンフォーマットへ変換して、ビジョンコントローラ6へ送信する。ビジョンコントローラ6は、カメラ座標取得命令を受けると、撮像部5にマーカ18を撮像させ、撮像部5から第1画像データを受信する。ビジョンコントローラ6は、第1画像データに基づいて、第1カメラ座標値を取得する。ビジョンコントローラ6は、第1カメラ座標値をデータ中継部19へ送信する。データ中継部19は、第1カメラ座標値を、ビジョンフォーマットからロボットフォーマットへ変換して、カメラ座標取得部15へ送信する。カメラ座標取得部15は、第1カメラ座標値を保存する。カメラ座標取得部15は、上記の手順を、マーカ18の9点分実行する。すなわち、カメラ座標取得部15は、1点分ずつ第1カメラ座標値を取得する。カメラ座標取得部15は、9点分の第1カメラ座標値を変換式演算部16へ送信する。尚、上記のフォーマットの変換は、ロボットコントローラ2とビジョンコントローラ6との間でデータ形式が異なる場合に必要となる。従って、データ形式が同じである場合、フォーマットを変換しなくてもよい。
【0027】
次に、第1ロボット座標値を取得する場合のデータの流れについて説明する。キャリブレーション治具11は、マーカ18の上方に位置される。ロボット座標取得部14は、ユーザの命令により、ロボット座標取得命令を位置情報取得部13へ送信する。位置情報取得部13は、エンコーダ21が断続的に送信するエンコーダ情報を受信している。位置情報取得部13は、エンコーダ情報をスカラロボット1の位置情報に変換している。位置情報取得部13は、ロボット座標取得命令を受けると、変換した位置情報内のX,Y座標値を第1ロボット座標値としてロボット座標取得部14へ送信する。ロボット座標取得部14は、第1ロボット座標値を保存する。ロボット座標取得部14は、上記の手順を、マーカ18の9点分実行する。すなわち、マーカ18毎にキャリブレーション治具11の位置付けおよび第1ロボット座標値の取得が実行される。ロボット座標取得部14は、9点分の第1ロボット座標値を変換式演算部16へ送信する。
【0028】
次に、変換式演算部16は、9点分の第1カメラ座標値および9点分の第1ロボット座標値に基づいて、変換式を導出する。変換式演算部16は、変換式を記憶部20へ送信する。記憶部20は、受け取った変換式を記憶する。
【0029】
図5は、第1実施形態によるロボットシステム100の動作の一例を示すフロー図である。尚、図4に示すデータの流れは、図5におけるステップS60〜S100に対応する。
【0030】
まず、ユーザは、複数のマーカ18をテーブル4上の撮像範囲17内に配置する(S10)。次に、ビジョンコントローラ6は、マーカ18を登録する(S20)。例えば、ビジョンコントローラ6は、マーカ18の画像認識情報を登録する。次に、ユーザは、キャリブレーション治具11をスカラロボット1の先端部に取り付ける(S30)。次に、演算部9は、キャリブレーション治具11のオフセットを取得し(S40)、ツール座標系を設定する。
【0031】
キャリブレーション治具11のオフセットの取得方法について説明する。ユーザは、マーカ18の角の上など任意の位置に基準点を決める。ユーザは、キャリブレーション治具11の先端が基準点の上方に位置するようにスカラロボット1を操作する。そして、ユーザは、アームの姿勢を変えるようにスカラロボット1を操作する。ユーザは、この操作を繰り返し、異なる4つの姿勢においてキャリブレーション治具11の先端の位置を基準点の上方に一致させるようにスカラロボット1を操作する。演算部9は、アームの4つの姿勢それぞれの位置情報からオフセットを取得する。
【0032】
次に、ユーザは、操作部3を用いて、キャリブレーション治具11をマーカ18の上方に位置合わせする(S50)。次に、演算部9は、ユーザの命令により、第1ロボット座標値を取得する(S60)。次に、ユーザは、撮像部5がマーカ18を撮像できるようにスカラロボット1を操作する。演算部9は、ユーザの命令により、第1カメラ座標値を取得する(S70)。全てのマーカ18において第1カメラ座標値および第1ロボット座標値を取得していない場合(S80のNO)、次のマーカ18においてステップS50〜S70を実行する。全てのマーカ18において第1カメラ座標値および第1ロボット座標値を取得した場合(S80のYES)、演算部9は、変換式を導出する(S90)。次に、演算部9は、変換式をロボットコントローラ2へ送信し、記憶部20は変換式を保存する(S100)。
【0033】
尚、第1カメラ座標値の取得(S70)の後に第1ロボット座標値の取得(S50,S60)をしてもよい。また、ステップS50〜S80のように、マーカ18毎に第1カメラ座標値および第1ロボット座標値を取得することに限られない。例えば、図4に示すロボット座標取得部14が9点分の第1ロボット座標値を取得および保存し、その後、カメラ座標取得部15が9点分の第1カメラ座標値を取得および保存してもよい。
【0034】
以上のように、第1実施形態によるロボットシステム100は、複数のマーカの第1画像データを取得する撮像部5と、第1画像データに基づいて、複数のマーカ18の第1カメラ座標値を取得するビジョンコントローラ6と、キャリブレーション治具11を複数のマーカ18の上方に位置させたときに、複数のマーカ18の第1ロボット座標値を取得するロボットコントローラ2と、ビジョンコントローラ6およびロボットコントローラ2から第1カメラ座標値および第1ロボット座標値を取得し該第1カメラ座標値および該第1ロボット座標値に基づいてカメラ座標系の座標値をロボット座標系の座標値に変換する変換式を導出する演算部9により導出された該変換式を記憶する記憶部と、を備える。
【0035】
これにより、演算部9は、ビジョンコントローラ6およびロボットコントローラ2から第1カメラ座標値および第1ロボット座標値を自動で取得して変換式を導出する。従って、ユーザが手作業で第1カメラ座標値および第1ロボット座標値をメモして、演算した変換式をロボットコントローラに入力する場合に比べて、キャリブレーション作業を容易かつ迅速に行うことができ、かつ、作業ミスを減少させることができる。
【0036】
尚、上述の演算部9は、ビジョンコントローラ6およびロボットコントローラ2の外部に設けられるが、ビジョンコントローラ6またはロボットコントローラ2が演算部9の機能を有してもよい。すなわち、ビジョンコントローラ6またはロボットコントローラ2が第1カメラ座標値および第1ロボット座標値を自動で取得して変換式を導出してもよい。
【0037】
(第2実施形態)
図6は、第2実施形態によるロボットシステム100の構成の一例を示す図である。第2実施形態は、スカラロボット1が垂直多関節ロボット12である点で第1実施形態とは異なる。
【0038】
キャリブレーション治具11は、垂直多関節ロボット12の第6軸12aと平行となるように取り付けられる。スカラロボット1と同様の計算でオフセットを取得するため、A,B,C軸のオイラー角は0度に設定される。
【0039】
第2実施形態によるロボットシステム100のその他の構成は、第1実施形態によるロボットシステム100の対応する構成と同様であるため、その詳細な説明を省略する。
【0040】
図7は、垂直多関節ロボット12におけるツール座標系の座標取得を示す図である。スカラロボット1では、アームの角度によってXY平面の座標値が変化する。Z軸方向の座標値は、アームの角度ではなく、スカラロボット1のZ軸1aを上下に動かすことにより変化する。従って、XY平面の距離rおよびXY平面の基準点の座標値を求めることによりオフセットを取得することができる。一方、垂直多関節ロボット12では、アームの角度によってXYZ空間の座標値が変化する。従って、XYZ空間の距離rおよびXYZ空間の基準点の座標値(X0,Y0,Z0)を求める必要がある。すなわち、スカラロボット1に比べて未知数が1つ多い。従って、第2実施形態による演算部9は、アームの5つの姿勢の位置情報からオフセットを取得する点で、第1実施形態と異なる。
【0041】
第2実施形態によるロボットシステム100は、第1実施形態によるロボットシステム100と同様の効果を得ることができる。
【0042】
(第3実施形態)
キャリブレーションの完了後、複数のマーカ18はテーブル4上から取り除かれ、ワークがテーブル4上に載置される。テーブル4が傾いている場合、カメラ座標値からロボット座標値に変換したワークの座標値と実際のワークの座標値との間にずれが生じることがある。
【0043】
図8は、第3実施形態によるテーブル4の傾きを示す模式図である。図8は、Y軸方向から見た図である。テーブル4は、撮像部5の光軸22に垂直な面Pから角度θo傾いている。面Pは、撮像部5からZ軸方向に撮像部5の焦点距離ZL離れた位置にある。ワークは、テーブル4上の点Sにあるとする。撮像部5は、ワークを撮像し、ワークの第2画像データを取得する。ビジョンコントローラ6は、第2画像データに基づいて、ワークの第2カメラ座標値を取得する。ビジョンコントローラ6は、撮像部5の点Oと点Sとを結ぶ直線と面Pとの交点である点Sfを第2カメラ座標値として取得する。ロボットコントローラ2は、変換式により第2カメラ座標値をワークのワーク変換座標値に変換する。このワーク変換座標値も点Sfである。したがって、図8に示すように、テーブル4が傾くことにより、ワークの実際の位置である点Sとワーク変換座標値である点Sfとの間に座標値のずれが生じる。この場合、スカラロボット1はワークを把持することができない可能性がある。
【0044】
第1実施形態および第2実施形態では、テーブル4の傾きによる座標値のずれを考慮していない。これに対し、第3実施形態では、以下のように、テーブル4の傾きによる座標値のずれを補正した補正座標値を演算する。
【0045】
キャリブレーションにおいて、複数のマーカ18の上部またはキャリブレーション治具11の先端に、圧力センサが設けられる。圧力センサは、キャリブレーション治具11を鉛直方向に変位させたときに、キャリブレーション治具11がマーカ18に接触したことを検知する。圧力センサは、ロボットコントローラ2に接続され、キャリブレーション治具11がマーカ18に接触したことをロボットコントローラ2に送ってもよい。尚、圧力センサに限られず、キャリブレーション治具11がマーカ18に接触したことを検知することができるセンサであればよい。
【0046】
ロボットコントローラ2は、キャリブレーション治具11を複数のマーカ18に接触させたことを圧力センサが検知したときに、鉛直ロボット座標値を取得する。鉛直ロボット座標値は、2次元平面(XY平面)であるロボット座標系に垂直なZ軸方向における複数のマーカ18の高さを示す。尚、鉛直ロボット座標値は、キャリブレーションには使用されない。
【0047】
通常動作において、ロボットコントローラ2は、9点分のマーカ18における第1ロボット座標値および鉛直ロボット座標値に基づいて、テーブル4の3次元の平面方程式を演算する。
【0048】
一方、ロボットコントローラ2は、点Oと点Sfとを結ぶ直線O−Sfを演算する。ロボットコントローラ2は、テーブル4の平面方程式および直線O−Sfの交点をワークのワーク補正座標値として演算する。すなわち、ロボットコントローラ2は、テーブル4の平面方程式およびワーク変換座標値に基づいて、ワーク補正座標値を演算する。このように演算されたワーク補正座標値が点Sの座標値である。
【0049】
第3実施形態によるロボットシステム100のその他の構成は、第1実施形態によるロボットシステム100の対応する構成と同様であるため、その詳細な説明を省略する。
【0050】
次に、ワーク補正座標値の演算について説明する。
【0051】
テーブル4の平面方程式をax+by+cz+d=0とし、点Oの座標値を(xv,yv,zv)とし、点Sfの座標値を(xsf,ysf,zsf)とし、点Sの座標値を(xsc,ysc,zsc)とする。点Oの座標値(xv,yv,zv)は、撮像部5を取り付ける際に測定される。点SfのX,Y成分(xsf,ysf)はワーク変換座標値である。点SfのZ成分zsfは、図8に示すように、zv+ZLである。焦点距離ZLも、撮像部5を取り付ける際に測定される。
【0052】
直線O−Sfの方向ベクトルは、式1で表される。
【数1】
【0053】
従って、直線O−Sfの方程式は、式2で表される。
【数2】
【0054】
式2を式3とすると、式3は、式4,5,6で表わされる。
【数3】
【0055】
式4,5,6を上記の平面方程式に代入すると、式7で表されるように、tが得られる。
【数4】
【0056】
このtを式4,5,6に代入することにより、ワーク補正座標値である点Sの座標値(xsc,ysc,zsc)を演算することができる。
【0057】
図9は、第3実施形態によるロボットシステム100の動作の一例を示すフロー図である。
【0058】
図9におけるステップS10〜S60は、第1実施形態における図5に示すステップS10〜S60と同様である。第1ロボット座標値を取得した後(S60)、ユーザは、キャリブレーション治具11をZ方向に移動させる。これにより、ロボットコントローラ2は、鉛直ロボット座標値を取得する(S65)。また、図9におけるステップS70〜S100は、第1実施形態における図5に示すステップS70〜S100と同様である。
【0059】
次に、ロボットコントローラ2は、第1ロボット座標値および鉛直ロボット座標値に基づいて、テーブル4の平面方程式を演算する(S110)。次に、撮像部5は、ワークを撮像し、第2画像データを取得する。ビジョンコントローラ6は、第2画像データに基づいて、第2カメラ座標値を取得する(S120)。次に、ロボットコントローラ2は、第2カメラ座標値をビジョンコントローラ6から受け取る。ロボットコントローラ2は、変換式により第2カメラ座標値をワーク変換座標値に変換する(S130)。ロボットコントローラ2は、テーブル4の平面方程式およびワーク変換座標値に基づいて、テーブル4の傾きによる座標値のずれを補正したワーク補正座標値を演算する(S140)。
【0060】
尚、点Sと点Sfとの間のZ軸方向のずれに対しては、例えば、吸着によりワークを把持するツールが設けられる場合、ツールにスプリング機構を設けることにより、Z軸方向のずれを吸収することができる。また、例えば、ロボットティーチングにおいて、X,Y成分に対応するZ成分をプログラムすることもできる。
【0061】
以上のように、第3実施形態によるロボットシステム100によれば、ロボットコントローラ2は、キャリブレーション治具11を複数のマーカ18に接触させたときに、2次元平面であるロボット座標系に垂直な方向における複数のマーカ18の高さを示す鉛直ロボット座標値を取得する。ロボットコントローラ2は、第1ロボット座標値および鉛直ロボット座標値に基づいてテーブル4の平面方程式を演算する。ロボットコントローラ2は、平面方程式およびワーク変換座標値に基づいて、撮像部5の光軸22に垂直な面Pに対するテーブル4の傾きによる座標値のずれを補正したワークのワーク補正座標値を演算する。
【0062】
これにより、ロボットコントローラ2は、テーブル4の傾きによる座標値のずれを補正したワーク補正座標値に位置決めをすることができる。従って、テーブル4が面Pから傾いている場合であっても、スカラロボット1はワークを把持することができる。
【0063】
尚、第3実施形態は、第1実施形態および第2実施形態に適用することができる。
【0064】
(変形例)
第3実施形態の変形例は、ワーク補正座標値を演算する前にワーク補正座標値を演算するか否かを判断する点で、第3実施形態とは異なる。
【0065】
図8において、面Pにおける点Afから点Cfまでが撮像部5の撮像範囲17であるとする。尚、撮像範囲17の角度であるθaとθcとは同じ角度である。テーブル4の点Aから点Cまでの範囲外は、画像データには入らない。従って、ユーザが画像データを見た場合に、点Af(点A)および点Cf(点C)は、テーブル4上において、撮像部5の光軸22から最遠部である。
【0066】
また、光軸22がテーブル4と交わる点は、点Qである。点Q、点Sおよび点Cを比較すると、光軸22から離れるほど、テーブル4の傾きによる座標値のずれが大きくなる。変形例によるロボットコントローラ2は、座標値のずれが最大になる最遠部(点A、点C)において、座標値のずれとスカラロボット1の位置決め精度とを比較する。ロボットコントローラ2は、この比較の結果から、ワーク補正座標値を演算するか否かを判定する。
【0067】
位置決め精度とは、ある座標値に位置決めをした場合において、実際に位置決め制御されたスカラロボット1の座標値のばらつき幅である。位置決め精度は、例えば、予め記憶部20に格納されている。例えば、位置決め精度が±0.1mmであるとする。テーブル4の傾きによる座標値のずれの最大値が±0.1mmの範囲を超える場合、テーブル4の傾きによる座標値のずれは無視することができないほど大きい。この場合、ロボットコントローラ2は、ワーク補正座標値を演算する。一方、テーブル4の傾きによる座標値のずれの最大値が±0.1mmの範囲に収まるほど小さい場合、テーブル4の傾きによる座標値のずれは無視することができるほど小さい。この場合、ロボットコントローラ2は、ワーク補正座標値を演算しない。
【0068】
尚、最遠部は、図3における撮像範囲17の端部からユーザにより選択される。例えば、光軸22の位置が撮像範囲17の中央であるとして、ユーザは、撮像範囲17の端部における上下左右を最遠部として選択する。また、複数の最遠部を用いて判定することも可能である。
【0069】
以下では、ユーザは図8における点Afを最遠部として選択したとする。
【0070】
撮像部5は、テーブル4を撮像することにより、テーブル4の第3画像データを取得する。
【0071】
ロボットコントローラ2は、第3画像データに基づいて、テーブル4上において光軸22から最遠部(点Af)の第3カメラ座標値を取得する。ロボットコントローラ2は、変換式により第3カメラ座標値を最遠部(点Af)の最遠部変換座標値に変換する。
【0072】
ロボットコントローラ2は、点Oと点Afとを結ぶ直線O−Afを演算する。ロボットコントローラ2は、テーブル4の平面方程式および直線O−Afの交点を最遠部の最遠部補正座標値として演算する。すなわち、ロボットコントローラ2は、テーブル4の平面方程式および最遠部変換座標値に基づいて、最遠部補正座標値を演算する。このように演算された最遠部補正座標値が点Aの座標値である。
【0073】
尚、最遠部補正座標値である点Aの座標値(xac,yac,zac)は、式4,5,6,7におけるワーク変換座標値(xsf,ysf)に代えて最遠部変換座標値(xaf,yaf)用いることにより演算することができる。
【0074】
ロボットコントローラ2は、最遠部変換座標値と最遠部補正座標値との差と、スカラロボット1の位置決め精度とを比較する。
【0075】
最遠部変換座標値と最遠部補正座標値との差が位置決め精度の範囲を超える場合、ロボットコントローラ2は、第3実施形態と同様に、ワーク補正座標値を演算する。この場合、ロボットコントローラ2は、ワーク補正座標値をワークの座標値とする。
【0076】
一方、最遠部変換座標値と最遠部補正座標値との差が位置決め精度の範囲内である場合、ロボットコントローラ2は、ワーク補正座標値を演算しない。この場合、ロボットコントローラ2は、ワーク変換座標値をワークの座標値とする。
【0077】
変形例によるロボットシステム100のその他の構成は、第3実施形態によるロボットシステム100の対応する構成と同様であるため、その詳細な説明を省略する。
【0078】
図10は、変形例によるロボットシステム100の動作の一例を示すフロー図である。
【0079】
図10におけるステップS10〜S60,S65,S70〜S130は、第3実施形態における図9に示すステップS10〜S60,S65,S70〜S130と同様である。
【0080】
次に、撮像部5は、テーブル4を撮像し、第3画像データを取得する。ビジョンコントローラ6は、第3画像データに基づいて第3カメラ座標値を取得する(S132)。次に、ロボットコントローラ2は、第3カメラ座標値をビジョンコントローラ6から受け取る。ロボットコントローラ2は、変換式により第3カメラ座標値を最遠部変換座標値に変換する(S134)。次に、ロボットコントローラ2は、テーブル4の平面方程式および最遠部変換座標値に基づいて、テーブル4の傾きによる座標値のずれを補正した最遠部補正座標値を演算する(S136)。次に、ロボットコントローラ2は、最遠部変換座標値と最遠部補正座標値との差と、スカラロボット1の位置決め精度と、を比較する(S138)。最遠部変換座標値と最遠部補正座標値との差が位置決め精度を超える場合(S138のYES)、ロボットコントローラ2は、ワーク補正座標値を演算する(S140)。尚、図10におけるステップS140は、第3実施形態における図9に示すステップS140と同様である。ロボットコントローラ2は、ワーク補正座標値をワークの座標値とする。最遠部変換座標値と最遠部補正座標値との差が位置決め精度の範囲内である場合(S138のNO)、ロボットコントローラ2は、ワーク補正座標値を演算せず、第1置換座標値をワークの座標値とする。
【0081】
以上のように、変形例によるロボットシステム100によれば、ロボットコントローラ2は、平面方程式および最遠部変換座標値に基づいて、テーブル4の傾きによる座標値のずれを補正した最遠部の最遠部補正座標値を演算する。ロボットコントローラ2は、第2置換座標値と最遠部補正座標値との差と、スカラロボット1の位置決め精度と、を比較する。第2置換座標値と最遠部補正座標値との差が位置決め精度を超える場合、ロボットコントローラ2は、ワークのワーク補正座標値を演算し、ワーク補正座標値をワークの座標値とする。第2置換座標値と最遠部補正座標値との差が位置決め精度の範囲内である場合、ロボットコントローラ2は、ワーク変換座標値をワークの座標値とする。
【0082】
これにより、ロボットコントローラ2は、補正が不要な場合には補正をしないようにすることができる。
【0083】
第3実施形態では、ロボットコントローラ2は、判定をせず、ワーク毎にワーク補正座標値を演算する。ワーク補正座標値の演算には処理時間がかかるため、テーブル4の傾きが小さく補正が不要な場合、無駄にサイクルタイムが長くなってしまう。
【0084】
これに対し、変形例では、ロボットコントローラ2は、ワーク補正座標値の演算前にテーブル4の傾きが小さく補正が不要であると判断した場合、ワーク補正座標値を演算しない。これにより、第3実施形態よりも、補正が不要な場合のサイクルタイムを短くすることができる。
【0085】
本実施形態によるキャリブレーション方法の少なくとも一部は、ハードウェアで構成してもよいし、ソフトウェアで構成してもよい。ソフトウェアで構成する場合には、その方法の少なくとも一部の機能を実現するプログラムをフレキシブルディスクやCD−ROM等の記録媒体に収納し、コンピュータに読み込ませて実行させてもよい。記録媒体は、磁気ディスクや光ディスク等の着脱可能なものに限定されず、ハードディスク装置やメモリなどの固定型の記録媒体でもよい。また、データ処理方法の少なくとも一部の機能を実現するプログラムを、インターネット等の通信回線(無線通信も含む)を介して頒布してもよい。さらに、同プログラムを暗号化したり、変調をかけたり、圧縮した状態で、インターネット等の有線回線や無線回線を介して、あるいは記録媒体に収納して頒布してもよい。
【0086】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0087】
1 スカラロボット、2 ロボットコントローラ、3 操作部、4 テーブル、5 撮像部、6 ビジョンコントローラ、7 表示部、8 端末、9 演算部、11 キャリブレーション治具、18 マーカ、20 記憶部、22 光軸、P 面、ZL 焦点距離
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10