(57)【要約】【課題】搬送装置上に設置されている枠の状態に応じて、ロボットが該枠にワークを投入する動作を適切に調整することが可能なロボットコントローラ及びロボットコントロールシステムを提供すること。【解決手段】本発明のロボットコントローラ１は、搬送装置上に設置された複数の枠内にワークを整列して投入する整列作業をロボットに行わせるロボットコントローラ１であって、ロボットの動作状態、及び枠の状態を取得するデータ取得部３４と、データ取得部３４が取得したデータに基づいて、機械学習に用いるデータを作成する前処理部３６と、前処理部３６が作成したデータに基づいて、搬送装置上の枠の設置状態における、ロボットの枠へのワークの投入動作に係る機械学習の処理を実行する機械学習装置１００と、を備える。【選択図】図２
2020131416.tif 000002
【特許請求の範囲】
【請求項１】
搬送装置上に設置された複数の枠内にワークを整列して投入する整列作業をロボットに行わせるロボットコントローラであって、
前記ロボットの動作状態、及び前記枠の状態を取得するデータ取得部と、
前記データ取得部が取得したデータに基づいて、機械学習に用いるデータを作成する前処理部と、
前記前処理部が作成したデータに基づいて、前記搬送装置上の前記枠の設置状態における、前記ロボットの前記枠への前記ワークの投入動作に係る機械学習の処理を実行する機械学習装置と、
を備えたロボットコントローラ。
【請求項２】
前記前処理部は、前記搬送装置上の前記枠の設置状態に係る情報を含む枠データを少なくとも含む状態データと、前記ロボットの前記枠への前記ワークの投入動作に係る情報を含むロボット動作データを少なくとも含むラベルデータとを、前記機械学習装置による教師あり学習に用いるデータとして作成し、
前記機械学習装置は、
前記状態データ及び前記ラベルデータに基づいて、前記搬送装置上の前記枠の設置状態と、前記ロボットの前記枠への前記ワークの投入動作に係る情報と、を関連付けた学習モデルを生成する学習部を備える、
請求項１に記載のロボットコントローラ。
【請求項３】
前記前処理部は、前記搬送装置上の前記枠の設置状態に係る情報を含む枠データを少なくとも含む状態データを、前記機械学習装置による推定に用いるデータとして作成し、
前記機械学習装置は、
前記搬送装置上の前記枠の設置状態と、前記ロボットの前記枠への前記ワークの投入動作に係る情報と、を関連付けた学習モデルを記憶する学習モデル記憶部と、
前記状態データに基づいて、前記学習モデル記憶部に記憶された学習モデルを用いた前記ロボットの前記枠への前記ワークの投入動作に係る情報を推定する推定部を備え、
前記ロボットコントローラは、
前記推定部による推定結果に基づいて、前記枠への前記ワークの投入動作を前記ロボットに対して指令する制御部を更に備える、
請求項１に記載のロボットコントローラ。
【請求項４】
前記前処理部は、前記搬送装置上の前記枠の設置状態に係る情報を含む枠データ、及び前記ロボットの前記枠への前記ワークの投入動作に係る情報を含むロボット動作データを少なくとも含む状態データと、前記ロボットの前記枠への前記ワークの投入動作を判定するためのデータである投入動作判定データを少なくとも含む判定データとを、前記機械学習装置による強化学習に用いるデータとして作成し、
前記機械学習装置は、
前記状態データ及び前記判定データに基づいて、前記搬送装置上の前記枠の設置状態と、前記ロボットの前記枠に対する前記ワークの投入動作の調整行動と、を関連付けた学習モデルを生成する学習部と、
前記状態データに基づいて、前記学習部が生成した学習モデルを用いた前記ロボットの前記枠に対する前記ワークの投入動作の調整を決定する意思決定部と、
を備え、
前記ロボットコントローラは、
前記意思決定部の決定に基づいて、前記枠への前記ワークの投入動作を前記ロボットに対する指令を調整する制御部を更に備える、
請求項１に記載のロボットコントローラ。
【請求項５】
前記ロボットの前記枠への前記ワークの投入動作に係る情報は、前記ロボットが前記枠に対して前記ワークを投入する際の基準とする座標系に係る情報を含む、
請求項２〜４のいずれか１つに記載のロボットコントローラ。
【請求項６】
前記ロボットの前記枠への前記ワークの投入動作に係る情報は、更に前記ロボットが前記枠に対して前記ワークを投入する際の該ワークの速度に係る情報を含む、
請求項５に記載のロボットコントローラ。
【請求項７】
複数の装置がネットワークを介して相互に接続されたシステムであって、
前記複数の装置は、少なくとも請求項２又は４に記載されたロボットコントローラである第１のロボットコントローラを含む
ロボットコントロールシステム。
【請求項８】
前記複数の装置は、機械学習装置を備えたコンピュータを含み、
前記コンピュータは、前記第１のロボットコントローラの前記学習部における学習により生成された少なくとも１つの学習モデルを取得し、
前記コンピュータが備える機械学習装置は、取得した前記学習モデルに基づく最適化乃至効率化を行う、
請求項７に記載のロボットコントロールシステム。
【請求項９】
前記複数の装置は、前記第１のロボットコントローラとは異なる第２のロボットコントローラを含み、
前記第１のロボットコントローラが備える学習部による学習結果は、前記第２のロボットコントローラと共有される、
請求項７に記載のロボットコントロールシステム。
【請求項１０】
前記複数の装置は、前記第１のロボットコントローラとは異なる第２のロボットコントローラを含み、
前記第２のロボットコントローラにおいて観測されたデータは、前記ネットワークを介して前記第１のロボットコントローラが備える学習部による学習に利用可能である、
請求項７に記載のロボットコントロールシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットコントローラ及びロボットコントロールシステムに関する。
【背景技術】
【０００２】
工場等の製造現場では、ロボットでワークをコンベヤ上のトレー等の「枠」に収める作業を行うことがある。例えば、図１１に示すように、搬送装置４ａ（第１のコンベヤ）の上を搬送されてくるワーク５を、搬送装置４ｂ（第２のコンベヤ）の上に設置されているトレー等の枠３に収める作業をロボット２で行う場合がある（例えば、特許文献１，２等）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開昭６３−１２３７２３号公報
【特許文献１】特開昭５８−１３７５８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
このような作業において、ワーク５と、それを納める枠３との隙間が小さいと、歩留まり良く作業を続けるには困難が伴う。通常のシステムでは枠３は搬送装置４上に等間隔で均等に配置されていることを前提としており、全ての枠が同じものであり同じように移動しているとしてロボット２の動作を決定する。しかしながら、実際には個別の枠３毎にわずかな寸法差があったり、使用に伴うヘタリやミスアライメントなどが存在し、これが作業の成否に影響を与える。
【０００５】
そのため、搬送装置上に設置されている枠の状態に応じて、ロボットが該枠にワークを投入する動作を適切に調整することが可能なロボットコントローラ及びロボットコントロールシステムが望まれている。
【課題を解決するための手段】
【０００６】
本発明の一態様は、搬送装置上に設置された複数の枠内にワークを整列して投入する整列作業をロボットに行わせるロボットコントローラであって、前記ロボットの動作状態、及び前記枠の状態を取得するデータ取得部と、前記データ取得部が取得したデータに基づいて、機械学習に用いるデータを作成する前処理部と、前記前処理部が作成したデータに基づいて、前記搬送装置上の前記枠の設置状態における、前記ロボットの前記枠への前記ワークの投入動作に係る機械学習の処理を実行する機械学習装置と、を備えたロボットコントローラである。
【０００７】
本発明の他の態様は、複数の装置がネットワークを介して相互に接続されたシステムであって、前記複数の装置は、機械学習装置を備えた第１のロボットコントローラを含むロボットコントロールシステムである。
【発明の効果】
【０００８】
本発明の一態様によれば、搬送装置上に設置されている枠の状態に応じて、ロボットが該枠にワークを投入する動作を適切に調整することができるようになる。
【図面の簡単な説明】
【０００９】
【図１】一実施形態によるロボットコントローラの概略的なハードウェア構成図である。
【図２】第１実施形態による制御装置の概略的な機能ブロック図である。
【図３】従来技術による搬送装置上に設置された枠に対してワークを投入する動作について説明する図である。
【図４】本発明による搬送装置上に設置された枠に対してワークを投入する動作について説明する図である。
【図５】第２実施形態によるロボットコントローラの概略的な機能ブロック図である。
【図６】第３実施形態によるロボットコントローラの概略的な機能ブロック図である。
【図７】クラウドサーバ、フォグコンピュータ、エッジコンピュータを含む３階層構造のシステムの例を示す図である。
【図８】第４実施形態によるロボットコントロールシステムの概略的な構成図である。
【図９】第５実施形態によるロボットコントロールシステムの概略的な構成図である。
【図１０】第６実施形態によるロボットコントロールシステムの概略的な構成図である。
【図１１】従来技術による、ロボットの枠に対するワークの投入動作について説明する図である。
【発明を実施するための形態】
【００１０】
以下、本発明の実施形態を図面と共に説明する。
図１は一実施形態による機械学習装置を備えたロボットコントローラの要部を示す概略的なハードウェア構成図である。
【００１１】
本実施形態によるロボットコントローラ１が備えるＣＰＵ１１は、ロボットコントローラ１を全体的に制御するプロセッサである。ＣＰＵ１１は、ＲＯＭ１２に格納されたシステム・プログラムをバス２０を介して読み出し、該システム・プログラムに従ってロボットコントローラ１の全体を制御する。ＲＡＭ１３には一時的な計算データや表示データ、図示しない入力部を介してオペレータが入力した各種データ等が一時的に格納される。
【００１２】
不揮発性メモリ１４は、例えば図示しないバッテリでバックアップされるなどして、ロボットコントローラ１の電源がオフされても記憶状態が保持されるメモリとして構成される。不揮発性メモリ１４には、図示しない外部機器から読み込まれたプログラム、入力装置７１を介して入力されたプログラム、ロボットコントローラ１の各部やロボット２から取得された各種データ（例えば、ハンドによるワークの把持状態、ロボット２の関節を駆動するモータの位置、速度、加速度等）、ロボット２や図示しない搬送機械等に取り付けられたセンサ６から取得された各種データ（例えば、光電センサによる枠検出信号、撮像装置により撮像された枠の映像等）等が記憶されている。不揮発性メモリ１４に記憶されたプログラムや各種データは、実行時／利用時にはＲＡＭ１３に展開されても良い。また、ＲＯＭ１２には、公知の解析プログラムなどの各種のシステム・プログラム（後述する機械学習装置１００とのやりとりを制御するためのシステム・プログラムを含む）があらかじめ書き込まれている。
【００１３】
ロボット２は、１以上のリンク（可動部）と１以上の関節を有するロボットであり、例えば６軸多関節型ロボットを挙げることができる。ロボット２は、アームの先端にワークを把持するためのハンド等のツールを備えたロボットであって良い。ロボット２は、図１１で例示されるように、搬送装置（図示せず）の上に設置されている少なくとも１つの枠（トレー等）に対して、ワークを嵌め込むために用いられる。ロボットコントローラ１のＣＰＵ１１は、ロボット２の制御用プログラムを実行することでロボット２が備えるリンクや関節を駆動する指令を作成し、作成した指令をインタフェース１８を介してロボット２に対して出力することで、ロボット２の動作を制御する。また、ロボット２のリンクや関節等の動作に係る情報（例えば、ハンドによるワークの把持状態、関節を駆動するモータの位置、速度、加速度等）は、インタフェース１９を介してＣＰＵに渡される。
【００１４】
センサ６は、ロボット２や図示しない搬送機械等に取り付けられた光電センサやカメラ等の撮像センサである。ロボットコントローラ１は、少なくとも１つのセンサ６とインタフェース１９を介して接続されている。センサ６の例として、搬送装置４上に設置されている枠３の位置を検出する枠位置検出センサ（例えば、光電センサ等）、搬送装置４上の枠３の設置状態に係る情報を検出する設置情報検出センサ（例えば、撮像センサ、タグリーダ等）、搬送装置４上に設置されている枠３に対するワークの投入状態を検出する投入状態検出センサ（例えば、接触センサや圧力センサ、撮像センサ等）などが例示される。センサ６は、後述する機械学習において必要とされる情報を取得するために、複数設けられていても良い。
【００１５】
表示装置７０には、メモリ上に読み込まれた各データ、プログラム等が実行された結果として得られたデータ、後述する機械学習装置１００から出力されたデータ等がインタフェース１７を介して出力されて表示される。また、キーボードやポインティングデバイス等から構成される入力装置７１は、作業者による操作に基づく指令，データ等をインタフェース１８を介してＣＰＵ１１に渡す。
【００１６】
インタフェース２１は、ロボットコントローラ１と機械学習装置１００とを接続するためのインタフェースである。機械学習装置１００は、機械学習装置１００全体を統御するプロセッサ１０１と、システム・プログラム等を記憶したＲＯＭ１０２、機械学習に係る各処理における一時的な記憶を行うためのＲＡＭ１０３、及び学習モデル等の記憶に用いられる不揮発性メモリ１０４を備える。機械学習装置１００は、インタフェース２１を介してロボットコントローラ１で取得可能な各情報（例えば、ハンドによるワークの把持状態、ロボット２の関節を駆動するモータの位置、速度、加速度、光電センサによる枠検出信号、撮像装置により撮像された枠の映像等）を観測することができる。また、ロボットコントローラ１は、機械学習装置１００から出力される情報を受けて、ロボット２の制御、表示装置７０への表示、図示しないネットワークを介した他の装置に対する情報の送信等を行う。
【００１７】
図２は、第１実施形態によるロボットコントローラ１と機械学習装置１００の概略的な機能ブロック図である。本実施形態のロボットコントローラ１は、機械学習装置１００が教師あり学習を行う場合に必要とされる構成を備えている（学習モード）。図２に示した各機能ブロックは、図１に示したロボットコントローラ１が備えるＣＰＵ１１、及び機械学習装置１００のプロセッサ１０１が、それぞれのシステム・プログラムを実行し、ロボットコントローラ１及び機械学習装置１００の各部の動作を制御することにより実現される。
【００１８】
本実施形態のロボットコントローラ１は、制御部３２、データ取得部３４、前処理部３６を備え、ロボットコントローラ１が備える機械学習装置１００は、学習部１１０を備えている。また、図１で示した不揮発性メモリ１４上には、ロボット２、（枠位置検出センサ６ａ、設置状態検出センサ６ｂ、投入状態検出センサ６ｃ）等から取得されたデータが記憶される取得データ記憶部５２が設けられており、図１で示した機械学習装置１００の不揮発性メモリ１０４上には、学習部１１０による機械学習により構築された学習モデルを記憶する学習モデル記憶部１３０が設けられている。
【００１９】
制御部３２は、図１に示したロボットコントローラ１が備えるＣＰＵ１１がＲＯＭ１２から読み出したシステム・プログラムを実行し、主としてＣＰＵ１１によるＲＡＭ１３、不揮発性メモリ１４を用いた演算処理と、インタフェース１８を介したロボット２の制御処理、インタフェース１９を介したセンサ６（枠位置検出センサ６ａ、設置状態検出センサ６ｂ、投入状態検出センサ６ｃ）の制御処理が行われることで実現される。制御部３２は、図１で示した不揮発性メモリ１４に記憶された制御用プログラム５４に基づいて、ロボット２の動作を制御する機能手段である。制御部３２は、制御用プログラム５４によりロボット２が備える各軸を駆動するモータに対して制御周期毎に移動指令を出力する等といったように、ロボット２の各部を制御するために必要とされる一般的な制御のための機能を備える。また、制御部３２は、ロボット２及びセンサ６（枠位置検出センサ６ａ、設置状態検出センサ６ｂ、投入状態検出センサ６ｃ）から、ロボット２の制御に必要とされる情報（ロボット２の動作状態を示す情報及び搬送装置４上に設置された枠３の状態を示す情報）を受け取り、データ取得部３４に対して出力する。制御部３２が、ロボット２及びセンサ６から取得し、データ取得部３４に出力するデータは、例えば、ロボット２のハンドによるワーク５の把持状態、ロボット２の関節を駆動するモータの位置、速度、加速度、枠位置検出センサ６ａによる枠検出信号、設置状態検出センサ６ｂによる枠３の設置状態に係る情報、投入状態検出センサ６ｃによる枠３へのワーク５の投入状態に係る情報等が挙げられる。
【００２０】
制御部３２は、制御用プログラム５４による指令に従って、ワーク５を把持して該ワーク５を搬送装置４上に設置されている枠３に対して投入する動作をするように、ロボット２に対して指令する。図３は、搬送装置４上に設置された枠３に対してワーク５を投入する動作について説明する図である。制御部３２によるワーク５の枠３に対する投入の指令は、例えば光電センサ（枠位置検出センサ６ａ）により該枠３が所定の位置（光電管ラインを通過した位置）に来たことが検出されたタイミングで実行される。制御用プログラム５４には、枠３が所定の位置に来た際に各枠３に対して所定の座標系「Ｃ１」を設定する指令と、該座標系「Ｃ１」に基づく予め定められた所定の位置にワーク５を投入する指令とが含まれている。通常、制御用プログラム５４により指令される座標系「Ｃ１」は枠３の状態によらずに一定であるため、枠３の位置にずれがある場合には、枠３と、ロボット２がワーク５を投入する位置との相対位置にずれが生じ、整列作業する際の見栄えが悪くなったり、枠３とワーク５とが衝突してワーク５が枠３に収まらなくなったりすることがある。
【００２１】
この様な問題に対応できるようにするために、本実施形態による制御部３２は、枠３毎に座標系「Ｃ１」を設定する機能を備える。制御部３２は、例えば図４に例示されるように、機械学習装置１００による学習の段階においては、例えば制御用プログラム５４に様に指令される座標系「Ｃ１」の原点位置（ロボット座標系に対するＸ，Ｙ，Ｚの位置）と軸の傾き（ロボット座標系に対する３次元上の傾き）に対して所定の乱数値を加えた座標系「Ｃ１’」を設定し、設定した座標系「Ｃ１’」に基づく予め定められた所定の位置にワーク５を投入する指令をロボット２に対して出力する。制御部３２は、これに加えて、制御用プログラム５４で指令されている枠３に対してワーク５を投入する際のワーク５の速度に対して乱数値を加え、該速度値でワーク５を投入する指令をロボット２に対して出力するようにしても良い。ロボット２による座標系「Ｃ１’」に基づくワーク５の投入の結果、枠３に対してワーク５がうまく収まる場合と、枠３に対してワークがうまく収まらない場合とが出てくる。制御部３２は、これらのそれぞれの場合において、ロボット２及び各センサ６から情報を取得してデータ取得部３４に出力する。
【００２２】
データ取得部３４は、図１に示したロボットコントローラ１が備えるＣＰＵ１１がＲＯＭ１２から読み出したシステム・プログラムを実行し、主としてＣＰＵ１１がＲＡＭ１３、不揮発性メモリ１４を用いた演算処理を行うことで実現される。データ取得部３４は、制御部３２から入力されたロボット２の動作状態を示す情報、搬送装置上に設置された枠３の状態を示す情報、及び枠３に対するワーク５の投入状態に係る情報等を取得データ記憶部５２に対して記憶する機能手段である。データ取得部３４は、制御部３２から入力されたロボット２の動作状態を示す情報及び搬送装置上に設置された枠の状態を示す情報と、枠に対するワークの投入状態に係る情報とを関連付けて、取得データとして取得データ記憶部５２に記憶する。
【００２３】
前処理部３６は、図１に示したロボットコントローラ１が備えるＣＰＵ１１がＲＯＭ１２から読み出したシステム・プログラムを実行し、主としてＣＰＵ１１がＲＡＭ１３、不揮発性メモリ１４を用いた演算処理を行うことで実現される。前処理部３６は、データ取得部３４が取得したデータに基づいて、機械学習装置１００による機械学習に用いられる学習データを作成する機能手段である。前処理部３６は、データ取得部３４が取得した（そして、取得データ記憶部５２に記憶された）データを機械学習装置１００において扱われる統一的な形式へと変換（数値化、サンプリング等）した学習データを作成する。例えば、前処理部３６は、機械学習装置１００が教師あり学習をする場合においては、該学習における所定の形式の状態データＳ及びラベルデータＬの組を学習データとして作成する。本実施形態による前処理部３６は、データ取得部３４が取得した（そして、取得データ記憶部５２に記憶された）データの内で、枠３に対するワーク５の投入が成功した際に取得されたデータに基づいて、所定の形式の状態データＳ及びラベルデータＬの組を学習データとして作成する。
【００２４】
本実施形態による前処理部３６が作成する状態データＳとしては、搬送装置４上の枠３の設置状態に係る情報を含む枠データＳ１を少なくとも含む。
【００２５】
枠データＳ１は、搬送装置４上の枠３の設置状態を個別に識別するための情報を示すデータ列として定義される。枠３の設置状態を個別に識別するための情報として、例えば搬送装置４が巡回動作するものであり、枠３が有限個且つ枠３が再利用されるものである場合には、各枠３を一意に識別可能な識別番号を用いるようにしても良い。この場合、各枠３の識別番号は、設置状態検出センサ６ｂとして撮像センサを用意し、予め枠３に付与してある識別番号を示す文字やバーコード等を読み取って取得するようにしても良い。また、設置状態検出センサ６ｂとしてタグリーダを用意し、枠３に対してＩＤタグ等を埋め込んでおき該ＩＤタグを読み取って取得するようにしても良い。設置状態の微差、枠自体の歪み等は枠３毎に異なるため、枠３の識別情報を把握することで、それぞれの枠３の設置状態の微差や枠自体の歪み等に関連付けた機械学習を行うことができる。
【００２６】
また、枠３を個別に識別するための情報として、より直接的に、設置状態検出センサ６ｂとして撮像センサを用意して枠３を撮像し、該枠３の画像データそのものを用いるようにしいても良い。画像データは、ピクセルデータの系列をそのまま用いてもよいし、該画像データが示す画像の特徴量を抽出して用いるようにしても良い。
【００２７】
前処理部３６が作成するラベルデータＬは、前記した状態データＳが取得された状態（搬送装置４上に設置された枠３の状態）において、ロボット２の枠３へのワーク５の投入動作に係るデータであるロボット動作データＬ１を少なくとも含む。
【００２８】
ロボット動作データＬ１は、ロボット２が枠３に対してワーク５を投入する際の動作に係る情報を示すデータ列として定義される。ロボット２の動作にかかる情報としては、例えばロボット２による枠３に対するワーク５の投入時に設定された座標系「Ｃ１’」のロボット座標系上の定義データを用いるようにしても良い。また、これに加えて、ロボット２の動作にかかる情報として、例えばロボット２による枠３に対するワーク５の投入時の該ワーク５の速度を用いるようにしても良い。
【００２９】
学習部１１０は、図１に示したロボットコントローラ１が備えるプロセッサ１０１がＲＯＭ１０２から読み出したシステム・プログラムを実行し、主としてプロセッサ１０１がＲＡＭ１０３、不揮発性メモリ１０４を用いた演算処理を行うことで実現される。本実施形態による学習部１１０は、前処理部３６が作成した学習データを用いた機械学習を行う。学習部１１０は、公知の教師あり学習の手法により、搬送装置４上に設置された枠３の状態に対する、ロボット２の枠３へのワーク５の投入動作を学習した学習モデルを生成し、生成した学習モデルを学習モデル記憶部１３０に記憶する。学習部１１０が行う教師あり学習の手法としては、ｍｕｌｔｉｌａｙｅｒ  ｐｅｒｃｅｐｔｒｏｎ法、ｒｅｃｕｒｒｅｎｔ  ｎｅｕｒａｌ  ｎｅｔｗｏｒｋ法、Ｌｏｎｇ  Ｓｈｏｒｔ−Ｔｅｒｍ  Ｍｅｍｏｒｙ法、ｃｏｎｖｏｌｕｔｉｏｎａｌ  ｎｅｕｒａｌ  ｎｅｔｗｏｒｋ法等が挙げられる。
【００３０】
本実施形態による学習部１１０は、ロボット２の枠３へのワーク５の投入動作と、搬送装置４上に設置された枠３の状態とを関連付けて学習した学習モデルを生成する。このようにして本実施形態による学習部１１０が生成する学習モデルは、搬送装置４上に設置された枠３の状態が与えられた時に、そのような状態において、ロボット２をどの様に動作させるか（例えば、ロボット２による枠３へのワーク５の投入する際に、基準となる座標系「Ｃ１’」をどの様に設定するか）を推定するものとなる。
【００３１】
なお、学習部１１０は、学習の段階では必須の構成となるが、学習部１１０によるロボット２の枠３へのワーク５の投入動作の学習が完了した後には必ずしも必須の構成ではない。例えば、学習が完了した機械学習装置１００を顧客に出荷する場合等には、学習部１１０を取り外して出荷するようにしても良い。
【００３２】
上記した構成を備えた本実施形態によるロボットコントローラ１は、該ロボット２の枠３へのワーク５の投入動作と、搬送装置４上に設置された枠３の状態とを関連付けて学習した学習モデルを生成する。そして、このようにして生成された学習モデルを用いて、後述する推定部１２０は、ロボット２及びセンサ６から取得された状態データＳに基づいて、取得された状態におけるより適切なロボット２の動作を決定するために必要な推定処理を行うことができるようになる。
【００３３】
図５は、第２実施形態によるロボットコントローラ１と機械学習装置１００の概略的な機能ブロック図である。本実施形態のロボットコントローラ１は、機械学習装置１００がロボット２の枠３へのワーク５の投入動作を推定する場合に必要とされる構成を備えている（推定モード）。図５に示した各機能ブロックは、図１に示したロボットコントローラ１が備えるＣＰＵ１１、及び機械学習装置１００のプロセッサ１０１が、それぞれのシステム・プログラムを実行し、ロボットコントローラ１及び機械学習装置１００の各部の動作を制御することにより実現される。
【００３４】
本実施形態のロボットコントローラ１は、制御部３２、データ取得部３４、前処理部３６を備え、ロボットコントローラ１が備える機械学習装置１００は、推定部１２０を備えている。また、図１で示した不揮発性メモリ１４上には、ロボット２、センサ６（枠位置検出センサ６ａ、設置状態検出センサ６ｂ）等から取得されたデータが記憶される取得データ記憶部５２が設けられており、図１で示した機械学習装置１００の不揮発性メモリ１０４上には、第１実施形態で説明した学習部１１０による機械学習により構築された学習モデルを記憶する学習モデル記憶部１３０が設けられている。
【００３５】
本実施形態による制御部３２は、第１実施形態による制御部３２と同様に、ロボット２の制御において必要とされる一般的な機能を備える。本実施形態による制御部３２は、制御用プログラム５４による指令に従って、ワーク５を把持して該ワーク５を搬送装置４上に設置されている枠３に対して投入する動作をするように、ロボット２に対して指令する。また、本実施形態による制御部３２は、機械学習装置１００が備える推定部１２０による推定結果に基づいて、ワーク５を把持して該ワーク５を搬送装置４上に設置されている枠３に対して投入する動作に対して調整を加える機能を備える。例えば、制御部３２は、推定部１２０がロボット２による枠３に対するワーク５の投入時に設定された座標系「Ｃ１’」のロボット座標系上の定義データを推定した場合には、推定された座標系「Ｃ１’」に基づくワーク５の投入動作をするようにロボット２に対して指令する。また、例えば、制御部３２は、推定部１２０がロボット２による枠３に対するワーク５の投入時にワーク５の速度を推定した場合には、推定された速度でワーク５の投入動作をするようにロボット２に対して指令する。
【００３６】
本実施形態によるデータ取得部３４は、第１実施形態におけるデータ取得部３４と同様の機能を備える。
【００３７】
本実施形態による前処理部３６は、機械学習装置１００による学習モデルを用いたそれぞれのロボット２の枠３へのワーク５の投入動作の推定の段階において、データ取得部３４が取得したデータを、機械学習装置１００において扱われる統一的な形式へと変換（数値化、サンプリング等）して、機械学習装置１００による推定に用いられる所定の形式の状態データＳを作成する。本実施形態による前処理部３６は、状態データＳを作成するに際して、搬送装置４上の枠３の設置状態に係る情報を含む枠データＳ１を作成する。
【００３８】
推定部１２０は、図１に示したロボットコントローラ１が備えるプロセッサ１０１がＲＯＭ１０２から読み出したシステム・プログラムを実行し、主としてプロセッサ１０１がＲＡＭ１０３、不揮発性メモリ１０４を用いた演算処理を行うことで実現される。推定部１２０は、前処理部３６が作成した状態データＳに基づいて、学習モデル記憶部１３０に記憶された学習モデルを用いたロボット２の枠３へのワーク５の投入動作の推定を行う。本実施形態の推定部１２０では、学習部１１０により生成された（パラメータが決定された）学習モデルに対して、前処理部３６から入力された状態データＳを入力することで、それぞれのロボット２の枠３へのワーク５の投入動作を推定して出力する。推定部１２０が推定した結果は、制御部３２に対して出力される。
【００３９】
上記した構成を備えた本実施形態によるロボットコントローラ１は、搬送装置４上に設置された枠３に対するワーク５の投入動作を、該枠３の搬送装置４上への設置状態に応じて適切な位置姿勢で行うことができるように調整することができる。
【００４０】
図６は、第３実施形態によるロボットコントローラ１と機械学習装置１００の概略的な機能ブロック図である。図１１に示した各機能ブロックは、図１に示したロボットコントローラ１が備えるＣＰＵ１１、及び機械学習装置１００のプロセッサ１０１が、それぞれのシステム・プログラムを実行し、ロボットコントローラ１及び機械学習装置１００の各部の動作を制御することにより実現される。
【００４１】
本実施形態のロボットコントローラ１は、制御部３２、データ取得部３４、前処理部３６を備え、ロボットコントローラ１が備える機械学習装置１００は、学習部１１０、意思決定部１２２を備えている。また、図１で示した不揮発性メモリ１４上には、ロボット２、センサ６（枠位置検出センサ６ａ、設置状態検出センサ６ｂ、投入状態検出センサ６ｃ）等から取得されたデータが記憶される取得データ記憶部５２が設けられており、図１で示した機械学習装置１００の不揮発性メモリ１０４上には、学習部１１０による機械学習により構築された学習モデルを記憶する学習モデル記憶部１３０が設けられている。
【００４２】
本実施形態による制御部３２、データ取得部３４は、第２実施形態による制御部３２、データ取得部３４と同様の機能を備える。
【００４３】
本実施形態による前処理部３６は、機械学習装置１００が強化学習をする場合においては、該学習における所定の形式の状態データＳ及び判定データＤの組を学習データとして作成する。前処理部３６は、状態データＳとして、枠データＳ１に加えて、更にロボット動作データＳ２を作成する。また、前処理部３６は、判定データＤとして、前記した状態データＳが取得される状態において、ロボット２の枠３へのワーク５の投入動作を判定するためのデータである投入動作判定データＤ１を作成する。
【００４４】
ロボット動作データＳ１は、ロボット２が枠３に対してワーク５を投入する際の動作に係る情報を示すデータ列として定義される。ロボット２の動作に係る情報としては、例えばロボット２による枠３に対するワーク５の投入時に設定された座標系「Ｃ１’」のロボット座標系上の定義データを用いるようにしても良い。また、これに加えて、ロボット２の動作にかかる情報として、例えばロボット２による枠３に対するワーク５の投入時の該ワーク５の速度を用いるようにしても良い。
【００４５】
投入動作判定データＤ１は、ロボット２の枠３に対するワーク５の投入動作の良否を判定するための基準となるデータとして定義される。投入動作判定データＤ１は、例えばロボット２の枠３に対するワーク５の投入動作後に、枠３にワーク５が収まっているか否かを示すデータであって良い。また、投入動作判定データＤ１は、例えばロボット２の枠３に対するワーク５の投入動作後に、枠３に対してワーク５がどのような姿勢で収まっているのかを示すデータであって良い。この場合、例えば理想的な枠３に対するワーク５の位置を予め画像データとして作成しておき、そこからどれだけワーク５がずれているのかに応じて、投入動作の良否の度合いを示すようにしても良い。
【００４６】
本実施形態による学習部１１０は、前処理部３６が作成した学習データを用いた機械学習を行う。学習部１１０は、公知の強化学習の手法により、搬送装置４上に設置された枠３の状態に対する、ロボット２の枠３に対するワーク５の投入動作の調整行動（投入動作時の基準となる座標系「Ｃ１」の調整、必要に応じて投入動作時のワーク５の速度の調整）を学習した学習モデルを生成し、生成した学習モデルを学習モデル記憶部１３０に記憶する。強化学習は、学習対象が存在する環境の現在状態（つまり入力）を観測すると共に現在状態で所定の行動（つまり出力）を実行し、その行動に対し何らかの報酬を与えるというサイクルを試行錯誤的に反復して、報酬の総計が最大化されるような方策（本願の機械学習装置１００では、ロボット２の枠３に対するワーク５の投入動作の調整）を最適解として学習する手法である。学習部１１０が行う強化学習の手法としては、Ｑ学習等が挙げられる。
【００４７】
学習部１１０によるＱ学習において、報酬Ｒは、例えば、投入動作判定データＤ１が「枠３にワーク５が収まっている」を示している場合に正（プラス）の報酬Ｒとし、投入動作判定データＤ１が「枠３にワーク５が収まっていない」を示している場合に負（マイナス）の報酬Ｒとすることができる。また、報酬Ｒは、例えば、投入動作判定データＤ１が「枠３にワーク５が姿勢良く収まっている」を示している場合に正（プラス）の報酬Ｒとし、投入動作判定データＤ１が「枠３にワーク５が姿勢良く収まっていない」を示している場合に負（マイナス）の報酬Ｒとすることができる。更に、報酬Ｒは、操作判定データＤ１が示す良否の度合いの大きさに応じて、より大きな正（プラス）の報酬Ｒ又は負（マイナス）の報酬Ｒと成るようにしても良い。
【００４８】
学習部１１０は、ニューラルネットワークを価値観数Ｑ（学習モデル）をとして用い、状態データＳと行動ａとをニューラルネットワークの入力とし、当該状態における当該行動ａの価値（結果ｙ）を出力するように構成しても良い。この様に構成する場合、学習モデルとしては入力層、中間層、出力層の三層を備えたニューラルネットワークを用いても良いが、三層以上の層を為すニューラルネットワークを用いた、いわゆるディープラーニングの手法を用いることで、より効果的な学習及び推論を行うように構成することも可能である。学習部１１０が生成した学習モデルは、不揮発性メモリ１０４上に設けられた学習モデル記憶部１３０に記憶され、意思決定部１２２によるロボット２の枠３に対するワーク５の投入動作の調整行動の決定に用いられる。
【００４９】
なお、学習部１１０は、学習の段階では必須の構成となるが、学習部１１０によるロボット２の枠３に対するワーク５の投入動作の調整行動の学習が完了した後には必ずしも必須の構成ではない。例えば、学習が完了した機械学習装置１００を顧客に出荷する場合等には、学習部１１０を取り外して出荷するようにしても良い。
【００５０】
意思決定部１２２は、図１に示したロボットコントローラ１が備えるプロセッサ１０１がＲＯＭ１０２から読み出したシステム・プログラムを実行し、主としてプロセッサ１０１がＲＡＭ１０３、不揮発性メモリ１０４を用いた演算処理を行うことで実現される。意思決定部１２２は、前処理部３６から入力された状態データＳに基づいて、学習モデル記憶部１３０に記憶された学習モデルを用いたロボット２の枠３に対するワーク５の投入動作の調整行動の最適解を求め、求めたロボット２の枠３に対するワーク５の投入動作の調整行動を出力する。本実施形態の意思決定部１２２では、学習部１１０による強化学習により生成された（パラメータが決定された）学習モデルに対して、前処理部３６から入力された状態データＳ（枠データＳ１、ロボット動作データＳ２）と、ロボット２の枠３に対するワーク５の投入動作の調整行動（投入動作時の基準となる座標系「Ｃ１」、必要に応じて投入動作時のワーク５の速度）を入力データとして入力することで現在の状態において当該行動をとった場合の報酬を算出できるが、この報酬の算出を現在取り得るワークの投入動作の調整行動について行い、算出された複数の報酬を比較して、最も大きな報酬が算出されるロボット２の枠３に対するワーク５の投入動作の調整行動を最適解として決定する。意思決定部１２２が決定したロボット２の枠３に対するワーク５の投入動作の調整行動の最適解は、制御部３２へと入力されてロボット２の枠３に対するワーク５の投入動作の決定に用いられる他、例えば表示装置７０に表示出力したり、図示しない有線／無線ネットワークを介してフォグコンピュータやクラウドコンピュータ等に送信出力したりすることで利用しても良い。
【００５１】
以下の第４〜６実施形態では、第１〜３実施形態によるロボットコントローラ１が、クラウドサーバやホストコンピュータ、フォグコンピュータ、エッジコンピュータ（ロボットコントローラ、制御装置等）を含む複数の装置と有線／無線のネットワークを介して相互に接続したシステムの一部として実装されている実施形態について説明する。図７に例示されるように、以下の第４〜６実施形態では、複数の装置のそれぞれがネットワークに接続された状態でクラウドサーバ２０６等を含む層、フォグコンピュータ２０７等を含む層、エッジコンピュータ２０８（セル２０９に含まれるロボットコントローラ、制御装置等）等を含む層の、３つの階層に論理的に分けて構成されているシステムを想定する。この様なシステムに於いて、本発明による一態様によるロボットコントローラ１は、クラウドサーバ２０６、フォグコンピュータ２０７、エッジコンピュータ２０８のいずれの上にも実装することが可能であり、それぞれの複数の装置との間でネットワークを介して相互に機械学習に係る処理で用いるデータを共有して分散学習をしたり、生成した学習モデルをフォグコンピュータ２０７やクラウドサーバ２０６に収集して大規模な解析を行ったり、更に、生成した学習モデルの相互再利用等をしたりすることができる。図７に例示されるシステムにおいて、セル２０９は各地の工場にそれぞれ複数設けられ、それぞれのセル２０９を所定の単位（工場単位、同じ製造業者の複数の工場単位等）で上位層のフォグコンピュータ２０７が管理する。そして、これらフォグコンピュータ２０７が収集、解析したデータを、更に上位層のクラウドサーバ２０６で収集、解析等を行い、その結果として得られた情報を各々のエッジコンピュータ２０８における制御等に活用することができる。
【００５２】
図８は、ロボットコントローラ１’を備えた第４実施形態によるロボットコントロールシステムの概略的な構成図である。ロボットコントロールシステム５００は、複数のロボットコントローラ１，１’、複数のロボット２’、及びそれらロボットコントローラ１，１’、ロボット２’を互いに接続するネットワーク２０５とを備える。
【００５３】
ロボットコントロールシステム５００では、機械学習装置１００を備えるロボットコントローラ１’は、学習部１１０の学習結果を用いて、それぞれのロボット２，２’と協働している搬送装置４上に設置された枠３の状態に基づいて、該ロボット２，２’の枠３へのワーク５の投入動作を調整する。また、少なくとも１つのロボットコントローラ１’が、他の複数のロボットコントローラ１、１’のそれぞれが得た状態変数及びラベルデータＬ又は判定データＤに基づき、全てのロボットコントローラ１、１’に共通する搬送装置４上に設置された枠３の状態に対するロボット２，２’の枠３へのワーク５の投入動作を調整を学習し、その学習結果を全てのロボットコントローラ１、１’が共有するように構成できる。したがってロボットコントロールシステム５００によれば、より多様なデータ集合（状態変数Ｓ及びラベルデータＬ又は判定データＤを含む）を入力として、学習の速度や信頼性を向上させることができる。
【００５４】
図９は、機械学習装置とロボットコントローラとを異なる装置上に実装した第５実施形態によるシステムの概略的な構成図である。ロボットコントロールシステム５００’は、クラウドサーバ、ホストコンピュータ、フォグコンピュータ等のコンピュータの一部として実装された少なくとも１台の機械学習装置１００（図９では、フォグコンピュータ２０７の一部として実装された例を示している）と、複数のロボットコントローラ１”と、それらロボットコントローラ１”とコンピュータとを互いに接続するネットワーク２０５とを備える。なお、コンピュータのハードウェア構成は、図１に示したロボットコントローラ１の概略的なハードウェア構成と同様に、ＣＰＵ、ＲＡＭ，不揮発性メモリ等の一般的なコンピュータが備えるハードウェアがバスを介して接続して構成される。
【００５５】
上記構成を有するロボットコントロールシステム５００’は、機械学習装置１００が、複数のロボットコントローラ１”のそれぞれについて得られた状態変数Ｓ及びラベルデータＬ又は判定データＤに基づき、全てのロボットコントローラ１”に共通する搬送装置４上に設置された枠３の状態に対する、ロボット２の枠３へのワーク５の投入動作の調整を学習し、その学習結果を用いて、ロボット２の枠３へのワーク５の投入動作を調整することができる。ロボットコントロールシステム５００’の構成によれば、複数のロボットコントローラ１”のそれぞれが、存在する場所や時期に関わらず、必要なときに必要な数のロボットコントローラ１”を機械学習装置１００に接続することができる。
【００５６】
図１０は、機械学習装置１００’とロボットコントローラ１とを備えた第６実施形態によるロボットコントロールシステム５００”の概略的な構成図である。ロボットコントロールシステム５００”は、エッジコンピュータやフォグコンピュータ、ホストコンピュータ、クラウドサーバ等のコンピュータの上に実装された少なくとも１台の機械学習装置１００’（図１０では、フォグコンピュータ２０７の一部として実装された例を示している）と、複数のロボットコントローラ１と、それらロボットコントローラ１とコンピュータとを互いに接続する有線／無線のネットワーク２０５とを備える。
【００５７】
上記構成を有するロボットコントロールシステム５００”では、機械学習装置１００’を備えるフォグコンピュータ２０７が、各々のロボットコントローラ１から、該ロボットコントローラ１が備える機械学習装置１００による機械学習の結果として得られた学習モデルを取得する。そして、フォグコンピュータ２０７が備える機械学習装置１００’は、これら複数の学習モデルに基づく知識の最適化や効率化の処理を行うことで、新たに最適化乃至効率化された学習モデルを生成し、生成した学習モデルを各々のロボットコントローラ１に対して配布する。
【００５８】
機械学習装置１００’が行う学習モデルの最適化乃至効率化の例としては、各ロボットコントローラ１から取得した複数の学習モデルに基づいた蒸留モデルの生成が挙げられる。この場合、本実施例による機械学習装置１００’は、学習モデルに対して入力する入力データを作成し、該入力データを各々の学習モデルに対して入力した結果として得られる出力を用いて、１から学習を行うことで新たに学習モデル（蒸留モデル）を生成する。このようにして生成された蒸留モデルは、上記でも説明したように、外部記憶媒体やネットワーク２０５を介してロボットコントローラ１や他のコンピュータに対して配布して活用される。
【００５９】
機械学習装置１００’が行う学習モデルの最適化乃至効率化の他の例としては、各ロボットコントローラ１から取得した複数の学習モデルに対して蒸留を行う過程において、入力データに対する各学習モデルの出力データの分布を一般的な統計的手法で解析し、入力データと出力データの組の外れ値を抽出し、該外れ値を除外した入力データと出力データの組を用いて蒸留を行うことも考えられる。このような過程を経ることで、それぞれの学習モデルから得られる入力データと出力データの組から例外的な推定結果を除外し、例外的な推定結果を除外した入力データと出力データの組を用いて蒸留モデルを生成することができる。このようにして生成された蒸留モデルは、複数のロボットコントローラ１で生成された学習モデルと比べてより汎用的な学習モデルとして活用することが可能となる。
なお、他の一般的な学習モデルの最適化乃至効率化の手法（各学習モデルを解析し、その解析結果に基づいて学習モデルのハイパパラメータを最適化する等）も適宜導入することが可能である。
【００６０】
本実施例によるロボットコントロールシステム５００”では、例えばエッジコンピュータとしての複数のロボットコントローラ１に対して設置されたフォグコンピュータ２０７の上に機械学習装置１００’を配置し、各々のロボットコントローラ１で生成された学習モデルをフォグコンピュータ２０７上に集約して記憶しておき、記憶した複数の学習モデルに基づいた最適化乃至効率化を行った上で、最適化乃至効率化された学習モデルを必要に応じて各ロボットコントローラ１に対して再配布するという運用を行うことができる。
【００６１】
また、本実施例によるロボットコントロールシステム５００”では、例えばフォグコンピュータ２０７の上に集約して記憶された学習モデルや、フォグコンピュータ２０７上で最適化乃至効率化された学習モデルを、更に上位のホストコンピュータやクラウドサーバ上に集め、これら学習モデルを用いて工場やロボットコントローラ１のメーカでの知的作業への応用（上位サーバでの更なる汎用的な学習モデルの構築及び再配布、学習モデルの解析結果に基づく保守作業の支援、各々のロボットコントローラ１の性能等の分析、新しい機械の開発への応用等）を行うことができる。
【００６２】
上記した構成を備えたロボットコントローラ１では、搬送装置４上に設置された枠３に対するワーク５の投入動作を、該枠３の搬送装置４上への設置状態に応じて適切な位置姿勢で行うことができるように調整することができる。
【００６３】
以上、本発明の実施の形態について説明したが、本発明は上述した実施の形態の例のみに限定されることなく、適宜の変更を加えることにより様々な態様で実施することができる。
例えば、上記した実施形態ではロボットコントローラ１と機械学習装置１００が異なるＣＰＵ（プロセッサ）を有する装置として説明しているが、機械学習装置１００はロボットコントローラ１が備えるＣＰＵ１１と、ＲＯＭ１２に記憶されるシステム・プログラムにより実現するようにしても良い。
【符号の説明】
【００６４】
１，１’，１”  ロボットコントローラ
２  ロボット
３  枠
４，４ａ，４ｂ  搬送装置
５  ワーク
６  センサ
６ａ  枠位置検出センサ
６ｂ  設置状態検出センサ
６ｃ  投入状態検出センサ
１１  ＣＰＵ
１２  ＲＯＭ
１３  ＲＡＭ
１４  不揮発性メモリ
１６，１７，１８，１９  インタフェース
２０  バス
２１  インタフェース
３２  制御部
３４  データ取得部
３６  前処理部
５２  取得データ記憶部
５４  制御用プログラム
７０  表示装置
７１  入力装置
１００，１００’  機械学習装置
１０１  プロセッサ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  不揮発性メモリ
１１０  学習部
１１２  第１学習部
１１４  第２学習部
１２０  推定部
１２２  意思決定部
１３０  学習モデル記憶部
２０５  ネットワーク
２０６  クラウドサーバ
２０７  フォグコンピュータ
２０８  エッジコンピュータ
２０９  セル
５００，５００’，５００”  ロボットコントロールシステム
【図１】
2020131416.tif 000003
【図２】
2020131416.tif 000004
【図３】
2020131416.tif 000005
【図４】
2020131416.tif 000006
【図５】
2020131416.tif 000007
【図６】
2020131416.tif 000008
【図７】
2020131416.tif 000009
【図８】
2020131416.tif 000010
【図９】
2020131416.tif 000011
【図１０】
2020131416.tif 000012
【図１１】
2020131416.tif 000013