説明

地図処理方法及びプログラム、並びにロボットシステム

【課題】地図処理方法及びプログラム、並びにロボットシステムにおいて、複数の推定器が推定した位置姿勢を高精度に統合することを目的とする。
【解決手段】互いに異なるセンサからの入力に基づいて自己位置を推定する複数の推定器の信頼度をこれらの推定器に対応する信頼性評価モデルを用いて評価する評価処理と、これらの複数の推定器からの推定結果に対して信頼性に応じた異なる統合処理を行う結合処理をコンピュータに実行させるように構成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、地図処理方法及びプログラム、並びにロボットシステムに関する。本発明は、地図処理プログラムを格納したコンピュータ読み取り可能な記憶媒体にも関する。
【背景技術】
【0002】
自律移動型ロボットは、実環境内で障害物、壁などと衝突すること無く自由に移動できるように、例えばロボットに搭載されたセンサの計測情報と環境地図との照合に基づいて自己位置の推定を行う。ロボットが実環境下で自己位置を確実、且つ、正確に推定するために、複数の異なる地図を併用する方式がある。また、環境地図を自動的に作成する技術としては、例えばSLAM(Simultaneous Localization And Mapping)が知られている。
【0003】
複数の地図を自動的に作成する方式は、一般的には以下の2つの方式に分類できる。第1の方式では、ある種類のセンサの計測情報に基づいて最初の地図を作成する。その後、他の種類のセンサの計測情報を最初の地図に足し加えて2番目の地図を作成し、以下同様にして3番目以降の地図を作成する。一方、第2の方式では、複数の異なる種類のセンサの計測情報を推定器に同時観測情報として入力して、複数の地図を同時に、且つ、自動的に作成する。
【0004】
第1の方式の場合、2番目以降に作成される地図が最初に作成された地図に依存する。このため、2番目以降に作成された地図の精度は、最初に作成された地図の精度に依存してしまう。一方、第2の方式の場合、センサの種類が多くなると、推定器の観測空間が大きくなるため、推定器の計算量が多くなると共に計算時間がかかる。また、異なる種類のセンサは異なる計測レートを用いるため、使用するセンサの計測レートを最も遅い計測レートに合わせる必要がある。
【0005】
しかし、複数の地図を同時に生成する場合、異なる種類のセンサの異なる誤差モデルを反映しながら各センサ独自の計測レートを用いることが望ましい。このように、独立して作成された複数の地図では、各地図の座標系が異なると共に、推定誤差によって夫々の地図が異なる歪みを含んでいる。このため、ロボットが自己位置の推定を行う段階では、各センサの計測情報と対応する地図とのマッチングにより推定された自己位置が、異なる座標系で表現されたものであるため、例えばロボットの移動経路を計画あるいは決定する経路計画(または、経路計画)などを行うためには推定した自己位置の座標系を統合(または、統一)する必要がある。
【0006】
自律移動型ロボットのナビゲーションシステムにおいて、複数の自己位置推定器が推定した位置姿勢を統合する従来の統合方式では、例えば各自己位置推定器の推定結果を1つのベクトルにまとめ、統合処理の観測データとして入力することで確率的フィルタにより統合する。しかし、従来の統合方式では、以下のようなデメリットが生じてしまう。
【0007】
第1に、確率的フィルタによる統合を行うために、各自己位置推定器の推定精度を表す推定結果の共分散行列をある同一の基準に合わせる必要がある。しかし、各自己位置推定器が独立に開発されているため、自己位置推定器間では共分散行列の計算方法や設定パラメータなどに違いがある。従って、このような共分散行列に基づく統合処理では、複数の自己位置推定器が独立して推定した自己位置の座標系を高精度に統合することは難しい。
【0008】
第2に、例えばある自己位置推定器の推定精度が低下すると(例えば、推定処理が破綻した場合も含む)、統合結果が推定精度の低下した自己位置推定器の推定結果の影響を受けて統合性能が低下してしまう。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開2007−72592号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
従来の統合方式では、複数の推定器が推定した位置姿勢を高精度に統合することは難しいという問題があった。
【0011】
そこで、本発明は、複数の推定器が推定した位置姿勢を高精度に統合することのできる地図処理方法及びプログラム、並びにロボットシステムを提供することを目的とする。
【課題を解決するための手段】
【0012】
本発明の一観点によれば、互いに異なるセンサからの入力に基づいて自己位置を推定する複数の推定器の信頼度を前記複数の推定器に対応する信頼性評価モデルを用いて評価する評価処理と、前記複数の推定器からの推定結果に対して前記信頼性に応じた異なる統合処理を行う結合処理をコンピュータに実行させることを特徴とする地図処理方法が提供される。
【0013】
本発明の一観点によれば、互いに異なるセンサからの入力に基づいて自己位置を推定する複数の推定器の信頼度を前記複数の推定器に対応する信頼性評価モデルを用いて評価する評価手順と、前記複数の推定器からの推定結果に対して前記信頼性に応じた異なる統合処理を行う結合手順をコンピュータに実行させることを特徴とするプログラムが提供される。
【0014】
本発明の一観点によれば、自律移動型ロボットに設けられた互いに異なるセンサと、前記異なるセンサからの入力に基づいて自己位置を推定する複数の推定器と、前記複数の推定器の信頼度を前記複数の推定器に対応する信頼性評価モデルを用いて評価する評価部と、前記複数の推定器からの推定結果に対して前記信頼性に応じた異なる統合処理を行う結合部を備えたことを特徴とするロボットシステムが提供される。
【発明の効果】
【0015】
開示の地図処理方法及びプログラム、並びにロボットシステムによれば、複数の推定器が推定した位置姿勢を高精度に統合することが可能になる。
【図面の簡単な説明】
【0016】
【図1】ロボットの一例を示す斜視図である。
【図2】ロボットを含むロボットシステムの一例を示すブロック図である。
【図3】推定器側からの逐次的入力により統合ツリーが生長していく様子を説明する図である。
【図4】推定器側からの逐次的入力により統合ツリーが生長していく様子を説明する図である。
【図5】統合ツリーの規模を一定以下に抑えるための枝刈を説明する図である。
【図6】統合器の動作の概要を説明するフローチャートである。
【図7】統合ツリーの規模の増大を説明する図である。
【図8】統合ツリーの最新レイヤーから不良ノードを削除する処理を説明する図である。
【図9】統合ツリーのメンテナンスを説明する図である。
【図10】統合器の動作をより詳細に説明するフローチャートである。
【図11】経路評価を説明する図である。
【図12】オドメトリからロボットの移動により生じた位置姿勢の不確実さを算出するフィルタ処理を説明する図である。
【図13】隠れマルコフモデルを説明する図である。
【図14】統合ツリーの一例を示す図である。
【図15】各ノードに対する経路評価で得られる評価スコアの一例を示す図である。
【図16】比較例における統合結果の一例を説明する図である。
【図17】実施例における統合結果の一例を説明する図である。
【発明を実施するための形態】
【0017】
開示の地図処理方法及びプログラム、並びにロボットシステムでは、統合器が各推定器からの入力情報の信頼性を評価して、異なる信頼性のレベルに応じた異なる方式で統合履歴と関連付ける。この関連付けにより、統合履歴を表した統合ツリーが時間的に更新され、規模が増大していく。信頼性のレベルとは、信頼性を数量化した信頼度をさらに例えば「高」、「中」、「低」の3段階に分けたものを言う。
【0018】
また、統合ツリーの最新ノードから過去に辿って得られた推定経路を評価して下位のノードを削除することで、ツリー全体のメンテナンスを行いツリー規模を一定以下に維持するようにしても良い。
【0019】
以下に、開示の地図処理方法及びプログラム、並びにロボットシステムの各実施例を図面と共に説明する。
【実施例】
【0020】
図1は、ロボットの一例を示す斜視図である。図1に示すロボット100は、例えばモータなどにより駆動される台車101、車輪102、各種内的センサ及び外的センサ、及び例えばCPU(Central Processing Unit)などのプロセッサにより形成された制御部を有する周知の基本構成を有する自律移動型ロボットで形成可能である。内的センサには、レーザレンジファインダ(LRF:Laser Range Finder)2,3、及びカメラ3が含まれる。LRF2とLRF3は、例えば異なる種類のLRFであっても良い。異なる種類のLRFには、計測範囲の異なるLRFも含まれる。
【0021】
図2は、ロボットを含むロボットシステムの一例を示すブロック図である。この例では、ロボットシステム200は、自律移動型ロボット100のナビゲーションシステムとしても機能する。ここでは説明の便宜上、推定器が3つの場合を説明するが、推定器は少なくとも2つあれば良い。
【0022】
推定器4は、上記CPUで形成可能であり、LRF1と記憶部5に格納された地図1Aに基づいてロボット100の自己位置を推定するソフトウェアモジュール(推定モジュール)を形成する。推定器6は、上記CPUで形成可能であり、LRF2と記憶部7に格納された地図1Bに基づいてロボット100の自己位置を推定するソフトウェアモジュールを形成する。推定器8は、上記CPUで形成可能であり、カメラ3と記憶部9に格納された地図1Cに基づいてロボット100の自己位置を推定するソフトウェアモジュールを形成する。
【0023】
統合器10は、上記CPUで形成可能であり、推定器4,6,8の自己位置推定結果を統合するソフトウェアモジュール(統合モジュール)を形成する。統合器10において、推定器信頼性評価部11は、推定器4,6,8からの入力の信頼性を評価して、例えば「高」>「中」>「低」の3段階の信頼性のレベルに分ける。信頼性のレベルとは、信頼性を数量化した信頼度をさらに例えば「高」、「中」、「低」の3段階に分けたものを言う。各信頼性のレベルによって、後述する統合ツリーへの結合が異なる。結合部12は、信頼性のレベルが「高」(以下、説明の便宜上、信頼度が「高」とも言う)の場合、推定器からの入力を統合するためのフィルタの観測値としてフィルタ状態の更新処理を行い、新しいノードを作成して統合ツリーに追加する、推定器データの統合ツリーへの結合処理を行う。信頼性のレベルが「低」の場合、オドメトリのみでフィルタ状態の更新処理を行い、新しいノードを作成して統合ツリーに追加する。信頼性のレベルが「中」の場合、「高」と「低」の場合で行った処理を全て行う。これにより、統合ツリーの規模が増大していく。
【0024】
統合器10において、結合良さの評価部13は、統合ツリーの規模を一定以下にするための枝刈を必要に応じて行うために、統合ツリーへの結合の良さを評価する。この評価は、統合器10において推定器からの入力を統合するフィルタが推定した位置姿勢からロボット100の動きを算出して、算出した動きとオドメトリ(Odometry)部20で計測した動きと比較して動きの尤度を算出することで行うことができる。オドメトリ部20は、ロボット100の移動量を、モータ18または台車101の車輪102の回転を検出するエンコーダ、または、ロボット100に設けられたジャイロセンサ(または、ジャイロスコープ)などの内的センサからの検出信号に基づいて計算する周知の構成を有する。図2では、エンコーダ及びジャイロセンサがエンコーダ・ジャイロ部19に含まれる。
【0025】
統合ツリーのメンテナンス部14は、推定経路中の評価対象で下位のノードを統合ツリーから削除し、次に統合ツリー全体をスキャンして、子を持っていないノードを削除する。さらに1つの子だけを持っている親ノードを子ノードと併合する。統合ツリーは、記憶部15に格納される。
【0026】
統合器10は、例えば、推定器4で推定された地図Aの座標系の自己位置(または、推定器8で推定された地図Cの座標系の自己位置)と、推定器6で推定された地図Bの座標系の自己位置を統合する統合処理を行い、統合結果を例えばロボット100の移動経路を計画あるいは決定する移動経路計画部16に供給する。この例では、移動経路計画部16が決定した移動経路は、上記CPUで形成可能な台車移動コントローラ17に供給される。台車移動コントローラ17は、移動経路に応じてモータ18を駆動して車輪102を回線することで台車101を例えば図1の矢印方向へ移動させる。オドメトリ部20で計算されたロボット100の移動量は、各推定器4,6,8に供給される。
【0027】
統合器10は、例えば、推定器4で推定された地図Aの座標系の自己位置と、推定器6で推定された地図Bの座標系の自己位置と、推定器8で推定された地図Cの座標系の自己位置を統合する統合処理を行っても良いことは言うまでもない。
【0028】
ロボットシステム200がロボット100で形成されている場合、図2に示す各部はロボット100に設けられる。一方、ロボットシステム200がロボット100及び当該ロボット100を制御する当該ロボット100とは別体の情報処理装置(すなわち、サーバなどのコンピュータ)で形成されている場合、LRF1,2及びカメラ3以外の部分を情報処理装置に設けても、統合器10を情報処理装置に設けても、統合器10及び移動経路計画部16を情報処理装置に設けても良い。情報処理装置は、ロボット100と通信可能な通信部(または、インタフェース)、CPUなどのプロセッサ、及びプロセッサが実行するプログラム及び各種データを記憶する記憶部を有する周知の構成を有する汎用のコンピュータで形成可能である。
【0029】
少なくとも統合器10が行う統合処理を実行するプログラムを記憶する記憶部には、半導体記憶装置、磁気、光、光磁気記録媒体などを含む各種周知のコンピュータ読み取り可能な記憶媒体を使用可能である。
【0030】
図3及び図4は、推定器側からの逐次的入力により統合ツリーが生長していく様子を説明する図である。図3は任意の時刻t1,t2での処理、図4は任意の時刻t3,t4での処理を夫々示し、t1<t2<t3<t4である。つまり、時刻t1が最も早く、時刻t4が最も遅い時刻である。図3及び図4において、左側が推定器側の処理を示し、右側が統合器側の処理を示す。図3及び図4では説明の便宜上、推定器4で推定された地図Aの座標系の自己位置と、推定器6で推定された地図Bの座標系の自己位置を統合する統合処理を行うものとする。また、推定器4,6を夫々推定器A,Bと図示し、推定器4のIDはA、推定器6のIDはBで示す。
【0031】
図3に示す時刻t1では、統合器10は、ステップST1で推定器A,Bから入力した推定値をツリーの持つ情報のうち観測値へコピーし、ノードの持つの情報のうち状態ベクトルへコピーする。また、ステップST1は、推定器A,Bから入力したオドメトリをツリーの持つ情報のうちオドメトリへコピーし、図3にハッチング付きの○印で表すルートノード(Root Node)を生成する。さらに、ステップST1は、ノードの持つ情報のうち推定器A,Bの隠れマルコフモデル(HMM:Hidden Markov Model)を初期化する。以下の説明では、ルートノードはハッチング付きの○印で表し、子ノードはハッチング無しの○印で表す。
【0032】
時刻t2では、統合器10は、ステップST2で推定器A,Bから入力した推定値及びオドメトリをツリーの持つ情報の観測値及びオドメトリへコピーする。これにより、統合器10は、ステップST3でオドメトリ及び状態ベクトルに基づきHMMを用いて推定器Bへの信頼度を計算する。統合部10は、ステップST4で計算された推定器Bへの信頼度が「高」、「中」、「低」であるか(この例では「中」)に応じて子ノードを追加し、各子ノードの状態ベクトルを更新すると共に、親ノード(この場合、ルートノード)のHMMを各子ノードへコピーする。
【0033】
図4に示す時刻t3では、統合器10は、ステップST5で推定器A,Bから入力した推定値及びオドメトリをツリーの持つ情報の観測値及びオドメトリへコピーする。これにより、統合器10は、ステップST6で各ノードについて、上記ステップST3と同様にHMMを用いて推定器Aへの信頼度を計算し、上記ステップST4と同様に信頼度によって各ノードに子ノードを追加し、子ノードの状態ベクトルを更新すると共に、親ノードのHMMを各子ノードへコピーする。
【0034】
時刻t4では、統合器10は、ステップST7で上記ステップST5と同様の処理を行い、ステップST8で上記ステップST6と同様の処理を行う。
【0035】
このようにして、種類の異なる複数の内的センサからの入力(計測情報)に基づいて自己位置を推定する複数の推定器の信頼度をHMMを用いて計算する。各推定器に対応するHMMの計算に用いるパラメータは、当該推定器からの入力(推定値及びオドメトリ)に含まれる。また、信頼度に応じてルートノードに子ノードを追加することで、統合ツリーを作成する。従って、記憶部15に格納される統合ツリーの規模が成長して増大していく。この統合ツリーに含まれる最新のノード(最新レイヤーのノード)から過去のノードを辿ってルートノードまでの経路を評価して、削除対象するべきノードを検出して削除することで、統合ツリーの規模を一定以下に抑えることもできる。
【0036】
図5は、統合ツリーの規模を一定以下に抑えるための枝刈を説明する図である。図5中、ノードは図3及び図4と同様に図示されており、さらに、削除対象のノードを●印で表す。図5中、破線で囲まれたノードは、最新レイヤーのノードを示す。図5(a)に示す統合ツリーの推定経路の評価の結果、例えば図5(b)に●印で表す不良ノードが検出されると、図5(c)に示すようにこれらの不良ノードを削除する。次に、子ノードを持っていない図5(d)に●印で表すノードを抽出する。この場合、子ノードを持っていないノードのうち、最新レイヤーに存在するノードは抽出の対象外とする。次に、図5(e)に示すように、抽出された、子ノードを持っていないノードを削除する。さらに、図5(f)に破線で囲んで示すように、1つの子だけを持つノードを抽出する。この場合も、1つの子だけを持つノードのうち、最新レイヤーに存在するノードは抽出の対象外とする。そして、図5(g)に示すように、図5(f)に破線で囲んで示す子ノードと親ノードを1つのノードにマージする。このようにして、この例では図5(a)に示す統合ツリーの規模を一定以下に抑えるための枝刈を行った結果、統合ツリーの規模は図5(g)に示す如き規模となる。なお、統合ツリーの規模を一定以下に抑えるための枝刈の詳細については後述する。
【0037】
図6は、統合器の動作の概要を説明するフローチャートである。図6において、統合器10は一点鎖線で囲まれた処理を実行し、(1)〜(28)は図6の各処理でやり取りされる情報の流れの一例を示す。ステップS104〜S120は、統合部10を形成するCPUの各機能が実行する処理(または、手順)に相当する。推定器4,6,8の計測値と地図A,B,Cとに基づいて推定されたロボット100の位置姿勢は、(1),(2),(3)で示すように統合器10に入力される。
【0038】
統合器10は、初めて推定器4からの入力を受け取った時、t=0として統合ツリーを初期化する。具体的には、図5に示したようなルートノードを1つ生成して、推定器4からの表1に示す如き入力をルートノードにコピーすると共に、表2に如きデータセットを持たせる。表2中、Nはロボットシステム200が有する推定器に任意に割り当てられた「1」から開始する連番を示し、この例では推定器のID番号とは異なる。この例では、3つの推定器4,6,8を用いているので、表2において「推定器[1]」は推定器4、「推定器[2]」は推定器6、「推定器[N]」は推定器8を表す。
【0039】
【表1】

【0040】
【表2】

【0041】
(1) 推定器4は、表1の如きデータを統合器10に入力する。
【0042】
(2) 推定器6は、表1の如きデータを統合器10に入力する。
【0043】
(3) 推定器8は、表1の如きデータを統合器10に入力する。
【0044】
(4) ステップS104では、統合器10が推定器4,6,8からの最新入力を待ち合わせる入力待ち状態となり、新しい入力があるか否かを示すフラグf1を管理する。上記の如く、統合器10への入力は表1に示す如き内容のデータである。ステップS105は、フラグf1が推定器からの新しい入力があることを示すと、新たな入力値を共有メモリに書き込む。共有メモリは、統合器10内の記憶部で形成可能である。
【0045】
(5) ステップS106では、統合器10が共有メモリから入力値を読み出し、統合ツリーを初期化するか否かを判定する。統合器10が初めて推定器4,6,8からの入力を受け取った場合、判定結果はYESであり上記の如く統合ツリーの初期化を行う。
【0046】
(6) 統合器10は、初期化を行うか否かを示すフラグf2と共有メモリから読み出した推定器からの入力値を後述するステップS107に入力する。
【0047】
(8) 統合器10は、推定器からの入力に含まれているオドメトリ成分を後述するステップS110に入力する。
【0048】
(9) 統合器10は、推定器からの入力に含まれているロボット100の位置姿勢の推定結果成分を後述するステップS111に入力する。
【0049】
(10) 統合器10は、推定器からの入力に含まれている推定器のID、及びロボット100の位置姿勢の推定結果成分を後述するステップS112に入力する。
【0050】
ステップS107では、統合器10が上記の如く統合ツリーを初期化する。
【0051】
(7) ステップS108では、統合器10が統合ツリーを統合器10内の記憶部で形成可能な共有メモリに保持する。
【0052】
(11) 統合器10は、共有メモリに保持された統合ツリーをステップS109に入力する。
【0053】
(19) 統合器10は、共有メモリに保持された統合ツリーを後述するステップS115に入力する。
【0054】
(12) ステップS109では、統合器10が統合ツリーの最新レイヤーの全ノードを取得する。統合ツリーが既に初期化されていれば、最新レイヤーにある全てのノードをリストとして取得する。統合器10は、最新レイヤーから抽出したノードのリストをステップS110に入力する。ステップS110では、統合器10がレイヤー上の全ノードの状態をオドメトリによる予測に基づいて更新する。具体的には、ステップS109で取得したノードのリスト(ノードリスト)の全てのノード(メンバー)に対して、図10と共に後述する式(11)、式(12)に基づいて予測更新を行う。
【0055】
(13) 統合器10は、図10と共に後述する式(20)を計算するための予測更新したフィルタ状態、及び予測した観測値の共分散行列をステップS111に入力する。ステップS111は、各ノードの持つHMMによる入力値の信頼性評価を図10と共に後述する式(21)〜(24)に基づいて行い、推定器から入力したロボット100の位置姿勢の推定結果の信頼性のレベルを計算する。
【0056】
(14) 位置姿勢の推定結果の信頼性のレベルが「高」であると、統合器10は、信頼性のレベル、図10と共に後述する式(18),(19)を計算するための予測更新したフィルタ状態、予測した観測値、及び予測した観測値の共分散行列をステップS112に入力する。信頼性のレベルが「高」であると、ステップS112では、統合器10が信頼性のレベルが「高」と評価されたノードについてノードの状態を図10と共に後述する式(18),(19)に基づいて更新する。
【0057】
(15) 位置姿勢の推定結果の信頼性のレベルが「低」であると、統合器10は、信頼性のレベル、及び予測更新したフィルタ状態を後述するステップS113に入力する。
【0058】
(15−1) 位置姿勢の推定結果の信頼性のレベルが「中」であると、統合器10は、信頼性のレベル、図10と共に後述する式(18),(19)を計算するための予測更新したフィルタ状態、予測した観測値、及び予測した観測値の共分散行列をステップS112に入力する。信頼性のレベルが「中」であると、ステップS112では、統合器10が信頼性のレベルが「中」と評価されたノードについてノードの状態を図10と共に後述する式(18),(19)に基づいて更新する。
【0059】
(15−2) 位置姿勢の推定結果の信頼性のレベルが「中」であると、統合器10はさらに、信頼性のレベル、及び予測更新したフィルタ状態を後述するステップS113に入力する。
【0060】
(16) 統合器10は、観測更新したフィルタ状態をステップS113に入力する。ステップS113は、親ノードに追加する子ノードを生成する。
【0061】
(17) 統合器10は、新しいフィルタ状態を持った子ノードのリストをステップS114に入力する。これにより、ステップS114では、統合器10が生成した子ノードを各親ノードに追加する。信頼性のレベルが「高」と評価されたノードには1つだけの子ノードを追加する。信頼性のレベルが「低」と評価されたノードにも1つだけの子ノードを追加する。信頼性のレベルが「中」と評価されたノードには2つの子ノードを追加する。
【0062】
図7は、統合ツリーの規模の増大を説明する図である。図7中、HL,ML,LLは、夫々信頼性のレベルが「高」、「中」、「低」のノードを示す。例えば時刻t+1に推定器からの最新の入力があった時に、統合ツリーから時刻tに作成したノードを全て抽出する。ただし、t+1=1の場合、抽出されるノードはルートノードのみとなる。次に、各ノードに対して以下の処理を行う。ここで、新しいノードΦを1つ作成しておき、現在処理しているノードをΨで表すものとする。ノードΨからオドメトリを抽出して、入力された最新のオドメトリと合わせて、図10と共に後述する式(1)〜(6)のようにノードΨに保持している推定状態を更新する。更新した推定情報は、ノードΦに保存し、これと同時に、最新のオドメトリもノードΦに保存する。信頼性のレベルは、図10と共に供述する式(21)〜(24)に基づいて計算することができる。
【0063】
信頼性のレベルが「高(HL)」の場合、図10と共に後述する式(16)〜(19)に基づいて新しいノードΦのフィルタ状態の観測更新を行って、ノードΨに図7中時刻t+1の左側に示すように子ノードとして追加する。信頼性のレベルが「低(LL)」の場合、新しいノードΦのフィルタ状態の観測更新は行わず、ノードΨに図7中時刻t+1の中央に示すように子ノードとして直接追加する。信頼性のレベルが「中(ML)」の場合、図7中時刻t+1の右側に示すように新しいノードΦをコピーして、もう1つのノードΦ’を作成する。ノードΦ’のフィルタ状態の観測更新を行い、ノードΨに子ノードとして追加する。また、ノードΦのフィルタ状態の観測更新は行わず、ノードΨに2番目の子ノードとして直接追加する。
【0064】
(18) 統合器10は、子ノードを追加した統合ツリーをステップS108に入力する。ステップS108では、統合器10が統合ツリーを保持するメモリを更新する。統合ツリーは、統合器10内の記憶部で形成可能である。
【0065】
(19) 統合器10は、メモリから統合ツリーを読み出してステップS115に入力する。ステップS115は、統合ツリーに含まれている最新レイヤー上にある全てのノードをリストとして取得する。ステップS115で取得されるノードは、ステップS114で統合ツリーに新たに追加した子ノードである。
【0066】
(20) 統合器10は、最新ノード、すなわち、ステップS114で新たに追加した子ノードを、ステップS116に入力する。ステップS116では、統合器10がリスト内の各ノードに対して、ルートノードまで辿って得られた全経路を抽出する。
【0067】
(21) 統合器10は、抽出した全経路のリストをステップS117に入力する。ステップS117では、統合器10が抽出した各経路に対して、オドメトリで測定した運動パターンとフィルタで推定した運動パターンを比較して、図10と共に後述する式(25)に基づいてリスト中の経路を評価する経路評価を行う。
【0068】
(22) 統合器10は、経路評価により得られた経路の良さを表す評価スコアのうち、評価スコアが閾値より低い下位のノードのリストをステップS118入力する。ステップS118では、統合器10が下位のノードを統合ツリーから削除する。
【0069】
図8は、統合ツリーの最新レイヤーから不良ノードを削除する処理を説明する図である。最新レイヤーにK個のノードが含まれているとすると、Kが事前に設定した閾値Kthreshより大きくなるとノードの削除処理を行う。この場合、K−Kthresh個のノードを削除することになる。各ノードの対応する経路の評価スコアは、例えばΩ(P(Φ)),k=0,1,...,k,...Kで表される。そこで、ノードを評価スコアΩ(P(Φ))の昇順でソートし、下位のK−Kthresh個のノードを最新レイヤーから削除することで、統合ツリーは図8(a)に示す状態から図8(b)に示す状態に変化する。図8(a)では、削除対象の不良ノードを●印で表す。
【0070】
(23) 統合器10は、ステップS117の経路評価により得られた経路の良さを表す評価スコアをステップS120に入力する。ステップS120では、統合器10が統合結果と信頼性の評価結果を出力する。具体的には、経路の評価スコアのトップノードが持っているフィルタ推定値を統合ツリーの処理結果とし、後述するアプリケーションに出力する。また、これと同時に、この処理結果と推定した信頼性のレベルを推定モジュールを形成する推定器にフィードバックする。
【0071】
(24) 統合器10は、ステップS118により下位ノードが削除された統合ツリーをステップS108に入力して、統合ツリーを保持するメモリを更新する。
【0072】
なお、ステップS119では、統合器10が統合ツリーのメンテナンスを行う。図9は、統合ツリーのメンテナンスを説明する図である。統合ツリーのメンテナンスでは、図9(a)に示すように、最新レイヤーを除き、子ノードを持っていないノードを統合ツリーから抽出し、図9(b)に示すように抽出した子ノードを統合ツリーから削除する。また、図9(c)に破線で囲んで示すように、最新レイヤーを除き、1つの子だけを持つノードを統合ツリーから抽出する。そして、図9(d)に示すように、図9(c)に破線で囲んで示す子ノードと親ノードを1つの新しいノードにマージすることで、子ノードの保持しているデータを新しいノードのデータとする。このような統合ツリーのメンテナンスは、図5(d)〜図5(f)と共に説明した統合ツリーの規模を一定以下に抑えるための枝刈と同様である。
【0073】
(25) 統合器10は、メンテナンスを行った統合ツリーをステップS108に入力してメモリに保持する。
【0074】
(26) 統合器10は、経路の評価スコアのトップノードが持っているフィルタ推定値を統合ツリーの処理結果として、例えばアプリケーションを実行するステップS121に入力する。これにより、アプリケーションには、統合ツリー方式で推定したロボット100の位置姿勢の情報を入力できる。アプリケーションは、例えば統合ツリーから推定したロボット100の位置姿勢を用いてロボット100の移動経路を計画あるいは決定する移動経路計画部16が実行するものである。
【0075】
(27) 統合器10は、上記の一連の統合処理が終了したことを示すフラグf3をステップS104に入力する。
【0076】
(28) 統合器10は、統合ツリー方式で推定したロボット100の位置姿勢、推定した信頼性のレベルを、推定モジュールへの診断結果として、推定モジュールを形成する推定器にフィードバックする。
【0077】
図10は、統合器の動作をより詳細に説明するフローチャートである。図10において、 (1)〜(48)は図10の各ステップでやり取りされる情報の流れの一例を示す。ステップS201〜S234は、統合部10を形成するCPUの各機能が実行する処理(または、手順)に相当する。ステップS201は、ロボット100またはロボット100とは別体の情報処理装置から入力される統合処理開始コマンドに応答して統合処理を開始する。
【0078】
(1) 統合処理の開始を示す開始コマンドは、ステップS202に入力され、ステップS202は、推定器4,6,8からの入力待ち状態となり、推定器4,6,8から新しい入力があるか否かをチェックする。
【0079】
(2) 新しい入力があると、新しい入力があることを示すフラグf1をステップS203に入力する。ステップS203は、入力されたフラグが終了フラグであるか否かを判定する。ステップS203の判定結果がNOであると、フラグをステップS205に入力する。他方、ステップS203の判定結果がYESであると、ステップS204で統合処理は終了する。
【0080】
ステップS205は、入力されたフラグが新しい入力を示すフラグf1であるか否かを判定する。ステップS205の判定結果がYESであると処理はステップS206へ進み、判定結果がNOであると処理はステップS202へ戻る。
【0081】
(5) ステップS205の判定結果がNOであると、新しい入力の待ちコマンドをステップS202に入力する。
【0082】
(6) ステップS205の判定結果がYESであると、推定器からの入力データを例えば上記の表1の如き形式でステップS206に入力する。ステップS206は、このような推定器からの入力データから推定器の推定情報(すなわち、推定結果)だけを抽出する。
【0083】
(7) ステップS206の後、データの抽出完了フラグf4、及び推定器の入力データをステップS207に入力する。ステップS207は、例えば上記の表1の如き形式の推定器の入力データからオドメトリを抽出する。
【0084】
(8) ステップS206の後、推定器が推定したロボット100の位置姿勢、及び推定器の推定精度を表す推定結果の共分散行列を後述するステップS223に入力する。
【0085】
(10) ステップS206の後、上記(8)と同様に、推定器が推定したロボット100の位置姿勢、及び推定器の推定精度を表す推定結果の共分散行列を後述するステップS218に入力する。
【0086】
(9) ステップS207の後、オドメトリの抽出が完了したことを示すフラグf5、及び推定器の入力データをステップS208に入力する。ステップS208は、入力元の推定器のID番号を識別して抽出する。
【0087】
(21) ステップS207の後、オドメトリを後述するステップS216に入力する。
【0088】
(11) ステップS208の後、推定器のID番号の抽出が完了したことを示すフラグf6をステップS209に入力する。ステップS209は、統合ツリーの最新レイヤーにあるノードを全て抽出して、抽出したノードのノードリストを作成する。ここで、最新レイヤーとは、前回の処理で統合ツリーに追加した新しいノードを含むレイヤーを言う。
【0089】
(12) ステップS208の後、抽出した推定器のID番号を後述するステップS214に入力する。
【0090】
(13) 抽出された、最新レイヤーにあるノードの数(ノード数)をステップS210に入力する。ステップS210は、ノード数がゼロ(0)であるか否かを判定し、判定結果がYESであれば統合ツリーが構築されていないことが分かるので処理はステップS211へ進み、判定結果がNOであれば処理はステップS212へ進む。
【0091】
(14) ステップS210の判定結果がYESであると、統合ツリーの初期化コマンドをステップS211に入力する。ステップS211は、初期化コマンドに応答して統合ツリーを上記の如く初期化する。
【0092】
(15) ステップS211の後、入力待ちコマンドをステップS202に入力する。
【0093】
(16) ステップS210の判定結果がNOであると、作成したノードリストをステップS212に入力する。ステップS212は、ノードリストからノードを1つ抽出して以下に説明するステップS213,S214,S215の処理を開始し、抽出したノードをNDとする処理を、ノードリスト中の未処理の各ノードに対して行う。
【0094】
(17) ステップS212の後、上記の表2の如きデータセットを持つノードNDをステップS213に入力する。
【0095】
(18) ステップS212の後、上記(17)と同様にして、上記の表2の如きデータセットを持つノードNDをステップS214に入力する。
【0096】
(19) ステップS212の後、上記(17)と同様にして、上記の表2の如きデータセットを持つノードNDをステップS215に入力する。
【0097】
ステップS213は、ノードNDの持つフィルタデータからこれまでにフィルタが推定したロボット100の位置姿勢、共分散行列、及びオドメトリを抽出する。
【0098】
(20) ステップS213の後、フィルタがこれまでに推定したロボット100の位置姿勢、及びオドメトリをステップS216に入力する。
【0099】
ステップS214は、ステップS208の後(12)で入力した推定器のID番号を使ってノードNDから推定器IDに対応したHMMを抽出する。ノードNDは、推定器数分のHMMを持っているが、この処理では、統合器10にデータを出力した推定器の対応するHMMだけを抽出する。
【0100】
(25) ステップS214の後、HMMデータ、すなわち、これまで計算した状態「1」にある確率、状態「2」にある確率をステップS218に入力する。HMMデータについては、図13と共に供述する。
【0101】
ステップS215は、ノードからこれまでの経路の評価スコアを抽出する。具体的には、以下の経路評価処理を行うために、ノードNDに保存されているルートノードからの経路に対する評価スコアを抽出する。
【0102】
【数1】

【0103】
(48) ステップS215の後、ノードNDまでの経路評価スコアを後述するステップS229に入力する。
【0104】
ステップS216は、オドメトリで位置姿勢を予測更新する。具体的には、(21)で入力した新しいオドメトリと、(20)でノードNDに保存されているオドメトリを使って、以下に説明する式(15)までの処理を行う。
【0105】
【数2】

【0106】
【数3】

【0107】
【数4】

【0108】
【数5】

【0109】
【数6】

【0110】
図13は、隠れマルコフモデル(HMM)を説明する図である。HMMは、各推定器の性能に合わせて構築される。図13に示すようなHMMでは、状態「1」は推定器の入力が信頼できる状態、状態「2」推定器の入力が信頼できない状態を表す。観測シンボル「0」は、推定器の入力がフィルタの予測ゲート外にあることを示し、観測シンボル「1」は推定器の入力がフィルタの予測ゲート内にあることを示す。
【0111】
【数7】

【0112】
次に、HMMのパラメータの設定について説明する。HMMの状態遷移確率というパラメータは、HMMを使って評価する対象の推定器の性能によって決める。例えば、LRFによる自己位置推定と、カメラによる(例えば、画像ランドマークを用いた)自己位置推定を行う2つの推定器(図1の推定器4または6と、推定器8に相当)があるものとする。この場合、2つの推定器は以下のような性質c1,c2を有する。
【0113】
c1:LRFの計測情報を使って自己位置推定を行う際、前回のロボット100の推定位置の近傍で今回の新しい位置を探す。この場合、前回の推定位置が間違っていたら、今回探した結果も間違いである可能性が高い。
【0114】
c2:逆に、画像ランドマークを使う場合、前回のロボット100の推定位置が間違っていたとしても、今回推定した結果は真の位置に近づいていく。
【0115】
このため、状態遷移マトリクスでは、例えば
LRFの場合: a00=0.90, a01=0.10, a10=0.01,a11=0.99;
カメラの場合: a00=0.95, a01=0.05, a10=0.10,a11=0.90;
に設定される。ここで、
a00: 前回は信頼でき、今回も信頼できる確率を示し、LRFとカメラの特性からカメラの方はより高く設定されている。
a01: 前回は信頼でき、今回は信頼できない確率を示し、a00+a01=1となるように設定している。
a10: 前回は信頼できず、今回は信頼できる確率(リカバリー性能)を示し、LRFの場合はリカバリー機能が弱いため、カメラに比べで低く設定されている。
a11: 前回は信頼できず、今回も信頼できない確率を示し、a10+a11=1となるように設定される。
図10のステップS216以降の処理の説明に戻る。
【0116】
(22) ステップS216の後、推定器の推定値に対しての予測値、及び予測ゲート(上記の式(14)と式(15)の計算結果)のデータをステップS218に入力する。
【0117】
(23) ステップS216の後、上記の式(11)と式(12)の計算結果のデータをステップS217に入力する。ステップS217は、新しいノードを1つ作成し、そのノードに(23)で入力されるデータを保存する。
【0118】
(24) ステップS217の後、新しいノードのデータをステップS222に入力する。
【0119】
ステップS218は、上記の式(20)に基づいて入力した推定器の推定値の尤度を計算し、尤度を上記の式(22)のように2値化することで、観測シンボルを生成する。
【0120】
(26) ステップS218の後、2値化の結果である観測シンボルをステップS219に入力する。ステップS219は、上記の式(21)に基づいてHMMの各状態を更新する。
【0121】
(27) ステップS219の後、上記の式(21)の計算結果から得られたHMMの各状態にある尤度をステップS220に入力する。ステップS220は、以下の式(23)に基づいて信頼性を算出し、以下の式(24)に基づいて信頼性のレベルを算出する。
【0122】
【数8】

【0123】
(28) ステップS220の後、式(24)に基づいて算出された信頼性のレベルεをステップS221に入力する。ステップS221は、信頼性のレベルεがHL(高)、ML(中)、LL(低)のいずれかであるかを判定する。ステップS221の判定結果がHLであると、処理はステップS222へ進む。ステップS221の判定結果がLLであると、処理はステップS224へ進む。また、ステップS221の判定結果がMLであると、処理はステップS222及びステップS224へ進む。
【0124】
(29) ステップS221の判定結果がHLであると、HLを示す処理フラグをステップS222に入力する。
【0125】
(30) ステップS221の判定結果がLLであると、LLを示す処理フラグをステップS224に入力する。
【0126】
(31) ステップS221の判定結果がMLであると、MLを示す処理フラグをステップS222及びステップS224に入力する。
【0127】
ステップS222は、新しいノードを1つ作成して(24)で入力されたデータをそのノードに保存することで、新しいノードを複製する。
【0128】
(32) ステップS222の後、複製したノードのデータをステップS223に入力する。ステップS223は、上記の式(16)〜式(19)に基づいて複製したノードの状態を更新すると共に、式(18)及び式(19)の計算結果のデータを複製したノードに保存する。
【0129】
(33) ステップS223の後、状態を更新した複製ノードのデータをステップS225に入力する。
【0130】
一方、ステップS224は、新しいノードを1つ作成して(24)で入力されたデータをそのノードに保存することで、新しいノードを複製する。
【0131】
(34) ステップS224の後、新しいノードに保存したデータをステップS225に入力する。ステップS225は、図7と共に説明したように、HLの場合はステップS223で処理したノード1つ、LLの場合はステップS224で複製したノード1つを親ノードNDに子ノードとして追加し、MLの場合がステップS223及びステップS223で処理した2つのノードを親ノードNDの子ノードとして追加する、ノードを子ノードとして親ノードに追加する処理を行う。
【0132】
(35) ステップS225の後、処理したノードNDのデータをステップS226に入力する。ステップS226は、全てのノードの処理が完了したか否かを判定し、判定結果がNOであると(36)で処理はステップS212へ戻り、判定結果がYESであると処理はステップS227へ進む。具体的には、ステップS226は、(16)で入力されたノードリストからノードNDを削除し、ノードリスト中の残りのノード数がゼロ(0)であるか否かを判定する。残りのノード数がゼロであれば判定結果がYESであり、残りのノード数がゼロでなければ判定結果がNOである。
【0133】
(37) ステップS226の判定結果がYESであると、全てのノードの処理が完了したことを示す処理完了フラグをステップS227に入力する。ステップS227は、統合ツリーから最新レイヤーの全てのノードを抽出してノードリストを作成する。この場合、最新ノードは、ステップS225で追加したばかりの子ノードである。
【0134】
(38) ステップS227の後、ノードリストをステップS228に入力する。ステップS228は、ノードリストから未処理のノードを1つを抽出する。
【0135】
(39) ステップS228の後、抽出されたノードをステップS229に入力する。ステップS229は、上記の式(12)に基づいて、抽出されたノードからルートノードまで辿った経路の良さを表す評価スコアを更新し、式(12)の計算結果をそのノードに保存する。
【0136】
(40) ステップS229の後、処理されたノードのデータをステップS230に入力する。ステップS230は、全てのノードの処理が完了したか否かを判定し、判定結果がNOであると処理はステップS228へ戻り、判定結果がYESであると処理はステップS231へ進む。具体的には、ステップS230は、(38)で入力されたノードリストから、(40)で入力された処理されたノードを削除し、ノードリスト中の残りのノード数がゼロ(0)であるか否かを判定する。残りのノード数がゼロであれば判定結果がYESであり、残りのノード数がゼロでなければ判定結果がNOである。
【0137】
(41) ステップS230の判定結果がYESであると、処理完了フラグ、各経路とその経路への評価スコアをステップS231に入力する。
【0138】
(42) ステップS230の判定結果がNOであると、ノードリスト中の残りのノードのデータをステップS228に入力する。
【0139】
ステップS231は、各経路への評価スコアを昇順でソートすると共に、評価スコアが低い下位の経路に含まれている子ノードを抽出してリストを作成する。
【0140】
(43) ステップS231の後、削除対象となる、評価スコアが低い下位の経路に含まれている子ノードのリストをステップS232に入力する。ステップS232は、図8と共に説明した処理を行うことで、統合ツリーから(43)で入力されたリストに含まれている子ノードを削除する、子ノード削除処理を行う。
【0141】
(44) ステップS232の後、子ノードを削除した統合ツリーのデータをステップS233に入力する。ステップS233は、図9と共に説明したように、統合ツリーのメンテナンス処理を行う。具体的には、統合ツリーの最新レイヤーからルートノードまでを辿って(スキャンして)、子ノードを持っていないノードを削除する。また、子が1つだけの親ノードを子ノードとマージする。
【0142】
(45) ステップS233の後、メンテナンスを行った統合ツリーのデータをステップS234に入力する。ステップS234は、信頼性評価結果及び統合結果出力処理を行う。具体的には、ステップS220で計算して(28)で入力されたデータ、及び経路の評価スコアが最大値のノードにあるロボット100の位置姿勢の状態を共有メモリに書き込み、アプリケーションと共有する。アプリケーションは、例えば統合ツリーから推定したロボット100の位置姿勢を用いてロボット100の移動経路を計画あるいは決定する移動経路計画部16が実行するものである。
【0143】
(46) ステップS234の後、入力待ちコマンドをステップS202に入力する。
【0144】
(47) ステップS234の後、推定器への信頼性のレベル、及び統合ツリーから推定したロボットの位置姿勢の結果をステップS235に入力する。ステップS235は、統合器10の外部、例えば、図2に示す移動経路計画部16により実行される。ステップS235は、推定器への信頼性のレベル、及び統合ツリーから推定したロボットの位置姿勢の結果に基づいて、例えば移動経路計画などを実行する。
【0145】
図14は、統合ツリーの一例を示す図である。図14中、ノードは○印で表し、最新ノードは◎印で表すと共に、◎印の中央部分が濃い程経路の評価スコアが高いことを示す。また、隣り合う2本の水平線で囲まれた帯状の領域は1つのレイヤーを示し、ノードの横に示されている数字は経路番号を示す。
【0146】
図15は、図14に示す統合ツリーの各ノードに対する経路評価で得られる評価スコアの一例を示す図である。図15では、1行に10個の異なるノード番号の評価スコアが示されている。ノードのノード番号は、例えば統合ツリーの最上位レイヤーから最下位レイヤーまで、各レイヤーにおいて図14中左から右の順番で各ノードに割り当てられる。
【0147】
図16は、比較例における統合結果の一例を説明する図である。図16及び後述する図17は、ロボット100が部屋の中を自律移動した場合に自己位置の推定結果から得られる移動経路の平面図を示す。図16及び図17において、部屋の中にある5個の四辺形は、例えば机である。
【0148】
図16中、(a)はカメラ3を用いる推定器8によるロボット100の自己位置の推定結果に基づく経路を一点鎖線L1で示し、(b)は5.0mの計測範囲を有するLRF2を用いる推定器6によるロボット100の自己位置の推定結果に基づく経路を二点鎖線L2で示し、(c)は従来のカルマンフィルタを用いた(すなわち、統合ツリーを用いない)統合結果に基づく経路を実線L3で示す。また、破線で囲まれた箇所は、図16(a)では経路が精度良く推定されているものの、図16(b)では経路の精度が著しく低下しているため、図16(a),(b)が統合された図16(c)に示す経路では統合結果が図16(b)の精度が著しく低下した経路の悪影響を受けて精度が著しく低下している。このように、比較例では、統合結果の特に破線で囲まれた箇所での経路の精度が低いことが確認された。
【0149】
図17は、実施例における統合結果の一例を説明する図である。図17中、(a)はカメラ3を用いる推定器8によるロボット100の自己位置の推定結果に基づく経路を一点鎖線L1で示し、(b)は5.0mの計測範囲を有するLRF2を用いる推定器6によるロボット100の自己位置の推定結果に基づく経路を二点鎖線L2で示し、(c)は上記実施例の統合ツリーを用いた統合結果に基づく経路を実線L30で示す。また、破線で囲まれた箇所は、図17(a)では経路が精度良く推定されているものの、図17(b)では経路の精度が著しく低下している箇所を示す。しかし、本実施例によれば、図17(c)に示すように、統合ツリーを用いるため、統合結果の破線で囲まれた箇所においても、経路の良い精度が維持されることが確認された。つまり、複数の推定器が推定した位置姿勢を高精度に統合することが可能であることが確認された。
【0150】
上記の比較例の場合、統合結果が例えば破綻した推定器の推定結果の影響を受けて、最悪の場合は統合結果が使えない程推定経路の精度が低下してしまう。一方、上記実施例のように統合ツリーを用いることで、統合ツリーから例えば破綻した推定器を特定して隔離することができる。このため、統合結果が例えば破綻した推定器の推定結果の影響を受けないように処理を行うことができ、ロボットシステムまたはナビゲーションシステムの安定性を大きく向上することができる。
【0151】
次に、上記実施例における入力情報の信頼性評価、信頼性に基づき異なる統合処理、統合ツリーの枝刈、及び診断機能のフィードバックについて説明する。
【0152】
入力情報の信頼性評価:
入力情報の信頼性評価にHMMを用いることで、推定器からの入力情報に対する信頼性を評価する。統合器が各推定器からの位置、姿勢、位置姿勢共分散行列といった入力情報に対して、信頼性という状態量を追加して、入力情報を位置、姿勢、位置姿勢共分散行列、信頼性に拡張する。信頼性については、統合器が過去の推定履歴に基づいて推定する。また、各推定器が上記の推定情報と共に、推定を行った地点でのオドメトリ位置も入力する。
【0153】
統合器は、推定器数分の信頼性評価モデルを用意する。信頼性評価モデルは、HMMに基づいて構築する。HMMは2つの状態を持ち、各状態において2つのシンボルが観測できる。このシンボルは実際の入力値が統合器の統合履歴から予測した新しい入力値の近傍に入るかどうかを表す「0」と「1」の2値である。このシンボルが観測されると、HMM内部の状態を更新する。この2つの状態の確率の比から信頼性を算出する。
【0154】
HMMのパラメータは、各推定器の性能に合わせて設定される。例えばカメラを用いる推定器のエラーリカバリー機能がLRFを用いる推定器より高く、信頼できない状態から信頼できる状態への遷移確率が高く設定されている。
【0155】
信頼性に基づき異なる統合処理:
信頼性に基づき異なる統合処理は、異なる信頼性の入力情報に対して、統合ツリーを利用して異なる統合処理を行う。統合器が推定した信頼性を、例えば「高」、「中」、「低」の3つのレベルに離散化し、各レベルによって異なる統合処理を行う。信頼性の各レベルに対して異なる処理を行うために統合ツリーを導入する。統合ツリーの深さ方向は時間方向に対応する。統合ツリーの最も低いレイヤーが最新時間に対応する。統合ツリーの各ノードがそのノードの対応する時刻での統合結果であり、統合して得られたロボットの現在位置が含まれている。また、ノードは推定器から新しい入力がくる度に作成され、その時入力されたオドメトリの情報も含まれている。推定器から新しい入力がきた時、現在のノードに新しい子ノードを追加して、親ノードの統合結果を更新して子ノードに保存する。
【0156】
子ノードの追加は、例えば以下のように行う。先ず、現在最新のレイヤーにある全てのノードに対して、推定器からの新しい入力の信頼性のレベルが「高」であると判断した場合、親ノードに1つのみの子ノードを追加する。入力情報を観測情報として、親ノードの状態を更新して子ノードに保存する。さらに、新しい入力に含まれているオドメトリの情報も子ノードに保存する。
【0157】
信頼性のレベルが「低」であると判断した場合、親ノードに1つのみの子ノードを追加する。入力情報を観測情報とせず、親ノードの状態をオドメトリの情報のみを利用して更新して子ノードに保存する。
【0158】
信頼性のレベルが「中」であると判断した場合、信頼性のレベルが「高」と「低」と判断した場合の処理を夫々行い、その結果親ノードが2つの子を持つようになる。
【0159】
このようにして、新しい入力が逐時に入ることによって統合ツリーのノード数と深さが増大していき、ツリーの規模が大きくなる。
【0160】
統合ツリーの枝刈:
統合ツリーの枝刈は、推定した経路の速度パターンによる評価に基づき、統合ツリーの規模を一定以下に抑えるために行う。この統合ツリーの枝刈を行うため、ツリーの最新ノードからルートノードまでの経路の良さを評価する。評価スコアが低い経路の最新ノードは削除する。なお、経路とは最新レイヤーにあるノードからツリーのルートノードまで辿って抽出した時間順に並べた複数のノードのシーケンスである。経路上の各ノードに保存されているオドメトリから速度パターンを求め、これと各ノードで統合処理によって得られたロボットの位置姿勢から求めた速度パターンとの類似度を計算して評価スコアとする。各経路に対して評価を行って得られた評価スコアで各経路を昇順にソートして、下位の経路に対して最新ノードを統合ツリーから削除する。その後、統合ツリーの全体をスキャンして、子を持っていないノードを削除する。1つの子だけを持っている親ノードを子ノードと併合して、新しいノードを生成する。新しいノードでは親ノードの情報がなくなり、子ノードの情報のみを保存する。
【0161】
診断機能のフィードバック:
診断機能のフィードバックでは、統合器が各推定器に対して行う信頼性の評価結果を推定器への診断結果として統合結果と共に出力する。これにより、推定器が診断結果をチェックして推定器のリセットなどを行うこともできる。
【0162】
上記の如く、開示の地図処理方法及びプログラム、並びにロボットシステムでは、統合器が各推定器からの入力情報の信頼性を評価して、異なる信頼性のレベルに応じた異なる方式で統合履歴と関連付ける。この関連付けにより、統合履歴を表した統合ツリーが時間的に更新され、規模が増大していく。また、統合ツリーの最新ノードから過去に辿って得られた推定経路を評価して下位のノードを削除することで、ツリー全体のメンテナンスを行いツリー規模を一定以下に維持することもできる。さらに、例えば推定精度の低下した推定器の推定結果を統合処理から隔離できるため、統合結果が推定精度の低下した推定器の推定結果に影響されることなく、例えばナビゲーションの安定性を向上することができる。
【0163】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
互いに異なるセンサからの入力に基づいて自己位置を推定する複数の推定器の信頼度を前記複数の推定器に対応する信頼性評価モデルを用いて評価する評価処理と、
前記複数の推定器からの推定結果に対して前記信頼性に応じた異なる統合処理を行う結合処理
をコンピュータに実行させることを特徴とする、地図処理方法。
(付記2)
前記信頼性評価モデルは、パラメータが各推定器の性能に合わせて設定される隠れマルコフモデルで構築され、前記パラメータは各推定器から入力されることを特徴とする、付記1記載の地図処理方法。
(付記3)
前記評価処理は、前記信頼性を3つのレベルに離散化し、各レベルによって異なる統合処理を行うために複数のノードを含む統合ツリーを作成し、
前記統合ツリーの深さ方向は時間方向に対応し、最も低いレイヤーが最新時間に対応し、各ノードが当該ノードの対応する時刻での統合結果であり統合処理の結果得られる位置を含むことを特徴とする、付記1または2記載の地図処理方法。
(付記4)
前記結合処理は、
前記統合ツリーの最新のレイヤーにある全てのノードに対して、1つの推定器からの新しい入力の信頼性のレベルが「高」であると判断した場合、親ノードに1つのみの子ノードを追加すると共に、当該推定器からの入力を観測情報として前記親ノードの状態を更新して子ノードに保存し、前記新しい入力に含まれているオドメトリの情報を子ノードに保存し、
前記信頼性のレベルが「低」であると判断した場合、前記親ノードに1つのみの子ノードを追加すると共に、当該推定器からの入力を観測情報とせず、前記親ノードの状態をオドメトリの情報のみを利用して更新して子ノードに保存し、
前記信頼性のレベルが「中」であると判断した場合、前記信頼性のレベルが「高」と「低」と判断した場合の処理を夫々行い、その結果前記親ノードに2つの子を持たせることを特徴とする、付記3記載の地図処理方法。
(付記5)
前記統合ツリーの最新ノードからルートノードまで辿って抽出した時間順に並べた複数のノードのシーケンスで形成された経路の良さを評価する評価スコアを、前記経路上の各ノードに保存されているオドメトリから求めた速度パターンと、前記経路上の各ノードで統合処理によって求めた速度パターンとの類似度から計算する処理と、
前記評価スコアが閾値より低い前記経路上の最新ノードを削除するメンテナンス処理
をさらに前記コンピュータに実行させることを特徴とする、付記3または4記載の地図処理方法。
(付記6)
前記メンテナンス処理は、前記経路上の最新ノードを削除した後、前記統合ツリー全体をスキャンして子を持っていないノードを削除し、さらに1つの子だけを持っている親ノードを子ノードと併合することを特徴とする、付記5記載の地図処理方法。
(付記7)
互いに異なるセンサからの入力に基づいて自己位置を推定する複数の推定器の信頼度を前記複数の推定器に対応する信頼性評価モデルを用いて評価する評価手順と、
前記複数の推定器からの推定結果に対して前記信頼性に応じた異なる統合処理を行う結合手順
をコンピュータに実行させることを特徴とする、プログラム。
(付記8)
前記信頼性評価モデルは、パラメータが各推定器の性能に合わせて設定される隠れマルコフモデルで構築され、前記パラメータは各推定器から入力されることを特徴とする、付記7記載のプログラム。
(付記9)
前記評価手順は、前記信頼性を3つのレベルに離散化し、各レベルによって異なる統合処理を行うために複数のノードを含む統合ツリーを作成し、
前記統合ツリーの深さ方向は時間方向に対応し、最も低いレイヤーが最新時間に対応し、各ノードが当該ノードの対応する時刻での統合結果であり統合処理の結果得られる位置を含むことを特徴とする、付記7または8記載のプログラム。
(付記10)
前記結合手順は、
前記統合ツリーの最新のレイヤーにある全てのノードに対して、1つの推定器からの新しい入力の信頼性のレベルが「高」であると判断した場合、親ノードに1つのみの子ノードを追加すると共に、当該推定器からの入力を観測情報として前記親ノードの状態を更新して子ノードに保存し、前記新しい入力に含まれているオドメトリの情報を子ノードに保存し、
前記信頼性のレベルが「低」であると判断した場合、前記親ノードに1つのみの子ノードを追加すると共に、当該推定器からの入力を観測情報とせず、前記親ノードの状態をオドメトリの情報のみを利用して更新して子ノードに保存し、
前記信頼性のレベルが「中」であると判断した場合、前記信頼性のレベルが「高」と「低」と判断した場合の処理を夫々行い、その結果前記親ノードに2つの子を持たせることを特徴とする、付記9記載のプログラム。
(付記11)
前記統合ツリーの最新ノードからルートノードまで辿って抽出した時間順に並べた複数のノードのシーケンスで形成された経路の良さを評価する評価スコアを、前記経路上の各ノードに保存されているオドメトリから求めた速度パターンと、前記経路上の各ノードで統合処理によって求めた速度パターンとの類似度から計算する手順と、
前記評価スコアが閾値より低い前記経路上の最新ノードを削除するメンテナンス手順
をさらに前記コンピュータに実行させることを特徴とする、付記9または10記載のプログラム。
(付記12)
前記メンテナンス手順は、前記経路上の最新ノードを削除した後、前記統合ツリー全体をスキャンして子を持っていないノードを削除し、さらに1つの子だけを持っている親ノードを子ノードと併合することを特徴とする、付記11記載のプログラム。
(付記13)
自律移動型ロボットに設けられた互いに異なるセンサと、
前記異なるセンサからの入力に基づいて自己位置を推定する複数の推定器と、
前記複数の推定器の信頼度を前記複数の推定器に対応する信頼性評価モデルを用いて評価する評価部と、
前記複数の推定器からの推定結果に対して前記信頼性に応じた異なる統合処理を行う結合部
を備えたことを特徴とする、ロボットシステム。
(付記14)
前記信頼性評価モデルは、パラメータが各推定器の性能に合わせて設定される隠れマルコフモデルで構築され、前記パラメータは各推定器から入力されることを特徴とする、付記13記載のロボットシステム。
(付記15)
前記評価部は、前記信頼性を3つのレベルに離散化し、各レベルによって異なる統合処理を行うために複数のノードを含む統合ツリーを作成し、
前記統合ツリーの深さ方向は時間方向に対応し、最も低いレイヤーが最新時間に対応し、各ノードが当該ノードの対応する時刻での統合結果であり統合処理の結果得られる位置を含むことを特徴とする、付記13または14記載のロボットシステム。
(付記16)
前記結合部は、
前記統合ツリーの最新のレイヤーにある全てのノードに対して、1つの推定器からの新しい入力の信頼性のレベルが「高」であると判断した場合、親ノードに1つのみの子ノードを追加すると共に、当該推定器からの入力を観測情報として前記親ノードの状態を更新して子ノードに保存し、前記新しい入力に含まれているオドメトリの情報を子ノードに保存し、
前記信頼性のレベルが「低」であると判断した場合、前記親ノードに1つのみの子ノードを追加すると共に、当該推定器からの入力を観測情報とせず、前記親ノードの状態をオドメトリの情報のみを利用して更新して子ノードに保存し、
前記信頼性のレベルが「中」であると判断した場合、前記信頼性のレベルが「高」と「低」と判断した場合の処理を夫々行い、その結果前記親ノードに2つの子を持たせることを特徴とする、付記15記載のロボットシステム。
(付記17)
前記統合ツリーの最新ノードからルートノードまで辿って抽出した時間順に並べた複数のノードのシーケンスで形成された経路の良さを評価する評価スコアを、前記経路上の各ノードに保存されているオドメトリから求めた速度パターンと、前記経路上の各ノードで統合処理によって求めた速度パターンとの類似度から計算する評価部と、
前記評価スコアが閾値より低い前記経路上の最新ノードを削除するメンテナンス部
をさらに備えたことを特徴とする、付記15または16記載のロボットシステム。
(付記18)
前記メンテナンス部は、前記経路上の最新ノードを削除した後、前記統合ツリー全体をスキャンして子を持っていないノードを削除し、さらに1つの子だけを持っている親ノードを子ノードと併合することを特徴とする、付記17記載のロボットシステム。
【0164】
以上、開示の地図処理方法及びプログラム、並びにロボットシステムを実施例により説明したが、本発明は上記実施例に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能であることは言うまでもない。
【符号の説明】
【0165】
4,6,8 推定器
5,7,9 記憶部
10 統合器
11 推定器信頼性評価部
12 結合部
13 結合の良さの評価部
14 統合ツリーのメンテナンス部
15 記憶部(統合ツリー)
20 オドメトリ部

【特許請求の範囲】
【請求項1】
互いに異なるセンサからの入力に基づいて自己位置を推定する複数の推定器の信頼度を前記複数の推定器に対応する信頼性評価モデルを用いて評価する評価手順と、
前記複数の推定器からの推定結果に対して前記信頼性に応じた異なる統合処理を行う結合手順
をコンピュータに実行させることを特徴とする、プログラム。
【請求項2】
前記信頼性評価モデルは、パラメータが各推定器の性能に合わせて設定される隠れマルコフモデルで構築され、前記パラメータは各推定器から入力されることを特徴とする、請求項1記載のプログラム。
【請求項3】
前記評価手順は、前記信頼性を3つのレベルに離散化し、各レベルによって異なる統合処理を行うために複数のノードを含む統合ツリーを作成し、
前記統合ツリーの深さ方向は時間方向に対応し、最も低いレイヤーが最新時間に対応し、各ノードが当該ノードの対応する時刻での統合結果であり統合処理の結果得られる位置を含むことを特徴とする、請求項1または2記載のプログラム。
【請求項4】
自律移動型ロボットに設けられた互いに異なるセンサと、
前記異なるセンサからの入力に基づいて自己位置を推定する複数の推定器と、
前記複数の推定器の信頼度を前記複数の推定器に対応する信頼性評価モデルを用いて評価する評価部と、
前記複数の推定器からの推定結果に対して前記信頼性に応じた異なる統合処理を行う結合部
を備えたことを特徴とする、ロボットシステム。
【請求項5】
互いに異なるセンサからの入力に基づいて自己位置を推定する複数の推定器の信頼度を前記複数の推定器に対応する信頼性評価モデルを用いて評価する評価処理と、
前記複数の推定器からの推定結果に対して前記信頼性に応じた異なる統合処理を行う結合処理
をコンピュータに実行させることを特徴とする、地図処理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate


【公開番号】特開2012−248032(P2012−248032A)
【公開日】平成24年12月13日(2012.12.13)
【国際特許分類】
【出願番号】特願2011−119676(P2011−119676)
【出願日】平成23年5月27日(2011.5.27)
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成23年度、独立行政法人新エネルギー・産業技術総合開発機構、「次世代ロボット知能化技術開発プロジェクト 移動知能(サービス産業分野)の開発 動的視覚認識に基づく移動知能モジュール群の研究開発」委託研究、産業技術力強化法第19条の適用を受ける特許出願
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】