(57)【要約】【課題】人の行動を認識し、人の行動を学習してロボットの行動を制御することができる制御装置、ロボットシステムおよび生産システムの提供を図る。【解決手段】人(８０)とロボット１が協働して作業を行うロボットの制御装置２であって、前記人と前記ロボットが協働して作業を行う期間中に、前記人の行動を分類する認識部５３、および、前記人の行動を学習する学習部５４を含む機械学習装置５と、前記認識部で分類した結果に基づいて、前記ロボットの行動を制御する行動制御部４３と、を備える。【選択図】図２
2018062016.tif 000002
【特許請求の範囲】
【請求項１】
人とロボットが協働して作業を行うロボットの制御装置であって、
前記人と前記ロボットが協働して作業を行う期間中に、前記人の行動を分類する認識部、および、前記人の行動を学習する学習部を含む機械学習装置と、
前記認識部で分類した結果に基づいて、前記ロボットの行動を制御する行動制御部と、を備える、
ことを特徴とする制御装置。
【請求項２】
人とロボットが協働して作業を行うロボットの制御装置であって、
前記人と前記ロボットが協働して作業を行う期間中に、前記人の顔を認識し、前記人に対応するニューラルネットワークの重みに基づいて、前記人の行動を分類する認識部、および、前記人の行動を学習する学習部を含む機械学習装置と、
前記認識部で分類した結果に基づいて、前記ロボットの行動を制御する行動制御部と、を備える、
ことを特徴とする制御装置。
【請求項３】
前記認識部は、画像入力に基づいたデータを状態変数として受け取って、人の行動を分類した出力を生成し、
前記学習部は、
前記認識部により生成された前記人の行動を分類した出力を受け取るとともに、入力された教師データに基づいて、誤差を計算する誤差計算部と、
前記誤差計算部の出力に基づいて、前記人の行動により前記ロボットの行動を制御するための誤差モデルを更新する誤差モデル更新部と、を備える、
ことを特徴とする請求項１または請求項２に記載の制御装置。
【請求項４】
人とロボットが協働して作業を行うロボットの制御装置であって、
上位コントローラと通信してニューラルネットワークからの重みを読込み、読み込んだ前記重みに基づいて、認識部により前記人の行動を分類するとともに、前記人の行動を学習する機械学習装置と、
前記認識部で分類した結果に基づいて、前記ロボットの行動を制御する行動制御部と、を備える、
ことを特徴とする制御装置。
【請求項５】
人とロボットが協働して作業を行うロボットの制御装置であって、
前記人と前記ロボットが協働して作業を行う期間中に、前記人が前記ロボットの作業領域または可動領域に入ったか否かを判定する認識部と、
前記認識部で判定した結果に基づいて、前記ロボットの行動を制限または停止し、前記人が協働して作業を行う前記ロボットの行動待機または行動再開を制御する行動制御部と、を備える、
ことを特徴とする制御装置。
【請求項６】
前記ロボットは、産業用ロボット、フィールドロボット、または、サービスロボットである、
ことを特徴とする請求項１乃至請求項５のいずれか１項に記載の制御装置。
【請求項７】
前記認識部は、ニューラルネットワークおよびテンプレートマッチングのうち少なくとも一方を使用する、
ことを特徴とする請求項１乃至請求項６のいずれか１項に記載の制御装置。
【請求項８】
撮影を行うカメラを複数備え、それぞれのカメラで撮影された画像に基づいて、前記認識部により前記人の行動を認識し、前記認識部の出力をＡＮＤ回路の入力とし、前記ＡＮＤ回路の出力を前記認識部の出力とする、
ことを特徴とする請求項１乃至請求項７のいずれか１項に記載の制御装置。
【請求項９】
前記制御装置は、
前記人と前記ロボットが協働して行動を行った後、上位コントローラに対して、作業情報および学習情報を送る、
ことを特徴とする請求項１乃至請求項８のいずれか１項に記載の制御装置。
【請求項１０】
前記作業情報は、商品名、工程、画像認識によって特定された人、前記ロボットの種類、および、前記人と前記ロボットの作業時間のうち少なくとも１つを含み、
前記作業時間は、作業開始から作業終了までの時間、作業毎における前記人と前記ロボットの動作時間と休止時間のうち少なくとも１つで構成される、
ことを特徴とする請求項９に記載の制御装置。
【請求項１１】
前記学習情報は、ニューラルネットワークの重みである、
ことを特徴とする請求項９または請求項１０に記載の制御装置。
【請求項１２】
請求項１乃至請求項１１のいずれか１項に記載の制御装置を複数備えるロボットシステムであって、
複数の前記制御装置は、通信回線を介して互いに接続され、
前記制御装置のそれぞれは、人の行動を個別に学習してその学習した情報を、前記通信回線を介して送信することにより、複数の前記制御装置で共有する、
ことを特徴とするロボットシステム。
【請求項１３】
複数のロボット、および、複数の前記ロボットを制御する複数の制御装置を含むセルと、
前記セルに含まれる前記制御装置に対して通信可能に接続されたセルコントローラと、
前記セルコントローラに通信可能に接続された管理コントローラと、を備える生産システムであって、
前記セルコントローラは、
前記セルに含まれる前記制御装置から送信された作業情報および学習情報を取得し、
前記管理コントローラに対して、前記作業情報および前記学習情報を送信し、
前記作業情報のうち、前記作業時間について比較用作業時間との差分を取り、その差分が任意に設定した値よりも大きい場合には、前記作業情報を送ってきた前記制御装置に対し、作業が遅いこと、標準作業方法、および、適切な作業時間として比較用作業時間のうち少なくとも１つを送信して表示させる、
ことを特徴とする生産システム。
【請求項１４】
複数のロボット、および、複数の前記ロボットを制御する複数の制御装置を含むセルと、
前記セルに含まれる前記制御装置に対して通信可能に接続されたセルコントローラと、
前記セルコントローラに通信可能に接続された管理コントローラと、を備える生産システムであって、
前記管理コントローラは、
前記セルコントローラから送られてきた作業情報と学習情報を取得して、前記作業情報および前記学習情報を記憶するとともに、特定の商品・特定の工程に対する重みを決定する、
ことを特徴とする生産システム。
【請求項１５】
決定された前記重みは、１人の重み、複数人の重みのうちから選んだ１人の重み、あるいは、複数人の重みをまとめた重みである、
ことを特徴とする請求項１４に記載の生産システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、人の行動を学習してロボットを制御する制御装置、ロボットシステムおよび生産システムに関する。
【背景技術】
【０００２】
従来、ロボットシステムでは、ロボットが動作している期間中、人の安全を確保するために、人がロボットの作業領域に入れないように安全対策が講じられていた。例えば、ロボットの周りには安全柵が設置され、ロボットの動作期間中には安全柵の内部に人が入ることが禁じられていた。
【０００３】
近年では、人とロボットが協働して作業を行うロボット(協働ロボット)が研究・開発され、実用化されている。このようなロボット(ロボットシステム)では、例えば、ロボットの周りに安全柵を設けない状態で、ロボットと人(作業者)が協働して作業を行うようになっている。
【０００４】
ところで、従来、人と共存、協調することが予定されるロボット(協働ロボット，協調作業ロボット)として、撮像手段と、可動部を逆入力可能に駆動する関節を持つ少なくとも１本の作業腕と、作業腕を支持する胴部と、作業場所の天井又は壁に基部を着脱可能に固定されて吊り下げられるとともに先端部で胴部と撮像手段とを支持する支持部材と、撮像手段が撮像した画像に基づき前記作業場所での作業対象物と当該作業ロボットとの相対位置を認識し、その相対位置に基づき前記作業対象物に対する作業を前記作業腕に行わせる作動制御手段と、前記作業が人と共存、協調して行う作業であることを認識すると、前記作業腕の関節を作動させるモータの出力を低下させる出力制御手段と、を具えてなる吊下げ型作業ロボットの技術が開示されている(例えば、特許文献１参照)。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−０５１０５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述した特許文献１に開示された技術で解決する課題は、協働ロボット(ロボット)を作業場所に投入する場合、作業場所の近傍の床上の障害物があってもロボットを配置することができ、そのロボットを配置した際に、作業者の安全を確保しようとするもので、高精度の位置決めも作業命令の大規模な改変も必要としないというものである。
【０００７】
すなわち、上述した従来技術は、ロボットを作業者(人)に近接して配置することは可能であっても、例えば、テーブルに置かれた組立対象品に対して、ロボットと人が交互にアクセスして組立対象品を組み上げるといった複数の工程を協働して行う作業に適用するのは困難である。すなわち、従来技術は、人の行動を認識した結果に基づいて、ロボットの行動を制御するものではなかった。
【０００８】
本発明は、上述した課題に鑑み、人の行動を認識して人の行動を学習する機械学習装置を利用し、人の行動を学習してロボットを制御する制御装置、ロボットシステムおよび生産システムの提供を目的とする。
【課題を解決するための手段】
【０００９】
本発明に係る第１実施形態の第１例によれば、人とロボットが協働して作業を行うロボットの制御装置であって、前記人と前記ロボットが協働して作業を行う期間中に、前記人の行動を分類する認識部、および、前記人の行動を学習する学習部を含む機械学習装置と、前記認識部で分類した結果に基づいて、前記ロボットの行動を制御する行動制御部と、を備える制御装置が提供される。
【００１０】
本発明に係る第１実施形態の第２例によれば、人とロボットが協働して作業を行うロボットの制御装置であって、前記人と前記ロボットが協働して作業を行う期間中に、前記人の顔を認識し、前記人に対応するニューラルネットワークの重みに基づいて、前記人の行動を分類する認識部、および、前記人の行動を学習する学習部を含む機械学習装置と、前記認識部で分類した結果に基づいて、前記ロボットの行動を制御する行動制御部と、を備える制御装置が提供される。
【００１１】
前記認識部は、画像入力に基づいたデータを状態変数として受け取って、人の行動を分類した出力を生成し、前記学習部は、前記認識部により生成された前記人の行動を分類した出力を受け取るとともに、入力された教師データに基づいて、誤差を計算する誤差計算部と、前記誤差計算部の出力に基づいて、前記人の行動により前記ロボットの行動を制御するための誤差モデルを更新する誤差モデル更新部と、を備えることができる。
【００１２】
本発明に係る第１実施形態の第３例によれば、人とロボットが協働して作業を行うロボットの制御装置であって、上位コントローラと通信してニューラルネットワークからの重みを読込み、読み込んだ前記重みに基づいて、認識部により前記人の行動を分類するとともに、前記人の行動を学習する機械学習装置と、前記認識部で分類した結果に基づいて、前記ロボットの行動を制御する行動制御部と、を備える制御装置が提供される。
【００１３】
本発明に係る第１実施形態の第４例によれば、人とロボットが協働して作業を行うロボットの制御装置であって、前記人と前記ロボットが協働して作業を行う期間中に、前記人が前記ロボットの作業領域または可動領域に入ったか否かを判定する認識部と、前記認識部で判定した結果に基づいて、前記ロボットの行動を制限または停止し、前記人が協働して作業を行う前記ロボットの行動待機または行動再開を制御する行動制御部と、を備える制御装置が提供される。
【００１４】
前記ロボットは、産業用ロボット、フィールドロボット、または、サービスロボットであってもよい。前記認識部は、ニューラルネットワークおよびテンプレートマッチングのうち少なくとも一方を使用することができる。前記制御装置は、撮影を行うカメラを複数備え、それぞれのカメラで撮影された画像に基づいて、前記認識部により前記人の行動を認識し、前記認識部の出力をＡＮＤ回路の入力とし、前記ＡＮＤ回路の出力を前記認識部の出力とすることができる。前記制御装置は、前記人と前記ロボットが協働して行動を行った後、上位コントローラに対して、作業情報および学習情報を送ることができる。
【００１５】
前記作業情報は、商品名、工程、画像認識によって特定された人、前記ロボットの種類、および、前記人と前記ロボットの作業時間のうち少なくとも１つを含み、前記作業時間は、作業開始から作業終了までの時間、作業毎における前記人と前記ロボットの動作時間と休止時間のうち少なくとも１つで構成されてもよい。前記学習情報は、ニューラルネットワークの重みであるのが好ましい。
【００１６】
本発明に係る第２実施形態によれば、上記第１実施形態の制御装置を複数備えるロボットシステムであって、複数の前記制御装置は、通信回線を介して互いに接続され、前記制御装置のそれぞれは、人の行動を個別に学習してその学習した情報を、前記通信回線を介して送信することにより、複数の前記制御装置で共有するロボットシステムが提供される。
【００１７】
本発明に係る第３実施形態の第１例によれば、複数のロボット、および、複数の前記ロボットを制御する複数の制御装置を含むセルと、前記セルに含まれる前記制御装置に対して通信可能に接続されたセルコントローラと、前記セルコントローラに通信可能に接続された管理コントローラと、を備える生産システムであって、前記セルコントローラは、前記セルに含まれる前記制御装置から送信された作業情報および学習情報を取得し、前記管理コントローラに対して、前記作業情報および前記学習情報を送信し、前記作業情報のうち、前記作業時間について比較用作業時間との差分を取り、その差分が任意に設定した値よりも大きい場合には、前記作業情報を送ってきた前記制御装置に対し、作業が遅いこと、標準作業方法、および、適切な作業時間として比較用作業時間のうち少なくとも１つを送信して表示させる生産システムが提供される。
【００１８】
本発明に係る第３実施形態の第２例によれば、複数のロボット、および、複数の前記ロボットを制御する複数の制御装置を含むセルと、前記セルに含まれる前記制御装置に対して通信可能に接続されたセルコントローラと、前記セルコントローラに通信可能に接続された管理コントローラと、を備える生産システムであって、前記管理コントローラは、前記セルコントローラから送られてきた作業情報と学習情報を取得して、前記作業情報および前記学習情報を記憶するとともに、特定の商品・特定の工程に対する重みを決定する生産システムが提供される。決定された前記重みは、１人の重み、複数人の重みのうちから選んだ１人の重み、あるいは、複数人の重みをまとめた重みであってもよい。
【発明の効果】
【００１９】
本発明に係る制御装置、ロボットシステムおよび生産システムによれば、人の行動を認識し、人の行動を学習してロボットの行動を制御することができるという効果を奏する。
【図面の簡単な説明】
【００２０】
【図１】図１は、本実施形態に係るロボットシステムの一例を適用した構成例を概略的に示す図である。
【図２】図２は、図１におけるロボットシステムの一例を示すブロック図である。
【図３】図３は、ニューロンのモデルを模式的に示す図である。
【図４】図４は、図３に示すニューロンを組み合わせて構成した演算層が三層のニューラルネットワークを模式的に示す図である。
【図５】図５は、図２に示すロボットシステムにおける認識部および学習部の一例を説明するための図である。
【図６】図６は、組立対象品の一例を説明するための図である。
【図７】図７は、側面から見たロボットを除き、天井から見た状態の一例を示す図である。
【図８】図８は、組立対象品のネジにユニットの穴を入れる場合の一例を説明するための図である。
【図９】図９は、図７と同様に、ユニットおよびケーブルが実装されていない組立対象品が所定の位置に置かれた様子を示す図である。
【図１０】図１０は、図９に示す組立対象品にユニットを実装しネジを締める場合の一例を説明するための図(その１)である。
【図１１】図１１は、図９に示す組立対象品にユニットを実装しネジを締める場合の一例を説明するための図(その２)である。
【図１２】図１２は、図９に示す組立対象品にユニットを実装しネジを締める場合の一例を説明するための図(その３)である。
【図１３】図１３は、図９に示す組立対象品にユニットを実装しネジを締める場合の一例を説明するための図(その４)である。
【図１４】図１４は、図９に示す組立対象品にユニットを実装しネジを締める場合の一例を説明するための図(その５)である。
【図１５】図１５は、図９に示す組立対象品にユニットを実装しネジを締める場合の一例を説明するための図(その６)である。
【図１６】図１６は、図７および図９に示す図において、ユニットが実装された組立対象品の状態を示す図である。
【図１７】図１７は、図１６に示す組立対象品に対する処理の一例を説明するための図(その１)である。
【図１８】図１８は、図１６に示す組立対象品に対する処理の一例を説明するための図(その２)である。
【図１９】図１９は、図１６に示す組立対象品に対する処理の一例を説明するための図(その３)である。
【図２０】図２０は、図１６に示す組立対象品に対する処理の一例を説明するための図(その４)である。
【図２１】図２１は、図１６に示す組立対象品に対する処理の一例を説明するための図(その５)である。
【図２２】図２２は、図１６に示す組立対象品に対する処理の一例を説明するための図(その６)である。
【図２３】図２３は、図１６に示す組立対象品に対する処理の一例を説明するための図(その７)である。
【図２４】図２４は、図１６に示す組立対象品に対する処理の一例を説明するための図(その８)である。
【図２５】図２５は、図１６に示す組立対象品に対する処理の一例を説明するための図(その９)である。
【図２６】図２６は、組立対象品が排出された状態の一例を説明するための図である。
【図２７】図２７は、組立対象品の筐体内に身体の一部が入っていないことを確認するための構成の一例を説明するための図である。
【図２８】図２８は、顔の認証を、ニューラルネットワークを使用して行う一例を説明するための図である。
【図２９】図２９は、ニューラルネットワークの出力層とその前の層(中間層(隠れ層)の最後の層)を示す図である。
【図３０】図３０は、図２９に示すニューラルネットワークにおいて、「失敗」を出力する場合を示す図である。
【図３１】図３１は、テンプレートマッチングについての一例を説明するための図である。
【図３２】図３２は、図２９の行動Ｂを、テンプレートマッチングをして認識する場合について説明するための図である。
【図３３】図３３は、図２９の行動Ｃを、テンプレートマッチングをして認識する場合について説明するための図である。
【図３４】図３４は、本実施形態に係る生産システムの一例を示すブロック図である。
【発明を実施するための形態】
【００２１】
以下、本発明に係る制御装置、ロボットシステムおよび生産システムの実施形態を、添付図面を参照して詳述する。なお、以下の図面において、理解を容易にするために、人やロボット等の縮尺は、適宜変更されている。ここで、ロボットシステムとは、人とロボットが協働して、予め定められた作業を行うシステムである。また、以下の記載では、一例として、人とロボットが協働して組立対象品にユニットとケーブルを組み上げる作業を説明するが、本発明の適用は、これに限定されないのはもちろんである。
【００２２】
図１は、本実施形態に係るロボットシステムの一例を適用した構成例を概略的に示す図であり、図２は、図１におけるロボットシステムの一例を示すブロック図である。まず、図１および図２を参照して、本実施形態に係るロボットシステムの一例を説明する。本実施形態のロボット(協働ロボット)１は、アーム４と複数の旋回・回転軸とを含む多関節ロボットである。なお、以下の記載では、一例として、多関節ロボットを使用したものを説明するが、本発明の適用は、多関節ロボットに限定されないのはいうまでもない。
【００２３】
ロボットシステム３は、ロボット１に取り付けられたエンドエフェクタとしてのハンド６を備える。把持用ハンド６−１は、ユニットやケーブルを把持および解放する機能を有する。また、例えば、後述する図１２のように、ドライバ用ハンド６−２に取り換えることにより、エンドエフェクタとしてのドライバ用ハンド６−２を備え、ドライバでネジ(本明細書では、ビスを含めてネジと称する)を締める機能を有することになる。さらに、図示されていないが、例えば、ハンドチェンジャにより、把持用ハンド６−１とドライバ用ハンド６−２を交換することができる。なお、ハンドチェンジャについては、周知の技術であるので詳細な説明は省略する。また、ハンドエンドエフェクタは、把持用ハンドやドライバ用ハンドに限られず、作業の内容に応じたエンドエフェクタを用いることができる。
【００２４】
図２に示されるように、ロボット１は、それぞれの旋回・回転軸を駆動するアーム駆動装置４４を含む。アーム駆動装置４４は、旋回・回転軸の内部に配置されているアーム駆動モータを含み、アーム駆動モータが駆動することにより、アーム４を旋回・回転して所望の角度にすることができる。なお、ロボット１は、産業用ロボットに限定されるものではなく、フィールドロボットやサービスロボットに対しても適用することが可能である。
【００２５】
ロボット１は、ハンド６−１を閉じたり開いたりする把持用ハンド駆動装置４５を備える。また、ハンドチェンジャにて、ドライバ用ハンドに取り換えた場合、ハンド６−２のドライバでネジを締めるドライバ用ハンド駆動装置４８を備える。把持用ハンド駆動装置４５は、ハンド６−１を駆動する把持用ハンド駆動シリンダと、把持用ハンド駆動シリンダに圧縮空気を供給するための空気ポンプおよび電磁弁を含む。
【００２６】
ドライバ用ハンド駆動装置４８は、ハンド６−２のドライバを駆動させるために、圧縮空気を供給するための空気ポンプおよび電磁弁を含む。なお、圧縮空気を使用せずに、電気的に開閉、またはドライバを電気的に回転させてもよい。また、ハンドを交換すると精度上問題となる場合は、複数台のロボットを使用し、あるいは、ハンドを工夫するなどの対応を行うことになる。ここでは、ハンドを交換しても精度上問題がないと仮定する。また、図が複雑となるため、ハンド駆動装置は、図１には図示しない。
【００２７】
組立対象品５０を組み立てるとき、例えば、力センサ４９による力の変化の検出を行う。力センサ４９は、どこに設けてもかまわないが、ここでは、理解を容易にするために手首部に設けるものする。なお、力センサ４９としては、ロボット１に作用する力を検出可能な任意の検出器を採用することができる。
【００２８】
ロボット１は、制御装置２(行動制御部４３)の行動指令に基づいて駆動する。制御装置２は、バスを介して互いに接続されたＣＰＵ(Central Processing Unit)、ＲＡＭ(Random Access Memory)、および、ＲＯＭ(Read Only Memory)等を有する演算処理装置を含む。制御装置２は、様々な情報を記憶する記憶部５９を含む。制御装置２は、アーム駆動装置４４および把持用ハンド駆動装置４５およびドライバ用ハンド駆動装置４８を制御する行動制御部４３を含む。行動制御部４３からの行動指令により、アーム駆動装置４４および把持用ハンド駆動装置４５およびドライバ用ハンド駆動装置４８が駆動する。ここで、本実施形態の制御装置２は、ロボット１の外側からロボット１に加えられる外力を推定する外力算出部４６を含む。
【００２９】
図２に示されるように、制御装置２は、入力部４１および表示部４２を含む。表示部４２は、ロボット１の運転に関する情報等を表示可能に形成されている。表示部４２としては、液晶表示装置を例示することができる。入力部４１は、人が制御装置２に所望の指令を入力可能に形成されている。入力部４１としては、キーボード等を例示することができる。なお、図１における組立対象品５０は、例えば、台(車輪は示されていないが、台車でもよいし、ベルトコンベアでもよい)に乗って、実装面が天井を向くように置いてある。また、人(作業者)８０は、作業中で無い直立状態の場合を示す。さらに、天井には、カメラ７が取り付けられており、角度を変えることができるとともに、拡大・縮小ができるようになっている。また、カメラ７は、組立対象品５０、人８０およびロボット１の映像を得ることができるものとする。カメラ８は、例えば、人８０の正面を撮影する(写す)位置に設置するのが好ましい。
【００３０】
図２を参照して、さらに、説明を続ける。本実施形態における制御装置２は、人８０の行動を学習し、人８０の行動に対してロボット１が適切な行動を行うように、人８０の動作を学習する機械学習装置５を備える。本実施形態の機械学習装置５は、画像入力５１(カメラ７またはカメラ８の画像)から人８０の行動を認識部５３で認識(分類)し、学習部５４で学習する。学習は、後述するニューラルネットワークにおける各々の重みを見つけ出す。学習部５４がニューラルネットワークの重みをアップデートした場合は、認識部５３は、学習部５４よりアップデートされた重みを得る。認識部５３がアップデートされた重みを得た後は、そのアップデートされた重みでニューラルネットワークの演算を行う。予め定められた人８０の行動と判断した場合、ロボット１は、それに対応した行動を行うように行動制御部４３により制御される。前処理部５２は、例えば、認識部５３が高速に動作できるように、画像に前処理(例えば、次元圧縮等)を施す。画像に対する前処理については、知られている様々な手法を適用することができ、その説明は省略する。
【００３１】
ここで、認識部５３と学習部５４は、例えば、電源ＯＮ時に、認識部５３により人８０の顔を認証し、記憶部５９に保存されている重みを使用し、または、上位コントローラから人８０に対応した重みを入手して使用する。なお、認識部５３による顔認証ではなく、人８０の情報が入っている記憶媒体、例えば、ＵＳＢ(Universal Serial Bus)メモリをＵＳＢポートに挿入することにより、人８０を判別してもよい。あるいは、キーボードからのＩＤやＩＤ＋パスワード、若しくは、ＩＤカード＋読み取り器等により人８０を判別してもよい。判別した結果、記憶部５９に保存されている重みを使用し、あるいは、上位コントローラから重みを入手して使用してもよい。なお、複数人の重みのうちから選んだ１人の重みまたは複数人の重みをまとめた重みを、上位コントローラから送って使用することもできる。また、学習部５４の重みがアップデートされた場合、記憶部５９に学習情報(ニューラルネットワークの各々の重み)を保存する。なお、少なくとも使用可能な１つ(一人)の重みは、前もって記憶されているものと仮定する。
【００３２】
また、図２に示されるように、複数の制御装置２の機械学習装置５は、通信媒体を介して相互にデータを共有または交換するように構成してもよい。例えば、それぞれが制御装置２で制御されるロボットシステム３を複数備えた機械工場において、すなわち、ロボットシステム３を複数備える生産システムにおいて、それぞれのロボットシステム３の機械学習装置５は、通信媒体、例えば、イーサネット（登録商標）やインターネット等の通信回線を介して相互にデータを共有または交換することができるようになっている。なお、機械学習装置５の学習部５４は、例えば、それぞれの制御装置２に設けずに、上位コントローラ上に設けることも可能である。このように、学習した情報を共有または交換することにより、学習の回数を増やすことができる。この結果、学習の精度を高めることができる。
【００３３】
制御装置２は、作業時間を測定する作業時間測定部４７を備える。本実施形態の作業時間測定部４７は、組立開始から終了までの時間、作業毎における人８０とロボット１の動作時間と休止(停止)時間を測定する。本実施形態の作業時間測定部４７は、行動制御部４３の指令に基づいて作業時間を測定している。なお、本明細書において、例えば、人８０といえば、ロボット１と協働して作業(処理)を行う人を示し、人とのみ記載している場合は、実際にロボット１と協働して処理(作業)を行う人だけでなく、例えば、ロボット１と直接協働作業を行わない人を含むものとする。
【００３４】
ここで、機械学習装置について説明する。機械学習装置は、装置に入力されるデータの集合から、その中にある有用な規則や知識表現、判断基準等を解析により抽出し、その判断結果を出力するとともに、知識の学習(機械学習)を行う機能を有する。学習の手法は様々であるが、大別すれば、例えば、「教師あり学習」、「教師なし学習」および「強化学習」に分けることができる。さらに、これらの手法を実現するうえで、特徴量そのものの抽出を学習する、「深層学習(ディープラーニング：Deep Learning)」と呼ばれる手法がある。
【００３５】
なお、図２に示す機械学習装置５は、「ニューラルネットワーク(教師あり)」を適用したものである。これらの機械学習(機械学習装置５)は、汎用の計算機若しくはプロセッサを用いることもできるが、例えば、ＧＰＧＰＵ(General-Purpose computing on Graphics Processing Units)や大規模ＰＣクラスター等を適用すると、より高速処理が可能になる。
【００３６】
まず、教師あり学習とは、ある入力と結果(ラベル)のデータの組を大量に機械学習装置に与えることで、それらのデータセットにある特徴を学習し、入力から結果を推定するモデル(誤差モデル)、すなわち、その関係性を帰納的に獲得するものである。例えば、後述のニューラルネットワーク等のアルゴリズムを用いて実現することが可能である。
【００３７】
また、教師なし学習とは、入力データのみを大量に機械学習装置に与えることで、入力データがどのような分布をしているか学習し、対応する教師出力データを与えなくても、入力データに対して圧縮・分類・整形等を行う装置で学習する手法である。例えば、それらのデータセットにある特徴を、似た者どうしにクラスタリングすること等ができる。この結果を使って、何らかの基準を設けてそれを最適化するような出力の割り当てを行うことにより、出力の予測を実現することできる。
【００３８】
なお、教師なし学習と教師あり学習との中間的な問題設定として、半教師あり学習と呼ばれるものもあり、これは、例えば、一部のみ入力と出力のデータの組が存在し、それ以外は入力のみのデータである場合が対応する。本実施形態においては、実際に、人８０とロボットシステム３を動かさなくても取得することができるデータ(画像データやシミュレーションのデータ等)を教師なし学習で利用することにより、学習を効率的に行うことが可能になる。
【００３９】
次に、強化学習について、説明する。まず、強化学習の問題設定として、次のように考える。
・環境の状態を観測し、行動を決定する。
・環境は、何らかの規則に従って変化し、さらに、自分の行動が、環境に変化を与えることもある。
・行動するたびに、報酬信号が帰ってくる。
・最大化したいのは、将来にわたっての(割引)報酬の合計である。
・行動が引き起こす結果を全く知らない、または、不完全にしか知らない状態から学習はスタートする。すなわち、実際に行動して初めて、その結果をデータとして得ることができる。つまり、試行錯誤しながら最適な行動を探索する必要がある。
・人間の動作を真似るように、事前学習(前述の教師あり学習や、逆強化学習といった手法)した状態を初期状態として、よいスタート地点から学習をスタートさせることもできる。
【００４０】
ここで、強化学習とは、判定や分類だけではなく、行動を学習することにより、環境に行動が与える相互作用を踏まえて適切な行動を学習、すなわち、将来的に得られる報酬を最大にするための学習する方法を学ぶものである。以下に、例として、Ｑ学習の場合で説明を続けるが、Ｑ学習に限定されるものではない。
【００４１】
Ｑ学習は、ある環境状態ｓの下で、行動ａを選択する価値Ｑ(ｓ，ａ)を学習する方法である。つまり、ある状態ｓのとき、価値Ｑ(ｓ，ａ)の最も高い行動ａを最適な行動として選択すればよい。しかし、最初は、状態ｓと行動ａとの組合せについて、価値Ｑ(ｓ，ａ)の正しい値は全く分かっていない。そこで、エージェント(行動主体)は、ある状態ｓの下で様々な行動ａを選択し、その時の行動ａに対して、報酬が与えられる。それにより、エージェントは、よりよい行動の選択、すなわち、正しい価値Ｑ(ｓ，ａ)を学習していく。
【００４２】
行動の結果、将来にわたって得られる報酬の合計は、Ｑ(ｓ，ａ)＝Ｅ［Σ(γt)ｒt］となる。ここで、Ｅ［Σ(γt)ｒt］は期待値を表している。価値Ｑ(ｓ，ａ)を 最大化したいが、最適な行動に従って状態変化したときにとるものであり、それは、分かっていないので、探索しながら学習することになる。このような価値Ｑ(ｓ，ａ)の更新式は、例えば、次の式(１)により表すことができる。
【数１】
2018062016.tif 000003
【００４３】
上記の式(１)において、ｓtは、時刻ｔにおける環境の状態を表し、ａtは、時刻ｔにおける行動を表す。行動ａtにより、状態はｓt+1に変化する。rt+1は、その状態の変化により得られる報酬を表している。また、ｍａｘの付いた項は、状態ｓt+1の下で、その時に分かっている最もＱ値の高い行動ａを選択した場合のＱ値にγを乗じたものになる。ここで、γは、０＜γ≦１(γ=1をとる場合は累積和の範囲を無限大までとしないで有限区間とする)のパラメータで、割引率と呼ばれる。また、αは、学習係数で、０＜α≦１の範囲とする。
【００４４】
上述した式(１)は、試行ａtの結果、帰ってきた報酬ｒt+1を元に、状態ｓtにおける行動ａtの評価値Ｑ(ｓt，ａt)を更新する方法を表している。すなわち、状態ｓにおける行動ａの評価値Ｑ(ｓt，ａt)よりも、報酬ｒt+1 ＋ 行動ａによる次の状態における最良の行動ｍａｘ ａの評価値Ｑ(ｓt+1，ｍａｘ ａt+1)の方が大きければ、Ｑ(ｓt，ａt)を大きくし、反対に小さければ、Ｑ(ｓt，ａt)を小さくすることを示している。つまり、ある状態におけるある行動の価値を、結果として即時帰ってくる報酬と、その行動による次の状態における最良の行動の価値に近付けるようにしている。
【００４５】
ここで、Ｑ(ｓ，ａ)の計算機上での表現方法は、すべての状態行動ペア(ｓ，ａ)に対して、その値をテーブルとして保持しておく方法と、Ｑ(ｓ，ａ)を近似するような関数を用意する方法がある。後者の方法では、前述の式(１)は、確率勾配降下法等の手法で近似関数のパラメータを調整していくことにより、実現することができる。なお、近似関数としては、ニューラルネットワークを用いることができる。
【００４６】
次に、ニューラルネットワークについて説明する。図３は、ニューロンのモデルを模式的に示す図であり、図４(a)は、図３に示すニューロンを組み合わせて構成した演算層が三層のニューラルネットワークを模式的に示す図である。すなわち、ニューラルネットワークは、例えば、図３に示すようなニューロンのモデルを模した演算装置およびメモリ等で構成される。
【００４７】
図３に示されるように、ニューロンは、複数の入力ｘ(図３では、一例として入力ｘ1〜ｘ3)に対する出力(結果)ｙを出力するものである。各入力ｘ(ｘ1，ｘ2，ｘ3)には、この入力ｘに対応する重みｗ(ｗ1，ｗ2，ｗ3)が乗算される。これにより、ニューロンは、次の式(２)により表現される結果ｙを出力する。なお、入力ｘ、結果ｙおよび重みｗは、すべてベクトルである。また、下記の式(２)において、θは、バイアスであり、ｆkは、活性化関数である。
【数２】
2018062016.tif 000004
【００４８】
図４(a)を参照して、図３に示すニューロンを組み合わせて構成した演算層が三層のニューラルネットワークを説明する。図４(a)に示されるように、ニューラルネットワークの左側から複数の入力ｘ(ここでは、一例として、入力ｘ1〜入力ｘ3)が入力され、右側から結果ｙ(ここでは、一例として、結果ｙ1〜入力ｙ3)が出力される。具体的に、入力ｘ1，ｘ2， ｘ3は、３つのニューロンＮ11〜Ｎ13の各々に対して、対応する重みが掛けられて入力される。これらの入力に掛けられる重みは、まとめてＷ１と標記されている。
【００４９】
ニューロンＮ11〜Ｎ13は、それぞれ、ｚ11〜ｚ13を出力する。図４(a)において、これらｚ11〜ｚ13は、まとめて特徴ベクトルＺ１と標記され、入力ベクトルの特徴量を抽出したベクトルとみなすことができる。この特徴ベクトルＺ１は、重みＷ１と重みＷ２との間の特徴ベクトルである。ｚ11〜ｚ13は、２つのニューロンＮ21およびＮ22の各々に対して、対応する重みが掛けられて入力される。これらの特徴ベクトルに掛けられる重みは、まとめてＷ２と標記されている。
【００５０】
ニューロンＮ21，Ｎ22は、それぞれｚ21，ｚ22を出力する。図４(a)において、これらｚ21，ｚ22は、まとめて特徴ベクトルＺ２と標記されている。この特徴ベクトルＺ２は、重みＷ２と重みＷ３との間の特徴ベクトルである。ｚ21，ｚ22は、３つのニューロンＮ31〜Ｎ33の各々に対して、対応する重みが掛けられて入力される。これらの特徴ベクトルに掛けられる重みは、まとめてＷ３と標記されている。
【００５１】
最後に、ニューロンＮ31〜Ｎ33は、それぞれ、結果ｙ１〜結果ｙ３を出力する。ニューラルネットワークの動作には、学習モードと価値予測モードとがある。例えば、学習モードにおいて、学習データセットを用いて重みＷを学習し、そのパラメータを用いて予測モードにおいて、ロボットの行動判断を行う。なお、便宜上、予測と書いたが、検出・分類・推論等多様なタスクが可能なのはいうまでもない。
【００５２】
ここで、予測モードで実際に動かして得られたデータを即時学習し、次の行動に反映させる(オンライン学習)ことも、予め収集しておいたデータ群を用いてまとめた学習を行い、以降はずっとそのパラメータで検知モードを行う(バッチ学習)こともできる。あるいは、その中間的な、ある程度データが溜まるたびに学習モードを挟むということも可能である。
【００５３】
また、重みＷ１〜Ｗ３は、誤差逆伝搬法(誤差逆転伝播法：バックプロパゲーション：Backpropagation)により学習可能なものである。なお、誤差の情報は、右側から入り左側に流れる。誤差逆伝搬法は、各ニューロンについて、入力ｘが入力されたときの出力ｙと真の出力ｙ(教師)との差分を小さくするように、それぞれの重みを調整(学習)する手法である。このようなニューラルネットワークは、演算層を二層とすることも、四層以上に、さらに層を増やすことも可能である(層を増やした場合、深層学習と称される)。また、入力の特徴抽出を段階的に行い、結果を回帰する演算装置を、教師データのみから自動的に獲得することも可能である。
【００５４】
なお、図４(a)と同じ演算層が三層のニューラルネットワークについて、入力層、中間層(隠れ層)、出力層と呼ぶ場合を図４(b)に示す。本実施例の機械学習装置５は、例えば、ニューラルネットワークを使用するために、図２に示すように、画像入力５１、前処理部５２、認識部５３、学習部５４を備えている。ただし、本発明に適用される機械学習方法は、ニューラルネットワークに限定されない。また、機械学習(機械学習装置５)は、例えば、ＧＰＧＰＵや大規模ＰＣクラスター等を適用することで実現可能なのは、前述した通りである。また、本実施形態においては、様々な機械学習方法のうち、上述したニューラルネットワークを採用した教師あり学習を行う。なお、本実施形態は、様々な手法が適用可能なのは、前述した通りである。
【００５５】
図５は、図２に示すロボットシステムにおける認識部および学習部の一例を説明するための図であり、本実施形態のロボットシステム３の制御装置２において、「教師あり学習」を適用した機械学習装置５の認識部５３、学習部５４を説明するためのものである。ここで、図５(a)は、認識部５３、学習部５４の入出力信号を示すブロック図であり、図５(b)は、「教師あり学習」を適用した認識部５３、学習部５４の一例を示すブロック図である。図５(a)に示されるように、機械学習装置５における認識部５３は、外部から環境の状態を観測するための状態変数(状態量、入力データ)が入力され、学習部５４には、状態変数(状態量、入力データ)が入力されるとともに教師データ(ラベル)(正解ラベル，正解データともいう)が入力される(学習データセットを与える時は「あるデータと教師データ(ラベル)」が入力される)。
【００５６】
図５(b)に示されるように、学習部５４は、誤差計算部５４１および誤差モデル更新部(学習モデル更新部)５４２を含む。誤差計算部５４１は、教師データ(ラベル)と認識部５３からの出力(出力層および中間層の出力)を受け取り、その教師データ(ラベル)と、認識部５３からの出力の誤差(差分)を計算(例えば、二乗誤差計算)する。この誤差(差分)に基づいて、誤差関数(目的関数)を計算する。そして、誤差が小さくなるように、誤差モデル更新部５４２により学習モデルが更新される(誤差関数(目的関数)を基にして、例えば、誤差逆伝播法／勾配降下法で重みＷが更新される)。
【００５７】
初期学習(学習データセットを使用した学習)として、状態変数(入力データ)は、例えば、それが何であるか明確である画像データであり、教師データ(ラベル)は、例えば、図２９を参照して、後に詳述する出力層のどの出力が有効になるかといったことを示すデータが対応する。具体的に、例えば、「ユニットＡのネジ締め作業」の画像入力に対して、教師データ(ラベル)は、出力Ｃが有効ということになる。
【００５８】
これらの学習データセットを使用して、例えば、画像入力に対する認識部５３の出力と教師データを入力として、誤差計算部５４１はその誤差を計算する。この誤差(差分)に基づいて、誤差関数(目的関数)を計算する。誤差が小さくなるように、誤差モデル更新部５４２により学習モデルが更新される(誤差関数(目的関数)を基にして、例えば、誤差逆伝播法/勾配降下法で重みＷが更新される)。重みＷが更新された場合は、認識部５３に変更された重みＷを渡す。尚、誤差モデル更新部５４２がコントローラなど他から重みを受け取ったときにも認識部５３へその重みを渡す。
【００５９】
なお、近年では、初期の重みＷとして「ランダムな値を入れる」という方法が使われているので、重みＷの初期値はランダムな値としてもよい。また、学習データセットは、例えば、制御装置２や機械学習装置５や学習部５４や認識部５３などに内蔵したフラッシュメモリ(Flash Memory)等の不揮発性メモリに保持したデータ、セルコントローラや管理コントローラに保持されたデータ、通信回線を介してオンラインで提供されたデータ、あるいは、ＵＳＢから入力されたデータ等を使用することができる。これらの記述が学習データセットの与え方や保存場所を特定するものではない。
【００６０】
実作業に使用する場合、認識部５３は、前処理部５２の画像データの出力を状態変数(入力データ)として入力し、ニューラルネットワークにおける入力から図２９や図３０の各出力までを計算し、各出力の値を出す。出力(例えば、出力Ｃ)の値が有効となった場合は、行動制御部へその出力(例えば、出力Ｃ)が有効となったことを伝えるとともに、その出力(出力層および中間層の出力、例えば、出力Ｃ)の値を誤差計算部５４１へ入力する。誤差計算部５４１は、入力された値の内、出力層の出力の値と教師データとの誤差を計算する。この誤差(差分)に基づいて、誤差関数(目的関数)を計算する。誤差計算部５４１は、誤差関数(目的関数)と認識部５３からの出力を誤差モデル更新部５４２へ入力し、誤差モデル更新部５４２は、誤差関数(目的関数)を基にして、例えば、誤差逆伝播法/勾配降下法で重みＷを更新する。
【００６１】
なお、図５(b)では、認識部５３から誤差計算部５４１へ出力層と中間層の出力が渡されるとしたが、誤差計算部５４１と誤差モデル更新部５４２にそれぞれ出力を渡してもよい。また、図５(b)では、状態変数(状態量、入力データ)が誤差モデル更新部５４２へ入力されるとしたが、認識部５３から渡してもよい。さらに、誤差計算部５４１に与えられる、認識部５３からの出力の値 は、後に詳述する図２９または図示３０の出力層のどの出力が有効になったか(例えば、出力Ｃ)とともに、図２９では失敗信号を含むものとする。(後述するように、正常に次の動作に移り、その動作が完了した場合に、「失敗」とならなかった場合は成功となる。)
【００６２】
図６は、組立対象品の一例を説明するための図であり、図６(a)は、組立対象品５０にＡ，Ｂのユニットが実装された状態を示し、図６(b)は、組立対象品５０に何も実装されていない状態を示し、そして、図６(c)は、組立対象品５０にユニットＡ、Ｂとケーブルが実装された状態を示す。
【００６３】
図７は、側面図側面から見たロボットを除き、天井から見た状態の一例を示す図であり、図７(a)は、ロボット１の側面図を示し、図６(b)は、ロボット１を上方から見た図を示し、そして、図７(c)は、組立対象品５０を人(作業者)８０とともに上方から見た図を示す。なお、組立対象品５０は、図７では、実装部分が天井を向くように置いてある。また、組立対象品５０の「○」の部分は、ネジやネジ穴を示す。図８は、組立対象品のネジにユニットの穴を入れる場合の一例を説明するための図であり、図８(a)〜図８(d)は、処理の時間的な流れを示す。
【００６４】
図７(c)に示されるように、組立対象品５０にネジとネジ穴があるのは、例えば、図８(a)のように、ユニット側のねじ穴部分に、ネジの頭よりも大きい穴と、ネジの径よりやや大きい穴がつながった状態の穴を開け、図８(b)のようにネジが浮いた状態のところに、図８(c)のようにユニットの穴を入れ、図８(d)のようにユニットを移動した場合、ネジ穴ではなく、ネジとなるためである。
【００６５】
図７において、組立対象品５０を挟んで上から見た人８０の頭と肩、および、ロボット１を示す。なお、実装されるＡ，Ｂのユニットやケーブルは、図示されていないロボット１のアーム４が届く範囲に置かれているものとする。上から見たロボット１の上(正立での紙面の上)にロボット１を側面から見た場合を示す。上から見たロボット１と側面から見たロボット１は同一のロボットである。なお、図示していないが、人８０の顔と行動が分かるところにカメラ８が設置してあるものとする。
【００６６】
図２では、床からポールを経由してカメラ８が設置されているが、ロボット１の行動上邪魔になり、あるいは、ロボット１が人８０の像を遮るような場合には、天井から吊り下げて人８０の顔と行動を撮影してもよい。また、壁が近くにある場合には、カメラを壁に設置することもできる。
【００６７】
ここで、顔の認証において、後述する図２８のように、ニューラルネットワークを使用して行ってもよいが、テンプレートマッチングを使用することもできる。テンプレートマッチングについて、簡単に述べる。テンプレートと呼ばれる抽出したい画像が、抽出用画像に存在しているかを調べるために、図３１に示すように、例えば、左上端から右上端に向かって少しずつ移動し、テンプレートと同じか、どれだけ似ているかを計算によって求める。右端まで移動すると、左上端から少し下に移動し、同様に計算を行う。この場合、右下端まで移動したら終了である。調べる方法(例えば、正規化相関を使用した方法や幾何学形状を使用した方法)、前処理、高速化などについては周知の事実などで省略する。
【００６８】
図２８は、顔の認証を、ニューラルネットワークを使用して行う一例を説明するための図であり、ニューラルネットワークの出力層とその前の層(中間層(隠れ層)の最後の層)を表したものであり、出力層の出力の値(確率)がある値以上でその出力が有効とする。例えば、出力Ｃの出力の値(確率)がある値以上で江田さんと判断する。なお、出力層の出力の値(確率)がある値以上でその出力が有効としたが、出力層の出力の値(確率)がある値以上で他の出力との差がある値以上の場合にその出力が有効としてもよい。また、ある出力を有効とする方法について最も簡単な方法を述べたが、これ以外の方法で行うことに制限を加えるものではない。以降において、出力層の出力の値(確率)がある値以上でその出力が有効としたが、考え方は、前述した通りである。なお、ニューラルネットワークとテンプレートマッチングを併用することも可能である。
【００６９】
以上において、本実施形態において、顔の認証を行うのは、ニューラルネットワークやテンプレートマッチングに限定されるものではなく、他の様々な手法を適用することもできる。すなわち、ニューラルネットワークおよびテンプレートマッチング以外に、顔の認証ができるものであれば、それを使用することができる。
【００７０】
図９は、図７と同様に、ユニットおよびケーブルが実装されていない組立対象品が所定の位置に置かれた様子を示す図である。なお、図９(a)〜図９(c)は、図７(a)〜図７(c)に対応する。図１０〜図１５は、図９に示す組立対象品にユニットを実装しネジを締める場合の一例を説明するための図である。
【００７１】
図９(a)〜図９(c)において、ユニットおよびケーブルが実装されていない組立対象品５０が図の位置に置かれると、例えば、天井のカメラ７によって、Ａ、Ｂのユニットが実装されるネジまたはネジ穴の位置が画像認識され、位置合わせが行われるとともに、時間計測がスタートし、組み立てを開始する。時間計測は、組立開始から終了までの時間、および、人８０とロボット１の作業毎における動作時間と休止時間である。このデータは、一例としては、後述するセルコントローラで処理するが、これに限定されず、制御装置２で処理することもでき、また、管理コントローラで処理してもよい。なお、ここでは、ネジまたはネジ穴としたが、マーカを複数個所つけることによって画像認識を行うこともできる。
【００７２】
図９(a)〜図９(c)は、側面図にてロボット１のユニット把持用ハンド６−１が、図示しないユニット置台からユニットＡをつかんで組立対象品５０にユニットＡを実装する準備を行っている状態を示す。ここで、天井からのカメラ７に撮影される人が組立対象品５０におけるユニットＡの実装近辺に身体の一部がない(存在しない)ことを画像認識で確認し、図１０のように組立対象品５０のユニットＡの実装位置にロボット１のアーム４を動かしてユニットＡを実装する。この時、人がユニットＡの実装近辺に身体の一部が入った場合やロボット１のアーム４等の移動軌跡上に身体の一部が入った場合など、ロボット１のアーム４等やユニットＡと干渉すると判断される場合は、ロボット１のアーム４等が人を傷つけないように、スピードを減速するかまたは停止する。どの範囲に入ったらスピードを減速するか、またどの範囲に入ったら停止するかは、任意で設定できるとする。
【００７３】
組立対象品５０におけるユニットＡの実装近辺に身体の一部が入ったことやロボット１のアーム４等の移動軌跡上に身体の一部が入ったことを画像認識する方法は、例えば、カメラ７およびカメラ８の画像から輪郭を抽出し、ユニット近傍や移動軌跡上にその輪郭があるかないかを判断する。また、輪郭を抽出するには、ソーベルフィルタ等を使用すればよいが、これらは、すでに知られた技術なので、ここでは、説明を省略する。なお、ユニットＡの実装近辺に身体の一部が入ったことやロボット１のアーム４等の移動軌跡上に身体の一部が入ったことを画像認識する方法は、これ以外の様々な方法で行うことができるのはいうまでもない。
【００７４】
図２７は、組立対象品の筐体内に身体の一部が入っていないことを確認するための構成の一例を説明するための図である。図２７に示されるように、組立対象品５０の筐体内に身体の一部が入っていないことを確認するために、組立対象品５０の外形(例えば、図２７に示す例では、四角形状)を画像認識してその輪郭の四角形状のどこも途切れていないことにより、身体の一部(人８０)が組立対象品の筐体内に入っていないことを確認することができる。この場合、四角形状の辺を際立たせるために、組立対象品５０の背後(底)から軽いライトを照射するのが好ましい。
【００７５】
Ａのユニットが、ロボット１によって組立対象品５０のＡの実装位置に実装されると、ロボット１のアーム４は、例えば、元の位置に戻り、図示しないユニット置台からユニットＢをつかんで組立対象品５０にユニットＢを実装する準備を行う。天井からのカメラ７に撮影される人が組立対象品５０におけるユニットＢの実装近辺に身体の一部がないことを画像認識で確認し、図１１のように組立対象品５０のユニットＢの実装位置に、ユニットＢを実装する。この時、人がユニットＢの実装近辺に身体の一部が入った場合やロボット１のアーム４等の移動軌跡上に入った場合など安全上の問題が発生した場合は、ロボット１のアーム４等が人を傷つけないように、スピードを減速するかまたは停止する。
【００７６】
ユニットＢがロボット１によって組立対象品５０のユニットＢの実装位置に実装されると、次の作業が、例えば、人８０と協働してのネジ締めの場合、ロボット１は図示しないハンドチェンジャにより、図１２のように、ドライバ９Ｒがついたドライバ用ハンド６−２を手首に実装する。
【００７７】
人(腕)８０とドライバ９Ｍが、図１３のようにユニットＡのネジを締める位置に移動すると、ロボット１のアーム４はユニットＡのネジを締める位置に移動し、ドライバ用ハンド６−２を使ってネジ締めを開始する。ユニットＡのネジ締めが終了したら、人(腕)８０とドライバ９ＭがユニットＡからユニットＢの左下に移動するので、ロボット１のアーム４もユニットＡからユニットＢの右上へ移動する。移動後、人８０が図１４のユニットＢの左下のネジを締め、ロボット１がユニットＢの右上のネジを締めるとする。
【００７８】
さらに、人(腕)８０とドライバ９ＭがユニットＢの左下からユニットＢの右下に移動するので、ロボット１のアーム４もユニットＢの右上から左上へ移動する。移動後、人８０が図１５のユニットＢの右下のネジを締め、ロボット１がユニットＢの左上のネジを締めるとする。
【００７９】
次に、図１６〜図２５を参照して、ユニットＡおよびユニットＢに必要なケーブルを布線する(ケーブルをユニットに配線し、あるいは、ルートにしたがってタイラップバンド等で固定することを、ここでは布線と称する)処理を説明する。図１６は、図７および図９に示す図において、ユニットが実装され、ネジが締められた組立対象品の状態を示す図である。なお、図１６(a)〜図１６(c)は、図７(a)〜図７(c)あるいは図９(a)〜図９(c)に対応する。
【００８０】
まず、ユニットＡ用ケーブルを布線するとする。図１６(a)において、ロボット１は、図示しないハンドチェンジャにより、ドライバ用ハンド６−２をケーブル把持用ハンド６−１に取り換えて、ロボット１のケーブル把持用ハンド６−１が図示しないケーブル置台からユニットＡ用ケーブルをつかんで保持する。移動については、例えば、天井からのカメラ７に撮影される人がロボット１のアーム４等の移動軌跡上にない(存在しない)ことを画像認識により確認し、図１７に示されるように、組立対象品５０における適切な位置に移動するように、行動制御部４３はロボット１のアーム４を制御する。この時、人の身体の一部がロボット１のアーム４等の移動軌跡上に入った場合など安全上の問題が発生した場合は、ロボット１のアーム４等が人を傷つけないように、スピードを減速するかまたは停止する。どの範囲に入ったらスピードを減速するか、またどの範囲に入ったら停止するかは、任意で設定することができるものとする。
【００８１】
ロボット１のケーブル把持用ハンド６−１が適切な位置で停止したら、人８０はユニットＡ用ケーブルを受け取るために、例えば、図１８のように、ユニットＡ用ケーブルを持つと、ロボット１の力センサ４９の値が変化する(値が小さくなる)ため、制御装置２の行動制御部４３は人８０がユニットＡ用ケーブルを受け取ったと判断し、人からロボット１のアーム４が遠ざかるようにして移動するように制御する。次のロボット１の行動として、図示していないケーブル置台からユニットＢ用ケーブルをつかんで保持する。
【００８２】
図１９は、人８０がユニットＡ用ケーブルを布線している状態を示す。ロボット１のアームの移動時間を短縮するために、前もってユニットＢ用ケーブルを移動してもよいが、人８０が作業中の場合などで人と干渉するまたは作業の邪魔になると判断される場合は、図２０の「ロボットアーム近傍待機位置例」のように、ケーブルを把持したロボット１のアームの最終の位置から少し離れて待機(行動待機)するのが好ましい。なお、どこで待機するかは、任意である。人と干渉しない(人８０とロボット１のアーム４等がぶつからない)、邪魔しないと判断した場合は、ロボット１は、待機せずに移動速度を減速してロボット１のアーム４を最終の位置に移動してもよい。
【００８３】
図２１は、人８０が作業(この場合はユニットＡ用ケーブルの布線)を終了し、待機する例を示す。人８０が待機すると、ロボット１のアーム４は、移動を再開(行動再開)する。図２２は、移動を再開し、ユニットＢ用ケーブルを適切な位置へ移動させた例を示す。ロボット１のケーブル把持用ハンド６−１が適切な位置で停止したら、人８０は、ユニットＢ用ケーブルを受け取るために、例えば、図２３のように、ユニットＢ用ケーブルを持つ。これにより、ロボット１の力センサ４９の値が変化する(値が小さくなる)ため、制御装置２の行動制御部４３は、人８０がユニットＢ用ケーブルを受け取ったと判断し、人からロボット１のアーム４が遠ざかるようにして移動するように制御する。
【００８４】
図２４は、人８０がユニットＢ用ケーブルを布線している状態を示し、図２５となって、作業が終了(組立対象品５０が完成)する。図２６は、組立対象品５０が排出された状態の一例を説明するための図である。
【００８５】
次に、人８０の行動とロボットの行動の詳細について説明する。図２９は、ニューラルネットワークの出力層とその前の層(中間層(隠れ層)の最後の層)を表したものである。出力層の出力は、出力Ａとして「待機状態１」から出力Ｎの「待機状態４」まであるとする。また、構成に応じて図３０のように、例えば、出力Ｏに後述する「失敗」を出力する。人８０(腕)とドライバ９ＭがユニットＡのネジを締める位置に移動したかどうかは、図２９の出力層の出力Ｂの値(確率)がある値以上であるかどうかで判断されるとする。(出力層の出力Ｂの値(確率)がある値以上かどうかで判断できるとする)。出力Ｂの値(確率)がある値以上であった場合、人８０(腕)とドライバ９Ｍが「ユニットＡのネジを締める位置に移動」と認識部５３が認識(判定，判断)する。行動制御部４３は、ロボット１のアーム４をユニットＡのネジを締める位置に移動するように制御する。
【００８６】
上述した例では、人８０(腕)とドライバ９Ｍが「ユニットＡのネジを締める位置に移動」後に、ロボット１のアーム４をユニットＡのネジを締める位置に移動するように記載しているが、これは人８０の行動によりロボット１の行動が決まることを容易に理解するためのものであって、実際には図２９の出力をもっと分けて、人(腕)８０とドライバ９ＭがユニットＡのネジを締める位置に移動し始めたらロボット１のアーム４もユニットＡのネジを締める位置に移動するように制御する。
【００８７】
この移動の動作に関しては、例えば、テンプレートマッチングを使用して物体移動の検出ができる。後述する図３２、図３３を使って説明する方法を適用してもよいが、例えば、カメラから必ず見えるところに印をつけて、テンプレートマッチングで印の動きを追うことにより物体移動の検出を行ってもよい。このように、図２９に基づいて記載しているのは、ほんの一部であり、本発明における人の行動によりロボット１を制御する考え方は、そのような記載されたものに限定されるものではない。
【００８８】
ここで、図２９の出力Ｃの値(確率)がある値以上であった場合、人(腕)８０とドライバ９Ｍによる「ユニットＡのネジ締め作業」と認識部５３が判断(判定)する。行動制御部４３は、ロボット１のドライバ用ハンド６−２のドライバ９Ｒを使用してロボット１がユニットＡのネジ締めを行うように制御する(図１３参照)。
【００８９】
また、図２９の出力Ｄの値(確率)がある値以上であった場合、人(腕)８０とドライバ９Ｍが「ユニットＢの左下のネジを締める位置に移動」と認識部５３が判断する。行動制御部４３は、ロボット１のドライバ用ハンド６−２のドライバ９Ｒを使用してユニットＢのネジを締めることができるよう、右上の位置に移動するように制御する。さらに、図２９の出力Ｅの値(確率)がある値以上であった場合、人８０(腕)とドライバ９Ｍによる「ユニットＢの左下のネジ締め作業」と認識部５３が判断する。行動制御部４３は、ロボット１のドライバ用ハンド６−２のドライバ９Ｒを使用してロボット１がユニットＢの右上のネジ締めを行うように制御する(図１４参照)。
【００９０】
次に、図２９の出力Ｆの値(確率)がある値以上であった場合、人８０(腕)とドライバ９Ｍが「ユニットＢの右下のネジを締める位置に移動」と認識部５３が判断する。行動制御部４３は、ロボット１のドライバ用ハンド６−２のドライバ９ＲでユニットＢのネジを締めることができるよう、左上の位置に移動するように制御する。また、図２９の出力Ｇの値(確率)がある値以上であった場合、人８０(腕)とドライバによる「ユニットＢの右下のネジ締め作業」と認識部５３が判断する。行動制御部４３は、ロボット１のドライバ用ハンド６−２のドライバ９Ｒを使用してロボット１がユニットＢの左上のネジ締めを行うように制御する(図１５参照)。
【００９１】
さらに、図２９の出力Ｈの値(確率)がある値以上であった場合、人８０が「待機状態２」と認識部５３が判断する。行動制御部４３は、ロボット１がユニットＡ用ケーブルを把持・移動する(図１６および図１７参照)。また、図２９の出力Ｉの値(確率)がある値以上であった場合、人８０が「ユニットＡ用ケーブル受け取り」と認識部５３が判断する。ロボット１の力センサ４９が変化すると、制御装置２の行動制御部４３は、人８０がユニットＡ用ケーブルを受け取ったと判断し、人からロボット１のアーム４が遠ざかるようにして移動するように制御するのはすでに記述した通りである(図１８参照)。
【００９２】
そして、ロボット１は、ユニットＢ用ケーブルを把持・移動するが、図２９の出力Ｊの(確率)がある値以上であった場合、「ユニットＡの布線作業」と認識部５３が判断する。行動制御部４３は、ロボット１を近傍待機させる(図１９および図２０参照)。また、図２９の出力Ｋの値(確率)がある値以上であった場合、人８０が「待機状態３」と認識部５３が判断する。行動制御部４３は、ロボット１の移動を再開させる(図２１および図２２参照)。
【００９３】
さらに、図２９の出力Ｌの値(確率)がある値以上であった場合、人８０が「ユニットＢ用ケーブル受け取り」と認識部５３が判断する。ロボット１の力センサ４９が変化すると、制御装置２の行動制御部４３は、人８０がユニットＢ用ケーブルを受け取ったと判断し、人からロボット１のアーム４が遠ざかるようにして移動するように制御するのはすでに記述した通りである(図２３参照)。また、図２９の出力Ｍの(確率)がある値以上であった場合、「ユニットＢの布線作業」と認識部５３が判断する。行動制御部４３は、ロボット１が停止(待機)を継続するよう制御装置する(図２４参照)。
【００９４】
そして、図２９の出力Ｎの値(確率)がある値以上であった場合、人８０が「待機状態４」と認識部５３が判断し、制御装置２は図示しない排出装置を起動して組立対象品５０を排出するとともに、図示しないローダ装置を起動して次に組み立てる組立対象品５０を図１の位置に設置する。
【００９５】
以上、作業手順の詳細を述べたが、手順を飛ばした場合は、ロボット１を停止(または待機状態)にするとともに、例えば、パトライト（登録商標）等を使用してアラーム表示を行い、あるいは、画面表示として飛ばされた作業を表示する。なお、作業が終了した時点で、作業情報と学習情報のデータを後述するセルコントローラに送る。また、図２９の出力に対応するための入力画像は、この場合、天井に吊り下げられたカメラ７が好ましいと考えられる。組立対象品５０のユニットとケーブルの状態が撮影するため、および、人(腕)８０とドライバ９Ｍの位置が特定し易いからである。
【００９６】
なお、機械学習装置をもう１つ準備し、例えば、カメラ８からの画像を入力とした認識部の出力と、カメラ７からの画像を入力とした認識部のＡＮＤをとれば、精度をさらに向上させることができる。また、以上の説明では、カメラは２台としたが、３台以上備えてもよい。さらに、テンプレートマッチングと併用することもできる。
【００９７】
ここまでは、すべて有効作業に対応するニューラルネットワークの出力が有効になる(成功:正しい動作に移る)場合を説明したが、対応する出力が有効とならない(失敗：次の動作に移らない)場合や、誤って動き出す(失敗：次の動作への待ちなのに次の動作へ移る)場合の対応を説明する。失敗した場合は、例えば、手や腕を特定の形に変えて失敗であることを認識させたり、例えば、フットスイッチを用意してフットスイッチを足で押して失敗信号を出力したりすることで失敗したことを知らせることができる。次の動作への待機中の場合は、次の動作へ進み、待機中であるはずなのに次の動作に移った場合は、動作前の元の状態に戻る。
【００９８】
図３０は、図２９に示すニューラルネットワークにおいて、「失敗」を出力する場合を示す図である。なお、手や腕の特定の形と、フットスイッチとの併用の場合は、図３０に示す「出力０」とフットスイッチからの失敗信号のオア(論理積)をとればよい。また、フットスイッチの失敗信号のみの場合は、フットスイッチからの失敗信号が図３０の「出力０」相当となる。さらに、失敗したことは、学習部５４へも知らせる。ここでは、失敗を知らせる方法を２つ例示したが、これ以外に様々な手法を適用することができるのはいうまでもない。
【００９９】
次に、テンプレートマッチングを使用して人の行動を判断することについて説明する。ここで、図２９(図３０)の出力を、行動と読み替えて使用する。図３２は、図２９の行動Ｂを、テンプレートマッチングをして認識する場合について説明するための図である。例えば、ロボット１がユニットＡ、ユニットＢを組立対象品５０に実装し終えると、次の作業は「ユニットＡのネジを締める位置に移動」なので、人８０がユニットＡのネジを締める点を中心に、任意の範囲を抽出画像とし、テンプレートの画像が存在しているか調べる。図３２のようにユニットＡのネジを締める位置に移動するドライバＭが画像に含まれる(撮影される)とテンプレートの画像と同じか似ていると計算の数値(通常同じ(一致)ならば数値が０、似ているならば数値が小)となるので、行動Ｂと判断することができる。
【０１００】
また、図３３は、図２９の行動Ｃを、テンプレートマッチングをして認識する場合について説明するための図である。例えば、次の作業は「ユニットＡのネジ締め作業」なので、人８０がユニットＡのネジを締める点に移動したことが分かるように、ネジ位置の狭い範囲を抽出画像とし、テンプレートの画像が存在しているか調べる。図３３のようにユニットＡのネジを締める位置にドライバＭが画像に含まれると、上記に述べたように計算の数値が０か、小さな数値になるので、この時点を「ユニットＡのネジ締め作業」開始と判断するか、ネジ位置にドライバがきてから実際にネジを締め始めるまではほんの少しの時間があるので任意の時間待って「ユニットＡのネジ締め作業」開始と判断すればよい。
【０１０１】
さらに、ネジ締め作業開始を明確にしたければ、カメラ８の画像の人８０のドライバ９Ｍが下に移動し始めたところでネジ締め作業開始と判断すればよい。基本的な考え方について行動Ｂと行動Ｃを例に説明したが、他の行動の判断も同様である。
【０１０２】
次に、ロボットシステムを１つまたは複数含んだ生産システムについて説明する。図３４は、本実施形態に係る生産システムの一例を示すブロック図である。図３４に示されるように、生産システム１０は、少なくとも１つ、好ましくは複数(図３４に示す例では、ｎ個)のロボット１ａ〜１ｎ、ならびに、ロボット１ａ〜１ｎを制御する少なくとも１つ(通常は、ロボットと同数：ｎ個)の制御装置２ａ〜２ｎを含むセル１６と、制御装置２ａ〜２ｎの各々と通信可能に構成されたセルコントローラ１８と、セルコントローラ１８と通信可能に構成された上位の管理コントローラ２０とを備えている。制御装置２ａ〜２ｎは、それぞれロボット１ａ〜１ｎの行動制御を行うとともに、作業に関する情報(作業情報)と、機械学習装置５の学習部５４で学習したニューラルネットワークの各々の重みを学習情報としてセルコントローラ１８に送信する。
【０１０３】
ここで、作業情報とは、商品名、工程、画像認識等によって特定された人８０、ロボット１の種類、人８０とロボット１の作業時間等で構成される。人８０とロボット１の作業時間はさらに組立開始から終了までの時間と作業毎における人８０とロボット１の動作時間と休止(停止)時間で構成される。なお、セル１６は、予め定められた作業を実施するための複数のロボットの集合である。また、ロボット１ａ〜１ｎは、多関節ロボットに限定されない。各ロボットは互いに同一のものでも異なるものでもよい。また、セル１６は、製品を製造する工場に設置可能であるのに対して、管理コントローラ２０は、工場とは異なる建屋等に設置可能である。セルコントローラ１８は高速な処理が必要な場合は工場に設置し、高速な処理が必要でない場合は工場とは異なる建屋等に設置可能である。
【０１０４】
また、セルコントローラ１８と制御装置２ａ〜２ｎとは、例えば、イントラネット等のネットワーク(第一通信部２２)を介して接続することができる。さらに、管理コントローラ２０は、例えば、インターネット等のネットワーク(第二通信部２４)を介して、セルコントローラ１８と通信可能に接続することができる。ただし、これは単なる例であり、第一通信部２２は、セルコントローラ１８と制御装置２ａ〜２ｎとを通信可能に接続するものであればどのようなものでもよく、また、第二通信部２４は、セルコントローラ１８と管理コントローラ２０とを通信可能に接続するものであればどのようなものでもよい。セルコントローラ１８は、セル１６からの情報を処理するように構成されており、具体的には、制御装置２ａ〜２ｎに情報を送出し、制御装置２ａ〜２ｎからのそれぞれ、作業情報と、学習情報を受信する。
【０１０５】
図３４に示されるように、セルコントローラ１８は、第一通信部２２を介してセル１６から前述の情報を受信するとともに、第二通信部２４を介して管理コントローラ２０が持つ情報を取得する。セルコントローラ１８は、入力部１４および表示部１５を含む。表示部１５は、セルコントローラ１８に関する情報を表示可能に形成されている。表示部１５としては、液晶表示装置を例示することができる。入力部１４は、人がセルコントローラ１８に所望の指令を入力可能に形成されている。入力部１４としては、キーボード等を例示することができる。なお、管理コントローラ２０にも図示していないが、入力部および表示部を含むのが好ましい。
【０１０６】
セルコントローラ１８の作業情報・学習情報取得部１１は、セル１６の各々の制御装置から作業情報と学習情報を取得する。作業情報・学習情報取得部１１は、作業情報と学習情報を対応づけて記憶部に保存するとともに、作業情報の内、作業時間のデータを時間処理部へ送る。時間処理部１２は、取得した作業時間のうち、人８０の作業毎時間と、同じ商品で同じ工程における人の適切な作業毎時間を記憶部１３よりリードし、比較を行う。比較は「人８０の作業毎時間−(マイナス)人の適切な作業毎時間」で行い、もし、差分が任意に設定した時間よりも大きい場合(人の適切な作業毎時間が明らかに短い場合)は、遅い作業(時間がかかっている作業)を、第一通信部２２を介して対応する制御装置２へ送信する(図２参照)。遅い作業の情報は、制御装置２の通信部５５を介して表示制御部５６や図示しない音声制御部に入力され、人８０のそばに設置した表示器に作業詳細、標準作業時間(適切と考えられる作業時間)、実作業時間(作業における実際にかかった時間)等を表示し、あるいは、ロボット等に設置したスピーカによる音声ガイダンスにより作業詳細や時間を教える。
【０１０７】
なお、人の適切な作業毎時間の情報は前もって準備するか、送られてきた同じ商品・同じ工程における、作業時間の各々について時間を、例えば、平均するなどして使用すればよい。また、ロボット１の行動については、機械学習方法のうち、前記したＱ学習を採用した強化学習を行うことで作業毎のロボット１の行動を最適化することもできる。なお、機械学習を使用してロボット１の行動を最適化する技術文献として、近年、様々な提案がなされており、その詳細は省略する。
【０１０８】
セルコントローラ１８は、第二通信部２４を介して作業情報と学習情報を管理コントローラ２０に送信する。すべての作業情報と学習情報を送信してもよいし、任意のインターバルにて、インターバル間における作業時間が最も長いものと短いものについて作業情報と学習情報を送信してもよいし、作業時間の平均を併せて送信してもよい。この他、作業情報と学習情報のどの内容をどのように処理して送信するかは任意である。
【０１０９】
管理コントローラ２０は、セルコントローラ１８と第二通信部２４を介して接続されている。管理コントローラ２０は、第二通信部２４を介してセルコントローラ１８から作業情報と学習情報を受信する。受信した作業情報と学習情報を対応づけて作業情報・学習情報保存部２３へ保存する。
【０１１０】
管理コントローラの学習情報選択部２１を使用した重みの決め方について第１の実施形態について説明する。商品αが量産されているとする。不特定の人物が、商品αの作業経験が無い、例えば、工程３につく場合、不特定の人物の重みは無い。このような場合の重みの決め方について述べる。ここで、複数人(例えば、Ａさん、Ｂさん、Ｃさん)が、商品α・工程３の作業の経験があり、管理コントローラ２０の作業情報・学習情報保存部２３に作業情報・学習情報が保存されているとする。
【０１１１】
Ａさん、Ｂさん、Ｃさんが商品α・工程３の作業を行っている時、作業に対応するニューラルネットワークの出力が有効になったと判断した時の、対応する入力した画像を作業毎に必要枚数を管理コントローラ２０の作業情報・学習情報保存部２３に保存しておく。商品α・工程３のＡさんの学習情報(重み)を作業情報・学習情報保存部２３から読み出して、学習情報選択部２１の認識部２８へ入力する。作業情報・学習情報保存部２３に保存されているＢさんの画像を読み出して画像入力２６へ入力し、前処理(前処理部２７による前処理)を行い、認識部２８で認識(分類)を行い、比較部２９へ入力する。同様に、Ｃさんの画像を画像入力２６へ入力し、前処理２７を行い、認識部２８で認識を行い、比較部２９へ入力する。
【０１１２】
また、商品α・工程３のＢさんの学習情報(重み)を作業情報・学習情報保存部２３から読み出して、学習情報選択部２１の認識部２８へ入力する。作業情報・学習情報保存部２３に保存されているＡさんの画像を読み出して画像入力２６へ入力し、前処理２７を行い、認識部２８で認識を行い、比較部２９へ入力する。同様に、Ｃさんの画像を画像入力２６へ入力し、前処理２７を行い、認識部２８で認識を行い、比較部２９へ入力する。
【０１１３】
また、商品α・工程３のＣさんの学習情報(重み)を作業情報・学習情報保存部２３から読み出して、学習情報選択部２１の認識部２８へ入力する。作業情報・学習情報保存部２３に保存されているＡさんの画像を読み出して画像入力２６へ入力し、前処理２７を行い、認識部２８で認識を行い、比較部２９へ入力する。同様にＢさんの画像を画像入力２６へ入力し、前処理２７を行い、認識部２８で認識を行い、比較部へ入力する。
【０１１４】
各重みに対する各人物の各作業におけるニューラルネットワークの出力の値が分かるので、重み毎に、各人物の各作業に対応するニューラルネットワークの出力の値がある値以上で他の出力との差がある値以上あるか、または出力の値と他の出力との差がどの程度あるかが分かる。例えば、Ａさんの重みに対して複数(Ｂさん、Ｃさん)のニューラルネットワークの出力値が得られるので、Ａさんの重みに対する複数の出力値が適切かどうか比較部２９で判断する。ここで、例えば、Ａさんの重みについて、Ｂさんの各作業の画像に対するニューラルネットワークの出力は適切だが、Ｃさんの各作業の画像に対するニューラルネットワークの出力は失敗が多い場合は、Ａさんの重みは適切とは言い難い。同様に、Ｂさん、Ｃさんの重みに対する複数の出力値が適切かどうか比較部２９で判断する。複数の重みに対して、最もよい重みを選択する。選択された最もよい人の重みを商品α・工程３の重みとして、作業情報・学習情報保存部に商品α・工程３の情報とともに保存する。すぐに使用するものであれば対応するセルの制御装置(機械学習装置の認識部と学習部)に重みを送信する。
【０１１５】
管理コントローラの学習情報選択部２１を使用した重みの決め方について、第２の実施形態について説明する。商品αが量産されているとする。特定の人物(例えば、Ｆさん)が、商品αの作業経験が無い、例えば、工程３につく場合について述べる。複数人(例えば、Ａさん、Ｂさん、Ｃさん)が、商品α・工程３の作業の経験があり、管理コントローラ２０の作業情報・学習情報保存部２３に作業情報・学習情報が保存されているとする。
【０１１６】
Ｆさんの商品α・工程３の各作業に対する入力画像(可能ならば教師つき)を用意する。商品α・工程３のＡさんの学習情報(重み)を作業情報・学習情報保存部２３から読み出して、学習情報選択部２１の認識部２８へ入力する。用意したＦさんの各作業に対する画像を画像入力２６へ入力し、前処理２７を行い、認識部２８で認識(分類)を行い、比較部２９へ入力する。各作業におけるニューラルネットワークの出力の値が分かるので、誤差の合計を計算する(教師あり学習の場合。誤差の計算は周知の事実なので、省略する)。または各作業に対応する認識部の出力の値がある値以上で他の出力との差がある値以上あるか、または出力の値と他の出力との差がどの程度あるかを見てもよい。Ａさんが終了したら次にＢさん、Ｂさんが終了したらＣさんと、Ａさんの時と同様にすすめて各作業に対するニューラルネットワークの出力の値を出して、Ａさん、Ｂさん、Ｃさんの各重みの場合の結果を比較部２９で比較を行い、例えば、誤差の合計が最も小さい人の重みを選択する。選択した重みは作業情報・学習情報保存部２３に商品α・工程３・Ｆさんの情報とともに保存する。すぐに使用するものであれば対応するセルの制御装置(機械学習装置の認識部と学習部)に重みを送信する。
【０１１７】
学習情報選択部２１を使用しない場合の重みの決め方について、第３の実施形態について説明する。商品αが量産されているとする。特定の人物(例えば、Ｆさん)が、商品αの作業経験が無い、例えば、工程３につく場合について述べる。複数人(例えば、Ａさん、Ｂさん、Ｃさん)が、商品α・工程３の作業の経験があり、管理コントローラ２０の作業情報・学習情報保存部２３に作業情報・学習情報が保存されているとする。管理コントローラから対応するセルの制御装置の学習部と認識部にＡさんの重みを送信し、Ｆさんが各作業を行った結果(例えば、対応する出力の値と他の出力の差)を見る。次にＢさんの重みを送信し、同様にＦさんの各作業の結果を見る。次にＣさんの重みを送信し、同様にＦさんの各作業を行った結果を見る。このうち、最も認識が高かった人の重みをＦさんの商品α・工程３の重みとして使用する。
【０１１８】
商品α・工程３のＡさん、Ｂさん、Ｃさんの重みを１つの重みにまとめて、まとめた１つの重みを商品α・工程３の重みとして使用してよい。まとめた重みは作業情報・学習情報保存部２３に商品α・工程３の情報とともに保存する。また、まとめた１つの重みを、上記第１〜第３の実施形態に使用することができる。なお、分散学習や転移学習で複数人の重みをまとめることができる。例えば、第１の実施形態において、まとめた重みを学習情報選択部２１の認識部２８へ入力する。作業情報・学習情報保存部２３に保存されているＡさんの画像を読み出して画像入力２６へ入力し、前処理２７を行い、認識部２８で認識を行い、比較部２９へ入力する。また、Ｂさん、Ｃさんについても、同様に行う。
【０１１９】
比較部２９にて１つにまとめた重み、Ａさんの重み、Ｂさんの重み、Ｃさんの重みのうち、最もよい重みを選択する。選択された重みは、商品α・工程３における最もよい重みとして作業情報・学習情報保存部２３に商品α・工程３の情報とともに保存する。なお、重みの決め方について、作業者が、第１の実施形態は不特定の人物、第２、第３の実施形態は特定の人物として説明したが、すでに作業経験がある人(例えば、Ａさん)の自分自身(Ａさん)の重みをコントローラから制御装置２に送る場合、例えば、商品α・工程３における複数人の重みをまとめた重みとＡさんの重みのどちらがよいかを学習情報選択部２１を使用して判断し、よりよい方を送ることもできる。また、例えば、制御装置２の機械学習装置５に学習部５４を設けたが、セルコントローラ、管理コントローラに設けてもよい。なお、画像を画像入力２６へ入力したが、前処理を行った画像であれば、認識部２８に入力することができるのはいうまでもない。
【０１２０】
以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものであり、特に記載された例や条件は発明の範囲を制限することを意図するものではない。また、明細書のそのような記載は、発明の利点および欠点を示すものでもない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
【符号の説明】
【０１２１】
１，１ａ〜１ｎ    ロボット(協働ロボット)
２，２ａ〜２ｎ    制御装置
３    ロボットシステム
４    アーム
５    機械学習装置
６    ハンド
７，８    カメラ
１０    生産システム
１１    作業情報・学習情報取得部
１２    時間処理部
１３，５９    記憶部
１４，４１    入力部
１５，４２    表示部
１６    セル
１８    セルコントローラ
２０    管理コントローラ
２１    学習情報選択部
２２    第一通信部
２３    作業情報・学習情報保存部
２４    第二通信部
２６，５１    画像入力
２７，５２    前処理部
２８，５３    認識部
２９    比較部
４３    行動制御部
４４    アーム駆動装置
４５    把持用ハンド駆動装置
４６    外力算出部
４７    作業時間測定部
４８    ドライバ用ハンド駆動装置
４９    力センサ
５０    組立対象品
５４    学習部
５５    通信部
５６    表示制御部
５４１    誤差計算部
５４２    誤差モデル更新部
【図１】
2018062016.tif 000005
【図２】
2018062016.tif 000006
【図３】
2018062016.tif 000007
【図４】
2018062016.tif 000008
【図５】
2018062016.tif 000009
【図６】
2018062016.tif 000010
【図７】
2018062016.tif 000011
【図８】
2018062016.tif 000012
【図９】
2018062016.tif 000013
【図１０】
2018062016.tif 000014
【図１１】
2018062016.tif 000015
【図１２】
2018062016.tif 000016
【図１３】
2018062016.tif 000017
【図１４】
2018062016.tif 000018
【図１５】
2018062016.tif 000019
【図１６】
2018062016.tif 000020
【図１７】
2018062016.tif 000021
【図１８】
2018062016.tif 000022
【図１９】
2018062016.tif 000023
【図２０】
2018062016.tif 000024
【図２１】
2018062016.tif 000025
【図２２】
2018062016.tif 000026
【図２３】
2018062016.tif 000027
【図２４】
2018062016.tif 000028
【図２５】
2018062016.tif 000029
【図２６】
2018062016.tif 000030
【図２７】
2018062016.tif 000031
【図２８】
2018062016.tif 000032
【図２９】
2018062016.tif 000033
【図３０】
2018062016.tif 000034
【図３１】
2018062016.tif 000035
【図３２】
2018062016.tif 000036
【図３３】
2018062016.tif 000037
【図３４】
2018062016.tif 000038