(57)【特許請求の範囲】
【請求項１】
配置された対象物を連続的に移動させる搬送面を有する搬送機と、前記対象物を把持して前記搬送面に配置可能な処理装置とを含むシステムの挙動を推定するシミュレーション装置であって、
前記システムを３次元仮想空間内に仮想的に構築する構築手段と、
前記搬送面に配置された複数の対象物についての前記３次元仮想空間内の位置を、対応する搬送機の移動量に基づいてそれぞれ更新するとともに、前記処理装置により把持されている対象物の前記３次元仮想空間内の位置を、前記処理装置の挙動に関連付けて更新する、トラッキング手段と、
前記３次元仮想空間内の各対象物の位置に基づいて、前記処理装置の挙動についての制御指令を生成する生成手段とを備え、
前記トラッキング手段は、
前記搬送面から予め定められた範囲内に前記処理装置が第１の対象物を配置すると、前記第１の対象物と前記搬送面との位置を互いに関連付けて更新し、
前記搬送面から予め定められた範囲内に前記処理装置が第２の対象物を配置した場合に、前記第２の対象物の表面から予め定められた範囲内に前記搬送面および前記第１の対象物が存在するときには、予め定められた優先度に従って、前記搬送面および前記第１の対象物のうちいずれか一方と前記第２の対象物との位置を互いに関連付けて更新する、シミュレーション装置。
【請求項２】
前記トラッキング手段は、前記３次元仮想空間内の対象物の高さに応じて、前記予め定められた範囲の大きさを決定する、請求項１に記載のシミュレーション装置。
【請求項３】
前記予め定められた範囲の大きさの設定を受付ける入力手段をさらに備える、請求項１または２に記載のシミュレーション装置。
【請求項４】
前記予め定められた範囲を示す３次元仮想空間内の領域を半透明のオブジェクトで表現される、請求項１〜３のいずれか１項に記載のシミュレーション装置。
【請求項５】
前記トラッキング手段は、前記搬送面から予め定められた範囲内に前記処理装置が対象物を配置すると、当該対象物が前記搬送面と接するように、前記３次元仮想空間内の当該対象物の高さ方向の位置を更新する、請求項１〜４のいずれか１項に記載のシミュレーション装置。
【請求項６】
前記トラッキング手段は、前記処理装置が対象物の把持を開放したときの前記３次元仮想空間内の水平方向の速度に応じて、前記３次元仮想空間内の当該対象物の水平方向の位置を補正する、請求項１〜５のいずれか１項に記載のシミュレーション装置。
【請求項７】
前記３次元仮想空間内の搬送面に予め設定される領域に関連付けて、被写体として対象物の少なくとも一部を含む入力画像に対する画像計測処理を行う計測手段をさらに備え、
前記トラッキング手段は、前記計測手段による対象物の検出に応答して、前記３次元仮想空間内に当該検出された対象物を出現させる、請求項１〜６のいずれか１項に記載のシミュレーション装置。
【請求項８】
配置された対象物を連続的に移動させる搬送面を有する搬送機と、前記対象物を把持して前記搬送面に配置可能な処理装置とを含むシステムの挙動を推定するコンピュータによって実行されるシミュレーション方法であって、
前記システムを３次元仮想空間内に仮想的に構築するステップと、
前記搬送面に配置された複数の対象物についての前記３次元仮想空間内の位置を、対応する搬送機の移動量に基づいてそれぞれ更新するとともに、前記処理装置により把持されている対象物の前記３次元仮想空間内の位置を、前記処理装置の挙動に関連付けて更新するステップと、
前記３次元仮想空間内の各対象物の位置に基づいて、前記処理装置の挙動についての制御指令を生成するステップとを含み、
前記更新するステップは、
前記搬送面から予め定められた範囲内に前記処理装置が第１の対象物を配置すると、前記第１の対象物と前記搬送面との位置を互いに関連付けて更新するステップと、
前記搬送面から予め定められた範囲内に前記処理装置が第２の対象物を配置した場合に、前記第２の対象物の表面から予め定められた範囲内に前記搬送面および前記第１の対象物が存在するときには、予め定められた優先度に従って、前記搬送面および前記第１の対象物のうちいずれか一方と前記第２の対象物との位置を互いに関連付けて更新するステップとを含む、シミュレーション方法。
【請求項９】
配置された対象物を連続的に移動させる搬送面を有する搬送機と、前記対象物を把持して前記搬送面に配置可能な処理装置とを含むシステムの挙動を推定するシミュレーションプログラムであって、前記シミュレーションプログラムはコンピュータに
前記システムを３次元仮想空間内に仮想的に構築するステップと、
前記搬送面に配置された複数の対象物についての前記３次元仮想空間内の位置を、対応する搬送機の移動量に基づいてそれぞれ更新するとともに、前記処理装置により把持されている対象物の前記３次元仮想空間内の位置を、前記処理装置の挙動に関連付けて更新するステップと、
前記３次元仮想空間内の各対象物の位置に基づいて、前記処理装置の挙動についての制御指令を生成するステップとを実行させ、
前記更新するステップは、
前記搬送面から予め定められた範囲内に前記処理装置が第１の対象物を配置すると、前記第１の対象物と前記搬送面との位置を互いに関連付けて更新するステップと、
前記搬送面から予め定められた範囲内に前記処理装置が第２の対象物を配置した場合に、前記第２の対象物の表面から予め定められた範囲内に前記搬送面および前記第１の対象物が存在するときには、予め定められた優先度に従って、前記搬送面および前記第１の対象物のうちいずれか一方と前記第２の対象物との位置を互いに関連付けて更新するステップとを含む、シミュレーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システムの挙動を推定するシミュレーション装置、シミュレーション方法、およびシミュレーションプログラムに関する。
【背景技術】
【０００２】
ＦＡ（Factory Automation）分野では、様々な自動制御技術が広く利用されている。このような自動制御技術において、ワークなどの対象物の位置をトラッキングするとともに、各種ロボットでワークに対して必要な処理を実施するようなアプリケーションが想定される。
【０００３】
このような自動制御技術の対象となるシステムの設計または検討などの段階において、システム全体の性能などを予め評価する必要がある。このようなニーズに対して、仮想的にシステムを構築して動作をシミュレーションする技術が実現されている。例えば、特開２０１３−１９１１２８号公報（特許文献１）は、仮想撮像部に対応する実空間の視覚センサを含めた機械システムの統合シミュレーションを行う技術が開示されている。特許文献２に開示される技術においては、３Ｄシミュレータと視覚センサシミュレータとが連携することで、各タイミングにおける３Ｄ空間内のワークの撮像画像を仮想的に生成する。
【０００４】
特開平０９−２５８８１５号公報（特許文献２）は、モデルをあるモデルに追従動作させるシミュレーションにおいて、モデルに関して互いに作用するものと作用されるものの主従関係を設定し、その主従関係に従って運動するモデルの運動連鎖を模擬する構成を開示している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−１９１１２８号公報
【特許文献２】特開平０９−２５８８１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
アプリケーションによっては、コンベアなどの搬送面上にワークが配置されるとは限らず、搬送面から少し離れた位置からワークの把持が解除され、ワークが自然落下するような処理も存在する。
【０００７】
上述の特許文献２は、その図２４などに、ワークがコンベアに運ばれている追従動作を行わせる場合について例示するが、ワークとコンベアとの間の主従関係をどのように設定するのか、および、コンベア上に複数のワークが配置された場合にどのように処理されるのか、といった点については何ら開示していない。
【０００８】
搬送機の搬送面上ではなく、その近傍に対象物が配置されるようなアプリケーションであっても、現実の対象物の挙動を反映したシミュレーションを実現したいというニーズが存在する。
【課題を解決するための手段】
【０００９】
本発明のある局面によれば、配置された対象物を連続的に移動させる搬送面を有する搬送機と、対象物を把持して搬送面に配置可能な処理装置とを含むシステムの挙動を推定するシミュレーション装置が提供される。シミュレーション装置は、システムを３次元仮想空間内に仮想的に構築する構築手段と、搬送面に配置された複数の対象物についての３次元仮想空間内の位置を、対応する搬送機の移動量に基づいてそれぞれ更新するとともに、処理装置により把持されている対象物の３次元仮想空間内の位置を、処理装置の挙動に関連付けて更新する、トラッキング手段と、３次元仮想空間内の各対象物の位置に基づいて、処理装置の挙動についての制御指令を生成する生成手段とを含む。トラッキング手段は、搬送面から予め定められた範囲内に処理装置が対象物を配置すると、当該対象物と当該搬送面とを互いに関連付けて、当該対象物の位置を更新する。
【００１０】
好ましくは、トラッキング手段は、いずれかの搬送面に配置されたとみなされる第１の対象物の表面から予め定められた範囲内に処理装置が第２の対象物を配置すると、当該第１の対象物および当該第２の対象物の位置を互いに関連付けて更新する。
【００１１】
好ましくは、トラッキング手段は、３次元仮想空間内の対象物の高さに応じて、予め定められた範囲の大きさを決定する。
【００１２】
好ましくは、予め定められた範囲の大きさの設定を受付ける入力手段をさらに備える。
好ましくは、予め定められた範囲を示す３次元仮想空間内の領域を半透明のオブジェクトで表現される。
【００１３】
好ましくは、トラッキング手段は、搬送面から予め定められた範囲内に処理装置が対象物を配置すると、当該対象物が当該搬送面と接するように、３次元仮想空間内の当該対象物の高さ方向の位置を更新する。
【００１４】
好ましくは、トラッキング手段は、処理装置が対象物を配置した範囲内に、搬送面および第２の対象物が存在する場合に、予め定められた優先度に従って、当該対象物を搬送面および第２の対象物のうちいずれか一方と関連付ける。
【００１５】
好ましくは、トラッキング手段は、処理装置が対象物の把持を開放したときの３次元仮想空間内の水平方向の速度に応じて、３次元仮想空間内の当該対象物の水平方向の位置を補正する。
【００１６】
好ましくは、シミュレーション装置は、３次元仮想空間内の搬送面に予め設定される領域に関連付けて、被写体として対象物の少なくとも一部を含む入力画像に対する画像計測処理を行う計測手段をさらに含む。トラッキング手段は、計測手段による対象物の検出に応答して、３次元仮想空間内に当該検出された対象物を出現させる。
【００１７】
本発明の別の局面によれば、配置された対象物を連続的に移動させる搬送面を有する搬送機と、対象物を把持して搬送面に配置可能な処理装置とを含むシステムの挙動を推定するコンピュータによって実行されるシミュレーション方法が提供される。シミュレーション方法は、システムを３次元仮想空間内に仮想的に構築するステップと、搬送面に配置された複数の対象物についての３次元仮想空間内の位置を、対応する搬送機の移動量に基づいてそれぞれ更新するとともに、処理装置により把持されている対象物の３次元仮想空間内の位置を、処理装置の挙動に関連付けて更新するステップと、３次元仮想空間内の各対象物の位置に基づいて、処理装置の挙動についての制御指令を生成するステップとを含む。更新するステップは、搬送面から予め定められた範囲内に処理装置が対象物を配置すると、当該対象物と当該搬送面とを互いに関連付けて、当該対象物の位置を更新するステップを含む。
【００１８】
本発明のさらに別の局面によれば、配置された対象物を連続的に移動させる搬送面を有する搬送機と、対象物を把持して搬送面に配置可能な処理装置とを含むシステムの挙動を推定するシミュレーションプログラムが提供される。シミュレーションプログラムはコンピュータに、システムを３次元仮想空間内に仮想的に構築するステップと、搬送面に配置された複数の対象物についての３次元仮想空間内の位置を、対応する搬送機の移動量に基づいてそれぞれ更新するとともに、処理装置により把持されている対象物の３次元仮想空間内の位置を、処理装置の挙動に関連付けて更新するステップと、３次元仮想空間内の各対象物の位置に基づいて、処理装置の挙動についての制御指令を生成するステップとを実行させる。更新するステップは、搬送面から予め定められた範囲内に処理装置が対象物を配置すると、当該対象物と当該搬送面とを互いに関連付けて、当該対象物の位置を更新するステップを含む。
【発明の効果】
【００１９】
本発明によれば、搬送機の搬送面上ではなく、その近傍に対象物が配置されるようなアプリケーションであっても、現実の対象物の挙動を反映したシミュレーションを実現できる。
【図面の簡単な説明】
【００２０】
【図１】本実施の形態に係るシミュレーション装置でのシミュレーションの対象となるシステム構成例を示す模式図である。
【図２】本実施の形態に係るシミュレーション装置を用いたシミュレーションの方法を説明するための模式図である。
【図３】本実施の形態に係るシミュレーション装置が想定するアプリケーションの一例を説明するための模式図である。
【図４】本実施の形態に係るシミュレーション装置における接地判定高さを説明するための模式図である。
【図５】本実施の形態に係るシミュレーション装置における接地判定高さを説明するための別の模式図である。
【図６】本実施の形態に係るシミュレーション装置のハードウェア構成を示す模式図である。
【図７】本実施の形態に係るシミュレーション装置の機能構成を示す模式図である。
【図８】本実施の形態に係るシミュレーション装置を用いたシミュレーションの処理手順を示すフローチャートである。
【図９】図８に示すステップＳ２８の前半部分の詳細な処理手順を示すフローチャートである。
【図１０】本実施の形態に係るシミュレーション装置による３次元仮想空間内に構築されるシステムモデルを視覚化した一例を示す図である。
【図１１】本実施の形態に係るシミュレーション装置における接地判定高さを設定するユーザインターフェイス画面の一例を示す模式図である。
【図１２】本実施の形態に係るシミュレーション装置において接地判定高さがゼロに設定されたときの接地判定範囲を説明するための模式図である。
【図１３】本実施の形態に係るシミュレーション装置における接触判定マージンを説明するための模式図である。
【図１４】本実施の形態に係るシミュレーション装置における他のワークとの接触判断の概要を説明するための模式図である。
【図１５】図８に示すステップＳ２８の後半部分の詳細な処理手順を示すフローチャートである。
【図１６】本実施の形態に係るシミュレーション装置におけるワーク同士の関連付けを説明するための模式図である。
【図１７】本実施の形態に係るシミュレーション装置によるシミュレーション結果を視覚化した一例を示す図である。
【図１８】本実施の形態に係るシミュレーション装置における高さ方向の位置補正を説明するための模式図である。
【図１９】本実施の形態に係るシミュレーション装置におけるワークの位置補正処理を説明するための模式図である。
【発明を実施するための形態】
【００２１】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【００２２】
＜Ａ．シミュレーション＞
まず、本実施の形態に係るシミュレーション装置が提供するシステムの挙動を推定するためのシミュレーションについて説明する。
【００２３】
本実施の形態に係るシミュレーション装置は、配置された対象物を連続的に移動させる搬送面を有する搬送機と、対象物を把持して搬送面に配置可能な処理装置とを含むシステムの挙動を推定（シミュレーション）する。
【００２４】
以下の説明では、配置された対象物を連続的に移動させる搬送面を有する搬送機の一例として、１または複数のコンベアを採用するとともに、対象物を把持して搬送面に配置可能な処理装置の一例として１または複数のロボットを想定する。但し、搬送機および処理装置については、これらに限られることなく、対象のシステムに応じて適宜選択される。以下では、対象物を「ワーク」とも称し、ワークとしては、最終生成物あるいはその一部、または、中間生成物あるいはその一部など、その位置をトラッキング可能なものであれば、どのようなものであってもよい。
【００２５】
先に、本実施の形態に係るシミュレーション装置でのシミュレーションの概要について説明する。
【００２６】
図１は、本実施の形態に係るシミュレーション装置でのシミュレーションの対象となるシステム構成例を示す模式図である。図１を参照して、一例として、コンベアトラッキングシステム１では、コンベア２３０上を連続的に搬送されるワーク２３２が所定のトラッキングエリア２３１まで到達すると、トラッキングエリア２３１内のワーク２３２をロボット２１０で把持して、コンベア２４０まで搬送し、コンベア２４０上のトラッキングエリア２３５に配置する。このようなロボット２１０による把持・搬送・配置の一連の動作は、「ピック＆プレース動作」とも称される。説明の便宜上、把持されるワークを搬送するコンベアを「ピック側コンベア」とも称し、ワークが配置されるコンベアを「プレース側コンベア」とも称す。
【００２７】
ロボット２１０によるピック＆プレース動作は、コンベア２３０の一部に設定された撮像エリア２２１を撮像部２２２にて撮像するとともに、視覚センサ２２０が撮像部２２２の撮像により取得された入力画像に対してパターンマッチングなどの画像計測処理を行うことで、ワーク２３２の位置、種別、向きなどの情報を含む計測結果が取得される。
【００２８】
制御装置２００は、視覚センサ２２０からの計測結果に基づいて、予め設定された制御ロジックを実行することで、ワーク２３２の位置を順次更新（すなわち、トラッキング）するとともに、ロボット２１０に対する制御指令を生成する。制御装置２００としては、典型的には、プログラマブルコントローラ（以下「ＰＬＣ」とも称す。）を用いて実装される。
【００２９】
制御装置２００は、ロボット２１０に対する制御指令を生成する際には、ロボット２１０の状態値、コンベア２３０を駆動する駆動ローラ２３４に結合されたエンコーダ２３６からのエンコーダ値（エンコーダ値１）、および、コンベア２４０を駆動する駆動ローラ２４４に結合されたエンコーダ２４６からのエンコーダ値（エンコーダ値２）を参照する。制御装置２００および視覚センサ２２０は、ネットワーク２０２を介してデータ通信可能に接続されており、視覚センサ２２０からの計測結果は、ネットワーク２０２を介して、制御装置２００へ伝送される。
【００３０】
図１に示すようなコンベアトラッキングシステム１を導入するにあたって、処理能力（タクトタイムなど）および処理の精度などを事前に評価したいというニーズが存在する。すなわち、コンベアトラッキングシステム１を現実に作成して、その処理能力を検討することが、コスト的または時間的な制約上、不可能な場合も多い。本実施の形態に係るシミュレーション装置は、このようなコンベアトラッキングシステム１の挙動をより簡便に推定したいというニーズに対処するものである。そこで、本実施の形態に係るシミュレーション装置は、シミュレーション対象のシステムを３次元仮想空間内に仮想的に構築することで、より効率的なシミュレーションを実現する。
【００３１】
図２は、本実施の形態に係るシミュレーション装置を用いたシミュレーションの方法を説明するための模式図である。図２を参照して、シミュレーション装置は、シミュレーション対象のコンベアトラッキングシステム２全体をモデル化するとともに、撮像部２２２での撮像を模擬するために、任意の入力画像がこのシステムモデルに与えられる。
【００３２】
コンベアトラッキングシステム２のシステムモデルに与えられる入力画像としては、設計上想定されている仕様（例えば、ワーク２３２の移動速度または時間あたりの個数など）を表現できる入力画像が利用される。典型的には、類似の製造ラインにて現実に撮像された入力画像を用いることが想定される。
【００３３】
シミュレーションに用いられる入力画像としては、既存のシステム（例えば、シミュレーション対象のシステムが更新後のシステムである場合の更新前のシステム）にて撮像されたものが想定されるが、これに限らず、任意のシステムおよび状況において撮像されたものを用いてもよい。すなわち、シミュレーションの対象物（典型的には、ワーク２３２）についての時間的変化の情報を含むものであれば、どのような入力画像を用いてもよい。
【００３４】
また、入力画像としては、動画像データであってもよいし、時系列に並べられた複数の静止画像データであってもよい。さらに、動画像データの再生速度、または、複数の静止画像データの更新速度を適宜調整することで、制御対象となる対象物の時間的変化（すなわち、移動速度）を調整することもできる。システムモデルに対して与える入力画像をこのように調整することで、制御対象の時間的変化の最適値などについても、シミュレーションにて決定することもできる。
【００３５】
さらに、複数の静止画像としては、現実に連続的に撮像した画像ではなく、異なるシーンで撮像された複数の画像を適宜並べて時間的に変化させたものとして取り扱うことで、動入力画像とみなしてもよい。この場合、生成される複数の画像間には、ワークの重なりは生じなくなるが、シミュレーションを実施する際の事実上の問題はない。
【００３６】
＜Ｂ．概要＞
次に、本実施の形態に係るシミュレーション装置によるシミュレーションにおける処理の概要について説明する。
【００３７】
ピック＆プレース動作が適用されるアプリケーションでは、ワークは、コンベアの搬送面ではなく、搬送面よりも上側に配置、すなわち、ロボットがワークをコンベアの搬送面より上側のある位置で離すような場合がある。これは、コンベアとの接触によってワークが破損することを防止するなどのためである。
【００３８】
図３は、本実施の形態に係るシミュレーション装置が想定するアプリケーションの一例を説明するための模式図である。図３（Ａ）を参照して、ロボットのロボットアーム２１４の先端には、ワークを吸着するためのロボットツール２１６が装着されている。ロボットツール２１６は、例えば、空気式の吸着装置であり、負圧を発生させることでワークを把持する。ロボットは、例えば、図示しないピック側のコンベア上のワークを把持して、プレース側のコンベア２４０の搬送面より上側でロボットツール２１６によるワークの吸着を解除する。ワークは、重力によってコンベア２４０の搬送面に着地し、そのまま搬送されることになる。
【００３９】
また、複数の工程でそれぞれ別のワークを配置するようなアプリケーションも想定される。この場合にも、先に配置されているワークの上側から別のワークを離すことになる。
【００４０】
図３（Ｂ）を参照して、例えば、あるワーク２４２が先に配置されており、このワーク２４２上にワーク２３２をさらに配置するようなアプリケーションも想定される。このような場合にも、ワーク２４２は、ワーク２３２の上部で吸着が解除される。なお、図３（Ｂ）に示されるようなアプリケーションは、例えば、同一の容器内に複数のワークを順次挿入するような工程にも適用可能である。
【００４１】
従来のシミュレーション技術では、図３に示すようなアプリケーションにおいては、ワークの吸着が解除された（すなわち、ワークが配置された）位置がコンベアの搬送面上にはないため、ワークがコンベア上に配置されたとは判定されなかった。すなわち、シミュレーションにおいては、ワークに生じる重力の影響を考慮できないため、図３に示すようなアプリケーションを正確にシミュレーションすることは容易ではなかった。
【００４２】
このような課題に対して、本実施の形態に係るシミュレーション装置は、ワークが搬送機の搬送面より上側に配置されたようなアプリケーションについても、より現実の挙動に近い状態でシミュレーションを可能にする。
【００４３】
図４は、本実施の形態に係るシミュレーション装置における接地判定高さを説明するための模式図である。図４を参照して、コンベア２４０の搬送面からから予め定められた範囲として、接地判定高さが設定される。ロボットアーム２１４の先端に装着されているロボットツール２１６からワークが離されたタイミングで、ワーク２３２の一部が接地判定高さとして規定される領域内に入っていれば、ワーク２３２がコンベア２４０に接地したとみなされ、ワーク２３２はコンベア２４０と同期して移動するように処理される。なお、図４に記載のロボットツール２１６に吸着されたワーク２３２は、ロボットツール２１６からワークが離される直前の状態を示す。
【００４４】
このように、本実施の形態に係るシミュレーション装置においては、プレース側のコンベア２４０について、接地判定の高さが設定可能になっている。なお、シミュレーション対象のシステムモデルを３次元仮想空間内に表示する際に、接地判定高さで定義される領域を示すオブジェクト２５０を併せて表示するようにしてもよい。このオブジェクト２５０は、３次元仮想空間内でのワーク２３２の表示を妨げないように、半透明（すなわち、所定の透過率をもった有色）のオブジェクトを用いてもよい。すなわち、接地判定高さで定義される範囲を示す３次元仮想空間内の領域が半透明のオブジェクトで表現されてもよい。
【００４５】
図４に示すように、ピック＆プレース動作によって、配置されたワーク２３２がオブジェクト２５０と接触すると、ワーク２３２がコンベア２４０に直接接触していなくても、コンベア２４０の進行と同期してワーク２３２も移動することになる。
【００４６】
図５は、本実施の形態に係るシミュレーション装置における接地判定高さを説明するための別の模式図である。図５に示すように、複数のワーク２４２，２３２が存在する場合にも同様に、接地判定高さで定義される領域内に一部が存在していれば、コンベア２４０の移動と同期して、これらのオブジェクトも移動することになる。なお、図５に記載のロボットツール２１６に吸着されたワーク２３２は、ロボットツール２１６からワークが離される直前の状態を示す。
【００４７】
このように、シミュレーション装置１００は、搬送面から予め定められた範囲内にロボットがワークを配置すると、ワークと搬送面とを互いに関連付けて、ワークの位置を更新する。これによって、ワークに生じる重力を考慮していないシミュレーションにおいて、ワークが搬送機の搬送面から離れた位置で離された場合であっても、現実に生じる重力を考慮した場合と実質的に同様のシミュレーションを実現できる。
【００４８】
＜Ｃ．シミュレーション装置のハードウェア構成＞
次に、本実施の形態に係るシミュレーション装置１００のハードウェア構成について説明する。本実施の形態に係るシミュレーション装置１００は、典型的には、１または複数のコンピュータがプログラムを実行することで実現される。
【００４９】
図６は、本実施の形態に係るシミュレーション装置１００のハードウェア構成を示す模式図である。図６を参照して、シミュレーション装置１００は、一例として、汎用的なコンピュータアーキテクチャに準じて構成されるコンピュータからなる。シミュレーション装置１００は、プロセッサ１０２と、主メモリ１０４と、入力部１０６と、表示部１０８と、ネットワークインターフェイス１１０と、ハードディスク（ＨＤＤ：Hard Disk Drive）１２０と、光学ドライブ１１２と、通信インターフェイス１１６とを含む。これらのコンポーネントは、内部バス１１８を介して互いに通信可能に接続されている。
【００５０】
プロセッサ１０２は、ハードディスク１２０に格納されているプログラムを主メモリ１０４に展開して実行することで、後述するような機能および処理を実現する。主メモリ１０４は、揮発性メモリにより構成され、プロセッサ１０２によるプログラム実行に必要なワークメモリとして機能する。
【００５１】
入力部１０６は、典型的には、キーボード、マウス、タッチパネル、タッチパッドなどからなり、ユーザからの操作を受付ける。表示部１０８は、ディスプレイ、インジケータなどからなり、ユーザに対して各種情報を提示する。
【００５２】
ネットワークインターフェイス１１０は、サーバ装置などの外部機器との間でネットワークを介してデータを遣り取りする。光学ドライブ１１２は、光学ディスク１１４などから、その中に格納されている各種プログラムを読み出して、ハードディスク１２０にインストールする。通信インターフェイス１１６は、例えば、ＵＳＢ（Universal Serial Bus）などの通信インターフェイスからなり、補助記憶装置などの外部機器との間でローカル通信を介してデータを遣り取りする。
【００５３】
ハードディスク１２０は、ＯＳ（Operating System）１２２およびシミュレーションプログラム１２４などのシミュレーション装置１００として機能するために必要なプログラムを格納するとともに、シミュレーションに用いる予め取得された入力画像である画像データ群１４０についても格納する。
【００５４】
図６には、光学ドライブ１１２を介して必要なプログラムをシミュレーション装置１００にインストールする構成例を示すが、これに限られることなく、ネットワーク上のサーバ装置などからダウンロードするようにしてもよい。
【００５５】
このように汎用コンピュータを用いて実現する場合には、本実施の形態に係る機能を提供するためのプログラムに加えて、コンピュータの基本的な機能を提供するためのＯＳ（Operating System）がインストールされていてもよい。この場合には、本実施の形態に係るシミュレーションプログラムは、ＯＳの一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の順序および／またはタイミングで呼出して処理を実行するものであってもよい。すなわち、本実施の形態に係るプログラムは、上記のようなモジュールを含んでおらず、ＯＳと協働して処理が実行される場合もある。そのため、本実施の形態に係るプログラムとしては、このような一部のモジュールを含まない形態であってもよい。
【００５６】
本実施の形態に係るプログラムは、他のプログラムの一部に組込まれて提供されるものであってもよい。その場合にも、プログラム自体には、上記のような組合せられる他のプログラムに含まれるモジュールを含んでおらず、当該他のプログラムと協働して処理が実行される。すなわち、本実施の形態に係るシミュレーションプログラムとしては、このような他のプログラムに組込まれた形態であってもよい。
【００５７】
図６には、汎用コンピュータによってシミュレーション装置１００を実現する例を示すが、これに限られることなく、その全部または一部を専用回路（例えば、ＡＳＩＣ（Application Specific Integrated Circuit）など）を用いて実現してもよい。さらに、一部の処理を外部装置に担わせるようにしてもよい。
【００５８】
図６には、本実施の形態に係るシミュレーション装置１００が単一の装置によって実装される例を示すが、複数の装置が連携してシミュレーション装置１００を実現してもよい。すなわち、本実施の形態に係るシミュレーション装置１００は、複数の独立した装置の組み合わせによって構成されるシステムも含み得る。
【００５９】
＜Ｄ．シミュレーション装置の機能構成＞
次に、本実施の形態に係るシミュレーション装置１００の機能構成について説明する。
【００６０】
図７は、本実施の形態に係るシミュレーション装置１００の機能構成を示す模式図である。図７を参照して、シミュレーション装置１００は、ソフトウェア機能として、視覚センサシミュレータ１５０と、コントローラシミュレータ１６０と、視覚化モジュール１７０と、ユーザインターフェイスモジュール１８０と、システムモデルエミュレータ１９０とを含む。これらの機能モジュール群は、典型的には、プロセッサ１０２がシミュレーションプログラム１２４（いずれも図６参照）を実行することで実現される。
【００６１】
ユーザインターフェイスモジュール１８０は、設定パラメータ１５２、制御プログラム１６２、および、３次元設計データ１８４についてのユーザによる設定・作成を支援するための操作画面などを提供する。また、ユーザインターフェイスモジュール１８０は、視覚化モジュール１７０によるシミュレーション結果の表示に際しても、必要なユーザインターフェイスを提供する。
【００６２】
ユーザインターフェイスモジュール１８０は、３次元設計データ１８４を扱う機能としてモデル構築モジュール１８２を含む。モデル構築モジュール１８２は、シミュレーション対象のシステムを３次元仮想空間内に仮想的に構築する。より具体的には、モデル構築モジュール１８２は、３次元仮想空間を表示するとともに、シミュレーション対象のシステムを当該３次元仮想空間内に構築するための設定・操作画面を提供する。
【００６３】
本実施の形態に係るシミュレーション装置１００においては、典型的には、配置されたワークを連続的に移動させる搬送面を有する搬送機（典型例として、コンベア）と、ワークを把持して搬送面に配置可能な処理装置（典型例として、ロボット）とを含むシステムが３次元仮想空間内に仮想的に構築される。さらに、図２に示すように、システムモデル内に視覚センサ２２０の撮像エリア２２１が設定される。図２に示すようなピック＆プレース動作に向けられたシステムモデルにおいては、ワークを把持（ピック）するエリア（トラッキングエリア２３１）、および、ワークを配置（プレース）するエリア（トラッキングエリア２３５）が設定されてもよい。
【００６４】
視覚センサシミュレータ１５０は、視覚センサ２２０での処理を模擬するモジュールであり、３次元仮想空間内の搬送経路（コンベア）上に予め設定される撮像エリア２２１に関連付けて、被写体としてワークの少なくとも一部を含む入力画像に対する画像計測処理を行う。より具体的には、視覚センサシミュレータ１５０は、コントローラシミュレータ１６０からの取込指令（典型例として、トリガー信号）に応答して、予め取得された画像データ群１４０のうち対象の画像データを取込んで、予め設定された設定パラメータ１５２に従って画像計測処理を行う。
【００６５】
視覚センサシミュレータ１５０での画像計測処理により得られた計測結果は、コントローラシミュレータ１６０へ出力される。すなわち、図１に示すコンベアトラッキングシステムにおける、ネットワーク２０２を介した、視覚センサ２２０から制御装置２００への計測結果の伝送に相当する処理が実行される。
【００６６】
コントローラシミュレータ１６０は、視覚センサシミュレータ１５０による計測結果、および、３次元仮想空間内の各ワークの位置に基づいて、処理装置の一例であるロボットの挙動についての制御指令を生成する制御演算を実行する。コントローラシミュレータ１６０は、制御装置２００（図１参照）での処理を模擬するモジュールであり、予め作成された制御プログラム１６２に従って、制御演算（シーケンス命令、モーション命令、各種機能命令など）を実行する。
【００６７】
コントローラシミュレータ１６０で実行される制御演算は、視覚センサシミュレータ１５０に対して画像データの取込指令（トリガー信号）を生成するための処理を含む。すなわち、コントローラシミュレータ１６０は、予め設定された条件が満たされると、トリガー信号を発生する。予め設定された条件とは、例えばコンベアが所定距離だけ移動したこと、あるいは、予め設定された周期が到来したこと、などを用いることができる。
【００６８】
システムモデルエミュレータ１９０は、システムモデル内の各オブジェクトの属性（各タイミングにおける位置、向き、速度など）をシミュレーションの進行に伴って順次更新する。より具体的には、システムモデルエミュレータ１９０は、モデル構築モジュール１８２にて構築されたシステムモデルに含まる各オブジェクトに対応付けて、オブジェクト属性情報１９２の内容を作成および更新する。
【００６９】
システムモデルエミュレータ１９０は、構築されたシステムモデルに含まれる構成要素が配置された位置などを初期値として設定する。そして、システムモデルエミュレータ１９０は、シミュレーションタイミングの経過に伴って、および、コントローラシミュレータ１６０にて生成される制御指令に基づいて、オブジェクト属性情報１９２に含まれる各オブジェクトの属性値を更新する。より具体的には、システムモデルエミュレータ１９０は、コンベアの搬送面に配置された複数のワークについての３次元仮想空間内の位置を、対応するコンベアの移動量に基づいてそれぞれ更新するとともに、ロボットにより把持されているワークの３次元仮想空間内の位置を、ロボットの挙動に関連付けて更新する、といったトラッキングの処理を司る。
【００７０】
また、システムモデルエミュレータ１９０は、コンベアの移動に関連付けて、当該コンベアの位置または変位を示す情報をコントローラシミュレータ１６０へ出力する。一例として、システムモデルエミュレータ１９０は、基準位置からの変位量を示すエンコーダ値を出力してもよいし、コンベアの単位時間あたりの移動量に比例するパルスを発生してもよい。すなわち、エンコーダ値は、コンベアの位置を示すことになり、単位時間あたりのパルス数は、コンベアの速度を示すことになる。
【００７１】
コントローラシミュレータ１６０は、ロボットに対する制御指令の時系列データ、および、視覚センサシミュレータ１５０による計測結果を含むトレースデータを出力する。システムモデルエミュレータ１９０は、システムモデル内の各オブジェクトの時間的変化などを含むトレースデータを出力する。
【００７２】
視覚化モジュール１７０は、これらのトレースデータを用いて、システムモデルについて実行されたシミュレーションの結果を視覚化する。より具体的には、視覚化モジュール１７０は、定義ファイルである３次元設計データ１８４に基づいて、３次元仮想空間内に仮想的に構築されたシステムを視覚化するとともに、コントローラシミュレータ１６０からのトレースデータに基づいて、システムでのワークおよびロボットの時間的変化などを再現する。視覚化モジュール１７０によるシミュレーション結果の視覚化は、一連のシミュレーションの実行が完了した後に実行されてもよいし、シミュレーションの実行とともに、その結果を随時表示するようにしてもよい。
【００７３】
このように、視覚化モジュール１７０は、シミュレーション結果の時間変化をアニメーションまたは動画の状態でシミュレーション装置１００の表示部１０８（図３）上に表現する。
【００７４】
図７に示す機能構成においては、コントローラシミュレータ１６０が、コントローラシミュレータ１６０による出力されるロボットに対する制御指令の時系列データ、および、視覚センサシミュレータ１５０による計測結果を含むトレースデータを出力するが、これに限らず、視覚化モジュール１７０がそれぞれのデータを合成して、システムの挙動を再現するようにしてもよい。
【００７５】
上述の図７には、コントローラシミュレータ１６０により出力されるトレースデータを用いて、視覚化モジュール１７０が構築されたシステムの挙動を再現する構成例を示すが、必ずしも、シミュレーション装置１００内に視覚化モジュール１７０を実装する必要はない。例えば、コントローラシミュレータ１６０により出力されるトレースデータを外部装置または外部アプリケーションへ出力し、当該外部装置または外部アプリケーションがシステムの挙動を再現するようにしてもよい。あるいは、視覚化モジュール１７０は、システムの挙動を再現するための動画像データを生成して任意の記憶媒体に格納するのみであり、当該動画像データを別のアプリケーションが再生するようにしてもよい。
【００７６】
＜Ｅ．処理手順＞
次に、本実施の形態に係るシミュレーション装置１００を用いたシミュレーションの処理手順について説明する。
【００７７】
図８は、本実施の形態に係るシミュレーション装置１００を用いたシミュレーションの処理手順を示すフローチャートである。図８を参照して、まず、シミュレーション装置１００は、システムモデルの設定を受付ける（ステップＳ２）。システムモデルの設定は、システムを構成する各装置の配置位置、搬送機であるコンベアの移動速度などの設定を含む。システムモデルの設定に基づいて、シミュレーション装置１００（モデル構築モジュール１８２）は、シミュレーション対象のシステム（システムモデル）を３次元仮想空間内に仮想的に構築する。
【００７８】
シミュレーション装置１００（ユーザインターフェイスモジュール１８０）は、システムモデル内に設定される視覚センサの撮像エリアを受付ける（ステップＳ４）。すると、構築されたシステムと設定された撮像エリアとの相対位置関係に基づいて、計測結果を制御演算の入力値に変換するための変換パラメータであるキャリブレーションパラメータが算出される。
【００７９】
続いて、シミュレーション装置１００（ユーザインターフェイスモジュール１８０）は、システムモデルを制御するための制御プログラムを受付ける（ステップＳ６）。この制御プログラムは、システムに関連付けられたプログラムであり、コントローラシミュレータ１６０で実行されることになる。
【００８０】
シミュレーション装置１００（ユーザインターフェイスモジュール１８０）は、視覚センサシミュレータ１５０で実行されるべき画像計測処理の内容設定を受付ける（ステップＳ８）。ここで設定される内容としては、画像計測処理の処理内容の指定、および、指定された処理内容に応じた参照情報（モデル画像、モデル画像から算出される特徴量など）を含む。
【００８１】
以上のような手順により、シミュレーションを行うための設定が完了する。
シミュレーションの開始が指示されると、シミュレーション装置１００（システムモデルエミュレータ１９０）は、システムモデル内の各オブジェクトの属性として初期値を設定する（ステップＳ１０）。より具体的には、シミュレーション装置１００（システムモデルエミュレータ１９０）は、システムモデル内に存在する各ワークの位置、コンベアの位置または移動量を示すエンコーダ値、ロボットの位置などについて、それぞれ初期値を設定する。
【００８２】
続いて、シミュレーション装置１００（システムモデルエミュレータ１９０）は、コンベアのエンコーダ値を、予め定められたシミュレーションの１サイクル経過後の値に更新するとともに、コンベアの搬送面に配置されている各ワークの位置を更新する（ステップＳ１２）。このとき、後述するような互いに関連付けられたワーク同士に対しては、同一の更新量が与えられる。
【００８３】
続いて、シミュレーション装置１００（コントローラシミュレータ１６０）は、更新後のエンコーダ値および各ワークの位置に基づいて、トリガー信号を発生する条件が満たされているか否かを判断する（ステップＳ１４）。
【００８４】
トリガー信号を発生する条件が満たされていれば（ステップＳ１４においてＹＥＳの場合）、仮想的にトリガー信号を発生する（ステップＳ１６）。トリガー信号の発生に応答して、シミュレーション装置１００（視覚センサシミュレータ１５０）は、予め取得された画像データ群のうち対象の画像データを取込み、画像計測処理を実行する（ステップＳ１８）。
【００８５】
シミュレーション装置１００（システムモデルエミュレータ１９０）は、画像計測処理により新たにワークが検出されたか否かを判断する（ステップＳ２０）。画像計測処理により新たにワークが検出されると（ステップＳ２０においてＹＥＳの場合）、シミュレーション装置１００（システムモデルエミュレータ１９０）は、検出されたワークについての新たなオブジェクトを生成する（ステップＳ２２）。すなわち、シミュレーション装置１００（システムモデルエミュレータ１９０）は、視覚センサシミュレータ１５０によるワークの検出に応答して、３次元仮想空間内に当該検出されたワークを出現させる。このとき、生成された新たなオブジェクトの位置は、撮像エリアの位置および計測結果に含まれるローカル座標値に基づいて算出される。
【００８６】
画像計測処理により新たにワークが検出されていなければ（ステップＳ２０においてＮＯの場合）、ステップＳ２２の処理はスキップされる。
【００８７】
一方、トリガー信号を発生する条件が満たされていなければ（ステップＳ１４においてＮＯの場合）、ステップＳ１６〜Ｓ２２の処理はスキップされる。
【００８８】
続いて、シミュレーション装置１００（コントローラシミュレータ１６０）は、更新後のエンコーダ値および各ワークの位置に基づいて、制御プログラム１６２に従って制御演算を実行し、制御指令を生成する（ステップＳ２４）。シミュレーション装置１００（システムモデルエミュレータ１９０）は、生成された制御指令に基づいて、ロボットの位置および関連するワークの位置を更新する（ステップＳ２６）。例えば、ロボットがいずれかのワークを把持または搬送すると、そのロボットの挙動に応じて、対象のワークの位置が更新される。または、ロボットがワークを配置（例えば、吸着を解除）すると、対象のワークの位置および状態が更新される。
【００８９】
そして、シミュレーション装置１００（システムモデルエミュレータ１９０）は、更新後のワークの位置に基づいて、ワークがコンベアの搬送面に接地したか、または、他のワークに接触したか否かを判断する（ステップＳ２８）。ワークがコンベアの搬送面に接地、または、他のワークに接触したと判断されると（ステップＳ２８においてＹＥＳの場合）、シミュレーション装置１００（システムモデルエミュレータ１９０）は、対象のワークとコンベアまたは対象のワーク同士を関連付ける（ステップＳ３０）。
【００９０】
シミュレーション装置１００は、予め設定されているシミュレーション期間が満了したか否かを判断する（ステップＳ３２）。予め設定されているシミュレーション期間が満了していなければ（ステップＳ３２においてＮＯの場合）、ステップＳ１２以下の処理が繰返される。
【００９１】
これに対して、予め設定されているシミュレーション期間が満了していれば（ステップＳ３２においてＹＥＳの場合）、シミュレーションは終了する。
【００９２】
シミュレーションの終了後、シミュレーションによって生成されたトレースデータを用いて、システムの挙動を視覚化するようにしてもよい。
【００９３】
＜Ｆ．搬送面への接地判断の詳細＞
次に、ワークがコンベアの搬送面に接地したか否かを判断する処理（図８のステップＳ２８の前半の処理）について詳細を説明する。
【００９４】
図９は、図８に示すステップＳ２８の前半部分の詳細な処理手順を示すフローチャートである。図９を参照して、シミュレーション装置１００（コントローラシミュレータ１６０）は、ロボットツールに対して吸着を解除する制御指令が生成されたか否かを判断する（ステップＳ２８０１）。ロボットツールに対して吸着を解除する制御指令が生成されていなければ（ステップＳ２８０１においてＮＯの場合）、シミュレーション装置１００は、吸着が解除されたロボットツールに追従していたいずれのワークもコンベアの搬送面に接地されていないと判断する（ステップＳ２８０２）。そして、図８のステップＳ２８以降の処理へ戻る。
【００９５】
これに対して、ロボットツールに対して吸着を解除する制御指令が生成されていれば（ステップＳ２８０１においてＹＥＳの場合）、シミュレーション装置１００は、制御指令の対象となったロボットツールが吸着していたワークの最下点の座標値を取得し（ステップＳ２８０３）、コンベアからワークの最下点までの距離（図４に示される距離ｄなどに相当）を算出する（ステップＳ２８０４）。
【００９６】
シミュレーション装置１００は、算出されたコンベアからワークの最下点までの距離が予め設定された接地判定高さ以下であるか否かを判断する（ステップＳ２８０５）。算出された距離が予め設定された接地判定高さを超えていれば（ステップＳ２８０５においてＮＯの場合）、シミュレーション装置１００は、吸着が解除されたロボットツールに追従していたいずれのワークもコンベアの搬送面に接地されていないと判断する（ステップＳ２８０６）。そして、後述する図１５のステップＳ２８１１以降の処理へ進む。
【００９７】
これに対して、算出された距離が予め設定された接地判定高さ以下であれば（ステップＳ２８０５においてＹＥＳの場合）、シミュレーション装置１００は、対象のワークがコンベアの搬送面に接地されたと判断する（ステップＳ２８０７）。そして、図８のステップＳ２８以降の処理へ戻る。
【００９８】
図１０は、本実施の形態に係るシミュレーション装置１００による３次元仮想空間内に構築されるシステムモデルを視覚化した一例を示す図である。本実施の形態に係るシミュレーション装置１００は、３次元仮想空間内のモデルを任意の方向からレンダリングすることができる。すなわち、視覚化されるシステムモデルの視点はユーザが任意に変更できる。
【００９９】
図１０を参照して、把持（ピック）されるワークを搬送するコンベア２３０、および、配置（プレース）されたワークを搬送するコンベア２４０が並列に配置されている。そして、コンベア２３０およびコンベア２４０に対応付けて、２つのロボット３１１および３１３が配置されている。このシステムモデルでは、紙面左側から紙面右側に向けてワーク２３２がコンベア２３０により搬送される。ワーク２３２が予め設定されたトラッキングエリア２３１またはトラッキングエリア２３３に到着すると、それぞれロボット３１１またはロボット３１３が到着したワーク２３２を把持して、コンベア２４０にワークを配置（プレース）する。ロボット３１１およびロボット３１３は、それぞれコンベア２４０に関連付けて設定されたトラッキングエリア２３５および２３７にワーク２３２を配置する。コンベア２３０を搬送されるワーク２３２はランダムな方向を向いているが、コンベア２４０に配置される場合には、予め設定された向きに揃えられるとする。
【０１００】
アプリケーションの一例として、コンベア２３０上には、少なくとも２種類のワーク２３２が存在する。ロボット３１１は、ある特定の種別のワークをピック＆プレースするように制御され、ロボット３１３は、別の種別のワークをピック＆プレースするように制御される。ワークの形状などが種別に応じて異なっている場合もあり、このような場合には、各種別のワークにそれぞれ適したロボットツールを装着したロボットを専用化して使用することが好ましいからである。
【０１０１】
３次元仮想空間において、コンベア２４０の上側には、接地判定高さで定義される領域を示す、半透明（所定の透過率をもった有色）のオブジェクト２５０が重ねて表示されている。このオブジェクト２５０は、ユーザの設定操作によって、非表示とすることもできる。このようなオブジェクト２５０を表示することで、ユーザは、システムモデルにおいて接地判定高さがどの範囲に設定されているのかを一見して把握することができる。
【０１０２】
接地判定高さについては、シミュレーション対象のシステム（アプリケーション）に応じて、任意に設定できるようにしてもよい。すなわち、シミュレーション装置１００は、接地判定高さ（接地したと判定される予め定められた範囲の大きさ）の設定を受付ける入力手段を有するようにしてもよい。
【０１０３】
図１１は、本実施の形態に係るシミュレーション装置１００における接地判定高さを設定するユーザインターフェイス画面の一例を示す模式図である。図１１（Ａ）を参照して、設定入力画面３００は、接地判定高さを入力するための入力欄３０２を有しており、ユーザは、この入力欄３０２に、直接またはボタン３０４を操作して、所望の値を入力することができる。
【０１０４】
さらに、ワークの種別（品種や形状など）に応じて、それぞれ別々の接地判定高さを設定できるようにしてもよい。図１１（Ｂ）に示す設定入力画面３１０は、種別１のワーク用の入力欄３１２と、種別２のワーク用の入力欄３１６とを有している。ユーザは、入力欄３１２に対しては、直接またはボタン３１４を操作して、また、入力欄３１６に対しては、直接またはボタン３１８を操作して、それぞれ所望の接地判定高さを入力することができる。
【０１０５】
なお、接地判定高さがゼロに設定されたとしても、判定誤差などを吸収するために、ある程度のマージンを設定しておくことが好ましい。
【０１０６】
図１２は、本実施の形態に係るシミュレーション装置１００において接地判定高さがゼロに設定されたときの接地判定範囲を説明するための模式図である。図１２に示すように、接地判定高さがゼロに設定されたとしても、コンベア２４０（プレース側コンベア）上には、所定高さの接地と判定される領域（図１０に示すオブジェクト２５０に相当）が設定される。この領域の高さとしては、システムモデルでの位置管理の精度に応じて設定される。
【０１０７】
このような接地判定高さにマージンを設定することで、ワークがコンベアと接触したか否かを判断する処理（接触判定）において、コンベアに接触間近の位置でワークがロボットによって離されたような場合に、接触しているとは判断されない不具合を防止することができる。
【０１０８】
＜Ｇ．他のワークとの接触判断の詳細＞
次に、ワークが他のワークに接触したか否かを判断する処理（図８のステップＳ２８の後半の処理）について詳細を説明する。すなわち、上述の図３（Ｂ）を参照して説明したように、先に搬送面に配置されているワークに他のワークが積み重ねて配置されるような場合を想定する。
【０１０９】
図１３は、本実施の形態に係るシミュレーション装置１００における接触判定マージンを説明するための模式図である。図１３（Ａ）を参照して、コンベアの搬送面に配置されたワーク２３２には、他のワークとの接触を判定するための余裕量として、接触判定マージンがワーク２３２の周囲に設定される。接触判定マージンによって規定される領域２６０内に、ワークが配置されると、２つのワークは互いに関連付けられて、コンベアに同期して移動するように処理される。図１０に示すような接地判定高さで定義される領域を示すオブジェクト２５０と同様に、領域２６０を半透明のオブジェクトなどを用いて視覚化してもよい。この視覚化によって、ユーザは接触判定マージンにて規定される領域を一見して把握できる。
【０１１０】
接触判定マージンをワーク２３２の周囲に設定するのは、例えば、同一の容器に複数のワークを配置するようなシステムでは、先行のワークの上に別のワークを厳密に重ねる必要はなく、先行のワークの周囲に別のワークを配置すれば済む。このようなシステムにおいては、ワーク２３２の上面だけではなく、その周囲にも接触判定マージンを設定することが好ましい。また、コンベアの搬送面におけるワーク２３２の向きが不定であるシステムにおいては、ワーク２３２の特定の面についてのみ接触判定マージンを設定するのではなく、全周にわたって接触判定マージンを設定することが好ましい。一方で、ワーク同士を重ねるアプリケーションであれば、接触判定マージンをワーク２３２の上面側にのみ設定するようにしてもよい。
【０１１１】
図１３（Ｂ）には、図１３（Ａ）のＡ−Ａ断面図を示す。接触判定マージンを含む判定領域の大きさ（領域高さＨｍ）は任意に設定することができるが、ワーク２３２の高さを基準に決定してもよい。例えば、３次元仮想空間内のワーク２３２の高さに応じて、接触判定マージンの大きさを決定してもよい。例えば、以下のような数式に従って、ワーク２３２の高さの定数倍から領域高さＨｍを算出してもよい。
【０１１２】
領域高さＨｍ＝α×ワークの高さｈ
接触判定マージン＝（α−１）×ワークの高さｈ
但し、α＞１（ｃｏｎｓｔ）
あるいは、上述の図１１に示すユーザインターフェイス画面と同様に、ユーザが、接触判定マージンの大きさを任意に設定できるようにしてもよい。
【０１１３】
さらに、ワークの各面ごとにそれぞれ独立した接触判定マージンを設定してもよいし、ワークの種別（品種や形状など）に応じて、それぞれ別々の接触判定マージンを設定できるようにしてもよい。
【０１１４】
図１４は、本実施の形態に係るシミュレーション装置における他のワークとの接触判断の概要を説明するための模式図である。図１４を参照して、ロボットアーム２１４の先端のロボットツール２１６によるワーク２３２の吸着が解除された時点において、ワーク２３２の下側に配置されているワーク２４２との間の距離が算出され、接触判定マージンによって規定されるワーク２４２の領域２６０内に、ワーク２３２が入っていれば、ワーク２３２はワーク２４２に接触していると判断される。
【０１１５】
具体的な算出手順の一例としては、ワーク２３２の重心を基準として、ワーク２３２の重心の真下にあるワーク２４２との距離ｄ１と、ワーク２３２の重心からワーク２３２の底面までの距離ｄ２とが算出される。そして、距離ｄ１と距離ｄ２との差が接触判定マージン以下であれば、ワーク２３２がワーク２４２に接触したと判断される。この場合には、ワーク２３２およびワーク２４２は、一体化して、コンベア２４０と同期して移動するように処理される。
【０１１６】
図１５は、図８に示すステップＳ２８の後半部分の詳細な処理手順を示すフローチャートである。図１５を参照して、シミュレーション装置１００は、制御指令の対象となったロボットが吸着していたワークの真下にいずれかのワークが存在するか否かを判断する（ステップＳ２８１１）。制御指令の対象となったロボットが吸着していたワークの真下にいずれかのワークが存在しなければ（ステップＳ２８１１においてＮＯの場合）、シミュレーション装置１００は、制御指令の対象となったロボットが吸着していたワークは他のワークに接触していないと判断する（ステップＳ２８１２）。そして、図８のステップＳ２８以降の処理へ戻る。
【０１１７】
制御指令の対象となったロボットが吸着していたワークの真下にいずれかのワークが存在していれば（ステップＳ２８１１においてＹＥＳの場合）、シミュレーション装置１００は、対象ワークの重心から当該対象ワークの真下にあるワークまでの距離ｄ１を算出する（ステップＳ２８１３）とともに、対象ワークの重心から当該対象ワークの底面までの距離ｄ２を算出する（ステップＳ２８１４）。そして、シミュレーション装置１００は、距離ｄ１と距離ｄ２との差が接触判定マージン以下であるか否かを判断する（ステップＳ２８１５）。
【０１１８】
距離ｄ１と距離ｄ２との差が接触判定マージン以下であれば（ステップＳ２８１５においてＹＥＳの場合）、シミュレーション装置１００は、対象ワークが他のワークに接触していると判断する（ステップＳ２８１６）。そして、シミュレーション装置１００は、対象ワークが当該対象ワークの真下にあるワークの上に重ねて配置されるように、対象ワークの位置を補正する（ステップＳ２８１７）。すなわち、図１４に示すように、ワーク２３２とワーク２４２との間に存在するいくらかの距離をゼロにするように、ワーク２３２の位置が更新される。そして、図８のステップＳ２８以降の処理へ戻る。
【０１１９】
一方、距離ｄ１と距離ｄ２との差が接触判定マージンを超えていれば（ステップＳ２８１５においてＮＯの場合）、シミュレーション装置１００は、制御指令の対象となったロボットが吸着していたワークは他のワークに接触していないと判断する（ステップＳ２８１２）。そして、図８のステップＳ２８以降の処理へ戻る。
【０１２０】
以上のような処理によって、あるワークが他のワークに接触したか否かが判断される。あるワークが他のワークに接触したと判断されると、当該ワークが他のワークの上に重ねられコンベアに同期して移動するように処理される。
【０１２１】
図１６は、本実施の形態に係るシミュレーション装置におけるワーク同士の関連付けを説明するための模式図である。図１６（Ａ）を参照して、ワーク１とワーク２とが関連付けられると、両ワークの位置に対して、同一の変化量が与えられる。図１６に示す例では、あるタイミングにおいて、ワーク１の座標値（ｘ１，ｙ１，ｚ１）およびワーク２の座標値（ｘ２，ｙ２，ｚ２）であるとする。何らかのイベントによって、図１６（Ｂ）に示すように、ワーク１の座標値が（ｘ１，ｙ１，ｚ１）から（ｘ１＋Δｘ，ｙ１＋Δｙ，ｚ１＋Δｚ）に変化したとする。すると、図１６（Ｃ）に示すように、ワーク２の座標値についても同じ変化量（Δｘ，Δｙ，Δｚ）が与えられ、ワーク２の座標値は（ｘ２，ｙ２，ｚ２）から（ｘ２＋Δｘ，ｙ２＋Δｙ，ｚ２＋Δｚ）に変化する。
【０１２２】
上述したように、本実施の形態に係るシミュレーション装置１００は、いずれかの搬送面に配置されたとみなされる第１のワークの表面から予め定められた範囲（接触判定マージン）内にロボットが第２のワークを配置すると、当該第１のワークおよび当該第２のワークの位置を互いに関連付けて更新する。このように、関連付けられたワークの間で、図１６に示すような処理を実施することで、複数のワークを一体として移動させることができる。
【０１２３】
＜Ｈ．オブジェクト同士の関連付けに対する優先度＞
上述したように、本実施の形態に従うシミュレーション装置１００は、ワークと搬送面とを互いに関連付けて、あるいは、ワークと他のワークとを互いに関連付けて、当該ワークの位置を更新することができる。但し、接地判定／接触判定のタイミングにおいて、１つのワークが搬送面に接地するとともに、他のワークとも接触していると判定される場合もあり得る。このような場合には、対象のワークがいずれのオブジェクトに関連付けるかについて優先度を設定しておくことが好ましい。
【０１２４】
例えば、ワーク２３２がプレース側のコンベア２４０に接地していると判定された場合に、当該プレース側のコンベア２４０に先に配置されている他のワークとも接触していると判定されると、コンベア２４０との関連付けを優先するような設定ができるようにしてもよい。あるいは、その逆で、ワーク２３２の関連付け先を、コンベア２４０ではなく、他のワークを優先するようにしてもよい。
【０１２５】
この優先度の設定としては、プレース側のコンベア２４０に「１」を設定し、他のワークに「２」を設定しておき、複数のオブジェクトとの間で接地／接触判定がなされると、対象となるオブジェクトのうち、より優先度が高いものを選択するようにしてもよい。このような構成を採用することで、意図しないオブジェクトにワークが関連付けられてしまう事態を回避できる。
【０１２６】
このように、本実施の形態に従うシミュレーション装置１００は、ロボット２１０がワークを配置した範囲内に、搬送面および他の対象物が存在する場合に、予め定められた優先度に従って、当該ワークを搬送面および他のワークのうちいずれか一方と関連付ける機能を有する。
【０１２７】
＜Ｉ．ワークの位置更新＞
次に、本実施の形態に係るシミュレーション装置１００によるワーク位置の更新処理について説明する。本実施の形態に従うシミュレーション装置１００では、視覚化モジュール１７０（図７）が入力画像に対してワークを探索するための画像計測処理を実施し、その探索されたワークが３次元仮想空間内に現れることになる。
【０１２８】
画像計測処理の計測結果は、入力画像内の探索された部分（オブジェクト）の中心位置を示す座標値（ｘ，ｙ）を含む。この座標値（ｘ，ｙ）は、画像計測処理で用いられるローカル座標系での値であり、３次元仮想空間内の座標値に変換する必要がある。
【０１２９】
具体的には、シミュレーション装置１００は、画像計測処理で用いられる入力画像に設定されるカメラ座標系の座標（ｘ，ｙ）を、３次元仮想空間を定義するワールド座標系の座標（Ｘ，Ｙ，Ｚ）に変換する変換係数Ａ〜Ｇを用いて、視覚センサシミュレータ１５０にて検出されたワークの座標値（ｘ，ｙ）からコントローラシミュレータ１６０に入力されたときの初期位置を以下のように算出する。
【０１３０】
ワークの初期位置Ｘ０＝Ａ×ｘ＋Ｂ×ｙ＋Ｃ
ワークの初期位置Ｙ０＝Ｄ×ｘ＋Ｅ×ｙ＋Ｆ
ワークの初期位置Ｚ０＝Ｇ
エンコーダ値の１パルスあたりの、コンベアのＸ軸方向の移動量Ｘｄ、Ｙ軸方向の移動量Ｙｄ、コンベアのＺ軸方向の移動量Ｚｄ（但し、基本的にはゼロ）を用いて、エンコーダ値の変位量Ｅｔにおけるワークの位置は、以下のように算出できる。
【０１３１】
ワークの位置（Ｘ）＝Ｘｄ×Ｅｔ＋Ｘ０
ワークの位置（Ｙ）＝Ｙｄ×Ｅｔ＋Ｙ０
ワークの位置（Ｚ）＝Ｚｄ×Ｅｔ＋Ｚ０
なお、エンコーダ値の絶対値を用いる場合には、各ワークが初期表示された時点のエンコーダ値から偏差を上述の算出式に適用することもできる。シミュレーション装置１００は、このような算出式に従って、各ワークの位置を順次更新する。
【０１３２】
＜Ｊ．付加的なオブジェクト＞
上述の説明においては、複数のワーク同士を関連付けてコンベアに同期して移動させるアプリケーションについて説明した。このようなアプリケーションの具体例として、同一の容器に複数のワークを配置するような処理が想定される。このようなアプリケーションのシミュレーションを視覚化する際には、容器についても併せて表示することが好ましい。
【０１３３】
図１７は、本実施の形態に係るシミュレーション装置１００によるシミュレーション結果を視覚化した一例を示す図である。図１７を参照して、コンベア２４０上には、ユーザが予め設定した間隔に沿って、容器に相当する複数のオブジェクト２７０が表示される。オブジェクト２７０の間隔は、例えば、要求される仕様（タクトタイムなど）に基づいて予め設定される。この設定に基づいて、シミュレーション結果を再現する際に、コンベア２４０上にオブジェクト２７０が重ねて表示される。
【０１３４】
オブジェクト２７０の位置は、ワークの配置先を定める基準を示すものとして用いることができる。オブジェクト２７０に加えて、基準線２８０を表示するようにしてもよい。
【０１３５】
オブジェクト２７０の形状・色・大きさなどについても、ユーザが予め任意に設定することができるようにしてもよい。さらに、オブジェクト２７０とワーク２３２との位置関係を一見して把握できるように、オブジェクト２７０を透明または半透明で表示してもよい。
【０１３６】
図１７に示すように、ワーク２３２に加えて、付加的なオブジェクト２７０および／または基準線２８０を仮想的に表示することで、ワークに対する処理が設計どおりに動作しているか否かを視覚的に評価することができる。
【０１３７】
＜Ｋ．ワークの高さ方向の位置補正＞
次に、ワークの高さ方向の位置補正について説明する。図４および図５を参照して説明したように、コンベアの搬送面から接地判定高さの範囲内でワークの吸着が解除されると、ワークはコンベアに接地したとみなされ、ワークはコンベアと同期して移動するように処理される。
【０１３８】
この際、ワークの高さとしては、吸着が解除されたタイミングの高さを維持してもよいし、ワークの高さ方向の位置を補正して、コンベアの搬送面に配置されるようにしてもよい。
【０１３９】
図１８は、本実施の形態に係るシミュレーション装置における高さ方向の位置補正を説明するための模式図である。図１８を参照して、ワーク２３２がコンベアの接地判定高さ以内の位置で吸着が解除されると、高さ方向の位置が補正されて、コンベアの搬送面に配置された上で、コンベア２４０と同期して移動するように処理される。
【０１４０】
図１８に示すように、シミュレーション装置１００（図７のシステムモデルエミュレータ１９０）は、コンベアの搬送面から接地判定高さの範囲内にロボットがワークを配置すると、当該ワークが対象の搬送面と接するように、３次元仮想空間内の当該ワークの高さ方向の位置を更新してもよい。このようなワークの高さ方向の位置補正を行うことで、より現実の挙動に近いシミュレーションを行うことができる。また、ワークを重ねて配置するようなシミュレーションを行う際にも好適である。
【０１４１】
＜Ｌ．ロボットの移動に伴うワークの位置補正＞
次に、ロボットがワークを配置（プレース）する際の挙動を考慮したワークの位置補正について説明する。現実のピック＆プレース動作においては、ワークを配置する直前に、ロボットはワークの配置先であるコンベアの移動速度に併せて水平方向に移動する。すなわち、ロボットとコンベアとの間の相対速度が可能な限りゼロになるようにしてから、ワークの吸着を解除する。
【０１４２】
図１９は、本実施の形態に係るシミュレーション装置１００におけるワークの位置補正処理を説明するための模式図である。図１９（Ａ）を参照して、ワークを配置する直前（時刻Ｔ１）において、ロボットはコンベア２４０の移動速度と同期して水平方向に移動する。
【０１４３】
図１９（Ｂ）に示すように、ロボットアーム２１４の先端のロボットツール２１６によるワークの吸着が解除された直後（Ｔ１＋Δｔ）には、直前のロボットの水平移動に伴う慣性によって、水平方向にある程度の距離（ΔＬ）だけ移動していると考えられる。
【０１４４】
そのため、ロボットからの吸着が解除された時点のワークの位置に対して、この水平方向のオフセット分（距離ΔＬ）を補正した上で、ワークがコンベアの搬送面に接地したか否かを判断するようにしてもよい。すなわち、シミュレーション装置１００（図７のシステムモデルエミュレータ１９０）は、ロボットがワークの把持を開放したときの３次元仮想空間内の水平方向の速度に応じて、３次元仮想空間内の当該ワークの水平方向の位置を補正するようにしてもよい。
【０１４５】
図１９（Ｃ）に示すように、厳密に考えると、ロボットアーム２１４の先端のロボットツール２１６によるワークの吸着が解除された直後（Ｔ１＋Δｔ）には、直前のロボットの水平移動に伴う慣性によって、水平方向にある程度の距離（ΔＬ）だけ移動するとともに、重量によって高さ方向にある程度の距離（ΔＨ）だけ移動していると考えられる。
【０１４６】
そのため、ロボットからの吸着が解除された時点のワークの位置に対して、この水平方向のオフセット分（距離ΔＬ）および高さ方向のオフセット分（距離ΔＨ）を補正した上で、ワークがコンベアの搬送面に接地したか否かを判断するようにしてもよい。
【０１４７】
図１９（Ｂ）および図１９（Ｃ）に示すオフセット分の補正については、直前のロボットの移動速度（および、必要に応じて、加速度）を考慮して、オフセット分の大きさを都度計算するようにしてもよい。あるいは、計算量を低減するために、予め定められた固定値をオフセット分として用いるようにしてもよい。
【０１４８】
このような補正を行うことで、より現実の挙動を反映したシミュレーションを行うことができる。
【０１４９】
＜Ｍ．その他の実施の形態＞
上述の実施の形態においては、ピック側コンベア上を連続的に搬送されるワークを、ロボットで把持してプレース側コンベアまで搬送し、プレース側コンベア上に配置する構成について例示した。但し、把持されるワークがピック側コンベア上を連続的に配置される構成に限定されることなく、静止している複数のワークが（例えば、バラ積みされている）から指定されたワーク、または、任意のワークをロボットで把持するようなアプリケーションにも適用可能である。
【０１５０】
＜Ｎ．利点＞
本実施の形態に係るシミュレーション装置１００によれば、例えば、ピック＆プレース動作などを行うコンベアシステムにおいて、コンベアの搬送面より上側からワークが離されるような態様でワークが搬送面に配置されるような場合であっても、ワークをコンベアの移動に同期付けて適切にトラッキングすることができる。
【０１５１】
また、コンベアの搬送面に先にワークが配置されており、その先に配置されているワークの近傍で別のワークがロボットから離されるような処理がなされる場合であっても、ワーク同士を関連付けて、コンベアの移動に同期付けて両者を適切にトラッキングすることができる。
【０１５２】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１５３】
１，２  コンベアトラッキングシステム、２３２，２４２  ワーク、１００  シミュレーション装置、１０２  プロセッサ、１０４  主メモリ、１０６  入力部、１０８  表示部、１１０  ネットワークインターフェイス、１１２  光学ドライブ、１１４  光学ディスク、１１６  通信インターフェイス、１１８  内部バス、１２０  ハードディスク、１２２  ＯＳ、１２４  シミュレーションプログラム、１４０  画像データ群、１５０  視覚センサシミュレータ、１５２  設定パラメータ、１６０  コントローラシミュレータ、１６２  制御プログラム、１７０  視覚化モジュール、１８０  ユーザインターフェイスモジュール、１８２  モデル構築モジュール、１８４  ３次元設計データ、１９０  システムモデルエミュレータ、１９２  オブジェクト属性情報、２００  制御装置、２０２  ネットワーク、２１０，３１１，３１３  ロボット、２１４  ロボットアーム、２１６  ロボットツール、２２０  視覚センサ、２２１  撮像エリア、２２２  撮像部、２３０，２４０  コンベア、２３１，２３３，２３５  トラッキングエリア、２３４，２４４  駆動ローラ、２３６，２４６  エンコーダ、２５０，２７０  オブジェクト、２６０  領域、２８０  基準線。
【図１】
0006458713.tif 000002
【図２】
0006458713.tif 000003
【図３】
0006458713.tif 000004
【図４】
0006458713.tif 000005
【図５】
0006458713.tif 000006
【図６】
0006458713.tif 000007
【図７】
0006458713.tif 000008
【図８】
0006458713.tif 000009
【図９】
0006458713.tif 000010
【図１０】
0006458713.tif 000011
【図１１】
0006458713.tif 000012
【図１２】
0006458713.tif 000013
【図１３】
0006458713.tif 000014
【図１４】
0006458713.tif 000015
【図１５】
0006458713.tif 000016
【図１６】
0006458713.tif 000017
【図１７】
0006458713.tif 000018
【図１８】
0006458713.tif 000019
【図１９】
0006458713.tif 000020