I was waiting to get the Pixy Cam (see “Tracking Movement Optically And Cheaply”) so I could write it up together with the Finboard I received from Avnet. The Pixy Cam (Fig. 1) was developed by Charmed Labs and is the fifth in the CMUcam series. My daughter and I have used the original CMUcam that ran an 8-bit microcontroller. The latest incarnation uses a heterogeneous, 32-bit, dual core microcontroller.
The Pixy Cam was a successful Kickstarter project (see “Kickstarter Changes How Consumer Electronics Ideas Turn Into Gold”). The Finboard was developed by Avnet as the Analog Devices Blackfin BF609 Embedded Vision Starter Kit (Fig. 2). The dual core system also has the Pipelined Vision Processor (PVP) that is specifically designed to accelerate video processing.
- Tracking Movement Optically And Cheaply
- Configurable System-On-Module Speeds Prototype-To-Design Turnaround
- Kickstarter Changes How Consumer Electronics Ideas Turn Into Gold
- Hard-Core FGPA Provides A Flexible Development Target
The two platforms target different application areas and have different levels of support so they are not directly comparable from a performance and development stand point but they are both a good starting point for image and video application development. The one you might choose will depend upon a range of factors and hopefully I can highlight some that will be important to you.
Pixy Cam, A Work In Progress
The Pixy Cam targets those looking to add vision to robotic projects. It has a header than works with Arduino-compatible boards and the Kickstarter versions comes with a matching cable. Like many Kickstarter project, this may be a one off product in terms of availability but the specs are there for building another. There may be another round or it could go into production if there is enough demand.
The Pixy Cam is based on an NXP LPC4330 running at 204 MHz. The chip is a dual core microcontroller with Cortex-M4 and a Cortex-M0+ cores that have a shared memory interface. The system has 1 Mbyte of flash and 256 Kbytes of RAM. Typical power consumption is 140 mA. It can run on USB power or 6-V to 10-V DC.
The micro is paired with an automotive grade camera, a Omnivision OV9715 with a 1280 by 800 pixel resolution, that should have a longer availability lifetime than prior CMUcam projects. The lens is standard. The default has a field of view of 75 degrees horizontal and 47 degrees vertical. It can be replaced with different, low cost lenses. There is a bright white, LED that can be turned on.
The layout of the Pixy Cam board is designed for compact robots. There is a 3D printer spec for mounting brackets that work with conventional servos. The board has a header that can drive two servos. Software can be used to track objects using the servos or they could be used to pan to provide a wider field of view.
There is a JTAG interface but the header for it is not provided. Instead, you will need to pull out the soldering iron to add one. Most will use the stock software while many that want to customize the system will be able to just reprogram the flash memory. JTAG debugging is for the few hardcore developers. At least it is relatively easy to add. A JTAG emulator will also be required to make this work.
There is a USB connector plus a 10-pin header that provides access to serial, SPI and I2C interfaces. Most embedded applications will likely use the latter while the USB connection is handy for linking it to a PC. The USB link can also be used to reprogram the micro’s flash memory.
The Pixy Cam’s stock software converts the RGB images from the camera to HSI (hue, saturation, intensity) to provide object recognition support. The PixyMon monitor program (Fig. 3) is available for a range of platforms including Mac, Linux and Windows.
The Pixy Cam software can store up to eight HSI colors that it then can recognize. It sends a data stream with the coordinates and size of objects that it finds. The refresh rate is 50 Hz providing fast feedback to a host. The system provides other functionality including the ability to capture images. The advantage of sending blocks of data about objects is that it requires less bandwidth as well as more information to the host that can be a simpler host micro than one that would do all the processing.
So far I have only played with the PixyMon and some simple programs that have captured the data streams. HSI object recognition is fair to good but lighting is an issue. It can be used to easily recognize colored landmarks if the Pixy Cam is being used for navigation.
At this point the software is in a state of flux with improvements being added on a regular basis. The system has quite a bit of headroom and it could utilize an RTOS but that is currently not required. The Cortex-M0+ is used for image capture and the initial conversion from the camera’s RGB to HSI. The Cortex-M4 is used for higher level analysis. Features like face detection are on the roadmap.
The Pixy Cam is a good alternative for roboticists that are looking for a low cost, low power image sensor but plan on doing most of their programming on the host. In this case, the system can handle some of the heavy lifting video processing. All the hardware design files are available to developers. The latest software C/C++ source code is also available on GitHub.
Finboard Plays Dice
The Finboard has a 720p sensor (1280 by 720 pixels) with a small, built-in lens. There is also a $50 lens mount to add a high quality, professional lens. The kit also comes with a small stand with a standard camera mount that is also included, an HDMI cable and a JTAG debug board. It is also supported by Avnet. Training is even an option. This alone puts it in a different class compared to the Pixy Cam.
The configuration for the Analog Devices Blackfin BF609 Finboard is also different. It has 128 Mbytes of off-chip RAM and 32 Mbits of QSPI flash (Fig. 4). There is a microSD socket for removable storage. The Ethernet support and HDMI output allow this platform to be used to develop commercial solutions. It has four high brightness LEDs.
Although the Finboard is as open as the Pixy Cam, the Finboard is designed for professional developers. The source code and hardware design files are available online but the kit comes with two 6 month licenses for Analog Devices’ CrossCore Embedded Studio (CCES). This allows two developers to use the IDE and toolchain for half a year or one for a full year.
The default software that comes with the Finboard is the BDTI Dice Dot Counting Demo using the Finboard (Fig. 5). The kit even includes dice for the demo. You need to provide an HDMI display though.
Positioning is key for the demo. It is designed so the camera faces down on a flat surface where the die will be located. The 2D analysis operates continuously with the results and image displayed on the HDMI screen. This shows off a number of aspects of the hardware including HDMI support as well as the operation of the PVP. Like many of the sample applications, this demo barely pushes the hardware.
The license plate recognition (LPR) application is another example. It only uses 10% of the system’s horsepower to process D1 images at 10 to 20 frames/s. This is with a 95% recognition rate regardless of lighting from daylight to nighttime. The LPR library can work with the µCOS III RTOS. A PC-based GUI provides a demo interface that does not use the HDMI output.
The advantage of these demos and the platform is that the source code is built using CCES and debugged using the JTAG support. There are third parties providing additional video processing libraries that take advantage of the PVP. This will allow developers to build application like advanced driver assistance systems (ADAS) or machine vision. Likewise, this platform will not provide a developer with much out-of-box functionality as the sample software is designed to highlight features rather than providing services to a host. The dual core Blackfin cores also provide enough horsepower to do some interesting user interface support as well.
Comparing The Two Camera Boards
The Pixy Cam and Finboard will be of interest to a wide range of users and developers but they obviously target different types of users and developers.
In terms of cost, the two also address different areas. The NXP LPC4330 costs about $5 and has on-chip memory although it can used off-chip memory as well. It runs at 204 MHz and targets low power solutions. The Analog Devices Blackfin BF609 runs at 500 MHz and costs about $15. It also uses off-chip RAM so the overall cost of a solution will be higher than something like the Pixy Cam. On the other hand, the Blackfin has quite a bit more performance especially with its PVP allowing it to tackle problems that the Pixy Cam could not attempt.
Both have been fun to work with. I suspect I will be spending more time with the Pixy Cam simply because other developers are working on software for robotics applications that I am also looking at. If I were doing production development project I would likely utilize the Finboard instead.