cylon/README.md

124 lines
3.8 KiB
Markdown
Raw Normal View History

2013-11-21 02:41:10 +08:00
# Cylon.js
2013-10-18 14:55:48 +08:00
2013-11-24 15:03:46 +08:00
[![NPM](https://nodei.co/npm/cylon.png?compact=true)](https://nodei.co/npm/cylon/) [![Build Status](https://secure.travis-ci.org/hybridgroup/cylon.png?branch=master)](http://travis-ci.org/hybridgroup/cylon)
2013-10-24 11:31:02 +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-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-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
work: function(my) {
2013-10-20 08:53:53 +08:00
// we do our thing here
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-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
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
```
## 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-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-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-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.