(57)【要約】  ワーク（４０）を掴んで送るローダチャック（３２）と、ワーク（４０）を掴んで受け取る主軸チャック（３１）との間のワーク（４０）の受け渡し中の主軸チャック（３１）によるワーク（４０）の把持およびローダチャック（３２）によるワーク（４０）の開放の少なくとも一方に対する待機時間を学習する機械学習装置（２０）が、待機時間と、ローダチャック（３２）を移動させるドライブユニット（３７）からのＦＢ電流（５５）と、を状態変数（５６Ａ，５６Ｂ）として観測する状態観測部（２５）と、状態変数（５６Ａ，５６Ｂ）に基づいて作成されるデータセットに従って、ワーク（４０）の受け渡し時間を短縮する待機時間を学習する学習部（２１）と、を備える。
2020008634.tif 000002
【特許請求の範囲】
【請求項１】
ワークを掴んで送る第１のチャックと、前記ワークを掴んで受け取る第２のチャックとの間の前記ワークの受け渡し中の前記第２のチャックによる前記ワークの把持および前記第１のチャックによる前記ワークの開放の少なくとも一方に対する待機時間を学習する機械学習装置であって、
前記待機時間と、前記第１のチャックを移動させる駆動機構からのフィードバック電流と、を状態変数として観測する状態観測部と、
前記状態変数に基づいて作成されるデータセットに従って、前記ワークの受け渡し時間を短縮する前記待機時間を学習する学習部と、
を備える、
ことを特徴とする機械学習装置。
【請求項２】
請求項１に記載の機械学習装置と、
前記学習部が学習した前記待機時間に基づいて、前記第２のチャックによる前記ワークの把持と前記第１のチャックによる前記ワークの開放とを制御する制御部と、
を備えることを特徴とする数値制御装置。
【請求項３】
前記学習部は、
前記待機時間および前記フィードバック電流に基づいて報酬を計算する報酬計算部と、
前記報酬に基づいて、前記待機時間を決定するための関数を更新する関数更新部と、
を備えることを特徴とする請求項２に記載の数値制御装置。
【請求項４】
学習される前記待機時間は、前記第２のチャックによって前記ワークが把持される際の第１の待機時間であり、
前記報酬計算部は、前記フィードバック電流が第１の基準電流値以上である場合には、学習した第１の待機時間が、これまで学習してきた最短の第１の待機時間よりも短ければ前記報酬を増大させ、前記フィードバック電流が前記第１の基準電流値よりも小さい場合には前記報酬を低減させる、
ことを特徴とする請求項３に記載の数値制御装置。
【請求項５】
前記状態観測部は、前記第２のチャックによって前記ワークが把持される際に前記フィードバック電流が前記第１の基準電流値よりも小さい場合、前記把持が失敗であると判定し、
前記把持が失敗であると判定されると、前記学習部は前記第１の待機時間を学習し、前記制御部は前記学習部が学習した前記第１の待機時間で前記把持の再試行を行う、
ことを特徴とする請求項４に記載の数値制御装置。
【請求項６】
学習される前記待機時間は、前記第１のチャックによって前記ワークが開放される際の第２の待機時間であり、
前記報酬計算部は、前記フィードバック電流が第２の基準電流値以下である場合には、学習した第２の待機時間が、これまで学習してきた最短の第２の待機時間よりも短ければ前記報酬を増大させ、前記フィードバック電流が前記第２の基準電流値よりも大きい場合には前記報酬を低減させる、
ことを特徴とする請求項３に記載の数値制御装置。
【請求項７】
前記状態観測部は、前記第１のチャックによって前記ワークが開放される際に前記フィードバック電流が前記第２の基準電流値よりも大きい場合、前記開放が失敗であると判定し、
前記開放が失敗であると判定されると、前記学習部は前記第２の待機時間を学習し、前記制御部は前記学習部が学習した前記第２の待機時間で前記開放の再試行を行う、
ことを特徴とする請求項６に記載の数値制御装置。
【請求項８】
前記関数更新部が、前記報酬に従って、前記関数を示す行動価値テーブルを更新する、
ことを特徴とする請求項３から７の何れか１つに記載の数値制御装置。
【請求項９】
請求項２から請求項８のいずれか１つに記載の数値制御装置によって制御され、前記駆動機構によって駆動する、
ことを特徴とする工作機械。
【請求項１０】
ワークを掴んで送る第１のチャックと、前記ワークを掴んで受け取る第２のチャックとの間の前記ワークの受け渡し中の前記第２のチャックによる前記ワークの把持および前記第１のチャックによる前記ワークの開放の少なくとも一方に対する待機時間を学習する機械学習方法であって、
前記待機時間と、前記第１のチャックを移動させる駆動機構からのフィードバック電流と、を状態変数として観測する状態観測ステップと、
前記状態変数に基づいて作成されるデータセットに従って、前記ワークの受け渡し時間を短縮する前記待機時間を学習する学習部ステップと、
を含む、
ことを特徴とする機械学習方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ワークの受け渡し動作を学習する機械学習装置、数値制御装置、工作機械および機械学習方法に関する。
【背景技術】
【０００２】
旋盤等の工作機械において、ワークを掴んで送る側のチャックと、ワークを掴んで受け取る側のチャックとの間におけるワークの受け渡しの動作では、受け取る側のチャックがワークを確実に掴んだ後に、送る側のチャックがワークを開放する必要がある。チャック間で確実にワークを受け渡すために、受け取る側のチャックが閉動作を開始してから送る側のチャックがワークの開放を開始するまでの待機時間を長くすると、ワークの受け渡しに長時間を要する。このため、ワークの受け渡しを短時間で完了することが望まれる。【０００３】
特許文献１に記載のクランプ制御装置は、ワークの受け渡しの際に、ワークを受け取る側のチャックが、ワークの軸を中心に回転揺動しながら閉動作を行い、ワークを受け取る側のチャックがワークを掴むことによってチャックの揺動が停止すると、ワークの把持が完了したと判断して送る側のチャックがワークを開放している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１６−１３５５２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記特許文献１では、回転揺動しながらワークを掴んでもワークに傷がつかないよう低速で閉動作を行う必要があるので、チャックの閉動作に時間がかかる。そのため、ワークの受け渡しを短時間で完了することができないという問題があった。【０００６】
本発明は、上記に鑑みてなされたものであって、ワークの受け渡しを短時間で完了させることができる機械学習装置を得ることを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明は、ワークを掴んで送る第１のチャックと、ワークを掴んで受け取る第２のチャックとの間のワークの受け渡し中の第２のチャックによるワークの把持および第１のチャックによるワークの開放の少なくとも一方に対する待機時間を学習する機械学習装置であって、待機時間と、第１のチャックを移動させる駆動機構からのフィードバック電流と、を状態変数として観測する状態観測部と、状態変数に基づいて作成されるデータセットに従って、ワークの受け渡し時間を短縮する待機時間を学習する学習部と、を備えることを特徴とする。
【発明の効果】
【０００８】
本発明にかかる機械学習装置は、ワークの受け渡しを短時間で完了させることができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】実施の形態にかかる工作システムの構成を示す図
【図２】実施の形態にかかる数値制御装置を備えた制御システムの構成を示す図
【図３】実施の形態にかかる工作システムの動作手順を示すフローチャート
【図４】実施の形態にかかる工作システムにおいて主軸チャックが把持を完了した場合のローダ引き戻し指令量とＦＢ電流との関係を示す図
【図５】実施の形態にかかる工作システムにおいて主軸チャックが把持を完了していない場合のローダ引き戻し指令量とＦＢ電流との関係を示す図
【図６】実施の形態にかかる工作システムにおいてローダチャックが開放を完了している場合のローダ引き戻し指令量とＦＢ電流との関係を示す図
【図７】実施の形態にかかる工作システムにおいてローダチャックが開放を完了していない場合のローダ引き戻し指令量とＦＢ電流との関係を示す図
【図８】実施の形態にかかる数値制御装置のハードウェア構成例を示す図
【発明を実施するための形態】
【００１０】
以下に、本発明の実施の形態にかかる機械学習装置、数値制御装置、工作機械および機械学習方法を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１１】
実施の形態
図１は、実施の形態にかかる工作システムの構成を示す図である。図１では、工作システム１を鉛直方向から見た場合を示している。本実施の形態では、鉛直方向がＹ軸方向であり、ワーク４０の移動方向である水平方向がＸ軸方向およびＺ軸方向である場合について説明する。
【００１２】
工作システム１は、ワーク４０を加工する工作機械２と、工作機械２の動作を制御する制御システム３とを備えている。工作機械２の例は、旋盤、マシニングセンタである。以下では、工作機械２が旋盤である場合について説明する。
【００１３】
工作機械２は、回転部３５と、第１のチャックであるローダチャック３２と、第２のチャックである主軸チャック３１と、ワーク４０の搬送機構であるローダ３６とを備えている。ローダ３６は、制御システム３によって動作が制御される。ローダチャック３２は、ローダ３６に接続されており、ローダ３６とともに移動する。ローダチャック３２は、被加工物であるワーク４０を把持することができる。ローダチャック３２の例は、三爪チャック、コレットチャックである。ローダチャック３２は、ワーク４０の加工を開始する際には、主軸チャック３１にワーク４０を渡し、ワーク４０の加工が完了した後には、主軸チャック３１からワーク４０を受け取る。
【００１４】
回転部３５は、主軸であるＺ軸を回転軸として回転する。主軸チャック３１は、回転部３５に接続されており、回転部３５とともに回転する。主軸チャック３１は、ワーク４０を把持することができる。主軸チャック３１の例は、三爪チャック、コレットチャックである。ワーク４０が加工される際には、主軸チャック３１がワーク４０を把持した状態で回転部３５が回転してワーク４０を回転させる。回転部３５の例は、スピンドル機構である。
【００１５】
工作機械２は、ワーク４０を回転部３５にロードする際には、ローダチャック３２でワーク４０の一方の端部を掴む。この状態でローダ３６は、Ｘ軸方向のマイナス側に移動し、主軸チャック３１に対向する位置で停止する（ｓ０）。そして、ローダ３６は、Ｚ軸方向のマイナス側に移動する。これにより、ローダ３６は、主軸チャック３１がワーク４０を掴むことができる位置までワーク４０を移動させる（ｓ１）。主軸チャック３１がワーク４０を掴むことができるローダ３６の位置が、所望の受け渡し位置である。工作機械２は、Ｍコードといった補助機能を用いて主軸チャック３１に閉動作の指令を与えて閉動作を開始させ（ｓ２）、閉動作の指令を与えた後、主軸チャック３１がワーク４０の把持を完了すると考えられる時間だけ待つ（ｓ３）。主軸チャック３１がワーク４０の把持を完了すると考えられる時間が、後述する把持待機時間６１である。把持待機時間６１が経過すると、主軸チャック３１によるワーク４０の他方の把持が完了する。
【００１６】
第１の待機時間である把持待機時間６１が経過し、さらに主軸チャック３１がワーク４０を掴んだことが確認された後、工作機械２は、ローダチャック３２に開動作の指令を与えて開動作を開始させ（ｓ４）、開動作の指令を与えた後、ローダチャック３２がワーク４０の開放を完了すると考えられる時間だけ待つ（ｓ５）。ローダチャック３２がワーク４０の開放を完了すると考えられる時間が、後述する開放待機時間６２である。第２の待機時間である開放待機時間６２が経過すると、ローダチャック３２によるワーク４０の開放が完了する。開放待機時間６２が経過し、さらにローダチャック３２がワーク４０を開放したことが確認された後、ローダ３６は、Ｚ軸方向のプラス側に移動する。これにより、ローダ３６は、ワーク４０から遠ざかる方向へ退避し（ｓ６）、さらにＸ軸方向のプラス側に移動する。
【００１７】
工作機械２は、ワーク４０の加工が完了すると、上述したｓ０からｓ６の処理と逆順の処理によってワーク４０を回転部３５からアンロードする。この場合において、ｓ０からｓ６の各処理自体は、逆方向の処理となる。すなわち、ｓ０およびｓ６の処理では、ローダ３６の移動方向は、ロード時とアンロード時とで逆方向になる。また、アンロード時には、ローダチャック３２の閉動作と、主軸チャック３１の開動作とが行われる。
【００１８】
具体的には、アンロードの際には、ローダ３６は、Ｘ軸方向のマイナス側に移動し、さらにワーク４０に近づく方向へ移動する。そして、ローダチャック３２は、閉動作を開始し、把持待機時間６１だけ待つ。把持待機時間６１が経過し、ローダチャック３２がワーク４０を掴んだことが確認された後、主軸チャック３１が開動作を開始し、開放待機時間６２だけ待つ。開放待機時間６２が経過し、主軸チャック３１がワーク４０を開放したことが確認された後、ローダ３６は、ワーク４０から遠ざかる方向へ退避し、さらにＸ軸方向のプラス側に移動する。
【００１９】
なお、ワーク４０を回転部３５にロードする際の把持待機時間６１と、ワーク４０を回転部３５からアンロードする際の把持待機時間６１とは、異なる時間であってもよい。また、ワーク４０を回転部３５にロードする際の開放待機時間６２と、ワーク４０を回転部３５からアンロードする際の開放待機時間６２とは、異なる時間であってもよい。ワーク４０を回転部３５にロードする処理と、ワーク４０を回転部３５からアンロードする処理とは同様の処理であるので、以下では、ワーク４０を回転部３５にロードする処理について説明する。
【００２０】
工作機械２は、ワーク４０を掴む処理、搬送処理などにおいて、機械特有の癖を有している。このため、主軸チャック３１に閉動作の指令を与えてから閉動作が完了するまでの時間、およびローダチャック３２に開動作の指令を与えてから開動作が完了するまでの時間は、工作機械２毎に異なる。
【００２１】
本実施の形態では、制御システム３が備える後述の数値制御（ＮＣ：Numerical  Control）装置１０が、ローダチャック３２が主軸チャック３１へワーク４０を渡そうとする際に用いられる適切な把持待機時間６１および開放待機時間６２を学習する。すなわち、数値制御装置１０が、把持待機時間６１および開放待機時間６２を学習することによって、無駄な待機時間を減らし、これにより、ワーク４０の受け渡し時間を短縮化する。なお、制御システム３は、把持待機時間６１および開放待機時間６２の一方を学習してもよい。すなわち、制御システム３は、把持待機時間６１および開放待機時間６２の少なくとも一方を学習する。
【００２２】
つぎに、工作機械２の動作を制御する数値制御装置１０の構成について説明する。図２は、実施の形態にかかる数値制御装置を備えた制御システムの構成を示す図である。制御システム３は、数値制御装置１０と、ドライブユニット３７と、サーボモータ３８とを備えている。図２に示すローダ３６、ローダチャック３２、主軸チャック３１は、工作機械２の構成要素である。
【００２３】
数値制御装置１０は、ドライブユニット３７に位置指令５３を送ることによってローダ３６の位置を制御するコンピュータである。数値制御装置１０がドライブユニット３７に送る位置指令５３は、ローダ３６の位置を指定した指令であり、Ｘ軸方向の位置指令とＺ軸方向の位置指令とが含まれている。数値制御装置１０は、ローダチャック３２から主軸チャック３１へのワーク４０の受け渡しを制御するとともに、受け渡しに失敗した場合には、把持待機時間６１および開放待機時間６２を変更して再度の受け渡しを制御する。
【００２４】
数値制御装置１０は、把持待機時間６１の後にローダチャック３２をＺ軸方向のプラス側に引き戻し、引き戻し時にサーボモータ３８に送られる電流の電流値に基づいて、適切な把持待機時間６１を学習する。また、数値制御装置１０は、開放待機時間６２の後にローダチャック３２をＺ軸方向のプラス側に引き戻し、引き戻し時にサーボモータ３８に送られる電流の電流値に基づいて、適切な開放待機時間６２を学習する。
【００２５】
ドライブユニット３７は、サーボモータ３８を駆動することによってローダ３６を移動させる駆動機構である。ドライブユニット３７は、数値制御装置１０からの位置指令５３に基づいて、サーボモータ３８に送る電流値を算出する。ドライブユニット３７は、位置指令５３に対応する電流をサーボモータ３８に送ることによってサーボモータ３８を駆動する。ドライブユニット３７は、サーボモータ３８に送る電流を示すデータであるフィードバック（ＦＢ：Feed-Back）電流５５を数値制御装置１０に送る。
【００２６】
サーボモータ３８は、ローダ３６に接続されており、ドライブユニット３７からの電流に従ってローダ３６を移動させる。サーボモータ３８は、ローダ３６をＸ軸方向に移動させるサーボモータと、ローダ３６をＺ軸方向に移動させるサーボモータとを含んでいる。      
【００２７】
数値制御装置１０は、制御加工プログラム記憶部１１と、解析部１２と、制御部１３と、記憶部１４と、シーケンス制御部１５と、機械学習装置２０とを備えている。制御加工プログラム記憶部１１は、ワーク４０を加工する際に用いられる制御加工プログラムを記憶する。制御加工プログラムには、ワーク４０を回転部３５にロードするためのローディング指令６０と、ワーク４０を加工するための加工指令と、ワーク４０を回転部３５からアンロードするためのアンローディング指令とが含まれている。図２では、ローディング指令６０を図示している。これらの指令のうち、ローディング指令６０およびアンローディング指令が、ワーク４０の受け渡しを行うための専用指令である。ローディング指令６０は、ローダ３６の位置決めを行うためのＧコード５１として解析部１２に送られる。
【００２８】
解析部１２は、制御加工プログラムを解析する。解析部１２は、解析した指令が専用指令であるか否かを判別し、ローディング指令６０といった専用指令である場合には、Ｇコード５１に基づいて、ワーク４０を受け渡す位置を示す受け渡し位置情報５２と、把持待機時間６１と、開放待機時間６２とを生成する。受け渡し位置情報５２は、ローダチャック３２と主軸チャック３１との間のチャック間でワーク４０を受け渡す位置の情報である。具体的には、受け渡し位置情報５２は、ローダ３６の終点である。ワーク４０の初回の受け渡し実行時には、受け渡し動作に用いられる情報が、専用指令の引数によって設定される。
【００２９】
専用指令は、下記の（Ａ１）から（Ａ９）の指令引数を含んでいる。
（Ａ１）把持待機時間６１
（Ａ２）開放待機時間６２
（Ａ３）把持完了と判定するか否かの基準である基準電流値Ｃ１
（Ａ４）把持の確認動作に用いるローダチャック３２の移動量Ｌ１
（Ａ５）開放完了と判定するか否かの基準である基準電流値Ｃ２
（Ａ６）開放の確認動作に用いるローダチャック３２の移動量Ｌ２
（Ａ７）主軸チャック３１への開閉補助機能の機能番号Ｘ１，Ｘ２
（Ａ８）ローダチャック３２への開閉補助機能の機能番号Ｙ１，Ｙ２
（Ａ９）ワーク４０の受け渡し位置情報５２であるローダ３６の終点
【００３０】
上述した（Ａ１）の把持待機時間６１は、主軸チャック３１に閉動作の指令を与えてから、主軸チャック３１による把持が完了したことの確認動作を行うための指令を与えるまでの待ち時間である。
【００３１】
（Ａ２）の開放待機時間６２は、ローダチャック３２に開動作の指令を与えてから、主軸チャック３１が開放を完了したことの確認動作を行うための指令を与えるまでの待ち時間である。
【００３２】
（Ａ３）の基準電流値Ｃ１は、主軸チャック３１による把持が完了したか否かを判定するための値であり、サーボモータ３８へ送られる電流のＦＢ電流５５と比較される。本実施の形態のＦＢ電流５５は、サーボモータ３８のうち、ローダ３６をＺ軸方向に移動させるサーボモータへ送られる電流を示している。基準電流値Ｃ１よりも小さなＦＢ電流５５がサーボモータ３８へ送られるような場合は、主軸チャック３１がワーク４０を掴んでおらず、ローダチャック３２がワーク４０を引き戻してしまう場合である。
【００３３】
（Ａ４）の移動量Ｌ１は、主軸チャック３１による把持が完了したことを確認するために、ワーク４０を掴んだままのローダチャック３２をＺ軸方向のプラス側に引き戻す距離である。
【００３４】
（Ａ５）の基準電流値Ｃ２は、ローダチャック３２が開放を完了したか否かを判定するための値であり、サーボモータ３８へ送られる電流のＦＢ電流５５と比較される。この基準電流値Ｃ２よりも大きなＦＢ電流５５がサーボモータ３８へ送られるような場合は、ローダチャック３２がワーク４０を開放しておらず、ローダチャック３２がワーク４０を引き戻そうとする場合である。
【００３５】
（Ａ６）の移動量Ｌ２は、ローダチャック３２による開放が完了したことを確認するために、ローダチャック３２をＺ軸方向のプラス側に引き戻す距離である。
【００３６】
（Ａ７）の機能番号Ｘ１は、主軸チャック３１への開指令である主軸開指令６３を示す番号であり、機能番号Ｘ２は、主軸チャック３１への閉指令である主軸閉指令６４を示す番号である。また、（Ａ８）の機能番号Ｙ１は、ローダチャック３２への開指令であるローダ開指令６５を示す番号であり、機能番号Ｙ２は、ローダチャック３２への閉指令であるローダ閉指令６６を示す番号である。また、（Ａ９）の受け渡し位置情報５２には、Ｘ座標とＺ座標とが含まれている。
【００３７】
解析部１２は、（Ａ１）把持待機時間６１と、（Ａ２）の開放待機時間６２と、（Ａ４）の移動量Ｌ１と、（Ａ６）の移動量Ｌ２と、（Ａ７）の機能番号Ｘ１，Ｘ２と、（Ａ８）の機能番号Ｙ１，Ｙ２と、（Ａ９）の受け渡し位置情報５２とを制御部１３に送る。また、解析部１２は、（Ａ３）の基準電流値Ｃ１と、（Ａ５）の基準電流値Ｃ２とを機械学習装置２０に送る。なお、解析部１２は、専用指令から指令引数の値を取得する場合に限らず、パラメータから指令引数に対応する値を取得してもよい。この場合、指令引数に対応する情報をパラメータとして記憶部１４に格納しておく。
【００３８】
制御部１３は、解析部１２から送られてくる受け渡し位置情報５２に従って位置指令５３を生成する。制御部１３は、位置指令５３をドライブユニット３７に送る。また、制御部１３は、ワーク４０の初回の受け渡し時には、解析部１２から送られてくる把持待機時間６１および開放待機時間６２に従って、主軸開指令６３、主軸閉指令６４、ローダ開指令６５、およびローダ閉指令６６を生成し、シーケンス制御部１５に送る。制御部１３は、ソフトウェアタイマによって、把持待機時間６１および開放待機時間６２で指定された時間を計測する。以下の説明では、主軸開指令６３、主軸閉指令６４、ローダ開指令６５、またはローダ閉指令６６を開閉指令という場合がある。
【００３９】
また、制御部１３は、ワーク４０の２回目以降の受け渡し時には、機械学習装置２０から与えられる行動５８Ａ，５８Ｂに従って、開閉指令を生成する。行動５８Ａは、次回の把持待機時間６１であり、行動５８Ｂは、次回の開放待機時間６２である。制御部１３は、実際に用いた把持待機時間６１および開放待機時間６２を機械学習装置２０に送る。
【００４０】
制御部１３は、解析部１２から機能番号Ｘ１が指定された指示を受けた場合には、機能番号Ｘ１に対応する主軸開指令６３を生成し、シーケンス制御部１５に送る。また、制御部１３は、解析部１２から機能番号Ｘ２が指定された指示を受けた場合には、機能番号Ｘ２に対応する主軸閉指令６４を生成し、シーケンス制御部１５に送る。また、制御部１３は、解析部１２から機能番号Ｙ１が指定された指示を受けた場合には、機能番号Ｙ１に対応するローダ開指令６５を生成し、シーケンス制御部１５に送る。また、制御部１３は、解析部１２から機能番号Ｙ２が指定された指示を受けた場合には、機能番号Ｙ２に対応するローダ閉指令６６を生成し、シーケンス制御部１５に送る。
【００４１】
制御部１３は、主軸チャック３１を閉動作させた後に、機械学習装置２０からＦＢ電流５５が基準電流値Ｃ１以上であることを示す通知を受けると、ローダチャック３２の開動作を開始させる。
【００４２】
制御部１３は、主軸チャック３１を閉動作させた後に、機械学習装置２０からＦＢ電流５５が基準電流値Ｃ１よりも小さいことを示す通知を受けると、主軸チャック３１を開動作させ、その後、主軸チャック３１の閉動作を再実行させる。
【００４３】
制御部１３は、ローダチャック３２を開動作させた後に、機械学習装置２０からＦＢ電流５５が基準電流値Ｃ２以下であることを示す通知を受けると、ローダ３６の退避動作を開始させる。
【００４４】
制御部１３は、ローダチャック３２を開動作させた後に、機械学習装置２０からＦＢ電流５５が基準電流値Ｃ２よりも大きいことを示す通知を受けると、シーケンス制御部１５にローダチャック３２を閉動作させ、その後、シーケンス制御部１５にローダチャック３２の開動作を再実行させる。
【００４５】
機械学習装置２０は、状態観測部２５と、学習部２１とを備えている。状態観測部２５は、解析部１２から、指令引数のうちの（Ａ３）の基準電流値Ｃ１と（Ａ５）の基準電流値Ｃ２とを取得する。
【００４６】
状態観測部２５は、制御部１３から把持待機時間６１および開放待機時間６２を取得し、ドライブユニット３７からＦＢ電流５５を取得する。状態観測部２５は、主軸チャック３１によるワーク４０の把持が完了しているか否かを判定する際には、ＦＢ電流５５および基準電流値Ｃ１を用いる。また、状態観測部２５は、ローダチャック３２によるワーク４０の開放が完了しているか否かを判定する際には、ＦＢ電流５５および基準電流値Ｃ２を用いる。
【００４７】
また、学習部２１が把持待機時間６１および開放待機時間６２を学習する際には、状態観測部２５は、把持待機時間６１と、把持動作時のＦＢ電流５５とを状態変数５６Ａとして観測し、開放待機時間６２と、開放動作時のＦＢ電流５５とを状態変数５６Ｂとして観測し、観測結果である状態変数５６Ａ，５６Ｂを学習部２１に送る。すなわち、状態観測部２５が学習部２１に送る状態変数５６Ａには、把持待機時間６１および把持動作時のＦＢ電流５５が含まれ、状態変数５６Ｂには、開放待機時間６２および開放動作時のＦＢ電流５５が含まれている。
【００４８】
把持待機時間６１が短すぎる場合には、主軸チャック３１がワーク４０を把持する前に、ローダチャック３２がワーク４０をＺ軸方向のプラス側へ引き戻すのでＦＢ電流５５は基準電流値Ｃ１よりも小さくなる。一方、把持待機時間６１が十分な長さである場合には、主軸チャック３１がワーク４０を把持した後に、ローダチャック３２がワーク４０をＺ軸方向のプラス側へ引き戻そうとするのでＦＢ電流５５が基準電流値Ｃ１以上となる。
【００４９】
また、開放待機時間６２が短すぎる場合には、ローダチャック３２がワーク４０を開放する前に、ローダチャック３２がワーク４０をＺ軸方向のプラス側へ引き戻そうとするのでＦＢ電流５５が基準電流値Ｃ１よりも大きくなる。一方、開放待機時間６２が十分な長さである場合には、ローダチャック３２がワーク４０を開放した後に、ローダチャック３２がワーク４０をＺ軸方向のプラス側へ引き戻すのでＦＢ電流５５が基準電流値Ｃ１以下となる。
【００５０】
したがって、状態観測部２５は、主軸チャック３１の閉動作中のＦＢ電流５５が基準電流値Ｃ１よりも小さい場合には、主軸チャック３１がワーク４０の把持を完了していない、すなわち把持に失敗したと判定する。また、状態観測部２５は、ローダチャック３２の開動作中のＦＢ電流５５が基準電流値Ｃ２よりも大きい場合には、ローダチャック３２がワーク４０の開放を完了していない、すなわち開放に失敗したと判定する。状態観測部２５は、把持の判定結果および開放の判定結果を制御部１３に送る。
【００５１】
学習部２１は、状態変数５６Ａに従って、次回の把持待機時間６１である行動５８Ａを学習し、状態変数５６Ｂに従って、次回の開放待機時間６２である行動５８Ｂを学習する。すなわち、学習部２１は、主軸チャック３１がワーク４０の把持を完了できて、且つ把持待機時間６１を短くすることができる把持待機時間６１と、ローダチャック３２がワーク４０の開放を完了できて、且つ開放待機時間６２を短くすることができる開放待機時間６２を学習する。
【００５２】
具体的には、学習部２１は、把持待機時間６１と把持動作時のＦＢ電流５５とを含んだ状態変数５６Ａに基づいて作成されるデータセットに従って、行動５８Ａを学習する。また、学習部２１は、開放待機時間６２と開放動作時のＦＢ電流５５とを含んだ状態変数５６Ｂに基づいて作成されるデータセットに従って、行動５８Ｂを学習する。学習部２１は、関数更新部２２と、報酬計算部２３とを備えている。
【００５３】
報酬計算部２３は、状態変数５６Ａに基づいて報酬５７Ａを計算し、状態変数５６Ｂに基づいて報酬５７Ｂを計算する。すなわち、報酬計算部２３は、把持待機時間６１および把持動作時のＦＢ電流５５に基づいて、把持動作の報酬５７Ａを計算し、開放待機時間６２および開放動作時のＦＢ電流５５に基づいて、開放動作の報酬５７Ｂを計算する。報酬計算部２３は、把持待機時間６１が短いほど把持動作の報酬５７Ａを増大させる。また、報酬計算部２３は、開放待機時間６２が短いほど開放動作の報酬５７Ｂを増大させる。
【００５４】
関数更新部２２は、行動５８Ａ，５８Ｂを決定するための関数を記憶しており、報酬５７Ａに基づいて行動５８Ａを決定するための関数を更新し、報酬５７Ｂに基づいて行動５８Ｂを決定するための関数を更新する。行動５８Ａ，５８Ｂを決定するための関数の例は、後述する行動価値関数Ｑ（ｓt，ａt）である。本実施の形態の関数更新部２２は、工作機械２でワーク４０の受け渡し動作が繰り返されるたびに、把持待機時間６１および開放待機時間６２が短くなるよう、行動価値関数Ｑ（ｓ，ａ）を更新する。関数更新部２２は、更新した行動価値関数Ｑ（ｓ，ａ）を用いて行動５８Ａ，５８Ｂを算出する。関数更新部２２は、算出した行動５８Ａ，５８Ｂを制御部１３に送り、前回までの学習データ、学習に用いるデータおよびローダ３６の制御に必要なデータを記憶部１４に送る。学習データの例は、受け渡しに成功した場合に算出された次回用の把持待機時間６１および開放待機時間６２であり、学習に用いるデータの例は、学習部２１が学習の際に用いる行動価値関数Ｑ（ｓ，ａ）である。ローダ３６の制御に用いるデータの例は、上述した専用指令の（Ａ１）から（Ａ６）である。記憶部１４は、前回までの学習データ、学習に用いるデータおよび制御部１３によるローダ３６の制御に必要なデータを記憶する。なお、行動５８Ａを決定するための行動価値関数Ｑ（ｓt，ａt）と、行動５８Ｂを決定するための行動価値関数Ｑ（ｓt，ａt）とは、異なる関数であってもよい。
【００５５】
つぎに、工作システム１の動作手順について説明する。図３は、実施の形態にかかる工作システムの動作手順を示すフローチャートである。数値制御装置１０は、ローディング指令６０を読み出すと、ワーク４０の受け渡しが初めてである場合、すなわち未学習の場合、上述の（Ａ９）の位置指令５３で指令された受け渡し位置へのローダ３６の移動を開始する（ステップＳＴ１０）。このとき、制御部１３は、ドライブユニット３７に位置指令５３を送る。これにより、ローダチャック３２がワーク４０を掴んだ状態でローダ３６がＸ軸方向へ移動し、その後、Ｚ軸方向に移動する。
【００５６】
ワーク４０が移動を開始すると、ドライブユニット３７は、特定の周期毎にＦＢ電流５５を取得して、状態観測部２５に送る。これにより、状態観測部２５は、ＦＢ電流５５を監視する。
【００５７】
制御部１３は、シーケンス制御部１５に主軸閉指令６４を送り、シーケンス制御部１５が主軸チャック３１に閉動作を開始させる（ステップＳＴ１１）。そして、制御部１３は、把持待機時間６１だけ待つ（ステップＳＴ１２）。このとき、制御部１３は、把持待機時間６１を状態観測部２５に送る。なお、ワーク４０の受け渡しが初めてである場合、すなわち未学習の場合、制御部１３は、上述の（Ａ１）の把持待機時間６１だけ待つ。ワーク４０の２回目以降の受け渡し時には、制御部１３は、機械学習装置２０から与えられる次回の把持待機時間６１である行動５８Ａだけ待つ。
【００５８】
把持待機時間６１が経過すると、制御部１３は、把持の確認動作を実行する（ステップＳＴ１３）。具体的には、制御部１３は、ローダチャック３２をＺ軸方向のプラス側に移動量Ｌ１だけ引き戻すための位置指令をドライブユニット３７に送る。状態観測部２５は、この時のＦＢ電流５５と、基準電流値Ｃ１とを含んだ状態変数５６Ａを学習部２１に送る。これにより、学習部２１は、状態変数５６Ａに従って、適切な把持待機時間６１を学習する（ステップＳＴ１４）。ワーク４０の把持が失敗である場合、学習部２１は、受け渡しに用いた把持待機時間６１に対して小さな値の報酬５７Ａを設定し、ワーク４０の把持が成功である場合、学習部２１は、受け渡しに用いた把持待機時間６１に対して大きな値の報酬５７Ａを設定する。そして、学習部２１は、把持動作の報酬５７Ａが最大となるよう、次回の把持待機時間６１である行動５８Ａを決定する。
【００５９】
すなわち、数値制御装置１０は、ある設定の把持待機時間６１でワーク４０の受け渡しを実行させてみて、把持の動作確認で把持が成功した場合には、もっと短い把持待機時間６１を設定し、把持の動作確認で把持が失敗した場合には、もっと長い把持待機時間６１を設定する。数値制御装置１０は、これらの設定処理を繰り返して学習し、学習した結果を利用して、本番の製品加工の受け渡し時には最適な把持待機時間６１で受け渡しを行うようにする。このように、数値制御装置１０は、把持待機時間６１が減っていくように、把持待機時間６１を学習していく。数値制御装置１０は、本番の製品加工を実行する前に把持待機時間６１を学習してもよいし、本番の製品加工を実行する際に把持待機時間６１を学習してもよい。また、数値制御装置１０は、本番の製品加工を実行する前と本番の製品加工を実行する際との両方で把持待機時間６１を学習してもよい。
【００６０】
また、状態観測部２５は、把持の確認動作を実行した際のＦＢ電流５５が、基準電流値Ｃ１以上であるか否かを判定する（ステップＳＴ１５）。ＦＢ電流５５が基準電流値Ｃ１よりも小さい場合（ステップＳＴ１５、Ｎｏ）、制御部１３は、主軸開指令６３を主軸チャック３１に送ることによって主軸チャック３１を開かせる（ステップＳＴ１６）。
【００６１】
この後、工作システム１は、ステップＳＴ１１からＳＴ１５の処理を繰り返す。そして、ＦＢ電流５５が基準電流値Ｃ１以上になると（ステップＳＴ１５、Ｙｅｓ）、制御部１３は、シーケンス制御部１５にローダ開指令６５を送り、シーケンス制御部１５がローダチャック３２に開動作を開始させる（ステップＳＴ２１）。そして、制御部１３は、開放待機時間６２だけ待つ（ステップＳＴ２２）。このとき、制御部１３は、開放待機時間６２を状態観測部２５に送る。なお、ワーク４０の受け渡しが初めてである場合、すなわち未学習の場合、制御部１３は、上述の（Ａ２）の開放待機時間６２だけ待つ。ワーク４０の２回目以降の受け渡し時には、制御部１３は、機械学習装置２０から与えられる次回の開放待機時間６２である行動５８Ｂだけ待つ。
【００６２】
開放待機時間６２が経過すると、制御部１３は、開放の確認動作を実行する（ステップＳＴ２３）。具体的には、制御部１３は、ローダチャック３２をＺ軸方向のプラス側に移動量Ｌ２だけ引き戻すための位置指令をドライブユニット３７に送る。状態観測部２５は、この時のＦＢ電流５５と、基準電流値Ｃ２とを含んだ状態変数５６Ｂを学習部２１に送る。これにより、学習部２１は、状態変数５６Ｂに従って、適切な開放待機時間６２を学習する（ステップＳＴ２４）。ワーク４０の開放が失敗である場合、学習部２１は、受け渡しに用いた開放待機時間６２に対して小さな値の報酬５７Ｂを設定し、ワーク４０の開放が成功である場合、学習部２１は、受け渡しに用いた開放待機時間６２に対して大きな値の報酬５７Ｂを設定する。そして、学習部２１は、開放動作の報酬５７Ｂが最大となるよう、次回の開放待機時間６２である行動５８Ｂを決定する。
【００６３】
すなわち、数値制御装置１０は、ある設定の開放待機時間６２でワーク４０の受け渡しを実行させてみて、開放の動作確認で開放が成功した場合には、もっと短い開放待機時間６２を設定し、開放の動作確認で開放が失敗した場合には、もっと長い開放待機時間６２を設定する。数値制御装置１０は、これらの設定処理を繰り返して学習し、学習した結果を利用して、本番の製品加工の受け渡し時には最適な開放待機時間６２で受け渡しを行うようにする。このように、数値制御装置１０は、開放待機時間６２が減っていくように、開放待機時間６２を学習していく。数値制御装置１０は、本番の製品加工を実行する前に開放待機時間６２を学習してもよいし、本番の製品加工を実行する際に開放待機時間６２を学習してもよい。また、数値制御装置１０は、本番の製品加工を実行する前と本番の製品加工を実行する際との両方で開放待機時間６２を学習してもよい。
【００６４】
また、状態観測部２５は、開放の確認動作を実行した際のＦＢ電流５５が、基準電流値Ｃ２以下であるか否かを判定する（ステップＳＴ２５）。ＦＢ電流５５が基準電流値Ｃ２よりも大きい場合（ステップＳＴ２５、Ｎｏ）、制御部１３は、ローダ閉指令６６をローダチャック３２に送ることによってローダチャック３２を閉じさせる（ステップＳＴ２６）。
【００６５】
この後、工作システム１は、ステップＳＴ２１からＳＴ２５の処理を繰り返す。そして、ＦＢ電流５５が基準電流値Ｃ２以下になると（ステップＳＴ２５、Ｙｅｓ）、制御部１３は、ローダ３６をＺ軸方向のプラス側に退避させる（ステップＳＴ３０）。これにより、専用指令のシーケンスが完了する。
【００６６】
なお、機械学習装置２０は、把持待機時間６１および開放待機時間６２の学習を、毎回の受け渡しにて行う必要はない。機械学習装置２０は、ワーク４０の受け渡しに対し、特定回数に１回の割合で把持待機時間６１および開放待機時間６２を学習すればよい。機械学習装置２０は、報酬５７Ａ，５７Ｂ、把持待機時間６１または開放待機時間６２の変更量に応じて、学習頻度を変更してもよい。
【００６７】
なお、機械学習装置２０は、ワーク４０が主軸チャック３１からローダ３６へアンロードされる際にも、ワーク４０がローダ３６から主軸チャック３１にロードされる場合と同様の処理によって把持待機時間６１および開放待機時間６２を学習する。
【００６８】
ここで学習部２１による行動５８Ａ，５８Ｂの学習処理について説明する。学習部２１に用いる学習アルゴリズムは、何れの学習アルゴリズムであってもよい。ここでは、学習アルゴリズムに、強化学習（Reinforcement  Learning）を適用した場合について説明する。強化学習は、ある環境内における行動主体であるエージェントが、状態変数５６Ａ，５６Ｂで示される現在の状態を観測し、観測結果に基づいて取るべき行動５８Ａ，５８Ｂを決定するというものである。エージェントは、行動５８Ａ，５８Ｂを選択することで環境から報酬５７Ａ，５７Ｂを得て、一連の行動５８Ａ，５８Ｂを通じて報酬５７Ａ，５７Ｂが最も多く得られるような方策を学習する。強化学習の代表的な手法として、Ｑ学習（Q-Learning）およびＴＤ学習（TD-Learning）が知られている。例えば、Ｑ学習の場合、行動価値関数Ｑ（ｓ，ａ）の一般的な更新式（行動価値テーブル）は、以下の式（１）で表される。すなわち、行動価値テーブルの一例は、式（１）の行動価値関数Ｑ（ｓ，ａ）である。
【００６９】
【数１】
2020008634.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）である。
【００９０】
数値制御装置１０は、プロセッサ３０１が、メモリ３０２で記憶されている、数値制御装置１０の動作を実行するためのプログラムを読み出して実行することにより実現される。また、このプログラムは、数値制御装置１０の手順または方法をコンピュータに実行させるものであるともいえる。メモリ３０２は、プロセッサ３０１が各種処理を実行する際の一時メモリにも使用される。
【００９１】
なお、数値制御装置１０の機能について、一部を専用のハードウェアで実現し、一部をソフトウェアまたはファームウェアで実現するようにしてもよい。また、機械学習装置２０を、図８に示した制御回路３００によって実現してもよい。
【００９２】
なお、主軸チャック３１が、電動式チャックである場合、主軸チャック３１側でもワーク４０の把持動作および開放動作を検出することができる。この場合、機械学習装置２０は、主軸チャック３１側で検出されたＦＢ電流に基づいて、把持待機時間６１および開放待機時間６２を学習してもよい。
【００９３】
本実施の形態では、機械学習装置２０が、強化学習を利用して機械学習する場合について説明したが、機械学習装置２０は、他の公知の方法、例えばニューラルネットワーク、遺伝的プログラミング、機能論理プログラミング、サポートベクターマシンなどに従って機械学習を実行してもよい。
【００９４】
このように実施の形態によれば、状態変数５６Ａ，５６Ｂに基づいて作成されるデータセットに従って、チャック間におけるワーク４０の受け渡し時間を短縮する把持待機時間６１および開放待機時間６２を学習するので、ワーク４０の受け渡しを短時間で完了させることができる。
【００９５】
以上の実施の形態に示した構成は、本発明の内容の一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。
【符号の説明】
【００９６】
１  工作システム、２  工作機械、３  制御システム、１０  数値制御装置、１１  制御加工プログラム記憶部、１２  解析部、１３  制御部、１４  記憶部、１５  シーケンス制御部、２０  機械学習装置、２１  学習部、２２  関数更新部、２３  報酬計算部、２５  状態観測部、３１  主軸チャック、３２  ローダチャック、３５  回転部、３６  ローダ、３７  ドライブユニット、３８  サーボモータ、４０  ワーク、５２  受け渡し位置情報、５３  位置指令、５５  ＦＢ電流、５６Ａ，５６Ｂ  状態変数、５７Ａ，５７Ｂ  報酬、５８Ａ，５８Ｂ  行動、６１  把持待機時間、６２  開放待機時間、６３  主軸開指令、６４  主軸閉指令、６５  ローダ開指令、６６  ローダ閉指令。
【図１】
2020008634.tif 000004
【図２】
2020008634.tif 000005
【図３】
2020008634.tif 000006
【図４】
2020008634.tif 000007
【図５】
2020008634.tif 000008
【図６】
2020008634.tif 000009
【図７】
2020008634.tif 000010
【図８】
2020008634.tif 000011
【国際調査報告】
2020008634.tif 000012
2020008634.tif 000013
2020008634.tif 000014
2020008634.tif 000015