Listen Print

Three Palms in a Robot
Pages: 1, 2

It's a software problem

Because I have only a Palm V at home, we had to cadge a Palm III to use on the project. Unfortunately, the first Palm I borrowed was at the end of its long and storied life, and it immediately crapped out. When I hot-synced it, the screen had disturbing vertical lines across the screen, though a soft reset, warm reset and hard reset restored it -- but just barely.



I exchanged it for a younger, healthier Palm IIIxe that my editor found.

The software to run the Palm robot is on the original PalmPilot Robot Kit (PPRK) page, and includes PenFollow, a stylus-guided navigation program and the PPRK Explorer program, which "allows your robot to explore [the] world around it. The robot can follow walls, convex, and concave corners."

Both of these require MathLib.prc, so I downloaded that and the two programs I was itching to try.

But when I tried to install these using HotSync, disaster struck. The hot-sync itself seemed to go OK. There were no errors in the log, but at the end of the hot-sync I got a "Fatal Alert" box on top of the Palm logo. Inside the box: "Fatal Exception," and a box to click that said "Reset."

I clicked the box and a second later it came back. I tried it five more times, before frantically making a call to my editor -- can I do a hard reset on this? He said that I could, and I did. I managed to clear the error, and I tried again.

This time I tried to install MathLib by itself -- but I got the same problem. I tried all sorts of permutations of installations and changing user names, but nothing worked. I called Palm support, and the college kid who took my call said, "try contacting the third-party software" -- which is exactly what I was afraid he'd say.

I sent e-mail to the guys at Carnegie Mellon, and they suggested something I'd already tried. "The programs definitely work on PalmIIIxe," the guy said, "since that is what I used to write and test them with."

After another call to Palm support and some digging on Deja.com, I was still stumped, and so were the support people. The second guy gave me a file number -- in case another support minion wanted to read his notes.

By this time I had hot-synced, hard-resetted, and cursed more times than I could count. Nothing worked. It was time to call in the experts.

The last gasp

I begged the name of a Palm expert who works with an O'Reilly expert, who referred me to his friend Frank. I e-mailed Frank my tale of woe and the link to the PPRK site.

"Drop me an e-mail with some more info on just what you are attempting to do and I will be happy to attempt to assist you in getting your robot working," he wrote. "In the meantime, I will look at ordering one of these robots myself!"

I wrote back:

MathLib.prc and robot1.prc were the two I tried first. I downloaded those off the site. I wanted to run the Explorer program, but since I couldn't get past the other two, it was a wash. I had an even older Palm III to begin with, but it suffered a horrible death when I tried to hot-sync it (but it looked dodgy to begin with).

Frank hot-synced into action:

I grabbed the first Palm I could find on the shelf -- a Palm IIIe, which ran PalmOS 3.1. This seemed to work fine (Just what you wanted to hear, right?). I installed MathLib.prc, Robot1.prc, and ServoTest.prc. In the absence of a robot, I could do very little (I just got shipping confirmation yesterday, so thanks to you, I have just purchased another toy).

The IIIxe runs 3.5. The older serial comms was actually emulated on 3.5 via a "serial manager" and there was possibly something not quite right there, though I thought the probability of that was very low.

He suggested deleting all the files from the C:\Palm\Robot\Backup folder ("Robot" is my name for my misbehaving Palm IIIxe), and I tried that -- no luck. I wrote Frank again:

Short of standing on my head and chanting in foreign languages, I've tried just about everything. I did a hard reset (I had to; it's the only way to revive the ailing machine after a fatal exception). I made a new name for the little device and hot-synced on that. A straight hot sync without any installation works fine. But as soon as I tried Robot1 or MathLib or ServoTest ... CRASH.

The Palm IIIxe was running System 3.5.0 and other basic software (applications, a date book, etc.). I was running Palm Desktop v. 3.0.1. On a PC. Windows 98. Low humidity. Good natural light. Plenty of dietary fiber.

In the midst of this, I read on the Palm site about "Palm OS v3.5.2 Update, a system update for Palm OS software versions 3.5.0 and 3.5.1. It fixes a couple of low-level system issues that in rare circumstances might cause certain third-party applications to crash."

Aha! My editor gave me the green light, and I downloaded 3.5.2. And I installed it -- and it worked! The upgrade was successful, no fatal exception death spirals at all.

But did it help with the robot software? No. Nothing helped; nothing at all.

A few days later Frank mailed me:

I finished the PPRK yesterday and it seems to run fine even though the floor was a bit slippery for the wheels. I think concrete or a very low pile carpet (like industrial, office carpet) would work better. I am going to move the Palm off of the device and add an infrared connection to make it a remotely controlled IrBot. Let me know how I might help you more. I am, unfortunately at a loss for whatever is happening with your HotSync.

Me too. The final irony was that the build -- the part I'm least experienced to do -- was a snap, but the whole project died because of software installation, something I've done hundreds of times. Not only that, everyone else -- at least the Carnegie Mellon guys and Frank -- have no problem with the software, but no one can figure out why I can't install anything.

And weeks after Christmas, I had a robot, a Palm, and no way to get them to work together.

The happy ending

Turning in a story where the damn thing doesn't work is no good, so my editor did the only sensible thing: He extended the deadline again.

That gave me the chance to beg a Palm off of my friend Ron who is an engineer at Palm.

I'd like to say I went through the whole process again, and successfully loaded the software on the new Palm.

But I didn't. I got Ron to do it for me. The mysteries of unsuccessful installations and multiple crashes will remain.

The Palm arrived, along with a note from Ron:

I still don't understand how you control a moving robot with a stylus-driven interface. I picture you and other techno-nerds on knees and non-dominant hands, styluses in dominant hands, chasing three-wheeled gizmos while stabbing furtively at a moving, low-contrast, low-resolution screen.

I was wondering the same thing myself. Was it going to be speedy? Would it scoot across the floor in an impressive fashion? Would I have to scamper to catch it? And most importantly, would it scare the cats?

I turned the Palm and the robot on and set it on the carpet in my office.

It worked! Sort of. It was pretty clear that even really low-nap carpet bogs the poor robot down, so I moved my desk chair and tried it on the plastic carpet protector, where it ran much better.

The PenFollow program was simple. Just hit "Start" and then draw a vector on the screen, and the robot takes off more or less in that direction. It was really slow at first, until I realized that the speed is proportionate to the length of the line you draw on the screen. A shorter line is slow; a longer line is ... well, not fast exactly, but not glacial.

Controlling the robot.
Directing the robot using the PenFollow application.

I then took the robot to the kitchen. The robot moved well on the textured linoleum on the floor, squeaking as the little servos turned. It didn't always move in a straight line, however. I tried various directions, and it seemed that if one wheel had to turn more than the other (the third typically did nothing), the robot tended to curve away from the dominant wheel.

Palm Robot in Action

Click to view a QuickTime movie of the Palm Robot in action.

View a QuickTime movie of the Palm Robot in action.

Once it was all said and done, we tried to beam the PenFollow app from the good Palm to the noncompliant Palm, just to see if it would work. It didn't. Normally on a Palm, if you choose Beam, you'll get a list of the all the applications and you can then choose which one you want to beam.

However, we tried that on the Palm with PenFollow on it, and the application didn't show up. I don't know what that means exactly, but it probably means that PenFollow is something other than a standard .prc file.

Well whatever. After this amount of time, I was just happy that the darned thing works, and I'm willing to overlook small details.

As a final test I set it down and drew a long line right at the cat. The cat sniffed, looked slightly worried, and then walked past it, giving it a bit of room.

Acroname's Richards is right. The robot is a novelty device, and it does open a lot of opportunity. I just wish it would scare the cats.

John Ochwat is a former editor for Upside magazine and contributes to numerous tech publications.


Discuss this article in the O'Reilly Network Wireless Forum.

Return to the Wireless DevCenter.