(57)【要約】【課題】ロボットを使用したキズ検査を行うための機械学習装置、ロボット制御システム及び機械学習方法を提供する。【解決手段】機械学習装置１０は、ロボットハンド２０１にワーク５０又はカメラ２１０を持たせてワーク５０のキズ検査を行うロボット制御検査システム２０から、ワーク５０のキズ検出箇所を含むキズ検出情報と、ロボットハンド２０１の移動経路とワーク５０の撮像点と、カメラによる撮像回数と、を含む状態情報ｓを取得する状態情報取得部１１０と、状態ｓの調整情報である行動ａを出力する行動情報出力部１３０と、キズ検出箇所を含むキズ検出情報に基づいて、強化学習における報酬の値を算出する報酬算出部１２１と、報酬算出部１２１により算出された報酬の値と、状態ｓと、行動ａとに基づいて強化学習を行うことにより行動価値関数Ｑを更新する価値関数更新部１４０と、を備える。【選択図】図２
2019007891.tif 000002
【特許請求の範囲】
【請求項１】
被検査物の被検査面に照明光を照射する照明手段と、
前記被検査面を撮像する撮像手段と、
ロボットハンドを備えるロボットと、
前記撮像手段により撮像される複数の画像により前記被検査面が網羅されるように前記被検査面の上に設定される複数の撮像点を含む撮像領域を撮像する移動経路に沿って、前記被検査物又は前記撮像手段を把持する前記ロボットハンドを移動させながら、前記被検査面の上に設定された前記撮像点において前記撮像手段に撮像させる制御部と、
前記撮像点において、前記撮像手段により前記被検査面を撮像した画像に基づいて、前記被検査面の上におけるキズを検出するキズ検査部と、
を備えるロボット制御システムに対して、強化学習を行う機械学習装置であって、
前記撮像点を含む撮像領域の調整情報を含む行動情報を、前記制御部に対して出力する行動情報出力部と、
予め用意された複数の被検査物のそれぞれの被検査物について、前記行動情報に基づいて、前記制御部が前記被検査物又は前記撮像手段を把持する前記ロボットハンドを移動させて、前記撮像手段により前記被検査面を撮像した画像に基づいて、前記キズ検査部により検出した前記被検査面のキズ検出箇所を含むキズ検出情報と、撮像回数と、を含む状態情報を前記制御部及び前記キズ検査部から取得する状態情報取得部と、
前記状態情報に含まれる前記キズ検出箇所を含むキズ検出情報、及び前記撮像回数に基づいて、強化学習における報酬の値を出力する報酬出力部と、
前記報酬の値と、前記状態情報と、前記行動情報と、に基づいて、行動価値関数を更新する価値関数更新部と、
を備える機械学習装置。
【請求項２】
前記報酬出力部は、
前記キズ検査部により検出したキズ検出箇所の個数が、所定の撮像点を含む撮像領域を撮像した機械学習開始時の初期状態における前記キズ検査部により検出したキズ検出箇所の個数と一致する場合であって、前記撮像回数が前記機械学習開始時の初期状態における前記撮像回数よりも少ない場合に、前記報酬の値を正の値とし、
前記キズ検査部により検出したキズ検出箇所の個数が、前記所定の撮像点を含む撮像領域を撮像した機械学習開始時の初期状態における前記キズ検査部により検出したキズ検出箇所の個数よりも少ない場合に、前記報酬の値を負の値とする請求項１に記載の機械学習装置。
【請求項３】
前記報酬出力部は、
前記キズ検査部により検出したキズ検出箇所の個数が、前記所定の撮像点を含む撮像領域を撮像した機械学習開始時の初期状態における前記キズ検査部により検出したキズ検出箇所の個数と一致する場合に、前記撮像回数が前記機械学習開始時の初期状態における前記撮像回数よりも少ないほど前記報酬の値をより大きな値にする、請求項２に記載の機械学習装置。
【請求項４】
前記価値関数更新部により更新された前記行動価値関数に基づいて、前記キズ検出箇所の個数が、前記機械学習開始時の初期状態における前記キズ検査部により検出したキズ検出箇所の個数と一致する行動情報であって、前記撮像回数が最小となる最適化行動情報を生成する最適化行動情報出力部、を備える請求項２又は請求項３に記載の機械学習装置。
【請求項５】
前記報酬出力部は、
前記キズ検査部により検出した、前記被検査面の所定の領域におけるキズ検出箇所の個数が、所定の撮像点を含む撮像領域を撮像した機械学習開始時の初期状態における前記キズ検査部により検出した、前記被検査面の所定の領域におけるキズ検出箇所の個数と一致する場合であって、撮像回数が前記機械学習開始時の初期状態における撮像回数よりも少ない場合に、前記報酬の値を正の値とし、
前記キズ検査部により検出した、前記被検査面の所定の領域におけるキズ検出箇所の個数が、前記所定の撮像点を含む撮像領域を撮像した機械学習開始時の初期状態における前記キズ検査部により検出した、前記被検査面の所定の領域におけるキズ検出箇所の個数よりも少ない場合に、前記報酬の値を負の値とする請求項１に記載の機械学習装置。
【請求項６】
前記報酬出力部は、
前記キズ検査部により検出した、前記被検査面の所定の領域におけるキズ検出箇所の個数が、前記所定の撮像点を含む撮像領域を撮像した機械学習開始時の初期状態における前記キズ検査部により検出した、前記被検査面の所定の領域におけるキズ検出箇所の個数と一致する場合に、前記撮像回数が前記機械学習開始時の初期状態における前記撮像回数よりも少ないほど前記報酬の値をより大きな値にする、請求項５に記載の機械学習装置。
【請求項７】
前記価値関数更新部により更新された前記行動価値関数に基づいて、前記被検査面の所定の領域における前記キズ検出箇所の個数が、前記所定の撮像点を含む撮像領域を撮像した機械学習開始時の初期状態における前記キズ検査部により検出した、前記被検査面の所定の領域におけるキズ検出箇所の個数と一致する行動情報であって、前記撮像回数が最小となる最適化行動情報を生成する最適化行動情報出力部、を備える請求項５又は請求項６に記載の機械学習装置。
【請求項８】
請求項１から請求項７までのいずれか１項に記載の機械学習装置において、
他の機械学習装置との間で前記行動価値関数を共有し、
前記価値関数更新部が、共有した前記行動価値関数を更新する、機械学習装置。
【請求項９】
請求項１から請求項８のいずれか１項に記載の機械学習装置を備えた、前記ロボット制御システム。
【請求項１０】
被検査物の被検査面に照明光を照射する照明手段と、
前記被検査面を撮像する撮像手段と、
ロボットハンドを備えるロボットと、
前記撮像手段により撮像される複数の画像により前記被検査面が網羅されるように前記被検査面の上に設定される撮像点を含む撮像領域を撮像する移動経路に沿って、前記被検査物又は前記撮像手段を把持する前記ロボットハンドを移動させながら、前記被検査面の上に設定された前記撮像点において前記撮像手段に撮像させる制御部と、
前記撮像点において、前記撮像手段により前記被検査面を撮像した画像に基づいて、前記被検査面の上におけるキズを検出するキズ検査部と、
を備えるロボット制御システムに対して、強化学習を行う機械学習装置による機械学習方法であって、
前記撮像点を含む撮像領域の調整情報を含む行動情報を、前記制御部に対して出力する行動情報出力ステップと、
予め用意された複数の被検査物のそれぞれの被検査物について、前記行動情報に基づいて、前記制御部が前記被検査物又は前記撮像手段を把持する前記ロボットハンドを移動させて、前記撮像手段により前記被検査面を撮像した画像に基づいて、前記キズ検査部により検出したキズ検出箇所を含むキズ検出情報と、撮像回数と、を含む状態情報を前記制御部及び前記キズ検査部から取得する状態情報取得ステップと、
前記状態情報に含まれる前記キズ検出箇所を含むキズ検出情報、及び前記撮像回数に基づいて、強化学習における報酬の値を出力する報酬出力ステップと、
前記報酬の値と、前記状態情報と、前記行動情報と、に基づいて、行動価値関数を更新する価値関数更新ステップと、
を備える機械学習方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機械学習装置、ロボット制御システム及び機械学習方法に関する。
【背景技術】
【０００２】
ロボットにワークかつカメラを持たせてワークのキズ検査を行うことは、例えば特許文献１に記載されているように、従来から行われている。例えば、特許文献１に記載されているように、まず、準備作業として、ロボットに接続された動作処理部に対して検査ルートと複数の撮像地点とを記憶させるティーチングステップを実行する。このようなティーチングステップにおいて、複数の撮像ポイントを登録し、各撮像ポイントにおいてロボットの先端に設けられたＣＣＤカメラが撮像ポイントにおける照明手段からの反射光を検出し、検出した光学情報をパルス信号として出力するように教示することで、検査ルートと複数の撮像ポイントとが動作プログラムとしてロボットに接続された動作処理部のティーチング部に記憶される。
このように、ロボットを使用したキズ検査では、ロボットの位置を教示し、ワークの撮像個所を指定する必要がある。撮像個所の指定方法として、検査したい範囲内を均等に撮像する方法があるが、範囲全体を入念に検査する場合、以下の２点が問題になる。
第１に、キズ検査では小さなキズも見逃さないようにするため、カメラの解像力を上げた状態で検査することが多く、視野サイズを狭めて実施することが多い。このため、１回の撮像で検査できる範囲は狭くなり、狭い間隔で撮像を繰り返す必要がある。第２に、キズの写り方はカメラ・ワーク・照明の位置関係で異なり、これらの位置関係によってはキズを見逃す可能性がある。したがって、キズの見逃しを減らすためには、各個所においてカメラ・ワーク・照明の位置関係を変えながら撮像する必要がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−０１４３５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
このように、ロボットを使用したキズ検査では、小さなキズも見逃さないようにするために、ワークの撮像個所を指定する際に、被検査面全体が細かく撮像されるように撮像点（撮像個所）を決めるとともに、カメラ・照明とワークの位置関係によるキズの写り方を考慮するため、同じ個所においてワークの向きが異なるように（すなわち、照明の方向が異なるように）、複数のロボット位置を教示することが必要となる。
これに対して、ワークの加工条件等により、キズがどこの部位に発生するか（キズの発生部位）、どのような形状（特徴）のキズが発生するか（キズの種類）等に何らかの傾向がある場合が多い。ワークの個所によってキズつきやすさや、機能上・見た目上で求められる検査精度は異なる。このため、例えば、人が検査する場合には、経験を積むことで、注意すべき個所は念入りに見るが、あまり不良が発生しない個所はさっと見るということが可能となる。
ロボットを使用したキズ検査においても、人が検査する場合と同様に、キズが発生する可能性が高い個所は念入りに、キズの発生頻度が少ない個所は簡潔に検査することで、撮像枚数、撮像個所を最適化し、検査のサイクルタイムを短縮することが求められている。
【０００５】
本発明は、係る課題に鑑みなされたものであり、その目的は、ロボットを使用したキズ検査において、キズが発生する可能性が高い個所は念入りに、キズの発生頻度が少ない個所は簡潔に検査することで、撮像枚数、撮像個所を最適化し、検査のサイクルタイムを短縮するための機械学習装置、ロボット制御システム及び機械学習方法を提供することである。
【課題を解決するための手段】
【０００６】
（１）本発明の機械学習装置（例えば、後述の機械学習装置１０）は、被検査物（例えば、後述のワーク５０）の被検査面に照明光を照射する照明手段（例えば、後述の照明２２０）と、前記被検査面を撮像する撮像手段（例えば、後述のカメラ２１０）と、ロボットハンド（例えば、後述のロボットハンド２０１）を備えるロボット（例えば、後述のロボット２００）と、前記撮像手段により撮像される複数の画像により前記被検査面が網羅されるように前記被検査面の上に設定される複数の撮像点を含む撮像領域を撮像する移動経路に沿って、前記被検査物又は前記撮像手段を把持する前記ロボットハンドを移動させながら、前記被検査面の上に設定された前記撮像点において前記撮像手段に撮像させる制御部（例えば、後述の制御装置３００）と、前記撮像点において、前記撮像手段により前記被検査面を撮像した画像に基づいて、前記被検査面の上におけるキズを検出するキズ検査部（例えば、後述のキズ検査装置４００）と、を備えるロボット制御システム（例えば、後述のロボット制御検査システム２０）に対して、強化学習を行う機械学習装置であって、前記撮像点を含む撮像領域の調整情報を含む行動情報を、前記制御部に対して出力する行動情報出力部（例えば、後述の行動情報出力部１３０）と、予め用意された複数の被検査物のそれぞれの被検査物について、前記行動情報に基づいて、前記制御部が前記被検査物又は前記撮像手段を把持する前記ロボットハンドを移動させて、前記撮像手段により前記被検査面を撮像した画像に基づいて、前記キズ検査部により検出した前記被検査面のキズ検出箇所を含むキズ検出情報と、撮像回数と、を含む状態情報を前記制御部及び前記キズ検査部から取得する状態情報取得部（例えば、後述の状態情報取得部１１０）と、前記状態情報に含まれる前記キズ検出箇所を含むキズ検出情報、及び前記撮像回数に基づいて、強化学習における報酬の値を出力する報酬出力部（例えば、後述の報酬算出部１２１）と、前記報酬の値と、前記状態情報と、前記行動情報と、に基づいて、行動価値関数を更新する価値関数更新部（例えば、後述の価値関数更新部１２２）と、を備える。
【０００７】
（２）  （１）に記載の機械学習装置において、前記報酬出力部は、前記キズ検査部により検出したキズ検出箇所の個数が、所定の撮像点を含む撮像領域を撮像した機械学習開始時の初期状態における前記キズ検査部により検出したキズ検出箇所の個数と一致する場合であって、前記撮像回数が前記機械学習開始時の初期状態における前記撮像回数よりも少ない場合に、前記報酬の値を正の値とし、前記キズ検査部により検出したキズ検出箇所の個数が、前記所定の撮像点を含む撮像領域を撮像した機械学習開始時の初期状態における前記キズ検査部により検出したキズ検出箇所の個数よりも少ない場合に、前記報酬の値を負の値としてもよい。
【０００８】
（３）  （２）に記載の機械学習装置において、前記報酬出力部は、前記キズ検査部により検出したキズ検出箇所の個数が、前記所定の撮像点を含む撮像領域を撮像した機械学習開始時の初期状態における前記キズ検査部により検出したキズ検出箇所の個数と一致する場合に、前記撮像回数が前記機械学習開始時の初期状態における前記撮像回数よりも少ないほど前記報酬の値をより大きな値にしてもよい。
【０００９】
（４）  （２）又は（３）に記載の機械学習装置において、前記価値関数更新部により更新された前記行動価値関数に基づいて、前記キズ検出箇所の個数が、前記機械学習開始時の初期状態における前記キズ検査部により検出したキズ検出箇所の個数と一致する行動情報であって、前記撮像回数が最小となる最適化行動情報を生成する最適化行動情報出力部、を備えてもよい。
【００１０】
（５）  （１）に記載の機械学習装置において、前記報酬出力部は、前記キズ検査部により検出した、前記被検査面の所定の領域におけるキズ検出箇所の個数が、所定の撮像点を含む撮像領域を撮像した機械学習開始時の初期状態における前記キズ検査部により検出した、前記被検査面の所定の領域におけるキズ検出箇所の個数と一致する場合であって、撮像回数が前記機械学習開始時の初期状態における撮像回数よりも少ない場合に、前記報酬の値を正の値とし、前記キズ検査部により検出した、前記被検査面の所定の領域におけるキズ検出箇所の個数が、前記所定の撮像点を含む撮像領域を撮像した機械学習開始時の初期状態における前記キズ検査部により検出した、前記被検査面の所定の領域におけるキズ検出箇所の個数よりも少ない場合に、前記報酬の値を負の値としてもよい。
【００１１】
（６）  （５）に記載の機械学習装置において前記報酬出力部は、前記キズ検査部により検出した、前記被検査面の所定の領域におけるキズ検出箇所の個数が、前記所定の撮像点を含む撮像領域を撮像した機械学習開始時の初期状態における前記キズ検査部により検出した、前記被検査面の所定の領域におけるキズ検出箇所の個数と一致する場合に、前記撮像回数が前記機械学習開始時の初期状態における前記撮像回数よりも少ないほど前記報酬の値をより大きな値にしてもよい。
【００１２】
（７）  （５）又は（６）に記載の機械学習装置において、前記価値関数更新部により更新された前記行動価値関数に基づいて、前記被検査面の所定の領域における前記キズ検出箇所の個数が、前記所定の撮像点を含む撮像領域を撮像した機械学習開始時の初期状態における前記キズ検査部により検出した、前記被検査面の所定の領域におけるキズ検出箇所の個数と一致する行動情報であって、前記撮像回数が最小となる最適化行動情報を生成する最適化行動情報出力部（例えば、後述の最適化行動情報出力部１５０）、を備えるようにしてもよい。
【００１３】
（８）  （１）から（７）までのいずれかに記載の機械学習装置において、他の機械学習装置との間で前記行動価値関数を共有し、前記価値関数更新部が、共有した前記行動価値関数を更新するようにしてもよい。
【００１４】
（９）  本発明によるロボット制御システムは、（１）から（８）までのいずれかに記載の機械学習装置を備える。
【００１５】
（１０）  本発明による機械学習方法は、被検査物の被検査面に照明光を照射する照明手段と、前記被検査面を撮像する撮像手段と、ロボットハンドを備えるロボットと、前記撮像手段により撮像される複数の画像により前記被検査面が網羅されるように前記被検査面の上に設定される撮像点を含む撮像領域を撮像する移動経路に沿って、前記被検査物又は前記撮像手段を把持する前記ロボットハンドを移動させながら、前記被検査面の上に設定された前記撮像点において前記撮像手段に撮像させる制御部と、前記撮像点において、前記撮像手段により前記被検査面を撮像した画像に基づいて、前記被検査面の上におけるキズを検出するキズ検査部と、を備えるロボット制御システムに対して、強化学習を行う機械学習装置による機械学習方法であって、前記撮像点を含む撮像領域の調整情報を含む行動情報を、前記制御部に対して出力する行動情報出力ステップと、予め用意された複数の被検査物のそれぞれの被検査物について、前記行動情報に基づいて、前記制御部が前記被検査物又は前記撮像手段を把持する前記ロボットハンドを移動させて、前記撮像手段により前記被検査面を撮像した画像に基づいて、前記キズ検査部により検出したキズ検出箇所を含むキズ検出情報と、撮像回数と、を含む状態情報を前記制御部及び前記キズ検査部から取得する状態情報取得ステップと、前記状態情報に含まれる前記キズ検出箇所を含むキズ検出情報、及び前記撮像回数に基づいて、強化学習における報酬の値を出力する報酬出力ステップと、
前記報酬の値と、前記状態情報と、前記行動情報と、に基づいて、行動価値関数を更新する価値関数更新ステップと、を備える。
【発明の効果】
【００１６】
本発明によれば、ロボットを使用したキズ検査において、キズが発生する可能性が高い個所は念入りに、キズの発生頻度が少ない個所や重要度が低い個所は簡潔に検査することで、撮像枚数、撮像個所を最適化し、検査のサイクルタイムを短縮することができる機械学習装置、ロボット制御システム及び機械学習方法を提供できる。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施形態全体の基本的構成を示すブロック図である。
【図２】本発明の実施形態の機械学習システムの概要図である。
【図３】本発明の実施形態における制御装置３００の機能ブロック図を示す。
【図４Ａ】本発明の実施形態におけるワーク５０の被検査面上に設けられる撮像点と当該撮像点を含む撮像領域の一例を示す図である。
【図４Ｂ】本発明の実施形態におけるワーク５０の被検査面上に設けられる撮像点と当該撮像点を含む撮像領域、及びカメラとの関係を示す図である。
【図４Ｃ】本発明の実施形態におけるワーク５０の被検査面上に設けられる撮像点と当該撮像点におけるワーク５０の向きの一例を示す図である。
【図４Ｄ】本発明の実施形態におけるワーク５０の被検査面上に設けられる撮像点と当該撮像点におけるワーク５０の向きの一例を示す図である。
【図４Ｅ】本発明の実施形態におけるワーク５０の被検査面上に設けられる撮像点と当該撮像点におけるワーク５０の向きの一例を示す図である。
【図５】本発明の実施形態におけるキズ検査装置４００の機能ブロック図を示す。
【図６】本発明の実施形態における機械学習装置１０の機能ブロック図を示す。
【図７】本発明の実施形態における機械学習における行動情報の調整の一例を示す図である。
【図８】本発明の実施形態における機械学習装置の、学習フェーズでの動作について説明するためのフローチャートである。
【図９】本発明の実施形態における機械学習装置の、運用フェーズでの動作について説明するためのフローチャートである。
【発明を実施するための形態】
【００１８】
以下、本発明の実施形態について図面を用いて詳細に説明する。
＜実施形態の全体構成＞
図１は、本実施形態である機械学習システム１の全体構成を示す機能ブロック図である。また、図２は、本発明の実施形態の機械学習システム１の概要図である。図１及び図２に示すように、機械学習システム１は、機械学習装置１０、ロボット制御検査システム２０と、ワーク５０と、を含んで構成される。ロボット制御検査システム２０は、ロボット２００、カメラ２１０、照明２２０、制御装置３００、及びキズ検査装置４００を備えている。ここで、機械学習装置１０と制御装置３００及びキズ検査装置４００とは、図１に示すようにネットワーク７０を介して接続、又は図２に示すように接続インタフェースを介して直接に接続されており、相互に通信を行うことが可能である。なお、ネットワーク７０は、例えば工場内に構築されたＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）や、インターネット、公衆電話網、あるいはこれらの組み合わせである。ネットワーク７０における具体的な通信方式や、優先接続及び無線接続のいずれであるか等については特に限定されない。
【００１９】
機械学習装置１０は、ロボット制御検査システム２０を使用した被検査物としてのワーク５０のキズ検査において、キズが発生する可能性が高い個所は念入りに、キズの発生頻度が少ない個所は簡潔に検査することで、撮像枚数、撮像個所を最適化し、検査のサイクルタイムを短縮するための機械学習を行う装置である。
機械学習装置１０は、例えば、パーソナルコンピュータや、サーバ装置又は数値制御装置（ＣＮＣ：Ｃｏｍｐｕｔｅｒｉｚｅｄ  Ｎｕｍｅｒｉｃａｌ  Ｃｏｎｔｒｏｌ）等により実現できる。機械学習装置１０の詳細については後述する。
【００２０】
ロボット制御検査システム２０について説明する。前述したとおり、ロボット制御検査システム２０は、ロボット２００、カメラ２１０、照明２２０、制御装置３００、及びキズ検査装置４００を備えている。
【００２１】
図２に示すように、ロボット２１０は、様々な位置及び角度に姿勢制御されるロボットハンド２０１を備える。ロボット２００は、例えば、ワーク置き場に用意された複数の被検査物としてのワーク５０を順番に把持し、ロボットハンド２０１は把持したワーク５０の位置姿勢を変更可能とされる。
なお、ワーク５０がその外形形状において複数の被検査面を有する場合、ワーク５０の有する被検査面毎にキズ検査が行われる。この場合、複数の被検査面のそれぞれの被検査面毎にキズ検査すればよい。そこで、本実施形態においては、ワーク５０において所定の被検査面のキズ検査が行われる場合について説明する。
【００２２】
カメラ２１０は、ワーク５０の被検査面を撮像するための撮像手段であり、例えばＣＣＤイメージセンサやＣＭＯＳイメージセンサ等の撮像素子により構成される。カメラ２２０は、支持体２１３により、ロボットハンド２０１により把持されるワーク５０の被検査面を撮像することができるように所定の姿勢で支持される。また、照明２２０は、カメラ２１０と同様に支持体２１３により、ロボットハンド２０１により把持されるワーク５０の被検査面に対して光を当てることができる所定の姿勢で支持される。照明２２０は、例えば、ワーク５０の被検査面の周囲から光を当てるリング照明又はドーム照明、１方向から光を当てるバー照明等、被検査物に応じて適宜構成される。
本実施形態では、光学系を構成するカメラ２１０及び照明２２０は固定された状態で設けられる。すなわち、ロボット制御検査システム２０においては、ロボットハンド２０１の動作によりロボットハンド２０１に把持したワーク５０の位置姿勢を変更することにより、ワーク５０の被検査面上に設定される撮像点を含む撮像領域がカメラ２１０により撮像されるように構成される。
なお、本実施形態では、ワーク５０とカメラ２１０との相対的な位置関係を変化させるために、カメラ２１０を固定して、ワーク５０を移動させるように構成するが、これに限定されない。例えば、ワーク５０を固定して、カメラ２１０をロボットハンド２０１に把持させて、把持したカメラ２１０の位置姿勢を変更可能とするように構成してもよい。
【００２３】
＜制御装置３００＞
制御装置３００は、カメラ２１０により撮像される複数の画像によりワーク５０の被検査面が網羅されるように被検査面の上に設定される複数の撮像点を含む移動経路に沿って、ワーク５０を把持するロボットハンド２０１を移動させながら、ワーク５０の被検査面の上に設定された各撮像点においてカメラ２１０に撮像させる。
より具体的には、例えば特許文献１に記載されているように、ロボット２００に接続された制御装置３００に対して移動経路と複数の撮像点とを記憶させるティーチングステップを実行する。このようなティーチングステップにおいて、複数の撮像点を登録し、各撮像点においてカメラ２１０が撮像点（撮像領域）における照明２２０からの反射光を撮像するように教示することで、移動経路と複数の撮像点（撮像領域）とが動作プログラムとしてロボット２００に接続された制御装置３００に記憶される。そうすることで、制御装置３００は、登録された撮像点がカメラ２１０で撮像する場合の撮像点になるように、ロボットハンド２０１を移動するように動作指示がなされる。
図３は、制御装置３００の機能ブロック図を示す。図３に示すように、制御装置３００は、撮像箇所情報設定部３１０と、移動経路算出部３２０と、移動動作制御部３３０と、撮像制御部３４０と、撮像情報送信部３５０と、を備える。
【００２４】
＜撮像箇所について＞
撮像箇所情報設定部３１０の機能を説明する前に、図４Ａ〜図４Ｅを参照して、撮像箇所について説明する。図４Ａ〜図４Ｅは、（ロボットハンド２０１により把持される）ワーク５０の被検査面とカメラ２１０の光軸（及び照明２２０の照明光）との位置関係を示す図である。
本実施形態では、前述したとおり、光学系を構成するカメラ２１０及び照明２２０は固定された状態で設けられる。すなわち、ロボット制御検査システム２０においては、ロボットハンド２０１の動作によりロボットハンド２０１に把持したワーク５０の位置姿勢を変更することにより、ワーク５０の被検査面上に設定される撮像点を含む撮像領域をカメラ２１０により撮像するように構成される。
ここで、撮像点とは、図４Ａに示すように、カメラ２１０により撮像する際の光軸上に位置する点であり、撮像領域とは、カメラ２１０により撮像される撮像範囲を意味する。また、カメラ２１０から撮像点までの距離が近い場合には、図４Ｂに示す撮像領域１のように撮像領域は狭くなり（視野が狭くなり）、カメラ２１０から撮像点までの距離を離した場合には撮像領域２のように撮像領域は広く（視野が広く）なる。このように、カメラ２１０によりワーク５０の被検査面を撮像する場合、撮像点におけるピントの範囲内において、カメラ２１０から撮像点までの距離を調整することで、撮像回数の増減を図ることが可能となる。
なお、カメラ２１０によりワーク５０の被検査面を撮像する場合、ワーク５０の被検査面に形成されるキズの形状によっては、カメラ２１０及び照明２２０と、ワーク５０の撮像点との位置関係を複数設定することが必要となる。
このため、撮像点を含む撮像領域がカメラ２１０の光軸（及び照明２２０の照明光）に対して、例えば図４Ｃに示すように垂直となる撮像以外に、同じ撮像点において、当該撮像点を含む撮像領域がカメラ２１０の光軸及び照明２２０の照明光に対して垂直でない角度となるように、例えば図４Ｄ又は図４Ｅに示すようにロボットハンド２０１の動作によりロボットハンド２０１に把持したワーク５０の向きを調整することで、キズ検出の精度を高めることができる。
このように、カメラ２１０によりワーク５０の被検査面を撮像する場合、撮像点、カメラ２１０から当該撮像点までの距離、及び当該撮像点におけるワーク５０の向き（以下、これらを「撮像箇所情報」という）を指定することで、ロボットハンド２０１により把持されるワーク５０の被検査面とカメラ２１０の光軸及び照明２２０の照明光との位置関係が一意的に定まるとともに、カメラ２１０により撮像される、被検査面の撮像領域が一意的に定まる。
【００２５】
撮像箇所情報設定部３１０は、ロボットハンド２０１により把持されるワーク５０の被検査面における撮像箇所情報を設定する。なお、撮像箇所情報は、後述するように、機械学習装置１００から出力される行動情報又は最適化行動情報に基づいて設定される。
【００２６】
移動経路算出部３２０は、撮像箇所情報設定部３１０により設定された被検査面における撮像箇所情報により一意的に決定されるロボットハンド２０１により把持されるワーク５０の被検査面とカメラ２１０の光軸及び照明２２０の照明光との位置関係に基づいて、ロボットハンド２０１の移動経路を算出する。
【００２７】
移動動作制御部３３０は、撮像箇所情報設定部３２０により算出されたロボットハンド２０１の移動経路に基づいて、ロボットハンド２０１を移動させることで、撮像箇所情報設定部３１０により設定された撮像箇所情報に含まれる全ての撮像点がカメラ２１０で撮像する場合の撮像点になるようにロボットハンド２０１に把持したワーク５０の被検査面とカメラ２１０の光軸及び照明２２０の照明光との位置関係を満たすように制御される。
【００２８】
撮像制御部３４０は、ロボットハンド２０１が移動動作制御部３３０により撮像箇所情報に含まれる撮像箇所に到達すると、カメラ２１０に対して、照明２２０からの反射光を撮像するように制御する。
【００２９】
撮像情報送信部３５０は、撮像制御部３４０により撮像したワーク５０の画像を撮像箇所情報に含まれる各撮像箇所に紐付けて、キズ検査装置４００に送信する。なお、撮像したワーク５０の画像は、撮像するつど送信することが望ましい。ただし、撮像した画像をまとめてバッチ送信してもよい。
また、撮像情報送信部３５０は、撮像箇所情報及び撮像回数を機械学習装置１０にも送信する。
【００３０】
なお、制御装置３００とロボット２００、カメラ２１０、及び照明２２０とは、それぞれ１対１の組とされて、通信可能に接続されている。なお、制御装置３００とロボット２００、カメラ２１０、及び照明２２０とは、接続インタフェースを介して直接接続されても、また、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等のネットワークを介して接続されてもよい。
【００３１】
＜キズ検査装置４００＞
図５は、キズ検査装置４００の機能ブロック図を示す。図５に示すように、キズ検査装置４００は、撮像情報受信部４１０と、キズ検出部４２０と、キズ検出情報送信部４３０と、を備える。
撮像情報受信部４１０は、ワーク５０の被検査面の、撮像箇所情報に紐付けられたワーク５０の画像を、制御装置３００から受信する。
キズ検出部４２０は、撮像箇所情報に含まれる撮像箇所に紐付けられた画像毎に、ワーク５０のキズの有無を判定する。キズの判定に際しては、例えば、輝度の値に基づいて行ってもよい。ワーク５０のキズを検出した場合、当該ワーク５０において、撮像箇所情報に紐付けられた画像毎にキズ検出箇所（位置情報）及びキズの数を特定する。そして、キズの検出された当該画像における位置情報を例えば、当該ワーク５０の被検査面上の位置情報に変換することで、当該ワーク５０の被検査面上のキズ検出箇所を特定することができる。
キズ検出情報送信部４３０は、キズ検出部４２０により検出されたワーク５０の撮像箇所情報に紐付けられた画像毎のキズ検出箇所（位置情報）及びキズの数、並びに当該ワーク５０の被検査面上に検出された全てのキズの位置情報及びキズの数を含む、キズ検出情報を機械学習装置１０に送信する。なお、キズ検出部４２０によりワーク５０のキズを検出できなかった場合、当該ワーク５０に関するキズ検出無し情報を機械学習装置１０に送信する。
【００３２】
機械学習装置１０は、ロボット制御検査システム２０を使用した被検査物としてのワーク５０のキズ検査において、後述するように、所定の撮像点を含む撮像領域を予め設定し、機械学習開始時の初期状態ｓ０において観測されるワーク５０のキズ検出箇所を含むキズ検出情報を基準として、初期状態ｓ０において観測される検出されたワーク５０のキズ検出情報と同等のキズ情報を検出することのできるように撮像点を含む撮像領域を調整することで、撮像枚数、撮像個所を減らし、検査のサイクルタイムを短縮するための機械学習（強化学習）を行う。
【００３３】
次に、機械学習装置１０に含まれる各機能ブロックの説明に先立って、強化学習の基本的な仕組みについて説明する。
強化学習において、エージェント（本実施形態における機械学習装置１０に相当）は、環境の状態を観測し、ある行動を選択し、当該行動に基づいて環境が変化する。環境の変化に伴って、何らかの報酬が与えられ、エージェントはより良い行動の選択（意思決定）を学習する。
教師あり学習が、完全な正解を示すのに対して、強化学習における報酬は、環境の一部の変化に基づく断片的な値であることが多い。
このため、エージェントは、将来にわたっての報酬の合計を最大にするように行動を選択するように学習する。
【００３４】
このように、強化学習では、行動を学習することにより、環境に行動が与える相互作用を踏まえて適切な行動を学習、すなわち将来的に得られる報酬を最大にするための学習する方法を学ぶ。これは、本実施形態において、例えば、キズが発生する可能性が高い個所は念入りに、キズの発生頻度が少ない個所は簡潔に行うように検査することで、撮像枚数、撮像個所を最適化し、検査のサイクルタイムを短縮するという、未来に影響をおよぼすような行動を獲得できることを表している。
【００３５】
ここで、強化学習としては、任意の学習方法を用いることができるが、以下の説明では、或る環境の状態ｓの下で、行動ａを選択する価値Ｑ（ｓ，ａ）を学習する方法であるＱ学習（Ｑ−ｌｅａｒｎｉｎｇ）を用いる場合を例にとって説明をする。
Ｑ学習では、或る状態ｓのとき、取り得る行動ａのなかから、価値Ｑ（ｓ，ａ）の最も高い行動ａを最適な行動として選択することを目的とする。
【００３６】
しかしながら、Ｑ学習を最初に開始する時点では、状態ｓと行動ａとの組み合わせについて、価値Ｑ（ｓ，ａ）の正しい値は全く分かっていない。そこで、エージェントは、或る状態ｓの下で様々な行動ａを選択し、その時の行動ａに対して、与えられる報酬に基づいて、より良い行動の選択をすることにより、正しい価値Ｑ（ｓ，ａ）を学習していく。
【００３７】
また、将来にわたって得られる報酬の合計を最大化したいので、最終的に価値Ｑ（ｓ，ａ）＝Ｅ［Σ（γｔ）ｒｔ］となるようにすることを目指す。ここでＥ［］は期待値を表し、ｔは時刻、γは後述する割引率と呼ばれるパラメータ、ｒｔは時刻ｔにおける報酬、Σは時刻ｔによる合計である。この式における期待値は、最適な行動にしたがって状態変化した場合の期待値である。しかしＱ学習の過程において、最適な行動が何であるのかは不明であるので、様々な行動を行うことにより、探索しながら強化学習をする。このような価値Ｑ（ｓ，ａ）の更新式は、例えば、次の［数１］により表すことができる。
【００３８】
【数１】
2019007891.tif 000003
【００３９】
上記の式（１）において、ｓｔは、時刻ｔにおける環境の状態を表し、ａｔは、時刻ｔにおける行動を表す。行動ａｔにより、状態はｓｔ＋１に変化する。ｒｔ＋１は、その状態の変化により得られる報酬を表している。また、ｍａｘの付いた項は、状態ｓｔ＋１の下で、その時に分かっている最もＱ値の高い行動ａを選択した場合のＱ値にγを乗じたものになる。ここで、γは、０＜γ≦１のパラメータで、割引率と呼ばれる。また、αは、学習係数で、０＜α≦１の範囲とする。
【００４０】
上述した式（１）は、試行ａｔの結果、返ってきた報酬ｒｔ＋１を元に、状態ｓｔにおける行動ａｔの価値Ｑ（ｓｔ，ａｔ）を更新する方法を表している。
この更新式は、状態ｓｔにおける行動ａｔの価値Ｑ（ｓｔ，ａｔ）よりも、行動ａｔによる次の状態ｓｔ＋１における最良の行動の価値ｍａｘａ  Ｑ（ｓｔ＋１，ａ）の方が大きければ、価値Ｑ（ｓｔ，ａｔ）を大きくし、逆に小さければ、価値Ｑ（ｓｔ，ａｔ）を小さくすることを示している。つまり、或る状態における或る行動の価値を、それによる次の状態における最良の行動の価値に近づける。ただし、その差は、割引率γと報酬ｒｔ＋１のあり方により変わってくるが、基本的には、ある状態における最良の行動の価値が、それに至る１つ前の状態における行動の価値に伝播していく仕組みになっている。
【００４１】
ここで、Ｑ学習では、すべての状態行動ペア（ｓ，ａ）についての価値Ｑ（ｓ，ａ）のテーブルを作成して、学習を行う方法がある。しかし、すべての状態行動ペアの価値Ｑ（ｓ，ａ）の値を求めるには状態数が多すぎて、Ｑ学習が収束するのに多くの時間を要してしまう場合がある。
【００４２】
そこで、公知のＤＱＮ（Ｄｅｅｐ  Ｑ−Ｎｅｔｗｏｒｋ）と呼ばれる技術を利用するようにしてもよい。具体的には、価値関数Ｑを適当なニューラルネットワークを用いて構成し、ニューラルネットワークのパラメータを調整することにより、価値関数Ｑを適当なニューラルネットワークで近似することにより価値Ｑ（ｓ，ａ）の値を算出するようにしてもよい。ＤＱＮを利用することにより、Ｑ学習が収束するのに要する時間を短くすることが可能となる。なお、ＤＱＮについては、例えば、以下の非特許文献に詳細な記載がある。
【００４３】
＜非特許文献＞
「Ｈｕｍａｎ−ｌｅｖｅｌ  ｃｏｎｔｒｏｌ  ｔｈｒｏｕｇｈ  ｄｅｅｐ  ｒｅｉｎｆｏｒｃｅｍｅｎｔ  ｌｅａｒｎｉｎｇ」、Ｖｏｌｏｄｙｍｙｒ  Ｍｎｉｈ１著［ｏｎｌｉｎｅ］、［平成２９年３月１７日検索］、インターネット〈ＵＲＬ：ｈｔｔｐ：／／ｆｉｌｅｓ．ｄａｖｉｄｑｉｕ．ｃｏｍ／ｒｅｓｅａｒｃｈ／ｎａｔｕｒｅ１４２３６．ｐｄｆ〉
【００４４】
以上、説明したＱ学習を機械学習装置１０が行う。
具体的には、機械学習装置１０は、予め用意された複数のワーク５０（以下、「学習用ワーク」という）のそれぞれについて、制御装置３００（撮像情報送信部３５０）から送信される撮像箇所情報と、キズ検査装置４００（キズ検出情報送信部４３０）から送信される、当該撮像箇所情報に係る撮像箇所におけるキズ検出箇所を含むキズ検出情報と、により特定される状態を環境状態ｓとして観測し、当該環境状態ｓにて、撮像箇所情報（撮像点と撮像領域）の調整を行動ａとして選択して、価値Ｑを学習する。
すなわち、本実施形態における機械学習は、ワーク５０の全てについて学習することは実質的に困難なため、予め用意された複数の学習用ワーク５０のそれぞれにおいて検出されるキズ検出情報の集合に基づいて、同じワーク５０においてキズの発生し易い個所や、キズの見つかりやすい角度や位置がキズのパターンを特定されること（いわゆる標本調査）を前提としている。したがって、複数の学習用ワーク５０を用意するにあたっては、標本（複数の学習用ワーク５０）が当該ワーク５０の母集団全体の特徴をよく表したものになるように、つまり、母集団のよい縮図となるように抽出するものとすることが望ましい。以下、学習用ワーク５０の個数をＭ個とし、各学習用ワーク５０は、インデックスｋ（１≦ｋ≦Ｍ）で識別する。
【００４５】
機械学習装置１０は、価値Ｑの学習のために、行動ａをするたびに報酬を算出する。そして、機械学習装置１０は、例えば、将来にわたっての報酬の合計が最大になるように最適な行動ａを試行錯誤的に探索する。そうすることで、機械学習装置１０は、環境状態ｓに対して、最適な行動ａを選択することが可能となる。
【００４６】
この際、機械学習装置１０が、各環境状態ｓにおいて観測されるキズ検出情報に洩れが無いかどうかを判定するために、機械学習を始めるに際して、当該複数のワーク５０について、正確なキズ検出情報を検出しておく必要がある。
このため、機械学習装置１０は、初期状態ｓ０を予め設定し、初期状態ｓ０において観測されるキズ検出情報を基準として、機械学習開始後における各状態ｓにおけるキズ検出情報を判定するように構成される。そして、行動ａをするたびに算出される報酬は、状態ｓにおけるキズ検出情報の判定に基づいて算出される。
【００４７】
このようにして機械学習装置１０は、価値関数Ｑを学習する。そして、学習した価値関数Ｑに基づいて、或る状態ｓに対して適用される行動ａのうち、Ｑの値が最大となるような行動ａを選択することで、例えば、初期状態ｓ０おいて観測されるキズ検出情報と同じキズ検出情報を検出することのできる、最適な撮像箇所情報（撮像点と撮像領域）を得ることができる。
【００４８】
＜機械学習装置１０の機能ブロック＞
次に、図６を参照して、上述した強化学習を行う機械学習装置１０の機能ブロックについて説明をする。
図６に示すように、機械学習装置１０は、状態情報取得部１１０、学習部１２０、行動情報出力部１３０、価値関数記憶部１４０、及び最適化行動情報出力部１５０を備える。また、学習部１２０は報酬算出部１２１、価値関数更新部１２２、及び行動情報生成部１２３を備える。
【００４９】
状態情報取得部１１０は、制御装置３００に設定された撮像箇所情報（撮像点と撮像領域）と、撮像回数と、キズ検査装置４００により検出される学習用ワーク５０（ｋ）（１≦ｋ≦Ｍ）のキズ検出情報と、を含む状態情報ｓを、それぞれ制御装置３００及びキズ検査装置４００から取得する。この状態情報ｓは、Ｑ学習における環境状態ｓに対応する。
状態情報取得部１１０は、取得した状態情報ｓを学習部１２０に対して出力する。
【００５０】
＜初期状態ｓ０における撮像箇所情報＞
機械学習装置１０が機械学習を始めるにあたって、初期状態ｓ０は、例えば次のように設定される。
例えば図４Ａに示すように、検査漏れやキズの見逃しが無いように、初期状態ｓ０に含まれる撮像箇所情報の示す撮像箇所は、撮像領域を狭くし、ワーク５０の被検査面が均等に撮像されるように撮像点を細かく設定することが好ましい。この際、例えば各撮像点の撮像領域が近傍の撮像点の撮像領域と重なるように撮像点及び撮像領域を設定してもよい。さらに、図４Ｃ〜図４Ｅに示したように、カメラ２１０及び照明２２０と学習用ワーク５０の被検査面との位置関係によるキズの写り方を考慮するため、同じ撮像点において、学習用ワーク５０の向きが異なるように複数の向きを設定することが好ましい。なお、本実施形態では、撮像点及び撮像領域について、図４Ａに示すように均等に設定するように設定したが、これに限定されない。検査漏れやキズの見逃しが無いように、全体を細かく撮像できればよく、撮像点及び撮像領域は均等でなくともよい。
ここで、初期状態ｓ０に含まれる撮像箇所情報に対応する撮像箇所（撮像点、カメラ２１０から当該撮像点までの距離、及び当該撮像点における学習用ワーク５０の向き）をインデックスにより識別する。
すなわち、初期状態ｓ０において、Ｎ個の撮像点（ｉ）（１≦ｉ≦Ｎ）が設定され、撮像点（ｉ）におけるカメラ２１０から当該撮像点までの設定された距離をＤ（ｉ）とし、撮像点（ｉ）における学習用ワーク５０の向きＲ（ｉ，ｊ）とする。ここで、撮像点（ｉ）における学習用ワーク５０の向きは、１以上のｎ（ｉ）個数分定義されているとする（１≦ｊ≦ｎ（ｉ））。
そうすると、前述したように、撮像点（ｉ）における各撮像領域（ｉ，ｊ）｛１≦ｉ≦Ｎ，１≦ｊ≦ｎ（ｉ）｝は、撮像点（ｉ）、カメラ２１０から撮像点（ｉ）までの設定された距離をＤ（ｉ）、及び撮像点（ｉ）における学習用ワーク５０の向きＲ（ｉ，ｊ）により一意的に決まる。
【００５１】
＜初期状態ｓ０におけるキズ検出情報＞
初期状態ｓ０におけるキズ検出情報は、各学習用ワーク５０（ｋ）（１≦ｋ≦Ｍ）に対して、初期状態ｓ０に含まれる撮像領域（ｉ，ｊ）｛１≦ｉ≦Ｎ，１≦ｊ≦ｎ（ｉ）｝毎に検出される。
初期状態ｓ０におけるキズ検出情報は、学習用ワーク５０（ｋ）毎に検出された被検査面上の全てのキズの位置情報及びキズの数を含むキズ検出情報を、キズ検出テーブル＿初期状態ｓ０として記憶部（図示せず）に記憶する。
なお、後述する機械学習（強化学習）により、前述した初期状態ｓ０に含まれる撮像領域（ｉ，ｊ）｛１≦ｉ≦Ｎ，１≦ｊ≦ｎ（ｉ）｝を調整することで、初期状態ｓ０におけるキズ検査と同等の精度を有し、かつ撮像回数が最小となるような、撮像点及び撮像領域を求めることができる。より具体的には、状態ｓにおいて、学習用ワーク５０（ｋ）毎に検出された被検査面上の全てのキズの位置情報及びキズの数を含むキズ検出情報を、キズ検出テーブル＿状態ｓとして記憶部（図示せず）に記憶する。
【００５２】
学習部１２０は、或る環境状態ｓの下で、ある行動ａを選択する場合の価値Ｑ（ｓ，ａ）を学習する部分である。この学習を行うために、学習部１２０は、報酬算出部１２１、価値関数更新部１２２及び行動情報生成部１２３を備える。
【００５３】
報酬算出部１２１は、或る状態ｓの下で、行動ａを選択した場合の報酬を算出する。行動ａを実行した場合の状態をｓ´とする。
報酬算出部１２１は、キズ検出テーブル＿状態ｓ´と、キズ検出テーブル＿初期状態ｓ０と、を学習用ワーク５０（ｋ）毎に比較することで、状態ｓ´に含まれるキズ検出情報と、初期状態ｓ０に含まれるキズ検出情報と、が同じ検出結果（例えば、学習用ワーク５０（ｋ）の被検査面におけるキズ検出箇所の個数が同じ結果）を示しているかどうか判断し、同じ検出結果を示している場合であって、かつ状態ｓ´に含まれる撮像回数が、初期状態ｓ０における撮像回数よりも少ない場合に、報酬ｒの値を正の値とする。より具体的には、報酬算出部１２１は、キズ検出テーブル＿状態ｓと、キズ検出テーブル＿初期状態ｓ０と、を学習用ワーク５０（ｋ）毎に比較することで、同じ検出結果かどうかを判断する。
なお、状態ｓ´に含まれる学習用ワーク５０（ｋ）のキズ検出情報と、初期状態ｓ０に含まれる学習用ワーク５０（ｋ）のキズ検出情報と、が同じ検出結果（例えば、学習用ワーク５０（ｋ）の被検査面におけるキズ検出箇所の個数が同じ結果）を示している場合であって、かつ状態ｓ´に含まれる撮像回数が、初期状態ｓ０における撮像回数と等しい場合に、報酬ｒの値をゼロとする。
逆に、状態ｓ´に含まれる学習用ワーク５０（ｋ）のキズ検出情報が、初期状態ｓ０に含まれる学習用ワーク５０（ｋ）のキズ検出情報よりも少ない場合（例えば、学習用ワーク５０（ｋ）の被検査面におけるキズ検出箇所の個数が少ない場合）報酬ｒの値を負の値とする。なお、本実施形態における学習は、キズ検出情報が同じとなることを前提としていることから、報酬が負の値になるような行動は選択されないようにすることが望ましい。このため、負の値としては、例えば大きな負の値としてもよい。
なお、状態ｓ´に含まれる学習用ワーク５０（ｋ）のキズ検出情報と、初期状態ｓ０に含まれる学習用ワーク５０（ｋ）のキズ検出情報と、が同じ検出結果（例えば、ワーク５０の被検査面におけるキズ検出箇所の個数が同じ結果）を示している場合、状態ｓ´の撮像回数が初期状態ｓ０における撮像回数よりも少ないほど報酬ｒの値をより大きな値にしてもよい。
【００５４】
価値関数更新部１２２は、状態ｓと、行動ａと、行動ａを状態ｓに適用した場合の状態ｓ´と、上記のようにして算出された報酬の値と、に基づいてＱ学習を行うことにより、価値関数記憶部１４０が記憶する価値関数Ｑを更新する。
【００５５】
価値関数Ｑの更新は、オンライン学習で行ってもよく、バッチ学習で行ってもよく、ミニバッチ学習で行ってもよい。
オンライン学習とは、或る行動ａを現在の状態ｓに適用することにより、状態ｓが新たな状態ｓ´に遷移する都度、即座に価値関数Ｑの更新を行うという学習方法である。また、バッチ学習とは、或る行動ａを現在の状態ｓに適用することにより、状態ｓが新たな状態ｓ´に遷移することを繰り返すことにより、学習用のデータを収集し、収集した全ての学習用データを用いて、価値関数Ｑの更新を行うという学習方法である。さらに、ミニバッチ学習とは、オンライン学習と、バッチ学習の中間的な、ある程度学習用データが溜まるたびに価値関数Ｑの更新を行うという学習方法である。
【００５６】
行動情報生成部１２３は、現在の状態ｓに対して、Ｑ学習の過程における行動ａを選択する。行動情報生成部１２３は、Ｑ学習の過程において、撮像回数を減少させる行動ａを生成する。例えば、図７に示すように、行動情報生成部１２３は、キズ検出テーブル＿初期状態ｓ０においてほとんど全ての学習用ワーク５０（ｋ）（１≦ｋ≦Ｍ）で、キズ検出箇所の出ていない撮像箇所については、ピントの合う範囲で、カメラ２１０から撮像点までの距離を大きくするように調整する行動ａを生成するようにしてもよい。視野が広くなることで、他の撮像箇所をカバーする場合は、撮像箇所数を減少させることができる。
より具体的には、前述したように、初期状態ｓ０における学習用ワーク５０（ｋ）（１≦ｋ≦Ｍ）のキズ検出情報は、初期状態ｓ０に含まれる撮像領域（ｉ，ｊ）｛１≦ｉ≦Ｎ，１≦ｊ≦ｎ（ｉ）｝毎に検出される。
行動ａは、初期状態ｓ０に含まれる撮像領域（ｉ，ｊ）｛１≦ｉ≦Ｎ，１≦ｊ≦ｎ（ｉ）｝を調整することで生成することができる。
すなわち、例えば、撮像点（ｉ）において、複数の向き（≦ｎ（ｉ））により同じキズを検出することが可能な場合、向きを限定するように調整する行動ａを生成してもよい。
また、例えば、図７に示すように、複数の撮像領域において学習用ワーク５０（ｋ）（１≦ｋ≦Ｍ）のキズ検出箇所がほとんど出ていない場合、複数の撮像領域に含まれる撮像点（ｉ）を選択して、ピントの合う範囲で、カメラ２１０から、撮像点（ｉ）までの距離を大きくするように調整する行動ａを生成するようにしてもよい。撮像点（ｉ）を含む撮像領域を広げることで、撮像点（ｉ）の近傍に位置する撮像点（ｌ）における撮像を省略して、撮像箇所数を減少させる行動ａを生成することができる。
また、行動情報生成部１２３は、行動ａをランダムに選択するという方策を取るようにしてもよい。他にも、現在の推定される行動ａの価値の中で、最も価値Ｑ（ｓ，ａ）の高い行動ａを選択するグリーディ法や、ある小さな確率εでランダムに行動ａを選択し、それ以外では最も価値Ｑ（ｓ，ａ）の高い行動ａを選択するεグリーディ法といった公知の方法により、行動ａを選択する方策を取るようにしてもよい。
【００５７】
行動情報出力部１３０は、学習部１２０から出力される行動情報ａを制御装置３００の撮像箇所設定部３１０に対して送信する。そうすることで、ロボット制御検査システム２０は、次の状態ｓ´（すなわち修正された撮像箇所情報に基づく、撮像箇所における撮像と当該撮像された画像を利用したキズ検出）に遷移する。
【００５８】
＜行動ａの生成タイミングについて＞
ここで、行動情報算出部１３０の行動ａを生成するタイミングについて説明する。本実施形態においては、（状態ｓに含まれる）全ての学習用ワーク５０（ｋ）（１≦ｋ≦Ｍ）のキズ検出情報と初期状態ｓ０に含まれる全ての学習用ワーク５０（ｋ）（１≦ｋ≦Ｍ）のキズ検出情報とを比較することで、より効果的な行動ａを生成することができることから、行動情報算出部１３０は、（状態ｓに含まれる）全ての学習用ワーク５０（ｋ）（１≦ｋ≦Ｍ）のキズ検出情報取得後に、行動ａを生成するように構成される。
これに対して、前述したように、情報作成報酬算出部１２１は、今回の状態ｓに含まれる、任意のｍ（１≦ｍ≦Ｍ）における学習用ワーク５０（ｍ）のキズ検出箇所が、初期状態ｓ０に含まれる当該学習用ワーク５０（ｍ）のキズ検出箇所よりも少ない場合、それ以降の学習用ワーク５０（ｋ）（ｋ＞ｍ）のキズ検出情報の如何に関わらず、報酬を負の値にすることができる。
したがって、行動情報算出部１３０は、今回の状態ｓに含まれる、任意のｍ（１≦ｍ≦Ｍ）における学習用ワーク５０（ｍ）のキズ検出箇所が、初期状態ｓ０に含まれる当該学習用ワーク５０（ｍ）のキズ検出箇所よりも少ない場合、それ以降の学習用ワーク５０（ｋ）（ｋ＞ｍ）のキズ検出情報の如何に関わらず、行動ａを生成するようにしてもよい。そうすることで、今回の状態ｓにおける、学習用ワーク５０（ｋ）（ｋ＞ｍ）のキズ検出作業を省略させて、行動情報出力部１３０により、次の状態ｓ´（すなわち修正された撮像箇所情報に基づく、撮像箇所における撮像と当該撮像された画像を利用したキズ検出）に遷移するようにしてもよい。それにより、機械学習時間を短縮することができる。
【００５９】
価値関数記憶部１４０は、価値関数Ｑを記憶する記憶装置である。価値関数Ｑは、例えば状態ｓ、行動ａ毎にテーブルとして格納してもよい。価値関数記憶部１４０に記憶された価値関数Ｑは、価値関数更新部１２２により更新される。また、価値関数記憶部１４０に記憶された価値関数Ｑは、他の機械学習装置１００との間で共有されるようにしてもよい。価値関数Ｑを複数の機械学習装置１００で共有するようにすれば、各機械学習装置１００にて分散して強化学習を行うことが可能となるので、強化学習の効率を向上させることが可能となる。
【００６０】
最適化行動情報出力部１５０は、価値関数更新部１２２がＱ学習を行うことにより更新した価値関数Ｑに基づいて、価値Ｑ（ｓ，ａ）が最大となる、撮像箇所情報を調整する行動情報ａ（以下、「最適化行動情報」と呼ぶ）を生成する。
【００６１】
より具体的には、最適化行動情報出力部１５０は、価値関数記憶部１４０が記憶している価値関数Ｑを取得する。この価値関数Ｑは、上述したように価値関数更新部１２２がＱ学習を行うことにより更新したものである。そして、最適化行動情報出力部１５０は、価値関数Ｑと、初期状態ｓ０とに基づいて、最適化行動情報を生成し、生成した最適化行動情報をロボット制御検査システム２０に対して出力する。この最適化行動情報には、行動情報出力部１３０がＱ学習の過程において出力する行動情報と同様に、撮像箇所情報を調整する行動情報が含まれる。
【００６２】
ロボット制御検査システム２０では、この最適化行動情報に基づいて撮像箇所情報（撮像点と撮像領域）が修正される。
以上のように、機械学習装置１０を利用することで、ロボット制御検査システム２０における、撮像枚数、撮像個所を最適化することが可能となる。
【００６３】
以上、機械学習装置１０、制御装置３００、及びキズ検査装置４００に含まれる機能ブロックについて説明した。
これらの機能ブロックを実現するために、機械学習装置１０、制御装置３００、及びキズ検査装置４００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等の演算処理装置を備える。また、機械学習装置１０、制御装置３００、及びキズ検査装置４００は、アプリケーションソフトウェアやＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）等の各種の制御用プログラムを格納したＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等の補助記憶装置や、演算処理装置がプログラムを実行する上で一時的に必要とされるデータを格納するためのＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）といった主記憶装置も備える。
【００６４】
そして、機械学習装置１０、制御装置３００、及びキズ検査装置４００は、演算処理装置が補助記憶装置からアプリケーションソフトウェアやＯＳを読み込み、読み込んだアプリケーションソフトウェアやＯＳを主記憶装置に展開させながら、これらのアプリケーションソフトウェアやＯＳに基づいた演算処理を行う。また、機械学習装置１０、制御装置３００、及びキズ検査装置４００は、この演算結果に基づいて、各装置が備える各種のハードウェアを制御する。これにより、本実施形態の機能ブロックは実現される。つまり、本実施形態は、ハードウェアとソフトウェアが協働することにより実現することができる。
【００６５】
具体例として、機械学習装置１０は、一般的なパーソナルコンピュータに、本実施形態を実現するためのアプリケーションソフトウェアを組み込むことより実現できる。また、制御装置３００は、一般的なロボット１００の制御装置に本実施形態を実現するためのアプリケーションソフトウェアを組み込むことにより実現できる。また、キズ検査装置４００は、一般的なパーソナルコンピュータに、本実施形態を実現するためのアプリケーションソフトウェアを組み込むことより実現できる。
【００６６】
なお、機械学習装置１０については、機械学習に伴う演算量が多いため、例えば、パーソナルコンピュータにＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔｓ）を搭載し、ＧＰＧＰＵ（Ｇｅｎｅｒａｌ−Ｐｕｒｐｏｓｅ  ｃｏｍｐｕｔｉｎｇ  ｏｎ  Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔｓ）と呼ばれる技術により、ＧＰＵを機械学習に伴う演算処理に利用するようにすると、高速処理できるようになるのでよい。さらには、より高速な処理を行うために、機械学習装置１０は、このようなＧＰＵを搭載したコンピュータを複数台用いてコンピュータ・クラスターを構築し、このコンピュータ・クラスターに含まれる複数のコンピュータにて並列処理を行うようにしてもよい。
【００６７】
次に、図８のフローチャートを参照してＱ学習時の機械学習装置１０について説明をする。なお、ステップＳ１１の開始前に、標本としての複数の学習用ワーク５０（ｋ）（１≦ｋ≦Ｍ）、初期状態ｓ０に含まれる撮像箇所情報は事前に設定され、また初期状態ｓ０におけるキズ検出情報は、検出され、キズ検出テーブル＿初期状態ｓ０として記憶部（図示せず）に記憶されているものとする。
【００６８】
ステップＳ１１において、状態情報取得部１１０が制御装置３００に設定された撮像箇所情報と、キズ検査装置４００により検出される学習用ワーク５０（ｋ）（１≦ｋ≦Ｍ）のキズ検出情報と、を含む状態情報ｓを取得する。取得した状態情報は、価値関数更新部１２２や行動情報生成部１２３に対して出力される。上述したように、この状態情報ｓは、Ｑ学習における環境状態ｓに相当する情報である。
【００６９】
ステップＳ１２において、行動情報生成部１２３は新たな行動情報ａを生成し、生成した新たな行動情報ａを、行動情報出力部１３０を介して制御装置３００の撮像箇所設定部３１０に対して出力する。行動情報生成部１２３は前述した方策に基づいて、新たな行動情報ａを出力する。なお、行動情報ａを受信した制御装置３００は、受信した行動情報ａに基づいて現在の状態ｓに係る撮像箇所情報を修正した状態ｓ´により、ロボット制御検査システム２０に学習用ワーク５０（ｋ）（１≦ｋ≦Ｍ）のキズ検査プロセスを実行させる。上述したように、この行動情報は、Ｑ学習における行動ａに相当するものである。
【００７０】
ステップＳ１３において、状態情報取得部１１０は、ロボット制御検査システム２０から新たな状態ｓ´における状態情報ｓ´を取得する。
取得した状態情報ｓ´は、報酬算出部１２１に対して出力される。
【００７１】
ステップＳ１４において、報酬算出部１２１は、初期状態ｓ０に含まれるキズ検出情報及び撮像回数と、今回の状態情報ｓ´に含まれるキズ検出情報及び撮像回数と、に基づいて報酬の算出を行う。
【００７２】
ステップＳ１５において、報酬が正の値となったか、負の値となったか、あるいはゼロとなったかを判定する。
【００７３】
報酬が正の値となった場合は、ステップＳ１６に進む。そして、ステップＳ１６にて報酬として正の値を価値関数更新部１２２に対して出力する。
報酬がゼロとなった場合は、ステップＳ１７に進む。そして、ステップＳ１７にて報酬としてゼロを価値関数更新部１２２に対して出力する。
報酬が負の値となった場合は、ステップＳ１８に進む。そして、ステップＳ１８にて報酬として負の値を価値関数更新部１２２に対して出力する。
ステップＳ１６、ステップＳ１７及びステップＳ１８の何れかが終了すると、処理はステップＳ１９に進む。
【００７４】
ステップＳ１９において、ステップＳ１６、ステップＳ１７及びステップＳ１８の何れかのステップにて出力された報酬の値に基づいて、価値関数更新部１２２が、価値関数記憶部１４０に記憶している価値関数Ｑを更新する。なお、ステップＳ１９はオンライン更新を例示しているが、オンライン更新に替えてバッチ更新又はミニバッチ更新に置き換えてもよい。
【００７５】
ステップＳ２０において、学習部１２０は、強化学習を終了する条件が満たされたか否かを判定する。強化学習を終了する条件は、例えば上述した処理を、所定回数繰り返したことや、所定時間繰り返したこととする。未だ強化学習を終了する条件が満たされていない場合には、ステップＳ２０においてＮｏと判定され、処理は再度ステップＳ１１に戻る。そして、上述した処理を繰り返すことにより、価値関数Ｑは適切な値に収束していく。
一方で、強化学習を終了する条件が満たされた場合には、ステップＳ２０においてＹｅｓと判定され、処理は終了する。
【００７６】
以上、図８を参照して説明した動作により、本実施形態では、機械学習装置１００を利用することで、撮像枚数、撮像個所を最適化するための、価値関数を得ることができる。
【００７７】
次に、図９のフローチャートを参照して、最適化行動情報出力部１５０による最適化行動情報の生成時の動作について説明をする。
まず、ステップＳ３１において、状態情報取得部１１０がロボット制御検査システム２０から状態情報ｓを取得する。
【００７８】
ステップＳ３２において、最適化行動情報出力部１５０は、価値関数記憶部１４０に記憶している価値関数Ｑを取得する。価値関数Ｑは、上述したように価値関数更新部１２２がＱ学習を行うことにより更新したものである。
【００７９】
ステップＳ３３において、最適化行動情報出力部１５０は、ステップＳ３１において取得した状態情報ｓに含まれる撮像箇所情報と、ステップＳ３２において取得した価値関数Ｑとに基づいて、最適化行動情報を生成する。そして、最適化行動情報出力部１５０は、生成した最適化行動情報をロボット制御検査システム２０（制御装置３００）の撮像箇所設定部３１０に対して出力する。この最適化行動情報は、撮像枚数、撮像個所を最適化するための情報である。
【００８０】
ロボット制御検査システム２０では、この最適化行動情報に基づいて、撮像枚数、撮像個所を最適化し、検査のサイクルタイムを短縮する。
以上のように、本発明に係る機械学習装置１０を利用することで、キズが発生する可能性が高い個所は念入りに、キズの発生頻度が少ない個所や重要度が低い個所は簡潔に検査することで、撮像枚数、撮像個所を最適化し、検査のサイクルタイムを短縮することが可能となる。
【００８１】
＜ハードウェアとソフトウェアの協働＞
なお、上記の機械学習システム１に含まれる各装置のそれぞれは、ハードウェア、ソフトウェア又はこれらの組み合わせにより実現することができる。また、上記の機械学習システム１に含まれる各装置のそれぞれにより行なわれる機械学習方法も、ハードウェア、ソフトウェア又はこれらの組み合わせにより実現することができる。ここで、ソフトウェアによって実現されるとは、コンピュータがプログラムを読み込んで実行することにより実現されることを意味する。
【００８２】
プログラムは、様々なタイプの非一時的なコンピュータ可読媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（ｔａｎｇｉｂｌｅ  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えば、フレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば、光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００８３】
また、上述した実施形態は、本発明の好適な実施形態ではあるが、上記実施形態のみに本発明の範囲を限定するものではなく、本発明の要旨を逸脱しない範囲において種々の変更を施した形態での実施が可能である。
【００８４】
＜変形例１＞
上述した本実施形態においては、初期状態ｓ０に含まれる撮像領域（ｉ，ｊ）｛１≦ｉ≦Ｎ，１≦ｊ≦ｎ（ｉ）｝を調整することで、初期状態ｓ０におけるキズ検査と同等の精度を有し、かつ撮像回数が最小となるような撮像点及び撮像領域を求める機械学習を行った。これに対して、被検査面の所定の領域におけるキズ検査について、初期状態ｓ０におけるキズ検査と同等の精度を有し、かつ撮像回数が最小となるような撮像点及び撮像領域を求める機械学習をするようにしてもよい。
この場合、報酬算出部１２１は、キズ検査装置４００により検出した、被検査面の所定の領域（例えば、重要度の低い個所を除いた領域）におけるキズ検出箇所の個数が、機械学習開始時の初期状態ｓ０におけるキズ検査装置４００により検出した、被検査面の所定の領域におけるキズ検出箇所の個数と一致する場合であって、撮像回数が初期状態ｓ０における撮像回数よりも少ない場合に、報酬の値を正の値とし、キズ検査装置４００により検出した、被検査面の所定の領域におけるキズ検出箇所の個数が、機械学習開始時の初期状態ｓ０におけるキズ検査装置４００により検出した、被検査面の所定の領域におけるキズ検出箇所の個数よりも少ない場合に、報酬の値を負の値とするようにすることができる。そうすることで、被検査面の所定の領域におけるキズ検査について、初期状態ｓ０におけるキズ検査と同等の精度を有し、かつ撮像回数が最小となる最適化を行うことができる。
【００８５】
＜変形例２＞
上述した実施形態では、キズの判定に際しては、例えば、予め設定される輝度の値に基づいて行ったが、これに限定されない。例えば、ワーク５０の被検査面上のキズの判定方法として、同じ光学条件で、撮像したキズ無しワーク５０の画像と比較することで、キズの判定を行うことができる。
この方法を適用する場合は、例えば、次のようにすることができる。すなわち、複数の学習用ワーク５０（ｋ）（１≦ｋ≦Ｍ）を用意するにあたって、１個以上のキズ無しワーク５０を用意することで、状態ｓにおいて、１個以上のキズ無しワーク５０を撮像した画像を基準として、学習用ワーク５０（ｋ）（１≦ｋ≦Ｍ）を撮像した画像との差分を評価することで、同じ光学条件で、状態ｓにおけるキズ検出を行うことができる。
【００８６】
＜変形例３＞
上述した実施形態では、報酬算出部１２１は、報酬が正の値の場合に撮像回数がより少ないほど、報酬の値をより大きくしたが、これに限定されない。例えば、報酬算出部１２１は、報酬が正の値の場合にワークの検査に係るサイクルタイムがより小さいほど、報酬の値をより大きくしてもよい。
【００８７】
＜変形例４＞
上述した実施形態では、機械学習装置１０を、制御装置３００やキズ検査装置４００とは別体の装置により実現することを想定したが、機械学習装置１０の機能の一部又は全部を、例えば、制御装置３００やキズ検査装置４００により実現するようにしてもよい。
【００８８】
＜変形例５＞
上述した実施形態では、機械学習装置１０を、学習を行う機能と、行動情報を生成する機能とを有するものとしたが、学習を行う機能と、行動情報を生成する機能とを別の装置で行うようにしてもよい。
【００８９】
＜変形例６＞
上述した実施形態では、機械学習装置１０と制御装置３００とが１対１の組として通信可能に接続されているが、例えば１台の機械学習装置１０が複数の制御装置３００とネットワーク７０を介して通信可能に接続され、各制御装置３００の機械学習を実施するようにしてもよい。
その際、機械学習装置１０の各機能を、適宜複数のサーバに分散する、分散処理システムとしてもよい。また、クラウド上で仮想サーバ機能等を利用して、機械学習装置１０の各機能を実現してもよい。
また、複数の同じ型名、同一仕様、又は同一シリーズの制御装置３００−１〜３００−ｎにそれぞれ、同一のロボット２００が接続されている場合に、各機械学習装置１０−１〜１０−ｎにおける学習結果を共有するように構成するようにしてもよい。そうすることで、より最適なモデルを構築することが可能となる。
【符号の説明】
【００９０】
１    機械学習システム
１０  機械学習装置
１１０  状態情報取得部
１２０  学習部
１２１  報酬算出部
１２２  価値関数更新部
１２３  行動情報生成部
１３０  行動情報出力部
１４０  価値関数記憶部
１５０  最適化行動情報出力部
２０  ロボット制御検査システム
２００  ロボット
２０１  ロボットハンド
２１０  カメラ
２１３  支持体
２２０  照明
３００  制御装置
３１０  撮像箇所情報設定部
３２０  移動経路算出部
３３０  移動動作制御部
３４０  撮像制御部
３５０  撮像情報送信部
４００  キズ検査装置
４１０  撮像情報受信部
４２０  キズ検出部
４３０  キズ検出情報送信部
５０  ワーク
７０  ネットワーク
【図１】
2019007891.tif 000004
【図２】
2019007891.tif 000005
【図３】
2019007891.tif 000006
【図４Ａ】
2019007891.tif 000007
【図４Ｂ】
2019007891.tif 000008
【図４Ｃ】
2019007891.tif 000009
【図４Ｄ】
2019007891.tif 000010
【図４Ｅ】
2019007891.tif 000011
【図５】
2019007891.tif 000012
【図６】
2019007891.tif 000013
【図７】
2019007891.tif 000014
【図８】
2019007891.tif 000015
【図９】
2019007891.tif 000016