(57)【要約】【課題】作業用装置と連携動作する画像処理装置における画像処理領域の設定を支援して効率的な設定処理を行う。【解決手段】作業システムは、ロボット制御装置１０１およびロボット１０２、画像処理装置１０３および撮像装置１０４を備える。画像処理装置１０３は、ロボット制御装置１０１により動作制御が行われるロボット１０２と連携して動作する。画像処理装置１０３は撮像装置１０４から撮影画像のデータを取得して画像処理を行う。画像処理装置１０３は、ユーザが画像処理対象である画像処理領域１０８を設定する際にロボット１０２の可動範囲１０７のデータを取得し、画像処理領域１０８の設定画面の画像表示領域に撮影画像と併せてロボット１０２の可動範囲１０７を表示することにより、可動範囲１０７に応じてユーザが画像処理領域１０８を設定する処理を支援する。【選択図】図１
2020082274.tif 000002
【特許請求の範囲】
【請求項１】
撮影された画像データを取得する取得手段と、
取得された前記画像データの画像処理を行う画像処理手段と、
前記画像処理手段の処理結果を用いて作業用装置の動作を制御する制御手段と、を備え、
前記画像処理手段は、前記作業用装置の可動範囲のデータを取得し、前記画像処理の設定の際に前記作業用装置の可動範囲を表示する制御を行うことにより、前記画像処理の対象である画像処理領域の設定を支援する支援処理を行う
ことを特徴とする画像処理装置。
【請求項２】
前記画像処理手段は、前記制御手段に対して移動コマンドまたは移動の確認コマンドを送信し、前記作業用装置が指定の位置に移動可能であるか否かを確認する処理を行う
ことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記画像処理手段は、前記作業用装置の型式に対応する可動範囲を表す３Ｄモデルを参照して前記可動範囲のデータを取得する処理を行う
ことを特徴とする請求項１に記載の画像処理装置。
【請求項４】
前記画像処理手段は、前記画像データから一定の間隔でサンプリングした画素を用いて、前記作業用装置が移動可能な範囲を判定して前記可動範囲のデータを取得する処理を行う
ことを特徴とする請求項１に記載の画像処理装置。
【請求項５】
前記画像処理手段は、前記作業用装置の可動範囲の境界を探索することで、前記可動範囲のデータを取得する処理を行う
ことを特徴とする請求項１に記載の画像処理装置。
【請求項６】
前記画像処理手段は、前記作業用装置の姿勢の情報が指定された場合、指定された姿勢における前記作業用装置の可動範囲のデータを取得する処理を行う
ことを特徴とする請求項１に記載の画像処理装置。
【請求項７】
前記取得手段は３次元撮影画像のデータを取得し、前記画像処理手段は前記作業用装置が３次元座標の位置へ移動可能であるか否かを判定して前記可動範囲のデータを取得する処理を行う
ことを特徴とする請求項１に記載の画像処理装置。
【請求項８】
前記取得手段は２次元撮影画像のデータを取得し、前記画像処理手段は前記２次元撮影画像の処理結果に基づく３次元座標データの演算を行い、前記作業用装置が３次元座標の位置へ移動可能であるか否かを判定して前記可動範囲のデータを取得する処理を行う
ことを特徴とする請求項１に記載の画像処理装置。
【請求項９】
前記画像処理手段は、取得された前記画像データに対応する画像と併せて前記作業用装置の可動範囲を表示する制御により前記支援処理を行う
ことを特徴とする請求項１乃至８のいずれか１項に記載の画像処理装置。
【請求項１０】
前記画像処理手段は、前記支援処理にて前記画像処理領域の設定の際に当該画像処理領域を前記作業用装置の可動範囲内に限定する処理を行う
ことを特徴とする請求項１乃至９のいずれか１項に記載の画像処理装置。
【請求項１１】
前記画像処理手段は、前記支援処理にて画像表示領域を有する設定画面を表示し、前記画像表示領域に前記作業用装置の可動範囲および前記画像処理領域を重畳して表示する制御を行う
ことを特徴とする請求項１乃至１０のいずれか１項に記載の画像処理装置。
【請求項１２】
撮影された画像データを取得する工程と、
取得された前記画像データの画像処理を行う画像処理工程と、
前記画像処理工程の処理結果を用いて作業用装置の動作を制御する制御工程と、を有し、
前記画像処理工程では、前記作業用装置の可動範囲のデータが取得されて、前記画像処理の設定の際に前記作業用装置の可動範囲を表示する制御を行うことにより、前記画像処理の対象である画像処理領域の設定を支援する支援処理が行われる
ことを特徴とする画像処理装置の制御方法。
【請求項１３】
請求項１２に記載の各工程を画像処理装置のコンピュータに実行させる
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボット等の作業用装置と連携動作する画像処理装置の画像処理の設定を支援する技術に関する。
【背景技術】
【０００２】
撮像装置とロボット装置を使用して製品の生産や品質確認、運搬等を行うシステムでは、対象（以下、ワークという）の把持機構、ロボットアーム、アクチュエータや搬送機構等の制御が行われる。撮像装置でワークを撮像し、画像処理を行ってワークの位置を計測したり、検査を行ったりすることで、ロボット装置の制御指示の切り換えや動作補正が可能となるので、より多様な作業を行うシステムを構築することができる。
【０００３】
ロボット装置と連携する画像処理装置はロボットビジョンとも称され、撮影画像からワークの有無を検知し、位置や姿勢等を計測する目的で利用されることが多い。例えば産業用途では、ロボットの動作補正のための画像処理として、パターンマッチングやエッジ検出等が使われる。その処理時間の効率化のために、画像処理の対象とする画像中の領域（以下、画像処理領域という）が指定される。画像処理後に、計算されたワークの位置や姿勢等のデータをロボット座標系に変換する処理が実行され、ロボットがピックアップ等の動作を行う。
【０００４】
特許文献１には、画像処理装置がロボットや撮像装置を制御することで、カメラ座標系からロボット座標系へ変換する方法が開示されている。ユーザが複雑なロボット動作制御プログラムを作成することなく、撮影画像で検出したワークの位置・姿勢のデータをロボット座標系のデータに変換できる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１６−１２０５６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、ロボットの可動範囲には制限があるので、画像処理で計測したワークの位置データをロボット座標系のデータに変換した後、次のロボット動作（ワークの把持等）が常に実行可能であるとは限らない。例えば、撮像装置でワークを撮像して画像内にワークを認識し、その位置や姿勢を計測できたとしても、そのワークの位置や姿勢がロボットの可動範囲外である場合にロボットはその位置に移動できない。
本発明は、作業用装置と連携動作する画像処理装置における画像処理領域の設定を支援して効率的な設定処理を行えるようにすることを目的とする。
【課題を解決するための手段】
【０００７】
本発明の実施形態の画像処理装置は、撮影された画像データを取得する取得手段と、取得された前記画像データの画像処理を行う画像処理手段と、前記画像処理手段の処理結果を用いて作業用装置の動作を制御する制御手段と、を備える。前記画像処理手段は、前記作業用装置の可動範囲のデータを取得し、前記画像処理の設定の際に前記作業用装置の可動範囲を表示する制御を行うことにより、前記画像処理の対象である画像処理領域の設定を支援する支援処理を行う。
【発明の効果】
【０００８】
本発明の画像処理装置によれば、作業用装置と連携動作する画像処理装置における画像処理領域の設定を支援して効率的な設定処理を行うことができる。
【図面の簡単な説明】
【０００９】
【図１】実施形態の画像処理装置を含むシステムの全体構成図である。
【図２】実施形態の画像処理装置を主体とするブロック図である。
【図３】フローチャート作成画面の例を表す図である。
【図４】画像処理領域の設定を支援する画面例を示す図である。
【図５】全画素からロボットの可動範囲を取得する処理のフローチャートである。
【図６】全画素から特定の姿勢におけるロボットの可動範囲を取得する処理のフローチャートである。
【図７】一定間隔でサンプリングした画素に対してロボットの可動範囲を取得する処理のフローチャートである。
【図８】画素のサンプリングとロボットの可動範囲の取得を説明する図である。
【図９】ロール角、ピッチ角、ヨー角を用いた回転処理を表す図である。
【発明を実施するための形態】
【００１０】
以下に、図面を参照して、本発明の好適な実施形態を詳細に説明する。本実施形態ではロボットの制御によって作業を行うシステムの例を示すが、マニプレータや搬送装置等の作業用装置を備える各種システムへの適用が可能である。
【００１１】
図１は画像処理装置を含むシステムの全体構成図である。ロボット制御装置１０１は外部装置からの制御指示にしたがってロボット１０２の各軸やハンドを制御する。本実施形態のロボット制御装置１０１は、画像処理装置１０３から制御指示を受けとることとするが、とりうるシステム構成や指示形態はこの限りではない。また、ロボット制御装置１０１や画像処理装置１０３はロボット１０２と同一の筐体に格納される場合もあるが、本実施形態では別体の装置として説明する。
【００１２】
画像処理装置１０３は任意の手順にしたがって所定の撮影パラメータの設定で撮像装置１０４による撮像動作を制御し、撮像された画像の処理や処理結果の出力を行う。撮像装置１０４はロボット１０２に取り付けられた形態としているが、分離して設置してもよい。
【００１３】
システムの動作は画像処理装置１０３がロボット制御装置１０１に制御指示を出すことにより開始する。ロボット制御装置１０１は制御指示を受け付け、ロボット１０２を制御して作業台１０５上のワーク１０６を撮影できるようにロボット１０２の姿勢（以下、撮影姿勢という）を変更する。ロボット１０２の姿勢が撮影姿勢になると、画像処理装置１０３は撮像装置１０４を用いてワーク１０６を撮影する。画像処理装置１０３は撮影された画像のデータを用いて画像処理を行い、ワーク１０６の位置や姿勢を計測する。この際、画像処理装置１０３は必要に応じて、ワーク１０６の種類を判別したり、ワーク１０６の品質に問題がないかを検査したりしてもよい。画像処理装置１０３はこれらの処理を完了すると、計測した位置や姿勢のデータをカメラ座標系からロボット座標系のデータに変換してロボット制御装置１０１へ送信する。
【００１４】
ロボット制御装置１０１は画像処理装置１０３からデータを受信すると、ロボット１０２の可動範囲１０７内（点線枠内）で動作の軌道データを生成し、軌道データに基づいてロボットを動作させる。さらに、ロボット制御装置１０１はロボット１０２のハンド（エンドエフェクタ）でワーク１０６を把持する制御を行う。続いて、配置台１０９上の指定位置へロボット１０２を移動させて、ハンドによるワークの把持を解除する制御が行われ、ワーク１０６が移動する。これ以外にも、ハンドで把持したワークを別のワークに組み付ける作業が続けられる場合もある。
【００１５】
図１のように、ロボット１０２に撮像装置１０４が取り付けられる場合、ロボット１０２を撮影姿勢に変更してから、撮像装置１０４の撮影パラメータを調整して撮影が行われる。ユーザは作業台１０５の上方の位置を撮影用の教示点としてロボット１０２に予め教示しておき、それ以降には教示点を用いて繰り返し撮影や画像処理が行われる。
【００１６】
教示点およびこれに対応する撮影パラメータまたは撮影パラメータの決定方法（固定値利用や自動露出、自動焦点調節等）を画像処理装置１０３が記憶しており、撮影パラメータを用いて以降の撮影が行われる。教示点のデータはロボット１０２、ロボット制御装置１０１、または画像処理装置１０３等に記憶される。また、画像処理の撮影パラメータは画像処理装置１０３に記憶される。
【００１７】
図２は、画像処理装置１０３を主体とするブロック図である。画像処理装置１０３は複数のインターフェース部２０３を介してロボット制御装置１０１、撮像装置１０４と接続されている。入出力表示装置２０１と操作入力装置２０２はインターフェース部２０３を介して画像処理装置１０３と接続された、ユーザ・インターフェース用の装置である。各装置は画像処理装置１０３の内部バス上に配置された各インターフェース部２０３を介して接続される。各インターフェース部２０３は通信に適した規格に基づき、接続対象に応じたネットワークインターフェース部、シリアル通信インターフェース部等から構成される。
【００１８】
入出力表示装置２０１は、画像を表示する陰極管や液晶パネル等の表示デバイスを備える。操作入力装置２０２は、キーボードやポインティングデバイス、タッチパネル、入力操作コントローラ、ジェスチャ入力装置等により構成される。
【００１９】
画像処理装置１０３と接続される撮像装置１０４には、撮影のために必要に応じて照明装置２１８を併設してもよい。照明装置２１８はハロゲンランプや発光ダイオード等の光源を備え、インターフェース部２０３を介して画像処理装置１０３と接続される。また画像処理装置１０３に外部記憶装置を接続して、記憶容量を拡大してもよい。
【００２０】
ロボット制御装置１０１は、ネットワークやケーブル等を介して画像処理装置１０３に接続される。ロボット制御装置１０１は、ロボット１０２の動作の軌道データを生成し、またロボット１０２の可動範囲１０７に関する情報を有する。
【００２１】
画像処理装置１０３は、画像処理の制御主体となる汎用マイクロプロセッサとして構成されたＣＰＵ（中央演算処理装置）や画像処理プロセッサ等により構成される演算部２０４を有する。演算部２０４は内部バス（データバス、アドレスバス、他の制御線等）を介して記憶部２０５と接続される。
【００２２】
記憶部２０５は、例えばＲＯＭ、ＲＡＭ、外部記憶装置上のファイル領域や仮想記憶領域等によって構成することができる。ＲＯＭは“Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ”、ＲＡＭは“Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ”の略号である。記憶部２０５は、処理データ保存領域２０６およびプログラム記憶領域を有する。処理データ保存領域２０６は記憶部２０５中のＲＡＭ領域や、外部記憶装置のファイル領域や仮想記憶領域等によって構成される。処理データ保存領域２０６は、処理データを一時的に記憶する他、画像処理の設定パラメータ等の記憶領域として使用される。
【００２３】
記憶部２０５のプログラム記憶領域には、本実施形態の画像処理を実行するための画像処理プログラム２０７が記憶される。画像処理プログラム２０７は、操作入力装置２０２によって行われた各種操作に応じて、画像処理の設定変更や所定の画像処理を実行するプログラムである。また変更内容について、処理データ保存領域２０６へのデータの保存や、データの削除が可能である。
【００２４】
画像処理プログラム２０７は、各種の機能を実現するソフトウェアモジュールから構成される。例えば画像処理モジュール２０８は画像処理を実現するプログラムの本体部分である。画像処理モジュール２０８が行う画像処理には画像処理ライブラリ２０９が用いられる。画像処理ライブラリ２０９は、例えば静的または動的にリンクされるライブラリとして記憶部２０５に実装される。画像処理設定モジュール２１０は画像処理プログラム２０７の振舞いを決定する。画像処理設定は操作入力装置２０２によって行われた各種操作に応じて行われる。
【００２５】
さらに、画像処理プログラム２０７には、次の機能を実現するＩ／Ｏ（入出力）用サブルーチンが含まれる。例えば、外部デバイス制御サブルーチン２１１、保存データ生成サブルーチン２１２、ロボット制御装置１０１からの制御指令を受け付けるための指令受付サブルーチン２１３がある。またＲＡＭ領域や演算部２０４のキャッシュ領域等を使用する一時記憶サブルーチン２１４、表示画面生成サブルーチン２１５がある。保存データ出力サブルーチン２１６は処理データ保存領域２０６に保存されたデータを読み出して出力するプログラムであり、操作受付サブルーチン２１７は操作入力装置２０２からの操作指示を受け付けるためのプログラムである。各機能は、アプリケーション（ユーティリティ）プログラムや、静的または動的にリンクされるライブラリとして構成されたサブルーチン、といった形態で記憶部２０５に実装される。
【００２６】
画像処理装置１０３の演算部２０４のＣＰＵは画像処理プログラム２０７を実行することにより、撮像装置１０４の制御と画像処理を行う。また、操作入力装置２０２により、操作受付サブルーチン２１７を通じてユーザの操作指示を受け付ける処理や、指令受付サブルーチン２１３を通じてロボット制御装置１０１から制御指令を受け付ける処理が実行される。演算部２０４は操作指示や制御指令に応じて、画像処理プログラム２０７の各機能モジュールやライブラリを呼び出して演算処理を行い、画像処理結果のデータをロボット制御装置１０１に送信する。また、画像処理結果のデータを外部記憶装置に送信して蓄積（ロギング）することができる。さらには、プログラムによって予め記憶されている画面構成と画像処理結果とを画面上で合成し、入出力表示装置２０１に表示する処理が実行される。
【００２７】
図３は、画像処理プログラム２０７を作成するためのフローチャート作成画面の例を示す図である。この画面は入出力表示装置２０１に表示される。本実施形態に係る画像処理プログラム２０７は、ユーザが画像処理装置１０３を用いて作成したフローチャートに従って実行されるものとする。その他の実施形態として、ユーザが図１に示していない画像処理プログラム作成装置を使用して画像処理プログラム２０７を作成する形態がある。この場合、作成された画像処理プログラム２０７が画像処理装置１０３の記憶部２０５に転送されて記憶される。また、機能別または目的別に予め定型で用意された組合せ済みの画像処理フローチャートを内包したパッケージ機能を用いる形態でもよい。この場合、ユーザはＧＵＩ（グラフィカル・ユーザ・インターフェース）上で所望の機能を選択し、パラメータ等の調整を行うことができる。
【００２８】
パーツリスト３０１は、フローチャートを構成する各処理パーツのリストである。ユーザは矩形枠内に示す各種の処理や、菱形枠内に示す条件分岐処理を指定することができる。例えばユーザは操作入力装置２０２を用いて、パーツリスト３０１から所望の処理パーツを指定する。ポインティングデバイス等でドラッグ＆ドロップ操作を行い、フローチャート領域３０２に配置した複数の処理パーツ同士を線で結合することにより、フローチャートの作成が可能である。
【００２９】
複数の処理パーツから構成されるフローチャート３０３は、ロボット１０２によってワーク１０６を作業台１０５からピックアップし、配置台１０９にプレイスする処理を記述した例である。処理開始後、ロボット移動３０４で作業台１０５の上方にロボット１０２を移動させる姿勢制御が行われる。撮影３０５はワーク１０６を撮影する処理である。次のワーク位置計算３０６はワーク１０６の位置や位相を算出する計算処理である。ロボット補正移動３０７は、ワーク位置計算３０６で算出されたワーク１０６の位置と位相に従ってロボット１０２の補正制御を行い、ワーク位置の上方にロボット１０２のハンドを移動させたり回転させたりする処理である。
【００３０】
次のロボット移動３１７は、ロボット１０２のハンドでワーク１０６の把持が可能な位置、例えばワーク１０６の直上の位置までロボット１０２を移動させる処理である。ロボットハンド制御３０８は、ハンドの開閉を制御してワーク１０６を把持（ピッキング）する処理である。次のロボット移動３０９は配置台１０９の上方へのロボット移動を行う処理であり、さらにロボット移動３１０はロボット１０２のハンドを配置台１０９に向けて降下させる処理である。ここで、ロボット移動３０９と３１０を１つの処理パーツにまとめて行ってもよい。その場合の処理パーツは配置台１０９の上方位置を経由してからハンドを配置台１０９に移動させるロボット移動パーツとなる。
【００３１】
ロボットハンド制御３１１では、ハンドの開閉を制御してワーク１０６を配置（プレイス）する処理が実行される。次のロボット移動３１２はロボット１０２を初期位置に移動させる処理であり、その後にフローチャートに示す一連の処理を終了する。
【００３２】
処理パーツ３０４から３１２、３１７の枠内に表示された文言については、フローチャートのパーツリスト３０１と同じ文言である必要はない。例えば、処理パーツ３０９を「配置台の上方へ移動」と表示し、処理パーツ３１０を「配置台へ移動」と表示してもよい。ユーザがフローチャート３０３に記述された処理パーツのいずれかをダブルクリックすると、その処理パーツの詳細な処理を設定するための設定画面（以下、詳細設定画面という）の表示処理に遷移する。ユーザは詳細設定画面を参照して、画像処理のパラメータや画像処理領域の調整を行うことができる。またユーザがＯＫボタン３１３のクリック操作を行うと、画像処理装置１０３はフローチャート３０３に記述された処理を実行する画像処理プログラム２０７を作成して記憶部２０５に保存する。
【００３３】
フローチャートを作成する際には、ロボット１０２がワーク１０６の位置や姿勢に対応した様々な位置へ移動する必要があるので、それらの動作が実行可能か否かを確認することが必要である。しかしながら画像処理で設定した画像処理領域がロボット１０２の可動範囲と常に一致するとは限らない。そのため、画像処理領域をロボット１０２の可動範囲内に収める設定が必要となる。このような画像処理領域を設定するための設定支援機能について、図４から図９を参照して詳細に説明する。
【００３４】
図４は、図３のワーク位置計算３０６の処理パーツに関する詳細設定画面の例を示す。この詳細設定画面は、画像処理領域の設定支援を行うユーザ・インターフェース用の画面である。ワーク位置計算３０６ではパターンマッチングを用いた画像処理方法でワークの位置や姿勢を計算する例を説明する。
【００３５】
図４の選択部４０１は、ユーザが設定用画像を登録する際に使用される。ユーザが選択部４０１を操作すると、画像処理装置１０３の記憶部２０５に予め保存されている画像のファイル名および「カメラ画像」という文字列がリスト形式で選択肢として表示される。ユーザがリストから所望の画像を選択すると、選択された画像が設定用画像として登録される。また、ユーザが「カメラ画像」を選択した場合、使用カメラ４０２に登録されたカメラ（図４ではカメラ１）で撮影が行われる。
【００３６】
画像表示領域４０７は設定支援用の表示領域である。設定用画像である撮影画像が登録されると、画像表示領域４０７に設定用画像が表示される。この時、画像処理装置１０３はロボットの可動範囲１０７のデータを取得し、設定用画像に重畳表示する処理を実行する。ロボットの可動範囲１０７の取得方法については図５から図８を用いて後述する。図４の例ではロボットの可動範囲１０７が破線で表示されているが、領域の内側または外側を透過や色付けで表示し、あるいは点滅で表示する等、表示方法は限定されない。
【００３７】
画像表示領域４０７の下方にあるチェックボックス４１２は、ロボットの可動範囲１０７の取得する際に、ハンド姿勢を指定するかどうかを判断するためのチェックボックスである（チェック有りで指定）。ロボット１０２が特定のハンド姿勢でなければワーク１０６を把持する等の動作ができない場合に、ユーザはチェックボックス４１２をチェック状態にする。これにより、設定入力部４１１にロール角、ピッチ角、ヨー角を設定することができる。図９を参照して具体的に説明する。
【００３８】
まずロボット座標系をＸＹＺ座標系とする。Ｘ，Ｙ，Ｚは３次元直交座標系の各軸を表す。ロボット座標系を基準としてロール角、ピッチ角、ヨー角を用いた回転を加え、ロボット１０２のハンドの取り付け面の中心が原点となるように並進移動したツール座標系をＸ’Ｙ’Ｚ’座標系と定義する。ロール角、ピッチ角、ヨー角をそれぞれφ、θ、ψと表記する。図９（Ａ）はロール角φによる回転を表し、図９（Ｂ）はピッチ角θによる回転を表し、図９（Ｃ）はヨー角ψによる回転を表す。回転はこの順で実行されるものとする。このとき、ハンドの位置と姿勢はツール座標系に固定されていることとする。ハンド姿勢についてはオイラー角を用いた表現等でもよい。設定入力部４１１によるハンド姿勢の指定方法としては、数値を直接入力する方法と、カウントアップ／カウントダウン用の操作ボタンを設けて、ユーザが操作ボタンを押下することで調整する方法等がある。
【００３９】
画像表示領域４０７に重畳表示されるロボットの可動範囲１０７のデータは、設定入力部４１１で指定された値を使用して取得され、ハンド姿勢の設定項目の入力に従って随時更新される。設定入力部４１１にてハンド姿勢の設定項目が空欄の場合には、その設定項目に関しては現状の回転角度を維持することとする。
【００４０】
次に、ユーザが画像表示領域４０７内の画像処理領域１０８を設定する処理について説明する。領域形状４０３はスピンコントロール付きボックスであり、ユーザは領域形状４０３の選択操作を行う。領域形状としては、矩形、円、楕円、円環等の形状が選択肢として提示される。または、これらの形状の組み合わせによる領域の加算、除外の処理や、ポインティングデバイス等を使用して作成した自由な形状を設定する処理でもよい。図４の例は、矩形の画像処理領域１０８が設定された場合を示す。設定入力部４０４には矩形領域の設定項目として、矩形の左上のｘ座標およびｙ座標、右下のｘ座標およびｙ標を示している。ここでは撮影画像の左上を原点とし、水平方向をｘ軸方向とし、垂直方向をｙ軸方向とする画像座標系を用いる。矩形領域の設定項目の指定方法としては、数値を直接入力する方法と、カウントアップ／カウントダウン用の操作ボタンを設けて、ユーザが操作ボタンを押下することで調整する方法等がある。画像表示領域４０７内には画像処理領域１０８が重畳表示され、随時に表示更新が行われる。
【００４１】
ユーザは画像表示領域４０７に表示される設定用画像と、ロボットの可動範囲１０７を確認しながら、所望の画像処理領域１０８を設定できる。つまり画像処理領域１０８がロボットの可動範囲１０７に包含されるように画像処理領域１０８を指定すればよい。なお、ユーザの直接操作により画像処理領域１０８を任意の位置に指定する例を説明したが、他の方法でもよい。例えばロボットの可動範囲１０７をそのまま画像処理領域１０８として利用する方法や、画像処理領域１０８をロボットの可動範囲１０７の内部に限定する方法がある。後者の方法では、例えば画像処理領域１０８の境界を表す枠が可動範囲１０７の内部に制限される。これらの方法によれば、ユーザの誤操作により画像処理領域１０８がロボットの可動範囲１０７の外部にはみ出すことを回避できる。
【００４２】
次に、画像処理領域１０８に対して実行されるパターンマッチングの設定手順について説明する。選択部４０５はパターンマッチング用のパターンを設定する際に使用される。パターンはワークの強度勾配や濃淡、位置位相情報等の特徴情報に基づいて生成され、画像処理装置１０３の記憶部２０５に予め保存されている。選択部４０５によってユーザが所望のパターンを設定する操作を行うと、パターン表示領域４０６にマッチング用のパターンが表示される。その際、マッチングの閾値等のパラメータを設定項目として設けてもよい。
【００４３】
操作ボタン４０８はテスト実行ボタンであり、ユーザが操作ボタン４０８を押下すると、使用カメラ４０２で選択されたカメラ（図４ではカメラ１）を使用して撮影が行われる。撮像装置１０４が１台のみ使用可能であれば、予めそれを選択しておけばよいが、複数台の場合には使用するカメラを指定する必要がある。
【００４４】
撮像装置１０４により取得された画像において、指定された画像処理領域１０８の内部に対してパターンマッチング処理が行われ、ワーク１０６の位置や姿勢等が計測される。その後、ユーザがＯＫボタン４０９を操作すると、設定済みの画像処理領域１０８の設定値やパターンマッチングの設定値等のデータが画像処理装置１０３の記憶部２０５に画像処理プログラム２０７等と紐付けて保存される。これらのデータは、プログラムの実行時や設定画面を再度表示する際に読み出されて使用される。またユーザがキャンセルボタン４１０を操作すると、画像処理領域１０８の設定値やパターンマッチングの設定値等で変更されたデータが破棄される。
【００４５】
図５は、ロボットの可動範囲１０７を取得する処理を説明するフローチャートである。撮影画像内の全画素を用いてロボットの可動範囲１０７を取得することを想定する。以下の処理は画像処理装置１０３およびロボット制御装置１０１のＣＰＵがプログラムを実行することにより実現される。
【００４６】
Ｓ６０１でロボットの可動範囲１０７を取得するための設定用画像が指定される。設定用画像は図４の画像表示領域４０７に表示される画像である。Ｓ６０２では、Ｓ６０１で指定された設定用画像の全画素について、画像座標系における２次元座標データを取得する処理が行われる。
【００４７】
Ｓ６０３で画像処理装置１０３は画像座標系からロボット座標系への変換処理を行う。Ｓ６０２で取得された画像座標系における２次元座標データから、ツール座標系のデータ、つまりＸ’軸、Ｙ’軸、Ｚ’軸の各座標値が算出される。例えば、２次元撮影画像データを取得する撮像装置を想定する。撮影画像の画素と、画素の計測平面上（作業台１０５上）の実距離との対応関係や、計測平面と撮像装置の撮影位置との対応関係を予め定めておき、画像座標系からツール座標系に変換する処理が行われる。あるいは、色情報または濃淡情報と３次元座標データを取得できる撮像装置の場合、平面情報を用いた座標変換ではなく、３次元撮影画像を取得して画素と撮像装置の３次元座標との対応関係に基づいてツール座標系への変換処理が行われる。さらにツール座標系からロボット座標系への、３次元座標変換が行われる。この変換では、ロボット座標系におけるハンドの位置とアームの姿勢等の情報を使用して行列演算が行われる。
【００４８】
Ｓ６０４では、Ｓ６０３で得たロボット座標系における３次元座標の位置へロボット１０２が移動可能か否かを判定する処理が実行される。判定処理はロボット制御装置１０１内で移動確認コマンド等を用いて実行される。移動確認コマンドとは、ロボット１０２が指定した座標に移動可能か否かを画像処理装置１０３からロボット制御装置１０１に問合せる場合に使用されるコマンドである。なお、ロボット制御装置１０１が移動確認コマンドを持たない場合には、画像処理装置１０３が移動コマンドを用いてロボット制御装置１０１に移動指示を出し、指定の３次元座標に移動可能か否かを確認する。その後、ロボット１０２の移動を停止して元の位置姿勢に戻す処理が行われる。
【００４９】
また、ロボットの可動範囲１０７を表す３Ｄモデルを利用可能なシステムの場合、３Ｄモデルのデータを予め読み込み、このデータを参照してロボット座標系における指定された座標に移動可能かどうかを判断することができる。３Ｄモデルのデータについては、画像処理装置１０３の操作入力装置２０２を用いて、ロボット１０２の型式やモデル名によって参照することができる。３Ｄモデルのデータは、ロボット制御装置１０１の記憶部または画像処理装置１０３の記憶部２０５に保存されているか、あるいはネットワーク上のストレージ等を検索して参照することができる。またロボット１０２の各軸の可動範囲を入力して仮想的な３Ｄモデルを生成する機能を設けてもよい。
【００５０】
Ｓ６０５では、図４にてロボットの可動範囲１０７が画像表示領域４０７内に表示される。Ｓ６０４でロボットが移動可能と判断された全ての点（画素位置）に関し、Ｓ６０１で指定された画像において対応する座標（表示位置）にロボットの可動範囲１０７が重畳表示される。
【００５１】
図６は、図４においてハンド姿勢の設定入力部４１１による指定に基づいてロボットの可動範囲１０７を取得する処理を説明するフローチャートである。図４のチェックボックス４１２にて、ユーザがチェックマークを指定し、設定入力部４１１にロール角、ピッチ角、ヨー角を設定した場合に以下の処理が実行される。設定入力部４１１による情報を用いて、所望の位置や姿勢においてロボットの可動範囲１０７を取得することにより、特定のハンド姿勢でロボット１０２を動作させたい場合に対応できる。Ｓ７０１〜Ｓ７０３の処理はそれぞれ、図５のＳ６０１〜Ｓ６０３と同様の処理であるため、それらの説明を省略する。
【００５２】
Ｓ７０４では、Ｓ７０３で得られたロボット座標系における３次元座標の位置へ、設定入力部４１１により指定されたハンド姿勢でのロボット移動が可能であるか否かを判定する処理が行われる。Ｓ７０５では、Ｓ７０５の判定処理の結果に基づいて、移動可能な位置に対応する全画素が画像表示領域４０７内に重畳表示され、ロボットの可動範囲１０７がユーザに提示される。
【００５３】
図７および図８を参照して、ロボットの可動範囲１０７のデータを、さらに効率的に取得する方法を説明する。図７は、画像から一定の間隔でサンプリングした画素を用いて、ロボットの可動範囲１０７を効率的に取得する処理を説明するフローチャートである。図７に示すＳ８０１、Ｓ８０４の処理はそれぞれ図５のＳ６０１、Ｓ６０３と同様の処理であるので、それらの詳細な説明を省略して相違点を説明する。図８は、画素のサンプリングとロボットの可動範囲の取得について説明する図である。
【００５４】
図７のＳ８０２では、Ｓ８０１で指定された画像から一定の間隔で画素のサンプリング処理が行われる。図８を参照して具体的に説明する。図８（Ａ）は、１２×１６［ｐｉｘｅｌ］の画像を対象として、２画素ごとにサンプリングを行う例を表す模式図である。黒色で示す画素はサンプリングされた画素（以下、対象画素という）を表している。Ｓ８０３では、Ｓ８０２で対象画素から画像座標系における２次元座標データが取得される。
【００５５】
Ｓ８０４の次にＳ８０５では、Ｓ６０４またはＳ７０４と同様に、ロボット座標系における３次元座標の位置へのロボット移動が可能かどうかについて判定される。図８（Ｂ）は、図８（Ａ）に黒色で示す画素群のうち、Ｓ８０５でロボットの可動範囲１０７内であると判断された画素を斜線のハッチングで表した模式図である。
【００５６】
Ｓ８０６では、Ｓ８０５での判定結果に基づいて、サンプリングされなかった画素、つまり、図８（Ｂ）に斜線で示す画素を着目画素としたときの周辺画素に関して、ロボットの可動範囲１０７内であるか否かが判定される。図８（Ｃ）は判定結果を示す模式図である。着目画素がロボットの可動範囲１０７内であれば、その周囲の画素は可動範囲１０７内と判定され、また着目画素がロボットの可動範囲１０７外であれば、その周囲の画素は可動範囲１０７外と判定される。図８（Ｃ）に示すように着目画素の周辺画素を含む範囲が、ロボットの可動範囲１０７として取得される処理結果を表している。図７のＳ８０７では、Ｓ８０６で得られたロボットの可動範囲１０７を画像表示領域４０７に重畳表示する処理が実行される。
【００５７】
このように、サンプリングによって対象画素の数を削減することで、ロボットの可動範囲１０７のデータを取得する時間が短縮される。例えば図８のように２画素ごとのサンプリングを適用すれば、全画素を処理する場合と比較して処理時間をおよそ４分の１に短縮できる。なお、着目画素周辺の補間方法については、図８の例に限らず、スプライン補間や局所的な多項式近似等の方法で行ってもよい。
【００５８】
またロボットの可動範囲１０７の境界を探索することで、ロボットの可動範囲１０７を効率的に取得する方法がある。この方法では、まずロボットの可動範囲１０７を取得するための画像が指定される。この画像の各行について画像処理装置１０３は左から右方向にロボットの可動範囲１０７の境界となる画素を探索する処理を実行する。境界となる画素が見つかると、その行に対する処理を終了する。同様に各行の右から左方向、各列の上から下方向、下から上方向に対してもロボットの可動範囲１０７の境界となる画素が探索される。画像処理装置１０３は探索された画素の位置に基づいて複数の境界を合成することでロボットの可動範囲１０７を算出する。この他にも、画像処理装置１０３がロボットの可動範囲１０７の境界の一部を探索した後、その周辺の画素から、ロボットの可動範囲１０７の境界を探索していくことで、ロボットの可動範囲１０７を取得する方法等がある。また、画像から一定の間隔で画素のサンプリングを行った後、それらに対してロボットの可動範囲１０７の境界を探索する方法を用いてもよい。
【００５９】
本実施形態では画像処理領域１０８の設定支援処理により、画像処理領域１０８の設定時にユーザがロボットの可動範囲１０７を確認できる。よってユーザは、ロボットの可動範囲１０７を容易に把握しつつ、画像処理領域１０８を効率的に設定することができる。このとき、画像処理領域１０８をロボットの可動範囲１０７の内部に限定することにより、ロボットの可動範囲１０７の外部に画像処理領域１０８を設定されてしまうことを回避できる。ロボットの可動範囲１０７を可視化することで、画像計測結果に基づいてロボット移動を補正する際に、可動範囲外で作業指示が出されることを抑制でき、効率的に画像処理領域を設定できる。
【００６０】
また、ロボットの可動範囲１０７の取得方法として、対象画素がロボットの可動範囲１０７であるか否かを判断する際、画像内の全画素を対象とする方法を説明した。この方法に対して、画素のサンプリングを行う方法と、ロボットの可動範囲１０７の境界を探索する方法を採用すれば、ロボットの可動範囲１０７のデータをより効率的に取得できる。
【００６１】
また、ロボット座標系における任意の座標についてロボットの可動範囲１０７の内部であるか否かを判断する方法には、ロボット１０２の移動確認コマンドを利用する方法以外に３Ｄモデルを参照する方法がある。３Ｄモデルまたはその諸元となるデータを有するロボットに対しては、移動確認コマンド等を座標ごとに実行する必要がない。よって、ロボット制御装置１０１の応答性能によっては効率良くロボットの可動範囲１０７のデータを取得することができる。
【００６２】
本実施形態によれば、撮影画像と併せてロボットの可動範囲に関する情報をユーザに提示して画像処理領域の設定を支援することができる。よって、ユーザは可視化されたロボットの可動範囲を確認しつつ、ロボットの可動範囲の内部に画像処理領域を効率的に設定することができる。
【００６３】
［その他の実施形態］
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００６４】
１０１  ロボット制御装置
１０２  ロボット
１０３  画像処理装置
１０４  撮像装置
１０７  可動範囲
【図１】
2020082274.tif 000003
【図２】
2020082274.tif 000004
【図３】
2020082274.tif 000005
【図４】
2020082274.tif 000006
【図５】
2020082274.tif 000007
【図６】
2020082274.tif 000008
【図７】
2020082274.tif 000009
【図８】
2020082274.tif 000010
【図９】
2020082274.tif 000011