by inaki » Mon Mar 07, 2005 1:59 pm
by inaki
Mon Mar 07, 2005 1:59 pm
Gumstix uses a general purpose processor, the XScale by Intel. That one is an ARM compatible CPU, one of the so called 'System on Chip' processors, because the processor integrates a lot of peripherals. The good side of such a processor is that is is powerful enough to make a complete system. The bad side is that you must use a full fledged operating system to run it. That is to say, you cannot pretend to start this processor and start doing input/output to a digital pin for example, like you would do on a microcontroller. The Gumstix comes with a version of Linux. So it means everything you do must been done through this operating system. There are other operating system available in case you don't like Linux but then you should count on adapting the operating system to the Gumstix board which may be not a trivial task. This may be good or bad news for you, depending on your preferences and your ultimate goal.
For my taste sys on chips are somewhat overkill for domestic robots. Sys on chip processors may be interesting if you pretend to have a real computer on board rather than a controller board that is most suitable for microcontrollers.
Basic Stamps work very well as peripheral controllers. The problem with Basic Stamps is how to do many things at the same time. They are good for one or two tasks but no more. However you can add several Basic Stamps together to perform complex tasks. The best of BS is that are simple to program and have many peripherals already made for it.
For general purpose control I prefer PICs or AVRs. There are many microcontrollers out there, some of them very powerful, but having a common controller like a PIC or an AVR gives you more comfort when you have to do the real development: programing tools, libraries, thousand of available projects already made, documentation, ...
PICs and AVR are inexpensive for the power they give and you can use several on the same board.
For servos control the best choice is a separate controller that can be controller serially instead of relying on the processor direct control. A typical robot has 12 or more servos which is too much for some microcontrollers. Also note that microcontrollers share lines so if you reserve many pins for one task you lose lines for other tasks. There are dozens of them that you can adapt to your board of choice. For initial programming it is best to have a serial servo controller that you can plug to your PC.
There are GPS modules available for robots but the problem with these is accuracy. A GPS system does not give more than one meter accuracy in the best case which is of doubtful interest in a robot (not counting they do not work indoors).
There are many solutions for Bluetooth, one of the most interesting is the EB500 series made by A7. WiFi however is more expensive to implement. There are several WiFi solutions for robots based on the Prism PCMCIA board but this requires the apropriate interface which is not easy to implement. For a robot I believe Bluetooth is the right choice. It can reach 100 meters at 150Kbps which is more than adequate for most purposes.
Cameras for robots are usually analog. They are small and you don't need any special control for them other that using perhaps an arm to mount the camera in order to change the focus. There are literaly hundred of miniature cameras available that are usable for robots. Most of them require a RF decoder on the receiver side. As the camera does not interact with the brain on board you can chose it based on size, power requirements, color/B/W, etc.
As for sensors, there are thousand of them. The most obvious choice for starters are, for obstacle avoidance, infrared detectors, ultrasonic rangers and mechanical switches; for bipeds, accelometers and gyros; for general orientation, electronic compass and encoders. You can add many more depending on your robot needs: line followers, color detectors, pyro sensor, thermo sensors, etc. Some of them are inexpensive while others are very expensive.
Gumstix uses a general purpose processor, the XScale by Intel. That one is an ARM compatible CPU, one of the so called 'System on Chip' processors, because the processor integrates a lot of peripherals. The good side of such a processor is that is is powerful enough to make a complete system. The bad side is that you must use a full fledged operating system to run it. That is to say, you cannot pretend to start this processor and start doing input/output to a digital pin for example, like you would do on a microcontroller. The Gumstix comes with a version of Linux. So it means everything you do must been done through this operating system. There are other operating system available in case you don't like Linux but then you should count on adapting the operating system to the Gumstix board which may be not a trivial task. This may be good or bad news for you, depending on your preferences and your ultimate goal.
For my taste sys on chips are somewhat overkill for domestic robots. Sys on chip processors may be interesting if you pretend to have a real computer on board rather than a controller board that is most suitable for microcontrollers.
Basic Stamps work very well as peripheral controllers. The problem with Basic Stamps is how to do many things at the same time. They are good for one or two tasks but no more. However you can add several Basic Stamps together to perform complex tasks. The best of BS is that are simple to program and have many peripherals already made for it.
For general purpose control I prefer PICs or AVRs. There are many microcontrollers out there, some of them very powerful, but having a common controller like a PIC or an AVR gives you more comfort when you have to do the real development: programing tools, libraries, thousand of available projects already made, documentation, ...
PICs and AVR are inexpensive for the power they give and you can use several on the same board.
For servos control the best choice is a separate controller that can be controller serially instead of relying on the processor direct control. A typical robot has 12 or more servos which is too much for some microcontrollers. Also note that microcontrollers share lines so if you reserve many pins for one task you lose lines for other tasks. There are dozens of them that you can adapt to your board of choice. For initial programming it is best to have a serial servo controller that you can plug to your PC.
There are GPS modules available for robots but the problem with these is accuracy. A GPS system does not give more than one meter accuracy in the best case which is of doubtful interest in a robot (not counting they do not work indoors).
There are many solutions for Bluetooth, one of the most interesting is the EB500 series made by A7. WiFi however is more expensive to implement. There are several WiFi solutions for robots based on the Prism PCMCIA board but this requires the apropriate interface which is not easy to implement. For a robot I believe Bluetooth is the right choice. It can reach 100 meters at 150Kbps which is more than adequate for most purposes.
Cameras for robots are usually analog. They are small and you don't need any special control for them other that using perhaps an arm to mount the camera in order to change the focus. There are literaly hundred of miniature cameras available that are usable for robots. Most of them require a RF decoder on the receiver side. As the camera does not interact with the brain on board you can chose it based on size, power requirements, color/B/W, etc.
As for sensors, there are thousand of them. The most obvious choice for starters are, for obstacle avoidance, infrared detectors, ultrasonic rangers and mechanical switches; for bipeds, accelometers and gyros; for general orientation, electronic compass and encoders. You can add many more depending on your robot needs: line followers, color detectors, pyro sensor, thermo sensors, etc. Some of them are inexpensive while others are very expensive.