JP2023146927A - コンピュータプログラム、および、端末装置 - Google Patents
コンピュータプログラム、および、端末装置 Download PDFInfo
- Publication number
- JP2023146927A JP2023146927A JP2022054370A JP2022054370A JP2023146927A JP 2023146927 A JP2023146927 A JP 2023146927A JP 2022054370 A JP2022054370 A JP 2022054370A JP 2022054370 A JP2022054370 A JP 2022054370A JP 2023146927 A JP2023146927 A JP 2023146927A
- Authority
- JP
- Japan
- Prior art keywords
- data
- target
- dimensional
- processor
- image
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000004590 computer program Methods 0.000 title claims abstract description 28
- 238000005259 measurement Methods 0.000 claims abstract description 29
- 239000013598 vector Substances 0.000 claims description 42
- 238000012545 processing Methods 0.000 claims description 38
- 230000006870 function Effects 0.000 claims description 25
- 230000000007 visual effect Effects 0.000 claims description 20
- 238000003825 pressing Methods 0.000 claims description 9
- 238000003384 imaging method Methods 0.000 abstract description 21
- 239000011159 matrix material Substances 0.000 description 184
- 238000000034 method Methods 0.000 description 145
- 230000009466 transformation Effects 0.000 description 114
- 230000008569 process Effects 0.000 description 106
- 238000003860 storage Methods 0.000 description 34
- 238000011156 evaluation Methods 0.000 description 29
- 238000012360 testing method Methods 0.000 description 24
- 238000010586 diagram Methods 0.000 description 14
- 239000008186 active pharmaceutical agent Substances 0.000 description 9
- 230000008859 change Effects 0.000 description 8
- 238000013519 translation Methods 0.000 description 6
- 239000012636 effector Substances 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000002360 preparation method Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000000513 principal component analysis Methods 0.000 description 2
- 230000001174 ascending effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000011960 computer-aided design Methods 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000009958 sewing Methods 0.000 description 1
- 238000011524 similarity measure Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Images
Landscapes
- Length Measuring Devices By Optical Means (AREA)
- Manipulator (AREA)
- Image Analysis (AREA)
Abstract
【課題】三次元物体データを使用して位置を決定する【解決手段】三次元センサにより測定される三次元点群に基づく対象三次元物体データと、三次元センサの測定位置の座標を表す測定座標データと、を取得する。デジタルカメラにより撮影される二次元画像データと、デジタルカメラの撮影位置の座標を表す撮影座標データと、デジタルカメラの視野に関連する視野データと、二次元画像内の特定位置であって操作部を示す特定位置を表す特定位置データと、を取得する。対象三次元物体データと、測定座標データと、撮影座標データと、視野データと、特定位置データと、を使用して、対象三次元物体データによって表される対象物体の表面上の位置であって特定位置に対応する位置である対応位置を決定する。【選択図】 図1
Description
本明細書は、物体の表面を表す三次元物体データを処理する技術に関する。
部品の移動作業、挿入作業、組み立て作業などの作業に、ロボットが使用され得る。ロボットに関連して、特許文献1は、以下の技術を開示している。ロボットのハンドに作用する力を検出する力センサの力センサ信号からハンドに加わる力を算出する。ロボットアームの各関節軸駆動モータの位置検出信号から部品の移動量の移動速度を算出する。ハンドに加わる力と移動速度の積を時間積分して移動時に消費される仕事量を算出する。移動量を第1軸、仕事量を第2軸とする2次元平面内において、ハンドリング作業完了時の移動量と仕事量が予め設定した閉領域の外側にある場合に把持部品とハンド間の滑りが発生したと判定する。
ロボットが部品や製品などの物体を扱う場合、ロボットに対する部品の位置と姿勢とを取得するために、物体の表面を表す三次元物体データ(例えば、三次元点群データ、三次元メッシュデータなど)が使用され得る。また、ロボットは、物体の特定の部分(例えば、ボタンやタッチパネルなどの操作されるべき部分)の操作に、使用され得る。ところが、三次元物体データを使用して物体の特定の部分の位置を決定することは、容易ではなく、工夫の余地があった。
本明細書は、三次元物体データを使用して位置を決定する技術を開示する。
本明細書に開示された技術は、以下の適用例として実現することが可能である。
[適用例1]コンピュータを有する処理装置のコンピュータプログラムであって、操作部を含む対象物体の表面を表す対象三次元物体データであって三次元センサにより測定される三次元点群に基づく前記対象三次元物体データと、前記三次元センサの測定位置の座標を表す測定座標データと、を取得する第1取得機能と前記操作部の画像を含む二次元画像の二次元画像データであってデジタルカメラにより撮影される前記二次元画像データと、前記デジタルカメラの撮影位置の座標を表す撮影座標データと、前記デジタルカメラの視野に関連する視野データと、前記二次元画像内の特定位置であって前記操作部を示す前記特定位置を表す特定位置データと、を取得する第2取得機能と、前記対象三次元物体データと、前記測定座標データと、前記撮影座標データと、前記視野データと、前記特定位置データと、を使用して、前記対象三次元物体データによって表される前記対象物体の前記表面上の位置であって前記特定位置に対応する前記位置である対応位置を決定する位置決定機能と、をコンピュータに実現させる、コンピュータプログラム。
この構成によれば、対象三次元物体データと、測定座標データと、撮影座標データと、視線方向データと、特定位置データと、を使用して、対象三次元物体データの座標系における特定位置に対応する位置である対応位置を適切に決定できる。
なお、本明細書に開示の技術は、種々の態様で実現することが可能であり、例えば、データを処理する方法およびデータを処理する装置、それらの方法または装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体(例えば、一時的ではない記録媒体)、等の形態で実現することができる。
A.第1実施例:
A1.装置構成:
図1は、一実施例としての端末装置を示す概略図である。端末装置200は、例えば、パーソナルコンピュータである。端末装置200には、ロボットアーム120とカメラシステム160とが接続されている。ロボットアーム120には、ツール130とカメラシステム160とが固定されている。図中には、対象装置300が示されている。端末装置200は、ツール130とカメラシステム160とを使用して、対象装置300をテストする。本実施例では、対象装置300は、本体390と、本体390に取り付けられた操作パネル310と、を有する複合機である。操作パネル310は、画面320と、画面320上に配置されたタッチパネル330と、第1ボタン340と、第2ボタン350と、を有している。画面320には、操作用のボタンが表示され得る。ユーザは、タッチパネル330のうちのボタンに重なる部分を押下することによって、対象装置300に指示を入力できる。ボタン340、350は、物理的なボタンである。ユーザは、ボタン340、350を押下することによって、対象装置300に指示を入力できる。操作パネル310は、本体390に対して可動である。具体的には、本体390に対する操作パネル310の角度(すなわち、回転位置)は、調整可能である。
A1.装置構成:
図1は、一実施例としての端末装置を示す概略図である。端末装置200は、例えば、パーソナルコンピュータである。端末装置200には、ロボットアーム120とカメラシステム160とが接続されている。ロボットアーム120には、ツール130とカメラシステム160とが固定されている。図中には、対象装置300が示されている。端末装置200は、ツール130とカメラシステム160とを使用して、対象装置300をテストする。本実施例では、対象装置300は、本体390と、本体390に取り付けられた操作パネル310と、を有する複合機である。操作パネル310は、画面320と、画面320上に配置されたタッチパネル330と、第1ボタン340と、第2ボタン350と、を有している。画面320には、操作用のボタンが表示され得る。ユーザは、タッチパネル330のうちのボタンに重なる部分を押下することによって、対象装置300に指示を入力できる。ボタン340、350は、物理的なボタンである。ユーザは、ボタン340、350を押下することによって、対象装置300に指示を入力できる。操作パネル310は、本体390に対して可動である。具体的には、本体390に対する操作パネル310の角度(すなわち、回転位置)は、調整可能である。
ロボットアーム120は、基部121と、基部121に接続されたアーム122と、を有している。基部121は、図示しない作業場に固定される。アーム122は、複数のリンクを有している。複数のリンクは、回転、並進などの種々の動きを許容するジョイントによって接続されている。本実施例では、アーム122は、6軸のロボットアームである。図示を省略するが、6軸のそれぞれのジョイントは、ジョイントを駆動するサーボモータと、ジョイントの駆動位置(例えば、回転角度)を検出する位置検出器(例えば、エンコーダ)と、を有している。端末装置200は、各ジョイントの駆動モータを制御することによって、各ジョイントを独立に動かすことができる。また、端末装置200は、各ジョイントの位置検出器から出力されるデータを使用することによって、アーム122の動作状態(例えば、アーム122の全体の形状)を取得できる。
アーム122の端部123には、ツール130とカメラシステム160とが固定されている。本実施例では、ツール130は、1本の棒状の部材である(棒状の部材は、指とも呼ばれる)。対象装置300の操作のために、ツール130の端部が、対象装置300に接触する。環境(ここでは、対象装置300)と相互作用する部材は、エンドエフェクタとも呼ばれる。ツール130は、エンドエフェクタの例である。
カメラシステム160は、2次元の画像データを生成するデジタルカメラ140と、物体の表面上の複数の点のそれぞれの三次元座標を測定する三次元センサ150と、を有している。三次元センサ150の種類は、種々の種類であってよく、例えば、立体視、構造化光パターン、飛行時間のいずれかであってよい。立体視は、パッシブステレオ方式とも呼ばれ、複数のカメラによる撮影画像を使用して物体の表面上の三次元座標を測定する方式である。構造化光パターンは、アクティブステレオ方式とも呼ばれ、物体に投影された光のパターンを使用して物体の表面上の三次元座標を測定する方式である。飛行時間は、レーザや赤外線などの光が送信されてから、物体からの反射光が戻るまでの時間を使用して物体の表面上の三次元座標を測定する方式である。三次元センサは、三次元センサから物体の表面までの距離(深度とも呼ばれる)を測定する深度センサとも呼ばれる。三次元センサ150は、対象装置300を含む空間(シーンとも呼ぶ)を測定する。
本実施例では、デジタルカメラ140と三次元センサ150とは、同じ方向を向いている。三次元センサ150は、デジタルカメラ140によって撮影される対象物(例えば、対象装置300)の表面上の複数の点のそれぞれの三次元座標を測定可能である。
端末装置200は、プロセッサ210と、記憶装置215と、表示部240と、操作部250と、通信インタフェース270と、を有している。これらの要素は、バスを介して互いに接続されている。記憶装置215は、揮発性記憶装置220と、不揮発性記憶装置230と、を含んでいる。
表示部240は、液晶ディスプレイ、有機ELディスプレイなどの、画像を表示するように構成された装置である。操作部250は、ボタン、レバー、表示部240上に重ねて配置されたタッチパネルなどの、ユーザによる操作を受け取るように構成された装置である。ユーザは、操作部250を操作することによって、種々の指示を端末装置200に入力可能である。通信インタフェース270は、他の装置と通信するためのインタフェースである(例えば、USBインタフェース、有線LANインタフェース、IEEE802.11の無線インタフェース)。通信インタフェース270には、ロボットアーム120と、カメラシステム160と、が接続される。
プロセッサ210は、データ処理を行うように構成された装置であり、例えば、CPUである。揮発性記憶装置220は、例えば、DRAMであり、不揮発性記憶装置230は、例えば、フラッシュメモリである。不揮発性記憶装置230は、第1プログラム231と、第2プログラム232と、を格納している。また、不揮発性記憶装置230は、モデル点群PCmのデータと、シーン点群PCsのデータと、視野データDSと、を格納している。これらのプログラムとデータとの詳細については、後述する。
本実施例では、プロセッサ210は、カメラシステム160からのデータを使用して、対象装置300の操作パネル310の操作対象(ボタンなど)の位置を取得する。プロセッサ210は、ツール130によって操作対象を操作することによって、対象装置300をテストする。
A2.座標系:
図2(A)-図2(C)は、座標系の説明図である。図2(A)には、ロボットアーム120とツール130とカメラシステム160と対象装置300とが示されている。図中には、以下の座標系が示されている。
(1)ロボット座標系Crb
(2)ツール座標系Crt
(3)カメラ座標系Crc
(4)モデル座標系Crm
座標系Crb、Crt、Crc、Crmの符号の末尾の文字(b、t、c、m)は、座標系の基準を示している。「b」はロボットアーム120を示し、「t」はツール130を示し、「c」はカメラシステム160を示し、「m」はモデル点群PCmを示している。これらの座標系Crb、Crt、Crc、Crmは、いずれも、三次元の直交座標系である(直交座標系は、デカルト座標系とも呼ばれる)。
図2(A)-図2(C)は、座標系の説明図である。図2(A)には、ロボットアーム120とツール130とカメラシステム160と対象装置300とが示されている。図中には、以下の座標系が示されている。
(1)ロボット座標系Crb
(2)ツール座標系Crt
(3)カメラ座標系Crc
(4)モデル座標系Crm
座標系Crb、Crt、Crc、Crmの符号の末尾の文字(b、t、c、m)は、座標系の基準を示している。「b」はロボットアーム120を示し、「t」はツール130を示し、「c」はカメラシステム160を示し、「m」はモデル点群PCmを示している。これらの座標系Crb、Crt、Crc、Crmは、いずれも、三次元の直交座標系である(直交座標系は、デカルト座標系とも呼ばれる)。
ロボット座標系Crbは、ロボットアーム120の予め決められた基準点Cbを原点とする座標系である。本実施例では、ロボット座標系Crbは、基部121に固定されており、アーム122の動きから独立している。
ツール座標系Crtは、ツール130の予め決められたツールセンタポイントCtを原点とする座標系である。本実施例では、ツールセンタポイントCtは、ツール130のうちの対象装置300と接触すべき部分に、配置されている。ツール座標系Crtは、ツール130に固定されている。なお、ツール座標系Crtの原点は、他の位置に配置されてもよい。
カメラ座標系Crcは、カメラシステム160の予め決められた基準点Ccを原点とする座標系である。本実施例では、基準点Ccは、カメラシステム160の被写体側の部分(例えば、デジタルカメラ140のレンズの表面)に、配置されている。カメラ座標系Crcは、カメラシステム160に固定されている。なお、本実施例では、デジタルカメラ140の位置は、三次元センサ150の位置とおおよそ同じであり、デジタルカメラ140の視野(すなわち、撮影可能範囲)と三次元センサ150の視野(すなわち、測定可能範囲)とは、おおよそ同じ方向を向いている。カメラ座標系Crcは、デジタルカメラ140と三次元センサ150とに共通に使用される。なお、カメラ座標系Crcの原点は、他の位置に配置されてもよい。
モデル座標系Crmは、対象装置300の表面を示すモデル点群PCmの基準点Cmを原点とする座標系である。後述するように、モデル点群PCmは、三次元センサ150の測定データを使用して、形成され得る。この場合、モデル座標系Crmは、カメラ座標系Crcと同じであり得る。
三次元の直交座標系は、互いに直交する3個の基底ベクトルによって定められる。或る座標系の基底ベクトルから他の座標系の基底ベクトルへの変換は、基底変換行列によって表され得る。図2(A)には、複数の基底変換行列Tbt、Ttc、Tbm、Tmcが示されている(成分の詳細については、図示省略)。これらの行列の概要は、以下の通りである。
(1)行列Tbt:算出可:ロボット座標系Crbからツール座標系Crtへの変換
(2)行列Ttc:固定 :ツール座標系Crtからカメラ座標系Crcへの変換
(3)行列Tbm:未知 :ロボット座標系Crbからモデル座標系Crmへの変換
(4)行列Tmc:未知 :モデル座標系Crmからカメラ座標系Crcへの変換
(1)行列Tbt:算出可:ロボット座標系Crbからツール座標系Crtへの変換
(2)行列Ttc:固定 :ツール座標系Crtからカメラ座標系Crcへの変換
(3)行列Tbm:未知 :ロボット座標系Crbからモデル座標系Crmへの変換
(4)行列Tmc:未知 :モデル座標系Crmからカメラ座標系Crcへの変換
基底変換行列は、いわゆる同次変換行列によって表現可能である。図2(B)は、ロボット座標系Crbの基底ベクトルをツール座標系Crtの基底ベクトルに変換する基底変換行列Tbtを示している。基底変換行列Tbtは、回転と平行移動(並進とも呼ばれる)とを表す4行4列の行列である。要素Rbtは、回転を示す3行3列の回転行列である。回転行列Rbtの下の「0(ゼロ)」は、回転行列Rbtの下の3個の要素(すなわち、第4行の第1-第3列の3個の要素)のそれぞれがゼロであることを示している。要素Obtは、平行移動を示す3行1列の列ベクトルである(並進ベクトルとも呼ばれる)。
図2(C)は、ツール座標系Crtの座標(Xt,Yt,Zt)とロボット座標系Crbの座標(Xb,Yb,Zb)との関係の例を示している。座標の変換は、基底ベクトルの変換と同様に、同次変換行列によって表現可能である。図中の座標変換行列TCtbは、回転と並進とを表す4行4列の行列である。要素Rtbは、回転を示す3行3列の回転行列である。回転行列Rtbは、3個の列ベクトルBX、BY、BZの要素を配置したものと同じである。列ベクトルBX、BY、BZは、それぞれ、ツール座標系Crtで見たロボット座標系Crbの基底ベクトルBX、BY、BZの成分を示している。要素BOは、並進ベクトルを示す3行1列のベクトルである。要素BOは、ツール座標系Crtで見たロボット座標系Crbの原点Cbの座標(Cbx、Cby,Cbz)を示している。
座標変換行列TCtbは、ツール座標系Crtの座標(Xt,Yt,Zt)を、ロボット座標系Crbの座標(Xb,Yb,Zb)を使用して表現するための変換行列である。この座標変換行列TCtbは、図2(B)に示す基底変換行列Tbtの逆行列で表される。同次変換行列の逆行列は、公知の方法で算出可能である。
ロボット座標系Crbからツール座標系Crtへの変換の行列Tbtは、ロボットアーム120の幾何学的な形状から、算出可能である。例えば、ロボットアーム120の各ジョイントの駆動位置から、基底変換行列Tbtは算出される。基底変換行列Tbtを使用することによって、ロボット座標系Crbでのツール130の位置を算出することができる。なお、ジョイントのパラメータからツール130などのエンドエフェクタの位置を算出する技術は、フォワードキネマティクスとも呼ばれる。
本実施例では、ツール130(図2(A))とカメラシステム160との間の相対的な位置関係は、固定されている。従って、ツール座標系Crtからカメラ座標系Crcへの変換の行列Ttcは、予め決められている。
モデル座標系Crmに関連する行列Tbm、Tmcは、未知である。後述するように、対象装置300のテストのための処理で、モデル座標系Crmが決定され、ロボット座標系Crbからモデル座標系Crmへの変換を示す行列Tbmが算出される。
なお、基底変換行列Tbtと座標変換行列TCtbとの間の関係と同様に、他の基底変換行列Ttc、Tbm、Tmcと対応する座標変換行列との間の関係も、逆行列によって表される。
A3.テストの概要:
図3(A)-図3(D)は、テストの概要を示す説明図である。図3(A)には、ロボットアーム120とツール130とカメラシステム160と対象装置300とが示されている。端末装置200は、ツール130で対象装置300の操作パネル310を操作することによって、対象装置300をテストする。
図3(A)-図3(D)は、テストの概要を示す説明図である。図3(A)には、ロボットアーム120とツール130とカメラシステム160と対象装置300とが示されている。端末装置200は、ツール130で対象装置300の操作パネル310を操作することによって、対象装置300をテストする。
デジタルカメラ140は、対象装置300の操作パネル310を撮影する。図3(B)は、撮影画像IMGの例を示している。本実施例では、操作パネル310は、画面320とタッチパネル330とを有している。図中には、撮影画像IMGのうちの画面320を含む一部分が示されている。撮影画像IMGは、画面320に表示されたコピーボタン321と、スキャンボタン322と、プリントボタン323と、を示している。ここで、スキャンボタン322が操作対象であることとする。端末装置200は、予め準備されたスキャンボタン322の画像を使用して、撮影画像IMG内のスキャンボタン322の位置Pa1を検出する。この位置Pa1は、操作すべき位置を示している(以下、特定位置Pa1とも呼ぶ)。
図3(A)には、対象装置300上の操作位置Pm1が示されている。この操作位置Pm1は、対象装置300の操作パネル310上の、特定位置Pa1(図3(B))によって示される部分の位置である。視線L1は、デジタルカメラ140(例えば、基準点Cc)から特定位置Pa1に対応する部分(ここでは、対象装置300上の操作位置Pm1)へ向かう線である。一般的に、撮影画像IMG上の種々の位置Paに、デジタルカメラ140から位置Paに対応する部分へ向かう視線Lが対応付けられる。カメラ座標系Crcで表される視線Lと撮影画像IMG上の位置Paとの間の対応関係は、デジタルカメラ140の構成に応じて決まる。視線Lは、デジタルカメラ140の構成に応じて決まる種々の線であり得る(例えば、視線Lは、直線部分に加えて、曲がる部分を含み得る)。
位置Paに対応付けられる視線Lは、デジタルカメラ140の構成を示すパラメータを使用して算出されてよい。そのようなパラメータは、例えば、カメラ座標系Crcで表される被写体の三次元の座標を、撮影画像IMG内の被写体の位置を示す二次元の座標に変換するパラメータ(例えば、座標変換行列)であってよい。このようなパラメータは、内部パラメータとも呼ばれる。内部パラメータは、画角、レンズの歪み、などのデジタルカメラ140の構成に応じて、予め決定される。
撮影画像IMGは、デジタルカメラ140の撮影可能領域(すなわち、視野140v)の画像を示している。位置Paが撮影画像IMG内で変化する場合に、視線Lは、視野140v内で、種々に変化する。このように、内部パラメータは、撮影画像IMGとデジタルカメラ140の視野140vとの関係を定めている。内部パラメータを示すデータは、デジタルカメラ140の視野140vに関連する視野データの例である。以下、視野データDS(図1)が、デジタルカメラ140の内部パラメータを示していることとする。
端末装置200は、操作位置Pm1の座標を算出するために、対象装置300の表面上の複数の点のそれぞれの座標を示すモデル点群PCmを参照する。端末装置200は、視線L1と、モデル点群PCmによって表される対象装置300の表面と、の交点の座標を算出する。算出される座標が、操作位置Pm1を示している。
モデル点群PCmの座標は、モデル座標系Crmで表されている。端末装置200は、モデル座標系Crmの座標をカメラ座標系Crcの座標に変換することによって、カメラ座標系Crcで表される操作位置Pm1の座標を算出する。この座標変換には、モデル座標系Crmからカメラ座標系Crcへの変換を示す基底変換行列Tmc(図2(A))に対応付けられる座標変換行列(例えば、行列Tmcの逆行列)を使用可能である。
図3(C)は、基底変換行列Tmcの説明図である。或る座標系に複数の基底変換行列を順番に適用する場合、合成された基底変換行列は、各基底変換行列を順番に右に乗じて得られる行列と同じである。図3(C)に示すように、モデル座標系Crmからカメラ座標系Crcへの変換の行列Tmcは、座標系Crm、Crb、Crt、Crcの順番に基底ベクトルを変換する基底変換行列と同じである。図中のTbm-1は、Tbmの逆行列であり、モデル座標系Crmからロボット座標系Crbへの基底変換行列と同じである。行列Tbtは、ロボット座標系Crbからツール座標系Crtへの変換を示し、行列Ttcは、ツール座標系Crtからカメラ座標系Crcへの変換を示している。
図3(D)は、モデル座標系Crmの座標(Xm,Ym,Zm)とカメラ座標系Crcの座標(Xc,Yc,Zc)との関係の例を示している。図中のTmc-1は、図3(C)に示す基底変換行列Tmcの逆行列である。モデル点群PCmの座標は、図3(D)の式に従って、カメラ座標系Crcの座標に変換される。行列Tmcの算出には、図3(C)に示すように、行列Tbm、Tbt、Ttcが使用される。上述したように、行列Tbtは、算出可能であり、行列Ttcは、予め決められている。従って、行列Tbmを推定することによって、行列Tmcが推定される。
端末装置200は、ロボットアーム120を駆動することによって、ツール130に操作パネル310の操作位置Pm1を押下させる。この押下の後、端末装置200は、デジタルカメラ140に、画面320を撮影させる。撮影画像が操作位置Pm1の押下後に表示すべき適切な画面(例えば、スキャンの進行中を示す画面)を示す場合、端末装置200は、対象装置300の機能が適切であると判断する。
A4.テストのための処理:
対象装置300のテストのための処理は、第1処理(図4)と後述する第2処理(図12)とを含んでいる。第1処理は、準備処理であり、第2処理は、テスト処理である。本実施例では、複数個の対象装置300のそれぞれが、1つずつ順番に、テストされる。第1処理は、複数の対象装置300のために、1回実行される。第2処理は、対象装置300毎に実行される。
対象装置300のテストのための処理は、第1処理(図4)と後述する第2処理(図12)とを含んでいる。第1処理は、準備処理であり、第2処理は、テスト処理である。本実施例では、複数個の対象装置300のそれぞれが、1つずつ順番に、テストされる。第1処理は、複数の対象装置300のために、1回実行される。第2処理は、対象装置300毎に実行される。
A4-1.第1処理(準備処理):
図4は、第1処理の例を示すフローチャートである。作業者は、第1処理の開始時に、対象装置300の電源をオフにする。端末装置200のプロセッサ210は、第1プログラム231に従って、第1処理を進行する。S110では、キャリブレーションが行われる。キャリブレーションは、基底変換行列Tbmを推定する処理である。図5は、キャリブレーションの例を示すフローチャートである。
図4は、第1処理の例を示すフローチャートである。作業者は、第1処理の開始時に、対象装置300の電源をオフにする。端末装置200のプロセッサ210は、第1プログラム231に従って、第1処理を進行する。S110では、キャリブレーションが行われる。キャリブレーションは、基底変換行列Tbmを推定する処理である。図5は、キャリブレーションの例を示すフローチャートである。
S210では、プロセッサ210は、モデル点群PCmを取得済であるか否かを判断する。種々の場合に、S210の判断結果はNoである。そのような場合としては、例えば、第1処理が初めて実行される場合、取得済のモデル点群PCmのデータが削除された場合、などがある。S210の判断結果がNoである場合、S220で、プロセッサ210は、モデル点群PCmを取得する。
図6は、モデル点群PCmを取得する処理の例を示すフローチャートである。S310では、三次元センサ150が、対象装置300の表面を測定可能な新たな位置に移動される。図7は、三次元センサ150の測定位置の例を示す説明図である。図中には、ロボットアーム120とカメラシステム160と対象装置300とが示されている。本実施例では、三次元センサ150による測定は、複数の位置で行われる。図中には、測定位置の例を示す基準点Cc(a)、Cc(b)、Cc(c)が示されている。これらの基準点Cc(a)、Cc(b)、Cc(c)は、測定位置に配置されたカメラシステム160の基準点Ccを示している。各基準点Cc(a)、Cc(b)、Cc(c)において、三次元センサ150の視野150vは、対象装置300に向けられる。
S310(図6)では、三次元センサ150の位置と向き(すなわち、カメラシステム160の位置と向き)は、三次元センサ150による対象装置300の測定が可能な位置と向きとに、設定される。本実施例では、作業者が、カメラシステム160を移動させる(ロボットアーム120は、カメラシステム160の移動に追随して動くように構成される)。位置と向きとの調整が完了した場合、作業者は、操作部250を操作することによって、処理の進行の指示を入力する。これにより、プロセッサ210は、S315を開始する。
S315では、プロセッサ210は、三次元センサ150に対象装置300を含む空間を測定させることによって、三次元センサ150から点群データを取得する。取得される点群データは、三次元センサ150の視野150v内の対象装置300の表面のうち、三次元センサ150から視認可能な表面上の複数の点のそれぞれの座標を示している。取得される座標は、カメラ座標系Crcで表されている。この点群データをモデル点群PCmとして使用する場合、カメラ座標系Crcは、モデル座標系Crmを示している。
S320では、プロセッサ210は、取得された点群のデータを、モデル点群PCmのデータとして、記憶装置215(ここでは、不揮発性記憶装置230)に格納する。
S325では、プロセッサ210は、ロボット座標系Crbからカメラ座標系Crcへの変換を示す基底変換行列Tbcを算出する。ここで、Tbc=Tbt Ttcである。プロセッサ210は、ロボットアーム120の各ジョイントの駆動位置から、行列Tbtを算出する。プロセッサ210は、算出された行列Tbtに、予め決められた行列Ttcを乗じることによって、行列Tbcを算出する。
S330では、プロセッサ210は、算出された基底変換行列Tbcを示すデータを、基底変換行列Tbmを示すデータとして、記憶装置215(ここでは、不揮発性記憶装置230)に格納する。上述したように、S315の点群データは、カメラ座標系Crcで表されている。このカメラ座標系Crcは、モデル座標系Crmを示している。従って、行列Tbcは、行列Tbmを示している。
続くS340、S345、S355は、S310、S315、S325と、それぞれ同じである。プロセッサ210は、新たな測定位置で測定された新たな点群データを取得し(S340、S345)、新たな点群データの基底変換行列Tbcを算出する(S355)。
S360では、プロセッサ210は、基底変換行列Tmcを算出する。ここで、Tmc=Tbm-1 Tbcである。行列Tbmは、S330で格納された行列であり、行列Tbcは、S355で算出された行列である。プロセッサ210は、行列Tbmの逆行列を算出し、算出された逆行列に行列Tbcを乗じることによって、行列Tmcを算出する。
S365では、プロセッサ210は、S345で取得された点群データの座標を、S360で算出された行列Tmcを使用して、カメラ座標系Crcの座標からモデル座標系Crmの座標に変換する。この座標変換は、図3(D)に示すように、行列Tmcの逆行列を使用して行われる。この座標変換により、S345で取得された点群データは、モデル点群PCmのデータ(すなわち、S315で取得された点群データ)の座標系(すなわち、モデル座標系Crm)と同じ座表現で表される。
S370では、プロセッサ210は、S365で変換された点群データを、モデル点群PCmのデータに合成する。プロセッサ210は、合成済のモデル点群PCmのデータを、不揮発性記憶装置230に格納する。合成済のモデル点群PCmは、合成前の2個の点群を足し合わせたものである。
S375では、プロセッサ210は、終了条件が満たされるか否かを判断する。終了条件は、モデル点群PCmが対象装置300の表面を示す十分な密度の複数の点を含むことを示す任意の条件であってよい。例えば、終了条件は、合成された点群の総数が予め決められた閾値以上であることであってよい。これに代えて、終了条件は、予め決められた複数の配置設定のリストの全ての配置設定が処理されたことであってよい。終了条件が満たされない場合(S375:No)、プロセッサ210は、S340へ移行する。そして、プロセッサ210は、新たな点群データを処理する。終了条件が満たされる場合(S375:Yes)、プロセッサ210は、図6の処理、すなわち、図5のS220の処理を終了する。このように、S220では、プロセッサ210は、モデル点群PCmを取得し、基底変換行列Tbmを算出する。モデル点群PCmのデータは、対象装置300の形状の基準を示すデータとして、使用される。
S240では、プロセッサ210は、基底変換行列Tbmの算出後に、対象物体(ここでは、対象装置300)の位置が変更されたか否かを判断する。作業者は、対象装置300を、別の対象装置300に置換し得る(例えば、テスト済の対象装置300が、未テストの対象装置300に置換される)。この置換により、対象装置300の位置は、変化し得る。また、作業者は、テストのために、対象装置300の位置を調整し得る。
S240の判断方法は、種々の方法であってよい。本実施例では、作業者は、対象装置300の置換や位置の調整等により対象装置300の位置が変化し得る場合に、端末装置200の操作部250を操作することによって、位置が変化し得ることを示す位置変化情報を入力する。プロセッサ210は、行列Tbmの算出後に位置変化情報が入力される場合に、対象装置300の位置が変更されたと判断する(S240:Yes)。これに代えて、端末装置200には、対象装置300の位置を検出する位置センサが接続されてよい。そして、プロセッサ210は、位置センサからのデータを分析することによって、行列Tbmの算出後に、対象装置300の位置が変更されたか否かを判断してよい。
S240の判断結果がNoである場合、プロセッサ210は、図5の処理、すなわち、図4のS110の処理を終了する。第1処理(図4)が初めて実行される場合、通常は、S240の判断結果は、Noである。図5の処理で準備されるモデル点群PCmは、複数の対象装置300のテストに、共通に使用可能である。
図5の処理は、種々の環境下で実行され得る。S210の判断結果は、種々の場合に、Yesである。後述するように、図5のキャリブレーションは、テスト済の対象装置300が未テストの対象装置300に置換された後に、再び実行される。このように、今回のキャリブレーションが2回目以降のキャリブレーションである場合、S210の判断結果はYesであり得る。また、モデル点群PCmのデータは、対象装置300の立体的な形状を示すCADデータから予め生成されてよい(CADは、computer-aided designの略)。この場合、S210の判断結果はYesであり得る。S210の判断結果がYesである場合、S230で、プロセッサ210は、基底変換行列Tbmが算出済であるか否かを判断する。モデル点群PCmがCADデータから生成される場合、モデル点群PCmは取得済であり、かつ、行列Tbmは未算出であり得る。行列Tbmが未算出である場合(S230:No)、プロセッサ210は、S250へ移行する。行列Tbmが算出済である場合(S230:Yes)、プロセッサ210は、S240に移行する。S240の判断結果がYesである場合、プロセッサ210は、S250へ移行する。
S250では、プロセッサ210は、シーン点群PCsを取得する。図8は、シーン点群PCsを取得する処理の例を示すフローチャートである。シーン点群PCsは、対象装置300の表面上の複数の点の座標を示している。図8の処理は、以下の相違点を除いて、図6の処理と同じである。なお、図8の各ステップの符号は、図6の対応するステップの符号の末尾に文字「s」を付加したものである。例えば、S315sは、図6のS315に対応している。
(相違点1)点群データは、モデル点群PCmのデータではなく、シーン点群PCsのデータとして使用される。
(相違点2)S315sのカメラ座標系Crcは、モデル座標系Crmではなく、シーン座標系Crsとして使用される。
(相違点3)S330sでは、行列Tbcは、行列Tbmではなく、ロボット座標系Crbからシーン座標系Crsへの変換を示す基底変換行列Tbsとして使用される。
(相違点4)S360s、S365sでは、行列Tmcではなく、基底変換行列Tbsの逆行列と基底変換行列Tbcとの積で表される基底変換行列Tscが使用される(Tsc=Tbs-1 Tbc)。
これらの相違点を除いて、図8の各ステップの処理は、図6の対応するステップの処理と同じである。
(相違点1)点群データは、モデル点群PCmのデータではなく、シーン点群PCsのデータとして使用される。
(相違点2)S315sのカメラ座標系Crcは、モデル座標系Crmではなく、シーン座標系Crsとして使用される。
(相違点3)S330sでは、行列Tbcは、行列Tbmではなく、ロボット座標系Crbからシーン座標系Crsへの変換を示す基底変換行列Tbsとして使用される。
(相違点4)S360s、S365sでは、行列Tmcではなく、基底変換行列Tbsの逆行列と基底変換行列Tbcとの積で表される基底変換行列Tscが使用される(Tsc=Tbs-1 Tbc)。
これらの相違点を除いて、図8の各ステップの処理は、図6の対応するステップの処理と同じである。
S260(図5)では、プロセッサ210は、モデル点群PCmとシーン点群PCsとのマッチングによって、基底変換行列Tbmを算出する。ここで、Tbm=Tbs Tsmである。行列Tbsは、S250で算出される。行列Tsmは、シーン座標系Crsからモデル座標系Crmへの変換を示す基底変換行列である。この行列Tsmは、以下のように、算出可能である。モデル点群PCmによって表される対象装置300の形状は、シーン点群PCsによって表される対象装置300の形状と、同じである。従って、モデル点群PCmによって表される対象装置300を、シーン点群PCsによって表される対象装置300に一致するように、投影することができる。この投影は、座標変換の一種であり、回転と並進とを示す同次変換行列によって表すことが可能である。ここで、モデル点群PCmが、シーン点群PCsの取得時の対象装置300の配置(具体的には、位置と向き)と同じ配置の対象装置300の測定によって取得されたと仮定する。基底変換行列Tsmは、この仮定の下での基底変換行列であり、上述の投影を示す座標変換に対応付けられる基底変換行列である。例えば、基底変換行列Tsmは、図2(C)で説明した座標変換行列TCtbと基底変換行列Tbtとの間の関係と同様の関係に従って、投影を示す座標変換行列から算出される。
投影を示す座標変換行列(ひいては、基底変換行列Tsm)の算出方法は、投影済のモデル点群PCmとシーン点群PCsとの間で対象装置300が一致するように行列を算出する任意の方法であってよい。例えば、ベクトルペアマッチング(Vector Pair Matching)と呼ばれる方法が採用されてよい。ベクトルペアマッチングの方法によれば、3個の点によって形成される三次元のベクトルペアであって、特徴的なベクトルペアが、モデル点群PCmから抽出される。そして、シーン点群PCsから、特徴的なベクトルペアに類似するベクトルペアが、検出される。特徴的なベクトルペアと類似するベクトルペアとの間で位置を合せる姿勢変換パラメータ(すなわち、上記の投影を示す座標変換行列)が算出される。また、モデルベーストマッチング(Model-Based Matching)と呼ばれる方法が採用されてよい。モデルベーストマッチングの方法によれば、モデル点群PCmが幾何変換され、シーン点群PCsと直接照合されることで、投影を示す座標変換行列が決定される。
S260で算出される基底変換行列Tbmは、モデル点群PCmの取得時の対象装置300の位置と向きとがシーン点群PCsの取得時の位置と向きとそれぞれ同じであると仮定する場合のロボット座標系Crbからモデル座標系Crmへの変換を示している。この行列Tbmとモデル点群PCmとを組み合わせて使用することによって、シーン点群PCsの代わりにモデル点群PCmを使用することができる。
S270では、プロセッサ210は、S260による投影済のモデル点群PCmとシーン点群PCsとの間の差を示す第1評価値V1が第1閾値TH1を超えるか否かを判断する。第1評価値V1は、投影済のモデル点群PCmによって表される対象装置300と、シーン点群PCsによって表される対象装置300と、の間の違いの大きさを示している。このような評価値の算出方法は、種々の方法であってよい。本実施例では、プロセッサ210は、投影済のモデル点群PCmの複数の点のうちの対象装置300を示す複数の点のそれぞれに関して、シーン点群PCsの複数の点のうちの最も近い点との距離を算出する。投影済の対象装置300が、シーン点群PCsの対象装置300と一致する場合、各点の距離は、小さくなる。投影済の対象装置300とシーン点群PCsの対象装置300との間のズレが大きい場合、各点の距離は、大きくなる。プロセッサ210は、投影済の対象装置300を示す複数の点のそれぞれの距離の平均値を、評価値として算出する。評価値が小さいほど、投影済の対象装置300とシーン点群PCsの対象装置300との間のズレが小さい。
本実施例では、対象装置300(図1)の本体390に対する操作パネル310の回転位置は調整可能である。モデル点群PCmの測定時(図5:S220)とシーン点群PCsの測定時(図5:S250)との間で、操作パネル310の回転位置の差が大きい場合、第1評価値V1は大きい。第1閾値TH1は、回転位置の差が、対象装置300のテストに適する値よりも大きい場合に、第1評価値V1が第1閾値TH1を超えるように、予め実験的に決められる。第1評価値V1が第1閾値TH1以下であるような操作パネル310の回転位置の範囲は、回転位置の許容範囲を示している。
なお、モデル点群PCmとシーン点群PCsとは、対象装置300の表面とは異なる部分を示す複数の点(非対象点と呼ぶ)を含み得る。非対象点は、第1評価値V1の算出から除かれることが好ましい。非対象点を除く方法は、任意の方法であってよい。例えば、プロセッサ210は、モデル点群PCmの複数の点が分布する領域のうちの第1評価値V1の算出に使用すべき領域の選択を、作業者に許容してよい。作業者による領域の選択方法は、任意の方法であってよい。例えば、プロセッサ210は、モデル点群PCmの複数の点の立体図を、表示部240に表示する。作業者は、表示された領域のうち対象装置300を示す領域を、操作部250を操作することによって選択する。作業者による領域の選択(すなわち、点の選択)は、S270より前の種々の段階で行われてよい(例えば、S260とS270の間、または、S250とS260の間)。
第1評価値V1が第1閾値TH1以下である場合(S270:No)、シーン点群PCsの操作パネル310の回転位置は、許容範囲内である。この場合、プロセッサ210は、図5の処理、すなわち、図4のS110の処理を終了する。
第1評価値V1が第1閾値TH1を超える場合(S270:Yes)、シーン点群PCsの操作パネル310の回転位置は、許容範囲の外である。この場合、S280で、プロセッサ210は、報知処理を実行する。報知処理は、操作パネル310の回転位置が許容範囲の外であることを作業者に報知する任意の処理であってよい。例えば、プロセッサ210は、メッセージを表示部240に表示してよい。また、プロセッサ210は、図示しないスピーカから、警告音を出力してよい。S280の後、プロセッサ210は、図5の処理、すなわち、図4のS110の処理を終了する。なお、S280の報知処理が実行される場合、作業者は、第1処理(図4)を中止してよい。そして、作業者は、操作パネル310の回転位置を調整し、改めて第1処理を開始してよい。
S120-S140(図4)では、プロセッサ210は、予め決められたn個(nは、1以上の整数)の操作対象のそれぞれの撮影配置を決定する。撮影配置は、撮影対象を撮影するためのデジタルカメラ140の位置と向きを示している。操作対象は、対象装置300のテストで操作される部材である。本実施例では、後述するように、操作対象は、タッチパネル330とボタン340、350とを含んでいる。各撮影対象には、ゼロから始まる昇順の識別番号が予め割り振られている。S130は、i番(iは、ゼロ以上、n-1以下の整数)の操作対象の撮影配置を決定する処理である。プロセッサ210は、ゼロ番からn-1番まで1つずつ順番に、S130を実行する。
図9は、撮影配置の決定処理の例を示すフローチャートである。S410では、デジタルカメラ140の配置(ここでは、位置と向き)が、i番の操作対象の撮影に適する配置である目標配置に設定される。撮影に適する位置と向きは、i番の操作対象を撮影画像の中央部分に配置するような位置と向きである。
図10(A)は、デジタルカメラ140の目標配置の例を示す説明図である。図中には、ロボットアーム120とカメラシステム160と対象装置300とが示されている。デジタルカメラ140の位置と向きとは、デジタルカメラ140を含むカメラシステム160に固定されたカメラ座標系Crcによって、示すことが可能である。以下、i番の操作対象のための目標配置を示すカメラ座標系Crcを、カメラ座標系Crc(i)とも呼ぶ。図中には、目標配置をそれぞれ示すカメラ座標系Crc(a)、Crc(b)が示されている。
第1カメラ座標系Crc(a)は、画面320に表示されるスキャンボタン322のための目標配置を示している。この目標配置に配置されるデジタルカメラ140の視野140vは、スキャンボタン322に向けられる。図10(B)は、この目標配置で撮影される撮影画像IMGaの例を示している。図中には、撮影画像IMGaのうちの画面320を含む一部分が示されている。撮影画像IMGaは、画面320に表示されたスキャンボタン322の画像を含んでいる。
図10(A)の第2座標系Crc(b)は、ボタン340、350のための目標配置を示している。本実施例では、第2ボタン350が第1ボタン340の近くに配置されている。この目標配置は、第1ボタン340と第2ボタン350とに共通である。この目標配置に配置されるデジタルカメラ140の視野140vは、ボタン340、350に向けられる。図10(C)は、この目標配置で撮影される撮影画像IMGbの例を示している。図中には、撮影画像IMGbのうちのボタン340、350を含む一部分が示されている。
本実施例では、S410(図9)では、作業者が、カメラシステム160を移動することによって、デジタルカメラ140の位置と向き(すなわち、カメラシステム160の位置と向き)を、i番の操作対象の撮影に適する位置と向きとに、設定する(ロボットアーム120は、カメラシステム160の移動に追随して動くように構成される)。作業者は、デジタルカメラ140がi番の操作対象を撮影できるように、デジタルカメラ140による撮影画像を観察することによって、カメラシステム160の位置と向きとを調整してよい。位置と向きとの調整が完了した場合、作業者は、操作部250を操作することによって、処理の進行の指示を入力する。これにより、プロセッサ210は、S415へ移行する。
S415では、プロセッサ210は、基底変換行列Tbc(i)を算出する。基底変換行列Tbc(i)は、ロボット座標系Crbからi番のカメラ座標系Crc(i)(S410)への変換を示している。基底変換行列Tbc(i)の算出方法は、図6のS325の基底変換行列Tbcの算出方法と、同じである。
S420では、プロセッサ210は、基底変換行列Tmc(i)を算出する。基底変換行列Tmc(i)は、モデル座標系Crmからi番のカメラ座標系Crc(i)(S410)への変換を示している。ここで、Tmc(i)=Tbm-1 Tbc(i)である。行列Tbmは、図4のS110で算出される。
S425では、プロセッサ210は、算出された基底変換行列Tmc(i)を示すデータを、記憶装置215(ここでは、不揮発性記憶装置230)に格納する。そして、プロセッサ210は、図9の処理、すなわち、図4のS130の処理を終了する。
なお、図10(A)の第2座標系Crc(b)のように、1個の目標配置は、2以上の操作対象に共通であり得る。この場合、複数の操作対象の複数の行列Tmcは、同じ行列を示し得る。例えば、第1ボタン340に関連付けられる行列Tmcは、第2ボタン350に関連付けられる行列Tmcと同じである。複数の操作対象に同じ目標配置を関連付ける方法は、種々の方法であってよい。例えば、作業者は、図9のS410で、デジタルカメラ140を動かさずに、処理の進行の指示を端末装置200に入力してよい。また、S410では、プロセッサ210は、他の操作対象のために設定済の目標配置を選択する作業者の指示を、受け付けてよい。
n個の操作対象のそれぞれの撮影配置(ここでは、行列Tmc(i))が決定された後、S150-S170(図4)で、プロセッサ210は、n個の操作対象のそれぞれの撮影画像である対象画像を取得する。S160は、i番の操作対象のための処理である。S150-S170では、プロセッサ210は、ゼロ番からn-1番まで1つずつ順番に、S160を実行する。
S160では、プロセッサ210は、基底変換行列Tmc(i)(S130)に従ってロボットアーム120を駆動することにより、デジタルカメラ140をi番の目標配置に配置する。ロボットアーム120の幾何学的な形状には、基底変換行列Tbtが対応付けられる。ここで、Tbt=Tbm Tmc(i) Ttc-1である。行列Tbmは、S110(図4)で算出される。行列Tmc(i)は、S130(図4)で算出される。行列Ttc(すなわち、逆行列Ttc-1)は、予め決められている。プロセッサ210は、これらの行列を使用して、行列Tbtを算出する。プロセッサ210は、算出される行列Tbtに対応付けられる形状にロボットアーム120の形状がなるように、ロボットアーム120を制御する。なお、S160では、デジタルカメラ140の位置と向きとは、作業者によって、調整されてもよい。作業者は、デジタルカメラ140がi番の操作対象を撮影できるように、デジタルカメラ140による撮影画像を観察することによって、カメラシステム160の位置と向きとを調整してよい。
デジタルカメラ140の配置の後、プロセッサ210は、デジタルカメラ140に対象装置300を撮影させ、デジタルカメラ140から撮影画像のデータを取得する。撮影画像は、i番の操作対象を示している。プロセッサ210は、撮影画像の周辺部を切り落とすクロップ処理を実行する。本実施例では、作業者が、操作部250を操作することによって、クロップ処理によって抽出すべき領域を示す領域情報を入力する。抽出すべき領域は、i番の操作対象の画像を含む領域である。プロセッサ210は、入力される領域情報に従って、クロップ処理を実行する。以下、S160で取得されるi番の操作対象の画像を、対象画像IT(i)とも呼ぶ。プロセッサ210は、対象画像IT(i)のデータを、記憶装置215(ここでは、不揮発性記憶装置230)に格納する。なお、クロップ処理によって切り落とされる領域は、予め決められてよい。
n個の操作対象のそれぞれの対象画像が取得された後、S180で、プロセッサ210は、スクリプトを生成する。スクリプトは、テストの手順を示している。図11は、スクリプトSCの例を示す概略図である。本実施例では、スクリプトSCは、k個(kは1以上の整数)のコマンドのそれぞれの設定を示している。図中の1つの行が、1個のコマンドを示している。1個のコマンドは、1個の操作対象の操作を示している。1個のコマンドには、番号CNと、対象画像ITと、撮影配置CFと、操作方法MTと、判定画像IRとが、関連付けられる。
番号CNは、コマンドの実行順を示している。対象画像ITは、S160(図4)で取得される対象画像IT(i)を示している。この対象画像IT(i)によって示されるi番の操作対象が、コマンドの操作対象である。撮影配置CFは、S130(図4)で決定される行列Tmc(i)を示している。操作方法MTは、操作対象の操作方法を示している。本実施例では、操作方法MTは、「押下」に設定される。なお、「引き」、「回転」など、「押下」とは異なる操作方法が、採用されてよい。判定画像IRは、操作対象の操作の後の判定に使用される画像である。判定画像IR(u)は、u番のコマンドの操作によって得られる適切な結果を示している。例えば、画面320に表示されたスキャンボタン322の押下の後、画面320がスキャンの進行中を示す状態画像を表示すべきである場合、判定画像IRは、状態画像を表示する画面320を示す。また、第1ボタン340の押下の後、第1ボタン340のランプが点灯すべきである場合、判定画像IRは、点灯状態の第1ボタン340を示す。
図11の例では、1番のコマンドは、スキャンボタン322の操作を示し、2番と3番のコマンドは、第1ボタン340の操作を示し、4番のコマンドは、第2ボタン350の操作を示している。このように、スクリプトSCは、1個の操作対象の複数のコマンドを、含み得る。なお、複数のコマンドの間で操作対象が共通であっても、判定画像IRは、異なり得る。例えば、3番のコマンドの判定画像IR(3)は、2番のコマンドの判定画像IR(2)と異なり得る。また、各コマンドの撮影配置CFは、対象画像ITによって示されるi番の操作対象に関連付けられる行列Tmc(i)を示している。図10(A)、図10(B)で説明したように、ボタン340、350には、同じ目標配置が、関連付けられる。従って、第2ボタン350の行列Tmc(3)は、第1ボタン340の行列Tmc(2)と同じである。
S180(図4)では、プロセッサ210は、作業者の指示に応じて、スクリプトSCを生成する。作業者は、コマンド毎に、操作対象の識別番号と、操作方法MT(ここでは「押下」)と、判定画像IRのデータと、を指定する。プロセッサ210は、対象画像ITと撮影配置CFとを、入力される操作対象の識別番号(r番とする)に関連付けられる対象画像IT(r)と行列Tmc(r)とに決定する。判定画像IRのデータは、作業者によって予め準備される。全てのコマンドの情報CN、IT、CF、MT、IRの決定完了に応じて、プロセッサ210は、スクリプトSCを示すデータを記憶装置215(ここでは、不揮発性記憶装置230)に格納し、図4の処理を終了する。
A4-2.第2処理(テスト処理):
図12は、第2処理の例を示すフローチャートである。第1処理(図4)の後、第2処理が実行される。第2処理は、対象装置300の動作をテストする。作業者は、第2処理の開始時に、対象装置300の電源をオンにする。端末装置200のプロセッサ210は、第2プログラム232に従って、第2処理を進行する。S510では、プロセッサ210は、キャリブレーション処理を実行する。キャリブレーション処理は、図4のS110の処理(すなわち、図5の処理)と同じである。第1処理(図4)の実行後に、第2処理が初めて実行される場合、図5において、S210の判断結果はYesであり、S230の判断結果はYesである。S240の判断結果がNoである場合、プロセッサ210は、基底変換行列Tbmを変更せずに、図5の処理、すなわち、図12のS510の処理を終了する。
図12は、第2処理の例を示すフローチャートである。第1処理(図4)の後、第2処理が実行される。第2処理は、対象装置300の動作をテストする。作業者は、第2処理の開始時に、対象装置300の電源をオンにする。端末装置200のプロセッサ210は、第2プログラム232に従って、第2処理を進行する。S510では、プロセッサ210は、キャリブレーション処理を実行する。キャリブレーション処理は、図4のS110の処理(すなわち、図5の処理)と同じである。第1処理(図4)の実行後に、第2処理が初めて実行される場合、図5において、S210の判断結果はYesであり、S230の判断結果はYesである。S240の判断結果がNoである場合、プロセッサ210は、基底変換行列Tbmを変更せずに、図5の処理、すなわち、図12のS510の処理を終了する。
S515では、プロセッサ210は、不揮発性記憶装置230からスクリプトSCのデータを読み込む。
S520-S565では、プロセッサ210は、k個のコマンド(図11)のそれぞれを実行する。S525-S555は、j番(jは1以上、k以下の整数)のコマンドのための処理である。プロセッサ210は、1番からk番まで1つずつ順番に、S525-S555を実行する。
S525では、プロセッサ210は、スクリプトSC(図11)を参照して、j番のコマンドの撮影配置CFを取得する。ここで、j番のコマンドの操作対象の識別番号がq番であることとする。S525では、行列Tmc(q)が取得される。プロセッサ210は、行列Tmc(q)に対応する撮影配置で対象装置300が撮影済であるか否かを判断する。行列Tmc(q)が、処理済のコマンドの撮影配置CF(すなわち、行列Tmc)に含まれない場合、判断結果はNoである。この場合、S530で、プロセッサ210は、デジタルカメラ140を、行列Tmc(q)に対応する撮影配置に移動させる。
図13は、デジタルカメラ140の移動処理の例を示すフローチャートである。S610では、プロセッサ210は、ロボット座標系Crbからカメラ座標系Crcへの変換を示す基底変換行列Tbc(q)を算出する。ここで、Tbc(q)=Tbm Tmc(q)である。行列Tbmは、図12のS510で決定される。行列Tmc(q)は、S525で取得される。
S620では、プロセッサ210は、基底変換行列Tbc(q)に対応する撮影配置に、カメラシステム160を移動させる。ここで、行列Tbc(q)は、Tbc(q)=Tbt(q) Ttcの関係式で表現可能である。Tbt(q)は、Tbc(q)に関連付けられる基底変換行列Tbtである。この関係式から、行列Tbt(q)は、Tbt(q)=Tbc(q) Ttc-1の関係式で表される。行列Ttc(すなわち、逆行列Ttc-1)は、予め決められている。プロセッサ210は、この関係式に従って、行列Tbt(q)を算出する。プロセッサ210は、算出される行列Tbt(q)に対応付けられる形状にロボットアーム120の形状がなるように、ロボットアーム120を制御する。以上により、デジタルカメラ140は、基底変換行列Tbc(q)に対応する撮影配置に、配置される。そして、プロセッサ210は、図13の処理、すなわち、図12のS530の処理を終了する。
S535では、プロセッサ210は、デジタルカメラ140に対象装置300を撮影させることによって、デジタルカメラ140から撮影画像のデータを取得する。撮影画像は、q番の操作対象を示している。プロセッサ210は、撮影画像のデータを記憶装置215(ここでは、不揮発性記憶装置230)に格納する。そして、プロセッサ210は、S540へ移行する。
行列Tmc(q)に対応する撮影配置で対象装置300が撮影済である場合(S525:Yes)、プロセッサ210は、S530、S535をスキップして、S540へ移行する。
S540では、プロセッサ210は、撮影画像を使用して、q番の操作対象の位置である対応位置の三次元座標を決定する。図14は、対応位置を決定する処理の例のフローチャートである。S710では、プロセッサ210は、スクリプトSC(図11)を参照して、j番のコマンドの対象画像ITを取得する(q番の操作対象を示す対象画像IT(q)が取得される)。プロセッサ210は、画像認識(例えば、パターンマッチング)によって、撮影画像中の対象画像IT(q)の位置である特定位置Pa(q)を決定する。図10(B)、図10(C)には、特定位置の例が示されている。図10(B)の特定位置Pa1は、スキャンボタン322の位置を示している。図10(C)中では、特定位置Pa2は、第1ボタン340の位置を示し、特定位置Pa3は、第2ボタン350の位置を示している。
S720(図14)では、プロセッサ210は、撮影画像から、対象画像IT(q)に対応する部分画像を検出する(第1検出画像と呼ぶ)。プロセッサ210は、第1検出画像と対象画像IT(q)との間の差を示す第2評価値V2が第2閾値TH2を超えるか否かを判断する。第2評価値V2は、対象画像IT(q)によって示される操作対象の画像と、第1検出画像によって表される操作対象の画像と、の間の違いの大きさを示している。このような評価値の算出方法は、種々の方法であってよい。本実施例では、プロセッサ210は、対象画像IT(q)と第1検出画像との間の対応する位置での色値の差分の絶対値を、複数の画素位置で算出する。プロセッサ210は、算出される複数の絶対値の和を、第2評価値V2として算出する。第2評価値V2の算出に使用される複数の画素位置は、例えば、対象画像IT(q)に含まれる全部の画素の画素位置であってよく、対象画像IT(q)から予め選択された一部の複数の画素の画素位置であってよい。
本実施例では、対象装置300(図1)の本体390に対する操作パネル310の回転位置は調整可能である。対象画像IT(q)の撮影時(図4:S160)と撮影画像の撮影時(図12:S535)との間で、操作パネル310の回転位置の差が大きい場合、第1検出画像と対象画像IT(q)との間で、操作対象の画像の歪み(例えば、キーストーン歪み)の差が大きい。この結果、第2評価値V2は、大きい。第2閾値TH2は、回転位置の差が、対象装置300のテストに適する値よりも大きい場合に、第2評価値V2が第2閾値TH2を超えるように、予め実験的に決められる。第2評価値V2が第2閾値TH2以下であるような操作パネル310の回転位置の範囲は、回転位置の許容範囲を示している。
なお、第2評価値V2は、第1検出画像と対象画像IT(q)との間の操作対象の画像の差の大きさを示す種々の値であってよい。例えば、プロセッサ210は、正規化相互相関、ゼロ平均正規化相互相関、など、2枚の画像の間の相関を示す類似度を算出してよい。類似度が小さいほど、第1検出画像と対象画像IT(q)との間の差は大きい。S720では、プロセッサ210は、類似度が所定の類似度閾値を下回る場合に、画像の差が第2閾値TH2を超えると判断してよい(類似度閾値は、第2閾値TH2に対応する類似度を示している)。
第2評価値V2が第2閾値TH2以下である場合(S720:No)、シーン点群PCsの操作パネル310の回転位置は、許容範囲内である。この場合、プロセッサ210は、S740へ移行する。
第2評価値V2が第2閾値TH2を超える場合(S720:Yes)、シーン点群PCsの操作パネル310の回転位置は、許容範囲の外である。この場合、S730で、プロセッサ210は、報知処理を実行する。S730の報知処理は、操作パネル310の回転位置が許容範囲の外であることを作業者に報知する任意の処理であってよい。例えば、S730の報知処理は、図5のS280の報知処理と同じであってよい。S730の後、プロセッサ210は、S740へ移行する。なお、S730の報知処理が実行される場合、作業者は、第2処理(図12)を中止してよい。そして、作業者は、操作パネル310の回転位置を調整し、改めて第2処理を開始してよい。
S740では、プロセッサ210は、視野データDSを不揮発性記憶装置230から取得する。プロセッサ210は、視野データDSを使用して、撮影画像中の特定位置Pa(q)に対応するデジタルカメラ140の視線L(q)を決定する。図3(A)で説明したように、撮影画像IMG上の種々の位置Paに、デジタルカメラ140から位置Paに対応する部分へ向かう視線Lが対応付けられる。プロセッサ210は、視野データDS(本実施例では、デジタルカメラ140の内部パラメータ)を使用して、特定位置Pa(q)に対応する視線L(q)を示す視線データを生成する。視線データは、例えば、視線L(q)上の複数の点のそれぞれの座標を示している。視線L(q)は、カメラシステム160に固定されたカメラ座標系Crcで表される。
S750では、プロセッサ210は、モデル点群PCmの座標変換を、行列Tmc(q)を使用して実行する。行列Tmc(q)は、図12のS525でスクリプトSC(図11)から取得される。プロセッサ210は、図3(D)で説明した関係式に従って、座標を変換する。この座標変換により、モデル点群PCmの複数の点のそれぞれの座標は、カメラシステム160に固定されるカメラ座標系Crcの座標に変換される。
S760では、プロセッサ210は、視線L(q)と、変換済のモデル点群PCmによって表される対象装置300の表面と、の交点Pm(q)を算出する。交点Pm(q)は、対象装置300の表面上の位置であって特定位置Pa(q)に対応する位置を示している(以下、対応位置Pm(q)とも呼ぶ)。交点Pm(q)の算出方法は、種々の方法であってよい。本実施例では、プロセッサ210は、変換済のモデル点群PCmの複数の点のうち、視線L(q)に最も近い点を、交点Pm(q)として採用する。モデル点群PCmの複数の点の密度が十分に高い場合、視線L(q)に最も近い点は、交点Pm(q)の良い近似である。本実施例では、視線L(q)の視線データは、視線L(q)上の複数の点を示している。プロセッサ210は、視線データの点と変換済のモデル点群PCmの点とで構成される点ペアのうち、最小の2点間距離を有する点ペアを検索する。そして、プロセッサ210は、最小の2点間距離を有する点ペアを形成するモデル点群PCmの点を、交点Pm(q)として採用する。これに代えて、プロセッサ210は、変換済のモデル点群PCmの複数の点を使用して、対象装置300の表面を形成する複数の部分平面のそれぞれの近似平面を算出してよい。そして、プロセッサ210は、近似平面と視線L(q)との交点を算出してよい。部分平面の近似平面は、例えば、部分平面を形成する複数の点から算出される最小二乗平面であってよい。各部分平面を形成する複数の点は、作業者によって選択されてよい。
S770では、プロセッサ210は、交点Pm(q)での近似法線ベクトルを算出する。近似法線ベクトルは、対象装置300の表面の法線ベクトルを近似するベクトルである。近似法線ベクトルの算出方法は、種々の方法であってよい。本実施例の算出方法は、以下の通りである。プロセッサ210は、変換済のモデル点群PCmの複数の点のうち、交点Pm(q)を含む部分領域(例えば、交点Pm(q)からの距離が所定値以下である領域)に含まれる複数の点を使用する主成分分析を行う。プロセッサ210は、主成分分析によって、分散共分散行列の3個の固有ベクトルを算出する。プロセッサ210は、3個の固有ベクトルのうち、最小の固有値(すなわち、最小の分散)に対応付けられる固有ベクトルを、近似法線ベクトルとして採用する。
S770の後、プロセッサ210は、図14の処理、すなわち、図12のS540の処理を終了する。
S545では、プロセッサ210は、ロボットアーム120を制御することによって、ツール130に対応位置Pm(q)を押下させる。ここで、プロセッサ210は、ツール130を、近似法線ベクトル(図14:S770)に平行に移動させる。この結果、対応位置Pm(q)、すなわち、q番の操作対象は、操作対象に対しておおよそ垂直な方向から、ツール130によって押下される。
S550の処理は、S530の処理と同じである。プロセッサ210は、デジタルカメラ140を、行列Tmc(q)に対応する撮影配置に移動させる。
S555では、プロセッサ210は、デジタルカメラ140に対象装置300を撮影させることによって、デジタルカメラ140から撮影画像のデータを取得する。
S560では、プロセッサ210は、スクリプトSC(図11)を参照して、j番のコマンドの判定画像IR(j)のデータを取得する。プロセッサ210は、取得された判定画像IR(j)とS555で取得された撮影画像とを比較して、S545による操作の結果が適切であるか否かを判断する。判断方法は、撮影画像が判定画像IR(j)と同じ結果を示しているか否かを判断する種々の方法であってよい。本実施例では、プロセッサ210は、撮影画像から、判定画像IR(j)に対応する部分画像を検出する(第2検出画像と呼ぶ)。プロセッサ210は、第2検出画像と判定画像IR(j)との間の差を示す第3評価値が第3閾値を超えるか否かを判断する。第3評価値は、判定画像IR(j)によって示される適切な結果の画像と、第2検出画像によって表される実際の結果の画像と、の間の違いの大きさを示している。このような評価値の算出方法は、種々の方法であってよい。本実施例では、第3評価値の算出方法は、図14のS720の第2評価値V2の算出方法と同じである。第3閾値は、実際の結果が不適切である場合に、第3評価値が第3閾値を超えるように、予め実験的に決められる。プロセッサ210は、判断結果を示すデータを、記憶装置215(例えば、不揮発性記憶装置230)に格納する。そして、プロセッサ210は、S560を終了する。
k個のコマンドのそれぞれのS525-S560の完了に応じて、プロセッサ210は、第2処理を終了する。
準備処理(図4)の後、テスト済の対象装置300を未テストの対象装置300に置換する処理と、図12のテスト処理とが、交互に繰り返される。2回目以降のテスト処理において、S510のキャリブレーション、すなわち、図5の処理は、以下のように進行する。S210の判断結果はYesであり、S230の判断結果はYesである。対象装置300が置換されるので、S240の判断結果は、Yesである。S250では、プロセッサ210は、新たに配置された対象装置300を示すシーン点群PCsを取得する。S260では、プロセッサ210は、新たに取得されたシーン点群PCsを使用して、基底変換行列Tbmを算出する。この行列Tbmとモデル点群PCmとを組み合わせて使用することによって、新たなシーン点群PCsの代わりにモデル点群PCmを使用することができる。例えば、図12のS530(より具体的には、図13のS610)では、プロセッサ210は、キャリブレーションによって更新された行列Tbmを使用する。図12のS550(具体的には、図14のS750)では、プロセッサ210は、モデル点群PCmを使用する。シーン点群PCsの代わりにモデル点群PCmを使用する理由は、以下の通りである。上述したように、第1処理(図4)、すなわち、モデル点群PCmの取得は、対象装置300の電源がオフである状態で、行われる。一方、第2処理、すなわち、対象装置300のテストは、対象装置300の電源がオンである状態で行われる。この場合、画面320やランプなどの発光装置が点灯する。発光装置からの光は、三次元センサ150の測定誤差を増大し得る。すなわち、シーン点群PCsの座標は、モデル点群PCmの座標と比べて、大きな誤差を含み得る。交点Pm(q)の決定(図14:S760)でシーン点群PCsが使用される場合、不適切な交点Pm(q)が算出され得る。交点Pm(q)の決定でモデル点群PCmが使用される場合、不適切な交点Pm(q)の算出の可能性は、低減する。
なお、図11の撮影配置CFを示す行列Tmc(i)は、ロボット座標系Crbとモデル座標系Crmとの間の関係に依存せずに、モデル座標系Crmとカメラ座標系Crcとの間の関係を示している。従って、図12のS510のキャリブレーションで行列Tbmが更新された後も、行列Tmc(i)は、そのまま使用可能である。
以上のように、本実施例では、対象装置300は、タッチパネル330とボタン340、350とを有している。これらの部材330、340、350のそれぞれは、ユーザによって操作されるための操作部の例である。
また、端末装置200のプロセッサ210は、以下の処理を実行する。図12のS510、具体的には、図5のS250では、プロセッサ210は、操作部(ここでは、部材330、340、350)を含む対象装置300の表面を表すシーン点群PCsのデータを取得する(以下、シーン点群PCsのデータを対象三次元物体データとも呼ぶ)。上述したように、S250では、図8の処理が実行される。プロセッサ210は、図8のS315s、S345s、S370sを実行することによって、シーン点群PCsのデータを取得する。シーン点群PCsのデータは、三次元センサ150により測定される三次元点群に基づくデータである。
プロセッサ210は、図8のS325s、S330sで、基底変換行列Tbsを取得する。基底変換行列Tbsは、対象装置300の測定時の基底変換行列Tbcと同じである。行列Tbcは、ロボット座標系Crbからカメラ座標系Crcへの変換を示している。図2(C)に示すように、基底変換行列は、一方の座標系で見た他方の座標系の3個の基底ベクトルと原点の座標とによって、定められる。基底変換行列Tbcは、ロボット座標系Crbで見たカメラ座標系Crcの原点の座標を定めている。カメラ座標系Crcの原点は、カメラシステム160の位置を示している。このように、プロセッサ210は、S325s、S330sで、基底変換行列Tbsを表すデータ、すなわち、三次元センサ150の測定位置の座標を表すデータを取得する(以下、測定座標データとも呼ぶ)。
プロセッサ210は、図12のS535で、操作対象の画像を含む二次元画像の二次元画像データであってデジタルカメラ140により撮影される二次元画像データを取得する。S535の前のS530では、プロセッサ210は、デジタルカメラ140を撮影配置に移動させる。ここで、図13の処理が実行される。S610では、プロセッサ210は、基底変換行列Tbc(q)を算出する。上述したように、基底変換行列Tbc(q)は、ロボット座標系Crbで見たカメラ座標系Crcの原点の座標を定めている。カメラ座標系Crcの原点は、カメラシステム160の位置を示している。このように、プロセッサ210は、S610で、基底変換行列Tbc(q)を表すデータ、すなわち、デジタルカメラ140の撮影位置の座標を表すデータを取得する(以下、撮影座標データとも呼ぶ)。
図14のS740では、プロセッサ210は、デジタルカメラ140の視野140vに関連する視野データDSを取得する。S710では、プロセッサ210は、撮影画像内の操作対象を示す特定位置Pa(q)を表すデータを取得する(特定位置データとも呼ぶ)。
図12のS540、具体的には、図14のS760では、プロセッサ210は、対応位置Pm(q)を決定する。この決定のために、プロセッサ210は、上述した種々のパラメータを使用する。図12のS510、具体的には、図5のS260では、プロセッサ210は、対象三次元物体データ(ここでは、シーン点群PCsのデータ)と、測定座標データ(ここでは、Tbs)と、を使用するして、行列Tbmを決定する。図12のS530、具体的には、図13のS620では、プロセッサ210は、撮影座標データ(ここでは、Tbc(q))を使用して、カメラシステム160を移動させる。図12のS540、具体的には、図14のS740では、プロセッサ210は、視野データDSと特定位置データ(ここでは、Pa(q))とを使用して、視線L(q)を決定する。図12の処理では、プロセッサ210は、これらの情報を使用して、対応位置Pm(q)を決定する。対応位置Pm(q)は、モデル点群PCmによって表される対象装置300の表面上の位置であって、特定位置Pa(q)に対応する位置である。図12のS510、具体的には、図5のS260では、プロセッサ210は、モデル点群PCmによって表される対象装置300が、シーン点群PCsによって表される対象装置300に一致するように、基底変換行列Tbmを算出する。このTbmは、図13の処理(カメラの移動)で使用される。従って、対応位置Pm(q)は、対象三次元物体データ(ここでは、シーン点群PCsのデータ)によって表される対象装置300の表面上の同じ位置(すなわち、特定位置Pa(q)に対応する位置)を示している。
このように、プロセッサ210は、シーン点群PCsによって表される対象装置300の表面上の位置であって、特定位置Pa(q)に対応する対応位置Pm(q)を、適切に決定できる。
また、対応位置Pm(q)を決定する処理は、以下の処理を含んでいる。図12のS510、具体的には、図5のS260では、プロセッサ210は、モデル点群PCmのデータと、シーン点群PCsのデータと、のマッチングの結果を使用して、基底変換行列Tsmを決定する。基底変換行列Tsmは、モデル座標系Crmからシーン座標系Crsへの座標変換に対応付けられる。この座標変換は、モデル点群PCmの対象装置300をシーン点群PCsのデータのシーン座標系Crsに投影する。このように、基底変換行列Tsmは、上記の投影のための投影パラメータの例である。また、上述したように、モデル点群PCmは、複数の対象装置300のそれぞれのテストに、共通に使用される。このように、モデル点群PCmのデータは、対象装置300の基準である基準物体の表面を表す基準三次元物体データの例である。
プロセッサ210は、上述したように、対応位置Pm(q)の決定のために、測定座標データ(ここでは、Tbs)と、撮影座標データ(ここでは、Tbc(q))と、視野データDSと、特定位置データ(ここでは、Pa(q))と、を使用する。プロセッサ210は、さらに、図12のS510、具体的には、図5のS260で、基底変換行列Tbsと、モデル点群PCmのデータと、を使用する。従って、プロセッサ210は、シーン点群PCsがノイズを含む場合であっても、モデル点群PCmを使用して、対応位置Pm(q)を適切に決定できる。
また、図1に示すように、端末装置200は、ロボットアーム120と通信するように構成されている。ロボットアーム120は、操作部(例えば、部材330、340、350)との接触のための部材であるツール130と、ツール130を移動させる移動装置の例であるアーム122と、を有している。図12のS545では、端末装置200のプロセッサ210は、対応位置Pm(q)をツール130によって押下するようにロボットアーム120を制御する。このように、プロセッサ210は、ロボットアーム120に、対応位置Pm(q)に対応する操作部を押下させることができる。
また、プロセッサ210は、図12のS540、具体的には、図14のS770で、近似法線ベクトルを算出する。近似法線ベクトルは、対応位置Pm(q)での法線ベクトルを近似するベクトルである(ここで、法線ベクトルは、対象装置300の表面の法線ベクトルである)。図12のS545では、プロセッサ210は、近似法線ベクトルに平行にツール130を移動させることによって対応位置Pm(q)をツール130によって押下するように、ロボットアーム120を制御する。従って、プロセッサ210は、ロボットアーム120に、対応位置Pm(q)に対応する操作部を適切に押下させることができる。例えば、対象装置300の表面(より具体的には、操作部の表面)に対して斜めにツール130が移動する場合、ツール130が操作部に対して滑り得る。この結果、操作部が押下されない可能性がある。本実施例では、押下の失敗の可能性は、低減する。
また、図1で説明したように、対象装置300のボタン340、350は、それぞれ、物理的なボタンである。図11のスクリプトSCは、第1ボタン340を押下する2個のコマンド(2番、3番)を含んでいる。テスト処理(図12)では、プロセッサ210は、第1ボタン340の押下を、2回、実行する。1回目の押下のための処理では、S525の判断結果がNoである。プロセッサ210は、S530、S535で、撮影画像を取得する。2回目の押下のための処理では、S525の判断結果がYesである。プロセッサ210は、S540で、取得済の同じ撮影画像を使用して、対応位置Pm(q)を決定する。従って、1回目の押下と2回目の押下とのそれぞれでは、同じ対応位置Pm(q)が共通に使用される。第1ボタン340を押下するコマンドの総数が3以上である場合も、同じ対応位置Pm(q)が共通に使用される。このように、プロセッサ210は、ロボットアーム120に、物理的なボタン340を、複数回、適切に押下させることができる。
なお、プロセッサ210は、S540で、対応位置Pm(q)を示すデータを、記憶装置215(例えば、不揮発性記憶装置230)に格納してよい。そして、同じ操作部のための2回目以降のS540では、格納済のデータを参照して、対応位置Pm(q)を取得してよい。また、操作対象のボタンが画面320に表示されるボタン(例えば、スキャンボタン322)である場合、画面320内のボタンの位置は、対象装置300の操作に起因して変化し得る(例えば、画面のスクロールによって、ボタンの位置が移動し得る)。このように操作対象の位置が変化し得る場合、S525の判断結果に拘わらずに、プロセッサ210は、S530、S535で新たな撮影画像を取得することが好ましい。
また、図4のS130、具体的には、図9のS410では、プロセッサ210は、撮影位置の目標位置のユーザ(例えば、作業者)による設定を受け付ける。そして、図12のS530、S535では、プロセッサ210は、目標位置に従って調整される撮影位置で撮影される二次元画像データを取得する。このように、プロセッサ210は、適切な撮影位置で撮影される二次元画像データを取得できる。
また、図10(A)-図10(C)で説明したように、対象装置300のタッチパネル330と第1ボタン340とは、それぞれ、操作対象である。操作対象の総数nが、2以上である場合、図4のS130、具体的には、図9の処理は、操作対象毎に実行される。プロセッサ210は、タッチパネル330の撮影のための作業者による目標位置の設定を受け付ける。この目標位置で撮影される二次元画像データは、図10(B)の撮影画像IMGaのように、タッチパネル330の画像を含む二次元画像を示している。また、プロセッサ210は、第1ボタン340の撮影のための作業者による目標位置の設定を、受け付ける。この目標位置で撮影される二次元画像データは、図10(C)の撮影画像IMGbのように、第1ボタン340の画像を含む二次元画像を示している。このように、プロセッサ210は、第1の操作部の適切な第1の二次元画像データと、第2の操作部の適切な第2の二次元画像データと、を取得できる。
また、図10(A)、図10(C)で説明したように、対象装置300の第1ボタン340と第2ボタン350とは、それぞれ、操作対象である。そして、これらのボタン340、350には、同じ目標配置(すなわち、同じ撮影位置)が関連付けられる。この目標位置で撮影される二次元画像データは、図10(C)の撮影画像IMGbのように、第1ボタン340の画像と第2ボタン350の画像とを含んでいる。このように、図12のS535では、プロセッサ210は、第1ボタン340の画像と第2ボタン350の画像とを含む二次元画像の画像データを取得する。このように、プロセッサ210は、第1ボタン340の画像と第2ボタン350の画像を含む撮影画像の二次元画像データを使用可能である。例えば、図12のS525で説明したように、撮影の回数を低減可能である。
また、図1で説明したように、操作パネル310、ひいては、操作パネル310に設けられた操作部(ここでは、部材330、340、350)は、対象装置300の本体390に対して可動である。図5のS270では、プロセッサ210は、三次元センサ150による測定時に、操作部の位置(ここでは、回転位置)が許容範囲の外であるか否かを判断する。位置が許容範囲の外である場合(S270:Yes)、S280で、プロセッサ210は、操作部の位置が許容範囲の外であることの報知のための処理を行う。また、図14のS720では、プロセッサ210は、デジタルカメラ140による撮影時に、操作部の位置が許容範囲の外であるか否かを判断する。位置が許容範囲の外である場合(S720:Yes)、S730で、プロセッサ210は、操作部の位置が許容範囲の外であることの報知のための処理を行う。以上により、不適切な対応位置Pm(q)の決定の可能性は、低減する。
B.変形例:
(1)第1処理(すなわち、準備処理)と第2処理(すなわち、テスト処理)とは、上記実施例の処理に代えて、他の種々の処理であってよい。例えば、S310では、プロセッサ210が、ロボットアーム120を駆動することによって、カメラシステム160の位置と向きとを調整してよい。例えば、プロセッサ210は、予め決められた複数の配置設定を有する第1リストを参照してよい。配置設定は、位置と向きとを示している。プロセッサ210は、第1リストから未使用の配置設定を選択し、選択された配置設定に従ってカメラシステム160の位置と向きとを調整してよい。
(1)第1処理(すなわち、準備処理)と第2処理(すなわち、テスト処理)とは、上記実施例の処理に代えて、他の種々の処理であってよい。例えば、S310では、プロセッサ210が、ロボットアーム120を駆動することによって、カメラシステム160の位置と向きとを調整してよい。例えば、プロセッサ210は、予め決められた複数の配置設定を有する第1リストを参照してよい。配置設定は、位置と向きとを示している。プロセッサ210は、第1リストから未使用の配置設定を選択し、選択された配置設定に従ってカメラシステム160の位置と向きとを調整してよい。
(2)図9のS410では、プロセッサ210が、ロボットアーム120を駆動することによって、カメラシステム160の位置と向きとを調整してよい。例えば、プロセッサ210は、カメラシステム160の移動と、デジタルカメラ140による撮影と、撮影画像からのi番の操作対象の検出とを、撮影画像からi番の操作対象が検出されるまで繰り返してよい。カメラシステム160の移動の処理では、プロセッサ210は、予め決められた複数の配置設定を有する第2リストから未使用の配置設定を選択し、選択された配置設定に従ってカメラシステム160の位置と向きとを調整してよい。撮影画像からの操作対象の検出処理では、プロセッサ210は、i番の操作対象を示す基準画像を使用するパターンマッチングによって、操作対象を検出してよい。
(3)図5のS270、S280と、図14のS720、S730と、のうちの一方、または、両方が、省略されてよい。
(4)図14のS770では、プロセッサ210は、モデル点群PCmに代えて、シーン点群PCsを使用して、近似法線ベクトルを算出してよい。なお、S770は省略されてよい。そして、図12のS545では、ツール130による対応位置Pm(q)の押下方向は、任意の方向であってよい。例えば、プロセッサ210は、ツール130の現行の位置から、対応位置Pm(q)に向かって真っ直ぐに、ツール130を移動させてよい。
(5)図14のS740で、視線L(q)の決定方法は、デジタルカメラ140の内部パラメータを示す視野データDSを使用する方法に限らず、他の任意の方法であってよい。例えば、撮影画像IMG(図3(A))上の位置Paと、視線Lを示すパラメータと、の対応関係が、予め決められてよい(位置視線対応関係と呼ぶ)。視線Lを示すパラメータは、例えば、視線L上の点の座標と、視線Lに平行なベクトルとの組み合わせであってよい。プロセッサ210は、位置視線対応関係を参照して、特定位置Pa(q)に対応する視線L(q)を決定してよい。位置視線対応関係も、内部パラメータと同様に、撮影画像IMGとデジタルカメラ140の視野140vとの関係を定めている。従って、位置視線対応関係を示すデータは、視野に関連する視野データの例である。
(6)図11の実施例では、第1ボタン340と第2ボタン350とに同じ撮影配置CFが関連付けられている。これに代えて、全ての操作対象の間で、撮影配置CFが互いに異なってよい。
(7)図12のS550での撮影配置は、S530での撮影配置と異なってよい。例えば、プロセッサ210は、第1ボタン340が操作された後に、画面320に表示される画像が適切であるか否かを判断してよい。この場合、S550、S555では、デジタルカメラ140は、第1ボタン340に代えて、画面320を撮影することが好ましい。スクリプトSC(図10)は、S530のための撮影配置CFとは別に、S550のための撮影位置を示すことが好ましい。
(8)モデル点群PCmは、対象装置300の設計図(例えば、CADデータ)から予め生成されてよい。この場合、モデル座標系Crmとしては、設計図からのモデル点群PCmの生成時に使用された座標系を採用可能である。また、図14の処理では、モデル点群PCmに代えて、シーン点群PCsが使用されてよい。すなわち、プロセッサ210は、モデル点群PCmによって表される対象装置300の表面ではなく、シーン点群PCsによって表される対象装置300の表面を使用して、対応位置Pm(q)を決定してよい。
(9)対象装置300の操作部は、タッチパネル330とボタン340、350とに限らず、ユーザによって操作されるための任意の部材であってよい。例えば、操作部は、ダイアル、レバー、スライダなど、押下とは異なる操作を受け付ける装置であってよい。そして、ロボットアーム120のエンドエフェクタの構成は、ツール130(具体的には、指)の構成に限らず、操作部の操作に適する任意の構成であってよい。例えば、エンドエフェクタは、複数の指を有するハンド、吸盤など、他の種々の種類の装置であってよい。ハンドは、操作部を引くことができる。また、ハンドは、操作部を回転させることができる。吸盤は、操作部を引くことができる。
(10)対応位置Pm(q)は、点に限らず、操作部の位置に関連する種々の情報を示してよい。例えば、対応位置Pm(q)は、領域を示してよい。操作部が、矩形状のタッチパネルである場合に、対応位置Pm(q)は、タッチパネルの4個の角の位置を示してよい。
(11)図12のS545-560は、省略されてよい。この代わりに、S540で決定された対応位置Pm(q)のデータを記憶装置215(例えば、不揮発性記憶装置230)に格納する処理が追加されてよい。対応位置Pm(q)は、操作に限らず、他の種々の処理に使用可能である。例えば、対象装置300の製造時に、操作部にステッカーなどの他の部材が固定される場合がある。対応位置Pm(q)の座標は、他の部材の固定位置として使用可能である。
(12)デジタルカメラ140と三次元センサ150と対象装置300とのそれぞれの向きは、予め決められてよい。そして、プロセッサ210は、デジタルカメラ140と三次元センサ150と対象装置300とのそれぞれの向きを変更せずに、対象装置300に対するデジタルカメラ140と三次元センサ150とのそれぞれの相対的な位置を調整することによって、対応位置Pm(q)を決定してよい。例えば、対象装置300は、移動可能な支持装置によって支持されてよい。ここで、支持装置は、対象装置300が予め決められた向きを向いた状態で対象装置300を支持するように構成されてよい。
(13)三次元物体データは、三次元点群に限らず、複数の点を含む種々のデータであってよい。例えば、三次元物体データは、物体の表面を表すメッシュデータであってよい。メッシュデータは、複数の点と、点と点とを接続する複数の辺と、複数の辺で囲まれる複数の面と、によって三次元の形状を示すデータであり、ポリゴンデータとも呼ばれる。メッシュデータは、三次元センサにより測定される三次元点群に基づいて生成されてよい。メッシュデータが使用される場合、図14のS760では、プロセッサ210は、メッシュデータによって示される面と、視線L(q)と、の交点を算出してよい。
(14)処理対象の物体である対象物体は、複合機に代えて、プリンタ、ミシン、カッティングマシーン、スキャナ、スマートフォンなど、任意の製品であってよい。また、操作部は、対象物体に対して移動可能な装置ではなく、対象物体に固定されてよい(ただし、操作のための動きは、許容される)。
(15)三次元物体データを処理する処理装置の構成は、図1の端末装置200の構成に代えて、他の種々の構成であってよい。例えば、ネットワークを介して互いに通信可能な複数の装置(例えば、コンピュータ)が、処理装置によるデータ処理の機能を一部ずつ分担して、全体として、データ処理の機能を提供してもよい(これらの装置を備えるシステムが処理装置に対応する)。例えば、第1処理装置が第1処理(図4)を実行し、第2処理装置が第2処理(図12)を実行してよい。
上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、図14の対応位置Pm(q)の決定の処理は、専用のハードウェア回路によって実行されてよい。
また、本発明の機能の一部または全部がコンピュータプログラムで実現される場合には、そのプログラムは、コンピュータ読み取り可能な記録媒体(例えば、一時的ではない記録媒体)に格納された形で提供することができる。プログラムは、提供時と同一または異なる記録媒体(コンピュータ読み取り可能な記録媒体)に格納された状態で、使用され得る。「コンピュータ読み取り可能な記録媒体」は、メモリーカードやCD-ROMのような携帯型の記録媒体に限らず、各種ROM等のコンピュータ内の内部記憶装置や、ハードディスクドライブ等のコンピュータに接続されている外部記憶装置も含み得る。
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。
120…ロボットアーム、121…基部、122…アーム、123…端部、130…ツール、140…デジタルカメラ、140v…視野、150…三次元センサ、150v…視野、160…カメラシステム、200…端末装置、210…プロセッサ、215…記憶装置、220…揮発性記憶装置、230…不揮発性記憶装置、231…第1プログラム、232…第2プログラム、240…表示部、250…操作部、270…通信インタフェース、300…対象装置、310…操作パネル、320…画面、321…コピーボタン、322…スキャンボタン、323…プリントボタン、330…タッチパネル、340…第1ボタン、350…第2ボタン、390…本体
Claims (10)
- コンピュータを有する処理装置のコンピュータプログラムであって、
操作部を含む対象物体の表面を表す対象三次元物体データであって三次元センサにより測定される三次元点群に基づく前記対象三次元物体データと、前記三次元センサの測定位置の座標を表す測定座標データと、を取得する第1取得機能と
前記操作部の画像を含む二次元画像の二次元画像データであってデジタルカメラにより撮影される前記二次元画像データと、前記デジタルカメラの撮影位置の座標を表す撮影座標データと、前記デジタルカメラの視野に関連する視野データと、前記二次元画像内の特定位置であって前記操作部を示す前記特定位置を表す特定位置データと、を取得する第2取得機能と、
前記対象三次元物体データと、前記測定座標データと、前記撮影座標データと、前記視野データと、前記特定位置データと、を使用して、前記対象三次元物体データによって表される前記対象物体の前記表面上の位置であって前記特定位置に対応する前記位置である対応位置を決定する位置決定機能と、
をコンピュータに実現させる、コンピュータプログラム。 - 請求項1に記載のコンピュータプログラムであって、
前記位置決定機能は、
前記対象物体の基準である基準物体の表面を表す基準三次元物体データと、前記対象三次元物体データと、のマッチングの結果を使用して、前記基準物体を前記対象三次元物体データの座標系に投影する投影パラメータを決定する機能と、
前記投影パラメータと、前記基準三次元物体データによって表される前記基準物体の前記表面と、前記測定座標データと、前記撮影座標データと、前記視野データと、前記特定位置データと、を使用して、前記対応位置を決定する機能と、
を含む、コンピュータプログラム。 - 請求項1または2に記載のコンピュータプログラムであって、
前記処理装置は、前記操作部との接触のための第1部材と前記第1部材を移動させる移動装置とを有するロボットと通信するように構成されており、
前記コンピュータプログラムは、さらに、
前記対応位置を前記第1部材によって押下するように前記ロボットを制御する押下機能をコンピュータに実現させる、
コンピュータプログラム。 - 請求項3に記載のコンピュータプログラムであって、
前記押下機能は、
前記対象物体の前記表面の法線ベクトルであって前記対応位置での前記法線ベクトルを近似する近似法線ベクトルを算出する機能と、
前記近似法線ベクトルに平行に前記第1部材を移動させることによって前記対応位置を前記第1部材によって押下するように、前記ロボットを制御する機能と、
を含む、コンピュータプログラム。 - 請求項3または4に記載のコンピュータプログラムであって、
前記操作部は、物理的なボタンであり、
前記コンピュータプログラムは、前記押下機能を、複数回、コンピュータに実現させるように構成されており、
複数回の前記押下機能のそれぞれでは、前記対応位置が共通に使用される、
コンピュータプログラム。 - 請求項1から5のいずれかに記載のコンピュータプログラムであって、さらに、
前記撮影位置の目標位置のユーザによる設定を受け付ける受付機能をコンピュータに実現させ、
前記第2取得機能は、前記目標位置に従って調整される前記撮影位置で撮影される前記二次元画像データを取得する、
コンピュータプログラム。 - 請求項6に記載のコンピュータプログラムであって、
前記対象物体は、第1の操作部と第2の操作部とを含み、
前記受付機能は、
前記第1の操作部の画像を含む第1の二次元画像の第1の二次元画像データの撮影のための第1の撮影位置の第1の目標位置の前記ユーザによる設定を受け付ける機能と、
前記第2の操作部の画像を含む第2の二次元画像の第2の二次元画像データの撮影のための第2の撮影位置の第2の目標位置の前記ユーザによる設定を受け付ける機能と、
を含む、コンピュータプログラム。 - 請求項6に記載のコンピュータプログラムであって、
前記対象物体は、第1の操作部と第2の操作部とを含み、
前記二次元画像データは、前記第1の操作部の画像と前記第2の操作部の画像とを含む前記二次元画像の画像データである、
コンピュータプログラム。 - 請求項1から8のいずれかに記載のコンピュータプログラムであって、
前記操作部は、前記対象物体に対して移動可能であり、
前記コンピュータプログラムは、さらに、
前記三次元センサによる測定時、または、デジタルカメラによる撮影時に、前記操作部の位置が許容範囲の外である場合に、前記操作部の前記位置が前記許容範囲の外であることの報知のための処理を行う機能を、コンピュータに実現させる、
コンピュータプログラム。 - 処理装置であって、
操作部を含む対象物体の表面を表す対象三次元物体データであって三次元センサにより測定される三次元点群に基づく前記対象三次元物体データと、前記三次元センサの測定位置の座標を表す測定座標データと、を取得する第1取得部と
前記操作部の画像を含む二次元画像の二次元画像データであってデジタルカメラにより撮影される前記二次元画像データと、前記デジタルカメラの撮影位置の座標を表す撮影座標データと、前記デジタルカメラの視野に関連する視野データと、前記二次元画像内の特定位置であって前記操作部を示す前記特定位置を表す特定位置データと、を取得する第2取得部と、
前記対象三次元物体データと、前記測定座標データと、前記撮影座標データと、前記視野データと、前記特定位置データと、を使用して、前記対象三次元物体データによって表される前記対象物体の前記表面上の位置であって前記特定位置に対応する前記位置である対応位置を決定する位置決定部と、
を備える、処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022054370A JP2023146927A (ja) | 2022-03-29 | 2022-03-29 | コンピュータプログラム、および、端末装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022054370A JP2023146927A (ja) | 2022-03-29 | 2022-03-29 | コンピュータプログラム、および、端末装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023146927A true JP2023146927A (ja) | 2023-10-12 |
Family
ID=88286641
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022054370A Pending JP2023146927A (ja) | 2022-03-29 | 2022-03-29 | コンピュータプログラム、および、端末装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2023146927A (ja) |
-
2022
- 2022-03-29 JP JP2022054370A patent/JP2023146927A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5257335B2 (ja) | 3次元視覚センサにおける計測有効領域の表示方法および3次元視覚センサ | |
US10571254B2 (en) | Three-dimensional shape data and texture information generating system, imaging control program, and three-dimensional shape data and texture information generating method | |
JP5210203B2 (ja) | 画像の差分による高精度ステレオカメラキャリブレーション | |
JP4911230B2 (ja) | 撮影装置、並びに制御プログラム及び制御方法 | |
US20160086343A1 (en) | Contour line measurement apparatus and robot system | |
JP6594129B2 (ja) | 情報処理装置、情報処理方法、プログラム | |
JPH09187038A (ja) | 3次元形状抽出装置 | |
CN111336948B (zh) | 基于成像平面转换的非标定手持式廓形检测方法及装置 | |
JP2016170050A (ja) | 位置姿勢計測装置、位置姿勢計測方法及びコンピュータプログラム | |
JP4095320B2 (ja) | センサ較正装置、センサ較正方法、プログラム、記憶媒体 | |
WO2018168757A1 (ja) | 画像処理装置、システム、画像処理方法、物品の製造方法、プログラム | |
KR20220164771A (ko) | 스캐닝 시스템 및 그것의 교정 | |
JP5198078B2 (ja) | 計測装置および計測方法 | |
CN112109069A (zh) | 机器人示教装置以及机器人*** | |
JPH06249615A (ja) | 位置検出方法 | |
CN112767479A (zh) | 位置信息检测方法、装置、***及计算机可读存储介质 | |
JP2023146927A (ja) | コンピュータプログラム、および、端末装置 | |
US20220331972A1 (en) | Robot Image Display Method, Recording Medium, And Robot Image Display System | |
JP4077755B2 (ja) | 位置検出方法、その装置及びそのプログラム、並びに、較正情報生成方法 | |
CN112643718B (zh) | 图像处理设备及其控制方法和存储其控制程序的存储介质 | |
JP7228070B1 (ja) | 点群データ合成装置、点群データ合成プログラム、点群データ合成方法及び点群データ合成システム | |
WO2022172471A1 (ja) | 支援システム、画像処理装置、支援方法およびプログラム | |
KR102679017B1 (ko) | 점군 데이터 합성 장치, 점군 데이터 합성 프로그램을 기록한 비일시적인 컴퓨터 판독 가능 매체, 점군 데이터 합성 방법 및 점군 데이터 합성 시스템 | |
JPH0949714A (ja) | 3次元形状抽出装置 | |
JP2023173018A (ja) | カメラのキャリブレーション状態を可視化する方法、システム、及び、コンピュータープログラム |