Syntro, Gumstix and Three Webcams
As we get closer to releasing Syntro, I'm continuously looking for more test platforms.
Particularly desirable are machines without fans.
Syntro is developed using Qt making it easy to get running on Gumstix and other OMAP boards.
I usually test Syntro/Gumstix configurations with a custom Overo expansion board I have from a customer. The board has a multi-channel ADC connected to the McBSP and a serially connected GPS unit. The combination provides a good multi-stream data source to feed Syntro, but I only have one of those boards for testing.
Today I connected three webcams to a single Gumstix running Syntro, which is something I hadn't tried before.
The first screenshot is of an iMac where I was running Syntro Control, Exec, Viewer and one of the other Syntro camera apps.
I was using the iMac's built-in camera for one of the video streams in this test.
Three of the cameras in the view, GumCam0, 1 and 2, are coming from Logitech webcams connected to an Overo Tide on a Chestnut43 board. Nothing special about the Chestnut, I just needed a board with ethernet.
You can see the setup in the zoomed GumCam1 view in the lower right.
One of the cameras is connected to the standard USB Host port. The other two cameras are connected through a powered hub that is in turn connected to the Overo OTG port.
The display shows frame rates less then 30, but that has more to do with what I'm running on the iMac, not the Gumstix.
The second screenshot is from a workstation with four SSH sessions to the Overo, three of them running SyntroV4LCamera instances and one of them running top.
The SyntroV4LCamera apps are running in console mode since I don't have a display connected to the Gumstix. Like most Syntro apps, there is both a GUI and console version built-in to the executable. You select which runs with a command line argument.
The Gumstix is sending 30 fps from each camera. The load on the Gumstix isn't bad. In the output shown, top has been running for awhile. The DSP was not involved in any of this.
The resolution is 640x480 in JPEG format. We use JPEG as the default Syntro image format for two reasons. First because most webcams provide MJPEG directly, so it's easy. The second reason is to facilitate pipeline stream image processing by other Syntro apps.
Pipeline stream filter processing of images is a powerful use of Syntro allowing you to offload work from the data source. It would be more difficult to do this if we were streaming a format like H.264.
Syntro already supports YUV and we do plan to support some streaming formats in the future particularly for storage reasons. We do the fixup from MJPEG to proper JPEG in the Syntro drivers.
I tried a fourth camera on the hub, but started getting errors in the image data. I'll have to troubleshoot that. There are definitely cpu cycles to spare on the Gumstix.
It would also be possible to throw in an ISP connected camera like the Caspa.
The last two cameras in the Syntro View are from SyntroV4LCamera apps running on a couple of other Linux workstations.
This whole setup is a pretty simple, out-of-the-box Syntro configuration. Showing only six cameras was arbitrary.
When we get closer to releasing Syntro, I'll document the steps to set things like this up on a Gumstix or any platform we support.
Right now we are testing Syntro on Win7, Mac (>= 10.7), Ubuntu (10.04-12.04), Fedora (>= 16) and Angstrom for the Gumstix.