(57)【要約】【課題】障害物を回避する軌道をより容易に求める。【解決手段】実施形態にかかる制御装置は、推論部を備える。推論部は、移動体の位置および姿勢の少なくとも一方の潜在的な特徴を示す潜在空間上の入力データを入力し、実空間上で障害物に接触しない移動体の位置および姿勢の少なくとも一方を示す出力データを出力する第１モデルに対して、潜在空間上の複数の第１入力データを入力し、第１モデルが出力する複数の第１出力データを得る。【選択図】図４
2020196102.tif 000002
【特許請求の範囲】
【請求項１】
移動体の位置および姿勢の少なくとも一方の潜在的な特徴を示す潜在空間上の入力データを入力し、実空間上で障害物に接触しない前記移動体の位置および姿勢の少なくとも一方を示す出力データを出力する第１モデルに対して、前記潜在空間上の複数の第１入力データを入力し、前記第１モデルが出力する複数の第１出力データを得る推論部と、
を備える制御装置。
【請求項２】
複数の前記第１出力データに基づいて、前記移動体の移動を制御する移動制御部、
を備える請求項１に記載の制御装置。
【請求項３】
複数の前記第１入力データは、前記実空間上での前記移動体の移動開始位置および移動終了位置に対応する第１入力データを含む、
請求項１又は２に記載の制御装置。
【請求項４】
複数の前記第１入力データは、前記潜在空間上での移動開始位置および移動終了位置を結ぶ線を構成する、
請求項１乃至３のいずれか一項に記載の制御装置。
【請求項５】
前記推論部は、前記第１モデル、または、前記実空間上での前記移動体の位置および姿勢の少なくとも一方を示す入力データを入力し、前記潜在空間上の出力データを出力する第２モデルを用いて、前記実空間上での前記移動体の移動開始位置に対応する前記潜在空間上での移動開始位置、および、前記実空間上での前記移動体の移動終了位置に対応する前記潜在空間上での移動終了位置を推定する、
請求項３又は４に記載の制御装置。
【請求項６】
前記第１モデルは、前記障害物に関する条件とともに前記入力データを入力し、前記出力データを出力するように学習され、
前記推論部は、前記障害物に関する条件とともに複数の前記第１入力データを前記第１モデルに入力し、複数の前記第１出力データを得る、
請求項１乃至５のいずれか一項に記載の制御装置。
【請求項７】
前記障害物に関する条件は、前記障害物の画像情報、深度情報、及び、位置情報のいずれか一つを含む、
請求項１乃至６のいずれか一項に記載の制御装置。
【請求項８】
前記第１モデルは、ＧＡＮ（Generative  Adversarial  Network）、ＶＡＥ（Variational  Autoencoder）、オートエンコーダ、または、フローベース生成モデルである、
請求項１乃至７のいずれか一項に記載の制御装置。
【請求項９】
前記障害物に関する条件を取得するセンサと、
請求項１乃至８のいずれか一項に記載の制御装置と、
前記移動体と、
を備えるシステム。
【請求項１０】
実空間上で障害物に接触しない移動体の位置および姿勢の少なくとも一方を示す１以上の学習データを取得する取得部と、
取得された学習データを用いて、移動体の位置および姿勢の少なくとも一方の潜在的な特徴を示す潜在空間上の入力データを入力し、実空間上で障害物に接触しない前記移動体の位置および姿勢の少なくとも一方を示す出力データを出力する第１モデルを学習する学習部と、
を備える学習装置。
【請求項１１】
前記取得部は、前記１以上の学習データをそれぞれ含む複数のデータ群から、それぞれ１以上の学習データを取得する、
請求項１０に記載の学習装置。
【請求項１２】
複数の前記データ群は、前記位置および前記姿勢の少なくとも一方を示す値に応じて分類された１以上の学習データを含む、
請求項１１に記載の学習装置。
【請求項１３】
移動体の位置および姿勢の少なくとも一方の潜在的な特徴を示す潜在空間上の入力データを入力し、実空間上で障害物に接触しない前記移動体の位置および姿勢の少なくとも一方を示す出力データを出力する第１モデルに対して、前記潜在空間上の複数の第１入力データを入力し、前記第１モデルが出力する複数の第１出力データを得るステップ、
を含む制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、制御装置、システム、学習装置および制御方法に関する。
【背景技術】
【０００２】
工場および倉庫などで利用されるロボットに加え、生活環境で人間と協働作業するロボットの需要が高まっている。これらのロボットは、照明および障害物などの条件が常に変化する環境での動作が想定される。従って、人間、環境の障害物、および、ロボット自身が損傷しないようにロボットが動作することを保証するために、障害物を回避する能力をロボットが備えることが必要である。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Marija  Jegorova,  Stephane  Doncieux,  and  Timothy  Hospedales.，  “Behavioural  Repertoire  via  Generative  Adversarial  Policy  Network”，arXiv:  1811.02945,  6  Mar  2019
【非特許文献２】Oussama  Khatib．，“Real-time  obstacle  avoidance  for  manipulators  and  mobile  robots.”，  In  Robotics  and  Automation.  Proceedings.  1985  IEEE  International  Conference  on,  Vol.  2,  pp.500-505.  IEEE,  1985.
【非特許文献３】Sertac  Karaman  and  Emilio  Frazzoli．，“Incremental  sampling-based  algorithms  for  optimal  motion  planning.”，  Robotics  Science  and  Systems  VI,  Vol.  104,  p.  2,  2010.
【非特許文献４】Ian  Goodfellow,  Jean  Pouget-Abadie,  Mehdi  Mirza,  Bing  Xu,  David  Warde-Farley,  Sherjil  Ozair,  Aaron  Courville,  and  Yoshua  Bengio.，  “Generative  adversarial  nets.”  In  Advances  in  neural  information  processing  systems,  pp.  2672-2680,  2014.
【非特許文献５】Karen  Simonyan  Andrew  Brock,  Jeff  Donahue.，  “Large  scale  gan  training  for  high  fidelity  natural  image  synthesis.”，  In  International  Conference  on  Learning  Representations  2019,  2019.
【非特許文献６】Hariharan  Narayanan  Charles  Fefferman,  Sanjoy  Mitter.，  “Testing  the  manifold  hypothesis.”，  In  Journal  of  the  American  Mathematical  Society,  Vol.  29,  pp.  983-1049,  2016.
【非特許文献７】Masanori  Koyama  Yuichi  Yoshida  Takeru  Miyato,  Toshiki  Kataoka.，  “Spectral  normalization  for  generative  adversarial  networks.”，  In  International  Conference  on  Learning  Representations  2018,  2018.
【発明の概要】
【発明が解決しようとする課題】
【０００４】
発明が解決しようとする課題は、障害物を回避する軌道をより容易に求めることにある。
【課題を解決するための手段】
【０００５】
実施形態にかかる制御装置は、推論部を備える。推論部は、移動体の位置および姿勢の少なくとも一方の潜在的な特徴を示す潜在空間上の入力データを入力し、実空間上で障害物に接触しない移動体の位置および姿勢の少なくとも一方を示す出力データを出力する第１モデルに対して、潜在空間上の複数の第１入力データを入力し、第１モデルが出力する複数の第１出力データを得る。
【図面の簡単な説明】
【０００６】
【図１】図１は、本実施形態の制御装置を含むロボットシステムのハードウェア構成例を示す図である。
【図２】図２は、２リンクアームロボットであるロボットの構成例を示す図である。
【図３】図３は、制御装置のハードウェアブロック図である。
【図４】図４は、制御装置の機能構成の一例を示す機能ブロック図である。
【図５】図５は、本実施形態で用いるＧＡＮの構成例を示す図である。
【図６】図６は、本実施形態における学習処理の一例を示すフローチャートである。
【図７】図７は、本実施形態における制御処理の一例を示すフローチャートである。
【図８】図８は、潜在空間上での直線軌道の関節角度空間への写像の一例を示す図である。
【図９】図９は、ロボットの軌跡の例を示す図である。
【図１０】図１０は、潜在表現上での直線軌道の関節角度空間への写像の一例を示す図である。
【図１１】図１１は、関節角度空間上の軌道を元に動作させたロボットの軌跡の例を示す図である。
【図１２】図１２は、ＶＡＥの構成例を示す図である。
【図１３】図１３は、学習データの例を説明するための図である。
【発明を実施するための形態】
【０００７】
以下、図面を参照しながら実施形態について詳細に説明する。
【０００８】
障害物を回避する軌道計画では、人間による設計が不要であり、計算コストがより小さい障害物回避の方法が望まれる。そこで、本実施形態では、生成モデルを用いて障害物を回避する軌道を計算する。例えばＧＡＮ（Generative  Adversarial  Networks）を、生成モデルを含むモデルとして用いることができる。ＧＡＮは、多様体仮説に基づいて、学習データをより低次元の潜在表現（潜在空間上で表されるデータ）に落とし込める利点がある。本実施形態では、ロボットが障害物を回避する位置および姿勢の少なくとも一方をＧＡＮに含まれる潜在空間に獲得させ、潜在空間上で軌道を指定する。これにより、障害物を回避する軌道計画がより容易に実現可能となる。簡単な設計により障害物回避を実現することができるため、例えば技術者だけでなく、熟練した知識のないユーザでもロボットを扱うことが可能となる。
【０００９】
図１は、本実施形態の制御装置１００を含むロボットシステム１のハードウェア構成例を示す図である。図１に示すように、ロボットシステム１は、制御装置１００と、コントローラ２００と、ロボット３００と、センサ４００と、を備えている。
【００１０】
ロボット３００は、制御装置１００によって位置および姿勢の少なくとも一方（軌道）が制御されて移動する移動体の例である。ロボット３００は、例えば、複数のリンク、複数の関節、および、関節それぞれを駆動する複数の駆動装置（モータなど）を備える。以下では、２つの関節および２つのリンクを備える２リンクアームロボットであるロボット３００を例に説明する。
【００１１】
図２は、２リンクアームロボットであるロボット３００の構成例を示す図である。図２に示すように、ロボット３００は、ベース部材３２１と、２つの関節３０１、３０２と、２つのリンク３１１、３１２と、を備えている。関節３０１、３０２は、図２の紙面と垂直な方向の軸回りに回転する。関節３０１は、ベース部材３２１に固定された軸回りに回転する。リンク３１１、３１２は、関節３０１、３０２の回転に応じて移動する。図２では、関節３０１、３０２がそれぞれ反時計回りに回転することによりリンク３１１、３１２が移動する様子が示されている。
【００１２】
適用可能なロボット（移動体）はこれに限られず、どのようなロボット（移動体）であってもよい。例えば、３つ以上の関節およびリンクを備えるロボット、モバイルマニピュレータ、および、移動台車であってもよい。また、ロボット全体を実空間内の任意の方向に平行移動させるための駆動装置を備えるロボットであってもよい。移動体は、このように全体の位置が変化する物体でもよいし、図２のリンクアームロボットのように、一部の位置が固定され、他の部分の位置および姿勢の少なくとも一方が変化する物体でもよい。
【００１３】
図１に戻り、センサ４００は、ロボット３００の動作の制御に用いるための情報を検知する。センサ４００は、例えば、ロボット３００の周囲の画像を撮像する撮像装置（カメラ）、および、ロボット３００の周囲の物体までの深度情報を検知する深度センサ（デプスセンサ）の両方または一方である。センサ４００はこれらに限られるものではなく、例えば、障害物の位置に関する情報（位置情報）を取得可能なセンサであってもよい。
【００１４】
コントローラ２００は、制御装置１００からの指示に応じて、ロボット３００の駆動を制御する。例えばコントローラ２００は、制御装置１００から指定された回転方向および回転速度で回転するように、ロボット３００の関節を駆動する駆動装置（モータなど）を制御する。
【００１５】
制御装置１００は、コントローラ２００、ロボット３００、および、センサ４００に接続され、ロボットシステム１の全体を制御する。例えば制御装置１００は、ロボット３００の動作を制御する。ロボット３００の動作の制御には、生成モデルを用いた軌道の計算が含まれる。制御装置１００は、計算した軌道に従ってロボット３００を動作させるための動作指令を、コントローラ２００に出力する。制御装置１００は、生成モデルを学習する機能を備えてもよい。この場合、制御装置１００は、生成モデルを学習する学習装置としても機能する。
【００１６】
図３は、制御装置１００のハードウェアブロック図である。制御装置１００は、一例として、図３に示すような一般のコンピュータ（情報処理装置）と同様のハードウェア構成により実現される。制御装置１００は、図３に示すような１つのコンピュータにより実現されてもよいし、協働して動作する複数のコンピュータにより実現されてもよい。
【００１７】
制御装置１００は、メモリ２０４と、１または複数のハードウェアプロセッサ２０６と、記憶装置２０８と、操作装置２１０と、表示装置２１２と、通信装置２１４とを備える。各部は、バスにより接続される。
【００１８】
メモリ２０４は、例えば、ＲＯＭ２２２と、ＲＡＭ２２４とを含む。ＲＯＭ２２２は、制御装置１００の制御に用いられるプログラムおよび各種設定情報等を書き換え不可能に記憶する。ＲＡＭ２２４は、ＳＤＲＡＭ（Synchronous  Dynamic  Random  Access  Memory）等の揮発性の記憶媒体である。ＲＡＭ２２４は、１または複数のハードウェアプロセッサ２０６の作業領域として機能する。
【００１９】
１または複数のハードウェアプロセッサ２０６は、メモリ２０４（ＲＯＭ２２２およびＲＡＭ２２４）にバスを介して接続される。１または複数のハードウェアプロセッサ２０６は、例えば、１または複数のＣＰＵ（Central  Processing  Unit）であってもよいし、１または複数のＧＰＵ（Graphics  Processing  Unit）であってもよい。また、１または複数のハードウェアプロセッサ２０６は、ニューラルネットワークを実現するための専用の処理回路を含む半導体装置等であってもよい。
【００２０】
１または複数のハードウェアプロセッサ２０６は、ＲＡＭ２２４の所定領域を作業領域としてＲＯＭ２２２または記憶装置２０８に予め記憶された各種プログラムとの協働により各種処理を実行し、制御装置１００を構成する各部の動作を統括的に制御する。また、１または複数のハードウェアプロセッサ２０６は、ＲＯＭ２２２または記憶装置２０８に予め記憶されたプログラムとの協働により、操作装置２１０、表示装置２１２、および、通信装置２１４等を制御する。
【００２１】
記憶装置２０８は、フラッシュメモリ等の半導体による記憶媒体、あるいは、磁気的または光学的に記録可能な記憶媒体等の書き換え可能な記録装置である。記憶装置２０８は、制御装置１００の制御に用いられるプログラムおよび各種設定情報等を記憶する。
【００２２】
操作装置２１０は、マウスおよびキーボード等の入力デバイスである。操作装置２１０は、ユーザから操作入力された情報を受け付け、受け付けた情報を１または複数のハードウェアプロセッサ２０６に出力する。
【００２３】
表示装置２１２は、情報をユーザに表示する。表示装置２１２は、１または複数のハードウェアプロセッサ２０６から情報等を受け取り、受け取った情報を表示する。なお、通信装置２１４または記憶装置２０８等に情報を出力する場合、制御装置１００は、表示装置２１２を備えなくてもよい。
【００２４】
通信装置２１４は、外部の機器と通信して、ネットワーク等を介して情報を送受信する。
【００２５】
本実施形態の制御装置１００で実行されるプログラムは、インストール可能な形式または実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Digital  Versatile  Disk）等のコンピュータで読み取り可能な記録媒体に記録されてコンピュータプログラムプロダクトとして提供される。
【００２６】
また、本実施形態の制御装置１００で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、本実施形態の制御装置１００で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。また、本実施形態の制御装置１００で実行されるプログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【００２７】
本実施形態にかかる制御装置１００で実行されるプログラムは、コンピュータを後述する制御装置１００の各部として機能させうる。このコンピュータは、ハードウェアプロセッサ２０６がコンピュータ読取可能な記憶媒体からプログラムを主記憶装置上に読み出して実行することができる。
【００２８】
図１に示すハードウェア構成は一例であり、これに限られるものではない。制御装置１００、コントローラ２００、ロボット３００、および、センサ４００のうち一部または全部を、１つの装置が備えるように構成してもよい。例えば、ロボット３００が、制御装置１００、コントローラ２００、および、センサ４００の機能も備えるように構成してもよい。また、制御装置１００が、コントローラ２００およびセンサ４００の一方または両方の機能も備えるように構成してもよい。また、図１では制御装置１００が学習装置としても機能しうることを記載しているが、制御装置１００と学習装置とを物理的に異なる装置により実現してもよい。
【００２９】
次に、制御装置１００の機能構成について説明する。図４は、制御装置１００の機能構成の一例を示す機能ブロック図である。図４に示すように、制御装置１００は、取得部１０１と、学習部１０２と、推論部１０３と、移動制御部１０４と、記憶部１２１と、を備えている。
【００３０】
取得部１０１は、制御装置１００が実行する各種処理で用いられる各種情報を取得する。例えば取得部１０１は、生成モデルを学習するための学習データを取得する。学習データの取得方法はどのような方法であってもよいが、取得部１０１は、例えば予め作成された学習データを、外部の装置からネットワークなどを介して、または、記憶媒体から取得する。
【００３１】
学習部１０２は、学習データを用いて生成モデル（第１モデル）を学習する。ＧＡＮを用いる場合、学習部１０２は、ＧＡＮを構成する生成器および識別器の２つのニューラルネットワークを学習する。
【００３２】
学習データは、例えば、実空間上で障害物に接触しないロボット３００の位置および姿勢の少なくとも一方を示すデータである。このような学習データを用いて学習することにより、入力された潜在表現（潜在空間上のデータ）に対して、実空間上で障害物に接触（干渉）しない移動体の位置および姿勢の少なくとも一方を示す出力データを出力する生成器が得られる。なお、位置および姿勢の少なくとも一方を示す出力データは、位置を示す出力データ、姿勢を示す出力データ、および、位置および姿勢の両方を示す出力データ、を含む。生成器は、移動体の位置および姿勢の少なくとも一方の潜在的な特徴を示す潜在空間上の入力データを入力し、実空間上で障害物に接触しない移動体の位置および姿勢の少なくとも一方を示す出力データを出力する生成モデル（第１モデル）に相当する。学習方法の詳細は後述する。
【００３３】
推論部１０３は、学習された生成モデルを用いた推論を実行する。例えば推論部１０３は、生成モデルに対して、潜在空間上で線を構成する複数の入力データ（第１入力データ）を入力し、生成モデルが出力する複数の出力データ（第１出力データ）を得る。
【００３４】
移動制御部１０４は、ロボット３００の移動を制御する。例えば移動制御部１０４は、推論部１０３により得られた出力データを、実空間上でロボット３００が障害物に接触しない軌道を示す軌道データとして、ロボット３００の移動を制御する。より具体的には、移動制御部１０４は、軌道データに従ってロボット３００を動作させるための動作指令を生成し、動作指令をコントローラ２００に送信することにより、ロボット３００を移動させる。
【００３５】
記憶部１２１は、制御装置１００で用いられる各種情報を記憶する。例えば記憶部１２１は、ＧＡＮを構成するニューラルネットワーク（生成器および識別器）のパラメータ（重み係数、バイアスなど）、および、ＧＡＮを構成するニューラルネットワークを学習するための学習データを記憶する。記憶部１２１は、例えば図３の記憶装置２０８により実現される。
【００３６】
上記各部（取得部１０１、学習部１０２、推論部１０３、および、移動制御部１０４）は、例えば、１または複数のハードウェアプロセッサ２０６により実現される。例えば上記各部は、１または複数のＣＰＵにプログラムを実行させること、すなわちソフトウェアにより実現してもよい。上記各部は、専用のＩＣ（Integrated  Circuit）などのハードウェアプロセッサ、すなわちハードウェアにより実現してもよい。上記各部は、ソフトウェアおよびハードウェアを併用して実現してもよい。複数のプロセッサを用いる場合、各プロセッサは、各部のうち１つを実現してもよいし、各部のうち２以上を実現してもよい。
【００３７】
次に、ＧＡＮの構成例について説明する。図５は、本実施形態で用いるＧＡＮの構成例を示す図である。図５に示すように、ＧＡＮは、生成器５０１および識別器５０２の２つのニューラルネットワークを含む。生成器５０１は、入力される低次元の潜在空間上の潜在変数ｚに対して、学習データの偽のデータ（高次元データ）を出力する。生成器５０１は、出力された偽のデータの分布が真の学習データの分布に近くなるように学習される。識別器５０２は、入力データが真の学習データか偽のデータのいずれであるかを識別し、識別精度をより高くするように学習される。
【００３８】
図２に示すような２リンクロボットを用いる場合、低次元（潜在空間）のデータ（潜在変数）、および、高次元（実空間）のデータ（学習データ、偽のデータ）は、例えば以下のように定義される。
【００３９】
まず、関節３０１、３０２の角度（関節角度）を、それぞれθ０、θ１とする。関節３０２、および、リンク３１２の先端の座標をそれぞれ（ｘ０，ｙ０）、および、（ｘ１，ｙ１）とする。リンク３１１、３１２の長さ（リンク長）は、例えば１とする。高次元のデータは、２つの関節３０１、３０２の角度、関節３０２の位置、リンク３１２の先端の位置、を含む６次元のデータ（θ０，θ１，ｘ０，ｙ０，ｘ１，ｙ１）として表される。このような６次元の位置姿勢情報のうち（ｘ０，ｙ０，ｘ１，ｙ１）は、潜在的には（θ０，θ１）という２次元の情報を与えれば順運動学によって生成できる。このため、低次元のデータ（潜在変数）は、２次元のデータ（ｚ０，ｚ１）と定義することができる。同様に、関節などの駆動部がｎ個（ｎ≧３の整数）である場合は、例えばｎ次元のデータ（ｚ０，ｚ１，・・・，ｚｎ−１）を潜在変数とすることができる。
【００４０】
なお、上記のような低次元（潜在空間）のデータ、および、高次元（実空間）のデータは一例であり、これらに限られるものではない。例えば、関節の自由度よりも大きい次元数の潜在変数が用いられてもよい。
【００４１】
図５に示すＧＡＮは、生成器５０１および識別器５０２それぞれに対して、複数の条件のうち指定された条件（Condition）を入力することができる。これにより、生成器５０１および識別器５０２は、条件に応じたデータ（偽のデータ、または、識別結果）を出力することができる。なお、このように条件を入力可能なＧＡＮは、Ｃｏｎｄｉｔｉｏｎａｌ  ＧＡＮと呼ばれる場合がある。なお、条件を入力しないＧＡＮを用いるように構成してもよい。
【００４２】
図５に示す条件は、ロボット３００が移動可能な範囲内に、黒い矩形で示す障害物が存在することを示す。条件の指定方法はどのような方法であってもよい。図５に示すように、ロボット３００が移動可能な範囲を複数（図５では１６個）に区切った領域（矩形）ごとに障害物が存在するか否かを示す情報（例えば障害物が存在する場合に１、存在しない場合に０）を指定した条件を用いてもよい。ロボット３００の周囲を撮像した画像およびロボット３００の周囲の物体までの深度情報の一方または両方を、障害物に関する条件として用いてもよい。この場合、センサ４００（撮像装置、深度センサ）により検知される画像情報および深度情報を障害物に関する条件として用いることができる。画像情報または深度情報を用いる場合、障害物の位置を示す情報（位置情報）がさらに障害物に関する条件として明示的に与えられてもよいし、与えられなくてもよい。障害物の位置情報を取得可能なセンサ４００を用いて、障害物の位置情報のみを障害物に関する条件として用いてもよい。
【００４３】
多様体仮説によると、この世の中のあらゆる表現は、より低次元の多様体として表現できる。ＧＡＮは、多様体仮説に基づき、高次元の表現から低次元の潜在表現を獲得することが期待される。本実施形態のように障害物を回避する軌道計画に適用する場合、ＧＡＮの条件付き生成モデル（生成器５０１）を学習することにより、障害物と接触しないロボット３００の位置および姿勢の少なくとも一方を示す低次元の潜在表現が獲得される。学習された生成器５０１は、指定された潜在表現（潜在空間上の位置および姿勢の少なくとも一方を示すデータ）から、実空間上でロボットが障害物を回避する位置および姿勢の少なくとも一方を示すデータを生成することが可能となる。
【００４４】
また、ＧＡＮは、潜在空間上のデータ（潜在変数）の隣接関係と、生成するデータの隣接関係とが対応するように学習することが知られている。従って、低次元の潜在空間上で指定された軌道（複数の隣接する位置および姿勢の少なくとも一方）を生成器５０１により写像すると、実空間上でロボット３００が障害物を回避する位置および姿勢の少なくとも一方の軌道が得られる。
【００４５】
また、障害物の位置などの情報を含む条件を生成器５０１と識別器５０２に入力すると、同じ潜在表現から出力される位置および姿勢の少なくとも一方が歪み、条件に含まれる障害物の位置に応じて、障害物を回避する位置およびは姿勢の少なくとも一方が出力される。
【００４６】
次に、このように構成された本実施形態にかかる制御装置１００による学習処理について説明する。図６は、本実施形態における学習処理の一例を示すフローチャートである。
【００４７】
まず、取得部１０１は、学習データを取得する（ステップＳ１０１）。取得部１０１は、例えば外部の装置からネットワークなどを介して取得され、記憶部１２１に記憶された学習データを取得する。通常、学習処理は、複数回繰り返し実行される。取得部１０１は、複数の学習データのうち一部を、各回の学習に用いる学習データ（バッチ）として取得してもよい。
【００４８】
次に学習部１０２は、ＧＡＮの生成器５０１により、偽のデータを生成する（ステップＳ１０２）。学習部１０２は、生成した偽のデータ、または、ステップＳ１０１で取得された学習データ（真の学習データ）を識別器５０２に入力し、識別器５０２が出力する識別結果を得る（ステップＳ１０３）。
【００４９】
学習部１０２は、識別結果を用いて、生成器５０１および識別器５０２のパラメータを更新する（ステップＳ１０４）。例えば学習部１０２は、識別器５０２が偽のデータを真の学習データであると誤って識別するほど小さい値となるロス関数の値を最小化するように生成器５０１のパラメータを更新する。また学習部１０２は、識別器５０２の識別結果が正しいほど小さい値となるロス関数の値を最小化するように識別器５０２のパラメータを更新する。学習部１０２は、どのようなアルゴリズムを学習に用いてもよいが、例えばＡｄａｍ（Adaptive  moment  estimation）を用いて学習を行うことができる。
【００５０】
学習部１０２は、学習を終了するか否かを判定する（ステップＳ１０５）。例えば学習部１０２は、すべての学習データを処理したか、ロス関数の改善の大きさが閾値より小さくなったか、または、学習の回数が上限値に達したか否か、などにより、学習の終了を判定する。
【００５１】
学習が終了していない場合（ステップＳ１０５：Ｎｏ）、ステップＳ１０１に戻り、新たな学習データに対して処理が繰り返される。学習が終了したと判定された場合（ステップＳ１０５：Ｙｅｓ）、学習処理を終了する。
【００５２】
なお、ＧＡＮは、学習する際にしばしば勾配が消失あるいは発散するため、学習が難しいことが知られている。そこで学習部１０２は、学習を安定化させるための手法、例えば、生成器５０１および識別器５０２の各層に正規化（Spectral  Normalizationなど）を適用する手法を用いてもよい。
【００５３】
以上のような学習処理により、潜在空間上の入力データに対して、実空間上でロボット３００が障害物に接触しない位置および姿勢の少なくとも一方を示す出力データを出力する生成モデル（生成器５０１）が得られる。ロボット３００の移動する軌道を計算する際には、このように生成された生成器５０１が用いられる。
【００５４】
次に、本実施形態にかかる制御装置１００によるロボット３００の制御処理について説明する。図７は、本実施形態における制御処理の一例を示すフローチャートである。
【００５５】
まず、推論部１０３は、潜在空間上での、ロボット３００のスタート位置（移動開始位置）およびエンド位置（移動終了位置）を計算する（ステップＳ２０１）。なお、実空間上でのロボット３００のスタート位置およびエンド位置は、事前に与えられていることを前提とする。
【００５６】
推論部１０３は、例えば、潜在空間上の潜在変数ｚをランダムに生成し、潜在変数ｚを生成器５０１に入力して得られるデータが、実空間上で与えられたスタート位置と一致するか判定する。なお一致には、値が完全に一致する場合のみでなく、値の差分が閾値以内となる場合を含んでもよい。一致した場合に、推論部１０３は、生成器５０１に入力したデータを、潜在空間上でのスタート位置と推定する。一致しない場合は再度潜在変数ｚをランダムに生成し、処理を繰り返す。推論部１０３は、潜在空間上のエンド位置も同様にして推定することができる。
【００５７】
推論部１０３は、生成器５０１とは異なるモデル（第２モデル）を用いて、潜在空間上でのロボット３００のスタート位置およびエンド位置を計算（推定）してもよい。例えば、学習部１０２は、実空間上のデータ（生成器５０１が生成した偽のデータなど）を入力し、潜在空間上のデータを出力するニューラルネットワークモデル（第２モデル）を、生成器５０１および識別器５０２の学習と同時に、または独立に学習する。推論部１０３は、このように学習されたニューラルネットワークモデルに対して、実空間上で与えられたスタート位置およびエンド位置を入力し、出力されたデータを、それぞれ潜在空間上でのロボット３００のスタート位置およびエンド位置として推定する。
【００５８】
推論部１０３は、潜在空間上でのスタート位置とエンド位置とを結ぶ軌道を決定する（ステップＳ２０２）。軌道は、スタート位置とエンド位置とを結ぶ軌道であればどのような軌道であってもよい。上記のように２次元の潜在空間を用いる場合、推論部１０３は、例えばスタート位置とエンド位置とを結ぶ線（直線、曲線）を軌道として決定してもよい。
【００５９】
推論部１０３は、決定した軌道に相当する潜在空間上の複数の入力データを生成器５０１に入力し、生成器５０１が出力する複数の出力データを得る（ステップＳ２０３）。この出力データは、実空間上でロボット３００が障害物に接触せずに移動する軌道に相当する。
【００６０】
移動制御部１０４は、計算された軌道に従って移動するようにロボット３００の移動を制御する（ステップＳ２０４）。
【００６１】
以上のように、本実施形態によれば、ＧＡＮの学習により得られる生成モデル（生成器５０１）を用いてロボット３００の軌道を計算することができる。このような方法では、ポテンシャル法のような複雑な関数の設計は不要である。また、学習データより低次元の潜在空間での軌道の計算となるため、計算コストを低減することができる。
【００６２】
次に、ロボットの移動制御の具体例について図８〜図１１を用いて説明する。以下では、図２のような２リンクアームロボットであるロボット３００をシミュレートするシミュレータを用いて軌道を計算した例を説明する。
【００６３】
まず、ロボット（シミュレータ）の動作の前提について説明する。学習データは以下のように求める。関節３０１の関節角度θ０の範囲は、−９０°〜＋９０°とする。関節３０２の関節角度θ１の範囲は、０°〜＋１５０°とする。各関節角度の刻み幅は１°とする。関節角度θ０、θ０１から順運動学によって関節３０２およびリンク３１２の先端の座標を含む上記の（ｘ０，ｙ０，ｘ１，ｙ１）を得ることができる。このようにして得られる６次元のデータ（θ０，θ１，ｘ０，ｙ０，ｘ１，ｙ１）が学習データとして用いられる。
【００６４】
条件としては、障害物情報を含むマップを与える。マップは、ロボット３００の存在する空間を８×４＝３２の領域に分け、各領域に対して障害物の有無を表す２値の情報（例えば障害物がある場合１、ない場合０）を障害物情報として含む。条件数は、障害物のない場合（いずれの領域にも障害物がない場合）、および、障害物のある場合（いずれかの領域に障害物がある場合）の２つとする。以下では、障害物のない場合を条件１、障害物のある場合を条件２という場合がある。バッチサイズ（各回の学習データの個数）は２０５６、最適化手法はＡｄａｍとし、１０万回の学習を行う。
【００６５】
図８は、上記のような前提に従い学習した後の生成器５０１に対して、条件１（障害物なし）とともに入力された潜在空間上での直線軌道の関節角度空間への写像の一例を示す図である。関節角度空間とは、６次元のデータのうち関節角度θ０，θ１により表される２次元の空間である。図８の上部は、潜在空間上で指定されるスタート位置８０１と、エンド位置８０２とを結ぶ直線軌道の例を示す。図８の下部は、関節角度空間上に写像されたスタート位置８１１とエンド位置８１２とを結ぶ軌道の例を示す。また、図９は、図８の関節角度空間上の軌道を元に動作させたロボット（シミュレータ）の軌跡の例を示す図である。
【００６６】
また、図１０は、生成器５０１に対して、条件２（障害物あり）とともに入力された潜在表現上での直線軌道の関節角度空間への写像の一例を示す図である。また、図１１は、図１０の関節角度空間上の軌道を元に動作させたロボット（シミュレータ）の軌跡の例を示す図である。
【００６７】
潜在表現上での隣接関係はロボット位置および姿勢の少なくとも一方の隣接関係と対応しており、潜在表現上で指定された滑らかな軌道は関節角度空間でも滑らかな軌道となり、ロボット位置および姿勢の少なくとも一方は滑らかに変化する。
【００６８】
図１１に示すように、障害物情報を条件として入力した場合、障害物１１０１に衝突する関節角度は生成されず、障害物１１０１に衝突しない関節角度が生成される。このように、ロボットは障害物１１０１のある領域を回避して移動することが可能となる。
【００６９】
図８のように、条件として障害物がない情報を入力した場合であっても、生成される関節角度が、条件として障害物がある情報を入力した場合である図１０の関節角度と類似している。Ｃｏｎｄｉｔｉｏｎａｌ  ＧＡＮでは異なる条件に対しても同一のニューラルネットワーク（生成モデル）が用いられるため、他の条件の影響を受けることが原因の１つと考えられる。この例のように条件を２つしか用いない場合は、２つの条件が互いに影響し合い、類似する出力データが出力されている可能性がある。条件数をより多くすれば、特定の条件の影響を受けないように学習された（汎化性能の高い）生成モデルが得られることが期待される。例えば、条件１（障害物なし）とともに入力された潜在空間上での直線軌道の関節角度空間への写像が、図８の下部のような歪みを含まない写像となる可能性がある。
【００７０】
（変形例１）
生成モデルは、ＧＡＮに含まれる生成器に限られるものではない。学習データから低次元の潜在表現が得られるような生成モデルであれば、どのようなモデルを用いてもよい。例えば、ＧＡＮの代わりに、ＶＡＥ（Variational  Autoencoder）、オートエンコーダ、または、フローベース生成モデルを用いてもよい。
【００７１】
図１２は、ＶＡＥの構成例を示す図である。ＶＡＥでは、６次元のデータ（θ０，θ１，ｘ０，ｙ０，ｘ１，ｙ１）がエンコーダ１２０１に入力され、エンコーダ１２０１が潜在空間上の潜在変数ｚを出力する。潜在変数ｚに対して条件が与えられた変数ｚ’がデコーダ１２０２に入力され、デコーダ１２０２が新たな６次元のデータを生成して出力する。ＶＡＥの場合、デコーダ１２０２が生成モデルとして用いられる。
【００７２】
ＶＡＥでは、実空間上でのロボットのスタート位置およびエンド位置をエンコーダ１２０１に入力することにより、潜在空間上でのスタート位置およびエンド位置を得ることができる。すなわち、エンコーダ１２０１を、潜在空間上でのロボットのスタート位置およびエンド位置を推定するためのモデル（第２モデル）として用いることができる。
【００７３】
（変形例２）
図１３は、２リンクアームロボットの軌道計画に用いるモデルの学習のための学習データの例を説明するための図である。丸印は、例えば図２の２リンクアームロボットの関節３０１、３０２またはリンク３１２の先端の位置を表す。図１３では、座標（０，０）を関節３０１の位置とし、リンク３１１、３１２の長さを１としている。また、図１３では、関節３０２およびリンク３１２の先端の位置が、それぞれ座標（０，−１．０）および座標（０，−２．０）である状態から、関節３０１、３０２の角度を一定幅で変化させた場合のロボット各部の位置の変化が表されている。図１３に示す各位置に対応する６次元のデータが学習データとして用いられる。
【００７４】
各回の学習では、バッチとして与えられる複数の学習データが用いられる。例えば、学習データ全体からランダムに選択された一定数の学習データがバッチとして各回の学習に用いられる。
【００７５】
このような方法では、学習結果が安定しない場合がある。例えば、図１３に示すような学習データのうち左上部の学習データが偏って選択されたため、学習後に得られる潜在空間にも偏りが生じる場合がある。
【００７６】
このような問題を回避し、学習結果がより安定するように学習データを選択してもよい。例えば、取得部１０１は、１以上の学習データをそれぞれ含む複数のデータ群から、それぞれ１以上の学習データを取得し、各回の学習に用いる学習データ（バッチ）として用いてもよい。図１３のような学習データの場合、取得部１０１は、例えば、位置および姿勢の少なくとも一方を示す値（座標値）に応じて学習データが分類された複数のデータ群それぞれから１以上の学習データを、例えばランダムに選択してもよい。より具体的には、例えば図１３に示す位置座標（ｘ，ｙ）の空間をメッシュ状に複数の領域に分割し、各領域内にリンク３１２の先端の座標が含まれる学習データを、それぞれ各領域に対応するデータ群に分類する。取得部１０１は、このように分類される各データ群から１以上の学習データを選択することにより、各回の学習に用いる学習データ（バッチ）を取得する。
【００７７】
また、取得部１０１は、障害物により近い位置を含む学習データを優先して選択してもよい。例えば上記のように学習データを複数のデータ群に分類する場合は、取得部１０１は、障害物を含む領域または障害物を含む領域に隣接する領域から、他の領域よりも多くの学習データを取得してもよい。これにより、障害物を回避する位置および姿勢の少なくとも一方をより効率的に学習することが可能となる。
【００７８】
本変形例によれば、偏りが生じないように取得した学習データを用いて学習できるため、より均一な潜在空間を生成することが可能となる。
【００７９】
本明細書において、“ａ、ｂおよびｃの少なくとも１つ（一方）”のような表現は、ａ、ｂ、ｃ、ａ−ｂ、ａ−ｃ、ｂ−ｃ、ａ−ｂ−ｃの組み合わせだけでなく、ａ−ａ、ａ−ｂ−ｂ、ａ−ａ−ｂ−ｂ−ｃ−ｃなどの同じ要素の複数の組み合わせも含む表現である。また、ａ−ｂ−ｃ−ｄの組み合わせのように、ａ、ｂ、ｃ以外の要素を含む構成もカバーする表現である。同様に、本明細書において、“ａ、ｂまたはｃの少なくとも１つ（一方）”のような表現は、ａ、ｂ、ｃ、ａ−ｂ、ａ−ｃ、ｂ−ｃ、ａ−ｂ−ｃの組み合わせだけでなく、ａ−ａ、ａ−ｂ−ｂ、ａ−ａ−ｂ−ｂ−ｃ−ｃなどの同じ要素の複数の組み合わせも含む表現である。また、ａ−ｂ−ｃ−ｄの組み合わせのように、ａ、ｂ、ｃ以外の要素を含む構成もカバーする表現である。
【００８０】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００８１】
１  ロボットシステム
１００  制御装置（学習装置）
１０１  取得部
１０２  学習部
１０３  推論部
１０４  移動制御部
１２１  記憶部
２００  コントローラ
２０４  メモリ
２０６  ハードウェアプロセッサ
２０８  記憶装置
２１０  操作装置
２１２  表示装置
２１４  通信装置
２２２  ＲＯＭ
２２４  ＲＡＭ
３００  ロボット
４００  センサ
【図１】
2020196102.tif 000003
【図２】
2020196102.tif 000004
【図３】
2020196102.tif 000005
【図４】
2020196102.tif 000006
【図５】
2020196102.tif 000007
【図６】
2020196102.tif 000008
【図７】
2020196102.tif 000009
【図８】
2020196102.tif 000010
【図９】
2020196102.tif 000011
【図１０】
2020196102.tif 000012
【図１１】
2020196102.tif 000013
【図１２】
2020196102.tif 000014
【図１３】
2020196102.tif 000015