(57)【要約】【課題】ワークの搬送状態を柔軟に遷移させることを目的とする。【解決手段】情報処理装置は、３次元シミュレーション空間上でワークと、リフターとテーブルとが配置され、リフターがテーブル上のワークを搬送するシミュレーション演算を実行する。ここで、情報処理装置は、テーブルに配置されたワークをリフターが上方向に移動させる場合、リフターのワークと一体となる度合いを示す優先度をテーブルのワークと一体となる度合いを示す優先度よりも高く設定する。また、情報処理装置は、ワークを搬送中のリフターがテーブルよりも下方向に移動する場合、リフターの優先度をテーブルの優先度よりも低く設定する。【選択図】図２０
2014148389.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）などのコンピュータで読取可能な記録媒体に記録される。また、このプログラムは、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【符号の説明】
【０１２２】
１  情報処理装置
２  入力装置
３  出力装置
４  管理情報記憶部
５  搬送機器管理テーブル
５ａ  搬送機器優先度テーブル
５ｂ  リフター部品形状テーブル
５ｃ  リフター動作情報テーブル
６  ワーク管理テーブル
６ａ  ワーク形状テーブル
６ｂ  ワーク姿勢テーブル
７  動作パラメータ記憶部
７ａ  接触判定直方体テーブル
７ｂ  リフター接触平面テーブル
８  ３次元データ管理部
９  制御ソフトウェア実行部
１０  モータ動作演算部
１１  シミュレーション演算部
１２  動作パラメータ作成部
１３  リフター動作演算部
１４  接触姿勢演算部
１５  ワーク移動演算部
１６  ３次元姿勢演算部
１７  ３次元形状表示制御部
【図１】
2014148389.tif 000003
【図２】
2014148389.tif 000004
【図３】
2014148389.tif 000005
【図４】
2014148389.tif 000006
【図５】
2014148389.tif 000007
【図６】
2014148389.tif 000008
【図７】
2014148389.tif 000009
【図８】
2014148389.tif 000010
【図９】
2014148389.tif 000011
【図１０】
2014148389.tif 000012
【図１１】
2014148389.tif 000013
【図１２】
2014148389.tif 000014
【図１３】
2014148389.tif 000015
【図１４Ａ】
2014148389.tif 000016
【図１４Ｂ】
2014148389.tif 000017
【図１４Ｃ】
2014148389.tif 000018
【図１５Ａ】
2014148389.tif 000019
【図１５Ｂ】
2014148389.tif 000020
【図１５Ｃ】
2014148389.tif 000021
【図１６Ａ】
2014148389.tif 000022
【図１６Ｂ】
2014148389.tif 000023
【図１７】
2014148389.tif 000024
【図１８】
2014148389.tif 000025
【図１９】
2014148389.tif 000026
【図２０】
2014148389.tif 000027
【図２１】
2014148389.tif 000028
【図２２】
2014148389.tif 000029