(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0021】
[1.動作データ収集システムの全体構成]
本発明の発明者の見地によれば、産業機器に接続された接続先機器の動作データを収集して解析する場合に、接続先機器の構成を考慮しなければ、同じ動作データを重複して収集したり不要な動作データを収集したりして、動作データの収集が非効率的になる可能性がある。そこで本発明の発明者は、産業機器に接続された接続先機器の構成に応じたデータ収集をするために鋭意研究開発を行った結果、新規かつ独創的な動作データ収集システム等に想到した。以降、本実施形態に係る動作データ収集システム等を詳細に説明する。
【0022】
図1は、実施形態に係る動作データ収集システムの全体構成を示す図である。
図1に示すように、動作データ収集システム1は、ユーザ端末10と、ロボットシステム20と、を含む。ユーザ端末10とロボットシステム20との各々は、インターネットやローカルエリアネットワーク等のネットワークNに接続される。なお、
図1では、ユーザ端末10とロボットシステム20を1つずつ示しているが、これらは複数あってもよい。
【0023】
ユーザ端末10は、動作データを収集するコンピュータである。例えば、ユーザ端末10は、パーソナルコンピュータ、携帯電話(スマートフォンを含む)、又は携帯端末(タブレット型端末を含む)である。ユーザ端末10は、CPU11、記憶部12、通信部13、操作部14、及び表示部15を含む。
【0024】
CPU11は、少なくとも1つのプロセッサを含む。記憶部12は、RAMやハードディスクを含み、各種プログラムやデータを記憶する。CPU11は、これらプログラムやデータに基づいて各種処理を実行する。通信部13は、ネットワークカードや各種通信コネクタ等の通信インタフェースを含み、他の装置との通信を行う。操作部14は、マウスやキーボード等の入力デバイスである。表示部15は、液晶ディスプレイ又は有機ELディスプレイ等であり、CPU11の指示により各種画面を表示する。
【0025】
なお、記憶部12に記憶されるものとして説明するプログラム及びデータは、ネットワークNを介してユーザ端末10に供給されるようにしてもよい。また、ユーザ端末10のハードウェア構成は、上記の例に限られず、種々のハードウェアを適用可能である。例えば、ユーザ端末10は、コンピュータ読み取り可能な情報記憶媒体を読み取る読取部(例えば、光ディスクドライブやメモリカードスロット)や外部機器と直接的に接続するための入出力部(例えば、USB端子)を含んでもよい。この場合、情報記憶媒体に記憶されたプログラムやデータが読取部又は入出力部を介して、ユーザ端末10に供給されるようにしてもよい。
【0026】
ロボットシステム20は、ロボットコントローラ21、メカニズム22A〜22C、及びデバイス23A〜23Iを含む。なお、以降では、メカニズム22A〜22Cを特に区別する必要のないときは、単にメカニズム22と記載し、デバイス23A〜23Iを特に区別する必要のないときは、単にデバイス23と記載する。また、説明の簡略化のために、ロボットコントローラ21を1台とするが、ロボットコントローラ21は、複数台あってもよい。また、メカニズム22とデバイス23は、任意の数で構成されてよく、
図1の構成に限られない。
【0027】
ロボットコントローラ21は、ロボットを制御するコンピュータである。ロボットコントローラ21は、特定のロボットに特化した専用機器であってもよいが、本実施形態では、汎用コンピュータであるものとする。ロボットコントローラ21は、CPU、RAM、ハードディスク、及び通信インタフェースといったハードウェアを有し、ロボットに動作指示を送る。ロボットコントローラ21は、複数台のロボットを制御してもよい。
【0028】
メカニズム22とデバイス23は、ロボットの構成要素である。ロボットは、産業用ロボットであり、例えば、汎用の多関節ロボットである。例えば、ロボットは、垂直多関節型、水平多関節型、又はガントリ型といった種々の形式のロボットを適用可能である。ロボットのアーム数は、任意であってよく、1本のみのアームであってもよいし、複数本のアームであってもよい。
【0029】
また例えば、ロボットは、種々の用途のロボットを適用可能であり、スポット溶接用ロボット、アーク溶接用ロボット、ハンドリング用ロボット、又は塗装用ロボットであってもよい。例えば、メカニズム22Aは、6軸垂直多関節型のスポット溶接用ロボットであり、軸としてデバイス23A〜23Fを有する。また例えば、メカニズム22Bは、溶接ガンであり、軸としてデバイス23Gを有する。また例えば、メカニズム22Cは、ステーションであり、軸としてデバイス23H,23Iを有する。なお、各デバイス23は、自身の動作を計測するためのセンサを含み、例えば、トルクセンサ、モータエンコーダ、温度センサ、又は感圧センサといった任意のセンサを含んでよい。
【0030】
なお、ロボットコントローラ21は、産業機器の一例であり、ロボット(メカニズム22及びデバイス23)は、接続先機器の一例である。このため、本実施形態でロボットコントローラ21と記載した箇所は、産業機器と読み替えることができ、ロボット、メカニズム22、又はデバイス23と記載した箇所は、接続先機器と読み替えることができる。
【0031】
動作データ収集システム1は、任意の種類の産業機器を適用可能であり、例えば、モータコントローラ又はインバータが産業機器に相当してもよい。接続先機器は、産業機器の種類に応じた機器であればよい。例えば、モータコントローラが産業機器に相当する場合、接続先機器は、モータコントローラから指示を受ける制御装置又はモータであってよい。また例えば、複数のインバータがマスタとスレーブに分かれて連係する場合には、マスタのインバータが産業機器に相当し、スレーブのインバータが接続先機器に相当してもよい。
【0032】
また例えば、工作機械が産業機器に相当してもよい。工作機械は、金属や木材等に切削や研磨等の加工を施すための機械であり、例えば、旋盤、ボール盤、研削盤、又は放電加工機等である。工作機械が産業機器に相当する場合、接続先機器は、工作機械に接続されたモータ、入出力装置、又はセンサ(例えば、温度センサ又は力センサ等)であってよい。また例えば、PLC(Programmable Logic Controller)が産業機器に相当してもよい。PLCは、予め定められた手順に沿って外部機器を制御する装置であり、例えば、工場における自動制御に用いられたり、エレベータや自動ドア等の機器の制御に用いられたりする。PLCが産業機器に相当する場合、接続先機器は、PLCの制御対象(PLCの配下)の機械、設備、又はロボットコントローラであってよい。
【0033】
本実施形態の動作データ収集システム1では、ロボットコントローラ21に、自身に接続されたロボットの構成情報が記憶されている。ユーザ端末10は、ロボットコントローラ21から構成情報を取得し、ロボットの動作データの収集条件を設定することで、ロボットの構成に応じた効率的なデータ収集を実現する。以降、動作データ収集システム1の詳細を説明する。
【0034】
[2.動作データ収集システムで実現される機能]
図2は、動作データ収集システム1で実現される機能を示す機能ブロック図である。
図6に示すように、動作データ収集システム1では、データ記憶部100、構成情報取得部101、設定部102、収集部103、要求部104、表示制御部105、及び格納部106が実現される。本実施形態では、これら各機能がユーザ端末10において実現される場合を説明する。
【0035】
[データ記憶部]
データ記憶部100は、記憶部12を主として実現される。データ記憶部100は、動作データを収集するために必要なデータを記憶する。例えば、データ記憶部100は、動作データを収集するための複数のアプリケーションAPを記憶する。なお、データ記憶部100は、任意の数のアプリケーションAPを記憶してよく、例えば、データ記憶部100は、アプリケーションAPを1つだけ記憶してもよい。
【0036】
アプリケーションAPは、動作データを収集したり解析したりするためのプログラムである。動作データは、ロボットの動作を示すデータであればよく、例えば、トルク信号、温度情報、速度フィードバック値、外力値、又はフィードバックパルス信号といった種々の情報が動作データに示されていてよい。アプリケーションAPは、ロボットの種類や解析の目的に応じたものであればよく、例えば、動作データ収集システム1を動作させるための標準的なアプリケーションであってもよいし、特定の動作解析をするためのアプリケーションであってもよい。これらのアプリケーションは、メーカが作成してもよいし、ユーザが作成してユーザ端末10にアドオンしてもよい。
【0037】
標準的なアプリケーションは、動作データ収集システム1を動作させるためのウェブサーバソフトウェアであったり、C言語等のプログラミング言語で作成された実行可能なアプリケーションであったりする。なお、プログラミング言語は、C言語に限られず、任意の言語を適用可能である。特定の動作解析をするためのアプリケーションは、ロボットの特定の動作を解析する目的で作成されたアプリケーションであり、例えば、ロボットの動作データを収集して動作データベースDB1に蓄積するアプリケーション、ロボットにおける減速機の故障を予知するアプリケーション、ロボットがガス溶接又はアーク溶接をする際に飛散するスパッタを検出するアプリケーション、又は、ロボットによるスポット溶接を監視するアプリケーションといった種々のアプリケーションを適用可能である。
【0038】
また例えば、データ記憶部100は、動作データベースDB1、構成情報データベースDB2、及び収集条件データベースDB3を記憶する。
【0039】
図3は、動作データベースDB1のデータ格納例を示す図である。
図3に示すように、動作データベースDB1は、動作データを格納するためのデータベースである。例えば、動作データベースDB1には、動作データが計測された機器の識別情報、動作データの実データ、及び動作データの収集日時が格納される。
【0040】
図3の例では、動作データが計測された機器の識別情報として、ロボットコントローラ21、メカニズム22、及びデバイス23の各々の名称が格納される。本実施形態では、デバイス23によってトルク信号等の動作データが計測されるので、動作データを計測したデバイス23、当該デバイス23を制御するメカニズム22、及び当該メカニズム22を制御するロボットコントローラ21の各々の名称が格納される。動作データは、任意のデータ形式であってよく、例えば、CSVファイル等の表形式やテキスト形式であってもよい。動作データの収集日時は、動作データが計測された日時である。
【0041】
なお、動作データベースDB1に格納されるデータは、
図3の例に限られず、動作データに関する他の情報が格納されてもよい。例えば、動作データベースDB1には、動作データの種類、動作データを利用するアプリケーションAPの識別情報、又は、動作データの収集時に利用された収集条件といった情報が格納されてもよい。
【0042】
図4は、構成情報データベースDB2のデータ格納例を示す図である。
図4に示すように、構成情報データベースDB2は、ロボットコントローラ21から取得された構成情報を格納するためのデータベースである。例えば、構成情報データベースDB2には、ロボットコントローラ21を識別するコントローラIDと、当該ロボットコントローラ21から取得された構成情報と、が格納される。
【0043】
本実施形態では、ロボットコントローラ21を1台としているので、
図4では、構成情報が1つだけ格納されているが、ロボットコントローラ21が複数台ある場合には、構成情報は、ロボットコントローラ21の数だけ格納される。構成情報には、ロボットコントローラ21が制御するロボットの構成が示される。本実施形態では、ロボットは、メカニズム22とデバイス23によって構成されるので、ロボットコントローラ21が制御するメカニズム22と、当該メカニズム22に含まれるデバイス23と、が構成情報に示される。
【0044】
また、本実施形態では、ロボットコントローラ21には、複数のロボットが階層的に接続されているので、構成情報には、複数のロボットの階層構造が示されている。階層構造は、上下関係又は親子関係ということもできる。階層が上位であるほど制御する側となり、階層が下位であるほど制御される側となる。本実施形態では、ロボットコントローラ21は、最上位の階層であり、メカニズム22は、中位の階層であり、デバイス23は、最下位の階層である。例えば、ロボットコントローラ21の配下には、メカニズム22A〜22Cが存在する。また例えば、メカニズム22Aの配下には、デバイス23A〜23Fが存在し、メカニズム22Bの配下には、デバイス23Gが存在し、メカニズム22Cの配下にはデバイス23H,23Iが存在する。なお、ロボットコントローラ21よりも上位の階層があってもよく、例えば、工場、ライン、又はセルといった上位階層が存在してもよい。
【0045】
また、本実施形態では、ロボットコントローラ21には、メカニズム22と、当該メカニズム22によって制御されるデバイス23と、を含む複数の接続先機器が接続されているので、構成情報には、複数の接続先機器の主従関係が示されている。メカニズム22は、マスタ機器の一例であり、デバイス23は、スレーブ機器の一例である。マスタ機器は、スレーブ機器を制御する機器であり、スレーブ機器は、マスタ機器によって制御される機器である。例えば、メカニズム22Aは、デバイス23A〜23Fを制御するので、メカニズム22Aは、マスタ機器であり、デバイス23A〜23Fは、スレーブ機器である。また例えば、メカニズム22Bは、デバイス23Gを制御するので、メカニズム22Bは、マスタ機器であり、デバイス23Gは、スレーブ機器である。また例えば、メカニズム22Cは、デバイス23H,23Iを制御するので、メカニズム22Cは、マスタ機器であり、デバイス23H,23Iは、スレーブ機器である。
【0046】
図5は、収集条件データベースDB3のデータ格納例を示す図である。
図5に示すように、収集条件データベースDB3は、動作データの収集条件を格納するためのデータベースである。例えば、収集条件データベースDB3には、収集条件の名前ごとに、収集条件が格納される。本実施形態では、アプリケーションAPごとに収集条件が設定されるので、収集条件の設定名は、アプリケーションAPの名前となる。
【0047】
収集条件は、任意の条件を設定可能であり、例えば、サンプリング時間、収集時間、分類、信号の種類、カラム名称、グループ、対象となる軸、単位、及び倍率といった条件であってよい。サンプリング時間は、動作データを計測する時間間隔であり、サンプリング時間ごとに動作データが計測される。収集時間は、動作データを計測する時間帯である。分類は、動作データの分類であり、例えば、リアルタイム、サーボ、入出力信号、レジスタ、及びその他といった分類が存在する。
【0048】
信号の種類は、動作データとして取得される信号の種類であり、例えば、トルク信号、温度情報、速度フィードバック値、外力値、フィードバックパルス信号、又はユーザが入力する任意の信号番号である。カラム名称は、動作データのカラムに割り当てられる名称であり、例えば、トルク信号であることを示す「Trq」等の名称が自動で設定されてもよいし、ユーザが任意の名称を入力可能であってもよい。グループは、動作データの収集対象となるロボットのグループである。対象となる軸は、動作データの計測対象となる軸である。単位は、動作データに格納される情報の単位である。倍率は、動作データに格納される情報の縮尺である。
【0049】
なお、データ記憶部100が記憶するデータは、上記の例に限られない。例えば、データ記憶部100は、アプリケーションAPの一覧を示すアプリ一覧データを記憶してもよい。アプリ一覧データは、アプリケーションAPがアドオンされるたびに更新される。
【0050】
[構成情報取得部]
構成情報取得部101は、制御部11を主として実現される。構成情報取得部101は、ロボットコントローラ21から、当該ロボットコントローラ21に接続されたロボット(メカニズム22・デバイス23)の構成情報を取得する。構成情報のデータ構成例は、
図4で説明した通りである。構成情報は、ロボットコントローラ21の記憶部に記憶されている。構成情報は、ロボットコントローラ21が予め定められたアルゴリズムに基づいて動的に生成してもよいし、ユーザ端末10等のコンピュータをロボットコントローラ21に接続してユーザが手動で設定してもよい。
【0051】
例えば、構成情報取得部101は、ロボットコントローラ21に対し、構成情報の取得要求を送信する。構成情報の取得要求は、任意のタイミングで送信されるようにすればよく、例えば、ユーザがロボットコントローラ21のIPアドレスを入力した場合に送信されてもよいし、ロボットコントローラ21のIPアドレスが格納されたファイルが読み込まれた場合に送信されてもよい。他にも例えば、ロボットコントローラ21のリストを表示部15に表示させ、リストの中からロボットコントローラ21が選択された場合に、構成情報の取得要求が送信されてもよい。なお、構成情報の取得要求が行われなくてもよく、ロボットコントローラ21は、ユーザ端末10に対し、構成情報を自発的に送信してもよい。
【0052】
本実施形態では、ロボットコントローラ21が1台である場合を説明するが、ロボットコントローラ21が複数台存在する場合には、構成情報取得部101は、第1構成情報取得部101Aを含む。第1構成情報取得部101Aは、複数のロボットコントローラ21の各々から、構成情報を取得する。各ロボットコントローラ21は、自身の制御対象のロボットの構成を示す構成情報を記憶しているので、第1構成取得部は、各ロボットコントローラ21に対し、構成情報の取得要求を送信し、当該ロボットコントローラ21から構成情報を受信する。なお、ロボットコントローラ21が複数台存在する場合も、各ロボットコントローラ21は、ユーザ端末10に対し、構成情報を自発的に送信してもよい。
【0053】
[設定部]
設定部102は、制御部11を主として実現される。設定部102は、構成情報に基づいて、ロボット(メカニズム22・デバイス23)の動作データを収集するための設定を行う。設定は、動作データの収集条件の設定であってもよいし、動作データベースDB1のデータ構造の設定であってもよい。本実施形態では、設定部102は、第1設定部102A、第2設定部102B、第3設定部102C、第4設定部102D、及び第5設定部102Eを含み、下記に説明するような設定が行われる。なお、下記に説明する設定は、設定部102の処理の具体例であり、必ずしも下記に説明する全ての設定が行われなくてもよい。下記に説明する設定の一部だけが行われてもよい。
【0054】
第1設定部102Aは、構成情報に基づいて、動作データの収集条件を設定する。即ち、第1設定部102Aは、構成情報に基づいて、どのロボットから、どの種類の動作データを、どのような計測スケジュールで収集するといった設定を行う。例えば、第1設定部102Aは、構成情報が示すロボットから動作データを収集するように、収集条件を設定する。本実施形態では、収集条件には、サンプリング時間、収集時間、分類、信号の種類、カラム名称、グループ、対象となる軸、単位、及び倍率といった項目が含まれるので、第1設定部102Aは、これらの収集条件を設定する。
【0055】
例えば、第1設定部102Aは、動作データのサンプリング時間を設定する。サンプリング時間は、任意の間隔を設定可能であり、例えば、数ミリ秒程度であってもよいし、数秒又は数分であってもよい。サンプリング時間は、ユーザが任意の数値を入力できるようにしてもよいし、複数の数値の中からユーザが選択するようにしてもよい。複数の数値の中からユーザがサンプリング時間を選択する場合には、8ミリ秒、16ミリ秒、32ミリ秒、64ミリ秒といったように、最小値の数値のn(nは2以上の整数)倍の数値の中で選択できるようにしてもよいし、特にこのような数値でなくてもよい。他にも例えば、構成情報が示すロボットの制御周期が予め定められている場合には、当該制御周期に基づいてサンプリング時間が設定されるようにしてもよい。他にも例えば、構成情報が示すロボットの構成によって、設定可能なサンプリング時間に制限がかけられていてもよい。
【0056】
また例えば、第1設定部102Aは、動作データの収集時間を設定する。収集時間は、1日の中での任意の時間帯を指定可能である。第1設定部102Aは、構成情報に基づいて、動作データの収集時間を設定する。収集時間は、ユーザが任意の時間帯を指定できるようにしてもよいし、構成情報が示すロボットが動作する時間帯が予め定められている場合には、当該時間帯の中で収集時間が指定されるようにしてもよい。他にも例えば、構成情報が示すロボットの構成によって、設定可能な収集時間に制限がかけられていてもよい。本実施形態では、アプリケーションAPごとに収集条件を設定可能なので、動作データの収集時間は、アプリケーションAPごとに設定される。
【0057】
図6は、アプリケーションAPごとに動作データの収集時間が設定される様子を示す図である。
図6に示す例では、「アプリA」〜「アプリF」といった6つのアプリケーションAPが存在し、各アプリの収集時間を網掛けの帯で示している。
図6に示すように、アプリケーションAPごとに、他のアプリケーションAPとは異なる収集時間を設定可能となっている。
【0058】
また例えば、第1設定部102Aは、収集対象の動作データの種類及び収集対象のロボットを設定する。例えば、動作データの種類及び収集対象のロボットは、収集条件に含まれる分類、信号の種類、グループ、及び対象となる軸から特定される。第1設定部102Aは、収集条件のこれらの項目の値を設定する。なお、構成情報には、ロボットの構成が示されており、収集可能なデータの種類がロボットの種類から特定できるので、第1設定部102Aは、構成情報が示すロボットで収集可能なデータの種類を収集対象の動作データの種類として設定してもよい。例えば、構成情報が示す構成にスポット溶接用ロボットが含まれていれば、第1設定部102Aは、トルク信号や速度フィードバック値といった種類を、収集対象の動作データの種類として自動的に設定してもよい。また、構成情報からロボットの構成が示されているので、第1設定部102Aは、構成情報が示すロボットの中から収集対象のロボットを設定してもよい。また、本実施形態では、収集条件に単位や倍率といった項目も含まれるので、第1設定部102Aは、収集条件に含まれるこれらの項目の設定も行う。
【0059】
収集条件は、1つだけ指定されてもよいが、本実施形態では、アプリケーションAPごとに収集条件が指定されるので、第2設定部102Bは、複数の収集条件が指定された場合には、当該複数の収集条件を統合した統合収集条件を設定する。統合収集条件は、複数の収集条件の中で重複した条件を排除した条件であり、複数の収集条件の最小公倍数的な条件である。統合収集条件は、複数の収集条件が統合されたという点で収集条件と異なり、統合収集条件の設定項目は、収集条件と同じである。即ち、本実施形態では、統合収集条件には、サンプリング時間、収集時間、分類、信号の種類、カラム名称、グループ、対象となる軸、単位、及び倍率といった項目が含まれる
【0060】
例えば、複数の収集条件の中で、動作データの収集対象となるロボットが重複していた場合、第2設定部102Bは、当該ロボットから同じ動作データを重複して収集しないように、統合収集条件を設定する。具体的には、ある収集条件Aでデバイス23Aが収集対象となっており、別の収集条件Bでもデバイス23Aが収集対象となっていた場合に、第2設定部102Bは、デバイス23Aから同じ動作データを重複して収集しないように、統合収集条件を設定する。即ち、第2設定部102Bは、デバイス23Aから同じ動作データを2重で収集せず、デバイス23Aから同じ動作データを1つだけ収集するように、統合収集条件を設定する。
【0061】
本実施形態では、収集条件は、収集対象の動作データの種類と、動作データの計測スケジュールと、の少なくとも一方を含むので、第3設定部102Cは、種類とスケジュールの少なくとも一方が重複した場合に統合収集条件を設定する。計測スケジュールは、動作データを計測するタイミング又は時間帯であり、サンプリング時間を意味してもよいし、収集時間を意味してもよい。
【0062】
例えば、複数の収集条件の中で、収集対象となる動作データの種類が重複していた場合、第3設定部102Cは、同じ種類の動作データを重複して収集しないように、統合収集条件を設定する。具体的には、ある収集条件Aでデバイス23Aのトルク信号が収集対象となっており、別の収集条件Bで同じデバイス23Aのトルク信号が収集対象となっていた場合に、第3設定部102Cは、デバイス23Aから同じトルク信号を重複して収集しないように、統合収集条件を設定する。即ち、第3設定部102Cは、デバイス23Aから同じトルク信号を2重で収集せず、デバイス23Aから同じトルク信号を1つだけ収集するように、統合収集条件を設定する。
【0063】
また例えば、複数の収集条件の中で、動作データのサンプリングタイミングが重複していた場合、第3設定部102Cは、当該サンプリングタイミングにおける動作データを複数個収集しないように、統合収集条件を設定する。具体的には、ある収集条件Aでデバイス23Aの動作データのサンプリング時間が8ミリ秒であり、別の収集条件Bでデバイス23Aの動作データのサンプリング時間が32秒であった場合に、8ミリ秒でサンプリングされた動作データさえあれば、当該動作データを間引いて利用すれば、32秒のサンプリング時間の動作データを取得可能となる。このため、第3設定部102Cは、あるサンプリング時間が別のサンプリング時間の整数倍であった場合に、最小値のサンプリング時間に統合した統合収集条件を設定する。
【0064】
また例えば、複数の収集条件の中で、動作データの収集時間が重複していた場合、第3設定部102Cは、同じ時間帯における動作データを複数個収集しないように、統合収集条件を設定する。具体的には、ある収集条件Aでデバイス23Aの動作データの収集時間が午前8時から午後4時であり、別の収集条件Bでデバイス23Aの動作データの収集時間が午前10時から午後2時であった場合に、午前8時から午後4時までの動作データさえあれば、午前10時から午後2時までの動作データを取得可能となる。このため、第3設定部102Cは、ある収集時間が別の収集時間の全てを含んでいた場合に、長い方の収集時間に統合した統合収集条件を設定する。
【0065】
他にも例えば、ある収集条件Cでデバイス23Aの収集時間が午前9時から午後1時であり、別の収集条件Dでデバイス23Aの収集時間が午前11時から午後4時であった場合に、開始時間が最も早い午前9時から、終了時間が最も遅い午後4時までの動作データさえあれば、これら両方の時間帯の動作データを取得可能となる。このため、第3設定部102Cは、また、第3設定部102Cは、ある収集時間が別の収集時間の一部だけを含んでいた場合に、これらの収集時間を結合した収集時間を統合収集条件として設定する。
【0066】
第4設定部102Dは、構成情報に基づいて、動作データを格納する動作データベースDB1のデータ構造を設定する。例えば、第4設定部102Dは、構成情報に基づいて、動作データベースDB1のデータ構造を設定する。構成情報には、ロボットの構成が示されているので、ロボットの名前を動作データに関連付けて格納できるように、動作データベースDB1のデータ構造を設定する。
図3のデータ格納例であれば、ロボットコントローラ21、メカニズム22、及びデバイス23の組み合わせごとに動作データが格納されるので、第4設定部102Dは、構成情報が示すこれらの組み合わせを特定し、組み合わせごとに動作データを格納できるように、動作データベースDB1のデータ構造を設定する。
【0067】
本実施形態では、ロボットコントローラ21が1台である場合を説明するが、ロボットコントローラ21が複数台存在する場合には、第5設定部102Eは、ロボットコントローラ21ごとに設定を行う。例えば、第5設定部102Eは、ロボットコントローラ21ごとに、収集条件を設定したり、動作データベースDB1のデータ構造を設定したりする。個々のロボットコントローラ21に対する設定方法は、上記説明した通りであり、例えば、各ロボットコントローラ21に複数の収集条件が指定された場合には、ロボットコントローラ21ごとに、統合収集条件が設定される。
【0068】
図7は、ロボットコントローラ21ごとに統合収集条件が設定される様子を示す図である。
図7の例では、10台のロボットコントローラ21A〜21Jが存在し、「アプリA」〜「アプリF」といった6つのアプリケーションAPが存在する。これらアプリケーションAPごとに、各ロボットコントローラ21の収集条件が設定されている。この場合、第5設定部10Eは、ロボットコントローラ21A用に設定された「アプリA」〜「アプリF」の収集条件を統合し、ロボットコントローラ21A用の統合収集条件を設定する。同様に、第5設定部10Eは、ロボットコントローラ21B用に設定された「アプリA」〜「アプリE」の収集条件を統合し、ロボットコントローラ21B用の統合収集条件を設定する。
図7に示すように、他のロボットコントローラ21C〜21Jについても同様にして、統合収集条件が設定される。
【0069】
[収集部]
収集部103は、制御部11を主として実現される。収集部103は、設定に基づいて、ロボットコントローラ21から、動作データを収集する。ロボットコントローラ21は、設定部102の設定に基づいてロボットの動作データを計測し、収集部103は、当該計測された動作データを収集する。収集部103は、ロボットコントローラ21から動作データを随時収集してもよいし、ある時間が訪れた場合にそれまで計測された動作データをまとめて収集してもよい。本実施形態では、収集部103は、第1収集部103A、第2収集部103B、及び第3収集部103Cを含む。
【0070】
本実施形態では、第1設定部102Aにより収集条件が設定されるので、第1収集部103Aは、当該収集条件に基づいて、ロボットコントローラ21から、動作データを収集する。ロボットコントローラ21は、第1設定部102Aにより設定された収集条件に基づいて動作データを計測してユーザ端末10に送信するので、第1収集部103Aは、当該計測された動作データを収集する。例えば、ロボットコントローラ21は、収集条件に含まれる動作データの種類及び収集対象のロボットを特定し、当該ロボットの当該種類の動作データを計測する。なお、ロボットコントローラ21は、収集条件に含まれるサンプリング時間に基づいて、動作データを収集する。また、ロボットコントローラ21は、収集条件に含まれる倍率に基づいて、ロボットが計測したトルク信号等の値を変化させて動作データに格納する。
【0071】
また、本実施形態では、第2設定部102Bにより統合収集条件が設定されるので、第2収集部103Bは、統合収集条件に基づいて、ロボットコントローラ21から、動作データを収集する。ロボットコントローラ21は、第2設定部102Bにより設定された統合収集条件に基づいて動作データを計測してユーザ端末10に送信するので、第2収集部103Bは、当該計測された動作データを収集する。ロボットコントローラ21は、動作データの計測の際に統合収集条件を参照する。ロボットコントローラ21がロボットの動作データを計測する流れは、先述した通りである。
【0072】
また、本実施形態では、ロボットコントローラ21が1台である場合を説明するが、ロボットコントローラ21が複数台存在する場合には、第5設定部102Eによりロボットコントローラ21ごとに設定が行われるので、第3収集部103Cは、ロボットコントローラ21ごとに行われた設定に基づいて、当該ロボットコントローラ21から、動作データを収集する。ロボットコントローラ21は、第5設定部102Eにより設定された自身専用の設定に基づいて動作データを計測してユーザ端末10に送信するので、第3収集部103Cは、当該計測された動作データを収集する。ロボットコントローラ21がロボットの動作データを計測する流れは、先述した通りである。
【0073】
[要求部]
要求部104は、制御部11を主として実現される。先述したように、本実施形態では、収集条件は、動作データの計測スケジュールを含む。ロボットコントローラ21が動作データを収集する時間帯が訪れたか否かを判定してもよいが、本実施形態では、ユーザ端末10側で当該判定を実行するようにしている。
【0074】
要求部104は、計測スケジュールに基づいて、動作データを収集する時間帯が訪れたか否かを判定し、当該時間帯が訪れたと判定された場合に、ロボットコントローラ21に対し、動作データを要求する。例えば、要求部104は、リアルタイムクロック等を利用して現在日時を取得し、動作データを収集する時間帯の開始時間が訪れたか否かを判定する。本実施形態では、収集条件が統合された統合収集条件が用いられるので、要求部104は、統合収集条件が示す時間帯の開始時間が訪れたか否かを判定する。
【0075】
図8は、動作データが要求される様子を示す図である。
図8に示す例では、「アプリA」〜「アプリC」といった3つのアプリケーションAPが存在し、各アプリケーションAPに対して、互いに異なる収集時間が収集条件として設定されているものとする。
図8では、各アプリの収集時間を網掛けの帯で示している。要求部104は、これら3つのアプリケーションAPに設定された計測スケジュールに基づいて、各アプリケーションAPが利用する動作データを収集する時間帯が訪れたか否かを判定する。
【0076】
図8の例では、「アプリC」の収集時間が最初に訪れる。要求部104は、「アプリC」の収集時間が訪れると、「アプリC」の収集条件をロボットコントローラ21に送信する(
図8のS1の状態)。なお、動作データの収集中であることを示すフラグを用意しておき、S1のタイミングで当該フラグがオンに設定されてもよい。ロボットコントローラ21は、「アプリC」の収集条件に基づいて、動作データの計測を開始し、ユーザ端末10に動作データを送信する。
【0077】
次に、「アプリA」の収集時間が訪れるので、要求部104は、「アプリA」と「アプリC」の統合収集条件をロボットコントローラ21に送信する(
図8のS2の状態)。ロボットコントローラ21は、「アプリA」と「アプリC」の統合収集条件に基づいて、動作データの計測を開始し、ユーザ端末10に動作データを送信する。
【0078】
最後に、「アプリB」の収集時間が訪れるので、要求部104は、「アプリA」、「アプリB」、及び「アプリC」の統合収集条件をロボットコントローラ21に送信する(
図8のS3の状態)。ロボットコントローラ21は、「アプリA」、「アプリB」、及び「アプリC」の統合収集条件に基づいて、動作データの計測を開始し、ユーザ端末10に動作データを送信する。
【0079】
何れかのアプリケーションAPの収集時間が終了すると、収集条件が変化するので、要求部104は、その旨をロボットコントローラ21に通知する。
図8の例であれば、「アプリB」の収集時間が最初に終了するので、要求部104は、「アプリB」の収集時間が終了すると、「アプリA」と「アプリC」の統合収集条件をロボットコントローラ21に送信し、収集条件が変化したことを通知する(
図8のS4の状態)。ロボットコントローラ21は、「アプリA」と「アプリC」の統合収集条件に基づいて、動作データの計測を開始し、ユーザ端末10に動作データを送信する。
【0080】
次に、「アプリA」の収集時間が終了するので、要求部104は、「アプリA」の収集時間が終了すると、「アプリC」の収集条件をロボットコントローラ21に送信し、収集条件が変化したことを通知する(
図8のS5の状態)。ロボットコントローラ21は、「アプリC」の収集条件に基づいて、動作データの計測を開始し、ユーザ端末10に動作データを送信する。
【0081】
最後に、「アプリC」の収集時間が終了するので、要求部104は、「アプリC」の収集時間が終了すると、動作データの収集停止を要求する(
図6のS6の状態)。ロボットコントローラ21は、「アプリC」の収集停止が要求されると、動作データの計測を停止する。これ以降は、動作データを計測する必要がないので、ロボットコントローラ21にその旨が通知されるようにしてもよい。その際に、動作データの収集中であることを示すフラグがオフになるように設定されてもよい。
【0082】
[表示制御部]
表示制御部105は、制御部11を主として実現される。構成情報に基づいて、収集条件を設定するための設定画面を表示部に表示させる。設定画面は、構成情報が示すロボットから収集する動作データの収集条件を設定するための画面である。構成情報には、ロボットの構成が示されているので、例えば、表示制御部105は、構成情報が示すロボットの種類を設定画面において選択可能に表示させる。また例えば、ロボットの種類から収集可能な動作データの種類を特定可能なので、表示制御部105は、収集可能な動作データの種類を設定画面において選択可能に表示させる。
【0083】
図9は、設定画面の一例を示す図である。
図9に示すように、設定画面Gには、収集条件の設定名を入力するための入力フォームF1、サンプリング時間を入力するための入力フォームF2、及び収集時間を入力するための入力フォームF3が表示される。収集条件は、アプリケーションごとに設定されるので、例えば、ユーザは、入力フォームF1にアプリケーション名を入力する。また例えば、ユーザは収集時間を示す数値を入力フォームF2のプルダウンから選択する。また例えば、ユーザは収集時間を示す任意の数値を入力フォームF3に入力する。
【0084】
また、設定画面Gには、動作データの分類を入力するための入力フォームF4、収集対象となる動作データの種類である信号種類を入力するための入力フォームF5、動作データのカラム名称を入力するための入力フォームF6、動作データの収集対象のロボットのグループを入力するための入力フォームF7、動作データの収集対象のロボットの軸を入力するための入力フォームF8、動作データの単位を入力するための入力フォームF9、及び動作データの倍率を入力するための入力フォームF10等が表示される。
【0085】
例えば、各入力フォームのプルダウンに表示される値は、ロボットコントローラ21の構成情報から定まるようにしてもよい。例えば、表示制御部105は、構成情報が示す軸の名前に基づいて、入力フォームF8のプルダウンで表示される名前を設定してもよい。他にも例えば、構成情報にグループの名前を含めておく場合には、表示制御部105は、構成情報が示すグループ名に基づいて、入力フォームF7のプルダウンで表示される名前を設定してもよい。他の入力フォームについても同様に、表示制御部105は、構成情報に基づいて、プルダウンで表示される名前を設定してもよい。
【0086】
[格納部]
格納部106は、制御部11を主として実現される。ロボットコントローラ21から収集した動作データを動作データベースDB1に格納する。本実施形態では、動作データベースDB1のデータ構造は、構成情報に基づいて設定されているので、格納部106は、構成情報に基づいてデータ構造が設定された動作データベースDB1に動作データを格納する。例えば、動作データを計測したロボットコントローラ21、メカニズム22、及びデバイス23の組み合わせを示す情報が動作データに付与されており、格納部106は、これらの組み合わせに関連付けて動作データを動作データベースDB1に格納する。
【0087】
[3.動作データ収集システムで実行される処理]
次に、動作データ収集システム1で実行される処理を説明する。ここでは、収集条件を設定する収集条件設定処理と、収集条件に基づいて動作データを収集する動作データ収集処理と、について説明する。収集条件設定処理及び動作データ収集処理の各々は、ユーザ端末10において、CPU11が記憶部12に記憶されたプログラムに従って動作し、ロボットコントローラ21のCPUが自身の記憶部に記憶されたプログラムに従って動作することによって実行される。収集条件設定処理及び動作データ収集処理の各々は、
図2に示す機能ブロックにより実行される処理の一例である。
【0088】
[収集条件設定処理]
図10は、収集条件設定処理の一例を示すフロー図である。
図10に示すように、まず、CPU11は、構成情報の取得対象となるロボットコントローラ21のIPアドレスの入力を受け付ける(S101)。IPアドレスは、ユーザが操作部14から入力してもよいし、IPアドレスが記載されたファイルが読み込まれることによって入力されてもよい。
【0089】
CPU11は、S101で入力されたIPアドレスに基づいて、ロボットコントローラ21に対し、構成情報の取得要求を送信する(S102)。所定形式の命令が送信されることによって、構成情報の取得要求が行われるようにすればよい。例えば、ロボットコントローラ21内の所定アドレスのレジスタに構成情報が格納されている場合には、当該レジスタの参照要求が送信されるようにすればよい。
【0090】
ロボットコントローラ21は、構成情報の取得要求を受信すると、ユーザ端末10に構成情報を送信する(S103)。S103においては、ロボットコントローラ21は、自身の記憶部に記憶された構成情報を読み出してユーザ端末10に送信する。
【0091】
ユーザ端末10においては、構成情報を受信すると、CPU11は、受信した構成情報を構成情報データベースDB2に格納する(S104)。S104においては、CPU11は、S101でIPアドレスが入力されたロボットコントローラ21のコントローラ名に関連付けて、受信した構成情報を格納する。なお、コントローラ名は、ユーザが操作部14から入力してもよいし、コントローラ名が記載されたファイルが読み込まれることによって入力されてもよい。
【0092】
CPU11は、受信した構成情報に基づいて、動作データベースDB1のデータ構造を設定する(S105)。S105においては、CPU11は、構成情報が示すロボットの組み合わせごとに動作データを格納できるように、動作データベースDB1のデータ構造を設定する。
【0093】
CPU11は、操作部14の検出信号に基づいて、設定画面Gを表示させるための操作が行われたか否かを判定する(S106)。設定画面Gは、所定の操作が行われた場合に表示されるようにすればよく、例えば、ブラウザ上で設定画面Gを表示させる場合には、設定画面に対応するURLが入力されることであってもよいし、アプリケーション上で設定画面を表示させる場合には、設定画面Gを表示させる旨のボタンが選択されることであってもよい。
【0094】
操作が行われなかった場合(S106;N)、本処理は終了する。一方、操作が行われた場合(S106;Y)、CPU11は、構成情報データベースDB2に基づいて、設定画面Gを表示部15に表示させる(S107)。なお、ロボットコントローラ21が複数台存在する場合、設定画面Gを表示させる際に、ユーザがロボットコントローラ21を選択してもよい。この場合、S107においては、CPU11は、ユーザが選択したロボットコントローラ21の構成情報に基づいて、設定画面Gを表示させる。
【0095】
CPU11は、操作部14の検出信号に基づいて、ユーザによる収集条件の入力を受け付ける(S108)。S108においては、CPU11は、設定画面Gに表示された各入力フォームに対する入力を受け付ける。
【0096】
CPU11は、ユーザが入力した収集条件を収集条件データベースDB3に格納し(S109)、本処理は終了する。S109においては、CPU11は、ユーザが入力フォームF1に入力したアプリケーションの名前に関連付けて、設定画面Gの入力フォームF2〜F10の各々に対して入力された収集条件を格納する。
【0097】
[動作データ収集処理]
図11は、動作データ収集処理の一例を示すフロー図である。
図11に示すように、CPU11は、収集条件データベースDB3に基づいて、何れかの収集条件の収集時間が訪れたか否かを判定する(S201)。S201においては、CPU11は、リアルタイムクロック等を利用して現在日時を取得し、個々の収集条件が示す収集時間になったか否かを判定する。
【0098】
収集時間が訪れたと判定されない場合(S201;N)、後述するS207の処理に移行する。一方、収集時間が訪れたと判定された場合(S201;Y)、CPU11は、収集時間中の収集条件が複数存在するか否かを判定する(S202)。S202においては、CPU11は、S201で収集時間が訪れたと判定された収集条件以外に、収集時間中の収集条件が存在するか否かを判定する。即ち、S202においては、CPU11は、複数の収集条件を統合すべきか否かを判定する。
【0099】
収集時間中の収集条件が複数存在すると判定されない場合(S202;N)、CPU11は、ロボットコントローラ21に対し、収集時間が訪れた収集条件を送信する(S203)。この場合、収集時間中の収集条件は、S201で収集時間が訪れたと判定された収集条件だけなので、CPU11は、収集条件を統合せずに送信する。
【0100】
一方、収集時間中の収集条件が複数存在すると判定された場合(S202;Y)、CPU11は、ロボットコントローラ21に対し、複数の収集条件を統合した統合収集条件を送信する(S204)。CPU11は、収集時間中の収集条件が示すサンプリング時間や動作データの種類等を統合して統合収集条件を生成し、ロボットコントローラ21に送信する。
【0101】
ロボットコントローラ21は、収集条件又は統合収集条件を受信すると、動作データを計測してユーザ端末10に送信する(S205)。S205においては、ロボットコントローラ21は、収集条件が示すサンプリング時間や動作データの種類等に基づいて、ロボットの動作データを計測する。以降、ロボットコントローラ21は、サンプリング時間ごとに動作データを計測し、ユーザ端末10に送信する。
【0102】
ユーザ端末10においては、動作データを受信すると、CPU11は、受信した動作データを動作データベースDB1に格納する(S206)。S206においては、CPU11は、受信した動作データと、当該動作データを計測したロボットと、を関連付けて動作データベースDB1に格納する。ロボットコントローラ21は、随時動作データを計測するので、S205の処理とS206の処理とが繰り返される。
【0103】
CPU11は、収集時間が終了したか否かを判定する(S207)。S207においては、CPU11は、リアルタイムクロック等を利用して現在日時を取得し、収集時間が終了したか否かを判定する。
【0104】
収集時間が終了したと判定された場合(S207;Y)、CPU11は、収集条件データベースDB3に基づいて、全ての収集時間が終了したか否かを判定する(S208)。S208においては、CPU11は、収集時間中の収集条件が残っているか否かを判定する。
【0105】
終了していない収集時間が存在する場合(S208;N)、S202の処理に戻る。この場合、収集時間中の収集条件が残っているので、S202の判定の後に、S203又はS204の処理が実行されて、収集条件が変更される。ロボットコントローラ21は、変更された収集条件に基づいて、動作データの計測を行う。
【0106】
一方、全ての収集時間が終了したと判定された場合(S208;Y)、CPU11は、ロボットコントローラ21に対し、動作データの計測停止要求を送信する(S209)。この場合、動作データを計測する必要がないので、計測停止要求が送信される。なお、計測停止要求は、所定形式の情報が送信されるようにすればよい。ロボットコントローラ21は、計測停止要求を受信すると、動作データの計測を停止し(S210)、本処理は終了する。
【0107】
動作データ収集システム1によれば、ロボットコントローラ21に接続されたロボットの構成情報に基づいて、ロボットの動作データを収集するための設定を行うことで、ロボットコントローラ21に接続されたロボットの構成に応じたデータ収集をすることができる。例えば、ロボットの構成に応じた収集条件を設定したり、ロボットの構成に応じたデータ構造のデータベースを構築して動作データを格納したりすることができる。ロボットの構成に応じたデータ収集をすることで、ロボットの動作解析の精度や収集効率を向上させたり、無駄のないデータ構造のデータベースを構築してデータ量を圧縮させたりすることができる。他にも、不要な動作データが送信されることを防止し、通信量を削減することで、ネットワーク負荷を軽減することができる。
【0108】
また、ロボットの構成情報に応じた収集条件で動作データを収集することで、収集する動作データの精度や収集効率を高めることができる。このため、ロボットの動作の解析の精度を高めることができる。また、不要な動作データが送信されることを防止し、通信量を削減することで、ネットワーク負荷を軽減することもできる。
【0109】
また、複数の収集条件が指定された場合には当該複数の収集条件が統合されるため、動作データの収集効率を高めることができる。重複した内容の動作データが送信されることを防止し、通信量を削減することで、ネットワーク負荷を軽減することもできる。
【0110】
また、複数の収集条件のうち、収集対象の動作データの種類と、動作データの計測スケジュールと、の少なくとも一方が重複した場合に統合収集条件が設定されることで、同じ種類の動作データを重複して収集したり、同一の計測スケジュールで動作データを収集したりすることを防止することができる。
【0111】
また、アプリケーションごとに収集条件が設定され、アプリケーションに応じた収集条件を設定することができ、アプリケーションの目的に沿った動作データを収集することができる。
【0112】
また、ユーザ端末10側で計測スケジュールを管理することで、ロボットコントローラ21の処理負荷を軽減することができる。
【0113】
また、構成情報に応じた設定画面Gで収集条件を設定させることで、収集条件を設定しやすくなる。
【0114】
また、構成情報に応じたデータ構造のデータベースを設定して動作データを格納することで、動作データの格納効率を高めることができる。データベースに無駄なデータが格納されないので、データ量を少なくすることができる。
【0115】
また、複数のロボットコントローラ21が接続されている場合であっても、ロボットコントローラ21ごとに動作データの収集に関する設定を行うことで、ロボットコントローラ21に応じた動作データの収集をすることができる。
【0116】
また、ロボットコントローラ21の先に複数のロボットが階層的に接続されている場合に、ロボットの階層構造に応じたデータ収集をすることができる。
【0117】
また、ロボットコントローラ21の先に接続された複数のロボットに主従関係が存在する場合に、当該主従関係に応じたデータ収集をすることができる。
【0118】
[4.変形例]
なお、本発明は、以上に説明した実施の形態に限定されるものではない。本発明の趣旨を逸脱しない範囲で、適宜変更可能である。
【0119】
図12は、変形例の機能ブロック図である。
図12に示すように、以降説明する変形例では、応答要求送信部107、取得要求送信部108、及び第2構成情報取得部101Bが実現される。これらは、CPU11を主として実現される。例えば、実施形態では、ロボットコントローラ21のIPアドレスをユーザが入力する場合を説明したが、ユーザがIPアドレスを入力することなく、ユーザ端末10がロボットコントローラ21のIPアドレスを取得してもよい。
【0120】
応答要求送信部107は、ネットワークN内の全てのノードに対し、応答要求を送信する。例えば、応答要求送信部107は、ブロードキャストpingコマンドを実行し、ネットワークN内の全てのノードに対し、応答要求を送信する。応答要求は、当該応答要求を受信したコンピュータにIPアドレスを返すための要求である。本変形例では、ロボットコントローラ21は、応答要求を受信した場合に、自身のIPアドレスと、ロボットコントローラであることを示す所定の情報と、を送信する。所定の情報は、予め定められた形式の情報であればよく、例えば、所定の記号列を含む。
【0121】
取得要求送信部108は、ネットワークN内のノードのうち、応答要求に対して所定の応答をしたノードをロボットコントローラ21として特定し、構成情報の取得要求を送信する。取得要求送信部108は、所定形式の情報を受信したか否かを判定し、所定形式の情報を送信したノードに対し、構成情報の取得要求を送信する。構成情報の取得要求は、実施形態で説明した通りである。なお、所定の応答をしたノード(ロボットコントローラ21)のIPアドレスは、データ記憶部100に保持されるものとする。
【0122】
第2構成情報取得部101は、取得要求に応じて送信された構成情報を取得する。ロボットコントローラ21が取得要求に応じて構成情報を送信する処理は、実施形態で説明した通りである。第2構成情報取得部101は、所定の応答をしたロボットコントローラ21が送信した構成情報を取得する。
【0123】
以上説明した変形例によれば、ネットワークN内の全てのノードに対して送信された応答要求に対する応答によってロボットコントローラ21を特定し、当該特定したロボットコントローラ21から構成情報を取得することで、例えば、ユーザがIPアドレスを入力する手間を省くことができ、ロボットコントローラ21から構成情報を取得する手間を省くことができる。
【0124】
なお、アプリケーションAPを実行するユーザ端末10が自ら動作データを収集する場合を説明したが、他のコンピュータが動作データを収集してもよい。即ち、アプリケーションAPを実行するコンピュータと、動作データを収集するコンピュータと、は同じであってもよいし異なっていてもよい。また例えば、アプリケーションAPを実行するコンピュータは、サーバコンピュータであってもよい。また例えば、動作データを収集するコンピュータは、サーバコンピュータであってもよい。また例えば、各機能がユーザ端末10で実現される場合を説明したが、複数のコンピュータで各機能が分担されてもよい。例えば、ユーザ端末10とロボットコントローラ21とで機能が分担されてもよい。
【0125】
また、以上説明した実施形態は具体例として示したものであり、本明細書にて開示される発明をこれら具体例の構成やデータ格納例そのものに限定するものではない。当業者はこれら開示された実施形態に種々の変形、例えば、物理的構成の形状や数、データ構造、処理の実行順を変更したりしてもよい。本明細書にて開示される発明の技術的範囲は、そのようになされた変形をも含むものと理解すべきである。