Open Embedded Software Foundation 今村 謙之
日本Androidの会 出村 成和

AndroidをBeableBoardに移植

 AndroidをBeagleBoardに実装するために、Androidのソースコードを取得してBeagleBoard用にコンパイルします。パソコンでは通常、利用する機種上でコンパイルすれば実行コードが作られますが、組み込み分野ではターゲットとなる機種上で開発できない場合がほとんどです。そのため、別の機器でコンパイルする「クロスコンパイル」を実施します。

 具体的には、OESF(Open Embedded Software Foundation、文末の囲み記事「組み込み向けAndroidを普及させるOESF」参照)が一般公開している組み込み向けAndroidディストリビューションである「Embedded Master」をベースに、バージョン管理システムの「git」(ギット)を使ってソースコードを取得。LinuxディストリビューションのUbuntu上でクロスコンパイル環境を構築します。その上で、Androidにおけるデバイスドライバ開発や既存ライブラリのポーティングを実施します(図6)。これらを通して、Linuxドライバやライブラリの開発技術が習得できます。ドライバの開発を通してLinuxカーネルの中身に関する知識やカーネルをデバッグするための知識を、ライブラリの開発を通してオープンソースソフトやベンダーの公開するライブラリをターゲットプラットフォームにポーティングするための知識を得られます。

図6●AndroidをBeagleBoardに移植する手順
[画像のクリックで拡大表示]

 実際に、OESFの活動で最初にセットトップボックスを試作した際には、BeagleBoardを使って開発しました。これらの技術は、「明日から現場で活用できる技術」といっても過言ではありません。

拡張現実感アプリの開発作業

 最後に、ここで開発する拡張現実感アプリケーションについて説明します。

 本連載では、Android上の画像処理技術ライブラリを利用して画像認識を行い、その結果に基づいて、3Dモデリングに何らかのアクションを与えて表示するAndroidのサンプルアプリケーションを作成します。画像認識には、画像処理ライブラリである「OpenCV」を利用し3Dモデリングには、Androidに標準で組み込まれている3Dコンピュータグラフィックス用APIである「OpenGL/ES」を使います。

 こうした技術は、「アプリケーションのもので、組み込みLinuxには関係ないのでは」と思われるかもしれませんが、違います。ちょっと乱暴にいうと、拡張現実感に関する技術は、各種センサーによって得られるアナログデータを扱うものです。そして、これを実現するには「センサーを取り付けるための電子回路技術」や「アナログデータを解析しデジタルデータ化するためライブラリ」、「アプリケーションで利用できる形に出力するライブラリ」と多層に渡って技術が必要とされます。例えば、ボードに超音波センサーを取り付けて「距離測定」の機能を追加するといったことです。取り付けるときに、駆動させるための電源回路やデータを取り出すための増幅回路などの技術がなければ取り付けられません。

 そのため、アプリケーションを開発しない方でもかかわる可能性が非常に高いのです。実際に、Androidに搭載されているセンサーは、表1のように多層に渡り、実装されています。

表1●Androidに搭載されているセンサーとライブラリ
[画像のクリックで拡大表示]

 例えば、顔認識をするフレームワーク「FaceDetector」の場合、センサーとしてはカメラを利用するため、カメラデバイスの電子回路を取り付けます。そのドライバは、カメラデバイスから取得したデータを画像として扱えるデータに変換します。その上にあるライブラリは、ドライバから取得した画像データを画像解析し、顔を抽出。さらにその上のアプリケーションフレームワークは、Androidアプリケーション開発者が開発しやすいように、画像をサムネイル表示するなどAndroidの流儀にのっとったAPIを規定します。

この先は会員の登録が必要です。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら