戈伯特(https://gobot.io/)是一个使用Go编程语言的框架(https://golang.org/)用于机器人、物理计算和物联网。

它提供了一种简单但功能强大的方法来创建同时包含多个不同硬件设备的解决方案。

想直接在微控制器上运行Go吗?看看我们的姐妹项目TinyGo(https://tinygo.org/)

Getting Started

go get -d -u gobot.io/x/gobot/...

Examples

与阿杜伊诺的戈博特

package main

import (
	"time"

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

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

	work := func() {
		gobot.Every(1*time.Second, func() {
			led.Toggle()
		})
	}

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

	robot.Start()
}

斯皮罗地标

package main

import (
	"fmt"
	"time"

	"gobot.io/x/gobot"
	"gobot.io/x/gobot/platforms/sphero"
)

func main() {
	adaptor := sphero.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,
	)

	robot.Start()
}

"Metal" Gobot

您可以使用上面示例中所示的整个Gobot框架(“经典”Gobot),也可以从各种Gobot包中进行选择,只需使用纯惯用的Golang代码(“Metal”Gobot)来控制硬件。例如:

package main

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

func main() {
	e := edison.NewAdaptor()
	e.Connect()

	led := gpio.NewLedDriver(e, "13")
	led.Start()

	for {
		led.Toggle()
		time.Sleep(1000 * time.Millisecond)
	}
}

"Master" Gobot

您还可以使用框架的全部功能,即“Master Gobot”来控制机器人群或其他特性,如built-inAPI服务器。例如:

package main

import (
	"fmt"
	"time"

	"gobot.io/x/gobot"
	"gobot.io/x/gobot/api"
	"gobot.io/x/gobot/platforms/sphero"
)

func NewSwarmBot(port string) *gobot.Robot {
	spheroAdaptor := sphero.NewAdaptor(port)
	spheroDriver := sphero.NewSpheroDriver(spheroAdaptor)
	spheroDriver.SetName("Sphero" + port)

	work := func() {
		spheroDriver.Stop()

		spheroDriver.On(sphero.Collision, func(data interface{}) {
			fmt.Println("Collision Detected!")
		})

		gobot.Every(1*time.Second, func() {
			spheroDriver.Roll(100, uint16(gobot.Rand(360)))
		})
		gobot.Every(3*time.Second, func() {
			spheroDriver.SetRGB(uint8(gobot.Rand(255)),
				uint8(gobot.Rand(255)),
				uint8(gobot.Rand(255)),
			)
		})
	}

	robot := gobot.NewRobot("sphero",
		[]gobot.Connection{spheroAdaptor},
		[]gobot.Device{spheroDriver},
		work,
	)

	return robot
}

func main() {
	master := gobot.NewMaster()
	api.NewAPI(master).Start()

	spheros := []string{
		"/dev/rfcomm0",
		"/dev/rfcomm1",
		"/dev/rfcomm2",
		"/dev/rfcomm3",
	}

	for _, port := range spheros {
		master.AddRobot(NewSwarmBot(port))
	}

	master.Start()
}

Hardware Support

Gobot有一个可扩展的系统来连接硬件设备。目前支持以下机器人和物理计算平台:

  • Arduino<=>套餐
  • 音频<=>套餐
  • Beaglebone黑色<=>套装
  • Beaglebone PocketBeagle<=>套餐
  • 蓝牙LE<=>套餐
  • C.H.I.P<=>套餐
  • C.H.I.PPro<=>套餐
  • Digispark<=>套餐
  • DJI Tello<=>套餐
  • DragonBoard<=>套餐
  • ESP8266<=>套餐
  • GoPiGo 3<=>套餐
  • 英特尔居里软件包
  • 英特尔爱迪生<=>软件包
  • 英特尔焦耳<=>软件包
  • 操纵杆<=>包
  • 键盘<=>软件包
  • 跳跃运动<=>包裹
  • MavLink<=>包
  • MegaPi<=>软件包
  • 微比特<=>套餐
  • MQTT<=>包
  • NATS<=>包
  • Neurosky<=>套餐
  • OpenCV<=>包
  • 粒子<=>包
  • Parrot ARDrone 2.0包
  • Parrot Bebop<=>套餐
  • 鹦鹉迷你无人机<=>套餐
  • Pebble<=>包装
  • 树莓皮<=>包装
  • Sphero<=>包
  • Sphero BB-8<=>包装
  • Sphero Ollie<=>套餐
  • Sphero SPRK+<=>包装
  • 修补板<=>包装
  • UP2<=>套餐
gobot/drivers/gpio
  • GPIO<=>驾驶员AIP1640 LED按钮蜂鸣器直接引脚EasyDriver Grove按钮Grove蜂鸣器Grove LED Grove磁性开关Grove继电器Grove触摸传感器LED Makey按钮电机接近红外线(PIR)运动传感器继电器RGB LED伺服步进电机TM1638 LED控制器
gobot/drivers/aio
  • AIO<=>驱动器模拟传感器Grove光传感器Grove压电振动传感器Grove转盘Grove声音传感器Grove温度传感器
gobot/drivers/i2c
  • I2C<=>驾驶员ADAFROUTY Motor Hat ADS1015模数转换器ADS1115模数转换器ADXL345数字加速度计BH1750数字亮度/勒克斯/光传感器闪烁LED BME280气压/温度/高度/湿度传感器BMP180气压/温度/高度传感器BMP280气压压力/温度/高度传感器DRV2605L触觉控制器Grove数字加速计GrovePi扩展板Grove RGB LCD HMC6352指南针INA3221电压监视器JHD1313M1 LCD显示器,带RGB背光灯L3GD20H3-Axis陀螺仪LIDAR-LiteMCP23017端口扩展器MMA76603-Axis加速计MPL115A2气压计MPU6050加速度计/陀螺仪PCA968516-channel12-bitPWM/伺服驱动器SHT3x-D温度/湿度SSD1306 OLED显示控制器TSL2561数字亮度/勒克斯/光传感器Wii Nuncuck控制器
gobot/drivers/spi
  • SPI<=>驱动程序APA102可编程LED MCP3002模拟/数字转换器MCP3004模拟/数字转换器MCP3008模拟/数字转换器MCP3022模拟/数字转换器MCP3204模拟/数字转换器MCP3208模拟/数字转换器MCP3306 OLED显示控制器

更多的平台和驱动程序即将推出。。。

API:

Gobot包含一个restfulapi来查询组中运行的任何robot的状态,包括连接和设备状态,以及执行设备命令。

gobot.io/x/gobot/apiAPI
master := gobot.NewMaster()
  api.NewAPI(master).Start()

还可以指定api主机和端口,并启用身份验证:

master := gobot.NewMaster()
  server := api.NewAPI(master)
  server.Port = "4000"
  server.AddHandler(api.BasicAuth("gort", "klatuu"))
  server.Start()
http://localhost:3000/index.html

CLI

Gobot使用Gorthttp://gort.io命令行界面(CLI),因此您可以直接从命令行访问重要功能。我们称之为“机器人”,又名“机器人技术的DevOps”。你可以扫描,连接,更新设备固件,等等!

/cli

Documentation

我们一直在添加文档到我们的网站https://gobot.io/请在继续Gobot工作时查看那里

Thank you!

Need help?

  • Twitter: @gobotio
  • 邮件列表:https://groups.google.com/forum/#!forum/gobotio

Contributing

有关我们的供款指南,请访问https://github.com/hybridgroup/gobot/blob/master/contribution.md。

Gobot发布时有一个贡献者行为准则。通过参与这个项目,你同意遵守它的条款。你可以在这里读到。

License

版权所有2013-2019混合群体。根据Apache2.0许可证授权。

《贡献者契约》是根据Creative Commons Attribution 4.0国际公共许可证发布的,该许可证要求包括归属。