2008-11-08[n年前へ]
■最近のThinkpad(の加速度センサ)に対応した万華鏡ソフト
Thinkpadで動く万華鏡ソフト、Thinkpadを傾けるとそれに応じて色とりどり綺麗な模様が見える万華鏡ソフトのアップデート版を作って、ここ(kaleidoscopes20081108.lzh 1.4MB)に置きました。最近のThinkpadでも動くようにしています。このソフトウェアを動作させると、下に貼り付けた動画のように画面に万華鏡の中野景色が映し出されます。こういう模様の動きには、何だか不思議なくらい見とれてしまいますね。
2008-11-22[n年前へ]
■「探偵ナイトスクープ」と「地表の重力」と「電子天秤の体重計」
「探偵ナイトスクープ」を観ていると、北緯45度25分に位置する稚内と北緯25度20分に位置する那覇では(もしかしたらこの数字は「度・分」ではなくて、単に「度」だったかもしれない)、地球の自転の遠心力のために、重力加速度がそれぞれ9.8062273m/s^2と9.7909942m/s^2と、0.155341%ほど違っている。だから、40キログラムの人が稚内から那覇に行くと62.136グラム軽くなる・・・という小ネタを扱っていた。体重40キログラムのマネキン人形を稚内から那覇へ移動させ、電子天秤でその体重を計り、マネキン人形の体重が軽くなるさまを見せていた。
実際には、緯度によるの違いを生む過程はそう単純でないと思いながらも(参照)、画面を観ていて何より面白かったのが、撮影に使われていた電子天秤だ。40kgを1g未満の誤差で計っていて、つまり、6桁近くの精度を持っているのである。
その桁数をたとえるなら、「1.6トンの車に、おちょこでお酒を1盃と少しかけた時の重量の違い」がわかるくらい、といことになる。・・・そんな体重計があったら、とても小さな体重の増減に、つまりはとても小さなことに一喜一憂してしまって大変そうだ。体重計に限っては、有効桁数が大きいことが必ずしも良いとは限らないのかもしれない。
2009-03-12[n年前へ]
■新幹線のアクティブ制御の設計解析手法
以前「鉄道車両の設計と制御におけるシミュレーション技術」という川崎重工の技術紹介を聞いたことがある。これが、実に様々な点で面白かった。
新幹線の振動/揺れが気になることが多かったので、たとえばこういった記事をはじめとして、新幹線の振動抑制制御について、とても気になっていた。特に血液中の鉄分が多い方、いいかえれば、鉄っちゃん(鉄道おたく)ではないと思うのだが、新幹線の制御をどのような考え方で、どのようなやり方で設計/開発を行っているのか に興味があった。
新幹線の振動抑制に関しては、
- 台車の左右加速度を計測する
- 加速度をフーリエ変換しパワースペクトル密度にする
- 人間の振動に対する各周波数に対する感度をかけ、さらに積分することで「乗り心地」指数(レベル)を算出する
ちなみに、このような「乗り心地」評価値を用いながら、客車を支える空気バネの電磁弁を開閉することでセミアクティブ制御したり、客車下中央に位置する動揺防止制御用アクチュエータでアクティブ制御を行っている、という。
ちなみに、加速度センサからのFB制御だけでなく、ATCの地点情報を用いてFF制御を行っている、というあたりも面白い。…鉄道もなかなか面白い。鉄っちゃんの気持ちが、少しわかるような気がしてきた。
この講演の面白さ/興味深さは「(シミュレーション)ソフトウェア開発/管理における課題」「異種技術分野のソルバ/ツール連携」に関する現状の問題を、講演者が整理した上で、聴衆になげかけた部分にもあった。実に勉強になった。
2009-05-19[n年前へ]
■Microsoft、「魔法の杖」の特許を出願
もちろん、「魔法」といっても、実際はビデオカメラ、加速度計などの速度センサ、位置および方位センサといった各種コントローラと複数の通信技術によって実現するものだ。
5月第3週の後半にその存在が明らかになった特許申請書の中で、Microsoft は特許申請する技術を実際に「Magic Wand (魔法使いの杖 )」と呼んでいる。申請書の要約には次のように記されている。
「同アーキテクチャは、その全体もしくは一部を、杖またはそれに類似した形状の筐体内に収納する。同アーキテクチャは、集合したセンサーの中から1つ以上のセンサーを利用して、運動方向、すなわち杖と連動した身振りを測定する。さらに、その運動方向に基づいて環境要素の状態を更新するよう指示を出すことができる」
2009-12-02[n年前へ]
■Ruby版 Thinkpad 加速度センサ類取得クラスを書きました
Lenovo(旧IBM)のノートPC ThinkPad にはハードディスク保護を目的として、加速度センサが付いています。SSDを搭載している機種でも、(その他のハードウェアは共通化されているからだろうと思いますが)やはり加速度センサが付いているということです。
以前、C++でThinkpad加速度センサ類取得クラスを作りましたが(このC++コードを眺めてみると、不要な部分が残っていたので、その点については後で修正します)、今回はRubyでそのクラスを組んでみました。作成したRubyソースは、ここに置きました(accelerometer.rb)。ソース最下部には、使用方法もコメントアウトした上で付けておきました。また、このバージョンはC++バージョン同様、最近のThinkpadでも動く実装になっています。
読みやすさのために改行を適当に入れたソースは、下記のようになります。
# jun hirabayashi jun@hirax.net 2009.12.02
class Accelerometer
require 'Win32API'
attr_accessor :x
attr_accessor :y
attr_accessor :temperature
attr_accessor :presentState
def initialize
begin
@sensorFunctionAPI=Win32API.new("Sensor",
"ShockproofGetAccelerometerData", ['P'], 'V')
@buffer=' '*17
if @sensorFunctionAPI.Call(@buffer)
parse(@buffer)
@offsetX=-@latestRawAccelDataX.to_i;
@offsetY=-@latestRawAccelDataY.to_i;
end
rescue
'We have some problem.'
exit!
end
end
def parse(result)
@presentState,@latestRawAccelDataX,@latestRawAccelDataY,
@latestAccelDataX,@atestAccelDataY,@temperature,
@atestZeroG_X,@atestZeroG_Y=result.unpack("iSSSSCSS")
end
def getAccelerometerData
@sensorFunctionAPI.Call(@buffer)
parse(@buffer)
@x=@latestRawAccelDataX.to_i+@offsetX.to_i;
@y=@latestRawAccelDataY.to_i+@offsetY.to_i;
return [@x,@y]
end
end
このRubyクラスを使った加速度取得スクリプト例は、下記のようになります。ちなみに、Xが(ノートPCに向かって)左右方向で、Yが奥行方向になります。これで、1秒おきにThinkpadの傾斜をコンソール出力します。
require 'accelerometer' accelerometer=Accelerometer.new 10.times{ |i| puts accelerometer.getAccelerometerData.join(',') sleep 1 }
MA5授賞式で面白いものを作っている開発者を見たせいか、何か色々作ってみたくなります。4年ほど前には、この加速度センサテクニックを使って「「未来の立体ディスプレイ」を作る」とか色々作ったような覚えがありますが、まだまだ色々な応用がありそうな気がしてきました。というわけで、まずは準備のために、今日はRuby版 Thinkpad 加速度センサ類取得クラスを書いてみました。