2013-11-21 02:41:10 +08:00
|
|
|
# Cylon.js
|
2013-10-18 14:55:48 +08:00
|
|
|
|
2013-11-21 02:41:10 +08:00
|
|
|
Cylon.js (http://cylonjs.com) is a JavaScript framework for robotics and
|
|
|
|
physical computing using Node.js.
|
2013-10-18 14:55:48 +08:00
|
|
|
|
2013-11-21 02:41:10 +08:00
|
|
|
It provides a simple, yet powerful way to create solutions that incorporate
|
|
|
|
multiple, different hardware devices at the same time.
|
2013-10-26 00:11:58 +08:00
|
|
|
|
2013-11-21 02:41:10 +08:00
|
|
|
Want to use Ruby on robots? Check out our sister project Artoo
|
|
|
|
(http://artoo.io).
|
|
|
|
|
|
|
|
Want to use the Go programming language to power your robots? Check out our
|
|
|
|
sister project Gobot (http://gobot.io).
|
2013-10-26 00:19:08 +08:00
|
|
|
|
2013-11-25 05:12:08 +08:00
|
|
|
[![Build Status](https://secure.travis-ci.org/hybridgroup/cylon.png?branch=master)](http://travis-ci.org/hybridgroup/cylon)
|
2013-11-24 15:08:50 +08:00
|
|
|
|
2013-10-18 14:55:48 +08:00
|
|
|
## Getting Started
|
2013-10-23 05:18:31 +08:00
|
|
|
|
2013-11-21 02:41:10 +08:00
|
|
|
All you need to get started is the `cylon` module:
|
2013-10-18 14:55:48 +08:00
|
|
|
|
2013-11-21 02:41:10 +08:00
|
|
|
npm install cylon
|
|
|
|
|
|
|
|
Then install modules for whatever hardware support you want to use from your
|
|
|
|
robot (in this case, an Arduino using the Firmata protocol):
|
|
|
|
|
|
|
|
npm install cylon-firmata
|
2013-10-29 10:28:19 +08:00
|
|
|
|
2013-10-20 08:56:00 +08:00
|
|
|
## Examples
|
2013-10-23 05:18:31 +08:00
|
|
|
|
2013-11-21 02:41:10 +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-11-21 02:41:10 +08:00
|
|
|
|
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-11-21 02:41:10 +08:00
|
|
|
|
2013-11-25 01:44:57 +08:00
|
|
|
```
|
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-10-26 15:09:47 +08:00
|
|
|
|
2013-11-21 02:41:10 +08:00
|
|
|
Cylon.js has a extensible system for connecting to hardware devices. The
|
|
|
|
following robotics, physical computing, or software platforms are currently
|
|
|
|
supported:
|
|
|
|
|
|
|
|
- [Ardrone](http://ardrone2.parrot.com/) <==> [Adaptor/Drivers](https://github.com/hybridgroup/cylon-ardrone)
|
|
|
|
- [Arduino](http://www.arduino.cc/) <==> [Adaptor](https://github.com/hybridgroup/cylon-firmata)
|
|
|
|
- [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-21 02:41:10 +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-21 02:41:10 +08:00
|
|
|
Support for devices that use Inter-Integrated Circuit (I2C) have a shared set of
|
|
|
|
drivers provded using the cylon-i2c module:
|
2013-11-04 11:18:06 +08:00
|
|
|
|
|
|
|
- [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-11-21 02:41:10 +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
|
2013-10-30 15:44:08 +08:00
|
|
|
|
|
|
|
Thank you!
|
2013-10-21 05:11:58 +08:00
|
|
|
|
2013-10-18 14:55:48 +08:00
|
|
|
## Contributing
|
2013-11-21 02:41:10 +08:00
|
|
|
|
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-11-21 02:41:10 +08:00
|
|
|
|
2013-11-25 05:12:08 +08:00
|
|
|
[![NPM](https://nodei.co/npm/cylon.png?compact=true)](https://nodei.co/npm/cylon/)
|
2013-10-30 15:46:10 +08:00
|
|
|
|
2013-11-25 05:12:08 +08:00
|
|
|
Version 0.5.0 - Improve API, add GPIO support for reuse in adaptors
|
|
|
|
|
|
|
|
Version 0.4.0 - Refactor proxy in Cylon.Basestar, improve API
|
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-25 05:12:08 +08:00
|
|
|
Version 0.2.0 - Cylon.Basestar to help develop external adaptors/drivers
|
|
|
|
|
|
|
|
Version 0.1.0 - Initial release for ongoing development
|
2013-11-07 22:23:59 +08:00
|
|
|
|
2013-10-18 14:55:48 +08:00
|
|
|
## License
|
2013-11-21 02:41:10 +08:00
|
|
|
|
2013-10-19 13:32:23 +08:00
|
|
|
Copyright (c) 2013 The Hybrid Group. Licensed under the Apache 2.0 license.
|