2011/04/14

Android3.0向けのファイラ開発中

Android3.0になって、画面サイズ(解像度、物理的な大きさ)が大きくなりました。
Gmailのアプリも、携帯とタブレットで表示できる項目やレイアウトがかなり異なっています。
IS03でのGmail

XOOMでのGmail

私もXOOMに色々とアプリを入れましたが、大画面に対応しているアプリはまだ少ない状態です。
ファイル管理ソフトで大画面対応のものがなかったので、自分で作ることにしました。
とりあえずフォルダのツリー表示機能までは作成しました。
あとはフォルダのサムネイル表示とメニュー等をつければそこそこ動くと思います。

画面は開発中のものです
GWあけぐらいには、フリーアプリとしてマーケットに公開する予定です。
ではまた。

2011/04/08

Motorola XOOM(au版)を入手

Androidのタブレットをずーっと待っていましたが、
本日、Android3.0搭載のXOOMを手に入れました。



 同梱されているのは、ACアダプタと日本語でかかれたクイックスターとガイド、
あとセーフティガイドでした。通信ケーブル系は含まれていませんでした。

北米版のXOOMは英語とフランス語だけのようですが、au版は多言語に対応しています。
もちろん日本語を選択しました。



インストールされているアプリは標準のものだけでした。好きなのを入れてね、ということなのでしょう。
ブラウザやメールがきびきび動くのを確認したあと、早速デバッグモードにしてubuntuにつないでみました。

認識しない。。。。

IS03をつないだときと同じように、Android DeveloperのUsing Hardware Devicesを参考にして、/etc/udev/rules.d/51-android.rulesファイルに

SUBSYSTEM=="usb", SYSFS{idVendor}=="22b8", MODE="0666"

と書き込んで、adbを再起動させたら認識してくれました。

無事USBデバッグが出きるようになったので、XOOMのカメラの解像度を調べてみました。

 1. 176x144
 2. 320x240
 3. 352x288
 4. 480x480
 5. 640x480
 6. 704x576
 7. 720x408
 8. 720x480
 9. 720x576
10. 768x432
11. 800x448
12. 1280x720
13. 1920x1088

サポートしている数は13種類。結構ありますね。

XOOMにはGPSの他、加速度センサー、磁気センサー、照度センサー、ジャイロセンサー、気圧センサーと、色々とついているようです。
今後はセンサーを使ったアプリも作ってみたいです。

ではまた。

2011/04/03

Nintendo 3DSのARカードを認識させる

Youtubeに3DSのARゲームズのプレイ動画が載っていました。
ARゲームズは、ARカードをテーブルなどの上において、それを3DSで撮影して遊ぶものです。

面白そうだったので、OpenCVとWebカメラを使って真似してみようと思いました。

まずはARカードを任天堂のサポートサイトからダウンロード。6MBのPDFでした。
「カラープリンタで印刷してください」とPDFに記載されていましたが、我が家にはカラープリンタが無いのでセブンイレブンのネットプリントで印刷。ひとまずA4とA3のサイズで印刷しておきました。

ARゲームズ風のものを作るには、いろいろと必要な処理がありそうですが、
まずは撮影した画像からARカードの位置と中身を検出することからはじめます。

処理の流れ
1.テンプレートの画像(ARカード6枚分)から、SURF特徴量を計算してどこかに保存しておく
2.撮影した画像から四角形を検索。小さすぎる四角形は省いてしまう
3.検出した四角形(たいていは台形になっている)を、cvWarpPerspectiveを使用して長方形に投影する。
4.投影後のARカードの中身のSURF特徴量を計算。
5.6枚のテンプレート画像のSURF特徴量と比較して、一致するものが多いテンプレート画像を選ぶ。
6.画面右上に、テンプレート画像を表示する。



四角形を検出するところなどは、QRコード検出器とほとんど同じだったのでそれを再利用しました。
SURF特徴量の部分は、サンプルのfind_obj.cppを参考(というかほぼコピペ)にしました。

画像から四角形を検出するのは15ms程度でできるようなのですが、SURF特徴量の検出と比較の処理で60ms程度かかってしまいます。

ただ、一度ARカードを判別してしまえばあとはそのARカードの位置を追跡するだけなので、
SURF特徴量の処理は毎回行わなくてもよさそうです。10フレームごとでもよいかもしれません。

あとはcvFindExtrinsicCameraParams2とcvProjectPoints2を使って回転ベクトルと移動ベクトルを算出できれば、ほかの物体をARカード上に表示することもできる・・・かな?

ではまた。

#2011-11-26 追記
使ってない関数の削除・エラー処理追加。
ソースは別館に置いてあります。(20111125_ar.zip)