(57)【要約】【課題】限られたリソースでリアルタイム処理により位置推定を行うことのできる情報処理装置及び情報処理方法を提供する。【解決手段】一定のレートで画像フレームのデータ入力を受ける入力処理２１、入力された画像フレームに対して、複数の特徴点を並列処理により検出する特徴点検出処理２３、及び複数の特徴点の特徴をそれぞれ記述する複数の記述子を並列処理により生成する記述子生成処理２５を、クロック単位での制御により一定速度で実行可能なＦＰＧＡ２０と、ＦＰＧＡ２０で検出及び記述された各画像フレームの複数の特徴点に対して、画像フレーム間で対応関係を求める特徴点対応付け処理３５、及び対応関係に基づいて位置推定を行うバンドル調整処理３９を実行可能なＭＣＵ３０とを備える。【選択図】図１
2015210677.tif 000002
【特許請求の範囲】
【請求項１】
一定のレートで画像フレームのデータ入力を受ける入力処理、
入力された画像フレームに対して、複数の特徴点を並列処理により検出する検出処理、及び
前記複数の特徴点の特徴をそれぞれ記述する複数の記述子を並列処理により生成する記述処理
を、クロック単位での制御により一定速度で実行可能な第１の計算処理モジュールと、
前記第１の計算処理モジュールで検出及び記述された各画像フレームの前記複数の特徴点に対して、画像フレーム間で対応関係を求める処理、及び
前記対応関係に基づいて位置推定を行う位置推定処理
を実行可能な第２の計算処理モジュールと
を備える情報処理装置。
【請求項２】
前記第１の計算処理モジュールは、前記検出処理及び前記記述処理を同時に実行する、
請求項１記載の情報処理装置。
【請求項３】
前記第１の計算処理モジュールは、前記検出処理において、特徴点であるか否かを評価するための演算を並列処理する、
請求項１又は請求項２記載の情報処理装置。
【請求項４】
前記第１の計算処理モジュールは、前記検出処理において、ＦＡＳＴアルゴリズムにより前記複数の特徴点を検出する、
請求項１乃至請求項３のいずれか１項記載の情報処理装置。
【請求項５】
前記第１の計算処理モジュールは、前記記述処理において、ＢＲＩＥＦ（Ｂｉｎａｒｙ  Ｒｏｂｕｓｔ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｅｌｅｍｅｎｔａｒｙ  Ｆｅａｔｕｒｅｓ）アルゴリズムにより、前記複数の特徴点の特徴を記述する前記複数の記述子を生成する、
請求項１乃至請求項４のいずれか１項記載の情報処理装置。
【請求項６】
前記第２の計算処理モジュールは、慣性計測装置からの入力と、前記対応関係とに基づいて位置推定を行う、
請求項１乃至請求項５のいずれか１項記載の情報処理装置。
【請求項７】
前記第１の計算処理モジュールと前記第２の計算処理モジュールとは同一のチップに実装される、
請求項１乃至請求項６のいずれか１項記載の情報処理装置。
【請求項８】
一定のレートで画像フレームのデータ入力を受ける入力処理、
入力された画像フレームに対して、複数の特徴点を並列処理により検出する検出処理、及び
前記複数の特徴点の特徴をそれぞれ記述する複数の記述子を並列処理により生成する記述処理
を、クロック単位での制御により一定速度で実行可能な第１の計算処理モジュールに実行させると共に、
出及び記述された各画像フレームの特徴点に対して、画像フレーム間で対応関係を求める処理、及び
前記対応関係に基づいて位置推定を行う位置推定処理
を実行可能な第２の計算処理モジュールに実行させる、情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明に係るいくつかの態様は、情報処理装置および情報処理方法に関する。
【背景技術】
【０００２】
近年、例えばカメラ（画像センサ）等で撮影した映像等をリアルタイムで処理することにより、位置推定等の各種処理をリアルタイムで行うことが考えられている。特に、ＵＡＶ（Ｕｎｍａｎｎｅｄ  Ａｅｒｉａｌ  Ｖｅｈｉｃｌｅ）の中でも特にマルチコプターロボット等の飛行ロボットは、地上ロボットとは異なり車輪のオドメトリ情報などの外部の固定物の接触を利用することができないため、自己位置推定を行うためには非接触的手法を用いる必要がある。よって、飛行ロボットに関しては、画像処理による自己位置推定が用いられることが多い。
【０００３】
なお、自己位置推定のためには、例えばカメラで撮影した画像から特徴点を検出したり特徴点を記述する記述子を生成したりする処理が必要となることがある。特徴点を検出する手法としては、例えばＦＡＳＴ（非特許文献１参照。）と呼ばれる手法があり、特徴点を記述する記述子を生成する手法としては、例えばＢＲＩＥＦ（非特許文献２参照。）と呼ばれる手法がある。
【０００４】
飛行ロボットに対して画像処理による自己位置推定を行う場合には、通常、機体上の計算機のみではリソースが不足するため、地上局の計算機を必要とする場合が多い。これは、オンライン画像処理を中心とした計算と、周期的な姿勢推定と制御を機体上の計算機でリアルタイムにより行うことが難しいため、無線で地上局の計算機と通信した上で、このような演算量の多い計算を地上局側で行う手法である。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】E. Rosten, R. Porter, and T. Drummond. "Faster and better: A machine learning approach to corner detection." IEEE Trans. Pattern Analysis and Machine Intelligence, 32:105-119, 2010.
【非特許文献２】M. Calonder, V. Lepetit, C. Strecha, and P. Fua. "Brief: Binary robust independent elementary features." In European Conference on Computer Vision, 2010.
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、地上機を用いる場合には、飛行ロボットの活躍範囲が無線通信のためのインフラ整備が整っている範囲に限られてしまう。また、飛行ロボットの数が増えればそれに比例して地上機の数も増やさなければならない。もし、姿勢制御等の様々な処理を全て機体上で行う、いわゆるオンボード処理に特化した飛行ロボットシステムができれば、地上機に頼ることなく、ロボットが自身で判断し行動することによって、通信距離などに束縛されない広範囲の環境でミッションを行うことが可能となる。
【０００７】
本発明のいくつかの態様は前述の課題に鑑みてなされたものであり、限られたリソースでリアルタイム処理により位置推定を行うことのできる情報処理装置及び情報処理方法を提供することを目的の１つとする。
【課題を解決するための手段】
【０００８】
本発明の所定の態様に係る情報処理装置は、一定のレートで画像フレームのデータ入力を受ける入力処理、入力された画像フレームに対して、複数の特徴点を並列処理により検出する検出処理、及び前記複数の特徴点の特徴をそれぞれ記述する複数の記述子を並列処理により生成する記述処理を、クロック単位での制御により一定速度で実行可能な第１の計算処理モジュールと、前記第１の計算処理モジュールで検出及び記述された各画像フレームの前記複数の特徴点に対して、画像フレーム間で対応関係を求める処理、及び前記対応関係に基づいて位置推定を行う位置推定処理を実行可能な第２の計算処理モジュールとを備える。
【０００９】
本発明の所定の態様に係る情報処理方法は、一定のレートで画像フレームのデータ入力を受ける入力処理、入力された画像フレームに対して、複数の特徴点を並列処理により検出する検出処理、及び前記複数の特徴点の特徴をそれぞれ記述する複数の記述子を並列処理により生成する記述処理を、クロック単位での制御により一定速度で実行可能な第１の計算処理モジュールに実行させると共に、出及び記述された各画像フレームの特徴点に対して、画像フレーム間で対応関係を求める処理、及び前記対応関係に基づいて位置推定を行う位置推定処理を実行可能な第２の計算処理モジュールに実行させる。
【００１０】
なお、本発明において、「部」や「手段」、「装置」、「システム」とは、単に物理的手段を意味するものではなく、その「部」や「手段」、「装置」、「システム」が有する機能をソフトウェアによって実現する場合も含む。また、１つの「部」や「手段」、「装置」、「システム」が有する機能が２つ以上の物理的手段や装置により実現されても、２つ以上の「部」や「手段」、「装置」、「システム」の機能が１つの物理的手段や装置により実現されても良い。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施形態に係る情報処理装置の構成例を示すブロック図である。
【図２】特徴点検出処理の具体例を説明するための図である。
【図３】特徴点検出処理及び記述子生成処理の具体例を説明するための図である。
【発明を実施するための形態】
【００１２】
以下に本発明の実施形態を説明する。以下の説明及び参照する図面の記載において、同一又は類似の構成には、それぞれ同一又は類似の符号が付されている。
【００１３】
本実施形態では、単眼カメラを用いた自己位置推定と全自動飛行動作を、地上機を必要としないオンボード処理で実現する、手のひらサイズの飛行ロボットである情報処理装置について説明する。なお、情報処理装置の実現方法は、本実施形態に係る手のひらサイズの飛行ロボットに限られるものではなく、本発明の要旨を逸脱しない範囲内において、他の様々な形で実施することができる。本実施形態はあらゆる点で単なる例示にすぎず、具体的構成やサイズなどについて限定的に解釈されるものではない。
【００１４】
（１  機能構成の概要）
本実施形態にかかる情報処理装置では、このようなオンボード処理を実現するために、大きく２つの工夫をすることができる。１つ目は、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）とＭＣＵ（Ｍｉｃｒｏ−Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）とを組合せて用いることにより、小型ながら強力な情報処理性能を持った電子回路を実現することである。２つ目は、自機の制御とミッションの遂行という２つの要求仕様をリソースの限られた手のひらサイズの飛行ロボットである情報処理装置上で実現するために、信号処理部分を中心に並列化及びカスケード化することにより、モジュール同士のメモリ転送のコストなどを極力小さく抑えた、バスレベルからソフトウェアを設計している点である。
【００１５】
図１に、本実施形態に係る飛行ロボットである情報処理装置１の機能構成の概要を示す機能ブロック図を示す。図１における情報処理装置１では、オンボード自己位置推定機能と、目標位置へのトラッキング機能とが実現されるものとする。図１に示すように、本実施形態に係る情報処理装置１は、イメージセンサ１０と、ＦＰＧＡ２０と、ＭＣＵ３０と、慣性計測装置（以下、ＩＭＵとも呼ぶ。）４０と、モータ５０とを含む。
【００１６】
イメージセンサ１０は、単眼カメラとして機能するセンサであり、一定のレートで撮像した画像フレームを出力する。イメージセンサ１０を実現可能なスペックは種々考えることができるが、ここでは、画像フレームはサイズが１６０ｐｉｘｅｌ×１２０ｐｉｘｅｌのカラーＹＵＶ４２２フォーマット、画像フレームの更新速度を３０ｆｐｓ（ｆｒａｍｅｓ  ｐｅｒ  ｓｅｃｏｎｄ）、動作周波数２５ＭＨｚのものを用いることができる。例えば、ＣＭＯＳカメラを用いることができる。
【００１７】
ＩＭＵ４０には、例えば３軸加速度センサ、３軸ジャイロセンサ、３軸コンパスセンサ（磁気センサ）を含むことができ、これらのセンサで検出された値を用いて、情報処理装置１の機体のロール、ピッチ、ヨー角度を計算すること（センサフュージョン）を可能とする。ＩＭＵ４０に含まれる各種センサには種々のセンサを用いることが考えられるが、例えば、３軸加速度センサには、Ｋｉｏｎｉｘ社のＫＸＲＢ５−２０５０を、３軸ジャイロセンサにはＳＴＭｉｃｒｏｅｌｅｃｔｒｏｎｉｃｓ社のＬＰＲ４１５０ＡＬとＬＹ３１００ＡＬＨの組合せを、３軸コンパスセンサにはＨｏｎｅｙＷｅｌｌ社のＨＭＣ５８８３Ｌを、それぞれ用いることができる。
【００１８】
モータ５０は、飛行ロボットである情報処理装置１を飛行させるための図示しないプロペラを回転させるためのものであり、例えば情報処理装置１が４つのプロペラを有するクアッドコプタである場合には、情報処理装置１は４つのモータを有する。モータには大きく分けてブラシ型とブラシレス型とがあり、モータ５０にはいずれを用いることもできるが、ここでは、ギアを使った減速機構を用いずにＫＶ値（電圧あたりの回転速度）の比較的小さなブラシレスモータを用いる。モータ５０として用いることのできるブラシレスモータは種々考えられるが、例えば、ｈｅｘＴｒｏｎｉｋ社製のブラシレスモータＨＸＭ２０００をモータ５０として用い、図示しない４インチのプロペラを直接駆動することが考えられる。
【００１９】
情報処理装置１に組まれる各構成のうち、ＦＰＧＡ２０とＭＣＵ３０とが、能動的に計算処理を行う計算モジュールである。なお、ＦＰＧＡ２０とＭＣＵ３０とは、物理的に異なる処理チップ（プロセッサ）として実現することもできるし、物理的に１つの処理チップ上に実現することもできる。
【００２０】
ここで、イメージセンサ１０から入力される画像フレームに対する処理を行う場合、画像フレームをＤＤＲＳＤＲＡＭ等のメモリに一時保存した上で、当該画像フレームに対して、複数の特徴点を検出する特徴点検出処理２３や各特徴点の記述子を生成する記述子生成処理２５（それぞれ後述）等を含む、必要な計算処理の大半をＭＣＵ３０で行うことも考えられる。しかしながら、画像フレームをメモリに記憶しようとすると、カメラ信号の同期を待つ処理などのために遅延が発生する。また、大半の処理を単一のプロセッサであるＭＣＵ３０上で実現しようとすることも、演算時間の遅延につながる。このような処理時間の遅延はリアルタイムで動作する必要のある飛行ロボットの実現において致命的である。
【００２１】
そこで本実施形態に係る情報処理装置１では、ＤＤＲＳＤＲＡＭへの画像フレームの保存処理を行わず、また、ＦＰＧＡ２０上で特徴点検出処理２３及び記述子生成処理２５を行う。
【００２２】
（２  ＦＰＧＡ２０及びＭＣＵ３０における処理）
（２．１  概要）
以下、ＦＰＧＡ２０及びＭＣＵ３０における処理の概要を説明する。イメージセンサ１０からの画像フレームはＦＰＧＡ２０の入力処理２１により一定のレート（ここでは３０ｆｐｓ）でストリーム入力される。ＦＰＧＡ２０は入力される各画像フレームに対して、複数の特徴点を検出する特徴点検出処理２３、及び各特徴点の記述子を生成する記述子生成処理２５を並列的に行う。ここで、本実施形態においては、特徴点検出処理２３にはＦＡＳＴアルゴリズムが用いられ、特徴点の記述子（以下、ＢＲＩＥＦ記述子とも呼ぶ。）の生成にはＢＲＩＥＦアルゴリズムが用いられる。本実施形態において、ＢＲＩＥＦ記述子は２５６ｂｙｔｅである。
【００２３】
次に、ＦＰＧＡ２０は、検出した特徴点の２次元イメージ座標上における座標と、特徴点の記述子とが含まれる特徴点情報を出力処理２７によりＭＣＵ３０が内蔵するＳＲＡＭへとＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送する。このとき、ＳＲＡＭ上にはリングバッファとして８Ｋｂｙｔｅ確保され、出力処理２７は、特徴点検出処理２３により特徴点が見つかったと判定され次第、ＦＰＧＡ２０によりすぐに行われる。ＦＰＧＡ２０が出力処理２７により出力する特徴点情報にはフレーム番号が含まれており、その特徴点が何枚目のフレームであるかをＭＣＵ３０が検出することができるようになっている。特徴点検出処理２３及び記述子生成処理２５の１フレーム分の処理が終わると、出力処理２７は全ての特徴点処理が終わった旨をＭＣＵ３０へと通知する。
【００２４】
ＭＣＵ３０のプロセスは、大きく分けて２つある。１つ目はタイマ割り込みによって周期的に呼び出される関数群である。ここではこのような処理をコントロールプロセスと呼ぶ。コントロールプロセスにおいてＭＣＵ３０は、加速度センサ、ジャイロセンサ、コンパスセンサを含むＩＭＵ４０から値を取得し、センサフュージョンによって姿勢角度を得るセンサフュージョン処理３１、及び、現在位置と目標位置とから計算された目標角度についてＰＩＤ（Ｐｒｏｐｏｒｔｉｏｎａｌ  Ｉｎｔｅｇｒａｌ  Ｄｅｒｉｖａｔｉｖｅ  Ｃｏｎｔｒｏｌｌｅｒ）制御を行う姿勢制御処理３３がこれに含まれる。
【００２５】
２つ目は、タイマ割り込みから抜けた状態の空き時間に実行される関数群であり、ＦＰＧＡ２０から転送された特徴点とその記述子とを記録する特徴点管理処理３７、過去の特徴点との対応関係を取る特徴点対応付け処理３５、当該対応関係及びＭＣＵ３０からの値に基づいて自己位置推定を行うバンドル調整処理３９が含まれる。
【００２６】
（２．２  特徴点検出処理２３及び記述子生成処理２５）
以下、本実施形態におけるＦＰＧＡ２０が行う特徴点検出処理２３及び記述子生成処理２５について説明する。本実施形態における特徴点検出処理２３及び記述子生成処理２５を、ここでは纏めて「ＣＳＦＢ（Ｃｏｎｃｕｒｒｅｎｔｌｙ  Ｓｔｒｅａｍｅｄ  ＦＡＳＴ  ａｎｄ  ＢＲＩＥＦ）と呼ぶ。ＣＳＦＢの特徴としては、以下４点を挙げることができる。
１．カメラの奥行方向や回転運動などもトラッキングできる。
２．リアルタイムで実行可能である（例えば、３０ｆｐｓ以上）。
３．画像フレームの生データを保存するための外部メモリを必要としない。
４．掛け算、割り算処理を行わないため、ＦＰＧＡ２０上にＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）リソースを必要としない。
【００２７】
以下、ＦＰＧＡ２０上で実行する処理について説明する。ＦＰＧＡ２０では、各プロセスはそれぞれに与えられたクロックに従って、互いに独立して動作しており、処理を並列化することによって、信号効率を大幅に向上させることが可能である。
【００２８】
前述のとおり、本実施形態に係るイメージセンサ１０はＹＵＶ４２２フォーマット、１６０×１２０ピクセルで、３０ｆｐｓのフレームレートで画像フレームを得ることができ、１ピクセル辺り１６ビット、２クロックが割当てられている。ＦＰＧＡ２０上ではＦＡＳＴアルゴリズム（特徴点検出処理２３）とＢＲＩＥＦアルゴリズム（記述子生成処理２５）とが同時に実行される。
【００２９】
まず、ＦＡＳＴアルゴリズム（特徴点検出処理２３）について、図２を参照しながら説明する。ＦＡＳＴアルゴリズムによる特徴点の検出方法は、対象ピクセル（Ｔａｒｇｅｔ  Ｐｏｉｎｔ。図２中「Ｃ」で表現されている。）の周囲１６ピクセル（Ｆａｓｔ  Ｓｃａｎ  Ｐｏｉｎｔ。図２中「Ｆ」で表現されている。）に対して、中心にある当該対象ピクセルとの明暗比較を行い、閾値以上明るいピクセル／暗いピクセルが周方向に連続している長さが予め定められた数（ここでは１０ピクセルとする。）以上に達している場合に、当該対象ピクセルが特徴点として検出される。
【００３０】
新しいピクセルの輝度情報は２クロックに１回のペースで８ビットで送られ（図２中Ｎｅｗｄａｔａ［７：０］）、８×８×８ｂｉｔｓの大きさのバッファＩｂｕｆ（ｌ）［ｊ］（０≦ｌ≦７、０≦ｊ≦７）に保存される。また、８個のブロックＲＡＭ（ＢＲＡＭ（ｌ）［ｍ］、０≦ｌ≦７、３≦ｍ≦ｈｐｉｘ−３）は、新しいピクセルデータの書込みと、過去のデータの読み出しとを行うが、これはＩｂｕｆにターゲットポイント周辺のピクセル情報を供給するために用いられる。その８個のブロックＲＡＭ（ＢＲＡＭ）は、水平同期信号（ＨＳＹＮＣ）の立ち上がりエッジのカウントに応じて、データの書き込みを行うか、データの読み出しを行うかの役割が変わる。
以上のプロセスを式で表現すると、以下のようになる。
【００３１】
【数１】
2015210677.tif 000003
【００３２】
【数２】
2015210677.tif 000004
【００３３】
【数３】
2015210677.tif 000005
【００３４】
【数４】
2015210677.tif 000006
ここで、「！ｌ」はｌではないことを意味し、「％８」は８で割った剰余を意味する。
【００３５】
このような、対象ピクセルが特徴点であるか否かを判定する処理を、図３に示すように、当該対象ピクセルの周囲である各Ｆａｓｔ  ｓｃａｎ  ｐｏｉｎｔに対して行う。Ｆａｓｔ  ｓｃａｎ  ｐｏｉｎｔが１６ピクセルある場合には、評価パターンは計３２個ある（１６ピクセルのそれぞれを開始点として、対象ピクセルよりも閾値以上明るいピクセルが１０個連続するパターン、対象ピクセルよりも閾値以上暗いピクセルが１０個連続するパターン。図３中ｆｂｐ［ｉ］及びｆｂｎ［ｉ］（０≦ｉ≦１５））。
【００３６】
このような特徴点判定処理は、オリジナルのＦＡＳＴアルゴリズムでは、特徴点の探索順を木構造を用いた機械学習により高速化している。しかしながら本実施形態においては、このような評価（特徴点であるか否かを評価するための演算）はＦＰＧＡ２０が、並列処理により全パターンについて評価する。これらの各パターンで特徴と判定された場合には評価値として正の値が与えられ、この前パターンの合計値が、当該対象ピクセルの特徴点としての評価値ｆｓｃｏｒｅ［ｃｙ］［ｃｘ］となる。
以上のプロセスを式で表現すると、以下のようになる。
【００３７】
【数５】
2015210677.tif 000007
【００３８】
【数６】
2015210677.tif 000008
【００３９】
【数７】
2015210677.tif 000009
【００４０】
【数８】
2015210677.tif 000010
【００４１】
【数９】
2015210677.tif 000011
【００４２】
検出された特徴点については、前述のとおり、ＢＲＩＥＦアルゴリズムにより記述子生成処理２５を行う。ＢＲＩＥＦアルゴリズムでは、ターゲットとなる対象ピクセルの周囲の点をランダムに２点抽出し、その明暗比較を行う処理を繰り返し、その結果を示すバイナリ列で特徴点を記述する記述子（ＢＲＩＥＦ記述子。図３中ｄｅｓｃ［ｉ］）とするものである。ここでは、抽出処理は１つの対象ピクセルに対して２５６回行うことにより、その結果を示す６４ｂｙｔｅの記述子が生成される。当該処理は、ＦＰＧＡ２０により並列に実行することができる。
【００４３】
なお、本実施形態においてＦＰＧＡ２０は特徴点の記述子生成処理２５を特徴点検出処理２３と同時に行うため、特徴点として検出された時点でＢＲＩＥＦ記述子も同時に得ることが可能である。これにより、外部メモリを使用することなく、ＦＰＧＡ２０はストリームデータである画像フレームから特徴点の検出と記述処理とを行うことが可能となっている。
以上のプロセスを式で表現すると、以下のようになる。
【００４４】
【数１０】
2015210677.tif 000012
【００４５】
【数１１】
2015210677.tif 000013
【００４６】
ここで、ｋ0〜ｋ3の組合せは、デスクトップコンピュータ上でランダムに選ばれた２５６個の組合せから、正解データと比較して最も性能の良い物を選んだ上で、当該組合せをＦＰＧＡ２０上に初期値としてハードウェアコーティングすることができる。
【００４７】
ＦＰＧＡ２０は、２５６ビットとして得られたＢＲＩＥＦ記述子（ＢＲＩＥＦバイナリ列）は、特徴点検出処理２３（ＦＡＳＴアルゴリズム）によって特徴点として判定される場合、すなわちｆｓｃｏｒｅ［ｃｙ］［ｃｘ］が０でない場合に、出力処理２７（データ転送プロセス）としてＭＣＵ３０へのデータ転送を行う。出力処理２７に送られる特徴点情報には、２バイトの特徴点座標、３２バイトのＢＲＩＥＦ記述子、１バイトのインデックスとｆｓｃｏｒｅを含むことができる。
【００４８】
特徴点情報は、前述のとおり、出力処理２７によりＭＣＵ３０のＤＭＡ転送機能を用いてＭＣＵ３０へと転送される。これにより、ＭＣＵ３０はＣＰＵリソースを全く使用することなく、特徴点の座標や記述子の情報を得ることが可能である。
【００４９】
なお、上述の手法では、ＦＰＧＡ２０のデータ転送は、ＭＣＵ３０のデータ書き込み指令、及びデータ読み出し指令とは無関係に実行されるため、垂直同期信号と同期するための待ち合わせ時間をゼロとすることが可能である。
【００５０】
（２．３  ＭＣＵ３０における処理）
ＭＣＵ３０は、先述の通りＦＰＧＡ２０から特徴点情報を受け取る。その中には、画像平面における特徴点の座標、及びＢＲＩＥＦ記述子が含まれる。また、タイマ割り込みによって周期的に呼び出されるコントロールプロセスの中において、ＭＣＵ３０はセンサフュージョン処理３１によって回転姿勢を得る。また、ＭＣＵはＦＰＧＡ２０から得られた特徴点を管理し（特徴点管理処理３７）、対応関係の記述を行った後（特徴点対応付け処理３５）、自己位置推定を行う（バンドル調整処理３９）。
【００５１】
センサフュージョン処理３１としては、コンプリメンタリフィルタ、拡張カルマンフィルタ、クォータニオンベースの勾配法を用いるフィルダ等があり、いずれを用いることも考えられる。本実施形態では特に、Ｍａｄｇｗｉｃｋらによって提案されたクォータニオンベースの勾配法を用いることが考えられる。
【００５２】
特徴点管理処理３７について説明する。各特徴点は常に画像フレームに登場するものもあれば、消えてしまう（検出できなくなる）ものもある。特に、飛行ロボット上に実装するカメラ（イメージセンサ１０）から撮影する画像フレームで得られる特徴点には、飛行により生じる振動により明滅を繰り返すものも多い。そこで、一時的に消えてしまった特徴点も、のちの画像フレームで再び登場した場合には、それを認識する必要が生じる。
【００５３】
しかしながら、消えてしまった特徴点をいつまでも記憶すると、新しく登場する特徴点が随時加わることによりメモリ使用量が単調増加することとなるため、限られたメモリリソースで実装することができない。そこで、本実施形態では、現時点までに管理している特徴点と、最新の画像フレームから得られた特徴点との対応関係を取った上で（特徴点対応付け処理３５）、その対応付けに失敗したものに対してはペナルティを与え、ある一定のスコアに達した特徴点についてはメモリ上から削除する。その上で、記憶している特徴点のデータ量がメモリ上限に達した場合には、新しい特徴点の追加を行わないことで、データがあふれることを防ぐ。
【００５４】
各特徴点の初期化は、同じ特徴点が写った複数のフレームを用いて行う。２フレームを用いてカメラの回転、並進を求める方法として８点法や５点法と呼ばれるものがあるが、そういった計算をＭＣＵ３０上でやるには非常に計算コストが大きくなるため、本実施形態では異なる手法を用いる。本実施形態では、地面形状が平面であるという仮定を用いた上で、特徴点座標についてのバンドル調整処理３９を行うことにより、徐々に特徴点の実際の３次元座標に近づける処理により、特徴点の初期化を行う。
【００５５】
地上形状が平面であるという仮定を入れた場合、現在の自己位置が既知の元で特徴点座標を求めることが可能となる。これを初期値としてバンドル調整を数フレームにわたって行うことで、実際の特徴点の３次元座標を計算することが可能となる。
【００５６】
最後に、自己位置の初期化と推定手法について説明する。自己位置推定の開始地点として、下向きカメラを使って平面形状の地面の上のある高さを飛行している状態を想定する。この初期高さについては、超音波センサなどを用いて予め画像座標系のスケールと、実座標のスケールとを合わせることができる。これを用いて平面上に映る特徴点座標を決定する。その後のフレームについては、初期化を終えた特徴点を用いて自己位置についてのバンドル調整式から更新する。なお、新しく登場した特徴点については自己位置の推定には寄与しない。
【００５７】
（３  本実施形態に係る効果）
以上説明した本実施形態に係る飛行ロボットである情報処理装置１では、オンボード（限られたリソース）かつリアルタイムで自己位置推定を行って飛行することが可能となる。特に、情報処理装置１は、特徴点の検出及び記述処理をＦＰＧＡ２０で行っている。ＦＰＧＡ２０はクロック単位での制御により、画像フレームの入力に合わせて一定速度で処理を実行可能、特徴点の検出や識別子生成に係る処理を並列的に実行することが可能、消費電力が低い、等の特徴を有するため、リアルタイムでの自己位置推定に顕著に貢献することができる。
【符号の説明】
【００５８】
１        ：情報処理装置
１０      ：イメージセンサ
２０      ：ＦＰＧＡ
２１      ：入力処理
２３      ：特徴点検出処理
２５      ：記述子生成処理
２７      ：出力処理
３１      ：センサフュージョン処理
３３      ：姿勢制御処理
３５      ：特徴点対応付け処理
３７      ：特徴点管理処理
３９      ：バンドル調整処理
５０      ：モータ
【図１】
2015210677.tif 000014
【図２】
2015210677.tif 000015
【図３】
2015210677.tif 000016