(57)【要約】  ワーク（４０）を掴んで送るローダチャック（３２）とワーク（４０）を掴んで受け取る主軸チャック（３１）との間のワーク（４０）の受け渡しの際に、ローダチャック（３２）を移動させるドライブユニット（３７）への位置指令（５３）を学習する機械学習装置（２０）が、ドライブユニット（３７）への位置指令（５３）と、ドライブユニット（３７）からのフィードバックデータと、を状態変数（５６）として観測する状態観測部（２５）と、状態変数（５６）に基づいて作成されるデータセットに従って、ローダチャック（３２）と主軸チャック（３１）との間におけるワーク（４０）の受け渡し位置の位置ずれを抑制する位置指令（５３）を学習する学習部（２１）と、を備える。
2020008633.tif 000002
【特許請求の範囲】
【請求項１】
ワークを掴んで送る第１のチャックと、前記ワークを掴んで受け取る第２のチャックとの間の前記ワークの受け渡しの際に、前記第１のチャックを移動させる駆動機構への位置指令を学習する機械学習装置であって、
前記駆動機構への前記位置指令と、前記駆動機構からのフィードバックデータと、を状態変数として観測する状態観測部と、
前記状態変数に基づいて作成されるデータセットに従って、前記第１のチャックと前記第２のチャックとの間における前記ワークの受け渡し位置の位置ずれを抑制する前記位置指令を学習する学習部と、
を備える、
ことを特徴とする機械学習装置。
【請求項２】
請求項１に記載の機械学習装置と、
前記学習部が学習した前記位置指令を前記駆動機構へ出力する制御部と、
を備えることを特徴とする数値制御装置。
【請求項３】
前記フィードバックデータは、前記ワークを搬送する搬送機構の位置を示すフィードバック位置を含み、
前記学習部は、
前記駆動機構への前記位置指令が示す位置と、前記フィードバック位置との差分に基づいて報酬を計算する報酬計算部と、
前記報酬に基づいて、前記位置指令を決定するための関数を更新する関数更新部と、
を備えることを特徴とする請求項２に記載の数値制御装置。
【請求項４】
前記フィードバックデータは、前記駆動機構が前記第１のチャックを移動させるために前記駆動機構から出力される電流を示すデータであるフィードバック電流を含み、
前記報酬計算部は、前記差分および前記フィードバック電流に基づいて前記報酬を計算する、
ことを特徴とする請求項３に記載の数値制御装置。
【請求項５】
前記報酬計算部は、前記差分が閾値以下で、かつ前記フィードバック電流が基準電流値以下である場合には前記報酬を増大させ、前記差分が前記閾値よりも大きいまたは前記フィードバック電流が前記基準電流値よりも大きい場合には前記報酬を低減させる、
ことを特徴とする請求項４に記載の数値制御装置。
【請求項６】
前記関数更新部は、前記報酬に従って、前記関数を示す行動価値テーブルを更新する、
ことを特徴とする請求項３から５の何れか１つに記載の数値制御装置。
【請求項７】
前記状態観測部は、前記差分が閾値よりも大きいまたは前記フィードバック電流が基準電流値よりも大きい場合に、前記受け渡しが失敗であると判定し、
前記学習部は、前記受け渡しが失敗であると判定されると前記位置指令を学習し、
前記制御部は、前記受け渡しが失敗であると判定されると前記学習部が学習した前記位置指令で前記受け渡しの再試行を行う、
ことを特徴とする請求項４に記載の数値制御装置。
【請求項８】
前記学習部は、前記駆動機構への前記位置指令のうち、前記第１のチャックと前記第２のチャックとの間での前記受け渡しの方向に垂直な第１の方向への位置指令を学習する、
ことを特徴とする請求項２から７の何れか１つに記載の数値制御装置。
【請求項９】
請求項２から請求項８のいずれか１つに記載の数値制御装置によって制御され、前記駆動機構によって駆動する、
ことを特徴とする工作機械。
【請求項１０】
ワークを掴んで送る側の第１のチャックと、前記ワークを掴んで受け取る側の第２のチャックとの間の前記ワークの受け渡しの際に、前記第１のチャックを移動させる駆動機構への位置指令を学習する機械学習方法であって、
前記駆動機構への前記位置指令と、前記駆動機構からのフィードバックデータと、を状態変数として観測する状態観測ステップと、
前記状態変数に基づいて作成されるデータセットに従って、前記第１のチャックと前記第２のチャックとの間における前記ワークの受け渡し位置の位置ずれを抑制する前記位置指令を学習する学習ステップと、
を含む、
ことを特徴とする機械学習方法。
【請求項１１】
ワークを掴んで送る第１のチャックと、前記ワークを掴んで受け取る第２のチャックとの間の前記ワークの受け渡しの際に、前記第１のチャックを移動させる駆動機構への位置指令を出力する数値制御装置であって、
前記駆動機構への前記位置指令と、前記駆動機構からのフィードバックデータと、に基づいて、前記第１のチャックと前記第２のチャックとの間における前記ワークの受け渡し位置の位置ずれを判定し、位置ずれ量が許容範囲内でない場合には、前記位置指令で示される位置をずらした新たな位置指令を出力する制御部を備え、
前記制御部は、前記位置ずれを判定する処理と、前記位置ずれ量が許容範囲内でない場合に前記新たな位置指令を出力する処理と、を１回または複数回実行することによって、前記位置ずれ量を許容範囲内に収める、
ことを特徴とする数値制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ワークの受け渡し動作を学習する機械学習装置、数値制御装置、工作機械および機械学習方法に関する。
【背景技術】
【０００２】
旋盤等の工作機械において、ワークを掴んで送る側のチャックと、ワークを掴んで受け取る側のチャックとの間におけるワークの受け渡しの動作では、ワークを搬送するローダが、送る側のチャックに掴まれたワークを受け渡し位置まで移動させる。例えば、ワークが長尺ワークである場合のワークの撓み、またはチャックによるワークのつかみ損ね等によって、ワークを受け取る側のチャック領域の中心位置に、ワークを移動させることができない場合がある。このように、ワークの受け渡しの際に、受け渡し位置が適切な位置からずれると、受け渡しに失敗する場合があるので、受け渡し位置の位置ずれを抑制することができる技術が望まれる。【０００３】
特許文献１に記載のローダ制御装置は、ワークの受け渡し位置のずれ量と、ローダを駆動するサーボモータのモータトルクとの相関関係を関数化しておき、相関関係および測定したモータトルクに基づいて受け渡し位置のずれ量を予測し、予測したずれ量に基づいて受け渡し位置を修正している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−１８７０４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記特許文献１では、相関関係を示す関数が固定の関数であるので、ワークの受け渡し動作が繰り返されてもワークの受け渡しの失敗確率は減少しない。【０００６】
本発明は、上記に鑑みてなされたものであって、ワークの受け渡し動作を学習することによって、ワークの受け渡しに失敗する確率を減少させていくことができる機械学習装置を得ることを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明は、ワークを掴んで送る第１のチャックと、ワークを掴んで受け取る第２のチャックとの間のワークの受け渡しの際に、第１のチャックを移動させる駆動機構への位置指令を学習する機械学習装置であって、駆動機構への位置指令と、駆動機構からのフィードバックデータと、を状態変数として観測する状態観測部と、状態変数に基づいて作成されるデータセットに従って、第１のチャックと第２のチャックとの間におけるワークの受け渡し位置の位置ずれを抑制する位置指令を学習する学習部と、を備えることを特徴とする。
【発明の効果】
【０００８】
本発明にかかる機械学習装置は、ワークの受け渡し動作を学習することによって、ワークの受け渡しに失敗する確率を減少させていくことができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】実施の形態にかかる工作システムの構成を示す図
【図２】実施の形態にかかる数値制御装置を備えた制御システムの構成を示す図
【図３】実施の形態にかかる工作システムの動作手順を示すフローチャート
【図４】実施の形態にかかる機械学習装置による第１の学習例を説明するための図
【図５】実施の形態にかかる機械学習装置による第２の学習例を説明するための図
【図６】実施の形態にかかる工作機械が備える主軸チャックとワークとの位置関係を説明するための図
【図７】実施の形態にかかる数値制御装置のハードウェア構成例を示す図
【発明を実施するための形態】
【００１０】
以下に、本発明の実施の形態にかかる機械学習装置、数値制御装置、工作機械および機械学習方法を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１１】
実施の形態
図１は、実施の形態にかかる工作システムの構成を示す図である。図１では、工作システム１を鉛直方向から見た場合を示している。本実施の形態では、鉛直方向がＹ軸方向であり、ワーク４０の移動方向である水平方向がＸ軸方向およびＺ軸方向である場合について説明する。
【００１２】
工作システム１は、ワーク４０を加工する工作機械２と、工作機械２の動作を制御する制御システム３とを備えている。工作機械２の例は、旋盤、マシニングセンタである。以下では、工作機械２が旋盤である場合について説明する。
【００１３】
工作機械２は、回転部３５と、第１のチャックであるローダチャック３２と、第２のチャックである主軸チャック３１と、ワーク４０の搬送機構であるローダ３６とを備えている。ローダ３６は、制御システム３によって動作が制御される。ローダチャック３２は、ローダ３６に接続されており、ローダ３６とともに移動する。ローダチャック３２は、被加工物であるワーク４０を把持することができる。ローダチャック３２の例は、三爪チャック、コレットチャックである。ローダチャック３２は、ワーク４０の加工を開始する際には、主軸チャック３１にワーク４０を渡し、ワーク４０の加工が完了した後には、主軸チャック３１からワーク４０を受け取る。
【００１４】
回転部３５は、主軸であるＺ軸を回転軸として回転する。主軸チャック３１は、回転部３５に接続されており、回転部３５とともに回転する。主軸チャック３１は、ワーク４０を把持することができる。主軸チャック３１の例は、三爪チャック、コレットチャックである。ワーク４０が加工される際には、主軸チャック３１がワーク４０を把持した状態で回転部３５が回転してワーク４０を回転させる。回転部３５の例は、スピンドル機構である。
【００１５】
工作機械２は、ワーク４０を回転部３５にロードする際には、ローダチャック３２でワーク４０の一方の端部を掴む。この状態でローダ３６は、Ｘ軸方向のマイナス側に移動し、主軸チャック３１に対向する位置で停止する（ｓ０）。そして、ローダ３６は、Ｚ軸方向のマイナス側に移動する。これにより、ローダ３６は、主軸チャック３１がワーク４０を掴むことができる位置までワーク４０を移動させる（ｓ１）。主軸チャック３１がワーク４０を掴むことができるローダ３６の位置が、所望の受け渡し位置である。工作機械２は、Ｍコードといった補助機能を用いて主軸チャック３１の閉動作を開始し（ｓ２）、主軸チャック３１の閉動作が完了するまで待つ（ｓ３）。主軸チャック３１が閉じることによって、主軸チャック３１は、ワーク４０の他方の端部を掴む。
【００１６】
この後、工作機械２は、ローダチャック３２の開動作を開始し（ｓ４）、ローダチャック３２の開動作が完了するまで待つ（ｓ５）。そして、ローダ３６は、Ｚ軸方向のプラス側に移動する。これにより、ローダ３６は、ワーク４０から遠ざかる方向へ退避し（ｓ６）、さらにＸ軸方向のプラス側に移動する。
【００１７】
工作機械２は、ワーク４０の加工が完了すると、上述したｓ０からｓ６の処理と逆順の処理によってワーク４０を回転部３５からアンロードする。この場合において、ｓ０からｓ６の各処理自体は、逆方向の処理となる。すなわち、ｓ０およびｓ６の処理では、ローダ３６の移動方向は、ロード時とアンロード時とで逆方向になる。また、アンロード時には、ローダチャック３２の閉動作と、主軸チャック３１の開動作とが行われる。
【００１８】
具体的には、アンロードの際には、ローダ３６は、Ｘ軸方向のマイナス側に移動し、さらにワーク４０に近づく方向へ移動する。そして、ローダチャック３２は、閉動作を開始し、閉動作が完了すると、主軸チャック３１が開動作を開始し、開動作が完了すると、ローダ３６は、ワーク４０から遠ざかる方向へ退避し、さらにＸ軸方向のプラス側に移動する。
【００１９】
ワーク４０を回転部３５にロードする処理と、ワーク４０を回転部３５からアンロードする処理とは同様の処理であるので、以下では、ワーク４０を回転部３５にロードする処理について説明する。
【００２０】
工作機械２は、ワーク４０を掴む処理、搬送処理などにおいて、機械特有の癖を有している。このため、ローダチャック３２への位置指令と、ローダチャック３２のＸ軸方向の実際の位置との間には、機械特有の癖に起因する対応関係がある。このため、適切な位置指令でワーク４０をロードしたつもりでも、ローダチャック３２が主軸チャック３１へワーク４０を渡そうとする際に、ワーク４０のＸ軸方向の位置がずれて、ワーク４０が主軸チャック３１のＺ軸方向のプラス側の端部３０に衝突する場合がある。この場合、ローダチャック３２は、ワーク４０を主軸チャック３１に渡すことができない。
【００２１】
本実施の形態では、制御システム３が備える後述の数値制御（ＮＣ：Numerical  Control）装置１０が、ローダチャック３２が主軸チャック３１へワーク４０を渡そうとする際のローダチャック３２のＸ軸方向の位置を学習する。すなわち、数値制御装置１０が、ローダチャック３２への位置指令を学習することによって、ワーク４０の受け渡しに失敗する確率を減少させていく。ローダチャック３２によって掴まれるワーク４０の姿勢および形状が毎回同じであれば、ワーク４０のＸ軸方向の位置は、ローダチャック３２のＸ軸方向の位置に対応するものである。したがって、本実施の形態では、ローダチャック３２のＸ軸方向の位置ずれ量と、ワーク４０のＸ軸方向の位置ずれ量とを同義で使う。
【００２２】
つぎに、工作機械２の動作を制御する数値制御装置１０の構成について説明する。図２は、実施の形態にかかる数値制御装置を備えた制御システムの構成を示す図である。制御システム３は、数値制御装置１０と、ドライブユニット３７と、サーボモータ３８とを備えている。
【００２３】
数値制御装置１０は、ドライブユニット３７に位置指令５３を送ることによってローダ３６の位置を制御するコンピュータである。数値制御装置１０がドライブユニット３７に送る位置指令５３は、ローダ３６の位置を指定した指令であり、Ｘ軸方向の位置指令とＺ軸方向の位置指令とが含まれている。数値制御装置１０は、ローダチャック３２から主軸チャック３１へのワーク４０の受け渡しを制御するとともに、受け渡しに失敗した場合には、ローダチャック３２へのＸ軸方向の位置指令５３を変更して再度の受け渡しを制御する。数値制御装置１０は、ローダチャック３２へのＸ軸方向の位置指令５３と、このＸ軸方向の位置指令５３を用いた場合の受け渡しの結果が失敗であるか成功であるかに基づいて、ローダチャック３２へのＸ軸方向の適切な位置指令５３を学習する。
【００２４】
ドライブユニット３７は、サーボモータ３８を駆動することによってローダ３６を移動させる駆動機構である。ドライブユニット３７は、数値制御装置１０からの位置指令５３に基づいて、サーボモータ３８に送る電流値を算出する。ドライブユニット３７は、位置指令５３に対応する電流をサーボモータ３８に送ることによってサーボモータ３８を駆動する。ドライブユニット３７は、サーボモータ３８に送る電流を示すデータであるフィードバック（ＦＢ：Feed-Back）電流５５を数値制御装置１０に送る。ＦＢ電流５５は、ドライブユニット３７から数値制御装置１０へのフィードバックデータの一例である。
【００２５】
ドライブユニット３７は、エンコーダ３９からサーボモータ３８の回転数を示す情報が送られてくると、この回転数に基づいて、ワーク４０の現在位置を示すデータであるＦＢ位置５４を算出して数値制御装置１０に送る。ＦＢ位置５４は、ドライブユニット３７から数値制御装置１０へのフィードバックデータの一例である。
【００２６】
サーボモータ３８は、ローダ３６に接続されており、ドライブユニット３７からの電流に従ってローダ３６を移動させる。サーボモータ３８は、ローダ３６をＸ軸方向に移動させるサーボモータと、ローダ３６をＺ軸方向に移動させるサーボモータとを含んでいる。Ｘ軸方向およびＺ軸方向の各サーボモータ３８には、サーボモータ３８の回転数を検出するエンコーダ３９が取付けられている。エンコーダ３９は、検出した回転数を示す情報をドライブユニット３７に送信する。
【００２７】
数値制御装置１０は、制御加工プログラム記憶部１１と、解析部１２と、制御部１３と、記憶部１４と、機械学習装置２０とを備えている。制御加工プログラム記憶部１１は、ワーク４０を加工する際に用いられる制御加工プログラムを記憶する。制御加工プログラムには、ワーク４０を回転部３５にロードするためのローディング指令６１と、ワーク４０を加工するための加工指令と、ワーク４０を回転部３５からアンロードするためのアンローディング指令とが含まれている。図２では、ローディング指令６１を図示している。これらの指令のうち、ローディング指令６１およびアンローディング指令が、ワーク４０の受け渡しを行うための専用指令である。ローディング指令６１は、ローダ３６の位置決めを行うためのＧコード５１として解析部１２に送られる。
【００２８】
解析部１２は、制御加工プログラムを解析する。解析部１２は、解析した指令が専用指令であるか否かを判別し、ローディング指令６１といった専用指令である場合には、Ｇコード５１に基づいて、ワーク４０を受け渡す位置を示す受け渡し位置情報５２を生成する。すなわち、解析部１２は、Ｇコード５１内に含まれるローダ３６の位置決め指令に基づいて、受け渡し位置情報５２を生成する。受け渡し位置情報５２は、ローダチャック３２と主軸チャック３１との間のチャック間でワーク４０を受け渡す位置の情報である。具体的には、受け渡し位置情報５２は、ローダ３６の終点である。ワーク４０の初回の受け渡し実行時には、受け渡し動作に用いられる情報が、専用指令の引数によって設定される。
【００２９】
専用指令は、下記の（Ａ１）から（Ａ５）の指令引数を含んでいる。
（Ａ１）ワーク４０の受け渡し位置情報５２であるローダ３６の終点
（Ａ２）ワーク４０の受け渡し時に衝突と判定か否かの基準である基準電流値Ａ
（Ａ３）衝突と判定した場合のローダ３６の引き戻し量Ｌｚ
（Ａ４）学習時にローダ３６を移動させる方向および移動量Ｌｘ
（Ａ５）学習時の一方向における最大の移動距離Ｌｍａｘ
【００３０】
上述した（Ａ１）の受け渡し位置情報５２には、Ｘ座標とＺ座標とが含まれている。（Ａ２）の基準電流値Ａは、受け渡しが異常状態であるか否かを判定するための値であり、サーボモータ３８へ送られる電流のＦＢ電流５５と比較される。この基準電流値Ａよりも大きなＦＢ電流５５がサーボモータ３８へ送られるような場合は、ワーク４０が主軸チャック３１による受け渡し位置以外の位置で主軸チャック３１に衝突したような異常状態である。主軸チャック３１による受け渡し位置以外でワーク４０が衝突する位置の例は、前述の主軸チャック３１の端部３０である。（Ａ３）の引き戻し量Ｌｚは、ワーク４０が端部３０で衝突してワーク４０の移動が停止した場合に、ワーク４０がＺ軸方向に沿って引き戻される距離である。
【００３１】
ワーク４０が端部３０で衝突して移動が停止した場合、機械学習装置２０で位置指令５３の学習が行われる。（Ａ４）の移動量Ｌｘは、この学習時にワーク４０がＸ軸方向に移動させられる距離である。ワーク４０は、移動量ＬｘだけＸ軸方向に移動させられたうえで、ワーク４０がＺ軸方向に沿って主軸チャック３１側へ移動させられる。ワーク４０は、受け渡しの際の移動位置が許容範囲内となるまで移動量Ｌｘずつ移動させられる。また、（Ａ５）の移動距離Ｌｍａｘは、学習時にワーク４０がＸ軸方向に移動させられる限界距離である。すなわち、学習時であっても、ワーク４０は移動距離Ｌｍａｘよりも遠くへは移動させられることはない。
【００３２】
解析部１２は、（Ａ１）の受け渡し位置情報５２と、（Ａ３）の引き戻し量Ｌｚを制御部１３に送る。また、解析部１２は、上記（Ａ２）、（Ａ４）、（Ａ５）の指令引数の値を機械学習装置２０に送る。なお、解析部１２は、専用指令から指令引数の値を取得する場合に限らず、パラメータから指令引数に対応する値を取得してもよい。この場合、指令引数に対応する値をパラメータとして記憶部１４に格納しておく。
【００３３】
制御部１３は、解析部１２から送られてくる受け渡し位置情報５２または機械学習装置２０から与えられる行動５８に従って位置指令５３を生成する。行動５８は、Ｘ軸方向の次回の位置指令５３である。制御部１３は、位置指令５３をドライブユニット３７および機械学習装置２０に送る。制御部１３は、機械学習装置２０から、ワーク４０の移動位置が許容範囲内であることを示す通知を受けると、ワーク４０の受け渡し動作の続きを制御する。
【００３４】
制御部１３は、機械学習装置２０から、ワーク４０の移動位置が許容範囲外であることを示す通知を受けると、ワーク４０をＺ軸方向に沿って引き戻し量Ｌｚだけ引き戻し、行動５８に従って位置指令５３を生成する。
【００３５】
機械学習装置２０は、状態観測部２５と、学習部２１とを備えている。状態観測部２５は、解析部１２から、指令引数のうちの（Ａ２）の基準電流値Ａを取得し、学習部２１は、解析部１２から、指令引数のうちの（Ａ４）の移動量Ｌｘおよび（Ａ５）の移動距離Ｌｍａｘを取得する。
【００３６】
状態観測部２５は、制御部１３からのＸ軸方向およびＺ軸方向の位置指令５３と、ドライブユニット３７からのＸ軸方向およびＺ軸方向のＦＢ位置５４と、ドライブユニット３７からのＸ軸方向およびＺ軸方向のＦＢ電流５５とを取得する。
【００３７】
状態観測部２５は、ワーク４０の移動位置が許容範囲内であるか否かを判定する際には、Ｘ軸方向およびＺ軸方向の位置指令５３と、Ｘ軸方向およびＺ軸方向のＦＢ位置５４と、Ｘ軸方向およびＺ軸方向のＦＢ電流５５とを用いる。なお、状態観測部２５は、Ｘ軸方向の位置指令５３と、Ｘ軸方向のＦＢ位置５４と、Ｘ軸方向のＦＢ電流５５とに基づいて、ワーク４０の移動位置が許容範囲内であるか否かを判定してもよい。また、状態観測部２５は、Ｚ軸方向の位置指令５３と、Ｚ軸方向のＦＢ位置５４と、Ｚ軸方向のＦＢ電流５５とに基づいて、ワーク４０の移動位置が許容範囲内であるか否かを判定してもよい。また、状態観測部２５は、Ｚ軸方向のＦＢ電流５５を用いることなく、Ｚ軸方向のＦＢ位置５４と、Ｚ軸方向の位置指令５３とに基づいて、ワーク４０の移動位置が許容範囲内であるか否かを判定してもよい。
【００３８】
また、学習部２１がドライブユニット３７への位置指令５３を学習する際には、状態観測部２５は、Ｘ軸方向の位置指令５３と、Ｘ軸方向のＦＢ位置５４と、Ｘ軸方向のＦＢ電流５５とを状態変数５６として観測し、観測結果である状態変数５６を学習部２１に送る。すなわち、状態観測部２５が学習部２１に送る状態変数５６には、Ｘ軸方向の位置指令５３と、Ｘ軸方向のＦＢ位置５４と、Ｘ軸方向のＦＢ電流５５とが含まれている。
【００３９】
ワーク４０の形状によってはワーク４０の受け渡し位置が主軸チャック３１の中心位置からＸ軸方向にずれる場合がある。また、ローダチャック３２によるワーク４０の受け渡し位置が適切でない場合にはワーク４０の受け渡し位置が主軸チャック３１の中心位置からＸ軸方向にずれる場合がある。これらの場合、ワーク４０が、主軸チャック３１による受け渡し位置以外の位置で主軸チャック３１に衝突し、ワーク４０が主軸チャック３１で掴めない位置で停止してしまう可能性が高くなる。
【００４０】
ワーク４０が、受け渡し位置以外の位置で主軸チャック３１に衝突した場合、ワーク４０の移動位置は許容範囲外となる。また、ワーク４０が、主軸チャック３１に擦れながら受け渡し位置まで移動した場合も、ワーク４０の移動位置は許容範囲外である。
【００４１】
ワーク４０の移動位置が許容範囲外である異常時には、Ｘ軸方向およびＺ軸方向の少なくとも一方のローダ３６への負荷が大きくなる。このため、ワーク４０の移動位置が許容範囲外の場合、サーボモータ３８へ送られる電流が上昇し、ＦＢ電流５５も上昇する。したがって、状態観測部２５は、基準電流値Ａと、ＦＢ電流５５との比較結果に基づいて、ワーク４０の移動位置が許容範囲内であるか否かを判定する。ワーク４０の移動位置が許容範囲内である正常時には、ワーク４０が、主軸チャック３１による受け渡し位置で停止するので、ローダ３６への負荷が大きくなることはなく、ＦＢ電流５５が上昇することはない。
【００４２】
また、ワーク４０の移動位置が許容範囲外である異常時には、位置指令５３に対応するローダ３６の位置と、ＦＢ位置５４に対応するローダ３６の位置と、が特定の時間内に同じにならない。したがって、状態観測部２５は、位置指令５３と、ＦＢ位置５４との比較結果に基づいて、ワーク４０の移動位置が許容範囲内であるか否かを判定する。状態観測部２５は、ワーク４０の移動位置が許容範囲内であるか否かの判定結果を制御部１３に送る。
【００４３】
学習部２１は、状態変数５６に従って、次回の位置指令５３である行動５８を学習する。換言すると、学習部２１は、ローダ３６によるワーク４０の受け渡し位置の位置ずれ量が減る位置指令５３を学習する。
【００４４】
具体的には、学習部２１は、位置指令５３と、ＦＢ位置５４と、ＦＢ電流５５とを含んだ状態変数５６に基づいて作成されるデータセットに従って、行動５８を学習する。学習部２１は、関数更新部２２と、報酬計算部２３とを備えている。
【００４５】
報酬計算部２３は、状態変数５６に基づいて報酬５７を計算する。報酬計算部２３は、状態変数５６に基づいて位置指令５３が示す位置とＦＢ位置５４との差分を算出し、状態変数５６からＦＢ電流５５を抽出する。報酬計算部２３は、位置指令５３が示す位置とＦＢ位置５４の差分が閾値以下であり、かつＦＢ電流５５が基準電流値Ａ以下の場合に報酬５７を増大させる。この場合において、報酬計算部２３は、位置指令５３が示す位置とＦＢ位置５４の差分が小さいほど報酬５７を増大させ、ＦＢ電流５５が小さいほど報酬５７を増大させる。学習部２１は、算出した報酬５７を関数更新部２２に送る。以下の説明では、位置指令５３が示す位置とＦＢ位置５４との差分を位置差分という場合がある。
【００４６】
関数更新部２２は、行動５８を決定するための関数を記憶しており、報酬５７に基づいて、行動５８を決定するための関数を更新する。行動５８を決定するための関数の例は、後述する行動価値関数Ｑ（ｓt，ａt）である。本実施の形態の関数更新部２２は、工作機械２でワーク４０の受け渡し動作が繰り返されるたびに、受け渡し位置の位置ずれ量が減るよう、行動価値関数Ｑ（ｓ，ａ）を更新する。関数更新部２２は、更新した行動価値関数Ｑ（ｓ，ａ）を用いて行動５８を算出する。関数更新部２２は、算出した行動５８を制御部１３に送り、前回までの学習データ、学習に用いるデータおよびローダ３６の制御に必要なデータを記憶部１４に送る。学習データの例は、受け渡しに成功した場合に算出された次回用の位置指令５３であり、学習に用いるデータの例は、学習部２１が学習の際に用いる行動価値関数Ｑ（ｓ，ａ）である。ローダ３６の制御に用いるデータの例は、引き戻し量Ｌｚである。記憶部１４は、前回までの学習データ、学習に用いるデータおよび制御部１３によるローダ３６の制御に必要なデータを記憶する。
【００４７】
つぎに、工作システム１の動作手順について説明する。図３は、実施の形態にかかる工作システムの動作手順を示すフローチャートである。数値制御装置１０は、ローディング指令６１を読み出すと、ワーク４０の受け渡しが初めてである場合、すなわち未学習の場合、上述の（Ａ１）の指令引数で指令された受け渡し位置へのローダ３６の移動を開始する（ステップＳＴ１）。このとき、制御部１３は、ドライブユニット３７および状態観測部２５に位置指令５３を送る。これにより、ローダチャック３２がワーク４０を掴んだ状態でローダ３６がＸ軸方向へ移動し、その後、Ｚ軸方向に移動する。
【００４８】
ワーク４０が移動を開始すると、ドライブユニット３７は、特定の周期毎にＦＢ位置５４およびＦＢ電流５５を取得して、状態観測部２５に送る。これにより、状態観測部２５は、位置指令５３、ＦＢ位置５４およびＦＢ電流５５を監視する。
【００４９】
状態観測部２５は、Ｘ軸およびＺ軸の各軸におけるＦＢ電流５５が基準電流値Ａ以下であるか否かを判定する（ステップＳＴ２）。なお、基準電流値Ａは、Ｘ軸とＺ軸とで異なる値が用いられてもよい。
【００５０】
受け渡し位置へ到達する前に、Ｘ軸またはＺ軸の各軸におけるＦＢ電流５５が基準電流値Ａよりも大きくなる場合（ステップＳＴ２、Ｎｏ）、状態観測部２５は、Ｘ軸方向およびＺ軸方向の位置指令５３と、Ｘ軸方向およびＺ軸方向のＦＢ位置５４と、Ｘ軸方向およびＺ軸方向のＦＢ電流５５とを含んだ状態変数５６を学習部２１に送る。また、状態観測部２５は、ワーク４０の移動位置が許容範囲外であることを制御部１３に通知する。
【００５１】
各軸のＦＢ電流５５が基準電流値Ａよりも大きい場合、すなわち受け渡し位置への移動が失敗である場合、学習部２１は、受け渡しに用いた位置指令５３に対して小さな値の報酬５７を設定する。これにより、学習部２１は、状態変数５６に従って、適切な位置指令５３を学習し、報酬５７が最大となるよう、次回の位置指令５３である行動５８を決定する（ステップＳＴ４ａ）。制御部１３は、ワーク４０を引き戻し量ＬｚだけＺ軸方向に沿って引き戻す（ステップＳＴ５）。そして、制御部１３は、受け渡し位置へのローダ３６の移動を開始する（ステップＳＴ１）。これにより、制御部１３は、行動５８に従って生成した位置指令５３でワーク４０をＸ軸方向に移動させ、その後、ワーク４０をＺ軸方向に移動させる。
【００５２】
ステップＳＴ２の処理において、Ｘ軸およびＺ軸の各軸におけるＦＢ電流５５が基準電流値Ａ以下になると（ステップＳＴ２、Ｙｅｓ）、状態観測部２５は、Ｘ軸およびＺ軸の各軸における位置指令５３が示す位置とＦＢ位置５４との位置差分が閾値以下であるか否かを判定する（ステップＳＴ３）。
【００５３】
Ｘ軸およびＺ軸におけるＦＢ位置５４と位置指令５３とが異なる場合（ステップＳＴ３、Ｎｏ）、状態観測部２５は、Ｘ軸方向の位置指令５３と、Ｘ軸方向のＦＢ位置５４と、Ｘ軸方向のＦＢ電流５５とを含んだ状態変数５６を学習部２１に送る。また、状態観測部２５は、ワーク４０の移動位置が許容範囲外であることを制御部１３に通知する。これにより、上述したステップＳＴ４ａ，ＳＴ５の処理が行なわれ、さらにステップＳＴ１の処理が行なわれる。
【００５４】
ここで学習部２１による行動５８の学習処理について説明する。学習部２１に用いる学習アルゴリズムは、何れの学習アルゴリズムであってもよい。ここでは、学習アルゴリズムに、強化学習（Reinforcement  Learning）を適用した場合について説明する。強化学習は、ある環境内における行動主体であるエージェントが、状態変数５６で示される現在の状態を観測し、観測結果に基づいて取るべき行動５８を決定するというものである。エージェントは、行動５８を選択することで環境から報酬５７を得て、一連の行動５８を通じて報酬５７が最も多く得られるような方策を学習する。強化学習の代表的な手法として、Ｑ学習（Q-Learning）およびＴＤ学習（TD-Learning）が知られている。例えば、Ｑ学習の場合、行動価値関数Ｑ（ｓ，ａ）の一般的な更新式（行動価値テーブル）は、以下の式（１）で表される。すなわち、行動価値テーブルの一例は、式（１）の行動価値関数Ｑ（ｓ，ａ）である。
【００５５】
【数１】
2020008633.tif 000003
【００５６】
式（１）において、ｓtは時刻ｔにおける環境を表し、ａtは時刻ｔにおける行動を表す。行動ａtにより、環境はｓt+1に変わる。ｒt+1はその環境の変化によってもらえる報酬５７を表し、γは割引率を表し、αは学習係数を表す。Ｑ学習を適用した場合、受け渡し動作の次回の位置指令５３が行動ａtとなる。
【００５７】
式（１）で表される更新式は、時刻ｔ＋１における最良の行動ａの行動価値が、時刻ｔにおいて実行された行動ａの行動価値Ｑよりも大きければ、行動価値Ｑを大きくし、逆の場合は、行動価値Ｑを小さくする。換言すれば、時刻ｔにおける行動ａの行動価値Ｑを、時刻ｔ＋１における最良の行動価値に近づけるように、行動価値関数Ｑ（ｓ，ａ）を更新する。それにより、ある環境における最良の行動価値が、それ以前の環境における行動価値に順次伝播していくようになる。
【００５８】
報酬計算部２３は、位置指令５３が示す位置とＦＢ位置５４との位置差分、およびＦＢ電流５５に基づいて、報酬５７を計算する。
【００５９】
前述したように、報酬計算部２３は、位置指令５３が示す位置とＦＢ位置５４との位置差分が閾値以下であり、かつＦＢ電流５５が基準電流値Ａ以下の場合には報酬５７を増大させる。このとき、報酬計算部２３は、例えば「１」の報酬５７を与える。
【００６０】
一方、報酬計算部２３は、位置指令５３が示す位置とＦＢ位置５４の差分が閾値よりも大きい場合、またはＦＢ電流５５が基準電流値Ａよりも大きい場合には報酬５７を低減させる。このとき、報酬計算部２３は、例えば「−１」の報酬５７を与える。
【００６１】
報酬計算部２３は、例えば、位置差分が０であり、かつＦＢ電流５５の変化量が０であるときは、報酬５７を最大報酬とする。報酬計算部２３は、位置差分が閾値以下であり、ＦＢ電流５５が基準電流値Ａの半分の場合には、報酬５７を最大報酬の半分とする。ＦＢ電流５５が基準電流値Ａの半分の場合の例は、ワーク４０の受け渡しは成功しているが、受け渡し位置が所望位置から少しずれている場合である。ワーク４０が、主軸チャック３１に擦れながら受け渡し位置まで到達した場合には、擦れている間、ＦＢ電流５５が大きくなる。また、受け渡し位置が所望位置から少しずれている場合、受け渡し位置へ到達した後に、主軸チャック３１がワーク４０の受け渡し位置の中心でワーク４０を掴もうとすると、ワーク４０が主軸チャック３１に押されてＦＢ電流５５が大きくなる。このような場合は、受け渡し位置は許容範囲内であるが、機械学習装置２０は、ワーク４０が端部３０に衝突しなかった場合と、ワーク４０が端部３０に衝突した場合との間の報酬５７を与える。
【００６２】
報酬計算部２３は、位置差分が閾値よりも大きい場合、またはＦＢ電流５５が基準電流値Ａよりも大きい場合には報酬５７を最小報酬とする。報酬計算部２３は、計算した報酬５７を関数更新部２２に送る。
【００６３】
関数更新部２２は、報酬計算部２３によって計算された報酬５７に従って、行動５８を決定するための関数を更新する。例えばＱ学習の場合、式（１）で表される行動価値関数Ｑ（ｓt，ａt）が、行動５８を計算するための関数であり、関数更新部２２によって更新される。
【００６４】
図４は、実施の形態にかかる機械学習装置による第１の学習例を説明するための図である。図４では、ワーク４０のＸ軸方向の位置Ｐ０〜Ｐ６を示している。ワーク４０が、主軸チャック３１の端部３０に衝突した場合のワーク４０のＸ軸方向の位置が位置Ｐ０であるとする。この場合、機械学習装置２０は、ワーク４０が主軸チャック３１の端部３０に衝突しなくなるまで、ワーク４０をＺ軸方向のプラス側に引き戻す処理と、ワーク４０をＸ軸方向の次の位置に移動させる処理と、ワーク４０をＺ軸方向のマイナス側に挿入する処理とを繰り返させる。
【００６５】
具体的には、機械学習装置２０は、Ｘ軸方向の位置である位置Ｐ１、位置Ｐ２、位置Ｐ３、位置Ｐ４、位置Ｐ５、位置Ｐ６の順番でワーク４０をＸ軸方向に移動させる。位置Ｐ０と位置Ｐ１との間は、移動量Ｌｘだけ離れている。同様に、位置Ｐ１と位置Ｐ２との間、位置Ｐ２と位置Ｐ３との間、位置Ｐ０と位置Ｐ４との間、位置Ｐ４と位置Ｐ５との間、位置Ｐ５と位置Ｐ６との間は、それぞれ移動量Ｌｘだけ離れている。また、位置Ｐ０と位置Ｐ３との間、位置Ｐ０と位置Ｐ６との間は、それぞれ移動距離Ｌｍａｘだけ離れている。
【００６６】
例えば、機械学習装置２０は、ワーク４０を位置Ｐ１に移動させる場合、ワーク４０を位置Ｐ１にロードするための行動５８を制御部１３に送る。これにより、行動５８に対応する位置指令５３でローダ３６がＸ軸方向に移動する。
【００６７】
機械学習装置２０は、ワーク４０が端部３０に衝突せずに主軸チャック３１まで移動させることができると、ワーク４０をＸ軸方向に移動させることを完了する。機械学習装置２０は、ワーク４０が端部３０に衝突した場合の位置指令５３に低い報酬５７を与え、ワーク４０が端部３０に衝突しなかった場合の位置指令５３に高い報酬５７を与える。
【００６８】
なお、機械学習装置２０は、ワーク４０を何れの順番で位置Ｐ１〜Ｐ６に移動させてもよい。例えば、機械学習装置２０は、ワーク４０を位置Ｐ１、位置Ｐ４、位置Ｐ２、位置Ｐ５、位置Ｐ３、位置Ｐ６の順番のように位置Ｐ０に近い順番でＸ軸方向に移動させてもよい。また、機械学習装置２０は、Ｘ軸方向の位置として位置Ｐ１〜Ｐ６の６箇所の位置を設定する場合に限らず、５箇所以下または７箇所以上のＸ軸方向の位置を設定してもよい。
【００６９】
Ｘ軸およびＺ軸におけるＦＢ電流５５が基準電流値Ａ以下になり（ステップＳＴ２、Ｙｅｓ）、かつＸ軸およびＺ軸における位置指令５３が示す位置とＦＢ位置５４との位置差分が閾値以下になると（ステップＳＴ３、Ｙｅｓ）、学習部２１は、状態変数５６に従って、次回の位置指令５３である行動５８を学習する（ステップＳＴ４ｂ）。すなわち、学習部２１は、受け渡しに用いた位置指令５３に対して大きな値の報酬５７を設定したうえで、次回の位置指令５３に対応する行動５８を決定する。
【００７０】
また、状態観測部２５は、ワーク４０が受け渡し位置へ移動した後、ワーク４０の移動位置が許容範囲内であることを制御部１３に通知する。これにより、制御部１３は、チャック間でのワーク４０の受け渡し処理を進める。
【００７１】
具体的には、制御部１３は、上述したｓ２からｓ６の動作を工作機械２に実行させる。すなわち、制御部１３は、主軸チャック３１を閉じる動作を開始し（ステップＳＴ６）、主軸チャック３１が閉じるまで待つ（ステップＳＴ７）。主軸チャック３１が閉じることによって、主軸チャック３１は、ワーク４０を掴む。
【００７２】
この後、制御部１３は、ローダチャック３２を開く動作を開始し（ステップＳＴ８）、ローダチャック３２が開くまで待つ（ステップＳＴ９）。そして、制御部１３は、ローダ３６をＺ軸方向のプラス側に退避させる（ステップＳＴ１０）。
【００７３】
機械学習装置２０は、ワーク４０が主軸チャック３１からローダ３６へアンロードされる際にも、ワーク４０がローダ３６から主軸チャック３１にロードされる場合と同様の処理によって位置指令５３を学習する。
【００７４】
このように、ワーク４０の受け渡しに失敗した場合には、機械学習装置２０が、移動量Ｌｘに従ってワーク４０の受け渡しを再度実行させるので、受け渡し位置の修正を行うことができる。また、機械学習装置２０が、ワーク４０の受け渡し位置を学習するので、受け渡しの失敗を防止することができる。また、機械学習装置２０が、ワーク４０の受け渡し位置を学習するので、コレットチャックのようにわずかな位置ずれで受け渡しに失敗する環境にも機械学習装置２０を適用できる。また、機械学習装置２０が、ワーク４０の受け渡しを再度実行させるとともに、受け渡しの失敗を防止することができるので、工作機械２による生産性が向上する。
【００７５】
また、機械学習装置２０が、位置指令５３が示す位置とＦＢ位置５４との位置差分に基づいて、ワーク４０の受け渡し位置を判定しているので、ワーク４０の受け渡しを確認するためのカメラといった特別な機構または装置を設ける必要がない。したがって、低コストで受け渡しを確認することができる。
【００７６】
また、ワーク４０の受け渡しに失敗した場合には、機械学習装置２０が、移動量Ｌｘに従ってワーク４０の受け渡しを再度実行するので、ワーク４０が主軸チャック３１の端部３０に衝突した場合であっても人手で復旧は行う必要がない。したがって、ワーク４０をロードする際のダウンタイムを短縮することができ、生産性の悪化を抑制できる。
【００７７】
なお、本実施の形態では、工作機械２が、ワーク４０をＸ軸方向およびＺ軸方向に移動させる場合について説明したが、工作機械２は、ワーク４０をＸ軸方向、Ｙ軸方向およびＺ軸方向に移動させてもよい。この場合、数値制御装置１０がドライブユニット３７に送る位置指令５３には、Ｘ軸方向の位置指令と、Ｙ軸方向の位置指令と、Ｚ軸方向の位置指令とが含まれている。また、サーボモータ３８は、ローダ３６をＸ軸方向、Ｙ軸方向およびＺ軸方向に移動させる各サーボモータを含んでいる。そして、機械学習装置２０は、Ｘ軸方向への位置指令と、Ｙ軸方向の位置指令と、Ｚ軸方向の位置指令とを学習する。
【００７８】
図５は、実施の形態にかかる機械学習装置による第２の学習例を説明するための図である。図６は、実施の形態にかかる工作機械が備える主軸チャックとワークとの位置関係を説明するための図である。ここでは、工作機械２が、ワーク４０をＸ軸方向、Ｙ軸方向およびＺ軸方向に移動させる場合について説明する。図５および図６では、ワーク４０をＺ軸方向から見た場合のワーク４０のＸＹ平面内の位置を示している。
【００７９】
図６に示す主軸チャック３１Ａは、図１で説明した主軸チャック３１の一例である。主軸チャック３１Ａは、三爪チャックである。３つの主軸チャック３１Ａは、それぞれが円形のチャック領域４５の中心Ｑ１に移動することによってワーク４０を掴む。
【００８０】
数値制御装置１０は、ワーク４０を中心Ｑ１へ挿入させるための位置指令５３を生成するが、実際のワーク４０は、位置Ｐ０といった中心Ｑ１からずれた位置に挿入され、ワーク４０が端部３０に衝突する場合がある。このため、機械学習装置２０は、ワーク４０が端部３０に衝突しないような位置指令５３を学習する。
【００８１】
ワーク４０が、主軸チャック３１Ａの端部３０に衝突した場合のワーク４０の位置が位置Ｐ０であるとする。この場合、機械学習装置２０は、ワーク４０が主軸チャック３１Ａの端部３０に衝突しなくなるまで、ワーク４０をＺ軸方向のプラス側に引き戻す処理と、ワーク４０をＸ軸方向およびＹ軸方向の次の位置に移動させる処理と、ワーク４０をＺ軸方向のマイナス側に挿入させる処理とを繰り返させる。この場合において、機械学習装置２０は、移動量Ｌｘおよび移動距離Ｌｍａｘに基づいて、ワーク４０の次の移動位置を算出する。すなわち、ワーク４０は、移動位置の学習時には、ＸＹ平面内で特定の学習方向および特定の学習移動量によって制限された位置に移動させられる。
【００８２】
具体的には、機械学習装置２０は、ＸＹ平面内の位置である位置Ｐ１１、位置Ｐ１２、位置Ｐ１３、位置Ｐ１４、位置Ｐ１５、位置Ｐ１６、位置Ｐ１７、位置Ｐ１８、位置Ｐ１９の順番でワーク４０を移動させる。位置Ｐ０と位置Ｐ１１との間、位置Ｐ１１と位置Ｐ１２との間、位置Ｐ１２と位置Ｐ１３との間は、それぞれ移動量Ｌｘだけ離れている。同様に、位置Ｐ０と位置Ｐ１４との間、位置Ｐ１４と位置Ｐ１５との間、位置Ｐ１５と位置Ｐ１６との間は、それぞれ移動量Ｌｘだけ離れている。同様に、位置Ｐ０と位置Ｐ１７との間、位置Ｐ１７と位置Ｐ１８との間、位置Ｐ１８と位置Ｐ１９との間は、それぞれ移動量Ｌｘだけ離れている。また、位置Ｐ０と位置Ｐ１３との間、位置Ｐ０と位置Ｐ１６との間、位置Ｐ０と位置Ｐ１９との間は、それぞれ移動距離Ｌｍａｘだけ離れている。
【００８３】
また、位置Ｐ０から位置Ｐ１３へ向かう方向と、位置Ｐ０から位置Ｐ１６へ向かう方向との間は、学習角度θをなしており、位置Ｐ０から位置Ｐ１６へ向かう方向と、位置Ｐ０から位置Ｐ１９へ向かう方向との間は、学習角度θをなしている。機械学習装置２０は、第１の方向にワーク４０を位置Ｐ０から移動量Ｌｘずつ移動させる処理と、移動距離Ｌｍａｘまで移動させると、第１の方向から学習角度θだけ回転させた第２の方向に、ワーク４０を位置Ｐ０から移動量Ｌｘずつ移動させる処理とを繰り返す。すなわち、機械学習装置２０は、ワーク４０への適切な移動位置の最初の探索を行う際に、第１の方向に対して、最大の移動距離Ｌｍａｘまで、移動量Ｌｘずつワーク４０を移動させながら適切な移動位置を探索する。この第１の方向で適切な移動位置が見つからない場合、機械学習装置２０は、第１の方向を学習角度θだけ回転させた第２の方向に対して、第１の方向と同様の探索を行う。機械学習装置２０は、チャック領域４５内で学習角度θの合計が３６０度を超えるまで、移動量Ｌｘずつワーク４０を移動させながら適切な移動位置を探索する処理と、学習角度θを回転させる処理とを繰り返す。
【００８４】
例えば、機械学習装置２０は、ワーク４０を位置Ｐ１１に移動させる場合、ワーク４０を位置Ｐ１１にロードするための行動５８を制御部１３に送る。これにより、行動５８に対応する位置指令５３でローダ３６がＸ軸方向およびＹ軸方向に移動する。
【００８５】
機械学習装置２０は、ワーク４０が端部３０に衝突せずに主軸チャック３１Ａまで移動させることができると、ワーク４０をＸ軸方向およびＹ軸方向に移動させることを完了する。
【００８６】
なお、機械学習装置２０は、ワーク４０を何れの順番で位置Ｐ１１〜Ｐ１９に移動させてもよい。例えば、機械学習装置２０は、ワーク４０を位置Ｐ１１、位置Ｐ１４、位置Ｐ１７、位置Ｐ１２、位置Ｐ１５、位置Ｐ１８、位置Ｐ１３、位置Ｐ１６、位置Ｐ１９の順番のように位置Ｐ０に近い順番でワーク４０を移動させてもよい。また、機械学習装置２０は、ＸＹ平面内の位置として位置Ｐ１１〜Ｐ１９の９箇所の位置を設定する場合に限らず、８箇所以下または１０箇所以上のＸＹ平面内の位置を設定してもよい。
【００８７】
ここで、数値制御装置１０のハードウェア構成について説明する。図７は、実施の形態にかかる数値制御装置のハードウェア構成例を示す図である。
【００８８】
数値制御装置１０は、図７に示した制御回路３００、すなわちプロセッサ３０１、メモリ３０２により実現することができる。プロセッサ３０１の例は、ＣＰＵ（Central  Processing  Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサ、ＤＳＰ（Digital  Signal  Processor）ともいう）またはシステムＬＳＩ（Large  Scale  Integration）である。メモリ３０２の例は、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）である。
【００８９】
数値制御装置１０は、プロセッサ３０１が、メモリ３０２で記憶されている、数値制御装置１０の動作を実行するためのプログラムを読み出して実行することにより実現される。また、このプログラムは、数値制御装置１０の手順または方法をコンピュータに実行させるものであるともいえる。メモリ３０２は、プロセッサ３０１が各種処理を実行する際の一時メモリにも使用される。
【００９０】
なお、数値制御装置１０の機能について、一部を専用のハードウェアで実現し、一部をソフトウェアまたはファームウェアで実現するようにしてもよい。また、機械学習装置２０を、図７に示した制御回路３００によって実現してもよい。
【００９１】
本実施の形態では、ＦＢ電流５５および位置差分に基づいて、受け渡し位置が許容範囲内であるか否かを判定したが、ＦＢ電流５５を用いることなく位置差分に基づいて受け渡し位置が許容範囲内であるか否かを判定してもよい。
【００９２】
また、本実施の形態では、Ｘ軸方向のＦＢ電流５５およびＸ軸方向の位置差分に基づいて、受け渡し位置への位置指令５３を学習したが、Ｘ軸方向のＦＢ電流５５を用いることなくＸ軸方向の位置差分に基づいて受け渡し位置への位置指令５３を学習してもよい。
【００９３】
なお、主軸チャック３１が、電動式チャックである場合、主軸チャック３１側でもワーク４０の位置ずれを検出することができる。この場合、機械学習装置２０は、主軸チャック３１側で検出された位置ずれに基づいて、位置指令５３を学習してもよい。
【００９４】
本実施の形態では、機械学習装置２０が、強化学習を利用して機械学習する場合について説明したが、機械学習装置２０は、他の公知の方法、例えばニューラルネットワーク、遺伝的プログラミング、機能論理プログラミング、サポートベクターマシンなどに従って機械学習を実行してもよい。
【００９５】
また、本実施の形態では、学習部２１が学習した行動５８に基づいて、制御部１３がローダ３６を制御する場合について説明したが、制御部１３は、行動５８を用いることなくローダ３６を制御してもよい。この場合、制御部１３は、位置指令５３と、ＦＢ位置５４と、ＦＢ電流５５とに基づいて、ワーク４０の移動位置が許容範囲内であるか否かを判定し、位置ずれ量が許容範囲内でない場合には、位置指令５３で示される位置をずらした新たな位置指令５３を出力する。すなわち、制御部１３は、少しずつワーク４０の移動位置をずらして、ワーク４０の適切な移動位置を探索する。具体的には、制御部１３は、位置ずれを判定する処理と、位置ずれ量が許容範囲内でない場合に新たな位置指令５３を出力する処理と、を１回または複数回実行することによって、位置ずれ量を許容範囲内に収める。
【００９６】
このように実施の形態によれば、状態変数５６に基づいて作成されるデータセットに従って、チャック間におけるワーク４０の受け渡し位置の位置ずれを抑制する位置指令５３を学習するので、ワーク４０の受け渡し動作が繰り返されることによって、ワーク４０の受け渡しに失敗する確率を減少させていくことができる。
【００９７】
以上の実施の形態に示した構成は、本発明の内容の一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。
【符号の説明】
【００９８】
１  工作システム、２  工作機械、３  制御システム、１０  数値制御装置、１１  制御加工プログラム記憶部、１２  解析部、１３  制御部、１４  記憶部、２０  機械学習装置、２１  学習部、２２  関数更新部、２３  報酬計算部、２５  状態観測部、３０  端部、３１，３１Ａ  主軸チャック、３２  ローダチャック、３５  回転部、３６  ローダ、３７  ドライブユニット、３８  サーボモータ、３９  エンコーダ、４０  ワーク、５２  受け渡し位置情報、５３  位置指令、５４  ＦＢ位置、５５  ＦＢ電流、５６  状態変数、５７  報酬、５８  行動、６１  ローディング指令。
【図１】
2020008633.tif 000004
【図２】
2020008633.tif 000005
【図３】
2020008633.tif 000006
【図４】
2020008633.tif 000007
【図５】
2020008633.tif 000008
【図６】
2020008633.tif 000009
【図７】
2020008633.tif 000010
【手続補正書】
【提出日】平成30年11月26日(2018.11.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ワークを掴んで送る第１のチャックと、前記ワークを掴んで受け取る第２のチャックとの間の前記ワークの受け渡しの際に、前記第１のチャックを移動させる駆動機構への位置指令を学習する機械学習装置であって、
前記駆動機構への前記位置指令と、前記駆動機構からのフィードバックデータと、を状態変数として観測する状態観測部と、
前記状態変数に基づいて作成されるデータセットに従って、前記第１のチャックと前記第２のチャックとの間における前記ワークの受け渡し位置の位置ずれを抑制する前記位置指令を学習する学習部と、
を備え、
前記フィードバックデータは、前記ワークを搬送する搬送機構の位置を示すフィードバック位置を含み、
前記学習部は、
前記駆動機構への前記位置指令が示す位置と、前記フィードバック位置との差分に基づいて報酬を計算する報酬計算部と、
前記報酬に基づいて、前記位置指令を決定するための関数を更新する関数更新部と、
を有する、
ことを特徴とする機械学習装置。
【請求項２】
請求項１に記載の機械学習装置と、
前記学習部が学習した前記位置指令を前記駆動機構へ出力する制御部と、
を備えることを特徴とする数値制御装置。
【請求項３】
前記フィードバックデータは、前記駆動機構が前記第１のチャックを移動させるために前記駆動機構から出力される電流を示すデータであるフィードバック電流を含み、
前記報酬計算部は、前記差分および前記フィードバック電流に基づいて前記報酬を計算する、
ことを特徴とする請求項２に記載の数値制御装置。
【請求項４】
前記報酬計算部は、前記差分が閾値以下で、かつ前記フィードバック電流が基準電流値以下である場合には前記報酬を増大させ、前記差分が前記閾値よりも大きいまたは前記フィードバック電流が前記基準電流値よりも大きい場合には前記報酬を低減させる、
ことを特徴とする請求項３に記載の数値制御装置。
【請求項５】
前記関数更新部は、前記報酬に従って、前記関数を示す行動価値テーブルを更新する、
ことを特徴とする請求項３または４に記載の数値制御装置。
【請求項６】
前記状態観測部は、前記差分が閾値よりも大きいまたは前記フィードバック電流が基準電流値よりも大きい場合に、前記受け渡しが失敗であると判定し、
前記学習部は、前記受け渡しが失敗であると判定されると前記位置指令を学習し、
前記制御部は、前記受け渡しが失敗であると判定されると前記学習部が学習した前記位置指令で前記受け渡しの再試行を行う、
ことを特徴とする請求項３に記載の数値制御装置。
【請求項７】
前記学習部は、前記駆動機構への前記位置指令のうち、前記第１のチャックと前記第２のチャックとの間での前記受け渡しの方向に垂直な第１の方向への位置指令を学習する、
ことを特徴とする請求項２から６の何れか１つに記載の数値制御装置。
【請求項８】
請求項２から請求項７のいずれか１つに記載の数値制御装置によって制御され、前記駆動機構によって駆動する、
ことを特徴とする工作機械。
【請求項９】
ワークを掴んで送る側の第１のチャックと、前記ワークを掴んで受け取る側の第２のチャックとの間の前記ワークの受け渡しの際に、前記第１のチャックを移動させる駆動機構への位置指令を学習する機械学習方法であって、
前記駆動機構への前記位置指令と、前記駆動機構からのフィードバックデータと、を状態変数として観測する状態観測ステップと、
前記状態変数に基づいて作成されるデータセットに従って、前記第１のチャックと前記第２のチャックとの間における前記ワークの受け渡し位置の位置ずれを抑制する前記位置指令を学習する学習ステップと、
を含み、
前記フィードバックデータは、前記ワークを搬送する搬送機構の位置を示すフィードバック位置を含み、
前記学習ステップは、
前記駆動機構への前記位置指令が示す位置と、前記フィードバック位置との差分に基づいて報酬を計算する報酬計算ステップと、
前記報酬に基づいて、前記位置指令を決定するための関数を更新する関数更新ステップと、
を有する、
ことを特徴とする機械学習方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
上述した課題を解決し、目的を達成するために、本発明は、ワークを掴んで送る第１のチャックと、ワークを掴んで受け取る第２のチャックとの間のワークの受け渡しの際に、第１のチャックを移動させる駆動機構への位置指令を学習する機械学習装置であって、駆動機構への位置指令と、駆動機構からのフィードバックデータと、を状態変数として観測する状態観測部と、状態変数に基づいて作成されるデータセットに従って、第１のチャックと第２のチャックとの間におけるワークの受け渡し位置の位置ずれを抑制する位置指令を学習する学習部と、を備える。フィードバックデータは、ワークを搬送する搬送機構の位置を示すフィードバック位置を含み、学習部は、駆動機構への位置指令が示す位置と、フィードバック位置との差分に基づいて報酬を計算する報酬計算部と、報酬に基づいて、位置指令を決定するための関数を更新する関数更新部と、を有する。
【国際調査報告】
2020008633.tif 000011
2020008633.tif 000012