IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ キヤノン株式会社の特許一覧

特許7401250画像処理装置、制御方法およびプログラム
<>
  • 特許-画像処理装置、制御方法およびプログラム 図1
  • 特許-画像処理装置、制御方法およびプログラム 図2
  • 特許-画像処理装置、制御方法およびプログラム 図3
  • 特許-画像処理装置、制御方法およびプログラム 図4
  • 特許-画像処理装置、制御方法およびプログラム 図5
  • 特許-画像処理装置、制御方法およびプログラム 図6
  • 特許-画像処理装置、制御方法およびプログラム 図7
  • 特許-画像処理装置、制御方法およびプログラム 図8
  • 特許-画像処理装置、制御方法およびプログラム 図9
  • 特許-画像処理装置、制御方法およびプログラム 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-11
(45)【発行日】2023-12-19
(54)【発明の名称】画像処理装置、制御方法およびプログラム
(51)【国際特許分類】
   B25J 9/22 20060101AFI20231212BHJP
   G05B 19/42 20060101ALI20231212BHJP
   B25J 13/08 20060101ALI20231212BHJP
【FI】
B25J9/22 Z
G05B19/42 D
B25J13/08 A
【請求項の数】 16
(21)【出願番号】P 2019186153
(22)【出願日】2019-10-09
(65)【公開番号】P2021058990
(43)【公開日】2021-04-15
【審査請求日】2022-09-27
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】100125254
【弁理士】
【氏名又は名称】別役 重尚
(72)【発明者】
【氏名】塚辺 直希
(72)【発明者】
【氏名】岡 寛人
【審査官】國武 史帆
(56)【参考文献】
【文献】特開2012-125871(JP,A)
【文献】特開2011-101915(JP,A)
【文献】特開平06-218684(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 1/00 - 21/02
G05B 19/18 - 19/46
(57)【特許請求の範囲】
【請求項1】
多関節のアームを有するロボットに取り付けられた撮像装置が撮像した画像を処理する画像処理装置であって、
ユーザが前記ロボットを操作し、予め規定される作業範囲の境界上にある複数点の夫々に前記アームを移動させ、前記作業範囲が前記アームの可動範囲内にあるかを確認する動作の際に、前記複数点の夫々への移動後の前記アームの位置座標を夫々教示点として登録する登録手段と、
前記登録された複数の教示点を示す教示点情報に基づいて、前記ロボットの作業範囲を特定する第1の特定手段と、
前記特定された前記作業範囲を含むよう、前記撮像装置の撮像範囲を特定する第2の特定手段と、
前記特定された前記撮像範囲に基づいて、前記ロボットの撮像姿勢を決定する決定手段と、
を備えることを特徴とする画像処理装置。
【請求項2】
前記第の特定手段は、前記ロボットに取り付けられている前記撮像装置の位置と前記撮像装置が撮像する画角とに基づいて、前記撮像装置の撮像範囲を特定することを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記決定手段は、前記画像の分解能が最も高い前記ロボットの撮像姿勢を決定することを特徴とする請求項1または2に記載の画像処理装置。
【請求項4】
前記第1の特定手段は、前記撮像装置が撮像している画像および前記作業範囲を特定するための設定項目を含む画面が表示装置に表示されている状態で、前記作業範囲の特定に用いられる前記教示点指定をユーザより受け付けることを特徴とする請求項1乃至3のうち何れか1項に記載の画像処理装置。
【請求項5】
前記画像に、前記作業範囲を示す情報が重畳して表示されることを特徴とする請求項4に記載の画像処理装置。
【請求項6】
前記第2の特定手段は、前記撮像範囲に対する前記作業範囲のマージン指定をユーザより受け付けることを特徴とする請求項1乃至5のうち何れか1項に記載の画像処理装置。
【請求項7】
前記撮像範囲より前記作業範囲を広く指定することができることを特徴とする請求項6に記載の画像処理装置。
【請求項8】
前記決定手段は、前記ロボットの撮像姿勢を決定する際に、前記ロボットの姿勢を傾けることを許容するか指定をユーザより受け付けることを特徴とする請求項1乃至7のうち何れか1項に記載の画像処理装置。
【請求項9】
前記第2の特定手段は、前記教示点を用いて近似された平面と正対し、且つ前記作業範囲を含む撮像範囲を探索することを特徴とする請求項1乃至8のうち何れか1項に記載の画像処理装置。
【請求項10】
前記第2の特定手段は、前記ロボットの姿勢を傾けることが許容されており、且つ前記探索が成功しなかった場合、前記平面を傾けて、再度の探索を行うことを特徴とする請求項9に記載の画像処理装置。
【請求項11】
前記第2の特定手段は、前記作業範囲の中心位置と前記ロボットの位置関係とに基づいて、前記探索を行う範囲を限定することを特徴とする請求項9または10に記載の画像処理装置。
【請求項12】
前記決定手段は、前記ロボットの移動時間と前記ロボットの可操作度とのうち何れか一方または両方を用いて、前記ロボットの撮像姿勢を決定することを特徴とする請求項1乃至11のうち何れか1項に記載の画像処理装置。
【請求項13】
前記第1の特定手段は、前記作業範囲として、第1及び第2の作業範囲を特定し、
前記決定手段は、
前記第1の作業範囲を含むように前記第2の特定手段により特定された前記撮像装置の撮像範囲に基づいて、前記ロボットの第1の撮像姿勢を決定し、
前記第2の作業範囲を含むように前記第2の特定手段により特定された前記撮像装置の撮像範囲に基づいて、前記ロボットの第2の撮像姿勢を決定し、
前記第1の作業範囲と前記第1の撮像姿勢を関連付け、且つ前記第2の作業範囲と前記第2の撮像姿勢を関連付けて記憶装置に記憶することを特徴とする請求項1乃至12のうち何れか1項に記載の画像処理装置。
【請求項14】
前記作業範囲には少なくとも1つのワークが含まれ、
前記決定手段により決定された撮像姿勢で前記撮像装置が撮像した画像に基づいて前記ワークの位置、姿勢、種類の少なくとも1つを推定することを特徴とする請求項1乃至13のうち何れか一方に記載の画像処理装置。
【請求項15】
多関節のアームを有するロボットに取り付けられた撮像装置が撮像した画像を処理する画像処理装置を制御する制御方法であって、
ユーザが前記ロボットを操作し、予め規定される作業範囲の境界上にある複数点の夫々に前記アームを移動させ、前記作業範囲が前記アームの可動範囲内にあるかを確認する動作の際に、前記複数点の夫々への移動後の前記アームの位置座標を夫々教示点として登録する工程と、
前記登録された複数の教示点を示す教示点情報に基づいて、前記ロボットの作業範囲を特定する工程と、
前記特定された前記作業範囲を含むよう、前記撮像装置の撮像範囲を特定する工程と、
前記特定された前記撮像範囲に基づいて、前記ロボットの撮像姿勢を決定する工程と、
を備えることを特徴とする制御方法。
【請求項16】
請求項1乃至14のうち何れか1項に記載の画像処理装置の各手段をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置、制御方法およびプログラムに関する。
【背景技術】
【0002】
製品の生産や品質確認、運搬等を目的として、カメラが取り付けられたロボットが用いられている。カメラが撮影した画像を画像処理することで、例えば、作業対象であるワークの検査や測定等を行うことができる。ロボットは所定の範囲内で自由に動作できる。このため、ロボットが所定の作業範囲内でワークに対して作業を行う場合、ロボットが作業を行う作業範囲をカメラが適切に撮像できるようにロボットの撮像姿勢を決定する必要がある。
【0003】
関連する技術として、特許文献1のロボット制御装置が提案されている。該ロボット制御装置は、固定的に設置され且つロボットに接続された制御装置本体と、該制御装置本体に接続された持ち運び可能な教示操作盤とを有している。そして、教示操作盤によりロボットを操作することが可能になっている。
【先行技術文献】
【特許文献】
【0004】
【文献】特許第4221014号
【発明の概要】
【発明が解決しようとする課題】
【0005】
ロボットの作業範囲をカメラが適切に撮像できるようにロボットの撮像姿勢を決定するために、例えば、ユーザによる目視の確認およびロボットの撮像姿勢の調整が繰り返し行われる。この場合、ユーザは、カメラが撮像した画像を確認し、カメラが取り付けられたロボットの傾きや位置を調整する。ユーザは、画像を確認してロボットを調整する作業を、ロボットに取り付けられたカメラが、ロボットの作業範囲を適切に撮像できるまで繰り返し行う必要があり、煩雑である。
【0006】
本発明の目的は、ロボットに取り付けられた撮像装置の撮像姿勢を決定するための作業を簡略化することを目的とする。
【課題を解決するための手段】
【0007】
上記目的を達成するために、本発明の画像処理装置は、多関節のアームを有するロボットに取り付けられた撮像装置が撮像した画像を処理する画像処理装置であって、ユーザが前記ロボットを操作し、予め規定される作業範囲の境界上にある複数点の夫々に前記アームを移動させ、前記作業範囲が前記アームの可動範囲内にあるかを確認する動作の際に、前記複数点の夫々への移動後の前記アームの位置座標を夫々教示点として登録する登録手段と、前記登録された複数の教示点を示す教示点情報に基づいて、前記ロボットの作業範囲を特定する第1の特定手段と、前記特定された前記作業範囲を含むよう、前記撮像装置の撮像範囲を特定する第2の特定手段と、前記特定された前記撮像範囲に基づいて、前記ロボットの撮像姿勢を決定する決定手段と、を備えることを特徴とする。
【発明の効果】
【0008】
本発明によれば、ロボットに取り付けられた撮像装置の撮像姿勢を決定するための作業を簡略化することができる。
【図面の簡単な説明】
【0009】
図1】ロボットシステムの全体構成を示す図である。
図2】撮像姿勢を決定するまでの流れを示す図である。
図3】画像処理装置、ロボットおよび撮像装置のハードウェア構成図である。
図4】画像処理装置、ロボットおよび撮像装置の機能を示すブロック図である。
図5】撮像姿勢決定画面の一例を示す図である。
図6】撮像姿勢を記憶するための処理の流れを示すフローチャートである。
図7】ロボットおよび撮像装置のモデル例を示す図である。
図8】作業範囲の特定から撮像姿勢の決定までの処理の詳細な流れを示すフローチャートである。
図9】作業範囲の特定の一例を示す図である。
図10】撮像姿勢の決定方法の一例を示す図である。
【発明を実施するための形態】
【0010】
以下、本発明の実施形態について図面を参照しながら詳細に説明する。しかしながら、以下の各実施の形態に記載されている構成はあくまで例示に過ぎず、本発明の範囲は各実施の形態に記載されている構成によって限定されることはない。
【0011】
以下、図面を参照して、実施形態について説明する。図1は、ロボットシステム10の全体構成を示す図である。ロボットシステム10は、全体として、ロボット装置とも称されることがある。ロボットシステム10は、画像処理装置100、ロボット110および撮像装置120を有する。ロボットシステム10の構成は、図1の例には限定されない。撮像装置120は、撮像範囲160内の電磁波情報(光情報)を画像(撮像画像)として取得するカメラである。撮像装置120は、ロボット110の所定位置に取り付けられている。図1の例では、撮像装置120は、ロボット110の先端近傍に取り付けられている。ロボット110における撮像装置120の取り付け位置と撮像装置120の位置との相対関係は固定されている。図1の例では、ロボット110は、多関節を有するアームでおり、所定の可動範囲で動作を行うことができる。ロボット110の位置および姿勢は、ユーザ等が手動で変更することができ、また後述する駆動部214が変更することができる。なお、本実施形態でいうロボット110の位置は、ロボット110のアームの先端部の位置を所定の座標系(X、Y、Z)で示すものとし、ロボット110の姿勢は、アームの先端部の姿勢を所定の座標系(ピッチ、ロール、ヨー)で示すものとする。
【0012】
画像処理装置100とロボット110と撮像装置120とは相互に通信可能に接続されており、情報の授受が可能である。作業範囲140は、ワークに対してロボット110が作業を行うことを想定して用意された領域である。ワーク150は、ロボット110が作業を行う対象であり、作業範囲140の内部に様々な状態(方向)で配置される。撮像装置120は、予め定められた撮像位置からワーク150の撮像画像を取得する。画像処理装置100は、取得された撮像画像に基づいて、ワークの位置および姿勢、或いはワークの種類等を推定することができる。
【0013】
画像処理装置100は、各種の処理を行い、ロボット110に対して例えばワークの位置へ移動させるような制御量を送信する。ロボット110は、受信した制御量に基づいて、ワークの位置に移動する。画像処理装置100は、ワーク150の状態に応じて制御量を変更することで、ワーク150の状態に応じて異なる作業をロボット110に実施させることができる。なお、作業範囲140に含まれるワーク150は2つ以上であってもよい。
【0014】
ここで、上述した撮像姿勢について説明する、撮像姿勢は、ワーク150の認識などを行う際に撮像を行う際のロボット110の先端の位置および姿勢であり(さらにアームの関節の姿勢などを考慮してもよい)、ワーク150に対する作業を行う前に予め決定されるものとする。本実施形態におけるロボット110は、撮像を行う際には必ず撮像姿勢に移動し、同じ画角で撮像を行う。そして詳細は後述するが、カメラ座標におけるワークの位置(画像内のワークの位置)をロボット座標におけるワークの位置に変換し、ワーク150に対するロボット110の作業を可能とする。この撮像姿勢は、ワーク150に近いほど、つまり撮像装置120が作業範囲140の面に近い姿勢であるほど、撮像されるワークの画像150の分解能が高くなり、認識などの精度が向上する。一方で、撮像装置120を作業範囲140の面に近づけるほど撮像画角は狭くなり、ワーク150を画角内に収めることができない可能性が増える。つまり、撮像姿勢の決定においては、ワーク150を確実に画角内に収めることができ、且つなるべくワーク150を近い位置で撮影できる姿勢を決定することが好ましい。
【0015】
上記を踏まえた上で、本実施形態における撮像姿勢の決定方法の概要について説明する。図2は、撮像姿勢を決定するまでの流れを示す図である。ユーザは、作業範囲140内のワーク150をロボット110が操作可能なような任意の位置にロボット110を設置する。つまり、ユーザは、作業範囲140がロボット110の可動範囲となると想定される位置にロボット110を設置する(図2(a))。ここで、本実施形態では、ロボット110は、ユーザが移動させることができる、例えば20kg以下のポータブルなロボットであるものとする。ただし、ロボット110は、ポータブルではないロボットであってもよい。ロボット110の設置後、ユーザは、作業範囲140(ロボット作業エリア)をロボット110が動作可能であるかを、ロボット110を動作させる(例えば、作業範囲140の四隅に順番にアームを伸ばし、作業可能な姿勢とする)ことで確認する(図2(b))。そして、本実施形態の処理により、撮像姿勢が決定される(図2(c))。撮像姿勢の決定の詳細については、後述する。
【0016】
図2(b)に示す動作の際、ユーザは、ロボット110を動かした点(例えば、作業範囲140の四隅)を、教示点として登録することができる。画像処理装置100は、これらの教示点から作業範囲を示す作業範囲情報を特定し、特定された作業範囲情報が示す範囲を含む撮像範囲160を示す情報(撮像範囲情報)を特定する。画像処理装置100は、特定された撮像範囲情報に基づいて、ロボット110の撮像姿勢を決定する。つまり、作業範囲140に対応する範囲が撮像範囲160に収まるよう、撮像姿勢が自動的に決定される。これは、作業範囲140がちょうど収まる画角が、ワーク150を必ず画角内に収めることができ、且つワーク150を近くで撮像できる画角であるという考えに基づく。従って、ロボット110を繰り返し動作させて、ユーザによる目視の結果や画像処理の結果を繰り返しフィードバックすることなく、ロボット110の撮像姿勢を一意に決定することができる。
【0017】
図3は、本実施形態の画像処理装置100、ロボット110および撮像装置120のハードウェア構成図である。画像処理装置100とロボット110と撮像装置120とは、相互に情報の伝送が可能なように、信号伝送部130により接続されている。画像処理装置100は、画像処理機能を有したコンピュータである。画像処理装置100は、演算装置201、記憶装置202、表示装置203、入力装置204、外部インタフェース205および内部バス206を有する。図3において、インタフェースは「I/F」と表記される。演算装置201は、CPU(中央演算処理装置)やGPU(画像演算処理装置)等の演算回路で構成される。記憶装置202は、ROM(Read Only Memory)やRAM(Random Access Memory)、HDD(Hard Disk Drive)、SSD(Solid State Drive)等のストレージ等で構成される。表示装置203は、ディスプレイやプロジェクタ等である。入力装置204は、マウスやキーボードやタッチパネル等である。外部インタフェース205は、USB(Universal Serial Bus)やEthernet等により構成され、情報の入出力に用いられる。内部バス206は、画像処理装置100の内部の各部を結ぶデータバスやアドレスバス等の制御線である。
【0018】
記憶装置202には、実施形態の各種制御を行うプログラムが記憶されている。例えば、該プログラムを演算装置201が実行することで、実施形態の各種処理が実現される。これにより、画像処理装置100は、例えば、画像処理や、ロボット110に対するロボット動作命令の送信、撮像装置120からの画像取得等を行う。また、表示装置203および入力装置204を用いて、ユーザは、各種設定や処理の実行指示等を行うことができる。
【0019】
次に、ロボット110について説明する。ロボット110は、演算装置211、記憶装置212、入力装置213、駆動部214、外部インタフェース215および内部バス216を有する。駆動部214以外の各部は、画像処理装置100の各部と同様であるため、説明を省略する。駆動部214は、アクチュエータや減速機、リンク機構等を有して構成されている。演算装置211は、記憶装置212に記憶されているプログラムを実行することで、駆動部214の制御や外部インタフェース215の応答等の各種の制御を行う。
【0020】
記憶装置212は、ロボット110の制御に必要な各リンクの長さやリンク間を繋ぐ間接の可動方向、可動域等の情報を記憶している。演算装置211は、ロボット110の各関節やアクチュエータへの動作指令値から、ロボット110の手先(先端)の位置および姿勢を推定する。また、ロボット110の手先の位置および姿勢は指定することができる。演算装置211は、ロボット110について指定された手先位置の位置および姿勢からロボット110の各関節に対して入力する動作指令値を推定する。
【0021】
また、記憶装置212は、ロボット110の位置および姿勢の情報を記憶することが可能であり、これによりロボット110の教示点を記憶する。ロボット110の位置および姿勢の情報は、入力装置213を用いたユーザ操作や外部から数値により入力されてもよい。また、記憶装置212は、ユーザ操作により、現在のロボット110の位置および姿勢を記憶することもできる。教示点は、ロボット座標系における原点(ロボット原点)に対するXYZ直交座標やオイラー角による姿勢表現、冗長姿勢のための間接方向フラグ、各軸の関節角度等で表現されるロボット110の位置および姿勢を特定するために用いられる情報である。
【0022】
次に、撮像装置120について説明する。撮像装置120は、外部インタフェース221、演算装置222、記憶装置223、撮像素子224および光学機器225を有する。撮像素子224および光学機器225以外の各部は、画像処理装置100およびロボット110の各部と同様であるため、説明を省略する。撮像素子224は、CCD(Charge Coupled Device)イメージセンサやCMOS(Complementary Metal Oxide Semiconductor)イメージセンサ等で構成される。また、撮像素子224は、MOS(Metal Oxide Semiconductor)イメージセンサ等で構成される。光学機器225は、撮像装置120への入射光を撮像素子224に導く。演算装置222は、例えば、外部インタフェース221の応答や撮像素子224から取得された情報に基づく画像生成、光学機器225のフォーカスや画角変化等の光学特性の制御等を行う。
【0023】
図1および図3は、画像処理装置100とロボット110と撮像装置120とはそれぞれ異なる装置とした構成した例を示しているが、各装置は1つの装置で実現されてもよい。また、実施形態の各処理は、所定の外部装置(例えば、クラウドサーバやエッジコンピュータ等)で行われてもよい。例えば、画像処理装置100と所定の外部装置とが通信可能であるとする。画像処理装置100は、実施形態の処理に必要な情報を所定の外部装置に送信し、所定の外部装置は実施形態の処理を行い、処理結果を画像処理装置100に送信する。このような構成でも、実施形態の処理は実現できる。また、実施形態の処理は、シミュレータ等の仮想環境により実現されてもよい。
【0024】
次に、画像処理装置100、ロボット110および撮像装置120の機能について説明する。図4は、画像処理装置100、ロボット110および撮像装置120の機能を示すブロック図である。ロボット110は、ロボット教示部311、ロボット制御部313および駆動部315を有する。ロボット教示部311およびロボット制御部313の機能は、演算装置211が実行するプログラムにより実現される。最初に、ロボット制御部313について説明する。ロボット制御部313は、ロボット110の各アクチュエータの制御量を駆動部315に指令する。駆動部315は、図3の駆動部214に対応する。ロボット110の記憶装置212には、ロボット110の各リンクの長さやリンク間を繋ぐ間接の可動方向、可動域等の情報であるロボットパラメータ情報が予め記憶されている。ロボット制御部313は、ロボットパラメータ情報および所定の運動学的手法(順運動学や逆運動学等)を用いて、各アクチュエータの制御量とロボット110の手先の位置および姿勢とを相互に変換することができる。
【0025】
ロボット110の外部インタフェース215に所定の入力端末が接続されている場合、ユーザは、該入力端末を操作することで、ロボット110を任意の位置および姿勢に移動させることができる。入力端末は、例えば、ティーチングペンダントや該ティーチングペンダントの機能を有するタブレット端末等である。ロボット制御部313は、入力端末に対する操作を受け付けて、ロボット110を任意の位置および姿勢に移動させる。
【0026】
ここで、ロボット110の先端(アーム先端)に効果器や道具等の所定の機器が取り付けられていることがある。この場合、ロボット110の先端の位置および姿勢は、ロボット110のアームの先端に取り付けられている機器の形状により変化する。この場合、ロボット110の先端位置から機器の位置までの長さの分をオフセットとして加える補正が行われてもよい。また、ロボット制御部313は、運動学計算に使用する節の長さを変更することで、機器の先端の位置および姿勢を、ロボット110の手先の位置および姿勢として制御してもよい。
【0027】
次に、ロボット教示部311について説明する。ロボット教示部311は、ロボット110の特定の位置および姿勢の情報を教示点情報(教示点を示す情報)として記憶装置212に記憶することができる。これにより、教示点が登録される。また、ロボット教示部311が、記憶装置212に記憶されている教示点情報を読み出すことで、ロボット制御部313は、読み出された教示点情報が示すロボット110の位置および姿勢を再現するように、ロボット110を移動させることができる。例えば、ユーザが手動でロボット110を動かして、教示点を登録する操作を行うことで、操作を行った時点のロボット110の位置および姿勢を教示点として登録することができる。なお、教示点の登録は、ロボット110の現在の位置および姿勢には限定されない。教示点の登録は、数値の入力により行われてもよいし、仮想空間におけるシミュレーションにより行われてもよい。
【0028】
図4の画像処理装置100について説明する。画像処理装置100は、撮像装置120が撮影した撮像画像を取得し、画像処理を行う。また、画像処理装置100は、撮像姿勢決定部301、作業範囲特定部303、撮像範囲特定部305および表示制御部307を有する。最初に、撮像範囲特定部305について説明する。撮像範囲特定部305は、第2の特定手段に対応する。撮像範囲特定部305は、記憶装置202に記憶されている各種情報を使用して、作業範囲140を含む撮像範囲160を特定する。以下、撮像範囲160を特定するために用いられる各種情報は、画像処理装置100の記憶装置202に記憶されているものとして説明する。ただし、撮像範囲160を特定するために用いられる各種情報は外部の装置に記憶されており、画像処理装置100は、通信により各種情報を取得してもよい。
【0029】
画像処理装置100の記憶装置202は、撮像装置120の撮像部321が撮像を行ったときに、視野内にある三次元空間上の点が、撮像画像上のどの位置に投影されるかの関係を推定するために用いられる各種情報を記憶している。ここで、撮像部321が撮像する三次元空間上の位置と撮像画像上の位置との関係は、内部パラメータと撮像部321の位置および姿勢により決定される外部パラメータとにより表現することができる。
【0030】
外部パラメータは、駆動部315において接続部370が取り付けられたリンクまでのロボットパラメータ情報と、接続部370により固定されるリンクに対する撮像装置120の相対的な位置及び姿勢から、所定の運動学的手法により求めることができる。記憶装置202に記憶されている各種情報は、光学機器225の光学特性により決定される内部パラメータを含む。また、各種情報は、上述したロボットパラメータ情報および接続部370により固定されている撮像装置120のロボット110のリンクに対する座標系原点の位置および姿勢の情報を含む。接続部370は、例えば、ロボット110のリンクと撮像装置120とを接続する軸である。
【0031】
上記各種情報は、設計値により求められてもよいし、任意の同定手法により求められてもよい。ロボットパラメータ情報は、ロボット制御部313と撮像範囲特定部305で共有する部分(外部パラメータの推定に用いられるロボットパラメータ情報等)がある。ロボットパラメータ情報は、画像処理装置100の記憶装置202とロボット110の記憶装置212とのうち何れか一方に記憶されてもよいし、両方に記憶されてもよい。ロボットパラメータ情報が一方の記憶装置に記憶されている場合、画像処理装置100またはロボット110が、他方の記憶装置に記憶されているロボットパラメータ情報を参照するようにしてもよい。
【0032】
作業範囲特定部303は、ユーザが指定した複数の教示点情報を使用して作業範囲情報を生成する。作業範囲特定部303は、第1の特定手段に対応する。作業範囲情報は、複数の教示点により構築されるロボット教示点群またはロボット教示点群を拡張、接続または近似することにより生成される点群、面または立体情報である。作業範囲情報の詳細については後述する。ここで、画像処理装置100の表示制御部307は、表示装置203に、図5に示されるようなGUI(Graphical User Interface)の操作画面を表示する。該GUIは、作業範囲情報の生成に使用される教示点情報の入力等を行う際に用いられる。
【0033】
上記GUIでは、教示点情報に関連付けられた番号を指定することができ、作業範囲特定部303は、指定された教示点情報に基づいて、ポリゴンメッシュや各種近似手法を用いて作業範囲情報を生成する。また、上記GUIでは、作業範囲140に対するマージンを任意に指定可能であり、作業範囲特定部303は、指定されたマージンに従って作業範囲情報を拡大または縮小する。例えば、画像処理により検出する対象のワーク150の特徴が、該ワーク150の幅の分だけ作業範囲より外側に存在する可能性がある。この場合でも、マージンの指定により、このようなワーク150を作業範囲内として扱うことができる。また、作業範囲特定部303は、検出する対象のワーク150のサイズ情報やロボット110に取り付けられる機器のサイズ等を利用して、作業範囲情報を拡大または縮小することができる。これにより、設定の手間が省かれる。
【0034】
次に、撮像姿勢決定部301について説明する。撮像姿勢決定部301は、決定手段に対応する。撮像姿勢決定部301は、作業範囲情報と撮像範囲情報とに基づいて、ロボット110の撮像姿勢を決定する。ここでは、撮像姿勢決定部301は、作業範囲情報とロボットパラメータ情報と撮像範囲情報とに基づいて、ロボット110の姿勢に対して作業範囲140がどのように画像に投影されるかの関係を求める。これにより、撮像姿勢決定部301は、ロボット110の撮像姿勢を決定する。撮像姿勢の決定方法については、後述する。撮像姿勢は、作業範囲情報が示す範囲を撮像するために好適なロボット110の位置および姿勢であり、作業範囲情報が示す範囲の全体が撮像範囲160に含まれる状態である。前述したように、最適な撮像姿勢は、作業範囲140の全体が撮像範囲160に含まれる状態であり、且つ撮像画像の分解能が高い状態であるロボット110の位置および姿勢である。
【0035】
撮像姿勢決定部301は、例えば、撮像画像に投影される作業範囲140の大きさと投影されない範囲の大きさとを評価指標として解析的または数値的に求めてもよい。また、撮像姿勢決定部301は、近似平面に投影して撮像姿勢を限定して、作業範囲140に対する視野の最小外接矩形を求めることで、撮像姿勢を求めてもよい。撮像姿勢決定部301は、任意の姿勢決定における拘束条件や解法等を選択可能なGUIに入力された条件を満たした撮像姿勢を決定してもよい。
【0036】
図5は、上述したGUIの操作画面(撮像姿勢決定画面400)の一例を示す図である。表示制御部307は、表示装置203に表示される画面の表示制御を行う。表示制御部307は、表示制御手段に対応する。ユーザは、撮像姿勢決定画面400が表示装置203に表示されている状態で、入力装置204を操作して、各種の入力や選択を行うことができる。撮像姿勢決定画面400は、画像表示領域401、第1のインタフェース402、実行ボタン403および第2のインタフェース404を含む。第1のインタフェース402および第2のインタフェース404は、設定項目として設けられている。
【0037】
撮像姿勢決定画面400の画面例は、図5の例には限定されない。画像表示領域401には、撮像装置120の撮像部321が撮像している撮像画像が表示される。図5の例では、撮像画像は、カメラ画像と表記される。第1のインタフェース402は、作業範囲140を特定するためのインタフェースである。第1のインタフェース402は、教示点入力部411、ラジオボタン412、マージン設定部413、第1のチェックボックス414および第2のチェックボックス415を含む。
【0038】
教示点入力部411は、作業範囲情報を生成するための教示点を入力するためのボックスである。教示点入力部411は、入力部に対応する。ロボット110の記憶装置212には、複数の教示点情報が記憶されている。本実施形態では、複数の教示点情報にはそれぞれ番号が関連付けられて、記憶装置212に記憶されている。教示点入力部411に教示点の番号が入力されることで、作業範囲特定部303は、作業範囲140を特定することができる。図4の例では、「6」、「9」、「10」、「15」の番号に対応する各教示点情報により構築される領域が、作業範囲情報が示す範囲となる。教示点は、教示点入力部411に対して入力された番号により特定されてもよいし、リスト形式のダイアログ等の中から選択されることで特定されてもよい。教示点入力部411に対する教示点の番号の入力は、カンマまたはハイフンで行うことができる。ハイフンによる番号の入力の場合、複数の教示点の番号を一括して指定することが可能である。
【0039】
ラジオボタン412は、実行ボタン403が押下された場合の挙動を選択するためのボタンである。図5の例では、「撮像姿勢に移動」と「教示点に登録」との2つのうち何れか1つを選択できる。「撮像姿勢に移動」が選択されている状態で実行ボタン403が押下されると、決定された撮像姿勢にロボット110が移動する。「教示点に登録」が選択されている状態で実行ボタン403が押下されると、ロボット110が移動することなく、決定された撮像姿勢が、教示点として登録される。
【0040】
マージン設定部413は、撮像範囲160に対する作業範囲140のマージンを入力するために設けられる。初期値としては、「0」が設定されている。マージンが「0」である場合、教示点入力部411が占める教示点から求めた作業範囲情報が示す範囲が撮像範囲160となる。マージン設定部413には正の値および負の値を入力することができる。マージン設定部413に正の値が入力されると、教示点から求めた作業範囲情報が示す範囲が拡大され、この拡大された範囲が撮像範囲160となる。この場合、作業範囲140は、撮像範囲160の中に余裕をもって収まる可能性が高くなるが、撮像された撮像画像の分解能は低くなる。
【0041】
一方、マージン設定部413に負の値が入力された場合、教示点から求めた作業範囲情報が示す範囲は縮小され、この縮小された範囲が撮像範囲160となる。この場合、作業範囲140は撮像範囲160よりも大きくなる可能性が高い。
【0042】
本実施形態では、撮像範囲160は、ロボット110が作業を行う作業範囲140をカバーする必要がある。ここで、作業範囲140は、教示点に基づいて特定される。例えば、ロボット110が作業を行う対象であるワーク150が、図1のような搭載台(例えば、トレー)に搭載されている場合、トレーの縁140Aは、実質的にロボット110の作業範囲とはならない。このとき、教示点が、トレーの縁140Aに指定された場合(図2(b)でユーザがトレーの縁にロボットを移動させた場合)、複数の教示点により特定される作業範囲は、実際の作業範囲140より広い。そこで、撮像姿勢決定画面400では、マージン設定部413に対して、撮像範囲160を縮小させる入力が許容される。撮像範囲160が縮小されると、撮像された撮像画像の分解能は高くなる。
【0043】
図5の撮像姿勢決定画面400は、第1のチェックボックス414および第2のチェックボックス415を含む。第1のチェックボックス414は、撮像姿勢の再計算を行う際に撮像姿勢を傾けることを許容するか否かを指定するためのチェックボックスである。例えば、ロボット110の周囲に障害物等が存在する場合、ロボット110が垂直方向にのみ動くことが好ましい場合がある。このような場合、第1のチェックボックス414のチェックは外される。つまり、撮像姿勢を傾けることは許容されない。一方、第1のチェックボックス414にチェックが入っている場合には、撮像姿勢を傾けることが許容される。
【0044】
上述したように、画像処理装置100は、撮像範囲160が、作業範囲情報が示す範囲を含む位置および姿勢にロボット110を制御する。撮像姿勢を傾けることが許容されると、様々な角度から撮像装置120は作業範囲140を撮像できる。このため、撮像姿勢を傾けることが許容されていない場合と比較して、撮像姿勢を傾けることが許容されている場合の方が、作業範囲情報が示す範囲を含むような撮像範囲160を設定できる可能性が高くなる。
【0045】
第2のチェックボックス415は、撮像装置120の撮像部321のズーム値を固定にするか否かを指定するためのチェックボックスである。第2のチェックボックス415にチェックが入っている場合は、ズーム値は固定される。ユーザによっては、ズーム値は固定されている方が好ましい場合がある。一方、ズーム値が固定されていない場合、ズーム値を変化させて撮像範囲160を拡大または縮小をさせることができる。これにより、作業範囲140を含むような撮像範囲160を設定できる可能性が高くなる。
【0046】
実行ボタン403は、撮影姿勢を決定するための処理を実行するためのボタンである。上述したように第1のインタフェース402で、作業範囲140を特定するための各種の設定がされる。画像処理装置100が、実行ボタン403の押下操作を受け付けると、第1のインタフェース402で設定された内容に応じて、作業範囲特定部303は、作業範囲情報を生成する。撮像姿勢決定部301は、生成された作業範囲情報および記憶された撮像範囲情報に基づいて、撮像姿勢を決定する。
【0047】
第2のインタフェース404は、教示点の登録に用いられるインタフェースである。第2のインタフェース404は、登録ボタン416および移動ボタン417を有する。第2のインタフェース404では、例えば、テキストボックスにより、教示点の番号を指定することができる。図5の例では、教示点の番号が「1」に指定されている。登録ボタン416は、ロボット110の現在の位置および姿勢を教示点として登録するためのボタンである。登録ボタン416が押下操作されると、ロボット110の現在の位置および姿勢が教示点「1」に登録される。ユーザは、画像表示領域401に表示されているカメラ画像(撮像装置120が撮像している撮像画像)を確認しながら、教示点を登録することができる。ユーザは、例えば、図2(b)の作業を行う際に、作業範囲140の四隅のそれぞれにロボット110の先端を移動させて、「6」、「9」、「10」、「15」を登録することで、作業範囲140に対応する教示点を登録することができる。なお、移動ボタン417は、指定された教示点(図5では「1」)に、ロボット110を移動させるためのボタンである。
【0048】
撮像姿勢決定画面400が、画像表示領域401、第1のインタフェース402、実行ボタン403および第2のインタフェース404を一括して表示することで、画面遷移の回数を低減することができる。上述したように、画像表示領域401には、撮像装置120が撮像している撮像画像が表示される。画像処理装置100は、画像表示領域401に表示されているカメラ画像に、作業範囲情報が示す範囲を任意の態様で重畳して表示してもよい。本実施形態の例であれば、作業範囲140にほぼ重畳される形で作業範囲情報が示す範囲が表示されることになる。また、表示制御部307は、画像表示領域401に表示されているカメラ画像に、教示点を示す教示点情報を任意の態様で重畳して表示してもよい。これにより、ユーザは、作業範囲情報や教示点情報の設定ミス、或いはカメラ画像上の作業範囲140が所望の状態でないといった事態を素早く認識することができる。
【0049】
次に、本実施形態における撮像姿勢を記憶するための処理について説明する。図6は、撮像姿勢を記憶するための処理の流れを示すフローチャートである。例えば、画像処理装置100の外部インタフェース205に、タブレット端末等の入力端末が接続されている場合、ユーザは、入力端末を操作する。ユーザが入力端末を操作すると、ロボット110は、入力端末に対する操作に応じて動作する。前述したように、ユーザは、登録する教示点の位置および姿勢までロボット110を動作させて、教示点を登録する操作を行う。ロボット教示部311は、該操作を受け付けると、記憶装置212に教示点情報を記憶する。これにより、教示点が登録される(S501)。教示点の登録の手法は、上述の例には限定されない。例えば、ユーザが、ロボット110を教示点の位置および姿勢となるまで手動で動かした後に登録作業を行うことで、教示点が登録されてもよい。また、教示点の登録は、数値の入力等により行われてもよい。
【0050】
次に、ユーザが、画像処理装置100の入力装置204を操作して、撮像姿勢決定画面400を表示させる操作を行うと、表示制御部307は、表示装置203に撮像姿勢決定画面400を表示する。ユーザは、第1のインタフェース402に対して、作業範囲140を指定する操作を行う。このとき、ユーザは、少なくとも教示点入力部411に、教示点を入力する操作を行う。また、ユーザは、ラジオボタン412やマージン設定部413、第1のチェックボックス414、第2のチェックボックス415等の指定操作を行うこともできる。ここで、ユーザは、撮像姿勢決定画面400を用いて、教示点の指定を直接行うこともできる。この場合、S501の処理とS502の処理とは一括して行うことができる。
【0051】
実行ボタン403が押下されると、作業範囲特定部303は、第1のインタフェース402に入力された教示点に基づいて、作業範囲を特定する(S502)。S501において正しく作業範囲140が指定されていれば、本ステップで特定される作業範囲は作業範囲140と同じものとなる。そして、特定された作業範囲に対応する作業範囲情報が生成される。作業範囲情報は、実際の三次元空間における座標系で表される情報であり、撮像範囲情報は、撮像装置120の座標系で表される情報である。従って、上述した各種情報(内部パラメータ等)を用いて、作業範囲情報から撮像範囲情報を特定することができる。
【0052】
S502で作業範囲が特定されると、撮像範囲特定部305は、作業範囲情報から撮像範囲を特定する(S503)。撮像範囲が特定されると、撮像姿勢決定部301は、特定された撮像範囲から撮像姿勢を決定する(S504)。S502~S504の処理の詳細については、後述する。上述したように、ラジオボタン412が「撮像姿勢に移動」が選択されている状態で実行ボタン403が押下されると、ロボット110は、決定された撮像姿勢に移動する。画像表示領域401には、撮像装置120が撮像した撮像画像が表示される。ユーザは、撮像画像を確認することで、決定されたロボット110の撮像姿勢が、ユーザの所望の撮像姿勢であるかを確認できる。
【0053】
演算装置201は、ユーザによる第2のインタフェース404の登録ボタン416の押下操作を受け付ける、第2のインタフェース404で指定された教示点の番号に対応する教示点情報を記憶装置202に記憶させる(S505)。ラジオボタン412のうち「教示点に登録」が選択されていた状態で実行ボタン403が押下された場合には、S503およびS504の処理とS505の処理とは一括して行われてもよい。
【0054】
次に、本実施形態のロボット110および撮像装置120のモデルについて説明する。図7は、ロボット110および撮像装置120のモデル例を示す図である。図7の例では、ロボット110は6軸のロボットであり、第5リンクL5に撮像装置120が取り付けられている。ロボット110の構成や撮像装置120の取り付け位置等は、図6の例には限定されない。図7(a)は、ロボット110および撮像装置120の全体のモデルを示す図である。図7(b)は、モデルにおける各座標系を示す図である。ロボット座標系601は、ロボット110の座標系である。また、ロボットハンド座標系602は、ロボットハンドの座標系である。撮像装置座標系603は、撮像装置120の座標系である。
【0055】
ここで、ロボット110のリンクL0~L6と関節J1~J6までのパラメータが既知である場合、順運動学計算によりロボット座標系601からロボットハンド座標系602までの同時変換行列を求めることができる。同様に、ロボット110のリンクL0~L5’と関節J1~J5までのパラメータが既知である場合、順運動学計算によりロボット座標系601から撮像装置座標系603までの同時変換行列(c)も求めることができる。また、各種撮像装置の校正手法により、撮像面上の座標(u,v)と撮像装置座標系603上の三次元位置(x,y,z)との対応関係を表す内部パラメータMを求めることができる。図7(c)および図7(d)は、撮像装置120のカメラ原点、撮像装置座標系603における撮像面と三次元位置との関係を示す図である。撮像面上の座標(u,v)と撮像装置座標系上の三次元位置(x,y,z)との関係は、内部パラメータMにより、以下の数式(1)で表される。
【0056】
【数1】
【0057】
ここでsは撮像面上の位置と画素との関係を表すスケールファクターである。そして、ロボット座標系601から見た位置pと撮像面上に投影されるpの位置(u,v)の関係は、以下の数式(2)で表される。
【0058】
【数2】
【0059】
次に、作業範囲140の特定からロボット110の撮像姿勢の決定までの詳細な処理の流れについて説明する。図8は、作業範囲の特定から撮像姿勢の決定までの処理の詳細な流れを示すフローチャートである。図8の処理は、ラジオボタン412のうち「撮像姿勢に移動」が選択されている状態で実行ボタン403が押下された後に開始される。ただし、一部の処理は、実行ボタン403が押下される前に行われてもよい。例えば、S502の処理(作業範囲を特定する処理)は、第1のインタフェース402に所定の設定がされれば、実行ボタン403が押下されなくても、実行することが可能である。このように、画像処理装置100が、実行ボタン403が押下される前に、S502の処理をバックグランドで予め行っておくことで、全体の処理時間の短縮化を図ることができる。
【0060】
作業範囲特定部303は、教示点入力部411に入力された教示点の番号に関連付けられている教示点情報から作業範囲情報を生成する(S701)。図9は、作業範囲の特定の一例を示す図である。図9(a)は、三次元空間における各教示点を示す図である。図9(b)は、モデルにおける各教示点を示す図である。図9の例では、5つの教示点801~805が指定されている。作業範囲特定部303は、各教示点801~805を結ぶメッシュ面を、ドロネー三角形分割等の各種メッシュ化手法により生成する。生成されたメッシュ面が作業範囲情報となる。上述したように、マージン設定部413にマージンを設定することができる。マージン設定部413に正の値または負の値が設定された場合、作業範囲特定部303は、設定されたマージンに応じて作業範囲情報が示す範囲を拡大または縮小する。
【0061】
ここで、教示点入力部411に入力された教示点が2つ以下の状態であり、マージン設定部413に正の値が設定された状態で、実行ボタン403が押下されたとする。この場合、作業範囲特定部303は、点または線を中心としてロボット110の先端方向を法線とする面方向に、指定されたマージンでメッシュ面を拡大することで、作業範囲情報を生成してもよい。作業範囲特定部303は、平面または高次曲面による近似を用いて、作業情報を生成してもよい。以下、作業範囲情報は三次元空間上の面情報として取り扱われる例について説明するが、指定された各教示点の群はロボット110の位置および姿勢の群情報のまま作業範囲情報として取り扱われてもよい。また、作業範囲情報は、指定された教示点群から生成される三次元空間上の立体情報として取り扱われてもよい。
【0062】
ロボット制御部313は、推定された作業範囲140にあるワーク150の位置および姿勢、或いはワークの種類等に基づいて、ロボット110の制御量をロボット110に送信する。そして、ロボット110は、受信した制御量に基づいて、移動する。ロボット110の好適な撮像姿勢は、撮像範囲160が作業範囲140の全てを含み、撮像される画像の分解能が高くなるような撮像姿勢である。撮像姿勢決定部301は、このような条件を満たす撮像姿勢を複数抽出することがある。この場合、撮像姿勢決定部301は、抽出された複数の撮像姿勢のうち、撮像範囲160が作業範囲140の全てを含み、且つ画像の分解能が最も高い撮像姿勢を、撮像姿勢として決定してもよい。
【0063】
上述した数式(2)により、撮像姿勢に対する作業範囲の撮像画像への投影関係は明らかである。従って、撮像姿勢決定部301は、撮像画像に投影される作業範囲情報の分解能を評価指標として、撮像姿勢をモンテカルロ法等に基づいた各種推定方法で求めてもよい。図10は、本実施形態に係る撮像姿勢の決定方法の一例を示す図である。撮像姿勢決定部301は、撮像範囲160から撮像姿勢を直接的に推定するのではなく、図10に示すように条件を指定していくことで高速に好適な撮像姿勢を決定する。本実施形態では、撮像姿勢は、作業範囲140を示す作業範囲情報と撮像範囲160を示す撮像範囲情報とに基づいて、任意の計算方法で決定される。
【0064】
次に、姿勢平面の算出について説明する。撮像姿勢決定部301は、作業範囲に対する姿勢平面を算出する(S702)。図10を参照して、作業範囲304に対する姿勢平面901を算出する方法について説明する。図10の例の作業範囲304は、四角錐状の範囲であり、高さ方向の空間を持つ。撮像姿勢決定部301は、撮像装置120の撮像部321の目標姿勢を、姿勢平面901と正対するように条件付けする。これにより、撮像姿勢を推定し易くなる。「正対」は、撮像部321の投影モデル上の投影面と姿勢平面901とが平行な状態である。例えば、複数の撮像装置120を用いて撮像を行うステレオカメラの場合、投影面は複数になる。この場合、撮像姿勢決定部301は、複数の投影面の平均と姿勢平面901とが平行である状態を「正対」として取り扱ってもよい。
【0065】
実施形態では、撮像姿勢決定部301は、作業範囲304の教示点群や面、立体情報等に対して、最尤推定法等の各種近似手法を用いて平面を近似することで姿勢平面901を決定する。姿勢平面901は、教示点を用いて近似された平面に対応する。ここで、撮像姿勢決定部301は、教示点情報の誤差による影響を少なくするために、外周部或いは平面度の高い教示点群に対して重み付けをして近似を行ってもよい。また、撮像姿勢決定部301は、作業範囲304が三次元空間上の面情報である場合、連続量として最尤推定法等の各種近似手法を適用して、姿勢平面901を決定してもよい。一方、撮像姿勢決定部301は、姿勢平面901を決定するに際して、離散化を行ってもよいし、誤差分散がガウス分布に従うものと仮定して最小二乗法を使用してもよい。これにより、処理の高速化が図られる。
【0066】
次に、撮像姿勢決定部301は、条件を満たす撮像姿勢を探索する(S703)。撮像姿勢決定部301は、姿勢平面901と正対し、且つ作業範囲304の全てが視野に入るような撮像姿勢がロボット可動範囲910内に存在するかの探索をおこなう。ロボット可動範囲910は、ロボット110の可動範囲でロボットパラメータ情報に対して公知の運動学手法により決定することができる。
【0067】
撮像姿勢決定部301は、姿勢平面901による条件付け、および上述した数式(2)を使用して求めた作業範囲304の撮像画像への投影を評価指標とする。これにより、条件付けがない探索を行う場合と比較して、高速に探索をおこなうことができる。撮像姿勢決定部301は、作業範囲304の中心位置とロボット可動範囲910の位置関係とを利用して探索範囲を限定してもよい。探索範囲が限定されることで、撮像姿勢決定部301の処理の効率化が図られる。
【0068】
撮像姿勢決定部301は、S703の探索が成功したかを判定する(S704)。S703の探索が成功しなかった場合、S704でNoと判定される。この場合、撮像姿勢決定部301は、図5の第1のチェックボックス414(姿勢再計算を許容するか否かを指定するチェックボックス)のチェックが入っているかを判定する。つまり、撮像姿勢決定部301は、姿勢再計算を行うかを判定する(S704)。S704でNoと判定された場合、探索が失敗したことを示す情報が撮像姿勢決定画面400に表示される。そして、処理は、終了する。
【0069】
一方、S704でYesと判定された場合、撮像姿勢決定部301は、撮像姿勢の再計算を行う(S706)。つまり、撮像姿勢決定部301は、姿勢平面901の再度の探索を行う。このとき、撮像姿勢決定部301は、作業範囲304の中心位置とロボット可動範囲910との位置関係を利用して探索領域を限定してもよい。例えば、撮像姿勢決定部301は、姿勢平面901の法線902が、作業範囲304の中心位置から見てロボット可動範囲910の側に向けて傾くようなロボット110の姿勢を想定してもよい。そして、撮像姿勢決定部301は、姿勢平面901を傾けた状態で、姿勢再計算を行うことで、探索条件を限定しつつ、ロボット可動範囲910の中で条件を満たしやすい方向に探索を進めることができる。例えば、姿勢平面901が傾いていない状態では、S703の条件を満たす姿勢を検出できなかったが、姿勢平面901を傾けることで、S703の条件を満たす姿勢を検出できる場合がある。従って、姿勢平面901を傾けることで、S703の条件を満たす撮像姿勢を効率良く探索することができる。
【0070】
撮像姿勢決定部301は、評価指標に基づいて、撮像姿勢の決定を行う(S707)。評価指標は、撮像条件により任意に設定することができる。例えば、撮像姿勢決定部301は、S703またはS706で探索された複数の撮像姿勢から、撮像画像の分解能が最も高い撮像姿勢を決定する。撮像姿勢決定部301は、探索された複数の撮像姿勢から、分解能が所定以上であり且つ撮像画像に対する作業範囲情報の投影面積が所定範囲より広い面積の撮像姿勢を決定してもよい。撮像姿勢決定部301は、作業範囲304の中心位置と撮像画像の中心との距離に基づいて、撮像姿勢を決定してもよい。撮像姿勢決定部301は、ロボット110が所定の撮像姿勢から作業範囲304に移動するまでにかかる時間(移動時間)やロボット110の可操作度等の種々の評価指標を組み合わせて、撮像姿勢を決定してもよい。
【0071】
撮像姿勢決定部301は、探索された撮像姿勢の近傍で再探索を行い、評価指標に基づいて、撮像姿勢を決定してもよい。また、撮像姿勢決定部301は、再帰的な探索を行うことで、撮像姿勢を決定してもよい。このとき、評価指標を最大化する最大化問題としては、各種のアルゴリズムを適用することができる。以上により、画像処理装置100が画像処理を行い、実際にロボット110がワーク150に対して操作を行う時間を短縮できる。また、ロボット110の特異な姿勢近傍での動作を避けることができる。
【0072】
S707で決定された撮像姿勢を示す情報が撮像姿勢情報である。画像処理装置100は、撮像姿勢情報を制御量として、ロボット110に送信する。ロボット制御部313は、駆動部315を制御して、決定された撮像姿勢となるようにロボット110を動作させる(S708)。ロボット110は、図5の撮像姿勢決定画面400の実行ボタン403が押下されたときに移動する。ただし、ラジオボタン412で「教示点に登録」が選択されていた場合、ロボット110は移動することなく、教示点の登録が行われる。以上により、処理が終了する。本実施形態の処理は、図8のS701~S708には限定されず、作業範囲情報や撮像範囲情報等を用いた、任意の手法で、ロボット110の撮像姿勢が決定されてもよい。
【0073】
以上のように、画像処理装置100は、教示点が指定されると、指定された教示点に基づいて作業範囲を特定し、予め記憶されている各種情報を用いて、作業範囲を含む撮像範囲を特定する。そして、画像処理装置100は、特定された撮像範囲からロボット110の撮像姿勢を決定する。これにより、確認作業および調整作業を繰り返すことなく、ロボット110の好適な撮像姿勢が自動的に決定されるため、撮像姿勢を決定するための作業を簡略化することができる。
【0074】
以上の実施形態では、1つの作業範囲と1つの撮像範囲が特定される例について説明したが、複数の作業範囲または撮像姿勢が特定されてもよい。例えば、ロボット110が、第1の作業範囲Aに置かれたワーク150を把持し、第1の作業範囲Aとは異なる第2の作業範囲Bにある箱の中にワーク150を置く動作を行う場合がある。この場合、撮像姿勢決定部301は、ワーク150を把持する第1の作業範囲Aにおける第1の撮像姿勢Cを決定する。同様に、撮像姿勢決定部301は、ワーク150を置く第2の作業範囲Bにおける第2の撮像姿勢Dを決定する。そして、撮像姿勢決定部301は、記憶装置202に、第1の作業範囲Aの情報と第1の撮像姿勢Cの情報とを関連付けて、また第2の作業範囲Bの情報と第2の撮像姿勢Dの情報とを関連付けて、テーブル等で記憶する。これにより、1台のロボット110が異なる作業範囲で作業を行う場合でも、本実施形態を適用できる。
【0075】
また、上述した実施形態では、ロボット110に撮像装置120が取り付けられている例について説明したが、座標系の推定が可能であれば、作業を行うロボットと撮像装置が取り付けられたロボットとは異なっていてもよい。
【0076】
以上、本発明の好ましい実施の形態について説明したが、本発明は上述した各実施の形態に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。本発明は、上述の各実施の形態の1以上の機能を実現するプログラムを、ネットワークや記憶媒体を介してシステムや装置に供給し、そのシステム又は装置のコンピュータの1つ以上のプロセッサーがプログラムを読み出して実行する処理でも実現可能である。また、本発明は、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【符号の説明】
【0077】
100 画像処理装置
110 ロボット
120 撮像装置
140 作業範囲
160 撮像範囲
301 撮像姿勢決定部
303 作業範囲特定部
305 撮像範囲特定部
307 表示制御部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10