Technical Application Note (TAN2012001): Getting Started with FlyCapture 2 and ARM
FlyCapture SDK Version 2.3 or later
FLIR USB 2.0 and USB 3.1 machine vision cameras, except for Blackfly S
Application Note Description
With the release of version 2.3 of the FlyCapture SDK, users can program and operate FLIR USB 2.0 or USB 3.1 machine vision cameras on an ARM device in a Linux environment. This Application Note explains the components and steps that are necessary to get started with FlyCapture 2.3 and ARM as well as the limitations of using FlyCapture2 on an ARM device.
Testing is ongoing. Wherever possible, limitations have been noted; however, as more testing is completed this information may change. All possible configurations of ARM and cameras may not experience the same results.
Supported System Configuration
Before installing FlyCapture, you must have the following prerequisites:
Pandaboard, Beagleboard, or other OMAP4 device with an ARMv7 Cortex processor (including Cortex-A7, -A8, and -A9). Pandaboard is the recommended device. (www.pandaboard.org) Pandaboard and Beagleboard are the only devices supported by testing
A FLIR USB 2.0 camera, either Chameleon or FireflyMVU OR
A FLIR USB 3.1 camera, either Blackfly, Grasshopper3, or Flea3 Other FLIR machine vision cameras (FireWire, GigE, or CameraLink) are NOT supported, although we have tested GigE cameras to stream on select ARM boards. See TAN2014009 Streaming Cameras on Embedded Systems.
An external power supply such as a powered USB hub or GPIO power cable. The Beagleboard does not provide enough power to operate the camera. The Pandaboard may provide enough power depending on other peripheral devices attached.
The raw1394 module that is installed with the libraw1394-8 package may not load after a reboot, causing a FlyCapture bus event error and failure to start an application. To fix, add raw1394 to the /etc/modules file. If problems persist, add video1394 as well.
Installing the FlyCapture SDK
To install the FlyCapture2 SDK:
Download FlyCapture2 SDK from our Downloads webpage.
Copy your flycapture-<version>_arm.tar.gz package on a network or USB drive then copy it to a location on the Pandaboard.
Untar the installation package:
tar xvfz flycapture-<version>_arm.tar.gz
Copy all libraries to system folders:
cd flycapture-<version>_arm/lib sudo cp libflycapture* /usr/lib sudo cp C/libflycapture* /usr/lib cd flycapture-<version>_arm/
Configure permissions to run FLIR cameras:
sudo sh flycap2-conf
Follow the instructions of the script. This installs all the FlyCapture2 libraries, example code, sample applications, and documentation. Additionally, the script prompts you to configure udev so that devices can be used by a particular user. If you choose to configure devices, the script changes permissions on the nodes by overwriting the default Ubuntu permissions and giving the user full read and write access to the device nodes.
Restart your board for the user permissions to take effect.
Compiling the Examples
The FlyCapture SDK includes a number of example applications to help get you started in programming common API tasks. Example files are installed under flycapture-<version>_arm/bin (where you extracted the package).
We suggest copying the extracted folder and sub-folders to a location with write access.
To compile the examples, install the GNU C++ (g++) compiler that is included with the build-essential package: user$ sudo apt-get install build-essential
To compile a specific example, run the makefile located in the example directory. Binaries are copied to the bin directory, and libraries are copied to the lib directory. For example:
user$ cd <extraction folder>/FlyCapture-<version>-arm/src/FlyCapture2Test user$ make
You can also use a cross compiler to build examples for the target architecture. A cross compiler that works well is CodeSourcery. Alternatively, you can set up an ARM emulator using QEmu, install Ubuntu on it, and build your software on the virtual machine.
Limitations Using ARM
Linux users do not have access to Microsoft Windows-only technologies such as: