(57)【特許請求の範囲】
【請求項１】
通路内を走行する移動体であって、
周囲の環境を測定するセンサと、
前記センサから取得された情報に基づいて自己位置を推定する自己位置推定部と、
前記通路に設けられた壁からの距離をポテンシャルとして記録する地図情報を有する地図データ部と、
前記自己位置推定部で推定された自己位置と、前記地図データ部の有する地図情報に基づいて、前記移動体の移動始点から移動終点までのシフト前経路を経路点の集合および経路点を接続する曲線として算出する経路計画部と、
前記経路計画部により算出されたシフト前経路と、前記通路の壁からの距離に基づき、前記シフト前経路の各経路点を該移動体の進行方向と法線方向にシフトさせた経路点を通過するシフト後経路を算出する経路シフト処理部と、
前記経路シフト処理部により算出したシフト後経路情報に基づき、経路にしたがって走行するための走行指令値を生成する走行指令値生成部と、
前記走行指令値生成部で生成された走行指令値に基づいて駆動部を制御する走行制御部と、を備え、
前記経路シフト処理部は、前記通路の幅が変わることによりシフト前経路から前記壁までの距離が長くなる場合に、該当箇所におけるシフト量を、該当箇所近辺の、該当箇所に比べて前記側面の壁までの距離が短い箇所において算出したシフト量に基づいて決定し、
前記シフト処理によりシフト前経路の各経路点からの法線どうしが交わる場合には、法線が交わる経路点から算出されたシフト後経路の経路点のいずれかを除去する、
移動体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、移動体に関する。
【背景技術】
【０００２】
従来から、移動体を制御する方法の開発が行われている（特許文献１〜４）。特許文献１には、連続していない壁を検知して、移動経路から壁に対して下ろした垂線の長さを計測し、所定距離だけ離れた位置を通過する移動体について記載されている。
【０００３】
特許文献２には、作業領域全体を櫛形走行によってカバーする移動体について記載されている。櫛形走行は往復運動の折り返し地点で、該移動体がシフト移動することで行われる。該移動体は、壁面などの障害物との離間距離を一定に維持した状態で走行する。
【０００４】
特許文献３には、追尾対象物を追尾する自律型の移動体について記載されている。該移動体は、追尾対象物との衝突を回避するため、進行方向から左右にシフトした状態で追尾する。また追尾対象物が角を曲がったことにより該移動体から追尾対象物を認識できなくなった場合には、該移動体は、該移動体の備える記憶手段により記憶された追尾対象物の移動経路に基づいて走行する。
【０００５】
特許文献４には、例えば歩行者が歩行ルールに沿って右側通行する通路において、移動体の移動経路を通路の中央から右側にシフトすることにより、人と同様に右側通行する移動体が記載されている。これにより、該移動体は人の歩行を妨げずに移動することができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−２９３９７５号公報
【特許文献２】特開２００７−２１３２３６号公報
【特許文献３】特開２００６−１５５３４９号公報
【特許文献４】特願２００９−０５９２６号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら特許文献４のごとく、移動体が通路の幅や移動体側面側に配置された壁面との距離に応じてシフト量を決定している場合には、通路幅が変化する移動方向の距離によらず、通路の幅が変化に応じて蛇行する経路をとることになる。したがって移動体は無駄な蛇行によって、人が予期しない経路を通るよう動作するため、人と移動体が接触する可能性が高くなる。
本発明は、上記の問題点に鑑みてなされたものであり、蛇行を減らすことで動作の無駄を減らし、人との接触可能性を低減した移動体を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明にかかる移動体は、通路内を走行する移動体であって、周囲の環境を測定するセンサと、前記センサから取得された情報に基づいて自己位置を推定する自己位置推定部と、前記通路に設けられた壁からの距離をポテンシャルとして記録する地図情報を有する地図データ部と、前記自己位置推定部で推定された自己位置と、前記地図データ部の有する地図情報に基づいて、前記移動体の移動始点から移動終点までのシフト前経路を経路点の集合および経路点を接続する曲線として算出する経路計画部と、前記経路計画部により算出されたシフト前経路と、前記通路の壁からの距離に基づき、前記シフト前経路の各経路点を該移動体の進行方向と法線方向にシフトさせた経路点を通過するシフト後経路を算出する経路シフト処理部と、前記経路シフト処理部により算出したシフト後経路情報に基づき、経路にしたがって走行するための走行指令値を生成する走行指令値生成部と、前記走行指令値生成部で生成された走行指令値に基づいて駆動部を制御する走行制御部と、を備え、前記経路シフト処理部は、前記通路の幅が変わることによりシフト前経路から前記壁までの距離が長くなる場合に、該当箇所におけるシフト量を、該当箇所近辺の、該当箇所に比べて前記側面の壁までの距離が短い箇所において算出したシフト量に基づいて決定し、前記シフト処理によりシフト前経路の各経路点からの法線どうしが交わる場合には、法線が交わる経路点から算出されたシフト後経路の経路点のいずれかを除去する。
これにより、移動体を無駄に蛇行させることなく、シフト前経路からシフトさせた状態で走行させることができる。
【発明の効果】
【０００９】
移動体は、適切な移動経路で移動することができる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１にかかるロボット１００の構成図である。
【図２】実施の形態１にかかる移動領域の模式図である。
【図３】実施の形態１にかかる右折時のシフト処理例の図である。
【図４】実施の形態１にかかる右折時の経路生成例の図である。
【図５】実施の形態１にかかるロボット１００の動作のフローチャートである。
【図６】実施の形態１にかかる経路シフト処理のフローチャートである。
【図７】実施の形態１にかかる交差点除去の図である。
【図８】実施の形態１にかかる右折時の経路生成例の図である。
【図９】実施の形態１にかかるシフト過多処理の図である。
【発明を実施するための形態】
【００１１】
実施の形態１
以下、図面を参照して本発明の実施の形態について説明する。本発明にかかる移動体の一例であるロボットについて、図１を用いて説明する。
【００１２】
ロボット１００は、センサ１１と、自己位置推定部１２と、地図データ部１３と、経路計画部１４と、経路シフト処理部１５と、走行指令値生成部１６と、走行制御部１７と、車輪１８と、を備える。
【００１３】
センサ１１は、ロボット１００の周囲の環境を計測するセンサであり、典型的にはレーザーセンサである。センサ１１は、ロボット１００の周囲の物体までの距離を計測する。またセンサ１１は、計測結果を記録した距離データを、自己位置推定部１２および地図データ部１３に出力する。
【００１４】
自己位置推定部１２は、センサ１１から入力された距離データに基づいて、ロボット１００の現在の座標を推定する。自己位置推定部１２は、推定された現在の座標を自己位置情報として記録する。また、自己位置推定部１２は自己位置情報を、経路計画部１４および走行指令値生成部１６に出力する。
【００１５】
地図データ部１３は、ロボット１００が走行する移動領域中の地図情報を記憶している。具体的には、地図データ部１３は、地図情報としてロボット１００が走行する通路の壁などの座標を記憶する他、通路の壁からの距離をポテンシャルとして記憶する。ここでポテンシャルは、自己位置推定や最短経路探索に利用される。地図データ部１３は、地図情報を経路計画部１４に出力する。
【００１６】
経路計画部１４は、自己位置推定部１２から入力された自己位置情報と、地図データ部１３に記録されている地図情報に基づいて、ロボット１００の現在地である移動始点から、移動する目標点である移動終点までの、２点間の経路を計画する。
より具体的には、経路計画部１４は、移動始点から移動終点までの経路を、離散的な経路点の集合として算出する。そして経路計画部１４は、複数の離散的な経路点を結んだ曲線を算出する。この算出された曲線がロボット１００の経路情報（シフト前経路）となる。経路計画部１４は、シフト前経路を経路情報として、経路シフト処理部１５に出力する。
【００１７】
経路シフト処理部１５は、経路計画部１４で算出した経路点をシフトさせる。例えば、ロボット１００に通路の右側を通行させたい場合には、ロボット１００が進行方向を向いた状態における右側の法線方向がシフト方向となる。したがって経路シフト処理部１５は、シフト前の各経路点について、ロボット１００の進行方向と右側の法線方向にシフトさせた経路点を算出する。ここで典型的にはロボット１００の移動領域は水平であり、ロボット１００のシフト方向は、移動領域中における水平面内のいずれかの方向となる。経路シフト処理部１５は、シフトさせた経路点を曲線で結ぶことにより、シフト後経路を算出する。
ロボット１００のシフト量は、あらかじめ設定されたパラメータデータにより決定される。図２は、丁字路となっているロボット１００の移動領域を、模式的に示した図である。経路２１は、移動始点から移動終点までを最短で結ぶシフト前経路である。経路２２は、経路シフト処理部１５により壁までの距離に応じて経路点をシフトさせた結果、ロボット１００の右側に壁が無い箇所でシフト量が過多になるシフト後の経路（シフト後経路）である。経路２３は、ロボット１００のシフト量が過多であると判定された場合に、パラメータデータを再設定し、シフトが過多となっている箇所についてシフト量を調整したシフト後経路である。シフト量の調整については、後に詳述する。
【００１８】
また経路シフト処理部１５は、シフト後の経路点の整合をとる。図３は、ロボット１００が右折する場合のシフト処理の例である。図３における経路２４はシフト前経路であり、経路２５はシフト後経路である。
図４は、ロボット１００が右折する場合の詳細な経路点の例である。図４に示すように経路シフト処理部１５は、経路２４の経路点Ｐ１〜Ｐ４から、法線方向にシフトした経路２５の経路点Ｐ１'〜Ｐ４'を生成する。このとき経路シフト処理部１５は、Ｐ２'およびＰ３'に示すように、シフト前経路の法線方向に基づいて、移動終点方向から移動始点方向に戻るような経路を生成する場合がある。
ここで経路シフト処理部１５は、移動終点方向から移動始点方向に戻るような経路が生成された状態を、不整合な状態であると判定する。そして経路シフト処理部１５は、移動終点方向から移動始点方向に戻るような状態が解消されるよう、経路点の整合をとる。整合を取る方法については、後に詳述する。
経路シフト処理部１５は、上記の処理により生成した経路情報を、走行指令値生成部１６に出力する。
【００１９】
走行指令値生成部１６は、自己位置推定部１２から入力された自己位置情報と、経路シフト処理部１５から入力された経路情報に基づいて、ロボット１００が定められた経路を通過するよう、走行指令値を生成する。
走行指令値生成部１６は、走行指令値を走行制御部１７に出力する。
【００２０】
走行制御部１７は、走行指令値生成部１６から入力された走行指令値に基づいて、駆動部（不図示）の動作を制御する。走行制御部１７は、典型的には、ＣＰＵ（Central Processing Unit）、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）、通信用のインタフェイスなどを有する演算処理装置である。また走行制御部１７は、着脱可能なＨＤＤ、光ディスク、光磁気ディスク等を有し、各種プログラムや制御パラメータなどを記憶し、そのプログラムやデータを必要に応じてメモリ等に供給する。
【００２１】
車輪１８は、ロボット１００に複数設けられた移動手段である。車輪１８は、走行制御部１７により駆動制御された駆動部が動作することにより回転駆動する。ロボット１００は、車輪１８が回転駆動することにより、前後方向への移動や、右折および左折の動作を行う。
【００２２】
次に、ロボット１００の動作について説明する。図５にロボット１００の動作のフローチャートを示す。
【００２３】
ロボット１００は、センサ１１を用いて周囲の環境を把握する（ステップＳ１１）。具体的には、センサ１１は周囲の障害物までの距離データを取得する。ここで障害物とは、ロボット１００が走行する通路の壁も含まれる。
次に自己位置推定部１２は、センサ１１で取得されたデータを用いて、現在の座標を推定する（ステップＳ１２）。
【００２４】
ロボット１００は、地図データ部１３に保存された地図情報を読み込む（ステップＳ１３）。経路計画部１４は、読み込まれた地図情報と推定された現在位置に基づいて、走行する経路を計画する（ステップＳ１４）。典型的にはこの経路は、地図情報に記録されているポテンシャル情報を用いて算出した、移動始点と移動終点とを最短で結ぶ経路である。
【００２５】
経路シフト処理部１５は、経路シフト処理を行う（ステップＳ１５）。図６は、経路シフト処理の詳細なフローチャートである。経路シフト処理は以下の手順で行う。
【００２６】
経路シフト処理部１５は、経路計画部１４からの入力データの確認を行う（ステップＳ１５１）。ここで入力データは、例えば図２に示した経路２１や、図３に示した経路２４などのシフト前経路である。なお典型的には、経路シフト処理部１５には、地図情報も入力データとして入力される。
【００２７】
経路シフト処理部１５は、右側シフト処理を行う（ステップＳ１５２）。ここで、経路シフト処理部１５が行う右側へのシフト量は、経路計画部１４から入力されたシフト前経路と、ロボット１００の右側の壁までの距離に基づいて決定される。なお、シフト方向はシフト前経路として算出した曲線の法線方向により決定される。これにより、経路シフト処理部１５は、例えば図２に示した経路２２や、図３に示した経路２５を算出する。
【００２８】
次に経路シフト処理部１５は、交差点除去処理を行う（ステップＳ１５３）。図３に示したようにロボット１００が右折する場合において、経路シフト処理部１５が右側シフト処理を行うと、図４に示したように経路点Ｐ１'〜Ｐ４'が生成される。ここでロボット１００が経路点Ｐ１'、Ｐ２'、Ｐ３'、Ｐ４'の順に移動すると、経路点Ｐ２'、Ｐ３'において、移動終点方向から移動始点方向に戻るような経路となる。
そこで、経路シフト処理部１５は、経路点Ｐ３'を除去し、経路点Ｐ１'、Ｐ２'、Ｐ４'を順にたどるようにする。
【００２９】
経路点Ｐ３'の除去は以下の方法で行う。経路シフト処理部１５が右側シフト処理を行うと、図４に示したように、経路点Ｐ２の法線と、Ｐ３の法線とが交わる場合がある。ここで２つの法線が交わる場合には、経路シフト処理により、シフト前経路において後に通過する経路点Ｐ３から算出したシフト後の経路点Ｐ３'が、シフト前経路において先に通過する経路点Ｐ２から算出したシフト後の経路点Ｐ２'よりも、移動始点に近づいた状態となる。
したがって経路シフト処理部１５は、経路点Ｐ２と経路点Ｐ３の法線が交わった場合には、経路点Ｐ３'を除去する。経路点Ｐ３'を除去した場合の例を図７に示す。これによりロボット１００は、移動終点側から移動始点側に戻るような経路をたどることなく、移動することができる。
【００３０】
また、経路点Ｐ２の法線と、経路点Ｐ３の法線とが交わらない場合であっても、図８に示すように、経路点Ｐ３の法線を延長した場合に、延長線が経路点Ｐ２の法線と交わる場合には、経路点Ｐ３'を除去するのが望ましい。
【００３１】
交差点除去処理を行うか否かは、例えば以下の方法で決定することができる。ここで、ｎ番目の元の経路点をＰｎ、シフト後の経路点をＰｎ'とする。
ＰｎからＰｎ'へのベクトルと、Ｐｎ−１からＰｎ'へのベクトルの外積をｃ１とする。また、ＰｎからＰｎ'へのベクトルと、Ｐｎ−１'からＰｎ'へのベクトルの外積をｃ２とする。このｃ１とｃ２の積が負であれば、シフトした点が交差するか、あるいは後退方向にある。この場合、経路シフト処理部１５は、Ｐｎ'を除去する交差点除去処理を行う。
【００３２】
なお、経路点Ｐ２'と、経路点Ｐ３'が重なっている場合など、連続する経過点が同じ座標位置を示す場合には、どちらか一方の経路点を削除するのが望ましい。
【００３３】
次に経路シフト処理部１５は、シフト過多処理を行う（ステップＳ１５４）。図９は、シフト過多処理の概要を示している。
【００３４】
経路シフト処理部１５は、図９（ａ）に示すように、シフト量が一定となる箇所に対して、その前後の壁までの距離を計算する。ロボット１００は、図９（ａ）の左方向を進行方向としており、これを正方向として処理を行う。図９（ａ）における長破線はシフト前経路、短破線はシフト量調整前のシフト後経路である。また、長破線に平行な実線は、ロボット１００の移動始点側から処理を行った場合に、最初にシフト量が一定となっているシフト量を示す。
ここで、前後の壁までの距離が一定値より大きい場合は、次のシフト量が一定となる箇所を探索する。
【００３５】
経路シフト処理部１５は、上記の探索の結果、図９（ｂ）において長破線に平行な矢印に示した箇所が、抽出されたものとする。なお、この抽出箇所は前述した壁までの距離が一定値以下の箇所である。この場合、シフト過多と判断してシフト量を下げる処理を、以下のように行う。
【００３６】
経路シフト処理部１５は、図９（ｃ）に示すように、正方向に一つ手前のシフト量が一定となる箇所の終点を開始点とする。また、先に決定したシフト量が一定となる箇所よりもシフト量が少なく、かつシフト量が一定となる、ロボット１００の進行方向側の最初の始点を終了点とする。
【００３７】
経路シフト処理部１５は、図９（ｄ）に示すように、開始点と終了点のシフト量を比較し、大きいほうのシフト量を適用する。図９（ｄ）の例では、終了点のシフト量が適用される。これを適用シフト量とする。
【００３８】
経路シフト処理部１５は、図９（ｅ）に示すように、開始点と終了点の間をシフト過多処理の対象区間とし、対象区間内におけるシフト量が、適用シフト量よりも大きいシフト量となっている場合には、該当箇所のシフト量を適用シフト量に変更する。
【００３９】
これにより、図９（ｆ）に示すような経路が求められる。これにより、正方向からの処理を終了する。
【００４０】
経路シフト処理部１５は、図９（ｇ）に示す矢印の方向（逆方向）から、正方向と同様の処理を開始する。すなわち、シフト量が一定となる箇所に対して、その前後の壁までの距離を計算する。ここで、前後の壁までの距離が一定値より大きい場合は、次のシフト量が一定となる箇所を探索する。
【００４１】
経路シフト処理部１５は、上記の探索の結果、図９（ｆ）において長破線に平行な矢印に示した箇所が抽出されたものとし、この抽出箇所は、前述した壁までの距離が一定値以下であるとする。この場合、シフト過多と判断して、シフト過多処理を行う。シフト量を下げる処理を以下のように行う。
【００４２】
経路シフト処理部１５は、図９（ｉ）に示すように、逆方向に一つ手前のシフト量が一定となる箇所の終点を開始点とする。また、先に決定したシフト量が一定となる箇所よりもシフト量が少なく、かつシフト量が一定となる、ロボット１００の進行方向と逆側の最初の始点を終了点とする。
【００４３】
経路シフト処理部１５は、図９（ｊ）に示すように、開始点と終了点のシフト量を比較し、大きいほうのシフト量を適用する。図９（ｊ）の例では、終了点のシフト量が適用される。これを適用シフト量とする。
【００４４】
経路シフト処理部１５は、図９（ｋ）に示すように、開始点と終了点の間をシフト過多処理の対象区間とし、対象区間内におけるシフト量が、適用シフト量よりも大きいシフト量となっている場合には、該当箇所のシフト量を適用シフト量に変更する。
【００４５】
経路シフト処理部１５は、図９（ｌ）に示すように、経路を決定して処理を終了する。経路シフト処理部１５は、決定された経路を経路情報として、走行指令値生成部１６に出力する。
【００４６】
これにより経路シフト処理部１５は、右側シフト処理により図２の経路２２のようなシフト量が過多である経路が生成された場合に、経路２３で示した経路となるよう、シフト量を調節する。これにより、ロボット１００が蛇行せずに、移動始点から移動終点に向かって走行するための経路を算出することができる。
【００４７】
走行指令値生成部１６は、経路シフト処理部１５から入力された経路情報と、自己位置推定部１２から入力された自己位置情報に基づき、経路をたどってロボット１００が走行するための走行指令値を、走行制御部１７に出力する（ステップＳ１６）。
【００４８】
走行制御部１７は、入力された走行指令値に基づいて、ロボット１００の走行状態を制御する（ステップＳ１７）。具体的には走行制御部１７は、走行指令値に基づいて駆動部の動作を制御することで、車輪１８の挙動を制御する。
【００４９】
これにより、シフト前経路から所定距離だけ経路をシフトさせて移動を行うロボット１００の経路作成において、シフト前経路から壁までの距離が長くなる区画の、ロボット１００の移動方向の長さを考慮して、シフト量を決定することができる。したがって、ロボット１００の右側に壁が存在しない箇所や、壁までの距離が遠くなる箇所がある通路において、これらの区画が短い場合には該当区画のシフト量を小さくすることで、ロボット１００は無駄に蛇行することなく走行することができる。また人がロボット１００の動作を予想しやすくなるため、人とロボット１００が接触する可能性が低くなる。
さらにロボット１００が交差点等において、シフト移動した方向に転進する場合に、経路探索結果から所定の経路点を除去することができる。これによりロボット１００が、移動始点方向に戻るような経路をたどらず、スムーズに転進することができる。
【００５０】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、上記ではロボット１００を右側にシフトするものとして説明したが、左側にシフトするものとしてもよい。また、ロボット１００を右折させるものとして説明したが、左側にシフトさせているロボット１００を左折させる場合にも、同様の処理を行うこととしてもよい。経路シフト処理部１５は、経路点Ｐ２における法線と経路点Ｐ３における法線が交わる場合や、経路点Ｐ２における法線と経路点Ｐ３における法線の延長線が交わる場合に、経路点Ｐ３'を除去するものとしたが、経路点Ｐ３'を除去せずに経路点Ｐ２'を除去することとしてもよい。センサ１１には、例えばレーザーセンサを用いることとしたが、他の方法で障害物等との距離を測定する距離センサを用いても良い。通路の側面は壁であるとしたが、ロボット１００が通路の側面の端であることを認識できれば壁でなくてもよい。
【符号の説明】
【００５１】
１１    センサ
１２    自己位置推定部
１３    地図データ部
１４    経路計画部
１５    経路シフト処理部
１６    走行指令値生成部
１７    走行制御部
１８    車輪
２１    経路
２２    経路
２３    経路
２４    経路
２５    経路
１００    ロボット
【図１】
0005589762.tif 000002
【図２】
0005589762.tif 000003
【図３】
0005589762.tif 000004
【図４】
0005589762.tif 000005
【図５】
0005589762.tif 000006
【図６】
0005589762.tif 000007
【図７】
0005589762.tif 000008
【図８】
0005589762.tif 000009
【図９】
0005589762.tif 000010