以下、複数の実施形態について図面を参照しながら説明する。なお、各実施形態において、同一の構成には同一の符号を付して説明を省略する。
(第1実施形態)
以下では、第1実施形態について図1から図8を参照して説明する。図1に示すロボット制御装置20は、例えば図2に示す多関節型のロボット10の駆動を制御するためのものである。ロボット10は、多関節すなわち多軸のアーム11を有する垂直多関節型のロボットで構成することができ、ロボット制御装置20によって制御される。なお、ロボット10は、例えば水平多関節型のロボットやパラレルリンク側のロボット、直交型のロボット等で構成することもできる。
ロボット10は、図2に示す複数の関節を有する多軸のアーム11の他、図1に示すように、複数のモータ12及び位置センサ13を有している。モータ12及び位置センサ13の数は、アーム11の関節数によって異なる。なお、図1では、説明を簡単にするため1つのモータ12及び位置センサ13のみを示している。各モータ12は、アーム11の各関節を動作させるためのものであり、ロボット制御装置20によって駆動制御される。各位置センサ13は、アーム11の各関節の角度位置を検出するためのものであり、各モータ12の図示しないモータ軸に取り付けられた例えばロータリーエンコーダで構成することができる。また、ロボット10は、例えば手先にチャック等のツール90を装着することができる。
ロボット制御装置20は、図1に示すように、例えばCPU201及び記憶領域202を備えている。記憶領域202は、ロボット10の駆動を制御するためのプログラムを記憶している。ロボット制御装置20は、記憶領域202が記憶しているプログラムをCPU201において実行することにより、アーム11が予め定められた所定の動作を自動的に実行するように各モータ12を制御する。なお、ロボット制御装置20は、例えばロボットコントローラと称されるロボット10を制御することに特化した処理装置と、パソコン等の汎用的な処理装置とを組み合わせて構成することもできる。
ロボット制御装置20は、例えば図示しないティーチングペンダントやパソコン、スマートフォン、若しくはタブレット端末等の外部装置を接続可能に構成されている。この場合、ロボット制御装置20は、ロボット制御装置20に接続される外部装置を、ロボット制御装置20に対して各種設定内容等を入力するための入力装置や、ロボット制御装置20から送信された各種情報を出力するための出力装置として機能させることができる。
ロボット制御装置20は、図1に示すように、駆動部21、設定処理部22、算出処理部23、安全監視部24、及び通常制御部25を備えている。駆動部21は、例えばインバータ回路等の駆動回路を含んで構成されている。駆動部21は、通常制御部25で発行される動作指令を受け取り、その動作指令に基づいて各モータ12を駆動させてロボット10を動作させる機能を有する。動作指令は、ロボット10の動作に関し、例えばロボット10の特定部位の移動先の位置つまり目標位置や動作速度に関する指令を含んでいる。また、駆動部21は、安全監視部24で発行される停止指令を受け取ると、各モータ12を停止させてロボット10の動作を緊急停止させる機能を有する。
設定処理部22は、設定処理を実行可能である。設定処理は、ロボット10の動作に先立って予め指定領域A1を設定し記憶領域202に記憶させる処理を含む。指定領域A1は、図2に示すように、ロボット10の特定部位の可動範囲A0内であって、かつ、人等の侵入を許す領域すなわちロボット10の侵入を禁止する範囲である。可動範囲A0を決定するためのロボット10の特定部位は、例えば人等に接触した場合に危険な任意の部位を設定することができる。例えばロボットの特定部位Rは、図2に示すように、アーム11を最大まで伸ばした場合の最先端部に設定することができる。この場合、例えばロボット10の手先にツールが装着されている場合、そのツール90を含めて最先端の部位を特定部位Rとして設定することができる。すなわち、ロボット10の可動範囲A0は、ツール90を含めて考慮することができる。
ここで、可動範囲A0のうち指定領域A1以外の領域、この場合、指定領域A1の内側の領域は、ロボット10の動作領域A2となる。動作領域A2は、ロボット10の動作が許可された領域、すなわち人等の侵入が禁止された領域である。換言すれば、動作領域A2は、人等の侵入を防ぐ必要がある領域である。この場合、設定処理は、例えば作業者が指定領域A1を直接指定する構成でも良いし、例えば作業者が動作領域A2を指定することで間接的に指定領域A1が指定される構成でも良い。また、設定処理は、例えばロボット制御装置20に接続された図示しない外部装置を作業者が操作することで、ロボット制御装置20に対して設定情報を入力するように構成することができる。
なお、図2に示された境界線Plimは、指定領域A1と動作領域A2との境界を示している。この場合、指定領域A1と動作領域A2との境界つまり境界線Plim上には、図2には示していないが、人等が動作領域A2内に侵入することを防ぐための柵等を設けることが好ましい。この場合に設ける柵は、人等の侵入防止を主目的としており、ロボット10が高速で衝突することがないため、衝突から人等を保護するための強度は要しない。
算出処理部23は、ロボット10の位置センサ13からアーム11の各関節の位置情報を受け取るとともに、算出処理を実行可能である。算出処理は、例えば位置センサ13が検出したアーム11の各関節の現在の角度位置から、ロボット10の現在の姿勢や位置、及び現在の動作速度を算出する、つまりアーム11の現在の姿勢や特定部位Rの位置、及び各関節の動作速度を算出する処理を含む。算出処理部23は、算出処理によって算出したロボット10の現在の姿勢や特定部位Rの位置及び動作速度を、安全監視部24及び通常制御部25に受け渡す。なお、算出処理部23は、例えば安全監視部24又は通常制御部25に組み込まれていても良い。
安全監視部24は、例えば記憶領域202に記憶されている動作プログラムを実行することにより、ロボット10の動作を監視し、ロボット10の動作中にロボット10の特定部位Rが指定領域A1内に侵入する可能性が生じた場合に、駆動部21に対して停止指令を発行する機能を有する。駆動部21は、安全監視部24から停止指令を受け取ると、モータ12を停止させてアーム11の動作つまりロボット10の動作を緊急停止させる。この場合、駆動部21は、停止指令を最優先で実行する。すなわち、駆動部21は、停止指令と同時に例えば動作指令を受け取った場合、動作指令よりも停止指令を優先して、ロボット10を緊急停止させる。
本実施形態の場合、安全監視部24は、第1予測処理部241、及び監視処理部としての第1監視処理部242を有している。この場合、安全監視部24は、CPU201とは異なる図示しないCPUを有していても良い。そして、第1予測処理部241及び第1監視処理部242は、安全監視部24が有する図示しないCPUにおいて所定のプログラムを実行することでソフトウェアによって仮想的に実現しても良いし、集積回路等によってハードウェア的に実現しても良い。
第1予測処理部241は、算出処理部23からロボット10の現在の姿勢や特定部位Rの位置及び動作速度を受け取る。そして、第1予測処理部241は、第1予測処理を実行可能である。第1予測処理は、算出処理部23で算出されたロボット10の現在の姿勢や特定部位Rの位置及び動作速度に基づいて、図3等に示す第1停止予測位置Ps1を予測する処理を含む。
第1停止予測位置Ps1は、現在の位置つまり現時点で停止指令を発行した場合に、ロボット10が完全に停止したときのロボット10の特定部位Rの位置を予測したものである。つまり、第1停止予測位置Ps1は、空走時間と滑走時間とを考慮した位置である。本実施形態において、空走時間とは、停止指令が発行されてからモータ12が停止のための動作を開始するまでの時間を意味する。また、滑走時間は、モータ12が停止のための減速を開始してから完全に停止するまでの間の時間を意味する。
また、本実施形態において、空走とは、空走時間中にロボット10が動作することを意味する。空走距離とは、空走によってロボット10が移動した距離つまり空走時間中にロボット10が移動した距離を意味する。また、滑走とは、滑走時間中にロボット10が動作することを意味する。そして、滑走距離とは、滑走によってロボット10が移動した距離つまり滑走時間中にロボット10が移動した距離を意味する。
例えばロボット10の特定部位Rをツール90の先端部に設定した場合、第1停止予測位置Ps1は、ロボット10の動作が完全に停止したときにツール90の先端部が存在すると予測される位置となる。第1予測処理部241は、算出した第1停止予測位置Ps1を第1監視処理部242に受け渡す。
第1監視処理部242は、監視処理部を構成するものであり、第1監視処理を実行可能である。第1監視処理は、設定処理によって予め設定された指定領域A1内に第1停止予測位置Ps1が侵入すると判断した場合に、停止指令を駆動部21に発行する処理を含む。すなわち、第1監視処理部242は、ロボット10が動作している間、常に第1停止予測位置Ps1を監視する。そして、第1監視処理部242は、指定領域A1内に第1停止予測位置Ps1が侵入することを検知すると、駆動部21に対して停止指令を発行する。
通常制御部25は、ロボット10の通常の動作つまりロボット10の特定部位Rが指定領域A1内に侵入していない場合における動作を制御する機能を有する。また、通常制御部25は、ロボット10の動作を監視し、ロボット10の動作中にロボット10の特定部位Rが指定領域A1内に侵入する可能性が生じた場合に、安全監視部24が停止指令を発行する前に、ロボット10の動作速度つまりモータ12の速度を減速させる機能を有する。
本実施形態の場合、通常制御部25は、第2予測処理部251、監視処理部としての第2監視処理部252、及び制御処理部253を有している。第2予測処理部251、第2監視処理部252、及び制御処理部253は、CPU201又は通常制御部25が有する図示しないCPUにおいて所定のプログラムを実行することでソフトウェアによって仮想的に実現しても良いし、集積回路等によってハードウェア的に実現しても良い。第2予測処理部251は、算出処理部23からロボット10の現在の姿勢や特定部位Rの位置及び動作速度を受け取る。そして、第2予測処理部251は、第2予測処理を実行可能である。第2予測処理は、算出処理部23で算出されたロボット10の現在の姿勢や特定部位Rの位置及び動作速度に基づいて、図3等に示す第2停止予測位置Ps2を予測する処理を含む。
第2停止予測位置Ps2は、第1停止予測位置Ps1と同様に、空走時間と滑走時間とを考慮した位置である。第2停止予測位置Ps2は、第1停止予測位置Ps1よりも先の位置となるようにパラメータが調整されたものである。第2停止予測位置Ps2は、現在の位置つまり現時点で停止指令を発行した場合に、ロボット10が完全に停止したときのロボット10の特定部位Rの位置を予測したものであって、かつ、第1停止予測位置Ps1よりも空走時間又は滑走時間のいずれか一方又は両方に余裕を持たせたものである。すなわち、第2停止予測位置Ps2は、第1停止予測位置Ps1よりも、より長い空走又は滑走を考慮したものである。第2予測処理部251は、算出した第2停止予測位置Ps2を第2監視処理部252に受け渡す。
第2監視処理部252は、監視処理部を構成するものであり、第2監視処理を実行可能である。第2監視処理は、設定処理によって予め設定された指定領域A1内に第2停止予測位置Ps2が侵入すると判断した場合に、制御処理部253に対して減速指令を発行する。すなわち、第2監視処理部252は、ロボット10が動作している間、常に第2停止予測位置Ps2を監視する。そして、第2監視処理部252は、指定領域A1内に第2停止予測位置Ps2が侵入することを検知すると、制御処理部253に対して減速指令を発行する。減速指令は、ロボット10の動作速度を現在の動作速度から減速させるための指令である。
制御処理部253は、制御処理を実行可能である。制御処理は、駆動部21に動作指令を発行する処理を含む。制御処理部253は、減速指令を受け取っていない場合、通常の動作速度つまり予め設定された動作速度でロボット10を動作させるための動作指令を発行する。一方、制御処理部253は、減速指令を受け取った場合、ロボット10を現在の動作速度から減速させるための動作指令を発行する。この場合、駆動部21は、ロボット10を現在の動作速度から減速させるための動作指令を受け取ると、ロボット10の動作速度を現在の動作速度から減速させる。
本実施形態の場合、安全監視部24は機能安全に関する規格を満たしたものであり、一方で、通常制御部25は機能安全に関する規格を満たしていないものである。すなわち、本実施形態の場合、第1予測処理部241及び第1監視処理部242は、機能安全に関する規格を満たしている。一方、第2予測処理部251及び第2監視処理部252は、機能安全に関する規格を満たさないものとすることができる。この場合、機能安全を満たしている安全監視部24は、安全系と称することができ、機能安全を満たしていない通常制御部25は、非安全系と称することができる。
安全監視部24に求められる機能安全に関する規格とは、例えばISO10218等に規定されており、多重化若しくは多重安全の考えに基づくものである。安全監視部24は、例えば複数系統の第1予測処理部241及び第1監視処理部242を有することで機能安全に関する規格を満たすことができる。これより、安全監視部24は、1つの系統の第1予測処理部241及び第1監視処理部242が故障等で十分機能しなかった場合でも、他の系統が機能することにより、ロボット10の監視及び停止指令を発行できるように構成されている。
次に、第1予測処理及び第2予測処理の一例つまり第1停止予測位置Ps1及び第2停止予測位置Ps2の算出方法の一例について説明する。図3に示すグラフは、横軸が時間t、縦軸がロボット10の特定部位Rの位置Pとし、時間tの経過に対するロボット10の特定部位Rの位置Pの変化を概念的に示したものである。この場合、現時点t0は現在の時点を示している。そして、現時点t0の左側は過去つまり実測値を示しており、現時点t0の右側は未来つまり予測値を示している。この場合、現在位置P0は、現時点t0におけるロボット10の特定部位Rの位置つまり算出処理部23で算出された値となる。また、第1停止予測位置Ps1及び第2停止予測位置Ps2は、それぞれ第1予測処理部241及び第2予測処理部251で算出された予測値となる。
まず、第1予測処理について説明する。本実施形態において、第1予測処理は、現時点t0から第1予測空走時間tr1の経過後にロボット10の停止のための減速が開始するものとして第1停止予測位置Ps1を予測する処理を含んでいる。第1予測処理部241は、ロボット10の現在位置P0、ロボット10の現在速度V0、第1予測空走時間tr1、及び減速予測関数Sを用いて第1予測処理を実行することで、第1停止予測位置Ps1を算出することができる。ロボット10の現在位置P0及び現在速度V0は、算出処理部23で算出されたもの、つまり位置センサ13の実測値に基づくものである。第1予測空走時間tr1は、第1停止予測位置Ps1を予測する際に用いる空走時間である。第1予測空走時間tr1は、停止指令を発行してからモータ12が停止のための減速を開始するまでの時間差を想定したものであり、例えば反応時間やリアクションタイムと称することがある。
第1予測空走時間tr1は、例えばユーザ等によって予め設定され、また、ロボット10の特性に合わせて適宜設定される。この場合、第1予測空走時間tr1は、ロボット10を瞬時停止させた場合のモータ12のリアクションタイム、つまりロボット10の性能上の限界となる最短のリアクションタイムよりも長くなるように設定される。
減速予測関数Sは、モータ12が停止のための減速を開始してから完全に停止するまでの期間のロボット10の移動距離を算出するための関数であり、ロボット10の位置と速度が入力値となる。減速予測関数Sは、ロボット10の姿勢と速度を入力としたロボット10の運動方程式を解いて緊急停止する期間中の加速度を求め、その加速度を積分することによって実現することができる。減速予測関数Sは、例えばロボット10の関節数やアーム11の長さ等によって適宜設定される。
第1予測処理部241は、まず、現在位置P0、第1予測空走時間tr1、及び現在速度V0を用いて、下記の式1に従って第1減速開始予測位置Pr1を求める。第1減速開始予測位置Pr1は、現時点t0から第1予測空走時間tr1が経過した時点のロボット10の位置を予測したものである。
Pr1=P0+tr1×V0…(式1)
次に、第1予測処理部241は、減速予測関数S、現在速度V0、及び上記式1で算出した第1減速開始予測位置Pr1を用いて、下記の式2に従って第1停止予測位置Ps1を算出する。なお、この場合、現時点t0から第1予測空走時間tr1が経過するまではロボット10は減速及び加速しないため、現時点t0から第1予測空走時間tr1が経過した時点のロボット10の速度は、現在速度V0に等しいものとして扱うことができる。
Ps1=Pr1+S(Pr1,V0)…(式2)
次に第2予測処理について説明する。本実施形態において、第2予測処理は、現時点t0から、第1予測空走時間tr1よりも長い時間に設定された第2予測空走時間tr2の経過後にロボット10の停止のための減速が開始するものとして第2停止予測位置Ps2を予測する処理を含んでいる。すなわち、第2予測処理部251は、ロボット10の現在位置P0、ロボット10の現在速度V0、第2予測空走時間tr2、及び減速予測関数Sを用いて第2予測処理を実行することで、第2停止予測位置Ps2を算出することができる。本実施形態の場合、第2予測処理は、第1予測処理で用いる減速予測関数Sと同一の減速予測関数Sを用いることができる。この場合、第1予測処理と第2予測処理とでは、減速予測関数Sに入力する減速開始予測位置Pr1、Pr2が異なるのみである。
第2予測空走時間tr2は、第2停止予測位置Ps2を予測する際に用いる空走時間である。第2予測空走時間tr2は、第1予測空走時間tr1と同様に、停止指令を発行してからモータ12が停止のための減速を開始するまでの時間差を想定した時間であり、例えば反応時間やリアクションタイムと称することがある。第2予測空走時間tr2も、予め設定される。例えば設定処理部22は、第1予測空走時間tr1の値に応じて自動で第2予測空走時間tr2を設定する。この場合、設定処理部22は、第2予測空走時間tr2を第1予測空走時間tr1よりも長く設定する。例えば第2予測空走時間tr2は、第1予測空走時間tr1の2倍以上に設定される。これにより、第2停止予測位置Ps2が、第1停止予測位置Ps1よりも先の位置となるように調整される。
第2予測処理部251は、まず、現在位置P0、第2予測空走時間tr2、及び現在速度V0を用いて、下記の式3に従って第2減速開始予測位置Pr2を求める。第2減速開始予測位置Pr2は、現時点t0から第2予測空走時間tr2が経過した時点のロボット10の位置を示している。
Pr2=P0+tr2×V0…(式3)
次に、第2予測処理部251は、減速予測関数S、現在速度V0、及び上記式3で算出した第2減速開始予測位置Pr2を用いて、下記の式4に従って第2停止予測位置Ps2を算出する。なお、この場合、第1予測処理と同様に、現時点t0から第2予測空走時間tr2が経過するまではロボット10は減速及び加速しないため、現時点t0から第2予測空走時間tr2が経過した時点のロボット10の速度は、現在速度V0に等しいもとして扱うことができる。
Ps2=Pr2+S(Pr2,V0)…(式4)
次に、図4から図8も参照して、安全監視部24及び通常制御部25で実行される制御フローについて説明する。なお、図6から図8の(A)に示すグラフは、図3に示すグラフと同様に、横軸が時間t、縦軸がロボット10の特定部位Rの位置Pとしており、時間tの経過に対するロボット10の特定部位Rの位置Pの変化を概念的に示したものである。この場合、図6から図8の(A)に示された境界線Plimは、図2で示した指定領域A1と動作領域A2との境界線を示している。図6から図8の(A)において、境界線Plimの上側は指定領域A1となり、境界線Plimの下側は動作領域A2となる。
また、図6から図8の(B)に示すグラフは、横軸が時間t、縦軸がロボット10の特定部位Rの動作速度Vとしており、時間tの経過に対するロボット10の特定部位Rの動作速度Vの変化を概念的に示したものである。また、図7の(B)に破線で示す動作速度Vxは、減速指令及び停止指令のいずれもが発行されなかった場合におけるロボット10の特定部位Rの実際の速度を概念的に示したものである。
また、図7の(A)に破線で示す位置Pxは、減速指令の発行によってロボット10の特定部位Rの実際の位置が変化する様子を概念的に示したものであり、図7の(B)に破線で示す動作速度Vxは、減速指令の発行によってロボット10の特定部位Rの実際の速度が変化する様子を概念的に示したものである。そして、図8の(A)に破線で示す位置Pxは、停止指令の発行によってロボット10の特定部位Rの実際の位置が変化する様子を概念的に示したものであり、図8の(B)に破線で示す動作速度Vxは、停止指令の発行によってロボット10の特定部位Rの実際の速度が変化する様子を概念的に示したものである。
ロボット10が動作している間、通常制御部25は図4に示す処理を実行するとともに、安全監視部24は図5に示す処理を実行する。この場合、図4に示す処理において、ステップS12は第2停止位置予測処理に相当し、ステップS13は第2監視処理に相当する。また、図5に示す処理において、ステップS22は第1停止位置予測処理に相当し、ステップS23は第1監視処理に相当する。
通常制御部25は、ロボット10の動作が開始すると、図4に示す処理を開始する(スタート)。そして、ステップS11において、第2予測処理部251は、算出処理部23で算出されたロボット10の現在の姿勢や特定部位Rの位置P0及び現在速度V0を取得する。次に、ステップS12において、第2予測処理部251は、第2予測処理を実行して、第2停止予測位置Ps2を算出する。その後、ステップS13において、第2監視処理部252は、第2監視処理を実行して、第2停止予測位置Ps2が指定領域A1内に侵入するか否かを判断する。
第2監視処理部252は、例えば図6に示すように第2停止予測位置Ps2が指定領域A1内に侵入しないつまり境界線Plimを超えないと判断した場合(図4のステップS13でNO)、ステップS11へ処理を戻す。そして、通常制御部25は、ステップS11以降を再度実行する。この場合、ロボット10の動作速度Vxは、図6の(B)に示すように、減速されずに所定の速度が維持される。
一方、第2監視処理部252は、例えば図6に示すように第2停止予測位置Ps2が指定領域A1内に侵入するつまり境界線Plimを超えると判断した場合(ステップS13でYES)、ステップS14へ処理を移行させる。そして、第2監視処理部252は、ステップS14において、制御処理部253に対して減速指令を発行する。そして、減速指令を受けた制御処理部253は、駆動部21に対して減速させるための動作指令を発行し、これにより、図7の(B)に示すようにロボット10の動作速度Vxが減速される。そして、通常制御部25は、ステップS11へ処理を戻し、ステップS11以降を繰り返す。
第2監視処理部252は、第2停止予測位置Ps2が指定領域A1内に侵入すると判断している間、減速指令を発行し続ける。これより、ロボット10の特定部位Rが指定領域A1内に侵入する危険性がある間、ロボット10の動作速度Vxが減速し続ける(ステップS13でYES)。そして、ロボット10の動作速度Vxが十分に減速されて第2停止予測位置Ps2が指定領域A1内に侵入しなくなる、つまり図6の(A)に示すようなグラフになると(図4のステップS13でNO)、第2監視処理部252は、減速指令の発行を停止し、その結果、図7(B)の減速終了時点te以降に示すようにロボット10の減速が終了する。
次に安全監視部24における制御内容を説明する。安全監視部24は、ロボット10の動作が開始すると、図5に示す処理を開始する(スタート)。第1予測処理部241は、まずステップS21において、算出処理部23から、算出処理部23で算出されたロボット10の現在の姿勢や特定部位Rの現在位置P0及び現在速度V0を取得する。次に、第1予測処理部241は、ステップS22において、第1予測処理を実行して、第1停止予測位置Ps1を算出する。その後、ステップS23において、第1監視処理部242は、第1監視処理を実行して、第1停止予測位置Ps1が指定領域A1内に侵入するか否かを判断する。
安全監視部24は、例えば図6及び図7の(A)に示すように、第1停止予測位置Ps1が指定領域A1内に侵入しないつまり境界線Plimを超えないと判断した場合(ステップS23でNO)、ステップS21へ処理を戻し、ステップS21以降を実行する。この場合、ロボット10の動作速度Vxは、制御処理部253から発行される動作指令の内容に従う。
一方、第1監視処理部242は、例えば図8に示すように第1停止予測位置Ps1が指定領域A1内に侵入するつまり境界線Plimを超えると判断した場合(図5のステップS23でYES)、ステップS24へ処理を移行させる。そして、第1監視処理部242は、ステップS24において、駆動部21に対して停止指令を発行する。停止指令を受けた駆動部21は、制御処理部253から受けた動作指令の内容に係わらず、モータ12を停止させてロボット10を緊急停止させる。そして、安全監視部24は、詳細は図示しないが例えばユーザに対してエラーを報知する等し、その後、一連の制御を終了する(エンド)。
以上説明した実施形態によれば、ロボット制御装置20は、多関節型のロボット10を駆動制御するロボット制御装置である。ロボット制御装置20は、駆動部21と、制御処理部253と、算出処理部23と、第1予測処理部241と、第1監視処理部242と、第2予測処理部251と、第2監視処理部252と、を備える。
駆動部21は、ロボット10の動作を指令する動作指令を受け取り動作指令に基づいてロボット10を動作させるとともに停止指令を受け取った場合にロボット10を緊急停止させる機能を有する。制御処理部253は、駆動部21に動作指令を発行する制御処理を実行可能である。算出処理部23は、算出処理を実行可能である。算出処理は、ロボット10の現在の姿勢、位置P0、及び速度V0を算出する処理を含む。
第1予測処理部241は、第1予測処理を実行可能である。第1予測処理は、ロボット10の現在の姿勢、位置P0、及び速度V0に基づいて、ロボット10の現在の位置P0で停止指令を発行した場合にロボット10が停止する位置である第1停止予測位置Ps1を予測する処理を含む。第1監視処理部242は、第1監視処理を実行可能である。第1監視処理は、予め設定された指定領域A1内に第1停止予測位置Ps1が侵入すると判断した場合に停止指令を駆動部21に発行する処理を含む。
第2予測処理部251は、第2予測処理を実行可能である。第2予測処理は、第1停止予測位置Ps1よりも先の位置となるように調整された第2停止予測位置Ps2を予測する処理を含む。そして、第2監視処理部252は、第2監視処理を実行可能である。第2監視処理は、指定領域A1内に第2停止予測位置Ps2が侵入すると判断した場合にロボット10の速度を現在の速度V0から減速させる減速指令を制御処理部253に発行する処理を含む。
これによれば、ロボット制御装置20は、ロボット10が動作している間、緊急停止させるための基準となる第1停止予測位置Ps1を監視するとともに、減速させるための基準となる第2停止予測位置Ps2を監視する。そして、第2停止予測位置Ps2は、第1停止予測位置Ps1に対して先の位置にとなるように設定されている。つまり、第2停止予測位置Ps2は、第1停止予測位置Ps1に対して、ロボット10が停止するまでの距離この場合空走距離に余裕を持って設定されている。そのため、第2停止予測位置Ps2は、第1停止予測位置Ps1に比べて、指定領域A1内への侵入が先に検知される。そして、ロボット制御装置20は、第2停止予測位置Ps2が指定領域A1内に侵入すると判断した場合には、ロボット10を停止させるのではなく減速させる。
このように、ロボット10を減速させることで、緊急停止させた際の滑走による移動距離を短くすることができ、その結果、ロボット10が指定領域A1に侵入する危険性を低下させることができる。これにより、第1停止予測位置Ps1までもが指定領域A1内に侵入して停止指令が発行されることを回避でき、その結果、ロボット10の動作速度を無駄に制限させたり無駄に停止させたりすることを抑制できる。一方で、ロボット10を減速させたにも係わらず、万一、第1停止予測位置Ps1が指定領域A1内に侵入すると判断された場合には、停止信号を発行してロボット10を緊急停止させる。これらの結果、ロボット10の性能を無駄に制限することなく、かつ、限られた狭いスペースでも安全にロボット10を使用することができる。
ここで、ロボット10が緊急停止した場合、例えば作業者等がロボット10の周囲の安全を確認したうえでロボット10の動作を復帰させる必要がある。このため、一旦ロボット10が緊急停止してしまうと、ロボット10の復帰に手間と時間がかかる。これに対し、本実施形態によれば、ロボット10を減速させてしまうものの、緊急停止を回避して動作させ続けることができるため、緊急停止の復帰に伴う手間や時間を削減することができる。
また、本実施形態の場合、第1予測処理は、現時点t0から第1予測空走時間tr1の経過後にロボット10の停止のための減速が開始するものとして第1停止予測位置Ps1を予測する処理を含む。また、第2予測処理は、現時点t0から、第1予測空走時間tr1よりも長い時間に設定された第2予測空走時間tr2の経過後にロボット10の停止のための減速が開始するものとして第2停止予測位置Ps2を予測する処理を含む。
これによれば、例えば第1停止予測位置Ps1と第2停止予測位置Ps2との算出に、同一の減速予測関数Sを用いることができる。その結果、例えば第1停止予測位置Ps1と第2停止予測位置Ps2との算出するためのパラメータの大部分を共通化できるため、第1停止予測位置Ps1と第2停止予測位置Ps2との算出するための設定を簡単なものとすることができる。
ここで、安全監視部24つまり第1予測処理部241及び第1監視処理部242は、ロボット10の緊急停止を担うものであるため、機能安全に関する規格を満たす必要がある。この場合、第2予測処理部251及び第2監視処理部252つまり通常制御部25の機能も、安全監視部24に組み込んで機能安全に関する規格を満たすように構成することも考えられる。すなわち、安全監視部24と通常制御部25とを同一のハードウェアで構成することも考えられる。しかしながら、通常制御部25の機能を安全監視部24に組み込もうとすると、制御処理部253や駆動部21も機能安全に関する規格を満たすようにしなければならず、構成が複雑となって実装コストも増大する。
これに対し、本実施形態では、第2予測処理部251及び第2監視処理部252は、ロボット10の緊急停止を担うものではない。また、通常制御部25は、第1停止予測位置Ps1が指定領域A1への侵入することを安全監視部24が検知するよりも先に、第2停止予測位置Ps2の指定領域A1への侵入を検知することができる。そのため、第2予測処理部251及び第2監視処理部252は、機能安全に関する規格を満たす必要がなく非安全系となる通常制御部25に第2予測処理部251及び第2監視処理部252を組み込むことができる。
このように、本実施形態によれば、ロボット制御装置20は、監視処理部として、第1監視処理を実行可能な第1監視処理部242と、第2監視処理を実行可能な第2監視処理部252と、を有している。この場合、第1監視処理部242第2監視処理部252とは異なるハードウェアで構成されている。そして、第1予測処理部241及び第1監視処理部242は、機能安全に関する規格を満たすように構成されている。これに対し、第2予測処理部251及び第2監視処理部252は、機能安全に関する規格を満たさなくても良い。これによれば、第2予測処理部251及び第2監視処理部252を安全監視部24に組み込む場合に比べて、構成を簡単にでき実装コストの増大を抑制することができる。
(第2実施形態)
第2実施形態について、図9を参照して説明する。本実施形態において、ロボット制御装置20は、第2予測処理部251に換えて、補正処理部254を有している。補正処理部254は、第2予測処理を実行可能である。本実施形態の第2予測処理は、第1予測処理で予測された第1停止予測位置Ps1を補正することによって第2停止予測位置Ps2を予測する処理を含んでいる。補正処理部254は、第1予測処理で予測された第1停止予測位置Ps1を読み取り、その第1停止予測位置Ps1を補正することで第2停止予測位置Ps2を算出する。
すなわち、本実施形態では、減速予測関数Sの計算を安全監視部24でのみ行い、補正処理部254つまり通常制御部25では減速予測関数Sの計算を行わない。この場合、第2停止予測位置Ps2は、下記の式5により表すことができる。そして、式5に上述した式1~式3を代入すると、第2停止予測位置Ps2を下記の式6で表すことができる。この場合、第1予測空走時間tr1と第2予測空走時間tr2との差が十分に小さい、つまり第1減速開始予測位置Pr1と第2減速開始予測位置Pr2との差が大きくなければ、第2停止予測位置Ps2に大きな誤差は生じない。
Ps2=Pr2+S(Pr1,V0)…(式5)
Ps2=Ps1+Pr2-Pr1…(式6)
このように、本実施形態によれば、補正処理部254が、第1予測処理で予測された第1停止予測位置Ps1を読み取り、その第1停止予測位置Ps1を補正することで第2停止予測位置Ps2を算出することで、補正処理部254の計算量を低減することができる。すなわち、本実施形態によれば、第2停止予測位置Ps2の算出に伴う通常制御部25の負荷の増大を抑制することができる。
(その他の実施形態)
なお、本発明は上記し且つ図面に記載した各実施形態に限定されるものではなく、その要旨を逸脱しない範囲で任意に変形、組み合わせ、あるいは拡張することができる。
上記各実施形態で示した数値などは例示であり、それに限定されるものではない。
また、上記各実施形態は、適宜組み合わせることができる。
例えば、安全監視部24と通常制御部25とは、異なるハードウェアで構成することが好ましいが、同一のハードウェアで構成することもできる。また、例えば上述した実施形態では、減速予測関数Sを用いて第1予測処理及び第2予測処理を行ったが、減速予測関数Sを用いずに第1予測処理及び第2予測処理を行うこともできる。減速予測関数Sを用いずに第1予測処理及び第2予測処理を行う方法としては、例えば最悪条件における加速度を線形予測する方法を採用することもできる。これによれば、減速予測関数Sを用いた場合に比べて、予測精度は下がるものの計算量を少なくすることができるため、処理の負荷を低減することができる。
本開示は、実施例に準拠して記述されたが、本開示は当該実施例や構造に限定されるものではないと理解される。本開示は、様々な変形例や均等範囲内の変形をも包含する。加えて、様々な組み合わせや形態、さらには、それらに一要素のみ、それ以上、あるいはそれ以下、を含む他の組み合わせや形態をも、本開示の範疇や思想範囲に入るものである。