Archive for the Gainer Category

Macと戯れていたら,コンピュータビジョン・拡張現実感に関する普通じゃない勉強会
近づいてきたので,そろそろ重い腰を上げてみようかと思います(苦笑)
スロースターターですみません。。。>関係者各位

さて,自分のネタですが,発表作品にGainerを使っているものがなさそうなので,
Gainerを絡めたものを出す予定.そのため,フォルダに長い間眠っていた
Gainer with C++ vol.0で自作したライブラリを引っ張り出してみる.

で,いざ使おうと思っていると,単一センサの値読み取り程度なら十分だけど,
いろいろ不備があることが判明したので,同時期に同じことをやっていた
mootoh.log - Gainer++ - GainerをC++から使うを参考に再設計することに.
#正確には上記のもののWindows移植作業+α と言った方が正しいかも。。。

Win32 APIのスレッド周りの知識が怪しいので,結構苦戦して3時間くらいかかったけど,
とりあえず動くものはできました.これでGainerをC++で簡単に扱えます!!
#他人のソースを読むと,こんな書き方ができるのかーと発見があって面白かった

ということで,ボタンを押すと「LED点灯 + ウィンドウ上への情報表示」を行うサンプルです.
相変わらずサンプルが適当だな。。。>自分

(ホントに基本機能のみだけど)GainerをC++で扱えるようになったので,某動画サイトの流行に乗っかってみました.後悔はしていない.やってることは,加速度センサの値に応じて,画像を切り替えてるだけです(←俗に手抜きともいう).

今回,初めて某動画サイトへの動画投稿に挑戦しました.
叩かれそうで怖い。。。 まぁ,生暖かい目で(以下略)

前回予告していたようにC++でGainerを扱うために行った処理を簡単に書いてみます.
もしかしたら,間違っていたり,こうした方が良い点などがあるかもしれないので,ご指摘お願いします.

ということで,今のところ最低限用意しているメソッドはこんな感じ.

(1)Gainer初期化
通信速度,パリティ等の設定(こちらを参考)

(2)リセットメッセージ送信
Gainerモジュールに文字列「Q*」 を送信.
(送信に成功したらGainer側からメッセージが送られるので受け取る)

(3)コンフィギュレーションの設定
Gainerモジュールに文字列「KONFIGURATION_1*」を送信.
(送信に成功したらGainer側からメッセージが送られるので受け取る)

(4)データの取得
Gainerモジュールに文字列「I*」を送信.
送信に成功したら,アナログ入力ain0~ain3のデータが文字列として
送られてくるので,その文字列を受信.

(5)文字列→数値変換
受信したアナログ入力のデータは,「Ixx…xx*」(※xx…xxがデータ部)
という構成の文字列なので,まずは入力分だけ文字列を分割.
また,値は16進なので10進に変換して利用.

(6)後処理
ポートのクローズ処理.

************************
あと,「プログラム風」に書くとこんな感じです.
※前回の記事ではこれらの処理に移動平均法の処理も加えています.

C++:
  1. #include "MyGainer.h"   //ヘッダのインクルード
  2. MyGainer *gainer;
  3.  
  4. int main(int argc, char** argv)
  5. {
  6.     //Gainerオブジェクト生成
  7.     //ここではCOM3を指定
  8.     gainer = new MyGainer(3);
  9.  
  10.     //初期化
  11.     //(COMポートオープン、通信速度等設定)
  12.     gainer->initialize();
  13.  
  14.     //コンフィギュレーションの設定(MODE1)
  15.     gainer->setConfiguration(1);
  16.  
  17.     //キー値
  18.     int key = 0;
  19.  
  20.     //ループ
  21.     while(1)
  22.     {
  23.         //データ取得
  24.         //(メッセージ送信 + データ受信 + 文字列→数値)
  25.         gainer->getAllAnalogInput();
  26.  
  27.         //キー入力待ち(1msec)
  28.         key = getKeyInput();
  29.  
  30.         //ESCキーが押されたら終了
  31.         if(key == 0x1b)
  32.         {
  33.             break;
  34.         }
  35.     }
  36.  
  37.     //後処理(COMポート解放)
  38.     gainer->release();
  39.     delete gainer;
  40.  
  41.     return 0;
  42. }

C++でGainerを扱う(といってもアナログ入力のみ)ライブラリを自作したので,早速OpenGLと組み合わせて実験.とりあえず,動いたー!!

でも,ソースが汚いです。。。_| ̄|○
ということで,公開はまだまだ先になりそう(コードがグダグダなのでしないかも。。。).

とりあえず,どんな感じでシリアル通信しているかを簡単に記述した擬似コードを後日記事にする予定.

Gainer with C++(加速度センサ)

前回の記事で,

>C++でGainerを扱えるライブラリもあったら便利そうですが
とか言ってたけど,ちょっと探した感じだと無さそうなので自力でなんとか作ってみる.

まぁ,Gainerモジュールとはシリアル通信ができるので,Tutorial/Basic/Common/03/ja - GAINER.ccやSourceForgeに置いてある資料(シリアル通信の際のコマンド表),javaのソースなんかを参考にしながらゴリゴリと(自分用なのでエラー処理とか適当).

とりあえず,アナログ入力1~4までのデータ取得はできた感じなので,時間を見つけて簡単なアプリができたらなぁと.
以下はアナログ入力1~3の値(加速度センサのデータ)表示のスクリーンショット.

blogを2か月放置してました。。。
あと,新年明けましておめでとうございます(遅)

今年もよろしくお願いします.

****
さてさて,だいぶ話はさかのぼりますがGainerの和書が出たということで,10月に

+GAINER―PHYSICAL COMPUTING WITH GAINER
著者/訳者:GainerBook Labo くるくる研究室
出版社:九天社( 2007-10 )
定価:¥ 3,780
単行本
ISBN-10 : 4861672015
ISBN-13 : 9784861672019



を買ったんです…が,肝心のGainerを入手できていなかったので,本を眺めながら「楽しそうだなぁ」とか思っている間に2008年が到来してしまいました。。。(苦笑)

これではいかんと,TriggerDevice itemsのサイトを訪れてみると,念願のGainerモジュールが入荷されていたので「今しかない!」と思い切って購入ボタンをポチっと(注文した数日後には在庫切れになってました。。。恐るべしGainer人気).

注文から数日後届いたので早速Gainerで遊んでみて作業ログをwikiの方にちょこちょこ書いてみました(だいぶやっつけ仕事ですが).それにしても,いろいろ制限はあるもののセンサなんかが手軽に扱えて楽しいなぁ(C++でGainerを扱えるライブラリもあったら便利そうですが).時間を見つけていろいろ遊んでみる予定.

#Diffused Illuminationネタもやりたいけど材料が揃ってないので,とりあえず急死。。。
#じゃなくて休止中.