(57)【要約】【課題】人とロボットとが共存する環境下で、人の安全を確保しつつ、生産効率およびスペース効率の低下を回避する。【解決手段】干渉判定装置（１０）は、作業者（５０）およびロボット（３０）の各々についての、現時点における位置および速度ベクトルを用いて、作業者（５０）とロボット（３０）との干渉の可能性を判定する。【選択図】図１
2020093373.tif 000002
【特許請求の範囲】
【請求項１】
所定の領域内に存在する対象物の現時点における現在位置および現在速度ベクトルを取得する対象物状態取得部と、
ロボットにおける所定の可動部の現時点における現在位置および現在速度ベクトルを取得するロボット状態取得部と、
前記対象物の前記現在位置および前記現在速度ベクトルと、前記可動部の前記現在位置および前記現在速度ベクトルとに基づき、前記対象物と前記可動部との接触が生じる可能性があるか否かをリアルタイムで判定する干渉判定部と、
を備えるロボット干渉判定装置。
【請求項２】
前記ロボットは、複数のアームが複数の関節で接続されている多関節マニピュレータを備えており、前記可動部は、前記多関節マニピュレータの所定の１以上の部分である請求項１に記載のロボット干渉判定装置。
【請求項３】
前記干渉判定部は、前記対象物の前記現在位置および前記現在速度ベクトルを取得した時点から、前記可動部の移動停止動作が開始し、前記可動部の移動が停止するまでの時間における、前記対象物の推定位置と前記可動部の推定位置との距離が所定値以内となる場合に、前記対象物と前記可動部との接触が生じる可能性があると判定する請求項１または２に記載のロボット干渉判定装置。
【請求項４】
前記対象物状態取得部は、非接触で前記対象物の二次元または三次元位置を計測する計測装置による計測結果の履歴に基づき、前記対象物の前記現在位置および前記現在速度ベクトルを取得する請求項１〜３のいずれか一項に記載のロボット干渉判定装置。
【請求項５】
前記ロボット状態取得部は、前記ロボットの動作を制御するロボット制御装置から制御情報を取得することにより、前記可動部の前記現在位置および前記現在速度ベクトルを取得する請求項１〜４のいずれか一項に記載のロボット干渉判定装置。
【請求項６】
前記干渉判定部が、前記対象物と前記可動部との接触が生じる可能性があると判定した場合に、前記ロボットの動作を制御するロボット制御装置に対して干渉回避を指示する指示信号を送信する指示部をさらに備える請求項１〜５のいずれか一項に記載のロボット干渉判定装置。
【請求項７】
前記干渉判定部が、前記対象物と前記可動部との接触が生じる可能性があると判定した場合に、前記指示部は、前記ロボット制御装置に対して、前記可動部の移動速度および軌道の少なくともいずれか一方の調整指示を示す前記指示信号を送信する請求項６に記載のロボット干渉判定装置。
【請求項８】
前記指示部による前記調整指示の後に、前記干渉判定部が、前記対象物と前記可動部との接触が生じる可能性がないと判定した場合に、前記指示部は、前記ロボット制御装置に対して、前記可動部の移動速度および軌道の少なくともいずれか一方を、前記調整指示が行われる前の状態に戻す指示を示す前記指示信号を送信する請求項７に記載のロボット干渉判定装置。
【請求項９】
前記干渉判定部が、前記対象物と前記可動部との接触が生じる可能性を示す可能性評価値が第１の閾値以上であると判定した場合に、前記指示部は、前記ロボット制御装置に対して、前記可動部の移動速度および軌道の少なくともいずれか一方の調整指示を示す前記指示信号を送信するとともに、
前記可能性評価値が、前記第１の閾値よりも高い第２の閾値以上となったと前記干渉判定部が判定した場合に、前記指示部は、前記ロボット制御装置に対して、前記可動部を停止させる指示を示す前記指示信号を送信する請求項７に記載のロボット干渉判定装置。
【請求項１０】
所定の領域内に存在する対象物の現時点における現在位置および現在速度ベクトルを取得する対象物状態取得ステップと、
ロボットにおける所定の可動部の現時点における現在位置および現在速度ベクトルを取得するロボット状態取得ステップと、
前記対象物の前記現在位置および前記現在速度ベクトルと、前記可動部の前記現在位置および前記現在速度ベクトルとに基づき、前記対象物と前記可動部との接触が生じる可能性があるか否かをリアルタイムで判定する干渉判定ステップと、
を含むロボット干渉判定方法。
【請求項１１】
請求項６〜９のいずれか一項に記載のロボット干渉判定装置から前記指示信号を受信する受信部と、
前記指示信号に基づき、前記ロボットの動作を制御するロボット制御部と、
を備えるロボット制御装置。
【請求項１２】
請求項６〜９のいずれか一項に記載のロボット干渉判定装置と、
請求項１１に記載のロボット制御装置と、
非接触で前記対象物の二次元または三次元位置を計測し、計測結果を前記ロボット干渉判定装置に送信する計測装置と、
を備えるロボット制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットと作業者などの検出対象物とが共存する環境下において、両者が接触等する可能性を判定するロボット干渉判定装置等に関する。
【背景技術】
【０００２】
従来、工場等の生産現場においてロボットと作業者とが不用意に接触するのを回避するための各種の試みが知られている。例えば、安全柵などによって人の作業エリアとロボットの作業エリアとを隔離する方法が知られているが、この方法では人とロボットとの協調作業が実行できず、生産効率およびスペース効率が低い。また、例えば、下掲の特許文献１および２には、ロボットの周囲に予め設けておいた領域内への人の侵入を監視してロボットの動作を制御したり、ロボットのトルクを制限したりする試みが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−２０８００２号公報
【特許文献２】ドイツ公開特許公報第  ＤＥ  １０２０１６２２２２４５  Ａ１
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述のような従来技術には、以下に示すような課題がある。すなわち、固定の監視エリア内への人の侵入を検知してロボット動作を抑制する従来技術は、監視エリア内に人が侵入すると、人の安全が確保されている場合であっても、ロボット動作を抑制するので、生産効率およびスペース効率が低下する傾向がある。また、ロボットのトルクを制限する従来技術は、人の安全が確保されている場合であっても、ロボットのトルクを制限するので、生産効率が低下する傾向がある。
【０００５】
本発明の一態様は、前記の問題点に鑑みてなされたものであり、工場等の生産現場において作業者等の安全を確保しつつ、生産効率およびスペース効率の低下を回避したロボット干渉判定装置等を実現することを目的としている。
【課題を解決するための手段】
【０００６】
上記の課題を解決するために、本発明の一態様に係るロボット干渉判定装置は、所定の領域内に存在する対象物の現時点における現在位置および現在速度ベクトルを取得する対象物状態取得部と、ロボットにおける所定の可動部の現時点における現在位置および現在速度ベクトルを取得するロボット状態取得部と、前記対象物の前記現在位置および前記現在速度ベクトルと、前記可動部の前記現在位置および前記現在速度ベクトルとに基づき、前記対象物と前記可動部との接触が生じる可能性があるか否かをリアルタイムで判定する干渉判定部と、を備えている。
【０００７】
前記の構成によれば、前記ロボット干渉判定装置は、前記対象物の前記現在位置および前記現在速度ベクトルと、前記可動部の前記現在位置および前記現在速度ベクトルとを取得する。そして、前記ロボット干渉判定装置は、前記対象物の前記現在位置および前記現在速度ベクトルと、前記可動部の前記現在位置および前記現在速度ベクトルとに基づき、前記対象物と前記可動部との接触が生じる可能性があるかを、リアルタイムで判定する。
【０００８】
前記ロボット干渉判定装置は、安全柵を用いずに前記ロボットと前記対象物との干渉を回避することができるので、生産現場等の省スペース化を実現することができる。
【０００９】
また、前記ロボット干渉判定装置は、前記対象物および前記可動部の各々の、前記現在位置および前記現在速度ベクトルを用いて、リアルタイムで、前記対象物と前記可動部との接触の可能性を判定することで、生産効率の低下を抑制する。
【００１０】
ここで、予め設けておいた領域内への人の侵入を監視してロボットの動作を制御する従来の方式は、人の安全が確保されている低い場合であっても、侵入を検知すると、ロボット動作を抑制するので、生産効率およびスペース効率が低下する。すなわち、人およびロボットの各々の位置および速度ベクトルは時々刻々と変化するにもかかわらず、この方式では、固定の基準を用いて、人とロボットとの干渉の可能性を判定するため、人の安全が確保されている場合にも、干渉の可能性があると判定してしまう。その結果、この方式は、人の安全が確保されている場合にも、人との干渉を回避する動作をロボットにさせたりするなどして、生産効率の低下を招いてしまう。
【００１１】
また、ロボットのトルクを制限する従来の方式も、固定の基準を用いて人とロボットとの干渉の可能性を判定する従来の方式と同様に、人の安全が確保されている場合であっても、ロボットのトルクを制限するので、やはり生産効率の低下を招いてしまう。
【００１２】
これに対して、前記ロボット干渉判定装置は、時々刻々と変化する前記対象物および前記可動部の各々の、前記現在位置および前記現在速度ベクトルを用いて、接触の可能性を時々刻々に判定する。そして、前記ロボット干渉判定装置は、前記対象物と前記可動部との接触の可能性が具体化した時に初めて、両者の接触の可能性があると判定する。
【００１３】
すなわち、前記ロボット干渉判定装置は、時々刻々と変化する前記対象物および前記可動部の各々の、前記現在位置および前記現在速度ベクトルから、前記対象物と前記可動部との接触の可能性を具体的に判定する。つまり、前記ロボット干渉判定装置は、時々刻々と変化する、前記対象物および前記可動部の各々の状態に応じて、前記対象物と前記可動部との接触の可能性が具体化した時に初めて、両者の接触の可能性があると判定する。
【００１４】
したがって、前記ロボット干渉判定装置は、工場等の生産現場において、例えば作業者等である前記対象物と前記ロボットとの干渉を回避しつつ、生産効率およびスペース効率の低下を抑制することができるとの効果を奏する。
【００１５】
前述の通り、前記対象物は、例えば作業者等の人であり、具体的には、人の全体または人の一部であり、また、人以外のモノ（例えば、モバイルロボットなど）であってもよい。前記対象物の位置とは、前記対象物が人の全体である場合には、例えば、人の重心の位置である。前記対象物が人の一部または人以外のモノである場合には、前記対象物の位置とは、人の一部の位置、または、人以外のモノの位置である。
【００１６】
本発明の一態様に係るロボット干渉判定装置について、前記ロボットは、複数のアームが複数の関節で接続されている多関節マニピュレータを備えており、前記可動部は、前記多関節マニピュレータの所定の１以上の部分であってもよい。
【００１７】
前記の構成によれば、前記ロボット干渉判定装置は、複数のアームが複数の関節で接続されている多関節マニピュレータを備えた前記ロボットと、前記対象物との接触が生じる可能性があるかを、リアルタイムで判定する。
【００１８】
したがって、前記ロボット干渉判定装置は、工場等の生産現場において、例えば作業者等である前記対象物と、多関節マニピュレータを備えた前記ロボットとの干渉を回避しつつ、生産効率およびスペース効率の低下を抑制することができるとの効果を奏する。
【００１９】
本発明の一態様に係るロボット干渉判定装置において、前記干渉判定部は、前記対象物の前記現在位置および前記現在速度ベクトルを取得した時点から、前記可動部の移動停止動作が開始し、前記可動部の移動が停止するまでの時間における、前記対象物の推定位置と前記可動部の推定位置との距離が所定値以内となる場合に、前記対象物と前記可動部との接触が生じる可能性があると判定してもよい。
【００２０】
前記の構成によれば、前記ロボット干渉判定装置は、前記対象物の前記現在位置等を取得した時点（つまり、現時点）から、前記可動部の移動が停止するまでの時間における、前記対象物の推定位置と前記可動部の推定位置との距離が所定値以内となると、前記対象物と前記可動部との接触が生じる可能性があると判定する。
【００２１】
つまり、前記ロボット干渉判定装置は、前記可動部の移動が停止した時点での前記対象物の推定位置と前記可動部の推定位置との距離だけでなく、その途中までの各時点における前記対象物の推定位置と前記可動部の推定位置との距離を用いて、前述の判定を行う。
【００２２】
したがって、前記ロボット干渉判定装置は、現時点から、前記可動部の移動が停止するまでの各時点における、前記対象物および前記可動部の各々の推定位置を考慮して、前記対象物と前記可動部との接触の可能性を判定することができるとの効果を奏する。
【００２３】
ここで、ＩＳＯ／ＴＣ１５０６６の５．５．４．２．３において、安全距離Ｓｐは、「Ｓｐ（ｔ０）＝Ｓｈ＋Ｓｒ＋Ｓｓ＋ｃ＋Ｚｄ＋Ｚｒ」と規定されている。そして、上記の規格においては、実際の分離距離が安全距離Ｓｐ以下となると、不用意な干渉の可能性があると判定することになる。上述の定義式において、「Ｓｈ」は「現時点からロボットの移動が停止する時点までに、人が移動する距離」を、「Ｓｒ」は「現時点からロボットが停止動作を開始するまでに、ロボットが移動する距離」を示すものとする。「Ｓｓ」は「ロボットが停止動作を開始する時点からロボットの移動が停止する時点までに、ロボットが移動する距離」を示すものとする。「ｃ」は、「Ｄｅｐｔｈ  ｐｅｎｅｔｒａｔｉｏｎ  ｆａｃｔｏｒ」と呼ばれる、例えば、「人の中心（重心）等の検知位置から、その人の腕などの部分までの距離」等を示すものとする。「Ｚｄ」は「人体を検知するセンサの測定誤差」を、「Ｚｒ」は「ロボット制御における制御位置の誤差」を示すものとする。
【００２４】
安全距離Ｓｐに即して前記ロボット干渉判定装置の備える前記の構成を整理すれば、「前記対象物の推定位置」は「Ｓｈ」、「前記可動部の推定位置」は「Ｓｒ＋Ｓｓ」、「前記所定値」は「ｃ＋Ｚｄ＋Ｚｒ」に相当する。
【００２５】
本発明の一態様に係るロボット干渉判定装置において、前記対象物状態取得部は、非接触で前記対象物の二次元または三次元位置を計測する計測装置による計測結果の履歴に基づき、前記対象物の前記現在位置および前記現在速度ベクトルを取得してもよい。
【００２６】
前記の構成によれば、前記ロボット干渉判定装置は、前記対象物の計測位置の履歴を用いて、前記対象物の前記現在位置および前記現在速度ベクトルを取得する。したがって、前記ロボット干渉判定装置は、前記対象物の計測位置の履歴から算出した、高精度な前記対象物の前記現在位置および前記現在速度ベクトルを取得することができるとの効果を奏する。
【００２７】
本発明の一態様に係るロボット干渉判定装置において、前記ロボット状態取得部は、前記ロボットの動作を制御するロボット制御装置から制御情報を取得することにより、前記可動部の前記現在位置および前記現在速度ベクトルを取得してもよい。
【００２８】
前記の構成によれば、前記ロボット干渉判定装置は、前記ロボット制御装置から、前記ロボットに対する制御を規定する制御情報を取得することにより、前記可動部の前記現在位置および前記現在速度ベクトルを取得する。したがって、前記ロボット干渉判定装置は、前記制御情報から、前記可動部についての、高精度な前記現在位置および前記現在速度ベクトルを取得することができるとの効果を奏する。
【００２９】
前記制御情報は、例えば、前記ロボット制御装置が前記ロボットに対する制御を実行する際に用いる動作プログラム等であり、前記ロボット干渉判定装置は、動作プログラム等を解析して、前記可動部の現在位置および現在速度ベクトルを算出する。
【００３０】
また、前記ロボット状態取得部は、前記ロボット（特に、前記可動部）の位置情報を解析して、前記ロボット（特に、前記可動部）の現在位置および現在速度ベクトルを算出してもよい。例えば、前記ロボット状態取得部は、前記ロボット制御装置から、前記ロボット（特に、前記可動部）の位置情報を取得し、取得した位置情報の履歴に基づいて、現在位置および現在速度ベクトルを算出してもよい。
【００３１】
さらに、前記ロボット状態取得部は、前記ロボット制御装置から前記ロボットに送信される制御信号から、前記ロボット（特に、前記可動部）の現在位置および現在速度ベクトルを算出してもよい。例えば、前記ロボット状態取得部は、前記ロボット制御装置から前記ロボットに送信される制御信号の内容（各関節のモータ制御信号など）を解析して、前記ロボット（特に、前記可動部）の現在位置および現在速度ベクトルを算出してもよい。
【００３２】
本発明の一態様に係るロボット干渉判定装置は、前記干渉判定部が、前記対象物と前記可動部との接触が生じる可能性があると判定した場合に、前記ロボットの動作を制御するロボット制御装置に対して干渉回避を指示する指示信号を送信する指示部をさらに備えてもよい。
【００３３】
前記の構成によれば、前記ロボット干渉判定装置は、前記対象物と前記可動部との接触が生じる可能性があると判定した場合、前記ロボットの動作を制御するロボット制御装置に対して干渉回避を指示する指示信号を送信する。したがって、前記ロボット干渉判定装置は、接触が生じる可能性があると判定すると、前記ロボット制御装置に前記指示信号を送信して、接触を回避することができるとの効果を奏する。
【００３４】
前記指示信号は、単に干渉の可能性を警告するだけの信号（警告信号）であってもよく、接触を回避するための具体的な動作の決定は、前記ロボット制御装置に実行させてもよい。また、前記指示信号は、前記ロボットの動作内容を指示する信号であってもよく、例えば、前記ロボットの動作を停止させ、または、前記ロボットに干渉を回避させることを指示する信号であってもよい。さらに、前記指示信号は、前記ロボットの動作を詳細に規定する制御指令であってもよく、例えば、動作を停止させるまでの時間、干渉を回避するための動作の方向・時間・距離などの内容を含む信号であってもよい。
【００３５】
本発明の一態様に係るロボット干渉判定装置において、前記干渉判定部が、前記対象物と前記可動部との接触が生じる可能性があると判定した場合に、前記指示部は、前記ロボット制御装置に対して、前記可動部の移動速度および軌道の少なくともいずれか一方の調整指示を示す前記指示信号を送信してもよい。
【００３６】
前記の構成によれば、前記ロボット干渉判定装置は、前記対象物と前記可動部との接触が生じる可能性があると判定した場合、前記ロボット制御装置に対して、前記可動部の移動速度および軌道の少なくとも一方の調整指示を示す前記指示信号を送信する。したがって、前記ロボット干渉判定装置は、接触が生じる可能性があると判定すると、前記可動部の移動速度および軌道の少なくとも一方を調整させ、接触を回避することができるとの効果を奏する。
【００３７】
本発明の一態様に係るロボット干渉判定装置において、前記指示部による前記調整指示の後に、前記干渉判定部が、前記対象物と前記可動部との接触が生じる可能性がないと判定した場合に、前記指示部は、前記ロボット制御装置に対して、前記可動部の移動速度および軌道の少なくともいずれか一方を、前記調整指示が行われる前の状態に戻す指示を示す前記指示信号を送信してもよい。
【００３８】
前記の構成によれば、前記ロボット干渉判定装置は、前記調整指示の後に、前記対象物と前記可動部との接触が生じる可能性がなくなると、前記可動部の移動速度および軌道の少なくとも一方を、調整の前の状態に戻すように、前記ロボット制御装置に指示する。したがって、前記ロボット干渉判定装置は、前記調整指示の後に、前記対象物と前記可動部との接触が生じる可能性がなくなると、前記可動部の移動速度および軌道の少なくとも一方を、調整の前の状態に戻すことができるとの効果を奏する。
【００３９】
本発明の一態様に係るロボット干渉判定装置において、前記干渉判定部が、前記対象物と前記可動部との接触が生じる可能性を示す可能性評価値が第１の閾値以上であると判定した場合に、前記指示部は、前記ロボット制御装置に対して、前記可動部の移動速度および軌道の少なくともいずれか一方の調整指示を示す前記指示信号を送信するとともに、前記可能性評価値が、前記第１の閾値よりも高い第２の閾値以上となったと前記干渉判定部が判定した場合に、前記指示部は、前記ロボット制御装置に対して、前記可動部を停止させる指示を示す前記指示信号を送信してもよい。
【００４０】
前記の構成によれば、前記ロボット干渉判定装置は、前記可能性評価値が第１の閾値以上であると、前記可動部の移動速度および軌道の少なくとも一方の調整を指示し、前記可能性評価値が第２の閾値以上となると、前記可動部の停止を指示する。つまり、前記ロボット干渉判定装置は、前記対象物と前記可動部との接触が生じる可能性に応じて、前記可動部の移動を制御する。前記対象物と前記可動部との接触が生じる可能性がそれほど高くない（つまり、第１の閾値以上で第２の閾値未満である）場合、前記ロボット干渉判定装置は、前記可動部を停止させずに、前記可動部の移動速度および軌道の少なくともいずれか一方を調整する。前記対象物と前記可動部との接触が生じる可能性が第２の閾値以上である場合、前記ロボット干渉判定装置は、前記可動部を停止させる。
【００４１】
したがって、前記ロボット干渉判定装置は、接触が生じる可能性に応じて、接触を回避するに必要十分な動作を前記ロボットに実行させるので、接触を回避しつつ、生産効率およびスペース効率の低下を抑制することができるとの効果を奏する。
【００４２】
上記の課題を解決するために、本発明の一態様に係るロボット干渉判定方法は、所定の領域内に存在する対象物の現時点における現在位置および現在速度ベクトルを取得する対象物状態取得ステップと、ロボットにおける所定の可動部の現時点における現在位置および現在速度ベクトルを取得するロボット状態取得ステップと、前記対象物の前記現在位置および前記現在速度ベクトルと、前記可動部の前記現在位置および前記現在速度ベクトルとに基づき、前記対象物と前記可動部との接触が生じる可能性があるか否かをリアルタイムで判定する干渉判定ステップと、を含んでいる。
【００４３】
前記の方法によれば、前記ロボット干渉判定方法は、前記対象物の前記現在位置および前記現在速度ベクトルと、前記可動部の前記現在位置および前記現在速度ベクトルとを取得する。そして、前記ロボット干渉判定方法は、前記対象物の前記現在位置および前記現在速度ベクトルと、前記可動部の前記現在位置および前記現在速度ベクトルとに基づき、前記対象物と前記可動部との接触が生じる可能性があるかを、リアルタイムで判定する。
【００４４】
前記ロボット干渉判定方法は、安全柵を用いずに前記ロボットと前記対象物との干渉を回避することができるので、生産現場等の省スペース化を実現することができる。
【００４５】
また、前記ロボット干渉判定方法は、前記対象物および前記可動部の各々の、前記現在位置および前記現在速度ベクトルを用いて、リアルタイムで、前記対象物と前記可動部との接触の可能性を判定することで、生産効率の低下を抑制する。
【００４６】
ここで、予め設けておいた領域内への人の侵入を監視してロボットの動作を制御する従来の方式は、人の安全が確保されている低い場合であっても、侵入を検知すると、ロボット動作を抑制するので、生産効率およびスペース効率が低下する。すなわち、人およびロボットの各々の位置および速度ベクトルは時々刻々と変化するにもかかわらず、この方式では、固定の基準を用いて、人とロボットとの干渉の可能性を判定するため、人の安全が確保されている場合にも、干渉の可能性があると判定してしまう。その結果、この方式は、人の安全が確保されている場合にも、人との干渉を回避する動作をロボットにさせたりするなどして、生産効率の低下を招いてしまう。
【００４７】
また、ロボットのトルクを制限する従来の方式も、固定の基準を用いて人とロボットとの干渉の可能性を判定する従来の方式と同様に、人の安全が確保されている場合であっても、ロボットのトルクを制限するので、やはり生産効率の低下を招いてしまう。
【００４８】
これに対して、前記ロボット干渉判定方法は、時々刻々と変化する前記対象物および前記可動部の各々の、前記現在位置および前記現在速度ベクトルを用いて、接触の可能性を時々刻々に判定する。そして、前記ロボット干渉判定方法は、前記対象物と前記可動部との接触の可能性が具体化した時に初めて、両者の接触の可能性があると判定する。
【００４９】
すなわち、前記ロボット干渉判定方法は、時々刻々と変化する前記対象物および前記可動部の各々の、前記現在位置および前記現在速度ベクトルから、前記対象物と前記可動部との接触の可能性を具体的に判定する。つまり、前記ロボット干渉判定方法は、時々刻々と変化する、前記対象物および前記可動部の各々の状態に応じて、前記対象物と前記可動部との接触の可能性が具体化した時に初めて、両者の接触の可能性があると判定する。
【００５０】
したがって、前記ロボット干渉判定方法は、工場等の生産現場において、例えば作業者等である前記対象物と前記ロボットとの干渉を回避しつつ、生産効率およびスペース効率の低下を抑制することができるとの効果を奏する。
【００５１】
上記の課題を解決するために、本発明の一態様に係るロボット制御装置は、前記ロボット干渉判定装置から前記指示信号を受信する受信部と、前記指示信号に基づき、前記ロボットの動作を制御するロボット制御部と、を備えている。
【００５２】
前記の構成によれば、前記ロボット制御装置は、前記ロボット干渉判定装置から前記指示信号を受信し、受信した前記指示信号に基づいて、前記ロボットの動作を制御する。したがって、前記ロボット制御装置は、工場等の生産現場において、例えば作業者等である前記対象物と前記ロボットとの干渉を回避しつつ、生産効率およびスペース効率の低下を抑制することができるとの効果を奏する。
【００５３】
上記の課題を解決するために、本発明の一態様に係るロボット制御システムは、前記ロボット干渉判定装置と、前記ロボット制御装置と、非接触で前記対象物の二次元または三次元位置を計測し、計測結果を前記ロボット干渉判定装置に送信する計測装置と、を含んでいる。
【００５４】
前記の構成によれば、前記ロボット制御システムは、前記ロボット干渉判定装置と、前記ロボット制御装置と、前記ロボット干渉判定装置に送信する前記計測装置とを含む。したがって、前記ロボット制御システムは、工場等の生産現場において、例えば作業者等である前記対象物と前記ロボットとの干渉を回避しつつ、生産効率およびスペース効率の低下を抑制することができるとの効果を奏する。
【発明の効果】
【００５５】
本発明の一態様によれば、工場等の生産現場において作業者等の安全を確保しつつ、生産効率およびスペース効率の低下を回避することができるとの効果を奏する。
【図面の簡単な説明】
【００５６】
【図１】本発明の実施形態１に係る干渉判定装置等の要部構成を示すブロック図である。
【図２】図１の干渉判定装置を含む制御システムの全体概要を示す図である。
【図３】図２の制御システムにおいて実行される処理の概要を示すフロー図である。
【図４】図３のフロー図における人存在領域計算処理までの詳細を示すフロー図である。
【図５】図３のフロー図における動的干渉判定処理からアームコントロール処理までの詳細を示すフロー図である。
【図６】図１の干渉判定装置が実行する動的干渉判定処理の一例を説明する図である。
【図７】図２の制御システムを適用する環境の一例を示す図である。
【図８】センサの計測結果を利用して作業者の重心を算出する方法の一例を説明する図である。８
【図９】図７に例示したセンサの配置例とは異なる配置例を示す図である。
【発明を実施するための形態】
【００５７】
〔実施形態１〕
以下、本発明の一側面に係る実施の形態（以下、「本実施形態」とも表記する）を、図１から図９に基づいて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰返さない。本実施の形態においては、例えば干渉判定装置１０をロボット干渉判定装置の典型例として説明を行う。本発明の一態様に係る干渉判定装置１０についての理解を容易にするため、先ず、干渉判定装置１０を含む制御システム１の概要を、図２を用いて説明する。
【００５８】
§１．適用例
（制御システムの全体概要）
図２は、制御システム１の全体概要を示す図である。図２に例示するように、制御システム１は、干渉判定装置１０と、ロボット制御装置であるコントローラ２０と、センサ４０（計測装置）とを含んでいる。図２においては、センサ４０として、センサ４０（１）およびセンサ４０（２）が描かれているが、制御システム１が含むセンサ４０が複数であることは必須ではなく、制御システム１が含むセンサ４０は１つであってもよい。以下の説明において、センサ４０（１）とセンサ４０（２）とを区別する必要がない場合には、単に「センサ４０」と表記する。
【００５９】
制御システム１は、図２に示すような、ロボット３０と作業者５０（対象物）とが共存する工場等の生産現場において、ロボット３０と作業者５０とが不用意に接触するのを回避するための制御を実行する。特に、制御システム１は、作業者５０と、ロボット３０のアーム等、多関節マニピュレータを備えるロボット３０の所定部分（例えば、所定の可動部）とが不用意に接触するのを回避するための制御を実行する。ただし、以下の説明においては、記載の簡潔性を担保するため、作業者５０と「ロボット３０の所定部分」との接触を回避することを、作業者５０とロボット３０との接触を回避すると記載することがある。つまり、以下の説明において、「ロボット３０」との語は、ロボット３０の全体だけでなく、作業者５０との接触が回避されるべき「ロボット３０の所定部分」を指す場合にも用いる。同様に、以下の説明においては、「速度ベクトル」および「加速度ベクトル」は、各々、「速度」および「加速度」と略記することがある。
【００６０】
センサ４０は、主として作業者５０（対象物）の二次元位置または三次元位置を非接触方式で計測し、特に、時間ごとの作業者５０の二次元位置または三次元位置を非接触方式で計測し、計測結果を干渉判定装置１０に通知する。センサ４０は、例えば、公知のライダー（LiDAR、Light Detection and Ranging）またはレーダー（RADAR、Radio Detection and Ranging）などを用いて実現することができ、例えば、作業者５０の可動領域、つまり、作業領域全体を監視できるように配置される。センサ４０は、例えばEthernet（登録商標）等の産業用ネットワークを介して、干渉判定装置１０に接続している。
【００６１】
図２に示すように、制御システム１は、複数のセンサ４０を用いて、作業者５０の二次元位置または三次元位置を計測してもよく、その場合、異なる種類の複数のセンサ４０を組み合わせてもよく、つまり、異種ＦＵＳＩＯＮ構成としてもよい。例えば、図２において、センサ４０（１）およびセンサ４０（２）の一方を二次元センサとし、他方を三次元センサとしてもよい。異なる種類の複数のセンサ４０を組み合わせて用いることにより、多元的な計測が可能となる。また、制御システム１は、同種の複数のセンサ４０を用いることによって、計測する作業者５０の二次元位置または三次元位置の精度を向上させてもよい。ただし、前述の通り、制御システム１が含むセンサ４０が複数であることは必須ではなく、制御システム１は１つのセンサ４０によって、作業者５０の二次元位置または三次元位置を計測してもよい。
【００６２】
コントローラ２０は、ロボット３０の動作を制御するロボット制御装置であり、例えば、後述するアームタスク２３に格納されている目標軌道および動作プログラムなどのデータに従って、ロボット３０の動作を制御する。また、コントローラ２０は、干渉判定装置１０からの指示信号に従って、ロボット３０の動作を制御する。例えば、コントローラ２０は、目標軌道を用いて生成したロボット３０への指令値を、干渉判定装置１０からの指示信号に従って修正し、修正した指令値に従った動作をロボット３０に実行させる。コントローラ２０は、例えばＰＬＣ（Programmable Logic Controller）、ＩＰＣ（Industrial PC）などを用いて実現することができる。
【００６３】
ロボット３０は、コントローラ２０と接続しており、コントローラ２０によって動作を制御され、例えば、複数のアームが複数の関節で接続されている多関節マニピュレータを備える。
【００６４】
干渉判定装置１０は、センサ４０から取得する「時間ごとの作業者５０の二次元位置または三次元位置」を用いて、作業者５０の現在の「位置（二次元位置または三次元位置）および速度ベクトル」を把握する。
【００６５】
また、干渉判定装置１０は、コントローラ２０（特に、アームタスク２３）から、例えば、ロボット３０の動作を規定する「目標軌道および動作プログラム」などの情報（制御情報）を取得する。干渉判定装置１０は、制御情報を用いて、ロボット３０（例えば、ロボット３０のアーム）の現在の「位置（二次元位置または三次元位置）および速度ベクトル」を取得する（算出する）。
【００６６】
干渉判定装置１０は、作業者５０の現在の速度ベクトルとロボット３０の現在の速度ベクトルとを用いて安全距離を算出し、また、作業者５０の現在の位置とロボット３０の現在の位置とを用いて分離距離を算出する。干渉判定装置１０は、算出した「安全距離」と「分離距離」とを比較して、作業者５０とロボット３０との干渉の可能性を判定し、判定結果をコントローラ２０に通知する。「安全距離」および「分離距離」の概念について、詳細は図６を用いて後述する。
【００６７】
具体的には、「分離距離」が「安全距離」よりも大きい場合、干渉判定装置１０は、作業者５０とロボット３０とが干渉する可能性はないと判定し、この判定結果をコントローラ２０に通知する。また、「分離距離」が「安全距離」以下である場合、干渉判定装置１０は、作業者５０とロボット３０とが干渉する可能性があると判定し、干渉を回避する指示をコントローラ２０に送信する。干渉判定装置１０は、干渉を回避する指示と共に、作業者５０の「位置および速度ベクトル」等の干渉状態情報を、コントローラ２０に送信してもよい。
【００６８】
干渉判定装置１０により干渉可能性があると判定されると、干渉判定装置１０またはコントローラ２０は、ロボット３０の動作の予定（軌道計画）を修正して、作業者５０とロボット３０との干渉を回避する。
【００６９】
例えば、干渉判定装置１０は、「作業者５０とロボット３０とが干渉し得る」と判定すると、「安全距離」を「分離距離」以下とする指示（指示信号）を、コントローラ２０に送信してもよい。干渉判定装置１０は、ロボット３０の「速度ベクトルおよび目標軌道」の少なくとも一方を調整するように、コントローラ２０に指示することで、「安全距離」を「分離距離」以下の大きさにしてもよい。
【００７０】
ただし、干渉可能性があると判定した干渉判定装置１０は、この判定結果と干渉状態情報とをコントローラ２０に送信し、干渉回避のための軌道計画の具体的な修正内容の決定については、コントローラ２０に実行させるようにしてもよい。
【００７１】
（干渉判定装置についての整理）
干渉判定装置１０は、「安全距離」および「分離距離」の算出を動的に（つまり、随時）算出し、干渉可能性の判定（干渉判定）を動的に行って、判定結果をコントローラ２０に通知する。干渉判定装置１０は、干渉の可能性があると判定すると、適宜、干渉の回避をコントローラ２０に指示し、例えば、ロボット３０の速度ベクトルおよび軌道の少なくとも一方を修正させる。言い換えれば、干渉判定装置１０は、時々刻々に干渉判定を行って、ロボット３０の速度ベクトルおよび軌道の少なくとも一方の修正などを、時々刻々に指示する。
【００７２】
したがって、干渉判定装置１０は、安全柵を用いずにロボット３０と作業者５０との干渉を回避することができるので、生産現場等の省スペース化を実現することができる。また、干渉判定装置１０は、具体的な干渉可能性の判定に基づいて、ロボット３０の速度ベクトルおよび目標軌道の少なくとも一方を調整するので、ロボット３０による不要な回避動作を抑制することができる。つまり、干渉判定装置１０は、作業者５０およびロボット３０の各々の、「現在の、位置および速度ベクトル」を用いて、作業者５０とロボット３０との干渉の可能性を具体的に判定する。そして、干渉判定装置１０は、作業者５０とロボット３０との干渉の可能性が具体化した時に初めて、ロボット３０に減速・停止等の回避動作の実行を指示する。干渉判定装置１０は、無駄な減速・停止等をロボット３０に実行させないので、生産性の低下を抑制することができる。ユーザは、干渉判定装置１０を用いることにより、生産現場等の省スペース化および生産効率の向上を実現することができる。
【００７３】
すなわち、干渉判定装置１０（ロボット干渉判定装置）は、所定の領域内に存在する作業者５０（対象物）の現時点ｔ０における現在位置ｘｈ（ｔ０）および現在速度ベクトルｖｈ（ｔ０）を取得する人状態情報生成部１１２（対象物状態取得部）と、ロボット３０（ロボットにおける所定の可動部）の現時点ｔ０における現在位置ｘｒ（ｔ０）および現在速度ベクトルｖｒ（ｔ０）を取得するロボット状態取得部１２１と、作業者５０の現在位置ｘｈ（ｔ０）および現在速度ベクトルｖｈ（ｔ０）と、ロボット３０の現在位置ｘｒ（ｔ０）および現在速度ベクトルｖｒ（ｔ０）とに基づき、作業者５０とロボット３０との接触が生じる可能性があるか否かをリアルタイムで判定する動的干渉判定部１２２（干渉判定部）と、を備えている。
【００７４】
前記の構成によれば、干渉判定装置１０は、作業者５０の現在位置ｘｈ（ｔ０）および現在速度ベクトルｖｈ（ｔ０）と、ロボット３０の現在位置ｘｒ（ｔ０）および現在速度ベクトルｖｒ（ｔ０）とを取得する。そして、干渉判定装置１０は、作業者５０の現在位置ｘｈ（ｔ０）および現在速度ベクトルｖｈ（ｔ０）と、ロボット３０の現在位置ｘｒ（ｔ０）および現在速度ベクトルｖｒ（ｔ０）とに基づき、作業者５０とロボット３０との接触が生じる可能性があるかを、リアルタイムで判定する。
【００７５】
干渉判定装置１０は、安全柵を用いずに前記ロボットと作業者５０との干渉を回避することができるので、生産現場等の省スペース化を実現することができる。
【００７６】
また、干渉判定装置１０は、作業者５０およびロボット３０の各々の、現在位置および現在速度ベクトル（つまり、現在位置ｘｈ（ｔ０）および現在速度ベクトルｖｈ（ｔ０）と、現在位置ｘｒ（ｔ０）および現在速度ベクトルｖｒ（ｔ０）と）を用いて、リアルタイムで、作業者５０とロボット３０との接触の可能性を判定することで、生産効率の低下を抑制する。
【００７７】
ここで、予め設けておいた領域内への人の侵入を監視してロボットの動作を制御する従来の方式は、人の安全が確保されている低い場合であっても、侵入を検知すると、ロボット動作を抑制するので、生産効率およびスペース効率が低下する。すなわち、人およびロボットの各々の位置および速度ベクトルは時々刻々と変化するにもかかわらず、この方式では、固定の基準を用いて、人とロボットとの干渉の可能性を判定するため、人の安全が確保されている場合にも、干渉の可能性があると判定してしまう。その結果、この方式は、人の安全が確保されている場合にも、人との干渉を回避する動作をロボットにさせたりするなどして、生産効率の低下を招いてしまう。
【００７８】
また、ロボットのトルクを制限する従来の方式も、固定の基準を用いて人とロボットとの干渉の可能性を判定する従来の方式と同様に、人の安全が確保されている場合であっても、ロボットのトルクを制限するので、やはり生産効率の低下を招いてしまう。
【００７９】
これに対して、干渉判定装置１０は、時々刻々と変化する作業者５０およびロボット３０の各々の、現在位置および現在速度ベクトルを用いて、接触の可能性を時々刻々に判定する。そして、干渉判定装置１０は、作業者５０とロボット３０との接触の可能性が具体化した時に初めて、両者の接触の可能性があると判定する。
【００８０】
すなわち、干渉判定装置１０は、時々刻々と変化する作業者５０およびロボット３０の各々の、現在位置および現在速度ベクトルから、作業者５０とロボット３０との接触の可能性を具体的に判定する。つまり、干渉判定装置１０は、時々刻々と変化する、作業者５０およびロボット３０の各々の状態に応じて、作業者５０とロボット３０との接触の可能性が具体化した時に初めて、両者の接触の可能性があると判定する。
【００８１】
したがって、干渉判定装置１０は、工場等の生産現場において、例えば作業者５０等である対象物とロボット３０との干渉を回避しつつ、生産効率およびスペース効率の低下を抑制することができるとの効果を奏する。
【００８２】
前述の通り、対象物は、例えば作業者５０等の人であり、具体的には、人の全体または人の一部であり、また、人以外のモノ（例えば、モバイルロボットなど）であってもよい。対象物の位置とは、対象物が人（作業者５０等）の全体である場合には、例えば、人の重心の位置である。対象物が人（作業者５０等）の一部または人以外のモノである場合には、対象物の位置とは、人の一部の位置、または、人以外のモノの位置である。
【００８３】
干渉判定装置１０について、ロボット３０は、複数のアームが複数の関節で接続されている多関節マニピュレータを備えている。干渉判定装置１０によって作業者５０との干渉が判定される対象は、ロボット３０の全体であってもよいし、ロボット３０における所定の可動部、例えば、ロボット３０の多関節マニピュレータの所定の１以上の部分であってもよい。
【００８４】
前記の構成によれば、干渉判定装置１０は、複数のアームが複数の関節で接続されている多関節マニピュレータを備えたロボット３０と、作業者５０との接触が生じる可能性があるかを、リアルタイムで判定する。
【００８５】
したがって、干渉判定装置１０は、工場等の生産現場において、例えば作業者５０等である対象物と、多関節マニピュレータを備えたロボット３０との干渉を回避しつつ、生産効率およびスペース効率の低下を抑制することができるとの効果を奏する。
【００８６】
干渉判定装置１０において、人状態情報生成部１１２は、非接触で作業者５０の二次元または三次元位置を計測するセンサ４０（計測装置）による計測結果の履歴に基づき、作業者５０の現在位置ｘｈ（ｔ０）および現在速度ベクトルｖｈ（ｔ０）を取得する。
【００８７】
前記の構成によれば、干渉判定装置１０は、作業者５０の計測位置ｘｈ（ｔ）の履歴を用いて、作業者５０の現在位置ｘｈ（ｔ０）および現在速度ベクトルｖｈ（ｔ０）を取得する。したがって、干渉判定装置１０は、作業者５０の計測位置ｘｈ（ｔ）の履歴から算出した、高精度な作業者５０の現在位置ｘｈ（ｔ０）および現在速度ベクトルｖｈ（ｔ０）を取得することができるとの効果を奏する。
【００８８】
干渉判定装置１０において、ロボット状態取得部１２１は、ロボット３０の動作を制御するコントローラ２０（ロボット制御装置）から制御情報を取得することにより、ロボット３０の現在位置ｘｒ（ｔ０）および現在速度ベクトルｖｒ（ｔ０）を取得する。
【００８９】
前記の構成によれば、干渉判定装置１０は、コントローラ２０から、ロボット３０に対する制御を規定する制御情報を取得することにより、ロボット３０の現在位置ｘｒ（ｔ０）および現在速度ベクトルｖｒ（ｔ０）を取得する。したがって、干渉判定装置１０は、前記制御情報から、ロボット３０についての、高精度な現在位置ｘｒ（ｔ０）および現在速度ベクトルｖｒ（ｔ０）を取得することができるとの効果を奏する。前記制御情報は、例えば、コントローラ２０がロボット３０に対する制御を実行する際に用いる動作プログラム等であり、干渉判定装置１０は、動作プログラム等を解析して、ロボット３０の現在位置ｘｒ（ｔ０）および現在速度ベクトルｖｒ（ｔ０）を算出する。
【００９０】
また、ロボット状態取得部１２１は、ロボット３０（特に、ロボット３０の可動部）の位置情報を解析して、ロボット３０（特に、ロボット３０の可動部）の現在位置ｘｒ（ｔ０）および現在速度ベクトルｖｒ（ｔ０）を算出してもよい。例えば、ロボット状態取得部１２１は、コントローラ２０から、ロボット３０（特に、ロボット３０の可動部）の位置情報を取得し、位置情報の履歴に基づいて、現在位置ｘｒ（ｔ０）および現在速度ベクトルｖｒ（ｔ０）を算出してもよい。
【００９１】
さらに、ロボット状態取得部１２１は、コントローラ２０からロボット３０に送信される制御信号から、ロボット３０（特に、ロボット３０の可動部）の現在位置ｘｒ（ｔ０）および現在速度ベクトルｖｒ（ｔ０）を算出してもよい。例えば、ロボット状態取得部１２１は、コントローラ２０からロボット３０に送信される制御信号の内容（各関節のモータ制御信号など）を解析して、ロボット３０（特に、ロボット３０の可動部）の現在位置ｘｒ（ｔ０）および現在速度ベクトルｖｒ（ｔ０）を算出してもよい。
【００９２】
干渉判定装置１０は、動的干渉判定部１２２が、作業者５０とロボット３０との接触が生じる可能性があると判定した場合に、ロボット３０の動作を制御するコントローラ２０に対して干渉回避を指示する指示信号を送信する制御指示調整部１２３（指示部）をさらに備える。
【００９３】
前記の構成によれば、干渉判定装置１０は、作業者５０とロボット３０との接触が生じる可能性があると判定した場合、ロボット３０の動作を制御するコントローラ２０に対して干渉回避を指示する指示信号を送信する。したがって、干渉判定装置１０は、接触が生じる可能性があると判定すると、コントローラ２０に前記指示信号を送信して、接触を回避することができるとの効果を奏する。
【００９４】
前記指示信号は、単に干渉の可能性を警告するだけの信号（警告信号）であってもよく、接触を回避するためのロボット３０の具体的な動作の決定は、コントローラ２０に実行させてもよい。また、前記指示信号は、ロボット３０の動作内容を指示する信号であってもよく、例えば、ロボット３０の動作を停止させ、または、ロボット３０に干渉を回避させることを指示する信号であってもよい。さらに、前記指示信号は、ロボット３０の動作を詳細に規定する制御指令であってもよく、例えば、動作を停止させるまでの時間、干渉を回避するための動作の方向・時間・距離などの内容を含む信号であってもよい。
【００９５】
干渉判定装置１０において、動的干渉判定部１２２が、作業者５０とロボット３０との接触が生じる可能性があると判定した場合に、制御指示調整部１２３は、コントローラ２０に対して、ロボット３０の移動速度および軌道の少なくともいずれか一方の調整指示を示す前記指示信号を送信してもよい。
【００９６】
前記の構成によれば、干渉判定装置１０は、作業者５０とロボット３０との接触が生じる可能性があると判定した場合、コントローラ２０に対して、ロボット３０の移動速度および軌道の少なくとも一方の調整指示を示す前記指示信号を送信する。したがって、干渉判定装置１０は、接触が生じる可能性があると判定すると、ロボット３０の移動速度および軌道の少なくとも一方を調整させ、接触を回避することができるとの効果を奏する。
【００９７】
コントローラ２０（ロボット制御装置）は、干渉判定装置１０から前記指示信号を受信する受信部２２と、前記指示信号に基づき、ロボット３０の動作を制御するロボット制御部２１と、を備えている。
【００９８】
前記の構成によれば、コントローラ２０は、干渉判定装置１０から前記指示信号を受信し、受信した前記指示信号に基づいて、ロボット３０の動作を制御する。したがって、コントローラ２０は、工場等の生産現場において、例えば作業者５０等である対象物とロボット３０との干渉を回避しつつ、生産効率およびスペース効率の低下を抑制することができるとの効果を奏する。
【００９９】
制御システム１（ロボット制御システム）は、干渉判定装置１０と、コントローラ２０と、非接触で作業者５０の二次元または三次元位置を計測し、計測結果を干渉判定装置１０に送信するセンサ４０（計測装置）と、を含んでいる。
【０１００】
前記の構成によれば、制御システム１は、干渉判定装置１０と、コントローラ２０と、計測結果（測域データ）を干渉判定装置１０に送信するセンサ４０とを含む。したがって、制御システム１は、工場等の生産現場において、例えば作業者５０等である対象物とロボット３０との干渉を回避しつつ、生産効率およびスペース効率の低下を抑制することができるとの効果を奏する。
【０１０１】
これまでに図２を用いて概要を説明してきた干渉判定装置１０等について、次に、その構成の詳細について図１を参照しながら説明し、その後、干渉判定装置１０等が実行する処理について、図３から図５を参照しながら説明していく。
【０１０２】
§２．構成例
（干渉判定装置の詳細）
図１は、干渉判定装置１０等の要部構成を示すブロック図である。図１に示すように、干渉判定装置１０は、記憶部１３０以外の機能ブロックとして、人軌道処理部１１０と、調停部１２０と、を備えている。
【０１０３】
人軌道処理部１１０は、作業者５０の現在の「位置（二次元位置または三次元位置）および速度ベクトル」を取得し、取得した作業者５０の現在の「位置および速度ベクトル」を、調停部１２０に通知する。人軌道処理部１１０は、センサ情報取得部１１１と、人状態情報生成部１１２とを含む。
【０１０４】
調停部１２０は、作業者５０およびロボット３０の各々についての、現在の「位置（二次元位置または三次元位置）および速度ベクトル」を用いて、作業者５０とロボット３０との干渉の可能性を判定する。調停部１２０は、作業者５０とロボット３０とが干渉する可能性があると判定すると、コントローラ２０に、例えば、コントローラ２０に、作業者５０とロボット３０との干渉を回避するように指示する。調停部１２０は、ロボット状態取得部１２１と、動的干渉判定部１２２と、制御指示調整部１２３とを含む。
【０１０５】
干渉判定装置１０は、上述の各機能ブロックに加えて、判定結果を表示する構成などを備えていてもよいが、記載の簡潔性を担保するため、本実施の形態に直接関係のない構成は、説明およびブロック図から省略している。ただし、実施の実情に則して、干渉判定装置１０は、当該省略された構成を備えてもよい。図１に例示した上述の各機能ブロックは、例えば、ＣＰＵ（central processing unit）等が、ＲＯＭ（read only memory）、ＮＶＲＡＭ（non-Volatile random access memory）等で実現された記憶装置（記憶部１３０）に記憶されているプログラムを不図示のＲＡＭ（random access memory）等に読み出して実行することで実現できる。以下、干渉判定装置１０における各機能ブロックについて説明する。
【０１０６】
（記憶部以外の機能ブロックの詳細）
センサ情報取得部１１１は、センサ４０から、センサ４０の計測した「作業者５０の時間ごとの二次元位置または三次元位置」を示すデータ（測域データ）を取得し、取得した測域データを、人状態情報生成部１１２に出力する。図２に例示するセンサ４０（１）およびセンサ４０（２）のように、センサ４０が複数のセンサ４０（１）〜（ｎ）（ｎは２以上の整数）を含む場合、センサ情報取得部１１１は、複数のセンサ４０の各々から取得した測域データを統合する。センサ情報取得部１１１は、例えば、複数のセンサ４０の各々から、複数のセンサ４０の各々のセンサ視点からの測域データを取得し、取得した複数の測域データの各々の角度および座標を変換し、複数の測域データを統合する。一例として、センサ情報取得部１１１は、Ｘ軸方向の測域データと、Ｙ軸方向の測域データとを統合して、Ｘ−Ｙ平面上の位置データを取得する。センサ情報取得部１１１は、統合した測域データを、人状態情報生成部１１２に出力する。
【０１０７】
人状態情報生成部１１２は、センサ情報取得部１１１から取得した測域データを用いて、「作業者５０の時間ごとの二次元位置または三次元位置」を算出し、算出した「作業者５０の時間ごとの二次元位置または三次元位置」を人状態履歴データ１３１に格納する。また、人状態情報生成部１１２は、人状態履歴データ１３１の格納データと、センサ情報取得部１１１から取得した測域データを用いて算出した「作業者５０の時間ごとの二次元位置または三次元位置」とから、「作業者５０の時間ごとの速度ベクトル」を算出する。人状態情報生成部１１２は、算出した「作業者５０の時間ごとの速度ベクトル」を人状態履歴データ１３１に格納する。
【０１０８】
つまり、人状態情報生成部１１２は、センサ４０から取得した測域データを用いて、「作業者５０の時間ごとの、位置および速度ベクトル」を算出し（取得し）、取得した「作業者５０の時間ごとの、位置および速度ベクトル」を動的干渉判定部１２２に出力する。以下の説明においては、「作業者５０の、位置および速度ベクトル」を「作業者５０の状態」とも称し、「作業者５０の時間ごとの、位置（および速度ベクトル）」の履歴を「作業者５０の状態履歴（動作履歴）」とも称する。
【０１０９】
ここで、センサ４０からの測域データには、例えば、作業者５０以外の対象についての計測結果等がノイズとして含まれている。そこで、人状態情報生成部１１２は、測域データからノイズを除去して、「作業者５０の時間ごとの位置」を算出する。
【０１１０】
人状態情報生成部１１２は、例えば、「作業者５０の時間ごとの位置（二次元位置または三次元位置）」として、「時間ごとの、作業者５０の重心の位置（重心位置）」を算出する。「重心」は「体幹」と言い換えてもよい。すなわち、人状態情報生成部１１２が動的干渉判定部１２２に出力し、人状態履歴データ１３１に格納する「作業者５０の時間ごとの位置」は、「時間ごとの、作業者５０の重心位置」である。同様に、人状態情報生成部１１２が動的干渉判定部１２２に出力し、人状態履歴データ１３１に格納する「作業者５０の時間ごとの速度ベクトル」は、「時間ごとの、作業者５０の重心の速度ベクトル」である。
【０１１１】
人状態情報生成部１１２による重心位置の算出方法について、詳細は図８を用いて後述するが、人状態情報生成部１１２は、測域データが示す作業者５０の存在位置情報（作業者５０の存在を示す点群）から、作業者５０の重心の位置を算出する。
【０１１２】
ロボット状態取得部１２１は、現時点における（つまり、現在の）「ロボット３０の、位置および速度ベクトル」を取得し、取得した現時点における「ロボット３０の、位置および速度ベクトル」を、動的干渉判定部１２２に通知する。例えば、ロボット状態取得部１２１は、コントローラ２０（特に、アームタスク２３）から、コントローラ２０がロボット３０を制御する際に用いる制御情報（ロボット３０の動作を規定する「目標軌道および動作プログラム」などの情報）を取得する。ロボット状態取得部１２１は、取得した制御情報を解析して、現時点における「ロボット３０の、位置および速度ベクトル」を取得する。
【０１１３】
動的干渉判定部１２２は、現時点における「作業者５０の、位置および速度ベクトル」と、現時点における「ロボット３０の、位置および速度ベクトル」とを用いて、作業者５０とロボット３０との接触が生じる可能性があるかを判定する。特に、動的干渉判定部１２２は、時々刻々に、現時点における「作業者５０の、位置および速度ベクトル」と、現時点における「ロボット３０の、位置および速度ベクトル」とを用いて、作業者５０とロボット３０との接触が生じる可能性があるかを判定する。動的干渉判定部１２２は、判定結果を制御指示調整部１２３に通知する。
【０１１４】
前述の通り、人状態情報生成部１１２は、センサ情報取得部１１１から取得する「作業者５０の、現時点（ｔ＝ｔ０）の位置」等を用いて、現時点における「作業者５０の、位置および速度ベクトル」を取得する。例えば、人状態情報生成部１１２は、「作業者５０の、現時点の位置」と、人状態履歴データ１３１に格納された「作業者５０の、時間ごとの位置」（の履歴）とから、現時点における「作業者５０の、位置および速度ベクトル」を取得する。人状態情報生成部１１２は、取得した、「現時点における、作業者５０の、位置および速度ベクトル」を、動的干渉判定部１２２に通知する。また、ロボット状態取得部１２１は、現時点（ｔ＝ｔ０）における「ロボット３０の、位置および速度ベクトル」を取得し、取得した、現時点における「ロボット３０の、位置および速度ベクトル」を、動的干渉判定部１２２に通知する。
【０１１５】
「ｔ０」時点（現時点）から、ロボット３０の移動が停止する時点までのいずれかの時点において、作業者５０の推定位置とロボット３０の推定位置との距離が所定値以内となると、動的干渉判定部１２２は、作業者５０とロボット３０とが接触し得ると判定する。作業者５０およびロボット３０の各々の推定位置の算出方法について、詳細は図６を用いて後述する。
【０１１６】
制御指示調整部１２３は、動的干渉判定部１２２によって「作業者５０とロボット３０とが接触し得る」と判定されると、作業者５０とロボット３０との干渉を回避するよう指示する指示信号を、コントローラ２０に送信する。制御指示調整部１２３は、例えば、「ロボット３０の動作を停止させずに、ロボット３０の移動速度および軌道の少なくとも一方を調整するよう指示する指示信号」を、または、「ロボット３０の動作を停止するよう指示する指示信号」を、送信する。
【０１１７】
（記憶部の詳細）
記憶部１３０は、干渉判定装置１０が使用する各種データを格納する記憶装置である。なお、記憶部１３０は、干渉判定装置１０が実行する（１）制御プログラム、（２）ＯＳプログラム、（３）干渉判定装置１０が有する各種機能を実行するためのアプリケーションプログラム、および、（４）該アプリケーションプログラムを実行するときに読み出す各種データを非一時的に記憶してもよい。上記の（１）〜（４）のデータは、例えば、ＲＯＭ（read only memory）、フラッシュメモリ、ＥＰＲＯＭ（Erasable Programmable ROM）、ＥＥＰＲＯＭ（登録商標）（Electrically EPROM）、ＨＤＤ（Hard Disc Drive）等の不揮発性記憶装置に記憶される。干渉判定装置１０は、図示しない一時記憶部を備えていてもよい。一時記憶部は、干渉判定装置１０が実行する各種処理の過程で、演算に使用するデータおよび演算結果等を一時的に記憶するいわゆるワーキングメモリであり、ＲＡＭ（Random Access Memory）等の揮発性記憶装置で構成される。どのデータをどの記憶装置に記憶するのかについては、干渉判定装置１０の使用目的、利便性、コスト、または、物理的な制約等から適宜決定される。記憶部１３０はさらに人状態履歴データ１３１を格納している。
【０１１８】
人状態履歴データ１３１には、「作業者５０の時間ごとの、位置および速度ベクトル」（の履歴）が格納され、特に、複数の作業者５０の各々の「時間ごとの、位置および速度ベクトル」（の履歴）が格納される。
【０１１９】
（コントローラの詳細）
コントローラ２０は、ロボット３０の動作を制御するロボット制御装置であり、例えば、後述するアームタスク２３に格納されている目標軌道および動作プログラムなどのデータに従って、ロボット３０の動作を制御する。また、コントローラ２０は、干渉判定装置１０からの指示信号に従って、ロボット３０の動作を制御する。すなわち、図１に例示するように、コントローラ２０は、ロボット制御部２１と、受信部２２と、アームタスク２３とを備えている。受信部２２は、干渉判定装置１０から指示信号を受信し、受信した指示信号をロボット制御部２１に通知する。アームタスク２３は、ロボット３０の動作を規定する「目標軌道および動作プログラム」などの情報を格納している。ロボット制御部２１は、受信部２２から通知された指示信号と、アームタスク２３に格納されている「目標軌道および動作プログラム」などの情報とに基づき、ロボット３０の動作を制御する。
【０１２０】
§３．動作例
図３は、制御システム１において実行される処理の概要を示すフロー図である。図３に示すように、制御システム１においては、先ず、センサ情報取得部１１１によってセンサ情報統合処理（Ｓ１１０）が実行され、次に、人状態情報生成部１１２によって人存在領域計算処理（Ｓ１２０）が実行される。動的干渉判定部１２２は、人存在領域計算処理の結果等を用いて、動的干渉判定処理（Ｓ１３０）を実行する。動的干渉判定部１２２による動的干渉判定処理の結果、作業者５０とロボット３０とが干渉する可能性があると判定されると、制御指示調整部１２３によって制御指示調整処理（Ｓ１４０）が実行される。そして、制御指示調整処理の結果等を用いて、コントローラ２０はロボット３０を制御し、例えば、ロボット３０のアームを制御する処理であるアームコントロール（Ｓ１５０）を実行する。
【０１２１】
図４は、図３のフロー図における人存在領域計算処理までの詳細を示すフロー図である。図４に示すように、図３のセンサ情報統合処理（Ｓ１１０）は、センサ４０から、センサ４０の計測した「作業者５０の、時間ごとの（特に、現時点の）二次元位置または三次元位置」を示す測域データを取得する処理であるセンサ情報取得処理（Ｓ１１１）を含む。
【０１２２】
前述の通り、センサ４０が複数のセンサ（例えば、センサ４０（１）およびセンサ４０（２））を含む場合、センサ情報取得部１１１は、複数のセンサ４０の各々から、複数のセンサ４０の各々の測域データを取得する。そして、センサ情報取得部１１１は、取得した複数の測域データを統合する（測域データ統合処理、Ｓ１１２）。
【０１２３】
図４に示すように、図３の人存在領域計算処理は、人推定処理（Ｓ１２１）、人重心計算処理（Ｓ１２２）、および、調停部１２０への人検知結果の出力処理（および、不図示の人重心バッファリング処理）（Ｓ１２３）を含む。
【０１２４】
先ず、人状態情報生成部１１２は、センサ情報取得部１１１から取得した測域データについて、ノイズ（作業者５０以外の対象についての計測結果等）を除去し、測域データから作業者５０の存在を示すデータだけを抽出する（人推定処理）。人状態情報生成部１１２は、例えば、人状態履歴データ１３１に格納された「作業者５０の時間ごとの、位置」（の履歴）を用いて、センサ情報取得部１１１から取得した測域データ（作業者５０の、現時点の位置を示すデータ）からノイズを除去する。
【０１２５】
人状態情報生成部１１２は、ノイズ除去した測域データから、つまり、作業者５０の存在を示すデータ（点群）から、作業者５０の現時点の重心位置を計算する。例えば、人状態情報生成部１１２は、作業者５０の存在を示す点群の平均から、作業者５０の現時点の重心位置を算出する（人重心計算処理）。
【０１２６】
人状態情報生成部１１２は、算出した作業者５０の現時点の重心位置を、現在時刻と共に人状態履歴データ１３１に格納する（人重心バッファリング処理）。また、人状態情報生成部１１２は、人状態履歴データ１３１に格納済の「作業者５０の、時間ごとの位置」（の履歴）と、作業者５０の現時点の位置とから、作業者５０の現時点の速度を算出する。人状態情報生成部１１２は、算出した「作業者５０の、現時点の速度」を、「作業者５０の、現時点の位置（重心位置）」および現在時刻と共に、人状態履歴データ１３１に格納する。人状態情報生成部１１２は、人検知結果を、より具体的には、算出した「現時点における、作業者５０の位置（重心位置）および速度ベクトル」を、調停部１２０に通知する。
【０１２７】
図５は、図３のフロー図における動的干渉判定処理からアームコントロール処理までの詳細を示すフロー図である。図３の動的干渉判定処理は、図５に示すように、ロボット軌道取得処理（Ｓ１３１）および安全距離計算処理（Ｓ１３３）等を含んでいる。
【０１２８】
ロボット軌道取得処理（Ｓ１３１）において、ロボット状態取得部１２１は、現時点における「ロボット３０の、位置および速度ベクトル」を取得し、取得した現時点における「ロボット３０の、位置および速度ベクトル」を、動的干渉判定部１２２に通知する。例えば、ロボット状態取得部１２１は、アームタスク２３から、ロボット３０に係る制御情報を取得し、取得した制御情報を解析して、現時点における「ロボット３０の、位置および速度ベクトル」を取得する。
【０１２９】
動的干渉判定部１２２は、人存在領域計算処理の結果がバッファリングされているか、つまり、人状態情報生成部１１２から「現時点における、作業者５０の位置および速度ベクトル」が通知されているか、を判定する（Ｓ１３２）。人状態情報生成部１１２から「現時点における、作業者５０の位置および速度ベクトル」が通知されていない場合（Ｓ１３２でｆａｌｓｅ）、動的干渉判定部１２２は現時点における安全距離計算処理を実行ができず、その旨を、制御指示調整部１２３を介してコントローラ２０に通知する。
【０１３０】
人状態情報生成部１１２から「現時点における、作業者５０の位置および速度ベクトル」が通知されている場合（Ｓ１３２でｔｒｕｅ）、動的干渉判定部１２２は、現時点における安全距離計算処理（Ｓ１３３）を実行する。例えば、動的干渉判定部１２２は、作業者５０およびロボット３０の各々の現時点における速度ベクトルにより、現時点の安全距離（現時点で算出する安全距離）を算出する。また、作業者５０およびロボット３０の各々の現時点における位置により、現時点の分離距離を算出する。動的干渉判定部１２２は、算出した安全距離と、現時点の分離距離と比較し、安全距離が保たれるかを、つまり、分離距離が安全距離よりも大きいかを、判定する（Ｓ１３４）。
【０１３１】
安全距離が保たれる場合（Ｓ１３４でｔｒｕｅ）、動的干渉判定部１２２は、制御情報に従って動作するロボット３０の動作を修正する必要はないと判定し、その旨を、制御指示調整部１２３を介してコントローラ２０に通知する。安全距離が保たれない場合（Ｓ１３４でｆａｌｓｅ）、つまり、「作業者５０とロボット３０とが接触し得る」と判定すると、動的干渉判定部１２２は、「作業者５０とロボット３０とが接触し得る」との判定結果を、制御指示調整部１２３に通知する。
【０１３２】
「作業者５０とロボット３０とが接触し得る」との判定結果を動的干渉判定部１２２から通知されると、制御指示調整部１２３は、安全軌道生成処理（Ｓ１４１）を実行する。例えば、制御指示調整部１２３は、現時点の安全距離（現時点で算出する安全距離）と、現時点の分離距離とを比較して、ロボット３０を停止させ、または、ロボット３０の速度および軌道の少なくとも一方を調整させる指示信号を、コントローラ２０に送信する。
【０１３３】
コントローラ２０（特に、ロボット制御部２１）は、ロボット３０（例えば、ロボット３０のアーム）の動作を制御するアームコントロール処理（Ｓ１５０）を実行する。受信部２２が、干渉判定装置１０から、安全距離計算処理を実行していないとの報告、または、安全距離が保たれるとの報告を受信すると、ロボット制御部２１は、アームタスク２３に格納されている制御情報に基づき、ロボット３０を制御する。受信部２２が、干渉判定装置１０から、指示信号と作業者５０とロボット３０とが接触し得るとの報告とを受信すると、ロボット制御部２１は、アームタスク２３に格納されている制御情報に従ったロボット３０に対する制御を、指示信号に従って修正する。
【０１３４】
これまでに図３、図４、および図５を参照しながら説明してきた干渉判定装置１０が実行する処理（言い換えれば、干渉判定装置１０が実行するロボット干渉判定方法）は、以下のように整理することができる。すなわち、干渉判定装置１０が実行する制御方法（ロボット干渉判定方法）は、所定の領域内に存在する作業者５０（対象物）の現時点ｔ０における現在位置ｘｈ（ｔ０）および現在速度ベクトルｖｈ（ｔ０）を取得する対象物状態取得ステップ（人存在領域計算処理、Ｓ１２０）と、ロボット３０（ロボットにおける所定の可動部）の現時点ｔ０における現在位置ｘｒ（ｔ０）および現在速度ベクトルｖｒ（ｔ０）を取得するロボット状態取得ステップ（ロボット軌道取得処理、Ｓ１３１）と、作業者５０の現在位置ｘｈ（ｔ０）および現在速度ベクトルｖｈ（ｔ０）と、ロボット３０の現在位置ｘｒ（ｔ０）および現在速度ベクトルｖｒ（ｔ０）とに基づき、作業者５０とロボット３０との接触が生じる可能性があるか否かをリアルタイムで判定する干渉判定ステップ（Ｓ１３４）と、を含んでいる。
【０１３５】
前記の方法によれば、前記ロボット干渉判定方法は、作業者５０の現在位置ｘｈ（ｔ０）および現在速度ベクトルｖｈ（ｔ０）と、ロボット３０の現在位置ｘｒ（ｔ０）および現在速度ベクトルｖｒ（ｔ０）とを取得する。そして、前記ロボット干渉判定方法は、作業者５０の現在位置ｘｈ（ｔ０）および現在速度ベクトルｖｈ（ｔ０）と、ロボット３０の現在位置ｘｒ（ｔ０）および現在速度ベクトルｖｒ（ｔ０）とに基づき、作業者５０とロボット３０との接触が生じる可能性があるかを、リアルタイムで判定する。
【０１３６】
前記ロボット干渉判定方法は、安全柵を用いずに前記ロボットと作業者５０との干渉を回避することができるので、生産現場等の省スペース化を実現することができる。
【０１３７】
また、前記ロボット干渉判定方法は、作業者５０およびロボット３０の各々の、現在位置および現在速度ベクトル（つまり、現在位置ｘｈ（ｔ０）および現在速度ベクトルｖｈ（ｔ０）と、現在位置ｘｒ（ｔ０）および現在速度ベクトルｖｒ（ｔ０）と）を用いて、リアルタイムで、作業者５０とロボット３０との接触の可能性を判定することで、生産効率の低下を抑制する。
【０１３８】
ここで、予め設けておいた領域内への人の侵入を監視してロボットの動作を制御する従来の方式は、人の安全が確保されている低い場合であっても、侵入を検知すると、ロボット動作を抑制するので、生産効率およびスペース効率が低下する。すなわち、人およびロボットの各々の位置および速度ベクトルは時々刻々と変化するにもかかわらず、この方式では、固定の基準を用いて、人とロボットとの干渉の可能性を判定するため、人の安全が確保されている場合にも、干渉の可能性があると判定してしまう。その結果、この方式は、人の安全が確保されている場合にも、人との干渉を回避する動作をロボットにさせたりするなどして、生産効率の低下を招いてしまう。
【０１３９】
また、ロボットのトルクを制限する従来の方式も、固定の基準を用いて人とロボットとの干渉の可能性を判定する従来の方式と同様に、人の安全が確保されている場合であっても、ロボットのトルクを制限するので、やはり生産効率の低下を招いてしまう。
【０１４０】
これに対して、前記ロボット干渉判定方法は、時々刻々と変化する作業者５０およびロボット３０の各々の、現在位置および現在速度ベクトルを用いて、接触の可能性を時々刻々に判定する。そして、前記ロボット干渉判定方法は、作業者５０とロボット３０との接触の可能性が具体化した時に初めて、両者の接触の可能性があると判定する。
【０１４１】
すなわち、前記ロボット干渉判定方法は、時々刻々と変化する作業者５０およびロボット３０の各々の、現在位置および現在速度ベクトルから、作業者５０とロボット３０との接触の可能性を具体的に判定する。つまり、前記ロボット干渉判定方法は、時々刻々と変化する、作業者５０およびロボット３０の各々の状態に応じて、作業者５０とロボット３０との接触の可能性が具体化した時に初めて、両者の接触の可能性があると判定する。
【０１４２】
したがって、前記ロボット干渉判定方法は、工場等の生産現場において、例えば作業者５０等である対象物とロボット３０との干渉を回避しつつ、生産効率およびスペース効率の低下を抑制することができるとの効果を奏する。
【０１４３】
（動的干渉判定処理について）
図６は、干渉判定装置１０が実行する動的干渉判定処理の一例を説明する図である。干渉判定装置１０は、例えば、ＩＳＯ／ＴＣ１５０６６の５．５．４．２．３に規定される「安全距離Ｓｐ」との概念を用いて、動的干渉判定処理を実行する。安全距離Ｓｐの概念について、以下に概要を説明する。
【０１４４】
（安全距離Ｓｐについて）
或る時点（時刻ｔ０）において、センサ等により、その或る時点における「人の、速度ベクトル（ｖｈ（ｔ０））および位置（ｘｈ（ｔ０））」と、その或る時点における「ロボット（ロボット可動部）の、速度ベクトル（ｖｒ（ｔ０））および位置（ｘｒ（ｔ０））」とを取得する。時刻ｔ０時点における、ロボットの速度ベクトルｖｒ（ｔ０）および位置ｘｒ（ｔ０）は、ロボットの制御情報を用いて算出してもよい。
【０１４５】
ｘｈ（ｔ０）とｘｒ（ｔ０）との差により、その或る時点の「人とロボットとの分離距離（Ｄｒ（ｔ０））」を算出する。また、ｖｈ（ｔ０）とｖｒ（ｔ０）とにより、以下に示す安全距離計算公式を用いて、その或る時点における「人に接触する前にロボットが停止するための、所要の最短距離（最短安全許容距離（Ｓｐ（ｔ０）））」を算出する。そして、Ｄｒ（ｔ０）とＳｐ（ｔ０）とを比較し、「Ｄｒ（ｔ０）がＳｐ（ｔ０）よりも大きい」場合、人とロボットとは干渉しないと判定し、「Ｄｒ（ｔ０）がＳｐ（ｔ０）以下である」場合、干渉すると判定をする。
【０１４６】
ＩＳＯ／ＴＣ１５０６６の５．５．４．２．３において、安全距離Ｓｐは、以下の安全距離計算公式により定義される。すなわち、或る時点（時刻ｔ０）における安全距離Ｓｐ（ｔ０）は、「Ｓｐ（ｔ０）＝Ｓｈ＋Ｓｒ＋Ｓｓ＋ｃ＋Ｚｄ＋Ｚｒ」と規定されている。以下の説明において、或る時点（時刻ｔ０）は、「センサ（例えば、センサ４０）が人（例えば、作業者５０）を検知した時間（時刻）」とも言い換えることができる。また、以下の説明において、時刻ｔ０からＴｒ経過した「時刻ｔ０＋Ｔｒ」において、ロボット（例えば、ロボット３０）が停止動作を開始し始めるものとし、ロボットが停止するのはさらにＴｓが経過した「時刻ｔ０＋Ｔｒ＋Ｔｓ」であるものとする。また、ロボットが停止動作を開始し始めてから、ロボットが停止するまでのロボットの速度ベクトルを、つまり、減速動作中のロボットの速度ベクトルを、「ｖｓ（ｔ）」と表わすものとする。減速動作中のロボットの速度ベクトルｖｓ（ｔ）は、ロボットの制御情報を用いて算出してもよい。
【０１４７】
図７に示すように、上述の安全距離計算公式において、「Ｓｈ」は、「現時点（時刻ｔ０）からロボットの移動が停止する時点（ｔ０＋Ｔｒ＋Ｔｓ）までに、人が移動する距離」を示しており、つまり、
【０１４８】
【数１】
2020093373.tif 000003
【０１４９】
である。
【０１５０】
「Ｓｒ」は、「現時点（時刻ｔ０）からロボットが停止動作を開始する時点ｔ０＋Ｔｒまでに、ロボットが移動する距離」を示しており、つまり、
【０１５１】
【数２】
2020093373.tif 000004
【０１５２】
である。
【０１５３】
「Ｓｓ」は、「ロボットが停止動作を開始する時点ｔ０＋Ｔｒからロボットの移動が停止する時点ｔ０＋Ｔｒ＋Ｔｓまでに、ロボットが移動する距離」を示しており、つまり、
【０１５４】
【数３】
2020093373.tif 000005
【０１５５】
である。
【０１５６】
また、上述の安全距離計算公式において、「ｃ」は、「Ｄｅｐｔｈ  ｐｅｎｅｔｒａｔｉｏｎ  ｆａｃｔｏｒ」と呼ばれる、人の中心（重心）等の検知位置から、その人の腕などの部分までの距離を示している。「Ｚｄ」は「人体を検知するセンサの測定誤差」を示しており、「Ｚｒ」は「ロボット制御における制御位置の誤差」を示している。
【０１５７】
安全距離Ｓｐの概念において、或る時点（時刻ｔ０）の分離距離Ｄｒ（ｔ０）と、或る時点における、人およびロボットの各々の速度ベクトル（ｖｈ（ｔ０）およびｖｒ（ｔ０））から算出される最短安全許容距離Ｓｐ（ｔ０）との大小が判定される。時刻ｔ０における分離距離Ｄｒ（ｔ０）が、最短安全許容距離Ｓｐ（ｔ０）よりも大きいと、人とロボットとは干渉しないと判定され、Ｄｒ（ｔ０）がＳｐ（ｔ０）以下であると、干渉すると判定される。
【０１５８】
図６に例示される通り、分離距離Ｄｒ（ｔ０）と最短安全許容距離Ｓｐ（ｔ０）とが等しい場合、「ロボットの移動が停止する時点（ｔ０＋Ｔｒ＋Ｔｓ）における、人の位置（推定位置）」と、「ロボットの移動が停止する時点（ｔ０＋Ｔｒ＋Ｔｓ）における、ロボットの位置（推定位置）」との差（距離）は、「ｃ＋Ｚｄ＋Ｚｒ」に一致することになる。図６に示すように、「ロボットの移動が停止する時点（ｔ０＋Ｔｒ＋Ｔｓ）における、人の推定位置」は、「人が、現時点（時刻ｔ０）の位置からＳｈだけ移動した位置」である。また、「ロボットの移動が停止する時点における、ロボットの推定位置」は、「ロボットが、現時点（時刻ｔ０）の位置からＳｒ＋Ｓｓだけ移動した位置」である。
【０１５９】
ここで、ｃ、Ｚｄ、Ｚｒの各々を予め求めておくことにより、「ｃ＋Ｚｄ＋Ｚｒ」は所定値として扱うことができる。つまり、安全距離Ｓｐの概念は、ロボットの移動停止時点（ｔ０＋Ｔｒ＋Ｔｓ）における、人の推定位置とロボットの推定位置との距離が、所定値（ｃ＋Ｚｄ＋Ｚｒ）以下（以内）となると、人とロボットとが干渉すると判定するものと理解することができる。
【０１６０】
（干渉判定装置への適用）
干渉判定装置１０は、現時点ｔ０における「作業者５０の位置ｘｈ（ｔ０）および速度ベクトルｖｈ（ｔ０）」と、現時点ｔ０における「ロボット３０の位置ｘｒ（ｔ０）および速度ベクトルｖｒ（ｔ０）」とを用いて、現時点ｔ０の最短安全許容距離Ｓｐ（ｔ０）を算出する。そして、干渉判定装置１０は、現時点ｔ０の最短安全許容距離Ｓｐ（ｔ０）を用いて、作業者５０とロボット３０との干渉の可能性を判定する。
【０１６１】
具体的には、先ず、人状態情報生成部１１２が、センサ情報取得部１１１から取得した測域データ等を用いて、「現時点（つまり、時刻ｔ０）の、作業者５０の位置ｘｈ（ｔ０）および速度ベクトルｖｈ（ｔ０）」を取得する。また、ロボット状態取得部１２１は、制御情報を解析して、現時点ｔ０における「ロボット３０の、位置ｘｒ（ｔ０）および速度ベクトルｖｒ（ｔ０）」を取得する。
【０１６２】
次に、動的干渉判定部１２２は、現時点ｔ０における、作業者５０およびロボット３０の各々の「位置および速度ベクトル」から、ロボットの移動停止時点（ｔ０＋Ｔｒ＋Ｔｓ）における、作業者５０およびロボット３０の各々の位置を算出する。動的干渉判定部１２２は、現時点ｔ０における、作業者５０およびロボット３０の各々の「位置および速度ベクトル」から、安全距離計算公式により、ロボットの移動停止時点における、作業者５０およびロボット３０の各々の推定位置を算出する。動的干渉判定部１２２は、ロボットの移動停止時点（ｔ０＋Ｔｒ＋Ｔｓ）における、作業者５０の推定位置とロボット３０の推定位置との距離が、所定値（ｃ＋Ｚｄ＋Ｚｒ）以下であると、人とロボットとが干渉すると判定する。
【０１６３】
動的干渉判定部１２２により、人とロボットとが干渉すると判定されると、制御指示調整部１２３は、両者の干渉を回避するよう指示する指示信号を生成し、例えば、最短安全許容距離Ｓｐ（ｔ０）を小さくするよう指示する指示信号を生成する。言い換えれば、制御指示調整部１２３は、ロボット３０の移動速度および軌道の少なくとも一方を調整して、ロボットの移動停止時点（ｔ０＋Ｔｒ＋Ｔｓ）における、ロボット３０の推定位置を修正する指示信号を生成する。制御指示調整部１２３は、ロボットの移動停止時点（ｔ０＋Ｔｒ＋Ｔｓ）における、作業者５０の推定位置とロボット３０の推定位置との距離を、所定値（ｃ＋Ｚｄ＋Ｚｒ）よりも大きくするための指示信号を、コントローラ２０に送信する。
【０１６４】
干渉判定装置１０は、各時点で、「各時点における、作業者５０およびロボット３０の各々の、位置および速度ベクトル」を用いて、作業者５０とロボット３０との干渉の可能性を判定する。そして、干渉の可能性があると判定した時点で、干渉判定装置１０は、例えばロボット３０の移動速度および軌道の少なくとも一方を調整して、最短安全許容距離Ｓｐ（ｔ０）を小さくさせる。
【０１６５】
図６を用いて説明してきた「安全距離Ｓｐ」との概念、および、この概念の干渉判定装置１０への適用は、以下のように整理することができる。すなわち、干渉判定装置１０において、動的干渉判定部１２２は、作業者５０の位置ｘｈ（ｔ０）および速度ベクトルｖｈ（ｔ０）を取得した時点、つまり、現時点（ｔ０）から、ロボット３０が移動停止動作を開始し、ロボット３０の移動が停止するまでの時間における、作業者５０の推定位置とロボット３０の推定位置との距離が所定値以内となる場合に、作業者５０とロボット３０との接触が生じる可能性があると判定する。
【０１６６】
前記の構成によれば、干渉判定装置１０は、現時点ｔ０から、ロボット３０の移動が停止する時点までのいずれかの時点において、作業者５０の推定位置とロボット３０の推定位置との距離が所定値以内となると、作業者５０とロボット３０との接触が生じる可能性があると判定する。
【０１６７】
つまり、干渉判定装置１０は、ロボット３０の移動が停止した時点での作業者５０の推定位置とロボット３０の推定位置との距離だけでなく、その途中までの各時点における作業者５０の推定位置とロボット３０の推定位置との距離を用いて、前述の判定を行う。
【０１６８】
したがって、干渉判定装置１０は、「現時点ｔ０」から、「ロボット３０の移動が停止する時点」までの各時点における接触の可能性を考慮した判定を行うことができるとの効果を奏する。
【０１６９】
（指示信号について）
制御指示調整部１２３は、動的干渉判定部１２２によって「作業者５０とロボット３０とが接触し得る」と判定されると、作業者５０とロボット３０との干渉を回避するよう指示する指示信号を、コントローラ２０に送信する。制御指示調整部１２３は、以下のような指示信号をコントローラ２０に送信することによって、干渉回避動作によるロボット３０の生産性低下を回避・抑制してもよい。
【０１７０】
（生産性を向上するための調整）
干渉判定装置１０は、「接触が発生し得る」との判定を「ｔ＝ｔ０」の時点において下した場合、接触を回避するために、ロボット３０の速度および軌道の少なくとも一方の調整を、「ｔ＝ｔ０」の時点において実行する。
【０１７１】
干渉判定装置１０は、「ｔ＝ｔ０」の時点での調整後に、「接触が発生し得る」との判定を「ｔ＝ｔ０＋ｔ’」の時点において下した場合、接触を回避するために、ロボット３０の速度および軌道の少なくとも一方の調整を、「ｔ＝ｔ０＋ｔ’」の時点で実行する。
【０１７２】
干渉判定装置１０は、「ｔ＝ｔ０」の時点での調整後に、「接触は発生しない」との判定を「ｔ＝ｔ０＋ｔ’」の時点において下した場合、生産性を向上するための調整を、ロボット３０の速度および軌道の少なくともについて、「ｔ＝ｔ０＋ｔ’」の時点で実行する。生産性を向上するための調整とは、例えば、ロボット３０の速度（加速）および軌道の少なくとも一方を、「ｔ＝ｔ０」の時点での調整の前の状態に戻す調整である。
【０１７３】
すなわち、干渉判定装置１０において、制御指示調整部１２３による前記調整指示の後に、動的干渉判定部１２２が、作業者５０とロボット３０との接触が生じる可能性がないと判定した場合に、制御指示調整部１２３は、コントローラ２０に対して、ロボット３０の移動速度および軌道の少なくともいずれか一方を、前記調整指示が行われる前の状態に戻す指示を示す前記指示信号を送信してもよい。
【０１７４】
前記の構成によれば、干渉判定装置１０は、前記調整指示の後に、作業者５０とロボット３０との接触が生じる可能性がなくなると、ロボット３０の移動速度および軌道の少なくとも一方を、調整の前の状態に戻すように、コントローラ２０に指示する。したがって、干渉判定装置１０は、前記調整指示の後に、作業者５０とロボット３０との接触が生じる可能性がなくなると、ロボット３０の移動速度および軌道の少なくとも一方を、調整の前の状態に戻すことができるとの効果を奏する。
【０１７５】
（距離に応じた調整内容）
「接触が発生し得る」と判定した場合であっても、ロボット３０の動作を停止するのではなく、ロボット３０の速度および軌道の少なくとも一方を調整すれば接触を回避できるときには、干渉判定装置１０は、ロボット３０の動作を停止させない。干渉判定装置１０は、ロボット３０の速度および軌道の少なくとも一方を調整して、ロボット３０と作業者５０との接触を回避する。
【０１７６】
ロボット３０の速度および軌道の少なくとも一方を調整しただけでは接触を回避できないと判定した場合、干渉判定装置１０は、ロボット３０の動作を停止させる。例えば、ロボット３０と作業者５０との距離が予め設定しておいた制限距離以下となって、ロボット３０の速度および軌道の少なくとも一方を調整しただけでは接触を回避できないと判定した場合、干渉判定装置１０は、ロボット３０の動作を停止させる。
【０１７７】
すなわち、干渉判定装置１０において、動的干渉判定部１２２が、作業者５０とロボット３０との接触が生じる可能性を示す可能性評価値が第１の閾値以上であると判定した場合に、制御指示調整部１２３は、コントローラ２０に対して、ロボット３０の移動速度および軌道の少なくともいずれか一方の調整指示を示す前記指示信号を送信する。また、前記可能性評価値が、前記第１の閾値よりも高い第２の閾値以上となったと動的干渉判定部１２２が判定した場合に、制御指示調整部１２３は、コントローラ２０に対して、ロボット３０を停止させる指示を示す前記指示信号を送信する。
【０１７８】
前記の構成によれば、干渉判定装置１０は、前記可能性評価値が第１の閾値以上であると、ロボット３０の移動速度および軌道の少なくとも一方の調整を指示し、前記可能性評価値が第２の閾値以上となると、ロボット３０の停止を指示する。つまり、干渉判定装置１０は、作業者５０とロボット３０との接触が生じる可能性に応じて、ロボット３０の移動を制御する。作業者５０とロボット３０との接触が生じる可能性がそれほど高くない（つまり、第１の閾値以上で第２の閾値未満である）場合、干渉判定装置１０は、ロボット３０を停止させずに、ロボット３０の移動速度および軌道の少なくともいずれか一方を調整する。作業者５０とロボット３０との接触が生じる可能性が第２の閾値以上である場合、干渉判定装置１０は、ロボット３０を停止させる。
【０１７９】
したがって、干渉判定装置１０は、接触が生じる可能性に応じて、接触を回避するに必要十分な動作をロボット３０に実行させるので、接触を回避しつつ、生産効率およびスペース効率の低下を抑制することができるとの効果を奏する。
【０１８０】
（制御システムの適用環境について）
図７は、制御システム１を適用する環境の一例を示す図である。制御システム１を適用する環境として、例えば、図７に示すような、作業者５０とロボット３０とがそれぞれ机の前で作業し、作業の成果物を手前のベルトコンベアに流す状況を想定することができる。図７に示す例では、通路と作業領域との間の距離が１．６ｍ程度であって、ベルトコンベアが存在すると仮定し、また、作業者５０が立って作業できるように机の高さを１ｍと想定した。図７に示す例では、作業者５０を挟むように、作業者５０の両脇にセンサ４０を配置することによって、センサ４０によって検出することのできない作業者５０の領域をできるだけ小さくした。
【０１８１】
センサ４０の配置に際しては、センサ４０を配置する高さについて、以下の点に留意した。すなわち、センサ４０を作業者５０の頭の高さに配置するのは、センサ４０のレーザなどの測定波が作業者５０の目に入射する可能性があるため、望ましくない。センサ４０を作業者５０の腰の高さに配置するのは、体幹計算（つまり、重心位置の算出）の結果が作業者５０の状態に左右されにくいため、望ましい。センサ４０を作業者５０の太ももの高さに配置するのは、太ももの開き具合により体幹計算の結果がずれるため、望ましくない。センサ４０を作業者５０のくるぶしの高さに配置するのは、作業者５０の足の幅（足をどの程度開いているか）によって体幹計算の結果がずれるため、望ましくない。
【０１８２】
（重心の算出方法について）
図８は、センサ４０の計測結果を利用して作業者の重心を算出する方法の一例を説明する図である。図８において、星印は作業者５０の重心の位置（重心位置）を示しており、星印の周囲を囲む各点は、測域データが示す作業者５０の存在位置（作業者５０の存在を示す点）を示している。人状態情報生成部１１２は、図８に示すような作業者５０の存在を示す点群から、公知の重心算出方法を利用して、星印で示す作業者５０の重心位置を算出する。
【０１８３】
§４．変形例
（人位置検出方法について）
図９は、図７に例示したセンサ４０の配置例とは異なる、センサ４０の配置例を示す図である。図７に例示したように、複数または単数のセンサ４０を作業者５０の近傍に設置してもよいし、図９の（Ａ）に例示するように、複数または単数のセンサ４０をロボット３０に設置してもよい。また、図９の（Ｂ）Ｂに例示するように、複数または単数のセンサ４０を生産現場等の天井に設置してもよい。
【０１８４】
〔ソフトウェアによる実現例〕
干渉判定装置１０の機能ブロック（具体的には、センサ情報取得部１１１、人状態情報生成部１１２、ロボット状態取得部１２１、動的干渉判定部１２２、および、制御指示調整部１２３）は、集積回路（ＩＣチップ）等に形成された論理回路（ハードウェア）によって実現してもよいし、ＣＰＵ（CenＴｒal Processing Unit）を用いてソフトウェアによって実現してもよい。
【０１８５】
後者の場合、干渉判定装置１０は、各機能を実現するソフトウェアであるプログラムの命令を実行するＣＰＵ、上記プログラムおよび各種データがコンピュータ（またはＣＰＵ）で読み取り可能に記録されたＲＯＭ（Read Only Memory）または記憶装置（これらを「記録媒体」と称する）、上記プログラムを展開するＲＡＭ（Random Access Memory）等を備えている。そして、コンピュータ（またはＣＰＵ）が上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記記録媒体としては、「一時的でない有形の媒体」、例えば、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路等を用いることができる。また、上記プログラムは、該プログラムを伝送可能な任意の伝送媒体（通信ネットワークや放送波等）を介して上記コンピュータに供給されてもよい。なお、本発明は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
【０１８６】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【符号の説明】
【０１８７】
１  制御システム（ロボット制御システム）
１０  干渉判定装置（ロボット干渉判定装置）
２０  コントローラ（ロボット制御装置）
２１  ロボット制御部
２２  受信部
３０  ロボット
４０  センサ（計測装置）
５０  作業者（対象物）
１１２  人状態情報生成部（対象物状態取得部）
１２１  ロボット状態取得部
１２２  動的干渉判定部（干渉判定部）
１２３  制御指示調整部（指示部）
Ｓ１２０  人存在領域計算処理（対象物状態取得ステップ）
Ｓ１３１  ロボット軌道取得処理（ロボット状態取得ステップ）
Ｓ１３４  干渉判定ステップ
【図１】
2020093373.tif 000006
【図２】
2020093373.tif 000007
【図３】
2020093373.tif 000008
【図４】
2020093373.tif 000009
【図５】
2020093373.tif 000010
【図６】
2020093373.tif 000011
【図７】
2020093373.tif 000012
【図８】
2020093373.tif 000013
【図９】
2020093373.tif 000014