(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-09
(45)【発行日】2024-09-18
(54)【発明の名称】位置推定装置、位置推定方法、及びプログラム
(51)【国際特許分類】
G01B 11/00 20060101AFI20240910BHJP
G01C 21/28 20060101ALI20240910BHJP
G05D 1/43 20240101ALI20240910BHJP
G06T 7/70 20170101ALI20240910BHJP
【FI】
G01B11/00 H
G01C21/28
G05D1/43
G06T7/70 Z
(21)【出願番号】P 2020170942
(22)【出願日】2020-10-09
【審査請求日】2023-09-04
(73)【特許権者】
【識別番号】000232092
【氏名又は名称】NECソリューションイノベータ株式会社
(74)【代理人】
【識別番号】110002044
【氏名又は名称】弁理士法人ブライタス
(72)【発明者】
【氏名】山下 喜宏
【審査官】國田 正久
(56)【参考文献】
【文献】国際公開第2020/137313(WO,A1)
【文献】特開2020-076714(JP,A)
【文献】国際公開第2014/083910(WO,A1)
【文献】特開2019-018743(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G01B 11/00
G01C 21/28
G05D 1/43
G06T 7/70
(57)【特許請求の範囲】
【請求項1】
移動体に搭載されたカメラから出力された画像データをフレーム毎に取得する、画像データ取得部と、
前記移動体の姿勢を検出するセンサからセンサデータを取得する、センサデータ取得部と、
取得された前記フレームでのカメラ姿勢を求め、求めた前記フレームでのカメラ姿勢と、前記フレームの取得後に取得された前記センサデータとから、前記フレームの後に取得される次フレームでのカメラ姿勢の予測値を算出する、カメラ姿勢予測部と、
前記次フレームの取得後に、前記予測値を用いて、前記次フレーム上に探索ウィンドウを設定し、前記探索ウィンドウ内で、前記フレーム内の特徴点に対応する特徴点を探索する、特徴点探索部と、
前記予測値とは別に、探索された特徴点に基づいて、前記次フレームでのカメラ姿勢を算出し、算出した前記次フレームでのカメラ姿勢に基づいて、前記次フレームにおける前記移動体の位置を推定する、位置推定部と、
を備え
、
前記カメラ姿勢予測部が、前記フレームの取得後に取得された前記センサデータにカルマンフィルタを適用して事前予測値を算出し、前記フレームでのカメラ姿勢と、算出した事前予測値と、前記センサデータとを用いて、前記予測値を算出し、
前記特徴点探索部が、前記探索ウィンドウにおける、前記次フレームのエピポーラ線に並行な方向の長さが、当該方向に垂直な方向の長さよりも長くなるように、前記探索ウィンドウを設定する、
ことを特徴とする位置推定装置。
【請求項2】
請求項
1に記載の位置推定装置であって、
前記センサが、慣性計測装置、加速度センサ、及び角速度センサのうちの少なくとも1つを含む、
ことを特徴とする位置推定装置。
【請求項3】
請求項
1に記載の位置推定装置であって、
前記カメラ姿勢が、前記カメラの回転行列及び並進ベクトルを含む、
ことを特徴とする位置推定装置。
【請求項4】
請求項
1に記載の位置推定装置であって、
前記カメラ姿勢予測部が、前記フレームの取得後に取得された前記センサデータをカルマンフィルタに適用して、事前予測値を算出し、算出した前記事前予測値と前記フレームでのカメラ姿勢とを用いて、前記予測値を算出し、
前記位置推定部が、前記予測値とは別に、探索された特徴点に基づいて、前記次フレームでのカメラ姿勢を算出した後に、前記予測値、算出した前記次フレームでのカメラ姿勢、及びカルマンゲインを用いて、前記次フレームにおける事後予測値を算出し、更に、前記事後予測値を用いて、前記次フレームにおける前記移動体の位置を推定する、
ことを特徴とする位置推定装置。
【請求項5】
移動体に搭載されたカメラから出力された画像データをフレーム毎に取得する、画像データ取得ステップと、
前記移動体の姿勢を検出するセンサからセンサデータを取得する、センサデータ取得ステップと、
取得された前記フレームでのカメラ姿勢を求め、求めた前記フレームでのカメラ姿勢と、前記フレームの取得後に取得された前記センサデータとから、前記フレームの後に取得される次フレームでのカメラ姿勢の予測値を算出する、カメラ姿勢予測ステップと、
前記次フレームの取得後に、前記予測値を用いて、前記次フレーム上に探索ウィンドウを設定し、前記探索ウィンドウ内で、前記フレーム内の特徴点に対応する特徴点を探索する、特徴点探索ステップと、
前記予測値とは別に、探索された特徴点に基づいて、前記次フレームでのカメラ姿勢を算出し、算出した前記次フレームでのカメラ姿勢に基づいて、前記次フレームにおける前記移動体の位置を推定する、位置推定ステップと、
を有
し、
前記カメラ姿勢予測ステップにおいて、前記フレームの取得後に取得された前記センサデータにカルマンフィルタを適用して事前予測値を算出し、前記フレームでのカメラ姿勢と、算出した事前予測値と、前記センサデータとを用いて、前記予測値を算出し、
前記特徴点探索ステップにおいて、前記探索ウィンドウにおける、前記次フレームのエピポーラ線に並行な方向の長さが、当該方向に垂直な方向の長さよりも長くなるように、前記探索ウィンドウを設定する、
ことを特徴とする位置推定方法。
【請求項6】
請求項
5に記載の位置推定方法であって、
前記センサが、慣性計測装置、加速度センサ、及び角速度センサのうちの少なくとも1つを含む、
ことを特徴とする位置推定方法。
【請求項7】
請求項
5に記載の位置推定方法であって、
前記カメラ姿勢が、前記カメラの回転行列及び並進ベクトルを含む、
ことを特徴とする位置推定方法。
【請求項8】
請求項
5に記載の位置推定方法であって、
前記カメラ姿勢予測ステップにおいて、前記フレームの取得後に取得された前記センサデータをカルマンフィルタに適用して、事前予測値を算出し、算出した前記事前予測値と前記フレームでのカメラ姿勢とを用いて、前記予測値を算出し、
前記位置推定ステップにおいて、前記予測値とは別に、探索された特徴点に基づいて、前記次フレームでのカメラ姿勢を算出した後に、前記予測値、算出した前記次フレームでのカメラ姿勢、及びカルマンゲインを用いて、前記次フレームにおける事後予測値を算出し、更に、前記事後予測値を用いて、前記次フレームにおける前記移動体の位置を推定する、
ことを特徴とする位置推定方法。
【請求項9】
コンピュータに、
移動体に搭載されたカメラから出力された画像データをフレーム毎に取得する、画像データ取得ステップと、
前記移動体の姿勢を検出するセンサからセンサデータを取得する、センサデータ取得ステップと、
取得された前記フレームでのカメラ姿勢を求め、求めた前記フレームでのカメラ姿勢と、前記フレームの取得後に取得された前記センサデータとから、前記フレームの後に取得される次フレームでのカメラ姿勢の予測値を算出する、カメラ姿勢予測ステップと、
前記次フレームの取得後に、前記予測値を用いて、前記次フレーム上に探索ウィンドウを設定し、前記探索ウィンドウ内で、前記フレーム内の特徴点に対応する特徴点を探索する、特徴点探索ステップと、
前記予測値とは別に、探索された特徴点に基づいて、前記次フレームでのカメラ姿勢を算出し、算出した前記次フレームでのカメラ姿勢に基づいて、前記次フレームにおける前記移動体の位置を推定する、位置推定ステップと、
を実行させ
、
前記カメラ姿勢予測ステップにおいて、前記フレームの取得後に取得された前記センサデータにカルマンフィルタを適用して事前予測値を算出し、前記フレームでのカメラ姿勢と、算出した事前予測値と、前記センサデータとを用いて、前記予測値を算出し、
前記特徴点探索ステップにおいて、前記探索ウィンドウにおける、前記次フレームのエピポーラ線に並行な方向の長さが、当該方向に垂直な方向の長さよりも長くなるように、前記探索ウィンドウを設定する、
プログラム。
【請求項10】
請求項
9に記載のプログラムであって、
前記センサが、慣性計測装置、加速度センサ、及び角速度センサのうちの少なくとも1つを含む、
ことを特徴とするプログラム。
【請求項11】
請求項
9に記載のプログラムであって、
前記カメラ姿勢が、前記カメラの回転行列及び並進ベクトルを含む、
ことを特徴とするプログラム。
【請求項12】
請求項
9に記載のプログラムであって、
前記カメラ姿勢予測ステップにおいて、前記フレームの取得後に取得された前記センサデータをカルマンフィルタに適用して、事前予測値を算出し、算出した前記事前予測値と前記フレームでのカメラ姿勢とを用いて、前記予測値を算出し、
前記位置推定ステップにおいて、前記予測値とは別に、探索された特徴点に基づいて、前記次フレームでのカメラ姿勢を算出した後に、前記予測値、算出した前記次フレームでのカメラ姿勢、及びカルマンゲインを用いて、前記次フレームにおける事後予測値を算出し、更に、前記事後予測値を用いて、前記次フレームにおける前記移動体の位置を推定する、
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、移動体の位置の推定するための、位置推定装置、及び位置推定方法に関し、更には、これらを実現するためのプログラムに関する。
【背景技術】
【0002】
近年、センシング技術の向上により、SLAM(Simultaneous Localization and Mapping)が注目されている。SLAMは、センサを搭載した移動体によって、自己位置の推定と環境地図の作成とを同時に実行する技術である(例えば、特許文献1及び非特許文献1参照)。SLAMによれば、自律走行するロボットは、ランダムに移動する必要がなく、環境地図に沿って移動できるため、その移動効率は向上することになる。
【0003】
具体的には、SLAMでは、撮像装置を搭載した移動体が用いられる。撮像装置は、設定間隔をおいてフレーム単位で画像データ(以下「フレーム」と表記する)を出力する。そして、従来からのSLAMにおいては、最初に、画像データを用いて、初期の環境地図が作成される。
【0004】
続いて、初期の環境地図が作成されると、最新のフレームにおいて、過去のフレームから抽出された特徴点に対応する特徴点が探索され、対応する特徴点同士で構成された特徴点の組が抽出される。
【0005】
次に、特徴点の組を用いて、最新のフレームにおけるカメラ行列が算出され、更に、カメラの位置(移動体の位置)が推定される。そして、特徴点の組毎に、カメラ行列と、特徴点のフレームにおける2次元座標とを用いて、特徴点の3次元座標が算出され、算出された3次元座標を用いて環境地図が更新される。
【先行技術文献】
【特許文献】
【0006】
【非特許文献】
【0007】
【文献】Raul Mur-Artal, J. M. M. Montiel, Juan D. Tardos, “ORB-SLAM: A Versatile and Accurate Monocular SLAM System”,[online], IEEE TRANSACTIONS ON ROBOTICS, VOL. 31, NO. 5, OCTOBER 2015,[2020/7/29 検索], インターネット<URL: https://ieeexplore.ieee.org/document/7219438?arnumber=7219438>
【発明の概要】
【発明が解決しようとする課題】
【0008】
ところで、従来からのSLAMにおいては、特徴点の探索処理にかかる時間を短縮するため、最新フレームにおいて、対応する特徴点が存在する領域を予測し、予測した領域において特徴点の探索が行われている。また、領域の予測は、最新のフレームにおいて、移動体の移動ベクトルを推定することによって行われている。
【0009】
しかしながら、従来からのSLAMでは、移動体が急に旋回する等して急激に動きが変化してしまうと、推定した移動ベクトルと実際の移動ベクトルとの差が大きくなり、結果、最新フレームにおける特徴点の探索対象となる領域の予測に大きな誤差が生じてしまう。このような場合、対応する特徴点を抽出できず、移動体の位置を推定できない「退化」という問題が発生してしまう。
【0010】
本発明の目的の一例は、上記問題を解消し、移動体の位置の推定において、移動体の動きによる推定精度の変動を抑制し得る、位置推定装置、位置推定方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【0011】
上記目的を達成するため、本発明の一側面における位置推定装置は、
移動体に搭載されたカメラから出力された画像データをフレーム毎に取得する、画像データ取得部と、
前記移動体の姿勢を検出するセンサからセンサデータを取得する、センサデータ取得部と、
取得された前記フレームでのカメラ姿勢を求め、求めた前記フレームでのカメラ姿勢と、前記フレームの取得後に取得された前記センサデータとから、前記フレームの後に取得される次フレームでのカメラ姿勢の予測値を算出する、カメラ姿勢予測部と、
前記次フレームの取得後に、前記予測値を用いて、前記次フレーム上に探索ウィンドウを設定し、前記探索ウィンドウ内で、前記フレーム内の特徴点に対応する特徴点を探索する、特徴点探索部と、
前記予測値とは別に、探索された特徴点に基づいて、前記次フレームでのカメラ姿勢を算出し、算出した前記次フレームでのカメラ姿勢に基づいて、前記次フレームにおける前記移動体の位置を推定する、位置推定部と、
を備えている、ことを特徴とする。
【0012】
また、上記目的を達成するため、本発明の一側面における位置推定方法は、
移動体に搭載されたカメラから出力された画像データをフレーム毎に取得する、画像データ取得ステップと、
前記移動体の姿勢を検出するセンサからセンサデータを取得する、センサデータ取得ステップと、
取得された前記フレームでのカメラ姿勢を求め、求めた前記フレームでのカメラ姿勢と、前記フレームの取得後に取得された前記センサデータとから、前記フレームの後に取得される次フレームでのカメラ姿勢の予測値を算出する、カメラ姿勢予測ステップと、
前記次フレームの取得後に、前記予測値を用いて、前記次フレーム上に探索ウィンドウを設定し、前記探索ウィンドウ内で、前記フレーム内の特徴点に対応する特徴点を探索する、特徴点探索ステップと、
前記予測値とは別に、探索された特徴点に基づいて、前記次フレームでのカメラ姿勢を算出し、算出した前記次フレームでのカメラ姿勢に基づいて、前記次フレームにおける前記移動体の位置を推定する、位置推定ステップと、
を有する、ことを特徴とする。
【0013】
更に、上記目的を達成するため、本発明の一側面におけるプログラムは、
コンピュータに、
移動体に搭載されたカメラから出力された画像データをフレーム毎に取得する、画像データ取得ステップと、
前記移動体の姿勢を検出するセンサからセンサデータを取得する、センサデータ取得ステップと、
取得された前記フレームでのカメラ姿勢を求め、求めた前記フレームでのカメラ姿勢と、前記フレームの取得後に取得された前記センサデータとから、前記フレームの後に取得される次フレームでのカメラ姿勢の予測値を算出する、カメラ姿勢予測ステップと、
前記次フレームの取得後に、前記予測値を用いて、前記次フレーム上に探索ウィンドウを設定し、前記探索ウィンドウ内で、前記フレーム内の特徴点に対応する特徴点を探索する、特徴点探索ステップと、
前記予測値とは別に、探索された特徴点に基づいて、前記次フレームでのカメラ姿勢を算出し、算出した前記次フレームでのカメラ姿勢に基づいて、前記次フレームにおける前記移動体の位置を推定する、位置推定ステップと、
を実行させる、ことを特徴とする。
【発明の効果】
【0014】
以上のように本発明によれば、移動体の位置の推定において、移動体の動きによる推定精度の変動を抑制することができる。
【図面の簡単な説明】
【0015】
【
図1】
図1は、実施の形態における位置推定装置の概略構成を示す構成図である。
【
図2】
図2は、実施の形態における位置推定装置の構成を具体的に示すブロック図である。
【
図3】
図3は、環境地図の作成処理の一例を示す図である。
【
図4】
図4は、カルマンフィルタで行われる処理の一例を示す図である。
【
図5】
図5は、実施の形態において設定される探索ウィンドウの一例を示す図である。
【
図6】
図6は、実施の形態における位置推定装置の動作を示すフロー図である。
【
図7】
図7は、実施の形態における位置推定装置を実現するコンピュータの一例を示すブロック図である。
【発明を実施するための形態】
【0016】
(実施の形態)
以下、実施の形態における、位置推定装置、位置推定方法、及びプログラムについて、
図1~
図6を参照しながら説明する。
【0017】
[装置構成]
最初に、実施の形態における位置推定装置の概略構成について
図1を用いて説明する。
図1は、実施の形態における位置推定装置の概略構成を示す構成図である。
【0018】
図1に示す位置推定装置10は、移動体の位置を推定するための装置である。
図1に示すように、位置推定装置10は、画像データ取得部11と、センサデータ取得部12と、カメラ姿勢予測部13と、特徴点探索部14と、位置推定部15とを備えている。
【0019】
画像データ取得部11は、移動体に搭載されたカメラから出力された画像データをフレーム毎に取得する。画像データ取得部11が取得しているフレームのうち、最後に取得したフレームを「現フレーム」とする。センサデータ取得部12は、移動体の姿勢を検出するセンサからセンサデータを取得する。
【0020】
カメラ姿勢予測部13は、画像データ取得部11が取得した現フレームでのカメラ姿勢と、現フレームの取得後にセンサデータ取得部12が取得したセンサデータとから、現フレームの後に取得される次フレームでのカメラ姿勢の予測値を算出する。
【0021】
特徴点探索部14は、画像データ取得部11が次フレームを取得すると、取得後に、予測値を用いて、次フレーム上に探索ウィンドウを設定し、探索ウィンドウ内で、現フレーム内の特徴点に対応する特徴点を探索する。次フレームは、上述の現フレームの取得後に取得されており、最新のフレームである。
【0022】
位置推定部15は、カメラ姿勢予測部13が算出した予測値とは別に、特徴点探索部14が探索した特徴点に基づいて、次フレームでのカメラ姿勢を算出する。更に、位置推定部15は、算出した次フレームでのカメラ姿勢に基づいて、次フレームにおける移動体の位置を推定する。
【0023】
このように、位置推定装置10は、現フレームでのカメラ姿勢と、センサデータから算出した移動体の姿勢とを用いて、次フレームにおける探索ウィンドウを設定しており、探索ウィンドウの設定における誤差を抑制している。このため、位置推定装置10によれば、移動体の位置の推定において、移動体の動きによる推定精度の変動を抑制することができる。
【0024】
続いて、
図2~
図5を用いて、実施の形態における位置推定装置10の構成及び機能について具体的に説明する。
図2は、実施の形態における位置推定装置の構成を具体的に示すブロック図である。
【0025】
図2に示すように、実施の形態では、位置推定装置10は、移動体100に搭載されている。移動体100は、例えば、自走式のロボット、車両などである。移動体100は、位置推定装置10に加えて、カメラ20と、センサ30と、制御装置40と、駆動装置50と、操舵装置60とを備えている。
【0026】
カメラ20は、移動体の進行方向側に取り付けられており、進行方向における画像の画像データを、フレーム単位で設定間隔をおいて出力する。
【0027】
センサ30は、移動体100の姿勢を検出するセンサである。センサ30としては、加速度センサ、角速度センサ、これらを備えたIMU(Inertial Measurement Unit:慣性計測装置)が挙げられる。なお、実施の形態では、センサ30は、加速度センサ及び角速度センサを備えたIMUであるとする。
【0028】
制御装置40は、位置推定装置10によって推定された位置に基づいて、移動体100の進行方向及び移動速度を決定し、決定した進行方向及び移動速度に応じて、駆動装置50及び操舵装置60を制御する。
【0029】
駆動装置50は、電動モータなどの原動機、原動機の動力を車輪に伝える伝達機構等を備え、制御装置40の指示に応じて、移動体100を進行させる。操舵装置60は、操舵輪を動かすための機構を備えており、制御装置40の指示に応じて、操舵輪を操作する。
【0030】
また、実施の形態では、移動体100は、上述の態様に限定されるものではない。移動体100は、例えば、操舵装置60を備えず、代わりに、左右の駆動輪のトルクを制御することによって操舵を行う態様であっても良い。
【0031】
画像データ取得部11は、実施の形態では、カメラ20が出力する画像データをフレーム単位で取得する。センサデータ取得部12は、実施の形態では、IMUであるセンサ30から、移動体100における加速度データ(ax,ay,az)及び角速度データ(ωx,ωy,ωz)を取得する。
【0032】
また、実施の形態では、位置推定装置10は、最初に、移動体100の位置の推定に加えて、環境地図の作成も実行する。まず、
図3に示すように、特徴点探索部14と、位置推定部15とによって、初期の環境地図が作成される。
図3は、環境地図の作成処理の一例を示す図である。
【0033】
具体的には、
図3に示すように、最初に、特徴点探索部14は、現フレームから、過去のフレームで抽出されている特徴点に対応する特徴点(以下「対応特徴点」と表記する。)を抽出する。特徴点が抽出されている過去のフレームがない場合は、特徴点探索部14は、現フレームから特徴点を抽出し、次フレームの取得後に、次フレームを新たな現フレームとして、先に抽出した特徴点に対応する対応特徴点を抽出する。
【0034】
続いて、位置推定部15は、現フレームと過去のフレームとにおける特徴点の組合せを用いて、現フレームにおけるカメラ姿勢を算出する。ここで、実施の形態において、カメラ姿勢は、回転行列Rtと並進ベクトルttとで構成される。また、カメラ姿勢の算出は、下記の参考文献1に示す既知の手法によって行うことができる。
(参考文献1)
David Nister, “An Efficient Solution to the Five-Point Relative Pose Problem”, Published 2004, DOI:10.1109/TPAMI.2004.17, Corpus ID:886598, <URL:https://pdfs.semanticscholar.org/c288/7c83751d2c36c63139e68d46516ba3038909.pdf>
【0035】
更に、位置推定部15は、現フレーム及び過去のフレームそれぞれにおける、カメラ姿勢と、対応特徴点の2次元座標とを用いて、三角測量を行うことによって、対応特徴点の3次元座標(点群データ)を算出する。移動体100の移動に合わせて、特徴点探索部14及び位置推定部15による上述の処理が何回か繰り返して実行されると、移動体の周囲の物体が3次元の点群データで表現された、初期の環境地図が作成される。
【0036】
そして、位置推定装置10は、初期の環境地図が作成できると、カメラ姿勢予測部13によってセンセデータを用いた予測値の算出を行って、移動体の位置推定を行う。また、位置推定装置10は、推定した位置を用いて、環境地図を拡張することもできる。以下に移動体の位置推定について詳細に説明する。
【0037】
カメラ姿勢予測部13は、実施の形態では、現フレームでのカメラ姿勢と、現フレームの取得後に取得されたセンサデータとを用いた、ベイズ推定を行い、これによって次フレームにおけるカメラ姿勢の予測値を算出する。現フレームでのカメラ姿勢は、既に位置推定部15による処理が行われている場合は、位置推定部15によって算出されている。
【0038】
具体的には、カメラ姿勢予測部13は、現フレームの取得後に取得されたセンサデータをカルマンフィルタに適用して、後述する事前予測値を算出し、算出した事前予測値を用いて、次フレームでのカメラ姿勢を算出する。カメラ姿勢は、上述したように、回転行列Rtと並進ベクトルttとで構成される。以下、「カメラ姿勢[R][t]」と表記する。
【0039】
カルマンフィルタは、反復推定器(反復推定型フィルタ)であり、システム(系)の現在の観測量と、1ステップ前の状態推定値とから、現在の状態推定値と1ステップ先の状態予測値とを与える。ここで、
図4を用いてカルマンフィルタについて説明する。
図4は、カルマンフィルタで行われる処理の一例を示す図である。
【0040】
図4に示すように、カルマンフィルタは、まず、事前予測値ハットx
t、共分散行列P
tの初期値(t=0)を設定し、続いて、数1に基づいて事前予測値及び共分散行列を更新する。更に、カルマンフィルタは、計測データ(センサデータ)y
tの入力を受け付け、数2に基づいて計測結果を反映した補正を実行する。更に、これらの処理は繰り返し行われ、最新の事前予測値が出力される。
【0041】
下記数1において、ft(xt-1)は、時刻tにおける事前予測値ハットxtを求めるための関数である。数2において、Ktは、最適カルマンゲインである。数1において、wt-1は、観測誤差ある。数1において、ハットFT
t-1は、ft(xt-1)のヤコビ行列である。Tは、行列の転置である。数1において、Qt-1は、wt-1がガウス分布とした場合の共分散行列である。
【0042】
【0043】
【0044】
実施の形態では、事前予測値ハットxtとしては、例えば、移動体100の位置p、速度v、クォータ二オンqが用いられる。クォータニオンqは、移動体100における回転を表すパラメータである。計測データytとしては、IMUから出力された加速度データ(ax,ay,az)及び角速度データ(ωx,ωy,ωz)が用いられる。
【0045】
カメラ姿勢予測部13は、事前予測値ハットxtとして、移動体100の位置p、速度v、及びクォータ二オンqを出力し、出力した事前予測値と、現のフレームでのカメラ姿勢[R][t]と、計測データytとを用いて、次フレームでのカメラ姿勢[R][t]の予測値を算出する。
【0046】
また、カメラ姿勢予測部13は、以前の状態のヤコビ行列をFt-1、以前の状態の共分散行列をPtとし、そして、計測データyt=h(xt)+rとした場合のh(xt)のヤコビ行列をHt、ノイズrの共分散行列をRtとして、最適カルマンゲインKtを算出することができる。この場合は、後述するように、位置推定部15は、この最適カルマンゲインKtを用いて事後予測値xtを算出する。
【0047】
特徴点探索部14は、実施の形態では、
図5に示すように、カメラ姿勢[R][t]の予測値を用いて、次フレーム上に探索ウィンドウを設定する。
図5は、実施の形態において設定される探索ウィンドウの一例を示す図である。
【0048】
具体的には、特徴点探索部14は、カメラ姿勢[R][t]の予測値を下記の数3に適用して、現フレームの特徴点の3次元座標(世界座標系(W))(X
W,Y
W,Z
W)を、カメラ座標系(C)の座標(X
C,Y
C,Z
C)に変換する。次に、特徴点探索部14は、Z
C=1に設定して、変換後の特徴点の座標を下記の数4を用いて正規化する。そして、特徴点探索部14は、
図5に示すように、正規化によって得られた特徴点の座標(X’
C,Y’
C)を、下記の数4を用いて、次フレーム上に再投影し、再投影した特徴点の2次元座標を中心に、探索ウィンドウを設定する。
【0049】
【0050】
【0051】
【0052】
また、特徴点探索部14は、
図5に示すように、探索ウィンドウにおける、次フレームのエピポーラ線に並行な方向の長さが、その方向に垂直な方向の長さよりも長くなるように、次フレーム上に探索ウィンドウを設定する。すなわち、特徴点探索部14は、水平方向の長さの方が垂直方向の長さよりも長くなるように、探索ウィンドウを設定する。これにより、水平方向における動きが垂直方向における動きよりも大きい移動体100、例えば、自走式のロボット、車両などにおいて、探索ウィンドウの位置の推定誤差を小さくすることができる。
【0053】
特徴点探索部14は、設定した探索ウィンドウ内で、現フレームの特徴点とマッチングする次フレームの特徴点を探索する。特徴点探索部14は、いくつかの特徴点それぞれについて、上述した処理を実行することによって、現フレームの特徴点と次フレームの特徴点との組み合わせを複数組抽出する。
【0054】
位置推定部15は、まず、次フレームでのカメラ姿勢を算出すると、カメラ姿勢予測部13によって予測された予測値、算出した次フレームでのカメラ姿勢、及びカルマンゲインを用いて、次フレームにおける事後予測値xtを算出する。事後予測値xtとしても、例えば、移動体100の位置p、速度v、クォータ二オンqが用いられる。カルマンゲインとしては、上述したように、カメラ姿勢予測部13によって算出される最適カルマンゲインKtが用いられる。
【0055】
続いて、位置推定部15は、抽出された特徴点の組合せ毎に、事後予測値を用いて、次フレームでの真のカメラの姿勢[R][t]、言い換えると、移動体の3次元座標を算出する。
【0056】
[装置動作]
次に、実施の形態における位置推定装置10の動作について
図6を用いて説明する。
図6は、実施の形態における位置推定装置の動作を示すフロー図である。以下の説明においては、適宜
図1~
図5を参照する。また、実施の形態では、位置推定装置10を動作させることによって、位置推定方法が実施される。よって、実施の形態における位置推定方法の説明は、以下の位置推定装置10の動作説明に代える。
【0057】
まず、前提として、初期の環境地図が作成されているとする。カメラ20は、移動体100に搭載されており、一定のフレームレートで画像データを出力している。画像データ取得部11は、カメラ20が出力する画像データをフレーム毎に取得している。
【0058】
図6に示すように、初期の環境地図が作成されると、最初に、カメラ姿勢予測部13は、事前予測値である、移動体100の位置p、速度v、及びクォータ二オンqの初期値と、共分散行列P
tの初期値(t=0)とを設定する(ステップA1)。
【0059】
次に、センサデータ取得部12は、IMUであるセンサ30から、移動体100における加速度データ(ax,ay,az)及び角速度データ(ωx,ωy,ωz)を取得する(ステップA2)。
【0060】
次に、ステップA2によって加速度データ及び角速度データが取得されると、カメラ姿勢予測部13は、上述した数1及び数2に、取得した加速度データ及び角速度データを適用して、最新の事前予測値として、位置p、速度v、及びクォータ二オンqを算出する(ステップA3)。また、ステップA3では、共分散行列Ptの事前予測値も算出される。なお、ステップA3が初めて実行される場合は、ステップA1で設定された初期値が用いられる。
【0061】
次に、カメラ姿勢予測部13は、ステップA3で事前予測値として算出した、移動体100の位置p及びクォータ二オンqを用いて、次フレームでのカメラ姿勢[R|t]の予測値を算出する(ステップA4)。また、ステップA4では、カメラ姿勢予測部13は、最適カルマンゲインKtも算出する。
【0062】
次に、特徴点探索部14は、画像データ取得部11が次フレームを取得していると、ステップA4で算出されたカメラ姿勢[R|t]の予測値を用いて、次フレーム上に探索ウィンドウを設定する(ステップA5)。ステップA5では、探索ウィンドウの設定は、次フレームのエピポーラ線に並行な方向の長さが、その方向に垂直な方向の長さよりも長くなるように行われる。
【0063】
次に、特徴点探索部14は、ステップA5で設定した探索ウィンドウ内で、現フレームの特徴点とマッチングする次フレームの特徴点を探索し、現フレームの特徴点と次フレームの特徴点との組み合わせを複数組抽出する(ステップA6)。
【0064】
次に、位置推定部15は、ステップA6で抽出された特徴点の組合せ毎に、次フレーム上の特徴点の2次元座標と、環境地図(点群データ)での特徴点の3次元座標とを用いて、PnP法を実行して、次フレームでのカメラ姿勢を算出する(ステップA7)。
【0065】
次に、位置推定部15は、ステップA4で算出された予測値と、同じくステップA4で算出された最適カルマンゲインKtと、ステップA7で算出された次フレームでのカメラ姿勢とを用いて、次フレームにおける事後予測値として、位置p、速度v、及びクォータ二オンqを算出する(ステップA8)。
【0066】
次に、位置推定部15は、ステップA8で算出された位置p、及びクォータ二オンqを用いて、移動体の3次元座標(次フレームでの真のカメラの姿勢[R][t])を算出する(ステップA9)。
【0067】
次に、カメラ姿勢予測部13は、移動体100が稼働停止しているといった終了条件が満たされているかどうかを判定する(ステップA10)。ステップA10の判定の結果、満たされていない場合は、カメラ姿勢予測部13は、再度ステップA2を実行させる。一方、ステップA10の判定の結果、満たされている場合は、位置推定装置10における処理は終了する。
【0068】
[実施の形態による効果]
以上のように、実施の形態では、移動体100に取り付けられたセンサ30(IMU)からの情報を用いて、探索ウィンドウが設定されるので、移動体100が急に旋回する等して急激に動きが変化した場合でも、適切に探索ウィンドウが設定されることになる。この結果、位置推定装置10によれば、移動体100の位置の推定において、移動体100の動きによる推定精度の変動を抑制することができる。
【0069】
[プログラム]
実施の形態におけるプログラムとしては、コンピュータに、
図6に示すステップA1~A10を実行させるプログラムが挙げられる。このプログラムをコンピュータにインストールし、実行することによって、実施の形態における位置推定装置10と位置推定方法とを実現することができる。この場合、コンピュータのプロセッサは、画像データ取得部11、センサデータ取得部12、カメラ姿勢予測部13、特徴点探索部14、及び位置推定部15として機能し、処理を行なう。
【0070】
また、コンピュータとしては、汎用のPCの他に、スマートフォン、タブレット型端末装置が挙げられる。更に、コンピュータは、移動体100に搭載されたコンピュータ(制御装置40)であっても良い。
【0071】
また、実施の形態におけるプログラムは、複数のコンピュータによって構築されたコンピュータシステムによって実行されても良い。この場合は、例えば、各コンピュータが、それぞれ、画像データ取得部11、センサデータ取得部12、カメラ姿勢予測部13、特徴点探索部14、及び位置推定部15のいずれかとして機能しても良い。
【0072】
(物理構成)
ここで、実施の形態におけるプログラムを実行することによって、位置推定装置10を実現するコンピュータについて
図7を用いて説明する。
図7は、実施の形態における位置推定装置を実現するコンピュータの一例を示すブロック図である。
【0073】
図7に示すように、コンピュータ110は、CPU(CentralProcessing Unit)111と、メインメモリ112と、記憶装置113と、入力インターフェイス114と、表示コントローラ115と、データリーダ/ライタ116と、通信インターフェイス117とを備える。これらの各部は、バス121を介して、互いにデータ通信可能に接続される。
【0074】
また、コンピュータ110は、CPU111に加えて、又はCPU111に代えて、GPU(Graphics Processing Unit)、又はFPGA(Field-ProgrammableGate Array)を備えていても良い。この態様では、GPU又はFPGAが、実施の形態におけるプログラムを実行することができる。
【0075】
CPU111は、記憶装置113に格納された、コード群で構成された実施の形態におけるプログラムをメインメモリ112に展開し、各コードを所定順序で実行することにより、各種の演算を実施する。メインメモリ112は、典型的には、DRAM(Dynamic Random Access Memory)等の揮発性の記憶装置である。
【0076】
また、実施の形態におけるプログラムは、コンピュータ読み取り可能な記録媒体120に格納された状態で提供される。なお、本実施の形態におけるプログラムは、通信インターフェイス117を介して接続されたインターネット上で流通するものであっても良い。
【0077】
また、記憶装置113の具体例としては、ハードディスクドライブの他、フラッシュメモリ等の半導体記憶装置が挙げられる。入力インターフェイス114は、CPU111と、キーボード及びマウスといった入力機器118との間のデータ伝送を仲介する。表示コントローラ115は、ディスプレイ装置119と接続され、ディスプレイ装置119での表示を制御する。
【0078】
データリーダ/ライタ116は、CPU111と記録媒体120との間のデータ伝送を仲介し、記録媒体120からのプログラムの読み出し、及びコンピュータ110における処理結果の記録媒体120への書き込みを実行する。通信インターフェイス117は、CPU111と、他のコンピュータとの間のデータ伝送を仲介する。
【0079】
また、記録媒体120の具体例としては、CF(Compact Flash(登録商標))及びSD(Secure Digital)等の汎用的な半導体記憶デバイス、フレキシブルディスク(Flexible Disk)等の磁気記録媒体、又はCD-ROM(Compact DiskRead Only Memory)などの光学記録媒体が挙げられる。
【0080】
実施の形態における位置推定装置10は、プログラムがインストールされたコンピュータではなく、各部に対応したハードウェアを用いることによっても実現可能である。更に、位置推定装置10は、一部がプログラムで実現され、残りの部分がハードウェアで実現されていてもよい。
【実施例】
【0081】
続いて、実施の形態における位置推定装置10の実施例について説明する。また、以下の説明は、
図6に示したステップA1~A10に沿って行う。更に、以下の説明では、下記の文献が参照される。
(参照文献)
Joan Sola,"Quaternionkinematics for the error-state Kalman filter",2017,
<URL:https://arxiv.org/abs/1711.02508>
【0082】
(ステップA1)
カメラ姿勢予測部13は、まず、移動体100の位置p及び速度vの初期値を下記の数6に示すように設定する。但し、IMUが計測を行った時点を「t-1」とし、初期の環境地図の生成中のカメラ姿勢を[R|t]とする。
【0083】
【0084】
また、回転行列Rは数7のように定義される。クォータ二オンqは、回転行列の各要素を用いて、数7及び数8によって定義される。従って、クォータ二オンqの初期値は、「t-1」における回転行列から求められる。
【0085】
【0086】
【0087】
【0088】
(ステップA2)
センサデータ取得部12は、IMUであるセンサ30から、移動体100における加速度データ(ax,ay,az)及び角速度データ(ωx,ωy,ωz)を取得する。ここで、加速度データから得られる実測置をR(am-ab)とし、角速度データから得られる実測置を(ωm-ωb)とする。なお、am及びωmは計測値であり、ab及びωbは誤差である。
【0089】
(ステップA3)
カメラ姿勢予測部13は、下記の数10に、角度データ及び角速度データの実測置を適用して、位置p、速度v、及びクォータ二オンqの最新の事前予測値を算出する。また、カメラ姿勢予測部13は、下記の数11を用いて、共分散行列Ptの事前予測値を算出する。数11のFxおよびQiは数10から算出されるヤコビ行列である。
【0090】
【0091】
【0092】
(ステップA4)
カメラ姿勢予測部13は、クォータ二オンqの事前予測値を、下記の数12に適用して、次フレームでのカメラ姿勢[R|t]の予測値を算出する。また、カメラの次フレームでの位置は、ステップA3で算出された位置pとする。
【0093】
【0094】
また、カルマンフィルタにおける最適カルマンゲインKtの算出式は、下記数13に示す通りであり、関数hのヤコビアン行列Hから算出される。従って、カメラ姿勢予測部13は、下記の数13を用いて最適カルマンゲインKtを算出する。
【0095】
【0096】
(ステップA5)
特徴点探索部14は、画像データ取得部11が次フレームを取得していると、ステップA4で算出したカメラ姿勢[R|t]の予測値を用いて、次フレーム上に探索ウィンドウを設定する。
【0097】
具体的には、特徴点探索部14は、カメラ姿勢[R][t]の予測値を下記の数3に適用して、現フレームの特徴点の3次元座標(世界座標系(W))(X
W,Y
W,Z
W)を、カメラ座標系(C)の座標(X
C,Y
C,Z
C)に変換する。次に、特徴点探索部14は、Z
C=1に設定して、変換後の特徴点の座標を、上記数4を用いて正規化する。そして、特徴点探索部14は、
図5に示すように、正規化によって得られた特徴点の座標(X’
C,Y’
C)を、上記数4を用いて、次フレーム上に再投影し、再投影した特徴点の2次元座標を中心に、探索ウィンドウを設定する。
【0098】
また、特徴点探索部14は、
図5に示したように、探索ウィンドウにおける、次フレームのエピポーラ線に並行な方向の長さが、その方向に垂直な方向の長さよりも長くなるように、次フレーム上に探索ウィンドウを設定する。
【0099】
(ステップA6)
特徴点探索部14は、ステップA5で設定した探索ウィンドウ内で、現フレームの特徴点とマッチングする次フレームの特徴点を探索し、現フレームの特徴点と次フレームの特徴点との組み合わせを複数組抽出する。
【0100】
(ステップA7)
位置推定部15は、ステップA6で抽出された特徴点の組合せ毎に、次フレーム上の特徴点の2次元座標と、環境地図(点群データ)での特徴点の3次元座標とを用いて、PnP法を実行して、次フレームでのカメラ姿勢を算出する。
【0101】
(ステップA8)
まず、ステップA7で推定された次フレームでのカメラ姿勢から、移動体100の自己位置yが求められる。そして、時刻tにおけるセンサデータat及びωtと、次フレームでの移動体100の自己位置yとは、下記数14に示すように、関数hで表現される。また、数14においてh()は、システム状態を表す非線形関数であり、ここでのvは共分散行列Vで表されるガウスノイズである。
【0102】
【0103】
そして、カルマン係数Kと、関数hとの間には、以下の数15が成立する。
【0104】
【0105】
更に、上述の数15におけるハットδxは、下記の数16に示すように、事後予測値xtとの間に関係がある。従って、位置推定部15は、ステップA8において、下記の数17を用いて、位置p、速度v、及びクォータ二オンqの事後予測値を算出する。
【0106】
【0107】
【0108】
(ステップA9)
ステップA9では、位置推定部15は、ステップA6で抽出された特徴点の組合せ毎に、事後予測値(位置p、速度v、及びクォータ二オンq)を用いて、移動体の3次元座標(次フレームでの真のカメラの姿勢[R][t])を算出する。
【0109】
(ステップA10)
その後、ステップA9が実行され、終了条件が満たされていない場合は、再度ステップA2が実行され、終了条件が満たされている場合は、位置推定装置10での処理が終了する。
【0110】
上述した実施の形態及び実施例の一部又は全部は、以下に記載する(付記1)~(付記18)によって表現することができるが、以下の記載に限定されるものではない。
【0111】
(付記1)
移動体に搭載されたカメラから出力された画像データをフレーム毎に取得する、画像データ取得部と、
前記移動体の姿勢を検出するセンサからセンサデータを取得する、センサデータ取得部と、
取得された前記フレームでのカメラ姿勢を求め、求めた前記フレームでのカメラ姿勢と、前記フレームの取得後に取得された前記センサデータとから、前記フレームの後に取得される次フレームでのカメラ姿勢の予測値を算出する、カメラ姿勢予測部と、
前記次フレームの取得後に、前記予測値を用いて、前記次フレーム上に探索ウィンドウを設定し、前記探索ウィンドウ内で、前記フレーム内の特徴点に対応する特徴点を探索する、特徴点探索部と、
前記予測値とは別に、探索された特徴点に基づいて、前記次フレームでのカメラ姿勢を算出し、算出した前記次フレームでのカメラ姿勢に基づいて、前記次フレームにおける前記移動体の位置を推定する、位置推定部と、
を備えている、ことを特徴とする位置推定装置。
【0112】
(付記2)
付記1に記載の位置推定装置であって、
前記カメラ姿勢予測部が、前記フレームでのカメラ姿勢と、前記フレームの取得後に取得された前記センサデータとを用いた、ベイズ推定を行うことによって、前記予測値を算出する、
ことを特徴とする位置推定装置。
【0113】
(付記3)
付記1または2に記載の位置推定装置であって、
前記特徴点探索部が、前記探索ウィンドウにおける、前記次フレームのエピポーラ線に並行な方向の長さが、当該方向に垂直な方向の長さよりも長くなるように、前記探索ウィンドウを設定する、
ことを特徴とする位置推定装置。
【0114】
(付記4)
付記1~3のいずれかに記載の位置推定装置であって、
前記センサが、慣性計測装置、加速度センサ、及び角速度センサのうちの少なくとも1つを含む、
ことを特徴とする位置推定装置。
【0115】
(付記5)
付記1~4のいずれかに記載の位置推定装置であって、
前記カメラ姿勢が、前記カメラの回転行列及び並進ベクトルを含む、
ことを特徴とする位置推定装置。
【0116】
(付記6)
付記2に記載の位置推定装置であって、
前記カメラ姿勢予測部が、前記フレームの取得後に取得された前記センサデータをカルマンフィルタに適用して、事前予測値を算出し、算出した前記事前予測値と前記フレームでのカメラ姿勢とを用いて、前記予測値を算出し、
前記位置推定部が、前記予測値とは別に、探索された特徴点に基づいて、前記次フレームでのカメラ姿勢を算出した後に、前記予測値、算出した前記次フレームでのカメラ姿勢、及びカルマンゲインを用いて、前記次フレームにおける事後予測値を算出し、更に、前記事後予測値を用いて、前記次フレームにおける前記移動体の位置を推定する、
ことを特徴とする位置推定装置。
【0117】
(付記7)
移動体に搭載されたカメラから出力された画像データをフレーム毎に取得する、画像データ取得ステップと、
前記移動体の姿勢を検出するセンサからセンサデータを取得する、センサデータ取得ステップと、
取得された前記フレームでのカメラ姿勢を求め、求めた前記フレームでのカメラ姿勢と、前記フレームの取得後に取得された前記センサデータとから、前記フレームの後に取得される次フレームでのカメラ姿勢の予測値を算出する、カメラ姿勢予測ステップと、
前記次フレームの取得後に、前記予測値を用いて、前記次フレーム上に探索ウィンドウを設定し、前記探索ウィンドウ内で、前記フレーム内の特徴点に対応する特徴点を探索する、特徴点探索ステップと、
前記予測値とは別に、探索された特徴点に基づいて、前記次フレームでのカメラ姿勢を算出し、算出した前記次フレームでのカメラ姿勢に基づいて、前記次フレームにおける前記移動体の位置を推定する、位置推定ステップと、
を有する、ことを特徴とする位置推定方法。
【0118】
(付記8)
付記7に記載の位置推定方法であって、
前記カメラ姿勢予測ステップにおいて、前記フレームでのカメラ姿勢と、前記フレームの取得後に取得された前記センサデータとを用いた、ベイズ推定を行うことによって、前記予測値を算出する、
ことを特徴とする位置推定方法。
【0119】
(付記9)
付記7または8に記載の位置推定方法であって、
前記特徴点探索ステップにおいて、前記探索ウィンドウにおける、前記次フレームのエピポーラ線に並行な方向の長さが、当該方向に垂直な方向の長さよりも長くなるように、前記探索ウィンドウを設定する、
ことを特徴とする位置推定方法。
【0120】
(付記10)
付記7~9のいずれかに記載の位置推定方法であって、
前記センサが、慣性計測装置、加速度センサ、及び角速度センサのうちの少なくとも1つを含む、
ことを特徴とする位置推定方法。
【0121】
(付記11)
付記7~10のいずれかに記載の位置推定方法であって、
前記カメラ姿勢が、前記カメラの回転行列及び並進ベクトルを含む、
ことを特徴とする位置推定方法。
【0122】
(付記12)
付記8に記載の位置推定方法であって、
前記カメラ姿勢予測ステップにおいて、前記フレームの取得後に取得された前記センサデータをカルマンフィルタに適用して、事前予測値を算出し、算出した前記事前予測値と前記フレームでのカメラ姿勢とを用いて、前記予測値を算出し、
前記位置推定ステップにおいて、前記予測値とは別に、探索された特徴点に基づいて、前記次フレームでのカメラ姿勢を算出した後に、前記予測値、算出した前記次フレームでのカメラ姿勢、及びカルマンゲインを用いて、前記次フレームにおける事後予測値を算出し、更に、前記事後予測値を用いて、前記次フレームにおける前記移動体の位置を推定する、
ことを特徴とする位置推定方法。
【0123】
(付記13)
コンピュータに、
移動体に搭載されたカメラから出力された画像データをフレーム毎に取得する、画像データ取得ステップと、
前記移動体の姿勢を検出するセンサからセンサデータを取得する、センサデータ取得ステップと、
取得された前記フレームでのカメラ姿勢を求め、求めた前記フレームでのカメラ姿勢と、前記フレームの取得後に取得された前記センサデータとから、前記フレームの後に取得される次フレームでのカメラ姿勢の予測値を算出する、カメラ姿勢予測ステップと、
前記次フレームの取得後に、前記予測値を用いて、前記次フレーム上に探索ウィンドウを設定し、前記探索ウィンドウ内で、前記フレーム内の特徴点に対応する特徴点を探索する、特徴点探索ステップと、
前記予測値とは別に、探索された特徴点に基づいて、前記次フレームでのカメラ姿勢を算出し、算出した前記次フレームでのカメラ姿勢に基づいて、前記次フレームにおける前記移動体の位置を推定する、位置推定ステップと、
を実行させる、プログラム。
【0124】
(付記14)
付記13に記載のプログラムであって、
前記カメラ姿勢予測ステップにおいて、前記フレームでのカメラ姿勢と、前記フレームの取得後に取得された前記センサデータとを用いた、ベイズ推定を行うことによって、前記予測値を算出する、
ことを特徴とするプログラム。
【0125】
(付記15)
付記13または14に記載のプログラムであって、
前記特徴点探索ステップにおいて、前記探索ウィンドウにおける、前記次フレームのエピポーラ線に並行な方向の長さが、当該方向に垂直な方向の長さよりも長くなるように、前記探索ウィンドウを設定する、
ことを特徴とするプログラム。
【0126】
(付記16)
付記13~15のいずれかに記載のプログラムであって、
前記センサが、慣性計測装置、加速度センサ、及び角速度センサのうちの少なくとも1つを含む、
ことを特徴とするプログラム。
【0127】
(付記17)
付記13~16のいずれかに記載のプログラムであって、
前記カメラ姿勢が、前記カメラの回転行列及び並進ベクトルを含む、
ことを特徴とするプログラム。
【0128】
(付記18)
付記14に記載のプログラムであって、
前記カメラ姿勢予測ステップにおいて、前記フレームの取得後に取得された前記センサデータをカルマンフィルタに適用して、事前予測値を算出し、算出した前記事前予測値と前記フレームでのカメラ姿勢とを用いて、前記予測値を算出し、
前記位置推定ステップにおいて、前記予測値とは別に、探索された特徴点に基づいて、前記次フレームでのカメラ姿勢を算出した後に、前記予測値、算出した前記次フレームでのカメラ姿勢、及びカルマンゲインを用いて、前記次フレームにおける事後予測値を算出し、更に、前記事後予測値を用いて、前記次フレームにおける前記移動体の位置を推定する、
ことを特徴とするプログラム。
【産業上の利用可能性】
【0129】
以上のように本発明によれば、移動体の位置の推定において、移動体の動きによる推定精度の変動を抑制することができる。本発明は、SLAMを利用するシステムに有用である。
【符号の説明】
【0130】
10 位置推定装置
11 画像データ取得部
12 センサデータ取得部
13 カメラ姿勢予測部
14 特徴点探索部
15 位置推定部
20 カメラ
30 センサ
40 制御装置
50 駆動装置
60 操舵装置
70 測距装置
100 移動体
110 コンピュータ
111 CPU
112 メインメモリ
113 記憶装置
114 入力インターフェイス
115 表示コントローラ
116 データリーダ/ライタ
117 通信インターフェイス
118 入力機器
119 ディスプレイ装置
120 記録媒体
121 バス