本実施形態の技術的背景について説明する。
近年、多品種少量生産の一般化に伴い、生産工程における柔軟性を生み出すことが必要となってきている。例えば、生産ラインの各工程をモジュール化し、自由に組み替えて、工程間をAGV(無人搬送車)で搬送させることや、作業用のアーム付の移動ロボットを複数の作業場所を移動させながら作業させることが行われている。
また、物流現場の深刻な人手不足を背景として、ネット通販などの物流センターでは、省人化する取り組みが加速している。例えば、AGVや自動走行フォークリフトと、ピッキングロボットとを組み合わせることなどで、これに対応する方法などがある。
さらに、自動車の自動走行技術の進歩に伴い、無人の状態で自動車群を駐車場で自動走行させ駐車させる自動バレーパーキングや、工事現場や採掘場等で遠隔操縦された無人の建機移動体を走行させるなどの試みも、実用段階に達している。
狭いエリア内で多数の自動走行移動体の移動を効率的に制御するため、衝突やデッドロックといった移動体同士の競合を回避することが必要である。これまで、双方向に同時走行可能な複線走行路、複数の一方向ループ、及び格子状などの専用の走行路や、走行スペースを予め設置することで、これに対処しているのが一般であった。
このような専用の走行路等を用いることを前提に、ある関連技術では、全ての移動体の経路で同一走行路の逆方向の移動が発生しないように計画を策定している。しかしながら、作業者も使用する既存通路を流用して段階的な導入を進める場合は、同一走行路で双方向の移動が発生せざるを得ない形状の走行路を利用する場合、又は安全等の理由等で予め双方向の移動が発生する経路を指定する場合でも、汎用的に運行計画を立案することが可能なシステムが必要となる。上述の関連技術では、この条件での適用は困難である。
また、別の関連技術として、一台ずつ移動体の走行計画を決定(移動体を予約)し、先に予約した移動体と逆方向走行が生じないように、次の移動体の走行計画を決定するものがある。この関連技術では、移動体の予約順序に走行効率が大きく左右されて、全体の効率が悪化するという問題があった。
また、専用の走行路等を用いることは、工事コストがかかり、利用開始後の走行路レイアウトの段階的な変更も容易ではないという問題がある。
本実施形態は、このようにAGVや移動ロボットなど複数の移動体を走行させる場合に、移動体間の衝突又はデッドロックなどの競合を発生させないように、効率的に走行させることを実現する。本実施形態は一例として、移動体として、予め敷設されたレールやガイドテープなど専用の走行路上を走行する場合を扱うが、自由平面上を自ら位置を同定しながら走行する自律走行タイプの移動体にも、本実施形態は適用可能である。以下、本実施形態について詳細に説明する。
以下、図面を参照しながら、本発明の実施形態について説明する。
図1は、第1の実施形態に係る運行計画システムを備えた全体システム構成の一例を示す。全体システム構成は、運行計画システム1、複数の移動体301_1〜301_N、複数のセンサ401_1〜401_M、複数の通信装置501_1〜501_Kを備える。運行計画システム1は、運行計画装置100、運行管理装置200を備える。任意の移動体を移動体301と記載する。任意のセンサをセンサ401と記載する。任意の通信装置を通信装置501と記載する。
運行計画装置100と運行管理装置200とは、同じ計算機システム上に存在していてもよい。あるいは、運行計画装置100と運行管理装置200とが、異なる計算機システム上に存在し、互いにネットワークを介して接続されていてもよい。
運行計画システム1は、例えば狭いエリアに複数の走行路により構成した走行路ネットワークを配置して、多数の移動体が走行路ネットワークを低速で自動走行する場合に、デッドロック又は衝突等の競合を起こさないように、全体として効率良く運行を制御する。
移動体301_1〜301_Nは、AGV(無人搬送車:Automatic Guided Vehicle)、自律型の移動ロボット、自動走行の車両(例えば自動走行車)などの、自動で移動可能な移動体である。移動体301_1〜301_Nは、例えば、工場内、倉庫内、施設敷地内などのエリアに配置された走行路ネットワークを走行する。
図2は、走行路ネットワークの例を示す上面図である。走行路ネットワークにおいて複数の移動体の運行を制御する様子が模式的に示されている。ある施設のフロアにガイドテープ10による走行路ネットワークが配置されている。直線のガイドテープ10を走行路として組み合わせることで、走行路ネットワークが構成されている。この例では、個々の走行路は直線の形状であるが、これは一例に過ぎない。走行路は曲線の形状でもよいし、直線と曲線の組み合わせた形状でもよい。
なお、ガイドテープ以外に、走行路上の要所にマーカーを配置する方法や、移動体自身が自己位置を検知して仮想的な走行路ネットワーク上を走行する場合など複数の方法があり、走行路ネットワークの実現方法は、ここでは限定しない。
移動体12A、12B、12C、12D、12E、12F、12G、12H、12I、12J、12K、12Lは図1の移動体301に対応し、ガイドテープ10に沿って前方向、後方向又は前後両方向に移動できる。移動体は前後を反転するように回転可能であってもよい。また、走行路の形状に依存して、移動体は、斜め方向など、前後以外の方向に移動できてもよい。
走行路の端部、走行路同士の交差部(例えば分岐合流部)の近傍には搬入口13A、13B、13C、13D、13E、13F及び棚14A、14B、14C、14D、14Eが設けられている。走行路の端部、走行路同士の交差部の近傍、走行路の途中(走行路の両端の間)、その他の任意の箇所に棚14A〜14E、搬入口13A〜13Fの全部又は一部には、図1のセンサ401及び通信装置501が配置されている。
移動体12A〜12Lは、図1の運行計画システム1の管理の元、各走行路を移動し、予め指示された作業を行う。例えば、搬入口から荷物を受け取り、受け取った荷物を棚に運び、積み上げる。また、棚から荷物を積み降ろし、荷物を搬入口まで運ぶ。図における二重丸は荷物を模式的に表している。このような移動及び作業を各移動体は、運行計画システム1から与えられた移動指令データに基づき自動で行う。なお、作業は荷物の搬送に限定せず、また、作業を行わずにただ移動する場合もあり得る。
本実施形態に係る運行計画装置100は、各移動体が行うべき作業の内容及び作業の順序に基づき各移動体が走行すべき経路を表した経路計画を生成し(各移動体の経路計画が予め与えられている場合もある)、経路計画に基づき、各移動体に衝突又はデッドロックを生じさせないように、各移動体が各走行路を走行するタイミングを定めた走行計画(以下、走行タイミング計画と称する)を生成する。運行管理装置200は、各移動体の走行タイミング計画に基づく移動指令データを各移動体に送信することで、各移動体の運行を制御する。また、運行管理装置200は、各移動体の状態を検知して、各移動体の運行を管理する。
ここでデッドロックとは、任意の移動体が走行ネットワークにおける任意の交差部(例えば分岐合流部)又は走行路の端部に移動できない状態になることである。衝突は、移動体が別の移動体に接触することである。
図3(A)はデッドロックの例、図3(B)は衝突の例を示す。図3(A)では同一の走行路を2つの移動体が互いに逆方向に走行している。2つの移動体は前進のみ可能であるとする。この場合、2つの移動体は任意の交差部又は端部に移動できなくなり、デッドロックが発生する。図3(B)では、同一の走行路を2つの移動体が同じ方向に走行しているが、後ろの移動体が前の移動体よりも速度が速いため、後ろの移動体が前の移動体に衝突する。
このようにデッドロック又は衝突が起こることを、移動体が競合する(又は干渉する)と表現する。但し、競合はこの例に限定されない。例えば交差部(分岐合流部)に2つの移動体が同時に到着することでもよい。
図1の運行計画システム1は、各移動体に競合(衝突又はデッドロック等)を生じさずに、各移動体の運行を効率的に行うことを実現するものである。
図1の運行計画装置100は、走行路構造記憶部101、経路計画記憶部102、運行計画記憶部103、状態記憶部104、走行タイミング計画部(計画部)105、更新位置決定部106、指令部(制御部)107、再計画判定部108、経路計画部109、探索ログ記憶部111、モデル記憶部112、モデル生成部113、評価値算出部114、及び通信部110を備える。本装置100のユーザから各種の指示又はデータの入力を行う入力装置(例えばマウス、キーボード、タッチパネル)が設けられていてもよい。また、各記憶部内のデータ又は各部で生成されるデータを表示する表示装置(例えば液晶ディスプレイ、有機エレクトロルミネッセンスディスプレイ)が本装置100に設けられてもよい。
運行計画装置100の通信部110は、運行管理装置200の通信部201と通信する。通信部110及び通信部201間の通信は、無線による通信でも有線による通信でもよい。運行管理装置200の通信部201は、運行計画装置100の通信部110及び移動体301と通信する。通信部201と移動体301との通信は無線通信である。但し、有線通信を排除しない。一部又は全ての移動体301が通信部201と通信できなくてもよい。但し、この場合でも、移動体301は路側に設置された通信装置501(後述)と通信できる。移動体301は、通信装置501の通信可能な範囲内で、通信装置501と通信できる。運行計画装置100と運行管理装置200が同一の装置である場合、通信部110を省略してもよい。
走行路構造記憶部101は、走行路ネットワークの構造を表す情報(走行路構造情報)を内部に記憶している。走行路構造情報は、例えば、複数のノードと、ノード間を接続する複数のアーク(走行路)とを含むグラフ構造として表現できる。
図4は走行路構造情報の例を示す。ノード間を結合する直線によって個々の走行路は表されている。図4(A)の各円がノードを表し、円間をつなぐ線分がアーク(走行路)を表す。ノードは、走行路の端部、及び走行路同士の交差部を表す。走行路ネットワークにおいて予め指定した箇所を指定領域と称する。ユーザが任意に定めた箇所を指定領域とすることも許容される。荷物の積み上げ・積み降ろし場所、待機場所等の任意の箇所を指定領域として指定できる。一例として、交差部につながる走行路端部、交差部につながらない走行路端部(走行路の行き止まり)がこのような場所である。その他、走行路の任意の箇所(例えば走行路の両端間の任意の領域)を指定領域としてもよい。交差部そのものを指定領域としてもよい。移動体は、指定領域を通過したり、一時的に滞在したりする。移動体が一時的に滞在する例としては、作業のために一時的に停止、他の移動体が走行路を通過するのを待つため一時的に停止、行うべき作業が存在せず次の作業が発生するまで停止すること、充電のための待機、自動運転車の駐車などがある。
図4(B)は、ノードの詳細情報として、ノードID、X座標、Y座標を表す。例えば、ノードAの座標は(X,Y)=(20,20)である。
図4(C)は、走行路の詳細情報として、走行路ID、走行路の両端のノードのIDを示す。例えばノードA、B間の走行路のIDは1、走行路の両端のノードはA及びBである。ノード間の距離(アークの距離)が走行路IDに対応づけて走行路構造情報に含めてもよい。あるいは、アークの距離をその両側のノードの位置に基づき計算してもよい。
図5は、走行路構造情報の他の例を示す。図5(A)は、図4の走行路構造情報から一部のノードを省略して、特定のノードのみを残したものである。特定のノードは、荷物の積み上げ・積み降ろし場所や待機場所などの指定領域又はその近傍のノードである。
図5(B)は、各走行路の走行路ID、走行路の両端のノードのID、各走行路を走行するのに要する標準時間を示す。例えば、ノードB及びC間の走行路の走行路IDは1であり、走行路の両端のノードはB及びCであり、走行路を走行するのに要する標準時間は180である。時間の単位は何でもよい。
経路計画部109は、予め決められた各移動体の行うべき作業の内容と作業の順序に関する情報に基づき、各移動体が通過する複数の指定領域の通過順序を指定した経路計画を生成し、生成した経路計画のデータを経路計画記憶部102に格納する。経路計画の生成方法は任意でよいが、一例として、複数の移動体が同一走行路を逆方向に進行する走行距離が少なくなることを評価基準又はその一部として、各移動体の経路計画を生成してもよい。経路計画は、外部の装置が生成したもの又はユーザが生成したものでもよい。この場合、経路計画部109は、当該経路計画を取得して、経路計画記憶部102に格納する。経路計画部109は、通信部110を介して外部の装置から経路計画のデータを受信してもよい。経路計画部109は、ユーザが操作する入力装置を介して経路計画のデータを取得してもよい。
経路計画記憶部102は、各移動体の経路計画のデータを内部に記憶する。
図6(A)に、ある移動体の経路計画の一例を示す。この例では、移動体が図4(A)の指定領域Lから出発し、K,I,G,E,C,Aを経由して、指定領域Bに行く。次にA,C,D,F,E,G,H,J,I,Kを経由して指定領域Mに行き、再びK,I,G,E,C,Aを経由して、指定領域Bに行く。またA,C,D,F,E,G,H,J,I,Kを経由して、指定領域Lに戻る。ここでは便宜上、ノードのIDを用いて指定領域を表現している。ノードが交差部に対応する場合、当該ノードのIDを用いた指定領域は、当該ノードが表す交差部につながる走行路端部(交差部に入る手前)を表すとして内部的に解釈してもよい。例えば、指定領域Lの次の指定領域Kは、ノードKが表す交差部に入る直前の走行路LKの端部を指すと解釈する。ここで走行路LKとはノードLとノードK間の走行路である。以下の説明でもノードIDを用いて指定領域を示すが、この場合もここで行った説明と同様の意味であるとする。
上記の例の経路は、指定領域を往復するループ状の経路を含んでいる。この経路計画は1つの移動体についてのものであり、他の各移動体についても経路計画が用意されている。なお経路はループ状である必要はない。各移動体が長時間に渡って異なる走行路を走行してもよい。
荷物の搬送を目的とした移動体や、移動しながら各種作業を行う移動ロボットなどの場合は、経路計画において作業を行う指定領域に対して、当該作業の情報が追加されてもよい。
図6(B)は、この場合の経路計画の例を示す。この例では、指定領域LとMで棚からの荷物の積み込み作業を行うことを指示する情報(Load)、指定領域Bで荷物を降ろす作業を行うことを指示する情報(Unload)が挿入されている。ここで、Loadは荷物積み作業、UnLoadは荷物降し作業を示す。なお、積み上げ等の作業を行う際の作業対象の棚等は移動体から見て左方向、右方向、前方向、斜め方向などどの方向にあるかは予め定められていてもよいし、移動体がセンサ等で自動検出してもよい。
状態記憶部104は、各移動体の状態を表す情報、及び移動体の固有の情報を内部に記憶している。
移動体の状態として、移動体の位置情報、移動体が搭載するバッテリーの残存電力、移動体が荷物を保有しているか否か(移動体が荷物を搬送する場合)、搬送中の荷物の種類や数等がある。位置情報は、移動体の現在位置(最も直近に検知された位置)、及び、各移動体がこれまで通過した位置の履歴情報を含む。移動体の状態を表す情報は、後述するように運行管理装置200の状態検知部202(後述)により取得される。
移動体の固有の情報として、例えば、標準速度、最大速度、最低速度、移動体のサイズ、移動可能な方向など、移動体の仕様情報がある。また、バッテリーの残存電力に応じた標準速度の変化率がある(例えば、残存電力が少ないほど、標準速度が低くされる)。また、荷物の搬送を目的とした移動体であれば、荷物の積み降しに要する作業時間の情報(例えば所定個数の荷物を積み上げ又は積み下ろすのに要する時間)がある。ここに挙げた情報は一例に過ぎず、他の情報でもよい。
走行タイミング計画部105は、各移動体の経路計画を変更しない制約条件の下で、計画対象となる複数の移動体について、競合(衝突又はデッドロック)を発生させないように走行計画(走行タイミング計画)を生成する。走行タイミング計画は、複数の移動体について、各指定領域に対する移動体の出発・到着及び通過のタイミングを定めた計画である。走行タイミング計画は、複数の移動体が出発・到着及び通過する複数の指定領域と、複数の移動体が各指定領域に到着する時刻又は各指定領域を出発する時刻とを含む。走行計画は、複数の移動体の個別の走行計画(個別走行計画)の集合である。個別走行計画は、一例として、移動体が出発・到着及び通過する複数の指定領域と、移動体が各指定領域に到着する時刻又は各指定領域を出発する時刻とを含む。走行タイミング計画は、各移動体が指定領域に滞在する時間、各移動体が指定領域間を移動する時間などの情報を含んでもよい。
走行タイミング計画を生成する対象となる移動体は、一例として運行管理装置200により運行管理される全ての移動体である。走行タイミング計画部105は、走行タイミング計画を生成するために、複数の移動体の経路計画、及び、複数の移動体の情報(状態を表す情報及び固有情報)を用いる。
走行タイミング計画部105は、初期計画の生成時、もしくは再計画判定部108により再計画を行うことが決定された場合に、走行タイミング計画を生成する。走行タイミング計画の更新は、後述するように移動体に対して決定される更新位置以降の経路部分に対して行う。
図7は、走行タイミング計画部105により生成された走行タイミング計画の一例を示す。3つの移動体(AGV0、AGV1、AGV2)に対する走行タイミング計画の例が示される。走行タイミング計画は、AGV0の個別走行計画、AGV1の個別走行計画、AGV2の個別走行計画を含んでいる。
“MOVE”は、移動を指示するコマンド(移動コマンド)であり、移動時間を引数として有する。例えば、AGV0の走行タイミング計画において、MOVE−K−I−37.0は、指定領域K(ノードKが表す交差部につながる走行路LKの端部)から指定領域I(ノードIが表す交差部につながる走行路KIの端部)に37単位時間で移動することを示す。37単位時間が、引数として指定される移動時間である。
“WAIT”は移動先の指定領域(ノードの手前)で待機することを指示するコマンド(待機コマンド)である。例えばMOVE−I−G−10.0,WAIT−52.0,とコマンドが続いた場合は、指定領域Iから指定領域Gに移動した際に、指定領域G(ノードGの手前)で52単位時間待機することを示す。したがって、この場合、MOVE−I−G−10.0は、指定領域Gまで10単位時間で移動し、その場で52単位時間待機したら、次のコマンドに従って移動する(ノードGが表す交差部に入り、さらに次の走行路へ入る)。待機場所は、指定領域でなくてもよい。待機場所は、交差部から離れた位置であればよい。
本例では、移動体AGV0の経路計画は、図4(A)の指定領域Lから出発して、他の指定領域を経由して指定領域Bに行き、次に他の指定領域を経由してMに行き、再び他の指定領域を経由してBに行き、また他の指定領域を経由してLに戻る経路を指定する。
移動体AGV1の経路計画は、図4(A)の指定領域Bから出発して他の指定領域を経由して指定領域Mに行き、再度他の指定領域を経由して指定領域Bに戻ることを2回反復数する経路を指定する。
移動体AGV2の経路計画は、図4(A)の指定領域Kから出発して他の指定領域を経由して指定領域Bに行き、指定領域Lを含む他の指定領域を経由して再度Bに行き、他の指定領域を経由して指定領域Kに戻る経路を指定する。
走行タイミング計画部105は、これらのAGV0、AGV1、AGV2の経路計画(図6参照)が与えられた条件の下で、後述する探索アルゴリズムを実行することにより、図7に示したAGV0、AGV1、AGV2の個別走行計画を含む走行タイミング計画を生成する。走行タイミング計画は、例えば他の移動体が通過するまで交差部の手前で移動体を待機させるなどの時間調整を含み、これによりAGV0、AGV1及びAGV2の各指定場所の到着時刻又は出発時刻等を調整する。これにより競合(衝突又はデッドロック等)の発生を阻止する。
走行タイミング計画部105は、MOVEコマンドで引数として指定する移動時間を算出するに当たっては、図4の走行路構造情報における走行路毎の距離を、移動体がその標準速度で移動すると仮定してもよい。走行路の曲率又は傾斜などに応じて、移動体の速度が標準速度から変化する場合を考慮して、図5の走行路構造情報のように走行路に対して標準時間を予め与えてもよい。この場合、標準時間で移動できるように移動体は移動速度を最大速度と最低速度の間で自律的に制御してもよい。また、バッテリーの残存電力に応じた標準速度の変化率等を与えて標準速度を補正することもあり得る。また、荷物の搬送を目的とした移動体であれば、荷物搬送中は標準速度を速い値又は遅い値に補正してもよい。また、走行実績データを元に、各走行路を走行する標準時間を補正してもよい。このように走行タイミング計画部105は、速度に関する条件を満たすように移動時間を算出する。
走行タイミング計画部105は、荷物の搬送を目的する移動体や、荷物の積み降し等を含む各種作業を行う移動ロボットに対しては、荷物の積み降し等に要する作業時間の情報等も反映させて、走行タイミング計画を生成する。前述した経路計画(図6(B)参照)のように、指定領域で行う作業内容が指定されていてもよい。また、指定領域と移動体の種類との組に応じて、予め移動体が指定領域で行う作業内容が決まっていてもよい。
図7に示した走行タイミング計画の例は、指定領域MとLで荷物の積み込みに40単位時間、指定領域Bで荷物を降しに130単位時間を要することを仮定している。荷物の積み込み及び積み降しの作業時間は、荷物の種類・個数、又は移動体の種類に応じた値が予め与えられている。この値は、状態記憶部104に格納されていてもよいし、経路計画に付与されていてもよい。また、走行実績データを元に作業時間を補正してもよい。移動体に対して作業の実施を指示するコマンドを、当該作業を行う場所の指定領域に関連づけてもよい。移動体に指示するコマンドは予め移動体に実行させるプログラムコードの内部に埋め込まれていてもよい。
図7に示した走行タイミング計画のフォーマットは、移動体のコマンドを並べた形式であるが、これは一例に過ぎない。走行タイミング計画のフォーマットは特に限定はしない。各移動体の経路計画の一部の指定領域、もしくは全ての指定領域に対して、移動体が到着すべき時刻及び出発すべき時刻が特定可能な形式で含まれていればよい。
走行タイミング計画部105は、走行タイミング計画と、各移動体の経路計画とに基づき、各移動体の運行計画を生成する。各移動体の運行計画は、移動体の経路計画の一部もしくは全ての指定領域に、当該移動体が到着すべき時刻及び出発すべき時刻を特定する情報を設定したものである。
運行計画記憶部103は、各移動体の運行計画を内部に記憶する。
図8に、図7の移動体(AGV0)の運行計画の一部を示す。図6の経路計画に対して図7のAGV0の時刻情報が付与されている。AGV0は指定領域Lを時刻0に出発し、指定領域Kに時刻70に到着し、そのまま停止することなく出発し(すなわち指定領域Kを時刻70で通過)、指定領域Iを時刻107で通過し、指定領域Gに時刻117に到着し、その場で52単位時間待機し、時刻169に出発する。図8に示した運行計画のフォーマットは一例に過ぎず、フォーマットは特に限定されない。例えば、運行計画は、走行タイミング計画のAGV0の計画部分(AGV0の個別走行計画)とAGV0の経路計画とを単に対応づけたものでもよい。
指令部(制御部)107は、走行タイミング計画に基づく各移動体の移動指令データを、通信部110を介して、運行管理装置200に送信する。運行管理装置200は、通信部201を介して、運行計画装置100の通信部110から各移動体の移動指令データを受信する。運行管理装置200は、各移動体の運行指令データを、通信部201を介して、各移動体に送信する。このように指令部107は、各移動体の移動指令データを送信することにより、各移動体の走行を制御する。
移動指令データの形態の第1の例として、各移動体の経路計画上の一部もしくは全ての指定領域に対する到着時刻及び出発時刻を特定可能な情報を指示する形態がある。例えば、図7の走行タイミング計画の場合、計画そのものがコマンドの列であるため、これをそのまま移動指令データとして用いてもよい。あるいは、図7とは別のフォーマットを有する走行タイミング計画を生成する場合、走行タイミング計画から各移動体が解釈可能なコマンド列を生成し、このコマンド列を移動指令データとして各移動体に送信してもよい。
移動指令データの形態の第2の例として、各走行路の移動時間と各指定領域の待機時間を移動体に指示する形態もある。
上述した2つの例のいずれの場合でも、各移動体は移動指令データに従って、自身で走行を制御する。運行管理装置200が、各移動体に待機中の指定領域を出発することを指示するコマンド、及び、次に待機のため停止すべき指定領域を指定するコマンドを、各移動体に送信することを逐次的に反復してもよい。この場合、各移動体は移動指令データとして運行管理装置200からコマンドを逐次的に受信及び実行することを繰り返す。
移動指令データの形態の第3の例として、走行タイミング計画から、経路計画上で複数の移動体が通過する交差部を特定し、交差部を複数の移動体が通過する順番を、複数の移動体に指示してもよい。この場合、交差部を指定領域とし、指定領域を通過する順番を複数の移動体に指示してもよい。複数の移動体に通過順序を厳守させることで、走行タイミング計画で指定された到着時刻と現実の到着時刻とが前後にずれたとしても、移動体同士に衝突又はデッドロック等の競合が発生することを防止できる。なお、指定領域に対する複数の移動体の通過順序は、走行タイミング計画に基づき算出できる。
図7における走行タイミング計画に基づき、ノードKの交差部に設定した指定領域(指定領域Kaと記載する)を通過(到着)する順番と、時刻(経過時間)とを、AGV0、AGV1、AGV2に指示するコマンドの例を以下に示す。
AGV2 0
AGV0 70
AGV1 205
AGV1 453
AGV2 593
AGV2 773
AGV0 920
AGV0 1168
AGV1 1218
AGV1 1466
AGV2 1606
AGV0 1925
最初に(時刻0の時点で)AGV2が指定領域Kaを通過し、次に時刻70の時点でAGV0が通過し、その次に、時刻205の時点でAGV1が通過する。以降同様にして、解釈される。
指定領域の通過順序を制御する方法としては、運行管理装置200が移動コマンドの実行を管理する方法がある。運行管理装置200は移動指令データの実行(コマンドの実行)を管理する。例えば、運行管理装置200は、AGV2が先に通過する必要のある指定領域にAGV0が先に到着することが見込まれた場合は、AGV2が通過するまで、当該指定領域の手前もしくは指定領域から離れた位置でAGV0を待機させる。または、AGV0の速度調整をして、指定領域におけるAGV0の到着時刻(通過時刻)を遅らせる。このような制御を待機コマンドや速度調整コマンド(例えば減速コマンド)を移動体に送信することで行う。
制御方法の他の例として、運行管理装置200は指定領域を最後に通過した移動体の識別情報(ID)を、状態検知部202を介して検知及び記憶し、当該IDを他の移動体に送信する。他の移動体は、運行管理装置200から受信されるIDに基づき、自移動体に先行して通過すべき移動体が指定領域を通過したかチェックする。例えば、上記のコマンド例における
AGV0 70
AGV1 205
AGV1 453
の場合、AGV1は、最初に指定領域Kaを通過する前にAGV0が先に通過しているか否かを運行管理装置200から受信されるIDに基づき確認する。AGV1は、AGV0が先に通過していることを確認した後に、指定領域Kを通過する。その後は、直前に(最後)に指定領域Kaを通過したのが自移動体であることを確認した後に、再度、AGV0は指定領域Kaを通過する。
再計画判定部108は、運行計画記憶部103に記憶されている運行計画と、状態検知部202により検知された移動体の状態とを比較して、再計画を行うべきか否かを判定する。再計画とは、運行計画の更新、すなわち経路計画及び走行タイミング計画の少なくとも後者の更新を意味する。走行タイミング計画の更新は、複数の移動体の個別走行計画のうちの少なくとも1つを更新することを意味する。再計画判定部108は、少なくとも1台の移動体について、運行計画を守ることができないと判断した場合は、再計画トリガーを発生させる。また、新規に作業や搬送すべき荷物が発生するなど外部要因により再計画が必要になった場合も再計画トリガーを発生させる。再計画は、一例として、計画対象となる全ての移動体が対象となる。再計画の結果として、個別走行計画が変更されない移動体も存在しうる。以下、運行計画が守れない例を、第1の例及び第2の例として示す。
(第1の例)走行タイミング計画において各移動体が指定領域に到着する時刻(到着予定時刻)もしくは出発する時刻(出発予定時刻)と、各移動体の状態(移動体の現在位置、移動体が最後に通過または出発した指定領域など)とを比較する。そして、移動体が到着予定時刻までに到着できない、または移動体が到着予定時刻に対して閾値時間以上の到着の遅れが発生することが確定した時点で、再計画トリガーを発生させる。この判断を行うに際して、移動体が走行路を最大可能速度で移動する又は標準速度で移動するなど、種々の仮定をおいてもよい。
(第2の例)として、走行タイミング計画における指定領域を各移動体が通過する順番と、各移動体の現在位置、もしくは最後に通過又は出発した指定領域とを比較する。そして、通過順番が定められている指定領域に、先行すべき移動体が到着予定時刻に閾値時間以上遅れることが確定した時点で、再計画トリガーを発生させる。例えば、先行すべき移動体が走行路で走行可能な最大速度で移動しても到着予定時刻に間に合わない場合は、閾値時間以上遅れることが確定したと判断する。
更新位置決定部106は、再計画判定部108により再計画を行うことが決定された場合に、各移動体に対して運行計画を更新すべきタイミングを決定する。本実施形態では移動体が更新位置に到着したタイミングに応じて、移動体の運行計画を更新する。このため更新位置決定部106は、各移動体の更新位置を決定する。移動体は、更新位置に達するまで更新前の運行計画(更新前の走行タイミング計画)で運行し、更新位置に達した後は、更新後の運行計画(更新後の走行タイミング計画)に従って動作する。運行計画を更新するタイミングは、更新位置によって特定する例に限定されず、例えば時刻によって指定してもよい。
更新位置の例として、各移動体が運行管理装置200とリアルタイムに通信できる場合は、任意の位置(例えば移動体の現在位置、あるいは、演算に要する時間を考慮して、現在位置に一定のマージン時間の間移動した後の位置など)でよい。
移動体が指定領域又はその近傍に配置されている通信装置501を介してのみ運行管理装置200と通信できる場合は、指定領域又はその近傍の位置を、更新位置とする。通信装置501は、指定領域又はその近傍でなく、通信装置501が走行路の途中に配置されていてもよい。通信装置501と通信可能な範囲であれば、更新位置はどこでもよい。移動体が走行の途中で停止すると他の移動体の走行を妨害する可能性(例えば後ろからくる移動体と衝突する可能性)などがある場合は、移動体が現在向かっている指定領域又はその手前を更新位置としてもよい。
経路計画部109は、再計画判定部108により再計画を行うことが決定された場合に、各移動体の更新位置を起点とした経路計画を各移動体に対して生成する。
一例として、現在の経路計画において更新位置以降の経路部分の計画をそのまま更新後の経路計画とする。すなわち、移動体の経路計画に示される経路のうち、まだ移動していない経路の計画部分を、更新後の経路計画とする。例えば、現在の経路計画が図6(A)の経路計画の場合において、移動体の現在位置が指定領域E(ノードEが表す交差部の手前)であり、次の移動先がノードC(ノードCが表す交差部の手前)だとする。この場合、移動体がまだ移動していない経路の計画部分(更新後の経路計画)は、図6(A)の最初の4つのノードL、K、I、Gを除去して、以下のようになる。
(更新後の経路計画)
E,C,A,B,A,C,D,F,E,G,H,J,I,K,M,K,I,G,E,C,A,B,A,C,D,F,E,G,H,J,I,K,L,K,I,G,E,
あるいは、他の例として、経路計画部109は、再計画判定部108により再計画を行うことが決定された場合に、複数の移動体が同時に逆方向に進行する走行路(走行区間)の合計距離が少なくなることを、評価基準又はその一部として、各移動体の経路計画を生成してもよい。
あるいは、移動体の現在位置と移動体が行うべき作業内容とに応じて予め利用可能な経路計画の選択肢が複数与えられている場合、移動体の更新位置と残りの作業内容とに基づき、複数の選択肢の中から経路計画を選択してもよい。その他、予め与えられたアルゴリズムにより新たな経路計画を生成してもよい。経路計画を更新する方法は特に限定せず、既存の経路計画手法を用いてもよい。
走行タイミング計画部105は、更新後の経路計画に基づき、走行タイミング計画を再生成(更新)する。走行タイミング計画部105は、部分的にタイミングが更新されて、計画の時間の早い一部の競合が解消されている複数の仮走行計画(仮走行タイミング計画)を生成する。各仮走行タイミング計画について、複数の移動体の遅れ時間に基づく評価値を、評価値算出部114を用いて取得する。取得した評価値に基づき仮走行タイミング計画を選択しては、選択された仮走行タイミング計画の、競合が解消された範囲以後を変更した新たな仮走行タイミング計画を生成することを反復する探索処理を実施する。評価値算出部114は、一例として、走行タイミング計画の更新完了部分に発生する遅れ時間と、仮走行タイミング計画による走行タイミング計画の更新以後に発生する遅れ時間の予測値との合計を複数の移動体で総和した値を評価値とする。この場合、一例として、評価値が最小又は閾値以下の仮走行タイミングを選択する。
評価値の算出例は一例であり、この方法に限定されない。
遅れ時間の予測値は、例えば、移動体間の競合を無視して走行したと仮定し、走行距離に応じて一定の重みで遅延が発生するとみなして遅延時間を計算してもよいし、経路の勾配等を加味して遅延時間を計算してもよい。総和の代わりに、べき乗和を用いてもよい。走行タイミング計画部105は、探索後の仮走行タイミング計画で走行タイミング計画を更新する。
評価値算出部114は、評価値を算出する方法として、仮走行タイミング計画の競合が解消された範囲内については計画から評価値(例えば、遅れ時間)を計算する。それ以後の範囲に関しては予め定義された評価関数により算出する方法と、モデル生成部113によりデータから生成されたモデルを用いて仮走行タイミング計画における複数の移動体の状態特徴量から評価値を算出する(すなわち予測する)方法とがある。それぞれの詳細は後述する。
走行タイミング計画部105は、上記の探索処理において、モデルの生成に必要なデータである探索ログを各仮走行タイミング計画に対して取得し、取得した探索ログを探索ログ記憶部111に格納する。探索ログは、各仮走行タイミング計画における複数の移動体の状態特徴量と、仮走行タイミング計画における上述の競合が解消された範囲以後の部分の評価値の実績値とを含むデータ(第1データ)である。
図9は、探索ログの一例を示す。1つの行が1つの探索ログに対応する。探索ログは、複数の移動体の状態特徴量として、移動体1〜4の現在位置と残走行距離とを含む。移動体の状態特徴量は、移動体の走行状態を表す特徴量である。
移動体1〜4は、特定のIDの移動体である必要はなく、同じ走行タイミング計画においてIDと移動体が対応づいていればよい、過去の別の走行タイミング計画で別の4台の移動体が走行タイミング計画の対象になっていれば、当該4台の移動体がそれぞれ移動体1〜4に対応する。
移動体の状態特徴量は、荷物に関する情報を含んでもよい。荷物に関する情報として、例えば、移動体が保持している荷物の有無や数、搬送が終わっていない荷物の総数などがある。
現在位置は、移動体が位置する座標でもよいし、移動体が位置する指定領域のIDでもよいし、移動体が位置する走行路のIDでもよい。また、現在位置は、移動体走行路ネットワークを複数のエリアに分割したときのエリアの識別情報でもよい。エリアの識別情報について図10を用いて説明する。
図10は、図2と同様の走行路ネットワークをエリア1〜4の4つのエリアに分割した例を示す。図9のエリア1〜4は、図10のエリア1〜4に対応する。
残走行距離は、経路計画における現在位置(仮走行タイミング計画における競合が解消された範囲について各移動体が走行した後の予定位置)からの残りの走行距離である。
また、探索ログは、算出された評価値及び探索深さを含む。探索処理では初期状態(更新前の走行タイミング計画)から計画通り各移動体の走行を進めた場合の移動体同士の競合の検出と、競合が検出されるごとに競合を解消する仮走行タイミング計画の作成と、作成した仮走行タイミングの移動体同士における競合の検出とを行う。そして、以降、競合を解消する仮走行タイミング計画の作成と、作成した仮走行タイミング計画の移動体同士における競合の検出とを繰り返し行う(探索処理)。
初期状態から深さ方向に仮走行タイミング計画の作成に応じて状態が分岐していく探索木が得られる。探索の深さは、探索木の初期状態からの探索の深さ(階層)に相当し(後述する図15参照)、具体的には競合解消を行った回数に相当する。
探索ログにおける評価値は、探索が完了した後に確定した、探索中に予測した部分の実績値を記録する。例えば、完成後の走行タイミング計画の各途中状態における移動体の現在位置(仮走行タイミング計画における競合が解消された範囲について各移動体が走行した後の予定位置)から走行タイミング計画の最後まで走行における遅れ時間(競合を解消する時間調整の合計)を計算し、複数の移動体間で総和した値を用いている。
探索が最後まで行われた場合、探索ログの残存走行距離がゼロになる。時間制限などにより途中で探索が終了する場合もある。なお、探索ログ記憶部111には、過去に実行された複数の走行タイミング計画で取得された探索ログも蓄積されていてもよい。
探索処理の結果として、評価が最も高い仮走行タイミング計画が選択される。評価値の定義に応じて、評価値の値が大きいほど評価が高い場合、評価値の値が小さいほど評価が高い場合がある。図10の例では、評価値の値が小さいほど、評価が高いが、評価値の値が大きいほど、評価が高くなるように、評価値を定義してもよい。演算が行われた中で最も評価が高い仮走行タイミング計画を選択する。評価値が最小の仮走行タイミング計画が複数存在するときは、探索の深さが最も浅い仮走行タイミング計画を選択してもよい。探索の深さが浅いほど競合を解消する回数が少ない。また、評価値と探索深さの両方に基づき、仮走行タイミング計画を選択してもよい。
探索ログ記憶部111は、走行タイミング計画部105による探索処理が終了した際又は探索処理と並行して、探索木の途中の各状態に対応する各仮走行タイミングの評価値を、各状態における複数の移動体の状態特徴量と、各状態の探索深さとに対応付けて記憶する。
モデル生成部113は、探索ログ記憶部111に記憶されている複数の移動体の状態特徴量と評価値との組のデータに基づき、複数の移動体の状態特徴量と評価値とを関連付けたモデルを生成又は更新する。モデルは、複数の移動体の状態特徴量を入力として、評価値を出力する関数又はプログラム等である。
例えば、モデルは、与えられた複数の移動体の状態特徴量と類似している探索ログを探索ログ記憶部111から検索して、見つかった探索ログに含まれる評価値を出力するものでもよい。この方法は、近傍法と呼ばれている。入力として複数の移動体の状態特徴量のみでなく、探索深さが与えられてもよい。また、他のモデル例として、いわゆるニューラルネットワークモデル又は決定木などの機械学習で生成したモデルでもよい。例えばモデルがニューラルネットワークであれば、ニューラルネットワークのパラメータを生成又は更新する。
評価値算出部114は、モデル生成部113で生成されたモデルに基づき、走行タイミング計画部105から提供される複数の移動体の状態特徴量から、評価値を算出(予測)する。これにより、走行タイミング計画部105は探索処理において次々に生成する仮走行タイミング計画の評価値を高精度に取得することができる。
走行タイミング計画部105は、選択した仮走行タイミング計画によって更新した走行タイミング計画に基づき、各指定領域の時刻情報を取得し、取得した各指定領域の時刻情報を、更新後の経路計画に付与する。これにより、各移動体の運行計画を再生成する。走行タイミング計画部105は、再生成した運行計画によって運行計画記憶部103を更新する。
指令部(制御部)107は、更新された走行タイミング計画に基づき各移動体の移動指令データを生成し、各移動体の移動指令データを運行管理装置200に送信する。運行管理装置200は、各移動体が更新位置に存在するときに、各移動体に移動指令データを送信する。
運行管理装置200は、運行計画装置100から受信した各移動体の移動指令データに従って、各移動体を走行させるための実行管理と、各移動体の状態の管理とを行う。
運行管理装置200の通信部201は、移動体301_1〜301_N及び運行計画装置100と通信する。通信は無線でも有線でもよい。
運行管理装置200の状態検知部202は、通信装置501又はセンサ401を用いて、移動体の状態を表す情報を取得する。状態検知部202は、通信部201を用いて、移動体の状態を表す情報を取得してもよい。状態検知部202は、通信部201を介して各移動体の状態を表す情報を運行計画装置100に送信する。各移動体の状態を表す情報は、各移動体の状態が検知された時刻を含んでもよい。
センサ401は、移動体の状態を検知するためのセンサである。通信装置501は通信部201と比べて近距離で移動体と無線通信する装置である。センサ401及び通信装置501は、例えば、走行路で移動体が一時停止する可能性のある特定の場所に配置される。当該特定の場所は一例として指定領域又はその近傍である。
センサ401は、一例として近接センサ、圧力センサ、又は光電センサ等の路側センサである。センサ401は、特定の場所における移動体の到着、通過、方向、荷物の搭載有無等を検知する。センサ401は、施設の天井に設けられたカメラでもよい。この場合、カメラで天井から俯瞰するように施設内を撮影する。通信装置501は、例えば、近接無線通信、赤外線通信など比較的近距離で通信を行う装置である。通信装置501は、通信範囲内に存在する移動体と無線通信できる。
センサ401は、移動体から検知した情報を表す信号を状態検知部202に送信する。通信装置501は、移動体から受信した情報を状態検知部202に送信する。
状態検知部202は、センサ401又は通信装置501から受信した情報に基づき、移動体の状態を特定する。センサ401がカメラの場合、状態検知部202は、撮影した画像に基づき、各移動体の位置を特定する。センサ401又は通信装置501を用いることで、移動体が通信部201と通信できない場所に存在するときでも、移動体の状態を検知できる。
移動体の状態の例は、各移動体の位置(現在位置)、各移動体が指定領域を通過した時刻、各移動体の進行方向、各移動体が荷物を保有しているか否か(各移動体が荷物を搬送する場合)などを含む。
移動体が自装置で自己位置推定を行う機能を有する場合に、状態検知部202は、当該移動体が推定した位置情報を、通信部201又は通信装置501を介して、取得してもよい。自己位置推定の例としては、デッドレコニング、SLAM、GPS等の手段を用いるものがある。
また、移動体が通過する可能性のある場所に、無線タグ又はバーコードなどの位置検知用のマーカーを設置してもよい。場所は一例として指定領域又はその近傍である。この場合、移動体が、マーカーを検知することで、場所への到着もしくは通過を、移動体自体が検知できる。移動体は、検知した情報を、通信部201又は通信装置501を介して、運行管理装置200に送信する。
各移動体301は、運行管理装置200から移動指令データを受信し、移動指令データに従って、走行路上を自動走行する。自動走行の手段としては、例えば、前述した図2に示したように、予めフロアにガイドテープを貼っておき、移動体がガイドテープに沿って走行することがある。他の手段として、マーカーで位置を補正しながらデッドレコニングで一定距離を走行することを反復したり、指定領域間をSLAM(Simultaneous Localization And Mapping)等を用いて移動体が自律走行することがある。ここで述べた以外の手段でもよい。
図11は、運行計画システム1の全体の動作のフローチャートである。予め各移動体の経路計画が与えられており、走行タイミング計画部105によって走行タイミング計画が生成され、経路計画に当該走行タイミング計画の時刻情報を付与した運行計画が生成されているとする。各移動体は走行タイミング計画に基づく移動指令データに基づき運行しているとする。なお、運行計画システム1の動作開始時(走行タイミング計画がまだ作成されておらず、各移動体が初期位置で停止している)の動作については適宜補足説明を追加する。
図11に示す処理では、走行タイミング計画部105は走行タイミング計画の更新を行うごとに、探索ログ記憶部111に追加された探索ログを用いてモデルの生成又は更新を行う。本例では評価値の値が大きいほど、評価が高いとする。例えば、前述した遅れ時間の総和の逆数を評価値とする。
運行管理装置200の状態検知部202が、各移動体の位置と進行方向を検知する(ステップ11)。なお、運行計画システム1の動作開始時の場合、各移動体の初期位置と向きを検知すればよい。なお、その場回転や全方向移動が可能な移動体の場合、進行方向の検出を行わない場合もあり得る。
更新位置決定部106が、各移動体の現在の運行計画に基づき、各移動体の運行計画を更新する更新位置を移動体ごとに決定する(ステップ12)。なお、運行計画システム1の動作開始時の場合は、各移動体の運行計画はまだ生成されていないため、更新位置は各移動体の初期位置とすればよい。
経路計画部109は、各移動体について更新位置を起点とした経路計画を生成、もしくは予め用意された経路計画の一部を選択・抽出する。生成もしくは選択・抽出した経路計画によって、前回の経路計画を更新する(ステップ13)。なお、運行計画システム1の動作開始時の場合は、各移動体の初期位置を起点とした経路計画を生成するか、もしくは外部から経路計画を取得すればよい。
全ての移動体について経路計画が生成されなかった場合(ステップ14のYES)、本フローチャートの処理を終了する。例えば、輸送すべき荷物がない又は行うべき作業がなくなった等の場合は、その移動体について経路計画は生成されない。走行タイミング計画の更新が間に合わない(例えば走行路タイミング計画の更新前に、現在の全ての移動体の運行が完了する見込みがある)、もしくは、経路計画が生成できないと判断した場合も、本処理を終了してよい。
少なくとも1台の移動体について経路計画が更新(再生成)された場合(ステップ14のNO)、走行タイミング計画部105は、当該移動体の更新後の経路計画に基づき、探索処理を行うことにより、走行タイミング計画を生成又は更新する(ステップ15)。走行タイミング計画の生成又は更新処理の完了後、探索処理の結果に基づき、探索中に予測した部分の評価値の実績値(例えば、遅れ時間)を複数の移動体の状態特徴量及び探索深さと関連付けた探索ログを探索ログ記憶部111に追加する(ステップ21)。評価値の算出は、後述するモデルが生成される前は、予め定義された評価関数を用いて行う。走行タイミング計画部105は、走行タイミング計画に示される時刻情報を経路計画に付与して運行計画を生成する。なお、経路計画が生成されなかった移動体(例えば運行が完了した移動体)については、走行タイミング計画の対象外とすればよい。
モデル生成部113が、探索ログ記憶部111に記憶されている探索ログに基づき、モデルを生成又は更新する(ステップ21)。モデル記憶部112にまだモデルが存在しないときは、モデルを生成し、既に存在するときは、モデルを更新する。モデルと、探索ログを用いて、モデルの精度を算出する。例えば探索ログの複数の移動体の状態特徴量を入力としてモデルで評価値を算出(予測)する。予測した評価値と、探索ログに含まれる評価値との差分を算出する。差分の平均値が閾値以上であれば、モデルの精度は高く、閾値未満であれば、精度は低いと判断する。精度が高いと判断場合、次回以降のステップ15では、評価値の算出を予め定義された評価関数で行わずに、モデルを用いて評価値を算出(予測)する。この場合、ステップ21を省略する。
なお、モデルが生成された後も、定期的にステップ15では評価値の算出を予め定義された評価関数で行って、ステップ21で、探索ログを探索ログ記憶部111に追加し、モデルの更新を行ってもよい。
指令部107が、各移動体の走行タイミング計画に基づき、各移動体に対する移動指令データを生成し(ステップ16)、各移動体の移動指令データを運行管理装置200に送信する。
運行管理装置200が、通信部201を用いて、各移動体に移動指令データを送信する(ステップ17)。
運行管理装置200の状態検知部202は、通信部201、センサ401及び通信装置501の少なくとも1つを介して、各移動体の状態をリアルタイムに監視する(ステップ18)。状態検知部202は、各移動体の状態を表す情報を、通信部201を介して、再計画判定部108に送信する(同ステップ18)。
再計画判定部108は、各移動体の運行計画と、各移動体の状態とに基づき、運行計画(あるいは走行タイミング計画)を守ることができない移動体が少なくとも1つ存在するかを判断する(ステップ19)。もしくは、再計画判定部108は、新規の作業発生などで外部要因により再計画が必要になったか否かを判断する(ステップ19)。再計画判定部108は、再計画を行うと決定した場合は、再計画トリガーを発生させる(ステップ19のYES)。
再計画トリガーが発生した場合(ステップ19のYES)、ステップ11に戻る。そして、全移動体(既に計画の実行が終了している移動体は除く)の経路計画と走行タイミング計画とを更新する(ステップ11〜ステップ15)。そして、各移動体に、更新された走行タイミング計画に基づく移動指令データを再度送信する。なお、各移動体は、受信した移動指令データによって、前回受信した移動指令データを更新する。
再計画トリガーが発生していない場合(ステップ19のNO)、運行計画(又は走行タイミング計画)が終了した移動体が存在するかを判断する。運行計画が終了した移動体が存在するときは(ステップ20のYES)、ステップ11に戻る。運行計画が終了した移動体が存在しない場合は(ステップ20のNO)、ステップ18に戻る。再計画トリガーが発生するまで、又は運行計画の終了した移動体が発生するまで、ステップ18〜ステップ20を繰り返す。
図12、図13及び図14を用いて、図11のステップ15の詳細を説明する。本ステップでは、各経路計画で同一の走行路を逆方向に走行したり、速度の異なる移動体が複数台存在したりする場合でも、移動体同士の衝突又はデッドロックを発生させないことを保障する走行タイミング計画を生成する。走行タイミング計画の生成では、各移動体の経路計画を変更しないことを前提条件とする。
図12は走行タイミング計画部105による処理の一例のフローチャートである。本例では評価値の値が大きいほど、評価が高いとする。例えば前述した遅れ時間の総和の逆数を評価値とする。
走行タイミング計画部105は、走行路構造記憶部101から走行路構造情報(図4又は図5参照)を取得し、経路計画記憶部102から経路計画のデータを取得する(ステップ21)。
走行タイミング計画部105は、走行路構造情報と、各移動体の経路計画とに基づき、一例として、各移動体が指定領域に到着する時刻又は指定領域を出発する時刻の少なくとも一方を特定した個別走行計画を生成する(ステップ22)。これらの移動体の初期状態の個別走行計画をまとめて、初期状態の走行タイミング計画と呼ぶ。初期状態の走行タイミング計画の生成方法として、各移動体に対して、任意の方法で経路計画における指定領域の到着時刻又は出発時刻の少なくとも一方に関する情報を設定する。例えば、移動体の標準速度と、作業の所要時間とに基づき、各指定領域に対する到着又は出発の時刻を算出し、算出した時刻の情報を設定する。移動体の各走行路で走行する速度に関する条件(例えば速度パタン)がある場合は、当該速度に関する条件を満たすようにする。あるいは、前回生成された走行タイミング計画の一部(更新位置以降の部分)をそのまま流用することも可能である。
走行タイミング計画部105は、初期状態の走行タイミング計画に基づき、時間方向に最初に競合が発生する2つの移動体のペアと、競合の発生するアーク(走行路)とを検出する(検出処理)(ステップ23)。一例として、初期状態の走行タイミング計画において、2つの個別走行計画の全ての組み合わせのそれぞれについて、最初に競合が発生する時刻を特定する。特定した時刻の中で最も時間的に速い時刻を選択し、選択した時刻で競合が発生する2つの移動体のペアと、当該競合が発生するアーク(走行路)とを検出する。
図13(A)は、2台の移動体(移動体1、移動体2とする)が簡単な構造の走行路ネットワークを走行する場合に競合が発生する例を説明するための図である。ここで、移動体1はノードCとノードEとの間を往復し、移動体2はノードFとノードDとの間を往復することが、移動体1の経路計画及び移動体2の経路計画で定められているとする。
ノードAB間の走行路(区間AB)においては、移動体1及び移動体2で互いに逆方向の走行が発生する。このまま走行すると、移動体1及び移動体2が走行路上でバック走行を出来ない場合は、デッドロックが発生する。移動体1及び移動体2の少なくとも一方がバック走行を行うことが可能であっても、衝突回避のための停止と、バック走行とによる大幅な効率低下が発生する。
図13(B)は、移動体1及び移動体2の初期状態の走行タイミング計画に基づき、移動体1及び移動体2の移動軌跡を時間に沿って示したグラフを表す。破線のグラフは移動体1のグラフ、実線のグラフは移動体2のグラフである。走行路(区間)ごとに移動軌跡の交差をチェックすることにより、競合の発生の有無を検出できる。この例では、区間AB間において、移動体1及び移動体2の移動軌跡が点801で交差する。このため、区間ABにおける移動体1及び移動体2の競合の発生を検出できる。
図14(A)は、2台の移動体(移動体1、移動体2とする)が走行する場合に競合(衝突)が発生する他の例を説明するための図である。ここで、移動体1はノードEとノードCとの間を往復し、移動体2はノードFとノードDとの間を往復する予定であることが、移動体1の経路計画及び移動体2の経路計画で定められているとする。
移動体1及び移動体2は区間ABを同じ方向に走行する。区間AB間で追い越しが出来ない走行路構造のため、移動体1及び移動体2の移動速度が異なる場合、区間ABにおいて追突又は一時停止が発生し得る。追突防止による一時停止と再走行を反復し、走行効率が悪くなる。
図14(B)は、移動体1及び移動体2の走行タイミング計画(初期状態)に基づき、移動体1及び移動体2の移動軌跡を時間に沿って示したグラフを表す。破線のグラフは移動体1のグラフ、実線のグラフは移動体2のグラフである。移動体2は移動体1より後から出発するが、移動体2は移動体1に比べ高速であり、移動体2が移動体1に後ろから衝突する。移動体1及び移動体2の移動軌跡が点802で交差し、点802に対応する位置で衝突する。このようにして、区間ABにおける移動体1及び移動体2の競合の発生を検出できる。
ステップ23で競合が発生する移動体ペアを検出できた場合(ステップ24のNO)、競合の発生するアーク(競合アーク)に対して、競合を回避する複数の対策又は少なくとも1つの対策を決定する。例えば、移動体ペアのいずれかの移動体に対して、該当競合アークの上流側のアーク(走行路)または指定領域で、待機させる操作を行うことにより、該当する競合を回避することができる。この場合、2つの対策があるといえる。よって、各対策について、少なくとも競合が発生している2つの移動体の個別走行計画の少なくとも一方を変更する。2つの移動体の少なくとも一方の個別走行計画が変更された複数の移動体の個別走行計画の集合を仮走行タイミング計画として生成する(更新処理)(ステップ25)。なお変更された個別走行計画を、仮個別走行計画と称してもよい。
例えば複数の移動体1〜H(Hは2以上の整数)が存在するとする、移動体1と移動体2が競合する場合、移動体1を待機させる対策、移動体2を待機させる対策の2つの対策がある。この場合、対策ごとに、移動体1〜Hの個別走行計画のうち、少なくとも移動体1又は2の少なくとも一方の個別走行計画を変更する。移動体1又は2の少なくとも一方の個別走行計画が変更された移動体1〜Hの個別走行計画を含む仮走行タイミング計画を生成する。これにより、対策ごとに、仮走行タイミング計画が生成される。つまり、1つの走行タイミング計画(又は仮走行タイミング計画)から、2つの仮走行タイミング計画が得られる。
仮走行タイミング計画を、“変更状態の走行タイミング計画”と呼ぶ。本フローチャートの処理の開始時の走行タイミング計画を“初期状態の走行タイミング計画”と称する。
図13(C)に、ステップ25における競合回避の操作例を示す。図13(C)は、図13(B)で検出された点801での競合を回避するため、移動体1がアーク(走行路)ABの上流であるアークCAで待機もしくは速度調整する(遅くする)ことで競合を回避する例を示す。図13(B)で検出された競合を回避する別の方法として、移動体2が走行路BAの上流である走行路FBで待機する、もしくは速度調整する(遅くする)ことも可能である。このように競合回避の操作を行うことで、走行路ABでは移動体1及び移動体2の移動軌跡は交差しない。よって、競合は回避される。
図14(C)及び図14(D)に、ステップ25における競合回避の他の操作例を示す。図14(C)は、図14(B)で検出された点802での競合を回避するため、移動体1が走行路BAの上流である走行路EBで待機することで競合を回避する例を示す。同様に、図14(D)は、移動体2がBAの上流である走行路FBで待機することで競合を回避する例を示す。
走行タイミング計画部105は、評価値算出部114を用いて各仮走行タイミング計画(変更状態の走行タイミング計画)に対して、モデルに基づく評価値を算出(予測)する(演算処理)。モデルがまだ生成されていない場合は、評価値を予め定義された評価関数により算出するが、これについては後述する。走行タイミング計画部105は、各仮走行タイミング計画(変更状態の走行タイミング計画)と各評価値とを互いに対応づけて、探索リストに追加する(ステップ26)。探索リストは、処理中の複数の仮走行タイミング計画(変更状態の走行タイミング計画)を一時的に保持するリストである。
走行タイミング計画部105は、探索リスト内の各仮走行タイミング計画(変更状態の走行タイミング計画)を評価値の降順に整列する(ステップ27)。走行タイミング計画部105は、次の探索すべき対象として、探索リスト先頭の仮走行タイミング計画(変更状態の走行タイミング計画)を抽出する(選択処理)(同ステップ27)。
走行タイミング計画部105は、演算時間が所定の制限時間内に収まっているか、もしくは反復回数が規程の回数以内に収まっているか否かを判断する(ステップ28)。反復回数は、フローチャートの任意の範囲を対象にすることができる。例えばステップ23〜28の反復回数である。演算時間が制限時間内または反復回数が規程の回数以内であれば(ステップ28のYES)、ステップ23に戻る。ステップ23では、ステップ27で抽出した仮走行タイミング計画(変更状態の走行タイミング計画)を新たに初期状態の走行タイミング計画とみなして、引き続き検出処理(最初に競合が発生するアークと競合する移動体ペアの検出。前回又はそれ以前に検出された競合は解消済みである)を行う。
ステップ23で新たに初期状態の走行タイミング計画とみなされた仮走行タイミング計画(変更状態の走行タイミング計画)に競合が発生しないと判断された場合(ステップ24のYES)、これを、出力すべき走行タイミング計画の候補とする。このため、当該仮走行タイミング計画(変更状態の走行タイミング計画)を、走行タイミング計画の候補として、その評価値とともに、探索リストから解リストに移動させる(ステップ31)。解リストは、出力対象となる走行タイミング計画の候補を一時的に保持するリストである。
走行タイミング計画部105は、解リストを評価値順に整列する(ステップ32)。
走行タイミング計画部105は、探索リストの先頭における仮走行タイミング計画(変更状態の走行タイミング計画)を次の処理対象として抽出し(ステップ33)、これを初期状態の走行タイミング計画とみなして、ステップ23に戻る。
演算時間が制限時間を超えた、もしくは反復回数が規程の回数を超えた場合は(ステップ28のNO)、走行タイミング計画部105は、解リストに走行タイミング計画の候補が少なくとも1つ入っているかをチェックする(ステップ29)。解リストが空でない場合は(ステップ29のNO)、解リストの先頭の走行タイミング計画の候補を解として出力する。すなわち、当該候補に含まれる各移動体の個別走行計画(仮個別走行計画)の集合を、更新後の走行タイミング計画として出力する(ステップ30)。解リストは評価値の降順に整列されているため、解リストの先頭の候補は、最も評価が高いものである。
一方、解リストが空の場合(ステップ29のYES)、走行タイミング計画部105は、探索リスト先頭における仮走行タイミング計画(変更状態の走行タイミング計画)を解として抽出する(ステップ34)。当該抽出した解における各移動体の仮個別走行計画において、競合が解消されている時間の範囲(途中まで完成している計画部分)を特定し、特定した範囲の計画部分を各移動体の個別走行計画として含む走行タイミング計画を出力する(ステップ35)。
図15に、図12のフローチャートにおける走行タイミング計画部の探索処理における探索木の例を示す。図15の一番上の初期状態は、図13(B)に示した走行タイミング計画に対応する状態である(但し縮尺は変更されている)。
逆方向の走行が発生する走行路(競合アーク)に対して、移動体1を待機させる場合と移動体2を待機させる場合のそれぞれ2パタンの競合回避の対策がある。競合を回避するためにどちらの移動体を待機させるかに応じて、次に競合が発生する時刻及び発生する走行路も変化する。図12のステップ25において、移動体2を優先する操作(移動体1を待機させる操作)を行うと変更状態1の走行タイミング計画(仮走行タイミング計画1)、移動体1を優先する操作(移動体2を待機させる操作)を行うと変更状態2の走行タイミング計画(仮走行タイミング計画2)が得られる。なお、図中の白抜きの矢印はグラフの変更した箇所を示している。
変更状態1の走行タイミング計画及び変更状態2の走行タイミング計画についてそれぞれ評価値を取得し、変更状態1の走行タイミング計画及び変更状態2の走行タイミング計画をそれぞれの評価値とともに探索リストに格納する(図12のステップ26)。探索リストが評価値の降順に整列され、変更状態1の走行タイミング計画の評価値の方が大きいため、変更状態1の走行タイミング計画が選択される(図12のステップ27)。
変更状態1の走行タイミング計画を初期状態の走行タイミング計画とみなして探索を再帰的に続行する(図12のステップ23)。移動体2及び移動体1のいずれを優先するかに応じて、変更状態3の走行タイミング計画(仮走行タイミング計画3)及び変更状態4の走行タイミング計画(仮走行タイミング計画3)が得られる。変更状態3の走行タイミング計画及び変更状態4の走行タイミング計画についてそれぞれ評価値を取得する。変更状態3の走行タイミング計画及び変更状態4の走行タイミング計画をそれぞれの評価値とともに探索リストに格納する(図12のステップ26)。
探索リストには、この時点で変更状態2の走行タイミング計画、変更状態3の走行タイミング計画、変更状態4の走行タイミング計画がそれぞれの評価値とともに格納される。この中で最も評価値の大きい走行タイミング計画が選択され、これを初期状態のタイミング計画セットとみなして、再帰的に処理を継続する(ステップ23)。
このように、図12の探索アルゴリズムでは、競合回避策の組合せを順次探索していく。移動体の台数が多かったり、競合アークの回数が多くなったりすると、競合回避策の組合せの数は膨大となり、一般にはリアルタイムでの計画生成が困難となるが図12の探索アルゴリズムでは、次に調べる変更状態の走行タイミング計画の評価値を、評価関数もしくはモデルを用いて予測し、評価値の高いものから優先的に探索を行うようにしている。よって、効率のよい探索が可能となる。
この際、発見的最適解探索アルゴリズム(A探索)と呼ばれる探索手法を適用することで、短時間で評価の高い走行タイミング計画を得ることが可能となる。A探索では、探索の途中状態の更新完了部分について演算した評価値と、未更新部分に発生する評価値の予測値との合計を評価値とする。例えば、対象となる走行タイミング計画において競合が解消されている経路(探索済みの回路)に対応する遅れ時間と、それより後の残りの経路(未探索の経路)に対して例えば完全に競合がないと仮定した状態で想定される遅れ時間の予測値との合計に基づき、評価値を算出する。あるいは、未探索の経路に対して例えば完全に競合がないと仮定した状態で想定される遅れ時間に基づき評価値を算出する
本実施形態では、未探索の経路に対して予想される評価値を、モデルを用いて、精度高くかつ高速に取得できる良く見積もることが可能であり、探索効率が向上する。
図12のフローチャートの説明ではステップS26においてモデルを用いて評価値を算出(予測)したが、モデルがまだ生成されていない場合、もしくは、モデルが生成されていてもモデルの更新を並行して行う場合は、評価関数により評価値を算出する。この際、仮走行タイミング計画(仮走行タイミング計画Aとする)で競合の解消による時間調整の遅れ時間(遅れ時間Xとする)を求め、未探索の経路においては、残りの走行距離に応じて一定の比率で遅れが発生するなどの仮定により、遅れ時間(遅れ時間Yとする)を予測する。そして、遅れ時間Xと遅れ時間Yの合計に基づき評価値を算出する。そして、次以降の処理において、当該仮走行タイミング計画Aが選択され、競合を解消する操作が行われ、新たに仮走行タイミング計画(仮走行タイミング計画B)が生成されたとする。つまり、仮走行タイミング計画Aの子ノードとして仮走行タイミング計画Bが生成されたとする。仮走行タイミング計画Bについて仮走行タイミング計画Aと同様にして評価値が算出される。この際、仮走行タイミング計画Aで予測した上記遅れ時間Yについては、仮走行タイミング計画Bに対して算出した評価値の遅れ時間(遅れ時間Zとする)によって置換することで、仮走行タイミング計画Aの評価値を更新する。すなわち、遅れ時間Xと遅れ時間Zとの合計に基づき評価値を算出し、算出した評価値により仮走行タイミング計画Aの評価値を更新する。これにより仮走行タイミング計画Aの評価値がより高精度なものにすることができる。このようにして探索が進むごとに評価値の更新を行い、最終的に探索処理が完了した時点の評価値が、探索ログの評価値として用いられる。本段落で説明した評価値の算出方法は一例であり、他の方法も可能である。
ここで、前述した図11のステップ21の処理について補足説明する。走行タイミング計画部105の探索処理(図12参照)が終了した際には、例えば図15のような探索木において、最終端の変更状態(変更状態4)から初期状態まで探索木の各変更状態を遡る。各変更状態における評価値(例えば、該当変更状態以降の時間調整による遅れ時間の総和の実績値)と、各変更状態における複数の移動体の状態特徴量と、各探索深さとを組にして複数の探索ログとし、複数の探索ログを探索ログ記憶部111に記憶する。例えば、図15の例の場合、変更状態1における複数の移動体の状態特徴量と、変更状態1から次の変更状態4までの間で発生する時間調整による遅れ時間の総和と、変更状態1の探索深さ(=1)とを組とした探索ログを記憶する。また、初期状態における複数の移動体の状態特徴量と、初期状態から変更状態1を経由して変更状態4までの間で発生する時間調整による遅れ時間の総和と、初期状態における探索深さ(=0)とを組とした探索ログを記憶する。探索ログ記憶部111に過去の走行タイミング計画に対して作成した探索ログが記憶されている場合は、過去の探索ログに今回の探索ログを追加してもよいし、過去の探索ログの一部を破棄してから、今回の探索ログを追加してもよい。
以上、本実施形態によれば、デッドロック又は衝突等の競合を回避して、複数の移動体の運行計画を高速に立案できる。移動体が新たに導入されたり、移動体の作業のパタン又は移動体の動線が変動したりしても、走行効率を低下させずに、移動体群を走行させることができる。
(ハードウェア構成)
図16に、図1の運行計画装置100のハードウェア構成を示す。図1の運行計画装置100は、コンピュータ装置600により構成される。コンピュータ装置600は、CPU601と、入力インタフェース602と、表示装置603と、通信装置604と、主記憶装置605と、外部記憶装置606とを備え、これらはバス607により相互に接続されている。図1の運行管理装置200も図16と同様のハードウェア構成で実現される。
CPU(中央演算装置)601は、主記憶装置605上で、コンピュータプログラムである走行制御プログラムを実行する。走行制御プログラムは、運行計画装置100の上述の各機能構成を実現するプログラムのことである。走行制御プログラムは、1つのプログラムではなく、複数のプログラムやスクリプトの組み合わせにより実現されていてもよい。CPU601が、走行制御プログラムを実行することにより、各機能構成は実現される。
入力インタフェース602は、キーボード、マウス、およびタッチパネルなどの入力装置からの操作信号を、運行計画装置100に入力するための回路である。
表示装置603は、運行計画装置100から出力されるデータを表示する。表示装置603は、例えば、LCD(液晶ディスプレイ)、有機エレクトロルミネッセンスディスプレイ、CRT(ブラウン管)、またはPDP(プラズマディスプレイ)であるが、これに限られない。コンピュータ装置600から出力されたデータは、この表示装置603に表示することができる。
通信装置604は、運行計画装置100が外部装置と無線または有線で通信するための回路である。データは、通信装置604を介して外部装置から入力することができる。外部装置から入力したデータを、主記憶装置605や外部記憶装置606に格納することができる。
主記憶装置605は、走行制御プログラム、走行制御プログラムの実行に必要なデータ、および走行制御プログラムの実行により生成されたデータなどを記憶する。走行制御プログラムは、主記憶装置605上で展開され、実行される。主記憶装置605は、例えば、RAM、DRAM、SRAMであるが、これに限られない。図1の各記憶部は、主記憶装置605上に構築されてもよい。
外部記憶装置606は、走行制御プログラム、走行制御プログラムの実行に必要なデータ、および走行制御プログラムの実行により生成されたデータなどを記憶する。これらの走行制御プログラムやデータは、走行制御プログラムの実行の際に、主記憶装置605に読み出される。外部記憶装置606は、例えば、ハードディスク、光ディスク、フラッシュメモリ、及び磁気テープであるが、これに限られない。図1の各記憶部又はデータベースは、外部記憶装置606上に構築されてもよい。
なお、走行制御プログラムは、コンピュータ装置600に予めインストールされていてもよいし、CD−ROMなどの記憶媒体に記憶されていてもよい。また、走行制御プログラムは、インターネット上にアップロードされていてもよい。
また、運行計画装置100は、単一のコンピュータ装置600により構成されてもよいし、相互に接続された複数のコンピュータ装置600からなるシステムとして構成されてもよい。
(第2の実施形態)
図17は、第2の実施形態に係る運行計画システムを備えた全体システム構成の一例を示す。図1の探索ログ記憶部111が走行ログ記憶部115に置換されている。図1と同じ名称のブロックには同じ符号を付し、拡張又は変更された処理を除き、説明を適宜省略する。
走行タイミング計画部105は、各変更状態における複数の移動体の状態特徴量と、各変更状態の探索深さとを組としたデータ(第2データ)を走行ログとして生成する。走行タイミング計画部105は、生成した走行ログを走行ログ記憶部115に格納する。過去の走行タイミング計画に対して生成した走行ログが走行ログ記憶部115に記憶されている場合は、過去の走行ログに今回の走行ログを追加してもよいし、過去の走行ログの一部を破棄してから、今回の走行ログを追加してもよい。
実際の走行結果に基づき走行ログの評価値(第2評価値)を算出(測定)し、それぞれの移動体の状態特徴量に対応する評価値(第2評価値)として走行ログに追加する。走行ログの形式は、第1の実施形態の探索ログと同じであるため、探索ログの図示を省略する。
走行ログ記憶部115は、走行タイミング計画部105により生成された走行ログを記憶する。
モデル生成部113は、走行ログ記憶部115に記憶されている走行ログに基づき、モデルを生成する。具体的には、第1の実施形態と同様に、複数の移動体の状態特徴量から評価値を予測するモデルを生成する。モデルの種類は第1の実施形態と同じであるため、説明を省略する。
図18は、第2の実施形態に係る運行計画システム1の全体の動作のフローチャートである。第1の実施形態の図11のフローチャートとの違いは、ステップ15の後のステップ21が削除され、ステップ20のYESの後にステップ22が追加されたことである。
ステップ22では、走行タイミング計画部105が走行ログ記憶部115に運行が完了した移動体の走行ログを追加し、モデル生成部113が、走行ログ記憶部115に記憶されている走行ログに基づき、モデルを生成又は更新する。モデル記憶部112にまだモデルが存在しないときは、モデルを生成し、既に存在するときは、モデルを更新する。モデルと、走行ログを用いて、モデルの精度を算出する。例えば走行ログにおける複数の移動体の状態特徴量を入力としてモデルで評価値を算出(予測)する。予測した評価値と、走行ログに含まれる評価値(第2評価値)との差分を算出する。差分の平均値が閾値以上であれば、モデルの精度は高く、閾値未満であれば、精度は低いと判断する。精度が高いと判断場合、次回以降のステップ15では、モデルを用いて評価値を予測する。モデル生成部113は精度の高いモデルが得られたかの情報を走行タイミング計画部105に通知してもよい。モデルを用いて評価値を予測する場合、ステップ21を省略してもよいし、ステップ21を実行してもよい。
なお、ステップ15ではモデルを生成する前は、第1の実施形態と同様に各変更状態(仮走行タイミング計画)の評価値を予め定義された評価関数で算出し、評価値に基づいて仮走行タイミング計画を選択する。そして、選択した仮走行タイミング計画に基づき、走行タイミング計画を更新する。走行実績に基づく評価値(第2評価値)の算出は、探索処理における評価値の計算とは別に行う。
精度の高いモデルが得られた後も、定期的にステップ15では走行実績に基づく評価値の算出を行って、走行ログを走行ログ記憶部115に追加し、ステップ22でモデルを更新してもよい。
本実施形態によれば、走行実績に基づき算出した評価値(第2評価値)を用いて、モデルを生成することにより、精度の高い評価値の予測が可能となる。
(第3の実施形態)
第3の実施形態は、第1の実施形態と第2の実施形態を組み合わせたものである。
図19に、第3の実施形態に係る運行計画システムを備えた全体システム構成の一例を示す。図1の運行計画システムに、走行ログ記憶部115が追加されている。モデル生成部113は、探索ログ記憶部111の探索ログ、走行ログ記憶部115の走行ログの両方を用いてモデルを生成又は更新する。探索ログ及び走行ログを1つの記憶部にまとめて記憶してもよい。両方のログを用いることで、精度の高いモデルの学習が可能となる。
図20は、第3の実施形態に係る運行計画システム1の全体の動作のフローチャートである。第1の実施形態の図11のフローチャートにおけるステップ20のYESの後にステップ22が追加されたことである。ステップ22の処理は、第2の実施形態と同じである。図20で示す処理の詳細は、第1及び第2の実施形態の説明から明らかなため説明を省略する。
(第4の実施形態)
図21に、第4の実施形態に係る運行計画システムを備えた全体システム構成の一例を示す。各移動体が経路計画部309と経路計画記憶部302を備えており、運行計画装置100は経路計画部を備えていない。経路計画部309は、図1の経路計画部109と同様の機能を有する。第4の実施形態は第3の実施形態を一部変更したものであるが、第1の実施形態又は第2の実施形態を同様に変更してもよい。
各移動体の経路計画部309は自律的に経路計画を決定し、経路計画記憶部302に経路計画を格納する。また、各移動体は、運行管理装置210の通信部211又は通信装置501を介して、経路計画のデータを運行計画装置100に送信する。運行計画装置100は、各移動体の経路計画を経路計画記憶部102に格納する。各移動体に経路計画部309がなく、各移動体の経路計画記憶部302に予め各移動体の経路が記憶されていてもよい。
第4の実施形態では、各移動体が、SLAMを備えた自律型の移動ロボット、自動走行の自動車、建機等であり、運行計画装置100と運行管理装置200との管理下にある走行路上を走行する場合等を想定している。各移動体の経路計画が予め決められている、もしくは、各移動体が自律的に経路計画を決定するため、運行計画装置100及び運行管理装置200側で自由に各移動体の経路計画を変更できない場合を想定している。このような場合においても、運行計画装置100で走行タイミング計画を適切に生成し、各移動体に移動指令データを指示することで、衝突又はデッドロック等を発生させない走行を保障できる。もし衝突又はデッドロックを発生させない走行タイミング計画を生成できない場合、運行計画装置100は、運行管理装置200を介して、各移動体に、経路計画の変更要請を送信してもよい。
(第5の実施形態)
図22は、第5の実施形態に係る運行計画システムを備えた全体システム構成の一例を示す。本実施形態では、基本的な各機能部は第1〜第4の実施形態と同じであるが、運行計画装置(又は運行計画システム)に相当する機能を少なくとも1台の移動体が備えている。それ以外の移動体は、経路計画部309と経路計画記憶部302と通信部310を備えている。通信部310は、他の移動体と無線通信する。
運行計画装置に相当する機能を有する移動体の内、1台の移動体がマスターとなる。図では移動体301_Xがマスターとなった例が示されている。マスターは、例えば運行計画装置に相当する機能を有する移動体間で互いに交渉することで決定してもよい。または、予め定めた優先順位でマスターを決めてもよい。例えば、一番性能が高い移動体、もしくは、電池残量が一番大きい移動体がマスターとなってもよい。他の方法でマスターを決定してもよい。
移動体301_X以外の移動体の経路計画部309は、自律的に経路計画を決定した後、マスターとなった移動体301_Xに経路計画を送信する。または、予め経路計画記憶部302に経路計画が予め記憶されていてもよい。この場合、経路計画部309は、自分で経路計画の生成を行わず、経路計画記憶部302内の経路計画のデータを読み出して、マスターに送信する。
マスターとなった移動体301_Xが、自移動体を含む複数の移動体の個別走行計画を含む走行タイミング計画を一括して生成する。マスターは、各移動体の経路計画を変更しないように、走行タイミング計画を生成する。移動体301_Xは、走行タイミング計画に基づく移動指令データを各移動体に送信する。各移動体は移動指令データに基づき走行を制御する。これにより、衝突又はデッドロック等を発生させることのない、全体として効率のよい走行を実現できる。
移動体301_X以外の移動体が、経路計画部309と経路計画記憶部302を備えていなくてもよい。この場合、移動体301_X以外の移動体は、第1の実施形態の移動体のうち、運行管理装置200の通信部201と通信可能な移動体と同様の動作を行う。
第1又は第4の実施形態で状態検知部202が検知していた情報は、第5の実施形態では各移動体が自ら検知し、通信部310を介して運行計画装置100に送信する。
第5の実施形態では、各移動体が、SLAMを備えた自律型の移動ロボット、自動走行の自動車、建機等であり、単線の走行路において逆方向走行や追い抜きが発生する構造の走行路ネットワークを走行する場合等を想定している。各移動体の経路計画が予め決められている、もしくは、各移動体が自律的に経路計画を決定するため、他者が自由に経路計画を変更できない場合を想定している。このような場合においても、マスターとなった移動体が走行タイミング計画を適切に生成し、各移動体に指示することで、衝突又はデッドロックを発生させない走行を保障できる。もし衝突又はデッドロックを発生させない走行タイミング計画が生成できない場合は、マスターとなった移動体は、他の移動体に経路計画の変更要請を送信してもよい。
なお、本発明は上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素を適宜組み合わせることによって種々の発明を形成できる。また例えば、各実施形態に示される全構成要素からいくつかの構成要素を削除した構成も考えられる。さらに、異なる実施形態に記載した構成要素を適宜組み合わせてもよい。