Monday, January 21, 2013

TOBL2: First Rolls

TOBL began as an idea that popped into my head one fateful night in the Fall of 2010 - sometime around here. Two years and a few months later, TOBL the sequel, is alive. Thinking about it this way, I'm not too far off Apple's new product release pace. In fact, TOBL original was controlled by my iPhone 3GS, where as now I have an iPhone 5. Interesting. Well, without further delay here's video of the first recorded rolls:
I cannot think of a more appropriate place for TOBL2 to be initiated than the filthy floors of the hallowed MITERS shop. After all, this is where the first TOBL was forged and where I learned most of the skills needed to create TOBLs. Okay, onto the technical part.

The numbers:

0.8 lbs
22 screws and bolts
6 wheels
2 bridges
7 different belts before getting just the right size
5mm of ground clearance
And my favorite: TOBL2 has traveled to and was worked on in 3 different states

To get to this point there were just a couple agonizingly simple loose ends to address. First was the belt and tensioning issue. Two posts (and four months!) ago, there's a picture of TOBL fully assembled and seemingly a few 1s and 0s away from action. However, the belts used in that picture were so tight they stalled the motors. Thing I learned: the pitch diameters given for FingerTech belts aren't precise enough to be designed around. I designed the whole pattern on the side plates to the millimeter to get the belt tension just right, but went through seven different belts and three different pulleys before hitting a winning combination.

Two: the radios. My brand new pair of xBees which I paired and updated the firmware on weren't talking to each other, I thought. Turns out I was using an older REV of my XPWMShield that was assembled incorrectly, denying power to the xBee on-board TOBL2. After fixing this and re-flashing the xBees to a wireless programming friendly bit rate of 57600, wireless communication was restored. I also learned a neat trick for wireless programming: when uploading the new code hit the Arduino reset button just after the program size pops up. There are fancier ways to achieve this automatically if you plan ahead a little with your circuit, but this works fine so long as you can get at the reset button! Wireless programming is a stupidly awesome upgrade for the TOBL line because otherwise there's no way to access the USB programming port.

After being shelved for months that was seriously all that needed doing...took me about 6 hours yesterday. With my volatile lifestyle and imminent graduation who knows how far I'll get on this list, but here's what I would like to happen next:

1. Clean up the wiring. A healthy application of zip-ties and more flexible wiring should take care of that. Needs more wall-flips.
2. Incorporate the servos that currently serve no function except a slight amount of structural integrity. They were intended to auto-tension or de-clutch the belts. This is mostly a mechanical task.
3. Develop the controller. My Python controller is quite rudimentary at the moment. I run the program in the shell, click on a little box, and then have the following discrete abilities: forward, reverse, left, right, and hard stop. The next step is to add speed control and a little calibration to account for unequal belt tension. A GUI would also be nice to trim different parameters.
4. IMU? Well, I am taking a controls lab this semester. Maybe I can use TOBL2 as the platform for some kind of controls problem like directional stabilization? The motors probably aren't fast enough to enable Segway-mode. Shame.
5. NEW ELECTRONICS. Bet I can take all the functionality of XPWMShield and MKI and put them onto one wireless motor controller board with a smaller footprint. It would also be nice to ditch the expensive Arduino Nano and just run straight off of an AVR chip with the Arduino bootloader. Regardless of whether this new batch of proprietary electronics makes it onto TOBL I'd like to have a more polished and convenient package to work with for whatever project comes next.

Time to go back to school.