(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-08-24
(45)【発行日】2023-09-01
(54)【発明の名称】情報処理装置、方法及びプログラム
(51)【国際特許分類】
G16Z 99/00 20190101AFI20230825BHJP
B25J 13/08 20060101ALI20230825BHJP
【FI】
G16Z99/00
B25J13/08 A
(21)【出願番号】P 2019037752
(22)【出願日】2019-03-01
【審査請求日】2022-02-21
(73)【特許権者】
【識別番号】515130201
【氏名又は名称】株式会社Preferred Networks
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】今城 健太郎
(72)【発明者】
【氏名】松元 叡一
(72)【発明者】
【氏名】岡野原 大輔
【審査官】宮地 匡人
(56)【参考文献】
【文献】国際公開第2017/201220(WO,A1)
【文献】特開2018-126796(JP,A)
【文献】特開2017-030135(JP,A)
【文献】特開2018-144155(JP,A)
【文献】特開2018-097680(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G16Z 99/00
B25J 13/08
(57)【特許請求の範囲】
【請求項1】
少なくとも1つのメモリと、
少なくとも1つのプロセッサと、を備え、
前記少なくとも1つのプロセッサは、
現実世界の観測結果に基づく情報と、物体に関する環境変数と、に基づいて、仮想世界の状態についてシミュレーションを実行し、
前記シミュレーションの結果と変化後の前記仮想世界の状態との間の誤差を計算し、前記誤差に基づいて前記環境変数を更新し、
変化後の前記仮想世界の状態は、変化後の前記現実世界の観測結果に基づいて生成される、
情報処理装置。
【請求項2】
前記少なくとも1つのプロセッサは、前記誤差を用いた誤差逆伝播を行うことで、前記環境変数を更新する、
請求項1に記載の情報処理装置。
【請求項3】
前記少なくとも1つのプロセッサは、前記シミュレーションの出力を第1のニューラルネットワークに入力することで、前記シミュレーションの結果を生成する、
請求項1または2に記載の情報処理装置。
【請求項4】
前記少なくとも1つのプロセッサは、シミュレーションの結果が、変化後の前記仮想世界の状態に近づくように、前記第1のニューラルネットワークを訓練する、
請求項3に記載の情報処理装置。
【請求項5】
前記少なくとも1つのプロセッサは、前記現実世界の観測結果に基づく情報と、前記環境変数と、前記現実世界における制御方法に関する情報と、に基づいて、前記シミュレーションを実行する、
請求項1乃至4のいずれか1項に記載の情報処理装置。
【請求項6】
前記少なくとも1つのプロセッサは、前記現実世界の観測結果に基づく情報と、前記環境変数とを第2のニューラルネットワークに入力して、前記現実世界における制御方法に関する情報を生成する、
請求項5に記載の情報処理装置。
【請求項7】
前記少なくとも1つのプロセッサは、シミュレーションの結果に基づいて、前記第2のニューラルネットワークを訓練する、
請求項6に記載の情報処理装置。
【請求項8】
前記少なくとも1つのプロセッサは、前記シミュレーションの結果に基づいて報酬を算出し、前記報酬に基づいて前記第2のニューラルネットワークを訓練する、
請求項7に記載の情報処理装置。
【請求項9】
前記現実世界における制御方法は、駆動装置を用いた制御方法である、
請求項5乃至8のいずれか1項に記載の情報処理装置。
【請求項10】
前記現実世界における制御方法は、前記物体に対する制御方法である、
請求項5乃至9のいずれか1項に記載の情報処理装置。
【請求項11】
前記環境変数は、前記物体の物理量に関する情報を含む、
請求項1乃至10のいずれか1項に記載の情報処理装置。
【請求項12】
前記環境変数は、前記物体の特性に関する情報を含む、
請求項1乃至10のいずれか1項に記載の情報処理装置。
【請求項13】
前記現実世界の観測結果に基づく情報は、前記仮想世界の状態を含む、
請求項1乃至12のいずれか1項に記載の情報処理装置。
【請求項14】
前記シミュレーションは微分可能なシミュレーションである、
請求項1乃至13のいずれか1項に記載の情報処理装置。
【請求項15】
前記シミュレーションは、気象シミュレーションである、
請求項1乃至4のいずれか1項、又は、請求項11乃至14のうち請求項5に従属しないいずれか1項に記載の情報処理装置。
【請求項16】
複数台のコンピュータで構成される、
請求項1乃至15のいずれか1項に記載の情報処理装置。
【請求項17】
請求項4、又は、請求項5乃至16のうち請求項4に従属するいずれか1項に記載の情報処理装置
が、前記第1のニューラルネットワークを生成する方法。
【請求項18】
請求項7、又は、請求項8乃至14、16のうち請求項7に従属するいずれか1項に記載の情報処理装置
が、前記第2のニューラルネットワークを生成する方法。
【請求項19】
請求項1乃至16のいずれか1項に記載の情報処理装置
が、前記環境変数を生成する方法。
【請求項20】
少なくとも1つのメモリと、少なくとも1つのプロセッサと、を備える情報処理装置において、前記少なくとも1つのプロセッサが、
現実世界の観測結果に基づく情報と、物体に関する環境変数と、に基づいて、仮想世界の状態についてシミュレーションを実行し、
前記シミュレーションの結果と変化後の前記仮想世界の状態との間の誤差を計算し、前記誤差に基づいて前記環境変数を更新する、方法であって、
変化後の前記仮想世界の状態は、変化後の前記現実世界の観測結果に基づいて生成される、
方法。
【請求項21】
少なくとも1つのメモリと、少なくとも1つのプロセッサと、を備える情報処理装置において、前記少なくとも1つのプロセッサに、
現実世界の観測結果に基づく情報と、物体に関する環境変数と、に基づいて、仮想世界の状態についてシミュレーションを実行させ、
前記シミュレーションの結果と変化後の前記仮想世界の状態との間の誤差を計算させ、前記誤差に基づいて前記環境変数を更新させる、プログラムであって、
変化後の前記仮想世界の状態は、変化後の前記現実世界の観測結果に基づいて生成される、
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、方法及びプログラムに関する。
【背景技術】
【0002】
従来より、現実世界を再現した仮想的なモデルを用いてシミュレーションを行うシミュレーション装置として、物理シミュレータが知られている。一般に、物理シミュレータは、順方向への計算を実行するように構成されている。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2002-91570号公報
【文献】特開2014-130495号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上記のようなシミュレーション装置では、高精度なシミュレーションを実現することが難しい。
【課題を解決するための手段】
【0005】
本開示の一態様による情報処理装置は、例えば、以下のような構成を有する。即ち、
少なくとも1つのメモリと、
少なくとも1つのプロセッサと、を備え、
前記少なくとも1つのプロセッサは、
現実世界の観測結果に基づく情報と、物体に関する環境変数と、に基づいて、仮想世界の状態についてシミュレーションを実行し、
前記シミュレーションの結果と変化後の前記仮想世界の状態との間の誤差を計算し、前記誤差に基づいて前記環境変数を更新し、
変化後の前記仮想世界の状態は、変化後の前記現実世界の観測結果に基づいて生成される。
【図面の簡単な説明】
【0006】
【
図1】シミュレーションシステムの全体構成の一例を示す図である。
【
図2】シミュレーション装置のハードウェア構成の一例を示す図である。
【
図4】シミュレーション装置の機能構成の一例を示す図である。
【
図5】環境変数決定処理の流れを示すフローチャートである。
【
図6】環境変数決定処理に関わるシミュレーション装置の各部の動作を説明するための図である。
【
図7】差異低減変数決定処理の流れを示すフローチャートである。
【
図8】差異低減変数決定処理に関わるシミュレーション装置の各部の動作を説明するための図である。
【
図9】ロボット制御変数決定処理の流れを示すフローチャートである。
【
図10】ロボット制御変数決定処理に関わるシミュレーション装置の各部の動作を説明するための図である。
【発明を実施するための形態】
【0007】
以下、各実施形態について添付の図面を参照しながら説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複した説明を省略する。
【0008】
[第1の実施形態]
<シミュレーションシステムの全体構成>
はじめに、第1の実施形態に係る情報処理装置を含むシミュレーションシステム全体の構成について説明する。
図1は、シミュレーションシステムの全体構成の一例を示す図である。
【0009】
図1に示すように、本実施形態のシミュレーションシステム100は、ロボット110と、情報処理装置の一例であるシミュレーション装置120とを有する。ロボット110とシミュレーション装置120とは、通信可能に接続される。
【0010】
ロボット110は、センサ装置111と、駆動装置112と、制御装置113とを含む。センサ装置111は、現実世界を観測する装置であり、例えば、カメラ、センサ等を含む。なお、現実世界とは、シミュレーション装置120がシミュレーションを行う対象を指す。また、現実世界は、例えば、観測する対象が室内の場合にあっては、室内の内壁や室内に置かれた物体等(家具、家電製品、他のロボット等)のうちの少なくともいずれかを含む。駆動装置112は、現実世界に作用する要素であり、例えば、アームやエンドエフェクタ等のロボット110の各パーツを動作させるアクチュエータ、モータ等を含む。
【0011】
制御装置113には、観測及び制御プログラムがインストールされており、当該プログラムが実行されることで、制御装置113は、観測及び制御部114として機能する。
【0012】
観測及び制御部114は、センサ装置111からの出力に基づいて現実世界を観測し、現実世界の観測結果に基づいて仮想世界の状態(シミュレーション装置120で処理可能な形式のデータ)を生成する。観測及び制御部114は、生成した仮想世界の状態を、シミュレーション装置120に送信する。
【0013】
また、観測及び制御部114は、生成した仮想世界の状態をシミュレーション装置120に送信したことに応じて、シミュレーション装置120からロボット制御方法を受信し、駆動装置112を制御する。ロボット制御方法には、例えば、駆動装置112の種類に応じた制御項目(角度、位置、速度等)と、対応する制御量(角度値、座標、速度値等)が含まれる。
【0014】
シミュレーション装置120には、シミュレーションプログラムがインストールされており、当該プログラムが実行されることで、シミュレーション装置120は、シミュレーション部121として機能する。
【0015】
シミュレーション部121は、現実世界を再現するための微分可能な物理シミュレータを有する。また、シミュレーション部121は、微分可能な物理シミュレータを用いてシミュレーションを実行した場合のシミュレーション結果を修正する、"現実化のためのNN(Neural Network・ニューラルネットワーク)"のモデルを有する。更に、シミュレーション部121は、仮想世界の状態を受信した際、ロボット制御方法を出力する、"行動のためのNN"のモデルを有する。
【0016】
具体的には、シミュレーション部121は、微分可能な物理シミュレータがシミュレーションを行うことでシミュレーション結果を出力する。また、シミュレーション部121において、シミュレーション結果を、現実化のためのNNが修正する。また、シミュレーション部121は、修正後のシミュレーション結果が、観測及び制御部114から受信した仮想世界の状態に一致するように、微分可能な物理シミュレータの入力変数、及び/又は、現実化のためのNNの入力変数を更新する。これにより、シミュレーション部121では、高精度なシミュレーションを実現することができる。
【0017】
また、シミュレーション部121は、行動のためのNNにより出力されたロボット制御方法に基づいてロボット110を制御した場合の報酬に基づいて、例えば、報酬が最大となるように、行動のためのNNの入力変数を更新する。これにより、シミュレーション部121では、仮想世界の状態を受信した際、最適なロボット制御方法を出力することができる。
【0018】
なお、NN(現実化のためのNN、行動のためのNN)は微分可能に処理を行うため、出力結果について誤差逆伝播を行うことで、入力変数を更新することができる。
【0019】
<シミュレーション装置のハードウェア構成>
次に、シミュレーション装置120のハードウェア構成について説明する。
図2は、シミュレーション装置のハードウェア構成の一例を示す図である。
【0020】
図2に示すように、本実施形態のシミュレーション装置120は、CPU(Central Processing Unit)201、ROM(Read Only Memory)202、RAM(Random Access Memory)203を有する。また、シミュレーション装置120は、GPU(Graphics Processing Unit)204を有する。なお、CPU201、GPU204などのプロセッサ(処理回路、Processing Circuit、Processing Circuitry)と、ROM202、RAM203などのメモリは、いわゆるコンピュータを形成する。
【0021】
更に、シミュレーション装置120は、補助記憶装置205、操作装置206、表示装置207、I/F(Interface)装置208、ドライブ装置209を有する。なお、シミュレーション装置120の各ハードウェアは、バス210を介して相互に接続される。
【0022】
CPU201は、補助記憶装置205にインストールされた各種プログラム(例えば、シミュレーションプログラム等)を実行する演算デバイスである。
【0023】
ROM202は、不揮発性メモリであり、主記憶装置として機能する。ROM202は、補助記憶装置205にインストールされた各種プログラムをCPU201が実行するために必要な各種プログラム、データ等を格納する。具体的には、ROM202はBIOS(Basic Input/Output System)やEFI(Extensible Firmware Interface)等のブートプログラム等を格納する。
【0024】
RAM203は、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)等の揮発性メモリであり、主記憶装置として機能する。RAM203は、補助記憶装置205にインストールされた各種プログラムがCPU201によって実行される際に展開される、作業領域を提供する。
【0025】
GPU204は、画像処理用の演算デバイスであり、CPU201によりシミュレーションプログラムが実行される際に、各種画像データについて、並列処理による高速演算を行う。なお、GPU204は、内部メモリ(GPUメモリ)を搭載しており、各種画像データについて並列処理を行う際に必要な情報を一時的に保持する。
【0026】
補助記憶装置205は、各種プログラムや、各種プログラムがCPU201によって実行される際に用いられる各種データ等を格納する。
【0027】
操作装置206は、シミュレーション装置120の管理者がシミュレーション装置120に対して各種指示を入力する際に用いる入力デバイスである。表示装置207は、シミュレーション装置120の内部状態を表示する表示デバイスである。I/F装置208は、他の装置(本実施形態では、ロボット110)と接続し、通信を行うための接続デバイスである。
【0028】
ドライブ装置209は記録媒体220をセットするためのデバイスである。ここでいう記録媒体220には、CD-ROM、フレキシブルディスク、光磁気ディスク等のように情報を光学的、電気的あるいは磁気的に記録する媒体が含まれる。また、記録媒体220には、ROM、フラッシュメモリ等のように情報を電気的に記録する半導体メモリ等が含まれていてもよい。
【0029】
なお、補助記憶装置205にインストールされる各種プログラムは、例えば、配布された記録媒体220がドライブ装置209にセットされ、該記録媒体220に記録された各種プログラムがドライブ装置209により読み出されることでインストールされる。あるいは、補助記憶装置205にインストールされる各種プログラムは、不図示のネットワークを介してダウンロードされることで、インストールされてもよい。
【0030】
<ロボットの機能構成>
次に、本実施形態のロボット110の機能構成について説明する。
図3は、ロボットの機能構成の一例を示す図である。
図3に示すように、センサ装置111は、例えば、カメラ301とセンサ302とを有する。
【0031】
カメラ301は、現実世界を撮影することで、各時間(
図3の例では、時間t
n-2~t
n+1)のフレーム画像を生成し、動画像データとして制御装置113に通知する。また、センサ302は、現実世界を計測することで、各時間(
図3の例では、時間t
n-2~t
n+1)のセンサデータを生成し、制御装置113に通知する。
【0032】
駆動装置112は、アクチュエータ321とモータ322とを有する。アクチュエータ321及びモータ322は、例えば、制御装置113による制御のもとで、ロボット110の各パーツを動作させることで現実世界に作用し、現実世界を変化させる。
【0033】
制御装置113の観測及び制御部114は、現実環境観測部311と、ロボット制御部312とを有する。現実環境観測部311は、センサ装置111より動画像データ及びセンサデータを取得し、各時間(
図3の例では、時間t
n-2~t
n+1)の現実世界を定量化する。一例として、ロボット110が物体をつかんで所定の位置に移動させるタスクを実行する場合について説明する。この場合、現実環境観測部311は、例えば、ロボット110が物体をつかんでいる状態を撮影した動画像データを取得し、各フレーム画像における物体の位置、角度、物体をつかんでいるロボット110のエンドエフェクタの位置、角度等を算出する。これにより、現実環境観測部311は、例えば、ロボット110が物体を正しくつかむことができたか否かを定量的に把握することができる。
【0034】
また、現実環境観測部311は、例えば、ロボット110が物体をつかんでいる状態においてセンサ302により検出された、ロボット110のアームの位置、角度等を取得し、正規化する。これにより、現実環境観測部311は、例えば、ロボット110が物体をつかむためにどのような動作を行ったかを定量的に把握することができる。
【0035】
このように、現実世界を定量化することで、現実環境観測部311は、仮想世界の各時間の状態を示すデータを生成する。このデータは後に利用されるシミュレーション装置120で処理可能な形式のデータであることが好ましい。なお、本実施形態において、仮想世界の各時間の状態は、例えば、状態(tn-2)~状態(tn+1)と表現する。また、以下では、"状態を示すデータ"を、単に、"状態"と記載する。現実環境観測部311は、仮想世界の各時間の状態を、シミュレーション装置120に送信する。
【0036】
なお、現実環境観測部311は、カメラ301で撮影された動画像データや、センサ302で計測されたセンサデータそのものを、仮想世界の各時間の状態として、シミュレーション装置120に送信するように構成してもよい。
【0037】
ロボット制御部312は、シミュレーション装置120よりロボット制御方法を受信し、駆動装置112を制御する。上述したとおり、ロボット制御方法には、例えば、制御項目として、角度、速度、位置等が含まれる。ロボット制御部312は当該ロボット制御方法に応じた制御量に基づき、アクチュエータ321及びモータ322等を制御する。
【0038】
<シミュレーション装置の機能構成>
次に、シミュレーション装置の機能構成について説明する。
図4は、シミュレーション装置の機能構成の一例を示す図である。
図4に示すように、本実施形態のシミュレーション部121は、例えば、仮想世界記憶部410、ロボット制御処理計算部420、報酬算出部430、微分可能物理シミュレーション計算部440、差異低減処理計算部450、差分部460を有する。
【0039】
仮想世界記憶部410は、現実環境観測部311より送信された、仮想世界の各時間の状態を取得し、記憶する。
【0040】
ロボット制御処理計算部420は、行動のためのNNのモデルを有する。ロボット制御処理計算部420は、例えば、処理対象の時間(例えば、時間tn)における仮想世界の状態(状態(tn))と、環境変数(現実世界における物体の特性等を表す物理量(重さ、大きさ等))とを入力とし、ロボット制御方法を出力する。なお、本実施形態において、ロボット制御処理計算部420に入力される環境変数は、後述する微分可能物理シミュレーション計算部440に入力される環境変数と同じである。
【0041】
なお、ロボット制御処理計算部420は第2の訓練部として機能してもよい。具体的には、ロボット制御処理計算部420は、ロボット制御方法を出力したことに応じて、仮想世界の状態が変化した場合の、変化後の状態(例えば、状態(tn+1))の報酬に基づいて、例えば、報酬が最大となるように、誤差逆伝播を行う。これにより、ロボット制御処理計算部420は、ロボット制御変数(行動のためのNNの入力変数の1つ)を更新する。このようにして、ロボット制御処理計算部420が訓練され、訓練済みの第2の訓練部が生成される。
【0042】
報酬算出部430は算出部の一例であり、変化後の仮想世界の状態に基づいて報酬を算出する。報酬算出部430により算出される報酬は、ロボット制御処理計算部420により出力されたロボット制御方法によるロボット110の制御の良し悪しを数値化したものである。
【0043】
微分可能物理シミュレーション計算部440は、各計算が微分可能な物理シミュレータであり(言い換えると、物理シミュレータを、微分可能なフレームワークにおいて構築したものであり)、実行部として機能する。
【0044】
具体的には、例えば、微分可能物理シミュレーション計算部440は、ロボット制御方法をロボット制御処理計算部420より取得する。また、微分可能物理シミュレーション計算部440は、例えば、処理対象の時間(例えば、時間tn)における仮想世界の状態(状態(tn))と、取得したロボット制御方法と、環境変数とを入力とし、シミュレーションを実行する。更に、微分可能物理シミュレーション計算部440は、例えば、処理対象の次の時間(例えば、時間tn+1)における仮想世界の状態(状態(tn+1))を、シミュレーション結果として出力する。
【0045】
なお、微分可能物理シミュレーション計算部440は更新部としても機能してもよい。具体的には、例えば、微分可能物理シミュレーション計算部440は、仮想世界のそれぞれの時間における状態と、それぞれの時間における状態に基づいて出力されたロボット制御方法とを入力とすることで得られるシミュレーション結果について、誤差逆伝播を行う。これにより、微分可能物理シミュレーション計算部440は、入力変数の1つである環境変数を更新する。
【0046】
このとき、微分可能物理シミュレーション計算部440では、シミュレーション結果が、観測及び制御部114から受信した、変化後の仮想世界の状態に一致するように、環境変数を更新する。なお、微分可能物理シミュレーション計算部440に入力される環境変数が更新されると、ロボット制御処理計算部420に入力される環境変数もそれに対応して更新されることが好ましい。例えば、微分可能物理シミュレーション計算部440に入力される環境変数と同じ値に更新されることが好ましい。これにより、ロボット制御処理計算部420では、最新の環境変数に基づいて、ロボット制御方法を出力することができる。
【0047】
差異低減処理計算部450は、現実化のためのNNのモデルを有する。差異低減処理計算部450は、微分可能物理シミュレーション計算部440のシミュレーション結果を入力とし、修正後のシミュレーション結果を出力する。
【0048】
また、差異低減処理計算部450は第1の訓練部として機能することができる。具体的には、差異低減処理計算部450は、様々なシミュレーション結果を入力とすることで得られる修正後のシミュレーション結果について、誤差逆伝播を行うことで、現実化のためのNNの入力変数の1つである差異低減変数を更新することができる。このようにして、差異低減処理計算部450が訓練され、訓練済みの第1の訓練部が生成される。
【0049】
つまり、差異低減処理計算部450は、シミュレーション結果が、観測及び制御部114から受信した、変化後の仮想世界の状態に一致するように差異低減変数を更新することで、シミュレーション結果を現実世界に近似させる、好ましくは一致させる役割を果たす。
【0050】
これは、微分可能物理シミュレーション計算部440において、現実世界の物体の特性を、環境変数として予め完全に規定しておくことは困難であり、通常、シミュレーション結果は、変化後の仮想世界の状態と一致しないからである。換言すると、差異低減処理計算部450は、環境変数として規定されていないこと、例えば物体の未知の特性等に起因するシミュレーション結果の誤差を低減させる役割を果たす。
【0051】
差分部460は、修正後のシミュレーション結果と、観測及び制御部114から受信した、変化後の仮想世界の状態(状態(tn+1))とを対比し、対比の結果が、所定の条件を満たすか否かを判定する。なお、修正後のシミュレーション結果は、例えば、観測及び制御部114から受信した、変化後の仮想世界の状態と対比可能な形式に変換されたうえで、差分部460にて対比されることができる。
【0052】
例えば、変化後の仮想世界の状態(状態(tn+1)として、仮想世界記憶部410に、動画像データのフレーム画像が記憶されていたとする。この場合、差分部460は、例えば、修正後のシミュレーション結果を、画像の形式に変換したうえで対比する。
【0053】
また、変化後の仮想世界の状態(状態(tn+1)として、仮想世界記憶部410に、正規化されたロボット110のアームの位置、角度が記憶されていたとする。この場合、差分部460は、例えば、修正後のシミュレーション結果を、正規化した位置、角度の形式に変換したうえで対比する。
【0054】
なお、上述した環境変数の更新及び差異低減変数の更新は、差分部460による対比の結果が所定の条件を満たす(例えば、差分がゼロ、あるいは所定の閾値以下)と判定されるまで行われる。
【0055】
<シミュレーションシステムにおける処理の流れ>
次に、シミュレーションシステム100における処理の流れについて説明する。上記説明から明らかなように、シミュレーションシステム100において実行される処理は、以下の3つの処理(3種類の入力変数を更新し、決定する処理)に大別することができる。
・環境変数を更新し、決定する環境変数決定処理
・差異低減変数を更新し、決定する差異低減変数決定処理
・ロボット制御変数を更新し、決定するロボット制御変数決定処理
以下、これらの処理について、対応する各部の動作(
図4で示した機能構成の各部のうち、これらの処理に関わる各部の動作)を参照しながら説明する。
【0056】
(1)環境変数決定処理
はじめに、環境変数決定処理について、
図5及び
図6を用いて説明する。
図5は、環境変数決定処理の流れの一例を示すフローチャートである。また、
図6は、環境変数決定処理に関わるシミュレーション装置の各部の動作の一例を説明するための図である。以下、
図6を参照しながら、
図5のフローチャートについて説明する。なお、環境変数決定処理を行うにあたり、ロボット制御処理計算部420のロボット制御変数、及び、差異低減処理計算部450の差異低減変数は、所定の値に固定されているものとする。また、以下では、具体例として、ロボット110が物体をつかんで所定の位置に移動させるタスクを実行するケースを挙げ、当該ケースに沿って説明する。
【0057】
ステップS501において、ロボット制御処理計算部420及び微分可能物理シミュレーション計算部440は、環境変数(初期値)を取得する(
図6の矢印601、602参照)。
【0058】
ステップS502において、センサ装置111は現実世界を撮影または計測する。例えば、センサ装置111は、ロボット110が物体をつかんだ状態を撮影または計測する。
【0059】
ステップS503において、観測及び制御部114は、仮想世界の状態を算出し、シミュレーション装置120に送信する(
図6の矢印603参照)。これにより、
図6に示すように、仮想世界記憶部410には、処理対象の時間(ここでは、時間t
nとする)と対応付けて、仮想世界の状態(状態(t
n))が記憶される。
【0060】
ステップS504において、ロボット制御処理計算部420は、処理対象の時間(時間t
n)における仮想世界の状態(状態(t
n))と、環境変数(ここでは、初期値)とを入力とし(
図6の矢印601、604参照)、ロボット制御方法を出力する。なお、ロボット制御処理計算部420は、ロボット制御方法を、ロボット110の制御装置113及び微分可能物理シミュレーション計算部440に出力する(
図6の矢印606、607参照)。ここでは、ロボット制御処理計算部420は、例えば、ロボット110が、つかんだ物体を持ち上げるためのロボット制御方法を出力する。
【0061】
ステップS511において、ロボット110の制御装置113は、ロボット制御方法に基づいて駆動装置112を制御する。これにより、ロボット110は、つかんだ物体を持ち上げる。このとき、ロボット110が物体をつかむ力が、物体の重さに対して小さく、ロボット110が物体を持ち上げた際に、物体がずれたとする。
【0062】
ステップS512において、センサ装置111は、駆動装置112が制御されることで変化した現実世界を撮影または計測する。具体的には、ロボット110によって、物体がずれて持ち上げられた状態を撮影または計測する。
【0063】
ステップS513において、観測及び制御部114は、例えば、変化後の現実世界を撮影または計測したことに応じて変化後の仮想世界の状態を算出し、シミュレーション装置120に送信する(
図6の矢印608参照)。これにより、仮想世界記憶部410には、仮想世界の時間t
n+1における状態である、状態(t
n+1)が記憶される。
【0064】
一方、ステップS521において、微分可能物理シミュレーション計算部440には、処理対象の時間(時間t
n)における仮想世界の状態(状態(t
n))と、ロボット制御方法と、環境変数(ここでは、初期値)とが入力される。(
図6の矢印602、605、607参照)。具体的には、微分可能物理シミュレーション計算部440には、ロボット110が、つかんだ物体を持ち上げるためのロボット制御方法が入力される。また、微分可能物理シミュレーション計算部440には、環境変数として、例えば、物体の重さ(ここでは、初期値)が入力される。
【0065】
これにより、微分可能物理シミュレーション計算部440は、シミュレーション結果を出力する(
図6の矢印609参照)。
【0066】
ステップS522において、差異低減処理計算部450は、微分可能物理シミュレーション計算部440のシミュレーション結果を入力とし、修正後のシミュレーション結果を出力する(
図6の矢印610参照)。ここでは、差異低減処理計算部450が、修正後のシミュレーション結果として、例えば、ロボット110が、つかんだ物体をずれることなく持ち上げた状態を出力したとする。
【0067】
ステップS531において、差分部460は、修正後のシミュレーション結果と、変化後の仮想世界の状態(状態(t
n+1))とを対比する(
図6の矢印610、611参照)。
【0068】
ステップS532において、差分部460は、対比の結果が、更新終了の第1の条件を満たすか否かを判定する。ステップS532において、更新終了の第1の条件を満たさないと判定した場合には(ステップS532においてNoの場合には)、ステップS533に進む。
【0069】
上述したとおり、ステップS512では、ロボット110によって、物体がずれて持ち上げられた状態が撮影または計測されており、ステップS513において、当該状態が、変化後の仮想世界の状態(状態(tn+1))として記憶されている。一方で、ステップS522では、修正後のシミュレーション結果として、ロボット110が、つかんだ物体をずれることなく持ち上げた状態が出力されている。このため、差分部460では、更新終了の第1の条件を満たさないと判定する。
【0070】
ステップS533において、差異低減処理計算部450及び微分可能物理シミュレーション計算部440は、対比の結果に応じて誤差逆伝播を行い、環境変数を更新する(
図6の矢印612参照)。具体的には、微分可能物理シミュレーション計算部440は、環境変数として、物体の重さを更新する。なお、ここでは、差異低減処理計算部450が誤差逆伝播を行う際、差異低減変数は更新されないものとする。また、微分可能物理シミュレーション計算部440のモデルパラメータ自体も更新されないものとする。
【0071】
ステップS533において微分可能物理シミュレーション計算部440により、環境変数が更新されると、ステップS502に戻る。
【0072】
一方、ステップS532において、更新終了の第1の条件を満たすと判定した場合には(ステップS532においてYesの場合には)、ステップS534に進み、現在の環境変数を、現実世界の環境を表す物理量として決定し、環境変数決定処理を終了する。
【0073】
(2)差異低減変数決定処理
次に、差異低減変数決定処理について、
図7及び
図8を用いて説明する。
図7は、差異低減変数決定処理の流れの一例を示すフローチャートである。また、
図8は、差異低減変数決定処理に関わるシミュレーション装置の各部の動作の一例を説明するための図である。以下、
図8を参照しながら、
図7のフローチャートについて説明する。なお、差異低減変数決定処理を行うにあたり、ロボット制御処理計算部420のロボット制御変数は、所定の値に固定されているものとする。また、環境変数は、
図5の環境変数決定処理により決定された環境変数が用いられるものとする。
【0074】
ステップS701において、ロボット制御処理計算部420及び微分可能物理シミュレーション計算部440は、決定された環境変数を取得する(
図8の矢印801、802参照)。具体的には、ロボット制御処理計算部420及び微分可能物理シミュレーション計算部440は、決定された環境変数として、決定された物体の重さを取得する。
【0075】
ステップS502からステップS531は、
図5のステップS502からステップS531と同様であるため、ここでは、説明を省略する。
【0076】
ただし、ステップS504において、ロボット制御処理計算部420は、決定された物体の重さに基づいて、つかんだ物体を持ち上げるためのロボット制御方法を出力する。これにより、ロボット110によって物体が持ち上げられた際のずれ量が、物体の重さが決定される前と比較して、小さくなる。つまり、ステップS512では、ロボット110によって、物体がややずれて持ち上げられた状態が撮影または計測され、ステップS513では、当該状態が変化後の仮想世界の状態として記憶される。
【0077】
一方で、ステップS522において、差異低減処理計算部450は、修正後のシミュレーション結果として、例えば、ロボット110が、つかんだ物体をずれることなく持ち上げた状態を出力する。
【0078】
ステップS702において、差分部460は、対比の結果が、更新終了の第2の条件を満たすか否かを判定する。ステップS702において、更新終了の第2の条件を満たさないと判定した場合には(ステップS702においてNoの場合には)、ステップS703に進む。
【0079】
上述したとおり、ステップS513では、物体がややずれて持ち上げられた状態が、変化後の仮想世界の状態として記憶される。一方、ステップS522では、修正後のシミュレーション結果として、ロボット110が、つかんだ物体をずれることなく持ち上げた状態が出力される。このため、差分部460では、更新終了の第2の条件を満たさないと判定する。このように、更新終了の第2の条件を満たさないのは、環境変数として規定されていない物体の未知の特性(ここでは、物体表面の摩擦係数)が、シミュレーション結果に反映されていないためである。
【0080】
ステップS703において、差異低減処理計算部450は、対比の結果に応じて誤差逆伝播を行い、差異低減変数を更新する(
図8の矢印803参照)。これにより、差異低減処理計算部450では、シミュレーション結果の誤差(環境変数として規定されていない、物体表面の摩擦係数に起因する誤差)を修正する。
【0081】
一方、ステップS702において、更新終了の第2の条件を満たすと判定した場合には(ステップS702においてYesの場合には)、ステップS704に進む。
【0082】
ステップS704において、差異低減処理計算部450は、現在の差異低減変数を、差異低減処理計算部450の差異低減変数として決定し、差異低減変数決定処理を終了する。
【0083】
(3)ロボット制御変数決定処理
次に、ロボット制御変数決定処理について、
図9及び
図10を用いて説明する。
図9は、ロボット制御変数決定処理の流れを示すフローチャートである。また、
図10は、ロボット制御変数決定処理に関わるシミュレーション装置の各部の動作を説明するための図である。以下、
図10を参照しながら、
図9のフローチャートについて説明する。なお、ロボット制御変数決定処理を行うにあたり、環境変数は、
図5の環境変数決定処理により決定された環境変数が用いられるものとする。また、差異低減変数は、
図7の差異低減変数決定処理により決定された差異低減変数が用いられるものとする。なお、ロボット制御変数決定処理を開始するにあたり、仮想世界記憶部410には、予め初期状態が記憶されているものとする。
【0084】
ステップS901において、ロボット制御処理計算部420及び微分可能物理シミュレーション計算部440は、決定された環境変数を取得する(
図10の矢印801、802参照)。
【0085】
ステップS902において、ロボット制御処理計算部420には、処理対象の時間(例えば、時間t
n)における仮想世界の状態(状態(t
n))と、環境変数とが入力される(
図10の矢印801、1001参照)。これにより、ロボット制御処理計算部420は、ロボット制御方法を、微分可能物理シミュレーション計算部440に出力する(
図10の矢印1003参照)。
【0086】
ステップS903において、微分可能物理シミュレーション計算部440には、処理対象の時間(時間t
n)における仮想世界の状態(状態(t
n))と、ロボット制御方法と、環境変数とが入力される(
図10の矢印802、1002、1003参照)。これにより、微分可能物理シミュレーション計算部440は、シミュレーション結果を出力する(
図10の矢印1004参照)。
【0087】
ステップS904において、差異低減処理計算部450は、微分可能物理シミュレーション計算部440のシミュレーション結果を入力とし、修正後のシミュレーション結果を出力する(
図10の矢印1005参照)。なお、修正後のシミュレーション結果(例えば、時間t
n+1における仮想世界の状態(状態(t
n+1)))は、仮想世界記憶部410に記憶されるとともに、報酬算出部430に入力される。
【0088】
ステップS905において、報酬算出部430は、修正後のシミュレーション結果に基づいて、報酬を算出する。具体的には、修正後のシミュレーション結果として、ロボット110が、つかんだ物体をずれることなく持ち上げた状態を出力した場合に、点数が上がるように規定したパラメータを、報酬として算出する。また、ずれることなく持ち上げた物体から、所定の位置までの距離が近いほど、点数が上がるように規定したパラメータを、報酬として算出する。
【0089】
ステップS906において、報酬算出部430は、算出した報酬が所定の条件を満たすか否か(算出した報酬が最大か否か)を判定する。ステップS906において算出した報酬が所定の条件を満たさない場合には(ステップS906においてNoの場合には)、ステップS907に進む。
【0090】
ステップS907において、差異低減処理計算部450、微分可能物理シミュレーション計算部440及びロボット制御処理計算部420は、算出された報酬に基づいて誤差逆伝播を行い、ロボット制御変数を更新する(
図10の矢印1006参照)。具体的には、算出された報酬が最大となるように誤差逆伝播を行い、ロボット制御変数を更新する。その後、ロボット制御処理計算部420は、ステップS902に戻る。
【0091】
一方、ステップS906において算出した報酬が所定の条件を満たす場合には(ステップS907においてYesの場合には)、ステップS908に進む。
【0092】
ステップS908において、ロボット制御処理計算部420は、現在のロボット制御変数を、ロボット制御処理計算部420のロボット制御変数として決定し、ロボット制御処理決定処理を終了する。
【0093】
このように、シミュレーション部121によれば、実際にロボット110を動作させることなく、ロボット制御変数決定処理を実行することができる。
【0094】
また、ロボット制御変数決定処理を実行し、ロボット制御変数を最適化することで、ロボット制御処理計算部420では、以降、変化後の仮想世界の状態を受信するごとに、最適なロボット制御方法をロボット110に送信することができる。
【0095】
<まとめ>
以上の説明から明らかなように、第1の実施形態に係る情報処理装置の一例であるシミュレーション装置120は、
・現実世界の観測結果に基づいて算出された仮想世界の状態を取得する。
・現実世界に作用するロボットを制御する際のロボット制御方法を取得する。
・所定の環境変数のもとで、仮想世界の状態とロボット制御方法とを入力とし、変化後の仮想世界の状態について、微分可能なシミュレーションを実行することでシミュレーション結果を出力する。
・出力されたシミュレーション結果が、当該ロボット制御方法のもとでロボットを制御し現実世界が変化することで観測結果から算出された、変化後の仮想世界の状態に近づくように環境変数を更新する。
【0096】
これにより、シミュレーション装置120によれば、現実世界における物体の特性を環境変数として再現することが可能となり、物理シミュレータ(微分可能物理シミュレーション計算部440)を、より現実世界に近づけることが可能となる。この結果、高精度なシミュレーションを実現することができる。
【0097】
また、第1の実施形態に係る情報処理装置の一例であるシミュレーション装置120は、
・更新した環境変数のもとで、仮想世界の状態とロボット制御方法とを入力とし、微分可能なシミュレーションを実行することでシミュレーション結果を出力する。
・出力されたシミュレーション結果を修正し、修正後のシミュレーション結果を出力する。
・出力された修正後のシミュレーション結果が、当該ロボット制御方法のもとでロボットを制御し現実世界が変化することで観測結果から算出された、変化後の仮想世界の状態に近づくように、差異低減変数を更新する。つまり、出力されたシミュレーション結果と、修正後のシミュレーション結果との対応関係を訓練する。
【0098】
これにより、シミュレーション装置120によれば、物理シミュレータ(微分可能物理シミュレーション計算部440)より出力されるシミュレーション結果を修正し、修正後のシミュレーション結果を、より現実世界に近づけることが可能となる。この結果、より高精度なシミュレーションを実現することができる。
【0099】
更に、第1の実施形態に係る情報処理装置の一例であるシミュレーション装置120は、
・更新した環境変数のもとで、仮想世界の状態を入力とし、ロボット制御方法を出力する。
・更新した環境変数のもとで、仮想世界の状態と、出力されたロボット制御方法とを入力とし、微分可能なシミュレーションを実行することで、シミュレーション結果を出力する。また、出力されたシミュレーション結果を、更新された差異低減変数のもとで修正したうえで、報酬を算出する。
・算出された報酬に基づいて、仮想世界の状態とロボット制御方法との対応関係を訓練する。
【0100】
これにより、シミュレーション装置120によれば、ロボットを実際に動作させることなく、仮想世界の状態とロボット制御方法との対応関係を訓練し、ロボット制御変数を最適化することができる。また、仮想世界の状態に基づいて最適なロボット制御方法を出力することができる。
【0101】
[第2の実施形態]
上記第1の実施形態では、シミュレーションシステム100が、環境変数決定処理、差異低減変数決定処理、ロボット制御変数決定処理の順序で、各処理を実行する場合について説明した。しかしながら、シミュレーションシステム100が各処理を実行する際の実行順序はこれに限定されない。例えば、環境変数決定処理、差異低減変数決定処理、ロボット制御変数決定処理の順序で、各処理を実行した後に、再度、環境変数決定処理や、差異低減変数決定処理を実行してもよい。
【0102】
また、上記第1の実施形態では、現実環境観測部311をロボット110の制御装置113内に配するものとして説明した。しかしながら、現実環境観測部311は、シミュレーション装置120のシミュレーション部121内に配されてもよい。
【0103】
また、上記第1の実施形態において、シミュレーション装置120は、1台のコンピュータで実現されるものとして説明したが、シミュレーション装置120は、1または複数台のコンピュータで実現されてもよい。また、複数台のコンピュータで実現される場合にあっては、当該複数台のコンピュータは、複数箇所に離れて設置されていてもよい。
【0104】
また、上記第1の実施形態において、シミュレーション装置120は、汎用のコンピュータに各種プログラムを実行させることでシミュレーション部121を実現するものとして説明したが、シミュレーション部121の実現方法はこれに限定されない。
【0105】
例えば、プロセッサ、メモリなどを実装しているIC(Integrated Circuit)などの専用の電子回路(すなわちハードウェア)により実現されてもよい。このとき、複数の構成要素が一つの電子回路で実現されてもよいし、一つの構成要素が複数の電子回路で実現されてもよいし、構成要素と電子回路が一対一で実現されてもよい。
【0106】
[その他の実施形態]
上記第1及び第2の実施形態では、ロボット110が物体をつかんで所定の位置に移動させるタスクを実行する例について説明したが、ロボット110が実行するタスクはこれに限定されない。例えば、物体を移動させること、掃除機のように物体を吸引すること、あるいは、ロボット110自体が移動すること、等のタスクを実行してもよい。
【0107】
上記第1及び第2の実施形態では、ロボット制御処理計算部420より出力されたロボット制御方法に基づいて、ロボット110を動作させることで、現実世界を変化させる場合について説明した。
【0108】
しかしながら、上記シミュレーション装置120は、ロボット110を動作させることなく、現実世界が変化するような場合に対しても、適用することができる。ただし、このような場合に対して適用する際には、ロボット制御処理計算部420及び報酬算出部430は不要となる。つまり、シミュレーション部121は、仮想世界記憶部410、微分可能物理シミュレーション計算部440、差異低減処理計算部450により構成されてもよい。
【0109】
ここで、ロボット110を動作させることなく、現実世界が変化する場合とは、例えば、微分可能物理シミュレーション計算部440を用いて、気象シミュレーションを行う場合等が挙げられる。具体的には、現在の気象の状態を入力とすることで得られるシミュレーション結果が、次の気象の状態に基づいて、好ましくは一致するように、差異低減処理計算部450を訓練させることで、高精度なシミュレーションを実現することが可能になる。
【0110】
なお、上記実施形態に挙げた構成等に、その他の要素との組み合わせ等、ここで示した構成に本発明が限定されるものではない。これらの点に関しては、本発明の趣旨を逸脱しない範囲で変更することが可能であり、その応用形態に応じて適切に定めることができる。例えば、情報処理装置内にその他のモデルが含まれてもよい。また、例えば、取得、入力、出力等として、その他の情報を含んでもよい。また、例えば、取得、入力、出力等される情報は、その情報を処理して得られた情報であってもよく、例えば、ベクトルや中間表現等であってもよい。
【符号の説明】
【0111】
100 :シミュレーションシステム
110 :ロボット
111 :センサ装置
112 :駆動装置
113 :制御装置
114 :観測及び制御部
120 :シミュレーション装置
121 :シミュレーション部
311 :現実環境観測部
312 :ロボット制御部
410 :仮想世界記憶部
420 :ロボット制御処理計算部
430 :報酬算出部
440 :微分可能物理シミュレーション計算部
450 :差異低減処理計算部
460 :差分部