Baike.dev
All toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
G

gobot

> 编程语言
Open source

Golang framework for robotics, drones, and the Internet of Things (IoT)

9.4K stars0 likes0 views
WebsiteGitHub

About

Golang framework for robotics, drones, and the Internet of Things (IoT)

Gobot (https://gobot.io/) is a framework using the Go programming language (https://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 run Go directly on microcontrollers? Check out our sister project TinyGo (https://tinygo.org/)

Getting Started

Get in touch

Get the Gobot source code by running this commands:

git clone https://github.com/hybridgroup/gobot.git
git checkout release

Afterwards have a look at the examples directory. You need to find an example matching your platform for your first test (e.g. "raspi_blink.go"). Than build the binary (cross compile), transfer it to your target and run it.

env GOOS=linux GOARCH=arm GOARM=5 go build -o ./output/my_raspi_bink examples/raspi_blink.go

Building the code on your local machine with the example code above will create a binary for ARMv5. This is probably not what you need for your specific target platform. Please read also the platform specific documentation in the platform subfolders.

Create your first project

Create a new folder and a new Go module project.

mkdir ~/my_gobot_example
cd ~/my_gobot_example
go mod init my.gobot.example.com

Copy your example file besides the go.mod file, import the requirements and build.

cp /<path to gobot folder>/examples/raspi_blink.go ~/my_gobot_example/
go mod tidy
env GOOS=linux GOARCH=arm GOARM=5 go build -o ./output/my_raspi_bink raspi_blink.go

Now you are ready to modify the example and test your changes. Start by removing the build directives at the beginning of the file.

Examples

Gobot with Arduino

package main

import (
  "time"

  "gobot.io/x/gobot/v2"
  "gobot.io/x/gobot/v2/drivers/gpio"
  "gobot.io/x/gobot/v2/platforms/firmata"
)

func main() {
  firmataAdaptor := firmata.NewAdaptor("/dev/ttyACM0")
  led := gpio.NewLedDriver(firmataAdaptor, "13")

  work := func() {
    gobot.Every(1*time.Second, func() {
      if err := led.Toggle(); err != nil {
        fmt.Println(err)
      }
    })
  }

  robot := gobot.NewRobot("bot",
    []gobot.Connection{firmataAdaptor},
    []gobot.Device{led},
    work,
  )

  if err := robot.Start(); err != nil {
    panic(err)
  }
}

Gobot with Sphero

package main

import (
  "fmt"
  "time"

  "gobot.io/x/gobot/v2"
  "gobot.io/x/gobot/v2/drivers/serial"
  "gobot.io/x/gobot/v2/platforms/serialport"
)

func main() {
  adaptor := serialport.NewAdaptor("/dev/rfcomm0")
  driver := sphero.NewSpheroDriver(adaptor)

  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,
  )

  if err := robot.Start(); err != nil {
		panic(err)
	}
}

"Metal" Gobot

You can use the entire Gobot framework as shown in the examples above ("Classic" Gobot), or you can pick and choose from the various Gobot packages to control hardware with nothing but pure idiomatic Golang code ("Metal" Gobot). For example:

package main

import (
  "gobot.io/x/gobot/v2/drivers/gpio"
  "gobot.io/x/gobot/v2/platforms/intel-iot/edison"
  "time"
)

func main() {
  e := edison.NewAdaptor()
  if err := e.Connect(); err != nil {
    fmt.Println(err)
  }

  led := gpio.NewLedDriver(e, "13")
  if err := led.Start(); err != nil {
    fmt.Println(err)
  }

  for {
    if err := led.Toggle(); err != nil {
      fmt.Println(err)
    }
    time.Sleep(1000 * time.Millisecond)
  }
}

"Manager" Gobot

You can also use the full capabilities of the framework aka "Manager Gobot" to control swarms of robots or other features such as the built-in API server. For example:

…

Hardware Support

Gobot has a extensible system for connecting to hardware devices. The following robotics and physical computing platforms are currently supported:

  • Arduino <=> Package
  • ASUS Tinker Board <=> Package
  • ASUS Tinker Board 2 <=> Package
  • Audio <=> Package
  • BeagleBoard BeagleBone Black <=> Package
  • BeagleBoard PocketBeagle <=> Package
  • Bluetooth LE <=> Package
  • C.H.I.P <=> Package
  • C.H.I.P Pro <=> Package
  • Digispark <=> Package
  • DJI Tello <=> Package
  • DragonBoard <=> Package
  • ESP8266 <=> Package
  • FriendlyELEC NanoPi NEO <=> Package
  • FriendlyELEC NanoPC-T6 <=> Package
  • GoPiGo 3 <=> Package
  • Intel Curie <=> Package
  • Intel Edison <=> Package
  • Intel Joule <=> Package
  • Jetson Nano <=> Package
  • Joystick <=> Package
  • Keyboard <=> Package
  • Leap Motion <=> Package
  • MavLink <=> Package
  • MegaPi <=> Package
  • Microbit <=> Package
  • MQTT <=> Package
  • NATS <=> Package
  • Neurosky <=> Package
  • OpenCV <=> Package
  • OrangePi 5 Pro <=> Package
  • Particle <=> Package
  • Parrot ARDrone 2.0 <=> Package
  • Parrot Bebop <=> Package
  • Parrot Minidrone <=> Package
  • Pebble <=> Package
  • PINE64 ROCK64 <=> Package
  • Radxa Rock Pi 4 <=> Package
  • Raspberry Pi <=> Package
  • Serial Port <=> Package
  • Sphero <=> Package
  • Sphero BB-8 <=> Package
  • Sphero Ollie <=> Package
  • Sphero SPRK+ <=> Package
  • UP2 <=> Package

Support for many devices that use Analog Input/Output (AIO) have a shared set of drivers provided using the gobot/drivers/aio package:

  • AIO <=> Drivers
    • Analog Actuator
    • Analog Sensor
    • Grove Light Sensor
    • Grove Piezo Vibration Sensor
    • Grove Rotary Dial
    • Grove Sound Sensor
    • Grove Temperature Sensor
    • Temperature Sensor (supports linear and NTC thermistor in normal and inverse mode)
    • Thermal Zone Temperature Sensor

Support for many devices that use Bluetooth LE (BLE) have a shared set of drivers provided using the gobot/drivers/ble package:

  • BLE <=> Drivers
    • Battery Service
    • Device Information Service
    • Generic Access Service
    • Microbit: AccelerometerDriver
    • Microbit: ButtonDriver
    • Microbit: IOPinDriver
    • Microbit: LEDDriver
    • Microbit: MagnetometerDriver
    • Microbit: TemperatureDriver
    • Sphero: BB8
    • Sphero: Ollie
    • Sphero: SPRK+

Support for many devices that use General Purpose Input/Output (GPIO) have a shared set of drivers provided using the gobot/drivers/gpio package:

  • GPIO <=> Drivers
    • AIP1640 LED Dot Matrix/7 Segment Controller
    • Button
    • Buzzer
    • Di

GitHub Issues· 0 open

View all on GitHub

No open issues yet, or sync has not completed.

Highlights

  • •Arduino <=> Package
  • •ASUS Tinker Board <=> Package
  • •ASUS Tinker Board 2 <=> Package
  • •Audio <=> Package
  • •BeagleBoard BeagleBone Black <=> Package
  • •BeagleBoard PocketBeagle <=> Package
  • •Bluetooth LE <=> Package
  • •C.H.I.P <=> Package
  • •C.H.I.P Pro <=> Package
  • •Digispark <=> Package

> Tags

Goarduinobeaglebonebeaglebone-blackbluetooth

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言