We are widening the corridors


Like I mentioned last time we decided to build up a foam wall around the arena. This makes it really easy to setup, but leaves the arena a little rough. After a trip to the Home Despot, we found J-Channel Vinly Trim in 10 foot strips. After a little bit if spray paint, we had some nice end caps for the EVA foam walls.

We tried melting the trim to make some nice corners, but it didn't work out. We also thought about making 45 degree cuts to make some corners, but we really liked the idea of curved corners. So when everything else fails, why not 3d-print it?


I measured the inner/outer diameter of my wall in the picture and used illustrator to make a rectangle with rounded corners. After a little bit of pathfinder manipulation I had a good shape. I exported to an SVG and imported that file to tinkercad. Extrusion game me the basic shape, then I resized a copy of the shape to make a channel for the foam to fit in. Now, I've got corner pieces that fit right over the foam.

I ended up adding a small holder for a flag. I'm not sure if I'll have time to make the flags, but I figure its better to have the hole than not. I'm still using corners without the holes for the inside corners where the goals meet the arena.

So next up, coloring the goals and building obstacles. Getting there!


We are building an arena, we are building it bigger


Next month is the Chicago Northside Mini Maker Faire and fort the 4th year I'll be there representing Trossen Robotics. Every year we have several robots ready for attendees to control like our robot arms and our Hexapod on a Leash

But I've been itching to do more at the faire. So here's the pitch: a 10'x10' arena where 2 Geekbots race around to collect balls. Each geekbot is piloted by a Maker Faire attendee. Here's the catch: just like Mech Warfare, the pilot can only watch the match from a camera mounted to the robot.

So begins my quest to build a 10'x10' arena. It needs to be modular and easy to install and take down. I've got multiple faires in multiple venues, so it needs to work indoors and outdoors. For the floor, Wade reccomended Interlocking EVA foam, which is working out amazingly. Its easy to lay down and take apart, and the Geekbots have no problem rolling around on it.


Since we're not using projectiles like in Mech Warfare, the arena doesn't need to be totally enclosed, but I still couldn't' decide how to do the walls. We couldn't have the Geekbots falling out of the arena now. After playing with a variety of ideas (insulation foam, vinly, PVC, plywood) I finally came to the realization that I don't actually need a full wall - just enough to keep the Geekbots from going over the edge. After a little experimentation Wade figured out how to make a 2" foam wall that keeps the Geekbots at bay. First, we're hot-gluing extra EVA foam onto the outer finished strips of the EVA foam - this make it easy to take apart and store the 'walls'. To keep the geekbots from pushing the walls right off the arena, we're using a long thin plate of ABS under the finished strip to add support. This combo keeps the geekbot in the arena and wall stays nice and in place.

There's still a lot to do. Kat is going to make some arena obstacles and we need to figure out coloring for the goals among other things, but we're well on our way.

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.


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.


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


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?