PC vs PIC/Embedded robotics

I don't know how I can start this discussion without people getting pissed, but... It is just a premise, a topic of conversation, you are expected to
disagree on some level and/or agree on some level.
I was thinking about embedded/pic based robotic projects vs PC based, generally speaking, the PC based systems tend to be bigger and more complex than the the others. They also tend to require more power and resources. That being said:
My robot is based on a PC, I like the tools. They are the same tools I use day in and day out. I use Linux, because of this I have full access to virtually every standard available, be it, video, communication, serial, etc.
If have found it easy to try new things, and the hardest part about going from a Velleman K8000 I2C bus based data acquisition card to a Velleman K8055 USB bus card, will be taking apart the robot and drilling the new holes to mount the new board.
I can test my software on my desktop computer, then, copy it to the robot.
I can use a standard debugger to trace the code at the source (and assembly) level.
I can use CVS, on the robot, when quick changes are made there, I can synchronize them with the main system.
I can compile and link software on the robot.
I use standard wireless networking on the robot. There are no wires and it works the same way wether or not it is using wireless or a wire.
Using a camera on the system was as easy as writing this script:
ffserver -f /usr/share/doc/ffmpeg-0.4.8/doc/ffserver.conf & sleep 1 ffmpeg -r 4 -an -vd /dev/video0 http://localhost:8090/feed1.ffm
(This was basically taken from a HOWTO doc)
It has a standard way to disply error messages or make sounds.
Its basically a PC on wheels, with all the benefits that come with that configuration.
I have been able to spend my limited time doing the things that are interesting to me, without getting bogged down in developing on a separate platform. One of the reasons why I have chosen not to use custom or embedded types of systems on my robot is ease of development.
I've done a good amount of embedded development, and I find it tedious. While there are clear advantages to these devices, I find them limiting. When you develop software, there are basically two problems: (1) How do I represent that problem within a Turing context, and (2) how do I implement that model on my system.
With an embedded system like a PIC or small processor, I find you spend more time on the second part of the problem than would be required by a larger computer system. Sure figuring out *how* to run something on a small system may be a rewarding challenge, but it seems that it distracts you from your primary objective.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
I think that every robot should have 1 PC or other CPU/computer, and many PICs. The PIC's should be programmable in system, so you can update your software (PC C, VB, Java, etc and PIC code) and update how your sensors work and how your controlling program interprets the sensor data.
Skip the PICs, use FPGA's, and program your robot to learn new ways to configure the FPGA according to efficiency, function.
Then your robot can optimize itself, and come up with new/better ways to talk to it's sensors.
I am suprised at the state of hobbyist robotics projects. I've got my robot doing some great things, on a very limited computer. It isn't about arguing which way is right or wrong. It is about choosing a way, and being productive with it. I've chosen hardware and software that is OBVIOUSLY outdated, inefficient. I've acheived goals that people with high speed CPU, tons of RAM, C language etc haven't even come close to. I chose the hardware, and I am spending LOTS of time writing the software. 100's of hours prototyping, testing, simulating, etc. You'll never get there if you don't make the decision that your hardware is the way that YOU want to do it, and then programming the heck out of what you've got.
what I've spent time on: autonomous navigation sensor interfaces limited vision
ok now I've got a computer that will move around the house. NOW WHAT?
1)personality 2)a face 3)human interfaces 4)activities with humans
It was fun having an overgrown battery powered cockroach, but now I've spent the time to make it more like a really limited pet dog, or child. It is far from human, but it interacts with humans on *many* levels.
Rich
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
snipped-for-privacy@gmail.com wrote:

That's an interesting idea. I've thought about similar sorts of things, but they mostly involve systems like a DEC StrongARM Shark, Linux based routers, or small network boot systems.

I don't have much time to program, sadly. For me, programming is a "process" I need to be really "in to it" to do it. More often than not, since it is what I do for work, I am focused on my work and can't think about programming per se'

That is the big question, isn't it? What can these robots do?

These all fall into the category of recreation and not so much work. I have been thinking largely of R2D2 lately. What makes R2D2 useful? It may be that it is not a useful paradigm and one which serves only a Movie role, but still, there is something about an R2D2 that "should" be useful.
What R2D2 did, was handle the external mechanics and complexity for the people. He was like a computer swiss army knife or remote control, only one that followed you around.
I think that an R2D2 type robot has a place in a home, but not as a robot exactly, but as a computer or data terminal or entertainment system or pet.
Think of this, an R2D2 sized robot, video screen, speakers, voice recognition, internal map representation of its environment, ability to hold or carry objects, ability to navigate its environment, ability to perform as a computer.
Imagine this robot, it is a TV, computer, music system, alarm clock, note pad, can record messages, can use a video camera and motion detection algorithm at night for security, it could have a small vacuum cleaner underneath to keep the more traveled areas clean, respond to calls from other rooms to come. Can wake the kids in their rooms at the right time.
This should all be doable now. Sure, we have a lot of different things to do all of these chores, but a single robot could do them as well. Imagine your living room, no entertainment system, just your trusty robot. It uses a projector for a large screen TV. No computer as well, your robot is your computer.
I'm sure you can follow the paradigm, and I think it could be a cool project/product if your could get the price at or below $2500.

Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
snipped-for-privacy@gmail.com wrote:

Why?
I ask this of both the PC and the PICs.
I agree that a heirarchical system is probably the best for the types of robots *I* want to build, but I wouldn't force it on anybody else.
I've seen (and built) robots with a single PIC that can appear to do intelligent things.

Yes. I would like to eventually use FPGAs in my system. -- D. Jay Newman http://enerd.ws/robots /
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
mlw wrote:

I understand what you have said. I, too, have a linux pc robot and like it for a lot of the same reasons that you have given. In fact, I also use Java to program it as I feel I get a lot more development mileage (in my case) when I use Java (see my linux/java and general robot resource site at http://www.modoro.com ). However, I feel that there is still a need for embedded microcontrollers on my bot. That is, I have clusters of sensors monitored by java microcontrollers (sensor pods, e.g. sonar and IR sensor attached to a microcontroller to give accurate distance measurements) that talk back to the main pc via RS-485 vi MojoBus protocol. I feel this gives me a lot of flexability and off-loads the pc in some ways.
The code and development environment for the java microcontrollers can be on the robot. Here's an example. The Parallax Javelin java microcontroller takes java code fed to it via a built in RS-232 port. You can see how using an IDE running on the robot pc, you can develop the java code on the robot, feed the java code to the java microprocessor directly from the robot pc, and store the code under CVS on the robot itself. Debugging the java microcontroller isn't as elegant as you may wish. I do have to use System.out.println(). But it works.
BTW, I use the concept of sensor pods as I think it takes a load off the processor. I can have 30 bumper switches hooked up to a single java microcontroller for example and just have the pc ask the microcontroller if a bumper switch has been activated instead of attaching each on to the pc directly through i2c or spi. It's not that I couldn't do it, it is just easier at a code higher level (at least for me). I hope I have made myself clear here.
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.