以下、適宜図面を参照しながら、本開示に係るマーカおよびロボットシステムの構成および作用を具体的に開示した各実施の形態を詳細に説明する。但し、必要以上に詳細な説明は省略する場合がある。例えば、既によく知られた事項の詳細説明や実質的に同一の構成に対する重複説明を省略する場合がある。これは、以下の説明が不必要に冗長になることを避け、当業者の理解を容易にするためである。なお、添付図面及び以下の説明は、当業者が本開示を十分に理解するために提供されるものであって、これらにより特許請求の範囲に記載の主題を限定することは意図されていない。
(実施の形態1)
図1を参照して、実施の形態1に係るロボットシステム100の構成例およびユースケース例について説明する。図1は、実施の形態1に係るロボットシステム100の構成例を示す図である。実施の形態1に係るロボットシステム100は、入力部U1と、コントローラCOMと、ロボットR1と、カメラC1と、ワークW上に備えられたマーカMkと、モニタMNと、を含んで構成される。実施の形態1に係るロボットシステム100は、ロボットR1に設けられたカメラC1とコントローラCOMとの間、コントローラCOMと入力部U1との間、およびコントローラCOMとモニタMNとの間で通信可能に接続され、データの送受信を行う。なお、実施の形態1に係るロボットシステム100におけるロボットR1の数は、1つに限定されず、例えば1つのカメラを備えるロボットが複数通信可能に接続されてよい。また、図1に示すマーカMkは、説明をわかりやすくするためにワークWの側面に配置されているように図示されているが、実際はワークW上であって、カメラC1によって撮像可能な位置に配置される。
入力部U1は、オペレータの入力操作を検出するオペレータインターフェースであり、例えばマウス、キーボードまたはタッチパネルなどを用いて構成される。なお、入力部U1は、モニタMNの構成を含み、一体に形成されてもよい。入力部U1は、オペレータからロボットR1の動作設定(例えば数式データ)に関する入力操作を信号に変換し、コントローラCOMにおけるロボットコントローラRCに出力する。
コントローラCOMは、入力部U1、モニタMNおよびロボットR1との間で通信可能に接続される。コントローラCOMは、カメラC1によって撮像された撮像画像を用いた画像解析処理およびワークWの計測処理を実行するビジョンコントローラVCと、ビジョンコントローラVCによって計測されたワークWの位置情報に基づいてロボットR1の制御を実行するロボットコントローラRCと、を含んで構成される。
ビジョンコントローラVCは、ロボットコントローラRCとロボットR1に備えられたカメラC1との間で通信可能に接続される。ビジョンコントローラVCは、カメラC1によって撮像された撮像画像に映るマーカMkに基づいて、マーカMkの3次元位置を計測し、計測されたマーカMkの3次元位置に基づくワークWの位置を計測する。
ロボットコントローラRCは、ビジョンコントローラVC、ロボットR1、モニタMN、入力部U1との間で通信可能に接続される。ロボットコントローラRCは、ビジョンコントローラVCから入力されたワークWの位置情報に基づいて、オペレータによって予め設定されたワークWへの所定の制御を実行する。具体的に、ロボットコントローラRCは、ワークWの位置情報に基づいて、ロボットアームRAおよびハンド部RHを制御するための制御信号を生成し、ロボットR1に送信する。
モニタMNは、コントローラCOMとの間で通信可能に接続され、オペレータによって入力された入力内容、カメラC1によって撮像されたワークWあるいはマーカMkの撮像画像、ロボットR1の制御結果などを表示する。
ロボットR1は、ロボットコントローラRCおよびビジョンコントローラVCとの間でケーブル40によって通信可能に接続される。また、ロボットR1は、ロボットアームRAを備え、各関節の軸座標系と自由空間上に原点を設定し、この原点からロボットR1のロボットアームRAの先端までを関連付ける直交座標系を用いて動作する。ロボットR1は、例えば6つのサーボモータ41のそれぞれを有する6軸(例えば軸J1,J2,J3,J4,J5,J6)の多関節型ロボットで構成され、これらの6軸はロボットコントローラRCのプロセッサ(図2参照)によってそれぞれ独立に制御される。
ロボットR1の軸J1は、ロボットR1の全体をパン回転の如く旋回させる際の回転中心である。ロボットR1の軸J2は、ロボットアームRAをチルト回転の如く前後移動させる際の回転中心である。ロボットR1の軸J3は、ロボットアームRAをチルト回転の如く上下移動させる際の回転中心である。ロボットR1の軸J4は、ロボットアームRAの手首をチルト回転の如く回転させる際の回転中心である。ロボットR1の軸J5は、ロボットアームRAの手首の振りを行う際の回転中心である。ロボットR1の軸J6は、ロボットアームRAのハンド部RHをパン回転の如く回転させる際の回転中心である。
ロボットアームRAは、作業目的に応じたツールを取り付け可能であって、先端にカメラC1を備える。ここで、ロボットアームRAは、ロボットアームRAの軸J6とカメラC1の光軸JC1との間の角度が設置角度βとなるようにカメラC1を備える。所定の設置角度βの情報は、ビジョンコントローラVCにおけるメモリ(図2参照)に記憶される。なお、設置角度βは、カメラC1がワークW上に配置されたマーカMkを撮像可能に設置されればよく、例えば設置角度βは、0(ゼロ)°であってよい。
また、実施の形態1に係るロボットアームRAは、ツールとして例えば一対の指部材からなるハンド部RHが取り付けられる。ハンド部RHは、図示しないエアシリンダ、電動シリンダ、モータなどの各種アクチュエータを制御して細かい作業を実行可能となり、ワークWの把持、搬送を実行する。
単眼カメラの一例としてのカメラC1は、ビジョンコントローラVCとの間でケーブル40を介して通信可能に接続され、所定の位置からワークWあるいはワークW上に配置されたマーカMkを立体的に撮像する。カメラC1は、撮像された撮像画像をビジョンコントローラVCに送信する。カメラC1は、撮像領域内に映るマーカMkを撮像する。また、実施の形態1に係るカメラC1は、所謂固定焦点カメラの例を示すが、これに限定されないことは言うまでもない。例えば、カメラC1は、オートフォーカス機能を有し、撮像領域内に映るマーカMkにオートフォーカスを実行し、撮像してよい。
マーカMkは、ワークW上にカメラC1によって撮像可能に配置される。マーカMkは、例えばシールあるいは印刷物であり、ワークWの所定位置に貼り付けあるいはワークWに印刷されて形成される。マーカMkは、面と、8つのドット部と、1つの非ドット部(不図示)と、を少なくとも有して形成される。面は、例えば色(輝度)などによりワークWと識別可能に形成される。また、8つのドット部のそれぞれは、面上に配置され、例えば色(輝度)などにより面と識別可能に形成される。
8つのドット部および1つの非ドット部のそれぞれの中心位置は、3行3列の正方形状に配置される。1つの非ドット部は、例えばマーカMkの面と識別不可となるように同一の色(輝度)などを有して形成され、3行3列の9つの配置箇所のうち所定の角部(つまり、正方形状の四隅のうちいずれかの角)に配置される。非ドット部は、マーカMkの方向(つまり、ワークWの方向)を示す。また、8つのドット部のそれぞれは、3行3列の9つの配置箇所のうち1つの非ドット部以外の配置箇所に配置される。なお、3行3列に配置された8つのドット部のうち中央配置された中央ドット部は、他のドット部と異なる大きさ、形状であってよい。
次に、図2および図3を参照して、ビジョンコントローラVC、ロボットコントローラRCおよびカメラC1の内部構成例およびワークWの位置情報の計測方法について説明する。図2は、実施の形態1に係るビジョンコントローラVC、ロボットコントローラRCおよびカメラC1の内部構成例を示す図である。なお、図2においてロボットR1、モニタMNおよび入力部U1などの他の構成は省略している。また、図2において、ケーブル40は省略されている。図3は、カメラC1とマーカMkとの間の位置関係を説明する図である。図3には、ロボットR1、ロボットアームRAおよびハンド部の図示を省略している。また、図3に示すマーカMkにおいて、8つのドット部のそれぞれの図示を省略している。
なお、マーカMkは、図2においてワークW上面の水平面に配置されるが、設置角度βでロボットアームRAに設置されるカメラC1によって撮像可能な位置に配置されていればよく、例えばワークWの側面であってもよい。また、マーカMkが配置される面は、水平面に限定されず、例えば斜面、曲面であってもよい。
カメラC1は、所定の設置角度βでロボットアームRAに設置され、所定の位置からワークW上に配置されたマーカMkを撮像する。カメラC1は、通信部10と、プロセッサ11と、メモリ12と、撮像部13と、を含んで構成される。
通信部10は、ケーブル40を介してビジョンコントローラVCとの間でデータ通信可能に接続される。通信部10は、撮像部13によって撮像された撮像画像とカメラC1の焦点距離の情報とをビジョンコントローラVCに送信する。
プロセッサ11は、例えばCPU(Central Processing unit)またはFPGA(Field Programmable Gate Array)を用いて構成され、メモリ12と協働して、各種の処理および制御を行う。具体的には、プロセッサ11はメモリ12に保持されたプログラムおよびデータを参照し、そのプログラムを実行することにより、各部の機能を実現する。プロセッサ11は、撮像部13によって撮像され、入力された撮像画像をメモリ12に記憶するとともに、ビジョンコントローラVCにおける通信部20に送信する。
メモリ12は、例えばプロセッサ11の各処理を実行する際に用いられるワークメモリとしてのRAM(Random Access Memory)と、プロセッサ21の動作を規定したプログラムおよびデータを格納するROM(Read Only Memory)とを有する。RAMには、プロセッサ11により生成あるいは取得されたデータもしくは情報が一時的に保存される。ROMには、プロセッサ11の動作を規定するプログラムが書き込まれている。メモリ12は、撮像部13によって撮像された撮像画像を記憶する。また、メモリ12は、ロボットアームRAの軸J6とカメラC1の光軸JC1との間のカメラC1の設置角度β、カメラC1の撮像位置、カメラC1の焦点距離の情報などを記憶する。
撮像部13は、少なくともレンズ(不図示)とイメージセンサ(不図示)とを有して構成される。イメージセンサは、例えばCCD(Charged−coupled device)あるいはCMOS(Complementary metal−oxide−semiconductor)などの固体撮像素子であり、撮像面に結像した光学像を電気信号に変換する。撮像部13は、撮像された撮像画像をプロセッサ11に出力する。
ビジョンコントローラVCは、カメラC1からケーブル40(不図示)を介して、撮像画像およびカメラC1の焦点距離の情報を受信する。ビジョンコントローラVCは、受信された撮像画像からマーカMkを検出し、マーカMkの3次元位置を計測する。ビジョンコントローラVCは、計測されたマーカMkの3次元位置に基づくワークWの位置情報をロボットコントローラRCに送信する。ビジョンコントローラVCは、通信部20と、プロセッサ21と、メモリ22と、ストレージSTと、を含んで構成される。
通信部20は、カメラC1およびロボットコントローラRCとの間で通信可能に接続される。通信部20は、カメラC1から受信された撮像画像およびカメラC1の焦点距離の情報をプロセッサ21に出力する。また、通信部20は、プロセッサ21から入力されたワークWの位置情報をロボットコントローラRCに送信する。
プロセッサ21は、例えばCPUまたはFPGAを用いて構成されて、メモリ22と協働して、各種の処理および制御を行う。具体的には、プロセッサ21はメモリ22に保持されたプログラムおよびデータを参照し、そのプログラムを実行することにより、撮像画像に画像処理を実行する機能、画像処理結果に基づいてマーカMkの3次元位置の計測を実行する機能およびマーカMkの3次元位置に基づいてワークWの位置を計測する機能などを実行する。プロセッサ21は、入力された撮像画像をストレージSTに記憶する。また、プロセッサ21は、計測されたワークWの位置情報を、通信部20を介してロボットコントローラRCに送信する。
プロセッサ21は、通信部20から入力された撮像画像に画像処理を実行し、撮像画像に映るマーカMkを検出する。プロセッサ21は、検出されたマーカMkからドット部を検出し、検出されたドット部のそれぞれを識別するためのID(identification)を付与するナンバリング処理を実行した後、撮像画像上のドット部の大きさ(つまり水平方向および垂直方法のピクセル数)を計測する。プロセッサ21は、計測されたドット部の大きさとカメラC1の焦点距離とに基づいて、カメラC1からドット部の中心まで間の距離を算出する。
プロセッサ21は、検出されたドット部の形状に基づいて、ドット部の中心位置(座標)を算出する。さらにプロセッサ21は、カメラC1の焦点距離の情報に基づいて、カメラ座標系ΣC1(図3参照)におけるドット部の3次元位置(例えば(X,Y,Z))を計測する。
ここで、カメラ座標系ΣC1は、撮像領域の座標系をカメラC1視点の座標系に変換したものであり、カメラレンズ(不図示)を撮像距離0(ゼロ)として、カメラC1の光軸とカメラレンズの表面とが直交する交点を基準点としたベクトル(Xc,Yc,Zc)として設定される。また、マーカ座標系ΣMkは、マーカMkにおける面の中心位置(座標)を基準点としたベクトル(Xm,Ym,Zm)として設定される。
プロセッサ21は、検出されたドット部のそれぞれにナンバリング処理結果に基づいて、マーカMkが有する8つのドット部のそれぞれの3次元位置を計測したか否かを判定する。ここで、プロセッサ21は、非ドット部の位置に基づいてマーカMkの方向を判定する。これにより、プロセッサ21は、マーカMkが配置されたワークWの方向を計測できる。
プロセッサ21は、8つのドット部のそれぞれの3次元位置を計測したと判定すると、これらのカメラ座標系ΣC1における3次元位置のそれぞれを、8つのドット部のナンバリング処理結果と、予めメモリ22に記憶されたマーカMkの仕様(マーカMkの水平方向および垂直方向の大きさ、形状あるいはマーカ座標系ΣMkにおける8つのドット部のそれぞれの中心位置(座標))とに基づいて、マーカ座標系ΣMk(図3参照)における3次元位置のそれぞれに変換する。
また、プロセッサ21は、変換されたマーカ座標系ΣMkにおけるマーカMkの3次元位置をカメラ座標系ΣC1におけるマーカMkの3次元位置に変換可能な行列式を算出する。プロセッサ21は、算出された行列式に基づくカメラC1からみたマーカMkの回転角度と、カメラC1とマーカMkとの間の距離と、カメラC1の設置角度βと、カメラC1の設置位置とに基づいて、ロボットアームRAに取り付けられたハンド部RHとマーカMkが配置されたワークWとの間の距離および回転角度(つまり、ハンド部RHを基準としたワークWの位置、方向)を計測する。プロセッサ21は、計測されたワークWの位置情報をロボットコントローラRCに送信する。なお、ここでいうワークWの位置情報は、ワークWの方向の情報を含む。
なお、マーカMkの配置位置におけるワークWの形状は、平面に限定されない。また、マーカMkの配置位置におけるワークWの形状は、さらに予め設定されなくてよい。
メモリ22は、例えばプロセッサ21の各処理を実行する際に用いられるワークメモリとしてのRAMと、プロセッサ21の動作を規定したプログラムおよびデータを格納するROMとを有する。RAMには、プロセッサ21により生成あるいは取得されたデータもしくは情報が一時的に保存される。ROMには、プロセッサ21の動作を規定するプログラムが書き込まれている。メモリ22は、カメラC1の設置角度β、カメラC1の撮像位置、マーカMkの仕様(マーカMkの面の大きさ、ワークW上におけるマーカMkの配置位置、8つのドット部のそれぞれの大きさあるいは8つのドット部のそれぞれの中心位置など)、マーカ座標系ΣMkおよびカメラ座標系ΣC1などを記憶する。
ストレージSTは、プロセッサ21から入力されたカメラC1によって撮像された撮像画像と、撮像画像が撮像された撮像時刻、焦点距離などの情報を関連づけて記憶する。
ロボットコントローラRCは、入力部U1、モニタMN、ビジョンコントローラVC、およびロボットR1との間で通信可能に接続される。ロボットコントローラRCは、ビジョンコントローラVCによって入力されたワークWの位置情報に基づいて、ロボットR1の所定の制御を実行させる。ロボットコントローラRCは、通信部30と、プロセッサ31と、メモリ32と、を含んで構成される。
通信部30は、入力部U1、モニタMN、ビジョンコントローラVC、およびロボットR1との間で通信可能に接続される。通信部30は、ビジョンコントローラVCから受信されたワークWの位置情報をプロセッサ31に出力する。また、通信部30は、プロセッサ31から入力されたロボットR1の駆動プログラムを、ケーブル40を介してロボットR1に送信する。
プロセッサ31は、例えばCPUまたはFPGAを用いて構成され、メモリ32と協働して、各種の処理および制御を行う。具体的には、プロセッサ31はメモリ32に保持されたプログラムおよびデータを参照し、そのプログラムを実行することにより、各部の機能を実現する。プロセッサ31は、ビジョンコントローラVCから入力されたワークWの位置情報をメモリ32に記憶するとともに、ビジョンコントローラVCにおける通信部20に送信する。
また、プロセッサ31は、入力部U1から入力されたロボットR1の設定動作に基づく数式データを、例えば、運動幾何学と代数学とを用いて、ロボットR1のサーボモータ41を駆動するための駆動プログラムに変換する。プロセッサ31は、ロボットR1の制御を実行するための駆動プログラムを、ケーブル40を介してロボットR1に送信する。
メモリ32は、例えばプロセッサ31の各処理を実行する際に用いられるワークメモリとしてのRAMと、プロセッサ31の動作を規定したプログラムおよびデータを格納するROMとを有する。RAMには、プロセッサ31により生成あるいは取得されたデータもしくは情報が一時的に保存される。ROMには、プロセッサ31の動作を規定するプログラムが書き込まれている。メモリ32は、ビジョンコントローラVCから入力されたワークWの位置情報、オペレータによって入力されたロボットR1の動作設定などを記憶する。
図4および図5を参照して、マーカMkについて説明する。図4は、マーカMk1の一例を示す図である。図5は、マーカMk2の一例(中央に配置されたドット部Dt24の大きさが異なる例)を示す図である。
マーカMk1は、ドット配置面の一例としての面50a上に面50aと識別可能に形成された8つのドット部Dt11,Dt12,Dt13,Dt14,Dt15,Dt16,Dt17,Dt18のそれぞれと、面50a上において面50aと識別不可に、例えば面50aと類似する色(輝度)を有して形成された1つの非ドット部Dt10と、を有して形成される。なお、ここで8つのドット部Dt11〜Dt18のそれぞれは、面50a上において例えば異なる色(輝度)を有し、面50aと識別可能に形成される。8つのドット部Dt11〜Dt18のそれぞれおよび1つの非ドット部Dt10のそれぞれの中心位置(座標)は、所定の間隔で3行3列の合計9つの配置箇所に、正方形状に並んで配置される。1つの非ドット部Dt10は、9つの配置箇所のうちいずれかの角部に配置されて、マーカMk1の方向を示す。なお、図4において、8つのドット部のそれぞれDt11〜Dt18のそれぞれは、同一の大きさで形成されるが、同一の大きさでなくてよい。
ビジョンコントローラVCは、非ドット部Dt10が配置された位置に基づいて、8つのドット部Dt11〜Dt18のそれぞれをナンバリングする。ビジョンコントローラVCは、例えば、ドット部Dt11をナンバー「1」のドット部、ドット部Dt12をナンバー「2」のドット部、ドット部Dt13をナンバー「3」のドット部、ドット部Dt14をナンバー「4」のドット部、ドット部Dt15をナンバー「5」のドット部、ドット部Dt16をナンバー「6」のドット部、ドット部Dt17をナンバー「7」のドット部、ドット部Dt18をナンバー「8」のドット部とナンバリングする。ビジョンコントローラVCは、マーカMk1が有する8つのドット部Dt11〜Dt18のそれぞれをナンバリングすることで、マーカMk1上の所定の8箇所(8つのドット部が配置された位置)のそれぞれの3次元位置を計測し、マーカMk1が配置されたワークWの位置を計測できる。
マーカMk2は、ドット配置面の一例としての面50b上に面50bと識別可能に形成された8つのドット部Dt21,Dt22,Dt23,Dt24,Dt25,Dt26,Dt27,Dt28のそれぞれと、面50b上において面50bと識別不可に、例えば面50bと類似する色(輝度)を有して形成された形成された1つの非ドット部Dt20と、を有して形成される。なお、ここで8つのドット部Dt11〜Dt18のそれぞれは、面50b上において例えば異なる色(輝度)を有し、面50aと識別可能に形成される。8つのドット部Dt21〜Dt28のそれぞれおよび1つの非ドット部Dt20のそれぞれの中心位置(座標)は、所定の間隔で3行3列の合計9つの配置箇所に、正方形状に並んで配置される。1つの非ドット部Dt20は、9つの配置箇所のうちいずれかの角部に配置されて、マーカMk2方向を示す。
なお、図5において、8つのドット部のそれぞれDt21〜Dt28のそれぞれのうち中央位置に配置された中央ドット部の一例としてのドット部Dt24は、他のドット部と異なる大きさを有して形成される。これにより、ビジョンコントローラVCが8つのドット部Dt21〜Dt28のそれぞれをナンバリングする際に、中央位置に配置されたドット部Dt24の識別を容易にするとともに、ドット部Dt24および非ドット部Dt20が配置された位置に基づいて、他のドット部を容易にナンバリングできる。
次に、図6を参照してワークWの位置計測手順例について説明する。図6は、実施の形態1に係るロボットシステム100におけるワークWの位置計測手順例を説明するシーケンス図である。なお、図6で説明する位置計測手順例においてマーカは、図4に示すマーカMk1を用いて説明する。
ビジョンコントローラVCは、カメラC1によって撮像された撮像画像を受信する。ビジョンコントローラVCは、受信された撮像画像に画像処理を実行し、撮像画像からマーカMk1を検出する(St1)。
ビジョンコントローラVCは、検出されたマーカMk1からドット部を検出する(St2)。なお、ここで検出されるドット部の数は、8つでなく、1以上であればよい。また、ビジョンコントローラVCは、検出されたドット部についてナンバリング処理を実行する。
ビジョンコントローラVCは、検出されたドット部の大きさ(ピクセル数)とカメラC1の焦点距離とに基づいて、カメラC1からドット部の中心まで間の距離を算出する(St3)。
ビジョンコントローラVCは、検出されたドット部の形状に基づいて、ドット部の中心位置(座標)を算出する(St4)。
ビジョンコントローラVCは、撮像画像が撮像された時のカメラC1の焦点距離に基づいて、カメラ座標系ΣC1におけるドット部の中心位置(座標)の3次元位置を計測する(St5)。
ビジョンコントローラVCは、ドット部のナンバリング処理結果に基づいて、マーカMk1が有する8つのドット部Dt11〜Dt18のそれぞれの3次元位置について計測を完了したか否かを判定する(St6)。
ビジョンコントローラVCは、ステップSt6における判定処理において、8つのドット部Dt11〜Dt18のそれぞれの3次元位置について計測を完了していると判定した場合(St6,YES)、カメラ座標系ΣC1における8つのドット部Dt11〜Dt18のそれぞれの3次元位置をマーカ座標系ΣMkにおける8つのドット部Dt11〜Dt18のそれぞれの3次元位置に変換する。ビジョンコントローラVCは、変換されたマーカ座標系ΣMkにおける8つのドット部Dt11〜Dt18のそれぞれの3次元位置および非ドット部Dt10の位置(配置)に基づくマーカMk1の方向を判定し、マーカ座標系ΣMkにおけるマーカMk1の3次元位置を計測する。また、ビジョンコントローラVCは、計測されたマーカ座標系ΣMkにおけるマーカMk1の3次元位置をカメラ座標系ΣC1におけるマーカMk1の3次元位置に変換する。ビジョンコントローラVCは、変換されたカメラ座標系ΣC1におけるマーカMk1の3次元位置とカメラC1の設置角度および設置位置とに基づいて、ワークWの位置を計測する(St7)。
ビジョンコントローラVCは、計測されたワークWの位置情報(例えばワークWの方向、位置)を計測結果としてロボットコントローラRCに送信する(St8)。
ロボットコントローラRCは、受信された計測結果としてのワークWの位置情報に基づいて、ロボットアームRAおよびロボットアームRAに備えられたハンド部RHを制御するための駆動プログラムを生成し、ロボットR1に送信する。ロボットコントローラRCは、この駆動プログラムに基づいてロボットアームRAあるいはハンド部RHをワークWあるいはマーカMk1の位置に向けて駆動させ、所定の制御(例えばワークWの把持、搬送など)を実行させる(St9)。
以上により、実施の形態1に係るロボットシステム100において用いられるマーカMk1は、ワークW上に配置され、ロボットシステム100を構成するカメラC1により撮像される。マーカMk1は、正方形状のドット配置面(面50a)と、ドット配置面(面50a)上で3行3列状に並んで配置され、カメラC1の撮像画像上で面50aと比較して識別可能な輝度を有する8つのドット部Dt11〜Dt18と、8つのドット部Dt11〜Dt18と同等の大きさを有し、カメラC1の撮像画像上で面50aと比較して識別可能な輝度を有さない非ドット部Dt10と、を備える。非ドット部Dt10は、3行3列状の配置の角部に配置される。
これにより、実施の形態1に係るロボットシステム100は、8つのドット部Dt11〜Dt18のそれぞれに基づいて、マーカMk1の位置を計測できる。さらに、ロボットシステム100は、非ドット部Dt10の配置に基づいて、マーカMk1の方向を計測できる。したがって、実施の形態1に係るロボットシステム100は、単眼カメラの一例としてのカメラC1を用いたワークWの位置を高精度に計測でき、さらに計測された位置に基づいて、ロボットR1にワークWの把持を実行させるための駆動プログラムを生成して出力することにより、ワークWの的確な把持を支援できる。
また、実施の形態1に係るロボットシステム100は、8つのドット部Dt21〜Dt28のうち3行3列状の中央に配置されるドット部Dt24は、他の7つのドット部Dt21〜Dt23、Dt25〜Dt28のそれぞれに比べて大きな面積を有する。これにより、実施の形態1に係るロボットシステム100は、中央に配置されたドット部Dt24および非ドット部Dt20に基づいて、他の7つのドット部Dt21〜Dt23、Dt25〜Dt28のそれぞれのナンバリング処理を容易に実行できる。
また、実施の形態1に係るロボットシステム100は、マーカMk1を撮像するカメラC1と、ワークWを把持可能なロボットアームRAを有するロボットR1を制御するコントローラCOMとを通信可能に有するロボットシステムである。カメラC1は、ロボットアームRAの先端に取り付けられ、ワークW上に配置されたマーカMk1を撮像した撮像画像をコントローラCOMに送信する。コントローラCOMは、受信された撮像画像から1以上のドット部を検出し、検出されたドット部の大きさとカメラC1からドット部の中心までの間の距離と撮像画像上のドット部の中心位置とに基づいて、ドット部の3次元位置を計測し、8つのドット部Dt11〜Dt18のそれぞれについて3次元位置を計測した場合、8つのドット部Dt11〜Dt18のそれぞれの3次元位置とカメラC1の取付位置とに基づいてロボットR1にワークWを把持するための制御信号を生成して、ロボットR1に出力する。
これにより、実施の形態1に係るロボットシステム100は、8つのドット部Dt11〜Dt18のそれぞれに基づいて、マーカMk1およびワークWの位置をより高精度に計測でき、計測されたワークWの位置に基づいて、ロボットR1にワークWの把持を実行させるための駆動プログラムを生成して出力できる。これにより、ロボットシステム100は、ワークWの位置の高精度な計測およびワークWの的確な把持を支援できる。
また、実施の形態1に係るロボットシステム100におけるコントローラCOMは、8つのドット部Dt11〜Dt18のそれぞれについて3次元位置の計測が終了するまで、3次元位置の再計測を繰り返す。これにより、実施の形態1に係るロボットシステム100は、マーカMk1上の8箇所の3次元位置に基づいて、マーカMk1およびワークWの位置を計測できるため、計測精度を向上できる。
また、実施の形態1に係るロボットシステム100におけるコントローラCOMは、非ドット部Dt10の位置に基づいてマーカMk1の方向を判定する。これにより、実施の形態1に係るロボットシステム100は、容易にマーカMkおよびワークWの方向を判定できる。また、コントローラCOMは、非ドット部Dt10の位置に基づいて、8つのドット部Dt11〜Dt18のそれぞれのナンバリング処理をより容易に効率的に実行できる。
また、実施の形態1に係るロボットシステム100におけるカメラC1は、ロボットアームRAの先端にロボットアームRAの軸J6から所定の設置角度βだけ傾いて取り付けられる。これにより、実施の形態1に係るロボットシステム100におけるカメラC1は、オペレータが望む位置および設置角度βからワークWあるいはマーカMk1を撮像できる。
(実施の形態1の変形例)
実施の形態1に係るロボットシステム100は、カメラが所定の撮像位置からマーカを撮像する例について説明した。実施の形態1の変形例に係るロボットシステム100は、カメラが任意の撮像位置からマーカを撮像する例について説明する。
図7を参照して、実施の形態1の変形例に係るロボットシステム100における外側マーカMk3および内側マーカMk4の一例について説明する。図7は、実施の形態1の変形例に係るマーカの一例を示す図である。実施の形態1の変形例に係るマーカは、外側マーカMk3と、外側マーカMk3のうち中央に配置された外側ドット部Dt34を面50dとする内側マーカMk4とからなる。
外側マーカMk3は、ドット配置面の一例としての面50c上に面50cと識別可能に形成されたドット部の一例としての8つの外側ドット部Dt31,Dt32,Dt33,Dt34,Dt35,Dt36,Dt37,Dt38のそれぞれと、面50c上において面50cと識別不可に、例えば面50cと類似する色(輝度)を有して形成された1つの外側非ドット部Dt30と、を有して形成される。なお、ここで面50cと8つの外側ドット部Dt31〜Dt38のそれぞれとは、例えば異なる色(輝度)を有して形成されることにより識別可能となる。8つの外側ドット部Dt31〜Dt38のそれぞれおよび1つの外側非ドット部Dt30のそれぞれの中心位置(座標)は、所定の間隔で3行3列の合計9つの配置箇所に正方形状に並んで配置される。1つの外側非ドット部Dt30は、9つの配置箇所のうちいずれかの角部に配置されて、外側マーカMk3の方向を示す。
中央ドット部の一例としての外側ドット部Dt34は、9つの配置箇所のうち中央に配置され、他の7つの外側ドット部Dt31〜Dt33,Dt35〜Dt38のそれぞれと異なる大きさを有して形成される。また、実施の形態1の変形例に係る外側ドット部Dt34は、外側マーカMk3のドット部としての機能を有するとともに、内側マーカMk4の面50dとしての機能を有して形成される。
内側マーカMk4は、外側ドット部Dt34をドット配置面の一例としての面50dとして、面50dと識別可能に形成された8つの内側ドット部Dt41,Dt42,Dt43,Dt44,Dt45,Dt46,Dt47,Dt48のそれぞれと、面50d上において面50dと識別不可に、例えば面50dと類似する色(輝度)を有して形成された1つの内側非ドット部Dt40と、を有して形成される。なお、ここで面50dと8つの内側ドット部Dt41〜Dt48のそれぞれとは、例えば異なる色(輝度)を有して形成されることにより識別可能となる。8つの内側ドット部Dt41〜Dt48のそれぞれおよび1つの内側非ドット部Dt40のそれぞれの中心位置(座標)は、所定の間隔で3行3列の合計9つの配置箇所に正方形状に並んで配置される。1つの内側非ドット部Dt40は、9つの配置箇所のうちいずれかの角部に配置されて、内側マーカMk4の方向を示す。
ビジョンコントローラVCは、外側非ドット部Dt30あるいは内側非ドット部Dt40が配置された位置に基づいて、8つの外側ドット部Dt31〜Dt38のそれぞれあるいは8つの内側ドット部Dt41〜Dt48のそれぞれをナンバリングする。
実施の形態1の変形例に係るビジョンコントローラVCは、例えば、内側ドット部Dt41をナンバー「1」の内側ドット部、内側ドット部Dt42をナンバー「2」の内側ドット部、内側ドット部Dt43をナンバー「3」の内側ドット部、内側ドット部Dt44をナンバー「4」の内側ドット部、内側ドット部Dt45をナンバー「5」の内側ドット部、内側ドット部Dt46をナンバー「6」の内側ドット部、内側ドット部Dt47をナンバー「7」の内側ドット部、内側ドット部Dt48をナンバー「8」の内側ドット部とナンバリングする。同様に、ビジョンコントローラVCは、例えば、外側ドット部Dt31をナンバー「9」の外側ドット部、外側ドット部Dt32をナンバー「10」の外側ドット部、外側ドット部Dt33をナンバー「11」の外側ドット部、外側ドット部Dt34をナンバー「12」の外側ドット部、外側ドット部Dt35をナンバー「13」の外側ドット部、外側ドット部Dt36をナンバー「14」の外側ドット部、外側ドット部Dt37をナンバー「15」の外側ドット部、外側ドット部Dt38をナンバー「16」の外側ドット部とナンバリングする。
なお、ナンバリング処理において、8つの外側ドット部Dt31〜Dt38のそれぞれおよび8つの内側ドット部Dt41〜Dt48のそれぞれのナンバーは上述のナンバーに限定されないことは言うまでもない。例えば、ビジョンコントローラVCは、8つの外側ドット部Dt31〜Dt38のそれぞれにナンバー「1」〜「8」とナンバリングし、8つの内側ドット部Dt41〜Dt48のそれぞれにナンバー「9」〜「16」とナンバリングしてよい。
ビジョンコントローラVCは、内側マーカMk4が有する8つの内側ドット部Dt41〜Dt48のそれぞれと、外側マーカMk3が有する8つの外側ドット部Dt31〜Dt38のそれぞれのうち少なくとも1つの外側ドット部をナンバリングすることで、例えばカメラC1が先に内側マーカMk4を撮像し、撮像領域内に外側マーカMk3の全領域あるいは8つの外側ドット部Dt31〜Dt38のそれぞれが映っていない場合であっても、外側マーカMk3およびワークWの位置を計測できる。つまり、ビジョンコントローラVCは、例えば駆動プログラムの実行中であって、ハンド部RHがワークWに近づく制御が実行されて外側マーカMk3の全領域を撮像できなくなった場合であっても、内側マーカMk4と外側マーカMk3のうち少なくとも1つの外側ドット部を計測することにより現在のハンド部RHの位置をより高精度に計測し、把握することができる。
図8を参照して、実施の形態1の変形例に係るロボットシステム100におけるワークWの位置計測手順例について説明する。図8は、実施の形態1の変形例に係るロボットシステム100におけるワークWの位置計測手順例を説明するシーケンス図である。なお、図8に示す位置計測手順例は、まず内側マーカMk4の位置を計測する例について説明するが、これに限定されないことは言うまでもない。例えば、カメラC1によって撮像された撮像領域内に外側マーカMk3および内側マーカMk4が映る場合、先に外側マーカMk3の位置計測を実行し、次に駆動プログラムの実行によりハンド部RHがワークWに近づく制御が実行されて外側マーカMk3の全領域を撮像できなくなった場合に内側マーカMk4の位置計測を実行してもよい。
実施の形態1の変形例に係るビジョンコントローラVCは、カメラC1によって撮像された撮像画像を受信する。ビジョンコントローラVCは、受信された撮像画像に画像処理を実行し、撮像画像から内側マーカMk4を検出する(St11)。
ビジョンコントローラVCは、検出された内側マーカMk4から内側ドット部を検出する(St12)。なお、ここで検出される内側ドット部の数は、8つでなく、1以上であればよい。また、ビジョンコントローラVCは、検出された内側ドット部についてナンバリング処理を実行する。
ビジョンコントローラVCは、検出された内側ドット部の大きさ(つまりピクセル数)とカメラC1の焦点距離とに基づいて、カメラC1と内側ドット部の中心との間の距離を算出する(St13)。
ビジョンコントローラVCは、検出されたドット部の形状に基づいて、内側ドット部の中心位置(座標)を算出する(St14)。
ビジョンコントローラVCは、撮像画像が撮像された時のカメラC1の焦点距離に基づいて、カメラ座標系ΣC1における内側ドット部の中心位置(座標)の3次元位置を計測する(St15)。
ビジョンコントローラVCは、ナンバリング処理の結果に基づいて、内側マーカMk4が有する8つの内側ドット部D41〜Dt48のそれぞれの3次元位置について計測を完了したか否かを判定する(St16)。
ビジョンコントローラVCは、ステップSt16における判定処理において、8つの内側ドット部Dt41〜Dt48のそれぞれの3次元位置について計測を完了していると判定した場合(St16,YES)、撮像画像からさらに1以上の外側ドット部を検出する(St17)。なお、ここで検出される外側ドット部の数は、8つでなく、1以上であればよい。また、ここでビジョンコントローラVCは、内側ドット部の配置に基づいて、検出された外側ドット部のナンバリング処理を実行する。
一方、ビジョンコントローラVCは、ステップSt16における判定処理において、8つの内側ドット部Dt41〜Dt48のそれぞれの中心位置(座標)の3次元位置について計測を完了していないと判定した場合(St16,NO)、ステップSt12の処理に戻り、撮像画像から再度内側ドット部を検出する(St12)。
ビジョンコントローラVCは、検出された外側ドット部の大きさ(つまりピクセル数)とカメラC1の焦点距離とに基づいて、カメラC1と外側ドット部の中心との間の距離を算出する(St18)。
ビジョンコントローラVCは、検出された外側ドット部の形状に基づいて、外側ドット部の中心位置(座標)を算出する(St19)。
ビジョンコントローラVCは、撮像画像が撮像された時のカメラC1の焦点距離に基づいて、カメラ座標系ΣC1における外側ドット部の中心位置(座標)の3次元位置を計測する(St20)。
ビジョンコントローラVCは、外側ドット部におけるナンバリング処理の結果に基づいて、外側マーカMk3が有する8つの外側ドット部D31〜Dt38のそれぞれのうち、同一ナンバーを有する外側ドット部が複数回計測されたか否かを判定する(St21)。
ビジョンコントローラVCは、ステップSt21における判定処理において、同一ナンバーを有する外側ドット部が複数回計測されたと判定した場合(St21,YES)、カメラ座標系ΣC1における8つの内側ドット部Dt41〜Dt48のそれぞれの3次元位置をマーカ座標系ΣMk(ここでいうマーカ座標系ΣMkは、内側マーカMk4におけるマーカ座標系を示す)における8つの内側ドット部Dt41〜Dt48のそれぞれの3次元位置に変換する。ビジョンコントローラVCは、変換されたマーカ座標系ΣMkにおける8つの内側ドット部Dt41〜Dt48のそれぞれの3次元位置および内側非ドット部Dt40の位置(配置)に基づく内側マーカMk4の方向を判定し、マーカ座標系ΣMkにおける内側マーカMk4の3次元位置を計測する。また、ビジョンコントローラVCは、計測されたマーカ座標系ΣMkにおける内側マーカMk4の3次元位置をカメラ座標系ΣC1における内側マーカMk4の3次元位置に変換する。ビジョンコントローラVCは、変換されたカメラ座標系ΣC1における内側マーカMk4の3次元位置とカメラC1の設置角度および設置位置とに基づいて、ワークWの位置を計測する(St22)。
一方、ビジョンコントローラVCは、ステップSt21における判定処理において、同一ナンバーを有する外側ドット部が複数回計測されていないと判定した場合(St21,NO)、さらに外側マーカMk3が有する8つの外側ドット部Dt31〜Dt38のそれぞれの3次元位置について計測を完了したか否かを判定する(St23)。
ビジョンコントローラVCは、ステップSt23における判定処理において、8つの内側ドット部Dt41〜Dt48のそれぞれの3次元位置について計測を完了していると判定した場合(St23,YES)、カメラ座標系ΣC1における8つの内側ドット部Dt41〜Dt48のそれぞれの3次元位置をマーカ座標系ΣMk(ここでいうマーカ座標系ΣMkは、内側マーカMk4におけるマーカ座標系を示す)における8つの内側ドット部Dt41〜Dt48のそれぞれ3次元位置に変換する。ビジョンコントローラVCは、変換されたマーカ座標系ΣMkにおける8つの内側ドット部Dt41〜Dt48のそれぞれの3次元位置と、内側非ドット部Dt40の位置(配置)に基づいて判定された内側マーカMk4の方向とに基づいて、マーカ座標系ΣMkにおける内側マーカMk4の3次元位置を計測する。また、ビジョンコントローラVCは、計測されたマーカ座標系ΣMkにおける内側マーカMk4の3次元位置をカメラ座標系ΣC1における内側マーカMk4の3次元位置に変換する。ビジョンコントローラVCは、変換されたカメラ座標系ΣC1における内側マーカMk4の3次元位置とカメラC1の設置角度および設置位置とに基づいて、ワークWの位置を計測する(St22)。
一方、ビジョンコントローラVCは、ステップSt23における判定処理において、8つの内側ドット部Dt41〜Dt48のそれぞれの中心位置(座標)の3次元位置について計測を完了していないと判定した場合(St23,NO)、ステップSt17の処理に戻り、撮像画像から再度外側ドット部を検出する(St17)。
ビジョンコントローラVCは、計測されたワークWの位置情報(例えばワークWの方向、位置)を計測結果としてロボットコントローラRCに送信する(St24)。
ロボットコントローラRCは、受信された計測結果としてのワークWの位置情報に基づいて、ロボットアームRAおよびロボットアームRAに備えられたハンド部RHを制御するための駆動プログラムを生成し、ロボットR1に送信する。ロボットコントローラRCは、この駆動プログラムに基づいてロボットアームRAあるいはハンド部RHをワークWあるいは内側マーカMk4の位置に向けて駆動させ、所定の制御(例えばワークWの把持、搬送など)を実行させる(St25)。
よって、実施の形態1の変形例に係るロボットシステム100は、カメラC1によって撮像された撮像画像に外側ドット部Dt31〜Dt38のそれぞれが映っていない場合であっても、内側マーカMk4が有する8つの内側ドット部Dt41〜Dt48のそれぞれに基づいて、外側マーカMk3の位置を計測できる。これにより、実施の形態1の変形例に係るロボットシステム100は、カメラC1を用いたワークWの位置を高精度に計測でき、さらに計測された位置に基づいて、ロボットR1にワークWの把持を実行させるための駆動プログラムを生成して出力することにより、ワークWの的確な把持を支援できる。
以上により、実施の形態1の変形例に係るロボットシステム100において用いられる外側マーカMk3が備える外側ドット部Dt34は、外側ドット部Dt34上で3行3列状に並んで配置され、カメラC1の撮像画像上で外側ドット部Dt34の輝度と異なる輝度の領域となる8つの内側ドット部Dt41〜Dt48と、内側ドット部Dt41〜Dt48と同等の大きさを有し、カメラC1の撮像画像上で中央に配置された外側ドット部Dt34の輝度と輝度が同一の領域となる1つの内側非ドット部Dt40と、を備える。内側非ドット部Dt40は、3行3列状の配置の角部に配置される。
これにより、実施の形態1の変形例に係るロボットシステム100は、カメラC1によって撮像された撮像画像に外側ドット部Dt31〜Dt38のそれぞれが映っていない場合であっても、内側マーカMk4が有する8つの内側ドット部Dt41〜Dt48のそれぞれに基づいて、外側マーカMk3の位置を計測できる。
以上により、実施の形態1の変形例に係るロボットシステム100は、外側マーカMk3を撮像するカメラC1と、ワークWを把持可能なロボットアームRAを有するロボットR1を制御するコントローラCOMとを通信可能に有するロボットシステムである。カメラC1は、ロボットアームRAの先端に取り付けられ、ワークW上に配置された外側マーカMk3を撮像した撮像画像をコントローラCOMに送信する。コントローラCOMは、受信された撮像画像から1以上の内側ドット部を検出し、検出された内側ドット部の大きさとカメラC1から内側ドット部の中心までの間の距離と撮像画像上の内側ドット部の中心位置とに基づいて、内側ドット部の3次元位置を計測し、8つの内側ドット部Dt41〜Dt48のそれぞれについて3次元位置を計測した場合、さらに受信された撮像画像から1以上の外側ドット部を検出し、検出された外側ドット部の大きさとカメラC1から外側ドット部の中心までの間の距離と撮像画像上の外側ドット部の中心位置とに基づいて、外側ドット部の3次元位置を計測し、同一のナンバーまたはIDを有する外側ドット部の3次元位置の計測を複数回実行した場合、8つの内側ドット部Dt41〜Dt48のそれぞれの3次元位置とカメラC1の取付位置とに基づいてロボットR1にワークWを把持するための制御信号を生成して、ロボットR1に出力する。
以上により、実施の形態1の変形例に係るロボットシステム100は、カメラC1によって撮像された撮像画像に8つの外側ドット部Dt31〜Dt38のすべてが映っていない場合であっても、内側マーカMk4が有する8つの内側ドット部Dt41〜Dt48のそれぞれと、外側マーカMk3が有する8つの外側ドット部Dt31〜Dt38のそれぞれのうち少なくとも1つの外側ドット部とに基づいて、外側マーカMk3の位置を計測できる。ここで、ロボットシステム100は、内側マーカMk4上の8箇所(つまり内側ドット部Dt41〜Dt48のそれぞれの位置)の3次元位置だけでなく、さらに外側マーカMk3上の少なくとも1箇所(つまり外側ドット部Dt31〜Dt38のそれぞれのうち1つのドット部の位置)の3次元位置に基づいて、内側マーカMk4、外側マーカMk3およびワークWの位置を計測できるため、計測精度を向上できる。
さらに、ビジョンコントローラVCは、例えば駆動プログラムの実行中であって、ハンド部RHがワークWに近づく制御が実行されて外側マーカMk3の全領域あるいは8つの外側ドット部Dt31〜Dt38のそれぞれを撮像できなくなった場合であっても、内側マーカMk4と外側マーカMk3のうち少なくとも1つの外側ドット部を計測することにより、現在のカメラC1の位置を高精度に計測できる。つまり、ロボットシステム100は、カメラC1の位置に基づくハンド部RHの位置をより高精度に計測可能となり、これら計測されたハンド部RHの位置およびワークWの位置によってワークWの的確な把持を支援できる。
また、実施の形態1の変形例に係るロボットシステム100におけるコントローラCOMは、8つの内側ドット部Dt41〜Dt48のそれぞれについて3次元位置の計測が終了するまで、8つの内側ドット部Dt41〜Dt48のそれぞれについて3次元位置の再計測を繰り返す。これにより、実施の形態1の変形例に係るロボットシステム100は、内側マーカMk4上の8箇所(つまり内側ドット部Dt41〜Dt48のそれぞれの位置)の3次元位置に基づいて、内側マーカMk4、外側マーカMk3およびワークWの位置を計測できるため、計測精度を向上できる。
また、実施の形態1の変形例に係るロボットシステム100におけるコントローラCOMは、ドット部の3次元位置の計測を複数回実行しておらず、かつ8つの外側ドット部Dt31〜Dt38のそれぞれについて3次元位置を計測した場合、制御信号を生成してロボットに出力する。これにより、実施の形態1の変形例に係るロボットシステム100は、内側マーカMk4上の8箇所(つまり内側ドット部Dt41〜Dt48のそれぞれの位置)の3次元位置だけでなく、さらに外側マーカMk3上の8箇所(つまり外側ドット部Dt31〜Dt38のそれぞれの位置)の3次元位置に基づいて、内側マーカMk4、外側マーカMk3およびワークWの位置を計測できるため、計測精度を向上できる。
また、実施の形態1の変形例に係るロボットシステム100におけるコントローラCOMは、内側非ドット部Dt40の位置に基づいて内側マーカMk4の方向を判定する。これにより、実施の形態1の変形例に係るロボットシステム100は、容易に内側マーカMk4、外側マーカMk3およびワークWの方向を判定できる。また、コントローラCOMは、非ドット部Dt10の位置に基づいて、8つのドット部Dt11〜Dt18のそれぞれのナンバリング処理をより容易に効率的に実行できる。
以上、添付図面を参照しながら各種の実施の形態について説明したが、本開示はかかる例に限定されない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例、修正例、置換例、付加例、削除例、均等例に想到し得ることは明らかであり、それらについても本開示の技術的範囲に属すると了解される。また、発明の趣旨を逸脱しない範囲において、上述した各種の実施の形態における各構成要素を任意に組み合わせてもよい。