【文献】
此村 領,外1名,オンボード処理・超小型クアッドロータロボットのハードウェア・ソフトウェアの設計、製作,2013年度 人工知能学会全国大会(第27回)論文集,日本,社団法人人工知能学会,2013年 6月 7日,第1頁−第4頁
【文献】
末吉 敏則,低価格化,高速化,高集積化,低消費電力化を達成するFPGA/PLDデバイス,日経エレクトロニクス,日本,日経BP社,1998年 5月18日,第716号,第168頁−第176頁,ISSN0385−1680
(58)【調査した分野】(Int.Cl.,DB名)
前記第1の計算処理モジュールは、前記記述処理において、BRIEF(Binary Robust Independent Elementary Features)アルゴリズムにより、前記複数の特徴点の特徴を記述する前記複数の記述子を生成する、
請求項1乃至請求項3のいずれか1項記載の情報処理装置。
【発明を実施するための形態】
【0012】
以下に本発明の実施形態を説明する。以下の説明及び参照する図面の記載において、同一又は類似の構成には、それぞれ同一又は類似の符号が付されている。
【0013】
本実施形態では、単眼カメラを用いた自己位置推定と全自動飛行動作を、地上機を必要としないオンボード処理で実現する、手のひらサイズの飛行ロボットである情報処理装置について説明する。なお、情報処理装置の実現方法は、本実施形態に係る手のひらサイズの飛行ロボットに限られるものではなく、本発明の要旨を逸脱しない範囲内において、他の様々な形で実施することができる。本実施形態はあらゆる点で単なる例示にすぎず、具体的構成やサイズなどについて限定的に解釈されるものではない。
【0014】
(1 機能構成の概要)
本実施形態にかかる情報処理装置では、このようなオンボード処理を実現するために、大きく2つの工夫をすることができる。1つ目は、FPGA(Field−Programmable Gate Array)とMCU(Micro−Control Unit)とを組合せて用いることにより、小型ながら強力な情報処理性能を持った電子回路を実現することである。2つ目は、自機の制御とミッションの遂行という2つの要求仕様をリソースの限られた手のひらサイズの飛行ロボットである情報処理装置上で実現するために、信号処理部分を中心に並列化及びカスケード化することにより、モジュール同士のメモリ転送のコストなどを極力小さく抑えた、バスレベルからソフトウェアを設計している点である。
【0015】
図1に、本実施形態に係る飛行ロボットである情報処理装置1の機能構成の概要を示す機能ブロック図を示す。
図1における情報処理装置1では、オンボード自己位置推定機能と、目標位置へのトラッキング機能とが実現されるものとする。
図1に示すように、本実施形態に係る情報処理装置1は、イメージセンサ10と、FPGA20と、MCU30と、慣性計測装置(以下、IMUとも呼ぶ。)40と、モータ50とを含む。
【0016】
イメージセンサ10は、単眼カメラとして機能するセンサであり、一定のレートで撮像した画像フレームを出力する。イメージセンサ10を実現可能なスペックは種々考えることができるが、ここでは、画像フレームはサイズが160pixel×120pixelのカラーYUV422フォーマット、画像フレームの更新速度を30fps(frames per second)、動作周波数25MHzのものを用いることができる。例えば、CMOSカメラを用いることができる。
【0017】
IMU40には、例えば3軸加速度センサ、3軸ジャイロセンサ、3軸コンパスセンサ(磁気センサ)を含むことができ、これらのセンサで検出された値を用いて、情報処理装置1の機体のロール、ピッチ、ヨー角度を計算すること(センサフュージョン)を可能とする。IMU40に含まれる各種センサには種々のセンサを用いることが考えられるが、例えば、3軸加速度センサには、Kionix社のKXRB5−2050を、3軸ジャイロセンサにはSTMicroelectronics社のLPR4150ALとLY3100ALHの組合せを、3軸コンパスセンサにはHoneyWell社のHMC5883Lを、それぞれ用いることができる。
【0018】
モータ50は、飛行ロボットである情報処理装置1を飛行させるための図示しないプロペラを回転させるためのものであり、例えば情報処理装置1が4つのプロペラを有するクアッドコプタである場合には、情報処理装置1は4つのモータを有する。モータには大きく分けてブラシ型とブラシレス型とがあり、モータ50にはいずれを用いることもできるが、ここでは、ギアを使った減速機構を用いずにKV値(電圧あたりの回転速度)の比較的小さなブラシレスモータを用いる。モータ50として用いることのできるブラシレスモータは種々考えられるが、例えば、hexTronik社製のブラシレスモータHXM2000をモータ50として用い、図示しない4インチのプロペラを直接駆動することが考えられる。
【0019】
情報処理装置1に組まれる各構成のうち、FPGA20とMCU30とが、能動的に計算処理を行う計算モジュールである。なお、FPGA20とMCU30とは、物理的に異なる処理チップ(プロセッサ)として実現することもできるし、物理的に1つの処理チップ上に実現することもできる。
【0020】
ここで、イメージセンサ10から入力される画像フレームに対する処理を行う場合、画像フレームをDDRSDRAM等のメモリに一時保存した上で、当該画像フレームに対して、複数の特徴点を検出する特徴点検出処理23や各特徴点の記述子を生成する記述子生成処理25(それぞれ後述)等を含む、必要な計算処理の大半をMCU30で行うことも考えられる。しかしながら、画像フレームをメモリに記憶しようとすると、カメラ信号の同期を待つ処理などのために遅延が発生する。また、大半の処理を単一のプロセッサであるMCU30上で実現しようとすることも、演算時間の遅延につながる。このような処理時間の遅延はリアルタイムで動作する必要のある飛行ロボットの実現において致命的である。
【0021】
そこで本実施形態に係る情報処理装置1では、DDRSDRAMへの画像フレームの保存処理を行わず、また、FPGA20上で特徴点検出処理23及び記述子生成処理25を行う。
【0022】
(2 FPGA20及びMCU30における処理)
(2.1 概要)
以下、FPGA20及びMCU30における処理の概要を説明する。イメージセンサ10からの画像フレームはFPGA20の入力処理21により一定のレート(ここでは30fps)でストリーム入力される。FPGA20は入力される各画像フレームに対して、複数の特徴点を検出する特徴点検出処理23、及び各特徴点の記述子を生成する記述子生成処理25を並列的に行う。ここで、本実施形態においては、特徴点検出処理23にはFASTアルゴリズムが用いられ、特徴点の記述子(以下、BRIEF記述子とも呼ぶ。)の生成にはBRIEFアルゴリズムが用いられる。本実施形態において、BRIEF記述子は256byteである。
【0023】
次に、FPGA20は、検出した特徴点の2次元イメージ座標上における座標と、特徴点の記述子とが含まれる特徴点情報を出力処理27によりMCU30が内蔵するSRAMへとDMA(Direct Memory Access)転送する。このとき、SRAM上にはリングバッファとして8Kbyte確保され、出力処理27は、特徴点検出処理23により特徴点が見つかったと判定され次第、FPGA20によりすぐに行われる。FPGA20が出力処理27により出力する特徴点情報にはフレーム番号が含まれており、その特徴点が何枚目のフレームであるかをMCU30が検出することができるようになっている。特徴点検出処理23及び記述子生成処理25の1フレーム分の処理が終わると、出力処理27は全ての特徴点処理が終わった旨をMCU30へと通知する。
【0024】
MCU30のプロセスは、大きく分けて2つある。1つ目はタイマ割り込みによって周期的に呼び出される関数群である。ここではこのような処理をコントロールプロセスと呼ぶ。コントロールプロセスにおいてMCU30は、加速度センサ、ジャイロセンサ、コンパスセンサを含むIMU40から値を取得し、センサフュージョンによって姿勢角度を得るセンサフュージョン処理31、及び、現在位置と目標位置とから計算された目標角度についてPID(Proportional Integral Derivative Controller)制御を行う姿勢制御処理33がこれに含まれる。
【0025】
2つ目は、タイマ割り込みから抜けた状態の空き時間に実行される関数群であり、FPGA20から転送された特徴点とその記述子とを記録する特徴点管理処理37、過去の特徴点との対応関係を取る特徴点対応付け処理35、当該対応関係及びMCU30からの値に基づいて自己位置推定を行うバンドル調整処理39が含まれる。
【0026】
(2.2 特徴点検出処理23及び記述子生成処理25)
以下、本実施形態におけるFPGA20が行う特徴点検出処理23及び記述子生成処理25について説明する。本実施形態における特徴点検出処理23及び記述子生成処理25を、ここでは纏めて「CSFB(Concurrently Streamed FAST and BRIEF)と呼ぶ。CSFBの特徴としては、以下4点を挙げることができる。
1.カメラの奥行方向や回転運動などもトラッキングできる。
2.リアルタイムで実行可能である(例えば、30fps以上)。
3.画像フレームの生データを保存するための外部メモリを必要としない。
4.掛け算、割り算処理を行わないため、FPGA20上にDSP(Digital Signal Processor)リソースを必要としない。
【0027】
以下、FPGA20上で実行する処理について説明する。FPGA20では、各プロセスはそれぞれに与えられたクロックに従って、互いに独立して動作しており、処理を並列化することによって、信号効率を大幅に向上させることが可能である。
【0028】
前述のとおり、本実施形態に係るイメージセンサ10はYUV422フォーマット、160×120ピクセルで、30fpsのフレームレートで画像フレームを得ることができ、1ピクセル辺り16ビット、2クロックが割当てられている。FPGA20上ではFASTアルゴリズム(特徴点検出処理23)とBRIEFアルゴリズム(記述子生成処理25)とが同時に実行される。
【0029】
まず、FASTアルゴリズム(特徴点検出処理23)について、
図2を参照しながら説明する。FASTアルゴリズムによる特徴点の検出方法は、対象ピクセル(Target Point。
図2中「C」で表現されている。)の周囲16ピクセル(Fast Scan Point。
図2中「F」で表現されている。)に対して、中心にある当該対象ピクセルとの明暗比較を行い、閾値以上明るいピクセル/暗いピクセルが周方向に連続している長さが予め定められた数(ここでは10ピクセルとする。)以上に達している場合に、当該対象ピクセルが特徴点として検出される。
【0030】
新しいピクセルの輝度情報は2クロックに1回のペースで8ビットで送られ(
図2中Newdata[7:0])、8×8×8bitsの大きさのバッファIbuf(l)[j](0≦l≦7、0≦j≦7)に保存される。また、8個のブロックRAM(BRAM(l)[m]、0≦l≦7、3≦m≦hpix−3)は、新しいピクセルデータの書込みと、過去のデータの読み出しとを行うが、これはIbufにターゲットポイント周辺のピクセル情報を供給するために用いられる。その8個のブロックRAM(BRAM)は、水平同期信号(HSYNC)の立ち上がりエッジのカウントに応じて、データの書き込みを行うか、データの読み出しを行うかの役割が変わる。
以上のプロセスを式で表現すると、以下のようになる。
【0034】
【数4】
ここで、「!l」はlではないことを意味し、「%8」は8で割った剰余を意味する。
【0035】
このような、対象ピクセルが特徴点であるか否かを判定する処理を、
図3に示すように、当該対象ピクセルの周囲である各Fast scan pointに対して行う。Fast scan pointが16ピクセルある場合には、評価パターンは計32個ある(16ピクセルのそれぞれを開始点として、対象ピクセルよりも閾値以上明るいピクセルが10個連続するパターン、対象ピクセルよりも閾値以上暗いピクセルが10個連続するパターン。
図3中fbp[i]及びfbn[i](0≦i≦15))。
【0036】
このような特徴点判定処理は、オリジナルのFASTアルゴリズムでは、特徴点の探索順を木構造を用いた機械学習により高速化している。しかしながら本実施形態においては、このような評価(特徴点であるか否かを評価するための演算)はFPGA20が、並列処理により全パターンについて評価する。これらの各パターンで特徴と判定された場合には評価値として正の値が与えられ、この前パターンの合計値が、当該対象ピクセルの特徴点としての評価値fscore[cy][cx]となる。
以上のプロセスを式で表現すると、以下のようになる。
【0042】
検出された特徴点については、前述のとおり、BRIEFアルゴリズムにより記述子生成処理25を行う。BRIEFアルゴリズムでは、ターゲットとなる対象ピクセルの周囲の点をランダムに2点抽出し、その明暗比較を行う処理を繰り返し、その結果を示すバイナリ列で特徴点を記述する記述子(BRIEF記述子。
図3中desc[i])とするものである。ここでは、抽出処理は1つの対象ピクセルに対して256回行うことにより、その結果を示す64byteの記述子が生成される。当該処理は、FPGA20により並列に実行することができる。
【0043】
なお、本実施形態においてFPGA20は特徴点の記述子生成処理25を特徴点検出処理23と同時に行うため、特徴点として検出された時点でBRIEF記述子も同時に得ることが可能である。これにより、外部メモリを使用することなく、FPGA20はストリームデータである画像フレームから特徴点の検出と記述処理とを行うことが可能となっている。
以上のプロセスを式で表現すると、以下のようになる。
【0046】
ここで、k
0〜k
3の組合せは、デスクトップコンピュータ上でランダムに選ばれた256個の組合せから、正解データと比較して最も性能の良い物を選んだ上で、当該組合せをFPGA20上に初期値としてハードウェアコーティングすることができる。
【0047】
FPGA20は、256ビットとして得られたBRIEF記述子(BRIEFバイナリ列)は、特徴点検出処理23(FASTアルゴリズム)によって特徴点として判定される場合、すなわちfscore[cy][cx]が0でない場合に、出力処理27(データ転送プロセス)としてMCU30へのデータ転送を行う。出力処理27に送られる特徴点情報には、2バイトの特徴点座標、32バイトのBRIEF記述子、1バイトのインデックスとfscoreを含むことができる。
【0048】
特徴点情報は、前述のとおり、出力処理27によりMCU30のDMA転送機能を用いてMCU30へと転送される。これにより、MCU30はCPUリソースを全く使用することなく、特徴点の座標や記述子の情報を得ることが可能である。
【0049】
なお、上述の手法では、FPGA20のデータ転送は、MCU30のデータ書き込み指令、及びデータ読み出し指令とは無関係に実行されるため、垂直同期信号と同期するための待ち合わせ時間をゼロとすることが可能である。
【0050】
(2.3 MCU30における処理)
MCU30は、先述の通りFPGA20から特徴点情報を受け取る。その中には、画像平面における特徴点の座標、及びBRIEF記述子が含まれる。また、タイマ割り込みによって周期的に呼び出されるコントロールプロセスの中において、MCU30はセンサフュージョン処理31によって回転姿勢を得る。また、MCUはFPGA20から得られた特徴点を管理し(特徴点管理処理37)、対応関係の記述を行った後(特徴点対応付け処理35)、自己位置推定を行う(バンドル調整処理39)。
【0051】
センサフュージョン処理31としては、コンプリメンタリフィルタ、拡張カルマンフィルタ、クォータニオンベースの勾配法を用いるフィルダ等があり、いずれを用いることも考えられる。本実施形態では特に、Madgwickらによって提案されたクォータニオンベースの勾配法を用いることが考えられる。
【0052】
特徴点管理処理37について説明する。各特徴点は常に画像フレームに登場するものもあれば、消えてしまう(検出できなくなる)ものもある。特に、飛行ロボット上に実装するカメラ(イメージセンサ10)から撮影する画像フレームで得られる特徴点には、飛行により生じる振動により明滅を繰り返すものも多い。そこで、一時的に消えてしまった特徴点も、のちの画像フレームで再び登場した場合には、それを認識する必要が生じる。
【0053】
しかしながら、消えてしまった特徴点をいつまでも記憶すると、新しく登場する特徴点が随時加わることによりメモリ使用量が単調増加することとなるため、限られたメモリリソースで実装することができない。そこで、本実施形態では、現時点までに管理している特徴点と、最新の画像フレームから得られた特徴点との対応関係を取った上で(特徴点対応付け処理35)、その対応付けに失敗したものに対してはペナルティを与え、ある一定のスコアに達した特徴点についてはメモリ上から削除する。その上で、記憶している特徴点のデータ量がメモリ上限に達した場合には、新しい特徴点の追加を行わないことで、データがあふれることを防ぐ。
【0054】
各特徴点の初期化は、同じ特徴点が写った複数のフレームを用いて行う。2フレームを用いてカメラの回転、並進を求める方法として8点法や5点法と呼ばれるものがあるが、そういった計算をMCU30上でやるには非常に計算コストが大きくなるため、本実施形態では異なる手法を用いる。本実施形態では、地面形状が平面であるという仮定を用いた上で、特徴点座標についてのバンドル調整処理39を行うことにより、徐々に特徴点の実際の3次元座標に近づける処理により、特徴点の初期化を行う。
【0055】
地上形状が平面であるという仮定を入れた場合、現在の自己位置が既知の元で特徴点座標を求めることが可能となる。これを初期値としてバンドル調整を数フレームにわたって行うことで、実際の特徴点の3次元座標を計算することが可能となる。
【0056】
最後に、自己位置の初期化と推定手法について説明する。自己位置推定の開始地点として、下向きカメラを使って平面形状の地面の上のある高さを飛行している状態を想定する。この初期高さについては、超音波センサなどを用いて予め画像座標系のスケールと、実座標のスケールとを合わせることができる。これを用いて平面上に映る特徴点座標を決定する。その後のフレームについては、初期化を終えた特徴点を用いて自己位置についてのバンドル調整式から更新する。なお、新しく登場した特徴点については自己位置の推定には寄与しない。
【0057】
(3 本実施形態に係る効果)
以上説明した本実施形態に係る飛行ロボットである情報処理装置1では、オンボード(限られたリソース)かつリアルタイムで自己位置推定を行って飛行することが可能となる。特に、情報処理装置1は、特徴点の検出及び記述処理をFPGA20で行っている。FPGA20はクロック単位での制御により、画像フレームの入力に合わせて一定速度で処理を実行可能、特徴点の検出や識別子生成に係る処理を並列的に実行することが可能、消費電力が低い、等の特徴を有するため、リアルタイムでの自己位置推定に顕著に貢献することができる。