- ダウンロード
- The Imaging Source ダウンロードサイト(Linux版)
- ユーザーガイド:Jetson Nano × GigEカメラ
Jetson Nano × GigEカメラ
初めに:
Jetson Nanoは、CUDAというNVIDIAが開発・提供しているGPU向けの汎用並列コンピューティングプラットフォームのコアを搭載しており、ディープラーニングのGPU処理ができます。TISのGigEカメラはAravisライブラリを使った方法で利用することができます。その手順について記載します。
カメラ |
TheImagingSource社製産業用GigEカメラ GigE:DFK(DMK)33Ge/33G/23Gシリーズ DFKZシリーズ |
---|---|
PC | Jetson nano |
OS環境 |
対象OS:Jetson Nano Developer Kit SD Card Image Version: JP 4.5.1(Ubuntu18.04) Jetson Nano Developer Kit SD Card Image は Jetson Download Center からダウンロード https://developer.nvidia.com/embedded/downloads |
2. TISの環境のインストール編
sudo apt-get install git
git clone https://github.com/TheImagingSource/tiscamera.git
cd tiscamera
sudo ./scripts/dependency-manager install
mkdir build
cd build
cmake -DBUILD_ARAVIS=ON -DBUILD_LIBUSB=ON -DBUILD_V4L2=ON -DBUILD_GST_1_0=ON -DBUILD_TOOLS=ON -DBUILD_DOCUMENTATION=ON ..
sudo make
sudo make install
解説.2公式リポジトリからgitをインストールし、TheImagingSource社の公式リポジトリからgitのコピーをダウンロードします(OSによっては既にgitがインストールされているものもあります)。tiscameraのディレクトリに移動し、そこでTISカメラを動作させるのに必要な依存パッケージをインストールします。dependencies.shは、tiscameraがDebianベースのシステムで動作するのに必要な依存関係パッケージを自動でインストールする為のシェルスクリプトです。 --compilationでコンパイル、--runtimeでランタイム依存関係のインストールをします。buildフォルダーを作成しそこに移動し、cmakeします。cmakeしたらmakeしてインストールします。
補 足ラズパイやJetsonでsudo makeで処理が毎回同じ箇所で詰まる場合はメモリ不足やCPU処理速度が不足している場合があります。その場合は「スワップの拡張」と「Makeの並列化」を行ってください。拡張方法については、CONF_SWAPFILEで検索してご確認ください。Makeの並列化については、sudo makeコマンドではCPUを1コアしか使いませんが、sudo make -j2とすると2コア使ってmake処理を行います。このように開発時におけるメモリ不足とCPU処理速度不足によるパフォーマンス低下を回避してください。
補 足Aravisとは?
Aravisとは、GEN<i>CAM準拠カメラ用のglib / gobjectベースのライブラリです。現在、産業用カメラで使用されるGigEおよびUSB3プロトコルを実装しています。また、基本的なイーサネットカメラシミュレータとシンプルなビューワも提供しています。
上記の【2. TISの環境のインストール編】で以下のようなエラーがでる場合があります。
[ERROR] [TcamView.py:509] - ERROR: displaysink : Could not initialise Xv output
このエラーが出る場合、gstreamerやGObject Introspectionなどの一部のパッケージのインストールに失敗している可能性があります。
これらのパッケージはtiscameraのモジュールの一部として利用されており、使用しているPCの環境によってはインストールに失敗する事があります。パッケージの一部のインストールに失敗してそうな場合は、別のバージョンのtiscameraをインストールしてみてください。
別のバージョンのtiscameraにアクセスするには、【tiscamera】> master(画面左上コンボボックス) > Tagsからアクセスができます。
別のバージョンのtiscameraをインストールする為に、既にインストールしてしまったtiscameraを以下の通りいったんアンインストールしてください。
cd tiscamera/build
sudo make uninstall
git cloneの部分に別バージョンのtiscameraを指定し下記の例のように再度インストールします。
sudo apt-get install git
sudo apt-get install v4l-utils
git clone https://github.com/TheImagingSource/tiscamera.git -b v-tiscamera-0.12.0
cd tiscamera
sudo ./scripts/install-dependencies.sh --compilation --runtime
mkdir build
cd build
cmake -DBUILD_ARAVIS=ON -DBUILD_LIBUSB=ON -DBUILD_V4L2=ON -DBUILD_GST_1_0=ON -DBUILD_TOOLS=ON -DBUILD_DOCUMENTATION=ON ..
sudo make
sudo make install
ここでは、例としてtiscameraのバージョン0.12.0のバージョンでインストールを行っていますが、tiscameraのバージョンによってインストール手順が若干異なる場合があります(sudo ./script…の部分など)。インストール手順は上記リンク内にある各バージョンのREADMEファイルをご確認ください。
3. 動作確認編
tcam-capture
解説.3GUIでTISの産業用GigEカメラを操作できるビューワツールtcam-captureとtiscameraを動作する環境が整ったので、実際にtiscameraが動作するかtcam-captureで確認します。tcam-captureの立ち上げ時は特にパスを指定する必要はありません。カメラやラズパイはデフォルトがDHCPなので1対1で接続している場合はIPアドレスの設定は特段必要はありませんが、固定IPアドレスにしたい場合は以下の3-1と3-2を参照ください。
(※古いTcam-Captureでは動作が不安定でアプリが落ちることがあります。)
Pyenvなどでpythonのバージョンを切り替え時にtcam-capture実行時に下記のエラーが出る場合、
$ tcam-capture
Traceback (most recent call last):
File "/usr/bin/tcam-capture", line 28, in <module>
from tcam_capture.TcamDevice import TcamDevice, TcamDeviceIndex
ModuleNotFoundError: No module named 'tcam_capture'
tcam-captureのモジュールの場所「/usr/lib/python3/dist-packages/tcam_capture/」をシェルの環境変数PYTHONPATHに追加することでpyenvなどの環境下でもtcam-captureを動作します。
3-1-1.動作確認編(GUIによるNIC側のIPアドレスの設定)
解説.4PC側のNICカードのIPアドレスを固定にします。ネットワークの設定を開き、「Option」ボタンを押下します。
解説.5IPv4のタブをクリックしたのちに下記の手順で実行します。
・MethodをManual
・ADDボタンを押下
・IPアドレスを任意のアドレスにする
・SAVEボタンを押下
sudo ifconfig eth0 mtu 9000
ifconfig
解説.6MTUの変更をします。データ転送で送信できるデータの最大値を示す値であるMTUのサイズを変更することで、転送速度を向上させることができます。再起動をして設定が反映されているか確認をします。
3-1-2.動作確認編(CUIによるNIC側のIPアドレスの設定)
sudo nano /etc/network/interfaces
auto eth0
iface eth0 inet manual
sudo nano /etc/dhcpcd.conf
Interface eth0
static ip_address=192.168.10.10/24
sudo ifconfig -a eth0 down
sudo ifconfig -a eth0 up
(10秒待つ)
iconfig
解説.7まず、PC側のNICカードのIPアドレスから固定に設定します。テキストエディタ経由でinterfacesとdhcpcd.confファイルにアクセスしてIPアドレスを設定します。sudo nanoでテキストエディタを起動し、まずはinterfacesという設定ファイルを開きます。interfacesファイルは管理者権限がないと書き込みができないのでコマンドでsudoで実行しています。interfacesのファイル内のsource-directory…の下部に“auto eth0”
と”iface eth0 inet manual“を追記します。追記したらテキストエディタをCtrl+oで保存をし、Enterを押下すると、「11行を書き込みました」と表示されます。Ctrl+xで画面を閉じます。
次に、dhcpcd.confを開きます。そこでは#Interface eth0と#static ip_addressの#を削除し、指定したいIPアドレスを入力します。/24はサブネットマスクで255.255.255.0です。dhcpcd.confも同じく、Ctrl+oで保存⇒Enterを押下し、「11行を書き込みました」と表示されるのでCCtrl+xで画面を閉じます。設定を終えると、ネットワークの再起動(=down,up)をします。再起動後は10秒ほどお待ちください。最後にIPアドレスが固定(192.168.10.10/255.255.255.0)になったか確認をします。
3-2-1.動作確認編(カメラ側のIPアドレスの設定 - 探索パケットでデバイス認識)
tcam-gigetool list
tcam-gigetool info <serial>
解説.8カメラ側のIPアドレス設定は、tcam-gigetoolを使います。tcam-gigetoolでブロードキャストパケットによって認識された同一ネットワーク内にあるGigEカメラを一覧表示しシリアルNOを確認します。シリアルNOが判明したらinfoで指定したカメラのハードウェア&ネットワーク情報を取得します。この時、カメラ側は出荷時設定のDHCPですが、3-1でNIC側をDHCPから固定IPアドレスにしたので、”Camera is currently not reachable”とエラーが出ます。以下3-2-2で仮のCurrent IPアドレスを設定し、3-2-3で固定(Static)のPersistent IPアドレスを設定していきます。
3-2-2.動作確認編(カメラ側のIPアドレスの設定 - 固定IPを設定する為のCurrent IP)
tcam-gigetool rescue --ip 192.168.0.251 --netmask 255.255.255.0 --gateway 0.0.0.0 <serial>
tcam-gigetool info <serial>
解説.9現在のCurrent IPアドレスを設定します。Current IPはカメラの電源をOFFにしたりネットワークを切断したりすると消えてしまいます。rescueでCurrect IPを設定したらinfoで”Camera is currently not reachable”が消えたかどうか確認してください。
3-2-3.動作確認編(カメラ側のIPアドレスの設定 - Persisten IPを設定する)
tcam-gigetool set --ip 192.168.0.251 --netmask 255.255.255.0 --gateway 0.0.0.0 --mode static <serial>
tcam-gigetool info <serial>
解説.10Current IPでカメラに臨時的なアドレスが割り振られている間に、setで固定IPアドレスを設定します。setで設定されたPersistent IPはカメラの電源をOFFにしてもカメラ内部に保存されています。次にPersistent IPアドレスでカメラを動作させる為にmodeをstaticに切り替えます。(DHCPに戻したい場合はtcam-gigetool set --mode dhcp ) カメラの固定IPアドレスの設定はしましたが、固定IPアドレスを通じて動作させるという事も明示的に実行しなければなりません。modeを切り替えたらカメラの電源を再起動します。最後にinfoで、”Camera is currently not reachable”というエラーが出ず、Staticがenabled、DHCPがdisableになっているか確認します。
補 足3-2-1 ~ 3-2-3までの補足
①固定IPアドレスのON/OFF、②DHCPのON/OFF、③LLAのON/OFF(厳密には常にON)を読み込んでいます。固定IPアドレスがONなら固定IPアドレスがCurrent IPに、固定IPアドレスがOFFでDHCPがONならDHCPサーバから割当られるアドレスがCurrent IPに、DHCPサーバが同一ネットワークになければLLA(169.254.xxx.xxx/255.255.0.0)がCurrent IPとしてカメラに割当られます。①⇒②⇒③という優先順位でCurrent IPアドレスはデバイスブート時に割当られるので3-2-1のPC側からの探索パケットの送信前の時点で既に割り当てられています。しかし、Current IPとPC側のIPアドレスが一致していない場合は、探索パケットはカメラに届きinfoでハードウェア&ネットワーク情報を取得できこそすれ、デバイスのオープンができないので3-2-3で行うようなPersistent IPアドレスの設定ができません。そこで、3-2-2にあるようにrescueで一時的にCurrent IPをPC側のNICと同じネットワークに設定するという手順が必要になります。rescueが必要になるパターンは以下になります。
3-2-4 動作確認編(カメラ側のIPアドレスの設定 - Persisten IPが設定できない場合)
git checkout development
cd build
make -j
sudo make install
解説.11”tcam-gigetool.py set --ip”のコマンドでは、カメラの内部FPGAのレジストリにIPアドレスを書き込んでいます。しかしファームウェアのバージョンによってはIPアドレスを設定するためのレジストリの場所が変わってしまっていることがあり、setが通らない場合があります。その場合は上記のコマンドにてTISのリポジトリ側の修正で対応します。
- ダウンロード
- The Imaging Source ダウンロードサイト(Linux版)
- ユーザーガイド:Jetson Nano × GigEカメラ
解説.1OSをインストールしたら最初に時刻の設定をしてください。Linuxのリポジトリから様々なモジュールをダウンロードする必要がありますが、時刻の設定をしていないとLinuxサーバからのダウンロードに失敗します。時刻設定をしたら環境のアップデートをします。