(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0014】
次に、図面を参照して本発明の実施の形態を説明する。
図1は、本発明の一実施形態に係るロボット復旧支援装置60を備えるロボットシステム1の全体的な構成を示す図である。
【0015】
図1に示すロボットシステム1は、例えば輸送機械や電気機器等の工業製品を製造する工場に設置される。工場に設けられた製造ラインには、ベルトコンベヤやローラコンベア等の搬送装置が設置されており、当該搬送装置により、未完成のワークが支持台等に載置された状態で上流側から下流側に向かって流れてくる。この搬送装置の側には、複数のロボット10が上流側から下流側に向かって並んで配置されている。それぞれのロボット10は、部品の取付けや溶接や塗装等の予め定められた作業をワークに対して施す。即ち、複数のロボット10は、製造ラインにおいてワークに対して施される作業を分担して行う。
【0016】
ロボット10は、公知の産業用多関節ロボットであり、複数の関節(本実施形態では、6つ)の関節を有する多関節アーム11と、当該多関節アーム11の先端に装着されるエンドエフェクタ12と、を有する。エンドエフェクタ12は、ワークに直接働きかけする機能を有する部分であり、例えばグリッパや多指ハンド等により構成される。
【0017】
ロボット10には、当該ロボット10の動作を制御するコンピュータであるロボットコントローラ20が接続されている。ロボットコントローラ20は、ロボットシステム1の各構成同士を通信可能とするネットワークに接続されている。ロボットコントローラ20は、前記ネットワークを介して、ロボット復旧支援装置60に接続されている。ロボット復旧支援装置60は、ロボット10が異常停止した場合に当該ロボット10を作業再開可能な状態に復旧するのを支援する機能を有する装置である。
【0018】
ロボット10が異常停止する場合としては、例えば、ロボット10が周辺構造物(例えば、ワークや、当該ワークに組み付ける物品や、当該ワークを載置する作業台や、他のロボット10)に干渉したり、ロボット10のエンドエフェクタ12がワーク又はワークに組み付ける部品(ネジ等)に対して異常な状態で接触(作用)し引っ掛かりや拗れの発生により接触状態を解除できなくなったりする場合等が考えられる。以下では、エンドエフェクタ12がロボット10の周辺構造物(典型的には、ワーク又はワークに組み付ける部品)に対して異常な状態で干渉している状態を「エンドエフェクタ干渉状態」と称し、それ以外の状態、即ち、エンドエフェクタ12が上記ロボット10の周辺構造物に干渉せずに、エンドエフェクタ12以外の部分で干渉している状態を「エンドエフェクタ非干渉状態」と称する場合がある。
【0019】
本実施形態のロボットシステム1では、ロボット10に異常が発生した場合に、ロボットコントローラ20からロボット10に動作の停止を指示する制御信号を送ることにより当該ロボット10を直ちに停止(異常停止)させることとしている。そしてその場合、ロボット復旧支援装置60において、ロボット10を作業再開可能な状態に自動で復旧するための動作が記述された制御データ(NCデータ)を演算により自動生成する。ここで、「ロボット10を作業再開可能な状態に復旧する」とは、ロボット10を、異常停止したときの位置・姿勢から変化させて、通常の制御データ(通常のロボット作業を行わせるための動作が記述されたNCデータ)に従って作業再開させることができるような位置・姿勢にすることを指す。
【0020】
本実施形態のロボットコントローラ20は上述したようにコンピュータとして構成されており、CPU、ROM、RAM等を備える。また、前記ROMには、ロボット10を制御データ(NCデータ)に基づいて動作させるための適宜のプログラム等が記憶されている。このソフトウェアとハードウェアの協働により、ロボットコントローラ20を、作業用制御データ記憶部21、異常検出部22、及び状態出力部23等として機能させることが可能となっている。
【0021】
以下では、ロボットコントローラ20の各構成について詳細に説明する。
【0022】
作業用制御データ記憶部21は、ロボット10に行わせる動作が記述された制御データ(NCデータ)を記憶するものである。ロボット10をマニュアル操作で動作させる場合には、オペレータがティーチングペンダント(操作手段)40を用いて入力した動作を記述した制御データが作業用制御データ記憶部21に記憶される。
【0023】
異常検出部22は、ロボット10が異常停止した場合に、そのときの多関節アーム11の位置及び姿勢並びにエンドエフェクタ12の位置及び姿勢に関する情報を取得する。異常検出部22は、例えば、ロボット10の各関節の回転角度を各関節に装着されているセンサの検出値により取得し、それらから多関節アーム11の位置及び姿勢並びにエンドエフェクタ12の位置及び姿勢を算出して取得する。また、本実施形態の異常検出部22は、エンドエフェクタ12に作用する力の変化量、並びにエンドエフェクタ12及び当該エンドエフェクタ12に直接的に接触するワーク(又はワークに組み付けられるネジ等の部品)の相対位置の変位量を取得する。具体的には、エンドエフェクタ12には、カメラや接触センサ、或いはタイマ等が装着されており、それらの検出結果により、エンドエフェクタ12に作用する力の変化量、並びに、エンドエフェクタ12及び当該エンドエフェクタ12に直接的に接触するワーク(又は組付部品)の相対位置の変位量を取得できる。
【0024】
状態出力部23は、異常検出部22で取得したロボット10の異常停止時の状態を表す検出結果を、ロボット復旧支援装置60に対して出力することができる。
【0025】
以下では、ティーチングペンダント40の構成について簡単に説明する。ティーチングペンダント40は、ロボット10をマニュアル操作で動作させる場合に、オペレータが操作するものである。オペレータは、ティーチングペンダント40に備えられているキー等を操作することにより、ロボット10に行わせる動作を記述した制御データを作成して出力し、ロボットコントローラ20に入力(送信)することができる。これにより、ロボット10をオペレータが意図したとおりに動作させることができる。ロボットコントローラ20は、ティーチングペンダント40を用いて作成した動作を作業用制御データ記憶部21に記録して、ロボット10が当該動作を反復して行うように制御することが可能となっている。
【0026】
次に、本実施形態のロボット復旧支援装置60について、
図1を参照して詳細に説明する。
【0027】
ロボット復旧支援装置60は、コンピュータとして構成されており、CPU、ROM、RAM等を備える。また、前記ROMには、ロボット10に行わせる動作(試行動作又は復帰動作)が記述された制御データを自動生成し、選択し、ロボットコントローラ20に転送するための適宜のプログラム等が記憶されている。このソフトウェアとハードウェアの協働により、ロボット復旧支援装置60を、復旧制御部50、成功動作記憶部61、3次元シミュレータ62、及びエンドエフェクタ干渉判定部63等として機能させることが可能となっている。
【0028】
以下では、ロボット復旧支援装置60の各構成について詳細に説明する。
【0029】
復旧制御部50は、ロボット10が異常停止した場合に、当該ロボット10を作業再開可能な状態に復旧する制御を行うものである。この復旧制御部50は、動作生成部51、動作検証部52、動作選択部53、及び制御データ送信部54等を備える。
【0030】
動作生成部51は、ロボット10が異常停止した場合に、当該ロボット10を作業再開可能な状態に復旧(以下、単に「復旧」と称する場合がある。)させるためにロボット10に行わせる動作の候補を生成するものである。生成される動作の候補は複数であることが好ましいが、状況によっては候補が1つの場合も考えられる。動作生成部51は、状態出力部23から入力された情報に基づいて、ロボット10を作業再開可能な位置・姿勢に変化させるための動作を動的に生成する。
【0031】
動作検証部52は、動作生成部51で生成した動作の候補のそれぞれについて、ロボットコントローラ20により実際に実行しても問題がないか否かを、干渉の有無等の観点により検証し、適用の可否を判定するものである。より具体的には、本実施形態の動作検証部52は、3次元シミュレータ62で行われるシミュレーションの結果に基づいて、動作時に多関節アーム11が周辺構造物に干渉するか否かと、多関節アーム11の動きが急峻になり過ぎないか否かと、について検証する。動作時に多関節アーム11が周辺構造物と干渉するおそれがある場合、ロボット10等が損傷を受ける可能性があるため適用不可と判定する。また、多関節アーム11の動作に急峻過ぎる動きが含まれる場合、復旧のための動作として好ましくないため適用不可と判定する。動作検証部52で適用可と判定された動作のみが、選択肢となる動作として動作選択部53に入力される。その結果、動作検証部52で適用可と判定された動作のみをロボット10で行わせることができる。
【0032】
動作選択部53は、動作検証部52で適用可と判定された動作が複数ある場合に、それらの中から、ロボット10に行わせる動作を選択する。具体的には、本実施形態の動作検証部52では、3次元シミュレータ62で行われるシミュレーションの結果から、復旧までに掛かる時間(復旧のために必要な時間)、及び、動作余裕度(周辺構造物とロボット10との間隔に十分な隙間があるか否か)を考慮して、適切な動作を選択する。好ましくは、復旧までに掛かる時間が比較的短く、かつ、動作余裕度が十分にある動作が優先的に選択される。
【0033】
制御データ送信部54は、動作生成部51が生成した動作(動作選択部53で選択された動作)が記述された制御データをロボットコントローラ20へ送信する。ロボットコントローラ20は、受信した制御データに基づいてロボット10を動作させる。
【0034】
成功動作記憶部61は、ロボット10を復旧のための前記制御データに基づいて動作させた結果、実際に復旧に成功したときに、その旨をロボットシステム1のネットワークを通じて受信し、そのときに用いられていた制御データを記憶するものである。言い換えれば、成功動作記憶部61は、復旧に成功した成功動作の記録を蓄積するものである。なお、ロボット10が実際に復旧に成功したか否かは、例えば、ロボット10に装着されている各種センサやカメラ等の検出結果から把握することができる。
【0035】
3次元シミュレータ62は、ロボット10及び当該ロボット10の周辺構造物(例えば、他のロボット10、支持台、ワーク、及びワークに組み付けられる部品等)の3次元形状を示す3次元モデルデータを用いて、動作のシミュレーションを行うことができる。3次元シミュレータ62でシミュレーションを行うことにより、例えば、ワークが搬送方向に流れてきてロボット10,10,・・・がそれぞれ動いたときの干渉の発生の有無や、急峻な動き(無理な動き)の有無等をチェックすることができる。
【0036】
エンドエフェクタ干渉判定部63は、エンドエフェクタ12に作用する力の変化量、並びにエンドエフェクタ12及び当該エンドエフェクタ12に直接的に接触するワーク(又はワークに組み付けられるネジ等の部品)の相対位置の変位量を状態出力部23から取得して、異常停止時において上述のエンドエフェクタ干渉状態になっているか否かを判定する。本実施形態の復旧制御部50は、エンドエフェクタ干渉判定部63での判定の結果、エンドエフェクタ干渉状態であるか、エンドエフェクタ非干渉状態であるかによって、異なる復旧制御を行うように構成されている。
【0037】
以下では、復旧制御部50により行われる復旧制御について、
図2を参照して詳細に説明する。
図2は、ロボット復旧支援装置60で行われる復旧制御の処理の流れを示すフローチャートである。
【0038】
ロボット10が異常停止すると
図2の処理が自動的に開始され、初めに、復旧制御部50のエンドエフェクタ干渉判定部63は、現在、上述のエンドエフェクタ干渉状態になっているか否かを判断する(ステップS101)。言い換えれば、エンドエフェクタ12が、当該エンドエフェクタ12が直接的に作用する対象物(典型的には、ワーク又はワークに組み付けられる部品)に対して異常な状態で接触しているか否か、より具体的には対象物との間で噛み込みや拗れや引っ掛かり等が発生しているか否かを判断する。
【0039】
ステップS101での判断の結果、エンドエフェクタ干渉状態となっている場合(ステップS101、Yes)、復旧制御部50は、干渉状態からの脱出を手探り的に試みるために、ステップS102からステップS105までの処理を必要に応じて繰り返して行う。
【0040】
ステップS102において、復旧制御部50の動作生成部51は、エンドエフェクタ12を試行錯誤的に動かすための動作を生成する。具体的には、動作生成部51は、予め定められた複数の単位動作(例えば、X軸方向、Y軸方向、又はZ軸方向に所定量だけ移動する動作)からランダムに選択された1つの単位動作を用いることにより、又は、選択された複数の単位動作を組み合わせることにより、エンドエフェクタ12の位置及び姿勢を変化させるようにロボット10を少量だけ動作させる試行動作(以下、単に「試行動作」と称する場合がある。)を生成する。
【0041】
この際、動作生成部51は、状態出力部23から送られてきた現在のエンドエフェクタ12の位置及び姿勢が、過去の成功動作の開始位置のそれと類似しているか否かを、成功動作記憶部61のデータと比較することにより調べ、似ているものがあった場合、その成功動作(の記憶内容)に基づいて試行動作を生成することとしてもよい。これにより、過去に成功した復旧動作を参考にして試行動作を生成することができるので、適した試行動作を効率的に短時間で生成することができる。
【0042】
続いてステップS103において、復旧制御部50の動作検証部52は、3次元シミュレータ62を用いてシミュレーションを行って、試行動作を実行したときに多関節アーム11(言い換えれば、エンドエフェクタ12以外の部分)が周辺構造物に干渉しないか、及び、多関節アーム11が急峻に動き過ぎないかについて検証する。検証の結果、多関節アーム11が周辺構造物に干渉するおそれがなく、かつ、多関節アーム11が無理な動きをしないことを確認できた試行動作だけが、次のステップS104において試行動作の選択肢として採用される。
【0043】
続いて、ステップS104において、復旧制御部50の動作選択部53は、ステップS103の干渉チェック及び急峻度チェックの結果、問題がないと判断された試行動作の中から、実際にロボット10に行わせる試行動作を選択する。
【0044】
続いて、ステップS105において、復旧制御部50の制御データ送信部54は、ステップS104で選択された試行動作が記述された制御データをロボットコントローラ20に送信(転送)する。ロボットコントローラ20は、受信した制御データに基づいてロボット10を動作させる。
【0045】
ロボット10に実際に試行動作を行わせた後も、依然としてエンドエフェクタ干渉状態が続いている場合(ステップS101、Yes)、復旧制御部50は、ステップS102からステップS105までの処理を反復し、干渉状態からの脱出を、小刻みの動きを繰り返すことにより手探り的に試みる。これにより、ロボット10の状態を、エンドエフェクタ非干渉状態にすることができる。
【0046】
一方、ステップS101での判断の結果、エンドエフェクタ非干渉状態である場合(ステップS101、No)、復旧制御部50は、早期にエンドエフェクタ12の位置・姿勢、及び多関節アーム11の位置・姿勢を作業再開可能な状態とするために、ステップS106からステップS109までの処理を一通り行う。
【0047】
ステップS106において、復旧制御部50の動作生成部51は、エンドエフェクタ12の位置及び姿勢並びに多関節アーム11の位置及び姿勢を作業再開可能な状態に変化させるための動作を生成する。具体的には、動作生成部51は、予め定められた複数の単位動作(例えば、X軸方向、Y軸方向、又はZ軸方向に所定量だけ移動する動作)からランダムに選択された1つの単位動作を用いることにより、又は、選択された複数の単位動作を組み合わせることにより、エンドエフェクタ12の位置及び姿勢並びに多関節アーム11の位置及び姿勢を変化させるようにロボット10を一連の動きで動作させる復帰動作(以下、単に「復帰動作」と称する場合がある。)を生成する。
【0048】
この際、動作生成部51は、状態出力部23から送られてきた異常停止時のエンドエフェクタ12の位置及び姿勢並びに多関節アーム11の位置及び姿勢が、過去の成功動作の開始位置のそれと類似しているか否かを、成功動作記憶部61のデータと比較することにより調べ、似ているものがあった場合、その成功動作(の記憶内容)に基づいて復帰動作を生成することとしてもよい。これにより、過去に成功した復旧動作を参考にして復帰動作を生成することができるので、適した復帰動作を効率的に短時間で生成することができる。
【0049】
続いて、ステップS107において、復旧制御部50の動作検証部52は、3次元シミュレータ62を用いてシミュレーションを行って、復帰動作を実行したときに多関節アーム11及びエンドエフェクタ12が周辺構造物に干渉しないか、及び、多関節アーム11及びエンドエフェクタ12が急峻に動き過ぎないかについて検証する。検証の結果、多関節アーム11及びエンドエフェクタ12が周辺構造物に干渉するおそれがなく、かつ、多関節アーム11及びエンドエフェクタ12が無理な動きをしないことを確認できた復帰動作だけが、次のステップS108における復帰動作の選択肢として採用される。
【0050】
続いて、ステップS108において、復旧制御部50の動作選択部53は、ステップS107の干渉チェック及び急峻度チェックの結果、問題がないと判断された復帰動作の中から、実際にロボット10に行わせる復帰動作を選択する。このとき、上述したように、復旧に要する時間、及び動作余裕度等が総合的に考慮される。
【0051】
続いて、ステップS109において、復旧制御部50の制御データ送信部54は、ステップS108で選択された復帰動作が記述された制御データをロボットコントローラ20に送信(転送)する。ロボットコントローラ20は、受信した制御データに基づいてロボット10を動作させる。これにより、ロボット10に復帰動作を実際に行わせることができる。
【0052】
上記のように、本実施形態では、エンドエフェクタ12が直接的に作用する対象物に対して異常な状態で接触していない状況(噛み込み、拗れ、引っ掛かり等が発生していない状況)では、ロボット10の実際の動作を伴う試行錯誤的な反復は行われないので、復旧を早期に効率的に行うことができる。
【0053】
以上に説明したように、本実施形態のロボット復旧支援装置60は、エンドエフェクタ12を装着可能な多関節アーム11を有するロボット10を制御データに基づいて制御するロボットコントローラ20と通信可能である。このロボット復旧支援装置60は、復旧制御部50と、エンドエフェクタ干渉判定部63と、を備える。復旧制御部50は、ロボット10が異常停止した場合に、当該ロボット10を作業再開可能な状態に復旧する制御を行う。エンドエフェクタ干渉判定部63は、エンドエフェクタ12がロボット10の周辺構造物に対して干渉しているエンドエフェクタ干渉状態と、干渉していないエンドエフェクタ非干渉状態と、を判定する。復旧制御部50は、エンドエフェクタ干渉状態と、エンドエフェクタ非干渉状態とで、異なる復旧制御を行う。
【0054】
これにより、エンドエフェクタ12が周辺構造物に対して干渉しているか否かに応じて別々の復旧制御が行われるので、復旧制御の使い分けにより、復旧成功率の向上及び効率化を実現することができる。
【0055】
また、本実施形態のロボット復旧支援装置60は、動作生成部51と、制御データ送信部54と、を備える。動作生成部51は、ロボット10の動作を生成する。制御データ送信部54は、動作生成部51が生成した動作が記述された制御データをロボットコントローラ20へ送信する。エンドエフェクタ干渉状態では、復旧制御部50は、ロボット10の状態がエンドエフェクタ非干渉状態となるまで、データ生成処理と、制御データ送信処理と、を反復して行う。前記データ生成処理では、動作生成部51が、予め定められた複数の単位動作から選択された1つの単位動作を用いることにより、又は選択された複数の単位動作を組み合わせることにより、エンドエフェクタ12の位置及び姿勢を変化させるようにロボット10を動作させる試行動作を生成する。前記制御データ送信処理では、制御データ送信部54が、生成された試行動作が記述された制御データのロボットコントローラ20へ送信する。
【0056】
これにより、エンドエフェクタ12が他(典型的には、ワークや、ワークに組み付けられるネジ等の部品)と干渉している状況では、エンドエフェクタ12を実際に試行錯誤的に動かすことを反復することで、復旧の成功率を高めることができる。また、干渉状態からの脱出を手探り的に試みる手法を用いているので、様々な作業を行うロボット10に対して幅広く適用することができる。
【0057】
また、本実施形態のロボット復旧支援装置60においては、エンドエフェクタ非干渉状態では、復旧制御部50は、エンドエフェクタ12の位置及び姿勢並びに多関節アーム11の位置及び姿勢を作業再開可能な状態とするためにロボット10を動作させる復帰動作の動作生成部51による生成を行う。また、復旧制御部50は、生成された復帰動作が記述された制御データのロボットコントローラ20への制御データ送信部54による送信を行う。
【0058】
これにより、エンドエフェクタ12が他の干渉しない状況では、ロボット10の実際の動作を伴う試行錯誤的な反復を行わないので、復旧を効率的に行うことができる。
【0059】
また、本実施形態のロボット復旧支援装置60においては、復旧制御部50は、ロボット10を作業再開可能な状態に復旧するためのロボット10の動作を検証して適用の可否を判定する動作検証部52を備える。復旧制御部50は、動作検証部52により適用可と判定された動作のみをロボット10に行わせるように構成される。動作検証部52は、ロボット10及び当該ロボット10の周辺構造物の3次元形状を示す3次元モデルデータを用いたシミュレーションの結果(3次元シミュレータ62で得られた結果)に基づいて、動作時に多関節アーム11が周辺構造物と干渉するか否かを少なくとも検証する。
【0060】
このように、3次元シミュレータ62を用いて3次元シミュレーションによる検証を行うことにより、復旧動作時において、多関節アーム11の周辺構造物への接触を確実に防止することができる。
【0061】
また、本実施形態のロボット復旧支援装置60においては、少なくともエンドエフェクタ干渉状態において、動作検証部52は、動作時にエンドエフェクタ12が周辺構造物と干渉するか否かの検証を行わない。
【0062】
これにより、エンドエフェクタ12が他(ワーク、組付部品等)と干渉する場合であっても、干渉を脱するために、エンドエフェクタ12を試行錯誤的に動かすことができる。
【0063】
また、本実施形態のロボット復旧支援装置60においては、復旧制御部50は動作選択部53を備える。動作選択部53は、復旧のために行わせることが可能なロボット10の動作が複数ある場合に、復旧のために必要な時間及び動作余裕度に基づいて、ロボット10に行わせる動作を選択する。
【0064】
これにより、復旧のための適切な動作を選択してロボット10に行わせることができる。
【0065】
また、本実施形態のロボット復旧支援装置60においては、復旧制御部50は、ロボット10を実際に作業再開可能な状態に復帰できた場合に、当該ロボット10に行わせた動作を記憶する成功動作記憶部61を備える。復旧制御部50は、成功動作記憶部61の記憶内容に基づいてロボット10の動作を生成する。
【0066】
これにより、過去に成功した復旧動作を参考にして動作を生成することができるので、より効率的に復旧動作を行うことが可能になる。
【0067】
また、本実施形態のロボットシステム1は、前記のロボット復旧支援装置60と、ロボット10と、ロボットコントローラ20と、を備える。
【0068】
これにより、ロボット10が異常停止した後に復旧制御を行ったときの復旧成功率を向上するとともに復旧動作の効率化を実現することができる。
【0069】
以上に本発明の好適な実施の形態を説明したが、上記の構成は例えば以下のように変更することができる。
【0070】
上記の実施形態では、ロボット復旧支援装置60は、ロボットコントローラ20とは別に備えられるものとしたが、ロボット復旧支援装置60がロボットコントローラ20の中に組み込まれているものとしてもよい。
【0071】
上記の実施形態では、動作選択部53は、復旧のために行わせることが可能なロボット10の復帰動作が複数ある場合に、復旧のために必要な時間と動作余裕度の双方に基づいて、ロボット10に実際に行わせる復帰動作を選択するものとした。しかしながら、これに限るものではなく、復旧のために必要な時間及び動作余裕度のうちの何れかに基づいて復帰動作を選択するものとしてもよい。
【0072】
上記の実施形態では、動作検証部52は、干渉チェック及び急峻度チェックの両方を行うものとしたが、必ずしもこれに限るものではなく、急峻度チェックは省略することとしてもよい。
【0073】
上記の実施形態では、エンドエフェクタ非干渉状態となるまで試行動作を反復して行うものとしたが、これに限るものではない。例えばこれに代えて、試行動作を反復する回数を有限(例えば、5回)とし、最大限の回数にわたって試行動作を反復してもエンドエフェクタ12がワークやワークに組み付けられる部品に異常な状態で接触している状況(噛み込み、拗れ、引っ掛かり等が発生している状況)が解消されない場合には、それ以上の試行動作は行わずに、オペレータにティーチングペンダント40による動作を促すこととしてもよい。
【0074】
図1には、1本の多関節アーム11を有するロボット10を例示したが、本発明が適用されるロボットは、多関節アームを1本のみ有するロボットに限るものではなく、例えば2本の多関節アームを対で有するロボットであってもよい。また、
図1に例示したロボット10では、エンドエフェクタ12に、複数の関節を有するアーム(多関節アーム11)が接続されるものとしたが、これに限るものではなく、関節の数は単数であってもよい。例えば、アームが水平方向にしか回動しないロボットであっても本発明を適用することができる。