以下、添付図面を参照しながら各実施例について詳細に説明する。
図1は、一実施例による組立作業ロボット(以下、単に「ロボット」と称する)の動作生成装置1を示す構成図である。図2は、処理装置100のハードウェア構成の一例を示す図である。
動作生成装置1は、処理装置100を含む。処理装置100は、ユーザの位置にあるコンピュータにより実現されてよいし、ユーザから離れた遠隔位置にあるコンピュータ(例えばサーバ)により実現されてもよいし、これらの組み合わせで実現されてもよい(図15参照)。
図2に示す例では、処理装置100は、制御部101、主記憶部102、補助記憶部103、ドライブ装置104、ネットワークI/F部106、入力部107を含む。
制御部101は、主記憶部102や補助記憶部103に記憶されたプログラムを実行する演算装置であり、入力部107や記憶装置からデータを受け取り、演算、加工した上で、記憶装置などに出力する。
主記憶部102は、ROM(Read Only Memory)やRAM(Random Access Memory)などである。主記憶部102は、制御部101が実行する基本ソフトウェアであるOS(Operating System)やアプリケーションソフトウェアなどのプログラムやデータを記憶又は一時保存する記憶装置である。
補助記憶部103は、HDD(Hard Disk Drive)などであり、アプリケーションソフトウェアなどに関連するデータを記憶する記憶装置である。
ドライブ装置104は、記録媒体105、例えばフレキシブルディスクからプログラムを読み出し、記憶装置にインストールする。
記録媒体105は、所定のプログラムを格納する。この記録媒体105に格納されたプログラムは、ドライブ装置104を介して処理装置100にインストールされる。インストールされた所定のプログラムは、処理装置100により実行可能となる。
ネットワークI/F部106は、有線及び/又は無線回線などのデータ伝送路により構築されたネットワークを介して接続された通信機能を有する周辺機器と処理装置100とのインターフェースである。
入力部107は、カーソルキー、数字入力及び各種機能キー等を備えたキーボード、マウスやタッチパッド等を有する。
尚、図2に示す例において、以下で説明する各種処理等は、プログラムを処理装置100に実行させることで実現することができる。また、プログラムを記録媒体105に記録し、このプログラムが記録された記録媒体105を処理装置100に読み取らせて、以下で説明する各種処理等を実現させることも可能である。なお、記録媒体105は、様々なタイプの記録媒体を用いることができる。例えば、記録媒体105は、CD(Compact Disc)−ROM、フレキシブルディスク、光磁気ディスク等の様に情報を光学的,電気的或いは磁気的に記録する記録媒体、ROM、フラッシュメモリ等のように情報を電気的に記録する半導体メモリ等であってよい。なお、記録媒体105には、搬送波は含まれない。
処理装置100は、機能部として、図1に示すように、データ取得部10と、変数設定部12と、組立状態再現部14と、教示点導出部16と、ロボット動作生成部18とを含む。データ取得部10、変数設定部12、組立状態再現部14、教示点導出部16、及びロボット動作生成部18は、それぞれ、制御部101が主記憶部102に記憶された1つ以上のプログラムを実行することで実現できる。
また、処理装置100は、組立作業順序データ記憶部20、ロボット動作テンプレート記憶部21、製品データ記憶部22、設備データ記憶部23、組立状態再現データ記憶部24、教示点リスト記憶部25、及びロボット動作プログラム記憶部26を含む。また、処理装置100は、ロボット動作テンプレートデータベース27(以下、「ロボット動作テンプレートDB27」と称する)を含む。組立作業順序データ記憶部20、ロボット動作テンプレート記憶部21、製品データ記憶部22、設備データ記憶部23、組立状態再現データ記憶部24、教示点リスト記憶部25及びロボット動作プログラム記憶部26は、例えば補助記憶部103により実現できる。また、ロボット動作テンプレートDB27は、例えば補助記憶部103により実現できる。
組立作業順序データ記憶部20は、組立対象製品を組み立てる際の一連の組立作業の順序データ(以下、「組立作業順序データ」と称する)を記憶する。組立対象製品の組み立てには、ロボットが少なくとも部分的に用いられる。例えば、組立対象製品の組み立ては、ロボットと人とで協動して実現されてもよいし、完全にロボットにより実現されてもよい。組立作業順序データは、ユーザにより生成される。組立対象製品は、任意であり、例えば各種の半導体製品や、各種の電子機器、各種の機械等であってよい。
ロボット動作テンプレート記憶部21は、ロボット動作生成部18で使用されるロボット動作テンプレート(後述)が記憶される。ロボット動作テンプレート記憶部21には、後述のロボット動作テンプレートDB27内の各種のロボット動作テンプレートのうちの、ロボット動作生成部18で使用される特定の1つ以上のロボット動作テンプレートが記憶される。
製品データ記憶部22は、組立対象製品の製品データを記憶する。製品データは、組立対象製品を形成する各部品の3次元(3D)データ(以下、「部品3Dデータ」とも称する)、及び、同製品の部品構成データを含む。部品3Dデータは、各部品の単品状態のデータと、各部品が組み立てられた状態のデータとを含む。各部品が組み立てられた状態のデータに代えて、各部品が組み立てられた状態を再現できる他のデータ(例えば各部品の配置を表すデータ等)が用いられてもよい。部品構成データは、各部品の親子関係を表すデータであり、例えばアセンブリツリー(図6のアセンブリツリー402参照)の形態である。製品データは、既知データとしてユーザにより生成される。
設備データ記憶部23は、組立設備データを記憶する。組立設備データは、組立対象製品を組み立てる設備に関するデータであり、設備の3Dデータを含む。設備は、ロボット等を含む。設備の3Dデータは、好ましくは、設備をほぼ再現できるデータである。但し、設備の3Dデータは、以下説明する各種処理に関連しない設備部分については含んでいなくてもよい。組立設備データは、既知データとしてユーザにより生成される。
組立状態再現データ記憶部24は、組立状態再現データを記憶する。組立状態再現データは、一連の組立作業に含まれる一の組立作業の開始時における組立対象製品の組立状態を再現するデータであり、組立状態再現部14により生成される。一の組立作業の単位は、作業分類に対応してよく、例えば、一の組立作業と、他の一の組立作業とは、作業分類が異なり得る関係がある。但し、一の組立作業は、複数の作業分類の作業の複合であってもよい。組立状態再現データについては後述する。
教示点リスト記憶部25は、教示点リストを記憶する。後述するように、教示点リストは、教示点導出部16によりロボット動作テンプレート毎に生成される。教示点リストは、例えば、対応するロボット動作テンプレートに紐付けられる態様で記憶される。
ロボット動作プログラム記憶部26は、組立対象製品に係るロボット動作プログラムを記憶する。組立対象製品に係るロボット動作プログラムは、後述するようにロボット動作生成部18により生成される。
ロボット動作テンプレートDB27は、組立対象製品に係るロボット動作プログラムを生成するためのロボット動作テンプレートを記憶する。ロボット動作テンプレートは、教示点に係る情報を変数で表したロボットプログラムの雛形である。尚、教示点は、後述の座標値及び姿勢値で表すことができる。ロボット動作テンプレートは、予め用意され、ユーザにより変数等が設定される。ロボット動作テンプレートは、作業分類(組立作業の属性)ごとに用意される。例えば、ロボット動作テンプレートでは、個別の作業に依存した情報(設備情報や、ワーク部品の属性、把持や組付け時の要件、移動量等)が変数化され、作業分類ごとのロボット動作がテンプレート化される。作業分類とは、ピック、プレイス、運搬、撮像、貼付け等である。
ここで、図3及び図4を参照して、ロボット動作テンプレートの例について説明する。ここでは、一例として、作業分類「ピック」に関するロボット動作テンプレートの例について説明する。
図3は、ロボット動作テンプレートの一例を示す図である。図4は、ロボット動作テンプレートの説明図であり、テンプレート化したロボット動作を概略的に示す図である。図4には、供給機900からワーク部品800をピックする作業に関するロボットハンド700の動きが、複数の各教示点P1〜P5と共に、点線の矢印で示される。
ロボット動作テンプレートは、教示点変数化部300と、教示点順序記述部302とを含む。
教示点変数化部300では、ロボット動作テンプレートで使用する変数の変数名や値が記述される。尚、ユーザは、目的動作に応じて変数の値を変更できる。図3に示す例では、教示点変数化部300は、基準点(後述)からの距離の情報310と、使用設備情報312とを含む。基準点は、例えば、ロボットハンドによる部品把持位置や部品組付け位置であり、導出方法は後述する。使用設備情報312は、使用するロボットを特定する情報や、使用するロボットハンドを特定する情報等を含む。
教示点順序記述部302では、ロボットの動作の各教示点の順序(動作に従った順序)に従って、各教示点の変数が記述される。各教示点の変数の具体的な値は、後述のように教示点導出部16により導出される。図3に示す例では、教示点順序記述部302は、動作順序の情報314を含む。ここでは、動作順序の情報314は、図4に示す教示点601〜605に係る情報である。教示点601〜605は、図3に示すように、ロボットの動作に従った順序で記述される。
尚、必須ではないが、ロボット動作テンプレートは、その他の情報として、動作速度、動作方法(補間方法)、IO時間、初期把持状態等の情報を含んでよい。尚、ロボット動作テンプレートは、例えば、教示点変数化部300における変数の値がデフォルト値に設定された状態(又は無効値に設定された状態)でロボット動作テンプレートDB27内に保存される。
データ取得部10は、組立作業順序データ記憶部20、製品データ記憶部22、設備データ記憶部23、及びロボット動作テンプレートDB27から、変数設定部12や組立状態再現部14や教示点導出部16で利用する各種データ等を取得する。
変数設定部12は、ユーザからの入力に基づいて、ロボット動作テンプレートにおける各種変数(図3の教示点変数化部300参照)を設定する。尚、ユーザからの入力は、入力部107を介して取得される。
組立状態再現部14は、組立作業順序データ記憶部20内の組立作業順序データと、製品データ記憶部22内の製品データとに基づいて、一連の組立作業に含まれる一の組立作業の開始時における製品の組立状態を再現する。組立状態再現部14は、再現結果である組立状態再現データを生成する。組立状態再現部14による組立状態再現方法の具体例は後述する。
教示点導出部16は、一連の組立作業に含まれる一の組立作業ごとに、組立状態再現データ記憶部24内の組立状態再現データに基づいて、該一の組立作業に係る教示点を導出する。教示点導出部16は、一連の組立作業に含まれる各一の組立作業に対して、教示点を導出する。
ロボット動作生成部18は、一連の組立作業に含まれる一の組立作業ごとに、教示点導出部16により導出された教示点に基づいて、該一の組立作業に係る動作プログラムを、生成する。ロボット動作生成部18は、一連の組立作業に含まれる各一の組立作業に対して、動作プログラムを生成し、各動作プログラムを組み合わせることで、最終的なロボット動作プログラムを生成する。
次に、図5を参照して、動作生成装置1の動作例について説明する。
図5は、ある一連の組立作業を対象としたときの動作生成装置1の動作例を示す概略フローチャートである。ここでは、一例として、対象の一連の組立作業は、N個の組立作業からなるものとする。
ステップS500では、データ取得部10は、対象の一連の組立作業に係る各種データを、組立作業順序データ記憶部20、製品データ記憶部22、及び設備データ記憶部23のそれぞれから取得する。
ステップS502では、データ取得部10は、ステップS500で取得した組立作業順序データに基づいて、ロボット動作テンプレートDB27(図示せず)から、対象の一連の組立作業に係るロボット動作テンプレートを抽出(取得)する。例えば、データ取得部10は、対象の一連の組立作業に含まれる各組立作業の作業分類に基づいて、作業分類に応じたロボット動作テンプレートを抽出する。ここでは、データ取得部10は、N個の組立作業に対応して、N個のロボット動作テンプレートを抽出する。尚、データ取得部10は、組立作業順序データに基づいてN個のロボット動作テンプレートを自動的に抽出することに代えて、ユーザからの入力(選択)に基づいてN個のロボット動作テンプレートを抽出してもよい。即ち、使用するロボット動作テンプレートは、ユーザにより選択されてもよい。
ステップS504では、変数設定部12は、ステップS502で取得したロボット動作テンプレートにおける変数の設定処理を行う。例えば、変数設定部12は、変数の設定作業をユーザに要求する。ロボット動作テンプレートは、例えば、教示点変数化部300における変数の値がデフォルト値に設定された状態(又は無効値に設定された状態)でロボット動作テンプレートDB27から取得される。ステップS502で取得した全てのロボット動作テンプレートに対してユーザによる変数設定作業が完了すると、変数設定部12は、変数が設定された全てのロボット動作テンプレートを、ロボット動作テンプレート記憶部21に記憶する。ステップS504が終了すると、ステップS506に進む。
ステップS506では、組立状態再現部14は、kを“1”に設定(初期化)する。
ステップS508では、組立状態再現部14は、組立作業順序でk番目のロボット動作テンプレートを選択する。以下、N個の組立作業のうちの、k番目のロボット動作テンプレートに対応する組立作業を、「対象作業」と称する。
ステップS510では、組立状態再現部14は、k番目のロボット動作テンプレートに係る組立状態再現処理を行う。k番目のロボット動作テンプレートに係る組立状態再現処理は、k番目のロボット動作テンプレートに係る一の組立作業の開始時における製品の組立状態を再現する処理である。即ち、k番目のロボット動作テンプレートに係る組立状態再現処理は、対象作業の開始時における製品の組立状態を再現する処理である。組立状態再現処理の例は、図6乃至図8を参照して後述する。
ステップS512では、教示点導出部16は、組立状態再現データ記憶部24から、k番目のロボット動作テンプレートに係る組立状態再現データ(ステップS510で生成された組立状態再現データ)を取得する。
ステップS514では、教示点導出部16は、ステップS500で取得された組立設備データと、ステップS512で取得した組立状態再現データとに基づいて、k番目のロボット動作テンプレートに係る教示点導出処理を行う。即ち、教示点導出部16は、対象作業に係る教示点導出処理を行う。教示点導出処理の例は、図10乃至図12を参照して後述する。
ステップS516では、教示点導出部16は、k=Nであるか否かを判定する。Nは、上述のように、対象の一連の組立作業の含まれる組立作業の数である。k=Nの場合は、ステップS520に進み、k≠Nの場合は、ステップS518を経て、ステップS508に戻る。
ステップS518では、教示点導出部16は、kを“1”だけインクリメントする。
ステップS520では、ロボット動作生成部18は、教示点リスト記憶部25内の教示点リスト(対象の一連の組立作業に係る教示点リスト)と、ステップS502で取得したロボット動作テンプレートとに基づいて、ロボット動作プログラムを生成する。教示点リスに基づくロボット動作プログラムの生成処理の例は、図13及び図14を参照して後述する。
次に、図6乃至図8を参照して、組立状態再現処理の例について説明する。
図6は、組立状態再現処理に係る入力の一例を模式的に示す図である。
図6には、組立作業順序データ400と、初期位置データ401と、組立対象製品のアセンブリツリー402と、組立対象製品の組立状態に係る部品3Dデータ404とが模式的に示される。
組立作業順序データ400によれば、組立対象製品は、以下の手順(組立作業の順序)で組付けられる。
手順1.部品Cを部品Aに組付ける。
手順2.部品Aを部品Xに組付ける。
手順3.部品Wを部品Xに組付ける。
手順4.部品Yを部品Zに組付ける。
手順5.部品Zを部品Wに組付ける。
手順6.部品Dを部品Cに組付ける。
手順7.部品Bを部品Aに組付ける。
各手順に係る組立作業は、作業対象のワーク部品(以下、単に「作業対象ワーク部品」と称する)と、該作業対象ワークの組付け先となる部品(以下、単に「組付け先部品」と称する)との関係を表す。例えば、手順1に係る組立作業では、部品Cが作業対象ワーク部品であり、部品Aが組付け先部品である。
ここでは、一例として、手順1〜7は、部品単位で規定されているが、部品単位とサブアセンブリ(2つ以上の部品の組立体:部品組立体)単位との組み合わせで規定されてもよい。
また、初期位置データ401は、作業対象ワーク部品及び組付け先部品の各初期位置を表す。初期位置データ401によれば、作業対象ワーク部品及び組付け先部品の各初期位置は、それぞれの供給位置及び組付け位置であり、例えば以下の座標である。
作業対象ワーク部品:(10,20,10,0,90,90)
組付け先部品:(100,0,−30,0,0,0)
ここで、上記の座標の表記(以下の説明における同表記も同様)は、X軸、Y軸、及びZ軸の3軸の各座標(x、y、z)と、姿勢(向き)を表すオイラー角(α、β、γ)とからなる。以下、作業対象ワーク部品等の位置を表すとき、X軸、Y軸、及びZ軸の3軸の各座標の値を、「座標値」とも称し、各オイラー角の値を、「姿勢値」とも称する。
また、アセンブリツリー402によれば、組立対象製品は、部品Xと、サブアセンブリSubAssy1と、サブアセンブリSubAssy3との組み合わせからなる。サブアセンブリSubAssy1は、部品Aと、部品Bと、サブアセンブリSubAssy2との組み合わせからなる。また、サブアセンブリSubAssy2は、部品Cと部品Dとからなり、サブアセンブリSubAssy3は、部品Wと部品Zと部品Yとからなる。尚、以下の説明において、アセンブリツリーにおいて、ある部品に関する“子供”とは、該部品の配下にある部品(ツリー構造上で該部品が枝元となる部品)にある部品を指す。
また、部品3Dデータ404によれば、組立対象製品は、部品Xの上に、サブアセンブリSubAssy1と、サブアセンブリSubAssy3とが別々の位置に配置されている。サブアセンブリSubAssy1は、部品Aの上に、部品BとサブアセンブリSubAssy2とが別々の位置に配置されている。サブアセンブリSubAssy2は、部品Cの上に部品Dが配置されている。サブアセンブリSubAssy3は、部品Wの上に部品Zが配置され、部品Zの上に部品Yが配置されている。
図7は、組立状態再現処理に係る出力の一例を模式的に示す図である。ここでは、図7には、手順5に係る組立作業“部品Zを部品Wに組付ける”が対象作業であるとする。
図7には、組立状態再現処理の結果(出力)が概念的に示される。具体的には、図7には、アセンブリツリー412と、作業対象ワークの3Dデータ414と、組付け先の3Dデータ416とが模式的に示される。尚、アセンブリツリー412では、手順6及び手順7が実行されていない状態が示される。
手順5に係る組立作業“部品Zを部品Wに組付ける”が対象作業であるとき、作業対象ワーク部品は、部品Zである。部品Zには、手順5よりも前に(即ち手順4にて)、部品Yが既に組付けられているので、作業対象ワークは、3Dデータ414に示すように、部品Zと部品Yとなる(即ち部品Yが組付けられた部品Zとなる)。
また、手順5に係る組立作業“部品Zを部品Wに組付ける”が対象作業であるとき、組付け先部品は、部品Wである。部品Wには、手順5よりも前に(即ち手順3等にて)、部品X等が既に組付けられているので、組付け先は、3Dデータ416に示すように、部品X,部品A,部品Cと部品Wとなる。即ち、組付け先は、3Dデータ416に示すように、部品C、部品A、及び部品Xの3部品が組付けられた部品Wとなる。
図8は、組立状態再現処理の一例を示すフローチャートである。図9は、図8の説明図であり、各種フラグのイメージ図である。図8に示す処理は、図5のステップS510として実行される。
ステップS800では、組立状態再現部14は、組立対象製品のアセンブリツリー(図6のアセンブリツリー402参照)の全ての部品に、チェック用フラグと表示用フラグを付け加える(図9参照)。
ステップS802では、組立状態再現部14は、全ての部品に係るチェック用フラグ及び表示用フラグを“False”に初期化する。
ステップS804では、組立状態再現部14は、j=kに設定する。
ステップS806では、組立状態再現部14は、j番目の組立作業(j番目のロボット動作テンプレートに対応する組立作業)に係る作業対象ワーク部品と、同組立作業に係る組付け先部品のそれぞれに係るチェック用フラグ及び表示用フラグを“True”にセットする。
ステップS808では、組立状態再現部14は、ステップS806でチェック用フラグを“True”にセットした各部品に、子供がいるか否かを判定する。子供がいる場合は、ステップS810に進み、それ以外の場合は、ステップS812に進む。
ステップS810では、組立状態再現部14は、子供に対応する部品に係るチェック用フラグを“True”にセットにして、ステップS808に戻る。このようにして、子供の子供(孫)、孫の子供(ひ孫)といった具合に、最下層までチェック用フラグが“True”にセットされる。
ステップS812では、組立状態再現部14は、jを“1”デクリメントする。即ち、処理対象が、前の組立作業に移行される。
ステップS814では、組立状態再現部14は、j=0であるか否かを判定する。j=0であることは、前の組立作業が無いことを意味し、従って、手順1までの組立作業が考慮されたことを意味する。j=0の場合は、ステップS818に進み、j≠0の場合は、ステップS816に進む。
ステップS816では、組立状態再現部14は、j番目の組立作業に係る作業対象ワーク部品及び組付け先部品のいずれかに係るチェック用フラグが“True”であるか否かを判定する。判定結果が“YES”の場合は、ステップS806に戻り、それ以外の場合は、ステップS812に戻る。
ステップS818では、組立状態再現部14は、表示用フラグが“True”のサブアセンブリがあり、且つ、該サブアセンブリの配下の全ての部品の表示用フラグが“False”であるか否かを判定する。サブアセンブリの配下の全ての部品とは、該サブアセンブリを形成する各部品の全てに対応する。例えば図6に示す例では、サブアセンブリSubAssy1の配下の全ての部品とは、部品A、部品B,部品C,及び部品Dである。判定結果が“YES”の場合は、ステップS820に進み、それ以外の場合は、ステップS822にスキップする。
ステップS820では、組立状態再現部14は、表示用フラグが“True”のサブアセンブリの配下にある全ての部品の表示用フラグを“True”にセットする。
ステップS822では、組立状態再現部14は、表示用フラグが“True”の各部品を初期位置に移動させる。この際、組立状態再現部14は、k番目のロボット動作テンプレートに係る作業分類に応じて、それぞれの部品を初期位置へ移動させる。例えば、組立状態再現部14は、作業対象ワーク部品及び組付け先部品を、それぞれ、それぞれの供給位置及び組付け位置に移動させる。供給位置及び組付け位置は、作業分類に応じて、組立設備データに基づいて導出されてよい。組立状態再現部14は、作業対象ワーク部品に組付けられている他の部品が存在する場合は、作業対象ワーク部品及び該他の部品に係る部品3Dデータに基づいて、該他の部品を作業対象ワーク部品に対して位置付ける。これにより、作業対象ワークの3Dデータが再現される。同様に、組立状態再現部14は、組付け先部品に組付けられている他の部品が存在する場合は、組付け先部品及び該他の部品に係る部品3Dデータに基づいて、該他の部品を組付け先部品に対して位置付ける。これにより、組付け先の3Dデータが再現される。このようにして、k番目のロボット動作テンプレートに係る一の組立作業の開始時における製品の組立状態が再現される(図7参照)。組立状態再現部14は、再現した組立状態のデータ(組立状態再現データ)を、組立状態再現データ記憶部24に記憶する。図7では、手順5に係る一の組立作業の開始時における製品の組立状態の再現(出力)が示されている。
ところで、実際の工場では、生産変動の対応のために作業順序の組み換えが行われており、その度にロボット動作生成をやり直すのは不便である。例えば、図6に示す例では、当初は、以下のような手順(組立作業の順序)が規定されていたが、上述のような手順に変更されている。
手順01.部品Cを部品Dに組付ける。
手順02.サブアセンブリSubAssy2を部品Aに組付ける。
手順03.部品Bを部品Aに組付ける。
手順04.部品Yを部品Zに組付ける。
手順05.部品Zを部品Wに組付ける。
手順06.サブアセンブリSubAssy3を部品Xに組付ける。
手順07.サブアセンブリSubAssy1を部品Xに組付ける。
このような、作業順序に依存する組立対象製品の組立状態をテンプレート化することは難しい。作業順序の場合の数は、膨大であり、例えば、50作業ある場合は、作業順序は50!(1064)通りにも上る。
この点、本実施例によれば、組立状態再現部14は、組立作業順序データ記憶部20内の組立作業順序データと、製品データ記憶部22内の製品データとに基づいて、特定の一の組立作業の開始時における組立状態を再現する。従って、ユーザは、作業順序の組み換えのような作業順序の変更時には、それに伴い組立作業順序データを変更するだけでよくなる。
他方、作業順序の組み換えのような作業順序の変更時には、製品データ記憶部22内の製品データのうちの、部品構成データについても変更が必要となる場合があり得る。例えば、当初はサブアセンブリとして組付けられる予定であった部品が、単独で組付けられるように変更された場合、部品構成が変更されることになる。
この点、部品構成データについてもユーザに変更してもらうことしてもよいが、図8に示す処理によれば、かかるユーザによる部品構成データの変更を必要とせずに、特定の一の組立作業の開始時における製品の組立状態を再現できる。具体的には、図8に示す処理によれば、組立作業順序データに基づいて組立作業を遡りながら表示用フラグを“True”にセットするので(ステップS812、ステップS816等参照)、部品構成の変更の影響を低減できる。また、図8に示す処理によれば、ステップS818及びステップS820を設けることで、サブアセンブリ単位で作業順序が規定される場合でも、サブアセンブリ配下の部品が省略されない態様で組立状態を再現できる。
また、実際の工場では、一連の組立作業の途中で、組み立て途中のサブアセンブリなどとは、別の組立作業を行うことがあるため、対象作業ワークに関係ある部品だけを再現することが望ましい。
この点、図8に示す処理によれば、ステップS806〜ステップS816を行うことで、対象作業ワークに関係ある部品だけを再現できる。即ち、特定の一の組立作業に係る作業対象ワーク部品と、同組立作業に係る組付け先部品とに基づいて、該作業対象ワーク部品に既に組付けられている部品を含む作業対象ワークと、該組付け先部品に既に組付けられている組付けとを再現できる。
次に、図10乃至図12を参照して、教示点導出処理の例について説明する。
図10及び図11は、教示点導出処理の説明図である。図10は、作業対象ワークの把持時(ピック)に対する教示点を側面視で模式的に示す図であり、図11は、組付け先への作業対象ワークの組付け時(プレイス)に対する教示点を側面視で模式的に示す図である。
図10には、部品供給トレイ902上の作業対象ワーク810がロボットハンド700で把持された状態が示される。図10において、P10は、把持位置に関する教示点であり、P11は、アプローチ位置に関する教示点であり、P12は、持ち上げ位置に関する教示点である。尚、各教示点間でのロボットハンド700の動作方向は、直線であってよい。
図11には、組付け先820への作業対象ワークの組付け時の状態が示される。図11において、P13は、組付け位置に関する教示点であり、P14は、退避位置に関する教示点であり、P15は、アプローチ位置に関する教示点である。尚、各教示点間でのロボットハンド700の動作方向は、直線であってよい。
教示点導出部16は、部品供給トレイ902上の作業対象ワーク810の把持位置でのロボットハンド700の姿勢値と、組付け先820への作業対象ワークの組付け位置でのロボットハンド700の姿勢値とを導出する。把持位置及び組付け位置でのロボットハンド700の姿勢は、組立状態再現データ(即ち組立状態再現処理の出力)等に基づいて、導出できる。この際、教示点導出部16は、組立設備データに基づいて、ロボットハンド700が組立設備に載置される物体や組立設備自体にぶつかることなく(干渉することなく)把持及び組付けできる姿勢値を導出する。組立設備に載置される物体は、例えば、組立対象製品に係る部品や部品組立体であって、作業対象ワークや組み付け先とは関係のない部品や部品組立体であり、以下、「仮置き物体」と称する。尚、組立設備に仮置き物体が無い場合は、かかる仮置き物体は考慮されない(以下の説明においても同様である)。
また、教示点導出部16は、組立設備データに基づいて、把持位置から組付け位置までロボットハンド700が組立設備自体や仮置き物体にぶつかることなく移動できる動作方向(作業対象ワークの移動軌跡)を導出する。
図12は、教示点導出処理の一例を示すフローチャートである。図12に示す処理は、図5のステップS514として実行される。
ステップS1200では、教示点導出部16は、作業対象ワークに対する部品把持位置の座標値(x10、y10、z10)をグローバル座標系で導出する。グローバル座標系での部品把持位置の座標値は、作業対象ワークに係る部品把持位置(部品座標系)と、組立状態再現データ(グローバル座標系)に基づく作業対象ワークの位置とに基づいて、導出されてよい。尚、ここで使用される組立状態再現データは、k番目のロボット動作テンプレートに係る一の組立作業の開始時における製品の組立状態に係るデータである。
ステップS1202では、教示点導出部16は、作業対象ワークに係る部品把持位置(部品座標系)に基づいて、作業対象ワークを把持できる姿勢値(α10、β10、γ10)をグローバル座標系で導出する。この際、教示点導出部16は、組立設備データに基づいて、ロボットハンド700が仮置き物体や組立設備にぶつかることなく、作業対象ワークを把持できる姿勢値(α10、β10、γ10)を導出する。この導出結果と、ステップS1200の導出結果とから、グローバル座標系で把持位置に関する教示点(x10、y10、z10、α10、β10、γ10)(図10のP10参照)が得られる。
ステップS1204では、教示点導出部16は、組立状態再現データに基づいて、組付け先への作業対象ワークの組付け位置(部品組付け位置)の座標値(x13、y13、z13)をグローバル座標系で導出する。グローバル座標系での組付け位置の座標値は、組立状態再現データ(グローバル座標系)に基づく組付け先部品の位置に基づいて導出できる。例えば、作業対象ワーク部品の組付け位置は、組付け先部品の供給位置情報と、製品組立時の作業対象ワーク部品と組付け先部品の相対位置、から導出できる。
ステップS1206では、教示点導出部16は、作業対象ワークに係る部品組付け位置(グローバル座標系)に基づいて、作業対象ワークを組付け先に組付けできる姿勢値(α13、β13、γ13)をグローバル座標系で導出する。この際、教示点導出部16は、組立設備データに基づいて、ロボットハンド700が仮置き物体や組立設備にぶつかることなく、作業対象ワークを組付け先に組付けできる姿勢値(α13、β13、γ13)を導出する。この導出結果と、ステップS1204の導出結果とから、グローバル座標系で組付け位置に関する教示点(x13、y13、z13、α13、β13、γ13)(図11のP13参照)が得られる。
ステップS1208では、教示点導出部16は、組立設備データに基づいて、ステップS1202で得た把持位置に関して、ロボットハンド700が仮置き物体や組立設備にぶつかることなく移動できる軌跡を導出する。即ち、教示点導出部16は、座標値(x10、y10、z10)までの軌跡及びからの軌跡であって、ロボットハンド700が仮置き物体や組立設備にぶつかることなく移動できる軌跡(動作方向)を導出する。この際、教示点導出部16は、組立設備データに基づいて、ロボットハンド700が仮置き物体や組立設備にぶつかることなく移動できる姿勢値(軌跡上の各位置における姿勢値)を導出する。軌跡上の各位置における姿勢値は、一定であってもよいし、変化される値であってもよい。
ステップS1210では、教示点導出部16は、ステップS1208で得た軌跡(動作方向)と、k番目のロボット動作テンプレートに記述される基準点からの距離とに基づいて、軌跡上の各教示点を導出する。このとき、基準点としては、把持位置に関する教示点(x10、y10、z10、α10、β10、γ10)が用いられる。この結果、例えば、グローバル座標系でアプローチ位置に関する教示点(x11、y11、z11、α11、β11、γ11)(図10のP11参照)や持ち上げ位置に関する教示点(x12、y12、z12、α12、β12、γ12)(図10のP12参照)が得られる。
ステップS1212では、教示点導出部16は、組立設備データに基づいて、ステップS1206で得た組付け位置に関して、ロボットハンド700が仮置き物体や組立設備にぶつかることなく移動できる軌跡を導出する。即ち、教示点導出部16は、座標値(x13、y13、z13)までの軌跡及びからの軌跡であって、ロボットハンド700が仮置き物体や組立設備にぶつかることなく移動できる軌跡(動作方向)を導出する。この際、教示点導出部16は、組立設備データに基づいて、ロボットハンド700が仮置き物体や組立設備にぶつかることなく移動できる姿勢値(軌跡上の各位置における姿勢値)を導出する。軌跡上の各位置における姿勢値は、一定であってもよいし、変化される値であってもよい。
ステップS1214では、教示点導出部16は、ステップS1212で得た軌跡(動作方向)と、k番目のロボット動作テンプレートに記述される基準点からの距離とに基づいて、軌跡上の各教示点を導出する。このとき、基準点としては、組付け位置に関する教示点(x13、y13、z13、α13、β13、γ13)が用いられる。この結果、例えば、グローバル座標系で退避位置に関する教示点(x14、y14、z14、α14、β14、γ14)(図11のP14参照)やアプローチ位置に関する教示点(x15、y15、z15、α15、β15、γ15)(図11のP15参照)が得られる。
ステップS1216では、教示点導出部16は、ステップS1202、ステップS1206、ステップS1210及びステップS1214で得た各教示点を、教示点順序に従ってリスト化した教示点リストを生成(出力)し、教示点リスト記憶部25に記憶する。
図12に示す処理によれば、組立状態再現データに基づいて、作業対象ワークに対する部品把持位置の座標値、及び、組付け先への作業対象ワークの組付け位置の座標値が導出される。これにより、例えば作業対象ワークや組付け先が部品単体ではなくサブアセンブリであった場合でも、かかる状態が再現される組立状態再現データに基づいて同座標値を導出できる。
また、図12に示す処理によれば、作業順序の組み換えのような作業順序の変更時には、それに応じて変化した組立状態再現データに基づいて、作業対象ワークに対する部品把持位置の座標値等の各教示点を導出できる。また、図12に示す処理によれば、組立設備データに基づいて、ロボットハンド700が仮置き物体や組立設備にぶつかることなく移動できる各教示点を導出できる。
次に、図13及び図14を参照して、ロボット動作プログラムの生成処理について説明する。
図13は、ロボット動作プログラムの生成処理の流れを模式的に示す図である。図13には、基準点情報1301と、基準オフセット情報1302と、ロボット動作テンプレートの一部(図3の教示点順序記述部302参照)1303と、教示点リスト1304と、動作プログラム1305とが示される。
基準点情報1301は、基準点REFの情報である。基準点REFは、例えば、図12のステップS1202で得られる把持位置に関する教示点(x10、y10、z10、α10、β10、γ10)や、ステップS1206で得られる組付け位置に関する教示点(x13、y13、z13、α13、β13、γ13)である。
基準オフセット情報1302は、各教示点に関して、基準点REFからの距離であり、図3の教示点変数化部300の情報310から取得される。即ち、基準オフセット情報1302は、ユーザにより設定される情報である。
教示点リスト1304は、上述のように教示点導出部16により生成される(図12のステップS1216参照)。
図13に示す例では、ロボット動作生成部18は、教示点リスト1304に記載の各教示点を、ロボット動作テンプレート1303の教示点順序記述部302における対応する個所の変数に代入することで、ロボット動作プログラム1305を生成する。
図14は、ロボット動作プログラムの生成処理の一例を示すフローチャートである。図14に示す処理は、図5のステップS520として実行される。
ステップS1400では、ロボット動作生成部18は、i番目のロボット動作テンプレートを選択する。iの初期値は“1”である。
ステップS1402では、ロボット動作生成部18は、教示点リスト記憶部25からi番目のロボット動作テンプレートに係る教示点リストを読み出す。教示点リストは、上述のように、ステップS514(図5及び図12)によりN個のロボット動作テンプレートに対して、それぞれのロボット動作テンプレート毎に生成される。
ステップS1404では、ロボット動作生成部18は、教示点リスト内の各教示点を、i番目のロボット動作テンプレートにおける対応する個所の変数に代入することで、i番目のロボット動作テンプレートを完成させる(動作プログラムを生成する)。
ステップS1406では、ロボット動作生成部18は、i=Nであるか否かを判定する。Nは、上述のように、対象の一連の組立作業の含まれる組立作業の数である。i=Nの場合は、ステップS1410に進み、i≠Nの場合は、ステップS1408を経て、ステップS1400に戻る。
ステップS1408では、ロボット動作生成部18は、iを“1”だけインクリメントする。
ステップS1410では、ロボット動作生成部18は、完成させたN個のロボット動作テンプレートを、最終的なロボット動作プログラムとしてロボット動作プログラム記憶部26に記憶する。
本実施例によれば、上述のように、組立作業ロボットの専門知識が無いユーザでも、容易かつ短時間でロボット動作プログラムを作成することが可能となる。これにより、製品の組立状態を考慮したロボットの動作生成にかかる工数を削減できる。例えば、ユーザは、組立作業順序データ記憶部20、製品データ記憶部22、及び設備データ記憶部23内の各データを生成し、ロボット動作テンプレートの変数設定作業を行うことで、ロボット動作プログラムを得ることができる。また、上述のように、作業順序の組み換えのような作業順序の変更時には、組立作業順序データを変更するだけで、該変更が反映されたロボット動作プログラムを得ることができる。
次に、図15及び図16を参照して、動作生成装置1の実現例について説明する。
図15は、動作生成装置1がサーバとクライアントコンピュータとで実現される例の説明図である。
サーバ90は、クライアントコンピュータ70と双方向に通信可能である。通信時、サーバ90は、ネットワーク8を介してクライアントコンピュータ70に接続される。ネットワーク8は、無線通信網や、インターネット、World Wide Web、VPN(virtual private network)、WAN(Wide Area Network)、有線ネットワーク、又はこれらの任意の組み合わせ等を含んでもよい。サーバ90とクライアントコンピュータ70との間の通信は、ネットワーク8を介して実現される。
クライアントコンピュータ70は、ユーザの位置にあるコンピュータの一例であり、サーバ90は、ユーザから離れた遠隔位置にあるコンピュータの一例である。尚、クライアントコンピュータ70は、複数のユーザに対応して、複数個存在しうる。
図16は、動作生成装置1の処理装置100の各構成要素の分散態様の一例を示す表図である。図16において、処理装置100の各構成要素は、クライアントコンピュータ70及びサーバ90のうちの、○が付けられた方に設けられることを意味する。
動作生成装置1の処理装置100の各構成要素は、図16に示すように、クライアントコンピュータ70及びサーバ90に分散して設けられてよい。尚、図16に示す例は、分散態様の一例であり、多様な態様で変更可能である。例えば、図16に示す例に対する一変形例として、変数設定部12と、ロボット動作プログラム記憶部26とがクライアントコンピュータ70に設けられ、他の構成要素がサーバ90に設けられてもよい。この場合、クライアントコンピュータ70は、組立作業順序データや製品データ、設備データをサーバ90にアップデートし、それに応じてサーバ90からロボット動作テンプレートを取得する。次いで、クライアントコンピュータ70は、ユーザからの入力に基づく変数設定部12による設定結果をサーバ90に送信し、サーバ90は、該設定結果に基づいて、ロボット動作プログラムを生成する。そして、サーバ90は、生成したロボット動作プログラムをクライアントコンピュータ70に送信し、クライアントコンピュータ70は、受信したロボット動作プログラムをロボット動作プログラム記憶部26に記憶して使用する。
以上、各実施例について詳述したが、特定の実施例に限定されるものではなく、特許請求の範囲に記載された範囲内において、種々の変形及び変更が可能である。また、前述した実施例の構成要素を全部又は複数を組み合わせることも可能である。
例えば、上述した実施例では、製品データは、組立対象製品を形成する各部品の部品3Dデータ、及び、同製品の部品構成データを含むが、部品構成データは省略されてもよい。
なお、以上の実施例に関し、さらに以下の付記を開示する。
[付記1]
組立作業ロボットを少なくとも部分的に用いて組立対象製品を組み立てる際の一連の組立作業の順序データと、前記組立対象製品を形成する複数の部品の3Dデータとに基づいて、前記一連の組立作業に含まれる一の組立作業の開始時における前記組立対象製品の組立状態を再現し、
再現した前記組立状態に基づいて、前記一の組立作業に係る前記組立作業ロボットに対する教示点を導出することを含む、コンピュータにより実行される組立作業ロボットの動作生成方法。
[付記2]
前記組立対象製品の組立状態を再現することは、前記一の組立作業に係る作業対象ワークと、前記作業対象ワークが組付けられる組付け先とを特定することを含む、付記1に記載の組立作業ロボットの動作生成方法。
[付記3]
前記組立対象製品の組立状態を再現することは、更に、
前記順序データに基づいて、複数の前記部品の中から、前記一の組立作業に係る作業対象ワーク部品と、前記作業対象ワーク部品が組付けられる組付け先部品とを特定すること、及び、
前記順序データに基づいて、複数の前記部品の中に、前記一の組立作業よりも前に行われる組立作業で前記作業対象ワーク部品又は前記組付け先部品に組み付けられる部品があるか否かを判定すること、
を含む、付記2に記載の組立作業ロボットの動作生成方法。
[付記4]
複数の前記部品の中に、前記一の組立作業よりも前に行われる組立作業で前記作業対象ワーク部品に組み付けられる部品があると判定した場合に、該部品が組み付けられた前記作業対象ワーク部品に基づいて、前記作業対象ワークを特定する、付記3に記載の組立作業ロボットの動作生成方法。
[付記5]
複数の前記部品の中に、前記一の組立作業よりも前に行われる組立作業で前記組付け先部品に組み付けられる部品があると判定した場合に、該部品が組み付けられた前記組付け先部品に基づいて、前記組付け先を特定する、付記3又は4に記載の組立作業ロボットの動作生成方法。
[付記6]
複数の前記部品の関係を表す部品構成データに更に基づいて、前記作業対象ワーク及び前記組付け先を特定する、付記3〜5のうちのいずれか1項に記載の組立作業ロボットの動作生成方法。
[付記7]
前記組立対象製品の組立状態を再現することは、更に、前記一の組立作業の開始時における前記作業対象ワーク及び前記組付け先のそれぞれの位置を導出することを含む、付記2に記載の組立作業ロボットの動作生成方法。
[付記8]
前記一の組立作業の開始時における前記作業対象ワーク及び前記組付け先のそれぞれの前記位置と、前記組立対象製品の組立に用いる組立設備に表す組立設備データとに基づいて、前記教示点を導出する、付記7に記載の組立作業ロボットの動作生成方法。
[付記9]
前記組立設備に前記組立作業ロボットが干渉しない態様で、前記教示点を導出する、付記8に記載の組立作業ロボットの動作生成方法。
[付記10]
前記組立設備に加えて、前記組立設備に載置される物体にも前記組立作業ロボットが干渉しない態様で、前記教示点を導出する、付記9に記載の組立作業ロボットの動作生成方法。
[付記11]
前記組立対象製品の組立状態を再現すること、及び、前記教示点を導出することを、前記一連の組立作業に含まれる複数の組立作業のそれぞれを前記一の組立作業として、繰り返すことを含む、付記1〜10のうちのいずれか1項に記載の組立作業ロボットの動作生成方法。
[付記12]
導出した前記教示点に基づいて、前記組立作業ロボットの動作プログラムを生成することを更に含む、付記1〜11のうちのいずれか1項に記載の組立作業ロボットの動作生成方法。
[付記13]
前記教示点を導出することは、作業分類ごとに用意されたテンプレートであって、前記教示点に係る情報を変数化したテンプレートにおける変数を導出することを含む、付記1〜12のうちのいずれか1項に記載の組立作業ロボットの動作生成方法。
[付記14]
組立作業ロボットを少なくとも部分的に用いて組立対象製品を組み立てる際の一連の組立作業の順序データと、前記組立対象製品を形成する複数の部品の3Dデータとに基づいて、前記一連の組立作業に含まれる一の組立作業の開始時における前記組立対象製品の組立状態を再現する組立状態再現部と、
再現した前記組立状態に基づいて、前記一の組立作業に係る前記組立作業ロボットに対する教示点を導出する教示点導出部とを含む、組立作業ロボットの動作生成装置。
[付記15]
組立作業ロボットを少なくとも部分的に用いて組立対象製品を組み立てる際の一連の組立作業の順序データと、前記組立対象製品を形成する複数の部品の3Dデータとに基づいて、前記一連の組立作業に含まれる一の組立作業の開始時における前記組立対象製品の組立状態を再現し、
再現した前記組立状態に基づいて、前記一の組立作業に係る前記組立作業ロボットに対する教示点を導出する、
処理をコンピュータに実行させる組立作業ロボットの動作生成プログラム。