Older blog entries for tbenedict (starting at number 27)

Things I've learned while working on Orangutan-lib:

* It pays to have spares: I managed to damage my one Orangutan while testing motor code. Waiting on the mail.

* It pays to do range checking: My first pass at R/C servo code didn't do any range checking because "it added too much overhead" (my own words to myself when I made that bone-headed decision.) Har de har har! The first time I passed it an out of range value it stripped gears. (My servo code now does range checking.)

* It doesn't pay to do electronics when you're sick: Loose wire. Live power. Bad judgment. Melted plastic. 'Nuff said.

* It pays to breadboard: I *thought* that resistor network I had was the type with a common ground. Luckily I learned it wasn't before I soldered anything down.

* It doesn't pay to do software development when you're sick: No melted plastic, but lots of "Aroo?" moments. Which leads me to...

* It pays to do version control: Several times now I've backed out my "Aroo?" moments by checking out a previous rev of my source. Subversion is cool!

All in all the past few weeks have been entertaining. I've learned a lot, built a lot, programmed a fair bit, and can't wait to get over this cold and go to the post office.


Two bits of news:

In the next ten days or so I'll be able to order an Orangutan-X2. My plan is to have Orangutan-lib ported to it as quickly as possible, and to make sure all future development on Orangutan-lib can run on all three Orangutan devices. This'll be fun!

The other bit of news is that after a lot of dinking around with some Parallax QTI sensors for my line follower, I finally figured out how the little beasties work. The datasheet for the QTI doesn't do a great job of explaining it. It took a fair bit of digging into the Parallax forums before I got a good handle on things:

Basically the QTI sensor is a photoreflector that feeds a charge integrator. The output pin of the QTI looks at the integrator, not the sensor itself. This is not typically how transistor-based sensors are wired up. I have my own theory as to why Parallax did things this way, but without tearing one apart I can't really test it.

Anyway, the post that unraveled this gave this advice for reading a QTI:

1 - Set your sensor's I/O line to output and bring it high.
2 - Wait 0.23ms for this to discharge the QTI's capacitor.
3 - Bring the sensor's I/O line low and switch to input. At this point the I/O line should be in tri-state mode, and present high impedence to the QTI. Essentially the QTI's capacitor is now isolated.
4 - Wait 0.23ms for the sensor to charge its capacitor.
5 - Read the I/O line through the ADC.

I really really wish Parallax had made this more clear in their documentation. I wouldn't have stumbled around as much, and I might not have even selected the QTI in the first place. I really was after a continuous analog device.

In any case my complaints have to end here. Parallax QTI sensors are in use on scads of robots, and they do a good job of keeping bots in the ring and following the line. I just wasn't using them correctly. And since I'm not using them on a Basic Stamp, I hadn't bothered to look at the sample code to see how they were reading them. My bad.

In any case Speedy is back on track, Orangutan-lib is still on track, and I might even be able to build out my 4WD mini sumo some day. Can't complain.


It's my first foray into the wonderful world of Sourceforge! I moved the Orangutan AVR library over to Sourceforge, and will continue development and support over there. The supported command set is still pretty small, but it's enough to make a robot move about and sense what's going on in the world around it:


The re-write on the library and examples is complete, so I'm back to developing new code. Command sets in the pipe include servo control, quadrature encoder feedback, and count up / count down timers. The timer code is being debugged, and the servo code is next.

Once I have working servo code and timer code, the next trick is to get a Mark III chassis, motors, wheels, sensors, and Tigerbotics tires, and see if I can make an Orangutan-based Mark III that can out-wit my existing Mark III. After that, I'll finish the 4WD rolling chassis I've been holding off on, move the sensors over to that, and go from there.


No real update on the Orangutan library. At the suggestion of Jan on the Pololu forums, I took a side tangent to turn all my earlier notes and code snippets into a series of single-file examples for how to make the Orangutan do a specific task. The idea isn't to make the library unnecessary, but to give people examples that explain how things are working "under the hood" so to speak, so if the library doesn't quite fit their needs, they know how to start tweaking (and why!) Five examples so far, plus the library itself. Now I need to replicate those examples for the library!

In any case here's where it's living:

Orangutan Library & Examples

I'll likely start this as a project as well. I've got enough of the library done to finish Speedy, my line follower. So hopefully some day soon I'll get back on that one.

Another project that's coming up is a microcontroller controlled underwater ROV. It'd still be a remotely operated vehicle, but with smarts on board the tether can be a lot lighter, and it's easier to expand the ROV's capabilities. (Want temperature sensing? Plug one in!)

Protacraft is about to start selling neutrally buoyant tether cable with two 14AWG power wires and 3 twisted pairs in it for $2US per foot. This would be a perfect tether for what I'm thinking of. With the Orangutan library coming along, the addition of serial I/O routines would let me use an Orangutan at the top and a Baby-O at the bottom. With SPI routines added to the library, I could install more A/D ports than I could reasonably use.

But that's a project for another day.


Orangutan / Baby-Orangutan Library -

I'm a lot further along on the library for the Orangutan / Baby-Orangutan from Pololu. It's written for use with AVR Studio 4, but any WinAVR or GCC for Atmel setup should be able to compile it (it's all GCC, in any case).

So far digital I/O, bitfield mapping of the I/O and control registers, analog, PWM motor control, and LCD code for the full sized Orangutan are all done. Still to be done are serial I/O, SPI (I have help on this one), I2C, the buzzer on the Orangutan, and servo control.

The same code runs on both boards. For the Baby-O, just disable the LCD, pushbuttons, buzzer, etc. At the moment compiled size is about 632 bytes for the Baby-O and 1124 for the Orangutan. With 16k of code space available, this still leaves lots of room for the user program.


11 Dec 2006 (updated 11 Dec 2006 at 23:33 UTC) »

Robofest 2006 in Hilo, Hawai'i ROOOOOCKED!

There was a Lego line following event for students that went really really well. Most of them built two-sensor robots, a couple built using three or more sensors (these tended to do better.) The line course was styled after a road through a rain forest here on the Big Island of Hawai'i, and included obstacles like "boulders" (pieces of colored paper placed over the line). Some robots coped better than others. Crowd participation was intense!

A number of schools also brought their ROVs from the BIRR/MATE competition, and showed them off in 30" deep dive tanks. I brought my little mini-ROV that I built, and got permission to throw it in one of their tanks. The kids passed the controls around from kid to kid for over an hour, with everyone taking a turn at driving the little one around the tank while the bigger ROVs chased it around, putting it up on their camera screens. The fun only stopped once the batteries died.

A raffle was held at 1pm during which a number of roobt things were given away, including a Mindstorms NXT kit, which went to one of the kids in the audience.

Finally, an open mini-sumo competition was held with nine robots. Third prize went to one of our club members, a nine-year-old with a modified Parallax robot. Second went to my own Shallow Blue, and first place went to my wife's Black Dolphin, a Mark III.

The event was organized by Gary Fujihara, who put in an incredible amount of time and energy to pull it off. It was MC'ed by J.E. Orozco from KBIG's Morning Mojo, who did a fantastic job of getting the audience hyped up and cheering. I put the bulk of the credit for the event's success in their hands.

I had a blast, I met a lot of people on the island who are hard-core into Robotics, and I can't wait for next year's event!

Robofest's URL:

Robofest Website


Last night there was a parade in town, followed by a star party hosted by the place where I work. As part of that, our robot club was invited to show off our robots (and try to drum up new membership, of course.) This was just as well because the weather didn't cooperate and the star party end of the star party was a bust. So visitors entertained themselves indoors watching a space video assembled by one of our astronomers, going through the image gallery hallway, and visiting our demonstration.

It was a blast! Lots of kids came, of course, so we basically put the mini sumo robots in their hands and said, "Have fun!" Have fun they did. The bots ran for well over an hour of straight action (thank goodness for LiPoly batteries!) and match after match of competition.

About halfway through this it occurred to me that handing my robot to a complete stranger one week from a major competition might not have been the smartest thing I've done in my life. But all went well and despite some of the new operators being five years old, they took good care of our hardware and thoroughly enjoyed themselves. Batteries are charged, bots are checked out and tested, and we're good to go for Robofest Hawaii.

We handed out lots of flyers, not only for the Robofest competition, but for our club as well. (I need to print up more for our table at Robofest!) It was a fun night. I'm pretty confident I won't entirely get my hat handed to me at Robofest, and with any luck we'll get more people showing up at the meetings ready to break out their screw drivers and soldering irons and join the fray.

Starting a robotics club has been a lot more work than I'd hoped for, but it's been worth every minute. Seeing the excitement and the charge people got out of it, I don't regret a bit of it.


I know this is a pretty simplistic thing to post in my blog, but my Baby Orangutan board showed up in the mail yesterday, and today I finally jumped through all the hoops and got the AVR Studio 4 setup working. (Not that many hoops to jump through, actually... just need to make sure all aspects of the IDE know what device you're using.)

I loaded my first program, the "hey, I have an LED!" equivalent of "Hello, World!": a heartbeat. So for $30 for the device, $34 for the programmer, a few minutes of soldering and about an hour of scratching my head, I have a blinky light.

Nice thing is the blinky light has a dual H-bridge that can drive an amp per channel, eight channels of 10-bit A/D, and ten channels of digital I/O waiting to be thrown at a new task: a well behaved fast line follower.

Work on Speedy begins!


In response to the work being done by cschur:

First, thanks for undertaking this! I'm building out two new robots: one's a line follower, another is a 4WD chassis initially intended for mini-sumo, but it's also being designed as a general purpose explorer. I was planning to use IR sensors, so I eagerly await your findings.

Second, have you looked at the Sharp GP2D12 and related family of sensors? They use triangulation rather than modulated reflectivity, and seem to be much less sensitive to the reflectivity of the target surface. At one point I was trying to "stealthify" a mini-sumo robot, and found it could accurately gauge distance even when the target had extremely low reflectivity. It was uncanny.

Finally, I seriously look forward to your IR photographs. I've done IR film photography since about 1996, and switched to digital IR in 1999. These days I work at a place that does a lot of IR optics. As part of that I run spectra from 190nm out to 3200nm of any material we put close to an optical beam. As you say, the results can be surprising.

Black electrical tape is black in the IR. Colored electrical tape is not. Antistatic foam, as you pointed out, is quite dark and makes good optical baffle material. Some flock papers are extremely bright in the IR. Others (typically PVC-based ones) are extremely black. Black Delrin is black in the IR. Not all black plastics are. Most black anodization dyes are not black in the IR. Black cotton cloths tend to be quite black in the IR. Black synthetics like satin tend to be extremely reflective. Krylon Ultraflat Black paint has almost the same spectral response as higher priced IR paints (pretty sure they both use carbon as a pigment.)

I'd be curious to see what your findings reveal.

Thanks again,


In answer to Vilita's question about wheels, there are lots of possibilities for a 4" wheel less than 1" thick. There are lots of possibilities for wheels, period. If I was making a robot that needed wheels I didn't have in my shop, here's where I'd start:

Check the hardware store and see if they have any lawnmower or wagon wheels 4" in diameter less than 1" thick. Failing that, check the plumbing department and pick up some PVC or ABS pipe caps. They should be available in about that size. Cut back the flange part of the cap until you have the thickness you want. If you have a lathe, it's a ten minute job at the most. If not, you can do this on a drill press by first hacksawing off as much as possible, mounting it to an arbor, chucking the arbor up in the drill press, and finishing it off with hand files. Run slow and BE CAREFUL!

Check at the nearest Goodwill, Salvation Army, or equivalent thrift shop. If anything there has 4" wheels the right thickness, buy it, strip the wheels as part of your salvage job, and shelve your spares.

Check at the toy store and see if anything has wheels about that size. Likely suspects are small wagons and rolling toys for toddlers.

Make your own on a lathe. This sort of goes back to the PVC or ABS pipe cap idea, but takes it one step further to where you design and build it from scratch. Stranger things have happened. You never know. I made a series of 4" diameter parts on a Taig lathe. Similar work could've been done on a Sherline or Asian mini-lathe. A good setup for any of these will run you between $500 and $1000. It may seem like a lot for a set of wheels, but the lathe will still be cranking out parts long after that robot is shelved or stripped.

Design your own and have someone else make it. Strange though this sounds, it bears mentioning. See if there's a home shop machining club in your area and see if any of them is interested in taking on the job. Better yet, see if any of them are interested in robotics and you may have a teammate. (Better still, see if anyone's selling a lathe used. Then you get your own home shop and you can join their club!)

Failing that, price out the job at a local machine shop. Shop rates vary and some shops price jobs as a way of controlling workflow, so do shop around.


18 older entries...

Share this page