(57)【要約】【課題】状態を適切に変更しつつ、行動の計画を行うことが可能な、情報処理装置、情報処理方法、および、プログラムを提案する。【解決手段】複数の種類の所定の状態間で状態を変更しながら、行動の計画に関する所定の処理を行う第１の計画部、を備え、前記状態を変更した場合には、前記第１の計画部は、状態を変更したことを示す情報を、前記第１の計画部よりも上位の第２の計画部へ通知し、前記複数の種類の所定の状態は、複数の種類の、正常実行中であることを示す第１の状態を含む、情報処理装置。【選択図】図１
2019064730.tif 000002
【特許請求の範囲】
【請求項１】
複数の種類の所定の状態間で状態を変更しながら、行動の計画に関する所定の処理を行う第１の計画部、
を備え、
前記状態を変更した場合には、前記第１の計画部は、状態を変更したことを示す情報を、前記第１の計画部よりも上位の第２の計画部へ通知し、
前記複数の種類の所定の状態は、複数の種類の、正常実行中であることを示す第１の状態を含む、情報処理装置。
【請求項２】
前記複数の種類の前記第１の状態の各々に対応する前記所定の処理の進捗度合いは、互いに異なる、請求項１に記載の情報処理装置。
【請求項３】
前記複数の種類の所定の状態は、少なくとも一種類の、前記第１の状態とは異なる第２の状態をさらに含み、
前記少なくとも一種類の前記第２の状態は、待機中であることを示す状態、異常終了中であることを示す状態、実行中断中であることを示す状態、および、正常終了したことを示す情報のうちの少なくとも一つを含む、請求項２に記載の情報処理装置。
【請求項４】
前記所定の処理は、前記情報処理装置の行動の計画に関する処理である、請求項３に記載の情報処理装置。
【請求項５】
前記第２の計画部は、前記第１の計画部よりも一つ上の階層に位置し、かつ、一以上存在し、
前記第１の計画部は、前記一以上の前記第２の計画部の各々に対応する状態を保持し、かつ、前記一以上の前記第２の計画部の各々に対応する状態をそれぞれ前記複数の種類の所定の状態間で変更する、請求項４に記載の情報処理装置。
【請求項６】
前記第１の計画部は、前記一以上の前記第２の計画部の各々に関して、当該第２の計画部に対応する状態を変更した場合には、当該第２の計画部に対応する状態を変更したことを示す情報を当該第２の計画部へ通知する、請求項５に記載の情報処理装置。
【請求項７】
当該第２の計画部に対応する状態を変更したことを示す情報は、変更後の、当該第２の計画部に対応する状態の識別情報を含む、請求項６に記載の情報処理装置。
【請求項８】
前記第１の計画部は、前記一以上の前記第２の計画部の各々に関して、当該第２の計画部に対応する現在の状態を、前記複数の種類の所定の状態のうち、当該現在の状態に関連付けられているいずれかの他の状態へ変更する、請求項６に記載の情報処理装置。
【請求項９】
前記第１の計画部は、前記一以上の前記第２の計画部の各々に関して、前記複数の種類の所定の状態のうち、当該第２の計画部に対応する現在の状態に関連付けられているいずれかの他の状態へ変更するための機能を用いることにより、当該現在の状態を当該いずれかの他の状態へ変更する、請求項８に記載の情報処理装置。
【請求項１０】
前記第１の計画部は、さらに、前記第１の計画部に対して処理の実行を制御するための第１の制御情報を前記一以上の前記第２の計画部のうちの少なくとも一つから受信し、かつ、
受信した前記第１の制御情報に基づいて前記所定の処理を行う、請求項８に記載の情報処理装置。
【請求項１１】
前記第１の計画部は、さらに、前記一以上の前記第２の計画部の各々に対応する状態の組み合わせに基づいて前記所定の処理を行う、請求項１０に記載の情報処理装置。
【請求項１２】
前記第１の計画部は、前記所定の処理の進捗に基づいて、前記一以上の前記第２の計画部のうちの少なくとも一つに対応する状態を変更する、請求項１０に記載の情報処理装置。
【請求項１３】
前記一以上の前記第２の計画部をさらに備え、
前記一以上の前記第２の計画部の各々は、前記行動の計画に関する、前記所定の処理とは異なる処理を行う、請求項１０に記載の情報処理装置。
【請求項１４】
前記第１の計画部は、さらに、前記一以上の前記第２の計画部の各々に対応する状態の組み合わせ、または、前記所定の処理の進捗に基づいて、前記第１の計画部よりも下位の一以上の第３の計画部のうちのいずれかに対して、当該第３の計画部に対応する処理の実行を制御するための第２の制御情報を通知する、請求項１３に記載の情報処理装置。
【請求項１５】
前記第１の計画部は、前記一以上の第３の計画部の各々から、当該第３の計画部の状態が変更したことを示す情報、または、当該第３の計画部に対応する処理の進捗を示す情報を受信し、
前記第１の計画部は、さらに、受信した当該第３の計画部の状態が変更したことを示す情報、または、受信した当該第３の計画部に対応する処理の進捗を示す情報に基づいて、前記所定の処理を行う、請求項１４に記載の情報処理装置。
【請求項１６】
前記一以上の第３の計画部は、前記第１の計画部よりも一つ下の階層に位置し、
前記一以上の第３の計画部をさらに備え、
前記一以上の第３の計画部の各々は、前記行動の計画に関する、前記所定の処理とは異なる処理を行う、請求項１４に記載の情報処理装置。
【請求項１７】
前記第１の計画部は、前記一以上の前記第２の計画部の数以上の複数のサーバと、
前記所定の処理を行う処理部と、
前記一以上の前記第３の計画部の数以上の複数のクライアントと、を含み、
前記複数のサーバのうちの一以上のサーバの各々は、前記一以上の前記第２の計画部のうち、それぞれ異なる一つの前記第２の計画部に対応する状態を保持し、かつ、当該状態を変更した場合には、当該状態を変更したことを示す情報を、当該状態に対応する前記第２の計画部へ通知し、
前記複数のクライアントのうちの一以上のクライアントの各々は、前記一以上の前記第３の計画部のうち、それぞれ異なる一つの前記第３の計画部に対して、当該第３の計画部に対応する処理の実行を制御するための制御情報を通知する、請求項１６に記載の情報処理装置。
【請求項１８】
前記第１の計画部は、前記一以上の前記第２の計画部の各々に関して、当該第２の計画部に対応する状態を変更した場合には、当該第２の計画部に対応する状態を変更したことを示す情報をさらに記憶部に出力し、
前記記憶部に格納された前記状態を変更したことを示す情報に基づいて、前記第１の計画部を含む複数の計画部の状態の変更の履歴情報が表示部に表示される、請求項１６に記載の情報処理装置。
【請求項１９】
複数の種類の所定の状態間で状態を変更しながら、行動の計画に関する所定の処理をプロセッサが行うことと、
前記状態を変更した場合には、状態を変更したことを示す情報を上位の第２の計画部へ通知することと、
を含み、
前記複数の種類の所定の状態は、複数の種類の、正常実行中であることを示す第１の状態を含む、情報処理方法。
【請求項２０】
コンピュータを、
複数の種類の所定の状態間で状態を変更しながら、行動の計画に関する所定の処理を行う第１の計画部、
として機能させるためのプログラムであって、
前記状態を変更した場合には、前記第１の計画部は、状態を変更したことを示す情報を、前記第１の計画部よりも上位の第２の計画部へ通知し、
前記複数の種類の所定の状態は、複数の種類の、正常実行中であることを示す第１の状態を含む、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、情報処理装置、情報処理方法、および、プログラムに関する。
【背景技術】
【０００２】
従来、例えば外界の状況を認識することにより自律的に動作を行うロボットが各種提案されている。【０００３】
例えば、下記特許文献１には、ロボット装置が、木構造形式に構成された複数の行動モジュールを有し、そして、当該複数の行動モジュールのうち上位の行動モジュールは、記憶手段に記憶された制御ポリシーに基づいて、自身に接続された一以上の行動モジュールを制御することが記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第４４４９３７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載の技術では、行動モジュールが処理を行う際に、当該行動モジュールの状態を変更することについては考慮されていない。【０００６】
そこで、本開示では、状態を適切に変更しつつ、行動の計画を行うことが可能な、新規かつ改良された情報処理装置、情報処理方法、および、プログラムを提案する。
【課題を解決するための手段】
【０００７】
本開示によれば、複数の種類の所定の状態間で状態を変更しながら、行動の計画に関する所定の処理を行う第１の計画部、を備え、前記状態を変更した場合には、前記第１の計画部は、状態を変更したことを示す情報を、前記第１の計画部よりも上位の第２の計画部へ通知し、前記複数の種類の所定の状態は、複数の種類の、正常実行中であることを示す第１の状態を含む、情報処理装置が提供される。【０００８】
また、本開示によれば、複数の種類の所定の状態間で状態を変更しながら、行動の計画に関する所定の処理をプロセッサが行うことと、前記状態を変更した場合には、状態を変更したことを示す情報を上位の第２の計画部へ通知することと、を含み、前記複数の種類の所定の状態は、複数の種類の、正常実行中であることを示す第１の状態を含む、情報処理方法が提供される。【０００９】
また、本開示によれば、コンピュータを、複数の種類の所定の状態間で状態を変更しながら、行動の計画に関する所定の処理を行う第１の計画部、として機能させるためのプログラムであって、前記状態を変更した場合には、前記第１の計画部は、状態を変更したことを示す情報を、前記第１の計画部よりも上位の第２の計画部へ通知し、前記複数の種類の所定の状態は、複数の種類の、正常実行中であることを示す第１の状態を含む、プログラムが提供される。
【発明の効果】
【００１０】
以上説明したように本開示によれば、状態を適切に変更しつつ、行動の計画を行うことができる。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
【図面の簡単な説明】
【００１１】
【図１】本開示の各実施形態に共通する情報処理システムの構成例を示した説明図である。
【図２】あるロボットの行動計画モジュールの全体の構成例を示した図である。
【図３】第１の実施形態に係るロボット１０の機能構成例を示したブロック図である。
【図４】第１の実施形態に係る行動計画部１００の構成例を示したブロック図である。
【図５】ある計画部が保持している、当該計画部よりも上位の計画部の各々に対応する状態の一例を示した図である。
【図６】各計画部の各サーバ内が保持する状態が、複数の種類の所定の状態間で変更される流れの例を示した図（状態遷移図）である。
【図７】上位の計画部と下位の計画部との間で送受信される情報の例を示した図である。
【図８】行動計画部１００において実現され得る分岐の構造および集約の構造の例を示した図である。
【図９】図８に示した計画部Ｘおよび計画部Ｙに順々に処理を実行させる際の、各計画部の状態の変更の例を示した図である。
【図１０】計画部１０４の詳細な機能構成例を示したブロック図である。
【図１１】第１の実施形態に係る処理の流れの一部を示したフローチャートである。
【図１２】第１の実施形態に係る処理の流れの一部を示したフローチャートである。
【図１３】第２の実施形態に係る各計画部による、状態を変更したことを示す情報の記憶部１６４に対する出力例を示した図である。
【図１４】第２の実施形態に係る、動作履歴情報に基づいてトレース画面が表示されるまでの流れを示した図である。
【図１５】トレース画面の表示例を示した図である。
【図１６】図１５に示したトレース画面内の一部の領域に関する詳細画面の表示例を示した図である
【図１７】第２の実施形態に係る処理の流れの一部を示したフローチャートである。
【図１８】第２の実施形態に係る処理の流れの一部を示したフローチャートである。
【発明を実施するための形態】
【００１２】
以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００１３】
また、本明細書及び図面において、実質的に同一の機能構成を有する複数の構成要素を、同一の符号の後に異なるアルファベットを付して区別する場合もある。例えば、実質的に同一の機能構成を有する複数の構成要素を、必要に応じて計画部１０２ａおよび計画部１０２ｂのように区別する。ただし、実質的に同一の機能構成を有する複数の構成要素の各々を特に区別する必要がない場合、同一符号のみを付する。例えば、計画部１０２ａおよび計画部１０２ｂを特に区別する必要が無い場合には、単に計画部１０２と称する。
【００１４】
また、以下に示す項目順序に従って当該「発明を実施するための形態」を説明する。
１．概要
２．第１の実施形態
３．第２の実施形態
４．変形例
【００１５】
＜＜１．概要＞＞
まず、本開示の概要について説明する。通常、例えば自律型のロボットなどの自律移動型の装置は、行動計画の機能（行動計画モジュール）を有している。さらに、当該行動計画モジュールでは、実行周期の異なる複数のアルゴリズムが階層構造（例えば木構造など）をなすように構成されている場合が多い。
【００１６】
＜１−１．行動計画モジュールの概要＞
図２は、あるロボットの行動計画モジュールの全体の構成例を示した図である。図２に示したように、当該ロボットの行動計画モジュールでは、実行周期の異なる複数のアルゴリズム（計画モジュール）が階層構造をなすように構成されている。具体的には、階層が一番上の機能が「行動の目的の決定機能」であり、階層が二番目の機能が「トポロジカルマップ上の移動経路の決定機能」であり、階層が三番目の機能が「直近のノードまでの移動経路の決定機能」であり、そして、階層が四番目の機能が「移動経路に沿う制御指令値の決定機能」であるように、当該行動計画モジュールは構成されている。そして、当該行動計画モジュールでは、各計画モジュールは、一つ下の階層に位置する計画モジュールの実行を制御する。
【００１７】
ここで、上記の各計画モジュールの内容についてより具体的に説明する。まず、「行動の目的の決定機能」では、例えば、ロボットは、後述する通信網２２を介して、取得される人間の操作情報に基づいて移動モードを選択し、そして、当該操作情報に基づいて、目的地の決定を行う。この「行動の目的の決定機能」の周期は、人間の操作の周期であり得る。
【００１８】
「トポロジカルマップ上の移動経路の決定機能」では、例えば、ロボットは、まず、「行動の目的の決定機能」で決定された目的地の情報と、ロボットが行った状況認識の結果から得られる、トポロジカルマップおよびトポロジカルマップ上の自己位置の情報とに基づいて、「移動経路と移動方法の計画」を行う。そして、ロボットは、計画した移動方法を実行する。この「トポロジカルマップ上の移動経路の決定機能」の周期は、人間の操作の周期、または、トポロジカルマップの変化の周期であり得る。
【００１９】
「直近のノードまでの移動経路の決定機能」では、例えば、ロボットは、まず、上記の状況認識の結果から得られる、占有格子地図および自己位置を用いて、例えばＡ＊（Ａ−ｓｔａｒ）探索アルゴリズムなどのグラフ探索アルゴリズムにより、目的地までの移動経路の情報を生成する。そして、ロボットは、生成した個々の移動経路の情報をマージする。この「直近のノードまでの移動経路の決定機能」の周期は、数Ｈｚ（例えば１Ｈｚ）程度であり得る。
【００２０】
「移動経路に沿う制御指令値の決定機能」では、例えば、ロボットは、上記の状況認識の結果から得られる自己位置、自己姿勢、および、自己速度などを用いて、（「直近のノードまでの移動経路の決定機能」により）マージされた移動経路に沿うように制御指令値（例えば進行方向や進行速度など）を決定する。この「移動経路に沿う制御指令値の決定機能」の周期は、数Ｈｚ（例えば５Ｈｚ）程度であり得る。
【００２１】
＜１−２．課題の整理＞
ところで、従来、行動計画モジュールなどのソフトウェアの開発効率を向上させることが望まれている。
【００２２】
一般的に、特定のロボット用の行動計画のアルゴリズムは、別の種類のロボットでも流用可能な場合が多い。例えば、自動運転車用の行動計画のアルゴリズムのうちの一部は、室内移動用ロボット（例えばサービスロボットなど）のアルゴリズムと同一であり得る。このように、異なる種類のロボット間でアルゴリズムを流用可能な場合が多い。そこで、あるロボット向けに開発されたアルゴリズムが、階層構造の異なる別の種類のロボットにも流用可能であることが望ましい。
【００２３】
そこで、上記事情を一着眼点にして、本開示の各実施形態を創作するに至った。各実施形態によれば、ロボットの行動計画を実現するアルゴリズム実装を、ユースケースの異なるロボットでも共有可能とするソフトウェアフレームワークを提供することができる。これにより、ソフトウェアの開発効率を向上させることができる。
【００２４】
＜１−３．情報処理システムの構成＞
次に、本開示の各実施形態に共通する情報処理システムの構成例について、図１を参照して説明する。図１に示すように、各実施形態に係る情報処理システムは、ロボット１０、端末２０、および、通信網２２を有する。
【００２５】
｛１−３−１．ロボット１０｝
ロボット１０は、本開示に係る情報処理装置の一例である。ロボット１０は、電気的および／または磁気的な作用を用いて自律的に行動（移動など）可能な装置であり得る。例えば、ロボット１０は、図２を参照して説明した上記の行動計画モジュールと同様の機能を実行可能であってもよい。
【００２６】
図１では、ロボット１０が車（自動運転車など）である例を示しているが、かかる例に限定されない。例えば、ロボット１０は、室内移動用ロボット、人型の自律制御ロボット、四足歩行ロボット、ドローン、産業用ロボット（例えば、機械等の組み立てロボットなど）、サービスロボット（例えば、手術ロボットなどの医療用ロボットや、調理用ロボットなど）、または、玩具であってもよい。また、自動運転車は、四輪車に限定されず、二輪車や三輪車などであってもよい。
【００２７】
｛１−３−２．端末２０｝
端末２０は、例えば、ロボット１０の開発者などのユーザが使用する情報処理端末である。端末２０は、例えば処理回路（ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）など）を含む制御部、ユーザが操作するための入力部（例えばマウスやキーボードなど）、表示画面を表示する表示部（例えばＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）またはＯＬＥＤ（Ｏｒｇａｎｉｃ  Ｌｉｇｈｔ  Ｅｍｉｔｔｉｎｇ  Ｄｉｏｄｅ）など）、および、通信網２２を介して他の装置と通信する通信部などを備える。
【００２８】
例えば、端末２０は、ロボット１０の行動に関してユーザの操作情報（例えば目的地の指定など）の入力を受け付け、そして、当該操作情報を通信網２２を介してロボット１０へ送信する。また、ロボット１０の開発者は、端末２０を使用して、例えばロボット１０に実装され得るソフトウェアを開発することが可能である。
【００２９】
｛１−３−３．通信網２２｝
通信網２２は、通信網２２に接続されている装置から送信される情報の有線、または無線の伝送路である。例えば、通信網２２は、電話回線網、インターネット、衛星通信網などの公衆回線網や、Ｅｔｈｅｒｎｅｔ（登録商標）を含む各種のＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などを含んでもよい。また、通信網２２は、ＩＰ−ＶＰＮ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ−Ｖｉｒｔｕａｌ  Ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋ）などの専用回線網を含んでもよい。
【００３０】
＜＜２．第１の実施形態＞＞
以上、各実施形態に共通する情報処理システムの構成について説明した。次に、本開示に係る第１の実施形態の内容について説明する。
【００３１】
＜２−１．構成＞
まず、第１の実施形態に係るロボット１０の機能構成について説明する。図３は、第１の実施形態に係るロボット１０の機能構成例を示したブロック図である。図３に示すように、ロボット１０は、制御部１５０、通信部１６０、センサ部１６２、記憶部１６４、および、移動機構１６６を有する。
【００３２】
｛２−１−１．制御部１５０｝
制御部１５０は、例えばＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）などの処理回路、および、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などのメモリを用いて、ロボット１０の動作を統括的に制御する。例えば、制御部１５０は、センサ部１６２によるセンシング結果などに基づいて、状況理解（例えば、外界の情報やロボット１０の動作状態などの理解）や行動の計画を行う。そして、制御部１５０は、これらの結果に基づいて移動機構１６６を制御することにより目的地まで移動する。
【００３３】
また、図３に示すように、制御部１５０は、行動計画部１００を有する。
【００３４】
｛２−１−２．行動計画部１００｝
行動計画部１００は、例えば、センサ部１６２によるセンシング結果（画像、音声、位置情報など）や、通信部１６０により受信されたユーザの操作情報などに基づいて、ロボット１０の行動を計画する。
【００３５】
図４は、行動計画部１００の構成例を示したブロック図である。図４に示したように、行動計画部１００は、複数の計画部を含み、かつ、当該複数の計画部は、Ｎ層の階層構造をなすように構成されている。ここで、Ｎは、２以上の任意の数であり得る。例えば、行動計画部１００は、階層が最も高い一以上の計画部１０２（以下「階層Ａの計画部１０２」と称する場合がある）、階層が二番目に高い一以上の計画部１０４（以下「階層Ｂの計画部１０４」と称する場合がある）、および、階層が三番目に高い一以上の計画部１０６（以下「階層Ｃの計画部１０６」と称する場合がある）を含む。
【００３６】
さらに、各計画部はそれぞれ、当該計画部よりも一つ上位の階層に位置する一以上の計画部、および、当該計画部よりも一つ下位の階層に位置する一以上の計画部とそれぞれ通信可能なように構成され得る。例えば、図４に示したように、階層Ｂの計画部１０４ａは、全ての「階層Ａの計画部１０２」および全ての「階層Ｃの計画部１０６」の各々と通信可能なように構成される。
【００３７】
（２−１−２−１．処理の実行）
各計画部は、複数の種類の所定の状態間で状態を変更しながら、ロボット１０の行動の計画に関する所定の処理を行う。例えば、各計画部は、ロボット１０の行動の計画に関して、当該計画部に対して予め定められている処理を行う。ここで、各計画部は、当該計画部が位置する階層ごとに異なる種類の処理を行うように、例えば開発者により予め定められ得る。なお、同じ階層に位置する個々の計画部は、互いに異なる種類の処理を行うように予め定められていてもよいし、または、同じ種類の処理をそれぞれ行うように予め定められていてもよい。
【００３８】
さらに、各計画部は、例えば図５に示したように、当該計画部よりも一つ上位の階層に位置する全ての計画部の数だけ、当該全ての上位の計画部の各々に対応する状態を保持し得る。そして、各計画部は、当該全ての上位の計画部の各々に対応する（現在の）状態を上記複数の種類の所定の状態間でそれぞれ変更し得る。例えば、図６を参照して後述するように、各計画部は、当該全ての上位の計画部の各々に関して、当該上位の計画部に対応する現在の状態を、上記複数の種類の所定の状態のうち、当該現在の状態に関連付けられているいずれかの他の状態へ変更する。一例として、各計画部は、当該全ての上位の計画部の各々に関して、当該上位の計画部に対応する現在の状態を、上記複数の種類の所定の状態のうち、当該現在の状態に関連付けられているいずれかの他の状態へ変更するための機能を用いることにより、当該現在の状態を当該いずれかの他の状態へ変更する。
【００３９】
当該複数の種類の所定の状態は、複数の種類の、正常実行中であることを示す第１の状態、および、複数の種類の、第１の状態とは異なる第２の状態を含み得る。ここで、当該複数の種類の第１の状態の各々は、当該計画部に対応する処理の進捗度合いが互いに異なるように定められていてもよい。例えば、図６に示したように、当該複数の種類の第１の状態は、ＡＣＴＩＶＡＴＩＮＧ、ＡＣＴＩＶＥ、および、ＡＰＰＲＯＡＣＨＩＮＧの三種類であり、かつ、処理の進捗度合いが低い順が、ＡＣＴＩＶＡＴＩＮＧ、ＡＣＴＩＶＥ、および、ＡＰＰＲＯＡＣＨＩＮＧの順であるように定められていてもよい。一例として、ＡＣＴＩＶＡＴＩＮＧは、当該計画部に対応する処理の準備中であることを示す状態である。ＡＣＴＩＶＥは、当該処理を正常実行中であり、かつ、当該処理の進捗度合いが所定の閾値未満である状態である。ＡＰＰＲＯＡＣＨＩＮＧは、当該処理を正常実行中であり、かつ、当該処理の進捗度合いが当該所定の閾値以上である状態（つまり、当該計画部に対応する処理の終了に近づいている状態）である。
【００４０】
また、当該複数の種類の第２の状態は、図６に示したように、例えば、当該処理の実行の待機中である状態（ＲＥＡＤＹ）、当該処理が正常終了した状態（つまり、当該処理の進捗度合いが１００％になった状態）（ＳＵＣＣＥＥＤＥＤ）、当該処理が異常終了中である状態（ＡＢＯＲＴＩＮＧ）、当該処理が異常終了した状態（ＡＢＯＲＴＥＤ）、当該処理が中断中である状態（ＰＲＥＥＭＰＴＩＮＧ）、および、当該処理が中断した状態（ＰＲＥＥＭＰＴＥＤ）を含む。
【００４１】
‐上位からの指示
以下では、前述した各計画部が実行する処理の内容についてより詳細に説明を行う。例えば、各計画部は、当該計画部よりも一つ上位の階層に位置するいずれかの計画部から受信された制御情報に基づいて、当該計画部に対応する処理（計画処理）を行う。ここで、当該制御情報は、当該計画部に対応する処理の開始または停止などを指示する情報を含んでもよい。例えば、図７に示したように、計画部Ｂ１０４は、処理の開始を指示するための制御情報を上位の計画部Ａ１０２から受信し得る。この場合、計画部Ｂ１０４は、当該制御情報に従って、計画部Ｂ１０４が保持している、計画部Ａ１０２に対応する現在の状態をＲＥＡＤＹからＡＣＴＩＶＡＴＩＮＧへと変更しながら、計画部Ｂ１０４に対応する処理の実行を開始し得る。
【００４２】
また、図７に示したように、計画部Ｂ１０４は、処理の停止を指示するための制御情報を計画部Ａ１０２から受信し得る。この場合、計画部Ｂ１０４は、当該制御情報に従って、現在実行中の計画部Ｂ１０４に対応する処理を停止（中断）し得る。この場合、計画部Ｂ１０４は、計画部Ｂ１０４が保持している、計画部Ａ１０２に対応する現在の状態（ＡＣＴＩＶＡＴＩＮＧ、ＡＣＴＩＶＥ、または、ＡＰＰＲＯＡＣＨＩＮＧのいずれか）をＰＲＥＥＭＰＴＩＮＧへと変更しながら、計画部Ｂ１０４に対応する処理の実行を停止し得る。
【００４３】
または、当該制御情報は、該当の上位の計画部に対応する現在の状態を上記複数の種類の所定の状態間で変更することを指示する情報を含んでもよい。例えば、該当の上位の計画部に対応する現在の状態に関連付けられている一以上の他の所定の状態のうち、変更先の状態を指示する情報を含んでもよい。一例として、該当の上位の計画部に対応する現在の状態が“ＡＣＴＩＶＥ”である場合には、当該制御情報は、当該状態を“ＰＲＥＥＭＰＴＩＮＧ”へ変更することの指示を含んでいてもよい。
【００４４】
‐下位からの通知
さらに、各計画部は、当該計画部よりも一つ下位の階層に位置するいずれかの計画部から受信された情報と、当該計画部の設定（実装）とに基づいて、当該計画部に対応する処理を行う。例えば、図７に示したように、各計画部は、当該計画部よりも一つ下位の階層に位置するいずれかの計画部から、当該いずれかの計画部の状態が別の状態へ変更されたことを示す情報を受信し得る。または、各計画部は、当該いずれかの計画部に対応する処理の進捗（例えば、処理の完了や失敗など）を示す情報を受信し得る。この場合、各計画部は、これらの受信した情報と、当該計画部の設定とに対応する処理を行い得る。
【００４５】
‐状態の組み合わせ
さらに、各計画部は、当該計画部の現在の状態と、当該計画部の設定とに基づいて、当該計画部に対応する処理を行う。前述したように、各計画部は、当該計画部よりも一つ上位の階層に位置する全ての計画部の各々に対応する状態を保持し得る。この場合、各計画部は、当該上位の全ての計画部の各々に対応する現在の状態の組み合わせに予め関連付けられている、（当該計画部の）処理を実行し得る。
【００４６】
（２−１−２−２．上位の計画部への通知）
さらに、各計画部は、状態を変更した場合には、当該計画部よりも一つ上位の階層に位置する別の計画部へ、状態を変更したことを示す情報を通知する。例えば、各計画部は、当該計画部よりも一つ上位の階層に位置する全ての計画部の各々に関して、当該上位の計画部に対応する状態を変更する度に、当該上位の計画部に対応する状態を変更したことを示す情報を当該上位の計画部にのみ逐次通知する。ここで、「当該上位の計画部に対応する状態を変更したことを示す情報」は、例えば、当該上位の計画部に対応する変更前の状態の識別情報、および、当該上位の計画部に対応する変更後の状態の識別情報を含む。
【００４７】
さらに、各計画部は、例えば図７に示したように、当該計画部よりも一つ上位の階層に位置する一以上の計画部へ、当該計画部に対応する処理の進捗（例えば、処理の完了や失敗など）を示す情報を、当該計画部の設定に基づいて通知することも可能である。
【００４８】
（２−１−２−３．下位の計画部の制御）
さらに、各計画部は、図７に示したように、当該計画部よりも一つ下位の階層に位置する別の計画部に対して、当該別の計画部に対応する処理の実行を当該計画部の設定に基づいて制御することも可能である。例えば、各計画部は、当該計画部よりも一つ下位の階層に位置する別の計画部へ、当該別の計画部に対応する処理の開始や停止などを指示するための制御情報を、当該計画部の処理の進捗度合いに基づいて通知してもよい。または、各計画部は、当該計画部が保持している、当該計画部よりも一つ上位の階層に位置する全ての計画部の各々に対応する現在の状態の組み合わせに基づいて、当該下位の計画部へ当該制御情報を通知してもよい。
【００４９】
このように、第１の実施形態では、各計画部の接続方法、各計画部の状態遷移のルール、および、各計画部の制御方法が基本的に共通化されている。このため、行動計画部１００は任意の階層構造を取ることができる。例えば、図８に示したように、行動計画部１００は、分岐の構造や集約の構造を含むことが可能となる。図８に示した例では、計画部Ａ１０２が、計画部Ａ１０２よりも一つ下位の階層に位置する計画部Ｘ１０４ａおよび計画部Ｙ１０４ｂの各々に対して並列に制御可能なような構造（つまり、分岐の構造）が構成されている。さらに、図８に示した例では、同じ階層に位置する複数の計画部（具体的には、計画部Ｘ１０４ａおよび計画部Ｙ１０４ｂ）の各々が、当該複数の計画部よりも一つ下位の階層に位置する一つの計画部１０６に対してそれぞれ独立して制御可能なような構造（つまり、集約の構造）が構成されている。このように、第１の実施形態によれば、各種の自律型の装置（各種のロボットなど）において想定され得る任意の階層構造を実現可能なような、各計画部間の標準インターフェースを規定したソフトウェアフレームワークが提供され得る。
【００５０】
例えば、図８に示したような「分岐の構造」が構成されることにより、図９に示したように、複数の計画部１０４に処理を順々に実行させる場面において、各計画部１０４による処理を切り替える際の、切り替えのための時間を不要にする（または、大きく削減する）ことができる。より具体的には、図８に示した計画部Ａ１０２は、図９に示したように、計画部Ｘ１０４ａの状態が“ＡＣＴＩＶＥ”から“ＡＰＰＲＯＡＣＨＩＮＧ”に変わったタイミングに、計画部Ｙ１０４ｂの状態を（“ＲＥＡＤＹ”から）“ＡＣＴＩＶＡＴＩＮＧ”へ切り替え、計画部Ｙ１０４ｂに暖気運転をさせることができる。このように、２つの計画部１０４の実行をスムーズに（効率的に）切り替えることができる。
【００５１】
‐変形例
追加的に、または、代替的に、各計画部は、当該計画部よりも一つ下位の階層に位置する別の計画部へ、当該別の計画部の状態を別の状態へ変更させるための制御情報を当該計画部の設定に基づいて通知することも可能である。
【００５２】
（２−１−２−４．各計画部の詳細な機能構成例）
ここで、各計画部のさらに詳細な機能構成例について、図１０を参照して説明する。図１０は、計画部１０４の詳細な機能構成例を示したブロック図である。図１０に示したように、計画部１０４は、Ｎ個のサーバ１０４０、処理部１０４４、および、Ｎ個のクライアント１０４６を含んで構成され得る。ここで、Ｎは、予め定められている、２以上の数である。なお、図１０では、一例として計画部１０４の構成例を示しているが、他の階層に位置する他の計画部（例えば計画部１０２や計画部１０６など）に関しても、図１０に示した構成例と同様に構成され得る。
【００５３】
‐サーバ１０４０
各サーバ１０４０は、計画部１０４よりも一つ上位の階層に位置するいずれかの計画部１０２と通信を行う機能を有する。例えば、計画部１０４よりも一つ上位の階層に位置する全ての計画部１０２の各々は、それぞれ別々のサーバ１０４０と一対一に関連付けられる。そして、各サーバ１０４０は、（当該全ての計画部１０２のうち）当該サーバ１０４０に関連付けられている計画部１０２とのみ通信する。かかる構成によれば、計画部１０４は、計画部１０４よりも一つ上位の階層に位置する全ての計画部１０２と通信を行うことができる。
【００５４】
‐‐状態の変更
さらに、各サーバ１０４０は、ステートマシン１０４２を含む。ステートマシン１０４２は、（当該ステートマシン１０４２を含んでいる）サーバ１０４０に関連付けられている上位の計画部１０２に対応する状態を保持する。これにより、計画部１０４は、図５に示したように、計画部１０４よりも一つ上位の階層に位置する全ての計画部１０２の各々に対応する状態を保持することができる。図５に示した例では、「計画部Ｘ」１０２ａに関連付けられているサーバ１０４０ａ内のステートマシン１０４２ａは、「計画部Ｘ」１０２ａに対応する現在の状態として「ＡＣＴＩＶＥ」を保持している。
【００５５】
さらに、各サーバ１０４０内のステートマシン１０４２は、保持している状態を、例えば図６に示したように、上記複数の種類の所定の状態間で変更する。
【００５６】
図６は、各ステートマシン１０４２が保持する状態が、上記複数の種類の所定の状態間で変更（状態遷移）される流れの例を示した図（状態遷移図）である。なお、図６では、上位の計画部１０２からの指示（要求）を契機として状態の変更が生じる場合を実線で示している。また、後述する、処理部１０４４の要求を契機として状態の変更が生じる場合を破線で示している。また、自動的に状態が変更される場合を一点鎖線で示している。図６に示した例では、あるステートマシン１０４２が保持する現在の状態が“ＲＥＡＤＹ”である場合には、上位の計画部１０２からの指示を契機してのみ当該状態の変更が行われ、かつ、変更後の状態は“ＡＣＴＩＶＡＴＩＮＧ”になる。このように、第１の実施形態では、各計画部に含まれる個々のステートマシン１０４２は全て同じ流れで状態遷移を行う。これにより、行動計画部１００は任意の階層構造を取ることが可能になる。
【００５７】
‐‐状態の変更の通知
さらに、（前述したように）各サーバ１０４０は、当該サーバ１０４０内のステートマシン１０４２が保持している状態を変更する度に、当該サーバ１０４０に関連付けられている上位の計画部１０２へ、状態を変更したことを示す情報（メッセージとも称する）を通知する。また、各サーバ１０４０は、例えば当該サーバ１０４０内のステートマシン１０４２が保持している状態を変更する度に、状態を変更したことを示す情報（例えば、当該サーバ１０４０の識別情報、および、変更後の状態の識別情報など）を、後述する処理部１０４４へ通知する。
【００５８】
‐‐処理の進捗の通知
さらに、各サーバ１０４０は、処理部１０４４による処理の進捗を示す情報を、当該サーバ１０４０に関連付けられている上位の計画部１０２へ例えば処理部１０４４からの要求に基づいて通知する。ここで、当該処理の進捗を示す情報は、当該処理の進捗度合いを示したり、または、例えば、予め定められている各種のイベント（例えば処理の完了に対応するイベントや、処理の失敗に対応するイベントなど）のうちのいずれかが発生したことなどを示し得る。
【００５９】
‐クライアント１０４６
各クライアント１０４６は、計画部１０４よりも一つ下位の階層に位置するいずれかの計画部１０６と通信を行う機能を有する。例えば、計画部１０４よりも一つ下位の階層に位置する全ての計画部１０６の各々は、それぞれ別々のクライアント１０４６と一対一に関連付けられる。そして、各クライアント１０４６は、（当該全ての計画部１０６のうち）当該クライアント１０４６に関連付けられている計画部１０６とのみ通信する。かかる構成によれば、計画部１０４は、計画部１０４よりも一つ下位の階層に位置する全ての計画部１０６と通信を行うことができる。
【００６０】
例えば、各クライアント１０４６は、当該クライアント１０４６に関連付けられている計画部１０６に対して、当該計画部１０６に対応する処理の開始や停止などを指示するための制御情報を、後述する処理部１０４４から取得される要求に基づいて通知する。また、各クライアント１０４６は、当該クライアント１０４６に関連付けられている計画部１０６から、当該計画部１０６の状態が変更されたことを示す情報（より詳細には、当該計画部１０６における当該計画部１０４に対応する状態が変更されたことを示す情報）を受信する。
【００６１】
‐処理部１０４４
処理部１０４４は、ロボット１０の行動の計画に関して、該当の計画部１０４に対して予め開発者により定められている機能（実装されている機能）を実行する。例えば、処理部１０４４は、計画部１０４よりも一つ下位の階層に位置するいずれかの計画部１０６に対応する処理の開始または停止を指示するための制御情報を当該計画部１０６へ通知することを、当該計画部１０６に関連付けられているクライアント１０４６に対して要求する。
【００６２】
さらに、計画部１０４よりも一つ上位の階層に位置するいずれかの計画部１０２に対応する現在の状態を上記複数の種類の所定の状態間で変更するための、予め定められている条件が満たされた場合には、処理部１０４４は、当該計画部１０２に関連付けられているサーバ１０４０に対して、当該サーバ１０４０内のステートマシン１０４２に保持されている状態を変更することを要求する。例えば、この場合、処理部１０４４は、まず、図６に示したような状態の変更（遷移）の設定に基づいて、当該計画部１０２に対応する変更後の状態を決定する。そして、処理部１０４４は、当該計画部１０２に関連付けられているサーバ１０４０（内のステートマシン１０４２）が保持している現在の状態を当該決定された状態へ変更することを、当該サーバ１０４０に対して要求する。
【００６３】
例えば、処理部１０４４は、当該決定された状態に変更させるための所定の関数を呼ぶ（Ｃａｌｌ）ことにより、当該サーバ１０４０内のステートマシン１０４２が保持している状態の変更を当該サーバ１０４０に対して要求する。ここで、当該所定の関数は、変更後の状態ごとに予め定められ得る。例えば、“ＡＣＴＩＶＡＴＩＮＧ”に変更させるための関数がｓｅｔＡｃｔｉｖａｔｉｎｇ（）、“ＳＵＣＣＥＥＤＥＤ”に変更させるための関数がｓｅｔＳｕｃｃｅｅｄｅｄ（）、“ＰＲＥＥＭＰＴＩＮＧ”へ変更させるための関数がｓｅｔＰｒｅｅｍｐｔｉｎｇ（）などのように定められていてもよい。
【００６４】
ここで、個々の計画部１０２に対応する現在の状態を変更するための条件は、処理部１０４４に対して予め設定されている。例えば、当該条件は、処理部１０４４に対して定められている処理の進捗度合いなどに応じて設定されている。一例として、「現在の状態が“ＡＣＴＩＶＥ”である場合には、処理部１０４４に対して定められている全体の処理のうちの８０％までが完了したタイミングに現在の状態を“ＡＰＰＲＯＡＣＨＩＮＧ”へ変更すること」が、当該条件の一つとして定められていてもよい。
【００６５】
｛２−１−３．通信部１６０｝
通信部１６０は、例えばネットワークカードやアンテナなどの通信インターフェースを含んで構成され得る。通信部１６０は、例えば通信網２２を介して外部の装置と情報を送受信する。例えば、通信部１６０は、ユーザの操作情報を外部の装置から受信する。
【００６６】
｛２−１−４．センサ部１６２｝
センサ部１６２は、例えば外界やロボット１０の動作状態などに関してセンシングする。センサ部１６２は、例えば、カメラ（イメージセンサ）、デプスセンサ（例えばｔｉｍｅ  ｏｆ  ｆｌｉｇｈｔ方式のセンサ、または、ステレオカメラなど）、マイクロフォン、加速度センサ、ジャイロスコープ、温度センサ、地磁気センサ、および／または、トルクセンサなどを含む。さらに、センサ部１６２は、例えばＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）やＧＬＯＮＡＳＳ（Ｇｌｏｂａｌ  Ｎａｖｉｇａｔｉｏｎ  Ｓａｔｅｌｌｉｔｅ  Ｓｙｓｔｅｍ）などの測位衛星から測位信号を受信する受信機を含み得る。
【００６７】
｛２−１−５．記憶部１６４｝
記憶部１６４は、例えばＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）などの記憶装置を含んで構成され得る。記憶部１６４は、各種のデータおよび各種のソフトウェアを記憶する。
【００６８】
｛２−１−６．移動機構１６６｝
移動機構１６６は、ロボット１０が移動するための機構である。例えば、移動機構１６６は、複数の車輪を有してもよいし、歩行するための複数の脚部（例えば２脚や４脚など）を有してもよいし、または、例えばキャタピラ（登録商標）などの無限軌道の機構を有してもよい。
【００６９】
例えば、移動機構１６６は、一以上のアクチュエータを有する。この場合、ロボット１０内の電源部（図示省略）から供給される電力と、制御部１５０から伝達される制御信号とに基づいて当該一以上のアクチュエータが駆動されることにより、ロボット１０は移動し得る。
【００７０】
＜２−２．処理の流れ＞
以上、第１の実施形態に係る構成について説明した。次に、第１の実施形態に係る処理の流れの一例について、図１１および図１２を参照して説明する。ここでは、ロボット１０内のある計画部１０４の処理の流れの一例について説明する。
【００７１】
図１１は、ある計画部１０４の処理の流れの一部を示したフローチャートである。図１１に示したように、まず、計画部１０４よりも一つ上位の階層に位置するいずれかの計画部１０２は、当該計画部１０２に関連付けられている（計画部１０４内の）サーバ１０４０へ、計画部１０４に対応する処理の開始を指示するための制御情報を送信する。そして、当該サーバ１０４０は、受信した制御情報を、計画部１０４内の処理部１０４４へ通知する（Ｓ１０１）。
【００７２】
その後、計画部１０４内の処理部１０４４は、受信した制御情報に基づいて、当該上位の計画部１０２に対応する状態を“ＲＥＡＤＹ”から“ＡＣＴＩＶＡＴＩＮＧ”に変更するように、当該上位の計画部１０２に関連付けられているサーバ１０４０へ要求する。そして、該当のサーバ１０４０は、当該サーバ１０４０内のステートマシン１０４２が保持している現在の状態を“ＲＥＡＤＹ”から“ＡＣＴＩＶＡＴＩＮＧ”へ変更する（Ｓ１０３）。
【００７３】
続いて、該当のサーバ１０４０は、当該上位の計画部１０２に対応する状態を“ＡＣＴＩＶＡＴＩＮＧ”に変更したことを示す情報を当該上位の計画部１０２へ通知する（Ｓ１０５）。
【００７４】
続いて、計画部１０４内の処理部１０４４は、ロボット１０の行動の計画に関して、当該計画部１０４に対して予め定められている処理を開始する（Ｓ１０７）。
【００７５】
その後、計画部１０４内の各サーバ１０４０が保持している現在の状態のうちのいずれかを変更するための条件が成立するまで（Ｓ１０９：Ｎｏ）、処理部１０４４は、当該処理の実行を継続する。
【００７６】
ここで、図１２を参照して、当該いずれかの状態を変更するための条件が成立した場合（Ｓ１０９：Ｙｅｓ）における処理の流れについて説明する。図１２に示したように、この場合、まず、処理部１０４４は、該当の状態を、図６に示した状態遷移図に基づいて上記複数の種類の所定の状態の間で変更するように、該当の状態に対応するサーバ１０４０に対して要求する。そして、当該サーバ１０４０は、当該サーバ１０４０内のステートマシン１０４２が保持している状態を、当該要求に基づいて別の状態へ変更する（Ｓ１２１）。
【００７７】
続いて、該当のサーバ１０４０は、当該別の状態へ変更したことを示す情報を、当該サーバ１０４０に関連付けられている上位の計画部１０２へ通知する（Ｓ１２３）。
【００７８】
その後、該当の処理の中断または終了の条件が満たされた場合には（Ｓ１２５：Ｙｅｓ）、計画部１０４は、当該処理を中断または終了する。一方、該当の処理の中断および終了の条件が満たされていない場合には（Ｓ１２５：Ｎｏ）、計画部１０４は、再びＳ１０９以降の処理を行う。
【００７９】
＜２−３．効果＞
以上説明したように、第１の実施形態に係るロボット１０は、上記複数の種類の所定の状態間で状態を変更しながら、行動の計画に関する所定の処理を行う一以上の計画部を備え、当該一以上の計画部の各々は、状態を変更した場合には、状態を変更したことを示す情報を、当該計画部よりも上位の計画部へ通知する。このため、例えば公知の技術と比較して、ロボット１０の行動の計画に関して、より多様な種類の処理を実現することができる。
【００８０】
例えば、各計画部は、当該計画部よりも一つ上の階層に位置する全ての計画部の各々に対応する状態を保持し、かつ、当該全ての上位の計画部の各々に対応する状態をそれぞれ上記複数の種類の所定の状態間で、図６に示した状態遷移図に基づいて変更する。このため、例えば実行周期の異なる複数の計画部を含む行動計画部１００が、任意の階層構造を取ることが可能になる。
【００８１】
このように、第１の実施形態によれば、各種の自律型の装置（各種のロボットなど）において想定され得る任意の階層構造を実現可能なような、各計画部間の標準インターフェースを規定したソフトウェアフレームワークを提供することができる。これにより、アルゴリズムの流用性が向上する。例えばあるロボット向けに開発されたアルゴリズムを別の種類のロボットにも流用可能となる。その結果、ソフトウェアの開発効率を向上させることも可能となる。
【００８２】
＜＜３．第２の実施形態＞＞
以上、第１の実施形態について説明した。前述したように、第１の実施形態に係るロボット１０内の複数の計画部は、並行に同時動作可能であり、かつ、計画部同士は、非同期通信で連携し得る。
【００８３】
一方で、ロボット１０を開発する開発者の観点では、例えば以下のような困難が生じ得るという課題がある。第１に、ロボット１０の稼働中に、ロボット１０内の各計画部の動作状況を開発者が把握することが困難であり得る。第２に、ロボット１０内の一以上の計画部に不具合が生じた場合に、開発者が当該不具合を解析することが困難であり得る。
【００８４】
次に、本開示の第２の実施形態について説明する。後述するように、第２の実施形態によれば、各計画部の動作履歴（または動作状況）を可視化することが可能となる。これにより、ロボット１０の開発がより容易になり得る。
【００８５】
＜３−１．構成＞
まず、第２の実施形態に係るロボット１０の機能構成について説明する。第２の実施形態に係るロボット１０に含まれる各構成要素は、例えば図３、図４、および、図１０などに示した第１の実施形態と同様である。以下では、第１の実施形態とは異なる内容についてのみ説明を行うこととし、同一の内容については説明を省略する。
【００８６】
｛３−１−１．計画部｝
第２の実施形態に係る各計画部は、状態を変更する度に、例えば図１３に示したように、状態を変更したことを示す情報を動作履歴情報として記憶部１６４（例えば記憶部１６４内の所定の領域）に出力する。例えば、各計画部は、当該計画部よりも一つ上位の階層に位置する全ての計画部のうちのいずれかに対応する状態を変更する度に、当該上位の計画部に対応する状態を変更したことを示す情報を当該動作履歴情報として記憶部１６４に出力する。ここで、「当該状態を変更したことを示す情報」は、例えば、状態を変更した日時、変更前の状態の識別情報、変更後の状態の識別情報、および、当該上位の計画部の識別情報などを含む。
【００８７】
さらに、各計画部は、当該計画部よりも一つ上位の階層に位置する全ての計画部のうちのいずれかに対して、状態を変更したことを示す情報を当該上位の計画部に対して通知する度に、当該通知（メッセージ）を送信したことを示す情報を当該動作履歴情報として記憶部１６４に出力することも可能である。ここで、「当該通知を送信したことを示す情報」は、例えば、当該通知の送信日時、当該通知の送信先の計画部の識別情報、および、当該通知の識別番号などを含む。
【００８８】
さらに、各計画部は、当該計画部よりも一つ上位の階層に位置するいずれかの計画部から、状態を変更したことを示す通知を受信する度に、当該状態の変更の通知を受信したことを示す情報を当該動作履歴情報として記憶部１６４に出力することも可能である。ここで、「当該状態の変更の通知を受信したことを示す情報」は、例えば、当該通知の受信日時、当該通知の送信元の計画部の識別情報、および、当該通知の識別番号などを含む。
【００８９】
さらに、各計画部は、当該計画部に対して予め定められている機能（関数など）を用いる度に、当該機能を用いたことを示す情報（例えば、当該機能を使用した日時、および、使用した関数の識別情報などを含む）を当該動作履歴情報として記憶部１６４に出力することも可能である。さらに、各計画部は、例えば当該計画部に対応する処理の実行中において、予め定められている任意のイベントが発生する度に、イベントの発生情報（例えば、イベントの発生時刻、および、イベントの識別情報などを含む）を当該動作履歴情報として記憶部１６４に出力することも可能である。
【００９０】
（３−１−１−１．動作履歴情報）
第２の実施形態では、記憶部１６４に格納された動作履歴情報に基づいて、各計画部の動作履歴を可視化するための、例えば図１５に示したようなトレース画面が表示され得る。例えば、図１４に示したように、まず、記憶部１６４に格納された動作履歴情報３０は、トレース画面の表示のためのトレースファイル３２へ変換され得る。そして、トレースファイル３２に基づいて当該トレース画面が例えば端末２０などにより表示され得る。
【００９１】
例えば、端末２０は、通信網２２を介してトレースファイル３２をロボット１０から受信し、そして、受信したトレースファイル３２に基づいて当該トレース画面の表示を制御する。または、端末２０は、記憶部１６４に格納された全ての動作履歴情報を通信網２２を介して受信し、当該全ての動作履歴情報の各々をトレースファイル３２に変換し、そして、変換された全てのトレースファイル３２に基づいて当該トレース画面の表示を制御してもよい。
【００９２】
（３−１−１−２．トレース画面）
図１５は、トレース画面の表示例（トレース画面４０）を示した図である。図１５に示したように、トレース画面４０は、各計画部における状態の変更の履歴を時間軸に沿って一覧表示することが可能である。この表示例によれば、例えば一以上の計画部に不具合が生じた際に、当該不具合の発生時までの各計画部の動作履歴を、開発者は、時間軸に沿って一覧的に確認することができる。このため、当該不具合の内容や原因の解析をより容易に行うことができる。
【００９３】
図１６は、図１５に示したトレース画面４０内の一部の領域（具体的には、「Ａ」で示した領域）における詳細な情報を示す詳細画面の表示例（詳細画面４２）を示した図である。図１６に示したように、詳細画面４２では、該当の領域に対応する時間帯における、各計画部の動作状況（例えば、当該計画部の状態、発生したイベント、および、使用された関数など）の時系列を示す詳細履歴表示４２０、当該時間帯における個々の計画部同士の通信履歴を示す通信履歴表示４２２、および、当該時間帯において発生した一つのイベントの詳細情報を示す詳細情報表示欄４２４などを含む。ここで、詳細履歴表示４２０は、例えば、前述した「イベントの発生情報」に基づいて表示され得る。通信履歴表示４２２は、例えば、前述した「通知を送信したことを示す情報」と「通知を受信したことを示す情報」との組み合わせに基づいて表示され得る。詳細情報表示欄４２４は、例えば、前述した「イベントの発生情報」に基づいて表示され得る。
【００９４】
＜３−２．処理の流れ＞
以上、第２の実施形態に係る構成について説明した。次に、第２の実施形態に係る処理の流れの一例について、図１７および図１８を参照して説明する。ここでは、ロボット１０内のある計画部１０４の処理の流れの一例について説明する。
【００９５】
図１７は、第２の実施形態に係る、ある計画部１０４の処理の流れの一部を示したフローチャートである。なお、図１７に示したＳ２０１〜Ｓ２０５の処理は、第１の実施形態におけるＳ１０１〜Ｓ１０５と同様である。
【００９６】
Ｓ２０５の後、計画部１０４内の該当のサーバ１０４０は、当該サーバ１０４０が保持している状態を“ＡＣＴＩＶＡＴＩＮＧ”に変更したことを示す情報を動作履歴情報として記憶部１６４に出力する（Ｓ２０７）。
【００９７】
なお、図１７に示したＳ２０９〜Ｓ２１１の処理は、第１の実施形態におけるＳ１０７〜Ｓ１０９と同様である。
【００９８】
ここで、図１８を参照して、Ｓ２１１の後の処理の流れについて説明する。図１８に示したＳ２２１〜Ｓ２２３の処理は、第１の実施形態におけるＳ１２１〜Ｓ１２３と同様である。
【００９９】
Ｓ２２３の後、計画部１０４内の該当のサーバ１０４０は、当該サーバ１０４０が保持している状態を変更したことを示す情報を動作履歴情報として記憶部１６４に出力する（Ｓ２２５）。
【０１００】
なお、図１８に示したＳ２２７の処理は、第１の実施形態におけるＳ１２５と同様である。
【０１０１】
＜３−３．効果＞
以上説明したように、第２の実施形態に係る各計画部は、状態を変更する度に、状態を変更したことを示す情報を動作履歴情報として記憶部１６４に出力する。さらに、当該動作履歴情報に基づいてトレース画面の表示が可能である。従って、各計画部の動作履歴（または動作状況）の可視化が可能となるので、ロボット１０の開発がより容易になり得る。
【０１０２】
例えば一以上の計画部に不具合が生じた際に、当該不具合の発生時までの各計画部の動作履歴を表示可能であるので、開発者は、時間軸に沿って一覧的に確認することができる。このため、当該不具合の内容や原因の解析をより容易に行うことができる。
【０１０３】
＜＜４．変形例＞＞
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示はかかる例に限定されない。本開示の属する技術の分野における通常の知識を有する者であれば、請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
【０１０４】
＜４−１．変形例１＞
前述した各実施形態では、本開示に係る情報処理装置がロボット１０である例について説明したが、かかる例に限定されない。当該情報処理装置は、例えば、サーバ機、汎用ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、タブレット型端末、ゲーム機、スマートフォンなどの携帯電話、例えばＨＭＤ（Ｈｅａｄ  Ｍｏｕｎｔｅｄ  Ｄｉｓｐｌａｙ）やスマートウォッチなどのウェアラブルデバイス、または、車載装置（カーナビゲーション装置など）などであってもよい。
【０１０５】
追加的に、または、代替的に、当該情報処理装置は、自装置の行動を計画する代わりに、他の装置（例えば他のロボットなど）の行動、または、人間（または、人間が運転する各種の乗り物）の行動を計画してもよい。
【０１０６】
＜４−２．変形例２＞
前述した各実施形態に係る処理の流れにおける各ステップは、必ずしも記載された順序に沿って処理されなくてもよい。例えば、各ステップは、適宜順序が変更されて処理されてもよい。また、各ステップは、時系列的に処理される代わりに、一部並列的に又は個別的に処理されてもよい。また、記載されたステップのうちの一部が省略されたり、または、別のステップがさらに追加されてもよい。
【０１０７】
また、前述した各実施形態によれば、ＣＰＵ、ＲＯＭ、およびＲＡＭなどのハードウェアを、前述した各実施形態に係るロボット１０の各構成（例えば行動計画部１００など）と同等の機能を発揮させるためのコンピュータプログラムも提供可能である。また、当該コンピュータプログラムが記録された記憶媒体も提供される。
【０１０８】
また、本明細書に記載された効果は、あくまで説明的または例示的なものであって限定的ではない。つまり、本開示に係る技術は、上記の効果とともに、または上記の効果に代えて、本明細書の記載から当業者には明らかな他の効果を奏しうる。
【０１０９】
なお、以下のような構成も本開示の技術的範囲に属する。
（１）
複数の種類の所定の状態間で状態を変更しながら、行動の計画に関する所定の処理を行う第１の計画部、
を備え、
前記状態を変更した場合には、前記第１の計画部は、状態を変更したことを示す情報を、前記第１の計画部よりも上位の第２の計画部へ通知し、
前記複数の種類の所定の状態は、複数の種類の、正常実行中であることを示す第１の状態を含む、情報処理装置。
（２）
前記複数の種類の前記第１の状態の各々に対応する前記所定の処理の進捗度合いは、互いに異なる、前記（１）に記載の情報処理装置。
（３）
前記複数の種類の所定の状態は、少なくとも一種類の、前記第１の状態とは異なる第２の状態をさらに含み、
前記少なくとも一種類の前記第２の状態は、待機中であることを示す状態、異常終了中であることを示す状態、実行中断中であることを示す状態、および、正常終了したことを示す情報のうちの少なくとも一つを含む、前記（２）に記載の情報処理装置。
（４）
前記所定の処理は、前記情報処理装置の行動の計画に関する処理である、前記（３）に記載の情報処理装置。
（５）
前記第２の計画部は、前記第１の計画部よりも一つ上の階層に位置し、かつ、一以上存在し、
前記第１の計画部は、前記一以上の前記第２の計画部の各々に対応する状態を保持し、かつ、前記一以上の前記第２の計画部の各々に対応する状態をそれぞれ前記複数の種類の所定の状態間で変更する、前記（４）に記載の情報処理装置。
（６）
前記第１の計画部は、前記一以上の前記第２の計画部の各々に関して、当該第２の計画部に対応する状態を変更した場合には、当該第２の計画部に対応する状態を変更したことを示す情報を当該第２の計画部へ通知する、前記（５）に記載の情報処理装置。
（７）
当該第２の計画部に対応する状態を変更したことを示す情報は、変更後の、当該第２の計画部に対応する状態の識別情報を含む、前記（６）に記載の情報処理装置。
（８）
前記第１の計画部は、前記一以上の前記第２の計画部の各々に関して、当該第２の計画部に対応する現在の状態を、前記複数の種類の所定の状態のうち、当該現在の状態に関連付けられているいずれかの他の状態へ変更する、前記（６）または（７）に記載の情報処理装置。
（９）
前記第１の計画部は、前記一以上の前記第２の計画部の各々に関して、前記複数の種類の所定の状態のうち、当該第２の計画部に対応する現在の状態に関連付けられているいずれかの他の状態へ変更するための機能を用いることにより、当該現在の状態を当該いずれかの他の状態へ変更する、前記（８）に記載の情報処理装置。
（１０）
前記第１の計画部は、さらに、前記第１の計画部に対して処理の実行を制御するための第１の制御情報を前記一以上の前記第２の計画部のうちの少なくとも一つから受信し、かつ、
受信した前記第１の制御情報に基づいて前記所定の処理を行う、前記（８）または（９）に記載の情報処理装置。
（１１）
前記第１の計画部は、さらに、前記一以上の前記第２の計画部の各々に対応する状態の組み合わせに基づいて前記所定の処理を行う、前記（１０）に記載の情報処理装置。
（１２）
前記第１の計画部は、前記所定の処理の進捗に基づいて、前記一以上の前記第２の計画部のうちの少なくとも一つに対応する状態を変更する、前記（１０）または（１１）に記載の情報処理装置。
（１３）
前記一以上の前記第２の計画部をさらに備え、
前記一以上の前記第２の計画部の各々は、前記行動の計画に関する、前記所定の処理とは異なる処理を行う、前記（１０）〜（１２）のいずれか一項に記載の情報処理装置。
（１４）
前記第１の計画部は、さらに、前記一以上の前記第２の計画部の各々に対応する状態の組み合わせ、または、前記所定の処理の進捗に基づいて、前記第１の計画部よりも下位の一以上の第３の計画部のうちのいずれかに対して、当該第３の計画部に対応する処理の実行を制御するための第２の制御情報を通知する、前記（１３）に記載の情報処理装置。
（１５）
前記第１の計画部は、前記一以上の第３の計画部の各々から、当該第３の計画部の状態が変更したことを示す情報、または、当該第３の計画部に対応する処理の進捗を示す情報を受信し、
前記第１の計画部は、さらに、受信した当該第３の計画部の状態が変更したことを示す情報、または、受信した当該第３の計画部に対応する処理の進捗を示す情報に基づいて、前記所定の処理を行う、前記（１４）に記載の情報処理装置。
（１６）
前記一以上の第３の計画部は、前記第１の計画部よりも一つ下の階層に位置し、
前記一以上の第３の計画部をさらに備え、
前記一以上の第３の計画部の各々は、前記行動の計画に関する、前記所定の処理とは異なる処理を行う、前記（１４）または（１５）に記載の情報処理装置。
（１７）
前記第１の計画部は、前記一以上の前記第２の計画部の数以上の複数のサーバと、
前記所定の処理を行う処理部と、
前記一以上の前記第３の計画部の数以上の複数のクライアントと、を含み、
前記複数のサーバのうちの一以上のサーバの各々は、前記一以上の前記第２の計画部のうち、それぞれ異なる一つの前記第２の計画部に対応する状態を保持し、かつ、当該状態を変更した場合には、当該状態を変更したことを示す情報を、当該状態に対応する前記第２の計画部へ通知し、
前記複数のクライアントのうちの一以上のクライアントの各々は、前記一以上の前記第３の計画部のうち、それぞれ異なる一つの前記第３の計画部に対して、当該第３の計画部に対応する処理の実行を制御するための制御情報を通知する、前記（１６）に記載の情報処理装置。
（１８）
前記第１の計画部は、前記一以上の前記第２の計画部の各々に関して、当該第２の計画部に対応する状態を変更した場合には、当該第２の計画部に対応する状態を変更したことを示す情報をさらに記憶部に出力し、
前記記憶部に格納された前記状態を変更したことを示す情報に基づいて、前記第１の計画部を含む複数の計画部の状態の変更の履歴情報が表示部に表示される、前記（１６）または（１７）に記載の情報処理装置。
（１９）
複数の種類の所定の状態間で状態を変更しながら、行動の計画に関する所定の処理をプロセッサが行うことと、
前記状態を変更した場合には、状態を変更したことを示す情報を上位の第２の計画部へ通知することと、
を含み、
前記複数の種類の所定の状態は、複数の種類の、正常実行中であることを示す第１の状態を含む、情報処理方法。
（２０）
コンピュータを、
複数の種類の所定の状態間で状態を変更しながら、行動の計画に関する所定の処理を行う第１の計画部、
として機能させるためのプログラムであって、
前記状態を変更した場合には、前記第１の計画部は、状態を変更したことを示す情報を、前記第１の計画部よりも上位の第２の計画部へ通知し、
前記複数の種類の所定の状態は、複数の種類の、正常実行中であることを示す第１の状態を含む、プログラム。
【符号の説明】
【０１１０】
１０  ロボット
２０  端末
２２  通信網
１００  行動計画部
１０２、１０４、１０６  計画部
１５０  制御部
１６０  通信部
１６２  センサ部
１６４  記憶部
１６６  移動機構
１０４０  サーバ
１０４２  ステートマシン
１０４４  処理部
１０４６  クライアント
【図１】
2019064730.tif 000003
【図２】
2019064730.tif 000004
【図３】
2019064730.tif 000005
【図４】
2019064730.tif 000006
【図５】
2019064730.tif 000007
【図６】
2019064730.tif 000008
【図７】
2019064730.tif 000009
【図８】
2019064730.tif 000010
【図９】
2019064730.tif 000011
【図１０】
2019064730.tif 000012
【図１１】
2019064730.tif 000013
【図１２】
2019064730.tif 000014
【図１３】
2019064730.tif 000015
【図１４】
2019064730.tif 000016
【図１５】
2019064730.tif 000017
【図１６】
2019064730.tif 000018
【図１７】
2019064730.tif 000019
【図１８】
2019064730.tif 000020
【国際調査報告】
2019064730.tif 000021
2019064730.tif 000022