(57)【要約】【課題】実際の作業ラインにおいては、オペレータがワークを搬送装置の上に配置するとき、該搬送装置におけるワークの位置および姿勢は、ランダムに変化することになる。このような作業のシミュレーションを行う技術が求められている。【解決手段】シミュレーション装置５０は、モデル配置部５２と、ワークモデルの基準位置からのオフセット量を設定するオフセット設定部５４と、ワークモデルを搬送装置モデルによって搬送する搬送動作を実行する搬送動作実行部５６と、２つのワークモデルの間の干渉を検出する干渉検出部５８と、干渉が生じなくなる非干渉位置を検索する非干渉位置検索部６０と、非干渉位置に基づいて少なくとも１つのワークモデルの位置を修正するワーク位置修正部６２とを備える。【選択図】図１
2018140476.tif 000002
【特許請求の範囲】
【請求項１】
搬送装置によって搬送される複数のワークに対してロボットが作業を行うロボットシステムのシミュレーション装置であって、
前記複数のワークおよび前記搬送装置のそれぞれをモデル化した複数のワークモデルおよび搬送装置モデルを仮想空間に配置するモデル配置部と、
前記搬送装置モデルに対して予め定められた前記複数のワークモデルの各々の基準位置からの、個々の前記ワークモデルのオフセット量を設定するオフセット設定部と、
前記基準位置と前記オフセット量とから求めた位置に各々が配置される前記複数のワークモデルを、順次、前記搬送装置モデルによって搬送する搬送動作を実行する搬送動作実行部と、
前記搬送装置モデルによって順次搬送される少なくとも２つの前記ワークモデルの間の干渉を検出する干渉検出部と、
前記干渉が検出された前記少なくとも２つのワークモデルのうち少なくとも１つのワークモデルに対し、前記干渉が生じなくなる非干渉位置を検索する非干渉位置検索部と、
検索した前記非干渉位置に基づき、前記搬送装置モデルに配置される前記少なくとも１つのワークモデルの位置を修正するワーク位置修正部と、を備える、シミュレーション装置。
【請求項２】
前記非干渉位置検索部は、
前記少なくとも２つのワークモデルの相対位置を変更する位置変更部と、
変更後の該相対位置において前記少なくとも２つのワークモデルの間に干渉が生じるか否かを判定する干渉判定部と、を有する、請求項１に記載のシミュレーション装置。
【請求項３】
前記オフセット設定部は、
前記基準位置から、前記搬送装置モデルが前記ワークモデルを搬送する搬送方向と平行な第１方向へオフセットした第１のオフセット量と、
前記基準位置から、前記第１方向と直交する第２方向へオフセットした第２のオフセット量と、
前記基準位置から、前記第１方向および前記第２方向と直交する軸線の周りの回転方向へオフセットした第３のオフセット量と、のうち少なくとも１つを設定する、請求項１または２に記載のシミュレーション装置。
【請求項４】
前記モデル配置部は、さらに、前記ロボットをモデル化したロボットモデル、前記ワークを保持するロボットハンドをモデル化したロボットハンドモデル、および、前記ワークを検出するセンサをモデル化したセンサモデルを、前記仮想空間に配置し、
前記シミュレーション装置は、
前記搬送装置モデルが搬送する前記ワークモデルに前記ロボットハンドモデルを追従させる追従動作を前記ロボットモデルが行うときの追従動作範囲を、前記仮想空間に設定する動作範囲設定部と、
前記搬送装置モデルが搬送する前記ワークモデルを前記センサモデルが検出した仮想検出結果に基づいて、前記ロボットモデルに前記追従動作を実行させる追従動作実行部と、をさらに備える、請求項１〜３のいずれか１項に記載のシミュレーション装置。
【請求項５】
前記複数のワークモデルは、第１種のワークモデルと、該第１種のワークモデルとは異なる形状を有する第２種のワークモデルと、を有し、
前記モデル配置部が前記複数のワークモデルを配置するときの、前記第１種のワークモデルの個数と前記第２種のワークモデルの個数との比率を設定する第１の比率設定部をさらに備える、請求項１〜４のいずれか１項に記載のシミュレーション装置。
【請求項６】
前記複数のワークモデルの各々は、表面と裏面とを有し、
前記モデル配置部が前記複数のワークモデルを配置するときの、前記表面を見せるワークモデルの個数と前記裏面を見せるワークモデルの個数との比率を設定する第２の比率設定部をさらに備える、請求項１〜５のいずれか１項に記載のシミュレーション装置。
【請求項７】
搬送装置によって搬送される複数のワークに対してロボットが作業を行うロボットシステムのシミュレーション方法であって、
前記複数のワークおよび前記搬送装置のそれぞれをモデル化した複数のワークモデルおよび搬送装置モデルを仮想空間に配置することと、
前記搬送装置モデルに対して予め定められた前記複数のワークモデルの各々の基準位置からの、個々の前記ワークモデルのオフセット量を設定することと、
前記基準位置と前記オフセット量とから求めた位置に各々が配置される前記複数のワークモデルを、順次、前記搬送装置モデルによって搬送する搬送動作を実行することと、
前記搬送装置モデルによって順次搬送される少なくとも２つの前記ワークモデルの間の干渉を検出することと、
前記干渉が検出された前記少なくとも２つのワークモデルのうち少なくとも１つのワークモデルに対し、前記干渉が生じなくなる非干渉位置を検索することと、
検索した前記非干渉位置に基づき、前記搬送装置モデルに配置される前記少なくとも１つのワークモデルの位置を修正することと、を備える、シミュレーション方法。
【請求項８】
搬送装置によって搬送される複数のワークに対してロボットが作業を行うシミュレーションを行うために、コンピュータを、
前記複数のワークおよび前記搬送装置のそれぞれをモデル化した複数のワークモデルおよび搬送装置モデルを仮想空間に配置するモデル配置部、
前記搬送装置モデルに対して予め定められた前記複数のワークモデルの各々の基準位置からの、個々のワークモデルのオフセット量を設定するオフセット設定部、
前記基準位置と前記オフセット量とから求めた位置に各々が配置される前記複数のワークモデルを、順次、前記搬送装置モデルによって搬送する搬送動作を実行する搬送動作実行部、
前記搬送装置モデルによって順次搬送される少なくとも２つの前記ワークモデルの間の干渉を検出する干渉検出部、
前記干渉が検出された前記少なくとも２つのワークモデルのうち少なくとも１つのワークモデルに対し、前記干渉が生じなくなる非干渉位置を検索する非干渉位置検索部、および、
検索した前記非干渉位置に基づき、前記搬送装置モデルに配置される前記少なくとも１つのワークモデルの位置を修正するワーク位置修正部、
として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットシステムのシミュレーション装置、シミュレーション方法、およびコンピュータプログラムに関する。
【背景技術】
【０００２】
ワークを搬送装置によって搬送するシミュレーションを行うシミュレーション装置が知られている（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１６−１２９９１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
実際の作業ラインにおいては、オペレータがワークを搬送装置（例えば、ベルトコンベア）の上に配置するとき、該搬送装置におけるワークの位置および姿勢は変化することになる。このような作業のシミュレーションを行う技術が求められている。
【課題を解決するための手段】
【０００５】
本開示の一態様において、搬送装置によって搬送される複数のワークに対してロボットが作業を行うロボットシステムのシミュレーション装置は、複数のワークおよび搬送装置のそれぞれをモデル化した複数のワークモデルおよび搬送装置モデルを仮想空間に配置するモデル配置部と、搬送装置モデルに対して予め定められた複数のワークモデルの各々の基準位置からの、個々のワークモデルのオフセット量を設定するオフセット設定部と、基準位置とオフセット量とから求めた位置に各々が配置される複数のワークモデルを、順次、搬送装置モデルによって搬送する搬送動作を実行する搬送動作実行部と、搬送装置モデルによって順次搬送される少なくとも２つのワークモデルの間の干渉を検出する干渉検出部と、干渉が検出された少なくとも２つのワークモデルのうち少なくとも１つのワークモデルに対し、干渉が生じなくなる非干渉位置を検索する非干渉位置検索部と、検索した非干渉位置に基づき、搬送装置モデルに配置される少なくとも１つのワークモデルの位置を修正するワーク位置修正部とを備える。
【０００６】
本開示の他の態様において、搬送装置によって搬送される複数のワークに対してロボットが作業を行うロボットシステムのシミュレーション方法は、複数のワークおよび搬送装置のそれぞれをモデル化した複数のワークモデルおよび搬送装置モデルを仮想空間に配置することと、搬送装置モデルに対して予め定められた複数のワークモデルの各々の基準位置からの、個々のワークモデルのオフセット量を設定することと、基準位置とオフセット量とから求めた位置に各々が配置される複数のワークモデルを、順次、搬送装置モデルによって搬送する搬送動作を実行することと、搬送装置モデルによって順次搬送される少なくとも２つのワークモデルの間の干渉を検出することと、干渉が検出された少なくとも２つのワークモデルのうち少なくとも１つのワークモデルに対し、干渉が生じなくなる非干渉位置を検索することと、検索した非干渉位置に基づき、搬送装置モデルに配置される少なくとも１つのワークモデルの位置を修正することとを備える。
【０００７】
本開示のさらに他の態様において、コンピュータプログラムは、搬送装置によって搬送される複数のワークに対してロボットが作業を行うシミュレーションを行うために、コンピュータを、複数のワークおよび搬送装置のそれぞれをモデル化した複数のワークモデルおよび搬送装置モデルを仮想空間に配置するモデル配置部、搬送装置モデルに対して予め定められた複数のワークモデルの各々の基準位置からの、個々のワークモデルのオフセット量を設定するオフセット設定部、基準位置とオフセット量とから求めた位置に各々が配置される複数のワークモデルを、順次、搬送装置モデルによって搬送する搬送動作を実行する搬送動作実行部、搬送装置モデルによって順次搬送される少なくとも２つのワークモデルの間の干渉を検出する干渉検出部、干渉が検出された少なくとも２つのワークモデルのうち少なくとも１つのワークモデルに対し、干渉が生じなくなる非干渉位置を検索する非干渉位置検索部、および、検索した非干渉位置に基づき、搬送装置モデルに配置される少なくとも１つのワークモデルの位置を修正するワーク位置修正部として機能させる。
【発明の効果】
【０００８】
本開示の一態様によれば、仮想空間に配置するワークモデル同士の干渉領域の発生を防止しつつ、実際の作業に近い形態で搬送装置の動作をシミュレーション可能な装置を提供することができる。
【０００９】
本開示の他の態様によれば、ワークモデル同士の干渉領域の発生を防止しつつ、実際の作業に近い形態で搬送装置の動作をシミュレーション可能な方法を提供することができる。
【００１０】
本開示のさらに他の態様によれば、ワークモデル同士の干渉領域の発生を防止しつつ、実際の作業に近い形態での搬送装置の動作シミュレーションをコンピュータに実行させるコンピュータプログラムを提供することができる。
【図面の簡単な説明】
【００１１】
【図１】一実施形態に係るシミュレーションシステムのブロック図である。
【図２】実空間における搬送装置の一例を示す図である。
【図３】図２に示す搬送装置を鉛直上方から見た図である。
【図４】図１に示すシミュレーションシステムの動作フローの一例を示すフローチャートである。
【図５】図４中のステップＳ１にて生成される仮想空間の画像を示す。
【図６】図５に示す仮想空間においてワークモデルが搬送部モデル上の基準位置に配置された状態を示す。
【図７】図６に示すワークモデルを、図６中の搬送装置座標系のｚ軸プラス方向から見た図である。
【図８】搬送装置座標系のｘ軸方向の第１のオフセット量と、ｙ軸方向の第２のオフセット量とを説明するための図である。
【図９】搬送装置座標系のｚ軸と平行な軸線周りの第３のオフセット量を説明するための図である。
【図１０】第１、第２、および第３のオフセット量を説明するための図である。
【図１１】図４中のステップＳ５でワークモデルが配置され得る位置範囲を示す。
【図１２】互いに隣り合う２つのワークモデルの位置範囲を示す。
【図１３】互いに隣り合う２つのワークモデルの間で干渉領域が生じている状態を示す。
【図１４】図４中のステップＳ８のフローの一例を示すフローチャートである。
【図１５】他の実施形態に係るシミュレーションシステムのブロック図である。
【図１６】仮想空間において第１種のワークモデルと第２種のワークモデルとを配置した状態を示す。
【図１７】図１５に示すシミュレーションシステムの動作フローの一例を示すフローチャートである。
【図１８】さらに他の実施形態に係るシミュレーションシステムのブロック図である。
【図１９】表面が見えるように配置されたワークモデルと、裏面が見えるように配置されたワークモデルとを示す。
【図２０】図１８に示すシミュレーションシステムの動作フローの一例を示すフローチャートである。
【図２１】さらに他の実施形態に係るシミュレーションシステムのブロック図である。
【図２２】実空間におけるワーク搬送システムの一例を示す。
【図２３】図２１に示すシミュレーションシステムの動作フローの一例を示すフローチャートである。
【図２４】図２３中のステップＳ４１にて生成される仮想空間の画像を示す。
【図２５】図２３中のステップＳ４２にて生成される仮想空間の画像を示す。
【図２６】図２３中のステップＳ４３を説明するための図である。
【図２７】図２３中のステップＳ４４を説明するための図である。
【発明を実施するための形態】
【００１２】
以下、本開示の実施の形態を図面に基づいて詳細に説明する。なお、以下に説明する種々の実施形態において、同様の要素には同じ符号を付し、重複する説明を省略する。まず、図１を参照して、一実施形態に係るシミュレーションシステム１０について説明する。
【００１３】
シミュレーションシステム１０は、ＣＰＵ１２、システムメモリ１４、ワークメモリ１６、入力／出力インターフェース（Ｉ／Ｏインターフェース）１８、データ入力部２０、表示部２２、およびシミュレーション装置５０を備える。
【００１４】
ＣＰＵ１２は、システムメモリ１４、ワークメモリ１６、およびＩ／Ｏインターフェース１８と、バス２４を介して通信可能に接続されており、これらの要素と通信しつつ、後述する各種プロセスを実行する。
【００１５】
システムメモリ１４は、電気的に消去・記録可能な不揮発性メモリであり、例えば、ＥＥＰＲＯＭ（登録商標）等から構成される。システムメモリ１４は、後述するシミュレーションを実行するのに要する定数、変数、設定値、コンピュータプログラム等を、シミュレーションシステム１０の非動作時にも失われないように記録している。
【００１６】
ワークメモリ１６は、ＣＰＵ１２が各種プロセスを実行するのに要するデータを一時的に保管する。また、ワークメモリ１６には、システムメモリ１４に記録されている定数、変数、設定値、コンピュータプログラム等が適宜展開され、ＣＰＵ１２は、ワークメモリ１６に展開されたデータを、各種プロセスを実行するために利用する。
【００１７】
Ｉ／Ｏインターフェース１８は、データ入力部２０と通信可能に接続され、ＣＰＵ１２からの指令の下、データ入力部２０からデータを受信する。また、Ｉ／Ｏインターフェース１８は、表示部２２と通信可能に接続され、ＣＰＵ１２からの指令の下、表示部２２に画像データを送信する。
【００１８】
Ｉ／Ｏインターフェース１８は、例えばイーサネットポートまたはＵＳＢポート等から構成され、データ入力部２０および表示部２２と有線で通信してもよい。または、Ｉ／Ｏインターフェース１８は、Ｗｉ−Ｆｉ等の無線ＬＡＮを介して、表示部２２およびデータ入力部２０と無線で通信してもよい。
【００１９】
データ入力部２０は、例えばキーボード、タッチパネル、またはマウスから構成され、オペレータは、データ入力部２０を操作することによって、データを入力できる。データ入力部２０は、入力されたデータを、Ｉ／Ｏインターフェース１８を介して、ＣＰＵ１２に送信する。
【００２０】
表示部２２は、例えばＣＲＴ、液晶ディスプレイ（ＬＣＤ）、または有機ＥＬディスプレイから構成され、Ｉ／Ｏインターフェース１８から送信された画像データを受信し、オペレータが視認可能な画像として表示する。
【００２１】
シミュレーション装置５０は、搬送装置によって搬送される複数のワークに対してロボットが作業を行うロボットシステムのシミュレーションを行う。以下、図２を参照して、実空間における搬送装置１００の一例について説明する。
【００２２】
搬送装置１００は、例えばベルトコンベアであって、土台部１０２と、該土台部１０２の上に可動に配置された搬送部１０４とを有する。土台部１０２は、実空間の作業セルの床の上に固定される。搬送部１０４は、その上に載置されたワークＷを、図２中の矢印Ａで示す搬送方向Ａへ搬送する。本実施形態においては、ワークＷは、直方体状である。
【００２３】
実空間の作業ラインにおいて、オペレータは、ワークＷを、搬送部１０４の上流端付近に連続的に載置する。このときに搬送部１０４に載置されるワークＷの、搬送部１０４に対する位置および姿勢は、図３に示すように、ランダムに変化することになる。このように、ワークＷは、搬送部１０４の上流端付近に連続して載置され、該搬送部１０４によって搬送方向Ａへ順次搬送される。
【００２４】
本実施形態に係るシミュレーション装置５０は、このような搬送装置１００の動作をシミュレーションする。図１に示すように、シミュレーション装置５０は、モデル配置部５２、オフセット設定部５４、搬送動作実行部５６、干渉検出部５８、非干渉位置検索部６０、およびワーク位置修正部６２を有する。
【００２５】
なお、本実施形態においては、ＣＰＵ１２が、モデル配置部５２、オフセット設定部５４、搬送動作実行部５６、干渉検出部５８、非干渉位置検索部６０、およびワーク位置修正部６２の機能を担う。これらモデル配置部５２、オフセット設定部５４、搬送動作実行部５６、干渉検出部５８、非干渉位置検索部６０、およびワーク位置修正部６２の機能については、後述する。
【００２６】
次に、図４を参照して、シミュレーションシステム１０の動作について説明する。図４に示すフローは、例えば、オペレータがデータ入力部２０を操作してシミュレーション開始指令を入力し、ＣＰＵ１２が、データ入力部２０からシミュレーション開始指令を受け付けたときに、開始する。
【００２７】
なお、ＣＰＵ１２は、図４に示すステップＳ１〜Ｓ１０を、コンピュータプログラムに従って実行してもよい。このコンピュータプログラムは、システムメモリ１４に予め記憶されてもよい。または、このコンピュータプログラムは、シミュレーションシステム１０に外付けされる記録媒体（例えば、ハードディスク、ＥＥＰＲＯＭ等）に記録されてもよい。
【００２８】
ステップＳ１において、ＣＰＵ１２は、搬送装置の構成要素をモデル化した構成要素モデルを仮想空間に配置する。具体的には、ＣＰＵ１２は、オペレータの入力操作に応じて、図５に示すように、仮想空間１１０において、搬送装置モデル１００Ｍを配置する。
【００２９】
なお、本稿においては、実空間における構成要素の名称が「ＸＸ」であった場合、その構成要素の仮想空間１１０におけるモデルを「ＸＸモデル」として言及する。例えば、実空間における「搬送部」のモデルは、「搬送部モデル」として言及される。
【００３０】
搬送装置モデル１００Ｍは、図２に示す搬送装置１００をモデル化したものであって、土台部モデル１０２Ｍおよび搬送部モデル１０４Ｍを有する。
【００３１】
システムメモリ１４は、搬送装置モデル１００Ｍを含む、複数種類の搬送装置モデルを、予め記憶する。一例として、ＣＰＵ１２は、システムメモリ１４に記憶された複数種類の搬送装置モデルをリストの形態で表した画像データを生成し、表示部２２に表示させる。オペレータは、データ入力部２０を操作して、表示部２２に表示されたリストの中から、所望の搬送装置モデルを選択する。
【００３２】
以下、オペレータが、図５に示す搬送装置モデル１００Ｍ（図４）を選択した場合について説明する。データ入力部２０は、オペレータが入力した入力データを、Ｉ／Ｏインターフェース１８を介して、ＣＰＵ１２に送信する。
【００３３】
ＣＰＵ１２は、受信した入力データに応じて、システムメモリ１４に記憶された複数種類の搬送装置モデルの中から、搬送装置モデル１００Ｍを読み出し、仮想空間１１０に配置する。そして、ＣＰＵ１２は、該仮想空間１１０を画像データとして生成し、図５に示すような仮想空間１１０の画像として、表示部２２に表示させる。
【００３４】
システムメモリ１４は、搬送装置モデル１００Ｍに関連付けて、種々の仮想搬送装置動作パラメータを記憶する。この仮想搬送装置動作パラメータは、後述するステップＳ４で搬送装置モデル１００Ｍを仮想空間１１０内で模擬的に動作させるのに要するパラメータである。
【００３５】
この仮想搬送装置動作パラメータは、搬送装置座標系ＣＣの原点および軸方向、搬送装置モデル１００Ｍの搬送速度等のパラメータを含む。搬送装置座標系ＣＣは、仮想空間１１０において搬送装置モデル１００Ｍを模擬的に動作させるときに基準となる直交座標系であって、仮想搬送装置動作パラメータに含まれる、該搬送装置座標系ＣＣの原点および軸方向によって、仮想空間１１０内で定義される。
【００３６】
図５に示す実施形態においては、搬送装置座標系ＣＣの原点は、搬送部モデル１０４Ｍの上流端の一角に配置され、搬送部モデル１０４Ｍは、後述するワークモデルを、搬送装置座標系ＣＣのｙ軸プラス方向へ搬送する。すなわち、搬送装置座標系ＣＣのｙ軸プラス方向は、図２中の搬送方向Ａに一致する。
【００３７】
搬送速度は、仮想空間１１０において搬送部モデル１０４Ｍによってワークモデルを搬送する速度（すなわち、搬送部モデル１０４Ｍの動作速度）を決定するパラメータである。
【００３８】
図５に示すように、ＣＰＵ１２は、搬送装置モデル１００Ｍとともに、搬送装置座標系ＣＣを仮想空間１１０に設定する。このように、本実施形態においては、ＣＰＵ１２は、搬送装置モデル１００Ｍを仮想空間１１０に配置するモデル配置部５２（図１）の機能を担う。
【００３９】
ステップＳ２において、ＣＰＵ１２は、後述するシミュレーションにおいて、ワークモデルを仮想空間１１０に供給する総数ｎＴを設定する。一例として、ＣＰＵ１２は、オペレータが総数ｎＴを入力可能とするための入力画像データを生成し、表示部２２に表示する。
【００４０】
オペレータは、データ入力部２０を操作して、表示部２２に表示された入力画像に所望の総数ｎＴを入力する。データ入力部２０は、オペレータが入力した総数ｎＴの入力データを、Ｉ／Ｏインターフェース１８を介して、ＣＰＵ１２に送信する。ＣＰＵ１２は、受信した入力データに従って、総数ｎＴを設定し、該総数ｎＴの設定をシステムメモリ１４に記憶する。
【００４１】
ステップＳ３において、ＣＰＵ１２は、ワークモデルを仮想空間１１０において搬送装置モデル１００Ｍに配置するときのオフセット量を設定する。このオフセット量について、図６〜図１０を参照して説明する。
【００４２】
後述するステップＳ５において、ＣＰＵ１２は、ワークＷをモデル化したワークモデルＷＭを仮想空間１１０において搬送部モデル１０４Ｍの上に配置する。図６および図７は、ワークモデルＷＭが、搬送部モデル１０４Ｍ上の基準位置に配置された状態を示している。
【００４３】
この基準位置は、搬送部モデル１０４Ｍに対して予め定められる。図６および図７に示す例においては、基準位置は、以下のように設定されている。すなわち、ワークモデルＷＭの中心Ｂ０が、搬送部モデル１０４Ｍの、搬送装置座標系ＣＣのｘ軸方向の中央に配置され、ワークモデルＷＭの長手方向（すなわち、長辺の延在方向）が、搬送装置座標系ＣＣのｘ軸方向と平行であり、且つ、ワークモデルＷＭの短手方向（すなわち、短辺の延在方向）が、搬送装置座標系ＣＣのｙ軸方向と平行となっている。
【００４４】
本実施形態におけるオフセット量は、後述のステップＳ５においてワークモデルＷＭを搬送部モデル１０４Ｍ上に配置するときの、搬送装置座標系ＣＣのｘ−ｙ平面におけるワークモデルＷＭの基準位置からのずれを表す。
【００４５】
例えば、図８に示す例においては、基準位置を点線領域Ｃで表しており、ワークモデルＷＭは、その中心Ｂ１が、基準位置Ｃの中心Ｂ０から、搬送装置座標系ＣＣのｘ軸マイナス方向へｘＯＦＦ（すなわち、−ｘＯＦＦ）だけずれており、且つ、搬送装置座標系ＣＣのｙ軸マイナス方向へｙＯＦＦ（すなわち、−ｙＯＦＦ）だけずれている。
【００４６】
このように、図８に示す例においては、オフセット量として、基準位置から搬送装置座標系ＣＣのｘ軸方向へオフセットする第１のオフセット量ｘＯＦＦと、基準位置から搬送装置座標系ＣＣのｙ軸方向へオフセットする第２のオフセット量ｙＯＦＦとが設定されている。
【００４７】
図９に示す例においては、ワークモデルＷＭの位置は、基準位置Ｃから、軸線Ｏ１周りに、搬送装置座標系ＣＣのｚ軸プラス方向から見て反時計回りの方向に角度θＯＦＦだけ回転させた位置に、オフセットされている。
【００４８】
この軸線Ｏ１は、搬送装置座標系ＣＣのｚ軸と平行であり、且つ、ワークモデルＷＭの中心を通過する仮想軸線である。このように、図９に示す例においては、オフセット量として、基準位置から、軸線Ｏ１周りに回転する方向へオフセットする第３のオフセット量θＯＦＦが設定されている。
【００４９】
図１０に示す例においては、ワークモデルＷＭの位置は、その基準位置から、第１のオフセット量ｘＯＦＦ、第２のオフセット量ｙＯＦＦ、および第３のオフセット量θＯＦＦだけオフセットされている。
【００５０】
具体的には、ワークモデルＷＭの中心Ｂ１は、搬送装置座標系ＣＣのｘ軸マイナス方向へｘＯＦＦだけずれ、且つ、搬送装置座標系ＣＣのｙ軸マイナス方向へｙＯＦＦだけずれている。また、ワークモデルＷＭは、軸線Ｏ１周りに角度θＯＦＦだけ回転されている。
【００５１】
一例として、オペレータは、このステップＳ３において、オフセット量（ｘＯＦＦ、ｙＯＦＦ、θＯＦＦ）の上限値および下限値を入力する。この場合、ＣＰＵ１２は、オペレータがオフセット量（ｘＯＦＦ、ｙＯＦＦ、θＯＦＦ）の上限値および下限値を入力可能とするための入力画像データを生成し、表示部２２に表示する。オペレータは、データ入力部２０を操作して、表示部２２に表示された入力画像に所望の上限値および下限値を入力する。
【００５２】
例えば、オペレータが第１のオフセット量ｘＯＦＦの上限値ｘＭＡＸおよび下限値ｘＭＩＮと、第２のオフセット量ｙＯＦＦの上限値ｙＭＡＸおよび下限値ｙＭＩＮと、第３のオフセット量θＯＦＦの上限値θＭＡＸおよび下限値θＭＩＮとを、それぞれ入力したとする。
【００５３】
この場合、データ入力部２０は、オペレータが入力した上限値（ｘＭＡＸ、ｙＭＡＸ、θＭＡＸ）および下限値（ｘＭＩＮ、ｙＭＩＮ、θＭＩＮ）の入力データを、Ｉ／Ｏインターフェース１８を介して、ＣＰＵ１２に送信する。
【００５４】
ＣＰＵ１２は、受信した入力データに従って、第１のオフセット量ｘＯＦＦの範囲を、ｘＭＩＮ≦ｘＯＦＦ≦ｘＭＡＸに設定する。ここで、上限値ｘＭＡＸおよび下限値ｘＭＩＮは、正の値である場合、それぞれ、基準位置Ｃから搬送装置座標系ＣＣのｘ軸プラス方向へ座標ｘＭＡＸおよびｘＭＩＮだけオフセットするオフセット量を表す。
【００５５】
一方、上限値ｘＭＡＸおよび下限値ｘＭＩＮは、負の値である場合、それぞれ、基準位置Ｃから、搬送装置座標系ＣＣのｘ軸マイナス方向へ座標ｘＭＡＸおよびｘＭＩＮだけオフセットするオフセット量を表す。
【００５６】
また、ＣＰＵ１２は、受信した入力データに従って、第２のオフセット量ｙＯＦＦの範囲を、ｙＭＩＮ≦ｙＯＦＦ≦ｙＭＡＸに設定する。ここで、上限値ｙＭＡＸおよび下限値ｙＭＩＮは、正の値である場合、それぞれ、基準位置Ｃから搬送装置座標系ＣＣのｙ軸プラス方向へ座標ｙＭＡＸおよびｙＭＩＮだけオフセットするオフセット量を表す。
【００５７】
一方、上限値ｙＭＡＸおよび下限値ｙＭＩＮは、負の値である場合、それぞれ、基準位置Ｃから搬送装置座標系ＣＣのｙ軸マイナス方向へ座標ｙＭＡＸおよびｙＭＩＮだけオフセットするオフセット量を表す。
【００５８】
また、ＣＰＵ１２は、受信した入力データに従って、第３のオフセット量θＯＦＦの範囲を、θＭＩＮ≦θＯＦＦ≦θＭＡＸに設定する。ここで、上限値θＭＡＸおよび下限値θＭＩＮは、正の値である場合、それぞれ、基準位置Ｃから軸線Ｏ１周りに搬送装置座標系ＣＣのｚ軸プラス方向から見て反時計回りの方向に角度θＭＡＸおよびθＭＩＮだけ回転させたオフセット量を表す。
【００５９】
一方、上限値θＭＡＸおよび下限値θＭＩＮは、負の値である場合、それぞれ、基準位置Ｃから軸線Ｏ１周りに搬送装置座標系ＣＣのｚ軸プラス方向から見て時計回りの方向に角度θＭＡＸおよびθＭＩＮだけ回転させたオフセット量を表す。
【００６０】
また、他の例として、オペレータは、このステップＳ３において、オフセット量（ｘＯＦＦ、ｙＯＦＦ、θＯＦＦ）の閾値を１つだけ入力する。この場合、ＣＰＵ１２は、オペレータがオフセット量（ｘＯＦＦ、ｙＯＦＦ、θＯＦＦ）の閾値を入力可能とするための入力画像データを生成し、表示部２２に表示する。オペレータは、データ入力部２０を操作して、表示部２２に表示された入力画像に所望の閾値を入力する。
【００６１】
例えば、オペレータが第１のオフセット量ｘＯＦＦの閾値ｘ１と、第２のオフセット量ｙＯＦＦの閾値ｙ１と、第３のオフセット量θＯＦＦの閾値θ１とを、それぞれ入力したとする。この場合、データ入力部２０は、オペレータが入力した閾値（ｘ１、ｙ１、θ１）の入力データを、Ｉ／Ｏインターフェース１８を介して、ＣＰＵ１２に送信する。
【００６２】
ＣＰＵ１２は、受信した入力データに従って、第１のオフセット量ｘＯＦＦの範囲を、−ｘ１≦ｘＯＦＦ≦ｘ１、０≦ｘＯＦＦ≦ｘ１、または、−ｘ１≦ｘＯＦＦ≦０として、設定する。
【００６３】
また、ＣＰＵ１２は、第２のオフセット量ｙＯＦＦの範囲を、−ｙ１≦ｙＯＦＦ≦ｙ１、０≦ｙＯＦＦ≦ｙ１、または、−ｙ１≦ｙＯＦＦ≦０のとして、設定する。また、ＣＰＵ１２は、第３のオフセット量θＯＦＦの範囲を、−θ１≦θＯＦＦ≦θ１、０≦θＯＦＦ≦θ１、または、−θ１≦θＯＦＦ≦０として、設定する。
【００６４】
このように、ＣＰＵ１２は、オフセット量ｘＯＦＦ、ｙＯＦＦ、およびθＯＦＦを定める値（ｘＭＡＸ、ｙＭＡＸ、θＭＡＸ、ｘＭＩＮ、ｙＭＩＮ、θＭＩＮ、ｘ１、ｙ１、またはθ１）の入力を受け付けて、該オフセット量ｘＯＦＦ、ｙＯＦＦ、およびθＯＦＦを設定する。したがって、ＣＰＵ１２は、個々のワークモデルＷＭの基準位置からのオフセット量ｘＯＦＦ、ｙＯＦＦ、およびθＯＦＦを設定するオフセット設定部５４（図１）としての機能を担う。
【００６５】
ステップＳ４において、ＣＰＵ１２は、仮想空間１１０においてワークモデルＷＭを搬送装置モデル１００Ｍによって模擬的に搬送する搬送動作を実行する。具体的には、ＣＰＵ１２は、仮想空間１１０において搬送装置モデル１００Ｍを模擬的に動作させて、ワークモデルＷＭが搬送部モデル１０４Ｍの上に載置されたときに、該ワークモデルＷＭを、搬送装置座標系ＣＣのｙ軸プラス方向へ模擬的に搬送する。
【００６６】
このように、本実施形態においては、ＣＰＵ１２は、ワークモデルＷＭを搬送装置モデル１００Ｍによって搬送する搬送動作を実行する搬送動作実行部５６（図１）としての機能を担う。
【００６７】
ステップＳ５において、ＣＰＵ１２は、仮想空間１１０においてワークモデルＷＭを搬送装置モデル１００Ｍに配置する。このとき、ＣＰＵ１２は、ステップＳ３で設定したオフセット量ｘＯＦＦ、ｙＯＦＦ、およびθＯＦＦの範囲内で、該オフセット量ｘＯＦＦ、ｙＯＦＦ、およびθＯＦＦをランダムに決定する。
【００６８】
例えば、ＣＰＵ１２は、第１のオフセット量ｘＯＦＦを、ｘＭＩＮ≦ｘＯＦＦ≦ｘＭＡＸの範囲内の値として、ランダムに決定する。また、ＣＰＵ１２は、第２のオフセット量ｙＯＦＦを、ｙＭＩＮ≦ｙＯＦＦ≦ｙＭＡＸの範囲内の値として、ランダムに決定する。また、ＣＰＵ１２は、第２のオフセット量θＯＦＦを、θＭＩＮ≦θＯＦＦ≦θＭＡＸの範囲内の値として、ランダムに決定する。
【００６９】
そして、ＣＰＵ１２は、ワークＷＭを、決定したオフセット量ｘＯＦＦ、ｙＯＦＦ、およびθＯＦＦだけ基準位置Ｃからオフセットしたオフセット位置を求め、該ワークＷＭを、搬送部モデル１０４Ｍにおいて該オフセット位置に配置する。
【００７０】
このように、本実施形態においては、ＣＰＵ１２は、このステップＳ５において、基準位置Ｃと、ステップＳ３で設定したオフセット量（例えば、ｘＭＡＸ、ｙＭＡＸ、θＭＡＸ、ｘＭＩＮ、ｙＭＩＮ、θＭＩＮ）だけ基準位置Ｃからオフセットした位置との間の位置範囲内（例えば、閉区間［ｘＭＩＮ，ｘＭＡＸ］、［ｙＭＩＮ，ｙＭＡＸ］、［θＭＩＮ，θＭＡＸ］）で、ワークＷＭを搬送部モデル１０４Ｍの上に配置する。
【００７１】
図１１に、ＣＰＵ１２がステップＳ５においてワークモデルＷＭを配置し得る位置範囲を、二点鎖線の領域Ｄで示す。この位置範囲Ｄは、ステップＳ３で設定されたオフセット量の範囲内（例えば、［ｘＭＩＮ，ｘＭＡＸ］、［ｙＭＩＮ，ｙＭＡＸ］、［θＭＩＮ，θＭＡＸ］）でＣＰＵ１２がワークモデルＷＭを配置したときに該ワークモデルＷＭが搬送部モデル１０４Ｍ上で占有し得る範囲を表す。
【００７２】
この位置範囲Ｄは、ステップＳ３で設定したオフセット量（ｘＭＡＸ、ｙＭＡＸ、θＭＡＸ、ｘＭＩＮ、ｙＭＩＮ、θＭＩＮ、ｘ１、ｙ１、またはθ１）に依存して変化することになる。このように、本実施形態においては、ＣＰＵ１２は、モデル配置部５２として機能して、仮想空間１１０においてワークモデルＷＭを搬送装置モデル１００Ｍに配置する。
【００７３】
図４に示すように、ＣＰＵ１２は、後述のステップＳ１０でＹＥＳと判定するまで、ステップＳ５〜Ｓ１０をループする。したがって、ＣＰＵ１２は、ステップＳ５を実行する毎に、ワークモデルＷＭを搬送装置モデル１００Ｍに連続的に配置する。
【００７４】
図１２に、第ｎ−１回目のステップＳ５で配置したワークモデルＷＭｎ−１の位置範囲を、一点鎖線領域Ｄｎ−１として示し、第ｎ回目のステップＳ５で配置したワークモデルＷＭｎの位置範囲を、二点鎖線領域Ｄｎとして示す。
【００７５】
ＣＰＵ１２は、第ｎ回目に実行するステップＳ５において、ワークモデルＷＭｎを、第ｎ−１回目のステップＳ５で配置したワークモデルＷＭｎ−１が搬送装置モデル１００Ｍによって搬送された後に、配置する。
【００７６】
このとき、ＣＰＵ１２は、第ｎ−１回目のステップＳ５で配置したワークモデルＷＭｎ−１の位置範囲Ｄｎ−１と、第ｎ回目のステップＳ５で配置するワークモデルＷＭｎの位置範囲Ｄｎとが、少なくとも一部の領域Ｈで互いに重なり合うように、ワークモデルＷＭｎを配置する。
【００７７】
互いに隣り合うワークモデルＷＭｎ−１とワークモデルＷＭｎとの間の間隔Ｅは、オペレータによって予め定められる。この間隔Ｅは、ワークモデルＷＭｎ−１の基準位置Ｃｎ−１の中心Ｂ０_ｎ−１と，ワークモデルＷＭｎの基準位置Ｃｎの中心Ｂ０_ｎとの間の、搬送装置座標系ＣＣのｙ軸方向の距離である。この間隔Ｅは、位置範囲Ｄｎ−１と位置範囲Ｄｎとが互いに重なり合うように、定められる。
【００７８】
一例として、ＣＰＵ１２は、ステップＳ３において、オペレータが、オフセット量（ｘＭＡＸ、ｙＭＡＸ、θＭＡＸ、ｘＭＩＮ、ｙＭＩＮ、θＭＩＮ、ｘ１、ｙ１、またはθ１）に加えて、間隔Ｅを入力可能とするための入力画像データを生成し、表示部２２に表示する。オペレータは、データ入力部２０を操作して、表示部２２に表示された入力画像に所望の間隔Ｅを入力する。
【００７９】
このとき、ＣＰＵ１２は、入力されたオフセット量および間隔Ｅに基づいて、互いに隣り合う位置範囲Ｄｎ−１と位置範囲Ｄｎとが互いに重なり合うか否かを判定してもよい。そして、ＣＰＵ１２は、位置範囲Ｄｎ−１と位置範囲Ｄｎとが互いに重なり合わないと判定した場合、その旨を表す画像を表示部２２に表示してもよい。
【００８０】
ステップＳ６において、ＣＰＵ１２は、ステップＳ４の開始時点からワークモデルＷＭを搬送装置モデル１００Ｍに供給した総数「ｎ」の値を、１だけインクリメント（すなわち、ｎ＝ｎ＋１）する。なお、図４に示すフローの開始時点に、ＣＰＵ１２は、この総数「ｎ」を「０」（すなわち、ｎ＝０）にセットする。
【００８１】
ステップＳ７において、ＣＰＵ１２は、直近のステップＳ５で配置したワークモデルと、該ワークモデルの前に配置した他のワークモデルとの間の干渉が検出されたか否かを判定する。
【００８２】
例えば、ＣＰＵ１２が第ｎ回目のステップＳ７を実行している場合、ＣＰＵ１２は、第ｎ回目のステップＳ５で配置したワークモデルＷＭｎと、第ｎ−１回目のステップＳ５で配置したワークモデルＷＭｎ−１との間の干渉が検出されたか否かを判定する。
【００８３】
上述したように、ＣＰＵ１２は、ステップＳ５において、位置範囲Ｄｎ−１と位置範囲Ｄｎとが互いに重なり合うように、ワークモデルＷＭｎを配置する。したがって、ＣＰＵ１２が第ｎ回目のステップＳ５でワークモデルＷＭｎを位置範囲Ｄｎ内でランダムに配置したとき、図１３に示すように、該ワークモデルＷＭｎとワークモデルＷＭｎ−１との間で干渉領域Ｆが生じ得る。
【００８４】
ＣＰＵ１２は、このステップＳ７において、仮想空間１１０に配置されたワークモデルＷＭｎとワークモデルＷＭｎ−１のプロファイルデータ等に基づいて、干渉領域Ｆを検出する。
【００８５】
ＣＰＵ１２は、干渉領域Ｆを（すなわち、ＹＥＳ）検出した場合、ステップＳ８へ進む。一方、ＣＰＵ１２は、干渉領域Ｆが検出されなかった（すなわち、ＮＯ）場合、ステップＳ１０へ進む。このように、本実施形態においては、ＣＰＵ１２は、干渉領域Ｆを検出する干渉検出部５８（図１）としての機能を担う。
【００８６】
ステップＳ８において、ＣＰＵ１２は、ワークモデルＷＭｎおよびワークモデルＷＭｎ−１の少なくとも１つに対し、干渉領域Ｆが生じなくなる非干渉位置を検索する。このステップＳ８について、図１４を参照して説明する。
【００８７】
ステップＳ８の開始後、ステップＳ１１において、ＣＰＵ１２は、ワークモデルＷＭｎおよびワークモデルＷＭｎ−１の少なくとも一方の位置を、位置範囲ＤｎまたはＤｎ−１内でずらす。
【００８８】
一例として、ＣＰＵ１２は、図１３に示すワークモデルＷＭｎの中心Ｂ１_ｎの搬送装置座標系ＣＣのｘ軸方向の座標ｘｎを、位置範囲Ｄｎ（例えば、閉区間［ｘＭＩＮ，ｘＭＡＸ］）内に収まるように、変化させる（例えば、ｘｎ＋α、または、ｘｎ−αとする）。
【００８９】
または、ＣＰＵ１２は、ワークモデルＷＭｎの中心Ｂ１_ｎの搬送装置座標系ＣＣのｙ軸方向の座標ｙｎを、位置範囲Ｄｎ（例えば、閉区間［ｙＭＩＮ，ｙＭＡＸ］）内に収まるように、変化させる（例えば、ｙｎ＋α、または、ｙｎ−αとする）。
【００９０】
または、ＣＰＵ１２は、ワークモデルＷＭｎを、位置範囲Ｄｎ（例えば、閉区間［θＭＩＮ，θＭＡＸ］）内に収まるように、軸線Ｏ１周りに所定の角度（例えば、＋αまたは−α）だけ回転させる。
【００９１】
また、他の例として、ＣＰＵ１２は、図１３に示すワークモデルＷＭｎ−１の中心Ｂ１_ｎ−１の搬送装置座標系ＣＣのｘ軸方向の座標ｘｎ−１を、位置範囲Ｄｎ−１内に収まるように、変化させる（例えば、ｘｎ−１＋α、または、ｘｎ−１−αとする）。
【００９２】
または、ＣＰＵ１２は、ワークモデルＷＭｎ−１の中心Ｂ１_ｎ−１の搬送装置座標系ＣＣのｙ軸方向の座標ｙｎ−１を、位置範囲Ｄｎ−１内に収まるように、変化させる（例えば、ｙｎ−１＋α、または、ｙｎ−１−αとする）。
【００９３】
または、ＣＰＵ１２は、ワークモデルＷＭｎ−１を、位置範囲Ｄｎ−１内に収まるように、軸線Ｏ１周りに所定の角度（例えば、＋αまたは−α）だけ回転させる。さらに他の例として、ＣＰＵ１２は、ワークモデルＷＭｎおよびＷＭｎ−１の双方の位置を、上述の手法を用いて変更してもよい。
【００９４】
このようなプロセスを実行することによって、ＣＰＵ１２は、２つのワークモデルＷＭｎおよびＷＭｎ−１の相対位置を変更する。このように、本実施形態においては、ＣＰＵ１２は、２つのワークモデルＷＭｎおよびＷＭｎ−１の相対位置を変更する位置変更部６４（図１）として機能する。
【００９５】
ステップＳ１２において、ＣＰＵ１２は、ステップＳ７の同様の手法で、ステップＳ１１で位置をずらしたワークモデルＷＭｎと、ワークモデルＷＭｎ−１との間で干渉領域Ｅが生じているか否かを判定する。
【００９６】
ＣＰＵ１２は、干渉領域Ｆが生じている（すなわち、ＹＥＳ）と判定した場合、ステップＳ１１へ戻る。一方、ＣＰＵ１２は、干渉領域Ｆが生じていない（すなわち、ＮＯ）と判定した場合、図１４に示すステップＳ８を終了し、図４のステップＳ９へ進む。このように、本実施形態においては、ＣＰＵ１２は、干渉領域Ｆが生じるか否かを判定する干渉判定部６６（図１）としての機能を担う。
【００９７】
以上のように、ＣＰＵ１２は、ステップＳ１２でＮＯと判定するまで（すなわち、干渉領域Ｅが検出されなくなるまで）、ステップＳ１１およびＳ１２をループする。このステップＳ８を実行することによって、ＣＰＵ１２は、ワークモデルＷＭｎとワークモデルＷＭｎ−１との間で干渉領域Ｆが生じなくなる非干渉位置を検索する。
【００９８】
したがって、ＣＰＵ１２は、非干渉位置を検索する非干渉位置検索部６０（図１）としての機能を担う。そして、ステップＳ１１を実行する位置変更部６４およびステップＳ１２を実行する干渉判定部６６は、非干渉位置検索部６０を構成する。
【００９９】
なお、ＣＰＵ１２は、ステップＳ４で開始した搬送動作を実行している間に、該搬送動作と並行して、図１４に示すフローを実行してもよい。または、ＣＰＵ１２は、ステップＳ７でＹＥＳと判定したときに、ステップＳ４で開始した搬送動作を一旦停止し、図１４に示すフローを実行してもよい。この場合において、ＣＰＵ１２は、後述のステップＳ９の終了時に、搬送動作を再開してもよい。
【０１００】
また、ＣＰＵ１２は、ステップＳ１２でＮＯと判定するまでにステップＳ１１を繰り返し実行するときに、ワークモデルＷＭｎおよびＷＭｎ−１の少なくとも一方を搬送装置座標系ＣＣのｘ軸方向へずらす動作、ｙ軸方向へずらす動作、および、軸線Ｏ１周りに回転させる動作を、所定の順番に従って実行してもよい。また、これら動作を行う順番、および該動作を行うときの変位量αは、オペレータによって予め定められてもよい。
【０１０１】
また、ＣＰＵ１２は、ステップＳ１１において、ワークモデルＷＭｎおよびワークモデルＷＭｎ−１が互いから離反する方向を算出し、該ワークモデルＷＭｎおよびＷＭｎ−１の少なくとも一方をずらす方向を、該離反する方向に決定してもよい。
【０１０２】
再度、図４を参照して、ステップＳ９において、ＣＰＵ１２は、ワークモデルＷＭｎおよびＷＭｎ−１の少なくとも一方の位置を修正する。具体的には、ＣＰＵ１２は、ワークモデルＷＭｎおよびＷＭｎ−１の少なくとも一方の位置を、ステップＳ８で検索された非干渉位置（すなわち、ステップＳ１２でＮＯと判定された位置）に決定する。
【０１０３】
その結果、ワークモデルＷＭｎおよびＷＭｎ−１の位置は、ステップＳ７でＹＥＳと判定されたときの位置から、干渉領域Ｆが生じない非干渉位置に修正されることになる。このように、ＣＰＵ１２は、ワークモデルＷＭｎおよびＷＭｎ−１の少なくとも１つの位置を修正するワーク位置修正部６２（図１）としての機能を有する。
【０１０４】
ステップＳ１０において、ＣＰＵ１２は、ステップＳ６でインクリメントされた総数「ｎ」が、ステップＳ２で設定された総数ｎＴに達したか否か（すなわち、ｎ＝ｎＴであるか否か）を判定する。
【０１０５】
ＣＰＵ１２は、ｎ＝ｎＴである（すなわち、ＹＥＳ）と判定した場合、ステップＳ４で開始したシミュレーションを終了し、以って、図４に示すフローを終了する。一方、ＣＰＵ１２は、ｎ＜ｎＴである（すなわち、ＮＯ）と判定した場合、ステップＳ５へ戻る。
【０１０６】
以上に述べたように、本実施形態においては、ＣＰＵ１２は、ワークモデルＷＭを搬送部モデル１０４Ｍに配置するときの位置（搬送装置座標系ＣＣのｘ軸およびｙ軸の位置）、および姿勢（軸線Ｏ１周りの角度θ）をランダムで変化させている。
【０１０７】
そして、ＣＰＵ１２は、ワークモデルＷＭｎを配置したときに干渉領域Ｅが生じたか否かを検出し（ステップＳ７）、干渉領域Ｅが生じた場合に、ワークモデルＷＭの非干渉位置を検索している（ステップＳ８）。そして、ＣＰＵ１２は、ワークモデルＷＭの位置を検索した非干渉位置に修正している（ステップＳ９）。
【０１０８】
この構成によれば、図２および図３を用いて説明したような、実空間における搬送装置１００の動作を、干渉領域Ｅの発生を防止しつつ、実際の作業に近い形態でシミュレーションすることができる。
【０１０９】
また、本実施形態においては、オフセット量として、第１のオフセット量ｘＯＦＦ、第２のオフセット量ｙＯＦＦ、および、第３のオフセット量θＯＦＦが設定されている。この構成によれば、ワークモデルＷＭを搬送部モデル１０４Ｍに配置するときの位置および姿勢を、より多様に変化させることができるので、実際の作業により近い形態で、搬送装置１００の動作のシミュレーションをすることができる。
【０１１０】
また、本実施形態においては、ＣＰＵ１２は、ステップＳ７で干渉領域Ｅの発生を検出したときに、２つのワークモデルＷＭの相対位置を変更し（ステップＳ１１）、次いで、該２つのワークモデルＷＭが干渉しているか否かを判定し（ステップＳ１２）、これにより、非干渉位置を検索している。この構成によれば、非干渉位置を、比較的簡単なアルゴリズムで、確実に検索することができる。
【０１１１】
次に、図１５を参照して、他の実施形態に係るシミュレーションシステム１５０について説明する。シミュレーションシステム１５０は、上述のシミュレーションシステム１０と、シミュレーション装置１６０において、相違する。
【０１１２】
シミュレーション装置１６０は、モデル配置部５２、オフセット設定部５４、搬送動作実行部５６、干渉検出部５８、非干渉位置検索部６０、ワーク位置修正部６２、および第１の比率設定部１６２を有する。
【０１１３】
ＣＰＵ１２は、モデル配置部５２、オフセット設定部５４、搬送動作実行部５６、干渉検出部５８、非干渉位置検索部６０、ワーク位置修正部６２、および第１の比率設定部１６２の機能を担う。
【０１１４】
図１６に示すように、本実施形態においては、ＣＰＵ１２は、仮想空間１１０において、第１種のワークモデルＷＭ１と、該第１種のワークモデルとは異なる形状を有する第２種のワークモデルＷＭ２を配置する。第１種のワークモデルＷＭ１は、上述のワークモデルＷＭと同様に、略直方体状である一方、第２種のワークモデルＷＭ２は、略円柱状である。
【０１１５】
以下、図１７を参照して、シミュレーションシステム１５０の動作について説明する。なお、図１７に示すフローにおいて、図４に示すフローと同様のステップには同じステップ番号を付し、詳細な説明を省略する。
【０１１６】
ステップＳ２の後、ステップＳ２１において、ＣＰＵ１２は、後述のステップＳ２３で仮想空間１１０にワークモデルを配置するときの、第１種のワークモデルＷＭ１の個数ｎａと、第２種のワークモデルＷＭ２の個数ｎｂとの比率Ｒ１（＝ｎａ／ｎｂ）を設定する。
【０１１７】
一例として、ＣＰＵ１２は、オペレータが比率Ｒ１を入力可能とするための入力画像データを生成し、表示部２２に表示する。オペレータは、データ入力部２０を操作して、表示部２２に表示された入力画像に所望の比率Ｒ１を入力する。
【０１１８】
データ入力部２０は、オペレータが入力した比率Ｒ１の入力データを、Ｉ／Ｏインターフェース１８を介して、ＣＰＵ１２に送信する。ＣＰＵ１２は、受信した入力データに従って、比率Ｒ１を設定し、該比率Ｒ１の設定をシステムメモリ１４に記憶する。
【０１１９】
このように、本実施形態においては、ＣＰＵ１２は、第１種のワークモデルＷＭ１と第２種のワークモデルＷＭ２との比率Ｒ１を設定する第１の比率設定部１６２（図１５）としての機能を担う。
【０１２０】
ステップＳ２２において、ＣＰＵ１２は、オフセット設定部５４として機能し、ワークモデルを仮想空間１１０において搬送装置モデル１００Ｍに配置するときのオフセット量を設定する。
【０１２１】
具体的には、ＣＰＵ１２は、第１種のワークモデルＷＭ１のオフセット量として、上述の実施形態と同様に、第１のオフセット量ｘＯＦＦ、第２のオフセット量ｙＯＦＦ、および第３のオフセット量θＯＦＦの値をオペレータから受け付けて、第１のオフセット量ｘＯＦＦ、第２のオフセット量ｙＯＦＦ、および第３のオフセット量θＯＦＦを設定する。
【０１２２】
一方、ＣＰＵ１２は、第２種のワークモデルＷＭ２のオフセット量として、第１のオフセット量ｘＯＦＦおよび第２のオフセット量ｙＯＦＦをオペレータから受け付けて、第１のオフセット量ｘＯＦＦおよび第２のオフセット量ｙＯＦＦを設定する。第２種のワークモデルＷＭ２は、搬送装置座標系ＣＣのｚ軸方向から見て円形であるので、軸線Ｏ１周りの角度に係る第３のオフセット量θＯＦＦを設定する必要はない。
【０１２３】
ステップＳ４の後、ステップＳ２３において、ＣＰＵ１２は、モデル配置部５２として機能し、仮想空間１１０においてワークモデルを搬送装置モデル１００Ｍに配置する。
【０１２４】
このとき、ＣＰＵ１２は、ステップＳ２１で設定した比率Ｒ１に従って第１種のワークモデルＷＭ１または第２種のワークモデルＷＭ２を選択し、搬送部モデル１０４Ｍ上に配置する。
【０１２５】
例えば、ステップＳ２で設定された総数ｎＴが、１００個（ｎＴ＝１００）であり、且つ、ステップＳ２１で設定された比率Ｒ１が、Ｒ１＝ｎａ／ｎｂ＝３／２であった場合、ＣＰＵ１２は、ステップＳ１０でＹＥＳと判定するまでに、第１種のワークモデルＷＭ１を６０個、第２種のワークモデルＷＭ２を４０個、仮想空間１１０に供給するように、第１種のワークモデルＷＭ１または第２種のワークモデルＷＭ２を選択して配置する。
【０１２６】
第１種のワークモデルＷＭ１を配置する場合、ＣＰＵ１２は、ステップＳ３で設定したオフセット量によって定められる位置範囲Ｄ内（例えば、閉区間［ｘＭＩＮ，ｘＭＡＸ］、［ｙＭＩＮ，ｙＭＡＸ］、［θＭＩＮ，θＭＡＸ］）で、第１種のワークモデルＷＭ１の位置および姿勢をランダムに変化させる。
【０１２７】
また、第２種のワークモデルＷＭ２を配置する場合、ＣＰＵ１２は、ステップＳ３で設定したオフセット量によって定められる位置範囲Ｄ内（例えば、閉区間［ｘＭＩＮ，ｘＭＡＸ］、［ｙＭＩＮ，ｙＭＡＸ］）で、第２種のワークモデルＷＭ２の位置をランダムに変化させる。
【０１２８】
このように、本実施形態によれば、異なる種類のワークを搬送装置１００によって搬送する動作のシミュレーションを、実際の作業に則した形態で行うことができる。
【０１２９】
次に、図１８を参照して、さらに他の実施形態に係るシミュレーションシステム１７０について説明する。シミュレーションシステム１７０は、上述のシミュレーションシステム１０と、シミュレーション装置１８０において、相違する。
【０１３０】
シミュレーション装置１８０は、モデル配置部５２、オフセット設定部５４、搬送動作実行部５６、干渉検出部５８、非干渉位置検索部６０、ワーク位置修正部６２、および第２の比率設定部１８２を有する。
【０１３１】
ＣＰＵ１２は、モデル配置部５２、オフセット設定部５４、搬送動作実行部５６、干渉検出部５８、非干渉位置検索部６０、ワーク位置修正部６２、および第２の比率設定部１８２の機能を担う。
【０１３２】
図１９に示すように、本実施形態においては、ＣＰＵ１２は、仮想空間１１０においてワークモデルＷＭ３を配置する。ワークモデルＷＭ３は、略直方体状の部材であって、表面１１２と、該表面１１２とは反対側の裏面１１４とを有する。表面１１２には、「Ａ」という文字の模様１１６が形成されている一方、裏面１１４には、「Ｂ」という文字の模様１１８が形成されている。
【０１３３】
以下、図２０を参照して、シミュレーションシステム１７０の動作について説明する。なお、図２０に示すフローにおいて、図４に示すフローと同様のステップには同じステップ番号を付し、詳細な説明を省略する。
【０１３４】
ステップＳ２の後、ステップＳ３１において、ＣＰＵ１２は、後述のステップＳ３２で仮想空間１１０にワークモデルＷＭ３を配置するときに、図１９（ａ）に示すように表面１１２が見える（すなわち、搬送装置モデル１００Ｍとは反対側を向く）ようにワークモデルＷＭ３を搬送部モデル１０４Ｍ上に配置する回数ｎｃと、図１９（ｂ）に示すように裏面１１４が見えるようにワークモデルＷＭ３を搬送部モデル１０４Ｍ上に配置する回数ｎｄとの比率Ｒ２（＝ｎｃ／ｎｄ）を設定する。
【０１３５】
一例として、ＣＰＵ１２は、オペレータが比率Ｒ２を入力可能とするための入力画像データを生成し、表示部２２に表示する。オペレータは、データ入力部２０を操作して、表示部２２に表示された入力画像に所望の比率Ｒ２を入力する。
【０１３６】
データ入力部２０は、オペレータが入力した比率Ｒ２の入力データを、Ｉ／Ｏインターフェース１８を介して、ＣＰＵ１２に送信する。ＣＰＵ１２は、受信した入力データに従って、比率Ｒ２を設定し、該比率Ｒ２の設定をシステムメモリ１４に記憶する。このように、本実施形態においては、ＣＰＵ１２は、比率Ｒ２を設定する第２の比率設定部１８２（図１８）としての機能を担う。
【０１３７】
ステップＳ４の後、ステップＳ３２において、ＣＰＵ１２は、モデル配置部５２として機能し、仮想空間１１０においてワークモデルＷＭ３を搬送装置モデル１００Ｍに配置する。
【０１３８】
このとき、ＣＰＵ１２は、ステップＳ３１で設定した比率Ｒ２に従って、表面１１２が見えるようにワークモデルＷＭ３をワークモデルＷＭ３上に配置するか、または、裏面１１４が見えるようにワークモデルＷＭ３をワークモデルＷＭ３上に配置するかを選択する。
【０１３９】
例えば、ステップＳ２で設定された総数ｎＴが、１００個（ｎＴ＝１００）であり、且つ、ステップＳ３１で設定された比率Ｒ２が、Ｒ２＝ｎｃ／ｎｄ＝３／２であった場合、ＣＰＵ１２は、ステップＳ１０でＹＥＳと判定するまでに、６０個のワークモデルＷＭ３を、その表面１１２が見えるように配置し、４０個のワークモデルＷＭ３を、その裏面１１４が見えるように配置する。
【０１４０】
このように、本実施形態によれば、表面と裏面とを有するワークを搬送装置１００によって搬送する動作のシミュレーションを、実際の作業に則した形態で行うことができる。
【０１４１】
次に、図２１を参照して、さらに他の実施形態に係るシミュレーションシステム１９０について説明する。シミュレーションシステム１９０は、上述のシミュレーションシステム１０と、シミュレーション装置２００において、相違する。
【０１４２】
シミュレーション装置２００は、モデル配置部５２、オフセット設定部５４、搬送動作実行部５６、干渉検出部５８、非干渉位置検索部６０、ワーク位置修正部６２、動作範囲設定部２０４、および追従動作実行部２０６を有する。
【０１４３】
ＣＰＵ１２は、モデル配置部５２、オフセット設定部５４、搬送動作実行部５６、干渉検出部５８、非干渉位置検索部６０、ワーク位置修正部６２、動作範囲設定部２０４、および追従動作実行部２０６の機能を担う。
【０１４４】
シミュレーション装置２００は、搬送装置によって搬送されるワークをロボットハンドで追随して保持するロボットシステムの動作をシミュレーションするための装置である。
【０１４５】
以下、図２２を参照して、実空間におけるロボットシステム２５０の一例について説明する。ロボットシステム２５０は、搬送装置１００、ロボット２５２、およびセンサ２５４を備える。
【０１４６】
ロボット２５２は、垂直多関節ロボットであって、ロボットベース２５６、旋回胴２５８、ロボットアーム２６０、手首部２６２、およびロボットハンド２６４を有する。ロボットベース２５６は、実空間の作業セルの床に固定される。
【０１４７】
旋回胴２５８は、ロボットベース２５６に回動可能に設けられる。ロボットアーム２６０は、旋回胴２５８に回動可能に連結された上腕部２６６と、該上腕部２６６の先端に回動可能に連結された前腕部２６８とを有する。
【０１４８】
手首部２６２は、前腕部２６８の先端に連結され、ロボットハンド２６４を３軸周りに回動可能に支持する。ロボットハンド２６４は、例えば、開閉可能な複数の指部、または吸着部を有し、ワークＷを解放可能に保持することができる。
【０１４９】
ロボット２５２に対しては、ロボット座標系ＣＲが設定される。ロボット２５２は、ロボット座標系ＣＲを基準として、該ロボット２５２の各構成要素を動作させる。例えば、ロボット座標系ＣＲのｚ軸は、実空間の鉛直方向に平行に配置され、旋回胴２５８は、ロボット座標系ＣＲのｚ軸周りに回動される。
【０１５０】
一方、ロボットハンド２６４に対しては、ツール座標系ＣＴが設定される。このツール座標系ＣＴは、ロボット座標系ＣＲにおけるロボットハンド２６４の位置および姿勢を規定する。
【０１５１】
ロボット２５２は、ロボットハンド２６４の位置および姿勢を、ツール座標系ＣＴによって規定される位置および姿勢に一致させるように、ロボット座標系ＣＲにおいて旋回胴２５８、ロボットアーム２６０、手首部２６２を動作させる。
【０１５２】
センサ２５４は、搬送部１０４の鉛直上方に設置され、搬送部１０４によって搬送されるワークＷを検出することができる。センサ２５４は、例えば３次元視覚センサであって、ワークＷを撮像し、該ワークＷの画像を取得する。
【０１５３】
センサ２５４に対しては、センサ座標系ＣＳが設定される。例えば、センサ座標系ＣＳのｚ軸プラス方向は、センサ２５４の視線方向と一致し、且つ、実空間の鉛直下方に一致するように、設定される。
【０１５４】
次に、ロボットシステム２５０の動作について説明する。まず、ワークＷが、オペレータによって搬送部１０４の上流端付近に載置される。次いで、搬送装置１００は、搬送部１０４を動作させ、これにより、搬送部１０４の上に載置されたワークＷを搬送方向Ａへ搬送する。
【０１５５】
次いで、センサ２５４は、搬送部１０４の上に載置されたワークＷを検出する。具体的には、センサ２５４は、搬送部１０４上のワークＷを撮像し、該ワークＷの画像を取得する。
【０１５６】
次いで、ロボット２５２は、センサ２５４が取得したワークＷの検出画像に基づいて、ロボット座標系ＣＲにおけるワークＷの位置および姿勢を取得する。そして、ロボット２５２は、取得した位置および姿勢に基づいて、ツール座標系ＣＴの原点が搬送中のワークＷの所定位置（例えばワークＷの中心）に継続して配置されるように、ツール座標系ＣＴを設定する。
【０１５７】
ロボット２５２は、ツール座標系ＣＴによって規定される位置および姿勢にロボットハンド２６４を配置するように、旋回胴２５８、ロボットアーム２６０、手首部２６２を動作させる。こうして、ロボット２５２は、搬送中のワークＷにロボットハンド２６４を追随させる。次いで、ロボット２５２は、ロボットハンド２６４によってワークＷを保持する。その結果、搬送中のワークＷは、ロボットハンド２６４によって持ち上げられる。
【０１５８】
本実施形態に係るシミュレーション装置２００は、このようなロボットシステム２５０の動作をシミュレーションする。
【０１５９】
以下、図２３を参照して、シミュレーションシステム１９０の動作について説明する。なお、図２３に示すフローにおいて、図４に示すフローと同様のステップには同じステップ番号を付し、詳細な説明を省略する。
【０１６０】
ステップＳ１の後、ステップＳ４１において、ＣＰＵ１２は、モデル配置部５２として機能して、ロボットモデルを仮想空間に配置する。システムメモリ１４は、上述のロボット２５２を含む、複数種類のロボットのロボットモデルを予め記憶する。
【０１６１】
一例として、ＣＰＵ１２は、システムメモリ１４に記憶された複数種類のロボットモデルをリストの形態で表した画像データを生成し、表示部２２に表示させる。使用者は、データ入力部２０を操作して、表示部２２に表示されたリストの中から、所望のロボットモデルを選択する。
【０１６２】
以下、使用者が、上記したロボット２５２をモデル化したロボットモデル２５２Ｍ（図２４）を選択した場合について説明する。データ入力部２０は、使用者が入力した入力データを、Ｉ／Ｏインターフェース１８を介して、ＣＰＵ１２に送信する。
【０１６３】
ＣＰＵ１２は、受信した入力データに応じて、システムメモリ１４に記憶された複数種類のロボットモデルの中から、ロボットモデル２５２Ｍを読み出し、仮想空間１１０に配置する。そして、ＣＰＵ１２は、該仮想空間１１０を画像データとして生成し、表示部２２に表示させる。
【０１６４】
このときの仮想空間１１０の画像の例を、図２４に示す。図２４に示す仮想空間１１０においては、ロボットベースモデル２５６Ｍ、旋回胴モデル２５８Ｍ、ロボットアームモデル２６０Ｍ、手首部モデル２６２Ｍ、およびロボットハンドモデル２６４Ｍを有するロボットモデル２５２Ｍが配置されている。
【０１６５】
システムメモリ１４は、ロボットモデル２５２Ｍに関連付けて、種々の仮想ロボット動作パラメータを記憶する。この仮想ロボット動作パラメータは、実空間でロボット２５２を動作させるのに要する動作パラメータに対応するパラメータである。例えば、仮想ロボット動作パラメータは、ロボット座標系ＣＲ、ツール座標系ＣＴ、および仮想可動範囲を含む。
【０１６６】
この仮想可動範囲は、実空間でロボット２５２がロボットハンド２６４を移動させることのできる可動範囲（すなわち、ツール座標系ＣＴを設定可能な範囲）に対応する、仮想空間１１０内の範囲である。
【０１６７】
ＣＰＵ１２は、図２４に示すように、ロボットモデル２５２Ｍとともに、ロボット座標系ＣＲとツール座標系ＣＴとを仮想空間１１０において設定する。このように、本実施形態においては、ＣＰＵ１２は、モデル配置部５２として機能して、ロボットモデル２５２Ｍを仮想空間１１０に配置する。
【０１６８】
ステップＳ４２において、ＣＰＵ１２は、モデル配置部５２として機能して、センサモデルを仮想空間１１０に配置する。システムメモリ１４は、上述のセンサ２５４を含む、複数種類のセンサのセンサモデルを予め記憶する。
【０１６９】
一例として、ＣＰＵ１２は、システムメモリ１４に記憶された複数種類のセンサモデルをリストの形態で表した画像データを生成し、表示部２２に表示する。使用者は、データ入力部２０を操作して、表示部２２に表示されたリストの中から、所望のセンサモデルを選択する。
【０１７０】
以下、使用者が、上述したセンサ２５４をモデル化したセンサモデル２５４Ｍ（図２５）を選択した場合について説明する。データ入力部２０は、使用者が入力した入力データを、Ｉ／Ｏインターフェース１８を介して、ＣＰＵ１２に送信する。
【０１７１】
ＣＰＵ１２は、受信した入力データに応じて、システムメモリ１４に記憶された複数種類のセンサモデルの中から、センサモデル２５４Ｍを読み出し、仮想空間１１０に配置する。このとき、ＣＰＵ１２は、センサモデル２５４Ｍが搬送部モデル１０４Ｍの上方（すなわち、搬送装置座標系ＣＣのｚ軸プラス方向）に位置するように、配置する。
【０１７２】
これとともに、ＣＰＵ１２は、センサ座標系ＣＳを仮想空間１１０において設定する。こうして、図２５に示すように、センサモデル２５４Ｍが仮想空間１１０に配置される。このように、本実施形態においては、ＣＰＵ１２は、モデル配置部５２として機能して、センサモデル２５４Ｍを仮想空間１１０に配置する。
【０１７３】
このステップＳ４２の結果、搬送装置モデル１００Ｍ、ロボットモデル２５２Ｍ、およびセンサモデル２５４Ｍを有する搬送システムモデル２５０Ｍが、仮想空間１１０内で構築される。
【０１７４】
ステップＳ４３において、ＣＰＵ１２は、追従動作範囲を仮想空間１１０において設定する。この追従動作範囲は、後述するステップＳ４４でシミュレーションを実行するときに、搬送装置モデル１００Ｍが搬送するワークモデルＷＭにロボットモデル２５２Ｍがロボットハンドモデル２６４Ｍを追従させる追従動作を行うときの、仮想空間１１０における動作範囲である。
【０１７５】
一例として、ＣＰＵ１２は、追従動作範囲を規定する距離Ｇ（図２６）を使用者が入力可能とするための入力画像データを生成し、表示部２２に表示する。距離Ｇは、搬送装置座標系ＣＣのｙ軸方向の距離である。使用者は、データ入力部２０を操作して、表示部２２に表示された入力画像に所望の距離Ｇを入力する。
【０１７６】
データ入力部２０は、使用者が入力した距離Ｇの入力データを、Ｉ／Ｏインターフェース１８を介して、ＣＰＵ１２に送信する。ＣＰＵ１２は、受信した入力データに従って、追従動作範囲の上流端２１０と下流端２１２を、搬送部モデル１０４Ｍ上に設定する。
【０１７７】
このとき、上流端２１０は、センサモデル２５４Ｍの下流側に配置される。また、上流端２１０および下流端２１２は、その間にロボットモデル２５２Ｍの仮想可動範囲を含むように、配置される。
【０１７８】
その結果、図２６に示すように、追従動作範囲は、上流端２１０および下流端２１２の間の範囲として、設定される。このように、本実施形態においては、ＣＰＵ１２は、追従動作範囲を仮想空間１１０において設定する動作範囲設定部２０４（図２１）として機能する。
【０１７９】
なお、ＣＰＵ１２は、追従動作範囲が設定されたときに、データ入力部２０からの入力データに応じて、追従動作範囲の上流端２１０または下流端２１２を仮想空間１１０内で移動させてもよい。
【０１８０】
例えば、使用者は、追従動作範囲が設定されたとき、データ入力部２０（例えばマウス）を操作して、表示部２２に表示された上流端２１０または下流端２１２を移動させる（例えば、ドラッグアンドドロップ）。ＣＰＵ１２は、使用者によるデータ入力部２０からの入力データに応じて、上流端２１０または下流端２１２を仮想空間１１０内で移動させる。
【０１８１】
なお、使用者の入力データに応じて上流端２１０または下流端２１２を移動させた結果、センサモデル２５４Ｍの、搬送装置座標系ＣＣのｘ−ｙ平面における位置が、追従動作範囲内となる場合に、上流端２１０または下流端２１２の移動を禁止するか、または、表示部２２に警告画像を表示してもよい。
【０１８２】
または、使用者の入力データに応じて上流端２１０または下流端２１２を移動させた結果、ロボットモデル２５２Ｍの仮想可動範囲が追従動作範囲から外れた場合に、上流端２１０または下流端２１２の移動を禁止するか、または、表示部２２に警告画像を表示してもよい。
【０１８３】
ステップＳ４４において、ＣＰＵ１２は、搬送システムモデル２５０Ｍの動作のシミュレーションを開始する。具体的には、ＣＰＵ１２は、搬送動作実行部５６として機能して、搬送装置モデル１００Ｍを模擬的に動作させ、ステップＳ５でワークモデルＷＭが搬送部モデル１０４Ｍに配置されたときに、該ワークモデルＷＭを搬送する。
【０１８４】
次いで、ＣＰＵ１２は、仮想空間１１０においてセンサモデル２５４Ｍを動作させ、センサモデル２５４Ｍは、搬送中のワークモデルＷＭを検出する。ＣＰＵ１２は、センサモデル２５４Ｍの視線データと、ワークモデルＷＭの配置情報とに基づいて、センサモデル２５４Ｍが仮想空間１１０内でワークモデルＷＭを検出したときに得られるべき仮想検出画像（仮想検出結果）を生成する。
【０１８５】
ついで、ＣＰＵ１２は、生成した仮想検出画像から、ロボット座標系ＣＲにおけるワークモデルＷＭの位置および姿勢を取得する。そして、ＣＰＵ１２は、取得したワークモデルＷＭの位置および姿勢と、ステップＳ４３で設定した追従動作範囲と、ロボットプログラムとに基づいて、ロボットモデル２５２Ｍを仮想空間１１０内で動作させる。
【０１８６】
具体的には、ＣＰＵ１２は、ツール座標系ＣＴの原点を搬送中のワークモデルＷＭの所定位置（例えばワークモデルＷＭの中心）に継続して配置するように、ツール座標系ＣＴを順次設定する。
【０１８７】
ＣＰＵ１２は、ツール座標系ＣＴによって規定される位置および姿勢にロボットハンドモデル２６４Ｍを配置するように、ロボットモデル２５２Ｍを仮想空間１１０内で動作させる。
【０１８８】
こうして、ロボットモデル２５２Ｍは、仮想空間１１０において、ロボットハンドモデル２６４Ｍを追従動作範囲内でワークモデルＷＭに追従させる。このように、本実施形態においては、ＣＰＵ１２は、ロボットモデル２５２Ｍに追従動作を実行させる追従動作実行部２０６（図２１）としての機能を担う。
【０１８９】
次いで、ロボットモデル２５２Ｍは、ロボットハンドモデル２６４ＭでワークモデルＷＭを保持する。なお、上述のロボットプログラムは、システムメモリ１４に予め記憶される。
【０１９０】
このロボットプログラムが適切に構築されていた場合、図２７に示すように、ロボットモデル２５２Ｍは、ロボットハンドモデル２６４ＭでワークモデルＷＭを適切に持ち上げることができる。
【０１９１】
一方、ロボットプログラムが適切に構築されていなかった場合、ロボットハンドモデル２６４Ｍは、ワークモデルＷＭを保持し損なうことになる。この場合、ＣＰＵ１２は、表示部２２に警告画像を表示してもよい。ＣＰＵ１２は、以上に述べた搬送システムモデル２５０Ｍの動作のシミュレーションを実行する。
【０１９２】
このように、本実施形態においては、ステップＳ５で任意の位置および姿勢で配置されたワークモデルＷＭを、ロボットモデル２５２Ｍによって保持して持ち上げる動作をシミュレーションする。この構成によれば、実空間におけるロボットシステム２５０の動作を、干渉領域Ｅの発生を防止しつつ、実際の作業に近い形態でシミュレーションすることができる。
【０１９３】
なお、上述の実施形態においては、ステップＳ１１において、ＣＰＵ１２が、ワークモデルＷＭｎの中心Ｂ１_ｎの座標ｘｎおよび座標ｙｎを変化させる場合について述べた。しかしながら、ＣＰＵ１２は、ステップＳ１１において、ワークモデルＷＭｎの如何なる基準点（例えば、ワークモデルＷＭｎの一頂点）の座標ｘｎおよび座標ｙｎを変化させてもよい。
【０１９４】
また、上述の実施形態においては、ステップＳ１１でワークモデルＷＭｎ、ＷＭｎ−１の位置を仮想空間１１０内で模擬的にずらす動作を行う場合について述べた。しかしながら、これに限らず、ＣＰＵ１２は、ステップＳ１１において、ワークモデルＷＭｎをずらす動作を演算上実行し、非干渉位置を検索してもよい（例えば、ワークモデルＷＭｎのプロファイルデータを変更する演算を行う）。
【０１９５】
この場合、ＣＰＵ１２は、ステップＳ９において、ステップＳ１１で演算によって検索された非干渉位置に配置するように、ワークモデルＷＭｎおよびＷＭｎ−１の少なくとも一方の位置を修正する。
【０１９６】
また、上述の実施形態においては、ＣＰＵ１２が、シミュレーション装置５０、１６０、１８０、および２００の機能を担う場合について述べた。しかしながら、シミュレーション装置５０、１６０、１８０、または２００は、ＣＰＵ１２とは別の要素として構成されてもよい。
【０１９７】
この場合において、シミュレーション装置５０、１６０、１８０、または２００は、第２のＣＰＵを有し、該第２のＣＰＵが、モデル配置部５２、オフセット設定部５４、搬送動作実行部５６、干渉検出部５８、非干渉位置検索部６０、ワーク位置修正部６２、第１の比率設定部１６２、第２の比率設定部１８２、動作範囲設定部２０４、または追従動作実行部２０６の機能を担ってもよい。
【０１９８】
また、モデル配置部５２、オフセット設定部５４、搬送動作実行部５６、干渉検出部５８、非干渉位置検索部６０、ワーク位置修正部６２、第１の比率設定部１６２、第２の比率設定部１８２、動作範囲設定部２０４、または追従動作実行部２０６が、ＣＰＵを有する１つのコンピュータから構成されてもよい。
【０１９９】
また、ＣＰＵ１２は、ステップＳ４またはＳ４４のシミュレーション実行中に、搬送装置モデル１００ＭがワークＷＭを搬送する搬送範囲を設定してもよい。例えば、搬送範囲の上流端および下流端は、それぞれ、搬送部モデル１０４Ｍの上流端および下流端に近接して配置され得る。
【０２００】
この場合、ＣＰＵ１２は、ステップＳ５において、ワークモデルＷＭを搬送範囲の上流端に配置する。そして、ステップＳ４またはＳ４４のシミュレーション実行中に、搬送装置モデル１００Ｍは、ワークモデルＷＭを下流端まで搬送する。ＣＰＵ１２は、ワークモデルＷＭが搬送範囲の下流端に達したときに、該ワークモデルＷＭを仮想空間１１０から消去してもよい。
【０２０１】
以上、実施形態を通じて本開示を説明したが、上述の実施形態は、特許請求の範囲に係る発明を限定するものではない。
【符号の説明】
【０２０２】
１０，１５０，１７０，１９０    シミュレーションシステム
１２    ＣＰＵ
５０，１６０，１８０，２００    シミュレーション装置
５２    モデル配置部
５４    オフセット設定部
５６    搬送動作実行部
５８    干渉検出部
６０    非干渉位置検索部
６２    ワーク位置修正部
【図１】
2018140476.tif 000003
【図２】
2018140476.tif 000004
【図３】
2018140476.tif 000005
【図４】
2018140476.tif 000006
【図５】
2018140476.tif 000007
【図６】
2018140476.tif 000008
【図７】
2018140476.tif 000009
【図８】
2018140476.tif 000010
【図９】
2018140476.tif 000011
【図１０】
2018140476.tif 000012
【図１１】
2018140476.tif 000013
【図１２】
2018140476.tif 000014
【図１３】
2018140476.tif 000015
【図１４】
2018140476.tif 000016
【図１５】
2018140476.tif 000017
【図１６】
2018140476.tif 000018
【図１７】
2018140476.tif 000019
【図１８】
2018140476.tif 000020
【図１９】
2018140476.tif 000021
【図２０】
2018140476.tif 000022
【図２１】
2018140476.tif 000023
【図２２】
2018140476.tif 000024
【図２３】
2018140476.tif 000025
【図２４】
2018140476.tif 000026
【図２５】
2018140476.tif 000027
【図２６】
2018140476.tif 000028
【図２７】
2018140476.tif 000029