(58)【調査した分野】(Int.Cl.,DB名)
前記評価部は、前記推定移動量を前記データ移動量として評価し、前記推定移動量を不適切と評価した場合、前記最大走行移動量を前記所定の期間に前記移動体が移動した移動量として採用する、請求項1又は2に記載の移動量推定装置。
前記評価部は、前記推定移動量を前記データ移動量として評価し、前記推定移動量を不適切と評価した場合、前記制御移動量を前記所定の期間に前記移動体が移動した移動量として採用する、請求項4に記載の移動量推定装置。
前記評価部は、前記推定移動量を前記データ移動量として評価し、前記推定移動量を不適切と評価した場合、前記車輪移動量を前記所定の期間に前記移動体が移動した移動量として採用する、請求項6に記載の移動量推定装置。
前記評価部は、前記第1推定部にて推定された前記推定移動量を前記データ移動量として評価し、前記第1推定部にて推定された前記推定移動量を不適切と評価した場合、前記第1推定部にて推定された前記推定移動量を破棄する、請求項9に記載の移動量推定装置。
前記評価部は、前記一致度の算出において前記第1ヒストグラム又は前記第2ヒストグラムを移動させる移動量を前記データ移動量として評価する、請求項11に記載の移動量推定装置。
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1の移動ロボットのように複数の位置データを用いて自己位置の補正を行う場合、例えば位置データの取得状況(例えば、位置データにノイズが含まれていたり、移動前後において位置データにより構成される像の形状が異なっていたりするなど)によっては、正確に自己位置を推定できない場合がある。この場合、例えば、移動ロボットの移動速度などからは考えられないような位置に到達した、と推定されてしまう場合がある。
【0005】
特許文献1に開示された移動ロボットなどの従来の移動体においては、位置データにより推定される位置について、移動体の移動性能に基づいた評価は行われていなかった。そのため、従来の移動体においては、移動体の移動性能では考えられないような位置が推定されても、その位置は適切なものとされていた。
【0006】
本発明の課題は、移動体の移動量を推定する移動量推定装置において、推定された移動量を適切に評価することにある。
【課題を解決するための手段】
【0007】
以下に、課題を解決するための手段として複数の態様を説明する。これら態様は、必要に応じて任意に組み合せることができる。
本発明の一見地に係る移動量推定装置は、走行部を有する移動体の移動量を推定する装置である。移動量推定装置は、位置データ取得部と、推定部と、評価部と、を備える。位置データ取得部は、複数の位置データを取得する。複数の位置データは、所定の座標上に投影物体像を形成する。投影物体像は、移動体の周囲に存在する物体を所定の座標上に投影した像である。
【0008】
推定部は、第1投影物体像と移動投影物体像とが一致したときに算出された複数の移動位置データの、複数の第2位置データからの平行移動の移動量及び/又は回転移動の移動量を、所定の期間に移動体が移動した推定移動量として推定する。
【0009】
第1投影物体像は、複数の第1位置データにより形成される投影物体像である。複数の第1位置データは、移動体が所定の期間に移動したときの移動前又は移動後の一方において取得した複数の位置データである。移動投影物体像は、複数の移動位置データにより形成される投影物体像である。複数の移動位置データは、複数の第2位置データを所定の座標上にて平行移動及び/又は回転移動した複数の位置データである。複数の第2位置データは、移動体の移動前又は移動後の他方において取得した複数の位置データである。
【0010】
なお、上記の「移動前又は移動後の他方」は、複数の第1位置データが移動体の移動前に取得された場合には、移動体の移動後のことを指す。一方、複数の第1位置データが移動体の移動後に取得された場合には、移動体の移動前のことを指す。
【0011】
評価部は、データ移動量を最大走行移動量に基づいて評価する。データ移動量は、複数の第2位置データから複数の移動位置データを算出したときの所定の座標上における平行移動及び/又は回転移動の移動量である。最大走行移動量は、移動体が所定の期間に走行可能な並進移動における最大の移動量及び/又は回転移動における最大の移動量である。また、評価部は、適切と評価されたデータ移動量を移動体の移動量として採用する。
【0012】
上記の移動量推定装置においては、まず、位置データ取得部が、移動体が所定の期間に移動したときの移動前又は移動後の一方において複数の第1位置データを、移動体の移動前又は移動後の他方において複数の第2位置データを取得する。
【0013】
複数の第1位置データと第2位置データを取得後、推定部が、複数の第2位置データを平行移動及び/又は回転移動して複数の移動位置データを算出する。その後、推定部は、複数の第1位置データにより形成される第1投影物体像が、複数の移動位置データにより形成される移動投影物体像と一致するかを判断する。第1投影物体像と移動投影物体像とが一致していると判断された場合に、推定部は、当該移動投影物体像が形成された複数の移動位置データを算出したときの、複数の第2位置データからの平行移動の移動量及び/又は回転移動の移動量を、所定の期間に移動体が移動した移動量(推定移動量)と推定する。
【0014】
推定移動量の推定において移動位置データを算出する際、評価部が、複数の移動位置データを算出するために必要な複数の第2位置データの平行移動及び/又は回転移動の移動量(データ移動量)を、最大走行移動量に基づいて評価する。その後、評価部は、データ移動量を適切であると評価した場合に、当該適切と評価したデータ移動量を移動体の移動量として採用する。
【0015】
つまり、上記の移動量推定装置は、推定移動量の推定において複数の第2位置データから複数の移動位置データを算出する際に、算出された複数の移動位置データが走行部の走行性能(最大走行移動量)を考慮した場合に妥当(適切)なものであるかどうかを評価している。そして、適切と評価された移動位置データを推定移動量の推定に用いている。
これにより、上記の移動量推定装置において、走行部の走行性能を考慮した場合に妥当でない(不適切な)推定移動量を算出したり、無駄な推定移動量の推定を実行したりすることを回避できる。すなわち、適切に推定移動量を推定できる。
【0016】
評価部は、データ移動量が最大走行移動量よりも大きくなった場合に、当該データ移動量を不適切と評価してもよい。これにより、走行部の走行性能以上のデータ移動量を用いて算出された複数の移動位置データが推定移動量の推定に用いられることを回避できる。
【0017】
評価部は、推定移動量をデータ移動量として評価してもよい。つまり、評価部は、推定移動量を最大走行移動量に基づいて評価してもよい。評価部が推定移動量を不適切と評価した場合、上記の最大走行移動量を所定の期間に移動体が移動した移動量として採用してもよい。これにより、不適切な推定移動量が不適切な移動量なため採用されなかった場合でも、推定移動量が不定になることを回避できる。
【0018】
上記の移動体は走行制御部をさらに有していてもよい。走行制御部は、走行部を制御する。上記の移動量推定装置は、制御移動量推定部を備えていてもよい。制御移動量推定部は、制御移動量を、所定の期間における移動体の移動量として推定する。制御移動量は、上記の所定の期間において走行部を制御する際に、走行制御部が走行部に出力した加速度指令値及び/又は速度指令値に基づいて算出される移動量である。さらに、この場合、評価部は、制御移動量を最大走行移動量としてデータ移動量を評価する。これにより、走行指令により走行可能な最大の移動量を用いて、より厳密なデータ移動量の評価が可能となる。
【0019】
評価部は、推定移動量をデータ移動量として評価してもよい。つまり、評価部は、推定移動量を最大走行移動量に基づいて評価してもよい。評価部が推定移動量を不適切と評価した場合、上記の制御移動量を所定の期間に移動体が移動した移動量として採用してもよい。これにより、不適切な推定移動量よりもより実際に近い移動量を所定の期間に移動体が移動した移動量と推定できる。
【0020】
上記の移動体において、走行部は車輪を有し車輪の回転により走行可能となっていてもよい。このとき、上記の移動量推定装置において、制御移動量推定部は、車輪移動量を制御移動量として算出してもよい。車輪移動量は、所定の期間における車輪の回転量に基づいて算出された車輪による移動量である。
これにより、評価部は、車輪の回転量に基づいて算出された車輪移動量に基づいて、より厳密にデータ移動量を評価できる。
【0021】
評価部は、推定移動量をデータ移動量として評価してもよい。つまり、評価部は、推定移動量を最大走行移動量に基づいて評価してもよい。評価部が推定移動量を不適切と評価した場合、車輪移動量を所定の期間に移動体が移動した移動量として採用してもよい。これにより、不適切な推定移動量よりもより実際に近い移動量を所定の期間に移動体が移動した移動量と推定できる。
【0022】
評価部は、移動体の最大並進移動速度及び/又は最大回転速度と所定の期間との積を最大走行移動量としてもよい。これにより、より簡単に最大走行移動量を算出できる。
【0023】
推定部は、距離算出部と、第1推定部とを有していてもよい。
距離算出部は、第1投影物体像と移動投影物体像との間の距離を算出する。第1推定部は、第1投影物体像と移動投影物体像との間の距離と所定の閾値との間の比較に基づいて、第1投影物体像と移動投影物体像とが一致したかどうかを判断する。また、第1推定部は、移動投影物体像が第1投影物体像と一致したときの複数の移動位置データの複数の第2位置データからの平行移動の移動量及び/又は回転移動の移動量を推定移動量と推定する。
これにより、推定部は、複数の位置データを用いて精度よく推定移動量を推定できる。
【0024】
評価部は、第1推定部にて推定された推定移動量をデータ移動量として評価してもよい。つまり、評価部は、最大走行移動量に基づいて、第1推定部にて推定された推定移動量を評価してもよい。
このとき、評価部は、第1推定部にて推定された推定移動量を不適切と評価した場合、第1推定部にて推定された推定移動量を破棄する。これにより、適切に算出された推定移動量を選択できる。
【0025】
推定部は、ヒストグラム生成部と、第2推定部とを有していてもよい。
ヒストグラム生成部は、第1ヒストグラムと第2ヒストグラムとを生成する。第1ヒストグラムは、複数の第1位置データの所定の座標の所定の座標軸における座標値から生成されるヒストグラムである。第2ヒストグラムは、複数の第2位置データの所定の座標軸における座標値から生成されるヒストグラムである。
【0026】
第2推定部は、第1ヒストグラムと第2ヒストグラムとの一致度が最大になるときに、第1投影物体像と移動投影物体像とが一致したと判断する。また、第2推定部は、一致度が最大になるときの第1ヒストグラム又は第2ヒストグラムの移動量を推定移動量と推定する。
【0027】
評価部は、第1ヒストグラムと第2ヒストグラムとの一致度を算出する際において、第1ヒストグラム又は第2ヒストグラムを移動させる移動量をデータ移動量として評価してもよい。これにより、適切な移動量にて2つのヒストグラムのいずれかを移動できる。
【0028】
評価部は、第2推定部にて推定された推定移動量をデータ移動量として評価してもよい。つまり、評価部は、最大走行移動量に基づいて、第2推定部にて推定された推定移動量を評価してもよい。
このとき、評価部は、第2推定部にて推定された推定移動量を不適切と評価した場合、第2推定部にて推定された推定移動量を破棄する。これにより、適切に算出された推定移動量を選択できる。
【0029】
評価部は、第1ヒストグラム又は第2ヒストグラムを移動させる移動量の上限値及び/又は下限値の絶対値を最大走行移動量と設定してもよい。これにより、移動量としては適切でない範囲において第1ヒストグラム又は第2ヒストグラムを無駄に移動させることを抑制できる。その結果、ヒストグラムの一致度に基づいた推定移動量の推定時間を短縮できる。
【0030】
本発明の他の見地に係る自律移動体は、上記の移動量推定装置と、走行部と、位置推定部と、走行制御部と、を備える。走行部は、自律移動体を移動させる。位置推定部は、移動量推定装置において推定される移動量に基づいて、現在位置を推定する。走行制御部は、推定された現在位置から所定の目標位置まで走行するように走行部を制御する。
【0031】
上記の自律移動体は、上記の移動量推定装置を備えている。これにより、自律移動体においては、上記の評価結果に基づいて、推定移動量が適切であるかどうかを判断して適切な処理を実行したり、推定移動量の推定に用いるべき位置データを適切に選択したりできる。その結果、上記の移動量推定装置は、適切に移動量を推定し、それに基づいて意図した移動経路を移動できる。
【0032】
本発明のさらに他の見地に係る移動量の推定方法は、走行部を有する移動体の移動量を推定する方法である、移動量の推定方法は、以下のステップを含む。
◎移動体が所定の期間に移動した時の移動前及び移動後に移動体の周囲に存在する物体を、所定の座標上に投影した投影物体像を形成する複数の位置データを取得するステップ。
◎複数の第1位置データにより形成される第1投影物体像と、複数の第2位置データを所定の座標上にて平行移動及び/又は回転移動した複数の移動位置データにより形成される移動投影物体像とが一致したときの複数の移動位置データが算出されたときの、複数の第2位置データからの平行移動の移動量及び/又は回転移動の移動量を、所定の期間に移動体が移動した推定移動量として推定するステップ。
◎データ移動量を最大走行移動量に基づいて評価するステップ。
◎適切と評価されたデータ移動量を移動体の移動量として採用するステップ。
【0033】
これにより、走行部の走行性能を考慮した場合に妥当でない(不適切な)推定移動量を算出したり、無駄な推定移動量の推定を実行したりすることを回避できる。すなわち、適切に推定移動量を推定できる。
【発明の効果】
【0034】
移動量推定装置において、推定された移動量を適切に評価できる。
【発明を実施するための形態】
【0036】
1.第1実施形態
(1)自律移動体の全体構成
以下、本発明の自律移動体について説明する。まず、第1実施形態に係る自律移動体100の全体構成について、
図1を用いて説明する。本実施形態の自律移動体100は、予め決められた所望の予定走行経路を自律的に走行する移動体である。
自律移動体100は、本体部1と、走行部2と、位置データ取得部3と、制御部5と、を主に備える。本体部1は、自律移動体100の本体を構成する。
【0037】
走行部2は、
図1に示すように、車輪21a、21bを有し、車輪21a、21bが移動領域の床面などの走行面に接するように、モータ23a、23b(後述)を介して、本体部1の底部の中央付近に設置されている。また、車輪21a、21bは、本体部1の左右に設置されたモータ23a、23bの出力回転軸のそれぞれに、当該出力回転軸周りに回転可能に取り付けられている。
【0038】
モータ23a、23bは、制御部5から駆動信号(後述)を受信し、当該制御部5からの駆動信号により、それぞれの出力回転軸を回転させる。車輪21a、21bは、制御部5からの駆動信号に応じた回転量及び/又は回転速度にて回転する。車輪21a、21bの回転により、走行部2は、本体部1(すなわち、自律移動体100)を移動できる。モータ23a、23bとしては、例えば、ブラシレスモータなどの電動モータを用いる。
【0039】
また、モータ23a、23bのそれぞれの出力回転軸には、図示しない、モータ23a、23bのそれぞれの出力回転軸の回転数(回転量)を測定する装置が取り付けられている。そして、当該装置により測定された出力回転軸の回転量は、制御部5へ出力される。
【0040】
制御部5は、モータ23a、23bのそれぞれの出力回転軸の回転量に基づいて、車輪21a、21bの回転量を算出する。上記のモータ23a、23bの出力回転軸の回転量を測定する装置としては、例えば、エンコーダを用いることができる。例えば、インクリメンタル型のエンコーダを用いて出力回転軸の回転量を測定した場合、出力回転軸の回転量は、エンコーダから出力されるパルス信号に含まれる所定時間あたりのパルス数として測定できる。
【0041】
位置データ取得部3は、自律移動体100の周囲に存在する障害物や壁などの物体を、所定の座標上に投影した像(以後、「投影物体像」と呼ぶことにする)を形成する複数の位置データを取得する。
【0042】
上記の投影物体像を形成可能な複数の位置データは、例えば、レーザレンジファインダ(Laser Range Finder、LRF)を位置データ取得部3として用いることにより取得できる。その他、ToF(Time of Flight)カメラなど、本体の周囲にある物体の本体からの距離を測定できる装置を、位置データ取得部3として用いることができる。
【0043】
本実施形態では、レーザレンジファインダを位置データ取得部3として用いるが、複数の位置データは、例えば、自律移動体100から上記の物体の所定の箇所(例えば、レーザレンジファインダから出力された信号を反射する物体の表面の一部)までの距離と、上記の物体の箇所が存在する自律移動体100からの方向を示す角度とを含む二次元のデータとして取得される。
【0044】
位置データ取得部3から取得した複数の位置データは、例えば、位置データ取得部3からの出力信号が物体の表面などにて反射されて位置データ取得部3に戻ってくる信号を、信号の検出器を所定の角度範囲で回転走査することにより取得したデータである。従って、複数の位置データを所定の座標上にプロットすると、移動領域の自律移動体100の周囲に存在する物体(表面)の(少なくとも一部の)形状が当該所定の座標上に投影される。すなわち、複数の位置データは、所定の座標上において、自律移動体100の周囲に存在する物体を投影する投影物体像を形成する。
【0045】
なお、後述する複数の位置データに基づいて、自律移動体100の推定移動量を推定する場合、得られた上記の距離と角度とを座標値として有する位置データを用いて移動量を推定してもよい。この場合、上記の所定の座標は、自律移動体100から上記の物体までの距離を表す軸と、上記の物体が存在する自律移動体100からの角度を表す軸とにより構成される座標となる。
【0046】
また、得られた位置データに対して適当な座標変換を行った新たな位置データを用いて、自律移動体100の推定移動量を推定してもよい。例えば、得られた位置データを、座標変換により、例えば、二次元ならX−Y座標、三次元ならX−Y−Z座標上の位置データに変換できる。
本実施形態においては、位置データ取得部3において得られた位置データを、上記のX−Y座標の座標値としての位置データに変換して、自律移動体100の推定移動量を推定する。
【0047】
また、位置データ取得部3において得られる位置データは、車輪21a、21bの使用による車輪径の変化の影響を受けていない座標値データである。従って、本実施形態においては、位置データ取得部3において取得された複数の位置データを、移動領域における自律移動体100の実際の移動量により近い移動量を算出するために用いている。
【0048】
また、
図1に示すように、位置データ取得部3は、前方データ取得部31と後方データ取得部33とにより構成されている。前方データ取得部31は、自律移動体100の前方に取り付けられており、自律移動体100の前方に存在する物体からの位置データを取得できる。一方、後方データ取得部33は、自律移動体100の進行方向の後方に取り付けられており、自律移動体100の後方に存在する物体からの位置データを取得できる。
【0049】
本実施形態においては、前方データ取得部31の位置データ取得可能範囲が、後方データ取得部33の位置データ取得可能領域よりも広くなっている。例えば、本実施形態においては、後方データ取得部33が後方データ取得部33を中心とした半径10m程度の自律移動体100の後方の180°程度の範囲の物体を検出できる一方、前方データ取得部31は、前方データ取得部31を中心とした半径30m程度の自律移動体100の前方の270°程度の範囲に存在する物体を検出可能となっている。
【0050】
これにより、位置データ取得部3は、自律移動体100を中心とした(特に、自律移動体100の前方において)より広い範囲に存在する物体を検出できる。なお、上記の前方データ取得部31の物体の検出範囲と後方データ取得部33の物体の検出範囲は、上記の検出範囲に限られず、必要に応じて、適宜適切な検出範囲を設定できる。
【0051】
また、本実施形態において、前方データ取得部31及び/又は後方データ取得部33は、上記の本体部1の鉛直方向の上方(の前方及び後方)に取り付けられている。これにより、例えば、移動領域の床面などに設置された物体の移動が頻繁に起こる場合に(例えば、大規模小売店などのように、棚や看板のレイアウト変動が頻繁に行われる場合に)、前方データ取得部31及び後方データ取得部33により取得された複数の位置データにより形成される投影物体像の時間的な変化(特に、ある時間に存在した物体が、他の時間において存在しないような変化)を低減できる。
【0052】
従来の技術では、移動領域に設置された物体の移動が頻繁に起こる場合、自律移動体100の移動前に取得した複数の位置データにより形成される投影物体像と、移動後に取得した複数の位置データにより形成される投影物体像とが大きく異なる場合がある。移動前後において投影物体像が大きく異なっていると、移動前後の投影物体像の一方をどのように移動しても、他方の投影物体像に一致させることが困難となる。この場合、複数の位置データを用いた自律移動体100の移動量の推定が困難となる。
【0053】
また、従来の技術では、自律移動体100の移動前後の投影物体像が大きく異なる場合に、移動させた投影物体像と基準となる投影物体像とが一致したと判断されても、移動させた投影物体像の移動量から推定される自律移動体100の移動量が、実際の自律移動体100の移動量とは大きくかけ離れる場合がある。つまり、複数の位置データに基づいて推定した自律移動体100の移動量と、実際の自律移動体100の移動量との間に、大きな誤差が生じる場合がある。
【0054】
それらの問題を解決するために、本実施形態では、上述したように、前方データ取得部31及び/又は後方データ取得部33を本体部1の上部(例えば、人の頭や商品棚の高さを超える位置)に設置して移動が頻繁に行なわれる物体を検知する可能性を低減している。この結果、前方データ取得部31及び後方データ取得部33(位置データ取得部3)により取得した複数の位置データを用いることで、大きな誤差などを生じることなく、つまり精度よく自律移動体100の移動量を推定できる。
【0055】
制御部5は、走行部2を制御する。具体的には、制御部5は、自律移動体100の現在位置を、位置データ取得部3により取得された複数の位置データに基づいて算出された自律移動体100の移動量に基づいて推定する。また、制御部5は、推定された移動量や現在位置などに基づいて、自律移動体100の現在位置を推定する。
【0056】
さらに、制御部5は、推定された現在位置から制御部5の記憶部(後述)などに記憶された予め決められた目標位置(あるいは、複数ある目標位置のうちの1つ)まで自律移動体100を移動させるための制御信号を算出し、当該制御信号に基づいて、走行部2を駆動するための駆動信号を算出し、走行部2(のモータ23a、23b)に出力する。
なお、制御部5の詳細な構成、及び、制御部5における自律移動体100における移動量の算出方法などについては、後ほど説明する。
【0057】
自律移動体100が上記の構成を有することにより、自律移動体100は移動領域における本体の存在位置を、位置データ取得部3により取得した複数の位置データを用いて推定できる。また、自律移動体100は、予め決められた所定の目標位置まで移動するための制御信号を、推定された自律移動体100の(現在)位置に基づいて、自律移動体100内部(制御部5)において算出できる。その結果、自律移動体100は、予め決められた走行経路を、自律的に移動できる。
【0058】
図1に示すように、第1実施形態の自律移動体100は、取付部材9を介して本体部1に取り付けられた操作部7をさらに備えている。
図1に示すように、操作部7は、回動可能な操作ハンドル71a、71bを有し、操作ハンドル71a、71bのそれぞれの操作量(回動量)を制御部5に出力可能となっている。これにより、制御部5は、操作ハンドル71a、71bの操作量に応じて、モータ23a、23bを制御する駆動信号を算出可能となる。
【0059】
自律移動体100が上記の操作部7を備えることにより、操作者が自律移動体100を操作可能となる。具体的には、操作者が操作ハンドル71a、71bを回動するなどして車輪21a、21bの回動量や回転速度を調整することにより、操作者は自律移動体100を操作できる。
【0060】
また、上記のように、制御部5は自律移動体100本体の移動領域における位置を推定可能となっている。そのため、例えば、操作者が操作部7を用いて自律移動体100を操作している時に所定の時間間隔にて自律移動体100の位置を推定し、推定された位置を記憶部51などに記憶することにより、自律移動体100(制御部5)に、操作者による自律移動体100の操作を、上記の予め決められた走行経路として教示できる。
【0061】
なお、自律移動体100に走行経路を教示する方法は、上記した、操作者が操作部7を用いて自律移動体100を操作する間に自律移動体100の位置を推定して記憶する方法に限られない。例えば、走行経路を表す座標点を記憶したデータにおいて、座標点の座標値を直接操作(あるいは直接入力)することによっても、自律移動体100に走行経路を教示できる。または、自律移動体100の移動領域における位置を指定するその他の方法によって、自律移動体100に走行経路を教示できる。
【0062】
また、第1実施形態の自律移動体100は、補助輪部8をさらに備える。補助輪部8は、2つの補助車輪8a、8bを有する。2つの補助車輪8aと8bは、それぞれが独立に回転可能なように本体部1の後方底部に取り付けられている。補助輪部8を備えることにより、自律移動体100は安定に、かつ、スムーズに移動できる。
【0063】
(2)制御部の構成
I.制御部の全体構成
次に、制御部5の全体構成について
図2を用いて説明する。制御部5は、CPU(Central Processing Unit)と、ハードディスク装置と、ROM(Read Only Memory)と、RAM(Random Access Memory)と、記憶媒体読み出し装置などにより構成される記憶装置と、信号変換を行うインターフェースなどと、を備えたマイコンシステムなどにより実現できる。また、以下に示す制御部5の各部の機能の一部又は全部は、プログラムとして実現されていてもよい。さらに、当該プログラムは、マイコンボードの記憶装置に記憶されていてもよい。又は、制御部5の各部の機能の一部又は全部は、カスタムICなどにより実現されていてもよい。
【0064】
また、制御部5は、複数のマイコンシステムにより構成されていてもよい。例えば、後述する移動量推定部53(移動量推定装置の一例)と、走行制御部57と、制御部5の残りの構成要素とを個別のマイコンシステムにより構成してもよい。
【0065】
制御部5は、記憶部51と、移動量推定部53と、位置推定部55と、走行制御部57と、を有する。記憶部51は、制御部5を構成する記憶装置の記憶領域の少なくとも一部に対応する。記憶部51は、自律移動体100が移動領域を自律的に移動するために必要な情報などを記憶する。例えば、走行経路を表す座標値を表すデータ(走行スケジュールと呼ばれることもある)や、移動領域を表す地図情報(グローバルマップ、または、環境地図と呼ばれることもある)などが記憶部51に記憶されている。その他、記憶部51は、自律移動体100の動作に必要な各種設定値などを記憶している。
【0066】
移動量推定部53は、自律移動体100が移動した距離を推定する。そのため、移動量推定部53は移動量算出部531を有している。移動量算出部531は、位置データ取得部3が取得した複数の位置データに基づいて、自律移動体100が移動した距離を算出する。
【0067】
移動量算出部531は、移動前後において取得した複数の位置データのいずれかを移動して、移動した位置データとは異なる他方の位置データと移動した位置データとが一致するかどうかにより、自律移動体100の移動量(推定移動量)を算出する。
【0068】
移動量算出部531においては、移動する位置データの元の位置データからの移動量(データ移動量)が適切かどうか評価され、データ移動量が、走行部2が有する最大の走行能力(最大走行移動量)を超えた移動量であれば、当該データ移動量が不適切と判断される。
なお、移動量算出部531の構成の詳細及び移動量の算出方法については、後ほど詳しく説明する。
【0069】
位置推定部55は、自律移動体100の移動領域における存在位置を推定する。本実施形態において、位置推定部55は、SLAM(Simultaneous Localization and Mapping)法などを用いて、現在位置に存在する自律移動体100の周囲の壁や障害物などの物体の位置を示す地図情報(ローカルマップ)と、予め記憶されていた移動領域(の全体、又は、自律移動体100が移動する領域を少なくとも含む一部)を示す地図情報(グローバルマップ、環境地図)とのマップマッチング結果に基づいて、自律移動体100の現在位置を推定する。
【0070】
具体的には、位置推定部55は、まず、移動量推定部53にて推定された移動量に所定の誤差分を追加して算出した「仮の現在位置」を複数個生成する。上記の仮の現在位置は、例えば、移動前に推定されていた自律移動体100の位置に、上記の誤差分を追加した移動量を加えることにより算出できる。
【0071】
次に、上記の仮の現在位置のそれぞれに対して、現在位置において位置データ取得部3を用いて取得した複数の位置データを用いて上記のローカルマップを生成する。その後、位置推定部55は、複数個生成したローカルマップのうち、上記の環境地図と最もよく一致したローカルマップを生成したときの仮の現在位置を、自律移動体100の実際の現在位置と推定する。このようにして、位置推定部55は、移動量推定部53にて推定される移動量に基づいて、自律移動体100の現在位置を推定できる。
【0072】
また、位置推定部55は、操作者が操作部7を用いて自律移動体100を操作しているときには、所定の時間間隔(例えば、制御周期毎)にて上記の方法により自律移動体100の位置を推定して、推定した位置についての情報(座標値など)を記憶部51に記憶してもよい。これにより、位置推定部55は、操作者による自律移動体100の移動操作を記憶部51に記憶できる。その結果、自律移動体100は、記憶された操作者による移動操作を用いて自律的に移動することにより、操作者による移動操作を自律的に再現できる。
【0073】
なお、位置推定部55は、現在位置において作成したローカルマップを用いて、上記の環境地図を更新して記憶部51に記憶してもよい。これにより、移動領域中において障害物などの位置が変更された場合でも、障害物などの位置が変更された後の新しい環境地図を作成し記憶できる。
【0074】
走行制御部57は、自律移動体100が自律的に移動するときには、自律移動体100を、現在位置から、記憶部51に記憶された予め決められた移動経路に含まれる所定の目標位置まで走行するように、走行部2を制御する。
【0075】
具体的には、走行制御部57は、まず、現在位置から上記の所定の目標位置までの距離や方向などに基づいて、現在位置から所定の目標位置まで、所定の速度及び/又は加速度にて自律移動体100を移動させる制御指令を生成する。次に、走行制御部57は、上記の制御指令に基づいて、モータ23a、23bを制御するための駆動信号を算出し、モータ23a、23bに出力する。
【0076】
なお、走行制御部57は、モータ23a、23bのそれぞれに対して個別に駆動信号を出力する。すなわち、モータ23a、23bはそれぞれが異なる回転速度にて回転できる。例えば、自律移動体100を直進させたい場合には、モータ23a、23bを同じ回転速度にて回転させる。一方、モータ23a、23bのそれぞれを異なる回転速度にて回転させると、自律移動体100は回転運動(右折、左折)できる。
図1に示した走行部2のように、2つの車輪21a、21bのそれぞれを個別にモータ23a、23bにより回転させて走行する走行部を、「差動二輪型」の走行部と呼ぶこともある。
【0077】
また、走行制御部57は、操作部7から操作ハンドル71a、71bの回動量(操作量)を入力し、入力した回動量から上記の駆動信号を算出し、モータ23a、23bに出力可能となっている。これにより、自律移動体100は、操作ハンドル71a、71bを操作する操作者により操作可能となる。
【0078】
走行制御部57としては、例えば、フィードバック制御理論を用いた制御装置などを用いることができる。フィードバック制御理論を用いた制御装置を走行制御部57として用いる場合、走行制御部57は、モータ23a、23bの出力回転軸に取り付けられたエンコーダなどからのパルス信号を入力し、モータ23a、23bの回転数を制御指令に示したとおりに制御できる。
【0079】
制御部5が上記の構成を有することにより、自律移動体100は、記憶部51に記憶されている走行経路などの予め決められた走行経路を、自律的に移動できる。
【0080】
(3)移動量算出部の構成
I.全体構成
次に、第1実施形態の移動量算出部531の全体構成について、
図3を用いて説明する。
図3は、移動量算出部の全体構成を示す図である。移動量算出部531は、位置データ記憶部5311と、推定部5312と、評価部5313と、を有している。
【0081】
位置データ記憶部5311は、制御部5のマイコンシステムの記憶装置の記憶領域、又は、記憶部51の記憶領域の一部である。位置データ記憶部5311は、自律移動体100の移動前と移動後において位置データ取得部3から取得した(座標変換した)複数の位置データを記憶する。本実施形態においては、基準となる第1位置データを自律移動体100の移動前に取得した位置データとし、移動する第2位置データを自律移動体100の移動後に取得した位置データとする。
なお、これとは逆に、自律移動体100の移動前に取得した位置データを第2位置データとし、移動後に取得した位置データを第1位置データとしてもよい。
【0082】
推定部5312は、位置データ記憶部5311に記憶した複数の第1位置データと複数の第2位置データとを用いて、自律移動体100の移動量を推定する。推定部5312は、複数の第1位置データにより形成される第1投影物体像と移動投影物体像とが一致したときの複数の移動位置データが算出されたときの、複数の第2位置データからの平行移動の移動量及び/又は前記回転移動の移動量を、自律移動体100の移動量と推定する。移動投影物体像は、複数の第2位置データを所定の座標上にて平行移動及び/又は回転移動した複数の移動位置データにより形成される。なお、上記の推定部5312において推定された自律移動体100の移動量を、推定移動量と呼ぶことにする。
【0083】
評価部5313は、推定移動量を推定する際に複数の第2位置データを移動して複数の移動位置データを算出するときの第2位置データからの移動量(データ移動量)を、走行部2により自律移動体100が所定の期間に走行可能な最大走行移動量に基づいて評価する。
【0084】
評価部5313は、走行部2の車輪21a、21bの回転により走行可能な自律移動体100の最大並進速度及び/又は最大回転速度と、自律移動体100の移動前後の所定の期間との積を最大走行移動量とする。これにより、より簡単に最大走行移動量を算出できる。上記の最大並進速度及び/又は最大回転速度は、走行部2の仕様等によって決定できる一定値であるので、予め記憶部51などに記憶されている。
【0085】
また、評価部5313は、データ移動量が上記の最大走行移動量以下であり適切な移動量であると評価した場合、当該データ移動量を自律移動体100が移動した移動量として採用する。評価部5313は、さらに、推定部5312において推定された推定移動量を上記のデータ移動量として評価する。
【0086】
具体的には、評価部5313は、例えば、(i)推定移動量の推定毎に算出された推定移動量(データ移動量)を評価し、最大走行移動量以下の推定移動量のみ採用する、または、(ii)複数の推定移動量を記憶しておき、当該複数の推定移動量から最大走行移動量以下で適切な推定移動量を自律移動体100の移動量として選択する、とのいずれかの方法により推定移動量を評価する。これにより、評価部5313は、不適切と評価した推定移動量を破棄する一方、適切と評価した推定移動量を自律移動体100の移動量として採用できる。
【0087】
なお、評価部5313は、上記の(i)及び(ii)に記載した推定移動量の評価方法の両方を用いて適切な推定移動量を採用してもよいし、所定の条件に応じて上記(i)又は(ii)の評価方法のいずれかを選択してもよい。
【0088】
移動量算出部531が上記の構成を有することにより、複数の第2位置データを移動して複数の移動位置データを算出したときのデータ移動量が、走行部2によって自律移動体100が走行可能な最大走行移動量と比較して合理的な移動量であるかどうかを評価でき、合理的な(適切と評価された)データ移動量及び/又は推定移動量のみを自律移動体100の移動量として採用できる。その結果、最大走行移動量よりも大きな不適切なデータ移動量及び/又は推定移動量を算出することを回避できる。
【0089】
II.推定部の構成
次に、推定部5312の構成について、
図3を用いて説明する。
図3に示すように、推定部5312は、位置データ移動部5312−1と、距離算出部5312−2と、第1推定部5312−3と、を有する。
【0090】
位置データ移動部5312−1は、複数の第2位置データを所定の座標上にて平行移動及び/又は回転移動して移動位置データを算出する。複数の位置データの所定の座標上における平行移動は、例えば、複数の位置データのそれぞれの座標値に、平行移動の移動量を加えることにより実行できる。一方、複数の位置データの所定の座標上における回転移動は、例えば、座標の回転を表す公知の式により、回転移動後の位置データの座標値を算出することにより実行できる。なお、上記の第2位置データ(及び移動位置データ)の平行移動の移動量及び/又は回転移動の移動量は、第1推定部5312−3(後述)において決定される。
【0091】
距離算出部5312−2は、2種類の複数の位置データにより所定の座標上に形成される2つの投影物体像の間の距離を算出する。本実施形態において、距離算出部5312−2は、複数の第1位置データに含まれる1つの第1位置データと、複数の移動位置データに含まれ上記の1つの第1位置データに対応する1つの移動位置データと、その近傍の移動位置データにより定義される平面との距離をデータ間距離として算出し、上記のデータ間距離を所定の数だけ合計したときの合計距離を、複数の第1位置データにより形成される第1投影物体像と複数の移動位置データにより形成される移動投影物体像との間の距離と定義する。
【0092】
上記のデータ間距離を算出する際、距離算出部5312−2は、1つの第1位置データと当該1つの第1位置データに対応する1つの移動位置データとの間の距離を1つのデータ間距離として算出してもよい。または、1つの第1位置データと複数の移動位置データに含まれ当該1つの第1位置データの比較的近傍に存在する複数の移動位置データのそれぞれとの距離を複数のデータ間距離として算出してもよい。
【0093】
1つの第1位置データに対して複数のデータ間距離を算出する場合、距離算出部5312−2は、算出された複数のデータ間距離のうち所定の距離以上のものを使用しないようにしてもよい。所定の距離以上の平面距離を使用しないときには、1つの第1位置データに対してデータ間距離が全く算出されない場合、1つの移動位置データに対して複数のデータ間距離が算出される場合、1つの第1位置データに対して1つのデータ間距離が算出される場合がある。
【0094】
上記のデータ間距離としては、座標空間における距離を表す様々な距離を用いることができる。例えば、ユークリッド距離やマンハッタン距離(2つの座標点の各座標値の差を合計した距離)などを、位置データ間の距離として用いることができる。
【0095】
または、距離算出部5312−2は、1つの第1位置データと複数の移動位置データにより形成される投影物体像との間の距離を、上記のデータ間距離としてもよい。1つの第1位置データと複数の移動位置データにより形成される投影物体像との間の距離は、例えば、1つの第1位置データと、1つの第1位置データから当該投影物体像に伸ばした垂線と当該投影物体像との交点との間の距離として算出できる。
【0096】
第1推定部5312−3は、第1投影物体像と移動投影物体像との間の距離を表す合計距離と所定の閾値との比較を行う。本実施形態において、第1推定部5312−3は、合計距離と所定の閾値との比較として、合計距離が所定の閾値以下であるかどうかを判断する。
【0097】
合計距離が所定の閾値以下であることは、第1投影物体像と移動投影物体像とが十分に近い位置にあることを示している。これら2つの投影物体像が十分に近い位置にあることは、複数の第1位置データと複数の移動位置データとが全体としてほぼ一致していることに対応している。従って、2つの投影物体像の間の距離が所定の閾値以下であるかどうかを判断することにより、第1推定部5312−3は、複数の第1位置データと複数の移動位置データとが一致しているかどうかを判断できる。
【0098】
複数の第1位置データと複数の移動位置データとが一致していると判断された場合、第1推定部5312−3は、複数の第1位置データと一致していると判断された複数の移動位置データの、複数の第2位置データからの平行移動及び/又は回転移動の移動量(すなわち、最終的な移動位置データを算出するために必要な第2位置データのデータ移動量)から、推定移動量を推定する。
【0099】
(4)自律移動体の動作
I.第1実施形態における移動量の推定方法
次に、自律移動体100の動作について説明する。まず、第1実施形態に係る移動量推定部53(移動量算出部531)における移動量の推定方法について説明する。
【0100】
第1実施形態に係る推定部5312における移動量の推定方法は、自律移動体100の移動前又は移動後の一方にて取得した複数の位置データ(本実施形態では、第2位置データ)により形成される投影物体像(第2投影物体像)を平行移動及び/又は回転移動することにより形成される投影物体像(移動投影物体像)が、移動前又は移動後の他方にて取得した複数の位置データ(本実施形態では、第1位置データ)により形成される投影物体像(第1投影物体像)と一致したときに、当該移動投影物体像を形成する移動位置データを算出するために第2位置データを移動した移動量(平行移動の移動量及び/又は回転移動の移動量)を、自律移動体100の移動前後の移動量と推定する方法である。
【0101】
第1実施形態に係る推定部5312における移動量の推定方法においては、複数の第2位置データ又は複数の移動位置データを所定の方法により繰り返し移動して、複数の第2位置データをどのように移動した複数の移動位置データが複数の第1位置データに全体として最も近づくかが探索される。
従って、第1実施形態における上記の推定部5312による移動量の推定方法はICP(Iterative Closest Point)法と呼ばれる。
【0102】
上記のICP法による移動量の推定方法を、
図4A及び
図4Bを用いて模式的に説明する。
図4Aは、移動前後に取得された位置データにより形成される投影物体像の一例を示す図である。
図4Bは、第1実施形態における移動量の推定方法を模式的に示す図である。
【0103】
以下の説明においては、移動前に取得された位置データを上記の第1位置データとし、移動後に取得された位置データを上記の第2位置データとする。従って、
図4Aの(1)に示す移動前の投影物体像が複数の第1位置データにより形成される第1投影物体像である。一方、
図4Aの(2)に示す移動後の投影物体像が複数の第2位置データにより形成される第2投影物体像である。
【0104】
位置データ取得部3により取得される位置データは、
図4A及び
図4Bに示すように、例えば自律移動体100の中心位置を原点とした座標において定義される座標値である。以下の説明においては、第1位置データを定義する座標を第1座標と呼び、第1座標の原点を第1原点Oとする。また、第2位置データ(移動位置データ)を定義する座標を第2座標と呼び、第2座標の原点を第2原点O’とする。
【0105】
なお、第1原点O及び第2原点O’は自律移動体100の中心位置に限られず、前方データ取得部31や後方データ取得部33の取り付け位置など、第1座標上における自律移動体100の中心位置からの相対位置と、第2座標上における自律移動体100の中心位置からの相対位置が同一である任意の基準点であってもよい。
【0106】
今、第1座標又は第2座標のいずれか1つの座標上に、第1原点Oと第2原点O’が一致するように複数の第1位置データと複数の第2位置データとをプロットすると、
図4Bの(1)に示すような第1投影物体像(実線)と第2投影物体像(点線)が当該1つの座標上に形成される。
【0107】
図4Bの(1)に示すように1つの座標上において2つの位置データをプロットした状態にて複数の第2位置データを平行移動すると、
図4Bの(2)に示すように、第2原点O’が第1原点Oから移動する。また、複数の第2位置データを第2原点O’の回りに回転移動すると、第2座標のX軸(X’軸)及びY軸(Y’軸)がそれぞれ、第1座標のX軸及びY軸に対して傾く。
【0108】
第1実施形態に係る推定部5312における移動量の推定方法においては、
図4Bに示すように、第1投影物体像と移動投影物体像とが一致するように第2座標が典型的には繰り返し平行移動(第2原点O’を第1原点Oから移動)され、及び/又は、第1投影物体像と移動投影物体像とが一致するように第2座標が、典型的には繰り返し、第2原点O’の回りに回転(移動)される。その後、推定部5312が、第1投影物体像と移動投影物体像とが一致したときの第2原点O’と第1原点Oとの間の距離を自律移動体100が平行移動した推定移動量と推定し、第2座標の各軸の第1座標の対応する軸に対する角度を自律移動体の回転移動の推定移動量(姿勢角変化量)と推定する。
【0109】
上記のように、ICP法においては、第1投影物体像と移動投影物体像とが一致したときに複数の第1位置データと複数の移動位置データとが全体的に一致したと判断している。これにより、ICP法においては、位置データ取得部3にて取得された第1位置データ及び/又は第2位置データにノイズが含まれているような場合でも、精度よく推定移動量を推定できる。
【0110】
以下、評価部5313が推定移動量及びデータ移動量を評価する方法として上記の(i)及び(ii)の方法を用いた場合についてそれぞれ、移動量の推定方法を具体的に説明する。
【0111】
(i)位置データを移動する毎にデータ移動量を評価する場合
最初に、移動位置データ(第2位置データ)を移動する毎にデータ移動量を評価して推定移動量を推定する方法について、
図5を用いて説明する。
図5は、移動位置データ(第2位置データ)を移動する毎にデータ移動量を評価して推定移動量を推定する方法を示すフローチャートである。
推定移動量の推定を開始すると、まず、評価部5313が、複数の移動位置データ(又は第2位置データ)を移動したデータ移動量が上記の最大走行移動量より大きいかどうかを判定する(ステップS1001)。
【0112】
なお、最初の移動量の推定においては、第2位置データの移動は実行されていない(すなわち、データ移動量は0である)ため、上記のステップS1001の判断を行うことなく、推定移動量の推定プロセスは、後述のステップS1003に進んでもよい。
【0113】
評価部5313が、今回のデータ移動量が最大走行移動量より大であると評価した場合(ステップS1001において「Yes」の場合)、すなわち、データ移動量が不適切であると評価した場合、評価部5313は、位置データ移動部5312−1に対して、前回の移動位置データ(第2位置データ)をさらに移動するように指令する(ステップS1002)。すなわち、評価部5313は、今回の推定移動量を破棄する。
【0114】
データ移動量が不適切であると判断されたとき、位置データ移動部5312−1は、今回の移動位置データを第2位置データから移動したデータ移動量とは異なるデータ移動量を用いて、次の移動位置データを算出することが好ましい。なぜなら、前回のデータ移動量は不適切なものであるため、前回のデータ移動量を用いて次の移動位置データを算出した場合、上記のステップS1001とS1002とにより処理の無限ループが生じる確率が高くなるからである。
【0115】
一方、評価部5313が、今回のデータ移動量が最大走行移動量以下であると評価した場合(ステップS1001において「No」の場合)、すなわち、データ移動量が適切であると評価した場合、評価部5313は、当該データ移動量を適切な自律移動体100の移動量として採用する。
【0116】
その後、推定移動量の推定プロセスは、今回の移動位置データと第1位置データとが一致しているかどうかを判断するプロセスに進む。具体的には、推定移動量の推定プロセスにおいて、距離算出部5312−2が、複数の第1位置データにより形成される第1投影物体像と今回の複数の移動位置データにより形成される移動投影物体像との間の距離(合計距離)を算出する(ステップS1003)。
【0117】
合計距離を算出後、第1推定部5312−3が、今回算出された合計距離と所定の閾値との比較を行って、第1投影物体像と今回の移動投影物体像とが一致するかどうかを判断する(ステップS1004)。
【0118】
合計距離が所定の閾値以下であると判断された場合、すなわち、第1投影物体像と今回の移動投影物体像とが一致すると判断された場合(ステップS1004において「Yes」の場合)、第1推定部5312−3は、今回の移動位置データが算出されるまでに第2位置データを移動した平行移動の移動量及び/又は回転移動の移動量(データ移動量)を、自律移動体100の推定移動量であると推定して、移動量の推定プロセスを終了する。
【0119】
一方、合計距離が所定の閾値より大きいために第1投影物体像と今回の移動投影物体像とが一致しないと判断された場合(ステップS1004において「No」の場合)、推定移動量の推定プロセスは、上記のステップS1002に戻る。具体的には、第1推定部5312−3が、位置データ移動部5312−1に対して、次の移動位置データを算出するように指令する。
【0120】
ステップS1004実行後の次の移動位置データの第2位置データからのデータ移動量は、例えば、ステップS1003において算出された今回の合計距離と、前回(まで)の推定移動量の推定において算出された合計距離との比較に基づいて決定できる。
【0121】
その後、合計距離が所定の閾値以下となり第1投影物体像と移動投影物体像とが一致すると判断されるまで、上記のステップS1001〜S1004が繰り返し実行される。
【0122】
上記のステップS1001〜1004を実行することにより、移動量の推定毎にデータ移動量が適切かどうかを評価し、適切なデータ移動量のみを用いて自律移動体100の推定移動量の推定を行える。その結果、不適切なデータ移動量により推定移動量の推定を行うことなく、より少ない計算量にて推定移動量を推定できる。
【0123】
(ii)複数の推定移動量を推定後に適切な推定移動量を選択する場合
次に、推定移動量をICP法により推定した後に適切な推定移動量を選択するときの移動量の推定方法について、
図6を用いて説明する。
図6は、複数の推定移動量を推定後に適切な推定移動量を選択するときの推定移動量の推定方法を示すフローチャートである。
上記の推定移動量の推定を開始すると、まず、距離算出部5312−2が、第1投影物体像と今回の複数の移動位置データ(又は複数の第2位置データ)により形成される移動投影物体像(又は第2投影物体像)との間の距離(合計距離)を算出する(ステップS1101)。ステップS1101においては、推定移動量の推定が最初の推定であるときに合計距離が算出されてもよいし、されなくてもよい。
【0124】
合計距離を算出後、第1推定部5312−3が、合計距離と所定の閾値との比較に基づいて、第1投影物体像と今回の移動投影物体像とが一致するかどうかを判断する(ステップS1102)。
合計距離が所定の閾値より大きいために第1投影物体像と今回の移動投影物体像とが一致しないと判断された場合(ステップS1102において「No」の場合)、第1推定部5312−3は、今回の移動位置データの第2位置データからの推定移動量(データ移動量)を、ステップS1101にて算出された合計距離に関連づけて記憶部51に記憶する(ステップS1103)。
【0125】
これにより、合計距離が所定の閾値以下でない場合の推定移動量を、後述するステップS1107において選択可能な推定移動量の候補として記憶部51に記憶できる。
なお、ステップS1103において、第1推定部5312−3は、今回の推定移動量が最大走行移動量よりも大きいかどうかを判断し、最大走行移動量よりも大きい推定移動量は記憶部51に記憶しないようにしてもよい。これにより、適切な推定移動量のみを記憶部51に記憶できる。
【0126】
今回の推定移動量を記憶後、第1推定部5312−3が、位置データ移動部5312−1に対して、次の移動位置データを算出するように指令する(ステップS1104)。
その後、移動量の合計距離が所定の閾値以下となり第1投影物体像と移動投影物体像とが一致すると判断されるまで、上記のステップS1101〜S1104が繰り返し実行される。
【0127】
一方、合計距離が所定の閾値以下であると判断され第1投影物体像と今回の移動投影物体像とが一致すると判断された場合(ステップS1102において「Yes」の場合)、評価部5313が、今回の移動位置データの第2位置データからの最終的に算出された推定移動量が最大走行移動量よりも大きいかどうかを判断して、最終的に算出された推定移動量を評価する(ステップS1105)。
【0128】
最終的に算出された推定移動量が最大走行移動量以下であると判断された場合(ステップS1105において「No」の場合)、評価部5313は、当該最終的に算出された推定移動量が適切な推定移動量であると評価し、当該最終的に算出された推定移動量を、所定の期間に自律移動体100が移動した移動量として採用する(ステップS1106)。その後、移動量の推定プロセスを終了する。
【0129】
一方、最終的に算出された推定移動量が最大走行移動量よりも大きいと判断された場合(ステップS1105において「Yes」の場合)、評価部5313は、当該最終的に算出された推定移動量は不適切と評価し、当該最終的に算出された推定移動量を破棄する。
そして、評価部5313は、記憶部51に記憶された推定移動量の候補から1つを選択し、選択した推定移動量を所定の期間に自律移動体100が移動した移動量として採用する(ステップS1107)。
【0130】
具体的には、評価部5313は、記憶部51に記憶された推定移動量のうち、関連づけられた合計距離が最小である推定移動量を、所定の期間に自律移動体100が移動した移動量として採用する。このとき、ステップS1103において算出された全ての推定移動量を記憶部51に記憶した場合、評価部5313は、採用した推定移動量が最大走行移動量よりも大きい場合には当該採用した推定移動量を破棄し、次に合計距離が小さい推定移動量(最大走行移動量以下の推定移動量)を所定の期間に自律移動体100が移動した移動量として採用する。その後、推定移動量の推定プロセスを終了する。
【0131】
上記のステップS1101〜S1107を実行することにより、最終的に算出された推定移動量が「最適解」ではあるけれども最大走行移動量よりも大きいために不適切な推定移動量であった場合に、記憶部51などに記憶された「次の最適解」となる適切な推定移動量を最終的な推定移動量として採用できる。
【0132】
つまり、推定移動量の推定が最終的には失敗と判断されるような場合でも、過去の推定結果の中から合理的な「次の最適解」を見つけることにより、自律移動体100の推定移動量の推定が失敗して推定移動量が推定できない場合が発生することを回避できる。
【0133】
II.自律移動体の動作
次に、本実施形態の自律移動体100の具体的な動作について、
図7を用いて説明する。
図7は、自律移動体の動作を示すフローチャートである。以下においては、自律移動体100が記憶部51などに記憶された予め決められた複数の目標点を通過しながら、最終的な目標点まで自律的に移動するときの動作について説明する。
まず、自律移動体100が自律的な移動を開始すると、まず、自律移動体100の移動前及び移動後において、位置データ取得部3が複数の位置データを取得する(ステップS1)。そして、取得した複数の位置データ(第1位置データ、第2位置データ)が位置データ記憶部5311に記憶される。
【0134】
複数の第1位置データと複数の第2位置データを取得後、
図5に示した上記のステップS1001〜S1004、及び/又は、
図6に示した上記のステップS1101〜S1107を実行して、自律移動体100の移動量を推定する(ステップS2)。
【0135】
自律移動体100の移動量を推定後、位置推定部55は、移動量推定部53から上記のステップS2において推定された推定移動量を入力し、入力した推定移動量に基づいて、上記に説明したマップマッチングによる自律移動体100の位置の推定方法を用いて、自律移動体100の現在位置を推定する(ステップS3)。
【0136】
自律移動体100の現在位置を推定後、走行制御部57は、自律移動体100が現在位置から次の目標位置まで移動するための駆動信号を算出し、走行部2のモータ23a、23bに出力する(ステップS4)。
【0137】
具体的には、走行制御部57が、位置推定部55から上記のステップS5にて推定された自律移動体100の現在位置を入力する。また、走行制御部57は、入力した現在位置に基づいて、次の目標位置を記憶部51などから読み出す。その後、走行制御部57は、自律移動体100の現在位置から、読み出した次の目標位置まで自律移動体100を移動させるための制御指令を算出する。
走行制御部57にて算出される制御指令は、例えば、現在位置から次の目標位置まで移動する間の時間と自律移動体100の速度(車輪21a、21bの回転速度、すなわち、モータ23a、23bの回転速度)との関係を表したデータとして算出される。
【0138】
制御指令を算出後、走行制御部57は、算出した制御指令に基づいて、モータ23a、23bを駆動(制御)する駆動信号を算出し、算出した駆動信号を走行部2のモータ23a、23bに出力する。
【0139】
駆動信号を走行部2に出力後、制御部5は、例えば、記憶部51に記憶されている全ての目標位置を自律移動体100が通過したかどうかを判断して、自律移動を終了するかどうかを判断する(ステップS5)。
例えば、自律移動体100が全ての目標位置を通過していないと判断して、自律移動を継続すると判断した場合(ステップS5において「No」の場合)、自律移動のプロセスはステップS1に戻り、自律移動を継続する。
【0140】
一方、自律移動体100が全ての目標位置を通過して自律移動を終了すると判断した場合(ステップS5において「Yes」の場合)、自律移動のプロセスを終了する。
【0141】
第1実施形態の移動量推定部53においては、ICP法を用いて推定された自律移動体100の推定移動量が、走行部2によって自律移動体100が走行可能な最大走行移動量に基づいて評価されている。第1実施形態においては、評価部5313は、推定移動量が最大走行移動量よりも大きくなった場合に推定移動量を不適切と評価し、当該推定移動量を破棄している。一方、推定移動量が最大走行移動量以下である場合には、当該推定移動量を適切であると評価して、当該推定移動量を自律移動体100の移動量として採用している。
【0142】
これにより、走行部2の走行性能を考慮して推定移動量が不合理(不適切)である場合には当該不適切な推定移動量を自律移動体100の移動量として採用しない(すなわち、不適切な推定移動量を破棄する)一方、走行性能を考慮して推定移動量が合理的な(適切な)場合には、当該推定移動量を自律移動体100の推定移動量として採用できる。その結果、不適切な推定移動量が自律移動体100の所定の期間における推定移動量と誤って推定される場合に、推定移動量が不適切となることを回避できる。さらに、全ての推定移動量が不適切として破棄される、すなわち推定移動量の推定が失敗して推定移動量が推定できない場合に、最大走行移動量を自律移動体100の推定移動量として採用してもよい。これにより、推定移動量が不明(不定)となることを回避できる。
【0143】
2.第2実施形態
第1実施形態において、評価部5313は、自律移動体100の最大速度と所定の期間との積を最大走行移動量としていた。しかし、上記最大走行移動量の決定方法は、これに限られない。第2実施形態においては、最大走行移動量を、車輪21a、21b(モータ23a、23b)を制御するための信号である制御信号に基づいて決定する。
【0144】
第2実施形態に係る自律移動体100は、移動量推定部53の移動量算出部531が、走行制御部57からの制御信号に基づいて最大走行移動量を算出する制御移動量推定部5314(後述)を有する以外は、第1実施形態の自律移動体100と同様の構成を備えている。従って、以下においては、第2実施形態の移動量算出部531’の構成についてのみ
図8Aを用いて説明し、他の構成や推定方法などについては説明を省略する。
【0145】
図8Aに示すように、第2実施形態の移動量算出部531’は、位置データ記憶部5311と、推定部5312と、評価部5313と、さらに、制御移動量推定部5314とを有する。
第2実施形態の移動量算出部531’の位置データ記憶部5311と、推定部5312と、評価部5313は、第1実施形態の位置データ記憶部5311と、推定部5312と、評価部5313と同様の構成及び機能を有しているので、ここでは説明を省略する。
【0146】
制御移動量推定部5314は、制御移動量を算出する。制御移動量は、自律移動体100の移動中の所定の期間において走行部2を制御する際に、走行制御部57が走行部2に出力した加速度指令値及び/又は速度指令値に基づいて算出される移動量である。
【0147】
上記のように、加速度指令値及び/又は速度指令値は、走行制御部57において算出される制御指令に含まれている。よって、制御移動量推定部5314は、走行制御部57から制御指令を入力可能となっている。
【0148】
上記の加速度指令値及び/又は速度指令値は、典型的には、モータ23a、23bを制御中の時間と、当該制御中の時間における自律移動体100の移動速度(又はモータ23a、23bの回転速度)との関係により表されている。従って、制御移動量推定部5314は、例えば、制御中の時間との関係により表された加速度指令値及び/又は速度指令値を時間により積分することにより、制御指令から自律移動体100の移動量を推定できる。
なお、加速度指令値及び/又は速度指令値などを含む制御指令に基づいて推定(算出)された移動量のことを、「制御移動量」と呼ぶことにする。
【0149】
また、第2実施形態においては、評価部5313は、上記の制御移動量を最大走行移動量とする。なぜなら、上記の制御移動量が、走行部2の物理的な影響(車輪21a、21bの滑りなど)などを考慮しない場合の自律移動体100の移動量に対応し、上記の物理的な影響などにより、自律移動体100は、制御移動量よりも少ない移動量にて移動することが多いからである。
【0150】
制御移動量を最大走行移動量とすることにより、走行指令により走行可能な最大の移動量を用いて、より厳密な推定移動量の評価が可能となる。
【0151】
また、制御移動量は、上記のように制御指令に含まれる加速度指令値及び/又は速度指令値に基づいて推定される移動量に限られない。変形例として、車輪21a、21b(モータ23a、23b)の回転数などが測定可能な場合には、車輪21a、21bの回転量に基づいて制御移動量を算出してもよい。
【0152】
制御移動量推定部5314は、
図8Bに示すように、モータ23a、23bのエンコーダからのパルス信号から車輪21a、21bの回転数を測定し、所定の期間の車輪21a、21bの回転量(回転数)に基づいて制御移動量を算出する。なお、車輪21a、21bの回転量に基づいた制御移動量のことを、車輪移動量と呼ぶことにする。
図8Bは、車輪の回転量に基づいて制御移動量を算出する移動量算出部の構成を示す図である。
【0153】
上記において、所定の期間の車輪21a、21bの回転量は、例えば、所定の期間におけるパルス信号に含まれるパルス数と、車輪21a、21bの一回転あたりのパルス信号に含まれるパルス数との比により算出できる。また、車輪移動量は、例えば、上記の車輪21a、21bの回転量と車輪21a、21bの円周長さなどとに基づいて算出できる。
【0154】
典型的に、上記の車輪移動量は、車輪21a、21bと移動面との間の滑りなどにより、実際の自律移動体100の移動量よりも大きくなる傾向にある。従って、上記の車輪移動量を評価部5313において最大走行移動量として用いても、より厳密な推定移動量の評価が可能となる。
【0155】
また、上記のように車輪21a、21bの回転量を測定可能な場合、評価部5313は、推定部5312において推定された推定移動量が不適切と判断したときに、車輪21a、21bの回転量に基づいて算出された車輪移動量を、自律移動体100の移動量と推定してもよい。車輪21a、21bの回転量に基づく車輪移動量は、車輪21a、21bの滑りなどにより実際の移動量よりも大きくなる傾向にある一方で、不適切な推定移動量よりもより走行部2に基づいた移動量であると言える。
【0156】
従って、推定移動量を不適切と判断した場合に上記の車輪移動量を自律移動体100の移動量と推定することにより、不適切な推定移動量よりもより実際に近い移動量を所定の期間の自律移動体100の移動量と推定できる。すなわち、より正確に移動量を推定できる。
なお、推定移動量を不適切と判断した場合に上記の制御移動量を自律移動体100の移動量と推定しても、上記と同様な効果が得られる。
【0157】
3.第3実施形態
上記の第1及び第2実施形態においては、推定部5312は、ICP法により推定移動量を推定していた。しかし、推定移動量を推定する方法は、ICP法に限らない。第3実施形態においては、ヒストグラムマッチング法により推定移動量を推定する。
【0158】
ヒストグラムマッチング法は、
図9に示すように、複数の第1位置データの所定の座標における座標値から生成される第1ヒストグラムと、複数の第2位置データの所定の座標における座標値から生成される第2ヒストグラムを一致するように、第1ヒストグラム又は第2ヒストグラム(本実施形態においては、第2ヒストグラム)を上記の所定の座標において移動させる方法である。
図9は、ヒストグラムマッチング法を模式的に示す図である。
【0159】
ヒストグラムマッチング法においては、第1ヒストグラムと第2ヒストグラムとが一致しているかどうかは、第1ヒストグラムと第2ヒストグラムとの一致度が最大であるかどうかにより判断される。なお、本実施形態では、相互相関関数を用いて第1ヒストグラムと第2ヒストグラムとの一致度を算出する。後述するように、相互相関関数は、第1ヒストグラム又は第2ヒストグラムの元のヒストグラムからの移動量の関数であり、ヒストグラムマッチング法においては、相互相関関数(一致度)が最大値となる上記のヒストグラムの移動量の値を推定移動量とする。なお、本実施形態においては相互相関関数を用いて上記の第1ヒストグラムと第2ヒストグラムとの一致度を算出しているが、これに限らず、正規化相互相関関数やゼロ平均正規化相互相関関数などを適宜用いて第1ヒストグラムと第2ヒストグラムの一致度を算出してもよい。
【0160】
第3実施形態においては、移動量推定部53(移動量算出部531)の推定部5312がヒストグラム生成部5312−4と第2推定部5312−5とを有している点、評価部5313がヒストグラムの移動量を最大走行移動量に基づいて評価する点が、上記の第1及び第2実施形態とは異なる。よって、以下に、移動量算出部531の構成と、第3実施形態における推定移動量の推定方法について説明する。自律移動体100のその他の構成については、第1及び第2実施形態と同じであるので、説明を省略する。
【0161】
(1)移動量算出部の構成
まず、第3実施形態の移動量算出部531’’の構成について、
図10を用いて説明する。
図10は、第3実施形態の移動量算出部の構成を示す図である。
図10に示すように、第3実施形態の移動量算出部531’’は、位置データ記憶部5311と、推定部5312’と、評価部5313’とを有する。
位置データ記憶部5311は、第1及び第2実施形態の位置データ記憶部と同様の構成及び機能を有しているので、ここでは説明を省略する。
【0162】
推定部5312’は、ヒストグラムマッチング法を用いて推定移動量を推定する。従って、推定部5312’は、ヒストグラム生成部5312−4と、第2推定部5312−5と、を有する。ヒストグラム生成部5312−4は、複数の第1位置データから第1ヒストグラムを生成し、複数の第2位置データから第2ヒストグラムを生成する。
【0163】
第1ヒストグラムは、複数の第1位置データの所定の座標の所定の座標軸における座標値から生成されるヒストグラムである。第2ヒストグラムは、複数の第2位置データの所定の座標軸における座標値から生成されるヒストグラムである。
【0164】
例えば、所定の座標が二次元の場合、複数の第1位置データ及び複数の第2位置データにおいてそれぞれ、X座標の所定の座標値が出現する頻度を所定の範囲に含まれるX座標値のそれぞれについて計数し、当該X座標値と出現頻度とを関連づけることにより、X座標値の関数である第1ヒストグラムH11(X)及び第2ヒストグラムH21(X)が生成される。
また、上記のX座標値の場合と同様にしてY座標値に対して第1ヒストグラムH11(Y)及び第2ヒストグラムH21(Y)が生成される。
【0165】
これに加えて、本実施形態においては、所定の位置データと当該所定の位置データに隣接する位置データとを結ぶ直線と所定の座標の座標軸(本実施形態においてはX軸。しかし、X軸に限られずY軸としてもよい)とが成す角度が現れる頻度を、姿勢角度θ(例えば、自律移動体100の進行方向の所定の座標のX軸となす角度として定義できる)についての第1ヒストグラムH11(θ)及びH21(θ)として生成する。
【0166】
第2推定部5312−5は、第1ヒストグラムと第2ヒストグラムとの相互相関関数を算出する。本実施形態においては、例えば、姿勢角度θのヒストグラムの相互相関関数を算出する。具体的には、H11(θ)と、H21(θ)をaだけ移動したヒストグラムとの積であるH11(θ)*H21(θ−a)をとりうるθの値だけ加算した関数(H11(θ)*H21(θ−a)のθに対する積分値であるとも言える)を相互相関関数として算出する。他の座標軸のヒストグラムに対しても同様にして相互相関関数を算出できる。
上記の相互相関関数は、
図9に示すように、第2ヒストグラムを姿勢角度θ(及び座標軸)についてaだけシフトしたヒストグラムと第1ヒストグラムとの一致度を表している。このように、相互相関関数はヒストグラムのシフト量aの関数であると言える。
【0167】
なお、X座標値やY座標値の関数である第2ヒストグラムをシフトすることは、第2位置データを当該シフト量に対応する移動量だけ平行移動して移動位置データを算出したことに対応する。一方、姿勢角度θの関数である第2ヒストグラムをシフトすることは、第2位置データを当該シフト量に対応する移動量だけ回転移動して移動位置データを算出したことに対応する。
【0168】
また、第2推定部5312−5は、上記の相互相関関数が最大値となった場合、第1ヒスグラムとa値だけシフトされた第2ヒストグラムとが最も一致したと判断し、複数の第1位置データにより形成される第1投影物体像と、複数の移動位置データにより形成される移動投影物体像とが一致したと判断する。そして、第2推定部5312−5は、相互相関関数が最大値となったときのa値(すなわち、第2ヒストグラムの移動量)を自律移動体100の移動量(推定移動量)と推定する。なお、上記の第1ヒストグラムと第2ヒストグラムとが「最も一致する」の定義としては、本実施形態で用いる「相互相関関数が最大値になる場合」の他に、例えば姿勢角度θにおいて「ある姿勢角度変化量(すなわちヒストグラムの移動量)とその前後の角度変化量とにおける相互相関関数の合計値が最大になる場合」などを適宜用いてもよい。
【0169】
評価部5313’は、上記の最大走行移動量に基づいて、相互相関関数において第1ヒストグラム又は第2ヒストグラムを移動させる移動量(すなわち、上記の例ではa値)をデータ移動量として評価する。具体的には、評価部5313’は、ヒストグラムを移動させる移動量の上限値及び/又は下限値を、最大走行移動量に基づいて決定する。
【0170】
本実施形態においては、最大走行移動量が走行部2の走行性能を考慮した自律移動体100の移動量の最大値に対応しているため、評価部5313’は、シフト量aの上限値及び下限値の絶対値を最大走行移動量と設定する。これにより、第2推定部5312−5は、最大走行移動量の範囲にてa値を走査して相互相関関数を算出し、当該a値の範囲内での相互相関関数の最大値を、実際の相互相関関数の最大値とみなす。すなわち、たとえ最大走行移動量の範囲外のa値において真の相互相関関数の最大値が存在したとしても、第2推定部5312−5は、当該最大走行移動量の範囲外のa値を、自律移動体100の推定移動量としない。
【0171】
上記のように、a値の上限値及び下限値の絶対値を最大走行移動量と設定することにより、推定移動量としては適切でない範囲において第1ヒストグラム又は第2ヒストグラムを無駄に移動させることを抑制できる。その結果、相互相関関数を用いた推定移動量の推定時間を短縮できるとともに、ヒストグラムマッチング法において走行部2の移動性能を超えるような推定移動量を算出することを抑制できる。
【0172】
(2)移動量の推定方法
次に、第3実施形態における推定移動量の推定方法について、
図11を用いて説明する。
図11は、第3実施形態における推定移動量の推定方法を示すフローチャートである。
推定移動量の推定を開始すると、まず、評価部5313’が、第2推定部5312−5におけるヒストグラムの移動量(a値)の走査範囲を設定する(ステップS2001)。上記のように、評価部5313’は、第2推定部5312−5におけるヒストグラムの座標値の走査範囲の下限値及び上限値の絶対値を最大走行移動量と設定する。
【0173】
ヒストグラムの座標値の走査範囲を設定後、ヒストグラム生成部5312−4が、上記に説明した方法にて、複数の第1位置データから第1ヒストグラムを、複数の第2位置データから第2ヒストグラムを生成する(ステップS2002)。
【0174】
ヒストグラムを生成後、第2推定部5312−5は、第1ヒストグラムと第2ヒストグラムとの相互相関関数の式を上記に説明したように、a値の関数として算出する(ステップS2003)。その後、第2推定部5312−5は、座標値の走査範囲内の所定のa値に対して相互相関関数の値を算出し、当該a値と相互相関関数の値とを関連づけて記憶部51などに記憶する。
【0175】
上記の所定のa値に対して相互相関関数を算出後、第2推定部5312−5は、設定した走査範囲内の全てのa値に対して相互相関関数を算出したかどうかを判断する(ステップS2004)。設定した走査範囲内の全てのa値に対して相互相関関数の値を算出していないと判断した場合(ステップS2004において「No」の場合)、第2推定部5312−5はa値をさらに変化させる(ステップS2005)。
a値を変化後、移動量の推定プロセスはステップS2003に戻り、前回から値を変化したa値に対して新たな相互相関関数の値を算出し記憶する。すなわち、移動量の推定プロセスは、当該a値の変化と相互相関関数の値の算出とを、走査範囲内の全てのa値に対して行うまで繰り返す。
【0176】
一方、現在のa値が設定された走査範囲の上限値又は下限値に到達して、走査範囲内の全てのa値に対して相互相関関数の値が算出されたと判断された場合(ステップS2004において「Yes」の場合)、第2推定部5312−5は、記憶されている相互相関関数の値のうち、最大値を有する相互相関関数を検索する。その後、第2推定部5312−5は、当該最大値を有する相互相関関数に関連づけられているa値を、自律移動体100の推定移動量と推定する(ステップS2006)。
【0177】
上記のように、ステップS2001において評価部5313’がヒストグラム(第2ヒストグラム)の座標値の移動範囲(走査範囲)を設定することにより、上記のステップS2003〜S2005におけるa値の変化と相互相関関数の値の算出とを繰り返す回数を、とりうる全てのa値の範囲(例えば、位置データ取得部3の位置データの検出範囲)にて相互相関関数の値を算出する場合と比較して減少できる。その結果、とりうる全てのa値にて走査する場合と比較して、推定移動量の推定時間を短縮できる。
【0178】
また、相互相関関数を算出するa値の上限値及び/下限値を最大走行移動量と設定することにより、すなわち、a値を絶対値が最大走行移動量以下となる範囲にて走査し、当該a値の範囲内の相互相関関数の最大値となるa値を自律移動体100の移動量(推定移動量)として採用することにより、最大走行移動量を越えるような合理的でないa値が推定移動量として推定されることを回避できる。
【0179】
4.第4実施形態
上記の第1〜第3実施形態においては、位置推定部55は、位置データ取得部3にて取得した複数の位置データから推定された1つの推定移動量のみを用いて、自律移動体100の位置を推定していた。しかし、これに限られず、第4実施形態においては、位置推定部55は複数の推定移動量を入力して、入力した複数の推定移動量のそれぞれに基づいて自律移動体100の位置を推定する。すなわち、第4実施形態において、位置推定部55は複数の自律移動体100の位置を推定している。
【0180】
また、第4実施形態において、位置推定部55は、推定した複数の位置のうち、最もマップマッチング結果がよかった位置を、自律移動体100の位置と推定する。従って、第4実施形態においては、位置推定部55において複数の位置推定が実行される点が、第1〜第3実施形態とは異なっている。従って、以下においては、第4実施形態の位置推定部55における位置推定方法について説明し、自律移動体100の他の構成や推定方法などについては説明を省略する。
【0181】
(1)第4実施形態における位置推定方法
以下、第4実施形態における位置推定方法について、
図12を用いて説明する。
図12は、第4実施形態における位置推定方法を示すフローチャートである。以下の説明においては、位置データ取得部3において取得した位置データを用いて上記の第1〜第3実施形態において説明したように推定した推定移動量と、車輪21a、21bの回転量に基づいて推定された自律移動体100の移動量(車輪移動量)との2つの移動量を用いて位置推定を行う場合を例にとって説明する。なお、車輪移動量は、車輪21a、21bの移動前後の回転量と車輪21a、21bの円周長さ(車輪21a、21bの半径の2π倍)などとに基づいて算出できる。
【0182】
位置推定部55が自律移動体100の位置の推定を開始すると、位置推定部55は、上記の複数の位置データを用いて推定された推定移動量と、車輪21a、21bの回転量に基づいて算出(推定)された車輪移動量とを入力する(ステップS4001)。
【0183】
推定移動量と車輪移動量とを入力後、位置推定部55は、推定移動量を第1実施形態において説明した「仮の現在位置」を算出するための移動量として用いて第1実施形態において説明した位置推定方法(マップマッチングによる位置の推定方法)により自律移動体100の位置を推定する(ステップS4002)。
それと同時、または、ステップS4002の実行後に、位置推定部55は、車輪移動量を「仮の現在位置」を算出するための移動量として用いて第1実施形態において説明した位置推定方法により自律移動体100の位置を推定する(ステップS4003)。
【0184】
推定移動量と車輪移動量とを用いて自律移動体100の位置を推定後、位置推定部55は、推定移動量を用いて位置を推定したときの事後確率分布の最大値と、車輪移動量を用いて位置を推定したときの事後確率分布の最大値のいずれが大きいかを判断する(ステップS4004)。
事後確率は、マップマッチング結果の良し悪しを示す指標であって、マップマッチングの結果がよいほど、すなわち、より正確に位置が推定されているほど大きな値となる。
【0185】
推定移動量を用いて位置を推定したときの事後確率の方が大きいと判断された場合(ステップS4004において「推定移動量」の場合)、位置推定部55は、推定移動量を用いて推定した位置を、自律移動体100の位置であると推定する(ステップS4005)。
一方、車輪移動量を用いて位置を推定したときの事後確率の方が大きいと判断された場合(ステップS4004において「車輪移動量」の場合)、位置推定部55は、車輪移動量を用いて推定した位置を、自律移動体100の位置であると推定する(ステップS4006)。その後、位置推定プロセスを終了する。
【0186】
上記のように、複数(2つとは限らない)の移動量の推定値を用いて自律移動体100の位置を推定し、事後確率分布の最大値が最も大きい自律移動体100の推定位置を、実際の自律移動体100の位置と推定することにより、1つの移動量を用いるよりも、より精度よく自律移動体100の位置を推定できる。
【0187】
5.他の実施形態
以上、本発明の一実施形態について説明したが、本発明は上記実施形態に限定されるものではなく、発明の要旨を逸脱しない範囲で種々の変更が可能である。特に、本明細書に書かれた複数の実施形態及び変形例は必要に応じて任意に組み合せ可能である。例えば、上記の第1実施形態〜第4実施形態をすべて組み合わせてもよい。これにより、上記の第1実施形態〜第4実施形態において説明した全ての効果を、自律移動体100が有することができる。
【0188】
(A)走行部の他の実施形態
上記の第1実施形態における走行部2は、二輪差動型の走行部であった。しかし、これに限られず、オムニホイールなどの他の車輪を有する走行部を用いてもよい。また、走行部2は車輪21a、21bの回転により移動するものに限られず、車輪以外の他のアクチュエータの動きにより移動可能なものであってもよい。
【0189】
(B)移動量推定部の他の実施形態
上記の第1〜第4実施形態において、車輪21a、21bの回転量に基づいて車輪移動量が算出された場合に、算出した車輪移動量を特に補正していなかった。しかし、これに限られず、車輪移動量を、複数の位置データを用いて推定した推定移動量を用いて補正してもよい。これにより、例えば、車輪21a、21bの使用により車輪21a、21bの径が変化した場合でも、車輪21a、21bの回転量に基づいて正確に自律移動体100の移動量を推定できる。
【0190】
(C)移動量の算出方法の他の実施形態
上記の第1〜第4実施形態において、移動量推定部53はICP法又はヒストグラムマッチング法のいずれか1つのみを用いて複数の位置データから移動量を推定していた。しかし、これに限られない。移動量推定部53において、ICP法と上記のヒストグラムマッチング法とを組み合わせて、複数の位置データから移動量を推定してもよい。
【0191】
例えば、まず、ヒストグラムマッチング法により複数の位置データを用いて、自律移動体100の回転運動の移動量(姿勢角変化)を算出し、その後、ICP法により平行移動(並進運動)の移動量を算出してもよい。これにより、並進運動の移動量を推定する場合に、回転中心がずれた状態にて並進運動の移動量が推定されることを低減できる。
【0192】
(D)本体部の他の実施形態
上記の第1〜第4実施形態に係る自律移動体100の本体部1には、位置データ取得部3の位置データ検出可能領域に干渉するような部材は特に取り付けられていなかった。しかし、これに限られず、本体部1に、位置データ取得部3の位置データ検出可能領域に少なくとも一部が入るように、既知の形状の干渉部材を取り付けてもよい。
【0193】
本体部1に、少なくとも一部が位置データ検出可能領域に入るように干渉部材を取り付けることにより、位置データ取得部3が正常に動作しているかどうかを確認できる。例えば、自律移動体100の周囲に壁や障害物などの物体が存在しない場合などに、干渉部材の一部の形状に対応する投影物体像が複数の位置データのいくつかにより形成されていれば、位置データ取得部3の異常により位置データが取得されないのではなく、自律移動体100が、物体が存在しない広い空間を移動中であると判断できる。
【0194】
(E)最大走行移動量についての他の実施形態
上記の第1〜第4実施形態において、最大走行移動量の値の範囲に幅を持たせていなかった。しかし、これに限られず、上記の最大走行移動量の値にある程度の幅を持たせてもよい。これにより、推定移動量が若干最大走行移動量を超えても、その超過量が許容範囲(ある程度の幅以内)であれば、当該推定移動量を適切な推定移動量と判断できる。また、最大走行移動量が有する上記の幅を、例えば、走行状態に応じて異ならせてもよい。例えば、自律移動体100の移動の様態が前進移動に限られることが分かっている場合、後進方向の最大走行移動量を小さくしてもよい。これにより、自律移動体100が、本来移動するはずのない後進方向に対して移動したと推定された場合に、当該推定移動量をより不適切な推定移動量と判断できる。
【0195】
(F)ヒストグラムマッチング法により推定された移動量の評価方法の他の実施形態
上記の第3実施形態において、評価部5313’は、相互相関関数の上記のa値の走査範囲の上限値及び下限値の絶対値を最大走行移動量と設定していた。つまり、第3実施形態においては、適切な移動量の範囲内でa値が走査されていた。
しかし、ヒストグラムマッチング法により推定された移動量の評価方法は、これに限られない。例えば、相互相関関数のa値の走査範囲には特に制限を設けず、相互相関関数が最大値となるa値(の絶対値)が最大走行移動量よりも大きいかどうかを評価部5313’が評価してもよい。
【0196】
このとき、評価部5313’は、例えば、相互相関関数が最大値となるa値(の絶対値)が最大走行移動量よりも大きくなる場合に当該a値を不適切と評価して破棄する一方、a値(の絶対値)が最大走行移動量以下の場合には当該a値を適切と評価して自律移動体100の移動量として採用できる。
【0197】
または、上記の第1実施形態において説明したように、a値(の絶対値)が最大走行移動量以下である場合の相互相関関数の算出値を記憶部51などに記憶し、最終的に算出されたa値(の絶対値)が最大走行移動量よりも大きい場合に、記憶したa値のうち相互相関関数の算出値が最大のa値を自律移動体100の移動量として採用してもよい。
【0198】
上記のように、相互相関関数が最大となるa値が最大走行移動量よりも大きいかどうかに基づいてa値が適切かどうかを評価することによっても、ヒストグラムマッチング法による適切な推定移動量を自律移動体100の移動量とできる。