IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ NECソリューションイノベータ株式会社の特許一覧

特開2023-4517位置推定装置、位置推定方法、及びプログラム
<>
  • 特開-位置推定装置、位置推定方法、及びプログラム 図1
  • 特開-位置推定装置、位置推定方法、及びプログラム 図2
  • 特開-位置推定装置、位置推定方法、及びプログラム 図3
  • 特開-位置推定装置、位置推定方法、及びプログラム 図4
  • 特開-位置推定装置、位置推定方法、及びプログラム 図5
  • 特開-位置推定装置、位置推定方法、及びプログラム 図6
  • 特開-位置推定装置、位置推定方法、及びプログラム 図7
  • 特開-位置推定装置、位置推定方法、及びプログラム 図8
  • 特開-位置推定装置、位置推定方法、及びプログラム 図9
  • 特開-位置推定装置、位置推定方法、及びプログラム 図10
  • 特開-位置推定装置、位置推定方法、及びプログラム 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023004517
(43)【公開日】2023-01-17
(54)【発明の名称】位置推定装置、位置推定方法、及びプログラム
(51)【国際特許分類】
   G05D 1/02 20200101AFI20230110BHJP
【FI】
G05D1/02 K
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2021106241
(22)【出願日】2021-06-28
(71)【出願人】
【識別番号】000232092
【氏名又は名称】NECソリューションイノベータ株式会社
(74)【代理人】
【識別番号】110002044
【氏名又は名称】弁理士法人ブライタス
(72)【発明者】
【氏名】山下 喜宏
(72)【発明者】
【氏名】杉本 聖弥
【テーマコード(参考)】
5H301
【Fターム(参考)】
5H301AA01
5H301BB14
5H301CC03
5H301CC06
5H301DD01
5H301GG08
5H301GG09
5H301HH10
(57)【要約】
【課題】コストの上昇を抑制しつつ、自己位置推定の精度の向上を図る。
【解決手段】位置推定装置10は、移動体に搭載されたカメラから出力される画像データをフレーム単位で取得し、フレーム毎に、当該フレームの画像データから、別のフレームとの間で対応する特徴点を抽出し、抽出した特徴点に基づいて、当該フレームにおける移動体の3次元座標を推定する、第1の位置推定部11と、移動体に搭載された2次元深度センサから連続して出力される深度データを取得し、取得した深度データを用いて、移動体の2次元座標を推定する、第2の位置推定部12と、推定された移動体の2次元座標についての設定条件が満たされているかどうかを判定し、設定条件が満たされている場合に、移動体の2次元座標を用いて、移動体の3次元座標を補正する、補正処理部13と、を備えている。
【選択図】図1
【特許請求の範囲】
【請求項1】
移動体に搭載されたカメラから出力される画像データをフレーム単位で取得し、フレーム毎に、当該フレームの画像データから、別のフレームとの間で対応する特徴点を抽出し、抽出した特徴点に基づいて、当該フレームにおける前記移動体の3次元座標を推定する、第1の位置推定部と、
前記移動体に搭載された2次元深度センサから連続して出力される深度データを取得し、取得した前記深度データを用いて、前記移動体の2次元座標を推定する、第2の位置推定部と、
推定された前記移動体の2次元座標についての設定条件が満たされているかどうかを判定し、前記設定条件が満たされている場合に、前記移動体の2次元座標を用いて、前記移動体の3次元座標を補正する、補正処理部と、
を備えている、
ことを特徴とする位置推定装置。
【請求項2】
請求項1に記載の位置推定装置であって、
前記第1の位置推定部が、対応する特徴点の組を用いて、前記特徴点の3次元座標を算出し、前記3次元座標が算出された前記特徴点を用いて、点群データで構成された3次元の環境地図を生成又は更新する、
ことを特徴とする位置推定装置。
【請求項3】
請求項1または2に記載の位置推定装置であって、
前記補正処理部が、前記移動体の2次元座標と前記移動体の3次元座標との差分を求め、求めた差分に基づいて、前記移動体の3次元座標、及び前記3次元の環境地図を補正する、
ことを特徴とする位置推定装置。
【請求項4】
請求項1~3のいずれかに記載の位置推定装置であって、
前記第2の位置推定部が、取得した前記深度データを用いて、前記移動体の周辺の2次元の点群データを生成し、生成した前記2次元の点群データと、予め作成されている2次元の自律走行用地図とを用いて、前記移動体の2次元座標を推定する、
ことを特徴とする位置推定装置。
【請求項5】
請求項1~4のいずれかに記載の位置推定装置であって、
前記補正処理部が、前記2次元深度センサが一回に出力した深度データにおけるバラツキを算出し、算出したバラツキが閾値以上となる場合に、前記設定条件が満たされていると判定する、
ことを特徴とする位置推定装置。
【請求項6】
移動体に搭載されたカメラから出力される画像データをフレーム単位で取得し、フレーム毎に、当該フレームの画像データから、別のフレームとの間で対応する特徴点を抽出し、抽出した特徴点に基づいて、当該フレームにおける前記移動体の3次元座標を推定する、第1の位置推定ステップと、
前記移動体に搭載された2次元深度センサから連続して出力される深度データを取得し、取得した前記深度データを用いて、前記移動体の2次元座標を推定する、第2の位置推定ステップと、
推定された前記移動体の2次元座標についての設定条件が満たされているかどうかを判定し、前記設定条件が満たされている場合に、前記移動体の2次元座標を用いて、前記移動体の3次元座標を補正する、補正処理ステップと、
を有する、
ことを特徴とする位置推定方法。
【請求項7】
コンピュータに、
移動体に搭載されたカメラから出力される画像データをフレーム単位で取得し、フレーム毎に、当該フレームの画像データから、別のフレームとの間で対応する特徴点を抽出し、抽出した特徴点に基づいて、当該フレームにおける前記移動体の3次元座標を推定する、第1の位置推定ステップと、
前記移動体に搭載された2次元深度センサから連続して出力される深度データを取得し、取得した前記深度データを用いて、前記移動体の2次元座標を推定する、第2の位置推定ステップと、
推定された前記移動体の2次元座標についての設定条件が満たされているかどうかを判定し、前記設定条件が満たされている場合に、前記移動体の2次元座標を用いて、前記移動体の3次元座標を補正する、補正処理ステップと、
を実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、移動体の位置の推定するための、位置推定装置、及び位置推定方法に関し、更には、これらを実現するためのプログラムに関する。
【背景技術】
【0002】
近年、センシング技術の向上により、SLAM(Simultaneous Localization and Mapping)が注目されている。SLAMは、センサを搭載した移動体によって、自己位置の推定と環境地図の作成とを同時に実行する技術である(例えば、特許文献1及び非特許文献1参照)。SLAMによれば、自律走行するロボット等の移動体は、ランダムに移動する必要がなく、環境地図から得られる自律走行用地図に沿って移動できるため、その移動効率は向上することになる。
【0003】
特許文献1及び非特許文献1においては、センサとして、カメラが用いられている。具体的には、特許文献1及び非特許文献1では、移動体は、カメラから出力される画像データをフレーム毎に取得し、最新のフレームにおいて、過去のフレームから抽出された特徴点に対応する特徴点を探索し、対応する特徴点同士で構成された特徴点の組を抽出する。
【0004】
そして、移動体は、特徴点の組を用いて、最新のフレームにおけるカメラ行列を算出し、特徴点の組毎に、カメラ行列と、特徴点のフレームにおける2次元座標とを用いて、特徴点の3次元座標を算出する。また、移動体は、カメラ行列を算出すると、カメラ行列からカメラの位置を算出し、自己位置推定を行う。更に、移動体は、3次元座標が算出された特徴点を用いて、3次元の点群で構成された環境地図(以下「3次元環境地図」と表記する。)を生成又は更新する。
【0005】
その後、移動体は、3次元環境地図を2次元に変換することによって、2次元の環境地図を生成する。但し、カメラを用いたSLAMでは、3次元環境地図を構成する点群は、画像上の特徴点であるので、点群の密度を高めることが難しいという問題がある。このため、自律走行用地図においては、特徴的な部分が少なく、この自律走行用地図では、移動体による精度の高い自律走行は困難となる。
【0006】
一方、センサとして、LiDAR(light detection and ranging)に代表される深度センサを用いた場合は、上述の問題を解消できる。LiDARには、3次元空間での深度を測定する3次元LiDARと、特定の平面での深度を測定する2次元LiDARとがあるが、一般的にSLAMで用いられるのは3次元LiDARである。
【0007】
3次元LiDARによれば、撮影画像の画素毎に、深度を測定することができるため、特徴点とならない点の3次元座標も算出でき、3次元環境地図における点群の密度を高めることができる。この結果、自律走行用地図が特徴的な部分が多くなるので、移動体による精度の高い自律走行が可能になると考えられる。また、3次元LiDARによれば、正確な自己位置推定も可能となる。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2020-76714号公報
【非特許文献】
【0009】
【非特許文献1】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>
【発明の概要】
【発明が解決しようとする課題】
【0010】
しかしながら、3次元LiDARにはコストが高いという問題、システムにおける処理負担が大きいという問題がある。一方、2次元LiDARを用いれば、コストが高いという問題は解消されるが、2次元LiDARでは、3次元環境地図を作成することができないという問題がある。また、2次元LiDARでは、凹凸の少ない環境において特徴的な部分を抽出することが難しく、2次元LiDARを用いた場合は、自己位置推定の精度が低下してしまう。
【0011】
本発明の開示の一例は、コストの上昇を抑制しつつ、自己位置推定の精度の向上を図りうる、位置推定装置、位置推定方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【0012】
上記目的を達成するため、本開示の一側面における位置推定装置は、
移動体に搭載されたカメラから出力される画像データをフレーム単位で取得し、フレーム毎に、当該フレームの画像データから、別のフレームとの間で対応する特徴点を抽出し、抽出した特徴点に基づいて、当該フレームにおける前記移動体の3次元座標を推定する、第1の位置推定部と、
前記移動体に搭載された2次元深度センサから連続して出力される深度データを取得し、取得した前記深度データを用いて、前記移動体の2次元座標を推定する、第2の位置推定部と、
推定された前記移動体の2次元座標についての設定条件が満たされているかどうかを判定し、前記設定条件が満たされている場合に、前記移動体の2次元座標を用いて、前記移動体の3次元座標を補正する、補正処理部と、
を備えている、ことを特徴とする。
【0013】
また、上記目的を達成するため、本開示の一側面における位置推定方法は、
移動体に搭載されたカメラから出力される画像データをフレーム単位で取得し、フレーム毎に、当該フレームの画像データから、別のフレームとの間で対応する特徴点を抽出し、抽出した特徴点に基づいて、当該フレームにおける前記移動体の3次元座標を推定する、第1の位置推定ステップと、
前記移動体に搭載された2次元深度センサから連続して出力される深度データを取得し、取得した前記深度データを用いて、前記移動体の2次元座標を推定する、第2の位置推定ステップと、
推定された前記移動体の2次元座標についての設定条件が満たされているかどうかを判定し、前記設定条件が満たされている場合に、前記移動体の2次元座標を用いて、前記移動体の3次元座標を補正する、補正処理ステップと、
を有する、ことを特徴とする。
【0014】
更に、上記目的を達成するため、本開示の一側面におけるプログラムは、
コンピュータに、
移動体に搭載されたカメラから出力される画像データをフレーム単位で取得し、フレーム毎に、当該フレームの画像データから、別のフレームとの間で対応する特徴点を抽出し、抽出した特徴点に基づいて、当該フレームにおける前記移動体の3次元座標を推定する、第1の位置推定ステップと、
前記移動体に搭載された2次元深度センサから連続して出力される深度データを取得し、取得した前記深度データを用いて、前記移動体の2次元座標を推定する、第2の位置推定ステップと、
推定された前記移動体の2次元座標についての設定条件が満たされているかどうかを判定し、前記設定条件が満たされている場合に、前記移動体の2次元座標を用いて、前記移動体の3次元座標を補正する、補正処理ステップと、
を実行させる、ことを特徴とする。
【発明の効果】
【0015】
以上のように本開示によれば、コストの上昇を抑制しつつ、自己位置推定の精度を向上させることができる。
【図面の簡単な説明】
【0016】
図1図1は、実施の形態における位置推定装置の概略構成を示す構成図である。
図2図2は、実施の形態における位置推定装置の構成の一例を具体的に示す構成図である。
図3図3は、第1の位置推定部における処理を説明する図である。
図4図4(a)は、2次元深度センサから出力された深度データの一例を示す図であり、図4(b)は、予め作成されている2次元の自律走行用地図(2次元環境地図)の一例を示す図である。
図5図5は、第2の位置推定部における処理を示す図であり、図5(a)及び図5(b)は一連の処理の流れを示している。
図6図6は、補正処理部における設定条件の判定処理を示す図である。
図7図7は、補正処理部における処理を説明する図であり、図7(a)及び図7(b)は一連の処理の流れを示している。
図8図8は、実施の形態における移動体の2次元座標の推定処理時の位置推定装置の動作を示すフロー図である。
図9図9は、実施の形態における3次元の環境地図の生成又は更新処理時の位置推定装置の動作を示すフロー図である。
図10図10は、実施の形態における移動体の位置の推定及び補正処理時の位置推定装置の動作を示すフロー図である。
図11図11は、実施の形態における位置推定装置を実現するコンピュータの一例を示すブロック図である。
【発明を実施するための形態】
【0017】
(実施の形態)
以下、実施の形態における、位置推定装置、位置推定方法、及びプログラムについて、図1図10を参照しながら説明する。
【0018】
[装置構成]
最初に、実施の形態における位置推定装置の概略構成について図1を用いて説明する。図1は、実施の形態における位置推定装置の概略構成を示す構成図である。
【0019】
図1に示す実施の形態における位置推定装置10は、移動体の位置を推定するための
装置である。図1に示すように、位置推定装置10は、第1の位置推定部11と、第2の位置推定部12と、補正処理部13とを備えている。
【0020】
第1の位置推定部11は、移動体に搭載されたカメラから出力される画像データをフレーム単位で取得し、フレーム毎に、そのフレームの画像データから、別のフレームとの間で対応する特徴点を抽出する。そして、第1の位置推定部11は、抽出した特徴点に基づいて、フレーム毎に、そのフレームにおける移動体の3次元座標を推定する。
【0021】
第2の位置推定部12は、移動体に搭載された2次元深度センサから連続して出力される深度データを取得し、取得した深度データを用いて、移動体の2次元座標を推定する。
【0022】
補正処理部13は、推定された移動体の2次元座標についての設定条件が満たされているかどうかを判定し、設定条件が満たされている場合に、移動体の2次元座標を用いて、移動体の3次元座標を補正する。
【0023】
このように、位置推定装置10では、画像から推定された3次元座標が、2次元深度センサからの深度データを用いて補正されるので、自己位置推定の精度が向上する。また、位置推定装置10では、3次元のLiDAR等の3次元の深度センサを用いる必要がないため、これを用いる場合に比べて、コストの上昇が抑制される。
【0024】
続いて、図2図7を用いて、実施の形態における、位置推定装置の構成及び機能について具体的に説明する。図2は、実施の形態における位置推定装置の構成の一例を具体的に示す構成図である。図3は、第1の位置推定部における処理を説明する図である。図4(a)は、2次元深度センサから出力された深度データの一例を示す図であり、図4(b)は、予め作成されている2次元の自律走行用地図(2次元環境地図)の一例を示す図である。図5は、第2の位置推定部における処理を示す図であり、図5(a)及び図5(b)は一連の処理の流れを示している。図6は、補正処理部における設定条件の判定処理を示す図である。図7は、補正処理部における処理を説明する図であり、図7(a)及び図7(b)は一連の処理の流れを示している。
【0025】
図2に示すように、実施の形態では、位置推定装置10は、移動体100に搭載されている。移動体100は、位置推定装置10に加えて、カメラ20と、2次元深度センサ30と、制御装置40と、駆動装置50とを備えている。
【0026】
カメラ20は、固体撮像素子を備えた撮像装置である。カメラ20は、移動体100の周辺を撮影可能となるように取り付けられており、移動体100の周辺の2次元画像の画像データを出力する。
【0027】
2次元深度センサ30は、それを中心とする2次元平面上において、対象物までの距離(深度)を計測し、計測した距離を特定する情報を、深度データとして連続して出力する。2次元深度センサ30の具体例としては、2次元LiDARが挙げられる。2次元LiDARは、それを中心とする2次元平面上で、周辺を走査するようにレーザ光を連続して出射し、物体で反射されたレーザ光が入射するまでの時間を計測することによって、2次元平面上に存在する物体までの距離を測定し、深度データを出力する。2次元深度センサ30が出力した深度データの一例は、図4(a)に示す通りである。
【0028】
制御装置40は、プロセッサ、メモリを含む装置であり、移動体100を制御する。例えば、制御装置40は、位置推定装置10によって推定された移動体100の3次元座標に基づいて、移動体100の進行方向及び移動速度を決定する。また、制御装置40は、決定した進行方向及び移動速度に応じて駆動装置50を制御して、予め設定されたルートに沿って移動体100を移動させる。
【0029】
駆動装置50は、電動モータなどの原動機と、原動機の動力を車輪に伝える伝達機構と、操舵機構とを少なくとも含む。操舵機構は、移動体100の移動方向を変えられるように構成されていれば良く、例えば、操舵輪とそれを動かすためのアクチュエータとを備えている。また、操舵機構は、左右の駆動輪のトルクを制御する機構であっても良い。
【0030】
実施の形態では、図2に示すように、位置推定装置10は、第1の位置推定部11、第2の位置推定部12、及び補正処理部13に加えて記憶部14を備えている。
【0031】
第1の位置推定部11は、実施の形態では、カメラ20から出力される画像データをフレーム単位で取得する。そして、第1の位置推定部11は、フレーム毎に、各フレームの画像データから、別のフレームとの間で対応する特徴点を抽出して、対応する特徴点の組を設定する。
【0032】
具体的には、図3の例では、第1の位置推定部11は、時間[t]においてフレーム22aを取得し、時間[t+1]においてフレーム22bを取得している。また、時間[t]から時間[t+1]までの間に、移動体100は移動し、それに伴いカメラ20の位置は21aから21bへと変化する。そして、第1の位置推定部11は、フレーム22aにおいて特徴点23a~27aを抽出しているため、フレーム22bにおいては、それぞれに対応する特徴点23b~27bを抽出する。これにより、特徴点の組(23a,23b)、(24a,24b)、(25a,25b)、(26a,26b)、及び(27a,27b)が設定される。
【0033】
そして、第1の位置推定部11は、対応する特徴点の組を用いて、特徴点の3次元座標を算出する。具体的には、第1の位置推定部11は、対応する特徴点の組合せを用いて、現フレームにおけるカメラ20のカメラ姿勢を算出する。ここで、カメラ姿勢は、回転行列Rと並進ベクトルtとで構成される。カメラ姿勢の算出は、下記の参考文献に示す既知の手法によって行うことができる。
【0034】
(参考文献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】
更に、第1の位置推定部11は、現フレーム及び過去のフレームそれぞれにおける、カメラ姿勢と、対応する特徴点の2次元座標とを用いて、三角測量を行うことによって、対応する特徴点の3次元座標(点群データ)を算出する。
【0036】
その後、第1の位置推定部11は、3次元座標が算出された特徴点を用いて、特徴点の点群データで構成された3次元の環境地図を生成する。また、既に環境地図が生成されている場合は、第1の位置推定部11は、新たに3次元座標が算出された特徴点を用いて、環境地図を更新する。具体的には、第1の位置推定部11は、移動体100の移動に合わせて、特徴点の3次元座標の算出処理を繰り返し実行する。そして、第1の位置推定部11は、繰り返し算出した特徴点によって、移動体の周囲の物体を表現する3次元の点群データを構築し、3次元の環境地図を生成又は更新する。
【0037】
また、第1の位置推定部11は、現フレームにおける特徴点の2次元座標と、算出した特徴点の3次元座標とを用いて、現フレームにおけるカメラ20の3次元座標、即ち、移動体100の3次元環境地図上での3次元座標を推定する。
【0038】
具体的には、現フレームにおけるカメラ20の3次元座標を推定することは、PNP問題を解くことに相当する。よって、第1の位置推定部11は、例えば、DLT法(Direct Linear Transformation method)を用いて、透視投影行列を求め、求めた透視投影行列を回転行列Rと並進ベクトルtとに分解することによって、カメラ20の3次元座標を算出する。第1の位置推定部11は、生成した3次元の環境地図、及び推定した3次元座標の情報を、記憶部14に格納する。
【0039】
第2の位置推定部12は、実施の形態では、2次元深度センサ30から、例えば、図4(a)に示す深度データを取得し、取得した深度データを記憶部14に格納する。そして、第2の位置推定部12は、取得した深度データを用いて、移動体100の周辺の2次元の点群データを生成する。
【0040】
また、第2の位置推定部12は、生成した2次元の点群データと、図4(b)に示す2次元の自律走行用地図とを用いて、移動体100の2次元座標を推定する。2次元の自律走行用地図は予め作成されている地図であり、2次元環境地図とも呼ばれる。具体的には、第2の位置推定部12は、図5(a)に示すように、2次元の点群データと2次元の自律走行用地図とを対比し、図5(b)に示すように両者をマッチングする。そして、2次元の点群データにおける移動体100の位置を、2次元の自律走行用地図に当てはめて、移動体100の2次元座標を推定する。第2の位置推定部12は、推定した2次元座標の情報を、記憶部14に格納する。
【0041】
補正処理部13は、実施の形態では、2次元深度センサ30が一回に出力した深度データにおけるバラツキを算出し、算出したバラツキが閾値以上であることを設定条件として、設定条件が満たされているかどうか、即ちバラツキが閾値以上であるかどうかを判定する。これは、バラツキが閾値未満である場合は、移動体の周辺が平らな壁等であると考えられ、この場合においては、第2の位置推定部12による移動体の2次元座標の推定精度が低下している可能性があるからである。一方、バラツキが閾値以上である場合は、移動体の周辺に凹凸が存在し、この場合においては、第2の位置推定部12による移動体の2次元座標の推定精度が確保される。
【0042】
具体的には、図6に示すように、補正処理部13は、一回に出力された深度データにおいて始点及び終点を特定し、更に、始点及び終点を通る軸をx軸、x軸に垂直な軸をy軸に設定する。そして、補正処理部13は、隣接する2点毎にdx/dyを算出し、更に、算出したdx/dyを積算し、得られた積算値(Σdx/dy)をバラツキとする。その後、補正処理部13は、バラツキを表す積算値(Σdx/dy)が閾値α以上である場合は、設定条件を満たすと判定し、そうでない場合は設定条件を満たさないと判定する。
【0043】
補正処理部13は、設定条件が満たされていると判定する場合は、移動体100の2次元座標と移動体100の3次元座標との差分を求め、求めた差分に基づいて、移動体100の3次元座標、及び3次元の環境地図を補正する。
【0044】
具体的には、補正処理部13は、まず、図7(a)に示すように、3次元環境地図上での移動体100の座標を、2次元の自律走行用地図の2次元座標に投影し、2次元での移動体100の座標(図中「■」)を特定する。そして、補正処理部13は、移動体100の2次元座標(図中「×」)と、3次元座標から投影された移動体の座標(図中「■」)との差分を求める。
【0045】
続いて、補正処理部13は、2次元の自律走行用地図が表す2次元座標において、差分に基づいて、3次元の環境地図を構成する点群それぞれの座標を補正すると共に、移動体100の3次元座標についても補正する。補正された座標が、現フレームにおける最終的な移動体の座標となる。
【0046】
[装置動作]
次に、実施の形態における位置推定装置10の動作について図8図10を用いて説明する。以下の説明においては、適宜図1図7を参照する。また、実施の形態では、位置推定装置10を動作させることによって、位置推定方法が実施される。よって、実施の形態における位置推定方法の説明は、以下の位置推定装置10の動作説明に代える。
【0047】
最初に、図8を用いて、移動体の2次元座標の推定処理について説明する。図8は、実施の形態における移動体の2次元座標の推定処理時の位置推定装置の動作を示すフロー図である。
【0048】
図8に示すように、最初に、第2の位置推定部12は、2次元深度センサ30から、深度データ(図4(a)参照)を取得し、取得した深度データを用いて、移動体100の周辺の2次元の点群データを生成する(ステップA1)。2次元深度センサ30は、設定間隔をおいて、深度データを出力している。ステップA1では、第2の位置推定部12は、一回に出力した深度データを取得する。
【0049】
次に、第2の位置推定部12は、図5(a)及び図5(b)に示したように、ステップA1で生成した2次元の点群データと、予め作成されている2次元の自律走行用地図とを対比し、両者をマッチングする(ステップA2)。
【0050】
そして、第2の位置推定部12は、2次元の点群データにおける移動体100の位置を、2次元の自律走行用地図に当てはめて、移動体100の2次元座標を推定する(ステップA3)。
【0051】
その後、2次元深度センサ30が新たに深度データを出力すると、再度ステップA1~A3が実行される。つまり、ステップA1~A3は、2次元深度センサ30が深度データを出力する度に実行される。
【0052】
続いて、図9を用いて、3次元の環境地図の生成又は更新処理について説明する。図9は、実施の形態における3次元の環境地図の生成又は更新処理時の位置推定装置の動作を示すフロー図である。
【0053】
図9に示すように、最初に、第1の位置推定部11は、カメラ20から出力された画像データを1フレーム取得する(ステップB1)。次に、第1の位置推定部11は、ステップB1で取得したフレーム(現フレーム)の画像データから、別のフレームとの間で対応する特徴点を抽出し、対応する特徴点の組を設定する(ステップB2)。
【0054】
次に、第1の位置推定部11は、ステップB2で設定した特徴点の組を用いて、各特徴点の3次元座標を算出する(ステップB3)。更に、第1の位置推定部11は、算出した各特徴点の3次元座標を用いて、3次元の環境地図を更新する(ステップB4)。なお、3次元の環境地図が未だ生成されていない場合は、第1の位置推定部11は、算出した各特徴点の3次元座標を用いて、3次元の環境地図を生成する。ステップB1からステップB4は繰り返し実行され、その度に、3次元の環境地図は拡張する。
【0055】
カメラ20が新たに画像データを出力すると、再度ステップB1~B4が実行される。つまり、ステップB1~B4は、カメラ20が画像データを出力する度に実行される。
【0056】
続いて、図10を用いて、移動体の3次元座標の推定及び補正処理について説明する。図10は、実施の形態における移動体の位置の推定及び補正処理時の位置推定装置の動作を示すフロー図である。
【0057】
最初に、次に、第1の位置推定部11は、図9に示したステップB1で取得した現フレームにおける各特徴点の2次元座標を取得し、更に、現フレーム以前に取得された過去フレームについてのステップB3で3次元座標が算出された各特徴点を特定し、取得した各特徴点の2次元座標と、特定した各特徴点の3次元座標とを、1つの組データとして設定する(ステップC1)。
【0058】
次に、第1の位置推定部11は、ステップC1で設定した組データを用いて、現フレームにおけるカメラ20の3次元座標、即ち、移動体100の3次元の環境地図上での3次元座標を推定する(ステップC2)。具体的には、ステップC2では、第1の位置推定部11は、DLT法に組データを適用して、透視投影行列を求め、求めた透視投影行列を回転行列Rと並進ベクトルtとに分解することによって、カメラ20の3次元座標を算出する。
【0059】
次に、補正処理部13は、移動体100の2次元座標についての設定条件が満たされているかどうかを判定する(ステップC3)。具体的には、ステップC3では、補正処理部13は、2次元深度センサ30が一回に出力した深度データにおけるバラツキを算出し、算出したバラツキが閾値以上であるかどうかを判定する。
【0060】
ステップC3の判定の結果、設定条件を満たしている場合は、補正処理部13は、図8に示したステップA3で推定された移動体100の2次元座標と、ステップC2で推定された移動体100の3次元座標との差分を求める(ステップC4)。
【0061】
次に、補正処理部13は、ステップC4で求めた差分に基づいて、移動体100の3次元座標、及び3次元の環境地図を補正する(ステップC5)。
【0062】
その後、補正処理部13は、補正された移動体100の3次元座標を、制御装置40に出力する(ステップC6)。
【0063】
また、ステップC3の判定の結果、設定条件を満たしていない場合は、補正処理部13は、ステップC2で推定された3次元座標を、制御装置40に出力する(ステップC6)。
【0064】
ステップC6が実行されると、制御装置40は、出力されてきた3次元座標に基づいて、移動体100の進行方向及び移動速度を決定する。また、制御装置40は、決定した進行方向及び移動速度に応じて駆動装置50を制御して、予め設定されたルートに沿って移動体100を移動させる。
【0065】
ステップC1~C6は、移動体100が移動している間、繰り返し実行される。また、実施の形態では、ステップC1~C6は、ステップB1~B4の実行サイクルから独立して実行される。
【0066】
以上のように実施の形態によれば、画像から推定された移動体100の3次元座標は、設定条件が満たされる場合は、2次元深度センサ30からの深度データを用いて補正される。このため、移動体の位置推定における精度は大きく向上する。また、実施の形態では、コストの高い3次元の深度センサ、例えば、3次元のLiDARを用いる必要がないため、これを用いる場合に比べて、コストの上昇が抑制される。
【0067】
[プログラム]
実施の形態におけるプログラムは、コンピュータに、図8に示すステップA1~A3、図9に示すステップB1~B4、図10に示すステップC1~C6を実行させるプログラムであれば良い。このプログラムをコンピュータにインストールし、実行することによって、実施の形態における位置推定装置10と位置推定方法とを実現することができる。この場合、コンピュータのプロセッサは、第1の位置推定部11、第2の位置推定部12、及び補正処理部13として機能し、処理を行なう。また、コンピュータの記憶装置は、記憶部14として機能する。
【0068】
また、コンピュータとしては、汎用のPCの他に、スマートフォン、タブレット型端末装置が挙げられる。更に、コンピュータは、移動体100の制御装置40として機能するコンピュータであっても良い。この場合、位置推定装置10は、移動体100の制御装置40のオペレーティングシステム上に構築されることになる。
【0069】
また、実施の形態におけるプログラムは、複数のコンピュータによって構築されたコンピュータシステムによって実行されても良い。この場合は、例えば、各コンピュータが、それぞれ、第1の位置推定部11、第2の位置推定部12、及び補正処理部13のいずれかとして機能しても良い。
【0070】
[物理構成]
ここで、実施の形態におけるプログラムを実行することによって、位置推定装置10を実現するコンピュータについて図11を用いて説明する。図11は、実施の形態における位置推定装置を実現するコンピュータの一例を示すブロック図である。
【0071】
図10に示すように、コンピュータ110は、CPU(Central Processing Unit)111と、メインメモリ112と、記憶装置113と、入力インターフェイス114と、表示コントローラ115と、データリーダ/ライタ116と、通信インターフェイス117とを備える。これらの各部は、バス121を介して、互いにデータ通信可能に接続される。
【0072】
また、コンピュータ110は、CPU111に加えて、又はCPU111に代えて、GPU(Graphics Processing Unit)、又はFPGA(Field-Programmable Gate Array)を備えていても良い。この態様では、GPU又はFPGAが、実施の形態におけるプログラムを実行することができる。
【0073】
CPU111は、記憶装置113に格納された、コード群で構成された実施の形態におけるプログラムをメインメモリ112に展開し、各コードを所定順序で実行することにより、各種の演算を実施する。メインメモリ112は、典型的には、DRAM(Dynamic Random Access Memory)等の揮発性の記憶装置である。
【0074】
また、実施の形態におけるプログラムは、コンピュータ読み取り可能な記録媒体120に格納された状態で提供される。なお、本実施の形態におけるプログラムは、通信インターフェイス117を介して接続されたインターネット上で流通するものであっても良い。
【0075】
また、記憶装置113の具体例としては、ハードディスクドライブの他、フラッシュメモリ等の半導体記憶装置が挙げられる。入力インターフェイス114は、CPU111と、キーボード及びマウスといった入力機器118との間のデータ伝送を仲介する。表示コントローラ115は、ディスプレイ装置119と接続され、ディスプレイ装置119での表示を制御する。
【0076】
データリーダ/ライタ116は、CPU111と記録媒体120との間のデータ伝送を仲介し、記録媒体120からのプログラムの読み出し、及びコンピュータ110における処理結果の記録媒体120への書き込みを実行する。通信インターフェイス117は、CPU111と、他のコンピュータとの間のデータ伝送を仲介する。
【0077】
また、記録媒体120の具体例としては、CF(Compact Flash(登録商標))及びSD(Secure Digital)等の汎用的な半導体記憶デバイス、フレキシブルディスク(Flexible Disk)等の磁気記録媒体、又はCD-ROM(Compact Disk Read Only Memory)などの光学記録媒体が挙げられる。
【0078】
なお、本実施の形態における位置推定装置10は、プログラムがインストールされたコンピュータではなく、各部に対応したハードウェアを用いることによっても実現可能である。更に、位置推定装置10は、一部がプログラムで実現され、残りの部分がハードウェアで実現されていてもよい。ハードウェアとしては、電子回路が挙げられる。
【0079】
上述した実施の形態の一部又は全部は、以下に記載する(付記1)~(付記15)によって表現することができるが、以下の記載に限定されるものではない。
【0080】
(付記1)
移動体に搭載されたカメラから出力される画像データをフレーム単位で取得し、フレーム毎に、当該フレームの画像データから、別のフレームとの間で対応する特徴点を抽出し、抽出した特徴点に基づいて、当該フレームにおける前記移動体の3次元座標を推定する、第1の位置推定部と、
前記移動体に搭載された2次元深度センサから連続して出力される深度データを取得し、取得した前記深度データを用いて、前記移動体の2次元座標を推定する、第2の位置推定部と、
推定された前記移動体の2次元座標についての設定条件が満たされているかどうかを判定し、前記設定条件が満たされている場合に、前記移動体の2次元座標を用いて、前記移動体の3次元座標を補正する、補正処理部と、
を備えている、
ことを特徴とする位置推定装置。
【0081】
(付記2)
付記1に記載の位置推定装置であって、
前記第1の位置推定部が、対応する特徴点の組を用いて、前記特徴点の3次元座標を算出し、前記3次元座標が算出された前記特徴点を用いて、点群データで構成された3次元の環境地図を生成又は更新する、
ことを特徴とする位置推定装置。
【0082】
(付記3)
付記1または2に記載の位置推定装置であって、
前記補正処理部が、前記移動体の2次元座標と前記移動体の3次元座標との差分を求め、求めた差分に基づいて、前記移動体の3次元座標、及び前記3次元の環境地図を補正する、
ことを特徴とする位置推定装置。
【0083】
(付記4)
付記1~3のいずれかに記載の位置推定装置であって、
前記第2の位置推定部が、取得した前記深度データを用いて、前記移動体の周辺の2次元の点群データを生成し、生成した前記2次元の点群データと、予め作成されている2次元の自律走行用地図とを用いて、前記移動体の2次元座標を推定する、
ことを特徴とする位置推定装置。
【0084】
(付記5)
付記1~4のいずれかに記載の位置推定装置であって、
前記補正処理部が、前記2次元深度センサが一回に出力した深度データにおけるバラツキを算出し、算出したバラツキが閾値以上となる場合に、前記設定条件が満たされていると判定する、
ことを特徴とする位置推定装置。
【0085】
(付記6)
移動体に搭載されたカメラから出力される画像データをフレーム単位で取得し、フレーム毎に、当該フレームの画像データから、別のフレームとの間で対応する特徴点を抽出し、抽出した特徴点に基づいて、当該フレームにおける前記移動体の3次元座標を推定する、第1の位置推定ステップと、
前記移動体に搭載された2次元深度センサから連続して出力される深度データを取得し、取得した前記深度データを用いて、前記移動体の2次元座標を推定する、第2の位置推定ステップと、
推定された前記移動体の2次元座標についての設定条件が満たされているかどうかを判定し、前記設定条件が満たされている場合に、前記移動体の2次元座標を用いて、前記移動体の3次元座標を補正する、補正処理ステップと、
を有する、
ことを特徴とする位置推定方法。
【0086】
(付記7)
付記6に記載の位置推定方法であって、
前記第1の位置推定ステップにおいて、対応する特徴点の組を用いて、前記特徴点の3次元座標を算出し、前記3次元座標が算出された前記特徴点を用いて、点群データで構成された3次元の環境地図を生成又は更新する、
ことを特徴とする位置推定方法。
【0087】
(付記8)
付記6または7に記載の位置推定方法であって、
前記補正処理ステップにおいて、前記移動体の2次元座標と前記移動体の3次元座標との差分を求め、求めた差分に基づいて、前記移動体の3次元座標、及び前記3次元の環境地図を補正する、
ことを特徴とする位置推定方法。
【0088】
(付記9)
付記6~8のいずれかに記載の位置推定方法であって、
前記第2の位置推定ステップにおいて、取得した前記深度データを用いて、前記移動体の周辺の2次元の点群データを生成し、生成した前記2次元の点群データと、予め作成されている2次元の自律走行用地図とを用いて、前記移動体の2次元座標を推定する、
ことを特徴とする位置推定方法。
【0089】
(付記10)
付記6~9のいずれかに記載の位置推定方法であって、
前記補正処理ステップにおいて、前記2次元深度センサが一回に出力した深度データにおけるバラツキを算出し、算出したバラツキが閾値以上となる場合に、前記設定条件が満たされていると判定する、
ことを特徴とする位置推定方法。
【0090】
(付記11)
コンピュータに、
移動体に搭載されたカメラから出力される画像データをフレーム単位で取得し、フレーム毎に、当該フレームの画像データから、別のフレームとの間で対応する特徴点を抽出し、抽出した特徴点に基づいて、当該フレームにおける前記移動体の3次元座標を推定する、第1の位置推定ステップと、
前記移動体に搭載された2次元深度センサから連続して出力される深度データを取得し、取得した前記深度データを用いて、前記移動体の2次元座標を推定する、第2の位置推定ステップと、
推定された前記移動体の2次元座標についての設定条件が満たされているかどうかを判定し、前記設定条件が満たされている場合に、前記移動体の2次元座標を用いて、前記移動体の3次元座標を補正する、補正処理ステップと、
を実行させる、プログラム。
【0091】
(付記12)
付記11に記載のプログラムであって、
前記第1の位置推定ステップにおいて、対応する特徴点の組を用いて、前記特徴点の3次元座標を算出し、前記3次元座標が算出された前記特徴点を用いて、点群データで構成された3次元の環境地図を生成又は更新する、
ことを特徴とするプログラム。
【0092】
(付記13)
付記11または12に記載のプログラムであって、
前記補正処理ステップにおいて、前記移動体の2次元座標と前記移動体の3次元座標との差分を求め、求めた差分に基づいて、前記移動体の3次元座標、及び前記3次元の環境地図を補正する、
ことを特徴とするプログラム。
【0093】
(付記14)
付記11~13のいずれかに記載のプログラムであって、
前記第2の位置推定ステップにおいて、取得した前記深度データを用いて、前記移動体の周辺の2次元の点群データを生成し、生成した前記2次元の点群データと、予め作成されている2次元の自律走行用地図とを用いて、前記移動体の2次元座標を推定する、
ことを特徴とするプログラム。
【0094】
(付記15)
付記11~14のいずれかに記載のプログラムであって、
前記補正処理ステップにおいて、前記2次元深度センサが一回に出力した深度データにおけるバラツキを算出し、算出したバラツキが閾値以上となる場合に、前記設定条件が満たされていると判定する、
ことを特徴とするプログラム。
【産業上の利用可能性】
【0095】
以上のように本開示によれば、コストの上昇を抑制しつつ、自己位置推定の精度を向上させることができる。本発明は、移動体の自律走行システムに有用である。
【符号の説明】
【0096】
10 位置推定装置
11 第1の位置推定部
12 第2の位置推定部
13 補正処理部
14 記憶部
20 カメラ
30 2次元深度センサ
40 制御装置
50 駆動装置
100 移動体
110 コンピュータ
111 CPU
112 メインメモリ
113 記憶装置
114 入力インターフェイス
115 表示コントローラ
116 データリーダ/ライタ
117 通信インターフェイス
118 入力機器
119 ディスプレイ装置
120 記録媒体
121 バス
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11