(57)【特許請求の範囲】
【請求項１】
２台のロボットと、
同一のワークに対する協調動作と、互いに独立した個別動作とを前記２台のロボットに実行させる動作制御部と、
前記協調動作を実行する前記２台のロボットのうち１台のロボットでイレギュラー状態が検出されたときに、前記イレギュラー状態を解除するための解除動作を前記２台のロボットに協調して実行させるイレギュラー制御部と、
前記２台のロボットのうちいずれか１台のロボットでイレギュラー状態が検出されたときに、前記２台のロボットに前記解除動作を協調して実行させることが必要であるかを時系列で示す解除時協調情報をユーザの入力に基づいて取得するカスタマイズ部と、
を備え、
前記イレギュラー制御部は、前記２台のロボットのうち１台のロボットで前記イレギュラー状態が検出されたときに、前記解除時協調情報に基づいて、前記２台のロボットに前記解除動作を協調して実行させる協調モードのイレギュラー処理と、前記２台のロボットのうち１台のロボットに前記解除動作を実行させ、他のロボットに前記個別動作を継続させる個別モードのイレギュラー処理とのいずれかを選択するロボットシステム。
【請求項２】
前記２台のロボットを含む３台以上のロボットを備え、
前記カスタマイズ部は、前記３台以上のロボットのいずれのロボットに前記解除動作を協調して実行させるかを時系列で示す解除時協調情報をユーザの入力に基づいて取得し、
前記イレギュラー制御部は、
前記３台以上のロボットのうち１台のロボットで前記イレギュラー状態が検出されたときに、当該１台のロボットを含む少なくとも２台のロボットに前記解除動作を協調して実行させることが前記解除時協調情報により示されている場合に前記協調モードのイレギュラー処理を選択し、当該少なくとも２台のロボットに前記解除動作を協調して実行させる、請求項１記載のロボットシステム。
【請求項３】
先端部と、前記先端部の位置及び姿勢を変更する多関節アームと、をそれぞれ有する２台のロボットと、
同一のワークに対する協調動作を前記２台のロボットに実行させる動作制御部と、
前記協調動作を実行する前記２台のロボットのうち１台のロボットでイレギュラー状態が検出されたときに、当該１台のロボットの前記先端部の位置及び姿勢を基準として、他のロボットの前記先端部の相対位置及び相対姿勢を維持するように、前記イレギュラー状態を解除するための解除動作を前記２台のロボットに協調して実行させるイレギュラー制御部と、を備えるロボットシステム。
【請求項４】
周辺物体との接触に伴うイレギュラー反力をイレギュラー状態として検出する反力センサをそれぞれ有する２台のロボットと、
同一のワークに対する協調動作を前記２台のロボットに実行させる動作制御部と、
前記協調動作を実行する前記２台のロボットのうち１台のロボットで、当該ロボットの反力センサにより前記イレギュラー反力が検出されたときに、当該イレギュラー反力を縮小するように、前記イレギュラー状態を解除するための解除動作を前記２台のロボットに協調して実行させるイレギュラー制御部と、を備えるロボットシステム。
【請求項５】
前記イレギュラー制御部は、前記協調動作を実行する前記２台のロボットのうち１台のロボットで前記イレギュラー反力が検出されたときに、当該イレギュラー反力の検出時点までの動作を、当該検出時点よりも前の時点まで逆再生するように、前記２台のロボットに前記解除動作を実行させる、請求項４記載のロボットシステム。
【請求項６】
前記イレギュラー制御部は、前記協調動作を実行する前記２台のロボットのうち１台のロボットで前記イレギュラー反力が検出されたときに、前記２台のロボットに協調して実行させる前記解除動作の動作量を、当該１台のロボットにおけるイレギュラー反力の大きさに基づいて変更する、請求項４又は５記載のロボットシステム。
【請求項７】
前記イレギュラー制御部は、前記協調動作を実行する前記２台のロボットのうち１台のロボットで検出された前記イレギュラー反力を縮小するように、前記２台のロボットに解除動作を協調して実行させた後に、当該１台のロボットの前記反力センサによりイレギュラー反力が再度検出されているときに、当該イレギュラー反力を更に縮小するように、前記２台のロボットに更なる解除動作を協調して実行させる、請求項６記載のロボットシステム。
【請求項８】
前記動作制御部は、互いに独立した個別動作を前記２台のロボットに更に実行させ、
前記イレギュラー制御部は、
前記個別動作を実行する２台のロボットのうち１台のロボットで前記イレギュラー状態が検出されたときに、当該１台のロボットに前記解除動作を実行させ、他のロボットに前記個別動作を継続させる、請求項３〜７のいずれか一項記載のロボットシステム。
【請求項９】
前記動作制御部は、時系列の複数の動作指令を前記２台のロボットごとに含む動作プログラムに従って前記２台のロボットを動作させ、
前記イレギュラー制御部は、
前記２台のロボットのうち１台のロボットで前記イレギュラー状態が検出されたときに、前記２台のロボットに対する前記動作指令の関係に基づいて、前記２台のロボットに前記解除動作を協調して実行させる協調モードのイレギュラー処理と、前記２台のロボットのうち１台のロボットに前記解除動作を実行させ、他のロボットに前記個別動作を継続させる個別モードのイレギュラー処理とのいずれかを選択する、請求項８記載のロボットシステム。
【請求項１０】
前記２台のロボットを含む３台以上のロボットを備え、
前記動作制御部は、時系列の複数の動作指令を前記３台以上のロボットごとに含む動作プログラムに従って前記３台以上のロボットを動作させ、
前記イレギュラー制御部は、
前記３台以上のロボットのうち１台のロボットで前記イレギュラー状態が検出されたときに、当該１台のロボットを含む少なくとも２台のロボットに対する動作指令が協調関係にある場合に前記協調モードのイレギュラー処理を選択し、当該少なくとも２台のロボットに前記解除動作を協調して実行させる、請求項９記載のロボットシステム。
【請求項１１】
前記動作プログラムは、前記２台のロボットの動作指令が協調関係にあるかを時系列で示す協調情報を更に含み、
前記イレギュラー制御部は、
前記２台のロボットのうち１台のロボットで前記イレギュラー状態が検出されたときに、協調情報に基づいて前記協調モードのイレギュラー処理と前記個別モードのイレギュラー処理とのいずれかを選択する、請求項９記載のロボットシステム。
【請求項１２】
前記２台のロボットを含む３台以上のロボットを備え、
前記動作制御部は、時系列の複数の動作指令を前記３台以上のロボットごとに含む動作プログラムに従って前記３台以上のロボットを動作させ、
前記動作プログラムは、前記３台のロボットのいずれのロボットの動作指令が協調関係にあるかを時系列で示す協調情報を更に含み、
前記イレギュラー制御部は、
前記３台以上のロボットのうち１台のロボットで前記イレギュラー状態が検出されたときに、当該１台のロボットを含む少なくとも２台のロボットの動作指令が協調関係にあることが前記協調情報により示されている場合に前記協調モードのイレギュラー処理を選択し、当該少なくとも２台のロボットに前記解除動作を協調して実行させる、請求項１１記載のロボットシステム。
【請求項１３】
前記動作制御部は、前記同一のワークを協働して保持し、搬送する協調動作を前記２台のロボットに実行させる、請求項１〜１２のいずれか一項記載のロボットシステム。
【請求項１４】
複数台の前記ロボットのそれぞれは、人協働ロボットである、請求項１〜１３のいずれか一項記載のロボットシステム。
【請求項１５】
前記動作制御部及び前記イレギュラー制御部は、前記ロボットの目標姿勢と現在姿勢との偏差を縮小するように当該ロボットを動作させることを、前記２台のロボットに対して同じ制御周期で繰り返し実行する、請求項１〜１４のいずれか一項記載のロボットシステム。
【請求項１６】
同一のワークに対する他のロボットとの協調動作をロボットに実行させる動作制御部と、
前記ロボットでイレギュラー状態が検出された場合に、前記イレギュラー状態を解除するための解除動作を前記ロボットに実行させるイレギュラー制御部と、
前記解除動作に協調する解除動作を前記他のロボットに実行させることを前記他のロボットのコントローラに要求する解除動作要求部と、
前記ロボットでイレギュラー状態が検出されたときに、前記他のロボットに前記解除動作を前記ロボットと協調して実行させることが必要であるかを時系列で示す解除時協調情報をユーザの入力に基づいて取得するカスタマイズ部と、
を備え、
前記解除動作要求部は、前記ロボットで前記イレギュラー状態が検出されたときに、前記解除時協調情報に基づいて、前記解除動作に協調する解除動作を前記他のロボットに実行させることを前記他のロボットのコントローラに要求する協調モードのイレギュラー処理と、前記他のロボットに、前記ロボットの動作から独立した個別動作を継続させる個別モードのイレギュラー処理とのいずれかを選択するコントローラ。
【請求項１７】
同一のワークに対する他のロボットとの協調動作をロボットに実行させる動作制御部と、
前記ロボットでイレギュラー状態が検出された場合に、前記イレギュラー状態を解除するための解除動作を前記ロボットに実行させるイレギュラー制御部と、
前記解除動作に協調する解除動作を前記他のロボットに実行させることを前記他のロボットのコントローラに要求する解除動作要求部と、を備え、
前記ロボット及び前記他のロボットのそれぞれは、先端部と、前記先端部の位置及び姿勢を変更する多関節アームとを有し、
前記解除動作要求部は、前記ロボットでイレギュラー状態が検出されたときに、当該ロボットの前記先端部の位置及び姿勢を基準として、前記他のロボットの前記先端部の相対位置及び相対姿勢を維持するように、前記ロボットが実行する前記解除動作に協調する解除動作を前記他のロボットに実行させることを前記他のロボットのコントローラに要求するコントローラ。
【請求項１８】
周辺物体との接触に伴うイレギュラー反力をイレギュラー状態として検出する反力センサを有するロボットに、同一のワークに対する他のロボットとの協調動作を実行させる動作制御部と、
前記反力センサにより前記イレギュラー反力が検出されたときに、当該イレギュラー反力を縮小するように、前記イレギュラー状態を解除するための解除動作を前記ロボットに実行させるイレギュラー制御部と、
前記解除動作に協調する解除動作を前記他のロボットに実行させることを前記他のロボットのコントローラに要求する解除動作要求部と、を備えるコントローラ。
【請求項１９】
前記イレギュラー制御部は、前記他のロボットのコントローラからの要求に従って、前記他のロボットの解除動作に協調する前記解除動作を前記ロボットに実行させる、請求項１６〜１８のいずれか一項記載のコントローラ。
【請求項２０】
同一のワークに対する協調動作と、互いに独立した個別動作とを２台のロボットに実行させることと、
前記２台のロボットのうち１台のロボットでイレギュラー状態が検出されたときに、前記イレギュラー状態を解除するための解除動作を前記２台のロボットに協調して実行させることが必要であるかを時系列で示す解除時協調情報をユーザの入力に基づいて取得することと、
前記協調動作を実行する前記２台のロボットのうち１台のロボットでイレギュラー状態が検出されたときに、前記解除時協調情報に基づいて、前記イレギュラー状態を解除するための解除動作を前記２台のロボットに協調して実行させる協調モードのイレギュラー処理と、前記２台のロボットのうち１台のロボットに前記解除動作を実行させ、他のロボットに前記個別動作を継続させる個別モードのイレギュラー処理とのいずれかを選択することと、を含む制御方法。
【請求項２１】
先端部と、前記先端部の位置及び姿勢を変更する多関節アームと、をそれぞれ有する２台のロボットに、同一のワークに対する協調動作を実行させることと、
前記協調動作を実行する前記２台のロボットのうち１台のロボットでイレギュラー状態が検出されたときに、当該１台のロボットの前記先端部の位置及び姿勢を基準として、他のロボットの前記先端部の相対位置及び相対姿勢を維持するように、前記イレギュラー状態を解除するための解除動作を前記２台のロボットに協調して実行させることと、を含む制御方法。
【請求項２２】
周辺物体との接触に伴うイレギュラー反力をイレギュラー状態として検出する反力センサをそれぞれ有する２台のロボットに、同一のワークに対する協調動作を実行させることと、
前記協調動作を実行する前記２台のロボットのうち１台のロボットで、当該ロボットの反力センサによりイレギュラー反力が検出されたときに、当該イレギュラー反力を縮小するように、前記イレギュラー状態を解除するための解除動作を前記２台のロボットに協調して実行させることと、を含む制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ロボットシステム、コントローラ及び制御方法に関する。
【背景技術】
【０００２】
特許文献１には、ロボットに作用する外力が第１の条件を満たした場合に、ロボットの動作軌跡を反転させることでロボットを退避させる反転退避モードを実行し、反転退避モードの実行状況が第２の条件を満たした場合には、外力が小さくなるようにロボットを退避させる外力低減退避モードを実行するロボットシステムが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１９−０８１２３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本開示は、協調動作する複数台のロボットにおけるイレギュラー状態の解除と、複数台のロボットの協調状態の継続との両立に有効なロボットシステムを提供する。
【課題を解決するための手段】
【０００５】
本開示の一側面に係るロボットシステムは、２台のロボットと、同一のワークに対する協調動作を２台のロボットに実行させる動作制御部と、協調動作を実行する２台のロボットのうち１台のロボットでイレギュラー状態が検出されたときに、イレギュラー状態を解除するための解除動作を２台のロボットに協調して実行させるイレギュラー制御部と、を備える。
【０００６】
本開示の他の側面に係るコントローラは、同一のワークに対する他のロボットとの協調動作をロボットに実行させる動作制御部と、ロボットでイレギュラー状態が検出された場合に、イレギュラー状態を解除するための解除動作をロボットに実行させるイレギュラー制御部と、解除動作に協調する解除動作を他のロボットに実行させることを他のロボットのコントローラに要求する解除動作要求部と、を備える。
【０００７】
本開示の更に他の側面に係る制御方法は、同一のワークに対する協調動作を２台のロボットに実行させることと、協調動作を実行する２台のロボットのうち１台のロボットでイレギュラー状態が検出されたときに、イレギュラー状態を解除するための解除動作を２台のロボットに協調して実行させることと、を含む。
【発明の効果】
【０００８】
本開示によれば、協調動作する複数台のロボットにおけるイレギュラー状態の解除と、複数台のロボットの協調状態の継続との両立に有効なロボットシステムを提供することができる。
【図面の簡単な説明】
【０００９】
【図１】ロボットシステムの全体構成を示す模式図である。
【図２】ロボットの構成を示す模式図である。
【図３】コントローラのハードウェア構成を例示するブロック図である。
【図４】ロボットの動作制御手順を例示するフローチャートである。
【図５】イレギュラー処理手順を例示するフローチャートである。
【図６】完全協調モードのイレギュラー処理手順を例示するフローチャートである。
【図７】完全協調モードのイレギュラー処理手順を例示するフローチャートである。
【図８】個別モードのイレギュラー処理手順を例示するフローチャートである。
【図９】個別モードのイレギュラー処理手順を例示するフローチャートである。
【図１０】混在モードのイレギュラー処理手順を例示するフローチャートである。
【図１１】混在モードのイレギュラー処理手順を例示するフローチャートである。
【図１２】ロボットシステムの変形例を示す模式図である。
【図１３】図１０のコントローラのハードウェア構成を示すブロック図である。
【図１４】コントローラの他の変形例を例示するブロック図である。
【発明を実施するための形態】
【００１０】
以下、実施形態について、図面を参照しつつ詳細に説明する。説明において、同一要素又は同一機能を有する要素には同一の符号を付し、重複する説明を省略する。
【００１１】
〔ロボットシステム〕
図１に示すように、ロボットシステム１は、３台のロボット１０と、コントローラ１００とを備える。なお、ロボットシステム１が備えるロボット１０の台数は、少なくとも２台以上であればよく、３台に限られない。例えば、ロボットシステム１が備えるロボット１０の台数は２台であってもよいし、４台以上であってもよい。
【００１２】
３台のロボット１０のそれぞれは、ワークの保持・搬送を含む様々な作業を実行可能な汎用ロボットである。例えばロボット１０は、図２に示すように、６軸の垂直ロボットであり、基部１１と、先端部１２と、多関節アーム２０とを有する。基部１１は、作業エリアにおいて例えば床面に設置されている。基部１１は、移動台車の上に設置されていてもよい。
【００１３】
先端部１２は、ワークに対する作業用のツール１３を含む。ツール１３の具体例としては、ワークを保持するためのハンド、溶接トーチ、塗装用のガン、ねじ締めツール等が挙げられる。先端部１２のツール１３は、ロボット１０が実行する作業内容に応じて交換可能である。
【００１４】
多関節アーム２０は、基部１１と先端部１２とを接続し、基部１１に対する先端部１２の位置及び姿勢を変更する。多関節アーム２０は複数の関節を有し、当該複数の関節の角度を変更してロボット１０の姿勢を変更する。これにより、基部１１に対する先端部１２の位置及び姿勢が変更される。
【００１５】
例えば多関節アーム２０は、旋回部２１と、下アーム２２と、上アーム２３と、手首部２６と、アクチュエータ４１，４２，４３，４４，４５，４６と、角度センサ５１，５２，５３，５４，５５，５６とを有する。
【００１６】
旋回部２１は、鉛直な軸線Ａｘ１まわりに旋回可能となるように、基部１１の上部に設けられている。すなわち多関節アーム２０は、軸線Ａｘ１まわりに旋回部２１を旋回可能とする関節３１を有する。
【００１７】
下アーム２２は、軸線Ａｘ１に交差（例えば直交）する軸線Ａｘ２まわりに揺動可能となるように旋回部２１に接続されている。すなわち多関節アーム２０は、軸線Ａｘ２まわりに下アーム２２を揺動可能とする関節３２を有する。なお、ここでの交差とは、所謂立体交差のように、互いにねじれの関係にある場合も含む。以下においても同様である。
【００１８】
上アーム２３は、軸線Ａｘ１に交差する軸線Ａｘ３まわりに揺動可能となるように、下アーム２２の端部に接続されている。すなわち多関節アーム２０は、軸線Ａｘ３まわりに上アーム２３を揺動可能とする関節３３を有する。軸線Ａｘ３は軸線Ａｘ２に平行であってもよい。
【００１９】
上アーム２３の先端部は、上アーム２３の中心に沿う軸線Ａｘ４まわりに旋回可能となっている。すなわち多関節アーム２０は、軸線Ａｘ４まわりに上アーム２３の先端部を旋回可能とする関節３４を有する。換言すると、上アーム２３の先端部２５は、上アーム２３の基端部２４に対して旋回可能である。
【００２０】
手首部２６は、軸線Ａｘ４に交差（例えば直交）する軸線Ａｘ５まわりに揺動可能となるように上アーム２３の先端部２５に接続されている。すなわち多関節アーム２０は、軸線Ａｘ５まわりに手首部２６を揺動可能とする関節３５を有する。
【００２１】
先端部１２は、手首部２６の中心に沿う軸線Ａｘ６まわりに旋回可能となるように、手首部２６の先端部に接続されている。すなわち多関節アーム２０は、軸線Ａｘ６まわりに先端部１２を旋回可能とする関節３６を有する。
【００２２】
アクチュエータ４１，４２，４３，４４，４５，４６は、例えば電動モータを動力源とし、多関節アーム２０の複数の可動部をそれぞれ駆動する。例えばアクチュエータ４１は、軸線Ａｘ１まわりに旋回部２１を旋回させ、アクチュエータ４２は軸線Ａｘ２まわりに下アーム２２を揺動させ、アクチュエータ４３は軸線Ａｘ３まわりに上アーム２３を揺動させ、アクチュエータ４４は軸線Ａｘ４まわりに上アーム２３の先端部２５を旋回させ、アクチュエータ４５は軸線Ａｘ５まわりに手首部２６を揺動させ、アクチュエータ４６は軸線Ａｘ６まわりに先端部１２を旋回させる。すなわちアクチュエータ４１〜４６は、関節３１〜３６をそれぞれ駆動する。
【００２３】
角度センサ５１，５２，５３，５４，５５，５６は、例えばロータリーエンコーダ、レゾルバ又はポテンショメータ等であり、関節３１，３２，３３，３４，３５，３６の動作角度をそれぞれ検出する。角度センサ５１，５２，５３，５４，５５，５６は、関節３１，３２，３３，３４，３５，３６の角度を直接検出するように設けられていてもよいし、アクチュエータ４１，４２，４３，４４，４５，４６の動力源である電動モータの出力軸の動作角度を検出するように設けられていてもよい。電動モータと関節３１，３２，３３，３４，３５，３６との間に減速機が設けられている場合、電動モータの出力軸の動作角度に、減速比に応じた換算を施すことによって関節３１，３２，３３，３４，３５，３６の動作角度が得られる。
【００２４】
ロボットシステム１は、ロボット１０を人と協働させる人協働型のシステムであってもよい。換言すると、ロボット１０は、人協働ロボットであってもよい。人協働ロボットとは、人協働型のシステムにおいて人と協働するロボットである。人と協働するとは、人の立ち入りが制限されていない空間で作業を行うことを意味する。人協働ロボットには、人との接近又は接触を検出し得ることが求められる。
【００２５】
一例として、ロボット１０は、周辺物体との接触に伴う反力（以下、「イレギュラー反力」という。）を検出する反力センサ６０を更に有する。なお、「周辺物体」は人体を含む。例えば反力センサ６０は、ロボット１０の少なくとも一つの関節に作用するトルクを検出するトルクセンサを含む。例えば反力センサ６０は、ロボット１０の関節３１，３２，３３，３４，３５，３６に作用するトルクをそれぞれ検出するトルクセンサ６１，６２，６３，６４，６５，６６を含む。トルクセンサ６１，６２，６３，６４，６５，６６は、例えばひずみゲージ式等のトルクセンサである。なお、トルクセンサ６１，６２，６３，６４，６５，６６による検出値には、ロボット１０自体の慣性により生じるトルク（以下、「慣性トルク」という。）が含まれる場合がある。この場合、ロボット１０の各部の形状、寸法及び重量に基づく動力学演算により慣性トルクを算出し、当該算出結果をトルクセンサ６１，６２，６３，６４，６５，６６による検出値から差し引くことによってイレギュラー反力が得られる。
【００２６】
反力センサ６０は、上記トルクセンサに代えて、ロボット１０の外皮に作用する力を検出する圧力センサを含んでいてもよい。反力センサ６０は、上記トルクセンサ及び上記圧力センサの両方を含んでいてもよい。
【００２７】
ロボット１０は、反力センサ６０に代えて、周辺物体との接近を非接触で検出する接近センサを有してもよい。接近センサの具体例としては、赤外線センサ、超音波センサ、カメラ等が挙げられる。ロボット１０は、上記反力センサ６０及び上記接近センサの両方を有してもよい。
【００２８】
以上に説明したロボット１０の構成はあくまで一例である。ロボット１０は、基部１１に対する先端部１２の位置及び姿勢を調節し得る限りいかに構成されていてもよい。例えばロボット１０は、上記６軸の垂直多関節ロボットに冗長軸を追加した７軸のロボットであってもよい。また、ロボット１０は所謂スカラー型のロボットであってもよい。
【００２９】
また、ロボットシステム１は、２台のロボット１０の一例として、双腕型ロボットを備えていてもよい。双腕型ロボットは、可動型の胴部と、胴部に装着された２台のロボット１０とを有する。胴部に装着された２台のロボット１０は、双腕型ロボットにおける双腕に相当する。
【００３０】
図１に戻り、コントローラ１００は、同一のワークに対する協調動作を少なくとも２台のロボット１０に実行させることと、協調動作を実行する少なくとも２台のロボット１０のうち１台のロボット１０でイレギュラー状態が検出されたときに、イレギュラー状態を解除するための解除動作を２台のロボット１０に協調して実行させることと、を実行するように構成されている。
【００３１】
協調動作とは、一方の動作が他方の動作に影響を及ぼす関係にて動作することを意味する。ここでの動作には、停止状態を保つことも含まれる。協調動作は、一方の動作が他方の動作に影響を及ぼす関係にて同時に動く動作であってもよい。このような協調動作の具体例としては、少なくとも２台のロボット１０が同一のワークを協働して保持し、搬送する動作、いずれかのロボット１０がワークの姿勢を変更し他のロボット１０が当該ワークに加工を施す動作等が挙げられる。
【００３２】
なお、いずれかのロボット１０が保持するワーク（以下、「第１ワーク」という。）に、他のロボット１０が保持するワーク（以下、「第２ワーク」という。）を取り付ける動作も「同一のワークに対する協調動作」に含まれる。第１ワークを保持するロボット１０は第１ワークを介して第２ワークに対する動作を行い、第２ワークを保持するロボット１０は第２ワークを介して第１ワークに対する動作を行っているためである。
【００３３】
コントローラ１００は、互いに独立した個別動作を少なくとも２台のロボット１０に更に実行させることと、個別動作を実行する少なくとも２台のロボット１０のうち１台のロボット１０でイレギュラー状態が検出されたときに、当該１台のロボット１０に解除動作を実行させ、他のロボット１０に個別動作を継続させることとを更に実行するように構成されていてもよい。
【００３４】
互いに独立した個別動作とは、一方の動作が他方の動作に影響を及ぼさない関係にて個別に動作することを意味する。このような個別動作の具体例としては、２台のロボット１０が２つのワークをそれぞれ搬送する動作等が挙げる。
【００３５】
なお、作業エリアに固定された同一のワークにおける２つの部位に対し、２台のロボット１０がそれぞれ加工を施す動作も個別動作に含まれる。当該ワークが作業エリアに固定されていれば、一方のロボット１０の動作が他方のロボット１０の動作に影響を及ぼさないためである。
【００３６】
３台のロボット１０のうちいずれか１台のロボット１０（以下、「ロボット１０Ａ」という。）が、他の１台のロボット１０（以下、「ロボット１０Ｂ」という。）と協調動作をするが、更に他の１台のロボット１０（以下、「ロボット１０Ｃ」という。）とは協調動作をしない場合、ロボット１０Ａとロボット１０Ｂとは協調動作を実行する２台のロボットであり、ロボット１０Ａと１０Ｃとは互いに独立した個別動作を実行する２台のロボットである。ロボット１０Ｂとロボット１０Ｃも互いに独立した個別動作を実行する２台のロボットである。すなわち、「個別動作」とは、２台のロボット１０の動作の関係を意味するに過ぎず、いかなるロボット１０とも協調動作していないことを意味するわけではない。以下、協調動作及び個別動作の両方にあてはまる説明においては、これらを総称して「通常動作」という。
【００３７】
ここで、イレギュラー状態とは、通常動作の継続が許容されない状態を意味する。イレギュラー状態の具体例としては、接近が想定されていない周辺物体への接近、接触が想定されていない周辺物体への接触等が挙げられる。
【００３８】
イレギュラー状態を解除するとは、イレギュラー状態が検出されない状態にすることを意味する。例えば、イレギュラー状態が周辺物体への接近である場合、周辺物体への接近が検出されない程度まで周辺物体から離すことがイレギュラー状態を解除することに相当する。イレギュラー状態が周辺物体への接触である場合、周辺物体から離すことがイレギュラー状態の解除に相当する。なお、後述のイレギュラー反力のように、大きさを表し得るイレギュラー状態の場合、大きさを縮小することもイレギュラー状態の解除に相当する。
【００３９】
２台のロボットに解除動作を協調して実行させるとは、同一のワークに対する協調が保たれるように２台のロボットに解除動作を実行させることを意味する。同一のワークに対する協調が保たれることの具体例としては、同一のワークを協働して保持している２台のロボットにおいて、当該ワークの保持が維持されることが挙げられる。
【００４０】
例えばコントローラ１００は、機能上の構成（以下、「機能ブロック」という。）として、動作プログラム記憶部１１１と、動作制御部１１２と、イレギュラー制御部１１３とを有する。
【００４１】
動作プログラム記憶部１１１は、上記協調動作又は個別動作をロボット１０に実行させるための動作プログラムを記憶している。動作プログラムは、時系列の複数の動作指令を３台のロボットごとに含む。例えば動作プログラムは、通常動作における実行順序（以下、「通常順序」という。）で並ぶ複数の動作指令を３台のロボットごとに含む。動作指令は、各ロボット１０の先端部１２の位置・姿勢目標値、当該位置・姿勢目標値までの変位速度、及び当該位置・姿勢目標値までの補間方式等を含む。補間方式の具体例としては、現在位置・姿勢から位置・姿勢目標値までの変位を線形にする線形補間等が挙げられる。
【００４２】
複数の動作指令は、協調動作指令を含む。協調動作指令は、少なくとも１台の他のロボット１０との協調動作を実行させるための動作指令である。協調動作指令は、１台のロボット１０に対する動作指令と、他のロボット１０に対する協調指令とを含んでいてもよい。協調指令は、少なくとも他のロボット１０の識別情報を含む。
【００４３】
１台のロボット１０の動作指令と、協調指令とに基づけば、他のロボット１０に協調動作を実行させるための動作指令を演算により自動生成することが可能である。このため、動作プログラムは、協調指令により指定された他の協調ロボット１０に対する動作指令を含んでいなくてもよい。
【００４４】
協調指令によれば、３台のロボット１０のうち少なくとも２台のロボット１０が協調動作をするか否かと、いずれのロボット１０が協調動作をするのかとが時系列で示されることとなる。従って、協調指令は、少なくとも２台のロボット１０の動作指令が協調関係（協調動作を実行する関係）にあるかを時系列で示す情報（以下、「協調情報」という。）の一例である。また、協調指令は、３台のロボット１０のいずれのロボット１０の動作指令が協調関係にあるかを時系列で示す協調情報の一例である。
【００４５】
複数の動作指令は、個別動作指令を更に含んでいてもよい。個別動作指令は、他のロボット１０の動作から独立した個別動作を実行させるための動作指令である。
【００４６】
動作制御部１１２は、同一のワークに対する協調動作を少なくとも２台のロボット１０に実行させる。動作制御部１１２は、互いに独立した個別動作を少なくとも２台のロボットに更に実行させてもよい。例えば動作制御部１１２は、動作プログラム記憶部１１１が記憶する動作プログラムに従って３台のロボット１０に通常動作を実行させる。より具体的に、動作制御部１１２は、動作指令に従って先端部１２を変位させるようにロボット１０を制御することを、３台のロボット１０に対し上記通常順序で順次実行する。
【００４７】
動作制御部１１２は、３台のロボット１０に対する制御を同じ制御周期で繰り返し実行する。例えば動作制御部１１２は、動作指令に基づくロボット１０の目標姿勢と、ロボット１０の現在姿勢との偏差を縮小するようにロボット１０を動作させることを、３台のロボット１０に対し同じ制御周期で繰り返し実行する。例えば動作制御部１１２は、各制御周期において、上記動作指令に対応する関節３１，３２，３３，３４，３５，３６の角度目標値を逆運動学演算により算出し、関節３１，３２，３３，３４，３５，３６の角度目標値と関節３１，３２，３３，３４，３５，３６の現在角度（角度センサ５１，５２，５３，５４，５５，５６による検出値）との偏差を縮小するようにアクチュエータ４１，４２，４３，４４，４５，４６を駆動する。
【００４８】
動作制御部１１２は、動作プログラムにおける上記協調動作指令に従って少なくとも２台のロボット１０に協調動作を実行させる。例えば動作制御部１１２は、同一のワークを協働して保持し、搬送する協調動作を少なくとも２台のロボット１０に実行させる。動作制御部１１２は、動作プログラムにおける上記個別動作指令に従って３台のロボット１０のそれぞれに個別動作を実行させる。
【００４９】
イレギュラー制御部１１３は、３台のロボット１０のうちいずれか１台のロボット１０でイレギュラー状態が検出されたときに、少なくとも当該１台のロボット１０（以下、「イレギュラーロボット」という。）に解除動作を実行させる。イレギュラー制御部１１３は、イレギュラーロボットの姿勢が、イレギュラー状態の検出時点の姿勢から変化するように、イレギュラーロボットに解除動作を実行させてもよい。
【００５０】
イレギュラー状態が検出されることの具体例としては、反力センサ６０によりイレギュラー反力が検出されること、上記接近センサによりイレギュラー接近が検出されること等が挙げられる。イレギュラー反力とは、通常動作の継続が許容されないレベルの反力を意味する。イレギュラー接近とは、通常動作の継続が許容されないレベルの接近を意味する。
【００５１】
例えばイレギュラー制御部１１３は、３台のロボット１０のうちいずれか１台のロボット１０の反力センサ６０によりイレギュラー反力が検出されたときに当該ロボット１０をイレギュラーロボットとし、当該イレギュラー反力を縮小するようにイレギュラーロボットに解除動作を実行させてもよい。
【００５２】
例えば、イレギュラー制御部１１３は、イレギュラー反力の検出時点までのイレギュラーロボットの通常動作を、当該検出時点よりも前の時点まで逆再生するように、イレギュラーロボットに解除動作を実行させる。例えば、イレギュラー制御部１１３は、動作指令に従って先端部１２を変位させるようにロボット１０を制御することを、イレギュラー反力の検出時点から上記通常順序の逆順序で順次実行する。イレギュラー反力は、通常動作の結果生じたものなので、通常動作を逆再生することによりイレギュラー反力を縮小させることができる。以下、通常動作の逆再生による解除動作を「逆再生動作」という。
【００５３】
イレギュラー制御部１１３は、イレギュラー反力の作用部位及び作用方向を算出し、当該作用部位を当該作用方向に沿って変位させるように、イレギュラーロボットに解除動作を実行させてもよい。例えばイレギュラー制御部１１３は、上記作用部位を上記作用方向に沿って所定距離又は所定時間移動させるように解除動作用の動作プログラム（以下、「解除用動作プログラム」という。）を算出し、解除動作プログラムに従ってイレギュラーロボットに解除動作を実行させる。
【００５４】
解除用動作プログラムは、時系列の複数の動作指令（以下、「解除用動作指令」という。）を含む。例えば解除用動作プログラムは、解除動作における実行順序（以下、「解除順序」という。）で並ぶ複数の解除用動作指令を含む。解除用動作指令は、先端部１２の位置・姿勢目標値、当該位置・姿勢目標値までの変位速度、及び当該位置・姿勢目標値までの補間方式等を含む。
【００５５】
イレギュラー制御部１１３は、解除用動作プログラムに従ってイレギュラーロボットに解除動作を実行させる。より具体的に、イレギュラー制御部１１３は、解除用動作指令に従って先端部１２を変位させるようにイレギュラーロボットを制御することを、上記解除順序で順次実行する。以下、上記作用部位を上記作用方向に沿って移動させる解除動作を「反力追従動作」という。
【００５６】
イレギュラー制御部１１３は、イレギュラーロボットの解除動作の動作量を、イレギュラー反力の大きさに基づいて変更してもよい。例えばイレギュラー制御部１１３は、イレギュラー反力が大きくなるのに応じてイレギュラーロボットの解除動作の動作量を大きくしてもよい。逆再生動作の場合、イレギュラー制御部１１３は、イレギュラー反力の検出時点からの通常動作の逆再生時間をイレギュラー反力が大きくなるのに応じて長くしてもよい。反力追従動作の場合、イレギュラー制御部１１３は、上記作用部位の上記作用方向への変位距離又は変位時間をイレギュラー反力が大きくなるのに応じて長くしてもよい。
【００５７】
また、イレギュラー制御部１１３は、イレギュラー反力を縮小するように所定の動作量でイレギュラーロボットに解除動作を実行させた後に、イレギュラーロボットの反力センサ６０によりイレギュラー反力が再度検出されているときに、当該イレギュラー反力を更に縮小するようにイレギュラーロボットに更なる解除動作を実行させてもよい。
【００５８】
逆再生動作の場合、イレギュラー制御部１１３は、イレギュラー反力の検出時点から所定時間前の時点までの逆再生動作をイレギュラーロボットに実行させた後に、イレギュラーロボットの反力センサ６０によりイレギュラー反力が再度検出されているときに、更に前の時点までの解除動作をイレギュラーロボットに更に実行させてもよい。
【００５９】
反力追従動作の場合、イレギュラー制御部１１３は、上記作用部位を上記作用方向に所定距離又は所定時間移動させた後に、イレギュラーロボットの反力センサ６０によりイレギュラー反力が再度検出されているときに、イレギュラーロボットに更なる反力追従動作を実行させてもよい。
【００６０】
イレギュラー制御部１１３は、イレギュラー反力の再確認の前後で、解除動作の方式を切り替えてもよい。例えばイレギュラー制御部１１３は、イレギュラー反力の検出時点から所定時間前の時点までの逆再生動作をイレギュラーロボットに実行させた後に、イレギュラーロボットの反力センサ６０によりイレギュラー反力が再度検出されているときに、反力追従動作をイレギュラーロボットに実行させてもよい。
【００６１】
協調動作を実行する少なくとも２台のロボット１０（以下、「複数台の協調ロボット」という。）のうち１台の協調ロボットでイレギュラー状態が検出された場合、イレギュラー制御部１１３は、イレギュラー状態を解除するための解除動作を複数台の協調ロボットに協調して実行させる。例えばイレギュラー制御部１１３は、イレギュラーロボットの先端部の位置及び姿勢を基準として、他の協調ロボットの先端部１２の相対位置及び相対姿勢を維持するように、複数台の協調ロボットに解除動作を協調して実行させる。イレギュラーロボットに逆再生動作を実行させる場合、イレギュラー制御部１１３は、当該逆再生動作に同期して他の協調ロボットにも逆再生動作を実行させる。
【００６２】
イレギュラーロボットに反力追従動作を実行させる場合、イレギュラー制御部１１３は、他の協調ロボットに対する複数の解除用動作指令を更に含む解除用動作プログラムを算出する。例えばイレギュラー制御部１１３は、反力追従動作を実行するイレギュラーロボットの先端部の位置及び姿勢を基準として、他の協調ロボットの先端部１２の相対位置及び相対姿勢を維持するように、他の協調ロボットに対する解除用動作指令を算出する。以下、イレギュラーロボットに対する解除用動作指令を「マスター側動作指令」といい、他の協調ロボットに対する解除用動作指令を「スレーブ側動作指令」という。
【００６３】
イレギュラー制御部１１３は、解除用動作プログラムに従ってイレギュラーロボット及び他の協調ロボットに解除動作を実行させる。より具体的に、イレギュラー制御部１１３は、マスター側動作指令に従って先端部１２を変位させるようにイレギュラーロボットを制御することと、スレーブ側動作指令に従って先端部１２を変位させるように他の協調ロボットを制御することとを、上記解除順序で順次実行する。
【００６４】
イレギュラーロボットが協調ロボットである場合、イレギュラー制御部１１３は、複数台の協調ロボットに協調して実行させる解除動作の動作量を、イレギュラーロボットにおけるイレギュラー反力の大きさに基づいて変更してもよい。例えばイレギュラー制御部１１３は、複数台の協調ロボットに協調して実行させる解除動作の動作量を、イレギュラー反力が大きくなるのに応じて大きくしてもよい。
【００６５】
また、イレギュラー制御部１１３は、イレギュラー反力を縮小するように所定の動作量で複数台の協調ロボットに解除動作を実行させた後に、イレギュラーロボットの反力センサ６０によりイレギュラー反力が再度検出されているときに、当該イレギュラー反力を更に縮小するように複数台の協調ロボットに更なる解除動作を協調して実行させてもよい。
【００６６】
個別動作を実行する少なくとも２台のロボット１０のうち１台のロボット１０でイレギュラー状態が検出された場合、イレギュラー制御部１１３は、イレギュラーロボットに解除動作を実行させ、他のロボット１０に個別動作を継続させてもよい。以下、イレギュラーロボットに解除動作を実行させ、他のロボット１０に個別動作を継続させることを「個別モードのイレギュラー処理」という。一方、イレギュラーロボットを含む複数台の協調ロボットに解除動作協調して実行させることを「協調モードのイレギュラー処理」という。また、個別モードのイレギュラー処理及び協調モードのイレギュラー処理を、「イレギュラー処理」と総称する。
【００６７】
なお、協調モードのイレギュラー処理は、他のすべてのロボット１０に解除動作を実行させるイレギュラー処理（以下、「完全協調モードのイレギュラー処理」という。）と、他のロボット１０に解除動作を実行させつつ、更に他のロボット１０に個別動作を継続させるイレギュラー処理（以下、「混在モードのイレギュラー処理」という。）とを含む。
【００６８】
いずれのイレギュラー処理においても、イレギュラー制御部１１３は、３台のロボット１０に対する制御を同じ制御周期で繰り返し実行してもよい。例えばイレギュラー制御部１１３は、動作指令又は解除用動作指令に基づくロボット１０の目標姿勢と、ロボット１０の現在姿勢との偏差を縮小するようにロボット１０を動作させることを、３台のロボット１０に対し同じ制御周期で繰り返し実行する。
【００６９】
例えばイレギュラー制御部１１３は、各制御周期において、動作指令又は解除用動作指令に対応する関節３１，３２，３３，３４，３５，３６の角度目標値を逆運動学演算により算出し、関節３１，３２，３３，３４，３５，３６の角度目標値と関節３１，３２，３３，３４，３５，３６の現在角度（角度センサ５１，５２，５３，５４，５５，５６による検出値）との偏差を縮小するようにアクチュエータ４１，４２，４３，４４，４５，４６を駆動する。
【００７０】
イレギュラー制御部１１３は、イレギュラーロボットに対する動作指令と、他のロボット１０に対する動作指令との関係に基づいて、協調モードのイレギュラー処理と、個別モードのイレギュラー処理とのいずれかを選択する、例えばイレギュラー制御部１１３は、イレギュラーロボットに対する動作指令と、他のロボット１０に対する動作指令とが協調関係にある場合に協調モードのイレギュラー処理を選択し、当該他のロボット１０にも解除動作を実行させてもよい。イレギュラーロボットに対する動作指令と、当該他のロボット１０に対する動作指令とが協調関係にある場合の具体例としては、イレギュラーロボットの先端部の位置及び姿勢を基準として、他のロボット１０の先端部１２の相対位置及び相対姿勢が一定に保たれている場合が挙げられる。
【００７１】
イレギュラー制御部１１３は、動作プログラムが含む上記協調情報に基づいて協調モードのイレギュラー処理と個別モードのイレギュラー処理とのいずれかを選択してもよい。例えばイレギュラー制御部１１３は、イレギュラーロボットを含む少なくとも２台のロボット１０の動作指令が協調関係にあることが協調情報により示されている場合に協調モードのイレギュラー処理を選択し、当該少なくとも２台のロボット１０に解除動作を協調して実行させてもよい。
【００７２】
コントローラ１００は、いずれか１台のロボット１０でイレギュラー状態が検出されたときに、少なくとも２台のロボット１０に解除動作を協調して実行させることが必要であるかを時系列で示す解除時協調情報をユーザの入力に基づいて取得することを更に実行し、いずれか１台のロボット１０でイレギュラー状態が検出されたときに、解除時協調情報に基づいて上記協調モードのイレギュラー処理と、上記個別モードのイレギュラー処理とのいずれかを選択するように構成されていてもよい。
【００７３】
例えばコントローラ１００は、カスタマイズ部１１４を更に有してもよい。カスタマイズ部１１４は、解除時協調情報をユーザの入力（例えば後述の入力デバイス１２６への入力）に基づいて取得する。例えばカスタマイズ部１１４は、３台のロボット１０のいずれのロボット１０に解除動作を協調して実行させるかを時系列で示す解除時協調情報をユーザの入力に基づいて取得し、動作プログラム記憶部１１１に記録する。一例として、カスタマイズ部１１４は、解除動作を協調して実行させるべきロボット１０の動作指令と、他のいずれのロボット１０と協調して解除動作を実行させるかを示す解除時協調指令とを対応付けて動作プログラム記憶部１１１に記録する。
【００７４】
コントローラ１００がカスタマイズ部１１４を更に有する場合に、イレギュラー制御部１１３は、解除時協調情報に基づいて、上記協調モードのイレギュラー処理と上記個別モードのイレギュラー処理とのいずれかを選択する。例えばイレギュラー制御部１１３は、イレギュラーロボットを含む少なくとも２台のロボット１０に解除動作を協調して実行させることが解除時協調情報により示されている場合に協調モードのイレギュラー処理を選択し、当該少なくとも２台のロボット１０に解除動作を協調して実行させる。
【００７５】
図３は、コントローラ１００のハードウェア構成を例示するブロック図である。図３に示すように、コントローラ１００は、回路１２０を有する。回路１２０は、一つ又は複数のプロセッサ１２１と、メモリ１２２と、ストレージ１２３と、タイマ１２４と、表示デバイス１２５と、入力デバイス１２６と、入出力ポート１２７，１２８，１２９と、ドライバ回路１３１，１３２，１３３と、を含む。ストレージ１２３は、例えば不揮発性の半導体メモリ等、コンピュータによって読み取り可能な記憶媒体を有する。ストレージ１２３は、同一のワークに対する協調動作を少なくとも２台のロボット１０に実行させることと、協調動作を実行する少なくとも２台のロボット１０のうち１台のロボット１０でイレギュラー状態が検出されたときに、イレギュラー状態を解除するための解除動作を２台のロボット１０に協調して実行させることと、をコントローラ１００に実行させるためのプログラムを記憶している。例えばストレージ１２３は、コントローラ１００に上記各機能ブロックを構成するためのプログラムを記憶している。
【００７６】
メモリ１２２は、ストレージ１２３の記憶媒体からロードしたプログラム及びプロセッサ１２１による演算結果を一時的に記憶する。プロセッサ１２１は、メモリ１２２と協働して上記プログラムを実行することで、コントローラ１００の各機能ブロックを構成する。タイマ１２４は、プロセッサ１２１からの指令により所定周期のクロックパルスをカウントして経過時間を計測する。表示デバイス１２５は、例えば液晶ディスプレイ、有機ＥＬディスプレイ等を含み、ユーザに対する情報表示に用いられる。入力デバイス１２６は、ユーザによる操作入力を取得する。入力デバイス１２６の具体例としては、例えばキーパッド等が挙げられる。表示デバイス１２５及び入力デバイス１２６は、所謂タッチパネルとして一体化されていてもよい。表示デバイス１２５及び入力デバイス１２６は、コントローラ１００の本体とは別体とされ、当該本体と有線又は無線で通信するティーチングペンダントであってもよい。
【００７７】
入出力ポート１２７は、プロセッサ１２１からの指令に従って、ロボット１０Ａの角度センサ５１〜５６及びトルクセンサ６１〜６６との間で情報の入出力を行う。入出力ポート１２８は、プロセッサ１２１からの指令に従って、ロボット１０Ｂの角度センサ５１〜５６及びトルクセンサ６１〜６６との間で情報の入出力を行う。入出力ポート１２９は、プロセッサ１２１からの指令に従って、ロボット１０Ｃの角度センサ５１〜５６及びトルクセンサ６１〜６６との間で情報の入出力を行う。
【００７８】
ドライバ回路１３１は、プロセッサ１２１からの指令に従って、ロボット１０Ａのアクチュエータ４１〜４６に駆動電力を出力する。ドライバ回路１３２は、プロセッサ１２１からの指令に従って、ロボット１０Ｂのアクチュエータ４１〜４６に駆動電力を出力する。ドライバ回路１３３は、プロセッサ１２１からの指令に従って、ロボット１０Ｃのアクチュエータ４１〜４６に駆動電力を出力する。
【００７９】
なお、回路１２０は、必ずしもプログラムにより各機能を構成するものに限られない。例えば回路１２０は、専用の論理回路又はこれを集積したＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）により少なくとも一部の機能を構成してもよい。
【００８０】
〔制御手順〕
以下、制御方法の一例として、コントローラ１００が実行する制御手順を例示する。この手順は、同一のワークに対する協調動作を少なくとも２台のロボット１０に実行させることと、協調動作を実行する少なくとも２台のロボット１０のうち１台のロボット１０でイレギュラー状態が検出されたときに、イレギュラー状態を解除するための解除動作を２台のロボット１０に協調して実行させることと、を含む。
【００８１】
図４は、ロボットの動作制御手順を例示するフローチャートである。図４に示すように、コントローラ１００は、まずステップＳ０１，Ｓ０２を実行する。ステップＳ０１では、動作制御部１１２が、通常動作用の動作指令に基づくロボット１０の目標姿勢と、ロボット１０の現在姿勢との偏差を縮小するようにロボット１０を動作させることを、３台のロボット１０に対し実行する。ステップＳ０２では、いずれのロボット１０においてもイレギュラー反力が検出されていないかを、イレギュラー制御部１１３が確認する。
【００８２】
ステップＳ０２において、いずれかのロボット１０においてイレギュラー反力が検出されていると判定した場合、コントローラ１００はステップＳ０３を実行する。ステップＳ０３では、イレギュラー制御部１１３が、少なくとも上記イレギュラーロボットに解除動作を実行させる（上記イレギュラー処理を実行する。）。ステップＳ０３の具体的処理内容については後述する。
【００８３】
次に、コントローラ１００は、ステップＳ０４を実行する。ステップＳ０２においていずれのロボット１０においてもイレギュラー反力が検出されていないと判定した場合、コントローラ１００は、ステップＳ０３を実行することなくステップＳ０４を実行する。ステップＳ０４では、全てのロボット１０の通常動作が完了したか否かを動作制御部１１２が確認する。
【００８４】
ステップＳ０４において、通常動作が完了していないロボット１０が残っていると判定した場合、コントローラ１００はステップＳ０５を実行する。ステップＳ０５では、動作制御部１１２が、制御周期の経過を待機する。その後、コントローラ１００は処理をステップＳ０１に戻す。以後、全てのロボット１０の通常動作が完了するまでは、通常動作用の動作指令に基づく３台のロボット１０の制御を行い、必要に応じて少なくともイレギュラーロボットに解除動作を実行させることが繰り返される。ステップＳ０４において、全てのロボット１０の通常動作が完了したと判定した場合、ロボット１０の動作制御手順が完了する。
【００８５】
図５は、ステップＳ０３におけるイレギュラー処理手順を例示するフローチャートである。図５に示すように、コントローラ１００は、まずステップＳ１１を実行する。ステップＳ１１では、イレギュラーロボットが協調動作中であるか否かをイレギュラー制御部１１３が確認する。例えばイレギュラー制御部１１３は、イレギュラーロボットを含む少なくとも２台のロボット１０の動作指令が協調関係にあることが協調情報により示されている場合に、イレギュラーロボットが協調動作中であると判定する。なお、イレギュラー制御部１１３は、イレギュラーロボットが協調動作中であるかに代えて、イレギュラーロボットを含む少なくとも２台のロボット１０に解除動作を協調して実行させることが上記解除時協調情報により示されているか否かを確認してもよい。
【００８６】
ステップＳ１１においてイレギュラーロボットが協調動作中でないと判定した場合、コントローラ１００はステップＳ１２を実行する。ステップＳ１２では、イレギュラー制御部１１３が、上記個別モードのイレギュラー処理を実行する。
【００８７】
ステップＳ１１においてイレギュラーロボットが協調動作中であると判定した場合、コントローラ１００はステップＳ１３を実行する。ステップＳ１３では、イレギュラーロボットと協調動作中のロボット１０の他に、個別動作中のロボット１０があるか否かを確認する。例えばイレギュラー制御部１１３は、動作指令がイレギュラーロボットの動作指令と協調関係にないロボット１０が存在しないかを協調情報に基づき確認する。なお、イレギュラー制御部１１３は、イレギュラーロボットと協調動作中のロボット１０の他に、個別動作中のロボット１０があるかに代えて、イレギュラーロボットと解除動作を協調して実行させることが上記解除時協調情報により示されていないロボット１０があるかを確認してもよい。
【００８８】
ステップＳ１３において、イレギュラーロボットと協調動作中のロボット１０の他に、個別動作中のロボット１０がないと判定した場合（例えば動作指令がイレギュラーロボットの動作指令と協調関係にないロボット１０は存在しないと判定した場合）、コントローラ１００はステップＳ１４を実行する。ステップＳ１４では、イレギュラー制御部１１３が、上記完全協調モードのイレギュラー処理を実行する。
【００８９】
ステップＳ１３において、イレギュラーロボットと協調動作中のロボット１０の他に、個別動作中のロボット１０があると判定した場合（例えば動作指令がイレギュラーロボットの動作指令と協調関係にないロボット１０が存在すると判定した場合）、コントローラ１００はステップＳ１５を実行する。ステップＳ１５では、イレギュラー制御部１１３が、上記混在モードのイレギュラー処理を実行する。
【００９０】
以下、各モードのイレギュラー処理の具体的手順を例示する。図６及び図７は、完全協調モードのイレギュラー処理手順を例示するフローチャートである。図６に示すように、コントローラ１００は、まずステップＳ２１，Ｓ２２，Ｓ２３，Ｓ２４を実行する。ステップＳ２１では、イレギュラー制御部１１３が、イレギュラー反力を縮小するように、全てのロボット１０の解除動作を設定する。例えばイレギュラー制御部１１３は、全てのロボット１０について、イレギュラー反力の検出時点から、当該検出時点よりも所定時間前までの逆再生動作を解除動作とする。
【００９１】
イレギュラー制御部１１３は、イレギュラーロボットについて、所定距離又は所定時間の反力追従動作を解除動作としてもよい。この場合、イレギュラー制御部１１３は、反力追従動作を実行するイレギュラーロボットの先端部の位置及び姿勢を基準として、先端部１２の相対位置及び相対姿勢を維持する動作を他のロボット１０の解除動作とする。
【００９２】
ステップＳ２２では、イレギュラー制御部１１３が、解除動作用のイレギュラーロボットの目標姿勢と、イレギュラーロボットの現在姿勢との偏差を縮小するようにイレギュラーロボットのアクチュエータ４１，４２，４３，４４，４５，４６を駆動する。ステップＳ２３では、イレギュラー制御部１１３が、解除動作用の他のロボット１０の目標姿勢と、他のロボット１０の現在姿勢との偏差を縮小するように、他のロボット１０のアクチュエータ４１，４２，４３，４４，４５，４６を駆動する。なお、ステップＳ２２，Ｓ２３の実行順序は逆転可能である。また、ステップＳ２２，Ｓ２３が実質的に同時に実行されてもよい。ステップＳ２４では、ステップＳ２１において設定された解除動作が完了したか否かを、イレギュラー制御部１１３が確認する。
【００９３】
ステップＳ２４において解除動作が完了していないと判定した場合、コントローラ１００はステップＳ２５を実行する。ステップＳ２５では、イレギュラー制御部１１３が、制御周期の経過を待機する。その後、コントローラ１００は処理をステップＳ２２に戻す。以後、全てのロボット１０の解除動作が完了するまでは、解除動作用の動作指令に基づく３台のロボット１０の制御が繰り返される。
【００９４】
ステップＳ２４において解除動作が完了したと判定した場合、コントローラ１００はステップＳ２６を実行する。ステップＳ２６では、イレギュラーロボットの反力センサ６０によりイレギュラー反力が再度検出されていないかをイレギュラー制御部１１３が確認する。
【００９５】
ステップＳ２６においてイレギュラー反力が検出されていると判定した場合、コントローラ１００はステップＳ２７，Ｓ２８を実行する。ステップＳ２７では、イレギュラー制御部１１３が、イレギュラーロボットにおけるイレギュラー反力を更に縮小するように、全てのロボット１０の解除動作を設定する。例えばイレギュラー制御部１１３は、全てのロボット１０について、上記所定時間前よりも更に前の時点までの逆再生動作を更なる解除動作とする。
【００９６】
イレギュラー制御部１１３は、イレギュラーロボットについて、再度検出されたイレギュラー反力に対する反力追従動作を更なる解除動作としてもよい。この場合、イレギュラー制御部１１３は、反力追従動作を実行するイレギュラーロボットの先端部の位置及び姿勢を基準として、先端部１２の相対位置及び相対姿勢を維持する動作を他のロボット１０の更なる解除動作とする。
【００９７】
ステップＳ２８では、イレギュラー制御部１１３が、制御周期の経過を待機する。その後、コントローラ１００は処理をステップＳ２２に戻す。以後、全てのロボット１０の更なる解除動作が完了するまでは、解除動作用の動作指令に基づく３台のロボット１０の制御が繰り返される。
【００９８】
ステップＳ２６においてイレギュラー反力が検出されていないと判定した場合、コントローラ１００は、図７に示すようにステップＳ３１，Ｓ３２を実行する。ステップＳ３１では、イレギュラー制御部１１３が、制御周期の経過を待機する。ステップＳ３２では、通常動作への復帰指令が入力されているか否かをイレギュラー制御部１１３が確認する。復帰指令は、例えばユーザにより入力デバイス１２６に入力される。
【００９９】
ステップＳ３２において復帰指令が入力されていないと判定した場合、コントローラ１００は処理をステップＳ３１に戻す。以後、復帰指令が入力されるまでは、全てのロボット１０が停止した状態に保たれる。
【０１００】
ステップＳ３２において復帰指令が入力されていると判定した場合、コントローラ１００はステップＳ３３，Ｓ３４，Ｓ３５を実行する。ステップＳ３３では、イレギュラー制御部１１３が、復帰動作用のイレギュラーロボットの目標姿勢と、イレギュラーロボットの現在姿勢との偏差を縮小するようにイレギュラーロボットのアクチュエータ４１，４２，４３，４４，４５，４６を駆動する。復帰動作は、解除動作の逆向きの動作である。以下においても同様である。
【０１０１】
ステップＳ３４では、イレギュラー制御部１１３が、復帰動作用の他のロボット１０の目標姿勢と、他のロボット１０の現在姿勢との偏差を縮小するように、他のロボット１０のアクチュエータ４１，４２，４３，４４，４５，４６を駆動する。なお、ステップＳ３３，Ｓ３４の実行順序は逆転可能である。また、ステップＳ３３，Ｓ３４が実質的に同時に実行されてもよい。
【０１０２】
ステップＳ３５では、復帰動作が完了したか否かをイレギュラー制御部１１３が確認する。ステップＳ３５において復帰動作が完了していないと判定した場合、コントローラ１００はステップＳ３６を実行する。ステップＳ３６では、イレギュラー制御部１１３が制御周期の経過を待機する。その後、コントローラ１００は処理をステップＳ３３に戻す。以後、全てのロボット１０の復帰動作が完了するまでは、復帰動作用の動作指令に基づく３台のロボット１０の制御が繰り返される。ステップＳ３５において復帰動作が完了したと判定した場合、完全協調モードのイレギュラー処理が完了する。
【０１０３】
図８及び図９は、個別モードのイレギュラー処理手順を例示するフローチャートである。図８に示すように、コントローラ１００は、まずステップＳ４１，Ｓ４２，Ｓ４３，Ｓ４４を実行する。ステップＳ４１では、イレギュラー制御部１１３が、イレギュラー反力を縮小するように、イレギュラーロボットの解除動作を設定する。例えばイレギュラー制御部１１３は、イレギュラー反力の検出時点から、当該検出時点よりも所定時間前までの逆再生動作をイレギュラーロボットの解除動作とする。イレギュラー制御部１１３は、所定距離又は所定時間の反力追従動作をイレギュラーロボットの解除動作としてもよい。
【０１０４】
ステップＳ４２では、イレギュラー制御部１１３が、解除動作用のイレギュラーロボットの目標姿勢と、イレギュラーロボットの現在姿勢との偏差を縮小するようにイレギュラーロボットのアクチュエータ４１，４２，４３，４４，４５，４６を駆動する。ステップＳ４３では、イレギュラー制御部１１３が、通常動作用の他のロボット１０の目標姿勢と、他のロボット１０の現在姿勢との偏差を縮小するように他のロボット１０のアクチュエータ４１，４２，４３，４４，４５，４６を駆動する。なお、ステップＳ４２，Ｓ４３の実行順序は逆転可能である。また、ステップＳ４２，Ｓ４３が実質的に同時に実行されてもよい。ステップＳ４４では、ステップＳ４１において設定された解除動作が完了したか否かをイレギュラー制御部１１３が確認する。
【０１０５】
ステップＳ４４において解除動作が完了していないと判定した場合、コントローラ１００はステップＳ４５を実行する。ステップＳ４５では、イレギュラー制御部１１３が制御周期の経過を待機する。その後、コントローラ１００は処理をステップＳ４２に戻す。以後、イレギュラーロボットの解除動作が完了するまでは、解除動作用の動作指令に基づくイレギュラーロボットの制御と、通常動作用の動作指令に基づく他のロボット１０の制御とが繰り返される。
【０１０６】
ステップＳ４４において解除動作が完了したと判定した場合、コントローラ１００はステップＳ４６を実行する。ステップＳ４６では、イレギュラーロボットの反力センサ６０によりイレギュラー反力が再度検出されていないかをイレギュラー制御部１１３が確認する。
【０１０７】
ステップＳ４６においてイレギュラー反力が検出されていると判定した場合、コントローラ１００はステップＳ４７，Ｓ４８を実行する。ステップＳ４７では、イレギュラー制御部１１３が、イレギュラーロボットにおけるイレギュラー反力を更に縮小するように、イレギュラーロボットの解除動作を設定する。例えばイレギュラー制御部１１３は、上記所定時間前よりも更に前の時点までの逆再生動作をイレギュラーロボットの更なる解除動作とする。イレギュラー制御部１１３は、再度検出されたイレギュラー反力に対する反力追従動作をイレギュラーロボットの更なる解除動作としてもよい。
【０１０８】
ステップＳ４８では、イレギュラー制御部１１３が制御周期の経過を待機する。その後、コントローラ１００は処理をステップＳ４２に戻す。以後、イレギュラーロボットの更なる解除動作が完了するまでは、解除動作用の動作指令に基づくイレギュラーロボットの制御と、通常動作用の動作指令に基づく他のロボット１０の制御とが繰り返される。
【０１０９】
ステップＳ４６においてイレギュラー反力が検出されていないと判定した場合、コントローラ１００は、図９に示すようにステップＳ５１，Ｓ５２を実行する。ステップＳ５１では、イレギュラー制御部１１３が、制御周期の経過を待機する。ステップＳ５２では、通常動作への復帰指令が入力されているかをイレギュラー制御部１１３が確認する。復帰指令は、例えばユーザにより入力デバイス１２６に入力される。
【０１１０】
ステップＳ５２において復帰指令が入力されていないと判定した場合、コントローラ１００はステップＳ５３を実行する。ステップＳ５３では、イレギュラー制御部１１３が、通常動作用の他のロボット１０の目標姿勢と、他のロボット１０の現在姿勢との偏差を縮小するように他のロボット１０のアクチュエータ４１，４２，４３，４４，４５，４６を駆動する。その後、コントローラ１００は処理をステップＳ５１に戻す。以後、復帰指令が入力されるまでは、イレギュラーロボットが停止した状態に保たれ、通常動作用の動作指令に基づく他のロボット１０の制御が継続される。
【０１１１】
ステップＳ５２において復帰指令が入力されていると判定した場合、コントローラ１００はステップＳ５４，Ｓ５５，Ｓ５６を実行する。ステップＳ５４では、イレギュラー制御部１１３が、復帰動作用のイレギュラーロボットの目標姿勢と、イレギュラーロボットの現在姿勢との偏差を縮小するようにイレギュラーロボットのアクチュエータ４１，４２，４３，４４，４５，４６を駆動する。ステップＳ５５では、イレギュラー制御部１１３が、通常動作用の他のロボット１０の目標姿勢と、他のロボット１０の現在姿勢との偏差を縮小するように、他のロボット１０のアクチュエータ４１，４２，４３，４４，４５，４６を駆動する。なお、ステップＳ５４，Ｓ５５の実行順序は逆転可能である。また、ステップＳ５４，Ｓ５５が実質的に同時に実行されてもよい。ステップＳ５６では、復帰動作が完了したか否かをイレギュラー制御部１１３が確認する。
【０１１２】
ステップＳ５６において復帰動作が完了していないと判定した場合、コントローラ１００はステップＳ５７を実行する。ステップＳ５７では、イレギュラー制御部１１３が制御周期の経過を待機する。その後、コントローラ１００は処理をステップＳ５４に戻す。以後、イレギュラーロボットの復帰動作が完了するまでは、復帰動作用の動作指令に基づくイレギュラーロボットの制御と、通常動作用の動作指令に基づく他のロボット１０の制御とが繰り返される。ステップＳ５６において復帰動作が完了したと判定した場合、個別協調モードのイレギュラー処理が完了する。
【０１１３】
図１０及び図１１は、混在モードのイレギュラー処理手順を例示するフローチャートである。上述のように、混在モードのイレギュラー処理においては、イレギュラーロボットと協調して解除動作を実行する他のロボット１０（以下、「協調ロボット」という。）と、個別動作を実行する他のロボット１０（以下、「個別ロボット」という。）とが混在する。
【０１１４】
図１０に示すように、コントローラ１００は、まずステップＳ６１，Ｓ６２，Ｓ６３，Ｓ６４，Ｓ６５を実行する。ステップＳ６１では、イレギュラー制御部１１３が、イレギュラー反力を縮小するように、イレギュラーロボット及び協調ロボットの解除動作を設定する。例えばイレギュラー制御部１１３は、イレギュラーロボット及び協調ロボットについて、イレギュラー反力の検出時点から、当該検出時点よりも所定時間前までの逆再生動作を解除動作とする。
【０１１５】
イレギュラー制御部１１３は、イレギュラーロボットについて、所定距離又は所定時間の反力追従動作を解除動作としてもよい。この場合、イレギュラー制御部１１３は、反力追従動作を実行するイレギュラーロボットの先端部の位置及び姿勢を基準として、先端部１２の相対位置及び相対姿勢を維持する動作を協調ロボットの解除動作とする。
【０１１６】
ステップＳ６２では、イレギュラー制御部１１３が、解除動作用のイレギュラーロボットの目標姿勢と、イレギュラーロボットの現在姿勢との偏差を縮小するようにイレギュラーロボットのアクチュエータ４１，４２，４３，４４，４５，４６を駆動する。ステップＳ６３では、イレギュラー制御部１１３が、解除動作用の協調ロボットの目標姿勢と、協調ロボットの現在姿勢との偏差を縮小するように、協調ロボットのアクチュエータ４１，４２，４３，４４，４５，４６を駆動する。
【０１１７】
ステップＳ６４では、イレギュラー制御部１１３が、通常動作用の個別ロボットの目標姿勢と、個別ロボットの現在姿勢との偏差を縮小するように個別ロボットのアクチュエータ４１，４２，４３，４４，４５，４６を駆動する。なお、ステップＳ６２，Ｓ６３，Ｓ６４の実行順序は入れ替え可能である。また、ステップＳ６２，Ｓ６３，Ｓ６４が実質的に同時に実行されてもよい。ステップＳ６５では、ステップＳ６１において設定された解除動作が完了したか否かをイレギュラー制御部１１３が確認する。
【０１１８】
ステップＳ６５において解除動作が完了していないと判定した場合、コントローラ１００はステップＳ６６を実行する。ステップＳ６６では、イレギュラー制御部１１３が制御周期の経過を待機する。その後、コントローラ１００は処理をステップＳ６２に戻す。以後、イレギュラーロボットの解除動作が完了するまでは、解除動作用の動作指令に基づくイレギュラーロボット及び協調ロボットの制御と、通常動作用の動作指令に基づく個別ロボットの制御とが繰り返される。
【０１１９】
ステップＳ６５において解除動作が完了したと判定した場合、コントローラ１００はステップＳ６７を実行する。ステップＳ６７では、イレギュラーロボットの反力センサ６０によりイレギュラー反力が再度検出されていないかをイレギュラー制御部１１３が確認する。
【０１２０】
ステップＳ６７においてイレギュラー反力が検出されていると判定した場合、コントローラ１００はステップＳ６８，Ｓ６９を実行する。ステップＳ６８では、イレギュラー制御部１１３が、イレギュラーロボットにおけるイレギュラー反力を更に縮小するように、イレギュラーロボット及び協調ロボットの解除動作を設定する。例えばイレギュラー制御部１１３は、上記所定時間前よりも更に前の時点までの逆再生動作をイレギュラーロボット及び協調ロボットの更なる解除動作とする。
【０１２１】
イレギュラー制御部１１３は、再度検出されたイレギュラー反力に対する反力追従動作をイレギュラーロボットの更なる解除動作としてもよい。この場合、イレギュラー制御部１１３は、反力追従動作を実行するイレギュラーロボットの先端部の位置及び姿勢を基準として、先端部１２の相対位置及び相対姿勢を維持する動作を協調ロボットの更なる解除動作とする。
【０１２２】
ステップＳ６９では、イレギュラー制御部１１３が制御周期の経過を待機する。その後、コントローラ１００は処理をステップＳ６２に戻す。以後、イレギュラーロボット及び協調ロボットの更なる解除動作が完了するまでは、解除動作用の動作指令に基づくイレギュラーロボット及び協調ロボットの制御と、通常動作用の動作指令に基づく個別ロボットの制御とが繰り返される。
【０１２３】
ステップＳ６７においてイレギュラー反力が検出されていないと判定した場合、コントローラ１００は、図１１に示すようにステップＳ７１，Ｓ７２を実行する。ステップＳ７１では、イレギュラー制御部１１３が制御周期の経過を待機する。ステップＳ７２では、通常動作への復帰指令が入力されているか否かをイレギュラー制御部１１３が確認する。復帰指令は、例えばユーザにより入力デバイス１２６に入力される。
【０１２４】
ステップＳ７２において復帰指令が入力されていないと判定した場合、コントローラ１００はステップＳ７３を実行する。ステップＳ７３では、イレギュラー制御部１１３が、通常動作用の個別ロボットの目標姿勢と、個別ロボットの現在姿勢との偏差を縮小するように個別のアクチュエータ４１，４２，４３，４４，４５，４６を駆動する。その後、コントローラ１００は処理をステップＳ７１に戻す。以後、復帰指令が入力されるまでは、イレギュラーロボット及び協調ロボットが停止した状態に保たれ、通常動作用の動作指令に基づく個別ロボットの制御が継続される。
【０１２５】
ステップＳ７２において復帰指令が入力されたと判定した場合、コントローラ１００はステップＳ７４，Ｓ７５，Ｓ７６，Ｓ７７を実行する。ステップＳ７４では、イレギュラー制御部１１３が、復帰動作用のイレギュラーロボットの目標姿勢と、イレギュラーロボットの現在姿勢との偏差を縮小するようにイレギュラーロボットのアクチュエータ４１，４２，４３，４４，４５，４６を駆動する。ステップＳ７５では、イレギュラー制御部１１３が、復帰動作用の協調ロボットの目標姿勢と、協調ロボットの現在姿勢との偏差を縮小するように協調ロボットのアクチュエータ４１，４２，４３，４４，４５，４６を駆動する。
【０１２６】
ステップＳ７６では、イレギュラー制御部１１３が、通常動作用の個別ロボットの目標姿勢と、個別ロボットの現在姿勢との偏差を縮小するように、個別ロボットのアクチュエータ４１，４２，４３，４４，４５，４６を駆動する。なお、ステップＳ７４，Ｓ７５，Ｓ７６の実行順序は入れ替え可能である。また、ステップＳ７４，Ｓ７５，Ｓ７６が実質的に同時に実行されてもよい。ステップＳ７７では、復帰動作が完了したか否かをイレギュラー制御部１１３が確認する。
【０１２７】
ステップＳ７７において復帰動作が完了していないと判定した場合、コントローラ１００はステップＳ７８を実行する。ステップＳ７８では、イレギュラー制御部１１３が制御周期の経過を待機する。その後、コントローラ１００は処理をステップＳ７４に戻す。以後、イレギュラーロボット及び協調ロボットの復帰動作が完了するまでは、復帰動作用の動作指令に基づくイレギュラーロボット及び協調ロボットの制御と、通常動作用の動作指令に基づく個別ロボットの制御とが繰り返される。ステップＳ７７において復帰動作が完了したと判定した場合、混在モードのイレギュラー処理が完了する。
【０１２８】
図８〜図１１においては、イレギュラーロボット及び協調ロボットの解除動作と並行して個別ロボットに通常動作を継続させる主体が、イレギュラー制御部１１３であるものとしているが、個別ロボットに通常動作を継続させる主体は動作制御部１１２であってもよい。この場合も、イレギュラー制御部１１３が、イレギュラーロボットの他のロボット１０に協調動作を実行させて、更に他のロボット１０には協調動作を実行させない結果として、動作制御部１１２が更に他のロボット１０に通常動作を継続させることとなるので、イレギュラー制御部１１３が個別ロボットに通常動作を継続させているものといえる。
【０１２９】
〔変形例〕
図１２は、ロボットシステムの変形例を示す模式図である。図１のロボットシステム１においては、１つのコントローラ１００が複数台のロボット１０を制御していたが、図１２のロボットシステム１においては、複数のコントローラ２００が複数台のロボット１０をそれぞれ制御する。図示を簡略化するために、図１２におけるロボット１０の台数は２台となっているが、ロボット１０の台数は３台以上であってもよい。
【０１３０】
コントローラ２００は、同一のワークに対する他のロボット１０との協調動作を制御対象のロボット１０（以下、「自ロボット」という。）に実行させることと、制御対象のロボット１０でイレギュラー状態が検出された場合に、イレギュラー状態を解除するための解除動作を自ロボットに実行させることと、解除動作に協調する解除動作を他のロボット１０に実行させることを他のロボット１０のコントローラ２００に要求することと、を実行するように構成されている。
【０１３１】
例えばコントローラ２００は、機能ブロックとして、動作プログラム記憶部２１１と、動作制御部２１２と、イレギュラー制御部２１３と、カスタマイズ部２１４と、解除動作要求部２１５とを有する。動作プログラム記憶部２１１は、上述した動作プログラム記憶部１１１が記憶する動作プログラムのうち、自ロボット用の動作プログラムを記憶する。動作制御部２１２は、上述した動作制御部１１２の機能のうち、自ロボットを動作させる機能を担う。
【０１３２】
イレギュラー制御部２１３は、上述したイレギュラー制御部１１３の機能のうち、自ロボットを動作させる機能を担う。例えばイレギュラー制御部２１３は、自ロボットでイレギュラー状態が検出された場合に、イレギュラー状態を解除するための解除動作を自ロボットに実行させる。また、イレギュラー制御部２１３は、他のロボット１０のコントローラ２００からの要求に従って、他のロボット１０の解除動作に協調する解除動作を自ロボットに実行させる。
【０１３３】
カスタマイズ部２１４は、上述したカスタマイズ部１１４の機能のうち、自ロボットの解除時協調情報をユーザの入力に基づいて取得する機能を担う。解除動作要求部２１５は、イレギュラー制御部２１３が自ロボットに解除動作を実行させる場合に、当該解除動作に協調する解除動作を他のロボット１０（上記協調ロボット）に実行させることを他のロボット１０のコントローラ２００に要求する。
【０１３４】
図１３は、コントローラ２００のハードウェア構成を例示するブロック図である。図３に示すように、コントローラ２００は、回路２２０を有する。回路２２０は、一つ又は複数のプロセッサ２２１と、メモリ２２２と、ストレージ２２３と、タイマ２２４と、表示デバイス２２５と、入力デバイス２２６と、入出力ポート２２７と、ドライバ回路２２８と、通信ポート２２９とを含む。ストレージ２２３は、例えば不揮発性の半導体メモリ等、コンピュータによって読み取り可能な記憶媒体を有する。ストレージ２２３は、同一のワークに対する他のロボット１０との協調動作を制御対象のロボット１０（以下、「自ロボット」という。）に実行させることと、制御対象のロボット１０でイレギュラー状態が検出された場合に、イレギュラー状態を解除するための解除動作を自ロボットに実行させることと、解除動作に協調する解除動作を他のロボット１０に実行させることを他のロボット１０のコントローラ２００に要求することと、をコントローラ２００に実行させるためのプログラムを記憶している。例えばストレージ２２３は、コントローラ２００に上記各機能ブロックを構成するためのプログラムを記憶している。
【０１３５】
メモリ２２２は、ストレージ２２３の記憶媒体からロードしたプログラム及びプロセッサ２２１による演算結果を一時的に記憶する。プロセッサ２２１は、メモリ２２２と協働して上記プログラムを実行することで、コントローラ２００の各機能ブロックを構成する。タイマ２２４は、プロセッサ２２１からの指令により所定周期のクロックパルスをカウントして経過時間を計測する。表示デバイス２２５は、例えば液晶、有機ＥＬ等を含み、ユーザに対する情報表示に用いられる。入力デバイス２２６は、ユーザによる操作入力を取得する。入力デバイス２２６の具体例としては、例えばキーパッド等が挙げられる。表示デバイス２２５及び入力デバイス２２６は、所謂タッチパネルとして一体化されていてもよい。表示デバイス２２５及び入力デバイス２２６は、コントローラ１００の本体とは別体とされ、当該本体と有線又は無線で通信するティーチングペンダントであってもよい。
【０１３６】
入出力ポート２２７は、プロセッサ２２１からの指令に従って、ロボット１０の角度センサ５１〜５６及びトルクセンサ６１〜６６との間で情報の入出力を行う。ドライバ回路２２８は、プロセッサ２２１からの指令に従って、ロボット１０のアクチュエータ４１〜４６に駆動電力を出力する。通信ポート２２９は、プロセッサ２２１からの指令に従って、他のコントローラ２００との間で通信を行う。
【０１３７】
なお、回路１２０は、必ずしもプログラムにより各機能を構成するものに限られない。例えば回路１２０は、専用の論理回路又はこれを集積したＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）により少なくとも一部の機能を構成してもよい。
【０１３８】
図１４に示すように、ロボットシステム１は、複数のコントローラ２００に動作指令を出力するコントローラ３００を更に備えてもよい。この場合、イレギュラー処理のモード設定、解除動作の設定などの処理がコントローラ３００において実行されてもよい。コントローラ３００の具体例としては、プログラマブルロジックコントローラ等が挙げられる。
【０１３９】
〔実施形態の効果〕
以上に説明したように、ロボットシステム１は、２台のロボット１０と、同一のワークに対する協調動作を２台のロボット１０に実行させる動作制御部１１２と、協調動作を実行する２台のロボット１０のうち１台のロボット１０でイレギュラー状態が検出されたときに、イレギュラー状態を解除するための解除動作を２台のロボット１０に協調して実行させるイレギュラー制御部１１３と、を備える。
【０１４０】
協調動作を実行する２台のロボット１０のうち１台のロボット１０でイレギュラー状態が検出された場合、当該１台のロボット１０に速やかに解除動作を実行させることが必要となる。しかしながら、１台のロボット１０が協調動作を中断して解除動作を実行すると、他のロボット１０との協調関係が崩れることとなる。例えば、２台のロボット１０が同一のワークを協調して搬送している場合に、２台のロボット１０の協調関係が崩れると、ワークの脱落、破損等のおそれもある。これに対し、本ロボットシステム１によれば、イレギュラー状態を解除するための解除動作が２台のロボット１０により協調して実行される。これにより、イレギュラー状態を解除する際にも、２台のロボット１０の協調関係が維持される。従って、協調動作する複数台のロボット１０におけるイレギュラー状態の解除と、複数台のロボット１０の協調状態の継続との両立に有効である。
【０１４１】
動作制御部１１２は、互いに独立した個別動作を２台のロボット１０に更に実行させ、イレギュラー制御部１１３は、個別動作を実行する２台のロボット１０のうち１台のロボット１０でイレギュラー状態が検出されたときに、当該１台のロボット１０に解除動作を実行させ、他のロボット１０に個別動作を継続させてもよい。この場合、協調関係の維持が不要であるときには、他のロボット１０に個別動作を継続させることで、解除動作の実行に伴う２台のロボット１０の作業遅延を抑制することができる。
【０１４２】
動作制御部１１２は、時系列の複数の動作指令を２台のロボット１０ごとに含む動作プログラムに従って２台のロボットを動作させ、イレギュラー制御部１１３は、２台のロボット１０のうち１台のロボット１０でイレギュラー状態が検出されたときに、２台のロボット１０に対する動作指令の関係に基づいて、２台のロボット１０に解除動作を協調して実行させる協調モードのイレギュラー処理と、他のロボット１０に個別動作を継続させる個別モードのイレギュラー処理とのいずれかを選択してもよい。この場合、協調モードのイレギュラー処理又は個別モードのイレギュラー処理の適切な選択を容易に実行することができる。
【０１４３】
ロボットシステム１は、２台のロボット１０を含む３台以上のロボット１０を備え、動作制御部１１２は、時系列の複数の動作指令を３台以上のロボット１０ごとに含む動作プログラムに従って３台以上のロボット１０を動作させ、イレギュラー制御部１１３は、３台以上のロボット１０のうち１台のロボット１０でイレギュラー状態が検出されたときに、当該１台のロボット１０を含む少なくとも２台のロボット１０に対する動作指令が協調関係にある場合に協調モードのイレギュラー処理を選択し、当該少なくとも２台のロボット１０に解除動作を協調して実行させてもよい。この場合、３台以上のロボット１０に、協調動作を行うロボット１０と個別動作を行うロボット１０とが混在する状態でイレギュラー状態が検出されたときにも、協調モードのイレギュラー処理又は個別モードのイレギュラー処理を適切に選択し、協調モードのイレギュラー処理の対象となるロボットを適切に選択することができる。
【０１４４】
動作プログラムは、２台のロボット１０の動作指令が協調関係にあるかを時系列で示す協調情報を更に含み、イレギュラー制御部１１３は、２台のロボット１０のうち１台のロボット１０でイレギュラー状態が検出されたときに、協調情報に基づいて協調モードのイレギュラー処理と個別モードのイレギュラー処理とのいずれかを選択してもよい。この場合、予め動作プログラムに含められた協調情報に基づくことで、協調モードのイレギュラー処理又は個別モードのイレギュラー処理の適切な選択をより迅速に実行することができる。
【０１４５】
ロボットシステム１は、２台のロボット１０を含む３台以上のロボット１０を備え、動作制御部１１２は、時系列の複数の動作指令を３台以上のロボット１０ごとに含む動作プログラムに従って３台以上のロボット１０を動作させ、動作プログラムは、３台のロボットのいずれのロボット１０の動作指令が協調関係にあるかを時系列で示す協調情報を更に含み、イレギュラー制御部は、３台以上のロボット１０のうち１台のロボット１０でイレギュラー状態が検出されたときに、当該１台のロボット１０を含む少なくとも２台のロボット１０の動作指令が協調関係にあることが協調情報により示されている場合に協調モードのイレギュラー処理を選択し、当該少なくとも２台のロボット１０に解除動作を協調して実行させてもよい。この場合、３台以上のロボット１０に、協調動作を行うロボット１０と個別動作を行うロボット１０とが混在する状態でイレギュラー状態が検出されたときにも、協調モードのイレギュラー処理又は個別モードのイレギュラー処理の適切な選択と、協調モードのイレギュラー処理の対象となるロボット１０の適切な選択とをより迅速に実行することができる。
【０１４６】
ロボットシステム１は、２台のロボット１０のうちいずれか１台のロボット１０でイレギュラー状態が検出されたときに、２台のロボット１０に解除動作を協調して実行させることが必要であるかを時系列で示す解除時協調情報をユーザの入力に基づいて取得するカスタマイズ部１１４を更に備え、イレギュラー制御部１１３は、２台のロボット１０のうち１台のロボットでイレギュラー状態が検出されたときに、解除時協調情報に基づいて、２台のロボット１０に解除動作を協調して実行させる協調モードのイレギュラー処理と、他のロボット１０に個別動作を継続させる個別モードのイレギュラー処理とのいずれかを選択してもよい。この場合、よりユーザニーズにマッチした条件で協調モードのイレギュラー処理又は個別モードのイレギュラー処理を選択することができる。
【０１４７】
ロボットシステム１は、２台のロボット１０を含む３台以上のロボット１０を備え、カスタマイズ部１１４は、３台以上のロボットのいずれのロボット１０に解除動作を協調して実行させるかを時系列で示す解除時協調情報をユーザの入力に基づいて取得し、イレギュラー制御部１１３は、３台以上のロボット１０のうち１台のロボット１０でイレギュラー状態が検出されたときに、当該１台のロボット１０を含む少なくとも２台のロボット１０に解除動作を協調して実行させることが解除時協調情報により示されている場合に協調モードのイレギュラー処理を選択し、当該少なくとも２台のロボット１０に解除動作を協調して実行させてもよい。この場合、３台以上のロボット１０に、解除動作を協調して実行させるべきロボット１０と、個別動作を継続させるべきロボット１０とを混在させるニーズにもマッチした条件にて協調モードのイレギュラー処理又は個別モードのイレギュラー処理を選択し、協調モードのイレギュラー処理の対象となるロボット１０を選択することができる。
【０１４８】
イレギュラー制御部１１３は、イレギュラー状態が検出された１台のロボット１０の姿勢が、当該イレギュラー状態の検出時点の姿勢から変化するように少なくとも当該１台のロボット１０に解除動作を実行させてもよい。この場合、イレギュラー状態をより確実に解除することができる。
【０１４９】
２台のロボット１０のそれぞれは、先端部１２と、先端部１２の位置及び姿勢を変更する多関節アーム２０とを有し、イレギュラー制御部１１３は、協調動作を実行中する２台のロボット１０のうち１台のロボット１０でイレギュラー状態が検出されたときに、当該１台のロボット１０の先端部１２の位置及び姿勢を基準として、他のロボット１０の先端部１２の相対位置及び相対姿勢を維持するように、２台のロボット１０に協調して解除動作を実行させてもよい。この場合、２台のロボット１０の協調関係をより確実に維持することができる。
【０１５０】
動作制御部１１２は、同一のワークを協働して保持し、搬送する協調動作を２台のロボット１０に実行させてもよい。この場合、２台のロボット１０の協調状態の継続を、イレギュラー状態の解除と両立させることがより有益である。
【０１５１】
複数台のロボット１０のそれぞれは、人協働ロボットであってもよい。この場合、イレギュラー状態の解除の必要性がより高い人協働環境においても、２台のロボット１０を協働させ、人の作業をより多様にサポートすることができる。
【０１５２】
２台のロボット１０のそれぞれは、周辺物体との接触に伴うイレギュラー反力をイレギュラー状態として検出する反力センサ６０を備え、イレギュラー制御部１１３は、協調動作を実行する２台のロボット１０のうちいずれか１台のロボット１０の反力センサ６０によりイレギュラー反力が検出されたときに、当該イレギュラー反力を縮小するように２台のロボット１０に解除動作を協調して実行させてもよい。この場合、イレギュラー状態の一例であるイレギュラー反力の縮小（解除）と、上記協調状態の継続との両立に有効である。
【０１５３】
イレギュラー制御部１１３は、協調動作を実行する２台のロボット１０のうち１台のロボット１０でイレギュラー反力が検出されたときに、当該イレギュラー反力の検出時点までの動作を、当該検出時点よりも前の時点まで逆再生するように、２台のロボット１０に解除動作を実行させてもよい。この場合、解除動作用の動作指令を新たに算出する必要が無いので、１台のロボット１０における解除動作と、他のロボット１０における解除動作とを迅速に実行させることができる。また、イレギュラー反力の検出時点より前にはイレギュラー反力が検出されなかった動作が逆再生されるので、解除動作に起因する二次的なイレギュラー状態の発生を抑制することもできる。
【０１５４】
イレギュラー制御部１１３は、協調動作を実行する２台のロボット１０のうち１台のロボット１０でイレギュラー反力が検出されたときに、２台のロボット１０に協調して実行させる解除動作の動作量を、当該１台のロボット１０におけるイレギュラー反力の大きさに基づいて変更してもよい。この場合、イレギュラー反力をより確実に縮小させることができる。
【０１５５】
イレギュラー制御部１１３は、協調動作を実行する２台のロボット１０のうち１台のロボット１０で検出されたイレギュラー反力を縮小するように、２台のロボット１０に解除動作を協調して実行させた後に、当該１台のロボット１０の反力センサ６０によりイレギュラー反力が再度検出されているときに、当該イレギュラー反力を更に縮小するように、２台のロボット１０に更なる解除動作を協調して実行させてもよい。この場合、イレギュラー反力をより確実に縮小させることができる。
【０１５６】
動作制御部１１２及びイレギュラー制御部１１３は、ロボット１０の目標姿勢と現在姿勢との偏差を縮小するように当該ロボット１０を動作させることを、２台のロボット１０に対して同じ制御周期で繰り返し実行してもよい。この場合、２台のロボット１０の動作タイミングのずれが、１制御周期以下に抑制されるので、２台のロボット１０の協調状態をより確実に維持することができる。
【０１５７】
以上、実施形態について説明したが、本開示は必ずしも上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で様々な変更が可能である。例えば、上述の実施形態においては、解除動作の後、復帰指令に従って復帰動作を実行するシステムを例示したが、解除動作が完了した時点で、少なくとも解除動作を実行したロボットの動作を完了させてもよい。
【符号の説明】
【０１５８】
１…ロボットシステム、１０，１０Ａ，１０Ｂ，１０Ｃ…ロボット、１２…先端部、２０…多関節アーム、６０…反力センサ、１００，２００，３００…コントローラ、１１２，２１２…動作制御部、１１３，２１３…イレギュラー制御部、１１４，２１４…カスタマイズ部、２１５…解除動作要求部。
【図１】
0006881525.tif 000002
【図２】
0006881525.tif 000003
【図３】
0006881525.tif 000004
【図４】
0006881525.tif 000005
【図５】
0006881525.tif 000006
【図６】
0006881525.tif 000007
【図７】
0006881525.tif 000008
【図８】
0006881525.tif 000009
【図９】
0006881525.tif 000010
【図１０】
0006881525.tif 000011
【図１１】
0006881525.tif 000012
【図１２】
0006881525.tif 000013
【図１３】
0006881525.tif 000014
【図１４】
0006881525.tif 000015