(57)【要約】【課題】  ロボットアームに撮像装置を付けて対象物を拡大または縮小して撮影する際に、その時々に応じた最適な方法で撮影を行うこと。【解決手段】  撮像装置が移動手段に固定されているシステムにおいて、撮像装置の焦点距離を変更する変更手段と、撮像装置及び移動手段の性能情報を取得する取得手段と、撮像装置による撮影処理を含む、システムで行う処理を設定する設定手段と、撮影処理において撮影する撮影範囲及び該撮影範囲への変更方法を指定する操作手段と、設定手段により設定された処理を実行するように制御する制御手段と、を有し、制御手段は、撮影処理において、撮像装置の性能情報及び移動手段の性能情報に基づいて、操作手段により指定された変更方法により撮影範囲となるように、撮像装置の焦点距離の変更量及び移動手段の移動量の少なくともいずれか一方を決定する。【選択図】  図１
2019171505.tif 000002
【特許請求の範囲】
【請求項１】
撮像装置が移動手段に固定されているシステムにおいて、
前記撮像装置の焦点距離を変更する変更手段と、
前記撮像装置の性能情報及び前記移動手段の性能情報を取得する取得手段と、
前記撮像装置による撮影処理を含む、前記システムで行う処理を設定する設定手段と、
前記撮影処理において撮影する撮影範囲及び該撮影範囲への変更方法を指定する操作手段と、
前記設定手段により設定された前記処理を実行するように制御する制御手段と、を有し、
前記制御手段は、前記撮影処理において、前記撮像装置の性能情報及び前記移動手段の性能情報に基づいて、前記操作手段により指定された前記変更方法により前記撮影範囲となるように、前記撮像装置の焦点距離の変更量及び前記移動手段の移動量の少なくともいずれか一方を決定することを特徴とするシステム。
【請求項２】
前記変更方法は、撮影範囲に変更する速度を優先する第１の方法と、前記移動手段の移動を優先する第２の方法と、前記撮像装置の焦点距離の変更を優先する第３の方法と、前記移動手段の移動と前記撮像装置の焦点距離の変更のいずれか速い方を優先する第４の方法と、前記設定手段により設定された処理の内、前記撮影処理の後に行う処理に基づく第５の方法と、の少なくともいずれかを含むことを特徴とする請求項１に記載のシステム。
【請求項３】
前記移動手段は、ロボットハンドを含み、
前記撮影処理の後に行う処理は、前記ロボットハンドにより前記撮像装置により撮影される被写体に接触する処理を含み、
前記設定手段により設定された前記処理に、前記被写体に接触する処理が含まれる場合、前記第５の方法では、前記移動手段の移動を優先することを特徴とする請求項２に記載のシステム。
【請求項４】
前記第２の方法において、前記移動手段の移動量が、前記移動手段の移動可能範囲を超えている場合に、前記制御手段は、前記移動可能範囲を超える移動量に相当する前記撮像装置の焦点距離の変更量を決定することを特徴とする請求項２または３に記載のシステム。
【請求項５】
前記第３の方法において、前記撮像装置の焦点距離の変更量が、前記撮像装置の焦点距離の変更可能範囲を超えている場合に、前記制御手段は、前記変更可能範囲を超える変更量に相当する前記移動手段の移動量を決定することを特徴とする請求項２乃至４のいずれか１項に記載のシステム。
【請求項６】
前記取得手段は、前記変更手段が焦点距離を予め決められた変更量、変更するのにかかる時間を取得することを特徴とする請求項１乃至５のいずれか１項に記載のシステム。
【請求項７】
前記取得手段は、前記変更手段が、複数の焦点距離から、複数の別の焦点距離にそれぞれ変更するのにかかる時間を取得することを特徴とする請求項１乃至５のいずれか１項に記載のシステム。
【請求項８】
前記取得手段は、前記移動手段が予め決められた距離を移動するのにかかる時間を取得することを特徴とする請求項１乃至７のいずれか１項に記載のシステム。
【請求項９】
撮像装置が移動手段に固定されているシステムにおいて、
前記撮像装置のフォーカス位置を変更する変更手段と、
前記撮像装置の性能情報及び前記移動手段の性能情報を取得する取得手段と、
前記撮像装置による撮影処理を含む、前記システムで行う処理を設定する設定手段と、
前記設定手段により設定された前記処理を実行するように制御する制御手段と、を有し、
前記制御手段は、前記撮影処理において、前記撮像装置の性能情報及び前記移動手段の性能情報に基づいて、被写体にピントを合わせるように前記撮像装置のフォーカス位置の変更量及び前記移動手段の移動量の少なくともいずれか一方を決定することを特徴とするシステム。
【請求項１０】
前記制御手段は、前記被写体にピントを合わせるために前記フォーカス位置を変更するためにかかる時間と、前記被写体にピントを合わせるために前記移動手段を移動するためにかかる時間とを比較し、いずれか短い方により前記被写体にピントを合わせると決定することを特徴とする請求項９に記載のシステム。
【請求項１１】
前記取得手段は、前記変更手段により前記フォーカス位置を変更するのにかかる平均処理時間と、現在のフォーカス位置とを取得することを特徴とする請求項９または１０に記載のシステム。
【請求項１２】
前記平均処理時間は、過去に前記変更手段により前記フォーカス位置を変更したときに要した時間の平均であることを特徴とする請求項１１に記載のシステム。
【請求項１３】
前記取得手段は、前記移動手段が予め決められた距離を移動するのにかかる時間と、現在の移動手段の位置とを取得することを特徴とする請求項９乃至１２のいずれか１項に記載のシステム。
【請求項１４】
前記制御手段は、前記撮像装置により予め撮影された画像を解析して被写体を判別して、該被写体の高さを取得し、取得した前記被写体の高さに基づいて、前記移動手段の移動量を決定することを特徴とする請求項９乃至１３のいずれか１項に記載のシステム。
【請求項１５】
前記制御手段により決定された前記移動手段の移動量が、前記移動手段の移動可能範囲を超えている場合に、前記制御手段は、前記撮像装置のフォーカス位置を変更することにより前記被写体にピントを合わせるように制御することを特徴とする請求項９乃至１４のいずれか１項に記載のシステム。
【請求項１６】
前記変更手段は、前記撮像装置により予め撮影された画像に基づいて、前記フォーカス位置を自動的に変更してピント調整を行い、
前記制御手段は、前記撮像装置により予め撮影された画像を解析して被写体を判別し、前記判別された被写体が前記変更手段によるピント調整に適しているかどうかを判断し、前記変更手段によるピント調整に適していない場合に、前記移動手段を移動することによりピントを合わせるように制御することを特徴とする請求項９に記載のシステム。
【請求項１７】
前記撮像装置と、前記移動手段と、前記制御手段を異なる装置により構成したことを特徴とする請求項１乃至１６のいずれか１項に記載のシステム。
【請求項１８】
前記撮像装置と、前記移動手段とを異なる装置により構成し、
前記制御手段を前記移動手段に備えたことを特徴とする請求項１乃至１６のいずれか１項のシステム。
【請求項１９】
焦点距離を変更する変更手段を有する撮像装置が移動手段に固定されているシステムの制御方法であって、
取得手段が、前記撮像装置の性能情報及び前記移動手段の性能情報を取得する取得工程と、
設定手段が、前記撮像装置による撮影処理を含む、前記システムで行う処理を設定する設定工程と、
操作手段による、前記撮影処理において撮影する撮影範囲及び該撮影範囲への変更方法を受けつける指定工程と、
制御手段が、前記設定工程で設定された前記処理を実行させる処理工程と、を有し、
前記処理工程では、前記撮影処理において、前記撮像装置の性能情報及び前記移動手段の性能情報に基づいて、前記指定工程で指定された前記変更方法により前記撮影範囲となるように、前記撮像装置の焦点距離の変更量及び前記移動手段の移動量の少なくともいずれか一方を決定することを特徴とする制御方法。
【請求項２０】
フォーカス位置を変更する変更手段を有する撮像装置が移動手段に固定されているシステムの制御方法であって、
取得手段が、前記撮像装置の性能情報及び前記移動手段の性能情報を取得する取得工程と、
設定手段が、前記撮像装置による撮影処理を含む、前記システムで行う処理を設定する設定工程と、
制御手段が、前記設定工程で設定された前記処理を実行させる処理工程と、を有し、
前記処理工程では、前記撮影処理において、前記撮像装置の性能情報及び前記移動手段の性能情報に基づいて、被写体にピントを合わせるように前記撮像装置のフォーカス位置の変更量及び前記移動手段の移動量の少なくともいずれか一方を決定することを特徴とする制御方法。
【請求項２１】
コンピュータに、請求項１９または２０に記載の制御方法の各工程を実行させるためのプログラム。
【請求項２２】
請求項２１に記載のプログラムを記憶したコンピュータが読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、撮像装置が移動手段に固定されているシステム及びその制御方法に関する。
【背景技術】
【０００２】
カメラを取り付けたロボットアームで、Pick&Placeや外観検査を行う際に、対象物の一部分を拡大して撮影したり、全体を俯瞰して撮影したい場合がある。こういった撮影は、カメラのズーム機能やロボットアーム自体を動かすことで行うことができる。特許文献１では、移動機能を持った点検ロボットにおいて、ズーム可能な撮像ユニットを有し、撮影時にロボット本体の移動またはズーム倍率の変更を行うことが開示されている。
【０００３】
特許文献２では、画角を調整可能な撮像手段を搭載した移動撮影機器において、撮影画像に被写体が適切に映っているかを判定する手段を備え、適切に映っていない場合は適切に撮影できるように画角と移動手段を制御することが開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−０５５５６９号公報
【特許文献２】特開２００４−２９７６７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
画角を変更する際、カメラやロボットアームの性能によっては、ズームできる範囲やズームする際の速度が変わってくることがある。また、Pick&Placeの場合は、撮影後にPick動作を行うため、ロボットアームがワークに近い方が次の作業を行い易いといったメリットもある。
【０００６】
一方、ロボットアームにカメラを付けて撮影対象物（ワーク）を撮影する際に、被写体にピントを合わせる方法として、カメラのオートフォーカス（ＡＦ）機能を使う方法と、アーム自体を動かしてピントを合わせる方法の２つが考えられる。ワークにピントを合わせる場合、カメラのＡＦ機能を使えば、ピント調整にかかる時間は大きく変わらないが、アームを動かす場合はアームの移動量によって線形にピント調整時間が伸びていくことになる。
【０００７】
本発明は上記問題点を鑑みてなされたものであり、ロボットアームに撮像装置を付けて対象物を拡大または縮小して撮影する際に、その時々に応じた最適な方法で撮影を行うことを目的とする。また、ロボットアームに撮像装置を付けて対象物を撮影する際に、できるだけ早く対象物にピントを合わせることを別の目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明の撮像装置が移動手段に固定されているシステムは、前記撮像装置の焦点距離を変更する変更手段と、前記撮像装置の性能情報及び前記移動手段の性能情報を取得する取得手段と、前記撮像装置による撮影処理を含む、前記システムで行う処理を設定する設定手段と、前記撮影処理において撮影する撮影範囲及び該撮影範囲への変更方法を指定する操作手段と、前記設定手段により設定された前記処理を実行するように制御する制御手段と、を有し、前記制御手段は、前記撮影処理において、前記撮像装置の性能情報及び前記移動手段の性能情報に基づいて、前記操作手段により指定された前記変更方法により前記撮影範囲となるように、前記撮像装置の焦点距離の変更量及び前記移動手段の移動量の少なくともいずれか一方を決定することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、ロボットアームに撮像装置を付けて対象物を拡大または縮小して撮影する際に、その時々に応じた最適な方法で撮影を行うことができる。また、ロボットアームに撮像装置を付けてワークを撮影する際に、できるだけ早く対象物にピントを合わせることができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の第１及び第３の実施形態に係る撮像システム全体の構成を示す図。
【図２】第１の実施形態に係る画像処理コントローラのメイン画面の一例を示す図。
【図３】第１の実施形態に係る画像処理コントローラにおけるフローチャート作成画面の一例を示す図。
【図４】第１の実施形態に係る画像処理コントローラにおけるフローチャート作成画面の別の一例を示す図。
【図５】第１の実施形態に係るロボットアームと撮影対象物の位置関係を示す図。
【図６】第１の実施形態に係る撮影範囲設定画面の一例を示す図。
【図７】第１の実施形態における処理を示すフローチャート。
【図８】第１の実施形態に係る撮影範囲の変更処理を示すフローチャート。
【図９】第１の実施形態に係る（ａ）「速度優先」時、及び（ｂ）「ロボット移動優先」時の撮影範囲を変更処理を示すフローチャート。
【図１０】第１の実施形態に係る（ａ）「カメラズーム優先」時、及び（ｂ）「速い方を優先」時の撮影範囲の変更処理を示すフローチャート。
【図１１】第１の実施形態に係る「撮影後の処理優先」時の撮影範囲の変更処理を示すフローチャート。
【図１２】第１の実施形態に係る撮像装置の性能情報の例を示す図。
【図１３】第１の実施形態に係るロボットアームの性能情報の一例を示す図。
【図１４】第１の実施形態の変形例に係る撮影範囲設定画面の一例を示す図。
【図１５】第２及び第４の実施形態に係る撮像システム全体の構成を示す図。
【図１６】第３の実施形態に係るロボットアームと撮影対象物の位置関係を示す図。
【図１７】第３の実施形態に係る撮像装置及びロボットアームによるピント調整に係る処理速度の関係を示す図。
【図１８】第３の実施形態における処理を示すフローチャート。
【図１９】第３の実施形態に係るフォーカス位置の調整処理のフローチャート。
【図２０】第３の実施形態に係る撮像装置１００及びロボットアームから取得する情報の一例を示す図。
【図２１】第３の実施形態の変形例１に係るＡＦの処理時間の累積結果を示す図。
【図２２】第３の実施形態の変形例２に係るフォーカス位置の調整処理のフローチャート及びワークごとの高さを示す図。
【図２３】第３の実施形態の変形例３に係るフォーカス位置の調整処理のフローチャート。
【図２４】第３の実施形態の変形例３に係るフォーカス位置の調整処理のフローチャート及びワークごとのＡＦ可否を示す図。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照して本発明を実施するための形態を詳細に説明する。ただし、本形態において例示される構成部品の寸法、形状、それらの相対配置などは、本発明が適用される装置の構成や各種条件により適宜変更されるべきものであり、本発明がそれらの例示に限定されるものではない。
【００１２】
＜第１の実施形態＞
本発明の第１の実施形態について説明する。ここでは、撮像装置で撮影した画像を画像処理コントローラで解析して、解析した情報を基にしてロボットアームに指示を送る場合を例にして説明する。図１（ａ）は、本発明の第１の実施形態における撮像システム全体の構成を示すブロック図であり、撮像システムは、撮像装置１００、画像処理コントローラ１１０、ロボットアーム１２０から構成される。
【００１３】
撮像装置１００において、光学系１０１は、フォーカスレンズ、ズームレンズを含む複数のレンズからなるレンズ群、シャッター、絞り等から構成され、適切な量の被写体からの光を、適切なタイミングで撮像素子１０２に結像させるように制御される。撮像素子１０２は、光学系１０１を通って結像した光を画像信号に変換する。ＣＰＵ１０３は、入力された信号やプログラムに従って、各種の演算や、撮像装置１００の各構成の制御を行う。一次記憶部１０４は、一時的なデータを記憶し、ＣＰＵ１０３の作業用に用いられる。二次記憶部１０５は、撮像装置１００を制御するためのプログラム（ファームウェア）や各種の設定情報などを記憶する。操作部１０６は、使用者の操作を受け付けるためのものである。また、撮像装置１００は、通信部１０７を介して画像処理コントローラ１１０と通信を行う。
【００１４】
画像処理コントローラ１１０は、撮像装置１００への撮影指示、撮影した画像の解析、ロボットアーム１２０への操作指示を行う。画像処理コントローラ１１０において、二次記憶部１１３は、ハードディスクなどにより構成され、ＣＰＵ１１１を動かすプログラムを格納する。一次記憶部１１２は、ＲＡＭなどにより構成され、二次記憶部１１３から読み込まれたプログラムが格納される。表示部１１５は撮影画像の表示、対話的な操作のための文字表示などを行う。操作部１１６は、使用者の操作を受け付けるためのものである。また、画像処理コントローラ１１０は、通信部１１４を介して、撮像装置１００及びロボットアーム１２０と通信を行う。
【００１５】
ロボットアーム１２０には、撮像装置１００が固定されており、ロボットアーム１２０を動かすことで撮影範囲を変更したり、アーム先端のロボットハンドを使って撮影対象物（以下、「ワーク」とも呼ぶ。）を把持することができる。ロボットアーム１２０において、１２１はＣＰＵ、１２２は画像処理コントローラ１１０と通信するための通信部である。
【００１６】
図１（ｂ）は、撮像装置１００、画像処理コントローラ１１０、ロボットアーム１２０からなる撮像システムの外観の一例を模式的に表したものである。なお、本実施形態では、画像処理コントローラ１１０が親となり、撮像装置１００及びロボットアーム１２０に指示を送るものとする。
【００１７】
図２は、画像処理コントローラ１１０を起動した際のメイン画面２００の一例を示したものである。フロー作成ボタン２０１を押下すると、後述するフローチャート作成画面３００に遷移する。また、トリガ実行ボタン２０２を押下すると、作成したフローチャートに示される処理を実行する。領域２０３には、画像処理コントローラ１１０で解析した画像処理結果を表示する。
【００１８】
次に、フローチャート作成画面について説明する。画像処理コントローラ１１０では、処理したい作業を使用者がフローチャート形式で組み立てるものとする。フローチャート作成画面に遷移した際の初期表示は、図３（ａ）のフローチャート作成画面３００に示す状態となっている。３１１はフローチャートを表しているが、初期表示ではスタートとエンドのみで、処理が何も設定されていない状態となっている。フローチャート作成画面３００では、パーツ領域３０１にあるフローチャートのパーツ３０３〜３１０を、フローチャート領域３０２にドラッグ＆ドロップすることでフローチャートを組み立てる。
【００１９】
例えば「撮影」パーツ３０３は、画像の撮影（撮影処理）を行わせるパーツである。撮影を実際に行うのは撮像装置１００であるため、画像処理コントローラ１１０は、撮像装置１００に対して撮影要求を行うことで、画像が撮影される。また、「ロボット移動」パーツ３０５は、ロボットアーム１２０を移動させるパーツである。ここでも、実際にロボットアーム１２０の移動操作を行うのはロボットアーム１２０であり、画像処理コントローラ１１０は、ロボットアーム１２０に対して移動後の座標と移動要求を行うことで、ロボットアーム１２０を移動させる。また、「Pick」パーツ３０６は、ロボットアーム１２０のハンド部で把持動作を行わせるパーツである。他に、「ワーク位置計算」パーツ３０４、「Place」パーツ３０７、「形状検査」パーツ３０８、「個数検査」パーツ３０９、「位置ズレ検査」パーツ３１０を含み、これらを組み合わせて所望のフローチャートを作成することができる。なお、パーツの種類はこれらに限られるものでは無く、アプリケーション内に適宜予め設定することができる。
【００２０】
図３（ｂ）は、上述したパーツを用いて組み立てたフローチャートの例を示す。図３（ｂ）は、撮影対象物を撮影してその位置を計算し、撮影対象物の位置までロボットアーム１２０を移動させて、最後に把持動作を行う例を示したものである。
【００２１】
ここで、図５（ａ）に示したような配置になっている撮影対象物をＰｉｃｋする場合を例にして説明する。ロボットアーム１２０は、図５（ａ）に示したような位置になっており、ロボットアーム１２０に設置された撮像装置１００で対象物５０４を撮影している。また、この状態で撮像装置１００の撮影範囲に入っている領域が５０３となる。つまり、撮影される画像は領域５０３の画像となる。５０１はロボットアーム１２０の土台の部分である。ロボットアーム１２０は、アームを動かすことでロボットハンドの位置を変えることができるが、現在の位置を座標情報として持っている。その時の座標の原点となるのがロボットアーム１２０の土台５０１の中心の位置となる。また、アームの現在位置を示すのがロボットハンドの根本の部分５０５である。画像処理コントローラ１１０からロボットアーム１２０に対して移動要求を行う際は、移動後の部分５０５の座標を送信する。また、撮像装置１００と部分５０５との相対的な位置関係は、常に変わらないものとする。また、図５（ｂ）は、撮像装置１００により撮影する対象物５０４を含む領域５０３と、ロボットアーム１２０の土台５０１との位置関係を示す図である。
【００２２】
ここで、画像処理コントローラ１１０は、撮影時のロボットハンドの位置と撮像装置１００の焦点距離が分かっており、この２つの位置から、どのような撮影範囲が撮影されているのか（例えば、撮影範囲５０３）を計算で求めることができる。
【００２３】
次に、図３（ｂ）に示すフローチャートの「撮影」パーツ４２２について説明する。撮影対象物の撮影を行う際の撮影範囲は、その時々によって様々であり、画像の撮影範囲を変更する方法として、次の２つの方法が考えられる。１つは撮像装置１００が設置されているロボットハンドを動かすことである。例えばロボットハンドの位置を高くすれば、広範囲を撮影することができる。逆にロボットハンドの位置を低くすれば、範囲の狭い局所的な領域を撮影することができる。撮影範囲を変更する２つ目の方法は、撮像装置１００のズーム機能を使うことである。例えば撮像装置１００がズームレンズを駆動してズームアウトすることで、広範囲を撮影することができる。逆にズームインすれば、局所的な領域を撮影することができる。
【００２４】
ここで、フローチャート上の「撮影」パーツ４２２により撮影を行う際の撮影範囲を指定する方法について説明する。フローチャート上の「撮影」パーツ４２２を、マウスでダブルクリックなどして選択すると、図６（ａ）に示す撮影範囲設定画面６００に遷移する。撮影範囲設定画面６００で撮影範囲を設定すると、図２に示すトリガ実行ボタン２０２により作成したフローチャートに示される処理を実行する際に、設定された撮影範囲で撮影を行うように制御される。画像表示部６０１には、撮像装置１００で撮影している画像がリアルタイムで表示される。ユーザーは撮影画像を見ながら撮影範囲を設定することができる。
【００２５】
また、範囲指定ボタン６０２を押下すると、図６（ｂ）に示す画面に遷移する。図６（ｂ）に示す画像表示部６０１内には枠６０３が表示されており、この枠６０３内を、「撮影」パーツ４２２で撮影する撮影範囲として設定することができる。そして、撮影範囲を変更するには、枠６０３の位置や大きさをマウスでドラッグしたり、タッチパネルであればピンチイン／ピンチアウトするなどして、撮影範囲を変更することができる。
【００２６】
なお、図６（ｂ）では、画像表示部６０１に撮影している画像がリアルタイムで表示され、撮影したい範囲を枠６０３内の領域として別領域にしているが、画像表示部６０１全体に撮影範囲を表示させてもよい。例えば、タッチパネルにおいてピンチイン／ピンチアウトをすると、その操作に応じてロボットハンドの位置や撮像装置１００の焦点距離を変更させて、撮影範囲を変更させる。そして撮影範囲が決まったら、ＯＫボタンを押下することで、フローチャートの実行時に「撮影」パーツ４２２で撮影する際の範囲を決定するようにしてもよい。この場合には、後述する「撮影」パーツ４２２の実行時に図８〜図１１を参照して説明する処理をここで行う。なお、ロボットハンドの位置や撮像装置１００の焦点距離を変更せずに、撮影している画像に対して電子ズームを行った画像を画像表示部６０１に表示するようにしてもよい。
【００２７】
図６（ｃ）は、撮影範囲を変更するための別の画面を示しており、スライダーバー６２１を設けた場合を示している。スライダーバー６２１を動かすことで、上述したピンチイン／ピンチアウトと同様に、撮影領域を変更させることができる。図６（ｃ）では、図６（ａ）の画像表示部６０１に示された撮影範囲と比較して、局所領域を撮影するようにスライダーバーを調整しているので、撮影対象物が拡大されて表示される。
【００２８】
コンボボックス６１０では、変更した撮影範囲への変更方法を指定することができる。これは、フローチャート上の「撮影」パーツ４２２の処理が実行される際に、現在の撮影範囲がどのような状態であるかは不定であるため、撮影前に撮影範囲を変更する必要がある場合に、変更方法を指定するためのものである。本実施形態では、撮影範囲の変更方法として、「速度優先」、「ロボット移動優先」、「カメラズーム優先」、「速い方を優先」、「撮影後の処理優先」の５種類を有する。これらの方法による撮影範囲の変更方法については、図９乃至図１１を参照して後述する。
【００２９】
上述したようにして撮影範囲を設定をした状態で、図３（ｂ）に示すフローチャートの処理を実行した場合の処理を示したものが図７である。なお、トリガ実行ボタン２０２を押下することでフローチャートの処理を実行することができる。
【００３０】
図７（ａ）は、図３（ｂ）に示すフローチャートの処理を実行した場合の画像処理コントローラ１１０における処理を示すフローチャートである。まず、Ｓ１００でＣＰＵ１１１はトリガ実行を受信すると、図３（ｂ）に示すフローチャートに示す処理が開始され（４２１）、まず、「撮像」パーツ４２２の処理が実行される。「撮像」パーツ４２２の処理では、撮影範囲の変更を行ってから撮影を行うため、まずＳ１０１において、ＣＰＵ１１１は撮影範囲を変更する。撮影範囲の変更方法については、図８〜図１１を参照して詳細に後述する。
【００３１】
次にＳ１０２でＣＰＵ１１１は、撮像装置１００に対して撮影要求を送信する。図７（ｂ）は、画像処理コントローラ１１０から撮影要求を受信した際の、撮像装置１００における処理を示したものである。ＣＰＵ１０３は、Ｓ１２０で画像処理コントローラ１１０から撮影要求を受信すると、Ｓ１２１で撮影を実行する。撮影を実行すると、ＣＰＵ１０３は、Ｓ１２２で撮影画像を画像処理コントローラ１１０に送信する。
【００３２】
画像処理コントローラ１１０において、Ｓ１０３で撮像装置１００から撮影画像を受信すると、「撮影」パーツ４２２の処理が完了し、ＣＰＵ１１１は、「ワーク位置計算」パーツ４２３の処理に遷移する。
【００３３】
Ｓ１０４において、ＣＰＵ１１１は、撮影した画像からワークの位置を計算する。例えば領域５０３の画像を撮影した場合は、対象物５０４（ワーク）の位置を算出する。ワークの位置は、公知の画像分析技術を用いて算出することができるため、ここでは説明を省略する。ワークの位置の算出が完了すると、「ワーク位置計算」パーツ４２３の処理が完了し、「ロボット移動」パーツ４２４の処理に遷移する。
【００３４】
Ｓ１０５において、ＣＰＵ１１１は、ロボットアーム１２０に対して移動要求を送信する。移動要求を送信する際は、「ワーク位置計算」パーツ４２３の処理により算出したワーク位置の情報も合わせて送信する。図７（ｃ）は、画像処理コントローラ１１０からロボットアーム１２０の移動要求を受信した際の、ロボットアーム１２０における処理を示したものである。ＣＰＵ１２１は、Ｓ１３０で画像処理コントローラ１１０から移動要求を受信すると、Ｓ１３１において、ロボットハンドの移動を実行する。ここでは、移動要求と共に送信されたワーク位置にロボットハンドを移動する。移動を実行すると、ＣＰＵ１２１は、Ｓ１３２において移動完了通知を画像処理コントローラ１１０に送信する。
【００３５】
画像処理コントローラ１１０において、Ｓ１０６でロボットアーム１２０から移動完了通知を受信すると、「ロボット移動」パーツ４２４の処理が完了し、「Ｐｉｃｋ」パーツ４２５に遷移する。
【００３６】
Ｓ１０７でＣＰＵ１１１は、ロボットアーム１２０に対してＰｉｃｋ要求を送信する。図７（ｄ）は、画像処理コントローラ１１０からロボットアーム１２０のＰｉｃｋ要求を受信した際の、ロボットアーム１２０における処理を示したものである。ＣＰＵ１２１は、Ｓ１４０で画像処理コントローラ１１０からＰｉｃｋ要求を受信すると、Ｓ１４１においてロボットハンドを用いてＰｉｃｋ動作、すなわちワークの把持動作を実行する。Ｐｉｃｋ動作を実行すると、ＣＰＵ１２１は、Ｓ１４２においてＰｉｃｋ完了通知を画像処理コントローラ１１０に送信する。
【００３７】
画像処理コントローラ１１０において、Ｓ１０８でＣＰＵ１１１がロボットアーム１２０からＰｉｃｋ完了通知を受信すると、図３（ｂ）に示すフローチャートの処理が全て完了となる。なお、ここまではワークのＰｉｃｋを行うまでの動作を示したものであるが、同じようにして、「Ｐｌａｃｅ」パーツ３０７をフローチャートに設定することで、指定したワークのＰｉｃｋ＆Ｐｌａｃｅを行うことができる。
【００３８】
次に、Ｓ１０１で行われる撮影範囲の変更方法について、図８〜図１１のフローチャートを用いて詳細に説明する。まず、図８のＳ２００において、使用者が図６に示す撮影範囲設定画面６００を用いて撮影範囲を変更したかどうかを判定する。撮影範囲が変更されていなければ、撮影範囲の変更処理を終了し、図７の処理に戻る。
【００３９】
一方、Ｓ２００において、撮影範囲が変更されたと判断するとＳ２０１に進み、画像処理コントローラ１１０のＣＰＵ１１１は、現在の撮像装置１００の焦点距離と撮像装置１００の性能情報を取得する。図１２（ａ）は、性能情報の一例を示す図であり、撮像装置１００の焦点距離を１０mm移動するのに２００ミリ秒かかることを表している。図１２（ｂ）は、性能情報の別の一例を示す図であり、縦方向に現在の焦点距離、横方向に移動後の焦点距離を示し、現在の焦点距離から移動後の焦点距離までにかかる時間を示している。例えば、現在の焦点距離が４０mmで、移動後の焦点距離が１０mmである場合は、移動に５９０ミリ秒かかることが分かる。
【００４０】
次にＳ２０２において、ＣＰＵ１１１は、現在のロボットアーム１２０の位置と性能情報を取得する。なお、ロボットアーム１２０の位置とは、ロボットアーム１２０の土台５０１を原点としたときの、ロボットハンドの位置５０５を示すものとする。なお、以下の説明において、「ロボットアーム１２０を移動する」とは、ロボットアーム１２０の土台５０１を原点としたときの、ロボットハンドの位置５０５を移動することを指すものとする。図１３は、ロボットアーム１２０の性能情報の一例を示す図であり、ロボットアーム１２０を１０mm移動するのに１００ミリ秒かかることを表している。
【００４１】
次にＳ２０３でＣＰＵ１１１は、Ｓ２０１及びＳ２０２で取得した、現在の撮像装置１００の焦点距離及びロボットアーム１２０の位置に基づいて、現在の撮影範囲を算出する。まず、ロボットハンドの位置５０５が分かると、ロボットハンドから見て常に同じ位置にある撮像装置１００の位置が分かる。また、撮像装置１００の焦点距離も分かっているので、撮像装置１００の画角と合わせて現在の撮影範囲５０３を計算により求めることができる。
【００４２】
次にＳ２０４でＣＰＵ１１１は、「撮影」パーツ４２２で設定されている撮影範囲と変更方法を取得する。例えば、図６に示す撮影範囲設定画面６００により設定した撮影範囲と変更方法を取得する。次にＳ２０５でＣＰＵ１１１は、取得した変更方法が「速度優先」であるかを判定する。変更方法が「速度優先」である場合は、Ｓ２０６へ進み、「速度優先」でなければ、Ｓ２０７に進む。
【００４３】
図９（ａ）は、Ｓ２０６で行われる「速度優先」時の処理の詳細を示したものである。Ｓ２２０でＣＰＵ１１１は、指定された撮影範囲に最も早く遷移するための、ロボットアーム１２０の移動量と撮像装置１００の焦点距離の変更量を算出する。ここでの算出に、Ｓ２０１及びＳ２０２で取得した、撮像装置１００の性能情報及びロボットアーム１２０の性能情報を使用する。例えば、撮像装置１００の性能が低く、焦点距離を変更するのに時間がかかるが、ロボットアーム１２０の性能が高く、移動が高速に行える場合は、相対的にロボットアーム１２０の移動量を大きくする。逆に撮像装置１００の方が高性能である場合は、相対的に撮像装置１００の焦点距離の変更量を大きくする。このようにして、例えば、撮像装置１００の焦点距離の２０mmの変更と、ロボットアーム１２０の６０mmの移動が必要である、といったように算出される。このように、使用している撮像装置１００とロボットアーム１２０の性能に基づいて、撮影範囲の変更に必要な変更量及び移動量を算出する。
【００４４】
変更量及び移動量が算出できたら、Ｓ２２１でＣＰＵ１１１は、まずロボットアーム１２０に対して移動要求を送信する。ロボットアーム１２０へ移動要求を送信した後、移動完了通知が返ってくる前にＳ２２２に遷移し、ＣＰＵ１１１は、撮像装置１００に対してズーム変更要求を送信する。このようにして、ロボットアーム１２０の移動と撮像装置１００の焦点距離の変更を並列的に実行させるようにする。次にＳ２２３でＣＰＵ１１１は、ロボットアーム１２０からの移動完了通知と撮像装置１００からのズーム変更完了通知を受信するまで待機し、受信すると、図８の処理に戻る。このようにして、「速度優先」で撮影範囲を変更することが可能となる。
【００４５】
「速度優先」で無い場合、Ｓ２０７でＣＰＵ１１１は、取得した変更方法が「ロボット移動優先」であるかどうかを判断する。「ロボット移動優先」が指定されている場合は、Ｓ２０８へ進み、「ロボット移動優先」でなければ、Ｓ２０９へ進む。
【００４６】
図９（ｂ）は、Ｓ２０８で行われる「ロボット移動優先」時の処理の詳細を示したものである。Ｓ２３０でＣＰＵ１１１は、撮影範囲の変更に必要なロボットアーム１２０の移動量を算出する。次にＳ２３１でＣＰＵ１１１は、算出した移動量がロボットアーム１２０の移動可能範囲に収まっているかを確認する。ロボットアーム１２０の移動範囲にも限界があるため、確認を行う必要があるためであり、ロボットアーム１２０の移動可能範囲に収まっている場合は、Ｓ２３２へ進む。
【００４７】
一方、算出した移動量がロボットアーム１２０の移動可能範囲に収まらない場合は、撮像装置１００のズーム機能を併用するためにＳ２３４へ進む。Ｓ２３４でＣＰＵ１１１は、ロボットアーム１２０の移動可能範囲を超える移動量に相当する撮像装置１００の焦点距離の変更量を算出する。次にＳ２３５でＣＰＵ１１１は、撮像装置１００にズーム変更要求を送信する。Ｓ２３５が完了すると、Ｓ２３２へ進む。
【００４８】
Ｓ２３２でＣＰＵ１１１は、ロボットアーム１２０に対して移動要求を送信する。次にＳ２３３でＣＰＵ１１１は、ロボットアームから移動完了通知を受信するまで待機する。なお、焦点距離の変更も併用する場合は、Ｓ２３３でロボットアーム１２０の移動完了通知と撮像装置１００のズーム変更完了通知の両方を受信するまで待機する。そして、完了通知を受信すると、図８の処理に戻る。このようにして、「ロボット移動優先」で撮影範囲を変更することが可能となる。
【００４９】
「ロボット移動優先」で無い場合、Ｓ２０９でＣＰＵ１１１は、取得した変更方法が「カメラズーム優先」であるかどうかを判断する。「カメラズーム優先」が指定されている場合はＳ２１０へ進み、「カメラズーム優先」でなければ、Ｓ２１１に進む。
【００５０】
図１０（ａ）は、Ｓ２１０で行われる「カメラズーム優先」時の処理の詳細を示したものである。Ｓ２４０でＣＰＵ１１１は、撮影範囲の変更に必要なカメラの焦点距離の変更量を算出する。次にＳ２３１でＣＰＵ１１１は、算出した焦点距離の変更量が撮像装置１００のズーム可能範囲に収まっているかを確認する。撮像装置１００のズーム可能範囲に収まっている場合は、Ｓ２４２へ進む。
【００５１】
一方、Ｓ２４１で撮像装置１００のズームの変更可能範囲に収まらない場合は、ロボットアーム１２０の移動も併用するためにＳ２４４へ進む。Ｓ２４４でＣＰＵ１１１は、撮像装置１００のズームの変更可能範囲を超える変更量に相当するロボットアーム１２０の移動量を算出する。次にＳ２４５でＣＰＵ１１１は、ロボットアーム１２０に移動要求を送信する。Ｓ２４５が完了したら、Ｓ２４２へ進む。
【００５２】
Ｓ２４２でＣＰＵ１１１は、撮像装置１００に対してズーム変更要求を送信する。次にＳ２４３でＣＰＵ１１１は、カメラからズーム変更完了通知を受信するまで待機する。なお、ロボットアーム１２０の移動を併用する場合は、Ｓ２４３でロボットアーム１２０の移動完了通知と撮像装置１００のズーム変更完了通知の両方を受信するまで待機する。そして、完了通知を受信すると、図８の処理に戻る。このようにして、「カメラズーム優先」で撮影範囲を変更することが可能となる。
【００５３】
「カメラズーム優先」で無い場合、Ｓ２１１でＣＰＵ１１１は、取得した変更方法が「速い方を優先」であるかどうかを判断する。「速い方を優先」が指定されている場合はＳ２１２へ進み、「速い方を優先」でなければ、Ｓ２１３に進む。
【００５４】
図１０（ｂ）は、Ｓ２１２で行われる「速い方を優先」時の処理の詳細を示したものである。Ｓ２５０でＣＰＵ１１１は、ロボットアーム１２０を移動した場合に撮影範囲を変更するのにかかる時間を算出する。次にＳ２５１でＣＰＵ１１１は、撮像装置１００の焦点距離を変更した場合に撮影範囲を変更するのにかかる時間を算出する。次にＳ２５２でＣＰＵ１１１は、撮影範囲の変更にかかる時間を比較する。ロボットアーム１２０を移動する方が速いと判断した場合は、Ｓ２５３へ進む。この場合にＳ２５３で行う処理は図９（ｂ）を参照して上述した処理と同じであるため、ここでは説明を省略する。また、Ｓ２５２で撮像装置１００の焦点距離を変更する方が速いと判定した場合は、Ｓ２５４へ進む。この場合にＳ２５４で行う処理は図１０（ａ）を参照して上述した処理と同じであるため、ここでは説明を省略する。Ｓ２５３またはＳ２５４の処理が終了すると、図８の処理に戻る。このようにして、「速い方を優先」で撮影範囲をすることが可能となる。
【００５５】
「速い方を優先」で無い場合、Ｓ２１３でＣＰＵ１１１は、「撮影後の処理優先」が指定されているものと判断し、撮影後の処理に応じて、ロボットアーム１２０の移動と撮像装置１００の焦点距離の変更を切り替えるように制御する。例えば、図３（ｂ）に示すフローチャートのように撮影後の処理に「Ｐｉｃｋ」パーツ４２５が含まれている場合は、ロボットアームで把持動作を行う必要があるため、ロボットアーム１２０が撮影対象物に近い方が良い。なお、把持動作に限らず、ロボットアーム１２０が撮影対象物に接触する必要のある処理であれば、ロボットアーム１２０が撮影対象物に近い方が良い。
【００５６】
図１１は、Ｓ２１３で行われる「撮影後の処理優先」時の処理の詳細を示したものである。Ｓ２６０でＣＰＵ１１１は、撮影後の処理にロボットアーム１２０による把持動作が含まれるかを確認する。図３（ｂ）のフローチャートを設定している場合は、「撮影」パーツ４２２の後の処理において、「Ｐｉｃｋ」パーツが含まれるかどうかを確認する。図３（ｂ）のフローチャートのように「Ｐｉｃｋ」パーツ４２５が含まれる場合は、Ｓ２６１へ進む。Ｓ２６１でＣＰＵ１１１は、ユーザーが指定した撮影範囲が、現在の撮影範囲より狭い局所領域になるかを判定する。つまり、現在よりも局所領域を撮影するためにはロボットアーム１２０を撮影対象物に近づける必要があり、ロボットアーム１２０を移動させておけばその後の把持動作が行い易い。逆に、現在よりも広範囲の領域を撮影する場合、ロボットアーム１２０を移動させてしまうと、撮影対象物から離れる方向にロボットアーム１２０が移動するため、その後の把持動作に時間がかかってしまう。そこで、現在よりも局所領域を撮影する場合はＳ２６２へ進み、ロボットアーム１２０を移動して撮影範囲を変更する。なお、Ｓ２６２で行う処理は図９（ｂ）を参照して上述した処理と同じであるため、ここでは説明を省略する。
【００５７】
一方、「Ｐｉｃｋ」パーツが含まれない場合、及び「Ｐｉｃｋ」パーツが含まれていても、現在よりも広範囲の領域を撮影する場合には、Ｓ２６３に進み、撮像装置１００の焦点距離を変更する。図４は、「Ｐｉｃｋ」パーツが含まれない処理の一例を示している。図４に示すフローチャートでは、ロボットアーム１２０による把持動作を含まず、例えば撮影対象物の検査を行う場合は、同じ撮影対象物に対して様々な角度から画像を撮影することがある。この場合には、ロボットアーム１２０が撮影対象物から離れていた方が都合が良い場合がある。そこで、Ｓ２６０で撮影後の処理にロボットアーム１２０の把持動作が含まれていない場合は、Ｓ２６３へ進み、撮像装置１００の焦点距離を変更して撮影範囲を変更する。なお、Ｓ２６３で行う処理は図１０（ａ）を参照して上述した処理と同じであるため、ここでは説明を省略する。
【００５８】
Ｓ２６２またはＳ２６３の処理が終了すると、図８の処理に戻る。このようにして、「撮影後の処理優先」で撮影範囲をすることが可能となる。
【００５９】
図８において、Ｓ２１３の処理が終了すると、撮影範囲の変更処理は終了する。
【００６０】
上記の通り第１の実施形態によれば、ロボットアームにカメラを付けて対象物を拡大または縮小して撮影する際に、その時々に応じた最適な方法で撮影を行うことができる。
【００６１】
＜変形例＞
上述した例では、ユーザにより指定された撮影範囲への変更方法に基づいて、ロボットアーム１２０の位置や撮像装置１００の焦点距離を変更して撮影範囲を変更していた。これに対し、本変形例では、別の方法で撮影範囲を指定する手順について説明する。
【００６２】
本変形例においても、フローチャート上の「撮影」パーツを、マウスでダブルクリックなどして選択すると、図１４に示す撮影範囲設定画面１４００に遷移する。画像表示部１４０１には、撮像装置１００で撮影している画像がリアルタイムで表示される。ユーザーは撮影画像を見ながら撮影範囲を設定することができる。
【００６３】
ボタン１４０２〜１４０７は、ロボットアーム１２０を動かすためのボタンであり、ボタン１４０２〜１４０７を押下することで、ロボットアーム１２０を所望の横、縦、高さ（ｘ、ｙ、ｚ）方向に動かすことができる。ボタン１４０８、１４０９は、撮像装置１００の焦点距離を変更してズームイン／ズームアウトを行うためのものである。このようにロボットアーム１２０の移動と撮像装置１００のズームイン／ズームアウトを行うことで、撮影範囲を変更することができる。
【００６４】
撮影範囲設定画面１４００で撮影範囲を設定すると、図２に示すトリガ実行ボタン２０２により作成したフローチャートに示される処理を実行する際に、指定されたロボットアーム１２０の位置及び撮像装置１００の焦点距離で撮影を行うように制御される。
【００６５】
＜第２の実施形態＞
次に、本発明の第２の実施形態について説明する。第２の実施形態では、ロボットアームに画像処理コントローラが組み込まれているものとして、撮像装置１００で撮影した画像をロボットアームで解析して、解析した情報を基にしてロボットアーム自身が所定の動作を行う場合を例にして説明する。
【００６６】
図１５（ａ）は、第２の実施形態における撮像システム全体の構成を示すブロック図である。なお、撮像装置１００は第１の実施形態で説明したものと同じ構成を有するため、同じ参照番号を付して説明を省略する。ロボットアーム１１１０には、画像処理コントローラが組み込まれているものとする。つまり、第２の実施形態におけるロボットアーム１１１０は、撮像装置１００への撮影指示、撮影した画像の解析、Ｐｉｃｋや検査の作業を行うものである。ロボットアーム１１１０において、二次記憶部１１１３は、ハードディスクなどにより構成され、ＣＰＵ１１１１を動かすプログラムを格納する。一次記憶部１１１２は、ＲＡＭなどにより構成され、二次記憶部１１１３から読み込まれたプログラムが格納される。通信部１１１４は、撮像装置１００との通信を行う。操作部１１１５は、使用者の操作を受け付けるためのものであり、後述するトリガの実行も、操作部１１１５から行う。表示部１１１６は、対話的な操作のための文字表示などを行う。なお、表示部１１１６はロボットアームとは別に持たせても良い。
【００６７】
また、図１５（ｂ）は、撮像装置１００と、画像処理コントローラが組み込まれたロボットアーム１１１０の外観の一例を模式的に表したものである。なお、第２の実施形態ではロボットアーム１１１０が親となり、撮像装置１００に指示を送るものとする。
【００６８】
また、第２の実施形態における撮像システムで行われる処理は、第１の実施形態では画像処理コントローラ１１０及びロボットアーム１２０が行っていた処理をロボットアーム１１１０内で行うことを除いては、図２〜図１４を参照して上述した処理と同様である。従って、ここでは説明を省略する。
【００６９】
上記の通り本第２の実施形態によれば、画像処理コントローラをロボットアームに組み込んだ状態でも、第１の実施形態及び変形例と同様の効果を得ることができる。
【００７０】
＜第３の実施形態＞
次に、本発明の第３の実施形態について説明する。第３の実施形態では、「撮影」パーツの実行時における焦点調節について説明する。なお、第３の実施形態における撮像システムは、図１に示す構成を有するため、説明を省略する。
【００７１】
第３の実施形態では、図１６に示したような配置になっている撮影対象物をＰｉｃｋする場合を例にして説明する。なお、図１６において、図５と同じ構成には同じ参照番号を付し、説明を省略する。図１６に示すように、ロボットアーム１２０に設置された撮像装置１００で対象物５０４を撮影している。
【００７２】
次に、図３（ｂ）及び図４に示すように作成されたフローチャートの「撮影」パーツについて説明する。撮影対象物の撮影を行う際は、撮影対象物に対してピントを合わせなければ、後続の画像解析が正常に動作しないことがある。そのため、被写体にピントを合わせて撮影する必要がある。ここで、撮影対象物にピントを合わせる方法として、次の２つの方法が考えられる。１つは撮像装置１００が設置されているロボットアーム１２０を動かすことである。例えばロボットアーム１２０のアームの位置を動かすことで、ピントの合う位置も動かすことができる。撮影対象物にピントを合わせる２つ目の方法は、撮像装置１００のＡＦ機能を使うことである。ＡＦ機能を使えば、撮影対象物に対して適切なフォーカス位置になるように、撮像装置１００が自動的にピント調整を行うことができる。
【００７３】
ここで、撮像装置１００のＡＦ機能を使ってフォーカス位置を調整する場合は、どのような被写体であっても基本的にＡＦにかかる時間は大きく変わらない。一方、ロボットアーム１２０を動かしてピントを調整する場合は、ロボットアーム１２０を動かす量に比例してピント調整時間も伸びていく。すなわち、ロボットアーム１２０を少し動かしてピントが合うのであれば、ピント調整にかかる時間は短くなる。逆に、ロボットアーム１２０を大きく動かさないとピントが合わない場合は、ピント調整にかかる時間も長くなる。このような関係をまとめたものを図１７に示す。グラフの横軸は、ピントのズレ量、縦軸は、処理に係る時間を表している。直線１７０１は、ロボットアーム１２０を移動した時にかかる処理時間を示している。前述の通り、ピントのズレ量に比例して処理時間が伸びていくことが分かる。直線１７０２は、ＡＦ機能を使った場合の処理時間を示している。ＡＦ機能を使う場合は、ピントのズレ量に関係なく処理時間がほぼ一定であることが分かる。
【００７４】
次に、第３の実施形態において図３（ｂ）に示すフローチャートを実行した場合の処理について、図１８のフローチャートを参照して説明する。なお、図２に示すトリガ実行ボタン２０２を押下することでフローチャートの処理を実行することができる。また、図１８のフローチャートにおいて、図７（ａ）に示す処理と同様の処理については同じステップ番号を付し、適宜説明を省略する。
【００７５】
図１８において、まず、Ｓ１００でＣＰＵ１１１はトリガ実行を受信すると、図３（ｂ）に示すフローチャートに示す処理が開始され（４２１）、まず、「撮像」パーツ４２２の処理が実行される。「撮像」パーツ４２２の処理では、フォーカス位置の調整を行ってから撮影を行うため、Ｓ１８０１において、ＣＰＵ１１１はフォーカス位置を調整する。フォーカス位置の調整を行うと、Ｓ１０２に進み、以降、第１の実施形態において図７で説明した処理と同様の処理を行う。
【００７６】
次に、図１８のＳ１８０１で行われるフォーカス位置の調整方法について、図１９を用いて詳細に説明する。Ｓ３００においてＣＰＵ１１１は、撮像装置１００のＡＦ平均処理時間と現在のフォーカス値を取得する。ここでは、図２０（ａ）に示すようなＡＦ平均処理時間及び現在のフォーカス値が撮像装置１００に記憶されているものとする。図２０（ａ）に示す例では、ＡＦを実行するのに平均８００ミリ秒かかり、現在のフォーカス値が１５mmであるものとする。
【００７７】
次にＳ３０１でＣＰＵ１１１は、ピントが合っている現在の距離を算出する。ピントが合っている距離は、Ｓ３０１で取得した現在のフォーカス値に加え、撮像装置１００の絞り値や撮像素子１０２の大きさによって決まるものである。ここで、撮像装置１００の絞り値や撮像素子１０２の大きさが固定である場合は、現在のフォーカス値によってピントが合っている距離を一意に求めることができる。ここでは、現在のフォーカス値が１５mm、ピントが合っている距離が１００mmであるものとする。
【００７８】
次にＳ３０２でＣＰＵ１１１は、ロボットアーム１２０の移動速度と現在のロボットアーム１２０の位置（高さ）を取得する。ここでは、図２０（ｂ）に示すようなロボットアーム１２０の移動速度と現在のロボットアーム１２０の位置（高さ）がロボットアームに記憶されているものとする。図２０（ｂ）に示す例では、ロボットアーム１２０の１０mmの移動に１００ミリ秒かかり、現在のロボットアーム１２０の高さが２００mmであるものとする。
【００７９】
次にＳ３０３でＣＰＵ１１１は、ロボットアーム１２０を動かしてピント位置を調整する際に必要なロボットアーム１２０の移動量を算出する。前述したように、現在ピントが合っている距離が１００mm、現在のロボットアーム１２０の高さが２００mmとすると、ロボットアーム１２０を１００mm動かせばピントと合わせることができる。
【００８０】
次にＳ３０４でＣＰＵ１１１は、Ｓ３０３で算出したロボットアーム１２０の移動にかかる時間を算出する。ここで、移動速度は１０mmごとに１００ミリ秒なので、ロボットアーム１２０を１００mm動かすためには１０００ミリ秒かかることになる。
【００８１】
次にＳ３０５でＣＰＵ１１１は、Ｓ３００で取得したＡＦ平均処理時間と、Ｓ３０４で算出したロボットアーム１２０の移動時間を比較する。前述した例では、ＡＦ平均処理時間は８００ミリ秒、ロボットアーム１２０の移動時間は１０００ミリ秒であるので、撮像装置１００のＡＦ機能を使ってピントを調整した方が処理時間が早い。その場合はＳ３０６へ進み、ＣＰＵ１１１は、撮像装置１００によるＡＦを実行して、撮影対象物にピントが合うようにする。
【００８２】
一方、ＡＦ平均処理時間がロボットアーム１２０の移動時間より短い場合は、Ｓ３０７へ進み、ロボットアーム１２０の移動を実行する。このようにして、処理時間が速い方法を用いて、撮影対象物にピントを合わせることができる。また、ロボットアーム１２０を動かす場合は、撮像装置１００によるＡＦは使わないものとする。
【００８３】
なお、図１９に示すフローチャートでは撮像装置１００やロボットアーム１２０の送受信の処理は説明を省略している。例えば、Ｓ３００で撮像装置１００のＡＦ平均処理時間と現在のフォーカス位置を取得するためには、画像処理コントローラ１１０から撮像装置１００に対して取得要求を行う必要があるが、その説明は省略している。また、前述の例では撮影対象物の高さがほぼ無いものを想定していたが、撮影対象物が１種類である場合にその高さを考慮する際は、Ｓ３０３でアームの移動量を算出する際に、ワークの高さを考慮して計算を行えば良い。
【００８４】
上記の通り第３の実施形態によれば、ロボットアームに撮像装置を付けてワークを撮影する際に、できるだけ早く対象物にピントを合わせることができる。
【００８５】
＜変形例１＞
上述した第３の実施形態に示す例では、予め撮像装置１００にＡＦ平均処理時間が記録されており、その値を使用していた。変形例１では、過去に実際にＡＦを行った際の処理時間を記録しておき、その平均処理時間を用いる。例えば、最初の１０回は全てＡＦ機能を使ってピント位置の調整を行い、１１回目以降からはＡＦ平均処理時間とロボットアーム１２０の移動時間を比較するものとする。
【００８６】
図２１は、最初の１０回のＡＦ処理時間を記録した一例を示す。図２１に示す例では、例えば１回目のＡＦ処理時間は８２１ミリ秒、２回目のＡＦ処理時間は７９４ミリ秒であることが分かる。このように実際のＡＦにかかった時間を記録しておき、１０回のＡＦ処理を行ってから、ＡＦ平均処理時間をＳ３００で取得するようにする。なお、図１９のＳ３０６でＡＦを実行した場合は、図２１の処理時間に追加していくことも可能である。
【００８７】
＜変形例２＞
上述した例では、撮影対象物の高さがほぼ無いものを想定していた。変形例２では、撮影対象物に高さがある場合や、撮影対象物が毎回変わるような場合の処理について説明する。撮影対象物に高さがある場合でも、ＡＦ機能を使えば、対象物の高さを考慮して自動でピントを調整することができる。一方、ロボットアーム１２０を動かしてピントを合わせる場合は、動かす際に対象物の高さを考慮する必要がある。図２２（ａ）は、このような場合の処理を示したフローチャートである。なお、図２２（ａ）における処理と図１９に示す処理と異なるのはＳ３１３〜Ｓ３１６なので、これらの処理について説明し、図１９と同様の処理には同じステップ番号を付して説明を省略する。
【００８８】
Ｓ３０２までの処理が終わると、Ｓ３１３でＣＰＵ１１１は、撮影を実行する。ここで撮影を実行するのは、後続の処理で撮影対象物が何かを判定するためである。次にＳ３１４でＣＰＵ１１１は、画像処理を用いて撮影対象物の種類を判別する。なお、この時点ではピントが合っていないことがあるため、撮影画像は多少不鮮明になることが予想される。そのため、そのような画像であっても対象物の判別が可能であるという前提で説明を行う。ここで、撮影対象物（ワーク）は３種類であるものと想定し、図２２（ｂ）にそれぞれの高さの一例を示す。図２２（ｂ）に示すように、ワークごとに高さが予め分かっている。
【００８９】
次に、Ｓ３１５でＣＰＵ１１１は、Ｓ３１４で判別されたワークの高さを取得する。例えば、撮影対象物がワークＣであった場合、ワークＣの高さである３５ｍｍを取得する。次にＳ３１６でＣＰＵ１１１は、ピントを調整するために必要なロボットアーム１２０の移動量を算出する。図１９に示す処理の場合は、現在ピントが合っている距離と現在のロボットアーム１２０の高さを基にして、ロボットアーム１２０の移動量を算出していた。図２２（ａ）の場合は上記２つに加えて、更に、撮影対象物の高さも考慮してロボットアーム１２０の移動量を算出する。例えば、現在ピントが合っている距離が１００mm、現在のロボットアームの高さが２００mm、対象物の高さが３５mmである場合、ロボットアーム１２０を６５mm動かせばピントを合わせることができる。このようにして、撮影対象物の高さを考慮してロボットアーム１２０の移動量を算出することが可能となる。
【００９０】
Ｓ３１６でロボットアーム１２０の移動量を算出し終えると、Ｓ３０４に進んで、以下、図１９を参照して説明した処理を行う。
【００９１】
上記の通り変形例２によれば、ワークに高さがある場合でも、できるだけ早く対象物にピントを合わせることができる。
【００９２】
＜変形例３＞
ロボットアーム１２０には移動可能範囲があるため、ロボットアーム１２０を移動して被写体にピントを合わせようとした場合に、移動可動範囲外になってしまうことがある。そのような場合は撮像装置１００のＡＦ機能を使って被写体にピントを合わせるようにする。この処理を示したものが図２３である。なお、図１９に示す処理と異なるのはＳ３２４のみなので、この処理について説明し、図１９と同じ処理には同じステップ番号を付して説明を省略する。
【００９３】
Ｓ３０３でロボットアーム１２０の移動量を算出したら、Ｓ３２４でＣＰＵ１１１は、算出した移動量がロボットアーム１２０の移動可能範囲内であるかを判定する。移動可能範囲内であればＳ３０４に進み、移動可能範囲外であればＳ３０６へ進んで、撮像装置によるＡＦを実行する。
【００９４】
上記の通り変形例３によれば、ロボットアーム１２０の移動可能範囲を考慮して、できるだけ早く対象物にピントを合わせることができる。
【００９５】
＜変形例４＞
上述した例では、撮像装置１００によるＡＦとロボットアーム１２０の移動のうち、処理時間の早い方を使うようにしてきたが、撮像装置１００によるＡＦが苦手な被写体も存在する。例えばコントラストＡＦの場合、コントラスト差の少ない被写体だとピントを上手く調整することができないことがある。そのような場合はＡＦを行わずに、ロボットアーム１２０を移動してピントを合わせるようにした方が良い。このような処理を示したものが図２４（ａ）である。
【００９６】
処理を開始すると、Ｓ３３０でＣＰＵ１１１は、撮影を実行する。ここで撮影を実行するのは、後続の処理で撮影対象物が何かを判定するためである。次にＳ３３１でＣＰＵ１１１は、画像処理を用いて撮影対象物の種類を判別する。なお、この時点ではピントがまだ合っていないため、撮影画像は多少不鮮明になることが予想される。そのため、そのような画像であっても対象物の判別が可能であるという前提で説明を行う。
【００９７】
Ｓ３３２でＣＰＵ１１１は、対象物のＡＦの可否を取得し、Ｓ３３３においてＡＦが可能であるかを判定する。ここでは、図２４（ｂ）に示すようなワークごとのＡＦ可否の情報を持つものとして、その情報を基にして、撮像装置１００によるＡＦが可能であるかどうかを判定する。例えばワークＡの場合は撮像装置１００によるＡＦが可能であるため、Ｓ３０６へ進み、ＣＰＵ１１１は、撮像装置１００によるＡＦを実行する。このようにして、撮像装置１００によるＡＦが可能である対象物であれば撮像装置１００によるＡＦを実行する。また、ワークＢのように撮像装置１００によるＡＦができない場合は、Ｓ３３５へ進む。Ｓ３３５でＣＰＵ１１１は、撮像装置１００の現在のフォーカス値を取得し、Ｓ３０１へ進む。以降の処理は、図１９における同じステップ番号の処理と同様であるため、ここでは説明を省略する。
【００９８】
上記の通り変形例４によれば、撮像装置１００のＡＦが苦手な対象物である場合は、ロボットアーム１２０を移動して対象物にピントを合わせるようにする。
【００９９】
＜第４の実施形態＞
次に、本発明の第４の実施形態について説明する。第４の実施形態では、ロボットアームに画像処理コントローラが組み込まれているものとして、撮像装置１００で撮影した画像をロボットアームで解析して、解析した情報を基にしてロボットアーム自身が所定の動作を行う場合を例にして説明する。なお、本第４の実施形態における撮像システムは、第２の実施形態において図１５を参照して説明したものと同様であるため、ここでは説明を省略する。また、第４の実施形態ではロボットアーム１１１０が親となり、撮像装置１００に指示を送るものとする。
【０１００】
また、第４の実施形態における撮像システムで行われる処理は、第３の実施形態では画像処理コントローラ１１０及びロボットアーム１２０が行っていた処理をロボットアーム１１１０内で行うことを除いては、図１６〜図２４を参照して上述した処理と同様である。従って、ここでは説明を省略する。
【０１０１】
上記の通り本第４の実施形態によれば、画像処理コントローラをロボットアームに組み込んだ状態でも、第３の実施形態及び変形例１〜４と同様の効果を得ることができる。
【０１０２】
以上、本発明をその好適な実施形態に基づいて詳述してきたが、本発明はこれら特定の実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の様々な形態も本発明に含まれる。上述の実施形態の一部を適宜組み合わせてもよい。
【０１０３】
＜他の実施形態＞
また、本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０１０４】
１００：撮像装置、１０１：光学系、１０２：撮像素子、１０３：ＣＰＵ、１０６：操作部、１０７：通信部、１１０：画像コントローラ、１１１：ＣＰＵ、１１４：通信部、１１５，１１１６：表示部、１１６，１１１５：操作部、１２０，１１１０：ロボットアーム、１２１：ＣＰＵ、１２２，１１１４：通信部、３００：フローチャート作成画面
【図１】
2019171505.tif 000003
【図２】
2019171505.tif 000004
【図３】
2019171505.tif 000005
【図４】
2019171505.tif 000006
【図５】
2019171505.tif 000007
【図６】
2019171505.tif 000008
【図７】
2019171505.tif 000009
【図８】
2019171505.tif 000010
【図９】
2019171505.tif 000011
【図１０】
2019171505.tif 000012
【図１１】
2019171505.tif 000013
【図１２】
2019171505.tif 000014
【図１３】
2019171505.tif 000015
【図１４】
2019171505.tif 000016
【図１５】
2019171505.tif 000017
【図１６】
2019171505.tif 000018
【図１７】
2019171505.tif 000019
【図１８】
2019171505.tif 000020
【図１９】
2019171505.tif 000021
【図２０】
2019171505.tif 000022
【図２１】
2019171505.tif 000023
【図２２】
2019171505.tif 000024
【図２３】
2019171505.tif 000025
【図２４】
2019171505.tif 000026