(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0012】
以下、本発明の一実施形態を図面に基づいて説明する。
図1には、6軸の垂直多関節型ロボット装置のロボット本体1が示されている。このロボット本体1は、ベース2上にロボットアーム3を設けて構成されている。ロボットアーム3は、ベース2に水平方向に旋回可能に支持されたショルダ部4と、このショルダ部4に上下方向に旋回可能に支持された下アーム5と、この下アーム5に上下方向に旋回可能に支持された第1の上アーム6と、この第1の上アーム6の先端部に捻り回転可能に支持された第2の上アーム7と、この第2の上アーム7に上下方向に旋回可能に支持された手首アーム8と、この手首アーム8に捻り回転可能に支持されたフランジ9とから構成されている。なお、ロボットアーム先端であるフランジ9には、ワークを把持するハンドや、視覚検査のために用いるカメラなどのエンドエフェクタ(図示せず)が取り付けられるようになっている。
【0013】
ショルダ部4、下アーム5、第1の上アーム6、第2の上アーム7、手首アーム8、フランジ9は、ロボットアーム3におけるアーム(リンク)として機能し、各アーム4〜9は、前段のアームに回転可能に支持された回転関節軸(図示せず)に固定連結されている。そして、各アーム4〜9の回転関節軸は、それぞれ
図4に示すサーボモータ10により減速装置11を介して回転されるようになっている。
【0014】
図4に示すように、ロボットアーム3の動作を制御するロボット制御手段としての制御装置12は、マイコンからなり、CPU13、ROM14およびRAM15を備えている。この制御装置12には、サーボモータ10の駆動回路16、サーボモータ10の回転角を検出する回転位置検出回路(回転位置検出手段)17が接続されている。この回転位置検出回路17は、サーボモータ10の回転軸(図示せず)に連結されたロータリエンコーダ(回転センサ)18から入力される回転検出信号に基づいてサーボモータ10の回転角を検出し、その回転角情報を制御装置12と駆動回路16に与える。なお、
図4では、サーボモータ10は1台しか示されていないが、実際には、各アーム4〜9に1台ずつ設けられているものである。
【0015】
ここで、ベース2および各アーム4〜9には、3次元の座標が規定されている。このうち、床面に据え付けられるベース2の座標系(
図1に座標軸XYZで示す。)は、不動の座標系でロボット座標(基準座標)とされる。アーム4〜9の座標は、各アーム4〜9の図示しない回転関節軸の回転中心軸線上に設定されており、アーム4〜9の回転によりロボット座標上での位置と姿勢が変化する。
【0016】
ROM14には、ロボット座標上におけるショルダ部4の座標位置、ショルダ部4の座標上における下アーム5の座標位置、下アーム5の座標上における第1の上アーム6の座標位置、第1の上アーム6の座標上における第2の上アーム7の座標位置、第2の上アーム7の座標上における手首アーム8の座標位置、手首アーム8の座標上におけるフランジ9の座標位置、各アーム4〜9の長さなどの各種のパラメータが記憶されている。
【0017】
ロボット先端であるフランジ9の座標の原点は、当該フランジ9の先端面の回転中心に定められている。そして、CPU13は、座標変換の計算機能を有し、ロボット先端の位置(姿勢を含む;以下同じ)が与えられると、当該与えられた位置をロボット先端が取るような各アーム4〜9の回転角を演算(逆変換)できるようになっており、また、各アーム4〜9の回転角が与えられると、各アーム4〜9の位置を演算(順変換)できるようにもなっている。
【0018】
ロボットアーム3の動作プログラムは図示しないティーチングペンダント(動作プログラム作成手段)により作成されてRAM15に記憶されている。CPU13は、このRAM15に記憶された動作プログラムに基づいて、ロボット先端の移動軌跡を演算し、そして、ロボット先端が移動開始位置から移動終了位置まで移動する間、当該ロボット先端の速度パターンが台形パターンや三角パターンなどの所定の速度パターンとなるように、サンプリングタイム毎のロボット先端の位置を演算する。なお、サンプリングタイムの周期は、例えば10msといったごく短い時間に定められている。サンプリングタイム毎のロボット先端の位置を求めると、CPU13は、各アーム4〜8のサンプリングタイム毎の回転角を求め記憶手段としてのRAM15に記憶させる。
【0019】
ロボットアーム3の動作制御中、CPU13は、サンプリングタイム毎に、回転位置検出回路17から与えられる各サーボモータ10の回転角から各アーム4〜9の回転角を演算し、各アーム4〜9の回転角からフランジ9の位置を演算して現在位置を検出する。そして、ロボット先端の現在位置の次の位置における各アーム4〜9の回転角をRAM15から取得し、各アーム4〜9の回転角から各サーボモータ10の回転角を演算して当該各回転角を各サーボモータ10の目標回転角として駆動回路16に出力する。
【0020】
駆動回路16は、ロボット制御装置12から与えられた目標回転角と、回転位置検出回路17からフィードバックされた各サーボモータ10の回転角とを比較し、その差分に応じた電流を各サーボモータ10に供給する。これによりサーボモータ10が目標回転角に回転するように制御される。このような制御がサンプリングタイム毎に行われることによってロボット先端が動作プログラムにより定められた軌跡通りに動作するものである。
【0021】
さて、ベース2の上部には、
図2に示すように、当該ベース2を取り巻く円形のレール19が取り付けられており、このレール19上に走行車(走行体)20が乗せられている。走行車20はレール19上を転がる車輪21を有し、この車輪21は走行車20に搭載された車輪駆動モータ22により回転駆動されて走行車20を走行させる。
【0022】
走行車20の現在位置を検出するために、ベース2には当該ベース2を囲むリング状の多孔板23が取り付けられている。一方、走行車20には、多孔板23を挟むようにして例えば発光ダイオードからなる投光素子24とフォトダイオードからなる受光素子25が配設されている。
【0023】
図3に示すように、多孔板23には、周方向に沿って多数の小孔23aが形成されており、投光素子24が放射する光は小孔23aを通して受光素子25に受光される。そして、走行車20が移動すると、受光素子25は投光素子24が放射する光を間欠的に受けてパルス状の受光信号を出力する。このような投光素子24と受光素子25は走行車20の位置を検出する位置検出器(位置センサ)26を構成している。
【0024】
また、走行車20には、探査装置としてのレーザーレーダ27が搭載されている。レーザーレーダ27は、レーザー光(探査信号)をパルス状に出射するレーザーと、出射されたレーザー光の反射光を受光する受光器とから構成されている。このレーザーレーダ27は、レーザー光を
図1に示すように所定の仰角γで斜め上向きに出射するように配設されている。なお、レーザー光を
図1においてLで示した。
【0025】
走行車20とベース2とは、
図3に示すフレキシブルケーブル28によって接続されている。このフレキシブルケーブル28は、車輪駆動モータ22、位置検出器26、レーザーレーダ27などの走行車20に搭載された機器への電源供給と、それら搭載機器と制御装置12との間での信号の送受のためのものである。走行車20内には、フレキシブルケーブル28を巻き取る巻取器29が設けられている。この巻取器29はモータ駆動式で、走行車20の位置に応じたフレキシブルケーブル28の巻取り量が設定されている。これにより、フレキシブルケーブル28は常時適正な弛みを持って巻き取り巻き戻される。
【0026】
上記多孔板23、投光素子24および受光素子25、制御装置12は、走行車20の位置を検出する走行位置検出手段を構成するもので、受光素子25が出力する受光パルス信号は、制御装置12に入力される。そして、制御装置12は、受光素子25からの受光パルス信号の数をカウントすることで走行車20の位置を検出する。
【0027】
つまり、走行車20のレール19は、ロボット座標のZ軸を中心とする円形になっている。本実施形態において、Z軸はショルダ部4の回転中心線と一致している。そして、走行車20の位置は、レール19上の所定位置を基準位置とし、この基準位置からZ軸に下ろした垂線と、走行車20の現在位置からZ軸に下ろした垂線とのなす角によって表わすものとする。すると、上記のように基準位置からの受光パルス数をカウントすることで、走行車20が現在、基準位置からベース2の周りを何度回転した位置に居るかを検出することができる。
【0028】
制御装置12は、走行車20がベース2の周囲を360度以下の所定範囲、この実施形態では360度つまり1周すると、車輪駆動モータ22を逆転させて走行車20をそれまでとは逆方向に移動させるようになっている。従って、走行車20は、ベース2の周りを1周ずつ正逆方向に繰り返し移動する。このベース2の周りの360度の移動を走行車20の1周期走行ということとする。
【0029】
ちなみに、走行車20が正逆方向に移動する場合でも、制御装置12は、車輪駆動モータ22の回転方向により基準位置からどちら方向に何度回転した位置に走行車20が居るかを検出することができるものである。
【0030】
なお、レーザーレーダ27のレーザー光の出射方向は、真上から見たとき、Z軸とレーザーとを結んだ直線と所定角度、例えば同方向となるように定められている。また、走行車20の基準位置はロボット座標のX軸、Y軸とのなす角が所定角度となるように、例えば真上から見たときX軸とのなす角が0度(X軸と一致)でY軸とのなす角が90度となるように定められている。
【0031】
レーザーレーダ27によって物体が検出されたとき、レーザーレーダ27から物体までの距離は、
図1に示すように、レーザー光の出射方向に沿った距離Aで検出されるから、水平方向の距離BはB=A・cosγで求めることができる。そして、レーザーレーダ27の移動軌跡の半径dは既知であるから、ロボット座標のZ軸から検出物体までの水平距離DはD=(B+d)で求めることができる。
【0032】
従って、レーザーレーダ27により物体が検出されたとき、そのときの走行車20の位置とレーザーレーダ27からの距離により、物体の位置をロボット座標のXY座標値で把握することができる。つまり、走行車20の現在位置が基準位置からθ度のところにある(X軸とのなす角がθ度)としたとき、XY座標値は、x=D・cosθ、y=D・sinθで求めることができる。
【0033】
次に上記構成の作用を
図5〜
図7のフローチャートをも参照しながら説明する。ロボット装置の電源が投入され、スタート操作が行われると、まず、制御装置12は、走行車20に基準位置から正方向回りの1周期走行と逆方向回りの1周期走行を繰り返し行わせる。この走行車20の走行中、レーザーレーダ27はレーザー光を間欠的に放射して物体検出を行う。
この走行車20の移動中、制御装置12は、受光素子25が受光信号を出力した時の時間を、受光信号の一つ一つについて記憶手段としての例えばRAM15に記憶する。この受光信号が出力された時間は、少なくとも前回の1周期走行と今回の1周期走行とについて記憶する。
【0034】
走行車20の1周期走行において、制御装置12は、レーザーレーダ27の受光信号から物体の存在を検出すると、そのときの走行車20の位置と、レーザーレーダ27から物体までの距離とから、当該検出物体の位置をロボット座標のXY座標上の位置として計算する。そして、制御装置12は、走行車20の1周期走行において検出された全ての物体の位置データを含む物体検出結果を1周期位置データとしてRAM15に記憶させる(位置データ取得手段)。なお、走行車20の位置とレーザーレーダ27からの物体の距離とを記憶し、必要なときにXY座標上の位置として計算するようにしても良い。
【0035】
さて、以上のようにして1周期位置データを取得すると、制御装置12は、
図5のデータ処理ルーチンに入り、今回取得した1周期位置データを予めRAM15に記憶された所定の基本位置データと比較する(
図5のステップA1;第1の比較手段)。基本位置データは、例えば、ロボット本体1の周りに人が居ない状態で取得した1周期位置データである。なお、基本位置データは、電源投入後の最初の1周期位置データとしても良い。
【0036】
1周期位置データと基本位置データとを比較した結果、両データ間に差がないとき(ステップA1で「NO」)、制御装置12は、移動体検出フラグをオフし(ステップA4)、リターンとなる。また、1周期位置データと基本位置データとの間に差があるとき(ステップA1で「YES」)、制御装置12は、レーザーレーダ27の検出領域内への侵入物体を検出したとし、次に前回の1周期位置データと今回の1周期位置データとを比較する(ステップA2;第2の比較手段)。
【0037】
前回の1周期位置データと今回の1周期位置データとを比較した結果、両データ間に差がないとき(ステップA2で「NO」)、制御装置12は、今回の1周期位置データを基本位置データとして置き換え(ステップA5;基本位置データ変換手段)、移動体検出フラグをオフ(ステップA6)してリターンとなる。
【0038】
また、前回の1周期位置データと今回の1周期位置データとを比較した結果、両データ間に差があるとき(ステップA2で「YES」)、制御装置12は、検出物体が移動しているとして移動体検出フラグをオン(ステップA3)し、リターンとなる。なお、移動していると判断された検出物体を以下では移動体ということとする。
【0039】
以上を具体的に説明する。移動体、例えば、作業者が補給部品を搭載したワゴン(部品補給用ワゴン)を、ロボットアーム3による組み付け作業の結果、空になったワゴンと交換するために、レーザーレーダ27の検出領域内に搬入してきたとする。すると、今回取得された1周期位置データの中には、今まで存在していなかった部品補給用ワゴンや作業者の位置データが存在することとなるので、基本位置データとも、また前回の1周期位置データとも異なることとなる。このため、ステップA1で「YES」、ステップA2で「YES」と判断され、ステップA3で移動体検出フラグがオンされる。
【0040】
作業者が空になったワゴンに向かって部品補給ワゴンを押して行って部品補給ワゴンを空になったワゴンと交換し、その空になったワゴンを押してレーザーレーダ27の検出領域の外に出て行くまでは、作業者やワゴンが移動しているので、その間に次々と取得される1周期位置データは基本位置データとも前回取得の1周期位置データとも異なることとなるので、移動体検出フラグはオンされ続ける。
【0041】
作業者が空になったワゴンを押してレーザーレーダ27の検出領域の外に出てゆくと、移動物体はいなくなる。その直後に新たに取得された1周期位置データは基本位置データと比較される。このとき、部品補給ワゴンが空になったワゴンと同じ位置に置かれた場合には、新たに取得された1周期位置データは基本位置データと一致するので(ステップA1で「NO」)、移動体検出フラグはオフされる(ステップA4)。
【0042】
しかしながら、部品補給ワゴンを空になったワゴンと置き換える際、空になったワゴンがあった位置とは多少ずれることが往々にしてある。この場合には、作業者が空になったワゴンを押してレーザーレーダ27の検出領域の外に出て行った直後に新たに取得された1周期位置データは基本位置データと異なり、前回の1周期位置データ(作業者が空になったワゴンを押してレーザーレーダ27の検出領域の外に出る直前の位置データであるから作業者、空になったワゴンの位置データがある)とも異なることとなるので、移動体検出フラグはオフされず、オンのままになる(ステップA2で「YES」、ステップA3)。
【0043】
ところが、次に新たに取得された今回の1周期位置データは基本位置データとは異なる(ステップA1で「YES」)が、前回の1周期位置データとは一致することとなるので(ステップA2で「NO」)、それまでの基本位置データがRAM15から消去され、今回取得された最新の1周期位置データが新たな基本位置データとしてRAM15に記憶され(ステップA5;基本位置データ変換手段)、移動体検出フラグがオフされる(ステップA6)。そして、次に取得された1周期位置データは新たな基本位置データと一致することとなるので(ステップA1で「NO」)、移動体検出フラグがオフされ続けることとなる。
【0044】
従って、今回の1周期位置データと基本位置データとの比較結果だけで、移動体検出フラグをオンしたりオフしたりする場合とは異なり、ワゴンの位置が少し変化しただけで、実際には物体の侵入がないにもかかわらず、前回の1周期位置データとの差分を比較するという余分の動作を実施するといった不具合の発生を未然に防止できる。このことは、制御装置12の処理時間が短縮されることを意味し、ひいては、ロボットアーム3の動作についての制御装置12の処理を余裕をもって実行でき、ロボットのタクトタイム(繰り返し行われる1作業サイクルの所要時間)が長くなることを防止できる。
【0045】
また、レーザーレーダ27からレーザー光は、所定の仰角γで出射される。これにより、レーザーレーダ27の検出領域内に侵入してきた人に対して、レーザー光が上半身に照射されるようにしている。人、特に検出領域内に入ってくる人は工場の作業者であるから、定位置に留まっていても、頭や手は絶えず動いている。このため、人が同じ位置に立っていたとしても、上半身が動くことにより、前回の1周期位置データと今回の1周期位置データとは異なるようになり、移動物体検出フラグがオンされ続けるようになる(ステップA1で「YES」、ステップA2で「YES」、ステップA3)。このため、人と物との区別をより正確に行うことができ、人を移動体ではないと判断することを防止できる。
【0046】
以上のような1周期位置データの処理が終了すると、制御装置12は、
図5のデータ処理ルーチンと
図6に示す停止中処理ルーチンを交互に繰り返し実行する。
図6の停止中処理ルーチンに入ると、制御装置12は、まず移動体検出フラグがオンされているか否かを判断する(ステップB1)。移動体検出フラグがオフであれば(ステップB1で「NO」)、制御装置12は動作を許可し(ステップB7)、ロボットアーム3に動作プログラムに従った動作を開始させる。
【0047】
なお、以下において、ロボットアーム3の位置、動作方向、速度という場合、それは、アーム先端であるフランジ9の位置、動作方向、速度のことを指す。
移動体検出フラグがオンであった場合(ステップB1で「YES」)、制御装置12は、動作プログラムを参照してロボットアーム3の動作開始時の動作方向を検出し、移動体の存在する方向に動作しないなら(ステップB2で「NO」)、動作を許可し(ステップB7)、ロボットアーム3に動作プログラムに従った動作を開始させる。
【0048】
ロボットアーム3の動作開始時の動作方向が移動体の存在する方向であるならば(ステップB2で「YES」)、次に制御装置12は、ロボットアーム3の動作プログラムを参照して動作方向と速度を取得すると共に、移動体の動作方向と速度を取得し、ロボットアーム3と移動体とが衝突する位置と動作開始から衝突までの時間を計算する(ステップB3)。
【0049】
上記ロボットアーム3の速度は、動作プログラムにより定められた速度パターンから取得する。例えば、ロボットアーム3の速度パターンが
図9(a)に示すような台形パターンであった場合、加速度α、最高速度V、減速度−αは動作プログラムに記載してあるので、それを参照して動作開始からt時間後の速度を算出する。動作開始からt時間の間に移動した距離(位置)はそれまでの速度を積分する、つまりt時間までの速度パターンの面積を算出すれば良い。
【0050】
移動体の動作方向と速度は、今回の1周期位置データと前回の1周期位置データを比較して取得する。つまり、移動体の動作方向は、移動体の前回の位置と今回の位置とを結ぶ直線を求め、この直線上を前回の位置から今回の位置に向かう方向に動作するとする。また、移動体の速度は、前回の位置から今回の位置までの距離を求め、この距離を、前回の1周期位置データによって移動体が検出されてから今回の1周期位置データによって移動体が検出されたときまでの時間で除すことによって求めることができる。
【0051】
なお、移動体の前回の位置から今回の位置までの距離は、Z軸から前回の移動体の位置までの距離と、Z軸から今回の移動体の位置までの距離と、Z軸から前回の移動体の位置に引いた直線とZ軸から今回の移動体の位置に引いた直線とのなす角とから求めることができる。前回の1周期位置データによって移動体が検出されてから今回の1周期位置データによって移動体が検出されたときまでの時間は、今回の移動体の位置で受光素子25が受光信号を出力した時間から前回の移動体の位置で受光素子25が受光信号を出力した時間との差で求めることができる。
【0052】
ロボットアーム3と移動体とが衝突する位置と動作開始から衝突までの時間を計算した結果、衝突しないならば(ステップB4で「NO」)、制御装置12は、ロボットアーム3の動作を許可し、動作を開始させる。
衝突するならば、制御装置12は、ロボットアーム3の速度を動作プログラムによって定められた速度パターンによらず、それよりも低速度の安全速度、例えばISO10218で認められている25mm/sec以下でロボットアーム3を動作させるとした場合に移動体と衝突するか否かを判断し、安全速度で衝突回避できるならば(ステップB5で「YES」)、ロボットアーム3の速度を安全速度に設定して動作を許可する(ステップB6)。
【0053】
安全速度に設定しても衝突を回避できなければ(ステップB5で「NO」)、制御装置12は、ロボットアーム3の動作を禁止する(ステップB8)。
さて、ロボットアーム3の動作が開始されると、制御装置12は
図5のデータ処理ルーチンと
図7の動作中処理ルーチンを交互に繰り返し実行する。この
図7の動作中処理ルーチンにおいて、制御装置12は、状況に応じて移動体との衝突を回避するために、種々の衝突回避措置を設定する(衝突回避措置設定手段)。
【0054】
図7のフローチャートに入ると、制御装置12は、移動体検出フラグがオンされているか否かを判断し(ステップC1)、移動体検出フラグがオフであったなら(ステップC1で「NO」)、リターンとなってロボットアーム3の動作を続行させる。
移動体検出フラグがオンであった場合(ステップC1で「YES」)、制御装置12は、前述したと同様にしてロボットアーム3の動作方向と速度を取得すると共に、移動体の移動方向と速度を取得し、ロボットアーム3と移動体とが衝突する位置と衝突までの時間を計算する(ステップC2)。
【0055】
計算の結果、ロボットアーム3と移動体とが衝突しないとなった場合(ステップC3で「NO」)、制御装置12は、ロボットアーム3の動作をそのまま続行する。
ロボットアーム3と移動体とが衝突する場合(ステップC3で「YES」)、制御装置12は、ロボットアーム3を減速させることで、移動体との衝突を回避できるか否かを判断する(ステップC4)。
【0056】
例えば、ロボットアーム3の動作方向と移動体の移動方向とが交差し、その交差する位置で両者が衝突する結果が得られた場合、ロボットアーム3の速度を遅くすることで、移動体が交差位置を通過した後にロボットアーム3がその交差位置に到達するようにすれば、両者は衝突しないこととなる。しかし、ロボットアーム3の移動方向と移動体の移動方向とが重なる場合、ロボットアーム3の速度を遅くしても両者は衝突することとなる。
【0057】
ロボットアーム3を減速させると衝突を回避できる場合(ステップC4で「YES」)、制御装置12は、衝突を回避できる速度を演算し、その速度となるまでロボットアーム3を減速する(ステップC8;第1の衝突回避措置)。なお、減速はサーボモータ3に逆トルクを発生させてロボットアーム3を制動する(制動手段)ことによって行う。制動手段はサーボモータ3に逆トルクを発生させるものに限らず、機械的ブレーキを作動させるなど他の手段でも良い。
【0058】
ロボットアーム3を減速させても衝突を回避できない場合(ステップC5で「NO」)、制御装置12は、緊急停止によって回避できるか否かを判断する(ステップC5)。緊急停止とは、例えばサーボモータ3に最大の逆トルクを発生させて許容最大減速度でロボットアーム3を急速に停止させる動作をいう。この許容最大減速度は、予め記憶手段、例えばROM14に記憶させてある。
【0059】
緊急停止によって衝突を回避できるか否かは、まず、現在のロボットアーム3の速度を検出し、この速度のときに許容最大減速度で減速させたとき、停止するまでの移動距離(制動距離)sを求める。そして、移動物体が制動距離s内に存在していれば衝突すると判断し、制動距離s外であれば衝突しないと判断する。制動距離sは、
図9(a)において、現在速度がV、許容最大減速度が−αであるとしたとき、斜線を付した三角形の面積で求めることができる。なお、より確実に衝突を回避するために、現在速度を、実際の速度ではなく、最大許容速度にあると仮定して制動距離sを求めるようにしても良い。
【0060】
緊急停止によって衝突を回避できる場合(ステップC5で「YES」)、制御装置12は、ロボットアーム3を緊急停止させる(ステップC9)。
緊急停止によっても衝突を回避できない場合(ステップC5で「NO」)、制御装置12は、衝突回避のために安全な方向へ軌道を変更し(ステップC6)、当該安全な方向へ動作させながら緊急停止させる(ステップC7)。
【0061】
ここで、安全な方向とは、本実施形態では、移動体の移動方向と同じ方向のことをいう。具体的には、
図8(a)に示すように、動作プログラムによって示された目標位置Qに向かってロボットアーム3が移動する方向を直線L1で示し、移動体Rの移動方向を直線L2で示したとき、
図8(b)に示すように、直線L1よりも移動体Rから離れた任意の位置Q1を回避目標位置に定め、この回避目標位置Q1に到達する軌跡を算出し、この算出した軌跡に沿ってロボットアーム3を緊急停止させながら移動させる。この場合、ロボットアーム3の衝突回避のため移動方向を、より早く移動体Rの移動方向に近づけるためには、回避目標位置Q1は、直線L2を含め当該直線L2よりもロボットアーム3側に定めることが好ましい。
【0062】
このように回避目標位置を定めることにより、ロボットアーム3は、次第に移動体Rの移動方向と同じ方向に方向変換しながら緊急停止するようになるので、移動体との衝突を回避できる。
つまり、ロボットアーム3を、移動体から離れる方向に移動させながら緊急停止させることができるので、移動体との衝突を回避することができるのである。
例えば、ロボットアーム3が移動体と衝突するという場合、移動体の移動方向を、前回の1周期位置データでの位置と今回の1周期位置データでの位置とを結んだ直線方向と仮定してのことであるが、実際には、その後、方向転換してロボットアーム3から遠ざかる方向に移動したり、ロボットアーム3に近づく方向に向きを変えて移動してきたりするかも知れない。ロボットアーム3から遠ざかる方向に向きを変えた場合には良いが、
図8(a)において、直線L2よりもロボットアーム3側で当該ロボットアーム3に近づく方向に向きを変えて移動してきた場合、ロボットアーム3と移動体とが衝突する恐れを生ずる。
【0063】
これに対し、本実施形態では、ロボットアーム3が回避目標位置Q1に向かって移動体Rから遠ざかるように方向変換してゆくので、移動体が
図8(a)におけるロボットアーム3方向に移動方向を変えたとしても、ロボットアーム3は移動体から離れる方向に移動するので、移動体と衝突することをより確実に回避することができる。
【0064】
以上のように本実施形態によれば、移動体を検出するためのレーザーレーダ27が走行車20に搭載され、この走行車20はベース2に取り付けられたレール19に移動可能に設けられているので、ロボット本体1を床面に設置すれば、レーザーレーダ27の設置も同時に終えることができるので、ロボット本体1の設置の他に、レーザーレーダ27を工場内の所要位置に設置するといった追加作業を必要としない。
【0065】
しかも、レーザーレーダ27を走行車20に搭載し、走行車20を移動させながらレーザーレーダ27からレーザー光をパルス状に出射することで移動体を検出できるので、工場の天井に取り付けたCCDカメラで検出する場合のように高度な画像解析を必要とせず、移動体の検出を簡易に行うことができる。
【0066】
また、本実施形態では、今回の1周期位置データが基本位置データと異なっていても、前回の1周期位置データと一致していれば、移動他検出フラグをオンすることなく、代わりに、周囲に据え付けられた設備に変化があったとして、今回の1周期位置データを基本位置データに採用して、それまでの基本位置データと置き換えるようにしている(ステップA1で「YES」、ステップA2で「NO」、ステップA5)。
【0067】
これに対し、今回の1周期位置データと基本位置データと差があったことだけで移動体検出フラグをオンさせる場合には、例えば、部品補給ワゴンを空になったワゴンと置き換えるような場合、部品補給ワゴンの位置が空のワゴンのあった位置に正確に据え置かないと、以後の1周期位置データが全て基本位置データと異なることとなり、その結果、部品補給ワゴンが置かれた後も、移動体検出フラグがオンされ続けることとなる。
【0068】
このような場合、本実施形態では、今回の1周期位置データは基本位置データと異なっても、前回の1周期位置データとは一致するようになる。そして、今回の1周期位置データを基本位置データに置換する。このため、次の1周期位置データは、基本位置データと一致するようになるので、移動体検出フラグはオンされることはなく、いつまでも移動体検出フラグがオンされ続けることはなくなる。
【0069】
また、本実施形態では、ロボットアーム3の停止中に移動体を検出した場合、動作すれば衝突する恐れがあるときは動作を開始させないことは勿論であるが、ロボットアーム3と移動体とが衝突する恐れがなければ、ロボットアーム3の動作を開始し、或いは、安全速度であれば移動体と衝突する恐れがない場合には、安全速度でロボットアーム3の動作を開始させるので、ロボットアーム3の動作禁止を可能な限り防止しながら衝突防止を図ることができる。
【0070】
その上、ロボットアーム3の動作中に移動体を検出した場合、まず減速により衝突を回避し、減速によって衝突回避できないときは、制動をかけて停止させることにより衝突を回避し、制動をかけて停止させることによって衝突回避できないときには、ロボットアーム3を停止動作させながら当該ロボットアーム3の移動方向を移動体の移動方向と同じ方向となるように変更するので、より確実にロボットアーム3が移動体と衝突することを防止できる。
【0071】
なお、本発明は上記し且つ図面に示す実施形態に限定されるものではなく、以下のような拡張或いは変更が可能である。
探査装置はレーザーレーダ27に限られず、電波(探査信号)を発信しその反射波を測定することにより物体までの距離や方向を測定するレーダであっても良い。
ロボットアームは6軸型のものに限られず、また、水平多関節型のものに限られない。
移動体の駆動源はリニアモータであっても良い。
走行車20はベース2の周りを往復移動するものに限られず、一方向に移動するものであっても良い。
ロボットアーム3の動作範囲によっては、走行車20の移動範囲はベース2の周り360度未満であっても良い。
ステップA5で基本データと置き換える位置データは、今回の1周期位置データに限られず、前回の1周期位置データとしても良い。