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
JetPack 5.1.1 (L4T 35.3.1)
JetPack 5.1.2 (L4T 35.4.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, C2 または C3
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以上が必要です
バージョン v1.5.0 で追加: C3カメラを使用するには、カメラドライバ バージョン 1.5.0 以上が必要です
ターゲットの 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
1.3.4.2.4. 例4:C3カメラによる評価#
gst-launch-1.0 v4l2src io-mode=0 device=/dev/video0 do-timestamp=true ! 'video/x-raw, width=3840, height=2160, framerate=20/1, format=UYVY' ! videoscale ! xvimagesink sync=false
注釈
gstreamer 起動スクリプト も使用できます。
「no element "v4l2src"」というエラー メッセージが表示された場合は、ディレクトリ ~/.cache/gstreamer-1.0 を削除して、コマンドを再試行してください。
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 台の 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' ! 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 および C3 カメラの場合は、「width」、「height」、「framerate」の設定を適宜変更してください。
C2カメラ:
width=2880
およびheight=1860
C3カメラ:
width=3840
,height=2160
およびframerate=20
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 または C3 の場合はimage_sizeの設定を[2880,1860] または [3840, 2160]に変更してください。
画像トピック (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の場合#
Likewise C1, the C2 also has capability to set two types of exposure time via variables named shutter_time_min
and shutter_time_max
.
The unit of the value for these variables is also microseconds.
For example, the following configuration in /etc/modprobe.d/tier4-imx490.conf
fixes exposure time to 11 ms:
shutter_time_min=11000 shutter_time_max=11000
1.3.7.4. その他のパラメータ調整について#
T4cam-ctrl ユーザーマニュアル を参照してください。