(58)【調査した分野】(Int.Cl.,DB名)
前記実行手段は、前記計測結果に付随する前記搬送機の位置または変位を示す情報と、前記制御演算を実行する際の前記搬送機の位置または変位を示す情報との差分から、前記対象物の位置について補正量を算出する、請求項1に記載のシミュレーション装置。
前記再現手段は、前記構築されたシステムの挙動を表示するとともに、前記画像計測処理の対象となった画像データを表示する、請求項1または2に記載のシミュレーション装置。
前記再現手段は、前記計測結果に付随する前記搬送機の位置または変位を示す情報に基づいて、前記対象物の表示位置を補正する、請求項1〜3のいずれか1項に記載のシミュレーション装置。
前記搬送機の移動に関連付けて、前記搬送機の位置または変位を示す情報を生成する生成手段をさらに備える、請求項1〜4のいずれか1項に記載のシミュレーション装置。
前記格納手段は、前記画像データのファイル名、または、前記画像データ内の領域に、前記情報を関連付ける、請求項1〜5のいずれか1項に記載のシミュレーション装置。
【発明を実施するための形態】
【0020】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【0021】
<A.概要>
本実施の形態に係るシミュレーション装置は、システムの挙動を推定する。より具体的には、本実施の形態に係るシミュレーション装置は、撮像部によって現実に撮像された画像データを用いて、仮想的に構築したシステムの挙動などを推定できる。以下の説明では、1または複数の装置を含むコンベアトラッキングシステムなどをシミュレーション対象とするが、これに限られることなく、任意のシステムに応用が可能である。
【0022】
先に、本実施の形態に係るシミュレーション装置でのシミュレーションの概要について説明する。
【0023】
図1は、本実施の形態に係るシミュレーション装置でのシミュレーションの前提となるシステム構成例を示す模式図である。
図1を参照して、一例として、コンベアトラッキングシステム1では、搬送機の一例であるコンベア230上を連続的に搬送される対象物の一例であるワーク232を、処理装置の一例であるロボット210で把持して、所定位置まで搬送して配置する。このようなロボット210による把持・搬送・配置の一連の動作は、「ピック&プレース動作」とも称される。
【0024】
以下の説明では、搬送機の一例としてコンベアを想定し、対象物の一例としてワークを想定し、対象物に対して何らかの処理を行う処理装置の一例としてロボットを想定する。但し、対象物および処理装置については、これらに限られることなく、対象のシステムに応じて適宜選択される。
【0025】
ロボット210によるピック&プレース動作は、コンベア230の一部に設定された撮像エリアを撮像部222にて撮像するとともに、視覚センサ220が撮像部222の撮像により取得された画像データに対してパターンマッチングなどの画像計測処理を行うことで、ワーク232の位置および向きなどの情報を含む計測結果が取得される。そして、制御装置200は、視覚センサ220からの計測結果に基づいて、予め定められた制御ロジックを実行することで、ロボット210にする制御指令を生成する。制御装置200は、ロボット210に対する制御指令を生成する際には、ロボット210の状態値およびコンベア230を駆動するための駆動ローラ234に結合されたエンコーダ236からのエンコーダ値を参照する。制御装置200および視覚センサ220は、ネットワーク202を介してデータ通信可能に接続されており、視覚センサ220からの計測結果は、ネットワーク202を介して、制御装置200へ伝送される。制御装置200としては、典型的には、プログラマブルコントローラ(以下「PLC」とも称す。)を用いて実装される。
【0026】
図1に示すようなコンベアトラッキングシステム1において、例えば、コンベア230の移動速度を高めるとともに、ロボット210を追加して処理能力が十分であるか否かを検討したいような場合がある。
【0027】
図2は、
図1に示すコンベアトラッキングシステム1に対して新たなロボット210を追加したコンベアトラッキングシステム2の構成例を示す模式図である。
図2に示すように、ロボット210を現実に追加してその処理能力を検証することができればよいが、コスト的または時間的な制約上、そのような検証が不可能な場合も多い。すなわち、
図2に示すような設備追加に伴うシステムの変化をより簡便に推定したいというニーズが存在する。
【0028】
このようなニーズに対して、本実施の形態に係るシミュレーション装置は、シミュレーション対象のシステムを3次元仮想空間内に仮想的に構築するとともに、当該仮想的に構築したシステムに対して、現実に撮像された画像データを融合されることで、より効率的なシミュレーションを実現する。
【0029】
図3は、本実施の形態に係るシミュレーション装置を用いたシミュレーションの方法を説明するための模式図である。
図3を参照して、シミュレーション装置は、シミュレーション対象のコンベアトラッキングシステム2全体をモデル化するとともに、撮像部222の撮像により取得された画像データがこのモデルに与えられる。すなわち、コンベアトラッキングシステム1のモデルには、現実に撮像された画像データが利用される。
【0030】
このような構成を採用することで、現実のコンベアトラッキングシステムの状態を反映しつつ、任意のコンベアトラッキングシステムについてその性能をシミュレーションすることができる。
【0031】
なお、「現実に撮像された画像データ」としては、
図1および
図2に示されるような、改良前のコンベアトラッキングシステム1において撮像されたものに限らず、任意のシステムおよび状況において撮像されたものを用いることができる。すなわち、シミュレーションの対象物(典型的には、ワーク232)についての時間的変化の情報を含むものであれば、どのようなものを用いてもよい。
【0032】
「画像データ」としては、動画像データであってもよいし、時系列に並べられた複数の静止画像データであってもよい。なお、動画像データの再生速度、または、複数の静止画像データの更新速度を適宜調整することで、制御対象となるワークの時間的変化(すなわち、移動速度)を調整することもできる。このようにシステムのモデルに対して与える画像データを調整することで、制御対象の時間的変化の最適値などについても、シミュレーションで求めることができる。
【0033】
さらに、複数の静止画像としては、実際に連続的に撮像した画像ではなく、異なるシーンで撮像された複数の画像を適宜並べて時間的に変化させたものとして取り扱うことで、動画像データとみなすようにしてもよい。この場合、生成される複数の画像間には、重なりはないが、事実上の問題はない。
【0034】
ところで、
図1〜
図3に示すような視覚センサ220および制御装置200がネットワークを介して接続されるような構成を採用すると、視覚センサ220での画像計測処理の実行タイミングと、当該画像計測処理の実行により生成される計測結果が制御装置200へ伝送されるまでに遅延時間(タイムラグ)が生じ得る。
【0035】
図4は、視覚センサおよび制御装置を含むシステムでの処理手順を示す模式図である。
図4を参照して、例えば、視覚センサ220は、外部からのトリガー信号に応答して、画像データを取込むとともに、当該取込んだ画像データに対して画像計測処理を実行する。その画像計測処理の実行により生成される計測結果は、制御装置200へ伝送される。画像計測処理の実行に要する時間、および、
図4に示す伝送に要する遅延時間の大きさの合計が無視できる程度であれば問題ないが、視覚センサ220の制御周期が長くなるにしたがって、この遅延時間が無視できなくなる。
【0036】
図1〜
図3に示すコンベアトラッキングシステムにおいては、対象物(典型的には、ワーク232)は移動することになるので、無視できない遅延時間が生じると、ロボットによるピック&プレース動作もうまく機能しなくなる。
【0037】
そこで、本実施の形態に係るシミュレーション装置100は、上述のような遅延時間による誤差を補正した上で、ロボットを制御するための制御ロジックを実行できるようになっている。
【0038】
<B.シミュレーション装置のハードウェア構成>
次に、本実施の形態に係るシミュレーション装置100のハードウェア構成について説明する。本実施の形態に係るシミュレーション装置100は、典型的には、1または複数のコンピュータがプログラムを実行することで実現される。
【0039】
図5は、本実施の形態に係るシミュレーション装置100のハードウェア構成を示す模式図である。
図5を参照して、シミュレーション装置100は、一例として、汎用的なコンピュータアーキテクチャに準じて構成されるコンピュータからなる。シミュレーション装置100は、プロセッサ102と、主メモリ104と、入力部106と、表示部108と、ネットワークインターフェイス110と、ハードディスク(HDD:Hard Disk Drive)120と、光学ドライブ112と、通信インターフェイス116とを含む。これらのコンポーネントは、内部バス118を介して互いに通信可能に接続されている。
【0040】
プロセッサ102は、ハードディスク120に格納されているプログラムを主メモリ104に展開して実行することで、後述するような機能および処理を実現する。主メモリ104は、揮発性メモリにより構成され、プロセッサ102によるプログラム実行に必要なワークメモリとして機能する。
【0041】
入力部106は、典型的には、キーボード、マウス、タッチパネル、タッチパッドなどからなり、ユーザからの操作を受付ける。表示部108は、ディスプレイ、インジケータなどからなり、ユーザに対して各種情報を提示する。
【0042】
ネットワークインターフェイス110は、サーバ装置などの外部機器との間でネットワークを介してデータを遣り取りする。光学ドライブ112は、光学ディスク114などから、その中に格納されている各種プログラムを読み出して、ハードディスク120にインストールする。通信インターフェイス116は、例えば、USB(Universal Serial Bus)などの通信インターフェイスからなり、補助記憶装置などの外部機器との間でローカル通信を介してデータを遣り取りする。
【0043】
ハードディスク120は、OS(Operating System)122およびシミュレーションプログラム124などのシミュレーション装置として機能するために必要なプログラムを格納するとともに、シミュレーションに用いる予め取得された画像データ群140についても格納する。
【0044】
図5には、光学ドライブ112を介して必要なプログラムをシミュレーション装置100にインストールする構成例を示すが、これに限られることなく、ネットワーク上のサーバ装置などからダウンロードするようにしてもよい。
【0045】
このように汎用コンピュータを用いて実現する場合には、本実施の形態に係る機能を提供するためのプログラムに加えて、コンピュータの基本的な機能を提供するためのOS(Operating System)がインストールされていてもよい。この場合には、本実施の形態に係るシミュレーションプログラムは、OSの一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の順序および/またはタイミングで呼出して処理を実行するものであってもよい。すなわち、本実施の形態に係るプログラムは、上記のようなモジュールを含んでおらず、OSと協働して処理が実行される場合もある。そのため、本実施の形態に係るプログラムとしては、このような一部のモジュールを含まない形態であってもよい。
【0046】
また、本実施の形態に係るプログラムは、他のプログラムの一部に組込まれて提供されるものであってもよい。その場合にも、プログラム自体には、上記のような組合せられる他のプログラムに含まれるモジュールを含んでおらず、当該他のプログラムと協働して処理が実行される。すなわち、本実施の形態に係るシミュレーションプログラムとしては、このような他のプログラムに組込まれた形態であってもよい。
【0047】
また、
図5には、汎用コンピュータによってシミュレーション装置100を実現する例を示すが、これに限られることなく、その全部または一部を専用回路(例えば、ASIC(Application Specific Integrated Circuit)など)を用いて実現してもよい。さらに、一部の処理を外部装置に担わせるようにしてもよい。
【0048】
<C.シミュレーション装置の機能構成>
次に、本実施の形態に係るシミュレーション装置100の機能構成について説明する。
図6は、本実施の形態に係るシミュレーション装置100の機能構成を示す模式図である。
【0049】
図6を参照して、シミュレーション装置100は、ソフトウェア機能として、視覚センサシミュレータ150と、コントローラシミュレータ160と、再現モジュール170と、ユーザインターフェイスモジュール180と、エンコーダエミュレータ190とを含む。これらの機能モジュール群は、典型的には、プロセッサ102がシミュレーションプログラム124(いずれも
図5参照)を実行することで実現される。シミュレーション装置100は、格納部154をさらに含む。格納部154は、シミュレーション装置100のハードディスク120内の記憶領域を用いて利用される。
【0050】
ユーザインターフェイスモジュール180は、設定パラメータ152、制御プログラム162、および3次元設計データ172についてのユーザによる設定・作成を支援するための操作画面などを提供する。また、ユーザインターフェイスモジュール180は、再現モジュール170によるシミュレーション結果の表示に際しても、必要なユーザインターフェイスを提供する。
【0051】
ユーザインターフェイスモジュール180は、3次元設計データ172を扱う機能としてモデル構築モジュール182を含む。モデル構築モジュール182は、シミュレーション対象のシステムを3次元仮想空間内に仮想的に構築する。より具体的には、モデル構築モジュール182は、3次元仮想空間を表示するとともに、シミュレーション対象のシステムを当該3次元仮想空間内に構築するための設定・操作画面を提供する。
【0052】
本実施の形態に係るシミュレーション装置100においては、典型的には、搬送機(典型例として、コンベア)を含むシステムが3次元仮想空間内に仮想的に構築される。そして、
図3に示すように、搬送機(コンベア)に関連付けられた搬送経路上の第1の場所に視覚センサ220が仮想配置されるとともに、搬送経路上の第2の場所に制御装置200が仮想配置される。
【0053】
視覚センサシミュレータ150は、視覚センサ220での処理を模擬するモジュールであり、予め取得された画像データに対して、各種の画像計測処理を実行する。より具体的には、視覚センサシミュレータ150は、コントローラシミュレータ160からの取込指令(典型例として、トリガー信号)に応答して、予め取得された画像データ群140のうち対象の画像データを取込んで、視覚センサ220(
図1〜
図3参照)に対応する画像計測処理を行う。視覚センサシミュレータ150での画像計測処理により得られた計測結果は、コントローラシミュレータ160へ出力される。すなわち、
図1〜
図3に示すコンベアトラッキングシステムにおける、ネットワーク202を介した、視覚センサ220から制御装置200への計測結果の伝送に相当する処理が実行される。ここで、視覚センサシミュレータ150における画像計測処理は、予め設定された設定パラメータ152に従って実行される。
【0054】
コントローラシミュレータ160は、視覚センサシミュレータ150による計測結果に基づいて、処理装置の一例であるロボットに対する制御指令を生成する制御演算を実行する。コントローラシミュレータ160は、制御装置200(
図1〜
図3参照)での処理を模擬するモジュールであり、予め作成された制御プログラム162に従って、制御演算(シーケンス命令、モーション命令、各種機能命令など)を実行する。コントローラシミュレータ160での制御演算に係る入力および出力を含むトレースデータは、時系列データとして、再現モジュール170へ出力される。
【0055】
また、コントローラシミュレータ160で実行される制御演算は、視覚センサシミュレータ150に対して画像データの取込指令(トリガー信号)を生成するための処理を含む。すなわち、コントローラシミュレータ160は、予め定められた条件が満たされると、トリガー信号を発生する。予め定められた条件とは、例えばコンベアが所定距離だけ移動したこと、あるいは、予め定められた周期が到来したこと、などを用いることができる。後述するように、コンベアの移動距離などは、エンコーダエミュレータ190が発生する情報などに基づいて検知される。エンコーダエミュレータ190が発生する情報は、コントローラシミュレータ160から視覚センサシミュレータ150へも供給される。
【0056】
再現モジュール170は、コントローラシミュレータ160により出力される制御演算に係る時系列データ(トレースデータ)を用いて、構築されたシステムの挙動を再現する。より具体的には、再現モジュール170は、定義ファイルである3次元設計データ172に基づいて、3次元仮想空間内に仮想的に構築されたシステムを視覚化するとともに、コントローラシミュレータ160からのトレースデータに基づいて、システムでのワークまたはロボットの時間的変化などを再現する。このように、再現モジュール170は、シミュレーション結果の時間変化をアニメーションまたは動画の状態でシミュレーション装置100の表示部108(
図5)上に表現する。
【0057】
このとき、再現モジュール170は、格納部154に格納される画像データおよび当該画像データに関連付けられる情報を、シミュレーション結果の再現に反映する場合もある。例えば、再現モジュール170は、計測結果に付随する搬送機(コンベア)の位置または変位を示す情報に基づいて、対象物(ワーク)の表示位置を補正する。
【0058】
なお、
図6には、コントローラシミュレータ160により出力されるトレースデータを用いて、再現モジュール170が構築されたシステムの挙動を再現する構成例を示すが、シミュレーション装置100として、再現モジュール170は必須ではない。例えば、コントローラシミュレータ160により出力されるトレースデータを外部装置または外部アプリケーションへ出力し、当該外部装置または外部アプリケーションがシステムの挙動を再現するようにしてもよい。あるいは、再現モジュール170は、システムの挙動を再現するための動画像データを生成して任意の記憶媒体に格納するのみであり、当該動画像データを別のアプリケーションが再生するようにしてもよい。
【0059】
エンコーダエミュレータ190は、搬送機の移動に関連付けて、当該搬送機の位置または変位を示す情報を生成する。一例として、エンコーダエミュレータ190は、基準位置からの変位量を示すエンコーダ値を出力してもよいし、搬送機(コンベア)の単位時間あたりの移動量に比例するパルスを発生してもよい。すなわち、エンコーダ値は、コンベアの位置を示すことになり、単位時間あたりのパルス数は、コンベアの速度を示すことになる。
【0060】
格納部154は、取込指令(トリガー信号)に応じて実行される画像計測処理の基準を示す搬送機(コンベア)の位置または変位を示す情報を関連付けて、当該取込指令によって取込まれた画像データを格納する。画像計測処理の基準としては、例えば、エンコーダエミュレータ190がエンコーダ値を出力する場合には、トリガー信号が視覚センサシミュレータ150へ与えられたときのエンコーダ値、または、視覚センサシミュレータ150が画像データを取込んだときのエンコーダ値が用いられる。これらの画像計測処理の基準を示す情報が関連付けられた上で、当該取込まれた画像データが格納部154に格納される。
【0061】
画像計測処理の対象となった画像データに、上述のような付加情報を関連付けることで、その後、コントローラシミュレータ160にて、当該画像データに対する画像計測処理により得られる計測結果に基づく処理が開始されるまでに無視できない遅延時間が生じたとしても、その遅延時間を補正することができる。
【0062】
<D.処理手順>
次に、本実施の形態に係るシミュレーション装置100を用いたシミュレーションの処理手順について説明する。
【0063】
図7は、本実施の形態に係るシミュレーション装置100を用いたシミュレーションの処理手順を示すフローチャートである。
図7を参照して、まず、シミュレーション装置100は、システムモデルの設定を受付ける(ステップS2)。システムモデルの設定は、システムを構成する各装置の配置位置、搬送機であるコンベアの移動速度などの設定を含む。システムモデルの設定に基づいて、シミュレーション装置100(モデル構築モジュール182)は、シミュレーション対象のシステムを3次元仮想空間内に仮想的に構築する。
【0064】
シミュレーション装置100(ユーザインターフェイスモジュール180)は、システムモデル内に設定される視覚センサの撮像エリアを受付ける(ステップS4)。すると、構築されたシステムと設定された撮像エリアとの相対位置関係に基づいて、計測結果を制御演算の入力値に変換するための変換パラメータであるキャリブレーションパラメータが算出される。
【0065】
なお、
図6に示すように、ユーザインターフェイスモジュール180がキャリブレーションパラメータを算出する例について説明するが、このキャリブレーションパラメータの算出を視覚センサシミュレータ150において実行してもよい。
【0066】
続いて、シミュレーション装置100(ユーザインターフェイスモジュール180)は、システムモデルを制御するための制御プログラムを受付ける(ステップS6)。この制御プログラムは、システムに関連付けられたプログラムであり、コントローラシミュレータ160で実行されることになる。
【0067】
シミュレーション装置100(ユーザインターフェイスモジュール180)は、視覚センサシミュレータ150で実行されるべき画像計測処理の内容設定を受付ける(ステップS8)。
【0068】
以上の処理により、シミュレーションを行うための設定が完了する。
シミュレーションの開始が指示されると、指定された時間間隔に従って、シミュレーション装置100(エンコーダエミュレータ190)は、仮想的に配置されたコンベアの位置または移動量を示すエンコーダ値を更新する(ステップS10)。シミュレーション装置100(コントローラシミュレータ160)は、トリガー信号を発生する条件が満たされているか否かを判断する(ステップS12)。トリガー信号を発生する条件が満たされていれば(ステップS12においてYESの場合)、仮想的にトリガー信号を発生する(ステップS14)。トリガー信号を発生する条件が満たされていなければ(ステップS12においてNOの場合)、ステップS14の処理はスキップされる。
【0069】
トリガー信号の発生に応答して、シミュレーション装置100(視覚センサシミュレータ150)は、予め取得された画像データ群のうち対象の画像データを取込み(ステップS100)、画像計測処理を実行する(ステップS102)。シミュレーション装置100(視覚センサシミュレータ150)は、画像計測処理の実行後、その計測結果を出力する(ステップS104)とともに、エンコーダエミュレータ190からの画像データの取込時のエンコーダ値を関連付けて、取込んだ画像データを格納する(ステップS106)。このステップS100〜S106の処理は、コントローラシミュレータ160での処理とは独立して実行される。
【0070】
続いて、シミュレーション装置100(コントローラシミュレータ160)は、画像計測処理の計測結果が更新されているか否かを判断する(ステップS16)。すなわち、視覚センサシミュレータ150から新たな計測結果を受信したか否かが判断される。画像計測処理の計測結果が更新されていれば(ステップS16においてYESの場合)、シミュレーション装置100(コントローラシミュレータ160)は、当該更新された画像計測処理の計測結果に基づいて制御演算を実行する(ステップS18)。画像計測処理の計測結果が更新されていなければ(ステップS16においてNOの場合)、ステップS18の処理はスキップされる。
【0071】
シミュレーション装置100(コントローラシミュレータ160)は、この制御演算の実行によって算出されるそれぞれの値を時間情報に関連付けて格納する(ステップS20)。すなわち、時系列データの一例であるトレースデータが格納される。
【0072】
シミュレーション装置100は、予め設定されているシミュレーション期間が満了したか否かを判断する(ステップS22)。予め設定されているシミュレーション期間が満了していなければ(ステップS22においてNOの場合)、ステップS10以下の処理が繰返される。
【0073】
これに対して、予め設定されているシミュレーション期間が満了していれば(ステップS22においてYESの場合)、シミュレーション装置100は、ステップS20において順次格納されたトレースデータを用いて、システムモデルの挙動を再現する(ステップS24)。シミュレーション装置100は、ユーザ操作に応じて、再現されるシステムモデルの挙動の時間間隔および更新間隔などを適宜変更することができる。
【0074】
以上のような処理手順によって、システムモデルにおけるタクトタイムや性能などを評価することができる。
【0075】
<E.画像計測処理の基準を示す搬送機の位置または変位を示す情報>
次に、取込指令(トリガー信号)に応じて実行される画像計測処理の基準を示す搬送機(コンベア)の位置または変位を示す情報について説明する。
【0076】
図8は、本実施の形態に係るシミュレーション装置100における画像計測処理の基準を示す情報を説明するための模式図である。
図8を参照して、視覚センサシミュレータ150は、コントローラシミュレータ160が内部的に発生するトリガー信号に応答して、画像データを取込み、取込んだ画像データに対して画像計測処理を実行する。
図8に示すように、時刻T1においてトリガー信号が発生し、視覚センサシミュレータ150が画像データの取込を開始したとする。そして、画像データの取込が終了し、時刻T2から画像計測処理を開始したとする。
【0077】
画像計測処理の基準を示す搬送機(コンベア)の位置または変位を示す情報としては、トリガー信号が視覚センサシミュレータ150へ与えられたとき(時刻T1)のエンコーダ値(
図8に示す例では、エンコーダ値E3)を用いてもよい。あるいは、画像データの取込が完了し、画像計測処理が開始されるタイミング(時刻T2)のエンコーダ値(
図8に示す例では、エンコーダ値E4)を用いてもよい。
【0078】
さらにあるいは、画像データの取込期間にわたるエンコーダ値の平均値を用いてもよい。例えば、時刻T1〜T2の間に画像データの取込が実行された場合を考えると、時刻T1におけるエンコーダ値E3と、時刻T2におけるエンコーダ値E4との平均値((E3+E4)/2)が用いられてもよい。
【0079】
図8を参照して説明した基準となる情報は一例であり、ある画像データに対して画像計測処理が実行されたときに、当該画像計測処理の実行により得られる計測結果がいずれの位置またはタイミングに撮像された画像データに対するものであるかを事後的に判断できる情報であれば、どのような情報を用いてもよい。
【0080】
<F.搬送機の位置または変位を示す情報を関連付けた画像データの格納>
次に、シミュレーション装置100の格納部154(
図6)への画像データの格納の処理について説明する。本実施の形態に係るシミュレーション装置100は、内部的に発生するトリガー信号(取込指令)に応じて実行される画像計測処理の基準を示すコンベア(搬送機)の位置または変位を示す情報を関連付けて、当該取込指令によって取込まれた画像データを格納する。
【0081】
画像計測処理の基準を示すコンベア(搬送機)の位置または変位を示す情報を画像データに関連付ける方法としては、事後的に当該情報を利用できる方法であれば、どのような方法を採用してもよい。典型例として、いくつかの方法について説明する。
【0082】
図9は、本実施の形態に係るシミュレーション装置100における画像データの格納方法を説明するための図である。なお、画像計測処理の基準を示すコンベア(搬送機)の位置または変位を示す情報の典型例として、エンコーダ値を用いる例について説明するが、この値に限られることはない。
【0083】
図9(A)には、格納される画像データ156のファイル名157の一部または全部に、エンコーダ値を用いる例を示す。
図9(A)を参照して、例えば、「0001200.jpg」というファイル名の本体部の「0001200」がエンコーダ値に相当する。この画像データ156を処理する際には、ファイル名157の本体部を抽出することで、当該画像データ156に対して実行された画像計測処理の基準を示すエンコーダ値が「0001200」であることを把握できる。このように、エンコーダ値が画像データのファイル名に用いられてもよい。
【0084】
図9(B)には、格納される画像データのファイル名の一部または全部に、エンコーダ値を用いる例を示す。
図9(B)を参照して、例えば、JPEG形式またはTIFF形式の画像データをExif(Exchangeable image file format)規格に従って格納する場合には、当該Exif領域158に各種の情報を付随させることができる。そこで、画像計測処理の基準を示すエンコーダ値をこのExif領域158に組込むようにしてもよい。この画像データ156を処理する際には、Exif領域158に含まれる情報を抽出することで、当該画像データ156に対して実行された画像計測処理の基準を示すエンコーダ値を把握できる。このように、エンコーダ値が画像データ内の所定領域にエンコーダ値の情報を付加するようにしてもよい。
【0085】
図9(C)には、1または複数の画像データ156に加えて、各画像データ156に関連付けられる情報を示す対応テーブル159を別に用意する例を示す。対応テーブル159には、格納されている画像データ156の各ファイル名と、対応するエンコーダ値とが対応付けられている。このような対応テーブル159を用いることで、格納される画像データについて、実行された画像計測処理の基準を示すエンコーダ値を容易に把握できる。
【0086】
<G.システムモデルの構築および座標系>
次に、シミュレーション対象のシステムモデルの構築処理について説明する。システムモデルの構築処理は、主として、モデル構築モジュール182(
図6)によって提供される機能であり、上述の
図7に示すシステムモデルの設定の受付け(ステップS2)に対応する。
【0087】
ユーザは、シミュレーション装置100が提供する編集画面において、シミュレーション対象となるシステムモデルを直接構築してもよいし、予め作成された設計データ(CAD(Computer Aided Design)データなど)を読み込ませることで、システムモデルを構築してもよい。さらに、過去に作成したシステムモデルのデータを読み込んで、編集した上で用いることもできる。
【0088】
すなわち、本実施の形態に係るシミュレーション装置100においては、モデルシステムの構築は、任意の方法を採用することができる。
【0089】
図10は、本実施の形態に係るシミュレーション装置100が提供するシステムモデルの構築に係るユーザインターフェイス画面の一例を示す図である。説明の便宜上、
図10には簡素なピック&プレース動作を行うシステムモデルを示す。
【0090】
より具体的には、
図10に示すユーザインターフェイス画面において、3次元仮想空間300内に2つのコンベア301および302が互いに平行して配置されている。コンベア302の所定位置に対応付けて、2つのロボット311および313が配置されている。このシステムモデルでは、紙面左側から紙面右側に向けてワークをコンベア301で搬送し、ロボット311および313が対象となるワークをピックして、コンベア302上にプレースするようなアプリケーションが想定される。なお、
図10に示すユーザインターフェイス画面においては、3次元仮想空間300内のオブジェクトを任意の方向からレンダリングすることができる。すなわち、ユーザインターフェイス画面に描画される視点は、ユーザが任意に変更できる。
【0091】
ここで、
図10に示すシステムモデルにおける座標系について説明する。
図11は、本実施の形態に係るシミュレーション装置100により提供される3次元仮想空間内に定義される座標系を説明するための模式図である。
【0092】
図11を参照して、3次元仮想空間300内のX,Y,Z軸がワールド座標系320として定義される。ワールド座標系320は、システムモデルの各部の位置を定義するための基準となる座標系に相当する。
【0093】
一方、コンベア301および302上を搬送されるワークのトラッキングなどを行うために、制御装置(
図6に示すコントローラシミュレータ160)では、コンベア301および302の初期位置を原点としたコンベア座標系303が定義される。コンベア座標系303は、システムモデル中のコンベアについての座標系であり、コンベア301および302の搬送方向、搬送方向に直交する方向、コンベア301および302の搬送面に直交する方向の3つの方向を各軸とする。
【0094】
さらに、ロボット311および313をそれぞれ制御するためのロボット座標系312および314がそれぞれ独立に定義されてもよい。ロボット座標系312および314は、システムモデル中のロボット311および313に関する座標系であり、ロボット311および313の設置位置を原点とする。ロボット座標系312および314は、ロボットコントローラからみた、ロボット311および313の挙動を制御するために用いられる。さらに、ロボット311および313の先端に把持用のジグなどを装着する場合には、ロボット311および313の先端を原点とするツール座標系がさらに定義されてもよい。
【0095】
図11に示す複数の座標系の間で、ある座標系の座標値を別の座標系の座標値に変換するためのキャリブレーションパラメータが予め算出される。このようなキャリブレーションパラメータの一例として、例えば、カメラ座標系の座標(x,y)をロボット座標系の座標(X,Y)に算出するための、係数A〜Fが算出される。
【0096】
X=A・x+B・y+C
Y=D・x+E・y+F
他の座標系の間についても同様の係数が算出される。
【0097】
さらに、3次元仮想空間内において、搬送機(典型例として、コンベア)の搬送動作を再現する必要があり、この搬送動作に係るパラメータも算出される。すなわち、構築されたシステムにおいてワークを移動させる搬送機(コンベア)の単位移動量と、構築されたシステムにおける対象物(ワーク)の移動速度との換算係数が算出される。この換算係数は、コンベアの単位移動量(典型的には、エンコーダからの1パルス)あたりについての、ワークのX軸方向の移動量およびY軸方向の移動量を含む。例えば、1回転あたり1パルスを発生するようなエンコーダを採用した場合には、当該エンコーダからのパルス数の積算値がエンコーダ値として算出されることになる。すなわち、1パルスが発生したことは、あるエンコーダ値が1だけインクリメントされたことと等価である。これらの移動量は、構築されたシステムの挙動を再現する場合に、ワークの時間的変化を算出するために用いられる。
【0098】
このような換算係数は、ロボット座標系に対するコンベアの傾きなどを考慮して算出される。
【0099】
図12は、本実施の形態に係るシミュレーション装置100での1パルスあたりの移動量の算出手順を説明するための模式図である。
図12には、ワールド座標系のZ軸を中心として、コンベアおよびロボットを回転させたときの例を示す図である。コンベアがZ軸を中心として回転角θだけ回転し、ロボットがZ軸を中心として回転角αだけ回転しているとすると、1パルスあたりの移動量は、以下のように算出される。ここで、lは、コンベア進行方向に対する1パルスあたりの移動量である。
【0100】
1パルスあたりのX軸方向の移動量(X)=l×cos(θ−α)
1パルスあたりのY軸方向の移動量(Y)=l×sin(θ−α)
このように、コンベア進行方向に対する1パルスあたりの移動量に対して、(θ−α)を適用することで、1パルスあたりの移動量を算出できる。
【0101】
図12には、説明の便宜上、ワールド座標系のZ軸のみを中心として、コンベアおよびロボットを回転させた例を示すが、現実のシステムモデルでは、Z軸だけではなく、X軸およびY軸を中心に回転することもある。したがって、各軸についての回転角を考慮して、以下のように算出することになる。
【0102】
現実のシステムモデルに一般化すると、例えば、コンベアは、ワールド座標系のX軸を中心として回転角θx,Y軸を中心として回転角θy,Z軸を中心として回転角θzだけ傾いているとする。また、ロボットは、ワールド座標系のX軸を中心として回転角αx,Y軸を中心として回転角αy,Z軸を中心として回転角αzだけ傾いているとする。
【0103】
まず、3×3の単位行列に対し、X軸を中心として(θx−αx)、Y軸を中心として(θy−αy)、Z軸を中心として(θz−αz)だけ、それぞれ回転させることで回転行列を作成する。
【0104】
コンベアの進行方向に対する1パルスあたりの移動量lは、初期設定値から取得できるので、以下のように、回転行列とシステムモデルのローカル座標軸(l,0,0)とを掛け合わせることで算出される座標値XおよびYが、1パルスあたりのX軸方向の移動量(X)および1パルスあたりのY軸方向の移動量(Y)にそれぞれ相当することにある。ここで、移動量の単位はmmである。
【0105】
移動量(x,y,z)=回転行列×(l,0,0)
1パルスあたりのX軸方向の移動量(X)=移動量(x)[mm/パルス]
1パルスあたりのY軸方向の移動量(Y)=移動量(y)[mm/パルス]
以上の算出処理によって決定される1パルスあたりのX軸方向の移動量(X)および1パルスあたりのY軸方向の移動量(Y)が換算係数として算出される。
【0106】
<H.対象物の位置およびそれに対する補正処理>
次に、対象物(ワーク)の位置算出およびそれに対する補正処理について説明する。
【0107】
(h1:対象物の位置処理)
図13は、本実施の形態に係るシミュレーション装置100の視覚センサシミュレータ150による計測結果の一例を示す図である。
図13を参照して、視覚センサ220を模擬する視覚センサシミュレータ150は、画素(ピクセル)の集合体である画像データに対して画像計測処理を行うので、その計測結果は画素値で定義されることになる。
図13には、予め登録された画像パターンとのパターンマッチングの結果例を示す図である。画像データ内の2つのオブジェクトが登録された画像パターンと一致しており、その計測結果として、(x1,y1,θ1)および(x2,y2,θ2)が出力されている。この計測結果は、登録されている画像パターンと一致するオブジェクトが存在する位置(いずれもピクセル値)、および、登録されている画像パターンからの回転角(姿勢)を含む。
【0108】
このような、画像データ内の座標値として出力される計測結果を、3次元仮想空間内に構築されるシステムモデルに適合させるために、上述したキャリブレーションパラメータ(係数A〜F)を用いて、カメラ座標系の座標値をワールド座標系またはコンベア座標系の座標値に変換する。
【0109】
視覚センサシミュレータ150から出力される計測結果(認識されたワークの位置を含む)は、ロボット座標系の座標値に変換されて、コントローラシミュレータ160に入力される。一方で、システムモデルは、3次元仮想空間300内のワールド座標系に従って設定されるため、構築されたシステムの挙動を再現する場合には、ロボット座標系の座標値をワールド座標系の座標値に変換する。ロボット座標系の座標値をワールド座標系の座標値に変換するためのパラメータは、上述したような、カメラ座標系の座標値をロボット座標系の座標値に変換するためのパラメータの算出と同様の手順で算出できる。カメラ座標系の座標(x,y)をワールド座標系の座標(X,Y)に算出するための、係数A1〜F1を用いて、視覚センサシミュレータ150にて検出されたワークの座標値(x,y)からコントローラシミュレータ160に入力されたときの初期表示位置を以下のように算出できる。
【0110】
ワークの初期表示位置(X)=A1×x+B1×y+C1
ワークの初期表示位置(Y)=D1×x+E1×y+F1
そして、初期表示以降は、各ワークの表示位置は、エンコーダ値の変化に応じて、順次更新される。このような表示位置の更新処理によって、ワークがコンベア上を流れてゆく様子を再現できる。
【0111】
(h2:対象物の位置に対する補正処理)
図14は、
図1〜
図3に示すコンベアトラッキングシステムでの対象物の位置ずれを説明するための模式図である。
図14(A)は、ワーク232を撮像部222により撮像し、画像データを取込む状態を示す図である。
図14(A)に示す状態は、シミュレーション装置100において、視覚センサシミュレータ150が画像データを取込む処理に相当する。一方、
図14(B)に示す状態は、視覚センサ220が撮像部222からの画像データを取込んで画像計測処理を実行し、その計測結果を制御装置200へ伝送している状態を示す図である。
図14(B)に示す状態は、コントローラシミュレータ160が視覚センサシミュレータ150から計測結果を受信して、その計測結果に基づいて、予め定められた制御演算を実行する状態に相当する。
【0112】
視覚センサ220による画像データの取込処理、視覚センサ220による画像計測処理、視覚センサ220から制御装置200への計測結果の伝送処理にいくらかの時間を要するので、時刻T1において、撮像部222が対象物(ワーク232)を撮像したとすると、制御装置200が当該画像データに対する画像計測処理の結果に基づいて制御演算の実行を開始できるのは、時刻T2になってしまう。
【0113】
この時刻T1から時刻T2まで遅延することで、ワーク232は、その遅延時間に応じた距離だけ移動することになる。すなわち、時刻T1と時刻T2との間でのワーク232の移動距離を補正する必要がある。以下、視覚センサシミュレータ150(視覚センサ220)が補正すべき距離を「補正距離」とも称す。
【0114】
図14において、時刻T1は、取込指令(トリガー信号)に応じて実行される画像計測処理の基準に対応するものである。このような距離の補正を行うために、
図6および
図14に示すように、視覚センサシミュレータ150は、計測結果に加えて、当該計測結果を生成した画像計測処理の基準を示すエンコーダ値をコントローラシミュレータ160へ出力する。すなわち、視覚センサシミュレータ150は、計測結果に加えて、当該前測結果の生成に用いた画像データに関連付けられるコンベア(搬送機)の位置または変位を示す情報をコントローラシミュレータ160へ出力する。
【0115】
コントローラシミュレータ160は、計測結果に付加されるエンコーダ値と、現在のエンコーダ値との差分に基づいて、画像計測処理の基準タイミングからワークがどれだけ移動したのかを算出する。すなわち、コントローラシミュレータ160は、計測結果に付随するコンベア(搬送機)の位置または変位を示す情報に基づいて、3次元仮想空間内のワーク(対象物)の位置を補正した上で制御演算を実行する。
【0116】
より具体的には、コントローラシミュレータ160が制御演算を開始するタイミングまたは、制御演算の関連する命令を実行しているタイミングにおける、エンコーダ値Ecと、計測結果に付随するエンコーダ値Etとの差分を算出するとともに、予め算出されているコンベアの単位移動量あたりについての換算係数を用いて、補正距離が算出される。すなわち、以下に示す式に従って補正距離が算出される。
【0117】
X軸方向の補正距離
=(Ec−Et)×1パルスあたりのX軸方向の移動量(X)[mm/パルス]
Y軸方向の補正距離
=(Ec−Et)×1パルスあたりのY軸方向の移動量(X)[mm/パルス]
なお、コンベア座標系がワールド座標系に対して傾いている(但し、Z軸方向は一致している)と仮定して、X軸方向およびY軸方向についての補正量がそれぞれ算出している。但し、Z軸に加えて、X軸および/またはY軸が一致するのであれば、特定の軸についての移動量が補正距離となる。
【0118】
上述のように、コントローラシミュレータ160は、計測結果に付随するエンコーダ値(搬送機の位置または変位を示す情報)と、制御演算を実行する際のエンコーダ値(現時点の搬送機の位置または変位を示す情報)との差分から、対象物の位置について補正距離(補正量)を算出する。そして、コントローラシミュレータ160は、補正距離を用いて、各時点のワークの位置を補正した上で、ロボットにする制御指令などを生成する。
【0119】
<I.シミュレーション結果の表示>
次に、シミュレーション結果の表示処理について説明する。シミュレーション結果の表示処理、すなわちシステムモデルの挙動を再現する処理は、主として、再現モジュール170(
図6)によって提供される機能であり、上述の
図7に示すシステムモデルの挙動の再現(ステップS24)に対応する。
【0120】
図15は、本実施の形態に係るシミュレーション装置100が提供するシステムの挙動を再現するユーザインターフェイス画面の一例を示す図である。
図15を参照して、視覚センサシミュレータ150による計測結果を入力とする制御演算の結果に基づいて、構築されたシステムの挙動が再現される。すなわち、コントローラシミュレータ160での制御演算により算出される制御指令に基づいて、ロボット311および313は、その位置および姿勢が順次更新される。これによって、ロボット311および313の動きを観察することができる。
【0121】
また、ユーザインターフェイス画面では、視覚センサシミュレータ150により認識されたワークの情報に基づいて、構築したシステムモデル上にワーク350が表示される。ワーク350は、コンベア301および303の移動に応じて移動するように表示される。また、ロボット311および313によるピック&プレース動作に応じて、その位置も変化する。このように、視覚センサシミュレータ150で実行される画像計測処理が予め登録された画像パターンに基づいてワークを認識する処理を含む場合には、再現モジュール170は、視覚センサシミュレータ150により認識された存在する各ワークを構築されたシステム上に表示させるとともに、時間の経過に伴ってその位置を更新してもよい。
【0122】
このようなワーク350をトラッキングして表示することで、ユーザは、構築されたシステムの挙動をより容易に認識できる。
【0123】
また、ユーザインターフェイス画面では、視覚センサシミュレータ150で実行される画像計測処理に用いられた入力画像を含む計測結果360が表示されるようになっている。計測結果360は、システムの挙動の再現に合わせて表示される。すなわち、再現モジュール170は、構築されたシステムの挙動を表示するとともに、画像計測処理の対象となった画像データを表示する。このとき、視覚センサシミュレータ150による計測結果とともに、当該計測結果の対象となった画像データについても併せて出力するようにしてもよい。この場合には、画像データの上に計測結果をオーバレイ表示してもよいし、入力画像データと計測結果とを並べて表示してもよい。
【0124】
このように、シミュレーション画像と計測に使用した画像とを同時に表示することにより、対象物が複数存在する場合に、画像計測処理が正しく行われている否かを、ユーザが容易に確認することができる。
【0125】
図15に示すユーザインターフェイス画面においては、3次元仮想空間内のオブジェクトを任意の方向からレンダリングすることができる。すなわち、ユーザインターフェイス画面に描画される視点は、ユーザが任意に変更できる。また、再現する時間幅および再現速度なども任意に指定できる。
【0126】
シミュレーション結果の表示に際しても、ワークの表示位置を必要に応じて補正するようにしてもよい。例えば、コントローラシミュレータ160から出力されるトレースデータに含まれるワークの位置情報が上述したような補正距離を用いた補正を反映したものであれば、シミュレーション結果の表示にそのまま利用することができる。一方で、そのような補正距離を用いた補正処理が反映されていない場合には、上述した補正距離の算出と同様の補正を行って、ワークの初期表示位置などを補正した上で、シミュレーション結果を再現してもよい。
【0127】
この場合には、再現モジュール170は、計測結果に付随する搬送機(コンベア)の位置または変位を示す情報に基づいて、対象物(ワーク)の表示位置を補正する。再現モジュール170は、典型的には、エンコーダ236からのエンコーダ値に関連付けて、構築されているシステムの各部位の表示位置などを更新する。例えば、あるエンコーダ値に対応付けて算出されたトレースデータに用いられた計測結果が、当該エンコーダ値とは異なるエンコーダ値が付与された画像データに対して実行された画像認識処理によって生成されたような場合には、対象のエンコーダ値と、当該画像認識処理に用いられた画像データに付随するエンコーダ値との差分に基づいて、ワークの表示位置が補正される。
【0128】
以上のような補正処理を行うことで、シミュレーション結果を再現する場合にも、ワークをより適切な位置に表示させることができ、画像計測処理のタイミングについてもより厳密にシミュレーションできる。
【0129】
<K.変形例>
図6に示す構成においては、コントローラシミュレータ160とは別のエレメントとして、エンコーダをエミュレートするエンコーダエミュレータ190を設けているが、両者を一体的に構成してもよい。すなわち、コントローラシミュレータ160で実行される制御演算のプログラムの一部として、エンコーダ値を更新する処理を組込んでもよい。あるいは、コントローラシミュレータ160にて、制御プログラム162に加えて、エンコーダエミュレータ190を実現するプログラムを並列的に実行させるようにしてもよい。
【0130】
さらにあるいは、エンコーダエミュレータ190の機能を外部装置または現実のエンコーダに代替させてもよい。
【0131】
すなわち、
図1〜
図3に示すエンコーダ236は、制御装置200および視覚センサ220とは独立した搬送機(コンベア230)の動作を検出するものであり、制御装置200および視覚センサ220の動作とは直接的に関連付ける必要性はないので、任意の方法で実現すればよい。
【0132】
<L.利点>
本実施の形態に係るシミュレーション装置100によれば、ワークなどの画像データが予め存在する場合に、より効率的にシミュレーションを実現できる。さらに、既存の画像データに対する画像計測処理のタイミングについてもより厳密にシミュレーションできる。
【0133】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。