JP7014099B2 - 移動ロボット、移動ロボットの制御方法及びプログラム - Google Patents
移動ロボット、移動ロボットの制御方法及びプログラム Download PDFInfo
- Publication number
- JP7014099B2 JP7014099B2 JP2018157544A JP2018157544A JP7014099B2 JP 7014099 B2 JP7014099 B2 JP 7014099B2 JP 2018157544 A JP2018157544 A JP 2018157544A JP 2018157544 A JP2018157544 A JP 2018157544A JP 7014099 B2 JP7014099 B2 JP 7014099B2
- Authority
- JP
- Japan
- Prior art keywords
- robot
- command
- unit
- reply
- head
- 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
Links
- 238000000034 method Methods 0.000 title claims description 47
- 239000011800 void material Substances 0.000 claims description 171
- 230000005540 biological transmission Effects 0.000 claims description 151
- 238000004364 calculation method Methods 0.000 claims description 121
- 238000012546 transfer Methods 0.000 claims description 111
- 230000033001 locomotion Effects 0.000 claims description 96
- 230000015572 biosynthetic process Effects 0.000 claims description 23
- 238000012545 processing Methods 0.000 claims description 18
- 230000008569 process Effects 0.000 description 27
- 238000010899 nucleation Methods 0.000 description 12
- 230000009466 transformation Effects 0.000 description 9
- 230000009471 action Effects 0.000 description 7
- 238000011160 research Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000008602 contraction Effects 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000010008 shearing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
- G05D1/02—Control of position or course in two dimensions
- G05D1/021—Control of position or course in two dimensions specially adapted to land vehicles
- G05D1/0287—Control 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/0291—Fleet control
- G05D1/0295—Fleet control by at least one leading vehicle of the fleet
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
- G05D1/02—Control of position or course in two dimensions
- G05D1/021—Control of position or course in two dimensions specially adapted to land vehicles
- G05D1/0268—Control of position or course in two dimensions specially adapted to land vehicles using internal positioning means
- G05D1/0272—Control of position or course in two dimensions specially adapted to land vehicles using internal positioning means comprising means for registering the travel distance, e.g. revolutions of wheels
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
- G05D1/02—Control of position or course in two dimensions
- G05D1/021—Control of position or course in two dimensions specially adapted to land vehicles
- G05D1/0287—Control 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/0291—Fleet control
- G05D1/0293—Convoy travelling
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)
- Manipulator (AREA)
Description
本発明は、複数のロボットの行動を制御する技術に関する。例えば、複数のロボットを、初期位置における隊列形成状態から協調して移動させ、障害物を回避させ、目標位置で隊列形成をさせるための各ロボットの行動計画を求めるロボット協調制御技術に関する。
近年、多数の自律移動ロボットを効率的に制御にするための研究が活発に行われている。その任務内容は、人の入れない箇所の監視、物品の搬送などさまざまであるが、多数のロボットの協調動作による隊列形成を効率的に行わせるための技術が求められており盛んに研究が行われている。
特に、ロボットの隊列制御の中でも、ロボット同士が互いに接したままの状態で、アメーバのように全体で移動を行うという仮定の下でのロボット隊列制御においては、ロボット同士の相対的な位置関係から、各ロボットの絶対位置の決定が可能であるという利点と、付加的な位置計測用の装備を必要としないという利点があり、そのようなロボットの研究も行われている。例えば、非特許文献2に示す研究に至る一連の研究では、ある隊列から他の隊列に変化する隊列制御が示されている(例えば、非特許文献2参照。)。
このような、多数のロボットによる効率的な隊列形成を実現するには、それぞれのロボットの配置、動作順序などを事前に計画することが重要である。このような計画においては、当然ながら、複数のロボットが動作する実環境における障害物の存在や経路の形状なども十分に考慮しなければならない。
非特許文献1に示す研究に示されている手法では、複数の立方体形状のロボット同士での伸長収縮面動作(あるロボットが、他のロボットと接した状態で、伸び縮みしつつ移動する動作)によるロボットの隊列変形が扱われている。
非特許文献2に示す研究に示されている手法では、複数の立方体形状のロボット同士での面せん断動作(あるロボットが、他のロボットと接した状態で、接する面上をスライド移動する動作)によるロボットの隊列変形が扱われている。
S. Vassilvitskii, M. Yim, J. Suh, "A Complete, Local and ParallelReconfiguration Algorithm for Cube Style Modular Robots", in Proc.2002 IEEE Int. Conf. Robotics and Automation, pp. 117-122, Washington DC, May, 2002.
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.
非特許文献2では、各ロボットが接した状態での動作を想定し、各ロボットが異なる特性(ヘテロジニアス)である。つまり、各ロボットの目標位置の集合の形状が定まった場合の隊列制御を実現している。しかし、ロボットが初期状態でとる隊列位置の集合とロボットの目標位置の集合の共通部分内に非接続箇所がない条件でのみの適用に限られている。
そこで、本発明は、ロボット単位の初期位置とロボット単位の目標位置の共通部分に非接続箇所がある場合でも移動することができる移動ロボット、移動ロボットの制御方法及びプログラムを提供することを目的とする。
この発明の一態様による移動ロボットは、所定の初期位置から所定の目標位置に移動する移動ロボットであって、移動ロボットは複数のロボット単位で構成されているとし、各ロボット単位には複数のロボットが含まれているとし、各ロボット単位が他のロボット単位と隣接することによりロボット単位が一塊のロボット構造を形成していることをロボット構造の接続性と言うとし、初期位置と目標位置の共通部分を共通位置とし、共通位置は1つ以上の部分共通位置の集合から構成されているとして、複数のロボットのそれぞれは、所定のroot位置にあるロボットi_rootである場合には、それぞれ所定の初期値に設定された、所定のroot位置からの相対位置と位置距離計算命令の送信転送回数とを含む位置距離計算命令を隣接するロボットに送信する位置距離計算命令送信部と、位置距離計算命令を受信した場合に、位置距離計算命令に含まれる送信転送回数をインクリメントし、位置距離計算命令を受信した方向に応じて位置距離計算命令に含まれる相対位置を更新し、インクリメントした送信転送回数及び更新した相対位置を含む位置距離計算命令を、位置距離計算命令を送信してきたロボット以外の、隣接するロボットに一度だけ転送する位置距離計算命令転送部と、位置距離計算命令を最初に受信した場合に、位置距離計算命令を送信してきたロボットに、インクリメントした送信転送回数及び更新した相対位置を含む返信位置距離計算命令を送信する返信位置距離計算命令送信部と、位置距離計算命令を最初に受信した場合に、位置距離計算命令を送信してきたロボットの方向をroot方向として記憶する方向記憶部と、返信位置距離計算命令を受信した場合に、方向記憶部から読み込んだroot方向に受信した返信位置距離計算命令を転送する返信位置距離計算命令転送部と、ロボットi_rootであり、全てのロボットが送信した返信位置距離計算命令を受信した場合には、初期位置、目標位置及び返信位置距離計算命令に含まれる相対位置に基づく各ロボットの位置に基づいて、ある1つの部分共通位置集合を集合Upとして選択し、集合Upに属する位置にあり目標位置の中のロボット単位が存在していない位置(以下、目的位置Dとする。)に隣接するロボット単位を先頭ロボット単位Headとして選択し、選択した先頭ロボット単位Headに含まれる所定のロボットhに、各ロボットの位置と、集合Upについての情報とを含む先頭ロボット決定命令を送信する第一先頭ロボット決定命令送信部と、ロボットhであり、先頭ロボット決定命令を受信した場合には、各ロボットの位置と、集合Upについての情報とに基づいて、目的位置Dと、集合Upに属しない位置にあり初期位置の中に位置するロボット単位であり、移動させてもロボット構造の接続性を維持することができるロボット単位である尾部ロボット単位Tailと、先頭ロボット単位Headから尾部ロボット単位Tailまでのパスと、先頭ロボット単位Head内のロボットのボイド発生順序とを決定するボイド発生順序決定部と、ロボットhである場合には、先頭ロボット単位Head内の決定されたボイド発生順序に基づく位置のロボットv1宛てのボイド発生命令を隣接するロボット単位に送信するボイド発生命令送信部と、ボイド発生命令を受信した場合に、ボイド発生命令を、ロボットv1に届くまで隣接するロボットに転送するボイド発生命令転送部と、ロボットv1であり、ボイド発生命令を受信した場合に、先頭ロボット単位Headの動く方向をah方向として、ah方向に隣接するロボットに押命令を送信する押命令送信部と、押命令を受信した場合であってah方向に隣接するロボットがある場合には、ah方向に隣接するロボットに押命令を転送し、押命令を受信した場合であってah方向に隣接するロボットがない場合には、ah方向の反対方向に隣接するロボットに返信押命令を送信する返信押命令送信部と、返信押命令を受信した場合には、ロボットv1に届くまでah方向の反対方向に隣接するロボットに返信押命令を転送する返信押命令転送部と、ロボットv1であり、返信押命令を受信した場合には、パス上にありロボットv1に隣接するロボットにボイド操作命令を送信するボイド操作命令送信部と、ロボットv1であり、返信押命令を受信した場合であって、ボイド操作命令を送信した後に、ah方向にロボットv1を移動させる第一移動部と、ボイド操作命令を受信した場合には、パス上にあり、パス内の自身より一マス分尾部ロボット単位Tail近づく方向にあるロボットにボイド操作命令を転送するボイド操作命令転送部と、ボイド操作命令を受信した場合であってボイド操作命令の送信転送回数が所定の回数である場合には、ボイド操作命令を送信してきたロボットに移動命令を送信する移動命令送信部と、移動命令を受信した場合には、移動命令を送信してきたロボットに返信移動命令を送信する返信移動命令送信部と、返信移動命令を受信した場合には、ボイド操作命令を送信してきたロボットと共にロボットをボイド操作命令を送信してきたロボットのある方向に移動させる第二移動部と、先頭ロボット単位Tailの動く方向をat方向として、尾部ロボット単位Tailの1個手前のロボット単位T'に含まれて、ロボットv1のロボット単位内位置と同じT'内位置にあるロボットであり、ボイド操作命令を受信した場合には、at方向の反対方向に隣接するロボットに引命令を送信する引命令送信部と、引命令を受信した場合であって尾部ロボット単位Tail内にat方向の反対方向に隣接するロボットがある場合には、at方向の反対方向に隣接するロボットに引命令を転送し、引命令を受信した場合であって尾部ロボット単位Tail内にat方向の反対方向に隣接するロボットがない場合には、at方向に隣接するロボットに返信引命令を送信する返信引命令送信部と、返信引命令を受信した場合には、返信引命令を送信してきたロボットと共にat方向にロボットを移動させる第三移動部と、ロボットhである場合には、先頭ロボット単位Headに含まれる全てのロボットが、目的位置Dに移動するまで、ボイド発生順序決定部、ボイド発生命令転送部、押命令送信部、返信押命令送信部、返信押命令転送部、ボイド操作命令送信部、第一移動部、ボイド操作命令転送部、移動命令送信部、返信移動命令送信部、第二移動部、引命令送信部、返信引命令送信部、第三移動部の処理を繰り返すように制御を行う制御部と、ロボットhである場合には、目的位置Dを集合Upに追加した後に、集合Upに接していて、集合Upの中ではなく目標位置の中に位置するロボット単位がある場合には、そのロボット単位の位置と、そのロボット単位から目標位置のみを経由して接続状態にあるロボット単位の位置とを集合Upに追加することにより集合Upを更新する集合更新部と、ロボットhである場合には、尾部ロボット単位Tailの位置と、目的位置Dにあるロボットの位置とを更新し、更新された各ロボットの位置に基づいて、集合Upに属する位置にあり目標位置の中のロボット単位が存在していない位置に隣接するロボット単位がある場合にはそのロボット単位を先頭ロボット単位Headとして新たに選択して、新たに選択した先頭ロボット単位Headに含まれる新たな所定のロボットhに、更新された各ロボットの位置と、更新された集合Upについての情報とを含む先頭ロボット決定命令を送信する第二先頭ロボット決定命令送信部と、を含む、移動ロボットである。
本発明によれば、ロボット単位の初期位置とロボット単位の目標位置の共通部分に非接続箇所がある場合でも移動することができる。
以下、本発明の実施形態について説明する。なお、以下の説明に用いる図面では、同じ機能を持つ構成部や同じ処理を行うステップには同一の符号を記し、重複説明を省略する。
<理論的背景>
まず、移動ロボット及び移動ロボットの制御方法の理論的背景について説明する。
まず、移動ロボット及び移動ロボットの制御方法の理論的背景について説明する。
[問題設定]
多数のロボットが協調して初期位置における隊列形成状態から、各ロボットが接した状態を維持しつつ移動を行い、目標位置での隊列形成を行う任務は、例えば図1に例示するような、互いに接する面同士をスライドさせて移動していくことが可能な立方体型のロボットの使用を想定する。図2に示すように、壁で区切られた部屋(ただし、図中、壁を省略する)においての初期位置から目標位置まで複数のロボットの移動によって実現するものである。
多数のロボットが協調して初期位置における隊列形成状態から、各ロボットが接した状態を維持しつつ移動を行い、目標位置での隊列形成を行う任務は、例えば図1に例示するような、互いに接する面同士をスライドさせて移動していくことが可能な立方体型のロボットの使用を想定する。図2に示すように、壁で区切られた部屋(ただし、図中、壁を省略する)においての初期位置から目標位置まで複数のロボットの移動によって実現するものである。
ロボットについては、例えば図1に示すように、ロボットの周囲縦横高さ方向(以下「上下左右前後方向」ともいう)6マスのうち1つに他のロボットが存在している状態を維持しながら移動をするものとする。この手法では1つのロボット自身が、一台のロボットのサイズ分の距離を移動することで、一回の動作の移動量を正確に測ることができるというメリットがある。また、1つの面を共有する隣り合うロボットとの相対的な位置を計測しあうことで、ロボットの群れ全体の中での各ロボットの位置も容易に知ることができる。このため、ロボットの移動量の誤差によって、隊列が崩れるといった問題を起こしにくい。また、複数のロボットを連結することにより、同時に複数のロボットを移動させていくことが可能である。なお、ロボットは、隣の位置に他のロボットが存在しているか否か、障害物があるか否か、そして、自身が目標位置上にいるかどうかを知ることができるものとする。
任務を行うロボットは、p台(例えば、p≧16=8×2)であり、各ロボットは、隣接するロボットと一面以上を共有しつつ、三次元空間におけるX-Y-Z軸方向に移動可能とする。図1の各立方体は、それぞれのロボットの位置を示すものである。各立方体にはロボットは一台しか存在することができない。それぞれのロボットは、移動しようとする方向に障害物か他のロボットがある場合には、静止をするものと仮定する。なお、ロボットが存在しうる立方体状の空間をマス、又は、格子とも言う。図2において、濃い灰色のマスはロボットが存在する位置を示す。図2(A)のロボットが存在する位置はロボットの初期位置の集合を示し、図2(C)のロボットが存在する位置はロボットの目標位置の集合を示す。図2(B)に示すように、目標位置の集合と初期位置の集合は接している。目標位置の集合で表される領域を目標隊列エリアとも言う。このように、各初期位置及び各目標位置は、それぞれ縦横高さ方向の少なくとも何れかの方向において他の初期位置及び目標位置と隣接し、ロボットの初期位置及び目標位置での隊列形状はそれぞれ一塊の任意の形状である。
[ロボットの座標設定]
それぞれのロボット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はロボット番号を表す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軸をそれぞれ離散化表現した値により各位置を表現する。つまり、部屋(3次元空間)は格子で区切られ、各格子が各位置に対応する。また、各格子において、障害物の「ある/なし」が予め設定されている。
iをロボット番号としたとき、ロボットiの各状態(ロボットの位置と行動)は離散値で表現される。部屋をX,Y,Zの直交座標系からなる3次元空間で表すと、X軸、Y軸、Z軸をそれぞれ離散化表現した値により各位置を表現する。つまり、部屋(3次元空間)は格子で区切られ、各格子が各位置に対応する。また、各格子において、障害物の「ある/なし」が予め設定されている。
[ロボット動作の定義]
行動主体は部屋に配置されている各ロボットとなる。ロボットi(iはロボット番号)の行動aは、静止、縦横高さ方向への1格子分の移動、の計7種類のうちの何れかを取る。例えば、a∈{0,1,2,3,4,5,6}として、
0: 静止
1: 三次元空間内でX軸正方向に1格子だけ移動する
2: 三次元空間内でY軸正方向に1格子だけ移動する
3: 三次元空間内でX軸負方向に1格子だけ移動する
4: 三次元空間内でY軸負方向に1格子だけ移動する
5: 三次元空間内でZ軸正方向に1格子だけ移動する
6: 三次元空間内でZ軸負方向に1格子だけ移動する
とする。
行動主体は部屋に配置されている各ロボットとなる。ロボットi(iはロボット番号)の行動aは、静止、縦横高さ方向への1格子分の移動、の計7種類のうちの何れかを取る。例えば、a∈{0,1,2,3,4,5,6}として、
0: 静止
1: 三次元空間内でX軸正方向に1格子だけ移動する
2: 三次元空間内でY軸正方向に1格子だけ移動する
3: 三次元空間内でX軸負方向に1格子だけ移動する
4: 三次元空間内でY軸負方向に1格子だけ移動する
5: 三次元空間内でZ軸正方向に1格子だけ移動する
6: 三次元空間内でZ軸負方向に1格子だけ移動する
とする。
[探索計算上の問題点]
このような任務環境における状態空間は、ロボット数×3の次元数の状態を持ち、かつ選択可能な行動数は、ロボットの行動(=7通り)のロボット数乗だけ存在する。例えば、ロボット数が50で、部屋の縦横高さ方向の格子数がそれぞれ20であるとすれば状態数は20の150乗個にもなり、探索計算に要する資源の量は膨大なものとなる。さらにロボット数が1台増える毎に、その状態数は8000倍増加していくことになる。本実施形態の[問題設定]の項で説明したように、ロボット同士が接しているという拘束条件を取り入れる場合、ロボットのお互いの移動を考慮したうえで探索計算を行わなければならないために、根本的な計算量の削減は難しく、複数のロボットを使用する場合の大きな問題となっている。
このような任務環境における状態空間は、ロボット数×3の次元数の状態を持ち、かつ選択可能な行動数は、ロボットの行動(=7通り)のロボット数乗だけ存在する。例えば、ロボット数が50で、部屋の縦横高さ方向の格子数がそれぞれ20であるとすれば状態数は20の150乗個にもなり、探索計算に要する資源の量は膨大なものとなる。さらにロボット数が1台増える毎に、その状態数は8000倍増加していくことになる。本実施形態の[問題設定]の項で説明したように、ロボット同士が接しているという拘束条件を取り入れる場合、ロボットのお互いの移動を考慮したうえで探索計算を行わなければならないために、根本的な計算量の削減は難しく、複数のロボットを使用する場合の大きな問題となっている。
[非特許文献2における特徴]
非特許文献2におけるヘテロジニアス隊列制御では、上述の計算負荷の問題を解決するための方策の1つとして、ボイド制御の考え方を導入している。また、[問題設定で述べたような隊列変形の問題を克服するために8マスロボット単位の考え方も導入している。
非特許文献2におけるヘテロジニアス隊列制御では、上述の計算負荷の問題を解決するための方策の1つとして、ボイド制御の考え方を導入している。また、[問題設定で述べたような隊列変形の問題を克服するために8マスロボット単位の考え方も導入している。
まず、ボイド制御について説明する。ここでいうボイドとは、例えば図3に示すように、あるロボットが別の位置に移動した後に、元いた位置にできる空隙のことである。別の言い方をすると、ボイドとは、ロボットの移動する方向と反対の方向に移動する仮想的な存在である。こうした群ロボットの隊列形成問題においては、複数のロボットの動作に着目するがゆえに、その探索計算量が爆発してしまうが、視点を変えて、ボイドの動きに着目すれば、多数のロボットの動作計画の問題を単一のボイドの動作計画として考えることができ、探索計算負荷の軽減に適している。また、初期位置と目標位置が共通部分を持ち、かつ、それらの共通部分が複数の非接続部分に分かれている場合には適用不可能であった。
[ホモジニアス隊列制御]
各ロボット単位jが初期位置の集合S内にて、任意の位置に存在する状態から、各ロボット単位jをそれぞれ目標位置の集合Gのうちの何れかの位置(Xr_ue[j],Yr_ue[j],Zr_ue[j])に配置させるホモジニアスロボット隊列制御の方法について以下説明していく。なお、以下、初期位置の集合Sの集合を初期位置S、目標位置の集合Gを目標位置Gと略記することもある。
各ロボット単位jが初期位置の集合S内にて、任意の位置に存在する状態から、各ロボット単位jをそれぞれ目標位置の集合Gのうちの何れかの位置(Xr_ue[j],Yr_ue[j],Zr_ue[j])に配置させるホモジニアスロボット隊列制御の方法について以下説明していく。なお、以下、初期位置の集合Sの集合を初期位置S、目標位置の集合Gを目標位置Gと略記することもある。
ここで、初期位置の集合S及び目標位置の集合Gは、8マスのロボット単位で構成されているものとする。図4に示す通り、初期位置の集合Sの状態にあるロボット構造を目標位置の集合Gの状態に変形させるには、タネリングと呼ばれる方法をとる。図4に示す動作においては、先頭のロボット単位Headと尾部ロボット単位Tailを結ぶ一連のロボット単位が、いわば蛇のような形で、先頭ロボット単位Headの動作を追従する方式で動作する。なお、他のタンリングを行うロボット、例えば非特許文献1に示すような伸長収縮ロボットを使用した2×2×2のロボット単位を使用したロボット構造においてもこのタネリング動作は同様であり、本発明で示すタネリングの先頭ロボット単位Headと尾部ロボット単位Tailの選択方法は、同様に適用可能である。タネリングを使用した隊列変形は障害物のある環境においても、隊列変形動作を初期位置の集合と目標位置の集合以外の位置を使用せずに実行可能である。
本発明で使用する8マスロボット単位のタネリング動作は、例えば非特許文献2示したボイド制御の方法を使用する。先頭ロボット単位Head内のロボットが目的位置D内に移動する際に先頭ロボット単位Head内に生成される空隙(ボイド)をTailの位置まで移動させ、ロボット構造から外に排出する動作を利用してタネリングを行う。先頭ロボット単位Headと尾部ロボット単位Tailが隣接している場合であっても、ロボット同士の非接続が起こらないための先頭ロボット単位Head内のボイド生成順序が非特許文献2で定義されている。
従来手法においては、先頭ロボット単位Headの選択において、目標位置G内の非充填箇所に隣接するロボット単位の位置であるということ以外に特に制限はなかった。一方、尾部ロボット単位Tailの選択については、初期位置S内のロボットから尾部ロボット単位Tailを取り除いた場合のロボット構造の接続性を維持するための工夫が必要であったが、これについても、初期位置Sと目標位置Gの共通部分が1つであるならば、従来手法で解決がされている。その場合、初期位置S内のロボット単位jがロボット構造から取り払われる際に、ロボット構造が接続性を維持できるかどうかの条件として、以下の式(1)が有用である。
δ(j)>δ(j_n) …(1)
ここで、δ(j)は、ロボット単位jの先頭ロボット単位Headからのロボット構造内でのマンハッタン距離である。そして、j_nは、ロボット単位jに隣接しているロボット単位の番号である。全てのロボット単位j_nに対して式(1)が成立するならば、ロボット単位jをロボット構造から取り払ったとしてもロボット構造の接続性は維持できる。すなわち、式(1)を満たすロボット単位を尾部ロボット単位Tailとして選択すればよい。単純に言えば、常にδが最大のロボット単位を尾部ロボット単位Tailとして選択していれば、問題はない。
ここで、δ(j)は、ロボット単位jの先頭ロボット単位Headからのロボット構造内でのマンハッタン距離である。そして、j_nは、ロボット単位jに隣接しているロボット単位の番号である。全てのロボット単位j_nに対して式(1)が成立するならば、ロボット単位jをロボット構造から取り払ったとしてもロボット構造の接続性は維持できる。すなわち、式(1)を満たすロボット単位を尾部ロボット単位Tailとして選択すればよい。単純に言えば、常にδが最大のロボット単位を尾部ロボット単位Tailとして選択していれば、問題はない。
続いて、本発明での、先頭ロボット単位Headと尾部ロボット単位Tailの選び方について述べる。初期位置と目標位置の共通部分がNcommon個の部分に分かれているとし、それぞれの部分を部分共通位置集合C[1],C[2],C[3],…,C[Ncommon]とする。すなわち、共通位置の集合は互いに隣接していない少なくとも1つの部分共通位置集合から構成されているとして、それらの少なくとも1つの部分共通位置集合をC[1],C[2],C[3],…,C[Ncommon]とする。
まず、先頭ロボット単位Headの選択について注意すべきことは、変形動作中に全体のロボット構造からこれらのNcommon個の部分共通位置集合のうちの何れも、ロボット構造から非接続にならないようにすることである。例えば、初期位置S内のロボットを徐々に目標位置G内に移動させたとするとその分初期位置S内に残るロボット数は少なくなる。この過程で注意を怠ると、初期位置S内のロボットにも目標位置G内のロボットにも共通部分を接続するために使用できるロボットがないという事態が起こり得る。また、先頭ロボット単位Headが目標位置Gより、尾部ロボット単位Tailが初期位置Sより選択されるといっても、初期位置Sと目標位置Gの共通部部分は初期位置Sとしても目標位置Gとしても働きうる。このため、そこへの適切な制御がなければ、先頭ロボット単位Headと尾部ロボット単位Tailの無限選択ループが発生してしまう恐れもある。それらを避けるために、以下の新しいルール(1)から(4)を設ける。
(1) 変形動作中に、先頭ロボット単位Headの目的位置Dを目的位置としたタネリングによって充填されたロボット単位の位置の集合をUpとする。すなわち、そして、集合Upに属している位置にある、ロボット単位のみを任意時刻での先頭ロボット単位Headとして選択可能とする。なお、ルール(1)に対応する処理は、後述する第一先頭ロボット決定命令送信部6によるステップS6の処理の中及び第二先頭ロボット決定命令送信部23によるステップS23の処理の中で行われる。
(2) S-Upに所属している位置にある、ロボット単位(言い換えれば、集合Upに属しない位置にあり初期位置の中に位置するロボット単位)のみを任意時刻での尾部ロボット単位Tailとして選択可能とする。なお、ルール(2)に対応する処理は、後述するボイド発生順序決定部7によるステップS7の処理の中で行われる。
(3) 変形動作開始時点で、集合UpにC[1],C[2],C[3],…,C[Ncommon]のうち、何れか1つ任意のC[i_start]に所属する全てのロボット単位の位置を、集合Upに追加する。なお、ルール(3)に対応する処理は、第一先頭ロボット決定命令送信部6によるステップS6の処理の中で行われる。
(4) 変形動作中に、集合UpがC[i_connected]内のロボット単位の何れかに接した場合、目標位置の集合G内にて、集合Upから接続状態にあるC[i_connected]内のロボット単位の位置を全て集合Upに追加する。C[i_connected]は、変形動作中に、Up内ロボット単位と新たに接した部分共通位置集合である。例えば、後述する図8(G)では、C(2)が、C[i_connected]である。なお、ルール(4)に対応する処理は、後述する集合更新部22によるステップS22の処理の中で行われる。
ルール(1)(2)は、タネリング中に集合Upのみが目標位置Gと初期位置Sの唯一の接続部分であるかのような制御を行い、それによって式(1)式が適用可能な状態を変形動作中に作り出すものである。ルール(3)は隊列変形動作開始時の先頭ロボット単位Headの選択肢を確保するものである。ルール(4)は、C[i_start]と他の部分共通位置集合が目標位置Gを経由して接続されて、1つの接続部分として扱えるようになった際に、先頭ロボット単位Headの選択肢として、接続された部分共通位置集合を集合Upに追加するものである。
ルール(1)から(4)により、ロボット単位の初期位置とロボット単位の目標位置の共通部分に非接続箇所がある場合でも適用可能な隊列制御を実現することができる。
以上に述べたタネリング動作を、全ての初期位置S内のロボット単位jが目標位置Gにたどり着くまで繰り返し行えば、ホモジニアス隊列制御が完了する。
以上の方法を、分散制御方式でのアルゴリズムで実現する移動ロボット及び移動ロボットの制御方法の一実施形態について以下説明する。
<実施形態>
各移動ロボットは、図5に示すように、位置距離計算命令送信部1、位置距離計算命令転送部2、返信位置距離計算命令送信部3、方向記憶部4、返信位置距離計算命令転送部5、第一先頭ロボット決定命令送信部6、ボイド発生順序決定部7、ボイド発生命令転送部8、押命令送信部9、返信押命令送信部10、返信押命令転送部11、ボイド操作命令送信部12、第一移動部13、ボイド操作命令転送部14、移動命令送信部15、返信移動命令送信部16、第二移動部17、引命令送信部18、返信引命令送信部19、第三移動部20、制御部21、集合更新部22及び第二先頭ロボット決定命令送信部23を例えば備えている。
各移動ロボットは、図5に示すように、位置距離計算命令送信部1、位置距離計算命令転送部2、返信位置距離計算命令送信部3、方向記憶部4、返信位置距離計算命令転送部5、第一先頭ロボット決定命令送信部6、ボイド発生順序決定部7、ボイド発生命令転送部8、押命令送信部9、返信押命令送信部10、返信押命令転送部11、ボイド操作命令送信部12、第一移動部13、ボイド操作命令転送部14、移動命令送信部15、返信移動命令送信部16、第二移動部17、引命令送信部18、返信引命令送信部19、第三移動部20、制御部21、集合更新部22及び第二先頭ロボット決定命令送信部23を例えば備えている。
移動ロボットの制御方法は、移動ロボットの各部が、例えば図6及び以下に説明するステップS1からステップS23の処理を行うことにより実現される。
ステップS1からステップS6の処理は、初期位置Sの隊列構造を把握するための処理である。ステップS7からステップS23の処理は、タネリング動作をするための処理である。
以下では、ロボット単位における所定の位置のロボットをcenterロボットとする。例えば、ロボット単位におけるX,Y,Z位置座標が全て偶数のものをcenterロボットとする。
まず、所定のroot位置にあるロボットi_rootにユーザーから変形開始命令が送信される。所定のroot位置は、例えば所定のロボット単位に含まれるcenterロボットの位置である。変形開始命令には、各ロボットの目標位置Gについての情報である隊列形態情報が含まれるとする。
[位置距離計算命令送信部1]
変形開始命令を受信したロボットが所定のroot位置にあるロボットi_rootである場合には、位置距離計算命令送信部1は、それぞれ所定の初期値に設定された、所定のroot位置からの相対位置と送信転送回数とを含む位置距離計算命令を隣接するロボットに送信する(ステップS1)。
変形開始命令を受信したロボットが所定のroot位置にあるロボットi_rootである場合には、位置距離計算命令送信部1は、それぞれ所定の初期値に設定された、所定のroot位置からの相対位置と送信転送回数とを含む位置距離計算命令を隣接するロボットに送信する(ステップS1)。
以下、位置距離計算命令を位置距離計算命令MANHATTAN_COM、相対位置を相対位置(Xr,Yr,Zr)、送信転送回数を送信転送回数N_manhattanと表記する場合もある。
例えば、相対位置(Xr,Yr,Zr)の初期値は(0,0,0)であり、送信転送回数N_manhattanの初期値は0である。
[位置距離計算命令転送部2]
ロボットが、位置距離計算命令を受信した場合に、位置距離計算命令転送部2は、位置距離計算命令に含まれる送信転送回数をインクリメントし、位置距離計算命令を受信した方向に応じて位置距離計算命令に含まれる相対位置を更新し、インクリメントした送信転送回数及び更新した相対位置を含む位置距離計算命令を、位置距離計算命令を送信してきたロボット以外の、隣接するロボットに一度だけ転送する(ステップS2)。
ロボットが、位置距離計算命令を受信した場合に、位置距離計算命令転送部2は、位置距離計算命令に含まれる送信転送回数をインクリメントし、位置距離計算命令を受信した方向に応じて位置距離計算命令に含まれる相対位置を更新し、インクリメントした送信転送回数及び更新した相対位置を含む位置距離計算命令を、位置距離計算命令を送信してきたロボット以外の、隣接するロボットに一度だけ転送する(ステップS2)。
例えば、位置距離計算命令をX方向に正の向きの通信で受信した場合には、言い換えれば位置距離計算命令をX方向に負の向きで接するロボットから受信した場合には、位置距離計算命令に含まれる相対位置(Xr,Yr,Zr)のXrを1だけインクリメントする。また、例えば、位置距離計算命令をX方向に負の向きの通信で受信した場合には、言い換えれば位置距離計算命令をX方向に正の向きで接するロボットから受信した場合には、位置距離計算命令に含まれる相対位置(Xr,Yr,Zr)のXrを1だけデクリメントする。
なお、位置距離計算命令転送部2は、位置距離計算命令MANHATTAN_COMを自分に送信してきたロボットには転送をしない。これにより、位置距離計算命令MANHATTAN_COMが、ロボット構造内で何度も無限に送受信されることを防ぐことができる。
[返信位置距離計算命令送信部3]
ロボットが、位置距離計算命令を最初に受信した場合に、返信位置距離計算命令送信部3は、位置距離計算命令を送信してきたロボットに、インクリメントした送信転送回数及び更新した相対位置を含む返信位置距離計算命令を送信する(ステップS3)。
ロボットが、位置距離計算命令を最初に受信した場合に、返信位置距離計算命令送信部3は、位置距離計算命令を送信してきたロボットに、インクリメントした送信転送回数及び更新した相対位置を含む返信位置距離計算命令を送信する(ステップS3)。
以下、返信位置距離計算命令を返信位置距離計算命令RETURN_MANHATTAN_COMと表記する場合もある。
最初に位置距離計算命令MANHATTAN_COMを受信した際の送信転送回数N_manhattanの値が、このロボットのロボットi_rootからのマンハッタン距離となる。
[方向記憶部4]
ロボットが、位置距離計算命令を最初に受信した場合に、方向記憶部4は、位置距離計算命令を送信してきたロボットの方向をroot方向として記憶する(ステップS4)。
ロボットが、位置距離計算命令を最初に受信した場合に、方向記憶部4は、位置距離計算命令を送信してきたロボットの方向をroot方向として記憶する(ステップS4)。
以後、各ロボットは、何か情報をロボットi_rootに対して送るときは、各自rootの方向に送信する。
[返信位置距離計算命令転送部5]
ロボットが、返信位置距離計算命令を受信した場合に、返信位置距離計算命令転送部5は、方向記憶部4から読み込んだroot方向に受信した返信位置距離計算命令を転送する(ステップS5)。
ロボットが、返信位置距離計算命令を受信した場合に、返信位置距離計算命令転送部5は、方向記憶部4から読み込んだroot方向に受信した返信位置距離計算命令を転送する(ステップS5)。
各返信位置距離計算命令を受信した各ロボットがステップS5の処理を行うことにより、各返信位置距離計算命令は最終的にロボットi_rootに到達する。
[第一先頭ロボット決定命令送信部6]
全てのロボットが送信した返信位置距離計算命令をロボットi_rootが、受信し終えた場合には、第一先頭ロボット決定命令送信部6は、初期位置、目標位置及び返信位置距離計算命令に含まれる相対位置に基づく各ロボットの位置に基づいて、ある1つの部分共通位置集合を集合Upとして選択し、集合Upに属する位置にあり目標位置の中のロボット単位が存在していない位置(以下、目的位置Dとする。)に隣接するロボット単位を先頭ロボット単位Headとして選択し、選択した先頭ロボット単位Headに含まれる所定のロボットhに、各ロボットの位置と、集合Upについての情報とを含む先頭ロボット決定命令を送信する(ステップS6)。
全てのロボットが送信した返信位置距離計算命令をロボットi_rootが、受信し終えた場合には、第一先頭ロボット決定命令送信部6は、初期位置、目標位置及び返信位置距離計算命令に含まれる相対位置に基づく各ロボットの位置に基づいて、ある1つの部分共通位置集合を集合Upとして選択し、集合Upに属する位置にあり目標位置の中のロボット単位が存在していない位置(以下、目的位置Dとする。)に隣接するロボット単位を先頭ロボット単位Headとして選択し、選択した先頭ロボット単位Headに含まれる所定のロボットhに、各ロボットの位置と、集合Upについての情報とを含む先頭ロボット決定命令を送信する(ステップS6)。
所定のロボットhは、例えば選択した先頭ロボット単位Headにおけるロボットcenterである。
第一先頭ロボット決定命令送信部6は、集合Upとして、どの部分共通位置集合C[1],C[2],C[3],…,C[Ncommon]を選択してもよい。例えば、第一先頭ロボット決定命令送信部6は、1からNcommonのうち何れか1つの値をi_startとし、部分共通位置集合C[i_start]に属する全ての位置を集合Upとして選択することで集合Upを初期化する。
以下、第一先頭ロボット決定を先頭ロボット決定命令HEAD_DECISION_COMと表記する場合もある。
このようにして、ロボットi_rootは、各ロボットからの返信位置距離計算命令RETURN_MANHATTAN_COMを受信して、現状の初期位置Sの隊列構造を把握する。そして、ロボットi_rootは、集合Upの初期化を行い最初の先頭ロボット単位Headを決定し、先頭ロボット決定命令HEAD_DECISION_COMを最初の先頭ロボット単位Head内のロボットhへ送信する。
[ボイド発生順序決定部7]
ロボットhが、先頭ロボット決定命令を受信した場合には、ボイド発生順序決定部7は、各ロボットの位置と、集合Upについての情報とに基づいて、目的位置Dと、集合Upに属しない位置にあり初期位置の中に位置するロボット単位であり、移動させてもロボット構造の接続性を維持することができるロボット単位である尾部ロボット単位Tailと、先頭ロボット単位Headから尾部ロボット単位Tailまでのパスと、先頭ロボット単位Head内のロボットのボイド発生順序とを決定する(ステップS7)。
ロボットhが、先頭ロボット決定命令を受信した場合には、ボイド発生順序決定部7は、各ロボットの位置と、集合Upについての情報とに基づいて、目的位置Dと、集合Upに属しない位置にあり初期位置の中に位置するロボット単位であり、移動させてもロボット構造の接続性を維持することができるロボット単位である尾部ロボット単位Tailと、先頭ロボット単位Headから尾部ロボット単位Tailまでのパスと、先頭ロボット単位Head内のロボットのボイド発生順序とを決定する(ステップS7)。
ここで、各ロボット単位が他のロボット単位と隣接することによりロボット単位が一塊のロボット構造を形成していることをロボット構造の接続性と言うこととする。
例えば、ボイド発生順序決定部7は、初期位置S内でかつ集合Upでない位置にあって、式(1)を満たす任意のロボット単位を選択し、尾部ロボット単位Tailとする。
ロボットhは、例えば非特許文献2に示す方法で、先頭ロボット単位Headの方向である方向ahと尾部ロボット単位Tailの移動方向である方向atに応じて、先頭ロボット単位Head内のボイド発生順序を決定する。
[ボイド発生命令転送部8]
ロボット単位Headの位置内もしくはDの位置内にあるロボットが、ボイド発生命令を受信した場合に、ボイド発生命令転送部8は、ボイド発生命令を、ボイドを発生させる位置にあるロボットv1に届くまで隣接するロボットに転送する(ステップS8)。
ロボット単位Headの位置内もしくはDの位置内にあるロボットが、ボイド発生命令を受信した場合に、ボイド発生命令転送部8は、ボイド発生命令を、ボイドを発生させる位置にあるロボットv1に届くまで隣接するロボットに転送する(ステップS8)。
以下、ボイド発生命令をボイド発生命令VOID_GENERATE_COMと表記する場合もある。
例えば、ボイド発生命令VOID_GENERATE_COMは、図7(A)に示すように、先頭ロボット単位Head内を一筆書きのようなルートで転送される。ボイド発生命令VOID_GENERATE_COMは、その転送ルート中にある最初のボイド位置にあるロボットv1にたどり着くまで転送は続く。図7(A)では、ボイド発生命令VOID_GENERATE_COMは、4が付されたロボット、0が付されたロボット、7が付されたロボット、3が付されたロボット、2が付されたロボット、5が付されたロボット、6が付されたロボット、1が付されたロボットの順序で転送される。なお、ここでは一つ目のボイド発生の例を述べたが、二つ目以降のボイド発生の場合、ボイド制御によって、ロボットhが、当初の位置から移動している場合がある。その場合は、ロボットhは自身の移動量を記憶しておき、その移動の記憶に基づき、ボイド発生命令を、最初に、図7(A)でいうところの4が付されたロボットまで転送させるようにする。
[押命令送信部9]
ロボットv1が、ボイド発生命令を受信した場合に、押命令送信部9は、ah方向に隣接するロボットに押命令を送信する(ステップS9)。
ロボットv1が、ボイド発生命令を受信した場合に、押命令送信部9は、ah方向に隣接するロボットに押命令を送信する(ステップS9)。
ah方向は、先頭ロボット単位Headの方向、言い換えれば先頭ロボット単位Headの移動方向である。図7の例では、図7の紙面の右方向がah方向である。
以下、押命令を押命令PUSH_REQUESTと表記する場合もある。
[返信押命令送信部10]
押命令を受信した場合であってah方向に隣接するロボットがある場合には、返信押命令送信部10は、ah方向に隣接するロボットに押命令を転送し、押命令を受信した場合であってah方向に隣接するロボットがない場合には、ah方向の反対方向に隣接するロボットに返信押命令を送信する(ステップS10)。
押命令を受信した場合であってah方向に隣接するロボットがある場合には、返信押命令送信部10は、ah方向に隣接するロボットに押命令を転送し、押命令を受信した場合であってah方向に隣接するロボットがない場合には、ah方向の反対方向に隣接するロボットに返信押命令を送信する(ステップS10)。
各ロボットがステップS10の処理を行うことにより、ah方向に隣接するロボットがないロボットに届くまで押命令が転送され、そのah方向に隣接するロボットがないロボットから返信押命令が送信される。
なお、隣接するロボットとの機械的接続を解除しなければ、独立して移動することができない場合や、ロボットのハード設計面で押命令を送信したロボットと同時の動作を実現するのが難しい場合には、押命令PUSH_REQUESTを受信したロボットは、ah方向に接しているロボット以外との機械的接続を解除する。
以下、返信押命令を返信押命令RETURN_PULL_REQUESTと表記する場合もある。
[返信押命令転送部11]
ロボットが、返信押命令を受信した場合には、返信押命令転送部11は、ロボットv1に届くまでah方向の反対方向に隣接するロボットに返信押命令を転送する(ステップS11)。
ロボットが、返信押命令を受信した場合には、返信押命令転送部11は、ロボットv1に届くまでah方向の反対方向に隣接するロボットに返信押命令を転送する(ステップS11)。
[ボイド操作命令送信部12]
ロボットv1が、返信押命令を受信した場合には、ボイド操作命令送信部12は、尾部ロボット単位Tailがタネリング動作する方向をat方向として、パス上にありv1に隣接するロボットにボイド操作命令を送信する(ステップS12)。
ロボットv1が、返信押命令を受信した場合には、ボイド操作命令送信部12は、尾部ロボット単位Tailがタネリング動作する方向をat方向として、パス上にありv1に隣接するロボットにボイド操作命令を送信する(ステップS12)。
図7の例では、図7の紙面の上方向がat方向である。
以下、ボイド操作命令をボイド操作命令VOID_NAVIGATE_COMと表記する場合もある。
ボイド操作命令VOID_NAVIGATE_COMには、先頭ロボット単位Headから尾部ロボット単位Tailまでのパスの情報が含まれているとする。ここでパスの情報とは、ボイドがたどっていくパスに含まれるロボット位置の列である。例えば、各ロボット位置をp[ip](ip=1,2,3,4...)とし、p[0]にはロボットv1の位置が含まれる。ロボットv1がボイド操作命令を送信するのは、p[1]に記憶されたロボットの位置である。
[第一移動部13]
ロボットv1が、返信押命令を受信した場合であって、ボイド操作命令を送信した後に、第一移動部13は、ロボットv1をah方向に移動させる(ステップS13)。
ロボットv1が、返信押命令を受信した場合であって、ボイド操作命令を送信した後に、第一移動部13は、ロボットv1をah方向に移動させる(ステップS13)。
ロボットv1のah方向への移動は、一ステップだけ行われる。言い換えれば、ロボットv1のah方向への移動は、1個のロボットの大きさの分だけ行われる。この際、ロボットv1は、ロボットv1にah方向に隣接しているロボットを押すことにより、このロボットv1にah方向に隣接しているロボットと共に移動する。
例えば、第一移動部13の処理により、図5(B)に示すように、ロボットv1がah方向に移動する。この結果、ロボットv1があった位置にボイドが発生する。なお、図5(B)において、破線で示された位置は目的位置Dを表し、縦線で示された立方体は先頭ロボット単位Headを表し、斜線で示された立方体は尾部ロボット単位Tailを表し、ドットで示された立方体は先頭ロボット単位Head及び尾部ロボット単位Tail以外のロボット単位を表す。また、白で示された立方体は、一回のステップS7からステップS20の処理で移動するロボット単位の例を表す。
[ボイド操作命令転送部14]
パス内p[i]の位置にあるロボットが、ボイド操作命令を受信した場合には、ボイド操作命令転送部14は、パス上にありパス内p[i+1]の位置にあるロボットがにボイド操作命令を転送する(ステップS14)。
パス内p[i]の位置にあるロボットが、ボイド操作命令を受信した場合には、ボイド操作命令転送部14は、パス上にありパス内p[i+1]の位置にあるロボットがにボイド操作命令を転送する(ステップS14)。
各ロボットがステップS14の処理を行うことにより、ボイド操作命令VOID_NAVIGATE_COMは、上記尾部ロボット単位Tailの1個手前のロボット単位T'に含まれるロボットに届くまで転送される。
[移動命令送信部15]
パス内p[i]の位置にあるロボットが、ボイド操作命令を受信した場合であってボイド操作命令の送信転送回数が所定の回数である場合には、移動命令送信部15は、ボイド操作命令を送信してきたロボットに移動命令を送信する(ステップS15)。
パス内p[i]の位置にあるロボットが、ボイド操作命令を受信した場合であってボイド操作命令の送信転送回数が所定の回数である場合には、移動命令送信部15は、ボイド操作命令を送信してきたロボットに移動命令を送信する(ステップS15)。
所定の回数とは、例えばここで扱っている8マスロボット単位の場合偶数回数である。(この場合、iは奇数である。)。
以下、移動命令を移動命令PUSH_ONE_REQUESTと表記する場合もある。
[返信移動命令送信部16]
ロボットが移動命令を受信した場合には、返信移動命令送信部16は、移動命令を送信してきたロボットに返信移動命令を送信する(ステップS16)。
ロボットが移動命令を受信した場合には、返信移動命令送信部16は、移動命令を送信してきたロボットに返信移動命令を送信する(ステップS16)。
以下、返信移動命令を返信移動命令RETURN_PUSH_ONE_REQUESTと表記する場合もある。
なお、隣接するロボットとの機械的接続を解除しなければ、独立して移動することができない場合や、ロボットのハード設計面でボイド操作命令を送信したロボットと同時の動作を実現するのが難しい場合には、移動命令PUSH_ONE_REQUESTを受信したロボットは、移動命令PUSH_ONE_REQUESTを送信してきたロボット以外との機械的接続を解除してから、返信移動命令RETURN_PUSH_ONE_REQUESTを送信する。
[第二移動部17]
ロボットが返信移動命令を受信した場合には、第二移動部17は、ボイド操作命令を送信してきたロボットと共に、ロボット自身を、ロボット自身から見てボイド操作命令を送信してきたロボットがある方向に移動させる(ステップS17)。
ロボットが返信移動命令を受信した場合には、第二移動部17は、ボイド操作命令を送信してきたロボットと共に、ロボット自身を、ロボット自身から見てボイド操作命令を送信してきたロボットがある方向に移動させる(ステップS17)。
言い換えれば、返信移動命令RETURN_PUSH_ONE_REQUESTを受信したロボットは、ボイド操作命令VOID_NAVIGATE_COMを自身に送信してきたロボットを1ステップ押しながら移動する。
[引命令送信部18]
タネリング動作において尾部ロボット単位Tailの1個手前のロボット単位T'に含まれかつ、ロボット単位内位置がロボットv1のそれと同じであるロボットが、ボイド操作命令を受信した場合には、引命令送信部18は、上記at方向の反対方向に隣接するロボットに引命令を送信する(ステップS18)。
タネリング動作において尾部ロボット単位Tailの1個手前のロボット単位T'に含まれかつ、ロボット単位内位置がロボットv1のそれと同じであるロボットが、ボイド操作命令を受信した場合には、引命令送信部18は、上記at方向の反対方向に隣接するロボットに引命令を送信する(ステップS18)。
以下、引命令を引命令PULL_REQUESTと表記する場合もある。
尾部ロボット単位Tailの1個手前のロボット単位T'に含まれるロボットであり、ボイド操作命令を受信した場合であって、ボイド操作命令の送信転送回数が所定の回数(たとえば、8マス単位の場合は偶数)である場合には、ステップS18の処理が行われた後に、ステップS15からステップS17の処理が行われるとする。
すなわち、この場合、このロボットは、at方向に隣接するロボットに引命令PULL_REQUESTを送信した後に(ステップS18)、命令VOID_NAVIGATE_COMを自身に送信してきたロボットに移動命令PUSH_ONE_REQUESTを送信し(ステップS15)、ステップS16及びステップS17の処理により押し動作を行う。
[返信引命令送信部19]
ロボットが引命令を受信した場合であって尾部ロボット単位Tail内にat方向の反対方向に隣接するロボットがある場合には、返信引命令送信部19は、at方向の反対方向に隣接するロボットに引命令を転送し、ロボットが引命令を受信した場合であって尾部ロボット単位Tail内にat方向の反対方向に隣接するロボットがない場合には、at方向に隣接するロボットに返信引命令を送信する(ステップS19)。
ロボットが引命令を受信した場合であって尾部ロボット単位Tail内にat方向の反対方向に隣接するロボットがある場合には、返信引命令送信部19は、at方向の反対方向に隣接するロボットに引命令を転送し、ロボットが引命令を受信した場合であって尾部ロボット単位Tail内にat方向の反対方向に隣接するロボットがない場合には、at方向に隣接するロボットに返信引命令を送信する(ステップS19)。
以下、返信引命令を返信引命令RETURN_PULL_REQUESTと表記する場合もある。
なお、隣接するロボットとの機械的接続を解除しなければ、独立して移動することができない場合や、ロボットのハード設計面で返信引命令を送信したロボットと同時の動作を実現するのが難しい場合には、引命令PULL_REQUESTを受信したロボットは、引命令PULL_REQUESTを送信してきたロボット以外との機械的接続を解除してから、引命令PULL_REQUESTの転送又は返信引命令RETURN_PULL_REQUESTの送信を行う。
[第三移動部20]
返信引命令を受信した場合には、第三移動部20は、返信引命令を送信してきたロボットと共にat方向にロボットを移動させる(ステップS20)。
返信引命令を受信した場合には、第三移動部20は、返信引命令を送信してきたロボットと共にat方向にロボットを移動させる(ステップS20)。
白で示された立方体は、一回のステップS7からステップS20の処理で移動するロボットの例を表す。
[制御部21]
ロボットhの制御部21は、先頭ロボット単位Headに含まれる全てのロボットが、目的位置Dに移動するまで、ボイド発生順序決定部7、ボイド発生命令転送部8、押命令送信部9、返信押命令送信部10、返信押命令転送部11、ボイド操作命令送信部12、第一移動部13、ボイド操作命令転送部14、移動命令送信部15、返信移動命令送信部16、第二移動部17、引命令送信部18、返信引命令送信部19及び第三移動部20の処理を繰り返すように制御を行う(ステップS21)。
ロボットhの制御部21は、先頭ロボット単位Headに含まれる全てのロボットが、目的位置Dに移動するまで、ボイド発生順序決定部7、ボイド発生命令転送部8、押命令送信部9、返信押命令送信部10、返信押命令転送部11、ボイド操作命令送信部12、第一移動部13、ボイド操作命令転送部14、移動命令送信部15、返信移動命令送信部16、第二移動部17、引命令送信部18、返信引命令送信部19及び第三移動部20の処理を繰り返すように制御を行う(ステップS21)。
例えば、ロボットhが最初のボイド発生命令VOID_GENERATE_COMを送信してから、一定時間経った後(例えば先頭ロボット単位Head内ボイドが消えた後)、2つ目のボイド発生命令VOID_GENERATE_COMを送信する。同様に、ボイド発生命令VOID_GENERATE_COMは先頭ロボット単位Head内を転送され、2つ目のボイド発生位置にあるロボットがそれを受信したら、最初のボイドと同様にボイド制御を行う。このようにして、8つのボイドが生成されて、先頭ロボット単位Headのロボットが目的位置Dに移動するまで、ステップS7からステップS20の処理が繰り返し行われる。
[集合更新部22]
ロボットhの集合更新部22は、目的位置Dを集合Upに追加した後に、集合Upに接していて、集合Upの中ではなく目標位置の中に位置するロボット単位がある場合には、そのロボット単位の位置と、そのロボット単位から目標位置のみを経由して接続状態にあるロボット単位の位置とを集合Upに追加することにより集合Upを更新する(ステップS22)。
ロボットhの集合更新部22は、目的位置Dを集合Upに追加した後に、集合Upに接していて、集合Upの中ではなく目標位置の中に位置するロボット単位がある場合には、そのロボット単位の位置と、そのロボット単位から目標位置のみを経由して接続状態にあるロボット単位の位置とを集合Upに追加することにより集合Upを更新する(ステップS22)。
具体的には、集合更新部22は、目的位置Dを集合Upに追加した後に、集合Upに接していて、集合Upに含まれず、かつ目標位置G内にあるロボット単位jがある場合には、そのロボット単位jの位置と、そのロボット単位jから目標位置G(共通位置を含む。)内のみを経由して接続状態にある全てのロボット単位の位置を集合Upに追加することにより集合Upを更新する。
[第二先頭ロボット決定命令送信部23]
ロボットhの第二先頭ロボット決定命令送信部23は、尾部ロボット単位Tailの位置と、目的位置Dにあるロボットの位置とを更新し、更新された各ロボットの位置に基づいて、集合Upに属する位置にあり目標位置の中のロボット単位が存在していない位置に隣接するロボット単位がある場合にはそのロボット単位を先頭ロボット単位Headとして新たに選択して、新たに選択した先頭ロボット単位Headに含まれる新たな所定のロボットhに、更新された各ロボットの位置と、更新された集合Upについての情報とを含む先頭ロボット決定命令を送信する(ステップS23)。
ロボットhの第二先頭ロボット決定命令送信部23は、尾部ロボット単位Tailの位置と、目的位置Dにあるロボットの位置とを更新し、更新された各ロボットの位置に基づいて、集合Upに属する位置にあり目標位置の中のロボット単位が存在していない位置に隣接するロボット単位がある場合にはそのロボット単位を先頭ロボット単位Headとして新たに選択して、新たに選択した先頭ロボット単位Headに含まれる新たな所定のロボットhに、更新された各ロボットの位置と、更新された集合Upについての情報とを含む先頭ロボット決定命令を送信する(ステップS23)。
その後、ステップS7以降の処理が行われる。
目標位置の中のロボットが存在しない位置がない場合には、第二先頭ロボット決定命令送信部23は処理を終える。
このようにして、目標位置の中のロボットが存在しない位置がなくなるまで、ボイド発生順序決定部7、ボイド発生命令転送部8、押命令送信部9、返信押命令送信部10、返信押命令転送部11、ボイド操作命令送信部12、第一移動部13、ボイド操作命令転送部14、移動命令送信部15、返信移動命令送信部16、第二移動部17、引命令送信部18、返信引命令送信部19、第三移動部20、制御部21、集合更新部22及び第二先頭ロボット決定命令送信部23の処理を繰り返すように制御が行われる。
このような構成により、多数のロボット単位の存在を考慮しつつ、ロボット単位同士が接したままの状態を維持しつつ任意の初期位置における隊列形成状態から、他の任意の目標位置における隊列形成状態へ、初期位置の集合と目標位置の集合の共通部分に非接続がある場合でも障害物のある環境でもホモジニアス隊列制御を行うことができる。また、目標位置の集合から共通位置を除いた部分において非接続箇所がある場合でも隊列制御を行うことができる。
<具体例>
図8を用いて、移動ロボット及び移動ロボットの制御方法処理の具体例について説明する。
図8を用いて、移動ロボット及び移動ロボットの制御方法処理の具体例について説明する。
図8(A)はロボット単位の初期位置を表し、図8(B)はロボット単位の目標位置を表す。図8(A)(B)において、白の立方体及び斜線の立方体はロボット単位の初期位置を表し、ドットの立方体及び斜線の立方体はロボット単位の目標位置を表す。斜線の立方体は、ロボット単位の初期位置と目標位置の共通部分である共通位置を表す。
図8(A)において、共通位置の集合は互いに隣接していない3個の部分共通位置集合C(1),C(2),C(3)から構成されている。図8(A)において、一番上の2個の斜線の立方体の位置がC(1)であり、中央の2個の斜線の立方体の位置がC(2)であり、一番下の2個の斜線の立方体の位置がC(3)である。
第一先頭ロボット決定命令送信部6は、例えば図8(B)に示すように、部分共通位置集合C(1)を集合Upとして選択する。図8(B)から図8(G)において、集合Upに属する位置を太線の点線で表す。
第一先頭ロボット決定命令送信部6及びボイド発生順序決定部7は、例えば図8(B)に示すように、先頭ロボット単位Head、尾部ロボット単位Tail、目的位置Dを選択する。
ボイド発生順序決定部7、ボイド発生命令転送部8、押命令送信部9、返信押命令送信部10、返信押命令転送部11、ボイド操作命令送信部12、第一移動部13、ボイド操作命令転送部14、移動命令送信部15、返信移動命令送信部16、第二移動部17、引命令送信部18、返信引命令送信部19、第三移動部20及び制御部21は、図8(B)の目的位置Dを目的位置として、先頭ロボット単位Headから尾部ロボット単位Tailの一連のロボット単位を移動させる。その結果、ロボット単位の位置は、図8(C)のようになる。
集合更新部22は、図8(B)の目的位置Dを集合Upに追加する。この場合、集合Upに接していて、集合Upの中ではなく目標位置の中に位置するロボット単位は存在しないため、目的位置D以外の位置は集合Upに追加されない。この結果、集合Upに属する位置は、図8(C)のようになる。
目標位置の中のロボットが存在しない位置が残っているため、ステップS23の処理に戻る。
第二先頭ロボット決定命令送信部23は、例えば図8(D)に示すように、先頭ロボット単位Head、尾部ロボット単位Tail、目的位置Dを選択する。
ボイド発生順序決定部7、ボイド発生命令転送部8、押命令送信部9、返信押命令送信部10、返信押命令転送部11、ボイド操作命令送信部12、第一移動部13、ボイド操作命令転送部14、移動命令送信部15、返信移動命令送信部16、第二移動部17、引命令送信部18、返信引命令送信部19、第三移動部20及び制御部21は、図8(D)の目的位置Dを目的位置として、先頭ロボット単位Headから尾部ロボット単位Tailの一連のロボット単位を移動させる。その結果、ロボット単位の位置は、図8(E)のようになる。
集合更新部22は、図8(D)の目的位置Dを集合Upに追加する。この場合、集合Upに接していて、集合Upの中ではなく目標位置の中に位置するロボット単位は存在しないため、目的位置D以外の位置は集合Upに追加されない。この結果、集合Upに属する位置は、図8(E)のようになる。
目標位置の中のロボットが存在しない位置が残っているため、ステップS23の処理に戻る。
第二先頭ロボット決定命令送信部23は、例えば図8(F)に示すように、先頭ロボット単位Head、尾部ロボット単位Tail、目的位置Dを選択する。
ボイド発生順序決定部7、ボイド発生命令転送部8、押命令送信部9、返信押命令送信部10、返信押命令転送部11、ボイド操作命令送信部12、第一移動部13、ボイド操作命令転送部14、移動命令送信部15、返信移動命令送信部16、第二移動部17、引命令送信部18、返信引命令送信部19、第三移動部20及び制御部21は、図8(F)の目的位置Dを目的位置として、先頭ロボット単位Headから尾部ロボット単位Tailの一連のロボット単位を移動させる。その結果、ロボット単位の位置は、図8(G)のようになる。
集合更新部22は、図8(F)の目的位置Dを集合Upに追加する。この場合、集合Upに接していて、集合Upの中ではなく目標位置の中に位置するロボット単位(図8(G)において、cで示した位置にあるロボット単位)が存在する。このため、この場合、集合更新部22は、位置cと、位置cにあるロボット単位から目標位置(共通位置を含む。)のみを経由して接続状態にあるロボット単位の位置(すなわち、位置cを除く、部分共通位置集合C(2)に属する位置)とを集合Upに追加する。この結果、集合Upに属する位置は、図8(G)のようになる。なお、この場合、C[2]が、C[i_connected]となる。このステップS4の処理により、C[i_connected]であるC[2]が、集合Upに追加される。
このような処理を繰り返すことにより、最終的に、図8(H)に示すようにロボット単位を目標位置に移動させることができる。
<変形例等>
上記の実施形態では、ロボット単位としていわゆる8マススライディングキューブを用いたが、27マススライディングキューブ等のの複数のロボットから構成されるロボット単位を用いてもよい。
上記の実施形態では、ロボット単位としていわゆる8マススライディングキューブを用いたが、27マススライディングキューブ等のの複数のロボットから構成されるロボット単位を用いてもよい。
<プログラム及び記録媒体>
移動ロボットの各部における処理をコンピュータによって実現する場合、移動ロボットの各部が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、その各部の処理がコンピュータ上で実現される。
移動ロボットの各部における処理をコンピュータによって実現する場合、移動ロボットの各部が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、その各部の処理がコンピュータ上で実現される。
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
また、各部の処理は、コンピュータ上で所定のプログラムを実行させることにより構成することにしてもよいし、これらの処理の少なくとも一部をハードウェア的に実現することとしてもよい。
その他、この発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
1 位置距離計算命令送信部
2 位置距離計算命令転送部
3 返信位置距離計算命令送信部
4 方向記憶部
5 返信位置距離計算命令転送部
6 第一先頭ロボット決定命令送信部
7 ボイド発生順序決定部
8 ボイド発生命令転送部
9 押命令送信部
10 返信押命令送信部
11 返信押命令転送部
12 ボイド操作命令送信部
13 第一移動部
14 ボイド操作命令転送部
15 移動命令送信部
16 返信移動命令送信部
17 第二移動部
18 引命令送信部
19 返信引命令送信部
20 第三移動部
21 制御部
22 集合更新部
23 第二先頭ロボット決定命令送信部
2 位置距離計算命令転送部
3 返信位置距離計算命令送信部
4 方向記憶部
5 返信位置距離計算命令転送部
6 第一先頭ロボット決定命令送信部
7 ボイド発生順序決定部
8 ボイド発生命令転送部
9 押命令送信部
10 返信押命令送信部
11 返信押命令転送部
12 ボイド操作命令送信部
13 第一移動部
14 ボイド操作命令転送部
15 移動命令送信部
16 返信移動命令送信部
17 第二移動部
18 引命令送信部
19 返信引命令送信部
20 第三移動部
21 制御部
22 集合更新部
23 第二先頭ロボット決定命令送信部
Claims (3)
- 所定の初期位置から所定の目標位置に移動する移動ロボットであって、
上記移動ロボットは複数のロボット単位で構成されているとし、各上記ロボット単位には複数のロボットが含まれているとし、各ロボット単位が他のロボット単位と隣接することにより上記ロボット単位が一塊のロボット構造を形成していることをロボット構造の接続性と言うとし、上記初期位置と上記目標位置の共通部分を共通位置とし、上記共通位置は1つ以上の部分共通位置の集合から構成されているとして、
上記複数のロボットのそれぞれは、
所定のroot位置にあるロボットi_rootである場合には、それぞれ所定の初期値に設定された、上記所定のroot位置からの相対位置と位置距離計算命令の送信転送回数とを含む位置距離計算命令を隣接するロボットに送信する位置距離計算命令送信部と、
上記位置距離計算命令を受信した場合に、上記位置距離計算命令に含まれる送信転送回数をインクリメントし、上記位置距離計算命令を受信した方向に応じて上記位置距離計算命令に含まれる相対位置を更新し、上記インクリメントした送信転送回数及び上記更新した相対位置を含む位置距離計算命令を、上記位置距離計算命令を送信してきたロボット以外の、隣接するロボットに一度だけ転送する位置距離計算命令転送部と、
上記位置距離計算命令を最初に受信した場合に、上記位置距離計算命令を送信してきたロボットに、上記インクリメントした送信転送回数及び上記更新した相対位置を含む返信位置距離計算命令を送信する返信位置距離計算命令送信部と、
上記位置距離計算命令を最初に受信した場合に、上記位置距離計算命令を送信してきたロボットの方向をroot方向として記憶する方向記憶部と、
上記返信位置距離計算命令を受信した場合に、上記方向記憶部から読み込んだroot方向に上記受信した返信位置距離計算命令を転送する返信位置距離計算命令転送部と、
上記ロボットi_rootであり、全てのロボットが送信した返信位置距離計算命令を受信した場合には、上記初期位置、上記目標位置及び上記返信位置距離計算命令に含まれる相対位置に基づく各ロボットの位置に基づいて、ある1つの部分共通位置集合を集合Upとして選択し、上記集合Upに属する位置にあり上記目標位置の中のロボット単位が存在していない位置(以下、目的位置Dとする。)に隣接するロボット単位を先頭ロボット単位Headとして選択し、上記選択した先頭ロボット単位Headに含まれる所定のロボットhに、上記各ロボットの位置と、上記集合Upについての情報とを含む先頭ロボット決定命令を送信する第一先頭ロボット決定命令送信部と、
上記ロボットhであり、上記先頭ロボット決定命令を受信した場合には、上記各ロボットの位置と、上記集合Upについての情報とに基づいて、上記目的位置Dと、上記集合Upに属しない位置にあり上記初期位置の中に位置するロボット単位であり、移動させても上記ロボット構造の接続性を維持することができるロボット単位である尾部ロボット単位Tailと、上記先頭ロボット単位Headから上記尾部ロボット単位Tailまでのパスと、上記先頭ロボット単位Head内のロボットのボイド発生順序とを決定するボイド発生順序決定部と、
上記ロボットhである場合には、上記先頭ロボット単位Head内の上記決定されたボイド発生順序に基づく位置のロボットv1宛てのボイド発生命令を隣接するロボット単位に送信するボイド発生命令送信部と、
上記ボイド発生命令を受信した場合に、上記ボイド発生命令を、上記ロボットv1に届くまで隣接するロボットに転送するボイド発生命令転送部と、
上記ロボットv1であり、上記ボイド発生命令を受信した場合に、上記先頭ロボット単位Headの動く方向をah方向として、上記ah方向に隣接するロボットに押命令を送信する押命令送信部と、
上記押命令を受信した場合であって上記ah方向に隣接するロボットがある場合には、上記ah方向に隣接するロボットに上記押命令を転送し、上記押命令を受信した場合であって上記ah方向に隣接するロボットがない場合には、上記ah方向の反対方向に隣接するロボットに返信押命令を送信する返信押命令送信部と、
上記返信押命令を受信した場合には、上記ロボットv1に届くまで上記ah方向の反対方向に隣接するロボットに返信押命令を転送する返信押命令転送部と、
上記ロボットv1であり、上記返信押命令を受信した場合には、上記パス上にあり上記ロボットv1に隣接するロボットにボイド操作命令を送信するボイド操作命令送信部と、
上記ロボットv1であり、上記返信押命令を受信した場合であって、上記ボイド操作命令を送信した後に、上記ah方向に上記ロボットv1を移動させる第一移動部と、
上記ボイド操作命令を受信した場合には、上記パス上にあり、パス内の自身より一マス分上記尾部ロボット単位Tail近づく方向にあるロボットに上記ボイド操作命令を転送するボイド操作命令転送部と、
上記ボイド操作命令を受信した場合であって上記ボイド操作命令の送信転送回数が所定の回数である場合には、上記ボイド操作命令を送信してきたロボットに移動命令を送信する移動命令送信部と、
上記移動命令を受信した場合には、上記移動命令を送信してきたロボットに返信移動命令を送信する返信移動命令送信部と、
上記返信移動命令を受信した場合には、上記ボイド操作命令を送信してきたロボットと共にロボットを上記ボイド操作命令を送信してきたロボットのある方向に移動させる第二移動部と、
上記先頭ロボット単位Tailの動く方向をat方向として、上記尾部ロボット単位Tailの1個手前のロボット単位T'に含まれて、ロボットv1のロボット単位内位置と同じT'内位置にあるロボットであり、上記ボイド操作命令を受信した場合には、上記at方向の反対方向に隣接するロボットに引命令を送信する引命令送信部と、
上記引命令を受信した場合であって上記尾部ロボット単位Tail内に上記at方向の反対方向に隣接するロボットがある場合には、上記at方向の反対方向に隣接するロボットに上記引命令を転送し、上記引命令を受信した場合であって上記尾部ロボット単位Tail内に上記at方向の反対方向に隣接するロボットがない場合には、上記at方向に隣接するロボットに返信引命令を送信する返信引命令送信部と、
上記返信引命令を受信した場合には、上記返信引命令を送信してきたロボットと共に上記at方向にロボットを移動させる第三移動部と、
上記ロボットhである場合には、上記先頭ロボット単位Headに含まれる全てのロボットが、上記目的位置Dに移動するまで、上記ボイド発生順序決定部、上記ボイド発生命令転送部、上記押命令送信部、上記返信押命令送信部、上記返信押命令転送部、上記ボイド操作命令送信部、上記第一移動部、上記ボイド操作命令転送部、上記移動命令送信部、上記返信移動命令送信部、上記第二移動部、上記引命令送信部、上記返信引命令送信部、上記第三移動部の処理を繰り返すように制御を行う制御部と、
上記ロボットhである場合には、上記目的位置Dを上記集合Upに追加した後に、上記集合Upに接していて、上記集合Upの中ではなく上記目標位置の中に位置するロボット単位がある場合には、そのロボット単位の位置と、そのロボット単位から上記目標位置のみを経由して接続状態にあるロボット単位の位置とを上記集合Upに追加することにより上記集合Upを更新する集合更新部と、
上記ロボットhである場合には、上記尾部ロボット単位Tailの位置と、上記目的位置Dにあるロボットの位置とを更新し、更新された各ロボットの位置に基づいて、上記集合Upに属する位置にあり上記目標位置の中のロボット単位が存在していない位置に隣接するロボット単位がある場合にはそのロボット単位を先頭ロボット単位Headとして新たに選択して、上記新たに選択した先頭ロボット単位Headに含まれる新たな所定のロボットhに、上記更新された各ロボットの位置と、上記更新された集合Upについての情報とを含む先頭ロボット決定命令を送信する第二先頭ロボット決定命令送信部と、
を含む、
移動ロボット。 - 所定の初期位置から所定の目標位置に移動する移動ロボットの制御方法であって、
上記移動ロボットは複数のロボット単位で構成されているとし、各上記ロボット単位には複数のロボットが含まれているとし、各ロボット単位が他のロボット単位と隣接することにより上記ロボット単位が一塊のロボット構造を形成していることをロボット構造の接続性と言うとし、上記初期位置と上記目標位置の共通部分を共通位置とし、上記共通位置は1つ以上の部分共通位置の集合から構成されているとして、
所定のroot位置にあるロボットi_rootの位置距離計算命令送信部が、それぞれ所定の初期値に設定された、上記所定のroot位置からの相対位置と位置距離計算命令の送信転送回数とを含む位置距離計算命令を隣接するロボットに送信する位置距離計算命令送信ステップと、
上記位置距離計算命令を受信したロボットの位置距離計算命令転送部が、上記位置距離計算命令に含まれる送信転送回数をインクリメントし、上記位置距離計算命令を受信した方向に応じて上記位置距離計算命令に含まれる相対位置を更新し、上記インクリメントした送信転送回数及び上記更新した相対位置を含む位置距離計算命令を、上記位置距離計算命令を送信してきたロボット以外の、隣接するロボットに一度だけ転送する位置距離計算命令転送ステップと、
上記位置距離計算命令を最初に受信したロボットの返信位置距離計算命令送信部が、上記位置距離計算命令を送信してきたロボットに、上記インクリメントした送信転送回数及び上記更新した相対位置を含む返信位置距離計算命令を送信する返信位置距離計算命令送信ステップと、
上記位置距離計算命令を最初に受信したロボットの方向記憶部が、上記位置距離計算命令を送信してきたロボットの方向をroot方向として記憶する方向記憶ステップと、
上記返信位置距離計算命令を受信したロボットの返信位置距離計算命令転送部が、上記方向記憶部から読み込んだroot方向に上記受信した返信位置距離計算命令を転送する返信位置距離計算命令転送ステップと、
上記返信位置距離計算命令を受信したロボットi_rootの第一先頭ロボット決定命令送信部が、上記初期位置、上記目標位置及び上記返信位置距離計算命令に含まれる相対位置に基づく各ロボットの位置に基づいて、ある1つの部分共通位置集合を集合Upとして選択し、上記集合Upに属する位置にあり上記目標位置の中のロボット単位が存在していない位置(以下、目的位置Dとする。)に隣接するロボット単位を先頭ロボット単位Headとして選択し、上記選択した先頭ロボット単位Headに含まれる所定のロボットhに、上記各ロボットの位置と、上記集合Upについての情報とを含む先頭ロボット決定命令を送信する第一先頭ロボット決定命令送信ステップと、
上記先頭ロボット決定命令を受信したロボットhのボイド発生順序決定部が、上記各ロボットの位置と、上記集合Upについての情報とに基づいて、上記目的位置Dと、上記集合Upに属しない位置にあり上記初期位置の中に位置するロボット単位であり、移動させても上記ロボット構造の接続性を維持することができるロボット単位である尾部ロボット単位Tailと、上記先頭ロボット単位Headから上記尾部ロボット単位Tailまでのパスと、上記先頭ロボット単位Head内のロボットのボイド発生順序とを決定するボイド発生順序決定ステップと、
上記ボイド発生命令を受信したロボットhのボイド発生命令送信部が、上記先頭ロボット単位Head内の上記決定されたボイド発生順序に基づく位置のロボットv1宛てのボイド発生命令を隣接するロボット単位に送信するボイド発生命令送信ステップと、
上記ボイド発生命令を受信したロボットのボイド発生命令転送部が、上記ボイド発生命令を、上記ロボットv1に届くまで隣接するロボットに転送するボイド発生命令転送ステップと、
上記ボイド発生命令を受信したロボットv1の押命令送信部が、上記ロボットv1であり、上記ボイド発生命令を受信した場合に、上記先頭ロボット単位Headの動く方向をah方向として、上記ah方向に隣接するロボットに押命令を送信する押命令送信ステップと、
上記押命令を受信したロボットの返信押命令送信部が、上記ah方向に隣接するロボットがある場合には、上記ah方向に隣接するロボットに上記押命令を転送し、上記押命令を受信した場合であって上記ah方向に隣接するロボットがない場合には、上記ah方向の反対方向に隣接するロボットに返信押命令を送信する返信押命令送信ステップと、
上記返信押命令を受信したロボットの返信押命令転送部が、上記ロボットv1に届くまで上記ah方向の反対方向に隣接するロボットに返信押命令を転送する返信押命令転送ステップと、
上記返信押命令を受信したロボットv1のボイド操作命令送信部が、上記パス上にあり上記ロボットv1に隣接するロボットにボイド操作命令を送信するボイド操作命令送信ステップと、
上記返信押命令を受信したロボットv1の第一移動部が、上記ボイド操作命令を送信した後に、上記ah方向に上記ロボットv1を移動させる第一移動ステップと、
上記ボイド操作命令を受信したロボットのボイド操作命令転送部が、上記パス上にあり、パス内の自身より一マス分上記尾部ロボット単位Tail近づく方向にあるロボットに上記ボイド操作命令を転送するボイド操作命令転送ステップと、
上記ボイド操作命令を受信したロボットの移動命令送信部が、上記ボイド操作命令の送信転送回数が所定の回数である場合には、上記ボイド操作命令を送信してきたロボットに移動命令を送信する移動命令送信ステップと、
上記移動命令を受信したロボットの返信移動命令送信部が、上記移動命令を送信してきたロボットに返信移動命令を送信する返信移動命令送信ステップと、
上記返信移動命令を受信したロボットの第二移動部が、上記ボイド操作命令を送信してきたロボットと共にロボットを上記ボイド操作命令を送信してきたロボットのある方向に移動させる第二移動ステップと、
上記尾部ロボット単位Tailの1個手前のロボット単位T'に含まれるロボットであって、上記ボイド操作命令を受信したロボットの引命令送信部が、上記先頭ロボット単位Tailの動く方向をat方向として、上記尾部ロボット単位Tailの1個手前のロボット単位T'に含まれて、ロボットv1のロボット単位内位置と同じT'内位置にあるロボットであり、上記at方向の反対方向に隣接するロボットに引命令を送信する引命令送信ステップと、
上記引命令を受信したロボットの返信引命令送信部が、上記尾部ロボット単位Tail内に上記at方向の反対方向に隣接するロボットがある場合には、上記at方向の反対方向に隣接するロボットに上記引命令を転送し、上記引命令を受信した場合であって上記尾部ロボット単位Tail内に上記at方向の反対方向に隣接するロボットがない場合には、上記at方向に隣接するロボットに返信引命令を送信する返信引命令送信ステップと、
上記返信引命令を受信した第三移動部が、上記返信引命令を送信してきたロボットと共に上記at方向にロボットを移動させる第三移動ステップと、
上記ロボットhの制御部が、上記先頭ロボット単位Headに含まれる全てのロボットが、上記目的位置Dに移動するまで、上記ボイド発生順序決定部、上記ボイド発生命令転送部、上記押命令送信部、上記返信押命令送信部、上記返信押命令転送部、上記ボイド操作命令送信部、上記第一移動部、上記ボイド操作命令転送部、上記移動命令送信部、上記返信移動命令送信部、上記第二移動部、上記引命令送信部、上記返信引命令送信部、上記第三移動部の処理を繰り返すように制御を行う制御ステップと、
上記ロボットhの集合更新部が、上記目的位置Dを上記集合Upに追加した後に、上記集合Upに接していて、上記集合Upの中ではなく上記目標位置の中に位置するロボット単位がある場合には、そのロボット単位の位置と、そのロボット単位から上記目標位置のみを経由して接続状態にあるロボット単位の位置とを上記集合Upに追加することにより上記集合Upを更新する集合更新ステップと、
上記ロボットhの第二先頭ロボット決定命令送信部が、上記尾部ロボット単位Tailの位置と、上記目的位置Dにあるロボットの位置とを更新し、更新された各ロボットの位置に基づいて、上記集合Upに属する位置にあり上記目標位置の中のロボット単位が存在していない位置に隣接するロボット単位がある場合にはそのロボット単位を先頭ロボット単位Headとして新たに選択して、上記新たに選択した先頭ロボット単位Headに含まれる新たな所定のロボットhに、上記更新された各ロボットの位置と、上記更新された集合Upについての情報とを含む先頭ロボット決定命令を送信する第二先頭ロボット決定命令送信ステップと、
を含む、
移動ロボットの制御方法。 - 請求項1の移動ロボットの各部としてコンピュータを機能させるためのコンピュータ読み取り可能なプログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018157544A JP7014099B2 (ja) | 2018-08-24 | 2018-08-24 | 移動ロボット、移動ロボットの制御方法及びプログラム |
PCT/JP2019/031289 WO2020039951A1 (ja) | 2018-08-24 | 2019-08-08 | 移動ロボット、移動ロボットの制御方法及びプログラム |
US17/269,631 US11625050B2 (en) | 2018-08-24 | 2019-08-08 | Moving robot, moving robot control method and program therefor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018157544A JP7014099B2 (ja) | 2018-08-24 | 2018-08-24 | 移動ロボット、移動ロボットの制御方法及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2020030765A JP2020030765A (ja) | 2020-02-27 |
JP7014099B2 true JP7014099B2 (ja) | 2022-02-01 |
Family
ID=69593122
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018157544A Active JP7014099B2 (ja) | 2018-08-24 | 2018-08-24 | 移動ロボット、移動ロボットの制御方法及びプログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US11625050B2 (ja) |
JP (1) | JP7014099B2 (ja) |
WO (1) | WO2020039951A1 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114955455B (zh) * | 2022-06-14 | 2024-06-11 | 乐聚(深圳)机器人技术有限公司 | 机器人控制方法、服务器、机器人及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003048179A (ja) * | 2001-05-29 | 2003-02-18 | Japan Science & Technology Corp | 複数歯車型ユニットで構成される変形可能な移動装置 |
-
2018
- 2018-08-24 JP JP2018157544A patent/JP7014099B2/ja active Active
-
2019
- 2019-08-08 US US17/269,631 patent/US11625050B2/en active Active
- 2019-08-08 WO PCT/JP2019/031289 patent/WO2020039951A1/ja active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2020039951A1 (ja) | 2020-02-27 |
US20210341945A1 (en) | 2021-11-04 |
US11625050B2 (en) | 2023-04-11 |
JP2020030765A (ja) | 2020-02-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5997092B2 (ja) | ロボット協調搬送計画装置、方法及びプログラム | |
US5826033A (en) | Parallel computer apparatus and method for performing all-to-all communications among processing elements | |
JP6879233B2 (ja) | 制御装置、方法及びプログラム | |
Kawano | Distributed tunneling reconfiguration of cubic modular robots without meta-module’s disassembling in severe space requirement | |
JP7014099B2 (ja) | 移動ロボット、移動ロボットの制御方法及びプログラム | |
Ahn et al. | Coordination of two robotic manipulators for object retrieval in clutter | |
Kawano | Distributed tunneling reconfiguration of sliding cubic modular robots in severe space requirements | |
JP7136365B2 (ja) | 移動ロボット、移動ロボットの制御方法及びプログラム | |
JP6777661B2 (ja) | 制御装置、方法及びプログラム | |
JP7014101B2 (ja) | 移動ロボット、移動ロボットの制御方法及びプログラム | |
JP6939395B2 (ja) | 制御装置、方法及びプログラム | |
JP6685957B2 (ja) | 制御対象物位置入れ替え制御装置、制御対象物位置入れ替え制御方法、プログラム | |
Shwail et al. | Probabilistic multi robot path planning in dynamic environments: A comparison between A* and DFS | |
JP6559582B2 (ja) | 行動制御システム、その方法及びプログラム | |
Ravankar et al. | Real-time multi-robot path planning revisited as a caching problem | |
JP2016095754A (ja) | 行動制御システム、その方法及びプログラム | |
WO2023276065A1 (ja) | 制御装置、方法及びプログラム | |
WO2022153475A1 (ja) | 制御装置、ハミルトン閉路拡張装置、方法及びプログラム | |
JP6939396B2 (ja) | 隊列制御装置、隊列制御方法、およびプログラム | |
WO2023281625A1 (ja) | 制御装置、方法及びプログラム | |
JP6633467B2 (ja) | 行動制御システム、行動制御方法、プログラム | |
WO2023281582A1 (ja) | 制御装置、方法及びプログラム | |
JP6946933B2 (ja) | 隊列制御装置、隊列制御方法、およびプログラム | |
JP6881352B2 (ja) | 制御装置、方法及びプログラム | |
Odem et al. | A self-reconfiguration algorithm for sliding triangular modular robots |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20201201 |
|
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: 20211221 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20220103 |