(57)【要約】【課題】キャリブレーションを実行するための設定を容易化する。【解決手段】ロボット制御システムは、撮像部により撮像された画像に基づいて、当該撮像部の視野内に存在する任意の対象物の三次元座標を計測する計測部と、計測された三次元座標とロボットの作用部の位置および姿勢との間の予め算出された対応関係に従って、ロボットの作用部を位置決めするための指令を生成する指令生成部と、対応関係を算出するためのキャリブレーションを実行するキャリブレーション実行部と、キャリブレーションにおいて、ロボットの作用部に関連付けられた基準物体を配置すべき領域であるキャリブレーション領域の設定を受付ける設定受付部とを含む。【選択図】図１
2019217571.tif 000002
【特許請求の範囲】
【請求項１】
ロボット制御システムであって、
ロボットの作用部を視野内に含むように配置された撮像部と、
前記撮像部により撮像された画像に基づいて、当該撮像部の視野内に存在する任意の対象物の三次元座標を計測する計測部と、
前記計測された三次元座標と前記ロボットの作用部の位置および姿勢との間の予め算出された対応関係に従って、前記ロボットの前記作用部を位置決めするための指令を生成する指令生成部と、
前記対応関係を算出するためのキャリブレーションを実行するキャリブレーション実行部と、
前記キャリブレーションにおいて、前記ロボットの作用部に関連付けられた基準物体を配置すべき領域であるキャリブレーション領域の設定を受付ける設定受付部とを備える、ロボット制御システム。
【請求項２】
前記設定受付部は、前記撮像部を基準として、設定されているキャリブレーション領域の範囲を示す、請求項１に記載のロボット制御システム。
【請求項３】
前記設定受付部は、前記撮像部の視野範囲を併せて表示する、請求項２に記載のロボット制御システム。
【請求項４】
前記キャリブレーション領域は、前記撮像部の光軸を基準とした直方体として設定される、請求項１〜３のいずれか１項に記載のロボット制御システム。
【請求項５】
前記キャリブレーション領域として設定される直方体の断面の大きさは、前記撮像部の視野と前記撮像部から前記キャリブレーション領域の端面までの距離とに応じて、決定される、請求項４に記載のロボット制御システム。
【請求項６】
前記設定受付部は、前記キャリブレーション領域の設定として、前記撮像部の光軸上の範囲設定を受付ける、請求項４または５に記載のロボット制御システム。
【請求項７】
前記キャリブレーション実行部は、
前記ロボットに指令を順次与えて、前記キャリブレーション領域内に前記基準物体を順次配置する配置制御部と、
前記基準物体が前記キャリブレーション領域内に順次配置されたときに取得される、前記基準物体の三次元座標と前記ロボットの作用部の位置および姿勢との組に基づいて、前記対応関係を算出する算出部とを含む、請求項１〜６のいずれか１項に記載のロボット制御システム。
【請求項８】
前記キャリブレーション実行部は、
前記キャリブレーション領域において前記基準物体を配置すべき複数の位置を決定する位置決定部と、
前記決定された複数の位置のうち一つと前記基準物体の現在位置との関係を示す位置表示部と、
前記基準物体が前記決定された複数の位置に順次配置されたときに取得される、前記基準物体の三次元座標と前記ロボットの作用部の位置および姿勢との組に基づいて、前記対応関係を算出する算出部とを含む、請求項１〜６のいずれか１項に記載のロボット制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、撮像部により撮像される画像に基づいて算出される三次元座標を利用してロボットを制御するためのロボット制御システムに関する。
【背景技術】
【０００２】
従来から、三次元計測が可能なセンサとロボットとを組合せたシステムが知られている。このようなシステムにおいては、設定項目が多く、また、設定した内容を直感的には把握し難い場合がある。そこで、例えば、特開２０１１−１１２４０２号公報（特許文献１）は、設定された有効領域の立体形状を周囲との関係とともに簡単に表示できるようにして、３次元視覚センサの利便性を高める構成を開示する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−１１２４０２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に開示される構成は、ステレオ計測のための３次元座標系（計測座標系）とカメラ座標系との間のキャリブレーションについては考慮されているものの、ロボットを制御するための座標系についてのキャリブレーションは考慮されていない。
【０００５】
実際には、撮像された画像により計測される三次元座標とロボットの位置および姿勢との関係を予めキャリブレーションしておく必要がある。このようなキャリブレーションを実行するための設定を容易化したいというニーズが存在する。
【課題を解決するための手段】
【０００６】
本技術の一つの実施形態に従うロボット制御システムは、ロボットの作用部を視野内に含むように配置された撮像部と、撮像部により撮像された画像に基づいて、当該撮像部の視野内に存在する任意の対象物の三次元座標を計測する計測部と、計測された三次元座標とロボットの作用部の位置および姿勢との間の予め算出された対応関係に従って、ロボットの作用部を位置決めするための指令を生成する指令生成部と、対応関係を算出するためのキャリブレーションを実行するキャリブレーション実行部と、キャリブレーションにおいて、ロボットの作用部に関連付けられた基準物体を配置すべき領域であるキャリブレーション領域の設定を受付ける設定受付部とを含む。
【０００７】
この開示によれば、設定受付部を介して設定されるキャリブレーション領域の範囲でキャリブレーションを実行できるので、キャリブレーションを効率化できる。
【０００８】
上述の開示において、設定受付部は、撮像部を基準として、設定されているキャリブレーション領域の範囲を示すようにしてもよい。
【０００９】
この開示によれば、撮像部を基準としてキャリブレーション領域が設定されるので、ユーザによるキャリブレーション領域の範囲の把握を容易化できる。
【００１０】
上述の開示において、設定受付部は、撮像部の視野範囲を併せて表示するようにしてもよい。
【００１１】
この開示によれば、撮像部の視野範囲に対して、キャリブレーション領域が設定されている範囲を一見して把握できる。
【００１２】
上述の開示において、キャリブレーション領域は、撮像部の光軸を基準とした直方体として設定されるようにしてもよい。
【００１３】
この開示によれば、基準物体を配置する位置を容易に決定できるとともに、光軸方向に移動した場合でも計測範囲外にならないように動作範囲を決定できる。
【００１４】
上述の開示において、キャリブレーション領域として設定される直方体の断面の大きさは、撮像部の視野と撮像部からキャリブレーション領域の端面までの距離とに応じて、決定されるようにしてもよい。
【００１５】
この開示によれば、撮像部からの距離に応じた最適なキャリブレーション領域を設定できる。
【００１６】
上述の開示において、設定受付部は、キャリブレーション領域の設定として、撮像部の光軸上の範囲設定を受付けるようにしてもよい。
【００１７】
この開示によれば、撮像部の光軸方向において実際に使用される領域のみをキャリブレーション領域として設定できる。
【００１８】
上述の開示において、キャリブレーション実行部は、ロボットに指令を順次与えて、キャリブレーション領域内に基準物体を順次配置する配置制御部と、基準物体がキャリブレーション領域内に順次配置されたときに取得される、基準物体の三次元座標とロボットの作用部の位置および姿勢との組に基づいて、対応関係を算出する算出部とを含むようにしてもよい。
【００１９】
この開示によれば、ユーザは、キャリブレーション領域を設定するだけで、キャリブレーションが実行されるので、専門知識などがないユーザであっても、ロボット制御システムを運用できる。
【００２０】
上述の開示において、キャリブレーション実行部は、キャリブレーション領域において基準物体を配置すべき複数の位置を決定する位置決定部と、決定された複数の位置のうち一つと基準物体の現在位置との関係を示す位置表示部と、基準物体が決定された複数の位置に順次配置されたときに取得される、基準物体の三次元座標とロボットの作用部の位置および姿勢との組に基づいて、対応関係を算出する算出部とを含むようにしてもよい。
【００２１】
この開示によれば、ユーザは、キャリブレーション領域を設定するとともに、位置表示部からの通知に従って基準物体を所定位置に順次配置するだけで、キャリブレーションが実行されるので、専門知識の乏しいユーザであっても、ロボット制御システムを運用できる。
【発明の効果】
【００２２】
本技術によれば、撮像された画像により計測される三次元座標とロボットの位置および姿勢との関係を予めキャリブレーションする際に必要な設定を容易化できる。
【図面の簡単な説明】
【００２３】
【図１】本実施の形態に従うロボット制御システムの適用例を示す模式図である。
【図２】本実施の形態に従うロボット制御システムの全体構成を示す模式図である。
【図３】本実施の形態に従うロボット制御システムに含まれる３Ｄカメラの構成例を示す模式図である。
【図４】本実施の形態に従うロボット制御システムに含まれる画像計測装置の構成例を示す模式図である。
【図５】本実施の形態に従うロボット制御システムに含まれる制御装置の構成例を示す模式図である。
【図６】本実施の形態に従うロボット制御システムに含まれるロボット制御装置の構成例を示す模式図である。
【図７】本実施の形態に従うロボット制御システムにおけるカメラ・ロボットキャリブレーションの一側面を説明するための図である。
【図８】本実施の形態に従うロボット制御システムが提供するユーザインターフェイス画面の一例を示す模式図である。
【図９】本実施の形態に従うロボット制御システムにおけるカメラ・ロボットキャリブレーションの自動処理手順の一例を示すシーケンス図である。
【図１０】本実施の形態に従うロボット制御システムにおけるカメラ・ロボットキャリブレーションの自動処理において提供されるユーザインターフェイス画面の一例を示す模式図である。
【図１１】本実施の形態に従うロボット制御システムにおけるカメラ・ロボットキャリブレーションの手動処理手順の一例を示すシーケンス図である。
【図１２】本実施の形態に従うロボット制御システムにおけるカメラ・ロボットキャリブレーションの手動処理において提供されるユーザインターフェイス画面の一例を示す模式図である。
【発明を実施するための形態】
【００２４】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【００２５】
＜Ａ．適用例＞
まず、本発明が適用される場面の一例について説明する。
【００２６】
図１は、本実施の形態に従うロボット制御システム１の適用例を示す模式図である。図１を参照して、本実施の形態に従うロボット制御システム１は、ロボット２を制御する構成として、ロボット２の作用部８を視野内に含むように配置された撮像部５０を含む。ロボット制御システム１は、撮像部５０により撮像された画像に基づいて、撮像部５０の視野内に存在する任意の対象物の三次元座標を計測する計測部５２をさらに含む。計測部５２により計測される三次元座標は、指令生成部５４およびキャリブレーション実行部５８へ出力される。計測部５２により計測される三次元座標は、特定の対象物の三次元座標上の位置（各軸上の位置）および姿勢（各軸を中心とする回転角）を含み得る。
【００２７】
指令生成部５４は、ロボット２の作用部８を位置決めするための指令を生成する。具体的には、指令生成部５４は、指定された目標位置と計測部５２からの三次元座標とを比較して、ロボット２の作用部８の位置および姿勢との間の予め算出された対応関係（典型的には、キャリブレーションパラメータ５６）に従って、指令を算出する。
【００２８】
キャリブレーションパラメータ５６は、キャリブレーション実行部５８によって決定される。より具体的には、キャリブレーション実行部５８は、計測部５２からの三次元座標および設定受付部６０からのキャリブレーションに用いられる空間領域（キャリブレーション領域）の設定に基づいて、キャリブレーションパラメータ５６を算出するためのキャリブレーションを実行する。このキャリブレーション領域は、設定受付部６０によってユーザから設定される。すなわち、設定受付部６０は、キャリブレーションにおいて、ロボット２の作用部８に関連付けられた基準物体（一例として、基準プレート２０を示す）を配置すべき領域であるキャリブレーション領域の設定を受付ける。キャリブレーション領域は、撮像部５０の有効視野のうち任意の領域を設定可能である。
【００２９】
このように、本実施の形態においては、撮像部５０を基準とした任意のキャリブレーション領域を設定できるので、キャリブレーションパラメータ５６を算出するためのキャリブレーションを効率的に実行できる。
【００３０】
＜Ｂ．ロボット制御システム１の全体構成＞
まず、本実施の形態に従うロボット制御システム１の全体構成について説明する。
【００３１】
図２は、本実施の形態に従うロボット制御システム１の全体構成を示す模式図である。図２を参照して、ロボット制御システム１は、ロボットの作用部を視野内に含むように配置された撮像部により撮像された画像に基づいて、撮像部の視野内に存在するロボットおよび任意の対象物の三次元座標を計測し、その計測した三次元座標に基づいてロボットを制御する。
【００３２】
より具体的には、ロボット制御システム１は、ロボット２と、３Ｄカメラ１０と、画像計測装置１００と、制御装置２００と、ロボット制御装置３００とを含む。
【００３３】
ロボット２は、ロボット制御装置３００からの指令に従って、任意の位置の動作を行なう機構である。図２には、ロボット２の典型例として、多関節ロボットを例示するが、スカラロボットやパラレルロボットであってもよい。
【００３４】
図２に示すロボット２は、１または複数のアーム４を有しており、１または複数のアーム４の先端（ロボット２の作用部に相当）には、ハンドピース６が装着されている。図２には、後述するようなキャリブレーション実行時の状態が模式的に描かれており、ハンドピース６には基準物体の一例として基準プレート２０が装着されている。
【００３５】
基準プレート２０は、キャリブレーションにおいて、計測される三次元座標とロボット２の作用部の位置を示す位置情報との間の対応関係を決定するための基準物体である。基準プレート２０の表面には、１または複数のマーカ２２が描かれている。
【００３６】
３Ｄカメラ１０は、ロボット２の作用部（アーム４の先端およびハンドピース６）を視野内に含むように配置されており、所定周期毎あるいは所定イベント毎に視野内を撮像した画像を画像計測装置１００へ出力する。
【００３７】
本実施の形態に従うロボット制御システム１においては、ロボット２の作用部を含む各部分の三次元座標を光学的に計測できる構成を採用する。
【００３８】
一例として、構造化照明と称される手法を用いて三次元計測を実現するようにしてもよい。構造化照明の手法では、計測光を被写体に照射するともに、計測光が投影された状態で被写体を撮像することで得られる画像に基づいて、被写体までの距離を計測する。このような構造化照明の手法としては、空間コード化法、位相シフト法、光切断法などを用いることができる。このような構造化照明を採用した場合には、３Ｄカメラ１０は、計測光を照射する投光部と、計測光が投影された状態で被写体を撮像する撮像部とを有することになる。
【００３９】
別の例として、多視点カメラを用いて三次元計測を実現するようにしてもよい。この場合には、３Ｄカメラ１０は、視点が互いに異なるように配置された複数のカメラを含む。典型的には、３Ｄカメラ１０は、一対のカメラからなるステレオカメラである。
【００４０】
画像計測装置１００は、３Ｄカメラ１０により撮像された画像に基づいて、３Ｄカメラ１０の視野内に存在する任意の対象物の三次元画像を計測する。
【００４１】
例えば、構造化照明を採用する場合には、画像計測装置１００は、３Ｄカメラ１０から出力される画像に含まれる濃淡パターンの位置やズレなどを解析することで、視野内の被写体についての三次元座標（あるいは、三次元形状を示す座標群）を算出する。また、３Ｄカメラ１０として多視点カメラを採用する場合には、画像計測装置１００は、画像間のマッチングにより算出される各注目位置の視差に基づいて、視野内の被写体についての三次元座標（あるいは、三次元形状を示す座標群）を算出する。
【００４２】
画像計測装置１００は、さらに、算出した三次元座標群のうち、特定の対象物の三次元座標を探索することもできる。例えば、画像計測装置１００は、基準プレート２０に描かれるマーカ２２をパターンマッチングにより探索し、各マーカ２２の三次元座標を出力できる。これらのマーカ２２の三次元座標に基づいて、キャリブレーションが実行される。
【００４３】
制御装置２００は、典型的には、ＰＬＣ（プログラマブルコントローラ）などで構成され、画像計測装置１００により計測された三次元座標に基づいて、キャリブレーションを実行したり、ロボット制御装置３００への指令を与えたりする。
【００４４】
ロボット制御装置３００は、制御装置２００からの指令に従って、ロボット２を制御する。より具体的には、ロボット制御装置３００は、ロボット２の各軸を駆動するサーボモータなどを駆動する。
【００４５】
＜Ｃ．ロボット制御システム１を構成する各装置の構成例＞
次に、本実施の形態に従うロボット制御システム１を構成する各装置の構成例について説明する。
【００４６】
（ｃ１：３Ｄカメラ１０）
図３は、本実施の形態に従うロボット制御システム１に含まれる３Ｄカメラ１０の構成例を示す模式図である。図３を参照して、３Ｄカメラ１０は、処理部１１と、投光部１２と、撮像部１３と、表示部１４と、記憶部１５とを含む。
【００４７】
処理部１１は、３Ｄカメラ１０における全体処理を司る。処理部１１は、典型的には、プロセッサと、プロセッサで実行される命令コードを格納するストレージと、命令コードを展開するメモリとを含む。この場合、処理部１１において、プロセッサが命令コードをメモリ上に展開して実行することで各種処理を実現する。処理部１１の全部または一部を専用のハードウェア回路（例えば、ＡＳＩＣ（Application Specific Integrated Circuit）またはＦＰＧＡ（Field-Programmable Gate Array）など）を用いて実装してもよい。
【００４８】
表示部１４は、３Ｄカメラ１０において取得あるいは算出された各種情報を外部へ通知する。
【００４９】
記憶部１５は、撮像部１３により撮像された画像や予め設定されるキャリブレーションパラメータなどを格納する。
【００５０】
通信インターフェイス（Ｉ／Ｆ）部１６は、３Ｄカメラ１０と画像計測装置１００との間のデータの遣り取りを担当する。
【００５１】
（ｃ２：画像計測装置１００）
図４は、本実施の形態に従うロボット制御システム１に含まれる画像計測装置１００の構成例を示す模式図である。画像計測装置１００は、典型的には、汎用コンピュータを用いて実現される。図４を参照して、画像計測装置１００は、プロセッサ１０２と、メインメモリ１０４と、ストレージ１０６と、入力部１０８と、表示部１１０と、光学ドライブ１１２と、通信インターフェイス（Ｉ／Ｆ）部１１４とを含む。これらのコンポーネントは、プロセッサバス１１６を介して接続されている。
【００５２】
プロセッサ１０２は、ＣＰＵ（Central Processing Unit）やＧＰＵ（Graphics Processing Unit）などで構成され、ストレージ１０６に格納されたプログラム（一例として、ＯＳ（Operating System）１０６０および三次元計測プログラム１０６２）を読出して、メインメモリ１０４に展開して実行することで、後述するような各種処理を実現する。
【００５３】
メインメモリ１０４は、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）などの揮発性記憶装置などで構成される。ストレージ１０６は、例えば、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）などの不揮発性記憶装置などで構成される。
【００５４】
ストレージ１０６には、基本的な機能を実現するためのＯＳ１０６０に加えて、画像計測装置１００としての機能を提供するための三次元計測プログラム１０６２、マーカ２２やワークなどの物体認識に用いられるモデルデータ１０６４、および、設定受付プログラム１０６６が格納される。
【００５５】
設定受付プログラム１０６６は、後述するようなカメラ・ロボットキャリブレーションにおいて、ロボット２の作用部に関連付けられた基準物体を配置すべき領域であるキャリブレーション領域の設定を受付ける処理を実行する。
【００５６】
入力部１０８は、キーボードやマウスなどで構成され、ユーザ操作を受付ける。表示部１１０は、ディスプレイ、各種インジケータ、プリンタなどで構成され、プロセッサ１０２からの処理結果などを出力する。
【００５７】
通信インターフェイス部１１４は、３Ｄカメラ１０と画像計測装置１００との間のデータの遣り取りを担当するとともに、画像計測装置１００と制御装置２００との間のデータの遣り取りを担当する。
【００５８】
画像計測装置１００は、光学ドライブ１１２を有しており、コンピュータ読取可能なプログラムを非一過的に格納する記録媒体１１３（例えば、ＤＶＤ（Digital Versatile Disc）などの光学記録媒体）から、その中に格納されたプログラムが読取られてストレージ１０６などにインストールされる。
【００５９】
画像計測装置１００で実行される三次元計測プログラム１０６２および設定受付プログラム１０６６などは、コンピュータ読取可能な記録媒体１１３を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形でインストールするようにしてもよい。また、本実施の形態に従う三次元計測プログラム１０６２および設定受付プログラム１０６６が提供する機能は、ＯＳが提供するモジュールの一部を利用する形で実現される場合もある。
【００６０】
図４には、プロセッサ１０２がプログラムを実行することで、画像計測装置１００として必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。
【００６１】
（ｃ３：制御装置２００）
図５は、本実施の形態に従うロボット制御システム１に含まれる制御装置２００の構成例を示す模式図である。制御装置２００は、典型的には、ＰＬＣ（プログラマブルコントローラ）を用いて実現される。図５を参照して、制御装置２００は、プロセッサ２０２と、メインメモリ２０４と、ストレージ２０６と、通信インターフェイス（Ｉ／Ｆ）部２０８と、フィールドネットワークコントローラ２１０，２１２と、ＵＳＢ（Universal Serial Bus）コントローラ２１４と、メモリカードインターフェイス２１６と、ローカルバスコントローラ２２０とを含む。これらのコンポーネントは、プロセッサバス２３０を介して接続されている。
【００６２】
プロセッサ２０２は、制御演算などを実行する演算処理部に相当し、ＣＰＵやＧＰＵなどで構成される。具体的には、プロセッサ２０２は、ストレージ２０６に格納されたプログラムを読出して、メインメモリ２０４に展開して実行することで、制御対象に応じた制御、および、後述するような各種処理を実現する。
【００６３】
メインメモリ２０４は、ＤＲＡＭやＳＲＡＭなどの揮発性記憶装置などで構成される。ストレージ２０６は、記憶部に相当し、例えば、ＨＤＤやＳＳＤなどの不揮発性記憶装置などで構成される。ストレージ２０６には、基本的な機能を実現するためのシステムプログラムに加えて、キャリブレーションパラメータ２０６０、指令生成プログラム２０６２、および、キャリブレーション実行プログラム２０６４などが格納される。
【００６４】
キャリブレーションパラメータ２０６０は、計測された三次元座標とロボット２の作用部の位置および姿勢との間の予め算出された対応関係に相当する。
【００６５】
指令生成プログラム２０６２は、計測された三次元座標とロボット２の作用部の位置および姿勢との間の予め算出された対応関係（キャリブレーションパラメータ２０６０）に従って、ロボット２の作用部を位置決めするための指令を生成する処理を実行する。
【００６６】
キャリブレーション実行プログラム２０６４は、計測された三次元座標とロボット２の作用部の位置および姿勢との間の予め算出された対応関係（キャリブレーションパラメータ２０６０）を算出するためのキャリブレーション（後述する、カメラ・ロボットキャリブレーション）を実行する。
【００６７】
通信インターフェイス部２０８は、画像計測装置１００と制御装置２００との間のデータの遣り取りを担当する。フィールドネットワークコントローラ２１０，２１２は、フィールドネットワークを介して、ロボット制御装置３００（図２参照）などの任意のデバイスとの間でデータを遣り取りする。図５には、２つのフィールドネットワークコントローラ２１０，２１２を図示するが、単一のフィールドネットワークコントローラを採用してもよい。ＵＳＢコントローラ２１４は、ＵＳＢ接続を介して、任意の外部装置などとの間でデータを遣り取りする。
【００６８】
メモリカードインターフェイス２１６は、着脱可能な記録媒体の一例であるメモリカード２１８を受付ける。メモリカードインターフェイス２１６は、メモリカード２１８に対してデータを書込み、メモリカード２１８から各種データ（ログやトレースデータなど）を読出すことが可能になっている。
【００６９】
ローカルバスコントローラ２２０は、ローカルバス２２２を介して、任意のローカルＩＯユニットとの間でデータを遣り取りする。
【００７０】
図５には、プロセッサ２０２がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。あるいは、制御装置２００の主要部を、汎用的なアーキテクチャに従うハードウェア（例えば、汎用パソコンをベースとした産業用パソコン）を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のＯＳを並列的に実行させるとともに、各ＯＳ上で必要なアプリケーションを実行させるようにしてもよい。
【００７１】
（ｃ４：ロボット制御装置）
図６は、本実施の形態に従うロボット制御システム１に含まれるロボット制御装置３００の構成例を示す模式図である。ロボット制御装置３００は、制御装置２００からの指令（典型的には、目標位置の三次元座標、姿勢（向き）、および移動速度など）に従って、ロボット２の各軸の動作パターンなどを計算する。
【００７２】
図６を参照して、ロボット制御装置３００は、プロセッサ３０２と、メインメモリ３０４と、ストレージ３０６と、通信インターフェイス（Ｉ／Ｆ）部３０８と、ドライブコントローラ３１０とを含む。これらのコンポーネントは、プロセッサバス３１２を介して接続されている。ロボット制御装置３００は、さらに、ドライブコントローラ３１０に接続された１または複数のサーボドライバ３２０−１，３２０−２，３２０−３，・・・，３２０−ｎ（以下、「サーボドライバ３２０」とも総称する。）を含む。
【００７３】
プロセッサ３０２は、制御演算などを実行する演算処理部に相当し、ＣＰＵやＧＰＵなどで構成される。具体的には、プロセッサ３０２は、ストレージ３０６に格納されたプログラムを読出して、メインメモリ３０４に展開して実行することで各種処理を実現する。
【００７４】
メインメモリ３０４は、ＤＲＡＭやＳＲＡＭなどの揮発性記憶装置などで構成される。ストレージ３０６は、記憶部に相当し、例えば、ＨＤＤやＳＳＤなどの不揮発性記憶装置などで構成される。ストレージ３０６には、ロボット制御に係るシステムプログラムなどが格納される。
【００７５】
通信インターフェイス部３０８は、制御装置２００とロボット制御装置３００との間のデータの遣り取りを担当する。
【００７６】
ドライブコントローラ３１０は、ロボット２の各軸を動作させるモータ３３０−１，３３０−２，３３０−３，・・・，３３０−ｎ（以下、「モータ３３０」とも総称する。）を駆動するためのサーボドライバ３２０の各々を制御する。サーボドライバ３２０は、ドライブコントローラ３１０からの指令に従って、接続されているモータ３３０を、指定された方向のトルク、加速度、回転速度で駆動する。
【００７７】
図６には、プロセッサ３０２がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。あるいは、ロボット制御装置３００の主要部を、汎用的なアーキテクチャに従うハードウェア（例えば、汎用パソコンをベースとした産業用パソコン）を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のＯＳを並列的に実行させるとともに、各ＯＳ上で必要なアプリケーションを実行させるようにしてもよい。
【００７８】
＜Ｄ．キャリブレーション＞
次に、本実施の形態に従うロボット制御システム１におけるキャリブレーションについて説明する。
【００７９】
（ｄ１：概要）
ロボット制御システム１においては、複数種類のキャリブレーションを実行する必要がある。
【００８０】
複数種類のキャリブレーションのうち一つは、３Ｄカメラ１０による視野を基準に規定される座標系（以下、「カメラ座標系」とも称す。）のキャリブレーションである。このカメラ座標系のキャリブレーションは、既知のパターンが描かれた基準物体を複数の既知の位置に順次配置するとともに、画像計測装置１００により計測される位置および姿勢に対応する位置および姿勢を取得する。そして、基準物体の位置および姿勢と三次元座標系上の位置および姿勢との対応関係（典型的には、変換式を規定するキャリブレーションパラメータ）が決定される。このキャリブレーションパラメータを用いることで、カメラ座標系に配置された任意の被写体の三次元座標を正確に計測できる。
【００８１】
ここで、三次元座標系上の位置は、三次元座標系上において各軸の値によって規定される座標を意味し、三次元座標系上の姿勢は、三次元座標系上に各軸を基準とする回転方向によって規定される。すなわち、三次元座標系上の位置は、３次元の値であり、三次元座標系上においていずれの座標に存在するのかを示す情報であり、三次元座標系上の姿勢は、３次元の値であり、三次元座標系上においていずれの向きを向いているのかを示す情報である。
【００８２】
複数種類のキャリブレーションのうち別の一つは、ロボット２のベース位置を基準に規定される座標系（以下、「ロボット基準座標系」とも称す。）のキャリブレーションである。このロボット基準座標系のキャリブレーションは、制御装置２００から指令として目標位置および目標姿勢の三次元座標をロボット制御装置３００に与えた場合に、ロボット２の先端が指定された目標位置に移動することを保証する処理である。ロボット基準座標系のキャリブレーションにより、ロボット制御装置３００におけるロボット２のモータ３３０を駆動するための演算式などが修正される。
【００８３】
本実施の形態に従うロボット制御システム１は、カメラ座標系とロボット基準座標系との間の対応関係を決定するためのキャリブレーション（「カメラ・ロボットキャリブレーション」とも称す。）を実行可能になっている。
【００８４】
以下の説明においては、主として、カメラ・ロボットキャリブレーションについて説明する。
【００８５】
図７は、本実施の形態に従うロボット制御システム１におけるカメラ・ロボットキャリブレーションの一側面を説明するための図である。図７を参照して、ロボット制御システム１においては、３Ｄカメラ１０により撮像された画像に基づいて三次元座標を計測し、その計測値に基づいてロボット２を制御する。そのため、ロボット制御システム１におけるカメラ・ロボットキャリブレーションは、３Ｄカメラ１０の視野内で行なうことが効率的である。さらに、３Ｄカメラ１０の視野内であっても、対象のアプリケーションによっては、視野内のすべてを利用するのではなく、一部の空間領域のみを使用する場合もある。このような場合には、実際に使用される空間領域（すなわち、ロボット２の作用部が存在し得る空間領域）についてカメラ・ロボットキャリブレーションを実行すればよい。
【００８６】
本実施の形態に従うロボット制御システム１においては、カメラ・ロボットキャリブレーションに用いられる空間領域（以下、「キャリブレーション領域」とも称す。）をユーザが任意に設定できるようになっている。ユーザが任意に設定したキャリブレーション領域に従って、カメラ・ロボットキャリブレーションが実行される。
【００８７】
（ｄ２：キャリブレーション領域の設定）
図８は、本実施の形態に従うロボット制御システム１が提供するユーザインターフェイス画面の一例を示す模式図である。本実施の形態においては、一例として、画像計測装置１００の設定受付プログラム１０６６によりキャリブレーション領域４１８の設定が受付けられるようになっており、図８に示すユーザインターフェイス画面４００は、典型的には、画像計測装置１００の表示部１１０（図４）上に表示される。但し、画像計測装置１００に限定されることなく、制御装置２００に接続される表示装置（不図示）上に表示されるようにしてもよい。画像計測装置１００および／または制御装置２００に設定が与えられるのであれば、どのような表示および入力の形態であってもよい。
【００８８】
本実施の形態においては、３Ｄカメラ１０は、有効視野の断面が矩形になるように光学設計されているとする。そのため、図８に示すユーザインターフェイス画面４００においては、３Ｄカメラ１０の有効視野を、断面の矩形に対応する２つの直交する方向（便宜上、「Ｘ軸方向」および「Ｙ軸方向」と称する。）により規定している。すなわち、ユーザインターフェイス画面４００は、Ｘ断面設定オブジェクト４０１と、Ｙ断面設定オブジェクト４０２とを含む。
【００８９】
Ｘ断面設定オブジェクト４０１およびＹ断面設定オブジェクト４０２は、有効視野表示４０３および４０４をそれぞれ有している。有効視野表示４０３および４０４は、３Ｄカメラ１０により三次元座標を計測できる範囲を示す。すなわち、撮像部である３Ｄカメラ１０の視野範囲４１６が併せて表示される。
【００９０】
ユーザは、ユーザインターフェイス画面４００上で、実際にアプリケーションで利用される領域、すなわちキャリブレーション領域４１８を設定する。
【００９１】
より具体的には、Ｘ断面設定オブジェクト４０１およびＹ断面設定オブジェクト４０２に両方にまたがるように、計測最下面設定バー４１０および計測最上面設定バー４１１が提供されている。ユーザは、計測最下面設定バー４１０および計測最上面設定バー４１１を操作して、キャリブレーション領域４１８の最上面および最下面を設定する。最上面および最下面は、３Ｄカメラ１０の光軸ＡＸ上に沿った有効範囲（Ｚ軸上の有効範囲）を設定するものである。すなわち、キャリブレーション領域４１８の設定として、撮像部である３Ｄカメラ１０の光軸ＡＸ上の範囲設定が可能になっている。
【００９２】
典型的には、計測最下面設定バー４１０により設定される最下面は、ロボット２が配置される床面などを考慮して設定される。また、計測最上面設定バー４１１により設定される最上面は、ロボット２がワークを把持して搬送する範囲などを考慮して設定される。
【００９３】
Ｘ断面設定オブジェクト４０１には、Ｘ軸方向幅設定バー４１２および４１３が提供されている。ユーザは、Ｘ軸方向幅設定バー４１２および４１３を操作して、キャリブレーション領域４１８のＸ軸断面における幅を設定する。すなわち、Ｘ軸方向幅設定バー４１２および４１３は、３Ｄカメラ１０の光軸ＡＸに直交する方向に沿った有効範囲（Ｘ軸上の有効範囲）を設定するものである。
【００９４】
同様に、Ｙ断面設定オブジェクト４０２には、Ｙ軸方向幅設定バー４１４および４１５が提供されている。ユーザは、Ｙ軸方向幅設定バー４１４および４１５を操作して、キャリブレーション領域４１８のＹ軸断面における幅を設定する。すなわち、Ｙ軸方向幅設定バー４１４および４１５は、３Ｄカメラ１０の光軸ＡＸに直交する方向に沿った有効範囲（Ｙ軸上の有効範囲）を設定するものである。
【００９５】
図８に示すように、ユーザは、ユーザインターフェイス画面４００において、任意のキャリブレーション領域４１８を設定できる。すなわち、ロボット制御システム１は、カメラ・ロボットキャリブレーションにおいて、ロボット２の作用部に関連付けられた基準プレート２０を配置すべき領域であるキャリブレーション領域４１８の設定を受付ける設定受付機能を有している。
【００９６】
設定されたキャリブレーション領域４１８に基づいて、カメラ・ロボットキャリブレーションが実行される。すなわち、キャリブレーション領域４１８の高さ方向の範囲は、計測最下面設定バー４１０および計測最上面設定バー４１１により規定される。また、キャリブレーション領域４１８の断面は、Ｘ軸方向幅設定バー４１２および４１３、ならびに、Ｙ軸方向幅設定バー４１４および４１５により規定される。その結果、キャリブレーション領域４１８は、撮像部である３Ｄカメラ１０の光軸ＡＸを基準とした直方体（立方体を含む）として設定されることになる。このとき、キャリブレーション領域４１８の断面幅は、３Ｄカメラ１０からの視野範囲４１６に応じて定まることになる。すなわち、キャリブレーション領域４１８として設定される直方体の断面の大きさは、３Ｄカメラ１０の視野範囲４１６と３Ｄカメラ１０からキャリブレーション領域４１８の端面までの距離とに応じて決定されることになる。
【００９７】
なお、必ずしもキャリブレーション領域４１８を直方体として設定する必要はなく、３Ｄカメラ１０の有効視野の形状に応じて、３Ｄカメラ１０側ほど断面が小さくなるような形状（例えば、四角錐の頂点部を切り落としたような形状）を設定してもよい。但し、現実のアプリケーションを想定すると、直方体として設定することが計測安定性などの観点から好ましい。
【００９８】
以上のような操作によって設定されたキャリブレーション領域４１８に従って、後述するようなカメラ・ロボットキャリブレーションが実行される。なお、キャリブレーション領域４１８は、対象のアプリケーションに応じて任意に設定される。例えば、対象のワークの形状などに応じて設定してもよい。具体的には、配置されたワークを把持して指定された位置に搬送する、ピックアンドプレイスなどのアプリケーションにおいては、ワークが入ったコンテナの形状などに基づいて、キャリブレーション領域４１８を設定してもよい。
【００９９】
このように、本実施の形態においては、ユーザは、ユーザインターフェイス画面４００上で、キャリブレーション領域４１８（すなわち、三次元座標の計測が必要な領域）を設定する。典型的には、ユーザインターフェイス画面４００内に表示される各設定バーをマウス操作などにより設定する。
【０１００】
すると、画像計測装置１００および／または制御装置２００は、設定されたキャリブレーション領域４１８に基づいて、基準プレート２０（図２）の相対移動位置をキャリブレーション領域４１８に対して過不足ないように決定する。その後、ユーザは、基準プレート２０を３Ｄカメラ１０の視野範囲４１６の中心に配置して、カメラ・ロボットキャリブレーションの実行を指示することになる。これにより、ロボット２に指令が与えられて、カメラ・ロボットキャリブレーションが実行される。
【０１０１】
（ｄ３：カメラ・ロボットキャリブレーションの概要）
ここで、カメラ・ロボットキャリブレーションの概略について説明する。カメラ・ロボットキャリブレーションは、典型的には、カメラ座標系上の位置および姿勢とロボット基準座標系上の位置および姿勢との間を相互変換するための行列の係数（パラメータ）を算出する処理を含む。
【０１０２】
ここで、ロボット２の先端にはハンドピース６が装着されており、ハンドピース６の位置を規定する座標系（以下、「ロボット先端座標系」とも称す。）を導入する。さらに、ハンドピース６に装着される基準プレート２０上のマーカ２２の位置を規定する座標系（以下、「マーカ座標系」とも称す。）を導入する。
【０１０３】
ここで、３Ｄカメラ１０のカメラ座標系とマーカ座標系との関係を示す行列をＡとする。この行列Ａは、３Ｄカメラ１０によりマーカ２２を認識することで推定できる。また、ロボット先端座標系とロボット基準座標系との関係を示す行列をＢとする。この行列Ｂは、制御装置２００からの指令に相当する。そして、以下の関係を満たす、行列Ｘおよび行列Ｚが推定される。
【０１０４】
ＡＸ＝ＺＢ
推定された行列Ｘおよび行列Ｚを用いることで、カメラ座標系での位置および姿勢をロボット基準座標系上の位置および姿勢に変換する計算式を得る。
【０１０５】
すなわち、カメラ・ロボットキャリブレーションにおいては、各位置における、画像計測装置１００による計測値および制御装置２００からの指令は既知であり、これらの値の組に基づいて、行列Ｘおよび行列Ｚが推定される。
【０１０６】
このような行列の推定には、カメラ座標系およびロボット基準座標系をそれぞれ基準とした三次元座標のデータセット（例えば、１０〜２０点）が必要となる。そのため、表面に１または複数のマーカ２２が描かれた基準プレート２０をロボット２の先端に装着して、以下のａ）およびｂ）の操作を１０〜２０回繰返す。
【０１０７】
ａ）マーカ２２が３Ｄカメラ１０の視野内に含まれるように、ロボット２の先端位置を所定位置に配置して、そのときのマーカ２２のロボット基準座標系上の位置および姿勢（ロボット２の先端位置および向き）を取得する
ｂ）ａ）の状態で、３Ｄカメラ１０による撮像を行なうことで、マーカ２２のカメラ座標系上の位置および姿勢を取得する
ａ）およびｂ）の操作を繰返すことで取得された位置および姿勢の組（１０〜２０個のデータセット）を用いて、上述したような行列を推定する。推定された行例を用いることで、カメラ・ロボットキャリブレーションにおけるロボット２と３Ｄカメラ１０との位置関係に基づく、任意の被写体のロボット基準座標系での位置および姿勢を算出できる。
【０１０８】
＜Ｅ．カメラ・ロボットキャリブレーション（自動）＞
次に、本実施の形態に従うロボット制御システム１におけるカメラ・ロボットキャリブレーションを自動的に実行する場合の処理例について説明する。
【０１０９】
図９は、本実施の形態に従うロボット制御システム１におけるカメラ・ロボットキャリブレーションの自動処理手順の一例を示すシーケンス図である。図９に示すように、カメラ・ロボットキャリブレーションの自動処理は、主として、画像計測装置１００および制御装置２００によって実行される。
【０１１０】
まず、画像計測装置１００は、カメラ・ロボットキャリブレーションの実行が指示されると、キャリブレーション領域の設定を受付けるためのユーザインターフェイス画面４００を表示部１１０に表示する（シーケンスＳＱ１００）。ユーザは、マウスといった入力部１０８を操作して、ユーザインターフェイス画面４００上でキャリブレーション領域を設定する（シーケンスＳＱ１０２）。画像計測装置１００は、シーケンスＳＱ１０２においてユーザが設定したキャリブレーション領域を受付ける（シーケンスＳＱ１０４）。
【０１１１】
続いて、画像計測装置１００は、３Ｄカメラ１０により撮像された画像に基づいて、３Ｄカメラ１０の視野内に基準プレート２０が存在しているか否かを判断する（シーケンスＳＱ１０６）。
【０１１２】
３Ｄカメラ１０の視野内に基準プレート２０が存在していない場合（シーケンスＳＱ１０６においてＮＯ）には、画像計測装置１００は、ユーザに対して、ティーチングペンダントなどでロボット２を操作して、基準プレート２０を３Ｄカメラ１０の視野内に配置するように通知する（シーケンスＳＱ１０８）。そして、シーケンスＳＱ１０６の処理が繰返される。
【０１１３】
３Ｄカメラ１０の視野内に基準プレート２０が存在している場合（シーケンスＳＱ１０６においてＹＥＳ）には、画像計測装置１００は、ユーザ操作を受けて（シーケンスＳＱ１１０）、シーケンスＳＱ１０４において受付けられたキャリブレーション領域の情報とともに、カメラ・ロボットキャリブレーションの開始指令を制御装置２００へ送信する（シーケンスＳＱ１１２）。キャリブレーション領域の情報は、キャリブレーション領域の各頂点の位置を示すカメラ座標系上の位置（直方体であれば８個の位置）を含む。
【０１１４】
制御装置２００は、まず、カメラ座標系において規定されたキャリブレーション領域に対応する、ロボット基準座標系上の位置を取得する（シーケンスＳＱ２００〜ＳＱ２０６）。
【０１１５】
具体的には、制御装置２００は、画像計測装置１００から取得したキャリブレーション領域の各頂点を示すカメラ座標系上の位置のうち、１つの位置を選択する（シーケンスＳＱ２００）。画像計測装置１００は、３Ｄカメラ１０により撮像された画像から計測された、基準プレート２０上のマーカ２２のカメラ座標系上の位置を取得して制御装置２００へ与える（シーケンスＳＱ１２０）。制御装置２００は、シーケンスＳＱ２００において選択した位置と、基準プレート２０上のマーカ２２のカメラ座標系上の位置との差に基づいて、基準プレート２０上のマーカ２２を選択した位置に配置するための指令（ロボット基準座標系上の位置）を算出し（シーケンスＳＱ２０２）、算出した指令をロボット制御装置３００へ与える（シーケンスＳＱ２０４）。
【０１１６】
シーケンスＳＱ１２０，ＳＱ２０２，ＳＱ２０４の処理（図９の※１の処理）は、シーケンスＳＱ２００において選択した位置と、基準プレート２０上のマーカ２２のカメラ座標系上の位置とが実質的に一致するまで繰返される。そして、シーケンスＳＱ２００において選択した位置と、基準プレート２０上のマーカ２２のカメラ座標系上の位置とが実質的に一致すると、制御装置２００は、当該一致した時点の指令、すなわちロボット基準座標系上の位置を、キャリブレーション領域の１つの頂点に対応する位置として格納する（シーケンスＳＱ２０６）。
【０１１７】
シーケンスＳＱ２００，ＳＱ１２０，ＳＱ２０２，ＳＱ２０４，ＳＱ２０６の処理（図９の※２の処理）は、画像計測装置１００から取得したキャリブレーション領域の頂点の数だけ繰返される。
【０１１８】
以上の処理によって、キャリブレーション領域の各頂点に対応するロボット基準座標系上の位置の組（直方体であれば８個の位置）が取得される。なお、必要に応じて、キャリブレーション領域の各頂点に対応するロボット基準座標系上の姿勢についても取得される。
【０１１９】
続いて、制御装置２００は、シーケンスＳＱ２０６において取得したロボット基準座標系上の位置の組に基づいて、基準プレート２０を配置すべき位置の組を決定する（シーケンスＳＱ２０８）。シーケンスＳＱ２０８においては、ロボット基準座標系上の複数の位置が決定される。制御装置２００は、基準プレート２０を配置すべき位置の組に加えて、基準プレート２０を移動させる軌跡などを決定してもよい。
【０１２０】
基準プレート２０を配置すべき位置の組は、例えば、キャリブレーション領域の頂点間を均等に所定数に分割することで決定してもよい。あるいは、均等ではなく、３Ｄカメラ１０からの距離が遠い領域ほど、より多くの位置を設定するようにしてもよい。
【０１２１】
上述したように、カメラ・ロボットキャリブレーションにおいては、１０〜２０個のデータセットが必要となるので、シーケンスＳＱ２０８においても、１０〜２０個の位置を決定することが好ましい。
【０１２２】
そして、制御装置２００は、シーケンスＳＱ２０８において決定した基準プレート２０を配置すべき複数の位置のうち、１つの位置を選択する（シーケンスＳＱ２１０）。そして、制御装置２００は、選択した位置（ロボット基準座標系上の位置）への基準プレート２０の配置を指示する指令をロボット制御装置３００へ与える（シーケンスＳＱ２１２）。制御装置２００によって実行されるシーケンスＳＱ２１０，ＳＱ２１２の処理は、ロボット２に指令を順次与えて、キャリブレーション領域内に基準プレート２０（基準物体）を順次配置する配置制御機能に相当する。
【０１２３】
ロボット２が指定された位置に基準プレート２０を配置すると、画像計測装置１００は、３Ｄカメラ１０により撮像された画像から計測された、基準プレート２０上のマーカ２２のカメラ座標系上の位置を取得して制御装置２００へ与える（シーケンスＳＱ１２２）。
【０１２４】
制御装置２００は、現在配置されている基準プレート２０の位置を示すロボット基準座標系上の位置（および姿勢）と、３Ｄカメラ１０が撮像した画像により計測されたカメラ座標系上の位置（および姿勢）とを対応付けて格納する（シーケンスＳＱ２１４）。
【０１２５】
シーケンスＳＱ２１０，ＳＱ１２２，ＳＱ２１２，ＳＱ２１４の処理（図９の※３の処理）は、シーケンスＳＱ２１０において決定された基準プレート２０を配置すべき位置の数だけ繰返される。
【０１２６】
以上の処理によって、カメラ・ロボットキャリブレーションに必要な、カメラ座標系上の位置とロボット基準座標系上の位置との対応関係を示すデータセットを取得できる。最終的に、制御装置２００は、取得したデータセットに基づいて、所定の演算処理を実行することで、カメラ座標系とロボット基準座標系との間の対応関係を規定する行列を推定する（シーケンスＳＱ２１６）。この推定された行列がカメラ・ロボットキャリブレーションの結果として格納される。すなわち、制御装置２００は、基準プレート２０（基準物体）がキャリブレーション領域内に順次配置されたときに取得される、基準プレート２０の三次元座標とロボット２の作用部の位置および姿勢との組に基づいて、キャリブレーションパラメータ（対応関係）を算出する。
【０１２７】
以上のような処理により、カメラ・ロボットキャリブレーションの実行が完了する。
図１０は、本実施の形態に従うロボット制御システム１におけるカメラ・ロボットキャリブレーションの自動処理において提供されるユーザインターフェイス画面の一例を示す模式図である。図１０に示されるユーザインターフェイス画面４２０は、３Ｄカメラ１０による撮像により得られる基準プレート２０についての三次元計測結果、および、３Ｄカメラ１０による撮像により得られる基準プレート２０についての二次元画像を同時に表示する。さらに、ユーザインターフェイス画面４２０は、ユーザが予め設定したキャリブレーション領域および基準プレート２０の高さを表示する。
【０１２８】
具体的には、ユーザインターフェイス画面４２０においては、３Ｄカメラ１０により撮像された画像に対して、予め設定されたキャリブレーション領域を示す有効領域枠４２２が表示される。ユーザインターフェイス画面４２０は、高さ表示バー４２４を含んでいる。高さ表示バー４２４は、Ｚ軸の計測可能範囲を表示するものである。なお、初期設定として、３Ｄカメラ１０とロボット２のベースまでの距離が入力されているとする。そして、画像計測装置１００により計測された基準プレート２０の高さ方向の位置を示すインジケータ４２６が高さ表示バー４２４に対応付けて表示される。
【０１２９】
図１０（Ａ）および図１０（Ｂ）に示すように、基準プレート２０の高さに応じて、キャリブレーション領域の断面の大きさは異なるので、ユーザインターフェイス画面４２０においても有効領域枠４２２の大きさは、基準プレート２０の高さに応じて変化することになる。
【０１３０】
ユーザは、ユーザインターフェイス画面４２０を参照して、基準プレート２０が設定したキャリブレーション領域内に存在しない場合には、ティーチングペンダントなどを操作して、基準プレート２０がキャリブレーション領域内に配置されるように調整する。
【０１３１】
図１０に示すようなユーザインターフェイス画面４２０を参照して、ユーザが初期設定を完了すると、上述したように、設定されたキャリブレーション領域に応じて、ロボット２が移動すべき範囲が自動的に決定される。このとき、３Ｄカメラ１０により撮像された二次元画像および三次元計測結果をフィードバック情報として利用して、ロボット２に対する移動量の指令などを逐次決定する。
【０１３２】
そして、決定されたロボット２の移動範囲の上限および下限からそれぞれ均等に移動ステップ量が決定される。そして、決定されたステップ量ずつ基準プレート２０を移動させつつ、二次元画像の取得および三次元計測を行なうことで、カメラ座標系上の位置とロボット基準座標系上の位置および姿勢との対応関係を取得する。そして、取得したカメラ座標系上の位置とロボット基準座標系上の位置および姿勢との相関関係に基づいて、カメラ・ロボットキャリブレーションを実行して、必要なパラメータを算出する。
【０１３３】
＜Ｆ．カメラ・ロボットキャリブレーション（手動）＞
次に、本実施の形態に従うロボット制御システム１におけるカメラ・ロボットキャリブレーションを手動で実行する場合の処理例について説明する。
【０１３４】
図１１は、本実施の形態に従うロボット制御システム１におけるカメラ・ロボットキャリブレーションの手動処理手順の一例を示すシーケンス図である。図１１に示すように、カメラ・ロボットキャリブレーションの手動処理は、主として、画像計測装置１００および制御装置２００によって実行される。
【０１３５】
まず、画像計測装置１００は、カメラ・ロボットキャリブレーションの実行が指示されると、キャリブレーション領域の設定を受付けるためのユーザインターフェイス画面４００を表示部１１０に表示する（シーケンスＳＱ１５０）。ユーザは、マウスといった入力部１０８を操作して、ユーザインターフェイス画面４００上でキャリブレーション領域を設定する（シーケンスＳＱ１５２）。画像計測装置１００は、シーケンスＳＱ１５２においてユーザが設定したキャリブレーション領域を受付ける（シーケンスＳＱ１５４）。
【０１３６】
続いて、画像計測装置１００は、設定されたキャリブレーション領域に基づいて、基準プレート２０を配置すべき位置の組を決定する（シーケンスＳＱ１５６）。すなわち、画像計測装置１００は、キャリブレーション実行機能として、キャリブレーション領域において基準プレート２０（基準物体）を配置すべき複数の位置を決定する位置決定機能を有している。シーケンスＳＱ１５６においては、カメラ座標系上の複数の位置が決定される。制御装置２００は、基準プレート２０を配置すべき位置の組に加えて、基準プレート２０を移動させる軌跡などを決定してもよい。
【０１３７】
基準プレート２０を配置すべき位置の組は、例えば、キャリブレーション領域の頂点間を均等に所定数に分割することで決定してもよい。あるいは、均等ではなく、３Ｄカメラ１０からの距離が遠い領域ほど、より多くの位置を設定するようにしてもよい。
【０１３８】
上述したように、カメラ・ロボットキャリブレーションにおいては、１０〜２０個のデータセットが必要となるので、シーケンスＳＱ１５６においても、１０〜２０個の位置を決定することが好ましい。
【０１３９】
続いて、画像計測装置１００は、シーケンスＳＱ１５６において決定した基準プレート２０を配置すべき複数の位置のうち、１つの位置を目標位置に選択する（シーケンスＳＱ１５８）。そして、画像計測装置１００は、３Ｄカメラ１０により撮像された画像に基づいて、基準プレート２０上のマーカ２２のカメラ座標系上の現在位置を取得し（シーケンスＳＱ１６０）、選択されている目標位置と取得した現在位置との差に基づいて、基準プレート２０が目標位置に配置されているか否かを判断する（シーケンスＳＱ１６２）。
【０１４０】
基準プレート２０が目標位置に配置されていない場合（シーケンスＳＱ１６２においてＮＯ）には、画像計測装置１００は、ユーザに基準プレート２０を目標位置に配置するための情報を通知する（シーケンスＳＱ１６４）。ユーザは、この通知を参照して、ティーチングペンダントなどを操作して、基準プレート２０が目標位置に配置されるように、ロボット２の位置および姿勢を調整する。そして、シーケンスＳＱ１６０以下の処理が繰返される。
【０１４１】
これに対して、基準プレート２０が目標位置に配置されている場合（シーケンスＳＱ１６２においてＹＥＳ）には、画像計測装置１００は、ユーザに対して基準プレート２０が目標位置に配置されていることを通知する（シーケンスＳＱ１６６）とともに、制御装置２００に対して、基準プレート２０上のマーカ２２のカメラ座標系上の位置（および姿勢）を送信する（シーケンスＳＱ１６８）。
【０１４２】
すると、制御装置２００は、現在配置されている基準プレート２０の位置を示すロボット基準座標系上の位置（および姿勢）をロボット制御装置３００から取得する（シーケンスＳＱ２５０）。そして、制御装置２００は、現在配置されている基準プレート２０の位置を示すロボット基準座標系上の位置（および姿勢）と、画像計測装置１００からのカメラ座標系上の位置（および姿勢）とを対応付けて格納する（シーケンスＳＱ２５２）。
【０１４３】
シーケンスＳＱ１５８〜ＳＱ１６８，ＳＱ２５０，ＳＱ２５２の処理（図１１の※４の処理）は、シーケンスＳＱ１５６において決定した基準プレート２０を配置すべき複数の位置の数だけ繰返される。
【０１４４】
以上の処理によって、カメラ・ロボットキャリブレーションに必要な、カメラ座標系上の位置とロボット基準座標系上の位置との対応関係を示すデータセットを取得できる。最終的に、制御装置２００は、取得したデータセットに基づいて、所定の演算処理を実行することで、カメラ座標系とロボット基準座標系との間の対応関係を規定する行列を推定する（シーケンスＳＱ２５４）。この推定された行列がカメラ・ロボットキャリブレーションの結果として格納される。すなわち、制御装置２００は、基準プレート２０（基準物体）がキャリブレーション領域内に順次配置されたときに取得される、基準プレート２０の三次元座標とロボット２の作用部の位置および姿勢との組に基づいて、キャリブレーションパラメータ（対応関係）を算出する。
【０１４５】
以上のような処理により、カメラ・ロボットキャリブレーションの実行が完了する。
図１２は、本実施の形態に従うロボット制御システム１におけるカメラ・ロボットキャリブレーションの手動処理において提供されるユーザインターフェイス画面の一例を示す模式図である。
【０１４６】
図１２は、本実施の形態に従うロボット制御システム１におけるカメラ・ロボットキャリブレーションの手動処理において提供されるユーザインターフェイス画面の一例を示す模式図である。図１２に示されるユーザインターフェイス画面４３０は、３Ｄカメラ１０による撮像により得られる基準プレート２０についての三次元計測結果、および、３Ｄカメラ１０による撮像により得られる基準プレート２０についての二次元画像を同時に表示する。さらに、ユーザインターフェイス画面４３０は、ユーザが予め設定したキャリブレーション領域および基準プレート２０の高さを表示する。
【０１４７】
具体的には、ユーザインターフェイス画面４３０においては、３Ｄカメラ１０により撮像された画像に対して、予め設定されたキャリブレーション領域を示す有効領域枠４２２が表示される。有効領域枠４２２に関連付けて、選択されている目標位置の二次元位置を示すインジケータ４３２が表示されている。
【０１４８】
なお、基準プレート２０の高さに応じて、キャリブレーション領域の断面の大きさは異なるので、ユーザインターフェイス画面４３０においても有効領域枠４２２の大きさは、基準プレート２０の高さに応じて変化することになる。
【０１４９】
ユーザインターフェイス画面４２０は、高さ表示バー４２４を含んでいる。高さ表示バー４２４は、Ｚ軸の計測可能範囲を表示するものである。なお、初期設定として、３Ｄカメラ１０とロボット２のベースまでの距離が入力されているとする。そして、画像計測装置１００により計測された基準プレート２０の高さ方向の位置を示すインジケータ４２６、および、選択されている目標位置の高さを示すインジケータ４２８が、高さ表示バー４２４に対応付けて表示される。
【０１５０】
図１２に示すように、画像計測装置１００は、決定された基準プレート２０を配置すべき複数の位置のうち一つと基準プレート２０（基準物体）の現在位置との関係を示す位置表示機能を提供する。
【０１５１】
ユーザは、ユーザインターフェイス画面４２０を参照することで、基準プレート２０を適切な位置に配置できる。すなわち、ユーザは、基準プレート２０の配置高さを予め指定された高さに合せるとともに、基準プレート２０の二次元位置を示すインジケータ４３２が基準プレート２０の中心と一致するように、ロボット２を操作する。このロボット２の操作中においても、３Ｄカメラ１０による二次元画像の取得および三次元計測は繰返し実行される。
【０１５２】
そして、基準プレート２０が選択された目標位置に配置されると、そのときのカメラ座標系上の位置およびロボット基準座標系上の位置および姿勢が関連付けて格納される。この一連の操作および処理が、カメラ・ロボットキャリブレーションを実行するための数だけ繰返される。最終的に、取得したカメラ座標系上の位置とロボット基準座標系上の位置および姿勢との相関関係に基づいて、カメラ・ロボットキャリブレーションを実行して、必要なパラメータを算出する。
【０１５３】
なお、ユーザが操作を誤って基準プレート２０がキャリブレーション領域外に存在するようになった場合には、何らかの通知をユーザに行なうようにしてもよい。このような通知形態としては、表示色の変更、注意を促すメッセージの表示、警報音の発生などを採用してもよい。図１２（Ｂ）に示すユーザインターフェイス画面４３０においては、警告メッセージ４３４が表示されている例を示す。このような警告を行なうことで、カメラ・ロボットキャリブレーションを効率的に実行できる。
【０１５４】
あるいは、ユーザの誤操作により基準プレート２０の位置が適切な領域から大きく外れる場合などには、制御装置２００からロボット制御装置３００に指令を与えて、あるいは、ロボット制御装置３００に実装されている保護機能などを用いて、ロボット２を強制的に停止するようにしてもよい。
【０１５５】
＜Ｇ．変形例＞
上述した実施の形態に対しては、以下のような変形も可能である。
【０１５６】
（ｇ１：実装形態）
上述の説明においては、主として画像計測装置１００および制御装置２００が連係することで、本実施の形態に係るカメラ・ロボットキャリブレーションを実現する実装形態について説明したが、実装形態としてはこれに限られるものではない。
【０１５７】
例えば、画像計測装置１００および制御装置２００が提供する機能は、互いに入れ替えてもよいし、画像計測装置１００および制御装置２００を一体の装置として構成してもよい。さらに、ロボット制御装置３００を含めて一体の装置として構成することもできる。
【０１５８】
すなわち、上述したような処理および機能を提供できる構成であれば、どのような実装形態を採用してもよい。
【０１５９】
（ｇ２：自動処理および手動処理）
説明の便宜上、カメラ・ロボットキャリブレーションの自動処理および手動処理の両方を実行可能なロボット制御システム１を例示したが、必ずしも両方の処理を実装する必要はない。要求仕様やアプリケーションなどに応じて、いずれかの一方の処理のみを実装するようにしてもよい。
【０１６０】
（ｇ３：基準プレート２０の位置および経路）
カメラ・ロボットキャリブレーションの実行に必要なデータセットを取得するための、基準プレート２０を配置する位置は、任意に設定できる。また、設定された複数の位置に基準プレート２０を順次配置する経路についても任意に設定できる。但し、基準プレート２０を順次配置する経路については、作業の効率化のため、所定の最適化アルゴリズムに従って、最短経路を設定するようにしてもよい。
【０１６１】
＜Ｈ．付記＞
上述したような本実施の形態は、以下のような技術思想を含む。
［構成１］
ロボット制御システム（１）であって、
ロボット（２）の作用部（８）を視野内に含むように配置された撮像部（１０）と、
前記撮像部により撮像された画像に基づいて、当該撮像部の視野内に存在する任意の対象物の三次元座標を計測する計測部（５２；１００）と、
前記計測された三次元座標と前記ロボットの作用部の位置および姿勢との間の予め算出された対応関係に従って、前記ロボットの前記作用部を位置決めするための指令を生成する指令生成部（５４；２００）と、
前記対応関係を算出するためのキャリブレーションを実行するキャリブレーション実行部（５８；１００；２００）と、
前記キャリブレーションにおいて、前記ロボットの作用部に関連付けられた基準物体（２０）を配置すべき領域であるキャリブレーション領域（４１８）の設定を受付ける設定受付部（６０；４００）とを備える、ロボット制御システム。
［構成２］
前記設定受付部は、前記撮像部を基準として、設定されているキャリブレーション領域の範囲を示す、構成１に記載のロボット制御システム。
［構成３］
前記設定受付部は、前記撮像部の視野範囲（４１６）を併せて表示する、構成２に記載のロボット制御システム。
［構成４］
前記キャリブレーション領域は、前記撮像部の光軸（ＡＸ）を基準とした直方体として設定される、構成１〜３のいずれか１項に記載のロボット制御システム。
［構成５］
前記キャリブレーション領域として設定される直方体の断面の大きさは、前記撮像部の視野と前記撮像部から前記キャリブレーション領域の端面までの距離とに応じて、決定される、構成４に記載のロボット制御システム。
［構成６］
前記設定受付部は、前記キャリブレーション領域の設定として、前記撮像部の光軸（ＡＸ）上の範囲設定を受付ける、構成４または５に記載のロボット制御システム。
［構成７］
前記キャリブレーション実行部は、
前記ロボットに指令を順次与えて、前記キャリブレーション領域内に前記基準物体を順次配置する配置制御部（２００；ＳＱ２１０，ＳＱ２１２）と、
前記基準物体が前記キャリブレーション領域内に順次配置されたときに取得される、前記基準物体の三次元座標と前記ロボットの作用部の位置および姿勢との組に基づいて、前記対応関係を算出する算出部（２００；ＳＱ２１６）とを含む、構成１〜６のいずれか１項に記載のロボット制御システム。
［構成８］
前記キャリブレーション実行部は、
前記キャリブレーション領域において前記基準物体を配置すべき複数の位置を決定する位置決定部（１００；ＳＱ１５６）と、
前記決定された複数の位置のうち一つと前記基準物体の現在位置との関係を示す位置表示部（１００；ＳＱ１６４）と、
前記基準物体が前記決定された複数の位置に順次配置されたときに取得される、前記基準物体の三次元座標と前記ロボットの作用部の位置および姿勢との組に基づいて、前記対応関係を算出する算出部（２００；ＳＱ２５４）とを含む、構成１〜６のいずれか１項に記載のロボット制御システム。
【０１６２】
＜Ｉ．利点＞
本実施の形態に従うロボット制御システムのように、３Ｄカメラにより撮像された画像に関連付けられるカメラ座標系とロボットを制御するためのロボット基準座標系との間のカメラ・ロボットキャリブレーションを実行するにあたっては、ロボットにより基準物体を所定位置に配置する必要があり、基準物体の位置および姿勢の指定が容易ではない。
【０１６３】
すなわち、基準物体を計測視野内に収める必要があり、基準物体を床面に接触させてはならず、不慣れなユーザは、このような要求を満たしつつロボットを操作することが難しい場合がある。
【０１６４】
さらに、３Ｄカメラにより撮像される二次元画像に基づいてカメラ・キャリブレーションを実行した場合には、３Ｄカメラの遠方側の三次元計測が不可能な領域についても対象に含まれることがあり、ムダな領域について、カメラ・キャリブレーションを実行することになる。また、３Ｄカメラの近接側および遠方側では、有効視野の大きさが異なっており、光軸方向に沿って基準物体を位置決めする場合には、動作させるべき範囲を自動的に設定することが難しい。
【０１６５】
このような課題に対して、本実施の形態に従うロボット制御システムにおいては、３Ｄカメラを基準としてカメラ・ロボットキャリブレーションを実行すべき領域（キャリブレーション領域）を任意に設定できる。このとき、３Ｄカメラの有効視野を合せて表示できるので、適切なキャリブレーション領域の設定が可能となる。そして、設定されたキャリブレーション領域に関して、自動的あるいは手動でカメラ・ロボットキャリブレーションを実行できる。
【０１６６】
また、本実施の形態においては、光軸方向のいずれの位置においても、キャリブレーション領域の断面を実質的に同一の大きさに設定することで、基準物体を配置する位置を自動的に決定できるとともに、アプリケーションに応じた設定を容易化できる。
【０１６７】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１６８】
１  ロボット制御システム、２  ロボット、４  アーム、６  ハンドピース、８  作用部、１０  ３Ｄカメラ、１１  処理部、１２  投光部、１３，５０  撮像部、１４，１１０  表示部、１５  記憶部、１６，１１４，２０８，３０８  通信インターフェイス（Ｉ／Ｆ）部、２０  基準プレート、２２  マーカ、５２  計測部、５４  指令生成部、５６，２０６０  キャリブレーションパラメータ、５８  キャリブレーション実行部、６０  設定受付部、１００  画像計測装置、１０２，２０２，３０２  プロセッサ、１０４，２０４，３０４  メインメモリ、１０６，２０６，３０６  ストレージ、１０８  入力部、１１２  光学ドライブ、１１３  記録媒体、１１６，２３０，３１２  プロセッサバス、２００  制御装置、２１０，２１２  フィールドネットワークコントローラ、２１４  ＵＳＢコントローラ、２１６  メモリカードインターフェイス、２１８  メモリカード、２２０  ローカルバスコントローラ、２２２  ローカルバス、３００  ロボット制御装置、３１０  ドライブコントローラ、３２０  サーボドライバ、３３０  モータ、４００，４２０，４３０  ユーザインターフェイス画面、４０１，４０２  断面設定オブジェクト、４０３  有効視野表示、４１０  計測最下面設定バー、４１１  計測最上面設定バー、４１２，４１４  軸方向幅設定バー、４１６  視野範囲、４１８  キャリブレーション領域、４２２  有効領域枠、４２４  表示バー、４２６，４２８，４３２  インジケータ、４３４  警告メッセージ、１０６０  ＯＳ、１０６２  三次元計測プログラム、１０６４  モデルデータ、１０６６  設定受付プログラム、２０６２  指令生成プログラム、２０６４  キャリブレーション実行プログラム、ＡＸ  光軸。
【図１】
2019217571.tif 000003
【図２】
2019217571.tif 000004
【図３】
2019217571.tif 000005
【図４】
2019217571.tif 000006
【図５】
2019217571.tif 000007
【図６】
2019217571.tif 000008
【図７】
2019217571.tif 000009
【図８】
2019217571.tif 000010
【図９】
2019217571.tif 000011
【図１０】
2019217571.tif 000012
【図１１】
2019217571.tif 000013
【図１２】
2019217571.tif 000014