How to Build a Robot That Will Feed You Breakfast
All in all, preparing breakfast with a robot arm gets 4/10 stars.
Breakfast is my favorite meal of the day. It's also my least ambitious one and tends to disappear between the time I spend lingering in bed until I'm about to pee myself and getting stuck on what color socks to wear for the day.
Skipping breakfast is bad and I needed a change. Getting up earlier in the morning and finally becoming the grown-up my ID tells me I am? Not going to happen. I'm self-aware enough to know I only make good decisions out of total desperation, and I wasn't there yet.
Instead I decided to build a breakfast machine. The plan: get a robot arm, have it pour cereal and milk into a bowl and feed it to me with a spoon. The only catch was that I had to learn how to program a robot arm and code a pretty complicated sequence to have it serve me breakfast. But I was up for the challenge, because the best way to avoid real problems is to deal with fake ones.
Step 1: Spend too much money on parts
The first step was getting a robot arm for my breakfast machine. I found one for $41 and thought it was too expensive. The next one I saw that was $339, and I couldn't take my eyes off of it. Strong, sleek, almost sexy—like a James Franco made of metal, bolts and servo motors. It had a suction cup to pick stuff up. A suction cup!
I never learnt to ride a horse when I was a kid. I know that has nothing to do with this robot arm, but somehow it felt like buying it would make up for that loss.
Two clicks later and it was mine.
Next up I went to a dollar store on Mission Street to buy a spoon. I found a pink spoon and a toy construction hat for $7. I don't need a toy construction hat. But I just bought a robot arm for $339 and I ended up buying the hat too. What's a fart when you just shat your pants?
All in all, this is what you'll need to make a breakfast machine:
- uArm robot arm
- A spoon. As for all things: wash it before you put it in your mouth.
- ⅔ empty carton of milk (if it's full the suction cup won't be able to lift it)
- Medium-sized package of cereal, with little or no added sugar because your floor will be sticky for weeks
Step 2: RTFM (Read The Fucking Manual)
The uArm is moved by four servo motors: one rotating the base of the arm, two for the lower and upper joint, and one rotating the suction cup. Servo motors are the standard in robot arms since they can be rotated to a specific position, but are not very good when you need the motor to run at a specific speed.
To make the robot arm move you just have to tell it what position you want the different servo motors to move to. This code sets the upper joint to 180°, the lower joint to 150° and the arm's and suction cup's rotation to 0:
uarm.setPosition(180, 150, 0, 0);
To pick something up with the suction cup all you need is:
Straightforward, right? Probably. But I think understanding how the degrees translated to the robot arm's movement required some sort of intelligence I didn't possess. It felt like a three-dimensional IQ test I kept on failing and after a solid two hours of mindless trial and error this was all I had to show:
At this point in the project I was getting pretty frustrated. Programming the entire breakfast sequence was going to take way longer than I had anticipated and my blood sugar was low. I took a break, bought some sugary boba tea and decided to go through the robot arm's documentation once I got back.
After a bit of research I found that the uArm has a learning mode. Basically you press a button, move it around, and it saves the sequence and replays it. What!? How cool is that?
Just to reiterate: I bought a robot arm, took it out of the package, plugged it in and could make it move any way I wanted without writing a line of code. I'm not sure if it's possible to make programming robot arms any easier than that. Unless you add a mind reading function or something equally sci-fi.
My breakfast machine just got a bazillion times easier at the same time as the boba tea sugar was starting to kick in. Euphoria.
Step 3: Choreograph a robot dance
At this point this project wasn't even technical anymore. Basically I just had to find an elegant way for the robot to pour cereal and milk into a bowl and feed it to me. It was more like choreographing a robot dance routine than anything else.
I placed the milk and cereal on the desk and started planning all the moves. Since the suction cup can't move in different directions I had to push the milk package over and then pick it up. A bit messy, but hey, so am I. I also decided to put the robot arm on a box because it couldn't reach higher than my chest and I don't eat with my boobs.
I did a couple of dry runs with the milk and cereal boxes taped shut. Once I felt confident enough in the routine I decided to go all out and get that robot arm to serve me some serious breakfast.
Step 4: Get fed with the press of a button
Step 5: Chew. Mop. Vacuum. Shower.
It's funny how uncomfortable getting soaked in milk is. I took a couple of takes before I was happy with the video, and when I was done I felt like a grumpy wet cat. Moreover, there were Cheerios everywhere. They did make an oddly satisfying sound when I stepped on them though.
Step 6: Digest and reflect
Here's my overall sentiment for the project:
In retrospect I would probably recommend making a sandwich instead of milk and cereal. That process doesn't contain any fluids which is preferable when dealing with electronics (and people). Bread is also a great excuse to eat butter.
All in all, preparing breakfast with a robot arm gets 4/10 stars. Messy. Crazy inefficient. Didn't actually manage to feed me anything. But fun and made me not feel guilty about buying a pretty pricy robot arm.