カレンダー

10月 │2017年11月│ 12月
- - - 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 27 28 29 30 - -

 プロフィール

はしもと

Author:はしもと
ユーザインタフェース系のお仕事をしてます.関心領域は画像処理,拡張現実感,ヒューマンコンピュータインタラクション,エンタテインメントコンピューティングあたり.モノ書きもやってます.

 工学ナビ

工学ナビは工学系の技術のチュートリアルを扱うサイトです.

 作ったもの

 Twitter

 

 天気予報


 ブログ内検索

 カテゴリー

最新コメント

 RSSフィード

 リンク

このブログをリンクに追加する




工学ナビの中の人 はしもとのブログです. いろんなコトを研究的,工学的な視点で見つめます.
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

続・ゲームボーイアドバンスSPにタッチスクリーンを搭載してみた
前回の続き.

Arduino Pro Mini 328 3.3V 8MHzを使って組みなおしました.
今回は電池は使わずにGBA本体から電力供給してます.
タッチスクリーンも本体の中に埋め込んでみました.

GBA_Arduino_mini_01.jpg
GBA_Arduino_mini_02.jpg

ディスプレイについてる化粧板と例のタッチスクリーンの厚さがほぼ同じで,
大きさもすっぽり入るサイズです.こうもジャストサイズだと気持ちがいいです.

GBA_Arduino_mini_04.jpg

肝心のタッチパネルの引き出し線は,本体上面から出しました.
マイコンを含め,完全にGBA内部に隠蔽することは技術的に可能だと思いますが,
大変なのでこれは Future work ということで.

GBA_Arduino_mini_03.jpg

Arduinoによるプロトタイピングができるようにしておいたほうが面白いので,
本体上面にミニブレッドボードを2個つけました.これで他のセンサをつけて
GBAと連携させることができます.

GBA+Arduinoという遊びはまだいろいろできそうです.

# 最近Arduinoのタッチシールドを手に入れたんですが,
# なんだかGBAいじりのほうが楽しくなってきてしまいました.


ゲームボーイアドバンスSPにタッチスクリーンを搭載してみた
最近のプライベートの研究成果です.
GBA-SPにタッチスクリーンをつけて,スタイラスで文字を書いてみました.
タッチスクリーンの読み取りにはArduino使ってます.
いやぁーArduinoって本当にいいものですね!




タッチスクリーンはスイッチサイエンスさんで入手しました.
DSLiteに使われているものと同型らしいのですが,1,100円は破格です.
Arduinoのプログラムと回路は建築発明工作ゼミさんのをそのまま流用しました.

建築発明工作ゼミ2008: Arduino タッチパネル(4線式)4-wire touch panel

建築発明工作ゼミさんの記事は以前から把握してて,やろうやろうと思ってはいたものの,
いろいろあってずっと放置してました.で,ある日Twitterを眺めてたら
_kzrさんがタッチスクリーンを試してみた旨をつぶやいてたので,それを見て
「これはやらねばー」と再発火して,今回こういうものを作るに至りました.

最初は,DSの上画面にタッチスクリーンを取り付けて,上下ダブルタッチスクリーンに
することも考えたんですが,DSのプログラミングをやったことがないのに加えて,
I/O関係が面倒そうだったのでやめました.GBAについてはある程度ノウハウ
持ってたので割とすぐに実行に移せました.

GBAはシリアル通信ができるので,いろいろなハードウェアと相性がいいです.
昔は,GPSユニットと接続したりMIDI機器と接続したりなんてことがよくやられてましたね.
今ならArduinoの入出力端末として使うのも面白そうです.

# 実を言うと一箇所だけ無茶をしてます.
# Arduino Diecimilaの論理電圧とGBAのI/Oポートの論理電圧が違うようで,
# GBA側が若干怪しい動きをします.ちょっと危ないです.
# これはArduino Pro Mini(3.3V)を使えば解決できると思います.
# (追記:単純に抵抗による分圧で5V→3.3V変換してもOKなはず)
# (さらに追記:抵抗分圧でいけました.Arduino→GBAの一方通行ですし)
# というわけで,真似するときはご注意を.

(追記)
Arduino Pro Mini (3.3V)を使った続報はこちら


OpenCVを簡単に扱えるライブラリのこと
勉強会で発表した,例の原点に赤い点を打つライブラリですが,
発表がいろいろと消化不良だったので公開するまえにここに要点をメモしておきます.

<09/06/25追記>
ドキュメントの作成に思ったより時間がかかりそうなので
コードだけ先に放流します(→物置) 仮公開ということで.

【製作背景】

・OpenCVは速くて素敵だけど,画素アクセスのインタフェースが
 洗練されてないところに不満がある.あとReleaseがめんどい.

・ターゲットにしているのはC言語の教科書を軽く流した程度の人.
 「構造体の2次元配列はわかるけど,ポインタはワカンネ」な人が
 画像処理の本を見ながらピクセルレベルのアルゴリズムの実装が
 できるようにしたい.かつ,OpenCVの関数も一緒に使えるようにしたい.

・OpenCVの人気がじわじわ出はじめた時期にイチから画像ライブラリを
 作って研究でバリバリ使ってたけど,最近OpenCVがスタンダードに
 なっちゃったから,昔作ってたのと似たようなUIを持つものをOpenCVの
 ラッパーとして構成しなおした.

【構成】

・ExImage  IplImageのラッパー (クラステンプレートによる実装)
・ExWindow  OpenCVのウィンドウシステムのラッパー(Windows限定)
・ExCapture DirectShowによるキャプチャのガチ実装(Windows限定)

下の2つについては懇親会でちょっとだけデモさせてもらいました.

いずれもC++での実装です.
大学時代に研究室の後輩に対してユーザーテストを行いましたが,
C++を全く知らなくても,「クラスは構造体の親戚」「< >はおまじない」
といった補足説明だけで,ほぼC言語ノリで不自由なく使えてました.

【代表的な特徴】

●ExImage

以下のような感じで,画素アクセスを直感的に記述できます.
もちろん,HSVやYUVなどOpenCVで扱うすべての表色系に対応してます.

ExImage <EX_BGR8U> imgIn(320,240);
int y = 0; x = 0;

imgIn[y][x].R = 255;
imgIn[y][x].G = 0;
imgIn[y][x].B = 0;

なお,C++で組むなら「イテレータを使えよ」というツッコミはもっともなのですが,
個人的には2重for文でラスタスキャンを書くほうが好きなのでその方向性はなしで.
(あと,画像処理プログラミング本も大体そんな感じなのでその意図に沿わせています)

ちなみに,Ipl()というメソッドでIplImageへのポインタを返すのでこれを使って
OpenCVの関数に画像を渡せます.

cvCvtColor( imgIn.Ipl(), imgOut.Ipl(), CV_BGR2GRAY );


●ExWindow

プログラムからフルスクリーン化,通常サイズ化を制御できます.
(OpenCVではフチなしフルスクリーン化は対応していません)

●ExCapture

複数のカメラを簡単に扱えます.
カメラの明るさやオートフォーカスなどをプログラムから制御できます.
解像度を途中で変更することができます.
ロジクールの Qcam Orbit というパンチルトカメラを制御することができます.
(首を動かしながら特定の物体を追跡するようなカメラが作れます)

ロジクール キューカム オービット AF QCAM-200Rロジクール キューカム オービット AF QCAM-200R

ロジクール 2007-09-28
売り上げランキング : 3091
おすすめ平均

Amazonで詳しく見る
by G-Tools



てな感じの話を勉強会でするつもりだったんですが,
運営が忙しくて発表準備までまったく手がまわりませんでしたorz
発表を聞いてくださった方,本当にごめんなさい.

# 後輩がOpenCVの行列 CvMat を使いやすくするラッパーを書いてたりするので,
# 彼との利害関係が一致すれば,一緒に進めたい気持ちです.




上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。