以下、本開示の実施の形態を図面に基づいて詳細に説明する。なお、以下に説明する種々の実施形態において、同様の要素には同じ符号を付し、重複する説明を省略する。また、以下の説明においては、便宜上、ロボット座標系CRのx軸プラス方向を右方、y軸プラス方向を後方、z軸プラス方向を上方として言及する。
図1を参照して、一実施形態に係るプログラミング装置10について説明する。プログラミング装置10は、プロセッサ12、システムメモリ14、ワークメモリ16、入力/出力インターフェース(I/Oインターフェース)18、データ入力部20、及び表示部22を備える。
プロセッサ12は、システムメモリ14、ワークメモリ16、及びI/Oインターフェース18と、バス24を介して通信可能に接続されており、これらの要素と通信しつつ、後述する各種プロセスを実行する。
システムメモリ14は、電気的に消去・記録可能な不揮発性メモリであり、例えば、EEPROM(登録商標)等から構成される。システムメモリ14は、後述する各種プロセスを実行するのに要する定数、変数、設定値、コンピュータプログラム等を、プログラミング装置10の非動作時にも失われないように記録している。
ワークメモリ16は、プロセッサ12が各種プロセスを実行するのに要するデータを一時的に保管する。また、ワークメモリ16には、システムメモリ14に記録されている定数、変数、設定値、コンピュータプログラム等が適宜展開され、プロセッサ12は、ワークメモリ16に展開されたデータを、各種プロセスを実行するために利用する。
I/Oインターフェース18は、データ入力部20と通信可能に接続され、プロセッサ12からの指令の下、データ入力部20からデータを受信する。また、I/Oインターフェース18は、表示部22と通信可能に接続され、プロセッサ12からの指令の下、表示部22に画像データを送信する。
I/Oインターフェース18は、例えばイーサネットポート又はUSBポート等から構成され、データ入力部20及び表示部22と有線で通信してもよい。又は、I/Oインターフェース18は、Wi−Fi等の無線LANを介して、表示部22及びデータ入力部20と無線で通信してもよい。
データ入力部20は、例えばキーボード、タッチパネル、又はマウスから構成され、オペレータは、データ入力部20を操作することによって、データを入力できる。データ入力部20は、入力されたデータを、I/Oインターフェース18を介して、プロセッサ12に送信する。
表示部22は、例えばCRT、液晶ディスプレイ(LCD)、又は有機ELディスプレイから構成され、I/Oインターフェース18から送信された画像データを受信し、オペレータが視認可能な画像として表示する。
プログラミング装置10は、ロボット102によって撮像部104及びワーク150を相対的に移動し、該撮像部104によって該ワーク150を撮像する動作プログラムを生成する。
以下、図2を参照して、実空間におけるロボットシステム100の一例について説明する。ロボットシステム100は、ロボット102及び撮像部104を備える。ロボット102は、垂直多関節ロボットであって、ロボットベース106、旋回胴108、ロボットアーム110、及び手首部112を有する。ロボットベース106は、実空間の作業セルの床に固定される。
旋回胴108は、ロボットベース106に鉛直軸周りに回動可能に設けられる。ロボットアーム110は、旋回胴108に回動可能に連結された上腕部116と、該上腕部116の先端に回動可能に連結された下腕部118とを有する。手首部112は、下腕部118の先端に連結され、撮像部104を回動可能に支持する。
ロボット102に対して、ロボット座標系CRが設定される。ロボット102は、該ロボット座標系CRを基準として、ロボット102の各可動要素(すなわち、旋回胴108、上腕部116、下腕部118、手首部112)を動作させる。例えば、ロボット座標系CRのz軸は、実空間の鉛直方向に平行に配置され、旋回胴108は、ロボット座標系CRのz軸周りに回動される。
一方、ロボット102の手先部(本実施形態では、撮像部104)に対して、ツール座標系CTが設定される。このツール座標系CTは、ロボット座標系CRにおける撮像部104の位置及び姿勢を規定する座標系である。
ロボット102は、撮像部104の位置及び姿勢を、ツール座標系CTによって規定される位置及び姿勢に一致させるように、ロボット座標系CRにおいて旋回胴108、ロボットアーム110、及び手首部112を動作させる。
撮像部104は、手首部112の先端に連結されている。撮像部104は、例えば視覚センサであって、CCD又はCMOS等の撮像センサと、フォーカスレンズ等の光学系とを有する。撮像部104は、ワーク150等の物体を撮像し、該ワーク150の画像を取得する。
撮像部104に対して、センサ座標系CSが設定される。例えば、センサ座標系CSのz軸方向は、撮像部104の視線の方向と一致するように、設定される。撮像部104の視線とは、撮像部104の光学系に入射する光の光軸に一致する。
本実施形態においては、ツール座標系CTとセンサ座標系CSとは、既知である所定の位置関係となっている。具体的には、ツール座標系CTのx−y平面と、センサ座標系CSのx−y平面とが、互いに平行になっている。
ロボットシステム100は、ワーク150の複数の箇所を、撮像部104によってそれぞれ撮像する。図2に示す例においては、ワーク150は、本体部152と、該本体部152から突出するように設けられた複数の部材154、156、158、160、162、164、及び166とを有する。
より具体的には、本体部152は、上端面168と、該上端面168と直交し、該上端面168から下方へ延在する後端面170及び右端面172を有する。部材154、156及び158は、上端面168から上方へ突出している。部材160及び162は、後端面170から後方へ突出している。部材164及び166は、右端面172から右方へ突出している。
以下、オペレータが、複数の部材154、156、158、160、162、164、及び166のうち、部材154、156、158及び160のみを、撮像部104の撮像対象箇所とする場合について説明する。
ロボット102は、部材154、156、158及び160を、撮像部104によって、所定の順序で撮像する。一例として、ロボット102は、撮像部104を移動させて、該撮像部104をワーク150に対して第1の撮像位置に位置決めする。
撮像部104がワーク150に対して第1の撮像位置に配置されたとき、部材154が撮像部104の視野内に入り、該部材154を該撮像部104によって撮像可能となる。そして、撮像部104は、部材154を撮像する。
次いで、ロボット102は、撮像部104を移動させて、該撮像部104をワーク150に対して第2の撮像位置に位置決めする。撮像部104がワーク150に対して第2の撮像位置に配置されたとき、部材156が撮像部104の視野内に入り、該部材156を該撮像部104によって撮像可能となる。そして、撮像部104は、部材156を撮像する。
次いで、ロボット102は、撮像部104を移動させて、該撮像部104をワーク150に対して第3の撮像位置に位置決めする。撮像部104がワーク150に対して第3の撮像位置に配置されたとき、部材158が撮像部104の視野内に入り、該部材158を該撮像部104によって撮像可能となる。そして、撮像部104は、部材158を撮像する。
次いで、ロボット102は、撮像部104を移動させて、該撮像部104をワーク150に対して第4の撮像位置に位置決めする。撮像部104がワーク150に対して第4の撮像位置に配置されたとき、部材160が撮像部104の視野内に入り、該部材160を該撮像部104によって撮像可能となる。そして、撮像部104は、部材160を撮像する。
こうして、ロボットシステム100は、ロボット102によって撮像部104を順次移動し、該撮像部104によって撮像対象箇所の部材154、156、158及び160を順次撮像する一連の動作を実行する。
本実施形態に係るプログラミング装置10は、このようなロボットシステム100の一連の動作の動作プログラムを生成する。以下、図3を参照して、プログラミング装置10の機能の一例について説明する。図3に示すフローは、プログラミング装置10が起動されたときに、開始する。
ステップS1において、プロセッサ12は、ワークモデル150M、ロボットモデル102M、及び撮像部モデル104Mを仮想空間200に配置する。このときの仮想空間200の一例を図4に示す。
なお、本稿においては、実空間における構成要素の名称が「XX」であった場合、その構成要素の仮想空間200におけるモデルを「XXモデル」として言及する。例えば、実空間における「ロボットベース」のモデルは、「ロボットベースモデル」として言及される。また、本実施形態においては、「XXモデル」は、いずれも3次元モデルである。
プロセッサ12は、オペレータの入力操作に応じて、仮想空間200においてロボットモデル102Mを配置する。ロボットモデル102Mは、図2に示すロボット102をモデル化した3次元コンピュータグラフィックス(CG)であって、ロボットベースモデル106M、旋回胴モデル108M、ロボットアームモデル110M、及び手首部モデル112Mを有する。
一例として、システムメモリ14は、ロボットモデル102Mを含む、複数種類のロボットモデルを、予め記憶する。プロセッサ12は、システムメモリ14に記憶された複数種類のロボットモデルをリストの形態で表した画像データを生成し、表示部22に表示させる。オペレータは、データ入力部20を操作して、表示部22に表示されたリストの中から、所望のロボットモデルを選択する。
オペレータが、図4に示すロボットモデル102Mを選択すると、データ入力部20は、オペレータが入力した入力データを、I/Oインターフェース18を介して、プロセッサ12に送信する。
プロセッサ12は、受信した入力データに応じて、システムメモリ14に記憶された複数種類のロボットモデルの中から、ロボットモデル102Mを読み出し、仮想空間200に配置する。次いで、プロセッサ12は、ロボットモデル102Mに対して、図2と同様の位置に、ロボット座標系CR及びツール座標系CTを設定する。
同様にして、プロセッサ12は、オペレータの入力操作に応じて、仮想空間200において撮像部モデル104Mを配置する。撮像部モデル104Mは、図2に示す撮像部104をモデル化した3次元CGである。
一例として、システムメモリ14は、撮像部モデル104Mを含む、複数種類の撮像部モデルを、予め記憶する。プロセッサ12は、システムメモリ14に記憶された複数種類の撮像部モデルをリストの形態で表した画像データを生成し、表示部22に表示させる。オペレータは、データ入力部20を操作して、表示部22に表示されたリストの中から、所望の撮像部モデルを選択する。
オペレータが、図4に示す撮像部モデル104Mを選択すると、プロセッサ12は、I/Oインターフェース18を介してデータ入力部20から受信した入力データに応じて、システムメモリ14に記憶された複数種類の撮像部モデルの中から、撮像部モデル104Mを読み出し、仮想空間200に配置する。
このとき、プロセッサ12は、撮像部モデル104Mを、実機の撮像部104の取付位置に対応するように、手首部モデル112Mの先端に配置する。次いで、プロセッサ12は、撮像部モデル104Mに対してセンサ座標系CSを図2と同様に設定する。
同様にして、プロセッサ12は、オペレータの入力操作に応じて、仮想空間200においてワークモデル150Mを配置する。一例として、システムメモリ14は、ワークモデル150Mを含む、複数種類のワークモデルを、予め記憶する。
そして、プロセッサ12は、システムメモリ14に記憶された複数種類のワークモデルをリストの形態で表した画像データを生成し、表示部22に表示させる。オペレータは、データ入力部20を操作して、表示部22に表示されたリストの中から、所望のワークモデルを選択する。
オペレータが、図4に示すワークモデル150Mを選択すると、プロセッサ12は、I/Oインターフェース18を介してデータ入力部20から受信した入力データに応じて、システムメモリ14に記憶された複数種類のワークモデルの中から、ワークモデル150Mを読み出し、仮想空間200に配置する。
ワークモデル150Mは、図2に示すワーク150をモデル化した3次元CGであって、本体部モデル152Mと、複数の部材モデル154M、156M、158M、160M、162M、164M、及び166Mとを有する。
次いで、プロセッサ12は、ワークモデル150Mに対してワーク座標系CWを設定する。図4に示す例では、ワーク座標系CWは、その原点が本体部モデル152Mの上端面モデル168Mの左後方の角に位置し、そのx−y平面が上端面モデル168Mと平行となり、そのx−z平面が後端面モデル170Mと平行になり、且つ、そのy−z平面が右端面モデル172Mと平行になるように、設定されている。
図4に示す例においては、部材モデル154M、156M、及び164Mは、円形の外形を有し、部材モデル158M、160M、及び166Mは、四角形の外形を有し、部材モデル162Mは、三角形の外形を有している。
また、部材モデル154M、156M、158M、160M、162M、164M、及び166Mのサイズが以下のように設定されている。すなわち、部材モデル154M及び156Mのサイズは「100」であり、部材モデル158M及び166Mのサイズは「300」であり、部材モデル160Mのサイズは「150」であり、部材モデル162Mのサイズは「80」であり、部材モデル164Mのサイズは「20」である。このサイズの単位は、例えば、m、m2、又はm3であり得る。
また、部材モデル166Mは、本体部モデル152M、部材モデル154M、156M、158M、160M、162M、及び164Mとは異なる色(すなわち、黒色)に色付けされている。オペレータは、データ入力部20を操作して、ワークモデル150Mの任意の箇所を、部材モデル166Mのように色付けできる。
こうして、図4に示すように、ロボットモデル102M及び撮像部モデル104Mを有するロボットシステムモデル100Mと、ワークモデル150Mとが、仮想空間200内に配置される。
このように、本実施形態においては、プロセッサ12は、ワークモデル150M、ロボットモデル102M、及び撮像部モデル104Mを仮想空間200に配置するモデル配置部26(図1)として機能する。プロセッサ12は、仮想空間200を画像データとして生成し、図4に示すような仮想空間200の画像として、表示部22に表示させる。
ステップS2において、プロセッサ12は、抽出条件を受け付ける。この抽出条件は、後述するステップS3でワークモデル150Mから目的箇所を抽出するときに、抽出すべき箇所を特定するための条件である。
ここで、本稿における「目的箇所」とは、実空間で撮像部104の撮像対象とするワーク150の撮像対象箇所(すなわち、部材154、156、158及び160)に対応する、ワークモデル150Mの箇所(すなわち、部材モデル154M、156M、158M及び160M)を示す。
本実施形態においては、抽出条件は、目的箇所の形状、色、及びサイズを特定する第1条件を含む。一例として、プロセッサ12は、目的箇所とする「形状」、「色」、及び「サイズ」に対応する欄が示された画像データを生成し、表示部22に表示させる。
オペレータは、データ入力部20を操作して、「形状」の欄に、例えば「丸形」、「三角形」、又は「四角形」というように、後述のステップS3で抽出したい目的箇所の形状を入力する。
また、オペレータは、データ入力部20を操作して、「色」の欄に、例えば「白色」、「黒色」、又は「青色」というように、ステップS3で抽出したい目的箇所の色を入力する。
また、オペレータは、データ入力部20を操作して、「サイズ」の欄に、例えば「100〜200」というように、ステップS3で抽出したい目的箇所のサイズの範囲を入力する。こうして、オペレータは、抽出したいワークモデル150M上の目的箇所を特定する第1条件を入力することができる。
また、本実施形態においては、抽出条件は、実空間で撮像部104の撮像対象外とするワーク150の箇所に対応する、ワークモデル150Mの箇所の形状、色、又はサイズを特定する第2条件を含む。
一例として、プロセッサ12は、対象外とすべき「形状」、「色」、及び「サイズ」に対応する欄が示された画像データを生成し、表示部22に表示させる。オペレータは、データ入力部20を操作して、「形状」の欄に、例えば「丸形」、「三角形」、又は「四角形」というように、後述のステップS3で抽出対象外とする箇所の形状を入力する。
また、オペレータは、データ入力部20を操作して、「色」の欄に、例えば「白色」、「黒色」、又は「青色」というように、ステップS3で抽出対象外とする箇所の色を入力する。
また、オペレータは、データ入力部20を操作して、「サイズ」の欄に、例えば「500〜600」というように、ステップS3で抽出対象外とする箇所のサイズの範囲を入力する。こうして、オペレータは、抽出対象外とするワークモデル150M上の箇所を特定する第2条件を入力することができる。
以下、オペレータが、抽出条件の第1条件として、「形状」の欄に「丸形」と「四角形」を入力し、「サイズ」の欄に「90〜350」と入力する一方、抽出条件の第2条件として、「色」の欄に「黒色」を入力した場合について説明する。
データ入力部20は、オペレータから抽出条件の入力を受け付けて、I/Oインターフェース18を介して、プロセッサ12に送信する。プロセッサ12は、受信した抽出条件をシステムメモリ14に記憶する。このように、本実施形態は、データ入力部20は、抽出条件の入力を受け付ける抽出条件受付部28(図1)として機能する。
ステップS3において、プロセッサ12は、ステップS2で受け付けた抽出条件に従って目的箇所を抽出する。具体的には、プロセッサ12は、ステップS2で受け付けた抽出条件に含まれる第1条件(すなわち、「形状」=「丸形」及び「四角形」、「サイズ」=「90〜350」)を参照し、該第1条件に合致するワークモデル150Mの箇所を、目的箇所として抽出する。
図4に示すワークモデル150Mにおいて、形状が「丸形」であるのは、部材モデル154M、156M及び164Mであり、また、形状が「四角形」である箇所は、部材モデル158M、160M、及び166Mである。また、ワークモデル150Mにおいて、サイズが「90〜350」である箇所は、部材モデル154M、156M、158M、160M、及び166Mである。
したがって、抽出条件の第1条件に合致しているワークモデル150Mの箇所は、部材モデル154M、156M、158M、160M、及び166Mとなる。
一方、プロセッサ12は、ステップS2で受け付けた抽出条件に含まれる第2条件(すなわち、「色」=「黒色」)を参照し、該第2条件に合致するワークモデル150Mの箇所を、目的箇所として抽出しない。
図4に示す例においては、部材モデル166Mが、オペレータによって黒色に色付けされている。したがって、プロセッサ12は、該部材モデル166Mを、目的箇所から除外する。
その結果、プロセッサ12は、ワークモデル150Mの部材モデル154M、156M、158M、及び160Mを、目的箇所として抽出する。プロセッサ12は、抽出条件と、ワークモデル150Mの図面データ(例えば、3DCADデータ)とを照らし合わせて、ワークモデル150Mから抽出条件に合致する目的箇所を抽出できる。
このように、本実施形態においては、プロセッサ12は、抽出条件に従って目的箇所154M、156M、158M、及び160Mを抽出する目的箇所抽出部30(図1)として機能する。
ステップS4において、プロセッサ12は、撮像位置を計算する。具体的には、プロセッサ12は、目的箇所154が撮像部モデル104Mの視野内に入る、ワークモデル150Mに対する撮像部モデル104Mの位置を、第1の撮像位置として計算する。
実機の撮像部104は、撮像可能な範囲を示す視野と、該視野の高さとを有する。図5に、撮像部104の視野に対応する、撮像部モデル104Mの視野Aを示す。撮像部モデル104Mの視野Aのサイズと視野高さBとは、実機の撮像部104の撮像センサの画素数及び光学系の仕様等によって、定められ得る。
又は、オペレータが、撮像部モデル104Mの視野Aのサイズと視野高さBとを、データ入力部20を操作して、予め指定してもよい。本実施形態においては、視野高さBは、視野Aの中心と、撮像座標系CSの原点との距離に一致する。
プロセッサ12は、第1の撮像位置として、図5に示すワークモデル150Mと撮像部モデル104Mとの相対位置を算出する。ワークモデル150Mと撮像部モデル104Mとが図5に示す第1の撮像位置に配置されているとき、撮像部モデル104Mの視線O(すなわち、センサ座標系のz軸)が、目的箇所154Mの中心C1を通過する。
また、視線Oの方向における撮像部モデル104Mと目的箇所154Mとの間の距離が、視野高さBに一致する。また、センサ座標系CSのx−y平面(すなわち、ツール座標系CTのx−y平面)と、ワーク座標系のx−y平面とが、互いに平行になっている。
プロセッサ12は、ロボット座標系CRにおけるワーク座標系Cwの位置と、ワーク座標系Cwにおける中心C1の位置とに基づいて、ロボット座標系CRにおける中心C1の位置を算出する。そして、プロセッサ12は、算出した中心C1の位置と視野高さBとに基づいて、第1の撮像位置に対応するセンサ座標系CSの位置及び姿勢(すなわち、原点位置及び各軸の方向)を求める。
同様にして、プロセッサ12は、目的箇所156Mが撮像部モデル104Mの視野A内に入る、ワークモデル150Mに対する撮像部モデル104Mの位置を、第2の撮像位置として計算する。
ワークモデル150Mと撮像部モデル104Mとが第2の撮像位置に配置されているとき、撮像部モデル104Mの視線Oが、目的箇所156Mの中心C2を通過し、視線Oの方向における撮像部モデル104Mと目的箇所156Mとの間の距離が、視野高さBに一致する。また、センサ座標系CSのx−y平面と、ワーク座標系のx−y平面とが、互いに平行になっている。
また、プロセッサ12は、目的箇所158Mが撮像部モデル104Mの視野A内に入る、ワークモデル150Mに対する撮像部モデル104Mの位置を、第3の撮像位置として計算する。
ワークモデル150Mと撮像部モデル104Mとが第3の撮像位置に配置されているとき、撮像部モデル104Mの視線Oが、目的箇所158Mの中心C3を通過し、視線Oの方向における撮像部モデル104Mと目的箇所158Mとの間の距離が、視野高さBに一致する。また、センサ座標系CSのx−y平面と、ワーク座標系のx−y平面とが、互いに平行になっている。
また、プロセッサ12は、目的箇所160Mが撮像部モデル104Mの視野A内に入る、ワークモデル150Mに対する撮像部モデル104Mの位置を、第4の撮像位置として計算する。
ワークモデル150Mと撮像部モデル104Mとが第4の撮像位置に配置されているとき、撮像部モデル104Mの視線Oが、目的箇所160Mの中心C4を通過し、視線Oの方向における撮像部モデル104Mと目的箇所160Mとの間の距離が、視野高さBに一致する。また、センサ座標系CSのx−y平面と、ワーク座標系のx−z平面とが、互いに平行になっている。
このようにして、プロセッサ12は、ステップS3で抽出した全ての目的箇所154M、156M、158M、160Mに対応する第nの撮像位置(n=1,2,3,4)を計算し、システムメモリ14に記憶する。したがって、本実施形態においては、プロセッサ12は、撮像位置を計算する撮像位置計算部32(図1)として機能する。
なお、オペレータは、第nの撮像位置の条件(すなわち、撮像部モデル104Mの視線Oが中心Cnを通過するという条件、撮像部モデル104Mと目的箇所154Mとの間の距離が視野高さBに一致するという条件、又は、センサ座標系CSによって規定される平面と、ワーク座標系によって規定される平面とが互いに平行になっているという条件)を、データ入力部20を操作して、予め設定してもよい。
ステップS5において、プロセッサ12は、撮像部モデル104Mをワークモデル150Mに対して第nの撮像位置に位置決めする位置決め動作のシミュレーションを実行する。このステップS5について、図6を参照して説明する。ステップS11において、プロセッサ12は、撮像位置を特定する番号「n」を「1」にセットする。
ステップS12において、プロセッサ12は、撮像部モデル104Mとワークモデル150Mとを第nの撮像位置に位置決めする。仮に、このステップS12の開始時点でn=1にセットされていたとすると、プロセッサ12は、仮想空間200内でロボットモデル102Mを模擬的に動作させて撮像部モデル104Mを移動させ、該撮像部モデル104Mをワークモデル150Mに対して第1の撮像位置に位置決めする。その結果、撮像部モデル104Mは、ワークモデル150Mに対して、図5に示す第1の撮像位置に位置決めされる。
ステップS13において、プロセッサ12は、ステップS12で撮像部モデル104Mをワークモデル150Mに対して第nの撮像位置に位置決めしたときのロボットモデル102Mの第nの位置データを取得する。
一例として、プロセッサ12は、第nの位置データとして、撮像部モデル104Mをワークモデル150Mに対して第nの撮像位置に位置決めしたときの、ロボット座標系CRにおけるツール座標系CTの位置及び姿勢(すなわち、原点位置及び各軸の方向)に係るデータを取得し、システムメモリ14に記憶する。
又は、プロセッサ12は、第nの位置データとして、撮像部モデル104Mとワークモデル150Mとを第nの撮像位置に位置決めしたときの、ロボットモデル102Mの各可動要素モデル(すなわち、旋回胴モデル108M、上腕部モデル116M、下腕部モデル118M、手首部モデル112M)の回動角度を取得し、システムメモリ14に記憶する。
ステップS14において、プロセッサ12は、撮像位置を特定する番号「n」を、「1」だけインクリメントする(すなわち、n=n+1)。
ステップS15において、プロセッサ12は、撮像位置を特定する番号「n」が、nDよりも大きい数になったか否かを判定する。ここで、nDは、ステップS3で抽出された目的箇所の数である。本実施形態においては、nD=4である。
プロセッサ12は、番号「n」がnDよりも大きい(すなわち、n>nD)場合、YESと判定し、図6に示すステップS5を終了し、図3に示すステップS6へ進む。一方、プロセッサ12は、番号「n」がnD以下である(すなわち、n≦nD)場合、NOと判定し、ステップS12へ戻る。こうして、プロセッサ12は、ステップS15でYESと判定するまで、ステップS12〜S15をループする。
このように、プロセッサ12は、撮像部モデル104Mをワークモデル150Mに対して第nの撮像位置に位置決めする位置決め動作のシミュレーションを実行し、第nの撮像位置に位置決めしたときのロボットモデル102Mの第nの位置データを、それぞれ取得する。したがって、プロセッサ12は、位置決め動作のシミュレーションを実行するシミュレート部34(図1)として機能する。
再度、図3を参照して、ステップS6において、プロセッサ12は、ステップS13で取得した第nの位置データ(n=1〜4)に基づいて、ロボットシステム100の動作プログラムを生成する。具体的には、プロセッサ12は、第nの位置データを、実機のロボット102を位置決めすべき教示点とし、上述したような実機のロボットシステム100の一連の動作の動作プログラムを生成する。
この動作プログラムは、ステップS5のシミュレーションにおいて撮像部モデル104Mをワークモデル150Mに対して第nの撮像位置に位置決めする位置決め動作と同じ動作を、実機のロボット102に実行させる。これにより、ロボット102は、撮像部104をワーク150に対して第nの撮像位置にそれぞれ位置決めできる。
また、該動作プログラムは、ロボット102が撮像部104をワーク150に対して第nの撮像位置に位置決めする毎に、撮像対象であるワーク150の部材154、156、158又は160を撮像する撮像動作を、撮像部104に実行させる。こうして、撮像対象の部材154、156、158及び160の画像を取得することができる。
以上に述べたように、本実施形態においては、プロセッサ12は、ワークモデル150M上の目的箇所(154M、156M、158M、160M)を自動で抽出し(ステップS3)、抽出した目的箇所に対する位置決め動作のシミュレーションを実行している(ステップS5)。
そして、プロセッサ12は、該シミュレーションにおいて第nの位置データを自動で取得し(ステップS13)、該第nの位置データを用いて、実機のロボットシステム100の動作プログラムを生成している。
この構成によれば、オペレータの経験に依存することなく、ロボットシステム100の一連の動作の動作プログラムの教示を実行することができるので、システムの立ち上げ作業に掛かる時間を大幅に削減できる。
また、本実施形態においては、抽出条件は、目的箇所(154M、156M、158M、160M)の形状、色、及びサイズを特定する第1条件を含む。この構成によれば、オペレータは、抽出すべきワークモデル150Mの箇所を、形状、色、及びサイズを指定することによって、容易に選定できる。
また、本実施形態においては、抽出条件は、対象外とするワークモデル150Mの箇所の形状、色、又はサイズを特定する第2条件を含む。この構成によれば、オペレータは、抽出したくないワークモデル150Mの箇所を、形状、色、及びサイズを指定することによって、抽出対象から容易に除外できる。
例えば、オペレータは、抽出したくないワークモデル150Mの箇所を、特定の色で色付けし、抽出条件の第2条件の「色」として該特定の色を指定すれば、該箇所を容易に抽出対象から除外できる。
また、本実施形態においては、プログラミング装置10は、抽出条件の入力を受け付ける抽出条件受付部28として機能するデータ入力部20を備えている。この構成によれば、オペレータは、抽出条件を任意に設定して入力することができるので、目的箇所を容易且つ詳細に指定することができる。
また、本実施形態においては、プロセッサ12は、第nの撮像位置を計算している(ステップS4)。この構成によれば、オペレータが第nの撮像位置を手動で指定することなく、該第nの撮像位置を自動で計算できるので、システムの立ち上げ作業に掛かる時間を効果的に削減できる。
次に、図7〜図10を参照して、プログラミング装置10の他の機能について説明する。図7は、プログラミング装置10の他の機能を表すブロック図である。本実施形態においては、プロセッサ12は、さらに、判定部38、撮像位置検索部40、及び第1の撮像位置修正部42として機能する。
以下、図8を参照して、本実施形態に係るプログラミング装置10の機能について、説明する。なお、図8において、図3に示すフローと同様のプロセスには同じステップ番号を付し、重複する説明を省略する。
ステップS4の後、ステップS21において、プロセッサ12は、後述するステップS22のシミュレーションにおいてロボットモデル102Mが撮像部モデル104Mをワークモデル150Mに対して第nの撮像位置の各々へ移動させるときの移動経路を設定する。
このステップS21の技術的意味について、以下に説明する。実際の製造現場においては、サイクルタイム縮減のために、ロボット102によって撮像部104を移動させながら、該撮像部104によって撮像対象箇所を撮像する場合がある。このような場合、ロボット102によって撮像部104を移動させる経路を、滑らかに連続するように(すなわち、移動経路に不連続な角が生じないように)、設定する必要がある。
本実施形態においては、プロセッサ12は、後述のステップS22のシミュレーションにおいてロボットモデル102Mによって撮像部モデル104Mを第1の撮像位置、第2の撮像位置、・・・第nの撮像位置へ連続的に移動させるときの移動経路が、滑らかに連続する経路となるように、ステップS4で計算した第nの撮像位置の各々を、新たな第nの撮像位置へ変更する。
ステップS22において、プロセッサ12は、撮像部モデル104Mをワークモデル150Mに対して第nの撮像位置に位置決めする位置決め動作のシミュレーションを実行する。このステップS22について、図9を参照して説明する。なお、図9に示すフローにおいて、図6と同様のプロセスには同じステップ番号を付し、重複する説明を省略する。
ステップS12の後、ステップS23において、プロセッサ12は、仮想画像を取得する。具体的には、プロセッサ12は、ロボットモデル102Mが撮像部モデル104Mをワークモデル150Mに対して第nの撮像位置に位置決めしたときに、撮像部モデル104Mの視野A内に入る仮想画像を生成する。
なお、プロセッサ12は、このステップS23において、ステップS12でロボットモデル102Mが撮像部モデル104Mを移動させているときに、仮想画像を生成してもよい。
図10及び図11に、撮像部モデル104Mがワークモデル150Mに対して第1の撮像位置に位置決めされたときに、撮像部モデル104Mの視野A内に入る仮想画像を示す。なお、図10及び図11においては、理解の容易のために、撮像部モデル104Mの視線Oと、目的箇所154Mの中心C1とを図示している。
図10に示す仮想画像202においては、目的箇所154Mが仮想画像202の中央から紙面左方へずれており、目的箇所154Mの一部が、仮想画像202に写っていない。
すなわち、この場合は、撮像部モデル104Mがワークモデル150Mに対して第1の撮像位置に位置決めされたとき、撮像部モデル104Mの視線Oと、目的箇所154Mの中心C1とが互いに一致しておらず、且つ、目的箇所154Mの一部が撮像部モデル104Mの視野A内に収まっていないことになる。
一方、図11に示す仮想画像204においては、目的箇所154が仮想画像204の中央から紙面左方へずれているものの、目的箇所154の全体が、仮想画像202に写っている。
すなわち、この場合は、撮像部モデル104Mがワークモデル150Mに対して第1の撮像位置に位置決めされたとき、撮像部モデル104Mの視線Oと、目的箇所154Mの中心C1とが互いに一致していないものの、目的箇所154Mの全体が撮像部モデル104Mの視野A内に収まっていることになる。
このように撮像部モデル104Mの視線Oと目的箇所154Mの中心C1とがずれる事態は、上述のステップS21で第nの撮像位置を変更したことによって、起こり得る。プロセッサ12は、このステップS23において、仮想画像202又は204のような仮想画像を生成し、システムメモリ14に記憶する。
ステップS24において、プロセッサ12は、ステップS12で撮像部モデル104Mとワークモデル150Mとを第nの撮像位置に位置決めしたときに、目的箇所154M、156M、158M、又は160Mが視野A内に収まっているか否かを判定する。
仮に、このステップS24の開始時点でn=1にセットされていたとすると、プロセッサ12は、ステップS23で取得した仮想画像を画像解析し、該仮想画像に写る目的箇所154Mの輪郭を抽出する。
一方、プロセッサ12は、システムメモリ14からワークモデル150Mの図面データを読み出し、該図面データから、目的箇所である部材モデル154Mの形状(例えば、部材モデル154Mの上端面モデルの輪郭形状)を取得する。
そして、プロセッサ12は、仮想画像に写る目的箇所154Mの輪郭の形状と、図面データの部材モデル154Mの形状とが、互いに一致するか否かを判定する。プロセッサ12は、仮想画像に写る目的箇所154Mの形状が図面データと一致する場合、目的箇所154Mが視野A内に収まっている(すなわち、YES)と判定し、ステップS26へ進む。
一方、プロセッサ12は、仮想画像に写る目的箇所154Mの形状が図面データと一致していない場合、目的箇所154Mが視野A内に収まっていない(すなわち、NO)と判定し、ステップS25へ進む。
例えば、図10に示す仮想画像202の場合、仮想画像に写る目的箇所154Mの輪郭の形状は、一部が欠けた円形となっており、図面データの部材モデル154Mの形状(すなわち、真円)と一致していない。したがって、ステップS23で仮想画像202を取得した場合は、プロセッサ12は、このステップS24でNOと判定することになる。
一方、図11に示す仮想画像204の場合は、仮想画像に写る目的箇所154Mの輪郭の形状は、真円となっており、図面データの部材モデル154Mの形状と一致する。したがって、ステップS23で仮想画像204を取得した場合は、プロセッサ12は、このステップS24でYESと判定することになる。
なお、プロセッサ12は、仮想画像に写る目的箇所154Mの輪郭の形状と、図面データの部材モデル154Mの形状との類似度を算出し、該類似度が予め定められた閾値以上である場合に、YESと判定してもよい。この類似度は、2つの形状が類似する度合を表すパラメータであって、例えば、2つの形状の面積比を含む。
このように、本実施形態においては、プロセッサ12は、視野A内に目的箇所154M、156M、158M、又は160Mが収まっているか否かを判定する判定部38(図7)として機能する。
ステップS25において、プロセッサ12は、第nの撮像位置の検索及び修正スキームを実行する。このステップS25について、図12を参照して説明する。
ステップS27において、プロセッサ12は、第nの撮像位置を変更する。具体的には、プロセッサ12は、ステップS25の開始時点で設定されていた第nの撮像位置を、該第nの撮像位置に配置された撮像部モデル104Mをツール座標系CTのx軸、y軸、又はz軸の方向へ所定の距離δ1だけずらしたときの撮像部モデル104Mとワークモデル150Mとの相対位置に、変更する。
このようにして、プロセッサ12は、ステップS25の開始時点で設定されていた第nの撮像位置を、新たな第nの撮像位置に変更することができる。変更後の第nの撮像位置においては、撮像部モデル104Mが、変更前の第nの撮像位置から、ツール座標系CTのx軸、y軸、又はz軸の方向へ距離δ1だけずれることになる。
ステップS28において、プロセッサ12は、撮像部モデル104Mをワークモデル150Mに対して第nの撮像位置へ位置決めする位置決め動作を再実行する。具体的には、プロセッサ12は、仮想空間200内で、撮像部モデル104Mの位置を、第nの撮像位置へ向かう移動経路の途中位置に戻す。
そして、プロセッサ12は、該途中位置から撮像部モデル104Mをロボットモデル102Mによって変更後の第nの撮像位置へ位置決めする位置決め動作のシミュレーションを行う。
ステップS29において、プロセッサ12は、上述のステップS23と同様に、仮想画像を再度取得する。
ステップS30において、プロセッサ12は、上述のステップS24と同様に、ステップS29で取得した仮想画像に写る目的箇所154M、156M、158M、又は160Mが視野A内に収まっているか否かを判定する。
プロセッサ12は、YESと判定した場合、ステップS31へ進む一方、NOと判定した場合、ステップS27へ戻る。こうして、プロセッサ12は、ステップS24でYESと判定するまで、ステップS27〜S30をループする。
このようにステップS27〜S30を繰り返し実行することによって、プロセッサ12は、視野A内に目的箇所154M、156M、158M、又は160Mが収まるような、撮像部モデル104Mとワークモデル150Mとの相対位置を検索する。したがって、本実施形態においては、プロセッサ12は、該相対位置を検索する撮像位置検索部40(図7)として機能する。
なお、プロセッサ12は、ステップS30でYESと判定するまでにステップS27で第nの撮像位置を変更するときに、撮像部モデル104Mをツール座標系CTのx軸方向へずらす変更、y軸方向へずらす変更、又は、z軸方向へずらす変更を、所定の順番に従って実行してもよい。
例えば、所定の順番として、プロセッサ12は、x軸方向への変更を10回実行し、次いで、y軸方向への変更を10回実行し、次いで、z軸方向への変更を10回実行するという順番で、第nの撮像位置を変更してもよい。
また、ステップS30でYESと判定するまでにステップS27で第nの撮像位置を変更するときに、撮像部モデル104Mをツール座標系CTの各軸の方向へずらす範囲[α,β]が設定されてもよい。
例えば、撮像部モデル104Mをツール座標系CTのx軸方向へずらす範囲が、[−10,10]と設定された場合、プロセッサ12は、撮像部モデル104Mを、ステップS25の開始時点での第nの撮像位置から、ツール座標系CTのx軸方向において、−10≦x≦10の範囲でずらす。
また、プロセッサ12は、ステップS30でYESと判定するまでにステップS27で第nの撮像位置を変更するときに、撮像部モデル104Mをツール座標系CTのx軸方向へずらす変更、y軸方向へずらす変更、及びz軸方向へずらす変更の有効又は無効の設定を受け付けてもよい。
例えば、z軸方向へずらす変更が「無効」に設定された場合、プロセッサ12は、ステップS27で第nの撮像位置を変更するときに、撮像部モデル104Mをツール座標系CTのz軸方向へずらす変更を行わない。
上述の所定の順番、範囲[α,β]、及び有効/無効の設定は、予め定められてもよいし、又は、プロセッサ12は、データ入力部20を介して、オペレータから、これら所定の順番、範囲[α,β]、及び有効/無効の設定の入力を受け付けてもよい。
ステップS31において、プロセッサ12は、ステップS25の開始時点で設定されていた第nの撮像位置を、ステップS30でYESと判定した時点で設定されている第nの撮像位置に修正し、システムメモリ14に記憶する。
このように、本実施形態においては、プロセッサ12は、ステップS27〜S30で検索した撮像部モデル104Mとワークモデル150Mとの相対位置に基づいて第nの撮像位置を修正する第1の撮像位置修正部42(図7)として機能する。そして、プロセッサ12は、図12に示すステップS25を終了し、図9に示すステップS13へ進む。
このように、本実施形態においては、プロセッサ12は、ステップS23の実行時に視野A内に目的箇所154M、156M、158M、又は160Mが収まっていない場合に、視野A内に該目的箇所が収まるような撮像部モデル104Mとワークモデル150Mとの相対位置を検索し(ステップS27〜S30)、該相対位置に基づいて第nの撮像位置を修正している(ステップS31)。
この構成によれば、ロボットモデル102Mによって撮像部モデル104Mを移動させるときの移動経路を滑らかな経路に設定した(ステップS21)場合において、視野A内に目的箇所154M、156M、158M、又は160Mを確実に収めることができる第nの撮像位置を取得できる。
したがって、実機のロボット102によって撮像部104を移動させながら該撮像部104によって撮像対象箇所を撮像するような動作プログラムを効果的に生成することができる。
次に、図13〜図17を参照して、プログラミング装置10のさらに他の機能について説明する。図13は、プログラミング装置10のさらに他の機能を表すブロック図である。本実施形態においては、プロセッサ12は、さらに、干渉検出部44、非干渉位置検索部46、及び第2の撮像位置修正部48として機能する。
以下、図14を参照して、本実施形態に係るプログラミング装置10の機能について、説明する。なお、図14において、図3に示すフローと同様のプロセスには同じステップ番号を付し、重複する説明を省略する。
ステップS41において、プロセッサ12は、モデル配置部26として機能して、ワークモデル150M、ロボットモデル102M、撮像部モデル104M、及び環境物モデル206Mを仮想空間200に配置する。このときの仮想空間200の一例を図15に示す。環境物モデル206Mは、作業セルの柱又は壁等といった、ロボットシステム100及びワーク150の周囲に存在する物体をモデル化した3次元CGである。
ステップS4の後、ステップS42において、プロセッサ12は、撮像部モデル104Mをワークモデル150Mに対して第nの撮像位置に位置決めする位置決め動作のシミュレーションを実行する。このステップS42について、図16を参照して説明する。なお、図16に示すフローにおいて、図6と同様のプロセスには同じステップ番号を付し、重複する説明を省略する。
ステップS12の後、ステップS43において、プロセッサ12は、ロボットモデル102M又は撮像部モデル104Mと、ワークモデル150M又は環境物モデル206Mとの間で干渉が検出されたか否かを判定する。
具体的には、プロセッサ12は、ロボットモデル102M、撮像部モデル104M、ワークモデル150M、及び環境物モデル206Mの図面データと、これら要素のロボット座標系CRにおける位置データ等に基づいて、ロボットモデル102M又は撮像部モデル104Mと、ワークモデル150M又は環境物モデル206Mとの間で干渉が生じたか否かを判定する。
プロセッサ12は、ロボットモデル102M又は撮像部モデル104Mと、ワークモデル150M又は環境物モデル206Mとの間で干渉が生じた(すなわち、YES)と判定した場合、ステップS44へ進む。
一方、プロセッサ12は、ロボットモデル102M又は撮像部モデル104Mと、ワークモデル150M又は環境物モデル206Mとの間で干渉が生じていない(すなわち、NO)と判定した場合、ステップS13へ進む。
このように、本実施形態においては、プロセッサ12は、ロボットモデル102M又は撮像部モデル104Mと、ワークモデル150M又は環境物モデル206Mとの間の干渉を検出する干渉検出部44(図13)として機能する。
ステップS44において、プロセッサ12は、非干渉位置の検索及び撮像位置修正スキームを実行する。このステップS44について、図17を参照して説明する。
ステップS45において、プロセッサ12は、ステップS12で第nの撮像位置に配置されている撮像部モデル104Mとワークモデル150Mとの相対位置を変更する。具体的には、プロセッサ12は、撮像部モデル104Mを、ツール座標系CTのx軸、y軸、又はz軸の方向へ所定の距離δ2だけずらす。
又は、プロセッサ12は、撮像部モデル104Mを、ツール座標系CT(又はセンサ座標系CT)のx軸又はy軸の周りの方向へ、所定の角度θだけ回転させる。このようにして、プロセッサ12は、撮像部モデル104Mの位置を、距離δ2又は角度θだけ変更することができる。
ここで、プロセッサ12は、このステップS45において、視野A内に目的箇所154M、156M、158M、又は160Mが収まるように、撮像部モデル104Mの位置を変更する。例えば、プロセッサ12は、撮像部モデル104Mの視線Oが目的箇所154M、156M、158M、又は160Mの中心Cn(又は、目的箇所上の任意の点)を通過するように、撮像部モデル104Mの位置を変更する。
ステップS46において、プロセッサ12は、上述のステップS43と同様に、プロセッサ12は、ロボットモデル102M又は撮像部モデル104Mと、ワークモデル150M又は環境物モデル206Mとの間で干渉が検出されたか否かを判定する。
プロセッサ12は、YESと判定した場合、ステップS47へ進む一方、NOと判定した場合、ステップS45へ戻る。こうして、プロセッサ12は、ステップS46でYESと判定するまで、ステップS45〜S46をループする。
ステップS46でYESと判定されたとき、ロボットモデル102M又は撮像部モデル104Mは、ワークモデル150M又は環境物モデル206Mと干渉しない非干渉位置に配置されることになる。
このようにステップS45〜S46を繰り返し実行することによって、プロセッサ12は、上記干渉が生じなくなる非干渉位置を検索する。したがって、本実施形態においては。非干渉位置を検索する非干渉位置検索部46(図13)として機能する。
なお、プロセッサ12は、ステップS46でYESと判定するまでにステップS45を繰り返し実行するとき、撮像部モデル104Mをツール座標系CTのx軸方向へ移動する動作、y軸方向へずらす動作、z軸方向へずらす動作、ツール座標系CT(又はセンサ座標系CT)のx軸周りへ回転する動作、又はy軸周りへ回転させる動作を、所定の順番に従って実行してもよい。
また、ステップS46でYESと判定するまでにステップS45を繰り返し実行するときに、撮像部モデル104Mをツール座標系CTの各軸の方向又は各軸周りへ移動させる範囲[γ,ε]が設定されてもよい。
例えば、撮像部モデル104Mをセンサ座標系CSのy軸周りへ回転させる範囲が、[−10°,10°]と設定された場合、ステップS45において、プロセッサ12は、撮像部モデル104Mを、ステップS25の開始時点の位置から、センサ座標系CSのy軸周りへ、−10°≦x≦10°の範囲で回転させる。
また、プロセッサ12は、ステップS45を実行するときに、撮像部モデル104Mをツール座標系CTのx軸方向へ移動する動作、y軸方向へずらす動作、z軸方向へずらす動作、ツール座標系CT(又はセンサ座標系CT)のx軸周りへ回転する動作、又はy軸周りへ回転させる動作の有効又は無効の設定を受け付けてもよい。
例えば、センサ座標系CTのy軸周りへ回転させる動作が「無効」に設定された場合、プロセッサ12は、ステップS45を実行するときに、センサ座標系CTのy軸周りへ回転させる動作を行わない。
ステップS45で参照する所定の順番、範囲[γ,ε]、及び有効/無効の設定は、予め定められてもよいし、又は、プロセッサ12は、データ入力部20を介して、オペレータから、これら所定の順番、範囲[γ,ε]、及び有効/無効の設定の入力を受け付けてもよい。
ステップS47において、プロセッサ12は、ステップS44の開始時点で設定されていた第nの撮像位置を、ステップS46でYESと判定した時点における撮像部モデル104Mとワークモデル150Mとの相対位置に修正し、システムメモリ14に記憶する。
このように、本実施形態においては、プロセッサ12は、ステップS45〜S46で検索した非干渉位置に基づいて第nの撮像位置を修正する第2の撮像位置修正部48(図13)として機能する。ステップS47の後、プロセッサ12は、図17に示すステップS44を終了し、図16に示すステップS13へ進む。
以上のように、本実施形態においては、プロセッサ12は、ステップS43で検出した干渉が生じなくなる非干渉位置を検索し(ステップS45〜S46)、該非干渉位置に基づいて修正した第nの撮像位置を用いて、動作プログラムを生成する(ステップS6)。
この構成によれば、実空間において、ロボットシステム100の周囲に環境物が存在しているような環境において、ロボット102又は撮像部104と、ワーク150又は環境物との間で干渉が生じないように、撮像部104で目的箇所154M、156M、158M、又は160Mを撮像する一連の動作の動作プログラムを生成できる。
次に、図18及び図19を参照して、プログラミング装置10のさらに他の機能について説明する。図18は、プログラミング装置10のさらに他の機能を表すブロック図である。本実施形態においては、プロセッサ12は、さらに、撮像タイミング設定部50として機能する。
以下、図19を参照して、本実施形態に係るプログラミング装置10の機能について、説明する。なお、図19において、図3に示すフローと同様のプロセスには同じステップ番号を付し、重複する説明を省略する。
ステップS5の後、ステップS51において、プロセッサ12は、実機の撮像部104による撮像動作の開始時点ts及び終了時点teを設定する。一例として、プロセッサ12は、撮像部104をワーク150に対して第nの撮像位置に位置決めするときの、ロボット102の動作速度VRの指定を受け付ける。
具体的には、プロセッサ12は、動作速度VRを入力可能とする画像データを生成し、表示部22に表示させる。オペレータは、データ入力部20を操作して、所望の動作速度VRを入力し、プロセッサ12は、I/Oインターフェース18を介して、動作速度VRを受け付ける。
そして、プロセッサ12は、受け付けた動作速度VRに基づいて、撮像動作の開始時点ts及び終了時点teを自動で設定する。例えば、プロセッサ12は、開始時点tsを、実機のロボット102が撮像部104を第nの撮像位置に到達させるt1秒前の時点に設定する一方、終了時点teを、ロボット102が撮像部104を第nの撮像位置を通過してt2秒後の時点に設定する。
これら時間t1及びt2は、ロボット102の動作速度VRから求めることができる。このようにして、プロセッサ12は、動作速度VRに基づいて開始時点ts及び終了時点teを自動で設定する。
他の例として、開始時点ts及び終了時点teは、オペレータによって任意に指定されてもよい。プロセッサ12は、オペレータからの指定に応じて開始時点ts及び終了時点teを設定し、システムメモリ14に記憶する。このように、本実施形態においては、プロセッサ12は、撮像動作の開始時点ts及び終了時点teを設定する撮像タイミング設定部50として機能する。
ステップS52において、プロセッサ12は、ステップS13(図6)で取得した第nの位置データ(n=1〜4)と、ステップS51で設定した開始時点ts及び終了時点teとに基づいて、ロボットシステム100の動作プログラムを生成する。
具体的には、プロセッサ12は、ステップS51で設定した開始時点tsから終了時点teまでの期間T(=te−ts。例えば、T=0.5秒)に亘って、撮像動作を撮像部104に実行させる動作プログラムを生成する。
例えば、この動作プログラムは、ロボット102が撮像部104を第nの撮像位置に到達させるt1秒前の時点tsで、撮像部104に撮像動作を開始させ(具体的には、シャッタを開いて撮像センサを露光させる)、ロボット102が撮像部104を第nの撮像位置を通過してt2秒後の時点teで、撮像部104の撮像動作を終了させる(具体的には、シャッタを閉じる)ように、生成される。
本実施形態によれば、例えばロボット102によって撮像部104を移動させながら該撮像部104によって撮像対象箇所を撮像する場合において、撮像対象箇所を確実に撮像することができる。
次に、図20〜図23を参照して、プログラミング装置10のさらに他の機能について説明する。図20は、プログラミング装置10のさらに他の機能を表すブロック図である。本実施形態においては、プロセッサ12は、さらに、順序決定部52として機能する。
以下、図21を参照して、本実施形態に係るプログラミング装置10の機能について、説明する。なお、図21において、図3に示すフローと同様のプロセスには同じステップ番号を付し、重複する説明を省略する。
ステップS5の後、ステップS60において、プロセッサ12は、最短移動経路検索スキームを実行する。このステップS60について、図22を参照して説明する。
なお、図22に示すステップS60においては、後述するステップS65でYESと判定するまで、図22中のステップS62、S11〜S13、S15、S63〜S65の一連の動作を、所定の回数μだけ、繰り返して実行する。この回数μは、オペレータによって予め定められ(例えば、μ=50)、システムメモリ14に記憶される。
ステップS61において、プロセッサ12は、ステップS60中のステップS62、S11〜S13、S15、S63〜S65の一連の動作の実行回数を特定する番号「m」を、「1」に設定する。
ステップS62において、ステップS4で計算された複数の撮像位置に、撮像部モデル104Mとワークモデル150Mとを位置決めする順序を決定する。
上述したように、第1の撮像位置は、目的箇所154Mが視野A内に入る位置として設定され、第2の撮像位置は、目的箇所156Mが視野A内に入る位置として設定され、第3の撮像位置は、目的箇所158Mが視野A内に入る位置として設定され、第4の撮像位置は、目的箇所160Mが視野A内に入る位置として設定されていた。
これにより、プロセッサ12は、撮像部モデル104Mを移動させるシミュレーション(S5、S22、S42)において、目的箇所154に対応する第1の撮像位置、目的箇所156に対応する第2の撮像位置、目的箇所158に対応する第3の撮像位置、及び目的箇所160に対応する第4の撮像位置の順序で、撮像部モデル104Mを移動させていた。
本実施形態においては、プロセッサ12は、このステップS62で、この順序をランダムに決定する。具体的には、撮像位置を特定する番号「n」(=1〜4)を、目的箇所154、目的箇所156、目的箇所158、及び目的箇所160に対して、ランダムに付与する。
例えば、プロセッサ12は、目的箇所156Mが視野A内に入る位置を第1の撮像位置とし、目的箇所160Mが視野A内に入る位置を第2の撮像位置とし、目的箇所158Mが視野A内に入る位置を第3の撮像位置とし、目的箇所154Mが視野A内に入る位置を第4の撮像位置とするように、番号「n」を、目的箇所154、目的箇所156、目的箇所158、及び目的箇所160に対して付与する。
この場合、プロセッサ12は、ステップS60中のステップS11、S12、S13及びS15をループするときに、撮像部モデル104Mを、目的箇所156Mを視野A内に入れる第1の撮像位置、目的箇所160Mを視野A内に入れる第2の撮像位置、目的箇所158Mを視野A内に入れる第3の撮像位置、及び目的箇所154Mを視野A内に入れる第4の撮像位置の順序で、撮像部モデル104Mを移動させることになる。
このように、本実施形態においては、プロセッサ12は、複数の撮像位置に撮像部モデル104Mとワークモデル150Mとを位置決めする順序を決定する順序決定部52として機能する。
ステップS62の後、プロセッサ12は、直近のステップS62で決定した番号「n」に基づいて上述のステップS11、S12、S13及びS15を順次実行し、撮像部モデル104Mをワークモデル150Mに対して第nの撮像位置に順次位置決めする。
ステップS15でYESと判定した場合、ステップS63において、直近のステップSS12、S13、及びS15のループにおいて撮像部モデル104Mを移動させた移動経路(すなわち、第1の撮像位置、第2の撮像位置、・・・第nDの撮像位置へ至る経路)の長さLmを算出する。プロセッサ12は、算出した長さLmを、システムメモリ14に記憶する。
ステップS64において、プロセッサ12は、番号「m」を、「1」だけインクリメントする(すなわち、m=m+1)。
ステップS65において、プロセッサ12は、番号「m」がμよりも大きい数になったか否かを判定する。プロセッサ12は、番号「m」がμよりも大きい(すなわち、m>μ)場合、YESと判定しステップS66へ進む。
一方、プロセッサ12は、番号「m」がμ以下である(すなわち、m≦μ)場合、NOと判定し、ステップS62へ戻る。こうして、プロセッサ12は、ステップS65でYESと判定するまで、ステップS62〜S65をループし、ステップS62でランダムに決定した順序で複数の撮像位置に撮像部モデル104Mを移動させたときの移動経路の長さLm(m=1,2,3,・・・μ)を順次取得する。
ステップS66において、プロセッサ12は、最短移動経路PMINを取得する。具体的には、プロセッサ12は、ステップS63を実行する毎に取得した移動経路の長さL1〜Lμを、システムメモリから読み出して比較し、長さL1〜Lμの中で最も短いものに対応する移動経路を、最短移動経路PMINとして取得する。
そして、プロセッサ12は、図22に示すステップS60を終了し、図21中のステップS6へ進む。そして、ステップS6において、ステップS66で取得した最短移動経路PMINに対応する順序で、撮像部104とワーク150とを第nの撮像位置へ位置決めする動作プログラムを生成する。
本実施形態によれば、プロセッサ12は、撮像部104とワーク150とを、最短移動経路PMINで第nの撮像位置の各々へ位置決めする動作プログラムを、自動で生成できる。したがって、該動作プログラムに従って実機のロボットシステム100を動作させたときのサイクルタイムを最小化できる。
次に、図23を参照して、他の実施形態に係るプログラミング装置60について説明する。プログラミング装置60は、モデル配置部62、目的箇所抽出部64、シミュレート部66、及びプログラム生成部68を備える。
モデル配置部62は、上述のモデル配置部26と同様に、ワークモデル150M、ロボットモデル102M、及び撮像部モデル104Mを仮想空間200に配置する(ステップS1)。目的箇所抽出部64は、予め定められた抽出条件に従って、ワークモデル150M上の目的箇所154M、156M、158M、160Mを抽出する(ステップS3)。
シミュレート部66は、上述のシミュレート部34と同様に、撮像部モデル104Mをワークモデル150Mに対して第nの撮像位置に位置決めする位置決め動作のシミュレーションを実行する(ステップS5)。
プログラム生成部68は、上述のプログラム生成部36と同様に、シミュレート部66が実行するシミュレーションで取得したロボットモデル102Mの位置データに基づいて、ロボットシステム100の動作プログラムを生成する(ステップS6)。
なお、プログラミング装置60は、プロセッサ及びメモリ(システムメモリ14又はワークメモリ16)を有する1つのコンピュータから構成されてもよい。又は、モデル配置部62、目的箇所抽出部64、シミュレート部66、及びプログラム生成部68の各々が、プロセッサ及びメモリを有する1つのコンピュータから構成されてもよい。
なお、抽出条件の第1条件または第2条件として、ワークモデル150Mの要素モデル名称を特定する条件を追加してもよい。この場合、オペレータは、データ入力部20を操作して、各部材モデルに名称(「ボスA」、「ジョイントB」等)を登録してもよい。
また、モデル配置部26、62は、ロボット座標系CRに加えて、基準座標系C0を設定し、基準座標系C0を基準としてもよい。また、第nの撮像位置は、撮像部モデル104Mの視線Oが目的箇所上の任意の点を通過するように、設定されてもよい。
また、上述の実施形態においては、ロボット102(ロボットモデル102M)が、撮像部104(撮像部モデル104M)を移動させて、ワーク150(ワークモデル150M)に対して撮像位置へ移動する場合について述べた。
しかしながら、これに限らず、ロボット102(ロボットモデル102M)によってワーク150(ワークモデル150M)を移動させて、撮像部104(撮像部モデル104M)に対して撮像位置に位置決めしてもよい。この場合、ワーク150(ワークモデル150M)は、手首部112(手首部モデル112M)に連結される。
また、図1、図7、図13、図18、及び図20に示す実施形態の特徴を、互いに組み合わせるでもよい。例えば、図13に示す干渉検出部44、非干渉位置検索部46及び第2の撮像位置修正部48を、図7に示す実施形態に追加してもよい。また、ロボット102は、垂直多関節型ロボットに限らず、パラレルリンク型ロボット又はローダ等であってもよい。
以上、実施形態を通じて本開示を説明したが、上述の実施形態は、特許請求の範囲に係る発明を限定するものではない。