Let's Make Robots!

Opus, the idiot robot child

Navigate, seek humans for input, speak.

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
  • Inter-picaxe communication
  • Use the speakJet
  • IR remote control
  • Amanda LDR
  • Treads
  • 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:

  • R2d2
  • 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.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Awesome! I love robots that "look like robots"

Holy Cow! I can't believe I never noticed this bot before. Awesome! Thanks for chillin' this one.

Thats a pretty funny an kool robot. tobad the microservo brake :(

what code did you use to move the arms


...that I had the skill, the money, the resources, and did I mention the money?? I would have millions if I had the money:-(

Going to church doesn't make you a Christian any more than going to the garage makes you a car --Laurence J. Peter  

I had a talking clock that wasn't very loud, it had a tiny 20mm mylar speaker. When I put that speaker in a bottle top it was suddenly a lot louder to the point the neighbours complained.

Awesome robot! Another great robot from Calculon, even has speech - this is too cool! I would think your 7-year-old just absolutly loves it. A really great Wall-E knockoff. I'm with OddBot - some RGB LEDs in the "eyes" could be used to show some emotion.

You mentioned having some problems with the LM386 not being loud enough - in part this probably depends on the chip and speaker combo you have. When I ordered some LM386's for my SpeakJet, I noticed that they come in 3 different "flavors": LM386-1 (0.325 watt@8 ohm), LM386-3 (0.7 watt@8 ohm), and LM386-4 (1 watt@32ohm). If you have the LM386-1 then you probably are having problems with volume! All of them will run at 5 volts (though each has a different maximum input voltage). The overall size of the speaker makes a difference too, if you can fit a larger one in, it might be worth a try.

A little carried away on the design? NOT AT ALL - I think it looks great! This little bot ROCKS! I think it gave him some "personality" before you even coded in his sounds and quirky obstacle behavior.

This one is clearly one of my favorite robots here, great job!

thanks guys! maybe i'll make a video of it just going through all the phrases, since it would take all day the way it is now ...

But what was it tracking? Can you do a video with object tracking? I have some improved code that might help if you need it.


With those fantastic big clear eyes might I suggest some RGB LEDs to show emotion? if he gets stuck in a corner he might get frustrated and they would glow red. Maybe green is normal and blue is sad or lonely. Perhaps colours could indicate what mode he is in? Maybe they can rapidly change colours when he dances like disco lights?

LED eyes were part of the initial idea, but they got sidelined while i ws busy re-re-re-doing the front bumper. Version 2.0 will definitely have to have RGB eye-lights. As far the IR, some imporved code might help, but i think the problem is also that the right side pics up 10x as much as the left. It didn't test that way on my breadboard, so i assume the photoresitor is damaged. So my code tries to calibrate, but as you can see in the vid, it doesn't really help. plus when the motor and LDR is on, the IR tracker's range goes WAAAY down.