2011年11月4日金曜日

LTspiceおもしろすぎる。

これはいい。
脱出ゲームよりもスパイダソリティアよりもいい。
しばらくは飽きないなこれ。

・LTspiceを使う
http://www.geocities.jp/ltspice_swcadiii/

やらなきゃいけないことなんて後回しだぜ。
やりたいことを優先なんだぜ。

・シミュレーションモード
オブジェクトを押すと電流、線を押すと電位差が見れる。グラフの色も変えれる。

・昇圧回路のシミュレーション。ポイント。
  • コイルでかくすりゃいいってもんじゃないとかいろいろわかるね。
  • いや、パルスタイミングの方が重要だ。
  • Ton=10ms, Tperiod=10.1msとか最高。800vも出た。
  • いやいや8000v出たし。


・MOSFETの使い方の参考
http://journal.mycom.co.jp/series/volt/001/index.html

2011年3月14日月曜日

地震。科学未来館7階にて。

はあ、大変だった。
地震が起こったとき、ちょうど科学未来館の7階におりましてね。
免震構造のせいか揺れに揺れて死ぬかと思いましたよ。
まあとある学会に参加してたんですが。
とりあえず荷物は未だ館内に置きっぱ。
機材の搬出をどうするかに着いてはいましばらくまて、と。
まあ、俺はとりあえずは最低限の目的は果たせたからいいのかもな、とか。
一緒に来てた先生は飛行機の都合で先に帰って、とりあえずもとからこっちに長期滞在の予定だった俺だけがこっちに残ってアナウンス待って後片付けに行く、みたいな感じ。
はあ。
あとは会社の社長からの連絡待ち、かなあ。

2011年2月28日月曜日

Gainerを複数つないだ状態で各Gainerからアナログ入力を取る方法。

今ちょっとGainer3つ同時に使ってましてね、それぞれから同時にAnalogInputを読まにゃあならん状況なんですよ。でまあ最初はbeginAnalogInput()で各々の入力値読もうとしたら、これがうまくいかない。3つ同時にシリアルに値垂れ流しってのがどうも良くない。
起動した途端に固まる。

なんで、peekAnalogInput()使ってみた。これは呼び出すたびに値一個読み込むアレ。
これはうまく行った。
普通に行ける。
って言う、おはなし。

積まずに済んでよかったなっていう。。。

2011年2月11日金曜日

PlayStationEye (PS3Eye) をprocessing on eclipseな環境で『たくさん』使う。『同時に』使う。

http://0ba38758174010h.blogspot.com/2011/01/playstationeye-ps3eye-processing.html の続き。


無事PlayStationEyeを複数同時利用出来る環境が整った、と思いきや2つまでしか認識されないという事態に直面した前回。
3つ以上使うためにはcreditを購入して接続したカメラのUUID毎にactivateしてあげなきゃいけない。
2月末にはsonyからSDKが配布されるかもしれないという話があるものの、もはや本番まで1ヶ月という現状でそんなものを待つわけにもいかず、買っちゃうことにした。で、買った。4credit。35$。時間は金に変えられねえ。3000円何ざおしかねえぜ。
でまあ、結果としてきちんと動いた。その経過と報告。

どうやってアクチベーションするか。以下手順。

1.まずはcodelaboratoryのサイト行ってアカウントを取る。

2.PS3Eyeがたくさんつながってる状態で、"CL-Eye Device Manager.exe"を起動。"C:\Program Files\Code Laboratories\CL-Eye Driver"にある。つないでる数の分だけウィンドウに項目が表示されてるのを確認しよう。

3.左下のActivateDevicesを押す。アカウントとパスワード入れてログイン。デバイスごとにActivateするか否かを選択できる画面になる。ここで、creditがあればその数だけPSEyeをactivate出来る。でもまだcreditはない。ので買う。

4.右下のAddCreditsを押す。サイトに飛ぶ。ここで、購入したい数のcreditを選んでBuyを押す。支払いはペイパル。購入した分だけアカウントにcreditが加算されていく。ゲーセンの筐体にコイン入れてクレジットが増えるのと一緒。

5.もっかい"CL-Eye Device Manager.exe"開いて、さっきのactivateの画面まで進む。activateしたいカメラを選んで右下のactivate selected Camerasかなんかを押したらおk.。一度activateしたカメラはアカウントに残るので、どのPCにつないで使ってもActivatedなものとして扱われる。壊れたらおしまい。activatedからはずしてcredit戻してもらうこともできるんかな?わかんね。

6.動作確認。全部つながってる状態で、"C:\Program Files\Code Laboratories\CL-Eye Platform SDK\Redist"の中の"CLEyeMulticamTest.exe"を起動。つなげてる分だけカメラのキャプチャウィンドウが開いたらおk.。

7.ここが大事。"C:\Program Files\Code Laboratories\CL-Eye Platform SDK\Redist"の中に"CLEyeMulticam.dll"が入ってることと思う。activateされてるか否かを判断してカメラの数を決めてるのはこいつ。"C:\Program Files\Code Laboratories\CL-Eye Platform SDK\Bin"の中の"CLEyeMulticam.dll"にその機能はない。こいつは最大接続数2に制限してる。Redistフォルダの中の奴を使わないと3つ以上使えない。activateが意味を成さない。ので、単純に取り替える。既にeclipseの当該プロジェクト内のlibNativeフォルダにCLEyeMulticam.dllが入ってることと思う。まずはeclipse上からこいつを削除する。んで、改めて件のRedistフォルダ内のCLEyeMulticam.dllをインポートする。さて、とりあえずカメラを3つ以上使うプログラムを作って起動してみよう。たぶん動いたことと思う。たぶん。

せっかくなんで複数動作の起動確認用に作ったプログラムを此処に載せる。eclipseに貼りつけてピッとしたらちょちょっと動くはず。上下キーでカメラ切り替え。うまく動いたらcameraCount()はつなげてるPSEyeの台数を返してくれるはず。俺の場合は4.。

以下コード。
________________________


import processing.core.*;
import cl.eye.*;

public class PSEye_multi_test extends PApplet{

    int CAMS_NUM = CLCamera.cameraCount();
    CLCamera myCams[] = new CLCamera[CAMS_NUM];
    PImage myImgs[] = new PImage[CAMS_NUM];
    int CAM_RESOLUTION = CLCamera.CLEYE_QVGA;//CLEYE_QVGA/VGA
    int CAM_WIDTH;
    int CAM_HEIGHT;
    int EXPECTED_FRAMERATE = 60;
    int focused_cam = 0;

    void setupCameras(){
        if(CAM_RESOLUTION == CLCamera.CLEYE_VGA){
            CAM_WIDTH = 640;
            CAM_HEIGHT = 480;
        }
        else if(CAM_RESOLUTION == CLCamera.CLEYE_QVGA){
            CAM_WIDTH = 320;
            CAM_HEIGHT = 240;
        }
      
        if(CAMS_NUM == 0){
            System.out.println("no PSEye founded.");
            System.exit(-1);
        }
        System.out.println("Found " + CLCamera.cameraCount() + " PSEyes.");
        // create cameras and start capture
        for(int i = 0; i < CAMS_NUM; i++)
        {
            // Prints Unique Identifier per camera
            System.out.println("Camera " + (i+1) + " UUID " + CLCamera.cameraUUID(i));

            myCams[i] = new CLCamera(this);
            // ----------------------(i, CLEYE_GRAYSCALE/COLOR, CLEYE_QVGA/VGA, Framerate)
            myCams[i].createCamera(i, CLCamera.CLEYE_COLOR_PROCESSED, CAM_RESOLUTION, EXPECTED_FRAMERATE);
            // Starts camera captures
            myCams[i].startCamera();
            myImgs[i] = createImage(CAM_WIDTH, CAM_HEIGHT, RGB);
        }
    }

    @Override
    public void setup(){
        setupCameras();
      
        size(CAM_WIDTH, CAM_HEIGHT);
        frameRate(EXPECTED_FRAMERATE);
    }

    @Override
    public void draw(){
        // ---------------------   (image destination, wait timeout)
        myCams[focused_cam].getCameraFrame(myImgs[focused_cam].pixels, 0);
        myImgs[focused_cam].updatePixels();
        image(myImgs[focused_cam], 0, 0);

//        println(frameRate);
    }

    public void keyPressed(){
        if(keyCode==UP){
            focused_cam++;
            if(focused_cam==CAMS_NUM) focused_cam=0;
        }
        if(keyCode==DOWN){
            focused_cam--;
            if(focused_cam==-1) focused_cam=CAMS_NUM-1;
        }
    }
}

2011年1月27日木曜日

指定された型は、識別子の名前を指定せずに宣言されています。

VisualStudio2010でOpenGL中の話。
普通にやってるぶんにはGLUTもなんの問題もなく動くんだけど、windows.hも読みこんだとたんエラー。

'float' :指定された型は、識別子の名前を指定せずに宣言されています。

場所はgluPerspectivのnearとfar。いずれも変数名ママ。
とりあえずぐぐってみた。
あった。
http://f4.aaa.livedoor.jp/~pointc/101/No.18614.html
要はnearとfarって名前はDOSが内部で使ってる変数名でした、と。
太古の遺産だけど互換性担保のために残してますよ、だからwindowsAPIを呼び出す限りは使わせませんよ、と。そういうわけである。
くそだよな。
で、名前変えた。
おのおのzNear, zFarに。
動いた。
そんだけ。

そもそもなんでwindowsAPI呼び出したかっつったらQPCとQPFが使いたかったから。
それぞれキュベレイ・プルツー・コロニーレーザーとクインマンサ・プルツー・フィンファンネルの略な。
なんでそんな超高性能タイマーが必要かっていったら、高精度なフレームレート設定がしたかったから。
びっくりしたことにOpenGLにはフレームレートなんて概念がそもそも無い。
設定したかったら自分で実装せにゃならん。
一応glutTimerFuncってのはあるけど、それでも設定できるのは1msec単位だし、そもそも単なるウェイトっぽいからこれだけで高精度なFPS設定は無理そうなの。
だからQPCQPF使って超高精度FPS設定機能を実装しようぜ、という試み。
おわかりいただけただろうか。
というわけで作業に戻る。
でも眠い。ねよっかな。いやもうすこしがんばろう。
おしゃまプリンセスっていい曲だよね。
先週の金曜にインフルエンザにかかったんだけど熱出てないからインフルエンザじゃないかもしれないんだけどそういうインフルエンザもあるみたいな話だからもしかするとインフルエンザなのかもしれないねってミサカはミサカは気分が悪いと訴えながら嘔吐してみたりおウェェェェェェアァァァァァァシャァベッタァァァァァァァ!!!

やっぱ寝よう。モルダーあなた疲れてるのよ。

2011年1月19日水曜日

PlayStationEye (PS3Eye) をprocessingで使う。ついでにeclipseでも使う。

うん。そういうわけでAlexPさんのSDK落として試したみたの。
ここにあるやつ。→ http://codelaboratories.com/downloads/
sampleの中のCLEyeMulticamTest.pdeね。
そしてまあ案の定、動かないw(P.S. 動きました。後述。)
UnsatisfiedLinkError とかcannot find CLEyeMulticam.dll とか出る。
フォーラムとか眺めてみるけど解決策もなく。
AlexPさんのドライバのJavaラッパを書いてprocessingで使えるようにしたって人が居るみたいなんでそっちの方で試してみるか?
マルチで使えるかはわからんが。
_______________________

http://processing.org/discourse/yabb2/YaBB.pl?num=1258927190/0

まずこのden ivanovさんがAlexPさんのドライバ使ってprocessingでもPS3Eyeが動くようにしたぞ、と。
細かい設定なんかはivanovさんのブログな。

http://www.cleoag.ru/2009/11/23/ps3-eye-processing-library/

だけども、これを動かすために必要なAlexPドライバのバージョンは古いものが必要でしたよ、と。
どこで手に入るのかってんでliudrさんがAlexPに聞いてみたら次のとおり旧バージョンを置いてくれた。

http://codelaboratories.com/research/view/sony-ps3eye-camera-directshow-capture-source-filter-update-v3.0.0.0901

ここのv3.0.0.0901を入れたら動くんじゃね、っていう。
さあ、試してみんべ。
________________________

ってえ、試せねーんすけど。
ないんだよ。ない。どこにもねえ。
v3.0.0.0901なんてどこにもねーんだよおうい。
くそったれい。
________________________

あった!
どこのだれが上げてくれたのか知らないけどありがとう!
↓ここな。

http://www.general-search.net/fileinfo/gs5f9f7feh82i0

で、つかってみた。
動きました!やったね!
いや、まだひとつが動いただけ。
2つでやってみんと。
________________________

クソッタリーノ!
だめだ、こいつじゃ複数は動かせねえ。何か別の、別の手段がねえと、、、
________________________

きたこれいいいいいいいいいいいいいいいいいい!
うごいた!うごきやしたよおっかさん!

まあ、単純な話でね、「java ps3eye」でぐぐったら↓これがでてきてさ。


http://codelaboratories.com/forums/viewthread/238/

eclipseで実行してみたら動いたの。それだけ。
cleyemulticam.jarを参照ライブラリにビルドパス追加。
CLEyeMultiCam.dllをlivNativeフォルダの中にインポート。
(注:livNativeフォルダってのはNative library locationに設定してるフォルダのこと。
以下過去記事参照。
http://0ba38758174010h.blogspot.com/2010/11/eclipseprocessingprocessingopengl.html
http://0ba38758174010h.blogspot.com/2010/11/javajbullet.html

それだけ。

一応キャプ画像載せとくね。うれしいから。

どや!
って俺の成果じゃないんすけどね。

ああ、なんかもういいや。疲れた。帰ろう。
そして溜まりに溜まったアニメを消化しよう。
まずはまどかマギカだ。そしてフラクタルだ。その後はみつどもえにインデックスにうわあだるい。
明日はとりあえずうまくいったことを先生に言ってPS3Eyeをたくさん先生に買ってもらおう。
4つあればいいかな?
そして作業的にはJBulletに戻ろう。何も解決してねえから。
まあいい。とにかくかえろう。つかれた。おやすみ。バイバイ。
___________________________


実はここで大問題。今回使ったこのCLEyePlatformSDK、デフォルトのままだと無料で使える代わりにPSEyeは2つまでしか同時利用できない。俺は4つくらい使う必要がある。さてどうしようか。
ってんで次回に続く。

http://0ba38758174010h.blogspot.com/2011/02/playstationeye-ps3eye-processing-on.html