| ||||||||
|
ARRRRR. I've been hacking on the Dread Pirate Robots since November of 2005. He's been a testbed for a number of my robotics projects:
Holonomic DriveI came up with the holonomic drive about fifteen years ago, and wrote a simulation in — don't tell anyone — LOGO. At the time, computers were expensive and I was not roling in dough, so I designed a specialized joystick for controlling a three-wheeled holonomic drive. Unbeknownst to me, it had been invented about fifty years earlier. The word "holonomic" seems to have been applied by that master of catchy labelling, Buckminster Fuller (whose parents were evidently also good with names). I was mildly disappointed to discover this, but it means I don't have to build the parts myself!
A holonomic drive is one that can move in any direction, turn in place, or do both at once. With the right software in control, travelling sideways while spinning is easy. I love the elegance of this arrangement; it's as close to flying as one can get without leaving the ground. DPR uses a three-wheeled holonomic drive. Sure, other folks have done four- or eight-wheeled holonomic drives, and controlling them is vastly simpler — but I like elegance, minimalism, and trig. While the drive can, in theory, move in a straight line while spinning (and perform many other fluid motions), it takes delicate choreography of the drive wheels to reach its full potential. All the control is handled by an ATmega128 slave processor, running my own fixed-point trig and math libraries. There's an organic beauty to the wave motions of each wheel as DPR maneuvers around the living room. (Though it can also be a tad eerie, watching him turn to face you while moving in an unrelated direction.) Emotional modellingDPR is not an anthropomorphic robot, but it's important for humans to relate to him as alive. This isn't impossible — look at R2D2 — but it takes some careful programming. I've concentrated my efforts in two areas: the emotional model that drives his behavior, and sequencing his motions to produce fluent body language. DPR's emotional model is a simple multifactor system, derived from my social psych work years ago. If DPR is feeling playful, he may chase your feet; if you corner him or chase him, he gets nervous or scared. Likewise, smart-ass humans who move his ball out of reach instead of letting him play with it may elicit annoyed remarks. DPR gets bored, too, and may spend his idle time wandering the room, singing, or chasing moving objects.Developing DPR's body language has been interesting. The process is similar to animatronics: programming the mechanical motions of a motor to convincingly fake the smooth, fluid motions of a creature. The main difference between DPR and most animatronic systems is that DPR's body language must be generated in real-time — based on a variety of factors, from his emotional state to events around him. My ultimate goal is complete emotional transparency, where his mood is quickly apparent to the humans he's interacting with. When people can read a creature's mood and see how their actions influence it, interactions are far more comfortable. (This is trivial for cats and dogs, of course, but teaching a robot to do it is a bit more complex.) Image processing and depth inferenceDPR uses a CMUcam2 for vision, a color camera at QCIF resolution. It has a host of on-board image processing techniques, but I use very few of them. Instead, I feed image data to Java software running on DPR's main processor, which handles most processing. Currently, DPR can find and chase bright or brightly-colored objects, acquiring whatever targets he finds "interesting." I picked up a cheap street-hockey ball, with which he's currently quite enamored. I'm working on code to infer depth from the camera images, by projecting a laser line across the scene and watching how it falls. This will allow DPR to find and circumnavigate small objects, find doorways, and keep from bonking into the stairs. Psychologists discovered years ago that humans rarely maintain a full mental "map" of a scene, navigating instead based on features and landmarks. (Try drawing a scale map of somewhere you frequent, and you'll see what I mean.) So, as a rogue psychologist, I'm avoiding the roboticist tendency to construct maps of DPR's environments. Instead, DPR uses "naturalistic navigation" to recognize locations and make his way through the house. Audio processing and speech synthesisDPR "hears" in stereo, though his microphone "ears" still need some tweaking. I'm working on teaching him to determine the directions of sounds, by far the most challenging math of this project. I'm also working with some open-source tempo detection software to let him pick up the rhythm of music or other sounds, and coordinate his motions accordingly. On the output side, DPR uses the Festival speech synthesis package to speak, albeit with a British accent. I'm also working with some old music-generation code to teach him to sing to himself when bored or happy. (The nice thing about being a powerful Linux machine with a full audio system is that you can sing to yourself in four-part harmony with a rhythm track.) Tech Specs
|
|
|||||||
|
All content ©2003-2006 Cliff L. Biffle, all rights reserved. All trademarks are the property of their respective owners. <cbiffle@safety.net> | ||||||||