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