以下、添付図面に示す実施例を参照して本発明を実施するための形態につき説明する。以下に示す実施例はあくまでも一例であり、例えば細部の構成については本発明の趣旨を逸脱しない範囲において当業者が適宜変更することができる。
まず、本明細書における数式表現について説明する。以下の数式表現は、本実施例のみならず、後述の実施例についても通用する。
(本明細書における数式表現の定義)
本明細書内では各要素の6自由度位置姿勢を表現するために3次元の座標系を用い、2つの座標系の相対姿勢を座標変換行列(同次変換行列)によって表現する。本明細書において、任意の座標系Aから任意の座標系Bに向かう相対位置姿勢を表す座標変換行列をAHBの形式で記述する。また、その座標変換行列が表す相対姿勢のことを単純に『相対姿勢AHB』のように記述することがある。ここで、AHBは4×4の同次変換行列であって、回転行列rと並進ベクトルtを用いて以下のように定義される。
ここで、rは3次元の回転を表す3×3の回転行列であり、tは3×1の3次元の並進ベクトルである。座標変換行列の性質として、任意の座標系A,B,Cに対して、下記の関係が成立する。
すなわち、座標系Aに対する座標系Bの相対姿勢
AH
Bと座標系Bに対する座標系Cの相対姿勢
BH
Cから、行列の掛け算により座標系Aに対する座標系Cの相対姿勢
AH
Bを求めることができる。
また、座標系Bに対する座標系Aの相対姿勢BHAを求めるためには、下記のように逆行列を計算すればよい。
また三次元空間上の任意の点Pを座標系Aから見た座標値の同次ベクトルを
APと表現する。その座標値を(X,Y,Z)とすると同次ベクトル
APは
のように表わされる。
点PをB座標系から見た座標値
BPに変換するためには以下のように相対姿勢
BH
A(同次変換行列)を左から掛けることにより、座標変換することができる。
次に、本実施例1で用いられるロボット装置のハードウェア的な構成および、校正手順につき説明する。図1は、本発明の本実施例に係るロボット装置のハードウェア構成の一例を示している。図1はロボットビジョンシステム(以下、ロボットシステムと記載)10の構成をピッキング作業時の状態で示している。また、図2は、本発明の本実施例に係るロボットシステム10の校正時のシステム構成図である。
図1ないし図2に示すように、ロボットシステム10は、ロボットアーム1、およびロボットアーム1の手先に固定されたロボットハンド2と、固定カメラ3(第1の視覚センサ)と、制御装置4と、ワーク配置エリア5と、架台9を備えている。また、校正時には、さらに手先カメラ7(第2の視覚センサ)とマーカー8(基準部材)を用いる(図2)。
固定カメラ3は、架台9の設置面に配置した支持脚上のマウントや雲台上に設置される。あるいは、架台9を配置する室内の天井から吊り下げたマウントなどに配置してもよい。いずれにしても、固定カメラ3は、これらの適当な固定カメラ支持部を介して、ロボットアーム1の動作とは独立してロボットアーム1を支持する架台9の設置面に対して固定的な一定の位置関係を有する配置位置に配置される。
ワーク配置エリア5は、固定カメラ3や手先カメラ7の計測対象となるワーク6ないしマーカー8が配置される計測領域を構成する。当然ながら、この計測領域は、ロボットアーム1の可動範囲を含み、また、ロボットアーム1を支持する架台9の設置面に対して固定的な一定の位置関係を有する。
制御装置4はロボットシステム10全体の動作を制御する制御手段であって、演算を行うCPU41と、ROM42およびRAM43から成るメモリ部と、外部と通信を行うインターフェース(I/F)部44を有している。これらの各ブロックは制御装置内部の通信に用いられるバス45を介して相互に接続される。
後述の校正処理において生成される手先カメラ7の計測に必要な校正姿勢データ、最終的な校正値(校正関数)を格納するためのメモリ領域は、例えばROM42やRAM43に配置する。例えば、この校正姿勢データや校正値(校正関数)を格納するROM42の領域は、好ましくはEEPROMのような書き換え可能なROMデバイスから構成する。あるいは、校正姿勢データ、校正値(校正関数)を格納する領域は、適当な電源で主電源が遮断された状態でも記憶内容がバックアップされたRAM43の領域に配置するようにしてもよい。このような構成により、一度生成した校正姿勢データや校正値(校正関数)を主電源の遮断を狭んでも利用できるようになる。この種の校正姿勢データや校正値(校正関数)は、ある程度のスパンを通して、固定的にメモリに格納しておく運用となるはずであるから、その格納領域は上記のように不揮発性を有するメモリとするのが好ましい。これらのデータの格納には、ROM42や、RAM43の不揮発領域の他、もちろんHDDやSSDなどの外部記憶デバイスを用いてもよい。
図1では、CPU41の制御機能を411〜414の各部によって示してある。これらの制御部や演算部は、あたかもハードウェアブロックであるかのごとく図示してあるが、実際には、例えばCPU41がROM42に記憶されたプログラムを読み込み、実行することによって実現される。これらの制御部および演算部は、ロボット制御部411と、校正演算部412と、視覚センサ制御部413と、特徴位置演算部414である。
なお、本実施例では、ロボット制御部411、校正演算部412、視覚センサ制御部413および特徴位置演算部414を一台の制御装置4の内部に備える場合を例として説明する。しかしながら、これらの各ブロックについては、別個に設けられた複数の制御装置を組み合わせることによって同等の機能を実現しても構わない。
ロボットアーム1は架台9に固定された例えば6軸垂直多関節のロボットアームであり、制御装置4のインターフェース部44に電気的に接続されている。ロボットアーム1は、ロボット制御部411の指令値によって位置姿勢を制御され、先端部を6自由度に動作させることができる。ロボットアーム1の基端部には、架台9に対するロボットアーム1の取付位置姿勢を代表する座標系としてロボット座標系Rが設定されている。ロボット制御部411は、インターフェース部44を介してロボットアーム1およびロボットハンド2と通信し、これらの動作を制御する。
図1、図2では、インターフェース部44は簡略化のため1つのブロックで示してあるが、実際には外部と通信するためのいくつかの異なる通信方式のインターフェース部によって構成することができる。例えば、インターフェース部44は、後述の固定カメラ3や手先カメラ7との入出力にも用いられるが、これらカメラとの通信方式は、ロボットアーム1との通信で用いられる通信方式と異なっていて構わない。さらに、図1、図2では、インターフェース部44にはネットワーク50が接続されている。CPU41は、インターフェース部44〜ネットワーク50を介して生産工程を管理するサーバや、プラント中の他のロボット装置と通信することができる。
ROM42は、例えばCPU41が実行するプログラムを格納するためのプログラムメモリ、いわゆるコンピュータ読み取り可能な記録媒体として用いられる。このようなプログラムメモリはROM42に限らず他の記憶デバイスから構成することができる。CPU41が実行するプログラムを格納するための記憶デバイスとしては、固定式あるいは着脱式のHDDやSSDのような外部記憶装置、着脱式の各種フラッシュメモリや光ディスクを用いることができる(いずれも不図示)。特に着脱式の記憶デバイスは、CPU41の制御プログラムを導入、ないし供給し、または更新する目的で用いることができる。あるいは、本実施例のロボットシステム10制御プログラムは、インターフェース部44に接続されたネットワーク50を介してダウンロードし、上述の各種プログラムメモリに導入、供給(あるいは更新)することもできる。
さらに、インターフェース部44には、ロボットアーム1の動作を教示するための教示装置としてティーチングペンダント(不図示)が接続される。周知のように、ティーチングペンダント(TP)は、各種ファンクションキーとディスプレイなどを有し、手動操作によってロボットアーム1を動作させ例えば複数の教示点を順次、教示することによりロボットアーム1の位置姿勢をプログラムすることができる。下記の校正処理においては、複数のマーカー8を手先カメラ7で計測できる位置姿勢をロボットアーム1に教示するために用いられる。
また、インターフェース部44には、不図示のディスプレイ(LCDパネルなどを用いた表示装置)が接続される。このディスプレイは、後述の校正処理において、例えばティーチングペンダントを用いた教示操作中、固定カメラ3ないし手先カメラ7の撮影した画像を表示するのに用いることができる。
ロボットハンド2は、ワーク6を把持するためにロボットアーム1の先端部に設けられている。このロボットハンド2もインターフェース部44を介して制御装置4に接続されている。ロボットハンド2は制御装置4のロボット制御部411によって制御され、フィンガー21の開閉によってワーク6を把持およびリリースする動作を行うことができる。また、ロボットハンド2は、後述する手先カメラ7を再現性良く取り付けるための手先カメラ取付部22を備えている。なお、本実施例においてはフィンガー21の開閉によってワーク6を把持するロボットハンド2を例示しているが、ワーク6に対して作用を行うエンドエフェクタであれば他の構成のものを用いて構わない。例えば、真空吸着によってワーク6を取得する吸着パッドや、磁力を用いてワーク6を取得する電磁石ツールなどをロボットハンド2の代わりに用いてもよい。ロボットハンド2の掌部には、ロボットハンド2の位置姿勢を表す手先座標系Tが設定されている。
ロボットアーム1は、制御装置4のロボット制御部411から出力される指令値に基づき各関節を駆動して、ロボットハンド2の位置姿勢を調整するようになっている。ロボット制御部411は、ロボット座標系Rを基準とする手先座標系Tの相対位置姿勢の目標値に対して、ロボットアーム1の各関節の取るべき角度目標値を算出する(逆運動学計算)。そして、ロボットアーム1の各関節に設けられた不図示のエンコーダが出力する現在角度が角度目標値に一致するようにサーボ制御を行う。また、ロボット制御部411は、エンコーダから各関節の現在角度情報を取得し、ロボット座標系Rに対する手先座標系Tの現在の相対位置姿勢を算出することができる。
ワーク配置エリア5は、ピッキング時にワーク6を配置するためのエリアである。ワーク6の供給、という観点から考えると、ワーク配置エリアは上述のワーク供給エリアと考えてもよい。供給すべきワーク6は、図1のようにワーク配置エリアの上面にバラバラな向きに平置きされる。なお、本実施例においては平置きの場合について例示するが、ワーク6は専用のトレイに1個ずつ仕切られて供給されてもよいし、ワーク6が箱やトレイに山積みされた状態で供給されてもよい。
図1、図2において、本実施例の固定カメラ3は、例えばワーク6やマーカー8を3次元的に計測可能なステレオカメラから構成される。固定カメラ3の撮影距離や光学系の焦点距離は、ワーク配置エリア5内でワーク6が存在し得る範囲全域を計測できるよう、定められる。
固定カメラ3はインターフェース部44を介して制御装置4に接続されており、視覚センサ制御部413からの指令を受けてワーク配置エリア5を撮影し、画像データを制御装置4に送信する。特徴位置演算部414は、固定カメラ3の撮像した画像データに対して画像処理を行い、ワーク6のエッジや角などの特徴部位を認識するとともに、ステレオ法のアルゴリズムを用いてワーク6の位置または位置姿勢を三次元的に算出する。固定カメラ3からの3次元計測を行うにあたって必要な、ステレオ画像上の2次元座標値と3次元の座標を対応づけるためのカメラ校正パラメータは、固定カメラ3単体で事前に校正されており、ROM42に記憶されているものとする。
より具体的には、例えばステレオカメラを構成するカメラそれぞれについて2次元の画像座標と3次元の視線ベクトルを対応づけるためのカメラ内部パラメータと、カメラ間の相対位置姿勢を表すカメラ相対位置姿勢パラメータを事前に校正しておく。ステレオカメラの校正方法に関しては種々の方法が公知であるのでここでは詳述しない。例えば、ステレオカメラを構成する複数のカメラのうちの一台のレンズ主点位置に、固定カメラ3の位置姿勢を代表する固定カメラ座標系Fが仮想的に設定されている。固定カメラ3から上述のように計測を行った際の計測値は、固定カメラ座標系Fを基準として表現された座標値または座標変換行列の形で出力されるものとする。
手先カメラ7は、ロボットシステム10の校正時にロボットアーム1の手先カメラ取付部22に取り付けられる着脱可能なステレオカメラである。手先カメラ取付部22を介してロボットハンド2に機械的に支持されるとともに、ロボットアーム1の体内に設けた不図示の配線によってインターフェース部44に電気的に接続され、制御装置4と互いに通信できるよう構成されている。手先カメラ7は固定カメラ3と同様に、視覚センサ制御部413からの撮像指令によって撮像を行い、画像データを制御装置4に送信する。
手先カメラ7に関しても、ステレオ画像上の2次元座標値と3次元の座標を対応づけるために必要なカメラ校正パラメータは事前に求められており、ROM42に予め記憶されている。特徴位置演算部414は、手先カメラ7が計測した画像データに対しても固定カメラ3の場合と同様に、画像処理を行って対象物の特徴部位を認識し、特徴部の位置または位置姿勢を3次元的に算出することが出来る。手先カメラ7に対しても、例えばステレオカメラを構成する複数のカメラのうちの一台のレンズ主点位置に、手先カメラ7の位置姿勢を代表する手先カメラ座標系Vが仮想的に設定されている。手先カメラ7の画像データに基づいて演算された位置または位置姿勢の計測値は、手先カメラ座標系Vを基準にした値として出力される。
マーカー8はロボットシステム10の校正時にワーク配置エリア5に取り付けられる基準部材であって、固定カメラ3および手先カメラ7から計測可能な特徴部として、円形のマーク81が黒色で印刷されている。本実施例では、マーカー8の印刷精度や加工精度、ワーク配置エリア5に対する設置の精度は、後述する校正の際にマーク81が固定カメラ3および手先カメラ7の視野内に入れば良く、高精度の加工や位置調整を必要としない。例えば、図示しないメネジ部をワーク配置エリア5の上面に設けておき、ネジ固定する、といった手法によりマーカー8を装着することができる。
マーカー8は、実際にワーク6をピッキングする際にワーク6の特徴部が存在し得る範囲およびロボットハンド2がワーク6をピッキングする際に取りうる手先位置の動作範囲を極力広くカバーするように配置することが望ましい。その理由としては、ピッキング精度の向上にある。例えば、第一に、固定カメラ3にはカメラ校正の誤差があるため、被計測部位の座標に応じた系統的な誤差が存在する。第二には、ロボットアーム1にも、ロボットアーム1の製作誤差や自重による撓み、熱膨張等による誤差が存在するため、位置姿勢に応じた系統的な誤差を持っている。
上記の誤差の影響により、ロボット座標系Rと固定カメラ座標系Fの関係を厳密に一致させることはできない。特に狭い領域にマーカー8を設置して校正した場合には、座標系の角度ずれが大きくなり、校正を行った領域外にてピッキング作業を行う場合には、比較的大きい誤差を発生することになる。従って、上記の理由により、校正範囲は、ワーク6を実際にピッキングする際にワーク6の特徴点が取りうる範囲およびロボットアーム1が取りうる範囲を極力広くカバーすることが望ましい。また、校正を行う際のロボットアーム1の姿勢は、実際にワーク6をピッキングする際の姿勢と極力近い姿勢であることが望ましい。
図3は、マーカー8の配置範囲が、ロボットアーム1ないしロボットハンド2の可動範囲との関係において満たすべき設計条件を例示している。例えば、同図に示すように、ワーク配置エリア5を上面から見た際にマーク81の特徴点(例えばその円の中心)群を囲う最小の多角形が、ロボットハンド2がワーク6を把持する際の把持中心61を包含するように定めることが望ましい。
ここで「把持中心」には、ロボットハンドやワークの形状によって種々の定義が考えられるが、例えば「ロボットハンド2がワーク6を取得する際に、ロボットハンド2が設計上ワーク6に当接する点群を包含する最小球体の中心」と定義することができる。本実施例のロボットシステム10においては、把持時にフィンガー21とワーク6が接触する2つの接触面の対称中心が把持中心61である。
なお、図3において、各々の把持中心61の周囲に直交する矢印を2つ示してあるが、これらは各ワーク6をその姿勢で把持した際のロボットハンド2の手先座標系Tの2座標軸(X軸、Y軸)に相当する。
以上のようにして、本実施例においては、第1の視覚センサは計測範囲がワーク配置エリア5を含むよう配置される。また、複数のマーカー8は、その各特徴部を結ぶ多角形がワーク配置エリア5でワーク6を把持するロボットハンド2の把持中心61が取りうる範囲を含むよう配置される。
なお、マーカー8は図2および図3に記載するようにワーク配置エリア5の上面に校正時のみ一時的に設置してもよいし、図4に例示するようにワーク配置エリア5の外周部に、常に設置しておいてもよい。また例えば、ワーク6による擦れやキズの心配がない場合は、ワーク配置エリア5の上面にマーク81を印刷しておき、マーカー8としても構わない。
ロボットシステム10にピッキング作業を行わせる場合、まず、固定カメラ3よりワーク6を計測して、ワーク6の特徴部の位置または位置姿勢を表す計測値を得る。次に、計測値に基づいて、ロボットハンド2でワーク6を取得するためのロボットアーム1の目標位置(指令値)を演算する。目標位置の演算結果に基づいてロボット制御部411がロボットアーム1を制御し、ロボットハンド2をワーク6に上方からアプローチさせる。このアプローチ動作が完了すると、ロボット制御部411はロボットハンド2のフィンガー21を制御して閉じ、ワーク6を把持させる。その後、再度ロボットアーム1およびロボットハンド2を制御してワーク6をワーク置き位置(図示しない)に搬送し、1つのワーク6に対するピッキング動作を完了する。上記の動作をワーク配置エリア5にワーク6が無くなるまで繰り返すことによって、ピッキング作業を実現する。
なお、ロボットハンド2がワーク配置エリア5内のワーク6にアプローチしている際は、ワーク6がロボットアーム1およびロボットハンド2によって隠れるため、固定カメラ3からワーク6を計測することが出来ない。そのためピッキング作業を繰り返し行う際には、ロボットアーム1がワーク配置エリア5上空の外に存在するタイミングで固定カメラ3の撮影を行う必要がある。
上記のピッキング作業の流れの中で固定カメラ3からワーク6を計測した計測値に基づいてロボットアーム1の目標値を算出するためには、固定カメラ3の計測値とロボットアーム1の指令値の関係を予め求めた校正関数が必要である。なぜなら、固定カメラ3から計測した計測値は固定カメラ座標系Fを基準に表現された座標値または座標変換行列であるが、ロボットアーム1を制御するためにはロボット座標系Rを基準とした指令値が必要だからである。本実施例においては、ロボット座標系Rと固定カメラ座標系Fの相対位置姿勢を表す座標変換行列RHFを校正関数とし、この座標変換行列RHFを校正によって求める。
以下、図5を参照しつつ本実施例における校正処理の流れについて説明する。図5はロボットシステム10に対して校正を実施する際の制御手順を示している。図5の制御手順は、CPU41の制御プログラムとして例えばROM42(ないし上述の他のプログラムメモリ)に格納しておくことができる。また、図6は本実施例の校正処理において用いられる各座標系、座標変換行列および座標値の関係を示している。
校正処理の大まかな流れとしては、校正準備段階のステップS11〜S13は主に作業者が行う準備作業のステップであり、ステップS15〜S18は自動プログラムによってロボットシステム10が実行することのできる校正自動実行のステップである。校正自動実行のステップS15〜S18では、まず、ステップS15にて座標値FP[i](第1の計測データ)を固定カメラ3からの計測によって取得する。次にステップS16において、ステップS13でティーチングされた校正姿勢RHT[i](校正姿勢データに相当する座標変換行列)を用いてロボットアーム1を制御する。そして、ステップS17において、座標値VP[i](第2の計測データ)を手先カメラ7からの計測により取得する。そして、ステップS18において、目的の校正値(校正関数)として座標変換行列RHFを算出する。即ち、上述のステップで既知となった座標値FP[i]、校正姿勢RHT[i]、座標値VP[i]と、予め取得済みの座標変換行列THVを用いて、座標変換行列RHFを算出する。以上が、校正の大まかな流れである。
なお、上記の第1の計測データは、第1の視覚センサ(固定カメラ3)から特徴部の少なくとも3点以上の座標値を計測した座標データである。また、第2の計測データは、マーク(特徴部)81のうち、校正姿勢データで示される複数の校正用の位置姿勢の各々に対して第2の視覚センサ(手先カメラ7)の計測領域内に含まれた特徴部を少なくとも1点以上ずつ計測した座標データであるものとする。
以下、図5の校正の各ステップについて、より詳細に説明する。なお、以下では図5中のステップ番号は括弧書きの場合「S11」のように略記する(後述の実施例でも同様)。
まず、ロボットハンド2の手先カメラ取付部22に対して、手先カメラ7を取り付ける(S11)。ロボットハンド2および手先カメラ取付部22は、手先カメラ7をロボットハンド2(ないしロボットアーム1)に対して、所定の装着位置に再現性良く装着できるよう構成しておく。例えば、手先カメラ取付部22に不図示の突き当て部を設け、手先カメラ7を再現性良くネジ(不図示)等で固定できるよう構成しておく。
なお、手先カメラ7を取り外さなくても周囲に干渉する心配が無い場合や、ロボットシステム10が行う別の作業において手先カメラ7を使用する場合は、手先カメラ7は常にロボットハンド2に取り付けておいてもよい。例えば、ワーク6をピッキングしてワーク置き位置に置いた後に、手先カメラ7を用いてワーク6を検査したい場合などは、手先カメラ7を常時取りつけておく。その場合は、特に手先カメラ7を設置する作業を行う必要はない。
次に、マーカー8をワーク配置エリア5に配置する(S12)。設置の際の配置の要件は、例えば前述の図3に示した通りである。ワーク配置エリア5上に予め設けられたマーカー固定用のネジ穴等を用いて、N個のマーカー8を固定する。図4において例示したように、ワーク配置エリア5に常にマーカー8を取り付けておく場合は、この作業は不要である。
次に、N個のマーカー8に対して、N個の校正姿勢RHT[i](N=1,2,3,…,N)をティーチングする(S13)。ここで、i番目の校正姿勢RHT[i]は、i番目のマーカー8を手先カメラ7から計測できるロボットアーム1の位置姿勢である。例えば、ピッキング作業時の姿勢を基準としてロボットアーム1をティーチングペンダント(不図示)を用いて手動操作し、ディスプレイ(不図示)で手先カメラ7の画像を確認しつつ各マーカー8を計測可能なロボットアーム1の位置姿勢を教示し、登録する。このティーチングは高精度に実施する必要はなく、1つのマーカー8については、少なくとも手先カメラ7の計測範囲にそのマーカー8が含まれていればよい。
ステップS13のティーチング(教示)の結果、生成されたN個の校正姿勢RHT[i]は、校正姿勢データとしてメモリ(ROM42またはRAM43)に格納される。この教示作業は一度だけ実施すればよく、例えばロボットアーム1や固定カメラ3を交換した後、再校正を行うような場合は、過去にティーチングした結果をそのまま用いてもよい。
次に、固定カメラ3からマーカー8を計測可能となるように、ロボットアーム1をワーク配置エリア5の上空から退避させる(S14)。
以上のようにして、作業者が行う準備段階が終了し、以降はロボットシステム10をプログラム動作させることによって自動で校正を行う。まず、固定カメラ3から各マーカー8上のマーク81の中心座標を計測する(S15)。より具体的には、視覚センサ制御部413から固定カメラ3に撮像指令を出し、固定カメラ3から撮像したステレオ画像データを取得する。取得したこのステレオ画像データの各々に対して特徴位置演算部414が公知の円抽出処理(マークが円形の場合)を行い、マーク81の中心点の画像座標を認識する。そして、このマーク81の3次元の座標値FP[i](i=1,2,3,...,N)を固定視覚センサ計測データ(第1の計測データ)として算出する。即ち、認識したマーク81中心点をステレオ画像間で対応づけ、ROM42より読み出したカメラ校正パラメータを用いてステレオ法によってマーク81の3次元の座標値FP[i](i=1,2,3,...,N)を算出する。ここで、Nはマーカー8の個数を表す正の整数であり、例えば図2および図3に示すようにマーカーが5個の場合はN=5である。また、iはマーカーの個体を区別するためのインデックス(通し番号)で、下記のステップS16、S17のループ制御では、このインデックスiがループを制御する変数として用いられる。
その後、i番目の校正姿勢RHT[i]にロボットアーム1を動作させて(S16)、手先カメラからマーカー8を計測する処理(S17)を、マーカー8の個数N回分だけ繰り返す。ここでは、ステップS13で生成したN個の校正姿勢RHT[i]を格納した校正姿勢データをメモリから読み出して用いる。なお、ステップS16、S17を狭むように配置されたステップS101、S102は、上記のインデックスiを1からNまで順次インクリメントするための制御構造を、例えばC言語などにおける記述様式に準じて示したものである。実際のプログラムの実行時には、ステップS101の位置ではインデックスiが1に初期化される。また、ステップS102の位置ではステップS16、S17をN回実行済みか否かを判定し、N回実行済みでなければインデックスiをインクリメントしてステップS16にループし、N回実行済みであればステップS18に移行する。
i番目の校正姿勢RHT[i]において、手先カメラ7からi番目のマーカー8を計測する処理に関しては、前述の固定カメラ3における計測の処理と同一である。ただし、手先カメラ7の計測可能な視野範囲は固定カメラ3の視野範囲に比べて一般に狭いため、本実施例においては、各校正姿勢RHT[i]に対して一回に計測可能なマーカー8の個数は1つであるものとする。よって、i番目のマーカー8上のマーク81に対する一回の計測ごとに、手先カメラ座標系Vを基準とした計測された座標値VP[i](手先視覚センサ計測データ)が算出される。ロボットアーム1の動作(S16)と、手先カメラ7からの計測(S17)をN回繰り返すことにより、N組のデータが取得される。
最後に、上記の処理で取得したデータを用いて校正値算出処理を行う(S18)。以下、本実施例における校正処理の原理を数式を用いて説明する。以下の数式に対応する演算は、校正演算部412によって実行される。より具体的には、この校正演算部412の演算機能は、CPU41が対応する演算制御プログラムを実行することにより実現される。
まず、ロボット座標系Rを基準としたマーク81の座標値RP[i]を、未知の校正値である座標変換行列RHFと固定カメラ3からマーカーを計測(S15)した座標値FP[i]を用いて記述すると、次式のようになる。
また、座標値RP[i]を、ロボットアーム1を動作(S16)させた際の校正姿勢RHT[i]と、手先カメラ7からマーク81を計測(S17)した座標値VP[i]を用いて記述すると、
ここで座標変換行列THVは、ロボットアーム1の手先座標系Tと、手先カメラ7の手先カメラ座標系Vを関係づける相対位置姿勢を表す校正データである。この座標変換行列THVは、ロボットアーム1の姿勢によって変化しない固定値の行列であるため、事前に求めておくことが可能である。本実施例においては座標変換行列THVは事前に求められており、ROM42に記憶されているものとする。
なお、座標変換行列THVを算出する一般的な手法としては、手先カメラ7をロボットハンド2に固定した状態で公知のハンドアイキャリブレーション手法を用いることができる。また手先カメラ7を専用の治具に固定し、ロボットシステム10とは独立した状態で校正を行っておいてもよい。その場合は例えば、専用治具上に座標が既知な指標を設けておき、手先カメラ7から計測させることによって、手先カメラ取付部22に対する突き当て面などを基準として手先カメラ座標系Vの位置姿勢を校正しておくことができる。
ここで、式(6)と式(7)でRP[i]が等しいので、両式から以下の等式が成り立つ。
上式(8)において、左辺の
RH
Fのみが未知の量(6自由度の座標変換行列)であって、その他のパラメータはすべてこれまでのステップにより既知の量である。実際のデータには誤差があるためN組全てのデータについて等式が厳密に成立する解は得られない。しかしながら、マーク81の座標データが同一直線上に無い3点以上あれば、N個の式を連立して最小二乗法で解くことにより目的の校正パラメータとして座標変換行列
RH
Fを算出することができる。
式(9)の最小二乗法を解くには、例えば同時変換行列としての
RH
Fを3つの並進パラメータ(X,Y,Z)と3つの回転角度パラメータ(θ,φ,ψ)で記述し、式(9)左辺が最小となるようレーベンバーグ・マーカート法などを用い数値演算で求める。また、別の例としては、座標変換行列
RH
Fの回転行列部分を四元数(q1,q2,q3,q4)を用いて表し、四元数ベクトルの長さが1であるという制約条件のもとに、制約条件付きの最小二乗アルゴリズムを用いて解を算出してもよい。
以上の校正処理により、目的の校正値、すなわち、ロボット座標系Rと固定カメラ座標系Fの相対位置姿勢を表す座標変換行列RHFを数値演算によって求めることができる。以上のようにして校正演算部412で算出した結果は校正パラメータファイルとしてROM42またはRAM43(あるいは他の記憶装置)に記憶させる。そして、前述のピッキング作業を行う場合は、記憶させた校正パラメータファイルを用いて固定カメラ3の計測した固定カメラ座標系Fの座標値を必要に応じてロボット座標系Rの座標値に変換することができる。
例えば、固定カメラ3でワーク6の特定部位を計測し、上記座標変換行列RHFを用いた座標変換を行い、ロボットアーム1およびロボットハンド2の位置姿勢を制御する指令値を生成することができる。そして、生成した指令値をロボット制御部411を介してロボットアーム1およびロボットハンド2に送信し、例えば該当の部位を把持して取り出すピッキング動作を行うことができる。
本実施例のロボットシステム10によれば、固定カメラ3と手先カメラ7の双方からマーク81を計測する構成としたことにより、ロボットアーム1の先端を厳密に微調整する必要がなく短時間で校正が可能である。また、校正値の算出においてはマーク81の座標値に関する設計寸法などの事前情報を用いないため、マーカー8自体の位置精度が低精度であっても高精度な校正が可能である。
また、固定カメラ3が例えば上方から計測を行い、ロボットハンド2がワーク6に上方からアプローチする構成であっても、固定カメラ3のみを用いる校正方式とは異なり、ロボットハンド2やロボットアーム1による隠蔽の影響を受けずに済む利点がある。すなわち、手先カメラ7でマーク81を校正計測する時は、隠蔽の影響を受けず確実にマーク81を計測することができる。そのため、実作業時に近い姿勢で、かつ充分広い範囲でロボットアーム1を動作させて校正演算のための計測値を取得することができ、その結果、ロボットアーム1の動作誤差や固定カメラ3の計測誤差の影響を軽減し、高精度な校正処理を行うことができる。
次に、図7を参照して本発明の実施例2のロボットシステム10aの校正時のシステム構成について説明する。本実施例2は上記の実施例1に比べ、作業者が行う必要のある校正準備の作業負荷を低減することができる。
本実施例2のロボットシステム10aは実施例1に係るロボットシステム10に対して、主として以下の3点が異なる。
第一に、手先カメラ7の代わりの手先視覚センサとして、ロボットハンド2によって把持可能な手先カメラ7aを設けると共に、手先カメラ置き台71aを設けたこと。
第二に、校正の際に固定カメラ3および手先カメラ7aより計測される基準部材が、作業者によって自在に配置可能なマーカー8aとなっていること。
第三に、制御装置4のCPU41の機能として、作業者が任意に配置するマーカー8aの校正姿勢を演算する校正姿勢演算部415を設けたこと、である。
その他の構成要素はロボットシステム10と同等であり、ピッキング作業時のシステム構成もロボットシステム10と同等であるから、対応する部材には上記と同一の参照符号を用い、その詳細な説明は省略するものとする。なお、ROM42に予め記憶されるデータやプログラムは一部異なったものとなるが、その点については後述する。
本実施例の手先カメラ7aは、ロボットハンド2によって把持できる形状を有するステレオカメラである。ロボットハンド2は、フィンガー21の開閉動作によって手先カメラ7aを着脱できる。手先カメラ7aは、不図示の通信手段を用いて制御装置4と通信可能になっており、視覚センサ制御部413からの指令により画像を撮影し、画像データを制御装置4に送信することができる。この不図示の通信手段は、ロボットアーム1の体内または体外に配置された通信ケーブルなどにより構成できる。その場合、手先カメラ7aとロボットハンド2の接触部には、手先カメラ7aを精度よく把持するために位置決めピン等の位置決め機構や、通信を行うための電気接点を設けておくことができる。
また、制御装置4に対する手先カメラ7aの計測データの入出力には、電磁波を用いた非接触の無線通信手段を用いることもできる。無線通信によるデータ転送は、例えば例えばIEEE802.11やIEEE802.15の無線ネットワーク規格を利用することができる。その場合、当該規格の無線ネットワークインターフェースは、インターフェース部44の一部として設ける他、ネットワーク50に接続された外部機器として配置することもできる。
手先カメラ置き台71aは、ロボットハンド2が手先カメラ7aを装着していない間に手先カメラ7aを支持しておくための台であって、ロボットアーム1の可動範囲内に設けられている。例えば、図7に示すように角穴形状を有する形状として、手先カメラ7aのレンズ部を避けて手先カメラ7aの本体部のみを支持可能な台であってもよい。
ロボットシステム10aは、手先カメラ置き台71aに手先カメラ7aが設置された状態で、ロボットアーム1およびロボットハンド2を制御することによって、手先カメラ7aを自動でロボットハンド2に装着させることができる。また逆に、手先カメラ7aを手先カメラ置き台71aに戻す動作も自動で行うことができる。手先カメラ置き台71aの位置をロボット座標系(R)に対して定位置に決めておけば、システムプログラムの一部として手先カメラ7aを装着し、あるいは手先カメラ置き台71aに戻す動作をプログラムしておくことができる。また、ロボットシステム10aの設置時などに、例えば不図示のティーチングペンダントを用いて管理者や作業者が手先カメラ7aを装着し、あるいは手先カメラ置き台71aに戻す動作を教示する運用であってもよい。
本実施例では、マーカー8aは、設置を行う作業者によってワーク配置エリア5上に自在な位置・向きで設置可能になっている。マーカー8a上には、上記実施例1と同様に円形のマーク81aが印刷されている。マーカー8aは、後述する校正自動実行のステップでロボットアーム1を動作させる際に振動で位置がずれないことが望ましく、例えば粘着剤や磁力を用いてワーク配置エリア5に簡易的に固定する機構を採用してもよい。
校正姿勢演算部415は、CPU41の制御機能として設けられる。校正姿勢演算部415は、例えばROM42に記憶されたプログラムをCPU41が実行することによって実現できる。校正姿勢演算部415は、固定カメラ3で撮影し、特徴位置演算部414が算出したマーク81aの計測結果に基づいて校正姿勢を演算しロボット制御部411に校正姿勢を出力する。その処理内容の詳細については後述する。
次に、ロボットシステム10aを用いた校正の流れについて、図8のフローチャートを参照しつつ説明する。図8の制御手順は、CPU41の制御プログラムとして例えばROM42(ないし上述の他のプログラムメモリ)に格納しておくことができる。また、図9は本実施例の校正処理において用いられる各座標系、座標変換行列および座標値の関係を示している。
本実施例では、大まかな流れとしては、主に作業者が行う準備作業のステップはステップS21のみとなっており、ステップS22〜S29の校正自動実行処理は自動プログラムによってロボットシステム10aが実行することができる。ステップS22〜S29の校正自動実行処理はでは、主に以下の2点が実施例1と異なる。
第一に、手先カメラ7aを自動制御でロボットハンド2が把持するようになっている(S22)点。第二に、固定カメラ3からの計測(S24)の結果と、校正初期値(S25にて取得)に基づき、手先カメラ7aの校正姿勢を自動で算出(S26)するようになっており、作業者によるティーチングが不要となっている点である。
以下、図8の各ステップについて、実施例1との相異点に重点を置いて詳細に説明する。
まず、作業者がマーカー8aをワーク配置エリア5に設置する(S21)。前述したようになるべく広い範囲に設置することが望ましいが、ワーク配置エリア5内の任意の位置に同一直線上にない3点以上であれば任意の個数を設置してよく、事前に配置位置を厳密に設計する必要はない。ロボットアーム1を駆動した場合のワーク配置エリア5の振動が十分に小さい場合は、ワーク配置エリア5にマーカー8aを単純に置くだけでもよいし、前述したように粘着剤や磁力によって仮固定を行ってもよい。
作業者がロボットシステム10aに対して行う準備作業は以上であり、次のステップからはROM42に予め記憶されたプログラムを実行することによって自動実行される校正処理である。校正用の自動プログラムが起動されると、ロボットシステム10aは、ロボットアーム1とロボットハンド2を制御し、手先カメラ置き台71aに支持された手先カメラ7aを把持して取得する(S22)。
次に、ロボットアーム1を制御して、固定カメラ3からワーク配置エリア5を計測するための固定カメラ3の視線をロボットアーム1およびロボットハンド2が遮らない位置までロボットアーム1を退避させる(S23)。なお、前述のステップS22の段階でロボットアーム1およびロボットハンド2が固定カメラ3に写り込まないような位置に手先カメラ置き台71aが設置されている場合は、特にこのステップでロボットアーム1を移動させる必要は無い。
次に、固定カメラ3からマーカー8a上の円形マーク81aを計測し、マーク81aの個数Nおよび座標値FP[i](i=1,2,3,...,N)を取得する(S24)。視覚センサ制御部413が固定カメラ3に撮像指令を行ってステレオ画像を取得した後、特徴位置演算部414が画像処理を行ってマーク81aの個数Nと座標値FP[i]を算出する。実施例1と比較して、マーク81aの個数Nが作業者の任意となっているため、このステップでは特徴位置演算部414は座標値FP[i]だけではなく、マーク81aの個数Nも画像解析により求めることになる。このステップで画像データに対して円抽出処理を行って座標値FP[i]を3次元的に算出する処理は実施例1と同様であり、また、その過程でマーク81aの個数Nを求めることも容易であるため、その詳細は省略する。
次に校正姿勢演算部415は、校正初期値RHF0を、ROM42より読み出すことによって取得する(S25)。ここで、校正初期値RHF0はロボット座標系Rと固定カメラ座標系Fの関係を表す座標変換行列の仮の値であって、予めROM42に設定ファイルとして記憶しておく。校正初期値RHF0としては、例えばロボットシステム10aを設計する際の設計値に基づいて、加工や組立の誤差が無い場合のロボット座標系Rと固定カメラ座標系Fの相対関係を表す値を入力しておけばよい。また、別の例として、校正作業を一度完了したロボットシステム10aに対して固定カメラ3やロボットアーム1を交換した後などには、前回校正時の校正結果を校正初期値RHF0として用いてもよい。
即ち、校正初期値RHF0は、ロボット座標系Rと第1の視覚センサ(固定カメラ3)の固定カメラ座標系Fの関係について予め設定された初期値データである。本実施例では、第1の視覚センサ(固定カメラ3)で計測した第1の計測データと、初期値データである校正初期値RHF0に基づき、校正姿勢データを算出する。
さらに校正姿勢演算部415は、ステップS24で取得したマーク81aの座標値FP[i]とマーク個数N、およびステップS25で取得した校正初期値RHF0に基づき、N個の校正姿勢RHT[i](i=1,2,3,...,N)を算出する(S26)。このN個の校正姿勢RHT[i]は、手先カメラ7aからマーク81aを撮影可能なロボットアーム1の位置姿勢として算出される。
具体的な方法としては、例えば手先座標系Tに対する手先カメラ7aの計測視野を設計値より算出しておき、計測視野の中心付近の代表点Qを定め、手先カメラ座標系Vにおける座標値TQ(図9参照)として予めROM42に情報を保存しておく。ここで、ステップS24において取得されたマーク81aの座標値FP[i]と、ステップS25において取得された校正初期値RHF0を用いると、ロボット座標系Rにおけるマーク81aの中心点Pの座標値RP[i]は、以下のように計算できる。
上式(10)の演算により、ロボット座標系Rにおけるマーク81aの中心点Pの座標値が分かるので、手先に設定された計測視野代表点Qの座標値が、マーク81aの中心点Pに一致するようにロボットアーム1を制御すればよい。任意の姿勢
RH
T[i]をロボットアーム1に取らせた場合の、ロボット座標系Rに対する計測視野代表点Qの座標値
RQ[i]は以下のようになる。
そして、計測視野代表点Qがマーク81aの中心点Pに一致するためには
であればよいから、式(10)、式(11)、式(12)より
を満たすようにN個の校正姿勢
RH
T[i]を定めればよい。なお、式(13)の制約だけでは校正姿勢は一意には定まらないので、実際に適用する際には例えば「ロボットハンド2の掌部が鉛直下向きになる」等の制約条件を付して校正姿勢が定まるアルゴリズムとして演算するとよい。その際のロボットアーム1やロボットハンド2の姿勢に関する制約条件は任意に設計し得る事項である。しかしながら、前述のように、実作業(ピッキング)時のロボットアーム1およびロボットハンド2の姿勢から乖離した姿勢にならないように定めることが精度の観点からは望ましい。校正姿勢演算部415は上記の演算を行い、N個の校正姿勢
RH
T[i]をロボット制御部411に出力する。
その後、手先カメラ7aによって第2の計測データを取得する。即ち、ステップS26において算出された校正姿勢RHT[i]に基づいてロボット制御部411がロボットアーム1を制御して移動させ(S27)、手先カメラ7aからマーク81aの座標値VP[i]を計測する(S28)する処理をN回分繰り返す。なお、ステップS27、S28を狭むように配置されたステップS201、S202は、上述の実施例1同様、インデックスiを1からNまで順次インクリメントするための制御構造を、例えばC言語などにおける記述様式に準じて示したものである。
この際、ステップS26において算出された校正姿勢RHT[i]は校正初期値RHF0が誤差を含んだ値であるため、各計測時に計測視野代表点Qはマーク81aに厳密には一致しない。しかし、手先カメラ7aの計測視野を校正初期値RHF0の誤差に対して十分広く設計しておけば、マーク81aが必ず手先カメラ7aの計測視野内に含まれることとなり、問題無く校正を行うことができる。
そして、ステップS29において、目的の校正値(校正関数)として座標変換行列RHFを算出する。即ち、固定カメラ3から計測したマーク座標値FP[i]と、ステップS26で算出した校正姿勢RHT[i]と、ステップS28で手先カメラ7aから計測したマーク81の座標値VP[i]を用いて、座標変換行列RHFを算出する。座標変換行列RHFを算出する演算処理は第一の実施例と同様であるので説明は省略する。なお、レーベンバーグ・マーカート法などの初期値を必要とする繰り返し計算のアルゴリズムを用いて座標変換行列RHFを算出する場合には、ステップS25で取得した校正初期値RHF0をここでも数値計算の初期値として利用できる。
上記の処理を実行することにより、ロボット座標系Rと固定カメラ座標系Fの関係を表す校正値として座標変換行列RHFを算出できる。すなわち、固定カメラ3の計測値に基づいてロボットアーム1を高精度に位置決めするために必要な校正を行うことができる。
本実施例においては、校正時にロボットアーム1を移動させる校正姿勢RHT[i]を、校正初期値RHF0と固定カメラ3からマーク81aを計測した座標値FP[i]に基づいて算出する構成とした。この特徴的な構成により、作業者は事前にマーカー8の配置を厳密に設計せずに自由に配置できるとともに、配置後にロボットアーム1に対するティーチングを行わなくともロボットシステム10aを自動で動作させて校正することができる。従って、作業者の装置立ち上げの作業負荷を大幅に削減することが出来る。また、同じ工場内でワーク供給エリアの大きさ異なる複数のロボットシステムを校正したい場合などにおいても、配置を変えるだけで同一のマーカーを容易に流用できるので、個別に校正用の治具を用意する必要がない。
また、本実施例においては、ロボットハンド2の開閉動作によって手先カメラ7aを自動で着脱可能な構成とした。この特徴的な構成により、ロボットシステム10aを校正するにあたって作業者が手先カメラ7aを着脱する作業負荷を低減した。また、ピッキング作業時にワークと当接するロボットハンド2のフィンガー21によって手先カメラ7aを支持することにより、ロボットハンド2の加工誤差の影響を小さくし、高精度にピッキングのための校正を行うことが出来る。さらには、ロボットハンド2の掌部に手先カメラ7aの視点が配されることになり、ロボットハンド2の手首部等にカメラを設けた場合に比べて手先カメラ7aがマーカー8aにより正対する形で計測を実行することができ、高精度な校正を行うことができる。
次に、本発明の実施例3について説明する。実施例1および2は固定視覚センサと、手先視覚センサをそれぞれ独立した別体の固定カメラ3と、手先カメラ7、7aによって構成した。これに対して、本実施例3では固定視覚センサ(ステレオカメラ3b)を着脱しロボットアーム1の手先に付け替え、一時的に手先視覚センサとして用いることにより、カメラの共通化を図ったものである。以下、実施例1および実施例2の相異点に重点を置き本実施例につき説明する。
図10(a)、(b)に本実施例3に係るロボットシステム10bの装置構成、および本実施例で用いられる各座標系、座標値、および座標変換行列の関係を示す。なお、制御装置4に関しては上記実施例2と同様であるため、図示を省略している。
図10(a)に示すように、視覚センサとしてはロボットシステム10bはステレオカメラ3bを1台のみ必要とする。このステレオカメラ3bはステレオカメラ取付部31bを有しており、通常時はステレオカメラ取付部31bを介して不図示の固定カメラ支持部材によって空間に固定に支持される(第1の配置位置)。ステレオカメラ3bはワーク配置エリア5に対向して配置されており、ワーク6やマーク81aを計測可能となっている。即ち、ステレオカメラ3bがロボットアーム1の動作とは独立してロボットアーム1を支持する架台9の設置面に対して固定的な位置関係を有する配置位置に配置される点は、これまでの実施例と同様である。
ステレオカメラ取付部31bは、例えば突き当て基準面や位置決めピン等の位置決め機構と、例えばネジなどの固定機構を有しており、固定カメラ支持部材に対して再現性良く着脱可能に構成される。
また、ステレオカメラ取付部31bは、ロボットハンド2に対しても取付可能な形状を有している。図10(b)に示すように、ロボットハンド2の先端にステレオカメラ3bを支持させることによって、一時的にステレオカメラ3bを手先カメラ(実施例2の7b)として用いることができる(第2の配置位置)。ステレオカメラ3bをロボットハンド2の先端の所定位置に位置決めするには例えばロボットハンド2による把持やネジ止めなどの手法を用いることができる。
本実施例における校正の流れについて、図11のフローチャートを参照しつつ説明する。
まず、作業者がマーカー8をワーク配置エリア5に設置し(S31)、ロボットアーム1をワーク配置エリア5の上空から退避させる(S32)。次に、固定カメラとして空間に固定された状態のステレオカメラ3bで第1の計測データを取得する。即ち、ステレオカメラ3bによってマーカー8上のマーク81を計測し、その座標値FP[i]およびマーク個数Nを計測する(S33)。ここまでの各ステップの内容は、これまでの実施例2と同様の処理で実施することができる。
次に、固定状態のステレオカメラ3bを、不図示の固定カメラ支持部材から取り外し、ロボットアーム1の先端に付け替える(S34)。そして以降のステップS35〜S39では、ステレオカメラ3bを上述の手先カメラ7bとして用い第2の計測データを取得し、上述の実施例2と同様の校正演算を行って目的の校正関数を求める。なお、これらステップS35〜S39、S301、S302の内容に関しては、それぞれ実施例2のステップS25〜S29、S201、S202と同様であるため、ここでは詳細な説明は省略する。
以上のようにして校正処理が完了すると、目的の校正値、すなわち、ロボット座標系Rと固定カメラ座標系Fの相対位置姿勢を表す座標変換行列RHFを校正パラメータファイルとして格納する。また、ステレオカメラ取付部31bを介して不図示の固定カメラ支持部に再度ステレオカメラ3bを取り付ける。その後のピッキングなどの実作業時には、校正パラメータファイルの校正値を用いて、必要に応じてステレオカメラ3bの計測した固定カメラ座標系Fの座標値をロボット座標系Rの座標値に変換することができる。
上記のように、本実施例においては、通常時は、固定カメラとして用いるステレオカメラ3bを、一時的に校正用の手先カメラ7bとして用いることによって、校正のときだけのために用いる手先カメラを別途、用意する必要がなくなっている。すなわち、校正専用の手先カメラを用意する場合に比べて、安価にロボット装置の校正処理を実施することができる。
以上、本発明の実施例1〜3について説明したが、上述の構成はいずれも例示に過ぎず、本発明の実施に際しては、本発明の趣旨を逸脱しない範囲において当業者の適宜変更が可能である。
例えば、ロボットアーム1として6軸垂直多関節のロボットアームについて例示したが、ロボットアームは7軸のロボットアームやパラレルリンク構造を有するもの、直動機構を有するものなど、各種のロボットアームを用いることができる。
また、例えば、手先カメラ7および7aは、ロボットハンド2の手首部または掌部に取り付ける構成について説明したが、ロボットハンドを一度取り外して手先視覚センサを交換的に取り付ける構成としてもよい。また、手先視覚センサをハンドに内蔵し、着脱しない構成としても構わない。
また例えば、固定視覚センサおよび手先視覚センサとしてステレオカメラを例示したが、使用できる視覚センサはこれに限らず、カメラ座標系からみた特徴点の座標値を計測できる各種視覚センサを用いることが出来る。例えば、スリット上のレーザ光や各種のパターン光を対象物に投光して三角法の原理に基づいて3次元計測を行うものや、TOF(Time Of Flight)法によって距離画像を得る視覚センサを用いてもよい。また、奥行き方向の情報を事前に公知の外部パラメータ校正手法を用いて校正した上で、通常の単眼カメラを用いることも可能である。
また例えば、簡単のためにマーク81およびマーク81aは黒色の円形マークであるものとして説明したが、形状や色はそれに限らず、特徴部の座標を固定視覚センサおよび手先視覚センサから特定できるものであれば構わない。各種多角形や、黒色部と白色部を並べたチェッカーマークなど、さまざまなマークを用いることが出来る。
さらにマーカー8および8aは、特徴部の座標を視覚センサより計測できればよいので、ピッキングで対象とするワーク自体の特徴点をマーカー8および8aとして校正に用いてもよい。例えば図2に示したような直方体状ワーク6の各頂点をマーク81および81aの代わりに用いて、固定カメラ3からの計測と手先カメラ7または7aからの計測に用いて校正を行っても構わない。
また複数の校正姿勢を取らせる際にロボットアーム1を自動プログラムにて制御する場合について例示して説明を行ったが、自動プログラムを実行せず、ティーチングペンダントを用いたインチング操作によって校正姿勢をとらせてもよい。その場合には校正を実施するたびに人手による操作が必要となるが、厳密な微調整は不要なので比較的短時間で実施できるとともに、本発明の精度面での効果は自動プログラムを用いた場合と同等に享受することができる。
また、上述の各実施例においては、説明を簡単にするために手先座標系Tと手先カメラ座標系Vの関係は既知である例について説明した。しかし、座標変換行列THVが未知の場合であっても、座標変換行列THVと、目的の校正値である座標変換行列RHFを同時に算出することも出来る。その場合は、式(9)においてRHFとTHVの2つの座標変換行列が未知数となる。各座標変換行列は6自由度を持つので、合計12のパラメータを求めることになるが、校正姿勢の数Nを充分に増やすことにより、式(9)の評価式が最小となるような12パラメータを最小二乗法によって求めることが出来る。
また、上述の各実施例においては、説明を簡単にするためにマーカー8や8aと校正姿勢の数が同一(N)である場合について説明した。本発明を適用するにあたって、例えば一つのマーカーに対して角度を変えた複数の校正姿勢から手先カメラによる計測を行うようにしてもよい。また一つの校正姿勢に対して複数のマーカーが手先カメラの視野に含まれるように配置し、手先カメラからの一度の計測で複数の座標値を取得するようにしてもよい。その場合は例えば、上記のインデックスiを校正姿勢用に関するインデックスjとマークに関するインデックスkに置き換えた上で、手先視覚センサからの計測を行ったjとkの組合せ1つごとに式(8)に相当する1つの等式を立てることができる。そして、実施例1〜実施例3と同様、取得したデータ数分の等式を連立して最小二乗解を求めることが出来る。
また、上述の各実施例においては、校正関数としてロボット座標系Rと固定カメラ座標系Fの関係を表す座標変換行列として定めた例について説明を行った。校正関数は、固定カメラ3の計測値とロボットアーム1の指令値の関係を表現できる関数であれば良く、座標変換行列以外の表現形式を用いても構わない。例えば、並進を表す3次元ベクトルと回転を表す3自由度のオイラー角によって校正関数を表現してもよい。また別の例としては、固定カメラ3の計測座標値と、ロボットアーム1の指令値の関係を直接的に多項式で表した関数を校正関数として用いてもよい。特にロボットアーム1の指令値と固定カメラ3の座標値を2次以上のM次多項式で表すような場合には、校正範囲外での誤差が校正を実施した範囲から離れるにつれてM次関数的に大きくなる。従って、この構成では本発明の実作業時に近い姿勢かつ充分広い範囲でロボットを動作させて校正を行える、という特徴によって、大きな校正精度の向上を期待できる。
本発明のロボット校正動作は、例えば上記各実施例の計測制御動作を実現する校正制御を含むロボット制御プログラムを制御装置4のコンピュータ(例えばCPU41)がプログラムメモリ(例えばROM42)から読み出して実行することにより実現できる。この場合、記録媒体から読み出されたロボット制御プログラム自体が上述の実施例の機能を実現することになり、ロボット制御プログラムそれ自体、およびロボット制御プログラムを記録した記録媒体は本発明を構成することになる。
また、上記実施例では、コンピュータ読み取り可能な記録媒体がROM42である場合について説明したが、本発明はこの構成に限定されるものではない。例えば、本発明を実現するプログラムは、コンピュータ読み取り可能な記録媒体であれば、いかなる記録媒体に記録されていてもよい。ロボット制御プログラムを装置に実装するための記録媒体としては、図1のROM42以外の不図示の外部記憶装置等を用いてもよい。例えば、コンピュータ読み取り可能な記録媒体としては、記録媒体として、フレキシブルディスク、ハードディスク、各種光ディスク、光磁気ディスク、磁気テープ、書き換え可能な不揮発性のメモリ(例えばUSBメモリ)、ROM等を用いることができる。また、上記実施例におけるロボット制御プログラムを、ファイルサーバなどに格納しておき、ネットワーク50を介してダウンロードしてCPU41により実行するようにしてもよい。ネットワーク50はいわゆるインターネットのような公共のネットワークの他、ロボット装置が設置される製造プラントやその運営組織(企業など)に閉じたいわゆるイントラネットのようなプライベートネットワークあってもよい。
また、本発明の実施の形態は、コンピュータが読み出したロボット制御プログラムのコードを実行することにより、上記実施例の機能が実現されるだけに限定されるものではない。例えば、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれる。
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれてもよい。そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって上記実施例の機能が実現される場合も含まれる。
また、上記実施例では、コンピュータがHDD等の記録媒体に記録されたロボット制御プログラムを実行することにより、画像処理を行う場合について説明したが、これに限定するものではない。ロボット制御プログラムに基づいて動作する制御部の一部または全部の機能がASICやFPGA等の専用LSIの形式で実装されていてもよい。