(57)【要約】【課題】ロボット装置を制御する能力を制御モジュールに習得させるための機械学習に利用する学習データを収集するコストを低減しつつ、その機械学習により実環境で運用可能な制御モジュールを構築する。【解決手段】本発明の一側面に係る学習装置は、シミュレーションデータ及び第１環境情報の組み合わせにより構成された第１学習データセット、並びに実データ及び第２環境情報の組み合わせにより構成された第２学習データセットを利用して、抽出器の機械学習を実施する。また、本発明の一側面に係る学習装置は、第３環境情報及び状態情報並びに制御コマンドの組み合わせにより構成された第３学習データセットを利用して、制御器の機械学習を実施する。【選択図】図４
2020057161.tif 000002
【特許請求の範囲】
【請求項１】
ロボット装置のタスクを実行する環境を監視するセンサをシミュレートすることで生成されたシミュレーションデータ、及び前記シミュレーションデータに表れる前記タスクを実行する環境に関する第１環境情報の組み合わせによりそれぞれ構成された複数の第１学習データセットを取得する第１データ取得部と、
前記センサから得られた実データ、及び前記実データに表れる前記タスクを実行する環境に関する第２環境情報の組み合わせによりそれぞれ構成された複数の第２学習データセットを取得する第２データ取得部と、
前記タスクを実行する環境に関する第３環境情報及び前記タスクを実行する際の前記ロボット装置の状態に関する状態情報、並びに前記第３環境情報及び前記状態情報により示される条件下で前記タスクを前記ロボット装置に実行させるための制御コマンドの組み合わせによりそれぞれ構成された複数の第３学習データセットを取得する第３データ取得部と、
前記第１学習データセット及び前記第２学習データセットを利用して、抽出器の機械学習を実施する第１学習処理部と、
前記第３学習データセットを利用して、制御器の機械学習を実施する第２学習処理部と、
を備え、
前記抽出器の機械学習を実施することは、
前記各第１学習データセットについて、前記シミュレーションデータから、対応する前記第１環境情報と一致する環境情報を抽出するように前記抽出器を訓練する第１訓練ステップと、
前記第１訓練ステップを実行した後、前記各第２学習データセットについて、前記実データから、対応する前記第２環境情報と一致する環境情報を抽出するように前記抽出器を訓練する第２訓練ステップと、
を含み、
前記制御器の機械学習を実施することは、前記第３環境情報及び前記状態情報が入力されると、対応する前記制御コマンドと一致する制御コマンドを出力するように前記制御器を訓練する訓練ステップを含む、
学習装置。
【請求項２】
前記各第１学習データセットの前記シミュレーションデータは、前記センサをシミュレートする条件をランダムに変更しながら生成される、
請求項１に記載の学習装置。
【請求項３】
前記抽出器は、ニューラルネットワークにより構成され、
前記ニューラルネットワークは、第１部分、第２部分、及び第３部分に分かれており、
前記第１部分及び前記第２部分は、前記ニューラルネットワークの入力側に並列に配置され、同じ構造を有することにより共通のパラメータを有しており、
前記第１部分は、前記シミュレーションデータの入力を受け付けるように構成され、
前記第２部分は、前記実データの入力を受け付けるように構成され、
前記第３部分は、前記ニューラルネットワークの出力側に配置され、前記第１部分及び前記第２部分それぞれの出力を受け付けるように構成され、
前記第１訓練ステップでは、前記第１学習処理部は、前記各第１学習データセットについて、前記シミュレーションデータを前記第１部分に入力すると、対応する前記第１環境情報と一致する出力値が前記第３部分から出力されるように、前記第１部分及び前記第３部分それぞれのパラメータの値を調整し、
前記第１訓練ステップを実行した後、前記第２訓練ステップを実行する前に、前記第１学習処理部は、前記第１部分のパラメータの調整した値を前記第２部分のパラメータに複製する、
請求項１又は２に記載の学習装置。
【請求項４】
前記第２訓練ステップでは、前記第１学習処理部は、前記第３部分のパラメータの値は固定のまま、前記各第２学習データセットについて、前記実データを前記第２部分に入力すると、対応する前記第２環境情報と一致する出力値が前記第３部分から出力されるように、前記第２部分のパラメータの値を調整する、
請求項３に記載の学習装置。
【請求項５】
前記第３環境情報は、前記機械学習が完了した後の前記抽出器を利用して、前記センサをシミュレートすることで生成された他のシミュレーションデータから抽出することで得られる、
請求項１から４のいずれか１項に記載の学習装置。
【請求項６】
前記ロボット装置は、生産ラインにおける産業用ロボットであり、
前記センサは、カメラ、圧力センサ、ロードセル及びこれらの組み合わせにより構成され、
前記各環境情報は、セグメンテーション情報、前記タスクの対象となるワークの属性に関する情報、前記タスクを実行する位置に関する情報、障害物の有無を示す情報、及び障害物の属性に関する情報の少なくともいずれかを含み、
前記制御コマンドは、前記産業用ロボットの駆動量を規定する、
請求項１から５のいずれか１項に記載の学習装置。
【請求項７】
前記ロボット装置は、自律的に動作可能に構成された自律型ロボットであり、
前記センサは、カメラ、サーモセンサ、マイクロフォン及びこれらの組み合わせにより構成され、
前記各環境情報は、セグメンテーション情報及び前記タスクの実行に関連する対象物の属性に関する情報の少なくともいずれかを含み、
前記制御コマンドは、前記自律型ロボットの駆動量、出力音声及び画面表示の少なくともいずれかを規定する、
請求項１から５のいずれか１項に記載の学習装置。
【請求項８】
前記ロボット装置は、自動運転動作を実行可能に構成された移動体であり、
前記センサは、カメラ、ライダセンサ及びこれらの組み合わせにより構成され、
前記各環境情報は、前記移動体の進行する通路に関する情報及び前記移動体の進行方向に存在する対象物に関する情報の少なくともいずれかを含み、
前記制御コマンドは、前記車両のアクセル量、ブレーキ量、ハンドルの操舵角、ライトの点灯及びクラクションの使用の少なくともいずれかを規定する、
請求項１から５のいずれか１項に記載の学習装置。
【請求項９】
ロボット装置の動作を制御する制御装置であって、
前記ロボット装置のタスクを実行する環境を監視するセンサにより得られたセンサデータ、及び前記タスクを実行する際の前記ロボット装置の状態に関する状態情報を取得するデータ取得部と、
請求項１から８のいずれか１項に記載の学習装置により構築された機械学習済みの前記抽出器を利用して、前記タスクを実行する環境に関する環境情報を前記センサデータから抽出する情報抽出部と、
前記学習装置により構築された機械学習済みの前記制御器を利用して、前記環境情報及び前記状態情報により示される条件下で前記タスクを前記ロボット装置に実行させるための制御コマンドを決定するコマンド決定部と、
決定された前記制御コマンドに基づいて、前記ロボット装置の動作を制御する動作制御部と、
を備える、
制御装置。
【請求項１０】
コンピュータが、
ロボット装置のタスクを実行する環境を監視するセンサをシミュレートすることで生成されたシミュレーションデータ、及び前記シミュレーションデータに表れる前記タスクを実行する環境に関する第１環境情報の組み合わせによりそれぞれ構成された複数の第１学習データセットを取得するステップと、
前記センサから得られた実データ、及び前記実データに表れる前記タスクを実行する環境に関する第２環境情報の組み合わせによりそれぞれ構成された複数の第２学習データセットを取得するステップと、
前記タスクを実行する環境に関する第３環境情報及び前記タスクを実行する際の前記ロボット装置の状態に関する状態情報、並びに前記第３環境情報及び前記状態情報により示される条件下で前記タスクを前記ロボット装置に実行させるための制御コマンドの組み合わせによりそれぞれ構成された複数の第３学習データセットを取得するステップと、
前記第１学習データセット及び前記第２学習データセットを利用して、抽出器の機械学習を実施するステップと、
前記第３学習データセットを利用して、制御器の機械学習を実施するステップ、
を実行し、
前記抽出器の機械学習を実施するステップは、
前記各第１学習データセットについて、前記シミュレーションデータから、対応する前記第１環境情報と一致する環境情報を抽出するように前記抽出器を訓練する第１訓練ステップと、
前記第１訓練ステップを実行した後、前記各第２学習データセットについて、前記実データから、対応する前記第２環境情報と一致する環境情報を抽出するように前記抽出器を訓練する第２訓練ステップと、
を含み、
前記制御器の機械学習を実施するステップは、前記第３環境情報及び前記状態情報が入力されると、対応する前記制御コマンドと一致する制御コマンドを出力するように前記制御器を訓練する訓練ステップを含む、
学習方法。
【請求項１１】
コンピュータに、
ロボット装置のタスクを実行する環境を監視するセンサをシミュレートすることで生成されたシミュレーションデータ、及び前記シミュレーションデータに表れる前記タスクを実行する環境に関する第１環境情報の組み合わせによりそれぞれ構成された複数の第１学習データセットを取得するステップと、
前記センサから得られた実データ、及び前記実データに表れる前記タスクを実行する環境に関する第２環境情報の組み合わせによりそれぞれ構成された複数の第２学習データセットを取得するステップと、
前記タスクを実行する環境に関する第３環境情報及び前記タスクを実行する際の前記ロボット装置の状態に関する状態情報、並びに前記第３環境情報及び前記状態情報により示される条件下で前記タスクを前記ロボット装置に実行させるための制御コマンドの組み合わせによりそれぞれ構成された複数の第３学習データセットを取得するステップと、
前記第１学習データセット及び前記第２学習データセットを利用して、抽出器の機械学習を実施するステップと、
前記第３学習データセットを利用して、制御器の機械学習を実施するステップ、
を実行させるための学習プログラムであって、
前記抽出器の機械学習を実施するステップは、
前記各第１学習データセットについて、前記シミュレーションデータから、対応する前記第１環境情報と一致する環境情報を抽出するように前記抽出器を訓練する第１訓練ステップと、
前記第１訓練ステップを実行した後、前記各第２学習データセットについて、前記実データから、対応する前記第２環境情報と一致する環境情報を抽出するように前記抽出器を訓練する第２訓練ステップと、
を含み、
前記制御器の機械学習を実施するステップは、前記第３環境情報及び前記状態情報が入力されると、対応する前記制御コマンドと一致する制御コマンドを出力するように前記制御器を訓練する訓練ステップを含む、
学習プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、学習装置、制御装置、学習方法、及び学習プログラムに関する。
【背景技術】
【０００２】
近年、製品を製造する生産ラインでは、カメラ等のセンサから得られたセンサデータを利用して、ロボットハンド等の産業用ロボットの動作を制御する技術が開発されている。例えば、特許文献１では、プリント板組立作業の行われる環境状態を表す状態変数及び基板に実装される電子部品の配置の適否の判定結果を利用して、産業機械に供給される指令値に対する補正値と基板の基準形状からの変形量とを関連付けて学習する機械学習装置が提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１８−１０７３１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本件発明者らは、特許文献１のような機械学習を利用して、生産ラインにおける産業用ロボットを制御するための制御モジュールを構築する場合に、次のような問題があることを見出した。機械学習を実施するためには、産業用ロボットの実機を用いて、学習データを収集することになる。例えば、センサにより得られたセンサデータから制御コマンドを導出する能力を習得するための機械学習を実施することを想定する。この場合、実機から得られたセンサデータ及び実機の状態を示す状態情報とその状況下で実機に実行させる制御コマンドとの組み合わせにより構成された学習データセットを収集することになる。各学習データセットのうち、センサデータ及び状態情報は訓練データ（入力データ）として利用され、制御コマンドは正解データ（教師データ）として利用される。この学習データセットを利用した機械学習により、センサデータ及び状態情報が与えられると、与えられたセンサデータ及び状態情報により示される状況に適切な制御コマンドを決定する能力を習得した制御モジュールを構築することができる。しかしながら、実機を利用して十分な件数の学習データセットを収集するには、時間及び労力のコストがかかってしまう。加えて、学習データセットを収集する過程で、実機が破損してしまう等のリスクが生じてしまう。
【０００５】
そこで、本件発明者らは、このような問題点を解決するために、シミュレータを利用して、学習データを収集することを検討した。シミュレータを利用すれば、学習データを収集する作業の大部分を自動化することができるため、学習データを収集するのにかかるコストを抑えることができる。加えて、実機を利用しなくてもよいため、上記リスクを解消することができる。
【０００６】
しかしながら、本件発明者らは、このような方法では、次のような問題点が生じることを見出した。すなわち、シミュレータにより得られるデータと実機により得られるデータとの間には乖離がある。そのため、シミュレータにより得られた学習データを利用して、制御モジュールの機械学習を実施しても、実環境で運用可能な制御モジュールを構築するのは困難である。加えて、そのデータの乖離の影響により、シミュレータにより得られた学習データを利用して構築された制御モジュールに対して、実機により得られた学習データを利用した追加学習を実施することは困難である。そのため、当該制御モジュールを実環境で運用可能に修正することも困難である。
【０００７】
なお、このような問題点は、産業用ロボットの制御モジュールを機械学習により構築する場面だけではなく、産業用ロボット以外のロボット装置の制御モジュールを機械学習により構築するあらゆる場面で生じ得る。例えば、自律的に動作可能に構成された自律型ロボット、又は自動運転動作を実行可能に構成された移動体の制御モジュールを機械学習により構築する場合に、実機を利用して学習データを収集すると、時間及び労力のコストがかかり、かつ実機破損等のリスクが生じてしまう。一方で、シミュレータを利用した場合には、実環境で運用可能な制御モジュールを構築するのは困難である。
【０００８】
本発明は、一側面では、このような実情を鑑みてなされたものであり、その目的は、ロボット装置を制御する能力を制御モジュールに習得させるための機械学習に利用する学習データを収集するコストを低減しつつ、その機械学習により実環境で運用可能な制御モジュールを構築するための技術を提供することである。
【課題を解決するための手段】
【０００９】
本発明は、上述した課題を解決するために、以下の構成を採用する。
【００１０】
すなわち、本発明の一側面に係る学習装置は、ロボット装置のタスクを実行する環境を監視するセンサをシミュレートすることで生成されたシミュレーションデータ、及び前記シミュレーションデータに表れる前記タスクを実行する環境に関する第１環境情報の組み合わせによりそれぞれ構成された複数の第１学習データセットを取得する第１データ取得部と、前記センサから得られた実データ、及び前記実データに表れる前記タスクを実行する環境に関する第２環境情報の組み合わせによりそれぞれ構成された複数の第２学習データセットを取得する第２データ取得部と、前記タスクを実行する環境に関する第３環境情報及び前記タスクを実行する際の前記ロボット装置の状態に関する状態情報、並びに前記第３環境情報及び前記状態情報により示される条件下で前記タスクを前記ロボット装置に実行させるための制御コマンドの組み合わせによりそれぞれ構成された複数の第３学習データセットを取得する第３データ取得部と、前記第１学習データセット及び前記第２学習データセットを利用して、抽出器の機械学習を実施する第１学習処理部と、前記第３学習データセットを利用して、制御器の機械学習を実施する第２学習処理部と、を備え、前記抽出器の機械学習を実施することは、前記各第１学習データセットについて、前記シミュレーションデータから、対応する前記第１環境情報と一致する環境情報を抽出するように前記抽出器を訓練する第１訓練ステップと、前記第１訓練ステップを実行した後、前記各第２学習データセットについて、前記実データから、対応する前記第２環境情報と一致する環境情報を抽出するように前記抽出器を訓練する第２訓練ステップと、を含み、前記制御器の機械学習を実施することは、前記第３環境情報及び前記状態情報が入力されると、対応する前記制御コマンドと一致する制御コマンドを出力するように前記制御器を訓練する訓練ステップを含む。
【００１１】
上記構成では、ロボット装置を制御するための一連の処理を実行する制御モジュールが抽出器及び制御器の２つの構成要素に分かれている。抽出器は、機械学習により、センサデータ（シミュレーションデータ又は実データ）から環境情報を抽出するように訓練される。一方、制御器は、機械学習により、環境情報及び状態情報から制御コマンドを導出するように訓練される。これにより、制御モジュールは、センサデータから制御コマンドを直接的に導出するのではなく、センサデータを特徴量（環境情報）に一度変換し、得られた特徴量（環境情報）から制御コマンドを導出するように構成される。
【００１２】
これらの構成要素のうち抽出器の機械学習では、シミュレーションデータ及び実データの両方を利用することで、抽出器は、両データから共通の特徴を抽出するように構築される。つまり、抽出器は、シミュレーションデータ及び実データの両データを共通の特徴空間に写像するように構築される。これにより、シミュレーションデータと実データとの間の乖離を吸収した上で、シミュレーションデータを利用した機械学習の成果を、実データを利用した機械学習に反映させることができる。そのため、機械学習に利用するシミュレーションデータの件数が十分であれば、機械学習に利用する実データの件数が少なくても、実環境で得られるセンサデータから対象の特徴を精度よく抽出可能な抽出器を構築することができる。
【００１３】
加えて、センサデータから抽出される特徴（環境情報）は、シミュレーションにより実環境と同様に得ることが可能である。そのため、実機を用いずに、シミュレータを用いても、得られた学習データを利用した機械学習により、実環境で運用可能な制御器を構築することができる。したがって、上記構成によれば、抽出器及び制御器の２つの構成要素に制御モジュールを分離することにより、学習データの少なくとも一部に（好ましくは、大部分で）シミュレーションデータを採用することができるようになるため、機械学習に利用する学習データを収集するのにかかるコストを低減することができる。更に、この機械学習により構築された抽出器及び制御器により、実環境で運用可能な制御モジュールを構成することができる。よって、上記構成によれば、ロボット装置を制御する能力を制御モジュールに習得させるための機械学習に利用する学習データを収集するコストを低減しつつ、その機械学習により実環境で運用可能な制御モジュールを構築することができる。
【００１４】
なお、ロボット装置は、自動的に駆動可能に構成された少なくとも１つの駆動部を有している装置であれば、その種類は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。ロボット装置は、例えば、生産ラインに配置される産業用ロボット（例えば、ロボットハンド、ベルトコンベア等）、自律型ロボット、自動運転動作を実行可能に構成された移動体（例えば、ドローン等の飛行体、自動車等の車両）等であってよい。タスクは、ロボット装置の種類に応じて適宜選択されてよい。ロボット装置がロボットハンドである場合、タスクは、例えば、ワークの把持、把持したワークの解放等であってよい。
【００１５】
センサは、ロボット装置のタスクを実行する環境をモニタリング（又はセンシング）可能な装置であれば、その種類は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。センサは、例えば、カメラ、ＬＩＤＡＲ（Light Detection and Ranging）センサ、サーモセンサ、圧力センサ、ロードセル等であってよい。センサデータ（シミュレーションデータ、実データ）の種類は、センサの種類に応じて適宜選択されてよい。センサデータは、例えば、画像（例えば、ＲＧＢ画像、深度画像等）データ、ＬＩＤＡＲセンサによる測定データ、サーモデータ、圧力データ等であってよい。
【００１６】
各環境情報は、タスクを実行する環境に関するものであれば、その種類は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。各環境情報は、例えば、セグメンテーション情報、ワークの属性（位置、寸法、姿勢、温度等）、ワークを解放する位置、障害物の属性（位置、寸法、姿勢、種類等）等であってよい。また、各環境情報は、ニューラルネットワークの中間層により出力される特徴量の形式で表現されてもよい。状態情報は、タスクの実行に関連するロボット装置の状態を示し得るものであれば、その種類は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。ロボット装置が産業用ロボットである場合、状態情報は、例えば、産業用ロボットの駆動部の位置、向き、角度、加速度等を含んでよい。
【００１７】
制御コマンドは、ロボット装置の動作の指示に関するものであれば、その種類及び形式は、特に限定されなくてもよく、ロボット装置の種類に応じて適宜選択されてよい。ロボット装置が産業用ロボットである場合、制御コマンドは、例えば、産業用ロボットの駆動量等を規定してよい。ロボット装置が自律型ロボットである場合、制御コマンドは、例えば、出力音声、各関節の駆動量、画面表示等を規定してよい。ロボット装置が自動運転動作を実行可能に構成された車両である場合、制御コマンドは、例えば、アクセル量、ブレーキ量、ハンドル操舵角、ライトの点灯、クラクションの使用等を規定してよい。
【００１８】
抽出器及び制御器は、機械学習を実施可能な学習モデルによって構成される。抽出器及び制御器それぞれを構成する学習モデルには、例えば、ニューラルネットワークが用いられてよい。上記構成に係る機械学習において、シミュレーションデータ、実データ、第３環境情報、及び状態情報は、入力データ（訓練データ）として利用され、第１環境情報、第２環境情報、及び制御コマンドは、正解データ（教師データ）として利用される。機械学習における「一致する」は、学習モデル（抽出器、制御器）の出力値と正解データとの誤差（評価関数、誤差関数、損失関数）が閾値以下になることに対応する。センサのシミュレートは、シミュレータ上で実行される。シミュレータは、ロボット装置のタスクを実行する環境をシミュレート可能であれば、その種類は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。シミュレータは、例えば、ロボット装置、ワーク等のオブジェクトを仮想空間上に配置でき、仮想空間上でロボット装置にタスクの実行を模擬させることができるソフトウェアである。
【００１９】
上記一側面に係る学習装置において、前記各第１学習データセットの前記シミュレーションデータは、前記センサをシミュレートする条件をランダムに変更しながら生成されてよい。当該構成によれば、ロボット装置を制御する能力を制御モジュールに習得させるための機械学習に利用する学習データを収集するコストを低減しつつ、その機械学習により実環境で運用可能な制御モジュールを適切に構築することができる。なお、対象となるシミュレーションの条件は、特に限定されなくてもよく、シミュレートするセンサの種類に応じて適宜選択されてよい。シミュレートするセンサがカメラである場合、シミュレーションの条件は、例えば、カメラ位置、各領域に貼り付けるテクスチャの種類等であってよい。
【００２０】
上記一側面に係る学習装置において、前記抽出器は、ニューラルネットワークにより構成されてよく、前記ニューラルネットワークは、第１部分、第２部分、及び第３部分に分かれていてよく、前記第１部分及び前記第２部分は、前記ニューラルネットワークの入力側に並列に配置され、同じ構造を有することにより共通のパラメータを有していてよく、前記第１部分は、前記シミュレーションデータの入力を受け付けるように構成されてよく、前記第２部分は、前記実データの入力を受け付けるように構成されてよく、前記第３部分は、前記ニューラルネットワークの出力側に配置され、前記第１部分及び前記第２部分それぞれの出力を受け付けるように構成されてよく、前記第１訓練ステップでは、前記第１学習処理部は、前記各第１学習データセットについて、前記シミュレーションデータを前記第１部分に入力すると、対応する前記第１環境情報と一致する出力値が前記第３部分から出力されるように、前記第１部分及び前記第３部分それぞれのパラメータの値を調整してよく、前記第１訓練ステップを実行した後、前記第２訓練ステップを実行する前に、前記第１学習処理部は、前記第１部分のパラメータの調整した値を前記第２部分のパラメータに複製してもよい。当該構成によれば、ロボット装置を制御する能力を制御モジュールに習得させるための機械学習に利用する学習データを収集するコストを低減しつつ、その機械学習により実環境で運用可能な制御モジュールを適切に構築することができる。
【００２１】
上記一側面に係る学習装置において、前記第２訓練ステップでは、前記第１学習処理部は、前記第３部分のパラメータの値は固定のまま、前記各第２学習データセットについて、前記実データを前記第２部分に入力すると、対応する前記第２環境情報と一致する出力値が前記第３部分から出力されるように、前記第２部分のパラメータの値を調整してもよい。当該構成によれば、ロボット装置を制御する能力を制御モジュールに習得させるための機械学習に利用する学習データを収集するコストを低減しつつ、その機械学習により実環境で運用可能な制御モジュールを適切に構築することができる。
【００２２】
上記一側面に係る学習装置において、前記第３環境情報は、前記機械学習が完了した後の前記抽出器を利用して、前記センサをシミュレートすることで生成された他のシミュレーションデータから抽出することで得られてよい。当該構成によれば、ロボット装置を制御する能力を制御モジュールに習得させるための機械学習に利用する学習データを収集するコストを低減しつつ、その機械学習により実環境で運用可能な制御モジュールを適切に構築することができる。
【００２３】
上記一側面に係る学習装置において、前記ロボット装置は、生産ラインにおける産業用ロボットであってよく、前記センサは、カメラ、圧力センサ、ロードセル及びこれらの組み合わせにより構成されてよく、前記各環境情報は、セグメンテーション情報、前記タスクの対象となるワークの属性に関する情報、前記タスクを実行する位置に関する情報、障害物の有無を示す情報、及び障害物の属性に関する情報の少なくともいずれかを含んでよく、前記制御コマンドは、前記産業用ロボットの駆動量を規定してもよい。当該構成によれば、産業用ロボットの動作を制御するための制御モジュールを構築することができる。
【００２４】
上記一側面に係る学習装置において、前記ロボット装置は、自律的に動作可能に構成された自律型ロボットであってよく、前記センサは、カメラ、サーモセンサ、マイクロフォン及びこれらの組み合わせにより構成されてよく、前記各環境情報は、セグメンテーション情報及び前記タスクの実行に関連する対象物の属性に関する情報の少なくともいずれかを含んでよく、前記制御コマンドは、前記自律型ロボットの駆動量、出力音声及び画面表示の少なくともいずれかを規定してもよい。当該構成によれば、自律型ロボットの動作を制御するための制御モジュールを構築することができる。なお、対象物は、単なる物だけではなく、人物を含んでもよい。
【００２５】
上記一側面に係る学習装置において、前記ロボット装置は、自動運転動作を実行可能に構成された移動体であってよく、前記センサは、カメラ、ライダセンサ及びこれらの組み合わせにより構成されてよく、前記各環境情報は、前記移動体の進行する通路に関する情報及び前記移動体の進行方向に存在する対象物に関する情報の少なくともいずれかを含んでよく、前記制御コマンドは、前記車両のアクセル量、ブレーキ量、ハンドルの操舵角、ライトの点灯及びクラクションの使用の少なくともいずれかを規定してもよい。当該構成によれば、移動体の動作を制御するための制御モジュールを構築することができる。
【００２６】
また、本発明の一側面に係る制御装置は、ロボット装置の動作を制御する制御装置であって、前記ロボット装置のタスクを実行する環境を監視するセンサにより得られたセンサデータ、及び前記タスクを実行する際の前記ロボット装置の状態に関する状態情報を取得するデータ取得部と、上記いずれかの形態に係る学習装置により構築された機械学習済みの前記抽出器を利用して、前記タスクを実行する環境に関する環境情報を前記センサデータから抽出する情報抽出部と、前記学習装置により構築された機械学習済みの前記制御器を利用して、前記環境情報及び前記状態情報により示される条件下で前記タスクを前記ロボット装置に実行させるための制御コマンドを決定するコマンド決定部と、決定された前記制御コマンドに基づいて、前記ロボット装置の動作を制御する動作制御部と、を備える。当該構成によれば、実環境下でロボット装置の動作を適切に制御可能な制御装置を提供することができる。
【００２７】
上記各形態に係る学習装置及び制御装置それぞれの別の態様として、本発明の一側面は、以上の各構成を実現する情報処理方法であってもよいし、プログラムであってもよいし、このようなプログラムを記憶した、コンピュータ等が読み取り可能な記憶媒体であってもよい。ここで、コンピュータ等が読み取り可能な記憶媒体とは、プログラム等の情報を、電気的、磁気的、光学的、機械的、又は、化学的作用によって蓄積する媒体である。また、本発明の一側面に係る制御システムは、上記いずれかの形態に係る学習装置及び制御装置により構成されてもよい。
【００２８】
例えば、本発明の一側面に係る学習方法は、コンピュータが、ロボット装置のタスクを実行する環境を監視するセンサをシミュレートすることで生成されたシミュレーションデータ、及び前記シミュレーションデータに表れる前記タスクを実行する環境に関する第１環境情報の組み合わせによりそれぞれ構成された複数の第１学習データセットを取得するステップと、前記センサから得られた実データ、及び前記実データに表れる前記タスクを実行する環境に関する第２環境情報の組み合わせによりそれぞれ構成された複数の第２学習データセットを取得するステップと、前記タスクを実行する環境に関する第３環境情報及び前記タスクを実行する際の前記ロボット装置の状態に関する状態情報、並びに前記第３環境情報及び前記状態情報により示される条件下で前記タスクを前記ロボット装置に実行させるための制御コマンドの組み合わせによりそれぞれ構成された複数の第３学習データセットを取得するステップと、前記第１学習データセット及び前記第２学習データセットを利用して、抽出器の機械学習を実施するステップと、前記第３学習データセットを利用して、制御器の機械学習を実施するステップ、を実行し、前記抽出器の機械学習を実施するステップは、前記各第１学習データセットについて、前記シミュレーションデータから、対応する前記第１環境情報と一致する環境情報を抽出するように前記抽出器を訓練する第１訓練ステップと、前記第１訓練ステップを実行した後、前記各第２学習データセットについて、前記実データから、対応する前記第２環境情報と一致する環境情報を抽出するように前記抽出器を訓練する第２訓練ステップと、を含み、前記制御器の機械学習を実施するステップは、前記第３環境情報及び前記状態情報が入力されると、対応する前記制御コマンドと一致する制御コマンドを出力するように前記制御器を訓練する訓練ステップを含む、情報処理方法である。
【００２９】
また、例えば、本発明の一側面に係る学習プログラムは、コンピュータに、ロボット装置のタスクを実行する環境を監視するセンサをシミュレートすることで生成されたシミュレーションデータ、及び前記シミュレーションデータに表れる前記タスクを実行する環境に関する第１環境情報の組み合わせによりそれぞれ構成された複数の第１学習データセットを取得するステップと、前記センサから得られた実データ、及び前記実データに表れる前記タスクを実行する環境に関する第２環境情報の組み合わせによりそれぞれ構成された複数の第２学習データセットを取得するステップと、前記タスクを実行する環境に関する第３環境情報及び前記タスクを実行する際の前記ロボット装置の状態に関する状態情報、並びに前記第３環境情報及び前記状態情報により示される条件下で前記タスクを前記ロボット装置に実行させるための制御コマンドの組み合わせによりそれぞれ構成された複数の第３学習データセットを取得するステップと、前記第１学習データセット及び前記第２学習データセットを利用して、抽出器の機械学習を実施するステップと、前記第３学習データセットを利用して、制御器の機械学習を実施するステップ、を実行させるためのプログラムであって、前記抽出器の機械学習を実施するステップは、前記各第１学習データセットについて、前記シミュレーションデータから、対応する前記第１環境情報と一致する環境情報を抽出するように前記抽出器を訓練する第１訓練ステップと、前記第１訓練ステップを実行した後、前記各第２学習データセットについて、前記実データから、対応する前記第２環境情報と一致する環境情報を抽出するように前記抽出器を訓練する第２訓練ステップと、を含み、前記制御器の機械学習を実施するステップは、前記第３環境情報及び前記状態情報が入力されると、対応する前記制御コマンドと一致する制御コマンドを出力するように前記制御器を訓練する訓練ステップを含む、プログラムである。
【発明の効果】
【００３０】
本発明によれば、ロボット装置を制御する能力を制御モジュールに習得させるための機械学習に利用する学習データを収集するコストを低減しつつ、その機械学習により実環境で運用可能な制御モジュールを構築することができる。
【図面の簡単な説明】
【００３１】
【図１】図１は、本発明が適用される場面の一例を模式的に例示する。
【図２】図２は、実施の形態に係る学習装置のハードウェア構成の一例を模式的に例示する。
【図３】図３は、実施の形態に係る制御装置のハードウェア構成の一例を模式的に例示する。
【図４】図４は、実施の形態に係る学習装置のソフトウェア構成の一例を模式的に例示する。
【図５Ａ】図５Ａは、実施の形態に係る学習装置による抽出器の機械学習の過程の一例を模式的に例示する。
【図５Ｂ】図５Ｂは、実施の形態に係る学習装置による抽出器の機械学習の過程の一例を模式的に例示する。
【図５Ｃ】図５Ｃは、実施の形態に係る学習装置による制御器の機械学習の過程の一例を模式的に例示する。
【図６】図６は、実施の形態に係る制御装置のソフトウェア構成の一例を模式的に例示する。
【図７】図７は、実施の形態に係る学習装置による抽出器の機械学習の処理手順の一例を例示する。
【図８】図８は、実施の形態に係る学習装置による制御器の機械学習の処理手順の一例を例示する。
【図９】図９は、実施の形態に係る制御装置によるロボット制御の処理手順の一例を例示する。
【図１０】図１０は、変形例に係る学習装置のソフトウェア構成の一例を模式的に例示する。
【図１１】図１１は、変形例に係る制御装置のソフトウェア構成の一例を模式的に例示する。
【図１２】図１２は、本発明が適用される場面のその他の例を模式的に例示する。
【図１３】図１３は、本発明が適用される場面のその他の例を模式的に例示する。
【発明を実施するための形態】
【００３２】
以下、本発明の一側面に係る実施の形態（以下、「本実施形態」とも表記する）を、図面に基づいて説明する。ただし、以下で説明する本実施形態は、あらゆる点において本発明の例示に過ぎない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。つまり、本発明の実施にあたって、実施形態に応じた具体的構成が適宜採用されてもよい。なお、本実施形態において登場するデータを自然言語により説明しているが、より具体的には、コンピュータが認識可能な疑似言語、コマンド、パラメータ、マシン語等で指定される。
【００３３】
§１  適用例
まず、図１を用いて、本発明が適用される場面の一例について説明する。図１は、本実施形態に係る制御システム１００の適用場面の一例を模式的に例示する。図１の例では、生産ラインに配置される産業用ロボットＲ（例えば、ロボットハンド）の動作を制御する場面を想定している。産業用ロボットＲは、本発明の「ロボット装置」の一例である。しかしながら、本発明の適用対象は、このような例に限定されなくてもよく、何らかのロボット装置の動作を制御するあらゆる場面に適用可能である。
【００３４】
図１に示されるとおり、本実施形態に係る制御システム１００は、ネットワークを介して互いに接続される学習装置１及び制御装置２を備えており、制御モジュールの機械学習、及び訓練された制御モジュールによる産業用ロボットＲの動作の制御を実施可能に構成される。学習装置１及び制御装置２の間のネットワークの種類は、例えば、インターネット、無線通信網、移動通信網、電話網、専用網等から適宜選択されてよい。
【００３５】
本実施形態に係る学習装置１は、産業用ロボットＲの動作を制御するための制御モジュールを機械学習により構築するように構成されたコンピュータである。本実施形態に係る制御モジュールは、抽出器５及び制御器６により構成される。抽出器５は、センサにより得られるセンサデータから環境情報を抽出するように訓練される。制御器６は、環境情報及び状態情報から制御コマンドを導出するように訓練される。
【００３６】
まず、本実施形態に係る学習装置１は、シミュレーションデータ７０１及び第１環境情報７０２の組み合わせによりそれぞれ構成された複数の第１学習データセット７０を取得する。シミュレーションデータ７０１は、生産ラインにおける産業用ロボットＲのタスクを実行する環境を監視するセンサをシミュレートすることで生成される。第１環境情報７０２は、シミュレーションデータ７０１に表れるタスクを実行する環境に関する。
【００３７】
また、本実施形態に係る学習装置１は、実データ７３１及び第２環境情報７３２の組み合わせによりそれぞれ構成された複数の第２学習データセット７３を取得する。実データ７３１は、センサから得られる。第２環境情報７３２は、実データ７３１に表れるタスクを実行する環境に関する。
【００３８】
図１に示されるとおり、本実施形態では、タスクの実行環境をモニタリング（センシング）するためのセンサの一例として、カメラＣＡが、産業用ロボットＲの可動域を撮影可能な位置に配置されている。そのため、本実施形態に係るシミュレーションデータ７０１は、シミュレータにより生成した画像データであって、このカメラＣＡにより得られる撮影画像を模した画像データである。これに対して、本実施形態に係る実データ７３１は、産業用ロボットＲのタスクを実行する環境をカメラＣＡにより撮影することで得られる画像データ（撮影画像）である。カメラＣＡは、本発明の「センサ」の一例である。ただし、本実施形態で利用可能なセンサは、カメラに限定されなくてよく、実施の形態に応じて適宜選択されてよい。
【００３９】
更に、本実施形態に係る学習装置１は、第３環境情報７６１及び状態情報７６２並びに制御コマンド７６３の組み合わせによりそれぞれ構成された複数の第３学習データセット７６を取得する。第３環境情報７６１は、産業用ロボットＲのタスクを実行する環境に関する。状態情報７６２は、タスクを実行する際の産業用ロボットＲの状態に関する。制御コマンド７６３は、第３環境情報７６１及び状態情報７６２により示される条件下でタスクを産業用ロボットＲに実行させるための動作を規定する。
【００４０】
なお、タスクの種類は、特に限定されなくてもよく、ロボット装置の種類に応じて適宜選択されてよい。産業用ロボットＲがロボットハンドである場合、タスクは、例えば、ワークの把持、把持したワークの解放等であってよい。各環境情報（７０２、７３２、７６１）は、ロボット装置のタスクを実行する環境に関するものであれば、その種類は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。各環境情報（７０２、７３２、７６１）は、例えば、セグメンテーション情報、タスクの対象となるワークの属性に関する情報、タスクを実行する位置に関する情報、障害物の有無を示す情報、及び障害物の属性に関する情報の少なくともいずれかを含んでよい。状態情報７６２は、タスクの実行に関連するロボット装置の状態を示し得るものであれば、その種類は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。状態情報７６２は、例えば、産業用ロボットＲの駆動部（例えば、エンドエフェクタ、関節部等）の位置、向き、角度、加速度等を含んでよい。制御コマンド７６３は、ロボット装置の動作の指示に関するものであれば、その種類及び形式は、特に限定されなくてもよく、ロボット装置の種類に応じて適宜選択されてよい。制御コマンド７６３は、例えば、産業用ロボットＲの駆動量等を規定してよい。
【００４１】
得られた各学習データセット（７０、７３、７６）は、機械学習により制御モジュールを訓練するための学習データとして利用される。本実施形態に係る学習装置１は、第１学習データセット７０及び第２学習データセット７３を利用して、抽出器５の機械学習を実施する。具体的には、学習装置１は、第１訓練ステップとして、各第１学習データセット７０について、シミュレーションデータ７０１から、対応する第１環境情報７０２と一致する環境情報を抽出するように抽出器５を訓練する。シミュレーションデータ７０１は、この機械学習における訓練データ（入力データ）に対応し、第１環境情報７０２は、正解データ（教師データ）に対応する。すなわち、学習装置１は、各第１学習データセット７０について、シミュレーションデータ７０１が入力されると、対応する第１環境情報７０２と一致する出力値（環境情報）を出力するように抽出器５を訓練する。
【００４２】
第１訓練ステップを実行した後、学習装置１は、各第２学習データセット７３について、実データ７３１から、対応する第２環境情報７３２と一致する環境情報を抽出するように抽出器５を訓練する。実データ７３１は、この機械学習における訓練データ（入力データ）に対応し、第２環境情報７３２は、正解データ（教師データ）に対応する。すなわち、学習装置１は、各第２学習データセット７３について、実データ７３１が入力されると、対応する第２環境情報７３２と一致する出力値（環境情報）を出力するように抽出器５を訓練する。
【００４３】
また、本実施形態に係る学習装置１は、第３学習データセット７６を利用して、制御器６の機械学習を実施する。具体的には、学習装置１は、各第３学習データセット７６について、第３環境情報７６１及び状態情報７６２から対応する制御コマンド７６３を導出するように制御器６を訓練する。第３環境情報７６１及び状態情報７６２は、この機械学習における訓練データ（入力データ）に対応し、制御コマンド７６３は、正解データ（教師データ）に対応する。すなわち、学習装置１は、各第３学習データセット７６について、第３環境情報７６１及び状態情報７６２が入力されると、対応する制御コマンド７６３と一致する出力値（制御コマンド）を出力するように制御器６を訓練する。
【００４４】
なお、抽出器５及び制御器６は、機械学習を実施可能な学習モデルにより構成される。本実施形態では、抽出器５及び制御器６はそれぞれ、後述するニューラルネットにより構成される。抽出器５及び制御器６それぞれを訓練することは、それぞれを構成する学習モデルのパラメータを調節することである。学習モデルのパラメータは、与えられた入力データに対する出力値を得るための演算処理に利用される。学習モデルがニューラルネットワークにより構成される場合、パラメータは、例えば、各ニューロン間の結合の重み、各ニューロンの閾値等である。機械学習における「一致する」は、学習モデルの出力値と正解データとの誤差（評価関数、誤差関数、損失関数）が閾値以下になるように、学習モデルのパラメータを調節することに対応する。
【００４５】
一方、本実施形態に係る制御装置２は、学習装置１により構築された制御モジュールを利用して、産業用ロボットＲの動作を制御するように構成されたコンピュータである。具体的には、本実施形態に係る制御装置２は、産業用ロボットＲのタスクを実行する環境を監視するセンサにより得られたセンサデータを取得する。本実施形態では、当該センサの一例としてカメラＣＡが利用されている。そのため、制御装置２は、センサデータの一例として、カメラＣＡにより得られた画像データ８０を取得する。また、本実施形態に係る制御装置２は、タスクを実行する際の産業用ロボットＲの状態に関する状態情報８３を取得する。
【００４６】
続いて、本実施形態に係る制御装置２は、上記学習装置１により構築された機械学習済みの抽出器５を利用して、タスクを実行する環境に関する環境情報を画像データ８０から抽出する。具体的には、制御装置２は、機械学習済みの抽出器５に画像データ８０を入力し、当該抽出器５の演算処理を実行することで、環境情報に対応する出力値を当該抽出器５から取得する。
【００４７】
次に、本実施形態に係る制御装置２は、上記学習装置１により構築された機械学習済みの制御器６を利用して、環境情報及び状態情報８３により示される条件下でタスクを産業用ロボットＲに実行させるための制御コマンド８５を決定する。具体的には、制御装置２は、機械学習済みの制御器６に環境情報及び状態情報８３を入力し、当該制御器６の演算処理を実行することで、制御コマンド８５に対応する出力値を当該制御器６から取得する。そして、本実施形態に係る制御装置２は、決定された制御コマンド８５に基づいて、産業用ロボットＲの動作を制御する。
【００４８】
以上のとおり、本実施形態では、産業用ロボットＲの動作を制御するための制御モジュールが、抽出器５及び制御器６の２つの構成要素に分割されている。これらの構成要素のうち抽出器５の機械学習では、シミュレーションデータ７０１及び実データ７３１の両方を利用することで、抽出器５は、両データ（７０１、７３１）から共通の特徴（環境情報）を抽出するように構築される。これにより、抽出器５の機械学習の過程において、シミュレーションデータ７０１と実データ７３１との間の乖離を吸収した上で、シミュレーションデータ７０１を利用した第１訓練ステップの成果を、実データ７３１を利用した第２訓練ステップに反映させることができる。そのため、機械学習に利用するシミュレーションデータ７０１（第１学習データセット７０）の件数が十分であれば、機械学習に利用する実データ７３１（第２学習データセット７３）の件数が少なくても、実環境で得られるセンサデータから環境情報を精度よく抽出可能な機械学習済みの抽出器５を構築することができる。
【００４９】
加えて、センサデータから抽出される特徴（環境情報）は、シミュレーションにより実環境と同様に得ることが可能である。そのため、産業用ロボットＲの実機を用いず、シミュレータを用いても、得られた第３学習データセット７６を利用した機械学習により、実環境で運用可能な機械学習済みの制御器６を構築することができる。したがって、本実施形態によれば、抽出器５及び制御器６の２つの構成要素に制御モジュールを分離することで、学習データの少なくとも一部に（好ましくは、大部分で）シミュレーションデータ７０１を採用することができるようになるため、機械学習に利用する学習データを収集するのにかかるコストを低減することができる。更に、この機械学習により構築された抽出器５及び制御器６により、実環境で運用可能な制御モジュールを構成することができる。よって、本実施形態によれば、産業用ロボットＲを制御する能力を制御モジュールに習得させるための機械学習に利用する学習データを収集するコストを低減しつつ、その機械学習により実環境で運用可能な制御モジュールを構築することができる。また、本実施形態に係る制御装置２によれば、そのように構築された制御モジュールを利用することで、産業用ロボットＲの動作を実環境で適切に制御することができる。
【００５０】
§２  構成例
［ハードウェア構成］
＜学習装置＞
次に、図２を用いて、本実施形態に係る学習装置１のハードウェア構成の一例について説明する。図２は、本実施形態に係る学習装置１のハードウェア構成の一例を模式的に例示する。
【００５１】
図２に示されるとおり、本実施形態に係る学習装置１は、制御部１１、記憶部１２、通信インタフェース１３、入力装置１４、出力装置１５、及びドライブ１６が電気的に接続されたコンピュータである。なお、図２では、通信インタフェースを「通信Ｉ／Ｆ」と記載している。
【００５２】
制御部１１は、ハードウェアプロセッサであるＣＰＵ（Central Processing Unit）、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）等を含み、プログラム及び各種データに基づいて情報処理を実行するように構成される。記憶部１２は、メモリの一例であり、例えば、ハードディスクドライブ、ソリッドステートドライブ等で構成される。本実施形態では、記憶部１２は、学習プログラム１２１、複数の第１学習データセット７０、複数の第２学習データセット７３、複数の第３学習データセット７６、第１学習結果データ１２５、第２学習結果データ１２８等の各種情報を記憶する。
【００５３】
学習プログラム１２１は、学習装置１に、後述する機械学習の情報処理（図７、図８）を実行させ、学習済みの抽出器５及び学習済みの制御器６を構築させるためのプログラムである。学習プログラム１２１は、この情報処理の一連の命令を含む。複数の第１学習データセット７０及び複数の第２学習データセット７３は抽出器５の機械学習に利用される。複数の第３学習データセット７６は制御器６の機械学習に利用される。第１学習結果データ１２５は、機械学習により構築された学習済みの抽出器５の設定を行うためのデータである。第２学習結果データ１２８は、機械学習により構築された学習済みの制御器６の設定を行うためのデータである。第１学習結果データ１２５及び第２学習結果データ１２８は、学習プログラム１２１の実行結果として生成される。詳細は後述する。
【００５４】
通信インタフェース１３は、例えば、有線ＬＡＮ（Local Area Network）モジュール、無線ＬＡＮモジュール等であり、ネットワークを介した有線又は無線通信を行うためのインタフェースである。学習装置１は、この通信インタフェース１３を利用することで、ネットワークを介したデータ通信を他の情報処理装置（例えば、制御装置２）と行うことができる。
【００５５】
入力装置１４は、例えば、マウス、キーボード等の入力を行うための装置である。また、出力装置１５は、例えば、ディスプレイ、スピーカ等の出力を行うための装置である。オペレータは、入力装置１４及び出力装置１５を利用することで、学習装置１を操作することができる。
【００５６】
ドライブ１６は、例えば、ＣＤドライブ、ＤＶＤドライブ等であり、記憶媒体９１に記憶されたプログラムを読み込むためのドライブ装置である。ドライブ１６の種類は、記憶媒体９１の種類に応じて適宜選択されてよい。上記学習プログラム１２１、複数の第１学習データセット７０、複数の第２学習データセット７３、及び複数の第３学習データセット７６の少なくともいずれかは、この記憶媒体９１に記憶されていてもよい。
【００５７】
記憶媒体９１は、コンピュータその他装置、機械等が、記録されたプログラム等の情報を読み取り可能なように、当該プログラム等の情報を、電気的、磁気的、光学的、機械的又は化学的作用によって蓄積する媒体である。学習装置１は、この記憶媒体９１から、上記学習プログラム１２１、複数の第１学習データセット７０、複数の第２学習データセット７３、及び複数の第３学習データセット７６の少なくともいずれかを取得してもよい。
【００５８】
ここで、図２では、記憶媒体９１の一例として、ＣＤ、ＤＶＤ等のディスク型の記憶媒体を例示している。しかしながら、記憶媒体９１の種類は、ディスク型に限定される訳ではなく、ディスク型以外であってもよい。ディスク型以外の記憶媒体として、例えば、フラッシュメモリ等の半導体メモリを挙げることができる。
【００５９】
なお、学習装置１の具体的なハードウェア構成に関して、実施形態に応じて、適宜、構成要素の省略、置換及び追加が可能である。例えば、制御部１１は、複数のハードウェアプロセッサを含んでもよい。ハードウェアプロセッサは、マイクロプロセッサ、ＦＰＧＡ（field-programmable gate array）、ＤＳＰ（digital signal processor）等で構成されてよい。記憶部１２は、制御部１１に含まれるＲＡＭ及びＲＯＭにより構成されてもよい。通信インタフェース１３、入力装置１４、出力装置１５及びドライブ１６の少なくともいずれかは省略されてもよい。学習装置１は、複数台のコンピュータで構成されてもよい。この場合、各コンピュータのハードウェア構成は、一致していてもよいし、一致していなくてもよい。また、学習装置１は、提供されるサービス専用に設計された情報処理装置の他、汎用のサーバ装置、ＰＣ（Personal Computer）等であってもよい。
【００６０】
＜制御装置＞
次に、図３を用いて、本実施形態に係る制御装置２のハードウェア構成の一例について説明する。図３は、本実施形態に係る制御装置２のハードウェア構成の一例を模式的に例示する。
【００６１】
図３に示されるとおり、本実施形態に係る制御装置２は、制御部２１、記憶部２２、通信インタフェース２３、外部インタフェース２４、入力装置２５、出力装置２６、及びドライブ２７が電気的に接続されたコンピュータである。なお、図３では、通信インタフェース及び外部インタフェースをそれぞれ「通信Ｉ／Ｆ」及び「外部Ｉ／Ｆ」と記載している。
【００６２】
制御装置２の制御部２１〜通信インタフェース２３及び入力装置２５〜ドライブ２７はそれぞれ、上記学習装置１の制御部１１〜ドライブ１６それぞれと同様に構成されてよい。すなわち、制御部２１は、ハードウェアプロセッサであるＣＰＵ、ＲＡＭ、ＲＯＭ等を含み、プログラム及びデータに基づいて各種情報処理を実行するように構成される。記憶部２２は、例えば、ハードディスクドライブ、ソリッドステートドライブ等で構成される。記憶部２２は、制御プログラム２２１、第１学習結果データ１２５、第２学習結果データ１２８等の各種情報を記憶する。
【００６３】
制御プログラム２２１は、学習済みの抽出器５及び学習済みの制御器６を利用して、産業用ロボットＲの動作を制御する後述の情報処理（図９）を制御装置２に実行させるためのプログラムである。制御プログラム２２１は、この情報処理の一連の命令を含む。第１学習結果データ１２５及び第２学習結果データ１２８は、この情報処理の際に、学習済みの抽出器５及び学習済みの制御器６を設定するのに利用される。詳細は後述する。
【００６４】
通信インタフェース２３は、例えば、有線ＬＡＮモジュール、無線ＬＡＮモジュール等であり、ネットワークを介した有線又は無線通信を行うためのインタフェースである。制御装置２は、この通信インタフェース２３を利用することで、ネットワークを介したデータ通信を他の情報処理装置（例えば、学習装置１）と行うことができる。
【００６５】
外部インタフェース２４は、例えば、ＵＳＢ（Universal Serial Bus）ポート、専用ポート等であり、外部装置と接続するためのインタフェースである。外部インタフェース２４の種類及び数は、接続される外部装置の種類及び数に応じて適宜選択されてよい。本実施形態では、制御装置２は、外部インタフェース２４を介して、産業用ロボットＲ及びカメラＣＡに接続される。
【００６６】
産業用ロボットＲの種類及び構成は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。産業用ロボットＲは、例えば、ロボットハンド、ベルトコンベア等を含んでもよい。制御装置２は、外部インタフェース２４を介して、制御コマンドに基づく制御信号を産業用ロボットＲに送信することで、産業用ロボットＲの動作を制御する。産業用ロボットＲの制御方法は、特に限定されなくてよく、実施の形態に応じて適宜決定されてよい。産業用ロボットＲは、制御装置２により直接的に制御されてもよい。或いは、産業用ロボットＲは、コントローラ（不図示）を内蔵してもよい。この場合、コントローラは、制御装置２から受信した制御信号、プログラムの処理等に基づいて、産業用ロボットＲの動作を制御するように適宜構成されてよい。
【００６７】
カメラＣＡは、産業用ロボットＲのタスクを実行する環境を監視するように適宜配置される。このカメラＣＡの種類は、特に限定されなくてもよく、実施の形態に応じて適宜決定されてよい。カメラＣＡには、例えば、デジタルカメラ、ビデオカメラ等の公知のカメラが利用されてよい。制御装置２は、外部インタフェース２４を介して、カメラＣＡから画像データを取得することができる。画像データは、本発明の「センサデータ」の一例である。なお、産業用ロボットＲ及びカメラＣＡが通信インタフェースを備える場合、制御装置２は、外部インタフェース２４ではなく、通信インタフェース２３を介して、産業用ロボットＲ及びカメラＣＡに接続されてもよい。
【００６８】
入力装置２５は、例えば、マウス、キーボード等の入力を行うための装置である。また、出力装置２６は、例えば、ディスプレイ、スピーカ等の出力を行うための装置である。オペレータは、入力装置２５及び出力装置２６を利用することで、制御装置２を操作することができる。
【００６９】
ドライブ２７は、例えば、ＣＤドライブ、ＤＶＤドライブ等であり、記憶媒体９２に記憶されたプログラムを読み込むためのドライブ装置である。上記制御プログラム２２１、第１学習結果データ１２５及び第２学習結果データ１２８のうちの少なくともいずれかは、記憶媒体９２に記憶されていてもよい。また、制御装置２は、記憶媒体９２から、上記制御プログラム２２１、第１学習結果データ１２５及び第２学習結果データ１２８のうちの少なくともいずれかを取得してもよい。
【００７０】
なお、制御装置２の具体的なハードウェア構成に関して、上記学習装置１と同様に、実施の形態に応じて、適宜、構成要素の省略、置換及び追加が可能である。例えば、制御部２１は、複数のハードウェアプロセッサを含んでもよい。ハードウェアプロセッサは、マイクロプロセッサ、ＦＰＧＡ、ＤＳＰ等で構成されてよい。記憶部２２は、制御部２１に含まれるＲＡＭ及びＲＯＭにより構成されてもよい。通信インタフェース２３、外部インタフェース２４、入力装置２５、出力装置２６及びドライブ２７の少なくともいずれかは省略されてもよい。制御装置２は、複数台のコンピュータで構成されてもよい。この場合、各コンピュータのハードウェア構成は、一致していてもよいし、一致していなくてもよい。また、制御装置２は、提供されるサービス専用に設計された情報処理装置の他、汎用のサーバ装置、汎用のデスクトップＰＣ、ノートＰＣ、タブレットＰＣ等が用いられてよい。
【００７１】
［ソフトウェア構成］
次に、図４を用いて、本実施形態に係る学習装置１のソフトウェア構成の一例について説明する。図４は、本実施形態に係る学習装置１のソフトウェア構成の一例を模式的に例示する。
【００７２】
学習装置１の制御部１１は、記憶部１２に記憶された学習プログラム１２１をＲＡＭに展開する。そして、制御部１１は、ＲＡＭに展開された学習プログラム１２１をＣＰＵにより解釈及び実行して、各構成要素を制御する。これによって、図４に示されるとおり、本実施形態に係る学習装置１は、第１データ取得部１１１、第２データ取得部１１２、第３データ取得部１１３、第１学習処理部１１４、第２学習処理部１１５、及び保存処理部１１６をソフトウェアモジュールとして備えるコンピュータとして動作する。すなわち、本実施形態では、学習装置１の各ソフトウェアモジュールは、制御部１１（ＣＰＵ）により実現される。
【００７３】
第１データ取得部１１１は、産業用ロボットＲのタスクを実行する環境を監視するセンサをシミュレートすることで生成されたシミュレーションデータ７０１、及びシミュレーションデータ７０１に表れるタスクを実行する環境に関する第１環境情報７０２の組み合わせによりそれぞれ構成された複数の第１学習データセット７０を取得する。第２データ取得部１１２は、センサから得られた実データ７３１、及び実データ７３１に表れるタスクを実行する環境に関する第２環境情報７３２の組み合わせによりそれぞれ構成された複数の第２学習データセット７３を取得する。第３データ取得部１１３は、タスクを実行する環境に関する第３環境情報７６１及びタスクを実行する際の産業用ロボットＲの状態に関する状態情報７６２、並びに第３環境情報７６１及び状態情報７６２により示される条件下でタスクを産業用ロボットＲに実行させるための制御コマンド７６３の組み合わせによりそれぞれ構成された複数の第３学習データセット７６を取得する。
【００７４】
第１学習処理部１１４は、機械学習を実施する前の抽出器５を保持する。第１学習処理部１１４は、第１学習データセット７０及び第２学習データセット７３を利用して、抽出器５の機械学習を実施する。具体的に、第１学習処理部１１４は、第１訓練ステップとして、各第１学習データセット７０について、シミュレーションデータ７０１から、対応する第１環境情報７０２と一致する環境情報を抽出するように抽出器５を訓練する。第１訓練ステップを実行した後、第１学習処理部１１４は、第２訓練ステップとして、各第２学習データセット７３について、実データ７３１から、対応する第２環境情報７３２と一致する環境情報を抽出するように抽出器５を訓練する。保存処理部１１６は、構築された学習済みの抽出器５に関する情報を第１学習結果データ１２５として記憶部１２に保存する。
【００７５】
第２学習処理部１１５は、機械学習を実施する前の制御器６を保持する。第２学習処理部１１５は、第３学習データセット７６を利用して、制御器６の機械学習を実施する。具体的に、第２学習処理部１１５は、各第３学習データセット７６について、第３環境情報７６１及び状態情報７６２が入力されると、対応する制御コマンド７６３と一致する制御コマンドを出力するように制御器６を訓練する。保存処理部１１６は、構築された学習済みの制御器６に関する情報を第２学習結果データ１２８として記憶部１２に保存する。
【００７６】
（抽出器）
次に、図５Ａ及び図５Ｂを用いて、抽出器５の構成の一例について説明する。図５Ａは、本実施形態に係る抽出器５の第１訓練ステップの過程の一例を模式的に例示する。図５Ｂは、本実施形態に係る抽出器５の第２訓練ステップの過程の一例を模式的に例示する。図５Ａ及び図５Ｂに示されるとおり、本実施形態に係る抽出器５は、ニューラルネットワークにより構成されている。当該ニューラルネットワークは、第１部分５１、第２部分５２、及び第３部分５３に分かれている。第１部分５１及び第２部分５２は、ニューラルネットワークの入力側に並列に配置される。これに対して、第３部分５３は、ニューラルネットワークの出力側に配置される。
【００７７】
本実施形態に係る第１部分５１は、いわゆる畳み込みニューラルネットワークにより構成されている。具体的に、第１部分５１は、畳み込み層５１１、プーリング層５１２、及び全結合層５１３を備えている。本実施形態に係る第１部分５１では、畳み込み層５１１及びプーリング層５１２が入力側に交互に配置されている。そして、最も出力側に配置されたプーリング層５１２の出力が全結合層５１３に入力される。全結合層５１３の出力が、第１部分５１の出力に対応している。畳み込み層５１１及びプーリング層５１２の数は、実施の形態に応じて適宜選択されてよい。
【００７８】
畳み込み層５１１は、画像の畳み込み演算を行う層である。画像の畳み込みとは、画像と所定のフィルタとの相関を算出する処理に相当する。そのため、画像の畳み込み演算を行うことで、例えば、フィルタの濃淡パターンと類似する濃淡パターンを入力される画像から検出することができる。プーリング層５１２は、プーリング処理を行う層である。プーリング処理は、画像のフィルタに対する応答の強い位置の情報を一部捨てることで、画像内に現れる特徴の微小な位置変化に対する応答の不変性を実現する。プーリング層５１２は、例えば、処理対象となる複数のピクセルから最大値のピクセルを選択するように構成された最大プーリング層であってよい。全結合層５１３は、隣接する層の間のニューロン全てを結合した層である。すなわち、全結合層５１３に含まれる各ニューロンは、隣接する層に含まれる全てのニューロンに結合される。全結合層５１３は、２層以上で構成されてもよい。
【００７９】
各層５１１〜５１３に含まれるニューロン（ノード）の数は、実施の形態に応じて適宜選択されてよい。隣接する層のニューロン同士は適宜結合され、各結合には重み（結合荷重）が設定されている。各ニューロンには閾値が設定されており、基本的には、各入力と各重みとの積の和が閾値を超えているか否かによって各ニューロンの出力が決定される。各層５１１〜５１３に含まれる各ニューロン間の結合の重み及び各ニューロンの閾値は、演算処理に利用される第１部分５１のパラメータの一例である。
【００８０】
本実施形態に係る第２部分５２も、第１部分５１と同様に、いわゆる畳み込みニューラルネットワークにより構成されている。すなわち、第２部分５２は、畳み込み層５２１、プーリング層５２２、及び全結合層５２３を備えている。本実施形態では、第２部分５２の各層５２１〜５２３は、第１部分５１の各層５１１〜５１３と同様に構成される。つまり、各層５２１〜５２３に含まれるニューロンの数、及び隣接する層のニューロン同士の結合は、第１部分５１と一致するように設定される。これにより、第１部分５１及び第２部分５２は、互いに同じ構造を有し、共通のパラメータを有するように構成される。各層５２１〜５２３に含まれる各ニューロン間の結合の重み及び各ニューロンの閾値は、演算処理に利用される第２部分５２のパラメータの一例である。
【００８１】
一方、本実施形態に係る第３部分５３は、第１部分５１の入力側と出力側とを反転させたような構造を有している。具体的には、第３部分５３は、全結合層５３１、アップサンプリング層５３２、畳み込み層５３３を備えている。アップサンプリング層５３２は、逆プーリング処理を行う層である。本実施形態に係る第３部分５３では、全結合層５３１が最も入力側に配置されており、全結合層５３１の出力が、最も入力側に配置されたアップサンプリング層５３２に入力される。そして、アップサンプリング層５３２及び畳み込み層５３３が出力側で交互に配置されている。最も出力側に配置された畳み込み層５３３の出力が、第３部分５３の出力に対応している。アップサンプリング層５３２及び畳み込み層５３３の数は、実施の形態に応じて適宜選択されてよい。また、全結合層５３１は、２層以上で構成されてもよい。各層５３１〜５３３に含まれる各ニューロン間の結合の重み及び各ニューロンの閾値は、演算処理に利用される第３部分５３のパラメータの一例である。
【００８２】
第１部分５１の最も入力側に配置された畳み込み層５１１は、シミュレーションデータ７０１の入力を受け付けるように構成される。第２部分５２の最も入力側に配置された畳み込み層５２１は、実データ７３１の入力を受け付けるように構成される。第３部分５３の全結合層５３１は、第１部分５１及び第２部分５２それぞれの出力を受け付けるように構成される。ただし、各部分５１〜５３の構成は、このような例に限定されなくてもよく、実施の形態に応じて適宜設定されてよい。
【００８３】
図５Ａに示されるように、第１訓練ステップでは、第１学習処理部１１４は、第２部分５２と第３部分５３との結合を遮断（無視）する。そして、以下の手順により、第１学習処理部１１４は、各第１学習データセット７０について、シミュレーションデータ７０１を第１部分５１に入力すると、対応する第１環境情報７０２と一致する出力値が第３部分５３から出力されるように、第１部分５１及び第３部分５３それぞれのパラメータの値を調節する。
【００８４】
まず、第１学習処理部１１４は、各第１学習データセット７０について、第１部分５１の最も入力側に配置された畳み込み層５１１にシミュレーションデータ７０１を入力し、第１部分５１及び第３部分５３のパラメータを利用して、抽出器５の演算処理を実行する。この演算処理の結果、第１学習処理部１１４は、シミュレーションデータ７０１から環境情報を抽出した結果に対応する出力値を第３部分５３の最も出力側に配置された畳み込み層５３３から取得する。次に、第１学習処理部１１４は、取得した出力値と第１環境情報７０２との誤差を算出する。そして、第１学習処理部１１４は、算出される誤差の和が小さくなるように、第１部分５１及び第３部分５３それぞれのパラメータの値を調節する。
【００８５】
第３部分５３から得られる出力値と第１環境情報７０２との誤差の和が閾値以下になるまで、第１学習処理部１１４は、第１部分５１及び第３部分５３それぞれのパラメータの値の調節を繰り返す。これにより、第１学習処理部１１４は、各第１学習データセット７０について、シミュレーションデータ７０１を第１部分５１に入力すると、対応する第１環境情報７０２と一致する出力値を第３部分５３から出力するように訓練された抽出器５を構築することができる。
【００８６】
次に、図５Ｂに示されるとおり、第１訓練ステップを実行した後、第２訓練ステップを実行する前に、第１学習処理部１１４は、第１部分５１の各パラメータの調節した値を第２部分５２の対応するパラメータに複製する。第２訓練ステップでは、第１学習処理部１１４は、第２部分５２と第３部分５３との結合の遮断を解除し、第１部分５１と第３部分５３との結合を遮断（無視）する。そして、本実施形態では、以下の手順により、第１学習処理部１１４は、第３部分５３のパラメータの値は固定のまま、各第２学習データセット７３について、実データ７３１を第２部分５２に入力すると、対応する第２環境情報７３２と一致する出力値が第３部分５３から出力されるように、第２部分５２のパラメータの値を調節する。
【００８７】
まず、第１学習処理部１１４は、各第２学習データセット７３について、第２部分５２の最も入力側に配置された畳み込み層５２１に実データ７３１を入力し、第２部分５２及び第３部分５３のパラメータを利用して、抽出器５の演算処理を実行する。この演算処理の結果、第１学習処理部１１４は、実データ７３１から環境情報を抽出した結果に対応する出力値を第３部分５３の最も出力側に配置された畳み込み層５３３から取得する。次に、第１学習処理部１１４は、取得した出力値と第２環境情報７３２との誤差を算出する。そして、第１学習処理部１１４は、算出される誤差の和が小さくなるように、第２部分５２のパラメータの値を調節する。
【００８８】
第３部分５３から得られる出力値と第２環境情報７３２との誤差の和が閾値以下になるまで、第１学習処理部１１４は、第２部分５２のパラメータの値の調節を繰り返す。これにより、第１学習処理部１１４は、各第２学習データセット７３について、実データ７３１を第２部分５２に入力すると、対応する第２環境情報７３２と一致する出力値を第３部分５３から出力するように訓練された抽出器５を構築することができる。
【００８９】
これらの訓練ステップが完了した後、保存処理部１１６は、構築された学習済みの抽出器５の構成（例えば、ニューラルネットワークの層数、各層におけるニューロンの個数、ニューロン同士の結合関係、各ニューロンの伝達関数）、及び演算パラメータ（例えば、各ニューロン間の結合の重み、各ニューロンの閾値）を示す第１学習結果データ１２５を生成する。そして、保存処理部１１６は、生成した第１学習結果データ１２５を記憶部１２に保存する。
【００９０】
（制御器）
次に、図５Ｃを用いて、制御器６の構成の一例について説明する。図５Ｃは、本実施形態に係る制御器６の機械学習の過程の一例を模式的に例示する。図５Ｃに示されるとおり、本実施形態に係る制御器６は、いわゆる深層学習に用いられる多層構造のニューラルネットワークにより構成されており、入力層６１、中間層（隠れ層）６２、及び出力層６３を備えている。ただし、制御器６の構成は、このような例に限定されなくてもよく、実施の形態に応じて適宜設定されてよい。例えば、制御器６は、２層以上の中間層６２を備えてもよい。
【００９１】
各層６１〜６３に含まれるニューロンの数は、実施の形態に応じて適宜設定されてよい。隣接する層のニューロン同士は適宜結合され、各結合には重み（結合荷重）が設定されている。図５Ｃの例では、各ニューロンは、隣接する層の全てのニューロンと結合されている。しかしながら、ニューロンの結合は、このような例に限定されなくてもよく、実施の形態に応じて適宜設定されてよい。各ニューロンには閾値が設定されており、基本的には、各入力と各重みとの積の和が閾値を超えているか否かによって各ニューロンの出力が決定される。各層６１〜６３に含まれる各ニューロン間の結合の重み及び各ニューロンの閾値は、演算処理に利用される制御器６のパラメータの一例である。
【００９２】
制御器６の機械学習では、まず、第２学習処理部１１５は、各第３学習データセット７６について、第３環境情報７６１及び状態情報７６２を制御器６の入力層６１に入力し、各層６１〜６３のパラメータを利用して、制御器６の演算処理を実行する。この演算処理の結果、第２学習処理部１１５は、第３環境情報７６１及び状態情報７６２から制御コマンドを導出した結果に対応する出力値を出力層６３から取得する。次に、第２学習処理部１１５は、取得した出力値と制御コマンド７６３との誤差を算出する。そして、第２学習処理部１１５は、算出される誤差の和が小さくなるように、制御器６のパラメータの値を調節する。
【００９３】
出力層６３から得られる出力値と制御コマンド７６３との誤差の和が閾値以下になるまで、第２学習処理部１１５は、制御器６のパラメータの値の調節を繰り返す。これにより、第２学習処理部１１５は、各第３学習データセット７６について、第３環境情報７６１及び状態情報７６２を入力層６１に入力すると、対応する制御コマンド７６３と一致する出力値を出力層６３から出力するように訓練された制御器６を構築することができる。
【００９４】
この機械学習の処理が完了した後、保存処理部１１６は、構築された学習済みの制御器６の構成（例えば、ニューラルネットワークの層数、各層におけるニューロンの個数、ニューロン同士の結合関係、各ニューロンの伝達関数）、及び演算パラメータ（例えば、各ニューロン間の結合の重み、各ニューロンの閾値）を示す第２学習結果データ１２８を生成する。そして、保存処理部１１６は、生成した第２学習結果データ１２８を記憶部１２に保存する。
【００９５】
なお、各第３学習データセット７６の第３環境情報７６１は、機械学習が完了した後の抽出器５を利用して、センサをシミュレートすることで生成された他のシミュレーションデータ７８から抽出することで得られてもよい。具体的には、第３データ取得部１１３は、シミュレーションデータ７０１と同様に生成されたシミュレーションデータ７８を取得する。機械学習済みの抽出器５がＲＡＭ上に展開されていない場合には、第３データ取得部１１３は、第１学習結果データ１２５を参照して、機械学習済みの抽出器５の設定を行う。次に、第３データ取得部１１３は、シミュレーションデータ７８を第１部分５１に入力し、第１部分５１及び第３部分５３のパラメータを利用して、抽出器５の演算処理を実行する。この演算処理の結果、シミュレーションデータ７８から環境情報を抽出した結果に対応する出力値が第３部分５３から出力される。第３データ取得部１１３は、この第３部分５３から出力される出力値を第３環境情報７６１として取得してもよい。
【００９６】
＜制御装置＞
次に、図６を用いて、本実施形態に係る制御装置２のソフトウェア構成の一例について説明する。図６は、本実施形態に係る制御装置２のソフトウェア構成の一例を模式的に例示する。
【００９７】
制御装置２の制御部２１は、記憶部２２に記憶された制御プログラム２２１をＲＡＭに展開する。そして、制御部２１は、ＲＡＭに展開された制御プログラム２２１をＣＰＵにより解釈及び実行して、各構成要素を制御する。これによって、図６に示されるとおり、本実施形態に係る制御装置２は、データ取得部２１１、情報抽出部２１２、コマンド決定部２１３、及び動作制御部２１４をソフトウェアモジュールとして備えるコンピュータとして動作する。すなわち、本実施形態では、制御装置２の各ソフトウェアモジュールも、上記学習装置１と同様に、制御部２１（ＣＰＵ）により実現される。
【００９８】
データ取得部２１１は、産業用ロボットＲのタスクを実行する環境を監視するセンサにより得られたセンサデータを取得する。本実施形態では、データ取得部２１１は、カメラＣＡにより得られた画像データ８０をセンサデータとして取得する。また、データ取得部２１１は、タスクを実行する際の産業用ロボットＲの状態に関する状態情報８３を取得する。
【００９９】
情報抽出部２１２は、第１学習結果データ１２５を保持することで、学習装置１により構築された機械学習済みの抽出器５を含んでいる。情報抽出部２１２は、第１学習結果データ１２５を参照して、機械学習済みの抽出器５の設定を行う。そして、情報抽出部２１２は、機械学習済みの抽出器５を利用して、タスクを実行する環境に関する環境情報８１を画像データ８０から抽出する。本実施形態では、情報抽出部２１２は、画像データ８０を第２部分５２に入力し、第２部分５２及び第３部分５３のパラメータを利用して、抽出器５の演算処理を実行する。この演算処理の結果、情報抽出部２１２は、環境情報８１に対応する出力値を第３部分５３から取得する。
【０１００】
コマンド決定部２１３は、第２学習結果データ１２８を保持することで、学習装置１により構築された機械学習済みの制御器６を含んでいる。コマンド決定部２１３は、第２学習結果データ１２８を参照して、機械学習済みの制御器６の設定を行う。そして、コマンド決定部２１３は、機械学習済みの制御器６を利用して、環境情報８１及び状態情報８３により示される条件下でタスクを産業用ロボットＲに実行させるための制御コマンド８５を決定する。本実施形態では、コマンド決定部２１３は、環境情報８１及び状態情報８３を入力層６１に入力し、各層６１〜６３のパラメータを利用して、制御器６の演算処理を実行する。この演算処理の結果、コマンド決定部２１３は、決定された制御コマンド８５に対応する出力値を出力層６３から取得する。動作制御部２１４は、決定された制御コマンド８５に基づいて、産業用ロボットＲの動作を制御する。
【０１０１】
＜その他＞
学習装置１及び制御装置２の各ソフトウェアモジュールに関しては後述する動作例で詳細に説明する。なお、本実施形態では、学習装置１及び制御装置２の各ソフトウェアモジュールがいずれも汎用のＣＰＵによって実現される例について説明している。しかしながら、以上のソフトウェアモジュールの一部又は全部が、１又は複数の専用のプロセッサにより実現されてもよい。また、学習装置１及び制御装置２それぞれのソフトウェア構成に関して、実施形態に応じて、適宜、ソフトウェアモジュールの省略、置換及び追加が行われてもよい。
【０１０２】
§３  動作例
［学習装置］
次に、学習装置１の動作例について説明する。本実施形態に係る学習装置１は、抽出器５の機械学習を実施する第１モード及び制御器６の機械学習を実施する第２モードの２つのモードのいずれかを選択し、選択されたモードで動作可能に構成されている。以下で説明する各モードにおける処理手順は、本発明の「学習方法」の一例である。ただし、必ずしも２つのモードに分かれていなければならない訳ではない。各モードは、適宜省略又は変更されてよい。また、以下で説明する処理手順は一例に過ぎず、各処理は可能な限り変更されてよい。更に、以下で説明する処理手順について、実施の形態に応じて、適宜、ステップの省略、置換、及び追加が可能である。
【０１０３】
＜抽出器の機械学習＞
まず、図７を用いて、本実施形態に係る学習装置１による抽出器５の機械学習（第１モード）の処理手順の一例について説明する。図７は、本実施形態に係る学習装置１による抽出器５の機械学習の処理手順の一例を示すフローチャートである。
【０１０４】
（ステップＳ１０１）
ステップＳ１０１では、制御部１１は、第１データ取得部１１１として動作し、シミュレーションデータ７０１及び第１環境情報７０２の組み合わせによりそれぞれ構成された複数の第１学習データセット７０を取得する。
【０１０５】
各第１学習データセット７０を取得する方法は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。例えば、シミュレータを用意し、様々な条件でセンサをシミュレートすることで、シミュレーションデータ７０１を生成することができる。シミュレータは、ロボット装置のタスクを実行する環境をシミュレート可能であれば、その種類は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。タスクの種類は、特に限定されなくてもよく、ロボット装置の種類に応じて適宜選択されてよい。シミュレータは、例えば、センサ、ロボット装置、ワーク等のオブジェクトを仮想空間上に配置し、仮想空間上でロボット装置にタスクの実行を模擬可能なソフトウェアである。タスクは、例えば、ワークの把持、把持したワークの解放等である。本実施形態では、産業用ロボットＲのタスクを実行する環境を監視するセンサとしてカメラＣＡが利用されている。そのため、シミュレータにより、カメラＣＡにより得られる撮影画像を模した画像データがシミュレーションデータ７０１として生成される。このとき、シミュレーションデータ７０１は、センサをシミュレートする条件をランダムに変更しながら生成されてよい。本実施形態では、シミュレーションの条件は、例えば、カメラＣＡの位置、カメラＣＡの視野（field of view）、カメラＣＡの焦点距離、照明条件、各領域に貼り付けるテクスチャの種類、産業用ロボットＲの属性、配置するワークの属性等である。
【０１０６】
また、シミュレーションの条件に応じて、第１環境情報７０２を適宜生成することができる。第１環境情報７０２は、ロボット装置のタスクを実行する環境に関するものであれば、その種類は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。第１環境情報７０２は、例えば、セグメンテーション情報、タスクの対象となるワークの属性に関する情報、タスクを実行する位置に関する情報、障害物の有無を示す情報、及び障害物の属性に関する情報の少なくともいずれかを含んでよい。セグメンテーション情報は、画像内に写る各対象物を識別することで、各対象物の領域を区分けした結果を示す。セグメンテーション情報は、各対象物を識別した結果に基づいて推定された各対象物の属性を示す情報を含んでもよい。ワークの属性に関する情報は、例えば、ワークの位置、形状、寸法、姿勢、重さ、温度等を示す。タスクを実行する位置に関する情報は、例えば、ワークを解放する位置を示す。障害物の属性に関する情報は、例えば、障害物の位置、形状、寸法、姿勢、重さ、温度等を示す。生成された第１環境情報７０２を対応するシミュレーションデータ７０１に組み合わせる（対応付ける）ことで、各第１学習データセット７０を生成することができる。
【０１０７】
各第１学習データセット７０は、コンピュータの動作により自動的に生成されてもよいし、オペレータの操作により手動的に生成されてもよい。また、各第１学習データセット７０の生成は、学習装置１により行われてもよいし、学習装置１以外の他のコンピュータにより行われてもよい。各第１学習データセット７０を学習装置１が生成する場合、制御部１１は、自動的に又はオペレータの操作により手動的に上記一連の処理を実行することで、複数の第１学習データセット７０を取得する。一方、各第１学習データセット７０を他のコンピュータが生成する場合、制御部１１は、例えば、ネットワーク、記憶媒体９１等を介して、他のコンピュータにより生成された複数の第１学習データセット７０を取得する。
【０１０８】
取得する第１学習データセット７０の件数は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。複数件の第１学習データセット７０を取得すると、制御部１１は、次のステップＳ１０２に処理を進める。
【０１０９】
（ステップＳ１０２）
ステップＳ１０２では、制御部１１は、第１学習処理部１１４として動作し、複数の第１学習データセット７０を利用して、抽出器５の機械学習を実施する。この機械学習では、制御部１１は、各第１学習データセットについて、シミュレーションデータ７０１から、対応する第１環境情報７０２と一致する環境情報を抽出するように抽出器５を訓練する。本ステップＳ１０２は、本発明の「第１訓練ステップ」の一例である。
【０１１０】
詳細には、まず、制御部１１は、処理対象となる抽出器５を用意する。用意する抽出器５の構成、各ニューロン間の結合の重みの初期値、及び各ニューロンの閾値の初期値は、テンプレートにより与えられてもよいし、オペレータの入力により与えられてもよい。また、再学習を行う場合には、制御部１１は、過去の機械学習を行うことで得られた学習結果データに基づいて、抽出器５を用意してもよい。
【０１１１】
次に、制御部１１は、ステップＳ１０１で取得した各第１学習データセット７０に含まれるシミュレーションデータ７０１を入力データとして利用し、対応する第１環境情報７０２を教師データとして利用して、抽出器５の第１部分５１及び第３部分５３の学習処理を実行する。この学習処理には、確率的勾配降下法等が用いられてよい。本実施形態では、この学習処理では、第２部分５２と第３部分５３との結合は無視される。
【０１１２】
例えば、第１のステップでは、制御部１１は、各第１学習データセット７０について、第１部分５１の最も入力側に配置された畳み込み層５１１にシミュレーションデータ７０１を入力し、入力側から順に各層（５１１〜５１３、５３１〜５３３）に含まれる各ニューロンの発火判定を行う。これにより、制御部１１は、シミュレーションデータ７０１から環境情報を抽出した結果に対応する出力値を第３部分５３の最も出力側に配置された畳み込み層５３３から取得する。第２のステップでは、制御部１１は、取得した出力値と対応する第１環境情報７０２との誤差を算出する。第３のステップでは、制御部１１は、誤差逆伝播（Back propagation）法により、算出した出力値の誤差を用いて、各ニューロン間の結合の重み及び各ニューロンの閾値それぞれの誤差を算出する。第４のステップでは、制御部１１は、算出した各誤差に基づいて、各ニューロン間の結合の重み及び各ニューロンの閾値それぞれの値の更新を行う。
【０１１３】
制御部１１は、上記第１〜第４のステップを繰り返すことで、各第１学習データセット７０について、シミュレーションデータ７０１を第１部分５１に入力すると、対応する第１環境情報７０２と一致する出力値が第３部分５３から出力されるように、第１部分５１及び第３部分５３それぞれのパラメータの値を調節する。換言すると、制御部１１は、各第１学習データセット７０について、第３部分５３の最も出力側に配置された畳み込み層５３３から得られる出力値と第１環境情報７０２との誤差の和が閾値以下になるまで、上記第１〜第４のステップによる第１部分５１及び第３部分５３のパラメータの値の調節を繰り返す。閾値は、実施の形態に応じて適宜設定されてよい。これにより、制御部１１は、各第１学習データセット７０について、シミュレーションデータ７０１を第１部分５１に入力すると、対応する第１環境情報７０２と一致する出力値を第３部分５３から出力するように訓練された抽出器５を構築することができる。この第１学習データセット７０を利用した機械学習が完了すると、制御部１１は、次のステップＳ１０３に処理を進める。
【０１１４】
（ステップＳ１０３）
ステップＳ１０３では、制御部１１は、第２データ取得部１１２として動作し、実データ７３１及び第２環境情報７３２の組み合わせによりそれぞれ構成された複数の第２学習データセット７３を取得する。
【０１１５】
各第２学習データセット７３を取得する方法は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。例えば、センサ、ロボット装置、ワーク等の実環境を用意し、ロボット装置がタスクを実行する様子をセンサにより様々な条件でモニタリングすることで、実データ７３１を取得することができる。本実施形態では、実データ７３１は、産業用ロボットＲのタスクを実行する環境をカメラＣＡにより撮影することで得られる画像データ（撮影画像）である。第２環境情報７３２の種類及び形式は、上記第１環境情報７０２と同様であってよい。実環境の条件に応じて、第２環境情報７３２を適宜生成することができる。生成された第２環境情報７３２を対応する実データ７３１に組み合わせる（対応付ける）ことで、各第２学習データセット７３を生成することができる。
【０１１６】
各第２学習データセット７３は、コンピュータの動作により自動的に生成されてもよいし、オペレータの操作により手動的に生成されてもよい。また、各第２学習データセット７３の生成は、学習装置１により行われてもよいし、学習装置１以外の他のコンピュータにより行われてもよい。各第２学習データセット７３を学習装置１が生成する場合、制御部１１は、自動的に又はオペレータの操作により手動的に上記一連の処理を実行することで、複数の第２学習データセット７３を取得する。一方、各第２学習データセット７３を他のコンピュータが生成する場合、制御部１１は、例えば、ネットワーク、記憶媒体９１等を介して、他のコンピュータにより生成された複数の第２学習データセット７３を取得する。
【０１１７】
取得する第２学習データセット７３の件数は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。複数件の第２学習データセット７３を取得すると、制御部１１は、次のステップＳ１０４に処理を進める。
【０１１８】
（ステップＳ１０４）
ステップＳ１０４では、制御部１１は、第１学習処理部１１４として動作し、複数の第２学習データセット７３を利用して、抽出器５の機械学習を実施する。この機械学習では、制御部１１は、各第２学習データセット７３について、実データ７３１から、対応する第２環境情報７３２と一致する環境情報を抽出するように抽出器５を訓練する。本ステップＳ１０４は、本発明の「第２訓練ステップ」の一例である。
【０１１９】
詳細には、まず、制御部１１は、上記ステップＳ１０２を実行した後、本ステップＳ１０４を実行する前に、第１部分５１の各パラメータの調節した値を第２部分５２の対応するパラメータに複製する。次に、制御部１１は、ステップＳ１０３で取得した各第２学習データセット７３に含まれる実データ７３１を入力データとして利用し、対応する第２環境情報７３２を教師データとして利用して、抽出器５の第２部分５２の学習処理を実行する。本実施形態では、この学習処理では、第１部分５１と第３部分５３との結合は無視され、第３部分５３のパラメータの値の調節は省略される。
【０１２０】
この学習処理の処理手順は、上記ステップＳ１０２と同様であってよい。すなわち、第１のステップでは、制御部１１は、各第２学習データセット７３について、第２部分５２の最も入力側に配置された畳み込み層５２１に実データ７３１を入力し、入力側から順に各層（５２１〜５２３、５３１〜５３３）に含まれる各ニューロンの発火判定を行う。これにより、制御部１１は、実データ７３１から環境情報を抽出した結果に対応する出力値を第３部分５３の最も出力側に配置された畳み込み層５３３から取得する。第２のステップでは、制御部１１は、取得した出力値と第２環境情報７３２との誤差を算出する。第３のステップでは、制御部１１は、誤差逆伝播法により、算出した出力値の誤差を用いて、第２部分５２における各ニューロン間の結合の重み及び各ニューロンの閾値それぞれの誤差を算出する。第４のステップでは、制御部１１は、算出した各誤差に基づいて、第２部分５２における各ニューロン間の結合の重み及び各ニューロンの閾値それぞれの値の更新を行う。
【０１２１】
制御部１１は、上記第１〜第４のステップを繰り返すことで、第３部分５３のパラメータの値は固定のまま、各第２学習データセット７３について、実データ７３１を第２部分５２に入力すると、対応する第２環境情報７３２と一致する出力値が第３部分５３から出力されるように、第２部分５２のパラメータの値を調節する。換言すると、制御部１１は、各第２学習データセット７３について、第３部分５３の最も出力側に配置された畳み込み層５３３から得られる出力値と第２環境情報７３２との誤差の和が閾値以下になるまで、上記第１〜第４のステップによる第２部分５２のパラメータの値の調節を繰り返す。閾値は、実施の形態に応じて適宜設定されてよい。これにより、制御部１１は、各第２学習データセット７３について、実データ７３１を第２部分５２に入力すると、対応する第２環境情報７３２と一致する出力値を第３部分５３から出力するように訓練された抽出器５を構築することができる。この第２学習データセット７３を利用した機械学習が完了すると、制御部１１は、次のステップＳ１０５に処理を進める。
【０１２２】
（ステップＳ１０５）
ステップＳ１０５では、制御部１１は、保存処理部１１６として動作し、機械学習済みの抽出器５に関する情報を第１学習結果データ１２５として記憶部１２に保存する。本実施形態では、制御部１１は、上記ステップＳ１０２及びＳ１０４により、第１学習データセット７０及び第２学習データセット７３を利用して、抽出器５の機械学習を実施している。つまり、抽出器５の機械学習を実施することは、上記ステップＳ１０２及びＳ１０４を含んでいる。ステップＳ１０５では、制御部１１は、ステップＳ１０２及びＳ１０４の機械学習により構築された抽出器５の構成及びパラメータを示す情報を第１学習結果データ１２５として生成する。そして、制御部１１は、生成した第１学習結果データ１２５を記憶部１２に保存する。これにより、制御部１１は、本実施形態に係る抽出器５の機械学習（第１モード）の一連の処理を終了する。
【０１２３】
なお、第１学習結果データ１２５の保存先は、記憶部１２に限られなくてもよい。制御部１１は、例えば、ＮＡＳ（Network Attached Storage）等のデータサーバに第１学習結果データ１２５を格納してもよい。第１学習結果データ１２５は、第１部分５１に関する情報を含んでいてもよいし、含んでいなくてもよい。また、制御部１１は、生成した第１学習結果データ１２５を任意のタイミングで制御装置２に転送してよい。制御装置２は、学習装置１から転送を受け付けることで第１学習結果データ１２５を取得してもよいし、学習装置１又はデータサーバにアクセスすることで第１学習結果データ１２５を取得してもよい。第１学習結果データ１２５は、制御装置２に予め組み込まれてもよい。
【０１２４】
更に、制御部１１は、上記ステップＳ１０１〜Ｓ１０５の処理を定期的に繰り返すことで、第１学習結果データ１２５を定期的に更新してもよい。この繰り返す際には、第１学習データセット７０及び第２学習データセット７３の変更、修正、追加、削除等が適宜実行されてよい。そして、制御部１１は、更新した第１学習結果データ１２５を学習処理の実行毎に制御装置２に転送することで、制御装置２に保持される第１学習結果データ１２５を定期的に更新してもよい。
【０１２５】
＜制御器の機械学習＞
次に、図８を用いて、本実施形態に係る学習装置１による制御器６の機械学習（第２モード）の処理手順の一例について説明する。図８は、本実施形態に係る学習装置１による制御器６の機械学習の処理手順の一例を示すフローチャートである。
【０１２６】
（ステップＳ２０１）
ステップＳ２０１では、制御部１１は、第３データ取得部１１３として動作し、第３環境情報７６１及び状態情報７６２並びに制御コマンド７６３の組み合わせによりそれぞれ構成された複数の第３学習データセット７６を取得する。
【０１２７】
各第３学習データセット７６を取得する方法は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。例えば、上記シミュレータ又は実環境を用意し、用意したシミュレータ又は実環境の条件に応じて、第３環境情報７６１を適宜生成することができる。第３環境情報７６１の種類及び形式は、上記第１環境情報７０２及び第２環境情報７３２と同様であってよい。
【０１２８】
或いは、第３環境情報７６１は、機械学習が完了した後の抽出器５を利用して、他のシミュレーションデータ７８から抽出することで生成されてもよい。具体的には、シミュレーションデータ７８を第１部分５１に入力し、入力側から順に各層（５１１〜５１３、５３１〜５３３）に含まれる各ニューロンの発火判定を行う。これにより、シミュレーションデータ７８から環境情報を抽出した結果に対応する出力値が第３部分５３から出力される。この第３部分５３から出力される出力値を第３環境情報７６１として取得してもよい。なお、シミュレーションデータ７８は、上記シミュレーションデータ７０１と同様の方法で取得されてよい。また、機械学習済みの抽出器５の設定は、第１学習結果データ１２５を参照を参照することで行われてよい。
【０１２９】
また、シミュレーション又は実環境の条件に応じて、状態情報７６２を適宜生成することができる。更に、シミュレーション又は実環境の条件及び実行するタスクに応じて、制御コマンド７６３を適宜生成することができる。状態情報７６２は、例えば、産業用ロボットＲの駆動部の位置、向き、角度、加速度等を含んでよい。制御コマンド７６３は、例えば、産業用ロボットＲの駆動量（例えば、サーボモータの駆動量）等を規定してよい。生成された状態情報７６２及び制御コマンド７６３を対応する第３環境情報７６１に組み合わせる（対応付ける）ことで、各第３学習データセット７６を生成することができる。
【０１３０】
各第３学習データセット７６は、コンピュータの動作により自動的に生成されてもよいし、オペレータの操作により手動的に生成されてもよい。また、各第３学習データセット７６の生成は、学習装置１により行われてもよいし、学習装置１以外の他のコンピュータにより行われてもよい。各第３学習データセット７６を学習装置１が生成する場合、制御部１１は、自動的に又はオペレータの操作により手動的に上記一連の処理を実行することで、複数の第３学習データセット７６を取得する。一方、各第３学習データセット７６を他のコンピュータが生成する場合、制御部１１は、例えば、ネットワーク、記憶媒体９１等を介して、他のコンピュータにより生成された複数の第３学習データセット７６を取得する。
【０１３１】
取得する第３学習データセット７６の件数は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。複数件の第３学習データセット７６を取得すると、制御部１１は、次のステップＳ２０２に処理を進める。
【０１３２】
（ステップＳ２０２）
ステップＳ２０２では、制御部１１は、第２学習処理部１１５として動作し、複数の第３学習データセット７６を利用して、制御器６の機械学習を実施する。この機械学習では、制御部１１は、各第３学習データセット７６について、第３環境情報７６１及び状態情報７６２が入力されると、対応する制御コマンド７６３と一致する制御コマンドを出力するように制御器６を訓練する。本ステップＳ２０２は、本発明の「制御器を訓練する訓練ステップ」の一例である。
【０１３３】
詳細には、まず、制御部１１は、処理対象となる制御器６を用意する。用意する制御器６の構成、各ニューロン間の結合の重みの初期値、及び各ニューロンの閾値の初期値は、テンプレートにより与えられてもよいし、オペレータの入力により与えられてもよい。また、再学習を行う場合には、制御部１１は、過去の機械学習を行うことで得られた学習結果データに基づいて、制御器６を用意してもよい。
【０１３４】
次に、制御部１１は、ステップＳ２０１で取得した各第３学習データセット７６に含まれる第３環境情報７６１及び状態情報７６２を入力データとして利用し、対応する制御コマンド７６３を教師データとして利用して、制御器６の学習処理を実行する。この学習処理は、上記ステップＳ１０２及びＳ１０４と同様であってよい。すなわち、第１のステップでは、制御部１１は、各第３学習データセット７６について、第３環境情報７６１及び状態情報７６２を入力層６１に入力し、入力側から順に各層６１〜６３に含まれる各ニューロンの発火判定を行う。これにより、制御部１１は、第３環境情報７６１及び状態情報７６２から制御コマンドを導出した結果に対応する出力値を出力層６３から取得する。第２のステップでは、制御部１１は、取得した出力値と制御コマンド７６３との誤差を算出する。第３のステップでは、制御部１１は、誤差逆伝播法により、算出した出力値の誤差を用いて、制御器６における各ニューロン間の結合の重み及び各ニューロンの閾値それぞれの誤差を算出する。第４のステップでは、制御部１１は、算出した各誤差に基づいて、制御器６における各ニューロン間の結合の重み及び各ニューロンの閾値それぞれの値の更新を行う。
【０１３５】
制御部１１は、上記第１〜第４のステップを繰り返すことで、各第３学習データセット７６について、第３環境情報７６１及び状態情報７６２を入力すると、対応する制御コマンド７６３と一致する出力値を出力するように、制御器６のパラメータの値を調節する。換言すると、制御部１１は、各第３学習データセット７６について、出力層６３から得られる出力値と制御コマンド７６３との誤差の和が閾値以下になるまで、上記第１〜第４のステップによる制御器６のパラメータの値の調節を繰り返す。閾値は、実施の形態に応じて適宜設定されてよい。これにより、制御部１１は、各第３学習データセット７６について、第３環境情報７６１及び状態情報７６２を入力すると、対応する制御コマンド７６３と一致する出力値を出力するように訓練された制御器６を構築することができる。この制御器６の機械学習が完了すると、制御部１１は、次のステップＳ２０３に処理を進める。
【０１３６】
（ステップＳ２０３）
ステップＳ２０３では、制御部１１は、保存処理部１１６として動作し、機械学習済みの制御器６に関する情報を第２学習結果データ１２８として記憶部１２に保存する。本実施形態では、制御部１１は、ステップＳ２０２の機械学習により構築された制御器６の構成及びパラメータを示す情報を第２学習結果データ１２８として生成する。そして、制御部１１は、生成した第２学習結果データ１２８を記憶部１２に保存する。これにより、制御部１１は、本実施形態に係る制御器６の機械学習（第２モード）の一連の処理を終了する。
【０１３７】
なお、第２学習結果データ１２８の保存先は、上記第１学習結果データ１２５と同様に、記憶部１２に限られなくてもよい。また、第２学習結果データ１２８は、上記第１学習結果データ１２５と同様に、任意のタイミングで制御装置２に組み込まれてよい。更に、制御部１１は、上記ステップＳ２０１〜Ｓ２０３の処理を定期的に繰り返すことで、第２学習結果データ１２８を定期的に更新してもよい。この繰り返す際には、第３学習データセット７６の変更、修正、追加、削除等が適宜実行されてよい。そして、制御部１１は、更新した第２学習結果データ１２８を学習処理の実行毎に制御装置２に転送することで、制御装置２に保持される第２学習結果データ１２８を定期的に更新してもよい。
【０１３８】
［制御装置］
次に、図９を用いて、制御装置２の動作例について説明する。図９は、本実施形態に係る制御装置２の処理手順の一例を示すフローチャートである。ただし、以下で説明する処理手順は一例に過ぎず、各処理は可能な限り変更されてよい。また、以下で説明する処理手順について、実施の形態に応じて、適宜、ステップの省略、置換、及び追加が可能である。
【０１３９】
（ステップＳ３０１）
ステップＳ３０１では、制御部２１は、データ取得部２１１として動作し、産業用ロボットＲのタスクを実行する環境を監視するセンサにより得られたセンサデータを取得する。本実施形態では、制御部２１は、外部インタフェース２４を介して、カメラＣＡにより産業用ロボットＲの環境を撮影することで得られた画像データ８０をセンサデータとして取得する。画像データ８０は、動画像データであってもよいし、静止画像データであってもよい。
【０１４０】
また、制御部２１は、タスクを実行する際の産業用ロボットＲの状態に関する状態情報８３を取得する。例えば、制御部２１は、外部インタフェース２４を介して産業用ロボットＲに現在状態を問い合わせることで、状態情報８３を取得してもよい。状態情報８３の種類及び形式は、上記状態情報７６２と同様であってよい。画像データ８０及び状態情報８３を取得すると、制御部２１は、次のステップＳ３０２に処理を進める。
【０１４１】
ただし、画像データ８０及び状態情報８３を取得する経路は、このような例に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。例えば、カメラＣＡ及び産業用ロボットＲは、制御装置２と異なる他のコンピュータに接続されてよい。この場合、制御装置２は、他のコンピュータからの画像データ８０及び状態情報８３の送信を受け付けることで、画像データ８０及び状態情報８３を取得してもよい。
【０１４２】
（ステップＳ３０２）
ステップＳ３０２では、制御部２１は、情報抽出部２１２として動作し、機械学習済みの抽出器５を利用して、タスクを実行する環境に関する環境情報８１を画像データ８０から抽出する。本実施形態では、制御部２１は、第１学習結果データ１２５を参照して、機械学習済みの抽出器５の設定を行う。そして、制御部２１は、画像データ８０を第２部分５２に入力し、入力側から順に各層（５２１〜５２３、５３１〜５３３）に含まれる各ニューロンの発火判定を行う。これにより、制御部２１は、画像データ８０から環境情報８１を抽出した結果に対応する出力値を第３部分５３から取得する。環境情報８１を取得すると、制御部２１は、次のステップＳ３０３に処理を進める。
【０１４３】
（ステップＳ３０３）
ステップＳ３０３では、制御部２１は、コマンド決定部２１３として動作し、機械学習済みの制御器６を利用して、環境情報８１及び状態情報８３により示される条件下でタスクを産業用ロボットＲに実行させるための制御コマンド８５を決定する。本実施形態では、制御部２１は、第２学習結果データ１２８を参照して、機械学習済みの制御器６の設定を行う。そして、制御部２１は、環境情報８１及び状態情報８３を入力層６１に入力し、入力側から順に各層６１〜６３に含まれる各ニューロンの発火判定を行う。これにより、制御部２１は、環境情報８１及び状態情報８３から制御コマンド８５を導出した結果に対応する出力値を出力層６３から取得する。この出力値を得ることで、制御部２１は、制御コマンド８５を決定する。制御コマンド８５を決定すると、制御部２１は、次のステップＳ３０４に処理を進める。
【０１４４】
（ステップＳ３０４）
ステップＳ３０４では、制御部２１は、動作制御部２１４として動作し、決定した制御コマンド８５に基づいて、産業用ロボットＲの動作を制御する。本実施形態では、制御部２１は、外部インタフェース２４を介して、制御コマンド８５に対応する制御信号を産業用ロボットＲに送信することで、制御コマンド８５により規定される動作を産業用ロボットＲに実行させる。これにより、産業用ロボットＲの動作を制御すると、制御部２１は、本動作例に係る処理を終了する。この後、制御部２１は、ステップＳ３０１から一連の処理を繰り返すことで、産業用ロボットＲの動作を継続的に制御してもよい。
【０１４５】
［特徴］
以上のように、本実施形態では、産業用ロボットＲの動作を制御するための制御モジュールが、抽出器５及び制御器６の２つの構成要素に分割されている。本実施形態に係る学習装置１は、ステップＳ１０１〜Ｓ１０４の一連の処理により、シミュレーションデータ７０１及び実データ７３１の両方を利用して、両データ（７０１、７３１）から共通の特徴（環境情報）を抽出するように抽出器５を構築する。これにより、シミュレーションデータ７０１と実データ７３１との間の乖離を吸収した上で、ステップＳ１０２によるシミュレーションデータ７０１を利用した第１訓練ステップの成果を、ステップＳ１０４による実データ７３１を利用した第２訓練ステップに反映させることができる。そのため、機械学習に利用するシミュレーションデータ７０１（第１学習データセット７０）の件数が十分であれば、機械学習に利用する実データ７３１（第２学習データセット７３）の件数が少なくても、実環境で得られるセンサデータから環境情報を精度よく抽出可能な機械学習済みの抽出器５を構築することができる。
【０１４６】
加えて、センサデータから抽出される特徴（環境情報）は、シミュレーションにより実環境と同様に得ることが可能である。そのため、ステップＳ２０１及びＳ２０２では、産業用ロボットＲの実機を用いず、シミュレータを用いても、得られた第３学習データセット７６を利用した機械学習により、実環境で運用可能な機械学習済みの制御器６を構築することができる。したがって、本実施形態によれば、抽出器５及び制御器６の２つの構成要素に制御モジュールを分離することで、学習データの少なくとも一部に（好ましくは、大部分で）シミュレーションデータ７０１を採用することができるようになるため、機械学習に利用する学習データを収集するのにかかるコストを低減することができる。更に、この機械学習により構築された抽出器５及び制御器６により、実環境で運用可能な制御モジュールを構成することができる。よって、本実施形態によれば、産業用ロボットＲを制御する能力を制御モジュールに習得させるための機械学習に利用する学習データを収集するコストを低減しつつ、その機械学習により実環境で運用可能な制御モジュールを構築することができる。また、本実施形態に係る制御装置２は、そのように構築された制御モジュールを利用して、ステップＳ３０１〜Ｓ３０４の処理を実行することで、産業用ロボットＲの動作を実環境で適切に制御することができる。
【０１４７】
なお、本実施形態では、ステップＳ１０１において、シミュレーションの条件をランダムに変更しながら生成されたシミュレーションデータ７０１を取得してもよい。これにより、ステップＳ１０２では、そのシミュレーションデータ７０１を含む各第１学習データセット７０を利用した機械学習を実施することで、環境の変更にロバストな抽出器５を構築することができる。また、本実施形態に係る学習装置１は、上記ステップＳ１０４において、第３部分５３のパラメータの値は固定のまま、第２部分５２のパラメータの値を調節する。これにより、シミュレーションデータ７０１と実データ７３１との差分を入力側の構成（第１部分５１及び第２部分５２）で吸収しつつ、ステップＳ１０４において更新するパラメータの総数を低減することができるため、学習処理にかかる計算量を抑えることができる。
【０１４８】
また、本実施形態によれば、制御モジュールを１つの学習モデルにより構築する場合に比べて、抽出器５及び制御器６の構成は簡易である。そのため、ステップＳ１０２、Ｓ１０４及びＳ２０２の学習処理並びにステップＳ３０２及びＳ３０３のコマンド決定処理の計算コストを抑えることができる。
【０１４９】
更に、本実施形態では、抽出器５の学習処理（ステップＳ１０２、Ｓ１０４）及び制御器６の学習処理（ステップＳ２０２）を個別に実施することができる。そのため、抽出器５のみを入れ替え又は再学習することができ、これにより、産業用ロボットＲを利用する環境の変更に適応することができる。また、制御器６のみを入れ替え又は再学習することができ、これにより、産業用ロボットＲの変更に適応することができる。したがって、本実施形態によれば、制御モジュール全体を入れ替えるのではなく、抽出器５及び制御器６のいずれかを入れ替えることで、制御装置２を実環境の変更に適応させることができる。よって、制御装置２を実環境の変更に適応させるコストを低減することができる。
【０１５０】
§４  変形例
以上、本発明の実施の形態を詳細に説明してきたが、前述までの説明はあらゆる点において本発明の例示に過ぎない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。例えば、以下のような変更が可能である。なお、以下では、上記実施形態と同様の構成要素に関しては同様の符号を用い、上記実施形態と同様の点については、適宜説明を省略した。以下の変形例は適宜組み合わせ可能である。
【０１５１】
＜４．１＞
上記実施形態では、抽出器５には畳み込みニューラルネットワークが利用され、制御器６には多層構造の全結合ニューラルネットワークが用いられている。しかしながら、抽出器５及び制御器６それぞれを構成するニューラルネットワークの構造及び種類は、このような例に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。例えば、抽出器５及び制御器６それぞれには、再帰型ニューラルネットワークが用いられてもよい。
【０１５２】
また、抽出器５及び制御器６それぞれを構成する学習モデルは、ニューラルネットワークに限られなくてもよく、実施の形態に応じて適宜選択されてよい。抽出器５及び制御器６それぞれの学習モデルには、例えば、サポートベクタマシン等のニューラルネットワーク以外の学習モデルが用いられてよい。また、上記実施形態では、各学習結果データ（１２５、１２８）は、学習済みのニューラルネットワークの構成を示す情報を含んでいる。しかしながら、各学習結果データ（１２５、１２８）の構成は、このような例に限定されなくてもよく、学習済みの抽出器５及び制御器６それぞれの設定に利用可能であれば、実施の形態に応じて適宜決定されてよい。例えば、抽出器５及び制御器６それぞれにおけるニューラルネットワークの構成が各装置で共通化されている場合、各学習結果データ（１２５、１２８）は、学習済みのニューラルネットワークの構成を示す情報を含んでいなくてもよい。
【０１５３】
＜４．２＞
上記実施形態に係る各情報処理（図７〜図９）について、実施の形態に応じて、適宜、ステップの省略、置換、及び追加が可能である。例えば、ステップＳ１０１がステップＳ１０２の前に実行され、ステップＳ１０３がステップＳ１０４の前に実行されるのであれば、ステップＳ１０１〜Ｓ１０４の処理順序は適宜変更されてよい。上記ステップＳ１０４では、第３部分５３のパラメータの値を固定するのではなく、ステップＳ１０２と同様に、第２部分５２及び第３部分５３のパラメータの値を調節してもよい。上記ステップＳ３０１における状態情報８３を取得する処理は、ステップＳ３０３の処理を実行するまでに完了していればよい。また、例えば、第２訓練ステップ（ステップＳ１０４）は、第１訓練ステップ（ステップＳ１０２）の前に実行されてもよい。この場合、制御部１１は、第２訓練ステップ（ステップＳ１０４）を実行することで、第２部分５２のパラメータの値を調節する。この第２訓練ステップでは、第３部分５３のパラメータの値は、上記実施形態と同様に固定のままであってもよいし、第２部分５２と共に調節されてもよい。第２訓練ステップを実行した後、制御部１１は、第２部分５２の各パラメータの調節した値を第１部分５１の対応するパラメータに複製する。続いて、制御部１１は、第１訓練ステップ（ステップＳ１０２）を実行することで、第１部分５１のパラメータの値を調節する。この第１訓練ステップでは、第３部分５３のパラメータの値は、上記実施形態と同様に第１部分５１と共に調節されてもよいし、固定のままであってもよい。第１訓練ステップを実行した後、制御部１１は、第１部分５１の各パラメータの調節した値を第２部分５２の対応するパラメータに複製する。これにより、シミュレーションデータ７０１を利用した機械学習の成果を実データ７３１を利用した機械学習に反映させることができる。
【０１５４】
＜４．３＞
上記実施形態では、抽出器５の出力は環境情報に直接的に対応し、制御器６の出力は制御コマンドに直接的に対応することを想定している。しかしながら、抽出器５及び制御器６の出力形式は、このような例に限定されなくてもよい。上記実施形態において、抽出器５の出力値に対して何らかの情報処理を実行することで環境情報が導出されてよい。同様に、制御器６の出力値に対して何らかの情報処理を実行することで制御コマンドが導出されてもよい。
【０１５５】
また、上記実施形態では、各環境情報（７０２、７３２、７６１）は、ニューラルネットワークの最終層（畳み込み層５３３）の出力に対応している。しかしながら、各環境情報（７０２、７３２、７６１）の形式は、このような例に限定されなくてもよい。上記実施形態に係る学習装置１は、上記ステップＳ１０４において、第３部分５３のパラメータの値は固定のまま、第２部分５２のパラメータの値を調節する。これにより、シミュレーションデータ７０１と実データ７３１との差分を入力側の構成（第１部分５１及び第２部分５２）で吸収しつつ、第１部分５１及び第２部分５２の出力が共通の特徴空間に写像されるようにニューラルネットワークを構築することができる。そこで、このニューラルネットワークにおいて、共通の特徴空間を構築する中間層から出力される特徴量を各環境情報（７０２、７３２、７６１）として利用してもよい。例えば、各環境情報（７０２、７３２、７６１）のうち少なくとも第３環境情報７６１は、ニューラルネットワークの中間層から出力される特徴量で表現されてもよい。
【０１５６】
図１０及び図１１は、ニューラルネットワークの中間層から出力される特徴量で環境情報を表現する変形例の一例を示す。図１０は、本変形例に係る学習装置１において第３環境情報７６１Ａを導出する過程の一例を模式的に例示する。図１１は、本変形例に係る制御装置２において環境情報８１Ａを導出する過程の一例を模式的に例示する。図１０及び図１１の変形例は、第３環境情報７６１Ａ及び環境情報８１Ａが第３部分５３の全結合層５３１の出力に対応している点を除き、上記実施形態と同様である。
【０１５７】
図１０に示されるとおり、本変形例に係る学習装置１は、上記ステップＳ２０１において、第３環境情報７６１Ａ及び状態情報７６２並びに制御コマンド７６３の組み合わせによりそれぞれ構成された複数の第３学習データセット７６Ａを取得する。シミュレーションデータ７８を第１部分５１に入力し、入力側から順に各層（５１１〜５１３、５３１）に含まれる各ニューロンの発火判定を行う。これにより、全結合層５３１から出力される出力値が第３環境情報７６１Ａとして取得される。上記ステップＳ２０２において、制御部１１は、このように取得された複数の第３学習データセット７６Ａを利用して、制御器６Ａの機械学習を実施する。制御器６Ａの構成は、上記実施形態に係る制御器６と同様である。上記ステップＳ２０３において、制御部１１は、機械学習済みの制御器６Ａの構成及びパラメータを示す情報を第２学習結果データ１２８Ａとして記憶部１２に保存する。
【０１５８】
一方、図１１に示されるとおり、本変形例に係る制御装置２は、このように構築された機械学習済みの制御器６Ａを利用する。具体的に、上記ステップＳ３０２において、制御部２１は、画像データ８０を第２部分５２に入力し、入力側から順に各層（５２１〜５２３、５３１）に含まれる各ニューロンの発火判定を行う。これにより、制御部２１は、全結合層５３１から出力される出力値を環境情報８１Ａとして取得する。上記ステップＳ３０３において、制御部２１は、第２学習結果データ１２８Ａを参照して、機械学習済みの制御器６Ａの設定を行う。そして、制御部２１は、環境情報８１Ａ及び状態情報８３を入力層６１に入力し、入力側から順に各層６１〜６３に含まれる各ニューロンの発火判定を行う。これにより、制御部２１は、環境情報８１Ａ及び状態情報８３から制御コマンド８５を導出した結果に対応する出力値を出力層６３から取得する。これにより、本変形例では、ニューラルネットワークの中間層から出力される特徴量で表現された環境情報を利用して、上記実施形態と同様に動作することができる。
【０１５９】
＜４．４＞
上記実施形態では、産業用ロボットＲの環境を監視するセンサとして、カメラＣＡが利用されている。しかしながら、産業用ロボットＲの環境を監視するセンサは、このような例に限定されなくてもよい。センサは、例えば、カメラ、圧力センサ、ロードセル及びこれらの組み合わせにより構成されてよい。シミュレーションデータ７０１及び実データ７３１は、利用するセンサに応じて適宜取得されてよい。
【０１６０】
＜４．５＞
上記実施形態では、制御対象のロボット装置として、産業用ロボットＲを例示している。しかしながら、制御対象のロボット装置は、自動的に駆動可能に構成された少なくとも１つの駆動部を有している装置であれば、その種類は、このような例に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。ロボット装置には、上記産業用ロボットＲの他、例えば、自律型ロボット、自動運転動作を実行可能に構成された移動体（例えば、ドローン等の飛行体、自動車等の車両）等が採用されてよい。センサは、ロボット装置のタスクを実行する環境をモニタリング（又はセンシング）可能な装置であれば、その種類は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。センサには、例えば、カメラ、ＬＩＤＡＲセンサ、サーモセンサ、圧力センサ、ロードセル等が採用されてよい。センサデータ（シミュレーションデータ、実データ）の種類は、センサの種類に応じて適宜選択されてよい。センサデータは、例えば、画像（例えば、ＲＧＢ画像、深度画像等）データ、ＬＩＤＡＲセンサによる測定データ、サーモデータ、圧力データ等であってよい。
【０１６１】
図１２は、本発明が適用される他の場面の一例として、ロボット装置として自律型ロボットＲＢを採用した例を示す。自律型ロボットＲＢは、自律的に動作可能に構成される。自律型ロボットＲＢは、例えば、調理をするように構成されてよい。本変形例に係る学習装置１Ｂは、自律型ロボットＲＢの動作を制御するための抽出器及び制御器を機械学習により構築するように構成されたコンピュータである。本変形例に係る制御装置２Ｂは、学習装置１Ｂにより構築された抽出器及び制御器を利用して、自律型ロボットＲＢの動作を制御するように構成されたコンピュータである。取り扱うセンサ及び各情報の種類が相違し得る点を除き、本変形例に係る学習装置１Ｂは上記実施形態に係る学習装置１と同様に構成されてよく、本変形例に係る制御装置２Ｂは上記実施形態に係る制御装置２と同様に構成されてよい。
【０１６２】
自律型ロボットＲＢの環境を監視するセンサは、例えば、カメラ、サーモセンサ、マイクロフォン及びこれらの組み合わせにより構成されてよい。各環境情報は、セグメンテーション情報及びタスクの実行に関連する対象物の属性に関する情報の少なくともいずれかを含んでよい。タスクが調理である場合、タスクの実行に関連する対象物は、例えば、食材、調理器具等である。対象物は、単なる物だけではなく、人物を含んでもよい。状態情報は、例えば、自律型ロボットＲＢの駆動部の位置、向き、角度、加速度等を含んでよい。制御コマンドは、自律型ロボットＲＢの駆動量、出力音声及び画面表示の少なくともいずれかを規定してよい。本変形例によれば、自律型ロボットＲＢの動作を制御するための制御モジュールを構築することができる。なお、音声出力及び画面表示を行う場合、自律型ロボットＲＢは、対応する出力装置（例えば、スピーカ、ディスプレイ）を備える。
【０１６３】
図１３は、本発明が適用される他の場面の一例として、自動運転動作を実行可能に構成された車両ＲＣをロボット装置として採用した例を示す。車両ＲＣは、移動体の位置例である。車両ＲＣは、アクセル、ブレーキ、ハンドル、ライト、クラクション等の一般的な車両の構成を備えている。本変形例に係る学習装置１Ｃは、車両ＲＣの動作を制御するための抽出器及び制御器を機械学習により構築するように構成されたコンピュータである。本変形例に係る制御装置２Ｃは、学習装置１Ｃにより構築された抽出器及び制御器を利用して、車両ＲＣの動作を制御するように構成されたコンピュータである。取り扱うセンサ及び各情報の種類が相違し得る点を除き、本変形例に係る学習装置１Ｃは上記実施形態に係る学習装置１と同様に構成されてよく、本変形例に係る制御装置２Ｃは上記実施形態に係る制御装置２と同様に構成されてよい。
【０１６４】
車両ＲＣの環境を監視するセンサは、例えば、カメラ、ＬＩＤＡＲ（ライダ）センサ及びこれらの組み合わせにより構成されてよい。各環境情報は、例えば、移動体の進行する通路に関する情報及び移動体の進行方向に存在する対象物に関する情報の少なくともいずれかを含んでよい。本変形例では、移動体の進行する通路は、車両ＲＣが走行可能な道路である。また、移動体の進行方向に存在する対象物は、例えば、信号機、障害物（人、物）等である。状態情報は、例えば、移動体の移動状態に関する情報等を含んでよい。本変形例では、状態情報は、例えば、車両ＲＣのアクセルの現在量、ブレーキの現在量、ハンドルの現在の操舵角、ライトの点灯の有無、クラクションの使用の有無等を含んでよい。制御コマンドは、例えば、車両ＲＣのアクセル量、ブレーキ量、ハンドルの操舵角、ライトの点灯及びクラクションの使用の少なくともいずれかを規定してよい。本変形例によれば、車両ＲＣの動作を制御するための制御モジュールを構築することができる。
【符号の説明】
【０１６５】
１００…制御システム、
１…学習装置、
１１…制御部、１２…記憶部、１３…通信インタフェース、
１４…入力装置、１５…出力装置、１６…ドライブ、
１１１…第１データ取得部、１１２…第２データ取得部、
１１３…第３データ取得部、
１１４…第１学習処理部、１１５…第２学習処理部、
１１６…保存処理部、
１２１…学習プログラム、
１２５…第１学習結果データ、１２８…第２学習結果データ、
２…制御装置、
２１…制御部、２２…記憶部、２３…通信インタフェース、
２４…外部インタフェース、
２５…入力装置、２６…出力装置、２７…ドライブ、
２１１…データ取得部、２１２…情報抽出部、
２１３…コマンド決定部、２１４…動作制御部、
２２１…制御プログラム、
５…抽出器、
５１…第１部分、
５１１…畳み込み層、５１２…プーリング層、
５１３…全結合層、
５２…第２部分、
５２１…畳み込み層、５２２…プーリング層、
５２３…全結合層、
５３…第３部分、
５３１…全結合層、５３２…アップサンプリング層、
５３３…畳み込み層、
６…制御器、
６１…入力層、６２…中間（隠れ）層、６３…出力層、
７０…第１学習データセット、
７０１…シミュレーションデータ（訓練データ）、
７０２…第１環境情報（正解データ）、
７３…第２学習データセット、
７３１…実データ（訓練データ）、
７３２…第２環境情報（正解データ）、
７６…第３学習データセット、
７６１…第３環境情報（訓練データ）、
７６２…状態情報（訓練データ）、
７６３…制御コマンド（正解データ）、
８０…画像データ（センサデータ）、
８１…環境情報、
８３…状態情報、８５…制御コマンド、
９１・９２…記憶媒体、
ＣＡ…カメラ、Ｒ…産業用ロボット（ロボット装置）
【図１】
2020057161.tif 000003
【図２】
2020057161.tif 000004
【図３】
2020057161.tif 000005
【図４】
2020057161.tif 000006
【図５Ａ】
2020057161.tif 000007
【図５Ｂ】
2020057161.tif 000008
【図５Ｃ】
2020057161.tif 000009
【図６】
2020057161.tif 000010
【図７】
2020057161.tif 000011
【図８】
2020057161.tif 000012
【図９】
2020057161.tif 000013
【図１０】
2020057161.tif 000014
【図１１】
2020057161.tif 000015
【図１２】
2020057161.tif 000016
【図１３】
2020057161.tif 000017