2007-12-14[n年前へ]
■シロアリのヘッドバンギング
トランジスタ技術の特集記事「加速度センサ応用制作への誘い」を読んでいて、面白いことを知った。シロアリは、頭部を1kHzほどの周波数で揺らし、木材を連打するという。しかも、その性質を「ヘッドバンギング」と呼ぶという。ヘッドバンギングをするのは、ヘビーメタルのコンサートにいる人たちだけだと思っていたが、シロアリたちもノリノリで木材に頭部を打ち付けているらしい。
それにしても、1kHzという周波数には驚かされる。そんなに早い周期で頭部を揺らし、しかも、木材に頭突きをし続けることがよくできるものだ。脳しんとうにならないのだろうか。
2007-12-29[n年前へ]
■Thinkpadユーザで作る「地震警報システム」
何年か前から、気象庁の情報を元に地震情報をメールで送信するサービスが色々立ち上がっている。そういえば、前にThinkpadの加速度センサを使ったアプリケーションのネタ出しをした時、気象庁でなく自前の「地震警報システム」を作るのはどうか?というアイデアが出てきた。ハードディスク保護や向き検知を目的として、Thinkpadのように加速度センサが搭載されているデバイスで「○×ガル以上の加速度が検知されたら、サーバにその揺れ情報を送信するソフトウェア」を動かす。そういったデバイスが日本中(世界中)で動いていれば、自分たち自身が動かす「地震警報システム」ができるかも、というアイデアである。
Thinkpad加速度センサ取得用C++クラスのようなものを使えば、簡単に「○×ガル以上の加速度が検知されたら、特定動作をさせるソフトウェア」を作ることができる。たとえば、試しに作った ThinkpadEarthquakeDetector.exeは一定以上の大きさの揺れが生じるとフォームの色が(10秒間だけ)変わるアプリケーションだ。このアプリケーションの場合、わかりやすく色を変えるだけだが、実際にはサーバに加速度・揺れ方向情報などを送れば良いだろう。
サーバを立ち上げ、PCユーザからの情報をもとに、リアルタイムで全国の震度情報をリアルタイムでマッピングするサービスなど、簡単に作ることができそうだ。
2008-01-07[n年前へ]
■「加速度センサ」でカメラ制御を切り替えたい!?
「ケータイで体験できるローレンツ収縮モドキ」は方向性がある。真っ直ぐな棒を動かしてみると、その異方性がよくわかる。ある方向Aでは「棒の太さが変わるだけ」だが、それと90度直交する方向Bでは「棒はグニャグニャ曲がって」見える。
ケータイで実際の景色を撮影するシチュエーションを考えたとき、たいていの物体は縦に長い。そして、それらの物体は左右にしか動かないのが普通だ。歩く人や走る車も、カメラを左右にパンする時の背景のビルや木々も、ほとんどのものが縦に長く左右にしか動かない。ということは、それらの物体に対して、「カメラの向き=ある方向A」になるようにケータイなどのチープなカメラを作ってやれば、「物体がグニャグニャ曲がって」見えることはなくなり、単に「太さが変わるだけ」にすることができる。
しかし、ケータイやデジカメの向きを本来の向きとは違う向きに構えられた場合には、どうすればいいだろうか? …そうだ、今のケータイやデジカメには加速度センサが搭載されていて、ケータイやカメラの向きを検知する製品も多い。だとしたら、その鉛直に対するカメラの方向に応じて、駆動・読み出しの制御を切り替えてやれば、どんな場合でも左右に動く縦長の物体や人に対してGood!な「ある方向A」にすることができそうだ。特許風に言うのなら、「加速度センサを具備した撮像機器の固体撮像素子の駆動方法及び撮像装置」という感じだろうか。
おや?もしかしたら「太さが変わって見える」と「グニャグニャ曲がって見える」では、「グニャグニャ曲がって見える」の方が好ましいと思う人もいるのかもしれない…?
2008-02-16[n年前へ]
2008-03-27[n年前へ]
■MacBookの加速度センサをMathematicaで使う
Ver.6 では、ノート型 Macintoshの傾斜センサ値を Manipulate 関数の入力として 使うことができる、という話。
下記を評価して,表示される出力セルをマウスで選択してから,MacBook を傾けるとリアルタイムで反応します。加速度センサの情報は、
pt = v = {0, 0};
rng = 10;
rad = 3;
k = 0.7;
ControllerManipulate[ v += -0.03 {Sin[px Pi/4], Sin[py Pi/4]};
pt += v;
{pt, v} = Transpose[MapThread[ If[#1 >= rng, {rng - k (#1 - rng), -k #2}, If[#1 <= -rng, {-rng + k (-rng - #1), -k #2}, {#1, #2}]] &, {pt, v}]]; Graphics[{Circle[{0, 0}, rad], If[Norm[pt] < rad, Hue[0.65], Hue[0]], PointSize[0.04], Point[pt]}, ImageSize -> 200, PlotRange -> rng], "X" -> {{px, 0}, -1, 1}, "Z" -> {{py, 0}, -1, 1}, ControllerMethod -> "Absolute", ControllerPath -> "Sudden Motion Sensor"]
ControllerInformation[]でわかるという。





