(57)【特許請求の範囲】
【請求項１】
互いに略平行な第１の壁により形成された通路並びに該第１の壁と直交する方向に設けられた互いに略平行な第２の壁により形成された通路上を自装置の向きを補正しつつ走行する自律移動体であって、
前記第１の壁及び前記第２の壁の一方若しくは双方を含む自装置の走行経路方向に所在する障害物の複数の計測点を取得し、取得した複数の計測点のうちの隣接する２つの計測点を始点及び終点とする複数のベクトルデータを生成するベクトルデータ生成部と、
前記ベクトルデータ生成部により生成された各ベクトルデータの向きを直角の整数倍分回転補正して±４５度の範囲内の向きを持つ各ベクトルデータに変換処理するベクトル変換処理部と、
前記ベクトル変換処理部により変換処理された各ベクトルデータの向きと自装置の向きを示す０度とのなす角度を補正角度として算出する補正角度算出部と、
前記補正角度算出部により算出された補正角度に基づいて自装置の向きを補正する向き補正部と
を備えたことを特徴とする自律移動体。
【請求項２】
前記ベクトルデータ生成部により生成されたベクトルデータの向きが４５度よりも大きく１３５度以下である場合には−９０度回転補正し、該ベクトルデータの向きが１３５度よりも大きく２２５度以下である場合には−１８０度回転補正し、該ベクトルデータの向きが２２５度よりも大きく３１５度以下である場合には−２７０度回転補正して、±４５度の範囲内の向きを持つ各ベクトルデータに変換処理することを特徴とする請求項１に記載の自律移動体。
【請求項３】
前記補正角度算出部は、±４５度の範囲の角度を横軸として縦軸を度数としたヒストグラムに対して前記ベクトル変換処理部により変換処理された各ベクトルデータを投票し、該ヒストグラムの度数が最大となる角度を補正角度として算出することを特徴とする請求項１又は２に記載の自律移動体。
【請求項４】
前記補正角度算出部は、前記ベクトル変換処理部により変換処理された各ベクトルデータが所定の角度の範囲内である場合にのみ、該ベクトルデータの向きを前記ヒストグラムに投票することを特徴とする請求項３に記載の自律移動体。
【請求項５】
前記補正角度算出部により算出された補正角度が所定の角度範囲内でない場合に、所定の警報を報知する警報報知部をさらに備えたことを特徴とする請求項１に記載の自律移動体。
【請求項６】
前記補正角度算出部により算出された補正角度が所定の角度範囲内でなく、かつ、自装置が小移動した後に前記補正角度算出部により新たに算出された補正角度が所定の角度範囲内でない場合に、所定の警報を報知する警報報知部をさらに備えたことを特徴とする請求項１〜３のいずれか一つに記載の自律移動体。
【請求項７】
前記向き補正部は、前記補正角度算出部により算出された補正角度並びに前記補正角度算出部により前回算出された補正角度が同一であり、かつ、両者がともに所定の角度範囲内でない場合に、前記補正角度が正常な補正角度であるとみなして自装置の向きを補正することを特徴とする請求項１に記載の自律移動体。
【請求項８】
互いに略平行な第１の壁により形成された通路並びに該第１の壁と直交する方向に設けられた互いに略平行な第２の壁により形成された通路上を走行する自律移動体の向き補正方法であって、
前記第１の壁及び前記第２の壁の一方若しくは双方を含む自装置の走行経路方向に所在する障害物の複数の計測点を取得し、取得した複数の計測点のうちの隣接する２つの計測点を始点及び終点とする複数のベクトルデータを生成するベクトルデータ生成工程と、
前記ベクトルデータ生成工程により生成された各ベクトルデータの向きを直角の整数倍分回転補正して±４５度の範囲内の向きを持つ各ベクトルデータに変換処理するベクトル変換処理工程と、
前記ベクトル変換処理工程により変換処理された各ベクトルデータの向きと自装置の向きを示す０度とのなす角度を補正角度として算出する補正角度算出工程と、
前記補正角度算出工程により算出された補正角度に基づいて自装置の向きを補正する向き補正工程と
を含んだことを特徴とする自律移動体の向き補正方法。
【請求項９】
互いに略平行な第１の壁により形成された通路並びに該第１の壁と直交する方向に設けられた互いに略平行な第２の壁により形成された通路上を走行する自律移動体の向き補正プログラムであって、
前記第１の壁及び前記第２の壁の一方若しくは双方を含む自装置の走行経路方向に所在する障害物の複数の計測点を取得し、取得した複数の計測点のうちの隣接する２つの計測点を始点及び終点とする複数のベクトルデータを生成するベクトルデータ生成手順と、
前記ベクトルデータ生成手順により生成された各ベクトルデータの向きを直角の整数倍分回転補正して±４５度の範囲内の向きを持つ各ベクトルデータに変換処理するベクトル変換処理手順と、
前記ベクトル変換処理手順により変換処理された各ベクトルデータの向きと自装置の向きを示す０度とのなす角度を補正角度として算出する補正角度算出手順と、
前記補正角度算出手順により算出された補正角度に基づいて自装置の向きを補正する向き補正手順と
をコンピュータに実行させることを特徴とする自律移動体の向き補正プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、走行経路上の位置が異なる場合であっても、同一の処理内容で簡易かつ効率的に自装置の向きを補正することができる自律移動体、自律移動体の向き補正方法及び自律移動体の向き補正プログラムに関する。
【背景技術】
【０００２】
従来、移動ロボットなどの自律移動体は、ジャイロセンサにより角速度を検知して自装置の向きを認識するとともに、走行時の車輪の回転数をもとに走行距離を算定し、これらの情報をもとに地図データ上の自己位置を推定しながら走行するのが一般的である。
【０００３】
ところが、ジャイロセンサや車輪の回転検出センサには検出誤差があり、また、走行時又は方向変換時の車輪のスリップに起因する誤差も存在するため、自律移動体が認識している自装置の位置及び向きと、実際の位置及び向きとの間に誤差が生じてしまうことが多い。
【０００４】
かかる自律移動体の位置及び向きの誤差を低減するため、自律移動体が、定期的若しくは所定のタイミングで、自装置の位置及び向きを補正する様々な従来技術が提案されている。自律移動体が存在する位置や環境によって、適用すべき最適な補正手法が異なるためである。
【０００５】
例えば、特許文献１には、平行な壁が複数近距離に存在する場合を前提とした自律移動体の位置及び向きの補正技術が開示されている。具体的には、現在位置で本来センシングされるべき地図上の距離データと、実際にセンシングされた距離データとを取得し、これらを比較して回転方向を補正する補正角度を求めるとともに、この補正角度で回転補正した距離データ等を用いて並進方向に関する位置を補正する点が記載されている。この特許文献１によれば、平行な壁が複数近距離に存在する場合に、間違った壁にマッチングするおそれを低減することができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−１２９２７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、この特許文献１に代表される従来技術は、あくまでも自律移動体の走行経路上の特定の位置や状況に対して適用されるべき技術であり、様々な位置及び状況に共通的に適用できるものではない。その結果、自律移動体が走行経路上を走行する場合に、ある位置では補正技術１を適用し、他の位置では補正技術２を適用すると言うように、走行経路上の各位置でどの補正技術を適用するかを事前に設定しなければならない。かかる設定は、人手を介して行われるため、この種の設定を行うための人的労力が大きくなると言う問題がある。
【０００８】
図１７は、従来技術の課題を説明するための説明図であり、ここでは自律移動体がＴ字路に向けて走行する過程を示している。同図では、対象物体にレーザ光を当て、反射される光の到着時刻を測ることによって対象物体までの距離を計測するレーザレンジセンサ（Laser Range Sensor）を用いて、前方の障害物までの方向と距離を検知し、これらの情報を利用して自装置の位置及び向きを補正する場合を想定している。
【０００９】
図１７（ａ）に示すように、自律移動体からＴ字路までに十分な距離がある場合には、上記特許文献１により通路側面の２つの並行な壁を利用した位置及び向きの補正を行うことができる。ところが、同図（ｂ）に示すように、自律移動体がある程度Ｔ字路に接近した時点では、通路側面の２つの並行な壁の情報量が低下するため、上記特許文献１をそのまま適用すると精度が低下する。このため、通路側面の２つの並行な壁を用いた補正処理を行うか若しくは正面の壁を用いた補正処理を行うのかを設定しなければならない。また、同図（ｃ）に示すように、自律移動体がＴ字路に最接近した時点では、通路側面の２つの並行な壁の情報量がかなり低下するため、正面の壁を用いた補正処理を行うよう設定する必要が生じる。
【００１０】
このように、自律移動体が走行経路を走行するにつれて壁を含めた障害物の状況が変化するため、自律移動体のプログラマは、あらかじめ自律移動体の走行経路上のポイントを設定するとともに、各ポイントにおいていかなる位置及び向きの補正処理を行うかをプログラミングしなければならなくなる。これらのことから、自律移動体が走行する走行経路のいずれのポイントであっても、同一の処理内容を用いて簡易かつ効率的に自装置の位置及び向きを補正できるようにすることが望まれている。特に、自律移動体の向きに誤差が存在すると、自律移動体が走行すればするほど位置ずれが大きくなってしまうため、自律移動体の向きを適正な方向に向けるよう補正することがより重要となる。
【００１１】
本発明は、上述した従来技術の課題を解消するためになされたものであって、走行経路上の位置が異なる場合であっても、同一の処理内容で簡易かつ効率的に自装置の向きを補正することができる自律移動体、自律移動体の向き補正方法及び自律移動体の向き補正プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上述した課題を解決し、目的を達成するため、本発明は、互いに略平行な第１の壁により形成された通路並びに該第１の壁と直交する方向に設けられた互いに略平行な第２の壁により形成された通路上を自装置の向きを補正しつつ走行する自律移動体であって、前記第１の壁及び前記第２の壁の一方若しくは双方を含む自装置の走行経路方向に所在する障害物の複数の計測点を取得し、取得した複数の計測点のうちの隣接する２つの計測点を始点及び終点とする複数のベクトルデータを生成するベクトルデータ生成部と、前記ベクトルデータ生成部により生成された各ベクトルデータの向きを直角の整数倍分回転補正して±４５度の範囲内の向きを持つ各ベクトルデータに変換処理するベクトル変換処理部と、前記ベクトル変換処理部により変換された各ベクトルデータの向きと自装置の向きを示す０度とのなす角度を補正角度として算出する補正角度算出部と、前記補正角度算出部により算出された補正角度に基づいて自装置の向きを補正する向き補正部とを備えたことを特徴とする。
【発明の効果】
【００１３】
本発明によれば、第１の壁及び第２の壁の一方若しくは双方を含む自装置の走行経路方向に所在する障害物の複数の計測点を取得し、取得した複数の計測点のうちの隣接する２つの計測点を始点及び終点とする複数のベクトルデータを生成し、生成した各ベクトルデータの向きを直角の整数倍分回転補正して±４５度の範囲内の向きを持つ各ベクトルデータに変換処理し、変換処理された各ベクトルデータの向きと自装置の向きを示す０度とのなす角度を補正角度として算出する補正角度算出部と、前記補正角度算出部により算出された補正角度に基づいて自装置の向きを補正するよう構成したので、走行経路を形成する壁が平行若しくは直交関係にあると言う性質を利用し、走行経路上の位置が異なる場合であっても、同一の処理内容で簡易かつ効率的に自装置の向きを補正することが可能となる。
【図面の簡単な説明】
【００１４】
【図１】図１は、本実施例１に係る移動ロボットの構成を示す機能ブロック図である。
【図２】図２は、本実施例１に係る移動ロボットの外観の一例を示す図である。
【図３】図３は、図１に示した制御部による処理の概念を説明するための説明図である。
【図４】図４は、図１に示した移動ロボットによる向き補正手順を示すフローチャートである。
【図５】図５は、障害物データの生成を説明するための説明図である。
【図６】図６は、ヒストグラムの一例並びに補正角度を用いた向き補正を説明するための説明図である。
【図７】図７は、本実施例１に係る移動ロボットによる効果を説明するための説明図である。
【図８】図８は、本実施例２に係る移動ロボットの構成を示す機能ブロック図である。
【図９】図９は、図８に示した補正角度算出部による処理の概念を説明するための説明図である。
【図１０】図１０は、図８に示した移動ロボットによる向き補正手順を示すフローチャートである。
【図１１】図１１は、本実施例３に係る移動ロボットの構成を示す機能ブロック図である。
【図１２】図１２は、図１１に示した移動ロボットの処理の概念を説明するための説明図である。
【図１３】図１３は、図１１に示した移動ロボットによる向き補正手順を示すフローチャートである。
【図１４】図１４は、本実施例４に係る移動ロボットの構成を示す機能ブロック図である。
【図１５】図１５は、図１４に示した移動ロボットによる向き補正手順を示すフローチャートである。
【図１６】図１６は、測定誤差が生じた場合のベクトルデータの平均化を説明するための説明図である。
【図１７】図１７は、従来技術の課題を説明するための説明図である。
【発明を実施するための形態】
【００１５】
以下に、添付図面を参照して、本発明に係る自律移動体、自律移動体の向き補正方法及び自律移動体の向き補正プログラムの好適な実施例を詳細に説明する。以下に示す実施例１〜４では、２つの平行な壁並びにこの壁と垂直な方向の２つの壁により形成された通路上を走行する移動ロボットに対して本発明に係る自律移動体、自律移動体の向き補正方法及び自律移動体の向き補正プログラムを適用した場合を示すこととする。
【実施例１】
【００１６】
まず、本実施例１に係る移動ロボット１００の構成について説明する。図１は、本実施例１に係る移動ロボット１００の構成を示す機能ブロック図であり、図２は、本実施例１に係る移動ロボット１００の外観の一例を示す図である。また、図３は、図１に示した制御部１０９による処理の概念を説明するための説明図である。
【００１７】
図１に示すように、移動ロボット１００は、レーザレンジセンサ（以下、「ＬＲＳ」と言う）１０１と、監視カメラ１０２と、操作パネル部１０３と、スピーカ１０４と、通信部１０５と、駆動部１０６と、ジャイロセンサ１０７と、記憶部１０８と、制御部１０９とを有する。
【００１８】
ＬＲＳ１０１は、対象物体にレーザ光を当て、反射される光の到着時刻を測ることによって対象物体までの距離を計測する距離センサである。具体的には、移動ロボット１００の走行方向を０度とした場合に、−９０度から９０度の角度範囲で順次レーザ光を照射し、各壁面を含む障害物から反射される反射光の到着時刻とレーザ光の照射時刻の時間差から各角度における障害物までの距離を計測する。なお、レーザ光を照射する角度範囲は、−９０度から９０度に限定されるものではない。
【００１９】
このＬＲＳ１０１は、レーザ光の照射角度をずらしながら該レーザ光が障害物で反射する点（以下、「計測点」と言う）までの距離を計測し、計測した各計測点に関する情報（角度及び距離）を制御部１０９に出力する。なお、この障害物には、移動ロボット１００が走行する通路を形成する並行な２つの壁並びにこの通路と直交する方向に設けられた通路を形成する２つの壁が含まれる。図２に示すように、このＬＲＳ１０１は、移動ロボット１００の前方の足下に設置されている。ただし、このＬＲＳ１０１は、前方の足下だけではなく後方の足下等に併設することもできる。
【００２０】
監視カメラ１０２は、監視領域の撮像を行うＣＣＤイメージセンサ（Charge Coupled Device Image Sensor）等からなる撮像装置である。図２に示すように、この監視カメラ１０２は、移動ロボット１００の頭部に設置されている。
【００２１】
操作パネル部１０３は、移動ロボット１００に対する操作指示を行う操作部であり、タッチ式の液晶パネル等からなる。操作者は、この操作パネル部１０３の操作メニューから所望の項目を選択して操作入力する。また、この操作パネル部１０３には、各種の警報メッセージも表示される。図２に示すように、この操作パネル部１０３は、移動ロボット１００の胸部に設置されている。
【００２２】
スピーカ１０４は、警報メッセージを含む各種の音声メッセージを出力する出力デバイスである。図２に示すように、このスピーカ１０４は、移動ロボット１００の胸部に設置されている。通信部１０５は、図示しない監視装置との間で無線等によりデータ通信を行うための通信部である。具体的には、この通信部１０５を介して管理装置から巡回経路上の巡回の開始指示又は停止指示などを受信する。また、この通信部１０５を介して監視カメラ１０２で撮像した画像データや警報メッセージ等を管理装置に送信することもできる。
【００２３】
駆動部１０６は、移動ロボット１００に設けられた車輪（図示省略）を回転駆動する車輪モータであり、この駆動部１０６により移動ロボット１００が前進駆動、後退駆動及び回転駆動される。この駆動部１０６には、車輪の回転数を検知する回転数センサが併設されており、この回転数センサで検知した車輪の回転数が制御部１０９に出力される。
【００２４】
ジャイロセンサ１０７は、角速度を検知して制御部１０９に出力するセンサである。移動ロボット１００は、このジャイロセンサ１０７により検知された角速度によって自装置の向きを判定することになる。ここで、ジャイロセンサ１０７による検知された角速度の誤差が累積すると、移動ロボット１００の本来の向きと、移動ロボット１００が判定する向きとの間で誤差が生ずる結果となる。このため、この移動ロボット１００は、定期的又は所定のタイミングで自装置の向きを補正している。
【００２５】
記憶部１０８は、ハードディスク装置や不揮発性メモリなどからなる記憶デバイスであり、地図データ１０８ａを記憶する。地図データ１０８ａは、移動ロボット１００による監視領域の地図データである。この地図データ１０８ａは、後述する走行制御部１０９ｄ等によって参照される。
【００２６】
制御部１０９は、移動ロボット１００の全体制御を行う制御部であり、障害物データ生成部１０９ａ、ベクトル変換処理部１０９ｂ、補正角度算出部１０９ｃ及び走行制御部１０９ｄを有する。なお、この制御部１０９は、監視カメラ１０２への撮像指示、監視カメラ１０２からの画像データの受信、操作パネル部１０３の表示制御、操作パネル部１０３からの操作入力データの受付、スピーカ１０４への音声データの出力、通信部１０５のデータ送受信制御及び駆動部１０６の駆動制御等についても行うが、ここでは本発明の特徴部分についてのみ図示説明している。
【００２７】
障害物データ生成部１０９ａは、ＬＲＳ１０１から受け取った複数の計測点に関する情報（角度及び距離）を利用して、障害物表面のベクトルデータを生成する処理部である。具体的には、ＬＲＳ１０１から複数の計測点に関する情報（角度及び距離）を受け取った際に、隣接する２つの計測点間の距離が所定の範囲内であれば、隣接する２つの計測点を始点及び終点としたベクトルデータを生成する。なお、かかるベクトルデータの生成については、各種の従来技術を用いることができる。例えば、図３（ａ）に斜線で示す壁が存在する場合には、図中に黒点で示した位置が計測点の位置となり、図３（ｂ）に示すように、隣接する２つの計測点を始点及び終点としたものがベクトルデータとなる。
【００２８】
ベクトル変換処理部１０９ｂは、障害物データ生成部１０９ａで生成された各ベクトルデータの向きを直角分回転補正して±４５度の範囲内の向きを持つベクトルデータに変換処理する処理部である。具体的には、ベクトルデータの向きが４５度よりも大きく１３５度以下である場合には−９０度回転させ、該ベクトルデータの向きが１３５度よりも大きく２２５度以下である場合には−１８０度回転させ、該ベクトルデータの向きが２２５度よりも大きく３１５度以下である場合には−２７０度回転させる。なお、ベクトルデータの向きが±４５度の範囲内であれば回転補正を行わない。このベクトル変換処理部１０９ｂの処理により、全てのベクトルの向きが±４５度の範囲内となる。
【００２９】
例えば、図３（ｂ）に示すベクトルａ１〜ａ３は、ベクトルの向きだけを考えると図３（ｃ）に示すようになる。ここで、ベクトルａ１は、±４５度の範囲内であるために回転されず、ベクトルａ２は、４５度よりも大きく１３５度以下であるため−９０度回転される。同様に、ベクトルａ３は、１３５度よりも大きく２２５度以下であるため−１８０度回転される。その結果、ベクトルａ１〜ａ３は、図３（ｄ）に示すようになる。なお、ここでは説明の便宜上、ベクトルａ１〜ａ３についてのみ説明したが、全てのベクトルについて同様の回転補正が行われる。
【００３０】
このように、ベクトル変換処理部１０９ｂによるベクトル変換を行う理由は、できるだけ多くの壁の情報を自装置の向きの補正に利用するためである。また、移動ロボット１００が所在する走行経路上の位置がどの位置であっても、同じ処理内容で簡易かつ的率的に自装置の向きを補正できるようにするためである。言い換えると、移動ロボット１００は、現在走行中の通路の壁と並行な向きに、またこの通路と直交する方向の通路の壁と直交する向きに自装置を向ける必要があるため、各通路の壁表面のベクトルデータを最大限利用している。
【００３１】
これにより、移動ロボット１００が例えば図１７（ａ）〜（ｃ）のいずれの位置に所在する場合であっても、同じ処理内容で自装置の向きを補正することができる。なお、移動ロボット１００の通路上には、ロッカーや棚などの矩形物品が配設されることが多い点も考慮している。これらの矩形物品の表面は、いずれかの壁と並行又は直交するため、これらの矩形物品の表面のベクトルデータを利用すれば、正しい向きを向くために必要な情報を多数入手できることになる。その結果、通路を通行する人などの外乱が存在したとしても、移動ロボット１００は自装置を正しい向きに補正することが可能となる。
【００３２】
補正角度算出部１０９ｃは、移動ロボット１００の向きを補正する補正角度を算出する。具体的には、この補正角度算出部１０９ｃは、ベクトル変換処理部１０９ｂにより変換されたベクトルデータを、±４５度の範囲の角度を横軸として縦軸を度数としたヒストグラムにそれぞれ投票し、ヒストグラムの度数が最大となる角度を補正角度として算出する。例えば、図３（ｄ）に示すように、走行方向（０度）から角度θ分ずれた度数が最も高い場合には、この角度θが補正角度となる。
【００３３】
走行制御部１０９ｄは、移動ロボット１００を走行制御する制御部である。具体的には、この走行制御部１０９ｄは、ジャイロセンサ１０７により検知した角速度及び駆動部１０６から受信した車輪の回転数により地図データ１０８ａ上の現在地を認識しつつ、あらかじめ決められた経路に沿って自装置を走行制御する。
【００３４】
この走行制御部１０９ｄには、補正角度算出部１０９ｃにより算出された補正角度に基づいて自装置の向きを補正する向き補正部１０９ｅが設けられている。かかる向き補正部１０９ｅは、定期的又は所定のタイミングで自装置の向きを補正する。ただし、走行経路上のどの地点であっても、補正角度算出部１０９ｃにより算出された補正角度に基づく同一の処理を行っている。なお、補正角度算出部１０９ｃによる補正角度の算出についても、走行経路上のどの地点であっても同じ処理を行う。
【００３５】
なお、上記一連の説明では、移動ロボット１００を各機能の観点から説明したが、これらの各機能は移動ロボット１００に搭載したＣＰＵ（Central Processing Unit）の処理によって実現される。例えば、障害物データ生成ルーチン、ベクトル変換処理ルーチン、補正角度算出ルーチン及び走行制御ルーチンを含むプログラムを不揮発性メモリやＲＯＭ（Read  Only Memory）に記憶しており、このプログラムをＣＰＵに読み込んで実行することにより、上記障害物データ生成部１０９ａ、ベクトル変換処理部１０９ｂ、補正角度算出部１０９ｃ及び走行制御部１０９ｄの処理を実行することができる。
【００３６】
次に、図１に示した移動ロボット１００による向き補正手順について説明する。図４は、図１に示した移動ロボット１００による向き補正手順を示すフローチャートである。同図に示すように、移動ロボット１００は、ＬＲＳ１０１により−９０度から９０度の角度範囲で順次レーザ光を照射して、走行方向の障害物表面の計測点に関する情報（角度及び距離）を取得する（ステップＳ１０１）。例えば、図５（ａ）に示すＴ字路の手前の通路を走行している場合には、図中に斜線で示した走行方向の両側の壁及びＴ字路正面の壁を障害物として検知し、図中に黒点で示した該障害物の計測点に関する情報を取得する。なお、実際には、移動ロボット１００が図５（ｂ）に示した計測点の点列を取得する。
【００３７】
その後、隣接する計測点間の距離が所定の範囲内である場合に、該隣接する計測点を始点及び終点とした複数のベクトルデータを生成し、これを障害物データとする（ステップＳ１０２）。例えば、図５（ｂ）に示す計測点の点列により、図５（ｃ）に示すベクトルデータが得られる。
【００３８】
そして、障害物データをなす各ベクトルデータの向きを直角分回転補正して±４５度の範囲内の向きを持つベクトルデータに変換処理する（ステップＳ１０３）。具体的には、ベクトルデータの向きが４５度よりも大きく１３５度以下である場合には−９０度回転させ、該ベクトルデータの向きが１３５度よりも大きく２２５度以下である場合には−１８０度回転させ、該ベクトルデータの向きが２２５度よりも大きく３１５度以下である場合には−２７０度回転させる。なお、ベクトルデータの向きが±４５度の範囲内であれば回転補正を行わない。
【００３９】
その後、±４５度の範囲の角度を横軸として縦軸を度数としたヒストグラムに対して各ベクトルデータを投票し（ステップＳ１０４）、未処理のベクトルデータが存在する場合には（ステップＳ１０５；Ｙｅｓ）、ステップＳ１０３に移行する。また、全てのベクトルデータの処理を終えたならば（ステップＳ１０５；Ｎｏ）、例えば図６（ａ）に示すヒストグラムが得られる。
【００４０】
その後、このヒストグラムのうち最も度数の高い角度θを補正角度として算出する（ステップＳ１０６）。図６（ａ）のヒストグラムでは、角度「５度」の度数が最も高くなっているため、補正角度θは「５度」となる。
【００４１】
そして、この補正角度θを用いて移動ロボット１００の向きを補正する（ステップＳ１０７）。例えば、図６（ａ）のヒストグラムでは補正角度θ（＝５度）分のずれがあるため、図６（ｂ）に示すように、補正角度θだけ自装置を回転させることで自装置の向きを各壁と並行又は垂直の方向に補正できる。
【００４２】
上述してきたように、本実施例１では、ＬＲＳ１０１が自装置の走行経路方向に所在する壁を含む障害物の複数の計測点に関する情報を取得し、障害物データ生成部１０９ａが隣接する２つの計測点を始点及び終点とする複数のベクトルデータを生成し、ベクトル変換処理部１０９ｂが各ベクトルデータの向きを直角分回転補正して±４５度の範囲内の向きを持つ各ベクトルデータに変換処理し、補正角度算出部１０９ｃが各ベクトルデータの向きと自装置の向きを示す０度とのなす角度を補正角度として算出し、向き補正部１０９ｅが補正角度に基づいて自装置の向きを補正するよう構成したので、移動ロボット１００の向きを該移動ロボット１００が所在する通路の壁面と並行になるよう補正することができる。また、移動ロボット１００が走行経路上のどの地点に位置する場合であっても、異なるアルゴリズムを導入することなく同一の処理で簡易かつ効率的に自装置の向きを補正することができる。
【００４３】
また、上記構成を採用することにより、移動ロボット１００が所在する通路の壁面だけではなく、該壁面と直交する方向の壁面をも利用して自装置の向きを補正することができる。これにより、柱、障害物及び歩行者が存在する場合であっても、自装置の向きを正確に補正することが可能となる。具体的には、図７（ａ）の場合には、柱などの突起物や障害物の存在によって、移動ロボット１００が所在する通路の壁面の情報の一部が欠落するが、該壁面と直交する方向の壁面の情報により正しい向きに関する情報を十分取得することができる。また、図７（ｂ）に示すように、移動ロボット１００の近傍に歩行者が存在する場合であっても、移動ロボット１００が所在する通路の壁面と直交する方向の壁面の情報全てが欠落するわけではないので、正しい向きに関する情報を十分取得することができる。
【００４４】
なお、移動ロボット１００が走行する通路上には、ロッカーや本棚等の矩形の障害物が設置されるのが一般的である。そして、かかる矩形の障害物の表面は、通路の壁と並行又は直交する方向になる。これらのことから、移動ロボット１００が走行する通路上に様々な障害物が配設された場合であっても、現実的には、移動ロボット１００の正しい向きに関する情報を十分取得することが可能である。
【実施例２】
【００４５】
ところで、上記実施例１では、移動ロボット１００の補正角度が大きい場合であっても補正角度に基づいた向きの補正を行うこととしたが、実際には、移動ロボット１００の補正角度は所定の角度範囲内に収まるのが通常である。ジャイロセンサ１０７により生ずる誤差は微細なものであり、その微細な誤差が徐々に積み重なって移動ロボット１００の向きの誤差が生ずる点を考慮すると、移動ロボット１００が通常の走行を行う限り、補正角度が大きくなることは考え難いからである。このため、本実施例２では、補正角度が所定の角度範囲内に収まらない場合には自装置の向きを補正しないこととしている。
【００４６】
まず、本実施例２に係る移動ロボット２００の構成について説明する。図８は、本実施例２に係る移動ロボット２００の構成を示す機能ブロック図であり、図９は、図８に示した補正角度算出部２０１による処理の概念を説明するための説明図である。なお、上記実施例１に係る移動ロボット１００の機能部と同様の部位については、同一の符号を付すこととしてその詳細な説明を省略する。また、本実施例２並びに後述する実施例３及び４に係る移動ロボットの外観構成は、実施例１のものと同様となる。
【００４７】
図８に示すように、移動ロボット２００の制御部１０９には、補正角度算出部２０１及び向き補正部２０２が設けられている。補正角度算出部２０１は、移動ロボット２００の向きを補正するための補正角度を算出する処理部である。具体的には、この補正角度算出部２０１は、ベクトル変換処理部１０９ｂにより変換されたベクトルデータのうち所定の角度範囲内（例えば±１５度）のベクトルデータのみをヒストグラムに投票し、このヒストグラムの度数が最大となる角度を補正角度として算出する。
【００４８】
このように、所定の角度範囲内（例えば±１５度）のベクトルデータのみを用いることとしたのは、移動ロボット２００の向きが大きくずれることは考え難く、所定の角度範囲外のベクトルデータを外乱と考えることができるからである。その結果、図９（ａ）に示すように、所定の角度範囲外のベクトルデータがヒストグラムに投票されないので、処理の高速化を図ることができる。
【００４９】
向き補正部２０２は、補正角度算出部２０１により算出された補正角度が所定の角度範囲内（例えば±１５度）である場合に、この補正角度に基づいて自装置の向きを補正する処理部である。なお、この補正角度が所定の角度範囲内でない場合には、自装置の向きを補正しない。
【００５０】
図９（ｂ）に示すように、補正角度算出部２０１により算出された補正角度θが±１５度の範囲外である場合には、大幅に向きは変わらない実情を考慮して自装置の向きの補正を行わない。なお、全てのベクトルデータをヒストグラムに投票し、補正角度が所定の角度範囲内（例えば±１５度）でない場合に、警報を出力することもできる。かかる警報の出力としては、移動ロボット２００の操作パネル部１０３に対する異常発生の表示、スピーカ１０４からの異常が発生した旨の音声ガイダンス又は通信部１０５を介して監視装置への異常発生の通知等がなされる。
【００５１】
次に、図８に示した移動ロボット２００による向き補正手順について説明する。図１０は、図８に示した移動ロボット２００による向き補正手順を示すフローチャートである。同図に示すように、移動ロボット２００は、ＬＲＳ１０１により−９０度から９０度の角度範囲で順次レーザ光を照射して、走行方向の障害物の計測点に関する情報（角度及び距離）を取得する（ステップＳ２０１）。
【００５２】
その後、隣接する計測点を始点及び終点とする複数のベクトルデータを生成し、これを障害物データとする（ステップＳ２０２）。そして、障害物データをなす各ベクトルデータの向きを直角分回転補正して±４５度の範囲内の向きを持つベクトルデータに変換処理する（ステップＳ２０３）。
【００５３】
その後、ベクトルデータの角度が所定の角度範囲内である場合には（ステップＳ２０４；Ｙｅｓ）、このベクトルデータを±４５度の範囲の角度を横軸として縦軸を度数としたヒストグラムに投票する（ステップＳ２０５）。なお、所定の角度範囲内でない場合には（ステップＳ２０４；Ｎｏ）、ヒストグラムには投票しない。
【００５４】
そして、未処理のベクトルデータが存在する場合には（ステップＳ２０６；Ｙｅｓ）、ステップＳ２０３に移行する。また、全てのベクトルデータの処理を終えたならば（ステップＳ２０６；Ｎｏ）、このヒストグラムのうち最も度数の高い角度θを補正角度として算出する（ステップＳ２０７）。
【００５５】
そして、この補正角度θを用いて移動ロボット２００の向きを補正し（ステップＳ２０９）、処理を終了する。
【００５６】
上述してきたように、本実施例２では、補正角度算出部２０１が、ベクトルデータのうち所定の角度範囲内（例えば±１５度）のベクトルデータのみをヒストグラムに投票するとともに、この補正角度算出部２０１により算出された補正角度が所定の角度範囲内である場合にのみ向き補正部２０２により自装置の向きを補正するよう構成したので、高速な処理が可能になるとともに、異常な補正角度が算出された場合の補正を抑制することができる。
【実施例３】
【００５７】
ところで、上記実施例１及び２では、各壁から正しい向きに関する情報を十分に取得できる場合を前提としたが、通路上に多数の人物が存在するような場合には、一時的に正しい向きに関する情報を十分に取得することができない。そこで、本実施例３では、各壁等から正しい向きに関する情報を十分に取得することができない場合について説明する。
【００５８】
まず、本実施例３に係る移動ロボット３００の構成について説明する。図１１は、本実施例３に係る移動ロボット３００の構成を示す機能ブロック図であり、図１２は、図１１に示した移動ロボット３００の処理の概念を説明するための説明図である。なお、上記実施例１及び２に係る移動ロボット１００及び２００の機能部と同様の部位については、同一の符号を付すこととしてその詳細な説明を省略する。
【００５９】
図１１に示すように、移動ロボット３００の制御部１０９には、向き補正部３０２及び小移動制御部３０３を有する走行制御部３０１が設けられている。この走行制御部３０１は、補正角度算出部１０９ｃにより算出された補正角度が所定の範囲（例えば±１５度）を超えない場合に、補正角度に基づいて自装置の向きを補正する向き補正部３０２と、自装置を現在の向きのまま小移動させる小移動制御部３０３とを有する。
【００６０】
そして、図１２（ａ）に示すように、補正角度算出部１０９ｃにより算出された補正角度θが所定の角度範囲を超える場合には、同図（ｂ）に示すように、小移動制御部３０３によって自装置を現在の向きのまま小移動させる。かかる自装置の小移動に応答して、ＬＲＳ１０１による計測点に関する情報の取得から補正角度算出部１０９ｃによる補正角度の算出が実行され、補正角度θが再度所定の角度範囲を超過した場合には警報出力部２０３による警報を行う。一方、補正角度θが所定の角度範囲内になったならば、あらためて自装置の向きを補正させる。
【００６１】
本実施例３に係る移動ロボット３００は、このように補正角度が所定の角度範囲を超える場合に、自装置を小移動させて再度補正角度を求めることで、一時的に正しい向きに関する情報を十分に取得することができないケースに柔軟に対応できるようにしている。
【００６２】
なお、ここでは自装置を現在の向きのまま小移動させることとしたが、本発明はこれに限定されるものではなく、現在の向きと異なる方向に小移動させることもできる。また、小移動ではなく通常の移動をさせることもできる。
【００６３】
次に、図１１に示した移動ロボット３００による向き補正手順について説明する。図１３は、図１１に示した移動ロボット３００による向き補正手順を示すフローチャートである。同図に示すように、移動ロボット３００は、ＬＲＳ１０１により−９０度から９０度の角度範囲で順次レーザ光を照射して、移動方向の障害物の計測点に関する情報（角度及び距離）を取得する（ステップＳ３０１）。
【００６４】
その後、隣接する計測点を始点及び終点とする複数のベクトルデータを生成し、これを障害物データとする（ステップＳ３０２）。そして、障害物データをなす各ベクトルデータの向きを直角分回転補正して±４５度の範囲内の向きを持つベクトルデータに変換処理する（ステップＳ３０３）。
【００６５】
その後、このベクトルデータを±４５度の範囲の角度を横軸として縦軸を度数としたヒストグラムに投票し（ステップＳ３０４）、未処理のベクトルデータが存在する場合には（ステップＳ３０５；Ｙｅｓ）、ステップＳ３０３に移行する。また、全てのベクトルデータの処理を終えたならば（ステップＳ３０５；Ｎｏ）、このヒストグラムのうち最も度数の高い角度θを補正角度として算出する（ステップＳ３０６）。
【００６６】
ここで、この補正角度θが所定の角度範囲内である場合には（ステップＳ３０７；Ｙｅｓ）、この補正角度θを用いて移動ロボット２００の向きを補正する（ステップＳ３０８）。これに対して、この補正角度θが所定の角度範囲外である場合には（ステップＳ３０７；Ｎｏ）、自装置が小移動をしたか否かを判定する（ステップＳ３０９）。そして、自装置が小移動を行っていない場合には（ステップＳ３０９；Ｎｏ）、移動ロボット３００を小移動させた後に（ステップＳ３１０）、ステップＳ３０１に移行する。一方、自装置がすでに小移動を行っていた場合には（ステップＳ３０９；Ｙｅｓ）、警報出力部２０３により警報を出力する（ステップＳ３１１）。
【００６７】
上述してきたように、本実施例３では、補正角度が所定の角度範囲を超える場合に、直ちに警報を出力するのではなく、自装置を小移動させて再度補正角度を求めるよう構成したので、一時的に正しい向きに関する情報を十分に取得することができないケースに柔軟に対応することが可能となる。
【実施例４】
【００６８】
ところで、上記実施例２に示したように、ジャイロセンサ１０７により生ずる誤差は微細なものであるため、原則としては移動ロボット２００の補正角度は所定の角度範囲内に収まるのが通常である。しかしながら、人手によって移動ロボット２００が動かされたような場合は、補正角度が大きくなってしまう。このような場合には、算定された補正角度が正常な結果であると判定することが望ましい。そこで、本実施例４では、補正角度が所定の角度範囲内でない場合であっても、特定の条件を満たせばこの補正角度を正常なものとみなして自装置の向きを補正することとしている。
【００６９】
まず、本実施例４に係る移動ロボット４００の構成について説明する。図１４は、本実施例４に係る移動ロボット４００の構成を示す機能ブロック図である。なお、上記実施例１及び２に係る移動ロボット１００及び２００の機能部と同様の部位については、同一の符号を付すこととしてその詳細な説明を省略する。
【００７０】
図１４に示すように、移動ロボット４００の制御部１０９には、移動ロボット４００の向きを補正する向き補正部４０１が設けられている。この向き補正部４０１は、補正角度算出部２０１により算出された補正角度が所定の角度範囲内（例えば±１５度）であるか否かを判定し、補正角度が所定の角度範囲内である場合には、補正角度を用いて自装置の向きを補正する。
【００７１】
一方、補正角度が所定の角度範囲内でない場合であっても、記憶部１０８に記憶した前回の補正角度（θｐ）４０２と同じ補正角度θが算定されたならば、この補正角度θが正しい値であるとみなして、自装置の向きを補正する。かかる補正を行う理由を具体的に説明する。（ｎ−１）回目の処理で正常に補正が行われ、ｎ回目の処理で補正角度θｐが所定の角度範囲を超え、（ｎ＋１）回目の処理で補正角度θが所定の角度範囲を超えた場合には、（ｎ−１）回目とｎ回目の間に一時的な要因（人が移動ロボット４００に衝突するケース等）により移動ロボット４００の向きが大きく変化したと考えられる。つまり、このような場合には、補正角度θが所定の角度範囲を超える場合であっても、この補正角度θを正常なものと判定すべきである。このため、本実施例４では、今回の補正角度θが所定の角度範囲を超えたとしても、この補正角度θが記憶部１０８に記憶した前回の補正角度（θｐ）４０２と等しい場合には、該補正角度θが正常なものであるとみなして自装置の向きを補正することとしている。
【００７２】
次に、図１４に示した移動ロボット４００による向き補正手順について説明する。図１５は、図１４に示した移動ロボット４００による向き補正手順を示すフローチャートである。同図に示すように、移動ロボット４００は、ＬＲＳ１０１により−９０度から９０度の角度範囲で順次レーザ光を照射して、走行方向の障害物の計測点に関する情報（角度及び距離）を取得する（ステップＳ４０１）。
【００７３】
その後、隣接する計測点を始点及び終点とする複数のベクトルデータを生成し、これを障害物データとする（ステップＳ４０２）。そして、障害物データをなす各ベクトルデータの向きを直角分回転補正して±４５度の範囲内の向きを持つベクトルデータに変換処理する（ステップＳ４０３）。
【００７４】
その後、このベクトルデータを±４５度の範囲の角度を横軸として縦軸を度数としたヒストグラムに投票し（ステップＳ４０４）、未処理のベクトルデータが存在する場合には（ステップＳ４０５；Ｙｅｓ）、ステップＳ４０３に移行する。また、全てのベクトルデータの処理を終えたならば（ステップＳ４０５；Ｎｏ）、このヒストグラムのうち最も度数の高い角度θを補正角度として算出する（ステップＳ４０６）。
【００７５】
ここで、この補正角度θが所定の角度範囲内である場合には（ステップＳ４０７；Ｙｅｓ）、この補正角度θを用いて移動ロボット４００の向きを補正する（ステップＳ４０８）。これに対して、この補正角度θが所定の角度範囲外である場合には（ステップＳ４０７；Ｎｏ）、記憶部１０８に記憶した前回の処理で求めた補正角度（θｐ）４０２と今回の処理で求めた補正角度θが等しいか否かを判定する（ステップＳ４０９）。
【００７６】
その結果、補正角度（θｐ）４０２と補正角度θが等しい場合には（ステップＳ４０９；Ｙｅｓ）、たとえ補正角度θが所定の角度範囲を超える場合であっても、この補正角度θを用いて移動ロボット４００の向きを補正する（ステップＳ４０８）。一方、補正角度（θｐ）４０２と補正角度θが等しくない場合には（ステップＳ４０９；Ｎｏ）、警報を出力するとともに（ステップＳ４１０）、この補正角度θを前回の補正角度（θｐ）４０２として記憶部１０８に記憶する（ステップＳ４１１）。
【００７７】
上述してきたように、本実施例４では、補正角度θが所定の角度範囲外であり、かつ、この補正角度θが前回の処理で求めた補正角度（θｐ）４０２と等しい場合には、この補正角度θを用いて自装置の向きを補正するよう構成したので、一時的に移動ロボット４００の向きが大きく変動した場合であっても、移動ロボット４００の向きを正しく補正することが可能となる。
【００７８】
なお、上記実施例１〜４では、同じ壁から得られるベクトルデータの向きが同一であるものとしたが、現実的には、図１６（ａ）に示すように、測定誤差によって同じ壁から得られるベクトルデータの向きにバラツキが生じる。かかる測定誤差を考慮して、図１６（ｂ）に示すように、ヒストグラムの所定の角度範囲を平均化することもできる、これにより、測定誤差の補正角度への影響を低減することができる。
【００７９】
また、上記実施例１〜４では、レーザレンジセンサ（ＬＲＳ）１０１を用いて計測点に関する情報を取得する場合を示したが、本発明はこれに限定されるものではなく、光センサ、超音波センサ、レーダなどを用いることもできる。また、ＣＣＤで撮像した距離画像から観測点の角度及び距離を求めることもできる。
【産業上の利用可能性】
【００８０】
本発明に係る自律移動体、自律移動体の向き補正方法及び自律移動体の向き補正プログラムは、走行経路上の位置が異なる場合であっても、同一の処理内容で簡易かつ効率的に自装置の向きを補正する場合に適している。
【符号の説明】
【００８１】
１００    移動ロボット
１０１    レーザレンジセンサ（ＬＲＳ）
１０２    監視カメラ
１０３    操作パネル部
１０４    スピーカ
１０５    通信部
１０６    駆動部
１０７    ジャイロセンサ
１０８    記憶部
１０８ａ    地図データ
１０９    制御部
１０９ａ    障害物データ生成部
１０９ｂ    ベクトル変換処理部
１０９ｃ    補正角度算出部
１０９ｄ    走行制御部
１０９ｅ    向き補正部
２００    移動ロボット
２０１    補正角度算出部
２０２    向き補正部
２０３    警報出力部
３００    移動ロボット
３０１    走行制御部
３０２    向き補正部
３０３    小移動制御部
４００    移動ロボット
４０１    向き補正部
４０２    前回の補正角度（θｐ）
【図１】
0005723182.tif 000002
【図２】
0005723182.tif 000003
【図３】
0005723182.tif 000004
【図４】
0005723182.tif 000005
【図５】
0005723182.tif 000006
【図６】
0005723182.tif 000007
【図７】
0005723182.tif 000008
【図８】
0005723182.tif 000009
【図９】
0005723182.tif 000010
【図１０】
0005723182.tif 000011
【図１１】
0005723182.tif 000012
【図１２】
0005723182.tif 000013
【図１３】
0005723182.tif 000014
【図１４】
0005723182.tif 000015
【図１５】
0005723182.tif 000016
【図１６】
0005723182.tif 000017
【図１７】
0005723182.tif 000018