(58)【調査した分野】(Int.Cl.,DB名)
前記実行手段により出力される前記制御演算に係る時系列データを用いて、前記構築されたシステムの挙動を再現する再現手段をさらに備える、請求項1または2に記載のシミュレーション装置。
前記再現手段は、前記画像計測処理によって得られるワークの座標値を、前記構築されたシステムを定義するワールド座標系の座標値に変換し、前記各ワークを前記構築されたシステム上に表示させる、請求項4に記載のシミュレーション装置。
前記算出手段は、前記構築されたシステムにおいて前記ワークを移動させる装置の単位移動量と、前記構築されたシステムでの前記ワークの移動速度との換算係数を算出する、請求項4または5に記載のシミュレーション装置。
【発明を実施するための形態】
【0022】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【0023】
<A.概要>
本実施の形態に係るシミュレーション装置は、視覚センサを含むシステムの挙動を推定する。より具体的には、本実施の形態に係るシミュレーション装置は、撮像部によって現実に撮像された画像データを用いて、当該撮像部による撮像とは独立したシステムの挙動などを推定できる。以下の説明では、1または複数の装置を含む製造システムなどをシミュレーション対象とするが、これに限られることなく、任意のシステムに応用が可能である。
【0024】
先に、本実施の形態に係るシミュレーション装置でのシミュレーションの概要について説明する。
【0025】
図1は、本実施の形態に係るシミュレーション装置でのシミュレーションの前提となるシステム構成例を示す模式図である。
図1を参照して、一例として、製造システム1では、コンベア230上を連続的に搬送されるワーク232をロボット210で把持して、所定位置まで搬送して配置する。このようなロボット210による把持・搬送・配置の一連の動作は、「ピック&プレース動作」とも称される。ロボット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】
<B.シミュレーション装置のハードウェア構成>
次に、本実施の形態に係るシミュレーション装置100のハードウェア構成について説明する。本実施の形態に係るシミュレーション装置100は、典型的には、1または複数のコンピュータがプログラムを実行することで実現される。
【0035】
図4は、本実施の形態に係るシミュレーション装置100のハードウェア構成を示す模式図である。
図4を参照して、シミュレーション装置100は、一例として、汎用的なコンピュータアーキテクチャに準じて構成されるコンピュータからなる。シミュレーション装置100は、プロセッサ102と、主メモリ104と、入力部106と、表示部108と、ネットワークインターフェイス110と、ハードディスク(HDD:Hard Disk Drive)120と、光学ドライブ112と、通信インターフェイス116とを含む。これらのコンポーネントは、内部バス118を介して互いに通信可能に接続されている。
【0036】
プロセッサ102は、ハードディスク120に格納されているプログラムを主メモリ104に展開して実行することで、後述するような機能および処理を実現する。主メモリ104は、揮発性メモリにより構成され、プロセッサ102によるプログラム実行に必要なワークメモリとして機能する。
【0037】
入力部106は、典型的には、キーボード、マウス、タッチパネル、タッチパッドなどからなり、ユーザからの操作を受付ける。表示部108は、ディスプレイ、インジケータなどからなり、ユーザに対して各種情報を提示する。
【0038】
ネットワークインターフェイス110は、サーバ装置などの外部機器との間でネットワークを介してデータを遣り取りする。光学ドライブ112は、光学ディスク114などから、その中に格納されている各種プログラムを読み出して、ハードディスク120にインストールする。通信インターフェイス116は、例えば、USB(Universal Serial Bus)などの通信インターフェイスからなり、補助記憶装置などの外部機器との間でローカル通信を介してデータを遣り取りする。
【0039】
ハードディスク120は、OS(Operating System)122およびシミュレーションプログラム124などのシミュレーション装置として機能するために必要なプログラムを格納するとともに、シミュレーションに用いる予め取得された画像データ群140についても格納する。
【0040】
図4には、光学ドライブ112を介して必要なプログラムをシミュレーション装置100にインストールする構成例を示すが、これに限られることなく、ネットワーク上のサーバ装置などからダウンロードするようにしてもよい。
【0041】
このように汎用コンピュータを用いて実現する場合には、本実施の形態に係る機能を提供するためのプログラムに加えて、コンピュータの基本的な機能を提供するためのOS(Operating System)がインストールされていてもよい。この場合には、本実施の形態に係るシミュレーションプログラムは、OSの一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の順序および/またはタイミングで呼出して処理を実行するものであってもよい。すなわち、本実施の形態に係るプログラムは、上記のようなモジュールを含んでおらず、OSと協働して処理が実行される場合もある。そのため、本実施の形態に係るプログラムとしては、このような一部のモジュールを含まない形態であってもよい。
【0042】
また、本実施の形態に係るプログラムは、他のプログラムの一部に組込まれて提供されるものであってもよい。その場合にも、プログラム自体には、上記のような組合せられる他のプログラムに含まれるモジュールを含んでおらず、当該他のプログラムと協働して処理が実行される。すなわち、本実施の形態に係るシミュレーションプログラムとしては、このような他のプログラムに組込まれた形態であってもよい。
【0043】
また、
図4には、汎用コンピュータによってシミュレーション装置100を実現する例を示すが、これに限られることなく、その全部または一部を専用回路(例えば、ASIC(Application Specific Integrated Circuit)など)を用いて実現してもよい。さらに、一部の処理を外部装置に担わせるようにしてもよい。
【0044】
<C.シミュレーション装置の機能構成>
次に、本実施の形態に係るシミュレーション装置の機能構成について説明する。
【0045】
(c1:基本的な構成例)
図5は、本実施の形態に係るシミュレーション装置の機能構成の一例を示す模式図である。
図5を参照して、シミュレーション装置100は、ソフトウェア機能として、視覚センサシミュレータ150と、コントローラシミュレータ160と、再現モジュール170と、ユーザインターフェイスモジュール180とを含む。これらの機能モジュール群は、典型的には、プロセッサ102がシミュレーションプログラム124(いずれも
図4参照)を実行することで実現される。
【0046】
視覚センサシミュレータ150は、予め取得された画像データに対して、視覚センサ220(
図1〜
図3参照)で実行される画像計測処理を行うことで計測結果を出力する。すなわち、視覚センサシミュレータ150は、視覚センサ220での処理を模擬するモジュールであり、予め取得された画像データ群140に対して、各種の画像計測処理を実行する。視覚センサシミュレータ150における画像計測処理は、予め設定された設定パラメータ152に従って実行される。視覚センサシミュレータ150での画像計測処理により得られた計測結果は、コントローラシミュレータ160へ出力される。すなわち、
図1〜
図3に示す製造システムにおける、ネットワーク202を介した、視覚センサ220から制御装置200への計測結果の伝送に相当する処理が実行される。
【0047】
コントローラシミュレータ160は、制御装置200(
図1〜
図3参照)での処理を模擬するモジュールであり、予め作成された制御プログラム162に従って、制御演算(シーケンス命令、モーション命令、各種機能命令など)を実行する。コントローラシミュレータ160での制御演算に係る入力および出力は、時系列データとして、再現モジュール170へ出力される。
【0048】
再現モジュール170は、コントローラシミュレータ160により出力される制御演算に係る時系列データを用いて、構築されたシステムの挙動を再現する。より具体的には、再現モジュール170は、定義ファイルである3次元設計データ172に基づいて、3次元仮想空間内に仮想的に構築されたシステムを視覚化するとともに、コントローラシミュレータ160からの時系列データに基づいて、システムでのワークまたはロボットの時間的変化などを再現する。このように、再現モジュール170は、シミュレーション結果の時間変化をアニメーションまたは動画の状態でシミュレーション装置100の表示部108(
図4)上に表現する。
【0049】
ユーザインターフェイスモジュール180は、設定パラメータ152、制御プログラム162、および3次元設計データ172についてのユーザによる設定・作成を支援するための操作画面などを提供する。また、ユーザインターフェイスモジュール180は、再現モジュール170によるシミュレーション結果の表示に際しても、必要なユーザインターフェイスを提供する。
【0050】
より具体的には、ユーザインターフェイスモジュール180は、モデル構築モジュール182と、撮像エリア設定受付モジュール184と、キャリブレーションパラメータ算出モジュール186とを含む。
【0051】
モデル構築モジュール182は、シミュレーション対象のシステムを3次元仮想空間内に仮想的に構築する。より具体的には、モデル構築モジュール182は、3次元仮想空間を表示するとともに、シミュレーション対象のシステムを当該3次元仮想空間内に構築するための設定・操作画面を提供する。
【0052】
撮像エリア設定受付モジュール184は、構築されたシステムに関連付けて視覚センサ220の撮像エリアの設定を受付ける。より具体的には、撮像エリア設定受付モジュール184は、3次元仮想空間内に表示されたシミュレーション対象のシステムに対するユーザ操作に応じて、撮像エリアの範囲を決定する。なお、シミュレーション対象のシステムに重ねて、撮像エリアの範囲設定を受付けるようにすることが好ましい。
【0053】
キャリブレーションパラメータ算出モジュール186は、構築されたシステムと設定された撮像エリアとの相対位置関係に基づいて、視覚センサシミュレータ150からの計測結果を、コントローラシミュレータ160での制御演算の入力値に変換するための変換パラメータを算出する。コントローラシミュレータ160は、視覚センサシミュレータ150により生成された計測結果を変換パラメータにより変換した結果を入力として、システムに関連付けられた制御プログラムに従って制御演算を実行する。
【0054】
なお、
図5には、コントローラシミュレータ160により出力される時系列データを用いて、再現モジュール170が構築されたシステムの挙動を再現する構成例を示すが、シミュレーション装置100として、再現モジュール170は必須ではない。例えば、コントローラシミュレータ160により出力される時系列データを外部装置または外部アプリケーションへ出力し、当該外部装置または外部アプリケーションがシステムの挙動を再現するようにしてもよい。あるいは、再現モジュール170は、システムの挙動を再現するための動画像データを生成して任意の記憶媒体に格納するのみであり、当該動画像データを別のアプリケーションが再生するようにしてもよい。
【0055】
(c2:変形例)
図6は、本実施の形態に係るシミュレーション装置の機能構成の変形例を示す模式図である。
図6を参照して、シミュレーション装置100Aは、ソフトウェア機能として、視覚センサシミュレータ150Aと、コントローラシミュレータ160と、再現モジュール170と、ユーザインターフェイスモジュール180Aとを含む。
図5に示すシミュレーション装置100に比較して、キャリブレーションパラメータ算出モジュール186が、ユーザインターフェイスモジュール180Aではなく、視覚センサシミュレータ150Aに実装されている。それ以外の構成については、同様であるので、詳細な説明は繰返さない。
【0056】
図5および
図6から推測できるように、キャリブレーションパラメータ算出モジュール186は、視覚センサシミュレータ150からの計測結果を、コントローラシミュレータ160での制御演算の入力値に変換するための変換パラメータを算出する機能モジュールであり、いずれの機能モジュールの一部として実装されてもよく、あるいは、独立した機能モジュールとして実装されてもよい。
【0057】
<D.処理手順>
次に、本実施の形態に係るシミュレーション装置100を用いたシミュレーションの処理手順について説明する。
【0058】
図7は、本実施の形態に係るシミュレーション装置100を用いたシミュレーションの処理手順を示すフローチャートである。
図7を参照して、まず、シミュレーション装置100は、システムモデルの設定を受付ける(ステップS2)。システムモデルの設定は、システムを構成する各装置の配置位置、動作速度などの設定を含む。システムモデルの設定に基づいて、シミュレーション装置100は、シミュレーション対象のシステムを3次元仮想空間内に仮想的に構築する。
【0059】
シミュレーション装置100は、システムモデル内に設定される視覚センサの撮像エリアを受付ける(ステップS4)。すなわち、シミュレーション装置100は、構築されたシステムに関連付けて視覚センサの撮像エリアの設定を受付ける。
【0060】
続いて、シミュレーション装置100は、システムモデルを制御するための制御プログラムを受付ける(ステップS6)。この制御プログラムは、システムに関連付けられたプログラムであり、コントローラシミュレータ160で実行されることになる。
【0061】
その後、シミュレーション装置100は、構築されたシステムと設定された撮像エリアとの相対位置関係に基づいて、計測結果を制御演算の入力値に変換するための変換パラメータであるキャリブレーションパラメータを算出する。より具体的には、シミュレーション装置100は、設定された撮像エリアの範囲に基づいて、視覚センサシミュレータ150における座標系、システムモデル中のコンベアについての座標系、システムモデル中のロボットにおける座標系との間で、視覚センサシミュレータ150による計測結果を互いに変換するためのキャリブレーションパラメータを算出する(ステップS8)。
【0062】
また、シミュレーション装置100は、視覚センサシミュレータ150で実行されるべき画像計測処理の内容設定を受付ける(ステップS10)。
【0063】
以上の処理により、シミュレーションを行うための設定が完了する。
シミュレーションの開始が指示されると、シミュレーション装置100(
図5に示す視覚センサシミュレータ150)は、予め取得されている画像データ群140のうち、指定された画像データを読出し、視覚センサ220で実行されるように指定された画像計測処理を実行する(ステップS12)。続いて、シミュレーション装置100(
図5に示すコントローラシミュレータ160)は、画像計測処理により出力される計測結果に基づいて、制御プログラムに従う制御演算を実行する(ステップS14)。このとき、シミュレーション装置100は、生成された計測結果をキャリブレーションパラメータ(変換パラメータ)により変換した結果を入力として、システムに関連付けられた制御プログラムに従って制御演算を実行する。
【0064】
シミュレーション装置100は、この制御演算の実行によって算出されるそれぞれの値を時間情報に関連付けて保存する(ステップS16)。シミュレーション装置100は、予め取得されている画像データ群140のうち、指定されたすべての画像データの読出しが完了したか否かを判断する(ステップS18)。指定されたすべての画像データの読出しが完了していなければ(ステップS18においてNOの場合)、ステップS12以下の処理が繰返される。
【0065】
これに対して、指定されたすべての画像データの読出しが完了していれば(ステップS18においてYESの場合)、シミュレーション装置100は、ステップS16において順次保存された時系列データを用いて、システムモデルの挙動を再現する(ステップS20)。シミュレーション装置100は、ユーザ操作に応じて、再現されるシステムモデルの挙動の時間間隔および更新間隔などを適宜変更することができる。
【0066】
以上のような処理手順によって、システムモデルにおけるタクトタイムや性能などを評価することができる。
【0067】
なお、予め取得された画像データ群140の時間的長さ、または、フレーム数がシミュレーションを行うのに十分ではない場合には、画像データ群140を繰返し入力するようにしてもよい。すなわち、ステップS18において、指定されたすべての画像データの読出しが完了すると、先頭の画像データに戻って入力を繰返すようにしてもよい。そして、予め指定された時間または予め指定されたフレーム数についてのシミュレーションが完了した時点で、シミュレーションを終了してもよい。すなわち、シミュレーションの終了条件としては、上述のような画像データの読出し完了に加えて、任意の条件を設定できる。
【0068】
<E.システムモデルの構築>
次に、シミュレーション対象のシステムモデルの構築処理について説明する。システムモデルの構築処理は、主として、モデル構築モジュール182(
図5)によって提供される機能であり、上述の
図7に示すシステムモデルの設定の受付け(ステップS2)に対応する。
【0069】
ユーザは、シミュレーション装置100が提供する編集画面において、シミュレーション対象となるシステムモデルを直接構築してもよいし、予め作成された設計データ(CAD(Computer Aided Design)データなど)を読み込ませることで、システムモデルを構築してもよい。さらに、過去に作成したシステムモデルのデータを読み込んで、編集した上で用いることもできる。
【0070】
すなわち、本実施の形態に係るシミュレーション装置100においては、モデルシステムの構築は、任意の方法を採用することができる。
【0071】
図8は、本実施の形態に係るシミュレーション装置100が提供するシステムモデルの構築に係るユーザインターフェイス画面の一例を示す図である。説明の便宜上、
図8には簡素なピック&プレース動作を行うシステムモデルを示す。
【0072】
より具体的には、
図8に示すユーザインターフェイス画面において、3次元仮想空間300内に2つのコンベア301および302が互いに平行して配置されている。コンベア302の所定位置に対応付けて、2つのロボット311および313が配置されている。このシステムモデルでは、紙面左側から紙面右側に向けてワークをコンベア301で搬送し、ロボット311および313が対象となるワークをピックして、コンベア302上にプレースするようなアプリケーションが想定される。このように、
図8に示すシステムモデルは、コンベアおよびロボットを含む。ロボットは、コントローラシミュレータ160での制御演算の結果に従って動作することになる。
【0073】
図8に示すユーザインターフェイス画面においては、3次元仮想空間300内のオブジェクトを任意の方向からレンダリングすることができる。すなわち、ユーザインターフェイス画面に描画される視点は、ユーザが任意に変更できる。
【0074】
ここで、
図8に示すシステムモデルにおける座標系について説明する。
図9は、本実施の形態に係るシミュレーション装置100により提供される3次元仮想空間内に定義される座標系を説明するための模式図である。
【0075】
図9を参照して、3次元仮想空間300内のX,Y,Z軸がワールド座標系320として定義される。ワールド座標系320は、システムモデルの各部の位置を定義するための基準となる座標系に相当する。
【0076】
一方、コンベア301および302上を搬送されるワークのトラッキングなどを行うために、制御装置(
図5に示すコントローラシミュレータ160)では、コンベア301および302の初期位置を原点としたコンベア座標系303が定義される。コンベア座標系303は、システムモデル中のコンベアについての座標系であり、コンベア301および302の搬送方向、搬送方向に直交する方向、コンベア301および302の搬送面に直交する方向の3つの方向を各軸とする。
【0077】
さらに、ロボット311および313をそれぞれ制御するためのロボット座標系312および314がそれぞれ独立に定義されてもよい。ロボット座標系312および314は、システムモデル中のロボット311および313に関する座標系であり、ロボット311および313の固定フレームの中心を原点とする。ロボット座標系312および314は、ロボットコントローラからみた、ロボット311および313の挙動を制御するために用いられる。
【0078】
さらに、ロボット311および313の先端に把持用のジグなどを装着する場合には、ロボット311および313の先端を原点とするツール座標系がさらに定義されてもよい。
【0079】
<F.撮像エリアの設定およびキャリブレーションパラメータの算出>
次に、システムモデルに設定される撮像エリア、および、撮像エリアに応じて算出されるキャリブレーションパラメータについて説明する。現実の撮像により取得された画像データ群140と、システムモデルでのシミュレーションとを有意に結合するために、本実施の形態に係るシミュレーション装置100は、システムモデルに対して設定される撮像エリアに基づいて、必要なキャリブレーションパラメータを自動的に算出する機能を有している。
【0080】
すなわち、本実施の形態に係るシミュレーション装置100において、ユーザは、構築したシステムモデルに対して、視覚センサに入力する画像データを撮像するための撮像部222の撮像エリアを設定するだけでよい。なお、キャリブレーションパラメータを自動的に算出する機能は任意の構成であり、シミュレーション装置100とは別の装置またはユーザが設定するようにしてもよい。
【0081】
(f1:撮像エリアの設定)
図10は、本実施の形態に係るシミュレーション装置100が提供するシステムモデルに対して撮像エリアを設定するユーザインターフェイス画面の一例を示す図である。
図10を参照して、ユーザは、マウス操作などによって、構築したシステムモデルに対して、撮像エリア330を設定する。ここで、撮像エリア330の各頂点の座標値を(Xa,Ya,Za),(Xb,Yb,Zb),(Xc,Yc,Zc),(Xd,Yd,Zd)とする。
【0082】
図11は、本実施の形態に係るシミュレーション装置100の視覚センサシミュレータ150による計測結果の一例を示す図である。
図11を参照して、視覚センサ220を模擬する視覚センサシミュレータ150は、画素(ピクセル)の集合体である画像データに対して画像計測処理を行うので、その計測結果は画素値で定義されることになる。
図11には、予め登録された画像パターンとのパターンマッチングの結果例を示す図である。画像データ内の2つのオブジェクトが登録された画像パターンと一致しており、その計測結果として、(x1,y1,θ1)および(x2,y2,θ2)が出力されている。この計測結果は、登録されている画像パターンと一致するオブジェクトが存在する位置(いずれもピクセル値)、および、登録されている画像パターンからの回転角(姿勢)を含む。
【0083】
このような、画像データ内の座標値として出力される計測結果を、3次元仮想空間内に構築されるシステムモデルに適合させるために、本実施の形態に係るシミュレーション装置100は、キャリブレーションパラメータを用いて、他の座標系における値に変換する。
【0084】
以下の説明では、
図11に示す画像データ上の座標値を定義する座標系を「カメラ座標系」と称す。シミュレーションを行うことができれば、カメラ座標系からいずれの座標系(ワールド座標系またはロボット座標系)に変換してもよいが、以下の説明では、典型例として、ロボット座標系の値に変換する場合について説明する。すなわち、以下の説明においては、ロボット座標系を基準となる座標系として指定し、カメラ座標系の値をロボット座標系の値に変換する。そして、ロボット座標系でワークの位置および姿勢を算出することになる。
【0085】
本実施の形態に係るシミュレーション装置100において、キャリブレーションパラメータは、以下に示す係数A〜Fを含む。係数A〜Fは、視覚センサシミュレータ150の計測結果を、コントローラシミュレータ160での制御演算の入力値に変換するための変換パラメータに相当する。すなわち、変換パラメータ(係数A〜F)は、計測結果として出力されるカメラ座標系の座標値をロボットの挙動を定義する基準座標系(ロボット座標系)の座標値に変換するパラメータである。
【0086】
以下の変換式に従って、カメラ座標系の座標値(x,y)からロボット座標系の座標値(X,Y)が算出される。なお、一般的な視覚センサでは、高さ方向(Z軸方向)については検出できないので、カメラ座標系では、Z軸が存在しなくてもよい。
【0087】
X=A・x+B・y+C
Y=D・x+E・y+F
上述したように、本実施の形態に係るシミュレーション装置100は、3次元仮想空間内に構築されたシステムと設定された撮像エリアとの相対位置関係に基づいて、変換パラメータを算出する。
【0088】
(f2:係数A〜Fの算出)
キャリブレーションパラメータのうち、係数A〜Fは、カメラ座標系から基準座標系への変換に必要なパラメータである。係数A〜Fは、3次元仮想空間内に設定したカメラ座標系および基準座標系の情報に基づいて算出される。
【0089】
図12は、本実施の形態に係るシミュレーション装置100が提供する3次元仮想空間内に定義される撮像エリアに係るカメラ座標系および基準座標系の関係例を示す模式図である。
【0090】
図12を参照して、まず、撮像エリア330の各頂点c1,c2,c3,c4について、カメラ座標系の座標値および基準座標系の座標値の2種類が算出される。
図12に示す例では、カメラ座標系における各頂点c1,c2,c3,c4の座標値は、以下のように算出される。なお、単位は、いずれもピクセルである。
【0091】
c1=(0,0)
c2=(640,0)
c3=(640,480)
c4=(0,480)
これに対して、基準座標系(ロボット座標系)では、以下のように算出される。なお、単位は、いずれもmmである。
【0092】
c1=(−250,−30)
c2=(−100,−30)
c3=(−100,−130)
c4=(−250,−130)
これらの同じ絶対座標の4点について、2つの座標系からそれぞれ座標値を算出することで、以下のような手順に従って、座標変換のためのパラメータである係数A〜Fを算出できる。
【0093】
本実施の形態に係るシミュレーション装置100が提供する3次元仮想空間は、ワールド座標系で定義されている。そこで、カメラ座標系および基準座標系(ロボット座標系)の座標値をワールド座標系の座標値に一旦変換した上で、キャリブレーションパラメータである係数A〜Fを算出する。
【0094】
但し、以下のような手順に限らず、上述した2つの座標値の組から相互に変換するためのパラメータを算出してもよい。
【0095】
図13は、本実施の形態に係るシミュレーション装置100でのキャリブレーションパラメータの算出手順を示すフローチャートである。
図13を参照して、シミュレーション装置100は、撮像エリア330の各頂点の座標値をワールド座標系の座標値に変換する(ステップS81)。続いて、シミュレーション装置100は、ワールド座標系を基準座標系(ロボット座標系)に変換するためのパラメータを算出する(ステップS82)。シミュレーション装置100は、ステップS82において算出されたパラメータを用いて、撮像エリア330に係るカメラ座標系の各頂点の座標値を基準座標系(ロボット座標系)の座標値に変換する(ステップS83)。
【0096】
最終的に、シミュレーション装置100は、キャリブレーションパラメータ(係数A〜F)を算出する(ステップS84)。
【0097】
以下、
図13の各ステップでの処理の詳細について説明する。
(1)撮像エリア330の各頂点の座標値をワールド座標系の座標値に変換(ステップS81)
図14は、
図13に示すキャリブレーションパラメータの算出手順のステップS81における処理内容を説明するための模式図である。
図14を参照して、撮像エリア330の原点と同じ位置および角度に、拡大率1のオブジェクトBOXを設定する。次に、カメラ原点に関する任意の4点を決定する。
【0098】
撮像エリア330の各頂点Oc,Ac,Bc,Ccについて検討すると、撮像エリア330の長さをLとし、幅をWとすると、オブジェクトBOXに関する、頂点Oc,Ac,Bc,Ccの各々のローカル座標値は、以下のように算出される。
【0099】
Oc=(0,0,0)
Ac=(L,0,0)
Bc=(L,W,0)
Cc=(0,W,0)
ここで、頂点Ocは、拡大率1のオブジェクトBOXの中心座標と一致しているものとする。拡大率1のオブジェクトBOXは、カメラ座標値と全く同じ座標系とすると、オブジェクトBOXの回転行列および平行移動行列から、各頂点Oc,Ac,Bc,Ccのワールド座標系の座標値を算出できる。
【0100】
より具体的には、各頂点Oc,Ac,Bc,Ccのワールド座標系の座標値をそれぞれWOc,WAc,WBc,WCcとすると、各座標値は、以下のように算出される。ここで、Rは、拡大率1のオブジェクトBOXの回転行列であり、Mは、平行移動行列である。
【0101】
WOc=R×Oc+M
WAc=R×Ac+M
WBc=R×Bc+M
WCc=R×Cc+M
(2)ワールド座標系を基準座標系(ロボット座標系)に変換するためのパラメータの算出(ステップS82)
上述のステップS81において算出した、座標値WOc,WAc,WBc,WCcを基準座標系(ロボット座標系)の座標値に変換するためのパラメータを算出する。
【0102】
図15は、
図13に示すキャリブレーションパラメータの算出手順のステップS82における処理内容を説明するための模式図である。
図15を参照して、上述の(1)と同様に、基準座標系(ロボット座標系)と同じ座標系に拡大率1のオブジェクトBOXを設定し、任意の4点を決定する。
【0103】
図15中の各点Or,Ar,Br,Crは、撮像エリアの任意の4点である。点Orは、拡大率1のオブジェクトBOXの中心座標と一致しているものとする。拡大率1のオブジェクトBOXは、基準座標系(ロボット座標系)と全く同じ座標系とすると、オブジェクトBOXの回転行列と平行移動行列から、各点Or,Ar,Br,Crのワールド座標系の座標値を算出することができる。
【0104】
より具体的には、各点Or,Ar,Br,Crのワールド座標系の座標値をそれぞれWOr,WAr,WBr,WCrとすると、各座標値は、以下のように算出される。ここで、Rは、拡大率1のオブジェクトBOXの回転行列であり、Mは、平行移動行列である。
【0105】
WOr=R×Or+M
WAr=R×Ar+M
WBr=R×Br+M
WCr=R×Cr+M
上述の(1)および(2)の算出処理により、基準座標系(ロボット座標系)からみた各点Or,Ar,Br,Crの座標値と、ワールド座標系の原点からみた各点の座標値とが算出される。これらの座標値を使って、ワールド座標系から基準座標系(ロボット座標系)に変換するためのパラメータを算出できる。すなわち、以下の変換式を満たす、係数a,b,c,d,e,fを算出できる。
【0106】
(基準座標系のX)=(ワールド座標系のX)×a+(ワールド座標系のY)×b+c
(基準座標系のY)=(ワールド座標系のY)×d+(ワールド座標系のY)×e+f
(3)カメラ座標系の各頂点の座標値を基準座標系(ロボット座標系)の座標値に変換(ステップS83)。
【0107】
上述の(2)の算出処理により決定された係数a〜fを用いて、WOc,WAc,WBc,WCcを基準座標系(ロボット座標系)の座標値MOc,MAc,MBc,MCcにそれぞれ変換する。
【0108】
(4)キャリブレーションパラメータ(係数A〜F)の算出(ステップS84)。
頂点Oc,Ac,Bc,Ccのカメラ座標系の座標値をそれぞれCOc,CAc,CBc,CCとすると、各座標値は、以下のように算出される。ここで、CVは、ユーザが設定したカメラ撮像画像の縦側の解像度であり、CHは横側の解像度である。
【0109】
COc=(0,0,0)
CAc=(CH,0,0)
CBc=(CH,CV,0)
CCc=(0,CV,0)
これらの4つの座標値と基準座標系(ロボット座標系)の座標値MOc,MAc,MBc,MCcとを用いて、キャリブレーションパラメータ(係数A〜F)を算出できる。すなわち、以下の変換式を満たす、係数A,B,C,D,E,Fを算出できる。
【0110】
(基準座標系のX)=(カメラ座標系のX)×A+(カメラ座標系のY)×B+C
(基準座標系のY)=(カメラ座標系のX)×D+(カメラ座標系のY)×E+F
以上の算出処理によって決定される係数A〜Fがキャリブレーションパラメータとして出力される。
【0111】
(f3:1パルスあたりの移動量の算出)
キャリブレーションパラメータとしては、上述の係数A〜Fに加えて、構築されたシステムにおいてワークを移動させる装置(コンベア230)の単位移動量と、構築されたシステムでのワークの移動速度との換算係数を含んでいてもよい。この換算係数は、コンベア230の単位移動量(典型的には、エンコーダ236からの1パルスあたり)についての、ワークのX軸方向の移動量およびY軸方向の移動量を含む。
【0112】
これらの移動量は、構築されたシステムの挙動を再現する場合に、ワークの時間的変化を算出するために用いられる。すなわち、キャリブレーションパラメータに含まれる1パルスあたりの移動量は、エンコーダ236からのエンコーダ値に基づいてワークの各時点の位置を算出するために必要となる。本実施の形態に係るシミュレーション装置100は、基準座標系(ロボット座標系)に対するコンベアの傾き、および、移動量を算出するための変換係数から、1パルスあたりの移動量を算出する。
【0113】
図16は、本実施の形態に係るシミュレーション装置100での1パルスあたりの移動量の算出手順を説明するための模式図である。
図16には、ワールド座標系のZ軸を中心として、コンベアおよびロボットを回転させたときの例を示す図である。コンベアがZ軸を中心として回転角θだけ回転し、ロボットがZ軸を中心として回転角αだけ回転しているとすると、1パルスあたりの移動量は、以下のように算出される。ここで、lは、コンベア進行方向に対する1パルスあたりの移動量である。
【0114】
1パルスあたりのX軸方向の移動量(X)=l×cos(θ−α)
1パルスあたりのY軸方向の移動量(Y)=l×sin(θ−α)
このように、コンベア進行方向に対する1パルスあたりの移動量に対して、(θ−α)を適用することで、1パルスあたりの移動量を算出できる。
【0115】
図16には、説明の便宜上、ワールド座標系のZ軸のみを中心として、コンベアおよびロボットを回転させた例を示すが、現実のシステムモデルでは、Z軸だけではなく、X軸およびY軸を中心に回転することもある。したがって、各軸についての回転角を考慮して、以下のように算出することになる。
【0116】
現実のシステムモデルに一般化すると、例えば、コンベアは、ワールド座標系のX軸を中心として回転角θx,Y軸を中心として回転角θy,Z軸を中心として回転角θzだけ傾いているとする。また、ロボットは、ワールド座標系のX軸を中心として回転角αx,Y軸を中心として回転角αy,Z軸を中心として回転角αzだけ傾いているとする。
【0117】
まず、3×3の単位行列に対し、X軸を中心として(θx−αx)、Y軸を中心として(θy−αy)、Z軸を中心として(θz−αz)だけ、それぞれ回転させることで回転行列を作成する。
【0118】
コンベアの進行方向に対する1パルスあたりの移動量lは、初期設定値から取得できるので、以下のように、回転行列とシステムモデルのローカル座標軸(l,0,0)とを掛け合わせることで算出される座標値XおよびYが、1パルスあたりのX軸方向の移動量(X)および1パルスあたりのY軸方向の移動量(Y)にそれぞれ相当することにある。ここで、移動量の単位はmmである。
【0119】
移動量(x,y,z)=回転行列×(l,0,0)
1パルスあたりのX軸方向の移動量(X)=移動量(x)[mm]
1パルスあたりのY軸方向の移動量(Y)=移動量(y)[mm]
以上の算出処理によって決定される1パルスあたりのX軸方向の移動量(X)および1パルスあたりのY軸方向の移動量(Y)がキャリブレーションパラメータとして算出される。
【0120】
<G.シミュレーション結果の表示>
次に、シミュレーション結果の表示処理について説明する。シミュレーション結果の表示処理、すなわちシステムモデルの挙動を再現する処理は、主として、再現モジュール170(
図5)によって提供される機能であり、上述の
図7に示すシステムモデルの設定の受付け(ステップS20)に対応する。
【0121】
図17は、本実施の形態に係るシミュレーション装置100が提供するシステムの挙動を再現するユーザインターフェイス画面の一例を示す図である。
図17を参照して、視覚センサシミュレータ150による計測結果を入力とする制御演算の結果に基づいて、構築されたシステムの挙動が再現される。すなわち、コントローラシミュレータ160での制御演算により算出される制御指令に基づいて、ロボット311および313は、その位置および姿勢が順次更新される。これによって、ロボット311および313の動きを観察することができる。
【0122】
また、ユーザインターフェイス画面では、視覚センサシミュレータ150により認識されたワークの情報に基づいて、構築したシステムモデル上にワーク350が表示される。このシステムモデル上にワーク350を表示させることは、構築されたシステムの視覚センサの撮像エリア内に、認識された位置に応じてワーク350を配置することを含む。ワーク350は、コンベア301および303の移動に応じて移動するように表示される。また、ロボット311および313によるピック&プレース動作に応じて、その位置も変化する。このように、視覚センサシミュレータ150で実行される画像計測処理が予め登録された画像パターンに基づいてワークを認識する処理を含む場合には、再現モジュール170は、視覚センサシミュレータ150により認識された存在する各ワークを構築されたシステム上に表示させるとともに、時間の経過に伴ってその位置を更新してもよい。
【0123】
このようなワーク350をトラッキングして表示することで、ユーザは、構築されたシステムの挙動をより容易に認識できる。
【0124】
図17に示すユーザインターフェイス画面においては、3次元仮想空間内のオブジェクトを任意の方向からレンダリングすることができる。すなわち、ユーザインターフェイス画面に描画される視点は、ユーザが任意に変更できる。また、再現する時間幅および再現速度なども任意に指定できる。
【0125】
<H.ワークの表示位置および姿勢>
ここで、
図17に示すワークのトラッキング表示を実現するための処理について説明する。すなわち、ワークの表示位置および姿勢の算出手順について説明する。
【0126】
視覚センサシミュレータ150から出力される計測結果(認識されたワークの位置を含む)は、基準座標系(ロボット座標系)の座標値に変換されて、コントローラシミュレータ160に入力される。一方で、システムモデルは、3次元仮想空間300内のワールド座標系に従って設定されるため、構築されたシステムの挙動を再現する場合には、基準座標系(ロボット座標系)の座標値をワールド座標系の座標値に変換する。すなわち、再現モジュール170は、視覚センサシミュレータ150での画像計測処理によって得られるワークの座標値を、構築されたシステムを定義するワールド座標系の座標値に変換し、各ワークを構築されたシステム上に表示させる。
【0127】
基準座標系(ロボット座標系)の座標値をワールド座標系の座標値に変換するためのパラメータは、上述したような、カメラ座標系の座標値を基準座標系(ロボット座標系)の座標値に変換するためのパラメータの算出と同様の手順で算出できる。
【0128】
具体的には、まず、基準座標系(ロボット座標系)に関する任意の4点について、基準座標系(ロボット座標系)の座標値とワールド座標系の座標値とをそれぞれ算出する。そして、これらの座標値の組から、基準座標系(ロボット座標系)の座標値をワールド座標系の座標値に変換するための係数をA1,B1,C1,D1,E1,F1を算出できる。これらの変換するための係数を用いて、視覚センサシミュレータ150にて検出されたワークの座標値をx,yとすると、コントローラシミュレータ160に入力されたときの初期表示位置は以下のように算出できる。
【0129】
ワークの初期表示位置(X)=A1×x+B1×y+C1
ワークの初期表示位置(Y)=D1×x+E1×y+F1
図5に示す機能構成を採用するシミュレーション装置100では、ワークが撮像されて画像データが生成され、視覚センサシミュレータ150にて当該画像データに対する画像計測処理がなされて、計測結果がコントローラシミュレータ160に入力するまでの間にも、ある程度のタイムラグが発生し得る。一方で、ワークは、コンベアによって搬送されることになるので、このタイムラグの間に移動した距離についても、補正する必要がある。
【0130】
ワークの画像データを取得してからワークの座標値を算出するための間に、ワークが動いた距離を算出する方法の一例として、エンコーダ236(
図1)からのエンコーダ値の差を評価する方法が利用される。上述したように、1パルスあたりの移動量が予め算出されているので、各時点と撮像時との間のエンコーダ値の差から移動距離を算出できる。すなわち、現時点のエンコーダ値をEcとし、撮像時のエンコーダ値をEtとし、コンベアのローカル座標系の変換係数をCとすると、ワークを初期表示した直後にコンベアのローカル座標系のX軸方向に対して、以下の補正距離が加算される。
【0131】
補正距離=(Ec−Et)×C
そして、初期表示以降は、各ワークの表示位置は、エンコーダ値の変化に応じて、順次更新される。このような表示位置の更新処理によって、ワークがコンベア上を流れていく様子を再現できる。
【0132】
図18は、本実施の形態に係るシミュレーション装置100におけるカメラ座標系に応じたワークの姿勢の表示態様を説明するための図である。
図18を参照して、画像データに対するカメラ座標系の設定に依存して、視覚センサシミュレータ150から出力される計測結果に含まれるワークの回転角(姿勢)が3次元仮想空間内におけるワークに反映される。
【0133】
<I.表示例>
図17に示すシステムの挙動を再現するユーザインターフェイスに対して、付加的な情報を同時に表示するようにしてもよい。以下、付加的な情報を表示する例について説明する。
【0134】
(i1:表示例その1)
図19は、本実施の形態に係るシミュレーション装置100が提供するシステムの挙動を再現するユーザインターフェイス画面の別の例を示す図である。
図19に示すユーザインターフェイス画面においては、
図17に示すユーザインターフェイス画面に比較して、視覚センサシミュレータ150で実行される画像計測処理に用いられた入力画像を含む計測結果360が表示されるようになっている。計測結果360は、システムの挙動の再現に合わせて表示される。すなわち、再現モジュール170は、構築されたシステムの挙動とともに、視覚センサシミュレータ150による計測結果を当該計測結果が出力されたタイミングに対応付けて出力する。このとき、視覚センサシミュレータ150による計測結果とともに、当該計測結果の対象となった画像データについても併せて出力するようにしてもよい。この場合には、画像データの上に計測結果をオーバレイ表示してもよいし、入力画像データと計測結果とを並べて表示してもよい。
【0135】
図20は、
図19に示すユーザインターフェイス画面における表示タイミングを説明するための図である。
図20を参照して、画像データが周期的に視覚センサシミュレータ150へ入力されて、画像計測処理が実行されることで画像計測結果が出力される。例えば、画像計測結果の出力タイミングに対応付けて、
図19に示す計測結果360は、更新されることになる。シミュレーションの実行と並行して、その結果を再現する場合に加えて、シミュレーションの実行が完了した後に、その結果を再現してもよい。この場合にも、
図20に示すようなタイミングで、画像データが順次切り替わって表示されてもよい。
【0136】
このような計測結果360の表示・更新タイミングを、システムの挙動と対応付けることで、何らかの問題があった場合の原因追究などが容易化し、システムモデルにおけるタクトタイムや性能などをより正確に評価することができる。
【0137】
(i2:表示例その2)
図21は、本実施の形態に係るシミュレーション装置100が提供するシステムの挙動を再現するユーザインターフェイス画面のさらに別の例を示す図である。
図21に示すユーザインターフェイス画面においては、
図17に示すユーザインターフェイス画面に比較して、3次元仮想空間内に表示される各ワークについて、対応する画像計測処理の結果を示す情報が付加されている。
【0138】
この付加される情報としては、画像計測処理において、予め登録された良品の条件に合致しているか否かといった情報を含み得る。例えば、良品と判断されたワーク352と、不良品と判断されたワーク354とを表示態様を異ならせて仮想的に表示してもよい。
【0139】
すなわち、視覚センサシミュレータ150で実行される画像計測処理が入力された画像データが予め登録された条件に適合しているか否かを判断する処理を含む場合には、再現モジュール170は、構築されたシステム上に表示させる各ワークが予め登録された条件に適合しているか否かを示す情報を付加するようにしてもよい。
【0140】
このような表示態様を採用することで、何らかの問題があった場合の原因追究などが容易化し、システムモデルにおけるタクトタイムや性能などをより正確に評価することができる。
【0141】
<J.利点>
本実施の形態に係るシミュレーション装置100によれば、ワークなどの画像データが予め存在する場合に、その既存の情報に基づいて、必要な設定を行うための手間をより少なくしつつ、対象のシステムの性能などをより正確に評価できる。
【0142】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。