以下に、本発明にかかる支援プログラム、支援方法および支援装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
実施例1に係る支援装置10について説明する。図1は、支援装置の概略的な構成を示す図である。支援装置10は、機器の開発を支援する装置である。本実施例では、機器のハードウェアの設計データを元に、仮想空間上に各部品のオブジェクトを配置した仮想的なハードウェアモデルを生成し、制御ソフトウェアの開発や検証を支援する場合を例に説明する。なお、支援装置10は、機器の製造の支援に適用してもよい。例えば、支援装置10は、機器の製造に用いるドキュメントを作成する際の移動可能な部品の指定に適用してもよい。
支援装置10は、例えば、パーソナルコンピュータやサーバコンピュータなどのコンピュータなどである。支援装置10は、1台のコンピュータとして実装してもよく、また、複数台のコンピュータによるクラウドとして実装することもできる。本実施例では、支援装置10を1台のコンピュータとした場合を例として説明する。支援装置10は、例えば、開発中の機器のハードウェアを制御する制御ソフトウェアを開発する開発者が使用するコンピュータである。なお、支援装置10は、CAD(Computer Aided Design)装置などのハードウェアを設計する設計ソフトウェアが動作する設計装置であってもよい。図1に示すように、支援装置10は、入力部20と、表示部21と、通信I/F(インタフェース)部22と、記憶部23と、制御部24とを有する。
入力部20は、各種の情報を入力する入力デバイスである。入力部20としては、マウスやキーボードなどの操作の入力を受け付ける入力デバイスが挙げられる。入力部20は、各種の情報の入力を受付ける。例えば、入力部20は、仮想的なハードウェアモデルに対する各種の操作の入力を受け付ける。入力部20は、ユーザからの操作入力を受け付け、受け付けた操作内容を示す操作情報を制御部24に入力する。
表示部21は、各種情報を表示する表示デバイスである。表示部21としては、LCD(Liquid Crystal Display)やCRT(Cathode Ray Tube)などの表示デバイスが挙げられる。表示部21は、各種情報を表示する。例えば、表示部21は、後述する3次元の仮想空間上に各部品のオブジェクトを配置した仮想的なハードウェアモデルや操作画面など各種の画面を表示する。
通信I/F部22は、他の装置との間で通信制御を行うインタフェースである。通信I/F部22は、不図示のネットワークを介して他の装置と各種情報を送受信する。例えば、通信I/F部22は、他の装置から後述する設計データ30を受信する。例えば、通信I/F部22は、機器のハードウェアを設計するCAD装置からハードウェアの設計したCADデータを設計データ30として受信する。通信I/F部22としては、LANカードなどのネットワークインタフェースカードを採用できる。なお、支援装置10は、メモリカードなどの記憶媒体を介して設計データ30などの情報を取得してもよい。また、設計データ30は、入力部20から入力されてもよい。
記憶部23は、ハードディスク、SSD(Solid State Drive)、光ディスクなどの記憶装置である。なお、記憶部23は、RAM(Random Access Memory)、フラッシュメモリ、NVSRAM(Non Volatile Static Random Access Memory)などのデータを書き換え可能な半導体メモリであってもよい。
記憶部23は、制御部24で実行されるOS(Operating System)や各種プログラムを記憶する。例えば、記憶部23は、後述する仮想的なハードウェアモデルの生成、操作に関する各種の処理を実行するプログラムを記憶する。さらに、記憶部23は、制御部24で実行されるプログラムで用いられる各種データを記憶する。例えば、記憶部23は、設計データ30と、関節部品情報31とを記憶する。
設計データ30は、3次元CADにより機器のハードウェアを設計したデータである。設計データ30には、機器を構成する部品ごとに、部品の設計情報が記憶されている。例えば、設計データ30には、設計情報として、機器を構成する各部品の形状や、部品の位置、姿勢などが記憶されている。例えば、設計データ30には、機器を構成する部品ごとに、部品の原点座標と、部品のローカル座標系と、形状情報とが記憶される。部品の原点座標は、3次元の仮想空間の座標において、部品に関する位置情報の原点として用いる座標を示す情報である。部品の原点座標は、部品ごとに異なってもよく、各部品で共通の原点を用いてもよい。部品のローカル座標系は、部品ごとに、部品の原点座標を基準として、3次元の仮想空間での部品の位置を規定するために用いる座標系を示す情報である。部品のローカル座標系は、部品ごとに異なってもよく、各部品で共通の座標系を用いてもよい。形状情報は、部品ごとに、部品の原点座標を基準とした部品のローカル座標系で部品の形状を示した情報である。例えば、部品の形状を3角形の組み合わせにより記憶するものとした場合、形状情報には、部品の形状を構成する各3角形の頂点座標と、各3角形の面の法線ベクトルとが記憶される。なお、支援装置10は、機器を構成する各部品の形状から仮想的なハードウェアモデルを生成する。このため、設計データ30には、機器を構成する各部品の形状や、部品の位置、姿勢などが記憶されていればよい。また、設計データ30には、部品がアッセンブリに分けて記憶されていてもよい。各部品のアッセンブリへの分類は、ハードウェアの設計者に依存する。例えば、設計者は、機器内で移動が可能な関節部品の単位など、部品を判別しやすくするため、機能単位や同じ部品単位に、部品を同じアッセンブリに分ける場合がある。本実施例では、設計データ30は、機器を構成する各部品が、例えば、搬送機能を構成する部品など、機能単位に、アッセンブリに分けられているものとする。
図2は、設計データに記憶された各部品による仮想的なハードウェアモデルの一例を示した図である。図2は、例えば、工場の様々な作業や工程を機械化してFA(Factory Automation)を図る機器である。図2に示すように機器は、多数の部品により構成されている。
図3は、設計データに記憶された各部品のアッセンブリの構成の一例を概念的に示した図である。設計データ30は、アッセンブリごとに、アッセンブリに分けられた部品が登録されている。例えば、アッセンブリAは、部品A1、部品A2、部品A3、・・・により構成されている。アッセンブリBは、部品B1、部品B2、部品B3、・・・により構成されている。アッセンブリCは、部品C1、部品C2、部品C3、・・・により構成されている。
関節部品情報31は、移動などの動作が可能な関節部品に関する情報を記憶したデータである。例えば、関節部品情報31は、指定された部品と共に移動すると判定された部品を記憶したデータである。
図4は、間接部品情報に記憶された各部品のアッセンブリの構成の一例を概念的に示した図である。関節部品情報31は、移動部品と判定された部品が登録されている。例えば、移動部品1は、部品C2、部品C3、部品C4、・・・、部品C50が登録されている。
図1に戻り、制御部24は、支援装置10を制御するデバイスである。制御部24としては、CPU(Central Processing Unit)、MPU(Micro Processing Unit)等の電子回路や、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)等の集積回路を採用できる。制御部24は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部24は、各種のプログラムが動作することにより各種の処理部として機能する。例えば、制御部24は、表示制御部40と、受付部41と、特定部42と、抽出部43と、決定部44とを有する。
表示制御部40は、表示部21への各種情報の表示制御を行う。例えば、表示制御部40は、設計データ30に基づいて、仮想空間上に各部品のオブジェクトを配置した仮想的なハードウェアモデルを表示させる制御を行う。例えば、表示制御部40は、設計データ30に記憶された各部品の形状や、部品の位置、姿勢などの情報を用いて、各部品の外形の形状のオブジェクトを配置した仮想的なハードウェアモデルを表示させる。また、例えば、表示制御部40は、仮想的なハードウェアモデルを操作するための各種の操作画面を表示させる制御を行う。
受付部41は、仮想的なハードウェアモデルに対する各種の操作を入力部20から受け付ける。例えば、受付部41は、表示されたハードウェアモデルの拡大、縮小や、表示位置の変更などの操作を受け付ける。表示制御部40は、受け付けた操作に応じて、ハードウェアモデルの表示を変更する。また、受付部41は、ハードウェアモデルを構成する複数の部品のオブジェクトから駆動可能な駆動部品の選択を受け付ける。また、受付部41は、駆動部品の駆動に関する定義の指定を受け付ける。例えば、受付部41は、駆動部品が回転やスライド移動など、どのような駆動を行うかの駆動種別の指定と駆動方向の指定を受け付ける。例えば、駆動部品が回転する部品である場合、受付部41は、駆動部品に対して、回転する部品であるとの駆動種別の指定と、回転軸、回転方向の指定を受け付ける。また、例えば、駆動部品がスライド移動する部品である場合、受付部41は、駆動部品に対して、スライド移動する部品であるとの駆動種別の指定と、移動方向の指定を受け付ける。
図5は、駆動部品の指定の一例を示す図である。図5には、レールに沿ってスライド移動が可能とされて関節部品を構成する各部品が示されている。図5の例では、部品50がスライド移動する駆動部品であるとの駆動種別が指定され、矢印で示すようにレール方向に移動方向が指定されている。
なお、駆動可能な駆動部品は、予め指定されていてもよい。例えば、ハードウェアの設計者が、設計時にCAD装置から駆動部品について駆動に関する定義を登録し、設計データ30に駆動部品について駆動に関する定義情報が記憶されていてもよい。また、駆動部品は、必ずしも指定されなくてよい。すなわち、駆動部品の指定は、必須ではない。
また、受付部41は、移動可能な部品の選択を受け付ける。例えば、受付部41は、ハードウェアモデルから移動可能な部品のオブジェクトの選択を受け付ける。また、受付部41は、部品の抽出範囲を指定する。例えば、受付部41は、設計データ30に記憶された部品のアッセンブリごとに、抽出範囲の指定を受け付ける。また、例えば、受付部41は、移動しない部品の選択を受け付ける。例えば、受付部41は、ハードウェアモデルから移動しない部品のオブジェクトの選択を受け付ける。
図6は、移動可能な部品の選択の一例を示す図である。図6には、図5と同様に、レールに沿ってスライド移動が可能とされて関節部品を構成する各部品が示されている。図6の例では、部品50が移動可能な部品と選択され、レールを構成する部品51が移動しない部品と選択された場合を示している。
また、受付部41は、表示されたハードウェアモデルの部品ごとに、部品の表示、非表示の切り替え操作を受け付ける。表示制御部40は、受け付けた切り替え操作に応じて、ハードウェアモデルの部品ごとに表示、非表示を変更する。
図7は、部品の表示、非表示の切り替えの一例を示す図である。図7には、図5と同様に、レールに沿ってスライド移動が可能とされて関節部品を構成する各部品が示されている。図7の例では、部品50に部品52が接触し、部品52に部品53が接触し、部品53に部品54が接触しており、部品53が非表示に切り替えられた場合を示している。なお、図7の例では、非表示とした部品53を点線により示している。
特定部42は、各種の特定を行う。例えば、特定部42は、設計データ30に基づいて、ハードウェアモデルの複数の部品から、同じ形状及び同じ姿勢の部品を特定する。例えば、特定部42は、受付部41により移動可能な部品の選択を受け付けた場合、設計データ30に基づいて、ハードウェアモデルの複数の部品から、移動可能な部品と同じ形状及び同じ姿勢の部品を特定する。例えば、特定部42は、設計データ30に基づいて、ハードウェアモデルの各部品から、移動可能な部品と同じ形状および同じ姿勢を検索する。例えば、特定部42は、移動可能な部品を平行移動させた場合に、一致する部品を同じ形状及び同じ姿勢の部品と特定する。また、例えば、特定部42は、受付部41により移動しない部品の選択を受け付けた場合、設計データ30に基づいて、ハードウェアモデルの複数の部品から、移動しない部品と同じ形状及び同じ姿勢の部品を特定する。また、例えば、特定部42は、後述する抽出部43により固定部品が判別された場合、設計データ30に基づいて、ハードウェアモデルの複数の部品から、固定部品と同じ形状及び同じ姿勢の部品を特定する。また、例えば、特定部42は、スライド移動する指定がされた駆動部品が移動可能な部品として選択された場合、駆動部品のスライド方向に沿って配置された、形状及び姿勢が同じ部品を特定する。例えば、特定部42は、駆動部品のスライド方向に沿って平行移動させた場合に、一致する部品を同じ形状及び同じ姿勢の部品と特定する。また、例えば、特定部42は、回転する指定がされた駆動部品が移動可能な部品として選択された場合、駆動部品の回転軸の方向に沿って配置された、形状及び姿勢が同じ部品を特定する。例えば、特定部42は、駆動部品の回転軸に沿って平行移動させた場合に、一致する部品を同じ形状及び同じ姿勢の固定部品と特定する。なお、部品の設計情報に、部品の回転状態を示す情報がある場合、特定部42は、回転状態も一致する部品を同じ形状及び同じ姿勢の部品と特定してもよい。
図8は、スライド方向に対する同じ形状および同じ姿勢の部品の特定の一例を示す図である。図8は、2本のレール上をスライド移動可能とされた関節部品が示されており、一方のレールと接する部品70がレールの方向にスライド移動可能な駆動部品と指定されている。図8の例では、部品70が移動可能な部品と選択された場合、部品70と同じ形状および同じ姿勢の部品71が特定される。なお、図8では、隠れているが、他方のレールにスライド移動可能に設けられた、部品70と同じ形状および同じ姿勢の部品も特定される。
図9は、回転軸方向に対する同じ形状および同じ姿勢の部品の特定の一例を示す図である。図9は、開閉可能なドアを関節部品とした場合が示されており、ドアを支持する部品80が上下方向を回転軸として、回転する指定がされた駆動部品と指定されている。図9の例では、部品80が移動可能な部品と選択された場合、部品80の回転軸の方向に沿って配置された、部品80と同じ形状および同じ姿勢の部品81が特定される。
抽出部43は、移動可能な関節部品を抽出する。例えば、抽出部43は、受付部41で選択された移動可能な部品と接触する部品、接触する部品に接触する部品と順次抽出する。すなわち、抽出部43は、ハードウェアモデルを構成する複数の部品のうち、選択された移動可能な部品から接触関係がある部品を順次抽出する。例えば、抽出部43は、選択された移動可能な部品を判定対象部品として、設計データ30に基づいて、判定対象部品の周囲の部品を特定する。そして、抽出部43は、設計データ30に基づいて、特定した周囲の部品ごとに、判定対象部品と、周囲の部品とが接触するか判定する。例えば、抽出部43は、設計データ30に基づいて、判定対象部品と周囲の部品とについて、それぞれ外形のポリゴンを求める。抽出部43は、判定対象部品と周囲の部品のポリゴンに同じ座標が含まれるかを判定する。抽出部43は、外形に同じ座標が含まれる場合、判定対象部品と周囲の部品とは接触していると判定し、当該接触している部品を抽出する。抽出部43は、接触している部品がある場合、当該接触している部品を判定対象部品として、さらに判定対象部品に接触する部品を抽出する。これにより、移動可能な部品から接触関係がある部品のオブジェクトがハードウェアモデルから抽出される。また、抽出部43は、移動しない部品が選択された場合、移動しない部品以外の部品を対象として接触関係がある部品を抽出する。すなわち、抽出部43は、移動しない部品を判定対象部品にはしないで、接触関係がある部品の抽出を行う。例えば、抽出部43は、判定対象部品の周囲の部品に移動しない部品がある場合、移動しない部品以外の周囲の部品について、判定対象部品と接触関係があるか判定する。
図10は、接触する部品の抽出の一例を示す図である。図10には、図5と同様に、レールに沿ってスライド移動が可能とされて関節部品を構成する各部品が示されている。図10に示す関節部品を構成する各部品は、隣合う部品同士が接触しているものとする。図10の例では、部品50が移動可能な部品と選択され、レールを構成する部品51が移動しない部品と選択された場合を示している。この場合、レールの部品51以外の関節部品を構成する各部品は、抽出される。図10の例では、部品50に部品52が接触し、部品52に部品53が接触し、部品53に部品54が接触する。このため、部品52〜54が抽出される。
ここで、本実施例では、部品ごとに表示、非表示を変更可能としており、非表示の部品についても接触関係がある部品を抽出した場合、表示状態と接触関係が合わない場合がある。そこで、抽出部43は、表示状態の部品を対象として接触関係がある部品を抽出する。
図11は、接触する部品の抽出の一例を示す図である。図11には、図7と同様に、部品53が非表示に切り替えられた場合を示している。図11の例でも、部品50が移動可能な部品と選択され、レールを構成する部品51が移動しない部品と選択された場合を示している。この場合、部品53が非表示のため、部品52は、抽出される。一方、部品54は抽出されない。
また、抽出部43は、特定部42により移動可能な部品と同じ形状及び同じ姿勢の部品が特定された場合、特定された部品を接触関係の判定対象として、接触関係がある部品を抽出する。これにより、同じ形状及び同じ姿勢で複数の移動しない部品があり、1つが選択された場合、ハードウェアモデルから、複数の移動しない部品を除いて、移動可能な部品から接触関係がある部品のオブジェクトが抽出される。
ところで、接触関係がある部品を順次抽出した場合、例えば、ハードウェアモデルの全ての部品が抽出されてしまう場合がある。一般的に、移動可能な関節部品は、移動に伴う振動など関節部品の挙動を安定させるため、関節部品を支持したり、関節部品を固定する固定部品に配置される。関節部品を支持する固定部品は、一般的に、関節部品に対して大きい。そこで、抽出部43は、固定部品を判定する。そして、抽出部43は、固定部品を除いて、接触関係がある部品を順次抽出する。
例えば、関節部品がスライド移動する場合、関節部品は、関節部品のスライド移動を支えるレールなどの固定部品によって支持される。抽出部43は、スライド移動する指定がされた部品が移動可能な部品として選択された場合、判定対象部品ごとに、周囲の部品のスライド方向に対する長さを求める。本実施例では、抽出部43は、選択された移動可能な部品に直接接触する部品のスライド方向に対する長さを求める。そして、抽出部43は、スライド方向に対する長さが移動可能な部品のスライド方向に対する長さに対して所定倍以上の部品を固定部品とし、固定部品以外の周囲の部品について、判定対象部品と周囲の部品とが接触していると判定する。この所定倍は、例えば、10倍とする。所定倍は、外部から設定可能としてもよい。例えば、ユーザが画面から指定可能としてもよい。これにより、例えば、関節部品のスライド移動を支えるレールなどの固定部品が抽出されることを抑制できる。
また、例えば、関節部品が回転する場合、関節部品は、関節部品の回転軸を通過しない大きな固定部品によって回転可能に支持される。抽出部43は、回転する指定がされた部品が移動可能な部品として選択された場合、移動可能な部品に接触する部品のうち、移動可能な部品の回転軸を通過しない部品を求める。そして、抽出部43は、移動可能な部品の回転軸を通過しない部品のうち、最も大きい部品を固定部品と判定する。これにより、例えば、関節部品の回転移動を支える固定部品が抽出されることを抑制できる。
図12は、接触する部品の抽出の一例を示す図である。図12には、図8と同様に、2本のレール上をスライド移動可能とされた関節部品が示されており、一方のレールと接する部品70がレールの方向にスライド移動可能な駆動部品と指定されている。図12に示す関節部品を構成する各部品は、隣合う部品同士が接触しているものとする。図12の例では、部品70が移動可能な部品と選択された場合を示している。レールを構成する部品78は、部品70のスライド方向に対する長さが部品70の所定倍以上であるため、固定部品とされ、接触関係の判定対象から除外される。レールを構成する部品79は、特定部42により部品78と同じ形状及び同じ姿勢の固定部品と特定され、接触関係の判定対象から除外される。このため、図12の例では、部品70と、部品70と同じ形状および同じ姿勢の部品72からそれぞれ接触関係がある部品が抽出されて、部品70、71を含むドットパターンを付した部品が抽出される。
また、抽出部43は、特定部42により、移動可能な部品のスライド方向に沿って形状及び姿勢が同じ複数の部品が特定された場合、特定された複数の部品が配置されている部分のスライド方向の長さを求める。すなわち、抽出部43は、複数の部品の間となる部分も含めて複数の部品のスライド方向に対する長さを求める。そして、抽出部43は、スライド方向に対する長さが移動可能な部品のスライド方向に対する長さに対して所定倍以上の部品を固定部品とし、固定部品以外の部品について、判定対象部品と周囲の部品とが接触していると判定する。この所定倍は、例えば、10倍とする。所定倍は、外部から設定可能としてもよい。例えば、ユーザが画面から指定可能としてもよい。これにより、例えば、ベルトコンベアの搬送ローラなどの固定部品が抽出されることを抑制できる。
図13は、固定部品の抽出の一例を示す図である。図13には、ベルトコンベアなどの複数の搬送ローラを構成する部品90が配置されている。図13の例は、部品91が搬送ローラの配置方向にスライド移動する駆動部品と指定され、各搬送ローラを構成する部品90のスライド方向に対する長さが部品91のスライド方向に対する長さに対して所定倍以上の場合を示している。この場合、各搬送ローラを構成する部品90は、固定部品とされ、接触関係の判定対象から除外される。
また、機器では、大きい部品が土台となる部品として使用される。土台となる部品は、移動しない固定部品となる。そこで、抽出部43は、機器の体積の合計に対応して、土台となる部品の体積のしきい値を定め、しきい値以上の体積の部品を固定部品と判定する。例えば、抽出部43は、体積の大きい順に部品の体積を加算し、加算した体積が全部品の体積の所定の割合となる部品を特定する。この所定の割合は、例えば、30%とする。所定の割合は、外部から設定可能としてもよい。例えば、ユーザが画面から指定可能としてもよい。抽出部43は、特定した部品の体積を固定部品のしきい値とし、土台となる固定部品を判定する。
また、機器では、関節部品を安定させるため、関節部品が、関節部品を覆う形状の固定部品に支持される場合がある。そこで、抽出部43は、接触する部品が、抽出済みの部品群を覆う形状の部品である場合、固定部品と判定する。例えば、抽出部43は、スライド移動する指定がされた部品が移動可能な部品として選択された場合、接触する部品の配置された範囲でハードウェアモデルのスライド方向に垂直な方向の断面を求める。そして、抽出部43は、接触する部品の配置された範囲で接触する部品が、抽出済みの部品群の3面以上を覆う場合、当該接触する部品を固定部品と判定する。また、例えば、抽出部43は、回転する指定がされた部品が移動可能な部品として選択された場合、接触する部品が、抽出済みの部品群の回転軸方向の両端を覆う場合、当該接触する部品を固定部品と判定する。
また、抽出部43は、抽出済みの部品の体積の合計が、ハードウェアモデルの全部品の体積の合計に対して所定の割合以上となった場合、部品の抽出を終了する。この所定の割合は、例えば、50%とする。所定の割合は、外部から設定可能としてもよい。例えば、ユーザが画面から指定可能としてもよい。これにより、例えば、ハードウェアモデルの全ての部品が抽出されることを抑制できる。
決定部44は、移動可能な関節部品を構成する各部品を決定する。例えば、決定部44は、抽出部43により抽出された部品を、移動可能な部品の移動に対応して移動する部品として、移動可能な関節部品を構成する各部品を決定する。決定部44は、移動可能な部品と、抽出された部品を対応付けて関節部品情報31に記憶する。
次に具体例を用いて説明する。以下では、図2に示したハードウェアモデルに対する移動可能な部品の指定を支援する場合を例に説明する。
表示制御部40は、設計データ30に記憶された各部品の形状や、部品の位置、姿勢などの情報を用いて、各部品の外形の形状のオブジェクトを配置した仮想的なハードウェアモデルを表示させる。受付部41は、仮想的なハードウェアモデルに対する各種の操作を入力部20から受け付ける。例えば、受付部41は、表示されたハードウェアモデルの拡大、縮小や、表示位置の変更などの操作を受け付ける。
制御ソフトウェアの開発者は、入力部20を操作して、表示されたハードウェアモデルの拡大、縮小や、表示位置の変更などの各種の指示を行う。また、制御ソフトウェアの開発者は、入力部20を操作して、駆動可能な駆動部品を選択し、選択した駆動部品の駆動に関する定義を行う。
図14Aは、駆動部品の選択および駆動に関する定義の一例を示す図である。図14Aには、図2に示したハードウェアモデルのM1部分を、視線方向を変更して拡大表示した状態が示されている。図14Aの例では、長尺な部品C1に設けられた部品C2が選択され、部品C1の長手方向をスライド方向と指定された場合を示している。
受付部41は、ハードウェアモデルから移動可能な部品のオブジェクトの選択を受け付ける。また、受付部41は、設計データ30に記憶された部品のアッセンブリごとに、抽出範囲の指定を受け付ける。
制御ソフトウェアの開発者は、入力部20を操作して、移動可能な部品のオブジェクトを選択する。また、制御ソフトウェアの開発者は、入力部20を操作して、部品の抽出範囲を指定する。
図14Bは、部品の抽出範囲の指定の一例を示す図である。図14Bの例では、部品C2が移動可能な部品として選択されている。また、図14Bには、設計データ30に記憶された各アッセンブリと、それぞれのアッセンブリに登録された部品がツリー構成で表示されている。例えば、制御ソフトウェアの開発者は、入力部20を操作して、部品の抽出範囲とするアッセンブリを指定する。アッセンブリが指定された場合、指定されたアッセンブリに登録された部品の中から、部品が抽出される。一方、アッセンブリが指定されなかった場合、全アッセンブリの部品の中から、部品が抽出される。図14Bの例では、部品C1、部品C2を含んだアッセンブリCが抽出範囲と指定されている。この場合、アッセンブリCに登録された部品から、部品が抽出される。
制御ソフトウェアの開発者は、入力部20を操作して、抽出開始を指示する所定の操作を行う。例えば、制御ソフトウェアの開発者は、図14Bに示す抽出開始ボタン95を選択する。
抽出部43は、ハードウェアモデルを構成する複数の部品のうち、選択された移動可能な部品から接触関係がある部品を順次抽出する。
図14Cおよび図14Dは、部品の抽出の一例を示す図である。図14Cの例では、部品C2から接触関係がある部品が順次抽出されている。ここで、部品C1は、部品C2のスライド方向に対する長さが部品C2の所定倍以上であるため、固定部品とされている。また、図14Dの例では、部品C90、C91は、抽出済みの部品群を覆う形状であるため、固定部品とされている。
表示制御部40は、抽出部43による抽出結果を表示させる制御を行う。例えば、表示制御部40は、抽出部43により抽出された各部品のオブジェクトを3次元の仮想空間上に配置したモデルを表示させる。
図14Eは、部品の抽出の一例を示す図である。図14Eの例では、抽出された各部品のオブジェクトを3次元の仮想空間上に配置したモデルが表示されている。
受付部41は、移動可能な部品および移動しない部品の選択を受け付ける。
図14Fは、表示画面の一例を示す図である。図14Fの例では、マルチウィンドウ構成で画面110と画面111が表示されている。画面110には、抽出された各部品を除いて、機器全体のハードウェアモデルC101が表示されている。画面111には、抽出された各部品のオブジェクトを配置したモデルC100が表示されている。また、画面111には、指定された移動しない部品を表示する指定領域112と、指定された移動可能な部品を表示する指定領域113が設けられている。例えば、制御ソフトウェアの開発者が、画面111に表示されたモデルから、移動しない部品のオブジェクトを選択すると、指定領域112には、指定された部品が移動しない部品に追加されて表示される。
制御ソフトウェアの開発者は、画面111に表示されたモデルに不足の部品がある場合、画面110のハードウェアモデルから不足の部品を移動可能な部品として指定する。また、制御ソフトウェアの開発者は、画面111に表示されたモデルに余分な部品がある場合、画面111のモデルC100から余分な部品を移動しない部品として指定する。図14Fの例では、画面110で部品C50が移動可能な部品として選択され、画面111で部品C10が移動しない部品として選択されている。画面111には、再抽出ボタン120と、OKボタン121が設けられている。再抽出ボタン120が選択されると、抽出部43は、接触関係がある部品を再抽出する。例えば、抽出部43は、追加された移動可能な部品および指定済みの移動可能な部品から接触関係がある部品を再抽出する。また、抽出部43は、追加された移動しない部品および指定済みの移動しない部品以外の部品を対象として接触関係がある部品を抽出する。
表示制御部40は、抽出部43により抽出された各部品のオブジェクトを配置したモデルを表示させる。
図14Gは、再抽出結果の一例を示す図である。図14Gの例では、移動しない部品と指定された部品C10が画面110に表示され、移動可能な部品に追加された部品C50と部品C50に接触関係がある部品が画面111に表示されている。
OKボタン121が選択されると、決定部44は、抽出された部品を、移動可能な部品の移動に対応して移動する部品として、移動可能な関節部品を構成する各部品を決定する。
図14Hは、関節部品を構成する各部品の一例を示す図である。図14Hの例では、部品C2や、部品C50を含むドットパターンを付した部品が関節部品1を構成する各部品として決定される。
決定部44は、移動可能な部品と、抽出された部品を対応付けて関節部品情報31に記憶する。
このように、本実施例に係る支援装置10は、関節部品を構成する移動可能な部品の指定の手間を軽減できる。
次に、本実施例に係る支援装置10が移動可能な部品の指定を支援する支援処理の流れを説明する。図15Aは、支援処理の手順の一例を示すフローチャートである。
図15Aに示すように、表示制御部40は、表示部21への各種情報の表示制御を行う(S10)。例えば、表示制御部40は、図14Bに示すによう、設計データ30に基づいて、仮想空間上に各部品のオブジェクトを配置した仮想的なハードウェアモデルを表示させる。また、表示制御部40は、設計データ30に基づいて、部品のアッセンブリ構成を表示させる。
受付部41は、入力部20を介して各種の指定を受け付ける(S11)。例えば、受付部41は、表示されたハードウェアモデルの拡大、縮小や、表示位置の変更などの操作を受け付ける。また、受付部41は、ハードウェアモデルから移動可能な部品のオブジェクトの選択を受け付ける。また、受付部41は、設計データ30に記憶された部品のアッセンブリごとに、抽出範囲の指定を受け付ける。
制御ソフトウェアの開発者は、入力部20を操作して、移動可能な部品のオブジェクトを選択する。また、制御ソフトウェアの開発者は、入力部20を操作して、部品の抽出範囲を指定する。例えば、制御ソフトウェアの開発者は、入力部20を操作して、部品の抽出範囲とするアッセンブリを指定する。制御ソフトウェアの開発者は、移動可能な部品の抽出を開始する場合、抽出開始を指示する所定の操作を行う。
抽出部43は、抽出開始を指示する所定の操作が行われたか否かを判定する(S12)。所定の操作が行われていない場合(S12否定)、上述のS10へ移行する。一方、所定の操作が行われた場合(S12肯定)、抽出部43は、抽出対象のアッセンブリを判別する対象アッセンブリ判別処理を実行する(S13)。
図15Bは、対象アッセンブリ判別処理の手順の一例を示すフローチャートである。対象アッセンブリ判別処理は、例えば、図15AのS13から実行される。
図15Bに示すように、抽出部43は、抽出範囲のアッセンブリが指定されたか否かを判定する(S30)。アッセンブリの指定が無い場合(S30否定)、抽出部43は、全アッセンブリを抽出対象のアッセンブリとする(S31)。
一方、アッセンブリの指定がある場合(S30肯定)、抽出部43は、指定されたアッセンブリを抽出対象のアッセンブリとする(S32)。S31、S32の処理終了後、図15AのS14へ移行する。
図15Aに戻り、抽出部43は、初期処理を実行する(S14)。
図15Cは、初期処理の手順の一例を示すフローチャートである。初期処理は、例えば、図15AのS14から実行される。
図15Cに示すように、抽出部43は、部品情報を初期化する部品情報の初期化処理を実行する(S40)。
図15Dは、部品情報の初期化処理の手順の一例を示すフローチャートである。部品情報の初期化処理は、例えば、図15CのS40から実行される。
図15Dに示すように、抽出部43は、設計データ30に記憶されている部品を順に選択する(S50)。抽出部43は、設計データ30に基づき、選択された部品の体積を計算する(S51)。抽出部43は、選択された部品が、表示の指定がされているか否かを判定する(S52)。表示の指定がされていない場合(S52否定)、後述するS55へ移行する。
一方、表示指定がされている場合(S52肯定)、選択された部品が抽出対象のアッセンブリの配下であるか否かを判定する(S53)。選択された部品が抽出対象のアッセンブリの配下ではない場合(S53否定)、後述するS55へ移行する。
一方、選択された部品が抽出対象のアッセンブリの配下である場合(S53肯定)、抽出部43は、選択された部品を抽出対象の部品に追加する(S54)。
抽出部43は、設計データ30に記憶されている全部品の選択が完了したか否かを判定する(S55)。全部品の選択が完了していない場合(S55否定)、上述のS50へ移行する。
一方、全部品の選択が完了した場合(S55肯定)、抽出部43は、設計データ30に記憶されている全部品を体積の大きい順にソートする(S56)。抽出部43は、体積の大きい順に部品の体積を加算し、加算した体積が全部品の体積の所定の割合となる部品を特定する(S57)。抽出部43は、特定した部品の体積を固定部品のしきい値として記憶する(S58)。S58の処理終了後、図15CのS41へ移行する。
図15Cに戻り、抽出部43は、選択関節情報の初期化処理を実行する(S41)。
図15Eは、選択関節情報の初期化処理の手順の一例を示すフローチャートである。選択関節情報の初期化処理は、例えば、図15CのS41から実行される。
図15Eに示すように、抽出部43は、抽出対象の部品のなかから、選択された移動可能な部品と接触する部品を抽出する(S60)。例えば、抽出部43は、選択された移動可能な部品を判定対象として、設計データ30に基づいて、抽出対象の部品のなかから、判定対象部品と接触する部品を抽出する。抽出部43は、抽出された部品を次の判定対象部品として登録する(S61)。S61の処理終了後、図15CのS42へ移行する。
図15Cに戻り、抽出部43は、S61にて登録した、次の判定対象部品が2部品以上あるか否かを判定する(S42)。次の判定対象部品が2部品以上ある場合(S42肯定)、固定部品を自動判定する固定部品判定処理を実行する(S43)。S43の処理終了後、および、次の判定対象部品が2部品以上ない場合(S42否定)、図15AのS15へ移行する。
図15Fは、固定部品判定処理の手順の一例を示すフローチャートである。固定部品判定処理は、例えば、図15CのS43から実行される。
図15Fに示すように、抽出部43は、選択された移動可能な部品が駆動部品か否かを判定する(S70)。移動可能な部品が駆動部品である場合(S70肯定)、抽出部43は、選択された移動可能な部品がスライド移動する駆動部品であるか否かを判定する(S71)。移動可能な部品がスライド移動する駆動部品である場合(S71肯定)、スライド用固定部品判定処理を実行する(S72)。一方、移動可能な部品がスライド移動する駆動部品ではない場合(S71否定)、回転用固定部品判定処理を実行する(S73)。S72、S73の処理終了後、および、選択された移動可能な部品が駆動部品ではない場合(S70否定)、図15AのS15へ移行する。
図15Gは、スライド用固定部品判定処理の手順の一例を示すフローチャートである。スライド用固定部品判定処理は、例えば、図15FのS72から実行される。
図15Gに示すように、抽出部43は、抽出対象の部品のなかから、選択された移動可能な部品に接触する接触部品を選択する(S80)。抽出部43は、選択された接触部品について移動可能な部品のスライド方向に対する長さを計算する(S81)。特定部42は、スライド方向に、選択された接触部品と同じ形状および同じ姿勢の部品があるか否かを判定する(S82)。同じ形状および同じ姿勢の部品がない場合(S82否定)、後述するS84へ移行する。
一方、同じ形状および同じ姿勢の部品がある場合(S82肯定)、抽出部43は、接触部品および接触部品と同じ形状および同じ姿勢の部品が配置されている部分のスライド方向の長さを求める(S83)。すなわち、抽出部43は、接触部品および接触部品と同じ形状および同じ姿勢の部品の間となる部分も含めて、接触部品および接触部品と同じ形状および同じ姿勢の部品のスライド方向に対する長さを求める。
抽出部43は、接触部品を全て選択したか否かを判定する(S84)。接触部品を全て選択していない場合(S84否定)、上述のS80へ移行する。
一方、接触部品を全て選択した場合(S84肯定)、抽出部43は、スライド方向の長さが選択された移動可能な部品の所定倍以上の部品を固定部品と判定し(S85)、図15AのS15へ移行する。
図15Hは、回転用固定部品判定処理の手順の一例を示すフローチャートである。回転用固定部品判定処理は、例えば、図15FのS73から実行される。
図15Hに示すように、抽出部43は、抽出対象の部品のなかから、選択された移動可能な部品に接触する接触部品を選択する(S90)。抽出部43は、選択された接触部品を移動可能な部品の回転軸が通過しないか否かを判定する(S91)。選択された接触部品を移動可能な部品の回転軸が通過する場合(S91否定)、後述のS93へ移行する。
一方、選択された接触部品を移動可能な部品の回転軸が通過しない場合(S91肯定)、抽出部43は、選択された接触部品を固定部品の候補とする(S92)。
抽出部43は、接触部品を全て選択したか否かを判定する(S93)。接触部品を全て選択していない場合(S93否定)、上述のS90へ移行する。
一方、接触部品を全て選択した場合(S93肯定)、抽出部43は、固定部品の候補のなかから、体積の最も大きい接触部品を固定部品と判定し(S94)、図15AのS15へ移行する。
図15Aに戻り、抽出部43は、接触関係のある部品を抽出する抽出処理を実行する(S15)。
図15Iは、抽出処理の手順の一例を示すフローチャートである。抽出処理は、例えば、図15AのS15から実行される。
図15Iに示すように、抽出部43は、未判定の判定対象部品を1つ選択する(S100)。抽出部43は、選択した判定対象部品が関節部品を構成するかを判定する経路延長処理を実行する(S101)。
図15Jは、経路延長処理の手順の一例を示すフローチャートである。経路延長処理は、例えば、図15IのS101から実行される。
図15Jに示すように、抽出部43は、判定対象部品が接続可能か否かを判定する経路接続判定処理を実行する(S110)。
図15Kは、経路接続判定処理の手順の一例を示すフローチャートである。経路接続判定処理は、例えば、図15JのS110から実行される。
図15Kに示すように、抽出部43は、判定対象部品が、選択された移動可能な部品と同じ形状及び同じ姿勢ではないか否かを判定する(S120)。判定対象部品が移動可能な部品と同じ形状及び同じ姿勢である場合(S120否定)、抽出部43は、判定対象部品を、関節部品を構成する部品として抽出し(S121)、図15JのS111へ移行する。
一方、判定対象部品が移動可能な部品と同じ形状及び同じ姿勢ではない場合(S120肯定)、抽出部43は、判定対象部品が固定部品と同じ形状及び同じ姿勢ではないか否かを判定する(S122)。判定対象部品が固定部品と同じ形状及び同じ姿勢である場合(S122否定)、図15JのS111へ移行する。
一方、判定対象部品が固定部品と同じ形状及び同じ姿勢ではない場合(S122肯定)、抽出部43は、判定対象部品が固定部品の両端からはみ出ていないか判定する(S123)。固定部品の両端からはみ出ている場合(S123否定)、図15JのS111へ移行する。
一方、固定部品の両端からはみ出ていない場合(S123肯定)、抽出部43は、判定対象部品が抽出済みの部品を覆う形状ではないか判定する(S124)。抽出済みの部品を覆う形状である場合(S124否定)、図15JのS111へ移行する。
一方、抽出済みの部品を覆う形状ではない場合(S124肯定)、抽出部43は、判定対象部品の体積が固定部品のしきい値未満否であるか判定する(S125)。体積が固定部品のしきい値未満ではない場合(S125否定)、図15JのS111へ移行する。
一方、体積が固定部品のしきい値未満である場合(S125肯定)、抽出部43は、抽出済みの部品の体積の合計が、全部品の体積の合計の1/2未満か否であるか判定する(S126)。抽出済みの部品の体積の合計が、全部品の体積の合計の1/2未満ではない場合(S126否定)、図15JのS111へ移行する。
一方、抽出済みの部品の体積の合計が、全部品の体積の合計の1/2未満である場合(S126肯定)、抽出部43は、判定対象部品を、関節部品を構成する部品として抽出し(S127)、図15JのS111へ移行する。
図15Jに戻り、抽出部43は、判定対象部品ごとに、移動可能な部品からの最短の経路長を求める(S111)。例えば、抽出部43は、移動可能な部品と接触関係がある部品を判定対象部品まで求め、各部品の重心位置を繋いだ経路の距離を求める。そして、抽出部43は、距離が最短の経路を移動可能な部品からの最短経路とし、距離が最短の経路の距離を最短の経路長とする。抽出部43は、判定対象部品ごとに、最短の経路長を更新して記憶する(S112)。
抽出部43は、抽出対象の部品のなかから、判定対象部品と接触する部品を特定する(S113)。例えば、抽出部43は、設計データ30に基づいて、抽出対象の部品のなかから、判定対象部品と接触する部品を特定する。抽出部43は、特定した接触している部品を判定対象部品として登録し(S114)、図15IのS112へ移行する。
図15Iに戻り、抽出部43は、未判定の判定対象部品があるか判定する(S102)。未判定の判定対象部品がある場合(S102肯定)、上述のS100へ移行する。
未判定の判定対象部品がない場合(S102否定)、図15AのS16へ移行する。
図15Aに戻り、表示制御部40は、抽出結果を表示部21に表示させる制御を行う(S16)。例えば、表示制御部40は、図14Fに示すように、マルチウィンドウ構成で抽出された各部品を除いて、機器全体のハードウェアモデルC101を表示した画面110と、抽出された各部品のオブジェクトを配置したモデルC100を表示した画面111を表示させる。
受付部41は、入力部20を介して各種の指定を受け付ける(S17)。例えば、受付部41は、画面110のハードウェアモデル101から不足の部品の移動可能な部品としての指定や、画面111のモデルC100から余分な部品の移動しない部品としての指定を受け付ける。
抽出部43は、再抽出ボタン120が選択されたか否かを判定する(S18)。再抽出ボタン120が選択された場合(S18肯定)、上述のS15へ移行して抽出処理を再実行する。
一方、再抽出ボタン120が選択されていない場合(S18否定)、OKボタン121が選択されたか否かを判定する(S19)。OKボタン121が選択されていない場合(S19否定)、上述のS17へ移行する。
一方、OKボタン121が選択された場合(S19肯定)、決定部44は、関節部品を構成する各部品を決定する(S20)。例えば、決定部44は、抽出された部品を、移動可能な部品の移動に対応して移動する部品として、移動可能な関節部品を構成する各部品を決定し、移動可能な部品と、抽出された部品を対応付けて関節部品情報31に記憶し、処理を終了する。
このように、支援装置10は、複数の部品のオブジェクトの組合せから第一部品のオブジェクトの選択を受け付ける。支援装置10は、複数の部品のオブジェクトのうち、選択された第一部品のオブジェクトに接触するオブジェクトおよび当該オブジェクトに接触するオブジェクトを抽出する。支援装置10は、抽出した部品のオブジェクトを、第一部品のオブジェクトの移動に対応して移動する対象オブジェクトとして決定する。これにより、支援装置10は、移動可能な部品の指定の手間を軽減できる。
また、支援装置10は、第一部品のオブジェクトに接触するオブジェクトのなかから第二部品のオブジェクトの選択をさらに受け付ける。支援装置10は、第二部品のオブジェクト以外のオブジェクトを対象として抽出を行う。これにより、支援装置10は、選択した第二部品のオブジェクトを除外して接触するオブジェクトを抽出できる。
また、支援装置10は、複数の部品のオブジェクトのうち、第一部品のオブジェクトと同じ形状及び同じ姿勢のオブジェクトを第一部品のオブジェクトと同じ移動を行うオブジェクトと決定する。これにより、支援装置10は、第一部品のオブジェクトと同じ形状及び同じ姿勢で第一部品のオブジェクトと同じ移動を行うオブジェクトの指定の手間を軽減できる。
また、支援装置10は、複数の部品のオブジェクトのうち、第二部品のオブジェクトと同じ形状及び同じ姿勢のオブジェクトを特定する。支援装置10は、第二部品のオブジェクトおよび特定されたオブジェクト以外のオブジェクトを対象として抽出を行う。これにより、支援装置10は、第二部品のオブジェクトと同じ形状及び同じ姿勢で第二部品のオブジェクトと同じ固定部品のオブジェクトの指定の手間を軽減できる。
また、支援装置10は、第一部品のオブジェクトが駆動される駆動方向に対する長さが第一部品のオブジェクトの所定倍未満のオブジェクトを対象として抽出を行う。これにより、支援装置10は、第一部品を支持する固定部品を除いて、第一部品の含んだ関節部品を抽出できる。
また、支援装置10は、第一部品のオブジェクトから接触関係があるオブジェクトの内で、第一部品のオブジェクトが駆動される駆動方向に沿って配置され、形状及び姿勢が同じ複数の第三オブジェクトを特定する。支援装置10は、配置された状態での複数の第三部品のオブジェクトの駆動方向に対する長さが第一部品のオブジェクトの駆動方向に対する長さに対して所定倍以上の場合、複数の第三部品のオブジェクト以外のオブジェクトを対象として抽出を行う。これにより、支援装置10は、搬送ローラなどの部品を除いて、関節部品を抽出できる。
また、支援装置10は、第一部品のオブジェクトおよび抽出済みのオブジェクトの体積の合計が、複数のオブジェクトの体積の合計に対して所定の割合以上となった場合、オブジェクトの抽出を終了する。これにより、支援装置10は、機器の部品全体が抽出されることを抑制できる。
また、支援装置10は、土台となるオブジェクトに接触するオブジェクト以外のオブジェクトを対象として抽出を行う。これにより、支援装置10は、土台となる部品を除いて、関節部品を抽出できる。
また、支援装置10は、土台となるオブジェクトを、オブジェクトの体積が、複数のオブジェクトの体積の合計に対応して定まる所定のしきい値以上のオブジェクト、または、対象オブジェクトとして特定したオブジェクト群を覆う形状のオブジェクトとする。これにより、支援装置10は、土台となる部品を判別できる。