You Pass the Butter

Read more: You Pass the Butter

Last year at the Northside Maker Faire I met Adrian Choy, Lead Robotics Specialist at Museum of Science and Industry. Last month he got in touch with me about his amazing robotic competition, Robot Riot. I think Adrian's Quote about Robot Riot sums up the competition nicely.

If the DARPA Challenges can be considered the Olympics and Battlebots can be considered boxing then ultimately I want people to consider Robot Riot as Wrestlemania.

Based on the Hebocon competition, Robot Riot is a sumo style competition where 2 robots compete to push each other out of the ring - but that's where the similarities to a standard sumo competition end. First of all, pushing the competitor out of the ring does not guarantee a win - the crowd is the final kingmaker in this competition. This means that your robot needs style and needs to put on an amazing show. The Riot emphasizes artistry, grandstanding, showmanship and craziness.

I had been planning on going to The Riot all month, but I've been running around like crazy between trips and work, so I wasn't sure if I was going to try to compete or not. The Wednesday before the Riot, Wade and I decided to give it a shot and see if we could put together something functional for Saturday.

We talked about a lot of different possibilities - from a dog robot to a crawler robot. Back when I was testing the RoboTurret, I had it accidentally fall over and start crawling away. I thought it would be funny to have a turret crawl around the ring like a snake (something I accidentally figured out you can do with a pan/tilt turret while testing some of ours at Trossen).

We started sketching a robot and discussing 'personas' that we could dress up as. I was just about ready to dress up as Tiger Millionaire when we hit upon the idea of the idea of building the Butter Robot from Rick and Morty. Of course our our robot wouldn't be your run of the mill butter robot, no the plan was to build The Butter Buster

Obviously this would mean that Wade would be dressing up as Rick and I would be dressing up as Morty. A couple of Amazon orders and a goodwill trip later, Wade and I were ready. Special thanks to Kit for styling the Rick wig, she did an awesome job.

Read more: You Pass the Butter

The robot build turned out to be pretty basic. For the mobile platform we 'borrowed' a Surveyor SRV-1 from the Trossen Museum. I made a super basic plate in Tinkercad to adapt the surveyor to a RobotGeek bracket. I also made a hole that we could put a bluetooth speaker in to give the robot some jams. (We played with the idea of adding an MP3 module right onto the robot, but ended up deciding against it for time and control constraints). The rest of the endoskeleton was 4 RobotGeek Servos (roll, tilt, 2 arms) cobbled together with C-brackets and side brackets. The arms are made out of aluminum standoffs and right angle brackets.

For electronics we've got an Arduino Pro Mini controlling everything, powered by a little 7.4 LiPo. A little dual 1A motor driver is enough to push the motors in the SRV-1. Luckily the servos and drive motors were all happy in the LiPo's 6.6-8.4 battery range. To add a little show we've got a WS2812B RGB LED (A.K.A. Neopixel) for the robot's 'eye' and LED Driver connected to the red led on the top of the 'bot.

The mini gets its marching orders from an ArbotiX Commander via an XBee link. The commander hardware and library made it a cinch to control the robot.

The Butter Buster Firmware is pretty basic - the firmware reads from the commander to directly control the servo motors. There's a little bit of hacky drive control to let the robot get driven from a single analog (instead of tank control). The neopixel changes color as the robot moves forward/backwards/turns.

Wade used his extensive experience with EVA foam to build an awesome head for our robot that fits directly over the endoskeleton. A hole for our salvaged camera lens and some wires for the top of the head finished the look.

Butter Buster is by no means the best designed robot. The initial run actually had the power switch on the back, so it would fall over and power off. Even after that was fixed, the balance was during operation was a little tricky. To rotate without too much roughness you need to tilt the head forward just right, and falling over was still a hazard. Despite that it's a capable enough robot, and Wade even figured out some good ways to get back up from a fall with the tilt and roll servo. Really, he didn't even need to, as he could still drive around even after falling down. I think the wonky-ness was part of it's Robot Riot Charm.

Read more: You Pass the Butter

The event itself was a total blast. Adrian came in an awesome referee shirt and started things off right with a Piezo Buzzer rendition of out national anthem. Other competitors included 'Ham Immanuel', a walking pig robot, and 'Knife to Meet You' a vibrating robot with a knife attached. Check out the video to see all of our fights in action. I'm hoping to get a copy of the live stream from Adrian soon.

Butter Buster performed all night admirably. In the first match we did manage to burn out our roll servo, but a pair of wire cutters and some tape got the Butter Buster back in fighting shape (without roll capabilities that is.) Before each match, Wade (our designated pilot) had to take a shot of J├Ągermeister, and while he was certainly drunk by the end of the night, he too did a great job, piloting the robot as effectively as he could have. We won our first 3 matches, and in true Hebocon style we attached Bowie Bot's head and limbs and 'america bot's flags to Butter Buster, upgrading him into the 'Young American'. In the end we got pushed out of the arena by 'A Bot Named Slickback', a pencil-case bodied, 4-cell LiPo monster of a rover. This robot actually ran itself off the stage after every fight except ours. But I'm still proud of our little butter busting robot.

So what's next for the Butter Buster? Who knows, maybe we'll make the con circuit, or put him in the next Robot Riot. Until then, he sits on the shelf, watching, waiting, ready to pass the butter and bring the pain.

DynaPose 2

Well, it's been a while, but I'm back! I've had a few developments since my last blog (including new bots, a new 3D printer) but today I want to show off the next version of DynaPose.

Last year I wrote some super basic scripts that would allow you to pose an arm in discrete positions. It's handy, but a little clunky. Lat week, after seeing one of SparkFun's Video for the uArm I was inspired to make a real-time DynaPose.

The basic idea is that instead of hitting a button to record each pose, you simply move the arm to the positions you want it to go to and the ArbotiX Microcontroller automatically records positions on a timer. The upside is that the arm will playback in the same fashion that you pose it. However, this is fairly memory intensive, eating up the ArbotiX's precious SRAM.

How intensive is it? Well that depends on your number of servos and your read rate! So let's do the math. The atmega644p on the ArbotiX has 4k of SRAM. We'd have to do some digging to figure out the overhead of our default variables and the DYNAMIXEL and serial libraries, but let's just say that 3.5K was free - or 3584 bytes. Let's also target the PhantomX Pincher which has 5 servos. 3584 bytes / 5 servos gives us 716 bytes per servo. Now AX dynamixels have 10-bit positional encoders, so we're going to have to store the positional data in a 2-byte integer, so 716 / 2 gives us a total of 358 positions.

Now you've got to decide how long you want to stretch those positions. For butter smooth recording and movements, you want somewhere around 50ms between reads. and 50ms * 358 positions gives you 17,900 milliseconds, or 17.9 seconds of pose time - not a whole lot. i've found that 100ms (10 reads per second) works fairly smoothly and doubles your time to 35.8 seconds. If you don't mind some jerkiness, you could go up to 500ms for 179 seconds! But you're also bound to miss some positional data.

now of course there's ways to expand your memory. You've got another 1k of EEPROM, or you can use an external EEPROM module or other memory module. I'm also looking into using an SD card logger to handle the data and make it easy to get to your computer.

Or you could ditch the ATMega 644p for a Teensy 3.2 with 64k of ram - with that much ram you could pose a 20-servo HR-OS1 at 20hz for 161 seconds!

The code can be found here as part of the before mentioned repository. The code is a work in progress and needs some tweaking before using other robots, so drop me a line before you use it. You'll need 2 buttons (record on DIO3, play on DIO4), a buzzer on DIO2 and an analog sensor on A0 if you want to manually control a gripper. SERVOCOUNT defines your number of servos and READ_INTERVAL is that timed interval I mentioned before.

Here are some things I'm working on to make it ready for general consumption:

  • Better gripper options for other arms
  • Locking/unlocking options
  • Removing duplicate pose data (but possibly recording pause data and allowing for a headband of the 'same' pose)

And some things I'm pondering for the future

  • Bit-shifting to use even more memory
  • Low resolution option (double your pose time)
  • EEPROM writes
  • SD card writes

Tiny Arduino

Read more: Tiny Arduino

You know me, I'm not powered by pure whimsy like some people. But I do really enjoy making things small (as evident by my quest for a Tiny Hexapod. So now I've got this crazy idea about making a tiny Arduino. Not an Arduino Mini or a Tinyduino, but a Tiny, to scale arduino.

Of course this is a bit impractical. There's no real benefit of having a smaller scaled Arduino, at lease in the prototyping sense, but it could be fun, so that's enough for me. So for a basis, I'm thinking that I could use 2mm headers instead of 2.54 mm headers .2 .54mm headers are used on a lot of standard prototyping hardware, since it's .1 inch - so everything from breadboards to components use this. 2mm tends to be for a little smaller stuff lie XBees. So just from the headers I've got a 22% size reduction - see the image for a mockup. That puts the total board length at 2.1 inches. If I cut off a little here and there, I could probably get it down to 2 inches. But can I get it smaller?

Digikey has these headers that are 1.27mm pitch - half the size! a Tiny 1.54 inch Arduino would be crazy. But at that point, do I actually have enough room to get all of the electronics on the board? I mean I can't just 'shrink' the circuitry like I did in the mock-up. I have a couple of things on my size (small surface mount chips, smaller usb, the fact that there's a lot of 'empty' room on the Uno) but it's still going to take some work. Not to mention finding eagle parts for those tiny connectors and making sure I can get them in smaller quantities, as they're somewhat less common.

My mom has a STEAM workshop next month, I'm thinking these could be cool badges. at 2 inches across, it's a little more reasonable to use them as actual Arduinos, at 1.54 it might be hard to find the right size pins to connect.

Really, I just need to spend some time in my PCB software, Eagle, and see how compact I can comfortably make the board, then pick my pins from there. Based on the Arduino mini and pro mini, I think I can get pretty small. I figure I'll go with a USB micro connector to keep things small. I might need to lose the ISP connector and just use wires to the side headers for programming the bootloader, but I'm not sure.

More importantly, what will I call it?

Display Tool

I had a busy (and awesome) weekend, but I didn't have quite as much finished product as I'd like.

I did some work on my LED display, but nothing too intresting (put in a decade counter for a row driver, did some testing, etc.). I did write a tiny PHP Grid to Array Tool to help me generate some arrays. Just check the boxes for 'on' pixels, and get an array out. The tool is pretty basic, but it wouldn't be hard to put in a custom row/column count. Image to array would be nice, or font to array If I could make it scale correctly.

Meanwhile Kat is kicking ass and taking names. She's been pushing herself really hard, and making me look bad. So this week I need to think about how I can step up my game...we shall see.


For Christmas my sister got me a bag of Sugru. It's a silicon/rubber clay like substance that you can mold like clay. You can mold it to fit just about anything, and it sticks to a variety of surfaces. You can mold it to fix, create, or decorate. Once molded, you leave the sugru cure for 24 hours or so, and you have an awesomely fixed/made object.

Sugru Project 1

Read more:  Sugru!

One of my favorite things to do with Sugru so far is attach magnets to things. I've attached magnets to my speaker pod, plastic eyes, and my favorite - a flashlight.

My Leatherman S3 is probably my favorite flashlight. However there's plenty of times when I need to hold it in my mouth or precariously balance it on some nearby object. Well, not any more! The rare earth magnet is strong enough to hold my flashlight to any magnetic surface. I also like that I can attach my flashlight to my coat via the plates that I put in my coat last month.

Read more: Sugru!