特開2019-217571(P2019-217571A)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

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

▶ オムロン株式会社の特許一覧
<>
  • 特開2019217571-ロボット制御システム 図000003
  • 特開2019217571-ロボット制御システム 図000004
  • 特開2019217571-ロボット制御システム 図000005
  • 特開2019217571-ロボット制御システム 図000006
  • 特開2019217571-ロボット制御システム 図000007
  • 特開2019217571-ロボット制御システム 図000008
  • 特開2019217571-ロボット制御システム 図000009
  • 特開2019217571-ロボット制御システム 図000010
  • 特開2019217571-ロボット制御システム 図000011
  • 特開2019217571-ロボット制御システム 図000012
  • 特開2019217571-ロボット制御システム 図000013
  • 特開2019217571-ロボット制御システム 図000014
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】特開2019-217571(P2019-217571A)
(43)【公開日】2019年12月26日
(54)【発明の名称】ロボット制御システム
(51)【国際特許分類】
   B25J 13/08 20060101AFI20191129BHJP
   G01B 11/00 20060101ALI20191129BHJP
   G06T 7/80 20170101ALI20191129BHJP
【FI】
   B25J13/08 A
   G01B11/00 H
   G06T7/80
【審査請求】未請求
【請求項の数】8
【出願形態】OL
【全頁数】26
(21)【出願番号】特願2018-114907(P2018-114907)
(22)【出願日】2018年6月15日
(71)【出願人】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】中塚 均
(72)【発明者】
【氏名】飯田 豊男
【テーマコード(参考)】
2F065
3C707
5L096
【Fターム(参考)】
2F065AA04
2F065AA37
2F065AA53
2F065BB15
2F065BB27
2F065DD19
2F065EE08
2F065EE11
2F065EE12
2F065FF01
2F065FF02
2F065FF04
2F065FF05
2F065FF09
2F065FF61
2F065FF65
2F065FF67
2F065FF70
2F065HH05
2F065HH06
2F065HH07
2F065JJ03
2F065JJ05
2F065NN20
2F065PP11
2F065PP25
2F065QQ17
2F065QQ21
2F065QQ25
2F065QQ38
2F065RR05
2F065RR06
2F065RR09
2F065TT02
2F065TT08
3C707BS10
3C707KT03
3C707KT06
3C707KT09
3C707MT01
5L096AA09
5L096BA05
5L096CA05
5L096CA17
5L096CA24
5L096DA01
5L096DA02
5L096FA12
5L096FA67
5L096FA69
5L096HA01
(57)【要約】
【課題】キャリブレーションを実行するための設定を容易化する。
【解決手段】ロボット制御システムは、撮像部により撮像された画像に基づいて、当該撮像部の視野内に存在する任意の対象物の三次元座標を計測する計測部と、計測された三次元座標とロボットの作用部の位置および姿勢との間の予め算出された対応関係に従って、ロボットの作用部を位置決めするための指令を生成する指令生成部と、対応関係を算出するためのキャリブレーションを実行するキャリブレーション実行部と、キャリブレーションにおいて、ロボットの作用部に関連付けられた基準物体を配置すべき領域であるキャリブレーション領域の設定を受付ける設定受付部とを含む。
【選択図】図1
【特許請求の範囲】
【請求項1】
ロボット制御システムであって、
ロボットの作用部を視野内に含むように配置された撮像部と、
前記撮像部により撮像された画像に基づいて、当該撮像部の視野内に存在する任意の対象物の三次元座標を計測する計測部と、
前記計測された三次元座標と前記ロボットの作用部の位置および姿勢との間の予め算出された対応関係に従って、前記ロボットの前記作用部を位置決めするための指令を生成する指令生成部と、
前記対応関係を算出するためのキャリブレーションを実行するキャリブレーション実行部と、
前記キャリブレーションにおいて、前記ロボットの作用部に関連付けられた基準物体を配置すべき領域であるキャリブレーション領域の設定を受付ける設定受付部とを備える、ロボット制御システム。
【請求項2】
前記設定受付部は、前記撮像部を基準として、設定されているキャリブレーション領域の範囲を示す、請求項1に記載のロボット制御システム。
【請求項3】
前記設定受付部は、前記撮像部の視野範囲を併せて表示する、請求項2に記載のロボット制御システム。
【請求項4】
前記キャリブレーション領域は、前記撮像部の光軸を基準とした直方体として設定される、請求項1〜3のいずれか1項に記載のロボット制御システム。
【請求項5】
前記キャリブレーション領域として設定される直方体の断面の大きさは、前記撮像部の視野と前記撮像部から前記キャリブレーション領域の端面までの距離とに応じて、決定される、請求項4に記載のロボット制御システム。
【請求項6】
前記設定受付部は、前記キャリブレーション領域の設定として、前記撮像部の光軸上の範囲設定を受付ける、請求項4または5に記載のロボット制御システム。
【請求項7】
前記キャリブレーション実行部は、
前記ロボットに指令を順次与えて、前記キャリブレーション領域内に前記基準物体を順次配置する配置制御部と、
前記基準物体が前記キャリブレーション領域内に順次配置されたときに取得される、前記基準物体の三次元座標と前記ロボットの作用部の位置および姿勢との組に基づいて、前記対応関係を算出する算出部とを含む、請求項1〜6のいずれか1項に記載のロボット制御システム。
【請求項8】
前記キャリブレーション実行部は、
前記キャリブレーション領域において前記基準物体を配置すべき複数の位置を決定する位置決定部と、
前記決定された複数の位置のうち一つと前記基準物体の現在位置との関係を示す位置表示部と、
前記基準物体が前記決定された複数の位置に順次配置されたときに取得される、前記基準物体の三次元座標と前記ロボットの作用部の位置および姿勢との組に基づいて、前記対応関係を算出する算出部とを含む、請求項1〜6のいずれか1項に記載のロボット制御システム。
【発明の詳細な説明】
【技術分野】
【0001】
本技術は、撮像部により撮像される画像に基づいて算出される三次元座標を利用してロボットを制御するためのロボット制御システムに関する。
【背景技術】
【0002】
従来から、三次元計測が可能なセンサとロボットとを組合せたシステムが知られている。このようなシステムにおいては、設定項目が多く、また、設定した内容を直感的には把握し難い場合がある。そこで、例えば、特開2011−112402号公報(特許文献1)は、設定された有効領域の立体形状を周囲との関係とともに簡単に表示できるようにして、3次元視覚センサの利便性を高める構成を開示する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2011−112402号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1に開示される構成は、ステレオ計測のための3次元座標系(計測座標系)とカメラ座標系との間のキャリブレーションについては考慮されているものの、ロボットを制御するための座標系についてのキャリブレーションは考慮されていない。
【0005】
実際には、撮像された画像により計測される三次元座標とロボットの位置および姿勢との関係を予めキャリブレーションしておく必要がある。このようなキャリブレーションを実行するための設定を容易化したいというニーズが存在する。
【課題を解決するための手段】
【0006】
本技術の一つの実施形態に従うロボット制御システムは、ロボットの作用部を視野内に含むように配置された撮像部と、撮像部により撮像された画像に基づいて、当該撮像部の視野内に存在する任意の対象物の三次元座標を計測する計測部と、計測された三次元座標とロボットの作用部の位置および姿勢との間の予め算出された対応関係に従って、ロボットの作用部を位置決めするための指令を生成する指令生成部と、対応関係を算出するためのキャリブレーションを実行するキャリブレーション実行部と、キャリブレーションにおいて、ロボットの作用部に関連付けられた基準物体を配置すべき領域であるキャリブレーション領域の設定を受付ける設定受付部とを含む。
【0007】
この開示によれば、設定受付部を介して設定されるキャリブレーション領域の範囲でキャリブレーションを実行できるので、キャリブレーションを効率化できる。
【0008】
上述の開示において、設定受付部は、撮像部を基準として、設定されているキャリブレーション領域の範囲を示すようにしてもよい。
【0009】
この開示によれば、撮像部を基準としてキャリブレーション領域が設定されるので、ユーザによるキャリブレーション領域の範囲の把握を容易化できる。
【0010】
上述の開示において、設定受付部は、撮像部の視野範囲を併せて表示するようにしてもよい。
【0011】
この開示によれば、撮像部の視野範囲に対して、キャリブレーション領域が設定されている範囲を一見して把握できる。
【0012】
上述の開示において、キャリブレーション領域は、撮像部の光軸を基準とした直方体として設定されるようにしてもよい。
【0013】
この開示によれば、基準物体を配置する位置を容易に決定できるとともに、光軸方向に移動した場合でも計測範囲外にならないように動作範囲を決定できる。
【0014】
上述の開示において、キャリブレーション領域として設定される直方体の断面の大きさは、撮像部の視野と撮像部からキャリブレーション領域の端面までの距離とに応じて、決定されるようにしてもよい。
【0015】
この開示によれば、撮像部からの距離に応じた最適なキャリブレーション領域を設定できる。
【0016】
上述の開示において、設定受付部は、キャリブレーション領域の設定として、撮像部の光軸上の範囲設定を受付けるようにしてもよい。
【0017】
この開示によれば、撮像部の光軸方向において実際に使用される領域のみをキャリブレーション領域として設定できる。
【0018】
上述の開示において、キャリブレーション実行部は、ロボットに指令を順次与えて、キャリブレーション領域内に基準物体を順次配置する配置制御部と、基準物体がキャリブレーション領域内に順次配置されたときに取得される、基準物体の三次元座標とロボットの作用部の位置および姿勢との組に基づいて、対応関係を算出する算出部とを含むようにしてもよい。
【0019】
この開示によれば、ユーザは、キャリブレーション領域を設定するだけで、キャリブレーションが実行されるので、専門知識などがないユーザであっても、ロボット制御システムを運用できる。
【0020】
上述の開示において、キャリブレーション実行部は、キャリブレーション領域において基準物体を配置すべき複数の位置を決定する位置決定部と、決定された複数の位置のうち一つと基準物体の現在位置との関係を示す位置表示部と、基準物体が決定された複数の位置に順次配置されたときに取得される、基準物体の三次元座標とロボットの作用部の位置および姿勢との組に基づいて、対応関係を算出する算出部とを含むようにしてもよい。
【0021】
この開示によれば、ユーザは、キャリブレーション領域を設定するとともに、位置表示部からの通知に従って基準物体を所定位置に順次配置するだけで、キャリブレーションが実行されるので、専門知識の乏しいユーザであっても、ロボット制御システムを運用できる。
【発明の効果】
【0022】
本技術によれば、撮像された画像により計測される三次元座標とロボットの位置および姿勢との関係を予めキャリブレーションする際に必要な設定を容易化できる。
【図面の簡単な説明】
【0023】
図1】本実施の形態に従うロボット制御システムの適用例を示す模式図である。
図2】本実施の形態に従うロボット制御システムの全体構成を示す模式図である。
図3】本実施の形態に従うロボット制御システムに含まれる3Dカメラの構成例を示す模式図である。
図4】本実施の形態に従うロボット制御システムに含まれる画像計測装置の構成例を示す模式図である。
図5】本実施の形態に従うロボット制御システムに含まれる制御装置の構成例を示す模式図である。
図6】本実施の形態に従うロボット制御システムに含まれるロボット制御装置の構成例を示す模式図である。
図7】本実施の形態に従うロボット制御システムにおけるカメラ・ロボットキャリブレーションの一側面を説明するための図である。
図8】本実施の形態に従うロボット制御システムが提供するユーザインターフェイス画面の一例を示す模式図である。
図9】本実施の形態に従うロボット制御システムにおけるカメラ・ロボットキャリブレーションの自動処理手順の一例を示すシーケンス図である。
図10】本実施の形態に従うロボット制御システムにおけるカメラ・ロボットキャリブレーションの自動処理において提供されるユーザインターフェイス画面の一例を示す模式図である。
図11】本実施の形態に従うロボット制御システムにおけるカメラ・ロボットキャリブレーションの手動処理手順の一例を示すシーケンス図である。
図12】本実施の形態に従うロボット制御システムにおけるカメラ・ロボットキャリブレーションの手動処理において提供されるユーザインターフェイス画面の一例を示す模式図である。
【発明を実施するための形態】
【0024】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【0025】
<A.適用例>
まず、本発明が適用される場面の一例について説明する。
【0026】
図1は、本実施の形態に従うロボット制御システム1の適用例を示す模式図である。図1を参照して、本実施の形態に従うロボット制御システム1は、ロボット2を制御する構成として、ロボット2の作用部8を視野内に含むように配置された撮像部50を含む。ロボット制御システム1は、撮像部50により撮像された画像に基づいて、撮像部50の視野内に存在する任意の対象物の三次元座標を計測する計測部52をさらに含む。計測部52により計測される三次元座標は、指令生成部54およびキャリブレーション実行部58へ出力される。計測部52により計測される三次元座標は、特定の対象物の三次元座標上の位置(各軸上の位置)および姿勢(各軸を中心とする回転角)を含み得る。
【0027】
指令生成部54は、ロボット2の作用部8を位置決めするための指令を生成する。具体的には、指令生成部54は、指定された目標位置と計測部52からの三次元座標とを比較して、ロボット2の作用部8の位置および姿勢との間の予め算出された対応関係(典型的には、キャリブレーションパラメータ56)に従って、指令を算出する。
【0028】
キャリブレーションパラメータ56は、キャリブレーション実行部58によって決定される。より具体的には、キャリブレーション実行部58は、計測部52からの三次元座標および設定受付部60からのキャリブレーションに用いられる空間領域(キャリブレーション領域)の設定に基づいて、キャリブレーションパラメータ56を算出するためのキャリブレーションを実行する。このキャリブレーション領域は、設定受付部60によってユーザから設定される。すなわち、設定受付部60は、キャリブレーションにおいて、ロボット2の作用部8に関連付けられた基準物体(一例として、基準プレート20を示す)を配置すべき領域であるキャリブレーション領域の設定を受付ける。キャリブレーション領域は、撮像部50の有効視野のうち任意の領域を設定可能である。
【0029】
このように、本実施の形態においては、撮像部50を基準とした任意のキャリブレーション領域を設定できるので、キャリブレーションパラメータ56を算出するためのキャリブレーションを効率的に実行できる。
【0030】
<B.ロボット制御システム1の全体構成>
まず、本実施の形態に従うロボット制御システム1の全体構成について説明する。
【0031】
図2は、本実施の形態に従うロボット制御システム1の全体構成を示す模式図である。図2を参照して、ロボット制御システム1は、ロボットの作用部を視野内に含むように配置された撮像部により撮像された画像に基づいて、撮像部の視野内に存在するロボットおよび任意の対象物の三次元座標を計測し、その計測した三次元座標に基づいてロボットを制御する。
【0032】
より具体的には、ロボット制御システム1は、ロボット2と、3Dカメラ10と、画像計測装置100と、制御装置200と、ロボット制御装置300とを含む。
【0033】
ロボット2は、ロボット制御装置300からの指令に従って、任意の位置の動作を行なう機構である。図2には、ロボット2の典型例として、多関節ロボットを例示するが、スカラロボットやパラレルロボットであってもよい。
【0034】
図2に示すロボット2は、1または複数のアーム4を有しており、1または複数のアーム4の先端(ロボット2の作用部に相当)には、ハンドピース6が装着されている。図2には、後述するようなキャリブレーション実行時の状態が模式的に描かれており、ハンドピース6には基準物体の一例として基準プレート20が装着されている。
【0035】
基準プレート20は、キャリブレーションにおいて、計測される三次元座標とロボット2の作用部の位置を示す位置情報との間の対応関係を決定するための基準物体である。基準プレート20の表面には、1または複数のマーカ22が描かれている。
【0036】
3Dカメラ10は、ロボット2の作用部(アーム4の先端およびハンドピース6)を視野内に含むように配置されており、所定周期毎あるいは所定イベント毎に視野内を撮像した画像を画像計測装置100へ出力する。
【0037】
本実施の形態に従うロボット制御システム1においては、ロボット2の作用部を含む各部分の三次元座標を光学的に計測できる構成を採用する。
【0038】
一例として、構造化照明と称される手法を用いて三次元計測を実現するようにしてもよい。構造化照明の手法では、計測光を被写体に照射するともに、計測光が投影された状態で被写体を撮像することで得られる画像に基づいて、被写体までの距離を計測する。このような構造化照明の手法としては、空間コード化法、位相シフト法、光切断法などを用いることができる。このような構造化照明を採用した場合には、3Dカメラ10は、計測光を照射する投光部と、計測光が投影された状態で被写体を撮像する撮像部とを有することになる。
【0039】
別の例として、多視点カメラを用いて三次元計測を実現するようにしてもよい。この場合には、3Dカメラ10は、視点が互いに異なるように配置された複数のカメラを含む。典型的には、3Dカメラ10は、一対のカメラからなるステレオカメラである。
【0040】
画像計測装置100は、3Dカメラ10により撮像された画像に基づいて、3Dカメラ10の視野内に存在する任意の対象物の三次元画像を計測する。
【0041】
例えば、構造化照明を採用する場合には、画像計測装置100は、3Dカメラ10から出力される画像に含まれる濃淡パターンの位置やズレなどを解析することで、視野内の被写体についての三次元座標(あるいは、三次元形状を示す座標群)を算出する。また、3Dカメラ10として多視点カメラを採用する場合には、画像計測装置100は、画像間のマッチングにより算出される各注目位置の視差に基づいて、視野内の被写体についての三次元座標(あるいは、三次元形状を示す座標群)を算出する。
【0042】
画像計測装置100は、さらに、算出した三次元座標群のうち、特定の対象物の三次元座標を探索することもできる。例えば、画像計測装置100は、基準プレート20に描かれるマーカ22をパターンマッチングにより探索し、各マーカ22の三次元座標を出力できる。これらのマーカ22の三次元座標に基づいて、キャリブレーションが実行される。
【0043】
制御装置200は、典型的には、PLC(プログラマブルコントローラ)などで構成され、画像計測装置100により計測された三次元座標に基づいて、キャリブレーションを実行したり、ロボット制御装置300への指令を与えたりする。
【0044】
ロボット制御装置300は、制御装置200からの指令に従って、ロボット2を制御する。より具体的には、ロボット制御装置300は、ロボット2の各軸を駆動するサーボモータなどを駆動する。
【0045】
<C.ロボット制御システム1を構成する各装置の構成例>
次に、本実施の形態に従うロボット制御システム1を構成する各装置の構成例について説明する。
【0046】
(c1:3Dカメラ10)
図3は、本実施の形態に従うロボット制御システム1に含まれる3Dカメラ10の構成例を示す模式図である。図3を参照して、3Dカメラ10は、処理部11と、投光部12と、撮像部13と、表示部14と、記憶部15とを含む。
【0047】
処理部11は、3Dカメラ10における全体処理を司る。処理部11は、典型的には、プロセッサと、プロセッサで実行される命令コードを格納するストレージと、命令コードを展開するメモリとを含む。この場合、処理部11において、プロセッサが命令コードをメモリ上に展開して実行することで各種処理を実現する。処理部11の全部または一部を専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)など)を用いて実装してもよい。
【0048】
表示部14は、3Dカメラ10において取得あるいは算出された各種情報を外部へ通知する。
【0049】
記憶部15は、撮像部13により撮像された画像や予め設定されるキャリブレーションパラメータなどを格納する。
【0050】
通信インターフェイス(I/F)部16は、3Dカメラ10と画像計測装置100との間のデータの遣り取りを担当する。
【0051】
(c2:画像計測装置100)
図4は、本実施の形態に従うロボット制御システム1に含まれる画像計測装置100の構成例を示す模式図である。画像計測装置100は、典型的には、汎用コンピュータを用いて実現される。図4を参照して、画像計測装置100は、プロセッサ102と、メインメモリ104と、ストレージ106と、入力部108と、表示部110と、光学ドライブ112と、通信インターフェイス(I/F)部114とを含む。これらのコンポーネントは、プロセッサバス116を介して接続されている。
【0052】
プロセッサ102は、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)などで構成され、ストレージ106に格納されたプログラム(一例として、OS(Operating System)1060および三次元計測プログラム1062)を読出して、メインメモリ104に展開して実行することで、後述するような各種処理を実現する。
【0053】
メインメモリ104は、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などの揮発性記憶装置などで構成される。ストレージ106は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)などの不揮発性記憶装置などで構成される。
【0054】
ストレージ106には、基本的な機能を実現するためのOS1060に加えて、画像計測装置100としての機能を提供するための三次元計測プログラム1062、マーカ22やワークなどの物体認識に用いられるモデルデータ1064、および、設定受付プログラム1066が格納される。
【0055】
設定受付プログラム1066は、後述するようなカメラ・ロボットキャリブレーションにおいて、ロボット2の作用部に関連付けられた基準物体を配置すべき領域であるキャリブレーション領域の設定を受付ける処理を実行する。
【0056】
入力部108は、キーボードやマウスなどで構成され、ユーザ操作を受付ける。表示部110は、ディスプレイ、各種インジケータ、プリンタなどで構成され、プロセッサ102からの処理結果などを出力する。
【0057】
通信インターフェイス部114は、3Dカメラ10と画像計測装置100との間のデータの遣り取りを担当するとともに、画像計測装置100と制御装置200との間のデータの遣り取りを担当する。
【0058】
画像計測装置100は、光学ドライブ112を有しており、コンピュータ読取可能なプログラムを非一過的に格納する記録媒体113(例えば、DVD(Digital Versatile Disc)などの光学記録媒体)から、その中に格納されたプログラムが読取られてストレージ106などにインストールされる。
【0059】
画像計測装置100で実行される三次元計測プログラム1062および設定受付プログラム1066などは、コンピュータ読取可能な記録媒体113を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形でインストールするようにしてもよい。また、本実施の形態に従う三次元計測プログラム1062および設定受付プログラム1066が提供する機能は、OSが提供するモジュールの一部を利用する形で実現される場合もある。
【0060】
図4には、プロセッサ102がプログラムを実行することで、画像計測装置100として必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASICまたはFPGAなど)を用いて実装してもよい。
【0061】
(c3:制御装置200)
図5は、本実施の形態に従うロボット制御システム1に含まれる制御装置200の構成例を示す模式図である。制御装置200は、典型的には、PLC(プログラマブルコントローラ)を用いて実現される。図5を参照して、制御装置200は、プロセッサ202と、メインメモリ204と、ストレージ206と、通信インターフェイス(I/F)部208と、フィールドネットワークコントローラ210,212と、USB(Universal Serial Bus)コントローラ214と、メモリカードインターフェイス216と、ローカルバスコントローラ220とを含む。これらのコンポーネントは、プロセッサバス230を介して接続されている。
【0062】
プロセッサ202は、制御演算などを実行する演算処理部に相当し、CPUやGPUなどで構成される。具体的には、プロセッサ202は、ストレージ206に格納されたプログラムを読出して、メインメモリ204に展開して実行することで、制御対象に応じた制御、および、後述するような各種処理を実現する。
【0063】
メインメモリ204は、DRAMやSRAMなどの揮発性記憶装置などで構成される。ストレージ206は、記憶部に相当し、例えば、HDDやSSDなどの不揮発性記憶装置などで構成される。ストレージ206には、基本的な機能を実現するためのシステムプログラムに加えて、キャリブレーションパラメータ2060、指令生成プログラム2062、および、キャリブレーション実行プログラム2064などが格納される。
【0064】
キャリブレーションパラメータ2060は、計測された三次元座標とロボット2の作用部の位置および姿勢との間の予め算出された対応関係に相当する。
【0065】
指令生成プログラム2062は、計測された三次元座標とロボット2の作用部の位置および姿勢との間の予め算出された対応関係(キャリブレーションパラメータ2060)に従って、ロボット2の作用部を位置決めするための指令を生成する処理を実行する。
【0066】
キャリブレーション実行プログラム2064は、計測された三次元座標とロボット2の作用部の位置および姿勢との間の予め算出された対応関係(キャリブレーションパラメータ2060)を算出するためのキャリブレーション(後述する、カメラ・ロボットキャリブレーション)を実行する。
【0067】
通信インターフェイス部208は、画像計測装置100と制御装置200との間のデータの遣り取りを担当する。フィールドネットワークコントローラ210,212は、フィールドネットワークを介して、ロボット制御装置300(図2参照)などの任意のデバイスとの間でデータを遣り取りする。図5には、2つのフィールドネットワークコントローラ210,212を図示するが、単一のフィールドネットワークコントローラを採用してもよい。USBコントローラ214は、USB接続を介して、任意の外部装置などとの間でデータを遣り取りする。
【0068】
メモリカードインターフェイス216は、着脱可能な記録媒体の一例であるメモリカード218を受付ける。メモリカードインターフェイス216は、メモリカード218に対してデータを書込み、メモリカード218から各種データ(ログやトレースデータなど)を読出すことが可能になっている。
【0069】
ローカルバスコントローラ220は、ローカルバス222を介して、任意のローカルIOユニットとの間でデータを遣り取りする。
【0070】
図5には、プロセッサ202がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASICまたはFPGAなど)を用いて実装してもよい。あるいは、制御装置200の主要部を、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のOSを並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。
【0071】
(c4:ロボット制御装置)
図6は、本実施の形態に従うロボット制御システム1に含まれるロボット制御装置300の構成例を示す模式図である。ロボット制御装置300は、制御装置200からの指令(典型的には、目標位置の三次元座標、姿勢(向き)、および移動速度など)に従って、ロボット2の各軸の動作パターンなどを計算する。
【0072】
図6を参照して、ロボット制御装置300は、プロセッサ302と、メインメモリ304と、ストレージ306と、通信インターフェイス(I/F)部308と、ドライブコントローラ310とを含む。これらのコンポーネントは、プロセッサバス312を介して接続されている。ロボット制御装置300は、さらに、ドライブコントローラ310に接続された1または複数のサーボドライバ320−1,320−2,320−3,・・・,320−n(以下、「サーボドライバ320」とも総称する。)を含む。
【0073】
プロセッサ302は、制御演算などを実行する演算処理部に相当し、CPUやGPUなどで構成される。具体的には、プロセッサ302は、ストレージ306に格納されたプログラムを読出して、メインメモリ304に展開して実行することで各種処理を実現する。
【0074】
メインメモリ304は、DRAMやSRAMなどの揮発性記憶装置などで構成される。ストレージ306は、記憶部に相当し、例えば、HDDやSSDなどの不揮発性記憶装置などで構成される。ストレージ306には、ロボット制御に係るシステムプログラムなどが格納される。
【0075】
通信インターフェイス部308は、制御装置200とロボット制御装置300との間のデータの遣り取りを担当する。
【0076】
ドライブコントローラ310は、ロボット2の各軸を動作させるモータ330−1,330−2,330−3,・・・,330−n(以下、「モータ330」とも総称する。)を駆動するためのサーボドライバ320の各々を制御する。サーボドライバ320は、ドライブコントローラ310からの指令に従って、接続されているモータ330を、指定された方向のトルク、加速度、回転速度で駆動する。
【0077】
図6には、プロセッサ302がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASICまたはFPGAなど)を用いて実装してもよい。あるいは、ロボット制御装置300の主要部を、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のOSを並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。
【0078】
<D.キャリブレーション>
次に、本実施の形態に従うロボット制御システム1におけるキャリブレーションについて説明する。
【0079】
(d1:概要)
ロボット制御システム1においては、複数種類のキャリブレーションを実行する必要がある。
【0080】
複数種類のキャリブレーションのうち一つは、3Dカメラ10による視野を基準に規定される座標系(以下、「カメラ座標系」とも称す。)のキャリブレーションである。このカメラ座標系のキャリブレーションは、既知のパターンが描かれた基準物体を複数の既知の位置に順次配置するとともに、画像計測装置100により計測される位置および姿勢に対応する位置および姿勢を取得する。そして、基準物体の位置および姿勢と三次元座標系上の位置および姿勢との対応関係(典型的には、変換式を規定するキャリブレーションパラメータ)が決定される。このキャリブレーションパラメータを用いることで、カメラ座標系に配置された任意の被写体の三次元座標を正確に計測できる。
【0081】
ここで、三次元座標系上の位置は、三次元座標系上において各軸の値によって規定される座標を意味し、三次元座標系上の姿勢は、三次元座標系上に各軸を基準とする回転方向によって規定される。すなわち、三次元座標系上の位置は、3次元の値であり、三次元座標系上においていずれの座標に存在するのかを示す情報であり、三次元座標系上の姿勢は、3次元の値であり、三次元座標系上においていずれの向きを向いているのかを示す情報である。
【0082】
複数種類のキャリブレーションのうち別の一つは、ロボット2のベース位置を基準に規定される座標系(以下、「ロボット基準座標系」とも称す。)のキャリブレーションである。このロボット基準座標系のキャリブレーションは、制御装置200から指令として目標位置および目標姿勢の三次元座標をロボット制御装置300に与えた場合に、ロボット2の先端が指定された目標位置に移動することを保証する処理である。ロボット基準座標系のキャリブレーションにより、ロボット制御装置300におけるロボット2のモータ330を駆動するための演算式などが修正される。
【0083】
本実施の形態に従うロボット制御システム1は、カメラ座標系とロボット基準座標系との間の対応関係を決定するためのキャリブレーション(「カメラ・ロボットキャリブレーション」とも称す。)を実行可能になっている。
【0084】
以下の説明においては、主として、カメラ・ロボットキャリブレーションについて説明する。
【0085】
図7は、本実施の形態に従うロボット制御システム1におけるカメラ・ロボットキャリブレーションの一側面を説明するための図である。図7を参照して、ロボット制御システム1においては、3Dカメラ10により撮像された画像に基づいて三次元座標を計測し、その計測値に基づいてロボット2を制御する。そのため、ロボット制御システム1におけるカメラ・ロボットキャリブレーションは、3Dカメラ10の視野内で行なうことが効率的である。さらに、3Dカメラ10の視野内であっても、対象のアプリケーションによっては、視野内のすべてを利用するのではなく、一部の空間領域のみを使用する場合もある。このような場合には、実際に使用される空間領域(すなわち、ロボット2の作用部が存在し得る空間領域)についてカメラ・ロボットキャリブレーションを実行すればよい。
【0086】
本実施の形態に従うロボット制御システム1においては、カメラ・ロボットキャリブレーションに用いられる空間領域(以下、「キャリブレーション領域」とも称す。)をユーザが任意に設定できるようになっている。ユーザが任意に設定したキャリブレーション領域に従って、カメラ・ロボットキャリブレーションが実行される。
【0087】
(d2:キャリブレーション領域の設定)
図8は、本実施の形態に従うロボット制御システム1が提供するユーザインターフェイス画面の一例を示す模式図である。本実施の形態においては、一例として、画像計測装置100の設定受付プログラム1066によりキャリブレーション領域418の設定が受付けられるようになっており、図8に示すユーザインターフェイス画面400は、典型的には、画像計測装置100の表示部110(図4)上に表示される。但し、画像計測装置100に限定されることなく、制御装置200に接続される表示装置(不図示)上に表示されるようにしてもよい。画像計測装置100および/または制御装置200に設定が与えられるのであれば、どのような表示および入力の形態であってもよい。
【0088】
本実施の形態においては、3Dカメラ10は、有効視野の断面が矩形になるように光学設計されているとする。そのため、図8に示すユーザインターフェイス画面400においては、3Dカメラ10の有効視野を、断面の矩形に対応する2つの直交する方向(便宜上、「X軸方向」および「Y軸方向」と称する。)により規定している。すなわち、ユーザインターフェイス画面400は、X断面設定オブジェクト401と、Y断面設定オブジェクト402とを含む。
【0089】
X断面設定オブジェクト401およびY断面設定オブジェクト402は、有効視野表示403および404をそれぞれ有している。有効視野表示403および404は、3Dカメラ10により三次元座標を計測できる範囲を示す。すなわち、撮像部である3Dカメラ10の視野範囲416が併せて表示される。
【0090】
ユーザは、ユーザインターフェイス画面400上で、実際にアプリケーションで利用される領域、すなわちキャリブレーション領域418を設定する。
【0091】
より具体的には、X断面設定オブジェクト401およびY断面設定オブジェクト402に両方にまたがるように、計測最下面設定バー410および計測最上面設定バー411が提供されている。ユーザは、計測最下面設定バー410および計測最上面設定バー411を操作して、キャリブレーション領域418の最上面および最下面を設定する。最上面および最下面は、3Dカメラ10の光軸AX上に沿った有効範囲(Z軸上の有効範囲)を設定するものである。すなわち、キャリブレーション領域418の設定として、撮像部である3Dカメラ10の光軸AX上の範囲設定が可能になっている。
【0092】
典型的には、計測最下面設定バー410により設定される最下面は、ロボット2が配置される床面などを考慮して設定される。また、計測最上面設定バー411により設定される最上面は、ロボット2がワークを把持して搬送する範囲などを考慮して設定される。
【0093】
X断面設定オブジェクト401には、X軸方向幅設定バー412および413が提供されている。ユーザは、X軸方向幅設定バー412および413を操作して、キャリブレーション領域418のX軸断面における幅を設定する。すなわち、X軸方向幅設定バー412および413は、3Dカメラ10の光軸AXに直交する方向に沿った有効範囲(X軸上の有効範囲)を設定するものである。
【0094】
同様に、Y断面設定オブジェクト402には、Y軸方向幅設定バー414および415が提供されている。ユーザは、Y軸方向幅設定バー414および415を操作して、キャリブレーション領域418のY軸断面における幅を設定する。すなわち、Y軸方向幅設定バー414および415は、3Dカメラ10の光軸AXに直交する方向に沿った有効範囲(Y軸上の有効範囲)を設定するものである。
【0095】
図8に示すように、ユーザは、ユーザインターフェイス画面400において、任意のキャリブレーション領域418を設定できる。すなわち、ロボット制御システム1は、カメラ・ロボットキャリブレーションにおいて、ロボット2の作用部に関連付けられた基準プレート20を配置すべき領域であるキャリブレーション領域418の設定を受付ける設定受付機能を有している。
【0096】
設定されたキャリブレーション領域418に基づいて、カメラ・ロボットキャリブレーションが実行される。すなわち、キャリブレーション領域418の高さ方向の範囲は、計測最下面設定バー410および計測最上面設定バー411により規定される。また、キャリブレーション領域418の断面は、X軸方向幅設定バー412および413、ならびに、Y軸方向幅設定バー414および415により規定される。その結果、キャリブレーション領域418は、撮像部である3Dカメラ10の光軸AXを基準とした直方体(立方体を含む)として設定されることになる。このとき、キャリブレーション領域418の断面幅は、3Dカメラ10からの視野範囲416に応じて定まることになる。すなわち、キャリブレーション領域418として設定される直方体の断面の大きさは、3Dカメラ10の視野範囲416と3Dカメラ10からキャリブレーション領域418の端面までの距離とに応じて決定されることになる。
【0097】
なお、必ずしもキャリブレーション領域418を直方体として設定する必要はなく、3Dカメラ10の有効視野の形状に応じて、3Dカメラ10側ほど断面が小さくなるような形状(例えば、四角錐の頂点部を切り落としたような形状)を設定してもよい。但し、現実のアプリケーションを想定すると、直方体として設定することが計測安定性などの観点から好ましい。
【0098】
以上のような操作によって設定されたキャリブレーション領域418に従って、後述するようなカメラ・ロボットキャリブレーションが実行される。なお、キャリブレーション領域418は、対象のアプリケーションに応じて任意に設定される。例えば、対象のワークの形状などに応じて設定してもよい。具体的には、配置されたワークを把持して指定された位置に搬送する、ピックアンドプレイスなどのアプリケーションにおいては、ワークが入ったコンテナの形状などに基づいて、キャリブレーション領域418を設定してもよい。
【0099】
このように、本実施の形態においては、ユーザは、ユーザインターフェイス画面400上で、キャリブレーション領域418(すなわち、三次元座標の計測が必要な領域)を設定する。典型的には、ユーザインターフェイス画面400内に表示される各設定バーをマウス操作などにより設定する。
【0100】
すると、画像計測装置100および/または制御装置200は、設定されたキャリブレーション領域418に基づいて、基準プレート20(図2)の相対移動位置をキャリブレーション領域418に対して過不足ないように決定する。その後、ユーザは、基準プレート20を3Dカメラ10の視野範囲416の中心に配置して、カメラ・ロボットキャリブレーションの実行を指示することになる。これにより、ロボット2に指令が与えられて、カメラ・ロボットキャリブレーションが実行される。
【0101】
(d3:カメラ・ロボットキャリブレーションの概要)
ここで、カメラ・ロボットキャリブレーションの概略について説明する。カメラ・ロボットキャリブレーションは、典型的には、カメラ座標系上の位置および姿勢とロボット基準座標系上の位置および姿勢との間を相互変換するための行列の係数(パラメータ)を算出する処理を含む。
【0102】
ここで、ロボット2の先端にはハンドピース6が装着されており、ハンドピース6の位置を規定する座標系(以下、「ロボット先端座標系」とも称す。)を導入する。さらに、ハンドピース6に装着される基準プレート20上のマーカ22の位置を規定する座標系(以下、「マーカ座標系」とも称す。)を導入する。
【0103】
ここで、3Dカメラ10のカメラ座標系とマーカ座標系との関係を示す行列をAとする。この行列Aは、3Dカメラ10によりマーカ22を認識することで推定できる。また、ロボット先端座標系とロボット基準座標系との関係を示す行列をBとする。この行列Bは、制御装置200からの指令に相当する。そして、以下の関係を満たす、行列Xおよび行列Zが推定される。
【0104】
AX=ZB
推定された行列Xおよび行列Zを用いることで、カメラ座標系での位置および姿勢をロボット基準座標系上の位置および姿勢に変換する計算式を得る。
【0105】
すなわち、カメラ・ロボットキャリブレーションにおいては、各位置における、画像計測装置100による計測値および制御装置200からの指令は既知であり、これらの値の組に基づいて、行列Xおよび行列Zが推定される。
【0106】
このような行列の推定には、カメラ座標系およびロボット基準座標系をそれぞれ基準とした三次元座標のデータセット(例えば、10〜20点)が必要となる。そのため、表面に1または複数のマーカ22が描かれた基準プレート20をロボット2の先端に装着して、以下のa)およびb)の操作を10〜20回繰返す。
【0107】
a)マーカ22が3Dカメラ10の視野内に含まれるように、ロボット2の先端位置を所定位置に配置して、そのときのマーカ22のロボット基準座標系上の位置および姿勢(ロボット2の先端位置および向き)を取得する
b)a)の状態で、3Dカメラ10による撮像を行なうことで、マーカ22のカメラ座標系上の位置および姿勢を取得する
a)およびb)の操作を繰返すことで取得された位置および姿勢の組(10〜20個のデータセット)を用いて、上述したような行列を推定する。推定された行例を用いることで、カメラ・ロボットキャリブレーションにおけるロボット2と3Dカメラ10との位置関係に基づく、任意の被写体のロボット基準座標系での位置および姿勢を算出できる。
【0108】
<E.カメラ・ロボットキャリブレーション(自動)>
次に、本実施の形態に従うロボット制御システム1におけるカメラ・ロボットキャリブレーションを自動的に実行する場合の処理例について説明する。
【0109】
図9は、本実施の形態に従うロボット制御システム1におけるカメラ・ロボットキャリブレーションの自動処理手順の一例を示すシーケンス図である。図9に示すように、カメラ・ロボットキャリブレーションの自動処理は、主として、画像計測装置100および制御装置200によって実行される。
【0110】
まず、画像計測装置100は、カメラ・ロボットキャリブレーションの実行が指示されると、キャリブレーション領域の設定を受付けるためのユーザインターフェイス画面400を表示部110に表示する(シーケンスSQ100)。ユーザは、マウスといった入力部108を操作して、ユーザインターフェイス画面400上でキャリブレーション領域を設定する(シーケンスSQ102)。画像計測装置100は、シーケンスSQ102においてユーザが設定したキャリブレーション領域を受付ける(シーケンスSQ104)。
【0111】
続いて、画像計測装置100は、3Dカメラ10により撮像された画像に基づいて、3Dカメラ10の視野内に基準プレート20が存在しているか否かを判断する(シーケンスSQ106)。
【0112】
3Dカメラ10の視野内に基準プレート20が存在していない場合(シーケンスSQ106においてNO)には、画像計測装置100は、ユーザに対して、ティーチングペンダントなどでロボット2を操作して、基準プレート20を3Dカメラ10の視野内に配置するように通知する(シーケンスSQ108)。そして、シーケンスSQ106の処理が繰返される。
【0113】
3Dカメラ10の視野内に基準プレート20が存在している場合(シーケンスSQ106においてYES)には、画像計測装置100は、ユーザ操作を受けて(シーケンスSQ110)、シーケンスSQ104において受付けられたキャリブレーション領域の情報とともに、カメラ・ロボットキャリブレーションの開始指令を制御装置200へ送信する(シーケンスSQ112)。キャリブレーション領域の情報は、キャリブレーション領域の各頂点の位置を示すカメラ座標系上の位置(直方体であれば8個の位置)を含む。
【0114】
制御装置200は、まず、カメラ座標系において規定されたキャリブレーション領域に対応する、ロボット基準座標系上の位置を取得する(シーケンスSQ200〜SQ206)。
【0115】
具体的には、制御装置200は、画像計測装置100から取得したキャリブレーション領域の各頂点を示すカメラ座標系上の位置のうち、1つの位置を選択する(シーケンスSQ200)。画像計測装置100は、3Dカメラ10により撮像された画像から計測された、基準プレート20上のマーカ22のカメラ座標系上の位置を取得して制御装置200へ与える(シーケンスSQ120)。制御装置200は、シーケンスSQ200において選択した位置と、基準プレート20上のマーカ22のカメラ座標系上の位置との差に基づいて、基準プレート20上のマーカ22を選択した位置に配置するための指令(ロボット基準座標系上の位置)を算出し(シーケンスSQ202)、算出した指令をロボット制御装置300へ与える(シーケンスSQ204)。
【0116】
シーケンスSQ120,SQ202,SQ204の処理(図9の※1の処理)は、シーケンスSQ200において選択した位置と、基準プレート20上のマーカ22のカメラ座標系上の位置とが実質的に一致するまで繰返される。そして、シーケンスSQ200において選択した位置と、基準プレート20上のマーカ22のカメラ座標系上の位置とが実質的に一致すると、制御装置200は、当該一致した時点の指令、すなわちロボット基準座標系上の位置を、キャリブレーション領域の1つの頂点に対応する位置として格納する(シーケンスSQ206)。
【0117】
シーケンスSQ200,SQ120,SQ202,SQ204,SQ206の処理(図9の※2の処理)は、画像計測装置100から取得したキャリブレーション領域の頂点の数だけ繰返される。
【0118】
以上の処理によって、キャリブレーション領域の各頂点に対応するロボット基準座標系上の位置の組(直方体であれば8個の位置)が取得される。なお、必要に応じて、キャリブレーション領域の各頂点に対応するロボット基準座標系上の姿勢についても取得される。
【0119】
続いて、制御装置200は、シーケンスSQ206において取得したロボット基準座標系上の位置の組に基づいて、基準プレート20を配置すべき位置の組を決定する(シーケンスSQ208)。シーケンスSQ208においては、ロボット基準座標系上の複数の位置が決定される。制御装置200は、基準プレート20を配置すべき位置の組に加えて、基準プレート20を移動させる軌跡などを決定してもよい。
【0120】
基準プレート20を配置すべき位置の組は、例えば、キャリブレーション領域の頂点間を均等に所定数に分割することで決定してもよい。あるいは、均等ではなく、3Dカメラ10からの距離が遠い領域ほど、より多くの位置を設定するようにしてもよい。
【0121】
上述したように、カメラ・ロボットキャリブレーションにおいては、10〜20個のデータセットが必要となるので、シーケンスSQ208においても、10〜20個の位置を決定することが好ましい。
【0122】
そして、制御装置200は、シーケンスSQ208において決定した基準プレート20を配置すべき複数の位置のうち、1つの位置を選択する(シーケンスSQ210)。そして、制御装置200は、選択した位置(ロボット基準座標系上の位置)への基準プレート20の配置を指示する指令をロボット制御装置300へ与える(シーケンスSQ212)。制御装置200によって実行されるシーケンスSQ210,SQ212の処理は、ロボット2に指令を順次与えて、キャリブレーション領域内に基準プレート20(基準物体)を順次配置する配置制御機能に相当する。
【0123】
ロボット2が指定された位置に基準プレート20を配置すると、画像計測装置100は、3Dカメラ10により撮像された画像から計測された、基準プレート20上のマーカ22のカメラ座標系上の位置を取得して制御装置200へ与える(シーケンスSQ122)。
【0124】
制御装置200は、現在配置されている基準プレート20の位置を示すロボット基準座標系上の位置(および姿勢)と、3Dカメラ10が撮像した画像により計測されたカメラ座標系上の位置(および姿勢)とを対応付けて格納する(シーケンスSQ214)。
【0125】
シーケンスSQ210,SQ122,SQ212,SQ214の処理(図9の※3の処理)は、シーケンスSQ210において決定された基準プレート20を配置すべき位置の数だけ繰返される。
【0126】
以上の処理によって、カメラ・ロボットキャリブレーションに必要な、カメラ座標系上の位置とロボット基準座標系上の位置との対応関係を示すデータセットを取得できる。最終的に、制御装置200は、取得したデータセットに基づいて、所定の演算処理を実行することで、カメラ座標系とロボット基準座標系との間の対応関係を規定する行列を推定する(シーケンスSQ216)。この推定された行列がカメラ・ロボットキャリブレーションの結果として格納される。すなわち、制御装置200は、基準プレート20(基準物体)がキャリブレーション領域内に順次配置されたときに取得される、基準プレート20の三次元座標とロボット2の作用部の位置および姿勢との組に基づいて、キャリブレーションパラメータ(対応関係)を算出する。
【0127】
以上のような処理により、カメラ・ロボットキャリブレーションの実行が完了する。
図10は、本実施の形態に従うロボット制御システム1におけるカメラ・ロボットキャリブレーションの自動処理において提供されるユーザインターフェイス画面の一例を示す模式図である。図10に示されるユーザインターフェイス画面420は、3Dカメラ10による撮像により得られる基準プレート20についての三次元計測結果、および、3Dカメラ10による撮像により得られる基準プレート20についての二次元画像を同時に表示する。さらに、ユーザインターフェイス画面420は、ユーザが予め設定したキャリブレーション領域および基準プレート20の高さを表示する。
【0128】
具体的には、ユーザインターフェイス画面420においては、3Dカメラ10により撮像された画像に対して、予め設定されたキャリブレーション領域を示す有効領域枠422が表示される。ユーザインターフェイス画面420は、高さ表示バー424を含んでいる。高さ表示バー424は、Z軸の計測可能範囲を表示するものである。なお、初期設定として、3Dカメラ10とロボット2のベースまでの距離が入力されているとする。そして、画像計測装置100により計測された基準プレート20の高さ方向の位置を示すインジケータ426が高さ表示バー424に対応付けて表示される。
【0129】
図10(A)および図10(B)に示すように、基準プレート20の高さに応じて、キャリブレーション領域の断面の大きさは異なるので、ユーザインターフェイス画面420においても有効領域枠422の大きさは、基準プレート20の高さに応じて変化することになる。
【0130】
ユーザは、ユーザインターフェイス画面420を参照して、基準プレート20が設定したキャリブレーション領域内に存在しない場合には、ティーチングペンダントなどを操作して、基準プレート20がキャリブレーション領域内に配置されるように調整する。
【0131】
図10に示すようなユーザインターフェイス画面420を参照して、ユーザが初期設定を完了すると、上述したように、設定されたキャリブレーション領域に応じて、ロボット2が移動すべき範囲が自動的に決定される。このとき、3Dカメラ10により撮像された二次元画像および三次元計測結果をフィードバック情報として利用して、ロボット2に対する移動量の指令などを逐次決定する。
【0132】
そして、決定されたロボット2の移動範囲の上限および下限からそれぞれ均等に移動ステップ量が決定される。そして、決定されたステップ量ずつ基準プレート20を移動させつつ、二次元画像の取得および三次元計測を行なうことで、カメラ座標系上の位置とロボット基準座標系上の位置および姿勢との対応関係を取得する。そして、取得したカメラ座標系上の位置とロボット基準座標系上の位置および姿勢との相関関係に基づいて、カメラ・ロボットキャリブレーションを実行して、必要なパラメータを算出する。
【0133】
<F.カメラ・ロボットキャリブレーション(手動)>
次に、本実施の形態に従うロボット制御システム1におけるカメラ・ロボットキャリブレーションを手動で実行する場合の処理例について説明する。
【0134】
図11は、本実施の形態に従うロボット制御システム1におけるカメラ・ロボットキャリブレーションの手動処理手順の一例を示すシーケンス図である。図11に示すように、カメラ・ロボットキャリブレーションの手動処理は、主として、画像計測装置100および制御装置200によって実行される。
【0135】
まず、画像計測装置100は、カメラ・ロボットキャリブレーションの実行が指示されると、キャリブレーション領域の設定を受付けるためのユーザインターフェイス画面400を表示部110に表示する(シーケンスSQ150)。ユーザは、マウスといった入力部108を操作して、ユーザインターフェイス画面400上でキャリブレーション領域を設定する(シーケンスSQ152)。画像計測装置100は、シーケンスSQ152においてユーザが設定したキャリブレーション領域を受付ける(シーケンスSQ154)。
【0136】
続いて、画像計測装置100は、設定されたキャリブレーション領域に基づいて、基準プレート20を配置すべき位置の組を決定する(シーケンスSQ156)。すなわち、画像計測装置100は、キャリブレーション実行機能として、キャリブレーション領域において基準プレート20(基準物体)を配置すべき複数の位置を決定する位置決定機能を有している。シーケンスSQ156においては、カメラ座標系上の複数の位置が決定される。制御装置200は、基準プレート20を配置すべき位置の組に加えて、基準プレート20を移動させる軌跡などを決定してもよい。
【0137】
基準プレート20を配置すべき位置の組は、例えば、キャリブレーション領域の頂点間を均等に所定数に分割することで決定してもよい。あるいは、均等ではなく、3Dカメラ10からの距離が遠い領域ほど、より多くの位置を設定するようにしてもよい。
【0138】
上述したように、カメラ・ロボットキャリブレーションにおいては、10〜20個のデータセットが必要となるので、シーケンスSQ156においても、10〜20個の位置を決定することが好ましい。
【0139】
続いて、画像計測装置100は、シーケンスSQ156において決定した基準プレート20を配置すべき複数の位置のうち、1つの位置を目標位置に選択する(シーケンスSQ158)。そして、画像計測装置100は、3Dカメラ10により撮像された画像に基づいて、基準プレート20上のマーカ22のカメラ座標系上の現在位置を取得し(シーケンスSQ160)、選択されている目標位置と取得した現在位置との差に基づいて、基準プレート20が目標位置に配置されているか否かを判断する(シーケンスSQ162)。
【0140】
基準プレート20が目標位置に配置されていない場合(シーケンスSQ162においてNO)には、画像計測装置100は、ユーザに基準プレート20を目標位置に配置するための情報を通知する(シーケンスSQ164)。ユーザは、この通知を参照して、ティーチングペンダントなどを操作して、基準プレート20が目標位置に配置されるように、ロボット2の位置および姿勢を調整する。そして、シーケンスSQ160以下の処理が繰返される。
【0141】
これに対して、基準プレート20が目標位置に配置されている場合(シーケンスSQ162においてYES)には、画像計測装置100は、ユーザに対して基準プレート20が目標位置に配置されていることを通知する(シーケンスSQ166)とともに、制御装置200に対して、基準プレート20上のマーカ22のカメラ座標系上の位置(および姿勢)を送信する(シーケンスSQ168)。
【0142】
すると、制御装置200は、現在配置されている基準プレート20の位置を示すロボット基準座標系上の位置(および姿勢)をロボット制御装置300から取得する(シーケンスSQ250)。そして、制御装置200は、現在配置されている基準プレート20の位置を示すロボット基準座標系上の位置(および姿勢)と、画像計測装置100からのカメラ座標系上の位置(および姿勢)とを対応付けて格納する(シーケンスSQ252)。
【0143】
シーケンスSQ158〜SQ168,SQ250,SQ252の処理(図11の※4の処理)は、シーケンスSQ156において決定した基準プレート20を配置すべき複数の位置の数だけ繰返される。
【0144】
以上の処理によって、カメラ・ロボットキャリブレーションに必要な、カメラ座標系上の位置とロボット基準座標系上の位置との対応関係を示すデータセットを取得できる。最終的に、制御装置200は、取得したデータセットに基づいて、所定の演算処理を実行することで、カメラ座標系とロボット基準座標系との間の対応関係を規定する行列を推定する(シーケンスSQ254)。この推定された行列がカメラ・ロボットキャリブレーションの結果として格納される。すなわち、制御装置200は、基準プレート20(基準物体)がキャリブレーション領域内に順次配置されたときに取得される、基準プレート20の三次元座標とロボット2の作用部の位置および姿勢との組に基づいて、キャリブレーションパラメータ(対応関係)を算出する。
【0145】
以上のような処理により、カメラ・ロボットキャリブレーションの実行が完了する。
図12は、本実施の形態に従うロボット制御システム1におけるカメラ・ロボットキャリブレーションの手動処理において提供されるユーザインターフェイス画面の一例を示す模式図である。
【0146】
図12は、本実施の形態に従うロボット制御システム1におけるカメラ・ロボットキャリブレーションの手動処理において提供されるユーザインターフェイス画面の一例を示す模式図である。図12に示されるユーザインターフェイス画面430は、3Dカメラ10による撮像により得られる基準プレート20についての三次元計測結果、および、3Dカメラ10による撮像により得られる基準プレート20についての二次元画像を同時に表示する。さらに、ユーザインターフェイス画面430は、ユーザが予め設定したキャリブレーション領域および基準プレート20の高さを表示する。
【0147】
具体的には、ユーザインターフェイス画面430においては、3Dカメラ10により撮像された画像に対して、予め設定されたキャリブレーション領域を示す有効領域枠422が表示される。有効領域枠422に関連付けて、選択されている目標位置の二次元位置を示すインジケータ432が表示されている。
【0148】
なお、基準プレート20の高さに応じて、キャリブレーション領域の断面の大きさは異なるので、ユーザインターフェイス画面430においても有効領域枠422の大きさは、基準プレート20の高さに応じて変化することになる。
【0149】
ユーザインターフェイス画面420は、高さ表示バー424を含んでいる。高さ表示バー424は、Z軸の計測可能範囲を表示するものである。なお、初期設定として、3Dカメラ10とロボット2のベースまでの距離が入力されているとする。そして、画像計測装置100により計測された基準プレート20の高さ方向の位置を示すインジケータ426、および、選択されている目標位置の高さを示すインジケータ428が、高さ表示バー424に対応付けて表示される。
【0150】
図12に示すように、画像計測装置100は、決定された基準プレート20を配置すべき複数の位置のうち一つと基準プレート20(基準物体)の現在位置との関係を示す位置表示機能を提供する。
【0151】
ユーザは、ユーザインターフェイス画面420を参照することで、基準プレート20を適切な位置に配置できる。すなわち、ユーザは、基準プレート20の配置高さを予め指定された高さに合せるとともに、基準プレート20の二次元位置を示すインジケータ432が基準プレート20の中心と一致するように、ロボット2を操作する。このロボット2の操作中においても、3Dカメラ10による二次元画像の取得および三次元計測は繰返し実行される。
【0152】
そして、基準プレート20が選択された目標位置に配置されると、そのときのカメラ座標系上の位置およびロボット基準座標系上の位置および姿勢が関連付けて格納される。この一連の操作および処理が、カメラ・ロボットキャリブレーションを実行するための数だけ繰返される。最終的に、取得したカメラ座標系上の位置とロボット基準座標系上の位置および姿勢との相関関係に基づいて、カメラ・ロボットキャリブレーションを実行して、必要なパラメータを算出する。
【0153】
なお、ユーザが操作を誤って基準プレート20がキャリブレーション領域外に存在するようになった場合には、何らかの通知をユーザに行なうようにしてもよい。このような通知形態としては、表示色の変更、注意を促すメッセージの表示、警報音の発生などを採用してもよい。図12(B)に示すユーザインターフェイス画面430においては、警告メッセージ434が表示されている例を示す。このような警告を行なうことで、カメラ・ロボットキャリブレーションを効率的に実行できる。
【0154】
あるいは、ユーザの誤操作により基準プレート20の位置が適切な領域から大きく外れる場合などには、制御装置200からロボット制御装置300に指令を与えて、あるいは、ロボット制御装置300に実装されている保護機能などを用いて、ロボット2を強制的に停止するようにしてもよい。
【0155】
<G.変形例>
上述した実施の形態に対しては、以下のような変形も可能である。
【0156】
(g1:実装形態)
上述の説明においては、主として画像計測装置100および制御装置200が連係することで、本実施の形態に係るカメラ・ロボットキャリブレーションを実現する実装形態について説明したが、実装形態としてはこれに限られるものではない。
【0157】
例えば、画像計測装置100および制御装置200が提供する機能は、互いに入れ替えてもよいし、画像計測装置100および制御装置200を一体の装置として構成してもよい。さらに、ロボット制御装置300を含めて一体の装置として構成することもできる。
【0158】
すなわち、上述したような処理および機能を提供できる構成であれば、どのような実装形態を採用してもよい。
【0159】
(g2:自動処理および手動処理)
説明の便宜上、カメラ・ロボットキャリブレーションの自動処理および手動処理の両方を実行可能なロボット制御システム1を例示したが、必ずしも両方の処理を実装する必要はない。要求仕様やアプリケーションなどに応じて、いずれかの一方の処理のみを実装するようにしてもよい。
【0160】
(g3:基準プレート20の位置および経路)
カメラ・ロボットキャリブレーションの実行に必要なデータセットを取得するための、基準プレート20を配置する位置は、任意に設定できる。また、設定された複数の位置に基準プレート20を順次配置する経路についても任意に設定できる。但し、基準プレート20を順次配置する経路については、作業の効率化のため、所定の最適化アルゴリズムに従って、最短経路を設定するようにしてもよい。
【0161】
<H.付記>
上述したような本実施の形態は、以下のような技術思想を含む。
[構成1]
ロボット制御システム(1)であって、
ロボット(2)の作用部(8)を視野内に含むように配置された撮像部(10)と、
前記撮像部により撮像された画像に基づいて、当該撮像部の視野内に存在する任意の対象物の三次元座標を計測する計測部(52;100)と、
前記計測された三次元座標と前記ロボットの作用部の位置および姿勢との間の予め算出された対応関係に従って、前記ロボットの前記作用部を位置決めするための指令を生成する指令生成部(54;200)と、
前記対応関係を算出するためのキャリブレーションを実行するキャリブレーション実行部(58;100;200)と、
前記キャリブレーションにおいて、前記ロボットの作用部に関連付けられた基準物体(20)を配置すべき領域であるキャリブレーション領域(418)の設定を受付ける設定受付部(60;400)とを備える、ロボット制御システム。
[構成2]
前記設定受付部は、前記撮像部を基準として、設定されているキャリブレーション領域の範囲を示す、構成1に記載のロボット制御システム。
[構成3]
前記設定受付部は、前記撮像部の視野範囲(416)を併せて表示する、構成2に記載のロボット制御システム。
[構成4]
前記キャリブレーション領域は、前記撮像部の光軸(AX)を基準とした直方体として設定される、構成1〜3のいずれか1項に記載のロボット制御システム。
[構成5]
前記キャリブレーション領域として設定される直方体の断面の大きさは、前記撮像部の視野と前記撮像部から前記キャリブレーション領域の端面までの距離とに応じて、決定される、構成4に記載のロボット制御システム。
[構成6]
前記設定受付部は、前記キャリブレーション領域の設定として、前記撮像部の光軸(AX)上の範囲設定を受付ける、構成4または5に記載のロボット制御システム。
[構成7]
前記キャリブレーション実行部は、
前記ロボットに指令を順次与えて、前記キャリブレーション領域内に前記基準物体を順次配置する配置制御部(200;SQ210,SQ212)と、
前記基準物体が前記キャリブレーション領域内に順次配置されたときに取得される、前記基準物体の三次元座標と前記ロボットの作用部の位置および姿勢との組に基づいて、前記対応関係を算出する算出部(200;SQ216)とを含む、構成1〜6のいずれか1項に記載のロボット制御システム。
[構成8]
前記キャリブレーション実行部は、
前記キャリブレーション領域において前記基準物体を配置すべき複数の位置を決定する位置決定部(100;SQ156)と、
前記決定された複数の位置のうち一つと前記基準物体の現在位置との関係を示す位置表示部(100;SQ164)と、
前記基準物体が前記決定された複数の位置に順次配置されたときに取得される、前記基準物体の三次元座標と前記ロボットの作用部の位置および姿勢との組に基づいて、前記対応関係を算出する算出部(200;SQ254)とを含む、構成1〜6のいずれか1項に記載のロボット制御システム。
【0162】
<I.利点>
本実施の形態に従うロボット制御システムのように、3Dカメラにより撮像された画像に関連付けられるカメラ座標系とロボットを制御するためのロボット基準座標系との間のカメラ・ロボットキャリブレーションを実行するにあたっては、ロボットにより基準物体を所定位置に配置する必要があり、基準物体の位置および姿勢の指定が容易ではない。
【0163】
すなわち、基準物体を計測視野内に収める必要があり、基準物体を床面に接触させてはならず、不慣れなユーザは、このような要求を満たしつつロボットを操作することが難しい場合がある。
【0164】
さらに、3Dカメラにより撮像される二次元画像に基づいてカメラ・キャリブレーションを実行した場合には、3Dカメラの遠方側の三次元計測が不可能な領域についても対象に含まれることがあり、ムダな領域について、カメラ・キャリブレーションを実行することになる。また、3Dカメラの近接側および遠方側では、有効視野の大きさが異なっており、光軸方向に沿って基準物体を位置決めする場合には、動作させるべき範囲を自動的に設定することが難しい。
【0165】
このような課題に対して、本実施の形態に従うロボット制御システムにおいては、3Dカメラを基準としてカメラ・ロボットキャリブレーションを実行すべき領域(キャリブレーション領域)を任意に設定できる。このとき、3Dカメラの有効視野を合せて表示できるので、適切なキャリブレーション領域の設定が可能となる。そして、設定されたキャリブレーション領域に関して、自動的あるいは手動でカメラ・ロボットキャリブレーションを実行できる。
【0166】
また、本実施の形態においては、光軸方向のいずれの位置においても、キャリブレーション領域の断面を実質的に同一の大きさに設定することで、基準物体を配置する位置を自動的に決定できるとともに、アプリケーションに応じた設定を容易化できる。
【0167】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0168】
1 ロボット制御システム、2 ロボット、4 アーム、6 ハンドピース、8 作用部、10 3Dカメラ、11 処理部、12 投光部、13,50 撮像部、14,110 表示部、15 記憶部、16,114,208,308 通信インターフェイス(I/F)部、20 基準プレート、22 マーカ、52 計測部、54 指令生成部、56,2060 キャリブレーションパラメータ、58 キャリブレーション実行部、60 設定受付部、100 画像計測装置、102,202,302 プロセッサ、104,204,304 メインメモリ、106,206,306 ストレージ、108 入力部、112 光学ドライブ、113 記録媒体、116,230,312 プロセッサバス、200 制御装置、210,212 フィールドネットワークコントローラ、214 USBコントローラ、216 メモリカードインターフェイス、218 メモリカード、220 ローカルバスコントローラ、222 ローカルバス、300 ロボット制御装置、310 ドライブコントローラ、320 サーボドライバ、330 モータ、400,420,430 ユーザインターフェイス画面、401,402 断面設定オブジェクト、403 有効視野表示、410 計測最下面設定バー、411 計測最上面設定バー、412,414 軸方向幅設定バー、416 視野範囲、418 キャリブレーション領域、422 有効領域枠、424 表示バー、426,428,432 インジケータ、434 警告メッセージ、1060 OS、1062 三次元計測プログラム、1064 モデルデータ、1066 設定受付プログラム、2062 指令生成プログラム、2064 キャリブレーション実行プログラム、AX 光軸。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12