Cylonが熱い
node.jsで作成されたロボット用のフレームワーク「Cylon」。よくできてるなぁ。ちょっと使ってみる。
node.jsでロボット、ドローン、ガジェットが簡単に制御できる。よくできているなぁ。マルチのデバイスに対応できるように作られているので、拡張性がかなり高い。ライセンスがAPL2.0というのが面倒(知財放棄の点)だが、まぁ、よしとしよう。
githubに移動して、ソースを読みあさる。面白そうなところをピックアップ。
■マルチボット対応
Cylonは複数のロボットインスタンスを埋め込めるわけね。
Cylon.robot(skynetBot0);
Cylon.robot(skynetBot1);
■LeapMotion対応
cattoyのサンプルから。
皆、LeapMotion好きだなぁ。
connections: [
{ name: 'leapmotion', adaptor: 'leapmotion', port: '127.0.0.1:6437' }
],}devices: [
{name: 'leapmotion', driver: 'leapmotion', connection: 'leapmotion'}
],
my.leapmotion.on('hand', function(hand) {
my['x'] = hand.palmX.fromScale(-300, 300).toScale(30, 150);
my['z'] = hand.palmZ.fromScale(-300, 300).toScale(30, 150);
});
動かすデバイス毎に繋ぐ手段をadaptorとして実装できる。SpheroはBluetoothに対応。
var bots = [
{ port: '/dev/rfcomm0', name: 'Thelma' },
{ port: '/dev/rfcomm1', name: 'Louise' },
{ port: '/dev/rfcomm2', name: 'Grace' },
{ port: '/dev/rfcomm3', name: 'Ada' }
];
■USB対応
Crazyflieのサンプルから。
Crazyflieはオープンハード、ソースの小型のドローン。
これはUSBに差すドングルと通信している。
port: "radio://1/10/250KPS"
■デバイス毎にメソッド追加
disparkのサンプルから。
デバイス毎にメソッドを追加できる。
return my.led.toggle();
■ネットワーク対応
helloのサンプルから。
ネットワークループバックとかもadaptorで作れる。機能はdriverにマッピング。
connection: { name: 'loopback', adaptor: 'loopback' },
device: { name: 'ping', driver: 'ping' },
leap_ardroneのサンプルから。
普通にネットワークも使えるadaptorがあるということ。カスタマイズすれば使えそう。
{ name: 'leapmotion', adaptor: 'leapmotion', port: '127.0.0.1:6437' },
{ name: 'ardrone', adaptor: 'ardrone', port: '192.168.1.1' },
■Arduino対応
leap_arduinoのサンプルから。
leapmotionみたいなUIとArduinoみたいなデバイスを同じレベルで扱えるところが面白い。すべては同じ思想。
connections: [{ name: 'leapmotion', adaptor: 'leapmotion', port: '127.0.0.1:6437' },
{ name: 'arduino', adaptor: 'firmata', port: '/dev/ttyACM0' }],devices: [{ name: 'leapmotion', driver: 'leapmotion', connection: 'leapmotion' },
{ name: 'led', driver: 'led', pin: 13, connection: 'arduino' }],
■API
roboto_commandsのサンプルから。
Cylon.api();
・・・
commands: function() {
return {
say_relax: this.sayRelax
};
sphero-pebble-sfのサンプルから。
これでWeb経由でアクセスできるらしい。
Cylon.api({ host: '0.0.0.0', port: '8080' });
■Salesforce対応
salsforceのサンプルから。
sf-spheroのサンプルから。
Salesforceの何とつなぐんだろう?
device: { name: 'salesforce', driver: 'force' },
■テンプレート
masterのサンプル。
これはテンプレートです。
■タイマライブラリ
使いやすそう。
every(100, function() {});
after(10.seconds(), function() {});