IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社Preferred Networksの特許一覧

特許7398373制御装置、システム、制御方法、及びプログラム
<>
  • 特許-制御装置、システム、制御方法、及びプログラム 図1
  • 特許-制御装置、システム、制御方法、及びプログラム 図2A
  • 特許-制御装置、システム、制御方法、及びプログラム 図2B
  • 特許-制御装置、システム、制御方法、及びプログラム 図3
  • 特許-制御装置、システム、制御方法、及びプログラム 図4
  • 特許-制御装置、システム、制御方法、及びプログラム 図5
  • 特許-制御装置、システム、制御方法、及びプログラム 図6
  • 特許-制御装置、システム、制御方法、及びプログラム 図7
  • 特許-制御装置、システム、制御方法、及びプログラム 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-06
(45)【発行日】2023-12-14
(54)【発明の名称】制御装置、システム、制御方法、及びプログラム
(51)【国際特許分類】
   B25J 9/22 20060101AFI20231207BHJP
【FI】
B25J9/22 A
【請求項の数】 29
(21)【出願番号】P 2020529025
(86)(22)【出願日】2019-07-03
(86)【国際出願番号】 JP2019026414
(87)【国際公開番号】W WO2020009139
(87)【国際公開日】2020-01-09
【審査請求日】2022-06-29
(31)【優先権主張番号】P 2018127803
(32)【優先日】2018-07-04
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】515130201
【氏名又は名称】株式会社Preferred Networks
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】高橋 城志
(72)【発明者】
【氏名】増田 慎平
【審査官】臼井 卓巳
(56)【参考文献】
【文献】特開2017-211913(JP,A)
【文献】特開2004-322224(JP,A)
【文献】特開2017-030135(JP,A)
【文献】特開2017-185577(JP,A)
【文献】特開2004-178492(JP,A)
【文献】特開2014-211667(JP,A)
【文献】特開2017-030137(JP,A)
【文献】特開2017-064910(JP,A)
【文献】米国特許出願公開第2018/0165602(US,A1)
【文献】中国特許出願公開第106228314(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 9/10-13/08
G05B 13/02-23/02
G06N 3/08-99/00
(57)【特許請求の範囲】
【請求項1】
少なくとも1つのメモリと、
少なくとも1つのプロセッサと、を備え、
前記少なくとも1つのプロセッサは、
実環境における環境情報を取得することと、
前記環境情報及び第1の方策に基づいて、前記実環境の制御対象の制御に関する第1の情報を取得することと、
前記第1の情報及び第2の方策に基づいて、前記制御対象の制御に関する第2の情報を取得することと、
前記第2の情報に基づいて、前記制御対象を制御することと、
を実行し、
前記第1の方策は、シミュレーション環境における仮想の制御対象を用いて更新されたものであり、
前記第2の方策は、少なくとも前記実環境における複数の制御対象のいずれか1つの制御結果に基づいて更新されたものであり、
前記第1の方策及び前記第2の方策は、それぞれ異なるニューラルネットワークを用いて表現される、
制御装置。
【請求項2】
少なくとも1つのメモリと、
少なくとも1つのプロセッサと、を備え、
前記少なくとも1つのプロセッサは、
実環境における環境情報を取得することと、
前記環境情報及び第1の方策に基づいて、前記実環境の制御対象の制御に関する第1の情報を取得することと、
前記第1の情報及び第2の方策に基づいて、前記制御対象の制御に関する第2の情報を取得することと、
前記第2の情報に基づいて、前記制御対象を制御することと、
を実行し、
前記第1の方策は、シミュレーション環境における仮想の制御対象を用いて更新されたものであり、
前記少なくとも1つのプロセッサは、更に、
前記シミュレーション環境における環境情報を取得することと、
前記シミュレーション環境における環境情報及び前記第1の方策に基づいて、前記仮想の制御対象の制御に関する第3の情報を取得することと、
前記第3の情報に基づいて、前記仮想の制御対象を制御することと、
前記仮想の制御対象の制御結果に基づいて、前記第1の方策を更新することと、
を実行する、
制御装置。
【請求項3】
少なくとも1つのメモリと、
少なくとも1つのプロセッサと、を備え、
前記少なくとも1つのプロセッサは、
実環境における環境情報を取得することと、
前記環境情報及び第1の方策に基づいて、前記実環境の制御対象の制御に関する第1の情報を取得することと、
前記第1の情報及び第2の方策に基づいて、前記制御対象の制御に関する第2の情報を取得することと、
前記第2の情報に基づいて、前記制御対象を制御することと、
前記制御対象の制御結果に基づいて、前記第2の方策を更新することと、
を実行し、
前記第1の方策は、シミュレーション環境における仮想の制御対象を用いて更新されたものであり、
前記少なくとも1つのプロセッサは、
前記第1の方策を更新した後、前記第2の方策を更新することと、
前記第2の方策を更新した後、前記第1の方策を更新することと、
を実行する、
制御装置。
【請求項4】
少なくとも1つのメモリと、
少なくとも1つのプロセッサと、を備え、
前記少なくとも1つのプロセッサは、
実環境における環境情報を取得することと、
前記環境情報及び第1の方策に基づいて、前記実環境の制御対象の制御に関する第1の情報を取得することと、
前記第1の情報及び第2の方策に基づいて、前記制御対象の制御に関する第2の情報を取得することと、
前記第2の情報に基づいて、前記制御対象を制御することと、
前記制御対象の制御結果に基づいて、前記第2の方策を更新することと、
を実行し、
前記第1の方策は、シミュレーション環境における仮想の制御対象を用いて更新されたものであり、
前記少なくとも1つのプロセッサは、
第1のタスクを用いて前記第2の方策を更新した後、前記第1のタスクより複雑度が高い第2のタスクを用いて前記第2の方策を更新すること、
を実行する、
制御装置。
【請求項5】
少なくとも1つのメモリと、
少なくとも1つのプロセッサと、を備え、
前記少なくとも1つのプロセッサは、
実環境における環境情報を取得することと、
前記環境情報及び第1の方策に基づいて、前記実環境の制御対象の制御に関する第1の情報を取得することと、
前記第1の情報及び第2の方策に基づいて、前記制御対象の制御に関する第2の情報を取得することと、
前記第2の情報に基づいて、前記制御対象を制御することと、
前記制御対象の制御結果に基づいて、前記第2の方策を更新することと、
を実行し、
前記第1の方策は、シミュレーション環境における仮想の制御対象を用いて更新されたものであり、
前記少なくとも1つのプロセッサは、
第1のタスクを用いて前記第1の方策を更新した後、前記第1のタスクより複雑度が高い第2のタスクを用いて前記第1の方策を更新すること、
を実行する、
制御装置。
【請求項6】
前記第2の方策は、少なくとも前記実環境における複数の制御対象のいずれか1つを用いて更新されたものである、
請求項乃至請求項5のいずれか1項に記載の制御装置。
【請求項7】
前記第1の方策及び前記第2の方策は、それぞれ異なるニューラルネットワークを用いて表現される、
請求項乃至請求項6のいずれか1項に記載の制御装置。
【請求項8】
前記第1の情報は、前記制御対象の行動に関する情報であり、
前記第2の情報は、前記制御対象が前記行動を実現するための制御値に関する情報である、
請求項1乃至請求項7のいずれか1項に記載の制御装置。
【請求項9】
前記行動に関する情報は、前記制御対象の駆動部のトルク値に関する情報である、
請求項に記載の制御装置。
【請求項10】
前記制御値に関する情報は、前記制御対象の駆動部の電流値に関する情報である、
請求項又は請求項に記載の制御装置。
【請求項11】
前記行動は、少なくとも二足歩行及び物体の把持のいずれかを実現するためのものである、
請求項乃至請求項10のいずれか1項に記載の制御装置。
【請求項12】
前記第1の方策及び前記第2の方策は、深層強化学習を用いて更新されたものである、
請求項1乃至請求項11のいずれか1項に記載の制御装置。
【請求項13】
前記環境情報は、少なくとも、前記実環境における画像及び前記制御対象の駆動部の計測値のいずれか1つに関する情報を含む、
請求項1乃至請求項12のいずれか1項に記載の制御装置。
【請求項14】
請求項1乃至請求項13のいずれか1項に記載の制御装置と、
前記環境情報を取得するためのセンサと、
前記制御対象と、
を備えるシステム。
【請求項15】
少なくとも1つのプロセッサが、
実環境における環境情報を取得し、
前記環境情報及び第1の方策に基づいて、前記実環境の制御対象の制御に関する第1の情報を取得し、
前記第1の情報及び第2の方策に基づいて、前記制御対象の制御に関する第2の情報を取得し、
前記第2の情報に基づいて、前記制御対象を制御する、
制御方法であって、
前記第1の方策は、シミュレーション環境における仮想の制御対象を用いて更新されたものであり、
前記第2の方策は、少なくとも前記実環境における複数の制御対象のいずれか1つの制御結果に基づいて更新されたものであり、
前記第1の方策及び前記第2の方策は、それぞれ異なるニューラルネットワークを用いて表現される、
制御方法。
【請求項16】
少なくとも1つのプロセッサが、
実環境における環境情報を取得し、
前記環境情報及び第1の方策に基づいて、前記実環境の制御対象の制御に関する第1の情報を取得し、
前記第1の情報及び第2の方策に基づいて、前記制御対象の制御に関する第2の情報を取得し、
前記第2の情報に基づいて、前記制御対象を制御する、
制御方法であって、
前記第1の方策は、シミュレーション環境における仮想の制御対象を用いて更新されたものであり、
前記少なくとも1つのプロセッサが、更に、
前記シミュレーション環境における環境情報を取得し、
前記シミュレーション環境における環境情報及び前記第1の方策に基づいて、前記仮想の制御対象の制御に関する第3の情報を取得し、
前記第3の情報に基づいて、前記仮想の制御対象を制御し、
前記仮想の制御対象の制御結果に基づいて、前記第1の方策を更新する、
制御方法。
【請求項17】
少なくとも1つのプロセッサが、
実環境における環境情報を取得し、
前記環境情報及び第1の方策に基づいて、前記実環境の制御対象の制御に関する第1の情報を取得し、
前記第1の情報及び第2の方策に基づいて、前記制御対象の制御に関する第2の情報を取得し、
前記第2の情報に基づいて、前記制御対象を制御し、
前記制御対象の制御結果に基づいて、前記第2の方策を更新する、
制御方法であって、
前記第1の方策は、シミュレーション環境における仮想の制御対象を用いて更新されたものであり、
前記少なくとも1つのプロセッサが、
前記第1の方策を更新した後、前記第2の方策を更新し、
前記第2の方策を更新した後、前記第1の方策を更新する、
制御方法。
【請求項18】
少なくとも1つのプロセッサが、
実環境における環境情報を取得し、
前記環境情報及び第1の方策に基づいて、前記実環境の制御対象の制御に関する第1の情報を取得し、
前記第1の情報及び第2の方策に基づいて、前記制御対象の制御に関する第2の情報を取得し、
前記第2の情報に基づいて、前記制御対象を制御し、
前記制御対象の制御結果に基づいて、前記第2の方策を更新する、
制御方法であって、
前記第1の方策は、シミュレーション環境における仮想の制御対象を用いて更新されたものであり、
前記少なくとも1つのプロセッサが、
第1のタスクを用いて前記第2の方策を更新した後、前記第1のタスクより複雑度が高い第2のタスクを用いて前記第2の方策を更新する、
制御方法。
【請求項19】
少なくとも1つのプロセッサが、
実環境における環境情報を取得し、
前記環境情報及び第1の方策に基づいて、前記実環境の制御対象の制御に関する第1の情報を取得し、
前記第1の情報及び第2の方策に基づいて、前記制御対象の制御に関する第2の情報を取得し、
前記第2の情報に基づいて、前記制御対象を制御し、
前記制御対象の制御結果に基づいて、前記第2の方策を更新する、
制御方法であって、
前記第1の方策は、シミュレーション環境における仮想の制御対象を用いて更新されたものであり、
前記少なくとも1つのプロセッサが、
第1のタスクを用いて前記第1の方策を更新した後、前記第1のタスクより複雑度が高い第2のタスクを用いて前記第1の方策を更新する、
制御方法。
【請求項20】
前記第2の方策は、少なくとも前記実環境における複数の制御対象のいずれか1つを用いて更新されたものである、
請求項16乃至請求項19のいずれか1項に記載の制御方法。
【請求項21】
前記第1の方策及び前記第2の方策は、それぞれ異なるニューラルネットワークを用いて表現される、
請求項16乃至請求項20のいずれか1項に記載の制御方法。
【請求項22】
前記第1の情報は、前記制御対象の行動に関する情報であり、
前記第2の情報は、前記制御対象が前記行動を実現するための制御値に関する情報である、
請求項15乃至請求項21のいずれか1項に記載の制御方法。
【請求項23】
前記行動に関する情報は、前記制御対象の駆動部のトルク値に関する情報である、
請求項22に記載の制御方法。
【請求項24】
前記制御値に関する情報は、前記制御対象の駆動部の電流値に関する情報である、
請求項22又は請求項23に記載の制御方法。
【請求項25】
前記行動は、少なくとも二足歩行及び物体の把持のいずれかを実現するためのものである、
請求項22乃至請求項24のいずれか1項に記載の制御方法。
【請求項26】
前記第1のタスク及び前記第2のタスクは二足歩行であって、前記第2のタスクの歩行速度は前記第1のタスクの歩行速度より速い、
請求項18又は請求項19に記載の制御方法。
【請求項27】
前記第1の方策及び前記第2の方策は、深層強化学習を用いて更新される、
請求項15乃至請求項26のいずれか1項に記載の制御方法。
【請求項28】
前記第2の方策を用いて、前記第1の方策を更新する、
請求項15乃至請求項27のいずれか1項に記載の制御方法。
【請求項29】
請求項15乃至請求項28のいずれか1項に記載の制御方法を、前記少なくとも1つのプロセッサに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、制御装置、システム、制御方法、及プログラムに関する。
【背景技術】
【0002】
近年、様々な機械学習の手法を用いて、アクチュエータ等の駆動部を有するロボットに対して所定のタスク(例えば、二足歩行や物体の把持等)を実現する動作を学習させることが行われている。
【0003】
しかしながら、深層強化学習では多くの試行回数が必要とされる。教師あり学習を事前に行うことで、深層強化学習の試行回数を削減することができるものの、実環境のみでは現実的な試行回数で学習させることは困難である。これに対して、シミュレーション環境での学習結果を実環境に適用可能とする手法として、Sim to realと呼ばれる手法が知られている。
【発明の概要】
【0004】
しかしながら、例えば、シミュレーション環境と実環境との差異が大きい場合には、シミュレーション環境での学習結果を実環境に適用することが困難な場合があった。例えば、物体の把持動作や二足歩行動作等のタスクをロボットに学習させる場合、実環境では、アクチュエータ等の駆動部で摩擦が発生したり、駆動部の動作遅れが発生したりする。このため、シミュレーション環境での学習結果を実環境に適用することが困難な場合がある。
【0005】
本発明の実施の形態は、上記の点に鑑みてなされたもので、シミュレーション環境での学習結果の実環境への適用を容易に行うことを目的とする。
【0006】
上記目的を達成するため、本発明の実施の形態は、第1のモデルが出力した、シミュレーション環境における仮想ロボットによる動作の行動計画に基づいて、前記動作を実現可能な実環境における実環境のロボットの制御値を出力する第2のモデルを強化学習により訓練する手順、をコンピュータが実行することを特徴とする。
【発明の効果】
【0007】
シミュレーション環境での学習結果を実環境に容易に適用することができる。
【図面の簡単な説明】
【0008】
図1】本発明の実施の形態における学習システムの全体構成の一例を示す図である。
図2A】本発明の実施の形態におけるロボットの一例を模式的に示す図である。
図2B】本発明の実施の形態におけるロボットの一例を模式的に示す図である。
図3】本発明の実施の形態における学習装置のハードウェア構成の一例を示す図である。
図4】本発明の実施の形態における学習装置の機能構成の一例を示す図である。
図5】本発明の実施の形態における学習処理の一例を示すフローチャートである。
図6】シミュレーション環境での学習処理の一例を示すフローチャートである。
図7】実環境での学習処理の一例を示すフローチャートである。
図8】実環境での学習結果をシミュレーション環境に反映する処理の一例を示すフローチャートである。
【発明を実施するための形態】
【0009】
以下、本実施の形態について、図面を参照しながら詳細に説明する。以降では、シミュレーション環境での学習結果を実環境に適用することで、ロボットの効率的な学習を行うことが可能な学習システム1について説明する。
【0010】
<全体構成>
まず、本実施の形態の一例における学習システム1の全体構成について、図1を参照しながら説明する。図1は、本実施の形態の一例における学習システム1の全体構成の一例を示す図である。
【0011】
図1に示すように、本実施の形態の一例における学習システム1には、学習装置10と、制御装置20と、ロボット30と、センサ40とが含まれる。
【0012】
学習装置10は、深層強化学習により、所定のタスク(例えば、二足歩行や物体の把持等)を実現する動作をロボット30に学習させるためのコンピュータ又はコンピュータシステムである。学習装置10は、シミュレーション環境でのロボット30(以下、仮想装置又は仮想ロボットともいう)の深層強化学習と、実環境でのロボット30(実環境での装置)の深層強化学習とを行うことで、タスクを実現する動作をロボット30に学習させる。
【0013】
このとき、例えば、学習装置10は、シミュレーション環境ではロボット30がタスクを実現するための動作(いわゆるプランニング)を学習させて、実環境では当該動作を実現するために必要な駆動部(例えばアクチュエータ等)の制御値を学習させる。ここで、制御値は、例えば、当該動作を実現するために必要な駆動部の電流値等である。本実施形態では、一例として、制御値は、駆動部の電流値であるものとして説明するが、これに限られない。
【0014】
本実施の形態における学習装置10は、シミュレーション環境でのロボット30の学習と、実環境でのロボット30の学習とをCurriculum learningを用いて行うと共に、これらの学習を所定の順序で繰り返し行う。
【0015】
ここで、所定の順序としては、以下の(1)及び(2)を満たす任意の順序を採用することができる。
【0016】
(1)シミュレーション環境での学習の次に、同一複雑度のタスク又は複雑度を上げたタスクのシミュレーション環境での学習又は実環境での学習を行う。
【0017】
(2)実環境での学習の次に、シミュレーション環境で学習済の複雑度のタスクについて実環境での学習を行うか、又は複雑度を上げたタスクのシミュレーション環境での学習を行う。
【0018】
具体的には、例えば、ロボット30に学習させたいタスクをV1,V2として、これらのタスクV1,V2の複雑度をV1<V2とする。この場合、以下の(A)、(B)、(C)に例示する順序は、全て上記の所定の順序を満たす。
【0019】
(A)タスクV1のシミュレーション環境での学習、タスクV1の実環境での学習、タスクV2のシミュレーション環境での学習、タスクV2の実環境での学習の順にロボット30の学習を行う。
【0020】
(B)タスクV1のシミュレーション環境での学習、タスクV2のシミュレーション環境、タスクV1の実環境での学習、タスクV2の実環境での学習の順にロボット30の学習を行う。
【0021】
(C)タスクV1のシミュレーション環境での学習、タスクV1のシミュレーション環境での学習、タスクV2のシミュレーション環境での学習、タスクV1の実環境での学習、タスクV1の実環境での学習、タスクV2の実環境での学習の順にロボット30の学習を行う。
【0022】
なお、タスクの複雑度は、ロボット30が実現したい動作の複雑さを表す。例えば、ロボット30が二足歩行ロボットである場合、タスク「ゆっくり歩く」と、タスク「早く歩く」と、タスク「走る」とでは、タスク「ゆっくり歩く」、タスク「早く歩く」、タスク「走る」の順にタスクの複雑度が高くなる場合がある。なお、タスクの複雑度は、種々の方法で定められることができる。例えば、第1のタスクと第2のタスクとでロボット30の動作の成功率が異なる場合、成功率が低いタスクを複雑度が高いものとみなすことができる。また、例えば、ロボット30の動作の実現にあたり考慮するべき事項の数が多いほど、ロボット30の制御に必要な計算量が多いほど、タスクの複雑度が高いとみなすことができる。
【0023】
制御装置20は、ロボット30の動作を制御するコンピュータ又はコンピュータシステムである。制御装置20は、ロボット30の動作を制御するための指示を、当該ロボット30の駆動部(例えばアクチュエータ等)に送信する。これにより、ロボット30の動作が制御される。
【0024】
ロボット30は、アクチュエータ等の駆動部を有する装置又は機器である。ロボット30としては、例えば、図2A)に示す二足歩行ロボット、図2Bに示すロボットアーム等が挙げられる。図2Aに示す二足歩行ロボット及び図2Bに示すロボットアームには、アクチュエータ等の駆動部が含まれている。このような駆動部は、例えば、関節に相当する部分等に設けられている。
【0025】
センサ40は、例えば、カメラ装置や各種計測装置等である。センサ40は、例えば、カメラ装置で撮影された画像や、計測装置で計測された駆動部の状態等を取得する。
【0026】
なお、図1に示す学習システム1の構成は一例であって、他の構成であっても良い。例えば、本実施の形態における学習システム1では、学習装置10と制御装置20とが一体の装置で構成されていても良い。また、本実施の形態における学習システム1には、複数のロボット30が含まれていても良い。また、学習装置10と制御装置20とは、それぞれ2つ以上用いられてもよい。
【0027】
<ハードウェア構成>
次に、本実施の形態の一例における学習装置10のハードウェア構成について、図3を参照しながら説明する。図3は、本実施の形態の一例における学習装置10のハードウェア構成の一例を示す図である。
【0028】
図3に示すように、本実施の形態の一例における学習装置10は、入力装置11と、表示装置12と、外部I/F13と、通信I/F14と、RAM(Random Access Memory)15と、ROM(Read Only Memory)16と、プロセッサ17と、補助記憶装置18とを有する。これら各ハードウェアは、それぞれがバス19により相互に接続されている。
【0029】
入力装置11は、例えばキーボードやマウス、タッチパネル等であり、ユーザが各種操作を入力するのに用いられる。表示装置12は、例えばディスプレイ等であり、学習装置10の各種の処理結果を表示する。なお、学習装置10は、入力装置11及び表示装置12のうちの少なくとも一方を有していなくても良い。
【0030】
外部I/F13は、外部装置とのインタフェースである。外部装置には、記録媒体13a等がある。学習装置10は、外部I/F13を介して、記録媒体13a等の読み取りや書き込み等を行うことができる。記録媒体13aには、学習装置10が有する各機能部を実現する1以上のプログラム等が記録されていても良い。
【0031】
記録媒体13aには、例えば、フレキシブルディスク、CD(Compact Disc)、DVD(Digital Versatile Disk)、SDメモリカード(Secure Digital memory card)、USB(Universal Serial Bus)メモリカード等がある。
【0032】
通信I/F14は、学習装置10を通信ネットワークに接続するためのインタフェースである。学習装置10が有する各機能部を実現する1以上のプログラムは、通信I/F14を介して、所定のサーバ装置等から取得(ダウンロード)されても良い。
【0033】
RAM15は、プログラムやデータを一時保持する揮発性の半導体メモリである。ROM16は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリである。ROM16には、例えば、OS(Operating System)に関する設定や通信ネットワークに関する設定等が格納されている。
【0034】
プロセッサ17は、例えばCPU(Central Processing Unit)やGPU(Graphics Processing Unit)等であり、ROM16や補助記憶装置18等からプログラムやデータをRAM15上に読み出して処理を実行する演算装置である。なお、学習装置10は、プロセッサ17として、CPUとGPUとの両方を有していても良いし、CPU又はGPUのいずれか一方のみを有していても良い。
【0035】
補助記憶装置18は、例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)等であり、プログラムやデータを格納している不揮発性の記憶装置である。補助記憶装置18には、例えば、OS、各種アプリケーションソフトウェア、学習装置10が有する各機能部を実現する1以上のプログラム等がある。
【0036】
本実施の形態における学習装置10は、図3に示すハードウェア構成を有することにより、後述する各種処理を実現することができる。なお、図3に示す例では、本実施の形態における学習装置10が1台の装置(コンピュータ)で実現されている場合について説明したが、これに限られない。本実施の形態における学習装置10は、複数台の装置(コンピュータ)で実現されていても良い。
【0037】
<機能構成>
次に、本実施の形態の一例における学習装置10の機能構成について、図4を参照しながら説明する。図4は、本実施の形態の一例における学習装置10の機能構成の一例を示す図である。
【0038】
図4に示すように、本実施の形態の一例における学習装置10は、シミュレーション学習部101と、実機学習部102と、複雑化部103と、利得判定部104とを有する。これら各機能部は、学習装置10にインストールされた1以上のプログラムがプロセッサ17に実行させる処理により実現される。
【0039】
シミュレーション学習部101は、深層強化学習により、シミュレーション環境で所定のタスクを実現するためのロボット30(正確には、ロボット30のシミュレーションした仮想ロボット)の動作を学習する。ここで、本実施の形態におけるシミュレーション学習部101には、環境情報取得部111と、行動決定部112と、行動実行部113と、方策更新部114と、出力部115とが含まれる。
【0040】
環境情報取得部111は、シミュレーション環境での環境情報st,sを取得する。ここで、環境情報st,sは、シミュレーション環境の時刻tにおける観測値である。この観測値は、シミュレーション環境におけるセンサ40(正確には、仮想的なカメラ)により観測される情報(例えば、シミュレーション環境における把持対象物を撮影した画像や歩行経路を撮影した画像、ロボット30の駆動部の計測値等)である。なお、これに限られず、環境情報取得部111は、例えば、過去数時刻分の環境情報(具体的には、例えば、予め設定された自然数Nに対して、時刻t-Nから時刻tまでの環境情報st-N,s,・・・,st,s)を取得してもよい。
【0041】
行動決定部112は、シミュレーション環境における方策πsimを用いて、行動at,sを決定する。ここで、行動at,sは、シミュレーション環境の時刻tにおける駆動部の出力値である。駆動部の出力値とは、例えば、駆動部のトルク値である。本実施形態では、一例として、駆動部の出力値は、トルク値であるものとして説明するが、これに限られない。なお、行動at,sは、環境情報取得部111により取得された環境情報を方策πsimに入力することで決定される。
【0042】
行動実行部113は、行動決定部112が決定した行動at,sを実行する。すなわち、行動実行部113は、シミュレーション環境におけるロボット30の駆動部を、行動at,sが示すトルク値で駆動させる。これにより、シミュレーション環境でロボット30が動作する。ロボット30が行動at,sを実行することで、環境がst+1,sに遷移すると共に、報酬rt+1,sが得られる。ここで、報酬rt,sは、シミュレーション環境の時刻tにおける報酬であり、例えば、ユーザ等により予め定義される。
【0043】
方策更新部114は、シミュレーション環境における方策πsimを更新する。すなわち、方策更新部114は、例えば、報酬rt,sの割引現在価値の総和として求まる利得Rsが最大となるように(より正確には、利得Rsの期待値が最大となるように)方策πsimを更新する。
【0044】
出力部115は、方策更新部114により更新された方策πsimと、利得Rsとを出力する。
【0045】
実機学習部102は、深層強化学習により、実環境で所定の動作(すなわち、シミュレーション環境で学習した所定のタスクを実現するためのロボット30の動作)を実現するために制御値を学習する。本実施の形態においては、制御値として、必要な駆動部の電流値を学習する。ここで、本実施の形態における実機学習部102には、環境情報取得部121と、行動決定部122と、制御値計算部123と、ロボット制御部124と、方策更新部125と、出力部126とが含まれる。
【0046】
環境情報取得部121は、実環境での環境情報st,rを取得する。ここで、環境情報st,rは、実環境の時刻tにおける観測値である。この観測値は、実環境におけるセンサ40により観測される情報(例えば、実環境における把持対象物を撮影した画像や歩行経路を撮影した画像、ロボット30の駆動部の計測値等)である。なお、これに限られず、環境情報取得部121は、例えば、過去数時刻分の環境情報(具体的には、例えば、予め設定された自然数Nに対して、時刻t-Nから時刻tまでの環境情報st-N,r,・・・,st,r)を取得してもよい。
【0047】
行動決定部122は、シミュレーション環境における方策πsimを用いて、行動at,sを決定する。なお、行動at,sは、環境情報取得部121により取得された環境情報を方策πsimに入力することで決定される。
【0048】
制御値計算部123は、行動決定部122により決定された行動at,sを実現するための制御値at,rを方策πrealとして計算する。例えば、制御値計算部123は、行動at,sが示すトルク値τtを実現する電流値at,rを方策πrealとして計算する。なお、方策πrealは、ニューラルネットワークで表される行動価値関数の期待値が環境情報st,rにおいて最大となる行動at,rである。
【0049】
ロボット制御部124は、制御値計算部123により計算された制御値at,r(すなわち、方策πrealとして計算された制御値at,r)でロボット30の動作を制御する。これにより、実環境でロボット30が動作する。ロボット30が行動at,sを実行することで(すなわち、電流値at,rによりロボット30を制御して、当該ロボット30が行動at,sを実行することで)、環境がst+1,rに遷移すると共に、報酬rt+1,rが得られる。ここで、報酬rt,rは、実環境の時刻tにおける報酬であり、例えば、ユーザ等により予め定義される。
【0050】
方策更新部125は、実環境における方策πrealを更新する。すなわち、方策更新部125は、例えば、報酬rt,rの割引現在価値の総和として求まる利得Rrが最大となるように(より正確には、利得Rrの期待値が最大となるように)方策πrealを更新する。
【0051】
出力部126は、方策更新部125により更新された方策πrealと、利得Rrとを出力する。
【0052】
複雑化部103は、ロボット30に動作を学習させるタスクを複雑化する(すなわち、タスクの複雑度を高くする。)。利得判定部104は、利得が所定の閾値を超えているか否かを判定する。
【0053】
<学習処理>
以降では、本実施の形態における学習システム1による学習処理について、図5を参照しながら説明する。図5は、本実施の形態における学習処理の一例を示すフローチャートである。
【0054】
シミュレーション学習部101は、深層強化学習により、シミュレーション環境と仮想ロボット30とを用いて所定のタスクを実現するためのロボット30の動作を学習する(ステップS101)。これにより、方策πsimと利得Rsとが出力される。このとき、例えば、タスクの複雑度が所定の複雑度以下である場合は、教師あり学習でロボット30の動作を学習しても良い。
【0055】
なお、上記の方策πsim及び利得Rsは、或るタスクVに関する方策πsim及び利得Rsであるため、より正確には、方策πsim,V及び利得Rs,Vと表される。ただし、以降では、特に断らない限り、単に、方策πsim及び利得Rsと表す。なお、シミュレーション環境での学習処理の詳細については後述する。
【0056】
次に、利得判定部104は、利得Rsが所定の閾値Aを超えているか否かを判定する(ステップS102)。なお、これは、シミュレーション環境での学習が十分に行われたか否かを判定することを意味する。
【0057】
ステップS102で利得Rsが所定の閾値Aを超えていないと判定された場合、複雑化部103は、タスクを複雑化する(ステップS103)。これにより、複雑化されたタスクに関して、上記のステップS101のシミュレーション環境での学習が行われる。
【0058】
ただし、上記のステップS103で複雑化部103は、タスクを複雑化しなくても良い。この場合、同一の複雑度のタスクに関して、上記のステップS101のシミュレーション環境での学習が行われる。
【0059】
一方で、ステップS102で利得Rsが所定の閾値Aを超えていると判定された場合、実機学習部102は、深層強化学習により、実環境で実環境のロボット30が所定の動作(すなわち、シミュレーション環境で学習された所定のタスクを実現するためのロボット30の動作)を実現するために必要な駆動部の電流値を学習する(ステップS104)。これにより、方策πrealと利得Rrとが出力される。
【0060】
なお、上記の方策πreal及び利得Rrも、上記のステップS101と同様に、より正確には、方策πreal,V及び利得Rr,Vと表される。ただし、以降では、特に断らない限り、単に、方策πreal及び利得Rrと表す。なお、実環境での学習処理の詳細については後述する。
【0061】
次に、利得判定部104は、利得Rrが所定の閾値Bを超えているか否かを判定する(ステップS105)。なお、これは、実環境での学習が十分に行われたか否かを判定することを意味する。
【0062】
ステップS105で利得Rrが所定の閾値Bを超えていないと判定された場合、複雑化部103は、タスクを複雑化する(ステップS106)。これにより、複雑化されたタスクに関して、上記のステップS104の実環境での学習が行われる。
【0063】
ただし、上記のステップS106において、複雑化部103は、タスクを複雑化しなくても良い。この場合、同一の複雑度のタスクに関して、上記のステップS104の実環境での学習が行われる。
【0064】
一方で、ステップS105で利得Rrが所定の閾値Bを超えていると判定された場合、利得判定部104は、利得Rsが所定の閾値A´を超えていて、かつ、利得Rrが所定の閾値B´を超えているか否かを判定する(ステップS107)。なお、閾値A´としては、例えば、閾値A以上の値が設定される。同様に、閾値B´としては、例えば、閾値B以上の値が設定される。
【0065】
ステップS107で利得Rsが所定の閾値A´を超えていて、かつ、利得Rrが所定の閾値B´を超えていると判定された場合、学習装置10は、学習処理を終了する。これにより、実環境のロボット30の各タスクの動作が学習される。
【0066】
一方で、ステップS107で利得Rsが所定の閾値A´を超えていて、かつ、利得Rrが所定の閾値B´を超えていると判定されなかった場合、シミュレーション学習部101は、実環境での学習結果(すなわち、上記のステップS104で出力された方策πreal)をシミュレーション環境に反映する(ステップS108)。なお、実環境での学習結果をシミュレーション環境に反映する処理の詳細については後述する。
【0067】
ただし、上記のステップS108は行われなくても良い。この場合、上記のステップS108が行われずに、後述するステップS109が行われる。
【0068】
次に、複雑化部103は、タスクを複雑化する(ステップS109)。これにより、複雑化されたタスクに関して、上記のステップS101のシミュレーション環境での学習が行われる。
【0069】
ここで、上記のステップS101の処理(シミュレーション環境での学習処理)の詳細について、図6を参照しながら説明する。図6は、シミュレーション環境での学習処理の一例を示すフローチャートである。なお、図6のステップS201~ステップS202は、例えばシミュレーション環境の学習時間をt=1,・・・,Tとした場合に、シミュレーション時刻t毎に繰り返し実行される。また、上述したように、タスクの複雑度が所定の複雑度以下である場合、教師あり学習により学習処理を行っても良い。このときの教師データ(すなわち、正解となる行動at,s)は、ユーザにより与えられれば良い。
【0070】
環境情報取得部111は、シミュレーション環境での環境情報st,sを取得する(ステップS201)。
【0071】
次に、行動決定部112は、シミュレーション環境における方策πsimを用いて、タスクを実現するための行動at,sを決定する(ステップS202)。
【0072】
次に、行動実行部113は、行動決定部112が決定した行動at,sを実行する(ステップS203)。すなわち、行動実行部113は、シミュレーション環境における仮想ロボット30の駆動部を、行動at,sが示すトルク値で駆動させるシミュレーションを行う。仮想ロボット30が行動at,sを実行することで、環境がst+1,sに遷移すると共に、報酬rt+1,sが得られる。
【0073】
方策更新部114は、シミュレーション環境における方策πsimを更新する(ステップS204)。すなわち、方策更新部114は、例えば、報酬rt,sの割引現在価値の総和として求まる利得Rsが最大となるように方策πsimを更新する。
【0074】
出力部115は、方策更新部114により更新された方策πsimと、利得Rsとを出力する(ステップS205)。これにより、或る所定のタスクにおける方策πsim及び利得Rsが出力される。
【0075】
ここで、以降では、上記のステップS104の処理(実環境での学習処理)の詳細について、図7を参照しながら説明する。図7は、実環境での学習処理の一例を示すフローチャートである。なお、図7のステップS301~ステップS304は、例えば実環境の学習時間をt=1,・・・,Tとした場合に、実時刻t毎に繰り返し実行される。
【0076】
環境情報取得部121は、実環境での環境情報st,rを取得する(ステップS301)。
【0077】
次に、行動決定部122は、シミュレーション環境における方策πsimを用いて、行動at,sを決定する(ステップS302)。
【0078】
制御値計算部123は、行動決定部122により決定された行動at,sを実現するための制御値at,rを方策πrealとして計算する(ステップS303)。
【0079】
ここで、行動at,sが示すトルク値をτt、電流値をC:=at,r、αを任意の係数として、制御値計算部123は、例えば、τt=αC+πrealとして方策πrealを計算する。又は、制御値計算部123は、例えば、τt=πrealとして方策πrealを計算しても良い。
【0080】
次に、ロボット制御部124は、制御値計算部123により計算された制御値at,r(すなわち、方策πrealとして計算された制御値at,r)でロボット30の動作を制御する(ステップS304)。これにより、実環境でロボット30が動作して、環境がst+1,rに遷移すると共に、報酬rt+1,rが得られる。
【0081】
方策更新部125は、実環境における方策πrealを更新する(ステップS305)。すなわち、方策更新部125は、例えば、報酬rt,rの割引現在価値の総和として求まる利得Rrが最大となるように方策πrealを更新する。
【0082】
出力部126は、方策更新部125により更新された方策πrealと、利得Rrとを出力する(ステップS306)。これにより、或る所定のタスクにおける方策πreal及び利得Rrが出力される。
【0083】
ここで、以降では、上記のステップS108の処理(実環境での学習結果をシミュレーション環境に反映する処理)の詳細について、図8を参照しながら説明する。図8は、実環境での学習結果をシミュレーション環境に反映する処理の一例を示すフローチャートである。
【0084】
まず、方策更新部114は、実環境での学習結果である方策πrealを取得する(ステップS401)。
【0085】
次に、方策更新部114は、方策πrealを用いて、方策πsimを更新する(ステップS402)。なお、方策更新部114は、方策πrealだけでなく、例えば、方策πrealを学習する過程で取得されたデータ(例えば、各時刻tにおける実環境での環境情報st,r等)も用いて方策πsimを更新してもよい。
【0086】
これにより、実環境での学習結果がシミュレーション環境に反映される。なお、方策πsimは、同一のタスクに関する方策πrealを用いる(すなわち、実環境と同様に、シミュレーション環境においても同一タスクに関する方策πsimを用いて制御値(つまり、行動at,s)を決定し、この制御値により仮想ロボット30を駆動させる。)。
【0087】
<まとめ>
以上のように、本実施の形態における学習システム1では、シミュレーション環境での学習と、実環境での学習とを、Curriculum learningによりタスクの複雑度を高くしながら、所定の順序で繰り返し行う。このとき、シミュレーション環境ではロボット30がタスクを実現するための動作(いわゆるプランニング)を学習させて、実環境では当該動作を実現するために必要な駆動部(例えばアクチュエータ等)の制御値を学習させる。すなわち、本実施の形態における学習システム1では、シミュレーション環境での方策πsimに用いられる行動価値関数と、環境での方策πrealに用いられる行動価値関数とでそれぞれ異なるニューラルネットワークを用いる。また、本実施の形態における学習システム1では、実環境での学習結果をシミュレーション環境に反映する。
【0088】
これにより、本実施の形態における学習システム1では、実環境とシミュレーション環境との差異が大きい場合(例えば、アクチュエータ等の駆動部で摩擦が発生したり、ロボット30と実環境との接触が発生したりする場合等)や実環境で駆動部の動作遅れが発生するような場合であっても、シミュレーション環境での学習結果を実環境に適用しやすくできる。
【0089】
したがって、本実施の形態における学習システム1では、ロボット30が所定のタスクを実現するための動作を学習する時間を大幅に削減することができる。また、本実施の形態における学習システム1では、実環境での学習で、所定の動作を行うための駆動部の制御値を学習するため、例えばアクチュエータ等のモデリングが不要となる。
【0090】
なお、本実施の形態では、ロボット30として、二足歩行ロボットやロボットアームを例示したが、これに限られない。本実施の形態は、駆動部を有する種々のロボットが所定のタスクを実現するための動作学習に適用することができる。このようなロボットの具体例としては、パーソナルロボット、災害救助ロボット、工業用ロボット等が挙げられる。
【0091】
本発明は、具体的に開示された上記の実施の形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【0092】
本願は、日本国に2018年7月4日に出願された基礎出願2018-127803号に基づくものであり、その全内容はここに参照をもって援用される。
【符号の説明】
【0093】
1 学習システム
10 学習装置
20 制御装置
30 ロボット
40 センサ
101 シミュレーション学習部
102 実機学習部
103 複雑化部
104 利得判定部
111 環境情報取得部
112 行動決定部
113 行動実行部
114 方策更新部
115 出力部
121 環境情報取得部
122 行動決定部
123 制御値計算部
124 ロボット制御部
125 方策更新部
126 出力部
図1
図2A
図2B
図3
図4
図5
図6
図7
図8