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/potix/gobot/...
package main
import (
"time"
"github.com/potix/gobot"
"github.com/potix/gobot/platforms/firmata"
"github.com/potix/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/potix/gobot"
"github.com/potix/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 <=> Package
- Arduino <=> Package
- Beaglebone Black <=> Package
- Bebop <=> Package
- C.H.I.P <=> Package
- Digispark <=> Package
- Intel Edison <=> Package
- Joystick <=> Package
- Keyboard <=> Package
- Leap Motion <=> Package
- MavLink <=> Package
- MQTT <=> Package
- Neurosky <=> Package
- OpenCV <=> Package
- Pebble <=> Package
- Raspberry Pi <=> Package
- Spark <=> Package
- Sphero <=> Package
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
- Direct Pin
- Digital Sensor
- Direct Pin
- Grove Button
- Grove Buzzer
- Grove LED
- Grove Light Sensor
- Grove Piezo Vibration Sensor
- Grove Relay
- Grove Rotary Dial
- Grove Sound Sensor
- Grove Touch Sensor
- LED
- Makey Button
- Motor
- 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...
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/potix/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
.
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/potix/gobot/issues
- twitter: @gobotio
For our contribution guidelines, please go to https://github.com/potix/gobot/blob/master/CONTRIBUTING.md .
Copyright (c) 2013-2016 The Hybrid Group. Licensed under the Apache 2.0 license.