WiiRemote関連

WiiChuckアダプタを試してみました(3)

ArduinoとProcessingを使って、WiiChuckアダプタ関連の話の第3弾です。

前回は、Wiiヌンチャクを動かしてみたんですが、今回は、Wii Classicコントローラーだってできるハズだよなぁsign02と思ってやってみましたhappy01

検索してみいると、Arduino: Playgroundが、引っかかりました。ここに、まさにそのまんまやりたいことのコードがあったんで、ダウンロードして試してみましたhappy01paper

が、私の環境ではそのままではうまく動かなく、ちょこちょこっと手を加えて、動くようにしました。

WiiClassic.h

オリジナルから書き換えた部分

  • #include <WProgram.h>を追加
  • #include <Wire.h>を消去
  • 使うピンの設定の関数が無かったため、nunchuck_func.hから、static void nunchuck_setpowerpins()をコピー
  • 左のスティックが約±32で、右が約±16の値だったので、左の値をシフトさせ、右と同じ±16の値になるように変更
    int leftStickX() {
                return  ( (status[0] & 0x3f) >> 1); //Modified

    }
    int leftStickY() {
                return  ((status[1] & 0x3f)) >> 1; //Modified

    }

ダウンロード
これまた、適当なプログラムなんですが、以下のムービーのような、サンプルプログラムを、ここクリックで、ダウンロードできるようにしましたpaper

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

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

過去の記事へのリンク

  1. WiiChuckアダプタを試してみた
  2. WiiChuckアダプタを試してみました(2)

----------------
にほんブログ村 科学ブログ ロボットへ
にほんブログ村

| | コメント (3) | トラックバック (0)

WiiChuckアダプタを試してみました(2)

ArduinoとProcessingを使って、WiiChuckアダプタを試してみた話の続きですpaper
Mynunchuckprintscreensnapz001

Arduinoのプログラム
昨日紹介したtodbot blog : “WiiChuck” Wii Nunchuck Adapter AvailableのページにあったWiiChuckDemoをモディファイしただけなので、深い所はどんな仕組みになっているのかはあまり調べてないので割愛します。

  • WiiヌンチャクはI2Cなので、Wireライブラリーが必要
    #include <Wire.h>
  • Wiiヌンチャク制御のための関数は、nunchuck_funcs.hに用意されてるので、インクルード
    #include "nunchuck_funcs.h"
  • Wiiヌンチャクの初期設定の為の関数:nunchuck_funcs.hにある以下をsetup()の中でコールする
    nunchuck_setpowerpins();
    nunchuck_init();
  • Wiiヌンチャクの各種データを得る関数:nunchuck_funcs.hにある以下をloop()の中でコールする
    nunchuck_get_data();
    accx  = nunchuck_accelx();
    accy  = nunchuck_accely();
    accz  = nunchuck_accelz();
    zbut = nunchuck_zbutton();
    cbut = nunchuck_cbutton();
    joyx = nunchuck_joyx();
    joyy = nunchuck_joyy();
  • あとは、シリアル通信などで、データを送信
    例:それぞれの値を、カンマで区切って送信

            //x accelation
            Serial.print((byte)accx,DEC);
            Serial.print(",");

            //Y accelation
            Serial.print((byte)accy,DEC);
            Serial.print(",");

            //Z accelation
            Serial.print((byte)accz,DEC);
            Serial.print(",");

            //Z button
            Serial.print((byte)zbut,DEC);
            Serial.print(",");

            //C button
            Serial.print((byte)cbut,DEC);
            Serial.print(",");
           
            //Joy stick X
            Serial.print((byte)joyx,DEC);
            Serial.print(",");
           
            //Joy stick Y
            Serial.println((byte)joyy,DEC);//最後はprintln

Processingのプログラム

初期設定:setup()

  • 使うフォントを作っておく
    Processingscreensnapz001

      //フォントをロードする
      font = loadFont("Osaka-Mono-12.vlw");
      //フォント使用開始:サイズ12
      textFont(font, 12);
  • 使うポートを調べておく(Arduinoの)
    Arduinoscreensnapz001

      //シリアルポートの設定
      myPort=new Serial(this,"/dev/tty.usbserial-A6008jwU",19200);
      myPort.clear();

シリアル通信処理:serialEvent(Serial p)

void serialEvent(Serial p){
  //Arduinoから送られてきたデータが
  //文字列の変数stringDataを用意し、
  //「10」(ラインフィード)が来るまで読み込む
  String stringData=myPort.readStringUntil(10);//最後はprintln
 
  //文字列データが空ではないとき
  if(stringData!=null){
    //文字列データに含まれる改行記号を取り除く
    stringData=trim(stringData);
 
    //整数型の配列data[]を用意し、
    //コンマ記号をもとに文字列データを区切って
    //配列data[]に整数化して入れておく
    int data[]=int(split(stringData,','));
 
    //配列data[]内のデータが7つなら、
    if(data.length==7){
      accx=data[0];
      accy=data[1];
      accz=data[2];
      zbut=data[3];
      cbut=data[4];
      joyx=data[5];
      joyy=data[6];
    }
  }
}

描画:draw()

serialEventで読み込んだ値を、各自、お好みの方法で描画して下さいなpaper

ダウンロード
適当なプログラムなんですが、いちおう、上記のArduinoとProcessingのプログラムを、ここクリックで、ダウンロードできるようにしましたpaper

----------------
にほんブログ村 科学ブログ ロボットへ
にほんブログ村

| | コメント (0) | トラックバック (0)

WiiChuckアダプタを試してみました

いやぁ〜ArduinoとProcessing
楽しいですねぇ〜happy01heart04

WiiChuckアダプタというのを1ヶ月くらい前に買ったんですが、Arduinoを動かしたのが昨日だし、やっと今日ちょろっと試してみましたhappy01paper

WiiChuckアダプタとは
スイッチサイエンスさんのページをパラパラと見てたら見つけました。310円と安かったので買ってみました。(ここ
08202323_4a8d5c5005286
WiiのヌンチャクコントローラーをArduino(など)につなげることができるアダプターで、使い方は、こことか、ここのページが紹介されています。

Arduinoとのつなげ方

  1. WiiChuckアダプタに4本ピンをつけ、
  2. WiiChuckアダプタをArduinoのアナログポートの2,3,4,5番にさします。
  3. WiiChuckアダプタの開いてる側にWiiヌンチャクコントローラーのコネクターをさします。

以上sign01簡単happy01heart04

Dsc00425

で、今回は、ここまでhappy01
「Arduinoのプログラム」と「Processingのプログラム」については、次回happy01
いちおう、こんなのを作ってみましたpaperいやぁ〜昨日はじめて触ったものだとは思えないくらい簡単でいいですhappy01
----------------------------------------------------


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

つづき

WiiChuckアダプタを試してみました(2)

----------------
にほんブログ村 科学ブログ ロボットへ
にほんブログ村

| | コメント (0) | トラックバック (0)

WiiRemoteプログラミング

最近、Wiiリモコン関連全然やってないけど、本が出ていたので、メモっておきます。いやぁ〜なんかビックリしました。

とりあえず、パラパラッと立ち読みした限り、悪くなさそうでしたよhappy01

私は、今は、ちょっとWiiリモコン関連に手を出している余裕がないので、またの機会に購入することにしました。

WiiRemoteプログラミング


--------------------------------------------------------
いちおう以前書いたのリンクしておこ

----------------
にほんブログ村 科学ブログ ロボットへ
にほんブログ村

| | コメント (0) | トラックバック (0)

Wiiリモコンに対応させたい(3)

昨日「注文したBluetoothアダプターがまだ来ない」と言ってたんですが、9日にすでに届いてましたsweat01ロボザックやマイミュージックスタジオの積み上がった空き箱といっしょに置いてあったので、まったく気がつきませんでしたsad

買ったのは、

TIMELY
USB-DO-BT/CL

リンクしてあるお店で買いました。送料込みで1,498円でした。

で、目的のドライバー?(Bluetooth Stackソフト)のBROADCOM社のWIDCOMM Bluetooth Softwareですが、8インチCDが付いていたので困ったなぁdownと思ってたら、ここのお店で、ダウンロードできるようになっていましたので、それを使いました。

静止画で、実際動いているかどうかまでよくわからないかと思いますが、WIDCOMMならマック(動画)と同じように動かせることが確認できましたhappy01scissorsnote

Finderscreensnapz017

すべてのBluetooth Stackを確認した訳ではないのですが、Bluecove v2.0.3が対応しているBluetooth Stackを、もう一度書いておきます。

  • Mac OS X(起動確認)
    Screensnapz003
  • WIDCOMM(起動確認)
    ※まだ殆ど使ってないが、いまいち解り辛い気がする。
    Finderscreensnapz018
  • BlueSoleil(未確認※動かないらしい
    ※ウインドウがでかくて操作しにくそう。
    Parallels_desktopscreensnapz134
  • Bluetooth Stack for Windows by TOSHIBA(起動不可確認)
    ※使い勝手は悪くない。解りやすい気がする。多くのメーカーが採用しているみたい。
    Parallels_desktopscreensnapz138
  • Microsoft Bluetooth stack on WinXP sp2(未確認)
  • BlueZ Linux(未確認※動くらしい)

各Bluetoothアダプターの対応Bluetooth Stackですが、お店で箱の裏を見ても書いてないものが多いですので、買う時には、あらかじめ調べておくと良いかと思います。

----------------
にほんブログ村 科学ブログ ロボットへ
にほんブログ村

| | コメント (1) | トラックバック (0)

Wiiリモコンに対応させたい(2)

水曜日に、帰宅前に上大岡のヨドバシカメラに寄って、Wiiのヌンチャクコントローラを買ってきました。どう利用するかはあれなんですが、これで加速度センサーが右手と左手の2個になったhappy01

RZ1WiiRemoteの画像も少しカッコ良くして、テスト起動note
----------------------
   
----------------------

ところで、Wiiリモコンですが、ロボザックの距離センサーの赤外線に反応できるんですよね〜happy01ロボザックの位置のモニタリングに利用できないかなぁ。。。。

ところで、先日注文したBluetoothアダプターがまだ来ないdowndown早くWindowsで動かせるか試してみたいのに。。。

ところで、「Wiiリモコンに対応させたい(1)」で紹介したBlueCoveですが、BlueCoveサイトの中に以下のように書いてありました。

BlueCove is a JSR-82 implementation on Java Standard Edition (J2SE) on BlueZ Linux, Mac OS X, WIDCOMM, BlueSoleil and Microsoft Bluetooth stack on WinXPsp2 and newer. Originally developed by Intel Research and currently maintained by volunteers.

これを見ると、BlueSoleilも動かせるみたいなんだけど???ここのページをみると、やっぱBlueSoleilでは動かさなそうbearing

----------------
にほんブログ村 科学ブログ ロボットへ
にほんブログ村

| | コメント (0) | トラックバック (0)

Wiiリモコンに対応させたい(1)

形にするのは大変なもので、RZ1関連のソフトも、作りかけのものが、ガラクタの山のようにディスクを占有していますdespairマック版はうまく動くんだけど、Windows版の方がうまく動かないから先に進めないというのが場合が結構多いなぁ。例えば、この前紹介した、音声認識のjulius孤立単語認識キットも、マック版は使い方わかるんだけど、Windows版がどうもよくわからないsweat01。。。

さて、あまりニーズはないと思いますが、Wiiリモコン対応はさせたくて、他のソフトの力をかりて、操作する方法を紹介してきましたが、RZ1シリーズのソフトで対応できるように、ボチボチとやっていくことにします。

まずは、Wiiリモコンのドライバーは、どれを利用するか?ですが、

Wiiリモコンのドライバーは、WiiLiの「Wiimote/Drivers」に、パソコンでWiiリモコンを使えるようにすることのできるソフトが、いろいろ紹介されてます。RZ1シリーズでは、マックもWindowsも対応させたいので、Multiplatformなドライバーが使えれば、Wrapする手間も省けます。

Wiimote/Drivers」のページを見ると、最後の方にドライバーが一覧になっています。そこのMultiplatformの欄に紹介されている、WiiRemoteJを使ってみました。

WiiRemoteJのサンプルをマックとWindowsで動かしてみましたが、これまたWindowsではうまく動いてくれませんでしたbearing

いろいろネットで見ていると「bluecoveでBT-Mini2EDRが認識しない」、「JavaでWIIリモコンを操作する(うまくいかない)」と、同じ様な方がいらっしゃるようで、WiiRemoteJを使っているソフトに、Wiimote Whiteboardというのがあるのですが、これもやはり私の環境のWindowsではうまく動いてくれませんでした。

WiiRemoteJに、Java用のBluetooth APIがいくつか紹介されていて、今回、BlueCoveを使ってみたのですが、Windowsの場合、BlueCoveを使うことに問題があるのか、判らないことが多すぎて解決していませんdespairsweat01

いちおう、マックの場合、内蔵のBluetoothを使った場合も、プリンストンのPTM-UBT4を使った場合も、Apple社MacOSXのドライバーでWiiRemoteJは動いてくれます。

プリンストンのPTM-UBT4はWindowsの場合、TOSHIBA社のドライバー(Blue Stack for Windows)で動いているんですが、Bluetoothのドライバーソフトが、WIDCOMMならWiiRemoteJが動いてくれるようなことが書いてあったので、少し調べてみました。

Windows用のBluetoothのドライバーソフト

(※同一会社でも、製品によっては対応しているドライバーが別のソフトの場合もありますので、詳細は各自で、それぞれ確認が必要です)

昨日、川崎へ行った時に、ヨドバシカメラで少し見たんですが、Class1が約2000円、Class2が1500円程度になっている中、WIDCOMMのソフトが付いているらしい、シグマSBTD01があったんですが、3200円(ほぼ定価)。3200円は出せないと断念。

帰ってから調べてたら、TIMELYのUSB-DO-BT/CLがWIDCOMMのようで、ここで、送料込みで1,498円だったので、注文してみました。とりあえずWIDCOMMでWiiRemoteJが?BlueCoveが?動くかどうか知りたいだけ。届くのが楽しみです。

けど、TOSHIBA社やITV社のドライバーのBluetoothアダプターを使っている人が多いと思うからなぁ。。。悩ましい。。。

なんだかダラダラと書いてしまいましたが、まだまだデバグ段階ですが、マックでは、こんな感じで動かせてます。
-------------------------------
   
-------------------------------

このソフト(仮名:RZ1WiiRemote)を使ってロボザックを動かしてみました。
-------------------------------
   
-------------------------------

----------------
にほんブログ村 科学ブログ ロボットへ
にほんブログ村

| | コメント (0) | トラックバック (0)

あれこれ考えてみる(Wiiクラッシックコントローラーで操作してみる...)

前に、「あれこれ考えてみる(Wiiリモコンでロボザックを操作してみる...)」で、Wiiリモコンでロボザックを動かす方法を紹介しましたが、川崎のヨドバシで、Wiiのクラッシックコントローラーを買ってきたので(マック上で申し訳ないですが)やってみましたpaper

相変わらず、RZ1Basicから直接Wiiのデータを扱えるようにしてないのでsweat01他のソフトの力をお借りしています。利用したのは、前回も紹介しましたDarwiin Remoteというソフトです。もしWindowsでやられる場合は、WiinRemoteでできると思います。

one全体の概略図
Omnigraffle_proscreensnapz004

twoDarwiinRemoteの設定を行う

DarwiinRemoteのインターフェイスは以下です。Darwiinremotescreensnapz004

クラッシックコントローラーを繋げていると、以下の画面も開きます。例えば「a」ボタンを押すと、画面上でそのボタンが赤くなります。
Darwiinremotescreensnapz005

初期設定を開いて、「Classic Controller」の各ボタンの設定をします。キーにしか割り付けられないので、アナログコントローラや、加速度センサーの値を扱えないのが痛いbearing

コントローラーのa,b,x,yボタンを押した時、キーボードのa,b,x,yを押したことに、up,left,right,downボタンを押した時、キーボードのu,l,r,dを押したことに、という感じで割り付けました。
Darwiinremotescreensnapz006

 

threeRZ1Basicの設定を行う

前回は、TX/RXポートを使いましたが、今回はオーディオプラグを使った例を示します。RZ1Basicの方の設定は以下な感じになります(設定はここらへんが参考になるかな)。

  • キーボードのa,b,x,y,u,d,....のキーを押して使うキーを登録します。
  • 受取りを「1」(第一変数を意味します)にします。
  • 番号は、第一変数に入れる値になります。

Rz1basicscreensnapz051

入力装置:Keyboard
設定:作った設定名(上記の場合0002.txt)
操作:オーティオプラグ

Rz1basicscreensnapz052

「開始」ボタンをクリックすれば、コントロールできます。

four動かしてみる
短いムービーですが、動かしている様子をマックの内蔵カメラで撮影し、その撮影状況をスクリーンショット(ムービー)にしましたので、見てみて下さいhappy01

----------

   

----------

five考えてみる
Wiiクラッシックコントローラーを使うと、Wiiリモコンは固定して置いておけるんで、ロボザックに赤外線LEDを付けて、ロボザックがどこにいるのかの位置確認が可能になりますねhappy01flair

----------------
にほんブログ村 科学ブログ ロボットへ
にほんブログ村

| | コメント (0) | トラックバック (0)

あれこれ考えてみる(Wiiリモコンでロボザックを操作してみる...)

直接は無理かぁdown

Wiiリモコンとか、SIXAXIS(シックス・アクシス:6軸:上から読んでも下から読んでも。。あ、横文字の場合は、右から読んでも左から読んでもって言うのかぁ?coldsweats01)と、RBT-001と(パソコンを介さずに)直接ペアリングして、ロボットをBluetoothの無線でコントロールしたいなぁと思って、Wiiリモコンで少しやってみました。けど、Wiiリモコンはアドレスとか名前とか取得できるんですが、ペアリングが確立されませんでした。。

諦める前に、いちおうRBT-001の製造元のRoboTech srlさんに聞いてみたら、以下の返事がきました。


Hi,

unfortunately we think it's impossible to directly connect WiiRemote and RBT-001 because they use different BT profiles: HID (Human Interface Device) the WiiRemote and SPP (Serial Port Profile) the RBT-001.

Kind regards,
RoboTech srl


少なくとも、HIDプロファイル対応してないと、直は無理なのかぁdown

以前、内容をよく読んでなかったんですが、「Using the PlayStation 3 controller in Bluetooth mode with Linux」を見た時、ロボザックでもできるといいなぁ〜と思ってたけど、このページ読むと、Gumstixというlinuxを積んでいるんですねdownそりゃぁ動かせるよなぁ〜annoyな〜んだって感じ。。。down

パソコンを介せばできるんだよsign01

ロボザックにパソコンしょわせる訳にはいかないので、直接Wiiリモコンや、SIXAXISでロボザックをBluetoothコントロールさせることはできないんですが、パソコンを介してなら今でも可能なんですよhappy01

oneWiiリモコンをパソコンで扱えるようにするソフトをダウンロードする

いろいろあるかと思いますが、例えば

をゲット!

twoWiiリモコンとパソをペアリング
Wiiリモコンの1と2を同時に押しながら、ダブルクリックでペアリングできます。
Parallels_desktopscreensnapz079

threeWiinRemoteを起動
Parallels_desktopscreensnapz080
fourうまく接続できているなら、Wiiリモコンを動かせば、グラフが動きます
Safariscreensnapz015

fiveキー割り付けします
OptionのPreferencesを選択
Parallels_desktopscreensnapz081

例えば、Upを選択し、Keysの「Press Keys Here」ところでキーボードの「8」を押し、忘れない様に「Set」ボタンをクリック。その他もキー割り付けして、「Apply」して終了
Finderscreensnapz014

sixエディターか何かを開いて、キー割り付けしたように入力されるか確認sign01Parallels_desktopscreensnapz082

sevenあとは、以前書いた、

週刊『My Robot』のBluetoothを繋げてみる計画(15)

で書いた方法を使えば、Wiiリモコンで、パソコンを介して、ロボザックをBluetooth無線コントロールができるようになりますsign03

----------------
にほんブログ村 科学ブログ ロボットへ
にほんブログ村

| | コメント (0) | トラックバック (0)

Wiiリモコン買ってしまった

Wiiは持ってないんだけど、

Johnny Chung Lee さんのWiiリモコンを使ったいろいろなアイディア見てたら、自分も何かやってみたくなってしまって、今日仕事帰りにWiiリモコンを買って帰りました。

MacもWinもWiiリモコンのライブラリがあるんだけど、ソースを解析して、とりあえずはRZ1Basicを介してロボットをコントロールできるようになればいいなぁ。。まだMacのソースコードしか見てないけど、全体的に理解するには時間がかかりそうσ(^_^;)アセアセ...

Macは、DarwiinRemoteというソフトが作られていて、設定でキー割り付けができるんで、大したことはできないにしろ、RZ1BasicのGamePadによるコントロールの機能で認識しているか見てみた。上と左の十字キーを押してみたところ、Leftと、Upの値が「1」になりましたhappy01

Darwiinremotescreensnapz001

ま、Wii対応は気長にやるとして、

まだインターフェイスがほとんどできてませんが(下図)、先日作ったETX,ERXのボードと、USB-PSコントローラーで、PCとETX,ERXデータの受送信ができるところまでできてます。もう少し出来上がってきたら、先日買ったBluetoothをロボザックに乗っけて試してみようかと思ってま〜す。

Rz1basicdebugscreensnapz006
ちなみに、左下に表示されている文字の、上の"C"がETXコマンドで受け取った文字、下の118が送信した文字です。


Wiiリモコン、横浜のヨドバシで3800円でしたが、検索すると4980円のと3800円のが出てくるんですが何が違うのでしょうか?

----------------
にほんブログ村 科学ブログ 
ロボットへ
にほんブログ村

| | コメント (2) | トラックバック (0)