〔実施形態1〕
以下、本発明の一側面に係る実施の形態(以下、「本実施形態」とも表記する)を、図面に基づいて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰返さない。本実施の形態においては、ロボット1の備えるロボット制御部10を、「自由度が2以上であるロボットアームの制御装置」の典型例として説明を行なう。
以下の説明において、「n」、「p」、「q」、「x」、「y」は、各々、「1」以上の整数を示すものとし、「p」と「q」とは互いに異なる整数であり、「x」と「y」とは互いに異なる整数であるものとする。
また、ロボットアーム30は、複数の軸AX(「関節」とも称する)を備え、例えば、軸AX(1)から軸AX(6)の6つの軸AXを備えている。ロボットアーム30の備える軸AX(1)、軸AX(2)、・・・、軸AX(n)の各々を特に区別する必要がない場合には、単に「軸AX」と略記することがある。
以下、ロボット制御部10がロボットアーム30を原点復帰させる例について詳細を説明するが、「原点復帰」とは、ロボットアーム30の姿勢PSを原点姿勢PS(0)へと変更する(復帰させる)ことである。また、「原点姿勢PS(0)」は、「基本姿勢」とも称され、ロボットアーム30について予め決められた初期状態の姿勢PS(位置)のことである。ロボット1は、ロボットアーム30を原点復帰させてから、ロボットアーム30によるピック動作、プレース動作を実行し、また、搬送ロボット部40の走行を実行する。さらに、以下の説明において、「『ロボットアーム30の手先の位置を、或る位置から別の位置まで直行させる』経路で、ロボットアーム30の姿勢を変更する」ことを、「ロボットアーム30の姿勢PSを直行的に変更する」と略記して表現することがある。例えば、「ロボットアーム30を直行的に原点復帰させる」とは、以下の経路でロボットアーム30の姿勢PSを変更することを指す。すなわち、ロボットアーム30の手先の位置を、「ロボットアーム30の経由姿勢PS(1)における手先の位置」から「原点姿勢PS(0)における手先の位置」へと直行させる経路で、ロボットアーム30の姿勢PSを変更することを指す。また、「手先の位置を、或る位置から別の位置まで直行させる」とは、「手先の位置を、或る位置から別の位置まで最短経路で変更する」ことを意味する。「ロボットアーム30の手先の位置を、或る位置から別の位置へと直行させる経路で、ロボットアーム30の姿勢PSを変更する」制御は、「ロボットアーム30をLINE動作(CP制御での直線動作)させる」制御に限られない。「ロボットアーム30の手先の位置を、或る位置から別の位置へと直行させる経路で、ロボットアーム30の姿勢PSを変更する」制御は、「PTP制御(点から点への制御)」を含む。ロボットアーム30の「手先」は、ロボットアーム30の「先端部分」または「エンドエフェクタ」と称されることがある。
§1.適用例
本発明の一態様に係るロボット制御部10(制御装置)についての理解を容易にするため、先ず、本発明が適用される場面の一例について、具体的には、ロボット制御部10を備えるロボット1の概要について、図2および図3を用いて説明する。
(制御システムの概要)
図2は、ロボット1の概要を示す図である。ロボット1は、ロボット制御部10と、ロボットアーム制御部20と、ロボットアーム30と、搬送ロボット部40とを含んでいる。ロボット制御部10は、ロボットアーム制御部20および搬送ロボット部40の各々と通信可能に接続され、ロボットアーム制御部20は、ロボットアーム30と通信可能に接続されている。
図2に例示するロボット1は、ロボットアーム30を備えた自走式搬送装置であり、具体的には、無人搬送車(AGV:Automated Guided Vehicle)とも呼ばれる搬送ロボット部40(走行ロボット)の上に、多関節のロボットアーム30が搭載されている。ロボット1は、ロボットアーム30によるピック動作およびプレース動作と、搬送ロボット部40による移動とを自動で行うことにより、搬送対象物(ワーク)の無人搬送を可能とするものであり、例えば、工場、倉庫等において利用される。
ロボット制御部10は、ロボット1の全体を統括して制御する制御装置であり、ロボットアーム制御部20を介してロボットアーム30を制御するとともに、搬送ロボット部40を制御して、ロボット1を所望の指定位置へと走行させる。
図2に例示するロボット制御部10は、ロボットアーム制御部20から、「ロボットアーム30の姿勢PS」等を示す情報である動作状態情報を取得し、ロボットアーム30が現在とっている姿勢PSを把握する。また、例えば、ロボット制御部10は、ロボットアーム制御部20に原点復帰制御信号を送信して、ロボットアーム制御部20に、ロボットアーム30の原点復帰を実行させ、つまり、ロボットアーム制御部20を介して、ロボットアーム30を原点復帰させる。
ここで、「ロボットアーム30の姿勢PS」等を示す動作状態情報は、例えば、ロボットアーム30の備える複数の軸AX(関節)の各々の角度(つまり、方向、回転量)、大きさ(つまり、長さ、手先の移動量)を示す情報である。すなわち、ロボットアーム30が、軸AX(1)から軸AX(6)までの6つの軸AXを備える場合、各々が6つの軸AXの各々の角度(回転量)を示す、J1からJ6のセット(組合せ)によって、ロボットアーム30の姿勢PSを表現することができる。つまり、ロボットアーム30が、n個の軸AXを備える場合、各々がn個の軸AXの各々の角度(回転量)を示すJ1からJnのセット(組合せ)によって、ロボットアーム30の姿勢PSを表現することができる。また、ロボットアーム30の先端部分(手先、エンドエフェクタ)の座標(X,Y,Z,Rx,Ry,Rz)(つまり、手先の、3次元空間上の位置および角度)によっても、ロボットアーム30の姿勢PSを表現することができる。
ロボットアーム制御部20は、ロボット制御部10からの指示に従って、ロボットアーム30を制御し、例えば、ロボットアーム30にワークをピックさせたり、ワークをプレースさせたり、ロボットアーム30に所望の姿勢PS(x)をとらせたりする。また、ロボットアーム制御部20は、ロボットアーム30から、「ロボットアーム30の姿勢PS」等を示す情報を取得し、取得した情報を、ロボット制御部10に通知する。
図2に例示するロボットアーム制御部20は、ロボットアーム30から「ロボットアーム30の姿勢PS」等を示す検出データを取得し、取得した検出データを、ロボット制御部10に、「ロボットアーム30の姿勢PS」等を示す動作状態情報として送信する。
また、ロボットアーム制御部20は、ロボット制御部10から原点復帰制御信号を受け付けると、ロボットアーム30の姿勢PSを、ロボットアーム30が現在とっている姿勢PS(x)から原点姿勢PS(0)へと、直行的に変更する。
ロボットアーム制御部20がロボットアーム30から取得する検出データは、例えば、ロボットアーム30の備える複数の軸AXの各々の角度(つまり、方向、回転量)、大きさ(つまり、長さ、手先の移動量)等の動作状態を示すデータである。詳細は後述するが、ロボットアーム30の備える複数の軸AXの各々には、エンコーダ等の計測機器が設けられている。そして、それらの計測機器は、各々、複数の軸AXの各々の動作状態を、例えば、複数の軸AXの各々の角度(つまり、方向、回転量)を計測している。計測機器によって計測された「複数の軸AXの各々の動作状態」は、計測データとして、ロボットアーム30からロボットアーム制御部20へと送信される。
ロボットアーム30は、ロボット制御部10(または、ロボットアーム制御部20)による制御に従って、姿勢PSを変更して種々の作業を行い、例えば、ワークをピックしたり、ワークを把持した状態で移動したり、ワークをプレースしたりする。ロボットアーム30は、自由度が2以上である多軸マニピュレータであり、例えば、6自由度のロボットアームである。ロボットアーム30の有する6つの自由度は、3つの並進度と3つの回転度であってもよいし、ロボットアーム30は、回転軸のみを備える6自由度のロボットアームであってもよい。ロボットアーム30の先端部分は、「手先(エンドエフェクタ)」とも呼ばれ、ロボットアーム30の利用目的に応じて、適宜、形状、大きさ、動作の状態等を変更することができる。「手先の動作状態」の一例としては、「ワークを把持するための、手先の機構の開閉状態」を挙げることができる。
ロボットアーム30の備える軸AXには、ロボット制御部10(または、ロボットアーム制御部20)による制御に従って軸AXの動作状態を変更するモータ等の駆動機器が備えられている。また、ロボットアーム30の備える軸AXには、軸AXの動作状態を計測する計測機器(例えば、角度エンコーダ)が備えられている。
搬送ロボット部40は、ロボットアーム30を移動させる(つまり、搬送する)走行ロボットであり、ロボット制御部10からの移動指示(例えば、指定位置への移動指示)に従って移動し、つまり、ロボット制御部10からの指示に従って走行し、停止する。搬送ロボット部40は、ワークを載置しておくための在荷部(荷台)を備えていてもよい。
(ロボット、特にロボット制御部の開発の背景)
ロボット1は、走行とワークの移載(ピックアップ、移動、および、プレース)とを行うことができる自由度の高いロボットであるため、周辺環境の変化が大きく、また、把持状態の変化、および、在荷状態の変化も大きい。ここで、「把持状態」とは、「ロボットアーム30がワークを把持しているか否か」に加え、ロボットアーム30がワークを把持している場合に、「把持しているワークの形状、大きさ、向き等」も含む。「在荷状態」とは、「搬送ロボット部40上にワークが在荷している(つまり、載置されている)か、否か」に加え、ワークが在荷している場合に、「在荷しているワークの形状、大きさ、向き等」も含む。上述の周辺環境、把持状態、および、在荷状態は、いずれも、「ロボットアーム30の置かれている状況」の要素である。
上述の通り、自走式搬送装置であるロボット1の備えるロボットアーム30について、「ロボットアーム30の置かれている状況」は容易に変化し、また、変化の程度も大きい。そのため、ロボット1の備えるロボットアーム30について、任意の姿勢PS(x)から、ロボット1、ワーク、周囲の壁面等の障害物との衝突(干渉)を回避しつつ、ロボットアーム30を完全自動で原点復帰させることは、現実的には困難である。
ここで、従来までの非・自走式(例えば、設置位置がほぼ固定されている)ロボットの自動での原点復帰方法は、2種類に大別することができる。
第一の方法は、ロボットが自動で原点復帰できる条件を限定し、例えば、特定の周辺環境、および、ロボットの特定の可動範囲においてのみ、ロボットの自動での原点復帰を許可する方法である。しかしながら、前述の通り、自走式搬送装置であるロボット1の備えるロボットアーム30の置かれている状況は容易に変化し、また、変化の程度も大きいため、ロボットアーム30の原点復帰について、このような第一の方法を採用することはできない。
第二の方法は、ロボットの置かれている状況に柔軟に対応して、ロボットが自動で、障害物等との衝突(干渉)を回避しつつ原点復帰できるように、高価なセンサを用いて、複雑な演算を実行する方法である。しかしながら、このような第二の方法は、実現に多額のコストを要し、また、実現に際して必要となる情報量、計算量も膨大で実現性に乏しい。
(ロボット制御部の概要)
そこで、ロボット1(特に、ロボット制御部10)の開発者は、ロボットアーム30の原点復帰動作に係る制御に、作業者OPによる確認作業を介在させ、つまり、ロボットアーム30の原点復帰に係る一連の処理の一部を、作業者OPに実行させる。ロボット制御部10は、「ロボットアーム30の姿勢PSが、許可範囲RP内にある」との判定結果を作業者OPに通知した後、ロボットアーム30の原点復帰の当否(可否)を確認した作業者OPからの指示を待って、ロボットアーム30を原点復帰させる。
ロボット制御部10は、「ロボットアーム30の置かれている実際の状況における『ロボットアーム30の原点復帰の当否』を、作業者OPに確認させる」ことにより、安価かつ簡易な設計で、ロボットアーム30を安全に原点復帰させることができる。
従来までの制御装置が、ロボットアーム30を、任意の姿勢PS(x)から原点復帰させる場合、ロボットアーム30の周囲の作業者OPにとって、原点復帰するまでのロボットアーム30の動作経路を正確に予測することは、必ずしも容易ではない。そのため、作業者OPによる確認がない状態で、従来までの制御装置によってロボットアーム30を原点復帰させることは、作業者OPにとって危険である可能性があり、少なくとも、作業者OPにとって不安である。
これに対し、ロボット制御部10は、「ロボットアーム30の置かれている実際の状況における『ロボットアーム30の原点復帰の当否』を、作業者OPに確認させる」ことで、ロボットアーム30を原点復帰させる際の安全性、信頼性を向上することができる。
(ロボット制御部による、ロボットアームの原点復帰の具体例)
図3は、ロボットアーム30を原点復帰させる際に発生し得る問題と、ロボット制御部10が利用する「ロボットアーム30の経由姿勢PS(1)」を説明する図である。図3に示すように、ロボットアーム30を非常停止させたり、ロボットアーム30にティーチング(教示)を行ったりすると、ロボットアーム30は、原点姿勢PS(0)とは異なる姿勢PS(2)をとる。そして、原点姿勢PS(0)とは異なる姿勢PS(2)をとっているロボットアーム30を始動させるには、「ロボットアーム30の原点復帰」が必要となる。
ロボットアーム30の姿勢PSを、移載動作中の任意の姿勢PS(2)から原点姿勢PS(0)へと「直行的に」変更(遷移)しようとすると、ロボットアーム30が、周囲の天井、壁面、搬送ロボット部40等の筐体、ワーク等の障害物に衝突する可能性がある。すなわち、図3において、ロボットアーム30を姿勢PS(2)から原点姿勢PS(0)へと直行的に復帰(遷移)させようとすると、ロボットアーム30が障害物等と衝突する可能性があり、安全に遷移させることは困難である。
また、前述の通り、ロボット1(特に、ロボットアーム30)の自由度は大きく、ロボットアーム30がとり得る姿勢PS(x)は多様である。「ロボットアーム30を原点復帰させようとする時点で、ロボットアーム30がとっている姿勢PS(x)」は不定であり、これを予め全て予測しておくことは困難である。
そのため、従来までのロボット制御方法(ロボットアーム制御方法)を用いて、自走式搬送装置であるロボット1の備えるロボットアーム30を、任意の姿勢PS(x)から原点復帰させるのは、容易ではない。ロボットアーム30について、「いかなる姿勢PSであっても原点復帰を実行できるようにする」ために、従来のように、「ロボットアーム30のとり得る全ての姿勢PSについて、障害物等との衝突を回避するための煩雑な条件を設定する」ことは現実的ではない。言い換えれば、ロボットアーム30の姿勢PS(つまり、6つの軸AXの各々の動作状態)に応じて、原点復帰の際にロボットアーム30と障害物等との衝突を回避するための煩雑な条件を設定するのは、容易ではない。
例えば、ロボットアーム30の6つの軸AXの動作状態:(J1,J2,J3,J4,J5,J6)が、或る範囲Aにある時は動作経路pでロボットアーム30を原点復帰させ、別の範囲Bにある時は動作経路qで原点復帰させるといった条件設定が必要となる。また、例えば、ロボットアーム30の手先の座標:(X,Y,Z,Rx,Ry,Rz)が、或る範囲Cにある時は動作経路xでロボットアーム30を原点復帰させ、別の範囲Dにある時は動作経路yで原点復帰させるといった条件設定が必要となる。
そこで、ロボット制御部10は、実現コストを抑制しつつ、ロボットアーム30の置かれている状況に依存せずに、ロボットアーム30を、障害物等との衝突を回避しつつ原点復帰させるために、以下の「経由姿勢PS(1)」を、予め準備しておく。すなわち、ロボット制御部10は、ロボットアーム30の原点復帰について、「ロボットアーム30が障害物等との衝突を回避しつつ、直行的に原点復帰することができる」と予測される姿勢PSである「経由姿勢PS(1)」を、予め準備しておく。具体的には、ロボット制御部10は、経由姿勢PS(1)の範囲を示す情報(つまり、「障害物等との衝突を回避しつつ、直行的にロボットアーム30を原点復帰させることができる」と予測される姿勢PSの範囲を示す情報)を、予め記憶部160に格納している。「障害物等との衝突を回避しつつ、直行的にロボットアーム30を原点復帰させることができる」と予測される姿勢PSは、経由姿勢PS(1)とも称される。言い換えれば、経由姿勢PS(1)は、「障害物等との衝突を回避しつつ、直行的にロボットアーム30を原点復帰させることができる」と予測される範囲の姿勢PSである。また、経由姿勢PS(1)の範囲は、つまり、「障害物等との衝突を回避しつつ、直行的にロボットアーム30を原点復帰させることができる」と予測される姿勢PSの範囲は、「許可範囲RP」とも称される。
ロボット制御部10は、ロボットアーム30の姿勢PSが経由姿勢PS(1)となったと判定すると、その判定結果を作業者OPに通知し、作業者OPによる確認および指示を待ってから、以下の処理を実行する。すなわち、ロボット制御部10は、経由姿勢PS(1)から原点姿勢PS(0)へと、ロボットアーム30の姿勢PSを直行的に変更する。言い換えれば、ロボット制御部10は、「手先の位置を、原点姿勢PS(0)における手先の位置へと直行させる」経路で、経由姿勢PS(1)からロボットアーム30を原点復帰させる。
経由姿勢PS(1)から直行的に原点復帰させることにより、ロボット制御部10は、経由姿勢PS(1)から原点姿勢PS(0)への、ロボットアーム30の姿勢PSの変更について、上述の煩雑な条件を設定する必要がなくなる。つまり、ロボット制御部10による「ロボットアーム30の姿勢PSを、経由姿勢PS(1)から原点姿勢PS(0)へと変更する」制御については、ロボットアーム30が障害物等と衝突するのを回避するための煩雑な条件は、設定されていない。そのため、ロボット制御部10は、簡易な条件を設定するだけで、ロボットアーム30を、障害物等との衝突を回避しつつ安全に、原点復帰させることができる。
「ロボットアーム30を原点復帰させようとする時点でロボットアーム30がとっている姿勢PS(x)」から経由姿勢PS(1)へと、ロボットアーム30の姿勢PSが変更されている間、ロボット制御部10は、ロボットアーム30の姿勢PSを監視している。例えば、ロボット制御部10は、ロボットアーム30の備える複数の軸AXの各々に設けられたエンコーダの計測値(つまり、複数の軸AXの各々の動作状態)を監視している。具体的には、ロボット制御部10は、「ロボットアーム30の姿勢PSが、経由姿勢PS(1)になったか否か」を判定し、つまり、「複数の軸AXの各々の動作状態が、許可範囲RPに対応する動作範囲RAP内になったか否か」を判定している。
そして、ロボット制御部10は、上述の判定の結果を作業者OPに通知する。ロボット制御部10は、上述の判定結果を、ブザー等を制御して音によって作業者OPに通知してもよいし、表示灯等を制御して光によって作業者OPに通知してもよい。
作業者OPは、「ロボットアーム30の姿勢PSが許可範囲RP内にある」との判定結果を認識すると、状況確認を行い、必要な場合には適宜、ロボットアーム30の周囲に存在する障害物の撤去等を行う。そして、安全を確認すると、作業者OPは、原点復帰動作の実行をロボット制御部10に指示し、つまり、原点復帰指示をロボット制御部10に与える。「ロボットアーム30の姿勢PSが許可範囲RP内にある」と判定している間に、作業者OPからの原点復帰指示があると、ロボット制御部10は、ロボットアーム30が現在とっている姿勢PSを、原点姿勢PS(0)へと直行的に変更する。
ロボット制御部10が予め記憶部160(特に、許可範囲テーブル161)に格納している許可範囲情報(許可範囲RPを示す情報)は、書き換え可能であってもよい。許可範囲情報を更新可能とすることによって、ロボットアーム30の手先の形状、搬送ロボット部40の在荷部の高さ等、ロボットアーム30の置かれている状況の変化に応じて、許可範囲情報を柔軟に変更することが可能となる。
許可範囲RPは、経由姿勢PS(1)の範囲であり、経由姿勢PS(1)は、ロボットアーム30の備える複数の軸AX(関節)の動作状態、および、ロボットアーム30の手先の動作状態(つまり、座標)の少なくとも一方によって、表現することができる。そのため、許可範囲RPは、「経由姿勢PS(1)をとっているロボットアーム30の、複数の軸AXの各々の動作状態」の範囲、および、「経由姿勢PS(1)をとっているロボットアーム30の、手先の座標」の範囲の少なくとも一方として、表現されてもよい。言い換えれば、許可範囲RPは、ロボットアーム30の姿勢PSが経由姿勢PS(1)となるための、「複数の軸AXの各々の動作状態」の範囲、および、「手先の座標(動作状態)」の範囲の少なくとも一方として、表現されてもよい。ロボットアーム30の姿勢PSが経由姿勢PS(1)となるための、「複数の軸AXの各々の動作状態」の範囲、および、「手先の座標」の範囲は、「動作範囲RAP」と呼ばれる。また、動作範囲RAPを示す情報は、「動作範囲情報」と呼ばれる。
例えば、ロボットアーム30が軸AX(1)から軸AX(6)の6つの軸AXを備える場合、許可範囲RPは、それら6つの軸AXの各々の動作状態:(J1,J2,J3,J4,J5,J6)の動作範囲RAPの組合せ(セット)として、表現されてもよい。具体的には、許可範囲RPにおいて、軸AX(1)の動作状態:J1についての動作範囲RAPである動作範囲RAP(AX(1))が、軸AX(2)の動作状態:J2についての動作範囲RAPである動作範囲RAP(AX(2))が、設定されていてもよい。同様に、許可範囲RPにおいて、J3、J4、J5,J6の各々についての動作範囲RAPである動作範囲RAP(AX(3))、RAP(AX(4))、RAP(AX(5))、RAP(AX(6))が、設定されていてもよい。
特に、許可範囲RPにおいて、軸AX(1)の動作状態:J1について、その動作範囲RAP(AX(1))として、最大値J1_MAXと最小値J1_minとが設定されていてもよい。同様に、許可範囲RPにおいて、軸AX(2)の値:J2について、その動作範囲RAP(AX(2))として、最大値J2_MAXと最小値J2_minとが設定されていてもよい。すなわち、許可範囲RPにおいて、ロボットアーム30の備える軸AX(n)の値:Jnについて、その動作範囲RAP(AX(n))として、最大値Jn_MAXと最小値Jn_minとが設定されていてもよい。
ロボットアーム30の備える複数の軸AXの各々の動作範囲RAPは、相互に独立して指定されていてもよいし、相互に関連付けられて指定されていてもよい。例えば、ロボットアーム30の備える或る軸AX(p)の動作範囲RAP(p)と、別の軸AX(q)の動作範囲RAP(q)とは、相互に独立して指定されていてもよい。
また、ロボットアーム30の備える或る軸AX(p)の値:Jpが「x」であると、別の軸AX(q)の動作範囲RAP(q)が範囲Aとして指定され、Jpが「y」であると、動作範囲RAP(q)が範囲Aとは異なる範囲Bして指定されてもよい。例えば、Jpが「x」である場合、動作範囲RAP(q)は、最大値Jqx_MAXと最小値Jqx_minとによって指定され、Jpが「y」であると、動作範囲RAP(q)は、最大値Jqy_MAXと最小値Jqy_minとによって指定されてもよい。
許可範囲RPは、ロボットアーム30の手先の動作状態(座標):(X,Y,Z,Rx,Ry,Rz)の動作範囲RAPの組合せ(セット)として、表現されてもよい。すなわち、許可範囲RPにおいて、手先の座標:(X,Y,Z,Rx,Ry,Rz)を示す、「X」、「Y」、「Z」、「Rx」、「Ry」、「Rz」の各々について、動作範囲RAPが設定されていてもよい。具体的には、許可範囲RPにおいて、「X」についての動作範囲RAPである動作範囲RAP(X)が、「Y」についての動作範囲RAPである動作範囲RAP(Y)が、設定されていてもよい。同様に、許可範囲RPにおいて、「Z」、「Rx」、「Ry」、「Rz」の各々についての動作範囲RAPである動作範囲RAP(Z)、RAP(Rx)、RAP(Ry)、RAP(Rz)が、設定されていてもよい。
特に、許可範囲RPにおいて、「X」に対し、動作範囲RAP(X)として、最大値X_MAXと最小値X_minとが設定されていてもよく、「Y」に対し、動作範囲RAP(Y)として、最大値Y_MAXと最小値Y_minとが設定されていてもよい。動作範囲RAP(Z)、RAP(Rx)、RAP(Ry)、RAP(Rz)の各々についても、同様である。
ロボット制御部10は、ロボットアーム30の原点復帰に係る制御を半自動とする(つまり、原点復帰に係る制御において、作業者OPによる確認を利用する)ことによって、ロボットアーム30の安全な原点復帰を、低コストかつ簡易な設計で実現する。ロボット制御部10は、予め準備しておいた経由姿勢PS(1)と、作業者OPによる確認とを利用することにより、低コストかつ簡易な設計で、障害物等との衝突を回避しつつロボットアーム30を原点復帰させることができる。
例えば、図2に示す例では、ロボットアーム30の姿勢PSを、姿勢PS(2)から経由姿勢PS(1)へと、作業者OPが手動で誘導する(変更する)例が示されている。姿勢PS(2)は、経由姿勢PS(1)とも、原点姿勢PS(0)とも異なる姿勢PSである。
ロボットアーム30の複数の軸AXの各々にはエンコーダ等の計測機器が備えられ、姿勢PS(2)から経由姿勢PS(1)へと、ロボットアーム30の姿勢PSが変更されている間、計測機器は、複数の軸AXの各々の動作状態を計測している。計測機器が計測した計測結果(計測データ)は、ロボットアーム30からロボットアーム制御部20へと送信される(1)。
ロボットアーム制御部20は、ロボットアーム30から取得した計測データを、ロボットアーム30の複数の軸AXの各々の動作状態情報として、ロボット制御部10へと送信する(2)。前述の通り、ロボットアーム制御部20がロボット制御部10へと送信する動作状態情報は、ロボットアーム30の複数の軸AXの各々の動作状態を示すものであってもよいし、ロボットアーム30の手先の動作状態(つまり、座標)を示すものであってもよい。
ロボット制御部10は、取得した動作状態情報を用いて、ロボットアーム30の姿勢PSを監視し、具体的には、ロボットアーム30の姿勢PSが経由姿勢PS(1)となったか否かを判定する。例えば、ロボット制御部10は、経由姿勢PS(1)として認められた姿勢PSの範囲である許可範囲RPに対応する動作範囲RAPと、取得した動作状態情報とを比較して、上述の判定を行う。
ロボット制御部10は、ロボットアーム30の姿勢PSが経由姿勢PS(1)となったと判定すると、ブザー、表示灯等を制御して、その判定結果を作業者OPに通知する(3)。作業者OPは、ロボット制御部10から通知された判定結果を認識すると、状況確認を行い、必要な場合には適宜、ロボットアーム30の周囲に存在する障害物の撤去等を行う。そして、安全を確認すると、作業者OPは、スイッチ等によって原点復帰指示(原点復帰の実行を許可する指示)をロボット制御部10に与える(4)。
「ロボットアーム30の姿勢PSが経由姿勢PS(1)となっている」と判定している間に、作業者OPからの原点復帰指示があると、ロボット制御部10は、ロボットアーム制御部20に、原点復帰制御信号を送信する(5)。ロボット制御部10から原点復帰制御信号を受信したロボットアーム制御部20は、原点復帰制御信号に対応するアーム駆動信号をロボットアーム30に送信して、ロボットアーム30を原点復帰させる(6)。具体的には、ロボットアーム制御部20は、ロボットアーム30が現在とっている経由姿勢PS(1)から原点姿勢PS(0)へとロボットアーム30の姿勢PSを直行的に変更するアーム駆動信号を、ロボットアーム30に送信する。これによって、ロボットアーム30の姿勢PSは、経由姿勢PS(1)から原点姿勢PS(0)へと直行的に変更される。
(ロボット制御部についての整理)
これまでに図2および図3を用いて説明してきた内容は、以下のように整理することができる。すなわち、ロボット制御部10は、自由度が2以上であるロボットアーム30の制御装置である。ロボット制御部10においては、ロボットアーム30の姿勢PSについて、以下の許可範囲RPが予め設定されている。すなわち、「障害物等との衝突を発生させることなく、手先の位置を原点姿勢PS(0)における手先の位置へと直行させる経路で、ロボットアーム30を原点復帰させることができる」と予測される姿勢PSの範囲が、許可範囲RPとして設定されている。言い換えれば、経由姿勢PS(1)として認められた姿勢PSの範囲が、許可範囲RPとして、予め設定されている。ロボット制御部10は、通知部130と復帰指示部170とを備えている。通知部130は、姿勢判定部120によって「ロボットアーム30の姿勢PSが、許可範囲RP内にある」と判定されると、作業者OP(ユーザ)に判定結果を通知する。復帰指示部170は、通知部130によって判定結果を通知された作業者OPから原点復帰の実行指示があると、ロボットアーム30を、許可範囲RP内にあると判定された姿勢PS(つまり、経由姿勢PS(1))から、直行的に原点復帰させる。
前記の構成によれば、ロボット制御部10は、「ロボットアーム30の姿勢PSが、予め設定されている許可範囲RP内にある」と判定されると、その判定結果を作業者OPに通知する。判定結果を通知された作業者OPは、「実際に、手先の位置を原点姿勢PS(0)における手先の位置へと直行させる経路で、ロボットアーム30を原点復帰させた場合に、ロボットアーム30と障害物等との衝突が発生することがないか」を確認する。そして、「実際に、手先の位置を原点姿勢PS(0)における手先の位置へと直行させる経路で、ロボットアーム30を原点復帰させた場合に、衝突は発生しない」ことを確認すると、作業者OPは、ロボット制御部10に、原点復帰の実行指示を与える。「ロボットアーム30の姿勢PSが、許可範囲RP内にある」との判定結果の通知を契機として実際の状況を確認した作業者OPから、「原点復帰の実行指示」があると、ロボット制御部10は、以下の処理を実行する。すなわち、ロボット制御部10は、ロボットアーム30を、許可範囲RP内にあると判定された姿勢PS(1)から、手先の位置を原点姿勢PS(0)における手先の位置へと直行させる経路で、原点復帰させる。
つまり、ロボット制御部10は、「直行的に原点復帰させたとしても障害物等との衝突を回避できる」と予想される経由姿勢PS(1)をロボットアーム30がとっていると判定すると、作業者OPにその旨を通知する。そして、ロボット制御部10は、「実際に、姿勢PS(1)から直行的に(つまり、手先の位置を原点姿勢PS(0)における手先の位置へと直行させる経路で)、ロボットアーム30を原点復帰させてよいか」を、作業者OPに確認させる。特に、ロボット制御部10は、作業者OPに、「ロボットアーム30が実際に現在置かれている状況において、ロボットアーム30が現在とっている姿勢PSから直行的に原点復帰させてよいか」を確認させる。ロボット制御部10は、「ロボットアーム30が実際に現在置かれている状況において、ロボットアーム30が現在とっている姿勢から、直行的に原点復帰させてよい」と作業者OPが確認するのを待つ。そして、作業者OPが上述の確認を行って、ロボット制御部10に原点復帰を指示すると、ロボット制御部10は、ロボットアーム30を原点復帰させる。つまり、ロボット制御部10は、作業者OPによる確認と、確認後の明示的な原点復帰指示とを待って、ロボットアーム30を原点復帰させる。具体的には、ロボット制御部10は、ロボットアーム30が現在とっている姿勢PSから、手先の位置を原点姿勢PS(0)における手先の位置へと直行させる経路で、言い換えれば、直行的に、ロボットアーム30を原点復帰させる。
ここで、「ロボットアーム30が実際に現在置かれている状況」は、ロボットアーム30を取り囲む物理空間等、「ロボットアーム30の外部の状況」を含む。「ロボットアーム30の外部の状況」は、ロボットアーム30の周囲に存在する壁面、構造物、機器等の状況に加えて、ロボットアーム30の作業対象であるワークの状況も含む。ワークがロボットアーム30の周囲に載置されている(例えば、ロボットアーム30を備える在荷部に、ワークが載置されている)場合、載置されているワークの状態(形状、大きさ、向き等)等も、「ロボットアーム30の外部の状況」の一つである。同様に、例えば、ロボットアーム30がワークを把持している場合には、把持されているワークの状態等も、「ロボットアーム30の外部の状況」の一つである。
「ロボットアーム30が実際に現在置かれている状況」は、「ロボットアーム30の外部の状況」に加えて、「ロボットアーム30自体の状況」も含む。ロボットアーム30自体の利用状況、ロボットアーム30の手先(ロボットアーム30の先端。エンドエフェクタ)の形状、大きさ、動作の状態等は、「ロボットアーム30自体の状況」の一例である。「手先の動作状態」の一例としては、「ワークを把持するための、手先の機構の開閉状態」を挙げることができる。
上述の通り、ロボット制御部10は、作業者OPによる「ロボットアーム30が現在とっている姿勢PSから、手先の位置を原点姿勢PS(0)における手先の位置へと直行させる経路で、原点復帰させてもよいか」の確認の契機を、作業者OPに通知する。つまり、ロボット制御部10は、「ロボットアーム30が実際に現在置かれている状況において、ロボットアーム30が現在とっている姿勢PSから直行的に原点復帰させてよいか」を、作業者OPに判断させる。ロボット制御部10は、「ロボットアーム30が実際に現在置かれている状況において、ロボットアーム30が現在とっている姿勢から直行的に原点復帰させてよいか」の判断を、作業者OPに委ねる。そのため、ロボット制御部10は、上述の判断に必要となる情報量、計算負荷を軽減することができる。
また、ロボット制御部10は、作業者OPによる原点復帰の指示に従って、ロボットアーム30を、現在とっている姿勢から、「手先の位置を原点姿勢PS(0)における手先の位置へと直行させる」経路で、原点復帰させる。「手先の位置を、現在の位置から原点姿勢PS(0)における手先の位置へと、直行させる」経路は、「障害物等との衝突を避けるために、様々な情報を用いて、複雑な条件分岐の結果特定される」経路ではなく、予め一意に特定される経路である。そのため、ロボット制御部10は、「ロボットアーム30が現在とっている姿勢」から、障害物等との衝突を避けつつ、ロボットアーム30を原点復帰させるための経路計算に必要となる情報量、計算負荷を軽減することができる。
つまり、ロボット制御部10は、あらゆる姿勢PSについて、あらゆる状況を想定して、「ロボットアーム30を、障害物等との衝突を回避しつつ(つまり、安全に)原点復帰させる方法」を演算する必要がない。そのため、ロボット制御部10は、ロボットアーム30のとり得る姿勢PSが多様であり、ロボットアーム30の置かれている状況が多様であっても、「ロボットアーム30を、安全に原点復帰させる」ために必要とする情報量、計算負荷を抑制することができる。
また、ロボット制御部10は、作業者OPによる上述の確認結果および指示に従って、ロボットアーム30を原点復帰させる。ロボット制御部10は、「ロボットアーム30が実際に現在置かれている状況」のいかんにかかわらず、作業者OPによる上述の確認結果および指示に従って、ロボットアーム30を原点復帰させる。つまり、ロボット制御部10は、「ロボットアーム30が実際に現在置かれている状況において、ロボットアーム30が現在とっている姿勢PSから直行的に原点復帰させてよい」との作業者OPの確認結果に従って、ロボットアーム30を原点復帰させる。ロボット制御部10は、「ロボットアーム30が実際に現在置かれている状況」に係る作業者OPの確認結果を利用することで、ロボットアーム30の置かれている状況に依存せずに、ロボットアーム30を安全に原点復帰させることができる。
したがって、ロボット制御部10は、実現コストを抑制しつつ、ロボットアーム30の置かれている状況に依存せずに、ロボットアーム30を、障害物等との衝突を回避しつつ原点位置へと復帰させることができるとの効果を奏する。
§2.構成例
これまでに概要を説明してきたロボット制御部10について、次に、図1を用いてその詳細を説明していく。
図1は、ロボット制御部10の構成例を示す図である。ロボット制御部10は、機能ブロックとして、例えば、状態情報取得部110、姿勢判定部120、通知部130、ユーザ操作取得部140、ユーザ操作判定部150、記憶部160、復帰指示部170、動作状態制御部180、誘導動作指示部190を備えている。ロボット制御部10は、上述の各機能ブロックに加えて、搬送ロボット部40の位置を特定して搬送ロボット部40による走行を制御する走行制御部等を備えていてもよい。記載の簡潔性を担保するため、本実施の形態に直接関係のないロボット制御部10の構成は、説明およびブロック図から省略している。ただし、実施の実情に則して、ロボット制御部10は、これらの省略された構成を備えてもよい。
ロボット制御部10の備える上述の機能ブロックは、例えば、CPU(central processing unit)等が、ROM(read only memory)、NVRAM(non-Volatile random access memory)等で実現された記憶装置(記憶部160)に記憶されているプログラムを不図示のRAM(random access memory)等に読み出して実行することで実現できる。以下に先ず、状態情報取得部110、姿勢判定部120、通知部130、ユーザ操作取得部140、ユーザ操作判定部150、復帰指示部170、動作状態制御部180、誘導動作指示部190の各々について、その詳細を説明する。
(記憶部以外の機能ブロックについて)
状態情報取得部110は、ロボットアーム制御部20から、「ロボットアーム30の姿勢PS」等を示す情報である動作状態情報を取得し、取得した動作状態情報を、姿勢判定部120に通知する。具体的には、状態情報取得部110は、ロボットアーム制御部20を介して、ロボットアーム30の複数の軸AXの各々に備えられた計測機器が計測した計測データを、ロボットアーム30の複数の軸AXの各々の動作状態を示す情報として取得する。
例えば、動作状態情報は、ロボットアーム30の6つの軸AXの各々の動作状態(関節の角度(つまり、方向、回転量)、および、手先の移動量の少なくとも一方)を示す(J1,J2,J3,J4,J5,J6)である。また、例えば、動作状態情報は、ロボットアーム30の手先(先端部分、エンドエフェクタ)の座標(つまり、手先の、3次元空間上の位置および角度)を示す(X,Y,Z,Rx,Ry,Rz)である。
姿勢判定部120は、ロボットアーム30の姿勢PSが、許可範囲RP内にあるか否かを判定し、判定結果を通知部130へと出力する。また、姿勢判定部120は、「ロボットアーム30の姿勢PSが、許可範囲RP内にある」と判定すると、復帰指示部170へ、原点復帰許可信号を出力する。さらに、姿勢判定部120は、差分算出部121が算出した差分情報を、通知部130、動作状態制御部180、および、誘導動作指示部190の各々へと出力する。具体的には、姿勢判定部120は、以下の3つの処理を実行する。
第一に、姿勢判定部120は、記憶部160の許可範囲テーブル161を参照して、許可範囲情報を取得し、特に、状態情報取得部110が取得した動作状態情報に対応する動作範囲情報を取得する。
例えば、動作状態情報が、6つの軸AXの各々の動作状態:(J1,J2,J3,J4,J5,J6)であると、姿勢判定部120は、6つの軸AXの各々の動作状態についての動作範囲RAPを示す動作範囲情報を取得する。具体的には、姿勢判定部120は、軸AX(1)の動作状態:J1について予め指定されている動作範囲RAP(AX(1))を取得し、また、軸AX(2)の動作状態:J2について予め指定されている動作範囲RAP(AX(2))を取得する。同様に、姿勢判定部120は、J3、J4、J5、J6の各々についての動作範囲RAPである、動作範囲RAP(AX(3))、RAP(AX(4))、RAP(AX(5))、RAP(AX(6))を取得する。
例えば、動作状態情報が、ロボットアーム30の手先の動作状態:(X,Y,Z,Rx,Ry,Rz)であると、姿勢判定部120は、「X」、「Y」、「Z」、「Rx」、「Ry」、「Rz」の各々の動作範囲RAPを示す動作範囲情報を取得する。具体的には、姿勢判定部120は、「X」について予め指定されている動作範囲RAP(X)を取得し、また、「Y」について予め指定されている動作範囲RAP(Y)を取得する。同様に、姿勢判定部120は、「Z」、「Rx」、「Ry」、「Rz」の各々についての動作範囲RAPである、動作範囲RAP(Z)、RAP(Rx)、RAP(Ry)、RAP(Rz)を取得する。
第二に、姿勢判定部120は、動作状態情報と動作範囲情報とを用いて、「ロボットアーム30の姿勢PSが、許可範囲RP内にあるか否か」を判定し、言い換えれば、「ロボットアーム30の姿勢PSが、経由姿勢PS(1)にあるか否か」を判定する。
具体的には、先ず、姿勢判定部120の含む差分算出部121が、「動作状態情報に示される複数の動作状態の各々について、対応する動作範囲RAP内にあるか否か」を判定する。次に、姿勢判定部120は、「動作状態情報に示される複数の動作状態の各々」に対する差分算出部121の判定結果を用いて、「ロボットアーム30の姿勢PSが、許可範囲RP内にあるか否か」を判定する。「動作状態情報に示される複数の動作状態」の全てについて、差分算出部121が、「対応する動作範囲RAP内にある」と判定すると、姿勢判定部120は、「ロボットアーム30の姿勢PSが、許可範囲RP内にある」と判定する。「動作状態情報に示される複数の動作状態」の少なくとも1つについて、差分算出部121が、「対応する動作範囲RAP内にない」と判定すると、姿勢判定部120は、「ロボットアーム30の姿勢PSが、許可範囲RP内にない」と判定する。以下、詳細を説明する。
差分算出部121は、「動作状態情報に示される複数の動作状態の各々について、対応する動作範囲RAP内にあるか否か」を判定し、例えば、「或る動作状態(p)が、対応する動作範囲RAP(p)内にあるか否か」を判定する。「或る動作状態(p)が、対応する動作範囲RAP(p)内にない」と判定すると、差分算出部121は、さらに、「或る動作状態(p)と、対応する動作範囲RAP(p)の最大値または最小値との差(差分)」を算出する。
例えば、差分算出部121は、「軸AX(1)の動作状態:J1が、最大値J1_MAXと最小値J1_minとが設定されている動作範囲RAP(AX(1))の範囲内にあるか否か」を判定する。「J1が動作範囲RAP(AX(1))の範囲内にある」と判定すると、差分算出部121は、J1と動作範囲RAP(AX(1))との差分として「0」を出力する。つまり、差分算出部121が、「J1と動作範囲RAP(AX(1))との差分」として、「0」を出力するのは、差分算出部121が、「J1が動作範囲RAP(AX(1))の範囲内にある」と判定した場合である。
「J1が動作範囲RAP(AX(1))の範囲内にない」と判定すると、差分算出部121は、J1と動作範囲RAP(AX(1))との差分を出力する。例えば、「J1が、最大値J1_MAXよりも、『p』だけ大きい」と、差分算出部121は、J1と動作範囲RAP(AX(1))との差分として「+p」を出力する。例えば、「J1が、最小値J1_minよりも、『q』だけ小さい」と、差分算出部121は、J1と動作範囲RAP(AX(1))との差分として「−q」を出力する。つまり、差分算出部121が、「J1と動作範囲RAP(AX(1))との差分」として、「0」以外の値を出力するのは、差分算出部121が、「J1が動作範囲RAP(AX(1))の範囲内にない」と判定した場合である。
前述の通り、「動作状態情報に示される複数の動作状態」の全てについて、差分算出部121が、「対応する動作範囲RAP内にある」と判定すると、姿勢判定部120は、「ロボットアーム30の姿勢PSが、許可範囲RP内にある」と判定する。言い換えれば、「姿勢判定部120が、『動作状態情報に示される複数の動作状態』の全てについて、対応する動作範囲RAPとの差分として、『0』を出力する」と、姿勢判定部120は、「ロボットアーム30の姿勢PSが、許可範囲RP内にある」と判定する。
例えば、動作状態情報が(J1,J2,J3,J4,J5,J6)であると、姿勢判定部120が「ロボットアーム30の姿勢PSが、許可範囲RP内にある」と判定するのは、以下の場合である。すなわち、J1、J2、J3、J4、J5、J6の各々の、動作範囲RAP(AX(1))、RAP(AX(2))、RAP(AX(3))、RAP(AX(4))、RAP(AX(5))、RAP(AX(6))との差分が、全て「0」である場合である。
例えば、動作状態情報が(X,Y,Z,Rx,Ry,Rz)であると、姿勢判定部120が「ロボットアーム30の姿勢PSが、許可範囲RP内にある」と判定するのは、以下の場合である。すなわち、「X」、「Y」、「Z」、「Rx」、「Ry」、「Rz」の各々の、動作範囲RAP(X)、RAP(Y)、RAP(Z)、RAP(Rx)、RAP(Ry)、RAP(Rz)との差分が、全て「0」である場合である。
第三に、姿勢判定部120は、「ロボットアーム30の姿勢PSが、許可範囲RP内にある」と判定すると、その判定結果を通知部130へと出力し、また、原点復帰許可信号を復帰指示部170へと出力する。姿勢判定部120は、「ロボットアーム30の姿勢PSが、許可範囲RP内にない」と判定すると、その判定結果を通知部130へと出力する。「ロボットアーム30の姿勢PSが、許可範囲RP内にない」と判定すると、姿勢判定部120はさらに、差分算出部121が算出した差分を、差分情報として、通知部130、動作状態制御部180、および、誘導動作指示部190の各々へと出力する。
例えば、差分算出部121によって、J1と動作範囲RAP(AX(1))との差分として「+p」が出力されると、姿勢判定部120は、軸AX(1)の動作状態:J1に係る差分情報として、「+p」を出力する。例えば、差分算出部121によって、J2と動作範囲RAP(AX(2))との差分として「−q」が出力されると、姿勢判定部120は、軸AX(2)の動作状態:J2に係る差分情報として、「−q」を出力する。
差分算出部121は、上述の通り、「動作状態情報に示される複数の動作状態」の各々について、「対応する動作範囲RAP内にあるか否か」を判定する。特に、差分算出部121は、「動作状態情報に示される複数の動作状態」の各々について、対応する動作範囲RAPとの差(差分)を算出する。
通知部130は、姿勢判定部120による、「ロボットアーム30の姿勢PSが、許可範囲RP内にあるか否か(言い換えれば、ロボットアーム30が経由姿勢PS(1)をとっているか否か)」の判定結果を、作業者OPに通知する。通知部130は、ブザー等の音声出力機器、表示灯等の表示機器を制御して、上述の判定結果を、作業者OPに通知してもよい。
「ロボットアーム30の姿勢PSが、許可範囲RP内にない」との判定結果を作業者OPに通知する場合、通知部130は、さらに、差分算出部121によって算出された差分を、差分情報として、作業者OPに通知してもよい。
例えば、差分算出部121によって、J1と動作範囲RAP(AX(1))との差分として「+p」が出力されると、通知部130は、軸AX(1)の動作状態:J1に係る差分情報として、「+p」を出力する。例えば、差分算出部121によって、J2と動作範囲RAP(AX(2))との差分として「−q」が出力されると、通知部130は、軸AX(2)の動作状態:J2に係る差分情報として、「−q」を出力する。
ユーザ操作取得部140は、ユーザ操作を受け付け、受け付けたユーザ操作をユーザ操作判定部150に通知する。ユーザ操作取得部140の受け付けるユーザ操作は、例えば、作業者OPによる、スイッチを押下したり、スイッチの押下を止めたりする(開放する)操作であってもよい。
ユーザ操作判定部150は、ユーザ操作取得部140が受け付けたユーザ操作の内容を特定し、特定した内容に応じて、ユーザ操作取得部140が受け付けたユーザ操作の内容を、ロボット制御部10の各機能ブロックに通知する。
例えば、ユーザ操作判定部150は、ユーザ操作取得部140が受け付けたユーザ操作が「原点復帰指示」であると判定すると、「原点復帰信号」を、復帰指示部170へと送信する。「原点復帰指示」は、作業者OPが、ロボット制御部10に対して、ロボットアーム30の原点復帰を指示するために与えるユーザ操作である。「ロボットアーム30の姿勢PSが、許可範囲RP内にある」との判定結果を通知部130から通知された作業者OPは、ロボットアーム30の置かれている状況を確認し、必要であれば、ロボットアーム30の周囲から障害物等を除去する。そして、「『通知部130から上述の判定結果を通知された時点で、ロボットアーム30がとっている姿勢PS』から、ロボットアーム30を直行的に原点復帰させてもよい」ことを確認すると、作業者OPは、ロボット制御部10に原点復帰指示を与える。
例えば、ユーザ操作判定部150は、ユーザ操作取得部140が受け付けたユーザ操作が「手動モードへと遷移させる遷移操作」であると判定すると、動作状態制御部180にその旨を通知し、動作状態制御部180に以下の処理を実行させる。すなわち、ユーザ操作判定部150は、動作状態制御部180に、作業者OPによる手動でのロボットアーム30の姿勢PSの変更を許可または禁止する、ロック信号またはアンロック信号を、ロボットアーム制御部20へと出力させる。
例えば、ユーザ操作判定部150は、ユーザ操作取得部140が受け付けたユーザ操作が「自動誘導モードへと遷移させる遷移操作」であると判定すると、誘導動作指示部190を「自動誘導動作の実行準備状態」にする。詳細は後述するが、「自動誘導動作」は、誘導動作指示部190が、ロボットアーム制御部20を介して、ロボットアーム30の姿勢PSを経由姿勢PS(1)へと変更する動作(処理)である。
例えば、ユーザ操作判定部150は、ユーザ操作取得部140が受け付けたユーザ操作が「自動誘導スイッチの押下を継続する」操作であると判定すると、「自動誘導動作の許可(特に、自動誘導動作の実行継続の許可)」を、誘導動作指示部190へと送信する。例えば、ユーザ操作判定部150は、ユーザ操作取得部140が受け付けたユーザ操作が「自動誘導スイッチの押下を止める」操作であると判定すると、「自動誘導動作の不許可(特に、自動誘導動作の停止の指示)」を、誘導動作指示部190へと送信する。
復帰指示部170は、姿勢判定部120からの原点復帰許可信号を受け付けた状態で、ユーザ操作判定部150から原点復帰信号を受け付けると、原点復帰制御信号を、ロボットアーム制御部20へと送信する。すなわち、復帰指示部170は、「通知部130が『ロボットアーム30の姿勢PSが、許可範囲RP内にある』との判定結果を通知した時点で、ロボットアーム30がとっている姿勢PS」から、ロボットアーム30を直行的に原点復帰させる。
動作状態制御部180は、姿勢判定部120から通知された差分情報を用いて、ロボットアーム30の軸AXの動作状態を制御し、具体的には、ロック信号またはアンロック信号を、ロボットアーム制御部20へと送信する。「ロック信号」は、軸AXの動作状態の維持を指示する信号であり、言い換えれば、「作業者OPが、軸AXの動作状態を変更する」ことを禁止する信号である。「アンロック信号」は、「作業者OPが、軸AXの動作状態を変更する」ことを許可する信号である。
例えば、差分情報において、「ロボットアーム30の備える或る軸AX(p)の動作状態と、対応する動作範囲RAP(p)との差(差分)が、『0』である」と、動作状態制御部180は、その或る軸AX(p)の動作状態を維持するロック信号を出力する。
例えば、差分情報において、「或る軸AX(p)の動作状態と、対応する動作範囲RAP(p)との差分が、『0』でない」と、動作状態制御部180は、「その或る軸AX(p)の動作状態の、作業者OPによる変更」を許可するアンロック信号を出力する。
特に、作業者OPによる、或る軸AX(p)の動作状態の変更が、「或る軸AX(p)の動作状態と、対応する動作範囲RAP(p)との差分を『0』にする」ものになるように、動作状態制御部180は、或る軸AX(p)の動作状態を制御する。
例えば、或る軸AX(p)の動作状態と、対応する動作範囲RAP(p)との差分が、「+x」であると、動作状態制御部180は、軸AX(p)の動作状態を制御する、以下のアンロック信号を出力する。すなわち、作業者OPによる軸AX(p)の動作状態の変更のうち、上述の差分を「0」に近付ける変更(言い換えれば、「+x」を「0」へと減らす変更)のみを許可するアンロック信号を、動作状態制御部180は出力する。
例えば、或る軸AX(q)の動作状態と、対応する動作範囲RAP(q)との差分が、「−y」であると、動作状態制御部180は、軸AX(q)の動作状態を制御する、以下のアンロック信号を出力する。すなわち、作業者OPによる軸AX(q)の動作状態の変更のうち、上述の差分を「0」に近付ける変更(言い換えれば、「−y」を「0」へと増やす変更)のみを許可するアンロック信号を、動作状態制御部180は出力する。
すなわち、ロボット制御部10は、ロボットアーム30の備える軸AX(関節)の動作状態(例えば、角度(方向、回転量)、大きさ(長さ、手先の移動量)等)を制御する動作状態制御部180を備えている。
具体的には、動作状態制御部180は、ロボットアーム30の備える軸AXについて、軸AXの動作状態が、許可範囲RPに対応する動作範囲RAP内にあると、その動作状態を維持する。例えば、動作状態制御部180は、ロボットアーム30の備える或る軸AX(p)の角度(回転量)が、動作範囲RAP(p)内にあると、作業者OPが、その或る軸AX(p)の角度を変更することを禁止する。
また、動作状態制御部180は、ロボットアーム30の備える軸AXについて、軸AXの動作状態が、許可範囲RPに対応する動作範囲RAP内にないと、作業者OPが、その動作状態を変更することを許可する。例えば、動作状態制御部180は、ロボットアーム30の備える或る軸AX(p)の角度(回転量)が、動作範囲RAP(p)内にないと、作業者OPが、その或る軸AX(p)の角度を変更することを許可する。
前記の構成によれば、ロボット制御部10は、「ロボットアーム30の備える軸AX(p)の動作状態が、許可範囲RPに対応する動作範囲RAP(p)内にある」と、その動作状態を維持し、例えば、軸AX(p)が動かないように軸AX(p)をロックする。また、ロボット制御部10は、「ロボットアーム30の備える軸AX(p)の動作状態が、許可範囲RPに対応する動作範囲RAP(p)内にない」と、その動作状態の作業者OPによる変更を許可する。例えば、ロボット制御部10は、動作範囲RAP(p)内にない動作状態を示している軸AX(p)があると、作業者OPが手動でロボットアーム30の姿勢PSを変更できるように、その軸AX(p)のロックを解除する(言い換えれば、アンロックする)。
ここで、一般に作業者OPにとって、「どうすれば、『衝突を発生させることなく、直行的に原点復帰できる姿勢(つまり、経由姿勢PS(1))』へと、ロボットアーム30の姿勢PSを変更できるのか?」は、容易には把握できない。
そこで、ロボット制御部10は、軸AXの動作状態を制御して、作業者OPが経由姿勢PS(1)へとロボットアーム30の姿勢PSを変更するのをサポートする。
例えば、ロボットアーム30の姿勢PSを経由姿勢PS(1)へと変更するために、或る軸AX(x)の動作状態の変更は不要であり、別の軸AX(y)の動作状態の変更は必要であるといった場合を想定することができる。そのような場合、ロボット制御部10は、或る軸AX(x)については、作業者OPによって動作状態が変更されるのを防ぎ、つまり、或る軸AX(x)の動作状態を維持して、例えば、動作状態が変更されないように、或る軸AX(x)をロックする。また、ロボット制御部10は、別の軸AX(y)については、作業者OPによる動作状態の変更を許可し、例えば、別の軸AX(y)の動作状態を作業者OPが手動で変更できるように、別の軸AX(y)のロックを解除する。
したがって、ロボット制御部10は、作業者OPが、ロボットアーム30の姿勢PSを、経由姿勢PS(1)へと手動で変更することを容易にするとの効果を奏する。
ロボット制御部10(特に、通知部130)は、ロボットアーム30の備える軸AX(関節)のうち、動作状態を維持している軸AXがどれであるかを示す情報を作業者OPに通知してもよい。例えば、通知部130は、「動作状態制御部180が動かないようにロックしている軸AXがどれであるか」を示す情報を、作業者OPに通知してもよい。同様に、通知部130は、「ロボットアーム30の備える軸AXのうち、作業者OPによる動作状態の変更を許可している軸AXがどれであるか」を示す情報を作業者OPに通知してもよい。すなわち、通知部130は、「動作状態制御部180がロックを解除している軸AXがどれであるか」を示す情報を作業者OPに通知してもよい。
また、ロボット制御部10(特に、動作状態制御部180)は、ロボットアーム30の備える軸AXのうち、動作状態の作業者OPによる変更を許可している軸AXについて、作業者OPが手動で変更できる動作状態を特定の範囲に制限してもよい。例えば、動作状態制御部180は、前述の軸AX(y)(つまり、ロックを解除した軸AX)について、作業者OPが手動で変更できる動作状態を特定の範囲に制限してもよい。具体例には、動作状態制御部180は、軸AX(y)について、作業者OPが変更できる「関節の角度(回転量)」を特定範囲に制限したり、作業者OPが変更できる「手先の移動量」を特定範囲に制限したりしてもよい。特に、動作状態制御部180は、作業者OPによる「軸AX(y)の動作状態に対する変更」のうち、「ロボットアーム30の姿勢PSを、経由姿勢PS(1)に近づける、『関節の角度の変更』、『手先の移動量の変更』」のみを、許容してもよい。
言い換えれば、動作状態制御部180は、作業者OPによる「軸AX(y)の動作状態に対する変更」のうち、「軸AX(y)の動作状態を、許可範囲RPに対応する動作範囲RAP(y)内に収めようとする変更」のみを受け付けてもよい。動作状態制御部180は、「軸AX(y)の動作状態を、動作範囲RAP(y)から遠ざける」変更は受け付けず、例えば、作業者OPがそのような変更を行えないように、軸AX(y)の動作状態について、変更可能な範囲を制限してもよい。
ロボット制御部10(特に、通知部130)は、ロボットアーム30の備える軸AXのうち、作業者OPによる動作状態の変更を許可している軸AX(例えば、前述の軸AX(y))について、変更可能な動作状態の範囲を、作業者OPに通知してもよい。例えば、通知部130は、作業者OPによる動作状態の変更を許可している軸AXについて、ロボットアーム30の姿勢PSを許可範囲RP内とするのに望ましい動作状態を、作業者OPに通知してもよい。具体的には、通知部130は、前述の軸AX(y)の動作状態について、望ましい「関節の角度(回転量)」、望ましい「手先の移動量」等を、作業者OPに通知してもよい。
誘導動作指示部190は、ユーザ操作判定部150から通知される「誘導動作の許否(つまり、作業者OPによる、「誘導動作の実行を継続してもよいか否か」の判断)」に従って、誘導動作を継続し、または、誘導動作を停止する。
例えば、誘導動作指示部190は、「自動誘導動作の実行準備状態」にあって、ユーザ操作判定部150から、「自動誘導動作の許可」を通知されると、「自動誘導動作」の実行を開始し、または、実行を継続する。すなわち、誘導動作指示部190は、ロボットアーム制御部20に、「ロボットアーム30の姿勢PSを、経由姿勢PS(1)へと変更する」誘導動作継続信号を送信する。
例えば、誘導動作指示部190は、「自動誘導動作の実行準備状態」にあって、ユーザ操作判定部150から、「自動誘導動作の不許可」を通知されると、「自動誘導動作」の実行を停止する。すなわち、誘導動作指示部190は、ロボットアーム制御部20に、「ロボットアーム30の姿勢PSの変更を停止する」誘導動作停止信号を送信する。
すなわち、誘導動作指示部190は、許可範囲RP内にない姿勢PS(例、姿勢PS(2))から、経由姿勢PS(1)へと、ロボットアーム30の姿勢PSを変更する誘導動作を、作業者OPによる許可が継続している間、実行する。また、誘導動作指示部190は、作業者OPによる許可がなくなると、前述の誘導動作の実行を中断する。
前記の構成によれば、ロボット制御部10は、「許可範囲RP内にない姿勢PS(例、姿勢PS(2))から、許可範囲RP内にある姿勢PS(例、経由姿勢PS(1))へと、ロボットアーム30の姿勢PSを変更する」誘導動作を、作業者OPによる許可が継続している間、実行する。例えば、ロボット制御部10は、「姿勢PS(2)から経由姿勢PS(1)へと、ロボットアーム30の姿勢PSを変更する」誘導動作を、作業者OPによる許可が継続している間、実行する。具体的には、ロボット制御部10は、作業者OPによる許可が継続している間、ロボットアーム30の姿勢PSを姿勢PS(2)から経由姿勢PS(1)へと、手先の位置を「経由姿勢PS(1)における手先の位置」へと直行させる経路で、変更し続ける。また、ロボット制御部10は、作業者OPによる前述の許可がなくなると、誘導動作の実行を中断し、例えば、作業者OPが手動でロボットアーム30の姿勢PSを変更できるようにする。
したがって、ロボット制御部10は、誘導動作による変更と作業者OPによる手動での変更とを、作業者OPの許可の有無に従って切り替えることで、ロボットアーム30の姿勢PSを効率的かつ安全に、経由姿勢PS(1)へと変更できるとの効果を奏する。
(記憶部について)
記憶部160は、ロボット制御部10が使用する各種データを格納する記憶装置である。なお、記憶部160は、ロボット制御部10が実行する(1)制御プログラム、(2)OSプログラム、(3)ロボット制御部10が有する各種機能を実行するためのアプリケーションプログラム、および、(4)該アプリケーションプログラムを実行するときに読み出す各種データを非一時的に記憶してもよい。上記の(1)〜(4)のデータは、例えば、ROM(read only memory)、フラッシュメモリ、EPROM(Erasable Programmable ROM)、EEPROM(登録商標)(Electrically EPROM)、HDD(Hard Disc Drive)等の不揮発性記憶装置に記憶される。ロボット制御部10は、図示しない一時記憶部を備えていてもよい。一時記憶部は、ロボット制御部10が実行する各種処理の過程で、演算に使用するデータおよび演算結果等を一時的に記憶するいわゆるワーキングメモリであり、RAM(Random Access Memory)等の揮発性記憶装置で構成される。どのデータをどの記憶装置に記憶するのかについては、ロボット制御部10の使用目的、利便性、コスト、または、物理的な制約等から適宜決定される。記憶部160はさらに、許可範囲テーブル161を格納している。
許可範囲テーブル161には、許可範囲RPを示す許可範囲情報が格納されており、具体的には、ロボットアーム30の備える複数の軸AXの各々の動作状態、または、手先の座標(動作状態)に対する動作範囲RAPを示す動作範囲情報が格納されている。
詳細は後述するが、許可範囲テーブル161に格納されている許可範囲情報(動作範囲情報)は、作業者OPによって書き換え可能であってもよい。以下では先ず、許可範囲情報の設定方法について、より正確には、許可範囲RP(つまり、経由姿勢PS(1))の決定方法について、詳細を説明する。
(許可範囲RP勢(経由姿)の決定方法)
ロボット制御部10において、許可範囲RPは、ロボットアーム30の設計情報に基づいて、作業者OPによって設定されてもよい。前記の構成によれば、ロボット制御部10において、許可範囲RPは、ロボットアーム30の設計情報に基づいて、例えば、ロボットアーム30の3次元CAD(Computer Aided Design)データと制御に係るデータとに基づいて、作業者OPによって設定される。例えば、作業者OPは、ロボットアーム30の3次元モデルについて機械的取り合いを検討し、検討結果に基づいて、許可範囲RPを設定する。
したがって、ロボット制御部10は、ロボットアーム30の姿勢PSが、ロボットアーム30の設計情報に基づいて作業者OPによって予め設定された許可範囲RP内にあるか否かを判定することができるとの効果を奏する。
ロボット制御部10は、「ロボットアーム30の3次元モデルを、或る姿勢PS(x)から直行的に原点復帰させた場合に、衝突が発生しない」と判定すると、その或る姿勢PS(x)を含むように、許可範囲RPを設定してもよい。
前記の構成によれば、ロボット制御部10は、「ロボットアーム30の3次元モデルを、或る姿勢PS(x)から直行的に原点復帰させた場合に、衝突が発生しない」と判定すると、その或る姿勢PS(x)を含むように、許可範囲RPを設定する。
したがって、ロボット制御部10は、ロボットアーム30の3次元モデルを用いたシミュレーション等によって安全性を検証した以下の姿勢PSを含むように、許可範囲RPを設定できるとの効果を奏する。すなわち、ロボット制御部10は、ロボットアーム30の3次元モデルを用いたシミュレーション等によって、「直行的に原点復帰させても衝突が発生しない」と判定したロボットアーム30の姿勢PSを含むように、許可範囲RPを設定できるとの効果を奏する。
ロボット制御部10において、許可範囲RPは、「衝突を発生させることなく、直行的に原点復帰できる」姿勢PSとして、作業者OPがロボットアーム30を手動で動かしてロボットアーム30にとらせた姿勢PS(x)を含むように設定されてもよい。
前記の構成によれば、ロボット制御部10において、許可範囲RPは、「安全かつ直行的に原点復帰できる」姿勢PSとして、作業者OPがロボットアーム30を手動で動かしてロボットアーム30にとらせた姿勢PS(x)を含むように設定される。例えば、許可範囲RPは、作業者OPが「衝突を発生させることなく、直行的に原点復帰できる」姿勢PSとしてティーチングした姿勢PS(x)を含むように、設定される。
したがって、ロボット制御部10は、「安全かつ直行的に原点復帰できる」姿勢PSとして、作業者OPがロボットアーム30を手動で動かしてロボットアーム30にとらせた姿勢PS(x)を含むように、許可範囲RPを設定できるとの効果を奏する。
(経由姿勢(許可範囲RP)に係る一般的留意事項)
例えば、原点姿勢PS(0)における手先の座標を、(X(0),Y(0),Z(0),Rx(0),Ry(0),Rz(0))と表現できる場合、ロボットアーム30の手先の座標:(X,Y,Z,Rx,Ry,Rz)については、一般的に以下の傾向がある。すなわち、或る姿勢PS(p)から原点復帰する際には、その或る姿勢PS(p)における(Rx(p),Ry(p),Rz(p))は、なるべく、原点姿勢PS(0)における手先の(Rx(0),Ry(0),Rz(0))に近い方が望ましい。(Rx(p),Ry(p),Rz(p))が(Rx(0),Ry(0),Rz(0))に近いと、原点復帰に際して必要となる手首の旋回量を抑制でき、ロボットアーム30(特に、手先)と障害物等との衝突の可能性を抑制することができるからである。
そのため、経由姿勢PS(1)における手先の座標を、(X(1),Y(1),Z(1),Rx(1),Ry(1),Rz(1))と表現する場合、或る姿勢PS(p)から原点復帰する際の経由姿勢PS(1)について、以下の指摘が可能となる。
すなわち、(X(1),Y(1),Z(1))は、「(X(p),Y(p),Z(p))と、(X(0),Y(0),Z(0))とを結ぶ直線」上にあることが望ましい。(Rx(1),Ry(1),Rz(1))は、「(Rx(p),Ry(p),Rz(p))から(Rx(0),Ry(0),Rz(0))へと角度を合せる(回転する)途中の、角度(つまり、方向、回転量)」であることが望ましい。
(ロボットアーム30の置かれている状況に応じて変化する経由姿勢の例)
ここで、許可範囲テーブル161に格納されている許可範囲情報は、ロボットアーム30の置かれている状況に応じて適宜更新されてもよい。言い換えれば、「ロボットアーム30の置かれている状況」に応じて、ロボットアーム30の経由姿勢(1)は適宜変更されてもよい。以下、図4および図5を用いて、「ロボットアーム30の置かれている状況」に応じて、ロボットアーム30の経由姿勢(1)が適宜変更され得ることを説明する。
図4は、ロボットアーム30の手先(エンドエフェクタ)がフック形状である場合の、ロボットアーム30の原点復帰について説明する図である。手先がフック形状であるロボットアーム30の原点姿勢PS(0)は、例えば、図4の紙面上側中央に例示する「フック形状の手先を収納する姿勢PS」となる。
ロボットアーム30の姿勢PSを、図4の紙面左下側の姿勢PS(2)の各々から図4に例示する原点姿勢PS(0)へと、直行的に変更しようとすると、ロボットアーム30が搬送ロボット部40等と衝突する可能性がある。なお、図4の紙面左下側に例示する2つのロボットアーム30(ロボット1)は、「同じ姿勢PS(2)をとっているロボットアーム30(ロボット1)」を別の角度より図示したものである。
これに対して、図4の紙面右下側の経由姿勢PS(1)からであれば、ロボットアーム30と搬送ロボット部40等との衝突を回避しつつ、原点姿勢PS(0)へと直行的にロボットアーム30の姿勢PSを変更することができる。なお、図4の紙面右下側に例示する2つのロボットアーム30(ロボット1)は、「同じ姿勢PS(1)をとっているロボットアーム30(ロボット1)」を別の角度より図示したものである。
図4に示す「手先がフック形状であるロボットアーム30」について、経由姿勢PS(1)の条件は、以下のように整理することができる。すなわち、「手先がフック形状であるロボットアーム30」の経由姿勢PS(1)の条件は、「手先と搬送ロボット部40等とを干渉させることなく、原点姿勢PS(0)における手先の位置まで、手先を直行させることができる」ことである。
図5は、搬送ロボット部40がワークを載置しておくために備える在荷部が高い位置にある場合の、ロボットアーム30の原点復帰について説明する図である。在荷部が高い位置にある場合のロボットアーム30の原点姿勢PS(0)は、例えば、図5の紙面上側中央に例示する「手先を在荷部よりも高い位置に配置する姿勢PS」となる。
ロボットアーム30の姿勢PSを、図5の紙面左下側の姿勢PS(2)の各々から図4に例示する原点姿勢PS(0)へと、直行的に変更しようとすると、ロボットアーム30が搬送ロボット部40(特に、在荷部およびワーク)等と衝突する可能性がある。なお、図5の紙面左下側に例示する2つのロボットアーム30(ロボット1)は、「同じ姿勢PS(2)をとっているロボットアーム30(ロボット1)」を別の角度より図示したものである。
これに対して、図5の紙面右下側の経由姿勢PS(1)からであれば、ロボットアーム30と搬送ロボット部40等との衝突を回避しつつ、原点姿勢PS(0)へと直行的にロボットアーム30の姿勢PSを変更することができる。なお、図5の紙面右下側に例示する2つのロボットアーム30(ロボット1)は、「同じ姿勢PS(1)をとっているロボットアーム30(ロボット1)」を別の角度より図示したものである。
図5に示す「在荷部が高い位置にある場合のロボットアーム30」について、経由姿勢PS(1)の条件は、以下のように整理することができる。すなわち、「在荷部が高い位置にある場合のロボットアーム30」の経由姿勢PS(1)の条件は、「手先と在荷部およびワークとを干渉させることなく、原点姿勢PS(0)における手先の位置まで、手先を直行させることができる」ことである。
これまで図4および図5を用いて説明してきたように、ロボットアーム30の周囲の物理的環境だけでなく、ロボットアーム30の手先の形状、搬送ロボット部40の在荷部の高さ等によっても、ロボットアーム30の経由姿勢PS(1)は異なる。言い換えれば、ロボットアーム30の置かれている状況に応じて、経由姿勢PS(1)として認められるロボットアーム30の姿勢PSの範囲、つまり、許可範囲RPは異なる。
そこで、許可範囲RPは、ロボットアーム30の置かれている状況に応じて、適宜変更されてもよく、つまり、ロボット制御部10において、許可範囲RPは更新可能である。
前記の構成によれば、ロボット制御部10において、例えば作業者は、許可範囲テーブル161に格納されている許可範囲情報(許可範囲RP)を、適宜更新することができる。したがって、ロボット制御部10は、ロボットアーム30の置かれている状況に応じて適宜更新された許可範囲RPを利用して、ロボットアーム30を、障害物等との衝突を回避しつつ原点位置へと復帰させることができるとの効果を奏する。
§3.動作例
これまで説明してきたように、ロボット制御部10は、ロボットアーム30の姿勢PSが許可範囲RP内になった(つまり、ロボットアーム30の姿勢PSが経由姿勢PS(1)になった)と判断すると、以下の処理を実行する。すなわち、ロボット制御部10は、ロボットアーム30の原点復帰の当否(可否)を作業者OPに確認させ、原点復帰の当否を確認した作業者OPから原点復帰指示があると、ロボットアーム30を、経由姿勢PS(1)から直行的に、原点復帰させる。
ここで、ロボットアーム30の姿勢PS(特に、許可範囲RP内にない姿勢PS(2))を、経由姿勢PS(1)へと変更する方法については、特に限定されない。すなわち、作業者OPが手動で、ロボットアーム30の姿勢PSを、姿勢PS(2)から経由姿勢PS(1)へと変更してもよい。また、ロボット制御部10(特に、誘導動作指示部190)が、ロボットアーム30の姿勢PSを、姿勢PS(2)から経由姿勢PS(1)へと変更してもよい。以下、図6および図7を用いて、「作業者OPまたはロボット制御部10が、ロボットアーム30の姿勢PS(2)を経由姿勢PS(1)へと変更し、その後、ロボット制御部10が、経由姿勢PS(1)を原点姿勢PS(0)へと変更する」例について、説明する。
(作業者が手動で、ロボットアームの姿勢を経由姿勢に変更するケース)
図6は、作業者OPが手動でロボットアーム30の姿勢PSを経由姿勢PS(1)に変更した後、ロボット制御部10が、経由姿勢PS(1)から直行的にロボットアーム30を原点復帰させる場合のフロー図である。
姿勢判定部120は、ロボットアーム30の複数の軸AXの動作状態(例えば、関節の角度(回転量)等)と、許可範囲テーブル161に格納されている許可範囲RP(より正確には、許可範囲RPに対応する動作範囲RAP)とを用いて、以下の判定を行う。すなわち、姿勢判定部120は、ロボットアーム30の姿勢PSが許可範囲RP内にあるか否かを判定する。そして、通知部130は、姿勢判定部120による上述の判定の判定結果を、作業者OPに通知する。
姿勢判定部120によって「ロボットアーム30の姿勢PSが許可範囲RP外にある」と判定されていると(SRC10)、作業者OPは、例えば、ロボット制御部10を「手動モード」へと遷移させる遷移操作を行う(SOP10)。「手動モード」は、ロボット制御部10が、作業者OPに、ロボットアーム30の姿勢PSを手動にて変更することを許可とするモードである。
ユーザ操作判定部150は、「ユーザ操作取得部140によって、作業者OPによる『手動モード』への遷移操作が受け付けられた」と判定すると、ロボット制御部10を手動モードに遷移させる(SRC20)。ロボット制御部10が手動モードにある間、作業者OPはロボットアーム30の姿勢PSを手動にて変更することができるため、作業者OPは、経由姿勢PS(1)に向けてロボットアーム30を誘導する(SOP20)。つまり、作業者OPは、ロボットアーム30の姿勢PSが経由姿勢PS(1)となるように、ロボットアーム30の姿勢PSを手動で変更する。
ロボット制御部10が手動モードにある間、通知部130は、作業者OPに、ロボットアーム30の経由姿勢PS(1)を示す情報を通知してもよい。例えば、通知部130は、作業者OPが確認可能な表示画面に、ロボットアーム30の経由姿勢PS(1)を参考画像として表示させてもよい。また、通知部130は、ロボットアーム30の姿勢PSを経由姿勢PS(1)にするために必要な変更についての情報を、作業者OPに通知してもよい。例えば、通知部130は、「ロボットアーム30の姿勢PSを経由姿勢PS(1)にするためには、ロボットアーム30の備える軸AX(関節)をどの方向に、どれくらい回転させるのが望ましいか」を、作業者OPに通知してもよい。つまり、通知部130は、ロボットアーム30の姿勢PSを経由姿勢PS(1)に変更しようとする作業者OPを補助する情報を作業者OPに通知して、SOP20の作業者OPによるロボットアーム30の誘導を補助してもよい。
姿勢判定部120は、SOP20において作業者OPによって誘導されたロボットアーム30の姿勢PSを監視しておき、「ロボットアーム30の姿勢PSが経由姿勢PS(1)として認められた許可範囲RP内にあるか」を判定する(SRC30)。つまり、姿勢判定部120は、作業者OPに手動で変更された「ロボットアーム30の姿勢PS」が、経由姿勢PS(1)として認められた許可範囲RP内にあるかを判定する。
通知部130は、姿勢判定部120による判定の結果(判定結果)を作業者OPに通知し、ロボットアーム30の姿勢PSが経由姿勢PS(1)として認められた許可範囲RP外にある間(SRC30でNO)、作業者OPはSOP20の誘導を継続する。
姿勢判定部120は「ロボットアーム30の姿勢PSが経由姿勢PS(1)として認められた許可範囲RP内にある」と判定すると(SRC30でYES)、以下の処理を実行する。すなわち、姿勢判定部120は、「ロボットアーム30の姿勢PSが許可範囲RP内にある」との判定結果を通知部130に通知して、通知部130にその判定結果を出力させ、また、復帰指示部170に原点復帰許可信号を出力する(SRC40)。通知部130は、「作業者OPが手動で誘導してきたロボットアーム30の姿勢PSが、経由姿勢PS(1)に至った(つまり、ロボットアーム30の姿勢PSが許可範囲RP内にある)」ことを、作業者OPに通知する。通知部130は、姿勢判定部120による判定の結果を、ブザー等を制御して音によって作業者OPに通知してもよいし、表示灯等を制御して光によって作業者OPに通知してもよい。
作業者OPは、通知部130から通知された「ロボットアーム30の姿勢PSが許可範囲RP内にある」との判定結果を認知(認識)すると(SOP30)、以下の確認(判断)を行う。すなわち、作業者OPは、「手先の位置を原点姿勢PS(0)における手先の位置へと直行させる経路で(つまり、直行的に)、ロボットアーム30が現在とっている姿勢PSから原点復帰させてもよいか」を念のため確認する。作業者OPは、上述の確認を行って、必要な場合には適宜、ロボットアーム30の周囲に存在する障害物の撤去等を行う(SOP40)。
具体的には、作業者OPは、先ず「ロボットアーム30が実際に現在置かれている状況において、ロボットアーム30が現在とっている姿勢PSから直行的に原点復帰させてよいか」を確認する。そして、作業者OPは、上記の確認の結果、例えば、「ロボットアーム30が現在とっている姿勢PSから直行的に原点復帰させた場合、障害物等との衝突が発生する可能性はない」と判断する。また、作業者OPは、上記の確認の結果、例えば、「ロボットアーム30が現在とっている姿勢PSから直行的に原点復帰させた場合、障害物等との衝突が発生する可能性がある」と判断すると、以下の作業を行う。すなわち、作業者OPは、ロボットアーム30の周囲に存在する障害物の撤去等の作業を、適宜行う。
そして、作業者OPは、原点復帰操作を実行し、つまり、原点復帰動作の実行をロボット制御部10に指示する(SOP50)。
ユーザ操作判定部150は、「ユーザ操作取得部140によって、作業者OPによる原点復帰操作が受け付けられた」と判定すると、復帰指示部170に、原点復帰信号を出力する。復帰指示部170は、姿勢判定部120からの原点復帰許可信号がある状態で、ユーザ操作判定部150から原点復帰信号を受け付けると、ロボットアーム30を、ロボットアーム30が現在とっている姿勢PSから直行的に原点復帰させる。
具体的には、復帰指示部170は、原点復帰制御信号を、ロボットアーム制御部20へと出力し、復帰指示部170から原点復帰制御信号を受け付けたロボットアーム制御部20は、ロボットアーム30に、原点復帰動作の実行を開始させる(SRC50)。ロボット制御部10が、ロボットアーム制御部20を介して、ロボットアーム30の姿勢PSを、現在の姿勢PS(例えば、姿勢PS(1))から原点姿勢PS(0)へと直行的に変更することにより、ロボットアーム30の原点復帰が完了する(SRC60)。
(ロボット制御部がロボットアームの姿勢を経由姿勢に変更するケース)
図7は、ロボット制御部10(特に、誘導動作指示部190)が、ロボットアーム30の姿勢PSを経由姿勢PS(1)に変更した後、経由姿勢PS(1)から直行的にロボットアーム30を原点復帰させる場合のフロー図である。
姿勢判定部120によって「ロボットアーム30の姿勢PSが許可範囲RP外にある」と判定されていると(SRC10)、作業者OPは、例えば、ロボット制御部10を「自動誘導モード」へと遷移させる遷移操作を行う(SOP110)。「自動誘導モード」は、ロボット制御部10が主体となって、ロボットアーム30の姿勢PSを経由姿勢PS(1)へと変更するモードである。「自動誘導モード」において、ロボット制御部10(特に、誘導動作指示部190)は、作業者OPによる監視(言い換えれば、作業者OPによる誘導動作の許否)の下で、ロボットアーム30の姿勢PSを、経由姿勢PS(1)へと変更する。「自動誘導モード」において、ロボット制御部10は、ロボットアーム30の姿勢を、「自動誘導モード」以外のモードにおいてロボットアーム30の姿勢を変更する場合の変更速度よりも遅い速度で、変更してもよい。
ユーザ操作判定部150は、「ユーザ操作取得部140によって、作業者OPによる『自動誘導モード』への遷移操作が受け付けられた」と判定すると、ロボット制御部10を自動誘導モードに遷移させる。これによって、ロボット制御部10は、自動誘導動作の実行準備状態になる(SRC120)。
ロボット制御部10が自動誘導動作の実行準備状態にある間に、作業者OPは、「ロボット制御部10が自動誘導動作の実行を開始した場合に、ロボットアーム30が障害物等と干渉(衝突)しないか」を、目視にて判断する(SOP120)。つまり、作業者OPは、「ロボット制御部10がロボットアーム30の姿勢PSの変更を開始しても、ロボットアーム30が障害物等と干渉しないか」を確認する。
「自動誘導動作の実行が開始された場合、ロボットアーム30が障害物等と干渉する」と判断すると(SOP120でYES)、作業者OPは、ロボットアーム30が障害物等と干渉しないように、手動操作でロボットアーム30を退避させる(SOP130)。そして、自動誘導動作の実行が開始された場合にも、ロボットアーム30が障害物等と干渉しないように、手動操作でロボットアーム30を退避させた後、作業者OPは、自動誘導スイッチを押下する(SOP140)。
また、「自動誘導動作の実行が開始された場合、ロボットアーム30が障害物等と干渉しない」と判断すると(SOP120でNO)、作業者OPは、自動誘導スイッチを押下する(SOP140)。
ロボット制御部10が自動誘導動作の実行準備状態になっている状態で、「作業者OPが自動誘導スイッチを押下した」ことがユーザ操作判定部150によって検出されると、ロボット制御部10は、自動誘導動作の実行を開始する(SRC130)。すなわち、ユーザ操作判定部150は、「作業者OPによって、自動誘導スイッチが押下されているか」を判定し、つまり、「作業者OPが、自動誘導動作の実行継続を指示しているか」を判定する(SRC140)。ユーザ操作判定部150は、「作業者OPによって、自動誘導スイッチが押下されているか」について判定すると、判定結果を、つまり、作業者OPによる誘導動作許否を、誘導動作指示部190に通知する。
ユーザ操作判定部150によって「作業者OPが自動誘導スイッチを押下していない」と判定されると(SRC140でNO)、誘導動作指示部190は、自動誘導動作を停止する(SRC150)。つまり、誘導動作指示部190は、「ユーザ操作判定部150によって『作業者OPが自動誘導スイッチを押下していない』と判定された」時点で、ロボットアーム30の姿勢PSの変更を中断する。そして、ユーザ操作判定部150は、ロボット制御部10を自動誘導モードに遷移させ、つまり、ロボット制御部10は、自動誘導動作の実行準備状態になる(SRC120)。
ユーザ操作判定部150によって「作業者OPが自動誘導スイッチを押下している(つまり、自動誘導スイッチが押下され続けている)」と判定されると(SRC140でYES)、姿勢判定部120は、以下の判定を実行する。すなわち、姿勢判定部120は、「誘導動作指示部190によって変更されたロボットアーム30の姿勢PSが、経由姿勢PS(1)として認められた許可範囲RP内にあるか」を判定する(SRC160)。つまり、姿勢判定部120は、誘導動作実行中のロボットアーム30の姿勢PSを監視しておき、「誘導動作実行中のロボットアーム30の姿勢PSが、経由姿勢PS(1)として認められた許可範囲RP内に入ったか」を判定する。また、通知部130は、SRC160における姿勢判定部120による判定の結果(判定結果)を、作業者OPに通知する。SRC160における姿勢判定部120による判定は、図6のSRC30において姿勢判定部120が実行している判定と同様である。
姿勢判定部120によって「ロボットアーム30の姿勢PSは経由姿勢PS(1)として認められた許可範囲RP外にある」と判定されると(SRC160でNO)、誘導動作指示部190は、自動誘導動作を継続する(SRC170)。
誘導動作指示部190が自動誘導動作を実行している間、作業者OPは、ロボットアーム30を監視しておき、「自動誘導動作を継続した場合に、ロボットアーム30が障害物等と干渉するか」を目視にて判断する(SOP150)。
「自動誘導動作を継続しても、ロボットアーム30が障害物等と干渉しない」と判断すると(SOP150でNO)、作業者OPは、自動誘導スイッチの押下を継続し(SOP170)、つまり、誘導動作指示部190に自動誘導動作の実行を継続させる。
「自動誘導動作を継続した場合に、ロボットアーム30が障害物等と干渉する」と判断すると(SOP150でYES)、作業者OPは、自動誘導スイッチを開放し(SOP160)、つまり、誘導動作指示部190に自動誘導動作の実行を中断させる。
姿勢判定部120は、「ロボットアーム30の姿勢PSは経由姿勢PS(1)として認められた許可範囲RP内にある」と判定すると(SRC160でYES)、以下の3つの処理を実行する(SRC180)。第一に、姿勢判定部120は、「ロボットアーム30の姿勢PSが許可範囲RP内にある」との判定結果を通知部130に通知して、通知部130にその判定結果を出力させる。第二に、姿勢判定部120は、復帰指示部170に原点復帰許可信号を出力する。第一に、姿勢判定部120は、前述の判定結果を誘導動作指示部190に通知して、誘導動作指示部190による自動誘導動作の実行を終了させる。
SRC180以降の流れは、図6のSRC40以降の流れと同様である。すなわち、通知部130が「ロボットアーム30の姿勢PSが許可範囲RP内にある」との判定結果を作業者OPに通知すると(SRC180)、作業者は、SOP180として、図6のSOP30、SOP40、および、SOP50を実施する。具体的には、作業者OPは、通知部130から通知された判定結果を認知(認識)すると(SOP30)、状況確認を行い、必要な場合には適宜、ロボットアーム30の周囲に存在する障害物の撤去等を行う(SOP40)。その後、作業者OPは、原点復帰操作を実行し、つまり、原点復帰動作の実行をロボット制御部10に指示する(SOP50)。作業者OPによる原点復帰操作をユーザ操作取得部140が受け付け、かつ、姿勢判定部120からの原点復帰許可信号があると、復帰指示部170は、ロボットアーム制御部20を介して、ロボットアーム30に、原点復帰動作の実行を開始させる(SRC50)。復帰指示部170が、ロボットアーム制御部20を介して、ロボットアーム30の姿勢PSを、ロボットアーム30が現在とっている姿勢PSから原点姿勢PS(0)へと直行的に変更することにより、ロボットアーム30の原点復帰が完了する(SRC60)。
これまで図6および図7を用いて説明してきたロボット制御部10の実行する処理は、以下のように整理することができる。すなわち、ロボット制御部10の実行する制御方法は、自由度が2以上であるロボットアーム30の制御装置の制御方法である。「ロボット制御部10の実行する制御方法」は、以下では単に「制御方法SRC」と略記する。
制御方法SRCにおいては、ロボットアーム30の姿勢PSについて、以下の許可範囲RPが予め設定されている。すなわち、「障害物等との衝突を発生させることなく、手先の位置を原点姿勢PS(0)における手先の位置へと直行させる経路で、ロボットアーム30を原点復帰させることができる」と予測される姿勢PSの範囲が、許可範囲RPとして設定されている。言い換えれば、経由姿勢PS(1)として認められた姿勢PSの範囲が、許可範囲RPとして、予め設定されている。制御方法SRCは、通知ステップ(SRC40、SRC180)と復帰指示ステップ(SRC50)とを含んでいる。通知ステップは、「ロボットアーム30の姿勢PSが、許可範囲RP内にある」との判定があると、作業者OP(ユーザ)にその判定結果を通知する。復帰指示ステップは、通知ステップにて判定結果を通知された作業者OPから、原点復帰の実行指示があると、ロボットアーム30を、許可範囲RP内にあると判定された姿勢PS(つまり、経由姿勢PS(1))から直行的に原点復帰させる。
前記の構成によれば、制御方法SRCは、「ロボットアーム30の姿勢PSが、予め設定されている許可範囲RP内にある」と判定されると、その判定結果を作業者OPに通知する。判定結果を通知された作業者OPは、「実際に、手先の位置を原点姿勢PS(0)における手先の位置へと直行させる経路で、ロボットアーム30を原点復帰させた場合に、ロボットアーム30と障害物等との衝突が発生することがないか」を確認する。そして、「実際に、手先の位置を原点姿勢PS(0)における手先の位置へと直行させる経路で、ロボットアーム30を原点復帰させた場合に、衝突は発生しない」ことを確認すると、作業者OPは、制御方法SRCに、原点復帰の実行指示を与える。例えば、作業者OPは、制御方法SRCを実行する制御装置に、原点復帰の実行指示を与える。「ロボットアーム30の姿勢PSが、許可範囲RP内にある」との判定結果の通知を契機として実際の状況を確認した作業者OPから、「原点復帰の実行指示」があると、制御方法SRCは、以下の処理を実行する。すなわち、制御方法SRCは、ロボットアーム30を、許可範囲RP内にあると判定された姿勢PS(1)から、手先の位置を原点姿勢PS(0)における手先の位置へと直行させる経路で、原点復帰させる。
つまり、制御方法SRCは、「直行的に原点復帰させたとしても障害物等との衝突を回避できる」と予想される経由姿勢PS(1)をロボットアーム30がとっていると判定すると、作業者OPにその旨を通知する。そして、制御方法SRCは、「実際に、姿勢PS(1)から直行的に(つまり、手先の位置を原点姿勢PS(0)における手先の位置へと直行させる経路で)、ロボットアーム30を原点復帰させてよいか」を、作業者OPに確認させる。特に、制御方法SRCは、作業者OPに、「ロボットアーム30が実際に現在置かれている状況において、ロボットアーム30が現在とっている姿勢PSから直行的に原点復帰させてよいか」を確認させる。制御方法SRCは、「ロボットアーム30が実際に現在置かれている状況において、ロボットアーム30が現在とっている姿勢から、直行的に原点復帰させてよい」と作業者OPが確認するのを待つ。そして、作業者OPが上述の確認を行って、制御方法SRCに原点復帰を指示すると、制御方法SRCは、ロボットアーム30を原点復帰させる。つまり、制御方法SRCは、作業者OPによる確認と、確認後の明示的な原点復帰指示とを待って、ロボットアーム30を原点復帰させる。具体的には、制御方法SRCは、ロボットアーム30が現在とっている姿勢PSから、手先の位置を原点姿勢PS(0)における手先の位置へと直行させる経路で、言い換えれば、直行的に、ロボットアーム30を原点復帰させる。
ここで、「ロボットアーム30が実際に現在置かれている状況」は、ロボットアーム30を取り囲む物理空間等、「ロボットアーム30の外部の状況」を含む。「ロボットアーム30の外部の状況」は、ロボットアーム30の周囲に存在する壁面、構造物、機器等の状況に加えて、ロボットアーム30の作業対象であるワークの状況も含む。ワークがロボットアーム30の周囲に載置されている(例えば、ロボットアーム30を備える在荷部に、ワークが載置されている)場合、載置されているワークの状態(形状、大きさ、向き等)等も、「ロボットアーム30の外部の状況」の一つである。同様に、例えば、ロボットアーム30がワークを把持している場合には、把持されているワークの状態等も、「ロボットアーム30の外部の状況」の一つである。
「ロボットアーム30が実際に現在置かれている状況」は、「ロボットアーム30の外部の状況」に加えて、「ロボットアーム30自体の状況」も含む。ロボットアーム30自体の利用状況、ロボットアーム30の手先(ロボットアーム30の先端。エンドエフェクタ)の形状、大きさ、動作の状態等は、「ロボットアーム30自体の状況」の一例である。「手先の動作状態」の一例としては、「ワークを把持するための、手先の機構の開閉状態」を挙げることができる。
上述の通り、制御方法SRCは、作業者OPによる「ロボットアーム30が現在とっている姿勢PSから、手先の位置を原点姿勢PS(0)における手先の位置へと直行させる経路で、原点復帰させてもよいか」の確認の契機を、作業者OPに通知する。つまり、制御方法SRCは、「ロボットアーム30が実際に現在置かれている状況において、ロボットアーム30が現在とっている姿勢PSから直行的に原点復帰させてよいか」を、作業者OPに判断させる。制御方法SRCは、「ロボットアーム30が実際に現在置かれている状況において、ロボットアーム30が現在とっている姿勢から直行的に原点復帰させてよいか」の判断を、作業者OPに委ねる。そのため、制御方法SRCは、上述の判断に必要となる情報量、計算負荷を軽減することができる。
また、制御方法SRCは、作業者OPによる原点復帰の指示に従って、ロボットアーム30を、現在とっている姿勢から、「手先の位置を原点姿勢PS(0)における手先の位置へと直行させる」経路で、原点復帰させる。「手先の位置を、現在の位置から原点姿勢PS(0)における手先の位置へと、直行させる」経路は、「障害物等との衝突を避けるために、様々な情報を用いて、複雑な条件分岐の結果特定される」経路ではなく、予め一意に特定される経路である。そのため、制御方法SRCは、「ロボットアーム30が現在とっている姿勢」から、障害物等との衝突を避けつつ、ロボットアーム30を原点復帰させるための経路計算に必要となる情報量、計算負荷を軽減することができる。
つまり、制御方法SRCは、あらゆる姿勢PSについて、あらゆる状況を想定して、「ロボットアーム30を、障害物等との衝突を回避しつつ(つまり、安全に)原点復帰させる方法」を演算する必要がない。そのため、制御方法SRCは、ロボットアーム30のとり得る姿勢PSが多様であり、ロボットアーム30の置かれている状況が多様であっても、「ロボットアーム30を、安全に原点復帰させる」ために必要とする情報量、計算負荷を抑制することができる。
また、制御方法SRCは、作業者OPによる上述の確認結果および指示に従って、ロボットアーム30を原点復帰させる。制御方法SRCは、「ロボットアーム30が実際に現在置かれている状況」のいかんにかかわらず、作業者OPによる上述の確認結果および指示に従って、ロボットアーム30を原点復帰させる。つまり、制御方法SRCは、「ロボットアーム30が実際に現在置かれている状況において、ロボットアーム30が現在とっている姿勢PSから直行的に原点復帰させてよい」との作業者OPの確認結果に従って、ロボットアーム30を原点復帰させる。制御方法SRCは、「ロボットアーム30が実際に現在置かれている状況」に係る作業者OPの確認結果を利用することで、ロボットアーム30の置かれている状況に依存せずに、ロボットアーム30を安全に原点復帰させることができる。
したがって、制御方法SRCは、実現コストを抑制しつつ、ロボットアーム30の置かれている状況に依存せずに、ロボットアーム30を、障害物等との衝突を回避しつつ原点位置へと復帰させることができるとの効果を奏する。
§4.変形例
これまで、ロボットアーム30が、軸AX(1)から軸AX(6)の6つの軸AXを備えている例を説明してきたが、ロボットアーム30の備える軸AX(関節)が6つであることは必須ではなく、ロボットアーム30の備える軸AXは2つ以上であればよい。つまり、ロボットアーム30の自由度は2以上であればよい。
また、ロボットアーム30を備えるロボット1が自走式搬送装置である例を説明してきたが、ロボット1が自走式であることは必須ではなく、つまり、ロボット1は搬送ロボット部40を含んでいなくてもよい。ロボットアーム30は、所定の位置、もしくは移動可能な架台上に固定されたマニピュレータであってもよい。
さらに、ロボット制御部10がロボットアーム制御部20を介してロボットアーム30を制御する例を説明してきたが、ロボット制御部10がロボットアーム30を制御するのに、ロボットアーム制御部20を介することは必須ではない。ロボット制御部10はロボットアーム30を直接制御してもよいし、また、ロボット制御部10とロボットアーム制御部20とが一体的に構成されてもよい。
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。