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

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

▶ 株式会社熊谷組の特許一覧

特開2024-126102巡回ルート作成装置、巡回ルート作成装置、並びに、巡回ルート作成処理プログラム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024126102
(43)【公開日】2024-09-20
(54)【発明の名称】巡回ルート作成装置、巡回ルート作成装置、並びに、巡回ルート作成処理プログラム
(51)【国際特許分類】
   G05D 1/43 20240101AFI20240912BHJP
【FI】
G05D1/02 H
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2023034271
(22)【出願日】2023-03-07
(71)【出願人】
【識別番号】000001317
【氏名又は名称】株式会社熊谷組
(74)【代理人】
【識別番号】100141243
【弁理士】
【氏名又は名称】宮園 靖夫
(72)【発明者】
【氏名】加藤 貴之
(72)【発明者】
【氏名】冨樫 淳輝
【テーマコード(参考)】
5H301
【Fターム(参考)】
5H301BB10
5H301CC03
5H301CC06
5H301KK03
(57)【要約】
【課題】複数のエリアを移動体に巡回させるための効率的な巡回ルートを効率的に作成可能な巡回ルート作成装置等を提供する。
【解決手段】本発明に係る巡回ルート作成装置は、複数の各エリア(A1,A2,A3,A4,A5,A6)の重心G,G…同士を繋ぐ重心間経路r,r…を作成する重心間経路作成手段と、重心間経路を辿って各エリアを一巡する巡回ループ経路のうち最も距離の短い巡回ループ経路を作成する巡回ループ経路作成手段と、各エリア内において複数の巡回パターンを設定可能な巡回パターン設定手段と、作成された巡回ループ経路に基づいて各エリアを移動するとした場合に、移動コストが最も小さくなる各エリア内での巡回パターンの組み合わせを決定する巡回パターン決定手段と、各エリア内での巡回パターンの組み合わせが決定した後、巡回ルートを作成する巡回ルート作成手段と、を備えた。
【選択図】図34
【特許請求の範囲】
【請求項1】
XY座標情報に基づいて区画された複数の移動対象領域の位置情報を認識して当該複数の移動対象領域を移動体に巡回させる巡回ルートを作成するための巡回ルート作成装置であって、
複数の各移動対象領域の重心同士を繋ぐ重心間経路を作成する重心間経路作成手段と、
重心間経路を辿って各移動対象領域を一巡する巡回ループ経路のうち最も距離の短い巡回ループ経路を作成する巡回ループ経路作成手段と、
各移動対象領域内において複数の巡回パターンを設定可能な巡回パターン設定手段と、
作成された巡回ループ経路に基づいて各移動対象領域を移動するとした場合に、移動コストが最も小さくなる各移動対象領域内での巡回パターンの組み合わせを決定する巡回パターン決定手段と、
各移動対象領域内での巡回パターンの組み合わせが決定した後、一方の移動対象領域の巡回パターンの終点と他方の移動対象領域の巡回パターンの始点とを繋ぐ各移動対象領域間経路のうち、最も移動コストが大きい移動対象領域間経路を削除して、当該削除された移動対象領域間経路の終点となっていた移動対象領域を巡回開始領域とし、かつ、当該削除された移動対象領域間経路の始点となっていた移動対象領域を巡回終了領域とした巡回ルートを作成する巡回ルート作成手段と、
を備えたことを特徴とする巡回ルート作成装置。
【請求項2】
重心間経路作成手段は、各移動対象領域の重心をドロネー点とし、各移動対象領域の重心同士を繋ぐ線をドロネー辺とするドロネー三角形分割処理手段により構成され、
当該ドロネー三角形分割処理手段により作成されるドロネー辺を重心間経路としたことを特徴とする請求項1に記載の巡回ルート作成装置。
【請求項3】
巡回ループ経路作成手段は、
重心間経路を辿って各移動対象領域を一巡する巡回ループ経路の候補を1つ以上作成する巡回ループ経路候補作成手段と、
作成されたすべての巡回ループ経路候補の中から移動距離の最も短い巡回ループ経路候補を巡回ループ経路として決定する巡回ループ経路決定手段と、
備えたことを特徴とする請求項1に記載の巡回ルート作成装置。
【請求項4】
巡回パターン決定手段は、作成された巡回ループ経路において、各移動対象領域を一巡する際の出発移動対象領域を決めた後に、移動コストが最も小さくなる各移動対象領域内での巡回パターンの組み合わせを決定することを特徴とする請求項1に記載の巡回ルート作成装置。
【請求項5】
巡回パターン決定手段は、作成された巡回ループ経路において、各移動対象領域を一巡する際の出発移動対象領域や移動順を異ならせた毎に、移動コストが最も小さくなる各移動対象領域内での巡回パターンの最適組み合わせを作成し、この出発移動対象領域や移動順を異ならせた毎の巡回パターンの最適組み合わせのうち移動コストが最も小さいものを巡回パターンの組み合わせとして決定することを特徴とする請求項1に記載の巡回ルート作成装置。
【請求項6】
巡回パターン設定手段により設定可能な移動対象領域内の巡回パターンは、X軸に沿ってジグザグに進むX方向巡回パターン、又は、Y軸に沿って進むジグザグなY方向巡回パターンであり、
X方向巡回パターンは、移動開始位置をX座標最小値Y座標最大値の位置とするパターン、移動開始位置をX座標最小値Y座標最小値の位置とするパターン、移動開始位置をX座標最大値Y座標最大値の位置とするパターン、移動開始位置をX座標最大値Y座標最小値の位置とするパターンであり、
Y方向巡回パターンは、移動開始位置をX座標最小値Y座標最大値の位置とするパターン、移動開始位置をX座標最大値Y座標最大値の位置とするパターン、移動開始位置をX座標最小値Y座標最小値の位置とするパターン、移動開始位置をX座標最大値Y座標最小値の位置とするパターンであることを特徴とする請求項1乃至請求項6のいずれか一項に記載の巡回ルート作成装置。
【請求項7】
XY座標情報に基づいて区画された複数の移動対象領域の位置情報を認識して当該複数の移動対象領域を移動体に巡回させる巡回ルートを作成するための巡回ルート作成方法であって、
複数の各移動対象領域の重心同士を繋ぐ重心間経路を作成する重心間経路作成ステップと、
重心間経路を辿って各移動対象領域を一巡する巡回ループ経路のうち最も距離の短い巡回ループ経路を作成する巡回ループ経路作成ステップと、
作成された巡回ループ経路に基づいて各移動対象領域を移動するとした場合に、移動コストが最も小さくなる各移動対象領域内での巡回パターンの組み合わせを決定する巡回パターン決定ステップと、
各移動対象領域内での巡回パターンの組み合わせが決定した後、一方の移動対象領域の巡回パターンの終点と他方の移動対象領域の巡回パターンの始点とを繋ぐ各移動対象領域間経路のうち、最も移動コストが大きい移動対象領域間経路を削除して、当該削除された移動対象領域間経路の終点となっていた移動対象領域を巡回開始領域とし、かつ、当該削除された移動対象領域間経路の始点となっていた移動対象領域を巡回終了領域とした巡回ルートを作成する巡回ルート作成ステップと、
を備えたことを特徴とする巡回ルート作成方法。
【請求項8】
XY座標情報に基づいて区画された複数の移動対象領域の位置情報を認識して当該複数の移動対象領域を移動体に巡回させる巡回ルートを作成するための巡回ルート作成処理プログラムであって、
コンピュータを、
複数の各移動対象領域の重心同士を繋ぐ重心間経路を作成する重心間経路作成手段、
重心間経路を辿って各移動対象領域を一巡する巡回ループ経路のうち最も距離の短い巡回ループ経路を作成する巡回ループ経路作成手段、
各移動対象領域内において複数の巡回パターンを設定可能な巡回パターン設定手段、
作成された巡回ループ経路に基づいて各移動対象領域を移動するとした場合に、移動コストが最も小さくなる各移動対象領域内での巡回パターンの組み合わせを決定する巡回パターン決定手段、
各移動対象領域内での巡回パターンの組み合わせが決定した後、一方の移動対象領域の巡回パターンの終点と他方の移動対象領域の巡回パターンの始点とを繋ぐ各移動対象領域間経路のうち、最も移動コストが大きい移動対象領域間経路を削除して、当該削除された移動対象領域間経路の終点となっていた移動対象領域を巡回開始領域とし、かつ、当該削除された移動対象領域間経路の始点となっていた移動対象領域を巡回終了領域とした巡回ルートを作成する巡回ルート作成手段、
として機能させることを特徴とする巡回ルート作成処理プログラム。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数の移動対象領域を移動体に巡回させる巡回ルートを作成するための巡回ルート作成装置等に関する。
【背景技術】
【0002】
本出願人による発明である移動体の移動制御システムとして、移動対象面(移動対象領域)上を移動させる移動体の移動予定情報(移動予定ルート)を作成する移動予定情報作成処理と、移動体を移動予定情報に基づいて移動させるとともに、移動情報取得手段により取得された移動体の実際の移動情報と移動予定情報とを比較して移動体の移動を制御する移動制御処理と、を備えた移動体の移動制御システムが開示されている(特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2020-154400号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
上述した移動体の移動制御方法では、移動対象領域が複数ある場合において、移動体を当該複数の移動対象領域間で効率的に巡回させるための巡回ルートを作成することについては開示されておらず、当該巡回ルートを作成するための巡回ルート作成装置等の開発が望まれているという課題があった。
本発明は、上記課題に鑑み、複数の移動対象領域を移動体に巡回させるための効率的な巡回ルートを効率的に作成可能な巡回ルート作成装置等を提供するものである。
【課題を解決するための手段】
【0005】
本発明に係る巡回ルート作成装置は、XY座標情報に基づいて区画された複数の移動対象領域の位置情報を認識して当該複数の移動対象領域を移動体に巡回させる巡回ルートを作成するための巡回ルート作成装置であって、複数の各移動対象領域の重心同士を繋ぐ重心間経路を作成する重心間経路作成手段と、重心間経路を辿って各移動対象領域を一巡する巡回ループ経路のうち最も距離の短い巡回ループ経路を作成する巡回ループ経路作成手段と、各移動対象領域内において複数の巡回パターンを設定可能な巡回パターン設定手段と、作成された巡回ループ経路に基づいて各移動対象領域を移動するとした場合に、移動コストが最も小さくなる各移動対象領域内での巡回パターンの組み合わせを決定する巡回パターン決定手段と、各移動対象領域内での巡回パターンの組み合わせが決定した後、一方の移動対象領域の巡回パターンの終点と他方の移動対象領域の巡回パターンの始点とを繋ぐ各移動対象領域間経路のうち、最も移動コストが大きい移動対象領域間経路を削除して、当該削除された移動対象領域間経路の終点となっていた移動対象領域を巡回開始領域とし、かつ、当該削除された移動対象領域間経路の始点となっていた移動対象領域を巡回終了領域とした巡回ルートを作成する巡回ルート作成手段と、を備えたことを特徴とする。
また、重心間経路作成手段は、各移動対象領域の重心をドロネー点とし、各移動対象領域の重心同士を繋ぐ線をドロネー辺とするドロネー三角形分割処理手段により構成され、
当該ドロネー三角形分割処理手段により作成されるドロネー辺を重心間経路としたことを特徴とする。
また、巡回ループ経路作成手段は、重心間経路を辿って各移動対象領域を一巡する巡回ループ経路の候補を1つ以上作成する巡回ループ経路候補作成手段と、作成されたすべての巡回ループ経路候補の中から移動距離の最も短い巡回ループ経路候補を巡回ループ経路として決定する巡回ループ経路決定手段と、備えたことを特徴とする。
また、巡回パターン決定手段は、作成された巡回ループ経路において、各移動対象領域を一巡する際の出発移動対象領域を決めた後に、移動コストが最も小さくなる各移動対象領域内での巡回パターンの組み合わせを決定することを特徴とする。
また、巡回パターン決定手段は、作成された巡回ループ経路において、各移動対象領域を一巡する際の出発移動対象領域や移動順を異ならせた毎に、移動コストが最も小さくなる各移動対象領域内での巡回パターンの最適組み合わせを作成し、この出発移動対象領域や移動順を異ならせた毎の巡回パターンの最適組み合わせのうち移動コストが最も小さいものを巡回パターンの組み合わせとして決定することを特徴とする。
また、巡回パターン設定手段により設定可能な移動対象領域内の巡回パターンは、X軸に沿ってジグザグに進むX方向巡回パターン、又は、Y軸に沿って進むジグザグなY方向巡回パターンであり、X方向巡回パターンは、移動開始位置をX座標最小値Y座標最大値の位置とするパターン、移動開始位置をX座標最小値Y座標最小値の位置とするパターン、移動開始位置をX座標最大値Y座標最大値の位置とするパターン、移動開始位置をX座標最大値Y座標最小値の位置とするパターンであり、Y方向巡回パターンは、移動開始位置をX座標最小値Y座標最大値の位置とするパターン、移動開始位置をX座標最大値Y座標最大値の位置とするパターン、移動開始位置をX座標最小値Y座標最小値の位置とするパターン、移動開始位置をX座標最大値Y座標最小値の位置とするパターンであることを特徴とする。
本発明に係る巡回ルート作成方法は、XY座標情報に基づいて区画された複数の移動対象領域の位置情報を認識して当該複数の移動対象領域を移動体に巡回させる巡回ルートを作成するための巡回ルート作成方法であって、複数の各移動対象領域の重心同士を繋ぐ重心間経路を作成する重心間経路作成ステップと、重心間経路を辿って各移動対象領域を一巡する巡回ループ経路のうち最も距離の短い巡回ループ経路を作成する巡回ループ経路作成ステップと、作成された巡回ループ経路に基づいて各移動対象領域を移動するとした場合に、移動コストが最も小さくなる各移動対象領域内での巡回パターンの組み合わせを決定する巡回パターン決定ステップと、各移動対象領域内での巡回パターンの組み合わせが決定した後、一方の移動対象領域の巡回パターンの終点と他方の移動対象領域の巡回パターンの始点とを繋ぐ各移動対象領域間経路のうち、最も移動コストが大きい移動対象領域間経路を削除して、当該削除された移動対象領域間経路の終点となっていた移動対象領域を巡回開始領域とし、かつ、当該削除された移動対象領域間経路の始点となっていた移動対象領域を巡回終了領域とした巡回ルートを作成する巡回ルート作成ステップと、を備えたことを特徴とする。
本発明に係る巡回ルート作成処理プログラムは、XY座標情報に基づいて区画された複数の移動対象領域の位置情報を認識して当該複数の移動対象領域を移動体に巡回させる巡回ルートを作成するための巡回ルート作成処理プログラムであって、コンピュータを、複数の各移動対象領域の重心同士を繋ぐ重心間経路を作成する重心間経路作成手段、重心間経路を辿って各移動対象領域を一巡する巡回ループ経路のうち最も距離の短い巡回ループ経路を作成する巡回ループ経路作成手段、各移動対象領域内において複数の巡回パターンを設定可能な巡回パターン設定手段、作成された巡回ループ経路に基づいて各移動対象領域を移動するとした場合に、移動コストが最も小さくなる各移動対象領域内での巡回パターンの組み合わせを決定する巡回パターン決定手段、各移動対象領域内での巡回パターンの組み合わせが決定した後、一方の移動対象領域の巡回パターンの終点と他方の移動対象領域の巡回パターンの始点とを繋ぐ各移動対象領域間経路のうち、最も移動コストが大きい移動対象領域間経路を削除して、当該削除された移動対象領域間経路の終点となっていた移動対象領域を巡回開始領域とし、かつ、当該削除された移動対象領域間経路の始点となっていた移動対象領域を巡回終了領域とした巡回ルートを作成する巡回ルート作成手段、として機能させることを特徴とする。
本発明によれば、複数の移動対象領域を移動体に巡回させるための効率的な巡回ルートを効率的に作成可能な巡回ルート作成装置等を提供できるようになる。
【図面の簡単な説明】
【0006】
図1】移動対象領域及び障害物領域の作成処理(phase1)の説明図。
図2】障害物グループ分け処理(phase2)の説明図。
図3】障害物角認識処理(phase3)の説明図。
図4】障害物間境界線作成処理(phase4)の説明図。
図5】分割領域区分け処理(phase5)の説明図。
図6】分割領域区分け処理(phase5)の説明図。
図7】分割領域認識処理(phase6)の説明図。
図8】分割領域認識処理(phase6)の説明図。
図9】等間隔直線経路作成処理(phase7)の説明図。
図10】交点座標抽出処理(phase8)の説明図。
図11】エリア毎交点座標抽出処理(phase9)及び分割領域内ジグザグ移動予定ルート作成処理(phase10)の説明図。
図12】分割領域内ジグザグ移動予定ルート作成処理(phase10)及び分割領域間移動予定ルート作成処理(phase11)の説明図。
図13】移動対象領域及び障害物領域の作成処理(phase1)の手順を示すフローチャート。
図14】障害物グループ分け処理(phase2)の手順を示すフローチャート。
図15】障害物角認識処理(phase3)の手順を示すフローチャート。
図16】障害物間境界線作成処理(phase4)の手順を示すフローチャート。
図17】分割領域区分け処理(phase5)の手順を示すフローチャート。
図18】分割領域認識処理(phase6)の手順を示すフローチャート。
図19】等間隔直線経路作成処理(phase7)及び交点座標抽出処理(phase8)の手順を示すフローチャート。
図20】エリア毎交点座標抽出処理(phase9)の手順を示すフローチャート。
図21】分割領域内ジグザグ移動予定ルート作成処理(phase10)の手順を示すフローチャート。
図22】移動コスト計算処理(phase11)の手順を示すフローチャート。
図23】別ルート作成処理(phase12~16)の手順を示すフローチャート。
図24】ルート選択処理(phase17)の手順を示すフローチャート。
図25】分割領域間移動予定ルート作成処理(phase18)の手順を示すフローチャート。
図26】分割領域認識処理(phase6)の説明図。
図27】分割領域認識処理(phase6)の説明図。
図28】分割領域認識処理(phase6)の説明図。
図29】エリア毎交点座標抽出処理(phase9)及び分割領域内ジグザグ移動予定ルート作成処理(phase10)の説明図。
図30】分割領域内ジグザグ移動予定ルート作成処理(phase10)の説明図。
図31】移動体の一例を示す斜視図。
図32】巡回パターンを例示した図。
図33】各エリア毎の重心Gを例示した図。
図34】各エリアの重心同士を繋ぐ重心間経路を例示した図。
図35】巡回ループ経路候補を例示した図。
図36】巡回パターン決定の手順を示す図。
図37】巡回ルート作成装置による処理の流れを示したフローチャート。
図38】重心間経路作成手法の他例を示す図。
図39】重心間経路作成手法の他例を示す図。
【発明を実施するための形態】
【0007】
前提技術
まず、本発明に係る巡回ルート作成装置の実施形態を説明する前に、本発明に係る巡回ルート作成装置の前提装置(前提技術)となる移動予定ルート作成装置を、段落0007乃至段落0053、図1乃至図31に基づいて説明する。
本発明に係る巡回ルート作成装置の前提装置となる移動予定ルート作成装置は、移動体を移動対象領域内の障害物を避けて移動させるための移動体の移動予定ルート、即ち、当該移動対象領域内を移動させる移動体の障害物回避移動予定ルートを作成する装置である。
当該移動体の移動予定ルート作成装置は、移動対象領域作成手段と、障害物領域作成手段と、移動可能領域分割手段と、分割領域内移動予定ルート作成手段と、分割領域間移動予定ルート作成手段とを備える。
即ち、移動対象領域作成手段は、移動対象領域の位置を示す移動対象領域のXY座標情報(即ち、移動対象領域の平面座標情報)に基づいて移動対象領域を区画する移動対象領域境界線で囲まれた移動対象領域を作成する手段である。
障害物領域作成手段は、移動対象領域内の障害物の位置を示すXY座標情報に基づいて移動対象領域内に存在する障害物を区画する障害物領域境界線で囲まれた障害物領域を作成する手段である。
移動可能領域分割手段は、移動対象領域の位置を示すXY座標情報及び移動対象領域内の障害物の位置を示すXY座標情報を利用して障害物を避けた移動可能領域内を複数の分割領域に分割する手段である。
分割領域内移動予定ルート作成手段は、複数の各分割領域内での移動体の移動予定ルートを作成する手段である。
分割領域間移動予定ルート作成手段は、分割領域間での移動体の移動予定ルートを作成する手段である。
【0008】
そして、移動可能領域分割手段は、分割領域作成手段と、分割領域認識手段とを備える。
当該分割領域作成手段は、障害物同士を繋ぐ第1の境界線、障害物と移動対象領域境界線とを繋ぐ第2の境界線、障害物と第1の境界線又は第2の境界線とを繋ぐ第3の境界線を作成して、移動対象領域内をこれら境界線で区画することにより、これら境界線、障害物領域境界線、移動対象領域境界線で形成された分割領域境界線で囲まれた分割領域を作成する手段である。
分割領域認識手段は、複数の各分割領域及び各障害物領域にそれぞれ識別情報を付与して複数の各分割領域を認識する手段である。
また、分割領域内移動予定ルート作成手段は、横直線作成手段と、縦直線作成手段と、第1の交点認識手段と、第2の交点認識手段と、第1のルート作成手段と、第2のルート作成手段と、第1の移動効率算出手段と、ルート選択手段とを備える。
横直線作成手段は、移動対象領域をY軸に沿って等間隔に区切るX軸と平行な複数の横直線を作成する手段である。
縦直線作成手段は、移動対象領域をX軸に沿って等間隔に区切るY軸と平行な複数の縦直線を作成する手段である。
第1の交点認識手段は、分割領域境界線と横直線との交点を認識する手段である。
第2の交点認識手段は、分割領域境界線と縦直線との交点を認識する手段である。
第1のルート作成手段は、各分割領域境界線上の交点を横直線で繋いで形成されたY軸に沿って進む分割領域毎のジグザグな第1のルートを作成する手段である。
第2のルート作成手段は、各分割領域境界線上の交点を縦直線で繋いで形成されたX軸に沿って進む分割領域毎のジグザグな第2のルートを作成する手段である。
第1の移動効率算出手段は、分割領域毎の第1のルートに沿って移動する場合の移動効率を算出する手段である。
第2の移動効率算出手段は、分割領域毎の第2のルートに沿って移動する場合の移動効率を算出する手段である。
ルート選択手段は、同じ分割領域内を第1のルートに沿って移動する場合の移動効率と第2のルートに沿って移動する場合の移動効率とを比較して、第1のルート及び第2のルートのうち移動効率の良いルートを当該分割領域内での移動予定ルートとして選択する手段である。
そして、上記分割領域作成手段は、より具体的には、移動対象領域内に存在する複数の障害物を、X座標情報の近いもの同士、Y座標情報の近いもの同士に、グループ分けする障害物グループ分け手段と、各障害物の複数の角にそれぞれ識別情報を付与して障害物の角を認識する障害物角認識手段と、X座標情報の近いもの同士としてグループ分けされた一方の障害物の角と他方の障害物の角とを接続する第1の接続線、及び、Y座標情報の近いもの同士としてグループ分けされた一方の障害物の角と他方の障害物の角とを接続する第1の接続線を作成する第1の接続線作成手段と、障害物のうち第1の接続線が接続されていない角と移動対象領域境界線とを接続する第2の接続線を作成する第2の接続線作成手段と、障害物のうち第1の接続線及び第2の接続線が接続されていない角と既に作成した第1の接続線又は第2の接続線とを接続する第3の接続線を作成する第3の接続線作成手段とを備えた構成とした。
また、上記分割領域間移動予定ルート作成手段は、より具体的には、一方の分割領域の分割領域内移動予定ルートの終点と他方の分割領域の分割領域内移動予定ルートの始点とを直線で繋いだ分割領域間移動予定ルートを作成する分割領域間直線移動予定ルート作成手段と、分割領域間直線移動予定ルート作成手段で作成した分割領域間直線移動予定ルートと移動対象領域境界線又は障害物領域境界線とが接触した場合に、移動対象領域境界線又は障害物領域境界線と接触しない分割領域間移動予定ルートである分割領域間迂回移動予定ルートを作成する分割領域間迂回移動予定ルート作成手段とを備えた構成とした。
【0009】
本発明による巡回ルート作成装置の前提装置となる移動予定ルート作成装置を構成する、移動対象領域作成手段、障害物領域作成手段、障害物グループ分け手段、障害物角認識手段、第1の接続線作成手段、第2の接続線作成手段、第3の接続線作成手段、分割領域認識手段、横直線作成手段、縦直線作成手段、第1の交点認識手段、第2の交点認識手段、第1のルート作成手段、第2のルート作成手段、第1の移動効率算出手段、第2の移動効率算出手段、ルート選択手段、分割領域間移動予定ルート作成手段は、制御手段により実現され、当該各手段を実行する制御手段は、各手段が実行する処理の手順を示す処理プログラムと、当該処理プログラムによる情報処理を実現するコンピュータ等のハードウエア資源とにより構成される。
換言すれば、前提装置の移動予定ルート作成処理プログラムは、コンピュータを、上述した移動対象領域作成手段、障害物領域作成手段、障害物グループ分け手段、障害物角認識手段、第1の接続線作成手段、第2の接続線作成手段、第3の接続線作成手段、分割領域認識手段、横直線作成手段、縦直線作成手段、第1の交点認識手段、第2の交点認識手段、第1のルート作成手段、第2のルート作成手段、第1の移動効率算出手段、第2の移動効率算出手段、ルート選択手段、分割領域間移動予定ルート作成手段として機能させるプログラムである。
【0010】
上述した移動対象領域作成手段及び障害物領域作成手段により、図1図13に示した移動対象領域及び障害物領域の作成処理(phase1)が実行される。
障害物グループ分け手段により、図2図14に示した障害物グループ分け処理(phase2)が実行される。
障害物角認識手段により、図3図15に示した障害物角認識処理(phase3)が実行される。
第1の接続線作成手段により、図4図16に示した障害物間境界線作成処理(phase4)が実行される。
第2の接続線作成手段及び第3の接続線作成手段により、図5図6図17に示した分割領域区分け処理(phase5)が実行される。
分割領域認識手段により、図7図8図18図26乃至図28に示した分割領域認識処理(phase6)が実行される。
また、横直線作成手段により、図9図19に示した等間隔直線経路作成処理(phase7)が実行される。
第1の交点認識手段により、図10図19に示した交点座標抽出処理(phase8)、及び、図11図20図29に示したエリア毎交点座標抽出処理(phase9)が実行される。
第1のルート作成手段により、図12図21図29図30に示した分割領域内ジグザグ移動予定ルート作成処理(phase10)が実行される。
第1の移動効率算出手段により、分割領域毎の第1のルートに沿って移動する場合の図22に示した移動コスト計算処理(phase11)が実行される。
縦直線作成手段により、等間隔直線経路作成処理(phase7)を置き換えた処理である図23のステップS230に示したphase12が実行される。
第2の交点認識手段により、交点座標抽出処理(phase8)を置き換えた処理である図23のステップS240に示したphase13、及び、エリア毎交点座標抽出処理(phase9)と同じ処理である図23のステップS250に示したphase14が実行される。
第2のルート作成手段により、分割領域内ジグザグ移動予定ルート作成処理(phase10)を置き換えた処理である図23のステップS260に示したphase15が実行される。
第2の移動効率算出手段により、図23のステップS270に示したphase16が実行される。つまり、分割領域毎の第2のルートに沿って移動する場合において、図22に示した移動コスト計算処理(phase11)と同じ移動コスト計算処理が実行される。
ルート選択手段により、図24に示したルート選択処理(phase17)が実行される。
分割領域間移動予定ルート作成手段により、図12図25に示した分割領域間移動予定ルート作成処理が実行される。
尚、分割領域間移動予定ルート作成手段の分割領域間直線移動予定ルート作成手段によって、分割領域間直線移動予定ルート作成処理(図25の経路探索アルゴリズム部分以外の部分)が実行されるとともに、分割領域間移動予定ルート作成手段の分割領域間迂回移動予定ルート作成手段によって、分割領域間迂回移動予定ルート作成処理としての図25の経路探索アルゴリズム部分の処理が実行される。
【0011】
移動体は、移動予定ルート作成装置により作成された移動予定ルートに基づいて、移動対象領域内の移動対象面である例えば床面を移動することができるように構成された移動体1である(図31参照)。
制御手段は、例えば図31に示すように、移動体1に搭載されている。
従って、この場合、移動体1の移動予定ルートを作成するとともに、当該作成された移動予定ルート(移動予定情報(XY座標情報))に基づいて移動体1の移動制御を行う制御手段50を備えた移動体1となる。
尚、移動体1の移動予定ルートを作成する制御手段は、移動体1に搭載されたコンピュータではなく、移動体1とは別個のパーソナルコンピュータ等のコンピュータと、当該コンピュータにより処理される上述した処理プログラムとにより構成されてもよい。この場合、当該コンピュータに、後述するように、移動体1を移動させる移動対象領域のXY座標情報と当該移動対象領域内の障害物のXY座標情報とを入力して、移動対象領域及び障害物を認識させて、移動予定ルートを作成させる。そして、当該作成された移動予定ルートを移動体1の制御手段に入力することによって、当該移動体1の制御手段が、当該移動予定ルートに基づいて移動体1を移動対象領域内の移動可能領域内で移動させることができるようになる。
【0012】
移動予定ルート作成処理においては、まず、例えば屋内における移動対象領域Aとしての例えば床面領域と壁との境界位置における壁の角のXY座標情報、及び、当該移動対象領域Aとしての床面領域内に存在する障害物Bとしての柱(以下、柱Bという)の角のXY座標情報を、コンピュータに予め入力しておく。これにより、コンピュータは、入力されたXY座標情報を、当該コンピュータが管理する表示画面D上でのXY座標情報に変換して、記憶手段に記録する。
即ち、予めコンピュータに、移動対象領域Aの位置を示す移動対象領域のXY座標情報として、床面領域と壁との境界位置における壁の角のXY座標情報と、柱(障害物)Bの位置を示すXY座標情報として、柱Bの角のXY座標情報とを入力しておく。
尚、コンピュータは、当該移動対象領域A及び柱(障害物)Bを認識して例えば表示画面Dに表示し(図1参照)、最終的には、作成した移動予定ルートを認識して例えば表示画面Dに表示する(図12参照)。
【0013】
尚、上述したXY座標情報は、移動対象領域Aでの実際のXY座標情報、及び、表示画面Dを制御するコンピュータが当該実際のXY座標情報に基づいて表示画面D上で管理するXY座標情報である。
コンピュータが表示画面D上で管理する、X軸方向の最小間隔、及び、Y軸方向の最小間隔は、コンピュータが搭載するXY座標間隔設定プログラムに基づいて、実際の移動対象領域A上における一定の間隔に設定できるようになっている。
例えば、コンピュータが表示画面D上で管理するX軸方向の最小間隔及びY軸方向の最小間隔が、実際の10cmに対応するように設定される。この場合、例えば実際の移動対象領域Aの外に設定された基準点OからX軸方向の正方向に10cm離れた位置a、当該位置aからY軸方向の正方向に10cm離れた位置bは、コンピュータによって、表示画面D上における基準点Oを基準としたXY座標値、a=(1,0),b=(1,1)として記録されて管理されることになる。
また、実際の移動対象領域Aを区画する壁の角のXY座標情報、実際の各柱B,B…の各角のXY座標情報は、例えば、実際の移動対象領域Aの外に設定された基準点Oから、壁の各角の位置までの距離、当該基準点Oから各柱B,B…の各角の位置までの距離を、測距計などの測定手段を用いて測定した測定値を入力したり、あるいは、設計図等から入力することにより、記憶手段に記録される。
例えば、図1に示すように、移動対象領域Aの一番左下の角から左斜め下の位置を基準点Oに決めた場合を例にして説明する。
この場合、測定した当該基準点Oから各角までの距離をコンピュータに入力することで、当該コンピュータが、XY座標間隔設定プログラムに基づいて、例えば距離10cmを表示画面DのXY座標軸上の一目盛に換算したXY座標値としてファイルに記録する。
例えば、ある角が、当該基準点OからX軸方向の正方向に100cm、基準点OからY軸方向の正方向に100cm離れた位置にあれば、当該角のXY座標値は(10,10)として記録される。尚、例えば、ある角が、当該基準点OからX軸方向の正方向に94cm、当該原点からY軸方向の正方向に96cm離れた位置にあれば、例えば四捨五入されて、当該角のXY座標値は(9,10)として記録される。
【0014】
最初に、移動対象領域及び障害物領域の作成処理(phase1)では、コンピュータが、移動対象領域作成処理プログラム及び障害物領域作成処理プログラムの手順に従って、例えば図1に示すように、当該移動対象領域A及び移動対象領域A内の複数の柱B,B…を表示画面Dに表示する。
即ち、コンピュータが、例えば図1に示すように、表示画面Dに、移動対象領域A内と移動対象領域A外との境界線、即ち、移動対象領域境界線Cを作成することによって移動対象領域Aを表示するとともに、当該移動対象領域A内に存在する複数の柱B,B…を表示する。この場合、移動対象領域境界線Cは、例えば移動対象領域Aとしての床面領域と壁との境界位置における壁の角のXY座標情報を繋いで作成され、柱Bの境界線(障害物領域境界線)は、例えば柱Bの角のXY座標情報を繋いで作成される。
具体的には、コンピュータは、移動対象領域作成処理プログラム及び障害物領域作成処理プログラムの手順に従って、図13のフローチャートに示すような移動対象領域及び障害物領域の作成処理(phase1)を行う。
まず、移動対象領域Aの位置を示すXY座標情報、例えば移動対象領域Aを区切る壁(境界)の角のXY平面座標を記録したファイルからデータ(壁(境界)の角のXY座標値)を取り出すことにより、表示画面Dに移動対象領域境界線Cを作成する(ステップS1)。即ち、表示画面D上に、移動対象領域Aを区切る壁(境界)のすべての角を表示するとともに、各角を直線で繋ぐことにより、表示画面Dに移動対象領域境界線Cを表示する。
次に、柱本数管理変数初期化、即ち、柱本数管理変数nを1に設定する(ステップS2)。尚、柱本数管理変数とは、調べる対象となる柱を指定するための変数であり、記憶手段に逐次記録されて管理される。
そして、障害物として例えば柱Bの位置を示すXY座標情報、n番目の柱Bの角のXY座標を記録したファイルが存在するか否かを判定する(ステップS3)。
即ち、移動対象領域及び障害物領域の作成処理では、コンピュータが、移動対象領域Aの角、例えば移動対象領域Aとなる床面領域と壁との境界位置における壁の角のXY座標を記録した壁角座標記録ファイル、床面領域内に存在する各柱B,B…の角のXY座標を記録した柱角座標記録ファイル、柱本数管理変数レジスタのような記憶手段を使用して処理を行う。
次に、ステップS3において、n番目の柱の角のXY座標を記録したファイルが存在すると判定された場合、n番目の柱の角のXY座標を記録したファイルからデータを取り出して表示画面Dにn番目の柱を表示した(ステップS4)後、柱本数管理変数nをn+1に更新して(ステップS5)、ステップS3に戻る。
ステップS3において、n番目の柱の角のXY座標を記録したファイルが存在しないと判定された場合、移動対象領域A内のすべての柱Bが表示画面Dに表示されたことを認識して、移動対象領域及び障害物領域の作成処理(phase1)を終了し、障害物グループ分け処理(phase2)に進む。
以上の移動対象領域及び障害物領域の作成処理(phase1)により、例えば図1に示すように、表示画面Dに、移動対象領域Aの境界となる移動対象領域境界線Cと、移動対象領域A内に存在するn個の柱(柱内領域(障害物領域))B,B…が表示される(例えば図1に示すように、B(n)=B(1),B(2),B(3),B(4)の柱が表示される)。
つまり、コンピュータに認識された移動対象領域A及び柱(柱内領域(障害物領域))B,B…が作成されることになる。
【0015】
障害物グループ分け処理(phase2)では、コンピュータが、障害物グループ分け処理プログラムの手順に従って、図2に示すように、柱Bの中心座標を基準として、X座標値が近い柱B同士、Y座標値が近い柱B同士をそれぞれグルーピングする。グルーピングは番号を割り振ることで行う。従って、各柱B,B…には、X軸方向の番号及びY軸方向の番号がそれぞれ割り付けられることになる。即ち、図2の最も左側の柱B(1)の番号は1-1となり、図2の最も右側の柱B(5)の番号は4-3となる。例えば、図2の最も右側の柱B(5)の番号4-3の意味は、当該柱B(5)は、X軸方向の4番目のグループに属し、かつ、Y軸方向の3番目のグループに属しているということを意味する。
【0016】
即ち、コンピュータは、障害物グループ分け処理プログラムの手順に従って、図14のフローチャートに示すような障害物グループ分け処理(phase2)を行う。
障害物グループ分け処理(phase2)では、まず、変数初期化処理を行う。即ち、柱本数管理変数nを0、比較対象管理変数pを0、グループ番号変数gxを1に設定する。(ステップS11)。
即ち、障害物グループ分け処理では、コンピュータが、柱本数管理変数レジスタ、比較対象管理変数レジスタ、グループ番号変数レジスタ、柱グループ番号記録ファイルのような記憶手段を使用して処理を行う。
次に、柱本数管理変数nの値と柱の本数が一致しているか否かを判定する(ステップS12)。
ステップS12において、nの値と柱の本数が一致していないと判定された場合、グループ化未処理の柱が存在していると認識して、柱本数管理変数nをn+1に設定してグループ化対象の柱を更新し(ステップS13)、n番(例えば図2の柱Bのカッコ内の番号)目の柱に既にX軸方向グループ番号gxが付与されているか否かを判定する(ステップS14)。例えば、n=1(1番目)の柱(例えば図2の柱B(1))に既にX軸方向グループ番号gxが付与されているか否かを判定する。尚、図2の場合、柱の本数が「5」であり、nの値の最大値は「5」である。
ステップS14において、n番目の柱にX軸方向グループ番号gxが付与されていないと判定された場合、n番目の柱にX軸方向グループ番号gxを付与する(ステップS15)。グループ番号は、各柱のグループ番号を記録する柱グループ番号記録ファイルに記録される。
その後、n+pの値と柱の本数が一致しているか否かを判定する(ステップS16)。
尚、比較対象管理変数pとは、比較対象となる柱のことであり、例えば、図2の柱B(1)の比較対象となる柱は、図2の柱B(2),柱B(3),柱B(4),柱B(5)であり、この場合、例えば、図2の柱B(2)のpの値は1,柱B(3)のpの値は2,柱B(4)のpの値は3,柱B(5)のpの値は4となる。従って、図2の場合、1番目の柱B(1)では比較対象となる柱の数pの最大値は4であり、2番目の柱B(2)では比較対象となる柱の数pの最大値は3であり、3番目の柱B(3)では比較対象となる柱の数pの最大値は2であり、4番目の柱B(4)では比較対象となる柱の数pの最大値は1となるので、n+pの値の最大値と柱の本数とが一致する。即ち、図2の場合、柱の本数が「5」であり、n+pの値の最大値も「5」である。
ステップS16において、n+pの値と柱の本数が一致していないと判定された場合、比較対象となる柱が残っていると認識して、pをp+1に設定して比較対象となる柱を更新し(ステップS17)、n番目の柱の中心座標(以下、「柱の重心」という)とn+p番目の柱の重心のX座標の差exを計算した(ステップS18)後、差exの絶対値が基準値E以下か否かを判定する(ステップS19)。
ステップS19において、差exの絶対値が基準値E以下であると判定された場合、n+p番目の柱に既にX軸方向グループ番号gxが付与されているか否かを判定する(ステップS20)。
ステップS20において、n+p番目の柱に既にX軸方向グループ番号gxが付与されていると判定された場合、ステップS16に戻って、n番目の柱と次の比較対象であるn+p番目の柱との比較処理(ステップS17~ステップS19)を行う。
ステップS20において、n+p番目の柱にX軸方向グループ番号gxが付与されていないと判定された場合、n+p番目の柱にX軸方向グループ番号gxを付与した(ステップS21)後、ステップS16に戻って、n番目の柱と次の比較対象であるn+p番目の柱との比較処理(ステップS17~ステップS19)を行う。
即ち、n番目の柱の重心とn+p番目の柱の重心のX座標の差exの絶対値が基準値E以下であれば、n+p番目の柱には、n番目の柱に付与されているX軸方向グループ番号gxと同じ番号が付与される。
また、ステップS19において、差exの絶対値が基準値E以下でない場合(ステップS19でNo)は、ステップS16に戻って、n番目の柱と次の比較対象であるn+p番目の柱との比較処理(ステップS17~ステップS19)を行う。
また、ステップS16において、n+pの値と柱の本数が一致していると判定された場合、gxをgx+1に設定するとともに、pを0に設定して(ステップS22)、ステップS12に戻る。つまり、比較対象であるn+p番目の柱に対するX軸方向グループ番号を更新してn番目の柱との比較処理に進む。
尚、ステップS19において、重心のX座標の差exの絶対値が基準値E以下でないと判定されたn+p番目の柱には、X軸方向グループ番号の付与処理が終了するまでには、ステップS22を経て、X軸方向グループ番号が付与されることになる。
ステップS14において、n番目の柱に既にX軸方向グループ番号gxが付与されていると判定された場合、ステップS12に戻る。
また、ステップS12において、nの値と柱の本数が一致していると判定された場合、すべての柱にX軸方向グループ番号gxが付与されたことを認識し、Y軸方向グループ番号gyの付与について、X軸方向グループ番号gxの付与と同様の処理を行う(ステップS23)ことによって、障害物グループ分け処理(phase2)を終了し、次の処理である、障害物角認識処理(phase3)に進む。
【0017】
障害物角認識処理(phase3)では、コンピュータが、障害物角認識処理プログラムの手順に従って、例えば図3に示すように、断面正方形状の柱B1、断面長方形状の柱B2、断面円形状の柱B3、断面L字形状の柱B4等の柱Bの角に番号を付けて柱Bの角を認識する。
尚、例えば図3に示すように、各柱B,B…の各角部に1~4までの番号を1つずつ付けていくが、断面円形状の柱B3(丸柱)のように角部が無い場合は、丸柱の外周円においてX軸に平行で丸柱の中心座標を通過する直線とY軸に平行で丸柱の中心座標を通過する直線とに交差する4点を角と見做して当該4つの角にそれぞれ番号を付与する。
【0018】
即ち、コンピュータは、障害物角認識処理プログラムの手順に従って、図15のフローチャートに示すような障害物角認識処理(phase3)を行う。
障害物角認識処理(phase3)においては、まず、柱本数管理変数初期化処理を行う。即ち、柱本数管理変数nを0に設定する(ステップS31)。
次に、nの値と柱の本数が一致しているか否かを判定する(ステップS32)。
ステップS32において、nの値と柱の本数が一致していないと判定された場合、番号付け未処理の柱が存在していることを認識して、nをn+1に更新した(ステップS33)後、n番目の柱の角のうち、最もY軸座標の値が大きい角が複数あるか否かを判定する(ステップS34)。
ステップS34において、n番目の柱の角のうち、最もY軸座標の値が大きい角が1つであると判定された場合(ステップS34でNo)、n番目の柱について、最もY軸座標の値が大きい角に角番号1を付与し(ステップS35、例えば図3の柱B1、柱B3参照)、その後、n番目の柱の角のうち、最もX軸座標の値が大きい角が複数あるか否かを判定する(ステップS37)。尚、角番号は、各柱の角番号を記録する柱角番号記録ファイルに記録される。
即ち、障害物角認識処理では、コンピュータが、柱本数管理変数レジスタ、柱角座標記録ファイル、柱角番号記録ファイルのような記憶手段を使用して処理を行う。
ステップS34において、n番目の柱の角のうち、最もY軸座標の値が大きい角が複数あると判定された場合(ステップS34でYes)、n番目の柱について、最もY軸座標の値が大きい角同士を比較し、最もX軸座標の値が小さい角に角番号1を付与する(ステップS36、例えば図3の柱B2、柱B4参照)。つまり、最もY軸座標の値が大きい複数の角のうちX軸座標の値が小さい方の角に角番号1を付与し、その後、ステップS37に進む。
ステップS37において、n番目の柱の角のうち、最もX軸座標の値が大きい角が1つであると判定された場合(ステップS37でNo)、n番目の柱について、最もX軸座標の値が大きい角に角番号2を付与し(ステップS38、例えば図3の柱B1、柱B3参照)、その後、n番目の柱の角のうち、最もY軸座標の値が小さい角が複数あるか否かを判定する(ステップS40)。
ステップS37において、n番目の柱の角のうち、最もX軸座標の値が大きい角が複数あると判定された場合(ステップS37でYes)、n番目の柱について、最もX軸座標の値が大きい角同士を比較し、最もY軸座標の値が大きい角に角番号2を付与する(ステップS39、例えば図3の柱B2、柱B4参照)。つまり、最もX軸座標の値が大きい複数の角のうちY軸座標の値が大きい方の角に角番号2を付与し、その後、ステップS40に進む。
ステップS40において、n番目の柱の角のうち、最もY軸座標の値が小さい角が1つであると判定された場合(ステップS40でNo)、n番目の柱について、最もY軸座標の値が小さい角に角番号3を付与し(ステップS41、例えば図3の柱B1、柱B3参照)、その後、n番目の柱の角のうち、最もX軸座標の値が小さい角が複数あるか否かを判定する(ステップS43)。
ステップS40において、n番目の柱の角のうち、最もY軸座標の値が小さい角が複数あると判定された場合(ステップS39でYes)、n番目の柱について、最もY軸座標の値が小さい角同士を比較し、最もX軸座標の値が大きい角に角番号3を付与する(ステップS42、例えば図3の柱B2、柱B4参照)。つまり、最もY軸座標の値が小さい複数の角のうちX軸座標の値が大きい方の角に角番号3を付与し、その後、ステップS43に進む。
ステップS43において、n番目の柱の角のうち、最もX軸座標の値が小さい角が1つであると判定された場合(ステップS43でNo)、n番目の柱について、最もX軸座標の値が小さい角に角番号4を付与し(ステップS44、例えば図3の柱B1、柱B3参照)、その後、ステップS32に戻る。
ステップS43において、n番目の柱の角のうち、最もX軸座標の値が小さい角が複数あると判定された場合(ステップS43でYes)、n番目の柱について、最もX軸座標の値が小さい角同士を比較し、最もY軸座標の値が小さい角に角番号4を付与する(ステップS45、例えば図3の柱B2、柱B4参照)。つまり、最もX軸座標の値が小さい複数の角のうちY軸座標の値が小さい方の角に角番号4を付与し、その後、ステップS32に戻る。
そして、ステップS32において、nの値と柱の本数が一致していると判定された場合、すべての柱B,B…の各角に番号が付与されたことを認識して、障害物角認識処理(phase3)を終了し、障害物間境界線作成処理(phase4)に進む。
【0019】
第1の接続線作成手段による障害物間境界線作成処理(phase4)では、コンピュータが、障害物間境界線作成処理プログラムの手順に従って、図4に示すように、柱B,B間の境界線、即ち、柱間境界線(障害物間境界線(第1の境界線))を作成する。例えば、同じグループ番号を持ち、かつ最も近い柱B,B同士の間に柱間境界線を作る。即ち、図4においては、X軸方向の同じ3グループである番号3-1の柱B(4)と番号3-3の柱B(3)とが柱間境界線Mで繋がれ、Y軸方向の同じ1グループである番号1-1の柱B(1)と番号3-1の柱B(4)とが柱間境界線Mで繋がれ、Y軸方向の同じ3グループである番号3-3の柱B(3)と番号4-3の柱B(5)とが柱間境界線Mで繋がれた例を示している。つまり、各柱毎に、境界線を繋ぐのに最適な柱を選択して、柱同士を境界線で繋ぐようにしている。
尚、図4においては、柱間境界線Mとして、X軸方向に沿ったクランク状の境界線、あるいは、Y軸方向に沿ったクランク状の境界線を作成した例を示したが、柱間境界線Mは、X軸方向及びY軸方向と交差する斜め直線状の境界線や、なめらかな曲線状の境界線を作成してもよい。
【0020】
即ち、コンピュータは、障害物間境界線作成処理プログラムの手順に従って、図16のフローチャートに示すような障害物間境界線作成処理(phase4)を行う。
まず、変数初期化処理を行う。即ち、柱本数管理変数nを0、比較対象管理変数pを0に設定する(ステップS51)。
次に、nの値と柱の本数が一致しているか否かを判定する(ステップS52)。
ステップS52において、nの値と柱の本数が一致していなければ(ステップS52でNo)、接続先候補登録変数sの初期化、即ち、sをNull(無)に設定(ステップS53)する。さらに、nをn+1に設定した(ステップS54)後、n番目の柱について、正のX軸方向に既に境界線が接続されているか否かを判定する(ステップS55)。
即ち、障害物間境界線作成処理では、コンピュータが、上述した柱本数管理変数レジスタ、比較対象管理変数レジスタ、接続先候補登録変数レジスタ、柱角座標記録ファイル、柱角番号記録ファイルのような記憶手段を使用して処理を行う。
尚、接続先候補登録変数sとは、接続候補を一時的に記録する変数のことである。
ステップS55において、n番目の柱について、正のX軸方向に境界線が接続されていなければ(ステップS55でNo)、n+pの値と柱の本数が一致しているか否かを判定する(ステップS56)。
ステップS56において、n+pの値と柱の本数が一致していなければ(ステップS56でNo)、比較対象となる柱が残っているということなので、pをp+1に更新した(ステップS57)後、n番目の柱のX軸方向グループ番号とn+p番目の柱のX軸方向グループ番号とが同一か否かを判定する(ステップS58)。
ステップS58において、n番目の柱のX軸方向グループ番号とn+p番目の柱のX軸方向グループ番号とが同一であると判定された場合、n+p番目の柱の重心(中心座標)はn番目の柱から見て正のX軸方向にあるか否かを判定する(ステップS59)。
ステップS58において、n番目の柱のX軸方向グループ番号とn+p番目の柱のX軸方向グループ番号とが同一ではないと判定された場合、ステップS56に戻る。
ステップS59において、n+p番目の柱の重心がn番目の柱から見て正のX軸方向にないと判定された場合、ステップS56に戻る。
ステップS59において、n+p番目の柱の重心がn番目の柱から見て正のX軸方向にあると判定された場合、s=Nullであるか否かを判定する(ステップS60)。
ステップS60において、s=Nullであれば、n番目の柱とn+p番目の柱の重心間の距離L*を計算した(ステップS61)後、n+pを接続先候補変数sに代入し(ステップS62)、ステップS56に戻る。
ステップS60において、s=Nullでなければ、n番目の柱とn+p番目の柱の重心間の距離Lを計算した(ステップS63)後、L*>Lであるか否かを判定する(ステップS64)。
ステップS64において、L*>Lであれば、L*にLを代入し(ステップS65)、n+pを接続先候補変数sに代入した(ステップS66)後に、ステップS56に戻る。
ステップS64において、L*>Lでなければ、ステップS56に戻る。
ステップS56において、n+pの値と柱の本数が一致していると判定された場合、s=Nullであるか否かを判定し(ステップS67)、s=Nullであれば、ステップS52に戻り、s=Nullでなければ、n番目の柱の2番角とs番目の柱の4番角の間に境界線M(例えば図4において柱B(1)の2番角から右方向に延長して柱B(4)の4番角に繋がる境界線M)を引き、その後、ステップS52に戻る。
そして、ステップS52において、nの値と柱の本数が一致していると判定された場合、正のX軸方向境界線への接続処理が終了し、その後、負のX軸方向境界線への接続処理、正のY軸方向境界線への接続処理、負のY軸方向境界線への接続処理のそれぞれについて、正のX軸方向境界線への接続処理と同様の処理で行う(ただし、X軸方向の境界線の接続は角番号2と角番号4とで行い、Y軸方向の境界線の接続は角番号1と角番号3とで行う)(ステップS69)。
そして、当該負のX軸方向境界線への接続処理、正のY軸方向境界線への接続処理、負のY軸方向境界線への接続処理が終了したら、次の分割領域区分け処理(phase5)に進む。
【0021】
以下、障害物間境界線作成処理(phase4)について、さらに具体的に説明する。
図4の柱を例にして説明すると、ステップS58で、n=1番目の柱としての柱B(1)とn+p=2番目の柱としての柱B(2)は、X軸方向グループ番号が同じではないので、ステップS57を経て、ステップS58で、柱B(1)とn+p=3番目の柱としての柱B(3)とが比較される。柱B(1)とB(3)もX軸方向グループ番号が同じではないので、さらに、ステップS57を経て、ステップS58で、柱B(1)とn+p=4番目の柱としての柱B(4)とが比較される。柱B(1)とB(4)は、X軸方向グループ番号が同じであり、ステップS59、ステップS60を経て、ステップS60において、柱B(1)とB(4)の重心間の距離L*が計算された後、柱B(4)の番号、n+p=「4」が、接続先候補変数sとして記憶される。その後、ステップS57を経て、ステップS58で、柱B(1)とn+p=5番目の柱としての柱B(5)とが比較される。柱B(1)とB(5)もX軸方向グループ番号が同じではないので、ステップS57に戻って、ステップS67を経て、ステップS68において、柱B(1)の2番角とB(4)の4番角とが境界線で繋がれる。
尚、図4の例では、X軸方向グループ番号が同じ柱が3つ以上存在しないが、例えば、図4において、柱B(1)及びB(4)とX軸方向グループ番号が同じ図外の柱B(6)が存在した場合には、ステップS63において、柱B(1)と当該柱B(6)の重心間の距離Lが計算される。その後、ステップS64において、柱B(1)と柱B(6)の重心間の距離Lが柱B(1)とB(4)の重心間の距離L*よりも小さければ、柱B(6)の番号、n+p=「6」が、接続先候補変数sとして記憶され、ステップS67を経て、ステップS68において、柱B(1)の2番角と柱B(6)の4番角とが境界線で繋がれることになる。
【0022】
第2の接続線作成手段及び第3の接続線作成手段による分割領域区分け処理(phase5)では、コンピュータが、分割領域区分け処理プログラムの手順に従って、図5に示すように、柱Bと移動対象領域境界線Cとを繋ぐ境界線N(第2の境界線)、又は、柱Bと柱間境界線M(第1の境界線)又は境界線N(第2の境界線)とを繋ぐ境界線Q(第3の境界線)を作成して、移動対象領域Aを境界線C,M,N,Qで区画された複数の移動可能領域となる複数の分割領域E,E…(図6参照)に区分けする。
つまり、障害物間境界線作成処理(phase4)において、柱間境界線Mで繋がれなかった柱Bの角部と移動対象領域境界線Cとを繋ぐ境界線N(第2の境界線)、又は、柱間境界線M(第1の境界線)で繋がれなかった柱Bの角部と柱間境界線M(第1の境界線)又は境界線N(第2の境界線)とを繋ぐ境界線Q(第3の境界線)を作成する。
これにより、移動対象領域Aが、境界線C,M,N,Qで区画された複数の移動可能領域となる複数の分割領域E,E…(図6参照)に区分けされることになる。
【0023】
即ち、コンピュータは、分割領域区分け処理プログラムの手順に従って、図17のフローチャートに示すような分割領域区分け処理(phase5)を行う。
分割領域区分け処理(phase5)では、まず、変数初期化処理を行う。即ち、柱本数管理変数nを0に設定する(ステップS71)。
次に、nの値と柱の本数が一致しているか否かを判定する(ステップS72)。
ステップS72において、nの値と柱の本数が一致していなければ、比較対象となる柱が残っているということなので、柱角番号管理変数初期化、即ち、柱角番号管理変数cを1に設定し(ステップS73)、さらに、柱本数管理変数nをn+1に更新し(ステップS74)、n番目の柱の角番号cの角について、既に境界線が接続されているか否かを判定する(ステップS75)。
即ち、分割領域区分け処理では、コンピュータが、柱本数管理変数レジスタ、柱角番号管理変数レジスタ、柱角座標記録ファイル、柱角番号記録ファイルのような記憶手段を使用して処理を行う。
ステップS75において、n番目の柱の角番号cの角に境界線が接続されていなければ、c=1であるか否かを判定する(ステップS76)。
ステップS76において、c=1でなければ、c=2であるか否かを判定する(ステップS77)。
ステップS77において、c=2でなければ、c=3であるか否かを判定する(ステップS78)。
ステップS78において、c=3でなければ、角番号4から壁、柱、境界線のいずれかに接触するまで負のX軸方向に境界線Nを伸ばす(ステップS79、例えば図5の柱B(1)、柱B(2)、柱B(3)参照)。その後、柱角番号管理変数cをc+1に更新し(ステップS80)、c=5であるか否かを判定する(ステップS81)。
ステップS76において、c=1であれば、角番号1から壁、柱、境界線のいずれかに接触するまで正のY軸方向に境界線Nを伸ばす(ステップS82、例えば図5の柱B(1)、柱B(2)、柱B(3)参照)。その後、ステップS80に進む。
また、ステップS77において、c=2であれば、角番号2から壁、柱、境界線のいずれかに接触するまで正のX軸方向に境界線Nを伸ばす(ステップS83、例えば図5の柱B(2)、柱B(4)参照)。その後、ステップS80に進む。
また、ステップS78において、c=3であれば、角番号3から壁、柱、境界線のいずれかに接触するまで負のY軸方向に境界線Nを伸ばす(ステップS84、例えば図5の柱B(1)、柱B(2)、柱B(4)参照)。その後、ステップS80に進む。
即ち、各角番号から境界線を伸ばす処理が終了した(ステップS82,ステップS83,ステップS84,ステップS79)後は、柱角番号管理変数cをc+1に更新し(ステップS80)、c=5であるか否かを判定する(ステップS81)。
ステップS81において、c=5であれば、ステップS72に戻り、次の比較対象となる柱への処理に移行する。
ステップS81において、c=5でなければ、ステップS75に戻り、ステップS75~ステップS84までの処理を行う。
そして、ステップS72において、nの値と柱の本数が一致していれば、分割領域区分け処理(phase5)を終了し、分割領域認識処理(phase6)に進む。
【0024】
分割領域認識処理(phase6)では、コンピュータが、分割領域認識処理プログラムの手順に従って、移動対象領域Aにおいて線で区切られた複数の各エリア(壁外領域(移動対象領域A外領域)、柱B内領域(障害物領域)、分割領域のすべて)にそれぞれ識別情報としての番号を所定の順番で付与することにより、複数の各分割領域E,E…を認識する。
当該分割領域認識処理(phase6)は、例えば、図8図23図25に示すような、塗りつぶし処理にてエリアを抽出していき、抽出したエリア毎に個別のエリア番号を付けた後、各分割領域E,E…を認識する処理である。
【0025】
コンピュータは、分割領域認識処理プログラムの手順に従って、図18のフローチャートに示すような分割領域認識処理(phase6)を行う。
分割領域認識処理では、コンピュータが、塗りつぶし判定兼エリア番号記録配列ファイル、X軸方向探索管理変数レジスタ、Y軸方向探索管理変数レジスタ、エリア番号管理変数レジスタ、X軸方向塗りつぶし管理変数レジスタ、Y軸方向塗りつぶし管理変数レジスタ、塗りつぶし管理ファイル、塗りつぶし管理変数一時保留レジスタのような記憶手段を使用し、これら記憶手段に記憶される値を参照しながら処理を行う。
まず、変数初期化を行う。即ち、塗りつぶし判定兼エリア番号記録配列Stack[Xmax][Ymax]を[0,0,0,・・・・]に、X軸方向探索管理変数iを0に、Y軸方向探索管理変数jを0に、エリア番号管理変数aを1に設定する(ステップS91)。つまり、X軸方向探索管理変数レジスタを0に、Y軸方向探索管理変数レジスタを0にして、塗りつぶし判定兼エリア番号記録配列ファイルにおける各XY座標位置の値を全部0に維持するとともに、エリア番号管理変数レジスタを1に設定して、移動対象領域Aの外側の領域を「1」に塗りつぶす処理から行う。
初めに、i>Xmaxであるか否かを判定し(ステップS92)、i>Xmaxでなければ、Stack[i][j]=0であるか否かを判定する(ステップS93)。
ステップS93において、Stack[i][j]=0であれば、Stack[i][j]を-1にする(ステップS94)ことにより、例えば、図8(b),(f)、図23(b),(d)、図24(b),(d),(f)、図25(b)の状態となる。
その後、塗りつぶし管理変数初期化、即ち、X軸方向塗りつぶし管理変数fiをiに、Y軸方向塗りつぶし管理変数fjをjに設定する(ステップS95)。
塗りつぶし管理とは、エリア毎に塗りつぶし処理を行う場合において、既にエリア番号が付けられたエリアの塗りつぶし処理を行わないために、各XY座標位置の値の管理を、塗りつぶし判定兼エリア番号記録配列ファイルとは別の塗りつぶし管理ファイルで行うようにしている。即ち、塗りつぶし判定兼エリア番号記録配列ファイルでの各XY座標位置の値であるStack[i][j]を、塗りつぶし管理ファイルでの各XY座標位置の値であるStack[fi][fj]に置き換えて管理する(例えば、図23(d)参照)ことにより、既にエリア番号が付けられたエリアの各XY座標位置の値の探索を行わないようにして、塗りつぶし処理の処理スピードを速くできるようにしている。
次に、fi>Xmaxであるか否かを判定する(ステップS97)。
ステップS97において、fi>Xmaxでなければ、Stack[fi][fj]=-1であるか否かを判定する(ステップS98)。
ステップS98において、Stack[fi][fj]=-1であれば(ステップS98でYES)、ステップS98Aに進んで、塗りつぶし管理変数一時保留レジスタにおいて、miをfiに設定し、mjをfjに設定してから、Stack[fi][fj]をaに設定する(ステップS99)。
そして、座標(fi+1,fj)が存在し、かつ座標(fi,fj)との間に壁、柱、境界線が通っておらず、かつStack[fi+1][fj]が0であるか否かを判定する(ステップS100)。つまり、a(最初は「1」)に設定された座標[fi][fj]と当該座標[fi][fj]のX軸方向+側の座標(fi+1,fj)との間に壁、柱、境界線が無く、かつ、座標(fi+1,fj)が0であれば(ステップS100でYesの場合)、Stack[fi+1][fj]を-1に設定する(ステップS104)。その後、ステップS101に進む。
ステップS100でNoの場合、即ち、(fi,fj)と(fi+1,fj)との間に壁、柱、境界線が通っていた場合、ステップS101に進んで、座標(fi-1,fj)が存在し、かつ座標(fi,fj)との間に壁、柱、境界線が通っておらず、かつStack[fi-1][fj]が0であるか否かを判定する。つまり、a(最初は「1」)に設定された座標[fi][fj]と当該座標[fi][fj]のX軸方向-側の座標(fi-1,fj)との間に壁、柱、境界線が無く、かつ、座標(fi-1,fj)が0であれば(ステップS101でYesの場合)、Stack[fi-1][fj]を-1に設定する(ステップS105)。その後、ステップS105Aに進んで、miをfi-1に設定(ただし、fi=0のときを除く)した後、ステップS102に進む。
ステップS101でNoの場合、即ち、(fi,fj)と(fi-1,fj)との間に壁、柱、境界線が通っていた場合、ステップS102に進んで、座標(fi,fj+1)が存在し、かつ座標(fi,fj)との間に壁、柱、境界線が通っておらず、かつStack[fi][fj+1]が0であるか否かを判定する。つまり、a(最初は「1」)に設定された座標[fi][fj]と当該座標[fi][fj]のY軸方向+側の座標(fi,fj+1)との間に壁、柱、境界線が無く、かつ、座標(fi,fj+1)が0であれば(ステップS102でYesの場合)、Stack[fi][fj+1]を-1に設定する(ステップS106)。その後、ステップS103に進む。
ステップS102でNoの場合、即ち、(fi,fj)と(fi,fj+1)との間に壁、柱、境界線が通っていた場合、ステップS103に進んで、座標(fi,fj-1)が存在し、かつ座標(fi,fj)との間に壁、柱、境界線が通っておらず、かつStack[fi][fj-1]が0であるか否かを判定する。つまり、a(最初は「1」)に設定された座標[fi][fj]と当該座標[fi][fj]のY軸方向-側の座標(fi,fj-1)との間に壁、柱、境界線が無く、かつ、座標(fi,fj-1)が0であれば(ステップS103でYesの場合)、Stack[fi][fj-1]を-1に設定する(ステップS107)。その後、ステップS107Aに進んで、mjをfj-1に設定(ただし、fi=0のときを除く)した後、ステップS103Aに進んで、fiをmiに、fjをmjに設定する。
ステップS103でNoの場合、即ち、(fi,fj)と(fi,fj-1)との間に壁、柱、境界線が通っていた場合も、ステップS103Aに進んで、fiをmiに、fjをmjに設定する。
ステップS103Aの処理後、ステップS97に戻る。
また、ステップS98において、Stack[fi][fj]=-1でなければ、fiをfi+1に設定して(ステップS108)、ステップS97に戻る。
ステップS97において、fi>Xmaxであれば、ステップS109に進んで、fiを0に、fjをfj+1に設定した後、fj>Ymaxであるか否かを判定する(ステップS110)。
ステップS110において、fj>Ymaxでなければ、ステップS98に進み、fj>Ymaxであれば、ステップS111に進む。
以上により、例えば、図8(c)~(f)、図23(c),(d)の状態となる。
ステップS111においては、a=1であるか否かを判定し、a=1でなければ、ステップS112に進んで、a番目の区画の4方向が柱(座標が解っている)と接しており、かつ接触している柱の番号nが全て同じであるか否かを判定する。
ステップS111においては、a=1であれば、a=1番目の区画を壁外であると判定し(ステップS115)、その後、ステップS112に進む。
ステップS112でNoであれば、aをa+1に設定し(ステップS113)、iをi+1に設定して(ステップS114)、ステップS92に戻る。
ステップS112でYesの場合、a番目の区画は、柱内であると判定し(ステップS116)、その後、ステップS113に進む。
即ち、領域の境界線の四方(図6の上下左右)が柱Bの境界線と一致し、柱Bの境界線が同じ番号の柱Bの境界線であるという柱内領域条件を満たすとコンピュータが判定した場合は、当該領域が柱内領域であると判定する。つまり、a=1ではなく、かつ、柱内領域条件を満たさない領域が、分割領域であると認識される。
換言すれば、ステップS110において、fj>Ymaxであると判定された場合、1つのエリアの塗りつぶし処理が終了し、ステップS111,112でNoであれば、その塗りつぶした領域が分割領域であり、当該分割領域に番号aが付与されて認識されることになる。
また、ステップS93において、Stack[i][j]=0でなければ、iをi+1に設定して(ステップS114)、ステップS92に戻る。
また、ステップS92において、i>Xmaxであれば、iを0、jをj+1に設定し(ステップS117)、その後、j>Ymaxであるか否かを判定し(ステップS118)、j>Ymaxでなければ、ステップS93に戻り、j>Ymaxであれば、分割領域認識処理(phase6)を終了する。
以上により、移動対象領域Aの分割処理(phase1~phase6)が終了し、続いて、移動ルートの作成処理(phase7~phase11)に進む。
【0026】
分割領域認識処理(phase6)を、上述したステップSと図8図26図28とを参照しながら説明する。
尚、図8では、2つのエリアを塗りつぶし処理にて抽出し、抽出したエリア毎に個別の番号を付けた例を示している。
図26図28では、複数のエリアを塗りつぶし処理にて抽出し、抽出したエリア毎に個別の番号を昇順に付けた例を示している。
まず、ステップS91では、図8(a),図26(a)に示すように、塗りつぶし判定兼エリア番号記録配列ファイル、即ち、移動対象領域A全体と移動対象領域Aの周辺を含む領域全体の各XY座標位置を示すXY座標マトリクスStack[Xmax][Ymax]の値を全部0にする。
そして、ステップS92,93,94,95を経て、図8(b),図26(b)に示す状態となる。
そして、ステップS97~S107Aを経て、図8(c)~(f),図26(c)に示す処理が行われる。
尚、ステップS105A、ステップS107Aは、図8(e)(f)に示すような凹部がある場合に座標位置を戻して検索する処理である。つまり、この場合、X方向における-方向やY方向における-方向に座標を戻して処理を行うために、当該戻した座標位置を、塗りつぶし管理変数一時保留レジスタに変数mi,mjとして一時的に保留して処理を行うようにしている。
そして、任意のエリアの座標すべてに番号aが付けられた後(ステップS110でYESの場合)、そのエリアが、壁外領域(移動対象領域A外領域)か、柱内領域が、分割領域かの判定が行われ(ステップS111,112)、その後、次のエリアの番号が更新されて(ステップS113)、次のエリアの塗りつぶし処理に移行していく(図8(f),(g)、図26(d)、図27(a)~(f)、図28(a)~(d)参照)。
ステップS113でエリア毎に昇順で番号が付けられる。尚、図26図28においては、エリアaに番号1が付与され、エリアbに番号2が付与され、エリアcに番号3が付与され、エリアdに番号4が付与され、エリアeに番号5が付与され、エリアfに番号6が付与された例を示している。つまり、各エリア毎に昇順で番号が付けられた例を示している。
【0027】
次に、移動ルートの作成処理(phase7~phase11)においては、まず、等間隔直線経路作成処理(phase7)が行われる。
等間隔直線経路作成処理(phase7)では、コンピュータが、等間隔直線経路作成処理プログラムの手順に従って、移動対象領域A内に、Y軸方向に沿った間隔が等間隔の複数の横直線S,S…を設定して、後述する分割領域内ジグザグ移動予定ルートの元となる等間隔直線経路を作成する。図9では、移動対象領域A内に、Y軸方向に沿った間隔が等間隔の複数の横直線S,S…を設定した例を示している。
即ち、等間隔直線経路作成処理(phase7)を実行する手段は、移動対象領域AをY軸に沿って等間隔に区切るX軸と平行な複数の横直線S,S…を作成する横直線作成手段として機能する。
【0028】
次に、交点座標抽出処理(phase8)では、コンピュータが、交点座標抽出処理プログラムの手順に従って、図10に示すように、各エリア(壁外領域(移動対象領域A外領域)、柱内領域、分割領域のすべて)を区画する境界線C,M,N,Q,柱Bの境界線(障害物領域境界線)と複数の直線S,S…との交点座標G,G…を抽出する。
【0029】
即ち、コンピュータは、等間隔直線経路作成処理プログラム及び交点座標抽出処理プログラムの手順に従って、図19のフローチャートに示すような等間隔直線経路作成処理(phase7)及び交点座標抽出処理(phase8)を行う。
まず、境界線本数管理変数初期化、即ち、境界線本数管理変数mを0に設定する(ステップS121)。
次に、探索範囲の最も小さなy座標の値(外壁の最も下端のy座標)を特定し、その値をyに設定する(ステップS122)。
そして、X軸に平行で切片がyである直線Sを定義する(ステップS123)。
次に、m番目の境界線(壁、柱の外周を含む)は直線Sと交点を持つか否かを判定する(ステップS124)。
ステップS124において、m番目の境界線が直線Sとの交点を持つと判定された場合、その交点の座標を交点座標記録ファイルに記録し(ステップS125)、その後、mをm+1とし(ステップS126)、mの値が境界線の総本数と一致したか否かを判定する(ステップS127)。
ステップS124において、m番目の境界線が直線Sとの交点を持たないと判定された場合、ステップS126に進む。
ステップS127において、mの値が境界線の総本数と一致しなければ、一致するまで、ステップS124~ステップS126の処理を繰り返す。
ステップS127において、mの値が境界線の総本数と一致すれば、yをy+レーン間距離に設定し(ステップS128)、yの値が探索範囲の上限を超えたか否かを判定する(ステップS129)。
ステップS129において、yの値が探索範囲の上限を超えていなければ、超えるまで、ステップS123~ステップS128の処理を繰り返す、
ステップS129において、yの値が探索範囲の上限を超えた場合には、交点抽出処理を終了して、エリア毎交点座標抽出処理(phase9)に移行する。
即ち、等間隔直線経路作成処理及び交点座標抽出処理では、コンピュータが、境界線本数管理変数レジスタ、各直線Sのy座標記録ファイル、交点座標記録ファイルのような記憶手段を使用しながら処理を行う。
【0030】
尚、ステップS122における、y←探索範囲…の「探索範囲」とは、Cで囲まれた移動対象領域Aのことである。
また、ステップS123での「直線Sを定義」とは、例えば図9に示した直線Sのことである。従って、図19の移動予定ルート候補線作成処理では、図9の下から上に向けて順番に直線Sを1本ずつ引いていって、直線Sを引く毎に、当該直線Sと各境界線との交点座標を記録するという処理を繰り返している。尚、移動対象領域境界線Cの下端位置及び上端位置の水平線上にも直線Sが設定される。
また、ステップS128での「レーン間距離」とは、上下方向(Y軸方向)に隣り合う直線S,S間の距離のことであり、この「レーン間距離」の値(長さ)は予め適当な長さ(例えば、10cm)に決めておく。
従って、分割領域内ジグザグ移動予定ルートの元となる各直線S,S…とすべての境界線との交点の座標がすべて交点座標記録ファイルに記録される。
この場合、例えば、交点座標記録ファイルには、XY座標が小さい順に交点に番号が付けられて、各交点のX座標及びY座標が記録される(図12の交点XY座標を指した○数字参照)。
【0031】
エリア毎交点座標抽出処理(phase9)では、コンピュータが、エリア毎交点座標抽出処理プログラムの手順に従って、各エリア毎に、各エリアを区画する境界線C,M,N,Q,柱Bの境界線(障害物領域境界線)上の交点座標G,G…を抽出する。
図11では、エリア番号6が付与された分割領域Eを区画する境界線C,N上の交点座標G,G…を抽出した例を示している。
【0032】
コンピュータは、エリア毎交点座標抽出処理プログラムの手順に従って、図20のフローチャートに示すようなエリア毎交点座標抽出処理(phase9)を行う。
まず、変数初期化を行う。即ち、交点数管理変数kを0、エリア番号管理変数aを1に設定する(ステップS131)。
次に、kの値が、交点座標抽出処理において交点座標記録ファイルに記録された交点数を超えたか否かを判定する(ステップS132)。
ステップS132において、kの値が、交点座標記録ファイルに記録された交点数を超えていないと判定された場合には、エリアaの値がエリア数を超えたか否かを判定する(ステップS133)。
ステップS133において、aの値がエリア数を超えていない場合には、k番目の交点がエリアaに隣接しているか否かを判定する(ステップS134)。
ステップS134において、k番目の交点がエリアaに隣接していると判定された場合には、a番目のエリア用の交点座標記録ファイルにすでにk番目の交点と全く同じ座標が代入されているか否かを判定する(ステップS135)。
ステップS134において、k番目の交点がエリアaに隣接していないと判定された場合には、kをk+1に設定し(ステップS137)、その後、ステップS132に戻る。
ステップS135において、a番目のエリア用の交点座標記録ファイルにすでにk番目の交点と全く同じ座標が記録されていると判定された場合、ステップS137に進む。
ステップS135において、a番目のエリア用の交点座標記録ファイルにk番目の交点と全く同じ座標が記録されていないと判定された場合、a番目のエリア用の交点座標記録ファイルにk番目の交点座標を記録し(ステップS136)、その後、ステップS137に進む。
ステップS132において、kの値が交点数を超えたと判定された場合には、kを0に、aをa+1に設定し(ステップS138)し、その後、ステップS133に進む。
ステップS133において、aの値がエリア数を超えたと判定された場合には、エリア毎交点座標抽出処理(phase9)を終了して、分割領域内ジグザグ移動予定ルート作成処理(phase10)に移行する。
即ち、エリア毎交点座標抽出処理では、コンピュータが、交点数管理変数レジスタ、エリア番号管理変数レジスタ、交点座標記録ファイル、エリア毎の交点座標記録ファイルのような記憶手段を使用しながら処理を行う。
【0033】
エリア毎交点座標抽出処理(phase9)では、例えばXY座標値の小さい交点から順番に1つずつどのエリアに隣接しているのかを判定していくことにより、エリア毎に交点の番号と交点のXY座標とがエリア毎の交点座標記録ファイルに記録される。つまり、エリア毎に交点座標が抽出されて、エリア毎の交点座標記録ファイルに記録される(図29(a)参照)。
まず初めに、ステップS131において、交点数管理変数kが0、エリア番号管理変数aが1に設定されるので、エリアa=1、即ち、移動対象領域Aを囲む境界線Cと交わる交点を所定の順番(例えば、XY座標が最小である交点をk=1とし、X座標、Y座標の小さい交点から順番にkの値を+1していく。)で記録していく。そして、各エリア毎に、交点座標抽出処理において交点座標記録ファイルに記録された交点の座標が各エリアに隣接しているか否かを調べていく(ステップS132~S134)ことにより、各エリア毎の交点座標記録ファイルを作成する(ステップS136)。
つまり、エリア毎交点座標抽出処理(phase9)では、各エリアと各交点との対応付け(ステップS136)を行っているものである。
即ち、各エリアを区画する線上と直線Sとの交点座標を、エリア毎の交点座標として抽出して記録している。
以上のように、交点座標抽出処理(phase8)、及び、エリア毎交点座標抽出処理(phase9)を実行する手段は、各エリアを区画する境界線C,M,N,Q,柱Bの境界線(移動対象領域境界線、境界線、障害物領域境界線)と各横直線S,S…との交点を認識する第1の交点認識手段として機能する。即ち、分割領域境界線と横直線との交点を認識する第1の交点認識手段として機能する。
【0034】
分割領域内ジグザグ移動予定ルート作成処理(phase10)では、コンピュータが、分割領域内ジグザグ移動予定ルート作成処理プログラムの手順に従って、図12に示すように、各分割領域E,E…毎に、X軸に沿って直線S上で隣り合う座標G,G同士を繋げるとともに、Y軸に沿って隣り合う直線S,S間の交点座標G,G同士を繋げることによって、各分割領域E,E…内でのジグザグな分割領域内ジグザグ移動予定ルートHを作成する。
ジグザグな分割領域内ジグザグ移動予定ルートHとは、X軸方向の一方方向に進んだ後X軸方向の一方方向とは反対の他方方向に折り返す経路が繰り返されるルートのことである。尚、等間隔直線経路作成処理において、X軸方向に沿った間隔が等間隔の複数の縦直線が設定される場合には、Y軸方向の一方方向に進んだ後Y軸方向の一方方向とは反対の他方方向に折り返す経路が繰り返される分割領域内ジグザグ移動予定ルートが作成されることになる。
また、エリア毎の交点座標記録ファイルに記録されている交点は、交点の番号が飛び飛びの状態で記録される。例えば、図12において、XY座標値の小さい交点から順番に交点の番号が付けられて1つずつどのエリアに隣接しているのかを判定していく場合、交点の番号は、図12の○内の番号のように付与される。例えば、図12の番号2が付与されたエリア(分割領域)の交点座標記録ファイルには、図26(a)に示すように、交点の番号が1,2,6,7,11,12,16,17,18の交点が順番に記録される。しかしながら、例えば図26(a)の記録順に交点を辿った場合、のこぎり状のルートとなってしまう。そこで、分割領域内ジグザグ移動予定ルート作成処理(phase10)では、図26(b)に示すように、エリア毎のソート後交点座標記録ファイルに、各交点のXY座標がジグザグ経路を形成するルートの始点から終点の位置まで順番に並ぶように、各交点の記録順を並び変えるようにしている。例えば、図29(b)に示すように、図12の番号2が付与されたエリア(分割領域)のソート後交点座標記録ファイルには、各交点は、交点の番号16,18,12,11,6,7,2,1の順番で記録される。従って、分割領域においては、エリア(分割領域)毎のソート後交点座標記録ファイルに記録された順番で交点座標を辿る分割領域内ジグザグ移動予定ルートが作成されることになる。
【0035】
コンピュータは、分割領域内ジグザグ移動予定ルート作成処理プログラムの手順に従って、図21のフローチャートに示すような分割領域内ジグザグ移動予定ルート作成処理(phase10)を行う。
まず、変数初期化を行う。即ち、エリア番号管理変数aを1に、ソート管理変数iを1に、ソート基準変更変数jを1に設定する(ステップS141)。
尚、ソート管理変数iとは、ソートによって順番を入れ換えた数値を配列のどこにいれるかを管理する変数であり、ソート基準変更変数jとは、ルートがのこぎり状ではなくジグザグな矩形波状のルートになるようにするために並べ替えの基準を変更する際の管理変数である。
分割領域内ジグザグ移動予定ルート作成処理では、コンピュータが、エリア番号管理変数レジスタ、ソート管理変数レジスタ、ソート基準変更変数レジスタ、エリア毎の交点座標記録ファイル、エリア毎のソート後交点座標記録ファイルのような記憶手段を使用しながら処理を行う。
次に、aの値がエリア数の上限を超えている否かを判定する(ステップS142)。
ステップS142において、aの値がエリア数の上限を超えていないと判定された場合、a番目のエリアは有効なエリアか、即ち、壁外、あるいは、柱内部ではないか否かを判定する(ステップS143)。
ステップS143において、a番目のエリアが有効なエリアであると判定された場合、このa番目のエリア用の交点座標記録ファイルの中でY座標が最も大きい交点座標を検索する(ステップS144)。
そして、ステップS145において、Y座標が最も大きい交点座標が複数あったか否かを判定する。
ステップS145において、Y座標が最も大きい交点座標が1個だけあったと判定された場合、ステップS144で検索された座標データを、a番目のエリア用のソート後交点座標記録ファイルのi番目に移し変える(ステップS146)。つまり、iが「1」であれば、Y座標が最も大きい交点座標を有した交点の番号とXY座標値とを、a番目のエリア用のソート後交点座標記録ファイルの一番最初の記録領域に記録する。即ち、Y座標が最も大きい交点の記録順を1番目にする。
尚、ステップS146では、a番目のエリア用の交点座標記録ファイルに記録されていたi番目のデータをa番目のエリア用のソート後交点座標記録ファイルのi番目に移し変えるので、このi番目のデータはa番目のエリア用の交点座標記録ファイルから削除される。
従って、次回のステップS144では、i番目のデータが除かれたa番目のエリア用の交点座標記録ファイルのデータの中で、Y座標が最も大きい座標を検索する。
尚、エリア用の交点座標記録ファイルからデータを削除せずに、エリア用の交点座標記録ファイルをコピーした処理用記録ファイルを用いて処理を行い、当該処理用記録ファイルのデータを削除するようにしてもよい。
また、ステップS145において、各分割領域での移動開始位置候補となる交点座標を抽出し、その後のステップにおいて、ソート後交点座標記録ファイルの1番目に記録される交点座標を、各分割領域での移動開始位置となる交点座標に決めて、各分割領域において、移動開始位置となる交点座標から移動終了位置となる交点座標まで直線Sを辿って交点座標位置で進路を変えるジグザグ経路を作成するものである。
ステップS145において、Y座標が最も大きい座標が2個あったと判定された場合、ソート基準変更変数jの値が奇数か否かを判定し(ステップS150)、jの値が奇数であると判定された場合には、Y座標が最も大きくかつX座標が最も小さい座標を検索し(ステップS151)、その後、jをj+1に設定する(ステップS152)。そして、検索された座標データを、a番目のエリア用のソート後交点座標記録ファイルのi番目に移し変える処理(ステップS146)に進む。
また、ステップS150において、jの値が偶数であると判定された場合には、Y座標が最も大きくかつX座標が最も大きい座標を検索し(ステップS153)、その後、jをj+1に設定した(ステップS152)後、ステップS146に進む。
また、ステップS145において、Y座標が最も大きい座標が3個以上あったと判定された場合は、Y座標が最も大きくかつX座標が最も小さい座標と、Y座標が最も大きくかつX座標が最も小さい座標以外の座標(中間の交点座標)を削除する(ステップS154)。その後、ステップS145において、Y座標が最も大きい座標が2個あったと判定された場合と同じ処理が行われて、ステップS146に進む。
ここで、例えば、図12のエリア2では、最初、ステップS144において、交点の番号16、番号17、番号18のY座標が最も大きい座標として検索され、ステップS145,S154を経て、交点番号17が削除される。そして、j=1なので、ステップS151に進んで、番号16の交点のXY座標が検索される。その後、jがj+1に設定され(ステップS152)、エリア2(分割領域)のソート後交点座標記録ファイルの一番最初の記録領域に、交点の番号16とそのXY座標とが記録される(図29(b)参照)。その後、ステップS144において、番号11の交点座標と番号12の交点座標とがY座標が最も大きい座標であるとして検索され、ステップS145において、Y座標が最も大きい座標が2個あったと判定された場合、この際には、j=2なので、ステップS153に進んで、Y座標が最も大きくかつX座標が最も大きい座標を有した番号12の交点座標が検索されて、エリア2(分割領域)のソート後交点座標記録ファイルの3番目の記録領域に、交点の番号12と当該交点のXY座標とが記録される(図29(b)参照)。
即ち、Y座標が最も大きい座標が複数あった場合に、X座標が最も小さい座標を検索するか、X座標が最も大きい座標を検索するかという基準を、jの値に基づいて、切り替えることにより、ルートがのこぎり状ではなくジグザグな矩形波状のルートとなるように工夫している。
ステップS146の後、エリア用のソート後交点座標記録ファイルのi-1番目の座標からi番目の座標を直線で結んだとき、外壁や柱と接触するか否かを判定する(ステップS147)。接触しなければ、iをi+1に更新して(ステップS147E)、a番目のエリア用の交点座標記録ファイルに座標データが残っているか否かを判定する(ステップS148)。
ステップS147において、直線が外壁や柱と接触すると判定された場合、エリア用のソート後交点座標記録ファイルのi番目の座標データをi+1番目に移動させた後、i番目の領域にi+1番目のX座標とi+1番目のY座標を書き込む(ステップS147A)。その後、iをi+2に更新して(ステップS147B)、ステップS148に進む。
即ち、ステップS147A,S147Bでは、図30(a)に示すように、ルートが外壁や柱と接触する場合、図30(b)に示すように、ルートが外壁や柱と接触しないように修正している。
次に、ステップS148において、a番目のエリア用の交点座標記録ファイルに座標データが残っていると判定された場合は、ステップS144に戻る。
ステップS148において、a番目のエリア用の交点座標記録ファイルに座標データが残っていないと判定された場合は、ステップS147Cに進んで、a番目のエリア用のソート後交点座標記録ファイルの1番目と2番目のY座標の値が同一か否かを判定する。
ステップS147Cにおいて、1番目と2番目のY座標の値が同一ではないと判定された場合、1番目に記録された座標情報を消去し、i番目の座標情報をi-1番目に移し替える(ステップS147D)。
即ち、図12に示すように、例えば3番エリアや11番エリアにおいては、ソート後交点座標記録ファイルの1番目のY座標と2番目のY座標の値は同一ではないため、2番目の交点座標位置(交点3s,11s)を始点とし、ソート後交点座標記録ファイルの3番目以降の交点座標の記録順を1つずつ繰り上げていく。
つまり、ステップS147C,S147Dでは、各分割領域での移動開始位置となる交点座標と次の交点座標とを繋ぐルート(経路)がX軸と平行なルートとなるように、各分割領域での移動開始位置となる交点座標を決める処理を行っている。
ステップS147Cにおいて、1番目と2番目のY座標の値が同一であると判定された場合、ステップS149に進んで、aをa+1に、iを1に、jを1に設定し、S142に戻る。即ち、現在処理中のエリアaのソート処理を終了し、次のエリアのソート処理に移行する。
ステップS143において、a番目のエリアが有効なエリアではないと判定された場合、ステップS149に進んで、aをa+1に、iを1に、jを1に設定し、ステップS142に戻る。即ち、次のエリアのソート処理に移行する。
ステップS142において、aの値がエリア数の上限を超えていると判定された場合には、分割領域内ジグザグ移動予定ルート作成処理(phase10)を終了し、移動コスト計算処理(phase11)に移行する。
即ち、a番目のエリア用のソート後交点座標記録ファイルに記録された交点座標を記録順に辿るルートが分割領域内ジグザグ移動予定ルートとして作成されることになる(図26(b)、図12のエリア2において点線で示した分割領域内ジグザグ移動予定ルートH参照)。
つまり、分割領域内ジグザグ移動予定ルート作成処理(phase10)においては、例えば図12に示すように、エリア2内における移動開始予定地点(座標)2sと移動終了予定地点(座標)2eとを繋ぐジグザグな分割領域内ジグザグ移動予定ルートHが作成される。また、各エリア(2~19までの柱領域7,10,12,16,18を除いたエリア)の移動開始予定地点(座標)Ns及び移動終了予定地点(座標)Ne(Nは2~19までの7,10,12,16,18を除いた整数)が決まり、これら移動開始予定地点(座標)Nsと移動終了予定地点(座標)Neとを繋ぐジグザグな分割領域内ジグザグ移動予定ルート(分割領域毎の第1のルート)Hが作成される。
以上のように、分割領域内ジグザグ移動予定ルート作成処理(phase10)を実行する手段は、各分割領域境界線上の交点を横直線で繋いで形成されたY軸に沿って進む分割領域毎のジグザグな第1のルートを作成する第1のルート作成手段として機能する。
【0036】
移動コスト計算処理(phase11)では、コンピュータが、移動コスト計算処理プログラムの手順に従って、phase10で作成された各分割領域内ジグザグ移動予定ルート(各第1のルート)H,H…の移動コストを計算する。つまり、各分割領域内ジグザグ移動予定ルートH,H…毎に、直進距離の合計、旋回角度の合計、旋回回数を考慮して移動コストを計算する。
【0037】
コンピュータは、移動コスト計算処理プログラムの手順に従って、図22のフローチャートに示すような、移動コスト計算処理(phase11)を行う。
まず、エリア(分割領域)番号、及び、総コスト配列ファイルの初期化を行う。即ち、エリア番号管理変数aを1に設定するとともに、エリア毎の総コスト配列ファイルの総コスト配列CtHorizontal[amax]を[0,0,0,・・・・]に設定する(ステップS201)。また、ソート後交点座標管理変数iを1に設定する(ステップS202)。
移動コスト計算処理では、コンピュータが、エリア番号管理変数レジスタ、エリア毎のソート後交点座標記録ファイル、エリア毎の総コスト配列ファイルのような記憶手段を使用しながら処理を行う。
尚、総コスト配列ファイルとは、各エリアの走行ルートのコストを記憶しておくファイルのことであり、総コスト配列CtHorizontalとは、エリア毎の第1のルートの総コスト(移動効率評価値)のことである。また、ソート後交点座標管理変数とは、エリアの走行ルートの何番目の曲がり角(交点)かを管理する変数である。
次に、a番目のエリア用のソート後交点座標記録ファイルのi番目の座標からi+1番目の座標間の距離Lを計算する(ステップS203)。
そして、距離Lと直進移動コスト変換定数Ksを積算して直線移動時のコストCsを計算し(ステップS204)、直線移動時のコストCsを総コスト配列CtHorizontal[a]に足し加えた(ステップS205)後、iをi+1に設定し(ステップS206)、a番目のエリア用のソート後交点座標記録ファイルにi番目の座標データがあるか否かを判定する(ステップS207)
ステップS207でYesの場合、総コスト配列CtHorizontal[a]に停止に要するコストCstop(定数)を加える(ステップS208)。つまり、旋回行動に移るには一旦停止する必要がある。停止は、旋回の角度によらず一定であると考えられる。よって、ここで定数コストを加える。具体的な値は移動体1の停止性能(加速性能)に依存する。
次に、a番目のエリア用のソート後座標記録領域のi-1番目の座標からi番目の座標を向くベクトルとi番目の座標からi+1番目の座標を向くベクトルとの成す角θを計算する(ステップS209)。
そして、θと旋回移動コスト変換定数Kcを積算して直線移動時のコストCcを計算して(ステップS210)、直線移動時のコストCcを総コスト配列CtHorizontal[a]に足し加え(ステップS211)、その後、ステップS203に戻る。
ステップS207でNoの場合、aをa+1に設定し(ステップS212)、その後、
aの値がエリア数の上限amaxを超えたか否かを判定する(ステップS213)。
ステップS213でNoの場合、ステップS202に戻り、ステップS213でYesの場合、移動コスト計算処理(phase11)を終了して、別ルート作成処理(phase12~phase16)に移行する。
尚、直進移動コスト変換定数Ks、旋回移動コスト変換定数Kcは、XY座標情報で得られる長さ、角度の単位を無次元量化するための定数である。
また、移動体1の左右のタイヤ間の距離や、かけられる遠心力の上限等により、移動体1の個体差によっても、直進性能、旋回性能が違ってくる。
従って、XY座標情報で得られる単位の違い、移動体1の個体差(性能の違い)等に応じて、直進移動コスト変換定数Ks、旋回移動コスト変換定数Kcを設定することになる。
【0038】
コンピュータは、別ルート作成処理プログラムの手順に従って、図23のフローチャートに示すような、別ルート作成処理(phase12~phase16)を行う。
最初に、等間隔直線経路作成処理(phase7)の処理で定義されるX軸と平行な直線S,S…をX軸に垂直なもの、即ち、Y軸と平行な直線に置き換えて実行して、これをphase12とする(ステップS230)。
即ち、phase12は、縦直線作成手段によって、移動対象領域をX軸に沿って等間隔に区切るY軸と平行な複数の縦直線を作成する処理である。
次に、交点座標抽出処理(phase8)の処理で、直線の移動方向をX軸に垂直にしたうえで実行して、これをphase13とする(ステップS240)とする。
さらに、エリア毎交点座標抽出処理(phase9)をそのまま実行して、これをphase14とする(ステップS250)とする。
即ち、phase13,14は、第2の交点認識手段によって、分割領域境界線と縦直線との交点を認識する処理である。
次に、分割領域内ジグザグ移動予定ルート作成処理(phase10)の処理で条件分岐の処理部分のX軸座標をY軸座標に、Y軸座標をX軸座標に置き換えて実行する。このとき、phase10の場合とは別の記録ファイルに結果を保存する。以上をphase15とする(ステップS260)。
即ち、phase15は、第2のルート作成手段によって、各分割領域境界線上の交点を縦直線で繋いで形成されたX軸に沿って進む分割領域毎のジグザグな第2のルートを作成する処理である。
最後に、移動コスト計算処理(phase11)での総コスト配列CtHorizontalを総コスト配列CtVerticalに置き換えて処理を実行する。このとき、phase11の場合とは別の記録ファイルに結果を保存する。以上をphase16とする(ステップS270)。
即ち、phase16は、第2の移動効率算出手段によって、分割領域毎の第2のルートに沿って移動する場合の移動効率を算出する処理である。
そして、ルート選択処理(phase17)に移行する。
【0039】
ルート選択処理(phase17)では、コンピュータが、ルート選択処理プログラムの手順に従って、同じ分割領域内を第1のルートに沿って移動する場合の移動効率と第2のルートに沿って移動する場合の移動効率とを比較して、第1のルート及び第2のルートのうち移動効率の良いルートを当該分割領域内での移動予定ルートとして選択する。
【0040】
コンピュータは、ルート選択処理プログラムの手順に従って、図24のフローチャートに示すような、ルート選択処理(phase17)を行う。
まず、変数初期化を行う。即ち、エリア番号管理変数aを1に設定する(ステップS281)。
ルート選択処理では、コンピュータが、エリア番号管理変数レジスタ、エリア毎の第1のルートの総コストCtHorizontal[a]を記録するファイル、エリア毎の第2のルートの総コストCtVertical[a]を記録するファイルのような記憶手段を使用しながら処理を行う。
次に、エリアaにおける、水平方向移動時(第1のルート選択時)の総コストCtHorizontal[a]と垂直方向移動時(第2のルート選択時)の総コストCtVertical[a]とを比較する(ステップS282)。
ステップS282において、総コストCtHorizontal[a]の方がコストが低いと判定された場合は、エリア番号aではphase10で作成したエリア用ソート後交点座標記録ファイルをアクティブにする(ステップS283)。つまり、当該エリア(分割領域)aにおいては、第1のルートを当該エリア(分割領域)内aでの移動予定ルートとして選択する。
ステップS282において、総コストCtVertical[a]の方がコストが低い、又は、総コストCtVertical[a]のコストと総コストCtHorizontal[a]のコストとが同値と判定された場合は、エリア番号aではphase15で作成したエリア用ソート後交点座標記録ファイルをアクティブにする(ステップS286)。つまり、当該エリア(分割領域)aにおいては、第2のルートを当該エリア(分割領域)内aでの移動予定ルートとして選択する。
ステップS283の後、又は、ステップS286の後、aをa+1に設定し(ステップS284)、aの値がエリア数の上限amaxを超えたか否かを判定する(ステップS284)。
ステップS284でNoであれば、ステップS282に戻り、ステップS284でYesであれば、ルート選択処理を終了して、分割領域間移動予定ルート作成処理(phase18)に移行する。
【0041】
分割領域間移動予定ルート作成処理(phase18)では、コンピュータが、分割領域内ジグザグ移動予定ルート作成処理プログラムの手順に従って、図12に示すように、n番目の分割領域Eからn+1番目の分割領域Eへの移動予定ルートである分割領域間移動予定ルートを生成する。まず、分割領域間直線移動予定ルート作成処理により、前の分割領域(エリア)の移動終了予定地点(座標)2eと後の分割領域(エリア)の移動開始予定地点(座標)2sとを一直線で結ぶ分割領域間直線移動予定ルートIを作成する。
つまり、n番目の分割領域毎のソート後交点座標記録ファイルの最後に記録された交点の座標位置とn+1番目の分割領域毎のソート後交点座標記録ファイルの最初に記録された交点の座標位置とを一直線で結ぶ分割領域間直線移動予定ルートIを作成する。
ただし、移動終了予定地点(座標)2eと移動開始予定地点(座標)2sとを一直線で結んだ場合に、柱Bと接触(衝突)してしまう場合には、任意の経路探索アルゴリズムを応用した分割領域間迂回移動予定ルート作成処理によって、迂回経路を生成する。
【0042】
コンピュータは、分割領域間移動予定ルート作成処理プログラムの手順に従って、図25のフローチャートに示すような分割領域間移動予定ルート作成処理(phase18)を行う。
まず、変数初期化を行う。即ち、エリア番号管理変数aを1に、移動先エリア管理変数iを1に設定する(ステップS161)。
分割領域間移動予定ルート作成処理では、コンピュータが、エリア番号管理変数レジスタ、移動先エリア管理変数レジスタ、エリア毎のソート後交点座標記録ファイル、経路探索コスト計算配列ファイル、エリア毎の経路記録ファイルのような記憶手段を使用しながら処理を行う。
次に、aの値がエリア数の上限を超えているか否かを判定し(ステップS162)、上限を超えていなければ、a番目のエリアは有効なエリアか否かを判定し(ステップS163)、a番目のエリアが有効なエリアであれば、a+i番目のエリアは有効なエリアか否かを判定する(ステップS164)。
ステップS164において、a+i番目のエリアが有効なエリアであると判定された場合、a番目のエリア用のソート後交点座標記録ファイルの最後の座標とa+i番目のエリア用のソート後交点座標記録ファイルの最初の座標を直線で結んだとき、外壁や柱と接触するか否かを判定する(ステップS165)。即ち、番号の小さいエリアの移動終了予定地点eと番号の大きいエリアの移動開始予定地点sとを直線で結んだとき、外壁や柱と接触するか否かを判定する。
ステップS165において、Yesの場合(直線が外壁や柱と接触すると判定された場合)、経路探索アルゴリズム処理に移行する。
経路探索アルゴリズム処理では、まず、a番目のエリア用のソート後交点座標記録ファイルの最後の座標、即ち、a番目の分割領域の移動終了予定地点eとなる交点座標の位置(経路探索アルゴリズムにおけるスタート地点)を現在位置とする(ステップS166)。
次に、経路探索アルゴリズムのコスト計算配列初期化を行う。つまり、コストC1[Xmax][Ymax]←[0,0,0,・・・・]、コストC2[Xmax][Ymax]←[0,0,0,・・・・]を行う(ステップS167)。
まず、現在位置から見て上下左右周囲8方向とスタート地点間の距離を計算する。例えば、コストを求めたい位置の周辺のC1を調べ、最も小さいC1に+1する(ただし、初期化時から変化してないC1は無視する)。計算されたコストはその位置に相当する配列番号のC1に代入する(ステップS168A)。
次に、現在位置から見て上下左右周囲8方向からa+i番目のエリア用のソート後交点座標記録ファイルの最初の交点座標(経路探索アルゴリズムにおけるゴール地点)までの推定距離を計算する。例えば、コストを求めたい位置とゴールとの直線距離を計算し、その計算されたコストはその位置に相当する配列番号のC2に代入する(ステップS168B)。
現在位置から見て上下左右周囲8方向それぞれについて、計算済みフラグを立てる(ステップS169)。
コスト計算済みフラグが立っている座標のうち、外壁や柱がなく、かつ最も総コスト(C1[*][**]+C2[*][**])が低い場所(座標)があるか否かを判定する(ステップS170)。
ステップS170において、該当する座標を発見できなかった場合は、エラーと判定して終了する。
ステップS170において、該当する座標が1箇所だけあった場合、当該座標位置へ移動し、その座標に到達済みフラグを立てる(ステップS171)。
また、ステップS170において、該当する座標が複数あった場合、同値の座標のうち、所定の優先順位で一か所を決めた後、ステップに進む。所定の優先順位は、ゴールまでの推定距離が小さい方>スタートからの距離が大きい方>最も原点座標に近い方とする(ステップS174)。その後、ステップS171に進む。
そして、a+i番目のエリア用のソート後交点座標記録ファイルの最初の座標に到達したか否かを判定する(ステップS172)。
a+i番目のエリア用のソート後交点座標記録ファイルの最初の座標に到達したと判定された場合(ステップS172でYES)、現在位置から見て上下左右周囲8方向のうち、到達済みフラグが立っており、かつ最も高いコストの場所があるか否かを判定する(ステップS173)。即ち、ステップS173においては、スタート地点に戻るような処理を行って、移動軌跡の履歴を探索するものである。
ステップS173において、該当する座標を発見できなかった場合は、エラーと判定して終了する。
ステップS173において、該当する座標が1箇所だけあった場合、最もコストが高い方へ移動する。このとき移動先の座標に経路確定フラグを立てる(ステップS173A)。
そして、a番目のソート後交点座標記録ファイルの最後の座標に到達したか否かを判定する(ステップS174)。
また、ステップS173において、該当する座標が複数あった場合、同値の座標のうち、スタートまでの物理的距離(ユークリッド距離)が最も近い方へ移動し、このとき移動先の座標に経路確定フラグを立てる(ステップS173B)。その後、ステップS174に進む。
ステップS174において、a番目のエリア用のソート後交点座標記録ファイルの最後の座標に到達したと判定された場合(ステップS174でYES)、記録された移動右軌跡を逆転させて、これをa番目のエリア探索後の移動の経路(分割領域間移動予定ルートI)として経路記録ファイルに登録する(ステップS175)。その後、ステップS176に進む。
ステップS165において、Noの場合(直線が外壁や柱と接触しないと判定された場合)は、a番目のエリア用のソート後交点座標記録ファイルの最後の座標からa+i番目のエリア用のソート後交点座標記録ファイルの最初の座標を結ぶ直線をa番目のエリア探索後の移動の経路として経路記録ファイルに登録し(ステップS178)、その後、ステップS176に進んで、aをa+iに、iを1に更新した後、ステップS162に戻る。
ステップS163において、a番目のエリアは有効なエリアではないと判定された場合には、ステップS176に進んで、aをa+iに、iを1に更新し、ステップS162に戻る。
ステップS164において、a+i番目のエリアは有効なエリアではないと判定された場合、iをi+1に設定した(ステップS179)後、a+iの値がエリア数の上限を超えているか否かを判定する(ステップS180)。ステップS180において、a+iの値がエリア数の上限を超えていないと判定された場合は、ステップS164に戻り、ステップS180において、a+iの値がエリア数の上限を超えていると判定された場合は、分割領域間移動予定ルート作成処理(phase11)を終了する。
ステップS162において、aの値がエリア数の上限を超えていると判定された場合には、分割領域間移動予定ルート作成処理(phase11)を終了する。
【0043】
分割領域間移動予定ルート作成処理(phase18)によれば、例えば図12に示すような分割領域間移動予定ルートが作成される。
即ち、例えばa番目の分割領域の終点交点座標とa+i番目の分割領域の開始交点座標とを結び、分割領域aと分割領域a+i間の移動予定ルートIを生成する
図12において、矢印直線23(I)は分割領域2の移動終了予定地点(交点座標)2eと分割領域3の移動開始予定地点(交点座標)3sとを繋ぐ分割領域間移動予定ルート、矢印直線34(I)は分割領域3の移動終了予定地点3eと分割領域4の移動開始予定地点4sとを繋ぐ分割領域間移動予定ルート、矢印直線45(I)は分割領域4の移動終了予定地点4eと分割領域5の移動開始予定地点5sとを繋ぐ分割領域間移動予定ルート、矢印直線56(I)は分割領域5の移動終了予定地点5eと分割領域6の移動開始予定地点6sとを繋ぐ分割領域間移動予定ルートである。
また、矢印直線68(I)は分割領域6の移動終了予定地点6eと分割領域8の移動開始予定地点8sとを繋ぐ分割領域間移動予定ルートであり、矢印直線89(I)は分割領域8の移動終了予定地点8eと分割領域9の移動開始予定地点9sとを繋ぐ分割領域間移動予定ルート、矢印直線911(I)は分割領域9の移動終了予定地点9eと領域11の移動開始予定地点11sとを繋ぐ分割領域間移動予定ルート、柱12を迂回する直線1113(I)は分割領域11の移動終了予定地点11eと分割領域13の移動開始予定地点12sとを繋ぐ分割領域間移動予定ルートであり、経路探索アルゴリズム処理により探索された分割領域間移動予定ルートである。
また、矢印直線1314(I)は分割領域13の移動終了予定地点13eと分割領域14の移動開始予定地点14sとを繋ぐ分割領域間移動予定ルート、矢印直線1415(I)は分割領域14の移動終了予定地点14eと分割領域15の移動開始予定地点15sとを繋ぐ分割領域間移動予定ルート、矢印直線1517(I)は分割領域15の移動終了予定地点15eと分割領域17の移動開始予定地点17sとを繋ぐ分割領域間移動予定ルート、矢印直線1719(I)は分割領域17の移動終了予定地点17eと分割領域19の移動開始予定地点19sとを繋ぐ分割領域間移動予定ルートである。
尚、図12の例では、すべての分割領域間移動予定ルートが、ステップS178により決められた分割領域間直線移動予定ルートIとなり、分割領域間迂回移動予定ルート作成処理により決められた分割領域間迂回移動予定ルートは無いが、ステップS178により決められた分割領域間直線移動予定ルートIが外壁や柱と接触すると判定される例においては、分割領域間直線移動予定ルートIの代わりに、分割領域間迂回移動予定ルート作成処理に基づいて分割領域間迂回移動予定ルートが作成されることになる。例えば、仮に、図12において、柱16がもっと大きな柱である場合には、矢印直線1415(I)が柱16と接触する可能性があり、この場合は、経路探索アルゴリズム処理に基づいて、柱16を迂回する分割領域間迂回移動予定ルートが作成されることになる。
【0044】
従って、移動体1は、予め作成された最適な分割領域間移動予定ルートを辿って分割領域間を移動できるようになり、移動体に、分割領域間の移動を効率的に行わせることができるようになる。
【0045】
上述した移動予定ルート作成装置、及び、移動予定ルート作成処理プログラムによれば、第1のルート及び第2のルートのうち移動効率の良いルートを選択するようにしたので、各分割領域の形状に応じて、移動対象領域内の障害物を避けて移動体を移動させるための効率的な移動予定ルートを的確に作成できるようになる。
【0046】
そして、上述した移動体の移動予定ルート作成装置により作成された移動予定ルート(移動予定情報)に基づいて移動体1が移動対象領域A内の柱(障害物)Bを避けて移動対象領域A内を効率的に自走できるようになる。
【0047】
即ち、図31に示すように、移動体1の制御手段50が、移動予定ルート(移動予定情報)に基づいて移動体1の移動を制御するとともに、移動情報取得手段としての例えば自動追尾型のトータルステーション(以下、TSと言う)等により取得される移動体1の実際の移動情報(移動体の逐次位置情報)と移動予定ルート(移動予定情報)とを用いて移動体1の移動を制御する移動体1の移動制御システムを構築できるようになる。
尚、当該移動体1の移動制御方法としては、例えば、本出願人による発明である特許文献1(特開2020-154400号公報)に開示された移動制御方法を採用すればよい。
【0048】
移動体1の一例について説明する。尚、以下の説明においては、前、後、上、下、左、右は、図31に示した方向と定義して説明する。
図31に示すように、移動体1は、基体10と、基体10の下側に設けられた移動手段20と、基体10の表面側に設けられたTSの視準となるプリズム等のターゲットT2と、基体10に設けられて移動体1の前側を昇降させる昇降装置40と、制御手段50と、床面を撮影するための図外の撮像手段(カメラ)とを備えている。
尚、撮像手段は、例えば、基体10の下面(床面と対向する下面)側において、移動体1の左右幅間に亘って延長するように設けられており、移動体1が床面上を移動した場合に、移動体1の下面の左右幅間に対向する床面を撮影できるように構成されている。
【0049】
移動手段20は、例えば、基体10の前側下部に設けられた左右の前側車輪21L,21Rと、基体10の後側下部に設けられた左右の後側車輪22L,22Rと、後側車輪22L,22Rの駆動源としてのモータ23L,23Rと、図外の駆動制御回路とを備える。
尚、モータ23L,23Rの各モータ軸には、それぞれ、後側車輪22L,22Rの回転量に基づいて移動体1の移動距離(移動量)を検出するための移動量検出手段としてのエンコーダ25L,25Rが取付けられている。
【0050】
ターゲットT2は、TSから発射される光を反射させる反射プリズム等で構成される。当該ターゲットT2は、例えば、基体10の上面の前側における左右間の中央位置に設置される。
【0051】
制御手段50は、移動体1の移動方向(進行方向)を変更する際、昇降装置40の図外のリニアアクチュエータのロッドを縮退状態から伸長させて図外の転動体を床面に押し付けることにより基体10の前側を上方に移動させて移動体1の前側車輪21L,21Rを床面から浮かせた状態で、左右の後側車輪22L,22Rのモータ23L,23Rを制御して床面に接触している左右の後側車輪22L,22Rを互いに反対方向に回転させる。
この場合、移動体1を前進させる回転方向に一方の後側車輪を回転させるとともに、移動体1を後進させる回転方向に他方の後側車輪を回転させることによって、移動体1の回転中心線を回転中心として、左右の後側車輪22L,22Rと転動体とが床面上を転動するので、床面上において、移動体1が回転中心線を回転中心として左方向又は右方向にスムーズに回転する。よって、移動体1の水平方向の向きがスムーズに変更されるようになる。
【0052】
尚、移動体1として、撮像手段(カメラ)を搭載して床面を撮影する撮像手段搭載移動体を例示したが、移動体は、例えば掃除機を搭載して床面を掃除する掃除機搭載移動体等の特定処理機能搭載移動体、又は、特定処理機能を搭載しない移動体であってもよい。
【0053】
また、上述した前提装置では、移動対象領域Aの外側のエリア、即ち、壁外領域をエリア1に設定したために、図20のエリア毎交点座標抽出処理(phase9)のステップS131の変数初期化、図21の分割領域内ジグザグ移動予定ルート作成処理(phase10)のステップS141の変数初期化、図22の移動コスト処理(phase11)のステップS201の変数初期化、図24のルート選択処理(phase17)のステップS281の変数初期化、図25の分割領域間移動予定ルート作成処理(phase18)のステップS161の変数初期化において、エリア番号管理変数aを1に設定して処理を開始する例を示したが、エリア1は分割された領域ではないので、これら各処理の変数初期化において、エリア番号管理変数aを2に設定して、エリア2から処理を開始するようにしてもよい。
【0054】
本発明に係る巡回ルート作成装置の前提装置となる上述した移動予定ルート作成装置では、各分割領域(各移動対象領域)に所定の規則でエリア番号を付けて、一番小さい番号の分割領域(移動対象領域)から昇順に分割領域間を分割領域間移動予定ルートで繋げて作成された移動予定ルートを作成するようにしている。つまり、各分割領域を巡回する巡回ルートを作成するようにしている。
しかしながら、当該移動予定ルート作成装置では、一番小さい番号の分割領域から順番に、一番近い番号が付与された2つの分割領域同士を分割領域間移動予定ルートで繋げるようにしているだけであり、各分割領域を巡回する巡回ルートが、効率的な巡回ルートであるかどうかについての評価を行っていない。
即ち、上述した前提技術で作成された巡回ルートは、効率的な巡回ルートであるかどうかはわからない。
この複数の各エリア(各移動対象領域)を移動体1に巡回させるための効率的な巡回ルートを求める問題は、巡回セールスマン問題として知られている。巡回セールスマン問題は、NP困難と呼ばれるクラスに属し、総当たり的な方法以外で最適解を見つけることが困難な問題とされている。
例えば、エリア数を「N」とし、エリア内の巡回パターンのパターン数を「8」とした場合、巡回ルートパターンの総数は、エリア間移動順の組み合わせ数(N!)×エリア内の巡回パターンの組み合わせ数(8)である。このため、巡回ルートパターンの全パターンを総当たりで計算して最適な巡回ルート(最適解)を探索することは、計算時間の観点から現実的ではない。
そこで、本発明では、以下に示すように、複数の移動対象領域を移動体1に巡回させるための効率的な巡回ルートの作成時間の短縮化を図ることが可能な巡回ルート作成装置を実現したものである。
尚、本発明において、複数の移動対象領域は、各自独立した複数の移動対象領域、あるいは、上述したような複数の分割領域等であり、以下、「移動対象領域」を「エリア」と呼称して説明する。
【0055】
本発明では、複数の各エリアの重心同士を繋ぐ重心間経路を作成して当該重心間経路を辿って各エリアを一巡する巡回ループ経路のうち最も距離の短い巡回ループ経路を作成することにより、巡回ループ経路を効率的に作成できるようにした。
その後、各エリア内での巡回パターンの組み合わせとして移動コストが最も小さくなる組み合わせに決定した後に、一方のエリアの巡回パターンの終点と他方のエリアの巡回パターンの始点とを繋ぐ各エリア間経路のうち、最も移動コストが大きいエリア間経路を削除して、当該削除されたエリア間経路の終点となっていたエリアを巡回開始領域とし、かつ、当該削除されたエリア間経路の始点となっていたエリアを巡回終了領域とした巡回ルートを作成することで、効率的な巡回ルートを効率的に作成できるようにしたものである。
【0056】
実施形態1
本発明の実施形態1に係る巡回ルート作成方法について説明する。
(1)まず、XY座標情報(二次元座標情報)に基づいて区画された複数のエリアの位置情報をコンピュータに認識させる。即ち、例えば屋内におけるエリアを複数のエリアに分割した地図をコンピュータに読み込ませて、複数のエリアの位置情報をコンピュータに認識させ、表示画面上に、地図を表示させる。
例えば、屋内における移動対象となる移動対象領域Aを複数のエリアA1,A2,A3,A4,A5,A6に分割した地図を表示させる(図33参照)。
(2)次に認識した複数の各エリアA1,A2,A3,A4,A5,A6の重心Gをそれぞれ求めて(図33参照)、複数の各エリアの重心同士を繋ぐ重心間経路r,r…を作成する(図34参照)。当該重心間経路は、例えば、当該各エリアの重心をドロネー点とし、各エリアの重心同士を繋ぐ線をドロネー辺(ドロネー境界)とするドロネー三角形分割処理により作成すればよい。
尚、ドロネー三角形分割とは、すべての三角形の外接円の中に点が一つもないように、すべての点(ドロネー点)を結んだものである。この処理によって、各エリアの重心が、重心間経路となるドロネー辺で結ばれる。
(3)次に、各エリアの重心(ドロネー点)同士を繋いだ線(ドロネー辺)を辿って各エリアを一巡するように作成される巡回ループ経路の候補をすべて作成し、その後、作成されたすべての巡回ループ経路候補の中から巡回ループ経路候補の経路を辿った場合の距離の最も短い巡回ループ経路を抽出する。
(4)そして、巡回ループを作成する。
即ち、抽出された巡回ループ経路に従って各エリア間を移動体1で移動させる場合に、移動コストが最も小さくなる各エリア内での巡回パターンの組み合わせとなる巡回ループを作成する。
(5)次に、巡回ルートを作成する。
即ち、作成された巡回ループでのエリア間経路のうち最も移動距離が長い経路を削除して、当該削除された経路の終点となっていたエリアを移動開始領域とし、かつ、当該削除された経路の始点となっていたエリアを移動終了領域とした巡回ルートを作成する。
このように、移動コストが小さい効率的な巡回ルートを効率的に作成できるようにした。
【0057】
次に、上述した巡回ルート作成方法を実現するための巡回ルート作成装置を、図32乃至図37に基づいて説明する。
巡回ルート作成装置は、画像認識手段と、重心間経路作成手段と、巡回ループ経路作成手段と、巡回パターン設定手段と、巡回パターン決定手段と、巡回ルート作成手段とを備える。
巡回ルート作成装置を構成する上述した各手段は、各手段が実行する処理の手順を示す処理プログラムと、当該処理プログラムによる情報処理を実現するコンピュータ等のハードウエア資源とにより構成される。
換言すれば、巡回ルート作成装置の処理を実現する巡回ルート作成処理プログラムは、コンピュータを、上述した各手段として機能させるプログラムである。
即ち、巡回ルート作成装置は、例えば表示画面及び表示制御手段を備えたパーソナルコンピュータ等のコンピュータに、上述した巡回ルート作成処理プログラムがインストールされて構成されている。
【0058】
画像認識手段は、XY座標情報(二次元座標情報)に基づいて区画された複数のエリアの位置情報をコンピュータに認識させる。即ち、例えば屋内における分割前のエリアを複数のエリアに分割した地図をコンピュータに読み込ませて、複数のエリアの位置情報をコンピュータに認識させ、表示画面上に表示させる。例えば図33に示すような、屋内において、柱B,B等の障害物が存在する室内等の分割前の元のエリアA内に分割された複数のエリアA1,A2,A3,A4,A5,A6が設定された地図を表示させる。
【0059】
重心間経路作成手段は、複数の各エリアA1,A2,A3,A4,A5,A6毎の重心G,G…を求めて複数の各エリアの重心同士を繋ぐ重心間経路r,r…を作成する(図33図34参照)。尚、エリアは、四角形等の図形情報により認識されるので、エリアの重心は、当該エリアを形成する図形の重心を求めるための周知の算出式に基づいて求められる。
当該重心間経路作成手段は、例えば、各エリアの重心をドロネー点とし、各エリアの重心同士を繋ぐ線をドロネー辺とするドロネー三角形分割処理手段により構成され、このドロネー三角形分割処理手段により作成されるドロネー辺が重心間経路となる。
例えば、図33に示すように、表示画面上に表示されたエリアA1,A2,A3,A4,A5,A6のそれぞれのエリアでの重心を求める。尚、図33図36において、各エリアA1,A2,A3,A4,A5,A6内にある〇の位置が重心Gの位置である。
この重心G,G…を重心間経路となるドロネー辺で繋いで、図34のように、ドロネー三角形分割処理を行う。
【0060】
巡回ループ経路作成手段は、重心間経路を辿って各エリアを一巡する巡回ループ経路のうち最も距離の短い巡回ループ経路を作成する。
巡回ループ経路作成手段は、巡回ループ経路候補作成手段と、巡回ループ経路決定手段と、を備える。
巡回ループ経路候補作成手段は、重心間経路を辿って各エリアを一巡する巡回ループ経路の候補を1つ以上作成する。つまり、重心間経路となるドロネー辺を辿って各エリアA1,A2,A3,A4,A5,A6を一巡する巡回ループ経路の候補をすべて作成する。
巡回ループ経路決定手段は、作成されたすべての巡回ループ経路候補の中から距離の最も短い巡回ループ経路候補を巡回ループ経路として決定する。
図34に示したようにドロネー三角形分割処理を行った場合、巡回ループ経路候補作成手段により作成される巡回ループ経路候補は、図35(a),(b),(c)において矢印の経路で示す3通りであり、巡回ループ経路決定手段は、この3通りの巡回ループ経路候補R1,R2,R3の中から、最も距離の短い巡回ループ経路候補を巡回ループ経路として決定する。
この場合、最も距離の短い巡回ループ経路候補は、図35(a)に示す巡回ループ経路候補R1であり、この巡回ループ経路候補R1が図36に示すように巡回ループ経路Rとして決定される。
【0061】
巡回パターン設定手段は、各エリア内において複数の巡回パターンを設定可能な手段である。
尚、巡回パターン設定手段によって各エリア内に設定可能な複数の巡回パターンは、前提装置の説明において図12に示した分割領域内ジグザグ移動予定ルートHのパターンのことであり、例えばX軸に沿ってジグザグに進むX方向巡回パターン、又は、Y軸に沿って進むジグザグなY方向巡回パターンである。
エリア内の予め決められた所定の複数の巡回パターンは、例えば図32に示すように、X方向巡回パターンにおいては、移動開始位置(始端(入口))をX座標最小値Y座標最大値の位置とするZパターン(第1パターン)、移動開始位置をX座標最小値Y座標最小値の位置とするZ’パターン(第2パターン)、移動開始位置をX座標最大値Y座標最大値の位置とするSパターン(第3パターン)、移動開始位置をX座標最大値Y座標最小値の位置とするS’パターン(第4パターン)である。
また、Y方向巡回パターンにおいては、移動開始位置をX座標最小値Y座標最大値の位置とするWパターン(第5パターン)、移動開始位置をX座標最大値Y座標最大値の位置とするW’パターン(第6パターン)、移動開始位置をX座標最小値Y座標最小値の位置とするMパターン(第7パターン))、移動開始位置をX座標最大値Y座標最小値の位置とするM’パターン(第8パターン)である。
また、各エリアにおいて、当該複数の巡回パターンの各パターンを設定した場合において、当該各パターン上を移動体1で移動させる場合の移動コストは、例えば、予め移動コスト算出手段により算出されてデータベースに記録されている。
【0062】
巡回パターン決定手段は、作成された巡回ループ経路に基づいて各エリアを移動するとした場合に、移動コストが最も小さくなる各エリア内での巡回パターンの組み合わせを決定する。
当該巡回パターン決定手段は、作成された巡回ループ経路において、例えば、各エリアを一巡する際の出発エリアを決めた後に、移動コストが最も小さくなる各エリア内での巡回パターンの組み合わせを決定する。
【0063】
例えば、決定された巡回ループ経路が、図36(a)に示す巡回ループ経路Rであり、各エリアを一巡する際の出発エリアをA1に決めた場合について説明する。
つまり、巡回ループ経路で各エリアを一巡する際の出発エリアを予め決めた後に、移動コストが最も小さくなる各エリアA1,A2,A3,A4,A5,A6内での巡回パターンP,P…の組み合わせとなる巡回ループを作成する例を示している。
尚、移動コストとは、例えば、巡回パターンPの距離の合計、移動体1が巡回パターンPを移動する際に必要な移動体1の旋回角度の合計、移動体1が巡回パターンPを移動する際に必要な移動体1の旋回回数の合計を考慮して算定されたコストのことである。
【0064】
例えば、図36(a)に示す巡回ループ経路Rにおいて、各エリアを一巡する際の出発エリアをA1に決めるとともに、各エリアに対する移動順を、エリアA1→エリアA2→エリアA3→エリアA6→エリアA5→エリアA4→エリアA1(即ち、図36に記載した〇数字の順)に決めた後に、移動コストが最も小さくなる各エリア内での巡回パターンP,P…の組み合わせとなる巡回ループを作成する。
【0065】
この場合、まず、図36(a)に示すように、エリアA1とエリアA2とにおける最適巡回パターンP,Pを決める。つまり、エリアA1とエリアA2とに、上述した8つの巡回パターンの組み合わせをすべて設定して、巡回パターンの組み合わせ毎に、それぞれ、移動体1による移動コストを計算する。この場合、エリアA1の巡回パターンとエリアA2の巡回パターンとの組み合わせ数は、64であり、この64の組み合わせの中から、移動コストが一番小さくなるエリアA1とエリアA2とにおける巡回パターンP,Pの組み合わせを求め、これを、エリアA1とエリアA2とにおける最適巡回パターンP,Pとして決定する。
【0066】
次に、図36(b)に示すように、エリアA3における最適巡回パターンPを決める。この場合、エリアA1とエリアA2とにおける最適巡回パターンP,Pはすでに決定しているので、エリアA3における最適巡回パターンPを上述した8つの巡回パターンの中から選ぶ。
即ち、エリアA1とエリアA2とにおける最適巡回パターンとエリアA3の8つの巡回パターンとの組み合わせを設定し、この組み合わせの中から移動コストが一番小さくなる巡回パターンの組み合わせを求め、この組み合わせにおけるエリアA3の巡回パターンをエリアA3の最適巡回パターンとして決定する。
【0067】
以下、同様に、エリアA6,エリアA5,エリアA4における最適巡回パターンPを求め、これにより、図36(c)に示すように、全エリア内の最適巡回パターンP,P…が決定した巡回ループが作成されることになる。
【0068】
巡回ルート作成手段は、各エリア内での巡回パターンの組み合わせが決定した後、一方のエリアの巡回パターンの終点と他方のエリアの巡回パターンの始点とを繋ぐ各エリア間経路のうち、最も移動コストが大きいエリア間経路を削除して、当該削除されたエリア間経路の終点となっていたエリアを巡回開始領域とし、かつ、当該削除されたエリア間経路の始点となっていたエリアを巡回終了領域とした巡回ルートを作成する。
【0069】
例えば、図36(c)のように、各エリア内での巡回パターンP,P…の組み合わせが決定した場合、エリアA5内の巡回パターンの終点とエリアA4内の巡回パターンの始点との間のエリア間経路の移動コストが最も大きいので、当該エリア間経路が削除されて、エリアA4を巡回開始領域とし、エリアA5を巡回終了領域とした巡回ルートが作成されることになる。
つまり、エリアA4内をZ’パターン(第2パターン)で移動した後に、エリアA1に移動し、エリアA1内をS’パターン(第4パターン)で移動した後に、エリアA2に移動し、エリアA2内をZパターン(第1パターン)で移動した後に、エリアA3に移動し、エリアA3内をZパターン(第1パターン)で移動した後に、エリアA6に移動し、エリアA6内をSパターン(第3パターン)で移動した後に、エリアA5に移動し、エリアA5内をZ’パターン(第2パターン)で移動する効率的な巡回ルートが作成される。
以上のように、移動コストが小さい効率的な巡回ルートを効率的に作成できる。
【0070】
実施形態1による巡回ルート作成手順の流れを図37に基づいて説明する。
巡回ルート作成装置は、複数のエリアの位置情報を認識し、まず、重心間経路作成処理(ステップS1)を実行する。
重心間経路作成処理(ステップS1)では、具体的には、ドロネー三角形分割処理により作成されるドロネー辺を重心間経路として使用する。
次に、巡回ループ経路作成処理(ステップS2)を実行する。
巡回ループ経路作成処理(ステップS2)では、具体的には、重心間経路を辿って各エリアを一巡する巡回ループ経路の候補を1つ以上作成し、作成されたすべての巡回ループ経路候補の中から距離の最も短い巡回ループ経路候補を巡回ルート経路として決定する。
次に、巡回パターン決定処理(ステップS3)を実行する。
巡回パターン決定処理(ステップS3)では、作成された巡回ループ経路において、各エリアを一巡する際の出発エリアを決めた後に、移動コストが最も小さくなる各エリア内での巡回パターンの組み合わせを決定する。
最期に、巡回ルート作成処理(ステップS4)を実行する。
巡回ルート作成処理(ステップS4)では、各エリア内での巡回パターンの組み合わせが決定した後、一方のエリアの巡回パターンの終点と他方のエリアの巡回パターンの始点とを繋ぐ各エリア間経路のうち、最も移動コストが大きいエリア間経路を削除して、当該削除されたエリア間経路の終点となっていたエリアを巡回開始領域とし、かつ、当該削除されたエリア間経路の始点となっていたエリアを巡回終了領域とした巡回ルートを作成する。
【0071】
実施形態1に係る巡回ルート作成装置によれば、複数の各エリアの重心同士を繋ぐ重心間経路を辿って各エリアを一巡する巡回ループ経路を作成し、巡回ループ経路に基づいて、各エリアを移動すると想定した場合に、移動コストが最も小さくなる各エリア内での巡回パターンの組み合わせを作成し、最期に、最も移動コストが大きいエリア間経路を削除して、巡回ルートを作成するようにしたので、巡回ルートを作成するために要する計算処理時間を短縮化でき、複数のエリアを移動体1に巡回させるための効率的な巡回ルートを効率的に作成できるようになった。
つまり、計算負荷の小さい重心間経路作成処理を行うことで、巡回ルートの作成処理にかかる計算処理時間の短縮化を図ることが可能となり、巡回ルートを効率的に作成できるようになった。
【0072】
実施形態2
巡回パターン決定手段は、作成された巡回ループ経路において、各移動対象領域を一巡する際の出発エリアや各エリアに対する移動順を異ならせた毎に、移動コストが最も小さくなる各エリア内での巡回パターンの最適組み合わせを作成し、この出発エリアや各エリアに対する移動順を異ならせた毎の巡回パターンの最適組み合わせのうち移動コストが最も小さいものを巡回パターンの組み合わせとして決定するようにしてもよい。
【0073】
即ち、実施形態1では、巡回パターン決定手段は、作成された巡回ループ経路において、各エリアを一巡する際の出発エリア及び移動順を予め決めた後に、移動コストが最も小さくなる各エリア内での巡回パターンの組み合わせを決定するようにしていたが、抽出された巡回ループ経路においては、各エリアを一巡する際の出発エリアは自由に決めることが可能であり、また、各エリアを一巡する際の移動順は、逆順に決めることも可能である。
従って、抽出された巡回ループ経路において、各エリアを一巡する際の出発エリアを異ならせた場合や各エリアを一巡する際の移動順を逆順にした場合についても、それぞれ、各エリア内での巡回パターンの最適組み合わせを作成するようにした。
【0074】
例えば、図36に示す巡回ループ経路Rにおいて、各エリアを一巡する際の出発エリアをエリアA1以外のエリアに変更したり、各エリアを一巡する際の移動順を逆順に変更する(例えば、移動順を、エリアA1→エリアA4→エリアA5→エリアA6→エリアA3→エリアA2→エリアA1に変更する)ことで、いろいろな条件での巡回パターン決定処理を行うことが可能となる。
従って、このようないろいろな条件での巡回パターン決定処理を行うことで、各エリア内での巡回パターンの組み合わせについてのバリエーションが増えることになるので、より最適な巡回パターンの組み合わせを求めることができる可能性が高まり、より最適な巡回ルートを求めることができる可能性がある。
【0075】
実施形態3
実施形態1,実施形態2においては、作成されたすべての巡回ループ経路候補の中から距離の短い巡回ループ経路を1つだけ抽出する例を例示したが、作成されたすべての巡回ループ経路候補の中から距離の短い巡回ループ経路を複数抽出するようにして、巡回ループ作成においては、抽出された巡回ループ経路毎に巡回ループを作成し、作成された複数の巡回ループのうち移動コストが最も小さいものを巡回ループとして選択するようにしてもよい。
実施形態3によれば、より最適な巡回ループを得ることができる可能性が高まり、より最適な巡回ルートを求めることができる可能性がある。
【0076】
実施形態4
実施形態1では、複数の各エリアの重心同士を繋ぐ重心間経路を、ドロネー三角形分割処理により作成した例を示したが、重心間経路rは、その他の手法で作成しても構わない。
例えば、基準とするエリアの重心を中心とする所定の半径距離の円を作成し、当該基準とするエリアの重心と当該円内に存在する各エリアの重心とをそれぞれ繋いでいくことにより、重心間経路を作成するようにしてもよい。
例えば、図38に示すように、基準となるエリアA1の重心Gから半径距離Dの円C内に位置される、エリアA2の重心G、エリアA5の重心G、エリアA4の重心Gと、エリアA1の重心Gとをそれぞれ繋ぐ重心間経路r,r,rを作成する。
同様に、エリアA2の重心Gから半径距離Dの円内に位置されるエリアの重心とエリアA2の重心Gとを繋いだ重心間経路r,r…を作成する。同様に、エリアA3の重心Gから半径距離Dの円内に位置されるエリアの重心とエリアA3の重心Gとを繋いだ重心間経路r,r…を作成する。さらに、エリアA4の重心Gから半径Dの円内に位置されるエリアの重心とエリアA4の重心Gとを繋いだ重心間経路r,r…を作成する。さらに、エリアA5の重心Gから半径距離Dの円内に位置されるエリアの重心とエリアA5の重心Gとを繋いだ重心間経路r,r…を作成する。さらに、エリアA6の重心Gから半径距離Dの円内に位置されるエリアの重心とエリアA6の重心Gとを繋いだ重心間経路r,r…を作成する。
そして、上述した複数の各エリアA1,A2,A3,A4,A5,A6の重心G,G…同士を繋ぐ重心間経路を辿って各エリアを一巡する巡回ループ経路の候補を作成できるだけ作成した後、作成した複数の巡回ループ経路候補のうち最も距離の短い巡回ループ経路候補を巡回ループ経路として決定し、当該巡回ループ経路に基づいて、上述したように巡回ループを作成するようにしてもよい。
【0077】
実施形態5
また、基準とするエリアの重心と繋ぐエリアをM個と決めておき、基準とするエリアの重心から距離が近いエリアをM個だけ探索して、基準とするエリアの重心と探索したM個の各エリアの重心とを繋ぐ重心間経路を作成するようにしてもよい。
例えば、M個を3個とした場合、例えば図39に示すように、基準とするエリアA1の重心Gから距離が近い3個のエリアであるエリアA2,エリアA5,エリアA4を探索し、このエリアA2の重心G、エリアA5の重心G、エリアA4の重心Gと、基準とするエリアA1の重心Gとをそれぞれ繋ぐ重心間経路を作成する。
同様に、基準とするエリアA2の重心Gから距離が近い3個のエリアを探索し、この3個のエリアの重心とエリアA2の重心Gとをそれぞれ繋いだ重心間経路r,r…を作成し、基準とするエリアA3の重心Gから距離が近い3個のエリアを探索し、この3個のエリアの重心とエリアA3の重心Gとをそれぞれ繋いだ重心間経路r,r…を作成し、基準とするエリアA4の重心Gから距離が近い3個のエリアを探索し、この3個のエリアの重心とエリアA4の重心Gとをそれぞれ繋いだ重心間経路r,r…を作成し、基準とするエリアA5の重心Gから距離が近い3個のエリアを探索し、この3個のエリアの重心とエリアA5の重心Gとをそれぞれ繋いだ重心間経路r,r…を作成し、基準とするエリアA6の重心Gから距離が近い3個のエリアを探索し、この3個のエリアの重心とエリアA6の重心Gとをそれぞれ繋いだ重心間経路r,r…を作成する。
そして、上述した複数の各エリアA1,A2,A3,A4,A5,A6の重心G,G…同士を繋ぐ重心間経路を辿って各エリアを一巡する巡回ループ経路の候補を作成できるだけ作成した後、作成した複数の巡回ループ経路候補のうち最も距離の短い巡回ループ経路候補を巡回ループ経路として決定し、当該巡回ループ経路に基づいて、上述したように巡回ループを作成するようにしてもよい。
【0078】
尚、各エリア内に設定可能な巡回パターンは、上述した8パターンの中から選択した2種類以上の巡回パターン、あるいは、上述した8パターン以外の巡回パターンであっても構わない。
【0079】
また、本発明に係る巡回ルート作成処理プログラムは、コンピュータを、複数の各エリアの重心同士を繋ぐ重心間経路を作成する重心間経路作成手段、重心間経路を辿って各エリアを一巡する巡回ループ経路のうち最も距離の短い巡回ループ経路を作成する巡回ループ経路作成手段、各エリア内において複数の巡回パターンを設定可能な巡回パターン設定手段、作成された巡回ループ経路に基づいて各エリアを移動するとした場合に、移動コストが最も小さくなる各エリア内での巡回パターンの組み合わせを決定する巡回パターン決定手段、各エリア内での巡回パターンの組み合わせが決定した後、一方のエリアの巡回パターンの終点と他方のエリアの巡回パターンの始点とを繋ぐ各エリア間経路のうち、最も移動コストが大きいエリア間経路を削除して、当該削除されたエリア間経路の終点となっていたエリアを巡回開始領域とし、かつ、当該削除されたエリア間経路の始点となっていたエリアを巡回終了領域とした巡回ルートを作成する巡回ルート作成手段として機能させるプログラムである。
【符号の説明】
【0080】
1 移動体、A1,A2,A3,A4,A5,A6 エリア(複数の移動対象領域)、G 重心、R 巡回ループ経路、R1,R2,R3 巡回ループ経路候補、
r 重心間経路。

図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29
図30
図31
図32
図33
図34
図35
図36
図37
図38
図39