(57)【特許請求の範囲】
【請求項１】
開始位置の集合に配置された複数の制御対象物を所定の入口位置を含む目標位置の集合に移動させるための行動制御を行う行動制御システムであって、
第一方向に対して平行でない方向を第二方向とし、第一方向に対して反対の方向を第三方向とし、第二方向に対して反対の方向を第四方向とし、各開始位置及び各目標位置は、それぞれ前記第一方向〜第四方向の少なくとも何れかの方向において他の開始位置及び目標位置と隣接し、前記目標位置の集合及び前記開始位置の集合はそれぞれ一塊の任意の形状を成し、
前記制御対象物は、当該制御対象物の２次元平面上の第一方向において隣接する第一位置、第二方向において隣接する第二位置、第三方向において隣接する第三位置、及び、第四方向において隣接する第四位置、第一位置に第二方向において隣接する第五位置、第二位置に第三方向において隣接する第六位置、第三位置に第四方向において隣接する第七位置、及び、第四位置に第一方向において隣接する第八位置に存在する他の制御対象物と通信するための通信手段を備え、制御対象物がその制御対象物の現在の位置sにおいて各行
動aを取ったときの適切さを表す１個の価値関数に基づいて制御され、静止するか、また
は、二次元平面上の第一〜第四位置の何れかに移動するように制御されるものとし、
学習に使用するマルコフ状態空間を一台分のロボットの状態変数のみで構成し、ｐ台あるすべてのロボットは、この状態変数を引数とした１個の前記価値関数を共有するものとし、
前記価値関数は、まず、全ての位置において、制御対象物が所定の入口位置に移動した場合に高報酬値を得られるように学習し、次に、全ての開始位置の中で前記価値関数の値が最も大きい一点の位置を目指す行動の前記価値関数の値が高くなるように学習することにより得たものであり、
前記価値関数が記憶される記憶部と、
制御対象物の移動に伴って生じる、または、制御対象物の移動する方向と反対の方向に移動する仮想的な存在をボイドとし、前記価値関数を用いて、(G-1)制御対象物が目標位
置の何れかに存在する場合、その制御対象物が、前記所定の入口位置から遠い他の目標位置に移動するように制御し、(G-2)制御対象物が前記目標位置の集合に含まれない位置に
存在する場合、その制御対象物が、前記所定の入口位置に向かって移動するように制御し、(V-1)ボイドが前記目標位置の集合に含まれない位置または前記所定の入口位置に位置
する場合、そのボイドが前記所定の入口位置から遠い前記目標位置の集合に含まれない位置に移動するように制御し、(V-2)ボイドが前記所定の入口位置を除いた前記目標位置の
何れかに位置する場合、そのボイドが前記所定の入口位置に向かって移動するように制御する行動選択部を含み、
前記行動選択部は、入口位置に近い先頭制御対象物を決め、(G-1)及び（G-2）の制御により移動させることでボイドを発生させる第一制御と、前記第一制御の結果、発生したボイドを前記(V-1)及び（V-2）の制御に従う限り移動させる第二制御とを実行する、
行動制御システム。
【請求項２】
開始位置の集合に配置された複数の制御対象物を所定の入口位置を含む目標位置の集合に移動させるための行動制御を行う行動制御方法であって、
第一方向に対して平行でない方向を第二方向とし、第一方向に対して反対の方向を第三方向とし、第二方向に対して反対の方向を第四方向とし、各開始位置及び各目標位置は、それぞれ前記第一方向〜第四方向の少なくとも何れかの方向において他の開始位置及び目標位置と隣接し、前記目標位置の集合及び前記開始位置の集合はそれぞれ一塊の任意の形状を成し、
前記制御対象物は、当該制御対象物の２次元平面上の第一方向において隣接する第一位置、第二方向において隣接する第二位置、第三方向において隣接する第三位置、及び、第四方向において隣接する第四位置、第一位置に第二方向において隣接する第五位置、第二位置に第三方向において隣接する第六位置、第三位置に第四方向において隣接する第七位置、及び、第四位置に第一方向において隣接する第八位置に存在する他の制御対象物と通信するための通信手段を備え、制御対象物がその制御対象物の現在の位置sにおいて各行
動aを取ったときの適切さを表す１個の価値関数に基づいて制御され、静止するか、また
は、二次元平面上の第一〜第四位置の何れかに移動するように制御されるものとし、
学習に使用するマルコフ状態空間を一台分のロボットの状態変数のみで構成し、ｐ台あるすべてのロボットは、この状態変数を引数とした１個の前記価値関数を共有するものとし、
前記価値関数は、まず、全ての位置において、制御対象物が所定の入口位置に移動した場合に高報酬値を得られるように学習し、次に、全ての開始位置の中で前記価値関数の値が最も大きい一点の位置を目指す行動の前記価値関数の値が高くなるように学習することにより得たものであり、
行動選択部が、制御対象物の移動に伴って生じる、または、制御対象物の移動する方向と反対の方向に移動する仮想的な存在をボイドとし、前記価値関数を用いて、(G-1)制御
対象物が目標位置の何れかに存在する場合、その制御対象物が、前記所定の入口位置から遠い他の目標位置に移動するように制御し、(G-2)制御対象物が前記目標位置の集合に含
まれない位置に存在する場合、その制御対象物が、前記所定の入口位置に向かって移動するように制御し、(V-1)ボイドが前記目標位置の集合に含まれない位置または前記所定の
入口位置に位置する場合、そのボイドが前記所定の入口位置から遠い前記目標位置の集合に含まれない位置に移動するように制御し、(V-2)ボイドが前記所定の入口位置を除いた
前記目標位置の何れかに位置する場合、そのボイドが前記所定の入口位置に向かって移動するように制御する行動選択ステップを含み、
前記行動選択ステップは、入口位置に近い先頭制御対象物を決め、(G-1)及び（G-2）の制御により移動させることでボイドを発生させる第一制御と、前記第一制御の結果、発生したボイドを前記(V-1)及び（V-2）の制御に従う限り移動させる第二制御とを実行する、
行動制御方法。
【請求項３】
請求項１の行動制御システムとしてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の制御対象物の行動を制御する技術に関する。例えば、複数のロボットを、開始位置における隊列形成状態から協調して移動させ、障害物を回避させ、目標位置で隊列形成をさせるための各ロボットの行動計画を求めるロボット協調制御技術に関する。
【背景技術】
【０００２】
近年、多数の自律移動ロボットを効率的に制御にするための研究が活発に行われている。その任務内容は、人の入れない箇所の監視、物品の搬送などさまざまであるが、多数のロボットの協調動作による隊列形成を効率的に行わせるための技術が求められており盛んに研究が行われている（例えば、非特許文献１参照）。多数のロボットによる効率的な隊列形成を実現するには、それぞれのロボットの配置、動作順序などを事前に計画することが重要である。このような計画においては、当然ながら、複数のロボットが動作する実環境における障害物の存在や経路の形状なども十分に考慮しなければならない。
【０００３】
このような計画計算を行うための効果的な手法の一つとして、マルコフ決定過程における動的計画法や強化学習の手法があり、さまざまな研究が行われている（例えば、非特許文献２参照）。
【０００４】
また、ロボットの隊列制御の中でも、ロボット同士が互いに接したままの状態で、アメーバのように全体で移動を行うという仮定の下でのロボット隊列制御においては、ロボット同士の相対的な位置関係から、各ロボットの絶対位値の決定が可能であるという利点と、付加的な位置計測用の装備を必要としないという利点があり、そのようなロボットの研究もおこなわれている。例えば、非特許文献３に示すものでは任意の矩形形状隊列から他の矩形形状隊列までの隊列制御が示されている。
【０００５】
また、非特許文献４に示す研究に至る一連の研究や非特許文献５では、ある隊列から他の隊列に変化する隊列制御が示されている。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】M.Shimizu, A.Ishiguro, T.Kawakatsu, Y.Masubuchi, “Coherent Swarming from Local Interaction by Exploiting Molecular Dynamics and Stokesian Dynamics Methods”, Proceeaings of the 2003 IEE/RSJ International Conference on intelligent Robots and Systems, Las Veqas, pp.1614-1619, October 2003.
【非特許文献２】Y.Wang, C.W.de Silva, “Multi-Robot Box-pushing: Single-Agent Q-Learning vs. Team Q-Learning”, Proceedings of the 2006 IEEE/RSJ International Conference on Intelligent Robots and Systems, Beijing, China, pp.3694-3699, October 2006.
【非特許文献３】A.Becker, G.Habibi, J.Werfel, M.Rubenstein, and J.McLurkin, “Massive Uniform Manipulation: Controlling Large Populations of Simple Robots with a Common Input Signal”, Proceedings of the IEEE/RSJ International Conference on Intelligent Robots and Systems, Japan, pp.520-527, November, 2013.
【非特許文献４】Stanton Wong1 and Jennifer Walter ”Deterministic Distributed Algorithm for Self-Reconfiguration of Modular Robots from Arbitrary to Straight Chain Configurations”, Proceedings of the 2013 IEEE International Conference on Robotics and Automation (ICRA), Karlsruhe, Germany, pp.537-543, May 6-10, 2013.
【非特許文献５】Michael Rubenstein, Alejandro Cornejo, Radhika Nagpal, “Programmable self-assembly in a thousand-robot swarm”, SCIENCE, 2014, Vol. 345, Issue 6198, pp.795-799.
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、非特許文献１の手法では、流体力学的な特性をロボット動作に組み込む手法を用いて群ロボットの動作を制御しており、低い計算負荷での制御を可能にしている利点があるが、任意の形状の隊列形成をすることができるとは限らない。
【０００８】
また、非特許文献２の手法のように、マルコフ決定過程における動的計画法や強化学習を使用してこのような計画を行おうとすると、単体のロボットを使用する場合に比べて複数のロボットを使用する場合には、その計算に要する時間や計算機の記憶容量がロボットの数に対して指数関数的に増大してしまう。その主たる原因となるのが、探索計算のためのマルコフ状態空間内の状態数の莫大な増加である。非特許文献２では、検証された強化学習の手法では、ロボット数の増加に伴い、指数関数的に計算負荷が増加するという、マルコフ状態空間内の爆発問題への解決策は示されていない。
【０００９】
また、非特許文献１，２の手法ともに、付加的な位置計測用の装備を必要とする。
【００１０】
また、非特許文献３では、ロボットが接したままの状態を維持するという条件を考慮して、付加的な位置計測用の装備を必要としないが、その実現には障害物の存在を必要としており、動作計画に必要な計算量が、ロボットの台数の２乗に比例してしまい、ロボットの台数の増加とともに急激に上昇する。
【００１１】
非特許文献４の手法においては、一度、線形隊列への変換をしなければならず、可能な隊列形成動作そのものへの制約が大きい。
【００１２】
非特許文献５の手法においては、開始隊列と目標隊列が共有する点がなければならないことや、障害物を考慮していないなどの問題点がある。
【００１３】
このような現状に鑑みて、本発明では、多数のロボットの存在を考慮しつつも、計画計算に必要な計算時間や計算機の記憶容量を一台のロボットを扱うときと同様に少ないものに低減可能で、かつ、ロボット同士が接したままの状態を維持しつつ任意の開始位置における隊列形成状態から、他の任意の目標位置における隊列形成状態へ障害物のある環境にて変形動作を行うことを可能とする、ロボット協調隊列形成技術を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上記の課題を解決するために、本発明の一態様によれば、行動制御システムは、開始位置の集合に配置された複数の制御対象物を所定の入口位置を含む目標位置の集合に移動させるための行動制御を行う。行動制御システムは、第一方向に対して平行でない方向を第二方向とし、第一方向に対して反対の方向を第三方向とし、第二方向に対して反対の方向を第四方向とし、各開始位置及び各目標位置は、それぞれ第一方向〜第四方向の少なくとも何れかの方向において他の開始位置及び目標位置と隣接し、目標位置の集合及び開始位置の集合はそれぞれ一塊の任意の形状を成し、制御対象物は、当該制御対象物の２次元平面上の第一方向において隣接する第一位置、第二方向において隣接する第二位置、第三方向において隣接する第三位置、及び、第四方向において隣接する第四位置、第一位置に第二方向において隣接する第五位置、第二位置に第三方向において隣接する第六位置、第三位置に第四方向において隣接する第七位置、及び、第四位置に第一方向において隣接する第八位置に存在する他の制御対象物と通信するための通信手段を備え、制御対象物がその制御対象物の現在の位置sにおいて各行動aを取ったときの適切さを表す１個の価値関数に基づいて制御され、静止するか、または、二次元平面上の第一〜第四位置の何れかに移動するように制御されるものとし、価値関数が記憶される記憶部と、制御対象物の移動に伴って生じる、または、制御対象物の移動する方向と反対の方向に移動する仮想的な存在をボイドとし、価値関数を用いて、(G-1)制御対象物が目標位置の何れかに存在する場合、その制御対象物が、所定の入口位置から遠い他の目標位置に移動するように制御し、(G-2)制御対象物が目標位置の集合に含まれない位置に存在する場合、その制御対象物が、所定の入口位置に向かって移動するように制御し、(V-1)ボイドが目標位置の集合に含まれない位置または所定の入口位置に位置する場合、そのボイドが所定の入口位置から遠い目標位置の集合に含まれない位置に移動するように制御し、(V-2)ボイドが所定の入口位置を除いた目標位置の何れかに位置する場合、そのボイドが所定の入口位置に向かって移動するように制御する行動選択部を含む。行動選択部は、入口位置に近い先頭制御対象物を決め、(G-1)及び（G-2）の制御により移動させることでボイドを発生させる第一制御と、第一制御の結果、発生したボイドを(V-1)及び（V-2）の制御に従う限り移動させる第二制御とを実行する。
【００１５】
上記の課題を解決するために、本発明の他の態様によれば、行動制御方法は、開始位置の集合に配置された複数の制御対象物を所定の入口位置を含む目標位置の集合に移動させるための行動制御を行う。行動制御方法は、第一方向に対して平行でない方向を第二方向とし、第一方向に対して反対の方向を第三方向とし、第二方向に対して反対の方向を第四方向とし、各開始位置及び各目標位置は、それぞれ第一方向〜第四方向の少なくとも何れかの方向において他の開始位置及び目標位置と隣接し、目標位置の集合及び開始位置の集合はそれぞれ一塊の任意の形状を成し、制御対象物は、当該制御対象物の２次元平面上の第一方向において隣接する第一位置、第二方向において隣接する第二位置、第三方向において隣接する第三位置、及び、第四方向において隣接する第四位置、第一位置に第二方向において隣接する第五位置、第二位置に第三方向において隣接する第六位置、第三位置に第四方向において隣接する第七位置、及び、第四位置に第一方向において隣接する第八位置に存在する他の制御対象物と通信するための通信手段を備え、制御対象物がその制御対象物の現在の位置sにおいて各行動aを取ったときの適切さを表す１個の価値関数に基づいて制御され、静止するか、または、二次元平面上の第一〜第四位置の何れかに移動するように制御されるものとし、行動選択部が、制御対象物の移動に伴って生じる、または、制御対象物の移動する方向と反対の方向に移動する仮想的な存在をボイドとし、価値関数を用いて、(G-1)制御対象物が目標位置の何れかに存在する場合、その制御対象物が、所定の入口位置から遠い他の目標位置に移動するように制御し、(G-2)制御対象物が目標位置の集合に含まれない位置に存在する場合、その制御対象物が、所定の入口位置に向かって移動するように制御し、(V-1)ボイドが目標位置の集合に含まれない位置または所定の入口位置に位置する場合、そのボイドが所定の入口位置から遠い目標位置の集合に含まれない位置に移動するように制御し、(V-2)ボイドが所定の入口位置を除いた目標位置の何れかに位置する場合、そのボイドが所定の入口位置に向かって移動するように制御する行動選択ステップを含む。行動選択ステップは、入口位置に近い先頭制御対象物を決め、(G-1)及び（G-2）の制御により移動させることでボイドを発生させる第一制御と、第一制御の結果、発生したボイドを(V-1)及び（V-2）の制御に従う限り移動させる第二制御とを実行する。
【発明の効果】
【００１６】
本発明に拠れば、詳しくは後述するが、一台のロボットに必要な分だけのマルコフ状態空間を用意し、それを用いて動的計画法を利用して各位置でのロボットの行動方策を計算し、その行動方策を利用することで、ロボットに任意の隊列形状と、任務環境内の任意の障害物形状に対応した、ロボット同士が接した状態を維持したうえでの多数ロボットのための隊列形成アルゴリズムを獲得することができる。すなわち、ロボット数に依存せずにロボット一台分の計画計算負荷での自己位置座標定義型隊列形成アルゴリズム獲得ができる。
【図面の簡単な説明】
【００１７】
【図１】多数のロボットが協調して開始位置における隊列形成状態から移動を行い、目標位置での隊列形成を行う任務を説明するための図。
【図２】伸縮型ロボットの移動を説明するための図。
【図３】不変型ロボットの移動を説明するための図。
【図４】開始位置からのルートが二つ以上考えられる場合のQ関数の計算を説明するための図。
【図５】多数の伸縮型ロボットが協調して開始位置における隊列形成状態から移動を行い、目標位置での隊列形成を行う任務を説明するための図。
【図６】多数の伸縮型ロボットが協調して開始位置における隊列形成状態から移動を行い、目標位置での隊列形成を行う任務を説明するための図。
【図７】多数の伸縮型ロボットが協調して開始位置における隊列形成状態から移動を行い、目標位置での隊列形成を行う任務を説明するための図。
【図８】多数の伸縮型ロボットが協調して開始位置における隊列形成状態から移動を行い、目標位置での隊列形成を行う任務を説明するための図。
【図９】多数の伸縮型ロボットが協調して開始位置における隊列形成状態から移動を行い、目標位置での隊列形成を行う任務を説明するための図。
【図１０】多数のロボットが価値関数Q(s,a)を利用して隊列移動する方法を説明するための図。
【図１１】伸縮型ロボットのみを制御する場合の第一制御を説明するための処理フローの例を示す図。
【図１２】伸縮型ロボットのみを制御する場合の第二制御を説明するための処理フローの例を示す図。
【図１３】多数の不変型ロボットが協調して開始位置における隊列形成状態から移動を行い、目標位置での隊列形成を行う任務を説明するための図。
【図１４】多数の不変型ロボットが協調して開始位置における隊列形成状態から移動を行い、目標位置での隊列形成を行う任務を説明するための図。
【図１５】多数の不変型ロボットが協調して開始位置における隊列形成状態から移動を行い、目標位置での隊列形成を行う任務を説明するための図。
【図１６】多数の不変型ロボットが協調して開始位置における隊列形成状態から移動を行い、目標位置での隊列形成を行う任務を説明するための図。
【図１７】不変型ロボットのみを制御する場合、及び、伸縮型ロボットと不変型ロボットとが混在するときに制御する場合の第一制御を説明するための処理フローの例を示す図。
【図１８】不変型ロボットのみを制御する場合、及び、伸縮型ロボットと不変型ロボットとが混在するときに制御する場合の第二制御を説明するための処理フローの例を示す図。
【図１９】第一実施形態に係る行動制御システムの機能ブロック図。
【図２０】第一実施形態に係る行動制御システムの処理フローの例を示す図。
【図２１】図２１Ａは不変型ロボット及び収縮状態の伸縮型ロボットの隣接する通信可能な位置を示す図、図２１Ｂは伸長状態の伸縮型ロボットの隣接する通信可能な位置を示す図。
【図２２】各格子が菱形での場合の例を示す図。
【発明を実施するための形態】
【００１８】
以下、本発明の実施形態について説明する。なお、以下の説明に用いる図面では、同じ機能を持つ構成部や同じ処理を行うステップには同一の符号を記し、重複説明を省略する。
【００１９】
＜第一実施形態＞
［理論的背景］
まず、行動制御システム及び方法の理論的背景について説明する。以下、行動制御の対象である制御対象物が、ロボットである場合を例に挙げて説明するが、制御対象物は、制御の対象となり得るものであれば、ロボット以外であってもよい。
【００２０】
多数のロボットが協調して開始位置における隊列形成状態から移動を行い、目標位置での隊列形成を行う任務は、例えば図１に例示するような壁で区切られた部屋においての開始位置から目標位置まで複数のロボットの移動によって実現するものである。
【００２１】
図１において、Rが記載された格子はロボットが存在する位置を示し、Oが記載された格子は障害物が存在する位置を示す。また、太線の破線で囲まれた領域は開始位置の集合を示し、太線の一点鎖線で囲まれた領域は目標位置の集合Gで表される領域（以下、この領域のことを「目標隊列エリアG」ともいう）を示し、太線の実線で囲まれた領域は後述する目標隊列エリアGの入口位置Peを示す。このように、各開始位置及び各目標位置は、それぞれ上下左右方向の少なくとも何れかの方向において他の開始位置及び目標位置と隣接し、ロボットの開始位置及び目標位置での隊列形状はそれぞれ一塊の任意の形状である。
【００２２】
任務を行うロボットは、p台（pは2以上の整数であり、例えばp≧50）であり、各ロボットは、二次元平面におけるX軸方向及びY軸方向のそれぞれに移動可能とする。すなわち、この例では、各ロボットは、図１の紙面に対して上下左右の四方向に移動可能とする。ただし、各ロボットは、少なくとも1つの他のロボットと隣接し、p台のロボットで１つの群れを成すものとする。ここで、あるロボットと他のロボットが隣接するとは、あるロボットと他のロボットとが、一辺もしくは一つの頂点を共有することを意味する。
【００２３】
なお、p個のロボットのうちq個（qを0以上p以下の整数の何れかとする）のロボットを伸縮型ロボットとし、p個のロボットのうち(p-q)個のロボットを不変型ロボットとする。つまり、q=0のとき不変型ロボットのみとなり、q=pのとき伸縮型ロボットのみとなり、qが1以上p未満の整数の何れかのとき、不変型ロボットと伸縮型ロボットとの混在となる。
【００２４】
伸縮型ロボットは、例えば正方形型のロボットであり、図２に示すように、進行方向に平行な２辺の長さを、ロボットの一辺の長さ分だけ伸長させて後、伸長させた辺をもとの長さに収縮させることで、1セル分の移動を行うというものを想定する。言い換えると、伸縮型ロボットは、図２に示すように、１つの位置のみを占有する収縮状態と上下左右方向の何れかの方向において隣接する２つの位置を占有する伸長状態とを備える。ある位置のみを占有する収縮状態から、ある位置と他の位置とを占有する伸長状態に変形し、他の位置のみを占有する収縮状態に変形することで、ある位置から他の位置へ移動する。伸縮型ロボットは、１回の行動制御により、静止するか、または、収縮状態から伸長状態への変形若しくは伸長状態から収縮状態への変形を行う。
【００２５】
一方、不変型ロボットは、図３に示すように、変形せず、１つの位置のみを占有し、１回の行動制御により、静止するか、または、上下左右方向の隣接する位置の何れかに移動するように制御される。
【００２６】
図１の各格子にはロボットは一台しか存在することができない。それぞれのロボットは、移動しようとする方向に障害物か他のロボットがある場合には、静止をするものと仮定する。ただし、他のロボットが移動した結果、その格子が空く場合には、その格子に移動できるものとする。
【００２７】
何れのロボットもロボットの周囲のマス(不変型ロボット及び伸縮型ロボットの収縮状態の場合、周囲のマスは8マス、伸縮型ロボットの伸長状態の場合、周囲のマスは10マス)のうち一つに他のロボットが存在している状態を維持しながら移動をするものとする。また、何れのロボットもロボットの周囲のマスに存在する他のロボットと通信できるものとする。この手法では１つのロボット自身が、その移動量を正確に測ることができるというメリットがあり、また、１つの辺や頂点を共有する隣り合うロボットとの相対的な位置を計測しあうことで、ロボットの群れ全体の中での各ロボットの位置も容易に知ることができる。例えば、複数のロボットを連結して、先頭のロボットから、伸長と収縮を伝播させていくことで、全体としての移動を行っていくことが可能である。
【００２８】
図１に示すように、ロボットの開始位置と目標位置での隊列形状は連続な任意形状である。言い換えると、各開始位置及び各目標位置は、それぞれ上下左右方向の少なくとも何れかの方向において他の開始位置及び目標位置と隣接し、目標位置全体及び開始位置全体がそれぞれ一塊の任意の形状である。
【００２９】
それぞれのロボットi（iはロボット番号を表し、i=0,1,2,…,p-1とする）の初期位置を（Xr0[i],Yr0[i]）とし、目標位置を（Xre[i],Yre[i]）とするとき、初期位置に配置されたロボットが、目標位置まで移動するための行動計画を求める問題を考える。なお、目標位置（Xre[i],Yre[i]）の集合をGとする。
【００３０】
このような問題に対して単純にマルコフ状態遷移モデルを適用しようとする場合、マルコフ状態空間は、ロボットiの位置（Xr[i],Yr[i]）、ロボットiの行動a[i]によって構成される。各状態（ロボットの位置と行動）は離散値で表現される。部屋をX,Yの直交座標系からなる２次元平面で表すと、X軸、Y軸をそれぞれ離散化表現した値により各位置を表現する。つまり、図１のように部屋（２次元平面）は格子で区切られ、各格子が各位置に対応する。また、各格子において、障害物の「ある／なし」が予め設定されている。
【００３１】
また、この例では、制御対象物である行動主体は部屋に配置されている各ロボットとなる。ロボットiの行動a[i]∈D[i]は、静止、上下左右方向への１格子分の移動の計５種類のうちの何れかを取る。すなわち、D[ｉ]∈{0,1,2,3,4}として、各行動は例えば以下のように定義される。
0: 静止
1: 二次元平面上で右方向に１格子だけ移動する
2: 二次元平面上で上方向に１格子だけ移動する
3: 二次元平面上で左方向に１格子だけ移動する
4: 二次元平面上で下方向に１格子だけ移動する
【００３２】
このような任務環境におけるマルコフ状態空間は、ロボット数×２の次元数の状態を持ち、かつ選択可能な行動数は、ロボットの行動（＝５通り）のロボット数乗だけ存在する。例えば、ロボット数が５０で、部屋の縦横方向の格子数がそれぞれ２０であるとすれば状態数は２０の100乗個にもなり、探索計算に要する資源の量は膨大なものとなる。さらにロボット数が１台増えるごとに、その状態数は400倍増加していくことになり、ロボット同士が接しているという拘束条件を取り入れても、根本的な計算量の削減は難しく、複数ロボットを使用する場合の大きな問題となっている。
【００３３】
そこで、この実施形態では、このような状態空間の爆発をさけるために、学習に使用するマルコフ状態空間を、一台分のロボットの状態変数のみで構成することにする。すなわち、状態変数及び行動変数を以下のように定義する。
【００３４】
状態変数s=（Xr,Yr），行動変数a∈{0,1,2,3,4}
p台あるすべてのロボットは、この状態変数を引数とした１個の価値関数Q(s,a)を共有し、行動決定を行う。
【００３５】
なお、価値関数Q（s,ａ）の計算は、例えば、動的計画法を使用して、任務の事前に行うものとする。まず、各ロボットの目標位置をここに厳密に割り振ることをせず、目標位置全体の集合を、目標隊列エリアGと定義する。すなわち、
（Xre[i],Yre[i]）∈G  …(3)
として、各ロボットはG内の全ての全ての位置を自由に目標位置とすることができるものとする。つまり、Gをちょうど流体を注ぐ器のようなものとして扱い、その入口位置をPeとする。すなわち、各ロボットは、Gの境界上に一点だけ設定された入口位置PeからGに入ることが可能であり、一度G内に入ったロボットは、Gを出る行動をとることができないものとする。本実施形態では、Gで構成される一塊の任意の形状（星形）の開始位置に近い１点を選んで入口位置Peとし、入口位置Peにロボットが移動した場合において、高報酬値が与えられ、その他は低報酬が与えられる。入口位置Peの位置はGの内部であって、Gで構成される一塊の任意の形状のいずれかの１点であればどこでも構わないが、ロボットの開始位置から近い位置を選ぶのがロボットの動作をスムーズにするうえで効果的である。
【００３６】
（Q関数の計算について）
Q関数を計算するために必要なマルコフ状態空間での状態遷移確率と報酬値の設定は、行動aにより、状態(位置)がsからs'に移動したとして、その遷移確率P及び報酬Rとすると、例えば、遷移確率P(s'|s,a)(状態sから行動aにより状態s'に遷移する確率)を以下のように設定する。
(1)sが障害物でなく、s'が行動aの行先のセルのとき、
P(s'|s,a)←1
(2)sが障害物でなく、s'が行動aの行先のセルでないとき、
P(s'|s,a)←0
(3)sが障害物のときで、s'＝sのとき、
P(s'|s,a)←1
(4)sが障害物のときで、s'＝sではないとき、
P(s'|s,a)←0
また、報酬R(s',s,a) (状態sから行動aにより状態s'に遷移したときの報酬)を以下のように設定する。
(1)If  s'=Pe then R(s',s,a) ← r_plus 
(状態s'と入口位置とが一致するとき、その報酬R(s',s,a)をr_plusとする。)
(2)Else  If  sがG内かつs'がG外  then R(s',s,a) ← -r_minus
(つまり、(1)の条件を満たさない場合であって、目標位置の集合内からその外に出ようとするとき、その報酬R(s',s,a)を-r_minusとする。)
(3)Else  If  sがG外かつs'がG内でかつs'=PeでないthenR(s',s,a)=-r_minus
（つまり、(1)及び(2)の条件を満たさない場合であって、入口位置Pe以外の位置から目標位置の集合内に入ろうとするとき、その報酬R(s',s,a)を-r_minusとする。）
(4)Else R(s',s,a)=0
ここで、r_minusとr_plusとはともに正値とし、r_minus > 10 × r_plusとするのが望ましい。なお、ロボットが障害物には入れず、また、入口位置Pe以外からGに入れず、G内から出られないという条件が記述できていれば、遷移確率と報酬の設定方法はこの限りではない。
【００３７】
このようにして、Q関数を、全ての位置において、制御対象物が所定の入口位置Peに移動した場合に高報酬値を得られるように学習する。
【００３８】
(開始位置からロボット群がたどるルートが二つ以上考えられる場合のQ関数の計算)
複数の開始位置から入口位置Peまでの最短経路を考えたとき、複数の開始位置の設定や、障害物の配置によっては、ロボット群のたどる最短経路が２つ以上になる可能性がある。例えば、図４の場合、ロボットＡにとっての最短経路はＲＡであるが、ロボットＢにとっての最短経路はＲＢである。この場合、１つのQ関数により全てのロボットの経路を決定すると、１つの群れを成さず、分裂する可能性がある。そうすると、p台のロボットで１つの群れを成すという前提が崩れ、自己位置座標を取得することが困難になる場合が生ずる。そこで、ロボット動作の開始前の動作計画において、以下のように、Q関数を学習することが有効である。
(1)まず、前述の方法により、全ての位置について動的計画法による探索計算を行い、各位置のQ関数の値を求める。
(2)続いて、開始位置の集合のみを対象として動的計画法による探索計算を行う。その際に、(1)の結果、計算されたQ関数の値において、開始位置の集合の中で、その位置での全行動の中でのQ値の最大値（Qmax_start(s)とする。）が、最大となる位置のQ関数の値は固定とし、その値の更新は行わないものとする。例えば、図４の場合、開始位置の集合に属する各位置におけるQmax_startの値の中で、ロボットＡの開始位置PAに対するQmax_startの値が最も大きい場合、位置PAに対するQ関数の値を固定とし、その値の更新は行わない。さらに、遷移確率Pとして、行動aによって、位置PAを経由せずに開始位置の外に出てしまう行動を禁止する。例えば、遷移確率P(s'|s,a)を以下のように設定する。
(A-1)sが障害物でなく、s'が行動aの行先のセルで、s'が開始位置の集合に含まれるとき、
P(s'|s,a)←1
(A-2)sが障害物でなく、s'が行動aの行先のセルで、s'が開始位置の集合に含まれない（開始隊列の外の）とき、
P(s'|s,a)←0
(A-3)sが障害物でなく、s'が行動aの行先のセルでなく、ｓ'が開始位置の集合に含まれるとき、
P(s'|s,a)←0
(A-4)ｓが障害物でなく、s'が行動aの行先のセルでなく、s'が開始隊列の集合に含まれないとき、
s'=sならば、P(s'|s,a)←1
そうでなければ、P(s'|s,a)←0
(A-5)sが障害物のときで、s'=sのとき、
P(s'|s,a)←1
(A-6)sが障害物のときで、s'=sではないとき、
P(s'|s,a)←0
【００３９】
複数の開始位置の設定や障害物の配置によっては、動的計算法によって計算される行動方策に従って、拘束なしに自由に行動するロボットの群れが二つ以上の群れに分かれてしまうような場合がある。そのような場合は、隣接するロボット同士の接続を保ちたい場合に不都合であり、それを解消するために以上に述べたような探索計算を行う。すなわち、開始位置の集合の内で最もQmax_startの値が高い位置を全てのロボットが目指すように行動方策を決定し、開始位置の外にロボットが出るのは、開始位置内で最もQmax_startの値の高い位置を経由してのみとなるように設定する。言い換えると、最終的に得られる価値関数Qは、全ての開始位置の中で(1)で学習したQmax_startの値が最も大きい一点の位置を目指す行動の価値関数の値が高くなるように（さらに、言い換えると、その位置を経由して、ロボットが、開始隊列の内から開始位置の外に移動するように、）学習して得られる。
【００４０】
（行動選択の方法と２つのポリシーについて）
通常は、各状態sにあるロボットが、価値関数Q（s,a）を使用して行動選択を行う場合は、各状態sにおいて、Q関数の値を最大にする行動aを選択する。しかし、以上に提示した条件設定で、Q関数を計算した場合、目標隊列エリアGの外にいるロボットも目標隊列エリアGの内にいるロボットもともに、入口位置Peを目指して移動することになる。そこで、以下のルールにより行動選択を行うものとする。この行動方策を行動方策Policy_Gとする。
【００４１】
（行動方策Policy_G）
(1)ｓがG内のとき、ロボットは、他のロボットの位置や障害物位置に移動しない行動であって、かつ、G外に出ていかない行動であり、かつ、Q(s,a)<Q(s,0)を満たす行動aの中でQ(s,a)を最小化する行動を選択する。そのような行動がない場合は行動a=0（静止）を選択する。
(2)ｓがG外のとき、ロボットは、、他のロボットの位置や障害物位置に移動しない行動であって、かつ、Q(s,a)>Q(s,0)を満たす行動aの中でQ(s,a)を最大化する行動を選択する。そのような行動がない場合は行動a=0（静止）を選択する。
【００４２】
このようにすることで、(1)により、一度、G内に入ったロボットは入口位置Peからなるべく離れた（遠い他の）G内の位置に移動する。一方、(2)により、G外のロボットは、入口位置Peに向かって移動し、入口位置PeよりG内に入ろうとする行動をとるようにできる。また、他のロボットや障害物との衝突も避けることができる。
【００４３】
（行動方策Policy_V）
また、ボイドの位置を制御するという概念を使用する。ここでいうボイドとは、あるロボットが別の位置に移動した後に、元いた位置にできる空隙のことである。なお、伸縮型ロボットがある位置のみを占有する収縮状態から伸長し、もともと占有していた位置と他の位置とを占有する伸長状態に変形したときに、もともと占有していた位置にボイドが生じる、または、もともと占有していた位置にボイドが移動するものとする（図２参照）。一方、不変型ロボットがある位置から他の位置へ移動するときに、ある位置にボイドが生じる、または、移動するものとする（図３参照）。このボイドの動きを制御することで、１つの群れを維持する。後に説明するボイドの制御のための行動方策Policy_Vは、
(3)ｓがG外であるか、入口位置Peであるとき、ボイドは、移動先が他のロボットの位置に重なる位置となる行動であって、かつ、G内に入っていかない行動であって、かつ、Q(s,a)<Q(s,0)を満たす行動aの中でQ(s,a)を最小化する行動を選択する。そのような行動がない場合は行動a=0（静止）を選択する。このような選択をすることで、ボイドが入口位置Peから遠い目標位置の集合に含まれない位置に移動するように制御される。
(4)ｓがG内でかつ入口位置Peでないとき、ボイドは、移動先が他のロボットの位置に重なる位置となる行動であって、かつ、Q(s,a)>Q(s,0)を満たす行動aの中でQ(s,a)を最大化する行動を選択する。そのような行動がない場合は行動a=0（静止）を選択する。このような選択をすることで、ボイドが入口位置Peに向かって移動するように制御される。
【００４４】
(拘束条件)
本実施形態において、ロボットは各々のロボット同士の相対位置関係から、各々の絶対位置を計測することができ、また隣の位置に他のロボットが存在しているか否か、障害物があるか否か、そして、自身が目標位置上にいるかどうかを知ることができるものとする。これを実現するための拘束条件は制御対象となるロボットの構成により異なるため、以下、それぞれ説明する。
【００４５】
(伸縮型ロボットのみの制御する場合の拘束条件)
伸縮型ロボットのみの制御する場合の位置関係と移動に関する拘束条件は、各ロボットの周囲の格子(伸長状態の場合、周囲の10マス、収縮状態の場合周囲の8マス)のいずれかに他のロボットが存在し、ロボット全体で一つの集合をなすという拘束条件を満たさなければならないことである。この拘束条件を維持しつつ目標位置での隊列形成を行う動作の例を図５〜図９に示す。以下、この条件を維持しながらの、価値関数Q(s,a)を利用した隊列移動の方法について、図１０〜図１２を用いて説明する。
【００４６】
全てのロボットを開始位置の集合に含まれる位置(開始隊列位置ともいう)に置き、先頭移動フラグflg←0とする（ｓ１）。
【００４７】
先頭移動フラグflgの値を判定する（ｓ３）。先頭移動フラグは、入口位置に近いロボット（以下「先頭ロボット」ともいう）を移動させるか否かを表す情報であり、flg=0のとき、先頭ロボットを移動させる制御（以下、この処理を「第一制御」ともいう）（ｓ５）、を行う。flg=1のとき、先頭ロボット以外のロボットを移動させる制御（以下、この処理を二「第二制御」ともいう）（ｓ６）を行う。なお、第一制御は先頭ロボットを決め、行動方策Policy_Gにより移動させることでボイドを発生させる制御ともいえ、第二制御は第一制御の結果、発生したボイドを行動方策Policy_Vに従う限り移動させる制御とも言える。
【００４８】
第一制御の詳細を説明する。第一制御では、まず、ロボットの順位付け、先頭ロボットの選択、ボイドの発生（設定）、行動方針Policy_Gにより先頭ロボットの行動選択を行う（ｓ５１）。
【００４９】
例えばｓ５１では、以下のようにしてロボットの順位付けを行う。
(1)G内の各ロボットiについて、ロボットiの位置sにおける全行動aの中でのQ(s,a)の最小値Qmin(i)を計算する。
(2)G内の各ロボットiについて、Qmin(i)の値が小さい順に順位付けを行う。
(3)G外の各ロボットiについて、ロボットiの位置sにおける全行動aの中でのQ(s,a)の最大値Qmax(i)を計算する。
(4)G外の各ロボットiについて、Qmax(i)の値が大きい順に順位付けを行う。
(5)G外の各ロボットiの順位値にG内にあるロボット数を加算する。
【００５０】
次に、例えば以下のようにして先頭ロボットを選択する。行動方策Policy_Gにより、a=0（静止）以外の行動を選択するロボットのうち、上述の順位付けで求めた順位の最も高いロボットを選択し、i_selectとする。
【００５１】
次に、例えば以下のようにしてボイドの発生（設定）を行う。ロボットi_selectの位置を現在のボイドの位置（void_x,void_y）として設定する。
【００５２】
その後、行動方策Policy_Gによりロボットi_selectの行動選択を行う（ｓ５１ここまで）。
【００５３】
第一制御の続いての処理では、先頭移動フラグflgを更新し、flg←1とし、行動方策Policy_Gにより選択された行動に基づき選択したロボットi_selectを移動させる（ｓ５６）。ロボットi_selectを収縮状態から伸長状態に変形させる。
【００５４】
次に、第二制御（ｓ６）について説明する。
【００５５】
第二制御では、ロボットi_selectを伸長状態から収縮状態に変形させると同時に、現在のボイド位置に後続のロボットを伸長移動させる。そのために、以下の処理ｓ６１〜ｓ６４を行う。現在のボイド位置（void_x,void_y）をｓとしたとき、行動方策Policy_Vによりボイドの行動を選択する（ｓ６１）。選択された行動a_voidが移動する（a_void≠0）か否かを判定する（ｓ６２）。a_void≠0の場合、行動方策Policy_Vによりボイドを移動させ、移動先の位置にあるロボットを選択し、そのロボットをロボットi_select2とする。ロボットi_select2の行動を、行動a_voidとは逆方向に移動するものと決定する（ｓ６３）。ロボットi_select2を収縮状態から伸長状態に変形させると同時にロボットi_selectを同時に収縮させる。続いて、i_selectをi_select2に置き換える（i_select←i_select2）。a_void=0の場合(ボイドが静止する場合)、flg←0とする（ｓ６４）。
【００５６】
移動後の位置に基づき、全てのロボットの位置の情報を更新する（ｓ８）。
【００５７】
全てのロボットがG内に入ったか否かを判定し（ｓ９）、入った場合には行動制御処理を終了する。入っていないロボットがある場合には、ｓ３〜ｓ９の処理を繰り返す。なお、全てのロボットがG内に入った状態とは、伸長状態のロボットの一部がG内に入っている状態ではなく、収縮状態のロボットがG内に入っている状態を意味する。
【００５８】
以上の方法により実現される動作を説明する。まず開始隊列形態にあるロボットのうち、もっとも入口位置Peに近いロボットが隊列の中から選択され、入口位置Peに向かって１ステップ移動する（第一制御）。そのあとの時間ステップにおいては、前のステップでできたボイドの位置を埋めるように後続のロボットが一ステップずつ移動していく。それをボイドがこれ以上Q関数の値の低い位置に移動不可能になるまで繰り返す（第二制御）。ボイドが移動不可能になったら、また、もっとも入口位置Peに近いロボットが隊列の中から選択される（第一制御）。第一制御と第二制御を繰り返していくうちに、いつしか、先頭のロボットが入口位置Peに到達して、G内に入る。そのあとは、今度は先頭のロボットは、G内においてもっともQ関数の値の低い位置を目指して移動を続け、後続のロボットは引き続き、先頭のロボットの作ったボイドを埋めるように移動していく。
【００５９】
以上のような動作で、ロボットの群れが目標隊列に近づいていく。
【００６０】
(不変型ロボットのみの制御する場合の拘束条件)
つづいて、不変型ロボットのみの制御する場合の拘束条件について説明する。この場合、ロボットは、自分が移動する方向と逆方向の向きで接している他のロボットをできるだけ多く引き連れて移動を行う。
【００６１】
この場合は、各ロボットの周囲の８つの格子のいずれかに他のロボットが存在し、ロボット全体で一つの集合をなすという拘束条件を満たさなければならない。この拘束条件を維持しつつ目標位置での隊列形成を行う動作の例を図１３〜図１６に示す。以下、この条件を維持しながらの、価値関数Q(s,a)を利用した隊列移動の方法について、伸縮型ロボットのみの制御する場合と、第一制御及び第二制御の処理内容が主に異なるため、この部分を中心に図１７、図１８を用いて説明する。
【００６２】
第一制御では、まず、ロボットの順位付け、先頭ロボットの選択、ボイドの発生（設定）、行動方針Policy_Gにより先頭ロボットの行動選択を行う（ｓ５１）。このｓ５１に関しては伸縮型ロボットのみの制御する場合と同様である。ただし不変型ロボットを使用するこの場合においては以下の処理ｓ５１１をｓ５１に続いて行う。
【００６３】
変数Ir←0とし、第一制御にて一度に動かすロボットの番号を格納する配列をi_select_moveとする。ｓ５１で選択されたロボットi_selectをi_select_move[Ir]とし、ロボットi_select_move[Ir]の選択する行動をロボットi_selectの選択した行動と同じとし、a_selectとする（ｓ５１１）。
【００６４】
続いて、現在のボイド位置（void_x,void_y）をｓとしたときの行動方策Policy_Vによりボイドの行動を選択する（ｓ５３）。選択された行動a_voidが、行動a_selectとはちょうど逆向きの行動であるかどうかの判定を行う（ｓ５４）。
【００６５】
逆向きの行動以外の場合、先頭移動フラグflgを更新し、flg←1とし、ロボットi_select_move[0]〜i_select_move[Ir]を行動a_selectの方向に移動させる（ｓ５６）。
【００６６】
逆向きの行動の場合、変数Irをインクリメントし、行動a_voidによってボイドを移動させる。さらに、移動先のボイドの位置にあるロボットを選択し、そのロボットをi_select_move[Ir]とする。ロボットi_select_move[Ir]の選択すべき行動を、ｓ５１、ｓ５１１で求めた行動a_selectと同じとする。ｓ５３に戻る（ｓ５５）。
【００６７】
ｓ５４において逆向きの行動以外になるまで、ｓ５３〜ｓ５５を繰り返す。
【００６８】
第二制御では、変数Ir←0とし、現在のボイド位置（void_x,void_y）をsとしたときの行動方策Policy_Vにより行動a_voidを選択する（ｓ６１）。選択された行動a_voidが移動する（a_void≠0）か否かを判定する（ｓ６２）。a_void=0の場合(ボイドが静止する場合)、先頭移動フラグflgを更新し、flg←0とし（ｓ６４）、第二制御を終了する。a_void≠0の場合、行動方策Policy_Vによりボイドを移動させ、移動先の位置にあるロボットを選択し、そのロボットをロボットi_select_move[Ir]とする。その後、ロボットi_select_move[Ir]のとるべき行動を、行動a_voidとは逆方向の行動とする（ｓ６３）。このときのロボットi_select_move[Ir]の移動方向をa_selectとする。
【００６９】
続いて、移動後の現在のボイド位置（void_x,void_y）をｓとしたときの行動方策Policy_Vにより行動a_voidを選択する（ｓ６６）。選択された行動a_voidが、行動a_selectとはちょうど逆向きの行動であるかどうかの判定を行う（ｓ６７）。逆向きの行動以外の場合、ｓ６３で選択された行動a_selectに基づき選択したロボットi_select_move[0]〜i_select_move[Ir]を移動させる。（ｓ６９）。逆向きの行動の場合、変数Irをインクリメントし、行動a_voidによってボイドを移動させる。さらに、移動先のボイドの位置にあるロボットを選択し、そのロボットをi_select_move[Ir]とする。ロボットi_select_move[Ir]の選択すべき行動を、ｓ６３で求めた行動a_selectと同じとする。ｓ６６に戻る（ｓ６８）。
【００７０】
Ｓ６７において逆向きの行動以外になるまで、ｓ６６〜ｓ６８を繰り返す。
【００７１】
以上のプロセスで、ある先行する不変型ロボットの移動方向と逆方向において隣接する後続する不変型ロボットが、その先行する不変型ロボットの移動によって生じたボイドが行動方策Policy_Vの制御に従って移動する場合の移動方向と逆方向に移動したときに、その移動方向が、先行する不変型ロボットの移動方向と同じ限りは、同時に移動するように制御している。具体的には、まず開始隊列形態にあるロボットのうち、もっとも入口位置Peに近いロボットが隊列の中から選択され、入口位置Peに向かうための行動が選択される。そして、そのロボットの移動方向と逆側にて接しているロボットを可能な限り（ｓ５３にて行動方策Policy_Vにより選択されたボイドの行動a_voidとｓ５１１にて行動方策Policy_Gにより選択されたロボットの行動a_selectとが逆向きの移動である限り）引き連れて1ステップ移動する（第一制御）。そのあと以降の時間ステップにおいては、前のステップでできたボイドの位置を埋めるように同じ方向に動ける(ｓ６３、ｓ６６にて行動方策Policy_Vにより選択された行動a_voidの移動方向が同じ分だけ)後続のロボットが、同時に一ステップずつ移動していく。ボイドがこれ以上Q関数の値の低い位置に移動不可能になるまで処理を繰り返す（第二制御）。ボイドが移動不可能になったら、また、もっとも入口位置Peに近いロボットを隊列の中から選択する（第一制御）。第一制御と第二制御とを繰り返していくうちに、いつしか、先頭のロボットが入口位置Peに到達して、G内に入る。そのあとは、今度は先頭のロボットは、G内においてもっともQ関数の値の低い位置を目指して後続ロボットを引き連れて移動を続け、後続のロボットは引き続き、先頭のロボットの作ったボイドを埋めるように後続ロボットを引き連れて移動していく。
【００７２】
以上のような動作で、ロボットの群れが目標隊列に近づいていく。
【００７３】
(伸縮型ロボットと不変型ロボットとが混在するときに制御する場合の拘束条件)
さらに、伸縮型ロボットと不変型ロボットが混在する場合について述べる。
【００７４】
以下、各ロボットの周囲の格子(伸縮型ロボットの伸長状態の場合、周囲の10マス、伸縮型ロボットの収縮状態及び不変型ロボットの場合周囲の8マス)のいずれかに他のロボットが存在し、ロボット全体で一つの集合をなすという拘束条件を満たさなければならない。以下、この条件を維持しながらの、価値関数Q(s,a)を利用した隊列移動の方法について、不変型ロボットのみの制御する場合と、第一制御及び第二制御の処理内容が主に異なるため、この部分を中心に図１７、図１８を用いて説明する。なお、新たな変数として、各ロボットiが伸縮型ロボットか不変型ロボットかを表す変数としてcompress[i]を定義する。compress[i]=1のときロボットiは収縮型ロボットであり、compress[i]=0のときロボットiは不変型ロボットである。
【００７５】
第一制御では、以下の処理ｓ５１〜ｓ５６を行う。なお、このｓ５１、ｓ５１１、及びｓ５３〜５６に関しては不変型ロボットのみの制御する場合と同様であるため、説明を簡略化する。
【００７６】
ロボットの順位付け、先頭ロボットの選択、ボイドの発生（設定）、行動方針Policy_Gにより先頭ロボットの行動選択を行い（ｓ５１）、移動するロボットの配列、行動を設定する（ｓ５１１）。
【００７７】
選択されたロボットが不変型ロボットか否か(compress[i]=0?)を判定する（ｓ５２）。
【００７８】
伸縮型ロボットの場合、先頭移動フラグflgを更新し、flg←1とし、行動方策Policy_Gにより選択された行動a_selectに基づき選択したロボットi_select_move[0]〜i_select_move[Ir]を移動させる。（ｓ５６）。ここで、ロボットi_select_move[0]〜i_select_move[Ir]に含まれるロボットが、不変型ロボットの場合にはロボットを変形させずに隣接する格子に移動させ、伸縮型ロボットの場合にはロボットを収縮状態から伸長状態に変形させる。
【００７９】
不変型ロボットの場合、不変型ロボットのみを制御する場合で説明したｓ５３（行動方策Policy_Vによるボイドの行動選択）とｓ５４（選択したロボットの選択した移動方向とボイドの移動方向とが逆方向か否かの判定）とを行う。
【００８０】
逆向きの行動以外の場合、先頭移動フラグflgを更新し、flg←1とし、行動方策Policy_Gにより選択された行動a_selectに基づき選択したロボットi_select_move[0]〜i_select_move[Ir]を移動させる。（ｓ５６）。逆向きの行動の場合、ボイドを移動させ、ボイドの移動先にあるロボットを選択し、その行動を、前のロボットと同じ方向の移動とする（ｓ５５）。
【００８１】
伸縮型ロボットが選択されるまで（ｓ５２）、または、選択したロボットの選択した移動方向とボイドの移動方向とが逆方向以外になるまで（ｓ５４）、ｓ５２〜ｓ５５を繰り返す。
【００８２】
なお、後述する第二制御において、伸縮型ロボットが選択されたことを理由として、第二制御を終了した場合には、上述の処理ｓ５１〜ｓ５６と同時に伸縮型ロボットを伸長状態から収縮状態に変形させる。
【００８３】
第二制御では、以下の処理ｓ６１〜ｓ６９を行う。なお、このｓ６１〜ｓ６４及びｓ６６〜６９に関しては不変型ロボットのみの制御する場合と同様であるため、説明を簡略化する。
【００８４】
行動方策Policy_Vにより行動a_voidを選択する（ｓ６１）。選択された行動a_voidが移動する（a_void≠0）か否かを判定し（ｓ６２）、a_void≠0の場合、ボイドを移動させ、移動先の位置にあるロボットを選択し、そのロボットi_select[Ir]のとるべき行動を、行動a_voidとは逆方向の行動とする（ｓ６３）。なお、a_void=0の場合(ボイドが静止する場合)、先頭移動フラグflgを更新し、flg←0とし（ｓ６４）、第二制御を終了する。
【００８５】
選択されたロボットが不変型ロボットか否か(compress[i]=0?)を判定する（ｓ６５）。
【００８６】
伸縮型ロボットの場合、ｓ６３で選択された行動a_selectに基づき選択したロボットi_select_move[0]〜i_select_move[Ir]を移動させる（ｓ６９）。伸縮型ロボットの場合には、ロボットi_select[Ir]を収縮状態から伸長状態に変形させる。
【００８７】
ｓ６５の判定の結果、不変型ロボットの場合、続いて、行動方策Policy_Vにより行動a_voidを選択する（ｓ６６）。選択された行動a_voidが、行動a_selectとはちょうど逆向きの行動であるかどうかの判定を行い（ｓ６７）、逆向きの行動以外の場合、ｓ６３で選択された行動a_selectに基づき選択したロボットi_select_move[0]〜i_select_move[Ir]を移動させる（ｓ６９）。逆向きの行動の場合、ボイドを移動させ、移動先のボイドの位置にあるロボットを選択し、そのロボットの選択すべき行動を、ｓ６３で求めた行動a_selectと同じとする（ｓ６８）。
【００８８】
伸縮型ロボットが選択されるまで（ｓ６５）、または、選択したロボットの選択した移動方向とボイドの移動方向とが逆方向以外になるまで（ｓ６７）、ｓ６５〜ｓ６８を繰り返す。
【００８９】
なお、第一制御において伸縮型ロボットが選択されたことを理由として、第一制御を終了した場合には、上述の処理ｓ６１〜ｓ６９と同時に伸縮型ロボットを伸長状態から収縮状態に変形させる。
【００９０】
以上のプロセスで、伸縮型ロボットの移動を制御するとともに、ある先行する不変型ロボットの移動方向と逆方向において隣接する後続する不変型ロボットが、その先行する不変型ロボットの移動によって生じたボイドが行動方策Policy_Vの制御に従って移動する場合の移動方向と逆方向に移動したときに、その移動方向が、先行する不変型ロボットの移動方向と同じ限りは、同時に移動するように制御している。具体的には、まず開始隊列形態にあるロボットのうち、もっとも入口位置Peに近いロボットが隊列の中から選択され、入口位置Peに向かうための行動が選択される。そして、そのロボットの移動方向と逆側にて接しているロボットを引き連れて1ステップ移動するが、その中に、収縮可能ロボットがある場合は、その収縮可能ロボットを後端として移動を行う（第一制御）。そのあとの時間ステップ以降においては、前のステップでできたボイドの位置を埋めるように同じ方向に動ける後続のロボットが、同時に一ステップずつ移動していく、ここでも同様に、後続ロボット中に収縮可能ロボットがある場合は、その収縮可能ロボットを後端として移動を行う。ボイドがこれ以上Q関数の値の低い位置に移動不可能になるまで処理を繰り返す（第二制御）。ボイドが移動不可能となったら、また、もっとも入口位置Peに近いロボットが隊列の中から選択し第一制御を行う。第一制御と第二制御とを繰り返していくうちに、いつしか、先頭のロボットが入口位置Peに到達して、G内に入る。そのあとは、今度は先頭のロボットは、G内においてもっともQ関数の値の低い位置を目指して後続ロボットを引き連れて移動を続け、後続のロボットは引き続き、先頭のロボットの作ったボイドを埋めるように後続ロボットを引き連れて移動していく。
【００９１】
以上のような動作で、ロボットの群れが目標隊列に近づいていく。
【００９２】
以下、ロボット移動の制御方法、拘束条件を実現するための処理について述べる。
＜第一実施形態に係る行動制御システム１００＞
図１９は第一実施形態に係る行動制御システム１００の機能ブロック図を、図２０はその処理フローの例を示す。行動制御システム１００は、図１９に示すように、動作計画部１１０と、行動選択部１２０と、隣接状態判定部１２１と、位置更新部１２５と、位置判定部１２６と、記憶部１４０と、通信部１５０と、入力部１６０とを含む。
【００９３】
以下では、制御の対象となる制御対象物が、ロボットである場合を例に挙げて説明する。もちろん、制御対象物は、制御の対象となり得るものであれば、ロボット以外であってもよい。
【００９４】
本実施形態では、行動制御システム１００は、p台のロボットの行動を制御し、p台のロボットの内の１つのロボット上に実装される。なお、p個のロボットのうちq個（qを0以上p以下の整数の何れかとする）のロボットを伸縮型ロボットとし、p個のロボットのうち(p-q)個のロボットを不変型ロボットとする。行動制御システム１００が実装されるロボットは不変型ロボットでも伸縮型ロボットでもよい。なお、行動制御システム１００が実装されていないp-１台のロボットについても、通信部１５０と、隣接状態判定部１２１とを含む。
【００９５】
＜動作計画部１１０＞
動作計画部１１０は、価値関数Q(s,a)の値を、動的計画法により、ロボットの任務行動開始前に事前に計算し（Ｓ１１０）、記憶部１４０に格納する。ここで、動作計画部１１０の計算は、一台のロボットを使用したQ学習に置き換えてもよい。なお、別装置で価値関数Q(s,a)を計算しておき、ロボットの任務行動開始前に事前に記憶部１４０に格納しておけば、行動制御システム１００は、動作計画部１１０を備えなくともよい。
【００９６】
なお、価値関数Q(s,a)の計算については、（Q関数の計算について）、(開始位置からのロボット群のルートが二つ以上考えられる場合のQ関数の計算)で説明した通りである。
【００９７】
＜入力部１６０＞
入力部１６０には、p台のロボットiのそれぞれの初期位置(Xr0[i],Xr0[i])及びp個の目標位置の集合G={(Xre[0],Yre[0]),(Xre[1],Yre[1]),…,(Xre[p-1],Yre[p-1])}が入力され、記憶部１４０に記憶される。
【００９８】
なお、目標位置は、所定の入口位置Peを含むとする。この入口位置Peについての情報も、入力部１６０から入力され、記憶部１４０に記憶されるとする。
【００９９】
＜記憶部１４０＞
記憶部１４０には、位置s及びa∈{0,1,2,3,4}の組み合わせのそれぞれについての価値関数Q(s,a)が記憶されているとする。sの取りうる範囲は、対象となる二次元平面上の領域内のロボットiが存在しうる全ての座標である。
【０１００】
各位置sの報酬r(s)についても、記憶部１４０に記憶されているとする。各位置sの報酬r(s)についての情報は、例えば入力部１６０から入力される。
【０１０１】
＜通信部１５０＞
行動制御システム１００が実装されているロボットも含め、全てのロボットは、通信部１５０を介して、二次元平面上の上、右上、右、右下、下、左下、左、左上方向(以下「８方向」ともいう)において隣接する他のロボットと通信することができる。図２１Ａの梨地部分は不変型ロボット及び収縮状態の伸縮型ロボットの隣接する通信可能な位置を、図２１Ｂの梨地部分は伸長状態の伸縮型ロボットの隣接する通信可能な位置を示す。
【０１０２】
＜行動選択部１２０＞
行動選択部１２０は、記憶部１４０から価値関数Qを取り出す。行動選択部１２０は、（伸縮型ロボットのみの制御する場合の拘束条件）、（不変型ロボットのみの制御する場合の拘束条件）、（伸縮型ロボットと不変型ロボットとが混在するときに制御する場合の拘束条件）の部分で説明した方法で、p台のロボットを制御する（ｓ１２０）。具体的には、図１０のｓ１（初期設定）、ｓ３（先頭移動フラグの判定）、ｓ５（第一制御）、ｓ６（第二制御）を行う。なお、行動方策Policy_G、行動方策Policy_Vにおいて、各ロボットの位置や障害物位置を必要とするが、各ロボットの位置の初期位置(Xr0[i],Xr0[i])については、前述の通り、入力部１６０を介して入力され記憶部１４０に記憶されているものを利用し、移動後の各ロボットの位置については、後述する位置判定部１２６で求め記憶部１４０に記憶されているものを利用すればよい。障害物の位置に関しては、価値関数Q(s,a)を学習する際に利用した障害物の位置を利用してもよいし、後述する隣接状態判定部１２１で判定した判定結果を用いて得られるものを利用してもよい。
【０１０３】
＜位置更新部１２５＞
位置更新部１２５は、各i=0,1,…,p-1について、i番目のロボットの現在の位置（Xr[i],Yr[i]）において、行動選択部１２０で決定した行動を実行した場合のロボットの移動後（行動後）の位置（Xr'[i],Yr'[i]）を計算し、計算された（Xr'[i],Yr'[i]）で記憶部１４０に格納されたi番目のロボットの位置を更新する（Ｓ１２５）。言い換えれば、位置更新部１２５は、行動選択部１２０で決定した行動に基づいて、ロボットが行動した場合に想定される位置（以下、「想定位置」ともいう）を計算し、ロボットの位置を更新し記憶部１４０に格納する。具体的には、図１０のｓ８（位置の更新）を行う。
【０１０４】
＜隣接状態判定部１２１＞
隣接状態判定部１２１は、ロボットの２次元平面上の上下左右の隣接する位置に、障害物または他のロボットが存在するか否かを判定し、ロボットの２次元平面上の右上、左上、左下、右下の隣接する位置に他のロボットが存在するか否かを判定し（Ｓ１２１），判定結果を記憶部１４０に格納する。
【０１０５】
なお、上述の通り、行動制御システム１００が実装されていないp-１台のロボットについても、通信部１５０と、隣接状態判定部１２１とを含む。そのため、各ロボットiは隣接状態判定部１２１において、自身の上下左右方向に障害物があるかどうか、周囲８方向に他のロボットがいるかどうかを判定し、通信部１５０を介して判定結果を行動制御システム１００に出力することができる。行動制御システム１００は、通信部１５０を介して各ロボットiから判定結果を受け取り、行動制御システム１００に含まれる隣接状態判定部１２１の判定結果と一緒に記憶部１４０に格納する。なお、p台のロボットは、各ロボットの隣り合う位置（８方向）に必ず、他のロボットが存在し、隣り合うロボット同士がなす群れは、一塊なので、各ロボットiは通信部１５０を介してp-1個の判定結果を直接、または、他のロボットを介して、行動制御システム１００に送信することができる。また、行動制御システム１００は、通信部１５０を介して、直接、または、他のロボットを介して、各ロボットiに選択した行動を実行するように制御信号を送信することができる。また、他の情報もp台のロボット間で送受信可能となる。
【０１０６】
なお、ロボットが移動するように制御したとしても、何らかのトラブル（感知できなかった障害物の存在や、機器の故障等）により、行動選択部１２０の制御通りに移動できるとは限らない。一方、動かなかったロボットの位置は、制御する前と変わらない。よって、動かなかったロボットの位置を基準として、隣接状態判定部１２１による判定結果を用いて、移動するように制御されたロボットの、実際に行動した後の位置（以下「行動後位置」ともいう）（Xr"[i],Yr"[i]）を求めることができる。なお、不変型ロボットが進行方向に対して一列に並んでいる場合には、全てのロボットが同一方向に移動するため、基準となるロボットが存在しないことになる。そのような場合には、その状態を検知し、１つ以上のロボットを進行方向に対して直交する方向に１マス分移動させ、その移動させたロボットを基準として、他のロボットを元々の進行方向に向かって移動させればよい。
【０１０７】
＜位置判定部１２６＞
位置判定部１２６は、隣接状態判定部１２１の判定結果を用いて、行動後位置を求め、行動後位置（Xr"[i],Yr"[i]）と想定位置（Xr'[i],Yr'[i]）とが一致するか否かを判定する（Ｓ１２６）。なお、一致しない場合には、移動するように制御されたロボットが何らかのトラブルにより、制御通りに移動できなかったと考えられる。この場合、行動後位置（Xr"[i],Yr"[i]）と想定位置（Xr'[i],Yr'[i]）との少なくとも一方を補正すればよい。補正方法としては様々な手法が考えられる。例えば、移動した全てのロボットに対して、制御前の位置に戻るように指示し、行動後位置（Xr"[i],Yr"[i]）を補正してもよいし、想定位置（Xr'[i],Yr'[i]）を行動後位置（Xr"[i],Yr"[i]）に合わせて補正してもよい。
【０１０８】
各時刻ステップごとに、すべてのロボットがG内にあるかどうかを判定し（Ｓ１２７、図１０のｓ９に相当）、すべてのロットがG内にあるときは、任務を終了する。そうでないときは、任務を継続する。
【０１０９】
例えば、図示しない目標位置到達判定部において、各i=0,1,…,p-1について、位置判定部１２６から出力された行動後位置（Xr"[i],Yr"[i]）∈Gであるか否かを判定し、全てのiについて（Xr"[i],Yr"[i]）∈Gである場合には、任務を終了する。少なくとも１つ以上のiについて（Xr"[i],Yr"[i]）∈Gを満たさない場合には、行動選択部１２０を再度実行するよう制御する。
【０１１０】
以上に述べた処理ｓ１２０〜ｓ１２７を毎時刻ステップごとに行う。
【０１１１】
＜効果＞
このような構成により、一台のロボットに必要な分だけのマルコフ状態空間を用意し、それを用いて動的計画法を利用して各位置でのロボットの行動方策を計算し、その行動方策を利用することで、ロボットに任意の隊列形状と、任務環境内の任意の障害物形状に対応した、ロボット同士が接した状態を維持したうえでの多数ロボットのための隊列形成アルゴリズムを獲得することができる。すなわち、ロボット数に依存せずにロボット一台分の計画計算負荷での自己位置座標定義型隊列形成アルゴリズム獲得ができる。また、静止しているロボットに対する相対的な位置を判定することで、絶対的な位置を取得することができるため、付加的な位置計測用の装備を必要としない。
【０１１２】
なお、前述の通り、伸縮型ロボットは、尺取虫のように伸長収縮により移動する。このような移動は、足や車輪による移動に比べ不整地や地中などの移動に有利であることが知られており、災害現場等での利用する際に特に有効である。本実施形態では、そのような伸縮型ロボットのみを制御する場合や不変型ロボットと組合せた場合の制御方法を提示している。
【０１１３】
＜変形例＞
本実施形態では、各格子（マス）は、正方形であるが、他の形状であってもよい。格子は左右方向及び上下方向に連続して配置される。また、各格子は左右方向で他の二つの格子と隣接し、上下方向で他の二つの格子と隣接する。言い換えると、各格子は、ロボットの移動できる方向と同じ方向においてのみ、他の格子と隣接する。この条件を満たせば、各格子はどのような形状であってもよい。また、「直交」とは、厳密に「垂直に交わること」を意味しなくともよく、例えば、図２２のように、各格子は、菱形であってもよく、各格子が他の二つの格子と隣接する方向の一方を上下方向とし、他方を左右方向とすればよく、このとき、上下方向と左右方向とは直交するものとする。
【０１１４】
別の言い方をすると、制御対象物は、二次元平面上の、第一方向（例えば右方向）、第一方向に対して平行でない方向である第二方向（例えば上方向）、第一方向に対して反対方向である第三方向（例えば左方向）、第二方向に対して反対方向である第四方向（例えば下方向）に移動可能であり、一回の行動制御により、現在いる領域（格子、マス）から、現在いる領域に対して、第一方向、第二方向、第三方向、第四方向において隣接する領域の何れかに移動するように制御される。また、この場合、ロボットの２次元平面上の、第一方向において隣接する位置を第一位置、第二方向において隣接する位置を第二位置、第三方向において隣接する位置を第三位置、第四方向において隣接する位置を第四位置、第一位置に第二方向において隣接する位置を第五位置、第二位置に第三方向において隣接する位置を第六位置、第三位置に第四方向において隣接する位置を第七位置、第四位置に第一方向において隣接する位置を第八位置と呼んでもよい。例えば第一〜第八位置は、それぞれ図２１の「１」〜「８」の位置に対応する。
【０１１５】
本実施形態では、行動制御システム１００が、p台のロボットの内の１つのロボット上に実装される例を示したが、コンピュータ上の制御対象物に対して行動制御を行ってもよい。その場合、意図的にトラブルを発生させない限り、制御した通りに制御対象物は移動するため、想定位置（Xr'[i],Yr'[i]）と移動後位置（Xr"[i],Yr"[i]）とが一致する。そのような状態で、各制御対象物i毎の理想的な行動計画を行ってもよい。その結果得られた任務を終了するまでの行動計画を実ロボットに実行させる。実ロボットは、通信部１５０と隣接状態判定部１２１を備え、各行動を終えた後に、隣接状態を判定し、判定結果を用いて、行動後位置を求め、行動後位置（Xr"[i],Yr"[i]）と想定位置（Xr'[i],Yr'[i]）とが一致するか否かを判定する。なお、一致しない場合には、移動するように制御されたロボットが何らかのトラブルにより、制御通りに移動できなかったと考えられる。その後の処理については第一実施形態と同様でもよいし、他の処理を行ってもよい。このような構成により、少なくとも制御通りに移動できなかったことを検知することができる。
【０１１６】
＜その他の変形例＞
本発明は上記の実施形態及び変形例に限定されるものではない。例えば、上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
【０１１７】
＜プログラム及び記録媒体＞
また、上記の実施形態及び変形例で説明した各装置における各種の処理機能をコンピュータによって実現してもよい。その場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記各装置における各種の処理機能がコンピュータ上で実現される。
【０１１８】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【０１１９】
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させてもよい。
【０１２０】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶部に格納する。そして、処理の実行時、このコンピュータは、自己の記憶部に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実施形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよい。さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、プログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【０１２１】
また、コンピュータ上で所定のプログラムを実行させることにより、各装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【図１】
0006285849.tif 000002
【図２】
0006285849.tif 000003
【図３】
0006285849.tif 000004
【図４】
0006285849.tif 000005
【図５】
0006285849.tif 000006
【図６】
0006285849.tif 000007
【図７】
0006285849.tif 000008
【図８】
0006285849.tif 000009
【図９】
0006285849.tif 000010
【図１０】
0006285849.tif 000011
【図１１】
0006285849.tif 000012
【図１２】
0006285849.tif 000013
【図１３】
0006285849.tif 000014
【図１４】
0006285849.tif 000015
【図１５】
0006285849.tif 000016
【図１６】
0006285849.tif 000017
【図１７】
0006285849.tif 000018
【図１８】
0006285849.tif 000019
【図１９】
0006285849.tif 000020
【図２０】
0006285849.tif 000021
【図２１】
0006285849.tif 000022
【図２２】
0006285849.tif 000023