(57)【要約】【課題】一方の制御対象物群が接続を維持しつつ他方の制御対象物群が占有する空間を通り抜けて移動する。【解決手段】隊列制御装置１は、Ｍ群制御対象物群が各制御対象物単位を維持しつつＳ群制御対象物群の存在する空間を通り抜けて移動方向へ移動するように各制御対象物群を制御する。状態判定部１０は、部分隊列の状態に基づいてモード値を決定する。基本動作部１１は、基準列に属する複数の制御対象物を移動方向へまとめて移動させる。調整動作部１２は、基準列に水平面で隣接する列に属する制御対象物を移動方向へまとめて移動させる動作、もしくは、基準列の対角位置に存在する列に属する制御対象物を移動方向の逆方向へまとめて移動させる動作、もしくは、移動方向に直交する方向で空隙と接する制御対象物をその空隙内へ移動させる動作、のいずれかを実行する。【選択図】図２５
2019075013.tif 000002
【特許請求の範囲】
【請求項１】
制御対象物群は複数の制御対象物からなる制御対象物単位が所定の移動方向へ複数接続することで構成され、各制御対象物単位の周囲には他の制御対象物単位を構成する制御対象物が移動可能な空隙があり、部分隊列は上記移動方向へ移動するＭ群制御対象物群と形状および位置が変化しないＳ群制御対象物群とが組み合わさって構成され、
上記Ｍ群制御対象物群が各制御対象物単位を維持しつつ上記Ｓ群制御対象物群の存在する空間を通り抜けて上記移動方向へ移動するように各制御対象物群を制御する隊列制御装置であって、
上記部分隊列のうち上記移動方向に対してＭ群制御対象物群に属する制御対象物のみが存在する基準列に属する複数の制御対象物を上記移動方向へまとめて移動させる基本動作部と、
上記部分隊列のうち、上記基準列に水平面で隣接する列に属する制御対象物を上記移動方向へまとめて移動させる動作、もしくは、上記基準列の対角位置に存在する列に属する制御対象物を上記移動方向の逆方向へまとめて移動させる動作、もしくは、上記移動方向に直交する方向で上記空隙と接する制御対象物をその空隙内へ移動させる動作、のいずれかを実行する調整動作部と、
を含む隊列制御装置。
【請求項２】
請求項１に記載の隊列制御装置であって、
上記調整動作部は、上記基準列に属する上記Ｍ群制御対象物群の制御対象物のうち、上記基準列以外の列に属する空隙と上記移動方向に直交する方向で接する制御対象物をその空隙内へ移動させる動作、もしくは、上記基準列以外の列に属する上記Ｍ群制御対象物群の制御対象物のうち、上記基準列に属する空隙と上記移動方向に直交する方向で接する制御対象物をその空隙内へ移動させる動作、のいずれかを実行するものであり、
上記基本動作部および上記調整動作部は、交互に所定の制御対象物を移動させる動作を実行するものである、
隊列制御装置。
【請求項３】
請求項１または２に記載の隊列制御装置であって、
上記部分隊列が上記Ｍ群制御対象物群と上記Ｓ群制御対象物群とが組み合わさって構成される部分の上記移動方向に対して先頭側に上記Ｓ群制御対象物群のみに属する制御対象物単位を含むか否か、および、末尾側に上記Ｍ群制御対象物群のみに属する制御対象物単位を含むか否かに基づいて上記部分隊列の状態を表すモード値を決定する状態判定部をさらに含み、
上記基本動作部は、上記モード値と上記移動方向に基づいて決定される所定列に属する制御対象物のうち上記基準列に属する複数の制御対象物を上記移動方向へまとめて移動させるものであり、
上記調整動作部は、上記モード値と上記移動方向に基づいて決定される所定列に所属する制御対象物のうち、上記基準列に水平面で隣接する列に属する制御対象物を上記移動方向へまとめて移動させる動作、もしくは、上記基準列の対角位置に存在する列に属する制御対象物を上記移動方向の逆方向へまとめて移動させる動作、もしくは、上記移動方向に直交する方向で上記空隙と接する制御対象物をその空隙内へ移動させる動作、のいずれかを実行するものである、
隊列制御装置。
【請求項４】
請求項１に記載の隊列制御装置であって、
上記部分隊列が上記Ｍ群制御対象物群と上記Ｓ群制御対象物群とが組み合わさって構成される部分の上記移動方向に対して末尾側に上記Ｍ群制御対象物群のみに属する制御対象物単位を含むか否かに基づいて上記部分隊列の状態を表すモード値を決定する状態判定部と、
上記移動方向に応じて定まる複数の行動指令値を記憶する行動指令値格納部と、
をさらに含み、
上記基本動作部および上記調整動作部は、上記モード値に応じて上記Ｍ群制御対象物群に属する制御対象物と上記行動指令値を選択し、選択された制御対象物を選択された行動指令値に従って移動させるものである、
隊列制御装置。
【請求項５】
請求項１から４のいずれかに記載の隊列制御装置であって、
複数の上記Ｓ群制御対象物群と複数の上記Ｍ群制御対象物群とからなる全体隊列を、１以上の上記部分隊列と、上記部分隊列に含まれない制御対象物からなる１以上の剰余隊列とに分割する隊列分割部をさらに含み、
上記基本動作部および上記調整動作部は、上記部分隊列および上記剰余隊列それぞれについて所定の制御対象物を移動させる動作を並行して実行するものである、
隊列制御装置。
【請求項６】
制御対象物群は複数の制御対象物からなる制御対象物単位が所定の移動方向へ複数接続することで構成され、各制御対象物単位の周囲には他の制御対象物単位を構成する制御対象物が移動可能な空隙があり、部分隊列は上記移動方向へ移動するＭ群制御対象物群と形状および位置が変化しないＳ群制御対象物群とが組み合わさって構成され、
上記Ｍ群制御対象物群が各制御対象物単位を維持しつつ上記Ｓ群制御対象物群の存在する空間を通り抜けて上記移動方向へ移動するように各制御対象物群を制御する隊列制御装置が実行する隊列制御方法であって、
基本動作部が、上記部分隊列のうち上記移動方向に対してＭ群制御対象物群に属する制御対象物のみが存在する基準列に属する複数の制御対象物を上記移動方向へまとめて移動させ、
調整動作部が、上記部分隊列のうち、上記基準列に水平面で隣接する列に属する制御対象物を上記移動方向へまとめて移動させる動作、もしくは、上記基準列の対角位置に存在する列に属する制御対象物を上記移動方向の逆方向へまとめて移動させる動作、もしくは、上記移動方向に直交する方向で上記空隙と接する制御対象物をその空隙内へ移動させる動作、のいずれかを実行する、
隊列制御方法。
【請求項７】
請求項１から５のいずれかに記載の隊列制御装置としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の制御対象物の行動を制御する技術に関する。特に、二つの制御対象物群が同じ空間内を移動する場合において、一方の制御対象物群が他方の制御対象物群の占有する空間を通り抜けて目的位置へ移動（通り抜け）することを可能とするための各制御対象物の行動計画を求める隊列制御技術に関する。
【背景技術】
【０００２】
近年、多数の自律移動ロボットを効率的に制御するための研究が活発に行われている。その任務内容は、人間の入れない箇所の監視、物品の搬送など様々であるが、多数のロボットの協調動作による隊列形成を効率的に行わせるための技術が求められており盛んに研究が行われている。
【０００３】
特に、ロボットの隊列制御の中でも、ロボット同士が互いに接したままの状態で、アメーバのように全体で移動を行うという仮定の下でのロボット隊列制御においては、ロボット同士の相対的な位置関係から、各ロボットの絶対位置の決定が可能であるという利点と、付加的な位置計測用の装備を必要としないという利点があり、そのようなロボットの研究も行われている（例えば、非特許文献１、２参照）。
【０００４】
非特許文献１では、全てのロボットが同じ性質を持つ（ホモジニアス）という前提の下で、任意の初期隊列形成状態から目的隊列形成状態へ変形する隊列制御を実現する方法が開示されている。ここでは、８つのロボットを１つの単位として移動させることで、従来よりも効率的な隊列制御を実現している。
【０００５】
非特許文献２では、各矩形ロボットが異なる性質を持つ(ヘテロジニアス)という前提の下で、任意の形状隊列から他の形状隊列へ変形する隊列制御の方法が開示されている。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】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, Hamburg, Germany, September 2015.
【非特許文献２】R. Fitch, Z. Butler, D. Rus, “Reconfiguration Planning for Heterogeneous Self-Reconfiguring Robots”, 2003 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS 2003), pp. 2460-2467, Las Vegas, NV, October 2003.
【発明の概要】
【発明が解決しようとする課題】
【０００７】
非特許文献１および非特許文献２は、いずれも空間内には１つのロボット群のみが存在しているものとして、当該ロボット群の初期隊列形成状態を別の隊列形成状態へ変形させるものである。
【０００８】
実環境下においては、同じ空間内に複数のロボット群が存在し、それぞれが任務遂行のために空間内を移動する際に、ロボット隊列同士ですれ違う動作が必要になる場合も想定される。このとき、十分な広さのある空間であれば、各ロボット群が接触しないような経路をとってすれ違うことも可能であるが、狭い通路を移動する場合や、障害物がある場所を移動する場合等はすれ違うための空間が限られており、一方のロボット群が他方のロボット群が占有する空間を通り抜けて（つまり、一方のロボット群と他方のロボット群が空間を共有しながら）移動することが必要になるケースも想定される。しかしながら、これまで、一方のロボット群が接続を維持しつつ他方のロボット群が占有する空間を通り抜けて移動するための手法は提案されていない。
【０００９】
この発明の目的は、上記のような点に鑑みて、一方の制御対象物群（例えば、ロボット群）が接続を維持しつつ他方の制御対象物群が占有する空間を通り抜けて移動することができる隊列制御技術を提供することである。
【課題を解決するための手段】
【００１０】
上記の課題を解決するために、この発明の隊列制御装置は、制御対象物群は複数の制御対象物からなる制御対象物単位が所定の移動方向へ複数接続することで構成され、各制御対象物単位の周囲には他の制御対象物単位を構成する制御対象物が移動可能な空隙があり、部分隊列は移動方向へ移動するＭ群制御対象物群と形状および位置が変化しないＳ群制御対象物群とが組み合わさって構成され、Ｍ群制御対象物群が各制御対象物単位を維持しつつＳ群制御対象物群の存在する空間を通り抜けて移動方向へ移動するように各制御対象物群を制御する隊列制御装置であって、部分隊列のうち移動方向に対してＭ群制御対象物群に属する制御対象物のみが存在する基準列に属する複数の制御対象物を移動方向へまとめて移動させる基本動作部と、部分隊列のうち、基準列に水平面で隣接する列に属する制御対象物を移動方向へまとめて移動させる動作、もしくは、基準列の対角位置に存在する列に属する制御対象物を移動方向の逆方向へまとめて移動させる動作、もしくは、移動方向に直交する方向で空隙と接する制御対象物をその空隙内へ移動させる動作、のいずれかを実行する調整動作部と、を含む。
【発明の効果】
【００１１】
この発明の隊列制御技術によれば、制御対象物の隊列制御において、一方の制御対象物群が接続を維持しつつ他方の制御対象物群が占有する空間を通り抜けて移動することができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、制御対象物の移動を説明するための図である。
【図２】図２は、制御対象物単位を説明するための図である。
【図３】図３は、制御対象物群が空間を共有する状態を説明するための図である。
【図４】図４は、ボイドの移動の様子を説明するための図である。
【図５】図５は、制御対象物群の部分隊列を説明するための図である。
【図６】図６は、制御対象物群の部分隊列の具体例を示す図である。
【図７】図７は、基準列と他の列の位置関係を説明するための図である。
【図８】図８は、図９〜２４、３１〜３４の表記方法を例示するための図である。
【図９】図９は、制御対象物群の移動手順を例示する図である。
【図１０】図１０は、制御対象物群の移動手順を例示する図である。
【図１１】図１１は、制御対象物群の移動手順を例示する図である。
【図１２】図１２は、制御対象物群の移動手順を例示する図である。
【図１３】図１３は、制御対象物群の移動手順を例示する図である。
【図１４】図１４は、制御対象物群の移動手順を例示する図である。
【図１５】図１５は、制御対象物群の移動手順を例示する図である。
【図１６】図１６は、制御対象物群の移動手順を例示する図である。
【図１７】図１７は、制御対象物群の移動手順を例示する図である。
【図１８】図１８は、制御対象物群の移動手順を例示する図である。
【図１９】図１９は、制御対象物群の移動手順を例示する図である。
【図２０】図２０は、制御対象物群の移動手順を例示する図である。
【図２１】図２１は、制御対象物群の移動手順を例示する図である。
【図２２】図２２は、制御対象物群の移動手順を例示する図である。
【図２３】図２３は、制御対象物群の移動手順を例示する図である。
【図２４】図２４は、制御対象物群の移動手順を例示する図である。
【図２５】図２５は、第一実施形態の隊列制御装置の機能構成を例示する図である。
【図２６】図２６は、第一実施形態の隊列制御方法の処理手続きを例示する図である。
【図２７】図２７は、部分隊列の状態とモード値の関係を説明するための図である。
【図２８】図２８は、第二実施形態の隊列制御装置の機能構成を例示する図である。
【図２９】図２９は、第二実施形態の隊列制御方法の処理手続きを例示する図である。
【図３０】図３０は、制御対象物群の部分隊列を説明するための図である。
【図３１】図３１は、制御対象物群の移動手順を例示する図である。
【図３２】図３２は、制御対象物群の移動手順を例示する図である。
【図３３】図３３は、制御対象物群の移動手順を例示する図である。
【図３４】図３４は、制御対象物群の移動手順を例示する図である。
【図３５】図３５は、第三実施形態の隊列制御装置の機能構成を例示する図である。
【図３６】図３６は、第三実施形態の隊列制御方法の処理手続きを例示する図である。
【図３７】図３７は、第四実施形態の隊列制御装置の機能構成を例示する図である。
【図３８】図３８は、第四実施形態の隊列制御方法の処理手続きを例示する図である。
【図３９】図３９は、第五実施形態の隊列制御装置の機能構成を例示する図である。
【図４０】図４０は、第五実施形態の隊列制御方法の処理手続きを例示する図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施形態について詳細に説明する。なお、以下の説明に用いる図面では、同じ機能を有する構成部や同じ処理を行うステップには同一の符号を付し、重複説明を省略する。
【００１４】
＜理論的背景＞
まず、本発明の隊列制御装置および方法の理論的背景について説明する。以下の説明において、制御対象物はロボットである。制御対象物は、制御の対象となり得るものであればロボット以外であってもよい。
【００１５】
［問題設定］
任意の隊列形成を初期隊列形成状態として、制御対象物同士が接したままの状態を維持しつつ目的とする任意の隊列形成状態である目的隊列形成状態へ隊列を移動させる隊列制御を、多数の制御対象物が協調して行う任務を、例えば図１に例示するような、互いに接する面同士をスライドさせて移動していくことが可能な立方体型の制御対象物の制御を想定して実現する。制御対象物については、例えば図１に示すように、制御対象物の周囲縦横高さ方向（以下「上下左右前後方向」ともいう）６マスのうち一つに他の制御対象物が存在している（一つの面を他制御対象物と共有している）状態を維持しながら移動をするものとする。この手法では１つの制御対象物自身が、一個の制御対象物のサイズ分の距離を移動することで、一回の動作の移動量を正確に測ることができるというメリットがある。また、一つの面を共有する隣り合う制御対象物との相対的な位置を計測し合うことで、制御対象物の群全体の中での各制御対象物の位置も容易に知ることができる。このため、制御対象物の移動量の誤差によって、隊列が崩れるといった問題を起こしにくく、また、各制御対象物の位置を把握するために付加的な位置計測用の装備を備えずとも位置の把握が可能である。また、複数の制御対象物を連結したように、同時に複数の制御対象物を移動させていくことが可能である。なお、制御対象物は、隣の位置に他の制御対象物が存在しているか否か、障害物があるか否か、そして、自身が目的位置上にいるかどうかを知ることができるものとする。
【００１６】
任務を行う制御対象物は、p個（p≧8=4×2）であり、各制御対象物は、隣接する制御対象物と一面以上を共有しつつ、三次元空間におけるX-Y-Z軸方向に移動可能とする。本発明では、制御対象物は図２の右図に示すような４つの制御対象物で構成される制御対象物群を最小単位（制御対象物単位）として移動を実現するので、制御対象物の総数pは４の倍数とする。
【００１７】
図１の各立方体は、それぞれの制御対象物の位置を示すものである。各立方体には制御対象物は一個しか存在することができない。それぞれの制御対象物は、移動しようとする方向に障害物か他の制御対象物がある場合には、静止をするものと仮定する。なお、制御対象物が存在しうる立方体状の空間をマス、または、格子ともいう。図３は、２つの制御対象物群が一部の空間を共有している状態を例示したものであり、色が塗りつぶされたマスは制御対象物が存在する位置を示す。図３の左側の制御対象物群（薄い色で塗り潰された制御対象物からなる立方体形状の制御対象物群）を第１の制御対象物群、図３の右側の制御対象物群（濃い色で塗りつぶされた制御対象物からなるＬ字状の形状からなる制御対象物群）を第２の制御対象物群とする。
【００１８】
本発明では、第２の制御対象物群が、第１の制御対象物群の存在する空間（占有する空間）を通り抜けて、初期位置から目的位置へ移動する問題を取り扱う。ここで、制御対象物群が占有する空間とは、制御対象物群中の制御対象物が存在する位置だけで無く、制御対象物群内の複数の制御対象物に挟まれた（囲まれた）空隙も含む空間とする。第２の制御対象物群が通り抜ける間、第１の制御対象物群の占有する空間の形状および位置は変化しないものとする。また、第２の制御対象物群は初期位置の集合（初期隊列形成状態）と目的位置の集合（目的隊列形成状態）において形状を変更しない、つまり、第２の制御対象物群が第１の制御対象物の空隙を通り抜ける前と後で、第２の制御対象物群の形状は同一とする。なお、第１の制御対象物群と第２の制御対象物群の形状はそれぞれ一塊の任意の形状である。
【００１９】
［制御対象物の座標設定］
それぞれの制御対象物i（iは制御対象物番号を表すi=0, 1, 2, 3, …, p-1、ただしpは第１の制御対象物群と第２の制御対象物群に含まれる制御対象物の総数とする）の位置を（Xr[i], Yr[i], Zr[i]）とし、初期位置を（Xr0[i], Yr0[i], Zr0[i]）とし、目的位置を（Xre[i], Yre[i], Zre[i]）とするとき、本問題は、初期位置に配置された制御対象物が、目的位置まで移動するための行動計画を求めることと定義できる。ここで、Xr[i]はX軸方向の位置、Yr[i]はY軸方向の位置、Zr[i]はZ軸方向の位置である。各制御対象物が属する群の番号をSr[i]とする。例えば、Sr[i]=0は第１の制御対象物群、Sr[i]=1は第２の制御対象物群を表すものとする。
【００２０】
本問題は、任意の初期位置に配置された第２の制御対象物群が、任意の目的位置へ移動する際、別の静止している第１の制御対象物群と占有する領域が重なった場合でも、滞りなく目的位置への移動を行うための制御対象物群の行動計画を求めることと定義できる。以下の説明では、移動する制御対象物群（第２の制御対象物群）はSr[i]=1、静止する制御対象物群（第１の制御対象物群）はSr[i]=0とする。
【００２１】
［任務空間の定義］
iを制御対象物番号としたとき、制御対象物iの各状態（制御対象物の位置と行動）は離散値で表現される。部屋をX, Y, Zの直交座標系からなる３次元空間で表すと、X軸、Y軸、Z軸をそれぞれ離散化表現した値により各位置を表現する。つまり、部屋（３次元空間）は格子で区切られ、各格子が各位置に対応する。また、各格子において、障害物の「ある／なし」が予め設定されている。
【００２２】
［動作の定義］
例えば、制御対象物である行動主体は部屋に配置されている各制御対象物である。制御対象物i（iは制御対象物番号）の行動aは、静止、縦横高さ（X軸、Y軸、Z軸）方向への１格子分の移動（正方向、負方向）、の計７種類のうちのいずれかを取る。例えば、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乗個にもなり、探索計算に要する資源の量は膨大なものとなる。さらに制御対象物数が１個増えるごとに、その状態数は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.
【００２６】
まず、ボイド制御について説明する。ここでいうボイドとは、ある制御対象物が別の位置に移動した後に、元いた位置にできる空隙のことである。別の言い方をすると、ボイドとは、制御対象物の移動する方向と反対の方向に移動する仮想的な存在である。こうした制御対象物群の隊列形成問題においては、複数の制御対象物の動作に着目するがゆえに、その探索計算量が爆発してしまうが、視点を変えて、ボイドの動きに着目すれば、多数の制御対象物の動作計画の問題を単一のボイドの動作計画として考えることができ、探索計算負荷の軽減に適している。制御対象物の移動に伴ってボイドが移動していく様子を図４に示す。
【００２７】
しかしながら、参考文献３では、フルに充填された８マス制御対象物の構造を採用しているために、構造内に隙間がなく、二つのロボット隊列の衝突時の通り抜け動作を行うことは難しかった。
【００２８】
［周囲に空隙を有する制御対象物単位の導入]
そこで本発明では、周囲に空隙を有する制御対象物単位を隊列の基本構成要素とし、隊列はこの制御対象物単位が複数接続することで構成され、制御対象物は、この制御対象物単位を維持しつつ移動を行うこととする。例えば、図２に示すように、４つの隣接した制御対象物を一つの単位（制御対象物単位）とし、制御対象物は、この制御対象物単位を維持しつつ移動を行う。言い換えると、４個毎に１つの制御対象物単位を構成し、１つの制御対象物単位を構成する４個の制御対象物は隣接した状態を維持しつつ移動を行う。制御対象物単位の集団は、互いに制御対象物単位ごとに少なくとも一面を共有し、接しながら移動をするように制御される。つまり、接続性を保ったまま隊列変形を行うこととする。また、各隊列内において全ての制御対象物は同一（ホモジニアス）であるとする。つまり、第一、第二の各隊列の間での制御対象物は区別されるが、どの制御対象物が各隊列内のどの位置にあるかは問わないものとする。
【００２９】
制御対象物単位は、三次元の直交座標系で各軸方向に長さ２（ただし、制御対象物１個の長さを長さ１とする）を有する立方体形状の空間（以降この空間をメタモジュールとする）内の部分構造である。
【００３０】
このような制御対象物単位を一つの単位とした移動を行う理由は、各制御対象物単位の周囲（メタモジュールの内部）にある複数の空隙空間を、他の制御対象物単位に属する制御対象物が通過することができ、それにより、異なる制御対象物単位内に属する制御対象物同士が行き来することが容易である点である。また、各制御対象物単位の周囲（メタモジュールの内部）にある複数の空隙空間を、他の制御対象物単位に属する制御対象物が通過する際の接続性の維持も容易である。すなわちこれは、隊列形態の維持を考量しなければならない各制御対象物の動作の決定において、制御対象物同士の接続を考慮するための計算負荷を軽減することにつながるからである。このように、本発明は、制御対象物単位が周囲に空隙を有するような構成を基本単位とすることにより、計算負荷の削減を実現することを特徴とするものである。
【００３１】
ここでは４個の制御対象物がなす制御対象物単位が一つのマスの単位（本実施形態では、以下、この単位を「マス単位」または「位置単位」ともいう）であるとし、一つのマス単位を一状態として取り得る制御対象物単位位置の集合からなる状態のうち、初期状態を集合Ｓ、目的状態をＧとする。ある制御対象物単位jの位置を（Xr_u[j], Yr_u[j], Zr_u[j]）（j=0, 1, 2, …, j_max-1）としたとき、その制御対象物単位j内の制御対象物をj1, j2, j3, j4とすれば、一方の制御対象物群が、他方の制御対象物群が占有する空間を通り抜けて移動する問題において、制御対象物群が占有する空間の形状及び位置を変化させない他方の制御対象物群（「静止している制御対象物群中の制御対象物」とも呼ぶ）（Sr[i]=0）、すなわち第１の制御対象物群中に含まれる制御対象物の場合は、
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
となり、移動している制御対象物群（Sr[i]=1）、すなわち第２の制御対象物群中の制御対象物の場合は、
Xr[j1] = 2 × Xr_u[j] + 1
Yr[j1] = 2 × Yr_u[j] 
Zr[j1] = 2 × Zr_u[j] + 1
Xr[j2] = 2 × Xr_u[j]
Yr[j2] = 2 × Yr_u[j] + 1
Zr[j2] = 2 × Zr_u[j] + 1
Xr[j3] = 2 × Xr_u[j] + 1
Yr[j3] = 2 × Yr_u[j] + 1
Zr[j3] = 2 × Zr_u[j] + 1
Xr[j4] = 2 × Xr_u[j] + 1
Yr[j4] = 2 × Yr_u[j] + 1
Zr[j4] = 2 × Zr_u[j]
となる。
【００３２】
ここで、j_maxは第１の制御対象物群と第２の制御対象物群内の制御対象物単位の総数、すなわちj_max=p/4（制御対象物単位内の制御対象物数を４個とした場合）であり、jは制御対象物単位を特定するIDに相当するものである。
【００３３】
なお、各制御対象物iが所属する制御対象物単位jを表す変数をRr[i]=jとする。また、制御対象物が上記j1, j2, j3, j4のどの位置にあるかを指す変数をIr[i](Ir[i]∈{1, 2, 3, 4})とする。また、各制御対象物単位jが属する群をSu[j](Su[j]∈{0, 1})とする。また、各制御対象物単位jの初期位置を（Xr_u0[j], Yr_u0[j], Zr_u0[j]）とし、目的位置を（Xr_ue[j], Yr_ue[j], Zr_ue[j]）とする。
【００３４】
以下、制御対象物単位に属する制御対象物を移動させることを、制御対象物単位を移動させると略記することもある。
【００３５】
このように、４個の制御対象物により構成される制御対象物単位で移動の制御を行うことにより、第２の制御対象物群内の各制御対象物単位が第１の制御対象物群が占有する空間内の空隙を通って移動することで、第１の制御対象物群と第２の制御対象物群が空間を共有しつつ移動することができる。
【００３６】
［透過隊列制御］
本発明では、Su[j]=1である制御対象物単位jからなる第２の制御対象物群（以下、Ｍ群とする）が、Su[j]=0である制御対象物単位jからなる第１の制御対象物群（以下、Ｓ群とする）が占有する空間内を任意方向（X, Y, Z軸の６方向）に移動するための透過隊列制御を実現する。つまり、移動する制御対象物群がＭ群であり、通り抜ける空間を占有する制御対象物群がＳ群であり、Ｓ群の群全体の形状と位置は移動前後で変わらない。「群全体の形状と位置が変わらない」という意味は、全体形状と位置が同じであれば、隊列内の個別の制御対象物の位置は入れ替わっても良いということである。
【００３７】
ここで、部分隊列を、図５に示す隊列とする。図５の中央部分の直方体は、８マス全てが制御対象物で充填されているメタモジュールが移動方向に連続してなる隊列、つまり、Ｓ群の制御対象物単位とＭ群の制御対象物単位が組み合わさってなる隊列である。この隊列に加えて、移動方向先頭側にＳ群の制御対象物単位が１個隣接し、移動方向末尾側にＭ群の制御対象物単位が１個隣接している。この直方体に隣接するＳ群またはＭ群の制御対象物単位は必須ではないものとする。部分隊列は、Ｓ群の制御対象物単位とＭ群の制御対象物単位が組み合わさってなるメタモジュールが含まれていれば図５の形状に限定されず、例えば、図６（Ａ）〜（Ｃ）に示すような形状であってもよい。なお、図６において、無地の立方体がＭ群に属する制御対象物であり、網掛けされた立方体がＳ群に属する制御対象物である。
【００３８】
任意の隊列を部分隊列に分割したときに、いずれの部分隊列にも含まれないＳ群の制御対象物単位のみが移動方向に連続する隊列、Ｍ群の制御対象物単位のみが移動方向に連続する隊列が生じるので、これを剰余隊列と呼ぶこととする。Ｍ群がＳ群の占有する空間を任意方向に移動する隊列制御において重要となるのは、部分隊列において、Ｍ群がＳ群の占有する空間を共有しながら１制御対象物単位分、所定方向へ移動する動作である。空隙が少ない分、移動できる範囲に制限があり、考慮が必要だからである。剰余隊列については、相手方の制御対象物単位がいない（空隙である）ため部分隊列のような移動の制限を考慮する必要がない。結果として、Ｍ群がＳ群の占有する空間を任意方向に移動する隊列制御は、部分隊列単位で１制御対象物単位分、所定方向へ移動する動作と、部分隊列近傍の剰余隊列を部分隊列の動きに合わせて移動させる動作の集合により実現できる。
【００３９】
本発明では、この基本となる部分隊列において１制御対象物単位分所定方向へ移動する動作を以下により実現する。
【００４０】
Ａ）基本動作：部分隊列のうち、初期状態においてＭ群に所属する制御対象物だけが存在する列（移動方向の列）を基準列としたとき、基準列に所属する複数の制御対象物をまとめて移動方向に１マス移動させる動作である。
【００４１】
Ｂ）調整動作：基準列以外に所属する１以上の制御対象物を移動方向に平行な方向もしくは移動方向に垂直な方向に移動させる動作である。
【００４２】
上記の枠組みを採用することで、隣接する部分隊列に影響を及ぼすことなく各部分隊列の移動を実現できるので、全ての部分隊列について並列に移動させることができる。また、Ａ）基本動作により複数の制御対象物をまとめて移動させることで、少ないステップ数で目的位置へ移動を実現することができる。
【００４３】
＜第一実施形態＞
第一実施形態の隊列制御装置は、部分隊列について、Ｍ群がＳ群の占有する空間内の空隙を通って１制御対象物単位分、所定方向へ移動するよう制御を行うものである。
【００４４】
目的とするＭ群の移動方向をa方向とする。本実施形態では、三次元空間を表現する直交する３軸のうち、a方向と平行な軸を第３軸（a方向正）とし、a方向と垂直で図７において水平面内にある軸を第１軸（手前方向負）と呼ぶこととし、a方向と垂直で図７において鉛直面内にある軸を第２軸（下方向正）とする。第一実施形態では、制御対象物の移動方向は、第３軸と、第３軸に直交する２軸のうち何れか一方を用いることを特徴とする。
【００４５】
初期状態においてa方向に隣接する制御対象物が全てＭ群所属である列を「基準列」と呼ぶこととする（図７の無地の列）。第２軸方向の位置が基準列と等しい列を「基準列に対して第１軸の向きに並行な列」と呼ぶこととする（図７の斜線網掛けの列）。第１軸の位置が基準列と等しい列を「基準列に対して第２軸の向きに平行な列」と呼ぶこととする（図７の縦線網掛けの列）。制御対象物群を構成する４つ列のうち、基準列、基準列に対して第１軸の向きに並行な列、基準列に対して第２軸の向きに平行な列のいずれにも該当しない残り１列を、「基準列の対角位置にある列」と呼ぶこととする（図７の格子網掛けの列）。
【００４６】
第一実施形態の隊列制御は、
（第１工程）基準列をa方向に１マス移動させる工程
（第２工程）基準列に対して第１軸の向きに並行な列をa方向に１マス移動させる工程
（第３工程）基準列の対角位置にある列をaと逆の方向に１マス移動させる工程
（第４工程）上記第１〜第３工程の少なくとも何れかにより生成された空隙位置に、第２軸の向きに平行な方向に隣接する位置にある制御対象物を移動させる工程
の４つの工程を組み合わせて実現する。第１工程が、上述の「Ａ）基本動作」に相当し、第２〜第４工程が上述の「Ｂ）調整動作」に相当する。
【００４７】
ここで、第１〜第３工程では、所定方向へ複数の制御対象物をまとめて移動させることを特徴とする。また、これらの工程の移動は互いの列に影響しないので、同時に実行することができる。つまり、第３軸と平行な方向へ複数の制御対象物をまとめて移動させる工程（第１〜第３工程）と、第３軸と垂直な第２軸方向へ１以上の制御対象物をまとめて移動させる工程（第４工程）を交互に実行することで、隊列制御を行うのである。これにより制御対象物の数に依存しない効率的な移動を可能としている。本実施形態で移動に要する実行時間は、Ｍ群が移動する距離に比例した実行時間である。
【００４８】
図９〜２４に、第一実施形態の隊列制御における制御対象物の移動手順を示す。図９〜２４では、奥側の制御対象物の移動の様子を把握しやすくするため、図８に示すように奥行き方向に２列制御対象物が配置されてなる立体形状を、手前から一列目を「前」、２列目を「後」として分けて表現している。
【００４９】
また、Ｍ群に所属する制御対象物をMxx（xxは２桁の数字）で表し、Ｓ群に所属する制御対象物をSxxで表す。１桁目の数字は開始時の隊列中で所属する制御対象物単位を表すもので、同じ数字であれば同じ制御対象物単位に所属する。例えば、M11, M12, M13, M14が１つの制御対象物単位を構成し、M21, M22, M23, M24が別の制御対象物単位を構成する。
【００５０】
図９〜１０に、移動方向aを左方向、第２軸を図の縦の向きとした場合の移動手順の一例を示す。これは、後述するモード値が０の場合の隊列制御の核となる部分を示したものであり、簡単のため制御対象物単位がa方向のみに隣接してなる隊列を移動させる場合を示している。
【００５１】
図９に示した初期状態（T=0）において、S21, S22, S23, S24からなるＳ群内の制御対象物単位に相対する位置に存在するＭ群内の制御対象物単位M21, M22, M23, M24が、図１０に示した最終状態（T=5）では、S11, S13, S14, S24からなるＳ群内の制御対象物単位に相対する位置に移動している。初期状態と最終状態において、Ｍ群およびＳ群の形状はそれぞれ同じであり、Ｓ群の位置は変わっておらず、Ｍ群の位置は左方向に１メタモジュール分（つまり２マス）だけ移動していることがわかる。なお、ここでは各隊列の中での制御対象物はホモジニアスとしているため、移動の前後において隊列全体としての形状が同じであれば、各制御対象物がどの位置にあるかは問わない。例えば、図１０では、T=5におけるＭ群の隊列のうち一番左の制御対象物単位は、M21, M22, M23, M32から構成される。数字の１桁目が開始時点で所属していた制御対象物単位のIDに相当するので、ID=2の制御対象物単位に所属していた制御対象物（M21, M22, M23）と、ID=3に所属していた制御対象物（M32）とが混ざって、移動後の制御対象物単位を構成していることになる。
【００５２】
また、図９〜１０では、各時刻において、次の時刻までに移動する制御対象物を太字で示し、その移動方向を矢印で示している。T=0, 2, 4の各時刻で第３軸(a方向)と平行な方向へ複数の制御対象物をまとめて移動させる工程（第１〜第３工程）が行われ、T=1, 3において第２軸と平行な方向へ制御対象物を移動させる工程（第４工程）が行われる。
【００５３】
なお、ここでは「基準列」は「前」の上段、「基準列に対して第１軸の向きに並行な列」が「後」の上段、「基準列に対して第２軸の向きに並行な列」が「前」の下段、「基準列の対角位置にある列」が「後」の下段である。
【００５４】
実際の隊列はa方向と直交する方向にも制御対象物単位が隣接して隊列形成することも可能であるが、この場合は、a方向と水平な方向に制御対象物単位を並べて構成される部分隊列毎に第一実施形態の隊列制御装置による移動を行えばよい。図９〜１０の例からも分かるとおり、移動に際してＭ群やＳ群の制御対象物が、移動方向aと水平な方向以外の空間にはみ出して移動することはないので、このように部分隊列に分割して各部分隊列同士で移動を行っても、他の部分隊列に影響を及ぼすことは無く、各部分隊列の移動を並行して行うことができる。
【００５５】
以下、第一実施形態の透過隊列制御を実現する隊列制御装置について具体的に説明する。本実施形態では、a方向にのみ制御対象物単位が連続した隊列の隊列制御を行う隊列制御装置について説明する。
【００５６】
［前提］
・移動方向aは予め与えられるものとする（以下、「移動方向指令値a」とよぶ）。
【００５７】
・Ｍ群とＳ群は、それぞれa方向と水平な方向に複数の制御対象物単位が並んで構成される隊列とする。
【００５８】
・Ｍ群を構成する制御対象物単位とＳ群を構成する制御対象物単位は相補的な構造（相対する構造）をしており、組み合わさるとメタモジュールの大きさとなる。
【００５９】
・本隊列制御装置は、Ｍ群が、Ｓ群が占有する空間を通って１制御対象物単位分だけa方向に移動するような隊列制御を行う。
【００６０】
・初期状態において、Ｍ群とＳ群は少なくとも一部において空間を共有しているか、もしくは接しているものとする。
【００６１】
後述するモード毎に第一実施形態の隊列制御装置により制御対象物が移動をする様子を図９〜２４に示す。図９〜１６は各モードで負方向に１制御対象物単位分移動させる場合、図１７〜２４は各モードで正方向に１制御対象物単位分移動させる場合の例である。それぞれT=0が初期状態であり、T=1が第一の移動処理を実行した後の状態、T=2が第二の移動処理を実行した後の状態、・・・を示す。太字は、各時刻において、次の時刻までに移動する制御対象物を示す。初期状態（T=0）と終了状態（T=5）では、Ｍ群の制御対象物に下線を付して示している。Ｍ群の制御対象物が、１制御対象物単位分移動していることが確認できる。T=2〜T=4において、一点鎖線で囲った部分は、Ｍ群とＳ群が重なる空間を示している。
【００６２】
図１７〜２４は、図９〜１６の負方向への移動を、T=5を初期状態とし、T=0を最終状態として逆順したもの（「逆再生」という）である。なお、モード値０の右方向への移動はモード値３の左方向への移動の逆再生（図１５〜１６の時系列を逆にしたものが図１７〜１８）、モード値１の右方向への移動はモード値１の左方向への移動の逆再生（図１１〜１２の時系列を逆にしたものが図２１〜２２）、モード値２の右方向への移動は左方向の移動のモード値２の場合の逆再生（図１３〜１４の時系列を逆にしたものが図１９〜２０）、モード値３の右方向への移動はモード値０の左方向への移動の逆再生（図９〜１０の時系列を逆にしたものが図２３〜２４）となる。
【００６３】
［装置構成］
第一実施形態の隊列制御装置１は、図２５に例示するように、状態判定部１０、基本動作部１１、および調整動作部１２を含む。この隊列制御装置１が、図２６に例示する各ステップの処理を行うことにより第一実施形態の隊列制御方法が実現される。
【００６４】
隊列制御装置１は、例えば、中央演算処理装置（CPU: Central Processing Unit）、主記憶装置（RAM: Random Access Memory）などを有する公知又は専用のコンピュータに特別なプログラムが読み込まれて構成された特別な装置である。隊列制御装置１は、例えば、中央演算処理装置の制御のもとで各処理を実行する。隊列制御装置１に入力されたデータや各処理で得られたデータは、例えば、主記憶装置に格納され、主記憶装置に格納されたデータは必要に応じて中央演算処理装置へ読み出されて他の処理に利用される。隊列制御装置１の各処理部は、少なくとも一部が集積回路等のハードウェアによって構成されていてもよい。
【００６５】
〔状態判定部１０〕
状態判定部１０は、ステップＳ１０の状態判定処理を実行する。具体的には、状態判定部１０は、部分隊列がＭ群の制御対象物群とＳ群の制御対象物群とが組み合わさって構成される部分の移動方向に対して先頭側にＳ群の制御対象物群に属する制御対象物単位のみを含むか否か、および、末尾側にＭ群の制御対象物群に属する制御対象物単位のみを含むか否かに基づいて部分隊列の状態を表すモード値を決定する。
【００６６】
〔基本動作部１１〕
基本動作部１１は、ステップＳ１１、１３、１５の第一、第三、第五の移動処理を、調整動作部１２と協調して実行する。具体的には、基本動作部１１は、状態判定部１０が決定したモード値と所定の移動方向に基づいて決定される所定列に属する制御対象物のうち、移動方向に対してＭ群制御対象物群に属する制御対象物のみが存在する基準列に属する複数の制御対象物を移動方向へまとめて移動させる。
【００６７】
〔調整動作部１２〕
調整動作部１２は、ステップＳ１１〜１５の第一〜第五の移動処理を実行する。特に、ステップＳ１１、１３、１５の第一、第三、第五の移動処理は基本動作部１１と協調して実行する。具体的には、調整動作部１２は、状態判定部１０が決定したモード値と所定の移動方向に基づいて決定される所定列に所属する制御対象物のうち、基準列に水平面で隣接する列に属する制御対象物を移動方向へまとめて移動させる動作、もしくは、基準列の対角位置に存在する列に属する制御対象物を移動方向の逆方向へまとめて移動させる動作、もしくは、移動方向に直交する方向で空隙と接する制御対象物をその空隙内へ移動させる動作、のいずれかを実行する。
【００６８】
以下、図２６を参照して、第一実施形態の隊列制御装置１が実行する隊列制御方法を詳細に説明する。
【００６９】
〔状態判定処理〕
ステップＳ１０において、状態判定部１０は、Ｍ群とＳ群を構成する隊列の状態を判定し、状態を表すモード値を決定する。状態を表すモード値とは、Ｍ群とＳ群の占有する空間の重なりの状態を示す値である。モード値の例を図２７に示す。line_mode[a]がモード値であり、0, 1, 2, 3の何れかの値をとる。ここでは、無地の立方体がＭ群に属する制御対象物であり、網掛けされた立方体がＳ群に属する制御対象物である。
【００７０】
（１）モード値が０の場合（line_mode[a]=0）
部分隊列の移動方向aの先頭側にＭ群が占有する空間と重ならないＳ群の空間が存在し、部分隊列の移動方向aの末尾側（逆方向の先頭側）にＳ群が占有する空間と重ならないＭ群の空間が存在する状態である。
【００７１】
（２）モード値が１の場合（line_mode[a]=1）
部分隊列の移動方向aの先頭側にＭ群が占有する空間と重ならないＳ群の空間が存在し、部分隊列の移動方向aの末尾側（逆方向の先頭側）にＭ群の空間が存在しない状態である。
【００７２】
（３）モード値が２の場合（line_mode[a]=2）
部分隊列の移動方向aの先頭側にＳ群の空間が存在せず、部分隊列の移動方向aの末尾側（逆方向の先頭側）に隣接する位置にＳ群が占有する空間と重ならないＭ群の空間が存在する状態である。
【００７３】
（４）モード値が３の場合（line_mode[a]=3）
部分隊列の移動方向aの先頭側と末尾側のどちらにも、Ｍ群とＳ群のいずれも他方の制御対象物群と重ならない空間が存在しない状態（つまり、Ｍ群とＳ群の占有する空間が完全に重なっている状態）に対応する。
【００７４】
このような判定を行うのは、Ｓ群とＭ群の占有する空間の重なり具合によって、以後の各移動処理で移動対象とする制御対象物、列を切り替える必要があるためである。
【００７５】
〔第一の移動処理〕
ステップＳ１１において、基本動作部１１および調整動作部１２は、モード値および移動方向の正負により定まる部分隊列内の所定列に所属する制御対象物のうち、Ｍ群が占有する空間内にある制御対象物を、a方向へ１マス移動させる。Ｓ群とＭ群両方の制御対象物が存在する部分において移動する制御対象物の含まれる所定列は、例えば表１に示すルールに従って選択される。表１において、各モード値に対応する行で「○」がついている列が移動対象となる所定列である。例えば、図９、１１、１３、１５、１７、１９、２１、２３のT=0において太字で示す制御対象物が移動対象となる所定制御対象物である。
【００７６】
所定列に基準列が含まれる場合、基本動作部１１が基準列を移動させる基本動作を実行する。所定列に基準列以外の列が含まれる場合、調整動作部１２が基準列以外の所定列を移動させる調整動作を実行する。
【００７７】
【表１】
2019075013.tif 000003
【００７８】
初期状態におけるＭ群所属の各制御対象物の制御対象物単位内での位置を、図２右図に示す1, 2, 3, 4で識別することとし、初期状態におけるＳ群所属の各制御対象物の制御対象物単位内での位置を図２左図に示す1, 2, 3, 4で識別することとすると、第一の移動処理において基本動作部１１および調整動作部１２で移動対象となる制御対象物は以下のように特定することができる。
【００７９】
（１）モード値０の場合：
＜移動方向が負方向の場合＞
・Ｍ群所属の各制御対象物単位中1, 2, 3のもの
・Ｓ群と空間を共有していないＭ群所属の制御対象物のうち4のもの
・Ｍ群と空間を共有しているＳ群所属の制御対象物のうち4のもの
＜移動方向が正方向の場合＞
・Ｍ群所属の各制御対象物単位中2, 3のもの
【００８０】
（２）モード値１の場合：
＜移動方向が負方向の場合＞
・Ｍ群所属の各制御対象物単位中1, 2, 3のもの
・Ｍ群の占有する空間内にあるＳ群所属の各制御対象物単位のうち4のもの
＜移動方向が正方向の場合＞
・Ｍ群所属の各制御対象物単位中1, 2, 3のもの
・Ｓ群所属の末尾以外の各制御対象物単位のうち4のもの
【００８１】
（３）モード値２の場合：
＜移動方向が負方向の場合＞
・Ｍ群所属の各制御対象物単位中1, 2, 3のもの
・Ｓ群と空間を共有していないＭ群所属の各制御対象物のうち4のもの
・Ｍ群の占有する空間内にあるＳ群所属の各制御対象物単位のうち4のもの
＜移動方向が正方向の場合＞
・Ｍ群所属の各制御対象物単位中2, 3のもの
【００８２】
（４）モード値３の場合：
＜移動方向が負方向の場合＞
・Ｍ群所属の各制御対象物単位中1, 2, 3のもの
・Ｍ群の占有する空間内にあるＳ群所属の各制御対象物単位のうち4のもの
＜移動方向が正方向の場合＞
・Ｍ群所属の各制御対象物単位中1, 2, 3のもの
・Ｓ群所属の末尾以外の各制御対象物単位のうち4のもの
【００８３】
〔第二の移動処理〕
ステップＳ１１において、調整動作部１２は、モード値および移動方向の正負により定まる所定制御対象物を、第２軸方向に移動させる。移動対象となる所定制御対象物は、例えば、図９、１１、１３、１５、１７、１９、２１、２３のT=1において太字で示す制御対象物である。つまり、第二の移動処理において調整動作部１２で移動対象となるのは、以下の制御対象物である。
【００８４】
（１）モード値０の場合： 
＜移動方向が負方向の場合＞
・Ｍ群所属のa方向先頭の制御対象物単位中2のもの
・Ｓ群所属のa方向末尾の制御対象物単位中2のもの
＜移動方向が正方向の場合＞
・なし（移動しない）
【００８５】
（２）モード値１の場合：
＜移動方向が負方向の場合＞
・Ｍ群所属のa方向先頭の制御対象物単位中2のもの
・Ｓ群所属のa方向末尾の制御対象物単位中2のもの
・初期状態においてＳ群と空間を共有していたＭ群所属の制御対象物単位中a方向末尾の制御対象物単位のなかで4のもの
＜移動方向が正方向の場合＞
・Ｓ群所属のa方向末尾の制御対象物単位中2のもの
【００８６】
（３）モード値２の場合：
＜移動方向が負方向の場合＞
・Ｍ群所属のa方向先頭の制御対象物単位中2のもの
・Ｓ群所属のa方向末尾の制御対象物単位中2のもの
・初期状態においてＭ群と空間を共有していたＳ群所属の制御対象物単位中a方向先頭の制御対象物単位のなかで4のもの
＜移動方向が正方向の場合＞
・Ｍ群所属のa方向先頭の制御対象物単位中3のもの
【００８７】
（４）モード値３の場合：
＜移動方向が負方向の場合＞
・Ｍ群所属のa方向先頭の制御対象物単位中2のもの
・Ｓ群所属のa方向先頭の制御対象物単位中4のもの
・初期状態においてS群と空間を共有していたＭ群所属の制御対象物単位中a方向末尾の制御対象物単位のなかで4のもの
・初期状態においてＭ群と空間を共有していたＳ群所属の制御対象物単位中a方向先頭の制御対象物単位のなかで2のもの
＜移動方向が正方向の場合＞
・Ｍ群所属のa方向先頭の制御対象物単位中3のもの
・Ｓ群所属のa方向末尾の制御対象物単位中2のもの
【００８８】
〔第三の移動処理〕
ステップＳ１３において、基本動作部１１および調整動作部１２は、モード値および移動方向の正負により定まる所定列に所属する制御対象物のうち、Ｍ群が占有する空間内にある制御対象物を、a方向と平行な方向へ１マス移動させる。所定列は、例えば表２に示すルールに従って選択される。表２において、各モード値に対応する行で「○」がついている列が移動対象となる所定列である。また、移動方向は、a方向にＳ群所属の制御対象物のみが並んでいる列（基準列の対角位置にある列）についてはaと逆方向、その他の列についてはa方向である。つまり、第三の移動処理において基本動作部１１および調整動作部１２で移動対象となるのは、以下の制御対象物である。例えば、図９、１１、１３、１５、１７、１９、２１、２３のT=2において太字で示す制御対象物が移動対象となる所定制御対象物である。
【００８９】
第一の移動処理と同様に、所定列に基準列が含まれる場合、基本動作部１１が基準列を移動させる基本動作を実行する。所定列に基準列以外の列が含まれる場合、調整動作部１２が基準列以外の所定列を移動させる調整動作を実行する。
【００９０】
【表２】
2019075013.tif 000004
【００９１】
第三の移動処理において基本動作部１１および調整動作部１２で移動対象となる制御対象物は以下のように特定することができる。
【００９２】
（１）モード値０の場合：
＜移動方向が負方向の場合＞
・基準列にあるＭ群所属の制御対象物
・基準列の対角位置にあるＳ群所属の制御対象物のうち初期状態においてＭ群が占有する空間に対してa方向に隣接する制御対象物単位中の3を除いたもの
＜移動方向が正方向の場合＞
・基準列にあるＭ群所属の制御対象物
・基準列の対角位置にあるＳ群所属の制御対象物
・基準列に対して第１軸方向に平行な列の制御対象物
【００９３】
（２）モード値１の場合：
＜移動方向が負方向の場合＞
・基準列にあるＭ群所属の制御対象物
・基準列の対角位置にあるＳ群所属の制御対象物のうち初期状態においてＭ群が占有する空間に対してa方向に隣接する制御対象物単位中の3を除いたもの
＜移動方向が正方向の場合＞
・基準列にあるＭ群所属の制御対象物
・基準列の対角位置にあるＳ群所属の制御対象物のうち、初期状態においてＭ群が占有する空間内の末尾のＳ群制御対象物単位中の3を除いたもの
【００９４】
（３）モード値２の場合：
＜移動方向が負方向の場合＞
・基準列にあるＭ群所属の制御対象物
・基準列の対角位置にあるＳ群所属の制御対象物
・基準列に対して第１軸の向きに並行な列にある制御対象物
＜移動方向が正方向の場合＞
・基準列にあるＭ群所属の制御対象物
・基準列の対角位置にあるＳ群所属の制御対象物
・基準列に対して第１軸の向きに並行な列にある制御対象物
【００９５】
（４）モード値３の場合：
＜移動方向が負方向の場合＞
・基準列にあるＭ群所属の制御対象物
・基準列の対角位置にあるＳ群所属の制御対象物
・基準列に対して第１軸方向に平行な列の制御対象物
＜移動方向が正方向の場合＞
・基準列にあるＭ群所属の制御対象物
・基準列の対角位置にあるＳ群所属の制御対象物のうち初期状態においてＭ群が占有する空間内末尾のＳ群制御対象物単位中の3を除いたもの
【００９６】
〔第四の移動処理〕
ステップＳ１４において、調整動作部１２は、モード値および移動方向の正負により定まる所定制御対象物を、第２軸方向に移動させる。移動対象となる所定制御対象物は、例えば、図１０、１２、１４、１６、１８、２０、２２、２４のT=3において太字で示す制御対象物である。つまり、第四の移動処理において調整動作部１２で移動対象となるのは、以下の制御対象物である。
【００９７】
（１）モード値０の場合：
＜移動方向が負方向の場合＞
・初期状態においてＳ群とＭ群が共有する空間に対してaと反対方向に隣接するＭ群所属の制御対象物単位中4のもの
・初期状態においてＳ群とＭ群が共有する空間内先頭のＳ群所属の制御対象物単位4のもの
＜移動方向が正方向の場合＞
・Ｍ群のa方向先頭の制御対象物単位中3のもの
・初期状態においてＳ群とＭ群が共有する空間に対してa方向に隣接するＳ群所属の制御対象物単位4のもの
・Ｓ群のa方向末尾の制御対象物単位中3のもの
・初期状態においてＳ群とＭ群が共有する空間に対してaと反対方向に隣接するＭ群所属の制御対象物単位中4のもの
【００９８】
（２）モード値１の場合：
＜移動方向が負方向の場合＞
・初期状態においてS群とM群が共有する空間内先頭のS群所属の制御対象物単位4のもの
＜移動方向が正方向の場合＞
・Ｍ群のa方向末尾の制御対象物単位中4のもの
・Ｍ群のa方向先頭の制御対象物単位中3のもの
・初期状態においてＳ群とＭ群が共有する空間に対してa方向に隣接するＳ群所属の制御対象物単位4のもの
【００９９】
（３）モード値２の場合：
＜移動方向が負方向の場合＞
・初期状態においてＳ群とＭ群が共有する空間に対してaと反対方向に隣接するＭ群所属の制御対象物単位中4のもの
＜移動方向が正方向の場合＞
・Ｓ群のa方向先頭の制御対象物単位中4のもの
・Ｓ群のa方向末尾の制御対象物単位中3のもの
・初期状態においてＳ群とＭ群が共有する空間に対してaと反対方向に隣接するＭ群所属の制御対象物単位中4のもの
【０１００】
（４）モード値３の場合：
＜移動方向が負方向の場合＞
・なし（移動しない）
＜移動方向が正方向の場合＞
・Ｓ群のa方向先頭の制御対象物単位中4のもの
・Ｍ群のa方向末尾の制御対象物単位中4のもの
【０１０１】
〔第五の移動処理〕
ステップＳ１５において、基本動作部１１および調整動作部１２は、モード値および移動方向の正負により定まる所定列に所属する制御対象物のうち、Ｍ群制御対象物のあるメタモジュール空間内にある制御対象物を、a方向と平行な方向へ１マス移動させる。所定列は、例えば表３に示すルールに従って選択される。表３において、各モード値に対応する行で「○」がついている列が移動対象となる所定列である。つまり、第五の移動処理において基本動作部１１および調整動作部１２で移動対象となるのは、以下の制御対象物である。例えば、図１０、１２、１４、１６、１８、２０、２２、２４のT=4において太字で示す制御対象物が移動対象となる所定制御対象物である。
【０１０２】
第一の移動処理と同様に、所定列に基準列が含まれる場合、基本動作部１１が基準列を移動させる基本動作を実行する。所定列に基準列以外の列が含まれる場合、調整動作部１２が基準列以外の所定列を移動させる調整動作を実行する。
【０１０３】
【表３】
2019075013.tif 000005
【０１０４】
第五の移動処理において基本動作部１１および調整動作部１２で移動対象となる制御対象物は以下のように特定することができる。
【０１０５】
（１）モード値０で負方向に移動する場合：
・基準列にあるＭ群所属の制御対象物
・初期状態においてＳ群とＭ群が共有する空間に対してa方向に隣接するS群所属の制御対象物単位中4の位置にあるもの以外の、基準列と第１軸方向に平行な列にある制御対象物
【０１０６】
（２）モード値１で負方向に移動する場合：
・基準列にあるＭ群所属の制御対象物
・初期状態においてＳ群とＭ群が共有する空間に対してa方向に隣接するS群所属の制御対象物単位中4の位置にあるもの以外の、基準列と第１軸方向に平行な列にある制御対象物
【０１０７】
（３）モード値２で負方向に移動する場合：
・基準列にあるＭ群所属の制御対象物
【０１０８】
（４）モード値３で負方向に移動する場合：
・基準列にあるM群所属の制御対象物
【０１０９】
（５）モード値０で正方向に移動する場合：
・基準列にあるＭ群所属の制御対象物
・基準列と第１軸方向に平行な列にある制御対象物
【０１１０】
（６）モード値１で正方向に移動する場合：
・基準列にあるＭ群所属の制御対象物
・初期状態においてＳ群とＭ群が共有する空間内末尾のS群所属の制御対象物単位中4の位置にあるもの以外の、基準列と第１軸方向に平行な列にある制御対象物
【０１１１】
（７）モード値２で正方向に移動する場合：
・基準列にあるＭ群所属の制御対象物
・基準列と第１軸方向に平行な列にある制御対象物
・Ｍ群所属の制御対象物のうち先頭制御対象物単位内3のもの
【０１１２】
（８）モード値３で正方向に移動する場合：
・基準列にあるＭ群所属の制御対象物
・初期状態においてＳ群とＭ群が共有する空間内末尾のS群所属の制御対象物単位中4の位置にあるもの以外の、基準列と第１軸方向に平行な列にある制御対象物
・Ｍ群所属の制御対象物のうち先頭制御対象物単位内3のもの
【０１１３】
第一、第三、第五の移動処理では第３軸方向への移動を行い、第二、第四の移動処理では第３軸と直交する軸（図９〜１６の例では第２軸）の方向への移動を行う構成とすることがポイントである。基本動作部１１および調整動作部１２で移動対象とする列は図９〜２４に示したものはあくまで一例であり、前記ポイントを逸脱しない範囲で別の列を移動対象とすることは可能である。
【０１１４】
各モードにて１メタモジュール分の動作に要する時刻ステップ数が同一であること、また、基本工程の時刻を各モードで同一にできることが、任意形状のＭ群とＳ群の透過動作を実現可能にしている。
【０１１５】
＜第二実施形態＞
第二実施形態では任意の隊列を対象としてＭ群がＳ群の占有する空間を通り抜けて１制御対象物単位分、所定方向に移動する隊列制御を実現する隊列制御装置について説明する。任意の隊列を部分隊列と剰余隊列に分割し、部分隊列については第一実施形態の隊列制御方法の各ステップにより隊列を移動させる。同時に、剰余隊列について並行して所定の移動を行う点が異なる。
【０１１６】
［装置構成］
第二実施形態の隊列制御装置２は、図２８に例示するように、第一実施形態の状態判定部１０、基本動作部１１、および調整動作部１２に加えて、隊列分割部２０をさらに含む。この隊列制御装置２が、図２９に例示する各ステップの処理を行うことにより第二実施形態の隊列制御方法が実現される。
【０１１７】
〔隊列分割部２０〕
隊列分割部２０は、ステップＳ２０の隊列分割処理を実行する。具体的には、隊列分割部２０は、複数のＳ群の制御対象物群と複数のＭ群の制御対象物群とからなる全体隊列を、１以上の部分隊列と、部分隊列に含まれない制御対象物からなる１以上の剰余隊列とに分割する。
【０１１８】
〔隊列分割処理〕
ステップＳ２０において、隊列分割部２０は、入力されたＳ群およびＭ群からなる全体隊列を、部分隊列単位に分割する。これにより、１以上の部分隊列と、当該部分隊列に含まれない１以上の剰余隊列とが生成される。
【０１１９】
以下、部分隊列ごとに第一実施形態の各ステップ（状態判定処理〜第五の移動処理）の処理を実行させる。第一実施形態と異なる処理が必要な部分のみ説明する。
【０１２０】
〔第一の移動処理〕
ステップＳ１１の第一の移動処理において、基本動作部１１および調整動作部１２は、部分隊列ごとに第一実施形態の第一の移動処理を行うとともに、剰余隊列に含まれる各Ｍ群の制御対象物単位の各制御対象物を、１マス分、a方向に移動させる。
【０１２１】
〔第五の移動処理〕
ステップＳ１５の第五の移動処理において、基本動作部１１および調整動作部１２は、部分隊列毎に第一実施形態の第五の移動処理を行うとともに、剰余隊列に含まれる各Ｍ群の制御対象物単位の各制御対象物を、１マス分、a方向に移動させる。
【０１２２】
このように、部分隊列の動きにあわせて、ステップＳ１１とステップＳ１５において剰余隊列も所定方向へ同時に移動させることで、移動に要するステップ数を増加させることなく、全体の隊列の移動を実現することができる。
【０１２３】
＜第三実施形態＞
第三実施形態は、第一実施形態と同じく部分隊列の移動を行う隊列制御装置である。第一実施形態はＳ群に所属する制御対象物の一部も移動させることで隊列制御を実現するが、第三実施形態はＳ群を一切動かすことなく隊列制御を行う。
【０１２４】
ここで、第三実施形態においては、部分隊列を、図３０に示す隊列とする。図３０の直方体部分は、８マス全てが制御対象物で充填されているメタモジュールが移動方向に連続してなる隊列、つまり、Ｓ群の制御対象物単位とＭ群の制御対象物単位が組み合わさってなる隊列である。この隊列において、Ｓ群の制御対象物単位とＭ群の制御対象物単位が重なる部分に移動方向で接するＳ群と重ならないＭ群の制御対象物単位は含まれない。末尾のＭ群の制御対象物単位は、Ｓ群の制御対象物単位と接するか否かについて制限はない。また、Ｓ群とＭ群が重なっている部分は複数あってもよい。
【０１２５】
任意の隊列を部分隊列に分割したときに、いずれの部分隊列にも含まれないＭ群の制御対象物単位のみが移動方向に連続する隊列が生じるので、これを剰余隊列と呼ぶこととする。
【０１２６】
第一実施形態では２軸方向（すなわち、移動方向に並行する１軸と、移動方向に直交する２軸のうち片方のみ）の移動を用いたが、第三実施形態では３軸方向（すなわち、移動方向に並行する１軸と、移動方向に直交する２軸の両方）への移動を用いる。
【０１２７】
基本となる工程は以下の３種類である。
（第１工程）基準列の全ての制御対象物と末尾Ｍ群制御対象物単位内の制御対象物のうちa方向へ移動可能なものを第３軸のa方向へ１マス移動させる工程（ここで、末尾Ｍ群制御対象物単位とはＳ群とＭ群の制御対象物単位が重なっている部分の末尾のＭ群制御対象物単位、もしくはＳ群とＭ群の制御対象物単位が重なっている部分の末尾にa方向の逆方向に接するＭ群の制御対象物単位である。）
（第２工程）所定制御対象物を第１軸方向の空隙に移動させる工程
（第３工程）所定制御対象物を第２軸方向の空隙に移動させる工程
第１工程が上述の「Ａ）基本動作」に相当し、第２〜３工程が上述の「Ｂ）調整動作」に相当する。
【０１２８】
第三実施形態による移動の例を図３１〜３２に示す。この例では、第１工程→第２工程→第１工程→第３工程→第１工程→第２工程→第１工程の順に移動をさせているが、これはあくまで一例であり、必ずしもこの順序である必要はない。
【０１２９】
最初の第１工程および最後の第１工程では、その他のＭ群制御対象物単位内の制御対象物も移動方向に１マス同時に移動するが、以下ではその詳細は省略する。
【０１３０】
初期状態においてはＭ群制御対象物が存在しないが目的状態ではＭ群制御対象物により充填される空隙を持つメタモジュールを充填位置とし、初期状態においてはＭ群制御対象物が存在するが、目的状態ではＭ群制御対象物が存在しなくなるメタモジュール位置を開放位置とする。充填位置は、初期状態のＭ群に対して所定方向（a方向）に隣接する制御対象物単位位置であり、開放位置は初期状態のＭ群のa方向末尾の制御対象物単位位置である。すると、第三実施形態は、要するに、基準列の全ての制御対象物をまとめて１マス分a方向に移動させる基本動作を行うことを基本とし、基本動作を行うことで第１軸または第２軸方向の移動を用いて充填可能となる充填位置があれば、そこへ基準列の制御対象物を移動させ、および／または、基本動作を行うことで第１軸または第２軸方向の移動を用いて基準列に制御対象物を移動させることで開放可能となる開放位置の制御対象物があれば当該制御対象物を基準列へ移動させることで、隊列制御を実現する。要するに、Ｍ群の基準列の制御対象物をa方向に押し出すとともに、開放位置の制御対象物は順次基準列へ移動させ、基準列先頭の制御対象物は順次基準列以外の充填位置へ移動させることで移動を行うのである。
【０１３１】
［装置構成］
第三実施形態の隊列制御装置３は、図３５に例示するように、第一実施形態の基本動作部１１および調整動作部１２に加えて、第一判定部３０および第二判定部３１をさらに含む。この隊列制御装置３が、図３６に例示する各ステップの処理を行うことにより第三実施形態の隊列制御方法が実現される。
【０１３２】
〔第一の判定処理〕
ステップＳ３０ａ〜Ｓ３０ｂにおいて、第一判定部３０は、移動が完了したか否かを判定し、完了していなければ（Ｎｏ）第一の移動処理を実行し、完了していれば（Ｙｅｓ）処理を終了する。
【０１３３】
具体的には、充填位置がＭ群制御対象物で充填され、開放位置が全て空隙になっていれば、移動が完了したと判定し、そうでなければ移動が完了していないと判定する。
【０１３４】
〔第一の移動処理〕
ステップＳ３１において、基本動作部１１および調整動作部１２は、基準列の制御対象物と末尾Ｍ群制御対象物単位内の制御対象物のうちa方向に移動可能なもの全てを１マス分、a方向に移動させる。
【０１３５】
〔第二の判定処理〕
ステップＳ３２において、第二判定部３１は、基準列以外の充填位置内のＭ群制御対象物単位内の制御対象物が占めるべき位置が全てＭ群制御対象物で充填され、かつ、基準列が占める位置以外の開放位置内の位置が全て空隙になっているか否かを判定し、条件を満たしていれば第一の判定処理を実行し、そうでなければ第二の移動処理を実行する。
【０１３６】
つまり、第二判定部３１は第二の移動処理を実行する必要があるか否かを判定し、処理を切り替える。
【０１３７】
〔第二の移動処理〕
ステップＳ３３において、調整動作部１２は、基準列以外の充填位置でまだＭ群制御対象物により充填されていない空隙に隣接する基準列の位置にＭ群の制御対象物があれば、当該制御対象物を当該空隙に移動させる。ここで、該当する充填位置が複数ある場合は、そのうちの何れか１つを選択するものとする。また、調整動作部１２は、基準列以外の開放位置でまだＭ群制御対象物により充填されている位置に隣接する基準列の位置が空隙であれば、当該開放位置の制御対象物を当該基準列の空隙に移動させる。ここで、該当する開放位置が複数ある場合は、そのうちの何れか１つを選択するものとする。第二の移動処理を終えたら、第一の判定処理を実行する。
【０１３８】
図３１〜３４の例では、第二の移動処理のa方向先頭側の制御対象物の移動とa方向末尾側の制御対象物の移動方向の軸が揃っているが、先頭側が第１軸、末尾側は第２軸のように異なる軸で移動をさせることも可能であることはいうまでもない。
【０１３９】
＜第四実施形態＞
第四実施形態は、第三実施形態と同じくＳ群を一切動かすことなく部分隊列の隊列制御を行う隊列制御装置である。
【０１４０】
［装置構成］
第四実施形態の隊列制御装置４は、図３７に例示するように、第一実施形態の状態判定部１０、基本動作部１１、および調整動作部１２に加えて、行動指令値格納部４０をさらに含む。この隊列制御装置４が、図３８に例示する各ステップの処理を行うことにより第四実施形態の隊列制御方法が実現される。
【０１４１】
［前提］
・各制御対象物は、aの値に応じて、当該制御対象物が属する制御対象物単位中の位置を表す変数（Ir値という）が与えられているものとする。Ir値は、例えば、a=3のときは、図２に示した1, 2, 3, 4の何れかの値である。aの各値に対し、Ir値は、以下のように与えられる。
【０１４２】
a=3のとき、ロボットiの位置が、
(Xr[i], Yr[i], Zr[i])=(2×Xr_u[j]+1, 2×Yr_u[j]+1, 2×Zr_u[j])ならば、Ir[i]=4、
(Xr[i], Yr[i], Zr[i])=(2×Xr_u[j]+1, 2×Yr_u[j], 2×Zr_u[j]+1)ならば、Ir[i]=1、
(Xr[i], Yr[i], Zr[i])=(2×Xr_u[j], 2×Yr_u[j]+1, 2×Zr_u[j]+1)ならば、Ir[i]=2、
(Xr[i], Yr[i], Zr[i])=(2×Xr_u[j]+1, 2×Yr_u[j]+1, 2×Zr_u[j]+1)ならば、Ir[i]=3、
とする。
【０１４３】
a=4のとき、ロボットiの位置が、
(Xr[i], Yr[i], Zr[i])=(2×Xr_u[j]+1, 2×Yr_u[j]+1, 2×Zr_u[j])ならば、Ir[i]=1、
(Xr[i], Yr[i], Zr[i])=(2×Xr_u[j]+1, 2×Yr_u[j], 2×Zr_u[j]+1)ならば、Ir[i]=2、
(Xr[i], Yr[i], Zr[i])=(2×Xr_u[j], 2×Yr_u[j]+1, 2×Zr_u[j]+1)ならば、Ir[i]=4、
(Xr[i], Yr[i], Zr[i])=(2×Xr_u[j]+1, 2×Yr_u[j]+1, 2×Zr_u[j]+1)ならば、Ir[i]=3、
とする。
【０１４４】
a=6のとき、ロボットiの位置が、
(Xr[i], Yr[i], Zr[i])=(2×Xr_u[j]+1, 2×Yr_u[j]+1, 2×Zr_u[j])ならば、Ir[i]=2、
(Xr[i], Yr[i], Zr[i])=(2×Xr_u[j]+1, 2×Yr_u[j], 2×Zr_u[j]+1)ならば、Ir[i]=4、
(Xr[i], Yr[i], Zr[i])=(2×Xr_u[j], 2×Yr_u[j]+1, 2×Zr_u[j]+1)ならば、Ir[i]=1、
(Xr[i], Yr[i], Zr[i])=(2×Xr_u[j]+1, 2×Yr_u[j]+1, 2×Zr_u[j]+1)ならば、Ir[i]=3、
とする。
【０１４５】
Ir値が3の制御対象物からIr値が2の制御対象物に向かう向きが図７に示す第3軸の向き（aの向き）、Ir値が3の制御対象物からIr値が4の制御対象物に向かう向きが図７に示す第2軸の向き、Ir値が3の制御対象物からIr値が1の制御対象物に向かう向きが図７に示す第1軸の向きとなるように設定されている。
【０１４６】
〔行動指令値格納部４０〕
行動指令値格納部４０には、予め移動方向aの値に応じて決まる６種類の行動指令値a_t[ia](ia=1, 2, 3, 4, 5, 6)が格納されているものとする。
【０１４７】
以下、aの値がX, Y, Z軸負方向（Ｓ群とＭ群の制御対象物単位が組み合わさるとメタモジュールをなすように動く方向）について示す。X, Y, Z軸正方向の場合は、以下の動作を時間的に逆再生すればよい。
【０１４８】
〔状態判定処理〕
ステップＳ４０において、状態判定部１０は、Ｍ群とＳ群を構成する隊列の状態を判定し、状態を表すモード値line_mode[a]を決定する。末尾Ｍ群制御対象物単位がＳ群制御対象物単位と重なっているときはline_mode[a]←0とし、いないときはline_mode[a]←１とする。すなわち、移動方向aがX, Y, Z軸正方向のときは、Ｓ群とＭ群の制御対象物単位が組み合わさってメタモジュールを構成している部分の移動方向に接するＭ群のみで構成される制御対象物単位が存在しているときはline_mode[a]←0とし、存在しないときはline_mode[a]←1とする。
【０１４９】
〔第一の移動処理〕
ステップＳ４１において、基本動作部１１および調整動作部１２は、モード値に応じて以下の動作を行う。
【０１５０】
（１）全モード共通
部分隊列内のすべてのＭ群所属の制御対象物のうち、Ir値が2, 3のものをa_t[1]方向に１マス移動させる。ここでa_t[1]の方向は、表４に記載の通り、移動方向aに応じて定まるものである。例えば、移動方向a=3であれば、a_t[1]=3なので、X軸負方向である。なお、図３１〜３４においては、a=3の例が示されており、a_t[2]は第２軸正方向、a_t[4]は、第２軸負方向、a_t[5]は第１軸正方向、a_t[6]は第１軸負方向の移動となる。
【０１５１】
【表４】
2019075013.tif 000006
【０１５２】
（２）line_mode[a]=0の場合
line_mode[a]=0の場合は、上記（１）に加えて、部分隊列最後尾のＭ群制御対象物単位所属で、Ir値が1, 4の制御対象物をa_t[1]方向に１マス移動させる。
【０１５３】
〔第二の移動処理〕
ステップＳ４２において、基本動作部１１および調整動作部１２は、モード値に応じて以下の動作を行う。
【０１５４】
（１）全モード共通
部分隊列内の先頭の制御対象物単位所属のIr値が2の制御対象物をa_t[2]方向に１マス移動させる。
【０１５５】
（２）line_mode[a]=１の場合
line_mode[a]=1の場合は、上記（１）に加えて、部分隊列末尾のＭ群制御対象物単位所属のIr値が4の制御対象物をa_t[4]方向に１マス移動させる。
【０１５６】
〔第三の移動処理〕
ステップＳ４３において、基本動作部１１および調整動作部１２は、モード値に応じて以下の動作を行う。
【０１５７】
（１）全モード共通
部分隊列内の先頭制御対象物単位以外のＭ群制御対象物単位所属のIr値が2の制御対象物をa_t[1]方向に１マス移動させる。また、全てのＭ群制御対象物単位所属のIr値が3の制御対象物をa_t[1]方向に１マス移動させる。
【０１５８】
（２）line_mode[a]=1の場合
line_mode[a]=1の場合は、上記（１）に加えて、部分隊列末尾のＭ群制御対象物単位所属のIr値が4の制御対象物をa_t[1]方向に１マス移動させる。
【０１５９】
〔第四の移動処理〕
ステップＳ４４において、基本動作部１１および調整動作部１２は、モード値に応じて以下の動作を行う。
【０１６０】
（１）全モード共通
部分隊列の先頭Ｍ群制御対象物単位所属のIr値が3の制御対象物をa_t[5]方向に１マス移動させる。部分隊列末尾のＭ群制御対象物単位所属のIr値が1の制御対象物をa_t[6]方向に１マス移動させる。
【０１６１】
〔第五の移動処理〕
ステップＳ４５において、基本動作部１１および調整動作部１２は、モード値に応じて以下の動作を行う。
【０１６２】
（１）全モード共通
部分隊列の先頭以外の全てのＭ群制御対象物単位所属のIr値が2, 3の制御対象物をa_t[1]方向に１マス移動させる。
【０１６３】
（２）line_mode[a]=0の場合
line_mode[a]=0の場合は、上記（１）に加えて、部分隊列末尾のＭ群所属制御対象物単位所属のIr値が1の制御対象物をa_t[1]方向に１マス移動させる。
【０１６４】
（３）line_mode[a]=1の場合
line_mode[a]]=1の場合は、上記（１）に加えて、部分隊列末尾のＭ群所属制御対象物単位所属のIr値が1, 4の制御対象物をa_t[1]方向に１マス移動させる。
【０１６５】
〔第六の移動処理〕
ステップＳ４６において、基本動作部１１および調整動作部１２は、モード値に応じて以下の動作を行う。
【０１６６】
（１）line_mode[a]=0の場合
部分隊列末尾のＭ群制御対象物単位所属のIr値が4の制御対象物をa_t[4]方向に１マス移動させる。
【０１６７】
〔第七の移動処理〕
ステップＳ４７において、基本動作部１１および調整動作部１２は、モード値に応じて以下の動作を行う。
【０１６８】
（１）全モード共通
部分隊列の先頭以外の全てのＭ群制御対象物単位所属のIr値が2, 3の制御対象物をa_t[1]方向に１マス移動させる。部分隊列末尾のＭ群制御対象物単位所属のIr値が1, 4の制御対象物をa_t[1]方向に１マス移動させる。
【０１６９】
＜第五実施形態＞
第五実施形態は、任意の隊列を対象としてＭ群がＳ群の占有する空間を通り抜けて１制御対象物単位分、所定方向に移動する隊列制御を実現する隊列制御装置である。第五実施形態では、第二実施形態と同じく、任意の隊列を部分隊列と剰余隊列に分割し、部分隊列については第四実施形態の隊列制御方法の各ステップにより隊列を移動させる。同時に、剰余隊列について並行して所定の移動を行う点が異なる。
【０１７０】
［装置構成］
第五実施形態の隊列制御装置５は、図３９に例示するように、第二実施形態の隊列分割部２０、状態判定部１０、基本動作部１１、および調整動作部１２に加えて、行動指令値格納部４０をさらに含む。この隊列制御装置５が、図４０に例示する各ステップの処理を行うことにより第五実施形態の隊列制御方法が実現される。
【０１７１】
〔隊列分割処理〕
ステップＳ２０において、隊列分割部２０は、隊列分割処理を実行する。隊列分割部２０の処理は、第二実施形態の隊列分割部２０と同じである。ただし、部分隊列の定義は第三実施形態のものとする。
【０１７２】
残りの各ステップの処理は、隊列分割部２０で得た各部分隊列毎に並行して実行する点を除いては、基本的に第四実施形態の各ステップの処理と同じであるが、一部のステップにおいて部分隊列と共に剰余隊列の動作を行う点が異なる。以下、相違がある部分のみ説明する。
【０１７３】
〔第一の移動処理〕
ステップＳ５１において、基本動作部１１および調整動作部１２は、部分隊列毎に第四実施形態の第一の移動処理を行うと共に、剰余隊列に含まれる各Ｍ群制御対象物単位所属の制御対象物について、a_t[1]方向に１マス移動させる。
【０１７４】
〔第七の移動処理〕
ステップＳ５７において、基本動作部１１および調整動作部１２は、部分隊列毎に第四実施形態の第七の移動処理を行うと共に、剰余隊列に含まれる各Ｍ群制御対象物単位所属の制御対象物について、a_t[1]方向に１マス移動させる。
【０１７５】
以上、この発明の実施の形態について説明したが、具体的な構成は、これらの実施の形態に限られるものではなく、この発明の趣旨を逸脱しない範囲で適宜設計の変更等があっても、この発明に含まれることはいうまでもない。実施の形態において説明した各種の処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。
【０１７６】
［プログラム、記録媒体］
上記実施形態で説明した各装置における各種の処理機能をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記各装置における各種の処理機能がコンピュータ上で実現される。
【０１７７】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【０１７８】
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD-ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【０１７９】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記憶装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【０１８０】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【符号の説明】
【０１８１】
１、２、３、４、５  隊列制御装置
１０  状態判定部
１１  基本動作部
１２  調整動作部
２０  隊列分割部
３０  第一判定部
３１  第二判定部
４０  行動指令値格納部
【図１】
2019075013.tif 000007
【図２】
2019075013.tif 000008
【図３】
2019075013.tif 000009
【図４】
2019075013.tif 000010
【図５】
2019075013.tif 000011
【図６】
2019075013.tif 000012
【図７】
2019075013.tif 000013
【図８】
2019075013.tif 000014
【図９】
2019075013.tif 000015
【図１０】
2019075013.tif 000016
【図１１】
2019075013.tif 000017
【図１２】
2019075013.tif 000018
【図１３】
2019075013.tif 000019
【図１４】
2019075013.tif 000020
【図１５】
2019075013.tif 000021
【図１６】
2019075013.tif 000022
【図１７】
2019075013.tif 000023
【図１８】
2019075013.tif 000024
【図１９】
2019075013.tif 000025
【図２０】
2019075013.tif 000026
【図２１】
2019075013.tif 000027
【図２２】
2019075013.tif 000028
【図２３】
2019075013.tif 000029
【図２４】
2019075013.tif 000030
【図２５】
2019075013.tif 000031
【図２６】
2019075013.tif 000032
【図２７】
2019075013.tif 000033
【図２８】
2019075013.tif 000034
【図２９】
2019075013.tif 000035
【図３０】
2019075013.tif 000036
【図３１】
2019075013.tif 000037
【図３２】
2019075013.tif 000038
【図３３】
2019075013.tif 000039
【図３４】
2019075013.tif 000040
【図３５】
2019075013.tif 000041
【図３６】
2019075013.tif 000042
【図３７】
2019075013.tif 000043
【図３８】
2019075013.tif 000044
【図３９】
2019075013.tif 000045
【図４０】
2019075013.tif 000046