(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-07-25
(45)【発行日】2022-08-02
(54)【発明の名称】学習装置、制御装置、学習方法、及び学習プログラム
(51)【国際特許分類】
G05B 19/4155 20060101AFI20220726BHJP
【FI】
G05B19/4155 V
(21)【出願番号】P 2018186800
(22)【出願日】2018-10-01
【審査請求日】2020-12-14
(73)【特許権者】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】100124039
【氏名又は名称】立花 顕治
(74)【代理人】
【識別番号】100179213
【氏名又は名称】山下 未知子
(74)【代理人】
【識別番号】100170542
【氏名又は名称】桝田 剛
(72)【発明者】
【氏名】山口 雄紀
(72)【発明者】
【氏名】林 剣之介
(72)【発明者】
【氏名】傅 健忠
(72)【発明者】
【氏名】大川 洋平
(72)【発明者】
【氏名】中島 千智
(72)【発明者】
【氏名】柴田 義也
【審査官】臼井 卓巳
(56)【参考文献】
【文献】特表2010-527086(JP,A)
【文献】特開2012-043225(JP,A)
【文献】特開2016-107346(JP,A)
【文献】特開2017-185577(JP,A)
【文献】特開2018-136767(JP,A)
【文献】米国特許第09811074(US,B1)
【文献】韓国公開特許第10-2017-0052870(KR,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/4069-19/4155
A61H 3/00
B25J 9/10-13/00
G06N 3/00-20/00
G06T 7/00
(57)【特許請求の範囲】
【請求項1】
ロボット装置のタスクを実行する環境を監視するセンサをシミュレートすることで生成されたシミュレーションデータ、及び前記シミュレーションデータに表れる前記タスクを実行する環境に関する第1環境情報の組み合わせによりそれぞれ構成された複数の第1学習データセットを取得する第1データ取得部と、
前記センサから得られた実データ、及び前記実データに表れる前記タスクを実行する環境に関する第2環境情報の組み合わせによりそれぞれ構成された複数の第2学習データセットを取得する第2データ取得部と、
前記タスクを実行する環境に関する第3環境情報及び前記タスクを実行する際の前記ロボット装置の状態に関する状態情報、並びに前記第3環境情報及び前記状態情報により示される条件下で前記タスクを前記ロボット装置に実行させるための制御コマンドの組み合わせによりそれぞれ構成された複数の第3学習データセットを取得する第3データ取得部と、
前記第1学習データセット及び前記第2学習データセットを利用して、抽出器の機械学習を実施する第1学習処理部と、
前記第3学習データセットを利用して、制御器の機械学習を実施する第2学習処理部と、
を備え、
前記抽出器の機械学習を実施することは、
前記各第1学習データセットについて、前記シミュレーションデータから、対応する前記第1環境情報と一致する環境情報を抽出するように前記抽出器を訓練する第1訓練ステップと、
前記第1訓練ステップを実行した後、前記各第2学習データセットについて、前記実データから、対応する前記第2環境情報と一致する環境情報を抽出するように前記抽出器を訓練する第2訓練ステップと、
を含み、
前記制御器の機械学習を実施することは、前記第3環境情報及び前記状態情報が入力されると、対応する前記制御コマンドと一致する制御コマンドを出力するように前記制御器を訓練する訓練ステップを含む、
学習装置。
【請求項2】
前記各第1学習データセットの前記シミュレーションデータは、前記センサをシミュレートする条件をランダムに変更しながら生成される、
請求項1に記載の学習装置。
【請求項3】
前記抽出器は、ニューラルネットワークにより構成され、
前記ニューラルネットワークは、第1部分、第2部分、及び第3部分に分かれており、
前記第1部分及び前記第2部分は、前記ニューラルネットワークの入力側に並列に配置され、同じ構造を有することにより共通のパラメータを有しており、
前記第1部分は、前記シミュレーションデータの入力を受け付けるように構成され、
前記第2部分は、前記実データの入力を受け付けるように構成され、
前記第3部分は、前記ニューラルネットワークの出力側に配置され、前記第1部分及び前記第2部分それぞれの出力を受け付けるように構成され、
前記第1訓練ステップでは、前記第1学習処理部は、前記各第1学習データセットについて、前記シミュレーションデータを前記第1部分に入力すると、対応する前記第1環境情報と一致する出力値が前記第3部分から出力されるように、前記第1部分及び前記第3部分それぞれのパラメータの値を調整し、
前記第1訓練ステップを実行した後、前記第2訓練ステップを実行する前に、前記第1学習処理部は、前記第1部分のパラメータの調整した値を前記第2部分のパラメータに複製する、
請求項1又は2に記載の学習装置。
【請求項4】
前記第2訓練ステップでは、前記第1学習処理部は、前記第3部分のパラメータの値は固定のまま、前記各第2学習データセットについて、前記実データを前記第2部分に入力すると、対応する前記第2環境情報と一致する出力値が前記第3部分から出力されるように、前記第2部分のパラメータの値を調整する、
請求項3に記載の学習装置。
【請求項5】
前記第3環境情報は、前記機械学習が完了した後の前記抽出器を利用して、前記センサをシミュレートすることで生成された他のシミュレーションデータから抽出することで得られる、
請求項1から4のいずれか1項に記載の学習装置。
【請求項6】
前記ロボット装置は、生産ラインにおける産業用ロボットであり、
前記センサは、カメラ、圧力センサ、ロードセル及びこれらの組み合わせにより構成され、
前記各環境情報は、セグメンテーション情報、前記タスクの対象となるワークの属性に関する情報、前記タスクを実行する位置に関する情報、障害物の有無を示す情報、及び障害物の属性に関する情報の少なくともいずれかを含み、
前記制御コマンドは、前記産業用ロボットの駆動量を規定する、
請求項1から5のいずれか1項に記載の学習装置。
【請求項7】
前記ロボット装置は、自律的に動作可能に構成された自律型ロボットであり、
前記センサは、カメラ、サーモセンサ、マイクロフォン及びこれらの組み合わせにより構成され、
前記各環境情報は、セグメンテーション情報及び前記タスクの実行に関連する対象物の属性に関する情報の少なくともいずれかを含み、
前記制御コマンドは、前記自律型ロボットの駆動量、出力音声及び画面表示の少なくともいずれかを規定する、
請求項1から5のいずれか1項に記載の学習装置。
【請求項8】
前記ロボット装置は、自動運転動作を実行可能に構成された移動体であり、
前記センサは、カメラ、ライダセンサ及びこれらの組み合わせにより構成され、
前記各環境情報は、前記移動体の進行する通路に関する情報及び前記移動体の進行方向に存在する対象物に関する情報の少なくともいずれかを含み、
前記制御コマンドは、前記
移動体のアクセル量、ブレーキ量、ハンドルの操舵角、ライトの点灯及びクラクションの使用の少なくともいずれかを規定する、
請求項1から5のいずれか1項に記載の学習装置。
【請求項9】
ロボット装置の動作を制御する制御装置であって、
前記ロボット装置のタスクを実行する環境を監視するセンサにより得られたセンサデータ、及び前記タスクを実行する際の前記ロボット装置の状態に関する状態情報を取得するデータ取得部と、
請求項1から8のいずれか1項に記載の学習装置により構築された機械学習済みの前記抽出器を利用して、前記タスクを実行する環境に関する環境情報を前記センサデータから抽出する情報抽出部と、
前記学習装置により構築された機械学習済みの前記制御器を利用して、前記環境情報及び前記状態情報により示される条件下で前記タスクを前記ロボット装置に実行させるための制御コマンドを決定するコマンド決定部と、
決定された前記制御コマンドに基づいて、前記ロボット装置の動作を制御する動作制御部と、
を備える、
制御装置。
【請求項10】
コンピュータが、
ロボット装置のタスクを実行する環境を監視するセンサをシミュレートすることで生成されたシミュレーションデータ、及び前記シミュレーションデータに表れる前記タスクを実行する環境に関する第1環境情報の組み合わせによりそれぞれ構成された複数の第1学習データセットを取得するステップと、
前記センサから得られた実データ、及び前記実データに表れる前記タスクを実行する環境に関する第2環境情報の組み合わせによりそれぞれ構成された複数の第2学習データセットを取得するステップと、
前記タスクを実行する環境に関する第3環境情報及び前記タスクを実行する際の前記ロボット装置の状態に関する状態情報、並びに前記第3環境情報及び前記状態情報により示される条件下で前記タスクを前記ロボット装置に実行させるための制御コマンドの組み合わせによりそれぞれ構成された複数の第3学習データセットを取得するステップと、
前記第1学習データセット及び前記第2学習データセットを利用して、抽出器の機械学習を実施するステップと、
前記第3学習データセットを利用して、制御器の機械学習を実施するステップ、
を実行し、
前記抽出器の機械学習を実施するステップは、
前記各第1学習データセットについて、前記シミュレーションデータから、対応する前記第1環境情報と一致する環境情報を抽出するように前記抽出器を訓練する第1訓練ステップと、
前記第1訓練ステップを実行した後、前記各第2学習データセットについて、前記実データから、対応する前記第2環境情報と一致する環境情報を抽出するように前記抽出器を訓練する第2訓練ステップと、
を含み、
前記制御器の機械学習を実施するステップは、前記第3環境情報及び前記状態情報が入力されると、対応する前記制御コマンドと一致する制御コマンドを出力するように前記制御器を訓練する訓練ステップを含む、
学習方法。
【請求項11】
コンピュータに、
ロボット装置のタスクを実行する環境を監視するセンサをシミュレートすることで生成されたシミュレーションデータ、及び前記シミュレーションデータに表れる前記タスクを実行する環境に関する第1環境情報の組み合わせによりそれぞれ構成された複数の第1学習データセットを取得するステップと、
前記センサから得られた実データ、及び前記実データに表れる前記タスクを実行する環境に関する第2環境情報の組み合わせによりそれぞれ構成された複数の第2学習データセットを取得するステップと、
前記タスクを実行する環境に関する第3環境情報及び前記タスクを実行する際の前記ロボット装置の状態に関する状態情報、並びに前記第3環境情報及び前記状態情報により示される条件下で前記タスクを前記ロボット装置に実行させるための制御コマンドの組み合わせによりそれぞれ構成された複数の第3学習データセットを取得するステップと、
前記第1学習データセット及び前記第2学習データセットを利用して、抽出器の機械学習を実施するステップと、
前記第3学習データセットを利用して、制御器の機械学習を実施するステップ、
を実行させるための学習プログラムであって、
前記抽出器の機械学習を実施するステップは、
前記各第1学習データセットについて、前記シミュレーションデータから、対応する前記第1環境情報と一致する環境情報を抽出するように前記抽出器を訓練する第1訓練ステップと、
前記第1訓練ステップを実行した後、前記各第2学習データセットについて、前記実データから、対応する前記第2環境情報と一致する環境情報を抽出するように前記抽出器を訓練する第2訓練ステップと、
を含み、
前記制御器の機械学習を実施するステップは、前記第3環境情報及び前記状態情報が入力されると、対応する前記制御コマンドと一致する制御コマンドを出力するように前記制御器を訓練する訓練ステップを含む、
学習プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、学習装置、制御装置、学習方法、及び学習プログラムに関する。
【背景技術】
【0002】
近年、製品を製造する生産ラインでは、カメラ等のセンサから得られたセンサデータを利用して、ロボットハンド等の産業用ロボットの動作を制御する技術が開発されている。例えば、特許文献1では、プリント板組立作業の行われる環境状態を表す状態変数及び基板に実装される電子部品の配置の適否の判定結果を利用して、産業機械に供給される指令値に対する補正値と基板の基準形状からの変形量とを関連付けて学習する機械学習装置が提案されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
本件発明者らは、特許文献1のような機械学習を利用して、生産ラインにおける産業用ロボットを制御するための制御モジュールを構築する場合に、次のような問題があることを見出した。機械学習を実施するためには、産業用ロボットの実機を用いて、学習データを収集することになる。例えば、センサにより得られたセンサデータから制御コマンドを導出する能力を習得するための機械学習を実施することを想定する。この場合、実機から得られたセンサデータ及び実機の状態を示す状態情報とその状況下で実機に実行させる制御コマンドとの組み合わせにより構成された学習データセットを収集することになる。各学習データセットのうち、センサデータ及び状態情報は訓練データ(入力データ)として利用され、制御コマンドは正解データ(教師データ)として利用される。この学習データセットを利用した機械学習により、センサデータ及び状態情報が与えられると、与えられたセンサデータ及び状態情報により示される状況に適切な制御コマンドを決定する能力を習得した制御モジュールを構築することができる。しかしながら、実機を利用して十分な件数の学習データセットを収集するには、時間及び労力のコストがかかってしまう。加えて、学習データセットを収集する過程で、実機が破損してしまう等のリスクが生じてしまう。
【0005】
そこで、本件発明者らは、このような問題点を解決するために、シミュレータを利用して、学習データを収集することを検討した。シミュレータを利用すれば、学習データを収集する作業の大部分を自動化することができるため、学習データを収集するのにかかるコストを抑えることができる。加えて、実機を利用しなくてもよいため、上記リスクを解消することができる。
【0006】
しかしながら、本件発明者らは、このような方法では、次のような問題点が生じることを見出した。すなわち、シミュレータにより得られるデータと実機により得られるデータとの間には乖離がある。そのため、シミュレータにより得られた学習データを利用して、制御モジュールの機械学習を実施しても、実環境で運用可能な制御モジュールを構築するのは困難である。加えて、そのデータの乖離の影響により、シミュレータにより得られた学習データを利用して構築された制御モジュールに対して、実機により得られた学習データを利用した追加学習を実施することは困難である。そのため、当該制御モジュールを実環境で運用可能に修正することも困難である。
【0007】
なお、このような問題点は、産業用ロボットの制御モジュールを機械学習により構築する場面だけではなく、産業用ロボット以外のロボット装置の制御モジュールを機械学習により構築するあらゆる場面で生じ得る。例えば、自律的に動作可能に構成された自律型ロボット、又は自動運転動作を実行可能に構成された移動体の制御モジュールを機械学習により構築する場合に、実機を利用して学習データを収集すると、時間及び労力のコストがかかり、かつ実機破損等のリスクが生じてしまう。一方で、シミュレータを利用した場合には、実環境で運用可能な制御モジュールを構築するのは困難である。
【0008】
本発明は、一側面では、このような実情を鑑みてなされたものであり、その目的は、ロボット装置を制御する能力を制御モジュールに習得させるための機械学習に利用する学習データを収集するコストを低減しつつ、その機械学習により実環境で運用可能な制御モジュールを構築するための技術を提供することである。
【課題を解決するための手段】
【0009】
本発明は、上述した課題を解決するために、以下の構成を採用する。
【0010】
すなわち、本発明の一側面に係る学習装置は、ロボット装置のタスクを実行する環境を監視するセンサをシミュレートすることで生成されたシミュレーションデータ、及び前記シミュレーションデータに表れる前記タスクを実行する環境に関する第1環境情報の組み合わせによりそれぞれ構成された複数の第1学習データセットを取得する第1データ取得部と、前記センサから得られた実データ、及び前記実データに表れる前記タスクを実行する環境に関する第2環境情報の組み合わせによりそれぞれ構成された複数の第2学習データセットを取得する第2データ取得部と、前記タスクを実行する環境に関する第3環境情報及び前記タスクを実行する際の前記ロボット装置の状態に関する状態情報、並びに前記第3環境情報及び前記状態情報により示される条件下で前記タスクを前記ロボット装置に実行させるための制御コマンドの組み合わせによりそれぞれ構成された複数の第3学習データセットを取得する第3データ取得部と、前記第1学習データセット及び前記第2学習データセットを利用して、抽出器の機械学習を実施する第1学習処理部と、前記第3学習データセットを利用して、制御器の機械学習を実施する第2学習処理部と、を備え、前記抽出器の機械学習を実施することは、前記各第1学習データセットについて、前記シミュレーションデータから、対応する前記第1環境情報と一致する環境情報を抽出するように前記抽出器を訓練する第1訓練ステップと、前記第1訓練ステップを実行した後、前記各第2学習データセットについて、前記実データから、対応する前記第2環境情報と一致する環境情報を抽出するように前記抽出器を訓練する第2訓練ステップと、を含み、前記制御器の機械学習を実施することは、前記第3環境情報及び前記状態情報が入力されると、対応する前記制御コマンドと一致する制御コマンドを出力するように前記制御器を訓練する訓練ステップを含む。
【0011】
上記構成では、ロボット装置を制御するための一連の処理を実行する制御モジュールが抽出器及び制御器の2つの構成要素に分かれている。抽出器は、機械学習により、センサデータ(シミュレーションデータ又は実データ)から環境情報を抽出するように訓練される。一方、制御器は、機械学習により、環境情報及び状態情報から制御コマンドを導出するように訓練される。これにより、制御モジュールは、センサデータから制御コマンドを直接的に導出するのではなく、センサデータを特徴量(環境情報)に一度変換し、得られた特徴量(環境情報)から制御コマンドを導出するように構成される。
【0012】
これらの構成要素のうち抽出器の機械学習では、シミュレーションデータ及び実データの両方を利用することで、抽出器は、両データから共通の特徴を抽出するように構築される。つまり、抽出器は、シミュレーションデータ及び実データの両データを共通の特徴空間に写像するように構築される。これにより、シミュレーションデータと実データとの間の乖離を吸収した上で、シミュレーションデータを利用した機械学習の成果を、実データを利用した機械学習に反映させることができる。そのため、機械学習に利用するシミュレーションデータの件数が十分であれば、機械学習に利用する実データの件数が少なくても、実環境で得られるセンサデータから対象の特徴を精度よく抽出可能な抽出器を構築することができる。
【0013】
加えて、センサデータから抽出される特徴(環境情報)は、シミュレーションにより実環境と同様に得ることが可能である。そのため、実機を用いずに、シミュレータを用いても、得られた学習データを利用した機械学習により、実環境で運用可能な制御器を構築することができる。したがって、上記構成によれば、抽出器及び制御器の2つの構成要素に制御モジュールを分離することにより、学習データの少なくとも一部に(好ましくは、大部分で)シミュレーションデータを採用することができるようになるため、機械学習に利用する学習データを収集するのにかかるコストを低減することができる。更に、この機械学習により構築された抽出器及び制御器により、実環境で運用可能な制御モジュールを構成することができる。よって、上記構成によれば、ロボット装置を制御する能力を制御モジュールに習得させるための機械学習に利用する学習データを収集するコストを低減しつつ、その機械学習により実環境で運用可能な制御モジュールを構築することができる。
【0014】
なお、ロボット装置は、自動的に駆動可能に構成された少なくとも1つの駆動部を有している装置であれば、その種類は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。ロボット装置は、例えば、生産ラインに配置される産業用ロボット(例えば、ロボットハンド、ベルトコンベア等)、自律型ロボット、自動運転動作を実行可能に構成された移動体(例えば、ドローン等の飛行体、自動車等の車両)等であってよい。タスクは、ロボット装置の種類に応じて適宜選択されてよい。ロボット装置がロボットハンドである場合、タスクは、例えば、ワークの把持、把持したワークの解放等であってよい。
【0015】
センサは、ロボット装置のタスクを実行する環境をモニタリング(又はセンシング)可能な装置であれば、その種類は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。センサは、例えば、カメラ、LIDAR(Light Detection and Ranging)センサ、サーモセンサ、圧力センサ、ロードセル等であってよい。センサデータ(シミュレーションデータ、実データ)の種類は、センサの種類に応じて適宜選択されてよい。センサデータは、例えば、画像(例えば、RGB画像、深度画像等)データ、LIDARセンサによる測定データ、サーモデータ、圧力データ等であってよい。
【0016】
各環境情報は、タスクを実行する環境に関するものであれば、その種類は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。各環境情報は、例えば、セグメンテーション情報、ワークの属性(位置、寸法、姿勢、温度等)、ワークを解放する位置、障害物の属性(位置、寸法、姿勢、種類等)等であってよい。また、各環境情報は、ニューラルネットワークの中間層により出力される特徴量の形式で表現されてもよい。状態情報は、タスクの実行に関連するロボット装置の状態を示し得るものであれば、その種類は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。ロボット装置が産業用ロボットである場合、状態情報は、例えば、産業用ロボットの駆動部の位置、向き、角度、加速度等を含んでよい。
【0017】
制御コマンドは、ロボット装置の動作の指示に関するものであれば、その種類及び形式は、特に限定されなくてもよく、ロボット装置の種類に応じて適宜選択されてよい。ロボット装置が産業用ロボットである場合、制御コマンドは、例えば、産業用ロボットの駆動量等を規定してよい。ロボット装置が自律型ロボットである場合、制御コマンドは、例えば、出力音声、各関節の駆動量、画面表示等を規定してよい。ロボット装置が自動運転動作を実行可能に構成された車両である場合、制御コマンドは、例えば、アクセル量、ブレーキ量、ハンドル操舵角、ライトの点灯、クラクションの使用等を規定してよい。
【0018】
抽出器及び制御器は、機械学習を実施可能な学習モデルによって構成される。抽出器及び制御器それぞれを構成する学習モデルには、例えば、ニューラルネットワークが用いられてよい。上記構成に係る機械学習において、シミュレーションデータ、実データ、第3環境情報、及び状態情報は、入力データ(訓練データ)として利用され、第1環境情報、第2環境情報、及び制御コマンドは、正解データ(教師データ)として利用される。機械学習における「一致する」は、学習モデル(抽出器、制御器)の出力値と正解データとの誤差(評価関数、誤差関数、損失関数)が閾値以下になることに対応する。センサのシミュレートは、シミュレータ上で実行される。シミュレータは、ロボット装置のタスクを実行する環境をシミュレート可能であれば、その種類は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。シミュレータは、例えば、ロボット装置、ワーク等のオブジェクトを仮想空間上に配置でき、仮想空間上でロボット装置にタスクの実行を模擬させることができるソフトウェアである。
【0019】
上記一側面に係る学習装置において、前記各第1学習データセットの前記シミュレーションデータは、前記センサをシミュレートする条件をランダムに変更しながら生成されてよい。当該構成によれば、ロボット装置を制御する能力を制御モジュールに習得させるための機械学習に利用する学習データを収集するコストを低減しつつ、その機械学習により実環境で運用可能な制御モジュールを適切に構築することができる。なお、対象となるシミュレーションの条件は、特に限定されなくてもよく、シミュレートするセンサの種類に応じて適宜選択されてよい。シミュレートするセンサがカメラである場合、シミュレーションの条件は、例えば、カメラ位置、各領域に貼り付けるテクスチャの種類等であってよい。
【0020】
上記一側面に係る学習装置において、前記抽出器は、ニューラルネットワークにより構成されてよく、前記ニューラルネットワークは、第1部分、第2部分、及び第3部分に分かれていてよく、前記第1部分及び前記第2部分は、前記ニューラルネットワークの入力側に並列に配置され、同じ構造を有することにより共通のパラメータを有していてよく、前記第1部分は、前記シミュレーションデータの入力を受け付けるように構成されてよく、前記第2部分は、前記実データの入力を受け付けるように構成されてよく、前記第3部分は、前記ニューラルネットワークの出力側に配置され、前記第1部分及び前記第2部分それぞれの出力を受け付けるように構成されてよく、前記第1訓練ステップでは、前記第1学習処理部は、前記各第1学習データセットについて、前記シミュレーションデータを前記第1部分に入力すると、対応する前記第1環境情報と一致する出力値が前記第3部分から出力されるように、前記第1部分及び前記第3部分それぞれのパラメータの値を調整してよく、前記第1訓練ステップを実行した後、前記第2訓練ステップを実行する前に、前記第1学習処理部は、前記第1部分のパラメータの調整した値を前記第2部分のパラメータに複製してもよい。当該構成によれば、ロボット装置を制御する能力を制御モジュールに習得させるための機械学習に利用する学習データを収集するコストを低減しつつ、その機械学習により実環境で運用可能な制御モジュールを適切に構築することができる。
【0021】
上記一側面に係る学習装置において、前記第2訓練ステップでは、前記第1学習処理部は、前記第3部分のパラメータの値は固定のまま、前記各第2学習データセットについて、前記実データを前記第2部分に入力すると、対応する前記第2環境情報と一致する出力値が前記第3部分から出力されるように、前記第2部分のパラメータの値を調整してもよい。当該構成によれば、ロボット装置を制御する能力を制御モジュールに習得させるための機械学習に利用する学習データを収集するコストを低減しつつ、その機械学習により実環境で運用可能な制御モジュールを適切に構築することができる。
【0022】
上記一側面に係る学習装置において、前記第3環境情報は、前記機械学習が完了した後の前記抽出器を利用して、前記センサをシミュレートすることで生成された他のシミュレーションデータから抽出することで得られてよい。当該構成によれば、ロボット装置を制御する能力を制御モジュールに習得させるための機械学習に利用する学習データを収集するコストを低減しつつ、その機械学習により実環境で運用可能な制御モジュールを適切に構築することができる。
【0023】
上記一側面に係る学習装置において、前記ロボット装置は、生産ラインにおける産業用ロボットであってよく、前記センサは、カメラ、圧力センサ、ロードセル及びこれらの組み合わせにより構成されてよく、前記各環境情報は、セグメンテーション情報、前記タスクの対象となるワークの属性に関する情報、前記タスクを実行する位置に関する情報、障害物の有無を示す情報、及び障害物の属性に関する情報の少なくともいずれかを含んでよく、前記制御コマンドは、前記産業用ロボットの駆動量を規定してもよい。当該構成によれば、産業用ロボットの動作を制御するための制御モジュールを構築することができる。
【0024】
上記一側面に係る学習装置において、前記ロボット装置は、自律的に動作可能に構成された自律型ロボットであってよく、前記センサは、カメラ、サーモセンサ、マイクロフォン及びこれらの組み合わせにより構成されてよく、前記各環境情報は、セグメンテーション情報及び前記タスクの実行に関連する対象物の属性に関する情報の少なくともいずれかを含んでよく、前記制御コマンドは、前記自律型ロボットの駆動量、出力音声及び画面表示の少なくともいずれかを規定してもよい。当該構成によれば、自律型ロボットの動作を制御するための制御モジュールを構築することができる。なお、対象物は、単なる物だけではなく、人物を含んでもよい。
【0025】
上記一側面に係る学習装置において、前記ロボット装置は、自動運転動作を実行可能に構成された移動体であってよく、前記センサは、カメラ、ライダセンサ及びこれらの組み合わせにより構成されてよく、前記各環境情報は、前記移動体の進行する通路に関する情報及び前記移動体の進行方向に存在する対象物に関する情報の少なくともいずれかを含んでよく、前記制御コマンドは、前記車両のアクセル量、ブレーキ量、ハンドルの操舵角、ライトの点灯及びクラクションの使用の少なくともいずれかを規定してもよい。当該構成によれば、移動体の動作を制御するための制御モジュールを構築することができる。
【0026】
また、本発明の一側面に係る制御装置は、ロボット装置の動作を制御する制御装置であって、前記ロボット装置のタスクを実行する環境を監視するセンサにより得られたセンサデータ、及び前記タスクを実行する際の前記ロボット装置の状態に関する状態情報を取得するデータ取得部と、上記いずれかの形態に係る学習装置により構築された機械学習済みの前記抽出器を利用して、前記タスクを実行する環境に関する環境情報を前記センサデータから抽出する情報抽出部と、前記学習装置により構築された機械学習済みの前記制御器を利用して、前記環境情報及び前記状態情報により示される条件下で前記タスクを前記ロボット装置に実行させるための制御コマンドを決定するコマンド決定部と、決定された前記制御コマンドに基づいて、前記ロボット装置の動作を制御する動作制御部と、を備える。当該構成によれば、実環境下でロボット装置の動作を適切に制御可能な制御装置を提供することができる。
【0027】
上記各形態に係る学習装置及び制御装置それぞれの別の態様として、本発明の一側面は、以上の各構成を実現する情報処理方法であってもよいし、プログラムであってもよいし、このようなプログラムを記憶した、コンピュータ等が読み取り可能な記憶媒体であってもよい。ここで、コンピュータ等が読み取り可能な記憶媒体とは、プログラム等の情報を、電気的、磁気的、光学的、機械的、又は、化学的作用によって蓄積する媒体である。また、本発明の一側面に係る制御システムは、上記いずれかの形態に係る学習装置及び制御装置により構成されてもよい。
【0028】
例えば、本発明の一側面に係る学習方法は、コンピュータが、ロボット装置のタスクを実行する環境を監視するセンサをシミュレートすることで生成されたシミュレーションデータ、及び前記シミュレーションデータに表れる前記タスクを実行する環境に関する第1環境情報の組み合わせによりそれぞれ構成された複数の第1学習データセットを取得するステップと、前記センサから得られた実データ、及び前記実データに表れる前記タスクを実行する環境に関する第2環境情報の組み合わせによりそれぞれ構成された複数の第2学習データセットを取得するステップと、前記タスクを実行する環境に関する第3環境情報及び前記タスクを実行する際の前記ロボット装置の状態に関する状態情報、並びに前記第3環境情報及び前記状態情報により示される条件下で前記タスクを前記ロボット装置に実行させるための制御コマンドの組み合わせによりそれぞれ構成された複数の第3学習データセットを取得するステップと、前記第1学習データセット及び前記第2学習データセットを利用して、抽出器の機械学習を実施するステップと、前記第3学習データセットを利用して、制御器の機械学習を実施するステップ、を実行し、前記抽出器の機械学習を実施するステップは、前記各第1学習データセットについて、前記シミュレーションデータから、対応する前記第1環境情報と一致する環境情報を抽出するように前記抽出器を訓練する第1訓練ステップと、前記第1訓練ステップを実行した後、前記各第2学習データセットについて、前記実データから、対応する前記第2環境情報と一致する環境情報を抽出するように前記抽出器を訓練する第2訓練ステップと、を含み、前記制御器の機械学習を実施するステップは、前記第3環境情報及び前記状態情報が入力されると、対応する前記制御コマンドと一致する制御コマンドを出力するように前記制御器を訓練する訓練ステップを含む、情報処理方法である。
【0029】
また、例えば、本発明の一側面に係る学習プログラムは、コンピュータに、ロボット装置のタスクを実行する環境を監視するセンサをシミュレートすることで生成されたシミュレーションデータ、及び前記シミュレーションデータに表れる前記タスクを実行する環境に関する第1環境情報の組み合わせによりそれぞれ構成された複数の第1学習データセットを取得するステップと、前記センサから得られた実データ、及び前記実データに表れる前記タスクを実行する環境に関する第2環境情報の組み合わせによりそれぞれ構成された複数の第2学習データセットを取得するステップと、前記タスクを実行する環境に関する第3環境情報及び前記タスクを実行する際の前記ロボット装置の状態に関する状態情報、並びに前記第3環境情報及び前記状態情報により示される条件下で前記タスクを前記ロボット装置に実行させるための制御コマンドの組み合わせによりそれぞれ構成された複数の第3学習データセットを取得するステップと、前記第1学習データセット及び前記第2学習データセットを利用して、抽出器の機械学習を実施するステップと、前記第3学習データセットを利用して、制御器の機械学習を実施するステップ、を実行させるためのプログラムであって、前記抽出器の機械学習を実施するステップは、前記各第1学習データセットについて、前記シミュレーションデータから、対応する前記第1環境情報と一致する環境情報を抽出するように前記抽出器を訓練する第1訓練ステップと、前記第1訓練ステップを実行した後、前記各第2学習データセットについて、前記実データから、対応する前記第2環境情報と一致する環境情報を抽出するように前記抽出器を訓練する第2訓練ステップと、を含み、前記制御器の機械学習を実施するステップは、前記第3環境情報及び前記状態情報が入力されると、対応する前記制御コマンドと一致する制御コマンドを出力するように前記制御器を訓練する訓練ステップを含む、プログラムである。
【発明の効果】
【0030】
本発明によれば、ロボット装置を制御する能力を制御モジュールに習得させるための機械学習に利用する学習データを収集するコストを低減しつつ、その機械学習により実環境で運用可能な制御モジュールを構築することができる。
【図面の簡単な説明】
【0031】
【
図1】
図1は、本発明が適用される場面の一例を模式的に例示する。
【
図2】
図2は、実施の形態に係る学習装置のハードウェア構成の一例を模式的に例示する。
【
図3】
図3は、実施の形態に係る制御装置のハードウェア構成の一例を模式的に例示する。
【
図4】
図4は、実施の形態に係る学習装置のソフトウェア構成の一例を模式的に例示する。
【
図5A】
図5Aは、実施の形態に係る学習装置による抽出器の機械学習の過程の一例を模式的に例示する。
【
図5B】
図5Bは、実施の形態に係る学習装置による抽出器の機械学習の過程の一例を模式的に例示する。
【
図5C】
図5Cは、実施の形態に係る学習装置による制御器の機械学習の過程の一例を模式的に例示する。
【
図6】
図6は、実施の形態に係る制御装置のソフトウェア構成の一例を模式的に例示する。
【
図7】
図7は、実施の形態に係る学習装置による抽出器の機械学習の処理手順の一例を例示する。
【
図8】
図8は、実施の形態に係る学習装置による制御器の機械学習の処理手順の一例を例示する。
【
図9】
図9は、実施の形態に係る制御装置によるロボット制御の処理手順の一例を例示する。
【
図10】
図10は、変形例に係る学習装置のソフトウェア構成の一例を模式的に例示する。
【
図11】
図11は、変形例に係る制御装置のソフトウェア構成の一例を模式的に例示する。
【
図12】
図12は、本発明が適用される場面のその他の例を模式的に例示する。
【
図13】
図13は、本発明が適用される場面のその他の例を模式的に例示する。
【発明を実施するための形態】
【0032】
以下、本発明の一側面に係る実施の形態(以下、「本実施形態」とも表記する)を、図面に基づいて説明する。ただし、以下で説明する本実施形態は、あらゆる点において本発明の例示に過ぎない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。つまり、本発明の実施にあたって、実施形態に応じた具体的構成が適宜採用されてもよい。なお、本実施形態において登場するデータを自然言語により説明しているが、より具体的には、コンピュータが認識可能な疑似言語、コマンド、パラメータ、マシン語等で指定される。
【0033】
§1 適用例
まず、
図1を用いて、本発明が適用される場面の一例について説明する。
図1は、本実施形態に係る制御システム100の適用場面の一例を模式的に例示する。
図1の例では、生産ラインに配置される産業用ロボットR(例えば、ロボットハンド)の動作を制御する場面を想定している。産業用ロボットRは、本発明の「ロボット装置」の一例である。しかしながら、本発明の適用対象は、このような例に限定されなくてもよく、何らかのロボット装置の動作を制御するあらゆる場面に適用可能である。
【0034】
図1に示されるとおり、本実施形態に係る制御システム100は、ネットワークを介して互いに接続される学習装置1及び制御装置2を備えており、制御モジュールの機械学習、及び訓練された制御モジュールによる産業用ロボットRの動作の制御を実施可能に構成される。学習装置1及び制御装置2の間のネットワークの種類は、例えば、インターネット、無線通信網、移動通信網、電話網、専用網等から適宜選択されてよい。
【0035】
本実施形態に係る学習装置1は、産業用ロボットRの動作を制御するための制御モジュールを機械学習により構築するように構成されたコンピュータである。本実施形態に係る制御モジュールは、抽出器5及び制御器6により構成される。抽出器5は、センサにより得られるセンサデータから環境情報を抽出するように訓練される。制御器6は、環境情報及び状態情報から制御コマンドを導出するように訓練される。
【0036】
まず、本実施形態に係る学習装置1は、シミュレーションデータ701及び第1環境情報702の組み合わせによりそれぞれ構成された複数の第1学習データセット70を取得する。シミュレーションデータ701は、生産ラインにおける産業用ロボットRのタスクを実行する環境を監視するセンサをシミュレートすることで生成される。第1環境情報702は、シミュレーションデータ701に表れるタスクを実行する環境に関する。
【0037】
また、本実施形態に係る学習装置1は、実データ731及び第2環境情報732の組み合わせによりそれぞれ構成された複数の第2学習データセット73を取得する。実データ731は、センサから得られる。第2環境情報732は、実データ731に表れるタスクを実行する環境に関する。
【0038】
図1に示されるとおり、本実施形態では、タスクの実行環境をモニタリング(センシング)するためのセンサの一例として、カメラCAが、産業用ロボットRの可動域を撮影可能な位置に配置されている。そのため、本実施形態に係るシミュレーションデータ701は、シミュレータにより生成した画像データであって、このカメラCAにより得られる撮影画像を模した画像データである。これに対して、本実施形態に係る実データ731は、産業用ロボットRのタスクを実行する環境をカメラCAにより撮影することで得られる画像データ(撮影画像)である。カメラCAは、本発明の「センサ」の一例である。ただし、本実施形態で利用可能なセンサは、カメラに限定されなくてよく、実施の形態に応じて適宜選択されてよい。
【0039】
更に、本実施形態に係る学習装置1は、第3環境情報761及び状態情報762並びに制御コマンド763の組み合わせによりそれぞれ構成された複数の第3学習データセット76を取得する。第3環境情報761は、産業用ロボットRのタスクを実行する環境に関する。状態情報762は、タスクを実行する際の産業用ロボットRの状態に関する。制御コマンド763は、第3環境情報761及び状態情報762により示される条件下でタスクを産業用ロボットRに実行させるための動作を規定する。
【0040】
なお、タスクの種類は、特に限定されなくてもよく、ロボット装置の種類に応じて適宜選択されてよい。産業用ロボットRがロボットハンドである場合、タスクは、例えば、ワークの把持、把持したワークの解放等であってよい。各環境情報(702、732、761)は、ロボット装置のタスクを実行する環境に関するものであれば、その種類は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。各環境情報(702、732、761)は、例えば、セグメンテーション情報、タスクの対象となるワークの属性に関する情報、タスクを実行する位置に関する情報、障害物の有無を示す情報、及び障害物の属性に関する情報の少なくともいずれかを含んでよい。状態情報762は、タスクの実行に関連するロボット装置の状態を示し得るものであれば、その種類は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。状態情報762は、例えば、産業用ロボットRの駆動部(例えば、エンドエフェクタ、関節部等)の位置、向き、角度、加速度等を含んでよい。制御コマンド763は、ロボット装置の動作の指示に関するものであれば、その種類及び形式は、特に限定されなくてもよく、ロボット装置の種類に応じて適宜選択されてよい。制御コマンド763は、例えば、産業用ロボットRの駆動量等を規定してよい。
【0041】
得られた各学習データセット(70、73、76)は、機械学習により制御モジュールを訓練するための学習データとして利用される。本実施形態に係る学習装置1は、第1学習データセット70及び第2学習データセット73を利用して、抽出器5の機械学習を実施する。具体的には、学習装置1は、第1訓練ステップとして、各第1学習データセット70について、シミュレーションデータ701から、対応する第1環境情報702と一致する環境情報を抽出するように抽出器5を訓練する。シミュレーションデータ701は、この機械学習における訓練データ(入力データ)に対応し、第1環境情報702は、正解データ(教師データ)に対応する。すなわち、学習装置1は、各第1学習データセット70について、シミュレーションデータ701が入力されると、対応する第1環境情報702と一致する出力値(環境情報)を出力するように抽出器5を訓練する。
【0042】
第1訓練ステップを実行した後、学習装置1は、各第2学習データセット73について、実データ731から、対応する第2環境情報732と一致する環境情報を抽出するように抽出器5を訓練する。実データ731は、この機械学習における訓練データ(入力データ)に対応し、第2環境情報732は、正解データ(教師データ)に対応する。すなわち、学習装置1は、各第2学習データセット73について、実データ731が入力されると、対応する第2環境情報732と一致する出力値(環境情報)を出力するように抽出器5を訓練する。
【0043】
また、本実施形態に係る学習装置1は、第3学習データセット76を利用して、制御器6の機械学習を実施する。具体的には、学習装置1は、各第3学習データセット76について、第3環境情報761及び状態情報762から対応する制御コマンド763を導出するように制御器6を訓練する。第3環境情報761及び状態情報762は、この機械学習における訓練データ(入力データ)に対応し、制御コマンド763は、正解データ(教師データ)に対応する。すなわち、学習装置1は、各第3学習データセット76について、第3環境情報761及び状態情報762が入力されると、対応する制御コマンド763と一致する出力値(制御コマンド)を出力するように制御器6を訓練する。
【0044】
なお、抽出器5及び制御器6は、機械学習を実施可能な学習モデルにより構成される。本実施形態では、抽出器5及び制御器6はそれぞれ、後述するニューラルネットにより構成される。抽出器5及び制御器6それぞれを訓練することは、それぞれを構成する学習モデルのパラメータを調節することである。学習モデルのパラメータは、与えられた入力データに対する出力値を得るための演算処理に利用される。学習モデルがニューラルネットワークにより構成される場合、パラメータは、例えば、各ニューロン間の結合の重み、各ニューロンの閾値等である。機械学習における「一致する」は、学習モデルの出力値と正解データとの誤差(評価関数、誤差関数、損失関数)が閾値以下になるように、学習モデルのパラメータを調節することに対応する。
【0045】
一方、本実施形態に係る制御装置2は、学習装置1により構築された制御モジュールを利用して、産業用ロボットRの動作を制御するように構成されたコンピュータである。具体的には、本実施形態に係る制御装置2は、産業用ロボットRのタスクを実行する環境を監視するセンサにより得られたセンサデータを取得する。本実施形態では、当該センサの一例としてカメラCAが利用されている。そのため、制御装置2は、センサデータの一例として、カメラCAにより得られた画像データ80を取得する。また、本実施形態に係る制御装置2は、タスクを実行する際の産業用ロボットRの状態に関する状態情報83を取得する。
【0046】
続いて、本実施形態に係る制御装置2は、上記学習装置1により構築された機械学習済みの抽出器5を利用して、タスクを実行する環境に関する環境情報を画像データ80から抽出する。具体的には、制御装置2は、機械学習済みの抽出器5に画像データ80を入力し、当該抽出器5の演算処理を実行することで、環境情報に対応する出力値を当該抽出器5から取得する。
【0047】
次に、本実施形態に係る制御装置2は、上記学習装置1により構築された機械学習済みの制御器6を利用して、環境情報及び状態情報83により示される条件下でタスクを産業用ロボットRに実行させるための制御コマンド85を決定する。具体的には、制御装置2は、機械学習済みの制御器6に環境情報及び状態情報83を入力し、当該制御器6の演算処理を実行することで、制御コマンド85に対応する出力値を当該制御器6から取得する。そして、本実施形態に係る制御装置2は、決定された制御コマンド85に基づいて、産業用ロボットRの動作を制御する。
【0048】
以上のとおり、本実施形態では、産業用ロボットRの動作を制御するための制御モジュールが、抽出器5及び制御器6の2つの構成要素に分割されている。これらの構成要素のうち抽出器5の機械学習では、シミュレーションデータ701及び実データ731の両方を利用することで、抽出器5は、両データ(701、731)から共通の特徴(環境情報)を抽出するように構築される。これにより、抽出器5の機械学習の過程において、シミュレーションデータ701と実データ731との間の乖離を吸収した上で、シミュレーションデータ701を利用した第1訓練ステップの成果を、実データ731を利用した第2訓練ステップに反映させることができる。そのため、機械学習に利用するシミュレーションデータ701(第1学習データセット70)の件数が十分であれば、機械学習に利用する実データ731(第2学習データセット73)の件数が少なくても、実環境で得られるセンサデータから環境情報を精度よく抽出可能な機械学習済みの抽出器5を構築することができる。
【0049】
加えて、センサデータから抽出される特徴(環境情報)は、シミュレーションにより実環境と同様に得ることが可能である。そのため、産業用ロボットRの実機を用いず、シミュレータを用いても、得られた第3学習データセット76を利用した機械学習により、実環境で運用可能な機械学習済みの制御器6を構築することができる。したがって、本実施形態によれば、抽出器5及び制御器6の2つの構成要素に制御モジュールを分離することで、学習データの少なくとも一部に(好ましくは、大部分で)シミュレーションデータ701を採用することができるようになるため、機械学習に利用する学習データを収集するのにかかるコストを低減することができる。更に、この機械学習により構築された抽出器5及び制御器6により、実環境で運用可能な制御モジュールを構成することができる。よって、本実施形態によれば、産業用ロボットRを制御する能力を制御モジュールに習得させるための機械学習に利用する学習データを収集するコストを低減しつつ、その機械学習により実環境で運用可能な制御モジュールを構築することができる。また、本実施形態に係る制御装置2によれば、そのように構築された制御モジュールを利用することで、産業用ロボットRの動作を実環境で適切に制御することができる。
【0050】
§2 構成例
[ハードウェア構成]
<学習装置>
次に、
図2を用いて、本実施形態に係る学習装置1のハードウェア構成の一例について説明する。
図2は、本実施形態に係る学習装置1のハードウェア構成の一例を模式的に例示する。
【0051】
図2に示されるとおり、本実施形態に係る学習装置1は、制御部11、記憶部12、通信インタフェース13、入力装置14、出力装置15、及びドライブ16が電気的に接続されたコンピュータである。なお、
図2では、通信インタフェースを「通信I/F」と記載している。
【0052】
制御部11は、ハードウェアプロセッサであるCPU(Central Processing Unit)、RAM(Random Access Memory)、ROM(Read Only Memory)等を含み、プログラム及び各種データに基づいて情報処理を実行するように構成される。記憶部12は、メモリの一例であり、例えば、ハードディスクドライブ、ソリッドステートドライブ等で構成される。本実施形態では、記憶部12は、学習プログラム121、複数の第1学習データセット70、複数の第2学習データセット73、複数の第3学習データセット76、第1学習結果データ125、第2学習結果データ128等の各種情報を記憶する。
【0053】
学習プログラム121は、学習装置1に、後述する機械学習の情報処理(
図7、
図8)を実行させ、学習済みの抽出器5及び学習済みの制御器6を構築させるためのプログラムである。学習プログラム121は、この情報処理の一連の命令を含む。複数の第1学習データセット70及び複数の第2学習データセット73は抽出器5の機械学習に利用される。複数の第3学習データセット76は制御器6の機械学習に利用される。第1学習結果データ125は、機械学習により構築された学習済みの抽出器5の設定を行うためのデータである。第2学習結果データ128は、機械学習により構築された学習済みの制御器6の設定を行うためのデータである。第1学習結果データ125及び第2学習結果データ128は、学習プログラム121の実行結果として生成される。詳細は後述する。
【0054】
通信インタフェース13は、例えば、有線LAN(Local Area Network)モジュール、無線LANモジュール等であり、ネットワークを介した有線又は無線通信を行うためのインタフェースである。学習装置1は、この通信インタフェース13を利用することで、ネットワークを介したデータ通信を他の情報処理装置(例えば、制御装置2)と行うことができる。
【0055】
入力装置14は、例えば、マウス、キーボード等の入力を行うための装置である。また、出力装置15は、例えば、ディスプレイ、スピーカ等の出力を行うための装置である。オペレータは、入力装置14及び出力装置15を利用することで、学習装置1を操作することができる。
【0056】
ドライブ16は、例えば、CDドライブ、DVDドライブ等であり、記憶媒体91に記憶されたプログラムを読み込むためのドライブ装置である。ドライブ16の種類は、記憶媒体91の種類に応じて適宜選択されてよい。上記学習プログラム121、複数の第1学習データセット70、複数の第2学習データセット73、及び複数の第3学習データセット76の少なくともいずれかは、この記憶媒体91に記憶されていてもよい。
【0057】
記憶媒体91は、コンピュータその他装置、機械等が、記録されたプログラム等の情報を読み取り可能なように、当該プログラム等の情報を、電気的、磁気的、光学的、機械的又は化学的作用によって蓄積する媒体である。学習装置1は、この記憶媒体91から、上記学習プログラム121、複数の第1学習データセット70、複数の第2学習データセット73、及び複数の第3学習データセット76の少なくともいずれかを取得してもよい。
【0058】
ここで、
図2では、記憶媒体91の一例として、CD、DVD等のディスク型の記憶媒体を例示している。しかしながら、記憶媒体91の種類は、ディスク型に限定される訳ではなく、ディスク型以外であってもよい。ディスク型以外の記憶媒体として、例えば、フラッシュメモリ等の半導体メモリを挙げることができる。
【0059】
なお、学習装置1の具体的なハードウェア構成に関して、実施形態に応じて、適宜、構成要素の省略、置換及び追加が可能である。例えば、制御部11は、複数のハードウェアプロセッサを含んでもよい。ハードウェアプロセッサは、マイクロプロセッサ、FPGA(field-programmable gate array)、DSP(digital signal processor)等で構成されてよい。記憶部12は、制御部11に含まれるRAM及びROMにより構成されてもよい。通信インタフェース13、入力装置14、出力装置15及びドライブ16の少なくともいずれかは省略されてもよい。学習装置1は、複数台のコンピュータで構成されてもよい。この場合、各コンピュータのハードウェア構成は、一致していてもよいし、一致していなくてもよい。また、学習装置1は、提供されるサービス専用に設計された情報処理装置の他、汎用のサーバ装置、PC(Personal Computer)等であってもよい。
【0060】
<制御装置>
次に、
図3を用いて、本実施形態に係る制御装置2のハードウェア構成の一例について説明する。
図3は、本実施形態に係る制御装置2のハードウェア構成の一例を模式的に例示する。
【0061】
図3に示されるとおり、本実施形態に係る制御装置2は、制御部21、記憶部22、通信インタフェース23、外部インタフェース24、入力装置25、出力装置26、及びドライブ27が電気的に接続されたコンピュータである。なお、
図3では、通信インタフェース及び外部インタフェースをそれぞれ「通信I/F」及び「外部I/F」と記載している。
【0062】
制御装置2の制御部21~通信インタフェース23及び入力装置25~ドライブ27はそれぞれ、上記学習装置1の制御部11~ドライブ16それぞれと同様に構成されてよい。すなわち、制御部21は、ハードウェアプロセッサであるCPU、RAM、ROM等を含み、プログラム及びデータに基づいて各種情報処理を実行するように構成される。記憶部22は、例えば、ハードディスクドライブ、ソリッドステートドライブ等で構成される。記憶部22は、制御プログラム221、第1学習結果データ125、第2学習結果データ128等の各種情報を記憶する。
【0063】
制御プログラム221は、学習済みの抽出器5及び学習済みの制御器6を利用して、産業用ロボットRの動作を制御する後述の情報処理(
図9)を制御装置2に実行させるためのプログラムである。制御プログラム221は、この情報処理の一連の命令を含む。第1学習結果データ125及び第2学習結果データ128は、この情報処理の際に、学習済みの抽出器5及び学習済みの制御器6を設定するのに利用される。詳細は後述する。
【0064】
通信インタフェース23は、例えば、有線LANモジュール、無線LANモジュール等であり、ネットワークを介した有線又は無線通信を行うためのインタフェースである。制御装置2は、この通信インタフェース23を利用することで、ネットワークを介したデータ通信を他の情報処理装置(例えば、学習装置1)と行うことができる。
【0065】
外部インタフェース24は、例えば、USB(Universal Serial Bus)ポート、専用ポート等であり、外部装置と接続するためのインタフェースである。外部インタフェース24の種類及び数は、接続される外部装置の種類及び数に応じて適宜選択されてよい。本実施形態では、制御装置2は、外部インタフェース24を介して、産業用ロボットR及びカメラCAに接続される。
【0066】
産業用ロボットRの種類及び構成は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。産業用ロボットRは、例えば、ロボットハンド、ベルトコンベア等を含んでもよい。制御装置2は、外部インタフェース24を介して、制御コマンドに基づく制御信号を産業用ロボットRに送信することで、産業用ロボットRの動作を制御する。産業用ロボットRの制御方法は、特に限定されなくてよく、実施の形態に応じて適宜決定されてよい。産業用ロボットRは、制御装置2により直接的に制御されてもよい。或いは、産業用ロボットRは、コントローラ(不図示)を内蔵してもよい。この場合、コントローラは、制御装置2から受信した制御信号、プログラムの処理等に基づいて、産業用ロボットRの動作を制御するように適宜構成されてよい。
【0067】
カメラCAは、産業用ロボットRのタスクを実行する環境を監視するように適宜配置される。このカメラCAの種類は、特に限定されなくてもよく、実施の形態に応じて適宜決定されてよい。カメラCAには、例えば、デジタルカメラ、ビデオカメラ等の公知のカメラが利用されてよい。制御装置2は、外部インタフェース24を介して、カメラCAから画像データを取得することができる。画像データは、本発明の「センサデータ」の一例である。なお、産業用ロボットR及びカメラCAが通信インタフェースを備える場合、制御装置2は、外部インタフェース24ではなく、通信インタフェース23を介して、産業用ロボットR及びカメラCAに接続されてもよい。
【0068】
入力装置25は、例えば、マウス、キーボード等の入力を行うための装置である。また、出力装置26は、例えば、ディスプレイ、スピーカ等の出力を行うための装置である。オペレータは、入力装置25及び出力装置26を利用することで、制御装置2を操作することができる。
【0069】
ドライブ27は、例えば、CDドライブ、DVDドライブ等であり、記憶媒体92に記憶されたプログラムを読み込むためのドライブ装置である。上記制御プログラム221、第1学習結果データ125及び第2学習結果データ128のうちの少なくともいずれかは、記憶媒体92に記憶されていてもよい。また、制御装置2は、記憶媒体92から、上記制御プログラム221、第1学習結果データ125及び第2学習結果データ128のうちの少なくともいずれかを取得してもよい。
【0070】
なお、制御装置2の具体的なハードウェア構成に関して、上記学習装置1と同様に、実施の形態に応じて、適宜、構成要素の省略、置換及び追加が可能である。例えば、制御部21は、複数のハードウェアプロセッサを含んでもよい。ハードウェアプロセッサは、マイクロプロセッサ、FPGA、DSP等で構成されてよい。記憶部22は、制御部21に含まれるRAM及びROMにより構成されてもよい。通信インタフェース23、外部インタフェース24、入力装置25、出力装置26及びドライブ27の少なくともいずれかは省略されてもよい。制御装置2は、複数台のコンピュータで構成されてもよい。この場合、各コンピュータのハードウェア構成は、一致していてもよいし、一致していなくてもよい。また、制御装置2は、提供されるサービス専用に設計された情報処理装置の他、汎用のサーバ装置、汎用のデスクトップPC、ノートPC、タブレットPC等が用いられてよい。
【0071】
[ソフトウェア構成]
次に、
図4を用いて、本実施形態に係る学習装置1のソフトウェア構成の一例について説明する。
図4は、本実施形態に係る学習装置1のソフトウェア構成の一例を模式的に例示する。
【0072】
学習装置1の制御部11は、記憶部12に記憶された学習プログラム121をRAMに展開する。そして、制御部11は、RAMに展開された学習プログラム121をCPUにより解釈及び実行して、各構成要素を制御する。これによって、
図4に示されるとおり、本実施形態に係る学習装置1は、第1データ取得部111、第2データ取得部112、第3データ取得部113、第1学習処理部114、第2学習処理部115、及び保存処理部116をソフトウェアモジュールとして備えるコンピュータとして動作する。すなわち、本実施形態では、学習装置1の各ソフトウェアモジュールは、制御部11(CPU)により実現される。
【0073】
第1データ取得部111は、産業用ロボットRのタスクを実行する環境を監視するセンサをシミュレートすることで生成されたシミュレーションデータ701、及びシミュレーションデータ701に表れるタスクを実行する環境に関する第1環境情報702の組み合わせによりそれぞれ構成された複数の第1学習データセット70を取得する。第2データ取得部112は、センサから得られた実データ731、及び実データ731に表れるタスクを実行する環境に関する第2環境情報732の組み合わせによりそれぞれ構成された複数の第2学習データセット73を取得する。第3データ取得部113は、タスクを実行する環境に関する第3環境情報761及びタスクを実行する際の産業用ロボットRの状態に関する状態情報762、並びに第3環境情報761及び状態情報762により示される条件下でタスクを産業用ロボットRに実行させるための制御コマンド763の組み合わせによりそれぞれ構成された複数の第3学習データセット76を取得する。
【0074】
第1学習処理部114は、機械学習を実施する前の抽出器5を保持する。第1学習処理部114は、第1学習データセット70及び第2学習データセット73を利用して、抽出器5の機械学習を実施する。具体的に、第1学習処理部114は、第1訓練ステップとして、各第1学習データセット70について、シミュレーションデータ701から、対応する第1環境情報702と一致する環境情報を抽出するように抽出器5を訓練する。第1訓練ステップを実行した後、第1学習処理部114は、第2訓練ステップとして、各第2学習データセット73について、実データ731から、対応する第2環境情報732と一致する環境情報を抽出するように抽出器5を訓練する。保存処理部116は、構築された学習済みの抽出器5に関する情報を第1学習結果データ125として記憶部12に保存する。
【0075】
第2学習処理部115は、機械学習を実施する前の制御器6を保持する。第2学習処理部115は、第3学習データセット76を利用して、制御器6の機械学習を実施する。具体的に、第2学習処理部115は、各第3学習データセット76について、第3環境情報761及び状態情報762が入力されると、対応する制御コマンド763と一致する制御コマンドを出力するように制御器6を訓練する。保存処理部116は、構築された学習済みの制御器6に関する情報を第2学習結果データ128として記憶部12に保存する。
【0076】
(抽出器)
次に、
図5A及び
図5Bを用いて、抽出器5の構成の一例について説明する。
図5Aは、本実施形態に係る抽出器5の第1訓練ステップの過程の一例を模式的に例示する。
図5Bは、本実施形態に係る抽出器5の第2訓練ステップの過程の一例を模式的に例示する。
図5A及び
図5Bに示されるとおり、本実施形態に係る抽出器5は、ニューラルネットワークにより構成されている。当該ニューラルネットワークは、第1部分51、第2部分52、及び第3部分53に分かれている。第1部分51及び第2部分52は、ニューラルネットワークの入力側に並列に配置される。これに対して、第3部分53は、ニューラルネットワークの出力側に配置される。
【0077】
本実施形態に係る第1部分51は、いわゆる畳み込みニューラルネットワークにより構成されている。具体的に、第1部分51は、畳み込み層511、プーリング層512、及び全結合層513を備えている。本実施形態に係る第1部分51では、畳み込み層511及びプーリング層512が入力側に交互に配置されている。そして、最も出力側に配置されたプーリング層512の出力が全結合層513に入力される。全結合層513の出力が、第1部分51の出力に対応している。畳み込み層511及びプーリング層512の数は、実施の形態に応じて適宜選択されてよい。
【0078】
畳み込み層511は、画像の畳み込み演算を行う層である。画像の畳み込みとは、画像と所定のフィルタとの相関を算出する処理に相当する。そのため、画像の畳み込み演算を行うことで、例えば、フィルタの濃淡パターンと類似する濃淡パターンを入力される画像から検出することができる。プーリング層512は、プーリング処理を行う層である。プーリング処理は、画像のフィルタに対する応答の強い位置の情報を一部捨てることで、画像内に現れる特徴の微小な位置変化に対する応答の不変性を実現する。プーリング層512は、例えば、処理対象となる複数のピクセルから最大値のピクセルを選択するように構成された最大プーリング層であってよい。全結合層513は、隣接する層の間のニューロン全てを結合した層である。すなわち、全結合層513に含まれる各ニューロンは、隣接する層に含まれる全てのニューロンに結合される。全結合層513は、2層以上で構成されてもよい。
【0079】
各層511~513に含まれるニューロン(ノード)の数は、実施の形態に応じて適宜選択されてよい。隣接する層のニューロン同士は適宜結合され、各結合には重み(結合荷重)が設定されている。各ニューロンには閾値が設定されており、基本的には、各入力と各重みとの積の和が閾値を超えているか否かによって各ニューロンの出力が決定される。各層511~513に含まれる各ニューロン間の結合の重み及び各ニューロンの閾値は、演算処理に利用される第1部分51のパラメータの一例である。
【0080】
本実施形態に係る第2部分52も、第1部分51と同様に、いわゆる畳み込みニューラルネットワークにより構成されている。すなわち、第2部分52は、畳み込み層521、プーリング層522、及び全結合層523を備えている。本実施形態では、第2部分52の各層521~523は、第1部分51の各層511~513と同様に構成される。つまり、各層521~523に含まれるニューロンの数、及び隣接する層のニューロン同士の結合は、第1部分51と一致するように設定される。これにより、第1部分51及び第2部分52は、互いに同じ構造を有し、共通のパラメータを有するように構成される。各層521~523に含まれる各ニューロン間の結合の重み及び各ニューロンの閾値は、演算処理に利用される第2部分52のパラメータの一例である。
【0081】
一方、本実施形態に係る第3部分53は、第1部分51の入力側と出力側とを反転させたような構造を有している。具体的には、第3部分53は、全結合層531、アップサンプリング層532、畳み込み層533を備えている。アップサンプリング層532は、逆プーリング処理を行う層である。本実施形態に係る第3部分53では、全結合層531が最も入力側に配置されており、全結合層531の出力が、最も入力側に配置されたアップサンプリング層532に入力される。そして、アップサンプリング層532及び畳み込み層533が出力側で交互に配置されている。最も出力側に配置された畳み込み層533の出力が、第3部分53の出力に対応している。アップサンプリング層532及び畳み込み層533の数は、実施の形態に応じて適宜選択されてよい。また、全結合層531は、2層以上で構成されてもよい。各層531~533に含まれる各ニューロン間の結合の重み及び各ニューロンの閾値は、演算処理に利用される第3部分53のパラメータの一例である。
【0082】
第1部分51の最も入力側に配置された畳み込み層511は、シミュレーションデータ701の入力を受け付けるように構成される。第2部分52の最も入力側に配置された畳み込み層521は、実データ731の入力を受け付けるように構成される。第3部分53の全結合層531は、第1部分51及び第2部分52それぞれの出力を受け付けるように構成される。ただし、各部分51~53の構成は、このような例に限定されなくてもよく、実施の形態に応じて適宜設定されてよい。
【0083】
図5Aに示されるように、第1訓練ステップでは、第1学習処理部114は、第2部分52と第3部分53との結合を遮断(無視)する。そして、以下の手順により、第1学習処理部114は、各第1学習データセット70について、シミュレーションデータ701を第1部分51に入力すると、対応する第1環境情報702と一致する出力値が第3部分53から出力されるように、第1部分51及び第3部分53それぞれのパラメータの値を調節する。
【0084】
まず、第1学習処理部114は、各第1学習データセット70について、第1部分51の最も入力側に配置された畳み込み層511にシミュレーションデータ701を入力し、第1部分51及び第3部分53のパラメータを利用して、抽出器5の演算処理を実行する。この演算処理の結果、第1学習処理部114は、シミュレーションデータ701から環境情報を抽出した結果に対応する出力値を第3部分53の最も出力側に配置された畳み込み層533から取得する。次に、第1学習処理部114は、取得した出力値と第1環境情報702との誤差を算出する。そして、第1学習処理部114は、算出される誤差の和が小さくなるように、第1部分51及び第3部分53それぞれのパラメータの値を調節する。
【0085】
第3部分53から得られる出力値と第1環境情報702との誤差の和が閾値以下になるまで、第1学習処理部114は、第1部分51及び第3部分53それぞれのパラメータの値の調節を繰り返す。これにより、第1学習処理部114は、各第1学習データセット70について、シミュレーションデータ701を第1部分51に入力すると、対応する第1環境情報702と一致する出力値を第3部分53から出力するように訓練された抽出器5を構築することができる。
【0086】
次に、
図5Bに示されるとおり、第1訓練ステップを実行した後、第2訓練ステップを実行する前に、第1学習処理部114は、第1部分51の各パラメータの調節した値を第2部分52の対応するパラメータに複製する。第2訓練ステップでは、第1学習処理部114は、第2部分52と第3部分53との結合の遮断を解除し、第1部分51と第3部分53との結合を遮断(無視)する。そして、本実施形態では、以下の手順により、第1学習処理部114は、第3部分53のパラメータの値は固定のまま、各第2学習データセット73について、実データ731を第2部分52に入力すると、対応する第2環境情報732と一致する出力値が第3部分53から出力されるように、第2部分52のパラメータの値を調節する。
【0087】
まず、第1学習処理部114は、各第2学習データセット73について、第2部分52の最も入力側に配置された畳み込み層521に実データ731を入力し、第2部分52及び第3部分53のパラメータを利用して、抽出器5の演算処理を実行する。この演算処理の結果、第1学習処理部114は、実データ731から環境情報を抽出した結果に対応する出力値を第3部分53の最も出力側に配置された畳み込み層533から取得する。次に、第1学習処理部114は、取得した出力値と第2環境情報732との誤差を算出する。そして、第1学習処理部114は、算出される誤差の和が小さくなるように、第2部分52のパラメータの値を調節する。
【0088】
第3部分53から得られる出力値と第2環境情報732との誤差の和が閾値以下になるまで、第1学習処理部114は、第2部分52のパラメータの値の調節を繰り返す。これにより、第1学習処理部114は、各第2学習データセット73について、実データ731を第2部分52に入力すると、対応する第2環境情報732と一致する出力値を第3部分53から出力するように訓練された抽出器5を構築することができる。
【0089】
これらの訓練ステップが完了した後、保存処理部116は、構築された学習済みの抽出器5の構成(例えば、ニューラルネットワークの層数、各層におけるニューロンの個数、ニューロン同士の結合関係、各ニューロンの伝達関数)、及び演算パラメータ(例えば、各ニューロン間の結合の重み、各ニューロンの閾値)を示す第1学習結果データ125を生成する。そして、保存処理部116は、生成した第1学習結果データ125を記憶部12に保存する。
【0090】
(制御器)
次に、
図5Cを用いて、制御器6の構成の一例について説明する。
図5Cは、本実施形態に係る制御器6の機械学習の過程の一例を模式的に例示する。
図5Cに示されるとおり、本実施形態に係る制御器6は、いわゆる深層学習に用いられる多層構造のニューラルネットワークにより構成されており、入力層61、中間層(隠れ層)62、及び出力層63を備えている。ただし、制御器6の構成は、このような例に限定されなくてもよく、実施の形態に応じて適宜設定されてよい。例えば、制御器6は、2層以上の中間層62を備えてもよい。
【0091】
各層61~63に含まれるニューロンの数は、実施の形態に応じて適宜設定されてよい。隣接する層のニューロン同士は適宜結合され、各結合には重み(結合荷重)が設定されている。
図5Cの例では、各ニューロンは、隣接する層の全てのニューロンと結合されている。しかしながら、ニューロンの結合は、このような例に限定されなくてもよく、実施の形態に応じて適宜設定されてよい。各ニューロンには閾値が設定されており、基本的には、各入力と各重みとの積の和が閾値を超えているか否かによって各ニューロンの出力が決定される。各層61~63に含まれる各ニューロン間の結合の重み及び各ニューロンの閾値は、演算処理に利用される制御器6のパラメータの一例である。
【0092】
制御器6の機械学習では、まず、第2学習処理部115は、各第3学習データセット76について、第3環境情報761及び状態情報762を制御器6の入力層61に入力し、各層61~63のパラメータを利用して、制御器6の演算処理を実行する。この演算処理の結果、第2学習処理部115は、第3環境情報761及び状態情報762から制御コマンドを導出した結果に対応する出力値を出力層63から取得する。次に、第2学習処理部115は、取得した出力値と制御コマンド763との誤差を算出する。そして、第2学習処理部115は、算出される誤差の和が小さくなるように、制御器6のパラメータの値を調節する。
【0093】
出力層63から得られる出力値と制御コマンド763との誤差の和が閾値以下になるまで、第2学習処理部115は、制御器6のパラメータの値の調節を繰り返す。これにより、第2学習処理部115は、各第3学習データセット76について、第3環境情報761及び状態情報762を入力層61に入力すると、対応する制御コマンド763と一致する出力値を出力層63から出力するように訓練された制御器6を構築することができる。
【0094】
この機械学習の処理が完了した後、保存処理部116は、構築された学習済みの制御器6の構成(例えば、ニューラルネットワークの層数、各層におけるニューロンの個数、ニューロン同士の結合関係、各ニューロンの伝達関数)、及び演算パラメータ(例えば、各ニューロン間の結合の重み、各ニューロンの閾値)を示す第2学習結果データ128を生成する。そして、保存処理部116は、生成した第2学習結果データ128を記憶部12に保存する。
【0095】
なお、各第3学習データセット76の第3環境情報761は、機械学習が完了した後の抽出器5を利用して、センサをシミュレートすることで生成された他のシミュレーションデータ78から抽出することで得られてもよい。具体的には、第3データ取得部113は、シミュレーションデータ701と同様に生成されたシミュレーションデータ78を取得する。機械学習済みの抽出器5がRAM上に展開されていない場合には、第3データ取得部113は、第1学習結果データ125を参照して、機械学習済みの抽出器5の設定を行う。次に、第3データ取得部113は、シミュレーションデータ78を第1部分51に入力し、第1部分51及び第3部分53のパラメータを利用して、抽出器5の演算処理を実行する。この演算処理の結果、シミュレーションデータ78から環境情報を抽出した結果に対応する出力値が第3部分53から出力される。第3データ取得部113は、この第3部分53から出力される出力値を第3環境情報761として取得してもよい。
【0096】
<制御装置>
次に、
図6を用いて、本実施形態に係る制御装置2のソフトウェア構成の一例について説明する。
図6は、本実施形態に係る制御装置2のソフトウェア構成の一例を模式的に例示する。
【0097】
制御装置2の制御部21は、記憶部22に記憶された制御プログラム221をRAMに展開する。そして、制御部21は、RAMに展開された制御プログラム221をCPUにより解釈及び実行して、各構成要素を制御する。これによって、
図6に示されるとおり、本実施形態に係る制御装置2は、データ取得部211、情報抽出部212、コマンド決定部213、及び動作制御部214をソフトウェアモジュールとして備えるコンピュータとして動作する。すなわち、本実施形態では、制御装置2の各ソフトウェアモジュールも、上記学習装置1と同様に、制御部21(CPU)により実現される。
【0098】
データ取得部211は、産業用ロボットRのタスクを実行する環境を監視するセンサにより得られたセンサデータを取得する。本実施形態では、データ取得部211は、カメラCAにより得られた画像データ80をセンサデータとして取得する。また、データ取得部211は、タスクを実行する際の産業用ロボットRの状態に関する状態情報83を取得する。
【0099】
情報抽出部212は、第1学習結果データ125を保持することで、学習装置1により構築された機械学習済みの抽出器5を含んでいる。情報抽出部212は、第1学習結果データ125を参照して、機械学習済みの抽出器5の設定を行う。そして、情報抽出部212は、機械学習済みの抽出器5を利用して、タスクを実行する環境に関する環境情報81を画像データ80から抽出する。本実施形態では、情報抽出部212は、画像データ80を第2部分52に入力し、第2部分52及び第3部分53のパラメータを利用して、抽出器5の演算処理を実行する。この演算処理の結果、情報抽出部212は、環境情報81に対応する出力値を第3部分53から取得する。
【0100】
コマンド決定部213は、第2学習結果データ128を保持することで、学習装置1により構築された機械学習済みの制御器6を含んでいる。コマンド決定部213は、第2学習結果データ128を参照して、機械学習済みの制御器6の設定を行う。そして、コマンド決定部213は、機械学習済みの制御器6を利用して、環境情報81及び状態情報83により示される条件下でタスクを産業用ロボットRに実行させるための制御コマンド85を決定する。本実施形態では、コマンド決定部213は、環境情報81及び状態情報83を入力層61に入力し、各層61~63のパラメータを利用して、制御器6の演算処理を実行する。この演算処理の結果、コマンド決定部213は、決定された制御コマンド85に対応する出力値を出力層63から取得する。動作制御部214は、決定された制御コマンド85に基づいて、産業用ロボットRの動作を制御する。
【0101】
<その他>
学習装置1及び制御装置2の各ソフトウェアモジュールに関しては後述する動作例で詳細に説明する。なお、本実施形態では、学習装置1及び制御装置2の各ソフトウェアモジュールがいずれも汎用のCPUによって実現される例について説明している。しかしながら、以上のソフトウェアモジュールの一部又は全部が、1又は複数の専用のプロセッサにより実現されてもよい。また、学習装置1及び制御装置2それぞれのソフトウェア構成に関して、実施形態に応じて、適宜、ソフトウェアモジュールの省略、置換及び追加が行われてもよい。
【0102】
§3 動作例
[学習装置]
次に、学習装置1の動作例について説明する。本実施形態に係る学習装置1は、抽出器5の機械学習を実施する第1モード及び制御器6の機械学習を実施する第2モードの2つのモードのいずれかを選択し、選択されたモードで動作可能に構成されている。以下で説明する各モードにおける処理手順は、本発明の「学習方法」の一例である。ただし、必ずしも2つのモードに分かれていなければならない訳ではない。各モードは、適宜省略又は変更されてよい。また、以下で説明する処理手順は一例に過ぎず、各処理は可能な限り変更されてよい。更に、以下で説明する処理手順について、実施の形態に応じて、適宜、ステップの省略、置換、及び追加が可能である。
【0103】
<抽出器の機械学習>
まず、
図7を用いて、本実施形態に係る学習装置1による抽出器5の機械学習(第1モード)の処理手順の一例について説明する。
図7は、本実施形態に係る学習装置1による抽出器5の機械学習の処理手順の一例を示すフローチャートである。
【0104】
(ステップS101)
ステップS101では、制御部11は、第1データ取得部111として動作し、シミュレーションデータ701及び第1環境情報702の組み合わせによりそれぞれ構成された複数の第1学習データセット70を取得する。
【0105】
各第1学習データセット70を取得する方法は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。例えば、シミュレータを用意し、様々な条件でセンサをシミュレートすることで、シミュレーションデータ701を生成することができる。シミュレータは、ロボット装置のタスクを実行する環境をシミュレート可能であれば、その種類は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。タスクの種類は、特に限定されなくてもよく、ロボット装置の種類に応じて適宜選択されてよい。シミュレータは、例えば、センサ、ロボット装置、ワーク等のオブジェクトを仮想空間上に配置し、仮想空間上でロボット装置にタスクの実行を模擬可能なソフトウェアである。タスクは、例えば、ワークの把持、把持したワークの解放等である。本実施形態では、産業用ロボットRのタスクを実行する環境を監視するセンサとしてカメラCAが利用されている。そのため、シミュレータにより、カメラCAにより得られる撮影画像を模した画像データがシミュレーションデータ701として生成される。このとき、シミュレーションデータ701は、センサをシミュレートする条件をランダムに変更しながら生成されてよい。本実施形態では、シミュレーションの条件は、例えば、カメラCAの位置、カメラCAの視野(field of view)、カメラCAの焦点距離、照明条件、各領域に貼り付けるテクスチャの種類、産業用ロボットRの属性、配置するワークの属性等である。
【0106】
また、シミュレーションの条件に応じて、第1環境情報702を適宜生成することができる。第1環境情報702は、ロボット装置のタスクを実行する環境に関するものであれば、その種類は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。第1環境情報702は、例えば、セグメンテーション情報、タスクの対象となるワークの属性に関する情報、タスクを実行する位置に関する情報、障害物の有無を示す情報、及び障害物の属性に関する情報の少なくともいずれかを含んでよい。セグメンテーション情報は、画像内に写る各対象物を識別することで、各対象物の領域を区分けした結果を示す。セグメンテーション情報は、各対象物を識別した結果に基づいて推定された各対象物の属性を示す情報を含んでもよい。ワークの属性に関する情報は、例えば、ワークの位置、形状、寸法、姿勢、重さ、温度等を示す。タスクを実行する位置に関する情報は、例えば、ワークを解放する位置を示す。障害物の属性に関する情報は、例えば、障害物の位置、形状、寸法、姿勢、重さ、温度等を示す。生成された第1環境情報702を対応するシミュレーションデータ701に組み合わせる(対応付ける)ことで、各第1学習データセット70を生成することができる。
【0107】
各第1学習データセット70は、コンピュータの動作により自動的に生成されてもよいし、オペレータの操作により手動的に生成されてもよい。また、各第1学習データセット70の生成は、学習装置1により行われてもよいし、学習装置1以外の他のコンピュータにより行われてもよい。各第1学習データセット70を学習装置1が生成する場合、制御部11は、自動的に又はオペレータの操作により手動的に上記一連の処理を実行することで、複数の第1学習データセット70を取得する。一方、各第1学習データセット70を他のコンピュータが生成する場合、制御部11は、例えば、ネットワーク、記憶媒体91等を介して、他のコンピュータにより生成された複数の第1学習データセット70を取得する。
【0108】
取得する第1学習データセット70の件数は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。複数件の第1学習データセット70を取得すると、制御部11は、次のステップS102に処理を進める。
【0109】
(ステップS102)
ステップS102では、制御部11は、第1学習処理部114として動作し、複数の第1学習データセット70を利用して、抽出器5の機械学習を実施する。この機械学習では、制御部11は、各第1学習データセットについて、シミュレーションデータ701から、対応する第1環境情報702と一致する環境情報を抽出するように抽出器5を訓練する。本ステップS102は、本発明の「第1訓練ステップ」の一例である。
【0110】
詳細には、まず、制御部11は、処理対象となる抽出器5を用意する。用意する抽出器5の構成、各ニューロン間の結合の重みの初期値、及び各ニューロンの閾値の初期値は、テンプレートにより与えられてもよいし、オペレータの入力により与えられてもよい。また、再学習を行う場合には、制御部11は、過去の機械学習を行うことで得られた学習結果データに基づいて、抽出器5を用意してもよい。
【0111】
次に、制御部11は、ステップS101で取得した各第1学習データセット70に含まれるシミュレーションデータ701を入力データとして利用し、対応する第1環境情報702を教師データとして利用して、抽出器5の第1部分51及び第3部分53の学習処理を実行する。この学習処理には、確率的勾配降下法等が用いられてよい。本実施形態では、この学習処理では、第2部分52と第3部分53との結合は無視される。
【0112】
例えば、第1のステップでは、制御部11は、各第1学習データセット70について、第1部分51の最も入力側に配置された畳み込み層511にシミュレーションデータ701を入力し、入力側から順に各層(511~513、531~533)に含まれる各ニューロンの発火判定を行う。これにより、制御部11は、シミュレーションデータ701から環境情報を抽出した結果に対応する出力値を第3部分53の最も出力側に配置された畳み込み層533から取得する。第2のステップでは、制御部11は、取得した出力値と対応する第1環境情報702との誤差を算出する。第3のステップでは、制御部11は、誤差逆伝播(Back propagation)法により、算出した出力値の誤差を用いて、各ニューロン間の結合の重み及び各ニューロンの閾値それぞれの誤差を算出する。第4のステップでは、制御部11は、算出した各誤差に基づいて、各ニューロン間の結合の重み及び各ニューロンの閾値それぞれの値の更新を行う。
【0113】
制御部11は、上記第1~第4のステップを繰り返すことで、各第1学習データセット70について、シミュレーションデータ701を第1部分51に入力すると、対応する第1環境情報702と一致する出力値が第3部分53から出力されるように、第1部分51及び第3部分53それぞれのパラメータの値を調節する。換言すると、制御部11は、各第1学習データセット70について、第3部分53の最も出力側に配置された畳み込み層533から得られる出力値と第1環境情報702との誤差の和が閾値以下になるまで、上記第1~第4のステップによる第1部分51及び第3部分53のパラメータの値の調節を繰り返す。閾値は、実施の形態に応じて適宜設定されてよい。これにより、制御部11は、各第1学習データセット70について、シミュレーションデータ701を第1部分51に入力すると、対応する第1環境情報702と一致する出力値を第3部分53から出力するように訓練された抽出器5を構築することができる。この第1学習データセット70を利用した機械学習が完了すると、制御部11は、次のステップS103に処理を進める。
【0114】
(ステップS103)
ステップS103では、制御部11は、第2データ取得部112として動作し、実データ731及び第2環境情報732の組み合わせによりそれぞれ構成された複数の第2学習データセット73を取得する。
【0115】
各第2学習データセット73を取得する方法は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。例えば、センサ、ロボット装置、ワーク等の実環境を用意し、ロボット装置がタスクを実行する様子をセンサにより様々な条件でモニタリングすることで、実データ731を取得することができる。本実施形態では、実データ731は、産業用ロボットRのタスクを実行する環境をカメラCAにより撮影することで得られる画像データ(撮影画像)である。第2環境情報732の種類及び形式は、上記第1環境情報702と同様であってよい。実環境の条件に応じて、第2環境情報732を適宜生成することができる。生成された第2環境情報732を対応する実データ731に組み合わせる(対応付ける)ことで、各第2学習データセット73を生成することができる。
【0116】
各第2学習データセット73は、コンピュータの動作により自動的に生成されてもよいし、オペレータの操作により手動的に生成されてもよい。また、各第2学習データセット73の生成は、学習装置1により行われてもよいし、学習装置1以外の他のコンピュータにより行われてもよい。各第2学習データセット73を学習装置1が生成する場合、制御部11は、自動的に又はオペレータの操作により手動的に上記一連の処理を実行することで、複数の第2学習データセット73を取得する。一方、各第2学習データセット73を他のコンピュータが生成する場合、制御部11は、例えば、ネットワーク、記憶媒体91等を介して、他のコンピュータにより生成された複数の第2学習データセット73を取得する。
【0117】
取得する第2学習データセット73の件数は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。複数件の第2学習データセット73を取得すると、制御部11は、次のステップS104に処理を進める。
【0118】
(ステップS104)
ステップS104では、制御部11は、第1学習処理部114として動作し、複数の第2学習データセット73を利用して、抽出器5の機械学習を実施する。この機械学習では、制御部11は、各第2学習データセット73について、実データ731から、対応する第2環境情報732と一致する環境情報を抽出するように抽出器5を訓練する。本ステップS104は、本発明の「第2訓練ステップ」の一例である。
【0119】
詳細には、まず、制御部11は、上記ステップS102を実行した後、本ステップS104を実行する前に、第1部分51の各パラメータの調節した値を第2部分52の対応するパラメータに複製する。次に、制御部11は、ステップS103で取得した各第2学習データセット73に含まれる実データ731を入力データとして利用し、対応する第2環境情報732を教師データとして利用して、抽出器5の第2部分52の学習処理を実行する。本実施形態では、この学習処理では、第1部分51と第3部分53との結合は無視され、第3部分53のパラメータの値の調節は省略される。
【0120】
この学習処理の処理手順は、上記ステップS102と同様であってよい。すなわち、第1のステップでは、制御部11は、各第2学習データセット73について、第2部分52の最も入力側に配置された畳み込み層521に実データ731を入力し、入力側から順に各層(521~523、531~533)に含まれる各ニューロンの発火判定を行う。これにより、制御部11は、実データ731から環境情報を抽出した結果に対応する出力値を第3部分53の最も出力側に配置された畳み込み層533から取得する。第2のステップでは、制御部11は、取得した出力値と第2環境情報732との誤差を算出する。第3のステップでは、制御部11は、誤差逆伝播法により、算出した出力値の誤差を用いて、第2部分52における各ニューロン間の結合の重み及び各ニューロンの閾値それぞれの誤差を算出する。第4のステップでは、制御部11は、算出した各誤差に基づいて、第2部分52における各ニューロン間の結合の重み及び各ニューロンの閾値それぞれの値の更新を行う。
【0121】
制御部11は、上記第1~第4のステップを繰り返すことで、第3部分53のパラメータの値は固定のまま、各第2学習データセット73について、実データ731を第2部分52に入力すると、対応する第2環境情報732と一致する出力値が第3部分53から出力されるように、第2部分52のパラメータの値を調節する。換言すると、制御部11は、各第2学習データセット73について、第3部分53の最も出力側に配置された畳み込み層533から得られる出力値と第2環境情報732との誤差の和が閾値以下になるまで、上記第1~第4のステップによる第2部分52のパラメータの値の調節を繰り返す。閾値は、実施の形態に応じて適宜設定されてよい。これにより、制御部11は、各第2学習データセット73について、実データ731を第2部分52に入力すると、対応する第2環境情報732と一致する出力値を第3部分53から出力するように訓練された抽出器5を構築することができる。この第2学習データセット73を利用した機械学習が完了すると、制御部11は、次のステップS105に処理を進める。
【0122】
(ステップS105)
ステップS105では、制御部11は、保存処理部116として動作し、機械学習済みの抽出器5に関する情報を第1学習結果データ125として記憶部12に保存する。本実施形態では、制御部11は、上記ステップS102及びS104により、第1学習データセット70及び第2学習データセット73を利用して、抽出器5の機械学習を実施している。つまり、抽出器5の機械学習を実施することは、上記ステップS102及びS104を含んでいる。ステップS105では、制御部11は、ステップS102及びS104の機械学習により構築された抽出器5の構成及びパラメータを示す情報を第1学習結果データ125として生成する。そして、制御部11は、生成した第1学習結果データ125を記憶部12に保存する。これにより、制御部11は、本実施形態に係る抽出器5の機械学習(第1モード)の一連の処理を終了する。
【0123】
なお、第1学習結果データ125の保存先は、記憶部12に限られなくてもよい。制御部11は、例えば、NAS(Network Attached Storage)等のデータサーバに第1学習結果データ125を格納してもよい。第1学習結果データ125は、第1部分51に関する情報を含んでいてもよいし、含んでいなくてもよい。また、制御部11は、生成した第1学習結果データ125を任意のタイミングで制御装置2に転送してよい。制御装置2は、学習装置1から転送を受け付けることで第1学習結果データ125を取得してもよいし、学習装置1又はデータサーバにアクセスすることで第1学習結果データ125を取得してもよい。第1学習結果データ125は、制御装置2に予め組み込まれてもよい。
【0124】
更に、制御部11は、上記ステップS101~S105の処理を定期的に繰り返すことで、第1学習結果データ125を定期的に更新してもよい。この繰り返す際には、第1学習データセット70及び第2学習データセット73の変更、修正、追加、削除等が適宜実行されてよい。そして、制御部11は、更新した第1学習結果データ125を学習処理の実行毎に制御装置2に転送することで、制御装置2に保持される第1学習結果データ125を定期的に更新してもよい。
【0125】
<制御器の機械学習>
次に、
図8を用いて、本実施形態に係る学習装置1による制御器6の機械学習(第2モード)の処理手順の一例について説明する。
図8は、本実施形態に係る学習装置1による制御器6の機械学習の処理手順の一例を示すフローチャートである。
【0126】
(ステップS201)
ステップS201では、制御部11は、第3データ取得部113として動作し、第3環境情報761及び状態情報762並びに制御コマンド763の組み合わせによりそれぞれ構成された複数の第3学習データセット76を取得する。
【0127】
各第3学習データセット76を取得する方法は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。例えば、上記シミュレータ又は実環境を用意し、用意したシミュレータ又は実環境の条件に応じて、第3環境情報761を適宜生成することができる。第3環境情報761の種類及び形式は、上記第1環境情報702及び第2環境情報732と同様であってよい。
【0128】
或いは、第3環境情報761は、機械学習が完了した後の抽出器5を利用して、他のシミュレーションデータ78から抽出することで生成されてもよい。具体的には、シミュレーションデータ78を第1部分51に入力し、入力側から順に各層(511~513、531~533)に含まれる各ニューロンの発火判定を行う。これにより、シミュレーションデータ78から環境情報を抽出した結果に対応する出力値が第3部分53から出力される。この第3部分53から出力される出力値を第3環境情報761として取得してもよい。なお、シミュレーションデータ78は、上記シミュレーションデータ701と同様の方法で取得されてよい。また、機械学習済みの抽出器5の設定は、第1学習結果データ125を参照を参照することで行われてよい。
【0129】
また、シミュレーション又は実環境の条件に応じて、状態情報762を適宜生成することができる。更に、シミュレーション又は実環境の条件及び実行するタスクに応じて、制御コマンド763を適宜生成することができる。状態情報762は、例えば、産業用ロボットRの駆動部の位置、向き、角度、加速度等を含んでよい。制御コマンド763は、例えば、産業用ロボットRの駆動量(例えば、サーボモータの駆動量)等を規定してよい。生成された状態情報762及び制御コマンド763を対応する第3環境情報761に組み合わせる(対応付ける)ことで、各第3学習データセット76を生成することができる。
【0130】
各第3学習データセット76は、コンピュータの動作により自動的に生成されてもよいし、オペレータの操作により手動的に生成されてもよい。また、各第3学習データセット76の生成は、学習装置1により行われてもよいし、学習装置1以外の他のコンピュータにより行われてもよい。各第3学習データセット76を学習装置1が生成する場合、制御部11は、自動的に又はオペレータの操作により手動的に上記一連の処理を実行することで、複数の第3学習データセット76を取得する。一方、各第3学習データセット76を他のコンピュータが生成する場合、制御部11は、例えば、ネットワーク、記憶媒体91等を介して、他のコンピュータにより生成された複数の第3学習データセット76を取得する。
【0131】
取得する第3学習データセット76の件数は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。複数件の第3学習データセット76を取得すると、制御部11は、次のステップS202に処理を進める。
【0132】
(ステップS202)
ステップS202では、制御部11は、第2学習処理部115として動作し、複数の第3学習データセット76を利用して、制御器6の機械学習を実施する。この機械学習では、制御部11は、各第3学習データセット76について、第3環境情報761及び状態情報762が入力されると、対応する制御コマンド763と一致する制御コマンドを出力するように制御器6を訓練する。本ステップS202は、本発明の「制御器を訓練する訓練ステップ」の一例である。
【0133】
詳細には、まず、制御部11は、処理対象となる制御器6を用意する。用意する制御器6の構成、各ニューロン間の結合の重みの初期値、及び各ニューロンの閾値の初期値は、テンプレートにより与えられてもよいし、オペレータの入力により与えられてもよい。また、再学習を行う場合には、制御部11は、過去の機械学習を行うことで得られた学習結果データに基づいて、制御器6を用意してもよい。
【0134】
次に、制御部11は、ステップS201で取得した各第3学習データセット76に含まれる第3環境情報761及び状態情報762を入力データとして利用し、対応する制御コマンド763を教師データとして利用して、制御器6の学習処理を実行する。この学習処理は、上記ステップS102及びS104と同様であってよい。すなわち、第1のステップでは、制御部11は、各第3学習データセット76について、第3環境情報761及び状態情報762を入力層61に入力し、入力側から順に各層61~63に含まれる各ニューロンの発火判定を行う。これにより、制御部11は、第3環境情報761及び状態情報762から制御コマンドを導出した結果に対応する出力値を出力層63から取得する。第2のステップでは、制御部11は、取得した出力値と制御コマンド763との誤差を算出する。第3のステップでは、制御部11は、誤差逆伝播法により、算出した出力値の誤差を用いて、制御器6における各ニューロン間の結合の重み及び各ニューロンの閾値それぞれの誤差を算出する。第4のステップでは、制御部11は、算出した各誤差に基づいて、制御器6における各ニューロン間の結合の重み及び各ニューロンの閾値それぞれの値の更新を行う。
【0135】
制御部11は、上記第1~第4のステップを繰り返すことで、各第3学習データセット76について、第3環境情報761及び状態情報762を入力すると、対応する制御コマンド763と一致する出力値を出力するように、制御器6のパラメータの値を調節する。換言すると、制御部11は、各第3学習データセット76について、出力層63から得られる出力値と制御コマンド763との誤差の和が閾値以下になるまで、上記第1~第4のステップによる制御器6のパラメータの値の調節を繰り返す。閾値は、実施の形態に応じて適宜設定されてよい。これにより、制御部11は、各第3学習データセット76について、第3環境情報761及び状態情報762を入力すると、対応する制御コマンド763と一致する出力値を出力するように訓練された制御器6を構築することができる。この制御器6の機械学習が完了すると、制御部11は、次のステップS203に処理を進める。
【0136】
(ステップS203)
ステップS203では、制御部11は、保存処理部116として動作し、機械学習済みの制御器6に関する情報を第2学習結果データ128として記憶部12に保存する。本実施形態では、制御部11は、ステップS202の機械学習により構築された制御器6の構成及びパラメータを示す情報を第2学習結果データ128として生成する。そして、制御部11は、生成した第2学習結果データ128を記憶部12に保存する。これにより、制御部11は、本実施形態に係る制御器6の機械学習(第2モード)の一連の処理を終了する。
【0137】
なお、第2学習結果データ128の保存先は、上記第1学習結果データ125と同様に、記憶部12に限られなくてもよい。また、第2学習結果データ128は、上記第1学習結果データ125と同様に、任意のタイミングで制御装置2に組み込まれてよい。更に、制御部11は、上記ステップS201~S203の処理を定期的に繰り返すことで、第2学習結果データ128を定期的に更新してもよい。この繰り返す際には、第3学習データセット76の変更、修正、追加、削除等が適宜実行されてよい。そして、制御部11は、更新した第2学習結果データ128を学習処理の実行毎に制御装置2に転送することで、制御装置2に保持される第2学習結果データ128を定期的に更新してもよい。
【0138】
[制御装置]
次に、
図9を用いて、制御装置2の動作例について説明する。
図9は、本実施形態に係る制御装置2の処理手順の一例を示すフローチャートである。ただし、以下で説明する処理手順は一例に過ぎず、各処理は可能な限り変更されてよい。また、以下で説明する処理手順について、実施の形態に応じて、適宜、ステップの省略、置換、及び追加が可能である。
【0139】
(ステップS301)
ステップS301では、制御部21は、データ取得部211として動作し、産業用ロボットRのタスクを実行する環境を監視するセンサにより得られたセンサデータを取得する。本実施形態では、制御部21は、外部インタフェース24を介して、カメラCAにより産業用ロボットRの環境を撮影することで得られた画像データ80をセンサデータとして取得する。画像データ80は、動画像データであってもよいし、静止画像データであってもよい。
【0140】
また、制御部21は、タスクを実行する際の産業用ロボットRの状態に関する状態情報83を取得する。例えば、制御部21は、外部インタフェース24を介して産業用ロボットRに現在状態を問い合わせることで、状態情報83を取得してもよい。状態情報83の種類及び形式は、上記状態情報762と同様であってよい。画像データ80及び状態情報83を取得すると、制御部21は、次のステップS302に処理を進める。
【0141】
ただし、画像データ80及び状態情報83を取得する経路は、このような例に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。例えば、カメラCA及び産業用ロボットRは、制御装置2と異なる他のコンピュータに接続されてよい。この場合、制御装置2は、他のコンピュータからの画像データ80及び状態情報83の送信を受け付けることで、画像データ80及び状態情報83を取得してもよい。
【0142】
(ステップS302)
ステップS302では、制御部21は、情報抽出部212として動作し、機械学習済みの抽出器5を利用して、タスクを実行する環境に関する環境情報81を画像データ80から抽出する。本実施形態では、制御部21は、第1学習結果データ125を参照して、機械学習済みの抽出器5の設定を行う。そして、制御部21は、画像データ80を第2部分52に入力し、入力側から順に各層(521~523、531~533)に含まれる各ニューロンの発火判定を行う。これにより、制御部21は、画像データ80から環境情報81を抽出した結果に対応する出力値を第3部分53から取得する。環境情報81を取得すると、制御部21は、次のステップS303に処理を進める。
【0143】
(ステップS303)
ステップS303では、制御部21は、コマンド決定部213として動作し、機械学習済みの制御器6を利用して、環境情報81及び状態情報83により示される条件下でタスクを産業用ロボットRに実行させるための制御コマンド85を決定する。本実施形態では、制御部21は、第2学習結果データ128を参照して、機械学習済みの制御器6の設定を行う。そして、制御部21は、環境情報81及び状態情報83を入力層61に入力し、入力側から順に各層61~63に含まれる各ニューロンの発火判定を行う。これにより、制御部21は、環境情報81及び状態情報83から制御コマンド85を導出した結果に対応する出力値を出力層63から取得する。この出力値を得ることで、制御部21は、制御コマンド85を決定する。制御コマンド85を決定すると、制御部21は、次のステップS304に処理を進める。
【0144】
(ステップS304)
ステップS304では、制御部21は、動作制御部214として動作し、決定した制御コマンド85に基づいて、産業用ロボットRの動作を制御する。本実施形態では、制御部21は、外部インタフェース24を介して、制御コマンド85に対応する制御信号を産業用ロボットRに送信することで、制御コマンド85により規定される動作を産業用ロボットRに実行させる。これにより、産業用ロボットRの動作を制御すると、制御部21は、本動作例に係る処理を終了する。この後、制御部21は、ステップS301から一連の処理を繰り返すことで、産業用ロボットRの動作を継続的に制御してもよい。
【0145】
[特徴]
以上のように、本実施形態では、産業用ロボットRの動作を制御するための制御モジュールが、抽出器5及び制御器6の2つの構成要素に分割されている。本実施形態に係る学習装置1は、ステップS101~S104の一連の処理により、シミュレーションデータ701及び実データ731の両方を利用して、両データ(701、731)から共通の特徴(環境情報)を抽出するように抽出器5を構築する。これにより、シミュレーションデータ701と実データ731との間の乖離を吸収した上で、ステップS102によるシミュレーションデータ701を利用した第1訓練ステップの成果を、ステップS104による実データ731を利用した第2訓練ステップに反映させることができる。そのため、機械学習に利用するシミュレーションデータ701(第1学習データセット70)の件数が十分であれば、機械学習に利用する実データ731(第2学習データセット73)の件数が少なくても、実環境で得られるセンサデータから環境情報を精度よく抽出可能な機械学習済みの抽出器5を構築することができる。
【0146】
加えて、センサデータから抽出される特徴(環境情報)は、シミュレーションにより実環境と同様に得ることが可能である。そのため、ステップS201及びS202では、産業用ロボットRの実機を用いず、シミュレータを用いても、得られた第3学習データセット76を利用した機械学習により、実環境で運用可能な機械学習済みの制御器6を構築することができる。したがって、本実施形態によれば、抽出器5及び制御器6の2つの構成要素に制御モジュールを分離することで、学習データの少なくとも一部に(好ましくは、大部分で)シミュレーションデータ701を採用することができるようになるため、機械学習に利用する学習データを収集するのにかかるコストを低減することができる。更に、この機械学習により構築された抽出器5及び制御器6により、実環境で運用可能な制御モジュールを構成することができる。よって、本実施形態によれば、産業用ロボットRを制御する能力を制御モジュールに習得させるための機械学習に利用する学習データを収集するコストを低減しつつ、その機械学習により実環境で運用可能な制御モジュールを構築することができる。また、本実施形態に係る制御装置2は、そのように構築された制御モジュールを利用して、ステップS301~S304の処理を実行することで、産業用ロボットRの動作を実環境で適切に制御することができる。
【0147】
なお、本実施形態では、ステップS101において、シミュレーションの条件をランダムに変更しながら生成されたシミュレーションデータ701を取得してもよい。これにより、ステップS102では、そのシミュレーションデータ701を含む各第1学習データセット70を利用した機械学習を実施することで、環境の変更にロバストな抽出器5を構築することができる。また、本実施形態に係る学習装置1は、上記ステップS104において、第3部分53のパラメータの値は固定のまま、第2部分52のパラメータの値を調節する。これにより、シミュレーションデータ701と実データ731との差分を入力側の構成(第1部分51及び第2部分52)で吸収しつつ、ステップS104において更新するパラメータの総数を低減することができるため、学習処理にかかる計算量を抑えることができる。
【0148】
また、本実施形態によれば、制御モジュールを1つの学習モデルにより構築する場合に比べて、抽出器5及び制御器6の構成は簡易である。そのため、ステップS102、S104及びS202の学習処理並びにステップS302及びS303のコマンド決定処理の計算コストを抑えることができる。
【0149】
更に、本実施形態では、抽出器5の学習処理(ステップS102、S104)及び制御器6の学習処理(ステップS202)を個別に実施することができる。そのため、抽出器5のみを入れ替え又は再学習することができ、これにより、産業用ロボットRを利用する環境の変更に適応することができる。また、制御器6のみを入れ替え又は再学習することができ、これにより、産業用ロボットRの変更に適応することができる。したがって、本実施形態によれば、制御モジュール全体を入れ替えるのではなく、抽出器5及び制御器6のいずれかを入れ替えることで、制御装置2を実環境の変更に適応させることができる。よって、制御装置2を実環境の変更に適応させるコストを低減することができる。
【0150】
§4 変形例
以上、本発明の実施の形態を詳細に説明してきたが、前述までの説明はあらゆる点において本発明の例示に過ぎない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。例えば、以下のような変更が可能である。なお、以下では、上記実施形態と同様の構成要素に関しては同様の符号を用い、上記実施形態と同様の点については、適宜説明を省略した。以下の変形例は適宜組み合わせ可能である。
【0151】
<4.1>
上記実施形態では、抽出器5には畳み込みニューラルネットワークが利用され、制御器6には多層構造の全結合ニューラルネットワークが用いられている。しかしながら、抽出器5及び制御器6それぞれを構成するニューラルネットワークの構造及び種類は、このような例に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。例えば、抽出器5及び制御器6それぞれには、再帰型ニューラルネットワークが用いられてもよい。
【0152】
また、抽出器5及び制御器6それぞれを構成する学習モデルは、ニューラルネットワークに限られなくてもよく、実施の形態に応じて適宜選択されてよい。抽出器5及び制御器6それぞれの学習モデルには、例えば、サポートベクタマシン等のニューラルネットワーク以外の学習モデルが用いられてよい。また、上記実施形態では、各学習結果データ(125、128)は、学習済みのニューラルネットワークの構成を示す情報を含んでいる。しかしながら、各学習結果データ(125、128)の構成は、このような例に限定されなくてもよく、学習済みの抽出器5及び制御器6それぞれの設定に利用可能であれば、実施の形態に応じて適宜決定されてよい。例えば、抽出器5及び制御器6それぞれにおけるニューラルネットワークの構成が各装置で共通化されている場合、各学習結果データ(125、128)は、学習済みのニューラルネットワークの構成を示す情報を含んでいなくてもよい。
【0153】
<4.2>
上記実施形態に係る各情報処理(
図7~
図9)について、実施の形態に応じて、適宜、ステップの省略、置換、及び追加が可能である。例えば、ステップS101がステップS102の前に実行され、ステップS103がステップS104の前に実行されるのであれば、ステップS101~S104の処理順序は適宜変更されてよい。上記ステップS104では、第3部分53のパラメータの値を固定するのではなく、ステップS102と同様に、第2部分52及び第3部分53のパラメータの値を調節してもよい。上記ステップS301における状態情報83を取得する処理は、ステップS303の処理を実行するまでに完了していればよい。また、例えば、第2訓練ステップ(ステップS104)は、第1訓練ステップ(ステップS102)の前に実行されてもよい。この場合、制御部11は、第2訓練ステップ(ステップS104)を実行することで、第2部分52のパラメータの値を調節する。この第2訓練ステップでは、第3部分53のパラメータの値は、上記実施形態と同様に固定のままであってもよいし、第2部分52と共に調節されてもよい。第2訓練ステップを実行した後、制御部11は、第2部分52の各パラメータの調節した値を第1部分51の対応するパラメータに複製する。続いて、制御部11は、第1訓練ステップ(ステップS102)を実行することで、第1部分51のパラメータの値を調節する。この第1訓練ステップでは、第3部分53のパラメータの値は、上記実施形態と同様に第1部分51と共に調節されてもよいし、固定のままであってもよい。第1訓練ステップを実行した後、制御部11は、第1部分51の各パラメータの調節した値を第2部分52の対応するパラメータに複製する。これにより、シミュレーションデータ701を利用した機械学習の成果を実データ731を利用した機械学習に反映させることができる。
【0154】
<4.3>
上記実施形態では、抽出器5の出力は環境情報に直接的に対応し、制御器6の出力は制御コマンドに直接的に対応することを想定している。しかしながら、抽出器5及び制御器6の出力形式は、このような例に限定されなくてもよい。上記実施形態において、抽出器5の出力値に対して何らかの情報処理を実行することで環境情報が導出されてよい。同様に、制御器6の出力値に対して何らかの情報処理を実行することで制御コマンドが導出されてもよい。
【0155】
また、上記実施形態では、各環境情報(702、732、761)は、ニューラルネットワークの最終層(畳み込み層533)の出力に対応している。しかしながら、各環境情報(702、732、761)の形式は、このような例に限定されなくてもよい。上記実施形態に係る学習装置1は、上記ステップS104において、第3部分53のパラメータの値は固定のまま、第2部分52のパラメータの値を調節する。これにより、シミュレーションデータ701と実データ731との差分を入力側の構成(第1部分51及び第2部分52)で吸収しつつ、第1部分51及び第2部分52の出力が共通の特徴空間に写像されるようにニューラルネットワークを構築することができる。そこで、このニューラルネットワークにおいて、共通の特徴空間を構築する中間層から出力される特徴量を各環境情報(702、732、761)として利用してもよい。例えば、各環境情報(702、732、761)のうち少なくとも第3環境情報761は、ニューラルネットワークの中間層から出力される特徴量で表現されてもよい。
【0156】
図10及び
図11は、ニューラルネットワークの中間層から出力される特徴量で環境情報を表現する変形例の一例を示す。
図10は、本変形例に係る学習装置1において第3環境情報761Aを導出する過程の一例を模式的に例示する。
図11は、本変形例に係る制御装置2において環境情報81Aを導出する過程の一例を模式的に例示する。
図10及び
図11の変形例は、第3環境情報761A及び環境情報81Aが第3部分53の全結合層531の出力に対応している点を除き、上記実施形態と同様である。
【0157】
図10に示されるとおり、本変形例に係る学習装置1は、上記ステップS201において、第3環境情報761A及び状態情報762並びに制御コマンド763の組み合わせによりそれぞれ構成された複数の第3学習データセット76Aを取得する。シミュレーションデータ78を第1部分51に入力し、入力側から順に各層(511~513、531)に含まれる各ニューロンの発火判定を行う。これにより、全結合層531から出力される出力値が第3環境情報761Aとして取得される。上記ステップS202において、制御部11は、このように取得された複数の第3学習データセット76Aを利用して、制御器6Aの機械学習を実施する。制御器6Aの構成は、上記実施形態に係る制御器6と同様である。上記ステップS203において、制御部11は、機械学習済みの制御器6Aの構成及びパラメータを示す情報を第2学習結果データ128Aとして記憶部12に保存する。
【0158】
一方、
図11に示されるとおり、本変形例に係る制御装置2は、このように構築された機械学習済みの制御器6Aを利用する。具体的に、上記ステップS302において、制御部21は、画像データ80を第2部分52に入力し、入力側から順に各層(521~523、531)に含まれる各ニューロンの発火判定を行う。これにより、制御部21は、全結合層531から出力される出力値を環境情報81Aとして取得する。上記ステップS303において、制御部21は、第2学習結果データ128Aを参照して、機械学習済みの制御器6Aの設定を行う。そして、制御部21は、環境情報81A及び状態情報83を入力層61に入力し、入力側から順に各層61~63に含まれる各ニューロンの発火判定を行う。これにより、制御部21は、環境情報81A及び状態情報83から制御コマンド85を導出した結果に対応する出力値を出力層63から取得する。これにより、本変形例では、ニューラルネットワークの中間層から出力される特徴量で表現された環境情報を利用して、上記実施形態と同様に動作することができる。
【0159】
<4.4>
上記実施形態では、産業用ロボットRの環境を監視するセンサとして、カメラCAが利用されている。しかしながら、産業用ロボットRの環境を監視するセンサは、このような例に限定されなくてもよい。センサは、例えば、カメラ、圧力センサ、ロードセル及びこれらの組み合わせにより構成されてよい。シミュレーションデータ701及び実データ731は、利用するセンサに応じて適宜取得されてよい。
【0160】
<4.5>
上記実施形態では、制御対象のロボット装置として、産業用ロボットRを例示している。しかしながら、制御対象のロボット装置は、自動的に駆動可能に構成された少なくとも1つの駆動部を有している装置であれば、その種類は、このような例に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。ロボット装置には、上記産業用ロボットRの他、例えば、自律型ロボット、自動運転動作を実行可能に構成された移動体(例えば、ドローン等の飛行体、自動車等の車両)等が採用されてよい。センサは、ロボット装置のタスクを実行する環境をモニタリング(又はセンシング)可能な装置であれば、その種類は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。センサには、例えば、カメラ、LIDARセンサ、サーモセンサ、圧力センサ、ロードセル等が採用されてよい。センサデータ(シミュレーションデータ、実データ)の種類は、センサの種類に応じて適宜選択されてよい。センサデータは、例えば、画像(例えば、RGB画像、深度画像等)データ、LIDARセンサによる測定データ、サーモデータ、圧力データ等であってよい。
【0161】
図12は、本発明が適用される他の場面の一例として、ロボット装置として自律型ロボットRBを採用した例を示す。自律型ロボットRBは、自律的に動作可能に構成される。自律型ロボットRBは、例えば、調理をするように構成されてよい。本変形例に係る学習装置1Bは、自律型ロボットRBの動作を制御するための抽出器及び制御器を機械学習により構築するように構成されたコンピュータである。本変形例に係る制御装置2Bは、学習装置1Bにより構築された抽出器及び制御器を利用して、自律型ロボットRBの動作を制御するように構成されたコンピュータである。取り扱うセンサ及び各情報の種類が相違し得る点を除き、本変形例に係る学習装置1Bは上記実施形態に係る学習装置1と同様に構成されてよく、本変形例に係る制御装置2Bは上記実施形態に係る制御装置2と同様に構成されてよい。
【0162】
自律型ロボットRBの環境を監視するセンサは、例えば、カメラ、サーモセンサ、マイクロフォン及びこれらの組み合わせにより構成されてよい。各環境情報は、セグメンテーション情報及びタスクの実行に関連する対象物の属性に関する情報の少なくともいずれかを含んでよい。タスクが調理である場合、タスクの実行に関連する対象物は、例えば、食材、調理器具等である。対象物は、単なる物だけではなく、人物を含んでもよい。状態情報は、例えば、自律型ロボットRBの駆動部の位置、向き、角度、加速度等を含んでよい。制御コマンドは、自律型ロボットRBの駆動量、出力音声及び画面表示の少なくともいずれかを規定してよい。本変形例によれば、自律型ロボットRBの動作を制御するための制御モジュールを構築することができる。なお、音声出力及び画面表示を行う場合、自律型ロボットRBは、対応する出力装置(例えば、スピーカ、ディスプレイ)を備える。
【0163】
図13は、本発明が適用される他の場面の一例として、自動運転動作を実行可能に構成された車両RCをロボット装置として採用した例を示す。車両RCは、移動体の位置例である。車両RCは、アクセル、ブレーキ、ハンドル、ライト、クラクション等の一般的な車両の構成を備えている。本変形例に係る学習装置1Cは、車両RCの動作を制御するための抽出器及び制御器を機械学習により構築するように構成されたコンピュータである。本変形例に係る制御装置2Cは、学習装置1Cにより構築された抽出器及び制御器を利用して、車両RCの動作を制御するように構成されたコンピュータである。取り扱うセンサ及び各情報の種類が相違し得る点を除き、本変形例に係る学習装置1Cは上記実施形態に係る学習装置1と同様に構成されてよく、本変形例に係る制御装置2Cは上記実施形態に係る制御装置2と同様に構成されてよい。
【0164】
車両RCの環境を監視するセンサは、例えば、カメラ、LIDAR(ライダ)センサ及びこれらの組み合わせにより構成されてよい。各環境情報は、例えば、移動体の進行する通路に関する情報及び移動体の進行方向に存在する対象物に関する情報の少なくともいずれかを含んでよい。本変形例では、移動体の進行する通路は、車両RCが走行可能な道路である。また、移動体の進行方向に存在する対象物は、例えば、信号機、障害物(人、物)等である。状態情報は、例えば、移動体の移動状態に関する情報等を含んでよい。本変形例では、状態情報は、例えば、車両RCのアクセルの現在量、ブレーキの現在量、ハンドルの現在の操舵角、ライトの点灯の有無、クラクションの使用の有無等を含んでよい。制御コマンドは、例えば、車両RCのアクセル量、ブレーキ量、ハンドルの操舵角、ライトの点灯及びクラクションの使用の少なくともいずれかを規定してよい。本変形例によれば、車両RCの動作を制御するための制御モジュールを構築することができる。
【符号の説明】
【0165】
100…制御システム、
1…学習装置、
11…制御部、12…記憶部、13…通信インタフェース、
14…入力装置、15…出力装置、16…ドライブ、
111…第1データ取得部、112…第2データ取得部、
113…第3データ取得部、
114…第1学習処理部、115…第2学習処理部、
116…保存処理部、
121…学習プログラム、
125…第1学習結果データ、128…第2学習結果データ、
2…制御装置、
21…制御部、22…記憶部、23…通信インタフェース、
24…外部インタフェース、
25…入力装置、26…出力装置、27…ドライブ、
211…データ取得部、212…情報抽出部、
213…コマンド決定部、214…動作制御部、
221…制御プログラム、
5…抽出器、
51…第1部分、
511…畳み込み層、512…プーリング層、
513…全結合層、
52…第2部分、
521…畳み込み層、522…プーリング層、
523…全結合層、
53…第3部分、
531…全結合層、532…アップサンプリング層、
533…畳み込み層、
6…制御器、
61…入力層、62…中間(隠れ)層、63…出力層、
70…第1学習データセット、
701…シミュレーションデータ(訓練データ)、
702…第1環境情報(正解データ)、
73…第2学習データセット、
731…実データ(訓練データ)、
732…第2環境情報(正解データ)、
76…第3学習データセット、
761…第3環境情報(訓練データ)、
762…状態情報(訓練データ)、
763…制御コマンド(正解データ)、
80…画像データ(センサデータ)、
81…環境情報、
83…状態情報、85…制御コマンド、
91・92…記憶媒体、
CA…カメラ、R…産業用ロボット(ロボット装置)