ブログ

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

at_takuya.sasaki
2017年4月6日 14時38分

以前書いたブログ[*1]を元に、今度はAtmarkDistにて動作させてみました。

[*1] https://users.atmark-techno.com/blog/750/2572

1. サンプルアプリのビルド

今回はまず、ATDE5上でサンプルアプリをビルドします。 そのために、一度SDK内に含まれるヘッダファイルやライブラリをATDE5にコピーします。

1.1 SDKを一度任意のフォルダにコピーした後、展開
atmark@atde5:~$ mkdir ueye_sdk
atmark@atde5:~$ cd ueye_sdk/
atmark@atde5:~/ueye_sdk$ ls
uEyeSDK-4.81.00-ARM_LINUX_IDS_GNUEABI_HF.tgz
atmark@atde5:~/ueye_sdk$ tar zxvf uEyeSDK-4.81.00-ARM_LINUX_IDS_GNUEABI_HF.tgz -C .
1.2 SDK内のヘッダファイルをATDE5にコピー
atmark@atde5:~/ueye_sdk$ sudo cp ./usr/include/ueye*.h /usr/arm-linux-gnueabihf/include/
atmark@atde5:~/ueye_sdk$ sudo ln -s /usr/arm-linux-gnueabihf/include/ueye.h /usr/arm-linux-gnueabihf/include/uEye.h
1.3 ライブラリをコピー
atmark@atde5:~/ueye_sdk$ sudo cp ./usr/lib/libueye_api.so.4.81 /usr/arm-linux-gnueabihf/lib/
atmark@atde5:~/ueye_sdk$ sudo ln -s libueye_api.so.4.81 /usr/arm-linux-gnueabihf/lib/libueye_api.so.1 
atmark@atde5:~/ueye_sdk$ sudo ln -s libueye_api.so.4.81 /usr/arm-linux-gnueabihf/lib/libueye_api.so
1.4 サンプルアプリをビルド

以下のサンプルコードをATDE5にコピーして、ビルドしてみます。

サンプルソース

atmark@atde5:~/ueye_sdk$ ls ueye_sample_vga.cpp 
ueye_sample.cpp
atmark@atde5:~/ueye_sdk$ arm-linux-gnueabihf-g++ -lueye_api -lopencv_core -lopencv_highgui -o sample ueye_sample_vga.cpp

2. SDKとサンプルアプリをイメージファイルに含める

以降の手順は、以下のマニュアルに沿って、すでにArmadillo-840向けにユーザーランドとカーネルをビルドしていることを前提にしています。ユーザーランドとカーネルは、/home/atmark配下に展開していることを想定した手順です。 異なるディレクトリに展開している方は随時読み替えてください。

11.1. Linuxカーネル/ユーザーランドをビルドする

atmark@atde5:~/ueye_sdk$ tar zxvf uEyeSDK-4.81.00-ARM_LINUX_IDS_GNUEABI_HF.tgz -C  ~/atmark-dist/romfs/
atmark@atde5:~/ueye_sdk$ cd ~/atmark-dist
atmark@atde5:~/atmark-dist$ rm -rf romfs/usr/include/
atmark@atde5:~/atmark-dist$ rm -rf romfs/usr/local/share/ueye/firmware/usb3_addon/
atmark@atde5:~/atmark-dist$ rm -rf romfs/usr/local/share/ueye/ueyeethd/
atmark@atde5:~/atmark-dist$ rm -rf romfs/etc/init.d/ueyeethdrc 
atmark@atde5:~/atmark-dist$ cp ~/ueye_sdk/sample romfs/usr/bin/
atmark@atde5:~/atmark-dist$ make romfs
atmark@atde5:~/atmark-dist$ make image

3. 生成されたユーザーランドイメージの書き込み

以下のマニュアルを参考に、生成されたユーザーランドイメージ(romfs.img.gz)をArmadillo-840に書きこみます。

第12章 フラッシュメモリの書き換え方法

4. ブートローダのパラメータ変更

SDKの中に含まれるファイルがかなり大きいため、RAMDISKのサイズを広げてあげないと起動ができなくなります。 以下のマニュアルを参考、ブートローダを保守モードで起動してください。

4.5. ジャンパピンの設定について

ブートローダに以下のようにパラメータを設定してから、ブートします。

hermit> setenv console=ttySC2,115200 ramdisk_size=140000
hermit>boot

5. デーモンを起動します

以下のコマンドを実行して、カメラの動作に必要なデーモンを起動します。 起動時に自動的に設定したい場合は、/etc/config/rc.localなどに記述するとよいでしょう。

[root@armadillo840-0 (ttySC2) ~]# /etc/init.d/ueyeusbdrc start
Starting ueyeusbd... IDS ueyeusbd  4.81.14.0 32bit build Nov 18 2016 07:50:13 ( cmdl scq )
ueyeusbd is running.

以下のように一度USBデバイスの切断/接続メッセージが出ますが、無視します。

usb 1-2: USB disconnect, device number 2
usb 1-2: new high-speed USB device number 3 using rmobile-ehci-driver

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

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

[root@armadillo840-0 (ttySC2) ~]# sample
pure virtual method called
terminate called without an active exception
Aborted

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

[root@armadillo840-0 (ttySC2) ~]# ls
sample.jpg

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

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

[root@armadillo840-0 (ttySC2) ~]# 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.632371
Number of missed frames: 0.

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

以上