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)
Get the Gobot source with: go get -d -u github.com/hybridgroup/gobot/...
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()
}
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()
}
Gobot has a extensible system for connecting to hardware devices. The following robotics and physical computing platforms are currently supported:
- Ardrone <=> Library
- Arduino <=> Library
- Beaglebone Black <=> Library
- Digispark <=> Library
- Intel Edison <=> Library
- Joystick <=> Library
- Leap Motion <=> Library
- MavLink <=> Library
- MQTT <=> Library
- Neurosky <=> Library
- OpenCV <=> Library
- Pebble <=> Library
- Raspberry Pi <=> Library
- Spark <=> Library
- Sphero <=> Library
Support for many devices that use General Purpose Input/Output (GPIO) have a shared set of drivers provided using the cylon-gpio module:
- GPIO <=> Drivers
- Analog Sensor
- Button
- Direct Pin
- Digital Sensor
- Direct Pin
- LED
- Makey Button
- Motor
- Servo
Support for devices that use Inter-Integrated Circuit (I2C) have a shared set of drivers provided using the gobot-i2c module:
More platforms and drivers are coming soon...
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.Username = "Gort"
server.Password = "klaatu"
server.Start()
You may access the robeaux React.js interface with Gobot by navigating to http://localhost:3000/index.html
.
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!
- 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
For our contribution guidelines, please go to https://github.com/hybridgroup/gobot/blob/master/CONTRIBUTING.md .
Copyright (c) 2013-2015 The Hybrid Group. Licensed under the Apache 2.0 license.