(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0022】
1.第1実施形態
(1)自律移動体システムの全体構成
以下、本実施形態に係る自律移動体システム100の構成について、
図1を用いて説明する。
図1は、自律移動体システムの構成を示す図である。自律移動体システム100は、複数の移動体1−1、1−2、・・・1−5を含む。複数の移動体1−1、1−2、・・・1−5は、互いに協調しながら移動環境ME(例えば、ホテルや空港のロビーなど多くの人が存在する環境)を移動する、例えば広告宣伝ロボットである。
なお、
図1に示す自律移動体システム100において、移動体1−1、1−2、・・・1−5の台数は5台であるが、数は限定されない。
【0023】
(2)移動体の構成
以下、自律移動体システム100に含まれる移動体1−1、1−2、・・・1−5について説明する。本実施形態の移動体1−1、1−2、・・・1−5は、例えば、ユーザにより教示された経路を再現しながら、自律して走行可能な移動体である。
まず、この移動体1−1、1−2、・・・1−5の構成について、
図2を用いて説明する。
図2は、移動体の構成を示す図である。以下では、移動体1−1を例にとって、移動体の構成を説明する。なお、移動体1−2、1−3、1−4、1−5も、移動体1−1と同様の構成を有する。
【0024】
移動体1−1は、本体部11を有する。本体部11は、移動体1−1の本体を構成する例えば筐体である。本実施形態において、後述する「自己位置」は、移動環境MEを表す環境地図上における本体部11の中心の位置(座標)と定義する。また、「自身」との語は、移動体1−1の本体部11のことを指すこととする。
移動体1−1が広告宣伝ロボットの場合には、本体部11は、例えば、宣伝を視覚的に示すディスプレイや、宣伝を音声として発するスピーカーなどを備えている。
【0025】
移動体1−1は、移動部12を有する。移動部12は、例えば、本体部11を移動させる差動二輪型の走行部である。
具体的には、移動部12は、一対のモータ121a、121bを有する。一対のモータ121a、121bは、本体部11の底部に設けられた、例えばサーボモータやブラシレスモータなどの電動モータである。一対のモータ121a、121bは、制御部16(後述)と電気的に接続され、制御部16からの指令に基づいて、それぞれ独立に、任意の回転数及びトルクにてその出力回転軸を回転させる。
【0026】
移動部12は、一対の主輪123a、123bを有する。一対の主輪123a、123bは、それぞれ、一部が移動環境MEの床面と接しており、一対のモータ121a、121bの出力回転軸に接続される。これにより、主輪123a、123bは、それぞれ、モータ121a、121bによって独立して回転し、本体部11を移動させる。
上記のように独立回転が可能なことによって、主輪123aと123bの回転数に差を生じさせて本体部11の姿勢を変化できる。一方、一対の主輪123a、123bの回転数が同じであれば、本体部11を直進できる。
【0027】
移動体1−1は、レーザレンジセンサ13を有する。レーザレンジセンサ13は、例え
ば、レーザ発振器によりパルス発振されたレーザ光を、移動環境ME中の構造物O(例えば、移動環境MEに配置された柱や棚など)(
図1)や壁W(
図1)に放射状に照射し、当該構造物O及び/または壁Wから反射した反射光をレーザ受信器により受信することにより、当該構造物Oや壁Wに関する情報を取得するレーザレンジファインダ(LRF:Laser Range Finder)である。本実施形態において、レーザレンジセンサ13は、本体部11の前部に配置された第1レーザレンジセンサ131と、本体部11の後部に配置された第2レーザレンジセンサ133と、を有する。
【0028】
第1レーザレンジセンサ131は、本体部11の前方に左右方向にレーザ光を放射状に発生することにより、第1レーザレンジセンサ131を中心とした本体部11の前方の半径20m程度の円内に含まれる構造物Oや壁Wに関する情報を取得する。第1レーザレンジセンサ131は、取得した構造物Oや壁Wに関する情報を、制御部16に出力する。
一方、第2レーザレンジセンサ133は、本体部11の後方に左右方向にレーザ光を放射状に発生することにより、第2レーザレンジセンサ133を中心とした本体部11の後方の半径5m程度の円内に含まれる構造物Oや壁Wに関する情報を取得する。第2レーザレンジセンサ133は、取得した構造物Oや壁Wに関する情報を、制御部16に出力する。
なお、上記レーザレンジセンサの検出可能距離は、上記の値に限られず、自律移動体システム100の用途等に応じて適宜変更できる。
【0029】
移動体1−1は、移動体間通信アンテナ14を有する。移動体間通信アンテナ14は、移動体同士が直接通信可能にするための装置である。具体的には、移動体間通信アンテナ14は、本体部11の上部に設けられた、例えば、無線通信用の通信アンテナである。移動体間通信アンテナ14は、他の移動体の移動体間通信アンテナからの通信信号を受信し、制御部16へと出力する。また、移動体間通信アンテナ14は、他の移動体へ通信信号を出力する。
【0030】
移動体1−1は、障害物検出センサ15を有する。障害物検出センサ15は、超音波信号(検出信号の一例)を放射状に出力し、当該超音波信号のうち障害物(例えば、上記の構造物Oや壁Wに限られず、移動環境MEを移動する他の移動体、人、動物などを含む)により反射されて戻ってきた超音波信号(反射信号の一例)などを受信する、例えば超音波センサである。
その他、障害物検出センサ15として、例えば、レーザレンジファインダ(Laser Range Finder、LRF)を用いてもよい。
【0031】
本実施形態において、障害物検出センサ15は、本体部11の前部に配置された第1障害物検出センサ151と、本体部11の後部に配置された第2障害物検出センサ153と、を有する。
第1障害物検出センサ151は、本体部11の前方に超音波信号を出力し、本体部11の前方に存在する障害物にて反射された超音波信号を受信する。一方、第2障害物検出センサ153は、本体部11の後方に超音波信号を出力し、本体部11の後方に存在する障害物にて反射された超音波信号を受信する。受信された超音波信号は、制御部16へと出力される。
なお、本実施形態においては、障害物検出センサの数及び位置は特に限定されない。例えば、本体部11を前方方向のみに移動させたい場合には、第2障害物検出センサ153を省略してもよい。
【0032】
移動体1−1は、制御部16を有する。制御部16は、移動体1−1の各部の制御を行う。なお、制御部16の構成については、後ほど詳しく説明する。
【0033】
移動体1−1は、補助輪部17をさらに有していてもよい。補助輪部17は、2つの補助車輪17a、17bを有する。2つの補助車輪17aと17bは、それぞれが独立に回転可能なように取り付けられている。補助輪部17を備えることにより、移動体1−1は安定に、かつ、スムーズに移動できる。
【0034】
(3)制御部の構成
次に、移動体1−1を制御する制御部16の構成について
図3を用いて説明する。
図3は、制御部の構成を示す図である。制御部16は、CPU(Central Processing Unit)、ハードディスク装置、ROM(Read Only Memory)、RAM(Random Access Memory)、記憶媒体読み出し装置などの記憶装置、信号変換を行うインターフェースなどを備えたマイコンシステムなどにより実現できる。
また、制御部16の各部の機能の一部又は全部は、プログラムとして実現されていてもよい。さらに、当該プログラムは、マイコンボードの記憶装置に記憶されていてもよい。又は、上記機能の一部又は全部は、カスタムICなどにより実現されていてもよい。
【0035】
制御部16は、記憶部161を有する。記憶部161は、制御部16を構成するコンピュータシステムの記憶装置の記憶領域の一部である。記憶部161は、移動体1−1を制御するために用いられる各種情報を記憶する。
具体的には、記憶部161には、副環境地図が記憶されている。副環境地図は、例えば、移動環境MEを表す座標平面上の構造物O及び/または壁Wの位置を示す座標値データの集合体であり、移動環境MEの少なくとも一部を表す地図である。従って、移動環境MEを表す環境地図は、典型的には、複数の副環境地図により構成できる。
【0036】
副環境地図には、地図識別番号と、当該副環境地図の内容を示す地図内容情報(例えば、副環境地図のCRC(Cyclic Redundancy Check、巡回冗長検査)情報)とが、関連付けられる。作成された副環境地図にどの地図識別番号を割り当てるかは、例えば、手動モードを実行中に、移動体1−1を操作するユーザにより決定される。
【0037】
記憶部161には、保有地図情報が記憶されている。保有地図情報は、記憶部161に現在記憶されている(すなわち、移動体1−1が保有する)副環境地図である保有地図に関する情報である。具体的には、保有地図情報は、保有地図の地図識別番号と、当該保有地図の地図内容情報とを関連付けて記憶した情報である。
【0038】
記憶部161には、移動体情報及び他移動体情報が記憶されている。移動体情報は、移動体1−1に関する情報であり、例えば、移動体1−1の動作モードを示す動作モードフラグと、本体部11の一時停止又は走行(走行状態)を示す走行フラグと、干渉停止処理を実行中であるか否かを示す干渉停止処理実行フラグと、移動体1−1の現在の自己位置(後述)を示す座標値及び姿勢角と、移動体1−1が現在移動中の副環境地図の地図識別番号と、移動体1−1を識別するための情報(移動体1−1の移動体識別番号)と、移動体1−1に設定された設定優先度と、を含む。
一方、他移動体情報は、他の移動体1−2、1−3、1−4、1−5のそれぞれに関する情報であり、例えば、他の移動体のそれぞれの動作モードフラグと、走行フラグと、干渉停止処理実行フラグと、他の移動体のそれぞれの現在の自己位置を示す座標値及び姿勢角(「他移動体位置」と呼ぶことにする)と、他の移動体のそれぞれが現在移動中の副環境地図の地図識別番号と、他の移動体のそれぞれの移動体識別番号と、他の移動体のそれぞれに設定された設定優先度と、を含む。
【0039】
このほか、上記の移動体情報及び他移動体情報は、それぞれ、移動体1−1及び他の移動体が通過中の経路の幅に関する情報を含んでいてもよい。各移動体が通過中の通路の幅は、例えば、副環境地図において、通路を形成する構造物Oや壁Wを構成する座標値データ間の距離を算出することにより得られる。
また、記憶部161には、さらに、移動体1−1が自律的に走行する経路を示す走行スケジュールが記憶されていてもよい。
【0040】
制御部16は、レーザレンジセンサ制御部162を有する。レーザレンジセンサ制御部162は、レーザレンジセンサ13を制御する。また、レーザレンジセンサ制御部162は、構造物O及び/または壁Wの本体部11からの相対的な位置を算出する。具体的には、レーザレンジセンサ13からレーザ光を照射したタイミングと、反射光をレーザレンジセンサ13(レーザ受信器)にて受信したタイミングとの時間差から、レーザレンジセンサ13と構造物O及び/または壁Wとの距離が算出される。また、例えば、反射光を受信した時のレーザ受信器の受光面の角度から、本体部11から見た構造物O及び/または壁Wが存在する方向が算出される。
【0041】
レーザレンジセンサ制御部162は、本体部11から見た構造物O及び/または壁Wが存在する相対的な距離と方向に関する情報を、移動環境MEを表す座標平面上の座標値に変換する。
【0042】
制御部16は、自己位置決定部163を有する。自己位置決定部163は、移動環境MEを移動中に、本体部11の環境地図上の位置(自己位置)を決定する。具体的には、自己位置決定部163は、レーザレンジセンサ制御部162にて取得された本体部11の周囲に存在する構造物O及び/又は壁Wの位置(座標値)に関する情報(ローカルマップと呼ぶ)と、モータ121a、121bのそれぞれの出力回転軸の回転量を測定するエンコーダ125a、125bから取得したモータ121a、121bの回転量と、に基づいて、本体部11の位置を推定する。さらに具体的には、例えば、次のようにして、自己位置決定部163は本体部11の位置を推定する。
【0043】
まず、モータ121a、121bの回転量から、本体部11の移動距離と姿勢角変化とを算出する。次に、自己位置決定部163にて前回推定された自己位置に、当該算出した移動距離と姿勢角変化とを加算して、現在の自己位置を推定する(デッドレコニングによる位置推定)。このとき、主輪123a、123bと移動環境MEの走行面との滑り等を考慮して、複数の位置と姿勢角の「候補」を推定しておく。
なお、上記の複数の位置と推定角の「候補」のそれぞれには、本体部11が当該各「候補」の位置及び姿勢角のそれぞれに到達する確率を関連づけておいてもよい。
【0044】
次に、現在移動中の副環境地図上の上記の複数の位置の「候補」のそれぞれに、当該位置の「候補」における姿勢角に対応する角度だけ傾けたローカルマップを配置する。その後、上記の位置の「候補」に配置されたローカルマップと、現在移動中の副環境地図(あるいは現在移動中の副環境地図と当該副環境地図に隣接した副環境地図とを合体した合体地図)とを、例えば、「尤度計算」を実行してマップマッチングし、当該副環境地図(あるいは合体地図)と最もマッチしたローカルマップが配置された位置及び姿勢角の「候補」を、本体部11の最終的な位置及び姿勢角と推定する(マップマッチングによる位置推定)。
なお、複数の位置と姿勢角の「候補」に本体部11が当該各「候補」の位置及び姿勢角に到達する確率を関連づけた場合には、ローカルマップと副環境地図(あるいは合体地図)とが比較的よくマッチングしたいくつかの位置及び姿勢角の「候補」のうち、上記の確率が最大のものを現在の最終的な位置及び姿勢角と推定してもよい。
【0045】
本実施形態において、移動体間距離を算出する場合に、自己位置決定部163は、移動体間距離を測定する対象である他の移動体が自己位置決定のために用いている副環境地図と同一の副環境地図を用いて、自己位置を決定する。これにより、移動体間距離を測定する際に、いずれかの位置の座標値を、他の座標の座標値に変換するなどの処理を実行することなく、簡単に移動体間距離を算出できる。
自己位置を他の移動体と同一の副環境地図を用いて決定するために、後述するように、本実施形態に係る自律移動体システム100においては、複数の移動体1−1、1−2、・・・1−5の間で、各移動体1−1、1−2、・・・1−5が保有する副環境地図が共有される。
【0046】
自己位置決定部163が、上記のように、デッドレコニングによる位置推定とマップマッチングによる位置推定とを用いて本体部11の位置及び姿勢角(自己位置)を推定することにより、デッドレコニングにおける位置及び姿勢角の推定誤差と、マップマッチングにおける位置及び姿勢角の推定誤差(主に、レーザレンジセンサ13により取得されるデータに含まれる誤差に起因する)とを相殺して、より精度よく自己位置を決定できる。
【0047】
制御部16は、走行制御部164を有する。走行制御部164は、モータ121a、121bを制御する。走行制御部164は、例えば、モータ121a、121bのそれぞれの制御量を算出し、当該制御量に基づいた駆動電力をモータ121a、121bのそれぞれに出力するモータドライバである。走行制御部164は、エンコーダ125a、125bから入力したモータ121a、121bの単位時間あたりの回転量(回転速度)が、所望の回転速度となるように、モータ121a、121bの制御量を算出している(フィードバック制御)。
【0048】
走行制御部164は、ユーザによる切替などにより、自律モード又は手動モードのいずれかを実行可能となっている。自律モードの実行時においては、走行制御部164は、例えば、記憶部161に記憶された走行スケジュールに示された各通過位置(例えば、環境地図上の座標値)と、自己位置決定部163において決定された自己位置との差に基づいて、モータ121a、121bのそれぞれの制御量を算出して、算出された制御量に基づいた駆動電力を、これらのモータに出力する。
これにより、走行制御部164は、自律モードの実行時においては、本体部11を、上記の走行スケジュールに従って、自律的に移動できる。
【0049】
一方、手動モードの実行時においては、走行制御部164は、例えば、無線又は有線にて移動体1−1と通信可能なコントローラ又はコンピュータシステム、又は、移動体1−1に設けられた操作ハンドル(図示せず)などを用いたユーザの操作を受け付けて、当該ユーザの操作の操作量に基づいて、モータ121a、121bを制御する。これにより、移動体1−1は、ユーザの操作により移動可能となる。
【0050】
走行制御部164は、記憶部161に記憶されている走行フラグを、本体部11の移動又は停止に従って変化させる。例えば、モータ121a、121bの回転量が0でなく本体部11を移動中と判断した場合には、走行制御部164は、走行フラグをON(例えば、「1」(ビットを立てる))とする。一方、モータ121a、121bの回転量が0であり本体部11を停止中と判断した場合には、走行制御部164は、走行フラグをOFF(例えば、「0」(ビットを下げる))とする。
また、走行制御部164は、記憶部161に記憶されている動作モードフラグを、実行中の動作モードに従って変化させる。例えば、自律モードを実行中の場合には、走行制御部164は、動作モードフラグをONとする。一方、手動モードを実行中の場合には、走行制御部164は、動作モードフラグをOFFとする。
【0051】
制御部16は、障害物検出部165を有する。障害物検出部165は、移動環境MEを移動中に、本体部11の近辺の障害物を検出する。
具体的には、障害物検出部165は、移動環境MEを移動中に、障害物検出センサ15に対して超音波信号の出力を指令し、反射などにより障害物検出センサ15に戻ってきた当該超音波信号を受信する。障害物検出部165は、超音波信号の出力を指令したタイミングと、反射などにより障害物検出センサ15に戻ってきた超音波信号を受信したタイミングとの時間差から、障害物検出センサ15から障害物までの距離を算出する。
本実施形態において、障害物検出部165は、障害物検出センサ15から障害物までの距離が所定の距離以下であり、本体部11の近辺に障害物が存在すると判断したら、走行制御部164に対して、本体部11の移動を停止するよう指令する。これにより、移動体1−1は、障害物と衝突する前に、安全に停止できる。
【0052】
制御部16は、移動体間通信部166を有する。移動体間通信部166は、移動体間通信アンテナ14を用いて他の移動体と互いに直接通信(移動体間通信)するための、例えば無線通信(無線LAN、Wi−Fiなど)モジュールである。移動体間通信部166は、例えば、アドホック通信にて、UDP(User Datagram Protocol)やTCP/IP(Transmission Control Protocol/Internet Protocol)といった通信プロトコルを用いて、他の移動体の移動体間通信部と通信する。
これにより、移動体間通信部166は、移動体間通信が可能な移動体間で情報を共有できる。移動体間通信部166による移動体間での情報の共有については、後ほど詳しく説明する。
【0053】
制御部16は、距離算出部167を有する。距離算出部167は、自己位置と他移動体位置との間の距離を、移動体間距離として算出する。
【0054】
制御部16は、優先度決定部168を有する。優先度決定部168は、近接移動体(後述)との間の移動に関する移動優先度を決定する。優先度決定部168における移動優先度の決定方法については、後ほど詳しく説明する。
【0055】
制御部16は、干渉停止部169を有する。干渉停止部169は、他の移動体1−2、1−2、・・・1−5のうち、移動体間距離が干渉距離未満である移動体を、本体部11に接近した移動体(「近接移動体」と呼ぶことにする)と決定する。本実施形態の干渉距離は、障害物検出部165が他の移動体からの超音波信号を誤検知するか、その逆に、他の移動体が障害物検出センサ15からの超音波信号を誤検知する最大の移動体間距離として定義される。本実施形態における干渉距離の決定方法については、後ほど詳しく説明する。
【0056】
干渉停止部169は、移動体間通信部166における移動体間通信が不調である場合に、近接移動体は存在しないと決定する。ここで、「移動体間通信が不調」であるとは、例えば、他の移動体の移動体間通信部を認識できない状態(例えば、他の移動体の移動体間通信部を識別するIPアドレス、SSID(Service Set Identifier)、MAC(Media Access Control)アドレスなどを取得できない状態)、及び/又は、他の移動体の移動体間通信部を認識できるが通信エラーが発生している状態(例えば、通信パケットが受信できない確率が所定の値以上となった状態や、通信がタイムアウトした状態)などを指す。
上記のような移動体間通信の不調は、一般的に、本体部11と他の移動体との間の距離が無線通信できない程度に離れている(この距離は、一般的に、干渉距離よりも大きい)場合に頻発する。従って、移動体間通信が不調である場合には、本体部11と他の移動体との間の距離が干渉距離よりも大きいと判断し、近接移動体は存在しないと決定できる。
【0057】
干渉停止部169は、優先度決定部168において近接移動体よりも自身の移動優先度が低いと決定されたら、干渉停止処理を実行する。干渉停止処理は、本体部11が他の移動体と衝突することなく協調して走行するとともに、他の移動体の障害物検出部における障害物の誤検知を防止するための処理である。本実施形態における具体的な干渉停止処理については、後ほど説明する。
【0058】
制御部16は、走行スケジュール作成部1610を有する。走行スケジュール作成部1610は、ユーザの操作による移動体1−1の移動を走行スケジュールとして記憶部161に記憶する。
具体的には、走行スケジュール作成部1610は、ユーザの操作により移動体1−1を移動中に、所定の時間間隔毎に、自己位置決定部163において決定された自己位置を入力する。その後、走行スケジュール作成部1610は、入力した自己位置と、当該自己位置を決定した時刻とを関連づけて走行スケジュールを作成し、当該走行スケジュールを記憶部161に記憶する。走行スケジュール作成部1610は、自己位置を決定した時刻におけるユーザの操作の操作量を受け付けて、当該操作量を当該時刻と関連付けて走行スケジュールに記憶してもよい。
【0059】
走行スケジュール作成部1610は、例えば、本体部11を手動モードにて移動中に、ユーザにより指定された移動環境ME上の位置を中心とした副環境地図を、当該指定位置を中心とした構造物O及び/または壁Wの存在位置を示す座標値の集合体として作成し、記憶部161に記憶する。
具体的には、例えば、走行スケジュール作成部1610は、ユーザにより副環境地図の作成指令(上記の指定位置の指定)がなされたときに、レーザレンジセンサ制御部162に対して、指定位置に対する移動環境ME上の構造物O及び/または壁Wの相対位置を示す座標値データを取得するよう指令し、レーザレンジセンサ制御部162にて取得した当該座標値データを用いて、副環境地図を作成する。
その後、走行スケジュール作成部1610は、現在使用されていない地図識別番号に作成した副環境地図を割り当て、作成した副環境地図から地図内容情報を生成し、割り当てた地図識別番号と生成した地図内容情報とを関連付けて、保有地図情報に記憶する。
【0060】
移動体1−1の制御部16が上記の構成を有することにより、複数の移動体1−1、1−2、・・・1−5を制御する外部の制御システムを設けることなく、移動体1−1自身が、他の移動体1−2、1−3、1−4、1−5との位置関係及び移動に関する優先度を判断し、当該判断に基づいて本体部11の移動を制御できる。これにより、例えば、自律移動体システム100を異なる移動環境において使用する場合でも、自律移動体システム100を大幅に再構築する必要がなくなる。
【0061】
(4)干渉距離の決定方法
以下、近接移動体が存在するか否かを決定する際に用いられる干渉距離の決定方法について説明する。干渉距離は、以下のようにして、実際に誤検知がなされる距離を測定することにより、実験的に決定される。
【0062】
本実施形態の障害物検出部165は、
図4に示すように、障害物検出センサ15から超音波信号を出力してからの時間に応じて、検出された超音波信号に対して閾値を設けている。
図4は、検出する超音波信号の閾値の時間変化の一例を示す図である。
具体的には、障害物検出部165は、障害物検出センサ15から超音波信号を出力してから時間t1が経過するまでは、信号強度がs1以上である超音波信号を障害物検出センサ15が受信した時に、障害物が存在すると判断する。
以降、時間t1から時間t2までは、信号強度がs2以上である超音波信号を障害物検出センサ15が受信した時に、障害物が存在すると判断する。また、時間t2から時間t3までは、信号強度がs3以上である超音波信号を障害物検出センサ15が受信した時に、障害物が存在すると判断する。さらに、時間t3以降は、信号強度がs4以上である超音波信号を障害物検出センサ15が受信した時に、障害物が存在すると判断する。
【0063】
本実施形態の障害物検出部165は、このうち、超音波信号が出力されて時間t1までに信号強度がs1以上である(障害物検出センサ15から出力され障害物にて反射された)超音波信号が受信されたときに、本体部11の近辺に障害物が存在すると判断する。すなわち、障害物検出部165は、障害物検出センサ15と障害物との間の距離がc*t1/2(c:音速)以下となったときに、本体部11の近辺に障害物が存在すると判断する。
【0064】
従って、本実施形態においては、移動体において用いる2つの障害物検出センサの間の距離を変化させながら一方の障害物検出センサから超音波信号を出力したときに、他方の障害物検出センサにてどの強度の超音波信号が受信されるかを実際に測定し、当該測定結果を用いて干渉距離を決定する。
当該測定結果を、2つのセンサ間の距離を横軸とし、他方の障害物検出センサにて検出された信号強度を縦軸とした座標上にプロットすると、例えば、
図5の実線にて示す関係が得られる。
図5は、2つのセンサ間距離と検出された信号強度との関係の一例を示す図である。
【0065】
次に、上記の2つのセンサ間の距離と検出された信号強度との関係を示したプロットにおいて、他方の障害物検出センサにて検出された超音波信号の信号値がs1となったときの2つのセンサ間の距離を、干渉基準距離と決定する。干渉基準距離を決定後、例えば、当該干渉基準距離に、障害物検出センサ15の本体部11における設置位置と本体部11の中心位置との間の距離の2倍の値を加算して、干渉距離と決定する。
干渉距離を算出する際に、障害物検出センサ15の設置位置と本体部11の中心位置との間の距離の2倍の値を干渉基準距離に加える理由は、自己位置及び他移動体位置が本体部の中心位置の座標値として定義されているためである。
【0066】
上記のようにして干渉距離を決定することにより、他の移動体から出力された超音波信号が、障害物検出センサ15において信号強度がs1以上となって検出される誤検知を回避できる。すなわち、信号強度がs1以上である他の移動体から出力された超音波信号を誤検知して、障害物(他の移動体)と本体部とが十分(距離c*t1/2以上)離れているにも関わらず、本体部11の近辺に障害物が存在すると判断してしまうことを回避できる。
【0067】
(5)自律移動体システムにおける移動体の動作
(5−1)移動体の移動動作
以下、自律移動体システム100における移動体の移動動作を説明する。以下においては、移動体1−1の移動動作を例にとって説明する。
移動体1−1の電源をオンにして移動体1−1を起動すると、ユーザは、例えば、本体部11に設けられた切替スイッチ(例えば、電気スイッチ、タッチパネルなど)、又は、移動体1−1を操作するコントローラを操作して、移動体1−1の動作モードを手動モードとするか自律モードとするか切り替える。
走行制御部164は、動作モードとして自律モードが選択された場合には移動体情報の動作モードフラグをONに、手動モードが選択された場合には動作モードフラグをOFFに更新する。
【0068】
自律モードの実行中には、移動体1−1は、例えば、記憶部161に記憶された走行スケジュールに従って、移動環境MEを自律的に移動する。
一方、手動モードの実行中には、移動体1−1は、無線又は有線にて移動体1−1と通信可能なコントローラ又はコンピュータシステム、又は、移動体1−3に設けられた操作ハンドルからのユーザによる操作を受け付ける。この結果、移動体1−1は、ユーザの操作により、移動環境MEを移動する。
【0069】
上記の移動中に、移動体1−1は、他の移動体との間の位置関係や移動優先度の高低を判断し、当該判断に基づいて、干渉停止処理を実行するか否かを決定する。また、上記の移動中に、移動体1−1は、移動体間通信により、他の移動体と情報を共有する。
【0070】
(5−2)他の移動体との情報共有処理
以下、移動環境MEの移動中に実行される他の移動体との情報共有処理について、
図6を用いて説明する。
図6は、他の移動体との情報共有処理の流れを示すフローチャートである。
情報共有処理を開始すると、移動体間通信部166は、通信可能移動体(以下、通信可能移動体と呼ぶことがある)が存在するか否かを判断する(ステップS11)。具体的には、例えば、移動体間通信部166が、他の移動体の移動体間通信部を認識できる場合には、通信可能移動体が存在すると判断する。なお、情報共有処理を実行中に移動体間通信の通信エラーが発生した場合には、他の移動体の移動体間通信部との通信を停止する。
【0071】
通信可能移動体が存在しないと判断した場合(ステップS11において「No」の場合)、移動体間通信部166は、通信可能移動体が出現するまで待機する。
一方、通信可能移動体が存在すると判断した場合(ステップS11において「Yes」の場合)、移動体間通信部166は、現在記憶部161に記憶されている移動体情報を、通信可能移動体のそれぞれに送信する(ステップS12)。当該送信された移動体情報を受信した他の移動体の移動体間通信部は、受信した移動体情報を、他の移動体における他移動体情報として、当該他の移動体の記憶部に記憶する。これにより、移動体1−1に関する情報が、他の移動体と共有される。
【0072】
移動体情報を送信後、移動体間通信部166は、通信可能移動体のそれぞれから、当該他の移動体の移動体情報を受信する(ステップS13)。他の移動体の移動体情報を受信すると、移動体間通信部166は、当該受信した移動体情報を、他移動体情報として記憶部161に記憶する。これにより、他の移動体に関する情報が、移動体1−1において共有される。
【0073】
移動体情報及び他移動体情報を共有後、移動体間通信部166は、記憶部161に記憶されていない(すなわち、移動体1−1が所有していない)副環境地図である非保有地図を、通信可能移動体が保有しているか否かを判断する(ステップS14)。
具体的には、まず、移動体間通信部166は、通信可能移動体の記憶部に現在記憶されている保有地図情報を、当該他の移動体から受信する。次に、移動体間通信部166は、記憶部161に記憶されている保有地図情報に含まれる地図内容情報と一致しない地図内容情報が、受信した他の移動体の保有地図情報に含まれている場合に、非保有地図を他の移動体が保有していると判断する。
【0074】
非保有地図を通信可能移動体が保有していると判断した場合(ステップS14において「Yes」の場合)、移動体間通信部166は、非保有地図を当該他の移動体から受信する(ステップS15)。
具体的には、移動体間通信部166は、まず、他の移動体の保有地図情報において上記の非保有地図と関連付けられている地図識別番号を、当該他の移動体へ送信する。当該地図識別番号を受信した他の移動体の移動体間通信部は、当該受信した地図識別番号に関連付けられた副環境地図を、移動体間通信部166へ送信する。
なお、移動体間通信のタイミングによっては、他の移動体へ非保有地図の地図識別番号を送信することなく、通信可能移動体から、受信希望の非保有地図が送信されてくる場合もある。
【0075】
副環境地図(非保有地図)を他の移動体から受信した移動体間通信部166は、当該副環境地図を記憶部161に記憶する。その後、移動体間通信部166は、当該受信した副環境地図に地図識別番号を割り当てるとともに、当該他の移動体から受信した副環境地図の地図内容情報を、当該副環境地図に割り当てられた地図識別番号と関連付けて、保有地図情報に記憶する。
これにより、記憶部161に記憶されていなかった副環境地図(非保有地図)が、他の移動体と共有される。
【0076】
一方、非保有地図を通信可能移動体が保有していないと判断した場合(ステップS14において「No」の場合)、情報共有処理は、ステップS16に進む。
【0077】
非保有地図を共有後、移動体間通信部166は、記憶部161に記憶されている副環境地図である保有地図を、通信可能移動体が保有していないか否かを判断する(ステップS16)。
具体的には、移動体間通信部166は、記憶部161に記憶されている保有地図情報に含まれる地図内容情報と一致する地図内容情報が、上記のステップS14にて他の移動体から受信した保有地図情報に含まれていない場合に、保有地図を当該他の移動体が保有していないと判断する。
なお、移動体間通信のタイミングによっては、他の移動体が保有していない保有地図が存在するか否かの判断の完了前に、他の移動体から当該他の移動体に送信すべき保有地図の地図識別番号が送信されてくる場合もある。このような場合にも、移動体間通信部166は、保有地図を通信可能移動体が保有していないと判断する。
【0078】
保有地図を通信可能移動体が保有していないと判断した場合(ステップS16において「Yes」の場合)、移動体間通信部166は、保有地図を当該他の移動体へ送信する(ステップS17)。
具体的には、移動体間通信部166は、まず、記憶部161に記憶されている保有地図情報に含まれるが、他の移動体から受信した保有地図情報には含まれていない地図内容情報に関連付けられている地図識別番号を特定する。なお、他の移動体から送信希望の地図識別番号を受信した場合には、送信したい保有地図の地図識別番号を特定する処理は必要ない。
次に、移動体間通信部166は、上記のように特定した地図識別番号又は他の移動体から受信した地図識別番号に割り当てられた副環境地図(保有地図)を、当該特定した保有地図を送信すべき他の移動体、又は、当該送信希望の地図識別番号を送信してきた他の移動体へと送信する。
【0079】
上記の副環境地図(保有地図)を受信した他の移動体の移動体間通信部は、当該受信した副環境地図を、当該他の移動体における保有地図として記憶部に記憶する。その後、当該他の移動体の移動体間通信部は、移動体間通信部166から受信した副環境地図の地図内容情報を、当該受信した副環境地図に当該他の移動体において割り当てられた地図識別番号と関連付けて、当該他の移動体の保有地図情報に記憶する。
これにより、記憶部161に記憶されていた副環境地図(保有地図)が、他の移動体と共有される。
【0080】
一方、保有地図を通信可能移動体が保有していると判断した場合(ステップS16において「No」の場合)、情報共有処理は、ステップS18に進む。
【0081】
上記のステップS11〜S17を実行後、移動体間通信部166は、情報共有処理を停止するか否かを判断する(ステップS18)。例えば、移動体1−1が移動を完了して他の移動体と情報共有する必要がなくなった場合に、情報共有処理を停止すると判断する。
情報共有処理を停止しないと判断した場合(ステップS18において「No」の場合)、情報共有処理は、ステップS11に戻る。すなわち、情報共有処理は継続される。
一方、情報共有処理を停止すると判断した場合(ステップS18において「Yes」の場合)、移動体間通信部166は、情報共有処理を停止する。
【0082】
上記のステップS11〜S18を移動環境MEの移動中に実行することにより、移動体1−1は、他の移動体1−2、1−3、1−4、1−5と互いに情報を共有できる。
なお、移動体1−1の記憶部161に記憶されている情報を基準として他の移動体1−2、1−3、1−4、1−5の情報を更新又は追加することにより情報を共有するか、その逆に、他の移動体1−2、1−3、1−4、1−5のいずれかの記憶部に記憶されている情報を基準として移動体1−1の情報を更新又は追加することにより情報を共有するかは、移動体間通信の開始タイミング(例えば、どの移動体がより早く移動体間通信を開始したかなど)などにより、適宜決定できる。
【0083】
(5−3)干渉停止処理を実行するか否かの決定処理
次に、移動環境MEの移動中に移動体1−1における干渉停止処理の実行を決定する処理(以下、決定処理と呼ぶことがある)について、
図7を用いて説明する。
図7は、干渉停止処理を実行するか否かを決定する処理の流れを示すフローチャートである。
【0084】
決定処理を開始すると、干渉停止部169は、干渉停止処理を現在実行中であるか否かを判断する(ステップS1)。そのために、干渉停止部169は、記憶部161に現在記憶されている移動体情報の干渉停止処理実行フラグの状態を参照する。
【0085】
例えば、干渉停止処理実行フラグがOFFであり、移動体1−1において干渉停止処理が現在実行されていないと判断した場合(ステップS1において「No」の場合)、決定処理は、ステップS2に進む。すなわち、干渉停止処理を実行すべきか否かを決定して、実行すべきと判断された場合には、干渉停止処理を実行する。
一方、例えば、干渉停止処理実行フラグがONであり、移動体1−1において干渉停止処理が現在実行中であると判断した場合(ステップS1において「Yes」の場合)、決定処理は、ステップS7に進む。すなわち、現在実行中の干渉停止処理を解除すべきか否かを決定して、解除すべきと判断された場合には、干渉停止処理を停止する。
【0086】
ステップS2において、干渉停止部169は、移動体1−1において実行中の動作モードが自律モードであるか手動モードであるかを判断する。具体的には、干渉停止部169は、記憶部161に現在記憶されている移動体情報の動作モードフラグの状態を参照する。その他、干渉停止部169は、動作モードを切り替える切替スイッチの状態を検知してもよい。
【0087】
例えば、動作モードフラグがONであり、移動体1−1が自律モードを実行中であると判断した場合(ステップS2において「自律」の場合)、決定処理は、ステップS3に進む。すなわち、制御部16は、自律モード実行中において干渉停止処理を実行するか否かを決定する。この処理を、以下、「第1停止チェック処理」と呼ぶ。
一方、例えば、動作モードフラグがOFFであり、移動体1−1が手動モードを実行中であると判断した場合(ステップS2において「手動」の場合)、決定処理は、ステップS4に進む。すなわち、制御部16は、手動モード実行中において干渉停止処理を実行するか否かを決定する。この処理を、以下、「第2停止チェック処理」と呼ぶことにする。
なお、上記の第1停止チェック処理及び第2停止チェック処理については、後ほど詳しく説明する。
【0088】
ステップS3(第1停止チェック処理)又はS4(第2停止チェック処理)を実行後、第1停止チェック処理又は第2停止チェック処理において干渉停止処理を実行すると判断した場合(ステップS5において「Yes」の場合)、干渉停止部169は、干渉停止処理実行フラグをONにして、干渉停止処理を実行する(ステップS6)。
具体的には、干渉停止部169は、走行制御部164に対して本体部11の移動を停止するよう指令することと(手動モードの実行中においては、走行制御部164に対してユーザによる操作を受け付けないよう指令する)、障害物検出部165に対して障害物検出センサ15からの超音波信号の出力を停止するか、又は、超音波信号の強度を弱くして出力する(例えば、信号強度を上記の信号強度s1よりも小さくして出力する)よう指令する。
また、干渉停止部169は、本体部11に設けられたLEDランプ(図示せず)を点灯させる。
【0089】
干渉停止部169が上記の処理を干渉停止処理として実行することにより、移動体1−1は、他の移動体と衝突することなく協調して走行可能となる。また、他の移動体の障害物検出部が、移動体1−1の障害物検出センサ15から出力された超音波信号を誤検知して、当該他の移動体の近辺に障害物が存在すると誤判断することを回避できる。
干渉停止処理を実行後、決定処理は、ステップS10に進む。
【0090】
一方、第1停止チェック処理又は第2停止チェック処理において干渉停止処理を実行しないと判断した場合(ステップS5において「No」の場合)、干渉停止処理を実行することなく、決定処理は、ステップS10に進む。
【0091】
上記のステップS1において干渉停止処理が現在実行中であると判断した場合、干渉停止部169は、現在実行中の干渉停止処理を解除すべきか否かを決定する(ステップS7)。この処理を、以下、「停止解除チェック処理」と呼ぶことにする。なお、停止解除チェック処理は後述する。
ステップS7において現在実行中の干渉停止処理を解除しないと判断した場合(ステップS8において「No」の場合)、決定処理は、ステップS1に戻る。すなわち、干渉停止部169は、現在実行中の干渉停止処理を継続する。
【0092】
一方、ステップS7の停止解除チェック処理において現在実行中の干渉停止処理を解除すると判断した場合(ステップS8において「Yes」の場合)、干渉停止部169は、干渉停止処理実行フラグをOFFにして、現在実行中の干渉停止処理を解除する(ステップS9)。
具体的には、干渉停止部169は、走行制御部164に対して本体部11の移動を再開するよう指令し(手動モードの実行中においては、走行制御部164に対してユーザによる操作を受け付けるよう指令する)、障害物検出部165に対して障害物検出センサ15から通常の強度を有する超音波信号を出力するよう指令する。また、干渉停止部169は、本体部11に設けられたLEDランプを消灯する。
【0093】
上記のステップS1〜S9を実行後、制御部16は、決定処理を終了するか否かを判断する(ステップS10)。例えば、移動体1−1の移動が完了したと判断した場合(自律モードの実行時には走行スケジュールの全てを完了した場合、手動モードの実行時にはユーザによる操作を一定期間受信できなかったことにより移動を完了すると判断した場合)、制御部16は、決定処理を終了すると判断する。
【0094】
決定処理を終了しないと判断した場合(ステップS10において「No」の場合)、決定処理は、ステップS1に戻り、当該処理を継続する。
一方、決定処理を終了すると判断した場合(ステップS10において「Yes」の場合)、決定処理は終了する。
【0095】
上記のステップS1〜S10を実行することにより、上記の干渉停止処理を実行するか否かを制御部16が判断して、当該判断に基づいて、制御部16が干渉停止処理を実行又は解除できる。すなわち、各移動体1−1、1−2、・・・1−5が自律的に干渉停止処理を実行するか否かを判断でき、干渉停止処理を自律的に実行又は解除できる。
この結果、各移動体1−1、1−2、・・・1−3は、外部の制御システムにより統括的に制御されることなく、自律的に協調して移動環境MEを移動できる。
【0096】
(5−4)第1停止チェック処理
次に、上記のステップS3において実行される第1停止チェック処理について、
図8を用いて説明する。
図8は、第1停止チェック処理の流れを示すフローチャートである。
上記のステップS2において実行中の動作モードが自律モードと判断され、第1停止チェック処理が開始されると、干渉停止部169は、通信可能移動体が存在しているか否かを判断する(ステップS3−1)。干渉停止部169は、例えば、移動体間通信部166において他の移動体の移動体間通信部が全く認識できないか、又は、他の移動体の移動体間通信部との間の移動体間通信に通信エラーが発生している場合に、通信可能移動体が存在しないと判断する。
【0097】
通信可能移動体が存在しないと判断した場合(ステップS3−1において「No」の場合)、干渉停止部169は、移動体1−1の近辺に近接移動体が存在していないと判断し、干渉停止処理を実行しないと判断する(ステップS3−12)。その後、第1停止チェック処理を終了する。
一方、通信可能移動体が存在している場合(ステップS3−1において「Yes」の場合)、当該通信可能移動体の中に近接移動体が存在する可能性があるので、干渉停止部169は、通信可能移動体の中に近接移動体が存在するか否かを判断する(ステップS3−2)。
【0098】
具体的には、干渉停止部169は、まず、距離算出部167に対して、移動体1−1と、通信可能移動体のそれぞれとの移動体間距離を算出するよう指令する。当該指令を受けた距離算出部167は、記憶部161に記憶されている移動体情報に含まれる自己位置の座標値と、他移動体情報に含まれる他移動体位置の座標値と、を用いて、移動体1−1の本体部11の中心と他の移動体の本体部の中心との間の距離を、移動体間距離として算出する。
【0099】
移動体間距離が上記の干渉距離未満である他の移動体が存在しない場合(ステップS3−2において「No」の場合)、干渉停止部169は、近接移動体が存在しないと判断し、干渉停止処理を実行しないと判断する(ステップS3−12)。その後、第1停止チェック処理を終了する。
一方、移動体間距離が上記の干渉距離未満である他の移動体が存在する場合(ステップS3−2において「Yes」の場合)、干渉停止部169は、近接移動体が存在すると判断する。干渉停止部169は、近接移動体である他の移動体(例えば、近接移動体の移動体識別番号)を特定後、優先度決定部168に対して、移動体1−1の移動優先度と近接移動体の移動優先度との比較結果を通知するよう指令する。
【0100】
上記の指令を受けた優先度決定部168は、まず、近接移動体が自律モードを実行中であるかどうかを判断する(ステップS3−3)。なお、以下のステップS3−3〜S3−10は、1つの近接移動体と移動体1−1との移動優先度の比較として実行され、複数の近接移動体が存在する場合には、存在する近接移動体分だけ繰り返し実行される。優先度決定部168は、例えば、近接移動体の他移動体情報に含まれる動作モードフラグを参照することにより、近接移動体において実行されている動作モードを判断する。
比較対象の近接移動体の他移動体情報に含まれる動作モードフラグがOFFであり、比較対象の近接移動体が手動モードを実行中であると判断した場合(ステップS3−3において「No」の場合)、優先度決定部168は、移動体1−1の移動優先度が比較対象の近接移動体の移動優先度よりも高いと決定し、第1停止チェック処理は、ステップS3−10に進む。
【0101】
一方、比較対象の近接移動体が自律モードを実行中(すなわち、動作モードフラグがON)の場合(ステップS3−3において「Yes」の場合)、優先度決定部168は、動作モードの比較では移動優先度の高低を決定できないと判断し、さらに移動優先度の高低を決定する処理を実行する。
【0102】
上記の判断後には、優先度決定部168は、移動体1−1の走行状態と近接移動体の走行状態との比較により、移動優先度の高低を決定する。
優先度決定部168は、例えば、移動体情報の走行フラグを参照して、移動体1−1の走行状態を決定する。一方、近接移動体の走行状態は、例えば、近接移動体の他移動体情報の走行フラグと干渉停止処理実行フラグとを参照することにより決定される。
【0103】
上記のように、近接移動体の他移動体情報において走行フラグと干渉停止処理実行フラグとを参照する理由は、走行フラグの情報だけでは、近接移動体が、通常の移動において一時停止しているだけなのか、干渉停止処理の実行により一時停止しているかを区別できないからである。本実施形態においては、干渉停止処理を実行していない(すなわち、干渉停止処理実行フラグがOFFである)近接移動体の走行状態と、移動体1−1の走行状態との比較を行う。
一方、移動体1−1の移動体情報において走行フラグの情報のみを参照すればよい理由は、第1停止チェック処理を実行していることは、移動体1−1が干渉停止処理を実行していないことを意味しているからである。
【0104】
移動体情報の走行フラグがON(移動体1−1が走行中)、かつ、比較対象の近接移動体の他移動体情報の走行フラグがOFF(比較対象の近接移動体が自律モードにて一時停止中)の場合(ステップS3−4において「Yes」であり、かつ、ステップS3−5において「No」の場合)、優先度決定部168は、移動体1−1の移動優先度が比較対象の近接移動体の移動優先度よりも高いと決定し、第1停止チェック処理は、ステップS3−10に進む。
【0105】
一方、移動体情報の走行フラグがOFF(移動体1−1が一時停止中)、かつ、比較対象の近接移動体の他移動体情報の走行フラグがON(比較対象の近接移動体が自律モードにて走行中)の場合(ステップS3−4において「No」であり、かつ、ステップS3−6において「Yes」の場合)、優先度決定部168は、移動体1−1の移動優先度が比較対象の近接移動体の移動優先度よりも低いと決定し、当該結果を干渉停止部169へ通知する。干渉停止部169は、干渉停止処理を実行すると判断し(ステップS3−11)、第1停止チェック処理を終了する。
【0106】
さらに、移動体情報の走行フラグがON(移動体1−1が走行中)、かつ、比較対象の近接移動体の他移動体情報の走行フラグがONである(比較対象の近接移動体が自律モードにて走行中)場合(ステップS3−4において「Yes」であり、かつ、ステップS3−5において「Yes」の場合)、優先度決定部168は、移動体の走行状態では移動優先度の高低を決定できないと判断し、さらなる移動優先度の決定処理を実行する。
【0107】
また、移動体情報の走行フラグがOFF(移動体1−1が一時停止中)、かつ、比較対象の近接移動体の他移動体情報の走行フラグがOFFである(比較対象の近接移動体が自律モードにて一時停止中)場合(ステップS3−4において「No」であり、かつ、ステップS3−6において「No」の場合)にも、優先度決定部168は、移動体の走行状態では移動優先度の高低を決定できないと判断し、さらなる移動優先度の決定処理を実行する。
【0108】
移動優先度同士の高低が、実行中の動作モード及び走行状態の比較によって決定できない場合、優先度決定部168は、移動体1−1が通過中の通路の幅と、近接移動体が通過中の通路の幅とを比較して、移動優先度を決定する(ステップS3−7)。通過中の通路の幅は、上記のようにして副環境地図を用いて算出してもよいし、移動体情報及び他移動体情報を参照することにより取得してもよい。
【0109】
移動体1−1が通過中の通路の幅が、比較対象の近接移動体が通過中の通路の幅よりも狭い場合(ステップS3−7において「狭」の場合)、優先度決定部168は、移動体1−1の移動優先度が比較対象の近接移動体の移動優先度よりも高いと決定し、第1停止チェック処理は、ステップS3−10に進む。
一方、移動体1−1が通過中の通路の幅が、比較対象の近接移動体が通過中の通路の幅よりも広い場合(ステップS3−7において「広」の場合)、優先度決定部168は、移動体1−1の移動優先度が比較対象の近接移動体の移動優先度よりも低いと決定し、当該結果を干渉停止部169へ通知する。当該通知をうけた干渉停止部169は、干渉停止処理を実行すると判断し(ステップS3−11)、第1停止チェック処理を終了する。
【0110】
上記のように、より幅が狭い通路を通過中の移動体の移動優先度を高めることにより、例えば、現在狭い通路を通過している移動体を当該狭い通路から脱出させたあとに、他の移動体を当該狭い通路へ進入させることができる。その結果、複数の移動体が狭い通路を効率よく協調して通過できる。
【0111】
さらに、移動体1−1が通過中の通路の幅が、比較対象の近接移動体が通過中の通路の幅と同一の場合(ステップS3−7において「同一」の場合)、優先度決定部168は、通過中の通路の幅によって移動優先度の高低を決定できないと判断し、さらなる移動優先度の決定処理を実行する。
【0112】
上記のように、移動優先度同士の高低を、通過中の通路の幅に基づいても決定できない場合、優先度決定部168は、移動体1−1に設定された設定優先度と、近接移動体に設定された設定優先度との比較により、移動優先度を決定する(ステップS3−8)。
優先度決定部168は、移動体情報及び近接移動体の他移動体情報を参照することにより、移動体1−1及び近接移動体の設定優先度を取得できる。
【0113】
移動体1−1の設定優先度が、比較対象の近接移動体の設定優先度よりも高い場合(ステップS3−8において「高」の場合)、優先度決定部168は、移動体1−1の移動優先度が比較対象の近接移動体の移動優先度よりも高いと決定し、第1停止チェック処理は、ステップS3−10に進む。
一方、移動体1−1の設定優先度が、比較対象の近接移動体の設定優先度よりも低い場合(ステップS3−8において「低」の場合)、優先度決定部168は、移動体1−1の移動優先度が比較対象の近接移動体の移動優先度よりも低いと決定し、当該結果を干渉停止部169へ通知する。当該通知をうけた干渉停止部169は、干渉停止処理を実行すると判断し(ステップS3−11)、第1停止チェック処理を終了する。
これにより、ユーザにより決められた設定優先度がより高い移動体を優先的に移動させて、複数の移動体1−1、1−2、・・・1−5は、移動環境MEを効率的に移動できる。
【0114】
さらに、移動体1−1の設定優先度が、比較対象の近接移動体の設定優先度と同一の場合(ステップS3−8において「同一」の場合)、優先度決定部168は、設定優先度では移動優先度の高低を決定できないと判断し、さらなる移動優先度の決定処理を実行する。
なお、複数の移動体1−1、1−2、・・・1−5において設定優先度が設定されていない場合にも、優先度決定部168は、設定優先度では移動優先度を決定できないと判断する。
【0115】
移動優先度相互の高低が、実行中の動作モード、走行状態、通路の幅、及び設定優先度の比較によって決定できない場合、優先度決定部168は、移動体1−1に割り当てられた移動体識別番号と、近接移動体に割り当てられた移動体識別番号との大小の比較により、移動優先度を決定する(ステップS3−9)。
優先度決定部168は、移動体情報及び近接移動体の他移動体情報を参照することにより、移動体1−1及び近接移動体の移動体識別番号を取得できる。
【0116】
移動体1−1の移動体識別番号が、比較対象の近接移動体の移動体識別番号よりも小さい場合(ステップS3−9において「No」の場合)、優先度決定部168は、移動体1−1の移動優先度が比較対象の近接移動体の移動優先度よりも高いと決定し、第1停止チェック処理は、ステップS3−10に進む。
一方、移動体1−1の移動体識別番号が、比較対象の近接移動体の移動体識別番号よりも大きい場合(ステップS3−9において「Yes」の場合)、優先度決定部168は、移動体1−1の移動優先度が比較対象の近接移動体の移動優先度よりも低いと決定し、当該結果を干渉停止部169へ通知する。当該通知をうけた干渉停止部169は、干渉停止処理を実行すると判断し(ステップS3−11)、第1停止チェック処理を終了する。
これにより、個別に割り当てられた移動体識別番号がより小さい移動体を優先的に移動できる。
【0117】
上記のステップS3−3〜S3−9を実行した結果、移動体1−1の移動優先度が今回の比較対象の近接移動体の移動優先度よりも高いと判定された場合、優先度決定部168は、全ての近接移動体に対してステップS3−3〜S3−9の判定を実行したか否かを判断する(ステップS3−10)。全ての近接移動体に対して移動優先度の高低の判定を実行したか否かは、例えば、近接移動体とされた移動体の識別番号の全てに対して、上記のステップS3−3〜S3−9を実行したかを確認することにより、判断できる。
【0118】
移動優先度の判定を実行すべき近接移動体が存在する場合(ステップS3−10において「No」の場合)、第1停止チェック処理は、ステップS3−3に戻り、他の近接移動体を比較対象として、移動優先度の高低の判定を実行する。
一方、移動優先度の判定を全ての近接移動体に対して実行した場合(ステップS3−10において「Yes」の場合)、優先度決定部168は、移動体1−1の移動優先度がどの近接移動体よりも高いと判定し、当該結果を干渉停止部169へ通知する。当該通知をうけた干渉停止部169は、干渉停止処理を実行しないと判断し(ステップS3−12)、第1停止チェック処理を終了する。
【0119】
上記のステップS3−1〜S3−12を実行することにより、干渉距離未満の範囲内に存在する複数台の移動体のうち、移動優先度が最も高い移動体を、優先的に移動できる。
【0120】
(5−5)第2停止チェック処理
次に、上記のステップS4において実行される第2停止チェック処理について、
図9を用いて説明する。
図9は、第2停止チェック処理の流れを示すフローチャートである。
上記のステップS2において実行中の動作モードが手動モードと判断され、第2停止チェック処理が開始されると、干渉停止部169は、通信可能移動体が存在しているか否かを判断する(ステップS4−1)。
【0121】
通信可能移動体が存在しないと判断した場合(ステップS4−1において「No」の場合)、干渉停止部169は、移動体1−1の近辺に近接移動体が存在していないと判断し、干渉停止処理を実行しないと判断する(ステップS4−10)。その後、第2停止チェック処理を終了する。
一方、通信可能移動体が存在している場合(ステップS4−1において「Yes」の場合)、当該通信可能移動体の中に近接移動体が存在する可能性があるので、干渉停止部169は、通信可能移動体の中に近接移動体が存在するか否かを判断する(ステップS4−2)。
【0122】
移動体間距離が干渉距離未満である他の移動体が存在しない場合(ステップS4−2において「No」の場合)、干渉停止部169は、近接移動体が存在しないと判断し、干渉停止処理を実行しないと判断する(ステップS4−10)。その後、第2停止チェック処理を終了する。
一方、移動体間距離が干渉距離未満である他の移動体が存在する場合(ステップS4−2において「Yes」の場合)、干渉停止部169は、近接移動体が存在すると判断する。この場合、干渉停止部169は、近接移動体の移動体識別番号を特定後、優先度決定部168に対して、移動優先度同士の比較結果を通知するよう指令する。
なお、以下に説明する移動優先度の高低の決定は、上記の第1停止チェック処理と同様に、近接移動体毎の移動優先度の比較を、特定された全ての近接移動体分だけ繰り返し実行することにより行われる。
【0123】
上記の指令を受けた優先度決定部168は、まず、近接移動体が手動モードを実行中であるかどうかを判断する(ステップS4−3)。
比較対象の近接移動体の動作モードフラグがONであり、当該比較対象の近接移動体が自律モードを実行中であると判断した場合(ステップS4−3において「No」の場合)、優先度決定部168は、移動体1−1の移動優先度が比較対象の近接移動体の移動優先度よりも低いと決定し、当該結果を干渉停止部169に通知する。当該通知をうけた干渉停止部169は、干渉停止処理を実行すると判断し(ステップS4−11)、第2停止チェック処理を終了する。これにより、自律モードを実行中の近接移動体を優先的に移動できる。
【0124】
一方、比較対象の近接移動体の動作モードフラグがOFFであり、当該近接移動体が手動モードを実行中であると判断した場合(ステップS4−3において「Yes」の場合)、優先度決定部168は、動作モードの比較では移動優先度の高低を決定できないと判断し、さらに移動優先度の高低を決定する処理を実行する。
【0125】
動作モードの比較では移動優先度の高低を決定できないと判断すると、優先度決定部168は、次に、移動体1−1の走行状態と近接移動体の走行状態との比較により、移動優先度の高低を決定する。
移動体情報の走行フラグがOFF(移動体1−1が一時停止中)、かつ、比較対象の近接移動体の他移動体情報の走行フラグがON(比較対象の近接移動体が手動モードにて走行中)の場合(ステップS4−4において「Yes」であり、かつ、ステップS4−5において「No」の場合)、優先度決定部168は、移動体1−1の移動優先度が比較対象の近接移動体の移動優先度よりも低いと決定し、当該結果を干渉停止部169へ通知する。当該通知をうけた干渉停止部169は、干渉停止処理を実行すると判断し(ステップS4−11)、第2停止チェック処理を終了する。これにより、現在移動中の近接移動体を優先的に移動できる。
【0126】
一方、移動体情報の走行フラグがON(移動体1−1が走行中)、かつ、比較対象の近接移動体の走行フラグがOFF(比較対象の近接移動体が手動モードにて一時停止中)の場合(ステップS4−4において「No」であり、かつ、ステップS4−6において「Yes」の場合)、優先度決定部168は、移動体1−1の移動優先度が比較対象の近接移動体の移動優先度よりも高いと決定し、第2停止チェック処理は、ステップS4−9へ進む。
【0127】
さらに、移動体情報の走行フラグがOFF(移動体1−1が一時停止中)、かつ、比較対象の近接移動体の走行フラグがOFFである(比較対象の近接移動体が手動モードにて一時停止中)場合(ステップS4−4において「Yes」であり、かつ、ステップS4−5において「Yes」の場合)、優先度決定部168は、移動体の走行状態では移動優先度の高低を決定できないと判断し、さらなる移動優先度の決定処理を実行する。
【0128】
また、移動体情報の走行フラグがON(移動体1−1が走行中)、かつ、比較対象の近接移動体の走行フラグがON(比較対象の近接移動体が手動モード実行にて走行中)の場合(ステップS4−4において「No」であり、かつ、ステップS4−6において「No」の場合)にも、優先度決定部168は、移動体の走行状態では移動優先度の高低を決定できないと判断し、さらなる移動優先度の決定処理を実行する。
【0129】
移動優先度同士の高低が実行中の動作モード及び走行状態の比較によって決定できない場合、優先度決定部168は、移動体1−1に設定された設定優先度と、近接移動体に設定された設定優先度との比較により、移動優先度を決定する(ステップS4−7)。
【0130】
移動体1−1の設定優先度が、比較対象の近接移動体の設定優先度よりも高い場合(ステップS4−7において「高」の場合)、優先度決定部168は、移動体1−1の移動優先度が比較対象の近接移動体の移動優先度よりも高いと決定し、第2停止チェック処理は、ステップS4−9へ進む。
一方、移動体1−1の設定優先度が、比較対象の近接移動体の設定優先度よりも低い場合(ステップS4−7において「低」の場合)、優先度決定部168は、移動体1−1の移動優先度が比較対象の近接移動体に移動優先度よりも低いと決定し、当該結果を干渉停止部169へ通知する。当該通知をうけた干渉停止部169は、干渉停止処理を実行すると判断し(ステップS4−11)、第2停止チェック処理を終了する。
これにより、ユーザにより決められた設定優先度が高い移動体を優先的に移動させて、複数の移動体1−1、1−2、・・・1−5は、移動環境MEを効率的に移動できる。
【0131】
さらに、移動体1−1の設定優先度が、比較対象の近接移動体の設定優先度と同一である場合(ステップS4−7において「同一」の場合)、優先度決定部168は、設定優先度では移動優先度の高低を決定できないと判断し、さらなる移動優先度の決定処理を実行する。
なお、複数の移動体1−1、1−2、・・・1−5において設定優先度が設定されていない場合にも、優先度決定部168は、設定優先度では移動優先度を決定できないと判断する。
【0132】
移動体1−1の移動優先度と近接移動体の移動優先度の高低が、設定優先度によって決定できない場合、優先度決定部168は、移動体1−1に割り当てられた移動体識別番号と、近接移動体に割り当てられた移動体識別番号との大小の比較により、移動優先度を決定する(ステップS4−8)。
【0133】
移動体1−1の移動体識別番号が、比較対象の近接移動体の移動体識別番号よりも小さい場合(ステップS4−8において「No」の場合)、優先度決定部168は、移動体1−1の移動優先度が比較対象の近接移動体の移動優先度よりも高いと決定し、第2停止チェック処理は、ステップS4−9に進む。
一方、移動体1−1の移動体識別番号が、比較対象の近接移動体の移動体識別番号よりも大きい場合(ステップS4−8において「Yes」の場合)、優先度決定部168は、移動体1−1の移動優先度が比較対象の近接移動体の移動優先度よりも低いと決定し、当該結果を干渉停止部169へ通知する。当該通知をうけた干渉停止部169は、干渉停止処理を実行すると判断し(ステップS4−11)、第2停止チェック処理を終了する。
これにより、個別に割り当てられた移動体識別番号が小さい移動体を優先的に移動できる。
【0134】
上記のステップS4−3〜S4−8を実行した結果、移動体1−1の移動優先度が今回の比較対象の近接移動体の移動優先度よりも高いと判定された場合、優先度決定部168は、全ての近接移動体に対してステップS4−3〜S4−8の判定を実行したか否かを判断する(ステップS4−9)。
【0135】
移動優先度の判定を実行すべき近接移動体が存在する場合(ステップS4−9において「No」の場合)、第2停止チェック処理は、ステップS4−3に戻り、他の近接移動体を比較対象として、移動優先度の高低の判定を実行する。
一方、移動優先度の判定を全ての近接移動体に対して実行した場合(ステップS4−9において「Yes」の場合)、優先度決定部168は、移動体1−1の移動優先度がどの近接移動体よりも高いと判定し、当該結果を干渉停止部169へ通知する。当該通知をうけた干渉停止部169は、干渉停止処理を実行しないと判断し(ステップS4−10)、第2停止チェック処理を終了する。
【0136】
上記のステップS4−1〜S4−11を実行することにより、干渉距離未満の範囲内に存在する複数台の移動体のうち、移動優先度が最も高い移動体を、優先的に移動できる。
【0137】
このように、自律移動体システム100では、複数の移動体1−1、1−2、・・・1−5のそれぞれが、他の移動体との位置関係及び移動に関する優先度を自律的に判断している。これにより、各移動体1−1、1−2、・・・1−5は、当該判断に基づいて干渉停止処理を実行するか否かを自律的に決定し、他の移動体と協調しながら移動環境を自律的に移動できる。この結果、例えば、自律移動体システム100を異なる移動環境MEにおいて使用する場合でも、自律移動体システム100を大幅に再構築する必要がなくなる。
【0138】
(5−6)停止解除チェック処理
次に、上記のステップS7において実行される停止解除チェック処理について、
図10を用いて説明する。
図10は、停止解除チェック処理の流れを示すフローチャートである。
上記のステップS1において干渉停止処理を実行中と判断され、停止解除チェック処理が開始されると、干渉停止部169は、通信可能移動体が存在しているか否かを判断する(ステップS7−1)。
【0139】
通信可能移動体が存在しないと判断した場合(ステップS7−1において「No」の場合)、干渉停止部169は、移動体1−1の近辺に近接移動体が存在していないと判断し、干渉停止処理を解除すると判断する(ステップS7−3)。その後、停止解除チェック処理を終了する。
一方、通信可能移動体が存在している場合(ステップS7−1において「Yes」の場合)、当該通信可能移動体の中に近接移動体が存在する可能性があるので、干渉停止部169は、通信可能移動体の中に近接移動体が存在するか否かを判断する(ステップS7−2)。
【0140】
移動体間距離が干渉距離未満である他の移動体が存在しない場合(ステップS7−2において「No」の場合)、干渉停止部169は、近接移動体が存在しないと判断し、干渉停止処理を解除すると判断する(ステップS7−3)。その後、停止解除チェック処理を終了する。
一方、移動体間距離が干渉距離未満である他の移動体が存在する場合(ステップS7−2において「Yes」の場合)、干渉停止部169は、近接移動体が存在すると判断し、干渉停止処理を解除せず継続すると判断する(ステップS7−4)。その後、停止解除チェック処理を終了する。
【0141】
上記のステップS7−1〜S7−4を停止解除チェック処理として実行することにより、移動体間通信が可能な他の移動体が存在しない(移動体間通信が不調である)、又は、近接移動体が存在しないと判断したら、干渉停止部169は、干渉停止処理を解除できる。これにより、各移動体1−1、1−2、・・・1−5は、他の移動体が近くに存在しない場合には、通常の走行を実行できる。
【0142】
(6)他の実施形態
以上、本発明の一実施形態について説明したが、本発明は上記実施形態に限定されるものではなく、発明の要旨を逸脱しない範囲で種々の変更が可能である。特に、本明細書に書かれた複数の実施形態及び変形例は必要に応じて任意に組み合せ可能である。
(A)移動優先度を決定する処理の順番についての他の実施形態
上記の第1実施形態における第1停止チェック処理及び第2停止チェック処理では、(i)近接移動体の存在又は不存在に基づく判断、(ii)実行中の動作モードに基づく判断、(iii)現在の走行状態に基づく判断、(iv)通路幅に基づく判断(第1停止チェック処理のみ)、(v)設定優先度に基づく判断、(vi)移動体識別番号に基づく判断、の順番で移動優先度の高低を決定していた。
しかし、移動優先度の高低の決定のための判断は、上記の順番(特に、上記の(ii)〜(vi)の順番)に限られず、どの基準をより優先するかにより(例えば、優先する基準を停止チェック処理のより早い段階に配置する)、適宜順番を変更できる。
【0143】
(B)障害物検出部についての他の実施形態(その1)
上記の第1実施形態において、障害物検出部165は、超音波信号が出力されて時間t1までに信号強度がs1以上である(障害物検出センサ15から出力され障害物にて反射された)超音波信号が受信されたときに、本体部11の近辺に障害物が存在すると判断して、本体部11の移動を停止していた。すなわち、第1実施形態の障害物検出部165は、比較的狭い範囲の障害物の有無のみを検出していた。しかし、これに限られず、障害物検出部165は、より広い範囲の障害物の検出を行ってもよい。
【0144】
具体的には、障害物検出部165は、超音波信号が出力されて時間t1までに信号強度がs1以上である超音波信号を受信した場合だけでなく、(I)超音波信号が出力されて時間t1からt2(
図4)までに信号強度がs2(
図4)以上である超音波信号を受信した場合、(II)超音波信号が出力されて時間t2からt3(
図4)までに信号強度がs3(
図4)以上である超音波信号を受信した場合、及び/又は、(III)超音波信号が出力されて時間t3以降に信号強度がs4(
図4)以上である超音波信号を受信した場合、にも、本体部11の近辺に障害物が存在すると判断してもよい。
【0145】
上記の(I)までの基準を用いる場合には、干渉基準距離は、例えば、
図5に示す2つのセンサ間の距離と検出された信号強度との関係を示したプロットにおいて、他方の障害物検出センサにて検出された超音波信号の信号値がs2となったときの2つのセンサ間の距離とできる。この場合、干渉停止処理において障害物検出センサ15から出力される超音波信号の強度はs2以下とする。
上記の(I)及び(II)までの基準を用いる場合には、干渉基準距離は、
図5に示す2つのセンサ間の距離と検出された信号強度との関係を示したプロットにおいて、他方の障害物検出センサにて検出された超音波信号の信号値がs3となったときの2つのセンサ間の距離とできる。この場合、干渉停止処理において障害物検出センサ15から出力される超音波信号の強度はs3以下とする。
上記の(I)〜(III)までの基準を用いる場合には、干渉基準距離は、
図5に示す2つのセンサ間の距離と検出された信号強度との関係を示したプロットにおいて、他方の障害物検出センサにて検出された超音波信号の信号値がs4となったときの2つのセンサ間の距離とできる。この場合、干渉停止処理において障害物検出センサ15から出力される超音波信号の強度はs4以下とする。
【0146】
上記のように障害物検出部165が広い範囲に存在する障害物の検出を行う場合、障害物を検出したときに障害物検出部165が実行する処理は、本体部11の移動の停止に限られない。障害物検出部165は、例えば、本体部11と障害物との距離に応じて、本体部11の移動速度を減少するように、走行制御部164に指令してもよい。
これにより、移動体1−1は、例えば、本体部11と障害物との距離が十分離れている場合には、障害物が移動体1−1の移動経路から外れるまで、ゆっくり移動しながら待機できる。
【0147】
(C)障害物検出部についての他の実施形態(その2)
上記(B)のように、障害物検出部165が広い範囲の障害物の検出を行う場合には、移動体1−1、1−2、・・・1−5は、各移動体が移動中の領域の広さを表す指標を、移動体情報に含めて、各移動体にて共有してもよい。
この場合、移動中の領域の広さに応じて、障害物検出部165が本体部11の近辺に障害物が存在すると判断する際の信号強度の検出閾値を変化させてもよい。例えば、移動中の領域の広さが広い場合に、検出閾値を大きくするとともに干渉距離を大きくすることにより、移動体1−1、1−2、・・・1−5は、広い領域を高速に移動できる。
さらにこの場合には、移動体情報(他移動体情報)に含まれている領域の広さを表す指標と干渉距離とが同一である移動体同士にて、上記の移動優先度の比較を実行してもよい。これにより、移動体1−1、1−2、・・・1−5が高速に移動していても、障害物検出部165の誤検知を回避できる。
【0148】
(D)移動体の他の実施形態
上記の第1実施形態において、複数の移動体1−1、1−2、・・・1−5の例として、ホテルや空港のロビーなど多くの人が存在する環境を移動する広告宣伝ロボットが挙げられていた。しかし、上記の移動体は、広告宣伝ロボット以外にも、様々な移動体やロボットなどに応用できる。例えば、移動体1−1、1−2、・・・1−5を、移動環境を自律的に移動し清掃する自律清掃ロボットとして用いてもよい。
さらに、上記の第1実施形態の制御部16(及び、必要に応じてレーザレンジセンサや超音波センサなどを付属させてもよい)を、汎用の移動体の制御を行うための移動体制御モジュールとして用いてもよい。