Opus, the idiot robot child
So at long last, here's my latest robot project, lovingly titled OPUS. I've named him that because (a) I've been working on him for so long, and (b) he has useless limbs. =).
OPUS was designed as a birthday present for my Wall-E-crazed 7 yr old, and was greatly inspired by Edward. During planning, I set out to do lots of new things with this bot:
- IR-Tracking Head
- Use the speakJet
IR remote control
- Amanda LDR
- Make my own circuit boards
- make an external H-bridge to replace the burned-out A/B terminals on my picaxe board
lateral movement of arms back and forth ability to lift and grab objects
His primary function is to drive around and avoid objects poorly. The poorly part is on purpose, because I want my kid to have to help him all the time, until he can eventually "learn" how to not get stuck everywhere. (by "learn" i mean "be reprogrammed by me when nobody's looking")
Every so often, he moves his limbs and/or speaks. His speaking is controlled via a SpeakJet chip run through an LM386, which is not nearly loud enough. (thus he has to stop to talk). He has three different primary moods, each with 20 phrases:
- human-seeker ("human", "human?" "huuuuuu-man ...." etc.)
- button junkie ("please push my button","push it", "come on, push it", "buttonbuttonbuttonbutton" etc.)
He has two other human-instigated moods:
- interrupt (ie. the button), in which he says completely random things, thanks you for pushing the button, or asks for you to push the button again.
- defensive, which can only occur if his front bumper is triggered, or if the LDR picks up three objects in a row without being able to move forward ("you are a mean human", "can a robot drive around in peace?", etc.)
He has 2 picaxe 28s powering him, 1 for the body and speaker, and one for the IR-tracking head. I had initially planned to have communication between the two (and thus a ton of memory space for speech commands) but it didn't work out for me. I instead went for the idea of having the head move completely independent of the body. (unfortunately, the motors and AmandaLDR use up so much of the battery that the head doesn't work at all as good as it did during design and testing, (I should have used a 7.2v battery) so instead of my indended ADD, it looks like he has Parkinson's disease. tH
The body is made of expanded PVC that i picked up for free at a local plastic wholesaler. Very easy to work with. Glues like a charm with generic superglue. All I needed was a boxcutter and the engraving bit on my Dremel tool. Granted, I'm no carpenter, and i didn't really user any blueprints. To bend it, I used a cigarette lighter. I think I'll use this stuff again in other projects.
For the battery, I used a 6v niMh RC battery permanently attached to the bottom. This way it is the robot that is recharged, and not batteries. Simply unplug the robot's power chord, connect it to the charger, and you're good. I also had to modify the terminal contact so the polarity could not be reversed on accident.
The primary sensors are the four AmandaLDRs on the front bumper. To conserve voltage, I cycle through each LED/LDR combo for measurements, rather than pulse them at the same time. I also like the disco effect it creates this way. You may notice that the white LEDs fire twice as often as the green. This is because the edge detection is more important than the obstacle detection. To further try to prevent falling off an edge, I programmed a random turn every x number of forward cycles, so that it would hopefully never encounter an edge at the bumper's blind spot. He's only fallen once so far (video).
Many many thanks to Oddbot, Fritz, MintVelt, Robologist, Mike, and Ant for all your patient answers to all my questions.
I got a little carried away with the design of this one, if you hadn't noticed. More Pics are available over at my blog.