【実施例】
【0018】
実施例の自律移動体(以下では、移動体という。)について説明する。移動体は、左右に車輪を有する車輪駆動型の移動体であり、所定の領域内を自律的に走行する。左右の車輪は独立して駆動され、左右の車輪の回転速度を変えることで、移動体は進行方向を変えることができる。移動体は、後記するように、移動体が存在している位置を推定する処理を繰り返して実行する。各回の処理をステップという。後述する「現在のステップ」は、移動体が実施中のステップを意味する。また、「1つ前のステップ」は「現在のステップから1つ前のステップ」をいい、「1つ後の(次の)ステップ」は「現在のステップから1つ後の(次の)ステップ」を意味する。移動体は、ステップごとに計算される推定位置に基づいて、スタート地点から目標位置まで走行する。なお移動体は、自身の位置と自身が向いている方位を推定するが、以下では、移動体の位置と方位をまとめて「位置」と称する。
【0019】
図1に示すように、移動体10は、エンコーダ12と、レーザレンジファインダ14(以下、LRF14と称する)と、三角測量センサ16と、演算装置18を備える。
【0020】
移動体10の左輪を駆動するモータと右輪を駆動するモータの各々にエンコーダ12が設けられ、各エンコーダ12は左輪回転角度と右輪回転角度を独立に検出する。一対のエンコーダ12で検出された左輪回転角度と右輪回転角度が、演算装置18に入力される。
【0021】
LRF14は、レーザ光を射出し、射出したレーザ光が物体で反射して返ってくるまでの時間を観測する。LRF14で観測される時間から、LRF14(即ち、移動体10)から物体までの距離が観測される。またLRF14からレーザ光を射出する方位角(移動体に固定された軸からの回転角)は時間的に変化し、所定の方位角度範囲内を走査する。LRF14は、移動体10に対する方位角に対応づけて障害物までの距離を観測することができる。以下、移動体10から障害物までの距離と方位を「観測結果」と称する。LRF14で取得した観測結果は、演算装置18に入力される。LRF14は、移動体10に固定された方向に対して所定の角度範囲内(例えば、左右方向にそれぞれ60°の角度範囲内)でレーザ光の射出方向を走査する。
三角測量センサ16については、後記する。
【0022】
演算装置18は、演算処理を行うCPU20、演算処理のデータが一時的に記憶されるRAM22、及びCPUによって実行される演算プログラム等が記憶されたROM24を備えている。ROM24の一部はEEPROMであり、書き換え可能となっている。
演算装置18は、後述する様々な処理を実行する。CPU20がROM24に記憶された演算プログラムを実行することで、CPU20は、
図2に示す地図依存式推定位置計算部28、地図不依存式推定位置計算部29、
図3に示す位置誤差計算部34等として機能する。なお、演算装置18による移動体10の走行制御については、公知の方法で行うことができるため、ここでは、演算装置18による推定位置計算処理と環境地図更新処理等について詳細に説明する。
【0023】
(地図依存式の推定位置の計算処理)
図2に示すように、演算装置18は、環境地図記憶部26と、地図依存式推定位置計算部(第1計算部と略称する)28を備える。第1計算部28は、時間間隔をおいて繰り返して移動体10の推定位置を計算する。
【0024】
環境地図記憶部26は、ROM24のEEPROMに記憶されており、移動領域内に存在する物体の輪郭の位置(x,y座標)と高さ(z座標)を示す情報が記録された環境地図を記憶している。環境地図に記憶される物体としては、移動の障害となる壁、家具等が含まれる。後記するように、環境地図は更新される。環境地図を用意した時点では存在していなかった障害物が移動して移動領域内に存在するような場合には、環境地図に障害物の存在を追加する更新がされる。あるいは、環境地図を用意した時点では移動領域内に存在していた障害物が無くなったなった場合には、環境地図から障害物の存在を削除する更新がされる。
【0025】
第1計算部28は、時間間隔をおいて繰り返してモンテカルロ位置同定法(Monte Carlo Localization(以下、MCLと称する))を実行し、移動体10の推定位置を計算する。
MCLによって地図に依存する推定位置を計算する処理では、
(1)1つ前のステップにおいて計算された統合推定位置を用いる。現在のステップが、移動体10がスタート地点から移動を開始してからの最初のステップであるときは、上記「1つ前のステップにおいて計算された統合推定位置」はスタート地点の位置を表す。
(2)1つ前のステップにおいて計算された統合推定位置を、移動体10の運動モデルに従って移動させ、現在のステップの実行時における推定位置を計算する。この段階では、運動モデルに従って推定位置を計算する。
(3)前記(2)の推定位置を中心にし、その周囲に分布しているパーティクル集合を生成する。ここでいうパーティクルとは、その位置にあると仮定して計算を進める仮定位置のことをいい、移動体10のx座標、y座標、及びヨー角を備える。
(4)次に、環境地図記憶部26から取得した環境地図と、パーティクルの位置とヨー角から、パーティクル毎に、方位角に対する障害物までの距離を計算する。すなわち、計算結果を求める。
(5)LRF14も、方位角に対する障害物までの距離を観測している。すなわち、観測結果が得られている。
(6)そこで、前記(4)で計算した方位角に対する障害物までの距離の分布(計算結果)と、前記(5)で観測した方位角に対する障害物までの距離の分布(観測結果)を対比する。
(7)環境地図が正確なものであれば、特定の1個のパーティクルにおいて(4)の計算結果と(5)の観察結果が一致し、その他のパーティクルの全部で(4)と(5)が不一致となる。この場合、移動体10がその特定のパーティクルに位置している確率が高く、他のパーティクルに位置している確率が低いといえる。すなわち、(4)の計算結果と(5)の観察結果の一致度から、移動体10が各パーティクルに位置している確率を計算することができる。
(8)パーティクル毎に確率を計算すれば、確率の分布を得ることができる。その確率分布がピークとなる位置に、移動体10が位置しているとすることができる。
(9)パーティクルの選択が不適切であり、正しい推定位置が計算できない場合がある。その場合は、確率分布において、高い確率が分布している領域ではパーティクル密度を上げ、低い確率が分布している領域ではパーティクル密度を下げる処理をして、(4)以降の処理を繰り返す。これによって、パーティクルの分布が適正化され、正しい推定位置が計算可能となる。
【0026】
前記では、(2)によってパーティクルの中心位置を定めている。それに対して、パーティクルの中心位置を定める基準が得られない場合には、移動領域の全域に一様に広がるパーティクル群を仮定して計算を始めてもよい。前記したパーティクル群の適正化処理によって、パーティクルの分布が適正化され、正しい推定位置が計算可能となる。
前記(2)に代えて、1つ前のステップにおいて計算された統合推定位置に、最新1ステップ分の移動ベクトル(エンコーダ12から得られる)を加算した推定位置を、パーティクル群の中央位置としてもよい。この場合も、前記(8)で計算される推定位置は、地図に依存して推定した位置となる。
【0027】
第1計算部28は、パーティクルの集合中に移動体10の実際位置(以下では、真値とも称する)が含まれ、いずれかのパーティクルにおける計算結果が観測結果に極めて近くなるまで、上記の処理を繰り返す。1回のステップ中で、パーティクル集合の分布が複数回更新されることがある。これにより、第1計算部28において、現在のステップにおける移動体10の推定位置が計算される。この推定位置は、環境地図から推定されたものである。
【0028】
(学習データ生成処理)
移動体10は、自律走行を行う前に、学習走行と呼ばれる走行を行う。以下では、移動体10の学習走行、及び学習走行時に得られるデータを元に学習データを生成する処理について説明する。なお、学習データとは、後述する信憑度計算式を生成する処理に用いられるデータである。
【0029】
図3に示すように、演算装置18は、自律走行に使用する各部の他に、真値計算用地図記憶部30と、真値計算部32と、位置誤差計算部34と、学習データ生成部36と、学習データ記憶部38を備える。環境地図記憶部26には、移動体10が学習走行を行う領域の環境地図が記憶されている。移動体10が学習走行を行う領域は、自律走行を行う領域と異なっていてもよい。学習走行時と自律走行時とで移動領域が異なる場合は、環境地図記憶部26は、両方の移動領域の環境地図を記憶している。以下では、学習走行時の移動領域と自律走行時の移動領域とを区別するために、前者を「第1領域」と称し、後者を「第2領域」と称する。また、第1領域の環境地図を「第1環境地図」と称し、自律走行領域の環境地図を「第2環境地図」と称する。
【0030】
図4は、移動体10が学習走行を行う第1領域40の一例を示す。
図4に示すように、第1領域40の一部には、障害物である塀42,43が配置されている。塀42,43の対向面(内側の面)にはリフレクタ44が等間隔で固定されている。学習走行時の移動体10の走行は、リモートコントローラ(リモコン)で制御される。破線は、学習走行時の移動体10の走行ルートを示す。破線で示すように、移動体10は、塀42,43が配置されていない領域、及び対向する塀42,43の間の領域の双方を走行する。
【0031】
環境地図記憶部26に記憶されている第1環境地図は完全なものでなく、例えば塀42は記憶されているものの、塀43は記憶されていない。学習走行と学習データ生成処理は不完全な環境地図のもとで実施する。
【0032】
真値計算用地図記憶部30は、ROM24に設けられており、塀42,43とリフレクタ44の位置が記録された地図を記憶している。真値計算用地図記憶部30に記憶されている環境地図は正確であって、更新を要しない。
【0033】
三角測量センサ16は、ほぼ全方位(360°)にレーザ光を射出し、リフレクタ44で反射して返ってくるレーザ光を検知することで、リフレクタ44までの距離と移動体10に対するリフレクタ44の方位角を観測し、これらの情報を演算装置18の真値計算部32に出力する。三角測量センサ16は、移動体10に搭載されている。
【0034】
真値計算部32は、三角測量センサ16から取得した距離と方位角の情報から、リフレクタ44に対する移動体10の相対位置を特定する。真値計算用地図記憶部30から取得した地図にはリフレクタ44の位置が記録されているため、当該地図に移動体10の前記相対位置をマッピングすることで、当該地図上における移動体10の位置を特定できる。このようにして、真値計算部32は、移動体10の実際の位置(真値)を計算する。この処理はCPU20で行われる。移動体10の真値は、位置誤差計算部34に出力される。
【0035】
一方、第1計算部28は、不完全な第1環境地図を用いて移動体10の推定位置を計算し、その結果を位置誤差計算部34に出力する。推定位置計算処理と真値計算処理は同じタイミングで行われる。また、第1計算部28は、最新のパーティクル集合(即ち、推定位置を計算したときのパーティクル集合)の分布から、x方向の標準偏差σ
x、y方向の標準偏差σ
y、及びパーティクル毎に計算される確率の最大値w
maxを計算し、これらの値(標準偏差σ
x、標準偏差σ
y、最大確率w
max)を学習データ生成部36に出力する。
【0036】
位置誤差計算部34は、真値計算部32から取得した真値と、第1計算部28から取得した推定位置との差(位置誤差)を計算し、学習データ生成部36に出力する。この処理はCPU20で行われる。
【0037】
学習データ生成部36は、位置誤差計算部34から取得した位置誤差が15cm以下の場合は、第1計算部28が計算した推定位置が真値から許容範囲内である(すなわち位置の推定に成功した)とみなし、推定結果を「OK」と分類する。一方、位置誤差が15cmを超える場合は、第1計算部28が計算した推定位置が真値から許容範囲以上ずれた(すなわち位置の推定に失敗した)とみなし、推定結果を「NG」と分類する。学習走行では、位置誤差が「NG」と分類される場合を意図的に作り出している。即ち、実際の第1領域40には、第1環境地図に記録されていない塀43が配置されている。このため、移動体10が塀42,43の間を走行する際は、LRF14により取得される観測結果と、パーティクル毎に計算する計算結果とのマッチング度が低くなり、適合パーティクルの発見が困難になる。これは、仮にパーティクル集合の中に真値が含まれていたとしても、移動体10は真値と一致するパーティクルを適合パーティクルとして発見できないことを意味する。このため、移動体10が塀42,43の間を走行する場合は、真値とは異なるパーティクルを適合パーティクルとみなし、そのパーティクルを推定位置と計算する可能性が高くなる。この結果、推定位置と真値との位置誤差が大きくなり、その位置誤差が15cmを超える場合は「NG」と分類されることになる。
【0038】
このように、学習データ生成部36では、位置誤差を基準とし、即ち、「真値」に対する移動体10の推定位置のずれ量を基準として、地図に依存する推定結果の分類が行われる。本実施例では、位置の推定結果がOKとなる許容範囲の基準値を15cmに設定したが、基準値はこれに限られない。許容範囲の基準値を低くするほど、信憑度計算式による予測精度を高くすることができる。
【0039】
図5は、学習データ生成部36により生成される学習データの例を示す。
図5に示すように、学習データ生成部36は、地図に依存する推定位置の計算時刻と、位置誤差計算部34から取得した位置誤差と、推定位置の計算結果を分類した結果と、第1計算部28から取得した3つの変数(標準偏差σ
x、標準偏差σ
y、最大確率w
max)とを関連付けたデータセットを時系列に並べたデータセット群(学習データ)を生成する(なおσ
x、σ
y、w
maxの欄に示したアルファベットは、実際には数値である)。学習データを参照することで、各時刻における位置誤差、推定位置の計算結果の成功/失敗、及び推定位置が計算されたときの変数を知ることができる。例えば、時刻t=2sでは、推定位置と真値との位置誤差は7cmであるため、推定位置計算結果は「OK」と分類されており、そのときの変数σ
x、σ
y、w
maxは、それぞれb、g、lであることがわかる。また、時刻t=10sでは、推定位置と真値との位置誤差は20cmであるため、推定位置計算結果は「NG」と分類されており、そのときの変数σ
x、σ
y、w
maxは、それぞれc、h、mであることがわかる。学習データ生成処理はCPU20で行われる。
【0040】
学習データ記憶部38は、ROM24に設けられており、学習データ生成部36で生成された学習データを記憶する。学習データ記憶部38に記憶された学習データは、後述する信憑度計算式生成部46に出力される。このように、移動体10自身が学習データを記憶しておくことにより、移動体10に不具合が生じた場合等に、学習データのログを分析してエラーがないかどうか検証することが可能となる。このため、移動体10に不具合が生じた場合にその原因を発見し易くなり、移動体10の信頼性を向上させることができる。なお、本実施例では、データセットに推定位置の計算時刻が含まれているが、この構成に限られない。例えば、データセットは時刻を含んでいなくてもよく、学習データは、データセットが時刻とは無関係に並べられたデータ群により構成されていてもよい。
【0041】
(信憑度計算式生成処理)
移動体10が信憑度計算式を生成する処理について説明する。
図6に示すように、演算装置18は、上述した処理で使用される各部の他に、信憑度計算式生成部46と、信憑度計算式記憶部48を備える。
【0042】
信憑度計算式生成部46は、学習データ記憶部38に記憶されている学習データを取得し、学習データをロジスティック回帰分析して、信憑度計算式を生成する。ロジスティック回帰分析は多変量解析の一手法であり、結果が2値の場合に、その結果の起きる確率を予測できる統計的な回帰モデルを生成する手法である。具体的には、次の数式で表されるロジスティックモデル;
【数1】
(Z:目的変数、X
1〜X
3:説明変数、b
0:定数、b
1〜b
3:回帰係数)に学習データを適用して、定数b
0及び回帰係数b
1〜b
3の値を求める。学習データを適用する際は、説明変数X
1、X
2、X
3に学習データの標準偏差σ
x、標準偏差σ
y、最大確率w
maxのそれぞれ用いる。これにより、次の数式で表される信憑度計算式;
【数2】
が生成される(
図7参照)。pの値は、第1計算部28により計算される推定位置がNGとなる確率である。pはまた、計算された推定位置の真値からのずれ量の大きさを示す尺度でもあり、ずれ量が大きいほど大きくなる。本明細書ではpを不信度という。不信度pが所定値よりも大きくなったことは、計算した推定位置の信憑度が所定値より低下したことを意味する。
説明変数X
1〜X
3に用いる変数(σ
x、σ
y、w
max)は互いに独立しているため、回帰係数b
1〜b
3は、項目間の影響が排除された係数となる。従って、不信度を算出する際に、より正確に項目ごとの影響度を量ることができる。信憑度計算式生成処理はCPU20で行われる。
信憑度計算式記憶部48は、ROM24に設けられており、信憑度計算式生成部46で生成された信憑度計算式を記憶する。
【0043】
(信憑度計算処理)
移動体10が不信度pを計算する処理について説明する。演算装置18は、上述した処理で使用される各部の他に、信憑度計算部50を備える(
図2参照)。
【0044】
移動体10が自律走行領域において自律走行を行う際は、第1計算部28が、自律走行時用環境地図(第2環境地図)を用いて推定位置を計算する。第1計算部28で現在の推定位置が計算されたときの3つの変数σ
x、σ
y、w
maxが、信憑度計算部50に出力される。
【0045】
信憑度計算部50は、第1計算部28から取得した3つの変数σ
x、σ
y、w
maxを、信憑度計算式記憶部48から取得した信憑度計算式のX
1、X
2、X
3にそれぞれ入力して、現在のステップにおける不信度pを求める。不信度pは、ステップごとに計算される。この処理はCPU20で行われる。信憑度計算部50で算出された不信度pは、地図更新判断部58(後述)に出力される。なお、移動体10がスタート地点から移動を開始してからの最初のステップでは、判定の基準となる不信度pがまだ算出されていない。不信度pの計算は、2回目以降のステップから実施される。
不信度pは、重み係数計算部52にも伝えられる。これについては後記する。
【0046】
(地図に依存しない推定位置の計算処理)
図2に示すように、演算装置18は、地図に依存する推定位置を計算する第1計算部28の他に、地図に依存しない推定位置を計算する地図不依存式推定位置計算部(第2計算部と略称する)29と、統合推定位置計算部54と、統合推定位置記憶部56を備える。統合推定位置記憶部56は、RAM22に設けられており、統合推定位置計算部54によって推定された統合推定位置(厳密には、環境地図上の座標)をステップごとに記憶している。第2計算部29は、統合推定位置記憶部56に記憶されている統合推定位置のうち、1つ前のステップにおける統合推定位置に、移動体10の1ステップ分の移動量ベクトルを加算することにより算出される値を、現在のステップにおける移動体10の位置と推定する。移動量ベクトルはエンコーダ12から入手可能である。上記の説明から明らかなように、第2計算部29は、直接的には環境地図を用いずに推定位置を計算する。なお、第2計算部29が計算した推定位置に、環境地図に依存した要素が含まれる場合がある。1つ前のステップにおける統合推定位置に、地図に依存する要素が含まれているからである。
【0047】
なお、上記の「1つ前のステップにおける統合推定位置」は、別言すれば、統合推定位置記憶部56に記憶されている統合推定位置の中で最も新しい統合推定位置である。なお現在のステップが、移動体10がスタート地点から移動を開始してから最初のステップであるときは、「1つ前のステップにおける統合推定位置」とは、スタート地点の位置を意味する。
【0048】
(統合推定位置計算処理)
移動体10は、第2領域において自律走行を行う前に、上述した学習データ生成処理及び信憑度計算式生成処理を実施する。そして、移動体10が自律走行を行う際は、信憑度計算式から算出した信憑度に基づいて重み係数を計算し、その重み係数を用いて統合推定位置を計算する。以下では、移動体10の自律走行時における統合推定位置計算処理について説明する。
図2に示すように、演算装置18は、上述した処理で使用される各部の他に、重み係数計算式記憶部51と、重み係数計算部52と、統合推定位置計算部54を備える。
【0049】
重み係数計算式記憶部51は、ROM24に設けられており、予め設定された重み係数計算式を記憶している。重み係数計算式は、次のシグモイド関数;
【数3】
(p:不信度、α:重み係数)で表される(
図8参照(後述))。
重み係数計算部52は、重み係数計算式記憶部51から取得した重み係数計算式に、信憑度計算部50から取得した現在のステップにおける不信度pを入力して重み係数αを求める。この処理はCPU20で行われる。重み係数計算部52で算出された重み係数αは、統合推定位置計算部54に出力される。
【0050】
統合推定位置計算部54は、重み係数計算部52から取得した重み係数αを用いて、第1計算部28から取得した推定位置(地図に依存する推定位置)と第2計算部29から取得した推定位置(地図に依存しない推定位置)の重み付き平均値を算出し、その値を統合推定位置とする。具体的には、統合推定位置計算部54は、次の数式;
【数4】
(r
f:統合推定位置、r
1:地図に依存して推定した位置、r
2:地図に依存しないで推定した位置)に従って計算を行い、移動体10の現在のステップにおける統合推定位置を算出する。重み係数αは「地図に依存する推定位置」の重み係数として使用され、1から重み係数αを減じた係数1−αは「地図に依存しない推定位置」の重み係数として使用される。この処理は、CPU20で行われる。統合推定位置計算部54で算出された統合推定位置は、統合推定位置記憶部56と観測点群生成部60(後述)に出力される。統合推定位置記憶部56に出力されて記憶される統合推定位置は、1つ後のステップにおける地図に依存しない推定位置の計算処理に用いられる。
【0051】
ここで、上記の関数(数3)及び
図8を参照して重み係数計算式について説明する。重み係数計算式により算出される重み係数αは、不信度pの関数となっている。地図に依存する推定位置の重み係数である重み係数αは、不信度pが大きくなるにつれて(即ち、地図に依存する推定位置の推定精度が低下するにつれて)減少している。具体的には、重み係数αの値は、不信度pが0<p<0.1を満たすときは1に近似しており、p=0.2のときは0.5であり、0.3<pを満たすときは0に近似している。このため、統合推定位置は、不信度pが10%未満のときは「地図に依存する推定位置」とほぼ一致し、不信度pが20%であるときは「地図に依存する推定位置」と「地図に依存しない推定位置」の中間地点となり、不信度が30%超のときは「地図に依存しない推定位置」とほぼ一致する。なお、重み係数計算式が用いする定数の値は、上記の値(50、0.2)に限られない。また、重み係数計算式はシグモイド関数に限られない。重み係数αの値を不信度pの値に対してどのように対応付けるかによって、種々の関数を用いることができる。
【0052】
(地図更新判断処理)
次に、地図更新判断処理について説明する。移動体10が、自律走行領域において自律走行用環境地図(第2環境地図)には記録されていない障害物の付近を走行すると、LRF14で取得される観測結果と環境地図から計算される計算結果とのマッチング度が低くなるため、「地図に依存する推定位置」の推定精度が低下する。このため、不信度pが高くなる。即ち、たとえパーティクル集合の中に真値が含まれていたとしても、移動体10が真値に相当するパーティクルを適合パーティクルと見なすことができず、別のパーティクルを適合パーティクルと見なすことになる。実施例の移動体10では、第1計算部28は、MCLの手法に則り、地図に依存する推定位置を計算する。このため、移動体10が第2環境地図に記録されていない障害物の付近を走行する場合は、第1計算部28により計算される地図に依存する推定位置が真値から離れていくことになり、最終的にはパーティクル集合に真値が含まれなくなる。一旦パーティクル集合に真値が含まれなくなると、この後でたとえ移動体10が自律走行領域(第2領域)において正しい環境地図が記憶されている領域を走行するようになったとしても(即ち、有用な観測結果を取得できるようになったとしても)、MCLの手法では、真値が含まれる範囲にパーティクル集合を生成することが不可能になることがある。即ち、第1計算部28で、精度良く地図に依存する推定位置を計算することが不可能になることがある。地図更新判断部58は、このような事態を避けるために、不信度pが高くなっていき、不信度pが20%を超えると、環境地図の更新指令を観測点群生成部60に出力する。すなわち、地図更新判断部58は、不信度pが0<p≦0.2を満たすとき(地図に依存する推定位置の信憑度が高いとき)は、環境地図の更新指令を出力せず、0.2<pを満たすとき(地図に依存する推定位置の信憑度が低いとき)は、観測点群生成部60に環境地図の更新指令を出力する。この処理はCPU20で行われる。なお、本実施例では、第1計算部28の重みと第2計算部29の重みが50:50となる値(すなわち、p=0.2)を環境地図の更新指令の閾値としているが、環境地図の更新を実行するか否かを判定する基準となる不信度pは、上記に限られない。例えば、20%未満であってもよいし、20%超であってもよい。
【0053】
(環境地図更新処理)
次に、演算装置18が環境地図を更新する処理の一例について
図9、10を参照して説明する。まず、地図点群生成部62が、移動体10が記憶している環境地図(
図10中のA参照)をxy座標値で表される地図点群(
図10中のB参照)に変換する(S10)。次に、観測点群生成部60が、LRF14による現在の観測結果をxy座標値で表される観測点群(
図10中のC参照)に変換する(S12)。観測点群生成部60には、統合推定位置計算部54から、現在のステップにおける統合推定位置が入力されている。観測点群生成部60は、この統合推定位置に基づいてLRF14による観測結果を環境地図座標系(xy座標系)へ変換することにより、観測点群を生成する。ステップS12、S14で変換された地図点群及び観測点群は、点群合わせ込み部64にそれぞれ出力される。なお、ステップS12とステップS14の処理は、いずれを先に実行するように演算装置18を構成してもよい。
【0054】
次に、点群合わせ込み部64は、地図点群と観測点群を合わせ込む(S16)。点群の合わせ込みには、ICP(Iterative Closest Point)アルゴリズムを用いることができる。ICPは、2つの異なる点群の距離の二乗和を最小化することによりマッチングを行う技術である。なお、ICPは公知の技術であるため、詳細な説明は省略する。ICPによりマッチングされた点群(
図10中のD参照)は、環境地図更新部66に出力される。
【0055】
観測点群と地図点群をマッチングさせると、環境の変化分を表す領域が現れる。実際には、環境地図には記録されていても観測されなかった障害物と、環境地図には記憶されていなくても観測された障害物があり得る。環境地図更新部66は、それぞれの変化分を移動体10が記憶している環境地図に反映させることによって、最新環境地図を生成する。具体的には、まず、環境地図更新部66は、移動体10が記憶する現在の環境地図から除去された物体をグリッドマップに反映させるために、freeグリッド(
図10中のE参照)を生成する(S16)。freeグリッドとは、障害物が存在しないことを表したグリッドマップ上の格子のことであり、現在の位置(すなわち、現在のステップの統合推定位置)とLRF14により観測された観測点群との間の空間がfreeグリッド化される。すなわち、ICPにより、地図点群にマッチングした観測点群をグリッド化し、移動体10の位置(位置)から観測点群までには障害物がないもの(空白領域)としてfreeグリッドを生成する。
【0056】
次に、環境地図更新部66は、移動体10が記憶する現在の環境地図に追加した障害体をグリッドマップに反映するために、occupiedグリッド(
図10中のF参照)を生成する(S18)。occupiedグリッドとは、物体が存在することを表したグリッドマップ上の格子のことであり、地図点群に存在しないが観測点群に存在する変化分の点群がoccupiedグリッド化される。すなわち、ICPによるマッチングで、地図点群に無くて観測点群に存在する点群(差分点群)を抽出し、抽出された点群をグリッド化することによってoccupiedグリッドを生成する。
【0057】
次に、環境地図更新部66は、生成したfreeグリッド及びoccupiedグリッドを移動体10が記憶する環境地図に重畳することにより、最新の環境地図(
図10中のG参照)を生成する(S20)。以上の処理を実行することにより、最新環境地図が生成される。環境地図更新部66は、移動体10が現在記憶している環境地図を最新環境地図へ更新することにより(S22)、処理を終了する。
【0058】
更新された環境地図(最新環境地図)は、第1計算部28にて地図に依存する推定位置を推定する際に再び用いられる。このとき、LRF14による観測結果と最新環境地図とのマッチングが正確に行われ、第1計算部28の不信度は低下する(信憑度が向上する)。そのため、地図更新判断部58による地図更新指令は出力されず、統合推定位置計算部54からは地図に依存する推定位置を重視した(すなわち、本実施例では不信度pが20%未満)となる統合推定位置が推定される。なお、環境地図の更新処理の態様は、上記のICPに限られない。信憑度が所定値より低下した場合に、環境地図を更新する処理を開始する形態であれば、様々な公知の手法を用いることができる。
【0059】
実施例の移動体10の作用効果を説明する。この移動体10では、地図に依存する推定位置の信憑度が所定値より低下したとき(不信度pが所定値より上昇したとき)に、障害物までの距離と方位角の観測結果に基づいて最新の環境地図を生成する。すなわち、第1計算部28の推定位置の信憑度が低下したときに、環境地図を更新する処理を行う。したがって、オペレータの操作を要さず、移動体10自体によって環境地図の更新の可否を判断することができる。
【0060】
また、観測結果と環境地図の合わせ込みの際に、グリッドマップではなく、座標系に変換した点群を用いるため、合わせ込みによる誤差を低減することができる。また、2種類の推定位置(地図に依存する推定位置と地図に依存しない推定位置)の混成結果を用いて統合推定位置を推定することにより、観測点群を精度良く生成することができる。このため、観測点群と地図点群との乖離が小さくなり、ICPによる点群マッチングの精度を向上させることができる。
【0061】
また、統合推定位置計算部54で移動体10の統合推定位置を推定する際に用いられる重み係数αが、不信度pの関数となっている。不信度pを算出する信憑度計算式は、移動体10が学習走行することで取得される学習データを、機械学習の一手法であるロジスティック回帰分析の手法を用いて解析することにより得られる式である。このため、重み係数αは、信憑度計算式以外の要因によって影響を受けることがない。従って、例えば移動領域が変更したり、移動体10の管理者が変更したとしても、重み係数αの値を決定する基準が変動することがない。結果として、移動体10の統合推定位置の推定精度を安定化することができる。
【0062】
また、地図に依存しない推定位置は、1つ前のステップにおける統合推定位置に、エンコーダ12から取得される左右の車輪の回転角度を元に算出された1ステップ分の移動ベクトルを加算することにより求められる。エンコーダ12が検出する情報には、各車輪の滑り等により誤差が含まれる場合があるが、エンコーダ12による検出距離が比較的に短い場合は、上記の誤差はほとんど無視できる。1ステップ分の移動ベクトルは極めて短いため、1ステップ分の移動ベクトルの精度は高い。また、地図に依らない推定位置は、環境地図を用いずに推定される。このため、移動体10が、環境地図に記録されていない障害物の付近を自律走行する場合であっても、このことに起因して地図に依らない推定位置の推定精度が低下することはない。1ステップ前の統合推定位置の推定精度が高ければ、現在のステップにおける地図に依らない推定位置は高い推定精度を維持できる。
【0063】
本実施例の移動体10では、不信度pが増加するにつれて地図に依存する推定位置の重み係数αが減少するとともに、地図に依存しない推定位置の重み係数1−αが増加する。この構成によると、不信度pが高いとき(即ち、地図に依存する推定位置の推定精度が低いとき)は、統合推定位置に占める地図に依存する推定位置の割合を減らすとともに、地図に依存しない推定位置の割合を増やすことができる。上述したように、地図に依存しない推定位置の推定精度は高い。このため、この構成によると、地図に依存する推定位置の推定精度が低下しても、統合推定位置の推定精度が低下することを抑制できる。また、重み係数計算式は連続した滑らかな関数であるため、重み係数αは不信度pの推移に応じて滑らかに変動する。このため、統合推定位置は、地図に依存する推定位置と地図に依存しない推定位置の間を連続的に推移可能な値となる。従って、統合推定位置の推定精度がさらに向上する。
【0064】
本実施例では、上述したように、地図更新判断部が環境地図の更新指令を出力する際の統合推定位置は、地図に依存しない推定位置を計算する第2計算部29の推定結果が有利となっている。このため、精度良く最新環境地図を生成することができる。
【0065】
また、本実施例では、学習データの元になる情報(即ち、位置推定結果や標準偏差σ
x等の変数)は、移動体10に実際に走行させることで取得する。このため、学習データには、移動体10の地図に依存する推定位置の計算性能が直接的に反映される。このように、実際に走行させて得られる情報を元に学習データを生成することにより、より精度の高い信憑度計算式を生成できる。
【0066】
以上、本明細書が開示する技術の実施例について詳細に説明したが、これらは例示にすぎず、本明細書が開示する移動体は、上記の実施例を様々に変形、変更したものが含まれる。
【0067】
例えば、上述した実施例では、第1計算部28と第2計算部29により位置を推定したが、これら以外の推定方法を用いて位置を推定してもよい。例えば、カメラやGPSを用いることによっても位置を推定することができる。
【0068】
また上述した実施例では、地図に依存する推定位置と地図に依存しない推定位置の平均値を統合推定位置とし、統合推定位置に基づいて環境地図を更新する処理を実行したが、これに限られない。例えば、地図に依存する推定位置を計算する第1計算部28の信憑度が所定値より低下した場合に、信憑度が所定値以上であった最後の時点における地図に依存する推定位置(すなわち、信憑度が所定値未満となる直前の地図に依存する推定位置)に、1ステップ分の移動ベクトルを加算した位置を現時点での推定位置とし、その現時点での推定位置と観測結果とに基づいて、最新の環境地図を生成する処理を行ってもよい。また、第1計算部28による推定位置の信憑度が所定値より低下した場合に、信憑度が所定値以上であった時点における地図に依存する推定位置と、その時点で観測した観測結果とに基づいて、最新の環境地図を生成してもよい。このような構成であっても、実施例の移動体10と同様の作用効果を奏することができる。後者の方式の場合、地図に依存しない推定位置を計算する必要がなく、地図に依存する推定位置のみを計算する実施例とすることができる。この場合、地図に依存する推定位置を統合推定位置とすればよい。
【0069】
また、第1計算部28では、MCLの代わりに拡張カルマンフィルタを用いて、地図に依存する推定位置を計算してもよい。この場合、推定誤差共分散行列から得られる値(例えば、分散値、誤差共分散行列の各要素の値、誤差楕円の長軸及び短軸等)を説明変数に用いて信憑度計算式を生成することができる。また、自律走行時に得られるこれらの変数を信憑度計算式に入力することで、地図に依存する推定位置推定結果を精度良く判定することができる。
【0070】
また、上記の実施例では、モータに設けられたエンコーダ12を用いて移動情報を取得したが、移動情報を取得する手法はこれに限られない。例えば、カメラを用いたビジュアルオドメトリ又はレーザセンサを用いたレーザオドメトリを用いて移動情報を取得してもよい。
【0071】
また、移動体10は学習データ生成部36を有していなくてもよく、学習データは移動体10の外部で生成されてもよい。また、移動体10は、学習データ記憶部38を有していなくてもよい。即ち、学習データを元に信憑度計算式が生成されたら、学習データを消去する構成であってもよい。また、移動体10は、信憑度計算式生成部46を有していなくてもよく、信憑度計算式は移動体10の外部で生成されてもよい。
【0072】
また、信憑度計算式生成部46では、多変量解析の代わりにサポートベクターマシーンを用いてもよい。サポートベクターマシーンは、パターン認識のモデリングにおいて公知の手法であり、クラスの帰属が未知の特徴ベクトルを入力すると、当該特徴ベクトルが帰属するクラスを2値で出力する識別関数を構成する手法である。識別関数は、クラスの帰属が既知の訓練用のサンプル集合から構成される。このため、実施例の学習データを訓練用のサンプル集合に用いて学習データをサポートベクターマシーンで学習することで、識別関数(信憑度計算式)を構成することができる。そして、当該識別関数に第1計算部28から取得される3つの変数σ
x、σ
y、w
maxを入力することで、地図に依存する推定位置推定結果を判定することができる。
【0073】
また、信憑度計算式生成部46では、多変量解析の代わりにニューラルネットワークを用いてもよい。ニューラルネットワークは、パターン認識のモデリングにおいて公知の手法であり、クラスの帰属が未知の変数を入力すると、当該変数が帰属するクラスを2値で出力する識別関数を構成する手法である。この手法では、教師あり学習と教師なし学習の2通りで識別関数を構成できる。教師あり学習では、学習例と、当該学習例に対する目標出力が与えられ、初期状態の関数に学習例を入力して得られる出力が目標出力と一致するように初期状態の関数の重みを調整することで、識別関数が構成される。このため、実施例の学習データの3つの変数σ
x、σ
y、w
maxを学習例とし、そのときの分類結果(OK/NG)を目標出力として、学習データをニューラルネットワークで学習することで、識別関数(信憑度計算式)を構成することができる。そして、当該識別関数に第1計算部28から取得される3つの変数σ
x、σ
y、w
maxを入力することで、地図に依存する推定位置推定結果を判定することができる。
【0074】
また、学習データを解析する際は、ロジスティック回帰分析の代わりに判別分析を用いてもよい。
【0075】
また、学習走行は、実際に移動体に特定の領域を走行させる代わりに、シミュレーションにより行ってもよい。
【0076】
また、移動体10は車輪駆動型でなくてもよく、例えば、低速で移動する小型モビリティや脚式型(二足歩行等)、飛行体であってもよい。また、移動体10はLRF14を複数個有していてもよい。
【0077】
また、真値計算部32では、三角測量センサ16及びリフレクタ44を用いて移動体10の真値を計算したが、真値を計算する方法はこれに限られない。例えば、モーションキャプチャや磁気レールの手法を用いて真値を計算してもよい。
【0078】
また、本実施例では位置推定等に2次元の観測結果を用いたが、3次元距離センサ等により得られる3次元の観測結果を用いてもよい。
【0079】
また、移動体10が記憶する環境地図は、グリッドマップではなく、座標値で表される点群として記憶してもよい。この構成によると、
図2における地図点群生成部62を備えなくとも、最新の環境地図を生成することができる。
【0080】
本明細書で開示する技術では、地図依存式の推定位置計算手段が、仮定位置(パーティクル)毎に、自律移動体がその仮定位置に存在する確率を計算し、その確率分布から位置を推定する。信憑度計算手段が、前記確率分布から、信憑度を計算する。ここでいう信憑度は、推定位置が真値から許容範囲内に留まる確率である。
【0081】
本明細書に開示する自律移動体は、移動距離と移動方向から自律移動体の位置を推定する地図不依存式の位置推定手段をさらに備えている。この場合、信憑度が低下して環境地図を更新するときには、信憑度が所定値以上であった期間のなかで最後に計算された推定位置(この推定位置は、地図に依る推定位置でもよいし、地図に依る推定位置と地図に依らない推定位置を統合した推定位置であってもよい。)に、その後の移動量と移動方向を加算した最新位置を求め、その最新位置と観測装置で最後に観測した障害物までの距離と方位の情報に基づいて環境地図を更新する。それに代えて、信憑度が所定値より低下したときには、信憑度が所定値以上であった期間内で最後に計算推定位置と、その時点で観測装置が観測した障害物までの距離と方位の情報から、環境地図を更新するようにしてもよい。
【0082】
本明細書に開示する自律移動体では、更新が必要なときに環境地図を更新することから、地図に依存する推定位置の信憑度が高い。地図に依存する推定位置の計算部だけで足り、地図に依存しない推定位置の計算部は省略可能である。
本実施例の自律移動体は、地図依存式の推定位置計算部と、地図不依存式の推定位置計算部を合わせ持っており、両者を統合して統合推定位置を計算する。その際に、地図依存式の推定位置計算部の信憑度に基づいて、いずれの推定位置を重視するかを決定する。地図依存式の推定位置計算部の信憑度が高ければ地図に依存する推定位置を重視したものを統合推定位置とし、地図依存式の推定位置計算部の信憑度が低ければ、地図に依存しない推定位置を重視したものを統合推定位置とする。統合推定位置の信憑度が高く、環境地図の更新時に用いる自律移動体の位置の信憑度が高い。
【0083】
環境地図更新装置を独立させることもでき、環境地図更新装置自体を製造・販売・使用することもできる。
【0084】
実施例の構成要素と請求項の構成要素との関係について説明する。実施例の環境地図記憶部26は、請求項の環境地図記憶手段の一例である。実施例のLRF14は、請求項の観測装置の一例である。実施例の第1計算部28は、請求項の地図依存式の推定位置計算手段の一例である。実施例の第2計算部29は、請求項の地図不依存式の推定位置計算手段の一例である。実施例の信憑度計算部50は、請求項の信憑度計算手段の一例である。実施例の観測点群生成部60、地図点群生成部62、点群合わせ込み部64及び環境地図更新部66は、請求項の環境地図更新手段の一例である。
【0085】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。