Balance between theory and practice

We've had a few discussions on this group that, IMHO, show a need for both the need for theory as well as good practical hands on experience.
Many things that a purely theoretical appraoch might disregard as impractical or unworkble are neither. Many things that are obviously unworkable or impractical would never have been tried had the doer been a little more experience.
I think the space between the two is commonly called "engineering." There is a tendency on this group to ignore this middleground. The half-assed projects are pure fun, no hope of working, but probably a fun way to spend a saturday afternoon -- if your lucky with some spectacular pyrotechnics. The theoretical models strive for a precision that is virtually unattainable in this field. (I remember a debate about a 100th of a second and how, in the end, IMHO rediculous one hundredth of a second is when applied to something that is, at best, 1/20th of a second varibility.)
The phrase "good enough" is tossed around like a label of poor quality. In reality, almost everything we use and depend on, day in and day out, works on the basis of "good enough" and low (not no) probability of error. The trick is to mitigate the error when it happens, and insure that errors are very infrequent -- if ever happen at all.
Neither I nor my $500 robot project, is striving for a "just good enough." I am saying that with proper engineering, a home built $500 robot, built mostly from commonly available parts, is a very workable solution. One which will rival almost anything one could buy outright of a similar approach.
As for the $500, it is a round ballpark figure. Assuming that the average robot builder will have a cache of stuff that can be used. The real cost may be a bit higher if one were to itemize and price out the components, and a bit lower if they have something like a Fry's near by or a good collection of junk.
Regardless of whether or not you will build my $500 robot, it is my hope that some of my work on my project is useful to people working on thiers. I am making an effort to present real-world workable approaches to common problems a robot builder will encounter.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

I assume here you are talking about your software approach to a PID system.

Still talking about the PID system.

Apart from a "you beaut" PID system it is unclear exactly what your robot can actually do to make it worth building?
Your robot did inspire me to build a light weight robot base using the 6volt motor/gears gutted from two ride on toys. Except I'm building a cool looking shell, a similar shape to the PatrolBot from Mobile robots mentioned in another thread, except the sensors are going to be built into the bumpers and the head simply has a handle to pick the base up with.
It is slow progress as most of my spare time is trying to get up to speed with Java as I see that as the most available language at the moment which has a lot of software support in Robotics.
The PatrolBot relies mainly on a laser range-finder to build floor plans, navigate, avoid obstacles and monitor movement.
You haven't mentioned how your robot is going to do the above?
JC
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
JGCASEY wrote:

Not really. I have a good amount of experience developing systems with varable and unpredictable regularity. Animation and sprites, computer based wave form generators, and high speed data acquisition all have hard timely demands of the system.

In a way, maybe, the PID system is between the "haphazard trial and error" and the "purely theoretical." Don't get me wrong, sometimes I like the "haphazard tril and error," method. It can be fun and you can learn, or be forced to learn, new things first hand.
I also like the "purely theoretical," but not in the abstract. The theory is a great way to understand what you want to do.

It is a project in progres, it will take time as more and more systems come on line. Buying stuff from the store is easy. Examining he requirements and using what's commonly available take a bit more time.

One of the things with the $500 robot, is that it isn't a fixed blue print. It is a collection of pieces that will be flexable an applicable to other approaches.

In another branch on this thread, someone was giving me a hard time about using too many floating point operations and the affect that will have on power utilization. Using that argument, Java?
I'm not very interested in Java. I have done a lot of work in it and it strikes me that it is the Pascal of our time. Pascal and Java are languages that abstract the computer system too much.
I'm an old school computer science guy. To me, computer science is about computers. Today it seams, computer science is being approached as theoretical programing models on theoretical computers.

Sounds cool.

I actually have been thinking about how to do it. I have been toying with the idea of using the wireless ethernet link and the two antennas for triangulation. Not sure.
First step is an integrated bumber, emergency stop, and deadman system.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
mlw wrote:

[...]
For a software PID system on a multitasking OS maybe not.
In fact the interpreter QBASIC is faster on a Pentium PC than Assembler was on the 7MHz Amiga computer. It is all relative to what you are doing and your skill level.
As you pointed out in another thread, the language others use is unimportant for if they want to use your software they can call it as an API (if they know how in the language they use).

In fact I don't like Java because it is not really designed for what I would like to use it for. But others who have the programming skills have written Java code to allow people like me access the hardware with a much lower learning curve. It is a time thing. It works on Linux and Windows. And there are lots of examples and support. I need the support you don't.

This is I believe a natural progression. Just as in biology you have the low level systems right up to the high abstraction of the human Mind.
I always liked low level assembler interfacing because with the old DOS and PC hardware it was easy to understand. This has all changed.

And a laser range-finder sounds expensive?

Essential items. Of course you hope your other sensors will prevent them ever being used :)
JC
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

Actually, you could integrate it into your vision system. (if youll have one) and it wont cost any more than a pocket laser pointer!
Use a webcam for your vision system...a good one 50-100 dollars.
Get yourself a green laser pointer (you can use red, but green not only looks cooler, it's more intense and the beam is usually more coherent for a given amount of power).
Mount the laser point underneath (or above) the webcam perfectly in line with the webcam so that the centerline of the lense is on the same plane and parallel with the laser.
Angle the laser upwards (or downwards if mounted above) so that the minimum distance you want to be able to measure just makes it into the field of view of the webcam. I.E.- if you want to start measuring at a minimum distance of 4 feet, place the apparatus 4 feet away from a flat wall, and adjust the laser so it's barely into the FOV of the webcam.
Then in your software, take a picture and scan it for the brightest pixel in the color your looking for (or the brightest pixel period, green lasers are WAYYY bright and often swamp the detector unless it's very well filtered).
The higher up the pixel is on the picture, the farther away the object is. You could even get fancy and use the shape and intensity of the resultant beam reflection to determine alot of information about the object it's reflecting off of.
I've done this with a logitech webcam (I've got a logitech 3000 pro I think, but anything "should" work) using the logitech SDK which is free to download, and has samples for C and VB. I used VB cause basic is the only language I REALLY know (ok, commence the picking on of me! :-) ).
I wish I could claim this idea for my own but I believe it was developed by a student at MIT or carnegie melon. I found it on the web, dont remember where, and my bookmarks for it are long gone (mozilla has a tendancy to eat my goddamned bookmarks). A google search should turn up good info.
I used it to augment my sonar, and used it sparingly due to the power consumption of the laser and the danger of a super bright green laser whipping around and possibly hitting people in the eye (bad juju). The chip in my webcam is particularly sensitive to IR, so an IR laser would have been cool and a hell of alot more eye safe, but man are they $$$.
You could even externally adjust the position of the laser with steppers o servos to give a good scan, and come up with a 3d model in the 'bots "brain" of what's going on around it to a very fine extent. Alot more difficult for sure, but still possible.
Anywhoo, just an idea (since you'll have a vision system anyways!)
---Andy P
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Andy P wrote:

How about an infra-red laser diode? Most webcams see near-infra-red very well.

Kind of a cool idea.

VB -- yuck! you asked for it.

I'll be looking into one.

This is such a great idea, I am think of making a scanning video system on my robot.
Hmmm....the ideas, very cool. I love an idea so simple it is genius.

Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Andy P wrote:

Hey, just thinking about this ....
What about using a prism or such device to spread the laser across a horizontal line. One image read from the webcam, can give you a field of view.
What do you think?
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
mlw wrote:

I thought of this as well, but there could be a number of problems with reflections. If you have jsut a point source, it's not that difficult to pick out which pixel is the one your looking for, even if there are multiple reflections, because you know, generally, where the laser is pointed. If you had a wide continuous beam, youll get alot of reflected shapes, not just points, and the software to find your "line" would have to be alot more complex and intensive.
I suppose a way around it would be to move the entire line up and down a step, and just look at what changes in a predicted manner. If your getting odd and various reflected shapes, they should change if you move the laser up or down. The only thing that would remain the same (theoretically) is your primary beam. But then you have to deal with pattern recognition across the pixels and it suddenly becomes a not so simple endeavor.
An idea better than a wide beam would be to set the webcam to a very high frame rate. This will make the contrast horrible for the bulk of the picture, but the laser is a very bright and intense source of light and it's entirely possible it would be the only thing left in the frame visible to the camera. Then scan the laser back and forth. This way your only looking for 2 colors, black and laser (because the rest of the picture will be very dark). It will process alot faster this way. The rest of the picture may not be all black, but if you look for the contrast instead of the color, it may work. I havn't tried this, but dont see it as an impossible task.
--Andy P
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
mlw wrote:

This is old stuff. I used the red laser from a cheap laser level which came with dot _and_ line laser output to experiment with using a webcam and the same logitech SDK mentioned by AndyP.
So if you go down to your local hardware store you might find they already have a cheap laser and lens to spread it a across a horizontal line.
Ordinary white light can also be used if focused with a lens system.
JC
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

Hey JC,
How about a link to a picture of your bot?
Joe
--
Mini ITX and other computer goodies:
www.brokenacres.rite2u.com
  Click to see the full signature.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
joecoin wrote:

When I think it has reached a stage that would *interest* others I will.
In the case of a robot a picture does not paint a thousand words. Anyone can plonk some actuators, sensors, microcontroller (or pc) on a mobile base and call it a robot. It is what the machine can actually do that is interesting.
John
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
I am interested! The bits of information I've read here and in your emails make your project very interesting.
Rich
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
JGCASEY wrote:

I'm interested.
Seeing what other people do gives us new insight. I love to look at other robots, especally in early stages. As a progression, you can see the things that worked and were refined and those that didn't work at all.
My robot, for instance, is probably going to go for a big rebuild. The wheels are probably going to be replaced with a wheel with a rubberized tread. I am probably going to go with a more round body, as the bumper system is more easliy built round.
So, JC, lets get a look a that puppy.

Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
mlw wrote:

I have no site or interest in putting up a site to display some half built boring old robot base.
However I will take some pictures next Sunday and send them to you privately if you like?
It may interest you as the small base uses a smaller version of the motor/gears/wheels you used. They came with a rubberized strip around the plastic wheels for grip.
JC
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.