JP6174523B2 - 行動制御システム、その方法及びプログラム - Google Patents

行動制御システム、その方法及びプログラム Download PDF

Info

Publication number
JP6174523B2
JP6174523B2 JP2014130021A JP2014130021A JP6174523B2 JP 6174523 B2 JP6174523 B2 JP 6174523B2 JP 2014130021 A JP2014130021 A JP 2014130021A JP 2014130021 A JP2014130021 A JP 2014130021A JP 6174523 B2 JP6174523 B2 JP 6174523B2
Authority
JP
Japan
Prior art keywords
action
adjacent
robot
control object
control
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014130021A
Other languages
English (en)
Other versions
JP2016009354A (ja
Inventor
洋 川野
洋 川野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2014130021A priority Critical patent/JP6174523B2/ja
Publication of JP2016009354A publication Critical patent/JP2016009354A/ja
Application granted granted Critical
Publication of JP6174523B2 publication Critical patent/JP6174523B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0287Control of position or course in two dimensions specially adapted to land vehicles involving a plurality of land vehicles, e.g. fleet or convoy travelling
    • G05D1/0291Fleet control

Landscapes

  • Engineering & Computer Science (AREA)
  • Aviation & Aerospace Engineering (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • Control Of Position, Course, Altitude, Or Attitude Of Moving Bodies (AREA)

Description

本発明は、複数の制御対象物の行動を制御する技術に関する。例えば、複数のロボットを、開始位置における隊列形成状態から協調して移動させ、障害物を回避させ、目標位置で隊列形成をさせるための各ロボットの行動計画を求めるロボット協調制御技術に関する。
近年、多数の自律移動ロボットを効率的に制御にするための研究が活発に行われている。その任務内容は、人の入れない箇所の監視、物品の搬送などさまざまであるが、多数のロボットの協調動作による隊列形成を効率的に行わせるための技術が求められており盛んに研究が行われている(例えば、非特許文献1参照)。多数のロボットによる効率的な隊列形成を実現するには、それぞれのロボットの配置、動作順序などを事前に計画することが重要である。このような計画においては、当然ながら、複数のロボットが動作する実環境における障害物の存在や経路の形状なども十分に考慮しなければならない。
このような計画計算を行うための効果的な手法の一つとして、マルコフ決定過程における動的計画法や強化学習の手法があり、さまざまな研究が行われている(例えば、非特許文献2参照)。
また、ロボットの隊列制御の中でも、ロボット同士が互いに接したままの状態で、アメーバのように全体で移動を行うという仮定の下でのロボット隊列制御においては、ロボット同士の相対的な位置関係から、各ロボットの絶対位値の決定が可能であるという利点と、付加的な位置計測用の装備を必要としないという利点があり、そのようなロボットの研究もおこなわれている。例えば、非特許文献3に示すものでは任意の矩形形状隊列から他の矩形形状隊列までの隊列制御が示されている。
また、非特許文献4に示す研究に至る一連の研究では、ある隊列から他の隊列に変化する隊列制御が示されている。
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.
しかしながら、非特許文献1の手法では、流体力学的な特性をロボット動作に組み込む手法を用いて群ロボットの動作を制御しており、低い計算負荷での制御を可能にしている利点があるが、任意の形状の隊列形成をすることができるとは限らない。
また、非特許文献2の手法のように、マルコフ決定過程における動的計画法や強化学習を使用してこのような計画を行おうとすると、単体のロボットを使用する場合に比べて複数のロボットを使用する場合には、その計算に要する時間や計算機の記憶容量がロボットの数に対して指数関数的に増大してしまう。その主たる原因となるのが、探索計算のためのマルコフ状態空間内の状態数の莫大な増加である。非特許文献2では、検証された強化学習の手法では、ロボット数の増加に伴い、指数関数的に計算負荷が増加するという、マルコフ状態空間内の爆発問題への解決策は示されていない。
また、非特許文献1,2の手法ともに、付加的な位置計測用の装備を必要とする。
また、非特許文献3では、ロボットが接したままの状態を維持するという条件を考慮して、付加的な位置計測用の装備を必要としないが、その実現には障害物の存在を必要としており、動作計画に必要な計算量が、ロボットの台数の2乗に比例してしまい、ロボットの台数の増加とともに急激に上昇する。
非特許文献4の手法においては、一度、線形隊列への変換をしなければならず、可能な隊列形成動作そのものへの制約が大きい。
このような現状に鑑みて、本発明では、多数のロボットの存在を考慮しつつも、計画計算に必要な計算時間や計算機の記憶容量を一台のロボットを扱うときと同様に少ないものに低減可能で、かつ、ロボット同士が接したままの状態を維持しつつ任意の矩形隊列から、他の任意の矩形隊列へ障害物のある環境にて変形動作を行うことを可能とする、ロボット協調隊列形成技術を提供することを目的とする。
上記の課題を解決するために、本発明の一態様によれば、行動制御システムは、複数の制御対象物を所定の入口位置を含む目標位置の集合に移動させるための行動制御を行う。行動制御システムは、第一方向に対して平行でない方向を第二方向とし、第一方向に対して反対の方向を第三方向とし、第二方向に対して反対の方向を第四方向とし、目標位置の集合は第一方向に平行な二つの辺と第二方向に平行な二つの辺からなる平行四辺形を成し、制御対象物は、二次元平面上の第一〜第四方向において隣接する他の制御対象物と通信するための通信手段と、当該制御対象物の2次元平面上の第一方向において隣接する第一位置、第二方向において隣接する第二位置、第三方向において隣接する第三位置、及び、第四方向において隣接する第四位置に、障害物または他の制御対象物が存在するか否かを判定し、当該制御対象物の2次元平面上の、第一位置に第二方向において隣接する第五位置、第二位置に第三方向において隣接する第六位置、第三位置に第四方向において隣接する第七位置、及び、第四位置に第一方向において隣接する第八位置に他の制御対象物が存在するか否かを判定する隣接状態判定部とを備え、制御対象物がその制御対象物の現在の位置sにおいて各行動aを取ったときの適切さを表す1個の価値関数に基づいて制御され、1回の行動制御により、静止するか、または、二次元平面上の第一〜第四位置に移動するように制御されるものとし、価値関数が記憶される記憶部と、価値関数を用いて、1回の行動制御により、少なくとも1つの制御対象物が静止し、残りの制御対象物全てが同じ方向に移動するように制御する行動選択部とを含み、ある制御対象物の、第一〜第四位置の何れかに他の制御対象物が存在する状態を接続状態とし、行動選択部は、複数の制御対象物全てが常に接続状態を維持し、かつ、1つの群れを成すように制御する。
上記の課題を解決するために、本発明の他の態様によれば、行動制御方法は、行動制御システムを用いて、複数の制御対象物を所定の入口位置を含む目標位置の集合に移動させるための行動制御を行う。行動制御方法は、第一方向に対して平行でない方向を第二方向とし、第一方向に対して反対の方向を第三方向とし、第二方向に対して反対の方向を第四方向とし、目標位置の集合は第一方向に平行な二つの辺と第二方向に平行な二つの辺からなる平行四辺形を成し、制御対象物は、二次元平面上の第一〜第四方向において隣接する他の制御対象物と通信するための通信手段と、当該制御対象物の2次元平面上の第一方向において隣接する第一位置、第二方向において隣接する第二位置、第三方向において隣接する第三位置、及び、第四方向において隣接する第四位置に、障害物または他の制御対象物が存在するか否かを判定し、当該制御対象物の2次元平面上の、第一位置に第二方向において隣接する第五位置、第二位置に第三方向において隣接する第六位置、第三位置に第四方向において隣接する第七位置、及び、第四位置に第一方向において隣接する第八位置に他の制御対象物が存在するか否かを判定する隣接状態判定部とを備え、制御対象物がその制御対象物の現在の位置sにおいて各行動aを取ったときの適切さを表す1個の価値関数に基づいて制御され、1回の行動制御により、静止するか、または、二次元平面上の第一〜第四位置に移動するように制御されるものとし、予め計算された価値関数を用いて、1回の行動制御により、少なくとも1つの制御対象物が静止し、残りの制御対象物全てが同じ方向に移動するように制御する行動選択ステップとを含み、ある制御対象物の、第一〜第四位置の何れかに他の制御対象物が存在する状態を接続状態とし、行動選択ステップにおいて、複数の制御対象物全てが常に接続状態を維持し、かつ、1つの群れを成すように制御する。
本発明に拠れば、詳しくは後述するが、一台のロボットに必要な分だけのマルコフ状態空間を用意し、それを用いて動的計画法を利用して各位置でのロボットの行動方策を計算し、その行動方策を利用することで、ロボットに任意の矩形隊列形状と、任務環境内の任意の障害物形状に対応した、ロボット同士が接した状態を維持したうえでの多数ロボットのための隊列形成アルゴリズムを獲得することができる。すなわち、ロボット数に依存せずにロボット一台分の計画計算負荷での自己位置座標定義型隊列形成アルゴリズム獲得ができる。
多数のロボットが協調して開始位置における隊列形成状態から移動を行い、目標位置での隊列形成を行う任務を説明するための図。 多数のロボットが協調して開始位置における隊列形成状態から移動を行い、目標位置での隊列形成を行う任務を説明するための図。 多数のロボットが協調して開始位置における隊列形成状態から移動を行い、目標位置での隊列形成を行う任務を説明するための図。 多数のロボットが協調して開始位置における隊列形成状態から移動を行い、目標位置での隊列形成を行う任務を説明するための図。 第一実施形態に係る行動制御システムの機能ブロック図。 第一実施形態に係る行動制御システムの処理フローの例を示す図。 nとマス目との対応の例を示す図。 可動判定部の処理フローの例を示す図。 可動判定部の処理内容を説明するための図。 移動方向設定部の処理フローの例を示す図。 移動方向設定部の処理フローの例を示す図。 接続判定部の処理フローの例を示す図。 接続判定部の処理フローの例を示す図。 図14Aは接続判定部の処理内容を説明するための図、図14Bは接続判定部の処理内容を説明するための図。 各格子が菱形での場合の例を示す図。 図16Aはp個の目標位置(Xre[i],Yre[i])の集合Gの中にp個の初期位置(Xr0[i],Xr0[i])の一部が含まれている場合を示す図、図16Bは初期位置の個数をq、目標位置の個数をpとし、q>pの場合を示す図。 可動判定部の処理内容を説明するための図。 移動方向設定部の処理フローの例を示す図。 接続判定部の処理フローの例を示す図。
以下、本発明の実施形態について説明する。なお、以下の説明に用いる図面では、同じ機能を持つ構成部や同じ処理を行うステップには同一の符号を記し、重複説明を省略する。
<第一実施形態>
[理論的背景]
まず、行動制御装置及び方法の理論的背景について説明する。以下、行動制御の対象である制御対象物が、ロボットである場合を例に挙げて説明するが、制御対象物は、制御の対象となり得るものであれば、ロボット以外であってもよい。
多数のロボットが協調して開始位置における隊列形成状態から移動を行い、目標位置での隊列形成を行う任務は、例えば図1に例示するような壁で区切られた部屋においての開始位置から目標位置まで複数のロボットの移動によって実現するものである。
任務を行うロボットは、p台(例えばp≧50)であり、各ロボットは、二次元平面におけるX軸方向及びY軸方向のそれぞれに移動可能とする。すなわち、この例では、各ロボットは、図1の紙面に対して上下左右の四方向に移動可能とする。図1の各格子にはロボットは一台しか存在することができない。それぞれのロボットは、移動しようとする方向に障害物か他のロボットがある場合には、静止をするものと仮定する。
図1において、Rが記載された格子はロボットが存在する位置を示し、Oが記載された格子は障害物が存在する位置を示す。また、太線の破線で囲まれた領域は開始位置を示し、太線の一点鎖線で囲まれた領域は目標隊列エリアGを示し、太線の実線で囲まれた領域は後述する目標隊列エリアGの入口位置Peを示す。このように、図1においては、ロボットの開始位置と目標位置での隊列形状は矩形である。
それぞれのロボットi(iはロボット番号を表し、i=0,1,2,…,p-1とする)の初期位置を(Xr0[i],Yr0[i])とし、目標位置を(Xre[i],Yre[i])とするとき、初期位置に配置されたロボットが、目標位置まで移動するための行動計画を求める問題を考える。
このような問題に対して単純にマルコフ状態遷移モデルを適用しようとする場合、マルコフ状態空間は、ロボットiの位置(Xr[i],Yr[i])、ロボットiの行動a[i]によって構成される。各状態(ロボットの位置と行動)は離散値で表現される。部屋をX,Yの直交座標系からなる2次元平面で表すと、X軸、Y軸をそれぞれ離散化表現した値により各位置を表現する。つまり、図1のように部屋(2次元平面)は格子で区切られ、各格子が各位置に対応する。また、各格子において、障害物の「ある/なし」が予め設定されている。
また、この例では、制御対象物である行動主体は部屋に配置されている各ロボットとなる。ロボットiの行動a[i]∈D[i]は、静止、上下左右方向への1格子分の移動の計5種類のうちの何れかを取る。すなわち、D[i]∈{0,1,2,3,4}として、各行動は例えば以下のように定義される。
0: 静止
1: 二次元平面上で右方向に1格子だけ移動する
2: 二次元平面上で上方向に1格子だけ移動する
3: 二次元平面上で左方向に1格子だけ移動する
4: 二次元平面上で下方向に1格子だけ移動する
このような任務環境におけるマルコフ状態空間は、ロボット数×2の次元数の状態を持ち、かつ選択可能な行動数は、ロボットの行動(=5通り)のロボット数乗だけ存在する。例えば、ロボット数が50で、部屋の縦横方向の格子数がそれぞれ20であるとすれば状態数は20の100乗個にもなり、探索計算に要する資源の量は膨大なものとなる。さらにロボット数が1台増えるごとに、その状態数は400倍増加していくことになり、複数ロボットを使用する場合の大きな問題となっている。
そこで、この実施形態では、このような状態空間の爆発をさけるために、学習に使用するマルコフ状態空間を、一台分のロボットの状態変数のみで構成することにする。すなわち、状態変数及び行動変数を以下のように定義する。
状態変数s=(Xr,Yr),行動変数a∈{0,1,2,3,4}
p台あるすべてのロボットは、この状態変数を引数とした1個の価値関数Q(s,a)を共有し、行動決定を行う。
なお、価値関数Q(s,a)の計算は、例えば、動的計画法を使用して、任務の事前に行うものとする。まず、各ロボットの目標位置をここに厳密に割り振ることをせず、目標位置全体の集合を、目標隊列エリアGと定義する。すなわち、
(Xre[i],Yre[i])∈G …(3)
として、各ロボットはG内の全ての全ての位置を自由に目標位置とすることができるものとする。つまり、Gをちょうど流体を注ぐ器のようなものとして扱う。すなわち、各ロボットは、Gの境界上にあるどの位置からもGに入ることが可能であるが、一度G内に入ったロボットは、Gを出る行動をとることができないものとする。また、強化学習時における報酬の設定については、Gの境界上に一点だけ入口の点Peを設定し、ロボットがPeからG内に入ったときのみ高報酬であるr=1を与え、それ以外の経験については、すべてr=0を与えるものとする。Peの位置を入口位置と呼ぶ。本実施形態では、Gで構成される矩形の4角のいずれかの1点を選んで入口位置Peとし、Peにロボットが移動した場合において、高報酬値1が与えられ、その他は0の報酬が与えられる。Peの位置はGの内部であって、Gで構成される矩形の4角のいずれかの1点であればどこでも構わないが、ロボットの開始位置から近い位置を選ぶのがロボットの動作をスムーズにするうえで効果的である。
このような報酬を設定する背景として、G内に入ったロボットは、本実施形態の制御を受けることで、G内のロボットが存在しない位置(空隙位置とよぶことにする。)を、次第にGを構成する矩形の4角の点いずれかに誘導していくことになる。これを利用して、Peの付近にてG内に入ろうとするロボットが常に待機するようにすれば、最後の一つのロボットも待ち時間を長くとることなしに、G内に入ることができるのである。
本実施形態において、ロボットは各々のロボット同士の相対位置関係から、各々の絶対位置を計測することができ、また隣の位置に他のロボットが存在しているか否か、障害物があるか否か、そして、自身が目標位置上にいるかどうかを知ることができるものとする。それを実現するためのロボット同士の位置関係と、移動に関する拘束条件は、
(1)各行動選択時に、必ず1つ以上の移動を行わないロボットがなければならない。
(2)各ロボットの隣り合う位置(上下左右)に必ず、他のロボットが存在していなければならない。
(3)隣り合うロボット同士がなす群れは、一つでなければならない。
である。この拘束条件を維持しつつ目標位置での隊列形成を行う動作の例を図1〜4に示す。以下、この条件を維持しながらの、価値関数Q(s,a)を利用した隊列移動の方法について述べる。
このような一つの価値関数Q(s,a)を使用して行動選択を行った場合に起こる問題について述べる(図1)。通例のMDP(Markov decision process)での強化学習や動的計画法で求められた価値関数を使用した行動選択では、それぞれの状態sにおいて、Q(s,a)の値を最大化する行動aを選択するのが通例である。本実施形態のように、各ロボットが単一の価値関数Qを参照して行動選択を行う場合、群れを構成する各ロボットにとってのQ(s,a)の値を最大化する行動aは、必ずしも一致しない。あるロボットはa=1の右への移動を選択し、別のロボットは、a=3の左への移動を選択することも起こりうることである。そのような状況では、ロボットが互いにそれぞれの選択した方向への移動をしようとして、衝突が起こり、群れ全体としての移動が滞ってしまうことが頻繁に起こりうる。また、目標位置における隊列形成において、各ロボットを目標位置での隊列内のどの位置に配置するかを割り振ることも重要である。これが適切に行われないと、目標位置近傍にて、ロボットが他のロボットの移動を邪魔してしまい、これも群れの移動の停滞を引き起こす。通例、これらを避けるためには、各ロボットが他のロボットの位置も把握したうえで行動選択を行う必要があり、そのためには、膨大な数の状態を含む状態空間を取り扱わなければならないのである。本実施形態では以上の、
(4)各ロボット同士の選択する行動の違いによる衝突に伴う、群れの移動の停滞を避ける。
(5)目標位置において、適切にロボットを隊列形成させる。
ための手法も備えている。
以下、ロボット移動の条件である(1)(2)(3)(4)(5)を実現するための処理について述べる。
<第一実施形態に係る行動制御システム100>
図5は第一実施形態に係る行動制御システム100の機能ブロック図を、図6はその処理フローの例を示す。行動制御システム100は、図5に示すように、動作計画部110と、行動選択部120と、記憶部140と、通信部150と、入力部160とを含む。
行動選択部120は、隣接状態判定部121と、可動判定部122と、移動方向設定部123と、接続判定部124と、位置更新部125と、位置判定部126とを含む。
以下では、制御の対象となる制御対象物が、ロボットである場合を例に挙げて説明する。もちろん、制御対象物は、制御の対象となり得るものであれば、ロボット以外であってもよい。
本実施形態では、行動制御システム100は、p台のロボットの行動を制御し、p台のロボットの内の1つのロボット上に実装される。なお、行動制御システム100が実装されていないp-1台のロボットについても、通信部150と、隣接状態判定部121とを含む。
<動作計画部110>
動作計画部110は、MDPにおける価値関数Q(s,a)の値を、動的計画法により、ロボットの任務行動開始前に事前に計算し(S110)、記憶部140に格納する。ここで、動作計画部110の計算は、一台のロボットを使用したQ学習に置き換えてもよい。なお、別装置で価値関数Q(s,a)を計算しておき、ロボットの任務行動開始前に事前に記憶部140に格納しておけば、行動制御システム100は、動作計画部110を備えなくともよい。
<入力部160>
入力部160には、p台のロボットiのそれぞれの初期位置(Xr0[i],Xr0[i])及びp個の目標位置の集合G={(Xre[0],Yre[0]),(Xre[1],Yre[1]),…,(Xre[p-1],Yre[p-1])}が入力され、記憶部140に記憶される。
なお、目標位置は、所定の入口位置Peを含むとする。この入口位置Peについての情報も、入力部160から入力され、記憶部140に記憶されるとする。
<記憶部140>
記憶部140には、位置s及びa∈{0,1,2,3,4}の組み合わせのそれぞれについての価値関数Q(s,a)が記憶されているとする。sの取りうる範囲は、対象となる二次元平面上の領域内のロボットiが存在しうる全ての座標である。
各位置sの報酬r(s)についても、記憶部140に記憶されているとする。各位置sの報酬r(s)についての情報は、例えば入力部160から入力される。
なお、記憶部140に、各ロボットiが、行動aについて可動であるか非可動であるかを示す変数move[a][i]を格納しておく。なお、aは行動である。ロボットiが、行動aについて可動の際は値1を、そうでない場合は1以外の値をとるものとする。move[a][i]の値が0のときは障害物によりさえぎられることで非可動であり、2のときは、ロボットiが価値関数Qの値の都合で非可動になったということを示す。さらに、記憶部140に、各ロボットiの周囲に他のロボットがいるかどうか、障害物があるかどうかを示す変数を格納しておく。ここでは、可動判定部122、移動方向設定部123で使用する変数としてnext[n][i](n=1,2,3,4)を、接続判定部124で使用する変数としてconnect[n][i](n=1,2,3,4,5,6,7,8)を格納しておく。next[n][i]は、ロボットiの周囲の4つのマスnに他のロボットが存在するか否か、障害物が存在するか否かを値として保持する。また、next[n][i]は、ロボットが目標隊列エリアG内に存在するときに、ロボットiの周囲の4つのマスnが、目標隊列エリアGに含まれるか否かを値として保持する。connect[n][i]は、ロボットiの周囲の8つのマスnに他のロボットが存在するか否かを値として保持する。なお、nはロボットiからみた方向を示すインデックスであり、図7はnとマス目との対応の例を示す。なお、図中の値「0」はロボットiの位置を表す。
<通信部150>
行動制御システム100が実装されているロボットも含め、全てのロボットは、通信部150を介して、二次元平面上の上下左右の方向において隣接する他のロボットと通信することができる。
<行動選択部120>
行動選択部120は、記憶部140から価値関数Qを取り出す。以下に述べるのは、ロボット動作開始後の各時刻ステップにおける行動選択の際に行われる処理であり、行動選択部120で行われる。行動選択部120は、通信部150を介して、他のロボットから後述する隣接状態判定部121の判定結果を受け取る。行動選択部120は、価値関数Qを用いて、1回の行動制御により、少なくとも1つのロボットが静止し、残りのロボット全てが同じ方向に移動するように制御する(S120)。ただし、行動選択部120は、複数のロボット全てが常に接続状態を維持し、かつ、1つの群れを成すように制御する。なお、接続状態とは、あるロボットの、2次元平面上の上下左右の何れかの隣接する位置に他のロボットが存在する状態をいう。例えば、行動選択部120は、各ロボットiに対して、行動aを実行するように制御信号を出力して、各ロボットiを制御する。
前述の通り、行動選択部120は、隣接状態判定部121と、可動判定部122と、移動方向設定部123と、接続判定部124と、位置更新部125と、位置判定部126とを含み、ここで述べた順に処理が行われる。
<隣接状態判定部121>
隣接状態判定部121は、ロボットの2次元平面上の上下左右の隣接する位置に、障害物または他のロボットが存在するか否かを判定し、ロボットの2次元平面上の右上、左上、左下、右下の隣接する位置に他のロボットが存在するか否かを判定し(S121−1),判定結果を記憶部140に格納する。また、隣接状態判定部121は、ロボットが目標隊列エリアG内に存在するときに、ロボットの2次元平面上の上下左右の隣接する位置のマスが、目標隊列エリアGに含まれるか否かを判定し(S121−1)、判定結果を記憶部140に格納する。
なお、上述の通り、行動制御システム100が実装されていないp-1台のロボットについても、通信部150と、隣接状態判定部121とを含むため、各ロボットiは隣接状態判定部121において、自身の周囲8方向に障害物があるかどうか、他のロボットがいるかどうかを検出し、以下の通りにnext[n][i],connect[n][i]の値を設定し、通信部150を介して行動制御システム100に出力する。行動制御システム100は、通信部150を介して各ロボットiから判定結果next[n][i],connect[n][i]を受け取り、行動制御システム100に含まれる隣接状態判定部121の判定結果next[n][i],connect[n][i]と一緒に記憶部140に格納する。なお、p台のロボットは、条件(2)各ロボットの隣り合う位置(上下左右)に必ず、他のロボットが存在し、条件(3)隣り合うロボット同士がなす群れは、一つなので、各ロボットiは通信部150を介してp-1個の判定結果next[n][i],connect[n][i]を直接、または、他のロボットを介して、行動制御システム100に送信することができる。また、行動制御システム100は、通信部150を介して、直接、または、他のロボットを介して、各ロボットiに行動aを実行するように制御信号を送信することができる。また、他の情報もp台のロボット間で送受信可能となる。
(next[n][i]変数での上下左右方向の検出)
まず、すべてのnとiでnext[n][i]の値をpに初期化し、続いて、
i番目のロボットが、右(X軸正)方向でj番目のロボットと接しているとき、next[1][i]←j
i番目のロボットが、上(Y軸正)方向でj番目のロボットと接しているとき、next[2][i]←j
i番目のロボットが、左(X軸負)方向でj番目のロボットと接しているとき、next[3][i]←j
i番目のロボットが、下(Y軸負)方向でj番目のロボットと接しているとき、next[4][i]←j
とする。続いて、
i番目のロボットが、右(X軸正)方向で障害物と接しているか、i番目のロボットがG内にあって、右(X軸正)方向で隣接する格子がG外であるとき、next[1][i]←-1
i番目のロボットが、上(Y軸正)方向で障害物と接しているか、i番目のロボットがG内にあって、上(Y軸正)方向で隣接する格子がG外であるとき、next[2][i]←-1
i番目のロボットが、左(X軸負)方向で障害物と接しているか、i番目のロボットがG内にあって、左(X軸負)方向で隣接する格子がG外であるとき、next[3][i]←-1
i番目のロボットが、下(Y軸負)方向で障害物と接しているときか、i番目のロボットがG内にあって、下(Y軸負)方向で隣接する格子がG外であるとき、next[4][i]←-1
とする。結果、ロボットが、各方向にて、なにとも接しておらず、Gの境界上にもないときに、next[n][i]←pとなる。
(connect[n][i]変数での右上、左上、左下、右下の検出)
つづいて、8つ隣接方向において、他のロボットが存在するかどうかを検出し、以下のようにconnect変数の値を設定する。
i番目のロボットが、右(X軸正)方向でj番目のロボットと接しているとき、next[1][i]←j
i番目のロボットが、上(Y軸正)方向でj番目のロボットと接しているとき、next[2][i]←j
i番目のロボットが、左(X軸負)方向でj番目のロボットと接しているとき、next[3][i]←j
i番目のロボットが、下(Y軸負)方向でj番目のロボットと接しているとき、next[4][i]←j
i番目のロボットの右上(X軸正、Y軸正)隣の位置にロボットjがあるとき、next[5][i]←j
i番目のロボットの左上(X軸負、Y軸正)隣の位置にロボットjがあるとき、next[6][i]←j
i番目のロボットの左下(X軸負、Y軸負)隣の位置にロボットjがあるとき、next[7][i]←j
i番目のロボットの右下(X軸正、Y軸負)隣の位置にロボットjがあるとき、next[8][i]←j
上記以外の条件で、next[n][i]←p
例えば、センサにより隣接する位置に、障害物が存在するか否かを検知する。通信部150により通信することにより隣接する位置に、他のロボットが存在するか否かを検知すればよい。通信する際に互いにロボットの番号やID等を送信することで、隣接する位置に存在するロボットの番号jを知ることができる。
<可動判定部122>
可動判定部122は、あるロボットiの2次元平面上の上下左右の隣接する位置に、障害物が存在するときに、そのロボットiが障害物が存在する方向に移動しないように制御し、さらに、そのロボットiが障害物が存在する方向とは反対方向において連続して隣接する全ての他のロボットiが障害物が存在する方向に移動しないように制御する(S122)。また、可動判定部122は、行動aによりロボットiがG内からG外へ移動しないように制御し、さらに、そのロボットiがGの境界線が存在する方向とは反対方向において連続して隣接する全ての他のロボットiが境界線が存在する方向に移動しないように制御する(S122)。例えば、ロボットiに対して、以下の通りにmove[a][i]を更新する。図8は可動判定部122の処理フローの例を示す。
まず、全てのa=1,2,3,4とi=0,1,…,p-1において、move[a][i]の値を1とする(S122a)。続いて、0からp-1までの間の整数でランダムに選んだ値をistopとし(S122b)、全てのa=1,2,3,4の値について、move[a][istop]の値を0とする(S122c)。なお、この処理は、「(1)各行動選択時に、必ず1つ以上の移動を行わないロボットがなければならない。」との条件を維持するためのものであり、少なくとも、ロボットistopが静止するように制御している。
続いて、以下の処理を、move[a][i]の値が一つも更新されなくなるまで繰り返す(S122t)。
全てのa=1,2,3,4とi=0,1,…,p-1において(S122d,S122e,S122r,S122s)、
(i) move[a][i]=1、かつ、next[a][i]=-1のとき、move[a][i]を0に更新する(S122f,S122g、S122h)。
(ii)また、move[a][i]=0のとき、next[a][j]=iとなるjについて、move[a][j]を0に更新する(S122m〜S122q)。
以上の繰り返し更新は、ロボットiの行動aの進行方向において隣接する位置に障害物がある際に、ロボットiが行動aについて非可動であり(S122h)、その進行方向の逆に接しているロボットjが行動aについて非可動であることを設定するものである(S122o,S122p)。move[a][i]の値が一つも更新されなくなるまで繰り返し更新(S122t)を行うことにより、障害物に接しているロボットの背後に接している全てのロボットが行動a(障害物を押す方向に移動する)について非可動であることを設定する。
例えば、図9において、a=1の場合、まず、(X,Y)=(4,1)に位置するロボットは、行動aの進行方向において隣接する位置に障害物が存在するため、行動aについて非可動に設定する(S122h)。さらに、(X,Y)=(4,1)に位置するロボットに、行動aの進行方向の逆に接している、(X,Y)=(3,1)に位置するロボットについても行動aについて非可動に設定する(S122p)。更新処理が行われたため、処理S122d〜S122sを繰り返す。一回目の繰り返し処理で、(X,Y)=(2,1)に位置するロボットについても行動aについて非可動に設定する(S122p)。二回目の繰り返し処理ではmove[a][i]の値が一つも更新されないため、処理を終了する。
<移動方向設定部123>
移動方向設定部123は、あるロボットiが、ある方向の隣接する位置に移動するという行動aを実行した場合の価値関数の値Q(s,a)が、静止するという行動を実行した場合の価値関数の値Q(s,0)よりも大きくなる場合に、ロボットiから行動aにより移動する方向において連続して隣接する全ての他のロボットについて、行動aを実行した場合に得られる価値関数の値Q(s,a)が、静止するという行動を実行した場合に得られる価値関数の値Q(s,0)よりも小さいことを理由として、行動aが非可動と設定されている場合には、行動aが可動となるように制御する(S123)。
例えば、以下の処理を行う。図10及び図11は移動方向設定部123の処理フローの例を示す。
全てのa=1,2,3,4とi=0,1,…,p-1において(S123a,S123b,S123h,S123i)、s←(Xr[i],Yr[i])とするとき、
(i)ロボットiの位置がG内にあるときは、Q(s,a)の値に関わらず、move[a][i]の値の更新は行わない(s123c)。
(ii)ロボットiの位置がG外にあり(S123c)、Q(s,a)がQ(s,0)より小さくかつmove[a][i]=1のとき(S123f)、move[a][i]を2に更新する(S123e)。
以上の処理は、一度目標位置矩形集合のG内に入ったロボットiがGの外に出ることが許されないということは、next[a][i]の値の設定と可動判定部122にてすでに考慮されていることと、Gの外に位置するロボットは、静止している場合よりも価値関数Qの値が小さくなる行動の選択を許されない(S123f、S123e)という条件の設定をしている。ここで、静止している場合よりも価値関数Qの値が小さくなる行動とは、その行動をとることによって、現在位置よりも高報酬を得られる位置までの道のりが遠のくということを示している。例えば、図2のロボットR1は、G外にあり、右に移動すると、入口位置Peが遠のくため、Q(s,1)<Q(s,0)であり、move[1][R1]←2と設定される。
さらに続いて、以下の処理を行う。
全てのa=1,2,3,4とi=0,1,…,p-1において(S123j,S123k,S123u,S123v)、s=(Xri,Yri)とするとき、
ロボットiの位置がG外にあり(S123l)、Q(s,a)がQ(s,0)以上の値のときで、かつmove[a][i]=1のとき(S123n)、
変数ipushedの初期値をiとして(S123o)、以下の処理を、next[a][ipushed]の値がpでない間繰り返す(S123p)。
ipushedの値にnext[a][ipushed]の値を設定する(S123q)。
move[a][ipushed]=2ならば(S123r)、move[a][ipushed]を1に更新する(S123s)。
以上の処理は、行動aによって可動となっているロボットiが移動する際に、障害物にさえぎられる以外の理由で非可動となっているロボットipushedが(S123r)、ロボットiに押される形で、行動aの方向に移動することを設定するものである(S123s)。この処理は条件(4)「各ロボット同士の選択する行動の違いによる衝突に伴う、群れの移動の停滞を避ける。」を維持するためのものであり、ロボットipushedが、行動aによって高報酬を得るには不利な移動を強いられる場合でも、行動aによる移動が好都合なロボットiの移動を邪魔せずに受け入れることを示している。
例えば、a=1のとき、図2のロボットR2は、右に移動すると、入口位置Peが近づくため、Q(s,1)≧Q(s,0)であり、右方向で隣接するロボットR1は前述の通り、move[1][R1]←2と設定されていると考えられるため、move[1][R1]を1に更新する。
<接続判定部124>
接続判定部124は、隣接状態判定部121による判定結果,connect[n][i]を用いて、仮にあるロボットiが行動aによりある方向に移動したときに、行動aにより移動する方向と直交する方向において隣接するロボットとの接続状態を維持するか否かを判定し、維持しない場合、ロボットiは行動aにより移動する方向と直交する方向において隣接するロボットに対して相対移動不可能であると設定し、ロボットiが行動aについて非可動である場合、ロボットiに行動aにより移動する方向及びその反対方向において隣接するロボットが行動aについて非可動となるように制御し、ロボットiが行動aについて非可動である場合であって、行動aにより移動する方向と直交する方向においてロボットiに隣接するロボットが、行動aにより移動する方向に相対移動不可能である場合には、行動aにより移動する方向と直交する方向においてロボットiに隣接するロボットが行動aについて非可動となるように制御する(S124)。
例えば、以下の処理を行う。図12及び図13は接続判定部124の処理フローの例を示す。
接続判定部124では、変数movable_plus[a][i],movable_minus[a][i]を使用し、非可動なロボットに接するロボットの可動性の判定を行う。
movable_plus[a][i]は、X軸Y軸のうち、行動aにより移動する方向に直交する軸の正の側でロボットiが接するロボットとの間の可動性を示す変数であり、1の場合は、接するロボットに対して行動aの方向の相対移動が可能であることを示す。0の場合は接するロボットに対して行動aの方向の相対移動が不可能であることを示す。
movable_minus[a][i]は、X軸Y軸のうち、行動aにより移動する方向に直交する軸の負の側でロボットiが接するロボットとの間の可動性を示す変数であり、1の場合は、接するロボットに対して行動aの方向の相対移動が可能であることを示す。0の場合は接するロボットに対して行動aの方向の相対移動が不可能であることを示す。
一連の処理のはじめとして、まず、以下の処理によりあるロボットiが行動aによりある方向に移動したときに、接続状態を維持するか否かを判定する。
全てのa=1,2,3,4とi=0,1,…,p-1において(S124a、S124b、S124f、S124g)、接続状態を維持するか否かを判定し(S124c)、維持する場合には、movable_plus[a][i]←1またはmovable_minus[a][i]←1とし(S124d)、維持しない場合には、movable_plus[a][i]←0及びmovable_minus[a][i]←0とする(S124e)。行動aにより移動する方向に直交する方向においてロボットiに隣接する他のロボットが仮に不可動であり、かつ、ロボットiが行動aにより移動する方向に移動したとして、接続状態を維持することができる場合にmovable_plus[a][i]←1またはmovable_minus[a][i]←1としている。なお、ロボットiに隣接する他のロボットが可動であれば、行動aにより同じ方向に移動するため、当然、移動前にロボットiと隣接する他のロボットは、移動後においてもロボットiと隣接し、接続状態を維持することができる。例えば、(i)行動aにより移動する方向に直交する方向に、行動aによる移動の前後において、ロボットiに隣接する他の不可動のロボットが存在する場合、または、(ii)行動aにより移動する方向に直交する方向に、行動aによる移動の前において、ロボットiに隣接する他の不可動のロボットが存在し、かつ、行動aにより移動する方向の反対方向に、行動aによる移動の前において、ロボットiに隣接する他の可動のロボットが存在する場合に、接続状態を維持することができる。例えば、図7において、「0」の位置のロボットiが右に移動しようとするとき、(i)「4」「8」の位置に不可動のロボットが存在する場合、または、(ii)「4」の位置に不可動のロボットが存在し、かつ、「3」の位置に可動のロボットが存在する場合、移動後においても接続状態を維持することができる。
よって、全てのa=1,2,3,4とi=0,1,…,p-1において、
(1-i)a=1かつ、move[a][i]=1かつ、-1<connect[8][i]<pかつ-1<connect[4][i]<pのとき、movable_minus[a][i]←1に設定する。
(1-ii)a=1かつ、move[a][i]=1かつ、-1<connect[3][i]<pかつ-1<connect[4][i]<pかつmove[a][connect[3][i]]=1のとき、movable_minus[a][i]←1に設定する。
(1-iii)a=1かつ、move[a][i]=1かつ、-1<connect[2][i]<pかつ、-1<connect[5][i]<pのとき、movable_plus[a][i]←1に設定する。
(1-iv)a=1かつ、move[a][i]=1かつ、-1<connect[3][i]<pかつ、-1<connect[2][i]<pかつ、move[a][connect[3][i]]=1のとき、movable_plus[a][i]←1に設定する。
(2-i)a=2かつ、move[a][i]=1かつ、-1<connect[6][i]<pかつ、-1<connect[3][i]<pのとき、movable_minus[a][i]←1に設定する。
(2-ii)a=2かつ、move[a][i]=1かつ、-1<connect[3][i]<pかつ、-1<connect[4][i]<pかつ、move[a][connect[4][i]]=1のとき、movable_minus[a][i]←1に設定する。
(2-iii)a=2かつ、move[a][i]=1かつ、-1<connect[1][i]<pかつ、-1<connect[5][i]<pのとき、movable_plus[a][i]←1に設定する。
(2-iv)a=2かつ、move[a][i]=1かつ、-1<connect[1][i]<pかつ、-1<connect[4][i]<pかつ、move[a][connect[4][i]]=1のとき、movable_plus[a][i]←1に設定する。
(3-i)a=3かつ、move[a][i]=1かつ、-1<connect[7][i]<pかつ、-1<connect[4][i]<pのとき、movable_minus[a][i]←1に設定する。
(3-ii)a=3かつ、move[a][i]=1かつ、-1<connect[1][i]<pかつ、-1<connect[4][i]<pかつ、move[a][connect[1][i]]=1のとき、movable_minus[a][i]←1に設定する。
(3-iii)a=3かつ、move[a][i]=1かつ、-1<connect[2][i]<pかつ、-1<connect[6][i]<pのとき、movable_plus[a][i]←1に設定する。
(3-iv)a=3かつ、move[a][i]=1かつ、-1<connect[1][i]<pかつ、-1<connect[2][i]<pかつ、move[a][connect[1][i]]=1のとき、movable_plus[a][i]←1に設定する。
(4-i)a=4かつ、move[a][i]=1かつ、-1<connect[3][i]<pかつ、-1<connect[7][i]<pのとき、movable_minus[a][i]←1に設定する。
(4-ii)a=4かつ、move[a][i]=1かつ、-1<connect[3][i]<pかつ、-1<connect[2][i]<pかつ、move[a][connect[2][i]]=1のとき、movable_minus[a][i]←1に設定する。
(4-iii)a=4かつ、move[a][i]=1かつ、-1<connect[1][i]<pかつ、-1<connect[8][i]<pのとき、movable_plus[a][i]←1に設定する。
(4-iv)a=4かつ、move[a][i]=1かつ、-1<connect[1][i]<pかつ、-1<connect[2][i]<pかつ、move[a][connect[2][i]]=1のとき、movable_plus[a][i]←1に設定する。
(5)上記条件以外の場合、movable_plus[a][i]←0、movable_minus[a][i]←0に設定する。
以上の処理は、例えば、右方向への移動について、ロボットiの下方向と右下方向に隣接するロボットが存在する場合と、ロボットiの下方向と左方向に隣接するロボットが存在する場合において、ロボットiは、下方向のロボットに対して相対移動が可能であることを示す。これは、下方向のロボットがもし不可動であった場合でも、ロボットiは右方向に可動であることを示す。
続いて、以下の処理を、move[a][i]の値が一つも更新されなくなるまで繰り返す(S124p)。
全てのa=1,2,3,4とi=0,1,…,p-1において(S124h、S124i、S124n、S124o)、ロボットiが行動aについて非可動であるか否かを判定し(S124j)、非可動である場合、ロボットiが行動aにより移動する方向及びその反対方向においてロボットiに隣接するロボット(=connect[a][i]、connect[a-1][i])が行動aについて非可動となるように制御する(S124k)。つまり、move[a][connect[a][i]]←0、move[a][connect[a-1][i]]←0とする。なお、a-1は行動aの逆方向に1格子だけ移動するという行動を表す。aとa-1の関係の一例は以下のようになる。
a=0のとき、a-1=0
a=1のとき、a-1=3
a=2のとき、a-1=4
a=3のとき、a-1=1
a=4のとき、a-1=2
例えば、図14Aにおいて、(X,Y)=(4,3)に位置するロボットがa=1(右方向に1格子分移動する)に対して非可動の場合、まず、行動aにより移動する方向及びその反対方向において(X,Y)=(4,3)に位置するロボットiに隣接する、(X,Y)=(5,3)に位置するロボットと(X,Y)=(3,3)に位置するロボットをa=1に対して非可動に設定する。更新処理が行われたため、処理S124h〜S124oを繰り返す。一回目の繰り返し処理で、(X,Y)=(3,3)に位置するロボットに隣接する(X,Y)=(2,3)に位置するロボットについても行動aについて非可動に設定する。二回目の繰り返し処理では、move[a][i]の値が一つも更新されないため、処理を終了する。
さらに、行動aにより移動する方向と直交する方向においてロボットiに隣接するロボットjが、行動aにより移動する方向に相対移動不可能であるか否かを判定し(S124l)、相対移動不可能である場合には、行動aにより移動する方向と直交する方向においてロボットiに隣接するロボットjが行動aについて非可動となるように制御する(S124m)。
例えば、図14Bにおいて、(X,Y)=(3,2)に位置するロボットがa=1に対して非可動の場合、まず、行動aにより移動する方向と直交する方向において、(X,Y)=(3,2)に位置するロボットiに隣接する、(X,Y)=(3,3)に位置するロボットが、行動aにより移動する方向(ここでは右)に相対移動不可能であるか否かを判定する。ここで、(X,Y)=(3,3)に位置するロボットは、(X,Y)=(3,2)に位置するロボットが仮に不可動であった場合、接続状態を維持できないため、相対移動不可能(movable_minus[a][i]=0)であると考えられる。この場合、(X,Y)=(3,3)に位置するロボットをa=1に対して非可動に設定する。更新処理が行われたため、処理S124h〜S124oを繰り返す。一回目の繰り返し処理で、(X,Y)=(3,3)に位置するロボットに隣接する(X,Y)=(3,4)に位置するロボットについても行動aについて非可動に設定する。二回目の繰り返し処理では、move[a][i]の値が一つも更新されないため、処理を終了する。
例えば、全てのa=1,2,3,4とi=0,1,…,p-1において、move[a][i]=1でないロボットiについて(つまりmove[a][i]=0や、move[a][i]=2)、
(1-i)a=1かつ、-1<connect[2][i]<pかつ、movable_minus[a][connect[2][i]]=0かつmove[a][connect[2][i]]=1のとき、move[a][connect[2][i]]←0に更新する。
(1-ii)a=1かつ、-1<connect[4][i]<pかつ、movable_plus[a][connect[4][i]]=0かつmove[a][connect[4][i]]=1のとき、move[a][connect[4][i]]←0に更新する。
(1-iii)a=1かつ、-1<connect[3][i]<pかつ、move[a][connect[3][i]]=1のとき、move[a][connect[3][i]]←0に更新する。
(1-vi)a=1かつ、-1<connect[1][i]<pかつ、move[a][connect[1][i]]=1のとき、move[a][connect[1][i]]←0に更新する。
(2-i)a=2かつ、-1<connect[1][i]<pかつ、movable_minus[a][connect[1][i]]=0かつmove[a][connect[1][i]]=1のとき、move[a][connect[1][i]]←0に更新する。
(2-ii)a=2かつ、-1<connect[3][i]<pかつ、movable_plus[a][connect[3][i]]=0かつmove[a][connect[3][i]]=1のとき、move[a][connect[3][i]]←0に更新する。
(2-iii)a=2かつ、-1<connect[2][i]<pかつ、move[a][connect[2][i]]=1のとき、move[a][connect[2][i]]←0に更新する。
(2-vi)a=2かつ、-1<connect[4][i]<pかつ、move[a][connect[4][i]]=1のとき、move[a][connect[4][i]]←0に更新する。
(3-i)a=3かつ、-1<connect[2][i]<pかつ、movable_minus[a][connect[2][i]]=0かつmove[a][connect[2][i]]=1のとき、move[a][connect[2][i]]←0に更新する。
(3-ii)a=3かつ、-1<connect[4][i]<pかつ、movable_plus[a][connect[4][i]]=0かつmove[a][connect[4][i]]=1のとき、move[a][connect[4][i]]←0に更新する。
(3-iii)a=3かつ、-1<connect[3][i]<pかつ、move[a][connect[3][i]]=1のとき、move[a][connect[3][i]]←0に更新する。
(3-vi)a=3かつ、-1<connect[1][i]<pかつ、move[a][connect[1][i]]=1のとき、move[a][connect[1][i]]←0に更新する。
(4-i)a=4かつ、-1<connect[1][i]<pかつ、movable_minus[a][connect[1][i]]=0かつmove[a][connect[1][i]]=1のとき、move[a][connect[1][i]]←0に更新する。
(4-ii)a=4かつ、-1<connect[3][i]<pかつ、movable_plus[a][connect[3][i]]=0かつmove[a][connect[3][i]]=1のとき、move[a][connect[3][i]]←0に更新する。
(4-iii)a=4かつ、-1<connect[2][i]<pかつ、move[a][connect[2][i]]=1のとき、move[a][connect[2][i]]←0に更新する。
(4-vi)a=4かつ、-1<connect[4][i]<pかつ、move[a][connect[4][i]]=1のとき、move[a][connect[4][i]]←0に更新する。
以上の処理は、すでに非可動であると判定されたロボットに隣接するロボットの可動判定を、movable_minus変数と、movable_plus変数の値で示された相対的可動性に従って行っていることを示す。接続判定部124の処理は条件(2)「各ロボットの隣り合う位置(上下左右)に必ず、他のロボットが存在していなければならない。」、条件(3)「隣り合うロボット同士がなす群れは、一つでなければならない。」を維持するための処理である。
以上の行動選択部120に含まれる隣接状態判定部121、可動判定部122、移動方向設定部123、接続判定部124の処理が済んだあとで、各ロボットiのmove[a][i]変数が1の場合は、そのロボットが行動aによって移動可能であることを示す。
<位置更新部125>
位置更新部125は、まず、ロボット全体に指示される行動値a_allを決定する。決定の方法はランダムな方法か、もしくは、各行動aの値について、各ロボットiのQ(s,a)の値がQ(s,0)以上であるロボットの数の合計Sum(a)を計算し、Sum(a)の値に比例した確率でa_allの値を選択してもよい。また、縦方向の移動の行動(a=2,4)と横方向の移動(a=1,3)を交互にa_allの値として選択することとし、縦方向の行動を選ぶ際の上下のどちらの行動を選ぶか、もしくは横方向の行動を選ぶ際の右左どちらの行動を選ぶかについては、Sum(a)の値に比例した確率で、a_allの値を選択する方法でもよい。位置更新部125は、a_allの値が決定した後は、各ロボットiに対して、move[a_all][i]の値が1の場合だけ、行動a_allに従った移動をするように制御信号を出力する。位置更新部125は、move[a_all][i]の値が1以外の場合は、ロボットiに対して制御信号を出力しない、または、静止するように制御信号を出力する。
位置更新部125は、各i=0,1,…,p-1について、i番目のロボットの現在の位置(Xr[i],Yr[i])において、行動値a_allに対応する行動、または静止するという行動を実行した場合のロボットの移動後(行動後)の位置(Xr'[i],Yr'[i])を計算し、計算された(Xr'[i],Yr'[i])で記憶部140に格納されたi番目のロボットの位置を更新する(S125)。言い換えれば、位置更新部125は、選択された行動a_allに基づいて、ロボットが行動した場合に想定される位置(以下、「想定位置」ともいう)を計算し、ロボットの位置を更新し記憶部140に格納する。
さらに、各ロボットiにおいて、制御信号に従って行動を実行した後に、隣接状態判定部121が隣接状態を判定する(S121−2)。各ロボットiは、判定結果を通信部150を介して行動制御システム100に出力し、行動制御システム100は判定結果を記憶部140に格納する。
なお、ロボットが移動するように制御信号を出力したとしても、何らかのトラブル(感知できなかった障害物の存在や、機器の故障等)により、制御信号通りに移動できるとは限らない。一方、静止するように制御されたロボットの位置は、制御信号を出力する前と変わらない。よって、静止するように制御されたロボットの位置を基準として、隣接状態判定部121による判定結果を用いて、移動するように制御されたロボットの、実際に行動した後の位置(以下「行動後位置」ともいう)(Xr"[i],Yr"[i])を求めることができる。
<位置判定部126>
位置判定部126は、前述の通り、隣接状態判定部121による判定結果を用いて、行動後位置を求め、行動後位置(Xr"[i],Yr"[i])と想定位置(Xr'[i],Yr'[i])とが一致するか否かを判定する(S126)。なお、一致しない場合には、移動するように制御されたロボットが何らかのトラブルにより、制御信号通りに移動できなかったと考えられる。この場合、行動後位置(Xr"[i],Yr"[i])と想定位置(Xr'[i],Yr'[i])との少なくとも一方を補正すればよい。補正方法としては様々な手法が考えられる。例えば、全てのロボットに対して、制御前の位置に戻るように指示し、行動後位置(Xr"[i],Yr"[i])を補正してもよいし、想定位置(Xr'[i],Yr'[i])を行動後位置(Xr"[i],Yr"[i])に合わせて補正してもよい。
以上に述べた処理を毎時刻ステップごとに行う。
各時刻ステップごとに、すべてのロボットがG内にあるかどうかを判定し(S127)、すべてのロットがG内にあるときは、任務を終了する。そうでないときは、任務を継続する。
例えば、図示しない目標位置到達判定部において、各i=0,1,…,p-1について、位置判定部126から出力された行動後位置(Xr"[i],Yr"[i])∈Gであるか否かを判定し、全てのiについて(Xr"[i],Yr"[i])∈Gである場合には、任務を終了する。少なくとも1つ以上のiについて(Xr"[i],Yr"[i])∈Gを満たさない場合には、行動選択部120を再度実行するよう制御する。
<効果>
このような構成により、一台のロボットに必要な分だけのマルコフ状態空間を用意し、それを用いて動的計画法を利用して各位置でのロボットの行動方策を計算し、その行動方策を利用することで、ロボットに任意の矩形隊列形状と、任務環境内の任意の障害物形状に対応した、ロボット同士が接した状態を維持したうえでの多数ロボットのための隊列形成アルゴリズムを獲得することができる。すなわち、ロボット数に依存せずにロボット一台分の計画計算負荷での自己位置座標定義型隊列形成アルゴリズム獲得ができる。また、静止しているロボットに対する相対的な位置を判定することで、絶対的な位置を取得することができるため、付加的な位置計測用の装備を必要としない。
<変形例>
入力部160を介して入力される初期位置(Xr0[i],Yr0[i])が、実際にロボットが配置されている位置と一致するという前提の場合には、S121−1における隣接状態判定部121の処理を省略してもよい。その場合、行動制御システム100は、各ロボットiから判定結果next[n][i]を受信せずとも初期位置(Xr0[i],Yr0[i])から計算により隣接状態を取得することができる。
本実施形態では、各格子(マス)は、正方形であるが、他の形状であってもよい。格子は左右方向及び上下方向に連続して配置される。また、各格子は左右方向で他の二つの格子と隣接し、上下方向で他の二つの格子と隣接する。言い換えると、各格子は、ロボットの移動できる方向と同じ方向においてのみ、他の格子と隣接する。この条件を満たせば、各格子はどのような形状であってもよい。また、「直交」とは、厳密に「垂直に交わること」を意味しなくともよく、例えば、図15のように、各格子は、菱形であってもよく、各格子が他の二つの格子と隣接する方向の一方を上下方向とし、他方を左右方向とすればよく、このとき、上下方向と左右方向とは直交するものとする。
別の言い方をすると、制御対象物は、二次元平面上の、第一方向(例えば右方向)、第一方向に対して平行でない方向である第二方向(例えば上方向)、第一方向に対して反対方向である第三方向(例えば左方向)、第二方向に対して反対方向である第四方向(例えば下方向)に移動可能であり、一回の行動制御により、現在いる領域(格子、マス)から、現在いる領域に対して、第一方向、第二方向、第三方向、第四方向において隣接する領域の何れかに移動するように制御される。この場合、目標位置の集合は、第一方向に平行な二つの辺と第二方向に平行な二つの辺からなる平行四辺形を成す。また、この場合、ロボットの2次元平面上の、第一方向において隣接する位置を第一位置、第二方向において隣接する位置を第二位置、第三方向において隣接する位置を第三位置、第四方向において隣接する位置を第四位置、第一位置に第二方向において隣接する位置を第五位置、第二位置に第三方向において隣接する位置を第六位置、第三位置に第四方向において隣接する位置を第七位置、第四位置に第一方向において隣接する位置を第八位置と呼んでもよい。例えば第一〜第八位置は、それぞれ図7の「1」〜「8」の位置に対応する。
可動判定部122では、図8のS122b,S122cの処理を行わず、予め移動を行わないロボットを決めておいてもよい。例えば、図16Aのようにp個の初期位置(Xr0[i],Xr0[i])及びp個の目標位置(Xre[i],Yre[i])の集合Gが設定されている場合、つまり、p個の目標位置(Xre[i],Yre[i])の集合Gの中にp個の初期位置(Xr0[i],Xr0[i])の一部が含まれている場合には、その一部に位置するロボットを移動を行わないロボットとすることができる。また、初期位置の個数と目標位置の個数は同じでなくともよい。例えば、図16Bのように初期位置の個数をq、目標位置の個数をpとし、q>pの場合、予め移動を行わないロボットを決めておいても(例えば図16Bの初期位置の範囲の中で最も右下のロボット)、q個のロボットの内のp個のロボットを目標位置の集合Gに移動させ任務を終了することができる。
<第二実施形態>
第一実施形態と異なる部分を中心に説明する。
図6は第二実施形態に係る行動制御システムの処理フローの例を示す。
本実施形態では、行動制御システムは、p台のロボットi上に実装される。そして各ロボットiは、図5に示すように、行動選択部120と、記憶部140と、通信部150と、入力部160とを含む。なお、価値関数Qは、p台のロボットiで同じものを用いればいいため、動作計画部110は必ずしも必要としない。
行動選択部120は、隣接状態判定部121と、可動判定部122と、移動方向設定部123と、接続判定部124と、位置更新部125と、位置判定部126と、制御対象物特定部228とを含む。
以下、あるロボットiの処理について説明する。残りp-1台のロボットにおいて同様の処理が行われる。
記憶部140、通信部150及び入力部160の構成は第一実施形態と同様である。ただし、入力部160には、ロボットiの初期位置(Xr0[i],Xr0[i])及びp個の目標位置(Xre[i],Yre[i])の集合G={(Xre[0],Yre[0]),(Xre[1],Yre[1]),…,(Xre[p-1],Yre[p-1])}が入力され、記憶部140に記憶される。
なお、記憶部140に、各ロボットiが、自身が可動であるか非可動であるかを示す変数move[a][i]を格納しておく。さらに、記憶部140に、各ロボットiの周囲に他のロボットがいるかどうか、障害物があるかどうかを示す変数next[n][i](n=1,2,3,4),connect[n][i](n=1,2,3,4,5,6,7,8)を格納しておく。
なお、本実施形態では、初期位置としてp台のロボットの初期位置、変数move[a][i]及び変数connect[n][i]、next[n][i]を記憶するのではなく、ロボットi自身の初期位置、変数move[a][i]及び変数connect[n][i]、next[n][i]のみ(1台分)を記憶すればよい。
<行動選択部120>
行動選択部120は、記憶部140から価値関数Qを取り出す。以下に述べるのは、ロボット動作開始後の各時刻ステップにおける行動選択の際に行われる処理であり、行動選択部120で行われる。
行動選択部120は、価値関数Qを用いて、1回の行動制御により、少なくとも1つのロボットが静止し、残りのロボット全てが同じ方向に移動するように制御する(S120)。ただし、行動選択部120は、複数のロボット全てが常に接続状態を維持し、かつ、1つの群れを成すように制御する。
<隣接状態判定部121>
隣接状態判定部121は、ロボットiの2次元平面上の上下左右の隣接する位置に、障害物または他のロボットが存在するか否かを判定し、ロボットの2次元平面上の右上、左上、左下、右下の隣接する位置に他のロボットが存在するか否かを判定し(S121−1),判定結果connect[n][i]、next[n][i]を記憶部140に格納する。また、隣接状態判定部121は、ロボットが目標隊列エリアG内に存在するときに、ロボットの2次元平面上の上下左右の隣接する位置のマスが、目標隊列エリアGに含まれるか否かを判定し(S121−1)、判定結果を記憶部140に格納する。
<可動判定部122>
可動判定部122は、あるロボットiの2次元平面上の上下左右の隣接する位置に、障害物が存在するときに、そのロボットiが障害物が存在する方向に移動しないように制御し、さらに、そのロボットiが障害物が存在する方向とは反対方向において連続して隣接する全ての他のロボットiが障害物が存在する方向に移動しないように制御する(S122)。また、可動判定部122は、行動aによりロボットiがG内からG外へ移動しないように制御し、さらに、そのロボットiがGの境界線が存在する方向とは反対方向において連続して隣接する全ての他のロボットiが境界線が存在する方向に移動しないように制御する(S122)。例えば、ロボットiは、以下の通りにmove[a][i]を更新する。図17は可動判定部122の処理フローの例を示す。
まず、制御対象物特定部228は、p台のロボットの中から一つのロボットを特定する(図6のS228)。例えば、p台のロボットは、それぞれ乱数を取得し、その乱数が所定の値と一致するときに、その一致する乱数を取得したロボットが特定されたものとする。一致する乱数を取得したロボットは、通信部150を介して、他のp-1台のロボットに、自らが特定されたことを伝達する。なお、予めp台のロボットの中から一つのロボットを特定しておいた場合には、制御対象物特定部228における処理を省略してもよい。
ロボットiの可動判定部122は、ロボットiが制御対象物特定部228で特定されたロボットの場合、全てのa=1,2,3,4において、move[a][i]の値を0とする(図17のS122a、S122b)。
特定されたロボットではない場合、全てのa=1,2,3,4において、move[a][i]の値を1とする(図17のS122a、S122c)。
特定されたロボットではない場合、さらに、全てのa=1,2,3,4において(S122d,S122i)、(i)move[a][i]=1、かつ、next[a][i]=-1のとき、move[a][i]を0に更新する(S122e,S122f,S122g)。さらに、-1<next[a-1][i]<pのとき(行動aにより移動する方向と逆の方向の隣接する位置に他のロボットが存在するとき)、通信部150を介して自らがmove[a][i]を0に更新したことをロボットnext[a-1][i]に伝達する(S122h)。
特定されたロボットではない場合、さらに、全てのa=1,2,3,4において(S122j,S122n)、ロボットiは、ロボットnext[a][i]からmove[a][next[a][i]]を0に更新したことを受け取ったとき、move[a][i]を0に更新する(S122k,S122l)。さらに、-1<next[a-1][i]<pのとき(行動aにより移動する方向と逆の方向の隣接する位置に他のロボットが存在するとき)、通信部150を介して自らがmove[a][i]を0に更新したことをロボットnext[a-1][i]に伝達する(S122m)。所定の時間(障害物と隣接するロボットから、障害物が存在する方向とは反対方向において連続して隣接する最後尾のロボットに「move[a][i]を0に更新」したことを伝達するのに十分な時間)が経過するまで、S122j〜S122nを繰り返す(S122o)。
このような構成により、各ロボットが障害物の存在を検知し、障害物発見の際に、対応する行動の方向と逆に接するロボットに、障害物の発見を伝達することができる。
<移動方向設定部123>
移動方向設定部123は、あるロボットiが、ある方向の隣接する位置に移動するという行動aを実行した場合に得られる価値関数の値Q(s,a)が、静止するという行動を実行した場合に得られる価値関数の値Q(s,0)よりも大きくなる場合に、ロボットiから行動aにより移動する方向において連続して隣接する全ての他のロボットについて、行動aを実行した場合に得られる価値関数の値Q(s,a)が、静止するという行動を実行した場合に得られる価値関数の値Q(s,0)よりも小さいことを理由として、行動aが非可動と設定されている場合には、行動aが可動となるように制御する(S123)。
まず、ロボットiの移動方向設定部123は、図10のS123b〜S123hを行い、所定の条件を満たすときに、move[a][i]を2に更新する(S123e)。
さらに続いて、以下の処理を行う(図18参照)。
全てのa=1,2,3,4において(S123k,S123u)、s=(Xri,Yri)とするとき、
(i)ロボットiの位置がG内にあるときは、move[a][i]の値の更新の指示は送信しない。
(ii)ロボットiの位置がG外にあり(S123l)、Q(s,a)がQ(s,0)以上値のときで、かつmove[a][i]=1のとき(S123n)、
行動aにより移動する方向において隣接するロボットnext[a][i]が存在する場合(-1<next[a][i]<pを満たす場合)、そのロボットnext[a][i]に対し、move[a][next[a][i]]=2ならば(S123q)、move[a][next[a][i]]を1に更新するように指示を送信する(S123r)。
また、全てのa=1,2,3,4において(S123v,S123y)、行動aにより移動する方向に対して反対方向において隣接するロボットnext[a-1][i]が存在する場合(-1<next[a-1][i]<pを満たす場合)、かつ、そのロボットnext[a-1][i]から「move[a][i]=2ならば、move[a][i]を1に更新するように」との指示を受け取り、move[a][i]=2の場合(s123w)、move[a][i]を1に更新する(s123x)。所定の時間が経過するまで、処理S123v〜S123yを繰り返す(S123z)。
このような構成により、あるロボットが、行動aによって高報酬を得るには不利な移動を強いられる場合でも、行動aによる移動が好都合なロボットの移動を邪魔せずに受け入れることを示している。
<接続判定部124>
接続判定部124は、隣接状態判定部121による判定結果connect[n][i]を用いて、仮にあるロボットiが行動aによりある方向に移動したときに、行動aにより移動する方向と直交する方向において隣接するロボットに対して接続状態を維持するか否かを判定し、維持しない場合、ロボットiは行動aにより移動する方向と直交する方向において隣接するロボットに対して相対移動不可能であると設定し、ロボットiが行動aについて非可動である場合、ロボットiに行動aにより移動する方向及びその反対方向において隣接するロボットが行動aについて非可動となるように制御し、ロボットiが行動aについて非可動である場合であって、行動aにより移動する方向と直交する方向においてロボットiに隣接するロボットが、行動aにより移動する方向に相対移動不可能である場合には、行動aにより移動する方向と直交する方向においてロボットiに隣接するロボットが行動aについて非可動となるように制御する(S124)。
まず、ロボットiの接続判定部124は、図12のS124b〜S124fを行い、変数movable_plus[a][i],movable_minus[a][i]を設定する(S124d、S124e)。
続いて、以下の処理を行う(図19参照)。
全てのa=1,2,3,4において(S124i、S124n)、ロボットiが行動aについて非可動であるか否かを判定し(S124j)、非可動である場合、ロボットiが行動aにより移動する方向及びその反対方向においてロボットiに隣接するロボット(=connect[a][i]、connect[a-1][i])に対して、それぞれmove[a][connect[a][i]]及びmove[a][connect[a-1][i]]を0に更新するように指示を送信する(S124k)。
さらに、ロボットiが非可動である場合、行動aにより移動する方向と直交する方向においてロボットiに隣接するロボットjに対して、行動aにより移動する方向に相対移動不可能である場合には、move[a][j]を0に更新するように条件付きの指示を送信する(S124l)。
また、全てのa=1,2,3,4において(S124o,S124s)、ロボットconnect[a][i]またはロボットconnect[a-1][i]から「move[a][i]=1ならば、move[a][i]を0に更新するように」との指示を受け取った場合(S124p)、move[a][i]を0に更新する(S124q)。また、行動aにより移動する方向と直交する方向においてロボットiに隣接するロボットjから、「行動aにより移動する方向に相対移動不可能である場合には、move[a][i]を0に更新するように」との指示を受け取り、ロボットjが行動aにより移動する方向と直交する方向の軸の正側に位置するならば変数movable_plus[a][i],負側に位置するならばmovable_minus[a][i]が0の場合に、move[a][i]を0に更新する(S124r)。
所定の時間が経過するまで、処理S124o〜S124sを繰り返す(S124t)。
このような構成により、周囲のロボットと連携して、接続状態を維持することができる。
<位置更新部125>
位置更新部125は、まず、ロボット全体に指示される行動値a_allを決定する。決定の方法はランダムな方法か、もしくは、各行動aの値について、各ロボットiのQ(s,a)の値がQ(s,0)以上であるロボットの数の合計Sum(a)を計算し、Sum(a)の値に比例した確率でa_allの値を選択してもよい。例えば、制御対象物特定部228で特定されたロボット(図6のS228)の位置更新部125が、行動値a_allを決定する。その場合であって、Sum(a)を計算する場合、各ロボットからQ(s,a)の値がQ(s,0)以上であるか否かの判定結果を受信すればよい。
特定されたロボットの位置更新部125は、行動値a_allを各ロボットiに送信する。行動値a_allを受け取った各ロボットの位置更新部125は、現在の位置(Xr[i],Yr[i])において、行動値a_allに対応する行動、または静止するという行動を実行した場合のロボットiの移動後(行動後)の位置(Xr'[i],Yr'[i])を計算し、計算された(Xr'[i],Yr'[i])で記憶部140に格納された現在の位置を更新する(S125)。言い換えれば、位置更新部125は、選択された行動a_allに基づいて、ロボットiが行動した場合に想定される位置(以下、「想定位置」ともいう)を計算し、ロボットの位置を更新し記憶部140に格納する。
さらに、各ロボットiにおいて、制御信号に従って行動を実行した後に、隣接状態判定部121が隣接状態を判定し(S121−2)、判定結果next[n][i]を記憶部140に格納する。
<位置判定部126>
各ロボットiの位置判定部126は、隣接状態判定部121による判定結果を用いて、行動後位置を求め、行動後位置(Xr"[i],Yr"[i])と想定位置(Xr'[i],Yr'[i])とが一致するか否かを判定する(S126)。
以上に述べた処理を毎時刻ステップ(行動制御)ごとに行う。
各時刻ステップごとに、すべてのロボットがG内にあるかどうかを判定し(S127)、すべてのロットがG内にあるときは、任務を終了する。そうでないときは、任務を継続する。
<効果>
このような構成により、第一実施形態と同様の効果を得ることができる。さらに、本実施形態では、各処理を各ロボットに分散することができる。例えば、一部のロボットにトラブルか生じ、動作しなくなったとしても、残りのロボットにおいて任務を終了することもできる。
<その他の変形例>
本発明は上記の実施形態及び変形例に限定されるものではない。例えば、上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
<プログラム及び記録媒体>
また、上記の実施形態及び変形例で説明した各装置における各種の処理機能をコンピュータによって実現してもよい。その場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記各装置における各種の処理機能がコンピュータ上で実現される。
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶部に格納する。そして、処理の実行時、このコンピュータは、自己の記憶部に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実施形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよい。さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、プログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
また、コンピュータ上で所定のプログラムを実行させることにより、各装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。

Claims (7)

  1. 複数の制御対象物を所定の入口位置を含む目標位置の集合に移動させるための行動制御を行う行動制御システムであって、
    第一方向に対して平行でない方向を第二方向とし、第一方向に対して反対の方向を第三方向とし、第二方向に対して反対の方向を第四方向とし、前記目標位置の集合は第一方向に平行な二つの辺と第二方向に平行な二つの辺からなる平行四辺形を成し、前記制御対象物は、二次元平面上の第一〜第四方向において隣接する他の制御対象物と通信するための通信手段と、当該制御対象物の2次元平面上の第一方向において隣接する第一位置、第二方向において隣接する第二位置、第三方向において隣接する第三位置、及び、第四方向において隣接する第四位置に、障害物または他の制御対象物が存在するか否かを判定し、当該制御対象物の2次元平面上の、第一位置に第二方向において隣接する第五位置、第二位置に第三方向において隣接する第六位置、第三位置に第四方向において隣接する第七位置、及び、第四位置に第一方向において隣接する第八位置に他の制御対象物が存在するか否かを判定する隣接状態判定部とを備え、制御対象物がその制御対象物の現在の位置sにおいて各行動aを取ったときの適切さを表す1個の価値関数に基づいて制御され、1回の行動制御により、静止するか、または、二次元平面上の第一〜第四位置に移動するように制御されるものとし、
    前記価値関数が記憶される記憶部と、
    前記価値関数を用いて、1回の行動制御により、少なくとも1つの制御対象物が静止し、残りの制御対象物全てが同じ方向に移動するように制御する行動選択部とを含み、
    ある制御対象物の、第一〜第四位置の何れかに他の制御対象物が存在する状態を接続状態とし、前記行動選択部は、複数の前記制御対象物全てが常に接続状態を維持し、かつ、1つの群れを成すように制御する、
    行動制御システム。
  2. 請求項1の行動制御システムであって、
    前記行動選択部は、
    ある制御対象物iが、ある方向の隣接する位置に移動するという行動aを実行した場合に得られる前記価値関数の値Q(s,a)が、静止するという行動を実行した場合に得られる前記価値関数の値Q(s,0)よりも大きくなる場合に、前記制御対象物iから前記行動aにより移動する方向において連続して隣接する全ての他の制御対象物について、前記行動aを実行した場合に得られる前記価値関数の値Q(s,a)が、静止するという行動を実行した場合に得られる前記価値関数の値Q(s,0)よりも小さいことを理由として、前記行動aが非可動と設定されている場合には、行動aが可動となるように制御する移動方向設定部を含む、
    行動制御システム。
  3. 請求項1または2の行動制御システムであって、
    前記行動選択部は、
    ある制御対象物iの2次元平面上の第一〜第四位置に、障害物が存在するときに、その制御対象物iが障害物が存在する方向に移動しないように制御し、さらに、その制御対象物iが障害物が存在する方向とは反対方向において連続して隣接する全ての他の制御対象物が障害物が存在する方向に移動しないように制御する可動判定部と、
    前記隣接状態判定部による判定結果を用いて、仮にある制御対象物iが行動aによりある方向に移動したときに、前記行動aにより移動する方向と平行でない方向において隣接する制御対象物との接続状態を維持するか否かを判定し、維持しない場合、前記制御対象物iは前記行動aにより移動する方向と平行でない方向において隣接する制御対象物に対して相対移動不可能であると設定し、前記制御対象物iが前記行動aについて非可動である場合、前記制御対象物iに前記行動aにより移動する方向及びその反対方向において隣接する制御対象物が行動aについて非可動となるように制御し、前記制御対象物iが前記行動aについて非可動であって、かつ、前記行動aにより移動する方向と平行でない方向において前記制御対象物iに隣接する制御対象物が、前記行動aにより移動する方向に相対移動不可能である場合には、行動aにより移動する方向と平行でない方向において制御対象物iに隣接する制御対象物が行動aについて非可動となるように制御する接続判定部と、
    静止するように制御された制御対象物の位置を基準として、前記隣接状態判定部による判定結果を用いて、実際に行動した後の制御対象物の位置である行動後位置を求め、その行動後位置が、選択された行動に基づいて行動した場合に想定される想定位置と一致するか否かを判定する位置判定部と、を含む、
    行動制御システム。
  4. 行動制御システムを用いて、複数の制御対象物を所定の入口位置を含む目標位置の集合に移動させるための行動制御を行う行動制御方法であって、
    第一方向に対して平行でない方向を第二方向とし、第一方向に対して反対の方向を第三方向とし、第二方向に対して反対の方向を第四方向とし、前記目標位置の集合は第一方向に平行な二つの辺と第二方向に平行な二つの辺からなる平行四辺形を成し、前記制御対象物は、二次元平面上の第一〜第四方向において隣接する他の制御対象物と通信するための通信手段と、当該制御対象物の2次元平面上の第一方向において隣接する第一位置、第二方向において隣接する第二位置、第三方向において隣接する第三位置、及び、第四方向において隣接する第四位置に、障害物または他の制御対象物が存在するか否かを判定し、当該制御対象物の2次元平面上の、第一位置に第二方向において隣接する第五位置、第二位置に第三方向において隣接する第六位置、第三位置に第四方向において隣接する第七位置、及び、第四位置に第一方向において隣接する第八位置に他の制御対象物が存在するか否かを判定する隣接状態判定部とを備え、制御対象物がその制御対象物の現在の位置sにおいて各行動aを取ったときの適切さを表す1個の価値関数に基づいて制御され、1回の行動制御により、静止するか、または、二次元平面上の第一〜第四位置に移動するように制御されるものとし、
    予め計算された前記価値関数を用いて、1回の行動制御により、少なくとも1つの制御対象物が静止し、残りの制御対象物全てが同じ方向に移動するように制御する行動選択ステップとを含み、
    ある制御対象物の、第一〜第四位置の何れかに他の制御対象物が存在する状態を接続状態とし、前記行動選択ステップにおいて、複数の前記制御対象物全てが常に接続状態を維持し、かつ、1つの群れを成すように制御する、
    行動制御方法。
  5. 請求項4の行動制御方法であって、
    前記行動選択ステップは、
    ある制御対象物iが、ある方向の隣接する位置に移動するという行動aを実行した場合に得られる前記価値関数の値Q(s,a)が、静止するという行動を実行した場合に得られる前記価値関数の値Q(s,0)よりも大きくなる場合に、前記制御対象物iから前記行動aにより移動する方向において連続して隣接する全ての他の制御対象物について、前記行動aを実行した場合に得られる前記価値関数の値Q(s,a)が、静止するという行動を実行した場合に得られる前記価値関数の値Q(s,0)よりも小さいことを理由として、前記行動aが非可動と設定されている場合には、行動aが可動となるように制御する移動方向設定ステップを含む、
    行動制御方法。
  6. 請求項4または5の行動制御方法であって、
    前記行動選択ステップは、
    ある制御対象物iの2次元平面上の第一〜第四位置に、障害物が存在するときに、その制御対象物iが障害物が存在する方向に移動しないように制御し、さらに、その制御対象物iが障害物が存在する方向とは反対方向において連続して隣接する全ての他の制御対象物が障害物が存在する方向に移動しないように制御する可動判定ステップと、
    前記隣接状態判定ステップによる判定結果を用いて、仮にある制御対象物iが行動aによりある方向に移動したときに、前記行動aにより移動する方向と平行でない方向において隣接する制御対象物との接続状態を維持するか否かを判定し、維持しない場合、前記制御対象物iは前記行動aにより移動する方向と平行でない方向において隣接する制御対象物に対して相対移動不可能であると設定し、前記制御対象物iが前記行動aについて非可動である場合、前記制御対象物iに前記行動aにより移動する方向及びその反対方向において隣接する制御対象物が行動aについて非可動となるように制御し、前記制御対象物iが前記行動aについて非可動であって、かつ、前記行動aにより移動する方向と平行でない方向において前記制御対象物iに隣接する制御対象物が、前記行動aにより移動する方向に相対移動不可能である場合には、行動aにより移動する方向と平行でない方向において制御対象物iに隣接する制御対象物が行動aについて非可動となるように制御する接続判定ステップと、
    静止するように制御された制御対象物の位置を基準として、前記隣接状態判定ステップによる判定結果を用いて、実際に行動した後の制御対象物の位置である行動後位置を求め、その行動後位置が、選択された行動に基づいて行動した場合に想定される想定位置と一致するか否かを判定する位置判定ステップと、を含む、
    行動制御方法。
  7. 請求項1から3の何れかに記載の行動制御システムとしてコンピュータを機能させるためのプログラム。
JP2014130021A 2014-06-25 2014-06-25 行動制御システム、その方法及びプログラム Active JP6174523B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014130021A JP6174523B2 (ja) 2014-06-25 2014-06-25 行動制御システム、その方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014130021A JP6174523B2 (ja) 2014-06-25 2014-06-25 行動制御システム、その方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2016009354A JP2016009354A (ja) 2016-01-18
JP6174523B2 true JP6174523B2 (ja) 2017-08-02

Family

ID=55226862

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014130021A Active JP6174523B2 (ja) 2014-06-25 2014-06-25 行動制御システム、その方法及びプログラム

Country Status (1)

Country Link
JP (1) JP6174523B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6559582B2 (ja) * 2016-01-19 2019-08-14 日本電信電話株式会社 行動制御システム、その方法及びプログラム
JP6559591B2 (ja) * 2016-02-12 2019-08-14 日本電信電話株式会社 行動制御システム、その方法及びプログラム
JP7147142B2 (ja) 2017-09-15 2022-10-05 ソニーグループ株式会社 制御装置、および制御方法、プログラム、並びに移動体
JP6777661B2 (ja) * 2018-02-14 2020-10-28 日本電信電話株式会社 制御装置、方法及びプログラム
CN109062252B (zh) * 2018-08-27 2021-05-25 中国人民解放军战略支援部队航天工程大学 基于人工势场法的四旋翼无人机集群控制方法及其装置
CN109164809B (zh) * 2018-09-20 2022-02-22 北京机械设备研究所 一种车辆编队自主跟随控制系统及方法
US11436391B2 (en) * 2019-01-29 2022-09-06 Kyocera Corporation Learning method and automatic layout design method
CN110470306B (zh) * 2019-08-27 2023-03-10 中山大学 一种可保证连通性约束的基于深度强化学习的多机器人编队导航方法
CN114442487B (zh) * 2022-01-18 2023-03-21 北京理工大学 多智能体系统仿射编队中的领导者选取方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2933247B2 (ja) * 1991-10-29 1999-08-09 川崎重工業株式会社 ロボット装置
US6459957B1 (en) * 2001-04-17 2002-10-01 Fuji Xerox Co., Ltd. Programmable smart membranes and methods therefor
JP4087104B2 (ja) * 2001-11-20 2008-05-21 シャープ株式会社 群ロボットシステム
JP5931685B2 (ja) * 2012-10-12 2016-06-08 日本電信電話株式会社 ロボット協調搬送計画装置、方法、プログラム

Also Published As

Publication number Publication date
JP2016009354A (ja) 2016-01-18

Similar Documents

Publication Publication Date Title
JP6174523B2 (ja) 行動制御システム、その方法及びプログラム
Bircher et al. Receding horizon path planning for 3D exploration and surface inspection
US11231715B2 (en) Method and system for controlling a vehicle
US11673743B2 (en) Object handling coordination system and method of relocating a transporting vessel
Alonso-Mora et al. Distributed multi-robot formation control among obstacles: A geometric and optimization approach with consensus
US11460861B2 (en) Cloud based robotic control systems and methods
Foumani et al. A cross-entropy method for optimising robotic automated storage and retrieval systems
Nestmeyer et al. Decentralized simultaneous multi-target exploration using a connected network of multiple robots
JP5997092B2 (ja) ロボット協調搬送計画装置、方法及びプログラム
CN108290290A (zh) 导航半自主移动机器人
CN105843255B (zh) 无人机集群自主飞行的防撞装置及防撞方法
Ioannidis et al. A path planning method based on cellular automata for cooperative robots
Mannucci et al. Autonomous 3D exploration of large areas: A cooperative frontier-based approach
JP6559591B2 (ja) 行動制御システム、その方法及びプログラム
Harder et al. Formation specification for control of active agents using artificial potential fields
Yu et al. Autonomous formation selection for ground moving multi-robot systems
Marín et al. Event based distributed Kalman filter for limited resource multirobot cooperative localization
JP6285849B2 (ja) 行動制御システム、その方法及びプログラム
JP6489923B2 (ja) 行動制御システム、及びそのプログラム
Musiyenko et al. Simulation the behavior of robot sub-swarm in spatial corridors
Shuai et al. Compliant‐based robotic 3D bin packing with unavoidable uncertainties
Moussa et al. Cluster-based distributed self-reconfiguration algorithm for modular robots
Teymouri et al. Landmark-based distributed topological mapping and navigation in GPS-denied urban environments using teams of low-cost robots
Badawy et al. New approach to enhancing the performance of cloud-based vision system of mobile robots
Kang et al. Path optimization with limited sensing ability

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160907

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170620

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170704

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170706

R150 Certificate of patent or registration of utility model

Ref document number: 6174523

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150