(57)【要約】【課題】  接続する撮像装置が増加しても、画像に対する処理の遅延を抑制することが可能な制御装置を提供することを目的とする。【解決手段】  取得した画像にイベント検知処理を実行するカメラ１０１と接続する制御装置１０２であって、カメラ１０１からイベント検知結果に関する情報を取得し、イベント検知結果がトリガ条件を満たす場合に、カメラ１０１から取得した画像がエラー判定条件を満たすか否かを判定するエラー判定処理を実行するＣＰＵ３０２を備えることを特徴とする。【選択図】  図１
2020108038.tif 000002
【特許請求の範囲】
【請求項１】
取得した画像に第１処理を実行する撮像装置と接続する制御装置であって、
前記撮像装置から前記第１処理の結果に関する情報を取得する取得手段と、
前記第１処理の結果が第１条件を満たす場合に、前記撮像装置から取得した画像が第２条件を満たすか否かを判定する第２処理を実行する処理手段と、
を備えることを特徴とする制御装置。
【請求項２】
前記処理手段は、前記第１処理の結果が前記第１条件を満たさない場合に、前記第２処理と異なる第３処理を実行することを特徴とする請求項１に記載の制御装置。
【請求項３】
前記処理手段は、前記第２処理の結果が前記第２条件を満たさない場合に、前記第３処理を実行することを特徴とする請求項２に記載の制御装置。
【請求項４】
前記制御装置は、前記制御装置からの指示に基づいて対象物の搬送を行う装置と接続が可能であり、
前記第３処理は、前記装置の動作を指示する処理を含むことを特徴とする請求項２または請求項３に記載の制御装置。
【請求項５】
前記処理手段は、前記第２処理の結果が前記第２条件を満たす場合に、前記撮像装置が取得した画像を記録媒体へ記録する処理を開始することを特徴とする請求項１乃至請求項４のいずれか１項に記載の制御装置。
【請求項６】
前記画像の記録が開始された時刻と記憶された前記画像とを関連付けて記録する記録手段をさらに備えることを特徴とする請求項５に記載の制御装置。
【請求項７】
前記制御装置は、複数の前記撮像装置と接続が可能であって、
前記処理手段は、前記複数の撮像装置のうち前記第１処理の結果が前記第１条件を満たす撮像装置が取得する画像に前記第２処理を実行することを特徴とする請求項１乃至請求項６のいずれか１項に記載の制御装置。
【請求項８】
前記処理手段は、前記複数の撮像装置それぞれから取得した複数の前記第１処理の結果の組み合わせに基づいて、前記第２処理を実行するか否かを判断することを特徴とする請求項７に記載の制御装置。
【請求項９】
前記第２処理の結果が前記第２条件を満たした場合の処理を設定する設定手段をさらに備えることを特徴とする請求項１乃至請求項８のいずれか１項に記載の制御装置。
【請求項１０】
前記処理手段は、前記第２処理の結果が前記第２条件を満たす場合、前記撮像装置の視野に関する制御、および焦点に関する制御の少なくとも一方を実行することを特徴とする請求項１乃至請求項９のいずれか１項に記載の制御装置。
【請求項１１】
前記処理手段は、前記第２処理の結果が前記第２条件を満たす場合、前記第２処理の結果に関する情報を、外部装置に出力する出力手段をさらに備えることを特徴とする請求項１乃至請求項１０のいずれか１項に記載の制御装置。
【請求項１２】
複数の撮像装置と、駆動装置と、前記複数の撮像装置から取得した画像に基づいて前記駆動装置を制御する制御装置と、を含む産業用自動化システムであって、
各撮像装置は、
撮像手段と、
前記撮像手段によって撮像された画像に第１処理を実行する第１処理手段と、
前記第１処理の結果に関する情報および前記画像のいずれかを出力する出力手段と、
を備え、
前記制御装置は、
各撮像装置から前記第１処理の結果に関する情報を取得する取得手段と、
前記第１処理の結果が第１条件を満たす撮像装置から取得した画像が第２条件を満たすか否かを判定する第２処理を実行する第２処理手段と、
前記第２処理の結果に応じて前記駆動装置に対する制御を異ならせる制御手段と、
を備えることを特徴とする産業用自動化システム。
【請求項１３】
取得した画像に第１処理を実行する撮像装置と接続する制御装置の制御方法であって、
前記撮像装置から前記第１処理の結果に関する情報を取得する取得工程と、
前記第１処理の結果が第１条件を満たす場合に、前記撮像装置から取得した画像が第２条件を満たすか否かを判定する第２処理を実行する処理工程と、
を備えることを特徴とする制御装置の制御方法。
【請求項１４】
前記処理工程は、前記第１処理の結果が前記第１条件を満たさない場合に、前記第２処理と異なる第３処理を実行することを特徴とする請求項１３に記載の制御装置の制御方法。
【請求項１５】
前記処理工程は、前記第２処理の結果が前記第２条件を満たさない場合に、前記第３処理を実行することを特徴とする請求項１４に記載の制御装置の制御方法。
【請求項１６】
前記制御装置は、前記制御装置からの指示に基づいて対象物の搬送を行う装置と接続が可能であり、
前記第３処理は、前記装置の動作を指示する処理を含むことを特徴とする請求項１４または請求項１５に記載の制御装置の制御方法。
【請求項１７】
前記処理工程は、前記第２処理の結果が前記第２条件を満たす場合に、前記撮像装置が取得した画像を記録媒体へ記録する処理を開始することを特徴とする請求項１３乃至請求項１５のいずれか１項に記載の制御装置の制御方法。
【請求項１８】
請求項１乃至請求項１１のいずれか１項に記載された制御装置を動作させるために、プロセッサが実行することが可能なプログラム。
【請求項１９】
請求項１８に記載のプログラムを記憶したプロセッサが読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、撮像装置が撮像した画像を処理する制御装置、制御方法、産業用自動化システム、プログラム、および記憶媒体に関する。
【背景技術】
【０００２】
カメラ等の撮像装置から対象物（ワーク）を含む領域を撮像した画像を取得し、当該画像に基づいて取得したワークの位置情報を用いて、ロボットアーム等の装置の動作を制御する制御装置および制御装置を含む産業用自動化システムがある。また、制御装置は、カメラから取得した画像に解析処理を施して、撮像対象の領域にエラーが発生していないかを判定し、判定結果に基づいて画像の記録処理等を実行する。
【０００３】
また、このような制御装置は、より多くの視点から画像を取得するため、複数の撮像装置と接続して画像を取得することがある。
【０００４】
特許文献１ではカメラと、カメラによって取り込まれた画像を解析処理する前段解析装置と、前段解析装置による解析結果に基づく画像解析を実行するサーバ（後段解析装置）と、を備える画像解析システムが記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−１９６９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１では、複数のカメラ（前段解析装置）がある場合、後段解析装置は常に、それぞれのカメラによって取り込まれた画像に対する前段解析装置の処理結果に基づいて画像解析を実行する。上述した産業用自動化システムにおける制御装置を後段解析装置とすると、接続するカメラ（前段解析装置）の数が増加すると、後段解析装置における解析処理の処理負荷が高くなる。制御装置が解析処理以外の処理、例えば、装置の動作の制御処理や記録処理を実行する場合、遅延が発生することがある。
【０００７】
本発明は、上述の課題に鑑みて、接続する撮像装置が増加しても、画像に対する処理の負荷を低減し、各種処理の遅延を抑制することが可能な制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の制御装置は、取得した画像に第１処理を実行する撮像装置と接続する制御装置であって、前記撮像装置から前記第１処理の結果に関する情報を取得する取得手段と、前記第１処理の結果が第１条件を満たす場合に、前記撮像装置から取得した画像が第２条件を満たすか否かを判定する第２処理を実行する処理手段と、を備えることを特徴とする。
【発明の効果】
【０００９】
本発明に係る制御装置によれば、接続する撮像装置が増加しても、撮像装置における処理の結果に応じて制御装置の処理の実行を制御することが可能となる。したがって、接続する撮像装置が増加しても、画像に対する処理の負荷を低減し、各種処理の遅延を抑制することが可能な制御装置を提供することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】制御装置を含む産業用自動化システムの第１の構成図である。
【図２】カメラの機能ブロックを示すブロック図である。
【図３】制御装置の機能ブロックを示すブロック図である。
【図４】カメラの動作を示すフローチャートである。
【図５】カメラが取得する画像を示す第１の模式図である。
【図６】制御装置の動作を設定するためのＧＵＩを示す模式図である。
【図７】制御装置の全体動作を示す第１のフローチャートである。
【図８】制御装置の処理を示すフローチャートである。
【図９】エラー状態と判定がされた場合に表示装置に表示される画像を示す模式図である。
【図１０】制御装置の基本動作および判定処理を設定するためのＧＵＩを示す模式図である。
【図１１】イベント検知結果と対応優先度とを関連づけたテーブルを示す模式図である。
【図１２】カメラで得られたイベント検知結果のログを示す第１の模式図である。
【図１３】カメラで得られたイベント検知結果のログを示す第２の模式図である。
【図１４】産業用自動化システムの構成を示す第２の構成図である。
【図１５】制御装置の全体動作を示す第２のフローチャートである。
【図１６】カメラが取得する画像を示す第２の模式図である。
【発明を実施するための形態】
【００１１】
以下、図面を用いて本発明の実施の形態について説明する。なお、本発明の技術的範囲は、特許請求の範囲によって確定され、以下に例示する実施形態によって限定されるものではない。また、実施形態の中で説明されている特徴の組み合わせすべてが本発明に必須とは限らない。本明細書および図面に記載の内容は例示であって、本発明を制限するものと見なすべきではない。本発明の趣旨に基づき種々の変形が可能であり、それらを本発明の範囲から除外するものではない。即ち、各実施形態及びその変形例を組み合わせた構成も全て本発明に含まれるものである。
【００１２】
＜実施例１＞
実施例１の産業用自動化システムは、複数の撮像装置と、制御装置とを備える。撮像装置は、設定された領域を撮像して画像を取得し、画像に基づき所定のイベントが発生したか否かを判定し、イベントを検知する検知処理を実行する。制御装置は、所定のイベントが検知された撮像装置から画像を取得し、取得した画像を解析する処理を実行することによって、エラー状態であるか否かを判定する判定処理を実行する。さらに、制御装置は、エラー状態と判定した場合、あらかじめ定められたエラー時の動作（例外処理）を実行する。ここで、エラー状態は、例えば、作業台に積載されたワークの荷崩れや、ロボットアームの作業領域近傍への第三者の立ち入り等である。
【００１３】
これにより、制御装置は、撮像装置が取得した画像に対して、常にエラー状態を判定するための画像解析処理を実行する必要がなく、制御装置の負荷を抑制することが可能となる。
【００１４】
図１は、制御装置１０２を含む産業用自動化システムの構成図である。産業用自動化システムは、カメラ１０１、制御装置１０２、ロボットアーム１０３、表示装置１０４、およびマウス１０５を備える。
【００１５】
また、産業用自動化システムは、制御装置１０２から出力された情報を処理するための外部サーバ１０６を備える。産業用自動化システムの制御装置１０２は、カメラ１０１から得られた画像に基づいて、ロボットアーム１０３の動作を制御する。実施例１の産業用自動化システムは、カメラ１０１で撮像した画像に基づいてロボットアーム１０３を制御し、作業台１０７上に積載されたワーク（対象物）１０８を、作業台１０９上に積載する作業（基本動作）を実行するものとする。
【００１６】
カメラ１０１は、被写体を撮像して画像（撮像画像）を得る撮像装置である。本実施例では、産業用自動化システムはカメラ１０１ａ、１０１ｂ、１０１ｃを含む。カメラ１０１ａは、作業台１０７と作業台１０７上のワーク１０８とを含む領域を撮像して画像を取得する。カメラ１０１ｂは、ロボットアーム１０３を含む領域を撮像して画像を取得する。カメラ１０１ｃは、作業台１０９と作業台１０９上のワーク１０８とを含む領域を撮像して画像を取得する。以降、カメラに対して、カメラ１０１ａ、１０１ｂ、１０１ｃとする場合には、それぞれ撮像領域の異なるカメラを区別して扱う。一方で、カメラをカメラ１０１として示す場合には、全てのカメラに共通する内容を説明する。
【００１７】
制御装置１０２は、産業用自動化システムの各装置を制御する制御装置である。制御装置１０２の詳細は後述する。
【００１８】
ロボットアーム１０３は、制御装置１０２からの指示に応じて動作する装置である。ロボットアーム１０３は、ロボット制御装置を内蔵しており、外部からの制御指示を受け、軸やハンドの動作を制御する。制御装置１０２から送信された動作コマンドや、座標位置等に応じて、ロボットアーム１０３の動作が制御される。
【００１９】
また、制御装置１０２は、ロボットアーム１０３と同一の筐体に格納されていてもよい。なお、ロボットアーム１０３は、制御装置１０２の指示に応じて動作する装置であればよく、ベルトコンベア等の搬送装置や、検査装置等の装置であってもよい。なお、産業用システムを構成する装置は、上述の装置以外を含むことも可能である。ハロゲン照明や発光ダイオード照明などで構成された照明装置や、外部記憶装置を含んでいてもよい。
【００２０】
表示装置１０４は、制御装置１０２と接続し、制御装置１０２の動作を設定するためのグラフィカルユーザインターフェース（ＧＵＩ）を表示するモニターである。
【００２１】
マウス１０５は、制御装置１０２にユーザ指示を入力するための操作入力デバイスである。ユーザは、表示装置１０４に表示されたＧＵＩに対する操作を、マウス１０５を用いて入力することにより、システムの動作開始や終了を指示することが可能である。また、ユーザは、表示装置１０４に表示されたＧＵＩを、マウス１０５を用いて操作することにより、制御装置１０２の動作フローを設定することが可能である。なお、操作入力デバイスはマウス１０５に限らず、キーボードや表示装置１０４の画面に設けられたタッチ操作を検出するタッチデバイス、音声入力デバイス等を用いることが可能である。
【００２２】
サーバ１０６は、制御装置１０２から取得した情報を処理する情報処理装置である。サーバ１０６は、制御装置１０２から入力された映像信号を内部の記録媒体に記録する。また、サーバ１０６は、制御装置１０２からシステムにエラーが発生したことを示す情報を取得した場合に、発生した時刻とともにログを記録することもできる。また、サーバ１０６は、制御装置１０２からシステムにエラーが発生したことを示す情報を取得した場合に、アラートを発報するものであってもよい。
【００２３】
図２は、カメラ１０１の機能ブロックを示すブロック図である。カメラ１０１は、撮像部２０１、ＣＰＵ２０２、メモリ２０３、記憶媒体２０４、およびＩ／Ｆ部２０５を備える。
【００２４】
撮像部２０１は、撮像レンズ、レンズ駆動系、センサ、画像処理チップを含む撮像ユニットである。
【００２５】
ＣＰＵ２０２は、メモリ２０３に記憶されたプログラムを実行することにより、カメラ１０１を動作させるプロセッサである。なお、ＣＰＵ２０２は、複数のプロセッサで構成されていてもよい。また、ＣＰＵ２０２が実行する機能のうち、一部の機能を１以上の電子回路によって実行することも可能である。
【００２６】
ＣＰＵ２０２は、撮像部２０１に対して撮像条件の設定や、撮像の指示を行い、撮像部２０１の撮像処理を制御する。ＣＰＵ２０２は、取得した撮像画像をメモリ２０３や記憶媒体２０４に記憶する。また、ＣＰＵ２０２は、取得した撮像画像に対してあらかじめ設定されたイベントを検知する処理（イベント検知処理）を実行する。
【００２７】
メモリ２０３は、ＣＰＵ２０２が実行するプログラムを記憶する。メモリ２０３は、例えばＲＯＭであるとする。なお、メモリ２０３は、ＲＡＭ、ＥＰＲＯＭ、もしくはＥＥＰＲＯＭなどの他の不揮発メモリデバイスであってもよく、複数で構成されてもよい。記憶媒体２０４は、撮像画像を記録する。
【００２８】
Ｉ／Ｆ部２０５は、制御装置１０２と接続し、画像やイベント検知結果を制御装置１０２に出力するインターフェースである。また、Ｉ／Ｆ部２０５は、制御装置１０２から撮像の指示や撮像条件を示す情報を受信する。
【００２９】
カメラ１０１は、取得した画像を、Ｉ／Ｆ部２０５を介して制御装置１０２に送信する。また、カメラ１０１のＣＰＵ２０２は、取得した画像からイベントを検知するイベント検知処理を実行する。ＣＰＵ２０２は、イベント検知処理で得られた結果に関する情報をメモリ２０３に記憶する。
【００３０】
カメラ１０１は、ホワイトバランス、撮像角度（パン・チルト）やズーム倍率、焦点距離や絞り、信号増幅率などの撮像条件（撮像パラメータ）を変更するための機構を有する。カメラ１０１は、制御装置１０２からの指示によって撮像条件を変更可能である。
【００３１】
図３は、制御装置１０２の機能ブロックを示すブロック図である。制御装置１０２は、Ｉ／Ｆ部３０１、ＣＰＵ３０２、メモリ３０３、およびＨＤＤ３０４を備える。
【００３２】
Ｉ／Ｆ部３０１は、システムを構成する他の装置と接続し、ＣＰＵ３０２の指示に応じて情報の送受信を行うインターフェースである。制御装置１０２は複数のＩ／Ｆ部３０１を備える。
【００３３】
Ｉ／Ｆ部３０１ａ〜ｃは、カメラ１０１ａ〜ｃとそれぞれ接続し、カメラ１０１ａ〜ｃから画像や、カメラ１０１ａ〜ｃが実行した処理の結果に関する情報を受信する。また、Ｉ／Ｆ部３０１ａ〜ｃは、カメラ１０１ａ〜ｃに、撮像開始指示、撮像終了指示、および撮像条件の変更指示を送信する。
【００３４】
Ｉ／Ｆ部３０１ｄは、ロボットアーム１０３と接続し、ロボットアーム１０３に制御指示を送信する。また、Ｉ／Ｆ部３０１ｄは、ロボットアーム１０３から動作完了を示す情報等のロボットアーム１０３の制御に関する情報を受信する。
【００３５】
Ｉ／Ｆ部３０１ｅは、サーバ１０６と接続し、サーバ１０６に画像やエラー発生信号を送信する。
【００３６】
Ｉ／Ｆ部３０１ｆは、表示装置１０４と接続し、表示装置１０４に映像信号を送信する。
【００３７】
Ｉ／Ｆ部３０１ｇは、マウス１０５と接続し、操作信号を受け付ける。
【００３８】
Ｉ／Ｆ部３０１は、外部の装置と通信するのに適した規格に基づき構成される。例えば、ネットワークインターフェース、シリアル通信インターフェースなどから構成される。
【００３９】
ＣＰＵ３０２は、メモリ３０３に記憶されたプログラムを実行することにより、後述する制御装置１０２の動作を実行するプロセッサである。なお、ＣＰＵ３０２は、複数のプロセッサで構成されていてもよいし、後述する制御装置１０２に関する制御の一部、もしくはすべてを１以上の電子回路によって実行することも可能である。
【００４０】
メモリ３０３は、ＣＰＵ３０２が制御装置１０２の処理を実行するためのソフトウェアおよびパラメータを記憶する記憶媒体である。メモリ３０３は、画像処理、画像処理ライブラリ、画像処理設定、およびＩ／Ｏルーチンを実現する１以上のソフトウェアを記憶する。ＣＰＵ３０２は、画像処理のソフトウェアを使って後述のエラー判定処理を実行する。
【００４１】
メモリ３０３は、例えばＲＯＭであるとする。なお、メモリ３０３は、ＲＡＭ、ＥＰＲＯＭ、もしくはＥＥＰＲＯＭなどの他の不揮発メモリデバイスであってもよい。メモリ３０３は、複数の記憶媒体から構成されていてもよい。
【００４２】
図４は、カメラ１０１の動作を示すフローチャートである。
【００４３】
Ｓ４０１で、ＣＰＵ２０２は、イベント検知処理を実行するための画像を撮像するための撮像条件を設定する。撮像条件は、イベント検知処理のために最適なパン、チルト、ズーム等の撮像条件があらかじめ設定され、メモリ２０３に記憶されているとする。ＣＰＵ２０２は、メモリ２０３から撮像条件を読み出して撮像部２０１に設定する。
【００４４】
Ｓ４０２で、ＣＰＵ２０２は、撮像部２０１に撮像開始指示を出力し画像（撮像画像）を取得する。なお、本実施例において、カメラ１０１が取得する画像は動画像であるとする。
【００４５】
Ｓ４０３で、ＣＰＵ２０２は、取得した撮像画像に対して、イベント検知処理を実行する。
【００４６】
Ｓ４０４で、ＣＰＵ２０２は、イベント検知処理に用いた画像を取得した時刻とイベント検知結果とを記憶媒体２０４に記憶する。
【００４７】
Ｓ４０５で、ＣＰＵ２０２は、撮像画像を記憶媒体２０４に記憶する。
【００４８】
Ｓ４０６で、ＣＰＵ２０２は、制御装置１０２から記録フラグ変更要求を受信したか否かを判定する。記録フラグ変更要求は、制御装置１０２がエラー判定処理の結果、エラー状態であると判定した場合に、制御装置１０２が実行する例外処理の１つであるポスト画像記録処理の開始もしくは停止に対応する制御信号である。記録フラグ変更要求は、記録フラグをオンにする要求（オン要求）と、記録フラグをオフにする要求（オフ要求）と、を含む。いずれかの記録フラグ変更要求を受信した場合、処理はＳ４０７に進む。そうでない場合、処理はＳ４１０に進む。
【００４９】
Ｓ４０７で、ＣＰＵ２０２は、受信した記録フラグ変更要求がオン要求であるか否かを判定する。受信した記録フラグ変更要求がオン要求である場合、処理はＳ４０８に進む。受信した記録フラグ変更要求がオン要求でない、すなわち、オフ要求を受信した場合、処理はＳ４０９に進む。
【００５０】
Ｓ４０８で、ＣＰＵ２０２は、メモリ２０３の記録フラグをオンに設定する。処理は、Ｓ４１０に進む。
【００５１】
Ｓ４０９で、ＣＰＵ２０２は、メモリ２０３の記録フラグをオフに設定する。処理は、Ｓ４１０に進む。
【００５２】
Ｓ４１０で、ＣＰＵ２０２は、メモリ２０３の記録フラグがオンに設定されているか否かを判定する。記録フラグがオンに設定されている場合には、処理はＳ４１１に進む。そうでない場合、処理はＳ４１２に進む。
【００５３】
Ｓ４１１で、ＣＰＵ２０２は、Ｓ４０２で取得した撮像画像を制御装置１０２に出力する。
【００５４】
Ｓ４１２で、ＣＰＵ２０２は、制御装置１０２からＩ／Ｆ部２０５を介してプレ画像を要求する指示が入力されたか否かを判定する。プレ画像の要求は、制御装置１０２がエラー判定処理の結果、エラー状態であると判定した場合に、制御装置１０２が実行する例外処理の１つであるプレ画像記録処理の実行に対応する制御信号である。プレ画像の要求は、要求を受信した時点から所定の期間前までに取得された画像を要求する指示であるとする。なお、プレ画像の要求は、制御装置１０２が期間を指定することも可能である。プレ画像の要求がある場合、処理はＳ４１３に進む。そうでない場合、処理はＳ４１４に進む。
【００５５】
Ｓ４１３で、ＣＰＵ２０２は、記憶媒体２０４から現時点から所定の期間前までに取得された画像を読み出して、制御装置１０２に出力する。
【００５６】
Ｓ４１４で、ＣＰＵ２０２は、制御装置１０２からＩ／Ｆ部２０５を介してイベント検知結果を示す情報を要求する指示が入力されたか否かを判定する。イベント検知結果を示す情報を要求する指示が入力された場合には、処理はＳ４１５に進む。そうでない場合、処理はＳ４１６に進む。
【００５７】
Ｓ４１５で、ＣＰＵ２０２は、Ｉ／Ｆ部２０５を介してイベント検知結果を示す情報を制御装置１０２に出力する。
【００５８】
Ｓ４１６で、ＣＰＵ２０２は、制御装置１０２からＩ／Ｆ部２０５を介して撮像処理を実行する指示が入力されたか否かを判定する。撮像処理の実行指示は、制御装置１０２が基本動作等に用いる画像をカメラ１０１に撮像させるための指示である。例えば、撮像処理の実行指示は、制御装置１０２がエラー判定処理や、ワーク１０８の位置情報の検出等のための解析処理等、あらかじめ定められた画像処理を実行するために用いる画像をカメラ１０１に撮像させるための制御信号である。撮像処理を実行する指示が入力された場合には、処理はＳ４１７に進む。そうでない場合、処理はＳ４２０に進む。
【００５９】
Ｓ４１７で、ＣＰＵ２０２は、撮像処理を実行するための画像を撮像するための撮像条件を設定する。制御装置１０２は、撮像処理の実行指示を送信した場合、撮像条件を設定するための情報をカメラ１０１に出力する。撮像条件は、制御装置１０２が取得した撮像画像に対して実行する処理に応じてそれぞれ定められていてもよい。なお、Ｓ４１７で設定する撮像条件は、イベント検知用の撮像条件と同じでもよい。ＣＰＵ２０２は、制御装置１０２から取得した撮像条件を設定するための情報に基づいて、撮像部２０１の撮像条件を設定する。
【００６０】
Ｓ４１８で、ＣＰＵ２０２は、撮像部２０１に撮像指示を出力し撮像条件に基づく撮像処理を実行し、撮像画像を取得する。
【００６１】
Ｓ４１９で、ＣＰＵ２０２は、Ｉ／Ｆ部２０５を介して取得した撮像画像を制御装置１０２に出力する。
【００６２】
Ｓ４２０で、ＣＰＵ２０２は、撮像終了の指示が入力されたか否かを判定する。撮像終了の指示が入力された場合、撮像制御を終了する。そうでない場合、Ｓ４０１に戻る。
【００６３】
次に、カメラ１０１が実行するイベント検知処理について説明する。
【００６４】
カメラ１０１のＣＰＵ２０２は、「動体」、「置き去り」、「持ち去り」、「いたずら」、「侵入」、「通過」の各イベントを検知することが可能である。
【００６５】
動体検知処理は、取得した画像のうち、検知領域内に動いている物体を検出した場合に、「動体あり」の検知結果を出力する処理である。なお、検知領域内で動いている物体が検出されない場合は、「動体なし」の検知結果が出力される。すなわち、撮像画像のフレームにおいて検知領域内に動く物体が検出されている間、「動体あり」の検知結果が出力される。
【００６６】
置き去り検知処理は、取得した画像のうち、前のフレームの検知領域内に存在しなかった物体が、後のフレームの検知領域内に一定時間以上、存在する場合に、「置き去りあり」の検知結果を出力する。
【００６７】
持ち去り検知処理は、取得した画像のうち、前のフレームの検知領域内の物体が、後のフレームで検出されないまま、一定時間以上経過したことに応じて「持ち去りあり」の検知結果を出力する。
【００６８】
通過検知処理は、取得した画像において、あらかじめ設定した検知ラインを物体が通過したことが検出された場合に、「通過あり」の検知結果を出力する。
【００６９】
侵入検知処理は、取得した画像において、あらかじめ設定した検知領域に、人や動いている物体が検出され、一定時間以上経過した場合に、「侵入あり」の検知結果を出力する。
【００７０】
ＣＰＵ２０２は、全ての検知処理を取得した画像に対して実行してもよい。ユーザがあらかじめＣＰＵ２０２が実行するイベント検知処理を選択することも可能である。
【００７１】
図５は、カメラ１０１が取得した画像を示す模式図である。図５（ａ）、図５（ｂ）は、カメラ１０１ａが取得した画像を示す。図５（ａ）に示すように、カメラ１０１ａは、作業台１０７とワーク１０８とを含む領域を撮像する。カメラ１０１ａは、検知領域Ｒ１を予め設定される。検知領域Ｒ１は、作業台１０７とワーク１０８とを含まない、ワーク１０８や作業者の侵入がないと想定される領域に設定されている。
【００７２】
図５（ａ）に示すように、作業台１０７に複数のワーク１０８が積まれている状態のフレームが続く場合は、検知領域Ｒ１に変化がないことから、ＣＰＵ２０２は侵入や置き去り等のイベントを検知しない。作業台１０７上のワーク１０８が崩れることにより、図５（ｂ）に示すように検知領域Ｒ１にワーク１０８が転がって侵入したとする。カメラ１０１ａの動体検知処理が有効で、ワーク１０８が検知領域Ｒ１で動いている間は、「動体あり」の検知結果が出力される。また、カメラ１０１ａの置き去り検知処理が有効である場合には、ワーク１０８が検知領域Ｒ１に入り、動きを止めてから所定の期間経過後に「置き去りあり」の検知結果が出力される。また、カメラ１０１ａの侵入検知処理が有効である場合には、ワーク１０８が検知領域Ｒ１に入り、所定の期間経過後に「侵入あり」の検知結果が出力される。上述のようにイベント検知をすることにより、例えばワーク１０８が作業領域外に落下するような変化を検知することが可能となる。
【００７３】
図５（ｃ）、図５（ｄ）は、カメラ１０１ｂが取得した画像を示す。図５（ｃ）に示すように、カメラ１０１ｂは、ロボットアーム１０３を含む領域を撮像する。カメラ１０１ｂは、検知ラインＲ２が予め設定される。検知ラインＲ２は、ロボットアーム１０３から一定距離離れた位置に設けられるとする。
【００７４】
図５（ｃ）に示すように、ロボットアーム１０３の周囲に何もない場合、ＣＰＵ２０２は通過等のイベントを検知しない。図５（ｄ）に示すように、人物が検知ラインＲ２を超えてロボットアーム１０３に近づこうとしたとする。カメラ１０１ａの通過検知処理が有効である場合には、人物が検知ラインＲ２を超えたタイミングで、「通過あり」の検知結果が出力される。これにより、ロボットアーム１０３に人が近づくことを検知することが可能となる。なお、検知領域を、ロボットアーム１０３を含む領域とすることにより、侵入検知処理等の他の検知処理を用いることも可能である。
【００７５】
図５（ｅ）、図５（ｆ）は、カメラ１０１ｃが取得した画像を示す。図５（ｅ）に示すように、カメラ１０１ｃは、作業台１０９とワーク１０８とを含む領域を撮像する。カメラ１０１ｃは、検知領域Ｒ３を予め設定される。検知領域Ｒ３は、作業台１０９とワーク１０８とを含む領域であるとする。
【００７６】
図５（ｅ）に示す状態から、何者かにより作業台１０９上に積み上げられた２つのワーク１０８のうち、上側のワーク１０８が持ち去られ図５（ｆ）に示す状態に遷移したとする。カメラ１０１ｃの持ち去り検知処理が有効である場合には、ワーク１０８が持ち去られてから一定期間が経過したことに応じて「持ち去りあり」の検知結果が出力される。
【００７７】
上述のようにして、カメラ１０１が撮像している領域、対象物に応じて、有効とする検知処理や検知条件（検知領域、検知ライン）を設定することにより、作業に応じて検知すべきイベントを検知することが可能である。
【００７８】
制御装置１０２が起動すると、ＣＰＵ３０２がメモリ３０３からソフトウェアを読み出して起動処理を開始する。ＣＰＵ３０２は、制御装置１０２の動作を設定するためのＧＵＩを表示装置１０４に表示する。
【００７９】
図６は、制御装置１０２の動作を設定するためのＧＵＩを示す模式図である。ＧＵＩ６００は、本実施例における制御装置１０２の基本動作とエラー時動作を設定するために、表示装置１０４に表示されるＧＵＩである。ユーザは、ＧＵＩ６００の各項目を、マウス１０５を用いて設定することにより、制御装置１０２の制御条件を設定する。
【００８０】
ボックス６０１は、使用するカメラ１０１を指定するためのリストボックスである。ユーザは、ボックス６０１を操作してカメラ１０１を選択する。
【００８１】
設定ボタン６０２は、選択されたカメラ１０１の撮像条件を設定するためのボタンである。設定ボタン６０２がクリックされたことに応じて、ＣＰＵ３０２は、選択されたカメラ１０１の撮像条件を設定するためのＧＵＩに表示を変更する。設定可能な撮像条件は、ホワイトバランス、撮像角度（パン・チルト）やズーム倍率、焦点距離や絞り、信号増幅率などの撮像条件（撮像パラメータ）等である。
【００８２】
映像表示領域６０３は、ボックス６０１で選択されたカメラ１０１のライブビュー画像が表示される領域である。
【００８３】
ボックス６０４は、ユーザが、本システムが基本的に実行する処理（基本動作）を設定するためのリストボックスである。図６では、基本動作として「Ｆｌｏｗ１」が設定されている。
【００８４】
ボックス６０５はユーザが基本動作の終了条件を設定するためのテキストボックスである。図６のＧＵＩで設定される動作は、ユーザが基本動作の繰り返し回数を設定し、Ｆｌｏｗ１の処理が設定された回数実行されたことに応じて、基本動作が終了するとする。なお、基本動作のフロー内で定義された終了条件が満たされるまで処理を繰り返すように設定することもできる。
【００８５】
ボックス６０６はユーザが監視を実施するかどうかを設定するためのチェックボックスである。ここで、監視とは、制御装置１０２がカメラ１０１のイベント検知処理の結果を取得する処理、および、そのイベント検知結果に関連するエラー判定処理である。
【００８６】
タブ６０７はカメラ１０１が実行したイベント検知処理の結果に応じて実行するエラー判定処理およびエラーがあると判定された場合に移行する例外処理をユーザが設定するためのタブである。本実施例では、カメラ１０１ごとにトリガ条件、エラー判定処理、および例外処理の内容を設定可能であるとする。図６のタブ６０７は、カメラ１０１ｂに対するトリガ条件、エラー判定処理、および例外処理を設定するタブである。他のカメラ１０１についても、タブを切り替えてトリガ条件、エラー判定処理、および例外処理をユーザが設定することが可能である。すなわち、各カメラ１０１が撮像している領域ごとに、トリガ条件、エラー判定処理、および例外処理を設定することができる。また、同一のカメラに対して、複数のトリガ条件、エラー判定処理、および例外処理を設定することも可能である。トリガ条件、エラー判定処理、および例外処理を設定するためのタブは、ユーザが追加や削除をすることにより枚数を自由に変更することが可能である。
【００８７】
ボックス６０８は、検知結果を取得する対象のカメラ１０１を、ユーザが設定するためのリストボックスである。
【００８８】
ボックス６０９は，対象のカメラ１０１が取得可能な複数の検知内容のうち、どの検知内容をエラー判定処理の開始トリガにするかを示すトリガ条件を、ユーザが設定するためのリストボックスである。図６では、カメラ１０１ｂから「侵入あり」を示す情報を取得した場合に、設定されたエラー判定処理を実行すると設定されている。
【００８９】
なお、上述したようにカメラ１０１は複数のイベントを検知可能である。制御装置１０２は、あらかじめイベント検知結果と対応優先度とを関連づけたテーブルを記憶する。制御装置１０２は、ボックス６０９で設定したイベント検知結果に対応する優先度以上の優先度に対応する検知結果が得られた場合においてもエラー判定処理が実行されるとしてもよい。図１１は、イベント検知結果と対応優先度とを関連づけたテーブルを示す模式図である。例えば、「置き去りあり」がボックス６０９に設定されている場合、侵入あり、動体あり、置き去りありのいずれかが検知されるとエラー判定処理が実行される。
【００９０】
なお、カメラ１０１が変化を検知する対象の範囲や、制御装置１０２が例外処理に移行するためのトリガ条件を、カメラ１０１が画像を取得した時刻によって変化させることも可能である。例えば、制御装置１０２を用いる生産ラインシステムにおいて、周囲に作業員が多く働いている昼間は、システムの誤検知を抑制するために、カメラ１０１が変化を検知する対象の範囲を狭くする。一方で、作業員が少ない夜間は、監視範囲を広める。さらに、昼間では、例外処理に移行するためのトリガ条件をより対応優先度が高いイベント検知結果に設定し、エラー判定処理の実行頻度を下げる。一方で、夜間では、トリガ条件を昼間より対応優先度が低いイベント検知結果に設定し、エラー判定処理の実行頻度を上げる。
【００９１】
また、イベント検知結果の種類ごとに発生時刻を記録し、その発生間隔に基づいて、エラー判定処理を実行するか否かを制御してもよい。図１２は、カメラ１０１ｂで得られたイベント検知結果のログを示す表である。カメラ１０１ｂによって侵入ありが複数回検知されているが、ＩＤ１〜３とＩＤ７〜８は、次の侵入ありの検知までの間隔が十分に大きいので、エラー判定処理に移行しないように制御する。一方で、ＩＤ４〜６は、次の侵入ありの検知までの間隔が短いことから、所定回数（例えば３回）目に検知されたＩＤ６のイベント検知結果に応じてエラー判定処理に移行するように制御する。
【００９２】
人とロボットが協働で作業するような際は、ワークの供給等の作業目的で、人が侵入し、一時的に人が写り込むことがある。このような一定時間内において発生頻度が少ないイベントは、エラーではないのでエラー判定処理を行わない。
【００９３】
また、カメラ１０１ａ〜１０１ｃそれぞれのイベント検知の組み合わせに応じて、後段の処理内容を切り換えたりしてもよい。図１３は、カメラ１０１ｃで得られたイベント検知結果のログを示す表である。図１２および図１３によると、カメラ１０１ｂがＩＤ４〜ＩＤ６のイベント検知結果を取得した期間に、カメラ１０１ｃがＩＤ３のイベント検知結果を取得している。このように、複数のカメラ１０１でイベント検知結果が取得された場合に、エラー判定処理を実行するようにしてもよい。この場合は、カメラ１０１ｂの動体ありの検知結果と、カメラ１０１ｃの動体ありの検知結果との組み合わせに基づいて、制御装置１０２は、エラー判定処理に移行する。また、エラー判定処理へ移行するトリガ条件でなく、例外処理への移行を判定するための条件として、複数のカメラ１０１に対するイベント検知結果の組み合わせを参照してもよい。
【００９４】
ボックス６１０は、ボックス６０９で設定された検知内容が検知されたときに本システムが実行するエラー判定処理をユーザが設定するためのリストボックスである。図６では、エラー判定処理として「Ｆｌｏｗ５」が設定されている。「Ｆｌｏｗ５」に示された処理の詳細は、後述する。
【００９５】
ボックス６１１およびボックス６１２は、エラー判定時の動作を設定する項目である。ボックス６１１は、エラーありと判定された時に、画像を記録（録画）するか否か、および録画条件を設定するためのリストボックスである。図６のボックス６１１には，エラー検知後の映像を録画（ポスト録画）し、５分後に録画を停止する設定が入力されている。なお、カメラ１０１が所定期間だけ画像を一時記録しておき、エラー状態を判定した時刻より所定期間だけ前までの画像を記録（プレ録画）することも可能である。エラーの原因を把握するためには、プレ録画を実行することは有効である。
【００９６】
ボックス６１２は、エラー状態であると判定された時に、実行中の基本動作を停止するか否かを、ユーザが設定するためのチェックボックスである。
【００９７】
ボタン６１３は、ユーザが基本動作、エラー判定処理、例外処理をテスト実行するためのボタンである。ボタン６１４は、オンラインで、システム基本動作およびエラー時動作を外部からの指示を受領可能とするボタンである。テスト実行時に検知されたログはボックス６１５に表示される。
【００９８】
図７、図８は、制御装置１０２の制御フローを示すフローチャートである。図７は、制御装置１０２の全体動作を示すフローチャートである。制御装置１０２が起動したことに応じて、ＣＰＵ３０２はメモリ３０３に記憶されたソフトウェアを実行し、図７のフローチャートが開始される。
【００９９】
Ｓ７０１で、制御装置１０２のＣＰＵ３０２は、各カメラ１０１に対してイベント検知結果を示す情報を要求する。イベント検知結果の要求処理は、フローチャートを実行中、繰り返し実行される。
【０１００】
Ｓ７０２で、ＣＰＵ３０２は、各カメラ１０１のイベント検知結果を示す情報を取得する。
【０１０１】
Ｓ７０３で、ＣＰＵ３０２は、イベント検知結果があらかじめ設定されたトリガ条件を満たすか否かを判定する。少なくとも１つのカメラ１０１のイベント検知結果がトリガ条件を満たす場合、処理はＳ７０４に進む。そうでない場合、処理はＳ７０６に進む。ここで、あらかじめ設定されたトリガ条件は、取得したイベント検知結果が、図６のタブ６０７のボックス６０９で設定されたイベント検知結果と一致することである。
【０１０２】
Ｓ７０４は、ＣＰＵ３０２があらかじめ設定された判定処理を実行するサブプロセスである。ここで、エラー判定処理は、トリガ条件を満たすイベント検知結果を取得したカメラ１０１から取得した画像を解析して、エラーが発生したか否かを判定するエラー判定処理である。エラー判定処理は、カメラ１０１から取得した画像が、あらかじめ定められたエラー判定条件を満たすか否かを判定する。エラー判定条件は、例えば、画像に含まれるワーク１０８の位置および姿勢のうち少なくとも一方が、あらかじめ定められた条件を満たすか否かである。例えば、ワーク１０８が所定の角度以上傾いていることを検出した場合、エラー状態であると判定する。位置または姿勢と、ワークの種類を合わせてエラー判定条件としてもよい。また、画像のうち、あらかじめ定められた作業領域に、人物が侵入しているか否かをエラー判定条件としてもよい。ＣＰＵ３０２は、エラー判定処理でエラーが発生したと判定した場合、エラーフラグをオンにする。
【０１０３】
図８（ａ）は、Ｓ７０４で実行するエラー判定処理のフローを示すフローチャートである。
【０１０４】
Ｓ８０１で、ＣＰＵ３０２は、Ｉ／Ｆ部３０１を介してイベント検知結果がトリガ条件を満たすカメラ１０１から画像を取得する。
【０１０５】
Ｓ８０２で、ＣＰＵ３０２は、取得した画像に基づいてエラーの有無を検出するための画像解析処理を実行する。画像解析処理は、あらかじめユーザが設定したフローに基づいて実行される。例えば、図６に示すように、イベント検知結果がトリガ条件を満たす場合、「Ｆｌｏｗ５」を実行するとあらかじめ設定されている。Ｆｌｏｗ５で、ＣＰＵ３０２は、撮像画像に含まれるワーク１０８のエッジやワーク１０８に含まれるバーコードを解析する。そして、ＣＰＵ３０２は、撮像画像に含まれるワーク１０８の種類、および位置情報を取得し、ワーク１０８が所定の位置および姿勢にない場合に、エラー状態であると判定する。
【０１０６】
Ｓ８０３で、ＣＰＵ３０２は、解析処理の結果、エラー状態が検出されたか否かを判定する。
【０１０７】
Ｓ８０４で、ＣＰＵ３０２は、エラー状態である場合、エラーフラグをオンとする。そうでない場合、エラーフラグをオンにせずに、判定処理を終了する。
【０１０８】
なお、エラー状態か否かを判定するエラー判定処理は、カメラ１０１が撮像している対象物、領域、および環境に応じて、それぞれ設定可能である。ＣＰＵ３０２は、イベント検知結果がトリガ条件を満たすカメラ１０１から画像を取得し、取得した画像に含まれるオブジェクトがどのような種類のオブジェクトであるかを判定することにより、エラー状態か否かを判定してもよい。
【０１０９】
例えば、ロボットアーム１０３を含む領域を撮像しているカメラ１０１ｂが、侵入ありを検知したとする。このときＣＰＵ３０２は、侵入ありが検知されたカメラ１０１ｂから取得した画像を解析し、対象の領域に侵入したオブジェクトがどのような種類であるかを判定する。具体的にはＣＰＵ３０２は、メモリ３０３に格納されたオブジェクトの特徴を示すデータと、画像を解析して得られた侵入オブジェクトの特徴量とを比較する。ＣＰＵ３０２は、比較の結果、侵入オブジェクトが人であると判定した場合、ロボットアーム１０３の作業領域に人が侵入したとしてエラー状態（人立ち入り）であると判定する。
【０１１０】
図７のフローチャートの説明に戻る。
【０１１１】
Ｓ７０５で、ＣＰＵ３０２は、エラーフラグがオンであるか否かを判定する。エラーフラグがオンである場合は、処理はＳ７１０に進む。そうでない場合は、処理はＳ７０６に進む。
【０１１２】
Ｓ７０６は、ＣＰＵ３０２が、基本動作を実行するサブプロセスである。基本動作のステップの動作が継続中である場合、継続中の動作を継続する。例えば、ロボットアーム１０３に移動指示を出力し、ロボットアーム１０３が移動を開始してから移動を完了するまでの間であれば、ＣＰＵ３０２は継続中の動作を継続させる。
【０１１３】
図８（ｂ）は、Ｓ７０６で実行する基本動作処理のフローを示すフローチャートである。
【０１１４】
Ｓ８１１で、ＣＰＵ３０２は、ロボットアーム１０３を初期位置に移動させる。ロボットアーム１０３の移動制御は、あらかじめ定められたロボットアーム１０３の移動可能空間における座標系に対して、ハンドの目標座標と移動速度とを指示することによって実行されるとする。なお、ロボットアーム１０３の駆動系への電力の印加を直接制御装置１０２から制御してもよい。
【０１１５】
Ｓ８１２で、ＣＰＵ３０２は、作業台１０７上の対象ワークの位置情報を取得する。
【０１１６】
Ｓ８１３で、ＣＰＵ３０２は、ロボットアーム１０３を対象ワークの位置に対応する位置、および姿勢に移動するように制御する。
【０１１７】
Ｓ８１４で、ＣＰＵ３０２は、ロボットアーム１０３に対象ワークを把持させる。
【０１１８】
Ｓ８１５で、ＣＰＵ３０２は、対象ワークを設置する作業台１０９の情報を取得する。ＣＰＵ３０２は、カメラ１０１ｃに撮像要求を送信し、作業台１０９を含む領域を撮像した画像を取得する。ＣＰＵ３０２は、撮像画像のエッジを検出することにより、作業台１０９の位置、作業台１０９に積載されたワーク１０８の位置、姿勢、および種類等の情報を取得する。
【０１１９】
Ｓ８１６で、ＣＰＵ３０２は、取得した作業台１０９の情報に基づいて、ロボットアーム１０３を移動させる。
【０１２０】
Ｓ８１７で、ＣＰＵ３０２は、作業台１０９の目標設置位置に対象ワークを設置するようにロボットアーム１０３を移動させ、ハンドから対象ワークを離すように制御する。
【０１２１】
Ｓ８１８で、ＣＰＵ３０２は、あらかじめ設定された基本動作の終了条件を満たすか否かを判定する。
【０１２２】
ＣＰＵ３０２は、図６のボックス６０５に入力された繰り返し実行回数だけ、基本動作を実行した場合には、終了条件を満たすと判断して、基本動作を終了する。そうでない場合は、基本動作を継続する。
【０１２３】
図７のフローチャートの説明に戻る。
【０１２４】
Ｓ７０７で、ＣＰＵ３０２は、基本動作が完了したか否かを判定する。基本動作が完了していれば、ＣＰＵ３０２は、制御フローを終了する。そうでない場合、処理は、Ｓ７０１に戻る。
【０１２５】
Ｓ７０５で、エラーフラグがオンであると判定された場合、例外処理を実行する。例外処理は、図６のＧＵＩを用いてあらかじめ設定されている処理であるとする。
【０１２６】
Ｓ７１０〜Ｓ７１５の処理は、例外処理である。Ｓ７１０で、ＣＰＵ３０２は、基本動作ステップを中断する処理を実行する。これは、図６に示した全体制御の設定において、エラー時にシステムを停止するか否かを示すチェックボックス６１２が有効になっていることから実行する処理である。チェックボックス６１２があらかじめ無効である場合は、この処理を行わなくてもよい。
【０１２７】
Ｓ７１１で、ＣＰＵ３０２は、プレ画像の要求処理をカメラ１０１に実行する。プレ画像の要求は、画像処理の結果を示す情報が判定結果を満たすカメラ１０１に対して要求するとする。なお、画像処理の結果を示す情報が判定結果を満たすカメラ１０１を含む複数のカメラ１０１に対してプレ画像を要求してもよい。例えば、画像処理の結果を示す情報が判定結果を満たすカメラ１０１と、その周囲に設けられているカメラ１０１とに対して、プレ画像を要求してもよい。
【０１２８】
Ｓ７１２で、ＣＰＵ３０２は、カメラ１０１から取得したプレ画像をＨＤＤ３０４に記録する。なお、Ｓ７１１、Ｓ７１２のプレ画像の記録処理は、設定に応じて実行されなくともよい。
【０１２９】
Ｓ７１３で、ＣＰＵ３０２は、カメラ１０１に対して記録フラグをオンにする指示を送信する。Ｓ７１３は、ポスト画像の記録処理を開始する処理である。記録フラグは、接続するカメラ１０１それぞれに対して個別に設定できるとする。ＣＰＵ３０２は、エラー判定処理の結果、エラー状態であると判定されたカメラ１０１の記録フラグをオンにする。なお、エラー状態であると判定されなかったカメラ１０１を含む複数のカメラ１０１に対して記録フラグをオンにしてもよい。例えば、エラー判定処理の結果、エラー状態と判定されたイベントを検知したカメラ１０１と、その周囲に設けられているカメラ１０１に対して、記録フラグをオンにしてもよい。なお、ＣＰＵ３０２は、ポスト画像の記録を開始した時刻と、記録された画像とを関連付けて記録する。
【０１３０】
Ｓ７１４で、ＣＰＵ３０２は、カメラ１０１から取得した画像をＨＤＤ３０４に記録し、記録開始からの経過時間が、設定された記録時間を超えたか否かを判定する。経過時間が設定された記録時間を超えた場合、処理は、Ｓ７１５に進む。そうでない場合、処理はＳ７１４を繰り返す。なお、設定された記録時間は、図６のＧＵＩのボックス６１１で設定された期間である。
【０１３１】
Ｓ７１５で、ＣＰＵ３０２は、記録フラグをオフにして、ポスト画像の記録処理を終了する。なお、Ｓ７１３、Ｓ７１４、Ｓ７１５のポスト画像の記録処理は、設定に応じて実行されなくともよい。例えば、図６に示したＧＵＩのボックス６１１で「録画なし」と設定されている場合には、ポスト画像の記録処理を実行せずに制御フローを終了する。
【０１３２】
上述のようにして、制御装置１０２は、カメラ１０１が実行したイベント検知処理の結果が所定の条件を満たす場合に、エラー判定処理を実行する。したがって、制御装置１０２は、取得した全ての画像に対してエラー判定のための解析処理を実行する必要がなくなることから、制御装置１０２の処理負荷を軽減することが可能となる。
【０１３３】
したがって、接続する撮像装置が増加しても、制御装置１０２のエラー判定処理にかかる負荷を抑制し、他の処理、例えば基本動作に用いられる画像処理の遅延を抑制することが可能な制御装置を提供することが可能となる。
【０１３４】
なお、制御装置１０２は、所定のイベント検知結果をカメラ１０１が検知したことに応じて、判定処理の実行前に、当該カメラ１０１で撮像した映像の録画を開始してもよい。さらに、制御装置１０２は、当該カメラ１０１に関連する他のカメラの映像も自動的に録画してもよい。これによって，ユーザが後にエラーの発生原因を解析する際に，あるカメラの映像ではオクルージョンのため死角になっている部分があっても、他のカメラの映像でその部分を見ることができる可能性が高まる。
【０１３５】
なお、図７のフローチャートにおいて、エラーフラグが有効である場合の例外処理として、基本動作中断処理、プレ画像記録処理、ポスト画像記録処理を示したが、他の処理を実行してもよい。さらに，基本動作中断処理、プレ画像記録処理、ポスト画像記録処理のうちいずれかを実行しなくてもよい。
【０１３６】
エラー状態であると判定された場合に実行される例外処理は、表示装置１０４にエラー判定処理に用いた画像を出力する処理でもよい。図９は、制御装置１０２がエラー判定処理に用いた画像を表示装置１０４に出力した場合に、表示装置１０４に表示される画面を示す模式図である。
【０１３７】
図９は、カメラ１０１ａでイベント検知結果が「置き去りあり」であり、カメラ１０１ａから取得した画像に基づいてワーク１０８の位置および姿勢の計測を行った結果、エラー状態と判定がされた場合に、表示装置１０４に表示される画像を示す。制御装置１０２は、カメラ１０１ｃで取得した画像と、エラー判定処理で解析して得られた結果を示す情報とを合わせて表示する。図９では、表示装置１０４は、姿勢が崩れているワーク１０８の情報として「種別：箱（書籍・洗剤）」という情報を示している。表示された情報は、ワークの種別や、さらに登録されているバーコードと、内容物を紐付けて表示する例である。
【０１３８】
なお、表示装置１０４に表示される画像は、エラーが判定された画像を取得したカメラ１０１のライブビュー画像であってもよい。このように、表示装置１０４にエラーが発生した領域の画像を表示することにより、ユーザは、ワークの位置姿勢・種別からエラーへの対処方法を判断できる。例えば、落下したワークが破損しやすいものであれば新品と交換し、そうでないものであれば検査した後に再利用したりするなどである。
【０１３９】
また、エラー状態であると判定された場合に実行される例外処理は、エラーが検出された画像を取得したカメラ１０１が撮像している領域を、他のカメラ１０１で異なる角度から撮像するように、カメラ１０１の撮像条件（視野）を制御する処理でもよい。例えば、ロボットアーム１０３の近傍の領域でエラー状態と判定された場合、制御装置１０２は、周囲のカメラ１０１ａ、１０１ｃの撮像角度やズーム倍率、フォーカスを変更する。これによりエラーが発生した場所（カメラ１０１ｂの撮像対象の領域）を多方向から撮像することが可能になるため、ユーザが状況を把握したり改善策を施したりすることがより容易となる。
【０１４０】
（ジョブの設定ＧＵＩ）
本実施例において、制御装置１０２が実行するジョブは、ユーザが設定することが可能である。例えば、基本動作や、エラー判定処理、例外処理を、ジョブとしてユーザが設定することができる。
【０１４１】
図１０は、制御装置１０２の基本動作を設定するためのＧＵＩを示す模式図である。具体的には、図１０は、制御装置１０２の基本動作に関するジョブ（Ｆｌｏｗ１）を作成するためのフローチャート作成ＧＵＩ１０００を表す図である。ＧＵＩ１０００は表示装置１０４に表示される。
【０１４２】
リスト領域１００１はフローチャートに使用可能な各処理に対応する作業ユニットのリストを表示する領域である。ユーザはマウス１０５を用いてリスト１００１から作業ユニットをフローチャート領域１００２にドラッグ＆ドロップし、作業ユニット間を線で結合してフローチャートを作成する。
【０１４３】
フローチャート１００３は、設定されたフローチャートの一例である。フローチャート１００３は、ロボットアーム１０３によってワークを作業台１０７から取り出し、作業台１０９に整列する処理を記述している。
【０１４４】
作業ユニット１００４で、ＣＰＵ３０２は、作業台１０７上空にロボットを移動する。これは、図８で説明したＳ８１１の処理に対応する。
【０１４５】
作業ユニット１００５で、ＣＰＵ３０２は、カメラ１０１ａに作業台１０７上のワーク１０８を含む領域を撮像する指示を送信し、カメラ１０１ａから動画像を取得する。
【０１４６】
作業ユニット１００６で、ＣＰＵ３０２は、取得した画像からエッジを検出することによって、ワーク１０８を検出する。そして、ワーク１０８の位置、位相、および姿勢を示す位置情報を取得する。
【０１４７】
作業ユニット１００７で、ＣＰＵ３０２は、ワークに貼りつけられたバーコードや色模様などを認識し、バーコード等のワーク１０８に貼付された画像を読み取る処理を実行することにより、ワーク１０８の種別を取得する。作業ユニット１００５〜１００７は、図８で説明したＳ８１２の処理に対応する。
【０１４８】
作業ユニット１００８で、ＣＰＵ３０２は、作業ユニット１００６で計算された対象のワーク１０８の位置情報に基づいて、ロボットアーム１０３の補正移動を実行する。
【０１４９】
補正移動は、ロボットアーム１０３のハンド（エンドエフェクト）を移動または回転させて、対象ワークの位置や位相に応じた位置に設置する移動制御である。
【０１５０】
作業ユニット１００９で、ＣＰＵ３０２は、ハンド（エンドエフェクト）でワークの把持が可能な位置、例えばワークの直上などまでロボットアーム１０３を移動させる。作業ユニット１００８、１００９は、図８で説明したＳ８１３の処理に対応する。
【０１５１】
作業ユニット１０１０で、ＣＰＵ３０２は、ハンドの開閉を制御してワーク１０８を把持（ピッキング）する。
【０１５２】
作業ユニット１０１１で、ＣＰＵ３０２は、ワークの種別に応じた作業台１０９の上空に移動する。作業ユニット１０１０、１０１１は、図８で説明したＳ８１４の処理に対応する。
【０１５３】
作業ユニット１０１２で、ＣＰＵ３０２は、カメラ１０１ｃを用いて作業台１０９と、対象ワークを接地する空間を含む領域を撮像する指示を送信し、カメラ１０１ｃから画像を取得する。
【０１５４】
作業ユニット１０１３で、ＣＰＵ３０２は、取得した画像を用いて作業台１０９、および積載されたワーク１０８の位置姿勢計測などを行い、ワークを設置する位置を計測する。作業ユニット１０１２、１０１３は、図８で説明したＳ８１５の処理に対応する。
【０１５５】
作業ユニット１０１４で、ＣＰＵ３０２は、フローチャートの繰り返し数や外部から取得した積載個数に対応し、設置位置の高さにロボットを移動する。これは、図８で説明したＳ８１６の処理に対応する。
【０１５６】
作業ユニット１０１５で、ＣＰＵ３０２は、ハンドの開閉を制御して対象ワーク１０８を設置（プレイス）する。
【０１５７】
作業ユニット１０１６で、ＣＰＵ３０２は、ロボットアーム１０３のハンドを作業台１０９の上に移動する。作業ユニット１０１５、１０１６は、図８で説明したＳ８１７の処理に対応する。
【０１５８】
作業ユニット１０１７で、ＣＰＵ３０２は、あらかじめ定められた終了条件を満たすか否か判定する。例えば、図６に示したように、繰り返し実行する作業回数が定められている場合、ＣＰＵ３０２は、総作業回数が定められた作業回数に達した場合に、Ｆｌｏｗ１を終了する。ＣＰＵ３０２は、総作業回数が定められた作業回数未満である場合、作業ユニット１００４に戻る。作業ユニット１０１７は、Ｓ８１８に対応する。
【０１５９】
ユーザが、操作入力装置（マウス）１０５を用いて、ＧＵＩ１０００上のフローチャート１００３の作業ユニットのいずれかをダブルクリックすると、その作業ユニットの詳細な処理を設定するための設定画面に遷移する。
【０１６０】
リストボックス１０１９は、ユーザが設定対象のフローチャートを選択するためのボックスである。ユーザは、リストボックス１０１９から対象のフローチャートを選択してもよいし、新しいフローチャート名を入力して本システムに新しいフローチャートを追加してもよい。
【０１６１】
ユーザがボタン１０１８を押下することに応じて、リストボックス１０１９で選択されたフローを、フローチャート領域１００２に記載されたフローチャート１００３の内容に決定する。ＣＰＵ３０２は、上記処理を実行するためのフローチャートを含むジョブを作成して、メモリ３０３に記録する。
【０１６２】
図１０（ｂ）は、制御装置１０２の判定処理に関するジョブを作成するためのフローチャート作成ＧＵＩ１１００を示す模式図である。ＧＵＩ１１００は表示装置１０４に表示される。ＧＵＩ１１００で設定されたフローチャートは、図８に示したＳ８０２の処理に対応する。
【０１６３】
作業ユニット１１０４で、ＣＰＵ３０２は、バーコード読取の画像処理を行う。
【０１６４】
作業ユニット１１０５で、ＣＰＵ３０２は、読み取られたバーコード情報よりワークの種別を検索する処理を行う。
【０１６５】
作業ユニット１１０６で、ＣＰＵ３０２は、取得した画像からエッジを検出することによって、ワーク１０８を検出する。そして、ワーク１０８の位置、位相、および姿勢を示す位置情報を取得する。
【０１６６】
作業ユニット１１０７で、ＣＰＵ３０２は、ワークの種別とワークの位置情報をもとに、エラー状態（エラー）であるか否かを判定する。
【０１６７】
例えば、作業台１０７に積載された複数のワーク１０８のうちの１つが動いたことにより、カメラ１１０ａが動体ありを検知したとする。このとき、ＣＰＵ３０２は、作業ユニット１１０７で、各ワーク１０８の位置情報に基づいて、各ワーク１０８の位置、および姿勢の変化を取得する。検出されたワーク１０８の位置および姿勢のいずれかが、あらかじめ定められた位置および姿勢から所定以上ずれていた場合、ＣＰＵ３０２は、エラー状態であると判定する。
【０１６８】
一方、作業台１０７付近に、小動物や作業員がわずかに侵入したことにより、カメラ１１０ａが動体ありを検知したとする。この場合、ＣＰＵ３０２が取得する各ワーク１０８の移動量が小さい。したがって、ＣＰＵ３０２は、荷崩れは発生していないためエラー状態であると判定しない。
【０１６９】
ＣＰＵ３０２は、エラー状態であると判定した場合、エラーフラグをオンに変更して、Ｆｌｏｗ５を終了する。
【０１７０】
なお、ユーザが外部のジョブ作成装置で作成したジョブを記憶（コピー）して実行することも可能である。予め機能別や目的別に定型で用意された組合せ済みの画像処理フローチャートを内包したパッケージ機能をユーザがＧＵＩ上で選択したり、パラメータを調整したりするような形態などで提供してもよい。
【０１７１】
＜実施例２＞
実施例２の産業用自動化システムおよび制御装置は、カメラのイベント検知の結果が所定の条件を満たす場合に、カメラを制御して計測器の表示器を含む領域を撮像し、当該計測器の計測値を取得する。制御装置は、取得した計測値が所定の範囲に含まれるか否かを判定する。取得した計測値が所定の範囲に含まれない場合、制御装置はエラー状態であると判定し、例外処理を実行する。制御装置は、例外処理として、エラー状態が発生したことを通知する処理を実行する。
【０１７２】
図１４は、実施例２の産業用自動化システムの構成を示す模式図である。
【０１７３】
産業用自動化システムは、カメラ１４０１、制御装置１４０２、表示装置１４０４、マウス１４０５、およびサーバ１４０６を備える。カメラ１４０１、表示装置１４０４、マウス１４０５、およびサーバ１４０６の動作は、実施例１と同様であるので、説明を省略する。また、制御装置１４０２の機能ブロックは、実施例１の制御装置１０２と同様であるので、説明を省略する。
【０１７４】
カメラ１４０１は、部屋の温度を検出する温度計の出力値をアナログメータで表示する計測器１４０７を含む部屋の領域を撮像する。制御装置１４０２は、温度計の出力値が所定の範囲に含まれない場合に、所定の通知を実行する。温度計が設置されている部屋は、例えば、クリーンルームや環境試験を行う部屋であり、温度管理が必要な部屋であるとする。部屋の温度は、人の立ち入り等の環境変化により、変化する。
【０１７５】
実施例２の産業用自動化システムは、部屋の温度変化を監視するシステムであって、カメラ１４０１が侵入や通過のイベントを検知したことに応じて、制御装置１４０２が、温度が所定の範囲内であるか否かを判定する判定処理を実行する。
【０１７６】
図１５は、制御装置１４０２の動作を示すフローチャートである。
【０１７７】
Ｓ１５０１で、制御装置１４０２のＣＰＵ３０２は、各カメラ１４０１に対してイベント検知処理の結果を示す情報を要求する。
【０１７８】
Ｓ１５０２で、ＣＰＵ３０２は、各カメラ１４０１のイベント検知処理の結果を示す情報を取得する。
【０１７９】
Ｓ１５０３で、ＣＰＵ３０２は、侵入ありのイベント検知結果を少なくとも１つのカメラ１４０１から取得したか否かを判定する。少なくとも１つのカメラ１４０１から取得した場合、処理はＳ１５０４に進む。そうでない場合、処理はＳ１５０７に進む。
【０１８０】
Ｓ１５０４で、ＣＰＵ３０２は、メータ読取プロセスを実行する。メータ読取プロセスは、あらかじめ定められた計測器１４０７の表示器（アナログメータ）を含む領域を撮像し、当該計測器１４０７の計測値を取得する処理である。メータ読取プロセスの詳細は後述する。
【０１８１】
Ｓ１５０５で、ＣＰＵ３０２は、メータ読取プロセスで取得した計測値が、所定の範囲に含まれるか否かを判定する。計測値が所定の範囲に含まれない場合、ＣＰＵ３０２は計測値がエラーであると判定する。処理をＳ１５０６に進む。そうでない場合、処理はＳ１５０７に進む。
【０１８２】
Ｓ１５０６で、ＣＰＵ３０２は、ユーザに計測値がエラーであることを示す通知処理を実行する。通知処理は、例えば、表示装置１０４に警告画面を表示する処理であるとする。また、通知処理は、管理者の端末に電子メール等のアラート情報を送信する処理でもよい。また、サーバ１０６のログに、エラーが発生した時刻と、計測値と、エラーが発生したことを占める情報を記録する処理であってもよい。
【０１８３】
図１５（ｂ）は、メータ読取プロセスのフローチャートである。
【０１８４】
Ｓ１５１１で、ＣＰＵ３０２は、カメラ１４０１に撮像条件を変更する設定処理を実行する。ＣＰＵ３０２はあらかじめ定められた計測器１４０７の表示部の目盛りを読取可能な撮像画像を得るために、撮像位置、ズーム倍率、焦点距離、および露出等の設定を送信する。また、自動調整をカメラに実行させるように指示を送信してもよい。
【０１８５】
Ｓ１５１２で、ＣＰＵ３０２は、カメラ１４０１に撮像指示を出力する。
【０１８６】
Ｓ１５１３で、ＣＰＵ３０２は、カメラ１４０１が送信された撮像条件と撮像指示とに応じて撮像した画像をカメラ１４０１から取得する。
【０１８７】
図１６は、カメラ１４０１が取得する画像を示す模式図である。
【０１８８】
図１６（ａ）は、カメラ１４０１がＳ３０２で設定されたイベント検知処理用の撮像条件で撮像した画像を示す模式図である。図１６（ａ）に示すように、メータ読取プロセスを実行していない間、カメラ１４０１は、計測器１４０７を含む領域を低倍率すなわち広角で撮像する。これにより、より広い範囲が撮像されるので人物の侵入を検知しやすくなる。なお、侵入検知処理の検知領域を図中の点線で示した領域に設定するとする。
【０１８９】
図１６（ｂ）は、カメラ１４０１が処理Ｓ１５１２で、撮像した画像を示す模式図である。メータ読取プロセスのＳ１５１１で撮像条件を設定された結果、計測器１４０７の表示部の目盛りや指示値を制御装置１４０２が解析可能なように、表示部を含む領域が高倍率で撮像される。
【０１９０】
Ｓ１５１４で、ＣＰＵ３０２は、取得した画像から計測値を読み出す。ＣＰＵ３０２は、画像のうち、目盛りを示す領域と、針を示す領域とを検出する。目盛り領域に示されたスケール値と、針の位置とに基づいて、計測器１４０７が示す値を取得する。例えば、図１６（ｂ）に示す画像を処理する場合、ＣＰＵ３０２は、１３℃を計測値として取得する。
【０１９１】
Ｓ１５１５で、ＣＰＵ３０２は、取得した計測値を目盛り５０３に出力する。
【０１９２】
上述のようにして、制御装置１４０２は、カメラ１４０１が実行したイベント検知処理の結果が所定の条件を満たす場合に、計測値を取得する処理を実行し、計測値がエラーであるか否かを判定する処理を実行する。したがって、制御装置１４０２は、頻繁に計測器１４０７の画像に対してエラー判定のための解析処理を実行する必要がなくなることから、制御装置１４０２の処理負荷を軽減することが可能となる。
【０１９３】
したがって、接続する撮像装置が増加しても、制御装置のエラー判定処理にかかる負荷を抑制し、他の処理の遅延を抑制することが可能な制御装置を提供することが可能となる。
【０１９４】
なお、実施例２では、制御装置１４０２が計測値を読み取る計測器１４０７として、アナログメータで計測値を表示する計測器を示したが、これに限らない。例えば、計測器は、デジタルで数値を表示するデジタルパネルメーター（デジタルＯＣＲ）で、計測値を表示するものであってもよい。この場合、制御装置１４０２は、画像に含まれる数値をパターンマッチング等の画像解析処理で取得し、計測値を読み取る。
【０１９５】
また、流量を浮きの位置で示す、浮き子式流量計であってもよい。この場合、制御装置１４０２は、浮きを含むテーパ管に示された目盛りに対する浮きの位置を画像解析処理によって取得し、計測値を読み取る。
【０１９６】
＜その他の実施例＞
本発明は、上述の実施例の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０１９７】
１０１  制御装置
１０２  カメラ
１０３  ロボットアーム
【図１】
2020108038.tif 000003
【図２】
2020108038.tif 000004
【図３】
2020108038.tif 000005
【図４】
2020108038.tif 000006
【図５】
2020108038.tif 000007
【図６】
2020108038.tif 000008
【図７】
2020108038.tif 000009
【図８】
2020108038.tif 000010
【図９】
2020108038.tif 000011
【図１０】
2020108038.tif 000012
【図１１】
2020108038.tif 000013
【図１２】
2020108038.tif 000014
【図１３】
2020108038.tif 000015
【図１４】
2020108038.tif 000016
【図１５】
2020108038.tif 000017
【図１６】
2020108038.tif 000018