2015-06-30 11:07:15 +08:00
[![Gobot ](https://raw.githubusercontent.com/hybridgroup/gobot-site/master/source/images/elements/gobot-logo-small.png )](http://gobot.io/)
2013-12-06 06:35:30 +08:00
2015-06-30 11:12:54 +08:00
Gobot (http://gobot.io/) is a framework using the Go programming language (http://golang.org/) for robotics, physical computing, and the Internet of Things.
2013-11-10 02:51:30 +08:00
It provides a simple, yet powerful way to create solutions that incorporate multiple, different hardware devices at the same time.
2015-06-30 09:41:11 +08:00
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)
2013-11-10 02:51:30 +08:00
2014-10-29 23:35:28 +08:00
[![GoDoc ](https://godoc.org/github.com/hybridgroup/gobot?status.svg )](https://godoc.org/github.com/hybridgroup/gobot)
2016-02-04 10:51:12 +08:00
[![Build Status ](https://travis-ci.org/hybridgroup/gobot.png?branch=dev )](https://travis-ci.org/hybridgroup/gobot)
2016-02-05 05:10:46 +08:00
[![Coverage Status ](https://coveralls.io/repos/github/hybridgroup/gobot/badge.svg?branch=dev )](https://coveralls.io/github/hybridgroup/gobot?branch=dev)
2016-02-26 07:00:21 +08:00
[![Go Report Card ](https://goreportcard.com/badge/hybridgroup/gobot )](https://goreportcard.com/report/hybridgroup/gobot)
2013-11-10 02:51:30 +08:00
2015-01-15 18:52:07 +08:00
## Getting Started
Get the Gobot source with: `go get -d -u github.com/hybridgroup/gobot/...`
2014-10-29 23:35:28 +08:00
2013-11-10 02:51:30 +08:00
## Examples
2014-06-09 11:28:17 +08:00
#### Gobot with Arduino
2013-11-10 02:51:30 +08:00
```go
package main
2013-11-14 12:50:22 +08:00
2013-11-10 02:51:30 +08:00
import (
2014-07-11 08:02:00 +08:00
"time"
"github.com/hybridgroup/gobot"
"github.com/hybridgroup/gobot/platforms/firmata"
"github.com/hybridgroup/gobot/platforms/gpio"
2013-11-10 02:51:30 +08:00
)
func main() {
2014-07-11 08:02:00 +08:00
gbot := gobot.NewGobot()
2013-11-10 02:51:30 +08:00
2014-07-11 08:02:00 +08:00
firmataAdaptor := firmata.NewFirmataAdaptor("arduino", "/dev/ttyACM0")
led := gpio.NewLedDriver(firmataAdaptor, "led", "13")
2013-11-10 02:51:30 +08:00
2014-07-11 08:02:00 +08:00
work := func() {
gobot.Every(1*time.Second, func() {
led.Toggle()
})
}
2013-11-14 12:50:22 +08:00
2014-07-11 08:02:00 +08:00
robot := gobot.NewRobot("bot",
[]gobot.Connection{firmataAdaptor},
[]gobot.Device{led},
work,
)
2013-11-10 02:51:30 +08:00
2014-07-11 08:02:00 +08:00
gbot.AddRobot(robot)
gbot.Start()
2013-11-10 02:51:30 +08:00
}
```
2014-06-09 11:28:17 +08:00
#### Gobot with Sphero
2013-11-25 07:59:36 +08:00
2013-12-06 06:40:29 +08:00
```go
package main
2013-11-25 07:59:36 +08:00
2013-12-06 06:40:29 +08:00
import (
2014-07-11 08:02:00 +08:00
"fmt"
"time"
"github.com/hybridgroup/gobot"
"github.com/hybridgroup/gobot/platforms/sphero"
2013-12-06 06:40:29 +08:00
)
2013-11-25 07:59:36 +08:00
2013-12-06 06:40:29 +08:00
func main() {
2014-07-11 08:02:00 +08:00
gbot := gobot.NewGobot()
adaptor := sphero.NewSpheroAdaptor("sphero", "/dev/rfcomm0")
driver := sphero.NewSpheroDriver(adaptor, "sphero")
2013-12-06 06:40:29 +08:00
2014-07-11 08:02:00 +08:00
work := func() {
gobot.Every(3*time.Second, func() {
driver.Roll(30, uint16(gobot.Rand(360)))
})
}
2014-02-05 06:27:16 +08:00
2014-07-11 08:02:00 +08:00
robot := gobot.NewRobot("sphero",
[]gobot.Connection{adaptor},
[]gobot.Device{driver},
work,
)
2014-02-05 06:27:16 +08:00
2014-07-11 08:02:00 +08:00
gbot.AddRobot(robot)
2014-02-05 06:27:16 +08:00
2014-07-11 08:02:00 +08:00
gbot.Start()
2013-12-06 06:40:29 +08:00
}
2013-11-25 07:59:36 +08:00
```
2013-11-10 02:51:30 +08:00
## Hardware Support
Gobot has a extensible system for connecting to hardware devices. The following robotics and physical computing platforms are currently supported:
2014-11-04 09:38:20 +08:00
2015-10-23 08:45:08 +08:00
- [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 )
2016-05-14 07:09:36 +08:00
- Audio < => [Package ](https://github.com/hybridgroup/gobot/tree/master/platforms/audio )
2015-10-23 08:45:08 +08:00
- [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 )
2016-02-04 05:50:50 +08:00
- [C.H.I.P ](http://www.nextthing.co/pages/chip ) < => [Package ](https://github.com/hybridgroup/gobot/tree/master/platforms/chip )
2015-10-23 08:45:08 +08:00
- [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 )
2016-02-18 22:26:00 +08:00
- [MavLink ](http://qgroundcontrol.org/mavlink/start ) < => [Package ](https://github.com/hybridgroup/gobot/tree/master/platforms/mavlink )
2015-10-23 08:45:08 +08:00
- [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 )
2013-12-14 00:54:30 +08:00
Support for many devices that use General Purpose Input/Output (GPIO) have
2015-10-23 08:37:31 +08:00
a shared set of drivers provided using the `gobot/platforms/gpio` package:
2013-12-14 00:54:30 +08:00
2015-10-23 08:45:08 +08:00
- [GPIO ](https://en.wikipedia.org/wiki/General_Purpose_Input/Output ) < => [Drivers ](https://github.com/hybridgroup/gobot/tree/master/platforms/gpio )
- Analog Sensor
- Button
2016-05-14 06:24:11 +08:00
- Buzzer
2015-10-23 08:45:08 +08:00
- Direct Pin
- Grove Button
- Grove Buzzer
- Grove LED
- Grove Light Sensor
- Grove Piezo Vibration Sensor
- Grove Relay
- Grove Rotary Dial
- Grove Sound Sensor
2016-05-14 06:24:11 +08:00
- Grove Temperature Sensor
2015-10-23 08:45:08 +08:00
- Grove Touch Sensor
- LED
- Makey Button
- Motor
2016-05-14 06:24:11 +08:00
- Relay
- RGB LED
2015-10-23 08:45:08 +08:00
- Servo
2013-11-10 02:51:30 +08:00
2013-12-17 06:20:21 +08:00
Support for devices that use Inter-Integrated Circuit (I2C) have a shared set of
2015-10-23 08:37:31 +08:00
drivers provided using the `gobot/platforms/i2c` package:
2013-12-17 06:20:21 +08:00
2015-10-23 08:45:08 +08:00
- [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
2016-02-10 09:03:51 +08:00
- HMC6352 Compass
- JHD1313M1 RGB LCD Display
2015-10-23 08:45:08 +08:00
- LIDAR-Lite
2016-02-10 09:03:51 +08:00
- MCP23017 Port Expander
- MMA7660 3-Axis Accelerometer
- MPL115A2 Barometer
- MPU6050 Accelerometer/Gyroscope
2015-10-23 08:45:08 +08:00
- Wii Nunchuck Controller
2013-12-17 06:20:21 +08:00
2013-11-10 02:51:30 +08:00
More platforms and drivers are coming soon...
2013-11-25 07:59:36 +08:00
## 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.
2014-06-11 06:16:11 +08:00
To activate the API, require the `github.com/hybridgroup/gobot/api` package and instantiate the `API` like this:
2013-11-25 07:59:36 +08:00
2014-11-04 09:38:20 +08:00
```go
2014-07-11 08:02:00 +08:00
gbot := gobot.NewGobot()
api.NewAPI(gbot).Start()
2013-11-25 07:59:36 +08:00
```
2014-04-20 01:16:44 +08:00
You can also specify the api host and port, and turn on authentication:
2014-11-04 09:38:20 +08:00
```go
2014-07-11 08:02:00 +08:00
gbot := gobot.NewGobot()
server := api.NewAPI(gbot)
2014-06-09 11:28:17 +08:00
server.Port = "4000"
2016-01-11 09:35:30 +08:00
server.AddHandler(api.BasicAuth("gort", "klatuu"))
2014-06-09 11:28:17 +08:00
server.Start()
2013-11-25 07:59:36 +08:00
```
2013-11-10 02:51:30 +08:00
2015-06-30 11:14:16 +08:00
You may access the [robeaux ](https://github.com/hybridgroup/robeaux ) React.js interface with Gobot by navigating to `http://localhost:3000/index.html` .
2014-02-05 06:15:21 +08:00
2013-11-10 02:51:30 +08:00
## 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!
2015-01-15 18:52:07 +08:00
## 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
2015-01-17 01:57:10 +08:00
* twitter: [@gobotio ](https://twitter.com/gobotio )
2015-01-15 18:52:07 +08:00
2013-11-10 02:51:30 +08:00
## Contributing
2015-06-23 09:13:07 +08:00
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
).
2013-11-10 02:51:30 +08:00
## License
2016-02-04 05:50:50 +08:00
Copyright (c) 2013-2016 The Hybrid Group. Licensed under the Apache 2.0 license.