以下、本発明による移動体について、実施の形態を用いて説明する。なお、以下の実施の形態において、同じ符号を付した構成要素及びステップは同一または相当するものであり、再度の説明を省略することがある。本実施の形態による移動体は、移動体と共に移動している障害物、すなわち移動体との相対位置が変わらない障害物については、他の障害物と異なる移動制御を行うものである。
図1は、本実施の形態による移動体1の構成を示すブロック図である。本実施の形態による移動体1は、移動機構11と、測距センサ12と、障害物検知部13と、現在位置取得部14と、判断部15と、移動制御部16とを備える。なお、移動体1は、通常、自律的に移動するものであるが、操作者による操作もできるものであってもよい。本実施の形態では、移動体1が、自律的に移動すると共に、操作者による操作によって移動することもできるものである場合について主に説明する。なお、移動体1が自律的に移動するとは、移動体1がユーザ等から受け付ける操作指示に応じて移動するのではなく、自らの判断によって目的地に移動することであってもよい。その目的地は、例えば、手動で決められたものであってもよく、または、自動的に決定されたものであってもよい。また、その目的地までの移動は、例えば、移動経路に沿って行われてもよく、または、そうでなくてもよい。また、自らの判断によって目的地に移動するとは、例えば、進行方向、移動や停止などを移動体1が自ら判断することによって、目的地まで移動することであってもよい。また、例えば、移動体1が、障害物に衝突しないように移動することであってもよい。移動体1は、例えば、台車であってもよく、移動するロボットであってもよい。ロボットは、例えば、エンターテインメントロボットであってもよく、監視ロボットであってもよく、搬送ロボットであってもよく、清掃ロボットであってもよく、動画や静止画を撮影するロボットであってもよく、その他のロボットであってもよい。
移動機構11は、移動体1を移動させる。移動機構11は、例えば、移動体1を全方向に移動できるものであってもよく、または、そうでなくてもよい。全方向に移動できるとは、任意の方向に移動できることである。移動機構11は、例えば、走行部(例えば、車輪など)と、その走行部を駆動する駆動手段(例えば、モータやエンジンなど)とを有していてもよい。なお、移動機構11が、移動体1を全方向に移動できるものである場合には、その走行部は、全方向移動車輪(例えば、オムニホイール、メカナムホイールなど)であってもよい。全方向移動車輪を有し、全方向に移動可能な移動体については、例えば、特開2017-128187号公報を参照されたい。この移動機構11としては、公知のものを用いることができるため、その詳細な説明を省略する。
測距センサ12は、複数方向に関して周囲の物体までの距離を測定する。測距センサ12は、例えば、レーザセンサや、超音波センサ、マイクロ波を用いた距離センサ、ステレオカメラによって撮影されたステレオ画像を用いた距離センサなどであってもよい。そのレーザセンサは、レーザレンジセンサ(レーザレンジスキャナ)であってもよい。なお、それらの測距センサについてはすでに公知であり、それらの説明を省略する。本実施の形態では、測距センサ12がレーザレンジセンサである場合について主に説明する。また、移動体1は、1個のレーザレンジセンサを有していてもよく、または、2個以上のレーザレンジセンサを有していてもよい。後者の場合には、2個以上のレーザレンジセンサによって、全方向がカバーされてもよい。また、測距センサ12が超音波センサや、マイクロ波を用いた距離センサなどである場合に、測距センサ12の測距方向を回転させることによって複数方向の距離を測定してもよく、複数方向ごとに配置された複数の測距センサ12を用いて複数方向の距離を測定してもよい。測距センサ12は、所定範囲の方向に関して距離を測定するものであってもよく、全方向に関して距離を測定するものであってもよい。例えば、測距センサ12は、移動体1の前方のみの範囲について、複数方向の距離を測定するものであってもよい。また、例えば、測距センサ12は、全周囲(360度)について、あらかじめ決められた角度間隔で複数方向の距離を測定するものであってもよい。その角度間隔は、例えば、1度間隔や2度間隔、5度間隔などのように一定であってもよい。測距センサ12から得られる情報は、例えば、移動体1のある向きを基準とした複数の方位角のそれぞれに関する周辺の物体までの距離であってもよい。その距離を用いることによって、移動体1のローカル座標系において、移動体1の周囲にどのような物体が存在するのかを知ることができるようになる。
障害物検知部13は、測距センサ12によって測定された距離を用いて障害物を検知する。障害物検知部13は、例えば、測距センサ12によって測定された距離によって、移動体1の近くの所定の領域に物体が存在することが分かった場合に、その物体を障害物として検知してもよい。例えば、測距センサ12によって測定された周囲の物体までの距離が所定の閾値以下になった場合に、障害物検知部13は、その物体を障害物として検知してもよい。その周囲の物体までの距離は、例えば、測距センサ12からの距離であってもよく、移動体1の外縁からの距離であってもよく、移動体1の外縁を仮想的に膨張させた位置からの距離であってもよく、その他の基準からの距離であってもよい。なお、障害物が検知される領域は、1個であってもよく、2個以上であってもよい。その領域は、例えば、移動体1の全方向を含んでいてもよく、または、移動体1の進行方向のみを含んでいてもよい。測距結果を用いて障害物を検知するため、障害物検知部13は、移動体1のローカル座標系において障害物を検知することになる。移動体1のローカル座標系とは、移動体1において設定された座標系である。障害物検知部13は、障害物を検知した場合に、その検知した障害物に関するローカル座標系における位置(例えば、座標値等)を取得することが好適である。その位置は、例えば、1以上の点で示されてもよく、線で示されてもよい。その点は、例えば、測距センサ12による測定点であってもよい。
現在位置取得部14は、移動体1の現在位置を取得する。現在位置の取得は、例えば、無線通信を用いて行われてもよく、周囲の物体までの距離の測定結果を用いて行われてもよく、周囲の画像を撮影することによって行われてもよく、現在位置を取得できるその他の手段を用いてなされてもよい。無線通信を用いて現在位置を取得する方法としては、例えば、GPS(Global Positioning System)を用いる方法や、屋内GPSを用いる方法、最寄りの無線基地局を用いる方法などが知られている。また、例えば、周囲の物体までの距離の測定結果を用いたり、周囲の画像を撮影したりすることによって現在位置を取得する方法としては、例えば、SLAM(Simultaneous Localization and Mapping)などによって知られている方法を用いてもよい。周囲の物体までの距離の測定結果としては、例えば、測距センサ12の測定結果を用いてもよい。また、あらかじめ作成された地図(例えば、周囲の物体までの距離の測定結果や撮影画像を有する地図など)が記憶されている場合には、現在位置取得部14は、地図を用いて、周囲の物体までの距離の測定結果に対応する位置を特定することによって現在位置を取得してもよく、周囲の画像を撮影し、地図を用いて、その撮影結果に対応する位置を特定することによって現在位置を取得してもよい。また、現在位置取得部14は、例えば、自律航法装置を用いて現在位置を取得してもよい。また、現在位置取得部14は、移動体1の向き(方向)を含む現在位置を取得することが好適である。その方向は、例えば、北を0度として、時計回りに測定された方位角によって示されてもよく、その他の方向を示す情報によって示されてもよい。その向きは、電子コンパスや地磁気センサによって取得されてもよい。
判断部15は、障害物検知部13によって検知された障害物が、移動体1と共に移動しているかどうか判断する。この判断には、障害物検知部13によって検知された障害物に関する測距結果が用いられる。判断部15は、各測距結果(各測定点)をそれぞれ用いてもよく、または、その測距結果を障害物ごとにグルーピングし、そのグルーピングした測距結果を用いてもよい。なお、測距結果は、例えば、測距センサ12によって得られた値そのもの(例えば、角度と距離との組)であってもよく、測距センサ12によって得られた値を移動体1のローカル座標系にプロットした座標値(例えば、(x1,y1)など)であってもよい。本実施の形態では、判断部15が、検知された障害物に関するローカル座標系での測定点の座標値を障害物検知部13から受け取る場合について主に説明する。また、測距結果のグルーピングを行う場合には、相互に近接した位置に存在する測定結果をグルーピングしてもよい。そのグルーピングは、例えば、公知のクラスタリングの技術などを用いて行うことができる。障害物の測定結果をグルーピングした後の障害物の位置としては、その測定結果の重心位置を用いてもよい。その場合には、検知された障害物の重心位置を用いて、判断処理が行われることになる。なお、複数の座標値の重心位置は、その複数の座標値に関する、x座標の平均値とy座標の平均値との組によって示される。例えば、複数の座標値が(x1,y1)、(x2,y2)、(x3,y3)である場合には、それらの重心位置の座標値は、((x1+x2+x3)/3,(y1+y2+y3)/3)となる。以下、判断部15が、障害物の重心位置を用いて判断処理を行う場合について主に説明する。重心位置を用いる場合には、判断部15は、検知された障害物の重心位置が、移動体1の移動に応じて変化しないときに、障害物が移動体1と共に移動していると判断してもよい。なお、測距結果そのものを用いる場合には、その重心位置を、測距結果の位置に置き換えればよいことになる。また、判断処理について、(1)移動開始時の位置を基準とした判断と、(2)直前の位置を基準とした判断とについて説明する。
(1)移動開始時の位置を基準とした判断
この場合には、移動体1において、移動開始時、すなわち移動を開始する直前の時点(以下、その時点を時間t=t0とする。)に障害物の検知を行い、その移動開始時に検知された各障害物の重心位置が記録されているものとする。例えば、判断部15が、t=t0に検知された障害物の重心位置として、(x11,y11)を記憶したとする。この場合には、その重心位置を基準として、判断が行われることになる。
具体的には、移動が開始された後の時間t=tn(nは、1以上の整数であり、tn=tn-1+Δtであるとする。なお、Δt>0である。)において、障害物検知部13によって障害物が検知されたとする。すると、判断部15は、その時点の障害物の重心位置を取得する。その重心位置は、(x12,y12)であったとする。判断部15は、基準となるt=t0の時点の重心位置(x11,y11)と、判断対象となるt=tnの時点の重心位置(x12,y12)との距離を算出し、その距離があらかじめ決められている閾値LTHより小さい場合に、t=tnの時点の障害物の重心位置(x12,y12)が、t=t0の時点の重心位置(x11,y11)に対して変化していない、すなわち、その障害物は移動体1と共に移動していると判断してもよい。一方、t=t0の時点の重心位置と、t=tnの時点の重心位置との距離が閾値LTHより大きい場合に、判断部15は、t=tnの時点の障害物の重心位置が、t=t0の時点の重心位置に対して変化している、すなわち、その障害物は移動体1と共に移動していないと判断してもよい。なお、重心位置の距離が閾値LTHと同じ場合には、判断部15は、その障害物が移動体1と共に移動していると判断してもよく、または、移動体1と共に移動していないと判断してもよい。また、重心位置が登録されていない障害物については、移動体1の移動に応じて検知範囲に入ってきたことになるため、判断部15は、移動体1と共に移動している障害物ではないと判断してもよい。
例えば、移動体1に着脱可能な治具を装着する場合があり、そのような治具を装着したまま移動体1が移動することもある。そのような場合に、その治具が障害物として検知される可能性もあるが、上記の判断によって、移動体1と共に移動している障害物と判断されることになり、通常の障害物(すなわち、移動体1と共に移動している障害物ではない障害物)と異なる移動制御が行われるようになる。また、移動体1が搬送ロボットである場合に、搬送対象物が載置台からはみ出していることによって、障害物として検知される可能性もあるが、そのような状況でも、上記の判断によって、その搬送対象物が、移動体1と共に移動している障害物であると判断されることになり、通常の障害物と異なる移動制御が行われるようになる。
(2)直前の位置を基準とした判断
この場合には、移動体1において、移動を開始する直線の時点t=t0からΔtごとに、各障害物の重心位置が記録されているものとする。そして、判断部15は、時間t=tnに障害物検知部13によって検知された障害物の重心位置(X22,y22)と、直前の時間t=tn-1に障害物検知部13によって検知された同じ障害物の重心位置(X21,y21)との距離を算出し、その距離が閾値LTHより小さい場合に、t=tnの時点の障害物の重心位置が、t=tn-1の時点の重心位置に対して変化していない、すなわち、その障害物は移動体1と共に移動していると判断してもよい。一方、重心位置の距離が閾値LTHより大きい場合に、判断部15は、その障害物は移動体1と共に移動していないと判断してもよい。なお、重心位置の距離が閾値LTHと同じ場合には、判断部15は、その障害物が移動体1と共に移動していると判断してもよく、または、移動体1と共に移動していないと判断してもよい。
なお、この場合には、直前の1個の重心位置(x21,y21)を判断の基準として用いているが、直前の複数の重心位置を判断の基準として用いてもよい。その場合には、例えば、時間t=tn-m,tn-m+1,…,tn-1(ただし、mは、2以上の整数である。)の障害物の重心位置の平均と、時間t=tnの同じ障害物の重心位置との距離が閾値LTHより小さいときに、その障害物は移動体1と共に移動していると判断してもよい。なお、Δtだけ以前の時点の重心位置が登録されていない障害物については、移動体1の移動に応じて検知範囲に入ってきたことになるため、判断部15は、移動体1と共に移動している障害物ではないと判断してもよい。また、床面で静止している障害物が検知された場合に、その検知された障害物の重心位置の距離は、Δtの間に、「Δt×移動速度」だけ変化することになるため、閾値LTHは、「Δt×移動速度」よりも小さい値に設定されることが好適である。
なお、複数の障害物が検知された場合には、判断部15は、検知された障害物ごとに上記判断を行うものとする。また、各時間において検知された障害物が、それ以前に検知されたどの障害物に対応しているのかについては、例えば、各障害物の特徴点を用いた物体追跡(トラッキング)の技術等によって判断することができる。なお、物体追跡の技術については、すでに公知であり、詳細な説明を省略する。
移動制御部16は、移動機構11を制御することによって、移動体1の移動を制御する。移動の制御は、移動体1の移動の向きや、移動の開始・停止などの制御であってもよい。例えば、移動経路が設定されている場合には、移動制御部16は、移動体1がその移動経路に沿って移動するように、移動機構11を制御してもよい。より具体的には、移動制御部16は、現在位置取得部14によって取得される現在位置が、その移動経路に沿ったものになるように、移動機構11を制御してもよい。また、移動制御部16は、地図を用いて、移動の制御を行ってもよい。その場合には、移動体1は、図示しない記録媒体で記憶されている地図を用いてもよい。また、移動制御部16は、図示しない受付部が受け付けた操作者による操作指示に応じて、移動機構11を制御してもよい。この場合には、移動制御部16は、操作指示に応じた移動の向き、及び速度で移動体1が移動するように、移動機構11を制御することになる。
また、移動制御部16は、障害物検知部13によって検知された障害物への衝突を防ぐように移動機構11を制御する。なお、移動制御部16は、障害物が検知された場合に、判断部15の判断結果に応じて、障害物に関して異なる制御を行う。すなわち、移動制御部16は、検知された障害物が移動体1と共に移動している場合と通常の場合とで異なる制御を行うことになる。また、移動制御部16は、移動体1が移動している際の障害物の検知結果を用いた判断結果に応じて移動制御を行うことが好適である。移動体1が停止している際の判断結果は、不適切なものになるからである。移動制御部16は、検知された障害物が移動体1と共に移動している場合には、検知された障害物が移動体1と共に移動していないものである場合と比較して、衝突を防止するためのより弱い制御を行うものであってもよい。より弱い制御とは、通常の移動制御からの変化が小さくなる制御であると考えてもよい。例えば、停止よりも減速の方がより弱い制御であり、停止よりも迂回の方がより弱い制御である。なお、異なる制御とは、移動制御の方法が異なることを意味しており、その制御の結果が異なるかどうかを意味していない。例えば、後述するように、移動体1と共に移動している障害物と、そうでない障害物とについて、それぞれ異なる距離閾値を用いる場合であっても、検知された障害物が移動体1の近傍に存在するのであれば、いずれの障害物であっても移動体1が停止することになるからである。また、移動制御部16は、必ずしも検知されたすべての障害物について、衝突を防ぐための制御を行うものではない。移動制御部16は、検知された障害物について所定の条件(その条件は、例えば、障害物までの距離が、後述する距離閾値より短いことであってもよい。)が満たされる場合には、衝突を防ぐための減速や停止等の制御を行い、検知された障害物についてその所定の条件が満たされない場合には、衝突を防ぐための制御を行わなくてもよい。ここで、移動体1と共に移動している障害物と、そうでない障害物とに関する異なる制御の一例として、以下、異なる距離閾値を用いる場合について説明する。
この場合には、移動制御部16は、検知された障害物までの距離が距離閾値より短いときに、衝突を防止するための制御を行い、検知された障害物までの距離が距離閾値より長いときに、衝突を防止するための制御を行わないものとする。なお、検知された障害物までの距離が距離閾値と同じであるときには、移動制御部16は、衝突を防止するための制御を行ってもよく、または行わなくてもよい。その距離閾値は、移動体1と共に移動する障害物と、通常の障害物とで異なっている。すなわち、移動体1と共に移動している障害物に関する距離閾値は、通常の障害物に関する距離閾値よりも短くなっているものとする。したがって、ある障害物が検知されたとしても、その障害物が移動体1と共に移動している場合には、移動体1が停止や減速しないのに対して、その障害物が移動体1と共に移動しているものでない場合には、移動体1が停止や減速するという状況があることになる。ここで、この場合の移動制御について、図4を用いて具体的に説明する。図4は、2個の距離閾値の一例を示す図である。図4において、領域R1は、移動体1の外縁から距離閾値W1以内の領域であり、領域R2は、移動体1の外縁から距離閾値W2以内の領域である。距離閾値W1が、移動体1と共に移動している障害物に関する距離閾値であり、距離閾値W2が、移動体1と共に移動していない障害物に関する距離閾値である。なお、W2はW1よりも大きい実数である。また、この具体例では、距離閾値以内の障害物が検知された場合には、移動制御部16は、移動体1を停止させるものとする。すると、領域R2に含まれるが、領域R1に含まれない領域において障害物が検知された場合であって、その障害物が移動体1と共に移動しているときには、その障害物は、移動体1から距離閾値W1より遠い位置に存在することになるため、移動制御部16は、移動体1を停止させない。一方、その検知された障害物が移動体1と共に移動していないときには、その障害物は、移動体1から距離閾値W2より近い位置に存在することになるため、移動制御部16は、移動体1を停止させる。なお、領域R1において障害物が検知された場合には、その障害物が移動体1と共に移動しているかどうかに関わらず、移動制御部16は、移動体1を停止させることになる。また、検知された障害物が領域R2に存在しない場合には、移動制御部16は、移動体1を停止させないことになる。また、図4で示されるように領域R1,R2が設定されている場合には、障害物検知部13は、測距結果を用いて、領域R2に存在する物体を障害物として検知してもよい。領域R2より外側の障害物を検知しても意味がないからである。
なお、ここでは、障害物までの距離として、移動体1の外縁からの距離が用いられる場合について説明したが、そうでなくてもよい。障害物までの距離としては、例えば、移動体1の測距センサ12や、その他の箇所からの距離が用いられてもよい。測距結果によってローカル座標系における障害物の位置を特定できるため、その位置を用いて、移動体1の任意の位置から障害物までの距離を取得することができる。移動制御部16は、そのようにして取得した距離を用いて、上記の移動制御を行ってもよい。
また、距離閾値は、すべての方向について同じであってもよく、または、方向ごとに異なっていてもよい。後者の場合には、例えば、進行方向については、大きい距離閾値が用いられ、進行方向から離れるにしたがって、短くなってもよい。
また、障害物の検知が行われた場合の制御は、障害物と移動体1との距離に応じて段階的に行われてもよい。例えば、遠くの障害物が検知された場合には、移動制御部16は、移動体1を減速し、近くの障害物が検知された場合には、移動制御部16は、移動体1を停止してもよい。移動体1と共に移動している障害物が検知された場合と、通常の障害物が検知された場合のそれぞれについて、そのようになっていてもよい。また、移動体1のローカル座標系において、移動体1と共に移動している障害物に関する停止領域と減速領域とが設定されており、また、通常の障害物に関する停止領域と減速領域とが設定されていてもよい。なお、移動体1と共に移動している障害物の停止領域は、通常の障害物の停止領域よりも移動体1に近い側に設定されており、また、移動体1と共に移動している障害物の減速領域は、通常の障害物の減速領域よりも移動体1に近い側に設定されていることが好適である。そして、移動体1と共に移動している障害物が、移動体1と共に移動している障害物の停止領域に存在する場合には、移動制御部16は、移動体1を停止させ、移動体1と共に移動している障害物が、移動体1と共に移動している障害物の減速領域に存在する場合には、移動制御部16は、移動体1を減速させてもよい。また、通常の障害物が、通常の障害物の停止領域に存在する場合には、移動制御部16は、移動体1を停止させ、通常の障害物が、通常の障害物の減速領域に存在する場合には、移動制御部16は、移動体1を減速させてもよい。なお、移動体1が減速される場合に、その減速後の速度が決まっていてもよく、または、そうでなくてもよい。後者の場合には、例えば、その時点の速度に対して相対的に決まる速度(例えば、50%の速度など)となるように減速が行われてもよい。
また、移動体1と共に移動している障害物が検知されたことに応じて、移動体1が停止や減速を行うことがある場合について説明したが、そうでなくてもよい。移動制御部16は、移動体1と共に移動している障害物が検知された場合には、その障害物への衝突を防止するための制御を行わなくてもよい。具体的には、上記説明において、移動体1と共に移動している障害物に関する距離閾値は、最低の値、すなわち移動体1と共に移動している障害物に対して衝突を防止するための制御が行われることにない値に設定されてもよい。図4の場合には、例えば、移動体1と共に移動している障害物に関する距離閾値W1は、「0」に設定されてもよい。移動体1と共に移動している障害物は、その移動が継続されている限りは、移動体1に衝突することはなく、また、移動体1と共に移動しないようになった場合には、通常の障害物と判断されるため、移動体1と共に移動している障害物に対して停止や減速を行わなかったとしても、問題の発生する可能性は低いと考えられるからである。
次に、移動体1の動作について図2のフローチャートを用いて説明する。
(ステップS101)移動制御部16は、移動を開始するかどうか判断する。そして、移動を開始する場合には、ステップS102に進み、そうでない場合には、移動を開始するまでステップS101の処理を繰り返す。なお、移動制御部16は、例えば、操作者からの操作指示が受け付けられた場合に、移動を開始すると判断してもよく、経路に沿った自律的な移動を開始する場合に、移動を開始すると判断してもよい。
(ステップS102)測距センサ12は、移動体1の周囲の物体までの距離を測定し、障害物検知部13は、その測距結果を用いて障害物を検知する。
(ステップS103)判断部15は、ステップS102で検知された障害物のローカル座標系における位置を、図示しない記録媒体に登録する。その位置と共に、その時点の時間も登録されてもよい。なお、ステップS102で障害物が検知されなかった場合には、この登録は行われなくてもよい。
(ステップS104)移動制御部16は、移動体1の移動の制御を行う。この移動の制御は、例えば、操作指示に応じた移動の制御であってもよく、目的地に向かう自律的な移動の制御であってもよい。例えば、このステップS104の移動の制御が繰り返して行われることによって、移動体1は、出発地から目的地に到達してもよい。
(ステップS105)測距センサ12は、移動体1の周囲の物体までの距離を測定し、障害物検知部13は、その測距結果を用いて障害物を検知する。
(ステップS106)障害物検知部13は、ステップS105において、検知した障害物が存在するかどうか判断する。そして、検知した障害物が存在する場合には、ステップS107に進み、そうでない場合には、ステップS104に戻る。
(ステップS107)判断部15は、ステップS105で検知された障害物のローカル座標系における位置を、図示しない記録媒体に登録する。その位置と共に、その時点の時間も登録されてもよい。
(ステップS108)判断部15は、ステップS103やステップS107で登録された障害物の位置を用いて、上記(1)または(2)のようにして、検知された障害物が移動体1と共に移動しているかどうか判断する。そして、検知された障害物が移動体1と共に移動している場合には、ステップS109に進み、そうでない場合には、ステップS110に進む。
(ステップS109)移動制御部16は、移動体1と共に移動している障害物の検知に応じた移動制御を行う。そして、ステップS104に戻る。この移動制御は、上記のように、例えば、移動体1の減速や停止などであってもよい。また、検知された障害物までの距離が距離閾値よりも大きい場合には、移動制御部16は、障害物の検知に応じた制御を行わなくてもよい。なお、移動体1と共に移動している障害物に関する距離閾値が最低の値に設定されている場合には、移動制御部16は、移動体1と共に移動している障害物の検知に応じた移動制御(例えば、減速や停止など)は行わないことになる。また、障害物の検知に応じて移動体1を減速させた場合には、移動制御部16は、移動速度の上限を減速後のものに制限した上で、ステップS104に戻って移動を継続してもよい。その場合には、障害物が検知されなくなったとき(ステップS106でNOと判断されたとき)に、移動速度の上限の制限を解除してもよい。また、障害物の検知に応じて移動体1を停止させた場合には、移動制御部16は、障害物が検知されなくなるまで停止を継続し、障害物が検知されなくなってから、ステップS104に戻って移動を再開してもよい。
(ステップS110)移動制御部16は、通常の障害物の検知に応じた移動制御を行う。そして、ステップS104に戻る。この移動制御は、上記のように、例えば、移動体1の減速や停止などであってもよい。また、検知された障害物までの距離が距離閾値よりも大きい場合には、移動制御部16は、障害物の検知に応じた制御を行わなくてもよい。また、障害物の検知に応じて移動体1を減速させた場合には、移動制御部16は、移動速度の上限を減速後のものに制限した上で、ステップS104に戻って移動を継続してもよい。その場合には、障害物が検知されなくなったとき(ステップS106でNOと判断されたとき)に、移動速度の上限の制限を解除してもよい。また、障害物の検知に応じて移動体1を停止させた場合には、移動制御部16は、障害物が検知されなくなるまで停止を継続し、障害物が検知されなくなってから、ステップS104に戻って移動を再開してもよい。
なお、図2のフローチャートでは、障害物検知において1個の障害物が検知される場合について説明したが、障害物検知において2個以上の障害物が同時に検知されることもあり得る。その場合には、例えば、検知された障害物ごとに、ステップS108~S110と同様に、移動体1と共に移動している障害物かどうかの判断と、その判断結果に応じた移動制御の特定とを行ってもよい。なお、この場合には、移動制御部16は、各障害物に対応する移動制御を障害物ごとに特定し、その特定した複数の移動制御から、最も安全性の高い移動制御を選択して、その移動制御を行うように移動機構11を制御してもよい。最も安全性の高い移動制御とは、障害物に衝突する可能性が最も低い移動制御である。例えば、特定した移動制御が、移動体1の減速と、移動体1の停止とであった場合には、移動制御部16は、最も安全性の高い移動体1の停止を選択し、移動体1が停止するように移動機構11を制御してもよい。また、図2のフローチャートにおける処理の順序は一例であり、同様の結果を得られるのであれば、各ステップの順序を変更してもよい。また、図2のフローチャートには含まれていないが、現在位置取得部14による現在位置の取得は、繰り返して行われているものとする。また、図2のフローチャートにおいて、移動体1が目的地に到達したこと、操作者によって移動が停止されたこと、または電源オフや処理終了の割り込みにより処理は終了する。
次に、本実施の形態による移動体1の動作について、具体例を用いて説明する。図3は、この具体例における移動体1を示す模式図である。図3を参照して、操作者5は、ケーブル9によって移動体1に接続されたコントロールペンダント7を保持しており、そのコントロールペンダント7によって移動体1が手動操作されるものとする。そして、移動体1は、図中の矢印の方向に、すなわち操作者5が後退する方向に移動されるものとする。また、この具体例では、図4で示されるように、移動体1と共に移動している障害物に関する停止領域R1と、通常の障害物に関する停止領域R2とが設定されているものとする。
まず、操作者5がコントロールペンダント7を操作して、移動体1の矢印方向への移動に対応する操作指示を入力したとする。すると、その操作指示は、ケーブル9を介して移動体1で受け付けられ、移動制御部16は、移動を開始すると判断する(ステップS101)。そして、移動制御部16は、障害物検知部13に障害物検知を行う旨の指示を渡す。その指示を受け取ると、障害物検知部13は、測距センサ12によって測定された結果を用いて、領域R2に存在する障害物を検知する(ステップS102)。なお、この検知の時点が、時間t=t0であるとする。この場合には、図5Aで示されるように、ケーブル9に対応する障害物D1と、操作者5に対応する障害物D2が検知されたとする。図5Aは、測距センサ12の測距結果を用いて検知された障害物を、移動体1のローカル座標系(測距センサ12の位置を原点とするxy直交座標系)にプロットしたものである。図5Aで示される矢印は、測距に用いられたレーザのうち、障害物に当たったものを示している。障害物検知部13は、検知した障害物D1,D2にそれぞれ対応する測定点の座標値を判断部15に渡す。すると、判断部15は、それらの測定点の座標値を用いて、障害物D1の重心位置(x100,y100)と、障害物D2の重心位置(x200,y200)とを算出し、それらを時間t0に対応付けて図示しない記録媒体に記録する(ステップS103)。
次に、移動制御部16は、受け付けられた操作指示に応じて、移動体1が図3の矢印方向に移動するように移動機構11を制御する(ステップS104)。その結果、移動体1が図3の矢印方向に移動することになる。なお、移動体1が少し移動した時点(移動が継続している時点であるとする。)で、移動制御部16は、障害物検知部13に障害物検知を行う旨の指示を渡す。その指示を受け取ると、障害物検知部13は、測距結果を用いて障害物を検知する(ステップS105)。また、この検知の時点が、時間t=t1であるとする。この場合にも、図5Bで示されるように、ケーブル9に対応する障害物D1と、操作者5に対応する障害物D2が検知されたとする。すると、障害物検知部13は、検知した障害物が存在すると判断し、その検知した障害物D1,D2にそれぞれ対応する測定点の座標値を判断部15に渡す(ステップS106)。また、判断部15は、それらの測定点の座標値を用いて、障害物D1の重心位置(x101,y101)と、障害物D2の重心位置(x201,y201)とを算出し、それらを時間t1に対応付けて図示しない記録媒体に記録する(ステップS107)。
その後、判断部15は、時間t0における各障害物の重心位置と、時間t1における各障害物の重心に位置とを読み出し、各障害物について、時間t0の重心位置と、時間t1の重心位置との距離を算出し、その算出した距離が閾値LTHより小さいかどうか判断する。この場合には、両方の距離が、閾値LTHより小さかったとする。すると、判断部15は、障害物D1,D2が両方とも、移動体1と共に移動している障害物であると判断し、その判断結果を移動制御部16に渡す(ステップS108)。その判断結果を受け取ると、移動制御部16は、障害物検知部13によって検知された障害物D1,D2がそれぞれ、移動体1と共に移動している障害物に対応する停止領域R1に存在するかどうか判断する。この場合には、障害物D1,D2は両方とも、停止領域R1に存在しなかったとする。すると、移動制御部16は、移動体1を停止させることなく、移動体1の移動を継続する(ステップS109,S104)。
なお、このような処理が繰り返され、図3の矢印方向への移動が継続されている際に、床に存在する障害物に移動体1が近づき、障害物検知部13による障害物の検知結果が、図5Cで示されるようになったとする。図5Cでは、ケーブル9に対応する障害物D1と、操作者5に対応する障害物D2と、床に存在する新たな障害物D3とが検知されている。そして、障害物検知部13は、検知した障害物が存在すると判断し、その検知した障害物D1,D2,D3にそれぞれ対応する測定点の座標値を判断部15に渡す(ステップS106)。すると、判断部15は、それらの測定点の座標値を用いて、障害物D1の重心位置(x110,y110)と、障害物D2の重心位置(x210,y210)と、障害物D3の重心位置(X310,y310)とを算出し、それらをその時点の時間t10に対応付けて図示しない記録媒体に記録する(ステップS107)。
その後、判断部15は、その時点における各障害物の重心位置と、Δtだけ以前の時点における各障害物の重心位置とを読み出し、各障害物について、両重心位置の距離を算出し、その算出した距離が閾値LTHより小さいかどうか判断する。この場合には、障害物D1,D2の距離は、閾値LTHより小さいため、判断部15によって移動体1と共に移動している障害物であると判断され、障害物D3については、Δtだけ以前の時点における重心位置が記録されていないため、判断部15によって移動体1と共に移動している障害物ではないと判断されたとする(ステップS108)。また、障害物D1,D2については、上記説明と同様に、移動体1と共に移動している障害物の停止領域R1の外側に存在するが、障害物D3については、通常の障害物の停止領域R2の内部に存在すると判断されたとする。すると、移動制御部16は、障害物D1~D3の各位置に応じた移動制御のうち、最も安全性の高い移動制御である停止制御を行うことになる。このようにして、移動制御部16は、移動体1が停止するように移動機構11を制御する(ステップS110)。その後、例えば、操作者5が、その障害物D3を移動させた場合には、その障害物D3が検知されなくなり、移動体1は、移動を再開できるようになる。なお、このように、移動体1と共に移動している障害物と、通常の障害物との両方が検知され、通常の障害物が停止領域に存在することによって停止制御が行われた場合には、その通常の障害物が停止領域に存在しなくなった際に、移動が再開されてもよい。
なお、本実施の形態では、すべての方向及び距離について、検知された障害物に関する判断を行う場合について説明したが、そうでなくてもよい。例えば、判断部15は、移動体1に対してあらかじめ決められた角度範囲に存在する障害物についてのみ、移動体1と共に移動している障害物かどうかの判断を行ってもよい。あらかじめ決められた角度範囲とは、例えば、移動体1において、操作者やコントロールペンダントのケーブルが障害物として検知される可能性の高い角度範囲であってもよい。通常、ケーブルは特定の位置に装着されているため、操作者やコントロールペンダントのケーブルが障害物として検知される可能性の高い角度範囲は、限定されることになる。したがって、そのような角度範囲を、あらかじめ決められた角度範囲としてもよい。また、判断部15は、移動体1に対して所定の距離の範囲内に存在する障害物についてのみ、移動体1と共に移動している障害物かどうかの判断を行ってもよい。その所定の距離の範囲内は、移動体1に近い範囲であることが好適である。具体的には、例えば、図6で示されるように、領域R3に存在する障害物についてのみ、判断部15による判断処理を行うようにしてもよい。領域R3は、あらかじめ決められた角度θ1の範囲内であり、また、測距センサ12の位置からの距離がL1以内の範囲である。なお、距離の範囲については、例えば、移動体1の外縁や、その他の箇所からの距離の範囲が用いられてもよい。
以上のように、本実施の形態による移動体1によれば、検知した障害物が移動体1と共に移動しているものである場合と、通常のものである場合とで異なる移動制御を行うことによって、移動体1と共に移動している障害物や通常の障害物に対して、適切な移動制御を行うことができるようになる。したがって、移動体1に衝突する危険性の低い障害物によって、移動体1の移動が制限される可能性を低減することができる。具体的には、移動体1と共に移動している障害物が検知されたことに応じて移動体1が減速されたり停止されたりする可能性を低減することができ、例えば、操作者が移動体1と共に移動している場合であっても、移動体1のより円滑な移動を継続することができるようになる。また、通常の障害物が検知された場合には、その検知に応じて移動体1が減速されたり停止されたりすることによって、安全性を確保することができるようになる。
なお、本実施の形態では、移動体1が操作者からの操作指示に応じて移動する場合について主に説明したが、そうでなくてもよい。移動体1は自律的に移動するものであってもよい。その場合でも、例えば、その移動体1と共に歩いている人間については、移動体1と共に移動している障害物と判断されることになり、その人間の存在によって、移動体1の移動が制限されないことになる。
また、本実施の形態では、測距センサ12による測定結果を用いた障害物検知のみを行う場合について説明したが、それ以外の障害物検知を行ってもよい。例えば、接触センサを用いた障害物検知を行うようにしてもよい。その場合には、接触センサによって障害物が検知された際に、移動制御部16は、移動体1を停止させるなどの移動制御を行ってもよい。
また、上記実施の形態において、移動制御部16による移動制御に現在位置が用いられない場合には、移動体1は、現在位置取得部14を備えていなくてもよい。
また、上記実施の形態において、各処理または各機能は、単一の装置または単一のシステムによって集中処理されることによって実現されてもよく、または、複数の装置または複数のシステムによって分散処理されることによって実現されてもよい。
また、上記実施の形態において、各構成要素間で行われる情報の受け渡しは、例えば、その情報の受け渡しを行う2個の構成要素が物理的に異なるものである場合には、一方の構成要素による情報の出力と、他方の構成要素による情報の受け付けとによって行われてもよく、または、その情報の受け渡しを行う2個の構成要素が物理的に同じものである場合には、一方の構成要素に対応する処理のフェーズから、他方の構成要素に対応する処理のフェーズに移ることによって行われてもよい。
また、上記実施の形態において、各構成要素が実行する処理に関係する情報、例えば、各構成要素が受け付けたり、取得したり、選択したり、生成したり、送信したり、受信したりした情報や、各構成要素が処理で用いる閾値や数式、アドレス等の情報等は、上記説明で明記していなくても、図示しない記録媒体において、一時的に、または長期にわたって保持されていてもよい。また、その図示しない記録媒体への情報の蓄積を、各構成要素、または、図示しない蓄積部が行ってもよい。また、その図示しない記録媒体からの情報の読み出しを、各構成要素、または、図示しない読み出し部が行ってもよい。
また、上記実施の形態において、各構成要素等で用いられる情報、例えば、各構成要素が処理で用いる閾値やアドレス、各種の設定値等の情報がユーザによって変更されてもよい場合には、上記説明で明記していなくても、ユーザが適宜、それらの情報を変更できるようにしてもよく、または、そうでなくてもよい。それらの情報をユーザが変更可能な場合には、その変更は、例えば、ユーザからの変更指示を受け付ける図示しない受付部と、その変更指示に応じて情報を変更する図示しない変更部とによって実現されてもよい。その図示しない受付部による変更指示の受け付けは、例えば、入力デバイスからの受け付けでもよく、通信回線を介して送信された情報の受信でもよく、所定の記録媒体から読み出された情報の受け付けでもよい。
また、上記実施の形態において、移動体1に含まれる2以上の構成要素が通信デバイスや入力デバイス等を有する場合に、2以上の構成要素が物理的に単一のデバイスを有してもよく、または、別々のデバイスを有してもよい。
また、上記実施の形態において、各構成要素は専用のハードウェアにより構成されてもよく、または、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをCPU等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。その実行時に、プログラム実行部は、記憶部や記録媒体にアクセスしながらプログラムを実行してもよい。また、そのプログラムは、サーバなどからダウンロードされることによって実行されてもよく、所定の記録媒体(例えば、光ディスクや磁気ディスク、半導体メモリなど)に記録されたプログラムが読み出されることによって実行されてもよい。また、このプログラムは、プログラムプロダクトを構成するプログラムとして用いられてもよい。また、そのプログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、または分散処理を行ってもよい。
また、本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。