Hatena::ブログ(Diary)

ちくたく このページをアンテナに追加

2014-09-05

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みたいなUIArduinoみたいなデバイスを同じレベルで扱えるところが面白い。すべては同じ思想。

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