Older blog entries for tbenedict (starting at number 31)

Shallow Blue lost at UNI. Not that I was entertaining any huge hopes, but I confess to feeling a little disappointed I went out that early. (Of course I lost to 2Strong2Bad, which was pretty cool to see no matter what.) Already planning for next year. But after watching the ExSpurt Mule matches, I'm pretty sure I'll lose next year, too. Bring it on!

On another note I finished my first real honest to goodness robot using the Pololu Robotics Orangutan controller. It's a line follower I've had on my bench for months called Speedy. To be honest the Orangutan is massive overkill for the project, and I was planning to use a Baby-Orangutan (which weighs a measly 3g). But my Baby-O is tied up in another project, and I had to get it finished by Monday for a club meeting.

I learned something in the process: When you're tuning a new PID loop, ALWAYS make sure your batteries are up to snuff. I did all my tuning with a 9V depleted to 6V (little did I know), so the tuning was disappointing, the speed even more so. A battery swap this morning put a smile on my face when I saw the higher speed it was getting, and made me laugh when I thought of the time I spent yesterday doing loop tuning. Anyway, it should be a fun day of tuning.

Tom

Shallow Blue is in the mail to UNI's mail-in mini-sumo competition. Yahoo! This will be Shallow Blue's first appearance off-island, so I'm excited as excited can be.

Please please please, if you are hosting a robotic competition, consider adding mail-in entries for at least some of your events. This is my first time entering an event off-island. I hope it's not my last.

Tom

Lots has happened since the 0.2 release of Orangutan-lib. I got my ThereminVision II system, and managed to barf things up before I ever got it running (adding "Don't solder chips onto boards at 5am before I get my coffee" to the list of don'ts). I'm hoping a little creative re-soldering and maybe part replacement will get the beastie up and running. Can't wait!

In other news the last of the parts for my line follower showed up. I'm re-designing the motor mounts and bot chassis to cut weight. It's already a little too over-budget on weight for my liking. If I can shave things down under 150g with battery, I'll be happy. (If I can swap batteries and get it down under 120g, I'll be a lot happier.) I'm already looking at making custom wheels for it. Trying to get those in under 5g apiece, with tire. Only time will tell.

I'm working on the software tx-only UART code for Orangutan-lib. Doesn't look like it should be too heinous, but I'd like to leave the option open for defining more than one. This will take some testing. Might be time for another release soon!

My line follower will be the first robot I build that uses Orangutan-lib, so I'm pretty stoked to see how it turns out. The next one is going to be a downhill racer, project to be announced. And once the ThereminVision II stuff is up and running, the mini-sumo that it's destined to run on will also run on Orangutan-lib. Proof's in the pudding. Hope it all works!

Tom

The 0.2 rev of Orangutan-lib has been released:

http://orangutan-lib.sourceforge.net

It's a WinAVR/AVR Studio 4 library for the Orangutan family of robot controllers from Pololu. The current rev of the library include support for ADC, digital I/O, code to drive the on-board buzzer, code for the LCD, relay-style motor control, PWM motor control, pin change interrupts, code to drive up to eight R/C servos, and hardware serial UART code.

Tom

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.

Tom

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.

Tom

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:

http://orangutan-lib.sourceforge.net

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.

Tom

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.

Tom

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.

Tom

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

Tom

22 older entries...

X
Share this page