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

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

▶ 三星電子株式会社の特許一覧 ▶ 首▲爾▼市立大學 産學協力團の特許一覧

特開2023-68632SLAMを加速化させる装置、及びそれを含む電子装置
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023068632
(43)【公開日】2023-05-17
(54)【発明の名称】SLAMを加速化させる装置、及びそれを含む電子装置
(51)【国際特許分類】
   G01C 21/30 20060101AFI20230510BHJP
   G06T 7/70 20170101ALI20230510BHJP
   G06T 7/593 20170101ALI20230510BHJP
【FI】
G01C21/30
G06T7/70 Z
G06T7/593
【審査請求】未請求
【請求項の数】21
【出願形態】OL
(21)【出願番号】P 2022169969
(22)【出願日】2022-10-24
(31)【優先権主張番号】10-2021-0149020
(32)【優先日】2021-11-02
(33)【優先権主張国・地域又は機関】KR
(71)【出願人】
【識別番号】390019839
【氏名又は名称】三星電子株式会社
【氏名又は名称原語表記】Samsung Electronics Co.,Ltd.
【住所又は居所原語表記】129,Samsung-ro,Yeongtong-gu,Suwon-si,Gyeonggi-do,Republic of Korea
(71)【出願人】
【識別番号】512288569
【氏名又は名称】首▲爾▼市立大學 産學協力團
(74)【代理人】
【識別番号】100133400
【弁理士】
【氏名又は名称】阿部 達彦
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100154922
【弁理士】
【氏名又は名称】崔 允辰
(72)【発明者】
【氏名】全 明帝
(72)【発明者】
【氏名】金 起徹
(72)【発明者】
【氏名】權 南燮
(72)【発明者】
【氏名】金 容奎
(72)【発明者】
【氏名】李 泓錫
【テーマコード(参考)】
2F129
5L096
【Fターム(参考)】
2F129AA02
2F129AA03
2F129AA11
2F129BB03
2F129BB20
2F129BB22
2F129BB26
2F129BB33
2F129BB49
2F129EE02
2F129GG17
2F129GG18
2F129HH15
2F129HH18
2F129HH20
2F129HH21
5L096FA09
5L096FA52
5L096FA64
5L096FA69
5L096GA51
5L096HA05
(57)【要約】
【課題】SLAM(Simultaneous Localization And Mapping)を加速化させる装置、及びそれを含む電子装置を提供する。
【解決手段】SLAMを加速化させる装置は、フロントエンドプロセッサ及びバックエンドプロセッサを含むSLAMプロセッサを含み、フロントエンドプロセッサは、第1フレームから抽出された特徴点のうち、第1特徴点の第1フレームの次の第2フレームにおける位置を追跡し、バックエンドプロセッサは、フロントエンドプロセッサで追跡された第1特徴点の第2フレームにおける位置に基づき、第1特徴点のマップポイント及びカメラポーズに係わる第1測定値を獲得し、マップポイントとカメラポーズとに係わるヘッセ行列の要素のうち、第1測定値と関連し、最適化行列に影響を与える要素を計算し、マップポイント及びカメラポーズの状態に係わる最適化演算を行うことに利用される最適化行列に、計算された要素を累積することができる。
【選択図】図16
【特許請求の範囲】
【請求項1】
SLAM(Simultaneous Localization And Mapping)を加速化させる装置において、
フロントエンドプロセッサ及びバックエンドプロセッサを含むSLAMプロセッサを含み、
前記フロントエンドプロセッサは、第1フレームの次の第2フレームにおいて、前記第1フレームから抽出された複数の特徴点のうち、第1特徴点の位置を追跡し、前記バックエンドプロセッサは、
前記フロントエンドプロセッサで追跡された前記第1特徴点の第2フレームにおける位置に基づき、前記第1特徴点のマップポイント及びカメラポーズに対応する第1測定値を獲得し、
マップポイントとカメラポーズとに係わるヘッセ行列の複数の要素のうち、前記第1測定値と関連し、最適化行列に影響を与える少なくとも1つの要素を計算し、
前記マップポイント及び前記カメラポーズの少なくとも1つの状態に係わる最適化演算を行うことに利用される前記最適化行列に、前記計算された少なくとも1つの要素を累積する、装置。
【請求項2】
前記SLAMプロセッサは、
第1サイクルにおいて、前記第1特徴点の位置を追跡した後、連続するサイクルにわたり、前記追跡された前記第1特徴点の位置に基づき、前記第1測定値を獲得し、前記第1測定値と関連する第1演算を順次に遂行するパイプライン構造を含み、
前記パイプライン構造は、
前記第1サイクルの次の第2サイクルにおいて、前記第1特徴点と異なる第2特徴点の位置が追跡されれば、前記第1測定値と関連する第1演算に続き、前記第2特徴点の位置に基づき、第2測定値を獲得し、前記第2測定値と関連する第2演算を行う、請求項1に記載の装置。
【請求項3】
前記フロントエンドプロセッサは、
前記第1フレームから抽出された特徴点の個数が指定された個数以下である場合、前記第1フレームから特徴点を追加して抽出する、請求項1に記載の装置。
【請求項4】
前記フロントエンドプロセッサは、
前記装置の慣性情報に基づき、前記第1フレームから抽出された特徴点の前記第2フレームにおける予想位置を推定し、
前記抽出された特徴点の不確実性に基づき、前記抽出された特徴点を追跡するためのパッチの大きさを決定し、
前記抽出された特徴点の前記第2フレームにおける予想位置に基づき、前記抽出された特徴点の位置追跡順序を決定する、請求項1に記載の装置。
【請求項5】
前記バックエンドプロセッサは、
前記第1測定値を利用し、前記カメラポーズに係わる第1行列ブロックの要素、前記マップポイントに係わる第2行列ブロックの要素、及び前記カメラポーズと前記マップポイントとの対応に係わる第3行列ブロックの要素を計算する、請求項1に記載の装置。
【請求項6】
前記バックエンドプロセッサは、
前記抽出された特徴点の全ての測定値について順次に計算された要素が、前記最適化行列に累積されれば、前記最適化行列を利用し、前記マップポイント及び前記カメラポーズの少なくとも1つの状態に係わる最適化演算を行う、請求項1に記載の装置。
【請求項7】
前記第1測定値は、カメラ及び慣性測定ユニット(IMU)を含むセンサから獲得されるデータに基づき、獲得されたマップポイント、及び前記マップポイントに対応する少なくとも1つのカメラポーズを含む、請求項1に記載の装置。
【請求項8】
前記バックエンドプロセッサは、
前記第1測定値を、前記カメラ及び前記慣性測定ユニットのいずれにも対応する第1部分と、前記カメラ及び前記慣性測定ユニットのうち、前記慣性測定ユニットだけに対応する第2部分に区分する、請求項7に記載の装置。
【請求項9】
前記バックエンドプロセッサは、
前記第1部分を利用し、前記カメラポーズに係わる第1行列ブロックの要素、前記マップポイントに係わる第2行列ブロックの要素、及び前記カメラでポーズと前記マップポイントとの対応に係わる第3行列ブロックの要素を計算した後、前記第1部分を利用し、前記第1行列ブロック、前記第2行列ブロック及び前記第3行列ブロックの計算された要素を前記最適化行列に累積し、
前記第2部分を利用し、前記カメラポーズに係わる第1行列ブロックの要素を計算した後、前記第2部分につき、前記第1行列ブロックの計算された要素を、前記最適化行列に二次的に累積する、請求項8に記載の装置。
【請求項10】
前記第2部分に係わる演算を行うための変換プロセッサをさらに含み、
前記変換プロセッサは、
指定された行列に係わる演算を行うための行列演算部と、
指定されたベクトルに係わる演算を行うためのベクトル演算部と、
前記指定された行列を、前記指定されたベクトルに変換するためのリー代数演算を行うためのリー代数演算部と、を含む、請求項9に記載の装置。
【請求項11】
SLAM(Simultaneous Localization And Mapping)を加速化させる方法において、
第1フレームの次の第2フレームにおいて、前記第1フレームから抽出された複数の特徴点のうち、第1特徴点の位置を追跡する段階と、
追跡された前記第1特徴点の第2フレームにおける位置に基づき、前記第1特徴点のマップポイント及びカメラポーズに対応する第1測定値を獲得する段階と、
マップポイントとカメラポーズとに係わるヘッセ行列の複数の要素のうち、前記第1測定値と関連し、最適化行列に影響を与える少なくとも1つの要素を計算する段階と、
前記マップポイント及び前記カメラポーズの少なくとも1つの状態に係わる最適化演算を行うことに利用される前記最適化行列に、前記計算された少なくとも1つの要素を累積する段階と、を含む、方法。
【請求項12】
第1サイクルにおいて、前記第1特徴点の位置を追跡した後、連続するサイクルにわたり、前記追跡された前記第1特徴点の位置に基づき、前記第1測定値を獲得し、前記第1測定値と関連する第1演算を順次に遂行する段階と、
前記第1サイクルの次の第2サイクルにおいて、前記第1特徴点と異なる第2特徴点の位置が追跡されれば、前記第1測定値と関連する演算に続き、前記第2特徴点の位置に基づき、第2測定値を獲得し、前記第2測定値と関連する第2演算を行う段階と、をさらに含む、請求項11に記載の方法。
【請求項13】
慣性情報に基づき、前記第1フレームから抽出された特徴点の前記第2フレームにおける予想位置を推定する段階と、
前記抽出された特徴点の不確実性に基づき、前記抽出された特徴点を追跡するためのパッチの大きさを決定する段階と、
前記抽出された特徴点の前記第2フレームにおける予想位置に基づき、前記抽出された特徴点の位置追跡順序を決定する段階と、をさらに含む、請求項11に記載の方法。
【請求項14】
前記第1測定値と関連し、最適化行列に影響を与える少なくとも1つの要素を計算する段階は、
前記第1測定値を利用し、前記カメラポーズに係わる第1行列ブロックの要素、前記マップポイントに係わる第2行列ブロックの要素、及び前記マップポイントと前記カメラポーズとの対応に係わる第3行列ブロックの要素を計算する、請求項11に記載の方法。
【請求項15】
前記抽出された特徴点の全ての測定値について順次に計算された要素が、前記最適化行列に累積されれば、前記最適化行列を利用し、前記マップポイント及び前記カメラポーズの少なくとも1つの状態に係わる最適化演算を行う段階をさらに含む、請求項11に記載の方法。
【請求項16】
前記第1測定値は、カメラ及び慣性測定ユニット(IMU)を含むセンサから獲得されるデータに基づき、獲得されたマップポイント、及び前記マップポイントに対応する少なくとも1つのカメラポーズを含む、請求項11に記載の方法。
【請求項17】
前記第1測定値を、前記カメラ及び前記慣性測定ユニットいずれもに対応する第1部分と、前記慣性測定ユニットにだけ対応する第2部分と、に区分する段階をさらに含む、請求項16に記載の方法。
【請求項18】
前記第1部分を利用し、前記カメラポーズに係わる第1行列ブロックの要素、前記マップポイントに係わる第2行列ブロックの要素、及び前記マップポイントとカメラポーズとの対応に係わる第3行列ブロックの要素を計算した後、前記第1部分を利用し、前記第1行列ブロック、前記第2行列ブロック及び前記第3行列ブロックの計算された要素を前記最適化行列に累積する段階と、
前記第2部分を利用し、前記カメラポーズに係わる第1行列ブロックの要素を計算した後、前記第2部分につき、前記第1行列ブロック、前記第2行列ブロック及び前記第3行列ブロックの計算された要素を前記最適化行列に累積する段階と、をさらに含む、請求項17に記載の方法。
【請求項19】
電子装置において、
イメージデータを獲得するためのカメラと、前記電子装置の慣性情報を獲得するための慣性測定ユニット(IMU)と、を含むセンサと、
フロントエンドプロセッサ及びバックエンドプロセッサを含むSLAMプロセッサと、を含み、
前記フロントエンドプロセッサは、第1フレームの次の第2フレームにおいて、前記第1フレームから抽出された複数の特徴点のうち、第1特徴点の位置を追跡し、
前記バックエンドプロセッサは、前記フロントエンドプロセッサで追跡された前記第1特徴点の第2フレームにおける位置に基づき、前記第1特徴点のマップポイント及びカメラポーズに対応する第1測定値を獲得し、
マップポイントとカメラポーズとに係わるヘッセ行列の複数の要素のうち、前記第1測定値と関連し、最適化行列に影響を与える少なくとも1つの要素を計算し、
前記マップポイント及び前記カメラポーズの少なくとも1つの状態に係わる最適化演算を行うことに利用される前記最適化行列に、前記計算された少なくとも1つの要素を累積する、電子装置。
【請求項20】
前記電子装置は、単一チップシステムである、請求項19に記載の電子装置。
【請求項21】
カメラを含む装置のSLAM(Simultaneous Localization And Mapping)を遂行するための方法において、
前記カメラからイメージを獲得する段階と、
前記イメージから、第1特徴点と第2特徴点とを抽出する段階と、
第1サイクルにおいて、第1特徴点の位置を追跡する段階と、
前記第1サイクルに後続するサイクルにおいて、前記追跡された前記第1特徴点の位置に基づき、前記第1特徴点のマップポイントとカメラポーズとに対応する第1測定値を獲得し、前記第1測定値と関連し、最適化行列に影響を与える少なくとも1つの要素を計算する段階と、
前記第1サイクルの次の第2サイクルにおいて、前記第2特徴点の位置を追跡する段階と、
前記第2サイクルに後続するサイクルにおいて、前記追跡された前記第2特徴点の位置に基づき、前記第2特徴点のマップポイントとカメラポーズとに対応する第2測定値を獲得し、前記第2測定値と関連し、最適化行列に影響を与える少なくとも1つの要素を計算する段階と、を含む、方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、SLAMを加速化させる装置、及びそれを含む電子装置に関する。
【背景技術】
【0002】
SLAM(Simultaneous Localization And Mapping)は、装置が任意の空間を移動しながら、周辺の情報を獲得し、獲得された周辺の情報に基づき、当該空間のマップ(map)、及び装置の現在位置を推定することができる技術を意味する。例えば、該SLAMを遂行する装置は、カメラのようなセンサを介し、周辺空間に係わるイメージを獲得し、獲得されたイメージに対する分析及び座標設定を介し、当該空間のマップ、及び装置の現在位置を推定することができる。
【0003】
そのようなSLAMは、実際に存在する環境に、仮想の事物や情報を合成し、まさしく元来の環境に存在する事物のように見せる拡張現実(AG:augmented reality)分野において、核心技術として注目されている。特に、該拡張現実は、人体に着用可能な多様な形態のウェアラブルデバイス形態に開発されている。ウェアラブルデバイスにおいて、ガラスタイプのウェアラブルデバイスは、ユーザの頭に装着され、デバイス上のディスプレイを介し、ユーザに拡張現実サービスを提供することができる。
【0004】
該ウェアラブルデバイスは、SLAMを介してユーザが着用しているウェアラブルデバイスのポーズを推定し、ディスプレイを介し、ウェアラブルデバイスのポーズと係わるイメージを提供することができる。このとき、ユーザに提供されるイメージと、ウェアラブルデバイスの実際ポーズとに誤差が生じる場合、ユーザが提供されるイメージと、実際空間との異質感を感じてしまう。
【0005】
ユーザに提供されるイメージと、ウェアラブルデバイスの実際ポーズとの誤差を減らすためには、迅速な演算を行うことができる高性能プロセッサが必要であるが、該プロセッサの性能が増大すればするほど、電力消耗量も増大し、プロセッサの全体的な大きさが増大することになり、ウェアラブルデバイスの着用感が低下してしまう状況が生じうる。それにより、電力消耗量を最小化させ、ウェアラブルデバイスの着用感を維持しながらも、迅速なSLAM演算を行うことができるプロセッサの必要性が段々と求められている。
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明が解決しようとする課題は、低電力でもって、迅速なSLAM演算を行うことができるSLAMを加速化させる装置、及びそれを含む電子装置を提供することである。
【0007】
本開示の実施形態を介して解決すべき課題は、前述のところに限定されるものではなく、言及されていない課題は、本開示、及び添付された図面から本実施形態が属する技術分野において当業者であるならば、明確に理解されうるであろう。
【課題を解決するための手段】
【0008】
前述の技術的課題を解決するための手段として、一実施形態によるSLAMを加速化させる装置は、フロントエンドプロセッサ及びバックエンドプロセッサを含むSLAMプロセッサを含み、前記フロントエンドプロセッサは、第1フレームの次の第2フレームにおいて、前記第1フレームから抽出された複数の特徴点のうち、第1特徴点の位置を追跡し、前記バックエンドプロセッサは、前記フロントエンドプロセッサで追跡された前記第1特徴点の第2フレームにおける位置に基づき、前記第1特徴点のマップポイント(map point)、及びカメラポーズに対応する第1測定値(measurement)を獲得し、該マップポイントと該カメラポーズとに係わるヘッセ行列(Hessian matrix)の複数の要素のうち、前記第1測定値と関連し、最適化行列に影響を与える少なくとも1つの要素を計算し、前記マップポイント及び前記カメラポーズの少なくとも1つの状態に係わる最適化演算を行うことに利用される前記最適化行列に、前記計算された少なくとも1つの要素を累積することができる。
【0009】
他の実施形態によるSLAMを加速化させる方法は、第1フレームの次の第2フレームにおいて、前記第1フレームから抽出された複数の特徴点のうち、第1特徴点の位置を追跡する段階と、追跡された前記第1特徴点の第2フレームにおける位置に基づき、前記第1特徴点のマップポイント及びカメラポーズに対応する第1測定値を獲得する段階と、マップポイントとカメラポーズとに係わるヘッセ行列の複数の要素のうち、前記第1測定値と関連し、最適化行列に影響を与える少なくとも1つの要素を計算する段階と、前記マップポイント及び前記カメラポーズの少なくとも1つの状態に係わる最適化演算を行うことに利用される前記最適化行列に、前記計算された少なくとも1つの要素を累積する段階と、を含むものでもある。
【0010】
さらに他の実施形態による電子装置は、イメージデータを獲得するためのカメラと、前記電子装置の慣性情報を獲得するための慣性測定ユニットとを含むセンサ;及びフロントエンドプロセッサとバックエンドプロセッサとを含むSLAMプロセッサ;を含み、前記フロントエンドプロセッサは、第1フレームの次の第2フレームにおいて、前記第1フレームから抽出された複数の特徴点のうち、第1特徴点の位置を追跡し、前記バックエンドプロセッサは、前記フロントエンドプロセッサで追跡された前記第1特徴点の第2フレームにおける位置に基づき、前記第1特徴点のマップポイント及びカメラポーズに対応する第1測定値を獲得し、マップポイントとカメラポーズとに係わるヘッセ行列の複数の要素のうち、前記第1測定値と関連し、最適化行列に影響を与える少なくとも1つの要素を計算し、前記マップポイント及び前記カメラポーズの少なくとも1つの状態に係わる最適化演算を行うことに利用される前記最適化行列に、前記計算された少なくとも1つの要素を累積することができる。
【0011】
さらに他の実施形態によるカメラを含む装置のSLAMを遂行するための方法は、前記カメラからイメージを獲得する段階と、前記イメージから、第1特徴点と第2特徴点とを抽出する段階と、第1サイクルにおいて、第1特徴点の位置を追跡する段階と、前記第1サイクルに後続するサイクルにおいて、前記追跡された前記第1特徴点の位置に基づき、前記第1特徴点のマップポイントとカメラポーズとに対応する第1測定値を獲得し、前記第1測定値と関連し、最適化行列に影響を与える少なくとも1つの要素を計算する段階と、前記第1サイクルの次の第2サイクルにおいて、前記第2特徴点の位置を追跡する段階と、前記第2サイクルに後続するサイクルにおいて、前記追跡された前記第2特徴点の位置に基づき、前記第2特徴点のマップポイントとカメラポーズとに対応する第2測定値を獲得し、前記第2測定値と関連し、最適化行列に影響を与える少なくとも1つの要素を計算する段階と、を含むものでもある。
【図面の簡単な説明】
【0012】
図1】一実施形態による電子装置の斜視図である。
図2図1に図示された電子装置の一部領域に係わる断面図である。
図3】一実施形態による、SLAMを加速化させる装置の構成を示すブロック図である。
図4】一実施形態による、イメージデータから特徴点を抽出し、該特徴点の位置を追跡する過程について説明するための図面である。
図5】一実施形態による、イメージデータから特徴点を抽出し、該特徴点の位置を追跡する過程について説明するための図面である。
図6】一実施形態による、マップポイント及びカメラポーズの状態に係わる最適化演算を行う過程について説明するための図面である。
図7】一実施形態による、マップポイント及びカメラポーズの状態に係わる最適化演算を行う過程について説明するための図面である。
図8】一実施形態による、マップポイント及びカメラポーズの状態に係わる最適化演算を行う過程について説明するための図面である。
図9】一実施形態による、マップポイント及びカメラポーズの状態に係わる最適化演算を行う過程について説明するための図面である。
図10】一実施形態による、マップポイント及びカメラポーズの状態に係わる最適化演算を行う過程について説明するための図面である。
図11】一実施形態による、マップポイント及びカメラポーズの状態に係わる最適化演算を行う過程について説明するための図面である。
図12】一実施形態による、マップポイント及びカメラポーズの状態に係わる最適化演算を行う過程について説明するための図面である。
図13】一実施形態による、SLAMを加速化させる方法を示すフローチャートである。
図14】一実施形態による、単一測定値に基づき、最適化行列の要素を計算する過程について説明するための図面である。
図15】一実施形態による、単一測定値に基づき、最適化行列の要素を計算する過程について説明するための図面である。
図16】一実施形態による、SLAMプロセッサのパイプライン構造を示す図面である。
図17】一実施形態による、カメラヘッセ行列、IMUヘッセ行列及び最終S行列(S matrix)を示す図面である。
図18】一実施形態による、カメラヘッセ行列、IMUヘッセ行列及び最終S行列を示す図面である。
図19】一実施形態による、カメラヘッセ行列、IMUヘッセ行列及び最終S行列を示す図面である。
図20】一実施形態による、SLAMプロセッサのマップコントローラの全体的な動作について説明するためのフローチャートである。
図21】一実施形態による、特徴点の予想位置を推定し、特徴点の追跡順序を決定する過程について説明するための図面である。
図22】一実施形態による、特徴点の予想位置を推定し、特徴点の追跡順序を決定する過程について説明するための図面である。
図23】一実施形態による、プロセッシングユニットの構成を示すブロック図である。
図24】一実施形態による、SLAMアクセラレータのパイプライン構造について説明するための図面である。
図25】一実施形態による、電子装置の構成を示すブロック図である。
図26】一実施形態による、電子装置の全般的な動作について説明するための図面である。
【発明を実施するための形態】
【0013】
本実施形態で使用される用語は、本実施形態における機能を考慮しながら、可能な限り、現在汎用される一般的な用語を選択したが、それらは、当技術分野の当業者の意図、判例、または新たな技術の出現などによっても異なる。また、特定の場合は、任意に選定された用語もあり、その場合、当該実施形態の説明部分において、詳細にその意味を記載する。従って、本実施形態で使用される用語は、単純な用語の名称ではなく、その用語が有する意味と、本実施形態の全般にわたる内容とを基に定義されなければならない。
【0014】
本実施形態に係わる説明において、ある部分が他の部分と連結されているとするとき、それは、直接連結されている場合だけではなく、その中間に、他の構成要素を挟み、電気的に連結されている場合も含む。また、ある部分がある構成要素を含むとするとき、それは、特別に反対となる記載がない限り、他の構成要素を除くものではなく、他の構成要素をさらに含むものでもあるということを意味する。
【0015】
本実施形態で使用される「構成される」または「含む」というような用語は、本開示に記載されたさまざまな構成要素、またはさまざまな段階を必ずしもいずれも含むと解釈されるものではなく、そのうちの一部構成要素または一部段階は、含まれず、あるいは追加される構成要素または段階をさらに含むものでもあると解釈されなければならない。
【0016】
また、本開示で使用される「第1」または「第2」のように、序数を含む用語は、多様な構成要素についての説明に使用されうるが、前記構成要素は、前記用語によって限定されるものではない。前記用語は、1つの構成要素を他の構成要素から区別する目的のみに使用される。
【0017】
下記実施形態に係わる説明は、権利範囲を制限するものであると解釈されるものではなく、当該技術分野の当業者が容易に類推することができるところは、本実施形態の権利範囲に属すると解釈されなければならないのである。以下、添付図面を参照しながら、単に例示のための実施形態について詳細に説明する。
【0018】
図1は、一実施形態による電子装置の斜視図である。
【0019】
図1を参照すれば、一実施形態による電子装置100は、レンズ101、ユーザの身体の一部(例:頭)に固定されるための連結部102、センサ110及び加速器120を含むものでもある。一実施形態によれば、電子装置100は、電子装置100の周辺マップ(map)及び/または電子装置100のポーズ(pose)を推定することができる。
【0020】
センサ110は、電子装置100の周辺環境に係わるデータをセンシングすることができ、センサ110でセンシングされたデータ(または、「センシングデータ」)は、センサ110と、電気的または作動的に連結された加速器120に伝達されうる。例えば、センサ110は、少なくとも1台のカメラ、慣性測定ユニット(IMU:inertial measurement unit)、深さセンサ(例:LiDAR(Light Detection And Ranging))、GPS(Global Positioning System)及び走行距離計(odometer)のうち、少なくとも一つを含むものでもあるが、それらに限定されるものではない。
【0021】
加速器120は、SLAM(Simultaneous Localization And Mapping)演算を行うのに最適化された処理ユニットまたはプロセッサを意味し、本実施形態により、加速器120は、「SLAMアクセラレータ」または「SLAMを加速化させる装置」とも称される。例えば、加速器120は、多数の論理ゲートのアレイによって具現されるか、あるいは汎用的なマイクロプロセッサと、該マイクロプロセッサで実行されうるプログラムが保存されたメモリとの組み合わせによっても具現されうるが、それらに限定されるものではない。
【0022】
加速器120は、センサ110で獲得されたデータに基づき、SLAMを遂行することにより、電子装置100の周辺マップ、及び/または電子装置100のポーズを推定することができる。
【0023】
本開示において「SLAM」は、装置が任意の空間を移動しながら、周辺の情報を獲得し、獲得された情報に基づき、当該空間のマップ、及び装置の現在ポーズを推定する技術を意味し、当該表現は、以下においても、同一の意味にも使用される。
【0024】
また、本開示において「電子装置のポーズ」は、電子装置の位置情報を含むデータを意味し、当該表現は、以下においても、同一意味に使用される。一実施形態によれば、電子装置の位置情報を含むデータは、ポーズデータとも称される。一実施形態によれば、該ポーズデータは6自由度(degree of freedom)ポーズ情報を含むものでもあり、6自由度ポーズ情報は、電子装置100の位置(position)を示す情報と、電子装置100の姿勢(orientation)を示す情報と、を含むものでもある。
【0025】
一実施形態によれば、加速器120は、センサ110を介して獲得されたデータに係わる特徴点(featureまたはkey point)の抽出、及び空間座標に係わる演算を行うことができる。例えば、加速器120は、特徴点抽出アルゴリズムに基盤づき、カメラを介して獲得されたイメージデータから、少なくとも1つの特徴点を抽出することができる。また、加速器120は、慣性測定ユニットから獲得された電子装置100の慣性情報(例:速度、加速度、角速度、角加速度など)に係わるデータに基づき、電子装置100の空間座標に係わる演算を行うことができる。言い換えれば、加速器120は、SLAMのフロントエンド(front-end)演算を行うことができる。
【0026】
一実施形態によれば、加速器120は、抽出された特徴点と、空間座標に対する最適化(optimization)を行うことにより、電子装置100の周辺マップ及びポーズを推定することができる。例えば、加速器120は、光束調節(BA:bundle adjustment)を介して抽出された特徴点と、空間座標とに対する最適化を行い、電子装置100の周辺マップ及びポーズを推定することができる。言い換えれば、加速器120は、SLAMのフロントエンド演算を行った後、該フロントエンド演算遂行結果に基づき、SLAMのバックエンド(back-end)演算まで行うことができる。
【0027】
すなわち、一実施形態による電子装置100は、SLAMのフロントエンド演算及びバックエンド演算を行うのに最適化された加速器120を介し、低い電力でもSLAM演算を高速に行うことができる。それにより、電子装置100は、加速器120に対する電力供給のために、装置の全体的サイズを大きくせずに、高速のSLAM演算を行うことができるので、電子装置100の着用感を維持しながらも、SLAM演算を加速化させることができる。
【0028】
一実施形態によれば、電子装置100は、加速器120を介して推定された周辺マップ、及び電子装置100のポーズに基づき、拡張現実イメージ(AR(Augmented Reality) image)を生成し、例えば、ディスプレイ(レンズ101)を介して生成された拡張現実イメージを表示することができる。
【0029】
本開示において「拡張現実イメージ」は、電子装置100の周辺の現実世界(real world)のイメージと、仮想イメージとが組み合わされたイメージを意味しうる。例えば、該拡張現実イメージは、現実世界のイメージに、仮想イメージがオーバレイ(overlay)されたイメージを意味しうるが、それに限定されるものではない。
【0030】
このとき、該現実世界のイメージは、ユーザが電子装置100を介して見ることができる実際場面(real scene)を意味し、該現実世界のイメージには、現実客体(real world object)が含まれうる。また、該仮想イメージは、グラフィックスプロセッシングによって形成される現実世界に存在しないイメージを意味し、仮想イメージには、デジタルまたは仮想客体が含まれるものでもある。
【0031】
一例示において、電子装置100は、図1に図示されているように、ユーザの耳に着用可能なめがねタイプのウェアラブル電子装置でもあるが、それに限定されるものではない。他の例示として、電子装置100は、ユーザの頭に着用可能なヘッドマウントタイプ(head-mount type)のウェアラブル電子装置でもある。
【0032】
一実施形態によれば、センサ110及び加速器120は、連結部102に配されうるが、センサ110と加速器120との配置構造は、それに限定されるものではない。他の実施形態において、センサ110及び/または加速器120は、レンズ101の周辺領域(例:枠)にも配される。
【0033】
図面上に図示されていないが、電子装置100は、拡張現実イメージに係わるデータが含まれた光を放出し、放出された光の移動経路を調節するための光学部品を含むものでもある。加速器120は、該光学部品を介し、拡張現実イメージに係わるデータが含まれた光を放出し、放出された光がレンズ101に達するのである。
【0034】
拡張現実イメージに係わるデータが含まれた光がレンズ101に達することにより、レンズ101には、拡張現実イメージが表示され、電子装置100は、前述の過程を介し、ユーザ(または、「着用者」)に、拡張現実イメージを提供することができる。
【0035】
前述の実施形態においては、電子装置100がウェアラブル電子装置である実施形態についてのみ記述したが、電子装置100の適用分野は、それに限定されるものではない。一実施形態(図示せず)により、電子装置100は、SLAMを介し、周辺マップ及び自体ポーズを推定することができる無人飛行装置(UAV:unmanned aerial vehicle)、ロボット及び/または自律走行車両にも適用される。
【0036】
以下においては、図2を参照し、電子装置100の光学部品について具体的に説明する。
【0037】
図2は、図1に図示された電子装置の一部領域に係わる断面図である。
【0038】
図2は、図1に図示された電子装置100のユーザの右目と隣接した領域の断面を示す。また、図2に図示された電子装置100は、ユーザの耳に着用可能なめがねタイプのウェアラブルデバイス(例:反射防止(AR)ガラス)でもあるが、電子装置100の形態は、図示された実施形態に限定されるものではない。
【0039】
図2を参照すれば、一実施形態による電子装置100は、レンズ101、連結部102、プロジェクタ103、ビームスプリッタ(beam splitter)104、鏡105、センサ110、加速器120及びプロセッサ130を含むものでもある。一実施形態による電子装置100の構成要素のうち、少なくとも一つは、図1の電子装置100の構成要素のうち、少なくとも一つと同一であるか、あるいは類似してもおり、以下で重複する説明は、省略する。
【0040】
加速器120は、センサ110を介して獲得された電子装置100の周辺環境に係わるデータに基づき、SLAM演算を行うことにより、電子装置100の周辺マップ及びポーズを推定することができる。
【0041】
プロセッサ130は、加速器120を介して推定された電子装置100の周辺マップ及びポーズに基づき、拡張現実イメージを生成することができ、生成された拡張現実イメージに係わるデータをプロジェクタ103に伝送することができる。
【0042】
プロジェクタ103は、拡張現実イメージに係わるデータを含む光を、レンズ101に向けて放出することができる。例えば、プロセッサ130は、プロジェクタ103と、電気的または作動的に連結され、プロジェクタ103の作動を制御することができ、プロジェクタ103は、プロセッサ130により、拡張現実イメージに係わるデータを含む光がレンズ101に放出されるようにも制御される。
【0043】
一実施形態によれば、プロジェクタ103から放出された光は、ビームスプリッタ104及び/または鏡105によって反射され、レンズ101に達することができるが、それに限定されるものではない。一実施形態により、プロジェクタ103がレンズ101に対向するように配され、プロジェクタ103から放出された光は、ビームスプリッタ104及び/または鏡105を経ず、レンズ101に達することもできる。
【0044】
プロジェクタ103から放出された光がレンズ101に達することにより、レンズ101には、拡張現実イメージが表示され、その結果、レンズ101は、電子装置100の拡張現実イメージを表示するディスプレイ(display)として動作することができる。
【0045】
レンズ101は、ユーザの電子装置100着用時、例えば、ユーザの眼球(例:ユーザの右目)と対向するようにも配され、電子装置100は、レンズ101を介し、ユーザに拡張現実イメージを提供することができる。
【0046】
以下においては、図1の加速器120、及び/または図2の加速器120がSLAM演算を加速化させる過程について具体的に説明する。
【0047】
図3は、一実施形態による、SLAMを加速化させる装置の構成を示すブロック図である。
【0048】
図3を参照すれば、SLAMアクセラレータ30は、SLAMを加速化させる装置であり、ファクタグラフメモリ(factor graph memory)310及びSLAMプロセッサ320を含むものでもある。一実施形態によるSLAMアクセラレータ30は、図1及び/または図2の加速器120と実質的に同一であるか、あるいは類似してもおり、以下で重複する説明は、省略する。
【0049】
また、図1及び/または図2には、SLAMアクセラレータ30が、ARガラスまたはスマートガラスに採用される実施形態が図示されているが、それらに限定されるものではない。他の実施形態において、SLAMアクセラレータ30は、ロボット、ドローン、自律走行自動車のように、位置または空間に対する認識が必要な装置であるならば、制限なしにも採用される。
【0050】
ファクタグラフメモリ310は、SLAMアクセラレータ30内で処理される各種データを保存することができる。例えば、ファクタグラフメモリ310は、SLAMプロセッサ320と、電気的または作動的に連結され、SLAMプロセッサ320で処理されたデータ、及び/または処理されるデータを保存することができる。このとき、ファクタグラフメモリ310は、DRAM(Dynamic Random Access Memory)・SRAM(Static Random Access Memory)のようなRAM(Random Access Memory)、ROM(Read-Only Memory)、EEPROM(Electrically Erasable Programmable Read-Only Memory)、CD-ROM(Compact Disc Read-Only Memory)、ブルーレイまたは他の光学ディスクストレージ、HDD(Hard Disk Drive)、SSD(Solid State Drive)、またはフラッシュメモリを含むものでもあるが、それらに限定されるものではない。
【0051】
SLAMプロセッサ320は、SLAMアクセラレータ30の全般的な動作を制御することができる。例えば、SLAMプロセッサ320は、SLAM最適化のためのフロントエンド演算及びバックエンド演算を行うことができる。このとき、SLAMプロセッサ320は、多数の論理ゲートのアレイによって具現されるか、あるいは汎用的なマイクロプロセッサと、該マイクロプロセッサで実行されうるプログラムが保存されたメモリとの組み合わせによっても具現されるが、それらに限定されるものではない。
【0052】
一実施形態によれば、SLAMプロセッサ320は、フロントエンド演算を行うためのフロントエンドプロセッサ321及びバックエンド演算を行うためのバックエンドプロセッサ322を含むものでもある。
【0053】
フロントエンドプロセッサ321は、SLAMアクセラレータ30外部のセンサ(例:図1のセンサ110)からセンシングデータを受信し、受信されたデータに基づき、少なくとも1つの特徴点を抽出し、抽出された特徴点の位置を追跡する(track)ことができる。一実施形態によれば、センサは、図1のセンサ110でもある。一実施形態によれば、フロントエンドプロセッサ321は、センサから受信されたイメージデータの第1フレームから特徴点を抽出し、該第1フレームから抽出された特徴点の第2フレームにおける位置を追跡することができる。このとき、該第2フレームは、第1フレームの次のフレームを意味し、フロントエンドプロセッサ321は、特徴点の抽出及び追跡を介し、連続するフレーム間における特徴点変化を感知することができる。一実施形態によれば、第2フレームは、第1フレームのすぐ次のフレームでもあるが、それに限定されるものではない。言い換えれば、フロントエンドプロセッサ321は、SLAMを最適化させるためのフロントエンド演算を行うことができ、フロントエンドプロセッサ321で行われた演算結果は、ファクタグラフメモリ310に保存されるか、あるいはバックエンドプロセッサ322にも伝達される。
【0054】
バックエンドプロセッサ322は、フロントエンドプロセッサ321の演算結果に基づき、SLAMを最適化させるためのバックエンド演算を行うことができる。例えば、バックエンドプロセッサ322は、フロントエンドプロセッサ321のフロントエンド演算を介して獲得されたデータを受信し、受信されたデータに係わる最適化演算を行うことができる。
【0055】
一実施形態によれば、バックエンドプロセッサ322は、ファクタグラフメモリ310及び/またはフロントエンドプロセッサ321から受信されたデータに係わる反復的な演算を行うことができる。例えば、バックエンドプロセッサ322は、反復的な行列及び/またはベクトルの演算を介し、電子装置(例:図1及び/または図2の電子装置100)の周辺マップ作成のための演算を行うことができる。
【0056】
他の実施形態によれば、バックエンドプロセッサ322は、作成された周辺マップにおいて、電子装置のポーズを推定することができる。例えば、バックエンドプロセッサ322は、反復的に行われる演算を介して作成されたマップ上において、移動中である電子装置のポーズを推定することができる。このとき、バックエンドプロセッサ322は、リアルタイムで電子装置のポーズを推定することができ、推定された電子装置のポーズと係わるデータは、リアルタイムにアップデートされうる。
【0057】
バックエンドプロセッサ322によって行われる演算は、光束調節(BA:bundle adjustment)を含むものでもある。本開示において「光束調節」は、互いに異なる観点から、複数の三次元ポイントを図示するイメージの集合が与えられる場合、全てのポイントの対応するイメージ投影を伴う最適化基準により、場面ジオメトリ(scene geometry)、相対動きのパラメータ、及びカメラの光学特性について説明する三次元座標をリアルタイムで精製する(refine)ことを意味しうる。
【0058】
以下、図4ないし図12を参照し、SLAMプロセッサ320が抽出された特徴点を追跡し、マップポイント(map point)及びカメラポーズの三次元座標を最適化させる過程について具体的に説明する。
【0059】
図4及び図5は、一実施形態による、イメージデータから特徴点を抽出し、特徴点の位置を追跡する過程について説明するための図面である。図4及び図5は、センサ(例:カメラ)から獲得されたイメージデータのデータフレーム、及びデータフレームから抽出された特徴点を示す。
【0060】
図4を参照すれば、一実施形態によるSLAMアクセラレータ(例:図3のSLAMアクセラレータ30)は、センサで獲得されたイメージデータから、周辺客体(object)に係わる特徴点を抽出することができる。
【0061】
一実施形態によれば、SLAMアクセラレータのフロントエンドプロセッサ(例:図3のフロントエンドプロセッサ321)は、イメージデータを構成するデータフレームのうち、第1フレームに示される客体から特徴点を抽出することができる。例えば、フロントエンドプロセッサは、SIFT(Scale-Invariant Feature Transform)、SURF(Speeded-Up Robust Features)、ORB(Oriented FAST and Rotated BRIEF)のような特徴点抽出アルゴリズムまたは機械学習アルゴリズム(例:ディープラーニング(deep learning))を介し、第1フレームに示される客体から特徴点を抽出することができるが、それに限定されるものではない。このとき、該特徴点は、図4に図示されているように、客体の端または角のように、特徴がある部分から抽出されることができるが、特徴点が抽出される位置が、客体のエッジまたはコーナーに限定されるものではない。
【0062】
図5を参照すれば、一実施形態による、SLAMアクセラレータのフロントエンドプロセッサは、連続するフレームから抽出された特徴点の位置変化を追跡することができる。例えば、該フロントエンドプロセッサは、連続する第Nフレーム(ただし、Nは、自然数である)と第(N+1)フレームとの間において、特徴点の位置変化を追跡することができる。該フロントエンドプロセッサは、KLT追跡器(Kanade-Lucas Tomasi tracker)を介し、連続するフレームにおける特徴点の位置を追跡することができるが、それに限定されるものではない。
【0063】
図6ないし図12は、一実施形態による、マップポイント及びカメラポーズの状態に係わる最適化演算を行う過程について説明するための図面である。
【0064】
図6には、電子装置(例:図1及び/または図2の電子装置100)が、カメラを利用し、該電子装置の周辺空間に係わるイメージを獲得する状況の例示が図示されている。該電子装置の動きなどにより、フレームごとにカメラポーズが変更されうる。また、カメラによって撮影されるマップポイント(または、「ランドマーク(landmark)」)のフレーム内位置も変更されうる。本開示において「マップポイント」は、三次元座標に表現される特徴点を意味し、イメージを獲得するカメラポーズにより、フレームに投影されるマップポイントの位置が変更されうる。
【0065】
図6に図示されているように、カメラポーズが、経時的に、C、C及びCの順序に変更され、マップポイントPのフレーム内位置も、p、p及びpの順序に変更されうる。一方、カメラポーズによるマップポイントPに係わる測定値p,p,pと別個に、マップポイントPの三次元座標を利用した再投影(reprojection)により、推定値[数式1-2]、[数式1-3]及び[数式1-4]が獲得されうる。このとき、図6に図示された実施形態においては、pと[数式1-2]とが同一であり、[数式1-2]に係わる記載が省略されている。
【0066】
一実施形態によるSLAMアクセラレータ(例:図3のSLAMアクセラレータ30)は、連続するフレームにおける特徴点の位置を追跡し、追跡された特徴点の位置に基づき、SLAMのバックエンド演算を行うことができる。例えば、SLAMアクセラレータのバックエンドプロセッサ(例:図3のバックエンドプロセッサ322)は、フロントエンドプロセッサ(例:図3のフロントエンドプロセッサ321)のフロントエンド演算遂行結果に基づき、SLAMのバックエンド演算を行うことができる。
【0067】
SLAMのバックエンド演算は、測定値「p」と推定値[数式1-5]との差を示す誤差「e」を目的関数として設定し、全ての測定値につき、目的関数を最小化させる状態を推定する演算を含む。そのようなSLAMのバックエンド演算は、下記[数式1-1]のように表現されうる。
【0068】
【数1】
【0069】
[数式1-1]において、iは、フレームナンバー、jは、マップポイントナンバーを示すことができ、最適化演算を介して推定する状態X(state X)は、フレーム別に、カメラポーズC及びマップポイントPを含むということが分かる。
【0070】
図7を参照すれば、カメラポーズの個数がN個(Nは、任意の自然数であり)であり、マップポイントの個数がM個(Mは、任意の自然数である)である場合、時点kにおける状態ベクトルXの例示が図示されている。このとき、カメラポーズC(i=1,…,N)は、3軸(例:x軸、y軸及びz軸)に対する回転(rotation)成分(例:Rxi、Ryi及びRzi)、3軸に係わる平行移動(translation)成分(例:Txi、Tyi及びTzi)、3軸に対する速度成分(例:Vxi、Vyi及びVzi)、3軸に対する加速度成分(例:加速度計のバイアス成分である[数式1-6]、[数式1-7]及び[数式1-8])、及び3軸に係わる角加速度成分(例:ジャイロスコプのバイアス成分である[数式1-9]、[数式1-10]及び[数式1-11])を含むものでもある。また、マップポイントP(j=1,…,M)は、3軸に係わる位置成分(例:Pxj、Pyj及びPzj)を含むものでもある。
【0071】
図8には、SLAMアクセラレータのフロントエンドプロセッサにおいて、カメラから獲得されたデータに対してフロントエンド演算を行った結果に対応するカメラ測定値(camera measurement)が入力されるとき、バックエンドプロセッサで行われるバックエンド演算の全体的な過程が図示されている。本開示において、「測定値(または、「カメラ測定値」)」は、フロントエンドプロセッサにおいて、抽出及び/または追跡された特徴点の二次元座標を含むものでもあり、当該表現は、以下においても、同一意味にも使用される。
【0072】
カメラ測定値が入力されれば、マップポイントの三次元座標を利用した再投影(reprojection)に基づき、推定値が獲得され、該測定値と該推定値との差に基づき、誤差eが計算されうる。誤差eが計算されれば、前述の[数式1-1]による目的関数の最適化のための演算が行われうる。
【0073】
前述の[数式1-1]による目的関数の最適化のために、下記[数式2-1]によるガウス・ニュトーン(Gauss-Newton)法が利用されうる。
【0074】
【数2】
【0075】
測定値が入力されるたびに、[数式1-1]によって誤差を低減させるための状態変化[数式2-2]が推定されうる。[数式2-1]によれば、状態変化[数式2-2]が推定されるためには、誤差の偏微分を示すヤコビ行列(Jacobian matrix)([数式2-3])と、ヤコビ転置行列(Jacobian transposed matrix)([数式2-4])とヤコビ行列([数式2-3])との積に該当するヘッセ行列([数式2-5])とが演算されなければならない。
【0076】
一例において、[数式2-6]及び[数式2-7]は、それぞれx軸及びy軸を基準にするカメラの焦点距離を示し、[数式2-8]は、カメラ座標系を基準にするマップポイントの三次元座標成分を示し、Rは、カメラの回転成分を示すとするとき、ヤコビ行列は、下記[数式3-1]によって計算されうる。
【0077】
【数3】
【0078】
数式3によれば、ヤコビ行列は、カメラポーズに係わるヤコビ行列ブロック[数式3-2]、及びマップポイントに係わるヤコビ行列ブロック[数式3-3]に、リー代数(Lie algebra)を適用して計算される。このとき、カメラポーズに係わるヤコビ行列ブロック[数式3-2]は、再投影誤差(reprojection error)をカメラポーズで偏微分した行列であり、マップポイントに係わるヤコビ行列ブロック[数式3-3]は、再投影誤差をマップポイントで偏微分した行列を示しうる。
【0079】
ヘッセ行列は、ヤコビ転置行列とヤコビ行列との積に該当するが、ヤコビ行列ブロックに基づいても計算される。例えば、該ヘッセ行列は、次のような[数式4-1]によっても計算される。
【0080】
【数4】
【0081】
[数式4-1]によれば、該ヘッセ行列は、4個のヘッセ行列ブロックU,W,WT及びVにも区分される。また、[数式4-1]によれば、[数式2-1]のヘッセ行列H、状態変化([数式4-2])及びbの関係は、下記[数式5-1]のようにも表現される。
【0082】
【数5】
【0083】
[数式5-1]を参照すれば、状態変化([数式5-2])は、カメラポーズに係わる状態変化である[数式5-3]、及びマップポイントに係わる状態変化である[数式5-4]によっても構成される。
【0084】
なお、前掲の図7を参照して説明したように、カメラポーズは、15個の成分を含み、マップポイントは、3個の成分を含むが、該カメラポーズの個数がN個であり、該マップポイントの個数がM個である場合、ヘッセ行列は、(15N+3M)x(15N+3M)の大きさを有する正方形行列でもある。SLAMの特性上、多数のマップポイントに係わる測定が行われるので、該ヘッセ行列は、非常に大サイズを有することにもなる。従って、状態変化([数式5-2])を推定するために、該ヘッセ行列を即座に解く場合、相当な演算量が要求されるので、該ヘッセ行列を即座に解かず、状態変化([数式5-2])を推定することができる代案的な方法が要求される。
【0085】
代案としての方法の一例として、下記[数式6-1]のように、ヘッセ行列ブロックU,W,WT及びVを利用したシュアコンプリメント(Schur-complement)演算を行い、状態変化([数式6-2])が推定されうる。
【0086】
【数6】
【0087】
数式6によれば、状態変化([数式6-2])を推定する演算が、カメラポーズだけの行列演算(すなわち、S行列及びbベクトルに係わる演算)に変更され、変更された行列演算により、カメラポーズに係わる状態変化([数式6-3])がまず獲得されうる。
【0088】
カメラポーズに係わる状態変化([数式6-3])が獲得された後、後方代入(back substitution)を介し、マップポイントに係わる状態変化である[数式6-4]が獲得されうる。そのように、状態変化([数式6-2])を推定するために、シュアコンプリメント演算を利用する場合、ヘッセ行列を即座に解く場合と比較し、演算量が相当に低減されうる。
【0089】
図9を参照すれば、マップポイントとカメラポーズとのファクタグラフの一例が図示されている。図9において、C0ないしC10は、連続するカメラポーズの状態を示し、P0ないしP13は、当該カメラポーズで観測されたマップポイントの状態を示す。
【0090】
また、rは、マップポイントとカメラポーズとの関係を示し、rは、再投影誤差とも表される。例えば、r00は、カメラポーズC0とマップポイントP0との関係を示し、r01は、カメラポーズC0とマップポイントP1との関係を示し、r1013は、カメラポーズC10とマップポイントP13との関係を示す。併せて、rbは、隣接するカメラポーズ間の関係を示す。例えば、rb01は、カメラポーズC0とカメラポーズC1との関係を示す。
【0091】
図10には、図9のファクタグラフによるヤコビ行列の例示が図示されている。このとき、該ヤコビ行列は、カメラポーズに係わるヤコビ行列ブロック[数式3-2]、及びマップポイントに係わるヤコビ行列ブロック[数式3-3]によっても構成される。
【0092】
図10を参照すれば、マップポイントとカメラポーズとの関係により、ヤコビ行列の要素が決定されうる。図10のヤコビ行列において、陰影処理された部分は、マップポイントとカメラポーズとの関係を示す要素に対応し、陰影処理されていない部分は、0に対応しうる。
【0093】
図11には、図9のファクタグラフによるヘッセ行列の例示が図示されている。該ヘッセ行列は、カメラポーズに係わるヘッセ行列ブロックU、マップポイントに係わるヘッセ行列ブロックV、マップポイントに対応するカメラポーズに係わる行列ブロックW、及び行列ブロックWの転置行列に該当する行列ブロックWを含む。
【0094】
図11を参照すれば、行列ブロックW及び行列ブロックWは、マップポイントとカメラポーズとの関係性を示しうる。例えば、行列ブロックWのマップポイントP0は、カメラポーズC0に対応する1個のフレームから獲得され、行列ブロックWのマップポイントP3は、C0ないしC4に対応する5個のフレームから獲得されうるということを示す。
【0095】
行列ブロックU及び行列ブロックVは、対角要素にのみデータを含み、該対角要素を除いた全ての要素には、データを含んでいない対角行列(diagonal matrix)に該当しうる。例えば、カメラポーズC0ないしC10に係わる行列ブロックである行列ブロックUは、カメラポーズC0、及びC0が接する地点、カメラポーズC1、及びC1が接する地点、…、カメラポーズC10、及びC10が接する地点にのみデータを含むものでもある。また、マップポイントP0ないしP13に係わる行列ブロックである行列ブロックVは、マップポイントP0、及びP0が接する地点、マップポイントP1、及びP1が接する地点、…、マップポイントP13、及びP13が接する地点にのみデータを含むものでもある。
【0096】
図12には、図9のファクタグラフによるS行列の例示が図示されている。そのように、シュアコンプリメント演算のためのS行列は、カメラポーズだけの行列に該当し、S行列の要素は、数式6に基づいても計算される。
【0097】
なお、図9ないし図12は、説明のための1つの例示に過ぎず、実施形態により、ファクタグラフが変更される場合、ヘッセ行列、ヤコビ行列及びS行列の構造も、対応するように変更されうる。
【0098】
図13は、一実施形態による、SLAMを加速化させる方法を示すフローチャートである。このとき、図13に図示されたSLAMを加速化させる方法は、図3に図示されたSLAMアクセラレータ30で遂行される段階を示し、以下で重複する説明は、省略する。
図13を参照すれば、1301段階において、SLAMプロセッサは、連続するフレームにおける特徴点の位置を追跡することができる。一実施形態によれば、SLAMプロセッサは、図3のSLAMアクセラレータ30のSLAMプロセッサ320でもある。例えば、該SLAMプロセッサのフロントエンドプロセッサ(例:図3のフロントエンドプロセッサ321)は、第1フレームから抽出された特徴点のうち、第1特徴点の第1フレームの次の第2フレームにおける位置を追跡することができる。
【0099】
1302段階において、一実施形態による、SLAMアクセラレータのSLAMプロセッサは、1301段階で追跡された特徴点の位置に基づき、マップポイント及びカメラポーズに係わる測定値(measurement)を獲得することができる。例えば、該SLAMプロセッサのバックエンドプロセッサ(例:図3のバックエンドプロセッサ322)は、追跡された第1特徴点の第2フレームにおける位置に基づき、マップポイント(例:図6のP0)及びカメラポーズ(例:図6のC0、C1、C2)に係わる第1測定値を獲得することができる。このとき、該第1測定値は、第1マップポイントの2D座標、及び第1マップポイントに対応する少なくとも1つのカメラポーズを含むものでもある。
【0100】
1303段階において、一実施形態による、SLAMアクセラレータのSLAMプロセッサは、第1測定値が獲得されれば、マップポイント及びカメラポーズに係わるヘッセ行列(Hessian matrix)の要素のうち、第1測定値と関連し、最適化行列に影響を与える要素を計算することができる。すなわち、SLAMアクセラレータは、全ての測定値に基づき、ヘッセ行列全体を生成する代わりに、該ヘッセ行列の要素のうち、第1測定値と関連し、最適化行列に影響を与える要素を計算することができる。例えば、SLAMプロセッサのバックエンドプロセッサは、第1測定値を利用し、カメラポーズに係わる行列ブロックの要素、マップポイントに係わる行列ブロックの要素、及びマップポイントに対応する少なくとも1以上のカメラポーズに係わる行列ブロックの要素を計算することができる。
1304段階において、一実施形態による、SLAMアクセラレータのSLAMプロセッサは、マップポイント及びカメラポーズの状態に係わる最適化演算を行うことに利用される最適化行列において計算された要素を累積することができる。
【0101】
該SLAMアクセラレータは、全ての測定値について順次に計算された要素が最適化行列に累積されれば、該最適化行列を利用し、マップポイント及びカメラポーズの状態に係わる最適化演算を行うことができる。該最適化演算は、シュアコンプリメント演算を含み、該最適化行列は、S行列を含むものでもある。
【0102】
なお、前掲の図7を参照して説明したように、カメラポーズは、15個の成分を含み、マップポイントは、3個の成分を含むので、カメラポーズの個数がN個であり、マップポイントの個数がM個である場合、ヘッセ行列は、(15N+3M)x(15N+3M)の大きさを有する正方形行列でもある。SLAMの特性上、多数のマップポイントに係わる測定が行われるので、該ヘッセ行列は、非常に大きいサイズを有する。従って、ヘッセ行列全体を生成し、生成されたヘッセ行列を解くことは、高速及び低電力でもって遂行され難い。
【0103】
一実施形態によるSLAMアクセラレータは、前述の1301段階ないし1304段階を介し、全ての測定値に基づき、マップポイント及びカメラポーズに係わるヘッセ行列全体を生成する代わりに、ヘッセ行列の要素のうち、単一測定値と関連し、最適化行列に影響を与える要素を1回でいずれも計算することができる。言い換えれば、SLAMアクセラレータは、中間のヤコビ行列またはヘッセ行列を生成せず、ヘッセ行列の要素のうち、第1測定値と関連し、S行列に影響を与える要素のみを選択的に計算することができる。
【0104】
それにより、一実施形態によるSLAMアクセラレータにおいては、ヤコビ行列またはヘッセ行列が生成及び保存される必要がないので、メモリサイズが低減されうる。また、一実施形態によるSLAMアクセラレータにおいては、1つの特徴点に係わる位置追跡が完了すれば、当該特徴点と係わる全ての演算が1回で処理され、当該特徴点に係わる測定値をさらにロードする必要がないので、SLAMの全般的な演算速度が増大されることができる。
【0105】
単一測定値について計算された要素は、シュアコンプリメント演算のための最適化行列に累積されうる。例えば、SLAMアクセラレータは、第1サイクルに第1測定値が入力された後、連続するサイクルに経て、第1測定値と関連する演算(例:1303段階ないし1304段階の演算)を順次に行い、第1測定値について計算された要素を最適化行列に累積することができる。また、SLAMアクセラレータは、第1サイクルの次の第2サイクルに第2測定値が入力されれば、第1測定値に関連する演算に続き、第2測定値と関連する演算を行い、第2測定値について計算された要素を最適化行列に累積することができる。
【0106】
一実施形態によれば、SLAMアクセラレータは、全ての測定値に係わる累積が完了した最適化行列を介し、最適化のための演算を行い、電子装置の周辺マップ及びポーズを推定することができる。
【0107】
以下においては、図14及び図15を参照し、SLAMアクセラレータが最適化行列に影響を与える要素を計算する過程について詳細に説明する。
【0108】
図14及び図15は、一実施形態による、単一測定値に基づき、最適化行列の要素を計算する過程について説明するための図面である。
【0109】
図14には、測定値が、カメラポーズC1ないしC5、及びマップポイントP1ないしP10を含む例示が図示されている。
【0110】
一実施形態によるSLAMアクセラレータ(例:図3のSLAMアクセラレータ30)のSLAMプロセッサ(例:図3のSLAMプロセッサ320)は、マップポイントP1が入力されれば、マップポイントP1を利用し、カメラポーズに係わる行列ブロックUの要素、マップポイントに係わる行列ブロックVの要素、及びマップポイントに対応する少なくとも1以上のカメラポーズに係わる行列ブロックWの要素を計算することができる。また、該SLAMアクセラレータのSLAMプロセッサは、rベクトル(例:数式5のr及びr)を計算することができる。
【0111】
例えば、マップポイントP1がカメラポーズC2ないしC5に対応する4つのフレームで観測される場合、SLAMアクセラレータは、再投影誤差[数式7-1]を計算することができる。また、該SLAMアクセラレータは、行列ブロックUの要素である[数式7-2]を計算し、行列ブロックVの要素である[数式7-3]を計算し、行列ブロックWの要素である[数式7-4]を計算することができる。
【0112】
図15には、ヘッセ行列1510及びS行列1520の例示が図示されている。SLAMアクセラレータは、測定値それぞれについて行われた演算結果を累積し、ヘッセ行列1510を生成する代わりに、ヘッセ行列1510の要素うち、マップポイントP1と関連し、S行列1520に影響を与える要素(例:U,V,W及びr要素)だけを計算することができる。このとき、計算されたS行列1520に影響を与える要素は、シュアコンプリメント演算を行うためのシュアコンプリメント演算部(図示せず)にも伝達されるが、それに係わる具体的な説明は、後述する。
【0113】
SLAMアクセラレータは、シュアコンプリメント演算により、行列ブロックW及び行列ブロックVの要素と、行列ブロックUの要素とを演算した後、行列ブロックUと同一サイズを有するS行列1520を生成することができる。例えば、該SLAMアクセラレータは、下記[数式7-5]により、S行列1520の要素を計算することができる。
【0114】
【数7】
【0115】
[数式7-5]で、i1、i2は、カメラポーズのインデックスを示し、jは、マップポイントのインデックスを示す。図15の例示において、マップポイントP1は、カメラポーズC2ないしC5で観測されるので、シュアコンプリメントの適用時、S22からS55まで総16個のS行列の要素が計算されうる。すなわち、該シュアコンプリメント演算は、他のマップポイントと係わりなく、マップポイントが観測されたカメラに該当するS行列位置においてのみ値を計算し、計算された値は、当該S行列位置に継続して累積されうる。
【0116】
なお、S行列は、対角線を基準に、転置(transpose)関係を有するので、SLAMアクセラレータは、S行列の対角成分及び上三角成分のみを計算することもできる。本開示において、該上三角成分は、S行列の対角成分を基準に、右側上端の三角形成分を意味し、当該表現は、以下においても、同一意味に使用されうる。
【0117】
SLAMアクセラレータは、全ての測定値に係わる累積が完了した最適化行列を介し、最適化のための演算を行い、電子装置の周辺マップ及びポーズを推定することができるが、それに係わる具体的な、説明は後述する。
【0118】
すなわち、一実施形態によるSLAMアクセラレータは、前述の動作を介し、カメラポーズ及びマップポイントに係わる状態の誤差を最小化させるための最適化演算を、高速でもって低電力で行うことができる。
【0119】
図16は、一実施形態による、SLAMプロセッサのパイプライン構造を示す図面である。また、図17ないし図19は、一実施形態による、カメラヘッセ行列、IMUヘッセ行列及び最終S行列(S matrix)を示す図面である。
【0120】
図16を参照すれば、一実施形態によるSLAMアクセラレータ(例:図3のSLAMアクセラレータ30)のSLAMプロセッサ(例:図3のSLAMプロセッサ320)は、多くの演算量が要求されるSLAM演算を、低電力及び高速で行うためのパイプライン構造1600を含むものでもある。すなわち、該SLAMプロセッサは、SLAMのフロントエンド演算とバックエンド演算とを順次に行うことができるパイプライン構造1600を含むものでもある。
【0121】
SLAMプロセッサのパイプライン構造1600は、特徴点追跡部1610、マップコントローラ1620、カメラ制約生成器1630、シュアコンプリメント演算部1640及び線形ソルバ(linear solver)1660を含むものでもある。
【0122】
一実施形態によれば、パイプライン構造1600の特徴点追跡部1610及びマップコントローラ1620は、センサ(例:図1のセンサ110)で獲得されたイメージデータから特徴点を抽出し、連続するフレームにおける抽出された特徴点の位置を追跡するフロントエンドプロセッサ(例:図3のフロントエンドプロセッサ321)の一部でもある。
【0123】
特徴点追跡部1610は、イメージデータから抽出された特徴点の位置を追跡する役割を行うことができる。すなわち、特徴点追跡部1610は、図13の1301段階のような演算を行うことができる。フレームから特徴点を抽出する過程と異なり、特徴点の位置を推定する過程は、各特徴点別に、演算が並列にも行われる。それにより、特徴点追跡部1610は、抽出された特徴点の位置を並列に追跡することができる。
【0124】
一実施形態によれば、特徴点追跡部1610は、抽出された特徴点の個数により、追加して特徴点を抽出する動作(feature detection)を遂行することもできる。例えば、特徴点追跡部1610は、抽出された特徴点の個数が指定された個数である場合、イメージデータから、特徴点を追加して抽出することができる。本開示において「指定された個数」は、電子装置の周辺マップ及びポーズ推定結果の正確性を確保するために必要な特徴点の個数を意味しうる。
【0125】
抽出された特徴点の個数が指定された個数以下である場合には、推定された電子装置の周辺マップ及びポーズの正確性が落ちてしまうので、特徴点追跡部1610は、抽出された特徴点の個数が指定された個数以下である場合、特徴点の個数が指定された個数より多くなるように、特徴点を追加して抽出することができる。このとき、特徴点追跡部1610の特徴点を追加して抽出する動作は、所定の条件でのみ遂行されるが、全てのフレームから特徴点が追加して抽出されるものではないということは、当業者に当然のことであろう。
【0126】
マップコントローラ1620は、特徴点追跡部1610と、電気的または作動的に連結され、特徴点追跡部1610に、特徴点の位置追跡に必要なデータを伝達する役割を行うことができる。例えば、マップコントローラ1620は、センサのセンシングデータ(例:慣性情報)、及び以前のSLAM演算結果に係わるデータに基づき、特徴点の位置、特徴点を追跡するためのパッチ(patch)サイズ、及び/または特徴点の追跡順序に係わるデータを、特徴点追跡部1610に伝達することができる。特徴点追跡部1610は、マップコントローラ1620から伝達されたデータに基づき、連続するフレームにおける特徴点の位置を追跡することができる。ただし、マップコントローラ1620に係わる具体的な説明は、後述する。
【0127】
一実施形態によれば、カメラ制約生成器1630及びシュアコムプリモント演算部1640は、SLAMのフロントエンド演算結果に基づき、SLAMのバックエンド演算を行うバックエンドプロセッサ(例:図3のバックエンドプロセッサ322)の一部でもある。
【0128】
カメラ制約生成器1630は、特徴点追跡部1610で追跡された特徴点の位置に基づき、マップポイント及びカメラポーズに係わる測定値を獲得し、マップポイント及びカメラポーズに係わるヘッセ行列の要素のうち、獲得された測定値と関連し、最適化行列に影響を与える要素を計算する役割を行うことができる。すなわち、カメラ制約生成器1630は、図13の1302段階ないし1303段階のような演算を行うことができる。
【0129】
例えば、カメラ制約生成器1630は、特徴点追跡部1610で追跡された第1特徴点の位置に基づき、第1マップポイント及び第1マップポイントに対応する少なくとも1つのカメラポーズを含む第1測定値を獲得することができる。また、カメラ制約生成器1630は、全ての測定値に基づき、ヘッセ行列全体を生成する代わりに、ヘッセ行列の要素のうち、第1測定値と関連し、最適化行列に影響を与える要素を計算することができる。
【0130】
シュアコンプリメント演算部1640は、マップポイント及びカメラポーズの状態に係わる最適化演算を行うことに利用される最適化行列において計算された要素を累積する役割を行うことができる。例えば、シュアコンプリメント演算部1640は、カメラ制約生成器1630で計算されたヘッセ行列の要素のうち、第1測定値と関連し、最適化行列に影響を与える要素を累積することができる。すなわち、シュアコンプリメント演算部1640は、図13の1304段階のような演算を行うことができる。
【0131】
一方、SLAMアクセラレータは、カメラから獲得されるイメージデータのみを利用し、周辺マップ及びポーズを推定することもできるが、慣性測定ユニット(IMU)のような他のセンサから獲得されるセンシングデータを共に利用し、周辺マップ及びポーズの推定精度を向上させることができる。そのような場合、一実施形態によるSLAMアクセラレータは、パイプライン構造1600以外に、プロセッシングユニット1650(または、「変換プロセッシングユニット(transformation processing unit)」)をさらに含むものでもある。
【0132】
プロセッシングユニット1650は、慣性測定ユニット(IMU)から獲得された慣性情報(IMU measurement)に係わる最適化演算を行うことができる。例えば、プロセッシングユニット1650は、慣性測定ユニットから獲得された慣性情報に係わる最適化演算のための行列演算、ベクトル演算及び/またはリー代数(Lie algebra)演算などを遂行することができる。ただし、プロセッシングユニット1650の構成及び/または動作に係わる具体的な説明は、後述する。
【0133】
前掲の図7を参照して説明した、カメラポーズに係わる状態ベクトルCの要素のうち、カメラ測定値(または、「イメージデータ」)を利用して推定される要素は、R及びTを含み、慣性測定ユニットの測定値を利用して推定される要素は、R及びTだけではなく、V、Ba、Bwをさらに含むものでもある。それにより、カメラポーズに係わる状態ベクトルCは、カメラ測定値と慣性測定ユニット測定値とのいずれによっても影響を受けるファクタを含むTと、慣性測定ユニットの測定値にだけ影響を受けるファクタ(IMU factor)を含むMとに分けられうる。
【0134】
図17には、カメラ測定値に係わるヘッセ行列(または、カメラヘッセ行列)が図示されており、図18には、慣性測定ユニットの測定値に係わるヘッセ行列(または、IMUヘッセ行列)が図示されている。図17及び図18を参照すれば、慣性測定ユニットの測定値が、マップポイントと関連がないファクタであるので、慣性測定ユニットの測定値に係わるヘッセ行列においては、カメラ測定値に係わるヘッセ行列と異なり、行列ブロックUだけ含み、マップポイントと関連する行列ブロックW及び行列ブロックVは、含まないのである。
【0135】
それにより、SLAMアクセラレータのSLAMプロセッサは、シュアコンプリメント演算部1640を介し、イメージデータに係わる第1 S行列を演算した後、プロセッシングユニット1650を介し、慣性情報に係わる第2 S行列を加え、図19のような最終S行列を生成することができる。
【0136】
図19には、シュアコンプリメント演算部を介して獲得されたS行列と、プロセッシングユニット1650を介して獲得されたS行列とが加えられて生成された最終S行列に図示されている。図19に図示された最終S行列は、本開示の一実施形態であり、一実施形態により、最終S行列の形態が変更されうるということは、言うまでもない。
【0137】
このように、SLAMアクセラレータのSLAMプロセッサ(例:バックエンドプロセッサ)は、特徴点の測定値を、カメラ及び慣性測定ユニットのいずれによっても影響を受ける第1部分と、慣性測定ユニットによってのみ影響を受ける第2部分とに区分することができる。
【0138】
SLAMプロセッサは、第1部分を利用し、カメラポーズに係わる行列ブロックの要素、マップポイントに係わる行列ブロックの要素、及びマップポイントに対応する少なくとも1以上のカメラポーズに係わる行列ブロックの要素を計算した後、該第1部分を利用して計算された要素を、最適化行列(例:S行列)に一次的に累積することができる。その後、該SLAMプロセッサは、第2部分を利用し、カメラポーズに係わる行列ブロックの要素を計算した後、第2部分について計算された要素を、最適化行列に二次的に累積することができる。
【0139】
SLAMアクセラレータのSLAMプロセッサは、最終最適化行列(例:S行列及びbベクトル)が生成されれば、線形ソルバ1660を利用し、最終最適化行列に係わる方程式演算を行うことにより、累積されたエラーが最適化された状態変化を獲得することができる。例えば、線形ソルバ1660は、コレスキー分解(Cholesky decomposition)またはPCG(Pre-conditioned Conjugate Gradient)方式を介し、最終最適化行列に係わる方程式を解き、最適化された状態変化を獲得することができるが、それに限定されるものではない。それにより、SLAMアクセラレータのSLAMプロセッサは、電子装置の周辺マップ及びポーズを推定することができる。
【0140】
慣性情報に係わる最適化演算の場合、イメージデータに係わる最適化演算に比べ、相対的にデータ量が少なく、演算量が多くなく、該慣性情報は、マップポイントに係わるファクタを含まないので、イメージデータから獲得される最適化行列と、慣性情報から獲得される最適化行列は、並列に演算されうる。それにより、一実施形態によるSLAMアクセラレータは、慣性情報に係わる最適化演算を行うプロセッシングユニット1650は、パイプライン構造1600と別個に構成することができる。
【0141】
図面上には、プロセッシングユニット1650は、パイプライン構造1600のマップコントローラ1620と区分される実施形態についてのみ図示されているが、本開示の実施形態は、図示された実施形態に限定されるものではない。他の実施形態において、プロセッシングユニット1650は、マップコントローラ1620の内部に配される低電力及び小型の構造でもある。
【0142】
一実施形態によるSLAMアクセラレータは、前述のパイプライン構造1600を介し、全ての特徴点の位置追跡が完了しないとしても、特徴点のうちいずれか1つの特徴点に係わる位置が追跡されれば、SLAMのフロントエンド演算とバックエンド演算とを連続して行うことができる。言い換えれば、該SLAMアクセラレータは、各特徴点別にSLAM演算を行うことにより、低い電力でも、高い演算量が要求されるSLAM演算を迅速でもって効率的に遂行することができる。
【0143】
以下においては、図20ないし図22を参照し、マップコントローラ1620の全体的な動作について具体的に説明する。
【0144】
図20は、一実施形態による、SLAMプロセッサのマップコントローラの全体的な動作について説明するためのフローチャートである。また、図21及び図22は、一実施形態による、特徴点の予想位置を推定し、特徴点の追跡順序を決定する過程について説明するための図面である。
【0145】
以下においては、図20のマップコントローラの全体的な動作についての説明において、図21及び図22に図示された図面を参照する。
【0146】
図20及び図21を参照すれば、2001段階において、一実施形態による、SLAMアクセラレータ(例:図3のSLAMアクセラレータ30)のマップコントローラ(例:図16のマップコントローラ1320)は、連続するフレームにおいて、特徴点の予想位置を追跡することができる。例えば、マップコントローラは、第Nフレーム(例:第1フレーム)から抽出された特徴点の第(N+1)フレーム(例:第2フレーム)における予想位置を追跡することができる。
【0147】
一実施形態によれば、マップコントローラは、SLAMアクセラレータ、または電子装置(例:図1の電子装置100)に含まれたSLAMアクセラレータのポーズ変化量、及び/または以前のSLAM演算結果に基づき、連続するフレームにおいて、特徴点の予想位置を追跡することができる。本開示において「以前のSLAM演算結果」は、現在を基準にして以前時点において、SLAMプロセッサを介して推定された周辺マップ及びポーズに係わるデータを意味し、当該表現は、以下においても、同一の意味に使用される。
【0148】
例えば、SLAMアクセラレータが、慣性測定ユニット(IMU)で獲得された慣性情報を利用して最適化演算を行う場合、マップコントローラは、プロセッシングユニット(例:図16のプロセッシングユニット1650)から、SLAMアクセラレータのポーズ変化量に係わるデータを獲得し、獲得されたポーズ変化量、及び/または以前のSLAM演算結果に基づき、特徴点の予想位置を追跡することができる。
【0149】
2002段階において、一実施形態による、SLAMアクセラレータのマップコントローラは、抽出された特徴点の位置を追跡するためのパッチの大きさを決定することができる。本開示において「パッチ」は、特徴点の位置分布によって設定される仮想の空間を意味し、当該表現は、以下においても、同一の意味にも使用される。
【0150】
一実施形態によれば、マップコントローラは、抽出された特徴点の不確実性(uncertainty)に基づき、特徴点の位置を追跡するためのパッチの大きさを決定することができる。例えば、特徴点の不確実性が高くなるほど、特徴点の位置することができる領域が広くなることになるので、該マップコントローラは、抽出された特徴点の不確実性が高いほど、パッチの大きさを広げることができる。
【0151】
図20及び図22を参照すれば、2003段階において、一実施形態による、SLAMアクセラレータのマップコントローラは、特徴点の予想位置に基づいて抽出された特徴点の位置追跡順序(tracking order)を決定することができる。例えば、該マップコントローラは、フレームのリードアウト(read-out)方向を基準に抽出された特徴点の第(N+1)フレーム(例:第2フレーム)における位置追跡順序を決定することができる。
【0152】
図22に図示された実施形態によれば、フレームのリードアウト方向は、上端から下端に向かう方向でもある。その場合、マップコントローラは、フレーム内において、最も上端に位置した第1特徴点の位置追跡順序を最初に決定し、第6特徴点、第2特徴点、第5特徴点、第3特徴点及び第4特徴点の順に位置が追跡されうるように、位置追跡順序を決定することができる。
【0153】
マップコントローラにおいて、前述の2001段階ないし2003段階を介して決定されたパッチの大きさ、及び抽出された特徴点の位置追跡順序に係わるデータは、特徴点追跡部(例:図16の特徴点追跡部1610)にも伝達される。
【0154】
特徴点追跡部1610は、伝達されたデータに基づき、連続するフレームから抽出された特徴点の位置を追跡することができる。一実施形態によれば、特徴点追跡部は、マップコントローラで決定されたパッチを利用して抽出された特徴点の位置を順に追跡することができる。例えば、該特徴点追跡部は、第1特徴点の位置を優先して追跡することができ、追跡された第1特徴点の位置は、第1測定値として、カメラ制約生成器(例:図16のカメラ制約生成器1630)にも入力される。
【0155】
図23は、一実施形態による、プロセッシングユニットの構成を示すブロック図である。このとき、図23に図示されたプロセッシングユニット1650は、図16のプロセッシングユニット1650の一実施形態でもあり、以下において重複する説明は、省略する。
【0156】
図23を参照すれば、一実施形態によるSLAMアクセラレータ(例:図3のSLAMアクセラレータ30)は、周辺マップ及びポーズの推定時、カメラから獲得されたイメージデータだけではなく、慣性測定ユニット(IMU)から獲得される慣性情報データまで共に利用するために、プロセッシングユニット1650を含むものでもある。
【0157】
SLAMアクセラレータがプロセッシングユニット1650を含む場合、前掲の[数式1-1]による目的関数は、下記[数式8]にも拡張される。
【0158】
【数8】
【0159】
[数式8]において「evis」は、ビジョンファクタ(または、「イメージファクタ」)に係わる誤差を示し、下記[数式9]のようにも表現される。また、[数式8]において「eimu」は、慣性情報ファクタ(または、「IMUファクタ」)に係わる誤差を示し、下記[数式10]のようにも表現される。
【0160】
【数9】
【数10】
【0161】
[数式9]及び[数式10]において、i及びjは、それぞれフレームナンバー(または、「カメラポーズのナンバー」)を示し、i,jは、i番目フレームからj番目フレームまでにおける前処理統合(pre-integration)を意味しうる。
【0162】
また、[数式10]の慣性情報ファクタと係わる誤差は、下記[数式11]に記載された慣性情報前処理統合係数(IMU pre-integration factor)によっても表現される。
【0163】
【数11】
【0164】
[数式11]において、Rは、回転変換行列を示し、pは、位置を示し、vは、速度を示し、ωは、角速度を示し、aは、加速度を示しうる。また、bは、加速度計のバイアスを示し、bは、角速度計のバイアス、ηは、加速度計のノイズ、ηは、角速度計のノイズを示しうる。
【0165】
[数式9]ないし[数式11]を参照すれば、慣性情報を示す回転行列(rotation matrix)に係わる最適化演算を行うためには、行列演算、ベクトル演算、並びに下記[数式12]及び[数式13]のようなリー代数演算が必要にもなる。
【0166】
【数12】
【数13】
【0167】
[数式12]及び[数式13]において、Rは、行列を示し、φは、ベクトルを示しうる。前述の[数式12]及び[数式13]のようなリー代数演算を介し、行列がベクトルにも変換される。
【0168】
慣性測定ユニットを介して獲得される慣性情報は、三次元空間の情報であるので、回転行列に係わる最適化演算を行うためには、主に、3X3サイズを有する行列演算、3X1サイズを有するベクトル演算、及び三次元リー代数演算が主に行われうる。
【0169】
プロセッシングユニット1650は、イメージデータに係わる最適化演算に比べ、相対的にデータ量が少なく、演算量が多くなり、マップポイントに係わる最適化演算と並列にも遂行される慣性情報または回転行列に係わる最適化演算を行うための構成を含むものでもある。
【0170】
一実施形態によれば、プロセッシングユニット1650は、行列演算部2310、ベクトル演算部2320、リー代数演算部2330、命令語メモリ2340、データメモリ2350及び制御部2360を含むものでもある。
【0171】
行列演算部2310は、慣性情報または回転行列に係わる最適化演算のうち、指定された行列に係わる演算を行うことができる。例えば、行列演算部2310は、回転行列の最適化演算過程において主に遂行される3X3サイズを有する行列に係わる演算を行うことができる。
【0172】
ベクトル演算部2320は、慣性情報または回転行列に係わる最適化演算のうち、指定されたベクトルに係わる演算を行うことができる。例えば、ベクトル演算部2320は、回転行列の最適化演算過程において主に遂行される3X1サイズを有するベクトルに係わる演算を行うことができる。一実施形態によれば、回転行列に係わる最適化演算を行うために、3X3行列演算、3X1ベクトル演算及び3Dリー代数演算が主に遂行されうる。
【0173】
リー代数演算部2330は、指定された行列を、指定されたベクトルに変換するリー代数演算を行うことができる。例えば、リー代数演算部2330は、3X3行列を、最適化行列の生成過程で使用される3X1サイズのベクトルに変換することができる。
【0174】
命令語メモリ2340は、行列演算部2310、ベクトル演算部2320及びリー代数演算部2330の演算のための命令語が保存されうる。一実施形態によれば、命令語は、行列演算部2310の行列演算、ベクトル演算部2320のベクトル演算、及び/またはリー代数演算部2330のリー代数演算のための命令語(instructions)でもある。制御部2360は、命令語メモリ2340に保存された命令語に基づき、行列演算部2310、ベクトル演算部2320及びリー代数演算部2330を制御することができる。
【0175】
データメモリ2350は、行列演算部2310、ベクトル演算部2320及びリー代数演算部2330と、電気的または作動的に連結され、行列演算部2310、ベクトル演算部2320及びリー代数演算部2330の演算結果を保存することができる。図面上には、命令語メモリ2340とデータメモリ2350とが別個の構成である実施形態についてのみ図示されているが、一実施形態により、命令語メモリ2340とデータメモリ2350は、一体にも形成される。
【0176】
制御部2360は、プロセッシングユニット1650の全般的な動作を制御することができる。一例示において、制御部2360は、命令語メモリ2340に保存された命令語に基づき、行列演算部2310、ベクトル演算部2320及びリー代数演算部2330の動作を制御することができる。他の例示として、制御部2360は、行列演算部2310、ベクトル演算部2320及びリー代数演算部2330の演算結果に基づき、慣性情報(または、回転行列)に係わる最適化演算を行うことにより、慣性情報から、最適化行列(例:S行列、bベクトル)を獲得することができる。
【0177】
SLAMプロセッサのパイプライン構造(例:図16のパイプライン構造1600)は、制御部2360から、慣性情報から獲得された最適化行列に係わるデータを受信し、慣性情報から獲得された最適化行列と、シュアコンプリメント演算部(例:図16のシュアコンプリメント演算部1640)を介し、イメージデータから獲得された最適化行列とを加え、最終最適化行列を生成することができる。
【0178】
図24は、一実施形態による、SLAMアクセラレータのパイプライン構造について説明するための図面である。
【0179】
図24には、SLAMアクセラレータ(例:図3のSLAMアクセラレータ30)が、パイプライン構造を利用し、特徴点の位置を追跡して測定値を獲得し、測定値に係わる演算を行う過程が図示されている。
【0180】
SLAMアクセラレータは、抽出された特徴点のうち、N番目特徴点に係わる入力をK番目サイクル(cycle)にロードすることができる。該SLAMアクセラレータは、K番目サイクルに、N番目特徴点に係わる入力がロードされれば、N番目特徴点の連続するフレームにおける位置を追跡し、N番目特徴点に係わるN番目測定値(Nth keypoint measurement)を獲得した後、連続するサイクル(すなわち、(K+1)番目サイクルないし(K+4)番目サイクル)にわたり、N番目測定値と関連する演算を順次に行うことができる。例えば、該SLAMアクセラレータは、N番目測定値につ基、再投影誤差演算、ヤコビ行列またはヤコビ行列の要素の生成、ヘッセ行列またはヘッセ行列の要素の生成、及びシュアコンプリメント演算を順次に行うことができる。
【0181】
また、該SLAMアクセラレータは、(N+1)番目特徴点に係わる入力を、(K+1)番目サイクルにロードすることができる。該SLAMアクセラレータは、(K+1)番目サイクルにおいて、(N+1)番目特徴点の位置を追跡し、(N+1)番目特徴点に係わる(N+1)番目測定値を獲得した後、N番目測定値に関連する演算に続き、(N+1)番目測定値に係わる演算を行うことができる。例えば、該SLAMアクセラレータは、(K+1)番目サイクルにおいて、N番目測定値に係わる再投影を行うと共に、(N+1)番目特徴点の位置を追跡し、(N+1)番目特徴点に係わる(N+1)番目測定値を獲得することができる。その後、該SLAMアクセラレータは、(K+2)番目サイクルにおいて、N番目測定値に係わるヤコビ行列生成を遂行すると共に、(N+1)番目測定値に係わる再投影を遂行することができる。
【0182】
それに加え、SLAMアクセラレータは、(N+2)番目特徴点に係わる入力を(K+2)番目サイクルにロードすることができ、(N+2)番目特徴点の位置を追跡し、(N+2)番目特徴点に係わる(N+2)番目測定値を獲得した後、N番目測定値に係わる演算及び(N+1)番目測定値に係わる演算に続き、(N+2)番目測定値に係わる演算を行うことができる。そのように、該SLAMアクセラレータは、状態変数を最適化させる複数の演算それぞれを行うパイプライン構造を含むものでもあり、複数の測定値に係わる演算を並列に行うことができる。それにより、最適化演算が高速にも行われ、その結果、該SLAMアクセラレータは、SLAMのフロントエンド及びバックエンド演算速度を向上させることができる。
【0183】
図25は、一実施形態による、電子装置の構成を示すブロック図であり、図26は、一実施形態による、電子装置の全般的な動作について説明するための図面である。
【0184】
図25及び図26を参照すれば、一実施形態による電子装置2500は、センサ2510、SLAMプロセッサ2520及びイメージメモリ2530(または、「イメージデータベース(image DB)」)を含むものでもある。一実施形態による、電子装置2500のSLAMプロセッサ2520は、図3のSLAMアクセラレータ30を構成するSLAMプロセッサ320でもあり、以下で重複する説明は、省略する。
【0185】
センサ2510は、SLAMプロセッサ2520と、電気的または作動的にも連結され、SLAM演算に必要なデータを獲得する役割を行うことができる。例えば、SLAMプロセッサ2520は、センサ2510を介し、電子装置2500の周辺客体に係わるイメージデータ、及び/または電子装置2500の慣性情報に係わるデータを獲得することができる。
【0186】
一実施形態によれば、センサ2510は、周辺客体に係わるイメージデータを獲得するためのカメラ2511、及び電子装置2500の慣性情報に係わるデータを獲得するための慣性測定ユニット(IMU)2512を含むものでもある。ただし、センサ2510の構成要素は、前述の実施形態に限定されるものではなく、一実施形態により、センサ2510は、他の構成要素(例:イメージセンサ、GPS(Global Positioning System)、走行距離計)をさらに含むか、あるいは前述の構成要素のうち、少なくとも1つの構成要素(例:慣性測定ユニット)を省略することもできる。
【0187】
SLAMプロセッサ2520は、センサ2510からデータを受信し、受信されたデータに係わるSLAM演算を行い、電子装置2500のポーズ及び周辺マップを推定することができる。
【0188】
一実施形態によれば、SLAMプロセッサ2520は、SLAMのフロントエンド演算を行うフロントエンドプロセッサ2521(例:図3のフロントエンドプロセッサ321)、及びフロントエンド演算結果に基づき、SLAMのバックエンド演算を行うバックエンドプロセッサ2522(例:図3のバックエンドプロセッサ322)を含むものでもある。
【0189】
フロントエンドプロセッサ2521は、特徴点抽出アルゴリズムを介し、センサ2510で獲得された周辺客体に係わるイメージデータから特徴点を抽出し、連続するフレームから抽出された特徴点の位置を追跡することができる。例えば、フロントエンドプロセッサ2521は、イメージデータの第1フレームから特徴点を抽出し、該特徴点のうち、少なくとも1つの特徴点の第2フレームにおける位置を追跡することができる。
【0190】
一実施形態によれば、フロントエンドプロセッサ2521は、イメージメモリ2530と、電気的または作動的にも連結され、イメージメモリ2530に保存されたイメージデータを利用し、特徴点の抽出及び追跡の正確度を向上させることができる。例えば、フロントエンドプロセッサ2521は、イメージメモリ2530に保存されたイメージデータ(例:周辺客体に係わるイメージ)に基づき、マップポイントの位置をさらに正確に判断することができ、その結果、該特徴点の抽出及び追跡の正確度が向上されうる。
【0191】
また、フロントエンドプロセッサ2521は、センサ2510で獲得された慣性情報に係わるデータを、最適化演算を行うためのデータに変換したり、それを処理したりすることができ、変換または処理されたデータは、ファクタグラフメモリ(factorgraphmemory)(例:図3のファクタグラフメモリ310)に保存されることができる。図26には、ファクタグラフメモリがバックエンドプロセッサ2522に含まれた実施形態について図示されているが、該ファクタグラフメモリは、バックエンドプロセッサ2522に必ずしも含まれなければならないものではない。一実施形態(図示せず)により、該ファクタグラフメモリは、バックエンドプロセッサ2522と区分される構成でもある。
【0192】
バックエンドプロセッサ2522は、フロントエンドプロセッサ2521のフロントエンド演算結果に基づき、最適化演算を行うことにより、電子装置2500のポーズ及び周辺マップを推定することができる。例えば、バックエンドプロセッサ2522は、光束調節(BA)を介し、フロントエンドプロセッサ2521で抽出され、かつ/あるいは追跡された特徴点と、慣性情報とに係わる最適化演算を行い、電子装置2500のポーズ及び周辺マップを推定することができるが、それに限定されるものではない。
【0193】
SLAMプロセッサ2520は、特徴点別またはマップポイント別に、フロントエンドプロセッサ2521のフロントエンド演算と、バックエンドプロセッサ2522のバックエンド演算とを連続して行うことができるパイプライン構造を含むものでもある。例えば、SLAMプロセッサ2520は、図16のパイプライン構造1600を含むものでもあり、以下で重複する説明は、省略する。
【0194】
一実施形態によれば、電子装置2500は、センサ2510、SLAMプロセッサ2520及びイメージメモリ2530が1つのチップに集積された単一チップシステム(system on a chip)でもある。すなわち、一実施形態による電子装置2500は、センサ2510、SLAMプロセッサ2520及びイメージメモリ2530が一体化された単一チップシステムによって具現され、1つのチップ内において、SLAM演算のためのデータ獲得、及び獲得されたデータに係わるSLAM演算を連続して行うことができる。
【0195】
SLAMを遂行するウェアラブルデバイス(例:ARガラス)またはロボットの小型化のためには、SLAMを遂行するための構成要素の小型化が必要であり、一実施形態による電子装置2500は、図1及び/または図2の電子装置100(例:ウェアラブルデバイス)または自律走行ロボットに適用され、装置の全体的な大きさを小型化させながら、消費電力を最小化させることができる。
【0196】
一実施形態によれば、電子装置2500は、外部電子装置と無線通信を行うための無線通信モジュールをさらに含むものでもある。一実施形態によれば、該無線通信モジュールは、少なくとも1つの電子回路によっても具現される。電子装置2500は、少なくとも1つのアンテナを含む無線通信モジュールを介し、外部電子装置(例:モバイル電子装置またはサーバ)と、データを送信及び/または受信することができる。電子装置2500が無線通信モジュールを含む場合、電子装置2500は、センサ2510、SLAMプロセッサ2520、イメージメモリ2530及び無線通信モジュールが一体化された単一チップシステムでもある。
【0197】
一実施形態によれば、SLAMプロセッサのパイプライン構造1600、プロセッシングユニット1650、及び/または電子装置2500の少なくとも1つの構成要素は、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアとの結合によっても具現される。例えば、SLAMプロセッサのパイプライン構造1600、プロセッシングユニット1650、及び/または電子装置2500の少なくとも1つの構成要素は、少なくとも1つのメモリ、少なくとも1つのプロセッサによっても具現される。また、本開示において、「~ユニットまたは~部」及び「モジュール」は、メモリまたはプロセッサによっても具現される。
【0198】
一実施形態によれば、プロセッシングユニット1650は、少なくとも1つのメモリ、及び少なくとも1つのプロセッサによっても具現される。一実施形態によれば、行列演算部2310、ベクトル演算部2320及びリー代数演算部2330は、プロセッサによっても具現される。一実施形態によれば、同一プロセッサであるならば、プロセッシングユニット1650の少なくとも1つの構成要素を具現するようにも構成される。一実施形態によれば、該プロセッサは、プロセッシングユニット1650の少なくとも1つの他の構成要素(例:ハードウェア構成要素またはソフトウェア構成要素)を制御するために、ソフトウェア(例えば、プログラムコードまたは命令語)を実行することができる。データ処理またはデータ計算の一部として、該プロセッサは、他の構成要素(例えば、センサまたは通信モジュール)から受信された命令語及び/またはデータをメモリにロードし、該メモリに保存された命令語及び/またはデータを処理し、該メモリに、結果データを保存することができる。該メモリは、揮発性メモリまたは不揮発性メモリでもある。該不揮発性メモリは、内部メモリと外部メモリとを含むものでもある。該プロセッサは、メインプロセッサ(例えば、中央処理装置、アプリケーションプロセッサなど)でもあり、かつ独立して作動するか、あるいは該メインプロセッサと共に作動しうる補助プロセッサ(例:グラフィック処理装置、イメージ信号プロセッサ、センサハブプロセッサ、通信プロセッサ)を含むものでもある。
【0199】
なお、前述のSLAMを加速化させる方法は、その方法を実行する命令語を含む1以上のプログラムが記録されたコンピュータで読み取り可能な記録媒体にも記録される。該コンピュータで読み取り可能な可能記録媒体の例には、ハードディスク、フロッピィーディスク及び磁気テープのような磁気媒体(magnetic media);CD-ROM(Compact Disc Read-Only Memory)、DVD(Digital Versatile Disc)のような光記録媒体(optical media);フロプティカルディスク(floptical disk)のような磁気・光媒体(magneto-optical media);及びROM、RAM、フラッシュメモリのようなプログラム命令を保存して遂行するように特別に構成されたハードウェア装置が含まれる。該プログラム命令語の例には、コンパイラによって作られるような機械語コードだけではなく、インタープリタなどを使用し、コンピュータによって実行されうる高級言語コードを含む。
【0200】
以上、本実施形態について詳細に説明したが、本発明の権利範囲は、それらに限定されるものではなく、特許請求の範囲で定義されている本発明の基本概念を利用した当業者のさまざまな変形及び改良形態も、本発明の権利範囲に属するのである。
【符号の説明】
【0201】
30 SLAMアクセラレータ
100,2500 電子装置
110,2510 センサ
120 加速器
130 プロセッサ
310 ファクタグラフメモリ
320,2520 SLAMプロセッサ
321,2521 フロントエンドプロセッサ
322,2522 バックエンドプロセッサ
1600 SLAMプロセッサのパイプライン構造
1610 特徴点追跡部
1620 マップコントローラ
1630 カメラ制約生成器
1640 シュアコンプリメント演算部
1650 プロセッシングユニット
1660 線形ソルバ
2530 イメージセンサ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26