2017年10月7日土曜日

Acquiring xy and pressure data from a wacom tablet with python

I gave up to acquire xy and pressure data from a wacom tablet with MATLAB, and used python instead.

1) Download python codes.
  I developed codes based on the below URL.
You may find test.py and tablet.py.
 
https://gist.github.com/nitaku/8377916

2) Install Anaconda3


https://www.continuum.io/downloads

Maybe a 32bit version is better for considering the compatibility with the cgkit2 (32bit).

3) Get Python 3.3 
I installed Anaconda3 with Python 3.6 and thus I had to get Python 3.3 in the environment.

   conda create -n py33 python=3.3 anaconda 

4) The way to activate Python 3.3

   activate py33

if you want to go back to the default environment, you can type

   conda deactivate

5) Download and install cgkit 2

  https://sourceforge.net/projects/cgkit/files/cgkit/cgkit-2.0.0/

  cgkit-2.0.0.win32-py3.3.exe (Windows)


* I could not install cgkit 2 because Python 3.3 was not found in Registry, and had to register by myself.

 5-1) Open Registry
     cmd -> regedit

 5-2) Copy the values of Python 3.6 and edit them to go along with Python 3.3.
    "Export -> text edit -> Import" maybe faster than direct editing using GUI.

 5-3) Finally, I installed cgkit 2.

6) Execute "test.py" with WACOM cintiq 13HD

I can acquire the data at 180Hz!

In the test.py,


    p.t, p.x, p.y, p.p

correspond to timestep in the system time(ms), x coodinate, y coordinate, and pressure, respectively.

You can save them like as

   filename = '0001.csv'
   f = open(filename, 'w', newline='')
   csvWriter = csv.writer(f)


   def draw(p):
         :
         :
         csvWriter.writerow([p.t, p.x, p.y, p.p])
         :
   f.close()








2017年9月2日土曜日

SONYのNeural network consoleを使ってみた

GUIでディープラーニングできちゃう話題のやつ。とりあえず遊んだ備忘録。

バイナリでなく,カテゴリカルなデータを学習させるときには,レイヤ(Affineなど)からの出力をsoftmaxに入力して,softmaxからの出力をカテゴリの数に設定する。

なので,標準で用意されている0~9の画像データセットの場合,10とすればよい。

最後に,Softmaxからの出力をCategoricalCrossEntropyに入力すればよい。

ちなみに,SoftmaxとCategoricalCrossEntropyを足したものである,SoftmaxCrossEntropyを使うと,ちょっと早いらしいんだけど,Evaluation後のクロス表が出力されないので注意です。


2017年8月19日土曜日

MATLAB モニターのサイズをcmとピクセルで取得

実験などで,物理的なサイズで指定したいときにはこれを使って修正。
出力された値の比をとってあげればよいです。

------------------------------------------------
function out = getMonitorSize
% モニターのサイズをcmとピクセルで取得
% 一行目,cm
% 二行目,ピクセル
%

a = groot;
% 単位をcmにする
set(a,'Units','centimeters')
centiM = get(a,'MonitorPositions');
% 単位をpixelに戻す
set(a,'Units','pixel')
pixelM = get(a,'MonitorPositions');
out = [centiM(3:4); pixelM(3:4)];

------------------------------------------------

 昔のバージョンだとgrootだとエラーでるので,0とかにするとよいかも。

2017年7月30日日曜日

Psychtoolbox 動作確認

新しいPCでのPsychtoolbox Screen関数の動作確認。

Mouseコンピュータの小さいやつ,mouse デスクトップパソコン Lm-mini。


メモリはとりあえずささやかに増やして買いました。


CPU Core i3-6100U @ 2.30GHz
メモリ 8GB
ディスプレイアダプタ Intel HD Graphics 520

Psychtoolbox(古いバージョン)インストールして,即Screen関数起動成功。
このサイズのPCで実験ができるとなると,いろいろ結構便利になりますね。

SSDは120GBあるので,プログラム関係は問題なく収まります。
余計なものは,外付けHDDを一台用意すればOK。

USBポートも,全部で6基あり,十分。
ディスプレイ裏マウントが標準で付属されているのも,よい。

2017年5月25日木曜日

Raspberry pi 3bを触る ラズパイさん。

とりあえず覚書です。

Raspberry Pi 3bを買ったよ。

一通りセッティングしたら,センサーのデータだらだら表示などに使う予定。

ディスプレイ小さいのがいいので,3.5インチのタッチモニタを購入。
HDMIでタッチでこの価格とか,すごいね。



到着したディスプレイは「KeDei」と書いてある。ブログをチョコチョコ見ると,あんまりお勧めされていないようだけど,とりあえず無視。最終的には問題ありませんでしたよ。

[ Prepare Raspbian OS]

まず,OSを準備します。

1. Micro SDカードに, imgファイルを書き込もう。

本家サイトからダウンロードしようと思ったら4時間くらいかかりそうだったので
以下のミラーサイト(日本) からダウンロード。

http://ftp.jaist.ac.jp/pub/raspberrypi/raspbian/images/

みんなLiteをインストールしてるけど,機能は多い方がいいじゃないか。ということでフルの方をダウンロード。

2. zipファイルを解凍すると,imgファイルが出てくる。

これを,「DD for Windows」というソフトでSDカードに書き込む。
http://www.si-linux.co.jp/techinfo/index.php?DD%20for%20Windows

3. SDカードは事前に「FAT32」でフォーマット。

対象ディスクを選び,ファイル選択で「.img」ファイルを選び,「書き込み」を押す。
すると,なんかわかんないこと言われるので,「はい」を押し続け,書き込む。
4GBを書き込むのは結構時間がかかるなあ。。


待っている間に,KeDeiのディスプレイについて調べます。

【Osoyooの説明】
なかなか面白い日本語で解説してくれている。
http://osoyoo.com/ja/2016/11/20/raspberry-pi-3-5inch-hdmi-touchscreen/
ここから ドライバをダウンロード可能って書いてある
https://drive.google.com/drive/folders/0B0yi2A0LygMPM3dlOEY3Sml0am8
でも,よくわかんないので, 英語を読む。
http://osoyoo.com/2016/11/20/raspberry-pi-3-5inch-hdmi-touchscreen/
全然説明が違ってびっくりだ。英語の説明を読みましょう。
ドライバをダウンロードをするだけみたいだけど,わからない人にはわからない。

わかりやすいのを見つけたので,こっちに従うことにする。 親切じゃないかOSOYOO
http://osoyoo.com/2017/01/18/install-3-5-hdmi-touch-screen-linux-driver-on-raspberry-pi/ 

ちなみに,「OSOYOO customized image for raspberry pi 3.5" touch screen」というのがあって,これは既にドライバがインストールされているOSらしい。OSをまだ用意していない,というヒトはこっちをSDカードに書き込めば,最初からKeDeiのディスプレイが使えるということらしい。


[ Install Raspbian to Raspberry Pi 3 ] 

さて,話をもとに戻しましょう。

1. SDカードに書き込みが完了したら, SDカードをラズパイに入れて,HDMIを普通のディスプレイに繋いで,電源をつなぐ。

そしたら,起動!Settingも何もなくて起動してびっくり。


[ Connect WiFi in a proxy environment ]

Proxy環境なので,ネットにはつなげないらしい...面倒。とりあえずWiFiでプロキシ使うSSIDに繋いでください。そこから以下の設定。

1. ターミナルで
sudo leafpad /etc/apt/apt.conf
でエディタ開いて(もともとないので新規作成になるけど),
Acquire::http::proxy ""http://*****:8080";
Acquire::https::proxy ""http://*****:8080";
Acquire::ftp::proxy ""http://*****:8080";
と書いたファイルを作成します。 nanoという,ターミナル上のエディタでも編集できるみたいだけど,ムヅカシイので,初心者はleafpad推奨。

2. もうひとつ,ファイルを編集。
sudo leafpad .bashrc
と打つと,既存のファイル (.bashrc) を編集できます。

3. このファイルの最後に以下を追加します。
export http_proxy=http://*****:8080/
export https_proxy=http://*****:8080/
export ftp_proxy=http://*****:8080/

4.注意点として,GUI環境では,ブラウザをターミナルから立ち上げないとProxy通らないのです。ブラウザを立ち上げるためには,

chromium-browser &

を実行しましょう。


[ Install a 3.5 inch touch display driver ]

さて,ネット環境が整ったら,タッチディスプレイを接続しましょう。

1. まず,Chromiumブラウザから,HDMI ドライバのダウンロード。

以下からもらいましょう。
http://osoyoo.com/driver/LCD_show_35hdmi.tar.gz

 【ちなみにKeDeiのサイト】
http://kedei.net/raspberry/raspberry.html

2. 圧縮ファイルを,「pi」フォルダに移動させます。

3. 次に,ターミナルを起動。ブラウザ見ながらだと,そのターミナルはいじれないので,もう1つ追加で立ち上げましょう。

4. 余計な設定を全部飛ばすと,以下のコマンドだけ,打てば終わり!

・ファイルを解凍して,そこにカレントディレクトリを移す

sudo chmod 777 LCD_show_35hdmi.tar.gz
tar -xzvf LCD_show_35hdmi.tar.gz
cd LCD_show_35hdmi

・好きな解像度を選んでインストール。
sudo ./LCD35_480*320
480*320の部分は,好みに応じて 720*480 か 810*540 に変えてね。

このままちょっと待つと,解像度が切り替わります。


[ Connect the 3.5 inch touch display ]

1. さて,その次は,OSOYOOをガチャっとくっつける。
 ピンにささないといけないのですが,向きは「これしかないだろ」的にくっつければOKです。

2. ピンが接続できたら,付属の HDMIケーブル(とは言わないけど,接続部品)を使って,ラズパイとディスプレイを接続します。

3. ディスプレイのスイッチを入れます。右左に動くのが地味についています。

終了!

もしもタッチが反応しなかったら,再起動するといいと思います。