本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。以下で説明される各実施の形態および各変形例は、適宜選択的に組み合わせてもよい。
§1 適用例
まず、本発明が適用される場面の一例について説明する。本実施の形態に係るシミュレーション装置1は、FAに備えられる1つ以上の機器を制御する制御システムの挙動を推定する。1つ以上の機器は、限定されないが、PLC(プログラマブルロジックコントローラ)と協調して動作するロボットを含み得る。ロボットは、ワークを搬送したり、加工したりする。「ワーク」には、最終生成物あるいはその一部、または、中間生成物あるいはその一部などが含まれる。
シミュレーション装置1は、典型的には、ワークを搬送または加工する機器の一例であるロボットの動作を制御するアプリケーションに適用可能である。また、シミュレーション装置1は、ロボットと、ワークの搬送または加工に関連して動作する1つ以上の機器とを備えるシステムについても総合的にシステムの挙動をシミュレーションできる。
図1は、本実施の形態に係るシミュレーション装置1の適用例を示す模式図である。シミュレーション装置1は、制御システムを構成する複数の部品の各々に対応する仮想オブジェクト(以下、単に「オブジェクト」と称する。)を仮想空間に配置し、仮想空間上の仮想視点から見たときのオブジェクトの画像を生成する。ユーザは、生成された画像を確認することにより、制御システムの挙動を把握できる。
仮想空間に配置される各オブジェクトは、対応する部品について準備された形状データによって示される三次元形状を有する。
シミュレーション装置1は、シミュレーションの対象となる制御システムのライフサイクルの各ステップで利用される。制御システムのライフサイクルは、例えば、「投資判断」ステップ、「設計・製作」ステップ、「運用・保守」ステップ、および「品種追加」ステップを含む。「投資判断」ステップでは、制御システムの実現方法の検討、制御システムのROI(Return On Investment:投資収益率)の評価などを行なうために、シミュレーション装置1が利用される。「設計・製作」ステップでは、設計した各機器の動作検証、プログラムのデバッグなどを行なうために、シミュレーション装置1が利用される。「品種追加」ステップでも、追加された品種に応じた各機器の動作検証などを行なうために、シミュレーション装置1が利用される。
制御システムのライフサイクルの進行に応じて、制御システムを構成する各部品の三次元形状を示す形状データは変更され得る。例えば、「投資判断」ステップでは、設計開始前であるため、直方体や円柱などでデフォルメした三次元形状を示す形状データまたは過去に使用した形状データが仮の形状データとしてシミュレーション装置1に設定される。その後、「設定・製作」ステップでは、設計後の三次元形状を示す形状データがシミュレーション装置1に設定される。
シミュレーション装置1は、ユーザ操作に従って、仮想空間における複数のオブジェクトの相対位置を設定する。複数のオブジェクトのいずれかのオブジェクトに対応する形状データが変更されるたびに、当該複数のオブジェクトの相対位置を設定するためのユーザ操作が必要であると、ユーザの設定作業に手間がかかる。本実施の形態に係るシミュレーション装置1は、このようなユーザの設定作業の手間を低減するための構成を備える。
図1に示されるように、シミュレーション装置1は、設定部11と、仮想化部12と、保持部13と、受付部14と、補正部15とを備える。
仮想化部12は、制御システムに含まれる各部品の三次元形状を示す形状データに基づいて、当該三次元形状を有するオブジェクトを仮想空間内に配置する。
設定部11は、制御システムに含まれる対象部品に対応する対象オブジェクト60_1と、対象部品の周辺に位置する周辺部品に対応する周辺オブジェクト60_2とに対する操作に応じて、対象オブジェクト60_1と周辺オブジェクト60_2との相対位置を定義する定義データを設定する。仮想化部12は、定義データによって定義される相対位置を満たすように、仮想空間内の対象オブジェクト60_1および周辺オブジェクト60_2の配置を決定する。
設定部11は、例えば、対象オブジェクト60_1と周辺オブジェクト60_2とに対してそれぞれ設定されたポイント62,61の位置を示す定義データを設定する。ポイント62の位置は、対象オブジェクト60_1に対応する形状データにおいて規定される直交座標系の座標で表される。ポイント61の位置は、周辺オブジェクト60_2に対応する形状データにおいて規定される直交座標系の座標で表される。ポイント62,61は、対象オブジェクト60_1と周辺オブジェクト60_2とが所望の相対位置であるときに互いに重なり合うように設定される。
仮想化部12は、対象オブジェクト60_1に対して設定されたポイント62と、周辺オブジェクト60_2に対して設定されたポイント61とが重なり合うように、対象オブジェクト60_1および周辺オブジェクト60_2を仮想空間内に配置する。
図1に示す例では、設定部11は、仮の形状データによって示される三次元形状を有する対象オブジェクト60_1に対する第1,第2の操作に応じて、ポイント62を設定する。第1の操作は、対象オブジェクト60_1の上面81の幾何中心(以下、単に「中心」と称する。)81aにポイント62を移動させる操作である。第2の操作は、中心81aからZ方向に-40mmだけポイント62を移動させる操作である。
保持部13は、定義データの設定のための操作履歴を保持する。図1に示す例では、保持部13は、対象オブジェクト60_1に対する上記の第1,第2の操作を示す情報を保持する。
受付部14は、形状データの置換指示を受け付ける。図1に示す例では、受付部14は、仮の形状データを、設計後の三次元形状を示す形状データに置き換える置換指示を受け付ける。
補正部15は、置換指示に応じて、置き換え後の形状データによって示される三次元形状を有する対象オブジェクト60_1’に対して保持部13によって保持された操作履歴を適用することにより、定義データを補正する。図1に示す例では、補正部15は、対象オブジェクト60_1’に上記の第1,第2の操作を適用し、対象オブジェクト60_1’に対してポイント62を設定し直す。具体的には、補正部15は、対象オブジェクト60_1’から上面81’を特定し、上面81’の中心81a’にポイント62を移動させる。補正部15は、さらにZ方向に-40mmだけポイント62を移動させる。補正部15は、このようにして得られたポイント62の位置に基づいて、定義データを補正する。
仮想化部12は、置換指示に応じて、仮想空間内の対象オブジェクト60_1を、置き換え後の形状データによって示される三次元形状を有する対象オブジェクト60_1’に置き換える。さらに、仮想化部12は、補正後の定義データによって定義される相対位置を満たすように、対象オブジェクト60_1’および周辺オブジェクト60_2を配置する。図1に示す例では、仮想化部12は、対象オブジェクト60_1’に対して設定されたポイント62’と、周辺オブジェクト60_2に対して設定されたポイント61とが重なり合うように、対象オブジェクト60_1’および周辺オブジェクト60_2を仮想空間内に配置する。
以上のように、シミュレーション装置1は、置換指示に応じて、置き換え前の形状データによって示される三次元形状を有する対象オブジェクト60_1を、置き換え後の形状データによって示される三次元形状を有する対象オブジェクト60_1’に置き換える。さらに、シミュレーション装置1は、対象オブジェクト60_1に対する操作履歴を対象オブジェクト60_1’に適用することにより、定義データを補正する。そして、シミュレーション装置1は、補正後の定義データによって示される相対位置を満たすように、対象オブジェクト60_1’および周辺オブジェクト60_2を仮想空間内に配置する。これにより、ユーザは、形状データを置き換えるときに、対象オブジェクト60_1’に対して、対象オブジェクト60_1に対する操作を繰り返して行なう必要がない。その結果、ユーザによる設定作業の手間を低減できる。
§2.具体例
<A.制御システムの例>
シミュレーション装置1は、生産ラインに備えられる制御システムの挙動を推定する。
図2は、本実施の形態にかかるシミュレーション装置1のシミュレーションの対象となる制御システム2の構成例を示す模式図である。図2を参照して、制御システム2は、情報処理装置100と、PLC200と、コンベア300と、ロボット400と、作業台500と、ロボットコントローラ410と、サーボモータドライバ311,312とを含む。情報処理装置100は、たとえば、PC(Personal Computer)、タブレット端末などの端末装置を含む。
コンベア300は、サーボモータ321,322を有する。サーボモータ321,322が駆動されることにより、コンベア300は、載置されたトレイ510を移動させる。トレイ510には、部品51,52が載せられている。
制御システム2は、さらに、コンベア300に関連して光電センサ330および開閉可能なストッパ340を備える。光電センサ330は、コンベア300の搬送面上に載せられたトレイ510が所定のワークトラッキングエリアに到達したことを検出する。ストッパ340は、トラッキングエリア内に到達したトレイ510を停止(固定)させるように開閉動作する。
ロボット400は、ロボットアームに設置されたサーボモータ421~423と、ロボットアームのフランジ面に取り付けられるロボットハンド402とを有する。ロボット400は、コンベア300上のトレイ510に載置された部品51をロボットハンド402により把持し、作業台500まで部品51を移動させて作業台500上に置く。さらに、ロボット400は、トレイ510に載置された部品52をロボットハンド402により把持し、作業台500上の部品51まで部品52を移動させる。それから、ロボット400は、部品52を部品51に取り付ける。ロボットハンド402は、後述するロボットコントローラ410からの制御指令に従い、部品51,52を把持および解放するための開閉動作を行なう。
PLC200には、ネットワーク3を介して情報処理装置100が接続されている。ネットワーク3には、有線または無線の任意の通信手段が採用され得る。PLC200および情報処理装置100は、例えばUSB(Universal Serial Bus)に従い通信する。情報処理装置100は、制御システム2の挙動をシミュレーションするシミュレーション環境と、コンベア300、ストッパ340およびロボット400を制御するための制御プログラムを設計する環境とを提供する。制御プログラムは、シミュレーションの結果を用いて設計されてもよい。情報処理装置100上で設計された制御プログラムは、ネットワーク3を介してPLC200に送られる。なお、制御プログラムを設計する環境は、情報処理装置100とは異なるコンピュータ装置によって提供されてもよい。
PLC200は、設計された制御プログラムを実行し、実行の結果に従ってロボットコントローラ410、サーボモータドライバ311,312およびストッパ340に対してそれぞれ指令値を与えることで、ロボット400、コンベア300およびストッパ340を制御する。
PLC200には、ロボットコントローラ410、サーボモータドライバ311,312およびストッパ340が接続されている。PLC200、ロボットコントローラ410、サーボモータドライバ311,312およびストッパ340は、フィールドネットワーク4を介してデイジーチェーンで接続されている。フィールドネットワーク4には、たとえば、EtherCAT(登録商標)が採用される。但し、フィールドネットワーク4は、EtherCATに限定されない。
サーボモータドライバ311,312は、コンベア300のサーボモータ321,322をそれぞれ駆動する。サーボモータ321,322の回転軸にはエンコーダ351,352がそれぞれ配置されている。エンコーダ351,352は、サーボモータ321,322のフィードバック値として、サーボモータ321,322の位置(回転角度)、回転速度、累積回転数などをPLC200へそれぞれ出力する。
ロボットコントローラ410は、ロボット400に設けられるサーボモータ421~423を駆動する。サーボモータ421~423の各々の回転軸にはエンコーダ(図示しない)が配置されている。当該エンコーダは、対応するサーボモータのフィードバック値として、サーボモータの位置(回転角度)、回転速度、累積回転数などをロボットコントローラ410へ出力する。
制御システム2において、フィールドネットワーク4に接続される複数の機器、すなわちPLC200、ロボットコントローラ410、サーボモータドライバ311,312およびストッパ340は、互いに時刻同期されたタイマをそれぞれ有する。これらの機器の間では、これらタイマに基づき動作することで、制御指令を含むデータの送受信タイミングが同期されている。このタイマは、同期してインクリメントまたはデクリメントされるカウンタに相当する。
<B.制御システムの全体構成>
図3は、本実施の形態にかかる制御システム2のユニット構成の一例を示す模式図である。図3には、図2の構成を備える制御システム2の全体的な構成が示される。
図3を参照して、制御システム2は、PLC200と、PLC200とフィールドネットワーク4を介して接続されるサーボモータドライバ311,312およびリモートIOターミナル5と、ロボットコントローラ410と、フィールドに設けられたIOデバイス(例えば、光電センサ330、ストッパ340が備える近接センサ341およびエンコーダ351,352など)とを含む。
PLC200は、主たる演算処理を実行する演算ユニット201、1つ以上のIOユニット202および特殊ユニット203を含む。これらのユニットは、システムバス205を介して、データを互いに遣り取りできるように構成されるとともに、電源ユニット204から電源が供給される。演算ユニット201には、ネットワーク3を介して情報処理装置100が接続される。
IOユニット202は、光電センサ330、ストッパ340の近接センサ341、エンコーダ351,352などを含むIOデバイスから検出値を収集する。近接センサ341は、ストッパ340に対するトレイ510が所定距離まで接近したことを非接触で検出する。各IOデバイスからの検出値は、例えばIOユニット202が備えるメモリの対応ビットに設定(書込)される。演算ユニット201は、IOユニット202により収集された検出値を用いて制御プログラムの演算を実行し、演算結果の値をIOユニット202の対応のビットに設定(書込)する。周辺機器またはIOデバイスは、IOユニット202の各ビットの値を参照して動作する。このように、PLC200は、IOユニット202を介してIOデバイスおよび周辺機器と相互にデータを遣り取りしながら、制御対象であるロボット400、コンベア300、ストッパ340などを制御することができる。
特殊ユニット203は、アナログデータの入出力、温度制御、特定の通信方式による通信といった、IOユニット202ではサポートしない機能を有する。
フィールドネットワーク4には、ロボットコントローラ410、サーボモータドライバ311,312、およびリモートIOターミナル5が接続されてもよい。リモートIOターミナル5は、基本的には、IOユニット202と同様に、一般的な入出力処理に関する処理を行う。より具体的には、リモートIOターミナル5は、フィールドネットワーク4でのデータ伝送にかかる処理を行うための通信カプラ501と、1つ以上のIOユニット502とを含む。これらのユニットは、リモートIOターミナルバス503を介して、データを互いに遣り取りできるように構成される。
サーボモータドライバ311,312は、フィールドネットワーク4を介して演算ユニット201と接続されるとともに、演算ユニット201からの指令値に従ってサーボモータ321,322を駆動する。具体的には、サーボモータドライバ311,312は、PLC200からタイマに同期した制御周期などの一定周期で、位置指令値、速度指令値、トルク指令値といった指令値を受ける。演算ユニット201は、これら指令値を、エンコーダ351,352からの検出値に基づき生成する。
演算ユニット201は、上記に述べたIOデバイスからの検出値を参照して制御プログラムを実行することで、ロボット400を動作させる。例えば、演算ユニット201は、光電センサ330の検出値および近接センサ341の検出値に基づいて、ロボットアームのための制御指令とロボットハンド402のための制御指令とを生成し、ロボットコントローラ410に出力する。制御指令を生成する際には、上記に述べたIOデバイスからの検出値に加えて、ロボット400の状態値を参照する。
<C.仮想空間の視覚化>
図4は、本実施の形態にかかるシミュレーション装置1による仮想空間600内に構築されるシステムモデル610を視覚化した一例を示す図である。本実施の形態にかかるシミュレーション装置1は、直交座標系(X軸,Y軸,Z軸)によって表される三次元の仮想空間600に配置されたシステムモデル610の画像をディスプレイに表示する。
システムモデル610は、制御システム2のモデルであり、制御システム2を構成する複数の部品の各々に対応するオブジェクト60によって構成される。
制御システム2を構成する複数の部品は、制御対象部品と、固定部品と、可動部品とを含む。制御対象部品は、PLC200の制御対象となる機器(以下、「制御対象機器」と称する)(図2に示す例では、ロボット400、コンベア300およびストッパ340)を構成する部品である。固定部品および可動部品は、制御対象機器に属さない部品である。固定部品は、固定位置に設置される部品である。固定部品には、例えば、図2に示す光電センサ330および作業台500が含まれる。可動部品は、制御対象機器の動作に応じて移動する部品である。可動部品には、例えば、図2に示す部品51,52およびトレイ510が含まれる。
システムモデル610を構成するオブジェクト60には、制御対象部材に対応するオブジェクト60_A、固定部材に対応するオブジェクト60_B、可動部材に対応するオブジェクト60_Cが含まれる。図4には、ロボット400の本体(アームを含む)に対応するオブジェクト60_A1、ロボットハンド402に対応するオブジェクト60_A2、コンベア300に対応するオブジェクト60_A3、ストッパ340に対応するオブジェクト60_A4、光電センサ330に対応するオブジェクト60_B1、作業台500に対応するオブジェクト60_B2、部品51に対応するオブジェクト60_C1、部品52に対応するオブジェクト60_C2、トレイ510に対応するオブジェクト60_C3が示される。
各オブジェクト60は、対応する部材の三次元形状を示す形状データを用いて構築される。例えば、形状データは、仮に作成されたCADファイルから抽出される。あるいは、形状データは、過去に使用されたCADファイルから抽出されてもよい。シミュレーション装置1は、形状データによって示される三次元形状を有するオブジェクト60を仮想空間600内に配置する。
シミュレーション装置1は、タイムステップ毎に、仮想空間600における各オブジェクト60の位置および姿勢に対応する変数の値を算出する。
図5は、オブジェクト60の位置および姿勢に対応する変数の値の一例を示す図である。オブジェクト60の位置に対応する変数は、仮想空間600の直交座標系(X軸、Y軸、Z軸)における、オブジェクト60に対して予め定められた基準点O(例えばオブジェクト60の重心)のXYZ座標(x,y,z)である。オブジェクト60の姿勢に対応する変数は、オブジェクト60に対して予め定められた3つの基底ベクトルV1,V2,V3とX軸、Y軸、Z軸とのオイラー角(α、β、γ)である。
オブジェクト60の基準点Oは、対応する部品の形状データに基づいて定められる。オブジェクト60の3つの基底ベクトルV1~V3は、対応する部品の形状データにおいて規定される3つの直交座標軸にそれぞれ対応する。
シミュレーション装置1は、タイムステップ毎に算出した各オブジェクト60の変数の値に基づいて、仮想空間600に各オブジェクト60を配置する。シミュレーション装置1は、仮想空間600内において指定された仮想視点から見たときのシステムモデル610を示す画像を生成し、ディスプレイに表示する。これにより、ユーザは、制御システム2の挙動を視覚によって認識できる。
<D.ハードウェア構成>
図6は、本実施の形態に係るシミュレーション装置1を実現するためのハードウェア構成の一例を示す模式図である。シミュレーション装置1は、図6に示すような情報処理装置100が必要なプログラムを実行することで実現される。
情報処理装置100は、主たるコンポーネントとして、オペレーティングシステム(OS:Operating System)および後述するような各種プログラムを実行するプロセッサ102と、プロセッサ102でのプログラム実行に必要なデータを格納するための作業領域を提供する主メモリ104と、キーボードやマウスなどのユーザ操作を受付ける操作ユニット106と、ディスプレイ108と、ネットワーク3を含む各種ネットワークに接続されるネットワークインターフェイス110と、光学ドライブ112と、外部装置と通信するローカル通信インターフェイス116と、ストレージ111とを含む。これらのコンポーネントは、内部バス118などを介してデータ通信可能に接続される。
情報処理装置100は、光学ドライブ112を有しており、コンピュータ読取可能なプログラムを非一過的に格納する光学記録媒体(例えば、DVD(Digital Versatile Disc)など)を含むコンピュータ読取可能な記録媒体114から、各種プログラムを読取ってストレージ111などにインストールする。
情報処理装置100で実行される各種プログラムは、コンピュータ読取可能な記録媒体114を介してインストールされてもよいが、ネットワーク上の図示しないサーバ装置などからネットワークインターフェイス110を介してダウンロードする形でインストールするようにしてもよい。
ストレージ111は、例えば、HDD(Hard Disk Drive)またはSSD(Flash Solid State Drive)などで構成され、プロセッサ102で実行されるプログラムを記憶する。
ストレージ111は、本実施の形態に係るシミュレーションを実現するためのシミュレーションプログラムとして、仮想時刻生成プログラム120、第1シミュレーションプログラム121と、第2シミュレーションプログラム122と、第3シミュレーションプログラム123と、衝突検出プログラム124と、統合プログラム125とを記憶する。
ストレージ111は、シミュレーションの対象となる制御システム2の挙動を定義するためのプロジェクトデータ130を記憶する。プロジェクトデータ130は、ロボット400、コンベア300およびストッパ340の制御プログラム131と、制御システム2を構成する各部品(制御対象部品、固定部品、可動部品)の形状を示す形状データ132と、制御システム2の挙動を算出するために必要なパラメータデータ133とを含む。
ストレージ111は、さらに、プロジェクトデータ130の設定を支援する設定支援プログラム140を記憶する。
ストレージ111は、さらに、仮想空間600内に構築されたシステムモデル610を示す画像を生成する画像処理プログラム150を記憶する。
仮想時刻生成プログラム120は、シミュレーションのための仮想時刻を生成するためのプログラムである。シミュレーション装置1は、仮想時刻に基づき、制御システム2の制御周期でシミュレーションを実行する。
第1シミュレーションプログラム121は、PLC200の挙動をシミュレートするためのプログラムである。第1シミュレーションプログラム121の実行により、仮想PLCから出力される指令値が生成される。
第2シミュレーションプログラム122は、制御対象部品(図2に例示される制御システム2ではロボット400、コンベア300およびストッパ340)に対応するオブジェクト60の挙動を算出するためのプログラムである。
第3シミュレーションプログラム123は、可動部品(図2に例示される制御システム2では部品51,52およびトレイ510)に対応するオブジェクト60の挙動を算出するためのプログラムである。
衝突検出プログラム124は、仮想空間600におけるオブジェクト60同士の衝突を検出するためのプログラムである。
統合プログラム125は、第1シミュレーションプログラム121と第2シミュレーションプログラム122と第3シミュレーションプログラム123と衝突検出プログラム124とを互いに連携させるためのプログラムである。具体的には、統合プログラム125は、仮想空間情報105を生成するとともに、仮想空間情報105を更新する。仮想空間情報105は、主メモリ104に保持される。仮想空間情報105は、第1シミュレーションプログラム121の実行により生成される指令値と、仮想空間600内の各オブジェクト60の位置および姿勢を示す情報(図5に示す変数)とを含む。第1シミュレーションプログラム121、第2シミュレーションプログラム122および第3シミュレーションプログラム123は、仮想空間情報105および衝突検出プログラム124の検出結果を参照して、各シミュレーションの処理を実行するとともに、その実行結果のうち必要な情報を仮想空間情報105に反映する。統合プログラム125が提供する機能により、部品51,52を搬送するコンベア300と、部品51,52を移動させるロボット400とを備える制御システム2の挙動が再現される。
設定支援プログラム140は、プロジェクトデータ130の設定を支援するための画面を生成し、操作ユニット106への操作に応じてプロジェクトデータ130を設定するためのプログラムである。
画像処理プログラム150は、仮想空間情報105とプロジェクトデータ130とに基づき、ディスプレイ108に表示する画像を生成するためのプログラムである。
図6には、単一の情報処理装置100でシミュレーション装置1を実現する例を示したが、複数の情報処理装置を連係させてシミュレーション装置1を実現するようにしてもよい。この場合には、シミュレーション装置1を実現するために必要な処理の一部を情報処理装置100で実行させるとともに、残りの処理をネットワーク上のサーバ(クラウド)などで実行するようにしてもよい。
図6には、プロセッサ102が1または複数のプログラムを実行することで、シミュレーション装置1が実現される例を示すが、シミュレーション装置1を実現するために必要な処理および機能の一部を、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)などを用いて実装するようにしてもよい。
<E.パラメータデータ133>
パラメータデータ133は、シミュレーションの実行のために使用される各種パラメータの値を示す。パラメータデータ133は、ユーザ操作または統合プログラム125などにより適宜変更され得る。
図6に示されるように、パラメータデータ133は、構成データ134と定義データ135とを含む。
構成データ134は、システムモデル610を構成する複数のオブジェクト60の構成情報と、複数のオブジェクト60の各々の位置情報とを含む。構成情報は、システムモデル610を構成する各アセンブリ(トップアセンブリおよびサブアセンブリ)について、配下のオブジェクト60を識別する情報(例えば部品名)と、配下のサブアセンブリを識別するアセンブリ名とを示す。位置情報は、仮想空間600におけるオブジェクト60の初期位置姿勢を示す。
構成データ134は、例えば、制御システム2を構成する複数の部品の三次元形状を示す仮のCADファイルから生成される。
定義データ135は、2つのオブジェクト60の相対位置姿勢を定義する。定義データ135は、2つのオブジェクト60およびその相対位置姿勢の組み合わせごとに設定される。
図7は、定義データ135の一例を示す図である。図7には、ロボットハンド402に対応するオブジェクト60_A2と部品51に対応するオブジェクト60_C1との相対位置姿勢を定義する定義データ135が示される。
定義データ135は、相対位置姿勢が定義される2つのオブジェクト60を識別するデータ135aを含む。データ135aには、例えば、オブジェクト60に対応する部品を識別する部品名が記述される。
定義データ135は、2つのオブジェクト60の各々の属性を示すデータ135bを含む。オブジェクト60の属性として、「親」(以下、「親オブジェクト」と称する。)または「子」(以下、「子オブジェクト」と称する。)が設定される。2つのオブジェクト60のうちの一方のオブジェクト60の移動に応じて他方のオブジェクト60が追従する場合、当該一方のオブジェクト60に対して「親オブジェクト」が設定され、当該他方のオブジェクト60に対して「子オブジェクト」が設定される。
オブジェクト60_C1に対応する部品51は、オブジェクト60_A2に対応するロボットハンド402の移動に応じて、追従する。そのため、オブジェクト60_A2に対して「親オブジェクト」が設定され、オブジェクト60_C1に対して「子オブジェクト」が設定される。
なお、2つのオブジェクト60の両方が可動部品に対応する場合、2つのオブジェクト60のうち制御対象部品に相対的に近い可動部品に対応するオブジェクト60が「親オブジェクト」に設定され、制御対象部品に相対的に遠い可動部品に対応するオブジェクト60が「子オブジェクト」に設定される。
2つのオブジェクト60のうち一方のオブジェクト60が固定部品に対応し、他方のオブジェクト60が可動部品に対応する場合、固定部品に対応するオブジェクト60が「親オブジェクト」に設定され、可動部品に対応するオブジェクト60が「子オブジェクト」に設定される。
さらに、定義データ135は、2つのオブジェクト60に対してそれぞれ設定されたポイントを識別するポイント番号を示すデータ135cを含む。
さらに、定義データ135は、2つのオブジェクト60の相対位置を定義するためのデータ135dを含む。データ135dは、親オブジェクトに対して設定されたポイント(以下、「リンクポイント61」と称する。)と、子オブジェクトに対して設定されたポイント(以下、「マウントポイント62」と称する。)とが一致するときの2つのオブジェクト60の相対位置を定義するために、リンクポイント61とマウントポイント62との位置を示す。リンクポイント61の位置は、親オブジェクトに対応する形状データ132において規定される直交座標系の座標によって表される。マウントポイント62の位置は、親オブジェクトに対応する形状データ132において規定される直交座標系の座標によって表される。データ135dには、データ135cに記述されたポイント番号によって識別されるポイントの位置が記述される。
図7に示す例では、ロボットハンド402に対応するオブジェクト60_A2に対して、2指の先端の中心点がリンクポイント61として設定されている。また、部品51に対応するオブジェクト60_C1に対して、上面の中心から所定距離だけ下方の点がマウントポイント62として設定されている。
さらに、定義データ135は、2つのオブジェクト60の相対姿勢を示すデータ135
eを含む。データ135eは、例えば、親オブジェクトの3つの基底ベクトルVb1~Vb3に対する子オブジェクトの3つの基底ベクトルVa1~Va3のオイラー角を示す。基底ベクトルVb1~Vb3は、親オブジェクトの三次元形状を示す形状データ132において規定される直交座標系の3つの軸をそれぞれ表す。基底ベクトルVa1~Va3は、子オブジェクトの三次元形状を示す形状データ132において規定される直交座標系の3つの軸をそれぞれ表す。
さらに、定義データ135は、有効/無効を切り替えるためのフラグ135fを含む。フラグ135fに「1」が記述されている場合、定義データ135が有効になり、フラグ135fに「0」が記述されている場合、定義データ135が無効になる。フラグ135fは、操作ユニット106への操作に応じて、切り替えられる。これにより、ユーザは、手動で定義データ135の有効/無効を切り替えることができる。また、フラグ135fは、第3シミュレーションプログラム123の実行によっても切り替えられる。これにより、シミュレーション中において動的に定義データ135の有効/無効を切り替えることができる。
定義データ135は、仮想空間600におけるオブジェクト60の位置姿勢を算出するために利用され得る。例えば、定義データ135は、仮想空間600におけるオブジェクト60のレイアウトを設定するために利用される。これにより、オブジェクト60のレイアウトを簡易に設定できる。また、定義データ135は、ロボットハンド402に対応するオブジェクト60_A2の目標軌跡を算出するために利用され得る。
<F.シミュレーションに関する機能構成>
図8は、本実施の形態に係るシミュレーション装置1における、シミュレーションに関する機能構成の一例を示す模式図である。図8に示す機能は、典型的には、情報処理装置100のプロセッサ102がプログラム(仮想時刻生成プログラム120、第1シミュレーションプログラム121、第2シミュレーションプログラム122、第3シミュレーションプログラム123、衝突検出プログラム124、統合プログラム125および画像処理プログラム150など)を実行することで実現される。
図8を参照して、シミュレーション装置1は、仮想空間情報管理モジュール160と、第1シミュレータ161と、第2シミュレータ162と、第3シミュレータ163と、周期生成モジュール164と、衝突検出モジュール165と、3Dビジュアライザ166とを含む。仮想空間情報管理モジュール160と、第1シミュレータ161と、第2シミュレータ162と、第3シミュレータ163と、周期生成モジュール164と、衝突検出モジュール165と、3Dビジュアライザ166とは、図1に示す仮想化部12に相当する。
仮想空間情報管理モジュール160は、統合プログラム125(図6)が実行されることで実現され、シミュレーションが実施される仮想空間600上のシステムモデル610(図4参照)の状態を規定する仮想空間情報105を管理する。
仮想空間情報管理モジュール160は、シミュレーションの開始指示に応じて、パラメータデータ133に含まれる構成データ134(図6参照)に基づいて、システムモデル610を構成する各オブジェクト60の初期位置姿勢を示す情報を仮想空間情報105に反映させる。
周期生成モジュール164は、仮想時刻生成プログラム120が実行されることにより実現される。周期生成モジュール164は、プロセッサ102が有するタイマ(図示せず)の出力に基づき、タイマの出力に同期した信号STを他の各部に出力する。各部は、周期生成モジュール164から信号STが出力される周期(以下、所定のタイムステップという)に同期して処理またはプログラムを実行する。これにより、図8の各部は、所定のタイムステップ毎に互いに同期して実行される。信号STの周期は、図2の制御システム2のフィールドネットワーク4の通信周期(以下、「制御周期」ともいう。)に基づき決定されてもよい。
第1シミュレータ161は、第1シミュレーションプログラム121(図6参照)が実行されることで実現される。第1シミュレータ161は、制御プログラム131に含まれる複数の命令をシミュレートする。制御プログラム131は、例えばサイクリック実行型言語(例えば、ラダー言語)、または逐次実行型の言語(例えばインタプリタ言語)の命令など異なる言語体系の命令を含み得る。そのため、第1シミュレータ161は、これら異なる言語のプログラムを実行可能な実行エンジンを備えている。
制御プログラム131に含まれる複数の命令は、ロボット400の挙動を制御するための命令群、コンベア300の挙動を制御するための命令群、ストッパ340の挙動を制御するための命令群などを含む。
第1シミュレータ161は、ロボット400の挙動を制御するための命令群をシミュレートすることにより、ロボットコントローラ410への指令値を生成する。生成された指令値は、仮想空間情報105に反映される。
ロボット400の挙動を制御するための命令群は、例えば、把持対象物(例えば部品51,52(図2参照))を把持するための命令群、把持対象物を指定対象物(例えば作業台500,部品51(図2参照))まで移動する命令群を含む。これらの命令群は、仮想空間情報105とパラメータデータ133に含まれる定義データ135(図6参照)とに基づき、ロボット400の目標軌跡を算出し、算出された目標軌跡に基づき各軸の挙動を示す指令値など算出する命令などを含む。
例えば、把持対象物を把持するための命令群は、以下の(a1)~(a3)に基づいてロボット400の目標軌跡を算出する命令を含む。
(a1)仮想空間情報105に含まれる、ロボットハンド402に対応するオブジェクト60_A2の位置姿勢を示す情報。
(a2)仮想空間情報105に含まれる、把持対象物に対応するオブジェクト60の位置姿勢を示す情報。
(a3)ロボットハンド402および把持対象物に対応する2つのオブジェクト60の相対位置姿勢を定義する定義データ135。
具体的には、命令群は、(a2)の情報によって示される位置姿勢に対して(a3)の定義データ135によって定義される相対位置姿勢を満たす、ロボットハンド402に対応するオブジェクト60_A2の位置姿勢を算出する命令を含む。さらに、命令群は、算出された位置姿勢を目標位置姿勢として決定する命令を含む。さらに、命令群は、オブジェクト60_A2が他のオブジェクト60と干渉しないように、(a1)の情報によって示される位置姿勢から目標位置姿勢までの目標軌跡を算出する命令を含む。
把持対象物を移動先対象物まで移動する命令群は、以下の(b1)~(b4)に基づいてロボット400の目標軌跡を算出する命令を含む。
(b1)仮想空間情報105に含まれる、ロボットハンド402に対応するオブジェクト60_A2の位置姿勢を示す情報。
(b2)仮想空間情報105に含まれる、移動先対象物に対応するオブジェクト60の位置姿勢を示す情報。
(b3)移動先対象物および把持対象物に対応する2つのオブジェクト60の相対位置姿勢を定義する定義データ135。
(b4)ロボットハンド402および把持対象物に対応する2つのオブジェクト60の相対位置姿勢を定義する定義データ135。
具体的には、命令群は、(b2)の情報によって示される位置姿勢に対して(b3)の定義データ135によって定義される相対位置姿勢を満たす、把持対象物に対応するオブジェクト60の位置姿勢を算出する第1命令を含む。さらに、命令群は、第1命令に従った算出された位置姿勢に対して(b4)の定義データ135によって定義される相対位置姿勢を満たす、ロボットハンド402に対応するオブジェクト60_A2の位置姿勢を算出する第2命令を含む。さらに、命令群は、第2命令に従って算出された位置姿勢を目標位置姿勢として決定する第3命令を含む。さらに、命令群は、オブジェクト60_A2が他のオブジェクト60と干渉しないように、(b1)の情報によって示される位置姿勢から目標位置姿勢までの目標軌跡を算出する第4命令を含む。
第1シミュレータ161は、命令群のシミュレートにより得られる目標軌跡に基づいて、タイムステップごとに、ロボットコントローラ410への指令値を生成する。
第1シミュレータ161は、コンベア300の挙動を制御するための命令群をシミュレートすることにより、コンベア300のサーボモータ321,322を制御するための指令値を生成する。生成された指令値は、仮想空間情報105に反映される。
第1シミュレータ161は、ストッパ340の挙動を制御するための命令群をシミュレートすることにより、ストッパ340の開閉を制御するための指令値を生成する。生成された指令値は、仮想空間情報105に反映される。
第2シミュレータ162は、第2シミュレーションプログラム122(図6)が実行されることで実現され、制御対象部品(ロボット400、コンベア300およびストッパ340)に対応するオブジェクト60の挙動(位置姿勢)を算出する。算出された挙動(位置姿勢)を示す情報は、仮想空間情報105に反映される。
具体的には、第2シミュレータ162は、仮想空間情報105の指令値および各オブジェクト60の現在の位置姿勢に基づいて、制御対象部品(ロボット400、コンベア300およびストッパ340)に対応するオブジェクト60の位置姿勢を算出する。算出された位置姿勢は、仮想空間情報105に反映される。
第3シミュレータ163は、仮想空間600に配置された可動部品に対応するオブジェクト60の位置姿勢を算出する。第3シミュレータ163は、第3シミュレーションプログラム123(図6)が実行されることで実現され、制御対象部品および固定部品に対応するオブジェクト60の位置姿勢の情報に応じて、可動部品に対応するオブジェクト60の位置姿勢を算出する。算出された位置姿勢の情報は、仮想空間情報105に反映される。
具体的には、第3シミュレータ163は、フラグ135f(図7参照)に「1」が記述されている定義データ135を抽出する。第3シミュレータ163は、抽出した定義データ135において親オブジェクトとして設定されているオブジェクト60の位置姿勢を仮想空間情報105から読み出す。第3シミュレータ163は、読み出した位置姿勢に対して定義データ135によって定義される相対位置姿勢を満たす、子オブジェクトとして設定されているオブジェクト60の位置姿勢を算出する。このようにして算出された位置姿勢の情報が仮想空間情報105に反映される。
なお、第3シミュレータ163は、第3シミュレーションプログラム123(図6)に従って、定義データ135のフラグ135fを切り替える。これにより、シミュレーション中において、定義データ135の有効/無効を動的に切り替えることができる。
衝突検出モジュール165は、仮想空間におけるオブジェクト60同士の衝突の有無を検出する。衝突検出モジュール165は、仮想空間情報105によって示されるオブジェクト60の位置姿勢に基づき、オブジェクト60同士の衝突の有無を検出する。「衝突」は、例えば、仮想空間におけるオブジェクト60の座標Pと他のオブジェクト60の座標Qとの両者の距離とが、例えば閾値以下の距離を含む特定距離であるとことを含む。または、座標Pと次位の座標を結ぶ軌跡が、対応の座標Qと次位の座標を結ぶ軌跡と交差したことを含む。閾値は、予め設定される。閾値は、検出対象となる2つのオブジェクト60の組み合わせに応じて設定されてもよい。例えば、光電センサ330およびトレイ510に対応する2つのオブジェクト60同士の衝突を検出するための閾値は、ストッパ340およびトレイ510に対応する2つのオブジェクト60同士の衝突を検出するための閾値よりも大きくなるように設定される。なお、「衝突」を検出するための位置関係は、これらの位置関係に限定されない。
衝突検出モジュール165は、予め指定された2つのオブジェクト60同士の衝突を検出する。具体的には、物体の有無を検出するセンサ(または当該センサを含む部材)および検出対象部材に対応する2つのオブジェクト60が予め指定される。図2に示す制御システム2では、光電センサ330およびトレイ510に対応する2つのオブジェクト60と、ストッパ340およびトレイ510に対応する2つのオブジェクト60とが予め指定される。
衝突検出モジュール165は、指定された2つのオブジェクト60同士の衝突の有無に応じて、当該2つのオブジェクト60のうちの一方に対応するセンサの検出値を生成する。生成された検出値は、第1シミュレータ161に出力される。
例えば、衝突検出モジュール165は、光電センサ330およびトレイ510に対応する2つのオブジェクト60同士の衝突の有無に応じて、光電センサ330の検出値を更新する。第1シミュレータ161は、制御プログラム131のうちの当該検出値に応じて開始すべきプログラムのシミュレートを開始する。
衝突検出モジュール165は、ストッパ340およびトレイ510に対応する2つのオブジェクト60同士の衝突の有無に応じて、ストッパ340が有する近接センサ341の検出値を更新する。第1シミュレータ161は、制御プログラム131のうちの当該検出値に応じて開始すべきプログラムのシミュレートを開始する。
3Dビジュアライザ166は、画像処理プログラム150が実行されることにより実現される。3Dビジュアライザ166は、仮想空間600に配置されたシステムモデル610を視覚化した画像を生成する。3Dビジュアライザ166は、仮想空間情報管理モジュール160が管理する仮想空間情報105と形状データ132とに基づいて、システムモデル610を構成する各オブジェクト60の挙動を視覚化する。
<G.定義データ135の設定に関する機能構成>
第1シミュレータ161は、定義データ135を参照して、ロボット400の目標軌跡を算出し、目標軌跡に従ってロボットコントローラ410への指令値を算出する。第2シミュレータ162は、当該指令値に基づいて、ロボット400に対応するオブジェクト60の位置姿勢を算出する。また、第3シミュレータ163は、定義データ135を参照して、可動部品に対応するオブジェクト60の位置姿勢を算出する。
定義データ135は、2つのオブジェクト60の相対位置を示すデータ135d(図7参照)を含む。具体的には、データ135dは、2つのオブジェクト60に対して設定されたリンクポイント61およびマウントポイント62の位置を示す。また、定義データ135は、2つのオブジェクト60の相対姿勢を示すデータ135e(図7参照)を含む。オブジェクト60の三次元形状は、形状データ132によって示される。
各部品の形状データ132は、制御システム2のライフサイクルの段階に応じて変更され得る。形状データ132の変更に応じて、定義データ135を設定し直す必要があると、定義データ135の設定のためのユーザの手間がかかる。本実施の形態に係るシミュレーション装置1は、定義データ135の設定の手間を低減する機能構成を備える。
図9は、本実施の形態に係るシミュレーション装置1における、定義データ135の設定に関する機能構成の一例を示す模式図である。
シミュレーション装置1は、プロジェクトデータ130を保持する記憶部170を含む。記憶部170は、図6に示す主メモリ104およびストレージ111によって実現される。
シミュレーション装置1は、図1に示す受付部14に対応する構成として、CADファイル読取部171と、解析部172と、アセンブリ情報表示処理部173と、形状表示処理部174と、オブジェクト情報抽出部175と、オブジェクト情報表示処理部176と、置換部177とを備える。これらの構成は、プロセッサ102が設定支援プログラム140を実行することにより実現される。
シミュレーション装置1は、図1に示す設定部11に対応する構成として、定義データ設定部178を備える。定義データ設定部178は、プロセッサ102が設定支援プログラム140を実行することにより実現される。
さらに、シミュレーション装置1は、図1に示す保持部13に対応する構成として、操作履歴生成部179と、記憶部180とを備える。操作履歴生成部179は、プロセッサ102が設定支援プログラム140を実行することにより実現される。記憶部180は、主メモリ104およびストレージ111によって実現される。
さらに、シミュレーション装置1は、図1に示す補正部15に対応する構成として、補正対象選択部182と、データ補正部183とを備える。補正対象選択部182およびデータ補正部183は、プロセッサ102が設定支援プログラム140を実行することにより実現される。
ユーザは、例えば、「投資判断」ステップのために仮に作成したCADファイルをシミュレーション装置1にインポートする。これにより、シミュレーション装置1は、CADファイルから各部材の形状データ132および構成データ134を抽出し、抽出した形状データ132および構成データ134をプロジェクトデータ130内に登録する。CADファイルのインポートの方法として、例えば特許文献1に記載の技術が採用され得る。
定義データ設定部178は、プロジェクトデータ130に含まれる各部品の形状データ132に基づいて、対象部品に対応するオブジェクト60と対象部品の周辺に位置する周辺部品に対応するオブジェクト60との相対位置姿勢を定義する定義データ135を設定する。具体的には、定義データ設定部178は、対象部品および周辺部品に対応する2つのオブジェクト60をディスプレイ108に表示し、2つのオブジェクト60に対する操作に応じて、定義データ135を生成する。生成された定義データ135は、プロジェクトデータ130内に登録される。
すなわち、定義データ設定部178は、親オブジェクトとして設定されたオブジェクト60に対するリンクポイント61の設定のための操作と、子オブジェクトとして設定されたオブジェクト60に対するマウントポイント62の設定のための操作とを受け付ける。定義データ設定部178は、これらの操作に応じて、定義データ135のうち、相対位置を示すデータ135d(図7参照)と、相対姿勢を示すデータ135e(図7参照)とを生成する。
操作履歴生成部179は、定義データ135の設定のために操作履歴を示す操作履歴データ181を生成する。操作履歴生成部179は、部品ごとに、当該部品に対応するオブジェクト60に対するリンクポイント61またはマウントポイント62の設定のための操作履歴を示す操作履歴データを生成する。生成された操作履歴データ181は、部品名と対応付けて記憶部180に保持される。
ユーザは、例えば、仮のCADファイルから抽出された形状データ132に基づいたシミュレーション結果に応じて、制御システム2のライフサイクルを「設計・製作」ステップに進める。ユーザは、例えば、「設計・製作」ステップにおいて設計したCADファイル190をシミュレーション装置1にインポートする。
CADファイル読取部171は、指定されたCADファイル190を読み取る。CADファイル190は、制御システム2を構成する各部品の形状を示す形状データ191と、構成データ192とを含む。構成データ192は、各アセンブリ(トップアセンブリおよびサブアセンブリ)について、配下の部品を識別する部品名と、配下のサブアセンブリを識別するアセンブリ名と、各部品の位置情報とを含む。
解析部172は、読み取られたCADファイル190の構成データ192を解析し、各アセンブリの配下の部品およびサブアセンブリを認識する。
アセンブリ情報表示処理部173は、解析部172の解析結果に応じて、CADファイル190におけるアセンブリ情報(以下、「第1アセンブリ情報」と称する。)をディスプレイ108に表示させる。第1アセンブリ情報は、アセンブリおよび部品の階層構造を示す構成情報である。アセンブリ情報表示処理部173は、ツリー形式で第1アセンブリ情報を表示させることが好ましい。
形状表示処理部174は、CADファイル190から各部品の形状データ191を抽出し、抽出した形状データ191によって示される三次元形状をディスプレイ108に表示する。形状表示処理部174は、構成データ192から各部品の位置情報を抽出し、ディスプレイ108の画面上において、抽出した位置情報に応じて各部品の三次元形状を配置する。
オブジェクト情報抽出部175は、プロジェクトデータ130から、システムモデル610を構成する各オブジェクト60に関する情報(オブジェクト情報)を抽出する。具体的には、オブジェクト情報抽出部175は、プロジェクトデータ130に含まれる、構成データ134と、各部品の形状データ132とを読み出す。
オブジェクト情報表示処理部176は、抽出されたオブジェクト情報をディスプレイ108に表示する。具体的には、オブジェクト情報表示処理部176は、形状データ132によって示される三次元形状を有するオブジェクト60をディスプレイ108に表示する。オブジェクト情報表示処理部176は、構成データ134によって示される位置情報(各部品の初期位置姿勢を示す情報)に従って、ディスプレイ108の画面上においてオブジェクト60を配置する。
さらに、オブジェクト情報表示処理部176は、構成データ134を解析することにより得られるアセンブリ情報(以下、第2アセンブリ情報と称する。)を生成し、生成した第2アセンブリ情報も画面に表示する。オブジェクト情報表示処理部176は、ツリー形式で第2アセンブリ情報を表示させることが好ましい。
置換部177は、プロジェクトデータ130内から選択された1つの形状データ132を、CADファイル190から選択された1つの形状データ191に置き換える置換指示を操作ユニット106から受け付ける。置換部177は、置換指示に応じて、プロジェクトデータ130内の選択された形状データ132を、CADファイル190から選択された形状データ191に置き換える。
補正対象選択部182は、操作ユニット106の操作に従って、補正対象となる定義データ135を決定する。補正対象選択部182は、形状データが置き換えられた部品名をディスプレイ108に表示し、補正の要否の入力を促す。補正対象選択部182は、補正要と入力された部品名が記述されたデータ135a(図7参照)を含む定義データ135を補正対象として決定する。
データ補正部183は、補正要である部品名に対応する操作履歴データ181と、当該部品名に対応する新たな形状データ191とを読み出す。データ補正部183は、新たな形状データ191によって示される三次元形状を有するオブジェクト60’に対して操作履歴データ181によって示される操作履歴を適用する。当該適用により、データ補正部183は、オブジェクト60’に対してリンクポイント61またはマウントポイント62を設定し直す。データ補正部183は、設定したリンクポイント61またはマウントポイント62に応じて、定義データ135のデータ135dおよびデータ135e(図7参照)を補正する。
<H.定義データ135の設定を支援する画面>
図10は、定義データ135の設定を支援する画面例を示す図である。図10に示す画面70は、プロセッサ102が設定支援プログラム140を実行することにより、ディスプレイ108に表示される。図10には、部品名「BodyAssy」に対応するオブジェクト60と周辺のオブジェクト60との相対位置姿勢を定義する定義データ135の設定を支援する画面70が示される。
画面70は、オブジェクト60に対するリンクポイント61およびマウントポイント62の少なくとも一方を設定するための作業領域71を含む。作業領域71には、オブジェクト60に対して拡大、縮小、移動などを行なうためのアイコン群71aも表示される。作業領域71には、設定されたリンクポイント61またはマウントポイント62がオブジェクト60に重畳して表示される。
画面70は、3つのタブ72~74を含む。さらに、画面70は、リンクポイント61およびマウントポイント62の少なくとも一方の一覧が表示される領域78を含む。
タブ72の操作に応じて、プロセッサ102は、領域78内に、設定対象となるオブジェクト60に対して設定されたリンクポイント61の一覧を表示させる。タブ73の操作に応じて、プロセッサ102は、領域78内に、設定対象となるオブジェクト60に対して設定されたマウントポイント62の一覧を表示させる。タブ74の操作に応じて、プロセッサ102は、領域78内に、設定対象となるオブジェクト60に対して設定されたリンクポイント61およびマウントポイント62の一覧を表示させる。図10には、タブ74が操作されたときの画面70が示されている。
領域78内に表示される一覧は、リンクポイント61またはマウントポイント62に対応するレコードを含む。レコードは、リンクポイント61またはマウントポイント62を識別する名称を表示する表示欄と、リンクポイント61またはマウントポイント62の位置およびオブジェクト60の姿勢を示す6つの変数の値を入力するための入力欄とを含む。
図10に例示される画面70は、2つのレコード75,76を含む。レコード75は、部品名「HeadAssy」に対応するオブジェクト60が取り付けられるリンクポイント61に対応する。レコード76は、ロボットハンド402に対応するオブジェクト60によって把持されるマウントポイント62に対応する。
レコード75は、リンクポイント61を識別する名称を表示する表示欄75aと、リンクポイント61の位置およびオブジェクト60の姿勢を示す6つの変数の値を入力するための入力欄75bとを含む。レコード76は、マウントポイント62を識別する名称を表示する表示欄76aと、マウントポイント62の位置およびオブジェクト60の姿勢を示す6つの変数の値を入力するための入力欄76bとを含む。
入力欄75b,76bに表示される6つの変数のうち前半の3つの変数は、リンクポイント61またはマウントポイント62の位置を示すX座標、Y座標、Z座標である。X座標、Y座標、Z座標は、オブジェクト60の三次元形状を示す形状データ132において規定される直交座標系の座標である。
6つの変数のうち後半の3つの変数は、オブジェクト60の姿勢を規定する。具体的には、オブジェクト60の三次元形状を示す形状データ132において規定される直交座標系に対する、オブジェクト60の基底ベクトルのオイラー角である。
画面70は、リンクポイント61またはマウントポイント62を追加するためのボタン77を含む。タブ72が選択された状態でボタン77が操作されることにより、プロセッサ102は、新たなリンクポイント61を作業領域71に表示させるとともに、新たなリンクポイント61に対応するレコードを領域78内の一覧に追加する。タブ73が選択された状態でボタン77が操作されることにより、プロセッサ102は、新たなマウントポイント62を作業領域71に表示させるとともに、新たなマウントポイント62に対応するレコードを領域78内の一覧に追加する。
プロセッサ102は、ボタン77の操作に応じて追加したリンクポイント61またはマウントポイント62に対して、ユニークなポイント番号を付与する。付与されたポイント番号は、ユーザに提示されてもよいし、シミュレーション装置1内で保持されてもよい。ポイント番号により、リンクポイント61およびマウントポイント62の各々が識別される。
プロセッサ102は、ボタン77の操作に応じて追加したリンクポイント61またはマウントポイント62に対して、入力欄の6つの変数をデフォルト値(例えば0)に一旦設定する。その後、作業領域71への操作、または、入力欄への操作に応じて、プロセッサ102は、6つの変数の値を変更する。
ユーザは、作業領域71に表示された新たなリンクポイント61またはマウントポイント62に対する操作を行なうことにより、新たなリンクポイント61またはマウントポイント62の位置を設定する。なお、ユーザは、オブジェクト60における特徴点(例えば、面の中心、稜線の中点、頂点など)を利用して、リンクポイント61またはマウントポイント62を設定したいという要望を持つ。設定支援プログラム140は、このような要望に応えるために、オブジェクト60における特徴点にリンクポイント61またはマウントポイント62を容易に移動させることが可能なスナッピング機能を提供する。スナッピング機能の詳細については後述する。
プロセッサ102は、作業領域71において、リンクポイント61およびマウントポイント62の各々に対して、3つの矢印63x,63y,63zを表示させる。なお、図10において、リンクポイント61に対してのみ、符号「63x,63y,63z」を付している。矢印63x,63y,63zは、オブジェクト60の三次元形状を示す形状データ132において規定される直交座標系を表すX軸,Y軸,Z軸と、オブジェクト60の3つの基底ベクトルV1,V2,V3(図5参照)との角度をそれぞれ調整するために操作される。ユーザは、矢印63x,63y,63zを操作することにより、オブジェクト60の姿勢を変更できる。例えば、プロセッサ102は、矢印63x,63y,63zが1回操作されることにより、所定角度(例えば5度)だけ変更する。
プロセッサ102は、作業領域71への操作に応じて、領域78に表示されるレコードの入力欄75b,76bに表示される6つの変数の値を変更する。
ユーザは、領域78に表示されるレコードの入力欄75b,76bにおいて、6つの変数の値を直接変更する操作を行なってもよい。この場合、プロセッサ102は、入力欄75b,76bに対する操作に応じて、作業領域71に表示されるリンクポイント61またはマウントポイント62の位置、または、オブジェクト60の姿勢を変更する。
プロセッサ102は、画面70に対する操作、および、リンクポイント61とマウントポイント62との関連付けの指示に応じて、定義データ135を設定する。
例えば、ロボットハンド402に対応するオブジェクト60_A2に対して設定されたリンクポイント61と、部品51に対応するオブジェクト60_C1に対して設定されたマウントポイント62とを関連付ける指示に応じて、プロセッサ102は、以下のようにして定義データ135を設定する。
まず、プロセッサ102は、データ135a~135eがnullであり、フラグ135fが「0」である定義データ135を生成する。次に、プロセッサ102は、オブジェクト60_A2,60_C1を識別する部品名をデータ135aに記述する。
プロセッサ102は、リンクポイント61が設定されたオブジェクト60_A2の属性を「親オブジェクト」に設定し、マウントポイント62が設定されたオブジェクト60_C1の属性を「子オブジェクト」に設定する。プロセッサ102は、設定した属性をデータ135bに記述する。
プロセッサ102は、指示されたリンクポイント61に対して付与されたポイント番号と、指示されたマウントポイント62に対して付与されたポイント番号とを、データ135cに記述する。
プロセッサ102は、オブジェクト60_A2に対して設定されたリンクポイント61に対応するレコードの入力欄に示される前半の3つの変数の値を、オブジェクト60_A2に対応するデータ135dに記述する。同様に、プロセッサ102は、オブジェクト60_C1に対して設定されたマウントポイント62に対応するレコードの入力欄に示される前半の3つの変数の値を、オブジェクト60_C1に対応するデータ135dに記述する。
プロセッサ102は、オブジェクト60_A2に対して設定されたリンクポイント61に対応するレコードの入力欄に示される後半の3つの変数の値と、オブジェクト60_C1に対して設定されたマウントポイント62に対応するレコードの入力欄に示される後半の3つの変数の値とに基づいて、オブジェクト60_A2に対するオブジェクト60_C1の相対姿勢を示すオイラー角を算出する。すなわち、プロセッサ102は、各オブジェクト60に規定される直交座標系を重ね合わせたときの、親オブジェクトの基底ベクトルに対する子オブジェクトの基底ベクトルのオイラー角を算出する。プロセッサ102は、算出したオイラー角をデータ135eに記述する。
<I.スナッピング機能>
図11~図13を参照して、設定支援プログラム140によって提供されるスナッピング機能について説明する。
図11は、作業領域71における、オブジェクト60に対するマウントポイント62の設定操作の一例を示す図である。プロセッサ102は、マウントポイント62のドラッグアンドドロップに応じて、オブジェクト60の複数の稜線のうちの1つの稜線上の頂点または中点へマウントポイント62を移動させる移動操作を受け付ける。
具体的には、プロセッサ102は、複数の稜線のうち、ドラッグされているマウントポイント62との距離が閾値未満になった1つの稜線を選択する。プロセッサ102は、選択した稜線80を強調表示させる。なお、稜線には、線分および円弧が含まれ得る。
さらに、プロセッサ102は、選択した稜線80に含まれる頂点80a,80bと、選択した稜線80の中点80cとを強調表示させる。プロセッサ102は、頂点80a,80bおよび中点80cのいずれか1つの特徴点との距離が閾値未満の状態でマウントポイント62がドロップされることにより、マウントポイント62を当該1つの特徴点に移動させる移動操作を受け付ける。
図12は、作業領域71における、オブジェクト60に対するマウントポイント62の設定操作の別の例を示す図である。プロセッサ102は、マウントポイント62のドラッグアンドドロップに応じて、オブジェクト60の複数の面のうちの1つの面の中心にマウントポイント62を移動させる移動操作を受け付ける。
具体的には、プロセッサ102は、複数の面のうち、ドラッグされているマウントポイント62と重なり合う1つの面(図12では上面81)を選択する。プロセッサ102は、選択した上面81を強調表示する。
さらに、プロセッサ102は、選択された上面81の中心81aを強調表示させる。中心81aは、オブジェクト60の特徴点の1つである。プロセッサ102は、中心81aとの距離が閾値未満の状態でマウントポイント62がドロップされることにより、マウントポイント62を中心81aに移動させる移動操作を受け付ける。
図13は、作業領域71における、オブジェクト60に対するマウントポイント62の設定操作のさらに別の例を示す図である。プロセッサ102は、マウントポイント62のドラッグアンドドロップに応じて、オブジェクト60の複数の面のうちの1つの面の中心、当該1つの面の外周に位置する頂点、または、当該1つの面の外周に含まれる稜線の中点にマウントポイント62を移動させる移動操作を受け付ける。
具体的には、プロセッサ102は、複数の面のうち、ドラッグされているマウントポイント62と重なり合う1つの面(図13では上面81)を選択する。プロセッサ102は、選択した上面81を強調表示する。
プロセッサ102は、選択された上面81の中心81aを強調表示させる。さらに、プロセッサ102は、選択された上面81の外周に位置する1つ以上の頂点と、選択された上面81の外周に含まれる稜線の中点とを強調表示させる。図13に示す例では、プロセッサ102は、4つの頂点81b~81eと、4つの稜線81f~81iのそれぞれの中点81j~81mとを強調表示させている。プロセッサ102は、中心81a、頂点81b~81eおよび中点81j~81mのいずれか1つの特徴点との距離が閾値未満の状態でマウントポイント62がドロップされることにより、マウントポイント62を当該1つの特徴点に移動させる移動操作を受け付ける。
図11~図13に例示されるスナッピング機能により、ユーザは、オブジェクト60における特徴点(例えば、面の中心、稜線の中点、頂点)を利用して、リンクポイント61およびマウントポイント62を設定できる。
<J.操作履歴データの生成>
操作履歴データ181は、画面70に対する操作の履歴を示す。図11~図13に示すスナッピング機能により、オブジェクト60における特徴点(例えば、面の中心、稜線の中点、頂点)へのポイントの移動操作が受け付けられると、プロセッサ102は、当該移動操作を示す情報を操作履歴データ181に含める。
例えば、オブジェクト60の面の中心への移動操作を受け付けた場合、プロセッサ102は、操作種別「面の中心への移動」と、移動先の面の法線ベクトルと、移動先の面の中心座標とを示す情報を操作履歴データ181に含める。法線ベクトルおよび中心座標は、オブジェクト60に対応する形状データ132において規定される直交座標系で表される。なお、移動先の面が曲面である場合、プロセッサ102は、曲面の平均法線ベクトルを算出すればよい。
オブジェクト60の稜線の中点への移動操作を受け付けた場合、プロセッサ102は、操作種別「稜線の中点への移動」と、移動先の稜線を形成する2つの面の各々の法線ベクトルと、当該2つの面の各々の中心座標とを示す情報を操作履歴データ181に含める。法線ベクトルおよび中心座標は、オブジェクト60に対応する形状データ132において規定される直交座標系で表される。なお、2つの面のいずれかが曲面である場合、プロセッサ102は、曲面の平均法線ベクトルを算出すればよい。
オブジェクト60の頂点への移動操作を受け付けた場合、プロセッサ102は、操作種別「頂点への移動」と、移動先の頂点で交わる3つ以上の面の各々の法線ベクトルと、当該3つ以上の面の各々の中心座標とを示す情報を操作履歴データ181に含める。法線ベクトルおよび中心座標は、オブジェクト60に対応する形状データ132において規定される直交座標系で表される。なお、3つ以上の面のいずれかが曲面である場合、プロセッサ102は、曲面の平均法線ベクトルを算出すればよい。
また、作業領域71に表示された矢印63x,63y,63z(図10参照)のいずれかへの操作を受け付けると、プロセッサ102は、操作種別「姿勢変更」と矢印の種別(X軸、Y軸、Z軸)とを示す情報を操作履歴データ181に含める。
さらに、操作履歴データ181は、画面70の領域78に表示された入力欄への入力操作を受け付けると、操作種別「値変更」と、入力操作前の入力欄の値と入力操作後の入力欄の値との差分とを示す情報を操作履歴データ181に含める。
図14は、操作履歴データ181の生成例を示す図である。図14には、オブジェクト60の上面81の中心81aへの移動操作と、入力欄への入力操作(Z方向に-40mm移動)とをこの順に受け付けたときの操作履歴データ181の生成例が示される。
図14に示されるように、操作履歴データ181は、上記の2つの操作にそれぞれ対応する2つのレコードを含む。各レコードは、操作順序と操作内容とを示す。
オブジェクト60の上面81の中心81aへの移動操作に応じて、プロセッサ102は、オブジェクト60に対応する形状データ132に基づいて、移動先の上面81の法線ベクトルと、上面81の中心81aの座標とを算出する。プロセッサ102は、操作履歴データ181において、操作順序「No.1」に対応する操作内容に、操作種別「面の中心への移動」と、算出した法線ベクトルおよび中心81aの座標を書き込む。
入力欄への入力操作に応じて、プロセッサ102は、操作履歴データ181において、操作順序「No.2」に対応する操作内容に、操作種別「値変更」と、入力操作前の入力欄の値と入力操作後の入力欄の値との差分(Z方向に-40mm)とを書き込む。
図14に示されるような操作履歴データ181は、リンクポイント61またはマウントポイント62ごとに生成され、リンクポイント61またはマウントポイント62に付与されたポイント番号と対応付けて記憶部180に保持される。
<K.置き換え指示の受け付け>
図15は、形状データの置換指示を受け付けるための画面例を示す図である。図15に示す画面83は、プロセッサ102が設定支援プログラム140を実行することにより、ディスプレイ108に表示される。画面83は、4つの領域84~87を含む。
アセンブリ情報表示処理部173として動作するプロセッサ102は、新たに指定されたCADファイル190の構成データ192(図9参照)を解析することにより得られる第1アセンブリ情報を領域84に表示させる。
さらに、形状表示処理部174として動作するプロセッサ102は、CADファイル190に含まれる各部品の形状データ191(図9参照)に基づいて、各部品の三次元形状を示す画像を領域86に表示させる。なお、各部品のモデルは、構成データ192によって示される位置情報(初期位置姿勢を示す情報)に従って配置される。
オブジェクト情報表示処理部176として動作するプロセッサ102は、プロジェクトデータ130の構成データ134(図9参照)を解析することにより得られる第2アセンブリ情報を領域85に表示させる。
さらに、プロセッサ102は、プロジェクトデータ130の形状データ132(図9参照)に基づいて、システムモデル610を示す画像を領域87に表示させる。なお、システムモデル610を構成する各オブジェクト60は、構成データ134によって示される位置情報(初期位置姿勢を示す情報)に従って配置される。
置換部177として動作するプロセッサ102は、領域84に表示されているアセンブリまたは部品に対するドラッグ操作と、領域85に表示されているアセンブリまたは部品へのドロップ操作とを受け付ける。ドラッグアンドドロップ操作に応じて、プロセッサ102は、ドロップ先(移動先)のアセンブリまたは部品に対応する形状データ132を、ドラッグされたアセンブリまたは部品に対応する形状データ191に置き換える置換指示を受け付ける。
プロセッサ102は、領域86において、ドラッグされたアセンブリまたは部品に対応するモデルを強調表示させてもよい。例えば、プロセッサ102は、ドラッグされたアセンブリまたは部品に対応するモデルを他のモデルと異なる色で表示させる。同様に、プロセッサ102は、領域87において、ドロップ先のアセンブリまたは部品に対応するオブジェクト60を強調表示させてもよい。例えば、プロセッサ102は、ドロップ先のアセンブリまたは部品に対応するオブジェクト60を他のオブジェクト60と異なる色で表示させる。これにより、ユーザは、ドラッグアンドドロップ操作しているアセンブリおよび部品を容易に把握できる。
プロセッサ102は、領域84,85において、置換指示を受け付けたアセンブリまたは部品と、置換指示を受け付けていないアセンブリまたは部品とを異なる表示形式で表示させることが好ましい。これにより、ユーザは、ドラッグアンドドロップ操作の有無を容易に把握できる。
画面83は、OKボタン88とキャンセルボタン89とを含む。キャンセルボタン89の操作に応じて、プロセッサ102は、置換指示の実行をキャンセルし、画面83を閉じる。OKボタン88の操作に応じて、プロセッサ102は、受け付けた置換指示に従って、形状データ132を形状データ191に置き換える処理を実行する。
<L.定義データ135の補正>
図16は、補正対象となる定義データ135を決定するために表示される画面例を示す図である。図16に例示される画面90は、プロセッサ102が設定支援プログラム140を実行することにより、ディスプレイ108に表示される。
補正対象選択部182として動作するプロセッサ102は、形状データが置き換えられた部品名の一覧を画面90に含ませ、各部品について補正の要否の入力を促す。プロセッサ102は、補正要と入力された部品名が記述されたデータ135a(図7参照)を含む定義データ135を補正対象として決定する。
データ補正部183として動作するプロセッサ102は、補正要と入力された部品名に対応する操作履歴データ181と、当該部品名に対応する新たな形状データ191とを読み出す。プロセッサ102は、操作履歴データ181に基づいて、当該操作履歴データ181に対応するポイント番号のポイント(リンクポイント61またはマウントポイント62)を設定し直す。すなわち、プロセッサ102は、形状データ191によって示される三次元形状を有するオブジェクト60’に対してポイント(リンクポイント61またはマウントポイント62)を設定し直す。プロセッサ102は、設定し直したポイントに基づいて、当該ポイントに対応するポイント番号が記述されたデータ135c(図7参照)を含む定義データ135を補正する。
(L-1.操作種別「面の中心への移動」の操作の適用)
操作履歴データ181が操作種別「面の中心への移動」のレコードを含むことに応じて、プロセッサ102は、以下の処理を実行する。
プロセッサ102は、操作種別「面の中心への移動」とともに保持された、法線ベクトルと中心座標とを操作履歴データ181から読み出す。プロセッサ102は、当該法線ベクトルと同一の法線ベクトルを有する面をオブジェクト60’から特定する。プロセッサ102は、条件を満たす面を特定できないことに応じて、補正不可のエラー通知を出力する。
プロセッサ102は、条件を満たす1つの面のみを特定したことに応じて、特定した面の中心座標を算出する。プロセッサ102は、設定対象のポイント(リンクポイント61またはマウントポイント62)を、算出した中心座標の位置に移動させる。
プロセッサ102は、条件を満たす複数の面を特定したことに応じて、当該複数の面の各々の中心座標を算出する。プロセッサ102は、当該複数の面から、操作履歴データ181から読み出した中心座標に最も近い中心座標を有する1つの面を特定する。プロセッサ102は、設定対象のポイント(リンクポイント61またはマウントポイント62)を、特定した面の中心座標の位置に移動させる。
(L-2.操作種別「稜線の中点への移動」の操作の適用)
操作履歴データ181が操作種別「稜線の中点への移動」のレコードを含むことに応じて、プロセッサ102は、以下の処理を実行する。
プロセッサ102は、操作種別「稜線の中点への移動」とともに保持された、稜線を形成する2つの面の各々の法線ベクトルおよび中心座標を操作履歴データ181から読み出す。
プロセッサ102は、上記の2つの面のうちの1つを対象面として順次選択する。プロセッサ102は、対象面の法線ベクトルと同一の法線ベクトルを有する面をオブジェクト60’から特定する。プロセッサ102は、条件を満たす面を特定できないことに応じて、補正不可のエラー通知を出力する。
プロセッサ102は、条件を満たす1つの面のみを抽出したことに応じて、当該1つの面を対象面に対応する面として特定する。
プロセッサ102は、条件を満たす複数の面を抽出したことに応じて、当該複数の面の各々の中心座標を算出する。プロセッサ102は、当該複数の面から、対象面の中心座標に最も近い中心座標を有する面を対象面に対応する面として特定する。
プロセッサ102は、特定した2つの面が交わる稜線を特定する。プロセッサ102は、特定した稜線の中点座標を算出する。プロセッサ102は、設定対象のポイント(リンクポイント61またはマウントポイント62)を、算出した中点座標の位置に移動させる。
(L-3.操作種別「頂点への移動」の操作の適用)
操作履歴データ181が操作種別「頂点への移動」のレコードを含むことに応じて、プロセッサ102は、以下の処理を実行する。
プロセッサ102は、操作種別「頂点への移動」とともに保持された、3つ以上の面の各々の法線ベクトルおよび中心座標を操作履歴データ181から読み出す。
プロセッサ102は、上記の3つ以上の面の1つの面を対象面として順次選択する。プロセッサ102は、対象面の法線ベクトルと同一の法線ベクトルを有する面をオブジェクト60’から特定する。プロセッサ102は、条件を満たす面を特定できないことに応じて、補正不可のエラー通知を出力する。
プロセッサ102は、条件を満たす1つの面のみを抽出したことに応じて、当該1つの面を対象面に対応する面として特定する。
プロセッサ102は、条件を満たす複数の面を抽出したことに応じて、当該複数の面の各々の中心座標を算出する。プロセッサ102は、当該複数の面から、対象面の中心座標に最も近い中心座標を有する面を対象面に対応する面として特定する。
プロセッサ102は、特定した3つ以上の面が交わる頂点座標を算出する。プロセッサ102は、設定対象のポイント(リンクポイント61またはマウントポイント62)を、算出した頂点座標の位置に移動する。
(L-4.操作種別「姿勢変更」の操作の適用)
操作履歴データ181が操作種別「姿勢変更」の操作を含むことに応じて、プロセッサ102は、以下の処理を実行する。プロセッサ102は、操作種別「姿勢変更」に対応する矢印の種別(X軸、Y軸、Z軸)を操作履歴データ181から読み出す。プロセッサ102は、設定対象のポイント(リンクポイント61またはマウントポイント62)に対応する6つの変数のうち、読み出した矢印の種別に対応する変数の値を所定角度(例えば5度)だけ変更する。
(L-5.操作種別「値変更」の操作の適用)
操作履歴データ181が操作種別「値変更」の操作を含むことに応じて、プロセッサ102は、以下の処理を実行する。プロセッサ102は、操作種別「値変更」に対応する、入力操作前の入力欄の値と入力操作後の入力欄の値との差分を操作履歴データ181から読み出す。プロセッサ102は、読み出した差分だけ、設定対象のポイント(リンクポイント61またはマウントポイント62)に対応する6つの変数の値を変更する。
(L-6.オブジェクト60’への操作履歴データ181の適用例)
図17は、置き換え後の形状データ191に対応するオブジェクト60’に対するマウントポイントの設定方法の一例を示す図である。図17には、図14に示す操作履歴データ181をオブジェクト60’に適用することにより、マウントポイント62を設定し直す方法が示される。
プロセッサ102は、操作順序「No.1」に対応する操作内容に基づいて、法線ベクトル(0,0,1)を有する面(図17では上面81’)をオブジェクト60’から特定する。プロセッサ102は、特定した上面81’の中心座標を算出する。プロセッサ102は、マウントポイント62を、算出した中心座標の位置(中心81a’)へ移動させる。
次に、プロセッサ102は、操作順序「No.2」に対応する操作内容に基づいて、マウントポイント62に対応する変数のうちZ座標に対応する変数の値を差分(-40mm)だけ変更する。
プロセッサ102は、このようにしてオブジェクト60’に対してマウントポイント62に対応する6つの変数値を設定し直す。プロセッサ102は、設定された6つの変数の値を用いて、当該マウントポイント62を識別するポイント番号が記述されたデータ135cを含む定義データ135を補正する。
<M.定義データ135の補正に付随する処理例>
定義データ135の補正に伴い、シミュレーションの挙動が変化する。典型的には、第3シミュレータ163は、可動部品に対応するオブジェクト60_Cと制御対象部品に対応するオブジェクト60_Aとの相対位置姿勢を定義する定義データ135の補正に伴い、オブジェクト60_Aに対するオブジェクト60_Cの相対位置姿勢を変更する。
また、上述したように、定義データ135は、ロボットハンド402に対応するオブジェクト60_A2の目標軌跡の算出に利用される。そのため、定義データ135の補正に伴い、第1シミュレータ161は、オブジェクト60_A2の目標軌跡を変更する。
図18は、定義データの補正に伴う目標軌跡の変更例を示す図である。図18(a)~(c)には、オブジェクト60_C1をピッキングするときのオブジェクト60_A2の目標軌跡が示される。目標軌跡は、オブジェクト60_C1に対して設定されたマウントポイント62とオブジェクト60_A2に対して設定されたリンクポイント61とに基づいて設定される定義データ135を用いて算出される。
部品51に対応する形状データ132が新たな形状データ191に置き換えられたことに応じて、形状データ191に対応するオブジェクト60_C1’に対してマウントポイント62が設定し直される。その結果、定義データ135が補正される。
図18(d)~(f)には、補正後の定義データ135を用いて算出された目標軌跡が示される。図示されるように、オブジェクト60_C1がオブジェクト60_C1’に置き換えられたことに応じて、目標軌跡が変更されている。具体的には、目標軌跡が上方に移動している。
目標軌跡は、ロボットハンド402が取り付けられるロボットアームに対応するオブジェクト60のフランジ面が通過すべき複数の教示点66で表される。第3シミュレータ163は、定義データ135の補正に伴い、教示点66を補正すればよい。
<N.定義データの設定処理の流れ>
図19は、定義データの設定処理の流れを示すフローチャートである。図19に示されるように、プロセッサ102は、新たなオブジェクト60の追加指示を受け付ける(ステップS1)。
次に、プロセッサ102は、ユーザ操作に応じて、追加されるオブジェクト60の三次元形状を示す形状データ132を設定する(ステップS2)。例えば、ユーザは、仮のCADファイルに含まれる形状データ、あるいは、過去に作成済みの形状データを指定する。
次に、プロセッサ102は、ユーザ操作に応じて、追加されるオブジェクト60に対してリンクポイント61およびマウントポイント62の少なくとも1つを設定する(ステップS3)。具体的には、プロセッサ102は、設定対象となるポイント(リンクポイント61またはマウントポイント62)について、当該ポイントの位置とオブジェクト60の姿勢とを示す6つの変数の値を設定する。
次に、プロセッサ102は、ステップS3において受け付けた操作履歴を示す操作履歴データ181を生成し、生成した操作履歴データ181を保持する(ステップS4)。
次に、プロセッサ102は、追加されたオブジェクト60と、その周辺のオブジェクト60との相対位置姿勢を定義する定義データ135を生成し、プロジェクトデータ130に登録する(ステップS5)。ステップS5の後、プロセッサ102は、定義データの設定処理を終了する。
<O.定義データの補正処理の流れ>
図20は、定義データの補正処理の流れを示すフローチャートである。図20に示されるように、プロセッサ102は、新たなCADファイル190指定を受け付ける(ステップS11)。
次に、プロセッサ102は、指定されたCADファイル190を読み取る(ステップS12)。プロセッサ102は、読み取ったCADファイル190を解析する(ステップS13)。プロセッサ102は、解析の結果に応じて、CADファイル190におけるアセンブリ情報(第1アセンブリ情報)をディスプレイ108に表示する(ステップS14)。さらに、プロセッサ102は、CADファイル190によって示される各部品の三次元形状をディスプレイ108に表示する(ステップS15)。
次に、プロセッサ102は、プロジェクトデータ130の構成データ134に基づいて、システムモデル610のアセンブリ情報(第2アセンブリ情報)をディスプレイ108に表示する(ステップS16)。さらに、プロセッサ102は、プロジェクトデータ130の形状データ132に基づいて、システムモデル610を構成するオブジェクト60をディスプレイ108に表示する(ステップS17)。
次に、プロセッサ102は、形状データの置換指示を受け付ける(ステップS18)。プロセッサ102は、置換指示に従って、プロジェクトデータ130に含まれる形状データ132をCADファイル190に含まれる形状データ191に置き換える(ステップS19)。
次に、プロセッサ102は、定義データ135の自動補正の要否を判断する(ステップS20)。例えば、プロセッサ102は、図16に示す画面90において補正要が入力されたことに応じて、定義データ135の自動補正要と判断する。
ステップS20においてYESの場合、プロセッサ102は、置き換え後の形状データ191によって示される三次元形状を有するオブジェクト60’に対して操作履歴データ181を適用する(ステップS21)。これにより、オブジェクト60’に対して、リンクポイント61またはマウントポイント62が設定される。具体的には、プロセッサ102は、設定対象となるポイント(リンクポイント61またはマウントポイント62)について、当該ポイントの位置とオブジェクト60の姿勢とを示す6つの変数の値を設定する。
プロセッサ102は、ステップS21において設定された6つの変数値を用いて、定義データ135を補正する(ステップS22)。ステップS22の後、プロセッサ102は、定義データ135の補正処理を終了する。
<P.作用効果>
以上のように、シミュレーション装置1は、制御システム2の挙動を推定する。シミュレーション装置1は、仮想化部12と、設定部11と、保持部13と、受付部14と、補正部15とを備える。仮想化部12は、例えば、制御システム2に含まれる部品51の三次元形状を示す形状データ132に基づいて、当該三次元形状を有するオブジェクト60_C1を仮想空間600内に配置する。設定部11は、例えば、オブジェクト60_C1と部品51の周辺に位置するロボットハンド402に対応するオブジェクト60_A2とに対する操作に応じて、オブジェクト60_C1とオブジェクト60_A2との相対位置を定義する定義データ135を設定する。仮想化部12は、定義データ135によって定義される相対位置を満たすようにオブジェクト60_A2,60_C1を仮想空間600内に配置する。保持部13は、定義データ135の設定のための操作履歴を示す操作履歴データ181を保持する。受付部14は、例えば、形状データ132を、部品51の新たな三次元形状を示す形状データ191に置き換える置換指示を受け付ける。補正部15は、上記の置換指示に応じて、形状データ191によって示される三次元形状を有するオブジェクト60_C1’に対する操作履歴の適用により、定義データ135を補正する。仮想化部12は、上記の置換指示に応じて、仮想空間600内のオブジェクト60_C1をオブジェクト60_C1’に置き換えるとともに、補正後の定義データ135によって定義される相対位置を満たすようにオブジェクト60_A2,60_C1を配置する。
上記の構成により、ユーザは、形状データを置き換えるときに、オブジェクト60_C1’に対して、オブジェクト60_C1に対する操作を繰り返して行なう必要がない。その結果、ユーザによる設定作業の手間を低減できる。
<Q.変形例>
(Q-1.変形例1)
上記の説明において、プロセッサ102は、操作履歴データ181から読み出した法線ベクトルと同一の法線ベクトルを有する面をオブジェクト60’から特定するものとした。しかしながら、プロセッサ102は、操作履歴データ181から読み出した法線ベクトルとのなす角度が予め定められた範囲(例えば0~5°の範囲)内の法線ベクトルを有する面をオブジェクト60’から特定してもよい。
(Q-2.変形例2)
上記の説明では、構成データ134が各オブジェクト60の初期位置姿勢を示す位置情報を含むものとした。しかしながら、オブジェクト60の初期位置姿勢は、定義データ135に基づいて決定されてもよい。
通常、初期位置姿勢にあるオブジェクト60は、当該オブジェクト60が有する平面と他のオブジェクト60が有する平面とが接触した状態である。そのため、オブジェクト60の初期位置姿勢を決定するために利用される定義データ135は、2つのオブジェクト60の各々の平面上に設定されたポイント(リンクポイントまたはマウントポイント)に基づいて設定される。すなわち、プロセッサ102は、オブジェクト60が有するいずれかの平面上の点をリンクポイントまたはマウントポイントとして受け付ける。
図21は、オブジェクト60の初期位置姿勢の決定方法の一例を示す図である。図21(a)には、部品51に対応する形状データ132によって示されるオブジェクト60_C1の初期位置姿勢の決定方法が示される。図21(b)には、置き換え後の形状データ191によって示されるオブジェクト60_C1’の初期位置姿勢の決定方法が示される。
図21(a)に示す例では、プロセッサ102は、オブジェクト60_C1に対して、右側面65の中心をマウントポイント65aとして設定する操作を受け付ける。さらに、プロセッサ102は、トレイ510に対応するオブジェクト60_C3に対して、上面64上の点をリンクポイント64aとして設定する操作を受け付ける。さらに、プロセッサ102は、オブジェクト60_C3の上面64に右側面65が接触するようにオブジェクト60_C1を配置したときの、オブジェクト60_C3に対するオブジェクト60_C1の相対姿勢を設定する操作を受け付ける。プロセッサ102は、受け付けた操作に従って、オブジェクト60_C1の初期位置姿勢を決定するために利用される定義データ135を設定する。定義データ135に従って、プロセッサ102は、リンクポイント64aとマウントポイント65aとが一致し、かつ、設定された相対姿勢となるように、オブジェクト60_C1をオブジェクト60_C3の上面64上に配置する。
上記の実施の形態と同様に、定義データ135の設定のための操作履歴を示す操作履歴データ181が保持される。すなわち、操作種別「面の中心への移動」と、移動先の右側面65の法線ベクトルと、右側面65の中心座標とを示すレコードが操作履歴データ181に追加される。
部品51に対応する形状データ132が新たな形状データ191に置き換えられると、プロセッサ102は、形状データ191によって示される三次元形状を有するオブジェクト60_C1’に対して、操作履歴データ181によって示される操作を適用する。これにより、図21(b)に示されるように、プロセッサ102は、右側面65の法線ベクトルと同じ法線ベクトルを有する右側面65’の中心をマウントポイント65aとして設定する。プロセッサ102は、新たに設定されたマウントポイント65aに基づいて、定義データ135を補正する。補正後の定義データ135に従って、プロセッサ102は、リンクポイント64aとマウントポイント65aとが一致するように、オブジェクト60_C1’をオブジェクト60_C3の上面64上に配置する。
(Q-3.変形例3)
上述したように、第1シミュレータ161は、オブジェクト60_A2が他のオブジェクト60と干渉しないように、目標位置姿勢までの目標軌跡を算出する。目標軌跡は、図18に示されるように、目標軌跡は、ロボットハンド402が取り付けられるロボットアームに対応するオブジェクト60のフランジ面が通過すべき複数の教示点66で表される。
第1シミュレータ161は、他のオブジェクト60に対応する形状データ132の置き換えに応じて、目標軌跡(すなわち教示点66)を変更してもよい。
図22は、形状データの置き換えに応じた教示点66の変更処理の一例を示す図である。図22には、形状データの置き換えにより、オブジェクト60_Bがオブジェクト60_B’に置き換えられたときの目標軌跡の変更例が示される。
図22(a)には、形状データの置き換え前に算出された目標軌跡と、オブジェクト60_Bとが示される。図示されるように、第1シミュレータ161は、オブジェクト60_Bと干渉しないように目標軌跡(すなわち教示点66)を算出している。
図22(b)には、形状データの置き換え前に算出された目標軌跡と、オブジェクト60_B’とが示される。図示されるように、目標軌跡がオブジェクト60_B’と干渉している。
図22(c)には、形状データの置き換え後に算出された目標軌跡と、オブジェクト60_B’とが示される。図示されるように、第1シミュレータ161は、新たな形状データに基づいて、オブジェクト60_B’と干渉しないように目標軌跡(すなわち教示点66)を補正している。具体的には、第1シミュレータ161は、オブジェクト60_B’の表面との距離が予め定められた閾値以上になるように、教示点66を補正する。
<R.付記>
以上のように、本実施の形態は以下のような開示を含む。
(構成1)
制御システム(2)の挙動を推定するシミュレーション装置(1,100)であって、
前記制御システム(2)に含まれる対象部品(51)の第1の三次元形状を示す第1の形状データ(132)に基づいて、前記第1の三次元形状を有する第1の対象オブジェクト(60,60_C1)を仮想空間内に配置するための仮想化手段(12,102,166)と、
前記第1の対象オブジェクト(60_1,60_C1)と前記対象部品(51)の周辺に位置する周辺部品(402)に対応する周辺オブジェクト(60_2,60_A2,60_C3)とに対する操作に応じて、前記第1の対象オブジェクト(60_1,60_C1)と前記周辺オブジェクト(60_2,60_A2,60_C3)との相対位置を定義する定義データ(135)を設定するための設定手段(11,102,178)とを備え、
前記仮想化手段(12,102,166)は、前記定義データ(135)によって定義される相対位置を満たすように、前記仮想空間内の前記第1の対象オブジェクト(60_1,60_C1)および前記周辺オブジェクト(60_2,60_A2,60_C3)の配置を決定し、
前記シミュレーション装置(1,100)は、さらに、
前記定義データ(135)の設定のための操作履歴を保持するための保持手段(13,102,179)と、
前記第1の形状データ(132)を、前記対象部品(51)の第2の三次元形状を示す第2の形状データ(191)に置き換える指示を受け付けるための受付手段(14,102,177)と、
前記指示に応じて、前記第2の三次元形状を有する第2の対象オブジェクト(60,60_1’,60_C1’)に対する前記操作履歴の適用により、前記定義データ(135)を補正するための補正手段(15,102,183)とを備え、
前記仮想化手段(12,102,166)は、前記指示に応じて、前記仮想空間内の前記第1の対象オブジェクト(60_1,60_C1)を前記第2の対象オブジェクト(60_1’,60_C1’)に置き換えるとともに、補正後の前記定義データ(135)によって定義される相対位置を満たすように前記第2の対象オブジェクト(60_1’,60_C1’)および前記周辺オブジェクト(60_2,60_A2,60_C3)を配置する、シミュレーション装置(1,100)。
(構成2)
前記定義データ(135)は、前記第1の対象オブジェクト(60_1,60_C1)と前記周辺オブジェクト(60_2,60_A2,60_C3)との相対姿勢をさらに定義し、
前記仮想化手段(12,102,166)は、さらに、
前記定義データ(135)によって定義される相対姿勢を満たすように前記第1の対象オブジェクト(60_1,60_C1)および前記周辺オブジェクト(60,60_A2)を前記仮想空間内に配置し、
補正後の前記定義データ(135)によって定義される相対姿勢を満たすように第2の対象オブジェクト(60_1’,60_C1’)および周辺オブジェクト(60_2,60_A2,60_C3)を仮想空間内に配置する、構成1に記載のシミュレーション装置(1,100)。
(構成3)
前記定義データ(135)は、前記第1の対象オブジェクト(60_1,60_C1)に対して設定された第1のポイント(62,65a)と前記周辺オブジェクト(60_2,60_A2,60_C3)に対して設定された第2のポイント(61,64a)とが一致するときの前記第1の対象オブジェクト(60_1,60_C1)と前記周辺オブジェクト(60_2,60_A2,60_C3)との相対位置を定義するために、前記第1のポイント(62,65a)の位置と前記第2のポイント(61,64a)の位置とを示し、
前記保持手段(13,102,179)は、前記第1のポイント(62,65a)を前記第1の対象オブジェクト(60_1,60_C1)の面の中心に移動させる移動操作が行なわれたことに応じて、移動先の面の法線ベクトルを保持し、
前記第2の対象オブジェクト(60_1’,60_C1’)に対する前記移動操作の適用は、
保持された法線ベクトルと同一の法線ベクトル、または、前記保持された法線ベクトルとのなす角度が予め定められた範囲内の法線ベクトルを有する面を前記第2の対象オブジェクト(60_1’,60_C1’)から特定することと、
特定された面の中心を特定することとを含み、
前記補正手段(15,102,183)は、特定された中心に基づいて前記第1のポイントの位置を補正する、構成1または2に記載のシミュレーション装置(1,100)。
(構成4)
前記保持手段(13,102,179)は、前記移動先の面の中心座標をさらに保持し、
前記第2の対象オブジェクト(60_1’,60_C1’)に対する前記移動操作の適用は、さらに、
前記保持された法線ベクトルと同一の法線ベクトル、または、前記保持された法線ベクトルとのなす角度が予め定められた範囲内の法線ベクトルを有する複数の面を前記第2の対象オブジェクト(60_1’,60_C1’)から特定することに応じて、前記複数の面の中から、保持された中心座標に最も近い中心座標を有する面を特定することを含む、構成3に記載のシミュレーション装置(1,100)。
(構成5)
前記定義データ(135)は、前記第1の対象オブジェクト(60_1,60_C1)に対して設定された第1のポイント(62,65a)と前記周辺オブジェクトに対して設定された第2のポイント(61,64a)とが一致するときの前記第1の対象オブジェクトと前記周辺オブジェクトとの相対位置を定義するために、前記第1のポイント(62,65a)の位置と前記第2のポイント(61,64a)の位置とを示し、
前記保持手段(13,102,179)は、前記第1のポイントを前記第1の対象オブジェクト(60_1,60_C1)の稜線の中点に移動させる移動操作が行なわれたことに応じて、移動先の稜線を形成する2つの面の各々の法線ベクトルを保持し、
前記第2の対象オブジェクト(60_1’,60_C1’)に対する前記移動操作の適用は、
前記2つの面の各々について、当該面の法線ベクトルと同一の法線ベクトル、または、当該面の法線ベクトルとのなす角度が予め定められた範囲内の法線ベクトルを有する面を前記第2の対象オブジェクト(60_1’,60_C1’)から特定することと、
特定した2つの面が交わる稜線を特定することと、
特定された稜線の中点を特定することとを含み、
前記補正手段(15,102,183)は、特定された中点に基づいて前記第1のポイント(62,65a)の位置を補正する、構成1または2に記載のシミュレーション装置(1,100)。
(構成6)
前記保持手段(13,102,179)は、前記2つの面の各々の中心座標をさらに保持し、
前記第2の対象オブジェクト(60_1’,60_C1’)に対する前記移動操作の適用は、さらに、
前記2つの面の各々について、当該面の法線ベクトルと同一の法線ベクトル、または、当該面の法線ベクトルとのなす角度が予め定められた範囲内の法線ベクトルを有する複数の面を前記第2の対象オブジェクト(60_1’,60_C1’)から特定することに応じて、前記複数の面の中から、保持された中心座標に最も近い中心座標を有する面を特定することを含む、構成5に記載のシミュレーション装置(1,100)。
(構成7)
前記定義データ(135)は、前記第1の対象オブジェクト(60_1,60_C1)に対して設定された第1のポイント(62,65a)と前記周辺オブジェクトに対して設定された第2のポイント(61,64a)とが一致するときの前記第1の対象オブジェクト(60_1,60_C1)と前記周辺オブジェクト(60_2,60_A2,60_C3)との相対位置を定義するために、前記第1のポイント(62,65a)の位置と前記第2のポイント(61,64a)の位置とを示し、
前記保持手段(13,102,179)は、前記第1の対象オブジェクト(60_1,60_C1)から、前記第1のポイントを前記第1の対象オブジェクト(60_1,60_C1)の頂点へ移動させる移動操作が行なわれたことに応じて、移動先の頂点で交わる3つ以上の面の各々の法線ベクトルを保持し、
前記第2の対象オブジェクト(60_1’,60_C1’)に対する前記移動操作の適用は、
前記3つ以上の面の各々について、当該面の法線ベクトルと同一の法線ベクトル、または、当該面の法線ベクトルとのなす角度が予め定められた範囲内の法線ベクトルを有する面を前記第2の対象オブジェクト(60_1’,60_C1’)から特定することと、
特定した3つ以上の面が交わる頂点を特定することとを含み、
前記補正手段(15,102,183)は、特定された頂点に基づいて前記第1のポイントの位置を補正する、構成1または2に記載のシミュレーション装置(1,100)。
(構成8)
前記保持手段(13,102,179)は、前記3つ以上の面の各々の中心座標をさらに保持し、
前記第2の対象オブジェクト(60_1’,60_C1’)に対する前記移動操作の適用は、さらに、
前記3つ以上の面の各々について、当該面の法線ベクトルと同一の法線ベクトル、または、当該面の法線ベクトルとのなす角度が予め定められた範囲内の法線ベクトルを有する複数の面を前記第2の対象オブジェクト(60_1’,60_C1’)から特定することに応じて、前記複数の面の中から、保持された中心座標に最も近い中心座標を有する面を特定することを含む、構成7に記載のシミュレーション装置(1,100)。
(構成9)
前記周辺部品(402)は、前記対象部品を搬送するためのロボットハンドであり、
前記シミュレーション装置(1,100)は、
前記定義データ(135)を用いて、前記周辺オブジェクトの目標軌跡を算出するシミュレータ(102,161)をさらに備え、
前記シミュレータ(102,161)は、前記定義データ(135)の補正に応じて、前記目標軌跡を変更する、構成1から8のいずれかに記載のシミュレーション装置(1,100)。
(構成10)
制御システム(2)の挙動を推定するシミュレーション方法であって、
前記制御システム(2)に含まれる対象部品(51)の第1の三次元形状を示す第1の形状データ(132)に基づいて、前記第1の三次元形状を有する第1の対象オブジェクト(60_1,60_C1)を仮想空間内に配置するステップと、
前記第1の対象オブジェクト(60_1,60_C1)と前記対象部品(51)の周辺に位置する周辺部品(402)に対応する周辺オブジェクト(60_2,60_A2,60_C3)とに対する操作に応じて、前記第1の対象オブジェクト(60_1,60_C1)と前記周辺オブジェクト(60_2,60_A2,60_C3)との相対位置を定義する定義データ(135)を設定するステップとを備え、
前記配置するステップは、前記定義データ(135)によって定義される相対位置を満たすように、前記仮想空間内の前記第1の対象オブジェクトおよび前記周辺オブジェクト(60,60_A2)の配置を決定するステップを含み、
前記シミュレーション方法は、さらに、
前記定義データ(135)の設定のための操作履歴を保持するステップと、
前記第1の形状データ(132)を、前記対象部品の第2の三次元形状を示す第2の形状データ(191)に置き換える指示を受け付けるステップと、
前記指示に応じて、前記第2の三次元形状を有する第2の対象オブジェクト(60_1’,60_C1’)に対する前記操作履歴の適用により、前記定義データを補正するステップとを備え、
前記配置するステップは、前記指示に応じて、前記仮想空間内の前記第1の対象オブジェクト(60_1,60_C1)を前記第2の対象オブジェクト(60_1’,60_C1’)に置き換えるとともに、補正後の前記定義データ(135)によって定義される相対位置を満たすように前記第2の対象オブジェクト(60_1’,60_C1’)および前記周辺オブジェクト(60_2,60_A2,60_C3)を配置するステップを含む、シミュレーション方法。
(構成11)
制御システム(2)の挙動を推定するシミュレーション方法をコンピュータに実行させるためのシミュレーションプログラムであって、
前記シミュレーション方法は、
前記制御システム(2)に含まれる対象部品(51)の第1の三次元形状を示す第1の形状データ(132)に基づいて、前記第1の三次元形状を有する第1の対象オブジェクト(60_1,60_C1)を仮想空間内に配置するステップと、
前記第1の対象オブジェクト(60_1,60_C1)と前記対象部品(51)の周辺に位置する周辺部品(402)に対応する周辺オブジェクト(60_2,60_A2,60_C3)とに対する操作に応じて、前記第1の対象オブジェクト(60_1,60_C1)と前記周辺オブジェクト(60,60_A2)との相対位置を定義する定義データ(135)を設定するステップとを含み、
前記配置するステップは、前記定義データ(135)によって定義される相対位置を満たすように、前記仮想空間内の前記第1の対象オブジェクトおよび前記周辺オブジェクト(60,60_A2)の配置を決定するステップを含み、
前記シミュレーション方法は、さらに、
前記定義データ(135)の設定のための操作履歴を保持するステップと、
前記第1の形状データ(132)を、前記対象部品の第2の三次元形状を示す第2の形状データ(191)に置き換える指示を受け付けるステップと、
前記指示に応じて、前記第2の三次元形状を有する第2の対象オブジェクト(60_1’,60_C1’)に対する前記操作履歴の適用により、前記定義データ(135)を補正するステップとを含み、
前記配置するステップは、前記指示に応じて、前記仮想空間内の前記第1の対象オブジェクト(60_1,60_C1)を前記第2の対象オブジェクト(60_1’,60_C1’)に置き換えるとともに、補正後の前記定義データ(135)によって定義される相対位置を満たすように前記第2の対象オブジェクト(60_1’,60_C1’)および前記周辺オブジェクト(60_2,60_A2,60_C3)を配置するステップを含む、シミュレーションプログラム。
本発明の実施の形態について説明したが、今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。