(57)【要約】      （修正有）【課題】移動体が自己位置推定に成功したか失敗したかを、従来よりも高い精度で判定できる移動体を提供する。【解決手段】自己位置推定装置１８は、自己位置を推定する自己位置推定部２８と、異常判定式記憶部４８と、異常判定部５０を備える。異常判定式記憶部４８は、移動体の学習移動時の自己位置推定に基づいて取得された学習データを多変量解析して得られた異常判定式を記憶する。異常判定部５０は、移動体が本移動を行ったときに、自己位置推定が成功したか失敗したかを判定する。学習データは、学習移動時に自己位置を推定したときの複数の変数と、そのときの自己位置推定結果を正常又は異常に分類したときの分類結果とを関連付けたデータを複数有する。異常判定部５０は、異常判定式に、移動体が本移動を行った際に取得される複数の変数を入力することで、自己位置推定が成功したか失敗したかを判定する。【選択図】図８
2016110576.tif 000002
【特許請求の範囲】
【請求項１】
所定の移動領域内を移動する移動体の自己位置を推定する装置であって、
自己位置を推定する自己位置推定部と、
前記移動体の学習移動時の自己位置推定に基づいて取得された学習データを機械学習して得られた異常判定式を記憶する異常判定式記憶部と、
前記移動体が本移動を行ったときに、前記自己位置推定部における自己位置推定が成功したか失敗したかを判定する異常判定部と、を備えており、
前記自己位置推定部は、前記移動領域の環境地図と、直前の自己位置推定により推定された自己位置からの前記移動体の移動距離及び移動方向と、前記移動体から前記移動領域内に存在している物体までの距離及び前記移動体に対する前記物体の方位と、に基づいて自己位置を推定し、
前記学習データは、学習移動時に前記自己位置推定部において自己位置を推定したときの複数の変数と、そのときの自己位置推定結果を正常又は異常に分類したときの分類結果と、を関連付けたデータを複数有しており、
前記異常判定部は、前記異常判定式に、前記移動体が本移動を行った際に前記自己位置推定部で取得される複数の変数を入力することで、自己位置推定が成功したか失敗したかを判定する、移動体の自己位置推定装置。
【請求項２】
前記学習データの前記自己位置推定結果は、学習移動時に前記自己位置推定部で推定された自己位置と、前記移動体の実際の位置との位置誤差が所定値以下の場合には正常と分類され、前記位置誤差が所定値を超える場合には異常と分類されている、請求項１に記載の移動体の自己位置推定装置。
【請求項３】
前記学習データを記憶する学習データ記憶部をさらに備えている、請求項１又は２に記載の移動体の自己位置推定装置。
【請求項４】
前記学習データを生成する学習データ生成部と、
前記学習データ生成部で生成された前記学習データを機械学習して異常判定式を生成する異常判定式生成部と、をさらに備えている、請求項１〜３の何れか一項に記載の移動体の自己位置推定装置。
【請求項５】
前記自己位置推定部では、前記移動体の状態の確率分布を更新することにより自己位置を推定し、
前記異常判定式に入力される変数は、前記移動体の最新の状態の確率分布に基づいて自己位置が推定されたときの変数である、請求項１〜４の何れか一項に記載の移動体の自己位置推定装置。
【請求項６】
前記機械学習は、多変量解析の手法を用いて行われる、請求項１〜５の何れか一項に記載の移動体の自己位置推定装置。
【請求項７】
前記多変量解析は、ロジスティック回帰分析又は判別分析である、請求項６に記載の移動体の自己位置推定装置。
【請求項８】
前記機械学習は、サポートベクターマシーンの手法を用いて行われる、請求項１〜５の何れか一項に記載の移動体の自己位置推定装置。
【請求項９】
前記機械学習は、ニューラルネットワークの手法を用いて行われる、請求項１〜５の何れか一項に記載の移動体の自己位置推定装置。
【請求項１０】
所定の移動領域内を移動する移動体であって、
直前の自己位置推定が行われた位置からの前記移動体の移動距離及び移動方向を取得する移動情報取得部と、
前記移動領域内に存在している物体を観測し、前記移動体から前記物体までの距離及び前記移動体に対する前記物体の方位を取得する観測情報取得部と、
前記移動領域の環境地図を記憶している環境地図記憶部と、
請求項１〜６の何れか一項に記載の自己位置推定装置と、
前記自己位置推定装置の異常判定部において自己位置推定が失敗したと判定された場合に、少なくとも以下の動作、即ち、警報を鳴らす、一時的に停止する、前記自己位置推定部において自己位置を再度計算する、又は別の自己位置推定手段に切り替える、の１つを実行する異常時処理実行部と、を備える移動体。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に開示する技術は、移動体に関する。詳しくは、移動体の位置を推定する技術に関する。
【背景技術】
【０００２】
所定の移動領域内を移動する移動体であって、移動領域内における自己位置を推定できる移動体が知られている。移動体の自己位置推定は、種々の原因で失敗することがある。このとき、移動体自身が自己位置推定に成功したか失敗したかを自己判定することができないと、移動体は自己位置推定に失敗してもその事実を認識することなくそのまま移動を続けるため、移動領域内の物体（障害物等）と衝突するといった問題が生じる。
【０００３】
非特許文献１には、自己位置推定に成功したか否かを自己判定できる機能を備えた移動体が開示されている。この移動体は、自己位置推定結果の信頼度を表す式を記憶しており、自己位置推定の際に取得される変数を当該式に入力して得られる値が所定値を超えたときは自己位置推定に成功したと判定し、所定値以下のときは失敗したと判定する。これにより、移動体自身が自己位置推定に失敗したことを認識できるため、自己位置推定に失敗した際の対応手段を移動体に組み込むことにより、移動体が自己位置推定に失敗しても、上述したような衝突の危険等を回避できる。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】横塚将志、安達弘典、松本治、“ＬＲＦを用いたパーティクル・フィルタによる自己位置推定の異常検出とＧＰＳによるリカバリ”、自動車技術会論文集、自動車技術会、２０１２年３月、第４３巻、第２号、ｐ．５８７〜５９２
【発明の概要】
【発明が解決しようとする課題】
【０００５】
非特許文献１では、自己位置推定結果の信頼度を表す式を、自己位置推定に用いるアルゴリズムに基づき理論的に導き出している。しかしながら、理論的に構築した式では、理論と実際とのずれによって式の精度が低下し、自己位置推定に成功したか失敗したかの判定精度が低くなる可能性がある。
【０００６】
本明細書では、移動体が自己位置推定に成功したか失敗したかを、従来よりも高い精度で判定できる移動体を開示する。
【課題を解決するための手段】
【０００７】
本明細書は、所定の移動領域内を移動する移動体の自己位置を推定する自己位置推定装置を開示する。自己位置推定装置は、自己位置推定部と、異常判定式記憶部と、異常判定部と、を備える。自己位置推定部は、自己位置を推定する。異常判定式記憶部は、移動体の学習移動時の自己位置推定に基づいて取得された学習データを機械学習して得られた異常判定式を記憶する。異常判定部は、移動体が本移動を行ったときに、自己位置推定部における自己位置推定が成功したか失敗したかを判定する。自己位置推定部は、移動領域の環境地図と、直前の自己位置推定により推定された自己位置からの移動体の移動距離及び移動方向と、移動体から移動領域内に存在している物体までの距離及び移動体に対する物体の方位と、に基づいて自己位置を推定する。学習データは、学習移動時に自己位置推定部において自己位置を推定したときの複数の変数と、そのときの自己位置推定結果を正常又は異常に分類したときの分類結果と、を関連付けたデータを複数有する。異常判定部は、異常判定式に、移動体が本移動を行った際に自己位置推定部で取得される複数の変数を入力することで、自己位置推定が成功したか失敗したかを判定する。
【０００８】
上記の移動体の自己位置推定装置は、異常判定式記憶部において、自己位置推定が成功したか失敗したかを判定する基準となる異常判定式を記憶している。この異常判定式は、移動体が学習移動することで取得される学習データを機械学習することにより得られる。このため、理論的に構築された異常判定式よりも高い精度で自己位置推定が成功したか失敗したかを判定することができる。また、移動体の自己位置推定性能は、取得される観測情報（即ち、移動体から移動領域内に存在している物体までの距離及び移動体に対する物体の方位）の精度等により移動体毎にばらつきがある。学習データにはこのばらつきが反映されるため、学習データを機械学習して得られる異常判定式は、移動体毎に固有の式となる。即ち、上記の移動体は、個々の移動体に即した異常判定式に基づいて自己位置推定が成功したか否かを判定できる。また、１つの移動体においても、その自己位置推定性能は走行年数等により変化していく。上記の移動体では、移動体に定期的に学習移動させることで、異常判定式を更新することができる。このため、移動体は、自身の現状の自己位置推定性能をより反映した異常判定式に基づいて自己位置推定が成功したか否かを判定できる。
【０００９】
本明細書が開示する技術の詳細、及び、さらなる改良は、発明を実施するための形態及び実施例にて詳しく説明する。
【図面の簡単な説明】
【００１０】
【図１】移動体のシステム構成を示す。
【図２】移動体が自己位置推定処理を実施する際のシステム構成を示す。
【図３】移動体が学習データ生成処理を実施する際のシステム構成を示す。
【図４】移動体が学習移動する移動領域の一例を示す。
【図５】学習データの一例を示す。
【図６】移動体が異常判定式生成処理を実施する際のシステム構成を示す。
【図７】異常判定式のグラフを示す。
【図８】移動体が異常判定処理及び推定手段切替処理を実施する際のシステム構成を示す。
【発明を実施するための形態】
【００１１】
以下に説明する実施例の主要な特徴を列記しておく。なお、以下に記載する技術要素は、それぞれ独立した技術要素であって、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。
【００１２】
（特徴１）  本明細書が開示する移動体の自己位置推定装置では、学習データの自己位置推定結果は、学習移動時に自己位置推定部で推定された自己位置と、移動体の実際の位置との位置誤差が所定値以下の場合には正常と分類され、位置誤差が所定値を超える場合には異常と分類されていてもよい。この構成では、移動体の実際の位置を基準として、自己位置推定結果が正常であるか異常であるかの分類が行われる。このため、信頼性の高い分類結果を取得でき、学習データの信頼性が向上し、結果として判定精度の高い異常判定式を取得できる。
【００１３】
（特徴２）  本明細書が開示する移動体の自己位置推定装置は、学習データを記憶する学習データ記憶部をさらに備えていてもよい。この構成によると、推定装置自体に学習データを記憶しているため、移動体の異常判定精度に不具合が生じた場合等には、学習データのログを分析してエラーがないかどうか検証することが可能となり、移動体の信頼性が向上する。
【００１４】
（特徴３）  本明細書が開示する移動体の自己位置推定装置は、学習データを生成する学習データ生成部と、学習データ生成部で生成された学習データを機械学習して異常判定式を生成する異常判定式生成部と、をさらに備えていてもよい。この構成によると、自己位置推定装置自身が学習データを生成し、その学習データに基づいて異常判定式を生成することができる。このため、自己位置推定装置自身が異常判定式を更新し、環境変化（例えば、移動体の経年変化等）に適切に対応することができる。
【００１５】
（特徴４）  本明細書が開示する移動体の自己位置推定装置では、自己位置推定部が、移動体の状態の確率分布を更新することにより自己位置を推定してもよい。異常判定式に入力される変数は、移動体の最新の状態の確率分布に基づいて自己位置が推定されたときの変数であってもよい。この構成によると、移動体の状態の確率分布が最新のものに更新される前の変数を異常判定式に入力する構成と比較して、異常判定式の判定精度が向上する。
【００１６】
（特徴５）  本明細書が開示する移動体の自己位置推定装置では、機械学習が、多変量解析の手法を用いて行われてもよい。
【００１７】
（特徴６）  本明細書が開示する移動体の自己位置推定装置では、多変量解析は、ロジスティック回帰分析又は判別分析であってもよい。
【００１８】
（特徴７）  本明細書が開示する移動体の自己位置推定装置では、機械学習が、サポートベクターマシーンの手法を用いて行われてもよい。
【００１９】
（特徴８）  本明細書が開示する移動体の自己位置推定装置では、機械学習が、ニューラルネットワークの手法を用いて行われてもよい。
【００２０】
（特徴９）  本明細書が開示する自己位置推定装置は、所定の移動領域内を移動する移動体に搭載することができる。移動体は、移動情報取得部と、観測情報取得部と、環境地図記憶部と、自己位置推定装置と、異常時処理実行部と、を備えていてもよい。移動情報取得部は、直前の自己位置推定が行われた位置からの移動体の移動距離及び移動方向を取得してもよい。観測情報取得部は、移動領域内に存在している物体を観測し、移動体から物体までの距離及び移動体に対する物体の方位を取得してもよい。環境地図記憶部は、移動領域の環境地図を記憶していてもよい。異常時処理実行部は、自己位置推定装置の異常判定部において自己位置推定が失敗したと判定された場合に、少なくとも以下の動作、即ち、警報を鳴らす、一時的に停止する、自己位置推定部において自己位置を再度計算する、又は別の自己位置推定手段に切り替える、の１つを実行してもよい。この構成によると、移動体が自己位置推定に失敗したにも関わらず、同じ自己位置推定装置を用いて走行を継続することを抑制できる。
【実施例１】
【００２１】
実施例１では、図１〜図８を参照して移動体１０について説明する。移動体１０は、左右に車輪を有する車輪駆動型の移動体であり、所定の移動領域内を自律的に走行する。移動体１０の左右の車輪は独立して駆動され、左右の車輪の回転速度を変えることで、移動体１０は進行方向を変えることができる。移動体１０は、移動領域内を走行する際に、移動領域内における自己位置を推定し、その自己位置推定結果に基づいて目的地まで走行する。また、移動体１０は、推定した自己位置推定結果が正常（即ち、自己位置推定に成功）であるか異常（即ち、自己位置推定に失敗）であるかを、異常判定式（後述）に基づいて自己判定する。自己位置推定結果が異常である場合は、自己位置推定プログラムを別のプログラムに切り替える。以下では、移動体１０が異常判定式に基づいて自己位置推定結果の正常、異常を自己判定する走行を、「本走行」と称する。なお、厳密には、移動体１０は、自身の位置及び方位を推定するが、以下では、移動体１０の位置と方位をまとめて「自己位置」と称する。
【００２２】
図１に示すように、移動体１０は、エンコーダ１２と、レーザレンジファインダ１４（以下、ＬＲＦ１４と称する）と、三角測量センサ１６（後述）と、コンピュータ１８を備える。
エンコーダ１２は、左右の車輪の回転角度を検出し、コンピュータ１８の自己位置推定部２８（後述）に出力する。即ち、左右の車輪はそれぞれ図示しないモータによって駆動される。左右の車輪を駆動するモータにはエンコーダ１２がそれぞれ設けられ、各エンコーダ１２は左右の車輪の回転角度をそれぞれ検出する。エンコーダ１２で検出される左右の車輪の回転角度は、コンピュータ１８に入力される。
ＬＲＦ１４は、レーザ光を射出し、射出したレーザ光が物体で反射して返ってくるまでの時間を計測する。ＬＲＦ１４で計測される時間から、ＬＲＦ１４（即ち、移動体１０）から物体までの距離が計測される。また、ＬＲＦ１４からレーザ光を射出した方向（即ち、物体から反射されるレーザ光の入射角度）は既知であるため、ＬＲＦ１４に対する物体の方位を決定することができる。以下、物体までの距離及び物体の方位を「観測情報」とも称する。ＬＲＦ１４で取得した観測情報は、コンピュータ１８の自己位置推定部２８に出力される。ＬＲＦ１４は、移動体１０の進行方向に対して所定の角度範囲（例えば、進行方向に対して左右方向にそれぞれ６０°）でレーザ光を射出する。
コンピュータ１８は、演算処理を行うＣＰＵ２０、演算処理のデータが一時的に記憶されるＲＡＭ２２、及びＣＰＵによって実行される演算プログラムが記憶されたＲＯＭ２４を備えている。コンピュータ１８は、後述する様々な処理を実行する。ＣＰＵ２０がＲＯＭ２４に記憶された演算プログラムを実行することで、ＣＰＵ２０は、自己位置推定部２８、真値計算部３２等として機能する。なお、コンピュータ１８は、自己位置推定部２８で推定される自己位置からモータの駆動量を計算し、その計算した駆動量でモータ（車輪）を駆動する。これによって、移動体１０は目標の位置まで走行する。なお、コンピュータ１８による移動体１０の走行制御については、公知の方法で行うことができるため、ここでは、コンピュータ１８による自己位置推定等の処理について詳細に説明する。
【００２３】
（自己位置推定処理）
図２に示すように、コンピュータ１８は、環境地図記憶部２６と、自己位置推定部２８を備える。
環境地図記憶部２６は、ＲＯＭ２４に設けられており、ｘｙ座標平面上に移動領域内の物体の位置及び高さが記録された環境地図を記憶している。環境地図に記憶される物体としては、例えば、移動領域内の障害物（例えば、壁、床面等）が含まれる。
自己位置推定部２８は、ＲＯＭ２４に予め格納されている公知の運動モデルに基づいて、モンテカルロ位置同定法（Ｍｏｎｔｅ  Ｃａｒｌｏ  Ｌｏｃａｌｉｚａｔｉｏｎ（以下、ＭＣＬと称する））により移動体１０の自己位置を推定する。この処理は、ＣＰＵ２０で実施される。ＭＣＬは、パーティクルフィルタを用いて移動体が自己位置を推定する公知の手法である。具体的には、自己位置推定部２８は、（１）まず、初期パーティクル集合を生成する。各パーティクルは移動体１０の位置候補を表すベクトルであり、ベクトル要素として、ｘｙ座標系における移動体１０のｘ座標、ｙ座標、及びヨー角を備える。（２）次に、自己位置推定部２８は、エンコーダ１２から取得した各車輪の回転角度を元に、基準地点（後述）からの移動体１０の移動距離及び移動方向（以下、移動距離及び移動方向を「移動情報」とも称する）を算出する。そして、運動モデルにこれらの移動情報を入力し、各パーティクルを運動モデルに従って移動させる。（３）続いて、自己位置推定部２８は、各パーティクルにおいて、ＬＲＦ１４から入力された観測情報を環境地図記憶部２６から取得した環境地図とマッチングさせて、各パーティクルの尤度（確からしさ）を計算する。（４）そして、パーティクル数が、尤度の高い領域で多く、尤度の低い領域で少なくなるようにパーティクルを選択し、ノイズを加えて新たな集合を生成する。自己位置推定部２８は、上記（２）〜（４）の処理を繰り返すことでパーティクルの尤度を上げて観測情報と最も適合するパーティクルを発見し、その適合パーティクルを移動体１０の自己位置と推定する。別言すれば、自己位置推定部２８は、パーティクル集合に移動体１０の実際の位置（以下、真値とも称する）が含まれる（即ち、パーティクル集合を構成するパーティクルのいずれかと真値が一致する）まで、或いは、パーティクル集合のいずれかのパーティクルが真値に極めて近くなるまで、上記（２）〜（４）の処理を繰り返す。即ち、１回の自己位置推定処理では、パーティクル集合の分布は複数回更新される。なお、上記の「基準地点」とは、直前の自己位置推定処理により推定された自己位置を指す。
【００２４】
（学習データ生成処理）
移動体１０は、本走行を行う前に、学習走行と呼ばれる走行を行う。以下では、移動体１０の学習走行、及び学習走行時に得られるデータを元に学習データを生成する処理について説明する。
【００２５】
図３に示すように、コンピュータ１８は、自己位置推定処理で使用される環境地図記憶部２６及び自己位置推定部２８の他に、真値計算用地図記憶部３０、真値計算部３２、位置誤差計算部３４、学習データ生成部３６、及び学習データ記憶部３８を備える。環境地図記憶部２６には、移動体１０が学習走行を行う移動領域の環境地図が記憶されている。移動体１０が学習走行を行う移動領域は、本走行を行う移動領域と異なっていてもよい。このため、学習走行時と本走行時とで移動領域が異なる場合は、環境地図記憶部２６は、両方の移動領域の環境地図を記憶している。以下では、学習走行時の移動領域と本走行時の移動領域とを区別するために、前者を「第１移動領域」と称し、後者を「第２移動領域」と称する。また、第１移動領域の環境地図を「第１環境地図」と称し、第２移動領域の環境地図を「第２環境地図」と称する。
【００２６】
図４は、移動体１０が学習走行を行う第１移動領域４０を示す。図４に示すように、第１移動領域４０の一部には、障害物としての塀４２が配置されている。塀４２は互いに対向するように配置されており、塀４２の対向面（内側の面）にはリフレクタ４４が等間隔で固定されている。学習走行時の移動体１０の走行は、リモートコントローラ（リモコン）で制御される。破線は、学習走行時の移動体１０の走行ルートを示す。破線で示すように、移動体１０は、塀４２が配置されていない領域、及び対向する塀４２の間の領域の双方を走行する。
【００２７】
真値計算用地図記憶部３０は、ＲＯＭ２４に設けられており、環境地図記憶部２６が記憶している第１環境地図に、塀４２及びリフレクタ４４の位置が記録された地図を記憶している。別言すれば、第１環境地図には、作為的に配置された塀４２及びリフレクタ４４の情報は記憶されていない。
【００２８】
三角測量センサ１６は、全方位（３６０°）にレーザ光を射出し、リフレクタ４４で反射して返ってくるレーザ光を検知することで、リフレクタ４４までの距離及び移動体１０に対するリフレクタ４４の方位を計測し、これらの情報をコンピュータ１８の真値計算部３２に出力する。三角測量センサ１６は、移動体１０に搭載されている
【００２９】
真値計算部３２は、三角測量センサ１６から取得した距離及び方位の情報から、リフレクタ４４に対する移動体１０の相対位置（厳密には、相対方位も含む）を特定する。真値計算用地図記憶部３０から取得した地図にはリフレクタ４４の位置が記録されているため、当該地図に移動体１０の相対位置をマッピングすることで、当該地図上における移動体１０の位置を特定できる。このようにして、真値計算部３２は、移動体１０の実際の位置（真値）を計算する。この処理は、ＣＰＵ２０で行われる。移動体１０の真値は、位置誤差計算部３４に出力される。
【００３０】
一方、自己位置推定部２８は、第１環境地図を用いて第１移動領域４０における移動体１０の自己位置を推定し、その結果を位置誤差計算部３４に出力する。自己位置推定処理と真値計算処理は同じタイミングで行われる。また、自己位置推定部２８は、最新のパーティクル集合（即ち、自己位置が推定されたときのパーティクル集合）の分布からｘ方向の標準偏差σｘ、ｙ方向の標準偏差σｙ、及びパーティクルの尤度の最大値ｗｍａｘを計算し、これらの情報（標準偏差σｘ、標準偏差σｙ、最大尤度ｗｍａｘ）を学習データ生成部３６に出力する。なお、標準偏差σｘ、標準偏差σｙ、最大尤度ｗｍａｘが「変数」の一例に相当する。
【００３１】
位置誤差計算部３４は、真値計算部３２から取得した真値と、自己位置推定部２８から取得した自己位置との差（位置誤差）を計算し、学習データ生成部３６に出力する。この処理は、ＣＰＵ２０で行われる。
【００３２】
学習データ生成部３６は、位置誤差計算部３４から取得した位置誤差が１５ｃｍ以下の場合は、自己位置推定部２８が自己位置推定に成功したとみなし、自己位置推定結果を「正常」と分類する。一方、位置誤差が１５ｃｍを超える場合は、自己位置推定部２８が自己位置推定に失敗したとみなし、自己位置推定結果を「異常」と分類する。学習走行では、位置誤差が「異常」と分類される事態を意図的に作り出している。即ち、第１移動領域４０には、第１環境地図に記録されていない塀４２が配置されている。このため、移動体１０が塀４２の間を走行する際は、ＬＲＦ１４により取得される観測情報と第１環境地図とのマッチング度が低くなり、適合パーティクルの発見が困難になる。これは、仮にパーティクル集合の中に真値が含まれていたとしても、移動体１０は真値と一致するパーティクルを適合パーティクルとして発見できないことを意味する。このため、移動体１０が塀４２の間を走行する場合は、真値とは異なるパーティクルを適合パーティクルとみなし、そのパーティクルを自己位置と推定する可能性が極めて高くなる。この結果、推定自己位置と真値との位置誤差が大きくなり、その位置誤差が１５ｃｍを超える場合は、「異常」と分類されることになる。
【００３３】
このように、学習データ生成部３６では、位置誤差を基準として、即ち、「真値」に対する移動体１０の推定自己位置のずれ量を基準として、自己位置推定結果が正常であるか異常であるかの分類が行われる。このため、信頼性の高い分類結果を取得できる。なお、本実施例では、自己位置推定結果の正常／異常の分類基準値を１５ｃｍに設定したが、分類基準値はこれに限られない。分類基準値を低くするほど、異常判定式の判定精度を高くすることができる。
【００３４】
図５は、学習データ生成部３６により生成される学習データの例を示す。図５に示すように、学習データ生成部３６は、自己位置推定時の時刻と、位置誤差計算部３４から取得した位置誤差と、自己位置推定結果の分類結果と、自己位置推定部２８から取得した３つの変数（標準偏差σｘ、標準偏差σｙ、最大尤度ｗｍａｘ）と、を関連付けたデータセットを時系列に並べたデータセット群（学習データ）を生成する（σｘ、σｙ、ｗｍａｘのアルファベットは、実際には数値である）。学習データを参照することで、各時刻における位置誤差、自己位置推定結果の正常／異常、及び自己位置が推定されたときの変数を知ることができる。例えば、時刻ｔ＝２ｓでは、推定自己位置と真値との位置誤差は７ｃｍであるため、自己位置推定結果は「正常」と分類されており、そのときの変数σｘ、σｙ、ｗｍａｘは、それぞれｂ、ｇ、ｌであることがわかる。また、時刻ｔ＝１０ｓでは、推定自己位置と真値との位置誤差は２０ｃｍであるため、自己位置推定結果は「異常」と分類されており、そのときの変数σｘ、σｙ、ｗｍａｘは、それぞれｃ、ｈ、ｍであることがわかる。学習データ生成処理は、ＣＰＵ２０で行われる。このように、移動体１０自身が学習データを生成することにより、移動体１０の外部において学習データを生成する構成と比較して、システム構成を簡素化することができる。
【００３５】
学習データ記憶部３８は、ＲＯＭ２４に設けられており、学習データ生成部３６で生成された学習データを記憶する。学習データ記憶部３８に記憶された学習データは、後述する異常判定式生成部４６に出力される。このように、移動体１０自身が学習データを記憶しておくことにより、移動体１０に不具合が生じた場合等に、学習データのログを分析してエラーがないかどうか検証することが可能となる。このため、移動体１０に不具合が生じた場合にその原因を発見し易くなり、移動体１０の信頼性を向上させることができる。なお、本実施例では、データセットには自己位置推定時の時刻が含まれているが、この構成に限られない。例えば、データセットは時刻を含んでいなくてもよく、学習データは、データセットが自己位置推定時刻とは無関係に並べられたデータ群により構成されていてもよい。また、学習データには位置誤差が含まれていなくてもよい。
【００３６】
（異常判定式生成処理）
移動体１０が異常判定式を生成する処理について説明する。図６に示すように、コンピュータ１８は、自己位置推定処理及び学習データ生成処理で使用される各部の他に、異常判定式生成部４６と、異常判定式記憶部４８を有する。
異常判定式生成部４６は、学習データ記憶部３８に記憶されている学習データを取得し、学習データをロジスティック回帰分析して、異常判定式を生成する。ロジスティック回帰分析は多変量解析の一手法であり、結果が２値の場合に、その結果の起きる確率を予測できる統計的な回帰モデルを生成する手法である。具体的には、次の数式で表されるロジスティックモデル；
【数１】
2016110576.tif 000003
（Ｚ：目的変数、Ｘ１〜Ｘ３：説明変数、ｂ０：定数、ｂ１〜ｂ３：回帰係数）に学習データを適用して、定数ｂ０及び回帰係数ｂ１〜ｂ３の値を求める。学習データを適用する際は、目的変数Ｚに分類結果（正常：０、異常：１）を用い、説明変数Ｘ１、Ｘ２、Ｘ３に学習データの標準偏差σｘ、標準偏差σｙ、最大尤度ｗｍａｘをそれぞれ用いる。これにより、次の数式で表される異常判定式；
【数２】
2016110576.tif 000004
が生成される（図７参照）。ｐは、移動体１０の本走行時における自己位置推定結果が異常と判定される確率（以下、異常判定確率とも称する）である。説明変数Ｘ１〜Ｘ３に用いる変数（σｘ、σｙ、ｗｍａｘ）は互いに独立しているため、回帰係数ｂ１〜ｂ３は、項目間の影響が排除された係数となる。従って、異常判定確率を算出する際は、より正確に項目ごとの影響度を量ることができる。異常判定式生成処理は、ＣＰＵ２０で行われる。
異常判定式記憶部４８は、ＲＯＭ２４に設けられており、異常判定式生成部４６で生成された異常判定式を記憶する。
【００３７】
（異常判定処理、推定手段切替処理）
移動体１０は、第２移動領域において本走行を行う前に、上述した学習データ生成処理及び異常判定式生成処理を実施する。そして、移動体１０が本走行を行う際は、自己位置推定に成功したか失敗したかを異常判定式に基づいて判定し、自己位置推定に失敗した場合は自己位置推定手段（即ち、自己位置推定プログラム）を切替える。以下では、移動体１０の本走行時における異常判定処理及び推定手段切替処理について説明する。図８に示すように、コンピュータ１８は、自己位置推定処理、学習データ生成処理、及び異常判定式生成処理で使用される各部の他に、異常判定部５０及び推定手段切替部５２を有する。
【００３８】
移動体１０が第２移動領域において本走行を行う際は、自己位置推定部２８は、第２環境地図を用いて自己位置を推定する。自己位置推定部２８で自己位置が推定されたときの３つの変数σｘ、σｙ、ｗｍａｘは、異常判定部５０に出力される。なお、「自己位置推定部２８で自己位置が推定されたとき」とは、１回の自己位置推定処理におけるパーティクル集合の分布が最新の状態であることを意味する。
【００３９】
異常判定部５０は、自己位置推定部２８から取得した３つの変数σｘ、σｙ、ｗｍａｘを、異常判定式記憶部４８から取得した異常判定式のＸ１、Ｘ２、Ｘ３にそれぞれ入力し、ｐ≦０．５のときは自己位置推定結果が正常（即ち、自己位置推定に成功）と判定し、ｐ＞０．５のときは自己位置推定結果が異常（即ち、自己位置推定に失敗）と判定する。判定結果は、推定手段切替部５２に出力される。上述したように、異常判定式のＸ１〜Ｘ３には、最新のパーティクル集合の分布から得られた変数が入力される。このため、パーティクル集合が最新の状態に更新される前のパーティクル集合の変数を入力する構成と比較して、判定結果の精度がより高くなる。
【００４０】
推定手段切替部５２は、異常判定部５０から取得した判定結果が「異常」である場合は、自己位置推定手段（自己位置推定プログラム）をＭＣＬからオドメトリに切替える。ＭＣＬを用いた自己位置推定では、移動体１０は、直前の自己位置推定時の推定自己位置を元に自己位置を推定する。このため、一旦自己位置推定に失敗すると（特に、一旦パーティクル集合の中に真値が含まれなくなると）、その後の推定自己位置は真値からますます離れていく可能性があり、移動体が物体（障害物）に衝突する等の危険性が高くなる。しかしながら、移動体１０は、自己位置推定に失敗した場合は、直ちに自己位置推定手段（即ち、ＭＣＬを用いた自己位置推定プログラム）を別の手段（オドメトリを用いた自己位置推定プログラム）に切替える。このため、移動体１０の推定自己位置が真値から離れていくことを抑制でき、移動体１０が物体に衝突する等の危険を回避できる。なお、本実施例では自己位置推定結果の判定基準値を０．５に設定したが、これに限られない。判定基準値を低く設定するほど、異常判定精度が向上する。また、推定手段切替部５２では、オドメトリ以外の自己位置推定プログラム（例えば、ＧＰＳを用いた自己位置推定プログラム）に切替えてもよい。
【００４１】
実施例１の移動体１０の作用効果について説明する。移動体１０は、異常判定式記憶部４８において、自己位置推定に成功したか失敗したかを判定する基準となる異常判定式を記憶している。この異常判定式は、移動体１０が学習走行することで取得される学習データを、機械学習の一手法であるロジスティック回帰分析の手法を用いて解析することにより得られる。このため、理論的に構築された異常判定式よりも高い精度で自己位置推定に成功したか失敗したかを判定することができる。また、移動体１０の自己位置推定性能は、移動体１０に搭載されるＬＲＦ１４の数等により移動体毎にばらつきがある。学習データにはこのばらつきが反映されるため、学習データを解析して得られる異常判定式は、移動体毎に固有の式となる。即ち、移動体１０は、移動体１０自身の性能に応じた異常判定式に基づいて自己位置推定が成功したか否かを判定できる。また、駆動部分（例えば車輪）の摩耗等により、移動体１０の自己位置推定性能は走行年数により変化する。本実施例では、移動体１０に定期的に学習走行させることで異常判定式を更新することができる。このため、移動体１０は、自身の現状の自己位置推定性能をより反映した異常判定式に基づいて自己位置推定が成功したか否かを判定できる。このため、移動体毎の性能とは無関係に一律に異常判定式を設定する構成と比較して、異常判定精度を向上させることができる。
【００４２】
特に、実施例１では、自己位置推定手段としてＭＣＬを用いている。この場合、例えば第２移動領域内に、第２環境地図には記録されていない物体が配置されていると、ＬＲＦ１４で取得される観測情報と環境地図とのマッチング度が低くなり、移動体１０が自己位置推定に失敗する可能性が高くなる。即ち、たとえパーティクル集合の中に真値が含まれていたとしても、移動体１０が真値に相当するパーティクルを適合パーティクルと見なすことができず、別のパーティクルを適合パーティクルとみなす可能性が高くなる。実施例１の移動体１０は、このようにパーティクル集合の中に真値が含まれている場合（即ち、推定自己位置が真値からそれほど離れていない場合）であっても、異常判定式から導かれる異常判定確率が０．５を超える場合は、自己位置推定結果が異常であると判定することができる。このため、移動体１０は高い異常判定精度を発揮できる。
一方、非特許文献１では、パーティクル集合に真値が含まれているときに移動体が自己位置推定に失敗する可能性については考慮されていない。非特許文献１の技術は、パーティクル集合に真値が含まれていない場合（即ち、推定自己位置が真値から比較的離れている場合）を前提とした技術である。このため、非特許文献１の移動体は、位置誤差が比較的に大きい場合にしか、自身の自己位置推定結果が異常であると判定できず、結果として異常判定精度が低くなる。
【００４３】
また、学習データの元になる情報（即ち、自己位置推定結果や標準偏差σｘ等の変数）は、移動体１０に実際に第１移動領域４０を走行させることで取得する。このため、学習データには、移動体１０の自己位置推定性能が直接的に反映される。このように、実際に特定の領域を走行させて得られる情報を元に学習データを生成することにより、より精度の高い異常判定式を生成できる。
【００４４】
以上、本明細書が開示する技術の実施例について詳細に説明したが、これらは例示にすぎず、本明細書が開示する移動体は、上記の実施例を様々に変形、変更したものが含まれる。
【００４５】
例えば、自己位置推定部２８では、ＭＣＬの代わりに拡張カルマンフィルタを用いて自己位置推定処理を行ってもよい。この場合、推定誤差共分散行列から得られる値（例えば、分散値、誤差共分散行列の各要素の値、誤差楕円の長軸及び短軸等）を説明変数に用いて異常判定式を生成することができる。また、本走行時に得られるこれらの変数を異常判定式に入力することで、自己位置推定結果の正常／異常を精度良く判定することができる。
【００４６】
また、移動体１０は学習データ生成部３６を有していなくてもよく、学習データは移動体１０の外部で生成されてもよい。また、移動体１０は、学習データ記憶部３８を有していなくてもよい。即ち、学習データを元に異常判定式が生成されたら、学習データを消去する構成であってもよい。また、移動体１０は、異常判定式生成部４６を有していなくてもよく、異常判定式は移動体１０の外部で生成されてもよい。
【００４７】
また、異常判定式生成部４６では、多変量解析の代わりにサポートベクターマシーンを用いてもよい。サポートベクターマシーンは、パターン認識のモデリングにおいて公知の手法であり、クラスの帰属が未知の特徴ベクトルを入力すると、当該特徴ベクトルが帰属するクラスを２値で出力する識別関数を構成する手法である。識別関数は、クラスの帰属が既知の訓練用のサンプル集合から構成される。このため、実施例１の学習データを訓練用のサンプル集合に用いて学習データをサポートベクターマシーンで学習することで、識別関数（異常判定式）を構成することができる。そして、当該識別関数に自己位置推定部２８から取得される３つの変数σｘ、σｙ、ｗｍａｘを入力することで、自己位置推定結果の正常／異常を判定することができる。この方法によっても、実施例１と同様の作用効果を奏することができる。
【００４８】
また、異常判定式生成部４６では、多変量解析の代わりにニューラルネットワークを用いてもよい。ニューラルネットワークは、パターン認識のモデリングにおいて公知の手法であり、クラスの帰属が未知の変数を入力すると、当該変数が帰属するクラスを２値で出力する識別関数を構成する手法である。この手法では、教師あり学習と教師なし学習の２通りで識別関数を構成できる。教師あり学習では、学習例と、当該学習例に対する目標出力が与えられ、初期状態の関数に学習例を入力して得られる出力が目標出力と一致するように初期状態の関数の重みを調整することで、識別関数が構成される。このため、実施例１の学習データの３つの変数σｘ、σｙ、ｗｍａｘを学習例とし、そのときの分類結果（正常／異常）を目標出力として、学習データをニューラルネットワークで学習することで、識別関数（異常判定式）を構成することができる。そして、当該識別関数に自己位置推定部２８から取得される３つの変数σｘ、σｙ、ｗｍａｘを入力することで、自己位置推定結果の正常／異常を判定することができる。この方法によっても、実施例１と同様の作用効果を奏することができる。なお、学習データを機械学習する手法は、実施例１〜３に挙げた手法に限られない。
【００４９】
また、学習データを解析する際は、ロジスティック回帰分析の代わりに判別分析を用いてもよい。
【００５０】
また、異常判定処理を行う際に異常判定式に入力される変数は、最新のパーティクル集合の分布から求められる変数に限られない。例えば、最新のパーティクル集合に更新される直前のパーティクル集合の分布から求められる変数を異常判定式に入力するようにしてもよい。また、変数の種類は標準偏差や最大尤度に限られない。また、変数の数は３つに限られず、回帰モデルが精度よく回帰するように適宜増減させてもよい。
【００５１】
また、移動体１０は、推定手段切替部５２の代わりに、自己位置推定結果が異常と判定された場合に警報を鳴らす機能を備えていてもよいし、一時停止する機能を備えていてもよいし、自己位置推定部２８において自己位置を再計算する機能を備えていてもよい。警報を鳴らすことにより、移動体１０の管理者に移動体１０が自己位置推定に失敗したことを知らせることができる。また、移動体１０が一時停止することにより、そのまま走行を継続することによる危険を回避できる。また、移動する存在（例えば、歩行者や車両）により移動体１０が自己位置推定に失敗した場合は、一定時間経過後に再度自己位置推定処理を行うことにより、歩行者や車両が移動体１０の観測範囲から遠ざかり、自己位置推定結果が「正常」に覆る可能性がある。このため、自己位置を再計算することにより、引き続きＭＣＬを用いた自己位置推定処理を実施できる。
【００５２】
また、学習走行は、実際に移動体に特定の領域を走行させる代わりに、シミュレーションにより行ってもよい。
【００５３】
また、移動体１０は車輪駆動型でなくてもよく、例えば、二足歩行型でもよい。また、移動体１０はＬＲＦ１４を複数個有していてもよい。
【００５４】
また、真値計算部３２では、三角測量センサ１６及びリフレクタ４４を用いて移動体１０の真値を計算したが、真値を計算する方法はこれに限られない。例えば、モーションキャプチャや磁気レールの手法を用いて真値を計算してもよい。
【００５５】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【００５６】
１０：移動体、１２：エンコーダ、１４：レーザレンジファインダ（ＬＲＦ）、２８：自己位置推定部、３６：学習データ生成部、３８：学習データ記憶部、４６：異常判定式生成部、４８：異常判定式記憶部、５０：異常判定部
【図１】
2016110576.tif 000005
【図２】
2016110576.tif 000006
【図３】
2016110576.tif 000007
【図４】
2016110576.tif 000008
【図５】
2016110576.tif 000009
【図６】
2016110576.tif 000010
【図７】
2016110576.tif 000011
【図８】
2016110576.tif 000012