A single board computer is, as the name suggests, a computer that's built on a single PCB (printed circuit board in case you didn't know). This is opposed to now-more-conventional modular approach. You know, the one with a motherboard where you can stick in certain CPUs and different PCBs, such as RAMs, graphics cards, etc.
So, why would you need one? Well, you don't - you can build great robots without even knowing what an SBC stands for. However, there are some situations when this could be advantageous. First of all - it's always fun to learn something new. Secondly - you can probably connect a monitor to it and feel like a hacker.
From the point of robotics, however, this could be the right solution if you have a really feature-rich robot in mind. For example - a walking robot that has a camera and records everything it "sees". The chances are you can achieve something like this with microprocessors.
However, at some point you may run short of computational power, memory, or the software may get so complicated that you see a need of an OS (Windows, Linux) to run it. In these cases a computer-run robot may be the right solution.
Also, a single board computer could be just for you if you were looking at some commercially available PC-powered robots. Basically, these are more or less conventional desktop PCs that can drive around. The downsides are - power consumption and price.
A typical single board computer usually uses only around 3 W of power and the pluses of an operating system are still there - rich software options, rich programming environments and options and so on. So, let me tell you which single board computers could be interesting to you.
As a side note - many appliances you see around you - routers, many smart phones, ATMs, some TVs and so on, runs one or another OS and have specifically tailored SBCs in them. The thing is - many of these SBCs are not sold on one-by-one basis. Single board computers I'll describe here are specifically designed for hobbyist market and can be bought separately.
RoBoard single board computer, courtesy of Trossen Robotics
In my humble opinion, Roboard is the most notable single board computer from robotics point of view, as it is the only SBC designed specifically for robotics applications. It's quite powerful too if compared to other single board computers on the market.
So, it's based on a Vortex86DX, a 32bit x86 CPU running at 1000Mhz and it has 256MB on board DDR 2 RAM memory. As you may already now, computers based on x86 architecture CPUs can run 'serious' desktop operating systems - Windows 98/ME/XP and others.
This is one of the main pros of this robotics SBC - it can run DOS, Win 98/ME/XP, Windows Embedded CE 6.0, Windows XP embedded, Windows embedded standard and Linuxes based on kernel versions 2.4.x and 2.6.x. Quite a choice, isn't it?
However, a wide choice of operating systems doesn't necessarily make something really useful for robotics applications, right? There are some quite unique requirements to fulfill this - we need plenty of I/O options for different sensors, switches and motors.
So, the board has 24(!) 3-pin PWM (pulse width modulation) headers for your servos, one 16-pin header for A/D (that's 8 channels) with built-in 10-bit Analog-Digital converters, as well as other connection possibilities such as RS-232, RS-485, multiple USB connectors, TTL serial, LAN, and an SPI&I2C connector.
Most of these connectors are in a header/wafer form on the board with the exception of one USB port. All cables required to use these connectors are provided with the SBC though. But then you still have to program everything to make it a robot.
To further ensure that this single board computer is a roboticist-friendly option for robot building, the manufacturer includes specific libraries with it. The RoBoIO library is an open-source library for Roboard's I/O functions.
So, it supports the usage of SPI, A/D, PWM, I2C, General purpose input output, and RC servos. It is available for Visual C++ 2005/2008 for Win XP, Visual C++ 2005 for Windows CE 6.0, for .NET framework 2.0 and above, gcc for Linux, DJGPP for DOS, and for Labview 8.6.1
I think it's not necessary to tell what kind of programming possibilities can be achieved if RoBoIO and other conventional PC programming options are used together. This is the main reason why someone would want to use RoBoard, oh and those 24 PWM outputs too!
And last but not least - the board requires 6V-24V power supply, it uses around 2 Watts of power, and the OS is meant to be written in a MicroSD card for which RoBoard has a slot. So it's more than possible to run this thing using on-board batteries, thus making it really autonomous. If you're interested you can get RoBoard at Trossen Robotics! (aff link - read ad disclosure)
BeagleBoard is a low cost single board computer developed for hobbyist market to demonstrate the possibilities of Texas Instruments' OMAP 3530 system on a chip that has an ARM Cortex A8 processing unit. Its most notable feature, however, is that it's open sourced.
This way the power of open source and community that has proven itself successful in software development is now used for hardware as well. So what do we get from it? There are many Beagleboard projects on the web as well as extensive information on it.
Open source means that all design documentation is also freely available in case you'd like to refer to it or modify it. As you can understand, its not a robotics specific product, its more like a small (really small) general purpose computer.
As it's based on an ARM processor, it is possible to run OSes that support this architecture - Windows CE, Linux and Symbian. Regarding the ARM processors, I can say that they are really popular in consumer electronics devices, such as smartphones, hand held gaming devices, media players, etc.
So, BeagleBoard in its current C4 revision has a 720 Mhz TI OMAP 3530 processing unit (with ARM Cortex A8 core), 256 MB RAM memory, 256 MB NAND memory. To interface it with different devices it has DVI-D, S-Video, Stereo In/Out, USB OTG and USB Host ports as well as an RS 232 header and an SD/MMC card slot.
The next version - BeagleBoard XM will be more powerful with added peripherals and some other changes, details are not yet fully known. As BeagleBoard is open sourced there are some clones with slightly different capabilities, most notable one - IGEPv2 board. There are also some BeagleBoard inspired projects such as the LeopardBoard and the HawkBoard.
So, what to do if you'd like to use this single board computer for your robotics needs? As you see, the initial possibilities seem quite limited as only RS 232 and USB seem relevant to our purposes. Still, you need not worry about it. The board also has a 28-pin expansion header that can be used for GPIO, I2C, I2S and other applications. Apart from that there are two LCD headers that can prove to be quite handy too.
The best way how to use these expansion possibilities would be to create a custom expansion board for your needs. This approach was used in the BeagleBot project. You can find project details as well as schematics of the expansion board at the BeagleBot project's website.
Phidget Single Board Computer, courtesy of Trossen Robotics
PhidgetSBC is not a typical single board computer like both above mentioned. By saying typical SBCs, I mean SBCs that can run different operating systems that can then be used the way you'd use these OSes on a regular computer, while enjoying the size and low power benefits.
PhidgetSBC is a part of the Phidgets system. Phidgets are different electronic components, such as sensors and motor drivers that can be controlled by a regular PC. Phidgets are attached to a PC via a USB connection. Then they can be accessed and controlled using the Phidgets API, thus making it possible to incorporate their functions in software.
For mobile robotics applications this is pretty inconvenient as the user is restricted by the length of the USB cable. PhidgetSBC was designed to enhance the Phidgets' functionality by extending their range via LAN or making them autonomous.
So, the board runs a custom Linux distro (firmware) and it can be accessed and configured the same way you'd configure a typical router - through web based interface. Custom applications written in either C/C++ or Java can be uploaded through this interface as well. It is possible to modify the distro to adjust it to your needs.
It has four full-speed USB ports that can be used to connect USB based Phidgets or webcams, 8 analog inputs, 8 digital inputs and 8 digital outputs. These IO ports can be used for everything that you'd do with other IO ports of these types.
Connected devices can be controlled either locally with custom applications stored on the PhidgetSBC, or remotely if it's connected to a LAN (an ethernet cable and a USB Wireless adapter are included). If the remote control option is utilized, then a wide array of possible programming languages and environments can be used as the application would be executed on a remote machine in this case.
So, it should be quite straightforward to make your own mobile webcam using this board! If you want to find out more about the Phidgets system, you can read more in my article on phidgets.
At the end, you're the only one who can decide which (if any) single board computer - RoBoard, BeagleBoard, PhidgetSBC or some other single board computer could be useful to you and your robotics projects! I just hope I managed to give you some insight on this topic.