Cylonが熱い

node.jsで作成されたロボット用のフレームワークCylon」。よくできてるなぁ。ちょっと使ってみる。
node.jsでロボット、ドローン、ガジェットが簡単に制御できる。よくできているなぁ。マルチのデバイスに対応できるように作られているので、拡張性がかなり高い。ライセンスがAPL2.0というのが面倒(知財放棄の点)だが、まぁ、よしとしよう。

githubに移動して、ソースを読みあさる。面白そうなところをピックアップ。


■マルチボット対応

skynetのサンプルから

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);
});

Bluetooth対応
Spheroのサンプルから。

動かすデバイス毎に繋ぐ手段を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() {});