https://github.com/andrew/gobot

A Go framework/set of libraries for robotics and physical computing

https://github.com/andrew/gobot

Science Score: 10.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    1 of 6 committers (16.7%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (9.2%) to scientific vocabulary
Last synced: 10 months ago · JSON representation

Repository

A Go framework/set of libraries for robotics and physical computing

Basic Info
  • Host: GitHub
  • Owner: andrew
  • License: other
  • Language: Go
  • Default Branch: master
  • Homepage: http://gobot.io
  • Size: 7.34 MB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 2
  • Open Issues: 0
  • Releases: 0
Fork of hybridgroup/gobot
Created about 12 years ago · Last pushed about 12 years ago
Metadata Files
Readme License

README.md

Gobot

http://gobot.io/

Gobot is a framework and set of libraries 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 Ruby or Javascript on robots? Check out our sister projects Artoo (http://artoo.io) and Cylon.js (http://cylonjs.com/)

Build Status Coverage Status

Examples

Basic

Gobot on Sphero

```go package main

import ( "github.com/hybridgroup/gobot" "github.com/hybridgroup/gobot-sphero" )

func main() {

spheroAdaptor := new(gobotSphero.SpheroAdaptor) spheroAdaptor.Name = "Sphero" spheroAdaptor.Port = "/dev/rfcomm0"

sphero := gobotSphero.NewSphero(spheroAdaptor) sphero.Name = "Sphero"

work := func() { gobot.Every("2s", func() { sphero.Roll(100, uint16(gobot.Rand(360))) }) }

robot := gobot.Robot{ Connections: []gobot.Connection{spheroAdaptor}, Devices: []gobot.Device{sphero}, Work: work, }

robot.Start() } ```

Gobot on Arduino

```go package main

import ( "github.com/hybridgroup/gobot" "github.com/hybridgroup/gobot-firmata" "github.com/hybridgroup/gobot-gpio" )

func main() {

firmata := new(gobotFirmata.FirmataAdaptor) firmata.Name = "firmata" firmata.Port = "/dev/ttyACM0"

led := gobotGPIO.NewLed(firmata) led.Name = "led" led.Pin = "13"

work := func() { gobot.Every("1s", func() { led.Toggle() }) }

robot := gobot.Robot{ Connections: []gobot.Connection{firmata}, Devices: []gobot.Device{led}, Work: work, }

robot.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 cylon-gpio module:

  • GPIO <=> Drivers
    • Analog Sensor
    • Button
    • Digital Sensor
    • LED
    • Motor
    • Servo

Support for devices that use Inter-Integrated Circuit (I2C) have a shared set of drivers provided using the gobot-i2c module:

  • I2C <=> Drivers
    • BlinkM
    • HMC6352
    • Wii Nunchuck Controller

More platforms and drivers are coming soon...

Getting Started

Install the library with: go get -u github.com/hybridgroup/gobot

Then install additional libraries for whatever hardware support you want to use from your robot. For example, go get -u github.com/hybridgroup/gobot-sphero to use Gobot with a Sphero.

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, use the Api command like this:

go master := gobot.GobotMaster() gobot.Api(master)

You can also specify the api host and port, and turn on authentication: go master := gobot.GobotMaster() api := gobot.Api(master) api.Port = "4000" api.Username = "Gort" api.Password = "klaatu"

In order to use the robeaux AngularJS interface with Gobot you simply clone the robeaux repo and place it in the directory of your Gobot program. The robeaux assets must be in a folder called robeaux.

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!

Contributing

  • All active development is in the dev branch. New or updated features must be added to the dev branch. Hotfixes will be considered on the master branch in situations where it does not alter behaviour or features, only fixes a bug.
  • All patches must be provided under the Apache 2.0 License
  • Please use the -s option in git to "sign off" that the commit is your work and you are providing it under the Apache 2.0 License
  • Submit a Github Pull Request to the appropriate branch and ideally discuss the changes with us in IRC.
  • We will look at the patch, test it out, and give you feedback.
  • Avoid doing minor whitespace changes, renamings, etc. along with merged content. These will be done by the maintainers from time to time but they can complicate merges and should be done seperately.
  • Take care to maintain the existing coding style.
  • go fmt your code.
  • Add unit tests for any new or changed functionality.
  • All pull requests should be "fast forward"
    • If there are commits after yours use “git rebase -i
    • If you have local changes you may need to use “git stash”
    • For git help see progit which is an awesome (and free) book on git

License

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

Owner

  • Name: Andrew Nesbitt
  • Login: andrew
  • Kind: user
  • Location: Bristol, UK
  • Company: @ecosyste-ms and @octobox

Working on mapping the world of open source software @ecosyste-ms and empowering developers with @octobox

GitHub Events

Total
Last Year

Committers

Last synced: 10 months ago

All Time
  • Total Commits: 133
  • Total Committers: 6
  • Avg Commits per committer: 22.167
  • Development Distribution Score (DDS): 0.308
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Adrian Zankich a****n@h****m 92
deadprogram r****n@h****m 32
xixebombilla t****8@g****m 5
Mario Ricalde k****r@g****m 2
Jérôme Andrieux j****x@a****m 1
Sebastien Binet b****t@c****h 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 10 months ago

All Time
  • Total issues: 0
  • Total pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Total issue authors: 0
  • Total pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
Top Labels
Issue Labels
Pull Request Labels