【実施例1】
【0015】
図2(a)は、実施例1に係る情報処理装置100の全体構成を表す機能ブロック図である。
図2(a)で例示するように、情報処理装置100は、3Dモデル取得部10、作業リスト取得部20、接触面抽出部30、順序制約生成部40、作業順序生成部50などとして機能する。
【0016】
図2(b)は、情報処理装置100のハードウェア構成を例示するブロック図である。
図2(b)で例示するように、情報処理装置100は、CPU101、RAM102、記憶装置103、表示装置104、入力装置105等を備える。
【0017】
CPU(Central Processing Unit)101は、中央演算処理装置である。CPU101は、1以上のコアを含む。RAM(Random Access Memory)102は、CPU101が実行するプログラム、CPU101が処理するデータなどを一時的に記憶する揮発性メモリである。記憶装置103は、不揮発性記憶装置である。記憶装置103として、例えば、ROM(Read Only Memory)、フラッシュメモリなどのソリッド・ステート・ドライブ(SSD)、ハードディスクドライブに駆動されるハードディスクなどを用いることができる。記憶装置103は、作業順序制約生成プログラムを記憶している。表示装置104は、液晶ディスプレイ、エレクトロルミネッセンスパネルなどであり、情報処理装置100の処理の結果などを表示する。入力装置105は、キーボード、マウスなどの入力装置である。なお、本実施例においては、
図2(a)の各部は、プログラムの実行によって実現されているが、専用の回路などのハードウェアであってもよい。
【0018】
3Dモデル取得部10は、複数の部品を含む製品の完成状態の情報の一例として、3Dモデルを取得する。3Dモデルは、3D CADデータなどであり、例えば入力装置105を介して入力される。作業リスト取得部20は、当該製品を組み立てるための複数の作業情報をリスト化した作業リストを取得する。作業リストは、例えば入力装置105を介して入力される。作業リストには、作業が行われる作業部品の情報である作業部品情報、作業部品の作業先である被作業部品の情報である被作業部品情報、作業部品が被作業部品に対して作業される内容を表した作業情報(Job)、などが含まれている。作業部品および被作業部品は、製品の設計者によって予め設定されている。一例として、各作業において、被作業部品は、アームロボット等によって座標が固定される。例えば、作業部品は、当該被作業部品に対して、取り付け、貼り付け、ネジ締めなどの移動を伴う作業が行われる。
【0019】
接触面抽出部30は、3Dモデル取得部10が取得した3Dモデルから、作業部品と被作業部品との接触面を抽出する。
図3(a)は、作業リスト取得部20が取得した作業リストを例示する図である。
図3(b)は、3Dモデル取得部10が取得した3Dモデルに、接触面抽出部30によって抽出された接触面が表された図である。接触面は、ハッチで描かれている。
【0020】
作業情報1(Job1)は、部品a1を部品a3に嵌合する作業を表している。Job1では、作業部品は部品a1であり、被作業部品は部品a3である。作業情報2(Job2)は、部品a2を部品a1に接続する作業を表している。Job2では、作業部品は部品a2であり、被作業部品は部品a1である。作業情報3(Job3)は、部品a3を部品Bに接続する作業を表している。Job3では、作業部品は部品a3であり、被作業部品は部品Bである。
【0021】
作業情報4(job4)は、部品c1を部品Bに取り付ける作業を表している。Job4では、作業部品は部品c1であり、被作業部品は部品Bである。作業情報5(Job5)は、部品c2を部品c1に貼り付ける作業を表している。Job5では、作業部品は部品c2であり、被作業部品は部品c1である。作業情報6(Job6)は、部品c3を部品c1に貼り付ける作業を表している。Job6では、作業部品は部品v3であり、被作業部品は部品c1である。
【0022】
作業情報7(Job7)は、部品d1を部品c1にネジ締めする作業を表している。Job7では、作業部品は部品d1であり、被作業部品は部品c1および部品Bである。作業情報8(Job8)は、部品d2を部品c1にネジ締めする作業を表している。job8では、作業部品は部品d2であり、被作業部品は部品c1および部品Bである。
【0023】
作業情報9(Job9)は、部品Eを部品Bに取り付ける作業を表している。Job9では、作業部品は部品Eであり、被作業部品は部品Bである。作業情報10(job10)は、部品f1を部品Bに貼り付ける作業を表している。Job10では、作業部品は部品f1であり、被作業部品は部品Bである。作業情報11(Job11)は、部品f2を部品Bに貼り付ける作業を表している。Job11では、部品作業は部品f2であり、被作業部品は部品Bである。
【0024】
順序制約生成部40は、3Dモデルおよび作業リストから、作業順序制約を生成する。作業順序生成部50は、順序制約生成部40が生成した作業順序制約に違反しないように、各作業情報の順序である作業順序を生成する。以下、順序制約生成部40による作業順序制約の生成の詳細について説明する。
【0025】
(設定条件1)
順序制約生成部40は、設定条件1に基づき、作業情報ごとに順序制約作業が有るか否かを判定する。
【0026】
作業リストには、被作業部品情報欄に、複数の部品が登録されている作業情報がある。例えば、
図4(a)で例示するように、Job7では、部品c1および部品Bが被作業部品情報に登録されている。
図4(b)で例示するように、部品d1は、ネジであり、部品c1を部品Bに対して固定するための部品である。したがって、部品c1が部品Bに取り付けられるJob4の後でなければ、Job7を実行することができない。
【0027】
そこで、順序制約生成部40は、作業リストの被作業部品情報欄に複数の部品が登録されている作業情報(締結作業等)の場合、対象作業の被作業部品情報が作業部品情報として登録されている作業情報を全て抽出する。
図4(c)の例では、Job7に加えて、部品d2を部品c1にネジ締めするJob8が抽出される。このJob8でも、
図4(d)で例示するように、部品c1が部品Bに取り付けられた後でなければ実行することができない。そこで、順序制約生成部40は、Job4を、Job7およびJob8の先行作業として設定する。
【0028】
(設定条件2)
順序制約生成部40は、設定条件2に基づき、作業情報ごとに順序制約作業が有るか否かを判定する。
【0029】
また、順序制約生成部40は、作業リストに含まれている同じ部品が作業部品情報欄および被作業部品情報欄に単体で登録されている作業情報に着目する。例えば、
図5(a)で例示するように、Job1では部品a1が作業部品情報に登録されており、Job2では部品a1が被作業部品情報に登録されている。
図6(a)で例示するように、部品a1が部品a3に嵌合され、部品a2が部品a1に接続される。
【0030】
このような場合、複数部品から形成される作業対象部品は、その部品を取付ける前(姿勢が固定される前)に、その構成要素となる部品を設置しておくことが好ましい。
図5(a)の例では、部品a2を部品a1に取り付けておくことが好ましい。そこで、順序制約生成部40は、作業部品情報欄および被作業部品情報欄の両方に同じ部品が単体で登録されている作業情報の場合、被作業部品情報として登録されている作業情報を、作業部品情報として登録されている作業情報の先行作業として設定する。
図5(a)および
図6(a)の例の場合、順序制約生成部40は、部品a2を部品a1に接続するJob2を、部品a1を部品a3に嵌合するJob1の先行作業として設定する。
【0031】
同様に、
図5(b)および
図6(b)の例では、部品a3が作業部品情報欄および被作業部品情報欄に単体で登録されている。この場合においては、部品a1を部品a3に嵌合するJob1の後に、部品a3を部品Bに接続するJob3が行われることが好ましい。そこで、順序制約生成部40は、Job1を、Job3の先行作業として設定する。
【0032】
同様に、
図5(c)および
図6(c)の例では、部品c1が作業部品情報欄および被作業部品情報欄に単体で登録されている。この場合においては、部品c2を部品c1に貼り付けるJob5および部品c3を部品c1に貼り付けるJob6の後に、部品c1を部品Bに取り付けるJob4が行われることが好ましい。そこで、順序制約生成部40は、Job5およびJob6を、Job4の先行作業として設定する。
【0033】
(設定条件3)
順序制約生成部40は、設定条件3に基づき、作業情報ごとに順序制約作業が有るか否かを判定する。
【0034】
また、順序制約生成部40は、作業リストの被作業部品情報欄に、同一部品が複数回登録されている場合に着目する。この場合、作業対象部品の取付け方向から、完成状態における内外設置位置を判断し、より内側の部品を先に設置することが好ましい。
【0035】
そこで、順序制約生成部40は、3Dモデル上の作業部品および被作業部品のそれぞれの最小外接直方体を設定し、各直方体の重心位置を算出する。次に、順序制約生成部40は、各作業情報の作業部品および被作業部品の接触面から、作業部品の重心方向の法線ベクトルαと被作業部品の重心方向の法線ベクトルβを算出する。法線ベクトルαの方向と法線ベクトルβの方向とが合致すれば、当該作業情報は、内側の部品の設置に該当すると判定することができる。そこで、順序制約生成部40は、法線ベクトルαの方向と法線ベクトルβの方向とが合致した作業を、他の作業の先行作業として設定する。
【0036】
例えば、
図7(a)で例示するように、部品Bが被作業部品情報欄に複数回登録されている。部品Bが被作業部品情報欄に登録されている作業は、Job3、Job4、およびJob7〜Job11である。
【0037】
部品Bが被作業部品として登録されている各Jobの作業部品は、部品a3、部品c1、部品d2、部品d2、部品E、部品f1および部品f2である。そこで、順序制約生成部40は、部品a3、部品c1、部品d2、部品d2、部品E、部品f1、部品f2および部品Bの各最小外接直方体を設定し、その重心位置を算出する。
図8(a)は、重心位置を例示する図である。この場合において、順序制約生成部40は、部品a3と部品Bとの接触面から、作業部品である部品a3の重心方向の法線ベクトルαと、被作業部品である部品Bの重心方向の法線ベクトルβとを算出する。
図8(a)で例示するように、法線ベクトルαの方向と法線ベクトルβの方向とが合致している。そこで、順序制約生成部40は、部品a3を部品Bに接続するJob3を他の作業の先行作業に設定する。
【0038】
次に、順序制約生成部40は、部品c1と部品Bとの接触面から、作業部品である部品c1の重心方向の法線ベクトルαと、被作業部品である部品Bの重心方向の法線ベクトルβとを算出する。
図8(b)で例示するように、法線ベクトルαの方向と法線ベクトルβの方向とが合致していない。したがって、
図7(b)で例示するように、順序制約生成部40は、部品c1を部品Bに接続するJob4については、他の作業の先行作業には設定しない。
【0039】
同様に、順序制約生成部40は、
図8(c)で例示するように、部品d2、部品d2、部品E、部品f1および部品f2について、それぞれ法線ベクトルαおよび法線ベクトルβを算出する。これらのうち、部品Eについては、法線ベクトルαの方向と法線ベクトルβの方向とが合致している。したがって、順序制約生成部40は、
図7(c)で例示するように、部品Eを部品Bに取り付けるJob9を、他の先行作業に設定する。また、順序制約生成部40は、部品d1を部品c1にネジ締めするJob7、部品d2を部品c1にネジ締めするJob8、部品Eを部品Bに取り付けるJob9、部品f1を部品Bに貼り付けるJob10、および部品f2を部品Bに貼り付けるJob11については、他の作業の先行作業には設定しない。
【0040】
以上のように、各部品の重心情報と各接触面との関係を取得することで、完成状態における内外設置位置を判断することができ、より内側の部品を先に設置することができる。以上の設定により、順序制約生成部40は、Job3およびJob9を、Job4、Job7、Job8、Job10およびJob11の先行作業に設定する。
【0041】
同様に、順序制約生成部40は、部品c1が被作業部品として登録されている各Jobの作業部品について、法線ベクトルαおよび法線ベクトルβを算出し、方向の合致を調べる。
図7(d)および
図8(d)で例示するように、部品c2、部品c3、部品d1および部品d2について、法線ベクトルαの方向と法線ベクトルβの方向とが合致していない。したがって、順序制約生成部40は、Job5〜Job8については、他の作業の先行作業には設定しない。
【0042】
(作業順序の生成)
作業順序生成部50は、設定条件1〜3で設定された先行作業を作業リストに集約する。次に、作業順序生成部50は、順序制約生成部40が生成した作業順序制約に違反しないように、各作業の作業順序を生成する。まず、作業順序生成部50は、
図9(a)で例示するように、作業順序制約について整理する。具体的には、作業順序生成部50は、Job2の後にJob1を行い、その後にJob3を行う作業順序グループ1を生成する。また、作業順序生成部50は、Job3の後にJob9を行い、その後にJob10およびJob11を行う作業順序グループ2を生成する。また、作業順序生成部50は、Job5およびJob6をいずれかの順序で行う作業順序グループ3を生成する。
【0043】
次に、
図9(b)で例示するように、作業順序生成部50は、作業順序グループ1の後に作業順序グループ2を行う順序を生成する。作業順序グループ3については、作業順序グループ1および作業順序グループ2に対しては特に順序が拘束されない。作業順序生成部50は、作業順序グループ1〜作業順序グループ3の後にJob4を行う順序を生成する。作業順序生成部50は、Job4の後に、Job7およびJob8をいずれかの順序で行う作業順序グループ4を行う順序を生成する。これにより、全ての作業の順序が、作業順序制約に違反しないように生成される。
【0044】
図10は、情報処理装置100が実行する各処理の流れを表すフローチャートを例示する図である。
図10で例示するように、3Dモデル取得部10は、入力装置105などから3Dモデルを取得する(ステップS1)。次に、作業リスト取得部20は、入力装置105などから作業リストを取得する(ステップS2)。次に、接触面抽出部30は、作業情報ごとの作業部品、作業情報ごとの被作業部品、および作業部品と被作業部品との接触面を抽出する(ステップS3)。
【0045】
次に、順序制約生成部40は、設定条件1に基づき、作業情報ごとに順序制約作業が有るか否かを判定する(ステップS4)。ステップS4で「Yes」と判定された場合、順序制約生成部40は、作業リストの先行作業欄に、先行作業を登録する(ステップS5)。ステップS4と並行して、順序制約生成部40は、設定条件2に基づき、作業情報ごとに順序制約作業が有るか否かを判定する(ステップS6)。
【0046】
ステップS6で「Yes」と判定された場合、順序制約生成部40は、作業リストの先行作業欄に、先行作業を登録する(ステップS7)。ステップS4およびステップS6と並行して、順序制約生成部40は、設定条件3に基づき、作業情報ごとに順序制約作業が有るか否かを判定する(ステップS8)。ステップS8で「Yes」と判定された場合、順序制約生成部40は、作業リストの先行作業欄に、先行作業を登録する(ステップS9)。
【0047】
ステップS4、ステップS6もしくはステップS8で「No」と判定された場合、またはステップS5、ステップS7もしくはステップS9の実行後、順序制約生成部40は、設定条件1〜3で設定された先行作業を作業リストに集約する(ステップS10)。その後、作業順序生成部b50は各作業情報の先行作業欄の作業とその作業の先行作業とに重複があれば、重複作業を削除する(ステップS11)。その後、フローチャートの実行が終了する。
【0048】
本実施例によれば、作業リスト取得部20が、複数の部品を含む製品を組み立てるための複数の作業情報として作業リストを取得する。3Dモデル取得部10が、製品の完成状態の情報として3Dモデルを取得する。順序制約生成部40が、作業リストの複数の作業情報のそれぞれに含まれる部品情報と、3Dモデルとに基づいて、作業順序制約情報を生成する。この構成によれば、構成部品を移動することなく、各部品の位置関係と作業情報とから作業順序制約を生成することができる。したがって、効率よく作業順序制約を自動生成することができる。
【0049】
順序制約生成部40は、設定条件1として、1つの作業情報において複数の部品が被作業部品情報に含まれる場合に、当該複数の部品が作業部品情報として含まれる作業情報を当該1つの作業情報の先行作業に指定する作業順序制約情報を生成してもよい。この場合、精度よく作業順序制約を生成することができる。
【0050】
順序制約生成部40は、設定条件2として、所定の部品が作業部品情報と指定された第1作業情報を、当該所定の部品が被作業部品情報と指定された第2作業情報の先行作業に指定する作業順序制約情報を生成してもよい。この場合、精度よく作業順序制約を生成することができる。
【0051】
順序制約生成部40は、設定条件3として、部品情報に含まれる各部品の重心情報と、各部品同士の接触面情報とを基に、作業順序制約を生成してもよい。この場合、内側に設置される部品の作業情報の順番を、外側に設置される部品の作業情報順番よりも優先することができる。したがって、精度よく作業順序制約を生成することができる。
【0052】
上記各例において、3Dモデル取得部10および作業リスト取得部20が、複数の部品を含む製品を組み立てるための複数の作業情報と、前記製品の完成状態の情報とを取得する取得部の一例として機能する。順序制約生成部40が、前記取得部が取得した前記複数の作業情報のそれぞれに含まれる部品情報と、前記完成状態の情報とに基づいて、前記複数の作業情報の作業順序制約情報を生成する生成部の一例として機能する。
【0053】
以上、本発明の実施例について詳述したが、本発明は係る特定の実施例に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。