(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022139849
(43)【公開日】2022-09-26
(54)【発明の名称】領域区分け装置、及び、領域区分け処理プログラム
(51)【国際特許分類】
G05D 1/02 20200101AFI20220915BHJP
【FI】
G05D1/02 S
G05D1/02 J
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2021040404
(22)【出願日】2021-03-12
(71)【出願人】
【識別番号】000001317
【氏名又は名称】株式会社熊谷組
(74)【代理人】
【識別番号】100141243
【弁理士】
【氏名又は名称】宮園 靖夫
(72)【発明者】
【氏名】冨樫 淳輝
【テーマコード(参考)】
5H301
【Fターム(参考)】
5H301AA01
5H301AA10
5H301BB14
5H301CC03
5H301CC06
5H301CC10
5H301DD01
5H301DD06
5H301DD07
5H301DD15
5H301GG09
5H301HH01
5H301HH02
5H301LL01
5H301LL02
5H301LL03
5H301LL06
5H301LL11
(57)【要約】
【課題】所定領域内の障害物以外の領域を複数の領域に分割して認識できるようにする処理を簡単かつ効率的に行えるようにした領域区分け装置等を提供する。
【解決手段】障害物が存在する所定領域内を複数の領域に区分けする領域区分け装置であって、所定領域の位置を示すXY座標情報に基づいて所定領域を区画する所定領域境界線Cで囲まれた所定領域Aを作成する所定領域作成手段と、所定領域内の障害物Bの位置を示すXY座標情報に基づいて所定領域内に存在する障害物を区画する障害物領域境界線で囲まれた障害物領域を作成する障害物領域作成手段と、所定領域の位置を示すXY座標情報及び所定領域内の障害物の位置を示すXY座標情報を利用して所定領域A内を複数の分割領域E,E…に分割する所定領域分割手段と、を備えたことを特徴とする。
【選択図】
図7
【特許請求の範囲】
【請求項1】
障害物が存在する所定領域内を複数の領域に区分けする領域区分け装置であって、
所定領域の位置を示すXY座標情報に基づいて所定領域を区画する所定領域境界線で囲まれた所定領域を作成する所定領域作成手段と、
所定領域内の障害物の位置を示すXY座標情報に基づいて所定領域内に存在する障害物を区画する障害物領域境界線で囲まれた障害物領域を作成する障害物領域作成手段と、
所定領域の位置を示すXY座標情報及び所定領域内の障害物の位置を示すXY座標情報を利用して所定領域内を複数の分割領域に分割する所定領域分割手段と、
を備えたことを特徴とする領域区分け装置。
【請求項2】
所定領域分割手段は、
障害物同士を繋ぐ第1の境界線、障害物と所定領域境界線とを繋ぐ第2の境界線、障害物と第1の境界線又は第2の境界線とを繋ぐ第3の境界線を作成して、所定領域内をこれら境界線で区画することにより、複数の分割領域を作成する分割領域作成手段と、
複数の各分割領域及び各障害物領域にそれぞれ識別情報を付与して複数の各分割領域を認識する分割領域認識手段と、
を備えたことを特徴とする請求項1に記載の領域区分け装置。
【請求項3】
分割領域作成手段は、
所定領域内に存在する複数の障害物を、X座標情報の近いもの同士、Y座標情報の近いもの同士に、グループ分けする障害物グループ分け手段と、
各障害物の複数の角にそれぞれ識別情報を付与して障害物の角を認識する障害物角認識手段と、
X座標情報の近いもの同士としてグループ分けされた一方の障害物の角と他方の障害物の角とを接続する第1の接続線、及び、Y座標情報の近いもの同士としてグループ分けされた一方の障害物の角と他方の障害物の角とを接続する第1の接続線を作成する第1の接続線作成手段と、
障害物のうち第1の接続線が接続されていない角と所定領域境界線とを接続する第2の接続線を作成する第2の接続線作成手段と、
障害物のうち第1の接続線及び第2の接続線が接続されていない角と既に作成した第1の接続線又は第2の接続線とを接続する第3の接続線を作成する第3の接続線作成手段と、
を備えたことを特徴とする請求項2に記載の領域区分け装置。
【請求項4】
障害物が存在する所定領域内を複数の領域に区分けする領域区分け処理プログラムであって、
コンピュータを、
所定領域の位置を示すXY座標情報に基づいて所定領域を区画する所定領域境界線で囲まれた所定領域を作成する所定領域作成手段、
所定領域内の障害物の位置を示すXY座標情報に基づいて所定領域内に存在する障害物を区画する障害物領域境界線で囲まれた障害物領域を作成する障害物領域作成手段、
所定領域の位置を示すXY座標情報及び所定領域内の障害物の位置を示すXY座標情報を利用して所定領域内を複数の分割領域に分割する所定領域分割手段、
として機能させるための領域区分け処理プログラム。
【請求項5】
障害物が存在する所定領域内を複数の領域に区分けする領域区分け処理プログラムであって、
コンピュータを、
所定領域の位置を示すXY座標情報に基づいて所定領域を区画する所定領域境界線で囲まれた所定領域を作成する所定領域作成手段、
所定領域内の障害物の位置を示すXY座標情報に基づいて所定領域内に存在する障害物を区画する障害物領域境界線で囲まれた障害物領域を作成する障害物領域作成手段、
所定領域内に存在する複数の障害物を、X座標情報の近いもの同士、Y座標情報の近いもの同士に、グループ分けする障害物グループ分け手段、
各障害物の複数の角にそれぞれ識別情報を付与して障害物の角を認識する障害物角認識手段、
X座標情報の近いもの同士としてグループ分けされた一方の障害物の角と他方の障害物の角とを接続する第1の接続線、及び、Y座標情報の近いもの同士としてグループ分けされた一方の障害物の角と他方の障害物の角とを接続する第1の接続線を作成する第1の接続線作成手段、
障害物のうち第1の接続線が接続されていない角と所定領域境界線とを接続する第2の接続線を作成する第2の接続線作成手段、
障害物のうち第1の接続線及び第2の接続線が接続されていない角と既に作成した第1の接続線又は第2の接続線とを接続する第3の接続線を作成する第3の接続線作成手段、
複数の各分割領域及び各障害物領域にそれぞれ識別情報を付与して複数の各分割領域を認識する分割領域認識手段、
として機能させるための領域区分け処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、障害物が存在する所定領域内を複数の領域に区分けする領域区分け装置等に関する。
【背景技術】
【0002】
本出願人による発明である移動体の移動制御システムとして、所定領域内としての移動対象面(移動対象領域)上を移動させる移動体の移動予定情報(移動予定ルート)を作成する移動予定情報作成処理と、移動体を移動予定情報に基づいて移動させるとともに、移動情報取得手段により取得された移動体の実際の移動情報と移動予定情報とを比較して移動体の移動を制御する移動制御処理と、を備えた移動体の移動制御システムが開示されている(特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、障害物が存在する所定領域内で例えば上述した移動体を移動させる場合や、障害物が存在する所定領域内の位置情報を管理したい場合等において、所定領域内の障害物以外の領域を簡単かつ効率的に認識したいという課題があった。
本発明は、上記課題に鑑み、所定領域内の障害物以外の領域を複数の領域に分割して認識できるようにする処理を簡単かつ効率的に行えるようにした領域区分け装置等を提供するものである。
【課題を解決するための手段】
【0005】
本発明に係る領域区分け装置は、障害物が存在する所定領域内を複数の領域に区分けする領域区分け装置であって、所定領域の位置を示すXY座標情報に基づいて所定領域を区画する所定領域境界線で囲まれた所定領域を作成する所定領域作成手段と、所定領域内の障害物の位置を示すXY座標情報に基づいて所定領域内に存在する障害物を区画する障害物領域境界線で囲まれた障害物領域を作成する障害物領域作成手段と、所定領域の位置を示すXY座標情報及び所定領域内の障害物の位置を示すXY座標情報を利用して所定領域内を複数の分割領域に分割する所定領域分割手段と、を備えたことを特徴とする。
また、所定領域分割手段は、障害物同士を繋ぐ第1の境界線、障害物と所定領域境界線とを繋ぐ第2の境界線、障害物と第1の境界線又は第2の境界線とを繋ぐ第3の境界線を作成して、所定領域内をこれら境界線で区画することにより、複数の分割領域を作成する分割領域作成手段と、複数の各分割領域及び各障害物領域にそれぞれ識別情報を付与して複数の各分割領域を認識する分割領域認識手段と、を備えたことを特徴とする。
さらに、分割領域作成手段は、所定領域内に存在する複数の障害物を、X座標情報の近いもの同士、Y座標情報の近いもの同士に、グループ分けする障害物グループ分け手段と、各障害物の複数の角にそれぞれ識別情報を付与して障害物の角を認識する障害物角認識手段と、X座標情報の近いもの同士としてグループ分けされた一方の障害物の角と他方の障害物の角とを接続する第1の接続線、及び、Y座標情報の近いもの同士としてグループ分けされた一方の障害物の角と他方の障害物の角とを接続する第1の接続線を作成する第1の接続線作成手段と、障害物のうち第1の接続線が接続されていない角と所定領域境界線とを接続する第2の接続線を作成する第2の接続線作成手段と、障害物のうち第1の接続線及び第2の接続線が接続されていない角と既に作成した第1の接続線又は第2の接続線とを接続する第3の接続線を作成する第3の接続線作成手段と、を備えたことを特徴とする。
また、本発明に係る領域区分け処理プログラムは、障害物が存在する所定領域内を複数の領域に区分けする領域区分け処理プログラムであって、コンピュータを、所定領域の位置を示すXY座標情報に基づいて所定領域を区画する所定領域境界線で囲まれた所定領域を作成する所定領域作成手段、所定領域内の障害物の位置を示すXY座標情報に基づいて所定領域内に存在する障害物を区画する障害物領域境界線で囲まれた障害物領域を作成する障害物領域作成手段、所定領域の位置を示すXY座標情報及び所定領域内の障害物の位置を示すXY座標情報を利用して所定領域内を複数の分割領域に分割する所定領域分割手段、として機能させるための領域区分け処理プログラムとした。
さらに、本発明に係る領域区分け処理プログラムは、障害物が存在する所定領域内を複数の領域に区分けする領域区分け処理プログラムであって、コンピュータを、所定領域の位置を示すXY座標情報に基づいて所定領域を区画する所定領域境界線で囲まれた所定領域を作成する所定領域作成手段、所定領域内の障害物の位置を示すXY座標情報に基づいて所定領域内に存在する障害物を区画する障害物領域境界線で囲まれた障害物領域を作成する障害物領域作成手段、所定領域内に存在する複数の障害物を、X座標情報の近いもの同士、Y座標情報の近いもの同士に、グループ分けする障害物グループ分け手段、各障害物の複数の角にそれぞれ識別情報を付与して障害物の角を認識する障害物角認識手段、X座標情報の近いもの同士としてグループ分けされた一方の障害物の角と他方の障害物の角とを接続する第1の接続線、及び、Y座標情報の近いもの同士としてグループ分けされた一方の障害物の角と他方の障害物の角とを接続する第1の接続線を作成する第1の接続線作成手段、障害物のうち第1の接続線が接続されていない角と所定領域境界線とを接続する第2の接続線を作成する第2の接続線作成手段、障害物のうち第1の接続線及び第2の接続線が接続されていない角と既に作成した第1の接続線又は第2の接続線とを接続する第3の接続線を作成する第3の接続線作成手段、複数の各分割領域及び各障害物領域にそれぞれ識別情報を付与して複数の各分割領域を認識する分割領域認識手段、として機能させるための領域区分け処理プログラムとした。
本発明に係る領域区分け装置及び領域区分け処理プログラムによれば、所定領域内の障害物以外の領域を複数の領域に分割して認識できるようにする処理を簡単かつ効率的に行えるようになる。
【図面の簡単な説明】
【0006】
【
図1】移動対象領域及び障害物領域の作成処理(phase1)の説明図。
【
図2】障害物グループ分け処理(phase2)の説明図。
【
図3】障害物角認識処理(phase3)の説明図。
【
図4】障害物間境界線作成処理(phase4)の説明図。
【
図5】分割領域区分け処理(phase5)の説明図。
【
図6】分割領域区分け処理(phase5)の説明図。
【
図7】分割領域認識処理(phase6)の説明図。
【
図8】分割領域認識処理(phase6)の説明図。
【
図9】分割領域認識処理(phase6)の説明図。
【
図10】分割領域認識処理(phase6)の説明図。
【
図11】分割領域認識処理(phase6)の説明図。
【
図13】移動対象領域及び障害物領域の作成処理(phase1)の手順を示すフローチャート。
【
図14】障害物グループ分け処理(phase2)の手順を示すフローチャート。
【
図15】障害物角認識処理(phase3)の手順を示すフローチャート。
【
図16】障害物間境界線作成処理(phase4)の手順を示すフローチャート。
【
図17】分割領域区分け処理(phase5)の手順を示すフローチャート。
【
図18】分割領域認識処理(phase6)の手順を示すフローチャート。
【発明を実施するための形態】
【0007】
実施形態に係る領域区分け装置は、複数の障害物が存在する所定領域内を複数の領域に区分けする領域区分け装置である。
当該領域区分け装置は、所定領域作成手段と、障害物領域作成手段と、所定領域分割手段とを備える。
所定領域作成手段は、所定領域の位置を示すXY座標情報に基づいて所定領域を区画する所定領域境界線で囲まれた所定領域を作成する手段である。
障害物領域作成手段は、所定領域内の障害物の位置を示すXY座標情報に基づいて所定領域内に存在する障害物を区画する障害物領域境界線で囲まれた障害物領域を作成する手段である。
所定領域分割手段は、所定領域の位置を示すXY座標情報及び所定領域内の障害物の位置を示すXY座標情報を利用して所定領域内を複数の分割領域に分割する手段である。
【0008】
所定領域分割手段は、分割領域作成手段と、分割領域認識手段とを備える。
分割領域作成手段は、障害物同士を繋ぐ第1の境界線、障害物と所定領域境界線とを繋ぐ第2の境界線、障害物と第1の境界線又は第2の境界線とを繋ぐ第3の境界線を作成して、所定領域内をこれら境界線で区画することにより、複数の分割領域を作成する手段である。
分割領域認識手段は、複数の各分割領域及び各障害物領域にそれぞれ識別情報を付与して複数の各分割領域を認識する手段である。
【0009】
また、分割領域作成手段は、障害物グループ分け手段と、障害物角認識手段と、第1の接続線作成手段と、第2の接続線作成手段と、第3の接続線作成手段とを備える。
障害物グループ分け手段は、所定領域内に存在する複数の障害物を、X座標情報の近いもの同士、Y座標情報の近いもの同士に、グループ分けする手段である。
障害物角認識手段は、各障害物の複数の角にそれぞれ識別情報を付与して障害物の角を認識する手段である。
第1の接続線作成手段は、X座標情報の近いもの同士としてグループ分けされた一方の障害物の角と他方の障害物の角とを接続する第1の接続線、及び、Y座標情報の近いもの同士としてグループ分けされた一方の障害物の角と他方の障害物の角とを接続する第1の接続線を作成する手段である。
第2の接続線作成手段は、障害物のうち第1の接続線が接続されていない角と所定領域境界線とを接続する第2の接続線を作成する手段である。
第3の接続線作成手段は、障害物のうち第1の接続線及び第2の接続線が接続されていない角と既に作成した第1の接続線又は第2の接続線とを接続する第3の接続線を作成する手段である。
【0010】
上述した移動対象領域作成手段及び障害物領域作成手段により、
図1,
図13に示した移動対象領域及び障害物領域の作成処理(phase1)が実行される。
障害物グループ分け手段により、
図2,
図14に示した障害物グループ分け処理(phase2)が実行される。
障害物角認識手段により、
図3,
図15に示した障害物角認識処理(phase3)が実行される。
第1の接続線作成手段により、
図4,
図16に示した障害物間境界線作成処理(phase4)が実行される。
第2の接続線作成手段及び第3の接続線作成手段により、
図5,
図6,
図17に示した分割領域区分け処理(phase5)が実行される。
分割領域認識手段により、
図7乃至
図11,
図18に示した分割領域認識処理(phase6)が実行される。
【0011】
領域区分け装置を構成する、移動対象領域作成手段、障害物領域作成手段、障害物グループ分け手段、障害物角認識手段、第1の接続線作成手段、第2の接続線作成手段、第3の接続線作成手段、分割領域認識手段は、制御手段により実現され、当該各手段を実行する制御手段は、各手段が実行する処理の手順を示す処理プログラムと、当該処理プログラムによる情報処理を実現するコンピュータ等のハードウエア資源とにより構成される。
換言すれば、実施形態に係る領域区分け装置の各処理は、コンピュータを、移動対象領域作成手段、障害物領域作成手段、障害物グループ分け手段、障害物角認識手段、第1の接続線作成手段、第2の接続線作成手段、第3の接続線作成手段、分割領域認識手段として機能させるための領域区分け処理プログラムにより実現されることになる。
【0012】
当該領域区分け装置による領域区分け処理においては、まず、例えば屋内における所定領域Aとしての例えば床面領域と壁との境界位置における壁の角のXY座標情報、及び、当該所定領域Aとしての床面領域内に存在する障害物Bとしての柱(以下、柱Bという)の角のXY座標情報を、コンピュータに予め入力しておく。これにより、コンピュータは、入力されたXY座標情報を、当該コンピュータが管理する表示画面D上でのXY座標情報に変換して、記憶手段に記録する。
即ち、予めコンピュータに、所定領域Aの位置を示す所定領域のXY座標情報として、床面領域と壁との境界位置における壁の角のXY座標情報と、柱(障害物)Bの位置を示すXY座標情報として、柱Bの角のXY座標情報とを入力しておく。
尚、コンピュータは、当該所定領域A及び柱(障害物)Bを認識して例えば表示画面Dに表示し(
図1参照)、最終的には、所定領域A内に作成されてそれぞれ識別情報としての番号が付与された複数の分割領域E,E…を認識して例えば表示画面Dに表示する(
図7参照)。
【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、断面星形形状の柱B5等の柱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、柱B5参照)、その後、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、柱B5参照)、その後、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、柱B5参照)、その後、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、柱B5参照)、その後、ステップ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乃至
図11とを参照しながら説明する。
尚、
図8では、2つのエリアを塗りつぶし処理にて抽出し、抽出したエリア毎に個別の番号を付けた例を示している。
図9乃至
図11では、複数のエリアを塗りつぶし処理にて抽出し、抽出したエリア毎に個別の番号を昇順に付けた例を示している。
まず、ステップS91では、
図8(a),
図9(a)に示すように、塗りつぶし判定兼エリア番号記録配列ファイル、即ち、所定領域A全体と所定領域Aの周辺を含む領域全体の各XY座標位置を示すXY座標マトリクスStack[Xmax][Ymax]の値を全部0にする。
そして、ステップS92,93,94,95を経て、
図8(b),
図9(b)に示す状態となる。
そして、ステップS97~S107Aを経て、
図8(c)~(f),
図9(c)に示す処理が行われる。
尚、ステップS105A、ステップS107Aは、
図8(e)(f)に示すような凹部がある場合に座標位置を戻して検索する処理である。つまり、この場合、X方向における-方向やY方向における-方向に座標を戻して処理を行うために、当該戻した座標位置を、塗りつぶし管理変数一時保留レジスタに変数mi,mjとして一時的に保留して処理を行うようにしている。
そして、任意のエリアの座標すべてに番号aが付けられた後(ステップS110でYESの場合)、そのエリアが、壁外領域(所定領域A外領域)か、柱内領域が、分割領域かの判定が行われ(ステップS111,112)、その後、次のエリアの番号が更新されて(ステップS113)、次のエリアの塗りつぶし処理に移行していく(
図8(f),(g)、
図9(d)、
図10(a)~(f)、
図11(a)~(d)参照)。
ステップS113でエリア毎に昇順で番号が付けられる。尚、
図9乃至
図11においては、エリアaに番号1が付与され、エリアbに番号2が付与され、エリアcに番号3が付与され、エリアdに番号4が付与され、エリアeに番号5が付与され、エリアfに番号6が付与された例を示している。つまり、各エリア毎に昇順で番号が付けられた例を示している。
【0027】
実施形態によれば、複数の障害物が存在する所定領域内で例えば移動体を移動させる場合や、複数の障害物が存在する所定領域内の位置情報を管理したい場合等において、所定領域内の障害物以外の領域を複数の領域に分割して認識できるようにする処理を簡単かつ効率的に行える領域区分け装置及び領域区分け処理プログラムを提供できるようになった。
また、所定領域が矩形の領域である場合はもちろん、所定領域が矩形以外の領域である場合であっても、所定領域内の障害物以外の領域を複数の領域に分割して認識できるようにする処理を簡単かつ効率的に行えるようになる。
【0028】
例えば、所定領域内を分割した分割領域毎に、
図12に示すような移動体1を自走させることが可能となる。
即ち、領域区分け装置により作成されて認識された所定領域内の各分割領域を移動体1の制御手段50に認識させることによって、当該制御手段50が、移動予定ルート(移動予定情報)に基づいて移動体1の移動を制御するとともに、移動情報取得手段としての例えば自動追尾型のトータルステーション(以下、TSと言う)等により取得される移動体1の実際の移動情報(移動体の逐次位置情報)と移動予定ルート(移動予定情報)とを用いて、移動体1の当該分割領域毎の移動を制御する移動体の移動制御システムを構築できるようになる。つまり、所定領域内の障害物を避けて所定領域内の分割領域毎に移動体1を効率的に移動させることができる移動体の移動制御システムを構築できる。
尚、当該移動体1の移動制御方法としては、例えば、本出願人による発明である特許文献1(特開2020-154400号公報)に開示された移動制御方法を採用すればよい。
【0029】
図12に基づいて移動体1の一例について説明する。尚、以下の説明においては、前、後、上、下、左、右は、
図12に示した方向と定義して説明する。
移動体1は、基体10と、基体10の下側に設けられた移動手段20と、基体10の表面側に設けられたTSの視準となるプリズム等のターゲットT2と、基体10に設けられて移動体1の前側を昇降させる昇降装置40と、制御手段50と、床面Fを撮影するための図外の撮像手段(カメラ)とを備えている。
尚、撮像手段は、例えば、基体10の下面(床面Fと対向する下面)側において、移動体1の左右幅間に亘って延長するように設けられており、移動体1が床面F上を移動した場合に、移動体1の下面の左右幅間に対向する床面Fを撮影できるように構成されている。
【0030】
移動手段20は、例えば、基体10の前側下部に設けられた左右の前側車輪21L,21Rと、基体10の後側下部に設けられた左右の後側車輪22L,22Rと、後側車輪22L,22Rの駆動源としてのモータ23L,23Rと、図外の駆動制御回路とを備える。
尚、モータ23L,23Rの各モータ軸には、それぞれ、後側車輪22L,22Rの回転量に基づいて移動体1の移動距離(移動量)を検出するための移動量検出手段としてのエンコーダ25L,25Rが取付けられている。
【0031】
ターゲットT2は、TSから発射される光を反射させる反射プリズム等で構成される。当該ターゲットT2は、例えば、基体10の上面の前側における左右間の中央位置に設置される。
【0032】
制御手段50は、移動体1の移動方向(進行方向)を変更する際、昇降装置40の図外のリニアアクチュエータのロッドを縮退状態から伸長させて転動体45を床面Fに押し付けることにより基体10の前側を上方に移動させて移動体1の前側車輪21L,21Rを床面Fから浮かせた状態で、左右の後側車輪22L,22Rのモータ23L,23Rを制御して床面Fに接触している左右の後側車輪22L,22Rを互いに反対方向に回転させる。
この場合、移動体1を前進させる回転方向に一方の後側車輪を回転させるとともに、移動体1を後進させる回転方向に他方の後側車輪を回転させることによって、移動体1の回転中心線を回転中心として、左右の後側車輪22L,22Rと転動体45とが床面F上を転動するので、床面F上において、移動体1が回転中心線を回転中心として左方向又は右方向にスムーズに回転する。よって、移動体1の水平方向の向きがスムーズに変更されるようになる。
【0033】
尚、移動体1として、撮像手段(カメラ)を搭載して床面を撮影する撮像手段搭載移動体を例示したが、移動体は、例えば掃除機を搭載して床面を掃除する掃除機搭載移動体等の特定処理機能搭載移動体、又は、特定処理機能を搭載しない移動体であってもよい。
【0034】
また、各実施形態では、所定領域として、建物内の床面を例示したが、所定領域は、建物外の道路や空き地等の面であってもよい。
また、障害物Bは、柱以外の障害物であってもかまわない。
また、所定領域の位置を示す所定領域のXY座標情報や障害物の位置を示すXY座標情報は、角のXY座標情報でなく、所定領域の位置や障害物の位置を確認できるXY座標情報であればよい。
【0035】
また、実施形態では、複数の障害物が存在する所定領域内を複数の分割領域に分割して認識させる例を示したが、1つ以上の障害物が存在する所定領域内を複数の分割領域に分割して認識させるようにしてもよい。即ち、障害物が1つだけ存在する所定領域内を複数の分割領域に分割して認識させるようにしてもよい。
即ち、本発明における領域区分け装置は、1つ以上の障害物が存在する所定領域内を複数の領域に区分けする領域区分け装置であって、所定領域の位置を示すXY座標情報に基づいて所定領域を区画する所定領域境界線で囲まれた所定領域を作成する所定領域作成手段と、所定領域内の障害物の位置を示すXY座標情報に基づいて所定領域内に存在する障害物を区画する障害物領域境界線で囲まれた障害物領域を作成する障害物領域作成手段と、所定領域の位置を示すXY座標情報及び所定領域内の障害物の位置を示すXY座標情報を利用して所定領域内を複数の分割領域に分割する所定領域分割手段とを備えた構成であればよい。
また、この場合、本発明における領域区分け処理プログラムは、1つ以上の障害物が存在する所定領域内を複数の領域に区分けする領域区分け処理プログラムであって、コンピュータを、上述した所定領域作成手段、障害物領域作成手段、所定領域分割手段として機能させるプログラムであればよい。
【符号の説明】
【0036】
A 所定領域、B 柱(障害物)、
C,M,N,Q 境界線(第1,第2,第3の境界線)、E 分割領域。