(57)【要約】  制御装置（１ｂ）は、制御部（１１）と、予測部（１００）と、修正部（１０３）と、を備えて構成される。制御装置が備える制御部は、制御対象（３）の動作の、第１の時系列情報に基づく制御を実行する。制御装置が備える予測部は、制御対象の目的達成に伴うコストの予測を実行する。制御装置が備える修正部は、予測部により予測されたコストに応じて、制御対象の第１の時系列情報に基づく動作の修正を実行する。
2020003742.tif 000002
【特許請求の範囲】
【請求項１】
制御対象の動作を第１の時系列情報に基づき制御する制御部と、
前記制御対象の目的達成に伴うコストを予測する予測部と、
前記予測部により予測された前記コストに応じて、前記制御対象の前記第１の時系列情報に基づく動作を修正する修正部と、
を備える制御装置。
【請求項２】
前記修正部は、
前記第１の時系列情報に基づく動作を、前記第１の時系列情報と異なる第２の時系列情報に基づく動作に対して連続する動作に修正する
請求項１に記載の制御装置。
【請求項３】
前記予測部により予測された前記コストに応じて、１以上の時系列情報から、該予測に対応する状況と類似する類似状況を検索する検索部をさらに備え、
前記第２の時系列情報は、
前記１以上の時系列情報から前記検索部により前記類似状況が検索された時系列情報である
請求項２に記載の制御装置。
【請求項４】
前記検索部は、
前記予測が対応する状況を含む環境がさらに類似する前記類似状況を検索する
請求項３に記載の制御装置。
【請求項５】
前記第２の時系列情報は、
前記第１の時系列情報を入力情報とした学習により最適と推定された動作に応じた時系列情報である
請求項２に記載の制御装置。
【請求項６】
前記第２の時系列情報は、
前記制御対象による自律的な試行錯誤動作により学習され最適と推定された動作に応じた時系列情報である
請求項２に記載の制御装置。
【請求項７】
前記修正部は、
前記制御対象の動作を制御するためのユーザ操作に基づき、前記第１の時系列情報に基づく動作を修正する
請求項２に記載の制御装置。
【請求項８】
前記修正部は、
前記ユーザ操作に基づき修正された前記動作に応じた第３の時系列情報を、前記第１の時系列情報に追加する
請求項７に記載の制御装置。
【請求項９】
前記修正部は、
前記修正された前記第１の時系列情報に基づき前記制御部に制御された前記制御対象の動作に対して前記予測部により予測された前記コストに応じて前記修正をさらに行う
請求項１に記載の制御装置。
【請求項１０】
前記予測部は、
前記制御対象が他のオブジェクトに干渉する可能性に応じて前記コストを予測する
請求項１に記載の制御装置。
【請求項１１】
前記予測部は、
前記制御対象の周囲の状況を検知する検知部の検知結果に基づき前記コストを予測する
請求項１に記載の制御装置。
【請求項１２】
前記制御部は、
前記第１の時系列情報に対応する第１の環境とは異なる第２の環境で、該第１の時系列情報に基づき前記制御対象の動作を制御する
請求項２に記載の制御装置。
【請求項１３】
前記制御部は、
前記第１の環境で作成された前記第１の時系列情報に基づき前記制御対象の動作を制御する
請求項１２に記載の制御装置。
【請求項１４】
前記第１の時系列情報は、定形パターンに従い予め作成される
請求項１２に記載の制御装置。
【請求項１５】
前記制御部は、
前記制御対象が単独で動作する前記第１の環境で作成された前記第１の時系列情報に基づき、該制御対象を含み、複数のオブジェクトが同時に動作する前記第２の環境で、該制御対象の動作を制御する
請求項１２に記載の制御装置。
【請求項１６】
前記制御部は、
仮想空間内の前記制御対象の動作を前記第１の時系列情報に基づき制御する
請求項２に記載の制御装置。
【請求項１７】
前記修正部は、
前記制御対象とは異なる他の制御対象の動作を制御するためのユーザ操作に基づき予測される前記コストに応じて、該制御対象の前記第１の時系列情報に基づく動作を修正する
請求項１６に記載の制御装置。
【請求項１８】
前記予測部は、
前記制御対象および前記他の制御対象の少なくとも一方の速度に応じて前記コストを予測する
請求項１７に記載の制御装置。
【請求項１９】
制御対象の動作を第１の時系列情報に基づき制御する制御ステップと、
前記制御対象の目的達成に伴うコストを予測する予測ステップと、
前記予測ステップにより予測された前記コストに応じて、前記制御対象の前記第１の時系列情報に基づく動作を修正する修正ステップと、
を有する制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置および制御方法に関する。
【背景技術】
【０００２】
動作対象の動作に伴い記録されたログを再生して動作対象を再動作させることができる。このログ再生による動作対象の再動作は、限られたコンテキストにおいて利用されることが多い。例えば、動作対象の同左のログを記録する場合、他のオブジェクトからの干渉が発生しないように、当該動作対象を他から隔離する、動作対象の可動範囲内に他のオブジェクトが入らないようにする、などの措置が取られる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第４１６３６２４号公報
【特許文献２】国際公開第２０１７／１６３５３８号
【非特許文献】
【０００４】
【非特許文献１】Mariusz  Bojarski、他１２名”End  to  End  Learning  for  Self-Driving  Cars”、［ｏｎｌｉｎｅ］、平成２８年４月２５日、［平成３０年６月１８日検索］、インターネット＜https://images.nvidia.com/content/tegra/automotive/images/2016/solutions/pdf/end-to-end-dl-using-px.pdf＞
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ログに従った再動作は、当該ログに係る限られたコンテキスト以外の環境において、期待されない動作を取ってしまう可能性があり、改善の余地があった。【０００６】
本開示では、ログに従った動作をより適切に制御可能な制御装置および制御方法を提案する。
【課題を解決するための手段】
【０００７】
上記の課題を解決するために、本開示に係る一形態の制御装置は、制御対象の動作を第１の時系列情報に基づき制御する制御部と、制御対象の目的達成に伴うコストを予測する予測部と、予測部により予測されたコストに応じて、制御対象の第１の時系列情報に基づく動作を修正する修正部と、を備える。
【発明の効果】
【０００８】
本開示によれば、ログに従った動作をより適切に制御可能となる。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載された何れかの効果であってもよい。
【図面の簡単な説明】
【０００９】
【図１】ログ情報に基づき制御対象の動作を制御する制御システムの基本的な構成を示す図である。
【図２】本開示の各実施形態に適用可能な制御システムの一例の構成を示す図である。
【図３】実施形態に適用可能な制御対象の一例のハードウェア構成を示すブロック図である。
【図４】実施形態に適用可能な制御装置の一例のハードウェア構成を示すブロック図である。
【図５】第１の実施形態に係る動作修正部の機能を説明するための一例の機能ブロック図である。
【図６】図６は、第１の実施形態に係る、制御対象の制御処理を示す一例のフローチャートである。
【図７】図７は、第１の実施形態に係る動作修正処理を示す一例のフローチャートである。
【図８】第１の実施形態に適用可能な、ログ記録部に記録されるログ情報の例を示す図である。
【図９】第１の実施形態に適用可能な、ログ記録部に記録されるログ情報の例を示す図である。
【図１０】スムージング処理の必要性を説明するための図である。
【図１１】第１の実施形態に適用可能なスムージング処理を説明するための図である。
【図１２】第１の実施形態に適用可能な先読み処理を説明するための図である。
【図１３】第２の実施形態に係る動作修正部の機能を説明するための一例の機能ブロック図である。
【図１４】第２の実施形態に係る動作修正処理を示す一例のフローチャートである。
【図１５】第３の実施形態に係る動作修正部の機能を説明するための一例の機能ブロック図である。
【図１６】第３の実施形態に係る動作修正処理を示す一例のフローチャートである。
【発明を実施するための形態】
【００１０】
以下、本開示の実施形態について、図面に基づいて詳細に説明する。なお、以下の各実施形態において、同一の部位には同一の符号を付することにより、重複する説明を省略する。
【００１１】
［本開示の概要］
本開示に係る制御装置は、ログ情報に基づき動作が制御される制御対象の、当該動作による目的の達成に伴うコストを予測し、予測したコストに応じて制御対象のログ情報に基づく動作を修正するようにしている。そのため、本開示に係る制御装置によれば、ログ情報に基づく制御対象の動作を、より適切に制御することができる。
【００１２】
本開示の説明に先んじて、理解を容易とするために、ログ情報に基づき制御対象の動作を制御するための基本的な構成について説明する。図１は、ログ情報に基づき制御対象の動作を制御する制御システムの基本的な構成を示す図である。図１において、制御システムは、制御装置１ａと、ログ記録部２ａと、を含む。また、制御装置１ａは、動作制御部１１を含み、制御対象３の環境４における動作を制御する。
【００１３】
ログ記録部２ａは、制御対象３に動作させたいモーションのデータがログ情報として予め記憶される。このログ情報は、例えば、制御対象３の動作に対応する単位時間毎の制御データを含むもので、制御対象３の動作を時系列で示す時系列情報である。制御装置１ａにおいて、動作制御部１１は、ログ記録部２ａから取得したログ情報に基づき、制御対象３の動作を制御する。より具体的には、動作制御部１１は、制御対象３が現在の状態から次の状態に移行するための制御信号を生成し出力する。制御対象３は、この制御信号に応じて、環境４下において動作する。
【００１４】
説明のため、制御対象３が制御信号に従い動作を制御されるロボットであるものとする。前提として、ログ情報に基づき動作する制御対象３を実際に動作させる環境４下には、他のオブジェクト、例えば他のロボットや人が共存、協働しているものとする。
【００１５】
制御対象３の動作に応じたログ情報の収録は、例えば、これら他のオブジェクトを完全に排除した環境で行われる。これに限らず、他のオブジェクトの共存を許容した環境で制御対象３のログ情報の収録を行うこともできる。何れの環境でログ情報を収録した場合であっても、収録時の状況は、制御対象３を例えば実際の用途において動作させている状況とは異なる場合が殆どである。そのため、単に収録時のログ情報に従い制御対象３を動作させるだけでは、当該制御対象３が他のオブジェクトと干渉、衝突を起こす可能性がある。
【００１６】
制御対象３の一例として、可動のアームを用いて部品組み立て作業などを行うアームロボットを考える。この場合、アームロボットに対してティーチングペンダントなどを用いて部品組み立て作業をプログラムし、実際の作業環境で、プログラムに従いリプレイモーションでアームロボットを動作させて組み立て作業を行うのが一般的である。この場合、アームロボットを完全に隔離した状況でないと、他のオブジェクトとの衝突が発生するおそれがある。狭小空間での複数台のロボット作業環境であったり、人や他のロボットと共存協働作業を行う際には、衝突問題が避けられない。
【００１７】
図２は、本開示の各実施形態に適用可能な制御システムの一例の構成を示す図である。図２に示す制御システムにおいて、センサ５が追加されると共に、制御装置１ｂにおいて、図１の制御装置１ａに対して、動作修正部１０が追加されている。
【００１８】
センサ５は、制御対象３の内部の状態を検知する検知手段と、環境４下における制御対象３の外部の状態を検知する検知手段と、を含む。制御対象３の内部の状態を検知する検知手段は、例えば制御対象３が上述のアームロボットである場合には、各関節の角度を取得する角度センサや、制御対象３の動作を逐次的に検出する動作センサなどを含む。また、制御対象３の外部の状態を検知する検知手段は、制御対象３の周囲あるいは制御対象３自身を含めた制御対象３の周囲を撮影するためのカメラを含む。外部状態を検知する検知手段として、距離を計測するデプスセンサや、温度を計測する温度センサをさらに追加してもよい。
【００１９】
ログ記録部２ｂは、制御対象３の動作に応じたログ情報が予め記録される。制御対象３が上述のアームロボットのようなファクトリオートメーション用のロボットである場合には、定型的なパターンに基づくログ情報が予め作成され、ログ記録部２ｂに記録される。さらに、ログ記録部２ｂは、制御対象３の動作に応じて生成されたログ情報を、追加して記録することができる。例えば、ログ記録部２ｂは、センサ５により検知された各情報を逐次的に記録することができる。
【００２０】
制御装置１ａに含まれる動作修正部１０は、動作制御部１１により制御される制御対象３の動作を修正する。動作修正部１０は、例えば、ログ記憶部２ｂに記憶されるログ情報と、センサ５の出力と、に基づき制御対象３の動作の修正を行うことができる。また、動作修正部１０は、ログ記憶部２ｂに記憶されるログ情報などに基づき学習した学習結果を用いて制御対象３の動作の修正を行うようにできる。さらに、動作修正部１０は、ユーザ操作に基づき制御対象３の動作の修正を行うようにもできる。
【００２１】
なお、図２において、制御装置１ｂおよびログ記録部２ｂを、制御対象３に含めて構成することができる。これに限らず、制御装置１ｂおよびログ記録部２ｂと、制御対象３と、を別個の構成とし、制御装置１ｂと制御対象３とを所定の接続線で接続してもよい。さらに、ログ記録部２ｂは、ＬＡＮ(Local  Area  Network)やインターネットといったネットワークを介して制御装置１ｂと接続されてもよい。この場合、ログ記録部２ｂは、複数の制御装置１ｂと接続することができる。
【００２２】
図３は、実施形態に適用可能な制御対象３の一例のハードウェア構成を示すブロック図である。なお、ここでは、当該制御対象３が上述のアームロボットのようなロボットであるものとして説明を行う。
【００２３】
図３の例では、制御対象３は、それぞれバス３００５で接続される、通信Ｉ／Ｆ３０００と、ＣＰＵ３００１と、ＲＯＭ３００２と、ＲＡＭ３００３と、１以上の駆動部３０１０と、を含む。通信Ｉ／Ｆ３０００は、制御装置１ｂとの間で通信を行うためのインタフェースである。駆動部３０１０、３０１０、…は、それぞれ、ＣＰＵ３００１の命令に従い、例えば制御対象３が備える関節などの可動部を動作させる各アクチュエータを駆動する。ＣＰＵ３００１は、ＲＯＭ３００２に予め記憶されるプログラムに従い、ＲＡＭ３００３をワークメモリとして用いて、この制御対象３全体の動作を制御する。例えば、ＣＰＵ３００１は、通信Ｉ／Ｆ３０００を介して制御装置１ｂから供給された制御信号に従い、各駆動部３０１０、３０１０、…に対してアクチュエータの駆動命令を与える。各駆動部３０１０、３０１０、…が駆動命令に従いアクチュエータを動作させることで、制御対象３は、制御装置１ｂから送信された制御命令に従い動作する。
【００２４】
また、各駆動部３０１０、３０１０、…は、対応するアクチュエータの動作状態を示す情報を取得することができる。取得された情報は、例えばＣＰＵ３００１により通信Ｉ／Ｆ３０００を介して制御装置１ｂに送信される。
【００２５】
図４は、実施形態に適用可能な制御装置１ｂの一例のハードウェア構成を示すブロック図である。制御装置１ｂは、それぞれバス１０１０に接続される、ＣＰＵ１０００と、ＲＯＭ１００１と、ＲＡＭ１００２と、表示制御部１００３と、ストレージ１００４と、データＩ／Ｆ１００５と、通信Ｉ／Ｆ１００６と、を含む。このように、制御装置１ｂは、一般的なコンピュータと同等の構成にて実現できる。
【００２６】
ストレージ１００４は、ハードディスクドライブやフラッシュメモリといった、不揮発性の記憶媒体である。ＣＰＵ１０００は、ストレージ１００４やＲＯＭ１００１に予め記憶されるプログラムに従い、ＲＡＭ１００２をワークメモリとして用いて、この制御装置１ｂの全体の動作を制御する。
【００２７】
表示制御部１００３は、ＣＰＵ１０００がプログラムに従い生成した表示制御信号を、ディスプレイ１０２０が表示可能な表示信号に変換して出力する。ディスプレイ１０２０は、例えばＬＣＤ(Liquid  Crystal  Display)を表示デバイスとして用い、表示信号に従った画面を表示する。
【００２８】
データＩ／Ｆ１００５は、外部機器との間でデータの入出力を行うためのインタフェースである。データＩ／Ｆ１００５としては、例えばＵＳＢ(Universal  Serial  Bus)を適用することができる。また、データＩ／Ｆ１００５は、外部機器として、ユーザ入力を受け付ける入力デバイス１０３０を接続することができる。入力デバイス１０３０は、例えばマウスやタブレットなどのポインティングデバイスや、キーボードである。これに限らず、入力デバイス１０３０としてジョイスティックやゲームパッドを適用することもできる。
【００２９】
なお、上述では、制御対象３がアームロボットであるとして説明したが、これはこの例に限定されない。例えば、制御対象３は、外部から飛行制御が可能な無人飛行機（ドローン）であってもよい。この場合、各駆動部３０１０、３０１０、…は、例えば、プロペラを回転させるモータを駆動する。また例えば、制御対象３は、二脚、多脚、無限軌道、車輪などの移動手段を備え、移動可能に構成された移動ロボットであってもよい。この場合、各駆動部３０１０、３０１０、…は、関節を動作させるアクチュエータを駆動すると共に、移動手段の駆動も行う。
【００３０】
さらに、制御対象３は、コンピュータゲームなど仮想空間内での仮想的な装置であってもよい。この場合、制御対象３は、カーレースゲームにおける車両、ロボット対戦ゲームにおけるロボット、格闘ゲームやスポーツゲームなどにおける選手、などに相当する。この場合における制御対象３は、制御装置１ｂにおいてＣＰＵ１０００がプログラムを実行することで形成される仮想空間内での装置となる。この場合、センサ５は、仮想空間内で制御対象３の動作を取得するための、ＣＰＵ１０００上で動作するプログラムにより構成することができる。
【００３１】
［第１の実施形態］
次に、第１の実施形態について説明する。第１の実施形態では、制御装置１ｂが含む動作修正部１０は、ログ記録部２ｂに記録されるログ情報を用いて、動作制御部１０により制御される制御対象３の動作の修正を行う。
【００３２】
図５は、第１の実施形態に係る、図２の動作修正部１０に対応する動作修正部１０ａの機能を説明するための一例の機能ブロック図である。図５において、動作修正部１０ａは、コスト予測部１００と、判定部１０１と、検索部１０２と、修正部１０３と、状態予測部１０４と、を含む。
【００３３】
これらコスト予測部１００、判定部１０１、検索部１０２、修正部１０３および状態予測部１０４は、ＣＰＵ１０００上でプログラムが実行されることにより構成される。これに限らず、これらコスト予測部１００、判定部１０１、検索部１０２、修正部１０３および状態予測部１０４の一部または全部を、互いに協働して動作するハードウェア回路により構成してもよい。
【００３４】
制御装置１ａにおける第１の実施形態に係る各機能を実現するためのプログラムは、インストール可能な形式または実行可能な形式のファイルでＣＤ(Compact  Disk)、フレキシブルディスク（ＦＤ）、ＤＶＤ(Digital  Versatile  Disk)などのコンピュータで読み取り可能な記録媒体に記録して提供される。これに限らず、当該プログラムを、インターネットなどのネットワークに接続されたコンピュータ上に格納し、当該ネットワークを介してダウンロードさせることにより提供してもよい。また、当該プログラムをインターネットなどのネットワークを経由して提供または配布するように構成してもよい。
【００３５】
当該プログラムは、コスト予測部１００、判定部１０１、検索部１０２、修正部１０３および状態予測部１０４を含むモジュール構成となっている。このモジュールに、動作制御部１１をさらに含めてもよい。実際のハードウェアとしては、ＣＰＵ１０００がＲＯＭ１００１やストレージ１００４などの記憶媒体から当該プログラムを読み出して実行することにより、上述した各部がＲＡＭ１００２などの主記憶装置上にロードされ、コスト予測部１００、判定部１０１、検索部１０２、修正部１０３および状態予測部１０４が主記憶装置上に生成されるようになっている。
【００３６】
図５において、状態検知部１１０は、センサ５の出力に基づき制御対象３の状態を検知、認識する。ここで状態検知部１１０に検知される制御対象３の状態は、センサ５により検知し得る、制御対象３の内部状態および外観上の状態、ならびに、制御対象３に関する環境４の状態を含むことができる。以下、特に記載の無い限り、センサ５の出力に基づき検知される、制御対象３に関する内部状態および外観上の状態、ならびに、制御対象３に関する環境４の状態を統合して、制御対象３の状況として説明を行う。
【００３７】
コスト予測部１００は、状態検知部１１０、または、後述する状態予測部１０４から取得した制御対象３の状況に基づき、制御対象３が動作する目的の達成に係るコストを予測する。例えば、コスト予測部１００は、制御対象３がログ記録部２ｂに記録されるログ情報に従い動作するに当たり、他のオブジェクト（他の装置や人）に対して干渉（衝突、接触）せずに動作を完遂することを目的とする場合、他のオブジェクトに対する干渉の可能性が高いほど高いコストを算出するコスト関数を用いる。
【００３８】
判定部１０１は、コスト予測部１００により算出されたコストが所定以上であるか否かを判定する。検索部１０２は、判定部１０１により当該コストが所定以上であると判定された場合に、状態検知部１１０に検知された制御対象３の状況、あるいは、状態予測部１０４に予測された制御対象３の状況に基づき、ログ記録部２ｂに記録されるログ情報が示す状況から、検知または予測された状況に類似する状況（類似状況）を検索する。修正部１０３は、検索部１０２に検索された類似状況に基づき、ログ記録部２ｂに記録されるログ情報に基づく動作を修正し、修正した動作を示す制御情報を動作制御部１１に渡す。
【００３９】
なお、判定部１０１により当該コストが所定未満であると判定された場合、検索部１０２による検索処理と、修正部１０３による修正処理とが実行されないように制御される。この場合、ログ記録部２ｂに記録されたログ情報が修正部１０３による処理をスキップして動作制御部１１に渡されることになる。
【００４０】
状態予測部１０４は、修正部１０３によりログ情報に基づく動作が修正された場合に、修正された動作に基づく制御対象３の状況を予測する。
【００４１】
ここで、ログ記録部２ｂに記録されるログ情報について、概略的に説明する。ログ記録部２ｂは、例えばセンサ５により検知された制御対象３の状況に基づきログ情報を生成し、生成したログ情報を記録し蓄積する。ログ情報の生成および記録は、例えば制御装置１ｂが制御対象３を制御する際の時間単位であるステップ毎に継続的に実行される。すなわち、ログ情報は、制御対象３の状況を時系列で記録する時系列情報である。
【００４２】
一例として、制御対象３が実空間内におけるロボットなどの装置である場合、１ステップは、２０ｆｐｓ(frames  per  second)の１フレーム時間である。他の例として、制御対象３が仮想空間内における車両などである場合、１ステップは、６０ｆｐｓの１フレーム時間である。１ステップの時間長は、この例に限定されない。
【００４３】
ログ記録部２ｂは、例えば、センサ５で検知された制御対象３の内部状態である各関節の角度情報や動作情報、制御対象３の外部状態である画像データ、距離情報、温度情報などを、ログ情報としてステップ毎に記録する。画像データは、画像データそのもの、あるいは画像データのパス情報を記録してもよいし、画像データから抽出した特徴情報を記録してもよい。
【００４４】
また、例えば、ログ記録部２ｂは、センサ５としてのカメラで撮影された画像データを解析して得られた、当該画像データに含まれる各オブジェクトの位置を示す各位置情報をログ情報として記録することができる。さらに、ログ記録部２ｂは、カメラにより撮影された画像データに対して、画像データの各画素をクラスラベル、すなわち、具体的なオブジェクトの上位概念に関連付ける、セマンティックセグメンテーションを行った結果をログ情報として記録することができる。このログ情報は、例えば、画像に含まれる各オブジェクトに対して、セマンティックセグメンテーションによるラベルを付した情報となる。
【００４５】
次に、第１の実施形態に係る処理について、より詳細に説明する。図６は、第１の実施形態に係る、制御対象３の制御処理を示す一例のフローチャートである。この図６のフローチャートによる処理の実行に先立って、制御装置１ｂは、動作制御部１１により、ログ記録部２ｂに記録されるログ情報に基づき制御情報を生成し、生成した制御情報により制御対象３の動作を制御しているものとする。
【００４６】
ステップＳ１０で、制御装置１ｂにおいて、動作修正部１０ａは、動作制御部１１により生成された制御情報に従った制御対象３の動作が、ログ情報に基づく動作に対して修正された動作であるか否かを判定する。制御装置１ｂは、修正された動作ではないと判定した場合（ステップＳ１０、「Ｎｏ」）、処理をステップＳ１１に移行させる。
【００４７】
ステップＳ１１で、動作制御部１１は、ログ記録部２から次のステップのログ情報を取得し、取得したログ情報に基づき制御情報を生成する。動作制御部１１は、生成した制御情報により制御対象３の動作を制御する。次のステップＳ１２で、動作修正部１０ａは、状態検知部１１０の出力に応じて、制御対象３の現在の状況（状態）を認識する。制御対象３の状況が認識されると、処理がステップＳ１４に移行される。
【００４８】
一方、動作修正部１０ａは、ステップＳ１０で、制御対象３の動作が修正された動作であると判定した場合（ステップＳ１０、「Ｙｅｓ」）、処理をステップＳ１３に移行させる。ステップＳ１３で、制御装置１ｂは、状態予測部１０４により、修正された動作に基づき制御対象３の現在の状態を予測する。制御対象３の状況が予測されると、処理がステップＳ１４に移行される。
【００４９】
ステップＳ１４で、動作修正部１０ａは、コスト予測部１００により、制御対象３の動作が他のオブジェクトに対して所定ステップ後に干渉する可能性を予測する。コスト予測部１００は、例えば、制御対象３の動作の軌跡と、他のオブジェクトの動作の軌跡とに基づき、既存の手法を用いて所定ステップ後の干渉の可能性を予測する。
【００５０】
例えば、上述したステップＳ１２からこのステップＳ１４に処理が移行した場合は、制御対象３の動作の軌跡は、ログ記録部２ｂに記録されるログ情報に基づき求めることができる。また、ステップＳ１３からステップＳ１４に処理が移行した場合は、制御対象３の動作の軌跡は、予測により求められる。他のオブジェクトの動作の軌跡は、例えばログ記録部２ｂに記録されるログ情報を、現在から所定ステップ遡って解析することで、予測できる。
【００５１】
コスト予測部１００は、この予測された干渉の可能性を、制御対象３の動作に対して予測されるコストとして算出する。次のステップＳ１５で、動作修正部１０ａは、判定部１０１により、算出されたコストに基づき、制御対象３の動作が他のオブジェクトに対して、現在から所定ステップ以内に干渉する可能性があるか否かを判定する。例えば、判定部１０１は、ステップＳ１４で算出されたコストに対して閾値判定を行い、コストが閾値以上であれば、干渉の可能性があると判定する。
【００５２】
ステップＳ１５で、判定部１０１は、干渉の可能性が無いと判定した場合（ステップＳ１５、「Ｎｏ」）、処理をステップＳ１７に移行させる。ステップＳ１７で、制御装置１ｂは、動作制御部１１により、ログ記録部２に記録されるログ情報に基づき制御情報を生成し、制御対象３の動作を制御する。その後、処理をステップＳ１０に戻す。
【００５３】
一方、ステップＳ１５で、判定部１０１は、現在から所定ステップ以内のある時間において干渉の可能性があると判定した場合（ステップＳ１５、「Ｙｅｓ」）、処理をステップＳ１６に移行させる。ステップＳ１６で、動作修正部１０ａは、ログ記録部２に記録される、例えば現在の時間に対応するログ情報に基づく動作を修正する。例えば、動作修正部１０ａは、例えば、ステップＳ１４で可能性が予測された干渉を回避するように、動作を修正する。動作が修正されると、処理がステップＳ１７に移行される。この場合に、動作制御部１１は、ステップＳ１７で、修正された動作に応じた制御情報を生成し、制御対象３の動作を制御する。その後、処理をステップＳ１０に戻す。
【００５４】
図７は、第１の実施形態に係る動作修正処理を示す一例のフローチャートである。図７のフローチャートによる処理は、上述した図６にフローチャートにおけるステップＳ１６の処理に相当する。
【００５５】
ステップＳ１００で、動作修正部１０ａは、検索部１０２により、図６のステップＳ１５で判定部１０１による干渉の可能性があると判定された時間のＮステップ前（Ｎは正の整数）の状態Ｓt-Nを、ログ記録部２に記録されるログ情報に基づき取得する。
【００５６】
次のステップＳ１０１で、動作修正部１０ａは、検索部１０２により、ステップＳ１００で取得された状態Ｓt-Nと類似する状態Ｓ’を、ログ記録部２に記録されるログ情報から検索する。ここで、検索部１０２は、状態Ｓ’に対応するログ情報を、状態Ｓt-Nに対応するログ情報に対して過去のログ情報から検索する。検索部１０２は、検索結果として、状態Ｓ’に対応する複数のログ情報を出力できる。
【００５７】
ここで、類似状態とは、制御対象３の重心軌跡（位置）に着目した場合、２つのログ情報間で、制御対象３と、他のオブジェクトとの位置関係が、幾何学的類似配置関係にある状態をいう。幾何学的類似配置関係の例としては、ユークリッド距離の差が所定以下である場合が考えられる。また、カメラにより撮影された画像データを用いた類似性の判断としては、セマンティックセグメンテーションを行った結果、制御対象３のセグメントと、他のオブジェクトのセグメントとの位置関係が２つのログ情報間で類似しているかどうかの判断を用いる。
【００５８】
類似状況は、この例に限定されない。例えば、類似状況は、制御対象３が動作する環境４が類似する状況であってもよい。すなわち、制御対象３が複数の異なる環境４下で動作する場合、それぞれの環境４下で取得されたログ情報から、現在制御対象３が動作する環境４と類似した環境を検索する。類似状況に係る環境としては、制御対象３の周囲の明るさ、温度、風、などが考えられる。また、制御対象３が路面を移動する移動体の場合には、路面の状態（凹凸、ウェットまたはドライ、傾斜）などが考えられる。これらの環境４は、実空間および仮想空間の何れにも適用可能である。
【００５９】
図８および図９を用いて、ステップＳ１０１による検索処理について、より具体的に説明する。図８および図９は、第１の実施形態に適用可能な、ログ記録部２ｂに記録されるログ情報の例を示す図である。図８および図９の例では、説明のため、ログ記録部２ｂに記録されるログ情報２０を、画像として示している。例えば、ログ記録部２ｂは、ログ情報に含まれる画像データに対して行われたセマンティックセグメンテーションに基づき画像データの各画素にクラスラベルが付加された情報を、ログ情報２０に含めて記録する。これにより、ログ情報２０に基づき、制御対象３によるセグメントの位置と、他のオブジェクトによるセグメントの位置との相対位置関係を取得することが可能となる。図８および図９の例では、各セグメントを、当該セグメントが対応するオブジェクトの画像として示している。
【００６０】
図８において、ログ情報２０は、時間ｔの時系列に沿った複数ステップによる各時間ｔ1、ｔ2、ｔ3、…のログ情報２０1、２０2、２０3、…を含む。図８の例では、時間ｔ1におけるログ情報２０1は、制御対象３であるアームロボット６０の画像を含んでいる。図８の例では、アームロボット６０は、アームロボットの基部６１の画像と、基部に対して関節部を軸として回動可能な腕部６２の画像とを含んでいる。
【００６１】
次の時間ｔ2におけるログ情報２０2は、オブジェクトとして、アームロボット６０を含むと共に、人６３の画像の一部を含む。アームロボット６０において、基部６１に対する腕部６２の角度は、ログ情報２０1の場合と変わっていないことが分かる。
【００６２】
次の時間ｔ3におけるログ情報２０3は、ログ情報２０2と同様にオブジェクトとしてアームロボット６０および人６３を含む。ここで、ログ情報２０3は、ログ情報２０2に対して、人６３がより中央に移動していることが分かる。また、ログ情報２０3において、アームロボット６０の基部６１に対する腕部６２の角度が、先の時間ｔ1およびｔ2におけるログ情報２０1および２０2に対して変化していることが分かる。
【００６３】
図９は、ステップＳ１００で取得された状態Ｓt-Nにおけるログ情報２０nの例を示す。図９に示すログ情報２０nは、図８に示すログ情報２０に含まれる、基部６１および腕部６２を備えるアームロボット６０の画像と、人６３の画像とにそれぞれ対応する、基部６１’および腕部６２’を備えるアームロボット６０’の画像と、人６３’の画像と、を含んでいる。
【００６４】
図８の各ログ情報２０1、２０2、２０3、…と、図９のログ情報２０nと、を比較した場合、アームロボット６０および６０’、ならびに、人６３および６３’の位置関係に基づき、ログ情報２０1、２０2、２０3、…のうち、ログ情報２０3が状態Ｓt-Nにおけるログ情報２０nに対する類似度が高いと判断できる。したがって、ステップＳ１０１において、検索部１０２は、ログ情報２０3の状態が、状態Ｓt-Nに類似する状態Ｓ’であると判断できる。
【００６５】
ここで、図８の各ログ情報２０1、２０2、２０3、…に対応する各時間ｔ1、ｔ2、ｔ3、…は、ログ情報２０nに対応する時間ｔnに対して、過去の時間であるものとする。時間ｔnは、現在の時間からＮステップ遡った時間であって、制御対象３の現在の動作に対して時間的に連続する過去の時間である。
【００６６】
一方、図８の各時間ｔ1、ｔ2、ｔ3、…は、制御対象３の現在の動作に対して時間的に連続している必要は無い。例えば、時間ｔnは、制御対象３であるアームロボット６０が各時間ｔ1、ｔ2、ｔ3、…の時系列で稼働した後、一旦動作を停止し、再稼働した際の時間であってもよい。また、図８の各ログ情報２０1、２０2、２０3、…と、図９のログ情報２０nとが異なる環境で取得されたものであってもよい。したがって、図８の各時間ｔ1、ｔ2、ｔ3、…が含まれる時系列と、図９の時間ｔnが含まれる時系列と、が異なる時系列であると見做すことができる。
【００６７】
図７の説明に戻り、ステップＳ１０１で状態Ｓ’が検索されると、処理がステップＳ１０２に移行される。状態Ｓ’が複数検索された場合、ステップＳ１０２で、検索部１０２は、複数の状態Ｓ’に対応する各ログ情報から、適用するログ情報をコストの観点から絞り込む。例えば、検索部１０２は、結果の行動の良否を決定するコスト関数６を定義し、検索された複数のログ情報から、このコスト関数６に従い計算されたコストが最小になるログ情報を選択することができる。
【００６８】
例えば、制御対象３がロボットである場合、制御対象３が他のオブジェクトと干渉（衝突）する可能性がより小さい場合によりコストが低くなるコスト関数６が考えられる。これに限らず、各アクチュエータの加速度の絶対値や２乗の和が小さい（つまり、急峻な動きをしない）場合にコストが低くなるコスト関数が考えられる。また、制御対象３の、静的障害物を含む他のオブジェクトからの距離が所定以内である場合に、近距離になるほどコストが高い値となるコスト関数６を設定することも考えられる。さらに、エネルギ消費がより少ない場合にコストの値が低くなるコスト関数６を設定することも考えられる。さらにまた、時間をコストの要件とすることもできる。例えば、特定の動作（回避動作など）を実行するためにより多くの時間を要する場合に、コストを高い値とすることが考えられる。
【００６９】
また、制御対象３が仮想空間内での仮想的な装置である場合には、制御対象３が仮想空間内での仮想的な装置である場合には、衝突（干渉）する可能性と、他の要因とを考慮したコスト関数６を設定することができる。例えば、制御対象３がカーレースによる車両である場合、当該車両、および、当該車両に干渉する可能性のある他の車両の少なくとも一方の速度を、衝突可能性に対して優先して考慮したコスト関数６を設定することが考えられる。一例として、衝突可能性が６０％以上であれば、車両が回避行動を取る動作に関するコストが低い値となり、衝突可能性が６０％未満であれば、車両の速度が高速になる動作に関するコストが低い値となるようなコスト関数６が考えられる。別の例として、条件が異なる複数のコスト関数６を用意し、複数のコスト関数６から適用するコスト関数をランダム、あるいは、特定の規則に従い選択してもよい。
【００７０】
なお、ステップＳ１０１では、過去のログ情報から状態Ｓ’に対応するログ情報を検索している。したがって、状態Ｓ’を起点とした所定時間（例えば１０秒）における一連の動作は、ログ情報から取得することができる。そのため、コスト関数６によるコスト計算が可能となる。
【００７１】
図７の説明に戻り、ステップＳ１０２で適用するログ情報が絞り込まれると、処理がステップＳ１０３に移行される。ステップＳ１０３で、動作修正部１０ａにおいて、修正部１０３は、現在のログ情報による動作と、ステップＳ１０２で絞り込まれた、適用するログ情報による動作とを接続し、現在のログ情報による動作を、適用するログ情報による動作により修正する。その際、修正部１０３は、現在のログ情報による動作と、適用するログ情報による動作と、をスムーズに接続するためのスムージング処理を行う。
【００７２】
ステップＳ１０３のスムージング処理について、図１０および図１１を用いて説明する。ここでは、説明のため、仮想空間内でのカーレースのゲームなどにおける車両を制御対象３とし、ログ情報が当該車両の走行軌跡であるものとする。図１０は、スムージング処理の必要性を説明するための図である。
【００７３】
図１０において、走行軌跡２００は、図６のステップＳ１６で動作修正を行う前の走行軌跡を示している。現在の位置２０２において図６のステップＳ１５の判定がなされ、走行軌跡２００に従い走行すると、位置２０１で他のオブジェクトとの干渉が発生することが予測されたものとする。走行軌跡２１０は、この干渉発生の予測に応じて図７のステップＳ１０２で絞り込まれた走行軌跡とする。図１０の例では、走行軌跡２００および走行軌跡２１０は、特定の接続点で接続されていない。したがって、車両の走行軌跡を走行軌跡２００から走行軌跡２１０に切り替えると、車両のジャンプが発生し、好ましくない。
【００７４】
これを、例えば上述のアームロボット６０に適用した場合、基部６１と腕部６２との関節部において角度が急激に変化することになり、当該関節部を駆動するためのアクチュエータに過大な負荷がかかることになる。
【００７５】
そのため、第１の実施形態では、図７のステップＳ１０３において、現在の動作と、修正適用後の動作とに対してスムージング処理を施し、現在の動作から修正適用後の動作に連続的に移行するようにしている。
【００７６】
図１１は、第１の実施形態に適用可能なスムージング処理を説明するための図である。図１１において、位置２０２で走行軌跡２００から走行軌跡２１０に向けて移行を開始し、位置２０２から所定時間（例えば１秒）走行して走行軌跡２１０への移行が完了する場合について考える。ここでは、この場合において、移行開始点の位置２０２から移行完了点の位置２０３にかけて、走行軌跡２００と走行軌跡２１０との間で線形補間を行うことで、スムージング処理を行う。
【００７７】
より具体的には、修正部１０３は、走行軌跡２００の延長（図１１において位置２０２と位置２０１とを結ぶ点線により示す）と、走行軌跡２１０とを最短距離で結ぶ線を、ステップ毎に、位置２０２から位置２０３に向けて車両の走行速度に応じて移動させる。修正部１０３は、この線の内分点を取り、当該線が内分点により分割される比率を、位置２０２から位置２０３に向けて線形に変化させる。
【００７８】
例えば、値ａを走行軌跡２００の延長から内分点までの距離、値ｂを内分点から走行軌跡２１０までの距離とし、ａ＋ｂ＝１とする。この場合、位置２０２では、ａ＝０およびｂ＝１、位置２０３では、ａ＝１およびｂ＝０となる。修正部１０３は、位置２０２および２０３の中間点では、位置２０２に近い側からａ1＋ｂ1＝１、ａ2＋ｂ2＝１、とした場合に、ａ1＜ａ2、ｂ1＞ｂ2、としてステップ毎に値ａおよびｂを線形に増加、減少させる。修正部１０３は、このようにステップ毎に位置を変化させた内分点を通じて、位置２０２と位置２０３とを結ぶ。これにより、位置２０２および２０３で走行軌跡２００および２１０に連続的に接続される走行軌跡２２０が生成され、線形補間によるスムージングが行われる。
【００７９】
修正部１０３は、このようにして、ログ情報に基づく動作をステップ毎に修正し、修正した動作（走行軌跡２２０）を示す制御情報を動作制御部１１に渡す。動作制御部１１は、渡された制御情報に従い制御対象３の動作を制御する。また、例えば、修正部１０３は、位置２０３において、走行軌跡２１０に対応するログ情報を動作制御部１１に渡す。動作制御部１１は、位置２０３以降は、当該ログ情報に従い制御対象３の動作を制御する。
【００８０】
このようにスムージングを行うことで、現在の動作から修正適用後の動作への移行をスムーズに実施できる。これにより、仮想空間内における不自然な動作切り替えや、ロボットなどにおけるアクチュエータへの過負荷を抑制することが可能である。
【００８１】
なお、現在の動作から修正適用後の動作への移行の際のスムージング処理は、移行を連続的に行うことが可能であれば、線形補間に限定されない。例えば２次曲線など曲線を用いて補完処理を行ってもよい。
【００８２】
ここで、第１の実施形態に係る先読み処理について説明する。例えば、上述した図１１の例において、動作制御部１１が、走行軌跡２１０への切り替えを行った後、走行軌跡２１０に対応するログ情報に従い制御対象３の動作を制御した場合に、さらに先の位置で、当該制御対象３に対する干渉が発生する可能性がある。動作修正部１０ａは、このような場合の干渉を考慮して、状態の先読みを行う。
【００８３】
図１２は、第１の実施形態に適用可能な先読み処理を説明するための図である。この図１２と、上述した図６のフローチャートなどを用いて、先読み処理について説明する。なお、ここでは、上述した図１０および図１１と同様に、説明のため、カーレースのゲームなどにおける車両を制御対象３とし、ログ情報が当該車両の走行軌跡であるものとする。また、図１２において、セクション３００1、３００2、３００3、３００4、３００5および３００6は、時間の経過に伴う状態の変化を示している。
【００８４】
セクション３００1において、制御対象３は、第１のログ情報に基づく走行軌跡２３０ａに従い動作が制御される。コスト予測部１００および判定部１０１により、走行軌跡２３０ａ上の位置２３３において所定時間先まで先読みを行い、位置２３３に対して将来の位置２３２にて、第２のログ情報に基づく走行軌跡２３１に従い動作が制御される他のオブジェクト（他の制御対象３）との間で干渉が発生する可能性があると予測されたものとする（図６、ステップＳ１４、ステップＳ１５）。
【００８５】
動作修正部１０ａにおいて検索部１０２は、位置２３３における状況と類似する状況を、ログ記録部２ｂに記録されるログ情報から検索する（図７、ステップＳ１０１）。その結果、セクション３００2に拡大して示されるように、第３のログ情報に基づく走行軌跡２３０ｂに移行することで、位置２３２における干渉が回避される。そこで、位置２３３を開始点とする、走行軌跡２３０ｂ上の範囲２３４を、位置２３３に接続する。このときの接続は、図１１を用いて説明したスムージング処理により行う。
【００８６】
こうして図６のステップＳ１６による動作修正が行われると、ステップＳ１７で動作修正結果に従い制御対象３の動作制御がなされ、処理がステップＳ１０に戻される。この場合は、修正された動作であるので、処理がステップＳ１３に移行される。
【００８７】
ステップＳ１３では、状態予測部１０４により走行軌跡２３０ｂに関する予測がなされ、予測結果に基づき、コスト予測部１００および判定部１０１により、セクション３００3に示されるように、走行軌跡２３０ｂの位置２３５において所定時間先まで先読みを行い、位置２３５に対して将来の位置２３６において再び干渉が発生する可能性があると予測される（図６、ステップＳ１４、ステップＳ１５）。
【００８８】
動作修正部１０ａにおいて検索部１０２は、位置２３６から所定時間分だけ戻った位置２３５における状況と類似する状況を、ログ記録部２ｂに記録されるログ情報から検索する（図７、ステップＳ１０１）。その結果、セクション３００4に示されるように、第４のログ情報に基づく走行軌跡２３０ｃに移行することで、位置２３６における干渉が回避される。そこで、位置２３５を開始点とする、走行軌跡２３０ｃ上の範囲２３７を、位置２３５に接続する。このときの接続は、図１１を用いて説明したスムージング処理により行う。
【００８９】
セクション３００5は、このようにして、走行軌跡２３０ａに対して、走行軌跡２３０ｂ上の範囲２３４と、走行軌跡３０ｃ上の範囲２３７とが接続された様子を示している。
【００９０】
なお、ある位置において将来の位置まで先読みして干渉が発生する可能性があるか否かを判定する場合に、先読みする範囲に制限（例えば５秒先まで先読み）を設ける。現在のログ情報に基づく走行軌跡において、この制限範囲内で干渉が発生する可能性が低い場合、当該走行軌跡を用いる。また、上述した所定時間先までの先読み処理は、例えばステップ毎に実行する。ステップ毎に先読み処理を実行することで、現在の状況に即応できるようになる。
【００９１】
このように、コストに従い予測された干渉に応じた動作修正を再帰的に実行することで、例えば干渉を回避するための動作を、ある程度長い将来ステップまで予測することが可能になる。これにより、制御対象３の動作を、より安定して制御可能となる。
【００９２】
［第２の実施形態］
次に、本開示の第２の実施形態について説明する。第２の実施形態は、過去のログ情報から学習した最適アクション推定器を用いて動作修正を行う例である。なお、第１の実施形態において図６を用いて説明した、制御対象３の制御処理は、ステップＳ１６以外の処理は第２の実施形態においても同様に適用できるので、ここでの説明を省略する。
【００９３】
図１３は、第２の実施形態に係る、図２の動作修正部１０に対応する動作修正部１０ｂの機能を説明するための一例の機能ブロック図である。図１３に示される動作修正部１０ｂは、第１の実施形態に係る図５に示した動作修正部１０ａの検索部１０２の代わりに、最適動作推定部１２０を備える。
【００９４】
最適動作推定部１２０は、ログ記録部２ｂに記録される過去のログ情報に基づき、入力された状態Ｓtから、最適動作Ａtを推定するように予め学習された最適アクション推定器を含む。最適アクション推定器は、過去のログ情報から学習された、Ａt＝Ｇ(Ｓt)を実現する関数Ｇのパラメータである。
【００９５】
図１４は、第２の実施形態に係る動作修正処理を示す一例のフローチャートである。図１４のフローチャートによる処理は、上述した図６のフローチャートにおけるステップＳ１６の処理に相当する。
【００９６】
ステップＳ２００で、動作修正部１０ｂは、検索部１０２により、図６のステップＳ１５で判定部１０１による干渉の可能性があると判定された時間のＮステップ前（Ｎは正の整数）の状態Ｓt-Nを、ログ記録部２に記録されるログ情報に基づき取得する。
【００９７】
次のステップＳ２０１で、動作修正部１０ｂは、最適動作推定部１２０において、最適アクション推定器により、ステップＳ２００で取得された状態Ｓt-Nに基づき、最適動作Ａt+1を求める。その後、最適動作推定部１２０は、ステップ毎に、最適アクション推定器により出力される最適動作Ａt+1がもたらす新状態Ｓt+1に基づく動作を生成する。これにより、ログ情報に対応する時系列情報が生成される。
【００９８】
最適動作推定部１２０は、生成した動作と、図６のステップＳ１６により動作修正行う前に用いていたログ情報に基づく動作とを比較する。最適動作推定部１２０は、比較の結果、生成した新状態Ｓt+1に基づく動作と、ログ情報に基づく動作とがスムーズに接続可能となるまで両者が近付いたか否かを判定する。最適動作推定部１２０は、両者が近付いたと判定された時点で、処理をステップＳ２０２に移行させる。
【００９９】
ステップＳ２０２で、修正部１０３は、現在のログ情報による動作と、ステップＳ２０１で生成された動作とをスムーズに接続するためのスムージング処理を行う。スムージング処理は、第１の実施形態において図１０および図１１を用いて説明した処理と同様なので、ここでの説明を省略する。
【０１００】
ここで、上述した最適アクション推定器の構成方法について説明する。第２の実施形態に係る最適アクション推定器、すなわち、Ａt＝Ｇ(Ｓt)を実現する関数Ｇのパラメータを生成する方法として、非特許文献１に開示される、ビヘイビアクローニング(Behavior  Cloning)と呼ばれる方法を適用することができる。ビヘイビアクローニングは、状態Ｓtに対する最適動作Ａtのペアを、学習サンプルとして大量に用意し、この学習サンプルをニューラルネットワークで学習させる方法である。
【０１０１】
大量の学習サンプルが事前に得られない場合には、特許文献２に開示される、強化学習を利用できる。強化学習は、例えば、ロボットが環境中で自律的に試行錯誤的行動を通じ、良い行動の結果環境から与えられる報酬を手掛かりに、Ａt＝Ｇ(Ｓt)における関数Ｇ（ポリシー関数）を学習する。
【０１０２】
第２の実施形態によれば、過去のログ情報から学習した最適アクション推定器を用いて動作の修正を行うため、ログ記憶部２ｂに大量のログ情報が記憶されていなくても、適切な制御を実現できる。
【０１０３】
［第３の実施形態］
次に、第３の実施形態について説明する。第３の実施形態は、ユーザ操作に基づき動作の修正を行う例である。なお、第１の実施形態において図６を用いて説明した、制御対象３の制御処理は、ステップＳ１６以外の処理は第３の実施形態においても同様に適用できるので、ここでの説明を省略する。
【０１０４】
図１５は、第３の実施形態に係る、図２の動作修正部１０に対応する動作修正部１０ｃの機能を説明するための一例の機能ブロック図である。図１５に示される動作修正部１０ｃは、第２の実施形態に係る図１３に示した動作修正部１０ｂに対して、通知部１３０と、スイッチ部１３１と、操作受付部１３２と、が追加されている。
【０１０５】
通知部１３０は、判定部１０１によりコスト予測部１００により算出されたコストが所定以上であると判定された場合に、その旨を操作受付部１３２に通知すると共に、例えばディスプレイ１０２０に対する表示などによりユーザへの通知を行う。スイッチ部１３１は、通知部１３０の制御に従い、最適動作推定部１２０の出力および操作受付部１３２の出力の何れを修正部１０３に供給するかを切り替える。スイッチ部１３１は、デフォルト状態で最適動作推定部１２０の出力を修正部１０３に供給するように制御されている。
【０１０６】
操作受付部１３２は、通知部１３０により算出されたコストが所定以上であると判定された旨が通知されると、ユーザ操作により動作の修正を行うためのユーザインタフェースによる画面をディスプレイ１０２０に表示させる。それと共に、操作受付部１３２は、入力デバイス１０３０に対する動作制御のためのユーザ操作入力を受け付ける。なお、入力デバイス１０３０は、制御対象３の種類に応じたものとすると、好ましい。例えば、制御対象３がアームロボットであれば、入力デバイス１０３０としてジョイスティックを用いる、制御対象３がレースゲームの車両であれば入力デバイス１０３０としてゲームパッドを用いる、などが考えられる。
【０１０７】
図１６は、第３の実施形態に係る動作修正処理を示す一例のフローチャートである。図１６のフローチャートによる処理は、上述した図６のフローチャートにおけるステップＳ１６の処理に相当する。
【０１０８】
図６のステップＳ１５において、動作修正部１０ｃは、判定部１０１により、算出されたコストに基づき、制御対象３の動作が他のオブジェクトに対して、現在から所定ステップ以内に干渉する可能性があると判定されると、処理を図１６のステップＳ３００に移行する。ステップＳ３００で、動作修正部１０ｃは、通知部１３０により、所定ステップ以内の干渉の可能性を、例えばディスプレイ１０２０に対する表示によりユーザに通知する。
【０１０９】
次のステップＳ３０１で、通知部１３０は、ステップＳ３００の通知に応じてユーザ操作による動作制御が発動されたか否かを判定する。通知部１３０は、発動されたと判定した場合（ステップＳ３０１、「Ｙｅｓ」）、処理をステップＳ３０２に移行させる。例えば通知部１３０は、ディスプレイ１０２０に対して上述の通知表示を行うと共に、ユーザ操作により動作制御を行うか否かの入力を促すメッセージを表示させる。通知部１３０は、このメッセージに応じてユーザ操作による動作制御を行う旨が入力された場合に、ユーザ操作による動作制御が発動されたと判定する。
【０１１０】
ステップＳ３０２で、操作受付部１３２は、制御対象３の動作をユーザ操作により修正するためのユーザ操作手段を提示する。例えば、操作受付部１３２は、ユーザ操作を行うための画面をディスプレイ１０２０に表示させると共に、入力デバイス１０３０に対するユーザ操作の受付を開始する。また、ステップＳ３０２で、通知部１３０は、スイッチ部１３１を、操作受付部１３２の出力を修正部１０３に供給するように制御する。
【０１１１】
次のステップＳ３０３で、操作受付部１３２は、動作の修正を行うためのユーザ操作が開始されたか否かを判定する。開始されていないと判定された場合（ステップＳ３０３、「Ｎｏ」）、処理がステップＳ３０３に戻される。一方、開始されたと判定された場合（ステップＳ３０３、「Ｙｅｓ」）、処理がステップＳ３０４に移行される。
【０１１２】
ステップＳ３０４で、修正部１０３は、操作受付部１３２からユーザ操作に応じて出力された制御信号に応じて、制御対象３の動作を修正する。このとき、修正部１０３は、現在のログ情報による動作と、操作受付部１３２から出力された制御信号に従った動作とをスムーズに接続するためのスムージング処理を行う。スムージング処理は、第１の実施形態において図１０および図１１を用いて説明した処理と同様なので、ここでの説明を省略する。
【０１１３】
次のステップＳ３０５で、操作受付部１３２は、動作の修正を行うためのユーザ操作が終了されたか否かを判定する。終了されていないと判定された場合（ステップＳ３０５、「Ｎｏ」）、処理がステップＳ３０５に戻される。一方、終了されたと判定された場合（ステップＳ３０５、「Ｙｅｓ」）、処理がステップＳ３０６に移行される。
【０１１４】
ステップＳ３０６で、修正部１０３は、ユーザ操作による動作修正の終了位置に対して、ステップＳ３０１でユーザ操作が発動される以前に用いたログ情報による動作をスムーズに接続するためのスムージング処理を行う。スムージング処理は、第１の実施形態において図１０および図１１を用いて説明した処理と同様なので、ここでの説明を省略する。
【０１１５】
上述したステップＳ３０１で、通知部１３０は、ステップＳ３００の通知に応じてユーザ操作による動作制御が発動されなかったと判定した場合（ステップＳ３０１、「Ｎｏ」）、処理をステップＳ２００〜ステップＳ２０２に移行させ、第２の実施形態において説明した、過去のログ情報から学習した最適アクション推定器を用いて動作修正を行う。
【０１１６】
第３の実施形態において、ユーザ操作に応じた動作修正によるデータを教示データとして、例えばログ記録部２ｂに記録することができる。この教示データを用いて、最適動作推定部１２０における最適アクション推定器を追加学習することで、最適アクション推定器の改善が可能である。また、この教示データを、ログ情報として第１の実施形態に係るログ記録部２ｂに追加することで、ユーザ操作に応じた教示情報がログ情報に基づく制御対象３の動作の修正に活用でき、例えば他のオブジェクトとの干渉を回避する性能が向上されることが期待できる。
【０１１７】
［他の実施形態］
（本開示のコンピュータゲームへの適用）
コンピュータゲームにおいて、ログ情報に基づきゲーム状況を再現可能なものが知られている。このようなコンピュータゲームにおいては、例えばゲーム内のある環境においてユーザが操作したゲーム状況をログ情報として記録する。後に、記録されたログ情報に基づきゲームをリプレイすることで、当該ログ情報が記録されたゲーム内環境下で、ゲーム状況を再現することができる。また、例えばカーレーシングゲームなどにおいて、あるドライバのレーシングスタイルを模倣したログ情報を予め作成し、当該ゲーム内のＮＰＣ（ノンプレイヤーキャラクター）を構成することもできる。
【０１１８】
このようなコンピュータゲームに本開示を適用することで、例えば、過去に記録された限られた数のログ情報に基づき多数の組み合わせの新規プレイデータを再構成することが可能となる。
【０１１９】
例えば、過去に記録された、複数のプレイヤによる複数のログ情報を抽出する。抽出した複数のログ情報のそれぞれに対応する各制御対象３に、対応するログ情報に基づく動作を実行させる。各制御対象３は、それぞれ他の制御対象３が自身に対して干渉の可能性があるとされた場合に、例えば第１の実施形態または第２の実施形態にて説明したようにして動作を修正される。これによれば、より自然な形でＮＰＣによる新規の動作を実現できる。
【０１２０】
この場合において、制御対象３の動作を制御するためのログ情報を、例えば現実のプロプレイヤーなどの情報に基づき生成することができる。これにより、恰も例えば複数のプロプレイヤーが実際に対戦しているかのようなゲーム状況を構成可能である。さらに、ユーザ操作に応じた動作を混在させることで、ユーザがプロプレイヤーと対戦しているかのような状況を作り出すことができる。
【０１２１】
また、本開示によれば、上述したようにして新規プレイデータを再構成することができるため、当該ゲームの操作や特性に熟練したユーザが、ＮＰＣの特性を知り尽くしてゲーム自体に飽きてしまうことが抑制される。
【０１２２】
（本開示のドローンの制御に対する適用）
エンターテイメントなどの分野において、相互に関連する位置の複数のドローンを群として制御することが考えられる。例えば、各ドローンの飛行軌跡を予め定めてログ情報としてそれぞれ記録し、記録された各ログ情報に基づき、各ドローンの飛行を制御することができる。この場合において、群に含まれる複数のドローンのうち例えば１台のドローンが何らかのアクシデントで他のドローンに衝突してしまうことが有り得る。
【０１２３】
本開示をドローン群の動作制御に適用することで、このようなアクシデントに対応することが可能である。単独のドローンを制御対象３として動作制御するためのログ情報を予め作成して記録しておく。この記録されたログ情報に基づき、ドローン群に含まれる各ドローンの動作制御を行う。
【０１２４】
ドローン群に含まれる複数のドローンのうち注目ドローンに対して他のドローンがアクシデントにより接近してきた場合に、注目ドローンは、第１の実施形態または第２の実施形態にて説明したようにして、当該他のドローンからの干渉を予測され、干渉を回避するように、ログ情報に基づく動作を修正される。これにより、注目ドローンがアクシデントなどにより接近してきた他のドローンから衝突されてしまう事態が回避可能である。
【０１２５】
なお、本技術は以下のような構成も取ることができる。
（１）
制御対象の動作を第１の時系列情報に基づき制御する制御部と、
前記制御対象の目的達成に伴うコストを予測する予測部と、
前記予測部により予測された前記コストに応じて、前記制御対象の前記第１の時系列情報に基づく動作を修正する修正部と、
を備える制御装置。
（２）
前記修正部は、
前記第１の時系列情報に基づく動作を、前記第１の時系列情報と異なる第２の時系列情報に基づく動作に対して連続する動作に修正する
前記（１）に記載の制御装置。
（３）
前記予測部により予測された前記コストに応じて、１以上の時系列情報から、該予測に対応する状況と類似する類似状況を検索する検索部をさらに備え、
前記第２の時系列情報は、
前記１以上の時系列情報から前記検索部により前記類似状況が検索された時系列情報である
前記（２）に記載の制御装置。
（４）
前記検索部は、
前記予測が対応する状況を含む環境がさらに類似する前記類似状況を検索する
前記（３）に記載の制御装置。
（５）
前記第２の時系列情報は、
前記第１の時系列情報を入力情報とした学習により最適と推定された動作に応じた時系列情報である
前記（２）に記載の制御装置。
（６）
前記第２の時系列情報は、
前記制御対象による自律的な試行錯誤動作により学習され最適と推定された動作に応じた時系列情報である
前記（２）に記載の制御装置。
（７）
前記修正部は、
前記制御対象の動作を制御するためのユーザ操作に基づき、前記第１の時系列情報に基づく動作を修正する
前記（２）に記載の制御装置。
（８）
前記修正部は、
前記ユーザ操作に基づき修正された前記動作に応じた第３の時系列情報を、前記第１の時系列情報に追加する
前記（７）に記載の制御装置。
（９）
前記修正部は、
前記修正された前記第１の時系列情報に基づき前記制御部に制御された前記制御対象の動作に対して前記予測部により予測された前記コストに応じて前記修正をさらに行う
前記（１）乃至（８）の何れかに記載の制御装置。
（１０）
前記予測部は、
前記制御対象が他のオブジェクトに干渉する可能性に応じて前記コストを予測する
前記（１）乃至（９）の何れかに記載の制御装置。
（１１）
前記予測部は、
前記制御対象の周囲の状況を検知する検知部の検知結果に基づき前記コストを予測する
前記（１）乃至（１０）の何れかに記載の制御装置。
（１２）
前記制御部は、
前記第１の時系列情報に対応する第１の環境とは異なる第２の環境で、該第１の時系列情報に基づき前記制御対象の動作を制御する
前記（２）乃至（１１）の何れかに記載の制御装置。
（１３）
前記制御部は、
前記第１の環境で作成された前記第１の時系列情報に基づき前記制御対象の動作を制御する
前記（１２）に記載の制御装置。
（１４）
前記第１の時系列情報は、定形パターンに従い予め作成される
前記（１２）または（１３）に記載の制御装置。
（１５）
前記制御対象は、ファクトリオートメーションのためのロボットである
前記（１２）乃至（１４）の何れかに記載の制御装置。
（１６）
前記制御部は、
前記制御対象が単独で動作する前記第１の環境で作成された前記第１の時系列情報に基づき、該制御対象を含み、複数のオブジェクトが同時に動作する前記第２の環境で、該制御対象の動作を制御する
前記（１２）に記載の制御装置。
（１７）
前記制御対象は、外部からの飛行制御が可能な無人航空機である
前記（１６）に記載の制御装置。
（１８）
前記制御部は、
仮想空間内の前記制御対象の動作を前記第１の時系列情報に基づき制御する
前記（２）に記載の制御装置。
（１９）
前記修正部は、
前記制御対象とは異なる他の制御対象の動作を制御するためのユーザ操作に基づき予測される前記コストに応じて、該制御対象の前記第１の時系列情報に基づく動作を修正する
前記（１８）に記載の制御装置。
（２０）
前記予測部は、
前記制御対象および前記他の制御対象の少なくとも一方の速度に応じて前記コストを予測する
前記（１９）に記載の制御装置。
（２１）
制御対象の動作を第１の時系列情報に基づき制御する制御ステップと、
前記制御対象の目的達成に伴うコストを予測する予測ステップと、
前記予測ステップにより予測された前記コストに応じて、前記制御対象の前記第１の時系列情報に基づく動作を修正する修正ステップと、
を有する制御方法。
【符号の説明】
【０１２６】
１ａ，１ｂ  制御装置
２ａ，２ｂ  ログ記録部
３  制御対象
４  環境
５  センサ
１０ａ，１０ｂ，１０ｃ  動作修正部
１１  動作制御部
２０，２０1，２０2，２０3，２０n  ログ情報
１００  コスト予測部
１０１  判定部
１０２  検索部
１０３  修正部
１０４  状態予測部
１１０  状態検知部
１２０  最適動作推定部
１３０  通知部
１３１  スイッチ部
１３２  操作受付部
【図１】
2020003742.tif 000003
【図２】
2020003742.tif 000004
【図３】
2020003742.tif 000005
【図４】
2020003742.tif 000006
【図５】
2020003742.tif 000007
【図６】
2020003742.tif 000008
【図７】
2020003742.tif 000009
【図８】
2020003742.tif 000010
【図９】
2020003742.tif 000011
【図１０】
2020003742.tif 000012
【図１１】
2020003742.tif 000013
【図１２】
2020003742.tif 000014
【図１３】
2020003742.tif 000015
【図１４】
2020003742.tif 000016
【図１５】
2020003742.tif 000017
【図１６】
2020003742.tif 000018
【国際調査報告】
2020003742.tif 000019
2020003742.tif 000020