昨夜組み込みLinuxのインストールも終え、もうすぐラジコンが完成します。
今日は、Wiiリモコンの制御について書きます。
wiiリモコンの制御にはProcessing 1.0.6を使いました。
ProcessingでWiiリモコンを扱うにはライブラリの用意が必要です。
今回はwrj4P5.jar (alpha-011)を利用しますので以下を用意しました。
- Loc.jar (beta 005)
- avetanabt-20070719.tgz or bluecove-2.1.0.jar
- WiiRemoteJ v1.6.zip.gz
avetanabtはLinuxで利用する以外は有料ですので、macやwindowsの方はbluecoveがおすすめです。
Linux用のbluecove-2.1.0は幾つかのライブラリが不足してますので、avetanabtがおすすめです。
私の環境では、Linux(ubuntu)とMacの両方にwrj4P5をインストールしました。
インストールに手間取った点を書きますと、
Macでは、wrj4P5を利用する際、Javaを64bit から 32bit に変更が必要でした。ここが解らず悩みました。
LinuxではaventaBTのインストールに若干手間取りました。
以下は参考までにインストールログです。
$ mkdir ~/src/aventaBT
$ cd ~/src/aventaBT
$ wget "http://downloads.sourceforge.net/project/avetanabt/avetanabt/20070719/avetanabt-20070719.tgz?use_mirror=jaist"
$ tar xvzf avetanabt-20070719.tgz
$ sudo aptitude install autoconf2.13
$ sudo aptitude install g++
$ export JDK_HOME=/usr/lib/jvm/java-6-sun
$ export BIN_DIR=/home/[user]/src/aventaBT/binaries
$ ./install
$ cp binaries/avetanaBT.jar ~/src/processing-1.0.6/libraries/wrj4P5/library
以上で、インストール出来たとしまして、ハンドルの制御コードは以下になります。
import lll.wrj4P5.*;
import lll.Loc.*;
float angle = 0.0;
Wrj4P5 wii;
LinkedList p = new LinkedList();
void setup() {
size(300,300,P3D);
wii=new Wrj4P5(this).connect();
smooth();
rectMode(CENTER);
}
void draw() {
if (wii.isConnecting()) return;
stroke(32);
fill(255);
ellipse(width/2, height/2, width/1.6, width/1.6);
translate(width/2,height/2);
rotate( atan2(wii.rimokon.sensed.y , wii.rimokon.sensed.x ) );
fill(0);
rect(0,0,width/2,height/7);
}
wii リモコンはラジアン値を返しますので、角度を求める場合は以下の公式になります。
angle = atan2( y , x ) * 180 / PI;
角度を求めれたことでハンドルの制御も計算しやすくなりましたね。
これにシリアル通信のコードを加えることで、Arudinoの制御が出来ます。
今回は以上です。
最近のコメント