産業用UVCカメラのすすめ 産業用UVCカメラのすすめ

Jetson Nano × MIPI CSI-2&FPD-Link IIIカメラ

はじめに:
TIS社が提供するMIPI CSI-2&FPD-Link IIIカメラ NVIDIA Jetson開発キットは画像処理やAI処理の用途でご利用いただけます。こちらのデバイスは開発者が画像処理アプリケーションすぐに作業開始できるように開発工数を削減するように設計されています。MIPI CSI-2&FPD-Link IIIカメラNVIDIA Jetson開発キットの導入手順について説明します。

対象ハードウェア NVIDIA Jetson nano, Jetson Xavier NX
対象デバイス MIPI CSI-2&FPD-Link IIIカメラ
OS環境 OpenEmbeddedシステム(Jupyterlab)
SDカード内の初期イメージはOpenEmbeddedシステム(Jupyterlab)となっておりますが、JetPack4.4.0、JetPack4.4.1、JetPack4.5にも対応しております。セットアップ方法については下記【JetPack編 導入】の項目を参照してください。

同梱品一覧・接続方法

NVIDIA Jetson Nano用のイメージングソース開発キットには、次のものが含まれています。

  1. 1.カメラモジュール
  2. 2.三脚アダプタ
  3. 3.三脚
  4. 4.フレットケーブル (Jetson Nano開発ボードに接続された状態で納品されます)
  5. 5.Jetson Nano 開発ボード(Micro-SDカード(32GB)付き OpenEmbeddedシステムが内蔵されています)
  6. 6.JetsonNano用のMIPI-FPD-Link IIIデシリアライザ
  7. 7.ヒートシンク
  8. 8.FAKRAケーブル※
    ※FAKRAコネクタは繰り返し取り外しするようには設計されていないので何度も抜き差しを行わないでください。

上図の通り組み立て、Jetson Nano 開発ボードにキーボード、マウス、コンピューターディスプレイを接続します(HDMIまたはDisplayPort経由)。電源を最後に接続すると、NVIDIA JetsonNanoの電源が自動的にオンになります。SDカードにはすでにフラッシュしたOpenEmbeddedシステムイメージJupyterlab(JupyterLabは、ProjectJupyter用の次世代のWebベースのユーザーインターフェイス)がインストールされています。詳細は口述に記載しています。

JetsonNano用のMIPI-FPD-Link IIIデシリアライザの各部名称

JetsonNanoの本体に取り付けられている下図のデシリアライザはMIPI(CSI-2)信号からの映像をFPD-Link III規格で送信されるLVDS信号に変換し送信するユニットです。

  1. 1.Transmission Errors LED Lamp
    デバイスが認識されていないとLEDが赤に常灯します。 この場合、FPD-Link IIIカメラが正しく接続されていない、あるいはドライバが正しくインストールされていない可能性がありますので、再度カメラの接続を確認の上、ドライバの再インストールしてください。
  2. 2.FPD Link ready LED Lamp
    FPD-Link IIIカメラが認識されているとOS起動後にLEDが緑に常灯します。
  3. 3.ジャンパーピン
    ジャンパーピンはJetson本体のJ41から電源供給するために取り付けられていますので取り外して使用しないください。

OpenEmbeddedシステム Jupyterlab編 導入

OpenEmbeddedシステムイメージには対話型開発環境(IDE)としてJupyterLabがインストールされています。JupyterLabは、より柔軟で強力な開発環境を提供するために Jupyter Notebook の主要コンポーネント (ノートブック、ターミナル、テキスト エディター、ファイル ブラウザー、ipywidgets など) をベースに構築されています。 JupyterLab の詳細は、下記のURLをご参照ください。
https://jupyterlab.readthedocs.io/en/stable/getting_started/overview.html

※注意点
OpenEmbeddedシステムイメージではDebian系のディストリビューション(DebianやUbuntu)のパッケージ管理システムであるAPT(Advanced Package Tool)ライブラリを利用してパッケージを操作・管理するコマンド(apt-get等)は使用することができません。OpenEmbeddedシステムを利用しない方はJetPack導入手順をご確認ください。

手順1.キーボードの設定を変更する

下記の通り設定画面からキーボードレイアウトを日本語対応する。
デスクトップにあるsetting managerで下記のメニューを開きHardware欄のkeyboard をクリックする。

Keyboardの設定画面内のLayoutタブを選択し、モデル、レイアウトを設定します。

Keyboard model: Dell USB Multimedia
Keyboard Layout Japanese (kana 86)
手順2.デスクトップにある「Welcomeファイル」を開き手順に沿って設定する

The Imaging Source MIPI Developer Kit Image Configurationにてユーザーセットアップします。 デスクトップにある下記のWelcomeをクリックしてブラウザを開く。

下記のページのFirst time setupをクリックする。

下記の3つの項目(パスワード、タイムゾーン、Image Sensor Configuration)を手順に沿って設定してください。

デスクトップにあるExampleフォルダにシェルスクリプトがありますので、各シェルスクリプトをダブルクリックすることで接続しているFPD-Link IIIカメラの動作の確認を行うことができます。

トラブルシューティング

OpenEmbeddedシステムイメージを再インストールする場合、下記URLの「DISK IMAGES」欄からイメージファイルをダウンロードしてください。
https://www.theimagingsource.com/support/downloads-for-linux/

JetPack編 導入

手順1:JetPackのイメージ書き込み

Imaging Source MIPIセンサードライバーをインストールするには、NVIDIAJetPackバージョン4.4がインストールされている必要があります。

このJetPackバージョンをJetsonNanoにインストールするには、次の場所からSDカードイメージをダウンロードします。 https://developer.nvidia.com/jetson-nano-sd-card-image-44

ダウンロードした画像からSDカードを作成する手順は、NVIDIAの次のWebサイトにあります。
https://developer.NVIDIA.com/embedded/learn/get-started-jetson-nano-devkit#write

SDカードを作成したら、このカードからJetson Nanoを起動し、画面の指示に従ってシステムのセットアップを完了します。

手順2:Imaging Source MIPIドライバの入手

Jetson Nano/NXで、Webブラウザーを開き、下記のURLの「DEVICE DRIVERS」の欄からJetPackのバージョンにあったドライバーパッケージをダウンロードします。
https://www.theimagingsource.com/support/downloads-for-linux/

手順3:ドライバのインストール

ターミナルを開き、手順2でダウンロードしたdebファイルパッケージのパスに移動し、下記のコマンドを入力しドライバをインストールします。

sudo apt install ./theimagingsource-drivers_VERSION.deb

インストール中に、下記のようなセットアップに一致するセンサー構成を選択するように求められますので該当するdtbファイルを選択してください。

※上記の構成を削除しない限り、他のMIPI / CSI-2カメラを使用することはできませんのでご注意ください。
 ほかのMIPI / CSI-2カメラを使用する場合には「NONE」を選択してください

手順4:再起動

変更を有効にするには、システムを再起動してください。

手順5:MIPIカメラを起動

システムが再起動された後、JetsonNano用のMIPI-FPD-Link IIIデシリアライザのFPD Link ready LED Lampが緑色に常灯します。次のコマンドでカメラからのライブ画像を表示することができます。また、dev/video0 にマウントされますので、各種 Linux アプリケーション上で映像の確認をすることができます。

gst-launch-1.0 nvarguscamerasrc ! nvvidconv ! nvoverlaysink

※再起動後にdev/video0 にマウントされていない場合、手順3のドライバが正しく設定されていない場合があります。
下記のコマンドでドライバを再インストールしてください。

sudo dpkg-reconfigure theimagingsource-drivers
手順6:MIPIカメラを起動(Python)

Jetson Nanoでは、モジュールを使用するためにはGStreamerを使用する必要があります。下記のようにカメラのプロパティ設定はGStreamerのパイプライン上で設定する必要があります。

import cv2

GST_STR = 'nvarguscamerasrc \
    ! video/x-raw(memory:NVMM), width=1920, height=1080, format=(string)NV12, framerate=(fraction)30/1 \
    ! nvvidconv ! video/x-raw, width=(int)1920, height=(int)1080, format=(string)BGRx \
    ! videoconvert \
    ! appsink'
WINDOW_NAME = 'Camera Test'

def main():
    cap = cv2.VideoCapture(GST_STR, cv2.CAP_GSTREAMER)

    while True:
        ret, img = cap.read()
        if ret != True:
            break

        cv2.imshow(WINDOW_NAME, img)

        key = cv2.waitKey(10)
        if key == 27: # ESC 
            break

if __name__ == "__main__":
    main()