〔実施形態1〕
以下、本発明の実施の形態について、詳細に説明する。
(ロボット1の構成)
まず、図2を用いて、ロボット(自律走行体)1の構成について説明する。図2は、本発明の実施形態1に係るロボット1の構成を概略的に表す平面図である。ロボット1は、車両型の自律走行が可能な装置であり、床上の予め設定された限られた移動領域内を任意に移動する。ロボット1の一例としては清掃用のロボットであるが、これに限定されるものではなく、例えば、空気清浄機器、撮影機器、各種ロボット機器(例えば、警備ロボット、家事支援ロボット、動物型ロボット等)に対しても本発明を適用することができる。
ロボット1は、箱型の本体11と、1対の対向する駆動輪12a・12bと、キャスタ13とを備える対向2輪型の移動装置である。これらの駆動輪12a・12bとキャスタ13とが本体11を水平に支持する。さらに、本体11の内部には、駆動輪12a・12bをそれぞれ駆動するモータ14a・14bと、駆動輪12a・12bの回転数をそれぞれ検出するためのエンコーダ15a・15bと、駆動輪12a・12bを駆動するための制御信号を作成し、モータ14a・14bにその制御信号を送信する演算部20と、これらの構成要素に電力を供給するためのバッテリー17とが備えられている。なお、図示しないが、演算部20内部に備えられた記憶部であるメモリなどの記憶領域には、制御信号に基づいてロボット1の移動速度や移動方向、移動距離などを制御するためのプログラムとともに、移動領域の形状及び大きさがマップ情報として記憶されている。
さらに、本体11の前面には、ロボット1の進行方向の前方及び側方の環境情報を認識するためのLRF(laser range finder:レーザレンジファインダ)2が設けられている。LRF(センサ部)2は、詳細な構造については省略するが、本体11の前方に対して所定の広がり角度でレーザ光(ビーム)を照射するための光源と、光源より照射されたレーザ光の反射光を受光するための受光部とを備えている。そして、レーザ光を照射した角度と、反射するまでに要した時間とに基づいて、レーザ光を反射した障害物の位置を検出するという、いわゆるTOF(Time of flight)の原理による物体検知(センシング)が行われる。
一例として、LRF12の左右方向の視野は、ロボット1の進行方向前方(Y軸上のプラス方向)を0度とすると左右100度であって、LRF2は1度ごとに距離を計測し、各角度毎に距離データの出力が可能である。つまり、LRF2が計測する距離データ1式は−100度(Xマイナス方向)〜0度〜+100度(Xプラス方向)の合計201件の距離データから構成される。LRF12は、計測周期のたびに、距離データ1式を演算部20へ出力する。LRF12の計測周期は、一例として、50msである。なお、上述した、LEF12が距離データを計測する角度や計測周期は一例であり、上述した数値に限定されるものではない。このLRF2が計測する距離データは後述する。
また、ロボット1は、自己の位置を取得するための自己位置取得部を備えている。この自己位置取得部は、前述したエンコーダ15a・15b及び演算部20とから構成されている。すなわち、エンコーダ15a・15bで検知された駆動輪12a・12bの回転数を演算部20において積算することで、ロボット1の移動した速度や距離などの情報を求め、これらの情報から、移動領域内におけるロボット1の自己位置(オドメトリ位置)を算出する。
そして、これらの自己位置取得部より得られた自己位置候補としての自己位置候補情報は、LRF2により得られる距離データに基づいて適宜修正され、演算部20により、距離データに自己位置を反映させた環境地図が作成される。なお、この環境地図の作成方法については後述する。
このように構成されたロボット1は、1対の駆動輪12a・12bの駆動量をそれぞれ独立に制御することで、直進や曲線移動(旋回)、後退、同じ位置での回転(両車輪の中点を中心とした旋回)などの移動動作を行うことができる。そして、ロボット1は、移動場所を指定する外部に設けられたPC(Personal Computer)等(図示せず)からの指令にしたがって、移動領域内の指定された目的地までの移動経路を自律的に作成し、その移動経路に追従するように移動することで、目的地に到達する。なお、移動経路の自律的な作成は演算部20において実行されるが、ここでは説明を省略する。
(ロボット1の動作)
図1は、本発明の実施形態1に係るロボット1の構成を表すブロック図である。なお、図1では、図2に示した一対の、駆動輪12a・12b、モータ14a・14b及びエンコーダ15a・15bを、それぞれ、駆動輪12、モータ14、及びエンコーダ15と表している。
演算部20は、自己位置検出部21と、環境地図作成部(地図作成部)22と、環境地図ベクトル距離計算部(第1のベクトル作成部)23と、壁距離ベクトル距離計算部(第2のベクトル作成部)24と、合成壁距離ベクトル距離計算部(合成ベクトル作成部)25と、狭路判定部(判定部)26と、走行制御部27とを、機能ブロックとして備えている。当該各機能ブロックの詳細な説明は後述する。
図3は、本発明の実施形態1に係るロボット1と、周囲の壁5との関係を概略的に示した図である。ロボット1の動作を説明する前に、図3を用いて、以降の図面おいて用いる座標、LRF2の位置及び基準位置Eについて説明する。
ロボット1の自己位置を表す基準位置E(後述する)と、周囲の壁5の位置とを表す環境地図M(後述する)上において、図3に示すようにXY座標をとる。
ロボット1の直進方向への延伸軸をY軸とし、直進方向のうちロボット1の前進方向をY軸プラス方向、ロボット1の後進方向をY軸マイナス方向とする。平面視したとき、ロボット1の進行方向と垂直な方向をX軸方向とし、ロボット1から右側へ延びる方向をX軸プラス方向、ロボット1から左側へ延びる方向をX軸マイナス方向とする。
また、以降の説明では、ロボット1に、LRF2の位置と、基準位置Eとの両方又は何れか一方を表す場合がある。
LRF2の位置は、ロボット1が周囲の壁5との距離を計測する基準となる位置である。ロボット1は、LRF2から周囲の壁105までの距離を計測し、自己と壁105との距離を距離データとして演算部20へ出力する。
基準位置Eは、ロボット1が環境地図を作成するための基準位置である。ロボット1は、LRF2が計測したLRF2から周囲の壁105までの距離を表す距離データと、LRF2及び基準位置Eの距離とから、基準位置Eから周囲の壁105までの距離を地図状に表す環境地図を作成する。基準位置Eは、一例として、駆動輪12aと、駆動輪12bとの中間点である。X軸とY軸の交点の位置は、この基準位置Eと一致するものとする。
なお、本実施形態では、ロボット1におけるLRF2が設けられている位置と、基準位置Eとは異なる位置であるが、ロボット1は、平面視したときに、LRF2の位置と、基準位置Eとが同じ位置となるようにLRF2が配されていてもよい。
次に、図1に示したロボット1の各構成が行う処理について、ロボット1の動作と共に順に説明する。
<距離データ測定>
図4は、ロボット1のLRF2がレーザ光を照射している様子を表す図である。図5はLRF2が周囲の壁5の位置を特定している様子を表す図である。図6は、LRF2が検出した距離データを表す図である。
図1に示すLRF2は、複数方向へレーザ光を照射することで、ロボット1と、ロボット1の周囲の壁5の位置との距離を計測するものである。これによって、LRF2は、ロボット1の周囲の壁5の位置を特定する。
図4に矢印Aとして示すように、ロボット1のLRF2は、レーザ光を放射状に照射する。そして、図5に示すように、LRF2は、各角度毎に、レーザ光の反射光を受光するまでに要した時間を算出し、点Pに示すように、各角度毎に壁5の位置を検出する。図6に示すように、LRF2は、LRF2の位置から、各点Pに示される各角度毎の壁5の位置までの距離によって、壁5などの障害物の形状が表された距離データを環境地図作成部22へ出力する。
<自己位置候補の算出>
図1に示す自己位置検出部21は、エンコーダ15から、駆動輪12の回転数を示す回転数情報を取得すると、当該回転数情報が示すエンコーダ15の回転数から、オドメトリにより、移動領域内における自己位置を表す候補である自己位置候補を算出する。自己位置検出部21は、算出した自己位置候補を示す自己位置候補情報を環境地図作成部22へ出力する。
<環境地図作成及び環境地図ベクトル距離計算>
図7は、ロボット1が環境地図ベクトルを作成している様子を表す図である。
図1に示す環境地図作成部22は、LRF2から距離データを取得し、自己位置検出部21から自己位置候補情報を取得すると、ロボット1の周囲の壁5の位置と、自己位置である基準位置Eとを示す環境地図Mを作成するものである。
図7に示すように、環境地図作成部22は、LRF2から取得した距離データと、自身が把握しているLRF2の地図(座標)上の位置、及び、自己位置検出部21から取得した自己位置候補情報が示す自己位置から、地図上の基準位置Eを特定する。次に、環境地図作成部22は、LRF2の位置から各点P(各角度毎の壁5の位置)までの距離を示していた距離データから、基準位置Eから、各点P(各角度毎の壁5の位置)までの距離により壁5の形状が表された環境地図Mを作成する。この環境地図Mは、ロボット1の周囲の壁5の形状と、ロボット1の自己位置を表す基準位置Eとが表された地図である。
なお、環境地図Mは、ロボット1の移動を伴って得られる、LRF2の複数の距離データを合成して作成されてもよい。この複数の距離データを合成して環境地図を得る方法は、後述する実施形態2にて説明する。
環境地図作成部22は、作成した環境地図Mを表す環境地図情報を環境地図ベクトル距離計算部23へ出力する。
図1に示す環境地図ベクトル距離計算部23は、環境地図作成部22から取得した環境地図情報が示す環境地図Mに基づき、基準位置Eから壁5の位置である各点Pまで延びる複数の環境地図ベクトル(第1のベクトル)Cを作成するものである。
図7に示すように、環境地図ベクトル距離計算部23は、環境地図情報が示す環境地図Mに基づき、基準位置Eから、各点Pへの方向に向く環境地図ベクトルCを、各方位毎に作成する。当該環境地図ベクトルCの作成によって、各方位毎における基準位置Eから各点Pまでの距離である環境地図ベクトル距離が計算される。環境地図ベクトル距離計算部23は、各点P毎に作成した環境地図ベクトルCを示す環境地図ベクトル情報を壁距離ベクトル距離計算部24へ出力する。
なお、環境地図ベクトル距離計算部23は、全ての点Pにおける環境地図ベクトルCを作成するのではなく、データ量を少なくするために、適宜、間引いて環境地図ベクトルCを作成してもよい。
また、環境地図ベクトル距離計算部23は、ロボット1の前方及び左右方向の全方向における環境地図ベクトルCを作成するのではなく、目的に応じて、環境地図ベクトルCを作成する方向を限定してもよい。例えば、ロボット1の前方の環境地図ベクトルCは、狭路判定に不要である場合、除外することもできる。このロボット1の前方の環境地図ベクトルCの作成を除外した場合を、後述する実施形態3にて説明する。
<壁距離ベクトル距離計算>
図8は、ロボット1が壁距離ベクトルを作成している様子を表す図である。図9は、環境地図ベクトルから壁距離ベクトルを作成するための基準距離を表す図である。図10は、ロボット1が右合成壁距離ベクトルを作成している様子を表す図である。図11は、ロボット1が左合成壁距離ベクトルを作成している様子を表す図である。
図1に示す壁距離ベクトル距離計算部24は、環境地図ベクトル距離計算部23から取得した環境地図ベクトル情報が示す環境地図ベクトルCのうち、所定の基準距離Bより短い環境地図ベクトルCR1〜CR4(図10参照)及び環境地図ベクトルCL1・CL2(図11参照)それぞれについて、環境地図ベクトルCR1〜CR4・CL1・CL2それぞれの延伸方向であって、環境地図ベクトルCR1〜CR4・CL1・CL2と基準距離Bとの差分だけ基準位置Eから離れる向きに延びる壁距離ベクトル(第2のベクトル)Dを作成するものである。
図8及び図9に示すように、壁距離ベクトル距離計算部24は、環境地図ベクトル距離計算部23から環境地図ベクトル情報を取得すると、各点P毎の環境地図ベクトルCに、予め設定された所定の基準距離Bを反映させた壁距離ベクトルDを作成することで、当該壁距離ベクトルDが示す距離である壁距離ベクトル距離を計算する。
基準距離Bは、ロボット1が、周囲の壁5などの障害物と接触せず、確実に、走行したり、旋回したりするために必要な幅を示す安全距離である。基準距離Bは、ロボット1の形状や駆動輪12の位置などを考慮して、予め情報として壁距離ベクトル距離計算部24に記憶しておけばよい。なお、基準距離Bは、ベクトルではなく、方向を持たない長さである。
壁距離ベクトルDが示す距離は、ロボット1から壁5などの周囲の障害物までの距離(環境地図ベクトル距離)に、ロボット1の安全距離(基準距離B)を反映させた距離である。このように、環境地図ベクトルCではなく壁距離ベクトルDを用いて、ロボット1と、周囲の壁5等の障害物との距離を把握することで、ロボット1が通過しようとする通路が、単にロボット1が進入可能な幅を有するか否かの判定だけではなく、進入した通路内で旋回が可能な安全距離の幅を有するか否かも判定することができる。
図9に示すように、壁距離ベクトル距離計算部24は、環境地図ベクトルCから基準距離Bを減算することで、壁距離ベクトルDを作成する。
図8に示すように、ロボット1の基準位置Eと、点Pを考慮すると、壁距離ベクトル距離計算部24は、基準位置Eから、環境地図ベクトルCとは逆向きに、(基準距離B) − (環境地図ベクトル距離)の大きさのベクトルである壁距離ベクトルDを作成する。基準位置Eから点Pまでの距離が遠ければ、環境地図ベクトルCは長くなり、壁距離ベクトルDは短くなる。逆に、基準位置Eから点Pまでの距離が近ければ、環境地図ベクトルCは短くなり、壁距離ベクトルDは長くなる。
ただし、(基準距離B) − (環境地図ベクトル距離) < 0の場合、壁距離ベクトル距離計算部24は、壁距離ベクトルDの大きさを0とする。これについて、図10及び図11を用いて説明する。
図10に、環境地図Mを用いて作成された右側の環境地図ベクトルを示す。図10には、各点Pの例として、基準位置Eを中心に反時計回りに、点P1〜点P13を示している。点P7は、ロボット1の進行方向前方に位置し、Y軸上にある点であるとする。点P1〜点P6はロボット1の右側方及び右前方の壁5の位置(基準位置EよりXプラス方向に位置する点P)を表している。このうち点P5〜点7は、基準位置Eとの距離が、基準距離Bより遠いものとする。
環境地図ベクトル距離計算部23は、基準位置Eから、点P1〜点P6それぞれまでの環境地図ベクトルCである環境地図ベクトルCR1〜CR6を作成する。
壁距離ベクトル距離計算部24は、環境地図ベクトル距離計算部23が作成した環境地図ベクトルCR1〜CR6のうち、長さが基準距離Bより短い環境地図ベクトルCR1〜CR4それぞれについて、基準距離Bを減算した差を演算し、基準位置Eから、当該差分の長さであって、環境地図ベクトルCR1〜CR4とは逆向きの壁距離ベクトルDそれぞれである壁距離ベクトルDR1〜DR4を作成する。
壁距離ベクトルDR1は、環境地図ベクトルCR1とは逆向きに、基準距離Bと環境地図ベクトルCR1との差分だけ、基準位置Eから延びるベクトルである。壁距離ベクトルDR2は、環境地図ベクトルCR2とは逆向きに、基準距離Bと環境地図ベクトルCR2との差分だけ、基準位置Eから延びるベクトルである。壁距離ベクトルDR3は、環境地図ベクトルCR3とは逆向きに、基準距離Bと環境地図ベクトルCR3との差分だけ、基準位置Eから延びるベクトルである。壁距離ベクトルDR4は、環境地図ベクトルCR4とは逆向きに、基準距離Bと環境地図ベクトルCR4との差分だけ、基準位置Eから延びるベクトルである。
壁距離ベクトル距離計算部24は、環境地図ベクトル距離計算部23が作成した環境地図ベクトルCR1〜CR6のうち、基準距離Bより長い環境地図ベクトルCR5・CR6については、壁距離ベクトルDの大きさを0とし、それぞれに対応する壁距離ベクトルDを作成しない。
図11に示すように、環境地図Mを用いて作成された左側の環境地図ベクトルについても同様である。図11に示すように、点P8〜点P13はロボット1の左前方及び左側方の壁5の位置(基準位置EよりXマイナス方向に位置する点P)を表している。このうち点P8〜点11は、基準位置Eとの距離が、基準距離Bより遠いものとする。
環境地図ベクトル距離計算部23は、点P13〜点P8それぞれについての環境地図ベクトルCである環境地図ベクトルCL1〜CL6を作成する。
壁距離ベクトル距離計算部24は、環境地図ベクトル距離計算部23が作成した環境地図ベクトルCL1〜CL6のうち、長さが基準距離Bより短い環境地図ベクトルCL1〜CL2それぞれについて、基準距離Bを減算した差を演算し、基準位置Eから、当該差分の長さであって、環境地図ベクトルCL1〜CL2とは逆向きの壁距離ベクトルDそれぞれである壁距離ベクトルDL1・DL2を作成する。
壁距離ベクトルDL1は、環境地図ベクトルCL1とは逆向きに、基準距離Bと環境地図ベクトルCL1との差分だけ、基準位置Eから延びるベクトルである。壁距離ベクトルDL2は、環境地図ベクトルCL2とは逆向きに、基準距離Bと環境地図ベクトルCL2との差分だけ、基準位置Eから延びるベクトルである。
壁距離ベクトル距離計算部24は、環境地図ベクトル距離計算部23が作成した環境地図ベクトルCL1〜CL6のうち、基準距離Bより長い環境地図ベクトルCL3〜CL6については、壁距離ベクトルDの大きさを0とし、それぞれに対応する壁距離ベクトルDを作成しない。
このように、壁距離ベクトル距離計算部24は、壁距離ベクトルD(ここでは壁距離ベクトルDR1〜DR4・DL1・DL2)を作成することによって、壁距離ベクトルD(ここでは壁距離ベクトルDR1〜DR4・DL1・DL2)の長さである壁距離ベクトル距離をそれぞれ計算する。
壁距離ベクトル距離計算部24は、このように作成した壁距離ベクトルD(ここでは壁距離ベクトルDR1〜DR4・DL1・DL2)を示す情報である壁距離ベクトル情報を合成壁距離ベクトル距離計算部25へ出力する。
なお、本実施形態では、図9に示したように、壁距離ベクトルDの長さを示す壁距離ベクトル距離を、長さが一定である基準距離Bを用いて、(基準距離B) − (環境地図ベクトルCの長さ)により演算したが、壁距離ベクトル距離の演算方法はこれに限定されず、例えば、基準距離Bを方向によって変化させてもよいし、さらに、ロボット1の走行状態に応じて、基準距離Bを動的に変化させてもよい。
<合成壁距離ベクトル距離計算>
図1に示す合成壁距離ベクトル距離計算部25は、壁距離ベクトル情報を壁距離ベクトル距離計算部24から取得すると、壁距離ベクトル情報が示す壁距離ベクトルDのうち、X軸方向(左右方向)の成分ベクトルの向きが同じベクトル同士(図10に示す壁距離ベクトルDR1〜DR4同士と、図11に示す壁距離ベクトルDL1・DL2同士)を合成し、互いの向きが異なる右合成壁距離ベクトル(第1の合成ベクトル)FRと、左合成壁距離ベクトル(第2の合成ベクトル)FLとを作成するものである。
図10及び図11に示すように、合成壁距離ベクトル距離計算部25は、壁距離ベクトル距離計算部24から、壁距離ベクトル情報を取得すると、左右の合成壁距離ベクトルを作成する。
図10に示すように、合成壁距離ベクトル距離計算部25は、壁距離ベクトル距離計算部24から取得した壁距離ベクトル情報のうち、ロボット1の右側の壁距離ベクトルDR1〜DR4を合成することで、右合成壁距離ベクトルFRを作成する。
図11に示すように、合成壁距離ベクトル距離計算部25は、壁距離ベクトル距離計算部24から取得した壁距離ベクトル情報のうち、ロボット1の左側の壁距離ベクトルDL1・DL2を合成することで、左合成壁距離ベクトルFLを作成する。
ここで、合成壁距離ベクトル距離計算部25が行う合成は、壁距離ベクトルDR1〜DR4の代表ベクトル及び壁距離ベクトルDL1・DL2の代表ベクトルを作成することである。合成壁距離ベクトル距離計算部25は、壁距離ベクトルDR1〜DR4及び壁距離ベクトルDL1・DL2それぞれを足し合わせることで、右合成壁距離ベクトルFR及び左合成壁距離ベクトルFLを作成する。
右合成壁距離ベクトルFR及び左合成壁距離ベクトルFLは、ロボット1から左右及び前方の壁までの距離が近いほど長くなる。
そして、合成壁距離ベクトル距離計算部25は、右合成壁距離ベクトルFR及び左合成壁距離ベクトルFLを示す情報である左右合成壁距離ベクトル情報を狭路判定部26へ出力する。
<狭路判定>
図1に示す狭路判定部26は、合成壁距離ベクトル距離計算部25から左右合成壁距離ベクトル情報を取得すると、左右合成壁距離ベクトル情報が示す右合成壁距離ベクトルFR及び左合成壁距離ベクトルFLそれぞれのX軸方向(左右方向)の成分ベクトルである左右方向成分ベクトルFRa及び左右方向成分ベクトルFLaを抽出し、左右方向成分ベクトルFRa及び左右方向成分ベクトルFLaの絶対値の和が、予め設定された所定の第1の閾値を超えるか否かを判定するものである。このようにして、狭路判定部26は、ロボット1が通過しようとする通路が、狭路であるか否かの狭路判定を行う。
図12は、ロボット1が狭路判定を行っている様子を表す図である。図12に示すように、狭路判定部26は、合成壁距離ベクトル距離計算部25から左右合成壁距離ベクトル情報を取得すると、右合成壁距離ベクトルFRを、左右方向成分ベクトルFRaと、前後方向成分ベクトルFRbとに分解する。また、狭路判定部26は、左合成壁距離ベクトルFLを、左右方向成分ベクトルFLaと、前後方向成分ベクトルFLbとに分解する。
そして、狭路判定部26は、左右方向成分ベクトルFRaと、左右方向成分ベクトルFLaとの絶対値の和を演算し、当該絶対値の和が、予め設定された所定の第1の閾値を超えるか否かを判定する。
狭路判定部26は、上記絶対値の和が、上記所定の第1の閾値を超えた場合、ロボット1が走行する通路は狭路であると判定する。一方、狭路判定部26は、上記絶対値の和が、上記所定の第1の閾値以下である場合、ロボット1が走行する通路は狭路ではないと判定する。
狭路判定部26は、狭路であるか否かを判定した判定結果を、走行制御部27へ出力する。これにより、走行制御部27は、ロボット1が適切に走行するように、モータ14の回転速度を制御する。
なお、狭路判定部26は、狭路判定をする際、左右方向成分ベクトルFRaと、左右方向成分ベクトルFLaとのそれぞれの絶対値の和が、上記所定の第1の閾値を超える場合、狭路と判定していたが、これに限定されず、さらに、前後方向成分ベクトルFRb・FLbを狭路判定に含めてもよい。この前後方向成分ベクトルLRb・FLbを狭路判定に含める場合を後述する実施形態4として説明する。
(ロボット1による利点)
ロボット1によると、図27及び図28を用いて説明した、左右それぞれ一方向にのみ障害物との距離を計測した結果から狭路判定をする自律走行ロボット201とは異なり、狭路判定部26は、合成壁距離ベクトル距離計算部25が複数の壁距離ベクトルDを合成することで作成した右合成壁距離ベクトルFR及び左合成壁距離ベクトルFLのX軸方向成分である左右方向成分ベクトルFRa及び左右方向成分ベクトルFLaの絶対値の和が、所定の第1の閾値を超えるか否かを判定している。これによって、狭路判定部26は狭路判定をしている。このため、LRF2が特定した左右方向の壁5の位置(点Pの位置)が平均化される。
これにより、ロボット1が通過する通路幅を計測するに際し、通路中において、ロボット1の直進方向に平行な方向の距離が短く、一時的に通路幅が狭くなっているに過ぎない箇所であるボトルネック部分や、たまたま、通路中に存在することで通路幅が狭くなっているに過ぎない動的障害物などが存在する部分の通路幅を計測したとしても、これら、ボトルネック部分や、動的障害物などが存在する部分によって、通路全体が、自装置が確実に通過や旋回ができない狭路であると判定してしまうことを防止することができる。このため、ロボット1は、正確に狭路判定を行うことができる。
加えて、ロボット1において狭路判定部26は、複数の環境地図ベクトルCを合成した合成ベクトルによって狭路判定をするのではない。
すなわち、壁距離ベクトル距離計算部24が、複数の環境地図ベクトルCのうち所定の基準距離Bより短い環境地図ベクトルCR1〜CR4・DL1・DL2それぞれについて、環境地図ベクトルCR1〜CR4・DL1・DL2の延伸方向であって、環境地図ベクトルCR1〜CR4・DL1・DL2と基準距離Bとの差分だけ基準位置Eから離れる向きに延びる壁距離ベクトルDを作成する。そして、合成壁距離ベクトル距離計算部25は、壁距離ベクトルDのうち、X軸方向の成分ベクトルの向きが同じである、壁距離ベクトルDR1〜DR4同士を合成することで右合成壁距離ベクトルFRを作成し、壁距離ベクトルDL1・DL2同士を合成することで、左合成壁距離ベクトルFLを作成する。
そして、狭路判定部26は、この右合成壁距離ベクトルFRの左右方向成分ベクトルFRaを抽出し、左合成壁距離ベクトルFLの左右方向成分ベクトルFLaを抽出し、左右方向成分ベクトルFRaの絶対値と、左右方向成分ベクトルFLaの絶対値の和が、所定の第1の閾値を超えるか否かを判定する。このようにして、狭路判定部26は、狭路判定を行っている。
基準距離Bを、ロボット1が確実に通過や旋回できる安全距離とすることで、狭路判定部26は、安全距離を確保して狭路判定をすることができる。この結果、ロボット1は、通路を確実に通過したり、通路内で旋回したりすることができるため、より安全に、通路を進行することができる。
図13は、一定の長さLYを有する複数の障害物5A・5B間をロボット1が走行している様子を表す図である。
上述のように、ロボット1は、通路中において、ボトルネック部分や動的障害物が存在する部分など、ロボット1の進行方向に平行な距離が短い障害物によって旋回できない部分が構成されていても狭路と判定しない。
換言すると、狭路判定部26は、ロボット1が障害物5A・5B間を通過する場合、障害物5A・5Bにおけるロボット1の進行方向に平行な長さである長さLYが、所定の長さを超えるか否かを判定する。そして、障害物5A・5Bの長さLYが、所定の長さを超えると狭路判定部26が判定した場合、障害物5A・5B間の通路は、狭路であるため、走行制御部27は、モータ14を停止させることでロボット1の進行を停止させる。
この具体的な処理の一例を説明する。上述した狭路判定部26は、ロボット1が所定距離移動するたびに、右合成壁距離ベクトルFR及び左合成壁距離ベクトルFLそれぞれの左右方向成分ベクトルFRa・FLaの絶対値の和が、上記第1の閾値を超えるか否かを判定する。
このため、狭路判定部26は、右合成壁距離ベクトルFR及び左合成壁距離ベクトルFLそれぞれの左右方向成分ベクトルFRa・FLaの絶対値の和が、所定回数、連続して上記第1の閾値を超えると判定した場合、その旨を走行制御部27へ出力し、走行制御部27がモータ14を停止させることで、ロボット1の走行を停止させる。
これにより、ロボット1が通過する通路幅が狭くなっている部分である障害物5A・5Bの長さLYが、一定の距離以上続いているか否かを正確に判定することができるため、障害物5A・5Bの長さLYが、所定の長さを超えるほど続いている場合にだけ、障害物5A・5B間が狭路であると判定し、ロボット1を安全に停止させることができる。
狭路判定部26は、右合成壁距離ベクトルFR及び左合成壁距離ベクトルFLそれぞれの左右方向成分ベクトルFRa・FLaの絶対値の和が、所定回数、連続して上記第1の閾値を超えないと判定すると、長さLYは一定の距離未満であるとみなし、ロボット1の走行を停止させず、そのまま障害物5A・5B間を通過させる。
〔実施形態2〕
本発明の実施形態2について、図14〜図17に基づいて説明すれば、以下のとおりである。なお、説明の便宜上、上記実施形態1にて説明した部材と同じ機能を有する部材については、同じ符号を付記し、その説明を省略する。
図14は、本発明の実施形態2に係るロボット1Aの構成を表すブロック図である。ロボット1Aは、ロボット1(図1)が備えていた演算部20に換えて演算部20Aを備える点で、ロボット1と相違する。ロボット1Aの他の構成はロボット1と同様である。
演算部20Aは、演算部20が備えていた環境地図ベクトル距離計算部23、壁距離ベクトル距離計算部24、合成壁距離ベクトル距離計算部25及び狭路判定部26に換えて、環境地図ベクトル距離計算部23A、壁距離ベクトル距離計算部24A、合成壁距離ベクトル距離計算部25A及び狭路判定部26Aを備え、さらに、合成環境地図作成部(合成地図作成部)28Aを備えている。演算部20Aの他の構成は演算部20と同様である。
図15は、ロボット1Aが移動している様子を表す図である。図15に示すように、ある時刻t1の位置におけるロボット1AのLRF2及び基準位置Eを、LRF2t1及び基準位置Et1とする。そして、時刻t1から所定時間が経過した時刻t2において、時刻t1の位置から矢印G1だけ移動した位置におけるロボット1AのLRF2及び基準位置Eを、LRF2t2及び基準位置Et2とする。さらに、時刻t2から所定時間が経過した時刻t3において、時刻t2の位置から矢印G2だけ移動した位置におけるロボット1AのLRF2及び基準位置Eを、LRF2t3及び基準位置Et3とする。
図16は、本発明の実施形態2に係るロボット1Aが作成する合成環境地図M0を表す図である。
環境地図作成部22は、逐次、LRF2から距離データを取得すると共に、自己位置検出部21から自己位置候補情報を取得する。環境地図作成部22は、ロボット1が所定の距離を移動する度に、LRF2から取得した距離データと、自己位置検出部21から取得した自己位置候補情報とから、環境地図を作成していく。環境地図作成部22は、ロボット1Aの移動量を、エンコーダ15から取得する回転数から演算する。
図16に示すように、時刻t1のとき、環境地図作成部22は、そのときの基準位置Et1と、LRF2が計測した距離データが示す各角度毎の壁5の位置である点P11〜P18とから、環境地図M1を作成し、作成した環境地図M1を表す環境地図情報を合成環境地図作成部28Aへ出力する。
そして、ロボット1が所定の距離を移動し、時刻t2のとき、環境地図作成部22は、そのときの基準位置Et2と、LRF2が計測した距離データが示す各角度毎の壁5の位置である点P21〜P26とから、環境地図M2を作成し、作成した環境地図M2を表す環境地図情報を合成環境地図作成部28Aへ出力する。
さらに、ロボット1が所定の距離を移動し、時刻t3のとき、環境地図作成部22は、そのときの基準位置Et3と、LRF2が計測した距離データが示す各角度毎の壁5の位置である点P31〜P35とから、環境地図M3を作成し、作成した環境地図M2を表す環境地図情報を合成環境地図作成部28Aへ出力する。
なお、各時刻におけるLRF2が計測する各点の個数は任意で設定すればよい。また、各時刻において環境地図作成部22が環境地図を作成する方法は、実施形態1で説明したものと同様である。
図16に示すように、合成環境地図作成部28Aは、環境地図作成部22から環境地図M1〜M3を取得すると、環境地図M1に示された点P11〜点P18によって表された形状と、環境地図M2に示された点P21〜点P26によって表された形状と、環境地図M3に示された点P31〜点P35によって表された形状とを重ね合せることで、環境地図M1〜M3が合成された合成環境地図M0を作成する。合成環境地図作成部28Aは、作成した合成環境地図M0を表す合成環境地図情報を環境地図ベクトル距離計算部23Aへ出力する。
合成環境地図作成部28Aは、環境地図作成部22から所定の個数の環境地図を取得する度に、合成環境地図を作成する。換言すると、合成環境地図作成部28Aは、ロボット1が所定の距離を移動する度に、複数の環境地図を合成し、合成環境地図(合成地図)M0を作成する。なお、図16の例では、合成環境地図作成部28Aは、3個の環境地図M1〜M3から1つの合成環境地図M0を作成しているが、1つの合成環境地図M0を構成する環境地図の個数は、3個に限定されるものではなく2個であってもよいし、4個以上であってもよい。
環境地図ベクトル距離計算部23Aは、合成環境地図情報が示す合成環境地図M0に基づき、各基準位置Et1・Et2・Et3毎に、所定の個数分の各点への方向に向く環境地図ベクトルを作成する。図16の例では、環境地図ベクトル距離計算部23Aは、基準位置Et1から点P11〜点P18それぞれへ向く環境地図ベクトルを作成し、基準位置Et2から点P21〜点P26それぞれへ向く環境地図ベクトルを作成し、基準位置Et3から点P31〜点P35それぞれの方へ向く環境地図ベクトルを作成している。
環境地図ベクトル距離計算部23Aが、各基準位置Et1〜Et3毎に環境地図ベクトルを作成することによって、基準位置Et1から各点P11〜点P18までの距離である環境地図ベクトル距離、基準位置Et2から各点P21〜点P26までの距離である環境地図ベクトル距離、基準位置Et3から各点P31〜点P35までの距離である環境地図ベクトル距離が計算される。環境地図ベクトル距離計算部23Aは、各基準位置Et1〜Et3毎に作成した環境地図ベクトルを示す環境地図ベクトル情報を壁距離ベクトル距離計算部24Aへ出力する。
壁距離ベクトル距離計算部24Aは、環境地図ベクトル距離計算部23Aから環境地図ベクトル情報を取得すると、各基準位置Et1〜Et3毎に、図8〜図11を用いて説明した方法により、(基準距離B) − (環境地図ベクトル距離)の大きさのベクトルを壁距離ベクトルとして作成する。壁距離ベクトルの向きは、環境地図ベクトルの向きとは逆向きになる。基準位置Et1〜Et3における環境地図ベクトルが長ければ、壁距離ベクトルは短くなる。逆に、基準位置Et1〜Et3における環境地図ベクトルが短ければ、壁距離ベクトルは長くなる。
壁距離ベクトル距離計算部24Aは、各基準位置Et1〜Et3毎に作成した壁距離ベクトルを示す情報である壁距離ベクトル情報を合成壁距離ベクトル距離計算部25Aへ出力する。
図17は、ロボット1Aが各基準位置Et1〜Et3毎に合成壁距離ベクトルを作成している様子を表す図である。なお、図17では、図16で表した点P11〜P18、点P21〜点P26及び点P31〜点P35を、単に点Pとして表している。
合成壁距離ベクトル距離計算部25Aは、壁距離ベクトル距離計算部24Aから、壁距離ベクトル情報を取得すると、各基準位置Et1〜Et3毎に、図10及び図11を用いて説明した方法により、左右の合成壁距離ベクトルを作成する。
基準位置Et1において、合成壁距離ベクトル距離計算部25Aは、図10を用いて説明した方法により、ロボット1Aの右側の壁距離ベクトルを合成することで、右合成壁距離ベクトルFRt1を作成する。また、合成壁距離ベクトル距離計算部25Aは、図11を用いて説明した方法により、ロボット1Aの左側の壁距離ベクトルを合成することで、左合成壁距離ベクトルFLt1を作成する。
さらに、基準位置Et2において、合成壁距離ベクトル距離計算部25Aは、図10を用いて説明した方法により、ロボット1Aの右側の壁距離ベクトルを合成することで、右合成壁距離ベクトルFRt2を作成する。また、合成壁距離ベクトル距離計算部25Aは、図11を用いて説明した方法により、ロボット1Aの左側の壁距離ベクトルを合成することで、左合成壁距離ベクトルFLt2を作成する。
そして、基準位置Et3において、合成壁距離ベクトル距離計算部25Aは、図10を用いて説明した方法により、ロボット1Aの右側の壁距離ベクトルを合成することで、右合成壁距離ベクトルFRt3を作成する。また、合成壁距離ベクトル距離計算部25Aは、図11を用いて説明した方法により、ロボット1Aの左側の壁距離ベクトルを合成することで、左合成壁距離ベクトルFLt3を作成する。
次に、合成壁距離ベクトル距離計算部25Aは、各基準位置Et1〜Et3における右合成壁距離ベクトルFRt1〜FRt3及び左合成壁距離ベクトルFLt1〜FLt3を示す情報である左右合成壁距離ベクトル情報を狭路判定部26Aへ出力する。
狭路判定部26Aは、合成壁距離ベクトル距離計算部25Aから左右合成壁距離ベクトル情報を取得すると、各基準位置Et1〜Et3毎に、右合成壁距離ベクトル及び左合成壁距離ベクトルをそれぞれ、左右方向ベクトルと、前後方向ベクトルとに分解し、各基準位置Et1〜Et3毎に左右方向ベクトルの絶対値の和を演算し、当該絶対値の和が、予め設定された所定の閾値を超えるか否かを判定する。これにより、狭路判定部26Aは、各基準位置Et1〜Et3毎に、ロボット1Aが走行している通路は狭路であるか否かを判定する。
具体的には、狭路判定部26Aは、基準位置Et1において、右合成壁距離ベクトルFRt1を、左右方向成分ベクトルFRt1aと、前後方向成分ベクトルFRt1bとに分解する。また、狭路判定部26Aは、左合成壁距離ベクトルFLt1を、左右方向成分ベクトルFLt1aと、前後方向成分ベクトルFLt1bとに分解する。
そして、狭路判定部26Aは、左右方向成分ベクトルFRt1aと、左右方向成分ベクトルFLt1aとの絶対値の和を演算し、当該絶対値の和が、予め設定された所定の閾値を超えるか否かを判定する。
狭路判定部26Aは、上記絶対値の和が、上記所定の第1の閾値を超えた場合、ロボット1Aが走行している通路は狭路であると判定する。一方、狭路判定部26Aは、上記絶対値の和が、上記所定の第1の閾値以下である場合、ロボット1Aが走行している通路は狭路ではないと判定する。
また、狭路判定部26Aは、基準位置Et2において、右合成壁距離ベクトルFRt2を、左右方向成分ベクトルFRt2aと、前後方向成分ベクトルFRt2bとに分解する。また、狭路判定部26Aは、左合成壁距離ベクトルFLt2を、左右方向成分ベクトルFLt2aと、前後方向成分ベクトルFLt2bとに分解する。
そして、狭路判定部26Aは、左右方向成分ベクトルFRt2aと、左右方向成分ベクトルFLt2aとの絶対値の和を演算し、当該絶対値の和が、予め設定された所定の第1の閾値を超えるか否かを判定する。
狭路判定部26Aは、上記絶対値の和が、上記所定の第1の閾値を超えた場合、ロボット1Aが走行している通路は狭路であると判定する。一方、狭路判定部26Aは、上記絶対値の和が、上記所定の第1の閾値以下である場合、ロボット1Aが走行している通路は狭路ではないと判定する。
さらに、狭路判定部26Aは、基準位置Et3において、右合成壁距離ベクトルFRt3を、左右方向成分ベクトルFRt3aと、前後方向成分ベクトルFRt3bとに分解する。また、狭路判定部26Aは、左合成壁距離ベクトルFLt3を、左右方向成分ベクトルFLt3aと、前後方向成分ベクトルFLt3bとに分解する。
そして、狭路判定部26Aは、左右方向成分ベクトルFRt3aと、左右方向成分ベクトルFLt3aとの絶対値の和を演算し、当該絶対値の和が、予め設定された所定の第1の閾値を超えるか否かを判定する。
狭路判定部26Aは、上記絶対値の和が、上記所定の第1の閾値を超えた場合、ロボット1Aが走行している通路は狭路であると判定する。一方、狭路判定部26Aは、上記絶対値の和が、上記所定の第1の閾値以下である場合、ロボット1Aが走行している通路は狭路ではないと判定する。
狭路判定部26Aは、狭路であるか否かを判定した判定結果を、走行制御部27へ出力する。これにより、走行制御部27は、ロボット1Aが適切に走行するように、モータ14の回転速度を制御する。
このように、ロボット1Aによると、時刻t1〜t3の各基準位置Et1〜Et3(第1の地点〜第3の地点)において、LRF2が周囲の壁5の位置を特定できない死角が存在したとしても、環境地図ベクトル距離計算部23は、環境地図M1が示す壁5の位置である点P11〜P18と、環境地図M2が示す壁5の位置である点P21〜P26と、環境地図M3が示す壁5の位置である点P31〜P35とに基づいて、複数の環境地図ベクトルCをそれぞれ作成するため、より正確に、基準位置Eと、周囲の壁5の位置(各点P)との位置関係を把握することができる。このため、ロボット1Aは、さらに正確に、狭路判定を行うことができる。
ここで、上述のように、基準位置Eの移動量は、駆動輪12の回転数をエンコーダ15が計測した情報が加味されて得られている。駆動輪12の滑り量は計測できないため、ロボット1Aの移動距離が長くなると、ロボット1Aが実際に移動した量と、エンコーダ15が計測した回転数から環境地図作成部22が演算したロボット1Aの移動量との間に誤差が生じる。しかし、滑りが大きい床環境を除いて、単距離であれば累積誤差は小さいため、これを利用して、環境地図を一定距離移動した区間毎にLRF2が計測した距離データに基づいて合成環境地図M0を作成することができる。この合成環境地図M0を利用することによって、各地点においてLRF2に死角があっても、過去のLRF2が計測した距離データによって補うことができる。
〔実施形態3〕
本発明の実施形態3について、図18〜図20に基づいて説明すれば、以下のとおりである。なお、説明の便宜上、上記実施形態1、2にて説明した部材と同じ機能を有する部材については、同じ符号を付記し、その説明を省略する。
図18は、本発明の実施形態3に係るロボット1Bの構成を表すブロック図である。ロボット1Bは、ロボット1(図1)が備えていた演算部20に換えて演算部20Bを備える点で、ロボット1と相違する。ロボット1Bの他の構成はロボット1と同様である。
演算部20Bは、演算部20が備えていた合成壁距離ベクトル距離計算部25に換えて、合成壁距離ベクトル距離計算部25Bを備えている点で、演算部20と相違する。演算部20Bの他の構成は演算部20と同様である。
図19は、ロボット1Bが右合成壁距離ベクトルを作成している様子を表す図である。図20は、ロボット1Bが左合成壁距離ベクトルを作成している様子を表す図である。
図19及び図20に示すように、合成壁距離ベクトル距離計算部25Bは、壁距離ベクトル距離計算部24から、壁距離ベクトル情報を取得すると、左右の合成壁距離ベクトルを作成する。合成壁距離ベクトル距離計算部25Bは、図10及び図11で説明した方法とは異なり、合成壁距離ベクトルを合成する目的に応じて、合成に利用する壁距離ベクトルを選択する。
図19に示すように、合成壁距離ベクトル距離計算部25Bは、ロボット1Bの右側方及右前方に伸びる環境地図ベクトルCR1〜CR5それぞれに基準距離B(図9参照)が考慮されることで作成された壁距離ベクトルDR1〜DR5を合成することで、右合成壁距離ベクトルFRBを作成する。すなわち、合成壁距離ベクトル距離計算部25Bは、ロボット1Bの前方領域Jに含まれる環境地図ベクトルCR6・CR7に対応する壁距離ベクトルは、右合成壁距離ベクトルFRBの合成に利用しない。
また、図20に示すように、合成壁距離ベクトル距離計算部25Bは、ロボット1Bの左側方及左前方に伸びる環境地図ベクトルCL1・CL2それぞれに基準距離B(図9参照)が考慮されることで作成された壁距離ベクトルDL1・DL2を合成することで、左合成壁距離ベクトルFLBを作成する。すなわち、合成壁距離ベクトル距離計算部25Bは、ロボット1Bの前方領域Jに含まれる環境地図ベクトルCL5〜CL7に対応する壁距離ベクトルは、左合成壁距離ベクトルFLBの合成に利用しない。なお、環境地図ベクトルCL3・CL4は、長さが基準距離B以上であるため、それぞれに対応する壁距離ベクトルも左合成壁距離ベクトルFLBの合成に利用しない。
合成壁距離ベクトル距離計算部25Bは、右合成壁距離ベクトルFRB及び左合成壁距離ベクトルFLBを示す情報である左右合成壁距離ベクトル情報を狭路判定部26へ出力する。
狭路判定部26は、合成壁距離ベクトル距離計算部25Bから左右合成壁距離ベクトル情報を取得すると、図19に示すように、右合成壁距離ベクトルFRBを、左右方向成分ベクトルFRBaと、前後方向成分ベクトルFRBbとに分解する。また、狭路判定部26は、図20に示すように、左合成壁距離ベクトルFLBを、左右方向成分ベクトルFLBaと、前後方向成分ベクトルFLBbとに分解する。
そして、狭路判定部26は、左右方向成分ベクトルFRBaと、左右方向成分ベクトルFLBaとの絶対値の和を演算し、当該絶対値の和が、予め設定された所定の閾値を超えるか否かを判定する。
狭路判定部26は、上記絶対値の和が、上記所定の閾値を超えた場合、ロボット1Bが走行している通路は狭路であると判定する。一方、狭路判定部26は、上記絶対値の和が、上記所定の閾値以下である場合、ロボット1Bが走行している通路は狭路ではないと判定する。
狭路判定部26は、狭路であるか否かを判定した判定結果を、走行制御部27へ出力する。これにより、走行制御部27は、ロボット1Bが適切に走行するように、モータ14の回転速度を制御する。
このようにロボット1Bにおいて、合成壁距離ベクトル距離計算部25Bは、壁距離ベクトルDRのうち、前方領域Jに含まれる環境地図ベクトルCR6・CR7に対応する壁距離ベクトルは合成せず、残りの壁距離ベクトルDR1〜DR5を合成することで右合成壁距離ベクトルFRBを作成する。また、合成壁距離ベクトル距離計算部25Bは、壁距離ベクトルDLのうち、前方領域Jに含まれる環境地図ベクトルCL7〜CL9に対応する壁距離ベクトルは合成せず、残りの壁距離ベクトルDL1〜DL2を合成することで左合成壁距離ベクトルFLBRを作成する。
このようにロボット1Bによると、特定の方向に存在する障害物の位置を排除して、狭路判定部26は、右合成壁距離ベクトルFRB及び左合成壁距離ベクトルFLBそれぞれの左右方向成分ベクトルFRBa・FLBaの絶対値の和が、所定の第1の閾値を超えるか否かを判定することができる。
具体的には、ロボット1Bが進行しているとき、進行方向前方(Y軸プラス方向)に壁5などの障害物が表れた場合、狭路ではなく行き止まりであるため、ロボット1Bは進行方向の向きを変化させる必要がある。そこで、上記構成によると、進行方向前方に表れた壁5などの障害物の位置(点P)の影響を除去して狭路判定することができるため、さらに正確に狭路判定することができる。
〔実施形態4〕
本発明の実施形態4について、図21及び図22に基づいて説明すれば、以下のとおりである。なお、説明の便宜上、上記実施形態1〜3にて説明した部材と同じ機能を有する部材については、同じ符号を付記し、その説明を省略する。
図21は、本発明の実施形態4に係るロボット1Cの構成を表すブロック図である。ロボット1Cは、ロボット1(図1)が備えていた演算部20に換えて演算部20Cを備える点で、ロボット1と相違する。ロボット1Cの他の構成はロボット1と同様である。
演算部20Cは、演算部20が備えていた合成壁距離ベクトル距離計算部25及び狭路判定部26に換えて、合成壁距離ベクトル距離計算部25C及び狭路判定部26Cを備えている点で、演算部20と相違する。演算部20Cの他の構成は演算部20と同様である。
図22は、ロボット1Cが狭路判定を行っている様子を表す図である。
図10を用いて説明した方法と同様に、合成壁距離ベクトル距離計算部25は、壁距離ベクトル距離計算部24から取得した壁距離ベクトル情報のうち、ロボット1Cの右側の壁距離ベクトルDR1〜DR4(図10参照)を合成することで、右合成壁距離ベクトルFRを作成する。
また、図11を用いて説明した方法と同様に、合成壁距離ベクトル距離計算部25は、壁距離ベクトル距離計算部24から取得した壁距離ベクトル情報のうち、ロボット1Cの左側の壁距離ベクトルDL1・DL2(図11参照)を合成することで、左合成壁距離ベクトルFLを作成する。右合成壁距離ベクトルFR及び左合成壁距離ベクトルFLは、ロボット1Cから左右及び前方の壁までの距離が近いほど長くなる。
そして、合成壁距離ベクトル距離計算部25は、右合成壁距離ベクトルFR及び左合成壁距離ベクトルFLを示す情報である左右合成壁距離ベクトル情報を狭路判定部26Cへ出力する。
狭路判定部26Cは、合成壁距離ベクトル距離計算部25から左右合成壁距離ベクトル情報を取得すると、右合成壁距離ベクトルFRを、左右方向成分ベクトルFRaと、前後方向成分ベクトルFRbとに分解する。また、狭路判定部26Cは、左合成壁距離ベクトルFLを、左右方向成分ベクトルFLaと、前後方向成分ベクトルFLbとに分解する。
そして、狭路判定部26Cは、左右方向成分ベクトルFRaと、左右方向成分ベクトルFLaとの絶対値の和を演算し、予め設定された第1の所定の閾値を超えるか否かを判定する。狭路判定部26は、左右方向成分ベクトルFRaと左右方向成分ベクトルFLaとの絶対値の和が、上記第1の所定の閾値以下である場合、ロボット1Cが走行している通路は狭路ではないと判定する。
狭路判定部26Cは、左右方向成分ベクトルFRaと左右方向成分ベクトルFLaとの絶対値の和が上記第1の所定の閾値を超えた場合、さらに、前後方向成分ベクトルFRbと、前後方向成分ベクトルFLbとの絶対値の和を演算し、予め設定された第2の所定の閾値を超えるか否かを判定する。狭路判定部26は、前後方向成分ベクトルFRbと前後方向成分ベクトルFLbとの絶対値の和が、上記第2の所定の閾値以下である場合、ロボット1Cが走行している通路は狭路ではないと判定する。
そして、狭路判定部26Cは、前後方向成分ベクトルFRbと前後方向成分ベクトルFLbとの絶対値の和が、上記第2の所定の閾値を超えた場合、ロボット1Cが走行している通路は狭路であると判定する。
狭路判定部26Cは、狭路であるか否かを判定した判定結果を、走行制御部27へ出力する。これにより、走行制御部27は、ロボット1が適切に走行するように、モータ14の回転速度を制御する。
このようにロボット1Cでは、狭路判定部26Cは、右合成壁距離ベクトルFR及び左合成壁距離ベクトルFLそれぞれの左右方向成分ベクトルFRa・FLaの絶対値の和が、上記所定の第1の閾値を超えると判定すると、右合成壁距離ベクトルFR及び左合成壁距離ベクトルFLそれぞれの前後方向成分ベクトルFRb・FLbの絶対値の和が、所定の第2の閾値を超えるか否かを判定する。この前後方向成分ベクトルFRb・FLbの絶対値の和が第2の閾値を超える程大きい場合は、前進するロボット1Bの前方(Y軸プラス方向)又は後方(Y軸マイナス方向)正面に壁2が存在する場合である。ロボット1Bの前方(Y軸プラス方向)又は後方(Y軸マイナス方向)正面に壁2が存在する場合は、狭路ではないため、狭路判定部26Cは、ロボット1Bが進行している通路は狭路ではないと判定することができる。
このように、上記構成によると、狭路判定部26Cは、ロボット1Cの進行方向前後方向に存在する壁5などの障害物の影響を除去して狭路判定することができるため、さらに正確に狭路判定することができる。
〔ソフトウェアによる実現例〕
ロボット1の制御ブロック(特に自己位置検出部21、環境地図作成部22、環境地図ベクトル距離計算部23、壁距離ベクトル距離計算部24、合成壁距離ベクトル距離計算部25及び狭路判定部26)は、集積回路(ICチップ)等に形成された論理回路(ハードウェア)によって実現してもよいし、CPU(Central Processing Unit)を用いてソフトウェアによって実現してもよい。
後者の場合、ロボット1は、各機能を実現するソフトウェアであるプログラムの命令を実行するCPU、上記プログラムおよび各種データがコンピュータ(またはCPU)で読み取り可能に記録されたROM(Read Only Memory)または記憶装置(これらを「記録媒体」と称する)、上記プログラムを展開するRAM(Random Access Memory)などを備えている。そして、コンピュータ(またはCPU)が上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記記録媒体としては、「一時的でない有形の媒体」、例えば、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路などを用いることができる。また、上記プログラムは、該プログラムを伝送可能な任意の伝送媒体(通信ネットワークや放送波等)を介して上記コンピュータに供給されてもよい。なお、本発明は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
〔まとめ〕
本発明の態様1に係る自律走行体(ロボット1)は、複数方向へビームを照射することで、周囲の障害物(壁5)の位置(点P)を特定するセンサ部(LRF2)と、自装置の位置を示す自己位置(基準位置E)から上記障害物(壁5)の位置(点P)まで延びる複数の第1のベクトル(環境地図ベクトルC)を作成する第1のベクトル作成部(環境地図ベクトル距離計算部23)と、上記複数の第1のベクトル(環境地図ベクトルC)のうち所定の基準距離Bより短い各第1のベクトル(環境地図ベクトルCR1〜CR4・DL1・DL2)それぞれについて、当該第1のベクトル(環境地図ベクトルCR1〜CR4・DL1・DL2)の延伸方向であって、当該第1のベクトル(環境地図ベクトルCR1〜CR4・DL1・DL2)と上記基準距離Bとの差分だけ上記自己位置(基準位置E)から離れる向きに延びる第2のベクトル(壁距離ベクトルD)を作成する第2のベクトル作成部(壁距離ベクトル距離計算部24)と、上記各第2のベクトル(壁距離ベクトルD)のうち、自装置の直進方向(Y軸方向)に対し直交する左右方向(X軸方向)の成分ベクトルの向きが同じ第2のベクトル同士(壁距離ベクトルDR1〜DR4同士と、壁距離ベクトルDL1・DL2同士)を合成し、互いに向きが異なる第1及び第2の合成ベクトル(右合成壁距離ベクトルFR・左合成壁距離ベクトルFL)を作成する合成ベクトル作成部(合成壁距離ベクトル距離計算部25)と、上記第1及び第2の合成ベクトル(右合成壁距離ベクトルFR・左合成壁距離ベクトルFL)それぞれの上記左右方向の成分ベクトル(左右方向成分ベクトルFRa・FLa)の絶対値の和が、所定の第1の閾値を超えるか否かを判定する判定部(狭路判定部26)とを備える。
上記構成によると、左右方向それぞれ一方向のみ障害物との距離を計測した結果から狭路判定をする場合とは異なり、上記判定部(狭路判定部26)は、上記合成ベクトル作成部(合成壁距離ベクトル距離計算部25)が複数の第2のベクトル(壁距離ベクトルD)を合成することで作成された上記第1及び第2の合成ベクトル(右合成壁距離ベクトルFR・左合成壁距離ベクトルFL)の上記左右方向の成分ベクトル(左右方向成分ベクトルFRa・FLa)の絶対値の和が、所定の閾値を超えるか否かを判定している。このため、センサ部(LRF2)が特定した左右方向の障害物(壁5)の位置が平均化される。
これにより、上記自律走行体(ロボット1)が通過する通路幅を計測するに際し、通路中において、上記自律走行体(ロボット1)の直進方向に平行な距離が短く、一時的に通路幅が狭くなっているに過ぎない箇所であるボトルネック部分や、たまたま、通路中に存在することで通路幅が狭くなっているに過ぎない動的障害物などが存在する部分の通路幅を計測したとしても、これら、ボトルネック部分や、動的障害物などが存在する部分によって、通路全体が、自装置が確実に通過や旋回ができない狭路であると判定してしまうことを防止することができる。このため、上記自律走行体(ロボット1)は、正確に狭路判定を行うことができる。
加えて、上記構成によると、上記判定部(狭路判定部26)は、上記複数の第1のベクトル(環境地図ベクトルC)を合成した合成ベクトルによって狭路判定をするのではなく、上記複数の第1のベクトル(環境地図ベクトルC)のうち所定の基準距離Bより短い複数の第1のベクトル(環境地図ベクトルCR1〜CR4・DL1・DL2)それぞれについて、当該第1のベクトル(環境地図ベクトルCR1〜CR4・DL1・DL2)の延伸方向であって、当該第1のベクトル(環境地図ベクトルCR1〜CR4・DL1・DL2)と上記基準距離Bとの差分だけ上記自己位置(基準位置E)から離れる向きに延びる第2のベクトル(壁距離ベクトルD)を作成し、当該複数の第2のベクトル(壁距離ベクトルD)を合成することで作成された上記第1及び第2の合成ベクトル(右合成壁距離ベクトルFR・左合成壁距離ベクトルFL)に基づいて、それぞれの上記左右方向の成分ベクトル(左右方向成分ベクトルFRa・FLa)の絶対値の和が、所定の閾値を超えるか否かを判定する。この所定の基準距離Bを、自装置が確実に通過や旋回できる安全距離とすることで、上記判定部(狭路判定部26)は、安全距離を確保して狭路判定をすることができる。この結果、上記自律走行体(ロボット1)は、通路を確実に通過したり、通路内で旋回したりすることができるため、より安全に、通路を進行することができる。
本発明の態様2に係る自律走行体(ロボット1A)は、上記態様1において、第1の地点において上記センサ部(LRF2)が特定した障害物(壁5)の位置(点P11〜P18)を示す第1の環境地図(環境地図M1)と、上記第1の地点から所定の距離移動した第2の地点において上記センサ部(LRF2)が特定した周囲の障害物(壁5)の位置(壁5)(点P21〜P26)とを示す第2の環境地図(環境地図M2)とを作成する地図作成部(環境地図作成部22)と、上記第1の地点における上記周囲の障害物(壁5)の位置(点P11〜P18)によって表された形状と、上記第2の地点における上記周囲の障害物(壁5)の位置(壁5)によって表された形状とを重ね合せることで、上記第1の環境地図(環境地図M1)と、上記第2の環境地図(環境地図M2)とが合成された合成地図(合成環境地図M0)を作成する合成地図作成部(合成環境地図作成部28A)とを備え、上記第1のベクトル作成部(環境地図ベクトル距離計算部23)は、上記第2の地点における上記自己位置(基準位置Et2)から上記合成地図(合成環境地図M0)に示された上記周囲の障害物(壁5)の位置(点P)まで延びる複数の第1のベクトル(環境地図ベクトルC)を作成してもよい。
上記構成によると、上記第1の地点又は上記第2の地点において、センサ部(LRF2)が周囲の障害物(壁5)の位置を特定できない死角が存在したとしても、上記第1のベクトル作成部(環境地図ベクトル距離計算部23)は、第1の環境地図が示す障害物(壁5)の位置と、第2の環境地図が示す障害物(壁5)の位置とが合成された障害物(壁5)の位置に基づいて、上記複数の第1のベクトル(環境地図ベクトルC)を作成するため、より正確に、自己位置(基準位置E)と、周囲の障害物(壁5)の位置(点P)との位置関係を把握することができる。このため、自律走行体(ロボット1A)は、さらに正確に、狭路判定を行うことができる。
本発明の態様3に係る自律走行体(ロボット1B)は、上記態様1又は2において、
上記合成ベクトル作成部(合成壁距離ベクトル距離計算部25B)は、上記複数の第2のベクトル(壁距離ベクトルDR・DL)のうち、特定方向へ延びる第2のベクトルを除外した残りの複数の第2のベクトル(壁距離ベクトルDR1〜DR5、DL1・DL2)を合成することで、上記第1及び第2の合成ベクトル(右合成壁距離ベクトルFRB・左合成壁距離ベクトルFLB)を作成してもよい。
上記構成によると、特定の方向に存在する障害物の位置を排除して、上記判定部は、上記第1及び第2の合成ベクトル(右合成壁距離ベクトルFRB・左合成壁距離ベクトルFLB)それぞれの上記左右方向の成分ベクトル(左右方向成分ベクトルFRBa・FLBa)の絶対値の和が、所定の第1の閾値を超えるか否かを判定することができる。例えば、進行方向前方に壁5などの障害物が表れた場合、狭路ではなく行き止まりであるため、自律走行体(ロボット1B)は進行方向の向きを変化させる必要がある。そこで上記構成によると、進行方向前方に表れた壁5などの障害物の影響を除去して狭路判定することができるため、さらに正確に狭路判定することができる。
本発明の態様4に係る自律走行体(ロボット1C)は、上記態様1〜3において、上記判定部(狭路判定部26C)は、上記第1及び第2の合成ベクトル(右合成壁距離ベクトルFR・左合成壁距離ベクトルFL)それぞれの上記左右方向の成分ベクトル(左右方向成分ベクトルFRa・FLa)の絶対値の和が、上記所定の第1の閾値を超えると判定すると、上記第1及び第2の合成ベクトル(右合成壁距離ベクトルFR・左合成壁距離ベクトルFL)それぞれの上記自装置の直進方向の成分ベクトル(前後方向成分ベクトルFRb・FLb)の絶対値の和が、所定の第2の閾値を超えるか否かを判定することが好ましい。
上記構成によると、上記判定部(狭路判定部26C)は、自律走行体(ロボット1C)の進行方向前方に表れた壁5などの障害物の影響を除去して狭路判定することができるため、さらに正確に狭路判定することができる。
本発明の態様5に係る自律走行体(ロボット1)は、複数方向へビームを照射することで、障害物の位置を特定するセンサ部と、自装置が複数の障害物間を通過する場合、当該複数の障害物における自装置の進行方向に平行な長さが、所定の長さを超えるか否かを判定する判定部と、上記複数の障害物における自装置の進行方向に平行な長さが、上記所定の長さを超えると上記判定部が判定すると、自装置の進行を停止する走行制御部とを備えることを特徴とする。
上記構成によると、自律走行体(ロボット1)が通過する通路幅が狭くなっている部分が、所定の長さを超えるほど続いている場合にだけ、自律走行体(ロボット1)が通過する通路が狭路であると判定することができるため、自律走行体(ロボット1)を安全に停止させることができる。
本発明の態様6に係る自律走行体(ロボット1)の狭路判定方法は、複数方向へビームを照射することで、障害物(壁5)の位置(点P)を特定する位置特定ステップと、自装置の位置を示す自己位置(基準位置E)から上記障害物(壁5)の位置(点P)まで延びる複数の第1のベクトル(環境地図ベクトルC)を作成する第1のベクトル作成ステップと、上記複数の第1のベクトル(環境地図ベクトルC)のうち所定の基準距離Bより短い各第1のベクトル(環境地図ベクトルCR1〜CR4・DL1・DL2)それぞれについて、当該第1のベクトル(環境地図ベクトルCR1〜CR4・DL1・DL2)の延伸方向であって、当該第1のベクトル(環境地図ベクトルCR1〜CR4・DL1・DL2)と上記基準距離Bとの差分だけ上記自己位置(基準位置E)から離れる向きに延びる第2のベクトル(壁距離ベクトルD)を作成する第2のベクトル作成ステップと、上記各第2のベクトル(壁距離ベクトルD)のうち、自装置の直進方向(Y軸方向)に対し直交する左右方向(X軸方向)の成分ベクトルの向きが同じ第2のベクトル同士(壁距離ベクトルDR1〜DR4同士と、壁距離ベクトルDL1・DL2同士)を合成し、互いに向きが異なる第1及び第2の合成ベクトル(右合成壁距離ベクトルFR・左合成壁距離ベクトルFL)を作成する合成ベクトルステップと、上記第1及び第2の合成ベクトル(右合成壁距離ベクトルFR・左合成壁距離ベクトルFL)それぞれの上記左右方向の成分ベクトル(左右方向成分ベクトルFRa・FLa)の絶対値の和が、所定の第1の閾値を超えるか否かを判定する判定ステップとを有することを特徴とする。
上記構成により、上記自律走行体(ロボット1)を安全に、通路を進行させることができ、また、正確に狭路判定を行うことができる。
本発明の各態様に係る自律走行体は、コンピュータによって実現してもよく、この場合には、コンピュータを上記自律走行体が備える各部(ソフトウェア要素)として動作させることにより上記自律走行体をコンピュータにて実現させる自律走行体の狭路判定プログラム、およびそれを記録したコンピュータ読み取り可能な記録媒体も、本発明の範疇に入る。
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。さらに、各実施形態にそれぞれ開示された技術的手段を組み合わせることにより、新しい技術的特徴を形成することができる。