(57)【要約】【課題】ロボット装置の干渉回避を優先順位を設けずに少ないメモリ量で実現する。【解決手段】ブロック分割部３１は、ロボット装置１０−１，１０−２の可動領域を分割して得られる各実空間ブロックの実空間ブロック座標値から、仮想空間における各仮想空間ブロックの仮想空間ブロック座標値を計算する。ブロック分割部３１は、仮想空間ブロック座標値と、それを所定方向に所定距離だけオフセットさせて得られる所定数の仮想空間オフセットブロック座標値とのセットである仮想空間ブロック座標値セットをメモリ部３３に記憶する。インターロック制御部３２は、ロボット制御装置２０−１，２０−２から干渉回避制御要求情報を供給されると、その干渉回避制御要求情報と仮想空間ブロック座標値セットとに基づいて干渉回避制御を行い、ロボット制御装置２０−１，２０−２に対し進入許可情報またはエラー情報を送信する。【選択図】図１
2011056607.tif 000002
【特許請求の範囲】
【請求項１】
複数のロボット装置の動作領域を直交座標系の複数のブロックに分割して得られるブロック分割領域と、前記ブロック分割領域を所定のオフセットベクトル量だけオフセットして得られるオフセットブロック分割領域とをメモリ上に設け、前記複数のブロックそれぞれと、各ブロック位置からオフセットされたブロックとの組み合わせであるブロックセットを管理するブロック分割管理手段と、
前記複数のロボット装置のうち一のロボット装置が移動することによって前記一のロボット装置に設けられた検知ポイントが進入しようとするブロックを含むブロックセットに、他のロボット装置に設けられた検知ポイントが存在しない場合にのみ、前記ブロックセットをインターロックし、前記一のロボット装置に対して前記進入しようとするブロックへの進入を許可するインターロック制御手段と、
を備えたことを特徴とする干渉回避装置。
【請求項２】
請求項１記載の干渉回避装置において、
前記複数のロボット装置の動作領域に物体が進入した場合に、その物体が進入しようとするブロックを推定する進入物体検出手段をさらに備え、
前記インターロック制御手段は、
前記推定されたブロックを含むブロックセットのうちいずれかのブロックに、前記複数のロボット装置のうちいずれかのロボット装置に設けられた検知ポイントが存在する場合であって、その検知ポイントが存在するブロックの周囲にインターロックされていないブロックがある場合に、前記検知ポイントが設けられたロボット装置に対して前記インターロックされていないブロックへの移動を要求する
ことを特徴とする干渉回避装置。
【請求項３】
請求項２記載の干渉回避装置において、
前記インターロック制御手段は、
前記推定されたブロックを含むブロックセットのうちいずれかのブロックに、前記複数のロボット装置のうちいずれかのロボット装置に設けられた検知ポイントが存在する場合であって、その検知ポイントが存在するブロックの周囲のブロックが全てインターロックされている場合に、前記検知ポイントが設けられたロボット装置に対して移動の停止を要求する
ことを特徴とする干渉回避装置。
【請求項４】
請求項１から３のうちいずれか一項記載の干渉回避装置において、
前記ブロックの一辺の距離は前記ロボット装置の動作停止必要距離の４倍の距離に相当するものであり、
前記所定のオフセットベクトル量における方向は、前記直交座標系の次元数（次元数は２または３）に応じて決定されるものであり、
前記所定のオフセットベクトル量における前記直交座標系の軸方向成分の長さは、前記ブロックの一辺の距離の半分の距離である
ことを特徴とする干渉回避装置。
【請求項５】
コンピューターを、
複数のロボット装置の動作領域を直交座標系の複数のブロックに分割して得られるブロック分割領域と、前記ブロック分割領域を所定のオフセットベクトル量だけオフセットして得られるオフセットブロック分割領域とをメモリ上に設け、前記複数のブロックそれぞれと、各ブロック位置からオフセットされたブロックとの組み合わせであるブロックセットを管理するブロック分割管理手段と、
前記複数のロボット装置のうち一のロボット装置が移動することによって一のロボット装置に設けられた検知ポイントが進入しようとするブロックを含むブロックセットに、他のロボット装置に設けられた検知ポイントが存在しない場合にのみ、前記ブロックセットをインターロックし、前記一のロボット装置に対して前記進入しようとするブロックへの進入を許可するインターロック制御手段と、
として機能させるための干渉回避プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットの干渉回避装置および干渉回避プログラムに関する。
【背景技術】
【０００２】
精密機器や自動車等の製造工場では、産業用ロボット（以下、ロボットと呼ぶ。）を導入した製造ラインの自動化が盛んに行われている。近年、このロボットは、より高速に且つ連続して工程作業を繰返すことのできる耐久性を有したものが多い。このような自動化製造ラインにおいては、作業内容がプログラムされたロボットを工程ごとに配置して流れ作業を行うのが一般的であり、この場合、隣り合うロボットは異なる動きをする。この場合に、ロボット同士が衝突するのを防ぐためには、各ロボットの最大可動範囲内にいずれの物体も入らないようにして各ロボットを配置すればよい。しかし、これでは工場のスペース効率が悪く、製造を自動化したとはいえ生産効率を高く維持することができない。
【０００３】
このような問題を解決するために、ロボットに優先順位を設けておき、隣り合うロボットが相互に干渉する空間領域に進入する際に、優先順位の高い方のロボットに進入権を与えて進入させるとともに、優先順位の低い方のロボットを待機させるという制御を行ってロボット同士の干渉を回避する技術が知られている（例えば、特許文献１参照）。
【０００４】
また、従来、制御装置内のメモリに、複数のロボットが動作する空間を疑似的に再現するメモリ空間を設け、このメモリ空間内の既にフラグの書き込まれている位置に複数のロボットのうちいずれかのロボットがあらたにフラグを書き込もうとしたことを確認した場合に、そのロボットに対して待機指令を出して複数のロボットが同一空間を占有すること、つまり干渉することを回避する技術が知られている（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平８−１６６８０９号公報
【特許文献２】特開平８−３６４１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に記載された複数のロボットの干渉回避方法では、複数のロボットを稼働させる実際の使用環境において、各ロボットに最適な優先順位を付けることが非常に困難である。これは、ロボットの動作は空間的および時間的に連続しており、ある瞬間における状態のみに基づいて決定した優先順位が、ロボットの動作全体からみた場合に最適な順位であるか否かを検証することが困難であるためである。
また現時点よりも後に発生し得る状況を考慮して優先順位付けを検証する場合の条件の組み合わせは膨大な数となり、優先順位を予め決定しておくことはロボットの安全性および効率性の点で問題がある。
【０００７】
また、特許文献２に記載されたロボットの干渉防止方法は、メモリ空間におけるロボットの動作経路に相当する位置にフラグを立ててからロボットの動作を開始するようにしてロボットの干渉を回避するものであるが、これはすなわち、ロボットが動作する全ての空間における干渉をチェックするものであり、非常に多くのメモリ容量を必要とする。
また、この干渉防止方法は、互いに動いているロボットの動作停止処理を開始した位置から実際に動作が停止する位置までに必要な距離（動作停止必要距離）を考慮していないため、高速な動きをするロボット同士の干渉防止方法としては十分とはいえない。
【０００８】
そこで、本発明は上記問題に鑑みてなされたものであり、ロボット装置に干渉領域への侵入権獲得のための優先順位を設ける必要がなく、少ないメモリ使用量で、ロボット装置の動作停止必要距離を考慮した干渉を回避させることのできる、ロボットの干渉回避装置および干渉回避プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、上記の課題を解決するために、以下［１］−［５］の手段を提供するものである。
［１］  複数のロボット装置の動作領域を直交座標系の複数のブロックに分割して得られるブロック分割領域と、前記ブロック分割領域を所定のオフセットベクトル量だけオフセットして得られるオフセットブロック分割領域とをメモリ上に設け、前記複数のブロックそれぞれと、各ブロック位置からオフセットされたブロックとの組み合わせであるブロックセットを管理するブロック分割管理手段と、前記複数のロボット装置のうち一のロボット装置が移動することによって前記一のロボット装置に設けられた検知ポイントが進入しようとするブロックを含むブロックセットに、他のロボット装置に設けられた検知ポイントが存在しない場合にのみ、前記ブロックセットをインターロックし、前記一のロボット装置に対して前記進入しようとするブロックへの進入を許可するインターロック制御手段と、を備えたことを特徴とする干渉回避装置。
［２］  上記［１］記載の干渉回避装置において、前記複数のロボット装置の動作領域に物体が進入した場合に、その物体が進入しようとするブロックを推定する進入物体検出手段をさらに備え、前記インターロック制御手段は、前記推定されたブロックを含むブロックセットのうちいずれかのブロックに、前記複数のロボット装置のうちいずれかのロボット装置に設けられた検知ポイントが存在する場合であって、その検知ポイントが存在するブロックの周囲にインターロックされていないブロックがある場合に、前記検知ポイントが設けられたロボット装置に対して前記インターロックされていないブロックへの移動を要求することを特徴とする干渉回避装置。
［３］  上記［２］記載の干渉回避装置において、前記インターロック制御手段は、前記推定されたブロックを含むブロックセットのうちいずれかのブロックに、前記複数のロボット装置のうちいずれかのロボット装置に設けられた検知ポイントが存在する場合であって、その検知ポイントが存在するブロックの周囲のブロックが全てインターロックされている場合に、前記検知ポイントが設けられたロボット装置に対して移動の停止を要求することを特徴とする干渉回避装置。
［４］  上記［１］から［３］のうちいずれか一項記載の干渉回避装置において、前記ブロックの一辺の距離は前記ロボット装置の動作停止必要距離の４倍の距離に相当するものであり、前記のオフセットベクトル量における方向は、前記直交座標系の次元数（次元数は２または３）に応じて決定されるものであり、前記所定のオフセットベクトル量における前記直交座標系の軸方向成分の長さは、前記ブロックの一辺の距離の半分の距離であることを特徴とする干渉回避装置。
［５］  コンピューターを、複数のロボット装置の動作領域を直交座標系の複数のブロックに分割して得られるブロック分割領域と、前記ブロック分割領域を所定のオフセットベクトル量だけオフセットして得られるオフセットブロック分割領域とをメモリ上に設け、前記複数のブロックそれぞれと、各ブロック位置からオフセットされたブロックとの組み合わせであるブロックセットを管理するブロック分割管理手段と、前記複数のロボット装置のうち一のロボット装置が移動することによって一のロボット装置に設けられた検知ポイントが進入しようとするブロックを含むブロックセットに、他のロボット装置に設けられた検知ポイントが存在しない場合にのみ、前記ブロックセットをインターロックし、前記一のロボット装置に対して前記進入しようとするブロックへの進入を許可するインターロック制御手段と、として機能させるための干渉回避プログラム。
【００１０】
本発明によれば、ロボット装置に干渉領域への侵入権獲得のための優先順位を設ける必要がなく、少ないメモリ使用量でロボット装置の干渉を回避させることができる。また、さらに、ロボット装置の動作停止必要距離を考慮した干渉の回避をさせることができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の第１実施形態である干渉回避装置を適用したロボット制御システムのブロック構成図である。
【図２】同実施形態における、ロボット制御システムの基本的な動作のシーケンスチャートである。
【図３】同実施形態において、干渉回避装置がインターロック制御処理を実行する手順を示すフローチャートである。
【図４】本発明の第２実施形態である干渉回避装置を適用したロボット制御システムのブロック構成図である。
【図５】同実施形態において、カメラ装置の設置状態を模式的に示した図である。
【図６】同実施形態において、干渉回避装置がインターロック要求処理を実行する手順を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明を実施するための形態について、図面を参照して詳細に説明する。
［第１実施形態］
図１は、本発明の第１実施形態である干渉回避装置を適用したロボット制御システムのブロック構成図である。同図に示すように、ロボット制御システム１は、ロボット装置１０−１，１０−２（それぞれを指してロボット装置１０と呼ぶ。）と、ロボット制御装置２０−１，２０−２（それぞれを指してロボット制御装置２０と呼ぶ。）と、干渉回避装置３０とを含んで構成される。
なお、同図では、２組のロボット装置１０およびロボット制御装置２０を備えたロボット制御システムの例を示しているが、ロボット装置１０およびロボット制御装置２０の組数は１組または任意の複数組であってよい。
【００１３】
ロボット装置１０は、固定設置型の産業用ロボットであり、床に固定設置された架台に取り付けられたり天井に取り付けられたりして、可動部であるアームを動かして製造作業を行うものである。
【００１４】
ロボット制御装置２０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と、記憶部と、通信部と（いずれも不図示）を備えたコンピューターの機能を備える。このロボット制御装置２０は、ロボット装置１０を制御する制御プログラムを記憶部に記憶し、ＣＰＵにその制御プログラムを読み出させて実行させることによってロボット装置１０の動作を制御する。
【００１５】
但し、ロボット制御装置２０は、ロボット装置１０の可動部を動かす際には、ロボット装置１０の検知ポイントの三次元位置およびその移動方向に基づき生成する干渉回避制御要求情報を干渉回避装置３０に送信する。そして、ロボット制御装置２０は、干渉回避装置３０から干渉回避制御要求情報の応答である進入許可情報が供給された場合には、ロボット装置１０に対して可動部を動かす制御を行う。また、ロボット制御装置２０は、干渉回避装置３０から干渉回避制御要求情報の応答であるエラー情報が供給された場合には、ロボット装置１０に対して可動部の移動を停止する制御を行う。
【００１６】
ロボット装置１０の検知ポイントとは、ロボット装置１０（例えば、ロボット装置１０−１）の外形表面における他のロボット装置１０（例えば、ロボット装置１０−２）との干渉を検知するための点部分（ポイント）のことである。
また、干渉とは、衝突、接触、または製品安全上のクリアランス許容範囲を満足しない狭範囲での非接触のことである。
【００１７】
検知ポイントは、そのポイント数を多くとるほど干渉回避の精度を高めることができるが、ロボット装置１０の外形表面全域に均一に設けると、干渉回避装置３０における干渉回避制御にかかる計算量が膨大になり負荷が重くなる。そこで、検知ポイントは、ロボット装置１０の干渉のおそれが高い部位に多く設ける等、検知ポイントの配置密度を部位に応じて偏重させることが好ましい。
【００１８】
次に、検知ポイントの三次元位置について説明する。ロボット装置１０が設置された実空間を、ｘ軸、ｙ軸、およびｚ軸の直交座標系（これを実空間座標系と呼ぶ。）で表現する。また、本実施形態における計算上の仮想空間を、ｘ軸、ｙ軸、およびｚ軸の直交座標系（これを仮想空間座標系と呼ぶ。）で表現する。なお、仮想空間座標系は、ロボット制御装置２０がロボット装置１０を制御するときに用いるロボット座標系と同一の座標系であってもよい。
【００１９】
ロボット装置１０の実空間座標系における検知ポイントの座標値である実空間検知ポイント座標値を式（１）のように表す。この式において、ＮＤＰはロボット装置１台あたりの検知ポイントの個数である。また、Ｒ３は、実数の三次元空間を意味する。
【００２０】
【数１】
2011056607.tif 000003
【００２１】
ロボット制御装置２０は、実空間検知ポイント座標値Ｍｊ，０≦ｊ＜ＮＤＰに基づいて、仮想空間座標系における検知ポイント（仮想空間検知ポイント）の座標値である仮想空間検知ポイント座標値を式（２）によって計算する。この式において、ｓは座標系のスケールを調整するためのスケール値である。
【００２２】
【数２】
2011056607.tif 000004
【００２３】
なお、ロボット制御装置２０は、式（２）におけるスケール値ｓを１にして、仮想空間座標系と実空間座標系とを同一の座標系として扱ってもよい。
【００２４】
干渉回避装置３０は、ロボット装置１０−１，１０−２の干渉を回避させるための干渉回避制御を行うものであり、ブロック分割部３１と、インターロック制御部３２と、メモリ部３３とを含んで構成される。
【００２５】
ブロック分割部３１は、ロボット装置１０−１，１０−２の可動部が実空間内で動く最大の実空間可動領域を含む実空間をブロック分割して得られる各実空間ブロックの頂点座標値（実空間ブロック座標値）から仮想空間における各仮想空間ブロックの頂点座標値（仮想空間ブロック座標値）を計算する。そして、ブロック分割部３１は、仮想空間ブロック座標値と、それを所定方向に所定距離だけオフセットさせて得られる所定数の仮想空間オフセットブロック座標値とのセットである仮想空間ブロック座標値セットをメモリ部３３に予め記憶する。
【００２６】
具体的には、実空間ブロック座標値は、ロボット装置１０の実空間可動領域を含む実空間を実空間座標系とした場合の、ロボット装置１０の動作停止処理を開始した位置から実際に動作が停止する位置までの距離である動作停止必要距離ｄの４倍の距離を一辺の長さとする立方体ブロックで、実空間を原点位置を基点にして区切ったときに得られる各頂点の座標値である。つまり、実空間ブロック座標値は、式（３）のように表される。この式において、ｘ，ｙ，ｚはそれぞれ０以上の整数である。
【００２７】
【数３】
2011056607.tif 000005
【００２８】
仮想空間ブロック座標値セットは、実空間ブロック座標値Ｂに基づいて、式（４）により計算される。なお、この式において、ｕ１からｕ７はオフセットの方向および単位距離を示している。
【００２９】
【数４】
2011056607.tif 000006
【００３０】
すなわち、ブロック分割部３１は、実空間ブロック座標値Ｂを、仮想空間ブロック座標値（ｂ０＝ｓ・Ｂ）に置き換え、この仮想空間ブロック座標値ｂ０と、これをオフセットベクトル量（２ｄ・ｓ・ｕｋ，１≦ｋ＜８）だけオフセットさせて得られる７個の仮想空間オフセットブロック座標値（ｂｋ＝ｓ（Ｂ＋２ｄ・ｕｋ），１≦ｋ＜８）とを組み合わせた仮想空間ブロック座標値セットｂｋ，０≦ｋ＜８を、メモリ部３３に予め記憶する。つまり、オフセットベクトル量の仮想空間座標系の軸方向成分の長さは、立方体ブロックの一辺の半分の長さに相当する。
【００３１】
また、仮想空間ブロック座標値セットｂｋ，０≦ｋ＜８は、ロボット制御装置２０の記憶部にも予め記憶される。
【００３２】
インターロック制御部３２は、ロボット制御装置２０から干渉回避制御要求情報を供給されると、その干渉回避制御要求情報と、メモリ部３３に記憶された仮想空間ブロック座標値セットｂｋ，０≦ｋ＜８とに基づいて干渉回避制御を行い、その制御結果に応じて、当該ロボット制御装置２０に対し進入許可情報またはエラー情報を送信する。
【００３３】
インターロック制御部３２は、１つの仮想空間ブロックには同時に複数の進入許可を与えないようにしている。そして、インターロック制御部３２は、仮想空間検知ポイントが進入しようとする仮想空間ブロックである進入対象仮想空間ブロックを含む仮想空間ブロックセットについてのインターロックの可否を判定し、８個全ての仮想空間ブロックのインターロックが可能であると判定した場合にその進入対象仮想空間ブロックをインターロックする。
【００３４】
次に、ロボット制御システム１の動作について説明する。図２は、ロボット制御システム１の基本的な動作のシーケンスチャートである。ロボット制御システム１の通常運用状態において、ロボット制御装置２０は、仮想空間検知ポイント座標値ｍｊ，０≦ｊ＜ＮＤＰを監視し、ｊ番目の仮想空間検知ポイント座標値が示す仮想空間検知ポイントｊが含まれる仮想空間ブロックセットｊの座標値セットである仮想空間ブロック座標値セットｂｊｋ，０≦ｊ＜ＮＤＰ，０≦ｋ＜８を管理している。
【００３５】
ステップＳ２０１において、ロボット制御装置２０は、ＣＰＵの制御プログラムの実行に従って可動部を動かす際に、仮想空間検知ポイント座標値ｍｊ，０≦ｊ＜ＮＤＰが示す仮想空間検知ポイントｊの移動方向Ｄ（ボールド体）ｊ，０≦ｊ＜ＮＤＰと、隣接する別の仮想空間ブロックまでの距離Ｌｊ，０≦ｊ＜ＮＤＰとを計算する。なお、「（ボールド体）」という記載は、それの直前の文字がボールド体であることを指し、当該表現がベクトルであることを意味している。
次に、ロボット制御装置２０は、距離Ｌｊ，０≦ｊ＜ＮＤＰの中から、予め決定された距離閾値よりも短いＮＳ個の距離（これを、距離Ｌｍ，０≦ｍ＜ＮＳ≦ＮＤＰとする。）を抽出すると、これに対応する移動方向Ｄ（ボールド体）ｍ，０≦ｍ＜ＮＳに基づいて、仮想空間検知ポイントｍが進入しようとする進入対象仮想空間ブロックを含む仮想空間ブロックセットｍの座標値セットである進入対象仮想空間ブロック座標値セットｂｍｋ（ハット），０≦ｍ＜ＮＳ，０≦ｋ＜８を推定する。なお、「（ハット）」という記載は、当該表現が推定値であるという意味である。
【００３６】
次に、ステップＳ２０２において、ロボット制御装置２０は、進入対象仮想空間ブロック座標値セットｂｍｋ（ハット），０≦ｍ＜ＮＳ，０≦ｋ＜８を含めた干渉回避制御要求情報を干渉回避装置３０に対して送信する。
次に、ステップＳ２０３において、干渉回避装置３０は、干渉回避制御要求情報を受信すると、干渉回避制御要求情報に含まれた進入対象仮想空間ブロック座標値セットｂｍｋ（ハット），０≦ｍ＜ＮＳ，０≦ｋ＜８を取り出して進入対象仮想空間ブロックセットのインターロック制御を行う。このインターロック制御処理については、詳細を後述する。
次に、ステップＳ２０４において、干渉回避装置３０は、ステップＳ２０３のインターロック制御処理において進入対象仮想空間ブロックセットのインターロックに成功した場合に、進入許可情報をロボット制御装置２０に対して送信する。
【００３７】
ロボット制御装置２０は、進入許可情報を受信すると、ステップＳ２０５において、侵入許可を与えられた仮想空間検知ポイントに対応する可動部に対して移動命令を発行する。
次に、ステップＳ２０６において、ロボット装置１０は、移動命令を受信するとその移動命令に応じた可動部の移動動作を行う。
次に、ステップＳ２０７において、ロボット装置１０は、移動動作を行った応答として移動命令応答をロボット制御装置２０に対して送信する。
【００３８】
次に、ステップＳ２１１からＳ２１３までの処理は、上述したステップＳ２０１からＳ２０３までの処理と同じであるため説明を省略する。
ステップＳ２１４において、干渉回避装置３０は、ステップＳ２１３のインターロック制御処理において進入対象仮想空間ブロックセットのインターロックに失敗した場合に、エラー情報をロボット制御装置２０に対して送信する。
【００３９】
ロボット制御装置２０は、エラー情報を受信すると、ステップＳ２１５において、エラーであると指示された仮想空間検知ポイントに対応する可動部に対して停止命令を発行する。
次に、ステップＳ２１６において、ロボット装置１０は、停止命令を受信するとその停止命令に応じた可動部の停止動作を行う。
次に、ステップＳ２１７において、ロボット装置１０は、停止動作を行った応答として停止命令応答をロボット制御装置２０に対して送信する。
【００４０】
次に、干渉回避装置３０のインターロック制御処理について説明する。図３は、図２のシーケンスチャートのステップＳ２０３，Ｓ２１３の処理において、干渉回避装置３０がｍ番目（０≦ｍ＜ＮＳ）の進入対象仮想空間ブロックセットｍについてのインターロック制御処理を実行する手順を示すフローチャートである。図３において、干渉回避装置３０のインターロック制御部３２は、ロボット制御装置２０から送信された干渉回避制御要求情報を受信すると、干渉回避制御要求情報に含まれたｍ番目の進入対象仮想空間ブロック座標値セットｂｍｋ（ハット），０≦ｍ＜ＮＳ，０≦ｋ＜８を取り出して進入対象仮想空間ブロックセットｍのインターロック制御を開始する。
【００４１】
ステップＳ３０１において、インターロック制御部３２は、ｍ番目（０≦ｍ＜ＮＳ）の仮想空間検知ポイントｍが進入する進入対象仮想空間ブロックセットｍについて、全て（８個）の仮想空間ブロックをチェックしたか否かを判定する。そして、インターロック制御部３２は、未チェックの仮想空間ブロックがあると判定した場合（Ｓ３０１：ＮＯ）は、ステップＳ３０２の処理に移る。
ステップＳ３０２において、インターロック制御部３２は、未チェックの進入対象仮想空間ブロックのうち１つを選択する。
【００４２】
次に、ステップＳ３０３において、インターロック制御部３２は、ｍ番目の仮想空間検知ポイントｍの移動先が別の仮想空間ブロック（別ブロック）であるか否かを判定する。インターロック制御部３２は、移動先が別ブロックでないと判定した場合（Ｓ３０３：ＮＯ）は、現仮想空間ブロックのインターロック状態を保持したままステップＳ３０１の処理に戻り、移動先が別ブロックであると判定した場合（Ｓ３０３：ＹＥＳ）はステップＳ３０４の処理に移る。
【００４３】
ステップＳ３０４において、インターロック制御部３２は、移動先の仮想空間ブロック（移動先ブロック）のインターロックを要求する。
次に、ステップＳ３０５において、インターロック制御部３２は、移動先ブロックが既にインターロックされていなければインターロックしてステップＳ３０６の処理に移り、移動先ブロックが既にインターロックされている場合はステップＳ３０７の処理に移る。
ステップＳ３０６において、インターロック制御３２は、移動元の仮想空間ブロック（移動元ブロック）のインターロックを解除してステップＳ３０１の処理に戻る。
一方、ステップＳ３０７において、インターロック制御部３２は、予め決定した所定回数のインターロック要求のリトライを制御し、その所定回数のリトライに失敗した場合（Ｓ３０７：ＮＯ）はステップＳ３０８の処理に移る。
ステップＳ３０８において、インターロック制御部３２は、エラー情報をロボット制御装置２０に対して送信してこのフローチャートの処理を終了する。これはすなわち、インターロック制御部３２は、仮想空間検知ポイントｍが進入する領域に対応する進入対象仮想空間ブロックセットにおける少なくとも１つの仮想空間ブロックについて、他の仮想空間検知ポイントによってインターロックされていることを示している。
【００４４】
一方、ステップＳ３０１の処理において、インターロック制御部３２は、ｍ番目の仮想空間検知ポイントｍが進入する進入対象仮想空間ブロックセットｍについて、全ての進入対象仮想空間ブロックをチェックしたと判定した場合はステップＳ３０９の処理に移る。
ステップＳ３０９において、インターロック制御部３２は、進入許可情報をロボット制御装置２０に対して送信してこのフローチャートの処理を終了する。このとき、インターロック制御部３２は、仮想空間検知ポイントｍが進入する領域に対応する進入対象仮想空間ブロックセットにおける全ての仮想空間ブロックについて自らがインターロックした状態を保持している。
【００４５】
本実施形態においては、仮想空間ブロックセットの各仮想空間ブロックは、動作停止必要距離ｄの２倍の距離（ブロック一辺を１周期とした場合の半周期分）分ずれているため、ロボット装置１０の可動部が移動する際には、その可動部の移動方向に応じて検知ポイントの進入許可および解除が半周期分ずつずれて起こることになる。よって、本実施形態によれば、２つの検知ポイントの間隔は、半周期に相当する距離を確保することができ、つまり２台のロボット装置１０−１，１０−２が相互に干渉することがない。
【００４６】
なお、本実施形態のインターロック制御処理におけるステップＳ３０７の処理において、インターロック制御部３２は、予め決定した所定時間のインターロック要求のウエイトを制御し、その所定時間のウエイト後のリトライに失敗した場合にステップＳ３０８の処理に移るようにしてもよい。
【００４７】
［第２実施形態］
上述した第１実施形態は、ロボット装置の可動部を動かすことによって各ロボット装置が干渉し合うことを回避するためのインターロック制御について説明した。本発明の第２実施形態では、ロボット装置の可動部の実空間可動領域内に、自らがインターロック制御を行うことのできないもの、例えば作業者等の人間や台車等の移動物体が進入した場合のロボット装置の干渉回避制御について説明する。
【００４８】
図４は、本発明の第２実施形態である干渉回避装置を適用したロボット制御システムのブロック構成図である。同図におけるロボット制御システム１ａにおいて、図１に示した第１実施形態のロボット制御システム１と同一の構成であるものについては同一の符号を付してその説明を省略する。
図４に示すように、ロボット制御システム１ａは、ロボット制御システム１に対してカメラ装置４０−１，４０−２（それぞれを指してカメラ装置４０と呼ぶ。）が新たに加わったものである。また、ロボット制御システム１ａの干渉回避装置３０ａは、ロボット制御システム１の干渉回避装置３０に対して進入物体検出部３４が新たに加わったものである。
【００４９】
カメラ装置４０は、被写体を撮像して時系列的にフレーム画像を出力する撮像装置であり、例えばデジタルビデオカメラである。カメラ装置４０は、ロボット装置１０の実空間可動領域内を撮像するように設置される。図５は、カメラ装置４０の設置状態を模式的に示した図である。同図に示すように、例えば、カメラ装置４０−１，４０−２は、ロボット装置１０−１，１０−２に対して上方および側方から撮像するように設置される。
カメラ装置４０は、撮像して得たフレーム画像を干渉回避装置３０ａに順次供給する。
【００５０】
進入物体検出部３４は、カメラ装置４０から時系列的に供給されたフレーム画像を受信するとその画像から進入物体を検出する。具体的には、進入物体検出部３４は、記憶しておいた過去のフレーム画像と現在のフレーム画像とのフレーム差分データから進入物体を検出する。これにおいて、フレーム差分データにはロボット装置１０の動きによる差分データも含まれるが、ロボット装置１０の動きは既知の動作であるため、進入物体検出部５０は、ロボット装置１０の可動部の動きのみから生じる可動部のフレーム差分データを予め記憶しておき、実際のフレーム差分データから可動部の差分データを差し引いたフレーム差分データについて進入物体の検出を行う。
【００５１】
また、進入物体検出部３４は、進入物体を検出すると、２方向のフレーム画像における進入物体の二次元領域の位置を示す複数の二次元座標値から、進入物体の三次元領域の位置を示す複数の三次元座標値を推定する。そして、これら複数の三次元座標値が示す頂点（仮想空間進入物体ポイント）で構成される進入物体が進入しようとする進入対象仮想空間ブロックを含む進入対象仮想空間ブロックセットｎの座標値セットである進入対象仮想空間ブロック座標値セットｂｎｋ（ハット），０≦ｎ＜ＮＳ，０≦ｋ＜８を推定してインターロック制御部３２に供給する。
【００５２】
次に、干渉回避装置３０ａのインターロック要求処理について説明する。図６は、干渉回避装置３０ａがインターロック要求処理を実行する手順を示すフローチャートである。同図において、干渉回避装置３０ａのインターロック制御部３２は、進入物体検出部３４から供給されたｎ番目の進入対象仮想空間ブロック座標値セットｂｎｋ（ハット），０≦ｎ＜ＮＳ，０≦ｋ＜８を用いて進入対象仮想空間ブロックセットｎのインターロック制御を開始する。
【００５３】
ステップＳ６０１において、インターロック制御部３２は、ｎ番目（０≦ｎ＜ＮＳ）の仮想空間進入物体ポイントｎが進入する進入対象仮想空間ブロックセットｎについて、全て（８個）の仮想空間ブロックをチェックしたか否かを判定する。そして、インターロック制御部３２は、未チェックの仮想空間ブロックがあると判定した場合（Ｓ６０１：ＮＯ）は、ステップＳ６０２の処理に移る。
【００５４】
一方、ステップＳ６０１の処理において、インターロック制御部３２は、ｎ番目の仮想空間進入物体ポイントｎが進入する進入対象仮想空間ブロックセットｎについて、全ての仮想空間ブロックをチェックしたと判定した場合はこのフローチャートの処理を終了する。
【００５５】
ステップＳ６０２において、インターロック制御部３２は、未チェックの進入対象仮想空間ブロックのうち１つを選択する。
ステップＳ６０３において、インターロック制御部３２は、選択した進入対象仮想空間ブロックがインターロックされているか否かを判定する。インターロック制御部３２は、インターロックされていないと判定した場合（Ｓ６０３：ＮＯ）は、ステップＳ６０４の処理に移る。
ステップＳ６０４において、インターロック制御部３２は、選択した進入対象仮想空間ブロックをインターロックしてステップＳ６０１の処理に戻る。
【００５６】
一方、ステップＳ６０３の処理において、インターロック制御部３２は、選択した進入対象仮想空間ブロックがインターロックされていると判定した場合（Ｓ６０３：ＹＥＳ）は、ステップＳ６０５処理に移る。
ステップＳ６０５において、インターロック制御部３２は、選択した進入対象仮想空間ブロックの周囲にインターロックされていない仮想空間ブロックがあるか否かをチェックする。
そして、インターロック制御部３２は、選択した進入対象仮想空間ブロックの周囲にインターロックされていない仮想空間ブロックがあると判定した場合（Ｓ６０５：ＹＥＳ）はステップＳ６０６に移る。
ステップＳ６０６において、インターロック制御部３２は、その仮想空間ブロックをインターロックしているロボット装置１０に向けて、インターロックされていない仮想空間ブロックへの緊急移動要求情報をロボット制御装置２０に対して送信してステップＳ６０１の処理に戻る。
【００５７】
一方、インターロック制御部３２は、ステップＳ６０５の処理において選択した進入対象仮想空間ブロックの周囲にインターロックされていない仮想空間ブロックがないと判定した場合（Ｓ６０５：ＮＯ）はステップＳ６０７に移る。
ステップＳ６０７において、インターロック制御部３２は、その仮想空間ブロックをインターロックしているロボット装置１０に向けた緊急停止要求情報をロボット制御装置２０に対して送信してステップＳ６０１の処理に戻る。
【００５８】
ロボット制御装置２０は、緊急移動要求情報を受信するとロボット装置１０に対して緊急移動命令を送信する。そして、この緊急移動命令を受信したロボット装置１０は、可動部を指定されたブロックに移動させる。
また、ロボット制御装置２０は、緊急停止要求情報を受信するとロボット装置１０に対して緊急停止命令を送信する。そして、この緊急停止命令を受信したロボット装置１０は、可動部の動きを停止させる。
【００５９】
本実施形態によれば、ロボット装置の実空間可動領域内に人間や移動物体が進入した場合に、インターロックされていない空きブロックがあれば、インターロックされたブロックに存在する検知ポイントをその空きブロックに移動させることができ、ロボット装置と人間等との干渉を回避させることができる。
【００６０】
また、本実施形態によれば、ロボット装置の実空間可動領域内に人間や移動物体が進入した場合に、インターロックされたブロックの周囲に空きブロックがなければ、インターロックされたブロックに存在する検知ポイントの動きを停止させることができ、ロボット装置と人間等との衝突の被害を最小限にすることができる。
【００６１】
以上説明したとおり、第１および第２実施形態によれば、ロボット装置に干渉領域への侵入権獲得のための優先順位を設ける必要がない。
また、第１および第２実施形態によれば、ロボット装置の動作停止必要距離を考慮した干渉の回避をさせることができる。しかも、ブロック分割の周期を動作停止必要距離の４倍の距離としたため、メモリ使用量を少なく抑えることができる。
また、第１および第２実施形態によれば、ロボット装置の台数、設置位置、作業内容の変更等のシステムの拡張や変更に対して、柔軟に対応することが容易である。
【００６２】
なお、本実施形態において、カメラ装置の代わりに実空間内に複数のセンサを設置して人間や移動物体を検知するようにしてもよい。
【００６３】
また、第１および第２実施形態は、三次元空間内を移動するロボット装置だけでなく、二次元平面上を移動するロボット装置の干渉回避制御に適用できることは言うまでもない。
【００６４】
また、第１および第２実施形態である干渉回避装置の一部の制御機能をコンピューターで実現するようにしてもよい。この場合、その制御機能を実現するための干渉回避プログラムをコンピューター読み取り可能な記録媒体に記録して、この記録媒体に記録された干渉回避プログラムをコンピューターシステムに読み込ませ、実行することによって実現してもよい。なお、ここでいう「コンピューターシステム」とは、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）や周辺機器のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、光ディスク、メモリカード等の可搬型記録媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピューターシステム内部の揮発性メモリのように、一定時間プログラムを保持するものを含んでもよい。また上記のプログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせにより実現するものであってもよい。
【００６５】
以上、本発明の実施形態について図面を参照して詳述したが、具体的な構成はこの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【００６６】
１，１ａ  ロボット制御システム
１０−１，１０−２  ロボット装置
２０−１，２０−２  ロボット制御装置
３０，３０ａ  干渉回避装置
３１  ブロック分割部
３２  インターロック制御部
３３  メモリ部
３４  進入物体検出部
４０−１，４０−２  カメラ装置
【図１】
2011056607.tif 000007
【図２】
2011056607.tif 000008
【図３】
2011056607.tif 000009
【図４】
2011056607.tif 000010
【図５】
2011056607.tif 000011
【図６】
2011056607.tif 000012