(57)【要約】【課題】隊列制御動作にかかる時間を短縮することができる制御技術を提供する。【解決手段】制御対象物単位は複数あり、各制御対象物単位は第一型制御対象物単位及び第二型制御対象物単位から構成されており、第一型制御対象物単位と第二型制御対象物単位はそれぞれＵ個（Ｕは４以上の整数）の制御対象物から構成されており、第一型制御対象物単位移動制御部１が、制御対象物構造の接続性を維持しながら、各制御対象物単位の第一型制御対象物単位を、その目標位置に移動させる。第二型制御対象物単位移動制御部２が、制御対象物構造の接続性を維持しながら、各制御対象物単位の第二型制御対象物単位を、その目標位置に移動させる。【選択図】図１
2019053709.tif 000002
【特許請求の範囲】
【請求項１】
制御対象物単位は複数あり、各制御対象物単位は第一型制御対象物単位及び第二型制御対象物単位から構成されており、第一型制御対象物単位と第二型制御対象物単位はそれぞれＵ個（Ｕは４以上の整数）の制御対象物から構成されており、
制御対象物単位には所定の初期位置及び所定の目標位置が定められており、上記初期位置の集合をSとし、上記目標位置の集合をGとし、第一型制御対象物単位の目標位置はその第一型制御対象物単位の制御対象物単位の目標位置であり、第二型制御対象物単位の目標位置はその第二型制御対象物単位の制御対象物単位の目標位置であり、
第一型制御対象物単位及び第二型制御対象物単位が他の第一型制御対象物単位及び第二型制御対象物単位と隣接することにより第一型制御対象物単位及び第二型制御対象物単位が一塊の制御対象物構造を形成していることを制御対象物構造の接続性と言うとして、
制御対象物構造の接続性を維持しながら、各制御対象物単位の第一型制御対象物単位を、その目標位置に移動させる第一型制御対象物単位移動制御部と、
制御対象物構造の接続性を維持しながら、各制御対象物単位の第二型制御対象物単位を、その目標位置に移動させる第二型制御対象物単位移動制御部と、
を含む制御装置。
【請求項２】
請求項１の制御装置であって、
上記第一型制御対象物単位移動制御部は、
(CASE 1) 対応する第一型制御対象物単位が初期位置から移動した後の第二型制御対象物単位に隣接する位置にあるS内の第一型制御対象物単位であって、その第二型制御対象物単位に隣接する位置又は移動後の第一型制御対象物単位に隣接する位置を目標位置とする第一型制御対象物単位がある場合には、その第一型制御対象物単位を標的第一型制御対象物単位として選択し、(CASE 2) CASE 1に該当する第一型制御対象物単位が存在しない場合において、対応する第一型制御対象物単位が初期位置から移動した後の第二型制御対象物単位に隣接する位置にあるS内の第一型制御対象物単位であって、その第一型制御対象物単位の目標位置に他の第一型制御対象物単位が存在する場合には、その第一型制御対象物単位を標的第一型制御対象物単位として選択し、(CASE 3) CASE 1及びCASE 2に該当する第一型制御対象物単位が存在しない場合において、対応する第一型制御対象物単位が初期位置から移動した後の第二型制御対象物単位に隣接する位置にあるS内の第一型制御対象物単位がある場合には、その第一型制御対象物単位を標的第一型制御対象物単位として選択し、(CASE 4) CASE 1からCASE 3に該当する第一型制御対象物単位が存在しない場合には、S内でGに隣接する位置にある第一型制御対象物単位を標的第一型制御対象物単位として選択する標的第一型制御対象物単位選択部と、
CASE 1の場合に、CASE 1で選択された標的第一型制御対象物単位をその目標位置に移動させる第一移動部と、
CASE 2の場合に、上記他の第一型制御対象物単位を第１追い出し対象制御対象物単位とし、第１追い出し対象制御対象物単位の目標位置に別の第一型制御対象物単位が存在するときにはその別の第一型制御対象物単位を第２追い出し対象制御対象物単位とする処理を、Ｋを正の整数として、第Ｋ追い出し対象制御対象物単位の目標位置に別の第一型制御対象物単位が存在しなくなるまで繰り返し行い、ｋ＝１，…，Ｋとして、CASE 2で選択された標的第一型制御対象物単位、第１追い出し対象制御対象物単位、・・・、第Ｋ−１追い出し対象制御対象物単位のそれぞれを目標位置に移動させ、第Ｋ追い出し対象制御対象物単位を第Ｋ追い出し対象制御対象物単位の目標位置に最も近いG内の位置に移動させる第二移動部と、
CASE 3及びCASE 4の場合に、CASE 3及びCASE 4で選択された標的第一型制御対象物単位を、現在の制御対象物単位構造に隣接する制御対象物のない空隙位置であって、その標的第一型制御対象物単位の目標位置に最も近いG内の位置に移動させる第三移動部と、
全ての第一型制御対象物単位が目標位置に移動するまで、上記標的第一型制御対象物単位選択部、上記第一移動部、上記第二移動部及び上記第三移動部の処理を繰り返し行うように制御する第一制御部と、
を含む制御装置。
【請求項３】
請求項１又は２の制御装置であって、
上記第二型制御対象物単位移動制御部は、
目標位置に到達していない第二型制御対象物単位を標的第二型制御対象物単位として選択する標的第二型制御対象物単位選択部と、
上記選択された標的第二型制御対象物単位を目標位置に移動させるときに制御対象物構造の接続性が維持されるかどうか判定し、(1)制御対象物構造の接続性が維持されると判定された場合には、上記選択された標的第二型制御対象物単位を目標位置に移動させ、(2)制御対象物構造の接続性が維持されないと判定された場合には、上記選択された標的第二型制御対象物単位の位置に制御対象物構造の接続性を維持しながら移動することができる第二型制御対象物単位である交換第二型制御対象物単位を選択し、上記選択された交換第二型制御対象物単位を上記選択された標的第二型制御対象物単位の位置に移動させた後に上記選択された標的第二型制御対象物単位を目標位置に移動させる移動制御部と、
目標位置に到達していない第二型制御対象物単位がなくなるまで、上記標的第二型制御対象物単位選択部及び上記第二型制御対象物単位移動制御部の処理を繰り返し行うように制御する第二制御部と、
を含む制御装置。
【請求項４】
請求項１の制御装置であって、
上記制御対象物単位の上記初期位置の集合Sと上記目標位置の集合Gとは接しているとし、上記初期位置の集合Sに含まれる位置であって上記目標位置の集合Gに接している位置の１つを接続位置として、
上記第一型制御対象物単位移動制御部は、
各第一型制御対象物単位が制御対象物構造の接続性を維持しながら上記接続位置を通って目標位置に到達するまでのパスを上記接続位置から近い初期位置にある第一型制御対象物単位のパスから順に決定する第一パス決定部と、
各第一型制御対象物単位が衝突しないように、各第一型制御対象物単位の待ち時間を決定する第一待ち時間調整部と、
上記第一パス決定部により決定されたパス及び上記第一待ち時間調整部により決定された待ち時間に従って、各第一型制御対象物単位を移動させる第一移動部と、
を含み、
上記第二型制御対象物単位移動制御部は、
各第二型制御対象物単位が制御対象物構造の接続性を維持しながら上記接続位置を通って目標位置に到達するまでのパスを上記接続位置から遠い位置を目標位置とする第二型制御対象物単位のパスから順に決定する第二パス決定部と、
各第二型制御対象物単位が衝突しないように、各第二型制御対象物単位の待ち時間を決定する第二待ち時間調整部と、
上記第二パス決定部により決定されたパス及び上記第二待ち時間調整部により決定された待ち時間に従って、各第二型制御対象物単位を移動させる第二移動部と、
を含む、
制御装置。
【請求項５】
制御対象物単位は複数あり、各制御対象物単位は第一型制御対象物単位及び第二型制御対象物単位から構成されており、第一型制御対象物単位と第二型制御対象物単位はそれぞれＵ個（Ｕは４以上の整数）の制御対象物から構成されており、
制御対象物単位には所定の初期位置及び所定の目標位置が定められており、上記初期位置の集合をSとし、上記目標位置の集合をGとし、第一型制御対象物単位の目標位置はその第一型制御対象物単位の制御対象物単位の目標位置であり、第二型制御対象物単位の目標位置はその第二型制御対象物単位の制御対象物単位の目標位置であり、
第一型制御対象物単位及び第二型制御対象物単位が他の第一型制御対象物単位及び第二型制御対象物単位と隣接することにより第一型制御対象物単位及び第二型制御対象物単位が一塊の制御対象物構造を形成していることを制御対象物構造の接続性と言うとして、
第一型制御対象物単位移動制御部が、制御対象物構造の接続性を維持しながら、各制御対象物単位の第一型制御対象物単位を、その目標位置に移動させる第一型制御対象物単位移動ステップと、
第二型制御対象物単位移動制御部が、制御対象物構造の接続性を維持しながら、各制御対象物単位の第二型制御対象物単位を、その目標位置に移動させる第二型制御対象物単位移動ステップと、
を含む制御方法。
【請求項６】
請求項１から４の何れかの制御装置の各部としてコンピュータを機能させるためのコンピュータ読み取り可能なプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の制御対象物の行動を制御する技術に関する。
【背景技術】
【０００２】
近年、多数の自律移動ロボットを効率的に制御にするための研究が活発に行われている。その任務内容は、人の入れない箇所の監視、物品の搬送などさまざまであるが、多数のロボットの協調動作による隊列形成を効率的に行わせるための技術が求められており盛んに研究が行われている。
【０００３】
特に、ロボットの隊列制御の中でも、ロボット同士が互いに接したままの状態で、アメーバのように全体で移動を行うという仮定の下でのロボット隊列制御においては、ロボット同士の相対的な位置関係から、各ロボットの絶対位置の決定が可能であるという利点と、付加的な位置計測用の装備を必要としないという利点があり、そのようなロボットの研究もおこなわれている（例えば、非特許文献１，２参照。）。
【０００４】
非特許文献１は、全てのロボットが同じ性質を持つ（ホモジニアス）という前提の下で、任意の初期隊列形成状態から目的隊列形成状態へ変形する隊列制御を実現する方法が開示されている。ここでは、８つのロボットを１つの単位として移動させることで、従来よりも効率的な隊列制御を実現している。
【０００５】
非特許文献２では、各矩形ロボットが異なる性質を持つ(ヘテロジニアス)という前提の下で、任意の形状隊列から他の形状隊列へ変形する隊列制御の方法が開示されている。
【０００６】
このような、多数のロボットによる効率的な隊列形成を実現するには、それぞれのロボットの配置、動作順序などを事前に計画することが重要である。このような計画においては、当然ながら、複数のロボットが動作する実環境における障害物の存在や経路の形状なども十分に考慮しなければならない。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】Kawano, H., “Complete Reconfiguration Algorithm for Sliding Cube-shaped Modular Robots with only Sliding Motion Primitive”, 2015 IEEE/RSJ International Conference on Intelligent Robots and Systems(IROS 2015), pp.3276-3283, September 2015, Hamburg, Germany.
【非特許文献２】R. Fitch, Z. Butler, D. Rus, “Reconfiguration Planning for   Heterogeneous Self-Reconfiguring Robots”, in Proc.2003 IEEE/RSJ  Int. Conf. Intelligent Robots and Systems, pp. 2460-2467, Las Vegas, NV, Oct., 2003.
【発明の概要】
【発明が解決しようとする課題】
【０００８】
非特許文献２では、各ロボットが接した状態での動作を想定し、各ロボットが異なる特性（ヘテロジニアス）である、つまり、各ロボットの目標位置が特定されている場合の隊列制御を実現している。このような隊列制御は、例えば、カメラを搭載したロボット、車輪を搭載したロボット等の個々に異なる役割がある各ロボットをロボット隊列内の適切な位置に配置させつつ、隊列の形状を制御するといった運用に適している。
【０００９】
非特許文献１はホモジニアスを前提としており、隊列変形後の各ロボットの位置が保証されないため、ヘテロジニアスを前提とするような隊列形成の問題に適用することができない。
【００１０】
非特許文献２は、ヘテロジニアスを前提とする隊列形成を行うことができるが、隊列全体の形状の変形動作と、変形後のロボット位置の入れ替えを別個のプロセスとして行わなければならない。つまり、まずロボットの位置は問わずに形状（隊列）を目的隊列に変形する前に、各ロボットの位置が正しい目標位置となるように各ロボットの位置の入れ替えを行うための別の隊列形態をとり、ロボットの位置の入れ替えを行うのである。そのロボット位置の入れ替えの処理に非常に時間を要するため、全体として隊列制御にかかる時間が長いという問題がある。
【００１１】
このような現状に鑑みて、本発明は、隊列制御動作にかかる時間を短縮することができる制御装置、方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
この発明の一態様による制御装置は、制御対象物単位は複数あり、各制御対象物単位は第一型制御対象物単位及び第二型制御対象物単位から構成されており、第一型制御対象物単位は４個の制御対象物から構成されており、第二型制御対象物単位は４個の制御対象物から構成されており、制御対象物単位には所定の初期位置及び所定の目標位置が定められており、上記初期位置の集合をSとし、上記目標位置の集合をGとし、第一型制御対象物単位の目標位置はその第一型制御対象物単位の制御対象物単位の目標位置であり、第二型制御対象物単位の目標位置はその第二型制御対象物単位の制御対象物単位の目標位置であり、第一型制御対象物単位及び第二型制御対象物単位が他の第一型制御対象物単位及び第二型制御対象物単位と隣接することにより第一型制御対象物単位及び第二型制御対象物単位が一塊の制御対象物構造を形成していることを制御対象物構造の接続性と言うとして、制御対象物構造の接続性を維持しながら、各制御対象物単位の第一型制御対象物単位を、その目標位置に移動させる第一型制御対象物単位移動部と、制御対象物構造の接続性を維持しながら、各制御対象物単位の第二型制御対象物単位を、その目標位置に移動させる第二型制御対象物単位移動制御部と、を備えている。
【発明の効果】
【００１３】
本発明に拠れば、隊列制御動作にかかる時間を短縮することができる。
【図面の簡単な説明】
【００１４】
【図１】ロボットの移動を説明するための図。
【図２】制御対象物の初期位置及び目標位置を説明するための図。
【図３】ボイドの移動の様子を説明するための図。
【図４】制御対象物単位を説明するための図。
【図５】制御対象物単位の移動を説明するための図。
【図６】制御対象物構造の非連続について説明するための図。
【図７】制御対象物構造の連続性を維持するための制御を説明するための図。
【図８】制御対象物単位の移動を説明するための図。
【図９】制御対象物単位の移動を説明するための図。
【図１０】制御対象物単位の移動を説明するための図。
【図１１】制御対象物単位の移動を説明するための図。
【図１２】制御対象物単位の移動を説明するための図。
【図１３】制御対象物単位の移動を説明するための図。
【図１４】制御対象物単位の移動を説明するための図。
【図１５】制御対象物単位の移動を説明するための図。
【図１６】制御対象物単位の移動を説明するための図。
【図１７】第一実施形態の制御装置を説明するためのブロック図。
【図１８】第一実施形態の制御方法を説明するための流れ図。
【図１９】第一実施形態の制御方法を説明するための流れ図。
【図２０】第二実施形態の制御装置を説明するためのブロック図。
【図２１】第二実施形態の制御方法を説明するための流れ図。
【発明を実施するための形態】
【００１５】
以下、本発明の実施形態について説明する。なお、以下の説明に用いる図面では、同じ機能を持つ構成部や同じ処理を行うステップには同一の符号を記し、重複説明を省略する。
【００１６】
＜理論的背景＞
まず、行動制御システム及び方法の理論的背景について説明する。以下の説明において、制御対象物は、ロボットである。制御対象物は、制御の対象となり得るものであれば、ロボット以外であってもよい。
【００１７】
［問題設定］
任意の隊列形成を初期隊列形成状態として、制御対象物同士が接したままの状態を維持しつつ目的とする任意の隊列形成状態である目的隊列形成状態への隊列を移動させる隊列制御を、多数の制御対象物が協調して行う任務を、例えば図１に例示するような、互いに接する面同士をスライドさせて移動していくことが可能な立方体型の制御対象物の制御を想定して実現する。図２に示すように、壁で区切られた部屋（ただし図中、壁を省略する）において、初期隊列形成状態から目的隊列形成状態への変形を、複数の制御対象物の移動によって実現するものである。
【００１８】
初期隊列形成状態および目的隊列形成状態は、それぞれ図４Ｂ左に示すような８個の制御対象物から構成される立方体を基本構成要素（８マス制御対象物単位）として、これを組み合わせて形成される任意の形状であるものとする。８マス制御対象物単位のことを単に「制御対象物単位」と呼ぶこともある。異なる８マス制御対象物単位は異なる性質を持つ（ヘテロジニアス）ものとし、各８マス制御対象物単位内の各制御対象物は同一（ホモジニアス）とする。つまり、初期隊列形成状態および目的隊列形成状態において、各８マス制御対象物単位がどの位置にあるべきかは指定されているが、各８マス制御対象物単位内の各制御対象物の位置は問わない。
【００１９】
制御対象物については、例えば図１に示すように、制御対象物の周囲縦横高さ方向（以下「上下左右前後方向」ともいう）６マスのうち１つに他の制御対象物が存在している（１つの面を他制御対象物と共有している）状態を維持しながら移動をするものとする。この手法では１つの制御対象物自身が、一台の制御対象物のサイズ分の距離を移動することで、一回の動作の移動量を正確に測ることができるというメリットがある。また、１つの面を共有する隣り合う制御対象物との相対的な位置を計測しあうことで、制御対象物の群れ全体の中での各制御対象物の位置も容易に知ることができる。このため、制御対象物の移動量の誤差によって、隊列が崩れるといった問題を起こしにくく、また、各制御対象物の位置を把握するために付加的な位置計測用の装備を備えずとも位置の把握が可能である。また、複数の制御対象物を連結したように、同時に複数の制御対象物を移動させていくことが可能である。なお、制御対象物は、隣の位置に他の制御対象物が存在しているか否か、障害物があるか否か、そして、自身が目標位置上にいるかどうかを知ることができるものとする。
【００２０】
任務を行う制御対象物は、p個（p≧16=8×2）であり、各制御対象物は、隣接する制御対象物と一面以上を共有しつつ、三次元空間におけるX-Y-Z軸方向に移動可能とする。本発明では、制御対象物は図４Ａに示すような４つの制御対象物で構成される制御対象物群を「４マス制御対象物単位」とし、図４Ｂのように４マス制御対象物単位を２つ組み合わせて構成されるメタブロック（以下、「８マス制御対象物単位」）を最小単位として初期隊列形成状態および目的隊列形成状態が形成されるものとする。よって、隊列を形成する制御対象物の総数pは８の倍数とする。
【００２１】
以下では、図４Ｂのドットで示す形状の４マス制御対象物単位を「第一型制御対象物単位」、図４Ｂの白色で示す形状の４マス制御対象物単位を「第二型制御対象物単位」と呼ぶこととする。
【００２２】
図１の各立方体は、それぞれの制御対象物の位置を示すものである。各立方体には制御対象物は一台しか存在することができない。それぞれの制御対象物は、移動しようとする方向に障害物か他の制御対象物がある場合には、静止をするものと仮定する。なお、制御対象物が存在しうる立方体状の空間をマス、または、格子ともいう。図２において、塗りつぶされたマスは制御対象物が存在する位置を示す。図２Ａの制御対象物が存在する位置は制御対象物の初期位置の集合（初期隊列形成状態）を示し、図２Ｃの制御対象物が存在する位置は制御対象物の目標位置の集合（目的隊列形成状態）を示す。図２Ｂに示すように、目標位置の集合と初期位置の集合は接している。目標位置の集合で表される領域を目標隊列エリアともいう。このように、各初期位置及び各目標位置は、それぞれ縦横高さ方向の少なくとも何れかの方向において他の初期位置及び目標位置と隣接し、制御対象物の初期位置及び目標位置での隊列形状はそれぞれ一塊の任意の形状である。
【００２３】
［制御対象物の座標設定］
それぞれの制御対象物i（iは制御対象物番号を表すi=0,1,2,3,…,p-1）の位置を（Xr[i],Yr[i],Zr[i]）とし、初期位置を（Xr0[i],Yr0[i],Zr0[i]）とし、目標位置を（Xre[i],Yre[i],Zre[i]）とするとき、本問題は、初期位置に配置された制御対象物が、目標位置まで移動するための行動計画を求めることと定義できる。制御対象物の初期位置の集合をs、目標位置（Xre[i],Yre[i],Zre[i]）の集合をgとする。
【００２４】
［任務空間の定義］
iを制御対象物番号としたとき、制御対象物iの各状態（制御対象物の位置と行動）は離散値で表現される。部屋をX,Y,Zの直交座標系からなる3次元空間で表すと、X軸、Y軸、Z軸をそれぞれ離散化表現した値により各位置を表現する。つまり、部屋（３次元空間）は格子で区切られ、各格子が各位置に対応する。また、各格子において、障害物の「ある／なし」が予め設定されている。
【００２５】
［制御対象物動作の定義］
また、行動主体は部屋に配置されている各制御対象物となる。制御対象物i（iは制御対象物番号）の行動aは、静止、縦横高さ方向への１格子分の移動、の計７種類のうちのいずれかを取る。例えば、a∈{0,1,2,3,4,5,6}として、
0: 静止
1: 三次元空間内でX軸正方向に１格子だけ移動する
2: 三次元空間内でY軸正方向に１格子だけ移動する
3: 三次元空間内でX軸負方向に１格子だけ移動する
4: 三次元空間内でY軸負方向に１格子だけ移動する
5: 三次元空間内でZ軸正方向に１格子だけ移動する
6: 三次元空間内でZ軸負方向に１格子だけ移動する
とする。
【００２６】
［探索計算上の問題点］
このような任務環境における状態空間は、制御対象物数×３の次元数の状態を持ち、かつ選択可能な行動数は、制御対象物の行動（＝７通り）の制御対象物数乗だけ存在する。例えば、制御対象物数が50で、部屋の縦横高さ方向の格子数がそれぞれ20であるとすれば状態数は20の150乗個にもなり、探索計算に要する資源の量は膨大なものとなる。さらに制御対象物数が1台増えるごとに、その状態数は8000倍増加していくことになる。［問題設定］の項で説明したように、制御対象物同士が接しているという拘束条件を取り入れる場合、制御対象物のお互いの移動を考慮したうえで探索計算行わなければならないために、根本的な計算量の削減は難しく、複数の制御対象物を使用する場合の大きな問題となっている。
【００２７】
［参考文献１におけるヘテロジニアス隊列制御における特徴］
非特許文献４におけるヘテロジニアス隊列制御では、上述の計算負荷の問題を解決するための方策の１つとして、ボイド制御の考え方を導入している。また、［問題設定］で述べたような隊列変形の問題を克服するために、８マス制御対象物単位を最小単位として移動を行う。
【００２８】
まず、ボイド制御について説明する。ここでいうボイドとは、ある制御対象物が別の位置に移動した後に、元いた位置にできる空隙のことである。別の言い方をすると、ボイドとは、制御対象物の移動する方向と反対の方向に移動する仮想的な存在である。こうした群制御対象物の隊列形成問題においては、複数の制御対象物の動作に着目するがゆえに、その探索計算量が爆発してしまうが、視点を変えて、ボイドの動きに着目すれば、多数の制御対象物の動作計画の問題を単一のボイドの動作計画として考えることができ、探索計算負荷の軽減に適している。制御対象物の移動に伴ってボイドが移動していく様子を示す図を図３に示す。しかし、参考文献１では、８マスの中にフルに制御対象物が充填された８マス制御対象物単位を移動の最小単位として採用しているために、隊列構造内にボイドを意図的に生成しなければ制御対象物の移動ができず、そのため、隣接していない制御対象物同士の行き来には不自由な点が多かった。そのため、隊列の全体形状変形の際に、同時に各制御対象物を目標位置まで到達させるための移動を同時に行いにくかった。
【００２９】
〔参考文献１〕Kawano, H., “Tunneling-Based Self-Reconfiguration of Heterogeneous Sliding Cube-Shaped Modular Robots in Environments with Obstacles”, 2017 IEEE International Conference on Robotics and Automation, pp.825-832, May 2017, Singapore.
【００３０】
［本発明の原理］
本発明では、初期隊列形成状態および目標隊列形成状態は、非特許文献２や参考文献１と同じく８マス制御対象物単位を最小単位として構成されるものとする一方で、移動にあたっては、図４Ｂに示す第一型制御対象物単位および第二型制御対象物単位の４マス制御対象物単位で移動することを特徴とする。
【００３１】
本発明の隊列変換は、大まかには、以下のように説明できる。
【００３２】
まず、初期隊列形成状態内の各８マス制御対象物単位中の第一型制御対象物単位を目的隊列中の目標位置に移動させる（第一型制御対象物単位移動ステップ、図１６Ａ。なお、移動後の制御対象物は第二型制御対象物単位の形をとる）。次に、初期隊列形成状態内の各８マス制御対象物単位中の第二型制御対象物単位を目的隊列中の目標位置に移動させる（第二型制御対象物単位移動ステップ、図１６Ｂ。なお、移動後の制御対象物は第一型制御対象物単位の形をとる）。
【００３３】
第一型制御対象物単位移動及び第二型制御対象物単位移動ステップでは、それぞれ４マス制御対象物単位での移動が行われる。まず、この４マス制御対象物単位の移動の基本的な考え方を説明するため、８マス制御対象物単位中の一方の４マス制御対象物単位が空隙であるとした仮定した隊列形成状態（例えば、第一型制御対象物単位が存在せず、第二型制御対象物単位のみで形成される隊列形成状態）における４マス制御対象物単位の移動方法を説明する。
【００３４】
［４マス制御対象物単位の移動］
初期隊列形成状態を集合S、目標隊列形成状態状態を集合Gとする。集合Sと集合Gはそれぞれ隊列を構成する各制御対象物単位の位置情報の集合である。言い換えれば、８マス制御対象物単位には所定の初期位置及び所定の目標位置が定められているとして、その初期位置の集合をSとし、その目標位置の集合をGとする。なお、以下では、集合Sを、初期位置Sと呼ぶこともある。同様に、集合Gを、目標位置Gと呼ぶこともある。そして、第一型制御対象物単位の目標位置はその第一型制御対象物単位の制御対象物単位の目標位置であり、第二型制御対象物単位の目標位置はその第二型制御対象物単位の制御対象物単位の目標位置であるとする。
【００３５】
ある4マス制御対象物単位jの位置を（Xr_u[j],Yr_u[j], Zr_u[j]）（j=0,1,2,…j_max-1）としたとき、その制御対象物単位j内の制御対象物をj1,j2,j3,j4とすれば、
Xr[j1] = 2 × Xr_u[j] 
Yr[j1] = 2 × Yr_u[j] + 1
Zr[j1] = 2 × Zr_u[j] 
Xr[j2] = 2 × Xr_u[j] + 1
Yr[j2] = 2 × Yr_u[j] 
Zr[j2] = 2 × Zr_u[j] 
Xr[j3] = 2 × Xr_u[j]
Yr[j3] = 2 × Yr_u[j]
Zr[j3] = 2 × Zr_u[j]
Xr[j4] = 2 × Xr_u[j]
Yr[j4] = 2 × Yr_u[j]
Zr[j4] = 2 × Zr_u[j] + 1
ここで、j_maxは4マス制御対象物単位の総数、すなわちj_max=p/4であり、jは制御対象物単位を特定するIDに相当するものである。
【００３６】
なお、各制御対象物iが所属する制御対象物単位jは隊列制御のどの時刻においても不変である。また、各制御対象物単位jの初期位置を（Xr_u0[j],Yr_u0[j],Zr_u0[j]）とし、目標位置を（Xr_ue[j],Yr_ue[j],Zr_ue[j]）とする。
【００３７】
以下、第一型制御対象物単位に属する制御対象物を移動させることを、第一型制御対象物単位を移動させると略記することもある。同様に、第二型制御対象物単位に属する制御対象物を移動させることを、第二型制御対象物単位を移動させると略記することもある。
【００３８】
［ヘテロジニアス制御対象物隊列制御］
初期位置（Xr_u0[j],Yr_u0[j],Zr_u0[j]）にある各制御対象物単位jの集合Sにより形成される開始隊列形成状態から、目標位置（Xr_ue[j],Yr_ue[j],Zr_ue[j]）にある各制御対象物単位jの集合Gにより形成される目的隊列形成状態へ各制御対象物単位を移動させるヘテロジニアス制御対象物隊列制御の方法について以下説明していく。
【００３９】
ある時刻において、制御対象物単位jの目標位置（Xr_ue[j],Yr_ue[j],Zr_ue[j]）が空隙のままであり、かつ目標位置（Xr_ue[j],Yr_ue[j],Zr_ue[j]）に隣接する制御対象物単位の位置内に制御対象物単位j'に属する制御対象物４つが存在しているとする（図５Ａ）。この場合、p個の制御対象物からなる隊列（制御対象物構造）内には非接続な箇所はなく、かつ各制御対象物単位内には、制御対象物が通過可能な空隙が４つ用意されているため、制御対象物構造内のある位置に存在する制御対象物単位jに属する制御対象物４つが、制御対象物構造内の空隙を伝って、制御対象物単位j'内の空隙に移動することは可能である(図５Ｂ、図５Ｃ)。そして、４つの空隙が制御対象物単位jに属する制御対象物によって埋められた状態の制御対象物位置j'から、隣接する位置（Xr_ue[j],Yr_ue[j],Zr_ue[j]）に制御対象物単位jに属する４つの制御対象物を排出して、目標位置（Xr_ue[j],Yr_ue[j],Zr_ue[j]）にて、制御対象物単位jの基本形状を形成させることも可能である（図５Ｄ）。
【００４０】
ここで、注意しなければならないのは、制御対象物単位jに属する制御対象物が制御対象物単位j'へ移動中には、もとは制御対象物単位jの制御対象物があった場所が空隙になってしまうという事実である。すると、制御対象物単位jを移動させることで、残りの制御対象物からなる隊列の接続性が維持されず、非連続状態となってしまう場合がある（図６）。図６では、図６Ｂから図６Ｃの状態に移行するときに、制御対象物単位jがあった位置が空隙となり、非連続状態が発生している。
【００４１】
なお、制御対象物単位が他の制御対象物単位と隣接することにより制御対象物単位が一塊の制御対象物構造を形成していることを制御対象物構造の接続性と言う。第一型制御対象物単位及び第二型制御対象物単位という用語を使えば、接続性とは、第一型制御対象物単位及び第二型制御対象物単位が他の第一型制御対象物単位及び第二型制御対象物単位と隣接することにより第一型制御対象物単位及び第二型制御対象物単位が一塊の制御対象物構造を形成していること言う。
【００４２】
このため、制御対象物単位jの位置によっては、制御対象物構造の接続を維持しつつ制御対象物単位jを移動させるために工夫が必要である。ここで、制御対象物単位jが制御対象物構造から取り払われる（現在の制御対象物隊列における制御対象物単位jの位置から移動する）際に、制御対象物構造が接続を維持できるかどうかの条件として、以下の式を用いる。
【００４３】
δ（j）>δ（j_n）…(1)
ここで、δ(j)は、制御対象物単位jの制御対象物単位j'からのマンハッタン距離である。ここで、j'は制御対象物単位jの目標位置の制御対象物単位を示すものとする。そして、j_nは、制御対象物単位jに隣接している制御対象物単位を一意に識別するための番号であり（nは正の整数）、δ（j_n）は制御対象物単位j_nの制御対象物単位j'からのマンハッタン距離である。全ての制御対象物単位j_nに対して式(1)が成立するならば、制御対象物単位jを制御対象物構造から取り払ったとしても制御対象物構造の接続性は維持できる。
【００４４】
そこで、制御対象物単位jの制御対象物単位j'の位置への移動を開始する前に、式(1)による判定を行い、その結果、δ（j）>δ（j_n）を満たさない制御対象物単位j_nが存在するならば、以下の方法をとる。
【００４５】
(1) δ（j_end）>δ（j）を満たす制御対象物単位j_endのうち、制御対象物単位j_endに隣接する全ての制御対象物単位j_end_nで式(1)が成立する制御対象物単位を１つ選択する(図７Ａ)。ここでj_endは制御対象物構造中の端に位置する制御対象物単位である。
【００４６】
言い換えれば、この処理は、制御対象物構造中の端に位置する制御対象物単位（外側制御対象物単位）のうち、制御対象物単位jよりも制御対象物単位j'からみて離れた位置にある外側制御対象物単位であって、当該外側制御対象物単位を移動させても制御対象物構造の接続性が途切れない外側制御対象物単位を選択することといえる。
【００４７】
(2) 上記(1)で選択した制御対象物単位j_endに属する４つの制御対象物を、制御対象物単位jに隣接する制御対象物単位j_nのうちの１つである制御対象物単位j_k(k=1,…,n)の中の周囲に存在する４つの空隙位置に移動させ、制御対象物単位j_kとj_endに属する制御対象物で8マスの立方体構造をとるようにする（図７Ｂ）。
【００４８】
(3) 制御対象物単位jに所属する制御対象物と上記(1)で選択した制御対象物単位j_endに所属する制御対象物の位置を入れ替える（図７Ｂ）。言い換えれば、制御対象物単位j_endに所属する制御対象物を、制御対象物単位jに所属する制御対象物の位置に移動させる。このように、制御対象物（又は制御対象物単位）の位置の入れ替えとは、ある制御対象物（又はある制御対象物単位）が制御対象物構造の接続性を維持しつつ移動するために、別の制御対象物（又は別の制御対象物単位）が、そのある制御対象物（又はそのある制御対象物単位）の位置に移動することを意味する。
【００４９】
(4) 制御対象物単位jに所属する制御対象物を制御対象物単位j'の周りにある４つの空隙位置に移動させ、制御対象物単位jとj'に属する制御対象物で8マスの立方体構造をとるようにする(図７Ｄ)。その後、制御対象物単位jの制御対象物を目標位置に移動させる。
【００５０】
以上に述べた制御を、全ての制御対象物単位が目標位置につくまで繰り返し行えば、ヘテロジニアス隊列制御が完了する。この制御において、従来必要であった制御対象物同士の位置の入れ替え作業は、上記の(3)において代替されている。以上の手法によれば、全ての制御対象物単位について、初期位置から目標位置に至るまでに必要な移動量は、入れ替えがなかった場合の移動量と同程度であり、かつそのほかの移動は必要としない。すなわち、本手法により、隊列の全体変形と制御対象物位置の入れ替えが同時に行われている。
【００５１】
このように、全体の形状の変形動作と変形後の制御対象物位置の入れ替えを別個のプロセスとせずに同時に行うことで、隊列制御動作にかかる時間を短縮することができる。
【００５２】
［制御対象物単位の移動について］
本発明では、初期隊列形成状態と目的隊列形成状態は、それぞれ８マス制御対象物単位を複数個集めることで形成されるものとする。上述の４マス制御対象物単位の移動の説明では、８マス中の４マスが空隙であるものとして説明をしたが、本発明の実施形態では８マス全てが制御対象物で埋まっている状態となる。
【００５３】
集合Sおよび集合Gの定義は上述の説明と同じであるが、４マス制御対象物単位数j_maxは偶数であることを前提とする。４マス制御対象物単位が２つペアになって８マス制御対象物単位を形成するからである。また、１つの8マス制御対象物単位を構成する２つの4マス制御対象物単位である第一型制御対象物単位と第二型制御対象物単位の制御対象物番号（ID）の間には以下の関係が成り立つものとする。
【００５４】
jA+ j_max/2 = jB
ここで、第一実施形態では、jAは第一型制御対象物単位のID、jBは第二型制御対象物単位のIDである。また、第二実施形態では、jAは第二型制御対象物単位のID、jBは第一型制御対象物単位のIDである。例えば、j_max=8の場合、jA=0,1,2,3、jB=4,5,6,7であり、(jA,jB)=(0,4)（1,5）（2,6）（3,7）の組がそれぞれ８マス制御対象物単位を構成する。
【００５５】
各４マス制御対象物単位の移動の方法は既述の通りではあるが、上述の説明では８マス制御対象物単位中の一方の４マス制御対象物単位が空隙であることを前提としていたため空隙を通って移動ができた。一方、本発明の初期隊列形成状態は８マス全てが制御対象物で埋まっているため空隙がなく、自由に移動することはできない。そこで、第一実施形態では、以下のCASE 1からCASE 4の順に処理を行う。
【００５６】
[CASE 1] S内で相方の第一型制御対象物単位jAが存在しない状態になった第二型制御対象物単位jBに接する位置にある８マス制御対象物単位内の第一型制御対象物単位jAのうち以下のいずれかの位置を目標位置とする第一型制御対象物単位jAがある場合。
【００５７】
・S内の第二型制御対象物単位jBのみになった８マス制御対象物単位に接する位置にあるG内の8マスの空隙の制御対象物単位の位置、または、
・G内の第一型制御対象物単位jAに接する位置にあるG内の８マスの空隙の制御対象物単位の位置
上記条件に該当する第一型制御対象物単位が存在する場合、その中の１つを移動対象の制御対象物単位（標的第一型制御対象物単位）として選択し、図５に示すような動作で、G内目標位置まで移動を行う。
【００５８】
言い換えれば、この処理を実行する後述の標的第一型制御対象物単位選択部１１は、対応する第一型制御対象物単位が初期位置から移動したあとの状態の第二型制御対象物単位に隣接する位置にあるS内の８マス制御対象物単位内の第一型制御対象物単位であって、対応する第一型制御対象物単位が初期位置から移動したあとの状態のS内第二型制御対象物単位に隣接する位置又はG内に移動後の第一型制御対象物単位に隣接する制御対象物のない位置を目標位置とするS内第一型制御対象物単位がある場合には、その第一型制御対象物単位を標的第一型制御対象物単位として選択する。
【００５９】
[CASE 2] CASE 1に該当する第一型制御対象物単位が存在せず、かつ、S内で相方の第一型制御対象物単位jAのいない状態になった第二型制御対象物単位jBに接する位置にある８マス制御対象物単位内の第一型制御対象物単位jAのうち、当該制御対象物単位のG内の目標位置に他のG内への移動後の第一型制御対象物単位が存在する場合。
【００６０】
この場合、CASE 2の条件に該当する第一型制御対象物単位の１つを移動対象の制御対象物単位（標的第一型制御対象物単位）として選択する。
【００６１】
言い換えれば、この処理を実行する後述の標的第一型制御対象物単位選択部１１は、CASE 1に該当する第一型制御対象物単位が存在しない場合において、対応する第一型制御対象物単位が初期位置から移動したあとの状態の第二型制御対象物単位に隣接する位置にあるS内の８マス制御対象物単位内の第一型制御対象物単位であって、その第一型制御対象物単位の目標位置に他のG内への移動後の第一型制御対象物単位が存在する場合には、その第一型制御対象物単位を標的第一型制御対象物単位として選択する。
【００６２】
その後、以下の手順で移動を行う。
【００６３】
(1) 標的第一型制御対象物単位のG内の目標位置に存在する他の第一型制御対象物単位を「第１追い出し対象制御対象物単位jA'」とし、第１追い出し対象制御対象物単位jA'のG内目標位置に他の第一型制御対象物単位が存在する場合には当該他の第一型制御対象物単位を「第２追い出し対象制御対象物単位jA''」とする。これを第ｋ追い出し制御対象物単位(ｋは正の整数)のG内目標位置が他の第一型制御対象物単位に占有されない状態になるまで繰り返す。
【００６４】
(2) 標的第一型制御対象物単位を第１追い出し制御対象物単位に隣接する8マス制御対象物単位内の空隙位置に移動させた後、図７Ｂから図７Ｃの動作に従い第１追い出し制御対象物単位と標的第一型制御対象物単位の位置を入れ替え、標的第一型制御対象物単位を第１追い出し制御対象物単位が存在していた位置に移動させる。図７Ａの左端に図示されている制御対象物単位j_endが「標的第一型制御対象物単位」であり、制御対象物単位jが「第１追い出し制御対象物単位」であり、制御対象物単位j_nが「第１追い出し制御対象物単位に隣接する8マス制御対象物単位」である。図７Ｂにおいて、制御対象物単位j_end（斜線で示された４マス制御対象物単位）が、制御対象物単位j_n内の空隙位置に移動しており、図７Ｃで制御対象物単位jの位置が同じ8マス制御対象物単位内の第二型制御対象物単位側の位置へ移動し、かつ、位置制御対象物単位j_endが、制御対象物単位jが元々存在していた位置に移動している。
【００６５】
(3) 第ｋ追い出し制御対象物単位を第(k+1)追い出し制御対象物単位に隣接する８マス制御対象物単位の空隙位置に移動させた後、図７Ｂから図７Ｃの動作に従い第ｋ追い出し制御対象物単位と第(k+1)追い出し制御対象物単位の位置を入れ替える。この処理を、k=1,2,…,K-1(Kは上記(1)で調べたkの総数)について順に繰り返す。
【００６６】
(4) 第Ｋ追い出し制御対象物単位を、現在の隊列形成状態に隣接する制御対象物の存在しない４マス制御対象物単位の位置のうち、G内の第K追い出し制御対象物単位の目標位置に最も近い４マス制御対象物単位の位置に移動させる。これは、図５に示すような動作で実現できる。
【００６７】
[CASE 3] CASE 1及びCASE 2に該当する第一型制御対象物単位が存在しない場合。
【００６８】
この場合、S内で相方の第一型制御対象物単位jAのいない状態になった第二型制御対象物単位jBに接する位置にある８マス制御対象物単位内の第一型制御対象物単位jAの１つを標的第一型制御対象物単位として選択し、現在の隊列形成状態に隣接する制御対象物単位の存在しない４マス制御対象物単位の位置のうち、G内の標的第一型制御対象物単位jAの目標位置に最も近い４マス制御対象物単位の位置に移動させる。
【００６９】
言い換えれば、この処理を実行する後述の標的第一型制御対象物単位選択部１１は、CASE 1及びCASE 2に該当する第一型制御対象物単位が存在しない場合において、対応する第一型制御対象物単位が初期位置から移動したあとの状態の第二型制御対象物単位に隣接する位置にあるS内の第一型制御対象物単位がある場合には、その第一型制御対象物単位を標的第一型制御対象物単位として選択する。
【００７０】
[CASE 4] CASE 1からCASE 3に該当する第一型制御対象物単位が存在しない場合。
【００７１】
この場合、S内でGに接する位置にある８マス制御対象物単位内の第一型制御対象物単位jAの中の１つを標的第一型制御対象物単位として選択し、現在の隊列形成状態に隣接する制御対象物の存在しない４マス制御対象物単位のうち、G内の標的第一型制御対象物単位jAの目標位置に最も近い４マス制御対象物単位に移動させる。
【００７２】
言い換えれば、この処理を実行する後述の標的第一型制御対象物単位選択部１１は、CASE 1からCASE 3に該当する第一型制御対象物単位が存在しない場合には、S内でGに隣接する位置にある第一型制御対象物単位を標的第一型制御対象物単位として選択する
CASE 1からCASE 4の処理を、S内の全ての第一型制御対象物単位jAがG内の目標位置に到達するまで繰り返すことで、８マス全てが制御対象物で埋め尽くされた初期隊列形成状態から、第一型制御対象物単位の目的隊列形成状態への移動を行う。
【００７３】
その後は、初期隊列形成状態中には第二型制御対象物単位のみとなり、８マス制御対象物単位の位置内の残り４マス（当初、第一型制御対象物単位が存在していた場所）が空隙となるので、既述の４マス制御対象物単位の移動を用いて空隙を通って各第二型制御対象物単位を目的隊列形成状態中の目標位置へ移動させる。初期隊列形成状態から離れた位置にある目的隊列形成状態内の空隙から順に埋まっていくように、目標位置が遠いものから順に第二型制御対象物単位を移動させればよい。
【００７４】
＜第一実施形態＞
以下、第一実施形態の制御装置及び方法について説明する。
【００７５】
制御装置は、図１７に示すように、第一型制御対象物単位移動制御部１、第二型制御対象物単位移動制御部２及び記憶部３を例えば備えている。
【００７６】
制御方法は、制御装置が、図１８及び図１９並びに以下に説明するステップＳ１１からステップＳ２３の処理を行うことにより例えば実現される。
【００７７】
第一型制御対象物単位及び第二型制御対象物単位には、当該制御対象物単位が目標位置への移動が完了したか否かを示す情報が対応付けられているものとする。ここでは、unfilled_g[j]を第一型制御対象物単位又は第二型制御対象物単位jが目標位置への移動が完了したか否かを示す値を格納した変数とし、
unfilled_g[j]＝０（移動が完了していない）
unfilled_g[j]＝１（移動が完了している）
であるものとして説明する。各jについてのunfilled_g[j]の初期値は０（移動が完了していない）とする。unfilled_g[j]は、記憶部３に格納される。また、unfilled_g[j]は、必要に応じて記憶部３から読み込まれる。
【００７８】
［第一型制御対象物単位移動制御部１］
第一型制御対象物単位移動制御部１は、初期隊列形成状態中の各８マス制御対象物単位中の４マス制御対象物単位である第一型制御対象物単位jAを、目的隊列形成状態中の各８マス制御対象物単位内の４マス制御対象物単位の位置へ移動させる（ステップＳ１）。このステップＳ１を、第一ステージともいう。
【００７９】
その際、第一型制御対象物単位移動制御部１は、制御対象物構造の接続性を維持しながら、第一型制御対象物単位をその目標位置に移動させる。
【００８０】
ここで、第一型制御対象物単位jAの移動先の４マス制御対象物単位は、８マス制御対象物単位中の第二型制御対象物単位jBに相当する位置となる。つまり、初期隊列形成状態中の第一型制御対象物単位は、目的隊列形成状態内で第二型制御対象物単位の形状に配置されることになる。なお、回転操作等を加えれば、初期隊列形成状態中の第一型制御対象物単位を、目的隊列形成状態内でも第一型制御対象物単位の形状に配置するようにすることも可能であるが、８マス制御対象物単位の各制御対象物は同一（ホモジニアス）であることを前提としているため、８マス制御対象物単位内の配置を合わせるために余計な移動操作をする必要性がないことから、より少ないステップ数で移動可能な第二型制御対象物単位の位置へ移動する方法を採用している。
【００８１】
［［標的第一型制御対象物単位選択部１１］］
標的第一型制御対象物単位選択部１１は、移動対象とする４マス制御対象物単位（標的第一型制御対象物単位）を選択する（ステップＳ１１）。選択された標的第一型制御対象物単位についての情報は、第一移動部１２、第二移動部１３及び第三移動部１４に出力される。標的第一型制御対象物単位は、隊列を形成するS内各８マス制御対象物単位の何れかにおける第一型制御対象物単位jA である。
【００８２】
具体的には、上述のCASE 1からCASE 4の何れかに該当する第一型制御対象物単位のうちの１つを標的第一型制御対象物単位j_fとして選択する。このとき、CASE 4よりはCASE 3を、CASE 3よりはCASE 2を、CASE 2よりはCASE 1を優先する。言い換えれば、CASE 1に該当する第一型制御対象物単位があればその中から標的第一型制御対象物単位を選択し、CASE 1に該当するものが無い場合はCASE 2に該当する第一型制御対象物単位があるか否かを調べて該当するものがあればそのうちの１つの標的第一型制御対象物単位を選択する。同様に、CASE 2に該当する第一型制御対象物単位がなければCASE 3を調べ該当するものがあればそのうちの１つの標的第一型制御対象物単位を選択する。CASE 3に該当する第一型制御対象物単位もなければ、CASE 4に該当する第一型制御対象物単位の中から１つの標的第一型制御対象物単位を選択する。
【００８３】
そして、標的第一型制御対象物単位がCASE 1に該当する場合は第一移動部１２が実行され、標的第一型制御対象物単位がCASE 2に該当する場合は第二移動部１３が実行され、CASE 3又はCASE 4に該当する場合は第三移動部１４が実行される。
【００８４】
［［第一移動部１２］］
第一移動部１２は、標的第一型制御対象物単位をG内の目標位置へ移動させる。この移動は図１０及び図１１に示す動作から始め、図５に示す手順で行うことができる。目標位置への移動が完了したら、標的第一型制御対象物単位j_fに対応するunfilled_g[j_f]の値を１に設定する。つまり、標的第一型制御対象物単位j_fについては目標位置への移動が完了したことを示す情報を記憶部３に格納する。
【００８５】
このようにして、第一移動部１２は、CASE 1で選択された標的第一型制御対象物単位をその目標位置に移動させる（ステップＳ１２）。
【００８６】
［［第二移動部１３］］
第二移動部１３は、標的第一型制御対象物単位をG内の目標位置へ移動させるが、CASE 2の場合は標的第一型制御対象物単位の目標位置に他の制御対象物単位が存在しているため、まずは当該他の制御対象物単位を別の空隙に移動させつつ、目標位置に標的第一型制御対象物単位を移動させる必要がある。具体的に以下の手順で移動を行う。
【００８７】
(1) 標的第一型制御対象物単位のG内の目標位置に存在する他の第一型制御対象物単位を「第１追い出し対象制御対象物単位jA'」とし、追い出し対象制御対象物単位jA'のG内目標位置に他の第一型制御対象物単位が存在する場合には当該他の第一型制御対象物単位を「第２追い出し対象制御対象物単位jA''」とする。これを第ｋ追い出し制御対象物単位(ｋは正の整数)のG内目標位置が他の第一型制御対象物単位に占有されない状態になるまで繰り返す。
【００８８】
(2) 標的第一型制御対象物単位を第１追い出し制御対象物単位に隣接する8マス制御対象物単位内の空隙位置に移動させた後、図７Ｂから図７Ｃの動作に従い第１追い出し制御対象物単位と標的第一型制御対象物単位の位置を入れ替え、（詳細は図１２及び図１３）、標的第一型制御対象物単位を第１追い出し制御対象物単位が存在していた位置に移動させる。
【００８９】
(3) 第ｋ追い出し制御対象物単位を第（ｋ＋１）追い出し制御対象物単位に隣接する８マス制御対象物単位内の空隙位置に移動させた後、図７Ｂから図７Ｃの動作に従い第（ｋ＋１）追い出し制御対象物単位と第ｋ追い出し制御対象物単位の位置を入れ替え（詳細は図１２及び図１３）、第ｋ追い出し制御対象物単位を第（ｋ＋１）追い出し制御対象物単位が存在していた位置に移動させる。この処理を、ｋ＝１，…，Ｋ−１(Ｋは上記(1)で調べたｋの総数)について順に繰り返す。
【００９０】
(4) 第Ｋ追い出し制御対象物単位を、現在の隊列形成状態に隣接する４マス制御対象物単位のうち、G内の第K追い出し制御対象物単位の目標位置に最も近い4マス制御対象物単位に移動させる。（ここで、第Ｋ追い出し制御対象物単位がその目標位置についていることも起こりうる。）これは、図５に示すような動作で実現できる。
【００９１】
(5) 目標位置への移動が完了したら、標的第一型制御対象物単位j_fに対応するunfilled_g[j_f]の値を１に設定する。また、第１追い出し制御対象物から第Ｋの追い出し制御対象物のうち、目標位置に着いたもののunfilled_g[j_f]の値を１に設定する。つまり、標的第一型制御対象物単位j_f、第１追い出し制御対象物から第K-1の追い出し制御対象物（場合によっては第Ｋ追い出し制御対象物も）については目標位置への移動が完了したことを示す情報を記憶部３に格納する。
【００９２】
このようにして、第二移動部１３は、CASE 2で選択された標的第一型制御対象物単位の目標位置に存在する他の第一型制御対象物単位を第１追い出し対象制御対象物単位とし、第１追い出し対象制御対象物単位の目標位置に別の第一型制御対象物単位が存在するときにはその別の第一型制御対象物単位を第２追い出し対象制御対象物単位とする処理を、Ｋを正の整数として、第Ｋ追い出し対象制御対象物単位の目標位置に別の第一型制御対象物単位が存在しなくなるまで繰り返し行い、ｋ＝１，…，Ｋとして、CASE 2で選択された標的第一型制御対象物単位、第１追い出し対象制御対象物単位、・・・、第Ｋ−１追い出し対象制御対象物単位のそれぞれを目標位置に移動させ、第Ｋ追い出し対象制御対象物単位を第Ｋ追い出し対象制御対象物単位の目標位置に最も近いG内の位置に移動させる（ステップＳ１３）。
【００９３】
［［第三移動部１４］］
第三移動部１４は、標的第一型制御対象物単位をG内の所定位置（以下、「暫定目標位置」という）へ移動させる。ここでの暫定目標位置とは、現在の隊列形成状態に隣接する制御対象物を含まない4マス制御対象物単位の位置のうち、G内の標的第一型制御対象物単位jAの目標位置に最も近い４マス制御対象物単位の位置である。CASE 3又はCASE 4の場合は、標的第一型制御対象物単位のG内の目標位置は現在の隊列形成状態に隣接する場所に無いため直接移動ができないことから、第三移動部１４では現在の隊列形成状態に隣接する８マスの空隙を持つの制御対象物単位の位置に暫定的に標的第一型制御対象物単位を移動させることが目的である。具体的な移動はCASE3の移動の場合は、図１０及び図１１に始まり、図５に示す手順で行うことができる。CASE4の場合は、図１４、及び図１５に示す手順で行うことができる（図５内の最後の手順）。目標位置の代わりに暫定目標位置とする点を除いては、第一移動部１２と第三移動部１４の処理は同じであるとも言える。
【００９４】
このようにして、第三移動部１４は、CASE 3及びCASE 4の場合に、CASE 3及びCASE 4で選択された標的第一型制御対象物単位を、現在の制御対象物単位構造に隣接する位置であって、その標的第一型制御対象物単位の目標位置に最も近いG内の位置に移動させる（ステップＳ１４）。
【００９５】
［［第一制御部１５］］
第一制御部１５は、現在の隊列のすべての第一型制御対象物単位について目標位置への移動が完了したか否かを判定し、移動が完了していない第一型制御対象物単位があれば（例えば、unfilled_g[j]=0なるjが１つでもあれば）、標的第一型制御対象物単位選択部１１、第一移動部１２、第二移動部１３及び第三移動部１４を実行させる。
【００９６】
全ての第一型制御対象物単位について目標位置への移動が完了したら（例えば、全てのjについてunfilled_g[j]=1であるならば）、第二型制御対象物単位移動制御部２を実行させる。
【００９７】
このようにして、第一制御部１５は、全ての第一型制御対象物単位が目標位置に移動するまで、標的第一型制御対象物単位選択部１１、第一移動部１２第二移動部１３及び第三移動部１４の処理を繰り返し行うように制御する。
【００９８】
［第二型制御対象物単位移動制御部２］
第二型制御対象物単位移動制御部２は、初期隊列形成状態Ｓ内の各８マス制御対象物単位中の第二型制御対象物単位を目的隊列形成状態内の各目標位置へ移動させる（ステップＳ２）。このステップＳ２を、第二ステージともいう。
【００９９】
その際、第二型制御対象物単位移動制御部２は、制御対象物構造の接続性を維持しながら、第二型制御対象物単位をその目標位置に移動させる。
【０１００】
第一型制御対象物単位移動制御部１を実行後の初期隊列形成状態には第二型制御対象物単位しか存在せず、目的隊列形成状態には第一型制御対象物単位しか存在しないので、各制御対象物単位間には４マスの空隙が存在する。よって、この空隙を通り抜けて移動させることが可能である。
【０１０１】
第二型制御対象物単位移動制御部２は、図１７に示すように、標的第二型制御対象物単位選択部２１、移動制御部２２及び第二制御部２３を例えば備えている。
【０１０２】
以下、各部の具体処理を説明する。
【０１０３】
［［標的第二型制御対象物単位選択部２１］］
標的第二型制御対象物単位選択部２１は、移動対象とする４マス制御対象物単位（標的第二型制御対象物単位）を選択する。ここでの標的第二型制御対象物単位は、初期隊列形成状態を形成する各８マス制御対象物単位内の何れかにおける第二型制御対象物単位jBであって、まだ目標位置への移動が完了していない(unfilled_g[j]=0である)制御対象物単位であって、基準位置(X_first,Y_first,Z_first)にある制御対象物単位j'からマンハッタン距離の最も離れたG内位置を目標位置とする第二型制御対象物単位である。ここでいう基準位置は、S内８マス制御対象物単位のうち、Gに接する位置の８マス制御対象物単位の位置であればどれでもよいが、第一型制御対象物単位移動制御部１にて最初にSから移動を行った第一型制御対象物単位の初期位置を使用することにするのが簡便である。
【０１０４】
言い換えれば、標的第二型制御対象物単位選択部２１は、目標位置に到達していない第二型制御対象物単位を標的第二型制御対象物単位として選択する（ステップＳ２１）。以下、標的第二型制御対象物単位をj_fであるものとして説明する。
【０１０５】
［［移動制御部２２］］
移動制御部２２は、図１７に示すように、接続性判定部２２１、交換第二型制御対象物単位選択部２２２、交換第二型制御対象物単位移動制御部２２３、交換第二型制御対象物単位押出制御部２２４及び標的第二型制御対象物単位移動制御部２２５を例えば備えている。
【０１０６】
移動制御部２２は、接続性判定部２２１、交換第二型制御対象物単位選択部２２２、交換第二型制御対象物単位移動制御部２２３、交換第二型制御対象物単位押出制御部２２４及び標的第二型制御対象物単位移動制御部２２５の処理により、標的第二型制御対象物単位を目標位置に移動させるときに制御対象物構造の接続性が維持されるかどうか判定し、(1)制御対象物構造の接続性が維持されると判定された場合には、標的第二型制御対象物単位を目標位置に移動させ、(2)制御対象物構造の接続性が維持されないと判定された場合には、標的第二型制御対象物単位の位置に制御対象物構造の接続性を維持しながら移動することができる第二型制御対象物単位である交換第二型制御対象物単位を選択し、交換第二型制御対象物単位を標的第二型制御対象物単位の位置に移動させた後に標的第二型制御対象物単位を目標位置に移動させる。
【０１０７】
以下、各部の具体処理を説明する。
【０１０８】
[[[接続性判定部２２１]]]
接続性判定部２２１は、標的第二型制御対象物単位j_fを移動させることで制御対象物構造の接続性が維持されるか否かを判定し（ステップＳ２２１）、接続性が維持される場合には標的第二型制御対象物単位移動制御部２２５を実行させ、接続性が維持されない場合には交換第二型制御対象物単位選択部２２２を実行させる。
【０１０９】
具体的には、式(1)においてjをj_fと読み替え、j'をj_fの移動先である所定位置としたときに、jに隣接する全ての第二型制御対象物単位jBについて式(1)を満たせば接続性は維持されると判定し、そうでない場合には接続性は維持されないと判定する。
【０１１０】
そして、接続性が維持されると判定された場合は標的第二型制御対象物単位移動制御部２２５を実行させ、接続性が維持されないと判定された場合は交換第二型制御対象物単位選択部２２２を実行させる。つまり、接続性が維持されない場合には、目標位置への移動が終わっていない他の第二型制御対象物単位を交換第二型制御対象物単位として、当該交換第二型制御対象物単位を標的第二型制御対象物単位の近傍に移動させ、標的第二型制御対象物単位の現在位置に交換第二型制御対象物単位を移動させたうえで標的第二型制御対象物単位を移動させることで、接続性が途切れないようにしようとするものである。
【０１１１】
[[[交換第二型制御対象物単位選択部２２２]]]
交換第二型制御対象物単位選択部２２２は、標的第二型制御対象物単位j_fを移動させても制御対象物構造の接続性が途切れないように他の８マス制御対象物単位中の第二型制御対象物単位を標的第二型制御対象物単位j_fの現在位置に移動させるため、移動対象とする「他の第二型制御対象物単位」（以下、「交換第二型制御対象物単位」という）を選択する（ステップＳ２２２）。ここで選択する交換第二型制御対象物単位は、まだ目標位置への移動が完了していない第二型制御対象物単位とする。
【０１１２】
具体的には、現在の制御対象物構造中で外側（端点）に位置する第二型制御対象物単位である外側制御対象物単位のうち、標的第二型制御対象物単位j_fの移動先であるＧ内の目標位置にある制御対象物単位j'から見て制御対象物単位j_fよりも離れた位置にある外側制御対象物単位であって、移動させても制御対象物構造の接続性が途切れない外側制御対象物単位を１つ選択し、交換第二型制御対象物単位とする。
【０１１３】
具体的には、例えば以下の(1)の処理で実現できる。
【０１１４】
(1) 標的第二型制御対象物単位j_fの位置から、δ値（制御対象物単位j'からみたマンハッタン距離）の大きな隣接する第二型制御対象物単位jBをたどっていき、それ以上δ値の大きな制御対象物単位に到達できなくなる第二型制御対象物単位jBを検出して、それを交換第二型制御対象物単位j_endとする。
【０１１５】
[[[交換第二型制御対象物単位移動制御部２２３]]]
交換第二型制御対象物単位移動制御部２２３は、交換第二型制御対象物単位選択部２２２で選択した交換第二型制御対象物単位j_endに属する第二型制御対象物を標的第二型制御対象物単位j_fに隣接する８マス制御対象物単位の位置内にある空隙に移動させるよう制御する（ステップＳ２２３）。具体的には、例えば、以下の(1)から(4)の処理により実現される。
【０１１６】
(1) 標的第二型制御対象物単位j_fに隣接する８マス制御対象物単位の位置であって、かつ交換第二型制御対象物単位j_endの位置と重ならない位置にある８マス制御対象物単位の位置のうち、標的第二型制御対象物単位j_fから、行動a=3,4,6の方向（つまり、x,y,z軸のいずれかの負方向）に隣接している位置にある８マス制御対象物単位の位置内の第二型制御対象物単位j_f_n（以下、「隣接空隙位置」という）を選択する。その際の隣接方向の逆方向をa_exに格納する。
【０１１７】
(2) 上記(1)にて、該当の隣接空隙位置j_f_nが見つからなかった場合、標的第二型制御対象物単位j_fに隣接する８マス制御対象物単位の位置であって、かつ交換第二型制御対象物単位j_endの位置と重ならない位置にある８マス制御対象物単位の位置のうち、標的第二型制御対象物単位j_fから、行動a=1,2,5の方向（つまり、x,y,z軸の何れかの正方向）に隣接している８マス制御対象物単位の位置内の第二型制御対象物単位j_f_nを選択する。その際の隣接方向の逆方向をa_exに格納する。必ず(1)→(2)の順に処理を行う。これは、（2）にて選択される第二型制御対象物単位j_f_nを使用する後述の交換第二型制御対象物単位押出制御部２２４の処理において、(1)にて選択される可能性のある第二型制御対象物単位が存在しないことが、制御対象物構造の接続性を維持するうえで必須であるからである。
【０１１８】
(3) 交換第二型制御対象物単位j_endの位置から、隣接空隙位置j_f_nに至るまでの制御対象物構造内をたどる道筋（経路に対応するS内の制御対象物単位各位置の列）を計算し、その道中の位置を
pass_j_f[nf](nf=0,1,2,…,nf_max)
として格納する。（pass_j_f[0]=j_end,pass_j_f[nf_max]=j_f_nとなる。）
【０１１９】
(4) 交換第二型制御対象物単位j_endを制御対象物単位pass_j_f[1]内の空隙に移動させる。例えば、X軸の正方向への移動であれば、図８に示すような手順で移動させ、X軸の負方向への移動であれば図９に示す手順で移動させることができる。Y軸及びZ軸の正方向又は負方向への移動も同様に行うことができる。この後は、制御対象物単位j_f_n内の空隙に至るまで、pass_j_fに格納済みの道中にある制御対象物単位をたどらせつつ制御対象物単位j_endを移動させる。その移動は、各移動ステップにおいて、X正方向への移動ならば例えば図１０に示す方法で、負方向への移動ならば、図１１に示す方法で移動させる。Y軸及びZ軸の正方向又は負方向への移動も同様に行うことができる。
【０１２０】
[[[交換第二型制御対象物単位押出制御部２２４]]]
交換第二型制御対象物単位押出制御部２２４は、標的第二型制御対象物単位j_fの現在位置に交換第二型制御対象物単位j_endを移動させる（ステップＳ２２４）。これに伴い、標的第二型制御対象物単位j_fは同じ８マス制御対象物単位内の第一型制御対象物単位の位置へ移動する。このとき、隣接方向をa_exに基づいて入れ替え操作を行えばよい。例えば、a_ex=1（X軸の正方向）である場合は、図１２に示す制御対象物の移動により交換が実現できる。同様に、a_ex=3（X軸の負方向）である場合は、図１３に示す制御対象物の移動により交換が実現できる。Y軸及びZ軸の正方向又は負方向についても同様に交換を行えばよい。
【０１２１】
[[[標的第二型制御対象物単位移動制御部２２５]]]
標的第二型制御対象物単位移動制御部２２５は、標的第二型制御対象物単位j_fをG内の目標位置へ移動させる（ステップＳ２２５）。移動操作は、交換第二型制御対象物単位移動制御部２２３と同様の方法（例えば図１０、図１１に例示する手順の移動）である。標的第二型制御対象物単位j_fの目標位置にに移動させ、移動が完了したら、unfilled_g[j_f]の値を１に変更する。１は、目標位置に制御対象物単位が到達していることを示す値である。
【０１２２】
［［第二制御部２３］］
第二制御部２３は、初期隊列形成状態S中の全ての第二型制御対象物単位が目標位置に到達しているかを判定し、到達していなければ標的第二型制御対象物単位選択部２１に戻って移動を繰り返すよう制御する。完了していれば、目的隊列形成状態への移動が完了したものとして処理を終了する。例えば、制御対象物単位j=0から順にunfilled_g[j]の値を確認し、unfilled_g[j]=0なるjがあれば標的第二型制御対象物単位選択部を実行させ、全てのjについてunfilled_g[j_f]=1ならば処理を終了する。
【０１２３】
このようにして、第二制御部２３は、目標位置に到達していない第二型制御対象物単位がなくなるまで、標的第二型制御対象物単位選択部２１及び移動制御部２２の処理を繰り返し行うように制御する（ステップＳ２３）。
【０１２４】
＜第二実施形態＞
第一実施形態では、移動方向と並行な方向に複数の制御対象物単位が連続している場合において、初期位置にある各制御対象物単位を目標位置に移動を開始する時刻については、移動方向の先頭制御対象物単位から順に、１つ前に目標位置に移動を開始した制御対象物単位が、目標位置にたどりついた時刻の後にする手法、すなわち移動方向に連続する制御対象物単位が１つずつ移動する手法を採用していた。
【０１２５】
これに対して制御対象物単位構造内の空隙をフルに使用すれば、複数の制御対象物単位を同時に目標位置まで移動させることも可能である。ここで、移動を開始しようとしている制御対象物単位が、１つ前に移動を開始した制御対象物単位の開始時刻から、一定時間内に移動を開始することができれば、全体の変形に要する時間を、制御対象物単位数の一乗に比例するものにすることができる。
【０１２６】
ここで、初期位置の集合Sと目標位置の集合Gは接しているものとし、目標位置の集合Gに接している初期位置の集合S内の制御対象物単位の位置の１つを接続位置Gate_S（X_Gate, Y_Gate, Z_Gate）とする。言い換えれば、初期位置の集合Sに含まれる位置であって目標位置の集合Gに接している位置の１つを接続位置Gate_Sとする。
【０１２７】
全ての制御対象物単位は、接続位置Gate_Sを経由して、目標位置G内に入っていくものとする。  第一実施形態と同様に、制御装置は、第一ステージで第一型制御対象物単位を目標位置Gに移動させ、第二ステージで第二型制御対象物単位を目標位置Gに移動させる。以下では、第一型制御対象物単位がjBであり、第二型制御対象物単位がjAである場合を例に挙げて説明する。
【０１２８】
第一ステージにおいては、第一型制御対象物単位が移動を開始する順番としては、初期位置S内にて接続位置Gate_Sからのマンハッタン距離が小さい位置を初期位置とする第一型制御対象物単位jから、目標位置G内に入っていく第一型制御対象物単位を選ぶこととする。
【０１２９】
第二ステージにおいては、第二型制御対象物単位が移動を開始する順番としては、目標位置G内にて接続位置Gate_Sからのマンハッタン距離が大きい位置を目標位置とする初期位置S内の第二型制御対象物単位jから、初期位置S内にてδ（接続位置Gate_Sからのマンハッタン距離）の大きい位置をたどっていくことでたどり着ける第二型制御対象物単位j_endのうち、第二型制御対象物単位j_endに隣接する第二型制御対象物単位のδ値が、その第二型制御対象物単位j_endのδ値より皆小さいものを選び、第二型制御対象物単位j_endを第二型制御対象物単位jと入れ替えて、第二型制御対象物単位jを移動可能とし、第二型制御対象物単位jを目標位置G内に移動させていくこととする。
【０１３０】
開始時刻については、移動を開始しようとしている第一型制御対象物単位が、１つ前に移動を開始した第一型制御対象物単位の初期位置よりδ値においてdδだけ大きい場合、移動を開始しようとしている第一型制御対象物単位は、１つ前に移動を開始した第一型制御対象物単位の移動開始時刻から、tv-dδ時間ステップ後に移動を開始する。ここでtvは２以上の正の整数であり、例えばtv=2である。
【０１３１】
同様に、開始時刻については、移動を開始しようとしている第二型制御対象物単位が、１つ前に移動を開始した第二型制御対象物単位の初期位置よりδ値においてdδだけ大きい場合、移動を開始しようとしている第二型制御対象物単位は、１つ前に移動を開始した第二型制御対象物単位の移動開始時刻から、tv-dδ時間ステップ後に移動を開始する。
【０１３２】
このようにすることで、移動を行う各第二型制御対象物単位は、tv=2の場合、互いにちょうど１つ分以上の第一型制御対象物単位分の距離を開けつつ、同時に移動をすることになる。
【０１３３】
さらに、第一型制御対象物単位が位置の入れ替えを行うときは、第一型制御対象物単位の位置の入れ替えの際に、第一型制御対象物単位の動作が接続位置Gate_Sからのマンハッタン距離を小さくする方向への移動を伴う場合にのみ、位置の入れ替えを行う第一型制御対象物単位の後続の第一型制御対象物単位はすべてtw時間ステップだけ、動作を停止する。twは、２以上の正の整数であり、例えばtw=2である。
【０１３４】
同様に、第二型制御対象物単位が位置の入れ替えを行うときは、第二型制御対象物単位の位置の入れ替えの際に、第二型制御対象物単位の動作が接続位置Gate_Sからのマンハッタン距離を小さくする方向への移動を伴う場合にのみ、位置の入れ替えを行う第二型制御対象物単位の後続の第二型制御対象物単位はすべてtw時間ステップだけ、動作を停止する。
【０１３５】
以下、第二実施形態の制御装置及び方法の動作の詳細を述べる。
【０１３６】
制御装置は、図２０に示すように、第一型制御対象物単位移動制御部１及び第二型制御対象物単位移動制御部２を例えば備えている。
【０１３７】
第一型制御対象物単位移動制御部１は、第一パス決定部１６、第一待ち時間調整部１７及び第一移動部１８を備えている。
【０１３８】
第二型制御対象物単位移動制御部２は、第二パス決定部２４、第二待ち時間調整部２５及び第二移動部２６を備えている。
【０１３９】
制御方法は、制御装置が、図２１及び以下に説明するステップＳ１６，Ｓ１７，Ｓ１８，Ｓ２４、Ｓ２５，Ｓ２６の処理を行うことにより例えば実現される。
【０１４０】
以下、第一実施形態と異なる処理を中心に説明する。第一実施形態と同じ部分については説明を省略する。
【０１４１】
以下、本発明の隊列制御装置の動作の詳細を述べる。
【０１４２】
［第一パス決定部１６］
第一パス決定部１６は、各第一型制御対象物単位が制御対象物構造の接続性を維持しながら接続位置を通って目標位置に到達するまでのパスを接続位置Gate_Sから近い初期位置にある第一型制御対象物単位のパスから順に決定する（ステップＳ１６）。
【０１４３】
決定されたパスについての情報は、第一待ち時間調整部１７及び第一移動部１８に出力される。
【０１４４】
例えば、第一パス決定部１６は、以下に説明する(1)から(3)の処理を行うことにより、各第一型制御対象物単位jが、各々の初期位置から目標位置まで移動するためのパスを計算する。
【０１４５】
以下の処理により、パスの各位置は、pass[j][t](t=0,1,2,…,t_max[j])に格納される。また、第一型制御対象物単位jが第一型制御対象物単位j'と入れ替えを行う時刻は、exchange[j][t](t=0,1,2,…,t_max[j])に格納される。第一型制御対象物単位jが後続の第一型制御対象物単位への待機を指示する時刻は、waiting_at[j][t](t=0,1,2,…,t_max[j])に格納される。なお、waiting_at[j][t]=1は待機を表し、waiting_at[j][t]=0は待機がないことを表す。
【０１４６】
(1) 第一パス決定部１６は、各第一型制御対象物単位の仮想位置を、その各第一型制御対象物単位の初期位置に設定する。ここで、第一パス決定部１６の処理はパスを決定するだけであり、第一パス決定部１６の処理においては第一型制御対象物単位の実際の位置は変わらない。各第一型制御対象物単位の実際の位置と区別するために、「仮想位置」という用語を用いる。
【０１４７】
また、第一パス決定部１６は、exchange[j][t], waiting_at[j][t]を全てのj,tで0に初期化する。
【０１４８】
そして、第一パス決定部１６は、(2)-(3)の処理を第一型制御対象物単位j_max/2から第一型制御対象物単位j_max-1まで実行する。ここで、jの番号は、δ値の小さい順に振ることとする。すなわち、δ(j_max/2)≦δ(j_max/2+1) ≦δj_max/2+2)≦…とする。
【０１４９】
(2) 第一パス決定部１６は、第一型制御対象物単位jの初期位置から、制御対象物単位の空隙、言い換えれば対応する第一型制御対象物単位がいなくなった第二型制御対象物単位の空隙をたどって接続位置Gate_Sに至る道筋を計算し、pass[j][t]に格納する。第一パス決定部１６は、この時の接続位置Gate_Sが格納されているpass内のt番号を、time_at_gate[j]及びtime_at_end[j]のそれぞれに格納する。なお、第一パス決定部１６は、第一型制御対象物単位jの移動開始時間t_start[j]は、δ(j)=δ(j-1)のときは、t_start[j]=t_strat[j-1]+tvに、δ(j)=δ(j-1)＋1のときは、t_start[j]=t_strat[j-1]+tv-1にする。第一パス決定部１６はt<t_startのpass値（すなわち、移動開始前のpass値）を、第一型制御対象物単位jの初期位置とする。
【０１５０】
(3) 第一パス決定部１６は、t=time_at_end[j]+1からのpass内に、接続位置Gate_Sから、第一型制御対象物単位jの目標位置G内目標位置までの道筋を計算して格納する。第一型制御対象物単位jの目標位置が、他の第一型制御対象物単位で埋められているかいないかで、処理が異なる。(3)の処理の例は、以下の(3-0)から(3-3)の処理である。
【０１５１】
(3-0) 第一パス決定部１６は、jm←jとする。
【０１５２】
(3-1) 第一パス決定部１６は、第一型制御対象物単位jmの目標位置が他の第一型制御対象物単位j'によって埋められている場合は、目標位置G内で第一型制御対象物単位j'の隣にある第一型制御対象物単位j_nまでの道筋を、t=time_at_end[j]+1からのpass[j][t]に追加する。第一パス決定部１６は、j_nとしては、j_nからj'に至る方向a_exが1,2,5の場合を優先的に選び、そのようなj_nがない場合のみ、a_ex=3,4,6の場合のj_nを選ぶ。第一パス決定部１６は、第一型制御対象物単位jmがj_nに至る時刻をt_exとしたとき、exchange[j][t_ex]←a_exとする。第一パス決定部１６は、j'をpassの最後尾に追加し、その時のtをtime_at_end[j]とする。第一パス決定部１６は、第一型制御対象物単位jmの仮想位置の値に、第一型制御対象物単位j'の仮想位置の値を代入し、(3-2)の処理を行う。第一パス決定部１６は、第一型制御対象物単位jmの目標位置が他の第一型制御対象物単位j'によって埋められていない場合は、(3-3)の処理を行う。
【０１５３】
(3-2) 第一パス決定部１６は、第一型制御対象物単位j'の目標位置が、他の第一型制御対象物単位j''によって占有されている場合は、jm←j', j'←j''とし(3-1)の処理を繰り返す。そうでない場合は(3-3)の処理を行う。
【０１５４】
(3-3) 第一パス決定部１６は、(3-1)の処理での入れ替えがなかった場合は、第一型制御対象物単位jmの目標位置から、目標位置G内の未充填位置内でもっとも近いマンハッタン距離にあり、目標位置G内の充填済み位置に接した位置を目標位置j_targetとし、j_targetに接する目標位置G内充填済み位置をj_target'として、jmからj_target'に至る目標位置G内の充填済み位置を経由した道筋をpassに追加する。passの最後尾にj_targetを追加する。第一パス決定部１６は、j_targetを格納したpassのt値をtime_at_end[j]とする。
【０１５５】
第一パス決定部１６は、(3-1)の処理での入れ替えがあった場合は、目標位置G内の未充填位置内で第一型制御対象物単位j'の目標位置から、もっとも近いマンハッタン距離にあり、かつ、「第一型制御対象物単位j'の現仮想位置から、接続位置Gate_Sからのδの値が第一型制御対象物単位j'の現仮想位置でのδ値より小さくならないようにたどって行ける目標位置G内の充填済み位置に接している位置」を目標位置j_targetとし、j_targetに接する目標位置G内充填済み位置をj_target'として、j'からj_target'に至る目標位置G内の充填済み位置を経由した道筋をpassに追加する。passの最後尾にj_targetを追加する。第一パス決定部１６は、j_targetを格納したpassのt値をtime_at_end[j]とする。このように、第一パス決定部１６は、後続の第一型制御対象物単位に衝突しないようδの小さくなる道をたどらないようにパスを決定する。
【０１５６】
(3-4) また、第一パス決定部１６は、pass内にて、第一型制御対象物単位の移動が、接続位置Gate_Sからのマンハッタン距離を減ずる方向のものとなる場合の時刻tでは、waiting_at[j][t]←1とする。このwaiting_at[j][t]←1とする処理は、第一待ち時間調整部１７により行われてもよい。
【０１５７】
［第一待ち時間調整部１７］
第一待ち時間調整部１７は、各第一型制御対象物単位が衝突しないように、各第一型制御対象物単位の待ち時間を決定する（ステップＳ１７）。
【０１５８】
決定された待ち時間についての情報は、第一移動部１８に出力される。
【０１５９】
第一待ち時間調整部１７は、第一型制御対象物単位の入れ替え時の、他の第一型制御対象物単位の待ち時間を考慮して、pass値を修正する。第一待ち時間調整部１７は、第一型制御対象物単位jが時刻tで入れ替えを行う場合、第一型制御対象物単位jの後続の全ての第一型制御対象物単位の時刻ｔ以降のpass値をtw時間ステップ分ずらしていく。
【０１６０】
例えば、第一待ち時間調整部１７は、以下に説明する(1)から(2)の処理を行うことにより、各第一型制御対象物単位の待ち時間を決定する。
【０１６１】
(1) 第一待ち時間調整部１７は、(2)の処理を第一型制御対象物単位j_max/2から第一型制御対象物単位j_max-1まで実行する。
【０１６２】
(2) 第一待ち時間調整部１７は、t=0から、time_at_end[j]まで以下の(2-1)の処理を実行する。
【０１６３】
(2-1) 第一待ち時間調整部１７は、waiting_at[j][t]が0以外の値のとき、第一型制御対象物単位jの後続の第一型制御対象物単位j_sub (j_sub>j)すべてについて、pass[j_sub][t']←pass[j_sub][t'-tw]、exchange[j_sub][t']←exchange[j_sub][t'-tw]とし(t'≧t+tw)、waiting_at[j_sub][t']←waiting_at[j_sub][t'-tw]とし(t'≧t+tw)、pass[j_sub][t+tw-1]←pass[j_sub][t]、pass[j_sub][t+tw-2]←pass[j_sub][t]、pass[j_sub][t+1]←pass[j_sub][t]、exchange[j_sub][t]←0, exchange[j_sub][t+ tw-1]←0、exchange[j_sub][t+tw-2]←0、exchange[j_sub][t+1]←0、waiting_at[j_sub][t]←0,waiting_at[j_sub][t+tw-1]←0、waiting_at[j_sub][t+tw-2]←0、waiting_at[j_sub][t+1]←0とする。t<t_start[j_sub]のときは、t_start[j_sub]をtw回インクリメントする。第一待ち時間調整部１７は、t<time_at_gate[j_sub]のときは、time_at_gate[j_sub]をtw回インクリメントする。第一待ち時間調整部１７は、t<time_at_end[j_sub]のときは、time_at_end[j_sub]をtw回インクリメントする。
【０１６４】
［第一移動部１８］
第一移動部１８は、第一パス決定部１６により決定されたパス及び第一待ち時間調整部１７により決定された待ち時間に従って、各第一型制御対象物単位を移動させる（ステップＳ１８）。
【０１６５】
具体的には、第一移動部１８は、以下に説明する(1)の処理を行うことにより、決定されたパス及び待ち時間に従って、第一型制御対象物単位を移動させる。
【０１６６】
(1) 第一移動部１８は、時刻t=0からtime_at_end[j_max]-1まで、以下の処理(1-1)の処理を繰り返す。
【０１６７】
(1-1) 第一移動部１８は、全ての第一型制御対象物単位jについて、exchange[j][t]が0以外の値のときは、pass[j][t]の位置にある第一型制御対象物単位jをpass[j][t+1]の位置にある第一型制御対象物単位の位置に移動させる。以降、pass[j][t+1]の位置にあった第一型制御対象物単位を新たな第一型制御対象物単位jとする。exchange[j][t]→a_exとし、a_ex=1,2,5のときは、図１２の動作で移動を行う。exchange[j][t]→a_exとし、a_ex=3,4,6のときは、図１３の動作で移動を行う。
【０１６８】
第一移動部１８は、exchange[j][t]が0のときは、pass[j][t]の位置にある第一型制御対象物単位jをpass[j][t+1]の位置に移動させる。第一移動部１８は、t≠time_at_end[j]-1のときは、第一型制御対象物単位の移動を、図１０又は図１１に示す動作で行う。第一移動部１８は、t=time_at_end[j]-1のときは、第一型制御対象物単位の移動を、図１４又は図１５に示す動作で行う。第一移動部１８は、pass[j][t]=pass[j][t+1]のときは何もしない。
【０１６９】
［第二パス決定部２４］
第二パス決定部２４は、各第二型制御対象物単位が制御対象物構造の接続性を維持しながら接続位置を通って目標位置に到達するまでのパスを接続位置から遠い位置を目標位置とする第二型制御対象物単位のパスから順に決定する（ステップＳ２４）。
【０１７０】
決定されたパスについての情報は、第二待ち時間調整部２５及び第二移動部２６に出力される。
【０１７１】
例えば、第二パス決定部２４は、以下に説明する(1)から(3)の処理を行うことにより、各第二型制御対象物単位jが、各々の初期位置から目標位置まで移動するためのパスを計算する。
【０１７２】
以下の処理により、パスの各位置は、pass[j][t](t=0,1,2,…,t_max[j])に格納される。また、第二型制御対象物単位jが第二型制御対象物単位j'と入れ替えを行う時刻は、exchange[j][t](t=0,1,2,…,t_max[j])に格納される。第二型制御対象物単位jが後続の第二型制御対象物単位への待機を指示する時刻は、waiting_at[j][t](t=0,1,2,…,t_max[j])に格納される。なお、waiting_at[j][t]=1は待機を表し、waiting_at[j][t]=0は待機がないことを表す。
【０１７３】
(1) 第二パス決定部２４は、全ての第二型制御対象物単位の仮想位置を第一移動部１８の処理の終了後の位置に設定する。第二パス決定部２４は、exchange[j][t],waiting_at[j][t]を全てのj,tで0に初期化する。第二パス決定部２４は、(2)-(3)の処理を第二型制御対象物単位0から第二型制御対象物単位j_max/2-1まで実行する。ここで、jの番号は、目標位置G内での各第二型制御対象物単位の目標位置の接続位置Gate_Sからのマンハッタン距離δの大きい順に振ることとする。すなわち、δ(0)≧δ(1)≧δ(2)≧…≧δ(j_max/2-2)≧δ(j_max/2-1)とする。
【０１７４】
(2) 第二パス決定部２４は、第二型制御対象物単位jの開始位置から、δ値が大きくなる道筋に第二型制御対象物単位をたどっていき式(1)を満たす第二型制御対象物単位を探してj_start[j]とする。第二パス決定部２４は、第二型制御対象物単位j_start[j]の移動開始時間t_start[j]は、t_start[j-1]のtv-(δ(j_start[j])-δ(j_start[j-1]))時間ステップ後とする。第二パス決定部２４は、t<t_start（移動開始前）のpass値は、第二型制御対象物単位j_start[j]の初期位置とする。
【０１７５】
第二パス決定部２４は、j_start[j]=jの場合と、そうでない場合とに応じて、以下の(2-1)及び(2-2)の処理を実行する。
【０１７６】
(2-1) 第二パス決定部２４は、j_start[j]≠jのとき、初期位置S内で第二型制御対象物単位jの隣にある第二型制御対象物単位j_nまでの道筋を、t=0からのpassに追加する。第二パス決定部２４は、j_nとして、j_nからjに至る方向a_exが1,2,5の場合を優先的に選び、そのようなj_nがない場合のみ、a_ex=3,4,6の場合のj_nを選ぶ。第二パス決定部２４は、第二型制御対象物単位jがj_nに至る時刻をt_exとしたとき、exchange[j][t_ex]←a_exとする。第二パス決定部２４は、jをpassの最後尾に追加し、その時のtをtime_at_end[j]とする。第二パス決定部２４は、第二型制御対象物単位j_endの仮想位置の値に、第二型制御対象物単位jの仮想位置の値を代入する。また、第二パス決定部２４は、pass内にて、δ値が大きくなる方向への移動を行う時刻について、waiting_at[j][t]←1とする。このwaiting_at[j][t]←1とする処理は、第二待ち時間調整部２５により行われてもよい。j_start[j] = jのとき（2-2）の処理に進む。
【０１７７】
(2-2) 第二パス決定部２４は、第二型制御対象物単位jの位置から、接続位置Gate_Sを通って目標位置G内の第二型制御対象物単位jの目標位置までのパスを計算し、その道筋をpassに追加する。passの最後尾はjの目標位置である。
【０１７８】
［第二待ち時間調整部２５］
第二待ち時間調整部２５は、各第二型制御対象物単位が衝突しないように、各第二型制御対象物単位の待ち時間を決定する（ステップＳ２５）。
【０１７９】
決定された待ち時間についての情報は、第二移動部２６に出力される。
【０１８０】
第二待ち時間調整部２５は、第二型制御対象物単位の入れ替え時の、他の第二型制御対象物単位の待ち時間を考慮して、pass値を修正する。第二待ち時間調整部２５は、第二型制御対象物単位jが時刻tで入れ替えを行う場合、第二型制御対象物単位jの後続の全ての第二型制御対象物単位の時刻ｔ以降のpass値をtw時間ステップ分ずらしていく。
【０１８１】
例えば、第二待ち時間調整部２５は、以下に説明する(1)から(2)の処理を行うことにより、各第二型制御対象物単位の待ち時間を決定する。
【０１８２】
決定された待ち時間についての情報は、第二移動部２６に出力される。
【０１８３】
(1) 第二待ち時間調整部２５は、(2)の処理を第二型制御対象物単位0から第二型制御対象物単位j_maxまで実行する。
【０１８４】
(2) 第二待ち時間調整部２５は、t=0から、time_at_end[j]まで以下の(2-1)の処理を実行する。
【０１８５】
(2-1) 第二待ち時間調整部２５は、waiting_at[j][t]が0以外の値のとき、第二型制御対象物単位jの後続の第二型制御対象物単位j_sub (j_sub>j)すべてについて、pass[j_sub][t']←pass[j_sub][t'-tw]、exchange[j_sub][t']←exchange[j_sub][t'-tw]とし(t'≧t+tw)、waiting_at[j_sub][t']←waiting_at[j_sub][t'-tw]とし(t'≧t+tw)、pass[j_sub][t+tw-1]←pass[j_sub][t]、pass[j_sub][t+tw-2]←pass[j_sub][t]、pass[j_sub][t+1]←pass[j_sub][t]、exchange[j_sub][t]←0, exchange[j_sub][t+ tw-1]←0、exchange[j_sub][t+tw-2]←0、exchange[j_sub][t+1]←0、waiting_at[j_sub][t]←0,waiting_at[j_sub][t+tw-1]←0、waiting_at[j_sub][t+tw-2]←0、waiting_at[j_sub][t+1]←0とする。t<t_start[j_sub]のときは、t_start[j_sub]をtw回インクリメントする。第二待ち時間調整部２５は、t<time_at_gate[j_sub]のときは、time_at_gate[j_sub]をtw回インクリメントする。第二待ち時間調整部２５は、t<time_at_end[j_sub]のときは、time_at_end[j_sub]をtw回インクリメントする。
【０１８６】
［第二移動部２６］
第二移動部２６は、第二パス決定部２４により決定されたパス及び第二待ち時間調整部２５により決定された待ち時間に従って、各第二型制御対象物単位を移動させる（ステップＳ２６）。
【０１８７】
具体的には、第二移動部２６は、以下に説明する(1)の処理を行うことにより、決定されたパス及び待ち時間に従って、第二型制御対象物単位を移動させる。
【０１８８】
(1) 第二移動部２６は、時刻t=0からtime_at_end[j_max]-1まで、以下の(1-1)の処理を繰り返す。
【０１８９】
(1-1) 第二移動部２６は、全ての第二型制御対象物単位jについて、exchange[j][t]が0以外の値のときは、pass[j][t]の位置にある第二型制御対象物単位j_start[j]をpass[j][t+1]の位置にある第二型制御対象物単位の位置に移動させる。以降、pass[j][t+1]の位置にあった第二型制御対象物単位jを新たな第二型制御対象物単位j_start[j]とする。第二移動部２６は、exchange[j][t]→a_exとし、a_ex=1,2,5のときは、図１２の動作で移動を行う。第二移動部２６は、exchange[j][t]→a_exとし、a_ex=3,4,6のときは、図１３の動作で移動を行う。
【０１９０】
第二移動部２６は、exchange[j][t]が0のときは、pass[j][t]の位置にある第二型制御対象物単位j_start[j]をpass[j][t+1]の位置に移動させる。第二移動部２６は、t=time_at_end[j]-1のときは、図１４又は図１５に示す動作で移動を行う。ただし、第二移動部２６は、pass[j][t]=pass[j][t+1]のときは何もしない。
【０１９１】
以下の式に示すように、tv-(δ(Mi)-δ(Mi-1))の時間差で各制御対象物単位が出発したとしても、最後の制御対象物単位が出発するまでの待ち時間は線形である。ここで、Miは現在時刻iで移動を開始する制御対象物単位であり、Mi-1は現在時刻iの１時間ステップ前の時刻i-1で移動を開始した制御対象物単位であるとする。
【０１９２】
Σi=1n{tv-(δ(Mi)-δ(Mi-1))}=tv(n-1)-(δ(Mn)-δ(M0))<tvn+n=(tv+1)n=O(n)
このため、以上の方法により、制御対象物単位数の一乗に比例する実行時間での隊列変形を実現することができる。
【０１９３】
＜変形例＞
上記の説明においては、第一実施形態では、jAを第一型制御対象物単位とし、jBを第二型制御対象物単位とした。また、上記の説明において、第二実施形態では、jBを第一型制御対象物単位とし、jAを第二型制御対象物単位とした。
【０１９４】
しかし、第一実施形態で、jBを第一型制御対象物単位とし、jAを第二型制御対象物単位としてもよい。同様に、第二実施形態で、jAを第一型制御対象物単位とし、jBを第二型制御対象物単位としてもよい。
【０１９５】
なお、第一実施形態で、jBを第一型制御対象物単位としjAを第二型制御対象物単位とした場合には、第一型制御対象物単位は目標位置G内でjAに相当する位置となり、第二型制御対象物単位は目標位置G内でjBに相当する位置となる。また、第二実施形態で、jAを第一型制御対象物単位としjBを第二型制御対象物単位とした場合には、第一型制御対象物単位は目標位置G内でjBに相当する位置となり、第二型制御対象物単位は目標位置G内でjAに相当する位置となる。
【０１９６】
上述の説明では第一型制御対象物単位と第二型制御対象物単位がそれぞれ図４Ｂに図示する４マスの制御対象物単位からなる形状であり、これらが組み合わさった８マスの制御対象物単位を基本構成要素として、この基本構成要素が複数接続されて隊列形成するものとして説明したが、本発明は、必ずしもこの形状に限定されるものではない。
【０１９７】
本発明のポイントは、第一型制御対象物単位と第二型制御対象物単位が周囲に空隙を有する相補的な形状をしており、第一型制御対象物単位と第二型制御対象物単位を組み合わせてなる結合形状（上述の例でいうところの８マス立方体形状）を基本構成要素とし、この基本構成要素が複数接続されて隊列が形成されるものとしたとき、各制御対象物単位で、この単位を維持しつつ移動を行うことにある。第一型制御対象物単位と第二型制御対象物単位がそれぞれ周囲に空隙を有することを利用して、この空隙を使って隊列移動を効率的に行うことが基本的なアイデアである。ここで、第一型制御対象物単位に関する「周囲の空隙」とは、基本構成要素内で第一型制御対象物単位の属さない位置をいい、第二型制御対象物単位に関する「周囲の空隙」とは、基本構成要素内で第二型制御対象物単位の属さない位置をいう。
【０１９８】
したがって、図４の例に限らず、第一型制御対象物単位と第二型制御対象物単位は相補的な形状であって、それぞれ以下の条件を満たすよう構成されていればよい。すなわち、第一型制御対象物単位と第二型制御対象物単位は、（１）三次元の直交座標系で各軸方向に長さＭ（Ｍ≧２、ただし、制御対象物１個の長さを長さ１とする）を有する立方体形状の空間（以降この空間をメタモジュールとする。）内の部分構造であり、（２）当該メタモジュール内の制御対象物単位に含まれる制御対象物の数と、当該メタモジュール内の制御対象物単位以外の部分（すなわち空隙）の数とが等しく、（３）各軸方向にＭ個の制御対象物が隣接する構造を含む。制御対象物単位に含まれる制御対象物の数をＵ個とすれば、Ｕは４以上の整数であることが好ましい。
【０１９９】
実際に、図４に例示する第一型制御対象物単位と第二型制御対象物単位は、（１）各軸方向の長さＭ＝２とした計８マスの立方体からなるメタモジュールの部分構造であり、（２）制御対象物単位内の制御対象物の数が４個、メタモジュール内の空隙の数が４個と等しく、（３）各軸方向において２個の制御対象物が隣接する構造が含まれている。この場合、Ｕ＝４である。
【０２００】
＜効果＞
このような構成により、多数の制御対象物の存在を考慮しつつ、制御対象物同士が接したままの状態を維持しつつ任意の初期位置における隊列形成状態から、他の任意の目標位置における隊列形成状態へ障害物のある環境にてヘテロジニアス隊列制御を制御対象物台数の２乗に比例した実行時間で従来手法より短い時間で配置させることができる。
【０２０１】
これにより、例えば、カメラを搭載した制御対象物、車輪を搭載した制御対象物等各制御対象物個々に異なる役割があって、各個の制御対象物を制御対象物隊列内の適切な位置に配置させつつ、隊列の形状を入れ替え前後で維持制御するといった運用が可能となる。また、すべての制御対象物に必要なすべての機能を実装する必要がなくなる。
【０２０２】
［プログラム及び記録媒体］
制御装置の各部における処理をコンピュータによって実現する場合、これらの装置の各部がが有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、その各部の処理がコンピュータ上で実現される。
【０２０３】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【０２０４】
また、各部の処理は、コンピュータ上で所定のプログラムを実行させることにより構成することにしてもよいし、これらの処理の少なくとも一部をハードウェア的に実現することとしてもよい。
【０２０５】
その他、この発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【符号の説明】
【０２０６】
１      第一型制御対象物単位移動制御部
１１    標的第一型制御対象物単位選択部
１２    第一移動部
１３    第二移動部
１４    第三移動部
１５    第一制御部
１６    第一パス決定部
１７    時間調整部
１８    第一移動部
２      第二型制御対象物単位移動制御部
２１    標的第二型制御対象物単位選択部
２２    移動制御部
２２１  接続性判定部
２２２  交換第二型制御対象物単位選択部
２２３  交換第二型制御対象物単位移動制御部
２２４  交換第二型制御対象物単位押出制御部
２２５  標的第二型制御対象物単位移動制御部
２３    第二制御部
２４    第二パス決定部
２５    時間調整部
２６    第二移動部
３      記憶部
【図１】
2019053709.tif 000003
【図２】
2019053709.tif 000004
【図３】
2019053709.tif 000005
【図４】
2019053709.tif 000006
【図５】
2019053709.tif 000007
【図６】
2019053709.tif 000008
【図７】
2019053709.tif 000009
【図８】
2019053709.tif 000010
【図９】
2019053709.tif 000011
【図１０】
2019053709.tif 000012
【図１１】
2019053709.tif 000013
【図１２】
2019053709.tif 000014
【図１３】
2019053709.tif 000015
【図１４】
2019053709.tif 000016
【図１５】
2019053709.tif 000017
【図１６】
2019053709.tif 000018
【図１７】
2019053709.tif 000019
【図１８】
2019053709.tif 000020
【図１９】
2019053709.tif 000021
【図２０】
2019053709.tif 000022
【図２１】
2019053709.tif 000023