(57)【要約】      （修正有）【課題】通路の検出をより正確に行うことができる移動体を提供する。【解決手段】移動体１によれば、測距センサによって移動体の周囲の測距データを取得し、移動体１を各動作（直進、現在の角速度を維持、右旋回及び左旋回）させた場合の移動軌跡のうち進行距離が最大の移動軌跡から、測距範囲ＤＣの半径を算出する。その測距範囲ＤＣによって測距データをクラスタＣ１、Ｃ２、Ｃ３に区分けし、各クラスタの端点から通路Ｐ１、Ｐ２、Ｐ３が決定される。即ち測距範囲ＤＣは、移動体１の周囲の障害物の状況によって変更されるので、測距データを、移動体１のその時点での周囲の状況に応じたクラスタに区分けできる。このように区分けされたクラスタによって、移動体１が走行する通路をより正確に検出できる。【選択図】図８
2020166707.tif 000002
【特許請求の範囲】
【請求項１】
移動体において、
当該移動体を移動させる移動手段と、当該移動体の周囲にある障害物までの距離を測距する測距手段と、その測距手段による測距結果に基づいて当該移動体が進行可能な通路を検出する通路検出手段と、その通路検出手段により検出された通路を当該移動体が移動するように前記移動手段を制御する移動制御手段とを備えており、
前記通路検出手段は、当該移動体が所定の動作をした場合の進行可能な距離を算出する進行距離算出手段と、その進行距離算出手段によって算出された進行可能な距離に基づいて前記測距手段による測距範囲を決定する測距範囲決定手段と、を備え、その測距範囲決定手段により決定された測距範囲の測距結果に基づいて当該移動体が進行可能な通路を検出するものであることを特徴とする移動体。
【請求項２】
前記進行距離算出手段は、当該移動体が前記所定の動作として角速度を０の状態から所定角速度までの各角速度における右旋回動作および左旋回動作をそれぞれ行った場合の最大進行可能距離を算出するものであり、
前記測距範囲決定手段は、その算出された最大進行可能距離に基づいて前記測距手段による測距範囲を決定するものであることを特徴とする請求項１記載の移動体。
【請求項３】
前記測距範囲決定手段は、前記進行距離算出手段により算出された最大進行可能距離と、その最大進行可能距離の始点から終点までの直線距離とに基づいて、前記測距範囲を決定するものであることを特徴とする請求項２記載の移動体。
【請求項４】
前記測距範囲決定手段は、前記測距範囲の最大値と最小値とを有し、その最大値と最小値との間にて前記測距範囲を決定するものであることを特徴とする請求項１から３のいずれかに記載の移動体。
【請求項５】
前記通路検出手段は、前記測距範囲決定手段により決定された測距範囲の測距結果に基づいて、前記測距手段により測距された隣り合う測距点間の距離が所定未満の測距点を同一のクラスタとし、一方、隣り合う測距点間の距離が所定以上の測距点を別のクラスタとして区分けし、隣り合うクラスタ間の距離に基づいて通路を検出するものであることを特徴とする請求項１から４のいずれかに記載の移動体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、移動体に関し、特に、通路の検出をより正確に行うことができる移動体に関するものである。
【背景技術】
【０００２】
特許文献１には、移動する追従対象（対象者）２に対して、斜め前方かつ相対的な所定位置（目標位置）を維持して追従動作を行う移動ロボット１が開示されている。移動ロボット１は、追従対象２の向きをカメラ等によって検出し、その検出された追従対象２の向きに応じて当該移動ロボット１の目標位置を決定する。移動ロボット１は、決定された目標位置に対する移動経路を算出し、移動する。
【０００３】
ところで、移動ロボット（ロボット）が、地図データの無い未知の空間を走行する場合には、対象者との位置関係を保つだけでなく、移動可能な通路を検出しなければならない。通路の検出方式としては、例えば、測距センサを用いて、ロボットの周囲にある壁などの障害物までの距離を測距し、その測距結果に基づいて通路を検出するものがある。具体的には、まずロボットの周囲にある障害物までの距離を測距する。隣り合う測距点のうち、測距点間の距離が所定値以内のものを同一の障害物を測距したデータとして、同一のクラストとして扱う。複数のクラスタがある場合、隣り合うクラスタ間の最短距離を通路として検出する（非特許文献１〜３参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−２３４４０４号公報
【非特許文献】
【０００５】
【非特許文献１】石原  悠，高橋  正樹著  「操作入力と環境認識に基づく操作性の低いデバイスを利用する知的車いすの行動制御」日本ロボット学会誌 Vol.21 No.1, pp.107〜116, 2013
【非特許文献２】奥川恭平，中西 正樹，満倉 靖恵，高橋正樹著  「随意性瞬目を用いた電動車いすの環境認識に基づく走行制御と実験的検証」日本機械学会論文集 Vol.80, No.813, 2014
【非特許文献３】Ayanori Yorozu and Masaki Takahashi 「Obstacle Avoidance with Translationaland Efficient Rotational Motion Control Considering Movable Gaps and Footprintfor Autonomous Mobile Robot」International Journal of Control, Automation and Systems 14(5) (2016)1352-1364
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、かかる通路の検出方式によれば、十字路やＴ字路、Ｌ字路などのシンプルな通路は検出可能であるが、クランクやＵ字路のように、曲がった先が更に曲がった通路では、通路を正しく検出できない場合があった。
【０００７】
本発明は、上述した問題点を解決するためになされたものであり、通路の検出をより正確に行うことができる移動体を提供することを目的としている。
【課題を解決するための手段】
【０００８】
この目的を達成するために本発明の移動体は、当該移動体を移動させる移動手段と、当該移動体の周囲にある障害物までの距離を測距する測距手段と、その測距手段による測距結果に基づいて当該移動体が進行可能な通路を検出する通路検出手段と、その通路検出手段により検出された通路を当該移動体が移動するように前記移動手段を制御する移動制御手段とを備えており、前記通路検出手段は、当該移動体が所定の動作をした場合の進行可能な距離を算出する進行距離算出手段と、その進行距離算出手段によって算出された進行可能な距離に基づいて前記測距手段による測距範囲を決定する測距範囲決定手段と、を備え、その測距範囲決定手段により決定された測距範囲の測距結果に基づいて当該移動体が進行可能な通路を検出するものである。
【発明の効果】
【０００９】
本発明の移動体によれば、測距手段により当該移動体の周囲にある障害物までの距離を測距し、その測距結果に基づいて、通路検出手段により当該移動体が進行可能な通路を検出する。移動制御手段は、通路検出手段により検出された通路を当該移動体が移動するように移動手段を制御する。
【００１０】
ここで、通路検出手段は、通路の検出に当たって、まず進行距離算出手段により当該移動体が所定の動作をした場合の進行可能な距離を算出し、その算出された進行可能な距離に基づいて、測距範囲決定手段によって、測距手段による測距範囲を決定し、この決定された測距範囲の測距結果に基づいて当該移動体が進行可能な通路を検出する。このように、通路検出手段は、当該移動体の周囲の状況に応じて測距範囲を変更しつつ通路を検出するので、従来に比べて、より正確に通路を検出することができる。
【図面の簡単な説明】
【００１１】
【図１】（ａ）は、移動体の外観を示す模式図であり、（ｂ）は、障害物間を走行する移動体の上面図である。
【図２】移動体の電気的構成を示すブロック図である。
【図３】メイン処理のフローチャートである。
【図４】移動軌跡算出処理のフローチャートである。
【図５】（ａ）は、左旋回処理のフローチャートであり、（ｂ）は、右旋回処理のフローチャートである。
【図６】測距範囲半径算出処理のフローチャートである。
【図７】（ａ）は、移動体の各移動軌跡を模式的に表した図であり、（ｂ）は測距範囲の半径の算出を説明するための図である。
【図８】（ａ），（ｂ）は、通路の検出および移動体の走行を説明するための図である。
【図９】変形例における移動軌跡算出処理のフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明の好ましい実施形態について、添付図面を参照して説明する。まず、図１を参照して、本実施形態における移動体１の概要を説明する。図１（ａ）は、移動体１の外観を示す模式図である。移動体１は、周囲の障害物Ｂ間に形成される通路を検出し、その通路を通過しながら走行する、自律走行型のロボットである。
【００１３】
図１（ａ）に示す通り、移動体１は、主に外装２と、測距センサ３とを有する。測距センサ３は、外装２の前後に配設され、周囲にレーザ光を照射することで、測距センサ３と障害物Ｂとの距離を検出（測距）する装置である。測距センサ３からは、角度０．２５度毎に検出された対象物との距離が、その角度に対応付けて取得される。以下、測距センサ３から検出される距離および角度のことを「測距データＭＰ」と称す。
【００１４】
また１の測距センサ３は、周囲約２７０°に対する障害物Ｂとの測距データＭＰを取得できる。本実施形態の移動体１においては、外装２の前後に１つずつの測距センサ３を配設することで、移動体１の全方位（３６０度）に対する障害物Ｂとの測距データＭＰを取得できる。
【００１５】
外装２の下部における四隅には、車輪４が配設される。各車輪４にはそれぞれモータ（図示せず）が接続され、後述する駆動部１５（図２参照）からの制御信号に基づいてモータを駆動させることで、移動体１が移動する。
【００１６】
ここで、図１（ｂ）を参照して、移動体１が走行する通路を説明する。図１（ｂ）は、障害物Ｂ間を走行する移動体１の上面図である。なお、矢印Ｆは、移動体１の進行方向を表している。
【００１７】
まず、測距センサ３から測距データＭＰを取得する。取得された測距データＭＰのうち、移動体１の位置を中心とした円形状の範囲である測距範囲ＤＣ内の測距データＭＰを取得する。図１（ｂ）及び以降の図面においては、測距範囲ＤＣ内の測距データＭＰを白抜きの四角形で表し、測距範囲ＤＣ外の測距データＭＰを黒塗りの四角形で表している。
【００１８】
取得された測距範囲ＤＣの測距データＭＰのうち、隣り合う測距データＭＰとの距離を確認する。隣り合う測距データＭＰの距離が所定距離（例えば５０ｍｍ）未満の一連の測距データＭＰを同一の「クラスタ」として区分け（グルーピング）する。一方で、所定距離より大きい一連の測距データＭＰを別のクラスタとして区分けする。図１（ｂ）においては、移動体１の進行方向における左側にクラスタＣ１、右側にクラスタＣ２、左前方側にクラスタＣ３、右前方側にクラスタＣ４がそれぞれ区分けされる。
【００１９】
次に、区分けされたクラスタＣ１〜Ｃ４の端点に基づいて通路が決定される。具体的には、各クラスタの端点に該当する測距データＭＰを基点として、隣り合うクラスタに属する測距データＭＰとの距離を全て算出する。算出された距離のうち、最小の距離を持つクラスタの端点と隣り合うクラスタに属する測距データＭＰとの間が、通路として検出される。
【００２０】
具体的にクラスタＣ１を例に説明すると、クラスタＣ１の一方の端点である測距データＭＰ１１から、隣り合うクラスタＣ２，Ｃ３に属する全ての測距データＭＰとの距離を算出する。クラスタＣ１の一方の端点に対して、クラスタＣ２に属する測距データＭＰのうち、距離が最小になるのは測距データＭＰ２１である。従って、クラスタＣ１の一方の端点、即ち測距データＭＰ１１と、クラスタＣ２の測距データＭＰ２１との間である、通路Ｐ１が検出される。また、クラスタＣ１の一方の端点に対して、クラスタＣ３に属する測距データＭＰのうち、距離が最小になるのは測距データＭＰ３４であるので、クラスタＣ１の測距データＭＰ１１と、クラスタＣ３の測距データＭＰ３４との間による通路Ｐ２が検出される。
【００２１】
また、クラスタＣ１の他方の端点である測距データＭ１２と、クラスタＣ２の測距データＭＰ２２（クラスタＣ２の一方の端点でもある）との間による通路Ｐ３が検出される。同様にクラスタＣ２〜Ｃ４により、通路Ｐ４〜Ｐ７も検出される。
【００２２】
移動体１は、このように複数検出された通路Ｐ１〜Ｐ７のうち、移動体１の位置に最も近く、移動体１の進行方向側の通路を選択して走行する。図１（ｂ）では、移動体１に最も近く、進行方向側の通路は通路Ｐ１であるので、移動体１は、通路Ｐ１に向けて走行する。
【００２３】
かかる方式によれば、測距範囲ＤＣの大小によって、区分けされるクラスタが変化し、そのクラスタによって決定される通路も変化する。それに応じて移動体１が走行する通路も変化する。本実施形態では、移動体１の進行可能な距離、即ち移動体１を各動作（直進、左旋回、右旋回等）毎に走行する場合の移動軌跡を算出し、それぞれ走行する移動軌跡のうち、移動体１から障害物Ｂに接触するまで辿った距離（積算距離）である進行距離ＬＤが最大である移動軌跡に基づき、測距範囲ＤＣの半径ＲＣを設定するようにしている。
【００２４】
次に、図２を参照して移動体１の電気的構成を説明する。図２は、移動体１の電気的構成を示すブロック図である。移動体１は、ＣＰＵ１０と、フラッシュＲＯＭ１１と、ＲＡＭ１２とを有し、これらはバスライン１３を介して入出力ポート１４にそれぞれ接続されている。入出力ポート１４には、図１で上記した測距センサ３と、駆動部１５とがそれぞれ接続されている。なお、測距センサ３は、外装２（図１（ａ）参照）の前後にそれぞれ１つずつ配設されるが、図２のブロック図では、１の測距センサ３として表している。
【００２５】
ＣＰＵ１０は、バスライン１３により接続された各部を制御する演算装置である。フラッシュＲＯＭ１１は、ＣＰＵ１０により実行されるプログラムや固定値データ等を格納した書き換え可能な不揮発性の記憶装置であり、制御プログラム１１ａが記憶される。ＣＰＵ１０によって制御プログラム１１ａが実行されると、図３のメイン処理が実行される。
【００２６】
ＲＡＭ１２は、ＣＰＵ１０が制御プログラム１１ａの実行時に各種のワークデータやフラグ等を書き換え可能に記憶するためのメモリであり、測距センサ３から測距された測距データＭＰが記憶される測距データメモリ１２ａと、移動軌跡メモリ１２ｂと、進行距離メモリ１２ｃと、直線距離メモリ１２ｄと、測距範囲ＤＣの半径ＲＣが記憶される測距範囲半径メモリ１２ｅとがそれぞれ設けられる。
【００２７】
移動軌跡メモリ１２ｂは、移動体１が走行する移動軌跡のうち、進行距離ＬＤが最大である移動軌跡が記憶されるメモリであり、進行距離メモリ１２ｃは、その移動軌跡メモリ１２ｂに記憶される移動軌跡の進行距離ＬＤが記憶されるメモリである。直線距離メモリ１２ｄは、移動軌跡メモリ１２ｂに記憶される移動軌跡において、移動体１の位置と、その移動軌跡における障害物Ｂとの接触する位置との直線状の距離である、直線距離ＬＭが記憶されるメモリである。
【００２８】
駆動部１５は、移動体１を移動動作させるための装置であり、車輪４（図１（ａ）参照）および車輪４の駆動源となるモータ（図示せず）等から構成される。ＣＰＵ１０から制御信号が駆動部１５に入力されると、入力された制御信号に基づいてモータが回転し、該モータの回転が動力となって車輪４が駆動し、移動体１を動作させる。
【００２９】
次に、図３〜図８を参照して、移動体１のＣＰＵ１１で実行されるメイン処理を説明する。図３は、移動体１のメイン処理のフローチャートである。メイン処理は移動体１の電源投入直後に実行される。メイン処理はまず、測距センサ３から取得した測距データＭＰを測距データメモリ１２ａへ保存する（Ｓ１）。Ｓ１の処理の後、移動体１の状態情報、即ち移動体１の速度、角速度および角加速度等を取得する（Ｓ２）。Ｓ２の処理の後、移動軌跡算出処理（Ｓ３）を実行する。図４及び図６（ａ）を参照して、移動軌跡算出処理を説明する。
【００３０】
図４は、移動軌跡算出処理のフローチャートである。移動軌跡算出処理においては、移動体１を直進させた場合、現在の角速度を維持させた場合、右旋回させた場合及び左旋回させた場合の各移動軌跡が算出され、その中で最大の進行距離ＬＤの移動軌跡と、その進行距離ＬＤとが取得される。
【００３１】
移動軌跡算出処理はまず、移動体１を直進させたまま、Ｔ秒間（例えば５秒間）走行した場合の移動軌跡を算出する（Ｓ２０）。即ち移動体１の操舵角、速度を現在の状態のままとして、Ｔ秒間走行させた場合に移動体１が走行する移動軌跡を算出する。
【００３２】
Ｓ２０の処理の後、算出された移動軌跡において進行距離ＬＤを算出する（Ｓ２１）。具体的には、移動軌跡と障害物Ｂとの接触する位置、即ち測距データメモリ１２ａの測距データＭＰのうち、算出された移動軌跡に含まれる測距データＭＰを取得し、移動体１の現在位置から該測距データＭＰまで、移動軌跡を辿った場合の距離が、進行距離ＬＤとされる。
【００３３】
Ｓ２１の処理の後、移動体１の現在の角速度を維持して、Ｔ秒間走行した場合の移動軌跡を算出し（Ｓ２２）、その移動軌跡において進行距離ＬＤを算出する（Ｓ２３）。Ｓ２３の処理の後、左旋回処理（Ｓ２４）を実行する。図５（ａ）を参照して、左旋回処理を説明する。
【００３４】
図５（ａ）は、左旋回処理のフローチャートである。左旋回処理は、移動体１の目標角速度を初期値から最大角速度まで変化させた場合の左旋回時の移動軌跡をそれぞれ取得し、その中で障害物Ｂまでの進行距離が最大である移動軌跡を取得する処理である。なお、本実施形態では、移動体１における左側が正、右側が負とされる。よって角速度を正側へ変化させることで移動体１は左旋回し、角速度を負側へ変化させることで移動体１は右旋回する。
【００３５】
左旋回処理はまず、左旋回時の目標角速度として初期値であるω（例えば５ｒａｄ／ｓ）を設定する（Ｓ３０）。Ｓ３０の処理の後、移動体１の現在の角速度から目標角速度まで変化させた場合のＴ秒間の移動軌跡を算出する（Ｓ３１）。
【００３６】
Ｓ３１の処理において、現在の角速度から目標角速度に変化させるのは、移動体１の操舵角を変更させる場合、操舵角の変更を指示してから、実際にその操舵角になるまでに「遅れ」が生じるからである。よって、移動軌跡において、移動体１の角速度を、現在の角速度から目標角速度まで変化させることで、実際に移動体１が辿る軌跡に応じた移動軌跡を算出できる。
【００３７】
Ｓ３１の処理の後、目標角速度にΔω（例えば０．５ｒａｄ／ｓ）を加算し（Ｓ３２）、加算後の目標角速度が最大角速度（例えば１０ｒａｄ／ｓ）よりも大きくなったかを確認する（Ｓ３３）。Ｓ３３の処理において、目標角速度が最大角速度以下であれば（Ｓ３３：Ｎｏ）、Ｓ３１以下の処理を繰り返す。即ちＳ３１の処理によって、現在の目標角速度での移動軌跡が取得できたので、次の目標角速度として、現在の目標角速度にΔωを加算した場合の移動軌跡を算出する。
【００３８】
Ｓ３３の処理において、目標角速度が最大角速度より大きければ（Ｓ３３：Ｙｅｓ）、目標速度が最大角速度になるまでの移動軌跡が全て取得できたと判断できるので、取得された各左旋回時の移動軌跡における、障害物Ｂまでの進行距離を算出する（Ｓ３４）。
【００３９】
Ｓ３４の処理の後、各左旋回時の移動軌跡のうち、最大の進行距離の移動軌跡を取得する（Ｓ３５）。これにより、移動体１の目標角速度を初期値ωから最大角速度まで、Δω毎に変化させた場合の左旋回の移動軌跡のうち、最大の進行距離の移動軌跡を取得できる。Ｓ３５の処理の後、左旋回処理を終了し、図４の移動軌跡算出処理に戻る。
【００４０】
Ｓ２４の左旋回処理の後、右旋回処理（Ｓ２５）を実行する。図５（ｂ）を参照して、右旋回処理を説明する。
【００４１】
図５（ｂ）は、右旋回処理のフローチャートである。右旋回処理は、図５（ａ）で上記した左旋回処理と同様に、移動体１の目標角速度を初期値から最小角速度まで変化させた場合の右旋回時の移動軌跡を複数取得し、その中で障害物Ｂまでの進行距離が最大である移動軌跡を取得する処理である。
【００４２】
右旋回処理はまず、右旋回時の目標角速度として初期値である−ω（例えば−５ｒａｄ／ｓ）を設定する（Ｓ４０）。
【００４３】
Ｓ４０の処理の後、移動体１の現在の角速度から目標角速度まで変化させた場合のＴ秒間の移動軌跡を算出する（Ｓ４１）。Ｓ４１の処理の後、目標角速度からΔω（例えば０．５ｒａｄ／ｓ）を減算し（Ｓ４２）、減算後の目標角速度が最小角速度（例えば−１０ｒａｄ／ｓ）よりも小さくなったかを確認する（Ｓ４３）。Ｓ４３の処理において、目標角速度が最小角速度以上であれば（Ｓ４３：Ｎｏ）、Ｓ４１以下の処理を繰り返す。即ちＳ４１の処理によって、現在の目標角速度での移動軌跡が取得できたので、次の目標角速度として、現在の目標角速度からΔωを減算した場合の移動軌跡を算出する。
【００４４】
Ｓ４３の処理において、目標角速度が最小角速度より小さければ（Ｓ４３：Ｙｅｓ）、目標速度が最小角速度になるまでの移動軌跡が全て取得できたと判断できるので、取得された各右旋回時の移動軌跡における、障害物Ｂまでの進行距離を算出する（Ｓ４４）。
【００４５】
Ｓ４４の処理の後、各右旋回時の移動軌跡のうち、最大の進行距離の移動軌跡を取得する（Ｓ４５）。これにより、移動体１の目標角速度を初期値−ωから最小角速度までΔω毎に変化させた場合の右旋回の移動軌跡のうち、最大の進行距離の移動軌跡を取得できる。Ｓ４５の処理の後、右旋回処理を終了し、図４の移動軌跡算出処理に戻る。
【００４６】
Ｓ２５の右旋回処理の後、各動作、即ち移動体１を直進させた場合、現在の角速度を維持させた場合、右旋回させた場合及び左旋回させた場合の移動軌跡の中で、最大の進行距離の移動軌跡を取得して移動軌跡メモリ１２ｂに保存し、その移動軌跡の進行距離を進行距離メモリ１２ｃに保存する（Ｓ２６）。Ｓ２６の処理の後、移動軌跡算出処理を終了して、図３のメイン処理に戻る。
【００４７】
ここでＳ２６の処理による移動軌跡の取得について、図７（ａ）を参照して説明する。図７（ａ）は、移動体１の各移動軌跡を模式的に表した図である。図７（ａ）において、移動体１を直進させた場合の移動軌跡が軌跡ＰＳであり、移動体１の現在の角速度を維持させた場合の移動軌跡が軌跡ＰＫであり、移動体１を左旋回させた場合の移動軌跡が軌跡ＰＬであり、移動体１を右旋回させた場合の移動軌跡が軌跡ＰＲである。
【００４８】
このうち、軌跡ＰＬには、移動体１の角速度を初期値のωから最大角速度まで変化させて左旋回させた場合の移動軌跡のうち、最大の進行距離ＬＤである移動軌跡が設定され、軌跡ＰＲには、移動体１の角速度を−ωから最小角速度まで変化させて右旋回させた場合の移動軌跡のうち、最大の進行距離ＬＤである移動軌跡が設定される。
【００４９】
これら軌跡ＰＳ，ＰＲ，ＰＬ及びＰＲのうち、最大の進行距離ＬＤの移動軌跡のもの、図７（ａ）においては、軌跡ＰＲの移動軌跡が移動軌跡メモリ１２ｂに保存され、その進行距離ＬＤが進行距離メモリ１２ｃに保存される。これによって、移動体１が進行可能な移動軌跡のうち、最大の進行距離を持つ移動軌跡およびその進行距離ＬＤが取得される。
【００５０】
図３に戻る。Ｓ３の移動軌跡算出処理の後、測距範囲半径算出処理（Ｓ４）を実行する。測距範囲半径算出処理について、図６及び図７（ｂ）を用いて説明する。
【００５１】
図６は、測距範囲半径算出処理のフローチャートである。測距範囲半径算出処理は、移動軌跡算出処理で取得された移動軌跡に基づいて、測距範囲ＤＣ（図１参照）の半径ＲＣを算出する処理である。
【００５２】
測距範囲半径算出処理は、まず、移動軌跡メモリ１２ｂにおいて障害物Ｂと接触する位置を取得し、移動体１の位置と障害物Ｂと接触する位置を結ぶ線の直線距離、即ち直線距離ＬＭを直線距離メモリ１２ｄへ保存する（Ｓ５０）。
【００５３】
Ｓ５０の処理の後、直線距離メモリ１２ｄの直線距離ＬＭと、進行距離メモリ１２ｃの進行距離ＬＤとの比が、閾値Ｋ（例えば１．１）以下であるかを確認する（Ｓ５１）。具体的には、直線距離ＬＭと進行距離ＬＤとが以下の数式１を満たすかを確認する。
【００５４】
【数１】
2020166707.tif 000003
【００５５】
Ｓ５１の処理において、直線距離ＬＭと、進行距離ＬＤとの比が閾値Ｋ以下である場合は（Ｓ５１：Ｙｅｓ）、直線距離ＬＭに閾値Ｋを乗じた値を、測距範囲ＤＣの半径ＲＣとして測距範囲半径メモリ１２ｅに保存する（Ｓ５２）。一方でＳ５１の処理において、直線距離ＬＭと、進行距離ＬＤとの比が閾値Ｋより大きい場合は（Ｓ５１：Ｎｏ）、進行距離ＬＤを、測距範囲ＤＣの半径ＲＣとして測距範囲半径メモリ１２ｅに保存する（Ｓ５３）。
【００５６】
Ｓ５２，Ｓ５３の処理の後、測距範囲半径メモリ１２ｅにおける半径ＲＣの大きさを確認する（Ｓ５４）。本実施形態では、半径ＲＣの最大値（例えば４ｍ）および最小値（例えば２ｍ）が予め設定されているので、Ｓ５２，Ｓ５３の処理によって算出された半径ＲＣが最小値と最大値との範囲内であるかを確認する。
【００５７】
Ｓ５４の処理において、半径ＲＣの大きさが最大値より大きい場合は（Ｓ５４：最大値より大）、測距範囲半径メモリ１２ｅに最大値を保存し（Ｓ５５）、半径ＲＣの大きさが最小値より小さい場合は（Ｓ５４：最小値より小）、測距範囲半径メモリ１２ｅに最小値を保存する（Ｓ５６）。
【００５８】
一方で、半径ＲＣの大きさが最小値以上、かつ最大値以下である場合は（Ｓ５４：それ以外）、半径ＲＣの大きさを調整する必要がないので、Ｓ５５，Ｓ５６の処理をスキップする。Ｓ５４〜Ｓ５６の処理の後、測距範囲半径算出処理を終了し、図３のメイン処理に戻る。かかる測距範囲半径算出処理による測距範囲ＤＣの半径ＲＣの決定について、図７（ｂ）を参照して説明する。
【００５９】
図７（ｂ）は、測距範囲ＤＣの半径ＲＣの算出を説明するための図である。図７（ｂ）においては、右旋回の軌跡ＰＲが最大の進行距離ＬＤの移動軌跡であり、かかる軌跡ＰＲに基づいて、測距範囲ＤＣの半径ＲＣが算出される。
【００６０】
まず、図４のＳ２６の処理によって、軌跡ＰＲの進行距離ＬＤが取得される。図７（ｂ）においては説明のため、軌跡ＰＲを直線状に伸ばしたものも図示している。これに対して、図６のＳ５０の処理によって、移動体１の位置と障害物Ｂと接触する位置ＡＲとの直線距離ＬＭが取得される。図７（ｂ）においては、進行距離ＬＤが直線距離ＬＭに閾値Ｋを乗じたものよりも十分に大きいので、進行距離ＬＤが測距範囲ＤＣの半径ＲＣに設定される。
【００６１】
更にかかる半径ＲＣは、最小値以上かつ最大値以下の範囲内なので、測距範囲ＤＣの半径ＲＣが最小値または最大値に変更されない。よって、測距範囲ＤＣの半径ＲＣとして、軌跡ＰＲの進行距離ＬＤが設定される。
【００６２】
図３に戻る。Ｓ４の処理の後、測距データメモリ１２ａから、測距範囲ＤＣに属する測距データＭＰを取得する（Ｓ５）。具体的には、移動体１の位置を中心とした、測距範囲半径メモリ１２ｅの半径ＲＣに基づく測距範囲ＤＣを設定し、測距データメモリ１２ａに記憶される測距データＭＰのうち、測距範囲ＤＣ内の測距データＭＰを取得する。
【００６３】
Ｓ５の処理の後、取得した測距データＭＰに基づいて、図１（ｂ）で上記したクラスタを検出する（Ｓ６）。そして検出された各クラスタの端点を基準として、図１（ｂ）で上記した方式に基づいて通路を検出する（Ｓ７）。そして、検出された通路のうち、移動体１に最も近く且つ移動体１の進行方向側に位置する通路に向かって走行する（Ｓ８）。Ｓ８の処理の後は、Ｓ１以下の処理を繰り返す。
【００６４】
Ｓ７，Ｓ８の処理による、通路の検出および移動体１の走行について、図８を参照して説明する。図８（ａ），図８（ｂ）は、通路の検出を説明するための図である。なお、図８では簡略化のため、移動体１の進行方向における後方に検出される通路の図示を省略する。
【００６５】
図８（ａ）においては、右旋回時の軌跡ＰＲが最大の進行距離ＬＤを取る移動軌跡とされ、その軌跡ＰＲから半径ＲＣが算出され、測距範囲ＤＣが決定される。かかる測距範囲ＤＣに含まれる測距データＭＰのうち、隣り合う測距データＭＰが所定距離未満のものからクラスタが形成される。具体的には移動体１の進行方向における前後および左側にクラスタＣ１が、移動体１の進行方向における右側にクラスタＣ２が、右前方側にクラスタＣ３がそれぞれ形成される。そして、形成されたクラスタＣ１〜Ｃ３の端点を基準とした、通路Ｐ１，Ｐ２及びＰ３が検出される。このうち、移動体１に最も近く、移動体１の進行方向側の通路Ｐ１に向かって移動体１が走行する。
【００６６】
一方、図８（ｂ）においては、左旋回時の軌跡ＰＬが最大の進行距離ＬＤを取る移動軌跡とされ、その軌跡ＰＬから半径ＲＣが算出され、測距範囲ＤＣが決定される。かかる測距範囲ＤＣに含まれる測距データＭＰのうち、隣り合う測距データＭＰが所定距離未満のものからクラスタが形成される。具体的には移動体１の進行方向における後側にクラスタＣ１が、移動体１の進行方向における左前方から左後方側にクラスタＣ２が、右側から前方側にクラスタＣ３がそれぞれ形成される。そして、形成されたクラスタＣ１〜Ｃ３の端点を基準とした、通路Ｐ１及びＰ２が検出される。このうち、移動体１に最も近く、移動体１の進行方向側の通路Ｐ１に向かって移動体１が走行する。
【００６７】
このように、移動体１を直進させた場合、現在の角速度を維持させた場合、右旋回させた場合及び左旋回させた場合の移動軌跡のうち、進行距離ＬＤが最大の移動軌跡における進行距離ＬＤから、測距範囲ＤＣの半径ＲＣが算出され、その測距範囲ＤＣによって測距データＭＰからクラスタが区分けされ、区分けされたクラスタの端点から通路が決定される。
【００６８】
ここで、進行距離ＬＤが最大となる移動軌跡は、移動体１の周囲の障害物Ｂの状況に応じて変更される。かかる進行距離ＬＤに基づく、その測距範囲ＤＣの半径ＲＣも、移動体１の周囲の障害物Ｂの状況に応じて変更される。従って、測距範囲ＤＣとして、移動体１が周囲の障害物Ｂの状況下で走行可能な範囲が設定されるので、測距データＭＰを、移動体１のその時点の走行に応じたクラスタに区分けできる。
【００６９】
これにより、測距範囲ＤＣが小さ過ぎることで、測距データＭＰからクラスタが区分けされずに通路が検出されなかったり、一方で測距範囲ＤＣが大き過ぎることで、測距データＭＰから余分なクラスタが区分けされ、移動体１の走行に不適な通路が検出されたり、移動体１から遠ざかった余分な通路が検出されることを抑制できるので、通路をより正確に検出できる。
【００７０】
ここで、測距範囲ＤＣの半径ＲＣの算出において、直線距離ＬＭと進行距離ＬＤとの比が閾値Ｋ以下である場合（図６のＳ５１：Ｙｅｓ）、即ち直線距離ＬＭと進行距離ＬＤとの差が小さい場合に、直線距離ＬＭに閾値Ｋを乗じたものが測距範囲ＤＣの半径ＲＣに設定した（Ｓ５２）。直線距離ＬＭと進行距離ＬＤとの差が小さい場合は、移動軌跡が略直線状となる場合である。この場合に、進行距離ＬＤをそのまま測距範囲ＤＣの半径ＲＣとしてクラスタの区分けをすると、位置ＡＲ付近の測距データＭＰしかクラスタが区分けされず、通路を正確に検出できなくなる虞がある。そこで、直線距離ＬＭと進行距離ＬＤとの比が閾値Ｋ以下である場合に、直線距離ＬＭに閾値Ｋを乗じたものを測距範囲ＤＣの半径ＲＣとして設定することで、より広範囲の測距データＭＰからクラスタを区分けできるので、通路をより正確に検出できる。
【００７１】
更に、測距範囲ＤＣの半径ＲＣが最大値より大きい場合は（図６のＳ５４：最大値より大）、測距範囲ＤＣの半径ＲＣに最大値を設定し（Ｓ５５）、測距範囲ＤＣの半径ＲＣが最小値より小さい場合は（Ｓ５４：最小値より小）、測距範囲ＤＣの半径ＲＣに最小値を設定した（Ｓ５６）。これにより、測距範囲ＤＣの半径ＲＣが過度に大きくなったり、小さくなったりすることを未然に抑制できる。
【００７２】
以上、実施形態に基づき本発明を説明したが、本発明は上述した実施形態に何ら限定されるものではなく、本発明の趣旨を逸脱しない範囲内で種々の改良変更が可能であることは容易に推察できるものである。
【００７３】
上記実施形態では、図４，図５の移動軌跡処理において、各動作（直進、現在の角速度を維持、右旋回及び左旋回）においてまずＴ秒後の移動軌跡を算出し、その後、算出された移動軌跡から進行距離ＬＤを算出した。しかし、移動軌跡および進行距離ＬＤを算出する方式は、必ずしもこれに限られるものではなく、例えば、図９の移動軌跡算出処理（Ｓ７０）のように、移動軌跡の算出と同時に、進行距離ＬＤを算出しても良い。
【００７４】
具体的には、図９の移動軌跡算出処理においては、まず、目標角速度に、最小角速度を設定する（Ｓ７１）。Ｓ７１の処理の後、目標角速度が最大角速度を超えたかを確認する（Ｓ７２）。Ｓ７２の処理において、目標角速度が最大角速度を超えていない場合は（Ｓ７２：Ｎｏ）、Δｔ秒（例えば０．１秒）後の移動体１の位置を算出する（Ｓ７３）。
【００７５】
Ｓ７３の処理の後、Ｓ７３の処理で算出された位置において、移動体１が障害物Ｂと接触するかを確認する（Ｓ７４）。Ｓ７４の処理において、移動体１が障害物Ｂと接触しない場合は（Ｓ７４：Ｙｅｓ）、Δｔ秒後の移動体１の速度および角速度を算出する（Ｓ７５）。上記した通り、本変形例においても、移動体１の角速度は、現在の角速度から目標角速度まで変化させるので、Δｔ秒後の角速度を取得する。
【００７６】
Ｓ７５の処理の後、Δｔ秒後の角速度が目標角速度を超えたかを確認する（Ｓ７６）。Ｓ７６の処理において、Δｔ秒後の角速度が目標角速度を超えた場合は（Ｓ７６：Ｙｅｓ）、角速度に目標角速度を設定する（Ｓ７７）。一方で、Ｓ７６の処理において、Δｔ秒後の角速度が目標角速度を超えていない場合は（Ｓ７６：Ｎｏ）、角速度は加速可能なのでＳ７７の処理をスキップする。
【００７７】
Ｓ７６，Ｓ７７の処理の後、Ｔ秒後の位置まで検索したかを確認する（Ｓ７８）。本変形例においても、移動軌跡は最大Ｔ秒間のものが取得されるので、移動軌跡の終点まで至ったかを確認する。Ｓ７８の処理において、Ｔ秒後の位置まで検索した場合は（Ｓ７８：Ｙｅｓ）、その移動軌跡を保存する（Ｓ７９）。そして、目標角速度にΔωを加算して（Ｓ８０）、Ｓ７２以下の処理を繰り返す。一方で、Ｔ秒後の位置まで検索していない場合は（Ｓ７８：Ｎｏ）、Ｓ７３以下の処理を繰り返す。
【００７８】
また、Ｓ７４の処理において、移動体１が障害物Ｂと接触した場合は（Ｓ７４：Ｎｏ）、その移動軌跡が障害物Ｂまで至ったと判断され、これ以上移動軌跡を算出する必要がないと判断されるので、上記したＳ７９，Ｓ８０の処理を行い、Ｓ７２以下の処理を繰り返す。
【００７９】
Ｓ７２の処理において、目標角速度が最大角速度を超えた場合は（Ｓ７２：Ｙｅｓ）、算出された移動軌跡の中で、最大の進行距離の移動軌跡を取得して移動軌跡メモリ１２ｂに保存し、その移動軌跡の進行距離を進行距離メモリ１２ｃに保存し（Ｓ８１）、移動軌跡算出処理を終了する。
【００８０】
かかる移動軌跡算出処理において、移動軌跡の取得と共に、Ｓ７４の処理によって、移動軌跡が障害物Ｂと接触したかを確認し、移動軌跡が障害物Ｂと接触した場合は、その目標角速度による移動軌跡の取得を打ち切る。これにより、上記実施形態のように、移動軌跡を必ずしもＴ秒分算出する必要がない。また、Ｓ７１，Ｓ７２及びＳ８０の処理によって、目標角速度を最小角速度から最大角速度まで変化させた場合の移動軌跡が算出できるので、上記実施形態のように、各動作（直進、現在の角速度を維持、右旋回及び左旋回）毎の移動軌跡を算出し、その後、算出された移動軌跡から進行距離ＬＤを算出する必要がない。これらによって、移動軌跡算出処理の処理時間が短縮できるので、移動体１の処理負荷が軽減され、通路を迅速に検出できる。
【００８１】
上記実施形態では、図５（ａ）の左旋回処理においては目標角速度の初期値をωとし、図５（ｂ）の右旋回処理においては目標角速度の初期値を−ωとした。しかし、目標角速度の初期値は、必ずしもこれに限られるものではなく、これらの目標角速度の初期値を共に０（ｒａｄ／ｓ）とし、左旋回処理では角速度が０から最大角速度まで変化させた場合の最大の移動軌跡および進行距離ＬＤを、右旋回処理では角速度が０から最小角速度まで変化させた場合の最大の移動軌跡および進行距離ＬＤを、それぞれ取得しても良い。
【００８２】
このようにすることで、左旋回処理および右旋回処理によって、移動体１を直進させた場合と、移動体１の現在の角速度を維持した場合とにおける、最大の移動軌跡および進行距離ＬＤも取得できるので、これらの取得処理に該当する、図４のＳ２０〜Ｓ２３の処理を省略できる。
【００８３】
上記実施形態では、測距範囲ＤＣの半径ＲＣの算出において、直線距離ＬＭと進行距離ＬＤとの比が閾値Ｋ以下である場合（図６のＳ５１）、直線距離ＬＭに閾値Ｋを乗じたものを測距範囲ＤＣの半径ＲＣに設定した（図６のＳ５２）。しかし、必ずしもこれに限られるものではなく、進行距離ＬＤに閾値Ｋを乗じたものを測距範囲ＤＣの半径ＲＣに設定しても良い。また、直線距離ＬＭ又は進行距離ＬＤに、予め設定された定数を加算したものを、測距範囲ＤＣの半径ＲＣに設定しても良い。
【００８４】
上記実施形態では、測距センサ３で取得された測距データＭＰによって、障害物Ｂまでの距離を測距した。しかし、障害物Ｂまでの距離を測距する手段は、測距センサ３に限られるものではなく、例えば、移動体１にカメラを配設し、カメラによって取得された移動体１の周囲の画像を解析することで、障害物Ｂまでの距離を測距しても良い。
【符号の説明】
【００８５】
１                              移動体
３                              測距センサ（測距手段）
４                              車輪（移動手段の一部）
１５                            駆動部（移動手段の一部）
Ｂ                              障害物
Ｃ１〜Ｃ４                      クラスタ
ＤＣ                            測距範囲
Ｐ１〜Ｐ７                      通路
Ｓ２１，Ｓ２３，Ｓ３４，Ｓ４４  進行距離算出手段
Ｓ７                            測距範囲決定手段、通路検出手段
Ｓ８                            移動制御手段
【図１】
2020166707.tif 000004
【図２】
2020166707.tif 000005
【図３】
2020166707.tif 000006
【図４】
2020166707.tif 000007
【図５】
2020166707.tif 000008
【図６】
2020166707.tif 000009
【図７】
2020166707.tif 000010
【図８】
2020166707.tif 000011
【図９】
2020166707.tif 000012