2008-02-18[n年前へ]
■新しいThinkpad にも対応した加速度センサ値取得プログラム
(新しいThinkpadにも対応したバージョンが「Thinkpad加速度センサ取得用C++クラスの手直しをしました」にあります)
新しいThinkpad(T61,X61など)にも対応(しているはず)の「加速度センサ値取得プログラム」を作成しました。少し前に、Thinkpad T60pで加速度センサ値が取得できない(意訳)」とメールが来たことをきっかけに調べてみたところ「 X61 Tablet で加速度センサを使ったアプリが動かない件」というような情報がありました。そこで、ShockMgrデバイスを直接開くのでなく、Sensor.dll中の"ShockproofGetAccelerometerData"を使うようにAccelerometerのC++クラスを書き換えました(C++ クラス ソース)。
使い方はこれまでと同じように
Accelerometer anAccelerometer;という具合になります。コマンドラインから傾斜(加速度)を取得するためのサンプルプログラムおよびソースも付けておきます。サンプルプログラムの使い方は、200msごとに100回計測を行う場合には、下記のようになります。 AccelerometerCommand.exe 200 100
anAccelerometer.GetAccelerometerData();
std::cout << pAccelerometer.X << ", ";
std::cout << pAccelerometer.Y << "\n";
これまで作った三次元画像表示プログラムなどは、順次新しいバージョンに作り直し・入れ替えなおしていこうかと思います。
2008-03-04[n年前へ]
■「ルイ・ヴィトンのモノグラム」を見てみよう
アクセサリーサイズの計測器を持ち歩いている。10円玉くらいの圧力分布計測器や、非接触温度測定器や…つまりは、小さなサイズのオモチャをいつも持ち歩いている。といっても、それは持ち歩いているだけで、実際に使う機会に恵まれることはあまりない。けれど、そんなものをいつも持ち歩いている。
メモ書きをしていると、ルイ・ヴィトン(モノグラムの6穴リング手帳を使っている人がいた。ルイ・ヴィトンがそんな文房具まで作っていることに驚き、その手帖の"LOUIS VUITTON"というブランド名"LV"の部分を15倍の小さな顕微鏡で眺めてみた。すると、少し奇妙に感じた。よくある普通の”ビニールへのハーフトーン印刷”にしか見えなかったからだ。こんな風に革に印刷することがあるものだろうか…何か変だ。
右上の画像は、15倍の小さな顕微鏡をさらにケータイ電話のカメラ機能で写したものである。安紙に印刷した雑誌と同じような印刷がされていることが見て取れる。これでは、まるで子供ようのビニール財布だ…と思ったら、ルイ・ヴィトンのモノグラムの素材は「革」ではないという実は、キャンバス地にビニール加工した素材だということであるらしい。だから、"LOUIS VUITTON"というブランド・ロゴの部分が普通の”ビニールへのハーフトーン印刷に見えるのも当たり前の話だった…というわけである。
革や木と見分けをしづらいプラスチックが溢れていることはわかっていても、よく聞く有名ブランドのルイ・ヴィトンなどもビニール・コーティングされたものを作り・売っていたのだとは知らなかった。ブランド品に興味ある人であれば常識であることに違いないが、特に興味もなく眺めることも少なかったものなので、「ルイ・ヴィトンのモノグラム」を拡大して眺めた結果は、何だか面白く・意外だった。
2008-05-19[n年前へ]
■ビデオ業界でのバストサイズの計り方
バストの測り方の「定義」と「実態」で書いたように、青山まりの「ブラの本。」には
(まっすぐ立って計ると、実際より小さな値になってしまうので)90度の角度で、お辞儀をするスタイルでトップバストを計るというようなことが書いてある。
技術的な文章に登場するような、トップバスト=「直立した女性の胸部を、水平に輪切りしたような状態で、巻尺(メジャー)で計った周囲長」というように定義する計り方もあれば、最近の女性の間ではより一般的に用いられている「90度の角度でお辞儀をするようにして計る」という計り方もある。いくつもの「見方(視点)」があるように、「計り方」もいくつも、ある。
そしてこの他にも、つまり、「最近の女性の間では一般的な計り方」とは違う計り方もさらにあるという。それは、(アダルト)ビデオ業界でのバストサイズの計り方だ。
(アダルト)ビデオ業界で、どのようにトップバストを計るのが一般的かというと、
(右の図のように)「(手をついた)うつ伏せ」の状態になって計るのが普通だ……という。この話を聞いたときに考えたことは、そんな計り方をするのは、(特に計測対象が大きな人が多い業界で)「90度の角度で、お辞儀をするスタイル」は腰に悪いからではないか、という想像である。5kg近い負荷を上半身にかけ、90度のお辞儀姿勢は大変そうだから、「(手をついた)うつ伏せ」でトップバストを計るのが一般的になったのではないか、という妄想である。
本当のところ、その理由がどんなものなのかはわからない。それどころか、「本当の理由」があるのかどうかもわからない。しかし、たくさんの「計り方=見方」があって、そのそれぞれの計り方・見方には各々理由があるのだろう、と思う。そんなことを考えたきっかけは、「トップバストの計り方」なのだけれども、そう思う。
2008-06-02[n年前へ]
■騒音メータ「きんりんくん」
町の中を歩いていると、横にきりんが立っていた。黄色くて、首が長い、あの「きりん」だ。動物園の柵の中でぽつんと立っている、あの「きりん」である。そんなきりんが柵の向こうで立っていた。
正確に書けば、町角に騒音監視ロボット「きんりんくん」が置いてあった。「JIS C 1510 」に沿って、20Hzから8kHzまでの30~120dBの範囲を、分解能0.1dBで計ってくれる高性能の黄色いロボットである。
「きんりんくん」というメーカ的なネーミングセンス、それどころか、そのネーミングそのままの形に作ってしまう、という辺りが楽しい。それに、何より、結構かわいい。
2008-07-31[n年前へ]
■「計測・解析ソフトのハック」が実験系技術者の一番のLifeHack…かもしれない。
「計測・解析ソフトウェア/ハードウェアのハック」が実験系技術者の一番のLifeHack…かもしれない、と思っています。それを逆に言うならば、実験系技術者が費やす多くの時間を、計測・解析ソフトが消費しているということになります。つまり、一番時間を消費している部分の高速化をすることが、全体の高速化に効果的だろう、ということです。
そんなこんなで、何を今更…という、Perlで「シリアル通信とユーザインターフェース自動制御」のやり方を整理しておくことにしました。なぜかというと、経験的に「計測・解析ソフトウェア/ハードウェアのハック」は、シリアル通信制御とユーザインターフェース自動制御でほとんどの場合対応できることが多いから、です。しかも、計測・解析ソフトウェア/ハードウェアを外注したりすると、時間や費用が無視できないほどかかったりするわけで、そういったシステムを簡単に作ることができるということを知っていると、結構便利であるわけです。
たとえば、RBIOシリーズのような汎用(入)出力ボードは、お小遣い程度の価格で「シリアル通信経由でのハードウェア制御をする」ことが簡単にできます。それは、「計測ハードウェアのハック」がとても簡単にできる、ということです。
そして、Windows上(あるいはWindows上で動くソフトウェア)の作業を”勝手に”プログラミングすることができれば、「計測・解析ソフトウェアのハック」も簡単にすることができます。
というわけで、「シリアル通信とユーザインターフェース自動制御」ができれば、「計測・解析ソフトウェア/ハードウェアのハック」を簡単に実現することができるわけです。
とりあえず、たとえば、Perlで「シリアル通信とユーザインターフェース自動制御」を使うには、Win32::SerialPort と Win32::GuiTest という二つのライブラリが必要です。それらのインストールは、コマンドプロンプトから、
ppm install Win32-SerialPortという風に行うことができます。もっとも、インターネットに直接アクセスすることができない Proxy 内部からであれば、
ppm install http://www.bribes.org/perl/ppm/Win32-GuiTest.ppd
set HTTP_proxy=http://proxy.hoge.com:8080といったような、Proxy対策の環境変数設定をコマンドプロンプトから前もって行っておくことが必要になります。
set HTTP_proxy_user=hogehoge
set HTTP_proxy_pass=hogehoge
あとは、シリアルポート通信ようのConfigファイルを作る、プログラムを書く、ということだけです。たとえば、
!c:\perl\bin\perlといったライブラリを読み込む宣言をした後に、ソフトウェアのユーザインターフェース周りは、
use Win32::SerialPort;
use Win32::GuiTest qw( FindWindowLike GetWindowText SetForegroundWindow MouseMoveAbsPix SendMouse GetWindowRect SendKeys);
MouseMoveAbsPix(320, 160);というような感じで、マウスやボタンやキーボードを自動で動かすことができます。また、ハードウェア周りは、
SendMouse("{LEFTCLICK}");
SendKeys($fileName);
SendKeys("{ENTER}");
my $conf_file="serialport.conf";という感じで*、スイッチやモータを適当にシリアル通信(とRB-IOのようなお手軽I/Fボードで)制御すれば良い、という具合です。午前中に秋葉原に行って部品を買って、午後にスクリプトを2,30行書けば、それで自動計測・制御システムのできあがり、というわけです。
tie *PORT, 'Win32::SerialPort',$conf_file or die; pushSwitch(0);
close PORT or warn "Can't close serialport:COM*";
sub pushSwitch{
my ($portNo) = @_;
my $text=sprintf "PCT%d%d\n",$portNo,1;
print PORT $text;
}
*(なお、ここで使用している"serialport_conf"は、こういったserialport_conf.plで作成します)