2013-10-26 00:19:08 +08:00
# Cylon.js
2013-10-18 14:55:48 +08:00
2013-10-26 00:11:58 +08:00
Cylon.js (http://cylonjs.com) is a JavaScript framework for robotics and physical computing using node.js
2013-10-24 11:31:02 +08:00
It provides a simple, yet powerful way to create solutions that incorporate multiple, different hardware devices at the same time.
2013-10-18 14:55:48 +08:00
2013-10-26 00:11:58 +08:00
Want to use Ruby on robots? Check out our sister project Artoo (http://artoo.io)
2013-10-26 00:19:08 +08:00
[![Build Status ](https://secure.travis-ci.org/hybridgroup/cylon.png?branch=master )](http://travis-ci.org/hybridgroup/cylon)
2013-10-18 14:55:48 +08:00
## Getting Started
2013-10-23 05:18:31 +08:00
2013-10-18 14:55:48 +08:00
Install the module with: `npm install cylon`
2013-10-29 10:28:19 +08:00
Then install modules for whatever hardware support you want to use from your robot. For example, `npm install cylon-firmata` to use Cylon with an Arduino using the Firmata protocol.
2013-10-20 08:56:00 +08:00
## Examples
2013-10-23 05:18:31 +08:00
2013-10-29 10:28:19 +08:00
**Note:** before running examples in the `examples/` dir from source, make sure to compile using `grunt coffee` first.
2013-10-23 05:18:31 +08:00
### Javascript:
2013-10-18 14:55:48 +08:00
```javascript
2013-10-24 11:07:35 +08:00
var Cylon = require("cylon");
2013-10-23 05:18:31 +08:00
2013-10-20 08:53:53 +08:00
// Initialize the robot
2013-10-24 11:07:35 +08:00
var robot = Cylon.robot({
2013-10-20 08:56:49 +08:00
connection: { name: 'arduino', adaptor: 'firmata', port: '/dev/ttyACM0' },
device: { name: 'led', driver: 'led', pin: 13 },
2013-10-23 05:18:31 +08:00
2013-10-26 00:11:58 +08:00
work: function(my) {
2013-10-20 08:53:53 +08:00
// we do our thing here
2013-10-26 00:11:58 +08:00
every((1).second(), function() { my.led.toggle(); });
2013-10-20 08:53:53 +08:00
}
});
// start working
2013-10-20 11:31:29 +08:00
robot.start();
2013-10-18 14:55:48 +08:00
```
2013-10-23 09:33:54 +08:00
### CoffeeScript:
2013-10-18 14:55:48 +08:00
```coffee-script
2013-10-24 11:07:35 +08:00
Cylon = require "cylon"
2013-10-23 05:18:31 +08:00
2013-10-20 08:53:53 +08:00
# Initialize the robot
2013-10-24 11:07:35 +08:00
robot = Cylon.robot
2013-10-20 08:53:53 +08:00
connection:
2013-10-26 15:26:02 +08:00
name: 'arduino', adaptor: 'firmata', port: '/dev/ttyACM0'
2013-10-23 05:18:31 +08:00
device:
2013-10-26 15:26:02 +08:00
name: 'led', driver: 'led', pin: 13
2013-10-23 05:18:31 +08:00
2013-10-26 00:11:58 +08:00
work: (my) ->
2013-10-20 08:53:53 +08:00
# we do our thing here
2013-10-26 15:26:02 +08:00
every 1.second(), -> my.led.toggle()
2013-10-20 08:53:53 +08:00
2013-10-26 15:26:02 +08:00
robot.start()
2013-10-18 14:55:48 +08:00
```
2013-10-26 04:50:53 +08:00
## Hardware Support
2013-11-17 00:05:56 +08:00
Cylon.js has a extensible system for connecting to hardware devices. The following robotics, physical computing, or software platforms are currently supported:
2013-10-26 15:09:47 +08:00
2013-11-17 00:05:56 +08:00
- [Ardrone ](http://ardrone2.parrot.com/ ) < => [Adaptor/Drivers ](https://github.com/hybridgroup/cylon-ardrone )
2013-10-26 15:09:47 +08:00
- [Arduino ](http://www.arduino.cc/ ) < => [Adaptor ](https://github.com/hybridgroup/cylon-firmata )
2013-11-17 00:05:56 +08:00
- [Leap Motion ](https://www.leapmotion.com/ ) < => [Adaptor/Driver ](https://github.com/hybridgroup/cylon-leapmotion )
- [Raspberry Pi ](http://www.raspberrypi.org/ ) < => [Adaptor ](https://github.com/hybridgroup/cylon-raspi )
- [Salesforce ](http://www.force.com/ ) < => [Adaptor/Driver ](https://github.com/hybridgroup/cylon-force )
- [Sphero ](http://www.gosphero.com/ ) < => [Adaptor/Driver ](https://github.com/hybridgroup/cylon-sphero )
2013-10-26 15:09:47 +08:00
2013-11-04 11:18:06 +08:00
Support for many devices that use General Purpose Input/Output (GPIO) have a shared set of drivers provded using the cylon-gpio module:
2013-10-29 10:28:19 +08:00
2013-10-29 12:48:29 +08:00
- [GPIO ](https://en.wikipedia.org/wiki/General_Purpose_Input/Output ) < => [Drivers ](https://github.com/hybridgroup/cylon-gpio )
2013-10-29 10:28:19 +08:00
2013-11-04 11:18:06 +08:00
Support for devices that use Inter-Integrated Circuit (I2C) have a shared set of drivers provded using the cylon-i2c module:
- [I2C ](https://en.wikipedia.org/wiki/I%C2%B2C ) < => [Drivers ](https://github.com/hybridgroup/cylon-i2c )
2013-10-30 15:44:08 +08:00
More platforms and drivers are coming soon...
2013-10-26 04:50:53 +08:00
2013-10-21 05:11:58 +08:00
## Documentation
2013-10-30 15:44:08 +08:00
We're busy adding documentation to our web site at http://cylonjs.com/ please check there as we continue to work on Cylon.js
Thank you!
2013-10-21 05:11:58 +08:00
2013-10-18 14:55:48 +08:00
## Contributing
2013-10-23 05:18:31 +08:00
In lieu of a formal styleguide, take care to maintain the existing coding style.
Add unit tests for any new or changed functionality. Lint and test your code
using [Grunt ](http://gruntjs.com/ ).
2013-10-18 14:55:48 +08:00
## Release History
2013-10-29 10:28:19 +08:00
Version 0.1.0 - Initial release for ongoing development
2013-10-30 15:46:10 +08:00
2013-10-30 15:44:08 +08:00
Version 0.2.0 - Cylon.Basestar to help develop external adaptors/drivers
2013-10-18 14:55:48 +08:00
2013-11-02 09:44:32 +08:00
Version 0.3.0 - Improved Cylon.Basestar, and added API
2013-11-07 22:23:59 +08:00
Version 0.4.0 - Refactor proxy in Cylon.Basestar, improve API
2013-10-18 14:55:48 +08:00
## License
2013-10-19 13:32:23 +08:00
Copyright (c) 2013 The Hybrid Group. Licensed under the Apache 2.0 license.