202 lines
7.4 KiB
Markdown
202 lines
7.4 KiB
Markdown
[![Gobot](https://raw.githubusercontent.com/hybridgroup/gobot-site/master/source/images/elements/gobot-logo-small.png)](http://gobot.io/)
|
|
|
|
Gobot (http://gobot.io/) is a framework using the Go programming language (http://golang.org/) for robotics, physical computing, and the Internet of Things.
|
|
|
|
It provides a simple, yet powerful way to create solutions that incorporate multiple, different hardware devices at the same time.
|
|
|
|
Want to use Javascript robotics? Check out our sister project Cylon.js (http://cylonjs.com/)
|
|
|
|
Want to use Ruby on robots? Check out our sister project Artoo (http://artoo.io)
|
|
|
|
[![GoDoc](https://godoc.org/github.com/hybridgroup/gobot?status.svg)](https://godoc.org/github.com/hybridgroup/gobot)
|
|
[![Build Status](https://travis-ci.org/hybridgroup/gobot.png?branch=dev)](https://travis-ci.org/hybridgroup/gobot)
|
|
[![Coverage Status](https://coveralls.io/repos/github/hybridgroup/gobot/badge.svg?branch=dev)](https://coveralls.io/github/hybridgroup/gobot?branch=dev)
|
|
[![Go Report Card](https://goreportcard.com/badge/hybridgroup/gobot)](https://goreportcard.com/report/hybridgroup/gobot)
|
|
|
|
## Getting Started
|
|
|
|
Get the Gobot source with: `go get -d -u github.com/hybridgroup/gobot/...`
|
|
|
|
## Examples
|
|
|
|
#### Gobot with Arduino
|
|
|
|
```go
|
|
package main
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/hybridgroup/gobot"
|
|
"github.com/hybridgroup/gobot/platforms/firmata"
|
|
"github.com/hybridgroup/gobot/platforms/gpio"
|
|
)
|
|
|
|
func main() {
|
|
gbot := gobot.NewGobot()
|
|
|
|
firmataAdaptor := firmata.NewFirmataAdaptor("arduino", "/dev/ttyACM0")
|
|
led := gpio.NewLedDriver(firmataAdaptor, "led", "13")
|
|
|
|
work := func() {
|
|
gobot.Every(1*time.Second, func() {
|
|
led.Toggle()
|
|
})
|
|
}
|
|
|
|
robot := gobot.NewRobot("bot",
|
|
[]gobot.Connection{firmataAdaptor},
|
|
[]gobot.Device{led},
|
|
work,
|
|
)
|
|
|
|
gbot.AddRobot(robot)
|
|
|
|
gbot.Start()
|
|
}
|
|
```
|
|
|
|
#### Gobot with Sphero
|
|
|
|
```go
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
|
|
"github.com/hybridgroup/gobot"
|
|
"github.com/hybridgroup/gobot/platforms/sphero"
|
|
)
|
|
|
|
func main() {
|
|
gbot := gobot.NewGobot()
|
|
|
|
adaptor := sphero.NewSpheroAdaptor("sphero", "/dev/rfcomm0")
|
|
driver := sphero.NewSpheroDriver(adaptor, "sphero")
|
|
|
|
work := func() {
|
|
gobot.Every(3*time.Second, func() {
|
|
driver.Roll(30, uint16(gobot.Rand(360)))
|
|
})
|
|
}
|
|
|
|
robot := gobot.NewRobot("sphero",
|
|
[]gobot.Connection{adaptor},
|
|
[]gobot.Device{driver},
|
|
work,
|
|
)
|
|
|
|
gbot.AddRobot(robot)
|
|
|
|
gbot.Start()
|
|
}
|
|
```
|
|
|
|
## Hardware Support
|
|
Gobot has a extensible system for connecting to hardware devices. The following robotics and physical computing platforms are currently supported:
|
|
|
|
- [Ardrone](http://ardrone2.parrot.com/) <=> [Package](https://github.com/hybridgroup/gobot/tree/master/platforms/ardrone)
|
|
- [Arduino](http://www.arduino.cc/) <=> [Package](https://github.com/hybridgroup/gobot/tree/master/platforms/firmata)
|
|
- Audio <=> [Package](https://github.com/hybridgroup/gobot/tree/master/platforms/audio)
|
|
- [Beaglebone Black](http://beagleboard.org/Products/BeagleBone+Black/) <=> [Package](https://github.com/hybridgroup/gobot/tree/master/platforms/beaglebone)
|
|
- [Bebop](http://www.parrot.com/usa/products/bebop-drone/) <=> [Package](https://github.com/hybridgroup/gobot/tree/master/platforms/bebop)
|
|
- [C.H.I.P](http://www.nextthing.co/pages/chip) <=> [Package](https://github.com/hybridgroup/gobot/tree/master/platforms/chip)
|
|
- [Digispark](http://digistump.com/products/1) <=> [Package](https://github.com/hybridgroup/gobot/tree/master/platforms/digispark)
|
|
- [Intel Edison](http://www.intel.com/content/www/us/en/do-it-yourself/edison.html) <=> [Package](https://github.com/hybridgroup/gobot/tree/master/platforms/intel-iot/edison)
|
|
- [Joystick](http://en.wikipedia.org/wiki/Joystick) <=> [Package](https://github.com/hybridgroup/gobot/tree/master/platforms/joystick)
|
|
- [Keyboard](https://en.wikipedia.org/wiki/Computer_keyboard) <=> [Package](https://github.com/hybridgroup/gobot/tree/master/platforms/keyboard)
|
|
- [Leap Motion](https://www.leapmotion.com/) <=> [Package](https://github.com/hybridgroup/gobot/tree/master/platforms/leapmotion)
|
|
- [MavLink](http://qgroundcontrol.org/mavlink/start) <=> [Package](https://github.com/hybridgroup/gobot/tree/master/platforms/mavlink)
|
|
- [MQTT](http://mqtt.org/) <=> [Package](https://github.com/hybridgroup/gobot/tree/master/platforms/mqtt)
|
|
- [Neurosky](http://neurosky.com/products-markets/eeg-biosensors/hardware/) <=> [Package](https://github.com/hybridgroup/gobot/tree/master/platforms/neurosky)
|
|
- [OpenCV](http://opencv.org/) <=> [Package](https://github.com/hybridgroup/gobot/tree/master/platforms/opencv)
|
|
- [Pebble](https://www.getpebble.com/) <=> [Package](https://github.com/hybridgroup/gobot/tree/master/platforms/pebble)
|
|
- [Raspberry Pi](http://www.raspberrypi.org/) <=> [Package](https://github.com/hybridgroup/gobot/tree/master/platforms/raspi)
|
|
- [Spark](https://www.spark.io/) <=> [Package](https://github.com/hybridgroup/gobot/tree/master/platforms/spark)
|
|
- [Sphero](http://www.gosphero.com/) <=> [Package](https://github.com/hybridgroup/gobot/tree/master/platforms/sphero)
|
|
|
|
Support for many devices that use General Purpose Input/Output (GPIO) have
|
|
a shared set of drivers provided using the `gobot/platforms/gpio` package:
|
|
|
|
- [GPIO](https://en.wikipedia.org/wiki/General_Purpose_Input/Output) <=> [Drivers](https://github.com/hybridgroup/gobot/tree/master/platforms/gpio)
|
|
- Analog Sensor
|
|
- Button
|
|
- Buzzer
|
|
- Direct Pin
|
|
- Grove Button
|
|
- Grove Buzzer
|
|
- Grove LED
|
|
- Grove Light Sensor
|
|
- Grove Piezo Vibration Sensor
|
|
- Grove Relay
|
|
- Grove Rotary Dial
|
|
- Grove Sound Sensor
|
|
- Grove Temperature Sensor
|
|
- Grove Touch Sensor
|
|
- LED
|
|
- Makey Button
|
|
- Motor
|
|
- Relay
|
|
- RGB LED
|
|
- Servo
|
|
|
|
Support for devices that use Inter-Integrated Circuit (I2C) have a shared set of
|
|
drivers provided using the `gobot/platforms/i2c` package:
|
|
|
|
- [I2C](https://en.wikipedia.org/wiki/I%C2%B2C) <=> [Drivers](https://github.com/hybridgroup/gobot/tree/master/platforms/i2c)
|
|
- BlinkM
|
|
- Grove Digital Accelerometer
|
|
- Grove RGB LCD
|
|
- HMC6352 Compass
|
|
- JHD1313M1 RGB LCD Display
|
|
- LIDAR-Lite
|
|
- MCP23017 Port Expander
|
|
- MMA7660 3-Axis Accelerometer
|
|
- MPL115A2 Barometer
|
|
- MPU6050 Accelerometer/Gyroscope
|
|
- Wii Nunchuck Controller
|
|
|
|
More platforms and drivers are coming soon...
|
|
|
|
## API:
|
|
|
|
Gobot includes a RESTful API to query the status of any robot running within a group, including the connection and device status, and execute device commands.
|
|
|
|
To activate the API, require the `github.com/hybridgroup/gobot/api` package and instantiate the `API` like this:
|
|
|
|
```go
|
|
gbot := gobot.NewGobot()
|
|
api.NewAPI(gbot).Start()
|
|
```
|
|
|
|
You can also specify the api host and port, and turn on authentication:
|
|
```go
|
|
gbot := gobot.NewGobot()
|
|
server := api.NewAPI(gbot)
|
|
server.Port = "4000"
|
|
server.AddHandler(api.BasicAuth("gort", "klatuu"))
|
|
server.Start()
|
|
```
|
|
|
|
You may access the [robeaux](https://github.com/hybridgroup/robeaux) React.js interface with Gobot by navigating to `http://localhost:3000/index.html`.
|
|
|
|
## Documentation
|
|
We're busy adding documentation to our web site at http://gobot.io/ please check there as we continue to work on Gobot
|
|
|
|
Thank you!
|
|
|
|
## Need help?
|
|
* Join our mailing list: https://groups.google.com/forum/#!forum/gobotio
|
|
* IRC: `#gobotio @ irc.freenode.net`
|
|
* Issues: https://github.com/hybridgroup/gobot/issues
|
|
* twitter: [@gobotio](https://twitter.com/gobotio)
|
|
|
|
## Contributing
|
|
For our contribution guidelines, please go to [https://github.com/hybridgroup/gobot/blob/master/CONTRIBUTING.md
|
|
](https://github.com/hybridgroup/gobot/blob/master/CONTRIBUTING.md
|
|
).
|
|
|
|
## License
|
|
Copyright (c) 2013-2016 The Hybrid Group. Licensed under the Apache 2.0 license.
|