(57)【要約】【課題】トレイ振動動作の動作パラメータを自動的に調整することが可能な部品供給装置及び機械学習装置を提供すること。【解決手段】本発明の部品供給装置１が備える機械学習装置１００は、トレイの振動動作の動作パラメータを示す振動動作パラメータデータ、トレイの上の前記部品の配置及び姿勢を示す部品配置データ、及び部品の種類を示す部品種類データを、環境の現在状態を表す状態変数として観測する状態観測部１０６と、部品を供給する効率を示す振動動作の適否判定結果を示す判定データを取得する判定データ取得部１０８と、状態変数と判定データとを用いて、振動動作の動作パラメータと、部品配置データ、及び部品種類データとを関連付けて学習する学習部１１０とを備える。【選択図】図２
2019014020.tif 000002
【特許請求の範囲】
【請求項１】
トレイに置かれた部品を供給する部品供給装置であって、前記トレイの上に置かれた前記部品の配置及び姿勢を変化させる前記トレイの振動動作の動作パラメータを決定する部品供給装置において、
前記振動動作の動作パラメータを学習する機械学習装置を備え、
前記機械学習装置は、
前記振動動作の動作パラメータを示す振動動作パラメータデータ、及び前記トレイの上の前記部品の配置及び姿勢を示す部品配置データを、環境の現在状態を表す状態変数として観測する状態観測部と、
前記部品を供給する効率を示す前記振動動作の適否判定結果を示す判定データを取得する判定データ取得部と、
前記状態変数と前記判定データとを用いて、前記振動動作の動作パラメータと、前記部品配置データとを関連付けて学習する学習部と、
を備える部品供給装置。
【請求項２】
前記動作パラメータは、前記振動動作の振動の強さ及び振動の周波数の少なくとも一つを含む、
請求項１に記載の部品供給装置。
【請求項３】
前記動作パラメータは、前記振動動作の振動の時間及び位相差の少なくとも一つを含む、
請求項２に記載の部品供給装置。
【請求項４】
前記状態変数は、前記部品の種類を示す部品種類データを更に含み、
前記学習部は、前記状態変数と前記判定データとを用いて、前記振動動作の動作パラメータと、前記部品配置データ及び前記部品種類データとを関連付けて学習する、
請求項１〜３のいずれか１つに記載の部品供給装置。
【請求項５】
前記判定データには、前記部品を供給する効率を示す前記振動動作の適否判定結果に加えて、前記トレイからの前記部品がこぼれた前記部品の数の適否判定結果を含む、
請求項１〜４のいずれか１つに記載の部品供給装置。
【請求項６】
前記学習部は、
前記適否判定結果に関連する報酬を求める報酬計算部と、
前記報酬を用いて、前記トレイの上の前記部品の配置及び姿勢、並びに前記部品の種類に対する前記振動動作の動作パラメータの価値を表す関数を更新する価値関数更新部とを備える、
請求項１〜５のいずれか１つに記載の部品供給装置。
【請求項７】
前記学習部は、前記状態変数と前記判定データとを多層構造で演算する、
請求項１〜６のいずれか１つに記載の部品供給装置。
【請求項８】
前記学習部による学習結果に基づいて、前記振動動作の動作パラメータを決定する指令値を出力する意思決定部を更に備える、
請求項１〜７のいずれか１つに記載の部品供給装置。
【請求項９】
前記学習部は、複数の部品供給装置のそれぞれについて得られた前記状態変数及び前記判定データを用いて、該複数の部品供給装置のそれぞれにおける前記振動動作の動作パラメータを学習する、
請求項１〜８のいずれか１つに記載の部品供給装置。
【請求項１０】
前記機械学習装置は、クラウドサーバに存在する、
請求項１〜９のいずれか１つに記載の部品供給装置。
【請求項１１】
トレイに置かれた部品を供給する部品供給装置における前記トレイの上に置かれた前記部品の配置及び姿勢を変化させる前記トレイの振動動作の動作パラメータを学習する機械学習装置であって、
前記振動動作の動作パラメータを示す振動動作パラメータデータ、前記トレイの上の前記部品の配置及び姿勢を示す部品配置データ、及び前記部品の種類を示す部品種類データを、環境の現在状態を表す状態変数として観測する状態観測部と、
前記部品を供給する効率を示す前記振動動作の適否判定結果を示す判定データを取得する判定データ取得部と、
前記状態変数と前記判定データとを用いて、前記振動動作の動作パラメータと、前記部品配置データ、及び前記部品種類データとを関連付けて学習する学習部と、
を備える機械学習装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、部品供給装置及び機械学習装置に関し、特に動作パラメータを最適化する部品供給装置及び機械学習装置に関する。
【背景技術】
【０００２】
製品の組み立てを行う生産ラインでは、例えば、組み立てロボットがパレット上に載置された部品を取り出して製品への組み込みを行う場合がある。パレット上に載置された部品は、組み立てロボットが把持しやすいように、部品の姿勢（表裏や向き）をそろえて載置されるが、このような姿勢が揃った部品の供給は部品供給装置によって為される（例えば、特許文献１など）。
【０００３】
図９は部品供給装置の一部構成を例示する図である。図９に示すように、部品供給装置１による部品５のパレット（図示せず）への載置は、例えばトレイ４上に無造作にばら撒かれた部品５をロボット６により取り出して姿勢をそろえてパレットに置くことで行われる。トレイ４には、表を向いている部品５ａと裏を向いている部品５ｂがばら撒かれており、部品供給装置１は、トレイ４を上部から撮像する撮像部６０によりそれぞれの部品５の状態を検出し、表を向いている把持し易い部品５ａをロボット６により把持して取り出しパレットへと載置する。
【０００４】
このようにして部品５をパレットへと移す作業を続けると、表を向いている部品５ａがトレイ上から無くなるが、トレイ４の例えば四隅にはボイスコイルやシリンダなどのアクチュエータで構成された振動部５０が設けられており、トレイ４上の部品５の内で裏を向いている部品５ｂが割合として多くなってきた場合、部品供給装置１はそれぞれの振動部５０を所定の強さ、所定の周波数、所定の位相差で所定の時間だけ振動させ、トレイ４上の裏を向いている部品５ｂをひっくり返したり、トレイ４の端にあるため把持し難い部品５をトレイの中央へ寄せたりすることで、トレイ４上の部品５が把持可能な状態になるように試みる。また、部品供給装置１は、トレイ４上の部品が有る程度少なくなってくると、図示しない部品搬送装置によりトレイ４上に新たに部品を供給する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１７−０３００９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記した部品供給装置１によるトレイ振動動作は動作パラメータ（振動の強さ、振動の周波数、振動の位相差、振動の時間など）に基づいて行われるが、トレイ４上の部品を効率よく把持し易い姿勢へと変化させることができる動作パラメータは、部品の重さや大きさ、形状等に応じて異なるため、該動作パラメータの設定は熟練した作業者が試行錯誤しながら設定する必要があり、作業工程の中で大きな負荷となっていた。
【０００７】
そこで本発明の目的は、トレイ振動動作の動作パラメータを自動的に調整することが可能な部品供給装置及び機械学習装置を提供することである。
【課題を解決するための手段】
【０００８】
本発明の部品供給装置では、部品の種類（重さ、大きさ、形状）及びトレイ上の部品の配置に対する、該トレイを振動させる振動部の動作パラメータを機械学習し、機械学習した結果に基づいて、トレイ上に配置された部品を効率よく把持し易い姿勢へと変更することで、上記課題を解決する。
【０００９】
そして、本発明の一態様は、トレイに置かれた部品を供給する部品供給装置であって、前記トレイの上に置かれた前記部品の配置及び姿勢を変化させる前記トレイの振動動作の動作パラメータを決定する部品供給装置において、前記振動動作の動作パラメータを学習する機械学習装置を備え、前記機械学習装置は、前記振動動作の動作パラメータを示す振動動作パラメータデータ、及び前記トレイの上の前記部品の配置及び姿勢を示す部品配置データを、環境の現在状態を表す状態変数として観測する状態観測部と、前記部品を供給する効率を示す前記振動動作の適否判定結果を示す判定データを取得する判定データ取得部と、前記状態変数と前記判定データとを用いて、前記振動動作の動作パラメータと、前記部品配置データとを関連付けて学習する学習部と、を備える部品供給装置である。
【００１０】
本発明の他の態様は、トレイに置かれた部品を供給する部品供給装置における前記トレイの上に置かれた前記部品の配置及び姿勢を変化させる前記トレイの振動動作の動作パラメータを学習する機械学習装置であって、前記振動動作の動作パラメータを示す振動動作パラメータデータ、前記トレイの上の前記部品の配置及び姿勢を示す部品配置データ、及び前記部品の種類を示す部品種類データを、環境の現在状態を表す状態変数として観測する状態観測部と、前記部品を供給する効率を示す前記振動動作の適否判定結果を示す判定データを取得する判定データ取得部と、前記状態変数と前記判定データとを用いて、前記振動動作の動作パラメータと、前記部品配置データ、及び前記部品種類データとを関連付けて学習する学習部と、を備える機械学習装置である。
【発明の効果】
【００１１】
本発明により、部品供給装置のトレイ上に配置された部品を効率よく把持し易い姿勢へと変更するための動作パラメータの設定を迅速に行うことができるようになる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施形態による部品供給装置の概略的なハードウェア構成図である。
【図２】第１の実施形態による部品供給装置の概略的な機能ブロック図である。
【図３】部品供給装置の一形態を示す概略的な機能ブロック図である。
【図４】機械学習方法の一形態を示す概略的なフローチャートである。
【図５Ａ】ニューロンを説明する図である。
【図５Ｂ】ニューラルネットワークを説明する図である。
【図６】第２の実施形態による部品供給装置の概略的な機能ブロック図である。
【図７】部品供給装置を組み込んだシステムの一形態を示す概略的な機能ブロック図である。
【図８】部品供給装置を組み込んだシステムの他の形態を示す概略的な機能ブロック図である。
【図９】部品供給装置の一部構成を例示する図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施形態を図面と共に説明する。
図１は第１の実施形態による部品供給装置の要部を示す概略的なハードウェア構成図である。部品供給装置１は、例えば電子部品の組み立てなどを行う産業用ロボット（図示せず）に対して部品を供給する部品供給装置として実装することができる。本実施形態による部品供給装置１が備えるＣＰＵ１１は、部品供給装置１を全体的に制御するプロセッサである。ＣＰＵ１１は、ＲＯＭ１２に格納されたシステム・プログラムをバス２０を介して読み出し、該システム・プログラムに従って部品供給装置１全体を制御する。ＲＡＭ１３には一時的な計算データや表示データ、図示しない入力部を介してオペレータが入力した各種データ等が一時的に格納される。
【００１４】
不揮発性メモリ１４は、例えば図示しないバッテリでバックアップされるなどして、部品供給装置１の電源がオフされても記憶状態が保持されるメモリとして構成される。不揮発性メモリ１４には、図示しない入力部を介してオペレータが入力した各種データ（例えば、振動部５０の振動の強さ、周波数、振動時間、位相差などの動作パラメータ、供給する部品の種類、部品の重さ、形状、大きさなど）や、図示しないインタフェースを介して入力された制御用のプログラムなどが記憶されている。不揮発性メモリ１４に記憶されたプログラムや各種データは、実行時／利用時にはＲＡＭ１３に展開されても良い。また、ＲＯＭ１２には、トレイ４上の各部品の配置及び姿勢を撮像部６０が撮像した画像に基づいて解析する公知の解析プログラムなどの各種のシステム・プログラム（後述する機械学習装置１００とのやりとりを制御するためのシステム・プログラムを含む）があらかじめ書き込まれている。
【００１５】
制御回路３０はＣＰＵ１１からの指令を受けてトレイ４に設けられた振動部５０を制御する。制御回路３０は、例えば振動部５０の振動の強さ（振幅）や振動の周波数を制御できるようにしても良い。また、制御回路３０は、振動部５０が振動する時間を制御できるようにしても良い。なお、上記した従来技術では振動部５０はトレイに対して４つ設けられていたが、少なくとも１つの振動部５０があれば、トレイ４上の部品５の姿勢を制御することが可能である。そして、トレイ４に対して振動部５０が複数も受けられている場合には、制御回路３０は、各振動部５０の間の振動の位相差を制御できるようにしても良い。
【００１６】
撮像部６０は、トレイ４上に配置された部品５を撮像する。撮像部６０は、少なくともトレイ４の部品５が配置される領域を撮像できれば良い。撮像部６０は、インタフェース１８を介して撮像したトレイ４上の画像をＣＰＵ１１に渡す。
【００１７】
ロボットコントローラ７０は、トレイ４上に配置された部品５をパレットなどへと移し変えるロボットを制御する制御装置である。ロボットコントローラ７０はインタフェース１９を介して撮像部６０が撮像したトレイ４上の画面の解析結果に基づいて、トレイ４上の把持し易い部品５をパレットなどへと移し変えるようにロボットを制御する。また、ロボットコントローラ７０は、必要に応じてロボットの稼働状況をインタフェース１９を介してＣＰＵ１１へと通知する。
【００１８】
インタフェース２１は、部品供給装置１と機械学習装置１００とを接続するためのインタフェースである。機械学習装置１００は、機械学習装置１００全体を統御するプロセッサ１０１と、システム・プログラム等を記憶したＲＯＭ１０２、機械学習に係る各処理における一時的な記憶を行うためのＲＡＭ１０３、及び学習モデル等の記憶に用いられる不揮発性メモリ１０４を備える。機械学習装置１００は、インタフェース２１を介して部品供給装置１で取得可能な各情報（振動部５０の動作パラメータ、撮像部６０によるトレイ４上の各部品の配置及び姿勢の解析結果、部品の種類、部品の重さ、形状、大きさなどなど）を観測することができる。また、部品供給装置１は、機械学習装置１００から出力される、振動部５０の動作パラメータを設定する指令を受けて、不揮発性メモリ１４に記憶されている振動部５０の動作パラメータの設定等を行う。
【００１９】
図２は、第１の実施形態による部品供給装置１と機械学習装置１００の概略的な機能ブロック図である。機械学習装置１００は、トレイ４上の部品の配置及び姿勢、及び部品の種類に対する、振動部５０の動作パラメータを、いわゆる機械学習により自ら学習するためのソフトウェア（学習アルゴリズム等）及びハードウェア（プロセッサ１０１等）を含む。部品供給装置１が備える機械学習装置１００が学習するものは、トレイ４上の部品の配置及び姿勢、及び部品の種類と、振動部５０の動作パラメータとの、相関性を表すモデル構造に相当する。
【００２０】
図２に機能ブロックで示すように、部品供給装置１が備える機械学習装置１００は、振動部５０の動作パラメータを示す振動動作パラメータデータＳ１と、トレイ４上の部品の配置及び姿勢を示す部品配置データＳ２、部品の種類を示す部品種類データＳ３を含む環境の現在状態を表す状態変数Ｓとして観測する状態観測部１０６と、振動部５０の動作パラメータが設定された場合におけるトレイ振動動作の適否判定結果を示す振動動作判定データＤ１を含む判定データＤを取得する判定データ取得部１０８と、状態変数Ｓと判定データＤとを用いて、トレイ４上の部品の配置及び姿勢、及び部品の種類に、振動動作パラメータデータＳ１を関連付けて学習する学習部１１０とを備える。
【００２１】
状態観測部１０６は、例えばプロセッサ１０１の一機能として構成できる。或いは状態観測部１０６は、例えばプロセッサ１０１を機能させるためのＲＯＭ１０２に記憶されたソフトウェアとして構成できる。状態観測部１０６が観測する状態変数Ｓのうち、振動動作パラメータデータＳ１は、振動部５０の制御に用いられる動作パラメータのセットとして取得することができる。振動部５０の制御に用いられる動作パラメータとしては、振動の強さや振動の周波数などが例示され、また必要に応じて、振動する時間や複数の振動部５０間の位相差なども採用することができるが、このような振動部５０の制御に用いられる動作パラメータは、振動部５０に用いられるアクチュエータの種類や、振動部５０のトレイ４に対する設置状況によって、適切な動作パラメータを設定できるようにして良い。
【００２２】
振動動作パラメータデータＳ１は、学習の初期においては、例えば熟練した作業者により申告されて部品供給装置１に与えられた、振動部５０の動作パラメータを用いることができる。また、振動動作パラメータデータＳ１は、学習がある程度進んだ段階では、機械学習装置１００が学習部１１０の学習結果に基づいて１つ前の学習周期において決定した振動部５０の動作パラメータを用いることができ、このような場合においては、機械学習装置１００は決定した振動部５０の動作パラメータを学習周期毎にＲＡＭ１０３に一時的に記憶しておき、状態観測部１０６は、ＲＡＭ１０３から１つ前の学習周期において機械学習装置１００が決定した振動部５０の動作パラメータを取得するようにしても良い。
【００２３】
状態変数Ｓのうち、部品配置データＳ２は、例えば撮像部６０により撮像された画像に基づいて解析された、トレイ４上の部品の配置及び姿勢に係るデータを用いることができる。ここで、部品配置データＳ２としての部品の配置については、トレイ４上の所定の位置を基準とした座標系上の各部品の座標値を用いることができる。また、部品配置データＳ２としての部品の姿勢については、各部品が単純に表か裏かを示すデータでも良く、更に詳細には基準となる部品の向きから見た場合の各部品の角度偏位を用いるようにしても良い。
【００２４】
状態変数Ｓのうち、部品種類データＳ３は、例えば作業者により部品供給装置１に対して設定された部品の種類を用いることができる。また、部品種類データＳ３は、その目的に応じて部品の重さや形状、部品の大きさなどを用いるようにしても良い。前者の場合、それぞれの部品の種類毎に振動部５０の動作パラメータを学習することができるが、後者の場合、同じような重さ、形状、大きさの部品に関する振動部５０の動作パラメータを学習することができるようになる。
【００２５】
判定データ取得部１０８は、例えばプロセッサ１０１の一機能として構成できる。或いは判定データ取得部１０８は、例えばプロセッサ１０１を機能させるためのＲＯＭ１０２に記憶されたソフトウェアとして構成できる。判定データ取得部１０８は、判定データＤとして、振動部５０の動作パラメータが設定された場合におけるトレイ振動動作の適否判定値である振動動作判定データＤ１を用いることができる。判定データ取得部１０８は、トレイ４上から所定個数の部品を供給（ロボットで部品を移す動作）するのに掛かる時間（サイクルタイム）、または、トレイ４上から所定の時間内に供給できた部品の個数を振動作判定データＤ１として用いることができる。判定データＤは、状態変数Ｓの下でトレイ振動動作を行った場合における部品供給効率の結果を表す指標である。
【００２６】
学習部１１０に対して同時に入力される状態変数Ｓは、学習部１１０による学習周期で考えた場合、判定データＤが取得された１学習周期前のデータに基づくものとなる。このように、部品供給装置１が備える機械学習装置１００が学習を進める間、環境においては、部品配置データＳ２、及び部品種類データＳ３の取得、振動動作パラメータデータＳ１に基づいたトレイ振動動作の実行、判定データＤの取得が繰り返し実施される。
【００２７】
学習部１１０は、例えばプロセッサ１０１の一機能として構成できる。或いは学習部１１０は、例えばプロセッサ１０１を機能させるためのＲＯＭ１０２に記憶されたソフトウェアとして構成できる。学習部１１０は、機械学習と総称される任意の学習アルゴリズムに従い、トレイ４上の部品の配置及び姿勢、部品の種類に対する、振動動作パラメータデータＳ１を学習する。学習部１１０は、前述した状態変数Ｓと判定データＤとを含むデータ集合に基づく学習を反復実行することができる。トレイ４上の部品の配置及び姿勢、部品の種類に対する、振動動作パラメータデータＳ１の学習サイクルの反復中、状態変数Ｓのうち、部品配置データＳ２、及び部品種類データＳ３は、上記したように１学習周期前に撮像部６０により撮像された画像の解析結果や不揮発性メモリ１４に設定された部品に係る情報から取得し、振動動作パラメータデータＳ１は、前回までの学習結果に基づいて決定された振動部５０の動作パラメータとし、また判定データＤは、振動動作パラメータデータＳ１に基づいて振動部５０の動作パラメータが設定された後に実行された今回の学習周期におけるトレイ振動動作の適否判定結果とする。
【００２８】
このような学習サイクルを繰り返すことにより、学習部１１０は、トレイ４上の部品の配置及び姿勢（部品配置データＳ２）、及び部品の種類（部品種類データＳ３）と該状態に対する振動部５０の動作パラメータとの相関性を暗示する特徴を自動的に識別することができる。学習アルゴリズムの開始時には部品配置データＳ２、及び部品種類データＳ３と、振動部５０の動作パラメータとの相関性は実質的に未知であるが、学習部１１０は、学習を進めるに従い徐々に特徴を識別して相関性を解釈する。部品配置データＳ２、及び部品種類データＳ３と振動部５０の動作パラメータとの相関性が、ある程度信頼できる水準まで解釈されると、学習部１１０が反復出力する学習結果は、現在状態（つまりトレイ４上の部品の配置及び姿勢、及び部品の種類）に対して、振動部５０の動作パラメータをどのような値とするべきかという行動の選択（つまり意思決定）を行うために使用できるものとなる。つまり学習部１１０は、学習アルゴリズムの進行に伴い、トレイ４上の部品の配置及び姿勢、及び部品の種類と、当該状態に対して振動部５０の動作パラメータをどのような値とするべきかという行動との、相関性を最適解に徐々に近づけることができる。
【００２９】
上記したように、部品供給装置１が備える機械学習装置１００は、状態観測部１０６が観測した状態変数Ｓと判定データ取得部１０８が取得した判定データＤとを用いて、学習部１１０が機械学習アルゴリズムに従い、振動部５０の動作パラメータを学習するものである。状態変数Ｓは、振動動作パラメータデータＳ１、部品配置データＳ２、及び部品種類データＳ３といった、外乱の影響を受け難いデータで構成され、また判定データＤは、部品供給装置１が備える撮像部６０が撮像した画像を解析することで一義的に求められる。したがって、部品供給装置１が備える機械学習装置１００によれば、学習部１１０の学習結果を用いることで、トレイ４上の部品の配置及び姿勢、及び部品の種類に応じた、振動部５０の動作パラメータを、演算や目算によらずに自動的に、しかも正確に求めることができるようになる。
【００３０】
そして、振動部５０の動作パラメータを、演算や目算によらずに自動的に求めることができれば、トレイ４上の部品の配置及び姿勢（部品配置データＳ２）、及び部品の種類（部品種類データＳ３）を把握するだけで、振動部５０の動作パラメータの適切な値を迅速に決定することができる。したがって、振動部５０の動作パラメータの決定を効率よく行うことができる。
【００３１】
部品供給装置１が備える機械学習装置１００の一変形例として、判定データ取得部１０８は、判定データＤとして、振動動作後にトレイ４上からこぼれた部品数を示すこぼれ部品数判定データＤ２を用いることができる。こぼれ部品数判定データＤ２は、撮像部６０により撮像された画像を解析した解析結果（例えば、振動動作前後のトレイ４上の部品の個数の差など）から取得することができる。
【００３２】
上記変形例によれば、機械学習装置１００は、トレイ４上の部品の配置及び姿勢、及び部品の種類に対する振動部５０の動作パラメータの学習に際して、トレイ４上から部品がこぼれた個数をマイナスの評価として考慮することができる。
【００３３】
部品供給装置１が備える機械学習装置１００の他の変形例として、学習部１１０は、同一の作業を行う複数の部品供給装置１のそれぞれについて得られた状態変数Ｓ及び判定データＤを用いて、それら部品供給装置１における振動部５０の動作パラメータを学習することができる。この構成によれば、一定時間で得られる状態変数Ｓと判定データＤとを含むデータ集合の量を増加できるので、より多様なデータ集合を入力として、振動部５０の動作パラメータの学習の速度や信頼性を向上させることができる。
【００３４】
上記構成を有する機械学習装置１００では、学習部１１０が実行する学習アルゴリズムは特に限定されず、機械学習として公知の学習アルゴリズムを採用できる。図３は、図１に示す部品供給装置１の一形態であって、学習アルゴリズムの一例として強化学習を実行する学習部１１０を備えた構成を示す。強化学習は、学習対象が存在する環境の現在状態（つまり入力）を観測するとともに現在状態で所定の行動（つまり出力）を実行し、その行動に対し何らかの報酬を与えるというサイクルを試行錯誤的に反復して、報酬の総計が最大化されるような方策（本願の機械学習装置では振動部５０の動作パラメータの決定）を最適解として学習する手法である。
【００３５】
図３に示す部品供給装置１が備える機械学習装置１００において、学習部１１０は、状態変数Ｓに基づいて振動部５０の動作パラメータが設定された場合におけるトレイ振動動作の適否判定結果（状態変数Ｓが取得された次の学習周期で用いられる判定データＤに相当）に関連する報酬Ｒを求める報酬計算部１１２と、報酬Ｒを用いて、振動部５０の動作パラメータの価値を表す関数Ｑを更新する価値関数更新部１１４とを備える。学習部１１０は、価値関数更新部１１４が関数Ｑの更新を繰り返すことによってトレイ４上の部品の配置及び姿勢、及び部品の種類に対する振動部５０の動作パラメータを学習する。
【００３６】
学習部１１０が実行する強化学習のアルゴリズムの一例を説明する。この例によるアルゴリズムは、Ｑ学習（Ｑ−ｌｅａｒｎｉｎｇ）として知られるものであって、行動主体の状態ｓと、その状態ｓで行動主体が選択し得る行動ａとを独立変数として、状態ｓで行動ａを選択した場合の行動の価値を表す関数Ｑ（ｓ，ａ）を学習する手法である。状態ｓで価値関数Ｑが最も高くなる行動ａを選択することが最適解となる。状態ｓと行動ａとの相関性が未知の状態でＱ学習を開始し、任意の状態ｓで種々の行動ａを選択する試行錯誤を繰り返すことで、価値関数Ｑを反復して更新し、最適解に近付ける。ここで、状態ｓで行動ａを選択した結果として環境（つまり状態ｓ）が変化したときに、その変化に応じた報酬（つまり行動ａの重み付け）ｒが得られるように構成し、より高い報酬ｒが得られる行動ａを選択するように学習を誘導することで、価値関数Ｑを比較的短時間で最適解に近付けることができる。
【００３７】
価値関数Ｑの更新式は、一般に下記の数１式のように表すことができる。数１式において、ｓt及びａtはそれぞれ時刻ｔにおける状態及び行動であり、行動ａtにより状態はｓt+1に変化する。ｒt+1は、状態がｓtからｓt+1に変化したことで得られる報酬である。ｍａｘＱの項は、時刻ｔ＋１で最大の価値Ｑになる（と時刻ｔで考えられている）行動ａを行ったときのＱを意味する。α及びγはそれぞれ学習係数及び割引率であり、０＜α≦１、０＜γ≦１で任意設定される。
【００３８】
【数１】
2019014020.tif 000003
【００３９】
学習部１１０がＱ学習を実行する場合、状態観測部１０６が観測した状態変数Ｓ及び判定データ取得部１０８が取得した判定データＤは、更新式の状態ｓに該当し、現在状態（つまり、トレイ４上の部品の配置及び姿勢、及び部品の種類）に対する振動部５０の動作パラメータをどのように決定するべきかという行動は、更新式の行動ａに該当し、報酬計算部１１２が求める報酬Ｒは、更新式の報酬ｒに該当する。よって価値関数更新部１１４は、現在状態に対する振動部５０の動作パラメータの価値を表す関数Ｑを、報酬Ｒを用いたＱ学習により繰り返し更新する。
【００４０】
報酬計算部１１２が求める報酬Ｒは、例えば、振動部５０の動作パラメータを決定した後に決定した動作パラメータに基づいてトレイ振動動作を行ったときに、トレイの振動動作の適否判定結果が「適」と判定される場合（例えば、所定個数の部品が供給されるサイクルタイムが許容できる範囲内の場合、又は、所定時間内に供給される部品の個数が許容できる個数以上の場合等）に正（プラス）の報酬Ｒとし、振動部５０の動作パラメータを決定した後に決定した動作パラメータに基づいてトレイ振動動作を行ったときに、トレイの振動動作の適否判定結果が「否」と判定される場合（例えば、所定個数の部品が供給されるサイクルタイムが許容できる範囲を超える場合、又は、所定時間内に供給される部品の個数が許容できる個数より少ない場合等）に負（マイナス）の報酬Ｒとすることができる。正負の報酬Ｒの絶対値は、互いに同一であってもよいし異なっていてもよい。また、判定の条件として、判定データＤに含まれる複数の値を組み合わせて判定するようにしても良い。
【００４１】
また、ロボットの動作の適否判定結果を、「適」及び「否」の二通りだけでなく複数段階に設定することができる。例として、所定個数の部品が供給されるサイクルタイムの許容範囲の最大値がＴmaxの場合、所定個数の部品が供給されるサイクルタイムＴが、０≦Ｔ＜Ｔmax／５のときは報酬Ｒ＝５を与え、Ｔmax／５≦Ｔ＜Ｔmax／２のときは報酬Ｒ＝２を与え、Ｔmax／２≦Ｔ≦Ｔmaxのときは報酬Ｒ＝１を与えるような構成とすることができる。さらに、学習の初期段階はＴmaxを比較的大きく設定し、学習が進行するにつれてＴmaxを縮小する構成とすることもできる。
【００４２】
価値関数更新部１１４は、状態変数Ｓと判定データＤと報酬Ｒとを、関数Ｑで表される行動価値（例えば数値）と関連付けて整理した行動価値テーブルを持つことができる。この場合、価値関数更新部１１４が関数Ｑを更新するという行為は、価値関数更新部１１４が行動価値テーブルを更新するという行為と同義である。Ｑ学習の開始時には環境の現在状態と振動部５０の動作パラメータとの相関性は未知であるから、行動価値テーブルにおいては、種々の状態変数Ｓと判定データＤと報酬Ｒとが、無作為に定めた行動価値の値（関数Ｑ）と関連付けた形態で用意されている。なお報酬計算部１１２は、判定データＤが分かればこれ対応する報酬Ｒを直ちに算出でき、算出した値Ｒが行動価値テーブルに書き込まれる。
【００４３】
ロボットの動作状態の適否判定結果に応じた報酬Ｒを用いてＱ学習を進めると、より高い報酬Ｒが得られる行動を選択する方向へ学習が誘導され、選択した行動を現在状態で実行した結果として変化する環境の状態（つまり状態変数Ｓ及び判定データＤ）に応じて、現在状態で行う行動についての行動価値の値（関数Ｑ）が書き換えられて行動価値テーブルが更新される。この更新を繰り返すことにより、行動価値テーブルに表示される行動価値の値（関数Ｑ）は、適正な行動ほど大きな値となるように書き換えられる。このようにして、未知であった環境の現在状態（トレイ４上の部品の配置及び姿勢、及び部品の種類）とそれに対する行動（振動部５０の動作パラメータの決定）との相関性が徐々に明らかになる。つまり行動価値テーブルの更新により、トレイ４上の部品の配置及び姿勢、及び部品の種類と、振動部５０の動作パラメータとの関係が最適解に徐々に近づけられる。
【００４４】
図４を参照して、学習部１１０が実行する上記したＱ学習のフロー（つまり機械学習方法の一形態）をさらに説明する。まずステップＳＡ０１で、価値関数更新部１１４は、その時点での行動価値テーブルを参照しながら、状態観測部１０６が観測した状態変数Ｓが示す現在状態で行う行動として振動部５０の動作パラメータを無作為に選択する。次に価値関数更新部１１４は、ステップＳＡ０２で、状態観測部１０６が観測している現在状態の状態変数Ｓを取り込み、ステップＳＡ０３で、判定データ取得部１０８が取得している現在状態の判定データＤを取り込む。次に価値関数更新部１１４は、ステップＳＡ０４で、判定データＤに基づき、振動部５０の動作パラメータが適当であったか否かを判断し、適当であった場合、ステップＳＡ０５で、報酬計算部１１２が求めた正の報酬Ｒを関数Ｑの更新式に適用し、次いでステップＳＡ０６で、現在状態における状態変数Ｓ及び判定データＤと報酬Ｒと行動価値の値（更新後の関数Ｑ）とを用いて行動価値テーブルを更新する。ステップＳＡ０４で、振動部５０の動作パラメータが適当でなかったと判断した場合、ステップＳＡ０７で、報酬計算部１１２が求めた負の報酬Ｒを関数Ｑの更新式に適用し、次いでステップＳＡ０６で、現在状態における状態変数Ｓ及び判定データＤと報酬Ｒと行動価値の値（更新後の関数Ｑ）とを用いて行動価値テーブルを更新する。学習部１１０は、ステップＳＡ０１〜ＳＡ０７を繰り返すことで行動価値テーブルを反復して更新し、振動部５０の動作パラメータの学習を進行させる。なお、ステップＳＡ０４からステップＳＡ０７までの報酬Ｒを求める処理及び価値関数の更新処理は、判定データＤに含まれるそれぞれのデータについて実行される。
【００４５】
前述した強化学習を進める際に、例えばニューラルネットワークを応用することができる。図５Ａは、ニューロンのモデルを模式的に示す。図５Ｂは、図５Ａに示すニューロンを組み合わせて構成した三層のニューラルネットワークのモデルを模式的に示す。ニューラルネットワークは、例えば、ニューロンのモデルを模した演算装置や記憶装置等によって構成できる。
【００４６】
図５Ａに示すニューロンは、複数の入力ｘ（ここでは一例として、入力ｘ1〜入力ｘ3）に対する結果ｙを出力するものである。各入力ｘ1〜ｘ3には、この入力ｘに対応する重みｗ（ｗ1〜ｗ3）が掛けられる。これにより、ニューロンは、次の数２式により表現される出力ｙを出力する。なお、数２式において、入力ｘ、出力ｙ及び重みｗは、すべてベクトルである。また、θはバイアスであり、ｆkは活性化関数である。
【００４７】
【数２】
2019014020.tif 000004
【００４８】
図５Ｂに示す三層のニューラルネットワークは、左側から複数の入力ｘ（ここでは一例として、入力ｘ１〜入力ｘ３）が入力され、右側から結果ｙ（ここでは一例として、結果ｙ１〜結果ｙ３）が出力される。図示の例では、入力ｘ１、ｘ２、ｘ３のそれぞれに対応の重み（総称してｗ１で表す)が乗算されて、個々の入力ｘ１、ｘ２、ｘ３がいずれも３つのニューロンＮ１１、Ｎ１２、Ｎ１３に入力されている。
【００４９】
図５Ｂでは、ニューロンＮ１１〜Ｎ１３の各々の出力を、総称してｚ１で表す。ｚ１は、入カベクトルの特徴量を抽出した特徴ベクトルと見なすことができる。図示の例では、特徴ベクトルｚ１のそれぞれに対応の重み（総称してｗ２で表す）が乗算されて、個々の特徴ベクトルｚ１がいずれも２つのニューロンＮ２１、Ｎ２２に入力されている。特徴ベクトルｚ１は、重みＷ１と重みＷ２との間の特徴を表す。
【００５０】
図５Ｂでは、ニューロンＮ２１〜Ｎ２２の各々の出力を、総称してｚ２で表す。ｚ２は、特徴ベクトルｚ１の特徴量を抽出した特徴ベクトルと見なすことができる。図示の例では、特徴ベクトルｚ２のそれぞれに対応の重み（総称してｗ３で表す）が乗算されて、個々の特徴ベクトルｚ２がいずれも３つのニューロンＮ３１、Ｎ３２、Ｎ３３に入力されている。特徴ベクトルｚ２は、重みＷ２と重みＷ３との間の特徴を表す。最後にニューロンＮ３１〜Ｎ３３は、それぞれ結果ｙ１〜ｙ３を出力する。
なお、三層以上の層を為すニューラルネットワークを用いた、いわゆるディープラーニングの手法を用いることも可能である。
【００５１】
部品供給装置１が備える機械学習装置１００においては、状態変数Ｓと判定データＤとを入力ｘとして、学習部１１０が上記したニューラルネットワークに従う多層構造の演算を行うことで、振動部５０の動作パラメータ（結果ｙ）を出力することができる。また、部品供給装置１が備える機械学習装置１００においては、ニューラルネットワークをＱ学習における価値関数として用い、状態変数Ｓと行動ａとを入力ｘとして、学習部１１０が上記したニューラルネットワークに従う多層構造の演算を行うことで、当該状態における当該行動の価値（結果ｙ）を出力することもできる。なお、ニューラルネットワークの動作モードには、学習モードと価値予測モードとがあり、例えば学習モードで学習データセットを用いて重みｗを学習し、学習した重みｗを用いて価値予測モードで行動の価値判断を行うことができる。なお価値予測モードでは、検出、分類、推論等を行うこともできる。
【００５２】
上記した部品供給装置１の構成は、プロセッサ１０１が実行する機械学習方法（或いはソフトウェア）として記述できる。この機械学習方法は、振動部５０の動作パラメータを学習する機械学習方法であって、コンピュータのＣＰＵが、振動動作パラメータデータＳ１、部品配置データＳ２、及び部品種類データＳ３を、ロボットの制御を行う環境の現在状態を表す状態変数Ｓとして観測するステップと、決定された動作パラメータに基づくトレイ振動動作の適否判定結果を示す判定データＤを取得するステップと、状態変数Ｓと判定データＤとを用いて、部品配置データＳ２、及び部品種類データＳ３と、振動部５０の動作パラメータとを関連付けて学習するステップとを有する。
【００５３】
図６は、第２の実施形態による部品供給装置２を示す。部品供給装置２は、機械学習装置１２０と、状態観測部１０６が観測する状態変数Ｓの振動動作パラメータデータＳ１、部品配置データＳ２、及び部品種類データＳ３を状態データＳ０として取得する状態データ取得部３とを備える。状態データ取得部３は、部品供給装置２の各部や、撮像部６０により撮像された画像の解析結果、作業者による適宜のデータ入力等から、状態データＳ０を取得することができる。
【００５４】
部品供給装置２が有する機械学習装置１２０は、振動部５０の動作パラメータを機械学習により自ら学習するためのソフトウェア（学習アルゴリズム等）及びハードウェア（プロセッサ１０１等）に加えて、学習結果に基づいて求めた振動部５０の動作パラメータを部品供給装置２への指令として出力するためのソフトウェア（演算アルゴリズム等）及びハードウェア（プロセッサ１０１等）を含むものである。部品供給装置２が含む機械学習装置１２０は、１つの共通のプロセッサが、学習アルゴリズム、演算アルゴリズム等の全てのソフトウェアを実行する構成を有することもできる。
【００５５】
意思決定部１２２は、例えばプロセッサ１０１の一機能として構成できる。或いは意思決定部１２２は、例えばプロセッサ１０１を機能させるためのＲＯＭ１０２に記憶されたソフトウェアとして構成できる。意思決定部１２２は、学習部１１０が学習した結果に基づいて、トレイ４上の部品の配置及び姿勢、及び部品の種類に対する、振動部５０の動作パラメータを決定する指令を含む指令値Ｃを生成し、生成した指令値Ｃとして出力する。意思決定部１２２が指令値Ｃを部品供給装置２に対して出力した場合、これに応じて、環境の状態が変化する。
【００５６】
状態観測部１０６は、意思決定部１２２による環境への指令値Ｃを出力した後に変化した状態変数Ｓを次の学習周期において観測する。学習部１１０は、変化した状態変数Ｓを用いて、例えば価値関数Ｑ（すなわち行動価値テーブル）を更新することで、振動部５０の動作パラメータを学習する。なお、その際に状態観測部１０６は、振動動作パラメータデータＳ１を状態データ取得部３が取得する状態データＳ０から取得するのではなく、第１の実施形態で説明したように機械学習装置１２０のＲＡＭ１０３から観測するようにしても良い。
【００５７】
意思決定部１２２は、学習結果に基づいて決定した振動部５０の動作パラメータの設定を指令する指令値Ｃを部品供給装置２へと出力する。この学習周期を繰り返すことにより、機械学習装置１２０は振動部５０の動作パラメータの学習を進め、自身が決定する振動部５０の動作パラメータの信頼性を徐々に向上させる。
【００５８】
上記構成を有する部品供給装置２が備える機械学習装置１２０は、前述した機械学習装置１００と同等の効果を奏する。特に機械学習装置１２０は、意思決定部１２２の出力によって環境の状態を変化させることができる。他方、機械学習装置１００では、学習部１１０の学習結果を環境に反映させるための意思決定部に相当する機能を、外部装置に求めることができる。
【００５９】
図７は、部品供給装置１６０を備えた一実施形態によるシステム１７０を示す。システム１７０は、少なくとも同一の作業を行う複数の部品供給装置１６０、１６０’と、それら部品供給装置１６０、１６０’を互いに接続する有線／無線のネットワーク１７２とを備え、複数の部品供給装置１６０のうち少なくとも１つが、上記した機械学習装置１２０を備える部品供給装置１６０として構成される。またシステム１７０は、機械学習装置１２０を備えない部品供給装置１６０’を含むことができる。部品供給装置１６０、１６０’は、同じ目的の作業に必要とされる機構を有する。
【００６０】
上記構成を有するシステム１７０は、複数の部品供給装置１６０、１６０’のうちで機械学習装置１２０を備える部品供給装置１６０が、学習部１１０の学習結果を用いて、トレイ４上の部品の配置及び姿勢、及び部品の種類に対する、振動部５０の動作パラメータを、演算や目算によらずに自動的に、しかも正確に求めることができる。また、少なくとも１つの部品供給装置１６０の機械学習装置１２０が、他の複数の部品供給装置１６０、１６０’のそれぞれについて得られた状態変数Ｓ及び判定データＤに基づき、全ての部品供給装置１６０、１６０’に共通する振動部５０の動作パラメータを学習し、その学習結果を全ての部品供給装置１６０、１６０’が共有するように構成できる。したがってシステム１７０によれば、より多様なデータ集合（状態変数Ｓ及び判定データＤを含む）を入力として、振動部５０の動作パラメータの学習の速度や信頼性を向上させることができる。
【００６１】
図８は、部品供給装置１６０’を備えた他の実施形態によるシステム１７０’を示す。システム１７０’は、機械学習装置１２０（又は１００）と、同一の機械構成を有する複数の部品供給装置１６０’と、それら部品供給装置１６０’と機械学習装置１２０（又は１００）とを互いに接続する有線／無線のネットワーク１７２とを備える。
【００６２】
上記構成を有するシステム１７０’は、機械学習装置１２０（又は１００）が、複数の部品供給装置１６０’のそれぞれについて得られた状態変数Ｓ及び判定データＤに基づき、全ての部品供給装置１６０’に共通するトレイ４上の部品の配置及び姿勢、及び部品の種類に対する振動部５０の動作パラメータを学習し、その学習結果を用いて、トレイ４上の部品の配置及び姿勢、及び部品の種類に対する振動部５０の動作パラメータを、演算や目算によらずに自動的に、しかも正確に求めることができる。
【００６３】
システム１７０’は、機械学習装置１２０（又は１００）が、ネットワーク１７２に用意されたクラウドサーバ等に存在する構成を有することができる。この構成によれば、複数の部品供給装置１６０’のそれぞれが存在する場所や時期に関わらず、必要なときに必要な数の部品供給装置１６０’を機械学習装置１２０（又は１００）に接続することができる。
【００６４】
システム１７０、１７０’に従事する作業者は、機械学習装置１２０（又は１００）による学習開始後の適当な時期に、機械学習装置１２０（又は１００）による振動部５０の動作パラメータの学習の到達度（すなわち振動部５０の動作パラメータの信頼性）が要求レベルに達したか否かの判断を実行することができる。
【００６５】
以上、本発明の実施の形態について説明したが、本発明は上述した実施の形態の例のみに限定されることなく、適宜の変更を加えることにより様々な態様で実施することができる。
【００６６】
例えば、機械学習装置１００，１２０が実行する学習アルゴリズム、機械学習装置１２０が実行する演算アルゴリズム、部品供給装置１、２が実行する制御アルゴリズム等は、上述したものに限定されず、様々なアルゴリズムを採用できる。
【００６７】
また、上記した実施形態では部品供給装置１（又は２）と機械学習装置１００（又は１２０）が異なるＣＰＵを有する装置として説明しているが、機械学習装置１００（又は１２０）は部品供給装置１（又は２）が備えるＣＰＵ１１と、ＲＯＭ１２に記憶されるシステム・プログラムにより実現するようにしても良い。
【００６８】
更に、上記した実施形態では、状態観測部１０６が部品の種類を示す部品種類データＳ３を状態変数として観測する実施例を示しているが、機械学習装置１００（又は１２０）による学習を、特定の部品に関する振動動作の動作パラメータとトレイ４上の部品配置との相関性に特化したものとする場合には、状態観測部１０６は部品種類データＳ３を状態変数として必ずしも観測しなくともよい。このように状態変数として振動動作パラメータデータＳ１、及び部品配置データＳ２のみを観測して学習した機械学習装置１００（又は１２０）は、様々な部品に関する振動部５０の振動動作の動作パラメータの決定に用いることはできないが、学習対象とした特定の部品に関する振動部５０の振動動作の動作パラメータの決定（当該部品の大きさ、重さ、形状に合った動作パラメータの決定）には問題なく用いることができ、また、学習対象とした特定の部品についてのみの学習を進めれば良いため、振動部５０の動作パラメータの学習の速度が向上し、部品供給装置１（又は２）及び機械学習装置１００（又は１２０）を早期に市場へと供給することができるようになるというメリットがある。
【符号の説明】
【００６９】
１，２  部品供給装置
３  状態データ取得部
４  トレイ
５  部品
５ａ  部品
５ｂ  部品
６  ロボット
１１  ＣＰＵ
１２  ＲＯＭ
１３  ＲＡＭ
１４  不揮発性メモリ
１８，１９，２１  インタフェース
２０  バス
３０  制御回路
５０  振動部
６０  撮像部
７０  ロボットコントローラ
１００  機械学習装置
１０１  プロセッサ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  不揮発性メモリ
１０６  状態観測部
１０８  判定データ取得部
１１０  学習部
１１２  報酬計算部
１１４  価値関数更新部
１２０  機械学習装置
１２２  意思決定部
１６０，１６０’  部品供給装置
１７０，１７０’  システム
１７２  ネットワーク
【図１】
2019014020.tif 000005
【図２】
2019014020.tif 000006
【図３】
2019014020.tif 000007
【図４】
2019014020.tif 000008
【図５Ａ】
2019014020.tif 000009
【図５Ｂ】
2019014020.tif 000010
【図６】
2019014020.tif 000011
【図７】
2019014020.tif 000012
【図８】
2019014020.tif 000013
【図９】
2019014020.tif 000014