Posted at

Node.jsで複数Myoセンサー受信・OSC送信設定

More than 3 years have passed since last update.


経緯


  • Myoを一台使う分には問題なかったけど複数台使うのにC++のSDK使うのが個人的にボリューミーだった&面倒くさかった。

  • Pythonなども試そうと思ったけどNode.jsだと公式で出ていたのでそれを利用した。

  • また取得したデータをOSCで送信したかったのでC++のOSCPackつかうより楽にやりたかった


環境


  • Windows10

  • VS code

  • node.js


    • Myo

    • node-OSC



  • Myox3台


やり方



  • githubのドキュメントを見ればだいたい分かる感じだけど雰囲気でifで振り分けたらわけられたのでその方法

//まずはライブラリ入れ込み

var osc = require('node-osc');
var Myo = require('myo');

//oscSetting
var client = new osc.Client('10.0.1.144', 8000);

//Start talking with Myo Connect
Myo.connect();

//connecting status
Myo.on('connected', function(data, timestamp){
console.log('connected!',this.name)
});

//振り分けはif分で
//Myo Connectで設定している名前で振り分け
//その他MACアドレスなどでもわけられそうな感じ
//MyoConnectでジェスチャーの取得解除的な動作で
//DoubleTapが割り当てられているのでそれは解除しておいたほうがご動作防げる

Myo.on('pose',function(poses){ //ざっくりポーズを取得
if(this.name == 'MYO1'){ //名前をMYO1に設定
if(poses=='fist'){
client.send('/pose',1); //OSC sending
console.log(this.name,poses);
}
}else if(this.name == 'MYO2'){ //名前をMYO2に設定
if(poses=='fist'){
client.send('/pose',2); //OSC sending
console.log(this.name,poses);
}
}else if(this.name == 'MYO3'){ //名前をMYO3に設定
if(poses=='fist'){
client.send('/pose',3); //OSC sending
console.log(this.name,poses);
}
}
});
//方向付けのオリエンテーションの取り方 多分ジャイロも加速度も同じ取り方できるはず
Myo.on('orientation',function(ori){
if(this.name == 'MYO1'){
client.send('/orien1',ori.x,ori.y,ori.z);
console.log(this.name,ori.x,ori.y,ori.z);
}else if(this.name == 'MYO2'){
client.send('/orien2',ori.x,ori.y,ori.z);
console.log(this.name,ori.x,ori.y,ori.z);
}else if(this.name == 'MYO3'){
client.send('/orien3',ori.x,ori.y,ori.z);
console.log(this.name,ori.x,ori.y,ori.z);
}
});

以上!簡単!

だけどこれだとwebとか絡めないと使えない?かわからないけどネイティブで動かしたい。けどコンソールで呼び出しじゃなくて起動させたいとき


バッシュファイルでNodeを書く方法


  • textEditor新規ファイルを作り以下を細書に記載することで組めるらしい。

rem=0;

node %~0 %*
pause
exit
//これ以降にNodejsを書き連ねていく
(略)

これで.batで保存

生成されたbatファイルをクリックすればNodejsが起動する