(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0009】
以下、本発明の実施形態について図面に基づき詳細に説明する。
【0010】
図1は、本発明の実施形態に係るロボットシステムの全体構成図である。同図に示すロボットシステム10は、例えば自動車などの輸送機械、テレビ受像機などの電気機器の製造現場に設置されるものである。この製造現場には、ベルトコンベアやローラコンベアなどの搬送装置36が設置されており、該搬送装置36により、ロボットの作業スペースである作業台38に載置された未完成の自動車やテレビ受像機などの作業対象物34が一方向に搬送されている。搬送装置36の側には産業用多関節ロボット30A,30B,30Cが、上流側から下流側に向かって順に離間して配置されており、これらのロボット30A,30B,30Cはそれぞれ、部品の取り付けなどの事前に定められた作業を作業対象物34に対して施す。
【0011】
ロボット30A,30B,30Cには、それらを制御するコンピュータであるロボットコントローラ20A,20B,20Cがそれぞれ接続されており、ロボットコントローラ20A,20B,20Cには、それぞれネットワーク装置18A,18B,18Cが接続されている。ネットワーク装置18A,18B,18Cは、いずれもロボットネットワーク40に接続されている。このロボットネットワーク40には、ロボットコントローラ20A,20B,20Cの動作を支援・管理するロボット管理コンピュータ100も接続されており、ロボットコントローラ20A,20B,20Cは、それぞれネットワーク装置18A,18B,18C及びロボットネットワーク40を介して、ロボット管理コンピュータ100と通信することができる。ここで、ネットワーク装置18A,18B,18C及びロボット管理コンピュータ100は、ロボットネットワーク40におけるアドレスその他のネットワーク識別子をそれぞれ記憶しており、ネットワーク識別子を用いて送信元及び送信先を互いに特定している。
【0012】
搬送装置36は、作業台38をロボット30A,30B,30Cの設置位置の側にて停止させ、ロボット30A,30B,30Cによる作業が終了すると、それぞれの作業台38を下流側のロボットの設置位置の側まで移動させる。なお、ロボット30A,30B,30Cにより作業が終了した旨は、それぞれロボットコントローラ20A,20B,20Cから搬送装置36に通知されてよい。
【0013】
搬送装置36を挟んでロボット30A,30B,30Cの設置位置の反対側には、作業対象物IDリーダ32A,32B,32Cがそれぞれ配置されている。作業対象物34又はそれが載置される作業台38には、作業対象物34のID(識別情報)が、例えば1次元又は2次元バーコードなどの機械読み取りが可能な形態で付加されている。作業対象物34のIDは、例えば作業対象物34の最終的な又は暫定的なシリアル番号やロット番号であってよい。バーコードリーダーなどの作業対象物IDリーダ32A,32B,32Cは、作業対象物34又は作業台38に付加されたIDを読み取り、それを、生産管理ネットワーク42を介して生産管理コンピュータ200に通知する。すなわち、作業対象物IDリーダ32A,32B,32C及び生産管理コンピュータ200は生産管理ネットワーク42に接続されている。さらに、上述のロボット管理コンピュータ100も生産管理ネットワーク42に接続されており、ロボット管理コンピュータ100と生産管理コンピュータ200とは通信可能となっている。
【0014】
本実施形態に係るロボットシステム10では、ロボット30Aの導入時やロボット30Aの配置換えの時に、ロボット30Aを所期の設置位置に配置し、ロボットコントローラ20Aをネットワーク装置18Aに接続すると、ロボット管理コンピュータ100がロボットコントローラ20Aで実行すべき動作制御プログラムを該ロボットコントローラ20に送信し、これによりロボットコントローラ20Aはロボット30Aに所期の動作を確実に行わせることができる。ロボット30B,30Cについても同様である。産業用多関節ロボット30A,30B,30Cは動作制御プログラムの変更により、様々な作業を担うことができるため、ロボット30A,30B,30Cは、ある日は、製造現場のある場所である作業を行い、別の日は製造現場の別の場所で別の作業を行う、という使い方が可能である。本実施形態によれば、ロボット30A,30B,30Cの設置位置に応じて適切な動作制御プログラムをロボットコントローラ20A,20B,20Cに供給できるので、こうした使い方を促進できる。
【0015】
また、本実施形態に係るロボットシステム10では、ロボット30A,30B,30Cのロボットハンド等の把持手段により把持不良が発生した場合など、ロボット30A,30B,30Cで異常が発生した場合に、ロボット管理コンピュータ100が他のロボット30A,30B,30Cを停止させ、ロボット30A,30B,30Cを順に所期の待機姿勢にするための復旧制御プログラムをそれぞれ演算により自動生成する。待機姿勢は、例えばロボット30A,30B,30Cのアームを基体部に接近させ、搬送装置36から離間させた姿勢である。従来、ロボット30A,30B,30Cが、どのような姿勢の場合に異常が発生しても、所期の待機姿勢に姿勢を戻せるようにするために、あらゆる姿勢に関連づけて、その姿勢から所期の待機姿勢に戻すための多数の復旧制御プログラムを事前に生成し、それらをロボットコントローラ20A,20B,20Cに記憶させておく必要があった。本実施形態に係るロボットシステム10によれば、復旧制御プログラムを演算により生成するので、そのような必要がない。
【0016】
また、本実施形態に係るロボットシステム10は生産管理コンピュータ200を含んでおり、生産管理コンピュータ200に、作業対象物IDリーダ32A,32B,32Cで読み取られた作業対象物34のIDが送信されている。さらに、ロボットコントローラ20A,20B,20Cは、ロボット30A,30B,30CのID及び作業中のそれらの動作内容を示す動作内容データをロボット管理コンピュータ100に送信し、ロボット管理コンピュータ100はそれらのデータを作業対象物34のIDに関連づけて記憶している。これにより、どの作業対象物34がどのロボットによりどのような動作内容で作業されたかを記録することができる。これにより作業対象物34に取り付けられる部品の形状が僅かに想定より外れていて取り付け時に力を要した、などの情報を得ることができ、生産管理に役だてることができる。
【0017】
図2は、ロボット管理コンピュータ100の構成図である。ロボット管理コンピュータ100は、ハードディスクや半導体メモリなどの記憶部102と、CPUを中心に構成された制御部104と、ロボットコントローラ20A,20B,20C(ネットワーク装置18A,18B,18C)や生産管理コンピュータ200と通信するためのネットワークアダプタなどの通信部106を有している。
【0018】
記憶部102には、ロボットデータ領域102a、作業環境データ領域102b、動作制御プログラム領域102c、作業内容データ領域が設けられている。ロボットデータ領域102には、ロボット30A,30B,30Cの外形状を示す3次元モデルデータ、ロボット作業能力テーブルが記憶される。ここで、ロボット作業能力テーブルは、
図5に示すように、ロボット30A,30B,30Cを識別するロボットIDに関連づけて、それらロボット30A,30B,30Cの作業能力を記したものである。作業能力は、例えばロボット30A,30B,30Cのアーム先端に取り付けられたツール(ロボットハンドや溶接ツールなど)の種類、アームの本数(1本又は2本)、アームに含まれる関節の数、ロボット30A,30B,30Cのサイズや出力などであってよい。なお、ロボット作業能力テーブルに記録される作業能力は、例えばロボットIDにより識別されるロボット30A,30B,30Cの製品種類を示す情報を含んでもよい。
【0019】
作業環境データ領域102bには、作業対象物34、該作業対象物34に取り付けられる部品(不図示)、作業台38などの3次元モデルデータ、ロボット設置位置テーブル、ロボット30A,30B,30Cの設置位置に対する作業台38の設計上の相対位置(位置測定データ)が記憶される。なお、ロボット30A,30B,30Cは人手で任意にロボット設置位置に配置されるので、それらロボット30A,30B,30Cに対する各作業台38の実際の相対位置は、設計上のそれとは異なり得る。作業台38の設計上の相対位置は、各ロボット設置位置に関連づけて記憶されている。また、ロボット設置位置テーブルは、
図6に示すように、各ロボット設置位置に関連づけて、そのロボット設置位置に設置されているネットワーク装置18A,18B,18Cのネットワーク識別子を記したものである。
【0020】
動作制御プログラム領域102cには、ロボットコントローラ20A,20B,20Cで実行される動作制御プログラム本体、必要作業能力テーブル、ロボット30A,30B,30Cの設置位置に対する作業台38の実際の相対位置を計測するためのキャリブレーションプログラム(後述)が記憶される。必要作業能力テーブルは、
図7に示すように、動作制御プログラムの名称その他の識別情報に関連づけて、同プログラムを実行するのに必要なロボットの作業能力を記したものである。必要作業能力も、例えばロボット30A,30B,30Cのアーム先端に取り付けられたツールの種類、アームの本数、関節数、ロボット30A,30B,30Cのサイズや出力などであってよい。また、必要作業能力は、例えばロボットIDにより識別されるロボット30A,30B,30Cの製品種類を示す情報を含んでもよい。
【0021】
また、作業内容データ領域102dには、作業内容データが記憶される。作業内容データは、
図8に示すように、ロボット30A,30B,30Cの設置位置に関連づけて、どの動作制御プログラムでロボットが制御されるべきかを記したものである。
【0022】
図2に示すように、制御部104は、ロボット情報受信部104a、動作制御プログラム送信部104b、作業能力判断部104c、位置測定データ送信部104d、復旧制御プログラム生成部104e、復旧制御プログラム送信部104f、生産管理コンピュータ報告部104g、特徴生成部104hを含んでいる。これらは、CPUを中心として構成された制御部104においてプログラムが実行されることにより実現される機能である。
【0023】
ロボット情報受信部104aは、ロボット30A,30B,30Cの識別情報であるロボットID、及びそれらの設置位置に関する設置位置情報を受信する。本実施形態では、ロボットコントローラ20A,20B,20Cがネットワーク装置18A,18B,18Cに接続されるのに応じて、設置位置情報として、それらネットワーク装置18A,18B,18Cがそれらのネットワーク識別子をロボット管理コンピュータ100に送信する。また、ロボットコントローラ20A,20B,20Cに記憶されているロボットIDも、ネットワーク装置18A,18B,18Cからロボット管理コンピュータ100に送信する。ロボット位置情報受信部104aは、それらの情報を受信する。
【0024】
動作制御プログラム送信部104bは、ロボット情報受信部104aにより受信されるネットワーク識別子に関連づけられた動作制御プログラムをロボットコントローラ20A,20B,20Cに送信する。具体的には、ネットワーク識別子に関連づけられたロボット設置位置を、
図6に示すロボット設置位置テーブルから読み出し、該ロボット設置位置に関連づけられた動作制御プログラムを、
図8に示す作業内容データから特定する。そして、特定された動作制御プログラムを動作制御プログラム領域102cから読み出し、それを受信済みのネットワーク識別子により識別されるネットワーク装置18A,18B,18Cのいずれかに送信する。ネットワーク装置18A,18B,18Cは、それをロボットコントローラ20A,20B,20Cに転送する。
【0025】
なお、動作制御プログラム送信部104bは、作業能力判断部104cにおける判断に応じて、ネットワーク識別子に関連づけられた動作制御プログラムをロボットコントローラ20A,20B,20Cに送信する。具体的には、作業能力判断部104cにより、受信済みのロボットIDにより識別されるロボット30A,30B又は30Cの作業能力が、受信済みのネットワーク識別子に関連づけられた動作制御プログラムの必要作業能力と同じかそれ以上であれば、該動作制御プログラムをロボットコントローラ20A,20B又は20Cに送信する。また、作業能力判断部104cにより、受信済みのロボットIDにより識別されるロボット30A,30B又は30Cの作業能力が、受信済みのネットワーク識別子に関連づけられた動作制御プログラムの必要作業能力未満であれば、該動作制御プログラムをロボットコントローラ20A,20B又は20Cに送信しない。この場合、ロボットコントローラ20A,20B,20Cやロボット管理コンピュータ100で警告メッセージを表示するようにしてよい。
【0026】
作業能力判断部104cは、受信済みのロボットIDにより識別されるロボット30A,30B又は30Cが、受信済みのネットワーク識別子に関連づけられた動作制御プログラムにより制御可能なものであるか否か、を判断する。具体的には、
図5に示すロボット作業能力テーブルを参照し、受信済みのロボットIDに関連づけられた作業能力のデータを取得する。さらに、ロボットコントローラ20A,20B又は20Cに送信しようとしている動作制御プログラムの必要作業能力のデータを、
図7に示す必要作業能力テーブルから取得する。そして、両データを比較することにより、受信済みのロボットIDにより識別されるロボット30A,30B又は30Cが、受信済みのネットワーク識別子に関連づけられた動作制御プログラムにより制御可能なものであるか否か、を判断する。
【0027】
位置測定データ送信部104d、受信済みのネットワーク識別子に関連づけられた位置測定データをロボットコントローラ20A,20B又は20Cに送信する。具体的には、受信済みのネットワーク識別子に関連づけられたロボット設置位置を、
図6に示すロボット設置位置テーブルから取得し、取得したロボット設置位置に関連づけられた位置測定データ(作業台38の設計上の相対位置)を作業環境データ領域102bから読み出す。さらに、動作制御プログラム領域102cからキャリブレーションプログラムを読み出し、それらをロボットコントローラ20A,20B又は20Cに送信する。これにより、ロボットコントローラ20A,20B,20Cにおいて、作業台38の実際の相対位置を測定することが可能となる。
【0028】
復旧制御プログラム生成部104eは、ロボット30A,30B,30Cに異常が発生した場合に、それらの現在の姿勢に基づき、該姿勢を所期の待機姿勢に変化させるための復旧制御プログラムを演算により生成する。所期の待機姿勢は、上述のように事前に定義されている。復旧制御プログラム生成部104eは、ロボットデータ領域102eに記憶されているロボット30A,30B,30Cの3次元モデルデータに基づいて復旧制御プログラムを生成してよい。例えば、ロボット30A,30B,30Cの3次元モデルデータを用いて、暫定的に生成した復旧制御プログラムによりロボット30A,30B,30Cを動作させた場合に、他の物体と干渉しないかの干渉チェックを実行してよい。この干渉チェックの際、作業環境データ領域102bに記憶されている作業対象物34、該作業対象物34に取り付けられる部品、作業台38などの3次元モデルデータも使うようにすれば、さらに好適である。
【0029】
復旧制御プログラム生成部104eは、ロボットコントローラ20A,20B,20Cからロボット30A,30B,30Cの全ての関節の状態(何度回転しているか)を受信し、そこからロボット30A,30B,30Cの現在の姿勢を判断してよい。或いは、ロボットコントローラ20A,20B,20Cから、動作制御プログラムの停止位置(プログラムカウンタの値)を受信し、そこからロボット30A,30B,30Cの現在の姿勢を判断してよい。すなわち、受信した停止位置まで動作制御プログラムを実行した場合のロボット30A,30B,30Cの姿勢をシミュレーションにより取得してよい。
【0030】
復旧制御プログラム送信部104fは、復旧制御プログラム生成部104eにより復旧制御プログラムが生成されると、それをロボットコントローラ20A,20B又は20Cに送信する。
【0031】
生産管理コンピュータ報告部104gは、ロボットコントローラ20A,20B,20Cから各作業対象物34に対する作業中のロボット30A,30B,30Cの動作内容データ、及びロボット30A,30B,30CのロボットIDを受信すると、それを生産管理コンピュータ200に送信する。この際、ロボットIDに関連づけられたロボット設置位置も生産管理コンピュータ200に送信する。
【0032】
特徴生成部104hは、複数の作業対象物34に係る動作内容データに基づき、動作内容データの特徴を生成する。例えば、多数の作業対象物34に係る動作内容データに含まれる個々の値の変化傾向を生成したり、平均値等の統計値を生成したりする。生成された特徴は、ロボット管理コンピュータ100で表示装置や印刷装置により出力されてもよいし、生産管理コンピュータ200に送信され、該生産管理コンピュータ200で表示装置や印刷装置により出力されてもよい。
【0033】
図3は、ロボットコントローラ20Aの構成図である。ここではロボットコントローラ20Aを説明するが、ロボットコントローラ20B,20Cも同様である。ロボットコントローラ20Aは、ハードディスクや半導体メモリなどの記憶部22と、CPUを中心に構成された制御部24と、ロボット30Aやネットワーク装置18Aと通信するための通信部26を有している。ここで、記憶部22はロボット30Aを識別するロボットIDを記憶している。また、制御部24は、ロボット情報送信部24a、プログラム実行部24b、動作内容取得部24c、異常時姿勢送信部24dを含んでいる。これらは、CPUを中心として構成された制御部24においてプログラムが実行されることにより実現される機能である。
【0034】
ロボット情報送信部24aは、ロボットコントローラ20Aがネットワーク装置18Aに接続されるのに応じて、ロボット30Aを識別するロボットIDをロボット管理コンピュータ100に送信する。また、ロボット30Aがその作業スペースである作業台38に配置された作業対象物34に対して作業する場合に、ロボット管理コンピュータ100の生産管理コンピュータ報告部104gを経由して、生産管理コンピュータ200にロボット30Aを識別するロボットIDを送信する。ロボットIDの送信は、作業対象物34がロボット30Aの前方に搬送された後、次の作業対象物34がロボット30Aの前方に搬送されるまでの間であれば、どのようなタイミングに行われてもよい。
【0035】
この際、ロボット情報送信部24aは、作業対象物34に対する作業におけるロボット30Aの動作内容データを併せて送信する。動作内容データは、作業中のロボット30Aに備えられた各種センサの値を含む。また、動作内容データは、作業時のロボット30Aと作業台38内の物(作業対象物34やその部品)との相対位置を含む。すなわち、ロボット30Aは、作業台内38内の物を掴んだり、物を別の物に組み付けたりする際、そうした作業を確実に行えるよう、ロボット30Aのアーム先端に備えられたカメラや接触センサの出力を頼りに、それら物の実際の位置に該ロボット30Aのアーム先端の作業位置を修正する機能を有している。一方、ロボットコントローラ20Aは、ロボット30Aのアームの各関節の状態をリアルタイムに把握している。また、各関節の状態に基づいて、ロボット30Aの位置から見たアーム先端の作業位置、すなわちアーム先端の相対位置もリアルタイムに演算している。このアーム先端の相対位置は、作業時のロボット30Aと作業台38内の物(作業対象物34やその部品)との相対位置を示しているので、ロボット情報送信部24aは、こうして得られる相対位置を、ロボット管理コンピュータ100の生産管理コンピュータ報告部104gを経由し、生産管理コンピュータ200に送信している。作業台38内の物が同種のものであるにも関わらず、ロボット30Aに対する相対位置がずれている場合、当該物の形状に違いがある可能性があり、上記の相対位置の情報は当該物の品質管理の上で非常に重要な情報となる。
【0036】
プログラム実行部24bは、ロボット管理コンピュータ100の動作制御プログラム送信部104bから送信される動作制御プログラムを実行する。動作制御プログラムは、ロボット30Aのアーム先端に備えられたカメラや接触センサの出力、或いはタイマの出力に従って、どのような動きをロボット30Aのアーム各所に備えられたアクチュエータにさせるかを記述したものである。この動作制御プログラムを実行することにより、ロボットコントローラ20Aから制御命令がロボット30Aに順次送信され、これによりロボット30Aの動作が制御される。また、プログラム実行部24bは、ロボット管理コンピュータ100の位置測定データ送信部104dから送信されるキャリブレーションプログラムを実行する。キャリブレーションプログラムは、ロボット30A,30B,30Cの設置位置に対する作業台38の実際の相対位置を計測するためのプログラムである。キャリブレーションプログラムは、位置測定データ(ロボット30Aに対する作業台38の設計上の相対位置)により示される相対位置にロボット30Aのアーム先端を移動させ、さらにアーム先端に設けられたカメラや接触センサの出力を頼りに、作業台38の特徴箇所にアーム先端を一致させるものである。また、この際のアームの各関節の状態に基づいて、作業台38の特徴箇所の相対位置を演算する。これが作業台38の実際の(設計上のものとは必ずしも一致しない)相対位置となる。
【0037】
動作内容取得部24cは、各作業対象物34に対する作業中のロボット30Aの動作内容を示す動作内容データを取得する。動作内容データは、上述のように、作業中のロボット30Aに備えられた各種センサの値を含む。また、作業時のロボット30Aと作業台38内の物との相対位置を含む。
【0038】
異常時姿勢送信部24dは、ロボット30Aの異常を検知する。例えば、ロボット30Aのアーム先端に取り付けられたロボットハンドに把持不良が発生した場合に、その旨をロボットハンドのセンサの出力から判断する。そして、ロボット30Aに異常が発生した場合に、ロボット30Aの現在姿勢を示す情報を取得し、それをロボット管理コンピュータ100に送信する。
【0039】
図4は、生産管理コンピュータ200の構成図である。生産管理コンピュータ200は、ハードディスクや半導体メモリなどの記憶部202と、CPUを中心に構成された制御部204と、ロボット管理コンピュータ100や作業対象物IDリーダ32A,32B,32Cと通信するためのネットワークアダプタなどの通信部206を有している。ここで、記憶部202は、生産ログを記憶している。生産ログは、
図9に示すように作業対象物IDと、ロボットIDと、動作内容データを関連づけて記憶するものである。これにより、どの作業対象物34がどのロボットにより作業されたか、その際の当該ロボットの動作内容はどのようなものであったか、を後に知ることができ、各種の生産管理に役だてることができる。
【0040】
制御部204は、ロボット情報受信部204a及び作業対象物ID受信部204bを含んでいる。これらは、CPUを中心として構成された制御部204においてプログラムが実行されることにより実現される機能である。ロボット情報受信部204aは、ロボット管理コンピュータ100の生産管理コンピュータ報告部104gから送信されるロボットID、動作内容データ、ロボット設置位置を受信する。また、作業対象物ID受信部204bは、ロボット30A,30B,30Cの作業対象物34が入れ替えとなる場合に、作業対象物IDリーダ32A,32B,32Cから該作業対象物34を識別する作業対象物ID及びロボット設置位置を取得する。作業対象物IDリーダ32A,32B,32Cは、ロボット30A,30B,30Cの作業対象物34がロボット30A,30B,30Cの前に配置された後、次の作業対象物34が配置されるまでの間、どのようなタイミングで作業対象物IDを読み取り、生産管理コンピュータ200に送信してもよい。なお、各作業対象物IDリーダ32A,32B,32Cは、それらの設置位置に対応するロボット設置位置を記憶しており、作業対象物IDとともにロボット設置位置を生産管理コンピュータ200に送信する。制御部204は、ロボット設置位置が共通する、ロボット情報受信部204aで受信するロボットID及び動作内容データと、作業対象物ID受信部204bで受信する作業対象物IDと、を相互に関連づけ、生産ログ202aの一部として記憶部202に格納する。
【0041】
図10は、ロボット30Aの新規設置時又は配置入替時において、ロボットコントローラ20Aをネットワーク装置18Aに接続した際のロボットシステム10の動作を示す図である。ここではロボット30Aを例として取り上げてロボットシステム10の動作を説明するが、ロボット30B,30Cの場合も同様である。
【0042】
同図に示すように、ロボット管理コンピュータ100は、該ロボット管理コンピュータ100のネットワーク識別子をロボットネットワーク40にブロードキャストしており(S101)、ネットワーク装置18Aはロボット管理コンピュータ100のネットワーク識別子を事前に領知している。ロボット30Aを搬送装置36の側のいずれかのロボット設置位置に設置し、ロボットコントローラ20Aを近傍に予め設置されているネットワーク装置18Aに接続すると(S102)、ロボットコントローラ20Aのロボット情報送信部24aは、記憶部22からロボットIDを読み出し、それをネットワーク装置18Aに送信する(S103)。ネットワーク装置18Aは、受信したロボットIDと該ネットワーク装置18Aに記憶されているネットワーク識別子をペアにして、ロボット管理コンピュータ100に宛てて送信する(S104)。
【0043】
ロボット管理コンピュータ100は、ロボット情報受信部104aがロボットID及びネットワーク識別子を受信し、作業能力判断部104cがロボットIDに関連づけられた作業能力を、
図5に示すロボット作業能力テーブルから取得する(S105)。また、動作制御プログラム送信部104bは、ネットワーク識別子に関連づけられたロボット設置位置を、
図6に示すロボット設置位置テーブルから取得する(S106)。このとき、ロボット設置位置と受信済みのロボットIDとを記憶部102に関連づけて記憶しておく。これにより、以後、ロボットIDから直ちにロボット設置位置を得ることができる。
【0044】
さらに動作制御プログラム送信部104bは、ロボット設置位置に関連づけられた動作制御プログラムを、
図8に示す作業内容データから特定する(S107)。次に、作業能力判断部104cは、S107で特定された動作制御プログラムに関連づけられた必要作業能力を、
図7に示す必要作業能力テーブルから読み出し(S108)、S108で得られた必要作業能力とS105で得られた作業能力を比較する(S109)。ロボット30Aの作業能力がS107で特定された動作制御プログラムにより制御可能なものでなければ、処理を中止する。この場合、ロボットコントローラ20Aやロボット管理コンピュータ100でその旨を表示するようにすることが望ましい。
【0045】
ロボット30Aの作業能力がS107で特定された動作制御プログラムにより制御可能なものであれば、位置測定データ送信部104dは、キャリブレーションプログラムを動作制御プログラム領域102cから読み出すとともに、作業環境データ102bから位置測定データを読み出し、それらを、ネットワーク装置18Aを介してロボットコントローラ20Aに送信する(S110)。ロボットコントローラ20Aのプログラム実行部24bは、キャリブレーションプログラムを実行することにより、作業台38の実際の相対位置を測定し、その測定結果であるキャリブレーション結果データを、ネットワーク装置18Aを介してロボット管理コンピュータ100に送信する。ロボット管理コンピュータ100は、記憶部102においてロボット設置位置に関連づけて記憶されている作業台38の相対位置を更新する(S113)。その後、動作制御プログラム送信部104bは、S107で特定された動作制御プログラムと、S113で更新された最新の作業台38の相対位置と、をロボットコントローラ20Aに送信する(S114)。これらを正常受信したロボットコントローラ20Aはロボットコントローラ100に受信確認を返信する(S115)。
【0046】
以上の説明では、ロボットの設置が予定される場所にネットワーク装置18Aを予め設置しておき、ロボットコントローラ20Aはネットワーク装置18Aを介してロボットネットワーク40にアクセスするようにしたが、ロボットコントローラ20Aがネットワーク機能を内蔵し、ロボットネットワーク40に直接アクセスするようにしてもよい。
図11は、ロボット30Aの新規設置時又は設置入替時におけるロボットシステム10の動作の変形例を示す図である。変形例によれば、ロボットコントローラ20Aはキーボード、タッチパネル、ディップスイッチなどの入力装置を備えており、これにより管理者はロボット30Aの設置位置を入力できるようになっている。また、ロボットコントローラ20Aはユニークなネットワーク識別子を記憶している。
【0047】
ロボットコントローラ20Aをロボットネットワーク40に接続すると(S201)、次に管理者はロボット30Aの設置位置を入力する(S202)。例えば、
図8に示されるロボット設置位置のように、ロボット設置位置の識別情報である「L−1」「L−2」「L−3」などの情報を入力するようにすればよい。その後、ロボットコントローラ20Aはロボット、入力されたロボット設置位置及び予め記憶しているネットワーク識別子をロボット管理コンピュータ100に送信する。
【0048】
ロボット管理コンピュータ100は、ロボット情報受信部104aがロボットID、ロボット設置位置及びネットワーク識別子を受信する。このとき、ロボット設置位置と受信済みのロボットIDとを記憶部102に関連づけて記憶しておく。これにより、以後、ロボットIDから直ちにロボット設置位置を得ることができる。次に、ロボット管理コンピュータ100の作業能力判断部104cは、ロボットIDに関連づけられた作業能力を、
図5に示すロボット作業能力テーブルから取得する(S204)。また、動作制御プログラム送信部104bは、ロボット設置位置に関連づけられた動作制御プログラムを、
図8に示す作業内容データから特定する(S205)。次に、作業能力判断部104cは、S205で特定された動作制御プログラムに関連づけられた必要作業能力を、
図7に示す必要作業能力テーブルから読み出し(S206)、S206で得られた必要作業能力とS204で得られた作業能力を比較する(S207)。比較結果に応じた、その後のロボットシステム10の動作は、
図10の場合と同様であるので、ここでは詳細説明を省略する。以上のようにしても、ロボット設置位置に応じて適切な動作制御プログラムをロボットコントローラ20Aにロードすることができる。
【0049】
図12は、作業中のロボットシステム10の動作を示す図である。ロボット30Aの前方に新たな作業対象物34が搬送されると、作業対象物IDリーダ32Aは作業対象物34又は作業台38に付加されているバーコードを読み取り、作業対象物IDを取得する。そして、当該作業対象IDリーダ32Aの位置に対応するロボット設置位置及び取得した作業対象物IDを生産管理コンピュータ200に送信する(S301)。一方、ロボットコントローラ20Aも、ロボット30Aの前方に新たな作業対象物34が搬送されると、プログラム実行部24は動作制御プログラムを実行し、当該作業対象物34に対する作業を実施する(S302)。その間、動作内容取得部24cはロボット30Aの動作内容データを生成する。動作制御プログラムを正常終了すると、ロボット情報送信部24aは、ロボット30AのロボットID、動作内容データをロボット管理コンピュータ100に送信する(S303)。ロボット管理コンピュータ100の生産管理コンピュータ報告部104gは、受信済みのロボットIDに関連づけられたロボット設置位置を取得し、ロボットID及び動作内容データを、該ロボット設置位置とともに生産管理コンピュータ200に送信する(S304)。生産管理コンピュータ200のロボット情報受信部204aは、こうして送信されるロボットID、動作内容データ及びロボット設置位置を受信し、作業対象物ID受信部204bは、作業対象物ID及びロボット設置位置を受信する。生産管理コンピュータ200の制御部204は、共通のロボット設置位置とともに受信した、ロボットIDと動作内容データのペア、及び作業対象物IDを相互に関連づけて、作業ログ202aの一部として記憶部202に格納する(305)。以上の処理は、ロボット30Aの前方に新たな作業対象物34が搬送される度に実行される。
【0050】
図13は、異常発生時のロボットシステム10の動作を示す図である。ここでは、ロボット30Aにおいて異常が発生した場合のロボットシステム10の動作について説明するが、ロボット30B,30Cにおいて異常が発生した場合も同様である。ロボットコントローラ20Aがロボット30Aに備えられた各種センサの出力から異常を検知した場合(S401)、ロボットコントローラ20Aはロボット30Aを停止させる(S402)。ロボットコントローラ20Aはロボット30Aを直ちに停止してもよいし、動作制御プログラム中に事前に設置された実行位置まで該動作制御プログラムを実行した後、ロボット30Aを停止してもよい。その後、ロボットコントローラ20Aの異常時姿勢送信部24dは、ロボットの姿勢をロボット管理コンピュータ100に送信する(S403)。これに応答して、ロボット管理コンピュータ100は、ロボットコントローラ20B,20Cにロボット30B,30Cの停止を指示する(S404,405)。これに応答して、ロボットコントローラ20B,20Cは、ロボット30B,30Cを停止させる(S406,S407)。また、ロボット30B,30Cが停止すると、ロボットコントローラ20B,20Cは、それぞれロボット30B,30Cの姿勢をロボット管理コンピュータ100に送信する(S408,S409)。
【0051】
その後、ロボット管理コンピュータ100の復旧制御プログラム生成部104eは、各ロボットコントローラ20A,20B,20Cで実行される復旧制御プログラムを生成する(S410)。具体的には、各ロボット30A,30B,30Cの現在の姿勢、それぞれの待機位置を取得する。そして、ロボット30A,30B,30cのそれぞれについて、現在の姿勢を待機位置に変化させるための動作制御プログラム(復旧制御プログラム)を演算により暫定的に生成する。このとき、ロボット30A,30B,30Cについて、待機位置に戻す順序も暫定的に決定する。さらに、当該動作を実際に順に行わせた場合のロボット30A,30B,30Cの作業空間における動きをシミュレーションする。このとき、ロボット30A,30B,30C、作業対象物34、作業台38等の3次元モデルデータを用いる。すなわち、公知のバーチャルリアリティ技術を適用し、ロボット30A,30B,30Cを仮想空間内で順に動作させ、それぞれ他のオブジェクトと干渉しないかを調べる。すなわち、ロボット30Aに復旧動作を仮想的に行わせる場合には、ロボット30B,30Cには現在姿勢を維持させる。そして、ロボット30Aが他のオブジェクトとの干渉無しに復旧動作を完了すれば、ロボット30Aが待機姿勢を維持し、ロボット30Cが現在姿勢を維持した状態で、次にロボット30Bに復旧動作を仮想的に行わせる。ロボット30Bが他のオブジェクトとの干渉無しに復旧動作を完了すれば、ロボット30A,30Bが待機姿勢を維持した状態で、最後にロボット30Cに復旧動作を仮想的に行わせる。いずれかの段階でオブジェクトとの干渉が発生する場合には、待機位置に戻す順序を変更して、同様の処理を繰り返す。そして、干渉しない復旧動作の動作制御プログラムを生成できれば、それらをロボットコントローラ20A,20B,20Cに送信する。
【0052】
例えば、ロボット30A,30B,30Cの順に待機位置に戻す復旧制御プログラムの生成に成功した場合には、復旧制御プログラム送信部104fは、まずロボットコントローラ20Aに復旧制御プログラムを送信し(S411)、ロボットコントローラ20Aのプログラム実行部24bが受信した復旧制御プログラムを実行する(S412)。プログラムの実行が正常終了すれば、実行結果をロボット管理コンピュータ100に送信する(S413)。
【0053】
この実行結果を受けて、次
にロボットコントローラ20Bに復旧制御プログラムを送信し(S414)、ロボットコントローラ20Bのプログラム実行部24bが受信した復旧制御プログラムを実行する(S415)。プログラムの実行が正常終了すれば、実行結果をロボット管理コンピュータ100に送信する(S416)。同様にしてロボットコントローラ20Bも復旧制御プログラムを実行する(S417〜S419)。
【0054】
以上説明したロボットシステム10によれば、ロボット新規設置時や配置入替時に、ロボット30A,30B,30Cを所期の設置位置に配置し、ロボットコントローラ20A,20B,20Cをネットワーク装置18A,18B,18Cやロボットネットワーク40に接続すると、ロボット管理コンピュータ100がロボットコントローラ20A,20B,20Cで実行すべき動作制御プログラムをロボットコントローラ20A,20B,20Cに送信する。これによりロボットコントローラ20A,20B,20Cはロボット30A,20B,20Cに所期の動作を確実に行わせることができる。
【0055】
また、ロボット30A,30B,30Cで異常が発生した場合に、ロボット管理コンピュータ100が他のロボット30A,30B,30Cを停止させ、ロボット30A,30B,30Cを順に所期の待機姿勢にするための復旧制御プログラムをそれぞれ自動生成するので、ロボットコントローラ20A,20B,20Cで大容量の記憶装置を備えなくても、復旧制御プログラムを実行することができる。
【0056】
なお、ここではロボット管理コンピュータ100で復旧制御プログラムを生成するようにしたが、ロボットコントローラ20A,20B,20Cで生成してもよい。但し、ロボットコントローラ20A,20B,20Cとは別体のロボット管理コンピュータ100に、復旧制御プログラムの演算を担わせる方が、低コストで高速演算が可能となるメリットがある。また、複数のロボット30A,30B,30Cの現在の姿勢を考慮して、復旧制御プログラムを生成できるので、相互のロボット相互の干渉をより確実に避けることができる。
【0057】
また、生産管理コンピュータ200で、作業対象物ID、ロボットID及び動作内容データを相互に関連づけて記憶するようにしたので、それらの情報を生産管理に役だてることができる。