It provides a simple, but powerful way to create solutions that incorporate multiple, different hardware devices concurrently.
Want to use Ruby on robots? Check out our sister project, Artoo.
Want to use Golang to power your robots? Check out our sister project, Gobot.
All you need to get started on a new robot is the
npm install cylon
With the core module installed, now install the modules for whatever hardware
support you need. For the Arduino + LED blink example, we'll need the
npm install cylon-firmata cylon-gpio cylon-i2c
The below example connects to an Arduino over a serial connection, and blinks an LED once per second.
The example requires that the Arduino have the Firmata sketch installed; which
can be obtained either through the Ardunio IDE or the
gort arduino upload firmata command available in gort.
var Cylon = require'cylon';// define the robotvar robot = Cylonrobot// change the port to the correct one for your Arduinoconnections:arduino: adaptor: 'firmata' port: '/dev/ttyACM0'devices:led: driver: 'led' pin: 13every1second myledtoggle;;// connect to the Arduino and start workingrobotstart;
var Cylon = require'cylon';Cylonrobotconnections:ardrone: adaptor: 'ardrone' port: '192.168.1.1'devices:drone: driver: 'ardrone'mydronetakeoff;after10seconds mydroneland;after15seconds mydronestop;start;
var Cylon = require'cylon';Cylonrobotconnections:digispark: adaptor: 'digispark'leapmotion: adaptor: 'leapmotion'devices:servo1: driver: 'servo' pin: 0 connection: 'digispark'servo2: driver: 'servo' pin: 1 connection: 'digispark'leapmotion: driver: 'leapmotion' connection: 'leapmotion'myx = 90;myz = 90;myleapmotionon'hand'myx = handpalmXfromScale-300 300toScale30 150;myz = handpalmZfromScale-300 300toScale30 150;;every100myservo1anglemyx;myservo2anglemyz;console.logmyservo1currentAngle + ", " + myservo2currentAngle;;start;
To use the HTTP API plugin, first install it's NPM module:
$ npm install cylon-api-http
Then it can be used in scripts:
var Cylon = require'cylon';// tell the HTTP API plugin to listen for requests atCylonapi"http" port: 4000 ;var bots =port: '/dev/rfcomm0' name: 'Thelma'port: '/dev/rfcomm1' name: 'Louise';botsforEachCylonrobotname: botnameconnections:sphero: adaptor: "sphero" port: botportdevices:sphero: driver: "sphero"every1secondconsole.logmyname;myspherosetRandomColor;myspheroroll60 MathfloorMathrandom * 360;;;;// start up all robots at onceCylonstart;
var Cylon = require'cylon';Cylonrobotconnection'arduino' adaptor: 'firmata' port: '/dev/ttyACM0'device'led' driver: 'led' pin: 13on'ready'setIntervalbotledtoggle;1000;;Cylonstart;
Cylon.js has an extensible syntax for connecting to multiple, different hardware devices. The following 36 platforms are currently supported:
|Intel IoT Analytics||cylon-intel-iot-analytics|
Our implementation of GPIO (General Purpose Input/Output) allows for a shared set of drivers supporting a number of devices:
Additionally, we also support a number of I2C (Inter-Integrated Circuit) devices
through a shared
In addition to our supported platforms, we have the following user contributed platforms:
|Parrot Rolling Spider||cylon-rolling-spider|
We'll also have many more platforms and drivers coming soon, follow us on Twitter for updates.
Cylon.js can be run directly in-browser, using the
browserify NPM module.
You can also run it from withing a Chrome connected app, or a PhoneGap mobile app.
For more info on browser support, and for help with different configurations, you can find more info in our docs.
Cylon.js has support for different API plugins that can be used to interact with your robots remotely. At this time we have support for http/https, mqtt, and socket.io with more coming in the near future.
To use an API plugin, install it alongside Cylon:
$ npm install cylon-api-http cylon-api-socketio
Then, all you need to do is call
Cylon#api in your robot's script:
var Cylon = require"cylon";// For httpCylonapi'http';// Or for Socket.ioCylonapi'socketio';
https://localhost:3000/ and you are ready to control your robots from a web browser!
You can check out more information on the Cylon API in the docs here.
Cylon uses the Gort http://gort.io Command Line Interface (CLI) so you can access important features right from the command line. We call it "RobotOps", aka "DevOps For Robotics". You can scan, connect, update device firmware, and more!
Cylon also has its own CLI to generate new robots, adaptors, and drivers. You can check it out at https://github.com/hybridgroup/cylon-cli.
We're busy adding documentation to our website, check it out at cylonjs.com/documentation.
If you want to help with documentation, you can find the code for our website at on the https://github.com/hybridgroup/cylon-site.
For our contribution guidelines, please go to https://github.com/hybridgroup/cylon/blob/master/CONTRIBUTING.md .
For the release history, please go to https://github.com/hybridgroup/cylon/blob/master/RELEASES.md .
Copyright (c) 2013-2015 The Hybrid Group. Licensed under the Apache 2.0 license.