図1は本発明に係る移動ロボットを示した平面図、
図2は本発明に係る移動ロボットにおいて、制御システムを示した構成図、
図3は本発明に係る移動ロボットにおいて、車輪ユニットの動作モードを説明するための平面図、
図4は本発明に係る移動ロボットにおいて、車輪ユニットの自転と移動について説明するための平面図である。
まず、本発明に係る移動ロボットの概略構成を図1及び図2を用いて説明する。
図1に示した如く、本発明に係る移動ロボット1は、4つのユニットから構成される。一つのユニットはロボット本体ユニット20であり、他の3つは車輪ユニット51〜53であり、この3つの車輪ユニット51〜53は同一の構成からなる。
この移動ロボット1は、3つは車輪ユニット51〜53により走行面2上を移動する際に、走行面2上にある障害物を回避し、且つ、走行面2上に設けられた段差を検出して、この段差の段差量が予め設定した値よりも大きい場合に段差を回避できるように構成されており、これらについては後で詳述する。
上記したロボット本体ユニット20は、略球体状に形成した球体状筐体21の中心より下方に3つの車輪ユニット51〜53が設けられており、且つ、3つの車輪ユニット51〜53は球体状筐体21内から下方の外周面21a沿って貫通して穿設した3箇所の車輪ユニット用開口部(図示せず)から走行面2に向けて突出するように取り付けられている。この際、車輪ユニット51はロボット本体ユニット20の前方側とは反対の後方側に取り付けられ、一方、車輪ユニット52,53はロボット本体ユニット20の前方側の左右に別れて略対称に取り付けられている。従って、3つの車輪ユニット51〜53は、走行面2への投影が互いに略等角度で略120°を成すように構成されている。
そして、3つの車輪ユニット51〜53は、円筒状の胴体部51a〜53aと、胴体部51a〜53aの下方部位に連接して走行面2上に接触する略球面状の接地部51b〜53bと、胴体部51a〜53a内の中心部に取り付けられて胴体部51a〜53a及び接地部51b〜53bと一体に回転する回転軸51c〜53cとで構成され、接地部51b〜53bが走行面2上に接触することで、ロボット本体ユニット20を走行面2から離間して支持している。また、車輪ユニット51〜53の回転軸51c〜53cの仮想延長線は、球体状筐体21の内部中心部位で交わるように構成されている。
この際、車輪ユニット51〜53の接地部51b〜53bと、走行面2とがそれぞれ剛体であれば点接触であるが、例えば走行面2が絨毯のような柔らかい材料では面接触となる。尚、この実施例における走行面2は、接地部51b〜53bが接地する3点により決定される剛体の平坦面である。
そして、車輪ユニット51〜53は、その内部またはロボット本体ユニット20の内部に搭載されたモータ駆動コントローラ42〜44(図2)を介して回転駆動モータ45〜47(図2)により、それぞれ独立して駆動され、回転軸51c〜53cを中心にして回転する。この実施例では、回転駆動モータ45〜47としてDCモータを使用している。 また、ロボット本体ユニット20の球体状筐体21の前方側の上部には、走行面2上にある前方の障害物を検出するために狭い指向角度で超音波ビームを発信/受信する発信部22a及び受信部22bを備えた第1の超音波センサ22と、必要に応じて設けられ且つ第1の超音波センサ22で検出できない前方の障害物を検出するために広い指向角度で超音波ビームを発信/受信する発信部23a及び受信部23bを備えた第2の超音波センサ23と、走行面2上に設けられた前段差及び前段差の前段差量を検出するために赤外線ビームを発光/受光する発光部24a及び受光部24bを備えた前方赤外線センサ(前方段差検出手段)24とが取り付けられている。
また、ロボット本体ユニット20の球体状筐体21の左側の上部には、走行面2上に設けられた左段差及びこの左段差の左段差量を検出するために赤外線ビームを発光/受光する発光部25a及び受光部25bを備えた左側赤外線センサ(左側段差検出手段)25が取り付けられ、一方、ロボット本体ユニット20の球体状筐体21の右側の上部には、走行面2上に設けられた右段差及びこの右段差の右段差量を検出するために赤外線ビームを発光/受光する発光部26a及び受光部26bを備えた右側赤外線センサ(右側段差検出手段)26が取り付けられている。
この際、各種のセンサ22〜26は、球体状筐体21の内部から球体状筐体21の外部に向かって取り付けられており、且つ、各種のセンサ22〜26は球体状筐体21の外周面21aに沿って貫通して穿設した各センサ用開口部(図示せず)に臨んでいる。
次に、移動ロボット1の制御システムの構成を図2を用いて説明する。 図2に示した如く、ロボット本体ユニット20の内部には、移動ロボット1を統括的に制御する制御手段となるシステム制御コントローラ31と、外部の情報を検出測定する外部センサ32と、外部に情報等を出力する出力装置33と、移動ロボット1の電源となるバッテリ34及びこのバッテリ34の残量を検出するバッテリセンサ35と、指向角度が狭い第1の超音波センサ22を駆動してその検出信号をシステム制御コントローラ31に送信するための第1の超音波センサ駆動回路36と、指向角度が広い第2の超音波センサ23を駆動してその検出信号をシステム制御コントローラ31に送信するための第2の超音波センサ駆動回路37と、前方赤外線センサ24を駆動してその検出信号をシステム制御コントローラ31に送信するための前方赤外線センサ駆動回路38と、左側赤外線センサ25を駆動してその検出信号をシステム制御コントローラ31に送信するための左側赤外線センサ駆動回路39と、右側赤外線センサ26を駆動してその検出信号をシステム制御コントローラ31に送信するための右側赤外線センサ駆動回路40と、移動ロボット1の移動などの運動制御を行う運動制御コントローラ41とで構成されている。
上記した運動制御コントローラ41は、システム制御コントローラ31によって決められた行動内容を指令信号として受信し、その内容を予め運動制御コントローラ41内のメモリ(図示せず)に格納された制御プログラムに基づいて解析し、3つの車輪ユニット51〜53をそれぞれどのように制御するかを決定し、その決定内容を車輪ユニット51〜53の内部に備えたモータ駆動コントローラ42〜44に指令信号として送出している。
また、3つの車輪ユニット51〜53の内部には、上記したモータ駆動コントローラ42〜44と、回転駆動モータ45〜47とが備えられており、回転駆動モータ45〜47は移動ロボット1の前進、後進、側進などの移動を行うアクチュエータである。
上記のシステム構成により、第1,第2の超音波センサ22,23及び各赤外線センサ24〜26からの各検出情報に基づき、システム制御コントローラ31は次に行う行動を決定し、その指令が運動制御コントローラ41、モータ駆動コントローラ42〜44へと伝達されて、障害物や段差を検出した場合はあらかじめ決めておいた処理に基づいて行動するように構成されている。
ここで、各種のセンサ22〜26により障害物や段差を検出する場合に、3つの車輪ユニット51〜53の回転を制御することで、移動ロボット1は前進、後進、側進(前進方向に対して左右方向の移動)、停止、及び旋回(その場で自転)したりすることが可能であり、3つの車輪ユニット51〜53の基本動作について図3及び図4を用いて説明する。
この実施例では、各車輪ユニット51〜53の回転方向と回転速度とを独立して様々に変えることで、接地部51b〜53bと走行面2との摩擦力により、移動ロボット1に種々の動きを与えることができる。
この際、回転駆動モータ45〜47の制御、即ち、車輪ユニット51〜53の回転制御方法によって、移動ロボット1を大別して以下の5つの動作モードで動かすことができる(図3,図4参照)。
尚、図3,図4に示した3つの車輪ユニット51〜53は、先に示した図1と対応させて車輪ユニット51をロボット本体ユニット20の後方側に取り付け、且つ、車輪ユニット52,53をロボット本体ユニット20の前方側の左右に取り付けた状態で平面的に図示している。
(1)静止状態での回転(自転)、 (2)直進移動(前進、後進及び側進)、 (3)曲線移動、 (4)蛇行移動、 (5)自転しながらの直線移動及び曲線移動。
これら(1)〜(5)の動作モードについて順に説明する。
(1)静止状態での回転(自転){図3(1)及び図4(a)参照} 最も基本的な動作モードであり、3つの車輪ユニット51〜53をそれぞれ同一の回転方向に同一の回転数で回転駆動することで、移動ロボット1はその場に静止しつつ自転する。例えば、図4(a)に示すように、車輪ユニット51〜53の回転軸51c〜53cを外側から見て時計回り方向に回転させると、移動ロボット1はその位置に静止したまま、上面からみて反時計回り方向に自転する。 一方、車輪ユニット51〜53の回転方向を上記とは逆に反時計回りに回転させれば、移動ロボット1はその位置に静止したまま、時計回り方向に自転する。 そして、車輪ユニット51〜53の単位時間あたりの回転数(以下、回転数と記す)を増減することで移動ロボット1の自転速度を増減させることができる。
(2)直進移動{図3(2)及び図4(b)〜図4(e)参照} 3つある車輪ユニット51〜53のうち、例えば任意の一つの車輪ユニット52を回転させずに停止して維持させ、残りの2つの車輪ユニット51,53をそれぞれ逆方向に回転駆動することで、移動ロボット1を車輪ユニット52の回転軸52cの走行面2への投影線に沿った方向に直線的に前進又は後進させることができる。
また、3つある車輪ユニット51〜53の回転方向と回転数の設定によって、例えば車輪ユニット52の回転軸52cと直交する方向に直線的に側進させることもできる。
この際、停止させた車輪ユニット52の反対方向に進む場合を前進、停止させた車輪ユニット52側に進む場合を後進、前進または後進方向と直交する方向に進む場合を側進と呼び、それぞれについて以下に説明する。
(前進の場合)
図4(b)に示すように、車輪ユニット52を停止させ、車輪ユニット51を時計回り方向に、車輪ユニット53を反時計回り方向にそれぞれ同一の回転数で駆動すると、移動ロボット1は車輪ユニット52の回転軸52cの走行面2への投影線に沿った方向で、車輪ユニット52の反対方向(図の矢印Cの方向)に直進移動する。
(後進の場合)
図4(c)に示すように、上記した前進に対して車輪ユニット51,53の回転方向を共に逆回転させた場合は後進する。即ち、車輪ユニット52を停止させ、車輪ユニット51を反時計回り方向に、車輪ユニット53を時計回り方向にそれぞれ同一の回転数で駆動すると、移動ロボット1は、車輪ユニット52の回転軸52cの走行面2への投影線に沿った方向で、車輪ユニット52の方向(図の矢印Dの方向)に直進移動する。
(側進の場合)
図4(d)に示すように、車輪ユニット51,53を同一の回転方向に同一の一定回転数で回転させ、車輪ユニット52を車輪ユニット51,53の回転方向と逆方向に、且つ、車輪ユニット51,53の2倍の回転数で回転させることで、移動ロボット1は上述の前進及び後進の方向に対して直交する方向に移動する。具体的に説明すると、車輪ユニット51,53の回転方向を時計回り方向に一定の回転数Nで回転させ、車輪ユニット52を反時計回り方向に回転数2Nで回転させると、移動ロボット1は前進方向に対して直交する左方向(図の矢印Eの方向)に直線移動する。
一方、図4(d)とは逆に、図4(e)に示すように、車輪ユニット51,53の回転方向を反時計回り方向に一定の回転数Nで回転させ、車輪ユニット52を時計回り方向に回転数2Nで回転させると、移動ロボット1は前進方向に対して直交する右方向(図の矢印Fの方向)に直線移動する。
そして、(前進の場合),(後進の場合),(側進の場合)のいずれの場合も、回転数を増減させることで、移動ロボット1の移動速度を増減させることができる。
(3)曲線移動{図3(3)} 移動ロボット1は、円弧状に移動させることができ、これを曲線移動と称する。 この曲線移動を与える駆動制御方法には2通りの方法があり、以下に説明する。
(第1の曲線移動方法)
第1の曲線移動方法は、前述した直進移動状態において、回転を停止させていた車輪ユニット52を回転駆動させる方法である。これにより、移動ロボット1は円弧状に移動を行う。この時、車輪ユニット52の回転速度を可変して移動する円弧の半径を可変することができる。即ち、車輪ユニット52の回転速度が速いほど移動する円弧の半径は小さくなる。
(第2の曲線移動方法)
第2の曲線移動方法は、前述した直進移動状態において、車輪ユニット52を停止させたまま、他の2つの車輪ユニット51,53を異なった一定の回転数で回転駆動させる方法である。これにより、移動ロボット1は円弧状に移動を行う。即ち、回転数の少ない方の車輪ユニット側に中心を持つ円弧状に曲線移動を行う。この場合、駆動させている2つの車輪ユニットのそれぞれの回転数の差を可変して円弧の半径を可変することが可能であり、その差が大きい程、移動する円弧の半径は小さくなる。
そして、(第1の曲線移動方法),(第2の曲線移動方法)のいずれの場合も、車輪ユニット52以外の車輪ユニット51,53の回転数を増減させることで、移動ロボット1の移動速度を増減させることができる。特に、(第1の曲線移動方法)の場合は、移動する円弧の半径も可変することが可能であって、車輪ユニット51,53の回転数を増やすと移動する円弧の半径も大きくなる。
(4)蛇行移動{図3(4)} 上述した曲線移動において、曲がる方向を順次変えることで、左右に振れながら蛇行移動をする。即ち、上述した第1の曲線移動方法においては車輪ユニット52の回転方向を正転,逆転と繰り返し切り替えることで、また、第2の曲線移動方法においては車輪ユニット52以外の車輪ユニット51,53の異なる回転数をそれぞれ交互に切り替えて与えることで蛇行移動をする。
(5)自転しながらの直線移動及び曲線移動{図3(5)} 3つの車輪ユニット51〜53の回転方向を、「正方向回転→逆方向回転→正方向回転→…」のように周期的に反転させ、また、回転数を正弦波に相当する時間変化で周期的に変化させると共にその周期に一定の時間差を持たせてそれぞれの車輪ユニット51〜53を駆動すると、移動ロボット1は自転しながら直線移動あるいは曲線移動をする。
次に、本発明の要部となる各種のセンサ22〜26により障害物や段差を検出する場合について、新たな図5〜図20を用いて説明する。
図5は本発明に係る移動ロボットにおいて、第1,第2の超音波センサの検出領域特性を説明するために模式的に示した平面図、
図6は本発明に係る移動ロボットにおいて、前方赤外線センサ及び左側赤外線センサ並びに右側赤外線センサの検出領域特性を説明するために模式的に示した平面図、
図7は本発明に係る移動ロボットにおいて、前方赤外線センサを用いて前段差を検出する状態を示した右側面図、
図8は本発明に係る移動ロボットにおいて、前方赤外線センサを用いて前段差の前段差量を検出する動作を説明するための右側面図、
図9は本発明に係る移動ロボットにおいて、左側赤外線センサ及び右側赤外線センサを用いて左段差及び右段差を検出する状態を示した正面図、
図10は本発明に係る移動ロボットにおいて、右側赤外線センサを用いて右段差を検出する際に、右側赤外線センサの右段差への照射角度による検出特性を説明するために模式的に示した平面図、
図11は本発明に係る移動ロボットにおいて、第1の超音波センサを用いて障害物(壁面)を回避する様子を模式的に示した平面図、
図12は本発明に係る移動ロボットにおいて、第1の超音波センサを用いて障害物(円柱などの物体)を回避する様子を模式的に示した平面図、
図13は本発明に係る移動ロボットにおいて、前方赤外線センサを用いて前段差を回避する様子を模式的に示した平面図、
図14は本発明に係る移動ロボットにおいて、左側赤外線センサ及び右側赤外線センサを用いて左段差及び右段差を回避する様子を模式的に示した平面図、
図15は本発明に係る移動ロボットにおいて、前方赤外線センサで検出が不可能な段差とその対応方法を模式的に示した平面図、
図16は本発明に係る移動ロボットにおいて、第1の超音波センサを用いて前方にある障害物を検出して回避する処理を示したフローチャート、
図17は本発明に係る移動ロボットにおいて、障害物との距離に応じた移動速度を設定する場合を説明するための図、
図18は本発明に係る移動ロボットにおいて、第1の超音波センサを用いて前方にある障害物を検出して回避する際に、障害物との距離に応じて移動速度を制御する処理を示したフローチャート、
図19は本発明に係る移動ロボットにおいて、前方赤外線センサ及び左側赤外線センサ並びに右側赤外線センサを用いて前方と左右方向にある段差を検出して回避する処理を示したフローチャート、
図20は本発明に係る移動ロボットにおいて、障害物との距離に応じて移動速度を制御し、且つ、段差を検出して制御する処理を示したフローチャートである。
図5に示した如く、ロボット本体ユニット20の球体状筐体21の前方側に設けた第1の超音波センサ22は、走行面2に対して略平行すなわち水平となる向きに装着されており、且つ、略60°の狭い指向角度で超音波ビーム22cを走行面2に対して略平行に出射させて、この超音波ビーム22cが前方にある壁面3Aなどの障害物3で反射された超音波ビーム22cを受信して障害物3を検出している。
この際、第1の超音波センサ22からの超音波ビーム22cにより前方を検出する前方検出領域5の距離は数メートルであり、この実施例では略60°の狭い指向角度の中心でロボット本体ユニット20の前方から3m程度の距離性能を有する超音波センサを用いている。
また、移動ロボット1に取り付けた3つの車輪ユニット51〜53が多少の余裕を持って通過できる幅寸法を車幅と呼称した時に、この車幅を例えば300mmと想定すると、超音波センサ22の検出指向角度特性から移動ロボット1の車幅300mmを検出できる領域は、上記した前方検出領域5内でロボット本体ユニット20の前方から約260mm(=150/tan30°)ほど先の距離に相当し、以下、移動ロボット1の車幅300mmを検出できる領域を、移動ロボット1が障害物3に対して回避する際の回避検出領域6と呼称すると共に、回避検出領域6中に設定した前方距離260mmをシステム制御コントローラ31(図2)内の記憶部(図示せず)に記憶させている。
また、上記した前方検出領域5の外側の左右に位置する領域は第1の超音波センサ22の未検出領域7L,7Rであり、この未検出領域7L,7R内で移動ロボット1に接近して円柱3Bなどの障害物3がある場合には、この円柱3Bを第1の超音波センサ22で検出できない。
これを避けるために、ロボット本体ユニット20の球体状筐体21の前方側に、第1の超音波センサ22よりも指向角度が広い第2の超音波センサ23を必要に応じて設けている。
上記した第2の超音波センサ23も、球体状筐体21の前方側で走行面2に対して略平行すなわち水平となる向きに装着されており、且つ、略120°の広い指向角度で超音波ビーム23cを走行面2に対して略平行に出射させて、この超音波ビーム23cが前方にある障害物3で反射された超音波ビーム23cを受信して障害物3を検出しており、指向角度以外の特性は第1の超音波センサ22と略同じ特性であり、第2の超音波センサ23からの超音波ビーム23cにより前方を検出する前方検出領域11の距離は3m程度の性能を有している。また、上記した第2の超音波センサ23による前方検出領域11の外側の左右に位置する領域は第2の超音波センサ23の未検出領域12L,12Rである。
この際、第1,第2の超音波センサ22,23を設けた場合には、まず、広い指向角度を有する第2の超音波センサ23を先に始動させて障害物3の検出動作を行った後に、狭い指向角度を有する第1の超音波センサ22による回避検出領域6で後述するように障害物3への回避動作を行っている。
尚、以下の説明では、部品点数の削減及び動作フローの簡易化のために広い指向角度を有する第2の超音波センサ23を設けずに、狭い指向角度を有する第1の超音波センサ22のみを用いて障害物3を検出する場合について説明する。この際、第1の超音波センサ22のみを用いて前方にある障害物3を検出しながら制御する方法は以下のように考える。
(1).起動時において、未検出領域7L、7Rに障害物3が存在している場合、障害物3を検出することが出来ないので、前進に先立って最初の位置を基準として移動ロボット1自体が左右一定角度(実施例では30°)づつ旋回して各位置において前方260mm以内に障害物3を検出しなければ中央の位置において前進を可能にする。
(2).前進中においては、前方距離260mm以内の回避検出領域6内に障害物3を検出しなければ前進を継続する。
(3).起動位置と左右に一定角度の旋回した位置、及び前進中に前方距離260mm以内に障害物3を検出した場合は停止して回避行動を取る。
次に、図6に示した如く、ロボット本体ユニット20の球体状筐体21の前方側に設けた前方赤外線センサ24と、球体状筐体21の左右に設けた左側赤外線センサ25及び右側赤外線センサ26は、それぞれ発光部24a〜26aと受光部24b〜26bとが同じ高さ位置で一体となって構成されている。この際、各赤外線センサ24〜26の発光部24a〜26aから出射される赤外線ビーム24c〜26cは常時点灯状態とし、この赤外線ビーム24c〜26cの各反射光を受光部24b〜26bで受光した時に、受光部24b〜26bからの読み出しを所定の間隔で読み出すことにより各赤外線センサ24〜26と赤外線ビーム24c〜26cの各反射点との間の距離が検出できるものである。
そして、各赤外線センサ24〜26からの赤外線ビーム24c〜26cが略10°の狭い指向角度で下方の走行面2に向けて斜めに照射するように装着されており、前方赤外線センサ24で図7,図8に示した前段差4F及びこの前段差4Fの前段差量Hを検出し、且つ、左側赤外線センサ25で図9に示した左段差4L及びこの左段差4Lの左段差量を検出し、且つ、右側赤外線センサ26で図9に示した右段差4R及びこの右段差4Rの右段差量を検出している。
尚、前段差4F,左段差4L,右段差4Rを含めた段差4は、走行面2よりも上方に突出形成された上段差と、走行面2よりも一段低く形成された下段差とがあり、走行面2よりも上方に突出形成された上段差の上段差量は“高さ”と通常呼称され、走行面2よりも一段低く形成された下段差の下段差量は“深さ”と通常呼称されているが、この実施例では各赤外線センサ24〜26で上段差及びこの上段差の上段差量(高さ),下段差及びこの下段差の下段差量(深さ)のいずれも検出できることから以下では必要な時以外は上段差,下段差の区別をつけずに説明する。
この際、各赤外線センサ24〜26からの赤外線ビーム24c〜26cの検出能力は800mm程度であるが、ここでは赤外線ビーム24c〜26cを下方の走行面2に向けて斜めに照射しているために、各赤外線センサ24〜26の検出領域15〜17は略10°の狭い指向角度で出射させた赤外線ビーム24c〜26cの中心が走行面2に達した点を含む領域となる。
そして、前方赤外線センサ24から下方の走行面2に向けて斜めに照射した赤外線ビーム24cの中心が走行面2に至るまでの検出距離L1は110mmに予め設定されており、一方、左側赤外線センサ25,右側赤外線センサ26から下方の走行面2に向けて斜めに照射した赤外線ビーム25c,26cの中心が走行面2に至るまでの検出距離L2,L3は共に90mmに予め設定されており、これに伴って、赤外線ビーム24c〜26cと走行面2とのなす角度がそれぞれθ1〜θ3の値に設定されていると共に、この際、左右の検出距離L2,L3は共に90mmであるのでθ2,θ3は同じ角度に設定されている。
従って、各赤外線センサ24〜26の各検出領域15〜17を平面的に図示した時に、ロボット本体ユニット20から前方検出領域15の先端までの距離はL1×cosθ1となり、且つ、ロボット本体ユニット20から左側検出領域16の先端までの距離はL2×cosθ2となり、且つ、ロボット本体ユニット20から右側検出領域17の先端までの距離はL3×cosθ3となる。
そして、各赤外線センサ24〜26の検出距離L1〜L3の値と、各赤外線センサ24〜26からの赤外線ビーム24c〜26cと走行面2とのなす角度θ1〜θ3の値とをシステム制御コントローラ31(図2)内の記憶部(図示せず)に記憶させている。
従って、図7に示した前方赤外線センサ24の検出距離L1は、図9に示した左側赤外線センサ25,右側赤外線センサ26の検出距離L2,L3に対して大きくなるような取付け位置、及び取付け角度に設定されている。即ち、前方赤外線センサ24の段差検出距離L1と、左側赤外線センサ25の段差検出距離L2との関係をL1>L2と設定している。同様に、前方赤外線センサ24の段差検出距離L1と、右側赤外線センサ26の段差検出距離L3との関係をL1>L3=L2と設定している。
この理由は、前進方向は高速で移動を行うことが可能なので段差を検出して停止するまでの時間的余裕をもたせる必要があり、段差の検出距離L1はある程度長い方が良いからである。左右の段差検出については、左右方向についての側進移動は前進に比較して高速では行わないので左右の段差を検出して停止するまでの時間的余裕はあまり必要ではなく、それよりも左右の段差ぎりぎりまで接近で来るよう行動範囲を広げることを優先して検出距離L2,L3は短い方が良い。
また、左右の赤外線センサ25,26に関しては、図1,図7に示したように各受光部25b,26bを各発光部25a,26aよりもロボット本体ユニット20の前進側(=移動ロボット1の前進側)に配置させている。この理由については左右の赤外線センサ25,26の段差に対する平面上から見た照射角度の検出特性と対応するものであるが詳細については後述する。
ここで、図8に示した如く、移動ロボット1が走行面2上を前方に向かって移動する時に、移動ロボット1の前方で走行面2上に前段差4Fが設けられている場合に、前方赤外線センサ24を用いて前段差4Fを検出すると共に、前段差4Fの前段差量Hを検出している。
この際、移動ロボット1は、移動性能としてある程度の上方向の段差4は乗り越えられる。この実施例においては家庭内の敷居を乗り越えられることを前提として30mm以内の段差量(高さ)の上段差は乗り越えて移動することである。従って30mmを越える上段差は乗り越えることが出来ないので衝突しないように回避する必要がある。また、下方向の段差4については30mm以内の下段差であれば、その下段差を降りても再び登ることができるので、30mm以内の下段差に対しては回避せずに進入してもかまわないが、30mmを超える下段差については回避する必要がある。これに伴って、システム制御コントローラ31(図2)内の記憶部(図示せず)には、許容できる許容段差量の値30mmが予め記憶されている。
そして、移動ロボット1が走行面2を前方に向かって移動している時には、前方赤外線センサ24からの赤外線ビーム24cによる検出距離L1は前述したように110mmの斜め下方位置で走行面2と交わるので、この検出距離L1=110mmの値がシステム制御コントローラ31(図2)内の記憶部(図示せず)に予め記憶され、且つ、赤外線ビーム24cと走行面2とのなす角度がθ1であるとシステム制御コントローラ31(図2)内の記憶部(図示せず)に予めに記憶されているので、システム制御コントローラ31(図2)は、前方赤外線センサ24と走行面2との間の高さH1が、H1=L1×sinθ1であることがわかっている。
一方、移動ロボット1が前方に移動して、前方赤外線センサ24で走行面2上に設けられた前段差4Fを検出した時に、前方赤外線センサ24からの赤外線ビーム24cは前段差4Fの上面で反射されるので、前方赤外線センサ駆動回路38(図2)内で反射光の検出電圧値を不図示の電圧/距離変換テーブルを用いて距離値に変換することで、前段差4Fの上面での反射時の検出距離L1’は前記した検出距離L1よりも短い値で得られる。この後、前方赤外線センサ駆動回路38(図2)で得た反射時の検出距離L1’をシステム制御コントローラ31(図2)に入力することで、システム制御コントローラ31は、前方赤外線センサ24と前段差4Fの上面との間の高さH1’が、H1’=L1’×sinθ1であると検出すると共に、前段差4Fの前段差量(高さ)Hが、H1−H1’=(H1−L1’)×sinθ1であると検出している。
そして、システム制御コントローラ31(図2)は、内部の判定部(図示せず)で前段差4Fの前段差量(高さ)Hが内部の記憶部(図示せず)に予め記憶させた許容段差量の値30mmよりも大きいか否かを判定して、前段差4Fの前段差量(高さ)Hが許容段差量の値30mmよりも大きい場合にシステム制御コントローラ31(図2)の指令に基づいて後述するように前段差4Fを回避する動作を行っている。
尚、左側赤外線センサ25で左段差4Lの左段差量を検出する場合、又は、右側赤外線センサ26で右段差4Rの右段差量を検出する場合には、上記した前方赤外線センサ24で前段差4Fの前段差量Hを検出する場合と同じ方法で検出すれば良いものであるので、詳述を省略する。
次に、左右方向の赤外線センサ25,26については、各受光部25b,26bを各発光部25a,26aよりもロボット本体ユニット20の(=移動ロボット1の前進側)に配置させている理由を図10を使用して説明する。
図10(a)〜(e)は、移動ロボット1の右方向にある右段差4Rに対して、移動ロボット1の右段差4Rへの姿勢と、右側赤外線センサ26による右段差4Rの検出状況とを示している。
まず、図10(c)に示したように平面図上で、赤外線センサ26からの赤外線ビーム26cを右段差4Rに対して直角に照射した場合には、移動ロボット1から右段差4Rまでの実際の距離と、移動ロボット1から赤外線ビーム26c上の段差検出点17cまでの距離とが略同一の値となる。
しかし、図10(a),(b)に示したように移動ロボット1の姿勢により右段差4Rに対して右側赤外線センサ26からの赤外線ビーム26cが90°より小さい角度(α<90°)で照射した場合には、移動ロボット1から右段差4Rまでの実際の距離と、右側赤外線センサ26で右段差4Rを検出する距離との間で検出誤差が発生し、検出した距離の方が小さくなる。即ち、右側赤外線センサ26の検出距離は赤外線ビーム26c上の段差検出点17a,17bに相当し、実距離より右段差4Rを近くに検出することになる。
逆に、図10(d),(e)に示したように移動ロボット1の姿勢により右段差4Rに対して赤外線ビーム26cが90°より大きい角度(α>90°)で照射した場合には、移動ロボット1から右段差4Rまでの実際の距離と、右側赤外線センサ26で右段差4Rを検出する距離との間で発生する検出誤差は、検出した距離の方が大きくなる。即ち、右側赤外線センサ26の検出距離は赤外線ビーム26c上の段差検出点17d,17eに相当し、実距離より右段差4Rを遠くに検出することになる。
この検出誤差の発生する要因は、赤外線センサ26の発光部26aと受光部26bの位置関係にあり、前述したように、受光部26bの方が発光部26aよりも前進側に配置されているためである。しかしながら、この位置関係が逆、即ち、発光部26aが前進側で受光部26bが移動ロボット1の後方になる向きに配置すると、その発生する検出誤差は当然ながら上記と逆になる。実施例においては、右段差4Rに対して赤外線ビーム26cが90°より小さい場合に右段差4Rを実際よりも近くに検出するように右側赤外線センサ26の発光部26a及び受光部26bを配置しているが、これは図10(a),(b)のような場合、移動ロボット1の姿勢は前進方向が右段差4Rに進入する方向であり、右側赤外線センサ26が右段差4Rを誤差分早めに検出して右段差4Rへの進入を防ぐという効果を得るためである。検出誤差によって右段差4Rを実際よりも遠くに検出した場合には移動ロボット1が右段差4Rに干渉する危険性があるが、その時の移動ロボット1の姿勢は、図10(d),(e)に示したように前進方向が右段差4Rに対して遠ざかる方向にあるので実際には右段差4Rに進入するような問題は発生しない。
以上は右側赤外線センサ26について説明したが、左側赤外線センサ25についても同様のことが言える。このように左右の赤外線センサ25,26の受光部25b,26bを発光部25a,26aよりも前進側に配置することで、誤差分早めに左段差4L,右段差4Rを検出することができるので、余裕をもって左段差4L,右段差4Rへの回避行動が取れることになる。
次に、壁面3Aなどの障害物3の検出と回避方法について、図11を用いて説明する。 尚、図11(a)〜(c),図11(d)〜(g)は、移動ロボット1の前方にある壁面3Aを検出して回転(旋回)して回避する様子を時系列的に順に示している。
(1)壁面の検出と回避行動(回転回避) 図11(a)に示した如く、移動ロボット1は、前進行動中に超音波センサ22からの超音波ビーム22cによって前方の回避検出領域6内に障害物3を検出しなければ前進を継続する。そして、図11(b)に示した如く、回避検出領域6内に壁面3Aを検出したら移動ロボット1は停止する。次に、図11(c)に示した如く、移動ロボット1は、回避検出領域6内に壁面3Aを検出しなくなるまで一定の方向に旋回(実施例では左旋回)して壁面3Aを回避する。その後は再び回避検出領域6内に次の障害物3を検出するまで前進行動を続ける。
(2)壁面の検出と回避行動(側進回避) 図11(d)に示した如く、移動ロボット1は、前進行動中に超音波センサ22からの超音波ビーム22cによって前方の回避検出領域6内に障害物3を検出しなければ前進を継続する。そして、図11(e)に示した如く、回避検出領域6内に壁面3Aを検出したら移動ロボット1は停止する。次に、図11(f)に示した如く、移動ロボット1は、一定の方向に90°旋回(実施例では右旋回)し、旋回した位置においての前方の確認領域8内に障害物3がないかを確認をする。そして、確認領域8内に壁面3Aがなければ再びもとの姿勢に90°旋回(実施例では左旋回)して戻り、回避検出領域6内に壁面3Aを検出しなくなるまで、図11(f)で確認した確認領域8内に相当する一定の距離だけ側進して壁面3Aを回避する{図11(g)}。回避後は再び回避検出領域6内に次の障害物3を検出するまで前進行動を続ける。ここで、回避検出領域6内と確認領域8内の領域は異なり、確認領域8内の方が回避検出領域6内より広範囲を検出する。尚、図11(f)の動作において、図示を省略するものの、移動ロボット1を90°右旋回させた後に、確認領域8内に壁面3Aがなければそのまま前進させる方法もある。
図11(f)の状況で確認領域8内で障害物3を検出した場合と、図11(g)の状況で一定の距離だけ側進しても回避検出領域6内に壁面3Aが存在した場合には(1)で説明した旋回による回避行動を取る。回避後は再び回避検出領域6内に次の障害物3を検出するまで前進行動を続ける。
次に、円柱3Bなどの障害物3の検出と回避方法について、図12を用いて説明する。 尚、図12(a)〜(c),図12(d)〜(g)は、移動ロボット1の前方にある壁面3Aを検出して回転(旋回)して回避する様子を時系列的に順に示している。 (1)円柱などの障害物の検出と回避行動(回転回避) 図12(a)に示した如く、移動ロボット1は、前進行動中に超音波センサ22からの超音波ビーム22cによって前方の回避検出領域6内に障害物3を検出しなければ前進を継続する。そして、図12(b)に示した如く、回避検出領域6内に円柱3Bを検出したら移動ロボット1は停止する。次に、図12(c)に示した如く、移動ロボット1は、回避検出領域6内に円柱3Bを検出しなくなるまで一定の方向に旋回(実施例では左旋回)して円柱3Bを回避する。その後は再び回避検出領域6内に次の障害物3を検出するまで前進行動を続ける。
(2)円柱などの物体の検出と回避行動(側進回避) 図12(d)に示した如く、移動ロボット1は、前進行動中に超音波センサ22からの超音波ビーム22cによって前方の回避検出領域6内に障害物3を検出しなければ前進を継続する。そして、図12(e)に示した如く、回避検出領域6内に円柱3Bを検出したら移動ロボット1は停止する。次に、図12(f)に示した如く、移動ロボット1は、一定の方向に90°旋回(実施例では右旋回)し、旋回した位置においての前方の確認領域8内に障害物3がないかを確認をする。そして、確認領域8内に障害物3がなければ再びもとの姿勢に90°旋回(実施例では左旋回)して戻り、回避検出領域6内に障害物3を検出しなくなるまで、図12(f)で確認した確認領域8内に相当する一定の距離だけ側進して障害物3を回避する{図12(g)}。その後は再び回避検出領域6内に次の障害物3を検出するまで前進行動を続ける。尚、図12(f)の動作において、図示を省略するものの、移動ロボット1を90°右旋回させた後に、確認領域8内に壁面3Aがなければそのまま前進させる方法もある。
図12(f)の状況で確認領域8内で円柱3Bを検出した場合と、図12(g)の状況で一定の距離だけ側進しても回避検出領域6内に円柱3Bや他の障害物3が存在した場合には(1)で説明した旋回による回避行動を取る。その後は再び回避検出領域6内に次の障害物3を検出するまで前進行動を続ける。
次に、段差4の検出と回避方法について、図13〜図15を用いて説明する。 移動ロボット1の移動性能として、前述したように、家庭内の敷居を乗り越えられることを前提として許容できる許容段差量の値30mmがシステム制御コントローラ31(図2)内の記憶部(図示せず)に予め記憶されて、この許容段差量の値30mmよりも段差4の段差量が大きい場合に移動ロボット1は段差4を回避する動作を行っている。
この際、移動ロボット1が前進行動中、または起動時に、前段差4F,左段差4L,右段差4Rなどの段差4を検出したら停止し、先に図11又は図12を用いて説明したと同様の回避行動を取る。
(イ) 前方に段差を検出した場合 図13(a),(b)に示した如く、移動ロボット1が前方赤外線センサ24からの赤外線ビーム24cによって前方検出領域15内(実施例の場合は前方110mm)に前段差4Fを検出し、且つ、この前段差4Fの前段差量が許容段差量の値30mmよりも大きい場合には、この前方検出領域15内はもちろんのこと、左側赤外線センサ25からの赤外線ビーム25cによる左側検出領域16内及び右側赤外線センサ26からの赤外線ビーム26cによる右側検出領域17内に段差4(前段差4F以外の段差も含む)を検出しなくなるまで一定の方向に旋回(実施例では左旋回)して回避する。左側赤外線センサ25の左側検出領域16内及び右側赤外線センサ26の右側検出領域17内も同時に検出を行うことが前述した図11の回転回避方法と異なる点である。
尚、図13(c),(d)に示した如く、前段差4Fを回避する場合に、一定の方向に旋回する時に右旋回して回避させても良い。
(ロ) 左側に段差を検出した場合 図14(a),(b)に示した如く、移動ロボット1が左側赤外線センサ25からの赤外線ビーム25cによって左側検出領域16内(実施例の場合は左方向90mm)に左段差4Lを検出し、且つ、この左段差4Lの左段差量が許容段差量の値30mmよりも大きい場合には、この左側検出領域16内はもちろんのこと、前方赤外線センサ24からの赤外線ビーム24cによる前方検出領域15内に段差4(左段差4L以外の段差も含む)を検出しなくなるまで右方向に旋回して回避する。基本的には、前方検出領域15内と左側検出領域16内に段差4を検出しなくなるまで右旋回すれば良いが、右側赤外線センサ26からの赤外線ビーム26cによる右側検出領域17内の段差検出も加えて良い。
(ハ) 右側に段差を検出した場合 図14(c),(d)に示した如く、移動ロボット1が右側赤外線センサ26からの赤外線ビーム26cによって右側検出領域17内(実施例の場合は右方向90mm)に右段差4Rを検出し、且つ、この右段差4Rの右段差量が許容段差量の値30mmよりも大きい場合には、この右側検出領域17内はもちろんのこと、前方赤外線センサ24からの赤外線ビーム24cによる前方検出領域15内に段差4(右段差4R以外の段差も含む)を検出しなくなるまで左方向に旋回して回避する。基本的には、前方検出領域15内と右側検出領域17内に段差4を検出しなくなるまで左旋回すれば良いが、左側赤外線センサ25からの赤外線ビーム25cによる左側検出領域16内の段差検出もそれに加えて良い。
(ニ) 検出不可能な段差への対応 図15(a)に示したような島状(上段差)、又は、池状(下段差)などの前段差4F(4)に対しては検出できない場合がある。図15(a)では、前方赤外線センサ24からの赤外線ビーム24cによる前方検出領域15内から前段差4F(4)は外れた所に存在し、移動ロボット1がそのまま前進を続けると前段差4Fに干渉する危険性がある。しかし、家庭内では図15(a)に示したような前段差4Fが単独で存在するのは稀であり、通常は図15(b)に示したように前段差4F(4)に続く形で壁面3A(3)が設けられているのが一般的である。そして、この場合は不図示の超音波センサ22でその壁面3Aを検出することで前述したような壁面3Aに対しての回避方法を取ることで、移動ロボット1の前段差4Fへの進入を防止することができる。また、図15(a)のような前段差4Fが存在するような場合は、その角部に空き瓶やペットボトルなど、ダミーとなるような障害物3を置くことによって、移動ロボット1はそのダミーの障害物3を不図示の超音波センサ22で検出して回避することができるので前段差4Fへの進入を防止することができる。
次に、障害物や段差の回避処理の動作と前進行動処理の動作とを図16〜図20を用いて順に説明する。
(1)障害物を検出して回避行動するフロー 図16は超音波センサ22(図5)を使用して前方にある障害物3を検出し、回避行動を取るフォローチャートを示す。障害物の基本的な回避方法は30°ステップで左旋回を繰り返す処理となっている。rotation_counter(以後、Rカウンタと記す)とobstacle_counter(以後、OBカウンタと記す)というカウンタを2つ用意する。
まず、ステップS101でRカウンタを0にリセットする。Rカウンタは、全周囲障害物に囲まれている状況の時に左旋回を繰り返す無限ループに入るのを防ぐためのもので、360°の旋回、すなわち30°ステップの旋回で12回連続して旋回を繰り返した場合にはデッドロック状態としてエマージェンシー処理(ステップS111)を行う。この判断処理をステップS102で実施している。
次に、ステップS103ではOBカウンタを0にリセットする。OBカウンタとは前方に障害物がない位置を連続して3方向に検出するのを数えるカウンタである。起動時に前進を可能にする条件として、最初の位置を基準として左右一定角度(実施例では30°)づつ旋回して各位置において前方距離260mm以内に障害物を検出しないという項目を前述したが、実際の制御においては処理を簡素化するために、この左右の旋回制御を一方向(実施例では左旋回)での旋回制御に置換え、3回連続して前方距離260mm以内に障害物を検出しなければその中央の方向に戻った位置(実施例では最後に右旋回)で障害物を回避したとみなす。
次に、ステップS104でRカウンタを1カウントアップし、ステップS105で超音波センサからの前方障害物との距離情報を入力する。次に、ステップS106で入力した距離情報が260mm以内かどうか判別をし、260mm以内に障害物がある場合にはステップS102に戻る。一方、ステップS106で260mm以内に障害物がない場合にはステップS107で左旋回30°を実施してステップS108でOBカウンタを1カウントアップする。次にステップS109でOBカウンタが2かどうかを判別し、2でない場合は104に戻る。一方、ステップS109でOBカウンタが2の場合は3回連続して前方距離260mm以内に障害物を検出しなかった場合なので、次のステップS110でその中央の位置に戻るために右旋回30°して処理を終了し、続いて次に説明する前進行動の処理を実行する。
(2)障害物を検出しながら前進行動するフロー 図18は超音波センサ22(図5)を使用して前方にある障害物3を検出しながら前進行動をするフローチャートを示す。この際、図17に示したように、前進速度は障害物との距離に応じて3段階のモードを設定している。即ち、障害物との距離が1500mmを越える場合に速度は高速モード、障害物との距離が500mmを越え1500mm以内の場合に速度は中速モード、障害物との距離が260mmを越え500mm以内の場合に速度は低速モード、そして260mm以内の場合には当然ながら停止する。
上記の制御を行うフローが図18である。まず、ステップ121で超音波センサからの前方障害物との距離情報を入力し、ステップS122で障害物との距離が260mm以内かどうかを判別する。障害物との距離が260mm以内の場合にはステップS123で停止処理を行いこのフローを終了する。一方、ステップS122で260mm以内に障害物がない場合にはステップS124に進み、障害物との距離が500mm以内かどうかを判別する。ステップS124で障害物との距離が500mm以内であればステップS125に移り、前進速度を低速モードに設定してステップS121に戻る。一方、ステップS124で障害物との距離が500mmを越える場合には、ステップS126に進み、障害物との距離が1500mm以内かどうかを判別処理する。このステップS126の判別処理で障害物との距離が1500mm以内であればステップS127に移り、前進速度を中速モードに設定してステップS121に戻る。一方、ステップS126で1500mmを越える場合にはステップS128で前進速度を高速モードに設定してステップS121に戻る。以上のループを繰り返して、障害物との距離が260mm以内になった時点で移動ロボット1は前進をやめて停止しこの処理を終了し、前述した障害物を回避する処理へと移行する。
(3)障害物と段差を検出して回避行動するフロー 図19は超音波センサ22(図5)と各赤外線センサ24〜26(図6)を使用して前方にある障害物3と前段差4F、及び、左右にある左段差4L,右段差4Rを検出して回避行動を取るフォローチャートを示す。障害物と段差の基本的な回避方法は前述したように、30°ステップの旋回を繰り返す処理となっている。rotation_counter(以後、Rカウンタと記す)とobstacle_counter(以後、OBカウンタと記す)というカウンタを2つと、さらに右方向の旋回を指示するためのr_rotation_flag (以降、Rフラグと記す)というフラグを用意する。
まず、ステップS131で、Rカウンタを0にリセットし、ステップS132でRフラグを0にリセットする。Rカウンタは、全周囲障害物や段差に囲まれている状況の時に旋回を繰り返す無限ループに入るのを防ぐためのもので、360°の旋回、すなわち30°ステップの旋回で12回連続して旋回を繰り返した場合にはデッドロック状態としてエマージェンシー処理(ステップS134)を行う。この判断処理をステップS133で実施している。
Rフラグは、最初に左方向にある左段差を検出した場合に、その後の回避行動を右旋回で実行することを判別指示するためのものである。Rフラグが1にセットされるとその後の回避行動は右旋回となる。
次に、ステップS135ではOBカウンタを0にリセットする。OBカウンタとは前方に障害物がない位置を連続して3方向に検出するのを数えるカウンタである。起動時に前進を可能にする条件として、最初の位置を基準として左右一定角度(実施例では30°)づつ旋回して各位置において前方距離260mm以内に障害物を検出しないという項目を前述したが、段差検出を行う場合は、前方と左右方向の段差も検出しないとう条件を加える。実際の制御においては処理を簡素化するために、この左右の旋回制御を一方向での旋回制御に置き換え、3回連続して前方距離260mm以内の障害物と前方と左右方向に段差を検出しなければその中央の方向に戻った位置で障害物を回避したとみなす。
次に、ステップS136でRカウンタを1カウントアップし、ステップS137で左側赤外線センサ及び右側赤外線センサからの各段差情報を入力する。次にステップS138で、入力した各段差情報から左段差の有無の判別を行い、左段差がある場合にはステップS151に、左段差がない場合にはステップS139に進む。
次に、ステップS139では続いて右段差の有無の判別を行い、右段差があれば回避処理を行うためにステップS140で左旋回30°を実施してステップS142に進み、右段差がない場合にはステップS141でRフラグが1にセットされているかの判別を行い、Rフラグが0の場合にはステップS142へ進み、Rフラグが1の場合にはステップS153へと移行する。
次に、ステップS142では、前方赤外線センサからの段差情報を入力する。次にステップS143で前段差の有無の判別を行い、前段差があればステップS144で回避行動である左旋回30°を実施してステップS133に戻る。一方、ステップS143で前段差がなければ続いてステップS145に進み、超音波センサからの前方障害物との距離情報を入力する。
次に、ステップS145で入力した超音波センサからの距離情報が260mm以内かどうかの判別処理をステップS146で行い、260mm以内に障害物がある場合にはステップS144で回避行動である左旋回30°を実施してステップS133に戻る。一方、ステップS146で260mm以内に障害物がない場合には、ステップS147で左旋回30°を実施した後、ステップS148でOBカウンタを1カウントアップする。
次に、ステップS149でOBカウンタが2かどうかを判別し、2でない場合は136に戻る。一方、ステップS149でOBカウンタが2の場合には3回連続して、前方距離260mm以内に障害物と、前段差,左段差,右段差とがない場合なので、次のステップS150でその中央の位置に戻るために右旋回30°を実行して処理を終了し、後述する(4)の前進行動の処理を実行する。
ここで、前述したステップS138に戻り、このステップS138で左段差を検出した場合には、ステップS151でRフラグを1にセットし、ステップS152で回避行動である右旋回30°を実施する。これ以降は回避は全て右旋回での処理となる。
次に、ステップS153では、前方赤外線センサからの段差情報を入力する。次に、ステップS154で前段差の有無の判別を行い、前段差があればステップS155で回避行動である右旋回30°を実施してステップS133に戻る。一方、ステップS154で前段差がなければ続いてステップS156に進み、超音波センサからの前方障害物との距離情報を入力する。次に、ステップS156で入力した超音波センサからの距離情報が260mm以内かどうかの判別処理をステップS157で行い、260mm以内に障害物がある場合にはステップS155で回避行動である右旋回30°を実施してステップS133に戻る。
次に、ステップS157で260mm以内に障害物がない場合には、ステップS158で右旋回30°を実施した後、ステップS159でOBカウンタを1カウントアップする。
次に、ステップS160ではOBカウンタが2かどうかを判別し、2でない場合にはステップS136に戻る。一方、ステップS160でOBカウンタが2の場合には3回連続して、前方距離260mm以内に障害物と前方と左右方向に段差がない場合なので、次のステップS161でその中央の位置に戻るために左旋回30°を実行して処理を終了し、続いて次に説明する前進行動の処理を実行する。
(4)障害物と段差名を検出しながら前進行動するフロー 図20は超音波センサ22(図5)と各赤外線センサ24〜26(図6)を使用して前方にある障害物3と前段差4F、及び、左右方向にある左段差4L,右段差4Rを検出しながら前進行動を取るフローチャートを示す。この際、先に図17を用いて説明したように、前進速度は障害物との距離に応じて3段階のモードを設定している。即ち、障害物との距離が1500mmを越える場合に速度は高速モード、障害物との距離が500mmを越え1500mm以内の場合に速度は中速モード、障害物との距離が260mmを越え500mm以内の場合に速度は低速モード、そして260mm以内の場合は当然ながら停止する。また、前進行動中に前段差、左段差又は右段差を検出した時はブレーキ処理で停止する。
上記の制御を行うフローが図20である。まず、ステップS171で前方赤外線センサ,左側赤外線センサ,右側赤外線センサからの各段差情報を入力し、次にステップS172で超音波センサからの前方障害物との距離情報を入力する。
次に、ステップS173で前段差の有無を判別し、前段差がある場合にはステップS179で車輪ブレーキ処理を実行した後、ステップS182で車輪停止処理を行ってこのフローを終了する。最初に前段差の有無の判別を行うのは、前進方向では前段差検出距離が短い(実施例では110mm)ため、ブレーキ処理を素早く実施しないと前段差に干渉するからである。
ステップS173の前段差判別処理で前段差を検出しなかった場合にはステップS174に進み、引き続いて右段差の有無の判別を行う。このステップS174で右段差がある場合にはステップS180で車輪ブレーキ処理を実行した後、ステップS182で車輪停止処理を行ってこのフローを終了する。一方、ステップS174で右段差がなければ、続いてステップS175に移り、左段差の有無の判別を行う。このステップS175で左段差がある場合にはステップS181で車輪ブレーキ処理を実行した後、ステップS182で車輪停止処理を行ってこのフローを終了する。一方、ステップS175で左段差がなければステップS176へと進み、今度は前方にある障害物との距離が260mm以内かどうかを判別する。このステップS176で障害物との距離が260mm以内の場合にはステップS182で車輪停止処理を行いこのフローを終了する。一方、ステップS176で260mm以内に障害物がない場合にはステップS177に進み、障害物との距離が500mm以内かどうかを判別する。このステップS177で障害物との距離が500mm以内であればステップS183に移り、前進速度を低速モードに設定してステップS171に戻る。一方、ステップS177で障害物との距離が500mmを越える場合には、ステップS178に進み、障害物との距離が1500mm以内がどうかを判別処理する。このステップS178の判別処理で障害物との距離が1500mm以内であればステップS184に移り、前進速度を中速モードに設定してステップS171に戻り、1500mmを越える場合はステップS185で前進速度を高速モードに設定してステップS171に戻る。
以上のループを繰り返して、前方か左右方向に段差を検出した時にはブレーキ処理を経由して移動ロボット1を停止させ、また、障害物との距離が260mm以内になった時点で移動ロボット1は前進をやめて停止しこのフローを処理を終了し、(3)の回避フローで前述した障害物と段差を回避する処理へと移行する。
以上は旋回行動による障害物や段差を回避するフローチャートを説明したが、側進を行って回避するのも同様の考え方で実現できるが、ここでは詳しい説明省略する。