Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

JavaScript framework for robotics, drones, and the Internet of Things (IoT)

License

NotificationsYou must be signed in to change notification settings

hybridgroup/cylon

Repository files navigation

Cylon.js

Cylon.js is a JavaScript framework for robotics, physical computing, and the Internet of Things (IoT).

It provides a simple, but powerful way to create solutions that incorporatemultiple, different hardware devices concurrently.

Want to use Node.js for robots, drones, and IoT devices? You are in the right place.

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.

Build Status:

Build StatusCode ClimateCode Climate

Getting Started

Installation

All you need to get started on a new robot is thecylon module:

npm install cylon

With the core module installed, now install the modules for whatever hardwaresupport you need. For the Arduino + LED blink example, we'll need thefirmata,gpio, andi2c modules:

npm install cylon-firmata cylon-gpio cylon-i2c

Examples

Arduino + LED

The below example connects to an Arduino over a serial connection, and blinks anLED once per second.

The example requires that the Arduino have the Firmata sketch installed; whichcan be obtained either through the Ardunio IDE or thegort arduino upload firmata command available ingort.

varCylon=require('cylon');// define the robotvarrobot=Cylon.robot({// change the port to the correct one for your Arduinoconnections:{arduino:{adaptor:'firmata',port:'/dev/ttyACM0'}},devices:{led:{driver:'led',pin:13}},work:function(my){every((1).second(),my.led.toggle);}});// connect to the Arduino and start workingrobot.start();

Parrot ARDrone 2.0

varCylon=require('cylon');Cylon.robot({connections:{ardrone:{adaptor:'ardrone',port:'192.168.1.1'}},devices:{drone:{driver:'ardrone'}},work:function(my){my.drone.takeoff();after((10).seconds(),my.drone.land);after((15).seconds(),my.drone.stop);}}).start();

Cat Toy (Leap Motion + Digispark + Servos)

varCylon=require('cylon');Cylon.robot({connections:{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'}},work:function(my){my.x=90;my.z=90;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);});every(100,function(){my.servo1.angle(my.x);my.servo2.angle(my.z);console.log(my.servo1.currentAngle()+", "+my.servo2.currentAngle());});}}).start();

Multiple Spheros + HTTP API Plugin

To use the HTTP API plugin, first install it's NPM module:

$ npm install cylon-api-http

Then it can be used in scripts:

varCylon=require('cylon');// tell the HTTP API plugin to listen for requests at https://localhost:4000Cylon.api("http",{port:4000});varbots=[{port:'/dev/rfcomm0',name:'Thelma'},{port:'/dev/rfcomm1',name:'Louise'}];bots.forEach(function(bot){Cylon.robot({name:bot.name,connections:{sphero:{adaptor:"sphero",port:bot.port}},devices:{sphero:{driver:"sphero"}},work:function(my){every((1).second(),function(){console.log(my.name);my.sphero.setRandomColor();my.sphero.roll(60,Math.floor(Math.random()*360));});}});});// start up all robots at onceCylon.start();

Fluent Syntax

For those more familiar with jQuery, D3, or other fluent-style JavaScriptlibraries, Cylon.JS also supports a chainable syntax:

varCylon=require('cylon');Cylon.robot().connection('arduino',{adaptor:'firmata',port:'/dev/ttyACM0'}).device('led',{driver:'led',pin:13}).on('ready',function(bot){setInterval(function(){bot.led.toggle();},1000);});Cylon.start();

Hardware Support

Cylon.js has an extensible syntax for connecting to multiple, different hardwaredevices. The following 36 platforms are currently supported:

PlatformSupport
ARDronecylon-ardrone
Arduinocylon-firmata
Arduino YUNcylon-firmata
AT&T M2Xcylon-m2x
Audiocylon-audio
Beaglebone Blackcylon-beaglebone
Bebopcylon-bebop
Bluetooth LEcylon-ble
Crazyfliecylon-crazyflie
Digisparkcylon-digispark
Electric Impcylon-imp
Intel Edisoncylon-intel-iot
Intel Galileocylon-intel-iot
Intel IoT Analyticscylon-intel-iot-analytics
Joystickcylon-joystick
Keyboardcylon-keyboard
Leap Motioncylon-leapmotion
MiPcylon-mip
MQTTcylon-mqtt
Nestcylon-nest
Neuroskycylon-neurosky
OpenCVcylon-opencv
Phillips Huecylon-hue
Pebblecylon-pebble
Pinocciocylon-pinoccio
PowerUp 3.0cylon-powerup
Rapirocylon-rapiro
Raspberry Picylon-raspi
Salesforcecylon-force
Skynetcylon-skynet
Sparkcylon-spark
Speechcylon-speech
Spherocylon-sphero
Sphero BLEcylon-sphero-ble
Tesselcylon-tessel
WICED Sensecylon-wiced-sense

Our implementation of GPIO (General Purpose Input/Output) allows for a sharedset of drivers supporting 14 different devices:

  • GPIO <=>Drivers
    • Analog Sensor
    • Button
    • Continuous Servo
    • Direct Pin
    • IR Range Sensor
    • LED
    • Makey Button (high-resistance button like theMakeyMakey)
    • Maxbotix Ultrasonic Range Finder
    • Motor
    • Relay
    • RGB LED
    • Servo
    • Temperature Sensor
    • TP401 Gas Sensor

We also support 14 different I2C (Inter-Integrated Circuit) devicesthrough a sharedcylon-i2c module:

  • I2C <=>Drivers
    • BlinkM RGB LED
    • BMP180 Barometric Pressure + Temperature sensor
    • Direct I2C
    • HMC6352 Digital Compass
    • JHD1313M1 LCD with RGB Backlight
    • LCD
    • LIDAR-Lite
    • LSM9DS0G 9 Degrees of Freedom IMU
    • LSM9DS0XM 9 Degrees of Freedom IMU
    • MAG3110 3-Axis Digital Magnetometer
    • MPL115A2 Digital Barometer & Thermometer
    • MPU6050 Triple Axis Accelerometer and Gyro
    • PCA9544a 4-Channel I2C Mux
    • PCA9685 16-Channel 12-bit PWM/Servo Driver

In addition to our officially supported platforms, we have the following 8 user contributed platforms:

PlatformSupport
APC UPScylon-apcupsd
iBeaconcylon-beacon
Myocylon-myo
One-Wirecylon-one-wire
Parrot Rolling Spidercylon-rolling-spider
PCDuinocylon-pcduino
Telegramcylon-telegram
WeMocylon-wemo

We'll also have many more platforms and drivers coming soon,follow us on Twitter for updates.

Browser & Mobile Support

Cylon.js can be run directly in-browser, using thebrowserify 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 infoin our docs.

API Plugins

Cylon.js has support for different API plugins that can be used to interact with your robots remotely.At this time we have support forhttp/https,mqtt, andsocket.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 callCylon#api in your robot's script:

varCylon=require("cylon");// For httpCylon.api('http');// Or for Socket.ioCylon.api('socketio');

Then visithttps://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 docshere.

CLI

Cylon uses the Gorthttp://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 athttps://github.com/hybridgroup/cylon-cli.

Documentation

We're busy adding documentation to our website, check it out atcylonjs.com/documentation.

If you want to help with documentation, you can find the code for our website at on thehttps://github.com/hybridgroup/cylon-site.

Contributing

For our contribution guidelines, please go toCONTRIBUTING.md.

Release History

For the release history, please go toRELEASES.md.

License

Copyright (c) 2013-2016 The Hybrid Group. Licensed under the Apache 2.0 license.


[8]ページ先頭

©2009-2025 Movatter.jp