IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社東芝の特許一覧

特許7598497走行制御装置、走行制御方法及びコンピュータプログラム
<>
  • 特許-走行制御装置、走行制御方法及びコンピュータプログラム 図1
  • 特許-走行制御装置、走行制御方法及びコンピュータプログラム 図2
  • 特許-走行制御装置、走行制御方法及びコンピュータプログラム 図3
  • 特許-走行制御装置、走行制御方法及びコンピュータプログラム 図4
  • 特許-走行制御装置、走行制御方法及びコンピュータプログラム 図5
  • 特許-走行制御装置、走行制御方法及びコンピュータプログラム 図6
  • 特許-走行制御装置、走行制御方法及びコンピュータプログラム 図7
  • 特許-走行制御装置、走行制御方法及びコンピュータプログラム 図8
  • 特許-走行制御装置、走行制御方法及びコンピュータプログラム 図9
  • 特許-走行制御装置、走行制御方法及びコンピュータプログラム 図10
  • 特許-走行制御装置、走行制御方法及びコンピュータプログラム 図11
  • 特許-走行制御装置、走行制御方法及びコンピュータプログラム 図12
  • 特許-走行制御装置、走行制御方法及びコンピュータプログラム 図13
  • 特許-走行制御装置、走行制御方法及びコンピュータプログラム 図14
  • 特許-走行制御装置、走行制御方法及びコンピュータプログラム 図15
  • 特許-走行制御装置、走行制御方法及びコンピュータプログラム 図16
  • 特許-走行制御装置、走行制御方法及びコンピュータプログラム 図17
  • 特許-走行制御装置、走行制御方法及びコンピュータプログラム 図18
  • 特許-走行制御装置、走行制御方法及びコンピュータプログラム 図19
  • 特許-走行制御装置、走行制御方法及びコンピュータプログラム 図20
  • 特許-走行制御装置、走行制御方法及びコンピュータプログラム 図21
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-03
(45)【発行日】2024-12-11
(54)【発明の名称】走行制御装置、走行制御方法及びコンピュータプログラム
(51)【国際特許分類】
   G05D 1/693 20240101AFI20241204BHJP
   G05D 1/225 20240101ALI20241204BHJP
   G05D 1/639 20240101ALI20241204BHJP
   G05D 1/43 20240101ALI20241204BHJP
【FI】
G05D1/693
G05D1/225
G05D1/639
G05D1/43
【請求項の数】 16
(21)【出願番号】P 2024017467
(22)【出願日】2024-02-07
(62)【分割の表示】P 2020122256の分割
【原出願日】2020-07-16
(65)【公開番号】P2024045465
(43)【公開日】2024-04-02
【審査請求日】2024-02-08
(73)【特許権者】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(74)【代理人】
【識別番号】100120031
【弁理士】
【氏名又は名称】宮嶋 学
(74)【代理人】
【識別番号】100107582
【弁理士】
【氏名又は名称】関根 毅
(74)【代理人】
【識別番号】100118876
【弁理士】
【氏名又は名称】鈴木 順生
(72)【発明者】
【氏名】山根 恵和
(72)【発明者】
【氏名】山下 道生
(72)【発明者】
【氏名】平山 紀之
(72)【発明者】
【氏名】愛須 英之
(72)【発明者】
【氏名】榊原 静
【審査官】田中 友章
(56)【参考文献】
【文献】国際公開第2016/135378(WO,A1)
【文献】特開2018-129000(JP,A)
【文献】米国特許出願公開第2018/0299882(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G05D 1/693
G05D 1/225
G05D 1/639
G05D 1/43
(57)【特許請求の範囲】
【請求項1】
出発地点と到着地点とを含む運行情報を生成する運行情報生成装置から第1出発地点と第1到着地点とを含む第1運行情報を取得する取得部と、
前記取得部によって取得された前記第1運行情報を割り当てる移動体を決定し、決定した移動体である第1移動体に対して前記第1運行情報に基づき前記第1出発地点から前記第1到着地点へ移動するルートであり、通過すべき複数の基準領域を含む第1ルートを生成する運行計画部と、
前記第1移動体に、前記第1ルートの走行を指示する第1移動指令データを送信する送信部と、を備え、
前記第1移動体が前記第1移動指令データを実行して前記出発地点を出発した後、前記取得部は、前記運行情報生成装置から第2出発地点と第2到着地点とを含む第2運行情報を取得し、
前記運行計画部は、前記取得部によって取得された前記第2運行情報を割り当てる移動体を決定し、決定した移動体である第2移動体に対して前記第2運行情報と前記第1移動体の前記第1移動指令データの実行状況とに基づき、前記第1移動体の前記第1ルートを変更することなく、前記第2出発地点から前記第2到着地点へ移動するルートであり、通過すべき複数の基準領域を含む第2ルートを生成し、前記第2ルートが前記第1ルートと競合する場合は、前記競合が解消されるまで待機し、前記競合が解消された後、前記第2ルートを再生成し、
前記送信部は、前記再生成した第2ルートが前記第1ルートと競合しない場合に、前記再生成した第2ルートの走行を指示する第2移動指令データを前記第2移動体に送信して、前記第2出発地点から前記第2移動体を出発させ、
前記第1ルートにおける前記複数の基準領域のうちの1つは第1基準領域であり、
前記運行計画部は、前記第2ルートを生成した際、前記第2ルートにおける前記複数の基準領域のうちの1つが前記第1基準領域でありかつ前記第1移動体が前記第1基準領域を通過していない場合に、前記第2ルートが前記第1ルートと競合することを決定する、
走行制御装置。
【請求項2】
前記第1移動体及び前記第2移動体が前記第1基準領域を通過する順序を含む通過順序情報を生成する通過順序算出部を備え、
前記運行計画部は、前記第2移動体が前記第1移動体よりも前に第1基準領域を通過することを前記通過順序情報が示す場合に、前記第2ルートが前記第1ルートと競合することを決定する
請求項1に記載の走行制御装置。
【請求項3】
前記第1移動体が前記第1基準領域を通過したかを判断する走行制御部を備え、
前記運行計画部は、前記第1移動体が前記第1基準領域を通過した場合に、前記第2ルートの再生成を行う
請求項2に記載の走行制御装置。
【請求項4】
前記走行制御部は、前記第1移動体が前記第1基準領域を通過したかの検査を一定時間間隔で行う
請求項3に記載の走行制御装置。
【請求項5】
前記第1ルートにおいて前記第1基準領域に結合された第1走行路に第1仮想領域が設定されており、前記第1基準領域に結合された第2走行路に第2仮想領域が設定されており、
前記第1移動体が前記第1ルートにおける前記第1仮想領域及び前記第2仮想領域間に位置するかを判断する走行制御部を備え、
前記運行計画部は、前記第1移動体が前記第1仮想領域及び前記第2仮想領域間に位置する場合、前記第2ルートの再生成を行う
請求項1~4のいずれか一項に記載の走行制御装置。
【請求項6】
前記走行制御部は、前記第1移動体が前記第1仮想領域及び前記第2仮想領域間に位置するかの検査を一定時間間隔で行う
請求項5に記載の走行制御装置。
【請求項7】
前記第1移動指令データは、
前記第1仮想領域へ移動する第1命令と、
前記第1基準領域の通過の許可を前記走行制御装置に確認する第2命令と、
前記第1基準領域の通過を許可された場合に前記第1仮想領域から前記第2仮想領域に移動する第3命令と、
前記第2仮想領域に到達した場合に前記第1基準領域を通過したことを示す情報を前記走行制御装置に送信する第4命令と、を含み、
前記走行制御部は、前記第3命令が実行され、前記第4命令が実行されていない場合に、前記第1移動体が前記第1仮想領域及び前記第2仮想領域間に位置することを決定する 請求項5又は6に記載の走行制御装置。
【請求項8】
前記第1ルートにおいて前記第1基準領域に結合された第1走行路に第1仮想領域が設定されており、前記第1基準領域に結合された第2走行路に第2仮想領域が設定されており、
前記第1移動指令データは、
前記第1仮想領域へ移動する第1命令と、
前記第1基準領域の通過の許可を前記走行制御装置に確認する第2命令と、
前記第1基準領域の通過を許可された場合に前記第1仮想領域から前記第2仮想領域に移動する第3命令と、
前記第2仮想領域に到達した場合に前記第1基準領域を通過したことを示す情報を前記走行制御装置に送信する第4命令と、を含み、
前記第1移動体から前記第4命令に基づき前記第1基準領域を通過したことを示す情報を受信した場合に、前記第1移動体が前記第1基準領域を通過済みであることを決定する走行制御部を備えた、
請求項1~4のいずれか一項に記載の走行制御装置。
【請求項9】
前記第1ルートにおいて前記第1基準領域に結合された第1走行路に第1仮想領域が設定されており、
前記運行計画部の処理の間、前記第1移動体を前記第1仮想領域で待機させる走行制御部を備え、
前記走行制御部は、前記第2ルートが生成された後、又は前記第2移動指令データが前記第2移動体に送信された後、前記第1仮想領域の通過を前記第1移動体に許可する
請求項1に記載の走行制御装置。
【請求項10】
前記取得部によって取得された前記第1運行情報及び前記第2運行情報を保持する運行情報記憶部を備え、
前記運行計画部は、前記運行情報記憶部から前記第1運行情報を選択し、選択した前記第1運行情報を割り当てる移動体として前記第1移動体を決定し、前記第1運行情報を実行状態に設定し、
前記運行情報記憶部から前記第2運行情報を選択し、選択した前記第2運行情報を割り当てる移動体として前記第2移動体を決定し、前記第2ルートが前記第1ルートに競合すると決定した場合、前記第2運行情報を保留状態に設定して、前記第2運行情報に前記第1運行情報を識別する識別子を関連付けた保留タスクを生成して前記保留タスクを保留タスク記憶部に格納し、
前記保留タスク記憶部における前記保留タスクに含まれる前記識別子に基づき前記第1運行情報を特定し、前記第1運行情報から生成される前記第1移動指令データの実行状況を取得し、前記取得した実行状況に基づき前記競合が解消した場合には、前記保留タスク記憶部から前記保留タスクを削除するとともに、前記運行情報記憶部における前記第2運行情報を前記保留状態から未実行状態に変更し、
前記運行情報記憶部から前記未実行状態の前記第2運行情報を読み出し、読み出した前記第2運行情報に基づき、前記第2移動体の第2ルートを再生し、前記再生成した第2ルートが前記第1ルートに競合しない場合は、前記第2運行情報を実行状態に変更し、
前記送信部は、前記再生成した第2ルートの走行を指示する前記第2移動指令データを前記第2移動体に送信する
請求項1~9のいずれか一項に記載の走行制御装置。
【請求項11】
前記運行計画部は、前記第2移動体により前記第2移動指令データの実行が完了した場合は、前記運行情報記憶部から、前記実行状態に設定されている前記第2運行情報を削除する
請求項10に記載の走行制御装置。
【請求項12】
前記第1ルート及び前記第2ルートは、複数の走行路と、前記複数の走行路間を結合する複数の基準領域とを含む走行路ネットワークにおけるルートである
請求項1~11のいずれか一項に記載の走行制御装置。
【請求項13】
前記第1移動指令データは、前記第1ルートに含まれる複数の前記基準領域を順番に通過することを指示する情報を含み、
前記第2移動指令データは、前記第2ルートに含まれる複数の前記基準領域を順番に通過することを指示する情報を含む
請求項12に記載の走行制御装置。
【請求項14】
出発地点と到着地点とを含む運行情報を生成する運行情報生成装置から第1出発地点と第1到着地点とを含む第1運行情報を取得し、
取得された前記第1運行情報を割り当てる移動体を決定し、決定した移動体である第1移動体に対して前記第1運行情報に基づき前記第1出発地点から前記第1到着地点へ移動するルートであり、通過すべき複数の基準領域を含む第1ルートを生成し、
前記第1移動体に、前記第1ルートの走行を指示する第1移動指令データを送信し、
前記第1移動体が前記第1移動指令データを実行して前記出発地点を出発した後、前記運行情報生成装置から第2出発地点と第2到着地点とを含む第2運行情報を取得し、
取得された前記第2運行情報を割り当てる移動体を決定し、決定した移動体である第2移動体に対して前記第2運行情報と前記第1移動体の前記第1移動指令データの実行状況とに基づき、前記第1移動体の前記第1ルートを変更することなく、前記第2出発地点から前記第2到着地点へ移動するルートであり、通過すべき複数の基準領域を含む第2ルートを生成し、前記第2ルートが前記第1ルートと競合する場合は、前記競合が解消されるまで待機し、前記競合が解消された後、前記第2ルートを再生成し、
前記再生成した第2ルートが前記第1ルートと競合しない場合に、前記再生成した第2ルートの走行を指示する第2移動指令データを前記第2移動体に送信して、前記第2出発地点から前記第2移動体を出発させる、
走行制御方法。
【請求項15】
出発地点と到着地点とを含む運行情報を生成する運行情報生成装置から第1出発地点と第1到着地点とを含む第1運行情報を取得する第1ステップと、
取得された前記第1運行情報を割り当てる移動体を決定し、決定した移動体である第1移動体に対して前記第1運行情報に基づき前記第1出発地点から前記第1到着地点へ移動するルートであり、通過すべき複数の基準領域を含む第1ルートを生成する第2ステップと、
前記第1移動体に、前記第1ルートの走行を指示する第1移動指令データを送信する第3ステップと、
前記第1移動体が前記第1移動指令データを実行して前記出発地点を出発した後、前記運行情報生成装置から第2出発地点と第2到着地点とを含む第2運行情報を取得する第4ステップと、
取得された前記第2運行情報を割り当てる移動体を決定する第5ステップと、
決定した移動体である第2移動体に対して前記第2運行情報と前記第1移動体の前記第1移動指令データの実行状況とに基づき、前記第1移動体の前記第1ルートを変更することなく、前記第2出発地点から前記第2到着地点へ移動するルートであり、通過すべき複数の基準領域を含む第2ルートを生成する第6ステップと、
前記第2ルートが前記第1ルートと競合する場合は、前記競合が解消されるまで待機する第7ステップと、
前記競合が解消された後、前記第2ルートを再生成する第8ステップと、
再生成した第2ルートが前記第1ルートと競合しない場合に、前記再生成した第2ルートの走行を指示する第2移動指令データを前記第2移動体に送信することにより、前記第2出発地点から前記第2移動体を出発させる、第9ステップと、 をコンピュータに実行させ、
前記第1ルートにおける前記複数の基準領域のうちの1つは第1基準領域であり、
前記第7ステップは、前記第6ステップで前記第2ルートが生成された際、前記第2ルートにおける前記複数の基準領域のうちの1つが前記第1基準領域でありかつ前記第1移動体が前記第1基準領域を通過していない場合に、前記第2ルートが前記第1ルートと競合することを決定する、
コンピュータプログラム。
【請求項16】
出発地点と到着地点とを含む運行情報を生成する運行情報生成装置から第1出発地点と第1到着地点とを含む第1運行情報を取得する取得部と、
前記取得部によって取得された前記第1運行情報を割り当てる移動体を決定し、決定した移動体である第1移動体に対して前記第1運行情報に基づき前記第1出発地点から前記第1到着地点へ移動するルートである第1ルートを生成する運行計画部と、
前記第1移動体に、前記第1ルートの走行を指示する第1移動指令データを送信する送信部と、を備え、
前記取得部は、前記運行情報生成装置から第2出発地点と第2到着地点とを含む第2運行情報を取得し、
前記運行計画部は、前記取得部によって取得された前記第2運行情報を割り当てる移動体を決定し、決定した移動体である第2移動体に対して前記第2運行情報と前記第1移動体の前記第1移動指令データの実行状況とに基づき前記第2出発地点から前記第2到着地点へ移動するルートである第2ルートを生成し、前記第2ルートが前記第1ルートと競合する場合は、前記競合が解消されるまで待機し、前記競合が解消された後、前記第2ルートを再生成し、
前記送信部は、前記再生成した第2ルートが前記第1ルートと競合しない場合に、前記再生成した第2ルートの走行を指示する第2移動指令データを前記第2移動体に送信して、前記第2出発地点から前記第2移動体を出発させ、
前記取得部によって取得された前記第1運行情報及び前記第2運行情報を保持する運行情報記憶部をさらに備え、
前記運行計画部は、前記運行情報記憶部から前記第1運行情報を選択し、選択した前記第1運行情報を割り当てる移動体として前記第1移動体を決定し、前記第1運行情報を実行状態に設定し、
前記運行情報記憶部から前記第2運行情報を選択し、選択した前記第2運行情報を割り当てる移動体として前記第2移動体を決定し、前記第2ルートが前記第1ルートに競合すると決定した場合、前記第2運行情報を保留状態に設定して、前記第2運行情報に前記第1運行情報を識別する識別子を関連付けた保留タスクを生成して前記保留タスクを保留タスク記憶部に格納し、
前記保留タスク記憶部における前記保留タスクに含まれる前記識別子に基づき前記第1運行情報を特定し、前記第1運行情報から生成される前記第1移動指令データの実行状況を取得し、前記取得した実行状況に基づき前記競合が解消した場合には、前記保留タスク記憶部から前記保留タスクを削除するとともに、前記運行情報記憶部における前記第2運行情報を前記保留状態から未実行状態に変更し、
前記運行情報記憶部から前記未実行状態の前記第2運行情報を読み出し、読み出した前記第2運行情報に基づき、前記第2移動体の第2ルートを再生し、前記再生成した第2ルートが前記第1ルートに競合しない場合は、前記第2運行情報を実行状態に変更し、
前記送信部は、前記再生成した第2ルートの走行を指示する前記第2移動指令データを前記第2移動体に送信する
走行制御装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、走行制御装置、走行制御方法及びコンピュータプログラムに関する。
【背景技術】
【0002】
外部から搬送要求を受信し、複数の移動体に対して、ルートの立案とルートの走行を指示する運行制御システムが知られている。このシステムにおいて、各移動体は、干渉地点を通過する度に、出退出時間等を格納した管理テーブルの参照し、他の移動体との干渉の有無を予測する。干渉を予測した場合、再度別のルートを移動体に立案させる。
【0003】
この技術では、新規の搬送要求が発生したときに、新規の搬送要求を実行する移動体と、新規の搬送要求の発生より前に別の搬送要求を実行している移動体との衝突又はデッドロック等を避けるために、別の搬送要求を実行している移動体の動きを全て停止させる場合があった。このため、システム全体の効率が低下する問題があった。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2005-242489号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明の実施形態は、移動体を効率的に走行させる走行制御装置、走行制御方法及びコンピュータプログラムを提供する。
【課題を解決するための手段】
【0006】
本実施形態に係る走行制御装置は、第1移動体に第1ルートの走行を指示する第1移動指令データを送信する第1送信部と、前記第1移動体による前記第1移動指令データの実行状況に応じて、第2移動体の第2ルートを生成する運行計画部と、前記第2ルートの走行を指示する第2移動指令データを前記第2移動体に送信する第2送信部と、を備える。
【図面の簡単な説明】
【0007】
図1】本実施形態に係る走行制御装置としての運行管理装置のブロック図。
図2】複数の移動体の運行を制御する様子を模式的に示した上面図。
図3】衝突及びデッドロックの例を示す図。
図4】走行路ネットワークの簡単な例を示す図。
図5図4の走行路ネットワークの構造情報の例を示す図。
図6】各アーク(仮想走行路)及び基準ノードの情報の一例を示す図。
図7】基準領域に結合された各走行路に設定された仮想領域の例を示す図。
図8】仮想領域DBの一例を示す図。
図9】走行路ネットワークの構造情報に仮想ノードを設定した例を示す図。
図10】運行情報の一例を示す図。
図11】運行計画の例を示す図。
図12】AGV0が運行計画に示される出発地点に配置された状態を示す図。
図13】AGV0及びAGV1に対して生成された移動指令データの例を示す図。
図14】AGV1が運行計画に示される出発地点に配置された状態を示す図。
図15】保留タスクDBの例を示す図。
図16】AGV1の運行情報の状態を“保留”に更新した例を示す図。
図17】AGV1の運行情報の状態を“未実行”に更新した例を示す図。
図18】AGV0が領域Naの通過済みを通知した後の状態を示す図。
図19】AGV1の運行情報の状態を“未実行”から“実行中”に更新した例を示す図。
図20】本実施形態に係る運行管理装置の動作の一例を示すフローチャート。
図21図1の運行管理装置のハードウェア構成を示す図。
【発明を実施するための形態】
【0008】
以下、図面を参照しながら、本発明の実施形態について説明する。
【0009】
図1に、本実施形態に係る走行制御装置としての運行管理装置のブロック図を示す。運行管理装置100は、通信部11(第1送信部、第2送信部)、運行計画部12、走行制御部13、通過順序算出部14、タスク取得部15,走行路情報データベース(DB)21、基準領域DB22、走行路ネットワーク情報DB23、移動体情報DB24、運行情報DB25(運行情報記憶部)、運行計画DB26、仮想領域DB27及び保留タスクDB28を備えている。運行管理装置100は、タスク生成装置200(運行情報生成装置)と有線又は無線により接続されている。
【0010】
運行管理装置100は、一例として自由平面である走行エリアを含む走行路ネットワークを複数の移動体1~Nが自律走行する場合に、各移動体の運行(走行、荷物の積み上げ・積み降ろし等の作業)を効率的に制御するための運行計画を作成する。運行計画の作成の際、複数の移動体に衝突又はデッドロックを起こさないようにする。複数の移動体1~Nは、AGV、自律型の移動ロボット、自動走行の車両(例えば自動走行車)などの、自律移動可能な移動体である。
【0011】
複数の移動体1~Nは、例えば、工場内、倉庫内、施設敷地内などの走行路ネットワークを走行する。複数の移動体1~Nは一例として蓄電池(バッテリー)を搭載し、バッテリーに蓄積された電力を用いて移動又は荷物の積み上げ・積み降ろし等の動作を行う。
【0012】
図2は、走行路ネットワークにおいて複数の移動体の運行を制御する様子を模式的に示した上面図である。走行路ネットワークに対して、基準となる複数の領域(基準領域)A,B,C,D,E,F,G,Hが設定されている。基準領域間は移動体が走行可能な通路(走行路)である。走行路ネットワークは、このように複数の基準領域と、複数の基準領域間の複数の走行路とを含む。基準領域は、例えば走行路の交差部や、走行路の端部など、任意の箇所に対応づけて設定される。基準領域F、Gに対して搬入口が配置されており、基準領域A、E、Hに対して棚が配置されている。基準領域Bは複数の走行路の交差部に対応する。
【0013】
ここで基準領域は、特定の位置でもよいし、ある範囲を有する領域でもよい。例えば走行路ネットワークをXY平面により表した場合、基準領域は、XY座標により特定される。高さを考慮する場合、基準領域は、XYZ座標により特定される。あるいは、複数のXY座標の組により特定されてもよい。例えば基準領域が矩形の場合、各頂点のXY座標の組により特定されてもよい。以下では、基準領域がXY座標によって特定される場合を想定する。
【0014】
複数の基準領域は、走行路ネットワークのマップデータ上の座標に対応付けた形で、基準ノードとして管理されている。基準ノードと基準領域とを、説明の都合上、同じ符号によって表す。基準領域間を結んだ線(アーク)を、移動体が走行する仮想走行路として管理する。基準ノード及び仮想走行路は、予めデータとして格納されている。図の実線が、基準ノード間を結ぶ線(仮想走行路に対応)である。基準ノード間で2台以上の移動体が併走可能な場合は、基準ノード間が2本以上の線で結ばれてもよい。基準ノード及び仮想走行路のデータは、マップデータ上に定義されている。マップデータは、予めCAD(Computer-Aided Design)等の図面として定義されたものでもよいし、移動体が自己位置検知機能により環境マップを作成する機能を有する場合は、当該機能により作成した環境マップでもよい。なお、仮想走行路の形状は、直線でも、曲線でも、直線と曲線の組み合わせでもよい。
【0015】
移動体1~3は、自律走行機能を備えている。より詳細には、移動体1~3は、基準領域間の走行路を走行する動線を移動体自身が生成し、生成した動線に沿って自律的に走行する機能を備えている。一例として、基準領域Bから基準領域Cへ移動する場合、基準領域B及び基準領域C間に障害物等が存在しなければ、基準領域Bの位置と、基準領域Cの位置とを結んだ線分を動線として生成し、当該動線に沿って走行路を自律的に走行する。移動体が生成する動線は、基準ノードB及び基準ノードC間の仮想走行路と一致しても、しなくてもよい。移動体は、仮想走行路を2つの基準ノード間を移動する際の推奨経路として走行し、仮想走行路上に一時的な障害物を発見した場合は、障害物を回避する機能を備えていてもよい。
【0016】
なお、移動体が障害物を回避して走行する余裕のある走行路を、移動体同士のデッドロック等が発生しない走行路として扱うことも可能である。例えば、図2で走行路BE(基準領域B及び基準領域E間の走行路。以下同様)、走行路BA、走行路BHなどの走行路では、例えば相互回避を行うだけの余裕が十分にあるため、2台の移動体が互いに向かい合う方向に走行しても、デッドロック等は発生しない。例えば一方の移動体は走行路の脇で待機し、他方の移動体は走行路を動線に沿って移動する。他方の移動体が通過し終わったら、一方の移動体は移動を再開する。一方、走行路BCでは、相互回避を行うだけの余裕がないため、当該走行路で2台の移動体が互いに向かい合う方向に走行すると、デッドロック等が発生し得る。
【0017】
なお移動体は、前方向、後方向又は前後両方向に移動できる。移動体は前後を反転するように回転可能であってもよい。また、移動体は、斜め方向など、前後以外の方向に移動できてもよい。
【0018】
移動体の状態を検出するセンサ、移動体と通信する通信装置又はこれらの両方が、基準領域、走行路、棚、搬入口、その他の任意の箇所に配置されていてもよい。この場合、センサは、通信装置及び運行管理装置100の少なくとも一方と有線又は無線で接続される。
【0019】
移動体は、図1の運行管理装置100の管理の元、割り当てられた運行情報に従って走行路ネットワークを走行する。例えば、搬入口から受け取った荷物を、別の搬入口まで運ぶ。移動の途中で、棚から荷物を積み下ろしたり、積み上げたりするなどの作業を行う場合もある。このような作業を各移動体は、具体的には、運行管理装置100が運行情報に基づき生成した移動指令データを受信し、移動指令データに含まれる命令群を実行することにより行う。なお、移動体は、荷物の搬送を行わず、ただ移動するだけの場合もあり得る。
【0020】
ここで衝突及びデッドロックについて説明する。
【0021】
図3(A)は衝突の例を示す。図3(B)はデッドロックの例を示す。図3(A)及び図3(B)では便宜上、走行路を直線によって表している。図3(A)では、交差部につながる2つの走行路を2つの移動体が交差部に向かって走行し、交差部に同時に到着し、互いに衝突している。図3(B)では同一の走行路を2つの移動体が互いに逆方向に走行している。2つの移動体は前進のみ可能であるとすると、2つの移動体は、元の方向に戻れないため、任意の領域(交差部又は端部等)に移動できなくなり、デッドロックが発生する。
【0022】
走行路ネットワーク情報DB23は、走行路ネットワークの構造情報を内部に記憶している。走行路ネットワークの構造情報は、基準ノードと仮想走行路(アーク)とを含む。基準ノードと仮想走行路(アーク)は、走行エリアのマップデータに対応づけられている。基準ノードは、基準領域に対応する。基準領域は、一例として、複数の走行路の交差部又は走行路の端部等に設定される。但し、基準領域は、走行路上の任意の箇所に設定できる。任意の箇所の例として、荷物の積み上げ・積み降ろし場所、待機場所等がある。
【0023】
図4は、走行路ネットワークの簡単な例を示す。図5は、走行路ネットワーク情報DB23に記憶されている図4の走行路ネットワークの構造情報の例を示す。図4の走行路ネットワークは5つの基準領域と、4つの走行路とを含む。ここでは便宜上、走行路を直線によって表している。基準領域Naは、4つの走行路が交差する交差部であり、基準領域Pa、Pb、Pc、Pdは4つの走行路の端部である。基準領域Pb、Pdには棚が配置されており、基準領域Pa、Pcには搬入口が存在する。基準領域Pa、Pb、Pc、Pdは、一例として、移動体の出発地点又は到着地点ともなり得る。
【0024】
図5の走行路ネットワークの構造情報において、基準ノード間を結合(あるいは接続)する直線によって仮想走行路が表されている。各円が基準ノード(基準領域)を表し、円間をつなぐ直線がアーク(仮想走行路)を表す。基準ノードには基準領域と同じ符号を付してある。
【0025】
走行路情報DB21は、走行路ネットワークの構造情報における各アーク(仮想走行路)の情報と基準ノードの情報とを走行路情報として記憶している。走行路情報は、アークID(走行路ID)と、アークの両端のノードのID(すなわち走行路の両端の領域のID)とを含む。
【0026】
図6(A)は、走行路情報DB21に記憶されている各アーク(仮想走行路)の情報の例を示す。図6(A)において、例えば基準ノードPa、Na間のアークIDは1、当該アークの両端の基準ノードはPa及びNaである。アークIDに対応づけて、基準ノード間の距離(走行路の距離)を記憶してもよい。あるいは、アークの両側の基準ノードの位置に基づき、走行路の距離を計算してもよい。また走行路の幅・高さ・材質・摩擦係数・勾配など、走行路の構造・配置に関する情報を記憶していてもよい。
【0027】
基準領域DB22は、走行路ネットワークの構造情報における各基準ノードの情報を記憶している。例えば、基準ノードの情報として、基準ノードID、X座標、Y座標を記憶している。基準ノードの位置は、例えば基準ノードに対応する基準領域の位置(座標)に対応する。
【0028】
図6(B)は、走行路情報DB21に記憶されている基準ノードの情報の一例を示す。例えば、基準ノードPbの座標は(X,Y)=(20,20)である。つまり基準ノードPbに対応する基準領域の位置は(X,Y)=(20,20)である。また基準ノードNaの位置は(X,Y)=(20,60)である。つまり、基準ノードNaに対応する基準領域Naの位置は(X,Y)=(20,60)である。
【0029】
仮想領域DB27は、走行路ネットワークに対して設定されている仮想領域の情報を記憶している。仮想領域は、少なくとも1つの基準領域に対して、当該基準領域に結合された複数の走行路に設定されている。具体的には、仮想領域DB27は、基準ノードと仮想走行路(アーク)に関連づけて、仮想領域を表す仮想ノードを記憶している。
【0030】
仮想領域は、移動体の通過順序を管理するための領域である。ここでは基準領域に結合(あるいは接続)された各走行路において、基準領域から離れた位置に設定される。すなわち、走行路ネットワークの構造情報において、基準ノードに結合される各アーク上に、基準ノードから離れた位置に、仮想ノードを設定する。仮想領域は走行路ネットワークにおける全ての基準領域に対して設定してもよいし、交差部に対応する基準領域、走行路の端部に対応する基準領域又はこれらの両方など、特定の基準領域に対してのみ設定してもよい。仮想領域の設定は、運行管理装置100のオペレータであるユーザが入力装置を用いて指定してもよい。ここでは交差部に対応する基準領域に対して仮想領域を設定する場合を説明する。
【0031】
図7は、基準領域(交差部)Naに結合された各走行路に設定された仮想領域の例を示す。交差部Naに結合された各走行路において、交差部Naから一定距離離れた位置に仮想領域Ia,Ib,Ic,Idが設定されている。
【0032】
図8は、仮想領域DB27の一例を示す。図7の仮想領域(仮想ノード)Iaが、基準領域(基準ノード)Naに結合された走行路(IDが1のアーク)に設定されている。仮想領域IaのXY座標は(15,60)である。
【0033】
図9は、図7に示した走行路ネットワークの構造情報に仮想ノードを設定した例を示す。基準ノードNaに結合(あるいは接続)された各アーク上に、基準ノードNaから一定距離離れた位置に仮想ノードIa,Ib,Ic,Idが設定されている。なお、仮想ノードには、当該仮想ノードに対応する仮想領域と同じ符号を付してある。基準ノードPa~Pdに対しても仮想ノードを設定することも可能である。例えば、基準ノードPa~Pdに結合された各アークにおいて、基準ノードPa~Pdから一定距離離れた位置に仮想ノードを設定すればよい。
【0034】
移動体情報DB24は、1つ以上の移動体の情報を格納している。例えば、移動体の位置情報を格納している。移動体の位置情報は、一例として、リアルタイムの位置情報(最新の位置情報)である。例えば、移動体から一定時間ごとに位置情報を含むデータを受信し、受信したデータから、移動体の位置情報を取得してもよい。あるいは、走行路ネットワークに設けられたセンサが移動体の通過を検知した場合に、センサに接続された通信装置から、移動体の通過を通知するデータを受信してもよい。移動体の位置情報は、まだ運行情報を割り当てられていない待機中の移動体の位置情報でもよい。この場合、待機中の移動体又は待機場所に設置されたセンサに接続された通信装置から位置情報を含むデータを受信することで、移動体の待機位置を把握してもよい。位置情報を含むデータの受信は、通信部11が行う。位置情報は、移動体がこれまで通過した位置の履歴情報でもよい。位置情報以外の例としては、移動体が搭載するバッテリーの残存電力、移動体が荷物を保有しているか否か(移動体が荷物を搬送する場合)、搬送中の荷物の種類や数等が有り得る。移動体の固有の情報として、例えば、標準速度、最大速度、最低速度、移動体のサイズ、移動可能な方向など、移動体の仕様情報がある。物の搬送を目的とした移動体であれば、荷物の積み降しに要する作業時間の情報(例えば所定個数の荷物を積み上げ又は積み下ろすのに要する時間)がある。ここに挙げた情報は一例に過ぎず、他の情報でもよい。
【0035】
運行情報DB25は、1つ以上の移動体に割り当てるべき運行(タスク)を表した運行情報(タスク情報)を格納している。運行情報は、タスク生成装置(運行情報生成装置)200により生成され、運行管理装置100で受信される。
【0036】
タスク生成装置200は、例えば運行管理装置100の操作用の入力インタフェースを備え、入力インタフェースを介して操作者であるユーザから、出発地点と到着地点とを含むタスク生成指示を受け付ける。タスク生成指示に、出発地点、到着地点、又は、出発地点及び出発地点間で行う作業の指示を含めてもよい。タスク生成装置200は、入力されたタスク生成指示に基づき、出発地点と到着地点まで移動体を走行させるタスクを生成し、生成したタスクに関するタスク情報を運行情報として運行管理装置100に送信する。
【0037】
運行管理装置100は、タスク生成装置200から受信した運行情報を、運行情報の実行状態を示す情報(状態情報)に関連づけて、運行情報DB25に格納する。運行情報は、出発地点及び到着地点の情報を含む。運行情報は、出発地点及び到着地点に加えて、移動体が行うべき作業の内容及び作業の順序を含んでいてもよい。運行情報は、ユーザが入力装置を用いて入力してもよいし、外部の装置から有線又は無線の通信により取得してもよい。
【0038】
図10は、運行情報の一例を示す。図10の運行情報は、図4の走行路ネットワークの場合を想定している。図10では、2つの運行情報の例が示される。1つ目の運行情報は、出発地点Pa、到着地点Pbを含む。これは出発地点Paを出発して、到着地点Pbまで移動することを表す。2つ目の運行情報は、出発地点Pc、到着地点Pdを含む。これは出発地点Pcを出発して、到着地点Pdまで移動することを表す。運行情報には、タスクの実行状態を示す情報(状態情報)が付与されている。状態情報には“実行中”、“新規”、“保留”“未実行”がある。
【0039】
“実行中”は、運行情報が移動体に割り当てられ、タスクが既に実行されていることを意味する。“新規”はタスク生成装置から運行情報が受信されて、運行情報DB25に格納された後、まだ運行計画部12の処理を経ていないことを意味する。“保留”は、運行情報に係るタスクが運行計画部12の処理により実行を保留すると判断されたことを意味する。運行情報が最初に運行情報DB25に格納される際は、“新規”が付与される。“未実行”は移動体に対して運行計画の処理の保留が解除されたことを意味する。状態情報は、“新規”、“実行中”の順に遷移させられる、もしくは、“新規”、“保留”、“未実行”、“実行中”の順に遷移させられる。
【0040】
運行計画部12は、運行情報DB25から運行情報を選択し、選択した運行情報を割り当てるべき移動体を決定し、決定した移動体に運行情報を割り当てる。選択する運行情報は、“新規”、又は“未実行”の運行情報である。運行計画部12は、運行情報を割り当てられた移動体に対して、当該移動体に割り当てられた運行情報と、移動体情報DB24における移動体の情報とに基づき、移動体が走行するルート(以下、走行ルート)を生成する。走行ルートは、移動体が通過する基準領域の順序を含む。また、運行計画部12は、走行ルートに含まれる基準領域を出発又は通過するタイミング(以下、走行タイミング)を決定する。走行タイミングは、一例として運行管理装置100が備える時計の時刻によって特定される。運行計画部12は、タスク取得部15で運行状態が取得されたときに、当該運行情報を割り当てる移動体を決定してもよい。
【0041】
移動体の走行ルートと走行タイミングは、一例として他の移動体との間でデッドロック又は衝突等を生じさせないように決定される。走行ルート及び走行タイミングの決定方法として、任意の方法を用いることができる。例えばシミュレーションにより移動体のあらゆる移動パターンを探索することにより、デッドロック等の発生しない走行ルートと走行タイミングを決定してもよい。この際、移動体の移動速度として標準速度を用いてもよい。標準速度は、移動体の特性、走行路の特性(例えば走行路の材質など)、走行路の勾配などに応じて定められていてもよい。この際、デッドロック等が生じる可能性がある条件を定義し、条件を満たさない移動パターンを探索してもよい。あるいは、先に移動体の走行ルートを決定し、その後、他の移動体とのデッドロック等が生じないように各基準領域の出発時刻(通過時刻)を決定してもよい。走行ルートは、出発地点から目的地点までの移動距離又は移動時間が最短となるルートでもよい。他の方法を用いて、走行ルート及び走行タイミングを決定してもよい。
【0042】
運行計画部12は、移動体の走行ルートと、運行中の他の移動体(運行情報が実行中の移動体)の走行ルートと共通に含まれる基準領域(指定領域と呼ぶ)を特定する。運行計画部12は、指定領域について、移動体の通過順序を決定する。例えば、移動体間で当該指定領域の出発時刻を比較し、出発時刻が早いほど順番が早くなるように、通過順序を決定する。運行計画部12は、決定した通過順序を含む通過順序情報として生成、もしくは通過順序情報を更新する。各移動体の走行ルートと、通過順序情報とをまとめて、運行計画と呼ぶ。
【0043】
運行計画DB26は、運行計画部12により作成された運行計画(各移動体の走行ルートと、通過順序情報)を記憶する。
【0044】
以下、運行計画部12の動作の具体例を示す。まず、(出発地点:Pa、到着地点のPb)の運行情報を移動体に割り当てる場合の動作を示す。運行中の他の移動体は存在しない場合を想定する。
【0045】
図11に、運行計画部12により得られた運行計画の例を示す。移動体としてAGV0が選択され、AGV0の走行ルートとして、Pa、Na、Pbが決定されたとする。AGV0より前に、運行中の移動体(運行情報が割り当てられた移動体)は存在しないため、通過順序情報は生成されない(図では通過順序情報がブランクとなっている)。走行ルート情報の1行目には、AGV0の識別情報(ID)である“AGV0”と、走行ルート(Pa、Na,Pb)とが含まれる。
【0046】
図12に、図4に示した走行路ネットワークにおいてAGV0が運行計画に示される出発地点Paに配置された状態を示す。図12では便宜上、走行路を直線によって表している。なお、運行計画の作成前に、AGV0は出発地点Paに存在しており、運行計画部12は、AGV0が地点Paに存在するとの情報を用いて、AGV0に運行情報を割り当てている。但し、AGV0に運行を割り当てた後に、AGV0を地点Paに配置してもよい。
【0047】
走行制御部13は、運行計画DB26における移動体の運行計画(走行ルート情報、通過順序情報)に基づき移動体の走行を制御する。具体的には、走行制御部13は、運行計画に基づき、移動体の走行ルートを取得する。走行ルートに含まれる複数の基準ノード(基準領域)に対してそれぞれ1つ以上の命令を生成する。より詳細には以下の通りである。
【0048】
走行ルートにおける最初の基準領域は、移動体の出発地点(開始位置)に対応する。当該最初の基準領域に対しては、出発地点への移動命令を生成する(なお移動体は出発地点に既に位置する場合、移動命令を実行しても移動体は移動しない)。
【0049】
走行ルートの最後の基準領域は、移動体の到着地点(終了位置)に対応する。最後の基準領域に対しては、到着地点への移動命令を生成する。
【0050】
最初の基準領域と最後の基準領域以外の基準領域については、以下の方法で命令を生成する。
【0051】
まず、基準領域の前に結合されている走行路を特定する。特定した走行路において当該基準領域に対して設定されている仮想領域(仮想領域Aと記載する)を特定する。また、基準領域の後ろに結合された走行路を特定し、特定した走行路において当該基準領域に対して設定されている仮想領域(仮想領域Bとする)を特定する。
【0052】
次に、仮想領域Aへ移動する命令(第1命令)、基準領域を通過することが許可されるか確認する命令(第2命令)、基準領域の通過が許可された場合に仮想領域Bへ移動する命令(第3命令)、仮想領域Bへ移動した後に基準領域を通過したことを示す通知を含む情報を運行管理装置100へ送信する命令(第4命令)を生成する。このように1つの基準領域に対して、4つの命令が生成される。
【0053】
走行制御部13は、走行ルートに含まれる複数の基準領域に対して生成した命令を、これら複数の基準領域の順序で配置することにより、移動体の移動指令データを生成する。移動指令データは、運行情報を割り当てられた移動体に、運行計画で定められた走行ルートを走行することを移動体に指示するデータである。
【0054】
最初と最後の基準領域以外の基準領域全てについて第1命令~第4命令を生成したが、基準領域のうち指定領域(通過順序情報に含まれる基準領域)についてのみ、第1命令~第4命令を生成してもよい。この場合、最初と最後の基準領域以外の基準領域のうち、指定領域以外の基準領域に対しては、基準領域へ移動する命令を生成すればよい。
【0055】
移動指令データに含まれる最初の命令に実行開始時刻を付加してもよい。最初の命令の実行開始時刻は、走行計画における最初の基準領域の出発時刻と同じでもよい。走行ルートに、移動体が行う作業が含まれる場合は、当該作業に対応する命令も、移動指令データに追加される。作業の例として、搬入口から荷物を受け取ること、受け取った荷物を棚に運ぶこと、棚に荷物を積み上げることなどがある。また、棚から荷物を積み降ろすことなどもある。
【0056】
走行制御部13は、生成した移動指令データを、通信部11を介して、当該移動体に送信する。通信部11は、第1移動体に移動指令データを送信する第1送信部及び第2移動体に移動指令データを送信する第2送信部を含む。運行計画部12は移動指令データの送信後又は送信前に、移動体に割り当てた運行情報における状態を、“新規”から“実行中”に更新する。なお走行制御部13は、移動体による移動指令データの実行状況として移動指令データの実行を完了したとの通知を移動体から受信した場合、運行情報DB25から運行情報を削除してもよい。あるいは運行情報の状態として“完了”を定義し、運行情報の状態を“実行中”から“完了”に遷移させてもよい。
【0057】
図13(A)に、AGV0に対して生成された移動指令データの例を示す。以下、図13(A)の移動指令データを生成する例を記載する。AGV0の走行ルートには、基準領域Pa、Na、Pbが含まれる。
【0058】
最初の基準領域であるPaは出発地点に対応するため、地点Paへ移動する命令が生成される。図13(A)の“Pa”はPaへ移動する命令を意味する。なお、本例では、AGV0はすでに出発地点に存在するため、この命令を実行しても実際に移動することはないものとする。したがって、Paへ移動する命令の生成を省略することも可能である。
【0059】
2番目の基準領域である領域Naについては、領域Naの直前に走行する走行路が特定され、特定された走行路において、領域Naに対して設定された仮想領域Iaを特定する。領域Naの後の直後に走行する走行路を特定する。特定した走行路において領域Naに対して設定された仮想領域Ibを特定する。仮想領域Iaへ移動する命令“Ia”、指定領域Naを通過する(仮想領域Iaを出発又は通過する)ことが許可されるかを確認する命令“Check(Na)”、指定領域Naの通過が許可される場合に仮想領域Ibへ移動(仮想領域Iaを出発又は通過)する命令“Ib”、仮想領域Ibへ移動した後に指定領域Naを通過したこと(仮想領域Ibに到達したこと)を示す情報を運行管理装置100に送信する命令“Notice(Na)”を生成する。Check(Na)は、指定領域Naに対する通過確認を行う命令、Notice(Na)は、指定領域Naの通過完了通知を行う命令に相当する。
【0060】
なお、AGV0は、Check(Na)の実行により走行制御部13から領域Naの通過を許可される前は、仮想領域Iaより先に進むことはできないものとする。例えばAGV0は、領域Naの通過の許可を得る前に仮想領域Iaに達した場合は、仮想領域Iaで一時停止する。一方、AGV0は、仮想領域Ibでは、仮想領域Ibに達した時点で、Notice(Na)を実行し、仮想領域Ibで一時停止する必要はない。
【0061】
3番目の領域Pbは、到着地点であるため、到着地点Pbへ移動する命令“Pd”を生成する。
【0062】
以上のように生成した命令を、走行ルートに含まれる基準領域の順番に対応して配置することで、図13(A)に示した移動指令データがAGV0に対して生成される。
【0063】
続いて、(出発地点:Pc、到着地点:Pd)の運行情報を移動体に割り当てる場合の動作を示す。AGV0には既に運行情報が割り当てられ、AGV0は移動指令データを実行しているとする。運行情報の状態は、図10の例に示す“実行中”であるとする。
【0064】
出発地点:Pc、到着地点:Pd)の運行情報を割り当てる移動体としてAGV1が選択され、AGV1の走行ルートとして、Pc、Na、Pdが決定されたとする。
【0065】
図14に、図4に示した走行路ネットワークにおいてAGV1が運行計画に示される出発地点Pa、Pcに配置された状態を示す。AGV0は運行中(移動指令データを実行中)である。
【0066】
AGV1より前に運行中(移動指令データを実行中)の移動体としてAGV0が存在する。運行中のAGV0が存在することは一例として運行情報DB25から判断できる。運行計画部12は、AGV1の走行ルートを、すでに運行されている移動体(ここではAGV0)の走行ルートと比較し、両走行ルートに、同じ基準領域(指定領域)が含まれるかを判断する。同じ基準領域が含まれない場合、AGV0と同様にして、AGV1に対して移動指令データを生成し、移動指令データを移動体(AGV1)に送信する。なお、すでに運行されている移動体の走行ルートは、当該移動体の移動指令データに含まれる命令の行き先を順番に辿ることで特定することができる。あるいは、すでに運行されている移動体の走行ルートは、運行計画から特定することもできる。
【0067】
一方、両走行ルートに同じ基準領域が含まれる場合、AGV1の走行ルートがすでに運行されているAGV0の走行ルートと競合するかを判断する。走行ルートが競合するとは、すでに運行されている移動体の運行を遅らせる又は遅らせる可能性があることである。
【0068】
一例として、対象となる移動体(ここではAGV1)の走行ルートと、すでに運行されている移動体(ここではAGV0)の走行ルートとに同じ基準領域が含まれ、かつ運行されている移動体が当該同じ基準領域をまだ通過していないことがある(競合の例1)。
【0069】
または対象となる移動体(ここではAGV1)の走行ルートと、すでに運行されている移動体(ここではAGV0)とに同じ基準領域が含まれ、かつ通過順序情報において対象となる移動体(ここではAGV1)の順序が、すでに運行されている移動体(ここではAGV0)よりも前になっていることがある(競合の例2)。
【0070】
AGV1の走行ルートがAGV0の走行ルートと競合するかを判断することにおいて、競合の例1、及び競合の例2のいずれを用いてもかまわない。上述した競合の例は一例であり、他の移動体の運行を遅らせる可能性がある限り、他の場合も可能である。
【0071】
AGV1の走行ルートがすでに運行されているAGV0の走行ルートと競合することを、AGV1の運行情報がAGV0の運行情報と競合すると称する場合もある。
【0072】
競合の例1を用いる場合において、競合しないと判断された場合、AGV0と同様にして、AGV1に対して移動指令データを生成し、生成した移動指令データを移動体(AGV1)に送信する。競合の例2を用いる場合において、競合しないと判断された場合、決定された通過順序を含む通過順序情報を生成、又は通過順序情報を更新(既に通過順序情報が生成されている場合)する。そして、AGV0と同様にして、AGV1に対して移動指令データを生成し、生成した移動指令データを移動体(AGV1)に送信する。
【0073】
競合の例1又は競合の例2を用いる場合において、両走行ルートが競合すると判断された場合、対象となる移動体(AGV1)に割り当てられた運行情報に対して保留タスクを生成する。保留タスクは、一例として、運行情報を割り当てられた移動体(AGV0)の識別子と、出発地点と、到着地点と、通過チェック領域(通過チェックノード)と、競合すると判断された運行情報の識別子とを含む。通過チェック領域は、競合の原因となった基準領域のことである。すなわち、通過チェック領域は、対象となる移動体の走行ルートと、すでに運行中の移動体の走行ルートとに共通に含まる基準領域であり、競合すると判断される原因となった基準領域である。本例では、競合の例1又は競合の例2が用いられ、AGV1のルートがAGV0のルートと競合すると判断されて、保留タスクが生成される。
【0074】
運行計画部12は、保留タスクを保留タスクDB28に格納する。保留タスクDB28を運行情報DB25に統合し、保留タスクと運行情報とを1つのレコードとして管理してもよい。
【0075】
図15は保留タスクDB28の例を示す。図の例では、AGV1に対して生成された保留タスクが格納されている。AGV1の保留タスクは、AGV1の出発地点Pc、到着地点Pd、通過チェック領域、競合する運行情報(実行中タスク)の識別子(No.)を含む。
【0076】
運行計画部12は、保留タスクに係る運行情報の状態を”保留”に更新する。
【0077】
図16は、AGV1の運行情報(運行情報No.2)の状態を”保留”に更新した例を示す。
【0078】
走行制御部13は、保留タスクDB28に格納されている保留タスクについて、通過チェック領域を、競合する運行情報のタスクを運行している移動体が通過したかを判断する。すなわち、競合する運行情報のタスクを運行している移動体の移動指令データの実行状況を検査する。図14の例の場合、AGV0が通過チェック領域Naを通過したかを判断する。AGV0が通過チェック領域Naを通過したか否かは、AGV0の移動指令データに含まれる命令のうちどの命令まで実行されかを判断することで決定できる。
【0079】
具体的には、走行制御部13は、AGV0からNotice(Na)の通知を受けた場合に通過チェック領域Naを通過したと判断する。あるいは、通信環境に起因してNotice(Na)の通知を受信できなかった場合に、Notice(Na)の後に配置された任意の命令が実行されたことの通知を受けたときに通過チェック領域Naを通過したと判断してもよい。あるいは、AGV0が、通過チェック領域の前の仮想領域Iaと、通過チェック領域の後の仮想領域Ibとの間に位置する場合に、AGV0が通過チェック領域Naを通過したと見なしてもよい。Check(Na)(第3命令)が実行され、Notice(Na)(第4命令)が実行されていない場合に、AGV0が仮想領域Ia及び仮想領域Ib間に位置することを決定できる。あるいは、AGV0が、仮想領域Iaと仮想領域Ibとの間に位置することは移動体から位置情報を通信によって取得することによって検出してもよい。AGV0が仮想領域Iaと仮想領域Ibとの間に位置するかの検査を一定時間間隔で行ってもよい。
【0080】
走行制御部13は、AGV0が通過チェック領域Naを通過したと判断した場合、運行計画部12は、AGV0の保留タスクを、保留タスクDB28から削除する。このように、競合する移動体の移動指令データの実行状況に応じて、保留タスクDB28から保留タスクが削除される。具体的には実行状況が変化し、通過チェック領域NaをAGV0が通過した場合に、競合が解消されたとして、保留タスクが削除される。また、運行計画部12は、保留タスクに係る移動体(AGV1)の運行情報の状態を“保留”から“未実行”に更新する。
【0081】
図17は、AGV1の運行情報(運行情報No.2)の状態を”未実行”に更新した例を示す。
【0082】
運行計画部12は、運行情報DB25から“新規”又は“未実行”の運行情報を選択する。図17の例では、“未実行”のNo.2の運行情報を選択する。選択した運行情報を割り当てる移動体は、前回と同じAGV1(保留タスクに係る移動体)と同じである。そして、運行計画部12は、選択した運行情報に基づきAGV1の走行ルートを決定する。このように運行計画部12は、AGV0の移動指令データの実行状況が変化して保留タスクDB28から削除された保留タスクに係る移動体(AGV1)に対して走行ルートを生成する。すなわち、運行計画部12は、AGV0の移動指令データの実行状況に応じて、AGV1の運行情報に基づき、AGV1の走行ルートを生成する。また、運行計画部12は、AGV1の走行ルートにおけるAGV1の走行タイミングを決定する。運行計画部12は、AGV1の走行ルートが、運行中のAGV0の走行ルートと競合するかを再度判断する。走行ルートの競合を判断する方法として、前述した競合の例1又は例2を用いることができる。
【0083】
すなわち、前述した競合の例1を用いる場合、AGV1の走行ルートに、運行中のAGV0の走行ルートと同じ基準領域(指定領域)が含まれるかを判断する。本例では指定領域Naが含まれる。運行計画部12は、AGV0が指定領域を通過済みの場合は、競合しないと判断する。
【0084】
前述した競合の例2を用いる場合は、AGV1の走行ルートに、運行中のAGV0の走行ルートと同じ基準領域(指定領域)が含まれ、かつAGV0による指定領域の通過順序がAGV1よりも早いかを判断する。指定領域の通過順序は通過順序算出部14が算出する。通過順序算出部14は、AGV0及びAGV1の各々の指定領域の走行タイミングに基づき、AGV1及びAGV0が指定領域を通過する順序を算出する。AGV0の通過順序がAGV1よりも早い場合は、AGV1の走行ルートはAGV0の走行ルートと競合しないと判断する。
【0085】
本例では、運行計画部12は、AGV0は指定領域である通過チェック領域Naを通過済みのため、AGV1の走行ルートはAGV0の走行ルートと競合しないと判断する。
【0086】
このように運行計画部12は、AGV1の走行ルートがAGV0の走行ルートと競合する場合に、AGV0の移動指令データの実行状況に応じて、AGV0の走行ルートを再生成する。AGV0の走行ルートと競合しないAGV1の走行ルートを取得できるまで、この動作を繰り返し行う。なお、再生成したAGV1の走行ルートは、再生成の前に生成したAGV1の走行ルートと同じ場合もあれば、異なる場合もある。再生成されるAGV1の走行ルートは、AGV0の移動指令データの実行状況に応じて変わり得る。
【0087】
図18に、AGV0がNotice(Na)の実行により領域Naの通過済みを運行管理装置100に通知した後の走行路ネットワークの状態を示す。
【0088】
走行制御部13は、AGV1の走行ルートに基づき、AGV1に対する移動指令データを生成する。走行制御部13は、生成された移動指令データを、通信部11を介してAGV1に送信する。
【0089】
図13(B)のNo.2の行に、AGV1に対して生成された移動指令データの例を示す。
【0090】
運行計画部12は、AGV1の運行情報の状態を“未実行”から“実行中”に更新する。
【0091】
図19は、AGV1の運行情報(運行情報No.2)の状態を“未実行”から“実行中”に更新した例を示す。
【0092】
図20は、本実施形態に係る運行管理装置100の動作の一例を示すフローチャートである。
【0093】
タスク生成装置200で、移動体に割り当てるタスクの情報(運行情報)が生成された場合に、タスク取得部15が運行情報を取得し、取得した運行情報を運行情報DB25に格納する(S101)。運行情報の状態の初期値として“新規”を設定する。
【0094】
走行制御部13は、保留タスクDB28に含まれる保留タスクについて、競合する移動体(タスク実行中の移動体)が通過チェック領域を通過したかを検査する(S102)。通過した場合は、運行計画部12が保留タスクを削除し、運行情報の状態を“保留”から“未実行”に変更する。走行制御部13は、一定時間間隔で保留タスクについて、競合する移動体が通過チェック領域を通過したかの検査を行ってもよい。このように保留タスクは、競合する移動体の移動指令データの実行状況に応じて保留タスクDB28から削除される。これにより、次のステップで、削除された保留タスクに係る移動体に対して、当該移動体の運行情報に基づき走行ルートが生成される。
【0095】
運行計画部12は、運行情報DB25から状態が“新規”又は“未実行”の運行情報を選択し、選択した運行情報に基づき、運行情報を割り当てる移動体(対象となる移動体)を決定する(S103)。運行情報の選択の順序は任意でもよいし、所定のルールで定めてもよい。例えば“未実行”を“新規”よりも優先してもよい。あるいは、運行情報に優先度を設定し、優先度が高い順に選択してもよい。その他の方法で選択順序を決定してもよい。運行計画部12は、タスク取得部15で運行状態が取得されたときに、取得した運行情報を割り当てる移動体を決定してもよい。
【0096】
運行計画部12は、対象となる移動体に対して運行情報に基づき走行ルートを決定する。また、走行ルートに含まれる基準領域の走行タイミングを決定する(S104)。“実行中”の運行情報が存在するか、すなわち運行中の移動体が存在するかを確認する(S105)。存在しない場合は(S105のNO)、当該走行ルートに基づき移動指令データを生成し、生成した移動指令データを移動体に送信する(S106)。また運行情報の状態を“実行中”に更新する(同S106)。
【0097】
運行中の移動体が存在する場合(S105のYES)、当該運行中の移動体の走行ルートを取得する(S107)。走行ルートは例えば当該移動体が実行する移動体指令データに基づき特定してもよいし、当該移動体の運行計画に基づき特定してもよい。対象となる移動体の走行ルートが、運行中の移動体の走行ルートと競合するかを、前述した競合の例1又は競合の例2などに基づき判断する(S108)。また対象となる移動体の走行ルートが、運行中の移動体の走行ルートと共通する基準領域を含む場合は、当該基準領域の通過順序を決定する。
【0098】
競合しない場合は(S108のNO)、当該走行ルートに基づき移動指令データを生成し、生成した移動指令データを移動体に送信する(S110)。また運行情報の状態を“実行中”に更新する(同S110)。競合の例2を用いる場合において、対象となる移動体の走行ルートが、運行中の移動体の走行ルートと共通する基準領域を含む場合は、上記の決定した通過順序に基づき、通過順序情報を生成又は更新する。
【0099】
競合する場合は(S108のYES)、保留タスクを生成し、生成した保留タスクを保留タスクDB28に格納する。(S109)。
【0100】
全ての移動体の運行が終了したかを判断し(S111)、終了した場合は(S111のYES)、本処理を終了する。終了していない場合は(S111のNO)、ステップS101に戻る。
【0101】
以上、本実施形態によれば移動体の走行ルートが、運行中の移動体の走行ルートと競合する場合には、移動体の運行情報を保留タスクとして保留にし、競合の原因(前述した競合の例1又は競合の例2)が解消された場合には、運行情報に基づき運行計画(走行ルート等)を再生成する。これにより、移動体の運行中に新たな運行情報が発生した場合にも、運行中の移動体を妨げることなく、新たな運行情報に基づくタスクを他の移動体に実行させることができる。
【0102】
[変形例1]
前述した実施形態では運行中の移動体を停止させることなく、対象となる移動体の運行計画(走行ルート等)を作成したが、運行中の移動体を一時停止させてもよい。
【0103】
例えば、運行中の移動体を指定領域の手前の仮想領域で一時停止させてもよい。これにより、対象となる移動体の運行計画を作成する処理の途中で、運行中の移動体が指定領域を通過することにより、運行計画の作成前後で通過順序に矛盾が生じることを防止できる。
【0104】
この場合、運行中の移動体から、仮想領域でCheck命令に基づく通知が受信されても走行制御部13は通過の許可を出さなくてよい。対象となる移動体の処理が完了したら走行制御部13は許可の通知を送信してもよい。例えば移動体の走行ルートが決定された場合、又は当該移動体に移動指令データが送信された場合に、許可の通知を送信する。
【0105】
このように一時停止される運行中の移動体が存在しても、対象となる移動体と共通する基準領域を含まない運行中の移動体は一時停止されないため、システム全体の効率の低下は抑制される。
【0106】
[変形例2]
運行中の移動体が指定領域を通過中(指定領域の前の仮想領域と、指定領域の後の仮想領域との間に位置する場合)、運行中の移動体が指定領域を通過するまで待機し、指定領域を通過した後、対象となる移動体の運行計画の作成の処理を行ってもよい。これにより運行計画の作成前後で通過順序に矛盾が生じることを防止できる。運行中の移動体が指定領域を通過したことは、例えば走行制御部13がNotice命令に基づく通知を受信することで判断できる。
【0107】
[変形例3]
前述した実施形態では出発地点から到着地点までの走行を少なくとも含むものをタスクと定義したが、タスクの定義は他にも可能である。例えば、移動体がある閾値を下回ったら充電を開始するタスクでもよい。ある時間を経過したら、走行路ネットワークを変更するタスクでもよい。走行路ネットワークを変更する例として、走行路の一部を使用不可にする、新たな走行路が追加するなどがある。走行路ネットワークを変更する場合、走行路情報DB21、基準領域DB22及び走行路ネットワーク情報DB23の少なくとも1つの更新を伴ってもよい。充電のタスク、走行路ネットワークの変更のタスクも、タスク生成装置200でユーザ入力を介して生成し、当該タスクの情報を運行管理装置100に入力してもよい。運行管理装置100は、通信部11を用いて、当該タスクを実行する指示を該当する移動体に送信したり、当該タスクを運行管理装置100の制御部(図示せず)が実行したりする。
【0108】
(ハードウェア構成)
図21に、図1の運行管理装置100のハードウェア構成を示す。図1の運行管理装置100は、コンピュータ装置300により構成される。コンピュータ装置300は、CPU301と、入力インタフェース302と、表示装置303と、通信装置304と、主記憶装置305と、外部記憶装置306とを備え、これらはバス307により相互に接続されている。
【0109】
CPU(中央演算装置)301は、主記憶装置305上で、コンピュータプログラムである運行計画プログラム(情報処理プログラム)を実行する。運行計画プログラムは、運行管理装置100の上述の各機能構成を実現するプログラムのことである。運行計画プログラムは、1つのプログラムではなく、複数のプログラムやスクリプトの組み合わせにより実現されていてもよい。CPU301が、運行計画プログラムを実行することにより、各機能構成は実現される。
【0110】
入力インタフェース302は、キーボード、マウス、およびタッチパネルなどの入力装置からの操作信号を、運行管理装置100に入力するための回路又は入力装置である。
【0111】
表示装置303は、運行管理装置100から出力されるデータを表示する。表示装置303は、例えば、LCD(液晶ディスプレイ)、有機エレクトロルミネッセンスディスプレイ、CRT(ブラウン管)、またはPDP(プラズマディスプレイ)であるが、これに限られない。コンピュータ装置300から出力されたデータは、この表示装置303に表示することができる。
【0112】
通信装置304は、運行管理装置100が外部装置と無線または有線で通信するための回路である。データは、通信装置304を介して外部装置から入力することができる。外部装置から入力したデータを、主記憶装置305や外部記憶装置306に格納することができる。
【0113】
主記憶装置305は、運行計画プログラム、運行計画プログラムの実行に必要なデータ、および運行計画プログラムの実行により生成されたデータなどを記憶する。運行計画プログラムは、主記憶装置305上で展開され、実行される。主記憶装置305は、例えば、RAM、DRAM、SRAMであるが、これに限られない。図1の各DB又は記憶部は、主記憶装置305上に構築されてもよい。
【0114】
外部記憶装置306は、運行計画プログラム、運行計画プログラムの実行に必要なデータ、および運行計画プログラムの実行により生成されたデータなどを記憶する。これらの運行計画プログラムやデータは、運行計画プログラムの実行の際に、主記憶装置305に読み出される。外部記憶装置306は、例えば、ハードディスク、光ディスク、フラッシュメモリ、及び磁気テープであるが、これに限られない。図1の各DB又は各記憶部は、外部記憶装置306上に構築されてもよい。
【0115】
なお、運行計画プログラムは、コンピュータ装置300に予めインストールされていてもよいし、CD-ROMなどの記憶媒体に記憶されていてもよい。また、運行計画プログラムは、インターネット上にアップロードされていてもよい。
【0116】
また、運行管理装置100は、単一のコンピュータ装置300により構成されてもよいし、相互に接続された複数のコンピュータ装置300からなるシステムとして構成されてもよい。
【0117】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【0118】
1~N:移動体
11:通信部
12:運行計画部
13:走行制御部
14:通過順序算出部
15:タスク取得部
21:走行路情報データベース(DB)
22:基準領域DB
23:走行路ネットワーク情報DB
24:移動体情報DB
25:運行情報DB(運行情報記憶部)
26:運行計画DB
27:仮想領域DB
28:保留タスクDB
100:運行管理装置(走行制御装置)
200:タスク生成装置(運行情報生成装置)
301:CPU
300:コンピュータ装置
302:入力インタフェース
303:表示装置
304:通信装置
305:主記憶装置
306:外部記憶装置
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21