« オンラインPhotoshopキタ | メイン | jQueryのoffset »

RubyからFunnelで加速度センサー(Gainer)の値を取得してみた

del.icio.us it!   hatena bookmark
R0011218.jpg
FunnelつかえばGainerをrubyから扱えるそうなので試してみた。
今回はActionScriptでなくrubyからやってみる。

ちなみにFunnelについては
http://funnel.cc/


今回は、加速度センサーの値をrubyから取得してみる。
上の写真に写ってるやつが加速度センサー


まずは
http://code.google.com/p/funnel/downloads/list
からFunnelをダウンロード。
今回は build 006 でやりました。

リストの中に「wcan_mini_vol5_workshop.zip」というのがあるけど、これは前回のWCAN mini でつかったサンプルが入ってます。


次にFunnelをrubyで扱うにはOCSのライブラリが必要なので、そちらをインストール。
ちなみに、OCSとは「Open Sound Control」の略で、ソフトウェアとハードウェアの通信規格だそうです。Soundとなってますが、音以外のデータでもおkみたいです。

RAA - osc
http://raa.ruby-lang.org/project/osc/

上記サイトからtar.gzをダウンロードしてきて解凍後

$ ruby install.rb config
$ ruby install.rb setup
$ ruby install.rb install

でインストールできます。



次にGainerに加速度センサーを取り付けます。
配線は
YAPAN.org: WCAN mini ActionScript Vol.5
http://www.yapan.org/main/2008/03/wcan-mini-actio.html
のスライド107ページ目を参考にしてます。


配線ができたら、USBケーブルをさして、Funnelサーバーを起動します。


rubyのスクリプトはダウンロードしてきたfunnel_006のlibrariesのrubyのexamplesにある「gainer.rb」を参考に以下のようにしてみました。

require 'funnel'

module Funnel
  
  gio = Gainer.new(Gainer::MODE1)
  
  gio.ain(0).on PortEvent::CHANGE do |event|
    puts "ain 0: #{event.target.last_value} > #{event.target.value}"
  end

  gio.ain(1).on PortEvent::CHANGE do |event|
    puts "ain 1: #{event.target.last_value} > #{event.target.value}"
  end

  gio.ain(2).on PortEvent::CHANGE do |event|
    puts "ain 2: #{event.target.last_value} > #{event.target.value}"
  end

  sleep()

end
アナログインプットの値をそれぞれ取得してます。
値が変化したらイベントが発生するって解釈でいいのかな?
sleepでとめてるんだけど、こんなやり方でええんだろうか?

これをFunnelサーバー起動した状態で実行すると。
ruby mortion01.rb 

こんな感じの出力になります。
ain 0: 0.521568655967712 > 0.494117647409439
ain 1: 0.494117647409439 > 0.486274510622025
ain 2: 0.678431391716003 > 0.764705896377563
続く・・・・
なんかたまに
command port: localhost, 64178
notification port: localhost, 64179
notification port: EOF error
というのが表示されるけどなんだろ。


とりあえずrubyからfunnelでGainerにつけた加速度センサーの値をゲットできました。 なんかつくってみよー


Flash Math & Physics Design:ActionScript 3.0による数学・物理学表現[入門編] 集合知プログラミング ビジュアライジング・データ —Processingによる情報視覚化手法 御岳百草丸 1200T

トラックバック

このエントリーのトラックバックURL:
http://un-q.net/mt-tb.cgi/292

コメント (4)

こんにちは。Ruby用ライブラリを活用していただけて嬉しいです。

EOFエラーの件ですが、notification portは一方的に通知するスタイルのため、何らかの事情で受信側のバッファがいっぱいになってしまった時などに起きるようです。環境によって再現頻度には違いがあるようなのですが、調査してみたいと思います。

>寿小五郎さん
コメントありがとうございます!

ActionScriptのライブラリとは違う活用方法がありそうな感じがするので、Rubyのライブラリもっと使ってみます。

JA2YYN:

加速度センサーを使って このような物 製作したいのですが
RC 送信機の外部端子はPPMパルスでないと受け付けない様です RC用ジャイロは サーボを制御するため PWMパルスを
出しています。 どうすれば ジャイロ信号を送信機から 送れるのでしょう

このような物です
http://www.youtube.com/watch?v=GCd5sVdRa6k&feature=related
http://www.youtube.com/watch?v=KDPS4Hgndmc&feature=related

JA2YYNさま

コメントありがとうございます。
youtubeの動画いいですねー

申し訳ないのですが、私自身電子工作などそれほど詳しい訳ではないので、ご質問にお答えできません。ごめんなさい

でもせっかくなのでみんなに聞いてみましょう
電子工作系で質問があったけどわからないから誰か答えてくだせぇ (Unknown Quality)
http://un-q.net/2008/05/gainer_funnel.html

コメントを投稿

書いたよ!