(57)【特許請求の範囲】
【請求項１】
システムの挙動を推定するシミュレーション装置であって、
搬送機を含むシステムを３次元仮想空間内に仮想的に構築する構築手段を備え、前記搬送機に関連付けられた搬送経路上の第１の場所に視覚センサが仮想配置されるとともに、前記搬送経路上の第２の場所に処理装置が仮想配置されており、
予め取得された画像データに対して前記視覚センサに対応する画像計測処理を行う計測手段と、
前記計測手段による計測結果に基づいて前記処理装置に対する制御指令を生成するとともに、前記計測手段に対して前記画像データの取込指令を生成するための制御演算を実行する実行手段と、
前記取込指令に応じて実行される前記画像計測処理の基準を示す前記搬送機の位置または変位を示す情報を関連付けて、当該取込指令によって取込まれた画像データを格納する格納手段と、
前記実行手段により出力される前記制御演算に係る時系列データと、前記格納手段により格納される画像データに関連付けられる情報とに基づいて、前記構築されたシステムの挙動を再現する再現手段とを備え、
前記計測手段は、前記計測結果に加えて、当該計測結果の生成に用いた画像データに関連付けられる前記搬送機の位置または変位を示す情報を前記実行手段へ出力し、
前記実行手段は、前記計測結果に付随する前記搬送機の位置または変位を示す情報に基づいて、前記３次元仮想空間内の対象物の位置を制御演算の実行時の位置に補正した上で前記制御演算を実行する、シミュレーション装置。
【請求項２】
前記実行手段は、前記計測結果に付随する前記搬送機の位置または変位を示す情報と、前記制御演算を実行する際の前記搬送機の位置または変位を示す情報との差分から、前記対象物の位置について補正量を算出する、請求項１に記載のシミュレーション装置。
【請求項３】
前記再現手段は、前記構築されたシステムの挙動を表示するとともに、前記画像計測処理の対象となった画像データを表示する、請求項１または２に記載のシミュレーション装置。
【請求項４】
前記再現手段は、前記計測結果に付随する前記搬送機の位置または変位を示す情報に基づいて、前記対象物の表示位置を補正する、請求項１〜３のいずれか１項に記載のシミュレーション装置。
【請求項５】
前記搬送機の移動に関連付けて、前記搬送機の位置または変位を示す情報を生成する生成手段をさらに備える、請求項１〜４のいずれか１項に記載のシミュレーション装置。
【請求項６】
前記格納手段は、前記画像データのファイル名、または、前記画像データ内の領域に、前記情報を関連付ける、請求項１〜５のいずれか１項に記載のシミュレーション装置。
【請求項７】
システムの挙動を推定するコンピュータによって実行されるシミュレーション方法であって、
搬送機を含むシステムを３次元仮想空間内に仮想的に構築するステップを備え、前記搬送機に関連付けられた搬送経路上の第１の場所に視覚センサが仮想配置されるとともに、前記搬送経路上の第２の場所に処理装置が仮想配置されており、
予め取得された画像データに対して前記視覚センサに対応する画像計測処理を行うステップと、
前記画像計測処理の計測結果に基づいて前記処理装置に対する制御指令を生成するとともに、前記画像計測処理を開始するための前記画像データの取込指令を生成するための制御演算を実行するステップと、
前記取込指令に応じて実行される前記画像計測処理の基準を示す前記搬送機の位置または変位を示す情報を関連付けて、当該取込指令によって取込まれた画像データを格納するステップと、
前記実行するステップの結果出力される前記制御演算に係る時系列データと、前記格納される画像データに関連付けられる情報とに基づいて、前記構築されたシステムの挙動を再現するステップとを備え、
前記画像計測処理を行うステップは、前記計測結果に加えて、当該計測結果の生成に用いた画像データに関連付けられる前記搬送機の位置または変位を示す情報を前記実行される制御演算へ出力するステップを含み、
前記制御演算を実行するステップは、前記計測結果に付随する前記搬送機の位置または変位を示す情報に基づいて、前記３次元仮想空間内の対象物の位置を制御演算の実行時の位置に補正した上で前記制御演算を実行するステップを含む、シミュレーション方法。
【請求項８】
システムの挙動を推定するシミュレーションプログラムであって、前記シミュレーションプログラムはコンピュータに
搬送機を含むシステムを３次元仮想空間内に仮想的に構築するステップを実行させ、前記搬送機に関連付けられた搬送経路上の第１の場所に視覚センサが仮想配置されるとともに、前記搬送経路上の第２の場所に処理装置が仮想配置されており、
予め取得された画像データに対して前記視覚センサに対応する画像計測処理を行うステップと、
前記画像計測処理の計測結果に基づいて前記処理装置に対する制御指令を生成するとともに、前記画像計測処理を開始するための前記画像データの取込指令を生成するための制御演算を実行するステップと、
前記取込指令に応じて実行される前記画像計測処理の基準を示す前記搬送機の位置または変位を示す情報を関連付けて、当該取込指令によって取込まれた画像データを格納するステップと、
前記実行するステップの結果出力される前記制御演算に係る時系列データと、前記格納される画像データに関連付けられる情報とに基づいて、前記構築されたシステムの挙動を再現するステップとを実行させ、
前記画像計測処理を行うステップは、前記計測結果に加えて、当該計測結果の生成に用いた画像データに関連付けられる前記搬送機の位置または変位を示す情報を前記実行される制御演算へ出力するステップを含み、
前記制御演算を実行するステップは、前記計測結果に付随する前記搬送機の位置または変位を示す情報に基づいて、前記３次元仮想空間内の対象物の位置を制御演算の実行時の位置に補正した上で前記制御演算を実行するステップを含む、シミュレーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システムの挙動を推定するシミュレーション装置、シミュレーション方法、およびシミュレーションプログラムに関する。
【背景技術】
【０００２】
ＦＡ（Factory Automation）分野では、視覚センサを用いた自動制御技術が広く利用されている。例えば、ワークなどの対象物を撮像し、その撮像された画像に対してパターンマッチングなどの画像計測処理を実行することで、各種の制御機器を操作するといった自動化処理が実現されている。
【０００３】
例えば、特開２０１２−１８７６５１号公報（特許文献１）は、視覚センサおよびロボットを含むコンベアトラッキングの構成を開示する。このコンベアトラッキングのシステムでは、視覚センサおよびロボットを制御するロボット制御装置とがネットワークを介して接続されている。
【０００４】
上述のような自動制御技術の対象となるシステムの設計または検討などの段階において、システム全体の性能などを予め評価する必要がある。このようなニーズに対して、仮想的にシステムを構築して動作をシミュレーションする技術が実現されている。例えば、特開２０１３−１９１１２８号公報（特許文献２）は、仮想撮像部に対応する実空間の視覚センサを含めた機械システムの統合シミュレーションを行う技術が開示されている。特許文献２に開示される技術においては、３Ｄシミュレータと視覚センサシミュレータとが連携することで、各タイミングにおける３Ｄ空間内のワークの撮像画像を仮想的に生成する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−１８７６５１号公報
【特許文献２】特開２０１３−１９１１２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述の特許文献２に開示される技術は、ワークまたは対象物についても、予め定義しておく必要がある。そのため、例えば、既存のシステムなどの改造を検討する場合や、既存のシステムのリプレースなどを検討する場合などにおいても、ワークも含めてモデル化する必要がある。
【０００７】
そのため、ワークなどの画像データが予め存在する場合に、より効率的にシミュレーションを実現する構成が要望されている。さらに、既存の画像データに対する画像計測処理のタイミングについてもより厳密にシミュレーションしたいというニーズも存在する。
【課題を解決するための手段】
【０００８】
本発明のある局面によれば、システムの挙動を推定するシミュレーション装置が提供される。シミュレーション装置は、搬送機を含むシステムを３次元仮想空間内に仮想的に構築する構築手段を含む。搬送機に関連付けられた搬送経路上の第１の場所に視覚センサが仮想配置されるとともに、搬送経路上の第２の場所に処理装置が仮想配置されている。シミュレーション装置は、予め取得された画像データに対して視覚センサに対応する画像計測処理を行う計測手段と、計測手段による計測結果に基づいて処理装置に対する制御指令を生成するとともに、計測手段に対して画像データの取込指令を生成するための制御演算を実行する実行手段と、取込指令に応じて実行される画像計測処理の基準を示す搬送機の位置または変位を示す情報を関連付けて、当該取込指令によって取込まれた画像データを格納する格納手段と、実行手段により出力される制御演算に係る時系列データと、格納手段により格納される画像データに関連付けられる情報とに基づいて、構築されたシステムの挙動を再現する再現手段とを含む。本明細書において、「再現」は、シミュレーション装置が仮想空間に構築されたシステムについての演算を行い、システムを仮想的に動作させることをいう。「再現」は、シミュレートすることを包含し得る。
【０００９】
好ましくは、計測手段は、計測結果に加えて、当該前測結果の生成に用いた画像データに関連付けられる搬送機の位置または変位を示す情報を実行手段へ出力する。
【００１０】
好ましくは、実行手段は、計測結果に付随する搬送機の位置または変位を示す情報に基づいて、３次元仮想空間内の対象物の位置を補正した上で制御演算を実行する。
【００１１】
好ましくは、実行手段は、計測結果に付随する搬送機の位置または変位を示す情報と、制御演算を実行する際の搬送機の位置または変位を示す情報との差分から、対象物の位置について補正量を算出する。
【００１２】
好ましくは、再現手段は、構築されたシステムの挙動を表示するとともに、画像計測処理の対象となった画像データを表示する。
【００１３】
好ましくは、再現手段は、計測結果に付随する搬送機の位置または変位を示す情報に基づいて、対象物の表示位置を補正する。
【００１４】
好ましくは、シミュレーション装置は、搬送機の移動に関連付けて、搬送機の位置または変位を示す情報を生成する生成手段をさらに含む。
【００１５】
好ましくは、格納手段は、画像データのファイル名、または、画像データ内の領域に、情報を関連付ける。
【００１６】
本発明の別の局面によれば、システムの挙動を推定するコンピュータによって実行されるシミュレーション方法が提供される。シミュレーション方法は、搬送機を含むシステムを３次元仮想空間内に仮想的に構築するステップを含む。搬送機に関連付けられた搬送経路上の第１の場所に視覚センサが仮想配置されるとともに、搬送経路上の第２の場所に処理装置が仮想配置されている。シミュレーション方法は、予め取得された画像データに対して視覚センサに対応する画像計測処理を行うステップと、画像計測処理の計測結果に基づいて処理装置に対する制御指令を生成するとともに、画像計測処理を開始するための画像データの取込指令を生成するための制御演算を実行するステップと、取込指令に応じて実行される画像計測処理の基準を示す搬送機の位置または変位を示す情報を関連付けて、当該取込指令によって取込まれた画像データを格納するステップと、実行するステップの結果出力される制御演算に係る時系列データと、格納される画像データに関連付けられる情報とに基づいて、構築されたシステムの挙動を再現するステップとを含む。
【００１７】
本発明のさらに別の局面によれば、システムの挙動を推定するシミュレーションプログラムが提供される。シミュレーションプログラムは、コンピュータに、搬送機を含むシステムを３次元仮想空間内に仮想的に構築するステップを実行させる。搬送機に関連付けられた搬送経路上の第１の場所に視覚センサが仮想配置されるとともに、搬送経路上の第２の場所に処理装置が仮想配置されている。シミュレーションプログラムは、コンピュータに、予め取得された画像データに対して視覚センサに対応する画像計測処理を行うステップと、画像計測処理の計測結果に基づいて処理装置に対する制御指令を生成するとともに、画像計測処理を開始するための画像データの取込指令を生成するための制御演算を実行するステップと、取込指令に応じて実行される画像計測処理の基準を示す搬送機の位置または変位を示す情報を関連付けて、当該取込指令によって取込まれた画像データを格納するステップと、実行するステップの結果出力される制御演算に係る時系列データと、格納される画像データに関連付けられる情報とに基づいて、構築されたシステムの挙動を再現するステップとを実行させる。
【発明の効果】
【００１８】
本発明によれば、予め取得したワークなどの画像データを用いて、システムの挙動をより厳密にシミュレーションできる。
【図面の簡単な説明】
【００１９】
【図１】本実施の形態に係るシミュレーション装置でのシミュレーションの前提となるシステム構成例を示す模式図である。
【図２】図１に示すコンベアトラッキングシステムに対して新たなロボットを追加したコンベアトラッキングシステムの構成例を示す模式図である。
【図３】本実施の形態に係るシミュレーション装置を用いたシミュレーションの方法を説明するための模式図である。
【図４】視覚センサおよび制御装置を含むシステムでの処理手順を示す模式図である。
【図５】本実施の形態に係るシミュレーション装置のハードウェア構成を示す模式図である。
【図６】本実施の形態に係るシミュレーション装置の機能構成を示す模式図である。
【図７】本実施の形態に係るシミュレーション装置を用いたシミュレーションの処理手順を示すフローチャートである。
【図８】本実施の形態に係るシミュレーション装置における画像計測処理の基準を示す情報を説明するための模式図である。
【図９】本実施の形態に係るシミュレーション装置における画像データの格納方法を説明するための図である。
【図１０】本実施の形態に係るシミュレーション装置が提供するシステムモデルの構築に係るユーザインターフェイス画面の一例を示す図である。
【図１１】本実施の形態に係るシミュレーション装置により提供される３次元仮想空間内に定義される座標系を説明するための模式図である。
【図１２】本実施の形態に係るシミュレーション装置での１パルスあたりの移動量の算出手順を説明するための模式図である。
【図１３】本実施の形態に係るシミュレーション装置の視覚センサシミュレータによる計測結果の一例を示す図である。
【図１４】図１〜図３に示すコンベアトラッキングシステムでの対象物の位置ずれを説明するための模式図である。
【図１５】本実施の形態に係るシミュレーション装置が提供するシステムの挙動を再現するユーザインターフェイス画面の一例を示す図である。
【発明を実施するための形態】
【００２０】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【００２１】
＜Ａ．概要＞
本実施の形態に係るシミュレーション装置は、システムの挙動を推定する。より具体的には、本実施の形態に係るシミュレーション装置は、撮像部によって現実に撮像された画像データを用いて、仮想的に構築したシステムの挙動などを推定できる。以下の説明では、１または複数の装置を含むコンベアトラッキングシステムなどをシミュレーション対象とするが、これに限られることなく、任意のシステムに応用が可能である。
【００２２】
先に、本実施の形態に係るシミュレーション装置でのシミュレーションの概要について説明する。
【００２３】
図１は、本実施の形態に係るシミュレーション装置でのシミュレーションの前提となるシステム構成例を示す模式図である。図１を参照して、一例として、コンベアトラッキングシステム１では、搬送機の一例であるコンベア２３０上を連続的に搬送される対象物の一例であるワーク２３２を、処理装置の一例であるロボット２１０で把持して、所定位置まで搬送して配置する。このようなロボット２１０による把持・搬送・配置の一連の動作は、「ピック＆プレース動作」とも称される。
【００２４】
以下の説明では、搬送機の一例としてコンベアを想定し、対象物の一例としてワークを想定し、対象物に対して何らかの処理を行う処理装置の一例としてロボットを想定する。但し、対象物および処理装置については、これらに限られることなく、対象のシステムに応じて適宜選択される。
【００２５】
ロボット２１０によるピック＆プレース動作は、コンベア２３０の一部に設定された撮像エリアを撮像部２２２にて撮像するとともに、視覚センサ２２０が撮像部２２２の撮像により取得された画像データに対してパターンマッチングなどの画像計測処理を行うことで、ワーク２３２の位置および向きなどの情報を含む計測結果が取得される。そして、制御装置２００は、視覚センサ２２０からの計測結果に基づいて、予め定められた制御ロジックを実行することで、ロボット２１０にする制御指令を生成する。制御装置２００は、ロボット２１０に対する制御指令を生成する際には、ロボット２１０の状態値およびコンベア２３０を駆動するための駆動ローラ２３４に結合されたエンコーダ２３６からのエンコーダ値を参照する。制御装置２００および視覚センサ２２０は、ネットワーク２０２を介してデータ通信可能に接続されており、視覚センサ２２０からの計測結果は、ネットワーク２０２を介して、制御装置２００へ伝送される。制御装置２００としては、典型的には、プログラマブルコントローラ（以下「ＰＬＣ」とも称す。）を用いて実装される。
【００２６】
図１に示すようなコンベアトラッキングシステム１において、例えば、コンベア２３０の移動速度を高めるとともに、ロボット２１０を追加して処理能力が十分であるか否かを検討したいような場合がある。
【００２７】
図２は、図１に示すコンベアトラッキングシステム１に対して新たなロボット２１０を追加したコンベアトラッキングシステム２の構成例を示す模式図である。図２に示すように、ロボット２１０を現実に追加してその処理能力を検証することができればよいが、コスト的または時間的な制約上、そのような検証が不可能な場合も多い。すなわち、図２に示すような設備追加に伴うシステムの変化をより簡便に推定したいというニーズが存在する。
【００２８】
このようなニーズに対して、本実施の形態に係るシミュレーション装置は、シミュレーション対象のシステムを３次元仮想空間内に仮想的に構築するとともに、当該仮想的に構築したシステムに対して、現実に撮像された画像データを融合されることで、より効率的なシミュレーションを実現する。
【００２９】
図３は、本実施の形態に係るシミュレーション装置を用いたシミュレーションの方法を説明するための模式図である。図３を参照して、シミュレーション装置は、シミュレーション対象のコンベアトラッキングシステム２全体をモデル化するとともに、撮像部２２２の撮像により取得された画像データがこのモデルに与えられる。すなわち、コンベアトラッキングシステム１のモデルには、現実に撮像された画像データが利用される。
【００３０】
このような構成を採用することで、現実のコンベアトラッキングシステムの状態を反映しつつ、任意のコンベアトラッキングシステムについてその性能をシミュレーションすることができる。
【００３１】
なお、「現実に撮像された画像データ」としては、図１および図２に示されるような、改良前のコンベアトラッキングシステム１において撮像されたものに限らず、任意のシステムおよび状況において撮像されたものを用いることができる。すなわち、シミュレーションの対象物（典型的には、ワーク２３２）についての時間的変化の情報を含むものであれば、どのようなものを用いてもよい。
【００３２】
「画像データ」としては、動画像データであってもよいし、時系列に並べられた複数の静止画像データであってもよい。なお、動画像データの再生速度、または、複数の静止画像データの更新速度を適宜調整することで、制御対象となるワークの時間的変化（すなわち、移動速度）を調整することもできる。このようにシステムのモデルに対して与える画像データを調整することで、制御対象の時間的変化の最適値などについても、シミュレーションで求めることができる。
【００３３】
さらに、複数の静止画像としては、実際に連続的に撮像した画像ではなく、異なるシーンで撮像された複数の画像を適宜並べて時間的に変化させたものとして取り扱うことで、動画像データとみなすようにしてもよい。この場合、生成される複数の画像間には、重なりはないが、事実上の問題はない。
【００３４】
ところで、図１〜図３に示すような視覚センサ２２０および制御装置２００がネットワークを介して接続されるような構成を採用すると、視覚センサ２２０での画像計測処理の実行タイミングと、当該画像計測処理の実行により生成される計測結果が制御装置２００へ伝送されるまでに遅延時間（タイムラグ）が生じ得る。
【００３５】
図４は、視覚センサおよび制御装置を含むシステムでの処理手順を示す模式図である。図４を参照して、例えば、視覚センサ２２０は、外部からのトリガー信号に応答して、画像データを取込むとともに、当該取込んだ画像データに対して画像計測処理を実行する。その画像計測処理の実行により生成される計測結果は、制御装置２００へ伝送される。画像計測処理の実行に要する時間、および、図４に示す伝送に要する遅延時間の大きさの合計が無視できる程度であれば問題ないが、視覚センサ２２０の制御周期が長くなるにしたがって、この遅延時間が無視できなくなる。
【００３６】
図１〜図３に示すコンベアトラッキングシステムにおいては、対象物（典型的には、ワーク２３２）は移動することになるので、無視できない遅延時間が生じると、ロボットによるピック＆プレース動作もうまく機能しなくなる。
【００３７】
そこで、本実施の形態に係るシミュレーション装置１００は、上述のような遅延時間による誤差を補正した上で、ロボットを制御するための制御ロジックを実行できるようになっている。
【００３８】
＜Ｂ．シミュレーション装置のハードウェア構成＞
次に、本実施の形態に係るシミュレーション装置１００のハードウェア構成について説明する。本実施の形態に係るシミュレーション装置１００は、典型的には、１または複数のコンピュータがプログラムを実行することで実現される。
【００３９】
図５は、本実施の形態に係るシミュレーション装置１００のハードウェア構成を示す模式図である。図５を参照して、シミュレーション装置１００は、一例として、汎用的なコンピュータアーキテクチャに準じて構成されるコンピュータからなる。シミュレーション装置１００は、プロセッサ１０２と、主メモリ１０４と、入力部１０６と、表示部１０８と、ネットワークインターフェイス１１０と、ハードディスク（ＨＤＤ：Hard Disk Drive）１２０と、光学ドライブ１１２と、通信インターフェイス１１６とを含む。これらのコンポーネントは、内部バス１１８を介して互いに通信可能に接続されている。
【００４０】
プロセッサ１０２は、ハードディスク１２０に格納されているプログラムを主メモリ１０４に展開して実行することで、後述するような機能および処理を実現する。主メモリ１０４は、揮発性メモリにより構成され、プロセッサ１０２によるプログラム実行に必要なワークメモリとして機能する。
【００４１】
入力部１０６は、典型的には、キーボード、マウス、タッチパネル、タッチパッドなどからなり、ユーザからの操作を受付ける。表示部１０８は、ディスプレイ、インジケータなどからなり、ユーザに対して各種情報を提示する。
【００４２】
ネットワークインターフェイス１１０は、サーバ装置などの外部機器との間でネットワークを介してデータを遣り取りする。光学ドライブ１１２は、光学ディスク１１４などから、その中に格納されている各種プログラムを読み出して、ハードディスク１２０にインストールする。通信インターフェイス１１６は、例えば、ＵＳＢ（Universal Serial Bus）などの通信インターフェイスからなり、補助記憶装置などの外部機器との間でローカル通信を介してデータを遣り取りする。
【００４３】
ハードディスク１２０は、ＯＳ（Operating System）１２２およびシミュレーションプログラム１２４などのシミュレーション装置として機能するために必要なプログラムを格納するとともに、シミュレーションに用いる予め取得された画像データ群１４０についても格納する。
【００４４】
図５には、光学ドライブ１１２を介して必要なプログラムをシミュレーション装置１００にインストールする構成例を示すが、これに限られることなく、ネットワーク上のサーバ装置などからダウンロードするようにしてもよい。
【００４５】
このように汎用コンピュータを用いて実現する場合には、本実施の形態に係る機能を提供するためのプログラムに加えて、コンピュータの基本的な機能を提供するためのＯＳ（Operating System）がインストールされていてもよい。この場合には、本実施の形態に係るシミュレーションプログラムは、ＯＳの一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の順序および／またはタイミングで呼出して処理を実行するものであってもよい。すなわち、本実施の形態に係るプログラムは、上記のようなモジュールを含んでおらず、ＯＳと協働して処理が実行される場合もある。そのため、本実施の形態に係るプログラムとしては、このような一部のモジュールを含まない形態であってもよい。
【００４６】
また、本実施の形態に係るプログラムは、他のプログラムの一部に組込まれて提供されるものであってもよい。その場合にも、プログラム自体には、上記のような組合せられる他のプログラムに含まれるモジュールを含んでおらず、当該他のプログラムと協働して処理が実行される。すなわち、本実施の形態に係るシミュレーションプログラムとしては、このような他のプログラムに組込まれた形態であってもよい。
【００４７】
また、図５には、汎用コンピュータによってシミュレーション装置１００を実現する例を示すが、これに限られることなく、その全部または一部を専用回路（例えば、ＡＳＩＣ（Application Specific Integrated Circuit）など）を用いて実現してもよい。さらに、一部の処理を外部装置に担わせるようにしてもよい。
【００４８】
＜Ｃ．シミュレーション装置の機能構成＞
次に、本実施の形態に係るシミュレーション装置１００の機能構成について説明する。図６は、本実施の形態に係るシミュレーション装置１００の機能構成を示す模式図である。
【００４９】
図６を参照して、シミュレーション装置１００は、ソフトウェア機能として、視覚センサシミュレータ１５０と、コントローラシミュレータ１６０と、再現モジュール１７０と、ユーザインターフェイスモジュール１８０と、エンコーダエミュレータ１９０とを含む。これらの機能モジュール群は、典型的には、プロセッサ１０２がシミュレーションプログラム１２４（いずれも図５参照）を実行することで実現される。シミュレーション装置１００は、格納部１５４をさらに含む。格納部１５４は、シミュレーション装置１００のハードディスク１２０内の記憶領域を用いて利用される。
【００５０】
ユーザインターフェイスモジュール１８０は、設定パラメータ１５２、制御プログラム１６２、および３次元設計データ１７２についてのユーザによる設定・作成を支援するための操作画面などを提供する。また、ユーザインターフェイスモジュール１８０は、再現モジュール１７０によるシミュレーション結果の表示に際しても、必要なユーザインターフェイスを提供する。
【００５１】
ユーザインターフェイスモジュール１８０は、３次元設計データ１７２を扱う機能としてモデル構築モジュール１８２を含む。モデル構築モジュール１８２は、シミュレーション対象のシステムを３次元仮想空間内に仮想的に構築する。より具体的には、モデル構築モジュール１８２は、３次元仮想空間を表示するとともに、シミュレーション対象のシステムを当該３次元仮想空間内に構築するための設定・操作画面を提供する。
【００５２】
本実施の形態に係るシミュレーション装置１００においては、典型的には、搬送機（典型例として、コンベア）を含むシステムが３次元仮想空間内に仮想的に構築される。そして、図３に示すように、搬送機（コンベア）に関連付けられた搬送経路上の第１の場所に視覚センサ２２０が仮想配置されるとともに、搬送経路上の第２の場所に制御装置２００が仮想配置される。
【００５３】
視覚センサシミュレータ１５０は、視覚センサ２２０での処理を模擬するモジュールであり、予め取得された画像データに対して、各種の画像計測処理を実行する。より具体的には、視覚センサシミュレータ１５０は、コントローラシミュレータ１６０からの取込指令（典型例として、トリガー信号）に応答して、予め取得された画像データ群１４０のうち対象の画像データを取込んで、視覚センサ２２０（図１〜図３参照）に対応する画像計測処理を行う。視覚センサシミュレータ１５０での画像計測処理により得られた計測結果は、コントローラシミュレータ１６０へ出力される。すなわち、図１〜図３に示すコンベアトラッキングシステムにおける、ネットワーク２０２を介した、視覚センサ２２０から制御装置２００への計測結果の伝送に相当する処理が実行される。ここで、視覚センサシミュレータ１５０における画像計測処理は、予め設定された設定パラメータ１５２に従って実行される。
【００５４】
コントローラシミュレータ１６０は、視覚センサシミュレータ１５０による計測結果に基づいて、処理装置の一例であるロボットに対する制御指令を生成する制御演算を実行する。コントローラシミュレータ１６０は、制御装置２００（図１〜図３参照）での処理を模擬するモジュールであり、予め作成された制御プログラム１６２に従って、制御演算（シーケンス命令、モーション命令、各種機能命令など）を実行する。コントローラシミュレータ１６０での制御演算に係る入力および出力を含むトレースデータは、時系列データとして、再現モジュール１７０へ出力される。
【００５５】
また、コントローラシミュレータ１６０で実行される制御演算は、視覚センサシミュレータ１５０に対して画像データの取込指令（トリガー信号）を生成するための処理を含む。すなわち、コントローラシミュレータ１６０は、予め定められた条件が満たされると、トリガー信号を発生する。予め定められた条件とは、例えばコンベアが所定距離だけ移動したこと、あるいは、予め定められた周期が到来したこと、などを用いることができる。後述するように、コンベアの移動距離などは、エンコーダエミュレータ１９０が発生する情報などに基づいて検知される。エンコーダエミュレータ１９０が発生する情報は、コントローラシミュレータ１６０から視覚センサシミュレータ１５０へも供給される。
【００５６】
再現モジュール１７０は、コントローラシミュレータ１６０により出力される制御演算に係る時系列データ（トレースデータ）を用いて、構築されたシステムの挙動を再現する。より具体的には、再現モジュール１７０は、定義ファイルである３次元設計データ１７２に基づいて、３次元仮想空間内に仮想的に構築されたシステムを視覚化するとともに、コントローラシミュレータ１６０からのトレースデータに基づいて、システムでのワークまたはロボットの時間的変化などを再現する。このように、再現モジュール１７０は、シミュレーション結果の時間変化をアニメーションまたは動画の状態でシミュレーション装置１００の表示部１０８（図５）上に表現する。
【００５７】
このとき、再現モジュール１７０は、格納部１５４に格納される画像データおよび当該画像データに関連付けられる情報を、シミュレーション結果の再現に反映する場合もある。例えば、再現モジュール１７０は、計測結果に付随する搬送機（コンベア）の位置または変位を示す情報に基づいて、対象物（ワーク）の表示位置を補正する。
【００５８】
なお、図６には、コントローラシミュレータ１６０により出力されるトレースデータを用いて、再現モジュール１７０が構築されたシステムの挙動を再現する構成例を示すが、シミュレーション装置１００として、再現モジュール１７０は必須ではない。例えば、コントローラシミュレータ１６０により出力されるトレースデータを外部装置または外部アプリケーションへ出力し、当該外部装置または外部アプリケーションがシステムの挙動を再現するようにしてもよい。あるいは、再現モジュール１７０は、システムの挙動を再現するための動画像データを生成して任意の記憶媒体に格納するのみであり、当該動画像データを別のアプリケーションが再生するようにしてもよい。
【００５９】
エンコーダエミュレータ１９０は、搬送機の移動に関連付けて、当該搬送機の位置または変位を示す情報を生成する。一例として、エンコーダエミュレータ１９０は、基準位置からの変位量を示すエンコーダ値を出力してもよいし、搬送機（コンベア）の単位時間あたりの移動量に比例するパルスを発生してもよい。すなわち、エンコーダ値は、コンベアの位置を示すことになり、単位時間あたりのパルス数は、コンベアの速度を示すことになる。
【００６０】
格納部１５４は、取込指令（トリガー信号）に応じて実行される画像計測処理の基準を示す搬送機（コンベア）の位置または変位を示す情報を関連付けて、当該取込指令によって取込まれた画像データを格納する。画像計測処理の基準としては、例えば、エンコーダエミュレータ１９０がエンコーダ値を出力する場合には、トリガー信号が視覚センサシミュレータ１５０へ与えられたときのエンコーダ値、または、視覚センサシミュレータ１５０が画像データを取込んだときのエンコーダ値が用いられる。これらの画像計測処理の基準を示す情報が関連付けられた上で、当該取込まれた画像データが格納部１５４に格納される。
【００６１】
画像計測処理の対象となった画像データに、上述のような付加情報を関連付けることで、その後、コントローラシミュレータ１６０にて、当該画像データに対する画像計測処理により得られる計測結果に基づく処理が開始されるまでに無視できない遅延時間が生じたとしても、その遅延時間を補正することができる。
【００６２】
＜Ｄ．処理手順＞
次に、本実施の形態に係るシミュレーション装置１００を用いたシミュレーションの処理手順について説明する。
【００６３】
図７は、本実施の形態に係るシミュレーション装置１００を用いたシミュレーションの処理手順を示すフローチャートである。図７を参照して、まず、シミュレーション装置１００は、システムモデルの設定を受付ける（ステップＳ２）。システムモデルの設定は、システムを構成する各装置の配置位置、搬送機であるコンベアの移動速度などの設定を含む。システムモデルの設定に基づいて、シミュレーション装置１００（モデル構築モジュール１８２）は、シミュレーション対象のシステムを３次元仮想空間内に仮想的に構築する。
【００６４】
シミュレーション装置１００（ユーザインターフェイスモジュール１８０）は、システムモデル内に設定される視覚センサの撮像エリアを受付ける（ステップＳ４）。すると、構築されたシステムと設定された撮像エリアとの相対位置関係に基づいて、計測結果を制御演算の入力値に変換するための変換パラメータであるキャリブレーションパラメータが算出される。
【００６５】
なお、図６に示すように、ユーザインターフェイスモジュール１８０がキャリブレーションパラメータを算出する例について説明するが、このキャリブレーションパラメータの算出を視覚センサシミュレータ１５０において実行してもよい。
【００６６】
続いて、シミュレーション装置１００（ユーザインターフェイスモジュール１８０）は、システムモデルを制御するための制御プログラムを受付ける（ステップＳ６）。この制御プログラムは、システムに関連付けられたプログラムであり、コントローラシミュレータ１６０で実行されることになる。
【００６７】
シミュレーション装置１００（ユーザインターフェイスモジュール１８０）は、視覚センサシミュレータ１５０で実行されるべき画像計測処理の内容設定を受付ける（ステップＳ８）。
【００６８】
以上の処理により、シミュレーションを行うための設定が完了する。
シミュレーションの開始が指示されると、指定された時間間隔に従って、シミュレーション装置１００（エンコーダエミュレータ１９０）は、仮想的に配置されたコンベアの位置または移動量を示すエンコーダ値を更新する（ステップＳ１０）。シミュレーション装置１００（コントローラシミュレータ１６０）は、トリガー信号を発生する条件が満たされているか否かを判断する（ステップＳ１２）。トリガー信号を発生する条件が満たされていれば（ステップＳ１２においてＹＥＳの場合）、仮想的にトリガー信号を発生する（ステップＳ１４）。トリガー信号を発生する条件が満たされていなければ（ステップＳ１２においてＮＯの場合）、ステップＳ１４の処理はスキップされる。
【００６９】
トリガー信号の発生に応答して、シミュレーション装置１００（視覚センサシミュレータ１５０）は、予め取得された画像データ群のうち対象の画像データを取込み（ステップＳ１００）、画像計測処理を実行する（ステップＳ１０２）。シミュレーション装置１００（視覚センサシミュレータ１５０）は、画像計測処理の実行後、その計測結果を出力する（ステップＳ１０４）とともに、エンコーダエミュレータ１９０からの画像データの取込時のエンコーダ値を関連付けて、取込んだ画像データを格納する（ステップＳ１０６）。このステップＳ１００〜Ｓ１０６の処理は、コントローラシミュレータ１６０での処理とは独立して実行される。
【００７０】
続いて、シミュレーション装置１００（コントローラシミュレータ１６０）は、画像計測処理の計測結果が更新されているか否かを判断する（ステップＳ１６）。すなわち、視覚センサシミュレータ１５０から新たな計測結果を受信したか否かが判断される。画像計測処理の計測結果が更新されていれば（ステップＳ１６においてＹＥＳの場合）、シミュレーション装置１００（コントローラシミュレータ１６０）は、当該更新された画像計測処理の計測結果に基づいて制御演算を実行する（ステップＳ１８）。画像計測処理の計測結果が更新されていなければ（ステップＳ１６においてＮＯの場合）、ステップＳ１８の処理はスキップされる。
【００７１】
シミュレーション装置１００（コントローラシミュレータ１６０）は、この制御演算の実行によって算出されるそれぞれの値を時間情報に関連付けて格納する（ステップＳ２０）。すなわち、時系列データの一例であるトレースデータが格納される。
【００７２】
シミュレーション装置１００は、予め設定されているシミュレーション期間が満了したか否かを判断する（ステップＳ２２）。予め設定されているシミュレーション期間が満了していなければ（ステップＳ２２においてＮＯの場合）、ステップＳ１０以下の処理が繰返される。
【００７３】
これに対して、予め設定されているシミュレーション期間が満了していれば（ステップＳ２２においてＹＥＳの場合）、シミュレーション装置１００は、ステップＳ２０において順次格納されたトレースデータを用いて、システムモデルの挙動を再現する（ステップＳ２４）。シミュレーション装置１００は、ユーザ操作に応じて、再現されるシステムモデルの挙動の時間間隔および更新間隔などを適宜変更することができる。
【００７４】
以上のような処理手順によって、システムモデルにおけるタクトタイムや性能などを評価することができる。
【００７５】
＜Ｅ．画像計測処理の基準を示す搬送機の位置または変位を示す情報＞
次に、取込指令（トリガー信号）に応じて実行される画像計測処理の基準を示す搬送機（コンベア）の位置または変位を示す情報について説明する。
【００７６】
図８は、本実施の形態に係るシミュレーション装置１００における画像計測処理の基準を示す情報を説明するための模式図である。図８を参照して、視覚センサシミュレータ１５０は、コントローラシミュレータ１６０が内部的に発生するトリガー信号に応答して、画像データを取込み、取込んだ画像データに対して画像計測処理を実行する。図８に示すように、時刻Ｔ１においてトリガー信号が発生し、視覚センサシミュレータ１５０が画像データの取込を開始したとする。そして、画像データの取込が終了し、時刻Ｔ２から画像計測処理を開始したとする。
【００７７】
画像計測処理の基準を示す搬送機（コンベア）の位置または変位を示す情報としては、トリガー信号が視覚センサシミュレータ１５０へ与えられたとき（時刻Ｔ１）のエンコーダ値（図８に示す例では、エンコーダ値Ｅ３）を用いてもよい。あるいは、画像データの取込が完了し、画像計測処理が開始されるタイミング（時刻Ｔ２）のエンコーダ値（図８に示す例では、エンコーダ値Ｅ４）を用いてもよい。
【００７８】
さらにあるいは、画像データの取込期間にわたるエンコーダ値の平均値を用いてもよい。例えば、時刻Ｔ１〜Ｔ２の間に画像データの取込が実行された場合を考えると、時刻Ｔ１におけるエンコーダ値Ｅ３と、時刻Ｔ２におけるエンコーダ値Ｅ４との平均値（（Ｅ３＋Ｅ４）／２）が用いられてもよい。
【００７９】
図８を参照して説明した基準となる情報は一例であり、ある画像データに対して画像計測処理が実行されたときに、当該画像計測処理の実行により得られる計測結果がいずれの位置またはタイミングに撮像された画像データに対するものであるかを事後的に判断できる情報であれば、どのような情報を用いてもよい。
【００８０】
＜Ｆ．搬送機の位置または変位を示す情報を関連付けた画像データの格納＞
次に、シミュレーション装置１００の格納部１５４（図６）への画像データの格納の処理について説明する。本実施の形態に係るシミュレーション装置１００は、内部的に発生するトリガー信号（取込指令）に応じて実行される画像計測処理の基準を示すコンベア（搬送機）の位置または変位を示す情報を関連付けて、当該取込指令によって取込まれた画像データを格納する。
【００８１】
画像計測処理の基準を示すコンベア（搬送機）の位置または変位を示す情報を画像データに関連付ける方法としては、事後的に当該情報を利用できる方法であれば、どのような方法を採用してもよい。典型例として、いくつかの方法について説明する。
【００８２】
図９は、本実施の形態に係るシミュレーション装置１００における画像データの格納方法を説明するための図である。なお、画像計測処理の基準を示すコンベア（搬送機）の位置または変位を示す情報の典型例として、エンコーダ値を用いる例について説明するが、この値に限られることはない。
【００８３】
図９（Ａ）には、格納される画像データ１５６のファイル名１５７の一部または全部に、エンコーダ値を用いる例を示す。図９（Ａ）を参照して、例えば、「０００１２００．ｊｐｇ」というファイル名の本体部の「０００１２００」がエンコーダ値に相当する。この画像データ１５６を処理する際には、ファイル名１５７の本体部を抽出することで、当該画像データ１５６に対して実行された画像計測処理の基準を示すエンコーダ値が「０００１２００」であることを把握できる。このように、エンコーダ値が画像データのファイル名に用いられてもよい。
【００８４】
図９（Ｂ）には、格納される画像データのファイル名の一部または全部に、エンコーダ値を用いる例を示す。図９（Ｂ）を参照して、例えば、ＪＰＥＧ形式またはＴＩＦＦ形式の画像データをＥｘｉｆ（Exchangeable image file format）規格に従って格納する場合には、当該Ｅｘｉｆ領域１５８に各種の情報を付随させることができる。そこで、画像計測処理の基準を示すエンコーダ値をこのＥｘｉｆ領域１５８に組込むようにしてもよい。この画像データ１５６を処理する際には、Ｅｘｉｆ領域１５８に含まれる情報を抽出することで、当該画像データ１５６に対して実行された画像計測処理の基準を示すエンコーダ値を把握できる。このように、エンコーダ値が画像データ内の所定領域にエンコーダ値の情報を付加するようにしてもよい。
【００８５】
図９（Ｃ）には、１または複数の画像データ１５６に加えて、各画像データ１５６に関連付けられる情報を示す対応テーブル１５９を別に用意する例を示す。対応テーブル１５９には、格納されている画像データ１５６の各ファイル名と、対応するエンコーダ値とが対応付けられている。このような対応テーブル１５９を用いることで、格納される画像データについて、実行された画像計測処理の基準を示すエンコーダ値を容易に把握できる。
【００８６】
＜Ｇ．システムモデルの構築および座標系＞
次に、シミュレーション対象のシステムモデルの構築処理について説明する。システムモデルの構築処理は、主として、モデル構築モジュール１８２（図６）によって提供される機能であり、上述の図７に示すシステムモデルの設定の受付け（ステップＳ２）に対応する。
【００８７】
ユーザは、シミュレーション装置１００が提供する編集画面において、シミュレーション対象となるシステムモデルを直接構築してもよいし、予め作成された設計データ（ＣＡＤ（Computer Aided Design）データなど）を読み込ませることで、システムモデルを構築してもよい。さらに、過去に作成したシステムモデルのデータを読み込んで、編集した上で用いることもできる。
【００８８】
すなわち、本実施の形態に係るシミュレーション装置１００においては、モデルシステムの構築は、任意の方法を採用することができる。
【００８９】
図１０は、本実施の形態に係るシミュレーション装置１００が提供するシステムモデルの構築に係るユーザインターフェイス画面の一例を示す図である。説明の便宜上、図１０には簡素なピック＆プレース動作を行うシステムモデルを示す。
【００９０】
より具体的には、図１０に示すユーザインターフェイス画面において、３次元仮想空間３００内に２つのコンベア３０１および３０２が互いに平行して配置されている。コンベア３０２の所定位置に対応付けて、２つのロボット３１１および３１３が配置されている。このシステムモデルでは、紙面左側から紙面右側に向けてワークをコンベア３０１で搬送し、ロボット３１１および３１３が対象となるワークをピックして、コンベア３０２上にプレースするようなアプリケーションが想定される。なお、図１０に示すユーザインターフェイス画面においては、３次元仮想空間３００内のオブジェクトを任意の方向からレンダリングすることができる。すなわち、ユーザインターフェイス画面に描画される視点は、ユーザが任意に変更できる。
【００９１】
ここで、図１０に示すシステムモデルにおける座標系について説明する。図１１は、本実施の形態に係るシミュレーション装置１００により提供される３次元仮想空間内に定義される座標系を説明するための模式図である。
【００９２】
図１１を参照して、３次元仮想空間３００内のＸ，Ｙ，Ｚ軸がワールド座標系３２０として定義される。ワールド座標系３２０は、システムモデルの各部の位置を定義するための基準となる座標系に相当する。
【００９３】
一方、コンベア３０１および３０２上を搬送されるワークのトラッキングなどを行うために、制御装置（図６に示すコントローラシミュレータ１６０）では、コンベア３０１および３０２の初期位置を原点としたコンベア座標系３０３が定義される。コンベア座標系３０３は、システムモデル中のコンベアについての座標系であり、コンベア３０１および３０２の搬送方向、搬送方向に直交する方向、コンベア３０１および３０２の搬送面に直交する方向の３つの方向を各軸とする。
【００９４】
さらに、ロボット３１１および３１３をそれぞれ制御するためのロボット座標系３１２および３１４がそれぞれ独立に定義されてもよい。ロボット座標系３１２および３１４は、システムモデル中のロボット３１１および３１３に関する座標系であり、ロボット３１１および３１３の設置位置を原点とする。ロボット座標系３１２および３１４は、ロボットコントローラからみた、ロボット３１１および３１３の挙動を制御するために用いられる。さらに、ロボット３１１および３１３の先端に把持用のジグなどを装着する場合には、ロボット３１１および３１３の先端を原点とするツール座標系がさらに定義されてもよい。
【００９５】
図１１に示す複数の座標系の間で、ある座標系の座標値を別の座標系の座標値に変換するためのキャリブレーションパラメータが予め算出される。このようなキャリブレーションパラメータの一例として、例えば、カメラ座標系の座標（ｘ，ｙ）をロボット座標系の座標（Ｘ，Ｙ）に算出するための、係数Ａ〜Ｆが算出される。
【００９６】
Ｘ＝Ａ・ｘ＋Ｂ・ｙ＋Ｃ
Ｙ＝Ｄ・ｘ＋Ｅ・ｙ＋Ｆ
他の座標系の間についても同様の係数が算出される。
【００９７】
さらに、３次元仮想空間内において、搬送機（典型例として、コンベア）の搬送動作を再現する必要があり、この搬送動作に係るパラメータも算出される。すなわち、構築されたシステムにおいてワークを移動させる搬送機（コンベア）の単位移動量と、構築されたシステムにおける対象物（ワーク）の移動速度との換算係数が算出される。この換算係数は、コンベアの単位移動量（典型的には、エンコーダからの１パルス）あたりについての、ワークのＸ軸方向の移動量およびＹ軸方向の移動量を含む。例えば、１回転あたり１パルスを発生するようなエンコーダを採用した場合には、当該エンコーダからのパルス数の積算値がエンコーダ値として算出されることになる。すなわち、１パルスが発生したことは、あるエンコーダ値が１だけインクリメントされたことと等価である。これらの移動量は、構築されたシステムの挙動を再現する場合に、ワークの時間的変化を算出するために用いられる。
【００９８】
このような換算係数は、ロボット座標系に対するコンベアの傾きなどを考慮して算出される。
【００９９】
図１２は、本実施の形態に係るシミュレーション装置１００での１パルスあたりの移動量の算出手順を説明するための模式図である。図１２には、ワールド座標系のＺ軸を中心として、コンベアおよびロボットを回転させたときの例を示す図である。コンベアがＺ軸を中心として回転角θだけ回転し、ロボットがＺ軸を中心として回転角αだけ回転しているとすると、１パルスあたりの移動量は、以下のように算出される。ここで、ｌは、コンベア進行方向に対する１パルスあたりの移動量である。
【０１００】
１パルスあたりのＸ軸方向の移動量（Ｘ）＝ｌ×ｃｏｓ（θ−α）
１パルスあたりのＹ軸方向の移動量（Ｙ）＝ｌ×ｓｉｎ（θ−α）
このように、コンベア進行方向に対する１パルスあたりの移動量に対して、（θ−α）を適用することで、１パルスあたりの移動量を算出できる。
【０１０１】
図１２には、説明の便宜上、ワールド座標系のＺ軸のみを中心として、コンベアおよびロボットを回転させた例を示すが、現実のシステムモデルでは、Ｚ軸だけではなく、Ｘ軸およびＹ軸を中心に回転することもある。したがって、各軸についての回転角を考慮して、以下のように算出することになる。
【０１０２】
現実のシステムモデルに一般化すると、例えば、コンベアは、ワールド座標系のＸ軸を中心として回転角θｘ，Ｙ軸を中心として回転角θｙ，Ｚ軸を中心として回転角θｚだけ傾いているとする。また、ロボットは、ワールド座標系のＸ軸を中心として回転角αｘ，Ｙ軸を中心として回転角αｙ，Ｚ軸を中心として回転角αｚだけ傾いているとする。
【０１０３】
まず、３×３の単位行列に対し、Ｘ軸を中心として（θｘ−αｘ）、Ｙ軸を中心として（θｙ−αｙ）、Ｚ軸を中心として（θｚ−αｚ）だけ、それぞれ回転させることで回転行列を作成する。
【０１０４】
コンベアの進行方向に対する１パルスあたりの移動量ｌは、初期設定値から取得できるので、以下のように、回転行列とシステムモデルのローカル座標軸（ｌ，０，０）とを掛け合わせることで算出される座標値ＸおよびＹが、１パルスあたりのＸ軸方向の移動量（Ｘ）および１パルスあたりのＹ軸方向の移動量（Ｙ）にそれぞれ相当することにある。ここで、移動量の単位はｍｍである。
【０１０５】
移動量（ｘ，ｙ，ｚ）＝回転行列×（ｌ，０，０）
１パルスあたりのＸ軸方向の移動量（Ｘ）＝移動量（ｘ）［ｍｍ／パルス］
１パルスあたりのＹ軸方向の移動量（Ｙ）＝移動量（ｙ）［ｍｍ／パルス］
以上の算出処理によって決定される１パルスあたりのＸ軸方向の移動量（Ｘ）および１パルスあたりのＹ軸方向の移動量（Ｙ）が換算係数として算出される。
【０１０６】
＜Ｈ．対象物の位置およびそれに対する補正処理＞
次に、対象物（ワーク）の位置算出およびそれに対する補正処理について説明する。
【０１０７】
（ｈ１：対象物の位置処理）
図１３は、本実施の形態に係るシミュレーション装置１００の視覚センサシミュレータ１５０による計測結果の一例を示す図である。図１３を参照して、視覚センサ２２０を模擬する視覚センサシミュレータ１５０は、画素（ピクセル）の集合体である画像データに対して画像計測処理を行うので、その計測結果は画素値で定義されることになる。図１３には、予め登録された画像パターンとのパターンマッチングの結果例を示す図である。画像データ内の２つのオブジェクトが登録された画像パターンと一致しており、その計測結果として、（ｘ１，ｙ１，θ１）および（ｘ２，ｙ２，θ２）が出力されている。この計測結果は、登録されている画像パターンと一致するオブジェクトが存在する位置（いずれもピクセル値）、および、登録されている画像パターンからの回転角（姿勢）を含む。
【０１０８】
このような、画像データ内の座標値として出力される計測結果を、３次元仮想空間内に構築されるシステムモデルに適合させるために、上述したキャリブレーションパラメータ（係数Ａ〜Ｆ）を用いて、カメラ座標系の座標値をワールド座標系またはコンベア座標系の座標値に変換する。
【０１０９】
視覚センサシミュレータ１５０から出力される計測結果（認識されたワークの位置を含む）は、ロボット座標系の座標値に変換されて、コントローラシミュレータ１６０に入力される。一方で、システムモデルは、３次元仮想空間３００内のワールド座標系に従って設定されるため、構築されたシステムの挙動を再現する場合には、ロボット座標系の座標値をワールド座標系の座標値に変換する。ロボット座標系の座標値をワールド座標系の座標値に変換するためのパラメータは、上述したような、カメラ座標系の座標値をロボット座標系の座標値に変換するためのパラメータの算出と同様の手順で算出できる。カメラ座標系の座標（ｘ，ｙ）をワールド座標系の座標（Ｘ，Ｙ）に算出するための、係数Ａ１〜Ｆ１を用いて、視覚センサシミュレータ１５０にて検出されたワークの座標値（ｘ，ｙ）からコントローラシミュレータ１６０に入力されたときの初期表示位置を以下のように算出できる。
【０１１０】
ワークの初期表示位置（Ｘ）＝Ａ１×ｘ＋Ｂ１×ｙ＋Ｃ１
ワークの初期表示位置（Ｙ）＝Ｄ１×ｘ＋Ｅ１×ｙ＋Ｆ１
そして、初期表示以降は、各ワークの表示位置は、エンコーダ値の変化に応じて、順次更新される。このような表示位置の更新処理によって、ワークがコンベア上を流れてゆく様子を再現できる。
【０１１１】
（ｈ２：対象物の位置に対する補正処理）
図１４は、図１〜図３に示すコンベアトラッキングシステムでの対象物の位置ずれを説明するための模式図である。図１４（Ａ）は、ワーク２３２を撮像部２２２により撮像し、画像データを取込む状態を示す図である。図１４（Ａ）に示す状態は、シミュレーション装置１００において、視覚センサシミュレータ１５０が画像データを取込む処理に相当する。一方、図１４（Ｂ）に示す状態は、視覚センサ２２０が撮像部２２２からの画像データを取込んで画像計測処理を実行し、その計測結果を制御装置２００へ伝送している状態を示す図である。図１４（Ｂ）に示す状態は、コントローラシミュレータ１６０が視覚センサシミュレータ１５０から計測結果を受信して、その計測結果に基づいて、予め定められた制御演算を実行する状態に相当する。
【０１１２】
視覚センサ２２０による画像データの取込処理、視覚センサ２２０による画像計測処理、視覚センサ２２０から制御装置２００への計測結果の伝送処理にいくらかの時間を要するので、時刻Ｔ１において、撮像部２２２が対象物（ワーク２３２）を撮像したとすると、制御装置２００が当該画像データに対する画像計測処理の結果に基づいて制御演算の実行を開始できるのは、時刻Ｔ２になってしまう。
【０１１３】
この時刻Ｔ１から時刻Ｔ２まで遅延することで、ワーク２３２は、その遅延時間に応じた距離だけ移動することになる。すなわち、時刻Ｔ１と時刻Ｔ２との間でのワーク２３２の移動距離を補正する必要がある。以下、視覚センサシミュレータ１５０（視覚センサ２２０）が補正すべき距離を「補正距離」とも称す。
【０１１４】
図１４において、時刻Ｔ１は、取込指令（トリガー信号）に応じて実行される画像計測処理の基準に対応するものである。このような距離の補正を行うために、図６および図１４に示すように、視覚センサシミュレータ１５０は、計測結果に加えて、当該計測結果を生成した画像計測処理の基準を示すエンコーダ値をコントローラシミュレータ１６０へ出力する。すなわち、視覚センサシミュレータ１５０は、計測結果に加えて、当該前測結果の生成に用いた画像データに関連付けられるコンベア（搬送機）の位置または変位を示す情報をコントローラシミュレータ１６０へ出力する。
【０１１５】
コントローラシミュレータ１６０は、計測結果に付加されるエンコーダ値と、現在のエンコーダ値との差分に基づいて、画像計測処理の基準タイミングからワークがどれだけ移動したのかを算出する。すなわち、コントローラシミュレータ１６０は、計測結果に付随するコンベア（搬送機）の位置または変位を示す情報に基づいて、３次元仮想空間内のワーク（対象物）の位置を補正した上で制御演算を実行する。
【０１１６】
より具体的には、コントローラシミュレータ１６０が制御演算を開始するタイミングまたは、制御演算の関連する命令を実行しているタイミングにおける、エンコーダ値Ｅｃと、計測結果に付随するエンコーダ値Ｅｔとの差分を算出するとともに、予め算出されているコンベアの単位移動量あたりについての換算係数を用いて、補正距離が算出される。すなわち、以下に示す式に従って補正距離が算出される。
【０１１７】
Ｘ軸方向の補正距離
＝（Ｅｃ−Ｅｔ）×１パルスあたりのＸ軸方向の移動量（Ｘ）［ｍｍ／パルス］
Ｙ軸方向の補正距離
＝（Ｅｃ−Ｅｔ）×１パルスあたりのＹ軸方向の移動量（Ｘ）［ｍｍ／パルス］
なお、コンベア座標系がワールド座標系に対して傾いている（但し、Ｚ軸方向は一致している）と仮定して、Ｘ軸方向およびＹ軸方向についての補正量がそれぞれ算出している。但し、Ｚ軸に加えて、Ｘ軸および／またはＹ軸が一致するのであれば、特定の軸についての移動量が補正距離となる。
【０１１８】
上述のように、コントローラシミュレータ１６０は、計測結果に付随するエンコーダ値（搬送機の位置または変位を示す情報）と、制御演算を実行する際のエンコーダ値（現時点の搬送機の位置または変位を示す情報）との差分から、対象物の位置について補正距離（補正量）を算出する。そして、コントローラシミュレータ１６０は、補正距離を用いて、各時点のワークの位置を補正した上で、ロボットにする制御指令などを生成する。
【０１１９】
＜Ｉ．シミュレーション結果の表示＞
次に、シミュレーション結果の表示処理について説明する。シミュレーション結果の表示処理、すなわちシステムモデルの挙動を再現する処理は、主として、再現モジュール１７０（図６）によって提供される機能であり、上述の図７に示すシステムモデルの挙動の再現（ステップＳ２４）に対応する。
【０１２０】
図１５は、本実施の形態に係るシミュレーション装置１００が提供するシステムの挙動を再現するユーザインターフェイス画面の一例を示す図である。図１５を参照して、視覚センサシミュレータ１５０による計測結果を入力とする制御演算の結果に基づいて、構築されたシステムの挙動が再現される。すなわち、コントローラシミュレータ１６０での制御演算により算出される制御指令に基づいて、ロボット３１１および３１３は、その位置および姿勢が順次更新される。これによって、ロボット３１１および３１３の動きを観察することができる。
【０１２１】
また、ユーザインターフェイス画面では、視覚センサシミュレータ１５０により認識されたワークの情報に基づいて、構築したシステムモデル上にワーク３５０が表示される。ワーク３５０は、コンベア３０１および３０３の移動に応じて移動するように表示される。また、ロボット３１１および３１３によるピック＆プレース動作に応じて、その位置も変化する。このように、視覚センサシミュレータ１５０で実行される画像計測処理が予め登録された画像パターンに基づいてワークを認識する処理を含む場合には、再現モジュール１７０は、視覚センサシミュレータ１５０により認識された存在する各ワークを構築されたシステム上に表示させるとともに、時間の経過に伴ってその位置を更新してもよい。
【０１２２】
このようなワーク３５０をトラッキングして表示することで、ユーザは、構築されたシステムの挙動をより容易に認識できる。
【０１２３】
また、ユーザインターフェイス画面では、視覚センサシミュレータ１５０で実行される画像計測処理に用いられた入力画像を含む計測結果３６０が表示されるようになっている。計測結果３６０は、システムの挙動の再現に合わせて表示される。すなわち、再現モジュール１７０は、構築されたシステムの挙動を表示するとともに、画像計測処理の対象となった画像データを表示する。このとき、視覚センサシミュレータ１５０による計測結果とともに、当該計測結果の対象となった画像データについても併せて出力するようにしてもよい。この場合には、画像データの上に計測結果をオーバレイ表示してもよいし、入力画像データと計測結果とを並べて表示してもよい。
【０１２４】
このように、シミュレーション画像と計測に使用した画像とを同時に表示することにより、対象物が複数存在する場合に、画像計測処理が正しく行われている否かを、ユーザが容易に確認することができる。
【０１２５】
図１５に示すユーザインターフェイス画面においては、３次元仮想空間内のオブジェクトを任意の方向からレンダリングすることができる。すなわち、ユーザインターフェイス画面に描画される視点は、ユーザが任意に変更できる。また、再現する時間幅および再現速度なども任意に指定できる。
【０１２６】
シミュレーション結果の表示に際しても、ワークの表示位置を必要に応じて補正するようにしてもよい。例えば、コントローラシミュレータ１６０から出力されるトレースデータに含まれるワークの位置情報が上述したような補正距離を用いた補正を反映したものであれば、シミュレーション結果の表示にそのまま利用することができる。一方で、そのような補正距離を用いた補正処理が反映されていない場合には、上述した補正距離の算出と同様の補正を行って、ワークの初期表示位置などを補正した上で、シミュレーション結果を再現してもよい。
【０１２７】
この場合には、再現モジュール１７０は、計測結果に付随する搬送機（コンベア）の位置または変位を示す情報に基づいて、対象物（ワーク）の表示位置を補正する。再現モジュール１７０は、典型的には、エンコーダ２３６からのエンコーダ値に関連付けて、構築されているシステムの各部位の表示位置などを更新する。例えば、あるエンコーダ値に対応付けて算出されたトレースデータに用いられた計測結果が、当該エンコーダ値とは異なるエンコーダ値が付与された画像データに対して実行された画像認識処理によって生成されたような場合には、対象のエンコーダ値と、当該画像認識処理に用いられた画像データに付随するエンコーダ値との差分に基づいて、ワークの表示位置が補正される。
【０１２８】
以上のような補正処理を行うことで、シミュレーション結果を再現する場合にも、ワークをより適切な位置に表示させることができ、画像計測処理のタイミングについてもより厳密にシミュレーションできる。
【０１２９】
＜Ｋ．変形例＞
図６に示す構成においては、コントローラシミュレータ１６０とは別のエレメントとして、エンコーダをエミュレートするエンコーダエミュレータ１９０を設けているが、両者を一体的に構成してもよい。すなわち、コントローラシミュレータ１６０で実行される制御演算のプログラムの一部として、エンコーダ値を更新する処理を組込んでもよい。あるいは、コントローラシミュレータ１６０にて、制御プログラム１６２に加えて、エンコーダエミュレータ１９０を実現するプログラムを並列的に実行させるようにしてもよい。
【０１３０】
さらにあるいは、エンコーダエミュレータ１９０の機能を外部装置または現実のエンコーダに代替させてもよい。
【０１３１】
すなわち、図１〜図３に示すエンコーダ２３６は、制御装置２００および視覚センサ２２０とは独立した搬送機（コンベア２３０）の動作を検出するものであり、制御装置２００および視覚センサ２２０の動作とは直接的に関連付ける必要性はないので、任意の方法で実現すればよい。
【０１３２】
＜Ｌ．利点＞
本実施の形態に係るシミュレーション装置１００によれば、ワークなどの画像データが予め存在する場合に、より効率的にシミュレーションを実現できる。さらに、既存の画像データに対する画像計測処理のタイミングについてもより厳密にシミュレーションできる。
【０１３３】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１３４】
１，２  コンベアトラッキングシステム、１００  シミュレーション装置、１０２  プロセッサ、１０４  主メモリ、１０６  入力部、１０８  表示部、１１０  ネットワークインターフェイス、１１２  光学ドライブ、１１４  光学ディスク、１１６  通信インターフェイス、１１８  内部バス、１２０  ハードディスク、１２４  シミュレーションプログラム、１４０  画像データ群、１５０  視覚センサシミュレータ、１５２  設定パラメータ、１５４  格納部、１５６  画像データ、１５７  ファイル名、１５８  Ｅｘｉｆ領域、１５９  対応テーブル、１６０  コントローラシミュレータ、１６２  制御プログラム、１７０  再現モジュール、１７２  ３次元設計データ、１８０  ユーザインターフェイスモジュール、１８２  モデル構築モジュール、１９０  エンコーダエミュレータ、２００  制御装置、２０２  ネットワーク、２１０，３１１  ロボット、２２０  視覚センサ、２２２  撮像部、２３０，３０１，３０２  コンベア、２３２，３５０  ワーク、２３４  駆動ローラ、２３６  エンコーダ。
【図１】
0006601179.tif 000002
【図２】
0006601179.tif 000003
【図３】
0006601179.tif 000004
【図４】
0006601179.tif 000005
【図５】
0006601179.tif 000006
【図６】
0006601179.tif 000007
【図７】
0006601179.tif 000008
【図８】
0006601179.tif 000009
【図９】
0006601179.tif 000010
【図１０】
0006601179.tif 000011
【図１１】
0006601179.tif 000012
【図１２】
0006601179.tif 000013
【図１３】
0006601179.tif 000014
【図１４】
0006601179.tif 000015
【図１５】
0006601179.tif 000016