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