以下、図面を参照しつつ、本開示に係る技術思想の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
<A.システム構成>
まず、本実施の形態に従う嵌合作業システムの構成について説明する。
図1は、本実施の形態に従う嵌合作業システム100の一構成例を示す図である。図1を参照して、嵌合作業システム100は、嵌合作業装置101と、情報処理装置102と、制御装置103とを備える。
嵌合作業装置101は、架台104と、第1の直動ユニット105と、第2の直動ユニット106と、第3の直動ユニット107と、電動アクチュエータ108A,108B,108C(以降、総称する場合は電動アクチュエータ108と呼ぶ)と、作業ヘッド109と、回転ユニット取付部材110と、角度調整機構111と、把持機構112と、ワーク設置台113とを備える。
架台104は、第1の直動ユニット105と、第2の直動ユニット106と、第3の直動ユニット107と、それぞれの直動ユニットを駆動させる電動アクチュエータ108A,108B,108Cと、作業ヘッド109とからなる位置調整装置の装着を受ける台である。
第1の直動ユニット105、第2の直動ユニット106および第3の直動ユニット107は、それぞれ直交するX軸、Y軸、Z軸方向に作業ヘッド109を移動させる。ある局面において、各直動ユニットは、フレームと、リニアシャフトと、リニアブッシュと、電動アクチュエータ108から動力を伝達するための台形ネジおよびボールネジナットとを備えていてもよい。また、ある局面において、各直動ユニットは、リニアシャフトの代わりに、リニアガイドや、フレームの表面を滑るガイドローラーを備えていてもよい。また、ある局面において、各直動ユニットは、台形ネジの代わりに駆動ベルトを備えていてもよい。また、各直動ユニットの端部には、各電動アクチュエータ108の初期位置の決定と、安全機構のための、衝突検知センサーが設けられていてもよい。
電動アクチュエータ108は、それぞれの直動ユニットを駆動させる。ある局面において、電動アクチュエータ108は、ステッピングモータであり、台形ネジや駆動ベルトを介して動力を各直動ユニットに伝達してもよい。また、ある局面において、電動アクチュエータ108は、ACサーボモータまたはエンコーダーを備えたギアードモータであってもよい。情報処理装置102は、ステッピングモータのステップ数や、エンコーダーの回転数によって、作業ヘッド109および把持機構112の現在位置を算出してもよい。
作業ヘッド109は、上下方向(Z軸方向)に動作するように第3の直動ユニット107に取り付けられている。また、作業ヘッド109は、作業に必要なパーツを取り付けるためのネジ穴やアタッチメントを備える。
回転ユニット取付部材110は、作業ヘッド109に取り付けられており、角度調整機構111を取り付けるためのネジ穴やアタッチメントを備える。角度調整機構111は、把持機構112によって把持されたワークの向きを微調整する。また、角度調整機構111の根元は電動アクチュエータを用いた回転機構となっている。なお、回転機構は、角度調整機構111とは別体でもよい。角度調整機構111の詳細については後述する。把持機構112は、嵌合作業のためのワーク、例えば、接続端子のコネクタやプラグ等を把持する。把持機構112の詳細については後述する。ワーク設置台113は、嵌合作業のための片方のワーク114を設置するための台である。
情報処理装置102は、制御装置103を介して、嵌合作業装置101に対して制御命令を送信し、また、電動アクチュエータ108や角度調整機構111の電動アクチュエータのモータトルク値等を取得する。情報処理装置102の詳細は後述する。
制御装置103は、嵌合作業装置101および情報処理装置102の間のデータを相互に変換する。ある局面において、制御装置103は、マイクロコンピューターからなる制御基板であり、情報処理装置102から、嵌合作業装置101の電動アクチュエータ108や角度調整機構111の電動アクチュエータに対する指令(指令トルク、回転量、回転速度等)を受信し、それぞれの電動アクチュエータに制御信号を送信してもよい。
<B.システム構成部品のハードウェア構成>
図2は、角度調整機構111の一構成例を示す図である。図2を参照して、角度調整機構111は、基端側の第1リンクハブ32に対し先端側の第2リンクハブ33を3組のリンク機構34によって姿勢変更可能に連結したものである。先端側の第2リンクハブ33には、図1に示された把持機構112が取り付けられる。なお、ここでは3組のリンク機構34を有する角度調整機構111について示したが、リンク機構34の数は、4組以上であってもよい。
各リンク機構34は、基端側の端部リンク部材35、先端側の端部リンク部材36および中央リンク部材37で構成される。リンク機構34は、4つの回転対偶からなる4節連鎖のリンク機構である。基端側および先端側の端部リンク部材35,36はL字状の形状を有する。
基端側の端部リンク部材35の一端は、回転軸42を介して、基端側の第1リンクハブ32に回転自在に連結されている。先端側の端部リンク部材36の一端は、回転軸73を介して、先端側の第2リンクハブ33に回転自在に連結されている。中央リンク部材37は、回転軸55,75を介して、両端に端部リンク部材35,36の各他端がそれぞれ回転自在に連結されている。
角度調整機構111は、パラレルリンク機構であり、2つの球面リンク機構を組み合わせた構造を有する。端部リンク部材35,36と中央リンク部材37との各回転対偶の中心軸は、ある交差角を持っていてもよいし、平行であってもよい。
角度調整機構111は、リンクの動作のみで各リンクハブの中心軸の相対角度を調整可能であり、多関節ロボットのように直列に連結された複数の関節の動作を伴わない。このため、先端のわずかな動きに対して構成部材が大きく動くことは無く素早い動作が可能である。また、角度調整機構111は、特異点を持たず、リンクを駆動させる電動アクチュエータのモータトルク値から、任意の姿勢における把持機構112の先端に加わる力を検出できる。
第2リンクハブ33は、第1リンクハブ32から見て半球面上で姿勢を変える。そのため、第1リンクハブ32から見た第2リンクハブ33の目標位置と、各リンクの姿勢とは、必ず一対一で対応する。よって、角度調整機構111は、ロボットアーム等のマルチリンクを持つ構造と異なり、特異点を有さない。
図3は、角度調整機構111の回転軸42に姿勢制御用の電動アクチュエータ11を取り付けた一構成例を示す。電動アクチュエータ11は、減速機構62を備えたロータリアクチュエータ(モータ)である。電動アクチュエータ11は、基端側の第1リンクハブ32の上面に、電動アクチュエータ11の回転軸と回転軸42とが同軸上に位置するように設置されている。電動アクチュエータ11および減速機構62は、一体として設けられてもよい。減速機構62は、モータ固定部材63により基端側の第1リンクハブ32に固定される。
図3に示す例では、電動アクチュエータ11が3組のリンク機構34の全てに設けられているが、本実施の形態に従う角度調整機構111はこれに限られない。角度調整機構111は、リンク機構34のうち少なくとも2組に姿勢制御用の電動アクチュエータ11が設けられていれば、基端側の第1リンクハブ32に対する先端側の第2リンクハブ33の姿勢を確定することができる。
図4は、把持機構112の一構成例を示す図である。把持機構112は、対向する2枚の爪で対象物を挟み込む。本実施の形態に従う把持機構112は、エアシリンダを用いて2枚の爪を開閉させる方式である。状態Aは把持機構112の開放時の状態を示す。状態Bは把持機構112の閉じた状態を示す。図4に示す把持機構112は一例であり、本実施の形態に従う把持機構112はこれに限られない。ある局面において、把持機構112は、電動式の開閉機構、対象物を吸着する機構または他の挟み込み機構であってもよい。
図5は、把持機構112を取り付けた角度調整機構111の一例を示す図である。角度調整機構111の先端側の第2リンクハブ33は、把持機構112をネジ止めするネジ穴、はめ込み穴またはその他のアタッチメントを備えていてもよい。図5に示す構成によって、嵌合作業装置101は、把持機構112でワークを把持したときの微妙なずれを調整することができる。
図6は、嵌合作業時のワークのずれを調整したときの、把持機構112の先端の様子の一例を示す図である。嵌合作業では、状態Aのように、把持機構112が把持するワークPのわずかなずれにより、ワーク設置台113に設置されたワークHの中心軸Cと、把持機構112により把持されるワークPの中心軸C'とが一致しない場合がある。このような場合において、角度調整機構111は、把持機構112が把持するワークPの角度を調整し、状態BのようにワークHの中心軸Cと、ワークPの中心軸C'とを一致させることができる。
また、状態Cのように、ワーク設置台113またはワーク設置台113に設置されたワークHが傾いている場合がある。このような場合においても、角度調整機構111は、把持機構112が把持するワークPの角度を斜めに微調整し、状態DのようにワークHの中心軸Cと、ワークPの中心軸C'とを一致させることができる。
なお、位置調整装置は、角度調整機構111を移動させているが、本実施の形態に従う嵌合作業装置101はこれに限られない。位置調整装置は、角度調整機構111と、把持機構112およびワーク設置台113上のワークを相対的に位置決めできればよく、ある局面において、位置調整装置は、ワーク設置台113を移動させる機構を含んでもよい。
<C.回路およびソフトウェア構成>
図7は、情報処理装置102のハードウェアの一構成例を示す図である。図7を参照して、情報処理装置102は、CPU(Central Processing Unit)701と、1次記憶装置702と、2次記憶装置703と、外部機器インターフェース704と、入力インターフェース705と、出力インターフェース706と、通信インターフェース707とを備える。
CPU701は、情報処理装置102で動作するプログラムやデータを処理する。1次記憶装置702は、CPU701によって実行されるプログラムおよび参照されるデータを格納する。ある局面において、DRAM(Dynamic Random Access Memory)が1次記憶装置702として使用されてもよい。
2次記憶装置703は、プログラムやデータ等を長期間記憶する。一般的に2次記憶装置703は、1次記憶装置702よりも低速であるため、CPU701で直接使用するデータは、1次記憶装置702に配置され、それ以外のデータは、2次記憶装置703に配置される。ある局面において、HDD(Hard Disk Drive)やSSD(Solid State Drive)等の不揮発性の記憶装置が2次記憶装置703として使用されてもよい。
外部機器インターフェース704は、情報処理装置102に補助デバイスを接続する場合等に使用される。ある局面において、USB(Universal Serial Bus)インターフェースが、外部機器インターフェース704として使用されてもよい。入力インターフェース705は、キーボードやマウス等を接続するために使用される。ある局面において、USBインターフェースが、入力インターフェース705として使用されてもよい。
出力インターフェース706は、ディスプレイ等の出力デバイスを接続するために使用される。ある局面において、HDMI(登録商標)(High-Definition Multimedia Interface)やDVI(Digital Visual Interface)が出力インターフェース706として使用されてもよい。
通信インターフェース707は、外部の通信機器と通信するために使用される。ある局面において、LAN(Local Area Network)ポートや、Wi-Fi(登録商標)(Wireless Fidelity)の送受信装置等が、通信インターフェース707として使用されてもよい。また、ある局面において、情報処理装置102は、PC(Personal Computer)またはワークステーションであってもよい。本実施の形態に従う情報処理装置102の処理は、図7に示すハードウェア上で、プログラムとして実行されてもよい。
図8は、情報処理装置102を実現する機能の一構成例を示す図である。ある局面において、図8に示す機能の一部は、図7に示すハードウェア上で、プログラムが実行されることにより実現され得る。図8を参照して、情報処理装置102は、信号入力部801と、評価値関数部802と、動作パターンテーブル803と、動作決定部804と、指令生成部805と、動作結果判定部806と、評価値関数学習部807とを含む。
信号入力部801は、嵌合作業装置101から角度調整機構111の電動アクチュエータ11のモータトルク値を取得する。ある局面において、信号入力部801は、さらに、位置調整装置の電動アクチュエータ108のモータトルク値を取得してもよい。また、信号入力部801は、ワークおよび把持機構112をカメラ(図示しない)により撮影した画像や、任意のセンサーの出力値を取得してもよい。
評価値関数部802は、後述する評価値関数Fを用いて信号入力部に入力されたモータトルク値等に基づいて各動作パターンに対応する評価値を計算する。
動作パターンテーブル803は、位置調整装置および角度調整機構111の各電動アクチュエータの移動量および移動速度、加速度、指令トルク値の内の少なくとも1つが対応付けられた複数の動作パターンを保管する。動作パターンテーブル803は、角度調整機構111に関して、個別のアクチュエータの指令値ではなく、角度調整機構111の角度等を動作パターンに含めてもよい。
動作決定部804は、動作パターンテーブル803の動作パターンの中から、評価値が最大となる動作パターンを嵌合作業装置101の次の動作として選択する。指令生成部805は、動作決定部804により選択された動作パターンに基づいて、嵌合作業装置101の各電動アクチュエータへの指令値を生成し、制御装置103を介して嵌合作業装置101に送信する。
動作結果判定部806は、前回選択された動作パターンの実行前後における、角度調整機構111の各電動アクチュエータのモータトルク値を比較する。前回選択された動作パターンの実行後のモータトルク値が、前回選択された動作パターンの実行前のモータトルク値より小さい場合は、動作結果判定部806は高い報酬を出力する。他方、当該実行後のモータトルク値が当該実行前のトルク値よりも大きい場合は、動作結果判定部806は低い報酬を出力する。ここでの報酬とは、評価値関数Fを更新するための機械学習における報酬である。ある局面において、動作結果判定部806は、位置調整装置の各電動アクチュエータ108のモータトルク値も前回選択された動作パターンの実行前後における比較対象としてもよい。
評価値関数学習部807は、動作結果判定部が出力した報酬を教師信号として、動作パターンを選択した時の評価値と、教師信号との差に基づいて評価値関数Fを更新する。ある局面において、評価値関数学習部807は、予め定められた回数だけ評価値関数Fを更新するごとに、評価値関数部802で使用する評価値関数Fを最新状態に更新してもよい。
図9は、評価値関数部802の動作の一例を示す図である。評価値関数部802は、信号入力部801からモータトルク値等を取得して評価値関数Fに入力する。評価値は動作パターンごとに算出される。図9に示す例では、評価値関数部802は、n個の各動作パターンa1~anに対して評価値を算出する。ある局面において、評価値関数部802は、モータトルク値等を評価値関数Fの入力として受け付け、各動作パターンの評価値を計算するプログラムであってもよい。
評価値関数Fが出力するn個の評価値は、次に実行すべき動作パターンを選択するための指標であり、対応する評価値が最大の値を示す動作パターンが、次に実行すべき最適な動作であること示す。
そのため、動作決定部804は、n個の動作パターンの中から、最大の評価値に対応する動作パターンを次の動作として選択する。図9に示す例では、「評価値=0.614」が最大のため、動作決定部804は、「評価値=0.614」に対応する動作パターンan-3を選択する。
動作決定部804は、選択した動作パターンan-3を指令生成部805に転送する。指令生成部805は、動作パターンテーブル803を参照し、an-3に対応する指令値を生成して制御装置103に出力する。
図10は、動作パターンテーブル803の一例を示す図である。動作パターンテーブル803は、動作パターンごとに、位置調整装置の電動アクチュエータ108の移動量、移動速度、加速度および指令トルク値と、角度調整機構111の根元の回転機構の回転角度、回転速度、加速度および指令トルク値と、角度調整機構111の折れ角変更量、旋回角変更量、回転速度、加速度および指令トルク値とを格納する。
ある局面において、動作パターンテーブル803は、角度調整機構111の個別の電動アクチュエータの移動量、移動速度、加速度、および指令トルク値を格納してもよい。また、ある局面において、動作パターンテーブル803は、2次記憶装置703に記憶され、1次記憶装置702に読み出されることにより、CPU701によって参照されてもよい。
<D.嵌合作業における情報処理装置102の内部処理>
図11は、嵌合作業システム100の処理の一例を示すフローチャートである。ある局面において、図11の処理を実行するためのプログラムは2次記憶装置703に記憶され、1次記憶装置702に読み出されることにより、CPU701によって実行されてもよい。これ以降、情報処理装置102が図11の各ステップを実行するものとして当該処理を説明する。
ステップS1105において、情報処理装置102は、嵌合作業装置101がワークを把持した状態で、位置調整装置により、把持機構112で把持したワークを予め定められた位置(嵌合開始位置)に移動させるための指令を嵌合作業装置101に送信する。ステップS1110において、情報処理装置102は、変数iに1を代入する。
ステップS1115において、情報処理装置102は、変数iの値が、定数N以下であるか否かを判定する。情報処理装置102は、変数iの値が定数N以下であると判定した場合(ステップS1115にてYES)、制御をステップS1120に移す。そうでない場合(ステップS1115にてNO)、情報処理装置102は制御をステップS1155に移す。ステップS1115は、情報処理装置102がステップS1120からS1150までの処理を最大で定数Nまで繰り返すための判定処理である。
ステップS1120において、情報処理装置102は、嵌合作業装置101から、各電動アクチュエータのモータトルク値を取得する。ある局面において、情報処理装置102は、各電動アクチュエータのモータトルク値に加えて、画像や各種センサー値をカメラや各種センサーから取得してもよい。
ステップS1125において、情報処理装置102は、取得した各電動アクチュエータのモータトルク値を評価値関数部802の入力として、評価値を算出する。ある局面において、情報処理装置102は、角度調整機構111の電動アクチュエータ11のモータトルク値を評価値関数部802の入力として評価値を算出してもよい。また、ある局面において、情報処理装置102は、角度調整機構111の電動アクチュエータ11のモータトルク値および位置調整装置の電動アクチュエータ108のモータトルク値を評価値関数部802の入力として評価値を算出してもよい。
ステップS1130において、情報処理装置102は、動作パターンごとに算出された評価値の中で最大の評価値を選択し、当該最大の評価値に対応する動作パターンakを次の動作として選択する。
ステップS1135において、情報処理装置102は、指令生成部805により、選択した動作パターンakを実行するための指令を嵌合作業装置101に送信する。嵌合作業装置101は、受信した指令に基づいて、位置調整装置の電動アクチュエータ108を駆動させることにより、把持機構112の水平方向および上下方向の位置を調整し、さらに、角度調整機構111の電動アクチュエータ11を駆動させることにより、把持機構112の向きを調整する。ステップS1140において、情報処理装置102は、位置調整装置の各電動アクチュエータ108の位置情報を取得する。
ステップS1145において、情報処理装置102は、取得した位置調整装置の各電動アクチュエータ108の位置情報から、把持機構112の把持するワークが目標位置に到達したか否か(すなわち、嵌合作業が完了したか否か)を判定する。到達の判定は、たとえば、目標位置と現在位置との差分が閾値以下であるとき、到達したなどと判定する。情報処理装置102は、把持機構112の把持するワークが目標位置に到達したと判定した場合(ステップS1145にてYES)、処理を終了する。そうでない場合(ステップS1145にてNO)、情報処理装置102は制御をステップS1150に移す。
ある局面において、情報処理装置102は、把持機構112の把持するワークが目標位置に到達したか否かを判定するために、位置調整装置の上下方向の電動アクチュエータ108Cの位置情報のみを参照してもよいし、全ての電動アクチュエータ108の位置情報を参照してもよい。ある局面において、電動アクチュエータ108がステッピングモーターの場合、情報処理装置102は、電動アクチュエータ108のステップ数に基づいて作業ヘッド109および把持機構112の現在位置を算出してもよい。また、ある局面において、情報処理装置102は、電動アクチュエータ108のエンコーダーの回転数に基づいて作業ヘッド109および把持機構112の現在位置を算出してもよい。
ステップS1150において、情報処理装置102は、変数iの値をインクリメントして(変数iに1を加算する)、制御をステップS1115に移す。ステップS1155において、情報処理装置102は、動作パターンを予め定められた回数(N回)実行したが嵌合作業が完了しなかったと判定し、動作失敗の判定を行い、処理を終了する。なお、情報処理装置102は、各ワークに対して、図11の処理を順次実行する。
図12は、図11の処理の動作イメージの一例を示す図である。最初に、嵌合作業装置101は、位置調整装置により、把持機構112が把持したワークを予め定められた嵌合位置に移動させる(ステップS1105に対応)。
状態Aは、把持機構112が把持したワークが予め定められた嵌合位置に移動した直後の状態を表す。状態Aに示す例では、113に設置されたワークHの中心軸Cと、把持機構112により把持されるワークPの中心軸C'とが一致していない。
情報処理装置102は、状態Aから、図11のステップS1115~ステップS1145の処理を繰り返すことにより、嵌合作業装置101に嵌合作業をさせる。情報処理装置102は、状態Aのときの各電動アクチュエータのモータトルク値を取得する(ステップS1120に対応)。次に、情報処理装置102は、状態Aのときの各電動アクチュエータのモータトルク値を評価値関数Fの入力として、各動作パターンの評価値を算出する(ステップS1125に対応)。そして、情報処理装置102は、最も評価値の高い動作パターンan-3を選択し(ステップS1130に対応)、動作パターンan-3に対応する指令を嵌合作業装置101に送信する(ステップS1135に対応)。
状態Bは、嵌合作業装置101が動作パターンan-3を実行した直後の様子を示す。情報処理装置102は、状態Bのときの各電動アクチュエータの現在位置を取得する(ステップS1140に対応)。さらに、情報処理装置102は、取得した各電動アクチュエータの現在位置から、嵌合作業が完了したか否か(ワークが目標位置に到達したか否か)を判定する(ステップS1145に対応)。状態Bにおいて、嵌合作業は完了していないので、情報処理装置102は、再度ステップS1115からステップS1145までの処理を繰り返す。
情報処理装置102は、状態Aのときと同様にステップS1120からステップS1125までの処理を実行する。そして、情報処理装置102は、最も評価値の高い動作パターンan-1を選択し(ステップS1130に対応)、動作パターンan-1に対応する指令を嵌合作業装置101に送信する(ステップS1135に対応)。
状態Cは、嵌合作業装置101が動作パターンan-1を実行した直後の様子を示す。以下同様に、情報処理装置102は、嵌合作業の完了判定を行い、嵌合作業が完了していないと判定する間は、評価値の算出と、動作パターンを嵌合作業装置101に実行させる処理とを繰り返す。
状態Fは、嵌合作業装置101が状態Eのときに動作パターンa3を実行した直後の様子を示す。状態Fにおいて、嵌合作業は完了していることがわかる。情報処理装置102は、位置調整装置の電動アクチュエータ108Cの位置情報等から、嵌合作業の完了を検出する。嵌合作業が完了した後は、情報処理装置102は、嵌合作業装置101に、次のワークの嵌合作業を行うための指令を送信してもよい。
<E.嵌合作業の学習処理>
図11および図12で説明した例において、情報処理装置102は、角度調整機構111および位置調整装置の現在のモータトルク値等に基づいて各動作パターンの評価値を計算し、評価値が最大になる動作パターンを順次実行することで動作を成功させる。そのため、図9の評価値関数Fは、モータトルク値等に基づいて次に実行すべき最適な動作パターンに対して最大の評価値を出力するよう最適化されている必要がある。
しかし、嵌合処理の対象となるワークの初期状態は、把持機構112に把持されるごとに変化する可能性ある。また、嵌合作業装置101が動作パターンを実行することで、把持機構112により把持されたワークの姿勢も変化する可能性がある。これらのあらゆる状態を想定したルールベースの動作プログラムの構築は困難である。よって、本実施の形態に従う嵌合作業システム100は、強化学習により、繰り返し動作を試行する過程で評価値関数Fを最適化する。
図13は、嵌合作業システム100の嵌合作業の学習処理の一例を示すフローチャートである。ある局面において、図13の処理を実行するためのプログラムは、2次記憶装置703に記憶され、1次記憶装置702に読み出されることにより、CPU701によって実行されてもよい。これ以降、情報処理装置102が図13の各ステップを実行するものとして当該学習処理を説明する。
ステップS1310において、情報処理装置102は、変数jに1を代入する。ステップS1320において、情報処理装置102は、変数jの値が定数J1以下であるか否かを判定する。情報処理装置102は、変数jの値が定数J1以下であると判定すると(ステップS1320にてYES)、ステップS1330に制御を移す。そうでない場合(ステップS1320にてNO)、情報処理装置102は、ステップS1350に制御を移す。評価値関数Fが未学習の初期状態において、情報処理装置102は、変数jが定数J1に達するまで、嵌合動作初期学習を繰り返し実行する。
ステップS1330において、情報処理装置102は、嵌合作業の初期学習処理を実行する。嵌合作業の初期学習処理については後述する。ステップS1340において、情報処理装置102は、変数jの値をインクリメントする。以降は、情報処理装置102は、上限回数として予め定められた回数J1まで、嵌合作業の初期学習処理を繰り返し実行する。
ステップS1350において、情報処理装置102は、変数jの値が定数J2以下であるか否かを判定する。情報処理装置102は、変数jの値が定数J2以下であると判定すると(ステップS1350にてYES)、ステップS1360に制御を移す。そうでない場合(ステップS1350にてNO)、情報処理装置102は、学習処理を終了する。
ステップS1360において、情報処理装置102は、嵌合作業の学習処理を実行する。嵌合作業の学習処理については後述する。ステップS1370において、情報処理装置102は、変数jの値をインクリメントする。以降は、情報処理装置102は、変数jが上限値として予め定められた定数J2より大きくなるまで、嵌合作業の学習処理を繰り返し実行する。
図14は、嵌合作業の初期学習処理(図13のステップS1330に対応)の一例を示すフローチャートである。ある局面において、図14の処理を実行するためのプログラムは、2次記憶装置703に記憶され、1次記憶装置702に読み出されることにより、CPU701によって実行されてもよい。これ以降、情報処理装置102が図14の各ステップを実行するものとして当該初期学習処理を説明する。
ステップS1405において、情報処理装置102は、嵌合作業装置101がワークを把持した状態で、位置調整装置により、把持機構112で把持したワークを予め定められた位置(嵌合開始位置)に移動させるための指令を嵌合作業装置101に送信する。
ステップS1410において、情報処理装置102は、変数iに1を代入する。ステップS1415において、情報処理装置102は、嵌合作業装置101の各電動アクチュエータのモータトルク値T1を取得する。
ステップS1420において、情報処理装置102は、動作決定部804により、乱数を用いて次に実行する動作パターンakを選択する。具体的には、情報処理装置102は、1~nの間の乱数に基づいて動作パターンのインデックス番号kを決定する。
ステップS1425において、情報処理装置102は、動作開始前の角度調整機構111の各電動アクチュエータのモータトルク値T1を評価値関数学習部807に保管した後、嵌合作業装置101に動作パターンakを実行させるための指令を送信する。ある局面において、モータトルク値T1は、位置調整装置の各電動アクチュエータ108のモータトルク値を含んでいてもよい。
ステップS1430において、情報処理装置102は、嵌合作業装置101が動作パターンakを実行した後に、位置調整装置の電動アクチュエータ108の現在位置と、角度調整機構111の各電動アクチュエータのモータトルク値T2とを取得する。ある局面において、モータトルク値T2は、位置調整装置の各電動アクチュエータ108のモータトルク値を含んでいてもよい。
ステップS1435において、情報処理装置102は、位置調整装置の電動アクチュエータ108の現在位置が、目標位置と一致しているか否かを判定する。情報処理装置102は、位置調整装置の電動アクチュエータ108の現在位置が、目標位置と一致していると判定した場合(ステップS1435にてYES)、制御をステップS1440に移す。そうでない場合(ステップS1435にてNO)、情報処理装置102は制御をステップS1455に移す。
ステップS1440において、情報処理装置102は、終了判定をTrue(完了)にし、「動作パターンak」に対する報酬Rを1にする。なお、本実施の例では、報酬Rは、成功のときは1、失敗のときは-1、それ以外のときは0とするが、報酬Rの例はこれに限られない。成功時や失敗時のときの報酬ごとに差があればよい。
ステップS1445において、情報処理装置102は、評価値関数学習部807に、実行した「動作パターンak」、「動作パターンak実行前のモータトルク値T1」、「動作パターンak実行後のモータトルク値T2」、「報酬R(R=1)」および「終了判定True(完了)」を保存する。ステップS1450において、情報処理装置102は、評価値関数Fの更新処理を実行する。
ステップS1455において、情報処理装置102は、変数iの値が定数N1より大きいか否かを判定する。定数N1は、嵌合作業中に繰り返してよい動作パターンの実行回数の上限値である。情報処理装置102は、変数iの値が定数N1より大きいと判定した場合(ステップS1455にてYES)、動作パターンの実行回数が上限に達したと判断し、制御をステップS1460に移す。そうでない場合(ステップS1445にてNO)、情報処理装置102は制御をステップS1465に移す。
ステップS1460において、情報処理装置102は、終了判定をTrueにし、動作パターンakに対する報酬Rを-1にする。ステップS1445以降の処理は前述した通りになる。ステップS1465において、情報処理装置102は、変数iの値をインクリメントする。ステップS1470において、情報処理装置102は、終了判定をFalseにし、実行した「動作パターンak」に対する報酬Rを0にする。
ステップS1475において、情報処理装置102は、評価値関数学習部807に、実行した「動作パターンak」、「動作パターンak実行前のモータトルク値T1」、「動作パターンak実行後のモータトルク値T2」、「報酬R(R=0)」および「終了判定False(未完了)」を保存する。ステップS1480において、情報処理装置102は、評価値関数Fの更新処理を実行する。
図15は、嵌合作業の学習処理(図13のステップS1360に対応)の一例を示すフローチャートである。ある局面において、図15の処理を実行するためのプログラムは、2次記憶装置703に記憶され、1次記憶装置702に読み出されることにより、CPU701によって実行されてもよい。これ以降、情報処理装置102が図15の各ステップを実行するものとして当該学習処理を説明する。また、図15において、図14と同一の処理に関しては、同一の符号を付し、説明は繰り返さないものとする。
ステップS1510において、情報処理装置102は、評価値関数部802により、各電動アクチュエータのモータトルク値T1に基づいて、各動作パターンの評価値を算出する。ステップS1520において、情報処理装置102は、動作パターンテーブル803を参照して、最も評価値が高い動作パターンを選択する。
図14の嵌合の初期学習処理においては、学習情報が十分にないため、情報処理装置102は、ステップS1420において、乱数で次の動作パターンを選択している。これに対して、図15の嵌合の学習処理においては、一定量以上の学習情報が評価値関数学習部807に蓄積されているため、情報処理装置102は、ステップS1510において、評価値関数Fに基づいて評価値を算出する。情報処理装置102は、図15の処理においても、随時、評価値関数Fを更新することで嵌合作業の精度を向上させる。
図16は、評価値関数部802の評価値関数Fの更新処理の一例を示すフローチャートである。ある局面において、図16の処理を実行するためのプログラムは2次記憶装置703に記憶され、1次記憶装置702に読み出されることにより、CPU701によって実行されてもよい。これ以降、情報処理装置102が図16の各ステップを実行するものとして更新処理を説明する。
ステップS1610において、情報処理装置102は、評価値関数学習部807に保存されている各動作パターンakの「動作パターンak実行前のモータトルク値T1」、「動作パターンak実行後のモータトルク値T2」、「報酬R」および「終了判定」を読み出す。
ステップS1620において、情報処理装置102は、ステップS1610にて読み出した各種データを用いて、学習用の評価値関数F’の内部パラメータを更新する。評価値関数F’は、評価値の算出に使用される評価値関数Fとは別に用意する学習用の評価値関数である。評価値関数F’は、評価値関数学習部807によって使用される。評価値関数Fは、評価値関数部802によって使用される。ステップS1630において、情報処理装置102は、学習処理を予め定められた回数繰り返すごとに、評価値関数F’を評価値関数Fにコピーする。情報処理装置102は、図13~図15の処理中においても、図16の処理を随時実行してもよい。
以下に、評価値関数Fの学習処理の詳細について説明する。評価値関数Fはニューラルネットワークのため、学習には教師信号が必要になる。情報処理装置102は、終了判定に応じて教師信号yを次のように決定する。
嵌合処理の終了判定がTrueの場合の教師信号yは以下のようになる。
嵌合処理の終了判定がFalseの場合の教師信号yは以下のようになる。
ここで、「s'=T2、a'」は「Q(s,a)」が最大になる動作パターンを意味する。情報処理装置102は、上記の教師信号yと、評価値関数Fとの2乗誤差Eを求め、誤差逆伝搬法によりニューラルネットワークの学習を行う。評価値関数Fは、下記の式(3)の式で表される。
また、情報処理装置102は、式(3)を下記の式(4)に代入して誤差を算出する。
誤差逆伝搬法は、上記Eが0になるようにニューラルネットワークの内部パラメータを最適化する。よって、学習が進むにしたがって下記の式(5)の値が0に近づいていく。
強化学習も同様に、学習が十分に行われると、下記の式(6)が成り立つので、誤差逆伝搬法によるニューラルネットワークの学習は強化学習の学習結果と同様になる。
以上説明したように、本実施の形態に従う嵌合作業装置101は、直列多関節の構造を有さず、代わりに直動機構およびパラレルリンクのみの構成を有する。その結果、多関節ロボットが持つ特異点の問題が発生せず、多関節ロボットよりも少ないスペースでの作業を可能にする。また、嵌合作業装置101は、機械学習においても、パラレルリンクの基端側リンクハブに取付けられた電動アクチュエータおよび位置調整装置の電動アクチュエータのモータトルク値のみを学習データとすることができる。そのため、嵌合作業装置101は、多関節ロボットと比較して、学習パラメータが少なく機械学習が容易になる。よって、高い精度を要求されるコネクタ等の嵌合作業における精度を向上させることが可能となる。
今回開示された実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内で全ての変更が含まれることが意図される。