(57)【特許請求の範囲】
【請求項１】
作業者とロボットの時系列の状態を検出してロボットを制御するロボット制御装置であって、
作業者の状態を検出する検出手段と、
ロボットおよび作業者の時系列の状態を学習した学習情報を保持する学習情報保持手段と、
前記検出手段から出力された作業者の状態と、ロボットの状態と、前記学習情報保持手段から出力される学習情報に基づいて、ロボットの動作を判断する判断手段と、
前記判断手段から出力される情報に基づいて、ロボットの動作を制御する制御手段とを有することを特徴とするロボット制御装置。
【請求項２】
前記作業者の状態は、作業者の作業対象の状態を含むことを特徴とする請求項１に記載のロボット制御装置。
【請求項３】
前記ロボットの状態は、ロボットの作業対象の状態を含むことを特徴とする請求項１に記載のロボット制御装置。
【請求項４】
前記検出手段から出力された作業者の状態と、ロボットの状態と、前記学習情報保持手段から出力される学習情報に基づいて学習情報を更新し、更新した学習情報を前記学習情報保持手段に出力する学習情報更新手段をさらに有することを特徴とする請求項１〜３の何れか１項に記載のロボット制御装置。
【請求項５】
前記判断手段は、ロボットの動作を停止または減速させる情報を前記制御手段に出力することを特徴とする請求項１〜４の何れか１項に記載のロボット制御装置。
【請求項６】
前記判断手段は、ロボットの動作を停止または減速させる情報を前記制御手段に出力した後に、再度、前記検出手段から出力された作業者の状態と、ロボットの状態と、前記学習情報保持手段から出力される学習情報に基づいて、ロボットの動作を判断することを特徴とする請求項１〜５の何れか１項に記載のロボット制御装置。
【請求項７】
前記作業者の状態は、作業者の注視している対象を含むことを特徴とする請求項１〜６の何れか１項に記載のロボット制御装置。
【請求項８】
作業者とロボットの時系列の状態を検出してロボットを制御するロボット制御方法であって、
作業者の状態を検出する検出工程と、
ロボットおよび作業者の時系列の状態を学習した学習情報を保持する学習情報保持工程と、
前記検出工程から出力された作業者の状態と、ロボットの状態と、前記学習情報保持工程から出力される学習情報に基づいて、ロボットの動作を判断する判断工程と、
前記判断工程から出力される情報に基づいて、ロボットの動作を制御する制御工程とを有することを特徴とするロボット制御方法。
【請求項９】
請求項１〜７の何れか１項に記載のロボット制御装置の各手段を構成するプログラムをコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、作業者とロボットが共存する空間で作業をするためのロボット制御装置およびロボット制御方法に関する。
【背景技術】
【０００２】
生産や組み立ての効率化を図るために、作業者とロボットが共存する空間で作業を行うシステムが近年注目を集めている。しかし、作業者とロボットが共存する空間で作業を行う場合に、ロボットと作業者が干渉することで、作業者に危害が及ぶ可能性がある。
そこで、特許文献１に記載の手法では、境界を横切るような動作などの各種の動作の監視に用いる監視境界を２つ設ける。そして、いずれか一方の監視境界を、無効な監視境界とし、さらにその無効な監視境界を、２つの監視境界で切替え可能にする。つまり、２つの監視境界の間の領域は、作業者とロボットが排他に進入可能な領域となり、安全性を向上させつつ、ロボットと作業者が共存する空間で作業を行うことができるようにしている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−１９１８２３号公報
【特許文献２】特開２００１−０９２９７８号公報
【特許文献３】特開平６−５９８０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に記載の構成では、監視境界の間の領域において、ロボットと人間のどちらか一方しか作業ができないため、生産性が低下する場合がある。
本発明は前述の問題点に鑑み、監視境界などを用いて作業空間中に領域を定義することなく、ロボットと作業者が共存する空間で安全に作業をすることを可能にし、生産性を向上させることを目的とする。
【課題を解決するための手段】
【０００５】
本発明のロボット制御装置は、作業者とロボットの時系列の状態を検出してロボットを制御するロボット制御装置であって、作業者の状態を検出する検出手段と、ロボットおよび作業者の時系列の状態を学習した学習情報を保持する学習情報保持手段と、前記検出手段から出力された作業者の状態と、ロボットの状態と、前記学習情報保持手段から出力される学習情報に基づいて、ロボットの動作を判断する判断手段と、前記判断手段から出力される情報に基づいて、ロボットの動作を制御する制御手段とを有することを特徴とする。
【発明の効果】
【０００６】
本発明によれば、作業をするロボットおよび作業者の状態と、ロボットおよび作業者の状態を時系列に学習した学習情報に基づいてロボットを制御する。これにより、ロボットと作業者が共存する空間でロボットと作業者が安全に作業をすることが可能となり、生産性を向上することができる。
【図面の簡単な説明】
【０００７】
【図１】第１、第２及び第４の実施形態に係るロボット制御装置の全体構成を示す図である。
【図２】第１、第２及び第３の実施形態に係る事例に関する説明をした図である。
【図３】検出部で検出する作業者の状態を示した図である。
【図４】ロボットの状態を示した図である。
【図５】作業者とロボットの動作を学習するためのモデルを表した図である。
【図６】実施形態に係るモデルを学習する手順を示したフローチャートである。
【図７】第１の実施形態に係るロボット制御装置の制御手順を示すフローチャートである。
【図８】第２の実施形態に係るロボット制御装置の制御手順を示すフローチャートである。
【図９】第３の実施形態に係るロボット制御装置の全体構成を示す図である。
【図１０】第３の実施形態に係るロボット制御装置の制御手順を示すフローチャートである。
【図１１】第４の実施形態に係る事例に関する説明をした図である。
【図１２】第４の実施形態に係るロボット制御装置の制御手順を示すフローチャートである。
【図１３】作業者の時系列の状態の保持方法について説明する図である。
【図１４】学習結果のモデルの保持方法について説明する図である。
【図１５】学習結果のモデルを表した図である。
【発明を実施するための形態】
【０００８】
（第１の実施形態）
本実施形態に係るロボット制御装置は、ロボットと作業者が共存する空間で作業をする場合において、事前にロボットと作業者の作業における時系列の状態を学習した学習情報を用いる。現在作業している作業者とロボットの時系列の状態が、学習した作業者とロボットの時系列の状態である確率が高ければ、ロボットは動作を継続するように制御する。また、学習時の作業者とロボットの時系列の状態である確率が低ければ、動作を停止もしくは減速するように制御する。このように、事前に学習した情報を用いてロボットを制御することで、ロボットと作業者が共存する空間で作業をする場合においても安全性を確保しつつ、生産性を向上させるようにしたものである。
【０００９】
まず、図２を用いて、本実施形態におけるロボット制御装置を適用可能な作業者２０３とロボット１０３の作業の事例について説明する。
図２の事例では、ロボット１０３と、センサ１０２がロボット制御装置１０１に接続されている。ロボット１０３には、ハンド２０５が接続されている。また、ハンド２０５は作業対象２０６を把持している。２０３は作業者であり、作業者２０３においても作業者の手２０７で作業対象２０８を把持している状態である。また、ロボット座標系２１１が定義されている。
次の状態では、ロボット１０３は把持している作業対象２０６を作業台２１０の上に配置されている作業対象２０９に組み付ける。同時に、作業者２０３も、把持している作業対象２０８を作業台２１０の上に配置している作業対象２０９に組み付ける事例である。
【００１０】
ここで、センサ１０２とロボット制御装置１０１を用いて作業者２０３の時系列の状態と、ロボット１０３の時系列の状態を、ロボット制御装置１０１が、事前に学習した情報を用いて評価している。現在作業している作業者２０３とロボット１０３の時系列の状態が、学習した作業者２０３とロボット１０３の時系列の状態である確率が高ければ、ロボットは動作を継続するように制御する。また、学習した作業者２０３とロボット１０３の時系列の状態である確率が低ければ、動作を停止もしくは減速するように制御する。
【００１１】
このように制御することで、ロボット１０３は把持している作業対象２０６を作業台２１０の上に配置している作業対象２０９に組み付けることができる。また、同時に、作業者２０３も、把持している作業対象２０８を作業台２１０の上に配置している作業対象２０９に組み付けることができる。
【００１２】
図２のロボット制御装置１０１の構成について、図１を用いて説明する。
図１は、本実施形態におけるロボット制御装置１０１の構成例を示すブロック図である。１０２は、作業者２０３の状態を感知するセンサ、１０３はロボットである。１０４は、センサ１０２からの情報を元に作業者２０３の状態を検出する検出部である。１０５は、ロボット１０３の状態と作業者２０３の状態を時系列に学習した学習情報を保持する学習情報保持部である。１０６は、ロボット１０３、検出部１０４、学習情報保持部１０５から入力される情報に基づいてロボット１０３の動作を判断する判断部である。１０７は、判断部１０６から入力される情報に基づいてロボット１０３を制御する制御部である。
【００１３】
以下、ロボット制御装置１０１の各部位、および、センサ１０２とロボット１０３について詳細に説明する。
まず、センサ１０２は、作業者の状態を感知する装置である。センサ１０２は、検出部１０４が作業者の状態を認識可能な情報を出力する必要がある。ここで、作業者の状態とは、作業者の振る舞いを表現するためのパラメータである。本実施例の作業者の状態とは、図２で定義したロボット座標系２１１から見た作業者の手の位置である。
【００１４】
作業者の手の位置のデータの保持の方法について、図１３の例を用いて説明する。作業者の手の位置は、XML（Extensible Markup Language）形式で保持される。１つ作業の振る舞いは、タグ＜motion＞で囲まれたデータで保持される。また、１つの作業は、離散的に時系列に保持される。時系列で保持するために、タグ<frame>で囲まれた要素を複数保持する。そして、タグ<frame>内には作業開始からの時間を記録したタグ<time>と、作業者の手の部位のタグ＜region＞で構成される。本実施例では、手の位置を保持するので、タグ<name>にはhandが指定される。さらに、タグ<position>で囲まれた部分に作業者の腕の特定の部位の位置の値、ここでは手の重心位置の値が保持される。
【００１５】
センサ１０２は、検出部１０４が作業者の状態を認識可能な情報を出力するために、３次元の距離画像が取得可能なカメラを用いる。
【００１６】
次に、検出部１０４は、センサ１０２から入力された情報から、作業者の状態を検出する部位である。２次元や３次元の画像から作業者の部位の位置姿勢を求める手法は、多く提案されており、例えば、特許文献２に記載の手法を用いてもよい。
【００１７】
ロボット１０３は、制御可能なロボットであり、ロボットの状態を出力可能なロボットであれば、どのようなロボットであってもよい。
学習情報保持部１０５は、事前にロボット１０３とセンサ１０２の状態の変化を学習したモデル情報が記録されている。
【００１８】
学習情報保持部１０５に記録されているモデル情報の生成方法について、図３〜図６および図１４、図１５を用いて説明する。
学習情報保持部１０５に記録されているモデル情報は、作業者とロボットが作業をする動作から生成したモデル情報である。モデル情報は、そのモデルの構造とパラメータで構成される。
まず、モデルの構造であるが、伸縮する可能性のある信号パターンに適した、隠れマルコフモデルを用いる。
具体的には、図５の（ｂ）の５０１のような、状態５０３と状態遷移５０２で構成されたモデルである。
各状態ｓ１、ｓ２、ｓ３は確率密度関数であり、それぞれの状態は、図５（ｃ）の５０４、５０５、５０６のような正規分布の確率密度関数である。
【００１９】
次に、モデルの学習方法について述べる。モデルの学習には、作業者とロボットが作業をする動作を複数回行った動作のサンプルから学習する。本実施形態において、学習する作業者とロボットの状態は、作業者の手とロボットのハンドの位置とする。
モデルの学習とは、図５（ｂ）に示した各状態の遷移確率、a11、a12、a21、a22、a31のパラメータ、および図５（ｃ）に示した各状態の正規分布の確率密度関数のパラメータ、平均ｍ１、ｍ２、ｍ３、分散ｖ１、ｖ２、ｖ３を求めることである。
【００２０】
ここで、学習のための作業者の動作の時系列の状態の取得方法は、図３（ａ）に示すように、作業者２０３の手の位置３０２の情報について、センサ１０２を用いて得る。
また、図３（ａ）では作業者２０３の手の位置を３０１から３０２まで移動させる動作を表している。
【００２１】
図３（ａ）で示した作業者２０３の手の位置は、図３（ｂ）の時間と手の位置のグラフ３０３のように書くことができる。
図３（ｂ）の手の位置のグラフ３０３について詳細に説明する。
グラフ３０３は、横軸が時間、縦軸が図２記載のロボット座標系２１１のZ軸方向の位置である。
作業者２０３の手の位置は、３次元で表すことができる。しかし、ここでは、説明を簡略化するためにZ軸の座標のみを用いる。
３次元に拡張する場合は、図５（ｂ）に示したモデル５０１をZ軸だけでなくXY軸についても用意すればよい。
【００２２】
また、図３（ｂ）のｔ０の時点での手の位置は作業開始の初期位置として、あらかじめ設定されている。加えて、手の位置を計測するにあたり、図３（ｂ）の手の位置ｃ１、ｃ２のように、チェックポイントが定義している。図３（ｂ）では、ｃ１は0.5mに設定されており、ｃ２は、１．３ｍに設定されている。このｃ１、ｃ２のチェックポイントにより、手の位置の時間変化を、グループに分ける。
図３（ｂ）では、初期位置からｃ１の位置までをｓ１、ｃ１からｃ２の位置までをｓ２、ｃ２から最終位置をｓ３とする。このグループ分けを行うことで、それぞれのグループで入力される手の位置の値の傾向別に学習した結果が得られる。グループ化する理由は、グループを分けない場合に比べて、より動作の特徴を反映した、学習結果が得られるという効果があるからである。
【００２３】
作業者２０３の手の位置３０２がｃ１に達した時間をｔ３とし、ｔ０からの時間をｔ１、ｔ２で均等に分割する。同様にｃ２に達した時間をｔ５とし、ｔ４で均等に分割する。
均等に分割する理由は、c1に達する時間が変わったとしても、同様の学習モデルを使用できるからである。
【００２４】
加えて、図３（ａ）で示した作業者の手の位置だけでなく、作業者２０３が把持している作業対象２０８の状態を作業者２０３の状態に含めて、動作を取得してもよい。作業対象２０８の状態を含めることで、部品の脱落や把持の失敗に対しても対応できるという効果がある。
【００２５】
次に、学習する動作の特徴を表した情報を取得するために、図３(ｂ)で手の位置の情報を、図中のt1、t2、t3、t4、t5、t6、t7の手の位置を抽出する。そして、前の時点と次の時点の位置の値の差分を作業者の学習する動作の特徴とする。例えば、t1時点での手の位置からt0の手の位置の差分を求めると、０．１になる。t2時点での手の位置からt1時点の手の位置の差分を求めると０．２になる。同様に、前の時点と次の時点の位置の値の差分を求めて、左から列挙すると、図３（ｃ）の３０４のような数字の列となる。
学習のためのロボット１０３の動作の時系列の状態の取得方法は、図４（ａ）のように、ロボット１０３の関節の角度情報をロボット１０３の関節に内蔵されているエンコーダーの情報を読み取ることで得る。ロボット１０３の関節の角度が分かれば、順運動学(forward kinematics)の計算で、ロボット１０３のハンドの位置が分かる。
また、図４では、ロボット１０３のハンドの位置を４０１から４０２まで移動させる動作を表している。
【００２６】
図４（ａ）で示したロボット１０３の関節の位置は、図４（ｂ）の時間とハンドの位置のグラフ４０３のように書くことができる。
図４では、一つの関節の動作に着目しているが、もちろん状態を取得する関節は１つに限る必要はない。ロボット１０３の作業の動作を代表する部位であれば、複数用いてもよい。さらに、図４（ａ）のロボット１０３が把持している作業対象２０６の状態をロボット１０３の状態に含めて、動作を取得してもよい。作業対象２０６の状態を含めることで、部品の脱落や把持の失敗に対しても対応できるという効果がある。
【００２７】
また、学習する動作の特徴を表した情報を取得するために、図４(ｂ)で手の位置の情報を、図中のt0、t1、t2、t3、t4、t5、t6、t7の手の位置を抽出しその値の差分をロボットの学習する動作の特徴とする。結果として、ハンドの位置の前の時点と次の時点の位置の値の差分を求めて、左から列挙すると、図４（ｃ）の４０４となる。
【００２８】
次に、図３で説明した手順で得た複数の作業者の時系列の状態の情報から作業者のモデルのパラメータを求める方法について図５を用いて説明する。ロボットのモデルのパラメータを求める方法も同様であるため、説明は省略する。
【００２９】
図５（ａ）ように、作業者の複数の動作のサンプル３０４、３０５、３０６のグループ化された動作は、それぞれ５０７、５０８、５０９のようになる。それぞれのグループをモデル５０１の状態とし、各状態をｓ１、ｓ２、ｓ３とする。
次に、区切った各状態のｓ１、ｓ２、ｓ３のデータの平均と分散を求める。結果として、動作のサンプル３０４、３０５、３０６が学習に用いる全てのサンプルとした場合は以下のようになる。状態ｓ１の平均はm1=0.17、分散はv1=0.0075、状態ｓ２の平均はm2=0.4、分散は、v2=0.024、状態ｓ３の平均はm3=-0.4、分散はv3=0.024となる。それぞれをグラフで表すと、図５（ｃ）の５０４〜５０６のようになる。
【００３０】
次に、作業者の複数の動作のサンプル３０４、３０５、３０６から状態遷移確率を求める。サンプル３０４、３０５、３０６の動作サンプルの中で、ｓ１からの状態遷移は、９回であり、ｓ１から、ｓ１の遷移は、６回であるため、a11の遷移確率は６/９となる。同様に、a12は３／９、a21は３/６、a22は３／６、a31は１となる。
求めたパラメータの結果を図示すると、図１５の（ｂ）の１５０３のようになる。
加えて、モデルのパラメータの保持方法について、図１４を用いて説明する。モデルのパラメータの保持は、XML（Extensible Markup Language）形式で保持される。
１つのモデルは、タグ＜model＞で囲まれたデータで保持される。初期の状態の名前をタグ＜startState＞で保持する。１つのモデルは複数の状態を保持する。
１つの状態は、タグ<state>で囲まれたデータで保持される。状態の名前は、タグ＜name＞で保持される。また、状態遷移の情報はタグ<transition>で囲まれる領域で保持される。状態遷移先の状態名はタグ<next>で保持され、状態遷移確率はタグ<probability>で保持される。状態の確率密度関数は、関数はタグ<function>で保持され、関数名はタグ<distribution>で保持される。また、その関数のパラメータはタグ＜parameter＞で保持する。
学習されたモデル図１５（ｂ）の１５０３を得るまでの手順について、図６を用いて説明する。
Ｓ６０１において、まず作業者２０３に学習する対象の作業の開始を通知する。通知後、ロボット１０３が動作を開始し、作業者２０３も動作を開始する。
Ｓ６０２において、学習する対象の作業をする作業者２０３とロボット１０３の状態を時系列に記録する。
【００３１】
Ｓ６０３において、設定したくりかえし数に達したかどうか判断する。ここで、くりかえし数は多いほど、学習の精度は向上するが、学習に費やす時間が増加する。設定したくりかえし数に達していたら、Ｓ６０４に遷移し、モデルのパラメータを推定し終了する。設定したくりかえし数に達していなかったら、Ｓ６０１に戻る。
【００３２】
図１の説明に戻る。判断部１０６は、ロボット１０３から出力されるロボット１０３の時系列の状態、検出部１０４から出力される作業者２０３の時系列の状態、学習情報保持部１０５から入力されるモデルに基づいてロボット１０３の動作を判断する。具体的には、学習情報保持部１０５から判断部１０６に入力されるモデルをＭとして、ロボット１０３および検出部１０４から判断部１０６に入力される時系列の状態をｙとする。この時、時系列の状態を、ｙがモデルＭから発生した確率Ｐ(ｙ｜M)は、可能性のある状態遷移をｓiとすると、数１になる。
【００３３】
【数１】
0006494331.tif 000002
【００３４】
判断部１０６は、数１より得た確率と事前に設定した閾値を比較し判断する。数１より得た確率が閾値を下回る確率の場合は、作業者２０３に危険が及ぶ可能性があるので、ロボット１０３の動作を停止または減速するための制御信号を制御部１０７に出力する。ここで、減速とは、ロボット１０３に設定した作業する速度よりも速度を低下させることである。
【００３５】
また、数１より得た確率が閾値を上回る場合は、ロボット１０３の動作を継続する制御信号を制御部１０７に出力する。判断部１０６で用いる閾値は、５とする。
制御部１０７は、図示しないＣＰＵ、ＲＯＭ、ＲＡＭ等からなるコンピュータシステムを有する。図６、図７、図８、図１０及び図１２のフローチャートの処理は、ＲＯＭに記憶されたプログラムをＲＡＭに展開し、ＣＰＵが実行することで実現する。
【００３６】
もちろん、この閾値は、作業の内容が異なる場合は異なる。ここで、図１５を用いて、作業中の作業者２０３の動作の判断について具体例を用いて説明する。
図５（ａ）にサンプルにより、学習したモデル図１５（ｂ）の１５０３に対して、作業者２０３の動作の時系列の状態１５０１および１５０２が入力されたとする。１５０１は、学習時と近い動作を行った場合の作業者２０３の動作の時系列の状態であり、１５０２は、学習時と異なる動作を行った場合の作業者２０３の動作の時系列の状態である。
ここで、ロボット１０３についての計算方法は作業者と同様であるため、説明を省略する。
ここで説明のために、数１で示した状態遷移ｘは一種類のみとする。つまり、図１５の（ａ）のように、ｘはｓ１、ｓ１、ｓ１、ｓ２、ｓ２、ｓ３、ｓ３の順番で遷移する。
作業者２０３の動作の時系列の状態１５０１が入力された場合であるが、ｓ１、ｓ１、ｓ１、ｓ２、ｓ２、ｓ３、ｓ３の順番で遷移するので、数１の右辺P(x|M)は、数２のようになる。
【００３７】
【数２】
0006494331.tif 000003
【００３８】
続いて、数１の右辺P(y|x)は、各状態ｓ１、ｓ２、ｓ３の確率密度関数に作業者２０３の動作の時系列の状態１５０１の値を代入する。結果として数３のようになる。
【００３９】
【数３】
0006494331.tif 000004
【００４０】
従って、数１の左辺P(y|M)は数２、数３より数４のようになる。
【００４１】
【数４】
0006494331.tif 000005
【００４２】
ここで、設定した閾値は、５であり、数４で導出された値は、閾値以上である。よって、判断部１０６に入力された、作業者２０３の動作の時系列の状態１５０１の場合では、ロボット１０３の動作を継続する制御信号を制御部１０７に出力する。
次に、作業者２０３の動作の時系列の状態１５０２の場合であるが、数１の右辺P(x|M)は、状態遷移が同様であるため、状態１５０１と同様に数２のようになる。
続いて、数１の右辺P(y|x)は、各状態ｓ１、ｓ２、ｓ３の確率密度関数に、作業者２０３の動作の時系列の状態１５０２の値を代入し、数５のようになる。
【００４３】
【数５】
0006494331.tif 000006
【００４４】
従って、数１の左辺P(y|M)は数２、数５より数６のようになる。
【００４５】
【数６】
0006494331.tif 000007
【００４６】
ここで、設定した閾値は、５であり、数６で導出された値は、閾値より小さい。よって、判断部１０６に入力された、作業者の動作の時系列の状態１５０２の場合では、作業者２０３に危険が及ぶ可能性があるので、ロボット１０３の動作を停止または減速するための制御信号を制御部１０７に出力する。
制御部１０７は、判断部１０６から入力したロボット１０３の動作の情報に基づいて、ロボット１０３の動作を制御する。
【００４７】
次に、図７のフローチャートを用いて、本実施形態におけるロボット制御装置１０１の制御手順について説明する。
Ｓ７０１において、検出部１０４はセンサ１０２から入力した情報を元に作業者２０３の状態を判断部１０６に出力する。また、ロボット１０３の状態の情報をロボット１０３から得て、判断部１０６に出力する。
【００４８】
Ｓ７０２において、判断部１０６は、検出部１０４から作業者２０３の情報を入力する。また、ロボット１０３の状態の情報をロボット１０３から入力し、学習情報保持部１０５からモデルの情報を入力する。入力された情報から確率を算出し、閾値と比較し判断する。
【００４９】
算出した確率が閾値以上であれば、Ｓ７０３において、Ｓ７０４に遷移する。また、算出した確率画、閾値より小さい確率であるならば、Ｓ７０３においてＳ７０５に遷移する。
ここで、学習情報保持部１０５から入力されたモデルの情報が複数ある場合、例えばロボット１０３と作業者２０３でそれぞれモデルがある場合。その場合には、全てのモデルを評価する。全てのモデルの確率が閾値以上であると判断された場合に、ステップS７０３において、Ｓ７０４に遷移する。
また、一つのモデルでも閾値より小さい確率であるならば、Ｓ７０３において、Ｓ７０５に遷移する。
【００５０】
Ｓ７０４において、判断部１０６で算出した確率が閾値以上であることで、ロボット１０３および作業者２０３が正常な動作であると判断し、ロボット１０３の動作を継続するように制御部１０７でロボット１０３の動作制御を行う。
【００５１】
Ｓ７０５において、判断部１０６で算出した確率が閾値以下であることで、作業者２０３に危険が及ぶ可能性有りと判断し、ロボット１０３の動作を停止もしくは減速するように制御部１０７でロボット１０３の制御を行う。
Ｓ７０６において、制御部１０７は、現在の作業が完了か否かを判断し、現在の作業が完了していないならば、Ｓ７０１に戻り、完了していれば終了する。
【００５２】
以上述べた構成によれば、ロボットと作業者が共存する空間で作業する場合において、事前にロボットおよび作業者の作業の時系列の状態を学習した学習情報を用いる。現在作業している作業者とロボットの時系列の状態が、学習時の作業者とロボットの時系列の状態である確率が高ければ、ロボットは動作を継続するように制御する。また、学習時の作業者とロボットの時系列の状態である確率が低ければ、動作を停止もしくは減速するように制御する。このように、ロボットおよび作業者の作業の時系列の状態を学習した学習情報を用いてロボットを制御することで、ロボットと作業者が共存する空間で作業をする場合においても安全性を確保しつつ、生産性を向上させることができるという効果が得られる。
【００５３】
（第２の実施形態）
本実施形態におけるロボット制御装置は、第１の実施形態と同様に、ロボットと作業者が共存する空間で作業する場合において、事前にロボットおよび作業者の作業の時系列の状態を学習した学習情報を用いる。そして、現在作業している作業者とロボットの時系列の状態が、学習時の作業者とロボットの時系列の状態である確率が高ければ、ロボットは動作を継続するように制御する。また、学習時の作業者とロボットの時系列の状態である確率が低ければ、動作を停止もしくは減速するように制御する。
【００５４】
加えて、第２の実施形態では、ロボットの動作を停止もしくは減速するように制御した後に、作業者に作業の復帰を通知し、再度、作業者が作業を開始するように制御をする。このように制御することで、ロボットの稼働率を向上させ、ロボットと作業者が共存する空間で作業をする場合においても安全性を確保しつつ、生産性を向上させるようにしたものである。
【００５５】
第２の実施形態は、第１の実施形態で説明した、ロボット制御装置のブロック構成において、判断部１０６以外は同一である。よって、図１を用いて、第２の実施形態における、判断部について説明する。
【００５６】
判断部１０６は、ロボット１０３から出力されるロボット１０３の時系列の状態、検出部１０４から出力される作業者２０３の時系列の状態、学習情報保持部１０５から入力されるモデルに基づいてロボット１０３の動作を判断する。
判断部１０６は、ロボット１０３の動作を判断する際に、第１の実施形態で説明した数１より得た確率と事前に設定した閾値を比較し判断する。数１より得た確率が閾値を上回る場合は、ロボット１０３の動作を継続する制御信号を制御部１０７に出力する。
【００５７】
数１より得た確率が閾値を下回る確率の場合は、作業者２０３に危険が及ぶ可能性があるので、ロボット１０３の動作を停止するか、もしくは減速する制御信号を制御部１０７に出力する。加えて、第２の実施形態の判断部１０６は、ロボット１０３を停止もしくは減速した後に、作業の復帰を作業者２０３に通知する。その後、再度、ロボット１０３から出力されるロボット１０３の時系列の状態、検出部１０４から出力される作業者２０３の時系列の状態、学習情報保持部１０５から入力されるモデルに基づいてロボット１０３の動作を判断する。
【００５８】
次に、図８のフローチャートを用いて、本実施形態におけるロボット制御装置１０１の制御手順について説明する。
Ｓ８０１において、検出部１０４は、センサ１０２から入力した情報を元に作業者２０３の状態を検出して判断部１０６に出力する。また、ロボット１０３の状態の情報をロボット１０３から得て、判断部１０６に出力する。
【００５９】
Ｓ８０２において、判断部１０６は、検出部１０４から作業者の情報を入力する。また、ロボットの状態の情報をロボット１０３から入力し、学習情報保持部１０５からモデルの情報を入力する。入力された情報から確率を算出し、算出した確率と閾値とを比較して動作判断処理を実行する。
【００６０】
Ｓ８０３において、判断部１０６で算出した確率が閾値以上であるか否かを判断する。判断部１０６で算出した確率が閾値以上であれば、Ｓ８０４に遷移する。また、判断部１０６で算出した確率が閾値以下であれば、Ｓ８０６に遷移する。
Ｓ８０４において、判断部１０６で算出した確率が閾値以上であることにより、ロボット１０３および作業者２０３が正常な動作であると判断し、ロボット１０３の動作を継続するように制御部１０７でロボット１０３の動作制御を行う。
【００６１】
Ｓ８０５において、現在の作業が完了か否かを判断する。現在の作業が完了していないならば、Ｓ８０１に戻り、完了していれば終了する。
Ｓ８０６において、判断部１０６で算出した確率が閾値以下であるので、作業者２０３に危険が及ぶ可能性有りと判断し、ロボット１０３の動作を停止もしくは減速するように制御部１０７でロボットの動作制御を行う。
【００６２】
Ｓ８０７において、判断部１０６は、停止、減速時の状態を保持しておき、作業者に音声もしくは、ディスプレイの表示などで作業の復帰を通知する。そして、作業者に通知した後に、Ｓ８０１に遷移し、検出部１０４から出力された作業者の状態と、ロボット１０３の状態と、学習情報保持部１０５から出力される学習情報に基づいて、ロボットの動作を再度判断する。そして、動作判断処理の結果が正常動作であれば、作業者に再度作業を開始させる。
【００６３】
以上述べた構成によれば、ロボットと作業者が共存する空間で作業する場合において、事前にロボットおよび作業者の作業の時系列の状態を学習した学習情報を用いる。そして、現在作業している作業者とロボットの時系列の状態が、学習時の作業者とロボットの時系列の状態である確率が高ければ、ロボットは動作を継続するように制御する。
【００６４】
また、学習時の作業者とロボットの時系列の状態である確率が低ければ、動作を停止もしくは減速するように制御する。更に、動作を停止もしくは減速するように制御した後に、作業の復帰を通知し、再度、作業者が作業を開始する。このように制御をすることで、ロボットの稼働率を向上させることが可能となり、ロボットと作業者が共同で作業する場合においても、安全性を確保しつつ生産性を向上させる効果を得ることができる。
【００６５】
（第３の実施形態）
第３の実施形態におけるロボット制御装置は、第１の実施形態と同様に、ロボットと作業者が共存する空間で作業する場合において、事前にロボットおよび作業者の作業の時系列の状態を学習した学習情報を用いる。そして、現在作業している作業者とロボットの時系列の状態が、学習時の作業者とロボットの時系列の状態である確率が高ければ、ロボットは動作を継続するように制御する。また、学習時の作業者とロボットの時系列の状態である確率が低ければ、動作を停止もしくは減速するように制御する。
【００６６】
加えて、第３の実施形態では、現在作業している作業者とロボットの状態を用いて、作業中に学習情報を更新することで学習情報の精度を向上させる。このようにすることで、ロボットの稼働率を向上させ、ロボットと作業者が共存する空間で作業をする場合においても安全性を確保しつつ、生産性を向上させるようにしたものである。
【００６７】
第３の実施形態におけるロボット制御装置の構成について、図９を用いて説明する。第１の実施形態で説明した、図１のロボット制御装置１０１のブロック構成と比べて、第３の実施形態のロボット制御装置９０１は、学習情報更新部９０２が追加されている。学習情報更新部９０２以外の構成は第１の実施形態と同様である。
【００６８】
第３の実施形態のロボット制御装置に追加された学習情報更新部９０２について説明する。
学習情報更新部９０２は、ロボット１０３から出力されるロボット１０３の時系列の状態、検出部１０４から出力される作業者２０３の時系列の状態に基づいて、学習情報保持部１０５のモデルのパラメータを更新する。具体的には、パラメータの推定に用いる、サンプルの情報を追加し、再度パラメータを計算する。その結果、サンプル情報が増えることでパラメータの推定精度が向上する。
【００６９】
次に、図１０のフローチャートを用いて、図９に記載の本実施形態におけるロボット制御装置９０１の制御手順について説明する。
Ｓ１００１において、検出部１０４はセンサ１０２から入力した情報を元に作業者２０３の状態を検出し、判断部１０６に出力する。また、ロボット１０３の状態の情報をロボット１０３から得て、判断部１０６に出力する。
Ｓ１００２において、判断部１０６は、検出部１０４から作業者２０３の情報を入力する。また、ロボット１０３の状態の情報をロボット１０３から入力し、学習情報保持部１０５からモデルの情報を入力する。入力された情報から確率を算出し、閾値と比較し判断する。
【００７０】
Ｓ１００３において、判断部１０６で算出した確率が閾値以上であるか否かを判断する。判断部１０６で算出した確率が閾値以下であれば、Ｓ１００７に遷移する。判断部１０６で算出した確率が閾値以上であれば、Ｓ１００５に遷移する。加えて、Ｓ１００４において、学習情報更新部９０２は、別タスクで、検出部１０４から作業者２０３の状態の情報と、ロボット１０３の状態の情報を追加し、学習情報保持部１０５からモデルの情報を入力する。そして、パラメータを更新し、学習情報保持部１０５に出力する。
【００７１】
Ｓ１００５において、判断部１０６で算出した確率が閾値以上であることにより、ロボット１０３および作業者２０３が正常な動作であると判断し、ロボット１０３の動作を継続するように制御部１０７でロボットの制御を行う。
Ｓ１００６において、現在の作業が完了しているか否かを判断し、現在の作業が完了していないならば、Ｓ１００１に戻り、完了していれば終了する。
Ｓ１００７において、判断部１０６で算出した確率が閾値以下であるので、作業者に危険が及ぶ可能性があると判断し、ロボット１０３の動作を停止、もしくは減速するように制御部１０７でロボット１０３の制御を行う。
【００７２】
以上述べた構成によれば、ロボットと作業者が共存する空間で作業する場合において、事前にロボットおよび作業者の作業の時系列の状態を学習した学習情報を用いる。現在作業している作業者とロボットの時系列の状態が、学習時の作業者とロボットの時系列の状態である確率が高ければ、ロボットは動作を継続するように制御する。また、学習時の作業者とロボットの時系列の状態である確率が低ければ、動作を停止もしくは減速するように制御する。
【００７３】
加えて、第３の実施形態においては、現在作業している作業者とロボットの状態を用いて、作業中に学習情報を更新することで学習情報の精度を向上させる。
このようにすることで、ロボットの稼働率を向上させ、ロボットと作業者が共存する空間で作業をする場合においても安全性を確保しつつ、生産性を向上させる効果を得ることができる。
【００７４】
（第４の実施形態）
第４の実施形態におけるロボット制御装置は、ロボットと作業者が共存する空間で作業する場合において、事前にロボットおよび作業者の作業の時系列の状態を学習した学習情報を用いる。現在作業している作業者とロボットの時系列の状態が、学習時の作業者とロボットの時系列の状態である確率が高ければ、ロボットは動作を継続するように制御する。
【００７５】
また、学習した作業者とロボットの時系列の状態である確率が低い場合に、作業者がロボットの動作を注視しているか否かを認識する。そして、作業者がロボットの動作を注視している場合において、ロボットは動作を継続するように制御する。学習した作業者とロボットの時系列の状態である確率が低い場合に、作業者がロボットの動作を注視していない場合は、ロボットの動作を停止もしくは減速するように制御する。
【００７６】
このようにすることで、作業者が学習していない動作を行った場合でも、ロボットを安全に可動させることができる。結果としてロボットの稼働率を向上させ、ロボットと作業者が共存する空間で作業をする場合においても安全性を確保しつつ、生産性を向上させるようにしたものである。
【００７７】
第４の実施形態は、第１の実施形態で説明した、ロボット制御装置のブロック構成において、検出部１０４と判断部１０６以外は同一である。よって、図１と図１１を用いて、第４の実施形態における、検出部１０４と判断部１０６について説明する。
【００７８】
検出部１０４は、センサ１０２から入力された情報から、作業者２０３の状態を検出する部位である。作業者２０３の状態の中でも作業者２０３の注視点を抽出する。注視点の検出方法は多く提案されており、特許文献３に記載の手法を用いてもよい。
図１１に、作業者２０３の視線１１０１の延長である、ハンド２０５に対して注視している図を示した。
【００７９】
第４の実施形態では、作業者２０３がハンド２０５を注視していれば、ロボット１０３の時系列の状態である確率が低い場合においてもロボット１０３の動作を継続するように制御する。なお、第４の実施形態では、注視を判定する対象は、ハンド２０５であるが、ロボット１０３の動作を表す部位であれば、ハンド２０５以外の部位でもよい。
【００８０】
判断部１０６は、ロボット１０３から出力されるロボット１０３の時系列の状態、検出部１０４から出力される作業者２０３の時系列の状態、学習情報保持部１０５から入力されるモデルに基づいてロボット１０３の動作を判断する。
判断部１０６は、第１の実施形態で説明した数１より得た確率と事前に設定した閾値を比較し判断する。数１より得た確率が閾値を上回る場合は、ロボット１０３の動作を継続する制御信号を制御部１０７に出力する。
【００８１】
また、数１より得た確率が閾値を下回る確率の場合は、作業者２０３に危険が及ぶ可能性があるので、ロボット１０３の動作を停止するか、もしくは減速する制御信号を制御部１０７に出力する。加えて、第４の実施形態の判断部１０６は、数１より得た確率が閾値を下回る確率の場合において、作業者２０３がロボット１０３の動作を注視している場合は、ロボット１０３の動作を継続する制御信号を制御部１０７に出力する。
【００８２】
次に、図１２のフローチャートを用いて、本実施形態におけるロボット制御装置１０１の制御手順について説明する。
Ｓ１２０１において、検出部１０４は、センサ１０２から入力した情報を元に作業者２０３の状態を判断部１０６に出力する。また、ロボット１０３の状態の情報をロボット１０３から得て、判断部１０６に出力する。
【００８３】
Ｓ１２０２において、判断部１０６は、検出部１０４から作業者２０３の情報を入力する。また、ロボットの状態の情報をロボット１０３から入力し、学習情報保持部１０５からモデルの情報を入力する。入力された情報から確率を算出し、閾値と比較し判断する。  Ｓ１２０３において、判断部１０６で算出した確率が閾値以上であるか否かを判断する。判断部１０６で算出した確率が閾値以上であれば、Ｓ１２０４に遷移する。また、判断部１０６で算出した確率が閾値以下であれば、Ｓ１２０５に遷移する。
【００８４】
Ｓ１２０４において、判断部１０６は、判断部１０６で算出した確率が閾値以上であることにより、ロボット１０３および作業者２０３が正常な動作であると判断し、ロボット１０３の動作を継続するように制御部１０７でロボットの制御を行う。
Ｓ１２０５において、判断部１０６で作業者２０３がロボット１０３を注視しているかどうか判断し、作業者２０３がロボット１０３を注視している場合は、Ｓ１２０４に遷移する。作業者２０３がロボット１０３を注視していない場合は、Ｓ１２０７に遷移する。
【００８５】
Ｓ１２０６において、制御部１０７は、現在の作業が完了しているか否かを判断する。現在の作業が完了していないならば、Ｓ１２０１に戻り、完了していれば終了する。
Ｓ１２０７において、作業者がロボットを注視していないので、作業者に危険が及ぶ可能性があると判断し、ロボットの動作を停止もしくは減速するように制御部１０７でロボットの制御を行う。
【００８６】
以上述べた構成によれば、ロボットと作業者が共存する空間で作業する場合において、事前にロボットおよび作業者の作業の時系列の状態を学習した学習情報を用いる。現在作業している作業者とロボットの時系列の状態が、学習時の作業者とロボットの時系列の状態である確率が高ければ、ロボットは動作を継続するように制御する。
【００８７】
また、学習した作業者とロボットの時系列の状態である確率が低い場合に、作業者がロボットの動作を注視しているか否かを認識する。そして、作業者がロボットの動作を注視している場合においては、ロボットは動作を継続するように制御する。
一方、学習した作業者とロボットの時系列の状態である確率が低い場合に、作業者がロボットの動作を注視していない場合は、動作を停止もしくは減速するように制御する。
【００８８】
このようにすることで、作業者が学習していない動作を行った場合でも、ロボットを安全に可動させることができる。その結果として、ロボットの稼働率を向上させることが可能となり、ロボットと作業者が共存する空間で作業をする場合においても安全性を確保しつつ、生産性を向上させる効果を得ることができる。
【００８９】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００９０】
１０１  ロボット制御装置
１０２  センサ
１０３  ロボット
１０４  検出部
１０５  学習情報保持部
１０６  判断部
１０７  制御部
【図１】
0006494331.tif 000008
【図２】
0006494331.tif 000009
【図３】
0006494331.tif 000010
【図４】
0006494331.tif 000011
【図５】
0006494331.tif 000012
【図６】
0006494331.tif 000013
【図７】
0006494331.tif 000014
【図８】
0006494331.tif 000015
【図９】
0006494331.tif 000016
【図１０】
0006494331.tif 000017
【図１１】
0006494331.tif 000018
【図１２】
0006494331.tif 000019
【図１３】
0006494331.tif 000020
【図１４】
0006494331.tif 000021
【図１５】
0006494331.tif 000022