(57)【特許請求の範囲】
【請求項１】
二つのモノについて挿入を伴う位置合わせを含む場合、挿入状態から抜き出す際に前記挿入状態からの経路上であって前記挿入状態から外れない位置となる第１の移動量と、前記第１の移動量から前記挿入状態から外れない位置となる周辺へのランダムな第２の移動量と、を指示する経路設定部と、移動された位置データを出力層、移動された位置の力覚センサの値を入力層として学習させるために移動された位置の値と力覚センサの値を取得するとともに前記力覚センサの値に比例して減少する報酬値を取得するＡｃｔｏｒ部と、
を備えた位置制御装置。
【請求項２】
請求項１において指示された第１の移動量及び第２の移動量を用いて前記二つのモノの位置関係を制御するための電流または電圧を制御する制御部と、前記二つのモノの位置関係を制御するための電流または電圧を用いて前記二つのモノの位置関係の一方の位置を移動させる駆動部とを備え、前記力覚センサは、前記二つのモノの位置関係を保持する際にかかる力を取得する、
請求項１に記載の位置制御装置。
【請求項３】
前記二つのモノが存在する画像を撮像し取得する単眼カメラを備え、
前記Ａｃｔｏｒ部は、前記移動された位置において前記単眼カメラによって撮像された画像を取得する、
請求項１または２に記載の位置制御装置。
【請求項４】
前記Ａｃｔｏｒ部は、前記入力層と前記出力層とからActor-Criticモデルを用いて学習をおこなう、請求項１乃至３のいずれかに記載の位置制御装置。
【請求項５】
前記Ａｃｔｏｒ部は、複数のニューラルネットワークを学習し、前記複数のニューラルネットワークの一方は、前記二つのモノの位置関係が挿入されている位置のデータが学習に用いられ、他方のデータは、前記二つのモノの位置関係が挿入されていない位置のデータが学習に用いられる、請求項４に記載の位置制御装置。
【請求項６】
前記Ａｃｔｏｒ部は、前記二つのモノの位置関係が挿入されている位置のデータには前記力覚センサの値が用いられ、前記二つのモノの位置関係が挿入されていない位置のデータには、画像データが用いられる、請求項５に記載の位置制御装置。
【請求項７】
二つのモノの位置制御方法であって、
前記二つのモノについて挿入を伴う位置合わせを含む場合、挿入状態から抜き出す際に前記挿入状態からの経路であって前記挿入状態から外れない位置となる第１の移動量と、前記第１の移動量から前記挿入状態から外れない位置となる周辺へのランダムな第２の移動量と、を指示し、
移動された位置データを出力層、移動された位置の力覚センサの値を入力層として学習させるために移動された位置の値と力覚センサの値を取得するとともに前記力覚センサの値に比例して減少する報酬値を取得する
二つのモノの位置制御方法。
【請求項８】
二つのモノの位置制御方法であって、
前記二つのモノについて挿入を伴う位置合わせを含む場合、挿入状態から抜き出す際に前記挿入状態からの経路であって前記挿入状態から外れない位置となる第１の移動量と、前記第１の移動量から前記挿入状態から外れない位置となる周辺へのランダムな第２の移動量と、を指示し、
移動された位置データを出力層、移動された位置の力覚センサの値を入力層として学習させるために移動された位置の値と力覚センサの値を取得するとともに前記力覚センサの値に比例して減少する報酬値を取得し、
前記入力層と前記出力層とからActor-Criticモデルを用いて学習をおこなう、
二つのモノの位置制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】  この発明は位置制御装置及び位置制御方法に関するものである。
【背景技術】
【０００２】  ロボットアームで組立動作を行う生産システムを構築する際には、ティーチングと呼ばれる人の手による教示作業を行うのが一般的である。しかし、このティーチングにおいてロボットは記憶された位置のみに対して動作を繰り返し行うため、製作や取付による誤差が発生する場合には、対応できない場合もある。そのため、この個体誤差を吸収するような位置補正技術が開発することが可能であれば、生産性の向上が期待できる上、ロボットの活躍する場面も大きくなる。【０００３】  現在の技術においても、カメラ画像を用いてコネクタ挿入作業の直前までの位置補正を行う技術は存在する（特許文献１）。また、力学センサ、ステレオカメラ、等複数のデバイスを用いれば組立（挿入、ワーク保持等）に関する位置の誤差を吸収することはできる。しかし、位置補正量を決定するために、同参考文献のように把持したコネクタの中心座標、挿入する側のコネクタの中心座標などの量を明示的に画像情報から計算する必要がある。この計算はコネクタの形状に依存し、使用コネクタごとに設計者が設定しなければならない。また、３次元情報が距離カメラなどから取得できればこの計算も比較的容易であるが、２次元画像情報から取得するためにはコネクタ毎に画像処理アルゴリズムを開発する必要があるため、多くの設計コストがかかってしまう。【０００４】  また、ロボットが自ら学習し適切な行動を獲得する手法として、深層学習や深層強化学習と呼ばれる手法が存在する。しかし、これらの学習によって適切な行動を獲得するためには、通常、大量の適切な学習データを収集する必要がある。また、強化学習などの手法を用いてデータを収集する場合、何度も繰り返し同じシーンを体験する必要があり、膨大な試行数が必要な上、未体験なシーンに対しては性能が保証できない。そのため、さまざまなシーンの学習データを万遍なく集める必要があり、多くの手間がかかる。  例えば、特許文献２のように一回の成功試行で最適経路を求めるような手法も存在するが、深層学習や深層強化学習に使えるデータを集めることは出来ない。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】ＷＯ９８−０１７４４４号公報
【特許文献２】特開２００５−１２５４７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】  すなわち、二つのモノについて挿入を伴う位置合わせを含む場合、何度も二つのモノについて挿入作業を行って大量のデータを取得しなければならないという課題があった。【０００７】  本発明は上記の課題を解決するためになされたものであって、一度の挿入で効率的に学習データを収集することを目的とする。
【課題を解決するための手段】
【０００８】
この発明に係る位置制御装置は、二つのモノについて挿入を伴う位置合わせを含む場合、挿入状態から抜き出す際に挿入状態からの経路上であって前記挿入状態から外れない位置となる第１の移動量と、前記第１の移動量から前記挿入状態から外れない位置となる周辺へのランダムな第２の移動量と、を指示する経路設定部と、移動された位置データを出力層、移動された位置の力覚センサの値を入力層として学習させるために移動された位置と力覚センサの値を取得するとともに前記力覚センサの値に比例して減少する報酬値を取得するＡｃｔｏｒ部とを、を備えた。
【発明の効果】
【０００９】  この発明によれば、二つのモノについて挿入を伴う位置合わせを含む場合に、挿入状態から抜き出す際に挿入状態からの経路上とその周辺で力覚センサの値を収集するため、効率的に学習データを収集することができる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１におけるロボットアーム１００とオス側コネクタ１１０、メス側コネクタ１２０が配置された図。
【図２】実施の形態１における位置制御装置の機能構成図。
【図３】実施の形態１における位置制御装置のハードウエア構成図。
【図４】実施の形態１における位置制御装置の位置制御におけるフローチャート。
【図５】実施の形態１における単眼カメラ１０２が撮影した挿入開始位置とその周辺付近でのカメラ画像と制御量を示す図の例。
【図６】実施の形態１におけるニューラルネットワークと、ニューラルネットワークの学習則の例を示す図。
【図７】実施の形態１におけるニューラルネットワークにおいて、複数のネットワークをもちいたフローチャート。
【図８】実施の形態２における位置制御装置の機能構成図。
【図９】実施の形態２における位置制御装置のハードウエア構成図。
【図１０】実施の形態２におけるオス側コネクタ１１０とメス側コネクタ１２０との嵌合の試行の様子を示す図。
【図１１】実施の形態２における位置制御装置の経路学習におけるフローチャート。
【図１２】実施の形態３における位置制御装置の経路学習におけるフローチャート。
【図１３】実施の形態３におけるニューラルネットワークと、ニューラルネットワークの学習則の例を示す図。
【発明を実施するための形態】
【００１１】実施の形態１．  以下、この発明の実施の形態について説明する。
【００１２】  実施の形態１においては、各コネクタの挿入位置を学習し、生産ラインで組み立てを行うロボットアームとその位置制御方法について説明する。
【００１３】  構成を説明する。図１は、実施の形態１におけるロボットアーム１００とオス側コネクタ１１０、メス側コネクタ１２０が配置された図である。ロボットアーム１００にはオス側コネクタ１１０を把持する把持部１０１が備えられてあり、この把持部を見えるような位置に単眼カメラ１０２がロボットアーム１００に取り付けてある。この単眼カメラ１０２位置は、ロボットアーム１００の先端の把持部１０１がオス側コネクタ１１０を把持した際に、把持されたオス側コネクタ１１０の先端部と挿入される側のメス側コネクタ１２０が見えるように設置する。
【００１４】  図２は、実施の形態１における位置制御装置の機能構成図である。  図２において、図１における単眼カメラ１０２の機能であり、画像を撮影する撮像部２０１と、撮像された画像を用いてロボットアーム１００の位置の制御量を生成する制御パラメータ生成部２０２と、位置の制御量を用いてロボットアーム１００の駆動部２０４に対し、電流・電圧値を制御する制御部２０３と、制御部２０３から出力された電流・電圧値に基づいてロボットアーム１００の位置を変更する駆動部２０４から構成されている。
【００１５】  制御パラメータ生成部２０２は、単眼カメラ１０２の機能であり、画像を撮影する撮像部２０１から画像を取得すると、ロボットアーム１００の位置（X、Y、Z、Ax、Ay、Az）の値に対する制御量（ΔX、ΔY、ΔZ、ΔAx、ΔAy、ΔAz）を決定し、制御部２０３に制御量を出力する。（Ｘ，Ｙ，Ｚはロボットアームの位置、Ax、Ay、Azは、ロボットアーム１００の姿勢角度）  制御部２０３は、受け取ったロボットアーム１００の位置（X、Y、Z、Ax、Ay、Az）の値に対する制御量（ΔX、ΔY、ΔZ、ΔAx、ΔAy、ΔAz）に基づいて駆動部２０４を構成する各デバイスに対する電流・電圧値を決定し制御する。  駆動部２０４は、制御部２０３から受けた各デバイスに対する電流・電圧値で動作することで、ロボットアーム１００が（X＋ΔX、Y＋ΔY、Z＋ΔZ、Ax＋ΔAx、Ay＋ΔAy、Az＋ΔAz）の位置まで移動する。
【００１６】  図３は、実施の形態１における位置制御装置のハードウエア構成図である。  単眼カメラ１０２は、入出力インターフェース３０１を経由してプロセッサ３０２、メモリ３０３に、有線無線に関わらず通信可能に接続される。入出力インターフェース３０１、プロセッサ３０２、メモリ３０３で図２における制御パラメータ生成部２０２の機能を構成する。入出力インターフェース３０１はまた、制御部２０３に対応する制御回路３０４と有線無線に関わらず通信可能に接続される。制御回路３０４はまた、電気的にモータ３０５と接続される。モータ３０５は、図２における駆動部２０４に対応し、各デバイスの位置を制御するための部品として構成される。尚、本実施の形態において、駆動部２０４に対応するハードウエアの形態としてモータ３０５としたが、位置を制御できるハードウエアであればよい。したがって、単眼ガメラ２０１と入出力インターフェース３０１間、入出力インターフェース３０１と制御回路間３０４間は別体として構成されていてもよい。
【００１７】  次に動作について説明する。  図４は、実施の形態１における位置制御装置の位置制御におけるフローチャートである。  まず、ステップS１０１において、ロボットアーム１００の把持部１０１は、オス側コネクタ１１０を把持する。このオス側コネクタ１１０の位置や姿勢は図２の制御部２０３側で事前に登録されており、あらかじめ制御部２０３側に登録された制御プログラムに基づいて動作される。
【００１８】  次に、ステップＳ１０２において、ロボットアーム１００をメス側コネクタ１２０の挿入位置近辺まで近づける。このメス側コネクタ１１０のおおよその位置や姿勢は、図２の制御部２０３側で事前に登録されており、あらかじめ制御部２０３側に登録された制御プログラムに基づいてオス側コネクタ１１０の位置が、動作される。  次に、ステップＳ１０３において、制御パラメータ生成部２０２は単眼カメラ１０２の撮像部２０１に対し、画像を撮像するよう指示し、単眼カメラ１０３は、把持部１０１が把持しているオス側コネクタ１１０と、挿入先となるメス側コネクタ１２０とが両方映っている画像を撮像する。
【００１９】  次に、ステップＳ１０４において、制御パラメータ生成部２０２は、撮像部２０１から画像を取得し、制御量（ΔX、ΔY、ΔZ、ΔAx、ΔAy、ΔAz）を決定する。この制御量の決定ついては、制御パラメータ生成部２０２は、図３のプロセッサ３０２、メモリ３０３をハードとして用いるとともに、ニューラルネットワークを用いて制御量（ΔX、ΔY、ΔZ、ΔAx、ΔAy、ΔAz）を計算する。ニューラルネットワークを用いた制御量の計算方法は後述する。
【００２０】  次に、ステップＳ１０５において、制御部２０３は、制御パラメータ生成部２０２が出力した制御量（ΔX、ΔY、ΔZ、ΔAx、ΔAy、ΔAz）を取得するとともに、予め決めておいた閾値と制御量のすべての成分を比較する。制御量のすべての成分が閾値以下であれば、ステップＳ１０７へ進み、制御部２０３は、オス側コネクタ１１０をメス側コネクタ１２０へ挿入するよう駆動部２０４を制御する。  制御量のいずれかの成分が閾値より大きければ、ステップＳ１０６において、制御部２０３は、制御パラメータ生成部２０２が出力した制御量（ΔX、ΔY、ΔZ、ΔAx、ΔAy、ΔAz）を用いて駆動部２０４を制御し、ステップＳ１０３へ戻る。
【００２１】  次に図４のステップＳ１０４でのニューラルネットワークを用いた制御量の計算方法について説明する。  ニューラルネットワークを用いた制御量の計算を行う前に、事前準備として、ニューラルネットワークよって入力画像から嵌合成功までの移動量が算出できるようにするため、事前に、画像と必要な移動量のセットを集める。例えば、位置が既知である嵌合状態のオス側コネクタ１１０とメス側コネクタ１２０に対し、ロボットアーム１００の把持部１０１でオス側コネクタ１１０を把持する。そして、既知の引き抜き方向に把持部１０１を動かしながら挿入開始位置まで動かすとともに、単眼カメラ１０２で複数枚画像を取得する。また、挿入開始位置を制御量（０，０，０，０，０，０）として嵌合状態から挿入開始までの移動量だけの移動量だけはなく、その周辺の移動量、すなわち制御量（ΔX、ΔY、ΔZ、ΔAx、ΔAy、ΔAz）にとそれに対応する画像も取得する。    図５は、実施の形態１における単眼カメラ１０２が撮影した挿入開始位置とその周辺付近でのカメラ画像と制御量を示す図の例である。
【００２２】  そして、嵌合状態から挿入開始位置までの移動量と単眼カメラ１０２における挿入開始位置及び周辺の位置の画像からなる複数のセットを用いて、一般的なニューラルネットワークの学習則に基づき（例：確率的勾配法）学習させる。  ニューラルネットワークにはCNNやRNNなど色々な形態が存在するが、本発明はその形態に依存せず、任意の形態を使用することができる。
【００２３】  図６は、実施の形態１におけるニューラルネットワークと、ニューラルネットワークの学習則の例を示す図である。  入力層には、単眼カメラ１０２から得られた画像（例えば各ピクセルの輝度、色差の値）が入力され、出力層は制御量（ΔX、ΔY、ΔZ、ΔAx、ΔAy、ΔAz）が出力される。  ニューラルネットワークの学習過程において、入力された画像から中間層を経て得られた出力層の出力値が画像セットで記憶された制御量に近似させるために中間層のパラメータを最適化させることが行われる。その近似方法として確率的勾配法等がある。
【００２４】  したがって、図５に示すように嵌合状態から挿入開始までの移動量だけの移動量だけはなく、その周辺の移動にとそれに対応する画像を取得して学習させることで、より正確な学習を行うことができる。  また、図５においては、オス側コネクタ１１０は単眼カメラ１０２に対して位置が固定であり、メス側コネクタ１２０のみの位置が変化した場合について示しているが、実際は、ロボットアーム１００の把持部１０１が、正確な位置でオス側コネクタ１１０を把持するわけではなく、個体差等によって、オス側コネクタ１１０の位置がずれた場合も存在する。したがって、この学習の過程においてオス側コネクタ１１０が正確な位置からずれた場合の挿入開始位置とその付近の位置の複数の制御量と画像のセットを取得して学習することで、オス側コネクタ１１０とメス側コネクタ１２０の両方の個体差に対応できた学習が行われる。
【００２５】  ただし、ここで注意が必要なのは、制御量（ΔX、ΔY、ΔZ、ΔAx、ΔAy、ΔAz）は撮影した時点の嵌合状態位置から挿入開始位置までの移動量を除いて算出するため、挿入開始位置から嵌合状態位置までの移動量については、図４のステップＳ１０７で用いるために、別途記憶する必要がある。また、上記座標は単眼カメラの座標系として求まるため、制御部２０３は単眼カメラの座標系とをロボットアーム１００全体の座標系が異なる場合には変換したうえでロボットアーム１００を制御する必要がある。
【００２６】  この実施例において、単眼カメラをロボットアーム１００に固定しているため、メス側コネクタ１２０が置かれている座標系と、単眼カメラ１０２の座標系が異なるためである。したがって、単眼カメラ１０２がメス側コネクタ１２０の位置と同じ座標系であれば、単眼カメラ１０２の座標系からロボットアーム１００の座標系への変換は不要となる。
【００２７】  次に、図４の動作の詳細と動作例について説明する、  ステップＳ１０１において、ロボットアーム１００がオス側コネクタ１１０を把持するために、事前に登録した動作通りオス側コネクタ１１０を把持し、ステップＳ１０２において、メス側コネクタ１２０はほぼ上まで移動される。
【００２８】  この時に、把持しているオス側コネクタ１１０の把持する直前の位置が常に一定とは限らない。このオス側コネクタ１１０の位置をセットする機械の微妙な動作ずれ等で、微妙な誤差が常に発生している可能性がある。同様にメス側コネクタ１２０も何らかの誤差を持っている可能性もある。
【００２９】  そのため、ステップＳ１０３において、図５のようにロボットアーム１００に付属している単眼カメラ１０２の撮像部２０１で撮影された画像に、オス側コネクタ１１０とメス側コネクタ１２０両方が映っている画像を取得していることが重要となる。単眼カメラ１０２のロボットアーム１００に対する位置は常に固定されているため、オス側コネクタ１１０とメス側コネクタ１２０との相対的な位置情報がこの画像には反映されている。
【００３０】  ステップＳ１０４において、この相対的な位置情報を事前に学習した図６に示すようなニューラルネットワークを持つ制御パラメータ生成部２０２により制御量（ΔX、ΔY、ΔZ、ΔAx、ΔAy、ΔAz）が計算される。ただし、学習の出来・不出来によっては、制御パラメータ生成部２０２が出力する制御量が挿入開始位置まで動作できない場合もある。その場合、ステップＳ１０３〜Ｓ１０６のループを複数回繰り返すことによってステップＳ１０５に示す閾値以下となるように制御パラメータ生成部２０２が繰り返し計算し、制御部２０３と駆動部２０４が制御してロボットアーム１００の位置を制御する場合もある。
【００３１】  Ｓ１０５に示す閾値は嵌合するオス側コネクタ１１０とメス側コネクタ１２０の要求精度によって決まる。例えば、コネクタとの嵌めあいが緩く、元々コネクタの特性として精度がそこまで必要のない場合には、閾値を大きく設定できる。また逆の場合には閾値を小さく設定することになる。一般的に製造工程の場合には、製作が許容できる誤差が規定されることが多いため、この値を用いることも可能である。
【００３２】  また、学習の出来・不出来によっては、制御パラメータ生成部２０２が出力する制御量が挿入開始位置まで動作できない場合を想定すると、挿入開始位置を複数位置設定してもよい。オス側コネクタ１１０とメス側コネクタ１２０との距離を十分にとらないまま挿入開始位置を設定してしまうと挿入開始を行う前にオス側コネクタ１１０とメス側コネクタ１２０が当接し、いずれかを破損してしまうリスクも存在する。その場合は、例えばオス側コネクタ１１０とメス側コネクタ１２０とのクリアランスを最初は５ｍｍ、次は２０ｍｍ、次は１０ｍｍというように、図4におけるステップＳ１０３〜ステップＳ１０６の間のループの回数に応じて挿入開始位置を設定してもよい。
【００３３】  尚、本実施の形態においては、コネクタを用いて説明したが、この技術の適用はコネクタの嵌合に限られない。例えば基板にＩＣを載せる場合にも適用できるし、特に足の寸法誤差が大きいコンデンサ等を基板の穴に挿入するにおいても、同様の方法を用いれば効果を奏するものである。  また、必ずしも基板への挿入に限った話ではなく、画像と制御量の関係から制御量を求める位置制御全般に利用できる。この発明においては、ニューラルネットワークを用いて画像と制御量との関係を学習させることで、モノとモノとの位置合わせを行う際の各々の個体差を吸収できるというメリットがある。
【００３４】  したがって、実施の形態１において、二つのモノが存在する画像を撮像する撮像部２０１と、撮像された二つのモノの画像の情報をニューラルネットワークの入力層に入力し、二つのモノの位置関係を制御するための位置の制御量をニューラルネットワークの出力層として出力する制御パラメータ生成部２０２と、出力された位置の制御量を用いて二つのモノの位置関係を制御するための電流または電圧を制御する制御部２０３と、二つのモノの位置関係を制御するための電流または電圧を用いて二つのモノの位置関係の一方の位置を移動させる駆動部２０４を備えたので、個々のモノの個体差または二つのモノの位置関係の誤差があっても単眼カメラのみで位置合わせを行うことができるという効果がある。
【００３５】  今回、ニューラルネットワークを一つ使う実施例について説明したが、必要に応じて複数使用する必要が出てくる。なぜならば、今回のように入力を画像、出力を数値とした場合、この数値の近似精度には限界があり、状況によっては数％程度の誤差が出てきてしまう。図４のステップ２の挿入開始付近の位置から、挿入開始位置までの量次第では、ステップＳ１０５の判定が常にNoになってしまい動作が完了しない場合がある。そのような場合には、図７のように複数のネットワークを用いる。  図７は、実施の形態１におけるニューラルネットワークにおいて、複数のネットワークをもちいたフローチャートである。図４のステップＳ１０４の詳細ステップを示している。複数のパラメータは図２の制御パラメータ生成部に含まれている。
【００３６】  ステップＳ７０１において、制御パラメータ生成部２０２は、入力された画像に基づいてどのネットワークを用いるかを選択する。  ループ回数が１回目または得られた制御量が25mm以上の場合はニューラルネットワーク１を選択してステップＳ７０２に進む。また、ループ回数が２回目以降で得られた制御量が５mm以上２５mm未満の場合はニューラルネットワーク２を選択してステップＳ７０３に進む。さらにループ回数が２回目以降で得られた制御量が５mm未満の場合はニューラルネットワーク３を選択してステップＳ７０４に進む。ステップＳ７０２〜ステップＳ７０４において選択されたニューラルネットワークを用いて制御量を算出する。  例えば、各ニューラルネットワークはオス側コネクタ１１０とメス側コネクタ１２０の距離もしくは制御量応じて学習されており、図中のニューラルネットワーク３は誤差が±1mm、±１度の範囲内の学習データを、ニューラルネットワーク２は±１〜±１０mm、±１〜±５度の範囲の学習データを、と段階的に学習するデータの範囲をかえている。ここで各ニューラルネットワークにおいて使用する画像の範囲をオーバーラップさせない方が効率的である。  また、この図７では３つの例を示しているが、ネットワークの数は特に制限がない。このような方式を用いる場合には、どのネットワークを使用するのかを決めるステップＳ７０１の判別機能を「ネットワーク選択スイッチ」として用意する必要がある。このネットワーク選択スイッチは、ニューラルネットワークでも構成できる。この場合、入力層への入力画像、出力層の出力はネットワーク番号になる。画像データは、全てのネットワークで使用している画像、ネットワーク番号のペアを使用する。
【００３７】    尚、複数のニューラルネットワークを用いた例についてもコネクタを用いて説明したが、この技術の適用はコネクタの嵌合に限られない。例えば基板にＩＣを載せる場合にも適用できるし、特に足の寸法誤差が大きいコンデンサ等を基板の穴に挿入するにおいても、同様の方法を用いれば効果を奏するものである。  また、複数のニューラルネットワークを用いた例についても必ずしも基板への挿入に限った話ではなく、画像と制御量の関係から制御量を求める位置制御全般に利用できる。この発明においては、ニューラルネットワークを用いて画像と制御量との関係を学習させることで、モノとモノとの位置合わせを行う際の各々の個体差を吸収できるというメリットがあり、より、精度よく制御量を算出できる。
【００３８】  したがって、二つのモノが存在する画像を撮像する撮像部２０１と、撮像された二つのモノの画像の情報をニューラルネットワークの入力層に入力し、二つのモノの位置関係を制御するための位置の制御量をニューラルネットワークの出力層として出力する制御パラメータ生成部２０２と、出力された位置の制御量を用いて二つのモノの位置関係を制御するための電流または電圧を制御する制御部２０３と、二つのモノの位置関係を制御するための電流または電圧を用いて二つのモノの位置関係の一方の位置を移動させる駆動部２０４を備え、制御パラメータ生成部２０２は、複数のニューラルネットワークから一つを選択する構成としたので、個々のモノの個体差または二つのモノの位置関係の誤差があっても位置合わせを行うことをより精度よく行えるという効果がある。
【００３９】  実施の形態２．  実施の形態１においては、位置が既知である嵌合状態のオス側コネクタ１１０とメス側コネクタ１２０に対し、ロボットアーム１００の把持部１０１でオス側コネクタ１１０を把持する。そして、既知の引き抜き方向に把持部１０１を動かしながら挿入開始位置まで動かすとともに、単眼カメラ１０２で複数枚画像を取得していた。実施の形態２においては、オス側コネクタ１１０とメス側コネクタ１２０の嵌合位置が未知であった場合について説明する。
【００４０】  ロボットが自ら学習し適切な行動を獲得する手法の先行研究として、強化学習と呼ばれる手法が研究されている。この手法では、ロボットが様々な動作を試行錯誤的に行い、良い結果を出した行動を記憶しながら結果として行動を最適化するのだが、行動の最適化のためには大量な試行回数を必要としている。  この試行回数を減らす手法として、強化学習の中で方策オン(on policy)と呼ばれる枠組みが一般的に用いられている。しかしながら、この枠組みをロボットアームのティーチングに応用するには、ロボットアームや制御信号に特化した様々な工夫を行う必要があるため困難であり、実用化までには至っていない。  実施の形態２では、実施の形態１におけるようなロボットが様々な動作を試行錯誤的に行い、良い結果を出した行動を記憶しながら結果として行動を最適化のための大量な試行回数を軽減することができる形態について説明する。
【００４１】  システム構成を説明する。特に記述しない部分については実施の形態１と同じである。全体のハードウエア構成としては実施の形態１の図１と同じであるが、ロボットアーム１００には把持部１０１にかかる負荷を計測する力覚センサ８０１(図１には図示していない)が付加されている点が異なる。
【００４２】  図８は、実施の形態２における位置制御装置の機能構成図を示す。図２との違いは、力覚センサ８０１、経路決定部８０２、が追加されており、かつ経路決定部８０２は、Critic部８０３、Actor部８０４、評価部８０５、経路設定部８０６から構成されている。  図９は、実施の形態２における位置制御装置のハードウエア構成図である。図３と異なるのは、力覚センサ８０１が入出力インターフェース３０１と電気的または通信可能に接続されている点のみである。また、入出力インターフェース３０１、プロセッサ３０２、メモリ３０３は、図８の制御パラメータ生成部２０２の機能を構成するとともに、経路決定部８０２の機能も構成する。したがって力覚センサ８０１と単眼ガメラ２０１と入出力インターフェース３０１間、入出力インターフェース３０１と制御回路間３０４間は別体として構成されていてもよい。
【００４３】  次に図８の詳細について説明する。  力覚センサ８０１は、ロボットアーム１００の把持部１０１にかかる負荷を計測するものであり、例えば図１でいうオス側コネクタ１１０とメス側コネクタ１２０が当接した場合の力の値を計測できるものである。  Critic部８０３及びActor部８０４は、S3、S4は従来の強化学習でいう、Critic部、Actor部と同じである。  ここで従来の強化学習手法について説明する。本実施例では強化学習の中でもActor-Criticモデルと呼ばれるモデルを使用している（参考文献：強化学習 :  R.S.Sutton and A.G.Barto 2000年12月出版）。Actor部８０４、Critic部８０３は環境の状態を撮像部２０１や力覚センサ８０１を通じて取得している。Actor部８０４は、センサデバイスを用いて取得した環境状態Iを入力とし、ロボットコントローラへ制御量Aを出力する関数である。Critic部８０３はActor部８０４に嵌合が適切に成功するよう、入力Iに対してActor部８０４が出力Aを適切に学習するための機構である。  以下、従来の強化学習手法の方式に関して記載する。
【００４４】  強化学習では、報酬Rと呼ばれる量を定義し、そのRを最大化するような行動AをActor部８０４が獲得できるようにしている。一例として、学習する作業を実施の形態１に示すようなオス側コネクタ１１０とメス側コネクタ１２０との嵌合とすると、嵌合が成功した時にR = 1, そうでない時はR = 0などと定義される。行動Aは、今回は現時点の位置（X、Y、Z、Ax、Ay、Az）からの移動補正量を示し、A ＝（ｄX、ｄY、ｄZ、ｄAx、ｄAy、ｄAz）である。ここで、X,Y,Zはロボットの中心部を原点とする位置座標を示し、Ax、Ay、Azは、それぞれ、X軸、Y軸、Z軸を中心とする回転量を示している。移動補正量は、現在の地点からオス側コネクタ１１０の嵌合について最初に試行するための嵌合開始位置からの移動量である。環境状態、すなわち試行結果の観測は撮像部２０１からの画像と力覚センサ８０１の値から得られる。
【００４５】  強化学習では、状態価値関数V(I)と呼ばれる関数をCritic部８０３で学習する。ここで、時刻t = 1（例えば嵌合試行開始時）の時に、状態I(1)にて行動A(1)をとり、時刻t = 2（例えば１回目の嵌合試行終了後２回目の嵌合開始前）の時に環境がI(2)に変化し、報酬量R(2)(初回の嵌合試行結果)を得たとする。様々な更新式が考えられるが、下記を一例として挙げる。V(I)の更新式は以下で定義される。
【００４６】
【数１】
0006376296.tif 000002
【００４７】
【数２】
0006376296.tif 000003
ここで、δは予測誤差、αは学習係数であり0 〜 1までの正の実数、γは割引率であり0〜 1までの正の実数である。Actor部８０４は入力をI、出力をA(I)とし以下の通り、A(I)が更新される。δ>0の時
【００４８】
【数３】
0006376296.tif 000004
δ≦0の時
【００４９】
【数４】
0006376296.tif 000005
ここで、σは出力の標準偏差の値を示し、Actorは状態Iにおいて、A(I)に平均0、分散をσ2とした分布を持つ乱数を加算する。すなわち、試行の結果いかんにかかわらず、ランダムに２回目の移動補正量が決定されるようなものである。  なお、上記の更新式を一例として用いているが、Actor-Criticモデルも様々な更新式があり、上記にとらわれず一般的に使用されているモデルであれば変更が可能である。
【００５０】  ただし、Actor部８０４は上記の構成にて各状態にあった適切な行動を覚えることになるが、実施の形態１のとおりに動くのは学習が完了した時点である。学習中は経路設定部８０６から学習時の推奨行動が計算され受け渡されるため、学習時は制御部２０３に対して、経路設定部８０６からの移動信号をそのまま受けて制御部２０３が駆動部２０４を制御することになる。  すなわち、Actor-Criticの従来のモデルでは、嵌合が成功した時にR = 1, そうでない時はR = 0と定義されるため、嵌合が成功した時に初めて学習が行われ、かつ嵌合が成功するまでは、試行に用いられる移動補正量はランダムに与えられるため、試行の失敗度合に応じた次の試行のための移動補正量の決定は行われない。これは、Actor-Criticの従来のモデルだけでなく、Q−Learningなど他の強化学習モデルを用いても嵌合の成功と失敗そのものしか評価しないため、同様な結果となる。本発明の本実施の形態においては、この失敗度合を評価して次の試行のための移動補正量の決定するプロセスについて説明する。
【００５１】  評価部８０５は、各嵌合試行時における評価を行う関数を生成する。 図１０は、実施の形態２におけるオス側コネクタ１１０とメス側コネクタ１２０との嵌合の試行の様子を示す図である。  例えば図１０（A）のような画像が試行の結果として手に入ったとする。この試行では、コネクタの嵌めあい位置が大きくずれるため失敗している。この時にどの程度成功に近いのかを計測し数値化し、成功度合を示す評価値を求める。数値化の方法として、例えば図１０（B）のように、画像中にて挿入先側のコネクタ表面積（ピクセル数）を計算する方法がある。この方法では、オス側コネクタ１１０とメス側コネクタ１２０の挿入失敗を、ロボットアーム１００の力覚センサ８０１によって検知した時にメス側コネクタ１２０嵌合面の表面のみ他の背景とは異なる色を塗布、あるいはシールを貼ってあることによって、画像からのデータ取得と計算がより簡易になる。また、これまで述べた方法はカメラの数が一台の場合だが、複数台のカメラを並べ撮影し、撮影されたそれぞれの画像を用いた結果を総合しても構わない。  また、コネクタ表面積以外にも２次元方向（例えばＸ，Ｙ方向）のピクセル数等を取得しても同様なことが評価できる。
【００５２】  経路設定部８０６は、処理として二つのステップにわかれる。  第一ステップでは、評価部８０５にて処理された評価結果とロボットが実施に動いた動きを学習する。ロボットの移動補正量をA、評価部８０５にて処理された成功度合を示す評価値をEとした時、経路設定部８０６はAを入力とし、Eを出力とする関数を用意し、近似する。関数としては一例としてRBF (Radial Basis Function)ネットワークが上げる。RBFは、様々な未知な関数を簡単に近似することが可能な関数として知られている。  例えば、k番目の入力
【００５３】
【数５】
0006376296.tif 000006
に対して出力f(x)は、以下のように定義される。
【００５４】
【数６】
0006376296.tif 000007
【００５５】
【数７】
0006376296.tif 000008
ここで、σは標準偏差、μはRBFの中心を意味する。
【００５６】RBFにて学習するデータは、単体ではなく、試行開始時から最新のデータまでの全てを用いる。例えば、現在、N回目の試行の場合には、N個のデータが準備されている。学習によって上記のW=(w_1,・・・w_J)を決める必要があり、その決定については様々な方法が考えられるが、下記のようなRBF補完が一例としてあげられる。
【００５７】
【数８】
0006376296.tif 000009
【００５８】
【数９】
0006376296.tif 000010
とした時に
【００５９】
【数１０】
0006376296.tif 000011
にて、学習が完了する。
【００６０】  RBF補完によって近似を終えた後は、最急降下法やPSO (Particle Swam Optimization)などの一般的な最適化手法により最小値を上記RBFネットワークにより求める。この最小値を次の推奨値として次のActor部８０４へ入力する。  要するに、上記事例を具体的に説明すると、失敗した時の移動補正量に対する表面積や2次元方向のピクセル数を評価値として試行回数ごとに時系列に並べてその並びの値を用いて最適解を求めるものである。もっとシンプルに2次元方向のピクセル数を減少させる方向に一定割合で移動させた移動補正量を求めてもよい。
【００６１】  次に動作フローを図１１に示す。  図１１は、実施の形態２における位置制御装置の経路学習におけるフローチャートである。  まず、ステップS１１０１において、ロボットアーム１００の把持部１０１は、オス側コネクタ１１０を把持する。このオス側コネクタ１１０の位置や姿勢は図８の制御部２０３側で事前に登録されており、あらかじめ制御部２０３側に登録された制御プログラムに基づいて動作される。
【００６２】  次に、ステップＳ１１０２において、ロボットアーム１００をメス側コネクタ１２０の挿入位置近辺まで近づける。このメス側コネクタ１１０のおおよその位置や姿勢は、図８の制御部２０３側で事前に登録されており、あらかじめ制御部２０３側に登録された制御プログラムに基づいてオス側コネクタ１１０の位置が、動作される。ここまでは実施の形態１における図４のフローチャートのステップＳ１０１〜Ｓ１０２と同じである。
【００６３】  次に、ステップＳ１１０３において、経路決定部８０２は、単眼カメラ１０２の撮像部２０１に対し、画像を撮像するよう指示し、単眼カメラ１０２は、把持部１０１が把持しているオス側コネクタ１１０と、挿入先となるメス側コネクタ１２０とが両方映っている画像を撮像する。さらに、経路決定部８０２は、制御部２０３と単眼カメラ１０２に対し、現在位置付近での画像を撮像するよう指示し、制御部２０３に指示した複数の移動値に基づいて駆動部２０４によって移動された位置において単眼カメラはオス側コネクタ１１０と、挿入先となるメス側コネクタ１２０とが両方映っている画像を撮像する。
【００６４】  次に、ステップＳ１１０４において、経路決定部８０２部のActor部８０４は、嵌合を行うための移動量を制御部２０３に与えて駆動部２０４によってロボットアーム１００を移動させ、オス側コネクタ１１０と、挿入先となるメス側コネクタ１２０の嵌合を試行する。  次にステップＳ１１０５において、駆動部２０４によってロボットアーム１００を移動中にコネクタ同士が接触した場合には移動量の単位量ごとに力覚センサ８０１の値と、単眼カメラ１０２からの画像を経路決定部８０２の評価部８０５とCritic部８０３が記憶する。
【００６５】  そして、ステップＳ１１０６において嵌合が成功したかを評価部８０５とCritic部８０３が確認する。  通常、この時点では嵌合が成功しない。そのため、ステップＳ１１０８において評価部８０５は、成功度合を図１０で説明した方法で評価し、位置合わせに対する成功度合を示す評価値を経路設定部８０６に与える。  そして、ステップＳ１１０９において、経路設定部８０６は、上述した方法を用いて学習を行い、経路設定部８０６は、次の推奨値をActor部８０４に与えるとともに、Critic部８０３が報酬量に応じて求めた値を出力し、Actor部８０４が受信する。ステップＳ１１１０において、Actor部８０４は、Critic部８０３が出力した報酬量に応じて求めた値と経路設定部８０６が出力した次の推奨値を加算して移動補正量を求める。尚、このステップにおいて、経路設定部８０６が出力した次の推奨値を用いるだけで十分な効果がある場合には、Critic部８０３が出力した報酬量に応じて求めた値を加算する必要がないことは言うまでもない。また、Actor部８０４は、移動補正量を求めるために、Critic部８０３が出力した報酬量に応じて求めた値と経路設定部８０６が出力した次の推奨値の加算比率を設定し、加算比率に応じて変更してもよい。
【００６６】その後、ステップＳ１１１１において、Actor部８０４は、移動補正量を制御部２０３に与えてロボットアーム１００の把持部１０１を移動させる。  その後、再度、ステップ１１０３に戻り、移動補正量によって移動された位置で画像を撮影し、嵌合動作を行う。これを成功するまで繰り返す。  嵌合が成功した場合、ステップＳ１１０７において、嵌合成功後は、嵌合成功した時のステップＳ１１０２からＳ１１０６までのIについてActor部８０４及びCritic部８０３の学習を行う。最後に経路決定部８０２は  この学習されたニューラルネットワークのデータを制御パラメータ生成部２０２に与えることで、実施の形態１における動作が可能となる。
【００６７】  尚、上記ステップＳ１１０７において、嵌合成功した場合ＩについてActor部８０４及びCritic部８０３の学習を行うとしているが、嵌合試行開示から成功まで全ての試行時のデータを用いてActor部８０４及びCritic部８０３が学習してもよい。その場合、実施の形態１において、制御量に応じて複数のニューラルネットワークを形成する場合について、記載しているが、嵌合の成功の位置がわかれば、嵌合成功までの距離を用いて制御量の大きさに応じた適切な複数のニューラルネットワークを同時に形成させることが可能となる。
【００６８】  強化学習モジュールとしてActor−Criticモデルをベースに記載したが、Q−Learningなど他の強化学習モデルを用いても構わない。  関数近似としてRBFネットワークをあげたが、他の関数近似手法（線形、二次関数、など）を用いても構わない。  評価手法として、コネクタの表面に色違いにする手法をあげたが、他の画像処理技術によりコネクタ間のずれ量等を評価手法としても構わない。
【００６９】また、実施の形態１及び本実施の形態で述べたように、この技術の適用はコネクタの嵌合に限られない。例えば基板にＩＣを載せる場合にも適用できるし、特に足の寸法誤差が大きいコンデンサ等を基板の穴に挿入する場合においても、同様の方法を用いれば効果を奏するものである。  また、必ずしも基板への挿入に限った話ではなく、画像と制御量の関係から制御量を求める位置制御全般に利用できる。この発明においては、ニューラルネットワークを用いて画像と制御量との関係を学習させることで、モノとモノとの位置合わせを行う際の各々の個体差を吸収できるというメリットがあり、より、精度よく制御量を算出できる。
【００７０】  したがって、本実施形態においては、制御量を学習するためにActor-Criticモデルを用いる際、Actor部８０４は、Critic部８０３が報酬量に応じて求めた値と、経路設定部８０６が評価値に基づいて求めた推奨値とを加算して試行するための移動補正量を求めることで、通常のActor-Criticモデルでは、位置合わせが成功するまでは非常に多くの試行錯誤数が必要だが、本発明により大幅に位置合わせの試行数を削減することが可能である。
【００７１】  尚、本実施の形態においては、位置合わせ失敗時の撮像部２０１からの画像を評価することによって位置合わせの試行回数を削減することについて記載したが、位置合わせ試行時の力覚センサ８０１の値を用いても試行回数を削減することができる。例えば、コネクタの嵌合または二つのモノの挿入を含む位置合わせにおいて、失敗時は力覚センサ８０１の値がある閾値以上になった時に二つのモノの位置が嵌合または挿入が完了している位置にあるか否かをActor部８０４が判断することが一般的である。その場合に、ａ．閾値に達した時点で嵌合または挿入途中だった場合、ｂ．嵌合と挿入は完了しているが嵌合または挿入途中の力覚センサ８０１の値が、ある程度の値を示す場合なども考えられる。  ａ．の場合は、力覚センサ８０１の値と画像の両方を学習させる方法があり、詳細は実施の形態３に記載の方法を用いれば実施できる。  ｂ．の場合も、力覚センサ８０１の値のみで学習する方法として実施の形態３に記載の方法を用いれば、実施できる。また、別の方法として、Actor-Criticモデルでの報酬Rの定義において、嵌合または挿入最中にかかった最大負荷をFとし、Aを正の定数とした時、成功時、R = (1-A/F), 失敗時 R = 0と定義しても同様の効果を奏することができる。
【００７２】  実施の形態３．  本実施の形態においては、実施の形態２において、位置合わせが成功した後に行う学習過程において効率的にデータを収集する方法について説明する。したがって特に説明しない場合については実施の形態２と同じものとする。すなわち、実施の形態３における位置制御装置の機能構成図は図８であり、ハードウエア構成図は図９となる。
【００７３】  動作においては、実施の形態２における図１１のステップＳ１１０７の動作の際により効率的に学習データを収集する方法について以下説明する。
【００７４】  図１２は、実施の形態３における位置制御装置の経路学習におけるフローチャートを示している。  まず、ステップＳ１２０１において、図１１のステップＳ１１０７においてオス側コネクタ１１０とメス側コネクタ１２０の嵌合が成功した場合、経路設定部８０６は、変数をi=0, j =1, k =1 として初期化する。 変数iは、以降のロボットアーム１００の学習回数、変数kは、オス側コネクタ１１０とメス側コネクタ１２０のとの嵌合が外れた時からの学習回数、変数jは図１２のフローチャートのループ回数である。
【００７５】  次に、ステップＳ１２０２において、経路設定部８０６は、図１１ステップＳ１１０４において嵌合を行うために与えた移動量から１ｍｍ分、戻すようにActor部８０４を経由して制御部２０３に移動量を与え、駆動部２０４によってロボットアーム１００を移動させる。そして変数iに対して１加算する。ここで、移動量から１ｍｍ戻す指示を与えたが、必ずしも1ｍｍに限る必要はなく、0.5ｍｍでも2ｍｍなどの単位量でもよい。
【００７６】  次に、ステップＳ１２０３において、経路設定部８０６はその時の座標をO(i)（この時i = 1）として記憶する。  ステップＳ１２０４において、経路設定部８０６はO(i)を中心に、ランダムに移動量（ΔX、ΔY、ΔZ、ΔAx、ΔAy、ΔAz）を決定し、Actor部８０４を経由して制御部２０３に移動量与え、駆動部２０４によってロボットアーム１００を移動させる。この時、この移動量の最大量は、移動ができる範囲で任意に設定することができる。
【００７７】  次にステップＳ１２０５において、ステップＳ１２０４において移動後の位置において、Actor部８０４は、移動量（ΔX、ΔY、ΔZ、ΔAx、ΔAy、ΔAz）に対応する力覚センサ８０１の値を収集するとともに、ステップＳ１２０６において、Critic部８０３とActor部８０４は、移動量に−１を乗じた（-ΔX、-ΔY、-ΔZ、-ΔAx、-ΔAy、-ΔAz）とオス側コネクタ１１０を保持するためにかかる力を計測する力覚センサ８０１のセンサ値を学習データとして記録する。
【００７８】  次にステップＳ１２０７において、経路設定部８０６は、集めたデータ数が規定数Jに到達できたかを判定する。データ数が足りなければ、ステップＳ１２０８において変数j に１加算してステップＳ１２０４に戻り、移動量（ΔX、ΔY、ΔZ、ΔAx、ΔAy、ΔAz）を乱数によって変えてデータを取得し、規定数J個のデータが溜まるまでＳ１２０４〜Ｓ１２０７繰り返す。  規定数のデータが溜まったら、ステップＳ１２０９において、経路設定部８０６は、変数j を１にしたうえで、ステップＳ１２１０において、オス側コネクタ１１０とメス側コネクタ１２０のとの嵌合が外れたかを確認する。
【００７９】  外れていなかったら、ステップＳ１２１１を経由してステップＳ１２０２に戻る。  ステップＳ１２１１において経路設定部８０６は、ロボットアーム１００の座標を、移動量を与える前の座標O(i)に戻すようにActor部８０４を経由して制御部２０３に移動量与え、駆動部２０４によってロボットアーム１００を移動させる。  その後、ステップＳ１２０２からステップＳ１２１０までのループをオス側コネクタ１１０とメス側コネクタ１２０のとの嵌合が外れるまで、嵌合を行うために与えた移動量から1mmもしくは単位量戻す処理と、戻した位置を中心に移動量を与えて力覚センサ８０１のデータを収集する処理とを繰り返す。オス側コネクタ１１０とメス側コネクタ１２０のとの嵌合が外れた場合は、ステップＳ１２１２に進む。
【００８０】  ステップＳ１２１２において、経路設定部８０６は、変数ｉをＩ（Ｉはオス側コネクタ１１０とメス側コネクタ１２０のとの嵌合が外れたと判定された時のｉの値よりも大きい整数）とするとともに、嵌合を行うために与えた移動量から例えば10mm（ここもその他の値でもよい）戻すようにActor部８０４を経由して制御部２０３に移動量与え、駆動部２０４によってロボットアーム１００を移動させる。
【００８１】  次に、ステップＳ１２１３において、経路設定部８０６は、ステップＳ１２１２で移動したロボットアーム１００の座標の位置を中心位置O(i+k)として記憶する。  次に、ステップＳ１２１４において、経路設定部８０６は、中心位置O(i+k)を中心に、再度、ランダムに移動量（ΔX、ΔY、ΔZ、ΔAx、ΔAy、ΔAz）を決定した上で、Actor部８０４を経由して制御部２０３に移動量与え、駆動部２０４によってロボットアーム１００を移動させる。
【００８２】  ステップＳ１２１５において、Critic部８０３とActor部８０４は、移動量（ΔX、ΔY、ΔZ、ΔAx、ΔAy、ΔAz）にて移動後のロボットアーム１００位置において、単眼カメラ１０２の撮像部２０１が撮像した画像を取得する。  ステップＳ１２１６において、Critic部８０３とActor部８０４は、移動量に−１を乗じた（-ΔX、-ΔY、-ΔZ、-ΔAx、-ΔAy、-ΔAz）と画像を1つの学習データとして記録する。
【００８３】  ステップＳ１２１７において、経路設定部８０６は、集めたデータ数が規定数Jに到達できたかを判定する。データ数が足りなければ、ステップＳ１２１２において変数j に１加算してステップＳ１２１４に戻り、移動量（ΔX、ΔY、ΔZ、ΔAx、ΔAy、ΔAz）を乱数によって変えてデータを取得し、規定数J個のデータが溜まるまでＳ１２１４〜Ｓ１２１７繰り返す。  なお、Ｓ１２０４における移動量（ΔX、ΔY、ΔZ、ΔAx、ΔAy、ΔAz）とＳ１２０４での移動量のランダム値の最大値は異なる値を取ることができる。  以上の方法で取得した学習データは、Actor部８０４及びCritic部８０３の学習を行う。
【００８４】  図１３は実施の形態３におけるニューラルネットワークと、ニューラルネットワークの学習則の例を示す図である。  実施の形態１、２については、力覚センサ８０１のデータを用いた学習方法について記載していなかった。実施形態１と２は、入力層は画像のみであったのに対し、実施の形態３においては、入力層に画像に替えて力覚センサ８０１の値をいれればよい。力覚センサ８０１の値は、３つ（力と２方向のモーメント）の場合と、６つ（３方向と３方向モーメント）いずれでもよい。出力層は制御量（ΔX、ΔY、ΔZ、ΔAx、ΔAy、ΔAz）が出力される。尚、オス側コネクタ１１０とメス側コネクタ１２０のとの嵌合が外れている場合には、入力層に画像と力覚センサ８０１の値が同時に入力されることとなる。  ニューラルネットワークの学習過程において、入力された画像及び力覚センサ８０１の値から中間層を経て得られた出力層の出力値が画像及び力覚センサ８０１の値とセットで記憶された制御量に近似させるために中間層のパラメータを最適化させることが行われ、学習されることなる。  最後に経路決定部８０２は  この学習されたニューラルネットワークのデータを制御パラメータ生成部２０２に与えることで、実施の形態１における動作が可能となる。
【００８５】  尚、本実施の形態においては、オス側コネクタ１１０とメス側コネクタ１２０のとの嵌合のための移動から少しずつ戻しつつ、ロボットアーム１００を微小に周辺に移動させて学習させるために、嵌合がはずれるまでは単眼カメラ１０２の画像の画素量次第では十分な学習できない前提で説明していた。  しかしながら単眼カメラ１０２の画像が十分高精細でロボットアーム１００を微小に周辺に移動させた画像であっても十分に学習可能である場合は、単眼カメラ１０２の画像のみで学習してもよいし、オス側コネクタ１１０とメス側コネクタ１２０とが嵌合している場合であっても単眼カメラ１０２の画像と力覚センサ８０１の値を両方用いてもよい。
【００８６】  さらに、実施の形態１、２において、複数のニューラルネットワークを使用するケースについて説明している。本実施の形態においても、例えばオス側コネクタ１１０とメス側コネクタ１２０とが嵌合している状態と、オス側コネクタ１１０とメス側コネクタ１２０とが嵌合していない場合とで、ニューラルネットワークを区別してもよい。上記に説明したようにオス側コネクタ１１０とメス側コネクタ１２０とが嵌合している状態では力覚センサ８０１のみを入力層と形成し、嵌合からはずれたら画像のみで入力層を形成した方がより精度のよい学習が行えるし、画像のみで学習させる場合でも嵌合している場合としていない場合を区別することで、画像の構成がことなるために精度よい学習が行える。
【００８７】  尚、実施の形態１、２で述べたように、本実施の形態にいても、この技術の適用はコネクタの嵌合に限られない。例えば基板にＩＣを載せる場合にも適用できるし、特に足の寸法誤差が大きいコンデンサ等を基板の穴に挿入する場合おいても、同様の方法を用いれば効果を奏するものである。  また、必ずしも基板への挿入に限った話ではなく、画像と制御量の関係から制御量を求める位置制御全般に利用できる。この発明においては、ニューラルネットワークを用いて画像と制御量との関係を学習させることで、モノとモノとの位置合わせを行う際の各々の個体差を吸収できるというメリットがあり、より、精度よく制御量を算出できる。
【００８８】  したがって、本実施の形態においては、二つのモノについて挿入を伴う位置合わせを含む場合、制御量を学習するために、挿入状態から抜き出す際に挿入状態からの経路上とその周辺とに移動させるよう移動量を指示する経路設定部８０６と、移動された位置の出力層、移動された位置の力覚センサ８０１の値を入力層として学習させるために移動された位置と力覚センサ８０１の値を取得するＡｃｔｏｒ部８０４とを、備えたので、効率的に学習データを収集することができる。
【符号の説明】
【００８９】１００：ロボットアーム、１０１：把持部、１０２：単眼カメラ１１０：オス側コネクタ１２０：メス側コネクタ２０１：撮像部２０２：制御パラメータ生成部２０３：制御部２０４：駆動部３０１：入出力インターフェース３０２：プロセッサ、３０３：メモリ、３０４：制御回路、３０５：モータ、８０１：力覚センサ８０２：経路決定部８０３：Critic部８０４：Actor部８０５：評価部８０６：経路設定部
【要約】  二つのモノについて挿入を伴う位置合わせを含む場合、制御量を学習するために、挿入状態から抜き出す際に挿入状態からの経路上とその周辺とに移動させるよう移動量を指示する経路設定部（８０６）と、移動された位置の出力層、移動された位置の力覚センサ（８０１）の値を入力層として学習させるために移動された位置と力覚センサ（８０１）の値を取得するＡｃｔｏｒ部（８０４）とを、備えたことにより、効率的に学習データを収集することができる。【図１】
0006376296.tif 000012
【図２】
0006376296.tif 000013
【図３】
0006376296.tif 000014
【図４】
0006376296.tif 000015
【図５】
0006376296.tif 000016
【図６】
0006376296.tif 000017
【図７】
0006376296.tif 000018
【図８】
0006376296.tif 000019
【図９】
0006376296.tif 000020
【図１０】
0006376296.tif 000021
【図１１】
0006376296.tif 000022
【図１２】
0006376296.tif 000023
【図１３】
0006376296.tif 000024