Sherry

It’s 2015. Why are we still physically showing up to work?

Sherry is a telepresence robot made with off the shelf parts that cost less than $100 (excluding the iPad). Like the double or beam telepresence robots, sherry allows you to be virtually present in the office from anywhere there is an internet connection.

This project involved a wide range of technologies, requiring some basic knowledge in hardware, firmware, networking, software, and front end design. Sherry was built in a weekend at a company hackathon by a team of five interns.

Hardware

We started with an old RC car as the base of the robot, and a large lead acid battery as the power system since the battery pack that came with the RC car was long gone.

IMG_20150822_190222

We started by trying to simply repurpose the stock motor driver to suit our needs. However, after a few minutes of research, something on the board blew out due to an accidental short. Whoops.

The next idea was to use a couple transistors to create our own motor control system. After struggling to get to work with transistors, we purchased a pair of L293 H-Bridge ICs to get the job done. However, just as we got the H-Bridge working, We made another wiring mistake and a cloud of smoke came out of one of the ICs, blowing it apart. Not having used a socket for the ICs, resoldering everything would take a large chunk of time which we were running out of.

We needed a better power system. A quick trip to fry’s and there was a pre-built motor control chip for $10. We also decided to switch from the lead acid batter to standard AA batteries, getting rid of the need for a charger whenever we were out of power, and saving a significant amount of weight as compared to the lead acid battery.

IMG_20150823_205339

Firmware

Since we were building the control system with the Particle Core wifi chip, we had many things to consider in order to reduce latency as much as possible. Initially our idea was to use the particle core to make REST calls to a server that would then respond with data about how the robot should move.

However, we quickly realized that making REST calls was extremely heavy on the particle, adding a latency of about 800ms, which made controlling sherry extremely difficult.

IMG_20150824_112951

The solution was to simply listen for packets on the network, which we did by listening for UDP packets.

void loop() {

  // Check if data has been received
  if (Udp.parsePacket() > 0) {

    // Read first char of data received
    char c = Udp.read();

    // Ignore other chars
    setTurn(c);
    setStraight(c);
  }
}

Software

Software wise, we built the system with meteor. Meteor allowed us to quickly create a front end that we could use to send the UDP packets over the network.

We also wanted to implement an exclusive control system, so that only one person could control Sherry at a time. This proved to be quite simple, reactively greying out the “request control” button for all other users whenever one user had control.

Presentation

Download the PDF file .

At this point, Sherry works on a very basic level, and I hope to continue improving it in my spare time.

Source code is available on my github.