Robots that play with people and pets

I'm working on a design for a something to impress and entertain my niece Caroline, who has recently gotten involved with robots.
Caroline is eleven; my impression is that she hasn't done any ground-up robot construction, but she does seem to have enjoyed a Lego-based program at her school.
So... I have an old Radio Shack "Street Quake" R/C truck I've dug out of my collection of thrift-store $2 specials, and I'm wondering how I can come up with "something" that is:
- Interesting and/or amusing to an eleven-year-old, - Autonomous, and - Cheap. <grin!>
My first thought was a simple "wandering truck" that would occasionally go to sleep, then wake up, and wander some more. Its main goals would be to (a) move randomly so it looked like it was exploring and (b) not run into too many walls.
Then I discovered Bert Van Dam's 'web site and read his article on "Tom", a Subsumption-based robot that "chased" things, and things started falling into place. Here's what I hope I'll be able to make this truck do:
1) Wander about exploring and not cause too much damage. <grin> 2) Find a dark place and hide ("sleep") for a while. 3) Chase moving objects (based on distance) 4) "Play" with humans (and possibly dogs and cats) by moving toward them, following if they move away, and running away if they come close.
("Tom" has a rather full array of sensors, but I'm hoping I can get similar results with fewer, and a smaller investment.)
Well, after several days exploring odd places on the 'web, I haven't been able to come up with a simple, clear, and inexpensive way to tell if my robot is facing a warm-blooded creature. I've looked at E-fields, radiometers, thermopiles, pyrometers, and all sorts of noncontact temperature measuring devices with prices from $40 to $500 (I even looked into a gadget called a capaciflector); the best I've been able to come up with is sticking a pair of Fresnel-domed PIR motion detectors on the front of the truck. (Panasonic/ Matsushita's 'MP' series have some really nice features, but they're in the $30-$45 range).
I could do worse: somewhere in my collection is my father's Garden Frog which croaks when it "detects people", apparently by rapid changes in the intensity of light falling on it (think "CdS photoresistor"), but even that involves detecting motion. I'm curious as to whether anyone can suggest another approach. Detecting the presence of humans (e.g. "occupancy") seems to still be an Interesting Problem; I've seen USENET newsgroup discussions on the topic as far back as 1997.
The PIR approach has some problems. First, because it detects changes in temperature, it can't detect a nonmoving human. Second, it's not much help in determining range, and third, even when motion is present I'm not sure I can tell which direction the human is moving. How about a $10 noncontact ranging IR thermometer? "There's a 98.6 degF object 2.64 meters away" would be really nice, since I could use the range measurement to "chase" or "avoid".
Since I'm still at the GedankenRobot stage (the point where many of my best creations seem to get stuck) it's not hard to change my design. Any suggestions will be welcomed.
* * *
A note on the R/C truck. I wan't thrilled with having to cobble up an L293D/PWM arrangement, but it looks like I can re-use the trucks existing -- and designed exactly for the motors and batteries -- drive electronics. This is one of many _many_ R/C and IR/C vehicles built around the Realtek TX2/RX2 and TX2C/RX2C chipsets, and it _looks_ like all I'll have to do is desolder the chip and solder in a 16-pin header for a cable.
Tracing a PC board to build some idea of its circuit is a long, tedious project (I've done it a few times, but it's never fun); it's simpler to throw the whole assembly away and start again. Even worse, you have to do it again for the next R/C vehicle. On the other hand, patching into the circuit through _known_ points (the RX2 pins) is not only straightforward but it's a _reusable_ technique. In fact, if I had the companion TX2 board, I could control the truck from _it_ and connect it to the RX2 board with a two-wire cable.
Will an AVR output pin properly drive the transistors controlling the L/R steering motor and the drive motor? Guess I'll find out, but even the _thought_ of accomplishing that kind of re-use warms my auld Scots heart. <grin!>
* * *
If anyone's curious, here are a few pointers to some of the items I've mentioned:
Bert Van Dam's 'web site http://members.home.nl/b.vandam /
Connell 1987: Tom (Description of "chase" behavior) http://members.home.nl/b.vandam/lonely/pagina37.html
Realtek RX2/TX2 and RX2C/TX2C datasheets http://www.datasheetarchive.com / http://www.mobicon.com /
PIR Sensors/Modules/Detectors (search on PIR, Fresnel, RE200B) http://www.hvwtech.com/ SKU#35050 $10.95 http://www.allelectronics.com/ CAT#IRD-10 $3.95 http://www.electronics123.com/ BB054 $8.95 http://store.qkits.com/ QK76 $12.95
Discussion thread on finding Fresnel lenses http://www.jesseshunting.com/forums/index.php ? s@9bf6d58c94f4f6fc69200d19b42dde&showtopicP48
Enjoy...
Frank McKenney, McKenney Associates Richmond, Virginia / (804) 320-4887 Munged E-mail: frank uscore mckenney ayut minds pring dawt cahm (y'all) -- Copper wire was invented when two Scotsmen found the same penny. --
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Frnak McKenney wrote:

Hi Frank. Just a couple of comments to boil down your post. van Dam has a lot of interesting stuff on his site. You should be able to cook up an interesting bot using subsumption techniques, possibly coupled with an "overseer" device that can select between different behavioral schemes for different situations.
Joe Jones' books "Mobile Robots" and also "Robot Programming" are very good practical introductions to subsumption techniques. Added to this, Joseph Jones & Ben Wirz discuss their RoCK robot, which had a number of different behaviors coded using subsumption techniques, and which they could select between using a manual pushbutton. One behavioral repertoire coded in were little song'n'dance routines. Kids love this.
http://www.circuitcellar.com/magazine/142toc.htm
I haven't experimented much with PIR devices, but it seems you could use them to produce an interesting robot which would either approach or run away from humans, or animals, in different circumstances. Having such "ambivalent" responses might have some appeal to teenagers. You might also check Braitenberg's classic book "Vehicles" regards coding different forms of robot behavior for different situations.
More to practicalities, R/C cars generally do not make the best robot platforms, since they are made for speed, while most robots tend to lumber around at much slower rates. In general, the sorts of small computers used in small robots to do have enough processing power to deal with high speeds. R/C cars generally will not run well at slower speeds, since the gear trains are not geared properly for this. You won't get enough torque at the low end.
Also, the L293D h-bridges only handle 600-mA max, and most R/C car motors will draw much more than this. It's probably easiest to try and tap into the h-bridges already present in the car.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

Was supposed to say "... do not have enough ..."
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Dan,
Thanks for taking the time to reply.
On 5 Jan 2007 11:19:00 -0800 and On 5 Jan 2007 11:14:39 -0800, dan michaels

van Dam's description of his "Tom" robot was what really started pulling things together for me. The Subsumption approach seems to have worked well for van Dam, and I may well adopt it or something like it, but before I start coding I need to work out a clear and reasonably specific statement of how Caroline's toy will behave when she turns it on. I may change it later, but at least I won't be "evolving" code as I write. <grin!>

Thanks for the reminder. I dug out my copy and I've flagged a couple of points to re-read when things calm down around here.

Thank you for the pointer. My Journal Storage and Retrieval system (see also: Stacks'o'Magasines <grin!>) turned up issues #141, 142, and 144, but it appears that I pulled #143 out some time back (for a ReallyGoodReason(tm), I'm certain) and never got around to replacing it.
The "Waltz" behavior sounded interesting, but there's little description beyond "plays songs and moves in a pattern". Still, it's worth thinking about.

One of my goals is to have the robot respond to humans and pets, and be able to distinguish them from (say) radiators and fireplaces (especially the latter! <grin>). PIR detectors, as I mentioned in my original post, are the best thing I've found, but I'm hoping someone out there has a better approach. If not (and several past Usenet exchanges on the topic were inconclusive), I'll use them and hope that I can be "good enough" to amuse Caroline.

But... R/C cars, carefully acquired ("You're not throwing _that_ away, are you??!!") are much cheaper than the cost of most motors, battery packs, and motor controllers.

Yup. And as I mentioned, knowing the details of the TX2/RX2 IC family should let me do this without spending hours following PC board traces and trying to get part numbers off components.
Wish me luck. I'm hoping that creating this for Someone Else will be incentive enough to ensure that it at least makes it past the GedankenRobot stage; I have way too many bits and pieces of "virtual robots" that never saw a soldering iron lying around here. <grin?>
And if any one out there has any suggestions for a cheap and reliable People Sensor, please feel free to comment.
Thanks again, Dan.
Frank McKenney, McKenney Associates Richmond, Virginia / (804) 320-4887 Munged E-mail: frank uscore mckenney ayut minds pring dawt cahm (y'all) -- "Provide me with ships or proper sails for the celestial atmosphere and there will be men there, too, who do not fear the appalling distance" -- Johannes Kepler --
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

For what you are trying to do, I would strongly suggest that evolving your code as you write it is the only way to go. Your goal is to make the robot interesting, and there's just no way possible for you to precisely define "interesting" before you start coding. You can't even do a good job of. No one can really.
Doing this type of evolutionary design work is not bad practice - it's the only way to solve problems that haven't already been solved by someone else. If there were books written on how to design and build interesting interactive robot toys, then sure, get the book and read it before you start (as you are doing). But in the end, hopefully, you will add some features to your robot that no one has added to any other robot (or never wrote a book or paper about) - and you come across these ideas by evolutionary exploring of the design space. Build, play, think, build play think, continue as long as possible.

Sensory data processing is one of the areas that most robots are extremely weak in. It's a very hard problem that no one has yet come up with a simple general answer to. If the sensor doesn't tell you want you want to know directly, most robots simply don't "know it". In general, it's a complex problem of statistical analysis that simply doesn't get built into most hobby robots. It's what keeps complex sensors like video cameras from being used more on small robots.
I assume you are talking about some type of heat sensor (IR?). It seems to me that might get confused with various heat sources as you suggest. But, it might turn out that the confusion makes it all that more interesting as the robot tries to play with the fireplace, or a heat vent. ("oh look, he likes the fire!"). And this is where the evolutionary design approach really works. Instead of worrying about how it might get "confused" just write some code taking your best guess as to what might produce interesting behavior and see what behaviors emerge. If one of the behaviors is to drive itself into a hot fireplace, then evolve the code to make it stop that. :) You could make it be attracted to a low heat source but run away from a high heat source for example - which could cause it to move towards and then away from the fire place until something more interesting grabs its attention.
I suggest that subsumption/reaction based approaches are most likely to produce the most life-like and in turn, the most interesting behaviors. And when interesting and entertaining is what you are shooting for instead something precise like "vacuum the entire floor without missing any spot", then you don't have to worry about the complex interaction of the different behaviors - the more they interact in unpredictable ways the more interesting it is likely to be. Robots that are predictable quickly become uninteresting.
--
Curt Welch http://CurtWelch.Com /
snipped-for-privacy@kcwc.com http://NewsReader.Com /
  Click to see the full signature.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Curt Welch wrote:

Frank,
One thing you may want to consider is the low cost PIR sensors they sell (in Wal mart) for under $15. I forget the brand name, but I had disassembled a few of them a couple of years ago to build trailcameras, in order to photograph wildlife as it passed by the camera box. I found the plans, with schematics and details on jesseshuntingpage.com
I am not sure if the page is still there, but it's worth a try. I know of no other way to detect a moving warm body then this. Unless you buy the sensors (the wavelength that we give off is 10 microns, by the way), alone, and then buy a lens (fresnel of some type ) to detect just the 10 u radiation. I think they are called pyrosensors. Google is your friend there.
Anyway, hope this helps.
Joe
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Joe,
Thank you for responding.

--snip--
You can find a sensor (the RE200B), the lens, and complete modules for even less (URL snipped from my original post):
+> PIR Sensors/Modules/Detectors (search on PIR, Fresnel, RE200B) +> http://www.hvwtech.com/ SKU#35050 $10.95 +> http://www.allelectronics.com/ CAT#IRD-10 $3.95 +> http://www.electronics123.com/ BB054 $8.95 +> http://store.qkits.com/ QK76 $12.95
I _think_ I have some of the BB054-style bubble-modules... er, "in a box somewhere", but if I can't find them that's what I'll probably try first. I need to work with them a bit to get a sense of how their output signal is affected my various stiluli so I can decide whether or not if they're what I'm looking for (or more likely, "the best I can do" <grin!>).
Looks like it's time to grab one of those nice Rubbermaid storage boxes and make a "grand sweep" of all my various Parts Repositories (scattered across three rooms and half a basement) to collect "stuff that might be useful".

Was this the thread (another URL snipped from my original post)? Or was there more stuff there that I missed?
+> Discussion thread on finding Fresnel lenses +> http://www.jesseshunting.com/forums/index.php?
I did run into a lot of other sensors when I was looking for non-contact temperature measurement devices, but the prices were a bit steep for my purposes (e.g. the Panasonic / Matsushita units I mentioned).

I do appreciate your contribution (and Dan's and Curt's). Given Earthlink's recent News Server problems (down fo a full week last month) it's also reassuring to know that my posts are getting out. <grin>
The "people sensor" question seems to recur periodically; Gordon McComb contributed to a round of it back in 2000. It seemed likely that if someone had found a really good approach I would have run into at least a reference to it in my 'web searches; on the other hand, it was a question worth asking.
Ah, well. Time to go do some RealWork(tm) so I can spend some time on "fun" stuff like this robot-to-be.
Thanks again.
Frank McKenney, McKenney Associates Richmond, Virginia / (804) 320-4887 Munged E-mail: frank uscore mckenney ayut minds pring dawt cahm (y'all) -- You are not thinking. You are merely being logical. -- Neils Bohr to Albert Einstein --
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Frnak McKenney wrote:

You might also be interested in taking a look at what Rod Brooks did on one of his first robots, Genghis.
http://www.ai.mit.edu/projects/genghis/genghis.html
Subsumption based, and all of those round things on its nose are PIR sensors.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Dan,
Thanks for the pointer.

Very impressive animations, and fortunately small enough that mplayer on a 450MHz P-II can handle them.

Really? They looked like ultrasonic transducers, but the PDF file listed with the MOV animations doesn't say much at all about sensors of any kind.
Anyway, it looks like somethign that would be fun to build... once I get a DOD-funded research grant to pay for all those servos. <grin!>
Frank McKenney, McKenney Associates Richmond, Virginia / (804) 320-4887 Munged E-mail: frank uscore mckenney ayut minds pring dawt cahm (y'all) -- The joy of research must be found in doing, for every other harvest is uncertain. -- Theobald Smith --
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Frnak McKenney wrote:

http://www.google.com/custom?&q=brooks+genghis+pyroelectric
try Hitec HS-322HD at $10/ea from several vendors.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

--snip--
IOW, "Sorry it wasn't in the PDF file. I don't have the specifics at hand, but you can probably find something via Google." <grin!>
The search turned out really well, especially the part about using "pyroelectric" rather than "PIR". It even turned up the following, which pointed out that (a) one could use a motion detector to detect still, warm objects (or is that "still warm" objects? <grin>), and (b) why EEs don't waste time playing with water balloons:
Hoser: A Squirting Mobile Robot http://www.cs.cmu.edu/~chuck/hoserpg/hoser.shtml http://www.cs.cmu.edu/~chuck/hoserpg/hospapr.html
"Two pyroelectric sensors were also mounted on the robot to detect body heat. One was mounted, forward looking, at the end of the arm. The other was mounted on top of a Futaba servo on the toy's "head" to scan back and forth looking for people."

So the trick is to get a DOD contract to supply these exact units to, say, the Army, for $817 each. "Kinky... I like it".
In the mean time, I'll see how hard it would be to pair a PIR with a Sharp IR Ranging unit and use a servo I have left over from a prior project to "sweep" the two back and forth inside the truck cab.
All I need is a "Cylon" sound to go with it. <grin!>
(And a redesigned bumper. And a couple more IR obstacle detectors. And a voice-input command system. Oh! How about TV remote IR driving capability... this is how I wind up with a basement full of GedankenRobot parts. <grin?>)
Anyway, thanks again.
Frank -- "A ship in harbor is safe, but that is not what ships are built for." -- John A. Shedd --
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Curt,
Thanks for joining in.

Agreed. I can't precisely define it. On the other hand, I think I need to have some kind of general idea of what I want to happen. I may well (as you point out) wind up going back and tweaking my specifications based on what I learn is possible.

Agreed. Fortunately, as van Dam's 'web site
http://members.home.nl/b.vandam /
and Joseph Jones' (and others') books demonstrate, I don't have to choose between starting _completely_ from scratch and waiting for SomeoneElse(tm) to come up with a solution. There is a great deal of material to build on.

"Never give in. Never surrender!"
(Winston Churchill? Tim Allen? Someone along those lines <grin!>)

The use of sensors is an incredibly wide-ranging topic. One of the "Holy Grails" of A.I. research has always been a Magic Box that would take a bunch of sensor inputs and Somehow Deliver The Right Answers: from Arbib and Papert to Neural Nets to The Kalman Filter to Subsumption.
Fortunately, I don't have to creat a GUTER (Grand Unified Theory of Everything Robotic) to build what I have in mind (That can probably wait 'til _next_ week. <grin>)
But it can be very difficult to "think like your robot". Even if you imagine yourself inside a sound-, vibration-, and light-proof box with a panel full of LEDs, dials, and switches, you also have to think at a "ground level" of perhaps 3" (where the world looks very different) and accept that you may never "know" just how many scars you've left on the wall or how many cats have gone scurrying out of your way. In fact, you won't even realize that you're lying upside down with your wheels spinning because you didn't detect the top of a stairway...
I complain about my poor eyesight, but things could be a _lot_ worse. <grin!>

Could be. And, as you point out, I'll have to wire it up, program it, and see what happens (and then pick out th parts I like and keep them).

Hm. I don't think you intended that statement _quite_ as literally as I "heard" it; there's Chaos near one end of a spectrum, and Crystal-lattice Rigidity near the other. My experience has been that most of the things I find interesting are located near boundaries, or, in this case, something like "unpredictable interactions between predictable components".

Yup.
Thanks for the comments.
Frank McKenney, McKenney Associates Richmond, Virginia / (804) 320-4887 Munged E-mail: frank uscore mckenney ayut minds pring dawt cahm (y'all) -- "A good traveller has no fixed plans and is not intent on arriving." -- Lao Tzu (570-490 BC)
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

Yeah, I was even thinking that as I wrote it. Pure chaotic random movement would not be very interesting either.

For sure. Finding the right balance between predictable and unpredictable is where we seem to find things the most interesting. I believe I even remember reading a comment by a composer saying the same thing about music.
--
Curt Welch http://CurtWelch.Com /
snipped-for-privacy@kcwc.com http://NewsReader.Com /
  Click to see the full signature.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
snipped-for-privacy@kcwc.com (Curt Welch) wrote:

It's a general principle of psychology. In a nutshell, learning is fun, and most fun relates to learning in some way. Something that's completely predictable is no fun because you have nothing more to learn from it. Something that's completely random is no fun because there is nothing you CAN learn from it (though it may be fun at first until you realize this is the case). Fun things are those which you can continuously learn from.
Best, - Joe
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

Um... reminds me of Dave Gorfein's Behavioral Psychology classes. Let me think a minute.
While it's true that my robots work occasionally, it's also true that I learn much more when they don't work. Can I conclude, therefore, that my robots are _learning_ to malfunction in order to get more of my time and attention?
Aaaaauuugh! It's A Conspiracy! (but it does explain a _lot_!)
Frank McKenney, McKenney Associates Richmond, Virginia / (804) 320-4887 Munged E-mail: frank uscore mckenney ayut minds pring dawt cahm (y'all) -- "Bother!" said Pooh, as the warp core went critical. --
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

Heh. One of the first sensors I want to put on my bots (when I get that far -- which should be pretty soon!) is some sort of tilt sensor. A tip switch (or several such) could do in a pinch. Nothing makes a robot look all kinds of stupid more than spinning its wheels upside down.
The next thing I want on my bots is a way to tell when the wheels or feet aren't touching the ground at all. With feet this is pretty easy (just stick a force sensor or two to the sole). With a wheeled bot it's harder, unless you also have a suspension like the Roombas. But I feel it's important, because a bot continuing to spin its wheels when you pick it up looks only slightly less stupid than the one doing it upside-down.
Of course our robots are going to actually BE stupid... but they shouldn't APPEAR that way to a casual observer. (A lesson I learned from computer-game AI programming!)
Best, - Joe
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

I don't think that would ever bother one of my designs; none of them has ever had a Feel_Embarassed() behaavior. <grin!>
Seriously, you might check out the Sharp GP1S36 Tilt Sensor; it's a $2 unit with a metal ball and two optical interruptors.

If you were monitoring motion with (say) a hacked optical mouse mounted in the underside of your robot it might be possible to detect being picked up. Or, if you have a ring of "cliff detectors", you can make a special case to handle all of them going off at the same time.

Yes, but the nice thing is that it takes so _little_ to convince a human being that you're behaving intelligently. <grin!>
Frank McKenney, McKenney Associates Richmond, Virginia / (804) 320-4887 Munged E-mail: frank uscore mckenney ayut minds pring dawt cahm (y'all) -- Writers listen for harmonies; civilians listen for melody alone. For them the facades of ordinary situations are opaque, and they see what is there to be seen. Writers are attracted to translucence. We start with nothing but an idea, an agitation, a compulsion, an irritation. That, plus a bumblebee's faith that it can fly. -- Hal Ackerman / Write Screenplays That Sell --
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On Fri, 05 Jan 2007 01:47:17 +0000, Frnak McKenney wrote:

If she's eleven, and not retarded, a toy car that chases her around the room will get really really boring Real Soon. :-)
What you do, is let her program whatever she wants into it; and get her today's equivalent of an Erector Set, and let her make her own accessories and stuff.
Good Luck! RIch
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Rich Grise wrote:

Frank,
Try this site for PIR sensor info:
http://www.web-ee.com/Schematics/PIR/pir.htm
Joe
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

--snip--
Joe,
Thanks for the pointer. The PDF file has a schematic, plus a description of how the PIR sensor and lens work.
In other good news, my missing three PIR modules turned up in a box in my basement (turns out that they're KitsRUs #76 units). Next step is to pull out my 'scope. hook one up, and see how it reacts to hand-waving in various directions.
And then... Major Surgery on the truck!
Frank McKenney, McKenney Associates Richmond, Virginia / (804) 320-4887 Munged E-mail: frank uscore mckenney ayut minds pring dawt cahm (y'all) -- One of the demanding things about social life is that it fights back. While you figure out how to move from tree to tree, the tree just sits there, and while you figure out how to crack a nut, the nut waits patiently. But while you are figuring out how to deal with another monkey, it is figuring out how to deal with you, or a third monkey steps in to make the deal. -- Susan McCarthy / Becoming a Tiger --
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

Polytechforum.com is a website by engineers for engineers. It is not affiliated with any of manufacturers or vendors discussed here. All logos and trade names are the property of their respective owners.