(58)【調査した分野】(Int.Cl.,DB名)
所定の位置に配置した前記視覚センサが撮像したワークの画像と、前記所定の位置から前記目標位置への前記アーム先端部の移動量のデータ集合をラベルとして教師あり学習を行う、請求項1に記載の機械学習装置。
前記学習部は、現在の状態変数及び前記判定データの組合せによって構成される追加の訓練データセットに従って、前記ロボットのアーム先端部の移動量を再学習して更新するように構成される、請求項1乃至4のいずれか一項に記載の機械学習装置。
【発明を実施するための形態】
【0010】
以下、図面を参照して、実施例に係る機械学習装置、機械学習装置を用いたロボット制御装置及びロボットビジョンシステム、並びに機械学習方法について説明する。ただし、本発明の技術的範囲はそれらの実施の形態には限定されず、特許請求の範囲に記載された発明とその均等物に及ぶ点に留意されたい。
【0011】
まず、実施例に係る機械学習装置を備えたロボットビジョンシステムについて説明する。
図1に実施例に係る機械学習装置を備えたロボットビジョンシステム1000の構成図を示し、
図2にロボットビジョンシステム1000のブロック図を示す。ロボットビジョンシステム1000は、ロボット制御装置20と、アーム先端部11に装着された装置を用いてワーク13(作業対象物)に対して作業を行うロボット10と、ロボット10のアーム先端部11に装着され、ワーク13を撮像する視覚センサ12と、を備えている。
【0012】
ロボット10は、例えば6軸の多関節ロボットであり、作業台40の上部に配置されたワーク13に対して所定の作業を行う。例えば、ワーク13を把持する作業であれば、アーム先端部11にハンドを用いることができる。ただし、このような例には限られず、アーム先端部11は、溶着や研磨等の他の作業を行うツールであってもよい。アーム先端部11は水平方向だけでなく垂直方向にも動作させることができ、垂直方向に延びた軸を中心に回転させることもできる。このようにアーム先端部11を動かすことにより、アーム先端部11に設けた視覚センサ12の画像を調整することができる。
【0013】
図1に示すようにロボット10のアーム先端部11には視覚センサ12を設けることができる。あるいは、視覚センサ12を外部に固定して設けるようにしてもよい。どちらの場合も、視覚センサ12によってワーク13が撮像され、両者の相対的な位置関係が目標とする位置関係となるようにアーム先端部11を移動させる。視覚センサ12は2次元のカメラでもよいし、3次元のセンサ(例えば、レンジセンサなど)でもよい。
図1には、視覚センサ12を1台設置した例を示したが、視覚センサは複数でもよい。例えば、視覚センサは、2次元のカメラ2台を用いて校正されたステレオカメラでもよい。
【0014】
また、視覚センサ12をロボット10の外部に固定する場合においても、アーム先端部11を垂直方向に延びた軸を中心に回転させるようにしてもよい。このようにすることにより、視覚センサ12によって撮像したワーク13の画像を調整することができる。
【0015】
視覚センサ12は作業台40の上部に載置されたワーク13を撮像する。撮像した画像は表示装置500に表示される。例えば、視覚センサ12によりワーク13を撮像した場合、表示装置500にはワークの画像513が表示される。
【0016】
ここで、ワーク13に対して所定の作業を実行するうえで基準となるワークの位置を「基準位置」とする。例えば、作業台40の上部の平面の中央部を基準位置とすることができる。
【0017】
視覚センサ12が、ワーク13と所定の相対的位置関係となるときのロボット10のアーム先端部11の位置を「目標位置」とする。例えば、アーム先端部11としてハンドを用いてワーク13を把持する作業を行う場合、アーム先端部11がワーク13を確実に把持することができるような位置を目標位置とするようにしてもよい。
【0018】
図3に、実施例に係る機械学習装置を備えたロボットビジョンシステムの詳細なブロック図を示す。ロボットビジョンシステム1000は、ロボット10と、アーム先端部11であるハンドと、視覚センサ12と、ロボット制御装置20と、を備えている。ロボット制御装置20は、目標画像記憶部22と、ロボット制御部23と、機械学習装置100と、を備えている。さらに、ロボット制御装置20は、目標位置記憶部21と、移動量算出部5と、を備えるようにしてもよい。
【0019】
目標位置記憶部21は、上述した目標位置を記憶する。目標画像記憶部22は、目標画像を記憶する。ここで、「目標画像」とは、アーム先端部11が目標位置に配置されたときに視覚センサ12によって撮像されたワーク13の画像である。目標位置記憶部21及び目標画像記憶部22には、RAM等のメモリを用いることができる。
【0020】
移動量算出部5は、視覚センサ12によって撮像されたワーク13の画像を目標画像に近づけるようにアーム先端部11の移動量を計算する。移動量算出部5は、コンピュータ(CPU:Central Processing Unit)においてソフトウェアまたはファームウェアにより実現される。
【0021】
ロボット制御部23は、決定された動作指令に従ってロボット10を制御する。動作指令の例として、ロボット10が所定の動作を実行するためのトルク指令等が挙げられる。ロボット制御部23は、コンピュータにおいてソフトウェアまたはファームウェアにより実現される。
【0022】
次に、実施例に係る機械学習装置について説明する。
図4に、実施例に係る機械学習装置のブロック図を示す。機械学習装置100は、状態観測部1と、判定データ取得部2と、学習部3と、を備えている。機械学習装置100は、ロボット制御装置20を構成するコンピュータのソフトウェアにより実現される。
【0023】
状態観測部1は、任意の位置で視覚センサ12によって撮像されたワーク13の画像、及び当該画像を目標画像に近づけるように計算した任意の位置からのアーム先端部11の移動量を状態変数として観測する。
【0024】
判定データ取得部2は、目標画像記憶部22から目標画像を判定データとして取得する。
【0025】
学習部3は、状態変数及び判定データの組合せによって構成される訓練データセットに従って、アーム先端部11を任意の位置から目標位置に移動させるための移動量を学習する。視覚センサ12をロボット10の外部に固定した場合には、視覚センサ12と撮像されるワーク13の相対的な位置関係が、目標とする位置関係になるような位置(目標位置)にワーク13を移動させるための、アーム先端部11の移動量を学習する。
【0026】
図2に示した例では、1台のロボット10から取得した訓練データセットに従って移動量を計算する例を示したが、このような例には限られない。即ち、機械学習装置100は、学習部3が、複数のロボットに関して取得される訓練データセットに従って、移動量を学習するように構成されるようにしてもよい。
【0027】
図2に示すように、学習部3は、移動後のロボットのアーム先端部11の位置と目標位置に基づいて報酬を計算する報酬計算部31と、報酬に基づいて、現在の状態変数からアーム先端部11の移動量を推測するための関数を更新する関数更新部32と、を備えることが好ましい。関数更新部32は、後述するように、いわゆるQ学習を用いて強化学習を行うことが好ましい。あるいは、所定の位置に配置した視覚センサ12が撮像したワーク13の画像と、所定の位置から目標位置へのアーム先端部11の移動量のデータ集合をラベルとして後述する教師あり学習を行うようにしてもよい。教師あり学習を行うことにより、基準位置で目標画像と目標位置を記憶した後、適当な位置に移動して、その移動量とその位置での画像を取得し、そのセットを複数用意することで画像の変化と移動量の関係を学習することができ、大量の学習データセットを自動的に取得することができる。
【0028】
視覚センサ12が撮像したワーク13の画像が目標画像に近づくようにしてアーム先端部11を移動させ、移動後のロボット10の位置が、目標位置に近いほど高い報酬を与えるようにしてもよい。
【0029】
学習部3は、状態変数及び報酬に基づいて、アーム先端部11の移動量に対応する行動価値テーブルを更新することが好ましい。学習部3は、状態観測部1で観測された状態変数を多層構造で演算し、行動の価値を判断するための行動価値テーブルをリアルタイムで更新することが好ましい。ここで、状態変数を多層構造で演算する方法として、例えば、
図7に示すような多層ニューラルネットワークを用いることができる。
【0030】
学習部3は、ロボットと同一構成の他のロボットの状態変数と報酬に基づいて、当該他のロボットのアーム先端部の移動量に対応する価値関数を更新するようにしてもよい。
図2に示した例では、自己の機械学習装置の学習部で更新された価値関数を用いて自己の価値関数を更新する例を示したが、このような例には限られない。即ち、自己の機械学習装置とは別の他の機械学習装置の学習部で更新された価値関数を用いて自己の価値関数を更新するようにしてもよい。例えば、複数のロボット制御装置間でデータをやり取りするデータ交換部をさらに有し、他のロボット制御装置の機械学習装置での学習内容を自身の機械学習装置での学習に活用するようにしてもよい。
【0031】
学習部3は、現在の状態変数及び判定データの組合せによって構成される追加の訓練データセットに従って、ロボット10のアーム先端部11の移動量を再学習して更新するように構成されるようにしてもよい。
【0032】
機械学習装置100は、学習部3が訓練データセットに従って学習した結果に基づいて、ロボット10に対する動作指令を決定する意思決定部4をさらに備えることが好ましい。意思決定部4は、アーム先端部11の移動後の位置で撮像したワーク13の画像を状態変数とし、目標画像を判定データとして、視覚センサ12に写るワーク13の画像を目標画像に近づけるロボット10のアーム先端部11の移動量(行動データ)を算出する。例えば、意思決定部4は、任意の位置に配置されたロボット10のアーム先端部11に設けられた視覚センサ12によって撮像されたワーク13の画像を目標画像に近づけるようにアーム先端部11の移動量を計算する。
【0033】
次に、実施例に係る機械学習方法について、
図5に示したフローチャートを用いて説明する。まず、ステップS101において、目標位置記憶部21が、視覚センサ12が基準位置に置かれたワーク13と所定の相対的位置関係となるときのロボット10のアーム先端部11の位置を目標位置として記憶する。
【0034】
次に、ステップS102において、目標画像記憶部22が、目標位置に配置されたアーム先端部11に設けられた視覚センサ12によって撮像された、基準位置に置かれたワーク13の画像を目標画像として記憶する。
【0035】
次に、ステップS103において、状態観測部1が、任意の位置に配置された視覚センサ12によって撮像されたワーク13の画像、及び当該画像を目標画像に近づけるように計算した任意の位置からのアーム先端部11の移動量を状態変数として観測する。
【0036】
次に、ステップS104において、目標画像を記憶した目標画像記憶部22から目標画像を判定データとして取得する。
【0037】
次に、ステップS105において、状態変数及び判定データの組合せによって構成される訓練データセットに従って、アーム先端部11を任意の位置から目標位置に移動させるための移動量を学習する。
【0038】
次に、ステップS106において、移動後のアーム先端部11の位置と目標位置との差分が第1の閾値以下か否かを判断する。移動後のアーム先端部11の位置と目標位置との差分が第1の閾値以下の場合は、視覚センサ12とワーク13との位置関係が、目標画像を撮像した時の位置関係と同じであるとして学習を終了する。ここで、第1の閾値は、ロボット10がアーム先端部11に設けたツールを用いて、ワーク13に対して所定の作業を実行可能な範囲に設定することが好ましい。
【0039】
一方、上記差分が第1の閾値を超えている場合は、ステップS103に戻ってアーム先端部の移動量の算出を繰り返し、移動後のアーム先端部11の位置と目標位置との差分が第1の閾値以下になるまで繰り返す。以上のようにして、意思決定部4は、機械学習装置100から出力されてくる移動量だけアーム先端部11を移動した後、移動後のアーム先端部11の位置と目標位置との差分が所定の閾値(第1の閾値)以下になるまで繰り返す。機械学習装置100が学習して得られた移動量だけ移動した後に、ロボット10がその位置を起点にして、所定の作業を実行する。
【0040】
以上の説明においては、アーム先端部11を移動させる例について説明したが、視覚センサ12をロボット10の外部に設置した場合も同様に学習を行うことができる。視覚センサ12をロボット10の外部に設置した場合には、アーム先端部11を移動させる前に撮像された視覚センサ12とワーク13の相対的な位置関係を示す画像及び移動量を状態変数とし、目標とする視覚センサ12とワーク13の相対的な位置関係を示す画像を判定データ(目標画像)として移動量を学習することができる。
【0041】
ここで、
図5に示したフローチャートにおいては、移動後のアーム先端部11の位置と目標位置との差分と第1の閾値との大小関係の判断を移動の度に毎回実行する例を示したが、このような例には限られない。即ち、学習にかかる時間を短縮させるために、移動後のアーム先端部11の位置と目標位置との差分と第1の閾値との比較を行う回数を制限するようにしてもよい。回数の制限方法として、例えば、比較を行う回数を予め決めておくようにしてもよい。あるいは、所定の回数だけ移動した後のアーム先端部11の位置と目標位置との差分と閾値との比較を1回行うようにしてもよい。または、ユーザの指示に従って移動後のアーム先端部11の位置と目標位置との差分と閾値との比較を実行するようにしてもよい。
【0042】
ここで、
図2に示される機械学習装置100について詳細に説明する。機械学習装置100は、装置に入力されるデータの集合から、その中にある有用な規則や知識表現、判断基準などを解析により抽出し、その判断結果を出力するとともに、知識の学習を行う機能を有する。その手法は様々であるが、大別すれば「教師あり学習」、「教師なし学習」、及び「強化学習」に分けられる。さらに、これらの手法を実現するうえで、特徴量そのものの抽出を学習する、「深層学習」と呼ばれる手法がある。
【0043】
「教師あり学習」とは、ある入力と結果(ラベル)のデータの組を大量に学習装置(機械学習装置)に与えることで、それらのデータセットにある特徴を学習し、入力から結果を推定するモデル、即ち、その関係性を帰納的に獲得することができる。本実施形態においては、ロボット10のアーム先端部11の移動量及びワーク13の画像等の状態観測部1での観測結果、並びに報酬計算部31での報酬に基づいて、アーム先端部11を任意の位置から目標位置に移動させるための移動量の計算に教師あり学習を用いることが出来る。上記学習は、後述のニューラルネットワークなどのアルゴリズムを用いて実現することができる。
【0044】
「教師なし学習」とは、入力データのみを大量に学習装置(機械学習装置)に与えることで、入力データがどのような分布をしているか学習し、対応する教師出力データを与えなくても、入力データに対して圧縮、分類、整形などを行う装置を学習する手法である。それらのデータセットにある特徴を似た者どうしにクラスタリングすることなどができる。この結果を使って、何らかの基準を設けてそれを最適にするような出力の割り当てを行うことで、出力の予測を実現することができる。また「教師なし学習」と「教師あり学習」との中間的な問題設定として、「半教師あり学習」と呼ばれるものもあり、一部のみ入力と出力のデータの組が存在し、それ以外は入力のみのデータである場合がこれに当たる。
【0045】
強化学習の問題を以下のように設定する。
・機械学習装置100は環境200の状態を観測し、行動を決定する。
・環境200は何らかの規則に従って変化し、さらに自分の行動が、環境に変化を与えることもある。
・行動するたびに報酬信号が帰ってくる。
・最大化したいのは将来にわたっての(割引)報酬の合計である。
・行動が引き起こす結果を全く知らない、または不完全にしか知らない状態から学習はスタートする。ロボット制御装置20はロボット10のアーム先端部11またはワーク13を実際に動作して初めて、その結果をデータとして得ることが出来る。つまり、試行錯誤しながら最適な行動を探索する必要がある。
・人間の動作を真似るように事前学習(前述の教師あり学習や、逆強化学習といった手法)した状態を初期状態として、良いスタート地点から学習をスタートさせることもできる。
【0046】
「強化学習」とは、判定や分類だけではなく、行動を学習することにより、環境に行動が与える相互作用を踏まえて適切な行動を学習、即ち、将来的に得られる報酬を最大にするために学習する方法である。このことは、本実施形態において、未来に影響を及ぼすような行動を獲得できることを表している。例えば、Q学習の場合で説明を続けるが、それに限るものではない。
【0047】
Q学習は、或る環境状態sの下で、行動aを選択する価値Q(s,a)を学習する方法である。つまり、或る状態sのとき、価値Q(s,a)の最も高い行動aを最適な行動として選択すればよい。しかし、最初は状態sと行動aとの組合せについて、価値Q(s,a)の正しい値は全く分かっていない。そこで、エージェント(行動主体)は、或る状態sの下で様々な行動aを選択し、その時の行動aに対して報酬が与えられる。それにより、エージェントはより良い行動の選択、すなわち正しい価値Q(s,a)を学習していく。
【0048】
行動の結果、将来にわたって得られる報酬の合計を最大化したい。そこで、最終的に、Q(s,a)=E[Σγ
tr
t](報酬の割引期待値。γ:割引率)となるようにすることを目指す(期待値は最適な行動に従って状態変化したときについてとる。もちろん、それは分かっていないので、探索しながら学習しなければならない)。そのような価値Q(s,a)の更新式は、例えば次式により表すことができる。
【0050】
ここで、s
tは時刻tにおける環境の状態を表し、a
tは時刻tにおける行動を表す。行動a
tにより、状態はs
t+1に変化する。r
t+1は、その状態の変化により貰える報酬を表している。また、maxの付いた項は、状態s
t+1の下で、その時に分かっている最もQ値の高い行動aを選択した場合のQ値にγを乗じたものになる。γは、0<γ≦1のパラメータで、割引率と呼ばれる。αは学習係数で、0<α≦1の範囲とする。
【0051】
この式は、試行a
tの結果帰ってきた報酬r
t+1を元に、状態s
tにおける行動a
tの評価値Q(s
t,a
t)を更新する方法を表している。状態sにおける行動aの評価値Q(s
t,a
t)よりも、報酬r
t+1+行動aによる次の状態における最良の行動max aの評価値Q(s
t+1,max a
t+1)の方が大きければ、Q(s
t,a
t)を大きくするし、反対に小さければ、Q(s
t,a
t)も小さくする事を示している。つまり、或る状態における或る行動の価値を、結果として即時帰ってくる報酬と、その行動による次の状態における最良の行動の価値に近付けるようにしている。
【0052】
Q(s,a)の計算機上での表現方法は、全ての状態行動ペア(s,a)に対して、その値をテーブル(行動価値テーブル)として保持しておく方法と、Q(s,a)を近似するような関数を用意する方法がある。後者の方法では、前述の更新式は、確率勾配降下法などの手法で近似関数のパラメータを調整していくことで実現することが出来る。近似関数としては、後述のニューラルネットワークを用いることが出来る。
【0053】
教師あり学習、教師なし学習、及び強化学習での価値関数の近似アルゴリズムとして、ニューラルネットワークを用いることができる。ニューラルネットワークは、例えば
図6に示すようなニューロンのモデルを模したニューラルネットワークを実現する演算装置及びメモリ等で構成される。
【0054】
図6に示すように、ニューロンは、複数の入力x(ここでは一例として、入力x
1〜入力x
3)に対する出力yを出力するものである。各入力x
1〜x
3には、この入力xに対応する重みw(w
1〜w
3)が掛けられる。これにより、ニューロンは、次の式により表現される出力yを出力する。なお、入力x、出力y、及び重みwは、全てベクトルである。
【数2】
ここで、θはバイアスであり、f
kは活性化関数である。
【0055】
次に、上述したニューロンを組み合わせた3層の重みを有するニューラルネットワークについて、
図7を参照して説明する。
図7は、D1〜D3の3層の重みを有するニューラルネットワークを示す模式図である。
【0056】
図7に示すように、ニューラルネットワークの左側から複数の入力x(ここでは一例として、入力x1〜入力x3)が入力され、右側から結果y(ここでは一例として、結果y1〜結果y3)が出力される。
【0057】
具体的には、入力x1〜入力x3は、3つのニューロンN11〜N13の各々に対して対応する重みが掛けられて入力される。これらの入力に掛けられる重みは、まとめてW1と標記されている。
【0058】
ニューロンN11〜N13は、それぞれ、Z11〜Z13を出力する。これらのZ11〜Z13はまとめて特徴ベクトルZ1と標記され、入力ベクトルの特徴量を抽出したベクトルとみなすことができる。この特徴ベクトルZ1は、重みW1と重みW2との間の特徴ベクトルである。
【0059】
Z11〜Z13は、2つのニューロンN21,N22の各々に対して対応する重みが掛けられて入力される。これらの特徴ベクトルに掛けられる重みは、まとめてW2と標記されている。
【0060】
ニューロンN21,N22は、それぞれ、Z21,Z22を出力する。これらは、まとめて特徴ベクトルZ2と標記されている。この特徴ベクトルZ2は、重みW2と重みW3との間の特徴ベクトルである。
【0061】
特徴ベクトルZ21,Z22は、3つのニューロンN31〜N33の各々に対して対応する重みが掛けられて入力される。これらの特徴ベクトルに掛けられる重みは、まとめてW3と標記されている。
【0062】
最後に、ニューロンN31〜N33は、それぞれ、結果y1〜結果y3を出力する。
【0063】
ニューラルネットワークの動作には、学習モードと価値予測モードとがあり、学習モードにおいて学習データセットを用いて重みWを学習し、そのパラメータを用いて予測モードにおいてロボット10の行動判断を行う(便宜上、予測と書いたが、検出、分類、推論など多様なタスクが可能である)。
【0064】
予測モードで実際にロボット10を動かして得られたデータを即時学習し、次の行動に反映させる(オンライン学習)こともできる。また、あらかじめ収集しておいたデータ群を用いてまとめた学習を行い、以降はずっとそのパラメータで検知モードを行う(バッチ学習)こともできる。その中間的な、ある程度データが溜まるたびに学習モードを挟むということも可能である。
【0065】
重みW1〜W3は、誤差逆伝搬法(バックプロパゲーション)により学習可能なものである。誤差の情報は、右側から入り左側に流れる。誤差逆伝搬法は、各ニューロンについて、入力xが入力されたときの出力yと真の出力y(教師)との差分を小さくするように、それぞれの重みを調整(学習)する手法である。
【0066】
このようなニューラルネットワークは、3層以上にさらに層を増やすことも可能である(深層学習と称される)。入力の特徴抽出を段階的に行い、結果を回帰する演算装置を、教師データのみから自動的に獲得することが可能である。
【0067】
そこで、本実施形態の機械学習装置100は、上述のQ学習を実施すべく、
図2に示されるように状態観測部1、学習部3、及び意思決定部4を備えている。但し、本発明に適用される機械学習方法は、Q学習に限定されるものではない。例えば、教師あり学習を適用する場合において、価値関数は学習モデル、報酬は誤差にそれぞれ対応する。
【0068】
図2に示すように、ロボット制御装置20における状態には、行動で間接的に変化する状態と、行動で直接的に変化する状態とがある。行動で間接的に変化する状態には、ロボット10のアーム先端部11の移動量が含まれる。行動で直接的に変化する状態には、ロボット10のアーム先端部11を移動させてワーク13を撮像した画像が含まれる。
【0069】
学習部3は、更新式及び報酬に基づいて、行動価値テーブルの中から現在の状態変数及び取り得る行動に対応する行動価値を更新する。
【0070】
機械学習装置100がネットワークを介してロボット制御装置20に接続されるようにし、状態観測部1は、機械学習装置100が算出した移動量を、ネットワークを介して、ロボット制御装置20に渡すように構成してもよい。また、機械学習装置100は、クラウドサーバに存在することが好ましい。
【0071】
以上のようにして、学習が完了した後、実際にロボット10がワーク13に対して作業を実行する。作業の実行段階では、ワーク13は基準位置とは異なる位置に置かれており、上記のようにして学習した学習器(学習制御装置)を用いることで、視覚センサ12とワーク13の相対関係が、目標位置にあるロボット10のアーム先端部11の視覚センサ12と基準位置にあるワーク13の相対関係と同じになる。なお、1回の学習で全く同じ相対関係になるとは限らないが、繰り返し行うことで近づけていくことが可能である。即ち、目標位置を記憶する目標位置記憶部21を備え、移動量の計算を繰り返し実行する際に、機械学習装置100がアーム先端部11を任意の位置から目標位置記憶部21に記憶された目標位置に移動させるための移動量を学習する。
【0072】
図8に実施例に係る機械学習方法により学習を行った後に、作業を実行する手順を説明するためのフローチャートを示す。まず、ステップS201において、任意の位置に配置されたワーク13を撮像する。
【0073】
次に、ステップS202において、学習モデルから、撮像したワーク13の画像を目標画像に近づける任意の位置からのアーム先端部11の移動量を算出する。
【0074】
次に、ステップS203において、算出した移動量に基づいてアーム先端部11を移動させる。
【0075】
次に、ステップS204において、移動後または移動中に撮像したワーク13の画像から再度アーム先端部11の移動量を算出する。
【0076】
次に、ステップS205において、移動量が第2の閾値以下か否かを判断する。移動量が第2の閾値以下の場合は、視覚センサ12とワーク13との位置関係が、目標画像を撮像した時と同じになる。この場合、ステップS206において、ワーク13に対して作業を実行する。ここで、第2の閾値は、ロボット10がアーム先端部11に設けたツールを用いて、ワーク13に対して所定の作業を実行可能な範囲に設定することが好ましい。
【0077】
一方、移動量が第2の閾値を超えている場合は、ステップS202に戻ってアーム先端部11の移動量の算出を繰り返し、移動量が第2の閾値以下になるまで繰り返す。このように、意思決定部4は、機械学習装置100から出力されてくる移動量だけアーム先端部11を移動した後、移動量が所定の閾値(第2の閾値)以下になるまで計算を繰り返す。
【0078】
ここで、作業の実行時に使用する第2の閾値は、学習時に使用する第1の閾値と同じであるか、第1の閾値が第2の閾値より小さいことが好ましい。このように第1の閾値を第2の閾値以下とすることによって、学習によって求めた正確な移動量に基づいて所定の作業を実行することができる。
【0079】
また、上記の説明においては、学習ステップと作業実行ステップを個別に行う例について説明したが、このような例には限られない。例えば、学習ステップと作業実行ステップを同時に行うようにしてもよい。作業実行ステップにおいて学習ステップも同時に行うことにより、学習ステップに要する時間を短縮することができ、学習の精度をさらに向上させることができる。
【0080】
以上のようにして、実施例に係るロボットビジョンシステムによれば、モデル(画像から対象物を検出するためのモデルパターン、いわゆるテンプレートマッチングにおけるテンプレート)教示、検出アルゴリズム、あるいは特別なノウハウを必要とすることなく、目標画像を設定するだけでロボットを目標位置に移動することができる。