View Full Version : [Contest Entry] Otto Lives! (Sort of...)

10-18-2007, 02:44 PM
Otto is my ongoing project in robotics. He (currently) has 2 Oopic Rs, one SSC32, one Sabretooth motor controller, a digital compass, 4 Sharp IR range detectors, one SR05 ultrasonic detector, 3 lasers (one with collimating lens), nowhere NEAR enough LEDs, wireless color camera, 2 DC gearmotors, and 17 servos. He has 3/32 aluminum plate in a few spots to help with heat dissipation and add structural strength. He is powered by two 7.2 volt RC-hobby-type 3000 milliamp batteries that (so far) will power him for at least 2 hours.
His parts bin (pieces almost ready for installation) includes 2 more lasers (one green - oooh!), 2 alcohol sensors (one the police use, one ALOT more sensitive), CO2 sensor, methane sensor, propane sensor, SpeakJet, a pile of LEDs that resembles Everest, and more miscellaneous nuts and bolts and wire spools than I can count.
He isn't reliably mobile yet as I'm still finishing up the drive programming. I'm using one Oopic for his 'head' and another for his 'feet' (drivetrain). Getting the 2 Oopics to reliably talk to each other is also an unfinished task, but I'm getting close.
In the second pic you can see the 'head' Oopic right behind his neck. The wireless cam is near his 'mouth' and you can also see the short antenna coming from it. His 4 IR sensors are located Fwd, 45 degrees R and L, and one in the rear. Two card lasers are located at his 'lower jaw' points, one laser as a 'bow-tie' (hard to see here).
His arms have 4 DOF each, plus grippers. His arms are mostly for aiding expression. When his SpeakJet is installed (speaker in 'mouth' area) his favorite phrase will probably be "Out of my way, carbon analog device!"
I also plan on putting 256k EEPROMs in each Oopic, and REALLY go hog wild with custom programming. Right now I have to finish and debug his latest code, so that may wait.

Otto says: "Remember, it ain't a real robot unless it has lasers comin' out of its' eyes."

10-23-2007, 03:26 PM
Perhaps some clarification is in order.

To create an autonomous roving robot able to

avoid obstacles while moving
interact with people via voice (SpeakJet chip) and bodily expression (movable arms/torso/head) using preset phrases and poses appropriate to the situation
Track moving objects and aim a laser pointer at object
return to 'base station' after a set period of time (for a charge?)Parts:

1 Lynxmotion Track set (the base with DC gear motors) (www.lynxmotion.com (http://www.lynxmotion.com))
2 Lynxmotion Arms (to match Track base)
Several misc. SES (Servo Erector Set) brackets and U-channels (for torso/spine)
1 Trossen Robotics Head (for 4 Sharp GP12 IR sensors, 1 SRF04 Ultrasonic sensor)
CMP03 Digital Compass
2 Laser Cards, 3 passive IR motion detectors, 2 laser 'bullets', 1 collimating lens from Futurlec www.futurlec.com (http://www.futurlec.com))
3/32 Aluminum Plate (4x10" pieces, cut to fit for stiffening and protection as well as heat sink)
1 SpeakJet by Magnavation (chip only)
Servo extension cables - to run from servo to Oopic board or SSC32 servo controller
2 Oopic R boards from Superdroidrobots (www.superdroidrobots.com (http://www.superdroidrobots.com)) for Upper and Lower 'brains'
1 SSC32 Serial Servo Controller 32 for body servo control
1 Sabretooth DC motor controller to run the DC gearmotors
1 wireless color camera, with sound (www.superdroidrobots.com (http://www.superdroidrobots.com))
Velcro (misc. lengths)
Double-sided sticky tape
2 7.2 volt 3000milliamp R/C type battery packs - lots of runtime!Note: a 'collimating lens' takes a laser beam (dot) and spreads it out to a line, like those 'laser leveling' devices. Very cool when panned side to side.

Both Oopics are programmed in 'Oopic-flavor' Visual Basic. The Oopics come with a 4k EEPROM for program/data storage, the lower Oopic was upgraded to a 256k EEPROM to store phrases for the SpeakJet and also to store pose data for the SSC32.
Several design flaws ("Not flaws, features!") forced some compromises:

to get an accurate compass heading, the bot must be stopped and stand erect (to level the compass)
passive IR motion detectors only work when bot is stationary (any pose)
bot can feel 'top-heavy' if leaning too far forward or back, possibly toppling over. Conversely, bot can reach beyond its base to move lightweight objects out of the way
the 86 byte (each) limit of the Oopics meant I had to employ 2 of them to get all components working. But the separation of 'detecting' and 'movement' functions to separate Oopics also introduced the complexity of getting both Oopics to communicate in a timely manner.Execution
The programming is not complete as of this post. Otto will run in a pre-programmed path and the speed ramps up (and down) nicely, avoiding the jerky zero-to-top-speed by smoothly accelerating/decelerating. He can make nice smooth gradual turns, or spin in place, all at variable speeds. I'm working on the 'lag' between obstacle detection and motion response. The Oopics offer several ways for them to communicate with each other, each method has its pluses and minuses.
The lower Oopic controls the motion functions (Sabretooth via PWM) as well as the SSC32 servo controller. It also provides storage space in the EEPROM for pre-selected phrases (used by the SpeakJet) as well as body position data used by the SSC32. The lower Oopic and Sabretooth and SSC32 are mounted low inside the chassis and covered by a protective 3/32 plate.
The upper Oopic (behind his 'neck') handles the sensors - IR and ultrasonic rangers, compass, passive IR, lasers, and the servos that control head position/attitude.
The batteries are inside the lower deck, mounted outboard right up against the track assembly. Access is provided by removing the front plate. This location really lowers the center of gravity and assists keeping Otto from falling over during movement.

Results (so far)
If Otto runs into your leg at top speed (about an average fast walking pace) it can hurt! He has run most of his tests up on blocks, to avoid having to chase after him. I have tested small blocks of code to debug each feature but I still have to link these subroutines together properly.
The Oopic does provide some unique abilities that can be tough to properly take advantage of, like Virtual Circuits that can run effectively in the background. Also, the ability to code in pseudo-Visual Basic makes it more accessible, especially if you don't program in C very well.
The vid cam provides an "Otto's Eye view" to people, Otto doesn't use it for anything himself. And the object tracking isn't very reliable yet. (Sigh.)

Otto, as a platform, is flexible and expandable. He will never be able to move anything heavier than a pound or so, but he should make up for it with personality! Between the robotic-sounding voice and well-planned body english, he will display a wide range of reactions to stimuli. The storage of pose data on the EEPROM means he can have many physical responses which add alot to the audio message. Picture a dismissive wave of an arm as he looks away, saying 'Beat it, you low-grade analog device!'

With a few small radio chips (Laipic TLP434/RLP434 from www.futurlec.com (http://www.futurlec.com)) Otto can become tele-operated, or simply use a laptop or desktop as a master brain. Then he can take advantage of a PC's massive computing/storage space.
Overall, Otto has been (and is) fun to build and program. There is plenty of room for improvement so he will not become 'last year's project' and collect dust on a shelf. An upgrade to a more capable microcontroller might be in his future.
More pics of Otto are forthcoming, as soon as he gets out of surgery.

10-23-2007, 04:09 PM
Both Oopics are programmed in 'Oopic-flavor' Visual Basic.


Also, the ability to code in pseudo-Visual Basic makes it more accessible, especially if you don't program in C very well.

I never got the opportunity to check out the OOpic, but being a high-level programmer, I've always been interested in checking it out. I thought the only language you could program in it (and I'm going back a couple years) was Java? What is this "pseudo-Visual Basic" all about? Is it actually Visual Basic, or better yet a .NET type OO language? If not, could you elaborate a bit on the language interface to the OOPic?

I checked out the following link:


and looked at some of the objects. Inside each one of the objects there are three boxes with "[...] Syntax" snippet of code. Can you actually use all three of these styles of programming, then compile and download the code to the board? That'd be nice:)

Either way kdwyer, sick project! Thanks for the submission, I got you entered in our contest. I can't wait to see this little guy in action:D

10-24-2007, 07:49 AM
The Oopic ("Object Oriented PIC") uses a 'flavor' of Visual Basic, C, and Java. The real interesting thing is that you can mix n match all of 'em!
Some Subroutines in C, some in Java, some in VB... it all works! The dox say it 'supports' the syntax of each generally, and they don't claim to be 100% compatible. Still, the ability to import subs from each, and use them ALL in the same prg, is way cool. I'm only conversant in VB, and a newbie in Java and C, so being able to liberally cut n paste is a great help.
The Oopic has pretty good support, and an active community. I've found Oopics to be better (for me) for bludgeoning through and getting a bot up n running than some more capable MCs. They advertise as being best for quick prototyping. A more powerful/capable MC may certainly have more 'oomph' but (again, for me) the ability to quickly get results trumps the limitations of an Oopic.
Still, I wish there was a more powerful Oopic. Maybe then I wouldn't need 2 of them to get Otto to obey.

11-06-2007, 06:19 PM
A quick Otto update:
Real life intruded onto Otto's production schedule (I hate when that happens) for the last two weeks. Even so, I did a few minor mods to his torso. The 2 'waist' servos are now one servo, the SSC32 was relocated to an aluminum backplate for ease of wiring and maintenance, and the Sinewinder ('Cylon' LED lights) was mounted better. I got a suggestion to 'plate' him over as much as possible with 1/32 aluminum sheet to make him look more like a '50s robot than a modern high-tech bot, which usually has exposed wiring and gears etc. The local Hobby shop in my area has 4x10 inch aluminum plates/sheets at a reasonable price, so I'm seriously considering this. DO you think the extra work will be worth it? Think lots of angular blocky forms, though not on the arms for obvious hinge clearance reasons. It would provide LOTS of surface area for extra LEDs, of which I have a bunch. And provide some protection for his sensitive innards, too.
One last thing, does anyone know of an affordable mini radar-type dish? I'd really love to have a good-looking one, not fabricated by me (I ain't that good!) Not for any functionality, just for ultra-funkiness. Mounted on a continuous-rotation servo shaft, accompanied by beeps and boops. Sound cool? Or just plain nuts?

11-07-2007, 08:38 AM
I'd really love to have a good-looking one, not fabricated by me (I ain't that good!) Not for any functionality, just for ultra-funkiness. Mounted on a continuous-rotation servo shaft, accompanied by beeps and boops. Sound cool? Or just plain nuts?

That'd be sick:) For sure do it!

11-07-2007, 11:30 AM
Sinewinder ('Cylon' LED lights)

How do you like this thing? I've been 'eyeing' it for a while. I wonder if it would be possible to desolder the surface mount LED's and solder in some leads, so you wouldn't be limited to having them on a flat surface.

One last thing, does anyone know of an affordable mini radar-type dish? I'd really love to have a good-looking one, not fabricated by me (I ain't that good!) Not for any functionality, just for ultra-funkiness. Mounted on a continuous-rotation servo shaft, accompanied by beeps and boops. Sound cool? Or just plain nuts?

I don't have any advice for you except to DO THIS. DO IT NOW.

11-07-2007, 12:07 PM
As for de-soldering the surface-mount LEDs on the Sinewinder, good luck, unless you have fingers so small they only show up on an electron microscope. I have seen a 'chaser light' kit, I think on www.allelectronics.com (http://www.allelectronics.com) that you could more easily adapt for a non-linear surface.
The radar dish... a real fabricating problem. I desperately want to do it, but a bad dish might be worse than no dish. I've checked plastic space models, solar cookers (mini), model railroading supplies etc. but nothing do-able. I'll keep at it, but despair is lurking!

12-06-2007, 02:47 PM
You are very ambitious my friend. It looks really great and probably less complicated than it really is although it does look pretty high tech. You could put my gun on it and really get those nasty humans!

12-06-2007, 03:27 PM
It may well be less complicated than it looks, but it sure is plenty complicated for me! I'm not a professional code writer, and don't have a decently equipped workshop, so it has been a real struggle at times. Nonetheless I've had a blast (pun intended) working on Otto. He has room for expansion/improvement so I know he won't wind up on a shelf as 'last year's project'. But arm him? He can't be trusted around furniture, let alone living things! And with his attitude... I'll play it safe and just keep it to lasers.
Hmmm, maybe lasers weren't such a good idea after all... though it does look cool!

12-06-2007, 03:32 PM
What I wanted to say was that it looked less complicated than it probably is. And yes lazers could blind living things. Sorry English is my second language I am actually Afrikaans.

12-11-2007, 06:10 AM

Very cool project! Would you be kind enough to explain how you did the laser and collimator lens system? Is it purely decorative or does it do something? Where did you get the lens? Can you post a picture of it?

Thanks amigo,


12-11-2007, 08:15 AM
The lasers are from 2 sources: www.sparkfun.com (http://www.sparkfun.com) for the 'card' lasers, and another site (can't recall right now) for the bullet lasers. The bullet lasers have a detachable collimating lens that just slips over the end of the bullet. The 'dot' then fans out to a 'line'. The lens can be rotated to orient the line horizontally, vertically, or anywhere in between.
The lens looks like a small thimble that fits on the end of the 'bullet'.
And no, the lasers don't 'do' anything other than look real cool. Using a laser for distance measurement, or data transfer, or anything else is beyond my abilities. And budget.

I'll find where I got the bullet lasers and lenses and get back to you.

12-11-2007, 09:22 AM
Very nice. ...and thanks for the info. I'm going to have to hunt around for a collimator lens and maybe put the whole deal on a servo so it spins.

Keep up the good work! -Migs