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
So, RoBoard is 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 as well as different breeds of Linux. 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 interfacing 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.
Beagleboard.org's product family is a very interesting development in the world of single board computers. The original Beagleboard was created as an open sourced hobbyist product to showcase the possibilities of a certain Texas Instruments' ARM based processor. This trend also continues in other products.
The fact that we can talk about different Beagleboard models is one of the things that distinguishes them from other SBCs on the market. Often, there's one model that doesn't get updated often if at all. Beagleboards are different, what started as one product not particularly well suited for robotics has grown into a family of products, some of which are used as basis of pretty serious projects.
I'm talking about the Beaglebone. The Beaglebone is a credit card sized ARM based SBC having a lot of expansion capabilities some of which are considered essential for robotics projects. These expansion capabilities can either be exploited using ready made expansion boards called capes or by designing an expansion board tailored for the project at hand.
There is a lot more to tell about these boards. You can find out more in our article on Beagleboard and Beaglebone single board computers.
Raspberry Pi might just be one of the most popular or most mainstream single board computers out there. Although it was far from being the first on the market, the hype of its release ensured that there are plenty of people who view this particular SBC as the only one out there. Nevertheless, it definitely brought the prices of SBCs down. Before Raspberry came out prices around 200 USD were pretty much the norm. After Raspberry, other devices have popped out in the 50 USD segment as well.
The main difference of this board if compared to other single board computers is the development goal. If other boards are often derivatives of embedded systems' development platforms then Raspberry Pi is created as an educational platform. This renders it more fun to play with as a purely computer sciences device rather than a robotics platform.
That being said, Raspberry Pi has a vast community out there and it's great if learning Python is an appealing goal. The included interfaces are enough to pull off something robotic, especially if available expansion boards are used. Apart from hobbyist robotics projects there are also some professional developments out there. Read about this and other things in our article on Raspberry Pi.
Udoo is quite different from the above mentioned single board computers. Often it is regarded as a powerful Raspberry Pi combined with Arduino. While this description might not be the best, it successfully captures the essence of this board in a few words.
Indeed, Udoo is like a combination of these two worlds. It has a powerful main processor that can be found around the embedded systems industry starting from tablet computers to automotive industry which is tightly integrated with an auxiliary processor that can be found in Arduino Due.
This in combination with the fact that it can use Arduino compatible hardware (actuators, shields, sensors, etc.) makes it a pretty powerful platform for both - prototyping as well as one of a kind DIY projects. Read more about this board in our article on Udoo.
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.