1.3. Nvidia Jetson AGX Orin/Xavier 開発者キット用 TIER IV カメラ スタートガイド#
注意
このドキュメントはNVIDIA Jetson 開発キット Xavier/Orin のユーザーを対象としています。
1.3.1. 必要な機材のリスト#
Nvidia Jetson AGX Orin 開発者キットまたは Nvidia Jetson AGX Xavier 開発者キット x 1
デシリアライザキット
LI-JXAV-MIPI-ADPT-4CAM × 1
LI-GMSL2-IPX-DESER x 1~4 (カメラ 2 台につき 1 個)
FAW-1233-03 x 1~4 (カメラ 2 台につき 1 個)
GMSL2ケーブル(FAKRA C-FAKRA C) x 1~8 (カメラ1台につき1本)
TIER IV 車載 HDR カメラ C1 x 1~6 または C2
1.3.2. ハードウェアの接続#
Jetson AGX Orin/Xavier Developer Kit(以下、Devkit)の電源が切れていることを確認してください。確認後、以下のようにデシリアライザーキットとカメラを取り付けます。次の手順を参照し、各コンポーネントを適切に接続してください。
C1 Camera <== GMSL2 cable(FAKRA Connector) ==> LI-GMSL2-IPX-DESER <== FAW-1233-03 ==> MIPI-ADPT-4CAM <=> Jetson
AGX Orin Developer Kit
1.3.2.1. デシリアライザキットとカメラの接続#
LI-JXAV-MIPI-ADPT-4CAM を開発キットの背面にあるコネクタに接続します。
注釈
LI-JXAV-MIPI-ADPT-4CAM は Jetson AGX Xavier 開発者キット用に設計されているため、Jetson AGX Orin 開発者キットに接続するとエンクロージャとわずかに干渉する可能性があります。慎重に接続するか、問題を防ぐために リンクに記載されているアダプター の使用を検討してください。
次に、FAW-1233-03 ケーブルを LI-MAX9296-IPX-DESER の CH1 に挿入します。
前に接続したケーブルのもう一方の端をLI-MAX9296-IPX-DESERのポートAに挿入します。カメラ1つの評価の場合、GMSL2 ケーブルの FAKRA コネクタを LI-MAX9296-IPX-DESER のポート A に挿入します。 2 台のカメラを接続するには、FAKRA コネクタをポート A とポート B に接続します。
注意
デシリアライザには12Vの電源を外部ACアダプタから別に供給する必要があります。
カメラを GMSL2 ケーブルのもう一方の FAKRA コネクタに接続します。銀色のラベルが付いている面が上を向くようにしてください。
1.3.2.2. その他のハードウェア接続#
必要に応じて、マウス、キーボード、HDMI ケーブルなどを Devkit に接続します。各種作業に必要な機器は別途ご用意ください。
1.3.3. ソフトウェアのセットアップ#
1.3.3.1. ソフトウェア要件#
開発キットが次のドライバーのソフトウェア要件を満たしているかどうかを確認してください。
ソフトウェア |
バージョン |
ダウンロードリンク |
---|---|---|
JetPack |
5.1.1 or 5.1.2 |
|
tier4-gmsl-camera |
1.2.1以降 |
https://github.com/tier4/tier4_automotive_hdr_camera/releases |
バージョン v1.4.1 で追加: C2カメラを使用するには、カメラドライバ バージョン 1.4.1 以上が必要です
バージョン v1.4.5 で追加: JetPack 5.1.2 を Nvidia AGX Orin Development Kit で使用するには、カメラドライバ バージョン1.4.5以上が必要です
ターゲットの Devkit がソフトウェア要件を満たしていない場合は、JetPack のインストールに進んでください。 JetPack のインストールには 2 つの方法があります。
手動インストール: 提供されたリンクから JetPack データをダウンロードし、手動でインストールを実行してください。
Nvidia SDK マネージャ: インストールには Nvidia SDK マネージャを使用してください。
潜在的なインストールの問題を回避するために、インストールには SDK マネージャー (方法 2) を使用することをお勧めします。
注意
Ubuntu22.04 をホストとして使用している場合、 JetPack をインストールするのにSDKマネージャーは使用できません。
1.3.3.2. ドライバーパッケージのインストール#
この手順は、Devkit で実行する必要があります。
ドライバー パッケージ ファイル (提供されたリンクから最新バージョンを入手してください) を任意のディレクトリにコピーします。コピーが完了したら、以下のコマンドを入力します。 ※xxxはドライバーのバージョンに置き換えてください。ダウンロードしたドライバーのバージョンを指定します。
cd <Directory of your choice>
sudo apt install ./tier4-camera-gmsl_x.x.x_arm64.deb
ドライバーをインストールした後、カスタムのdtb
ファイルを生成して、GMSL ポートごとにカメラの割り当てを定義する必要があります。詳細はカメラドライバーのインストールを参照してください。コマンドのオーバーレイの例については、ADLINK ROSCube のスタート ガイド を参照してください。
# This is the case that all GMSL ports are assigned as C1
sudo /opt/nvidia/jetson-io/config-by-hardware.py -n 2="TIERIV ISX021 GMSL2 Camera Device Tree Overlay"
sudo shutdown -h now # Power off
完了したら、Devkit を再起動してください。
ドライバーをインストールした後、i2c 書き込みエラーまたは同様の問題に関連するエラー メッセージがカーネル メッセージ (syslog または dmesg コマンド出力) に表示される場合があります。これらのエラーは通常、カメラが接続されていないポートに関連しており、問題なくカメラ画像の取得を続行できます。
エラーメッセージの例:
Jun 29 17:13:53 jetson-desktop kernel: [ 11.114217] tier4_max9295 30-0062: [tier4_max9295_write_reg] : Max9295 I2C write failed. Reg Address = 0x0000 Data= 0xC0.
Jun 29 17:13:53 jetson-desktop kernel: [ 11.115551] tier4_max9295 30-0060: [tier4_max9295_write_reg] : Max9295 I2C write failed. Reg Address = 0x0010 Data= 0x22.
Jun 29 17:13:53 jetson-desktop kernel: [ 11.116391] tier4_max9295 30-0060: [tier4_max9295_setup_control]: Ser device not found
Jun 29 17:13:53 jetson-desktop kernel: [ 11.116617] tier4_isx021 30-001c: [tier4_isx021_gmsl_serdes_setup] : Failed to setup GMSL serializer.
Jun 29 17:13:53 jetson-desktop kernel: [ 11.116873] tier4_isx021 30-001c: [tier4_isx021_probe] : Failed GMSL Serdes setup.
Jun 29 17:13:53 jetson-desktop kernel: [ 11.117134] tier4_isx021: probe of 30-001c failed with error -121
Jun 29 17:13:53 jetson-desktop kernel: [ 11.117340] tier4_isx021 30-001b: [tier4_isx021_probe] : Probing V4L2 Sensor.
Jun 29 17:13:53 jetson-desktop kernel: [ 11.117666] debugfs: Directory 'isx021_a' with parent '/' already present!
Jun 29 17:13:53 jetson-desktop kernel: [ 11.117871] tier4_isx021 30-001b: tegracam sensor driver:isx021_v2.0.6
Jun 29 17:13:53 jetson-desktop kernel: [ 11.226016] tier4_max9295 30-0062: [tier4_max9295_write_reg] : Max9295 I2C write failed. Reg Address = 0x0000 Data= 0x84.
Jun 29 17:13:53 jetson-desktop kernel: [ 11.227182] tier4_max9295 30-0042: [tier4_max9295_write_reg] : Max9295 I2C write failed. Reg Address = 0x0010 Data= 0x21.
Jun 29 17:13:53 jetson-desktop kernel: [ 11.228005] tier4_max9295 30-0042: [tier4_max9295_setup_control]: Ser device not found
Jun 29 17:13:53 jetson-desktop kernel: [ 11.228218] tier4_isx021 30-001b: [tier4_isx021_gmsl_serdes_setup] : Failed to setup GMSL serializer.
Jun 29 17:13:53 jetson-desktop kernel: [ 11.228465] tier4_isx021 30-001b: [tier4_isx021_probe] : Failed GMSL Serdes setup.
Jun 29 17:13:53 jetson-desktop kernel: [ 11.228717] tier4_isx021: probe of 30-001b failed with error -121
NVMeストレージ(M.2 SSD)使用時
NVMe ストレージにオペレーティング システムをインストールしている場合、システムはオンボード ストレージから構成を読み取っている可能性があることに注意してください。再起動後もカメラ デバイスが表示されない場合は、前述のセットアップ手順に加えて、オンボード ストレージをマウントし、次のファイルをオンボード ストレージの /boot ディレクトリにコピーする必要がある場合があります。
- /boot/extlinux/extlinux.conf
- /boot/kernel_tegra234-p3701-0000-p3737-0000-user-custom.dtb
1.3.4. カメラ画像の取得#
1.3.4.1. カメラデバイスを確認する#
ターミナルを開き、次のコマンドを実行して、カメラが v4l2 デバイスとして認識されているかどうかを確認します。ビデオデバイスの数と接続されているカメラの数が一致していれば、カメラの認識チェックは完了です。
ls /dev/video*
/dev/video0
/dev/video1
.
.
1.3.4.2. カメラ画像データ取得#
ターミナルを開いて以下のコマンドを実行すると、Gstreamer を使用した画像取得が開始されます。新しいウィンドウが開き、カメラ画像が表示されます。
1.3.4.2.1. 例1:C1カメラによる評価#
gst-launch-1.0 v4l2src io-mode=0 device=/dev/video0 do-timestamp=true ! 'video/x-raw, width=1920, height=1280, framerate=30/1, format=UYVY' ! videoscale ! xvimagesink sync=false
1.3.4.2.2. 例 2: 4 台の C1 カメラによる評価#
gst-launch-1.0 v4l2src io-mode=0 device=/dev/video0 do-timestamp=true ! \
'video/x-raw, width=1920, height=1280, framerate=30/1, format=UYVY' ! \
xvimagesink sync=false v4l2src io-mode=0 device=/dev/video1 do-timestamp=true ! \
'video/x-raw, width=1920, height=1280, framerate=30/1, format=UYVY' ! xvimagesink sync=false \
v4l2src io-mode=0 device=/dev/video2 do-timestamp=true ! \
'video/x-raw, width=1920, height=1280, framerate=30/1, format=UYVY' ! xvimagesink sync=false \
v4l2src io-mode=0 device=/dev/video3 do-timestamp=true ! \
'video/x-raw, width=1920, height=1280, framerate=30/1, format=UYVY' ! xvimagesink sync=false
1.3.4.2.3. 例3:C2カメラによる評価#
gst-launch-1.0 v4l2src io-mode=0 device=/dev/video0 do-timestamp=true ! 'video/x-raw, width=2880, height=1860, framerate=30/1, format=UYVY' ! videoscale ! xvimagesink sync=false
注釈
gstreamer 起動スクリプト も使用できます。
注釈
「no element "v4l2src"」というエラー メッセージが表示された場合は、ディレクトリ ~/.cache/gstreamer-1.0 を削除して、コマンドを再試行してください。
カメラの起動順序の制約 (v1.1.1 より前のドライバー バージョンの場合)
v1.1.1 より前のバージョンのドライバーを使用している場合は、起動のための特定の手順に従ってください。ドライバー バージョン v1.2.1 以降の場合、順序や制約の要件はありません。
複数のカメラを使用する場合、すべてのカメラを同時に起動する必要があります。
たとえば、2 台のカメラを使用している場合は、次のワンライナー コマンドを使用して画像の取得を開始する必要があります。
```
# This one-liner command works
tier4@jetson:~$ gst-launch-1.0 v4l2src io-mode=0 device=/dev/video0 do-timestamp=true ! \
'video/x-raw, width=1920, height=1280, framerate=30/1, format=UYVY' ! \
xvimagesink sync=false v4l2src io-mode=0 device=/dev/video1 do-timestamp=true ! \
'video/x-raw, width=1920, height=1280, framerate=30/1, format=UYVY' ! xvimagesink sync=false \
```
これらの分割されたコマンドは機能しない可能性があります。
```
# These separated commands may not work
# On a terminal
tier4@jetson:~$ gst-launch-1.0 v4l2src io-mode=0 device=/dev/video0 do-timestamp=true ! \
'video/x-raw, width=1920, height=1280, framerate=30/1, format=UYVY' ! \
xvimagesink sync=false
# On another terminal
tier4@jetson:~$ gst-launch-1.0 v4l2src io-mode=0 device=/dev/video1 do-timestamp=true ! \
'video/x-raw, width=1920, height=1280, framerate=30/1, format=UYVY' ! \
xvimagesink sync=false
```
1.3.5. 画像データの記録#
Gstreamer を使用すると、画像データを H.265 でエンコードしながら記録できます。必要に応じてビットレート、ファイル名、その他のパラメータを変更してください。
例 1: C1 カメラでの録画
gst-launch-1.0 -e v4l2src io-mode=0 device=/dev/video0 do-timestamp=true ! 'video/x-raw, width=1920, height=1280, framerate=30/1, format=UYVY' ! nvvidconv ! nvv4l2h265enc bitrate=3000000 ! h265parse ! qtmux ! filesink location=out.mp4
例 2: 2 台の C2 カメラで録画する
gst-launch-1.0 -e v4l2src io-mode=0 device=/dev/video0 do-timestamp=true ! 'video/x-raw, width=1920, height=1280, framerate=30/1, format=UYVY' ! tee name=camera1 v4l2src io-mode=0 device=/dev/video1 do-timestamp=true ! 'video/x-raw, width=1920, height=1280, framerate=30/1, format=UYVY' ! tee name=camera2 camera1. ! nvvidconv ! nvv4l2h265enc bitrate=3000000 ! h265parse ! qtmux ! filesink location=out_1.mp4 camera2. ! nvvidconv ! nvv4l2h265enc bitrate=3000000 ! h265parse ! qtmux ! filesink location=out_2.mp4
C2カメラの場合は、「width」、「height」、「framerate」の設定を適宜変更してください。 「幅=2560」と「高さ=1860」。
1.3.6. ROS2でカメラ画像データを利用する#
1.3.6.1. ROS2のインストール#
Jetpack が提供する最新のディストリビューションは Ubuntu 20.04 です。 Ubuntu 20.04 と互換性のある ROS2 ディストリビューションは、Galaxy です。ただし、Galaxy はサポート終了 (EOL) に達しているため、ソースからビルドするか、Docker を使用して Humble をインストールしてください。
Jetson Orin (Ubuntu 20.04) 上のソースから ROS2 Humble をビルドすると、OS の互換性がないために失敗する可能性があります。 Docker の使用をお勧めします。
1.3.6.2. ノードのインストール(未インストールの場合)#
v4l2_camera ノードの使用をお勧めします。インストール手順については、Github リポジトリ を参照してください。
1.3.6.3. v4l2_camera ノードの起動と画像データの視覚化のトピック#
ターミナルを開き、次のコマンドで v4l2_camera ノードを起動します。
ros2 run v4l2_camera v4l2_camera_node --ros-args \
-p video_device:=/dev/video0 \
-p pixel_format:=UYVY \
-p image_size:=[1920,1280]
注釈
C2の場合はimage_sizeの設定を[2880,1860]に変更してください。
画像トピック (ROS 形式) /image_raw が公開されます。 rqt_image_view を使用して視覚化します。新しいターミナルを開き、次のコマンドを実行して rqt_image_view を起動します。
ros2 run rqt_image_view rqt_image_view
1.3.6.4. Rosbagの記録#
v4l2_camera ノードの実行中に、次のコマンドを使用して rosbag (ROS 形式のログ ファイル) を記録できます。
ros2 bag record -a
1.3.7. 設定変更#
カメラドライバーの設定を変更するには、/etc/modprobe.d/tier4-*.conf ファイルを編集します。設定ファイルには次の行が含まれています (tier4-isx021.conf の場合)。
# /etc/modprobe.d/tier4-isx021.conf
options tier4_isx021 trigger_mode=0 enable_auto_exposure=1 enable_distortion_correction=1
これらのフラグを編集した後、変更を有効にするためにシステムを再起動します。
1.3.7.1. 駆動モードの切り替え(フリーラン/トリガー)#
警告
Jetson Orin/Xavier 開発キットには FSYNCの入力機能がないため、Jetson Orin/Xavier 開発キットではトリガーモードはサポートされていません。フリーランモードからの変更は意図しない動作をする可能性がありますので、行わないでください。
1.3.7.1.1. C1の場合#
駆動モードは30fpsのフリーランモードに固定されます。他のドライブモードはサポートされていません。
1.3.7.1.2. C2の場合#
ドライブモード |
フレームレート |
trigger_mode= |
フリーラン |
10fps |
0 |
フリーラン |
20fps |
2 |
フリーラン |
30fps |
4 |
1.3.7.2. レンズ歪み補正 (LDC) 機能の有効化/無効化#
enable_distortion_correction フラグの値を変更することで、レンズ歪み補正 (LDC) 機能を有効または無効にできます。
レンズ歪み補正を有効にするには、enable_distortion_correction=1 を設定します。レンズ歪み補正を無効にするには、enable_distortion_correction=0 を設定します。
1.3.7.3. 露光時間の固定#
1.3.7.3.1. C1の場合#
C1には3種類の露光時間があり、変数 shutter_time_min
, shutter_time_mid
, shutter_time_max
を使用することで各々を設定することが可能です。実際の露光時間は、周囲の明るさに応じてこれら3つの3変数値及びそれらの線形補間値の間を遷移します。各変数値の単位はマイクロ秒です。異なる環境光条件下であっても露光時間が変化しないように固定するには、これらの変数に対してすべて同じ値を設定してください。例えば、 /etc/modprobe.d/tier4-isx021.conf
に対して以下の設定を記述することで露光時間を11 msに固定することができます。
shutter_time_min=11000 shutter_time_mid=11000 shutter_time_max=11000
1.3.7.3.2. C2の場合#
C1と同様に、C2では shutter_time_min
及び shutter_time_max
の2種類の露光時間を設定することが可能です。各変数値の単位はマイクロ秒です。例えば、 /etc/modprobe.d/tier4-imx490.conf
に対して以下の設定を記述することで、露光時間を11 msに固定することができます。
shutter_time_min=11000 shutter_time_max=11000
1.3.7.4. その他のパラメータ調整について#
T4cam-ctrl ユーザーマニュアル を参照してください。