(57)【特許請求の範囲】
【請求項１】
ロボットの動作を制御するロボットコントローラと、
該ロボットコントローラとデータ通信することが可能に接続された通信装置、及び前記ロボットのエンドエフェクタにより把持されたキャリブレーションターゲットを撮像する撮像装置を含む画像処理装置とで構成される画像処理システムであって、
前記画像処理装置は、
撮像の対象となる前記キャリブレーションターゲットと前記撮像装置との相対位置を変化させるよう、複数の所定の位置に前記エンドエフェクタを移動させるための移動命令コード及び移動先の位置座標を含む移動命令を前記ロボットコントローラに対して送信する命令送信手段と、
前記移動命令に応じて移動した前記エンドエフェクタの各位置座標である第一の座標値を取得する移動座標取得手段と、
前記エンドエフェクタが移動した各位置座標にて該エンドエフェクタにて把持されたキャリブレーションターゲットを撮像するよう前記撮像装置の動作を制御する撮像制御手段と、
前記撮像装置により撮像された前記キャリブレーションターゲットの画像に基づいて前記キャリブレーションターゲットの位置座標である第二の座標値を検出する画像検出手段と、
取得した複数の前記第一の座標値と、検出した複数の前記第二の座標値とに基づいて、両座標間の変換規則を算出するキャリブレーション実行手段と
を備え、
前記ロボットコントローラは、
前記移動命令に含まれる移動命令コードを検出し、前記画像処理装置から送信された共通のフォーマットの移動命令を、ロボットの種別に応じた前記エンドエフェクタの移動命令に変換するプログラム変換手段
を備えることを特徴とする画像処理システム。
【請求項２】
前記画像処理装置は、
撮像された前記キャリブレーションターゲットの位置座標である前記第二の座標値を検出する座標検出手段と、
検出された前記第二の座標値を前記変換規則に基づいて前記第一の座標値に変換する座標変換手段と、
撮像された前記キャリブレーションターゲットの画像を表示する表示手段と、
表示されている前記キャリブレーションターゲットの画像上で、位置の指定を受け付ける位置指定受付手段と
を備え、
前記座標変換手段により、指定を受け付けた位置の第二の座標値を前記変換規則に基づいて前記第一の座標値に変換することを特徴とする請求項１に記載の画像処理システム。
【請求項３】
前記画像処理装置は、
前記移動座標取得手段により取得した前記第一の座標値を、前記変換規則に基づいて前記第二の座標値に変換し、表示されている前記キャリブレーションターゲットの画像上に重畳して表示することを特徴とする請求項１又は２に記載の画像処理システム。
【請求項４】
ロボットの動作を制御するロボットコントローラと、
該ロボットコントローラとデータ通信することが可能に接続された通信装置、及び前記ロボットのエンドエフェクタにより把持されたキャリブレーションターゲットを撮像する撮像装置を含む画像処理装置とで構成される画像処理システムで実行することが可能な画像処理方法であって、
前記画像処理装置が前記ロボットコントローラに対して、撮像の対象となる前記キャリブレーションターゲットと前記撮像装置との相対位置を変化させるよう、複数の所定の位置に前記エンドエフェクタを移動させるための移動命令コード及び移動先の位置座標を含む移動命令を送信する工程と、
前記ロボットコントローラが、前記移動命令に含まれる移動命令コードを検出し、前記画像処理装置から送信された共通のフォーマットの移動命令を、ロボットの種別に応じた前記エンドエフェクタの移動命令に変換する工程と、
前記ロボットコントローラが、前記移動命令に応じて前記エンドエフェクタを前記移動先の位置座標に移動させる工程と、
前記画像処理装置が、前記ロボットコントローラから前記移動命令に応じて移動した前記エンドエフェクタの各位置座標である第一の座標値を取得する工程と、
前記画像処理装置が、前記エンドエフェクタが移動した各位置座標にて該エンドエフェクタにて把持されたキャリブレーションターゲットを撮像するよう前記撮像装置の動作を制御する工程と、
前記画像処理装置が、前記撮像装置により撮像された前記キャリブレーションターゲットの画像に基づいて前記キャリブレーションターゲットの位置座標である第二の座標値を検出する工程と、
前記画像処理装置が、取得した複数の前記第一の座標値と、検出した複数の前記第二の座標値とに基づいて、両座標間の変換規則を算出する工程と
を含むことを特徴とする画像処理方法。
【請求項５】
ロボットの動作を制御するロボットコントローラとデータ通信することが可能な通信装置と、
前記ロボットのエンドエフェクタにより把持されたキャリブレーションターゲットを撮像する撮像装置と
を有する画像処理装置で実行することが可能なコンピュータプログラムであって、
前記画像処理装置を、
撮像の対象となる前記キャリブレーションターゲットと前記撮像装置との相対位置を変化させるよう、複数の所定の位置に前記エンドエフェクタを移動させるための移動命令コード及び移動先の位置座標を含む移動命令を前記ロボットコントローラに対して送信する命令送信手段、
前記ロボットコントローラにより前記移動命令に含まれる移動命令コードが検出され、前記画像処理装置から送信された共通のフォーマットの移動命令を、ロボットの種別に応じて変換された前記エンドエフェクタの移動命令に応じて移動した前記エンドエフェクタの各位置座標である第一の座標値を取得する移動座標取得手段、
前記エンドエフェクタが移動した各位置座標にて該エンドエフェクタにて把持されたキャリブレーションターゲットを撮像するよう前記撮像装置の動作を制御する撮像制御手段、
前記撮像装置により撮像された前記キャリブレーションターゲットの画像に基づいて前記キャリブレーションターゲットの位置座標である第二の座標値を検出する画像検出手段、及び
取得した複数の前記第一の座標値と、検出した複数の前記第二の座標値とに基づいて、両座標間の変換規則を算出するキャリブレーション実行手段
として機能させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複雑なロボット動作制御プログラムを作成することなく、高い精度でキャリブレーションを実行することができる画像処理装置、画像処理システム、画像処理方法及びコンピュータプログラムに関する。
【背景技術】
【０００２】
撮像装置によりロボットの作業領域を撮像して、撮像された画像内のワークの位置を検出し、検出されたワークの位置情報を撮像された画像に基づいて算出することで、ロボットの動作を高い精度で制御する制御システムが多々開発されている。例えば特許文献１では、撮像装置を含むセンサにより検出された情報に基づいてロボットの動作を制御するロボット制御装置が開示されている。また、特許文献２では、外部のコンピュータでコンパイルしたロードモジュール（ロボット動作制御プログラム）を送信することでロボットの動作を制御するロボット制御装置が開示されている。
【０００３】
このように従来のロボット制御システムでは、精緻な動作制御をするべく、画像処理装置において表示される座標系で算出された位置座標を、ロボットコントローラがエンドエフェクタを動作させる座標系の位置座標へと座標変換をする必要がある。座標変換を行うための変換式を算出する処理をキャリブレーションと呼んでいる。ここで、エンドエフェクタとは、例えばワークを把持して固着できるロボットアームの先端部分を意味する。
【０００４】
キャリブレーションの実行時には、例えばロボットのエンドエフェクタにてワークを把持し、エンドエフェクタを複数の所定の位置に移動させた状態におけるロボットの位置座標と、ワークを撮像装置で撮像し、撮像された画像に基づいて検出した画像上での位置座標とを比較することで、変換式を算出することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平０４−１３４５０１号公報
【特許文献２】特開平０９−０９１０２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
キャリブレーションを正しく実行するためには、ロボットコントローラがエンドエフェクタを適切な位置に移動させ、移動先において撮像指示信号を画像処理装置に対して送信し、次の位置にエンドエフェクタを移動させる。これを複数回繰り返すようシーケンシャルなロボット動作制御プログラムをユーザが作成する必要があった。
【０００７】
また、ユーザは、撮像指示信号を受信してワークの位置を検出するための処理を画像処理装置において行う必要があった。つまり、ユーザがロボット動作制御プログラム及び画像処理装置の設定の両方に熟練が必要であり、システム全体の立ち上げまでに相当の時間を要する遠因ともなっている。
【０００８】
さらに、ロボットコントローラがロボットの動作制御の主体となっており、撮像装置を含むセンサの動作まで制御している。したがって、ロボット動作制御プログラムに精通していなければ所望の動作をさせることが困難であり、キャリブレーションも正確に実行させることができないという問題点もあった。
【０００９】
本発明は斯かる事情に鑑みてなされたものであり、複雑なロボット動作制御プログラムを作成することなく、高い精度でキャリブレーションを実行することができる画像処理装置、画像処理システム、画像処理方法及びコンピュータプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
上記目的を達成するために第１発明に係る画像処理システムは、ロボットの動作を制御するロボットコントローラと、該ロボットコントローラとデータ通信することが可能に接続された通信装置、及び前記ロボットのエンドエフェクタにより把持されたキャリブレーションターゲットを撮像する撮像装置を含む画像処理装置とで構成される画像処理システムであって、前記画像処理装置は、撮像の対象となる前記キャリブレーションターゲットと前記撮像装置との相対位置を変化させるよう、複数の所定の位置に前記エンドエフェクタを移動させるための移動命令コード及び移動先の位置座標を含む移動命令を前記ロボットコントローラに対して送信する命令送信手段と、前記移動命令に応じて移動した前記エンドエフェクタの各位置座標である第一の座標値を取得する移動座標取得手段と、前記エンドエフェクタが移動した各位置座標にて該エンドエフェクタにて把持されたキャリブレーションターゲットを撮像するよう前記撮像装置の動作を制御する撮像制御手段と、前記撮像装置により撮像された前記キャリブレーションターゲットの画像に基づいて前記キャリブレーションターゲットの位置座標である第二の座標値を検出する画像検出手段と、取得した複数の前記第一の座標値と、検出した複数の前記第二の座標値とに基づいて、両座標間の変換規則を算出するキャリブレーション実行手段とを備え、前記ロボットコントローラは、前記移動命令に含まれる移動命令コードを検出し、前記画像処理装置から送信された共通のフォーマットの移動命令を、ロボットの種別に応じた前記エンドエフェクタの移動命令に変換するプログラム変換手段を備えることを特徴とする。
【００１８】
また、第２発明に係る画像処理システムは、第１発明において、前記画像処理装置は、撮像された前記キャリブレーションターゲットの画像を表示する表示手段と、表示されている前記キャリブレーションターゲットの画像上で、位置の指定を受け付ける位置指定受付手段とを備え、指定を受け付けた位置の第二の座標値を前記変換規則に基づいて前記第一の座標値に変換することが好ましい。
【００１９】
また、第３発明に係る画像処理システムは、第１又は第２発明において、前記画像処理装置は、前記移動座標取得手段により取得した前記第一の座標値を、前記変換規則に基づいて前記第二の座標値に変換し、表示されている前記キャリブレーションターゲットの画像上に重畳して表示することが好ましい。
【００２２】
次に、上記目的を達成するために第４発明に係る画像処理方法は、ロボットの動作を制御するロボットコントローラと、該ロボットコントローラとデータ通信することが可能に接続された通信装置、及び前記ロボットのエンドエフェクタにより把持されたキャリブレーションターゲットを撮像する撮像装置を含む画像処理装置とで構成される画像処理システムで実行することが可能な画像処理方法であって、前記画像処理装置が前記ロボットコントローラに対して、撮像の対象となる前記キャリブレーションターゲットと前記撮像装置との相対位置を変化させるよう、複数の所定の位置に前記エンドエフェクタを移動させるための移動命令コード及び移動先の位置座標を含む移動命令を送信する工程と、前記ロボットコントローラが、前記移動命令に含まれる移動命令コードを検出し、前記画像処理装置から送信された共通のフォーマットの移動命令を、ロボットの種別に応じた前記エンドエフェクタの移動命令に変換する工程と、前記ロボットコントローラが、前記移動命令に応じて前記エンドエフェクタを前記移動先の位置座標に移動させる工程と、前記画像処理装置が、前記ロボットコントローラから前記移動命令に応じて移動した前記エンドエフェクタの各位置座標である第一の座標値を取得する工程と、前記画像処理装置が、前記エンドエフェクタが移動した各位置座標にて該エンドエフェクタにて把持されたキャリブレーションターゲットを撮像するよう前記撮像装置の動作を制御する工程と、前記画像処理装置が、前記撮像装置により撮像された前記キャリブレーションターゲットの画像に基づいて前記キャリブレーションターゲットの位置座標である第二の座標値を検出する工程と、前記画像処理装置が、取得した複数の前記第一の座標値と、検出した複数の前記第二の座標値とに基づいて、両座標間の変換規則を算出する工程とを含むことを特徴とする。
【００２３】
次に、上記目的を達成するために第５発明に係るコンピュータプログラムは、ロボットの動作を制御するロボットコントローラとデータ通信することが可能な通信装置と、前記ロボットのエンドエフェクタにより把持されたキャリブレーションターゲットを撮像する撮像装置とを有する画像処理装置で実行することが可能なコンピュータプログラムであって、前記画像処理装置を、撮像の対象となる前記キャリブレーションターゲットと前記撮像装置との相対位置を変化させるよう、複数の所定の位置に前記エンドエフェクタを移動させるための移動命令コード及び移動先の位置座標を含む移動命令を前記ロボットコントローラに対して送信する命令送信手段、前記ロボットコントローラにより前記移動命令に含まれる移動命令コードが検出され、前記画像処理装置から送信された共通のフォーマットの移動命令を、ロボットの種別に応じて変換された前記エンドエフェクタの移動命令に応じて移動した前記エンドエフェクタの各位置座標である第一の座標値を取得する移動座標取得手段、前記エンドエフェクタが移動した各位置座標にて該エンドエフェクタにて把持されたキャリブレーションターゲットを撮像するよう前記撮像装置の動作を制御する撮像制御手段、前記撮像装置により撮像された前記キャリブレーションターゲットの画像に基づいて前記キャリブレーションターゲットの位置座標である第二の座標値を検出する画像検出手段、及び取得した複数の前記第一の座標値と、検出した複数の前記第二の座標値とに基づいて、両座標間の変換規則を算出するキャリブレーション実行手段として機能させることを特徴とする。
【００２４】
第１発明、第４発明及び第５発明では、画像処理装置は、ロボットコントローラに対して、撮像の対象となるキャリブレーションターゲットと撮像装置との相対位置を変化させるよう、複数の所定の位置にエンドエフェクタを移動させるための移動命令コード及び移動先の位置座標を含む移動命令をロボットコントローラに対して送信する。ロボットコントローラは、移動命令に含まれる移動命令コードを検出し、画像処理装置から送信された共通のフォーマットの移動命令を、ロボットの種別に応じたエンドエフェクタの移動命令に変換し、移動命令に応じてエンドエフェクタを移動先の位置座標に移動させる。画像処理装置は、ロボットコントローラから移動命令に応じて移動したエンドエフェクタの各位置座標である第一の座標値を取得する。エンドエフェクタが移動した各位置座標にて該エンドエフェクタにて把持されたキャリブレーションターゲットを撮像する。画像処理装置は、撮像装置により撮像されたキャリブレーションターゲットの画像に基づいてキャリブレーションターゲットの位置座標である第二の座標値を検出する。画像処理装置は、取得した複数の第一の座標値と、検出した複数の第二の座標値とに基づいて、両座標間の変換規則を算出する。これにより、画像処理装置からロボットコントローラに対してロボットの動作を制御する移動命令を送信することができるので、ユーザがロボットの種別ごとに異なる機械語を理解する必要がなく、ロボットの動作を高い精度で制御できるよう、ロボットコントローラが認識する位置座標（第一の座標値）と、撮像されたキャリブレーションターゲットの画像から検出した位置座標（第二の座標値）との変換規則を求めることが可能となる。
【００２７】
第２発明では、画像処理装置は、撮像されたキャリブレーションターゲットの画像を表示し、表示されているキャリブレーションターゲットの画像上で、位置の指定を受け付け、指定を受け付けた位置の第二の座標値を変換規則に基づいて第一の座標値に変換するので、画像上でロボットの移動先を指示することができ、受け付けた指定通りの位置にロボットを移動させることが可能となる。
【００２８】
第３発明では、画像処理装置は、取得した第一の座標値を、変換規則に基づいて第二の座標値に変換し、表示されているキャリブレーションターゲットの画像上に重畳して表示するので、ロボットの移動後の位置を表示されているキャリブレーションターゲットの画像上で確認することが可能となる。
【発明の効果】
【００３１】
本発明によれば、画像処理装置からロボットコントローラに対してロボットの動作を制御する移動命令を送信することができるので、ユーザがロボットの種別ごとに異なる機械語を理解する必要がなく、ロボットの動作を高い精度で制御できるよう、ロボットコントローラが認識する位置座標（第一の座標値）と、撮像された対象物の画像から検出した位置座標（第二の座標値）との変換規則を求めることが可能となる。
【図面の簡単な説明】
【００３２】
【図１】本発明の実施の形態１に係る画像処理システムの構成を示す模式図である。
【図２】本発明の実施の形態１に係る画像処理システムの画像処理装置の構成例を示すブロック図である。
【図３】従来のキャリブレーションの処理手順を示すフローチャートである。
【図４】本発明の実施の形態１に係る画像処理装置の機能ブロック図である。
【図５】本発明の実施の形態１に係る画像処理システムのキャリブレーションの処理手順を示すフローチャートである。
【図６】本発明の実施の形態１に係る画像処理装置の開始位置設定画面の例示図である。
【図７】本発明の実施の形態１に係る画像処理装置の検出ツール設定画面の例示図である。
【図８】本発明の実施の形態１に係る画像処理装置の移動パターンの設定画面の例示図である。
【図９】本発明の実施の形態１に係る画像処理装置の移動パターンの設定画面の例示図である。
【図１０】本発明の実施の形態１に係る画像処理装置の輪郭検出ツールを用いる場合の検出条件設定画面の例示図である。
【図１１】本発明の実施の形態１に係る画像処理装置の輪郭検出ツールを用いる場合の検出条件設定画面の例示図である。
【図１２】本発明の実施の形態１に係る画像処理装置の濃淡検出ツールを用いる場合の検出条件設定画面の例示図である。
【図１３】本発明の実施の形態１に係る画像処理装置の濃淡検出ツールを用いる場合の検出条件設定画面の例示図である。
【図１４】本発明の実施の形態１に係る画像処理装置の移動先選択画面の例示図である。
【図１５】本発明の実施の形態１に係る画像処理装置の移動先選択画面の他の例示図である。
【図１６】本発明の実施の形態１に係るロボットコントローラの機能ブロック図である。
【図１７】本発明の実施の形態１に係るロボットコントローラの変換プログラムの処理手順を示すフローチャートである。
【図１８】本発明の実施の形態１に係るロボットコントローラの変換プログラムの例示図である。
【図１９】本発明の実施の形態１に係るオフハンド型式の画像処理システムの構成を示す模式図である。
【図２０】本発明の実施の形態１に係る画像処理装置のオフハンド型式での撮像位置を示す模式図である。
【図２１】本発明の実施の形態１に係るオンハンド型式の画像処理システムの構成を示す模式図である。
【図２２】本発明の実施の形態１に係る画像処理装置のオンハンド型式での撮像位置を示す模式図である。
【図２３】本発明の実施の形態１に係る画像処理装置の処理手順の違いを示すフローチャートである。
【図２４】本発明の実施の形態２に係る画像処理システムにおけるピッキングの実行を説明するための模式図である。
【図２５】本発明の実施の形態２に係る画像処理システムのピッキングの処理手順を示すフローチャートである。
【図２６】本発明の実施の形態２に係る画像処理システムのワークの位置検出画面の例示図である。
【図２７】本発明の実施の形態２に係る画像処理システムのワークの移動画面の例示図である。
【図２８】本発明の実施の形態２に係る画像処理システムのキャリブレーション結果の選択画面の例示図である。
【図２９】本発明の実施の形態２に係る画像処理システムのマスター位置の登録処理を説明するための模式図である。
【図３０】本発明の実施の形態２に係る画像処理装置のマスター位置の登録画面の例示図である。
【図３１】本発明の実施の形態２に係る画像処理装置のプログラム生成画面の例示図である。
【図３２】本発明の実施の形態２に係るロボットコントローラのプログラムの例示図である。
【図３３】本発明の実施の形態３に係る画像処理装置のプログラム生成画面の例示図である。
【図３４】本発明の実施の形態３に係る画像処理システムにおける試運転時の動作を説明するための模式図である。
【図３５】本発明の実施の形態３に係る画像処理システムの試運転時の処理手順を示すフローチャートである。
【図３６】本発明の実施の形態に係る画像処理システムの三次元のキャリブレーションの処理手順を示すフローチャートである。
【発明を実施するための形態】
【００３３】
以下、本発明の実施の形態に係る画像処理システムについて、図面に基づいて具体的に説明する。
【００３４】
（実施の形態１）
図１は、本発明の実施の形態１に係る画像処理システムの構成を示す模式図である。
【００３５】
図１に示すように、本実施の形態１に係る画像処理システムは、対象物（ワーク）６を移動させるマニピュレータ（ロボット）１、マニピュレータ１の動作を制御するロボットコントローラ２、画像処理装置３、及び撮像装置４で構成されている。マニピュレータ１の先端には、対象物６を把持又は解放することが可能なエンドエフェクタ５が設けられており、ロボットコントローラ２はエンドエフェクタ５の開閉動作も制御する。
【００３６】
撮像装置４は、例えばカラーＣＣＤカメラであり、移動する対象物であるワーク６を撮像する。撮像された画像に基づいて、後述するキャリブレーションを実行することにより、実際のワーク６の位置座標（エンドエフェクタ５の移動位置の座標）と、画面に表示された画像上の位置座標とをリンクさせることができる。
【００３７】
マニピュレータ１は、３本のアームで構成されており、２本のアームが互いになす角度、及びアーム支点の回転により、エンドエフェクタ５を所望の位置へ移動させる。
【００３８】
図２は、本発明の実施の形態１に係る画像処理システムの画像処理装置３の構成例を示すブロック図である。本発明の実施の形態１に係る画像処理装置３は、少なくともＣＰＵ（中央演算装置）等で構成された制御部３１、メモリ３２、記憶装置３３、入出力インタフェース３４、表示インタフェース３５、通信インタフェース３６及び上述したハードウェアを接続する内部バス３７で構成されている。
【００３９】
制御部３１は、内部バス３７を介して画像処理装置３の上述したようなハードウェア各部と接続されており、上述したハードウェア各部の動作を制御するとともに、記憶装置３３に記憶されているコンピュータプログラムに従って、種々のソフトウェア的機能を実行する。メモリ３２は、ＳＲＡＭ、ＳＤＲＡＭ等の揮発性メモリで構成され、コンピュータプログラムの実行時にロードモジュールが展開され、コンピュータプログラムの実行時に発生する一時的なデータ等を記憶する。
【００４０】
記憶装置３３は、内蔵される固定型記憶装置（ハードディスク）、ＳＲＡＭ等の揮発性メモリ、ＲＯＭ等の不揮発性メモリ等で構成されている。記憶装置３３に記憶されているコンピュータプログラムは、プログラム及びデータ等の情報を記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体からダウンロード、あるいは通信インタフェース３６を介してダウンロードされ、実行時には記憶装置３３からメモリ３２へ展開して実行される。
【００４１】
通信インタフェース（通信装置）３６は内部バス３７に接続されており、インターネット、ＬＡＮ、ＷＡＮ等の外部のネットワークに接続されることにより、外部のコンピュータ等とデータ送受信を行うことが可能となっている。
【００４２】
入出力インタフェース３４は、キーボード３８、マウス３９等のデータ入力媒体と接続され、データの入力を受け付ける。また、表示インタフェース３５は、ＣＲＴモニタ、ＬＣＤ等の表示装置４０と接続され、所定の画像を表示する。
【００４３】
従来、マニピュレータ１の動作制御は、ロボットコントローラ２に記憶されているシーケンシャルな動作制御プログラムにより行われていた。その場合、マニピュレータ１のエンドエフェクタ５の実際の位置座標と、画像処理装置３に表示されている画像上の位置座標との間でキャリブレーションを実行する必要がある。
【００４４】
キャリブレーションは、複数の位置座標について、マニピュレータ１のエンドエフェクタ５の実際の位置座標と、画像処理装置３に表示されている画像上の位置座標との間の変換式を算出する。座標変換の方法は、特に限定されるものではなく、例えばアフィン変換で変換する。
【００４５】
【数１】
0006486679.tif 000002
【００４６】
（式１）に示すように、マニピュレータ１のエンドエフェクタ５の実際の位置座標（ｘ’、ｙ’）と、画像処理装置３に表示されている画像上の位置座標（ｘ、ｙ）とに基づいて、６つの自由度を有する変換式の係数ａ、ｂ、ｃ、ｄ、ｅ、ｆを求める。対応する位置座標が６つを超える場合には、最小二乗法を用いれば良い。
【００４７】
図３は、従来のキャリブレーションの処理手順を示すフローチャートである。図３に示すように、ロボットコントローラ２は、マニピュレータ１に撮像対象となるマークを付与したワーク６を、キャリブレーションターゲットとして把持させた状態で、エンドエフェクタ５をキャリブレーション位置へと移動させる（ステップＳ３０１）。
【００４８】
ロボットコントローラ２は、移動したエンドエフェクタ５の位置座標（ｘ’、ｙ’）を取得して（ステップＳ３０２）、計測命令及び取得した位置座標（ｘ’、ｙ’）を画像処理装置３へ送信する（ステップＳ３０３）。画像処理装置３は、ロボットコントローラ２から計測命令及び取得した位置座標（ｘ’、ｙ’）を受信し（ステップＳ３０４）、エンドエフェクタ５の動作領域を撮像する（ステップＳ３０５）。
【００４９】
画像処理装置３は、エンドエフェクタ５の動作領域の画像を表示し、表示されている画像上の位置座標（ｘ、ｙ）を検出する（ステップＳ３０６）。ロボットコントローラ２は、キャリブレーション用のすべての位置座標（ｘ’、ｙ’）について画像上の位置座標（ｘ、ｙ）を検出したか否かを判断する（ステップＳ３０７）。ロボットコントローラ２が、まだすべての位置座標（ｘ’、ｙ’）について画像上の位置座標（ｘ、ｙ）を検出していないと判断した場合（ステップＳ３０７：ＮＯ）、ロボットコントローラ２は、次の移動命令を発行し（ステップＳ３０８）、処理をステップＳ３０１へ戻して、上述した処理を繰り返す。
【００５０】
ロボットコントローラ２が、すべての位置座標（ｘ’、ｙ’）について画像上の位置座標（ｘ、ｙ）を検出したと判断した場合（ステップＳ３０７：ＹＥＳ）、画像処理装置３は、（式１）に従って変換式を算出する（ステップＳ３０９）。具体的には、６つの係数ａ、ｂ、ｃ、ｄ、ｅ、ｆを求める。
【００５１】
しかし、従来のキャリブレーションでは、マニピュレータ１の種別ごとに固有のシーケンシャルな制御プログラムが必要となる。したがって、機種ごとに個別の制御プログラムによりキャリブレーションを実行しなければならない。そこで、画像処理装置３において主たるキャリブレーションを実行する。
【００５２】
図４は、本発明の実施の形態１に係る画像処理装置３の機能ブロック図である。画像処理装置３の命令送信部３０１は、撮像の対象となる対象物と撮像装置４との相対位置を変化させるよう、複数の所定の位置にエンドエフェクタ５を移動させる移動命令をロボットコントローラ２に対して送信する。
【００５３】
命令送信部３０１は、少なくとも移動指示及び移動先の位置座標を含む移動命令をロボットコントローラ２へ送信する。ロボットコントローラ２は、移動命令に含まれる位置座標へとエンドエフェクタ５を移動させる。
【００５４】
移動座標取得部３０２は、移動命令に応じて移動したエンドエフェクタ５の各位置座標である第一の座標値（ｘ’、ｙ’）を、ロボットコントローラ２から取得する。移動したエンドエフェクタ５の位置座標と、撮像された対象物６の画像上での位置座標との位置ずれを調整することができる。
【００５５】
なお、移動座標取得部３０２において取得する第一の座標値（ｘ’、ｙ’）は、画像処理装置３からの移動命令に応じてエンドエフェクタ５が移動した各位置において、ロボットコントローラ２から取得した座標値としているが、画像処理装置３において事前に設定されたマニピュレータ（ロボット）１の移動目標座標をそのまま第一の座標値としても良い。
【００５６】
撮像制御部３０３は、エンドエフェクタ５が移動した各移動先にて対象物を撮像するよう撮像装置４の動作を制御する。これにより、ロボットコントローラ２から取得した移動先のエンドエフェクタ５の位置座標である第一の座標値（ｘ’、ｙ’）に対応する領域を撮像するよう制御することで、撮像された画像に基づいて対象物６の実際の位置座標である第二の座標値（ｘ、ｙ）を検出することができる。
【００５７】
画像検出部３０４は、各移動先にて撮像された対象物６の画像に基づいて対象物の位置座標である第二の座標値（ｘ、ｙ）を検出する。キャリブレーション実行部３０９は、取得した複数の第一の座標値（ｘ’、ｙ’）と、検出した複数の第二の座標値（ｘ、ｙ）とに基づいて、両座標間の変換規則を算出する。具体的には（式１）に座標値を代入して、係数ａ、ｂ、ｃ、ｄ、ｅ、ｆを求める。
【００５８】
図５は、本発明の実施の形態１に係る画像処理システムのキャリブレーションの処理手順を示すフローチャートである。図５に示すように、画像処理装置３は、マニピュレータ１に撮像対象となるマークを付与したワーク６を、キャリブレーションターゲットとして把持させた状態で、キャリブレーションの開始位置を設定する（ステップＳ５０１）。図６は、本発明の実施の形態１に係る画像処理装置３の開始位置設定画面の例示図である。
【００５９】
図６に示すように、撮像された対象物６の画像は画像表示領域６５に表示されている。キャリブレーションの実行ボタンのうち、開始位置設定ボタン６１が選択されると、開始位置設定画面６６がポップアップ表示され、開始位置を設定する。この場合、ジョグ操作ボタン６７を選択することで、マニピュレータ１のエンドエフェクタ５を所定の位置に移動させることができる。したがって、移動先を確認しながらキャリブレーションの開始位置を設定することができる。
【００６０】
なお、移動パターンを設定する前に、検出ツールを設定することができる。図７は、本発明の実施の形態１に係る画像処理装置３の検出ツール設定画面の例示図である。
【００６１】
図７に示すように、キャリブレーションの実行ボタンのうち、検出ツール設定ボタン６２が選択されると、検出ツール選択領域７１が表示される。ユーザは、画像表示領域６５に表示されている画像を見ながら、検出ツール選択領域７１において検出ツールを選択する。図７の例では、輪郭検出ツールを選択している。これ以外に、例えば濃淡検出ツールを選択しても良い。
【００６２】
図５に戻って、画像処理装置３は、マニピュレータ１のエンドエフェクタ５の移動パターンを設定する（ステップＳ５０２）。図８及び図９は、本発明の実施の形態１に係る画像処理装置３の移動パターンの設定画面の例示図である。
【００６３】
図８に示すように、キャリブレーションの実行ボタンのうち、キャリブレーションボタン６３が選択されると、移動パターン設定画面８１がポップアップ表示される。ここで、移動パターンの設定ボタン８２を選択すると、図９に示すように、詳細設定画面８３がポップアップ表示される。
【００６４】
詳細設定画面８３では、キャリブレーション実行時の検出パターンを設定する。例えば、３×３の９個、５×５の２５個等の設定を受け付ける。所定の移動距離を設定することで、詳細設定画面８３の下部に表示されるような移動パターンが設定される。
【００６５】
図５に戻って、画像処理装置３は移動命令をロボットコントローラ２へ送信する（ステップＳ５０３）。ロボットコントローラ２は、移動命令を受信して（ステップＳ５０４）、移動命令をマニピュレータ１の種別に応じて解釈する（ステップＳ５０５）。すなわち、マニピュレータ１を稼働させることが可能な機械語のロードモジュールに翻訳する。
【００６６】
ロボットコントローラ２は、エンドエフェクタ５を移動命令で指定されている位置へと移動させ（ステップＳ５０６）。ロボットコントローラ２は、エンドエフェクタ５の移動先の位置座標（ｘ’、ｙ’）を取得して（ステップＳ５０７）、取得した位置座標（ｘ’、ｙ’）を画像処理装置３へ送信する（ステップＳ５０８）。
【００６７】
画像処理装置３は、ロボットコントローラ２から、取得した位置座標（ｘ’、ｙ’）を受信し（ステップＳ５０９）、エンドエフェクタ５の動作領域を撮像する（ステップＳ５１０）。画像処理装置３は、動作領域の画像を表示し、表示されている画像上の位置座標（ｘ、ｙ）を検出する（ステップＳ５１１）。
【００６８】
なお、表示されている画像上のどの位置の位置座標（ｘ、ｙ）を検出するかは、設定されている検出ツールを用いて画像中から検出する。例えば検出ツールとして、輪郭検出ツールが選択されている場合、検出される輪郭領域を指定する必要がある。
【００６９】
図１０及び図１１は、本発明の実施の形態１に係る画像処理装置３の輪郭検出ツールを用いる場合の検出条件設定画面の例示図である。図１０に示すように、ツール表示領域１０１において、選択されている「輪郭検出ツール」が表示されている。そして、パターン編集領域１０２において、輪郭パターンの形状を設定する。図１０の例では矩形領域に設定されている。
【００７０】
そして、画像表示領域６５に表示されている対象物において、マウス等でドラッグ操作をしながら、輪郭パターンを検出する検出領域１０３を設定する。図１０の例では、対象物を囲むように設定しているが、特にこのような設定に限定されるものではない。
【００７１】
検出領域１０３が設定されると、図１１に示すように、検出条件設定画面１０４において、検出条件を設定する。検出条件としては、例えば対象物の傾きの許容範囲である「角度範囲」、検出する個数を示す「検出個数」、どの程度まで類似していれば検出するかを示す「相関値下限」等を設定する。
【００７２】
また、検出ツールとして、濃淡検出ツールを選択しても良い。濃淡検出ツールが選択されている場合であっても、検出する領域を設定する必要がある。
【００７３】
図１２及び図１３は、本発明の実施の形態１に係る画像処理装置３の濃淡検出ツールを用いる場合の検出条件設定画面の例示図である。図１２に示すように、ツール表示領域１０１において、選択されている「濃淡検出ツール」が表示されている。そして、パターン編集領域１０２において、輪郭パターンの形状を設定する。図１２の例では矩形領域に設定されている。
【００７４】
そして、画像表示領域６５に表示されている対象物において、マウス等でドラッグ操作をしながら、輪郭パターンを検出する検出領域１０３を設定する。図１２の例では、対象物を囲むように設定しているが、特にこのような設定に限定されるものではない。
【００７５】
検出領域１０３が設定されると、図１３に示すように、検出条件設定領域１３１において、検出条件を設定する。検出条件としては、例えば対象物の傾きの許容範囲である「角度範囲」、検出する個数を示す「検出個数」、どの程度まで類似していれば検出するかを示す「相関値下限」等の他、検出感度（サーチ感度）あるいは検出精度（サーチ精度）についても設定することができる。形状が同じであっても、濃淡差等に違いが生じている場合が想定されるからである。
【００７６】
図５に戻って、画像処理装置３は、キャリブレーション用のすべての位置座標（ｘ’、ｙ’）について画像上の位置座標（ｘ、ｙ）を検出したか否かを判断する（ステップＳ５１２）。画像処理装置３が、まだすべての位置座標（ｘ’、ｙ’）について画像上の位置座標（ｘ、ｙ）を検出していないと判断した場合（ステップＳ５１２：ＮＯ）、画像処理装置３は、次の移動命令を発行し（ステップＳ５１３）、処理をステップＳ５０３へ戻して、上述した処理を繰り返す。
【００７７】
画像処理装置３が、すべての位置座標（ｘ’、ｙ’）について画像上の位置座標（ｘ、ｙ）を検出したと判断した場合（ステップＳ５１２：ＹＥＳ）、画像処理装置３は、（式１）に従って変換式を算出する（ステップＳ５１４）。具体的には、６つの係数ａ、ｂ、ｃ、ｄ、ｅ、ｆを求める。
【００７８】
なお、移動命令で移動先を指定する方法は、特に限定されるものではない。例えば事前に複数の移動先を記憶させておき、その中から選択する方法であっても良い。図１４は、本発明の実施の形態１に係る画像処理装置３の移動先選択画面の例示図である。図１４に示すように、移動先選択領域１４１に、既に記憶されている移動先の候補が表示されている。ユーザは、この中から１つの移動先を選択すれば良い。
【００７９】
また、表示されている画像上で位置を指定しても良い。図１５は、本発明の実施の形態１に係る画像処理装置３の移動先選択画面の他の例示図である。図１５の例では、移動先選択領域１４１が存在しない。あくまでも撮像された画像が表示されている画像表示領域６５において、現在の位置を「十」印１５１で表示している。ユーザは、マウス等のクリック操作により、移動先の位置「十」印１５２を指定すれば良い。
【００８０】
この場合、キャリブレーションの実行により、（式１）の係数ａ、ｂ、ｃ、ｄ、ｅ、ｆが特定されることを前提として、図４において、座標検出部３０５、座標変換部３０６、表示部３０７、及び位置指定受付部３０８を備えることが必要となる。
【００８１】
座標検出部３０５は、撮像された対象物６の画像に基づいて対象物６の実際の位置座標である第二の座標値（ｘ、ｙ）を検出する。そして、座標変換部３０６は、検出された第二の座標値（ｘ、ｙ）を変換規則に基づいて第一の座標値（ｘ’、ｙ’）に変換する。
【００８２】
表示部３０７は、撮像された対象物６の画像を表示し、位置指定受付部３０８は、表示されている対象物６の画像上で、位置の指定を受け付ける。これにより、指定を受け付けた位置の第二の座標値を検出することができるので、表示されている画像を見ながらマニピュレータ１のエンドエフェクタ５に対して正確な移動命令を発行することができる。
【００８３】
また、移動後の位置座標を、表示されている対象物６の画像上に重畳して表示しても良い。すなわち、移動座標取得部３０２により取得した第一の座標値を、算出された変換規則に基づいて第二の座標値に変換し、表示されている対象物６の画像上に重畳して表示すれば良い。
【００８４】
また、ロボットコントローラ２は、動作を制御するマニピュレータ（ロボット）１の種別に応じて、移動命令を変換する必要がある。図１６は、本発明の実施の形態１に係るロボットコントローラ２の機能ブロック図である。
【００８５】
図１６に示すように、ロボットコントローラ２は、プログラム変換部２０１を備えている。プログラム変換部２０１は、マニピュレータ（ロボット）１の種別ごとに提供されており、移動命令をマニピュレータ１の種別に応じたエンドエフェクタ５への移動命令に変換する。これにより、使用するマニピュレータ１の種別に応じた変換プログラムをロボットコントローラ２にインストールすることができ、マニピュレータ１の種別に応じたエンドエフェクタ５の移動命令に変換することができる。
【００８６】
図１７は、本発明の実施の形態１に係るロボットコントローラ２の変換プログラムの処理手順を示すフローチャートである。図１７に示すように、ロボットコントローラ２は、画像処理装置３とデータ通信を確立し（ステップＳ１７０１）、移動命令を受信したか否かを判断する（ステップＳ１７０２）。
【００８７】
ロボットコントローラ２が、受信していないと判断した場合（ステップＳ１７０２：ＮＯ）、ロボットコントローラ２は、受信待ち状態となる。ロボットコントローラ２が、受信したと判断した場合（ステップＳ１７０２：ＹＥＳ）、ロボットコントローラ２は、最初の移動命令を解釈する（ステップＳ１７０３）。
【００８８】
ロボットコントローラ２は、解釈した移動命令の内容に沿って移動命令を変換して、マニピュレータ１のエンドエフェクタ５を移動させる（ステップＳ１７０４）。ロボットコントローラ２は、すべての移動命令を解釈したか否かを判断する（ステップＳ１７０５）。
【００８９】
ロボットコントローラ２が、まだ解釈していない移動命令があると判断した場合（ステップＳ１７０５：ＮＯ）、ロボットコントローラ２は、次の移動命令を解釈して（ステップＳ１７０６）、処理をステップＳ１７０４へ戻して上述した処理を繰り返す。ロボットコントローラ２が、すべての移動命令を解釈したと判断した場合（ステップＳ１７０５：ＹＥＳ）、ロボットコントローラ２は、処理を終了する。
【００９０】
図１８は、本発明の実施の形態１に係るロボットコントローラ２の変換プログラムの例示図である。図１８に示すように、ソースコード１８０１は、画像処理装置３とのデータ通信を確立する命令である。
【００９１】
ソースコード１８０２は、画像処理装置３から移動命令を受信する命令である。ソースコード１８０３は、移動命令を解釈する命令である。図１８に示すソースコードでは、例えば移動命令「ＭＶ、１００、２００、３００」を受信した場合、命令コード「ＭＶ」を検出し、移動先の位置として（１００、２００、３００）を記憶することになる。このように移動命令のデータ構造に合わせた変換プログラムを準備することにより、外部から移動命令を受け付けることができる。
【００９２】
また、一般に移動命令のデータ構造は、ロボットメーカーに応じて相違する。そこで、ロボットメーカーごとに変換プログラムを事前に用意しておき、使用するロボットメーカーに応じた変換プログラムをロボットコントローラ２にインストールする。これにより、ロボットコントローラ２は、画像処理装置３から送信された共通のフォーマットの移動命令を、ロボットの種別に応じたエンドエフェクタ５の移動命令に変換することができる。
【００９３】
なお、上述した例では、移動命令を文字列で記載しており、イーサネット（登録商標）のノン−プロトコル通信で送信しているが、例えばロボットコントローラ２の共有メモリにおいて、アドレスＡＡＡには命令を、アドレスＢＢＢには命令のパラメータを、それぞれ割り当てることで文字列を用いずに、数値データをやり取りすることで命令体系を構成することもできる。画像処理装置３から数値での移動命令を受信した場合、アドレスＡＡＡは移動命令「ＭＶ」に相当する数値番号で、アドレスＢＢＢは「１００、２００、３００」で書き換えられ、マニピュレータ１に対する移動命令として発行される。
【００９４】
もちろん、これ以外のプロトコル、例えばイーサネット（登録商標）のプロトコル通信、ＰＬＣリンク、ＣＣ−Ｌｉｎｋ、ＰＲＯＦＩＮＥＴ等の各プロトコル通信を用いても良い。
【００９５】
また、上述した実施の形態１では、撮像装置４をマニピュレータ１とは別個に備えることを前提としている（以下、オフハンド型式）。図１９は、本発明の実施の形態１に係るオフハンド型式の画像処理システムの構成を示す模式図である。
【００９６】
図１９では、マニピュレータ１に撮像対象となるマーク６０を付与したワーク（対象物）６を、キャリブレーションターゲットとして把持させた状態で、エンドエフェクタ５を移動させて撮像装置４で撮像する。
【００９７】
図２０は、本発明の実施の形態１に係る画像処理装置３のオフハンド型式での撮像位置を示す模式図である。図２０（ａ）は、エンドエフェクタ５の移動順序を示しており、原点（０、０）から反時計回りに一定間隔で移動する。一方、図２０（ｂ）は、撮像装置４でマーク６０を撮像する順序を示している。撮像装置４はマニピュレータ１とは別個に固定的に備えているので、図２０（ａ）と同様に、原点（０、０）から反時計回りに一定間隔で撮像する。
【００９８】
一方、撮像装置４をマニピュレータ１のエンドエフェクタ５に一体として装着しても良い。この場合、撮像装置４はエンドエフェクタ５と一体となって移動する（以下、オンハンド型式）。図２１は、本発明の実施の形態１に係るオンハンド型式の画像処理システムの構成を示す模式図である。
【００９９】
図２１では、撮像装置４がマニピュレータ１のエンドエフェクタ５と一体に設けられているので、撮像対象となるマーク６０は撮像装置４で撮像することが可能な領域に付与される。そして、エンドエフェクタ５を移動させつつ撮像装置４で撮像する。
【０１００】
図２２は、本発明の実施の形態１に係る画像処理装置３のオンハンド型式での撮像位置を示す模式図である。図２２（ａ）は、エンドエフェクタ５の移動順序を示しており、原点（０、０）から反時計回りに一定間隔で移動する。一方、図２２（ｂ）は、撮像装置４でマーク６０を撮像する順序を示している。撮像装置４はマニピュレータ１と一体となって移動するので、原点（０、０）から図２２（ａ）と点対称となるように一定間隔で撮像する。すなわち、移動距離に‘−１’を乗算した位置で撮像する。
【０１０１】
図２３は、本発明の実施の形態１に係る画像処理装置３の処理手順の違いを示すフローチャートである。図２３（ａ）は、オフハンド型式での処理手順を示すフローチャートを、図２３（ｂ）は、オンハンド型式での処理手順を示すフローチャートを、それぞれ示している。
【０１０２】
まずオフハンド型式では、図２３（ａ）に示すように、マニピュレータ１に撮像対象となるマーク６０を付与したワーク６を把持させた状態で（ステップＳ２３０１）、画像処理装置３は、移動先の位置座標（ｘ’、ｙ’）を取得し（ステップＳ２３０２）、エンドエフェクタ５の動作領域を撮像する（ステップＳ２３０３）。画像処理装置３は、動作領域の画像を表示し、表示されている画像上の位置座標（ｘ、ｙ）を検出する（ステップＳ２３０４）。
【０１０３】
画像処理装置３は、キャリブレーション用のすべての位置座標（ｘ’、ｙ’）について画像上の位置座標（ｘ、ｙ）を検出したか否かを判断する（ステップＳ２３０５）。画像処理装置３が、まだすべての位置座標（ｘ’、ｙ’）について画像上の位置座標（ｘ、ｙ）を検出していないと判断した場合（ステップＳ２３０５：ＮＯ）、画像処理装置３は、次の移動命令を発行し（ステップＳ２３０６）、処理をステップＳ２３０２へ戻して、上述した処理を繰り返す。
【０１０４】
画像処理装置３が、すべての位置座標（ｘ’、ｙ’）について画像上の位置座標（ｘ、ｙ）を検出したと判断した場合（ステップＳ２３０５：ＹＥＳ）、画像処理装置３は、（式１）に従って変換式を算出する（ステップＳ２３０７）。具体的には、６つの係数ａ、ｂ、ｃ、ｄ、ｅ、ｆを求める。
【０１０５】
次に、オンハンド型式では、図２３（ｂ）に示すように、撮像対象となるマーク６０を撮像装置４の直下に設定した状態で（ステップＳ２３１１）、画像処理装置３は、移動先の位置座標（ｘ’、ｙ’）を取得し（ステップＳ２３１２）、エンドエフェクタ５の動作領域を撮像する（ステップＳ２３１３）。画像処理装置３は、動作領域の画像を表示し、表示されている画像上の位置座標（ｘ、ｙ）を検出する（ステップＳ２３１４）。
【０１０６】
画像処理装置３は、キャリブレーション用のすべての位置座標（ｘ’、ｙ’）について画像上の位置座標（ｘ、ｙ）を検出したか否かを判断する（ステップＳ２３１５）。画像処理装置３が、まだすべての位置座標（ｘ’、ｙ’）について画像上の位置座標（ｘ、ｙ）を検出していないと判断した場合（ステップＳ２３１５：ＮＯ）、画像処理装置３は、次の移動命令を発行し（ステップＳ２３１６）、処理をステップＳ２３１２へ戻して、上述した処理を繰り返す。
【０１０７】
画像処理装置３が、すべての位置座標（ｘ’、ｙ’）について画像上の位置座標（ｘ、ｙ）を検出したと判断した場合（ステップＳ２３１５：ＹＥＳ）、画像処理装置３は、位置座標（ｘ、ｙ）に‘−１’を乗算して（ステップＳ２３１７）、（式１）に従って変換式を算出する（ステップＳ２３１８）。具体的には、６つの係数ａ、ｂ、ｃ、ｄ、ｅ、ｆを求める。
【０１０８】
以上のように本実施の形態１によれば、画像処理装置３からロボットコントローラ２に対してマニピュレータ（ロボット）１のエンドエフェクタ５の動作を制御する移動命令を送信することができるので、ユーザがマニピュレータ（ロボット）１の種別ごとに異なる機械語を理解する必要がなく、マニピュレータ１の動作を高い精度で制御できるよう、ロボットコントローラ２が認識する位置座標（第一の座標値）と、撮像された対象物（ワーク）６の画像から検出した位置座標（第二の座標値）との変換規則を求めることが可能となる。
【０１０９】
（実施の形態２）
本発明の実施の形態２に係る画像処理システムの構成、画像処理装置３の構成は、実施の形態１と同様であることから、同一の機能を有する構成要素については同一の符号を付することにより詳細な説明は省略する。本実施の形態２は、キャリブレーションの結果を用いてワーク（対象物）６のピッキングを実行する点で、実施の形態１とは相違する。
【０１１０】
図２４は、本発明の実施の形態２に係る画像処理システムにおけるピッキングの実行を説明するための模式図である。図２４に示すように、本実施の形態２に係る画像処理システムは、ワーク６をピックアップ位置２４１からプレース位置２４２へと移動させる。具体的には、撮像装置４でピックアップ位置２４１のワーク６を撮像しながら、ワーク６をマニピュレータ１のエンドエフェクタ５で把持し、プレース位置２４２まで移動してからワーク６を解放する。
【０１１１】
図２５は、本発明の実施の形態２に係る画像処理システムのピッキングの処理手順を示すフローチャートである。図２５に示すように、ロボットコントローラ２は、マニピュレータ１のエンドエフェクタ５により撮像対象であるワーク６を撮像装置４で撮像することができない事態を回避するために、マニピュレータ１のエンドエフェクタ５を撮像領域内から移動する（ステップＳ２５０１）。
【０１１２】
ロボットコントローラ２は、撮像命令を画像処理装置３へ送信する（ステップＳ２５０２）。画像処理装置３は、撮像命令を受信して（ステップＳ２５０３）、ワーク６を撮像する（ステップＳ２５０４）。画像処理装置３は、ワーク６の画像を表示し、表示されている画像上のワーク６の位置座標（ｘ、ｙ）を検出して（ステップＳ２５０５）、キャリブレーションにより求めてある変換式を用いて位置座標（ｘ’、ｙ’）へ変換する（ステップＳ２５０６）。
【０１１３】
図２６は、本発明の実施の形態２に係る画像処理システムのワーク６の位置検出画面の例示図である。図２６に示すように、撮像されたワーク６の画像が画像表示領域６５に表示されている。
【０１１４】
十印２６１が、ワーク６の画像が表示されていた位置座標を、十印２６２が、ワーク６の移動先を示している。
【０１１５】
図２７は、本発明の実施の形態２に係る画像処理システムのワーク６の移動画面の例示図である。図２７の例では、エンドエフェクタ５が撮像されているので、ワーク６がエンドエフェクタ５の陰となって画像に表示されていない。
【０１１６】
しかし、画像上に重畳して、ワーク６の画像が表示されていた位置座標を示す十印２６１、ワーク６の移動先を示す十印２６２が表示されている。したがって、ワーク６自体の画像が表示されていない場合であっても、エンドエフェクタ５を移動させて、図２６のような表示状態にしたうえで移動先を指定しても良い。
【０１１７】
なお、キャリブレーションの結果を複数記憶しておき、いずれかの結果を選択するようにしても良い。図２８は、本発明の実施の形態２に係る画像処理システムのキャリブレーション結果の選択画面の例示図である。
【０１１８】
図２８に示すように、キャリブレーションデータ表示ボタン２８２をマウス操作等によりクリックすると、プルダウンメニュー２８１に記憶されているキャリブレーション結果が表示される。すなわち、キャリブレーションごとに係数が特定された（式１）の変換規則が記憶されているので、記憶されている変換規則を選択可能に表示する。
【０１１９】
ユーザは、プルダウンメニュー２８１から、一のキャリブレーション結果を選択する。これにより、マニピュレータ１を高い精度で動作制御することができる。
【０１２０】
図２５に戻って、画像処理装置３は、変換された実際の位置座標（ｘ’、ｙ’）をロボットコントローラ２へ送信する（ステップＳ２５０７）。ロボットコントローラ２は、位置座標（ｘ’、ｙ’）を受信し（ステップＳ２５０８）、ワーク６を把持するピックアップ位置２４１へエンドエフェクタ５を移動させる（ステップＳ２５０９）。ロボットコントローラ２は、エンドエフェクタ５にワーク６を把持させる（ステップＳ２５１０）。
【０１２１】
ロボットコントローラ２は、ワーク６を把持しながらエンドエフェクタ５をプレース位置２４２へ移動させ（ステップＳ２５１１）、エンドエフェクタ５にワーク６を解放させる（ステップＳ２５１２）。なお、破線で囲まれている範囲の処理、すなわちステップＳ２５１０、ステップＳ２５１２以外の処理は、動作プログラムを自動生成することができる。
【０１２２】
また、マニピュレータ１のエンドエフェクタ５の位置と、画像上での位置との位置合わせをしておくことが好ましい。実際の位置座標（ｘ’、ｙ’）を、対象物６の画像に基づいて検出された画像上の位置座標（ｘ、ｙ）から高い精度で求めるためである。
【０１２３】
図２９は、本発明の実施の形態２に係る画像処理システムのマスター位置の登録処理を説明するための模式図である。まず、図２９（ａ）に示すように、ワーク６をエンドエフェクタ５で把持し、把持した状態の位置座標（ｘ’、ｙ’）を記憶する。
【０１２４】
次に、図２９（ｂ）に示すように、ロボットコントローラ２は、ワーク６を把持した状態のエンドエフェクタ５を直下に載置して、ワーク６を解放する。図２９（ｃ）に示すように、ワーク６を解放した後、エンドエフェクタ５を直上に移動し、撮像装置４によりワーク６を撮像する。マニピュレータ１のエンドエフェクタ５が、撮像装置４により撮像された画像に含まれる場合、すなわちエンドエフェクタ５によりワーク６の画像を撮像することができない場合には、エンドエフェクタ５が映り込まないようエンドエフェクタ５を移動させてから撮像装置４で撮像する。撮像された画像は、画像処理装置３の記憶装置３３に記憶される。
【０１２５】
このように、ワーク６を把持する位置の画像及び位置座標（ｘ’、ｙ’）を対応付けて記憶することにより、エンドエフェクタ５の位置とワーク６の位置とにずれが生じている場合であっても、ワーク６を把持することができる位置までエンドエフェクタ５を移動させることができるよう、動作を制御することが可能となる。
【０１２６】
図３０は、本発明の実施の形態２に係る画像処理装置３のマスター位置の登録画面の例示図である。図３０に示すように、撮像装置４が、エンドエフェクタ５によりワーク６を把持した状態で、エンドエフェクタ５の中心位置ＴＣＰの座標値及び中心位置ＴＣＰからオフセットした位置座標の座標値を取得する。取得したエンドエフェクタ５の中心位置ＴＣＰの座標値及び中心位置ＴＣＰからオフセットした位置座標の座標値は、座標表示領域３００１に表示される。
【０１２７】
そして、移動ボタン３００２をマウス等によりクリック操作することにより、登録したエンドエフェクタ５の中心位置ＴＣＰに、マニピュレータ１のエンドエフェクタ５を容易に戻すことが可能となる。
【０１２８】
マニピュレータ１の動作を制御するための、ロボットコントローラ２で実行されるプログラムは自動的に生成しても良い。図３１は、本発明の実施の形態２に係る画像処理装置３のプログラム生成画面の例示図である。
【０１２９】
図３１において、シーケンス選択領域３１１では、生成されるプログラムで実行したい処理をプルダウンメニューの中から選択する。また、生成されるプログラムで制御する対象となるマニピュレータ（ロボット）１の製造元であるメーカを、メーカ選択領域３１２において選択する。生成されるプログラムは、メーカごとに仕様が異なるからである。
【０１３０】
すべての設定が完了した状態で、プログラム出力ボタン３１３をマウス等によりクリック操作することにより、ロボットコントローラ２のプログラムが生成される。図３２は、本発明の実施の形態２に係るロボットコントローラ２のプログラムの例示図である。
【０１３１】
図３２に示すように、ソースコード３２１は、画像処理装置３とのデータ通信を確立する命令である。ソースコード３２２は、撮像装置４を退避させる命令である。ソースコード３２３は、画像処理装置３に対する座標値取得命令である。
【０１３２】
ソースコード３２４は、画像処理装置３から座標値を受信する命令である。ソースコード３２５は、実際のマニピュレータ１の位置座標に変換する命令である。
【０１３３】
ソースコード３２６は、マニピュレータ１のエンドエフェクタ５を出力位置へ移動させる命令である。ソースコード３２７は、コメント欄であり、ユーザ自身がソースコードを記述することで、より詳細なプログラムを生成することができる。ソースコード３２８は、画像処理装置３とのデータ通信を解除する命令である。
【０１３４】
なお、上述した例では、移動命令を文字列で記載しており、イーサネット（登録商標）のノン−プロトコル通信で送信しているが、例えばロボットコントローラ２の共有メモリにおいて、アドレスＡＡＡには命令を、アドレスＢＢＢには命令のパラメータを、それぞれ割り当てることで文字列を用いずに、数値データをやり取りすることで命令体系を構成することもできる。画像処理装置３から数値での移動命令を受信した場合、アドレスＡＡＡは移動命令「ＭＶ」に相当する数値番号で、アドレスＢＢＢは「１００、２００、３００」で書き換えられ、マニピュレータ１に対する移動命令として発行される。
【０１３５】
もちろん、これ以外のプロトコル、例えばイーサネット（登録商標）のプロトコル通信、ＰＬＣリンク、ＣＣ−Ｌｉｎｋ、ＰＲＯＦＩＮＥＴ等の各プロトコル通信を用いても良い。
【０１３６】
以上のように本実施の形態２によれば、画像処理装置３からロボットコントローラ２に対してマニピュレータ１のエンドエフェクタ５の動作を制御する移動命令、動作命令を送信することができるので、マニピュレータ（ロボット）１の種別ごとに異なる機械語を理解する必要がなく、マニピュレータ１の動作を高い精度で制御することができる。
【０１３７】
（実施の形態３）
本発明の実施の形態３に係る画像処理システムの構成、画像処理装置３の構成は、実施の形態１及び２と同様であることから、同一の機能を有する構成要素については同一の符号を付することにより詳細な説明は省略する。本実施の形態３は、キャリブレーションの結果を用いて試運転を行う点で、実施の形態１及び２とは相違する。
【０１３８】
マニピュレータ１の試運転をするための、ロボットコントローラ２で実行されるプログラムは、実施の形態２と同様、自動的に生成される。図３３は、本発明の実施の形態３に係る画像処理装置３のプログラム生成画面の例示図である。
【０１３９】
図３３において、シーケンス選択領域３３１では、生成されるプログラムで実行したい処理をプルダウンメニューの中から選択する。また、生成されるプログラムで制御する対象となるマニピュレータ（ロボット）１の製造元であるメーカを、メーカ選択領域３３２において選択する。生成されるプログラムは、メーカごとに仕様が異なるからである。
【０１４０】
図３３の例では、登録されている位置座標（図３３では識別子として「ＰＯＳ０００」）へ移動し、撮像開始のタイミングを示す撮像トリガを発行して、ワーク６を把持する位置まで移動する動作を制御するプログラムを生成するよう指定している。全ての指定が完了した時点で、プログラム出力ボタン３３３をマウス操作等によりクリックすることで、ロボットコントローラ２のプログラムが生成される。
【０１４１】
試運転時の動作は、図３４に示すようになる。図３４は、本発明の実施の形態３に係る画像処理システムにおける試運転時の動作を説明するための模式図である。
【０１４２】
本実施の形態３に係る画像処理システムは、まず図３４（ａ）に示すように、ワーク６を撮像できるよう、マニピュレータ１のエンドエフェクタ５をワーク６が載置されている位置とは異なる位置「ＰＯＳ０００」へ移動させる。この状態で、図３４（ｂ）に示すように、撮像トリガに応じてワーク６を撮像し、最後に図３４（ｃ）に示すように、ワーク６を把持するべく、マニピュレータ１のエンドエフェクタ５をワーク６が載置されている位置（検出位置）へと移動させる。
【０１４３】
図３５は、本発明の実施の形態３に係る画像処理システムの試運転時の処理手順を示すフローチャートである。図３５に示すように、画像処理装置３は、所定位置（図３３の例では「ＰＯＳ０００」）への移動命令をロボットコントローラ２へ送信する（ステップＳ３５０１）。
【０１４４】
ロボットコントローラ２は、画像処理装置３からの移動命令を受信し（ステップＳ３５０２）、移動命令をマニピュレータ１の種別に応じて解釈する（ステップＳ３５０３）。すなわち、マニピュレータ１を稼働させることが可能な機械語のロードモジュールに翻訳する。
【０１４５】
ロボットコントローラ２は、エンドエフェクタ５を移動命令で指定されている位置（図３３の例では「ＰＯＳ０００」）へと移動させ（ステップＳ３５０４）、撮像命令を画像処理装置３へ送信する（ステップＳ３５０５）。
【０１４６】
画像処理装置３は、撮像命令を受信し（ステップＳ３５０６）、エンドエフェクタ５の動作領域を撮像する（ステップＳ３５０７）。画像処理装置３は、エンドエフェクタ５の動作領域の画像を表示し、表示されている画像上のワーク６の位置座標（ｘ、ｙ）を検出し（ステップＳ３５０８）、キャリブレーションにより求めてある変換式を用いて位置座標（ｘ’、ｙ’）へ変換する（ステップＳ３５０９）。
【０１４７】
画像処理装置３は、位置座標（ｘ’、ｙ’）への移動命令をロボットコントローラ２へ送信する（ステップＳ３５１０）。ロボットコントローラ２は、移動命令を受信して（ステップＳ３５１１）、変換された位置座標（ｘ’、ｙ’）へエンドエフェクタ５を移動する（ステップＳ３５１２）
【０１４８】
以上のように本実施の形態３によれば、画像処理装置３からロボットコントローラ２に対してマニピュレータ１のエンドエフェクタ５の動作を制御する移動命令、動作命令を送信することができるので、マニピュレータ（ロボット）１の種別ごとに異なる機械語を理解する必要がなく、マニピュレータ１を試運転することにより正しく動作するか否かを確認することが可能となる。
【０１４９】
なお、本発明は上記実施例に限定されるものではなく、本発明の趣旨の範囲内であれば多種の変更、改良等が可能である。例えばロボットコントローラ２の代わりにモーションコントローラを用いることで、適用範囲を拡大することができる。
【０１５０】
また、キャリブレーションとして二次元のアフィン変換を用いる例について説明しているが、もちろん三次元のアフィン変換を用いても良い。この場合、アフィン変換の変換式は、（式２）のようになる。
【０１５１】
【数２】
0006486679.tif 000003
【０１５２】
具体的には、複数の撮像装置４により空間に保持されたワーク６を撮像することで、画像上でのワーク６の位置座標である座標値（ｘ、ｙ、ｚ）と、実際の位置座標である空間座標値（ｘ’、ｙ’、ｚ’）との間の変換式の各係数を求めることになる。
【０１５３】
図３６は、本発明の実施の形態に係る画像処理システムの三次元のキャリブレーションの処理手順を示すフローチャートである。図３６に示すように、画像処理装置３は、移動命令をロボットコントローラ２へ送信する（ステップＳ３６０１）。ロボットコントローラ２は、移動命令を受信して（ステップＳ３６０２）、移動命令をマニピュレータ１の種別に応じて解釈する（ステップＳ３６０３）。すなわち、マニピュレータ１を稼働させることが可能な機械語のロードモジュールに翻訳する。
【０１５４】
ロボットコントローラ２は、エンドエフェクタ５を移動命令で指定されている位置へと移動させ（ステップＳ３６０４）。ロボットコントローラ２は、エンドエフェクタ５の移動先の位置座標（ｘ’、ｙ’、ｚ’）を取得して（ステップＳ３６０５）、取得した位置座標（ｘ’、ｙ’、ｚ’）を画像処理装置３へ送信する（ステップＳ３６０６）。
【０１５５】
画像処理装置３は、ロボットコントローラ２から、取得した位置座標（ｘ’、ｙ’、ｚ’）を受信し（ステップＳ３６０７）、エンドエフェクタ５の動作領域を撮像する（ステップＳ３６０８）。画像処理装置３は、動作領域の画像を表示し、表示されている画像上の位置座標（ｘ、ｙ、ｚ）を検出する（ステップＳ３６０９）。
【０１５６】
画像処理装置３は、キャリブレーション用のすべての位置座標（ｘ’、ｙ’、ｚ’）について画像上の位置座標（ｘ、ｙ、ｚ）を検出したか否かを判断する（ステップＳ３６１０）。画像処理装置３が、まだすべての位置座標（ｘ’、ｙ’、ｚ’）について画像上の位置座標（ｘ、ｙ、ｚ）を検出していないと判断した場合（ステップＳ３６１０：ＮＯ）、画像処理装置３は、次の移動命令を発行し（ステップＳ３６１１）、処理をステップＳ３６０１へ戻して、上述した処理を繰り返す。
【０１５７】
画像処理装置３が、すべての位置座標（ｘ’、ｙ’、ｚ’）について画像上の位置座標（ｘ、ｙ、ｚ）を検出したと判断した場合（ステップＳ３６１０：ＹＥＳ）、画像処理装置３は、（式２）に従って変換式を算出する（ステップＳ３６１２）。具体的には、１２個の係数ａxx〜ａzz、ｂx 、ｂy 、ｂz を求めることになる。
【符号の説明】
【０１５８】
１  マニピュレータ（ロボット）
２  ロボットコントローラ
３  画像処理装置
４  撮像装置
５  エンドエフェクタ
６  対象物（ワーク）
３１  制御部
３２  メモリ
３３  記憶装置
３６  通信インタフェース（通信装置）
【図１】
0006486679.tif 000004
【図２】
0006486679.tif 000005
【図３】
0006486679.tif 000006
【図４】
0006486679.tif 000007
【図５】
0006486679.tif 000008
【図６】
0006486679.tif 000009
【図７】
0006486679.tif 000010
【図８】
0006486679.tif 000011
【図９】
0006486679.tif 000012
【図１０】
0006486679.tif 000013
【図１１】
0006486679.tif 000014
【図１２】
0006486679.tif 000015
【図１３】
0006486679.tif 000016
【図１４】
0006486679.tif 000017
【図１５】
0006486679.tif 000018
【図１６】
0006486679.tif 000019
【図１７】
0006486679.tif 000020
【図１８】
0006486679.tif 000021
【図１９】
0006486679.tif 000022
【図２０】
0006486679.tif 000023
【図２１】
0006486679.tif 000024
【図２２】
0006486679.tif 000025
【図２３】
0006486679.tif 000026
【図２４】
0006486679.tif 000027
【図２５】
0006486679.tif 000028
【図２６】
0006486679.tif 000029
【図２７】
0006486679.tif 000030
【図２８】
0006486679.tif 000031
【図２９】
0006486679.tif 000032
【図３０】
0006486679.tif 000033
【図３１】
0006486679.tif 000034
【図３２】
0006486679.tif 000035
【図３３】
0006486679.tif 000036
【図３４】
0006486679.tif 000037
【図３５】
0006486679.tif 000038
【図３６】
0006486679.tif 000039