【解決手段】移動目標決定装置100は、記憶部141と、移動方向決定部1441と、移動距離決定部1443と、移動目標設定部1445と、を備える。記憶部141は、自律移動体1が移動すべき移動目標点を設定可能な、所定の大きさの領域を設定する目標点設定可能領域A1を記憶する。移動方向決定部1441は、自律移動体1が自己位置から移動する目標移動方向をランダムに決定する。移動距離決定部1443は、自己位置から移動したときに、目標点設定可能領域A1内の位置に到達可能であり、かつ、所定の下限距離以上である距離を、目標移動距離としてランダムに決定する。移動目標設定部1445は、自己位置から目標移動方向に目標移動距離だけ移動したときに自律移動体1が到達する到達位置を、移動目標点として設定する。
前記記憶部は、前記環境地図のうち前記移動目標点を設定できない領域を表し、前記移動体が移動可能な領域を表す移動可能領域からは独立して設定された目標点設定不能領域を記憶し、
前記移動目標設定部は、前記到達位置が前記目標点設定不能領域外に存在すれば、当該到達位置を前記移動目標点として設定する、
請求項1又は2に記載の移動目標決定装置。
【発明を実施するための形態】
【0017】
1.第1実施形態
(1)自律移動体の構成
移動目標決定装置100(後述)が用いられる自律移動体1の一例について説明する。以下に説明する自律移動体1は、例えば、移動目標決定装置100にて決定された移動目標点へと自律して移動可能な移動体である。まず、自律移動体1の構成を、
図1を用いて説明する。
図1は、本発明の一実施形態が採用された自律移動体の構成を示す図である。
自律移動体1は、本体11を有する。本体11は、自律移動体1の本体を構成する例えば筐体である。本実施形態において、後述する「自己位置」は、移動環境MEを表す環境地
図M1上における本体11の中心の位置(座標)と定義する。また、「自身」との語は、自律移動体1の本体11のことを指すこととする。
【0018】
自律移動体1は、移動部12を有する。移動部12は、例えば、本体11を移動させる差動二輪型の移動部である。
具体的には、移動部12は、一対のモータ121a、121bを有する。一対のモータ121a、121bは、本体11の底部に設けられた、例えばサーボモータやブラシレスモータなどの電動モータである。一対のモータ121a、121bは、制御部14(後述)と電気的に接続され、制御部14からの指令に基づいて、それぞれ独立に、任意の回転数及びトルクにてその出力回転軸を回転させる。
【0019】
移動部12は、一対の車輪123a、123bを有する。一対の車輪123a、123bは、それぞれ、一部が移動環境MEの床面(移動面)と接しており、一対のモータ121a、121bの出力回転軸に接続される。これにより、車輪123a、123bは、それぞれ、モータ121a、121bによって独立して回転し、本体11を移動させる。
上記のように独立回転が可能なことによって、車輪123aと123bの回転数に差を生じさせて本体11の姿勢を変化できる。一方、一対の車輪123a、123bの回転数が同じであれば、本体11を直進できる。
【0020】
モータ121a、121bのそれぞれの出力回転軸には、エンコーダ125a、125b(
図2)が設けられている。エンコーダ125a、125bは、例えば、モータ121a、121bの出力回転軸の回転量に基づいたパルス信号を出力するインクリメンタル型のエンコーダである。これにより、自己位置推定部143(後述)は、モータ121a、121bの回転量、すなわち、車輪123a、123bの回転量に基づいて、移動環境MEにおける自律移動体1(本体11)の位置及び/又は姿勢を推定できる。
【0021】
自律移動体1は、レーザレンジセンサ13を有する。レーザレンジセンサ13は、例え
ば、レーザ発振器によりパルス発振されたレーザ光を、移動環境ME中の構造物(例えば、移動環境MEに配置された柱、棚、壁など)である障害物や物体に放射状に照射し、当該障害物から反射した反射光をレーザ受信器により受信することにより、当該障害物や物体に関する情報を取得するレーザレンジファインダ(LRF:Laser Range Finder)である。
レーザレンジセンサ13は、本体11の前部に配置された第1レーザレンジセンサ131と、本体11の後部に配置された第2レーザレンジセンサ133と、を有する。
【0022】
第1レーザレンジセンサ131は、本体11の前方に左右方向にレーザ光を放射状に発生することにより、第1レーザレンジセンサ131を中心とした本体11の前方の半径20m程度の円内に含まれる障害物や物体に関する情報を取得する。
一方、第2レーザレンジセンサ133は、本体11の後方に左右方向にレーザ光を放射状に発生することにより、第2レーザレンジセンサ133を中心とした本体11の後方の半径5m程度の円内に含まれる障害物や物体に関する情報を取得する。
なお、上記レーザレンジセンサの検出可能距離は、上記の値に限られず、自律移動体1の用途等に応じて適宜変更できる。
【0023】
その他、上記の障害物や物体を検出するセンサとしては、レーザレンジファインダの他に、周囲に存在する障害物や物体とセンサ(本体11)との間の距離を測定可能なセンサを用いることができる。例えば、TOF(Time Of Flight)カメラなどを使用できる。さらに、1次元又は2次元の距離を測定するセンサを、2次元又は3次元の距離を測定するものとして動作させることが可能なシステムなどを使用できる。
【0024】
自律移動体1は、制御部14を有する。制御部14は、CPU(Central Processing Unit)、ハードディスク装置、ROM(Read Only Memory)、RAM(Random Access Memory)、記憶媒体読み出し装置などの記憶装置、信号変換を行うインターフェースなどを備えたコンピュータシステムである。制御部14は、自律移動体1の各部の制御を行う。制御部14の構成については、後ほど詳しく説明する。
【0025】
自律移動体1は、補助輪部15をさらに有していてもよい。補助輪部15は、2つの補助車輪15a、15bを有する。2つの補助車輪15aと15bは、それぞれが独立に回転可能なように取り付けられている。補助輪部15を備えることにより、自律移動体1は安定に、かつ、スムーズに移動できる。
【0026】
(2)制御部の構成
図2を用いて、制御部14の構成を説明する。
図2は、制御部の構成を示す図である。
なお、以下に説明する制御部14の各部の機能の一部又は全部は、コンピュータシステムにおいて実行可能なプログラムとして実現されていてもよい。また、当該プログラムは、当該マイコンシステムの記憶装置に記憶されていてもよい。又は、上記機能の一部又は全部は、カスタムICなどにより実現されていてもよい。
【0027】
制御部14は、記憶部141を有する。記憶部141は、制御部14を構成するコンピュータシステムの記憶装置の記憶領域の一部である。記憶部141は、自律移動体1を制御するために用いられる各種情報を記憶する。
【0028】
制御部14は、ローカルマップ取得部142を有する。ローカルマップ取得部142は、レーザレンジセンサ13から取得した信号に基づいて、ローカルマップM2を取得する。ローカルマップM2は、自律移動体1の移動環境MEにおける存在位置を中心とした所定の範囲内の地図情報である。本実施形態において、ローカルマップ取得部142は、以下のようにしてローカルマップM2を取得する。
ローカルマップ取得部142は、まず、レーザレンジセンサ13からレーザ光を照射したタイミングと、反射光をレーザレンジセンサ13(レーザ受信器)にて受信したタイミングとの時間差から、レーザレンジセンサ13と物体との距離を算出する。また、例えば、反射光を受信した時のレーザ受信器の受光面の角度から、本体11から見た物体が存在する方向を算出できる。
【0029】
その後、ローカルマップ取得部142は、上記の時間差から算出される本体11から見た物体の相対的な距離と、反射光を受光したときの受光面の角度とを、移動環境MEを表す座標平面上の座標値に変換する。これにより、ローカルマップ取得部142は、自律移動体1(本体11)の周囲に存在する物体の自律移動体1に対する相対的な位置を表す地図情報を、ローカルマップM2として取得できる。
例えば、自律移動体1から物体までの距離がRと算出され、レーザレンジセンサ13の受光面の角度が自律移動体1の直進方向(
図1)に対してα(反時計回りを正の角度とする)となっている場合、物体の自律移動体1に対する相対的な位置は、レーザレンジセンサ13の中心を原点とし、自律移動体1の直進方向をx方向(水平方向)とした座標系において、(R*cosα,R*sinα)と算出できる。
ローカルマップ取得部142は、上記のようにして取得したローカルマップM2を記憶部141に記憶する。
【0030】
なお、ローカルマップ取得部142は、レーザレンジセンサ13にて取得された上記の角度αと、自律移動体1から物体までの距離Rとを、自律移動体1の直進方向をx方向(水平方向)とした直交座標系に変換しなくともよい。すなわち、移動環境MEを表す座標系(移動座標系と呼ぶことにする)を直交座標系とするのではなく、例えば、移動環境MEの中心点からの距離と、当該中心点を通る軸に対する角度とを座標値として有する極座標系としてもよい。
以下では、説明を簡単にするために、移動座標系として直交座標系を用いた場合について説明する。
【0031】
制御部14は、自己位置推定部143を有する。自己位置推定部143は、自律移動体1が移動環境MEを移動中に、自律移動体1の移動環境MEにおける位置(自己位置と呼ぶ)、及び/又は、所定の軸(例えば、移動座標系(X−Y座標系)のX軸)に対して自律移動体1が向いている角度(姿勢と呼ぶ)を推定する。
自己位置推定部143は、ローカルマップ取得部142により得られたローカルマップM2と、記憶部141に記憶された環境地
図M1とをマップマッチングすることにより、自律移動体1の自己位置及び/又は姿勢を推定する。
【0032】
具体的には、自己位置推定部143は、まず、エンコーダ125a、125bから取得したモータ121a、121b(車輪123a、123b)の回転量に基づいて算出された移動環境ME上の自律移動体1の位置に対応する環境地
図M1上の位置に、ローカルマップM2を配置する。
【0033】
次に、自己位置推定部143は、当該位置において、ローカルマップM2を、車輪123a、123bの回転量に基づいて算出された姿勢(角度)だけ回転して、環境地
図M1とローカルマップM2とのマップマッチングを行う。
具体的には、自己位置推定部143は、まず、車輪123a、123bの回転量に基づいて推定された位置及び/又は姿勢を中心とした所定の範囲内の環境地
図M1上の複数の位置にローカルマップM2を配置し、当該複数の位置のそれぞれにおいて、所定の回転角度範囲内にてローカルマップM2を回転する。
【0034】
その後、自己位置推定部143は、上記の複数の配置位置及び複数の回転角度のうち、ローカルマップM2が環境地
図M1と最も一致(マッチング)する配置位置及び回転角度を、それぞれ、自己位置及び姿勢と推定する。このようなマップマッチングによる自己位置及び/姿勢の推定は、例えば、「尤度計算」により実行できる。
【0035】
上記のように、環境地
図M1とローカルマップM2とをマップマッチングする際に、ローカルマップM2の配置位置及び回転角度に幅を持たせることにより、車輪123a、123bの回転量に基づく自己位置及び/又は姿勢の推定誤差と、マップマッチングにおける自己位置及び/又は姿勢の推定誤差(主に、レーザレンジセンサ13により取得されるローカルマップM2及び/又は環境地
図M1に含まれる誤差に起因する)とを相殺して、正確に自己位置及び/姿勢を推定できる。
【0036】
また、自己位置推定部143は、移動環境MEにおける物体の存在位置(すなわち、自律移動体1が移動する環境)を表す環境地
図M1を作成する。
例えば、自己位置推定部143は、自律移動体1がユーザの操作により移動中に推定された自己位置に、当該自己位置を推定する際に取得されたローカルマップM2を配置することにより、環境地
図M1を作成する。
具体的には、自己位置推定部143は、例えば手動モードの実行中に、所定の時間間隔(例えば、制御部14の制御周期)にて、自律移動体1の自己位置及び/又は姿勢を推定する。これにより、手動モードにて自律移動体1が移動開始位置から移動終了位置まで移動するまでの間に、複数の自己位置が推定され、当該複数の自己位置のそれぞれにおいて、対応するローカルマップM2が取得される。
【0037】
自己位置推定部143は、移動座標系において、推定された複数の自己位置のそれぞれの座標に、対応するローカルマップM2を配置することにより、環境地
図M1を作成できる。自己位置推定部143は、このようにして作成した環境地
図M1を、記憶部141に記憶する。
【0038】
制御部14は、移動目標点決定部144を有する。移動目標点決定部144は、自律移動体1が自律モードにて自律的に移動する際の移動目標点を決定する。
移動目標点決定部144は、現在の自己位置から、ランダムな方向(目標移動方向と呼ぶことにする)に、ランダムな距離(目標移動距離と呼ぶことにする)だけ移動したときに自律移動体1が到達する到達位置のうち、所定の条件に合致するものを、現在の自己位置から次に到達すべき目標位置(すなわち、移動目標点)と設定することもできる。これにより、移動目標点決定部144は、自律移動体1を移動環境MEにてランダムに移動させることもできる。もちろん、自律移動体1はユーザにより指定された移動目標点まで規律的に移動できる。
【0039】
上記の移動目標点決定部144(又はその機能)を有することにより、制御部14は、移動目標決定装置100を構成する。移動目標点決定部144の構成及び機能については、後ほど詳しく説明する。
【0040】
制御部14は、移動制御部145を有する。移動制御部145は、モータ121a、121bを制御する。移動制御部145は、例えば、モータ121a、121bのそれぞれの制御量を算出し、当該制御量に基づいた駆動電力をモータ121a、121bのそれぞれに出力するモータドライバである。移動制御部145は、エンコーダ125a、125bから入力したモータ121a、121bの単位時間あたりの回転量(回転速度)が、所望の回転速度となるように、モータ121a、121bの制御量を算出している(フィードバック制御)。
【0041】
移動制御部145は、ユーザによる切替などにより、自律モード又は手動モードのいずれかを実行可能となっている。自律モードの実行時においては、移動制御部145は、例えば、移動目標点決定部144により決定された移動目標点と、自己位置推定部143において推定された自己位置及び/又は姿勢との差に基づいて、モータ121a、121bのそれぞれの制御量を算出して、算出された制御量に基づいた駆動電力を、これらのモータに出力する。
これにより、移動制御部145は、自律モードの実行時でユーザにより移動目標が指定されない状況においては、移動目標点決定部144により決定されたランダムな移動目標点へと、自律的に移動できる。
【0042】
一方、手動モードの実行時においては、移動制御部145は、例えば、無線又は有線にて自律移動体1と通信可能なコントローラ又はコンピュータシステム、又は、自律移動体1に設けられた操作ハンドル(図示せず)などの操作装置を用いたユーザの操作を受け付けて、当該ユーザの操作に基づいて、モータ121a、121bを制御する。これにより、自律移動体1は、ユーザの操作により移動可能となる。
【0043】
制御部14が上記の構成を有することにより、制御部14は、手動モードの実行時においては、操作者の操作により自律移動体1を移動できる。一方、自律モードの実行時でユーザにより移動目標が指定されない状況においては、制御部14は、自律移動体1を、ランダムな移動目標点へと自律的に移動できる。
【0044】
(3)移動目標点決定部の構成
次に、移動目標点決定部144の構成について、
図3を用いて説明する。
図3は、移動目標点決定部の構成を示す図である。
移動目標点決定部144は、移動方向決定部1441を有する。移動方向決定部1441は、自律移動体1が現在の自己位置から移動する目標移動方向をランダムに決定する。具体的には、移動方向決定部1441は、ソフトウェア的又はハードウェア的に実現された乱数発生器を用いて、所定の値の範囲内の乱数(例えば、0°から360°までの範囲の乱数)を発生し、当該乱数を目標移動方向の候補(目標移動方向候補と呼ぶ)として生成する。
【0045】
本実施形態において、目標移動方向候補及び目標移動方向は、移動座標系において、反時計回りの方向を正としてX軸とのなす角度として定義される。目標移動方向候補及び目標移動方向は、移動座標系又は極座標系において、適宜任意に定義できる。
【0046】
移動方向決定部1441は、現在の自己位置から、目標移動方向候補にて示された方向に移動したときに到達する目標点設定可能領域A1(移動目標点を設定できる範囲を示す領域)の境界線までの距離が、あらかじめ決められた下限距離よりも小さい場合には、現在の目標移動方向候補は不適切と判断し、新たな目標移動方向候補を決定し直す。
これにより、移動方向決定部1441は、移動環境ME又は設定された領域の角の位置、又は、移動環境MEの袋小路となった位置などにおいて小さく移動し続けて、自律移動体1が、当該角又は袋小路から抜け出ることができなくなるような目標移動方向候補を算出することを回避できる。
【0047】
移動目標点決定部144は、移動距離決定部1443を有する。移動距離決定部1443は、自律移動体1が自己位置から(目標移動方向に)移動したときに、目標点設定可能領域A1内の位置に到達可能であり、かつ、上記の下限距離以上である距離を、目標移動距離候補としてランダムに決定する。
具体的には、移動距離決定部1443は、乱数を発生し、当該乱数を目標移動距離候補として生成する。その後、生成された目標移動距離候補のうち、下限距離以上であり、かつ、予め決められた上限距離以下であるものを、目標移動距離とする。
【0048】
なお、目標移動距離は、下限距離以上、かつ、上限距離以下の間のランダムな距離であればよいので、移動距離決定部1443は、下限距離から上限距離までの範囲内の乱数を発生し、当該乱数を目標移動距離として生成してもよい。
【0049】
移動目標点決定部144は、移動目標設定部1445を有する。移動目標設定部1445は、自己位置から上記の目標移動方向に目標移動距離だけ移動したときに、自律移動体1が到達する到達位置を、移動目標点として設定する。
本実施形態においては、移動目標点の候補が、上記の目標点設定可能領域A1内に存在しても、自律移動体1が移動可能な領域として設定された移動可能領域A2外に存在する場合、又は、移動目標点を設定できない領域として設定された目標点設定不能領域A3内に存在する場合には、移動目標設定部1445は、移動方向決定部1441及び移動距離決定部1443のそれぞれに対して、再度、目標移動方向及び目標移動距離を決定するよう指令する。
【0050】
これにより、移動目標設定部1445は、新たに決定された目標移動方向及び目標移動距離を用いて、上記の条件に当てはまらない適切な移動目標点を設定する。
【0051】
上記の構成を有することにより、移動目標点決定部144は、ランダムな方向にランダムな距離にて自律移動体1を移動させる移動目標点を決定できる。
【0052】
移動目標点決定部144は、領域設定部1447を有する。領域設定部1447は、上記の目標点設定可能領域A1、移動可能領域A2、及び/又は目標点設定不能領域A3を設定する。
本実施形態において、領域設定部1447は、例えば、
図4に示すようなユーザ・インターフェースUIを制御部14のディスプレイなどに表示する。ユーザは、当該ユーザ・インターフェースUIを用いて、上記の3つの領域を設定できる。
図4は、領域を設定するためのユーザ・インターフェースの一例を示す図である。
【0053】
具体的には、領域設定部1447は、表示部1447−1を有する。表示部1447−1は、環境地
図M1の少なくとも一部を、例えば、ユーザ・インターフェースUIの地図表示インターフェースDIに表示する。
【0054】
領域設定部1447は、描画部1447−3を有する。描画部1447−3は、環境地
図M1の少なくとも一部が表示された地図表示インターフェースDI上に、目標点設定可能領域A1、移動可能領域A2、及び/又は目標点設定不能領域A3を描画する。
描画部1447−3は、例えば、ユーザがカーソルCU(例えば、マウスカーソル)を用いて指定した地図表示インターフェースDI上の矩形、正方形、又は円形の領域(
図5Aの点線にて示した領域)に、選択した所定の形状の領域を描画する。
【0055】
描画したい領域の形状は、例えば、形状選択インターフェースRIの複数のボタンのうち、当該描画したい形状が示されたボタンを、カーソルCUにて押下することにより選択できる。選択されている形状は、例えば、形状選択インターフェースRI中の対応するボタンの色を他のボタンとは異ならせることにより、ユーザによって視覚的に認識できる。
【0056】
例えば、
図5Aに示すように、描画したい領域の形状として円形が選択された場合には、描画部1447−3は、ユーザがカーソルCUを用いて指定した地図表示インターフェースDI上の矩形又は正方形の領域の対角線の交点に中心を有し、当該矩形又は正方形の領域に内接する円が描画される。
図5Aは、ユーザ・インターフェースを用いて円形の領域を描画する様子の一例を示す図である。
なお、地図表示インターフェースDI上にてユーザにより指定された領域の形状が、円形又は楕円形の場合には、描画部1447−3は、当該円形又は楕円形の領域をそのまま、目標点設定可能領域A1、移動可能領域A2、及び/又は目標点設定不能領域A3として描画する。これにより、円形である目標点設定可能領域A1、移動可能領域A2、及び/又は目標点設定不能領域A3を設定できる。
【0057】
一方、描画したい形状として矩形(正方形)が選択された場合には、描画部1447−3は、例えば、
図5Bに示すように、ユーザがカーソルCUを用いて指定した地図表示インターフェースDI上の円形の領域に内接する矩形を描画する。
図5Bは、ユーザ・インターフェースを用いて矩形の領域を描画する様子の一例を示す図である。
なお、地図表示インターフェースDI上にてユーザにより指定された領域の形状が矩形の場合には、描画部1447−3は、当該矩形の領域をそのまま、目標点設定可能領域A1、移動可能領域A2、及び/又は目標点設定不能領域A3として描画する。これにより、矩形である目標点設定可能領域A1、移動可能領域A2、及び/又は目標点設定不能領域A3を設定できる。
【0058】
その他、描画部1447−3は、例えば、ユーザが指定した地図表示インターフェースDI上の矩形又は円形の領域に内接又は外接する、ユーザにより指定された所定の多角形(三角形、四角形(矩形)、五角形、六角形など)を表示部1447−1上に描画することにより、多角形を有する目標点設定可能領域A1、移動可能領域A2、及び/又は目標点設定不能領域A3を描画できる。
【0059】
さらに、変形例として、描画部1447−3は、例えば、ユーザが、制御部14を構成するコンピュータシステムの入力装置(例えば、キーボード、タッチパネル、及び/又は、マウスなど)を用いて指定した地図表示インターフェースDI上の複数の座標点を直線などにて結ぶことにより、任意の形状を有する目標点設定可能領域A1、移動可能領域A2、及び/又は目標点設定不能領域A3を設定可能となっていてもよい。
【0060】
上記の各領域を地図表示インターフェースDI上に描画するときに、描画部1447−3は、当該描画された領域が、目標点設定可能領域A1、移動可能領域A2、又は、目標点設定不能領域A3のいずれであるかを判定する。描画したい領域をどの領域として設定するかは、ユーザにより決定される。
具体的には、
図4、
図5A、及び、
図5Bに示すように、ユーザ・インターフェースUIは、領域種類設定インターフェースSIを有している。ユーザは、カーソルCUを領域種類設定インターフェースSIに配置された3つのボタンのいずれかに配置し、当該配置箇所にてボタンを押下することにより、所望の領域種類を選択できる。
【0061】
描画部1447−3は、地図表示インターフェースDI上に領域を描画する際に、領域種類設定インターフェースSIのいずれのボタンが押されているかを判定し、地図表示インターフェースDIに描画した領域の内部を、判定した領域種類に対応した色にて彩色する。これにより、ユーザは、描画した領域の彩色により、描画された領域が、目標点設定可能領域A1、移動可能領域A2、又は、目標点設定不能領域A3のいずれであるかを、視覚的に確認できる。
また、領域種類設定インターフェースSIにて設定したい領域種類を選択後に領域を描画することにより、描画した各領域を、目標点設定可能領域A1、移動可能領域A2、又は、目標点設定不能領域A3の何れかとして、環境地
図M1及び他の領域からは独立して設定できる。
【0062】
例えば、
図5A及び
図5Bに示すように、ユーザにより描画された領域が目標点設定可能領域A1であり、移動可能領域A2が環境地
図M1の通路部分(
図5A及び
図5Bでは、環境地
図M1の白色部分)である場合、目標点設定可能領域A1は、移動可能領域A2(環境地
図M1)の形状に制約されることなく、移動可能領域A2からは独立して設定されていることが分かる。
【0063】
領域設定部1447は、領域作成部1447−5を有する。領域作成部1447−5は、地図表示インターフェースDI上に描画された領域から、データ化(数値化)された目標点設定可能領域A1、移動可能領域A2、及び/又は目標点設定不能領域A3を作成する。
【0064】
上記の構成を有することにより、領域設定部1447は、地図表示インターフェースDIに表示された環境地
図M1の少なくとも一部を視覚的に確認しながら、当該環境地
図M1の少なくとも一部の所望の位置に、所望の目標点設定可能領域A1、移動可能領域A2、及び/又は目標点設定不能領域A3を設定できる。
【0065】
なお、上記のユーザ・インターフェースUIにおいては、目標移動距離の下限値(下限距離)及び/又は上限値(上限距離)を設定可能であってもよい。
例えば、
図5Cに示すように、自律移動体1の仮の自己位置から仮の直線を引いて、当該直線上の2点を設定する。このうち、仮の自己位置から当該仮の自己位置に近い方の点までの距離を下限距離として設定し、仮の自己位置から当該仮の自己位置からより遠い方の点までの距離を上限距離として設定できる。
図5Cは、ユーザ・インターフェースを用いた下限距離及び上限距離の設定方法の一例を示す図である。
【0066】
(4)自律移動体の動作
(4−1)全体的な動作
以下、自律移動体1の全体的な動作について
図6を用いて説明する。
図6は、自律移動体の全体的な動作を示すフローチャートである。
自律移動体1が動作を開始すると、制御部14は、ユーザによる動作モードの選択が行われたか否かを判定する(ステップS1)。具体的には、例えば、上記の入力装置、又は、操作装置から動作モードの選択の指示信号を入力したとき、制御部14は、ユーザにより動作モードの選択が行われたと判定する。
動作モードの選択の指示信号を入力しない場合(ステップS1において「No」の場合)、制御部14は、当該信号が入力されるまで待機する。
【0067】
ユーザにより動作モードの選択がなされると(ステップS1において「Yes」の場合)、制御部14の移動制御部145は、選択された動作モードが手動モードであるか、自律モードであるかを判定する(ステップS2)。
選択された動作モードが手動モードであると判定された場合(ステップS2において「手動モード」の場合)、移動制御部145は、手動モードを実行する(ステップS3)。具体的には、移動制御部145は、ユーザによる操作を受信し、受信したユーザの操作量に基づいた制御量に応じた電力をモータ121a、121bに出力する。
【0068】
手動モードにおいて、移動制御部145がユーザの操作に従ってモータ121a、121bを制御する間、必要に応じて、自己位置推定部143は、上記に説明したようにして、環境地
図M1を作成し、記憶部141に記憶する。
【0069】
一方、選択された動作モードが自律モードであると判定された場合(ステップS2において「自律モード」の場合)、移動制御部145は、自律モードを実行する(ステップS4)。
具体的には、まず、自己位置推定部143が、記憶部141に記憶されている環境地
図M1と、自律モードにて自律移動体1を移動中に取得したローカルマップM2とのマップマッチングにより、自律モードにて移動中の自律移動体1の自己位置及び/又は姿勢を推定する。次に、移動目標点決定部144が移動目標点を決定する。
【0070】
その後、移動制御部145が、自己位置推定部143にて推定された自己位置及び/又は姿勢と、移動目標点決定部144により決定された移動目標点の座標値と、を比較し、現在の自己位置及び/又は姿勢と、次に到達すべき移動目標点との差分に基づいて、モータ121a、121bの制御量を算出し、モータ121a、121bに当該制御量に応じた電力を出力する。
なお、自律モードを実行中の自律移動体1の動作については、後ほど詳しく説明する。
【0071】
上記の手動モード又は自律モードの実行中に、例えば、ユーザが操作装置を用いて手動モード又は自律モードの実行を停止させない限り(ステップS5において「No」の場合)、自律移動体1は上記の動作を継続する。
【0072】
上記のステップS1〜S5を実行することにより、移動制御部145は、自律モードの実行時に、移動目標点決定部144により決定されたランダムな移動目標点を通過するよう、移動部12を制御できる。
一方、手動モードの実行時においては、移動制御部145がユーザによる操作を受け付けて移動部12を制御しつつ、自己位置推定部143が、必要に応じて、移動環境MEを表す環境地
図M1を作成できる。
【0073】
(4−2)自律モード実行時における自律移動体の動作
次に、自律モード(上記のステップS4)における自律移動体1の詳細動作について、
図7を用いて詳細に説明する。
図7は、自律モード実行時の自律移動体の動作を示すフローチャートである。
自律モードが開始されると、制御部14は、移動目標点を設定可能な領域を定めるために、少なくとも、目標点設定可能領域A1が記憶部141に記憶されているかを確認する(ステップS401)。
【0074】
目標点設定可能領域A1が記憶部141に記憶されていない場合(ステップS401において「Yes」の場合)、領域設定部1447は、ユーザ・インターフェースUIを制御部14のディスプレイに表示して、ユーザに対して、目標点設定可能領域A1を設定するように通知する。
当該通知を確認したユーザは、上記にて説明したようにして、目標点設定可能領域A1を設定する。また、必要に応じて、ユーザは、上記にて説明したようにして、移動可能領域A2、及び/又は目標点設定不能領域A3を設定する(ステップS402)。
【0075】
その他、目標点設定可能領域A1、移動可能領域A2、及び/又は目標点設定不能領域A3が記憶部141に記憶されていても、新たな領域を設定可能とするために、領域設定部1447は、ディスプレイなどに、目標点設定可能領域A1、移動可能領域A2、及び/又は目標点設定不能領域A3を新たに設定するか否かを問い合わせるメッセージを表示してもよい。
この場合には、新たな領域を設定することをユーザが選択したとき(ステップS401において「Yes」の場合)に、領域設定部1447は、ユーザ・インターフェースUIを制御部14のディスプレイに表示する。これにより、ユーザは、ユーザ・インターフェースUIを用いて、目標点設定可能領域A1、移動可能領域A2、及び/又は目標点設定不能領域A3を新たに設定できる(ステップS402)。
【0076】
上記のステップS402を実行後、又は、目標点設定可能領域A1、移動可能領域A2、及び/又は目標点設定不能領域A3を新たに設定しないことを選択(ステップS401において「No」の場合)後、自律移動体1は自律移動を開始する。
【0077】
以下、
図8に示す環境地
図M1において、ステップS402を実行するなどして、目標点設定可能領域A1、移動可能領域A2、及び、目標点設定不能領域A3が、
図8に示すように設定された場合を例にとって、自律移動体1の自律移動動作を説明する。
図8は、環境地図に設定された目標点設定可能領域、移動可能領域、及び、目標点設定不能領域の一例を示す図である。
【0078】
自律移動を開始すると、まず、移動目標点決定部144が、到達位置を、現在の自己位置からの移動目標点の候補として算出する(ステップS403)。
移動目標点決定部144は、現在の自己位置からランダムに決定した方向に、ランダムに決定した距離だけ移動したときに自律移動体1が到達する位置を、到達位置として算出する。ステップS403における到達位置の算出方法は、後ほど詳しく説明する。
【0079】
到達位置を算出後、移動目標設定部1445は、算出した到達位置が適切か否かを判定する。具体的には、移動目標設定部1445は、算出した到達位置が、目標点設定可能領域A1内に存在し、かつ、移動可能領域A2内に存在し、かつ、目標点設定不能領域A3内に存在しない場合(すなわち、ステップS404〜S406が全て「Yes」の場合)、当該算出された到達位置は、移動目標点の候補として適切であると判定する。
【0080】
一方、算出した到達位置が、
図9Aに示すように、目標点設定可能領域A1内に存在しないか、移動可能領域A2内に存在しないか、又は、目標点設定不能領域A3外に存在していない場合(すなわち、ステップS404〜ステップS406のいずれかが「No」の場合)、当該到達位置は、移動目標点の候補として不適切と判定し、自律モードの実行プロセスは、ステップS403に戻る。すなわち、適切な到達位置が算出されるまで、上記のステップS403〜S406が繰り返し実行される。
図9Aは、移動目標点の候補として不適切な到達位置の一例を示す図である。
【0081】
移動目標点の候補として適切な到達位置を算出後、移動目標設定部1445は、当該到達位置に自律移動体1を配置したときに、自律移動体1が移動環境MEに存在する障害物、及び/又は、目標点設定不能領域A3と干渉するか否かを判定する(ステップS407)。
移動環境MEに存在する障害物は、例えば、移動環境MEに存在する壁及び柱などの建造構造物、及び/又は、移動環境MEに配置された棚などである。
移動目標設定部1445は、環境地
図M1(移動座標系)に自律移動体1の大きさに相当する物体を配置したときに、当該物体が環境地
図M1に存在する障害物又は目標点設定不能領域A3と干渉するか否かを、例えば、「当たり判定」により判定する。
【0082】
例えば、
図9Bに示すように、候補として適切とされた到達位置に自律移動体1の大きさに相当する領域(
図9Bにおいては、点線の円にて示した領域)を配置したときに、当該領域と、障害物及び/又は目標点設定不能領域A3とが干渉すると判定された場合(ステップS407において「Yes」の場合)、自律モードの実行プロセスは、ステップS403に戻る。
すなわち、障害物及び/又は目標点設定不能領域A3と干渉する到達位置に自律移動体1が到達すると、自律移動体1が、障害物と干渉(衝突)するか、又は、目標点設定不能領域A3とされている領域に入るため、当該到達位置は移動目標点としては不適切であると判定し、到達位置を算出し直す。
図9Bは、移動目標点としては不適切な到達位置の一例を示す図である。
【0083】
一方、候補として適切とされた到達位置に自律移動体1を配置しても障害物と干渉しないか、又は、目標点設定不能領域A3とされている領域に入らないと判定された場合(ステップS407において「No」の場合)、移動目標設定部1445は、当該到達位置を移動目標点として設定し(ステップS408)、当該移動目標点を移動制御部145へ出力する。
【0084】
上記のステップを実行することにより、ランダムに算出された到達位置のうち、目標点設定可能領域A1内、かつ、移動可能領域A2内であり、かつ、目標点設定不能領域A3外である適切な位置に存在し、自律移動体1を移動させたときに障害物と干渉せず、かつ、目標点設定不能領域A3とされている領域に入らない最適な到達位置を、移動目標点として決定できる。
【0085】
上記のようにして算出された移動目標点を受信した移動制御部145は、自律移動体1を当該移動目標点へ移動させるよう、すなわち、自己位置推定部143から入力した自己位置(及び/又は姿勢)が移動目標点と一致するよう、移動部12を制御する(ステップS409)。
自律移動体1が移動目標点に到達した時(ステップS409において「Yes」の場合)、制御部14は、ユーザなどにより、自律移動体1(または自律モード)の停止が指令されたか否かを判定する(ステップS410)。
【0086】
自律移動体1の停止が指令されない限り(ステップS410において「No」である限り)、自律モードの実行プロセスは、ステップS43に戻る。すなわち、自律移動体1が移動目標点に到達した時、移動制御部145は、自律移動体1又は自律モードの停止が指令されない限り、移動目標点決定部144に対して、新たな移動目標点を算出するよう指令する。
【0087】
上記のステップS403〜S409を、自律移動体1又は自律モードの停止が指令されるまで繰り返し実行することにより、自律移動体1は、ランダムに決定された複数の移動目標点に到達して、移動環境MEを継続的にランダムに移動できる。
【0088】
(4−3)到達位置の算出方法
次に、ランダムな移動目標点の候補としての到達位置の算出方法(上記のステップS403)について、
図10を用いて説明する。
図10は、到達位置の算出方法を示すフローチャートである。
到達位置の算出が開始されると、移動目標点決定部144は、目標点設定可能領域A1に矩形の境界線RBを設定する(ステップS4031)。具体的には、
図11に示すように、目標点設定可能領域A1の境界よりも、自律移動体1の半径分(自律移動体1が円形であると仮定した場合の半径分)内側に、矩形の境界線RBを設定する。
これにより、自律移動体1が目標点設定可能領域A1外へと到達する到達位置を算出してしまう確率を低減できる。
図11は、設定された矩形の境界線の一例を示す図である。
【0089】
矩形の境界線RBを設定後、移動方向決定部1441が、現在の自己位置からの移動方向の候補である目標移動方向候補を、乱数の発生により生成する(ステップS4032)。
その後、移動方向決定部1441は、自律移動体1の現在の自己位置を自己位置推定部143から取得し、
図12に示すように、移動座標系において、当該自己位置(
図12の環境地
図M1においては、三角形にて示した位置)から、乱数の発生により生成した目標移動方向候補の角度を傾きとして有する直線(
図12においては、一点鎖線にて示した直線)を引く。この直線を表す式は、当該直線が自己位置を通り、当該直線の傾きが目標移動方向候補であるとの2つの条件から具体的に算出できる。
【0090】
目標移動方向候補の傾きを有する直線を算出後、当該直線と、ステップS4031にて設定した矩形の境界線RBとの交点を算出する(ステップS4033)。
矩形の境界線RBと当該直線との交点は、例えば、矩形の境界線RBを表す式(矩形の境界線RBは、移動座標系における4つの直線の式で表すことができる)と、目標移動方向候補の傾きを有する直線の式との交点を算出することにより、具体的な座標値として算出できる。
図12は、自己位置を通り目標移動方向候補を傾きとして有する直線と、当該直線と矩形の境界線との交点の一例を示す図である。
【0091】
次に、移動方向決定部1441は、上記のようにして算出した交点が、所定の条件に照らして適切なものであるか否かを判定する。具体的には、自律移動体1が現在の自己位置から交点へ向けて移動した場合に、領域の角、又は、移動環境MEに存在する袋小路において細かく動いて、当該角又は袋小路から抜け出ることができなくなる可能性があるか否かを判定する。
【0092】
ランダムな方向のランダムな移動距離を有する移動経路を生成する場合に、自律移動体1が領域の角又は移動環境MEの袋小路から抜け出ることができない場合は、例えば、
図13に示すように、領域の角又は袋小路において、自律移動体1に対して短い距離の移動を許可している場合に起こりやすい。
図13は、自律移動体が領域の角から抜け出ることができなくなった場合の一例を示す図である。
【0093】
したがって、本実施形態においては、領域の角又は袋小路から抜け出ることができなくなるか否かの判定を、現在の自己位置と算出した交点までの距離が、予め決められた下限距離以上であるか否かにより判定する(ステップS4034)。
【0094】
現在の自己位置から上記の交点までの距離が、下限距離よりも小さい場合(ステップS4034において「No」の場合)、算出した目標移動方向候補に移動すると、領域の角又は袋小路から抜け出ることができなくなる可能性があると判定し、到達位置の算出プロセスは、ステップS4032に戻る。
すなわち、移動方向決定部1441は、再度乱数を発生して、新たな目標移動方向候補を生成する。
【0095】
一方、現在の自己位置から目標移動方向候補へ向かう交点までの距離が、下限距離以上である場合(ステップS4034において「Yes」の場合)、当該目標移動方向候補に移動すれば角又は袋小路に入ってしまう可能性が低いと判定し、移動方向決定部1441は、当該交点の方向への目標移動方向候補を、目標移動方向と決定する(ステップS4035)。
【0096】
上記のステップS4031〜S4035を実行することにより、領域の角、又は、移動環境MEの袋小路などの狭い領域において自律移動体1が細かく移動して、当該狭い領域から抜け出ることができなくなる確率を低減できる。
また、移動方向決定部1441が、自身が発生した乱数を目標移動方向と決定することにより、ランダム(無秩序)な自律移動体1の移動方向を生成できる。
【0097】
目標移動方向を決定後、移動距離決定部1443が、現在の自己位置から決定した目標移動方向に移動する目標移動距離を決定する。目標移動距離も、目標移動方向と同様に、所定の条件を満たしたランダムな距離として算出される。
具体的には、移動距離決定部1443が、乱数を発生し、当該乱数を目標移動距離の候補である目標移動距離候補として生成する(ステップS4036)。
次に、移動距離決定部1443は、当該目標移動距離候補が、上記の下限距離以上であり、かつ、あらかじめ決められた上限距離以下であるか否かを判定する(ステップS4037)。
【0098】
なお、ステップS4033において算出された交点と現在の自己位置との距離が上限距離よりも小さい場合には、移動距離決定部1443は、当該目標移動距離候補が、下限距離以上であり、かつ、当該交点と現在の自己位置との間の距離以下であるか否かを判定する。
これにより、到達位置が目標点設定可能領域A1外に設定される確率を低減できる。
【0099】
目標移動距離候補が、下限距離よりも小さいか、又は、上限距離(又は、傾きが目標移動方向である直線と矩形の境界線RBとの交点と現在の自己位置との間の距離)よりも大きい場合(ステップS4037において「No」の場合)、到達位置の算出プロセスは、ステップS4036に戻る。すなわち、移動距離決定部1443は、乱数を発生し、新たな目標移動距離候補を生成する。
【0100】
一方、目標移動距離候補が、下限距離以上であり、かつ、上限距離(又は、傾きが目標移動方向である直線と矩形の境界線RBとの交点と現在の自己位置との間の距離)以下である場合(ステップS4037において「Yes」の場合)、移動距離決定部1443は、当該目標移動距離候補を、目標移動距離と決定する(ステップS4038)。
上記のステップS4036〜S4038を実行することにより、移動距離決定部1443は、下限距離以上、かつ、上限距離以下(かつ、到達位置を目標点設定可能領域A1内とする)であるランダムな目標移動距離を算出できる。
【0101】
目標移動方向及び目標移動距離を決定後、移動目標設定部1445が、決定した目標移動方向及び目標移動距離を用いて、到達位置を算出する(ステップS4039)。
具体的には、例えば、到達位置が目標移動方向の傾きを有する直線上にあること、及び、到達位置と現在の自己位置との距離が目標移動距離であること、の2つの条件を表す式からなる連立方程式を解くことにより、移動座標系における到達位置の座標値を具体的に算出できる。
【0102】
上記のステップS4031〜S4039を実行することにより、自己位置から目標移動方向に目標移動距離だけ移動したときに自律移動体1が到達する到達位置を、当該自己位置からランダムな方向のランダムな距離にある位置として算出できる。
【0103】
(5)他の実施形態
以上、本発明の一実施形態について説明したが、本発明は上記実施形態に限定されるものではなく、発明の要旨を逸脱しない範囲で種々の変更が可能である。特に、本明細書に書かれた複数の実施形態及び変形例は必要に応じて任意に組み合せ可能である。
(A)移動目標点の決定方法についての他の実施形態(その1)
移動目標点は、目標点設定可能領域A1及び移動可能領域A2内にあり、かつ、目標点設定不能領域A3外にある点(座標値)であればよいので、移動目標点の決定方法は、到達位置を算出後に当該位置が所定の領域内にあるか否かを判定することに限られない。
【0104】
例えば、移動座標系において、目標点設定可能領域A1及び移動可能領域A2内にあり、かつ、目標点設定不能領域A3外にある領域を予め決めておいた後に、当該領域内に存在する点を移動目標点として決定してもよい。
【0105】
具体的には、まず、目標点設定可能領域A1と移動可能領域A2との重複領域を、移動目標点を設定可能な領域(重複領域)として設定する。その後、上記の第1実施形態において説明したのと同様にして、到達位置が重複領域内に存在するとの条件を満たす目標移動方向及び目標移動距離を算出し、現在の自己位置から当該目標移動方向に目標移動距離だけ移動した位置を、移動目標点とする。
【0106】
なお、
図14に示すように、重複領域内に目標点設定不能領域A3が存在し、現在の自己位置を通り傾きが目標移動方向である直線が当該目標点設定不能領域A3を通過する場合には、下限距離以上、かつ、当該直線と目標点設定不能領域A3との最初(より近傍)の交点から現在の自己位置までの距離以下の範囲内、又は、当該直線と目標点設定不能領域A3との次の(自己位置からはより遠い)交点から現在の自己位置までの距離以上、かつ、上限距離以下の距離のいずれかを、目標移動距離として、現在の自己位置から目標移動方向に目標移動距離だけ移動した位置を、移動目標点として決定する。
【0107】
(B)移動目標点の決定方法についての他の実施形態(その2)
現在の自己位置において、複数の移動目標点を決定してもよい。
例えば、自律移動体1の自律モードにおける移動開始位置から、上記のステップS401〜S410を繰り返し実行して複数の移動目標点を算出後に、当該複数の移動目標点のそれぞれを通過するよう、自律移動体1を自律的に移動させてもよい。
【0108】
その他、例えば、ある1つの自己位置において所定の個数の移動目標点を決定し、当該所定の個数の移動目標点のうち最後の移動目標点に到達したら、再度、所定の個数(この場合の個数は、前回の移動目標点の決定個数と同じであってもよいし、異なっていてもよい)の移動目標点を決定してもよい。
【0109】
このように複数の移動目標点を一度に算出することにより、例えば、移動目標点の決定のために自律移動体1を現在の自己位置に停止させることなく、自律移動体1をスムーズに自律移動させることができる。
【0110】
(C)移動目標点の決定方法についての他の実施形態(その3)
現在の自己位置が目標点設定可能領域A1の外に存在する場合に、ランダムな移動経路の移動を再開させるために、自律移動体1を目標点設定可能領域A1内へと戻すような移動をさせることもできる。
当該移動が可能となることにより、例えば、自律移動体1は、バッテリーの充電のために目標点設定可能領域A1外の充電ステーションへと移動し、バッテリーの充電後、目標点設定可能領域A1内に戻りランダムな移動経路を再開することができる。
【0111】
(D)目標点設定可能領域についての他の実施形態
上記の第1実施形態においては、環境地
図M1(移動環境ME)に、1つの矩形(又は円形)の目標点設定可能領域A1が設定されていた。しかし、目標点設定可能領域A1の形状や設定数は、上記に限られない。
例えば、
図15Aに示すように、矩形が所定の角度だけ傾いた目標点設定可能領域A1を設定することもできる。また、
図15Bに示すように、移動可能領域A2内の離れた箇所に個別に目標点設定可能領域A1を設定することもできる。
図15A及び
図15Bは、目標点設定可能領域の他の実施形態を示す図である。
【0112】
(E)移動可能領域についての他の実施形態
上記の第1実施形態においては、環境地
図M1の通路部分の全てが移動可能領域A2として設定されていた。しかし、環境地
図M1の通路部分のうち、例えば、棚などの障害物が高頻度に配置されるなどの理由により、所定の領域へと自律移動体1を移動可能としたくない場合には、通路部分の当該所定の領域以外を移動可能領域A2として設定してもよい。これにより、環境地
図M1の通路部分の一部を自律移動体1が移動可能とすることができる。
【0113】
(F)環境地図の他の実施形態
上記の第1実施形態において、環境地
図M1は、自律移動体1を手動モードにて移動させたときに取得された情報(ローカルマップM2)に基づいて作成されていた。しかし、これに限られず、環境地
図M1を、CAD及び/又はドローイングソフトなどを用いて作成し、必要に応じてデータ変換して自律移動体1において用いてもよい。これにより、環境地
図M1を生成するために自律移動体1を移動させる必要がなくなる。
【0114】
(G)自律移動体の移動部についての他の実施形態
上記の第1実施形態において、自律移動体1が備える移動部12は、差動二輪型の移動部であった。しかし、自律移動体1が備える移動部12は、差動二輪型のものに限られず、全方向移動が可能なオムニホイールなどの、差動二輪型とは異なる構造を有するものとしてもよい。