以下、図面を参照しながら本開示を実施するための形態を、複数の形態を用いて説明する。各実施形態で先行する実施形態で説明している事項に対応している部分には同一の参照符を付すか、または先行の参照符号に一文字追加し、重複する説明を略する場合がある。また各実施形態にて構成の一部を説明している場合、構成の他の部分は、先行して説明している実施形態と同様とする。各実施形態で具体的に説明している部分の組合せばかりではなく、特に組合せに支障が生じなければ、実施形態同士を部分的に組合せることも可能である。
(第1実施形態)
本開示の第1実施形態に関して、図1~図19を用いて説明する。本実施形態の移動制御システム100は、経路上を移動する複数のAGV30の移動を制御する。移動制御システム100は、図1に示すように、AGV30、サーバ40、検出装置50および搬送指示装置60を含んで構成される。
AGV30、サーバ40、検出装置50および搬送指示装置60は、それぞれ記憶媒体に記憶されているプログラムを実行し、各部を制御する制御部を有する。制御部は、少なくとも1つの演算処理装置(CPU)と、プログラムとデータとを記憶する記憶媒体とを有する。各装置の制御部は、たとえばコンピュータによって読み取り可能な記憶媒体を備えるマイクロコンピュータによって実現される。記憶媒体は、コンピュータによって読み取り可能なプログラムおよびデータを非一時的に格納する非遷移的実体的記憶媒体である。記憶媒体は、半導体メモリまたは磁気ディスクなどによって実現される。以下、それぞれの制御部を明示せず制御部に換えて、AGV30、サーバ40、検出装置50および搬送指示装置60と表記する場合がある。
AGV30は、移動体であり、電動モータを駆動源として、無人で経路上を走行する。AGV30は、移動スケジュールに従って移動する。移動スケジュールは、AGV30が物を搬送するので、搬送スケジュールともいう。AGV30は、AGV用受信部31、AGV用送信部32、位置検出部33およびAGV用制御部34を含んで構成される。
AGV用送信部32は、サーバ40と通信して、サーバ40に所定の情報を送信する。AGV用受信部31は、サーバ40と通信して、サーバ40からの情報を受信する。位置検出部33は、AGV30の現在の位置情報を取得する。位置情報は、AGV30の現在位置および進行方向を含む。位置検出部33は、検出した位置情報をAGV用送信部32からサーバ40に定期的に送信する。
位置検出部33は、複数のセンサ情報を組み合わせる複合測位により、位置情報を生成する。位置検出部33は、たとえばGNSS(Global Navigation Satellite System)受信機、慣性センサ、地図データベース、およびロケータECUを備えている。GNSS受信機は、複数の測位衛星からの測位信号を受信する。慣性センサは、AGV30に作用する慣性力を検出するセンサである。慣性センサは、例えばジャイロセンサおよび加速度センサを備える。地図データベースは、不揮発性メモリに記憶されており、経路のリンクデータおよびノードデータを含む。ロケータECUは、GNSS受信機で受信する測位信号、地図データベースの地図データ、および慣性センサの計測結果を組み合わせることにより、AGV30の現在位置を逐次測位する。現在位置は、例えば緯度経度の座標で表される。
AGV用制御部34は、AGV用受信部31が受信した搬送スケジュールに従って移動するように駆動部を制御する。搬送スケジュールには、移動経路と、各地点を出発する出発時刻、各地点に到着する到着時刻、および各地点に停止する停止時間などが含まれる。
次にAGV30の処理について、図2および図3のフローチャートを用いて説明する。図2および図3に示すフローチャートは、AGV30が電源投入状態において、短時間に繰り返し実行する。
まず、図2のフローチャートに関して説明する。ステップS1では、AGV用受信部31が搬送スケジュールを受信すると、ステップS2に移る。ステップS2では、搬送スケジュールに従って移動するように駆動部を制御し、本フローを終了する。これによってAGV30は、搬送スケジュールを受信すると、搬送スケジュールに従って移動する。
次に、図3のフローチャートに関して説明する。ステップS1では、位置検出部33によって現在位置を検出し、ステップS2に移る。ステップS2では、検出した現在位置を示す位置情報をサーバ40に送信するようにAGV用送信部32を制御し、本フローを終了する。これによってAGV30は、現在位置を定期的にサーバ40に送信する。
次に、検出装置50に関して説明する。検出装置50は、経路に配置されて、経路の状態および経路上の物体を監視する。経路上の物体には、AGV30および経路上を移動する他の物体、たとえば人物などを含む。検出装置50は、監視した監視情報をサーバ40に送信する。また検出装置50は、サーバ40からの指示を出力する。指示は、たとえば人物の移動を許可または禁止を促す指示である。
検出装置50は、図1に示すように、周辺監視部51、検出装置用受信部52、検出装置用送信部53および指示部54を含んで構成される。検出装置用送信部53は、サーバ40と通信して、サーバ40に所定の情報を送信する。検出装置用受信部52は、サーバ40と通信して、サーバ40からの情報を受信する。周辺監視部51は、検出装置50の周辺監視に用いられる。周辺監視部51は、検出した監視情報を検出装置用送信部53からサーバ40に送信する。
周辺監視部51は、監視情報として、経路を移動するAGV30およびAGV30以外の動作物体の移動情報を検出する。移動情報は、移動方向および移動速度である。動作物体は、たとえば人物である。周辺監視部51は、また監視情報として、経路上の異常を検出する。経路上の異常は、経路上に移動を妨げる障害物の有無を検出する。周辺監視部51は、経路上の異常を検出する異常情報をとして出力する。
周辺監視部51は、周辺をセンシングする。周辺監視部51は、たとえば画像センサおよび超音波ソナーによって実現される。画像センサは、周辺を撮像する撮像装置である。超音波ソナーは、探査波を送信して物体で反射される反射波を受信することで、検出装置50から物体上の測距点までの距離を検出するセンサである。測距点は、物体の表面上で探査波を反射した部位である。超音波ソナーのセンシング範囲は、周辺の所定範囲、たとえば数メートルである。
指示部54は、周辺に位置する動作物体、たとえば人物への移動を指示する。指示部54は、たとえば音声を出力、および画像を表示することで指示を行う。指示部54は、たとえば経路が交差する交点で、信号機と同様の役割をする。指示部54は、サーバ40から送信された指示を検出装置用受信部52から与えられると、受信した指示を出力する。
次に検出装置50の処理について、図4および図5のフローチャートを用いて説明する。図4および図5に示すフローチャートは、検出装置50が電源投入状態において、短時間に繰り返し実行する。
まず、図4のフローチャートに関して説明する。ステップS1では、周辺監視部51が移動物体、動作物体または経路異常を検出したか否かを判断し、検出した場合にはステップS2に移り、検出していない場合には、本フローを終了する。ステップS2では、検出した移動情報、または異常情報を監視情報としてサーバ40に送信するように検出装置用送信部53を制御し、本フローを終了する。これによって検出装置50は、監視情報をサーバ40に定期的に送信する。
次に、図5のフローチャートに関して説明する。ステップS1では、検出装置用受信部52が指示を受信すると、ステップS2に移る。ステップS2では、受信した指示を出力するように指示部54を制御し、本フローを終了する。これによって検出装置50は、受信した指示部54を出力することができる。
次に、搬送指示装置60に関して説明する。搬送指示装置60は、複数のAGV30に対する搬送指示を受け付けて、サーバ40に搬送指示を送信する。搬送指示装置60は、たとえば管理者によって操作される情報端末である。搬送指示装置60は、図1に示すように、指示監視部61、搬送用受信部62、搬送用送信部63、および入力部64を含んで構成される。搬送指示装置60は、たとえば外部と通信可能なパーソナルコンピュータ(Personal Computer:略称PC)およびスマートフォンなどの携帯型情報端末によって実現される。
搬送用送信部63は、サーバ40と通信して、サーバ40に所定の情報を送信する。搬送用受信部62は、サーバ40と通信して、サーバ40からの情報を受信する。入力部64は、管理者によって操作されて、搬送指示が入力される。入力部64は、搬送指示が入力されると、搬送用送信部63から搬送指示をサーバ40に送信する。
指示監視部61は、入力部64から入力される搬送指示を監視する。指示監視部61は、現在実行中の搬送指示とは異なる新たな搬送指示が入力されると、入力された搬送指示が新しい搬送指示であることを示す情報とともに、搬送用送信部63からサーバ40に送信する。換言すると、更新された搬送指示を搬送用送信部63から送信するように制御する。
次に搬送指示装置60の処理について、図6のフローチャートを用いて説明する。図6に示すフローチャートは、搬送指示装置60が電源投入状態において、短時間に繰り返し実行する。ステップS1では、搬送指示の有無を監視し、ステップS2に移る。搬送指示の有無は、指示監視部61によって行われる。ステップS3では、搬送指示があったか否かを判断し、搬送指示があった場合にはステップS3に移り、搬送指示がない場合は、ステップS1に戻る。ステップS3では、搬送指示があったので、搬送指示をサーバ40に送信するように搬送用送信部63を制御し、本フローを終了する。これによって搬送指示装置60は、新しい搬送指示を受け付けると、新しい搬送指示がサーバ40に送信される。
次に、サーバ40に関して説明する。サーバ40は、移動体制御装置であって、経路上を移動する複数のAGV30の移動を制御する。サーバ40は、具体的には、AGV30に移動スケジュールを送信して、AGV30の移動を制御する。サーバ40は、図1に示すように、記憶部41、サーバ用受信部42、サーバ用送信部43およびサーバ用制御部45を含んで構成される。
サーバ用送信部43は、AGV30、検出装置50、および搬送指示装置60と通信して、各装置に所定の情報を送信する。またサーバ用受信部42は、AGV30、検出装置50、および搬送指示装置60と通信して、各装置からの情報を受信する。記憶部41には、AGV30を管理するための情報が記憶されている。記憶部41には、搬送指示装置60から送信された搬送指示が記憶される。
サーバ用制御部45は、制御部であって、記憶部41からの必要な情報を読み込み、AGV30の移動を制御する。サーバ用制御部45は、図1に示すように、機能ブロックとして、設定部141、予測部142、判定部143、計算部144、および移動制御部145を含んで構成される。またサーバ用制御部45は、取得部としても機能し、サーバ用受信部42を介して、位置情報および監視情報を取得する。したがってサーバ用制御部45は、AGV30の現在位置、経路を移動するAGV30以外の動作物体の移動情報、および経路における異常、すなわち経路の移動不可部分を取得する。
設定部141は、複数のAGV30の出発地点と終着地点とを結ぶ移動経路、および移動経路を移動する移動工程を設定する。また経由地がある場合には、経由地を経由する移動経路を設定する。さらに経由地に順番がある場合には、経由地の順番を考慮した移動経路を設定する。さらにAGV30の移動に優先順位がある場合には、優先順を考慮して移動工程を設定する。
移動工程は、本実施形態では搬送工程ともいう。設定部141は、出発地点と終着地点とを結ぶ最短経路を移動経路として設定する。また設定部141は、複数のAGV30の移動経路の重複が少なくなるように移動経路を設定する。したがって、たとえば最短経路が複数ある場合には、重複が少ない移動経路を設定する。また最短経路を優先するか、重複をしないことを優先するかは、予め設定可能であってもよい。たとえば最短経路が1つしかなく、重複を回避できない場合には、重複回避を優先する場合には、最短経路よりも遠回りになる経路を設定してもよい。
計算部144は、移動経路および移動工程を入力値して、制約条件を満たしつつ所定の評価値を最小化することを目的とする混合整数計画問題を解くことによって、移動体の移動スケジュールを計算する。
具体的には、本実施形態では、blocking job shop型のスケジューリング問題を同時に複数の機械または設備を利用できるように定式化し、利用する経路に加え、先に利用する経路も工程に加えたスケジューリング問題にすることで、干渉を回避するzone controlを表現可能にしている。これによって干渉を回避しながら全体の効率を最適化する搬送スケジュールが計算可能になる。
たとえば他のAGV30が進行方向に隣接する分割経路に存在する場合には、他のAGV30が通り過ぎてから、隣接する分割経路への進入を許可する。これは一般に、blocking job shop schedulingといわれる。これによって衝突を回避する。さらに本実施形態では、AGV30が存在する場所と重複経路の出入口も同時に確保して他のAGV30の重複経路への進入を禁止し、正面衝突回避のzone controlを表現する。このために、blocking job shop型のスケジューリング問題を、いわゆる複数機械同時利用へ定式化を拡張する。これによって干渉のない搬送スケジューリングを計算できるため、AGV30の動きを把握するための設備は不要となる。
移動制御部145は、搬送スケジュールによって各AGV30の移動を制御する。移動制御部145は、搬送スケジュールを各AGV30に送信するようにサーバ用送信部43を制御する。予測部142は、検出装置50が検出した監視情報に基づいて、AGV30以外の人などの動きを予測する。たとえば検出した人物が、経路のどちらの方向に進むのかを移動情報を用いて予測する。判定部143は、搬送スケジュールが更新されたとき、新たな搬送指示が発生したときに、搬送スケジュールを再計算すべきか否かを判断する。
次に、図7を用いて、搬送スケジュールに関して説明する。図7では、比較例では遅延や遠回りが起き、実施例では最適解が求まることを示す。経路は、複数の分割経路から構成される。たとえば図7に示す経路では、7つの分割経路から構成される。1つの分割経路には、1つのAGV30しか位置することができない。また経路は、2つのAGV30がすれ違えない。したがって分割経路でも、2つのAGV30がすれ違うことができない。
移動工程は、ある時刻にあるAGV30が位置する分割経路を示す。たとえば図7に示すように、現時点では、経路に7つの分割経路があり、第1分割経路R1に第1AGV30Aが位置し、第6分割経路R6に第2AGV30Bが位置する。そしてその後、各AGV30が移動することで、位置する分割経路が変化する。図7に示す例では、第1AGV30Aは、出発地点が第1分割経路R1であり、到着地点が第5分割経路R5である。また第2AGV30Bは、出発地点が第6分割経路R6であり、到着地点が第7分割経路R7である。この場合、2つの移動経路は、第2分割経路R2で交差するので、いずれか一方のAGV30を先に通過させ、他方を後に通過させることになる。
第1比較例では、第2AGV30Bを先に第2分割経路R2を通過させ、その後に第1AGV30Aを第2分割経路R2を通過している。これによって第2AGV30Bの移動は先に完了するが、第1AGV30Aを待たせることで、全体の搬送時間が長くなる。
また第2比較例では、第2AGV30Bを最短経路ではなく、第2分割経路R2を迂回させ、第1AGV30Aと第2AGV30Bを同時に移動させている。これによって第2AGV30Bを遠回りさせることになり、移動全体が非効率となる。
そして第1実施例では、第1AGV30Aを先に第2分割経路R2を通過させ、その後に第2AGV30Bを第2分割経路R2を通過している。第2AGV30Bを待たせて、先に第1AGV30Aを通過させることで、効率的な移動を実現しつつ、衝突を回避している。このように本実施形態では、衝突を回避し、全ての移動が完了するまでの時間を短くするように移動スケジュールを設定する。
次に、具体的な搬送スケジュールの計算方法に関して図8を用いて説明する。計算部144は、前述のように、移動経路および移動工程を入力値して、制約条件を満たしつつ所定の評価値を最小化することを目的とする混合整数計画問題を解くことによって、移動体の移動スケジュールを計算する。混合整数計画問題は、混合整数最適化問題ともいい、整数値を取る変数と実数値を取る変数が混在している整数計画問題のことである。整数計画問題は、整数変数を含む最適化問題のことである。スケジューリング問題とは、人や機械といったリソースに対してジョブのスケジュールを割当てる問題である。本実施形態では、リソースは経路に該当し、ジョブがAGV30の移動に該当する。
最適化問題とは、条件を満たす候補の中から目的に対して最適なものを数学的に見つける問題である。最適化問題は、決定変数、目的関数および制約条件という3つの要素から構成される。決定変数は、意思決定や制御の対象で、値を決めたいものである。本実施形態では、決定変数は、搬送スケジュールが該当する。目的関数は、決定変数が目的に対して良いか悪いかを判断するための関数である。本実施形態では、メイクスパンを最小化、すなわち最後のジョブの終了時間が早くなることを目的とする関数である。
制約条件は、候補となる決定変数が満たす必要のある条件である。本実施形態では、制約条件には、衝突禁止条件が含まれる。衝突禁止条件は、経路を少なくともAGV30よりも大きい長さで分割した分割経路において、1つの分割経路には、1つのAGV30の存在を許可し、2つのAGV30の存在を禁止する条件である。換言すると、衝突禁止条件は、分割経路において、AGV30が次の分割経路への移動が完了するまで、移動が完了前の分割経路は他のAGV30による利用を禁止する条件である。
また最適化問題に入力される搬送工程は、少なくとも2つのAGV30の移動経路が重複して、AGV30の移動方向が対向することによって、AGV30が干渉する可能性がある特定経路では、特定経路に1つのAGV30が存在する場合には、AGV30が存在する特定経路に他のAGV30の使用を禁止するように設定されている。
さらに設定部141は、特定経路に1つのAGV30が存在する場合には、AGV30が存在する特定経路のうち移動体の移動方向の部分への他のAGV30の使用を禁止し、移動方向とは反対方向の部分の使用を許可するように移動工程を設定する。
図8の右端の欄に示すように、本実施形態は、blocking job shop schedulingに示す式を用いる。図8の左の欄に示す一般的なjob shopスケジューリングの定式化に対して、図8の右の欄に示す式は、blocking job shop スケジューリングの定式化である。
次に図8の右の本実施形態の式に関して説明する。ジョブやプロセスに関する情報は、変数の添え字で示す。たとえば、Sα,iは、ジョブαのi番目のタスクであることを示す添え字である。sは、ジョブの開始時間を示し、pはジョブの処理時間を示し、Cmaxは、スケジュールのメイクスパンを示す。Rは、リソースの集合を示し、Pは製品の集合を示し、QαおよびQβは、製品αと製品βのジョブの集合を示す。Mは、大きい正の数を示す。そしてxα,i,β,jは、0-1の整数を示し、Jα,iとJβ,jの製造手順を示す。
式(1)の目的関数は、メイクスパンを最小化することを目的とする。そして、式(2)のCmaxは各製品の最後のジョブの最大終了時間を表している。式(3)は開始時刻に対する非負の制約を示し、式(4)は各ジョブが先行するジョブ動作の後に動作することを示している。したがって、次のジョブα,i+1の開始時刻は、処理終了時刻Sα,i+pα,iよりも製造資源の分だけ遅くなければならない。
式(5)、(6)は、移動体が次の分割経路へ移動が完了してからでないとその分割経路は他の移動体により利用を許さない衝突禁止条件である。xα,i,β,jは、ジョブαのi番目のタスクが製品βのj番目のジョブよりも先に操作された場合に0を取る決定変数を表す。
次に、サーバ40の処理について、図9および図10のフローチャートを用いて説明する。図9および図10に示すフローチャートは、サーバ40が電源投入状態において、短時間に繰り返し実行する。
まず、図9のフローチャートに関して説明する。ステップS1では、搬送工程を取得し、ステップS2に移る。ステップS2では、計算部144が搬送スケジュールを計算し、ステップS3に移る。ステップS3では、搬送スケジュールをAGV30へ送信するようにサーバ用送信部43を制御し、本フローを終了する。このようにサーバ用制御部45は、搬送工程に基づいて、搬送スケジュールを計算し、計算した搬送スケジュールをAGV30に送信する。
次に、図10のフローチャートに関して説明する。ステップS1では、搬送指示をサーバ用受信部42が受信し、ステップS2に移る。ステップS2では、判定部143が新しい搬送指示によって搬送スケジュールの再計算の有無が必要か否かを判断する。そして、ステップS2では、再計算が必要な場合には、ステップS3に移り、必要でない場合には、本フローを終了する。再計算が必要な場合とは、新たなAGV30が追加された場合、新たな搬送先が追加された場合である。再計算が不要な場合とは、新しい搬送指示が搬送先および搬送経路は変わらないが、搬送量がかわった場合などである。
ステップS3では、新しい搬送指示における搬送工程を取得し、ステップS4に移る。ステップS4では、計算部144が搬送スケジュールを計算し、ステップS5に移る。ステップS5では、搬送スケジュールをAGV30へ送信するようにサーバ用送信部43を制御し、本フローを終了する。このようにサーバ用制御部45は、搬送指示によって再計算が必要な場合には、新しい搬送工程に基づいて、搬送スケジュールを再計算し、再計算した搬送スケジュールをAGV30に送信する。
次に、搬送スケジュールの3つの計算事例に関して、図11~図19を用いて説明する。まず第1の計算事例に関して説明する。第1の計算事例の経路には、図11に示すように、7つの分割経路があり、スタート時点では、第1分割経路R1に第1AGV30Aが位置し、第5分割経路R5に第2AGV30Bが位置する。そして、第1AGV30Aは、出発地点が第1分割経路R1であり、到着地点が第6分割経路R6である。また第2AGV30Bは、出発地点が第5分割経路R5であり、到着地点が第7分割経路R7である。この場合、2つのAGV30の移動経路のうち、第2分割経路R2、第3分割経路R3および第4分割経路R4が重複する特定経路となる。特定経路では、AGV30の移動方向が対向することによって、AGV30が干渉する可能性がある。この場合、特定経路では、いずれか一方のAGV30を先に通過させ、他方を後に通過させることになる。
図12には、搬送工程を示す。第1AGV30Aの搬送工程では、第1分割経路R1を出発地点とし、次に第2分割経路R2に移動する。その場合、第2分割経路R2は特定経路であるので、特定経路への他のAGV30の進入を禁止するために、第2分割経路R2だけでなく、第4分割経路R4も使用中とする。実際は、第2分割経路R2しか使用していないが、仮想的に第4分割経路R4を使用しているとして、他のAGV30が特定経路に進入すること防ぐ。その後、第1AGV30Aが第2分割経路R2から第3分割経路R3に移動すると、同様に、第3分割経路R3は特定経路であるので、特定経路への他のAGV30の進入を禁止するために、第3分割経路R3だけでなく、第4分割経路R4も使用中とする。
その後、第1AGV30Aが第3分割経路R3から第4分割経路R4に移動すると、第4分割経路R4は特定経路であるが、移動方向の前方には特定経路はないので、現在位置である第4分割経路R4だけを使用中とする。その後、第1AGV30Aが第4分割経路R4から第6分割経路R6に移動して、第1AGV30Aの移動は終了する。
同様に、第2AGV30Bの搬送工程では、第5分割経路R5を出発地点とし、次に第4分割経路R4に移動する。その場合、第4分割経路R4は特定経路であるので、特定経路への他のAGV30の進入を禁止するために、第4分割経路R4だけでなく、第2分割経路R2も使用中とする。実際は、第4分割経路R4しか使用していないが、仮想的に第2分割経路R2を使用しているとして、他のAGV30が特定経路に進入すること防ぐ。その後、第2AGV30Bが第4分割経路R4から第3分割経路R3に移動すると、同様に、第3分割経路R3は特定経路であるので、特定経路への他のAGV30の進入を禁止するために、第3分割経路R3だけでなく、第2分割経路R2も使用中とする。
その後、第2AGV30Bが第3分割経路R3から第2分割経路R2に移動すると、第2分割経路R2は特定経路であるが、移動方向の前方には特定経路はないので、現在位置である第2分割経路R2だけを使用中とする。その後、第2AGV30Bが第2分割経路R2から第7分割経路R7に移動して、第2AGV30Bの移動は終了する。
図13には、搬送スケジュールを示す。搬送スケジュールは、図12の搬送工程を入力して、前述の数式(1)のメイクスパンが最小値となるように計算されたものである。図13に示す搬送スケジュールは、ある時刻に、各AGV30が使用する分割経路を示す。
図13に示すように、第1時刻t1には、第1AGV30Aが第1分割経路R1に位置し、第2AGV30Bが第5分割経路R5に位置する。その後、第2時刻t2には、第1AGV30Aが第2分割経路R2に移動し、仮想的に第4分割経路R4を使用する。第2時刻t2では、第2AGV30Bは移動していない。その後、第3時刻t3では、第1AGV30Aが第3分割経路R3に移動し、仮想的に第4分割経路R4を使用する。第3時刻t3でも、第2AGV30Bは移動していない。その後、第4時刻t4では、第1AGV30Aが第4分割経路R4に移動する。第4時刻t4でも、第2AGV30Bは移動していない。
その後、第5時刻t5には、第1AGV30Aが第6分割経路R6に移動し、第1AGV30Aの移動が終了する。第5時刻t5では、第2AGV30Bも第5分割経路R5から第4分割経路R4に移動する。その後、第6時刻t6~第8時刻t8では、第2AGV30Bが、順次、第3分割経路R3、第2分割経路R2、および第7分割経路R7に移動して、第2AGV30Bの移動が終了する。
このように第1の計算事例では、2台のAGV30の移動経路に特定経路があるが、干渉することなく、順番に特定経路を使用することで、無駄なAGV30の移動もなく、移動を完了することができる。
次に、第2の計算事例に関して、図14~図16を用いて説明する。第2の計算事例の経路には、図14に示すように、8つの分割経路があり、スタート時点では、第1分割経路R1に第1AGV30Aが位置し、第8分割経路R8に第2AGV30Bが位置する。そして、第1AGV30Aは、出発地点が第1分割経路R1であり、第8分割経路R8以外の分割経路を通過して、再び出発地点に戻る。したがって第1AGV30Aの到着地点も、第1分割経路R1となる。
また第2AGV30Bは、出発地点が第8分割経路R8であり、第1分割経路R1以外の分割経路を通過して、再び出発地点に戻る。したがって第2AGV30Bの到着地点も、第8分割経路R8となる。この場合、2つのAGV30の移動経路のうち、第2分割経路R2~第6分割経路R6が重複する特定経路となる。
図15には、搬送工程を示す。第1AGV30Aの搬送工程では、第1分割経路R1を出発地点とし、次に第2分割経路R2に移動する。その場合、第2分割経路R2は特定経路であるので、特定経路への他のAGV30の進入を禁止するために、第2分割経路R2だけでなく、特定経路への入口である第6分割経路R6も使用中とする。実際は、第2分割経路R2しか使用していないが、仮想的に第6分割経路R6を使用しているとして、他のAGV30が特定経路に進入すること防ぐ。その後、第1AGV30Aが第2分割経路R2から第3分割経路R3、第4分割経路R4、第5分割経路R5と順次、移動し、その間は第6分割経路R6も使用中とする。
その後、第1AGV30Aが第6分割経路R6に移動すると、第6分割経路R6は特定経路であるので、特定経路への他のAGV30の進入を禁止するために、第6分割経路R6だけでなく、進行方向の前方に位置する特定経路の出入口である第2分割経路R2も使用中とする。その後、第1AGV30Aが第7分割経路R7に移動し、同様に第2分割経路R2も使用中とする。その後、第1AGV30Aが第2分割経路R2および第1分割経路R1の順に移動して、第1AGV30Aの移動は終了する。
同様に、第2AGV30Bの搬送工程では、第8分割経路R8を出発地点とし、次に第6分割経路R6に移動する。その場合、第6分割経路R6は特定経路であるので、特定経路への他のAGV30の進入を禁止するために、第6分割経路R6だけでなく、第2分割経路R2も使用中とする。実際は、第6分割経路R6しか使用していないが、仮想的に第2分割経路R2を使用しているとして、他のAGV30が特定経路に進入すること防ぐ。その後、第2AGV30Bが第6分割経路R6から第5分割経路R5、第4分割経路R4、第3分割経路R3と順次、移動し、その間は第2分割経路R2も使用中とする。
その後、第2AGV30Bが第2分割経路R2に移動すると、第2分割経路R2は特定経路であるので、特定経路への他のAGV30の進入を禁止するために、第2分割経路R2だけでなく、進行方向の前方に位置する直近の特定経路の出入口である第6分割経路R6も使用中とする。その後、第2AGV30Bが第7分割経路R7に移動し、同様に第6分割経路R6も使用中とする。その後、第2AGV30Bが第6分割経路R6および第8分割経路R8の順に移動して、第2AGV30Bの移動は終了する。
図16には、搬送スケジュールを示す。搬送スケジュールは、図15の搬送工程を入力して、前述の数式(1)のメイクスパンが最小値となるように計算されたものである。図16に示す搬送スケジュールは、ある時刻に、各AGV30が使用する分割経路を示す。
図16に示すように、第1時刻t1には、第1AGV30Aが第1分割経路R1に位置し、第2AGV30Bが第8分割経路R8に位置する。その後、第2時刻t2には、第1AGV30Aが第2分割経路R2に移動し、仮想的に第6分割経路R6を使用する。第2時刻t2では、第2AGV30Bは移動していない。その後、第3時刻t3~第6時刻t6までは、第1AGV30Aが、順次、第3分割経路R3、第4分割経路R4、第5分割経路R5、第6分割経路R6と移動する。そして第6時刻t6では、第6分割経路R6だけでなく、第2分割経路R2を仮想的に使用する。その後、第7時刻t7では、第7分割経路R7に移動し、仮想的に第2分割経路R2も使用する。その後、第8時刻t8、第9時刻t9では、順次、第2分割経路R2、第1分割経路R1と移動して、第1AGV30Aの移動が終了する。
第9時刻t9では、第2AGV30Bの移動が開始し、第6分割経路R6に移動し、仮想的に第2分割経路R2も使用する。その後、第10時刻t10~第13時刻t13までは、第2AGV30Bが、順次、第5分割経路R5、第4分割経路R4、第3分割、第2分割経路R2と移動する。そして第13時刻t13では、第2分割経路R2だけでなく、第6分割経路R6を仮想的に使用する。その後、第14時刻t14では、第7分割経路R7に移動し、仮想的に第6分割経路R6も使用する。その後、第15時刻t15、第16時刻t16では、順次、第6分割経路R6、第8分割経路R8と移動して、第2AGV30Bの移動が終了する。
このように第2の計算事例でも同様に、2台のAGV30の移動経路に特定経路があるが、干渉することなく、順番に特定経路を使用することで、無駄なAGV30の移動もなく、移動を完了することができる。
次に、第3の計算事例に関して、図17~図19を用いて説明する。第3の計算事例の経路には、図17に示すように、10つの分割経路があり、スタート時点では、第1分割経路R1に第1AGV30Aが位置し、第8分割経路R8に第2AGV30Bが位置し、第5分割経路R5に第3AGV30Cが位置する。そして、第1AGV30Aは、出発地点が第1分割経路R1であり、第2分割経路R2、第4分割経路R4、第6分割経路R6、第7分割経路R7、第9分割経路R9と順次、通過して、第10分割経路R10が到着点である。そして、第2AGV30Bは、出発地点が第8分割経路R8であり、第9分割経路R9、第7分割経路R7、第6分割経路R6、第4分割経路R4、第2分割経路R2と順次、通過して、第3分割経路R3が到着点である。また第3AGV30Cは、出発地点が第5分割経路R5であり、第6分割経路R6、第7分割経路R7、第9分割経路R9と順次、通過して、第10分割経路R10が到着点である。この場合、3つのAGV30の移動経路のうち、第2分割経路R2、第4分割経路R4、第6分割経路R6、第7分割経路R7、第9分割経路R9が重複する特定経路となる。
図18には、搬送工程を示す。第1AGV30Aの搬送工程では、第1分割経路R1を出発地点とし、次に第2分割経路R2に移動する。その場合、第2分割経路R2は特定経路であるので、特定経路への他のAGV30の進入を禁止するために、第2分割経路R2だけでなく、第6分割経路R6および第9分割経路R9も使用中とする。実際は、第2分割経路R2しか使用していないが、仮想的に第6分割経路R6および第9分割経路R9を使用しているとして、他のAGV30が特定経路に進入すること防ぐ。その後、第1AGV30Aが第2分割経路R2から第4分割経路R4、第6分割経路R6、第7分割経路R7、第9分割経路R9と順次、移動し、その間は第9分割経路R9も使用中とする。また第1AGV30Aが第7分割経路R7に移動するまで、第6分割経路R6も使用中とする。その後、第1AGV30Aが第10分割経路R10に移動して、第1AGV30Aの移動は終了する。
第2AGV30Bの搬送工程では、第8分割経路R8を出発地点とし、次に第9分割経路R9に移動する。その場合、第9分割経路R9は特定経路であるので、特定経路への他のAGV30の進入を禁止するために、第9分割経路R9だけでなく、第2分割経路R2および第6分割経路R6も使用中とする。実際は、第9分割経路R9しか使用していないが、仮想的に第2分割経路R2および第6分割経路R6を使用しているとして、他のAGV30が特定経路に進入すること防ぐ。その後、第2AGV30Bが第9分割経路R9から第7分割経路R7、第6分割経路R6、第4分割経路R4、第2分割経路R2と順次、移動し、その間は第2分割経路R2も使用中とする。また第2AGV30Bが第4分割経路R4に移動するまで、第6分割経路R6も使用中とする。その後、第2AGV30Bが第3分割経路R3に移動して、第2AGV30Bの移動は終了する。
第3AGV30Cの搬送工程では、第5分割経路R5を出発地点とし、次に第6分割経路R6に移動する。その場合、第6分割経路R6は特定経路であるので、特定経路への他のAGV30の進入を禁止するために、第6分割経路R6だけでなく、第9分割経路R9も使用中とする。実際は、第6分割経路R6しか使用していないが、仮想的に第9分割経路R9を使用しているとして、他のAGV30が特定経路に進入すること防ぐ。その後、第3AGV30Cが第6分割経路R6から第7分割経路R7、第9分割経路R9と順次、移動し、その間は第9分割経路R9も使用中とする。その後、第3AGV30Cが第10分割経路R10に移動して、第3AGV30Cの移動は終了する。
図19には、搬送スケジュールを示す。搬送スケジュールは、図19の搬送工程を入力して、前述の数式(1)のメイクスパンが最小値となるように計算されたものである。図19に示す搬送スケジュールは、ある時刻に、各AGV30が使用する分割経路を示す。
図19に示すように、第1時刻t1には、第1AGV30Aが第1分割経路R1に位置し、第2AGV30Bが第8分割経路R8に位置し、第3AGV30Cが第5分割経路R5に位置する。その後、第2時刻t2には、第2AGV30Bが第9分割経路R9に移動し、仮想的に第2分割経路R2および第6分割経路R6を使用する。第2時刻t2では、第1AGV30Aおよび第3AGV30Cは移動していない。その後、第3時刻t3、第4時刻t4、第5時刻t5では、第2AGV30Bが、順次、第7分割経路R7、第6分割経路R6、第4分割経路R4と移動する。そして第5時刻t5では、第6分割経路R6は使用されていないので、第3AGV30Cが移動を開始し、第6分割経路R6に移動し、第9分割経路R9も仮想的に使用する。
その後、第6時刻t6では、第2AGV30Bは、第2分割経路R2に移動する。そして第6時刻t6、第7時刻t7では、第3AGV30Cは第7分割経路R7、第9分割経路R9と順次移動する。その後、第8時刻t8では、第2AGV30Bが第3分割経路R3に移動して、第2AGV30Bの移動が終了する。また第3AGV30Cは、第10分割経路R10に移動して、第3AGV30Cの移動が終了する。
第1AGV30Aは、第8時刻t8から移動を開始して、第13時刻t13まで、順次、第2分割経路R2、第4分割経路R4、第6分割経路R6、第7分割経路R7、第9分割経路R9、第10分割経路R10と移動するそして、第1AGV30Aは、第10分割経路R10に移動して移動が終了する。
このように第3の計算事例でも同様に、3台のAGV30の移動経路に特定経路があるが、干渉することなく、順番に特定経路を使用することで、無駄なAGV30の移動もなく、移動を完了することができる。
以上説明したように本実施形態の移動制御システム100では、経路は2つのAGV30がすれ違えないので、移動経路が交錯する場合には、AGV30の衝突を避けるために、一方のAGV30を待機させて、他方のAGV30を移動させた後に、一方のAGV30を移動させる必要がある。そこで混合整数計画問題の制約条件に衝突禁止条件を用いて、移動体の衝突を避けつつ、評価値を最小化する搬送スケジュールを計算する。評価値は、全てのAGV30の移動が完了するまでの時間、全てのAGV30の移動時間の総和、AGV30の待機時間の総和などであり、本実施形態ではメイクスパン、すなわち全ての移動体の移動が完了するまでの時間を評価値としている。また混合整数計画問題を解くことによって搬送スケジュールを決定するので、複数回計算を繰り返すことを抑制することができる。
さらに設定部141は、特定経路に1つのAGV30が存在すると、他のAGV30が特定経路に進入することができないように搬送工程を設定する。衝突禁止条件だけであると、隣接する分割経路に存在するAGV30の位置が入れ替わることが許容されるが、設定部141によって特定経路への進入が禁止されるので、このような入れ替わることを防止することができる。これによってAGV30のお互いの干渉を回避しつつ、全体の効率をより高めることができる。
また本実施形態では、設定部141は、特定経路に1つのAGV30が存在する場合には、AGV30が存在する特定経路のうちAGV30の移動方向の部分への他のAGV30の使用を禁止し、移動方向とは反対方向の部分の使用を許可するように搬送工程を設定する。これによって特定経路の全体を進入禁止にするよりも、効率よく特定経路を使用することができる。したがって干渉を回避しつつ、有効に特定経路を活用して効率化することができる。
また本実施形態では、計算部144は、移動経路および搬送工程が設定部141によって変更された場合には、新しい移動経路および搬送工程を入力して、搬送スケジュールを計算する。これによって新しい情報を用いて搬送スケジュールを計算することができる。したがって搬送工程の変更に柔軟に対応することができる。
(第2実施形態)
次に、本開示の第2実施形態に関して、図20を用いて説明する。本実施形態では、AGV30の位置情報を用いて、搬送スケジュールを再計算する点に特徴を有する。図20は、本実施形態のサーバ40の処理を示すフローチャートである。図20に示すフローチャートは、サーバ40が電源投入状態において、短時間に繰り返し実行する。
ステップS1では、各AGV30の位置情報を、サーバ用受信部42を介して取得し、ステップS2に移る。ステップS2では、位置情報と搬送スケジュール上の予定位置とを比較して、乖離を計算し、ステップS3に移る。
ステップS3では、乖離が許容範囲内であるか否かを判断し、許容範囲内である場合には、再計算が不要として本フローを終了する。乖離が許容範囲外である場合には、再計算が必要として、ステップS4に移る。
ステップS4では、現在位置を考慮して、搬送スケジュールを再計算して、ステップS5に移る。ステップS5では、再計算した搬送スケジュールをサーバ用送信部43から各AGV30に送信するように制御し、本フローを終了する。
このように計算部144は、AGV30の現在位置と、搬送スケジュールのおける予定位置との差が所定値より大きい場合には、搬送スケジュールを再計算する。これによってAGV30の現在位置と予定位置との乖離に起因して、AGV30が干渉するなどを抑制することができる。
(第3実施形態)
次に、本開示の第3実施形態に関して、図21を用いて説明する。本実施形態では、検出装置50の監視情報を用いて、搬送スケジュールを再計算する点に特徴を有する。図21は、本実施形態のサーバ40の処理を示すフローチャートである。図21に示すフローチャートは、サーバ40が電源投入状態において、短時間に繰り返し実行する。
ステップS1では、検出装置50から監視情報を、サーバ用受信部42を介して取得し、ステップS2に移る。ステップS2では、監視情報を用いて、AGV30以外の動作物体、たとえば人物の移動方向および移動速度を予測し、ステップS3に移る。
ステップS3では、動作物体によって搬送スケジュールを再計算する必要があるか否かを判断し、再計算が必要な場合は、ステップS4に移り、再計算が不要な場合は本フローを終了する。再計算が必要な場合は、人物の移動によって、AGV30と人物が干渉するおそれがある場合である。
ステップS4では、人物の移動情報を考慮して、搬送スケジュールを再計算して、ステップS5に移る。ステップS5では、再計算した搬送スケジュールをサーバ用送信部43から各AGV30に送信するように制御し、ステップS6に移る。ステップS6では、検出装置50へ動作物体への指示を送信するようにサーバ用制御部45を制御し、本フローを終了する。
このように設定部141は、移動情報から動作物体の動きを予測して、動作物体を含む移動経路および移動工程を設定する。そして計算部144は、新しい移動経路および移動工程を入力値して、搬送スケジュールを計算する。これによってAGV30と動作物体が干渉するなどを抑制することができる。またサーバ用制御部45は、動作物体への指示を出力するので、たとえば動作物体が止まるように検出装置50の指示部54によって指示することができる。これによって動作物体、たとえば人物は、指示に従って、AGV30の通過を待つ、またはAGV30より先に移動を、安全に行うことができる。
また動作物体への指示を行う場合には、搬送スケジュールを計算する制約条件にAGV30および動作物体の移動の優先順位が設定された優先条件を含む。たとえば動作物体を優先させるのか、AGV30の移動を優先させるのかの条件である。優先順位は、たとえば条件によって変わってもよく、事前に固定されていてもよい。たとえば時間帯によって、優先順位を変えてもよい。また優先度は、AGV30同士および人物との干渉を防ぎながら移動を実現させるために、人物を待たせても良い。またAGV30と混在移動体である人物の優先順位を搬送量や混雑度に応じて決定してもよい。このような優先度、優先順位は、記憶部41に記憶されている。そして優先度に従ったスケジュール計算を、たとえば人物の移動を優先する待ち時間を許さないというno-waitの制約条件を追加することで実現することができる。
(第4実施形態)
次に、本開示の第4実施形態に関して、図22を用いて説明する。本実施形態では、検出装置50の監視情報を用いて、搬送スケジュールを再計算する点に特徴を有する。図22は、本実施形態のサーバ40の処理を示すフローチャートである。図22に示すフローチャートは、サーバ40が電源投入状態において、短時間に繰り返し実行する。
ステップS1では、検出装置50から監視情報を、サーバ用受信部42を介して取得し、ステップS2に移る。ステップS2では、監視情報を用いて、経路に異常があるか否かを判断し、異常がある場合は、ステップS3に移り、異常がない場合は、本フローを終了する。
経路異常には、静的な異常と動的な異常を含む。静的な異常は、事前にわかっている工事などの異常である。動的な異常とは、AGV30の自動制御などに起因する一時停止、荷崩れなどの物理的な不具合による一時停止などが含まれる。
ステップS3では、経路に異常があるので、異常によって搬送スケジュールを再計算する必要があるか否かを判断し、再計算が必要な場合は、ステップS4に移り、再計算が不要な場合は本フローを終了する。再計算が必要な場合は、異常によって搬送スケジュールの経路で搬送できない場合である。
ステップS4では、経路異常を考慮して、搬送工程を設定し直し、ステップS5に移る。ステップS5では、経路異常を考慮して、搬送スケジュールを再計算して、ステップS6に移る。ステップS6では、再計算した搬送スケジュールをサーバ用送信部43から各AGV30に送信するように制御し、本フローを終了する。
このように設定部141は、経路異常がある場合には、移動不可部分を回避する移動経路を設定する。これによって異常がある経路は、AGV30が移動することを抑制することができる。
(その他の実施形態)
以上、本開示の好ましい実施形態について説明したが、本開示は前述した実施形態に何ら制限されることなく、本開示の主旨を逸脱しない範囲において種々変形して実施することが可能である。
前述の実施形態の構造は、あくまで例示であって、本開示の範囲はこれらの記載の範囲に限定されるものではない。本開示の範囲は、特許請求の範囲の記載によって示され、さらに特許請求の範囲の記載と均等の意味及び範囲内での全ての変更を含むものである。
前述の第1実施形態では、移動体は、AGV30によって実現されているが、AGV30に限るものではない。移動体は、同時刻に同じ位置に存在すると衝突や、デッドロックが発生する移動体にはすべて利用可能である。
たとえば移動体は、閉空間における搬送ロボットであってもよい。閉空間とは、移動体のみが存在できるエリアを区切り、移動体が走行する空間である。移動体は、例えば、製造現場、病院、空港およびデパート内のパトロールロボット、監視ロボット、案内ロボットおよび搬送ロボットであってもよい。
また移動体は、道路を走行する車、タクシーおよびバスのようにドライバーが自律的に運転するモビリティであってもよい。その場合は、サーバ用制御部45によって実現されていた機能、たとえば計算部144および設定部141などを車両側に備え、車両側からサーバ40へ目的地と経路を送信してもよい。またサーバ用制御部45とAGV30とが処理が分担するように構成してもよく、たとえば計算部144の機能をサーバ40が有し、設定部141の機能をAGV30が有して、相互に通信することで経路を決定してもよい。さらに移動体は、自動運転車のように運転の仕方を管制制御されるようなモビリティであってもよい。また移動体は、電車および飛行機であってもよい。線路を共有しながら走行する電車、および滑走路を共有しながら利用する飛行機のスケジューリングにも利用することができる。さらに移動体は、ガントリークレーンおよび荷物搬送用のエレベーターなど経路や空間を占有しながら動くものであってもよい。
前述の第1実施形態では、経路は固定されていたが、固定でなくてもよい。経路は、たとえば事前に固定している必要はなく、途中で変更になってもよい。経路が都度変わっても、それを工程に反映し、再度スケジューリング計算をすれば良い。また経路を都度変える制御方法であってもよい。したがって移動体は、無軌道AGVのように監視装置を用いて経路を計算するような移動体であってもよい。
またスケジューリング対象は経路全体であってもよく、経路が交差する交差点、経路が重複する特定経路の出入口のみでも良い。経路の交差点ごとにフォーカスを当てて、都度計算してもよい。また、その結果を搬送システムや信号機のような制御に応用することもできる。また設定部141は、特定経路に1つのAGV30がある場合は、特定経路の全体を他のAGV30の使用を禁止するように搬送工程を設定してもよい。
前述の第1実施形態では、図8に示す数式によって搬送スケジュールを決定しているが、このような数式に限るものではない。図8に示した本実施形態の数式は、一例であって、他の式によって搬送スケジュールを計算してもよい。
前述の第1実施形態では、位置検出部33は、GNSS受信器を用いて、AGV30の位置を検出しているが、このような構成に限るものではない。たとえば電波を送受信するIoTルータおよびIoTタグを用いて、IoTタグをAGV30に設け、IoTルータを複数の固定位置に設け、IoTルータと通信する電波強度でIoTタグの位置、すなわちAGV30の位置を推定してもよい。
前述の第1実施形態において、サーバ用制御部45によって実現されていた機能は、前述のものとは異なるハードウェアおよびソフトウェア、またはこれらの組み合わせによって実現してもよい。サーバ用制御部45は、たとえば他の制御装置と通信し、他の制御装置が処理の一部または全部を実行してもよい。サーバ用制御部45が電子回路によって実現される場合、それは多数の論理回路を含むデジタル回路、またはアナログ回路によって実現することができる。