Go to file
deadprogram 50ea4143f9 [audio] Run go fmt because we have to
Signed-off-by: deadprogram <ron@hybridgroup.com>
2016-05-24 21:05:27 -07:00
api Refactor to use `gobottest` test helpers 2016-02-22 00:33:58 -05:00
examples [audio] Run go fmt because we have to 2016-05-24 21:05:27 -07:00
gobot Add optional package name parameter 2014-12-24 11:58:41 -08:00
gobottest [audio] Run go fmt because we have to 2016-05-24 21:05:27 -07:00
platforms [audio] Run go fmt because we have to 2016-05-24 21:05:27 -07:00
scripts Revert "Trying to remove coveralls based code coverage" 2016-02-04 12:47:58 -08:00
sysfs Refactor to use `gobottest` test helpers 2016-02-22 00:33:58 -05:00
.gitignore First pass at adding some documentation 2014-08-13 10:22:58 -06:00
.travis.yml Allow failures in Travis builds for Golang 1.3 due to SDL changes 2016-03-12 15:07:19 -08:00
CHANGELOG.md Update missing changelog entries 2016-02-24 11:48:25 -08:00
CONTRIBUTING.md Make dev branch target more explicit 2016-02-19 18:41:26 -08:00
LICENSE Add C.H.I.P. to supported platforms 2016-02-03 13:50:50 -08:00
Makefile Fix #201 by add 'make examples' command to Makefile 2016-02-19 18:40:30 -08:00
README.md [audio] WIP on Gobot audio support using mpg123, based on code from @colemanserious 2016-05-13 16:09:36 -07:00
adaptor.go go lint and documentation tweaks for the gobot package 2014-12-31 05:15:52 -08:00
commander.go go lint and documentation tweaks for the gobot package 2014-12-31 05:15:52 -08:00
commander_test.go Refactor to use `gobottest` test helpers 2016-02-22 00:33:58 -05:00
connection.go go lint and documentation tweaks for the gobot package 2014-12-31 05:15:52 -08:00
device.go go lint and documentation tweaks for the gobot package 2014-12-31 05:15:52 -08:00
doc.go Update gobot package docs 2014-11-13 11:06:57 -08:00
driver.go go lint and documentation tweaks for the gobot package 2014-12-31 05:15:52 -08:00
event.go Save ~1000 goroutines 2015-09-30 21:45:54 +02:00
eventer.go go lint and documentation tweaks for the gobot package 2014-12-31 05:15:52 -08:00
eventer_test.go Refactor to use `gobottest` test helpers 2016-02-22 00:33:58 -05:00
examples_test.go Refactor to use `gobottest` test helpers 2016-02-22 00:33:58 -05:00
gobot.go Adds back in OS trap for clean automatic shutdown. Also adds new method to disable this feature, and allow devs to handle shutdown themselves. 2015-10-22 00:12:00 -07:00
gobot_test.go Refactor to use `gobottest` test helpers 2016-02-22 00:33:58 -05:00
helpers_test.go Add SSE test coverage 2015-04-07 16:04:40 -07:00
robot.go Isolates shutdown-logic to Robot/Robots/Gobot.Stop 2015-09-30 21:43:58 +02:00
utils.go [core] Return when Every is sent done on its channel 2016-05-13 17:30:46 -07:00
utils_test.go [core] Don't cut it so close when testing Every being told to be done 2016-05-13 17:36:34 -07:00
version.go Update version to v.0.11.1 2016-02-17 17:23:31 -08:00

README.md

Gobot

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 Build Status Coverage Status Go Report Card

Getting Started

Get the Gobot source with: go get -d -u github.com/hybridgroup/gobot/...

Examples

Gobot with Arduino

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

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:

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 <=> Drivers
    • 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 <=> Drivers
    • 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:

  gbot := gobot.NewGobot()
  api.NewAPI(gbot).Start()

You can also specify the api host and port, and turn on authentication:

  gbot := gobot.NewGobot()
  server := api.NewAPI(gbot)
  server.Port = "4000"
  server.AddHandler(api.BasicAuth("gort", "klatuu"))
  server.Start()

You may access the 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?

Contributing

For our contribution guidelines, please go to https://github.com/hybridgroup/gobot/blob/master/CONTRIBUTING.md .

License

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