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