Creating Vizix: Embedded Linux for Machine Vision
As mentioned briefly in the robotics page, the sensor stack in Aqua runs a custom designed version of non-real time Linux. The main design goals for the OS managing the sensor stack were speed and robustness, together with support for the sensor hardware plugged into the stack. Since the digital cameras were all 1394-based, we required strong FireWire support from the OS. We initially decided on a monolithic kernel, with no audio support. This was Visix (note the 's'). Visix provided support for the vision code and the vision stack from February 2005. From the initial testing days of the Aqua 1.5 design (back in February 2006), Visix was powering the vision stack and the FireWire bus for ethernet and vision. For Barbados 2007, Visix was given a complete overhaul, updating the kernel to the latest stable release as well as adding module loading support for audio devices, installing newer system libraries and a leaner startup script. This current (January 2007) edition has been renamed Vizix-2.0.
I've always meant to document the whole process of creating Vizix -- I've been too lazy to really do it. Maybe one of these days I'll make a tech report out of it. I found Chris Coughlin's CoughLinux to be exactly what I was looking for; Vizix is very much a clone of CoughLinux with a few (major and minor) differences. Go over to Chris' homepage to learn about the process of making your own tiny Linux distribution.
A non-comprehensive list of current features of Vizix-2.0 are:
- Ubuntu Edgy Eft base libraries
- Kernel 2.6.19 with Beyond patches
- AlSA support for Intel 82801 AC97 Audio chipset
- Ethernet, 802.11 and Ethernet-over-FireWire support
- Power management, supports different standby modes for conserving battery power
- IIDC-standard camera (i.e. FireWire libdc1394) support
- Video4Linux camera support
- Thermal monitoring and CPU frequency scaling support with cpufreqd
- Serial terminal support
- Telnet, OpenSSH(Visix)/Dropbear(Vizix-2.0) SSH servers support
More information and an experimental tarball can be found here. This is provided as an educational example without any warranty or support, on an as-is basis.