ブログ

Armadillo-840でiDS社製uEye XS 2を動かしてみる(Debian編)

at_takuya.sasaki
2017年3月24日 16時49分

Armadillo-840にiDS社製のUSBカメラ uEye XS 2[*1]を動かしてみました。 まずは、動作確認が簡単な、Debianを入れたSDカードによるブート環境で試してみます。

[*1] https://jp.ids-imaging.com/store/produkte/kameras/usb-2-0-kameras/ueye-xs/xs.html

1. SDブート環境の作成

まずは以下のマニュアルを参考に、Armadillo-840で動作するDebian環境をSDカード上に構築して、SDブートによる起動を行います。

https://manual.atmark-techno.com/armadillo-840/armadillo-840_product_manual_ja-1.8.1/ch16.html

2. Debianパッケージのアップデート/アップグレード

Armadillo-840をインターネットに接続できる状態にした上で、インストール済のパッケージの アップデート/アップグレードを実施します。また時刻合わせもしておきます。

root@debian:~# date --set="2017/03/24 17:50"
root@debian:~# apt-get update
root@debian:~# apt-get upgrade

3. uEyeシリーズのSDKをダウンロード

iDS社のホームページからSDKをダウンロードします。(要ユーザー登録) 本ブログ作成時の最新バージョンは4.81になります。 (なお、XS2動作のためには、4.40以上のバージョンが必要になります)

https://jp.ids-imaging.com/download-ueye-emb-hardfloat.html

4. SDKをインストール

4.1 SDKを展開します
root@debian:~# ls
uEyeSDK-4.81.00-ARM_LINUX_IDS_GNUEABI_HF.tgz
root@debian:~# tar xvf uEyeSDK-4.81.00-ARM_LINUX_IDS_GNUEABI_HF.tgz -C /
4.2 セットアップを実行します

一部エラーが出ているようですが、とりあえず無視します。

root@debian:~# /usr/local/share/ueye/bin/ueyesdk-setup.sh
Creating service start entry for ueyeusbdrc...update-rc.d: using dependency based boot sequencing
Done.
Creating service start entry for ueyeethdrc...update-rc.d: using dependency based boot sequencing
Done.
Generate ueyeusbd config...
Creating configuration, output file is /usr/local/share/ueye/ueyeusbd/ueyeusbd.conf.
/usr/local/share/ueye/bin/mkcfgfiles: line 84: [: !=: unary operator expected
Generate ueyeethd config...
Creating configuration, output file is /usr/local/share/ueye/ueyeethd/ueyeethd.conf.
/usr/local/share/ueye/bin/mkcfgfiles: line 84: [: !=: unary operator expected
Generate libueye_api config...
Creating configuration, output file is /usr/local/share/ueye/libueye_api/machine.conf.
Reload and retrigger udev to apply USB device rules...
Run ldconfig to update library cache...
4.2 rebootします
root@debian:~# reboot

5. ビルドパッケージとOpenCVパッケージをインストール

この後の手順でサンプルソースをArmadillo-840上でビルドするので、ビルドに必要なパッケージをインストールします。

root@debian:~# apt-get install build-essential
root@debian:~# apt-get install libopencv-dev

6. サンプルソースをビルドする

以下ののサンプルソースをUSBメモリなどにダウンロードして、Armadillo-840上にコピーしてください。

サンプルソース

その後、以下のようにビルドします。

root@debian:~# g++ -lueye_api -lopencv_core -lopencv_highgui -o sample ueye_sample.cpp

7. サンプルを実行してみる

サンプルを実行します。Abordメッセージがでますが、処理は正常終了しているはずです。 (SDK中のライブラリのデストラクタか何かの問題ではないかと思います)

root@debian:~# ./sample
pure virtual method called
terminate called without an active exception
Aborted

sample.jpgができているはずですので、PCなどで画像を見てみてください。

8. SDKのツールを使って見る

SDKの中には、ueyeliveというキャプチャ性能などを図るツールがあるようです。 このツールを試してみます。なお-oで指定するファイルは、ファイル名に何を指定しても、bmp形式で保存されます。 またカラーではなくグレースケールで保存されるようです。

root@debian:~# ueyelive -o sample.bmp
Sensor model XS. Camera serial no 4103053816.
Image size is  1280 x 720
Applied framerate 11.63 fps.
348 frames captured after 30 seconds with 11.63 fps
Frames per second: 11.633724
Number of missed frames: 0.

ツールの使い方の詳細は -h オプションでご覧ください。

なおueyeliveの動作には以下のライブラリが必要です。

root@debian:~# objdump -p /usr/bin/ueyelive |grep NEEDED
  NEEDED               libueye_api.so
  NEEDED               libstdc++.so.6
  NEEDED               libdl.so.2
  NEEDED               librt.so.1
  NEEDED               libpthread.so.0
  NEEDED               libgomp.so.1
  NEEDED               libc.so.6

Armadillo-840のDebian環境標準にはlibgomp.so.1が入っていません。 今回は手順5で自動的にインストールされています。

以上