(57)【要約】【課題】シミュレーションの精度の低下を抑制すること。【解決手段】シミュレートプログラム１２１は、コンピュータに次の処理を実行させる。すなわち、シミュレートプログラム１２１は、３次元シミュレーション空間上に搬送物とプッシャー部の押し出し面で押すことで搬送物を移動させる動作をする搬送機とが配置され、搬送機が搬送物を搬送するシミュレーション演算をコンピュータに実行させる。シミュレートプログラム１２１は、コンピュータに、シミュレーション演算を実行する際に、プッシャー部の押し出し面、または、リフター部の支え面の移動先方向の所定範囲内に搬送物の所定の基準点が存在することを検出すると、搬送物をプッシャー部の押し出し面、または、リフター部の支え面の接触位置に移動させる処理を実行させる。【選択図】図１８
2014148390.tif 000002
【特許請求の範囲】
【請求項１】
３次元シミュレーション空間上に搬送物と、プッシャー部の押し出し面で押すことで該搬送物を移動させる動作をするまたはリフター部の支え面により下から支えることで該搬送物を上方に上げる動作をする搬送機とが配置され、該搬送機が該搬送物を搬送するシミュレーション演算を実行し、
前記シミュレーション演算を実行する際に、前記プッシャー部の押し出し面、または、前記リフター部の支え面の移動先方向の所定範囲内に前記搬送物の所定の基準点が存在することを検出すると、前記搬送物を前記プッシャー部の押し出し面、または、前記リフター部の支え面の接触位置に移動させる
処理をコンピュータに実行させるプログラム。
【請求項２】
前記シミュレーション演算を実行する処理は、
前記搬送物を前記プッシャー部の押し出し面の接触位置に移動させた後、前記プッシャー部が前記搬送物を押し出す方向に移動する場合は、前記プッシャー部と前記搬送部とは一体のままとして前記シミュレーション演算を継続し、
前記プッシャー部が前記搬送物を押し出す方向とは逆の方向に移動する場合は、逆方向に移動する際に前記プッシャー部と前記搬送物とを別の物体と判定する
ことを特徴とする請求項１に記載のプログラム。
【請求項３】
前記シミュレーション演算を実行する処理は、
前記搬送物を前記リフター部の支え面の接触位置に移動させた際の高さ座標情報を記憶部に格納し、
前記搬送物を前記リフター部の支え面の接触位置に移動させた後、前記リフター部が前記搬送物を持ち上げる方向に移動する場合は、前記リフター部と前記搬送物とは一体のままとして前記シミュレーション演算を継続し、
前記リフター部が前記搬送物を持ち上げる方向とは逆の方向に移動する場合は、前記リフター部の高さが前記記憶部に格納された高さになった際に前記リフター部と前記搬送物とを別の物体と判定する
ことを特徴とする請求項１に記載のプログラム。
【請求項４】
３次元シミュレーション空間上に搬送物と、プッシャー部の押し出し面で押すことで該搬送物を移動させる動作をするまたはリフター部の支え面により下から支えることで該搬送物を上方に上げる動作をする搬送機とが配置され、該搬送機が該搬送物を搬送するシミュレーション演算を実行する実行部と、
前記シミュレーション演算を実行する際に、前記プッシャー部の押し出し面、または、前記リフター部の支え面の移動先方向の所定範囲内に前記搬送物の所定の基準点が存在することを検出すると、前記搬送物を前記プッシャー部の押し出し面、または、前記リフター部の支え面の接触位置に移動させる移動制御部と
を有することを特徴とする演算装置。
【請求項５】
コンピュータが、
３次元シミュレーション空間上に搬送物と、プッシャー部の押し出し面で押すことで該搬送物を移動させる動作をするまたはリフター部の支え面により下から支えることで該搬送物を上方に上げる動作をする搬送機とが配置され、該搬送機が該搬送物を搬送するシミュレーション演算を実行し、
前記シミュレーション演算を実行する際に、前記プッシャー部の押し出し面、または、前記リフター部の支え面の移動先方向の所定範囲内に前記搬送物の所定の基準点が存在することを検出すると、前記搬送物を前記プッシャー部の押し出し面、または、前記リフター部の支え面の接触位置に移動させる
処理を実行する演算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、演算装置および演算方法に関する。
【背景技術】
【０００２】
従来、ワークと呼ばれる搬送物の搬送状態をシミュレートする技術が知られている。例えば、ベルトコンベア、吸着チャック、プッシャー、リフター等の搬送機器を制御する制御プログラムのデバッグを行うため、制御プログラムに従ってシミュレーション空間上の搬送機器を動作させ、ワークが適切に搬送されるか確認する技術が知られている。
【０００３】
ここで、シミュレート空間上でワークの搬送を実現する方法として、搬送機器がワークに干渉したことを検知し、ワークに干渉した搬送機器の動作に応じてワークの搬送をシミュレートする方法が考えられる。しかし、多くのワークや複数の搬送機器の動作を同時にシミュレートする際に、各搬送機器がワークに干渉しているか否かを全ての要素に対して判断した場合は、演算量が膨大になってしまう。
【０００４】
そこで、シミュレーションの演算を簡単化する技術が知られている。例えば、搬送機器とワークとが所定の距離内に近づいたときに、搬送機器とワークとが一体になったものとしてシミュレーションの演算を行う。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１１−３３９５５号公報
【特許文献２】特開２００２−６８４１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、搬送機器とワークとが一体になったものとしてシミュレーションの演算を行う上述の技術では、実際に搬送機器によって搬送される姿勢でワークが搬送されない場合や、搬送機器にワークがめり込んでしまったまま搬送される場合がある。かかる場合には、実際とは異なる状態でワークが搬送されてしまうので、ワークの位置ずれが発生することがある。そのため、搬送機器とワークとが一体になったものとしてシミュレーションの演算を行う上述の技術は、シミュレーションの精度が良好でないという問題がある。
【０００７】
１つの側面では、本発明は、シミュレーションの精度の低下を抑制することを目的とする。
【課題を解決するための手段】
【０００８】
１つの側面では、プログラムは、コンピュータに、３次元シミュレーション空間上に搬送物と、プッシャー部の押し出し面で押すことで該搬送物を移動させる動作をするまたはリフター部の支え面により下から支えることで該搬送物を上方に上げる動作をする搬送機とが配置され、該搬送機が該搬送物を搬送するシミュレーション演算を実行させる。プログラムは、コンピュータに、前記シミュレーション演算を実行する際に、前記プッシャー部の押し出し面、または、前記リフター部の支え面の移動先方向の所定範囲内に前記搬送物の所定の基準点が存在することを検出すると、前記搬送物を前記プッシャー部の押し出し面、または、前記リフター部の支え面の接触位置に移動させる処理を実行させる。
【発明の効果】
【０００９】
１つの側面では、シミュレーションの精度の低下を抑制することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施例に係る演算装置の機能構成の一例を示す図である。
【図２Ａ】図２Ａは、演算装置が実行する、搬送機器とワークとの接触判定の処理の一例について説明するための図である。
【図２Ｂ】図２Ｂは、演算装置が実行する、搬送機器とワークとの接触判定の処理の一例について説明するための図である。
【図３】図３は、搬送部品形状テーブルの一例を説明する図である。
【図４】図４は、搬送動作情報テーブルの一例を説明する図である。
【図５】図５は、ワーク形状テーブルの一例を説明する図である。
【図６】図６は、ワーク姿勢テーブルの一例を説明する図である。
【図７】図７は、接触判定直方体テーブルの一例を説明する図である。
【図８】図８は、接触平面テーブルの一例を説明する図である。
【図９】図９は、ワークの接触判定直方体を説明する図である。
【図１０Ａ】図１０Ａは、プッシャーの搬送可能領域を説明する図である。
【図１０Ｂ】図１０Ｂは、リフターの搬送可能領域を説明する図である。
【図１１】図１１は、ワーク移動演算部が実行する処理の一例について説明するための図である。
【図１２】図１２は、ワーク移動演算部が実行する処理の一例について説明するための図である。
【図１３】図１３は、あるタイムステップにおけるワークと搬送機器との接触を判定する処理の流れを説明するためのフローチャートである。
【図１４】図１４は、あるタイムステップにおけるワークの位置を演算する処理の流れを説明するためのフローチャートである。
【図１５】図１５は、あるタイムステップにおけるワークとリフターとが接触状態である場合にワークの位置を演算する処理の流れを説明するためのフローチャートである。
【図１６】図１６は、あるタイムステップにおいて、プッシャーとワークとの接触状態を解除する場合の処理を説明するためのフローチャートである。
【図１７】図１７は、あるタイムステップにおいて、リフターとワークとの接触状態を解除する場合の処理を説明するためのフローチャートである。
【図１８】図１８は、シミュレートプログラムを実行するコンピュータの一例を説明するための図である。
【発明を実施するための形態】
【００１１】
以下に図面を参照して実施例に係るプログラム、演算装置および演算方法について説明する。
【００１２】
実施例では、ワークの搬送をシミュレートする演算装置について説明する。図１は、実施例に係る演算装置の機能構成の一例を示す図である。図１に示すように、演算装置１は、入力装置２、および出力装置３と接続されている。また、演算装置１は、管理情報記憶部５、動作パラメータ記憶部６、３次元データ管理部７を有する。また、演算装置１は、制御ソフトウェア実行部８、モータ動作演算部９、シミュレーション演算部１０、３次元姿勢演算部１１、３次元形状表示制御部１２を有する。
【００１３】
また、管理情報記憶部５は、搬送部品形状テーブル５ａ、搬送動作情報テーブル５ｂ、ワーク形状テーブル５ｃ及びワーク姿勢テーブル５ｄを有する。また、動作パラメータ記憶部６は、接触判定直方体テーブル６ａ、接触平面テーブル６ｂを有する。また、シミュレーション演算部１０は、動作パラメータ作成部１０ａ、搬送動作演算部１０ｂ、接触姿勢演算部１０ｃ、ワーク移動演算部１０ｄを有する。
【００１４】
演算装置１は、タイムステップＴ１、Ｔ２、・・・ＴＮまでの各タイムステップにおけるワークの搬送状態をシミュレートし、シミュレートした結果を出力装置２から出力させる。これにより、搬送機器を制御する制御ソフトウェアの開発者などに、制御ソフトウェアによる搬送機器の制御が適切かを検証させることができる。演算装置１は、例えば、入力装置２から、シミュレーション空間上で搬送をシミュレートするワークの形状及びワークの初期（タイムステップＴ１）のワークの姿勢、および、ワークを搬送する搬送機器の機能や初期の配置等の情報を取得する。例えば、演算装置１は、ＣＡＤ（Computer  Aided  Design）によって作成されたワークの３次元モデルデータ及び初期のワークの姿勢データを取得する。また、演算装置１は、ＣＡＤによって作成されたプッシャー、ベルトコンベア、吸着チャック、リフター等の搬送機器の３次元モデルデータ、および、初期の搬送機器の配置位置等を取得する。そして、演算装置１は、取得した３次元モデルデータ等を用いて、タイムステップＴ１〜ＴＮまでのワークの搬送シミュレーションを実行し、実行結果をモニタやプリンタである出力装置３に出力させる。例えば、演算装置１は、各種搬送機器によってワークが搬送される映像を出力装置３に出力し表示させる。
【００１５】
ここで、演算装置１は、ワークと、ワークを搬送している搬送機器とが接触した場合に、搬送機器の移動方向の成分のうち、搬送機器の姿勢が変化した方向の成分の移動量を抽出し、抽出した移動量の分だけワークを移動させる。これにより、ワークと搬送機器とを別々にシミュレートすることができる。ここで、ワークの面をすべりながら搬送機器がワークを搬送するような場合に、接触状態にあるワークと搬送機器とを一体化してしまうと、搬送機器がワークの面をすべることができない。そのため、接触状態にあるワークと搬送機器とを一体化するようなシミュレーションでは、精度良くワークの搬送状態をシミュレートすることができない場合がある。しかしながら、演算装置１は、搬送機器の移動方向の成分のうち、搬送機器の姿勢が変化した方向の成分の移動量を抽出し、抽出した移動量の分だけワークを移動させる。このため、演算装置１によれば、ワークの面をすべりながら搬送機器がワークを搬送するような場合であってもシミュレーションを精度良く行うことができる。
【００１６】
ここで、搬送機器とワークとが接触したと判定するタイミングとしては、例えば、搬送機器とワークとの干渉チェックを行って、搬送機器とワークとが干渉し、かつ、干渉した部分の長さが所定の閾値以内となったタイミングが考えられる。しかしながら、かかるタイミングを、搬送機器とワークとが接触したタイミングとする場合には、ワークに対して搬送機器がめり込んだままワークの搬送状態をシミュレートすることになる。すなわち、実際に、搬送機器によってワークを搬送する状況とは異なった状況でワークの搬送状態をシミュレートすることになる。そのため、上述したタイミングを搬送機器とワークとが接触するタイミングとして採用する場合には、シミュレーションにおいて演算されるワークの位置の精度が悪くなる。したがって、上述したタイミングを搬送機器とワークとが接触したタイミングとして採用する場合には、制御プログラムの検証を精度良く行うことができない。
【００１７】
そこで、演算装置１は、以下の処理を実行する。図２Ａは、演算装置が実行する、搬送機器とワークとの接触判定の処理の一例について説明するための図である。例えば、図２Ａの例に示すように、あるタイムステップにおいて、演算装置１は、プッシャー３０が移動して、プッシャー３０に設定された搬送可能領域にワーク４０の接触判定直方体の重心４１が含まれることとなった場合には、次の処理を行う。すなわち、演算装置１は、プッシャー３０の接触判定直方体に設定されたワーク４０を押し出す面である接触面３１とワーク４０の面とが平行となる場合の接触判定直方体の回転量を演算するとともに回転方向を決定する。なお、演算装置１は、各搬送機器がワークを押し出す面である接触平面からワークを押し出す方向に向けて所定の搬送可能領域を設定する。例えば、演算装置１は、重心４１を中心として、接触面３１に最も近いワーク４０の接触判定直方体の点４２をプッシャー３０の移動方向に押した場合にワーク４０の接触判定直方体が回転する方向４３をワーク４０の接触判定直方体を回転させる方向として決定する。また、演算装置１は、接触面３１とワーク４０の面とが平行となる場合の接触判定直方体の回転量を演算する。そして、演算装置１は、プッシャー３０が接触判定直方体の面４４と接触する位置まで移動した場合には、ワーク４０の接触判定直方体を決定した回転方向に演算した回転量だけ回転させる。そして、演算装置１は、プッシャー３０とワーク４０とが接触したものとみなす。これにより、演算装置１は、ワーク４０に対してプッシャー３０がめり込むことなく、プッシャーがワークを搬送する実際の状況と同様の状況でワーク４０の搬送状態をシミュレートすることができる。それゆえ、演算装置１によれば、シミュレーションにおいて演算されるワークの位置の精度の低下を抑制することができる。したがって、演算装置１によれば、制御プログラムの検証を精度良く行うことができる。
【００１８】
また、演算装置１によれば、ワーク４０がプッシャー３０によって搬送される際の姿勢が、プッシャーがワークを実際に搬送する際のワークの姿勢と同様となる。そのため、演算装置１は、プッシャーがワークを搬送する実際の状況と同様の状況でワーク４０の搬送状態をシミュレートすることができる。それゆえ、演算装置１によれば、シミュレーションにおいて演算されるワークの位置の精度の低下を抑制することができる。したがって、演算装置１によれば、制御プログラムの検証を精度良く行うことができる。
【００１９】
図２Ｂは、演算装置が実行する、搬送機器とワークとの接触判定の処理の一例について説明するための図である。例えば、図２Ａの例に示すように、あるタイムステップにおいて、演算装置１は、リフター６０が移動して、リフター６０に設定された搬送可能領域にワーク７０の接触判定直方体の重心７１が含まれることとなった場合には、次の処理を行う。すなわち、演算装置１は、リフター６０の接触判定直方体に設定されたワーク７０を押し出す面である接触面６１とワーク７０の面とが平行となる場合の接触判定直方体の回転量を演算するとともに回転方向を決定する。なお、演算装置１は、各搬送機器がワークを上に持ち上げる面である接触平面からワークを持ち上げる方向に向けて所定の搬送可能領域を設定する。例えば、演算装置１は、重心７１を中心として、接触面６１に最も近いワーク７０の接触判定直方体の点７２をリフター６０の移動方向に押した場合にワーク７０の接触判定直方体が回転する方向７３をワーク７０の接触判定直方体を回転させる方向として決定する。また、演算装置１は、接触面６１とワーク７０の面とが平行となる場合の接触判定直方体の回転量を演算する。そして、演算装置１は、リフター６０が接触判定直方体の面７４と接触する位置まで移動した場合には、ワーク７０の接触判定直方体を決定した回転方向に演算した回転量だけ回転させる。そして、演算装置１は、リフター６０とワーク７０とが接触したものとみなす。これにより、演算装置１は、ワーク７０に対してリフター６０がめり込むことなく、リフターがワークを搬送する実際の状況と同様の状況でワーク７０の搬送状態をシミュレートすることができる。それゆえ、演算装置１によれば、シミュレーションにおいて演算されるワークの位置の精度の低下を抑制することができる。したがって、演算装置１によれば、制御プログラムの検証を精度良く行うことができる。
【００２０】
また、演算装置１によれば、ワーク７０がリフター６０によって搬送される際の姿勢が、リフターがワークを実際に搬送する際のワークの姿勢と同様となる。そのため、演算装置１は、リフターがワークを搬送する実際の状況と同様の状況でワーク７０の搬送状態をシミュレートすることができる。それゆえ、演算装置１によれば、シミュレーションにおいて演算されるワークの位置の精度の低下を抑制することができる。したがって、演算装置１によれば、制御プログラムの検証を精度良く行うことができる。
【００２１】
次に、先の図１に示す各機能の一例について説明する。搬送部品形状テーブル５ａは、入力装置２から入力されたプッシャーやリフターなどの搬送機器の形状を示すデータが格納されたテーブルである。図３は、搬送部品形状テーブルの一例を説明する図である。図３に示す例は、搬送部品形状テーブル５ａに、シミュレーション空間上に配置されたプッシャーやリフターなどの形状として、プッシャーやリフターなどの表面を構成する３角形平面（ポリゴン）の頂点座標が格納された場合を示す。
【００２２】
例えば、図３の例は、搬送部品形状テーブル５ａが、あるプッシャーの表面を構成する複数のポリゴンの各頂点座標「（ＸＰ１、ＹＰ１、ＺＰ１）、…」を記憶した場合を示す。なお、図３に示す例では、最も単純なポリゴンデータを記憶する例について記載したが、実施例はこれに限定されるものではなく、例えば、搬送部品形状テーブル５ａには、辺データを考慮したポリゴンデータが格納されても良い。また、搬送部品形状テーブル５ａには、自由曲面を構成する線、および線を構成する点を階層的に記憶しても良い。すなわち、搬送部品形状テーブル５ａには、シミュレーション空間上で搬送機器を表現する任意形式のデータが格納される。
【００２３】
搬送動作情報テーブル５ｂは、搬送機器の動作を示すデータが格納されたテーブルである。例えば、図４は、搬送動作情報テーブルの一例を説明する図である。図４に示す例では、搬送動作情報テーブルには、演算装置１が実行するシミュレーションでの最新のタイムステップＴｋ（ｋ＝１，・・・，Ｎ）における各搬送機器の重心位置と移動量及び移動方向を示す移動ベクトルと姿勢角とが対応付けて格納される。
【００２４】
例えば、図４に示す例は、搬送動作情報テーブル５ｂが、あるタイムステップにおけるあるプッシャーの重心位置「（ＸＰ１、ＹＰ１、ＺＰ１）」、移動量及び移動方向「（Ｘ１、Ｙ１、Ｚ１）」、姿勢角「（θ１、ρ１、φ１）」を記憶した場合を示す。ここで、θ、ρ、φは、３次元空間内の各軸（Ｘ軸、Ｙ軸、Ｚ軸）を中心にしてどれだけ回転しているかを示す角度の情報である。なお、タイムステップＴｋにおいて搬送動作情報テーブル５ｂに格納される搬送機器の重心位置及び姿勢角については、後述する３次元姿勢演算部１１がタイムステップＴｋにおいて新たに算出した値に更新される。また、タイムステップＴｋにおいて搬送動作情報テーブル５ｂに格納される移動ベクトルについては、モータ動作演算部９がタイムステップＴｋにおいて新たに演算した移動ベクトルに更新される。したがって、タイムステップＴｋにおいて、モータ動作演算部９により移動ベクトルが登録されてから、３次元姿勢演算部１１により搬送機器の重心位置及び姿勢角が登録されるまでの間における搬送動作情報テーブル５ｂの登録内容は次の内容となる。すなわち、搬送動作情報テーブル５ｂには、タイムステップＴｋにおける移動ベクトルと、タイムステップＴｋ−１における搬送機器の位置及び姿勢角とが対応付けて登録される。よって、タイムステップＴｋにおいて、後述する動作パラメータ作成部１０ａ、搬送動作演算部１０ｂ、接触姿勢演算部１０ｃ、ワーク移動演算部１０ｄによって参照される搬送動作情報テーブル５ｂの登録内容は、次の内容となる。すなわち、かかる登録内容は、タイムステップＴｋにおける移動ベクトル、並びに、タイムステップＴｋ−１における搬送機器の位置及び姿勢角となる。
【００２５】
図１の説明に戻り、ワーク形状テーブル５ｃは、シミュレーション空間内において各種の搬送機器が搬送を行うワークの形状が格納されている。図５は、ワーク形状テーブルの一例を説明する図である。図５に示す例は、ワーク形状テーブル５ｃが、ワーク＃１の表面を構成する３角形平面（ポリゴン）の頂点座標を記憶した場合を示す。図５の例は、ワーク形状テーブル５ｃが、ワーク＃１の表面を構成するポリゴンの座標データ「（ＸＷ１、ＹＷ１、ＺＷ１）、・・・」を記憶した場合を示す。なお、ワーク形状テーブル５ｃは、搬送部品形状テーブル５ａと同様に、自由曲面等のデータが格納されていても良い。
【００２６】
ワーク姿勢テーブル５ｄは、ワークの姿勢を示すデータが格納されたテーブルである。例えば、図６は、ワーク姿勢テーブルの一例を説明する図である。図６に示す例では、ワーク姿勢テーブル５ｄに、各ワークの接触判定直方体の重心の位置と、各ワークの接触判定直方体の重心を原点として、各接触判定直方体が３次元空間内の各軸を中心にどれだけ回転しているかを示す姿勢の情報が格納されている。
【００２７】
例えば、図６に示す例は、ワーク姿勢テーブル５ｄが、ワーク＃１の接触判定直方体の重心の位置「（Ｘ１、Ｙ１、Ｚ１）」、姿勢角（θＷ１、ρＷ１、φＷ１）」を記憶した場合を示す。また、タイムステップＴｋにおいて、ワーク姿勢テーブル５ｄに格納される重心位置及び姿勢は、３次元姿勢演算部１１がタイムステップＴｋにおいて新たに演算した重心位置及び姿勢に更新される。したがって、タイムステップＴｋにおいて、３次元姿勢演算部１１によりワークの接触判定直方体の重心位置及び姿勢角が登録されるまでのワーク姿勢テーブル５ｄの登録内容は次の内容となる。すなわち、ワーク姿勢テーブル５ｄには、タイムステップＴｋ−１における各ワークの接触判定直方体の重心位置及び姿勢角とが対応付けて登録される。よって、タイムステップＴｋにおいて、後述する動作パラメータ作成部１０ａ、搬送動作演算部１０ｂ、接触姿勢演算部１０ｃ、ワーク移動演算部１０ｄによって参照されるワーク姿勢テーブル５ｄの登録内容は、次の内容となる。すなわち、かかる登録内容は、タイムステップＴｋ−１における各ワークの接触判定直方体の重心位置及び姿勢角となる。
【００２８】
図１に戻って、接触判定直方体テーブル６ａは、各ワークに外接する直方体である接触判定直方体の表面を構成するポリゴンデータを記憶するテーブルである。接触判定直方体は、タイムステップＴｋにおいて、タイムステップＴｋよりも１つ前のタイムステップＴｋ−１における各ワークの重心位置及び形状に基づいて後述の動作パラメータ作成部１２により作成される。図７は、接触判定直方体テーブルの一例を説明する図である。図７に示す例は、接触判定直方体テーブル６ａが、タイムステップＴｋにおいてタイムステップＴｋ−１におけるワーク＃１の重心位置及び形状に基づいて作成された接触判定直方体の表面を構成するポリゴンデータ「（ＸＳ１、ＹＳ１、ＺＳ１）、・・・」を記憶する場合を示す。
【００２９】
接触平面テーブル６ｂは、各搬送機器の種別ごとに、ワークを搬送する際にワークと接触する面である接触平面の頂点座標を記憶する。図８は、接触平面テーブルの一例を説明する図である。図８に示す例は、接触平面テーブル６ｂが、あるプッシャーの接触平面の頂点座標「（ＸＰ１Ｐ、ＹＰ１Ｐ、ＺＰ１Ｐ）、・・・」を記憶した場合を示す。なお、図８では記載を省略したが、搬送機器の接触平面の両側のうちどちらの側がワークと接触するかを示す情報が接触平面テーブル６ｂに登録されるものとする。また、各タイムステップにおける接触平面の頂点座標は、後述の動作パラメータ作成部１０ａによって作成される。そして、動作パラメータ作成部１０ａによって、各タイムステップにおける接触平面の頂点座標が、接触平面テーブル６ｂに登録され、接触平面テーブル６ｂが更新される。
【００３０】
図１に戻って、３次元データ管理部７は、シミュレーション画像を作成する際に用いる各種データを記憶する。例えば、３次元データ管理部７は、各ワークや搬送機器のポリゴンデータ、表示する際の色を指定する情報等を記憶する。
【００３１】
制御ソフトウェア実行部８は、デバッグ対象となる制御ソフトウェアを実行する。例えば、制御ソフトウェア実行部８は、シミュレーション対象となる工場において、各搬送機器を動作させるサーボモータの制御信号を生成する制御ソフトを実行する。そして、制御ソフトウェア実行部８は、制御ソフトウェアが生成した制御信号の内容を、タイムステップＴ１からタイムステップＴＮまでのタイムステップごとに順番にモータ動作演算部９に出力する。例えば、制御ソフトウェア実行部８は、サーボモータのオンとオフを示すパルス信号がオン状態となるタイミング、オン状態となる時間、パルスの正負等をモータ動作演算部９に通知する。
【００３２】
モータ動作演算部９は、制御ソフトウェア実行部８から受信した制御信号の内容に従って、タイムステップごとに各搬送機器を動作させるサーボモータの回転数等を演算する。そして、モータ動作演算部９は、演算結果を用いて、タイムステップごとに各搬送機器の移動量及び移動方向を示す移動ベクトルを生成し、生成した移動ベクトルを搬送動作情報テーブル５ｂに格納する。例えば、モータ動作演算部９は、あるタイムステップにおいて、プッシャーを動作させるサーボモータの制御信号の内容を受信すると、受信した制御信号に従ってサーボモータの回転方向や回転数を演算する。そして、モータ動作演算部９は、演算したサーボモータの回転方向や回転数に応じてプッシャーの移動量及び移動方向を示す移動ベクトルを算出し、算出した移動ベクトルを搬送動作情報テーブル５ｂに格納して、搬送動作情報テーブル５ｂを更新する。なお、モータ動作演算部９は、各搬送機器の各軸の回転量も演算し、搬送動作情報テーブル５ｂの図示しない項目に格納する。
【００３３】
動作パラメータ作成部１０ａは、タイムステップごとに、管理情報記憶部５が記憶する各種情報を用いて、動作パラメータを生成し、生成した動作パラメータを動作パラメータ記憶部６に格納する。
【００３４】
ここで、動作パラメータとは、演算装置１がワークの搬送状態をシミュレートするために用いる情報である。例えば、動作パラメータとは、各ワークと各搬送機器が接触しているか否かを判定する接触判定に用いる情報であり、ワークに外接する接触判定直方体の位置情報と、搬送機器がワークを搬送する際にワークと接触する接触平面の位置情報である。
【００３５】
以下、動作パラメータ作成部１０ａの動作について説明する。まず、動作パラメータ作成部１０ａは、タイムステップＴｋにおいて、ワーク形状テーブル５ｃとワーク姿勢テーブル５ｄから、各ワークの形状とタイムステップＴｋ−１におけるワークの接触判定直方体の重心位置及び姿勢とを取得する。そして、動作パラメータ作成部１０ａは、取得した各ワークの形状、重心位置及び姿勢に基づいて、各ワークに外接する接触判定直方体の表面を構成するポリゴンデータを作成し、作成したポリゴンデータを接触判定直方体テーブル６ａに格納する。
【００３６】
図９は、ワークの接触判定直方体を説明する図である。例えば、動作パラメータ作成部１０ａは、図９中の直線で示すワーク４０の接触判定直方体として、図９中の点線で示す直方体５０を識別する。すなわち、動作パラメータ作成部１０ａは、ワーク４０に外接する直方体５０を識別する。そして、動作パラメータ作成部１０ａは、識別した直方体５０の表面を構成するポリゴンのポリゴンデータを生成し、生成したポリゴンデータを接触判定直方体テーブル６ａに格納する。動作パラメータ作成部１０ａは、上述したポリゴンデータを生成する処理をタイムステップごとに、各ワークに対して行う。
【００３７】
また、動作パラメータ作成部１０ａは、タイムステップＴｋにおいて、搬送動作演算部１０ｂから送信されたタイムステップＴｋにおける各搬送機器の重心位置及び姿勢を受信し取得する。また、動作パラメータ作成部１０ａは、各搬送機器の形状を示すポリゴンデータを搬送部品形状テーブル５ａから取得する。そして、動作パラメータ作成部１０ａは、取得した各搬送機器の形状とタイムステップＴｋにおける各搬送機器の重心位置及び姿勢とを用いて、次のデータを生成する。すなわち、動作パラメータ作成部１０ａは、搬送機器がワークと接触した場合に、接触したワークを押し出す面または持ち上げる面である接触平面の頂点座標を作成し、作成した接触平面の頂点座標を接触平面テーブル６ｂに格納する。ここで、動作パラメータ作成部１０ａは、搬送機器がワークを押し出す方向または持ち上げる方向のベクトルを法線ベクトルとする搬送機器の面を接触平面とすることができる。例えば、先の図２Ａの例に示すように、動作パラメータ作成部１０ａは、プッシャー３０の接触平面３１の頂点座標を作成し、接触平面テーブル６ｂに格納する。動作パラメータ作成部１０ａは、上述した接触平面を作成する処理をタイムステップごとに、各搬送機器に対して行う。
【００３８】
搬送動作演算部１０ｂは、シミュレーション空間内の各搬送機器のタイムステップＴｋにおける重心位置を演算する。例えば、搬送動作演算部１０ｂは、タイムステップＴｋにおいて、搬送動作情報テーブル５ｂに格納された各搬送機器のタイムステップＴｋ−１における重心位置とタイムステップＴｋにおける移動ベクトルとを取得する。
【００３９】
そして、搬送動作演算部１０ｂは、各搬送機器のタイムステップＴｋ−１における重心位置とタイムステップＴｋにおける移動ベクトルとに基づいて、タイムステップＴｋにおける各搬送機器の重心位置を演算する。そして、搬送動作演算部１０ｂは、各搬送機器の重心位置、及び、各搬送機器のタイムステップＴｋにおける移動ベクトルを動作パラメータ作成部１０ａ、接触姿勢演算部１０ｃ、ワーク移動演算部１０ｄに出力する。
【００４０】
接触姿勢演算部１０ｃは、動作パラメータ記憶部６が記憶する情報、及び、搬送動作演算部１０ｂから出力された各搬送機器の重心位置を用いて、ワークの接触判定を行う。例えば、接触姿勢演算部１０ｃは、接触判定直方体の形状と、各搬送機器の接触平面の形状とを接触判定直方体テーブル７ａ及び接触平面テーブル７ｂから取得する。そして、接触姿勢演算部１０ｃは、各搬送機器の接触平面上に、ワークの搬送を開始するか否かを判定する搬送可能領域を設定する。例えば、接触姿勢演算部１０ｃは、接触平面上に、搬送機器が移動する方向に、所定の搬送可能領域を設定する。図１０Ａは、プッシャーの搬送可能領域を説明する図である。例えば、図１０Ａの例に示すように、接触姿勢演算部１０ｃは、プッシャー３０の接触平面３１上に設定される、ワークの搬送を開始するか否かを判定する搬送可能領域３２のポリゴンデータを作成する。図１０Ａの例に示すように、搬送可能領域３２は、プッシャー３０の接触平面３１の幅と同様の幅３３を有し、プッシャー３０の移動方向３４におけるプッシャー３０が搬送を行うワークの接触判定直方体の長さと同様の長さ３５を有する。そして、接触姿勢演算部１０ｃは、作成した搬送可能領域３２をプッシャー３０の接触平面３１上に設定する。
【００４１】
図１０Ｂは、リフターの搬送可能領域を説明する図である。例えば、図１０Ｂの例に示すように、接触姿勢演算部１０ｃは、リフター６０の接触平面６１上に設定される、ワークの搬送を開始するか否かを判定する搬送可能領域６２のポリゴンデータを作成する。図１０Ｂの例に示すように、搬送可能領域６２は、リフター６０の接触平面６１の幅と同様の幅６３を有し、リフター６０の移動方向６４におけるリフター６０が搬送を行うワークの接触判定直方体の長さと同様の長さ６５を有する。そして、接触姿勢演算部１０ｃは、作成した搬送可能領域６２をリフター６０の接触平面６１上に設定する。姿勢接触演算部１０ｂは、上述した搬送可能領域を設定する処理をタイムステップごとに、各搬送機器について行う。
【００４２】
また、接触姿勢演算部１０ｃは、各ワークの接触判定直方体の重心位置を算出する。そして、接触姿勢演算部１０ｃは、ワークごとに、算出した重心位置が、重心位置が算出された接触判定直方体のワークを搬送対象とする搬送機器に設定された搬送可能領域に含まれるか否かを判定する。接触姿勢演算部１０ｃは、あるタイムステップＴｋにおいて、ある搬送機器に設定された搬送可能領域にワークの接触判定直方体の重心位置が含まれる場合には、次の処理を行う。すなわち、接触姿勢演算部１０ｃは、搬送可能領域にワークの接触判定直方体の重心が含まれると判定した場合には、搬送機器がワークの搬送を開始すると判定する。例えば、接触姿勢演算部１０ｃは、先の図２Ａの例に示すように、あるタイムステップＴｋにおいて、搬送可能領域にワークの接触判定直方体の重心が含まれると判定した場合には、プッシャー３０がワーク４０の搬送を開始すると判定する。そして、接触姿勢演算部１０ｃは、搬送機器の接触面に最も近い接触判定直方体の点を検出する。続いて、接触姿勢演算部１０ｃは、搬送機器の移動方向にワークの接触判定直方体を押した場合に接触判定直方体が回転する方向を決定する。次に、接触姿勢演算部１０ｃは、搬送機器に設定されたワークを押し出す面または持ち上げる面である接触面とワークの接触判定直方体の面とが平行となる場合の、接触判定直方体の回転量を計算する。
【００４３】
そして、接触姿勢演算部１０ｃは、搬送機器が接触判定直方体の面と接触する位置まで移動した場合に、ワークの接触判定直方体を決定した方向に計算した回転量だけ回転させることを開始する。そして、ワーク移動演算部１０ｄは、接触面とワークの接触判定直方体の面とが平行となった場合に、接触判定直方体の回転を停止する。そして、接触姿勢演算部１０ｃは、搬送機器とワークとが接触している接触状態であると判定する。続いて、接触姿勢演算部１０ｃは、接触状態である搬送機器とワークとをワーク移動演算部１０ｄに通知する。
【００４４】
例えば、先の図２Ａの例に示すように、接触姿勢演算部１０ｃは、接触面３１に最も近い点４２を検出する。そして、接触姿勢演算部１０ｃは、ワーク４０の接触判定直方体の重心を中心として、プッシャー３０の移動方向にワーク４０の接触判定直方体を押した場合に接触判定直方体が回転する方向４３を決定する。そして、接触姿勢演算部１０ｃは、プッシャー３０が接触判定直方体の面４４と接触する位置まで移動した場合に、ワーク４０の接触判定直方体を決定した方向４３に計算した回転量だけ回転させることを開始する。そして、ワーク移動演算部１０ｄは、接触面３１とワーク４０の接触判定直方体の面４４とが平行となった場合に、接触判定直方体の回転を停止する。そして、接触姿勢演算部１０ｃは、プッシャー３０とワーク４０とが接触している接触状態であると判定する。続いて、接触姿勢演算部１０ｃは、接触状態であるプッシャー３０とワーク４０とをワーク移動演算部１０ｄに通知する。
【００４５】
図１に戻り、ワーク移動演算部１０ｄは、搬送に伴うワークの移動を演算する。例えば、ワーク移動演算部１０ｄは、タイムステップＴｋにおいて、接触状態である搬送機器とワークとを接触姿勢演算部１０ｃから受信すると、次の処理を行う。すなわち、ワーク移動演算部１０ｄは、接触状態である搬送機器のタイムステップＴｋにおける移動ベクトルの搬送機器の姿勢が変化した方向の成分の移動量を抽出する。そして、ワーク移動演算部１０ｄは、抽出した移動量だけ、搬送機器の姿勢が変化した方向にワークを移動させた場合のワークの位置を算出する。
【００４６】
図１１は、ワーク移動演算部が実行する処理の一例について説明するための図である。図１１の例に示すように、ワーク移動演算部１０ｄは、タイムステップＴｋにおいて、プッシャー３０とワーク４０とが接触状態であることを接触姿勢演算部１０ｃから受信すると、次の処理を行う。すなわち、ワーク移動演算部１０ｄは、接触状態であるプッシャー３０のタイムステップＴｋにおける移動ベクトル３９のプッシャー３０の姿勢が変化した方向の成分の移動量４９を抽出する。そして、ワーク移動演算部１０ｄは、抽出した移動量４９だけ、プッシャー３０の姿勢が変化した方向にワーク４０を移動させて、ワーク４０の位置を算出する。その後、ワーク移動演算部１０ｄは、プッシャー３０がワーク４０を押し出す方向に移動する場合は、プッシャー３０とワーク４０とが接触状態のままワーク４０の位置を演算する。
【００４７】
一方、ワーク移動演算部１０ｄは、プッシャー３０がワーク４０を押し出す方向とは逆の方向に移動する場合は、逆方向に移動する際にプッシャー３０とワーク４０との接触状態を解除する。図１２は、ワーク移動演算部が実行する処理の一例について説明するための図である。図１２に示すように、ワーク移動演算部１０ｄは、プッシャー３０の移動ベクトル３８が示す移動方向が、プッシャー３０がワーク４０を押し出す方向とは逆の方向である場合には、プッシャー３０とワーク４０との接触状態を解除する。そして、ワーク移動演算部１０ｄは、移動ベクトル３８に従ってプッシャー３０の姿勢を変更する。
【００４８】
また、ワーク移動演算部１０ｄは、タイムステップＴｋにおいて、リフターとワークとが接触状態であることを接触姿勢演算部１０ｃから受信すると、次の処理を行う。すなわち、ワーク移動演算部１０ｄは、ワークをリフターの支え面である接触面の接触位置に移動させた際のワークの高さ方向（Ｚ軸方向）の座標を内部メモリに格納する。そして、ワーク移動演算部１０ｄは、ワークをリフターの支え面の接触位置に移動させた後、リフターがワークを持ち上げる方向に移動する場合は、リフターのタイムステップＴｋにおける移動ベクトルのリフターの姿勢が変化した方向の移動量を抽出する。そして、ワーク移動演算部１０ｄは、ワークをリフターの姿勢が変化した方向に、抽出した移動量だけ移動させ、ワークの位置を演算する。一方、ワーク移動演算部１０ｄは、リフターがワークを持ち上げる方向とは逆の方向、すなわち、地面方向に移動する場合は、リフターの高さが内部メモリに格納された高さになった際にリフターとワークとの接触状態を解除する。
【００４９】
そして、ワーク移動演算部１０ｄは、各搬送機器の位置及び姿勢角を３次元姿勢演算部１６に通知する。また、ワーク移動演算部１０ｄは、ワークの接触判定直方体の重心位置及び姿勢角を３次元姿勢演算部１６に通知する。
【００５０】
図１に戻って、３次元姿勢演算部１１は、ワーク移動演算部１０ｄから通知された各搬送機器の位置及び姿勢角を搬送動作上方テーブル５ｂに格納する。また、３次元姿勢演算部１１は、ワーク移動演算部１０ｄから通知された接触判定直方体の重心位置及び姿勢角をワーク姿勢テーブル５ｄに格納する。
【００５１】
そして、３次元姿勢演算部１１は、３次元データ管理部７が記憶する各ワーク、および各搬送機器の形状を読み出す。次に３次元姿勢演算部１１は、各ワークの接触判定直方体の重心位置、各搬送機器の重心位置に、読み出した形状を配置したシミュレーション空間を設定する。なお、３次元姿勢演算部１１は、シミュレーション空間を設定する際に、各ワーク、及び、各搬送機器がそれぞれ、対応する姿勢角となるようにシミュレーション空間を設定する。そして、３次元姿勢演算部１１は、設定したシミュレーション空間の情報を３次元形状表示制御部１２に通知する。
【００５２】
３次元形状表示制御部１２は、タイムステップごとに、シミュレーション空間を表示する出力装置３が表示する際の画像を生成する。例えば、３次元形状表示制御部１２は、シミュレーション空間の情報を３次元姿勢演算部１１から受信すると、受信したシミュレーション空間の画像をＺバッファ法やスキャンライン等を用いて生成し、生成した画像を出力装置３に送信する。
【００５３】
例えば、制御ソフトウェア実行部８、モータ動作演算部９、シミュレーション演算部１０、３次元姿勢演算部１１、３次元形状表示制御部１２は、電子回路である。ここで、電子回路の例として、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路、またはＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などが挙げられる。
【００５４】
また、管理情報記憶部５、動作パラメータ記憶部６、３次元データ管理部７は、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（flash  memory）などの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。
【００５５】
次に、図１３〜図１７を用いて、演算装置１が実行する処理の流れについて説明する。図１３は、あるタイムステップにおけるワークと搬送機器との接触を判定する処理の流れを説明するためのフローチャートである。
【００５６】
図１３に示すように、接触姿勢演算部１０ｃは、接触判定直方体の形状と、各搬送機器の接触平面の形状とを接触判定直方体テーブル７ａ及び接触平面テーブル７ｂから取得する（Ｓ１０１）。そして、接触姿勢演算部１０ｃは、各搬送機器の接触平面上に、ワークの搬送を開始するか否かを判定する搬送可能領域を設定する（Ｓ１０２）。続いて、接触姿勢演算部１０ｃは、各ワークの接触判定直方体の重心位置を算出する（Ｓ１０３）。
【００５７】
そして、接触姿勢演算部１０ｃは、ワークとかかるワークを搬送対象とする搬送機器との組み合わせのうち、未選択の組み合わせがあるか否かを判定する（Ｓ１０４）。未選択の組み合わせがない場合（Ｓ１０４否定）には、処理を終了する。一方、未選択の組み合わせがある場合（Ｓ１０４肯定）には、接触姿勢演算部１０ｃは、未選択の組み合わせを１つ選択する（Ｓ１０５）。そして、接触姿勢演算部１０ｃは、選択した組み合わせに含まれるワークの接触判定直方体の重心位置が、選択した組み合わせに含まれる搬送機器に設定された搬送可能領域に含まれるか否かを判定する（Ｓ１０６）。
【００５８】
そして、接触姿勢演算部１０ｂは、搬送可能領域にワークの接触判定直方体の重心が含まれないと判定した場合（Ｓ１０６否定）には、Ｓ１０４に戻る。一方、搬送可能領域にワークの接触判定直方体の重心が含まれると判定した場合（Ｓ１０６肯定）には、接触姿勢演算部１０ｂは、次の処理を行う。すなわち、接触姿勢演算部１０ｃは、搬送機器の接触面に最も近い接触判定直方体の点を検出する（Ｓ１０７）。続いて、接触姿勢演算部１０ｃは、搬送機器の移動方向にワークの接触判定直方体を押した場合に接触判定直方体が回転する方向を決定する（Ｓ１０８）。次に、接触姿勢演算部１０ｃは、搬送機器に設定されたワークを押し出す面または持ち上げる面である接触面とワークの接触判定直方体の面とが平行となる場合の、接触判定直方体の回転量を計算する（Ｓ１０９）。
【００５９】
そして、接触姿勢演算部１０ｃは、搬送機器が接触判定直方体の面と接触する位置まで移動したか否かを判定する（Ｓ１１０）。搬送機器が接触判定直方体の面と接触する位置まで移動していない場合（Ｓ１１０否定）には、接触姿勢演算部１０ｃは、再び、Ｓ１１０の判定を行う。一方、搬送機器が接触判定直方体の面と接触する位置まで移動した場合（Ｓ１１０肯定）、接触姿勢演算部１０ｃは、ワークの接触判定直方体を決定した方向に計算した回転量だけ回転させる（Ｓ１１１）。そして、接触姿勢演算部１０ｃは、搬送機器とワークとが接触している接触状態であると判定する（Ｓ１１２）。続いて、接触姿勢演算部１０ｃは、接触状態である搬送機器とワークとをワーク移動演算部１０ｄに通知し（Ｓ１１３）、処理を終了する。
【００６０】
図１４は、あるタイムステップにおけるワークの位置を演算する処理の流れを説明するためのフローチャートである。図１４に示すように、ワーク移動演算部１０ｄは、接触状態である搬送機器とワークとを接触姿勢演算部１０ｃから受信したか否かを判定する（Ｓ２０１）。受信していない場合（Ｓ２０１否定）には、ワーク移動演算部１０ｄは、再び、Ｓ２０１の判定を行う。一方、受信した場合（Ｓ２０１肯定）には、ワーク移動演算部１０ｄは、次の処理を行う。すなわち、ワーク移動演算部１０ｄは、接触状態である搬送機器の移動ベクトルの搬送機器の姿勢が変化した方向の成分の移動量を抽出する（Ｓ２０２）。そして、ワーク移動演算部１０ｄは、抽出した移動量だけ、搬送機器の姿勢が変化した方向にワークを移動させた場合のワークの位置を算出し（Ｓ２０３）、処理を終了する。
【００６１】
図１５は、あるタイムステップにおけるワークとリフターとが接触状態である場合にワークの位置を演算する処理の流れを説明するためのフローチャートである。図１５に示す処理は、例えば、ワーク移動演算部１０ｄが、リフターとワークとが接触状態であることを接触姿勢演算部１０ｃから受信した場合に実行される。図１５に示すように、ワーク移動演算部１０ｄは、ワークをリフターの支え面である接触面の接触位置に移動させた際のワークの高さ方向（Ｚ軸方向）の座標を内部メモリに格納する（Ｓ３０１）。そして、ワーク移動演算部１０ｄは、ワークをリフターの支え面の接触位置に移動させた後、リフターの移動ベクトルのリフターの姿勢が変化した方向の移動量を抽出する（Ｓ３０２）。そして、ワーク移動演算部１０ｄは、ワークをリフターの姿勢が変化した方向に、抽出した移動量だけ移動させ、ワークの位置を演算し（Ｓ３０３）、処理を終了する。
【００６２】
図１６は、あるタイムステップにおいて、プッシャーとワークとの接触状態を解除する場合の処理を説明するためのフローチャートである。図１６に示す処理は、例えば、プッシャーとワークとが接触状態である場合に、プッシャーの移動ベクトルが示す移動方向が、プッシャーがワークを押し出す方向とは逆の方向であるときに実行される。ワーク移動演算部１０ｄは、プッシャーとワークとの接触状態を解除する（Ｓ４０１）。そして、ワーク移動演算部１０ｄは、移動ベクトルに従ってプッシャーの姿勢を変更し（Ｓ４０２）、処理を終了する。
【００６３】
図１７は、あるタイムステップにおいて、リフターとワークとの接触状態を解除する場合の処理を説明するためのフローチャートである。図１７に示す処理は、例えば、リフターとワークとが接触状態である場合に、リフターの移動ベクトルが示す移動方向が、リフターがワークを持ち上げる方向とは逆の方向であるときに実行される。図１７に示すように、ワーク移動演算部１０ｄは、搬送動作演算部１０ｂから送信されたリフターの位置を示す座標から、リフターの高さ方向の座標を取得する（Ｓ５０１）。そして、ワーク移動演算部１０ｄは、取得したリフターの高さの座標が内部メモリに格納された高さの座標以下であるか否かを判定する（Ｓ５０２）。取得したリフターの高さの座標が内部メモリに格納された高さの座標以下である場合（Ｓ５０２肯定）には、ワーク移動演算部１０ｄは、リフターとワークとの接触状態を解除する（Ｓ５０３）。そして、ワーク移動演算部１０ｄは、移動ベクトルに従ってリフターの姿勢を変更し（Ｓ５０４）、処理を終了する。
【００６４】
一方、取得したリフターの高さの座標が内部メモリに格納された高さの座標以下でない場合（Ｓ５０２否定）には、ワーク移動演算部１０ｄは、リフターの移動ベクトルのリフターの姿勢が変化した方向の移動量を抽出する（Ｓ５０５）。そして、ワーク移動演算部１０ｄは、ワークをリフターの姿勢が変化した方向に、抽出した移動量だけ移動させ、ワークの位置を演算し（Ｓ５０６）、処理を終了する。
【００６５】
上述したように、演算装置１は、次の処理を行う。すなわち、演算装置１は、３次元シミュレーション空間上にワーク４０と、プッシャー３０の押し出し面３１で押すことでワーク４０を移動させる動作をするプッシャー３０とが配置され、プッシャー３０がワーク４０を搬送するシミュレーション演算を実行する。また、演算装置１は、３次元シミュレーション空間上にワーク７０と、リフター６０の支え面６１により下から支えることでワーク７０を上方に上げる動作をするリフター６０とが配置され、リフター６０がワーク７０を搬送するシミュレーション演算を実行する。そして、演算装置１は、かかるシミュレーション演算を実行する際に、プッシャー３０の押し出し面３１に設定された搬送可能領域内に、ワーク４０の重心が存在することを検出すると、次の処理を行う。演算装置１は、ワーク４０をプッシャー３０の押し出し面３１の接触位置に移動させる。また、演算装置１は、かかるシミュレーション演算を実行する際に、リフター６０の支え面６１に設定された搬送可能領域内に、ワーク７０の重心が存在することを検出すると、次の処理を行う。演算装置１は、ワーク７０をリフター６０の支え面６１の接触位置に移動させる。
【００６６】
よって、演算装置１は、ワーク４０、７０に対してプッシャー３０、リフター６０がめり込むことなく、プッシャーやリフターがワークを搬送する実際の状況と同様の状況でワーク４０、７０の搬送状態をシミュレートすることができる。それゆえ、演算装置１によれば、シミュレーションにおいて演算されるワークの位置の精度が低下することを抑制することができる。したがって、演算装置１によれば、制御プログラムの検証を精度良く行うことができる。
【００６７】
また、演算装置１によれば、ワーク４０がプッシャー３０によって搬送される際の姿勢が、プッシャーがワークを実際に搬送する際のワークの姿勢と同様となる。また、演算装置１によれば、ワーク７０がリフター６０によって搬送される際の姿勢が、リフターがワークを実際に搬送する際のワークの姿勢と同様となる。そのため、演算装置１は、プッシャーやリフターがワークを搬送する実際の状況と同様の状況でワーク４０、７０の搬送状態をシミュレートすることができる。それゆえ、演算装置１によれば、シミュレーションにおいて演算されるワークの位置の精度が低下することを抑制することができる。したがって、演算装置１によれば、制御プログラムの検証を精度良く行うことができる。
【００６８】
また、演算装置１は、ワークと、ワークを搬送している搬送機器とが接触した場合に、搬送機器の移動方向の成分のうち、搬送機器の姿勢が変化した方向の成分の移動量を抽出し、抽出した移動量の分だけワークを移動させる。これにより、ワークと搬送機器とを別々にシミュレートすることができる。ここで、ワークの面をすべりながら搬送機器がワークを搬送するような場合に、接触状態にあるワークと搬送機器とを一体化してしまうと、搬送機器がワークの面をすべることができない。そのため、接触状態にあるワークと搬送機器とを一体化するようなシミュレーションでは、精度良くワークの搬送状態をシミュレートすることができない場合がある。しかしながら、演算装置１は、搬送機器の移動方向の成分のうち、搬送機器の姿勢が変化した方向の成分の移動量を抽出し、抽出した移動量の分だけワークを移動させる。このため、演算装置１によれば、ワークの面をすべりながら搬送機器がワークを搬送するような場合であってもシミュレーションを精度良く行うことができる。
【００６９】
また、演算装置１は、ワークをプッシャーの押し出し面の接触位置に移動させた後、プッシャーがワークを押し出す方向に移動する場合は、プッシャーとワークとは接触状態のままとしてシミュレーション演算を継続する。また、演算装置１は、プッシャーがワークを押し出す方向とは逆の方向に移動する場合は、逆方向に移動する際にプッシャーとワークとの接触状態を解除し、プッシャーとワークとを別の物体と判定する。
【００７０】
また、演算装置１は、ワークをリフターの支え面の接触位置に移動させた際の高さ座標情報を記憶部に格納する。そして、演算装置１は、ワークをリフターの支え面の接触位置に移動させた後、リフターがワークを持ち上げる方向に移動する場合は、リフターとワークとは接触状態のままとしてシミュレーション演算を継続する。また、演算装置１は、リフターがワークを持ち上げる方向とは逆の方向に移動する場合は、リフターの高さが記憶部に格納された高さになった際にリフターとワークとの接触状態を解除し、リフターとワークとを別の物体と判定する。
【００７１】
また、演算装置１は、ワークに外接する接触判定直方体を用いて、ワークの回転中心、およびワークの回転方向を決定する。このため、演算装置１は、演算量を増加させることなく、ワークの回転を行うことができる。
【００７２】
これまで本発明の実施例について説明したが実施例は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では他の実施例を説明する。
【００７３】
［接触判定直方体について］
上述した演算装置１は、各ワークに外接する直方体を接触判定直方体とした。しかし、実施例はこれに限定されるものではない。例えば、演算装置１は、入力装置２から、利用者が任意に設定した接触判定直方体のポリゴンデータを受け付けて、受け付けたポリゴンデータを接触判定直方体テーブル６ａに格納することができる。
【００７４】
［ワーク、および搬送機器について］
実施例１で図示したワークおよび各種搬送機器は、あくまで一例であり、演算装置１は、任意の形状を有するワーク、および任意の形状を有する各搬送機器についてシミュレーションを実行することが可能である。また、上述した各種搬送機器は、一例であり、演算装置１は、任意の機能を有する搬送機器のシミュレーションを行うことができる。
【００７５】
［プログラム］
ところで、実施例１に係る演算装置１は、ハードウェアを利用して各種の処理を実現する場合を説明した。しかし、実施例はこれに限定されるものではなく、あらかじめ用意されたプログラムを演算装置１が有するコンピュータで実行することによって実現するようにしてもよい。そこで、以下では、図１８を用いて、実施例に示した演算装置１と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図１８は、シミュレートプログラムを実行するコンピュータの一例を説明するための図である。
【００７６】
図１８に例示されたコンピュータ１００は、ＲＯＭ（Read  Only  Memory）１１０、ＨＤＤ（Hard  Disk  Drive）１２０、ＲＡＭ（Random  Access  Memory）１３０、ＣＰＵ（Central  Processing  Unit）１４０がバス１６０で接続される。また、図１８に例示されたコンピュータ１００は、データを送受信するためのＩ／Ｏ（Input  Output）１５０を有する。
【００７７】
ＨＤＤ１２０には、シミュレートプログラム１２１があらかじめ保持される。ＣＰＵ１４０がシミュレートプログラム１２１をＨＤＤ１２０から読み出して実行することによって、図１８に示す例では、シミュレートプログラム１２１は、シミュレートプロセス１４１として機能するようになる。なお、シミュレートプロセス１４１は、先の図１に示した制御ソフトウェア実行部８、モータ動作演算部９、シミュレーション演算部１０、３次元姿勢演算部１１、３次元形状表示制御部１２と同様の機能を発揮する。
【００７８】
なお、本実施例で説明したシミュレートプログラム１２１は、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ（Compact  Disc  Read  Only  Memory）、ＭＯ（Magneto  Optical  Disc）、ＤＶＤ（Digital  Versatile  Disc）などのコンピュータで読取可能な記録媒体に記録される。また、このプログラムは、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【符号の説明】
【００７９】
１      演算装置
２      入力装置
３      出力装置
４      管理情報記憶部
５      搬送機器管理テーブル
５ａ    搬送部品形状テーブル
５ｂ    搬送動作情報テーブル
５ｃ    ワーク形状テーブル
５ｄ    ワーク姿勢テーブル
６      動作パラメータ記憶部
６ａ    接触判定直方体テーブル
６ｂ    接触平面テーブル
７      ３次元データ管理部
８      制御ソフトウェア実行部
９      モータ動作演算部
１０    シミュレーション演算部
１０ａ  動作パラメータ作成部
１０ｂ  搬送動作演算部
１０ｃ  接触姿勢演算部
１０ｄ  ワーク移動演算部
１１    ３次元姿勢演算部
【図１】
2014148390.tif 000003
【図２Ａ】
2014148390.tif 000004
【図２Ｂ】
2014148390.tif 000005
【図３】
2014148390.tif 000006
【図４】
2014148390.tif 000007
【図５】
2014148390.tif 000008
【図６】
2014148390.tif 000009
【図７】
2014148390.tif 000010
【図８】
2014148390.tif 000011
【図９】
2014148390.tif 000012
【図１０Ａ】
2014148390.tif 000013
【図１０Ｂ】
2014148390.tif 000014
【図１１】
2014148390.tif 000015
【図１２】
2014148390.tif 000016
【図１３】
2014148390.tif 000017
【図１４】
2014148390.tif 000018
【図１５】
2014148390.tif 000019
【図１６】
2014148390.tif 000020
【図１７】
2014148390.tif 000021
【図１８】
2014148390.tif 000022