(57)【要約】【課題】従来のロボットシステムでは作業者に対する負担が大きいという問題があった。【解決手段】機械学習装置は、視覚センサによって撮像されたワークの画像、及び当該画像を目標画像に近づけるように計算した任意の位置からのアーム先端部の移動量を状態変数として観測する状態観測部と、目標画像を判定データとして取得する判定データ取得部と、状態変数及び判定データの組合せによって構成される訓練データセットに従って、アーム先端部またはワークを任意の位置から目標位置に移動させるための移動量を学習する学習部と、を備え、目標位置は、視覚センサが、ワークと所定の相対的位置関係となる位置であり、目標画像は、アーム先端部またはワークが目標位置に配置されたときに設けられた視覚センサによって撮像されたワークの画像である。【選択図】図２
2019171540.tif 000002
【特許請求の範囲】
【請求項１】
視覚センサによって任意の位置で撮像されたワークの画像、及び当該画像を目標画像に近づけるように計算した前記任意の位置からのロボットのアーム先端部の移動量を状態変数として観測する状態観測部と、
前記目標画像を判定データとして取得する判定データ取得部と、
前記状態変数及び前記判定データの組合せによって構成される訓練データセットに従って、前記アーム先端部またはワークを任意の位置から目標位置に移動させるための前記アーム先端部の移動量を学習する学習部と、
を備え、
前記目標位置は、前記視覚センサが、ワークと所定の相対的位置関係となる位置であり、
前記目標画像は、前記アーム先端部またはワークが前記目標位置に配置されたときに前記視覚センサによって撮像されたワークの画像である、機械学習装置。
【請求項２】
前記学習部は、複数のロボットに関して取得される訓練データセットに従って、前記移動量を学習するように構成される、請求項１に記載の機械学習装置。
【請求項３】
前記学習部は、
移動後の前記ロボットのアーム先端部またはワークの位置と前記目標位置に基づいて報酬を計算する報酬計算部と、
前記報酬に基づいて、現在の状態変数から前記アーム先端部の移動量を推測するための関数を更新する関数更新部と、
を備える、請求項１または２に記載の機械学習装置。
【請求項４】
前記学習部は、前記状態変数及び前記報酬に基づいて、前記アーム先端部の移動量に対応する行動価値テーブルを更新する、請求項３に記載の機械学習装置。
【請求項５】
前記学習部は、前記ロボットと同一構成の他のロボットの状態変数と報酬に基づいて、当該他のロボットのアーム先端部の移動量に対応する行動価値テーブルを更新する、請求項３または４に記載の機械学習装置。
【請求項６】
所定の位置に配置した前記視覚センサが撮像したワークの画像と、前記所定の位置から前記目標位置への前記アーム先端部の移動量のデータ集合をラベルとして教師あり学習を行う、請求項１に記載の機械学習装置。
【請求項７】
前記学習部は、現在の状態変数及び前記判定データの組合せによって構成される追加の訓練データセットに従って、前記ロボットのアーム先端部の移動量を再学習して更新するように構成される、請求項１乃至６のいずれか一項に記載の機械学習装置。
【請求項８】
前記学習部が前記訓練データセットに従って学習した結果に基づいて、前記ロボットに対する動作指令を決定する意思決定部をさらに備えた、請求項１乃至７のいずれか一項に記載の機械学習装置。
【請求項９】
前記意思決定部は、前記機械学習装置から出力されてくる移動量だけ前記アーム先端部を移動した後、移動量が所定の閾値以下になるまで計算を繰り返す、請求項８に記載の機械学習装置。
【請求項１０】
前記目標位置を記憶する目標位置記憶部を備え、
前記移動量の計算を繰り返し実行する際に、前記機械学習装置が前記アーム先端部またはワークを任意の位置から前記目標位置記憶部に記憶された前記目標位置に移動させるための移動量を学習する、請求項９に記載の機械学習装置。
【請求項１１】
請求項８に記載の機械学習装置と、
前記目標画像を記憶する目標画像記憶部と、
決定された前記動作指令に従って前記ロボットを制御するロボット制御部と、
を備えたロボット制御装置。
【請求項１２】
請求項１１に記載のロボット制御装置と、
前記アーム先端部に装着された装置を用いてワークに対して作業を行うロボットと、
前記ロボットのアーム先端部に装着され、ワークを撮像する視覚センサと、
を備えた、ロボットビジョンシステム。
【請求項１３】
請求項１１に記載のロボット制御装置と、
前記アーム先端部に装着された装置を用いてワークに対して作業を行うロボットと、
前記ロボットの外部に固定され、ワークを撮像する視覚センサと、
を備えた、ロボットビジョンシステム。
【請求項１４】
前記機械学習装置が学習して得られた移動量だけ移動した後に、前記ロボットがその位置を起点にして、所定の作業を実行する、請求項１２または１３に記載のロボットビジョンシステム。
【請求項１５】
前記機械学習装置がネットワークを介して前記ロボット制御装置に接続されており、
前記状態観測部は、前記機械学習装置が算出した移動量を、前記ネットワークを介して前記ロボット制御装置に渡す、請求項１２乃至１４のいずれか一項に記載のロボットビジョンシステム。
【請求項１６】
前記機械学習装置は、クラウドサーバに存在する、請求項１２乃至１５のいずれか一項に記載のロボットビジョンシステム。
【請求項１７】
視覚センサが、ワークと所定の相対的位置関係となる位置を目標位置として記憶し、
ロボットのアーム先端部またはワークが前記目標位置に配置されたときに視覚センサによって撮像されたワークの画像を目標画像として記憶し、
任意の位置で撮像されたワークの画像、及び当該画像を前記目標画像に近づけるように計算した前記任意の位置からの前記アーム先端部の移動量を状態変数として観測し、
前記目標画像を記憶した目標画像記憶部から前記目標画像を判定データとして取得し、
前記状態変数及び前記判定データの組合せによって構成される訓練データセットに従って、前記アーム先端部またはワークを任意の位置から前記目標位置に移動させるための移動量を学習する、機械学習方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機械学習装置、機械学習装置を用いたロボット制御装置及びロボットビジョンシステム、並びに機械学習方法に関する。
【背景技術】
【０００２】
ロボットに所定の作業を行わせるロボットシステムにおいて、ロボットに設けたカメラで撮影した画像を利用するビジュアルフィードバックという方法が知られている（例えば、特許文献１〜４）。ビジュアルフィードバックを利用することで、より短時間で補正動作を使ったロボットシステムをセットアップすることができる。
【０００３】
しかしながら、短時間でセットアップが可能である反面、いくつかの問題点がある。例えば、第１に、予め作業の対象とするワークに関して、目標マークや特徴点を用意しなければならないという問題がある。第２に、撮像した画像からその目標マークや特徴点を検出するための検出アルゴリズムが必要であるという問題がある。第３に、用意された目標マークや特徴点を安定して検出するための設定のノウハウが不可欠であるという問題がある。これらの点から、ビジュアルフィードバックを利用する作業者に対する負担は未だに大きいものとなっている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−２１１３８１号公報
【特許文献２】特開平０９−０７６１８５号公報
【特許文献３】特開２０１０−１８８４３２号公報
【特許文献４】特開２００３−３０５６７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来のビジュアルフィードバックを利用したロボットシステムを利用した場合、予め作業の対象とするワークに関して、目標マークや特徴点を用意しなければならず、作業者に対する負担が大きいという問題があった。
【課題を解決するための手段】
【０００６】
本開示の一実施形態に係る機械学習装置は、視覚センサによって任意の位置で撮像されたワークの画像、及び当該画像を目標画像に近づけるように計算した任意の位置からのロボットのアーム先端部の移動量を状態変数として観測する状態観測部と、目標画像を判定データとして取得する判定データ取得部と、状態変数及び判定データの組合せによって構成される訓練データセットに従って、アーム先端部またはワークを任意の位置から目標位置に移動させるためのアーム先端部の移動量を学習する学習部と、を備える。ここで、目標位置とは、視覚センサが、ワークと所定の相対的位置関係となる位置であり、目標画像とは、アーム先端部またはワークが目標位置に配置されたときに視覚センサによって撮像されたワークの画像である。
【０００７】
本開示の一実施形態に係る機械学習方法は、視覚センサが、ワークと所定の相対的位置関係となる位置を目標位置として記憶し、ロボットのアーム先端部またはワークが目標位置に配置されたときに視覚センサによって撮像されたワークの画像を目標画像として記憶し、任意の位置で撮像されたワークの画像、及び当該画像を目標画像に近づけるように計算した任意の位置からのアーム先端部の移動量を状態変数として観測し、目標画像を記憶した目標画像記憶部から目標画像を判定データとして取得し、状態変数及び判定データの組合せによって構成される訓練データセットに従って、アーム先端部またはワークを任意の位置から目標位置に移動させるための移動量を学習する。
【発明の効果】
【０００８】
一実施例に係る機械学習装置及び機械学習方法によれば、ワークを撮像した画像を利用しながらロボットを用いてワークに対して所定の作業を実行する前に、予め目標マークや特徴点を用意する必要がなく、作業者に対する負担を軽減することができる。
【図面の簡単な説明】
【０００９】
【図１】実施例に係る機械学習装置を備えたロボットビジョンシステムの構成図である。
【図２】実施例に係る機械学習装置を備えたロボットビジョンシステムのブロック図である。
【図３】実施例に係る機械学習装置を備えたロボットビジョンシステムの詳細なブロック図である。
【図４】実施例に係る機械学習装置のブロック図である。
【図５】実施例に係る機械学習方法の実行手順を説明するためのフローチャートである。
【図６】ニューロンのモデルを示す模式図である。
【図７】３層のニューラルネットワークモデルを示す模式図である。
【図８】実施例に係る機械学習方法により学習を行った後に、作業を実行する手順を説明するためのフローチャートである。
【発明を実施するための形態】
【００１０】
以下、図面を参照して、実施例に係る機械学習装置、機械学習装置を用いたロボット制御装置及びロボットビジョンシステム、並びに機械学習方法について説明する。ただし、本発明の技術的範囲はそれらの実施の形態には限定されず、特許請求の範囲に記載された発明とその均等物に及ぶ点に留意されたい。
【００１１】
まず、実施例に係る機械学習装置を備えたロボットビジョンシステムについて説明する。図１に実施例に係る機械学習装置を備えたロボットビジョンシステム１０００の構成図を示し、図２にロボットビジョンシステム１０００のブロック図を示す。ロボットビジョンシステム１０００は、ロボット制御装置２０と、アーム先端部１１に装着された装置を用いてワーク１３（作業対象物）に対して作業を行うロボット１０と、ロボット１０のアーム先端部１１に装着され、ワーク１３を撮像する視覚センサ１２と、を備えている。
【００１２】
ロボット１０は、例えば６軸の多関節ロボットであり、作業台４０の上部に配置されたワーク１３に対して所定の作業を行う。例えば、ワーク１３を把持する作業であれば、アーム先端部１１にハンドを用いることができる。ただし、このような例には限られず、アーム先端部１１は、溶着や研磨等の他の作業を行うツールであってもよい。アーム先端部１１は水平方向だけでなく垂直方向にも動作させることができ、垂直方向に延びた軸を中心に回転させることもできる。このようにアーム先端部１１を動かすことにより、アーム先端部１１に設けた視覚センサ１２の画像を調整することができる。
【００１３】
図１に示すようにロボット１０のアーム先端部１１には視覚センサ１２を設けることができる。あるいは、視覚センサ１２を外部に固定して設けるようにしてもよい。どちらの場合も、視覚センサ１２によってワーク１３が撮像され、両者の相対的な位置関係が目標とする位置関係となるようにアーム先端部１１を移動させる。視覚センサ１２は２次元のカメラでもよいし、３次元のセンサ（例えば、レンジセンサなど）でもよい。図１には、視覚センサ１２を１台設置した例を示したが、視覚センサは複数でもよい。例えば、視覚センサは、２次元のカメラ２台を用いて校正されたステレオカメラでもよい。
【００１４】
また、視覚センサ１２をロボット１０の外部に固定する場合においても、アーム先端部１１を垂直方向に延びた軸を中心に回転させるようにしてもよい。このようにすることにより、視覚センサ１２によって撮像したワーク１３の画像を調整することができる。
【００１５】
視覚センサ１２は作業台４０の上部に載置されたワーク１３を撮像する。撮像した画像は表示装置５００に表示される。例えば、視覚センサ１２によりワーク１３を撮像した場合、表示装置５００にはワークの画像５１３が表示される。
【００１６】
ここで、ワーク１３に対して所定の作業を実行するうえで基準となるワークの位置を「基準位置」とする。例えば、作業台４０の上部の平面の中央部を基準位置とすることができる。
【００１７】
視覚センサ１２が、ワーク１３と所定の相対的位置関係となるときのロボット１０のアーム先端部１１の位置を「目標位置」とする。例えば、アーム先端部１１としてハンドを用いてワーク１３を把持する作業を行う場合、アーム先端部１１がワーク１３を確実に把持することができるような位置を目標位置とするようにしてもよい。
【００１８】
図３に、実施例に係る機械学習装置を備えたロボットビジョンシステムの詳細なブロック図を示す。ロボットビジョンシステム１０００は、ロボット１０と、アーム先端部１１であるハンドと、視覚センサ１２と、ロボット制御装置２０と、を備えている。ロボット制御装置２０は、目標画像記憶部２２と、ロボット制御部２３と、機械学習装置１００と、を備えている。さらに、ロボット制御装置２０は、目標位置記憶部２１と、移動量算出部５と、を備えるようにしてもよい。
【００１９】
目標位置記憶部２１は、上述した目標位置を記憶する。目標画像記憶部２２は、目標画像を記憶する。ここで、「目標画像」とは、アーム先端部１１が目標位置に配置されたときに視覚センサ１２によって撮像されたワーク１３の画像である。目標位置記憶部２１及び目標画像記憶部２２には、ＲＡＭ等のメモリを用いることができる。
【００２０】
移動量算出部５は、視覚センサ１２によって撮像されたワーク１３の画像を目標画像に近づけるようにアーム先端部１１の移動量を計算する。移動量算出部５は、コンピュータ（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）においてソフトウェアまたはファームウェアにより実現される。
【００２１】
ロボット制御部２３は、決定された動作指令に従ってロボット１０を制御する。動作指令の例として、ロボット１０が所定の動作を実行するためのトルク指令等が挙げられる。ロボット制御部２３は、コンピュータにおいてソフトウェアまたはファームウェアにより実現される。
【００２２】
次に、実施例に係る機械学習装置について説明する。図４に、実施例に係る機械学習装置のブロック図を示す。機械学習装置１００は、状態観測部１と、判定データ取得部２と、学習部３と、を備えている。機械学習装置１００は、ロボット制御装置２０を構成するコンピュータのソフトウェアにより実現される。
【００２３】
状態観測部１は、任意の位置で視覚センサ１２によって撮像されたワーク１３の画像、及び当該画像を目標画像に近づけるように計算した任意の位置からのアーム先端部１１の移動量を状態変数として観測する。
【００２４】
判定データ取得部２は、目標画像記憶部２２から目標画像を判定データとして取得する。
【００２５】
学習部３は、状態変数及び判定データの組合せによって構成される訓練データセットに従って、アーム先端部１１を任意の位置から目標位置に移動させるための移動量を学習する。視覚センサ１２をロボット１０の外部に固定した場合には、視覚センサ１２と撮像されるワーク１３の相対的な位置関係が、目標とする位置関係になるような位置（目標位置）にワーク１３を移動させるための、アーム先端部１１の移動量を学習する。
【００２６】
図２に示した例では、１台のロボット１０から取得した訓練データセットに従って移動量を計算する例を示したが、このような例には限られない。即ち、機械学習装置１００は、学習部３が、複数のロボットに関して取得される訓練データセットに従って、移動量を学習するように構成されるようにしてもよい。
【００２７】
図２に示すように、学習部３は、移動後のロボットのアーム先端部１１の位置と目標位置に基づいて報酬を計算する報酬計算部３１と、報酬に基づいて、現在の状態変数からアーム先端部１１の移動量を推測するための関数を更新する関数更新部３２と、を備えることが好ましい。関数更新部３２は、後述するように、いわゆるＱ学習を用いて強化学習を行うことが好ましい。あるいは、所定の位置に配置した視覚センサ１２が撮像したワーク１３の画像と、所定の位置から目標位置へのアーム先端部１１の移動量のデータ集合をラベルとして後述する教師あり学習を行うようにしてもよい。教師あり学習を行うことにより、基準位置で目標画像と目標位置を記憶した後、適当な位置に移動して、その移動量とその位置での画像を取得し、そのセットを複数用意することで画像の変化と移動量の関係を学習することができ、大量の学習データセットを自動的に取得することができる。
【００２８】
視覚センサ１２が撮像したワーク１３の画像が目標画像に近づくようにしてアーム先端部１１を移動させ、移動後のロボット１０の位置が、目標位置に近いほど高い報酬を与えるようにしてもよい。
【００２９】
学習部３は、状態変数及び報酬に基づいて、アーム先端部１１の移動量に対応する行動価値テーブルを更新することが好ましい。学習部３は、状態観測部１で観測された状態変数を多層構造で演算し、行動の価値を判断するための行動価値テーブルをリアルタイムで更新することが好ましい。ここで、状態変数を多層構造で演算する方法として、例えば、図７に示すような多層ニューラルネットワークを用いることができる。
【００３０】
学習部３は、ロボットと同一構成の他のロボットの状態変数と報酬に基づいて、当該他のロボットのアーム先端部の移動量に対応する価値関数を更新するようにしてもよい。図２に示した例では、自己の機械学習装置の学習部で更新された価値関数を用いて自己の価値関数を更新する例を示したが、このような例には限られない。即ち、自己の機械学習装置とは別の他の機械学習装置の学習部で更新された価値関数を用いて自己の価値関数を更新するようにしてもよい。例えば、複数のロボット制御装置間でデータをやり取りするデータ交換部をさらに有し、他のロボット制御装置の機械学習装置での学習内容を自身の機械学習装置での学習に活用するようにしてもよい。
【００３１】
学習部３は、現在の状態変数及び判定データの組合せによって構成される追加の訓練データセットに従って、ロボット１０のアーム先端部１１の移動量を再学習して更新するように構成されるようにしてもよい。
【００３２】
機械学習装置１００は、学習部３が訓練データセットに従って学習した結果に基づいて、ロボット１０に対する動作指令を決定する意思決定部４をさらに備えることが好ましい。意思決定部４は、アーム先端部１１の移動後の位置で撮像したワーク１３の画像を状態変数とし、目標画像を判定データとして、視覚センサ１２に写るワーク１３の画像を目標画像に近づけるロボット１０のアーム先端部１１の移動量（行動データ）を算出する。例えば、意思決定部４は、任意の位置に配置されたロボット１０のアーム先端部１１に設けられた視覚センサ１２によって撮像されたワーク１３の画像を目標画像に近づけるようにアーム先端部１１の移動量を計算する。
【００３３】
次に、実施例に係る機械学習方法について、図５に示したフローチャートを用いて説明する。まず、ステップＳ１０１において、目標位置記憶部２１が、視覚センサ１２が基準位置に置かれたワーク１３と所定の相対的位置関係となるときのロボット１０のアーム先端部１１の位置を目標位置として記憶する。
【００３４】
次に、ステップＳ１０２において、目標画像記憶部２２が、目標位置に配置されたアーム先端部１１に設けられた視覚センサ１２によって撮像された、基準位置に置かれたワーク１３の画像を目標画像として記憶する。
【００３５】
次に、ステップＳ１０３において、状態観測部１が、任意の位置に配置された視覚センサ１２によって撮像されたワーク１３の画像、及び当該画像を目標画像に近づけるように計算した任意の位置からのアーム先端部１１の移動量を状態変数として観測する。
【００３６】
次に、ステップＳ１０４において、目標画像を記憶した目標画像記憶部２２から目標画像を判定データとして取得する。
【００３７】
次に、ステップＳ１０５において、状態変数及び判定データの組合せによって構成される訓練データセットに従って、アーム先端部１１を任意の位置から目標位置に移動させるための移動量を学習する。
【００３８】
次に、ステップＳ１０６において、移動後のアーム先端部１１の位置と目標位置との差分が第１の閾値以下か否かを判断する。移動後のアーム先端部１１の位置と目標位置との差分が第１の閾値以下の場合は、視覚センサ１２とワーク１３との位置関係が、目標画像を撮像した時の位置関係と同じであるとして学習を終了する。ここで、第１の閾値は、ロボット１０がアーム先端部１１に設けたツールを用いて、ワーク１３に対して所定の作業を実行可能な範囲に設定することが好ましい。
【００３９】
一方、上記差分が第１の閾値を超えている場合は、ステップＳ１０３に戻ってアーム先端部の移動量の算出を繰り返し、移動後のアーム先端部１１の位置と目標位置との差分が第１の閾値以下になるまで繰り返す。以上のようにして、意思決定部４は、機械学習装置１００から出力されてくる移動量だけアーム先端部１１を移動した後、移動後のアーム先端部１１の位置と目標位置との差分が所定の閾値（第１の閾値）以下になるまで繰り返す。機械学習装置１００が学習して得られた移動量だけ移動した後に、ロボット１０がその位置を起点にして、所定の作業を実行する。
【００４０】
以上の説明においては、アーム先端部１１を移動させる例について説明したが、視覚センサ１２をロボット１０の外部に設置した場合も同様に学習を行うことができる。視覚センサ１２をロボット１０の外部に設置した場合には、アーム先端部１１を移動させる前に撮像された視覚センサ１２とワーク１３の相対的な位置関係を示す画像及び移動量を状態変数とし、目標とする視覚センサ１２とワーク１３の相対的な位置関係を示す画像を判定データ（目標画像）として移動量を学習することができる。
【００４１】
ここで、図５に示したフローチャートにおいては、移動後のアーム先端部１１の位置と目標位置との差分と第１の閾値との大小関係の判断を移動の度に毎回実行する例を示したが、このような例には限られない。即ち、学習にかかる時間を短縮させるために、移動後のアーム先端部１１の位置と目標位置との差分と第１の閾値との比較を行う回数を制限するようにしてもよい。回数の制限方法として、例えば、比較を行う回数を予め決めておくようにしてもよい。あるいは、所定の回数だけ移動した後のアーム先端部１１の位置と目標位置との差分と閾値との比較を１回行うようにしてもよい。または、ユーザの指示に従って移動後のアーム先端部１１の位置と目標位置との差分と閾値との比較を実行するようにしてもよい。
【００４２】
ここで、図２に示される機械学習装置１００について詳細に説明する。機械学習装置１００は、装置に入力されるデータの集合から、その中にある有用な規則や知識表現、判断基準などを解析により抽出し、その判断結果を出力するとともに、知識の学習を行う機能を有する。その手法は様々であるが、大別すれば「教師あり学習」、「教師なし学習」、及び「強化学習」に分けられる。さらに、これらの手法を実現するうえで、特徴量そのものの抽出を学習する、「深層学習」と呼ばれる手法がある。
【００４３】
「教師あり学習」とは、ある入力と結果（ラベル）のデータの組を大量に学習装置（機械学習装置）に与えることで、それらのデータセットにある特徴を学習し、入力から結果を推定するモデル、即ち、その関係性を帰納的に獲得することができる。本実施形態においては、ロボット１０のアーム先端部１１の移動量及びワーク１３の画像等の状態観測部１での観測結果、並びに報酬計算部３１での報酬に基づいて、アーム先端部１１を任意の位置から目標位置に移動させるための移動量の計算に教師あり学習を用いることが出来る。上記学習は、後述のニューラルネットワークなどのアルゴリズムを用いて実現することができる。
【００４４】
「教師なし学習」とは、入力データのみを大量に学習装置（機械学習装置）に与えることで、入力データがどのような分布をしているか学習し、対応する教師出力データを与えなくても、入力データに対して圧縮、分類、整形などを行う装置を学習する手法である。それらのデータセットにある特徴を似た者どうしにクラスタリングすることなどができる。この結果を使って、何らかの基準を設けてそれを最適にするような出力の割り当てを行うことで、出力の予測を実現することができる。また「教師なし学習」と「教師あり学習」との中間的な問題設定として、「半教師あり学習」と呼ばれるものもあり、一部のみ入力と出力のデータの組が存在し、それ以外は入力のみのデータである場合がこれに当たる。
【００４５】
強化学習の問題を以下のように設定する。
・機械学習装置１００は環境２００の状態を観測し、行動を決定する。
・環境２００は何らかの規則に従って変化し、さらに自分の行動が、環境に変化を与えることもある。
・行動するたびに報酬信号が帰ってくる。
・最大化したいのは将来にわたっての（割引）報酬の合計である。
・行動が引き起こす結果を全く知らない、または不完全にしか知らない状態から学習はスタートする。ロボット制御装置２０はロボット１０のアーム先端部１１またはワーク１３を実際に動作して初めて、その結果をデータとして得ることが出来る。つまり、試行錯誤しながら最適な行動を探索する必要がある。
・人間の動作を真似るように事前学習（前述の教師あり学習や、逆強化学習といった手法）した状態を初期状態として、良いスタート地点から学習をスタートさせることもできる。
【００４６】
「強化学習」とは、判定や分類だけではなく、行動を学習することにより、環境に行動が与える相互作用を踏まえて適切な行動を学習、即ち、将来的に得られる報酬を最大にするために学習する方法である。このことは、本実施形態において、未来に影響を及ぼすような行動を獲得できることを表している。例えば、Ｑ学習の場合で説明を続けるが、それに限るものではない。
【００４７】
Ｑ学習は、或る環境状態ｓの下で、行動ａを選択する価値Ｑ（ｓ，ａ）を学習する方法である。つまり、或る状態ｓのとき、価値Ｑ（ｓ，ａ）の最も高い行動ａを最適な行動として選択すればよい。しかし、最初は状態ｓと行動ａとの組合せについて、価値Ｑ（ｓ，ａ）の正しい値は全く分かっていない。そこで、エージェント（行動主体）は、或る状態ｓの下で様々な行動ａを選択し、その時の行動ａに対して報酬が与えられる。それにより、エージェントはより良い行動の選択、すなわち正しい価値Ｑ（ｓ，ａ）を学習していく。
【００４８】
行動の結果、将来にわたって得られる報酬の合計を最大化したい。そこで、最終的に、Ｑ（ｓ，ａ）＝Ｅ［Σγtｒt］（報酬の割引期待値。γ：割引率）となるようにすることを目指す（期待値は最適な行動に従って状態変化したときについてとる。もちろん、それは分かっていないので、探索しながら学習しなければならない）。そのような価値Ｑ（ｓ，ａ）の更新式は、例えば次式により表すことができる。
【００４９】
【数１】
2019171540.tif 000003
【００５０】
ここで、ｓtは時刻ｔにおける環境の状態を表し、ａtは時刻ｔにおける行動を表す。行動ａtにより、状態はｓt+1に変化する。ｒt+1は、その状態の変化により貰える報酬を表している。また、ｍａｘの付いた項は、状態ｓt+1の下で、その時に分かっている最もＱ値の高い行動ａを選択した場合のＱ値にγを乗じたものになる。γは、０＜γ≦１のパラメータで、割引率と呼ばれる。αは学習係数で、０＜α≦１の範囲とする。
【００５１】
この式は、試行ａtの結果帰ってきた報酬ｒt+1を元に、状態ｓtにおける行動ａtの評価値Ｑ（ｓt，ａt）を更新する方法を表している。状態ｓにおける行動ａの評価値Ｑ（ｓt，ａt）よりも、報酬ｒt+1＋行動ａによる次の状態における最良の行動ｍａｘ ａの評価値Ｑ（ｓt+1，ｍａｘ ａt+1）の方が大きければ、Ｑ（ｓt，ａt）を大きくするし、反対に小さければ、Ｑ（ｓt，ａt）も小さくする事を示している。つまり、或る状態における或る行動の価値を、結果として即時帰ってくる報酬と、その行動による次の状態における最良の行動の価値に近付けるようにしている。
【００５２】
Ｑ（ｓ，ａ）の計算機上での表現方法は、全ての状態行動ペア（ｓ，ａ）に対して、その値をテーブル（行動価値テーブル）として保持しておく方法と、Ｑ（ｓ，ａ）を近似するような関数を用意する方法がある。後者の方法では、前述の更新式は、確率勾配降下法などの手法で近似関数のパラメータを調整していくことで実現することが出来る。近似関数としては、後述のニューラルネットワークを用いることが出来る。
【００５３】
教師あり学習、教師なし学習、及び強化学習での価値関数の近似アルゴリズムとして、ニューラルネットワークを用いることができる。ニューラルネットワークは、例えば図６に示すようなニューロンのモデルを模したニューラルネットワークを実現する演算装置及びメモリ等で構成される。
【００５４】
図６に示すように、ニューロンは、複数の入力ｘ（ここでは一例として、入力ｘ1〜入力ｘ3）に対する出力ｙを出力するものである。各入力ｘ1〜ｘ3には、この入力ｘに対応する重みｗ（ｗ1〜ｗ3）が掛けられる。これにより、ニューロンは、次の式により表現される出力ｙを出力する。なお、入力ｘ、出力ｙ、及び重みｗは、全てベクトルである。
【数２】
2019171540.tif 000004
ここで、θはバイアスであり、ｆkは活性化関数である。
【００５５】
次に、上述したニューロンを組み合わせた３層の重みを有するニューラルネットワークについて、図７を参照して説明する。図７は、Ｄ１〜Ｄ３の３層の重みを有するニューラルネットワークを示す模式図である。
【００５６】
図７に示すように、ニューラルネットワークの左側から複数の入力ｘ（ここでは一例として、入力ｘ１〜入力ｘ３）が入力され、右側から結果ｙ（ここでは一例として、結果ｙ１〜結果ｙ３）が出力される。
【００５７】
具体的には、入力ｘ１〜入力ｘ３は、３つのニューロンＮ１１〜Ｎ１３の各々に対して対応する重みが掛けられて入力される。これらの入力に掛けられる重みは、まとめてＷ１と標記されている。
【００５８】
ニューロンＮ１１〜Ｎ１３は、それぞれ、Ｚ１１〜Ｚ１３を出力する。これらのＺ１１〜Ｚ１３はまとめて特徴ベクトルＺ１と標記され、入力ベクトルの特徴量を抽出したベクトルとみなすことができる。この特徴ベクトルＺ１は、重みＷ１と重みＷ２との間の特徴ベクトルである。
【００５９】
Ｚ１１〜Ｚ１３は、２つのニューロンＮ２１，Ｎ２２の各々に対して対応する重みが掛けられて入力される。これらの特徴ベクトルに掛けられる重みは、まとめてＷ２と標記されている。
【００６０】
ニューロンＮ２１，Ｎ２２は、それぞれ、Ｚ２１，Ｚ２２を出力する。これらは、まとめて特徴ベクトルＺ２と標記されている。この特徴ベクトルＺ２は、重みＷ２と重みＷ３との間の特徴ベクトルである。
【００６１】
特徴ベクトルＺ２１，Ｚ２２は、３つのニューロンＮ３１〜Ｎ３３の各々に対して対応する重みが掛けられて入力される。これらの特徴ベクトルに掛けられる重みは、まとめてＷ３と標記されている。
【００６２】
最後に、ニューロンＮ３１〜Ｎ３３は、それぞれ、結果ｙ１〜結果ｙ３を出力する。
【００６３】
ニューラルネットワークの動作には、学習モードと価値予測モードとがあり、学習モードにおいて学習データセットを用いて重みＷを学習し、そのパラメータを用いて予測モードにおいてロボット１０の行動判断を行う（便宜上、予測と書いたが、検出、分類、推論など多様なタスクが可能である）。
【００６４】
予測モードで実際にロボット１０を動かして得られたデータを即時学習し、次の行動に反映させる（オンライン学習）こともできる。また、あらかじめ収集しておいたデータ群を用いてまとめた学習を行い、以降はずっとそのパラメータで検知モードを行う（バッチ学習）こともできる。その中間的な、ある程度データが溜まるたびに学習モードを挟むということも可能である。
【００６５】
重みＷ１〜Ｗ３は、誤差逆伝搬法（バックプロパゲーション）により学習可能なものである。誤差の情報は、右側から入り左側に流れる。誤差逆伝搬法は、各ニューロンについて、入力ｘが入力されたときの出力ｙと真の出力ｙ（教師）との差分を小さくするように、それぞれの重みを調整（学習）する手法である。
【００６６】
このようなニューラルネットワークは、３層以上にさらに層を増やすことも可能である（深層学習と称される）。入力の特徴抽出を段階的に行い、結果を回帰する演算装置を、教師データのみから自動的に獲得することが可能である。
【００６７】
そこで、本実施形態の機械学習装置１００は、上述のＱ学習を実施すべく、図２に示されるように状態観測部１、学習部３、及び意思決定部４を備えている。但し、本発明に適用される機械学習方法は、Ｑ学習に限定されるものではない。例えば、教師あり学習を適用する場合において、価値関数は学習モデル、報酬は誤差にそれぞれ対応する。
【００６８】
図２に示すように、ロボット制御装置２０における状態には、行動で間接的に変化する状態と、行動で直接的に変化する状態とがある。行動で間接的に変化する状態には、ロボット１０のアーム先端部１１の移動量が含まれる。行動で直接的に変化する状態には、ロボット１０のアーム先端部１１を移動させてワーク１３を撮像した画像が含まれる。
【００６９】
学習部３は、更新式及び報酬に基づいて、行動価値テーブルの中から現在の状態変数及び取り得る行動に対応する行動価値を更新する。
【００７０】
機械学習装置１００がネットワークを介してロボット制御装置２０に接続されるようにし、状態観測部１は、機械学習装置１００が算出した移動量を、ネットワークを介して、ロボット制御装置２０に渡すように構成してもよい。また、機械学習装置１００は、クラウドサーバに存在することが好ましい。
【００７１】
以上のようにして、学習が完了した後、実際にロボット１０がワーク１３に対して作業を実行する。作業の実行段階では、ワーク１３は基準位置とは異なる位置に置かれており、上記のようにして学習した学習器（学習制御装置）を用いることで、視覚センサ１２とワーク１３の相対関係が、目標位置にあるロボット１０のアーム先端部１１の視覚センサ１２と基準位置にあるワーク１３の相対関係と同じになる。なお、１回の学習で全く同じ相対関係になるとは限らないが、繰り返し行うことで近づけていくことが可能である。即ち、目標位置を記憶する目標位置記憶部２１を備え、移動量の計算を繰り返し実行する際に、機械学習装置１００がアーム先端部１１を任意の位置から目標位置記憶部２１に記憶された目標位置に移動させるための移動量を学習する。
【００７２】
図８に実施例に係る機械学習方法により学習を行った後に、作業を実行する手順を説明するためのフローチャートを示す。まず、ステップＳ２０１において、任意の位置に配置されたワーク１３を撮像する。
【００７３】
次に、ステップＳ２０２において、学習モデルから、撮像したワーク１３の画像を目標画像に近づける任意の位置からのアーム先端部１１の移動量を算出する。
【００７４】
次に、ステップＳ２０３において、算出した移動量に基づいてアーム先端部１１を移動させる。
【００７５】
次に、ステップＳ２０４において、移動後または移動中に撮像したワーク１３の画像から再度アーム先端部１１の移動量を算出する。
【００７６】
次に、ステップＳ２０５において、移動量が第２の閾値以下か否かを判断する。移動量が第２の閾値以下の場合は、視覚センサ１２とワーク１３との位置関係が、目標画像を撮像した時と同じになる。この場合、ステップＳ２０６において、ワーク１３に対して作業を実行する。ここで、第２の閾値は、ロボット１０がアーム先端部１１に設けたツールを用いて、ワーク１３に対して所定の作業を実行可能な範囲に設定することが好ましい。
【００７７】
一方、移動量が第２の閾値を超えている場合は、ステップＳ２０２に戻ってアーム先端部１１の移動量の算出を繰り返し、移動量が第２の閾値以下になるまで繰り返す。このように、意思決定部４は、機械学習装置１００から出力されてくる移動量だけアーム先端部１１を移動した後、移動量が所定の閾値（第２の閾値）以下になるまで計算を繰り返す。
【００７８】
ここで、作業の実行時に使用する第２の閾値は、学習時に使用する第１の閾値と同じであるか、第１の閾値が第２の閾値より小さいことが好ましい。このように第１の閾値を第２の閾値以下とすることによって、学習によって求めた正確な移動量に基づいて所定の作業を実行することができる。
【００７９】
また、上記の説明においては、学習ステップと作業実行ステップを個別に行う例について説明したが、このような例には限られない。例えば、学習ステップと作業実行ステップを同時に行うようにしてもよい。作業実行ステップにおいて学習ステップも同時に行うことにより、学習ステップに要する時間を短縮することができ、学習の精度をさらに向上させることができる。
【００８０】
以上のようにして、実施例に係るロボットビジョンシステムによれば、モデル（画像から対象物を検出するためのモデルパターン、いわゆるテンプレートマッチングにおけるテンプレート）教示、検出アルゴリズム、あるいは特別なノウハウを必要とすることなく、目標画像を設定するだけでロボットを目標位置に移動することができる。
【符号の説明】
【００８１】
１    状態観測部
２    判定データ取得部
３    学習部
４    意思決定部
１０    ロボット
１１    アーム先端部
１２    視覚センサ
１３    ワーク
２０    ロボット制御装置
２１    目標位置記憶部
２２    目標画像記憶部
２３    ロボット制御部
３１    報酬計算部
３２    関数更新部
１００    機械学習装置
１０００    ロボットビジョンシステム
【図１】
2019171540.tif 000005
【図２】
2019171540.tif 000006
【図３】
2019171540.tif 000007
【図４】
2019171540.tif 000008
【図５】
2019171540.tif 000009
【図６】
2019171540.tif 000010
【図７】
2019171540.tif 000011
【図８】
2019171540.tif 000012