GithubHelp home page GithubHelp logo

petbot's Introduction

PETBOT

The car is controlled by a radio transmitter wired to a Raspberry Pi running a local node.js server. Commands are sent via socket.io through a web UI & second node.js server hosted remotely on Heroku. The local server connects to the remote server as a socket.io client, thus allowing commands to be sent to the Pi from anywhere in the world with very low latency.

Read about how I built it here.

Resistance is futile.

HOW TO

We recently overhauled PETBOT's local server and still need to write up the run process! Currently, it's only set up to run on Raspberry Pi but we have successfully run it on Arduino in the past, and just need to update the Arduino module. As for building the physical robot itself, we're hoping to get a parts spec and 3D model into this repo so anyone can build their own PETBOT.

TODO

  • Write up run process.
  • Add a parts spec and circuit diagram to this repo.
  • Experiment with different sized wheels, axles, springs, and shocks to create a sturdier chassis.
  • Hook PETBOT into HipChat.
  • Update Arduino module.
  • Eventually, use a single (rechargeable) power source for the car and the Pi. Maybe even the iPad too!
  • Figure out a way to accurately measure speed
  • Store a map of the office and use dead reckoning to let PETBOT know where it is at any time. This will enable autonomy - users will be able to tell PETBOT to go visit certain areas, rather than controlling it manually.
  • Enable PETBOT to feel love.

petbot's People

Contributors

arizzitano avatar danriti avatar tillberg avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

petbot's Issues

Create abstract prototype for local server

Local server should be able to run without a board connected, for development or simulation purposes. Create a prototypal class for the local server. ArduinoServer and PiServer should extend this prototype.

hubot script/status endpoint

Write a very basic hubot script that, for starters, returns some information about PETBOT's current state. (e.g. online, sleeping, driving, browsers connected, etc).

Tests

PETBOT needs some basic tests while it's still small and fairly simple. Debugging is horribly inefficient, requiring a contributor to get all servers running just so, watch the browser, watch the terminal, watch the circuit (LEDs), and watch the car itself. For a project with so many potential points of failure, moving towards BDD rather than "throw-shit-at-the-wall-and-see-what-sticks DD" would be ideal.

I'm leaning towards Mocha or Jasmine as a test framework but am open to suggestions.

Remote & local servers should exchange status messages

The local server and remote server should always be aware of each other's statuses. That is, the local server should be alerted when a new connection has opened up. Likewise, when a user connects to the remote UI, it should provide some information about the status of the local server (e.g. "connecting...", "online", "offline"). Eventually we can use this event to do things like sleep the local server (close all the I/O pins) and wake it when a user connects. This will help save battery power!

[raspi] stabilize I/O ops for the Pi

Sometimes pins get stuck on high, causing PETBOT to do things like crash into the paper wall while Oblong is having a client meeting. This may be an issue with the circuit or with pi-gpio, but the local server should do as much as possible to make sure the state of the GPIO pins reflects the commands being sent from the remote server.

Mobile/touch controls for UI

Currently, you can only control petbot with the arrow keys. In addition to sprucing up and possibly redesigning the front end, we need a view for mobile that allows you to control it via touch. I'm thinking something like hammer.js that allows directional gestures.

Replace Duino with Johnny-Five

The Duino library is no longer maintained, while Johnny-Five is a thriving and growing project that uses a standard IO protocol that's native to the Arduino (Firmata). In most cases, Johnny-Five is nearly a drop in replacement for Duino and I'd be happy to help the process and contribute in anyway that I can.

https://github.com/rwldrn/johnny-five

tbone - anyway to provide tgz of yours?

I have tried to work with the tbone 0.3.4 that is out there.. the cdn link moved. Found it.. but there are dependencies not found and I end up with a broken app that is tdefine is undefined.

Any chance you could provide .tgz of your working tbone module?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.