1.7. カメラ操作および設定ガイド#
注意
本書では、カメラドライバのインストールが完了した後の、TIER IV Automotive HDR Camera (C1/C1-MP、C2/C2-MP、C3) の共通操作および設定について説明します。
このページでは、TIER IV Automotive HDR Camera ドライバに標準で提供されているカメラ制御機能、および画像の取得・表示方法について説明します。
1.7.1. カメラデバイスの接続確認#
画像を取得する前に、カメラが v4l2 デバイスとして認識されているか確認します。ターミナルを開き、以下のコマンドを実行します。ビデオデバイスの数が接続したカメラの数と一致していれば、カメラの認識チェックは完了です。
ls /dev/video*
/dev/video0
/dev/video1
.
.
注釈
ドライバをインストールして再起動した後、カーネルログ (dmesg または syslog) に I2C 書き込みエラー (例: Max9295 I2C write failed) に関連するエラーメッセージが表示される場合があります。これらのエラーは通常、カメラが接続されていないポートに起因するものであり、接続されたカメラが /dev/video* として認識されていれば、無視しても問題ありません。
1.7.2. モジュールパラメータの設定#
カメラドライバの設定を変更するには、/etc/modprobe.d/tier4-*.conf ファイルを編集します (例: C1/C1-MP の場合は tier4-isx021.conf、C2/C2-MP の場合は tier4-imx490.conf、C3 の場合は tier4-imx728.conf)。
設定ファイルには、以下のような行が含まれています。
# /etc/modprobe.d/tier4-isx021.conf
options tier4_isx021 trigger_mode=0 enable_auto_exposure=1 enable_distortion_correction=1
これらのフラグを編集した後、変更を適用するにはシステムを再起動する必要があります。
1.7.2.1. レンズ歪み補正 (LDC) の有効化/無効化#
注釈
この設定は、TIER IV Automotive HDR Camera で共通です。
enable_distortion_correction フラグを変更することで、レンズ歪み補正 (LDC) 機能を有効または無効にできます。
LDCを有効にする場合:
enable_distortion_correction=1(デフォルト)LDCを無効にする場合:
enable_distortion_correction=0
1.7.2.2. 自動露出 (AE) の有効化/無効化#
注釈
この設定は C1/C1-MP のみに適用されます。他のカメラは AE モードで固定されています。シャッター時間を固定するには、shutter_time_min と shutter_time_max を同じ値に設定してください。
AEを有効にする場合:
enable_auto_exposure=1(デフォルト)AEを無効にする場合:
enable_auto_exposure=0
1.7.2.3. 露光時間の設定#
1.7.2.3.1. C1/C1-MP の場合#
ユーザーは shutter_time_min、shutter_time_mid、および shutter_time_max という変数を使用して、3種類の露光時間を指定できます。実際の露光時間は、照度に応じてこれら3つの値(および線形補間された値)を遷移します。値は**マイクロ秒 (µs)**単位で指定します。任意の照度条件下で露光時間を固定するには、3つの変数すべてに全く同じ値を設定します。例 (露光時間を 11 ms に固定する場合):
shutter_time_min=11000 shutter_time_mid=11000 shutter_time_max=11000
1.7.2.3.2. C2/C2-MP、C3 の場合#
C2/C2-MP および C3 では、shutter_time_min と shutter_time_max を使用して2種類の露光時間を設定できます (マイクロ秒単位)。例 (露光時間を 11 ms に固定する場合):
shutter_time_min=11000 shutter_time_max=11000
その他のパラメータ調整については、t4cam_ctrl ユーザーマニュアルを参照してください。
1.7.3. ドライブモードの設定 (フリーラン / トリガーモード)#
カメラのドライブモードは、設定ファイルの trigger_mode 変数を編集することで設定できます。すべてのカメラモデル (C1/C1-MP、C2/C2-MP、C3) は、統一されたドライブモードのセットを共有しています。
使用している ECU が FSYNC をサポートしている場合 (例: ADLINK RQX-58G / RQX-59G、Connect Tech Anvil)、トリガーモードでのカメラ動作には GMSL2 経由でのトリガー信号入力が必要です。
警告
トリガーモードにはECUからの FSYNC 入力が必要です。 Jetson AGX Orin/Xavier Developer Kit または Vecow EAC-5000 には FSYNC 入力機能がないため、これはサポートされていません。これらの ECU でデフォルト設定から変更すると、予期しない動作を引き起こす可能性があります。
1.7.3.1. ドライブモードの定義#
フリーランモード: カメラが自律的に動作し、内部でシャッターを切ります。
トリガーモード: カメラは ECU からのトリガー信号 (FSYNC) に同期して動作します。同期対象に応じて2種類のトリガーモードがあります。
Readout sync (読み出し同期): カメラはトリガー信号に同期して ECU への画像出力を開始します。
Shutter sync (シャッター同期): カメラはトリガー信号に同期してシャッターを開始します。
1.7.3.2. 設定テーブル#
trigger_mode の値を設定することで、目的のモードを選択できます。
trigger_mode |
ドライブモード |
ターゲット FPS |
許容される FSYNC 周波数 |
対応カメラ |
0 |
フリーランモード |
10fps |
該当なし |
全て |
1 |
トリガーモード (Readout sync) |
10fps |
5 < f <= 10 fps |
C1/C1-MP, C2/C2-MP |
2 |
フリーランモード |
20fps |
該当なし |
全て |
3 |
トリガーモード (Readout sync) |
20fps |
10 < f <= 20 fps |
C1/C1-MP, C2/C2-MP |
4 |
フリーランモード |
30fps |
該当なし |
全て |
5 |
トリガーモード (Readout sync) |
30fps |
15 < f <= 30 fps |
C1/C1-MP, C2/C2-MP |
6 |
トリガーモード (Shutter sync) |
FSYNC に依存 |
f <= 30 fps |
C1/C1-MP、C3 |
1.7.3.3. 同期仕様の詳細 (Shutter Sync vs. Readout Sync)#
自動運転システムなどの車載アプリケーションでは、複数のカメラや他のセンサー(LiDARやレーダーなど)間で高精度なキャプチャ同期を行う必要があります。TIER IV 車載 HDR カメラは、イメージセンサーのアーキテクチャに応じて2種類のトリガー同期機構をサポートしています。
1.7.3.3.1. 1. Shutter Sync#
サポートするカメラ: C1/C1-MP, C3
同期の仕組み: カメラは、ECUからGMSL2経由で外部トリガー信号(FSYNC)を受信すると、即座にシャッター(露光)を開始します。FSYNC信号が入力されない場合、カメラは画像を出力しません。
タイミングチャート:
図 1.9 Shutter Sync (シャッター露光同期) タイミングチャート#
1.7.3.3.2. 2. Readout Sync#
サポートするカメラ: C1/C1-MP, C2/C2-MP
同期の仕組み: FSYNC信号は露光の開始タイミングではなく、画像の読み出し(Readout)タイミングの調整またはトリガーとして機能します。カメラは内蔵の同期タイミングとFSYNC受信タイミングの時間差を測定し、画像の読み出しタイミングを調整します(この調整はFSYNC受信から2フレーム後に反映されます)。露光は、カメラの設定またはユーザーが設定した露出時間に基づいて、読み出しの前に自動的に開始されます。FSYNC信号が入力されない場合、カメラは通常のFree-runモードとして元々設定されているフレームレートで自動的に画像を連続出力します。
タイミングチャート:
図 1.10 Readout Sync タイミングの調整#
図 1.11 Readout Sync タイミング調整のフレーム#
1.7.3.4. ECU固有のトリガーパラメータ#
トリガーモード (Readout sync または Shutter sync) を使用する場合、一部の ECU では FSYNC 機能を有効にするために設定ファイルに追加の fsync_mfp パラメータが必要です。
Connect Tech Anvil:
fsync_mfp=7に設定Syslogic RML-A4AGX:
fsync_mfp=6に設定
Anvil の設定例: options tier4_isx021 trigger_mode=1 enable_auto_exposure=1 fsync_mfp=7
1.7.3.5. トリガーモードの準備 (ADLINK RQX-58G / RQX-59G 固有)#
ADLINK RQX-58G / RQX-59G のようなサポートされている ECU でカメラをトリガーモードで動作させる場合、ストリームを開始する前に特定の準備が必要になることがあります。
ターミナルで以下のコマンドを実行し、RQX-58G / RQX-59G の HW バージョンを確認してください:
i2cget -f -y 2 0x66 0x01
ストリーミングを開始する前に以下のコマンドを実行してください。システム起動後、この準備は1回だけ必要です。
i2cset -f -y 2 0x66 0x04 0xff
準備は不要です。
1.7.4. カメラ画像の取得 (v4l2-ctl)#
注意
トリガーモードの場合、トリガー信号がカメラに正常に出力されていないと画像の取得が確認できません。
ターミナルで以下のコマンドを入力することで、画像の取得が正常に行われているか確認することができます:
v4l2-ctl --stream-mmap -d /dev/video0
以下の様に表示された場合、カメラから画像が正常に取得できています。
$ v4l2-ctl --stream-mmap -d /dev/video0
<<<<<<<<<<<< 10.00 fps
<<<<<<<<<<<< 10.00 fps
<<<<<<<<<<<< 10.00 fps
:
:
1.7.5. カメラ画像の取得 (GStreamer)#
ターミナルを開いて以下のコマンドを実行し、GStreamer を使用した画像取得を開始します。新しいウィンドウが開き、カメラの画像が表示されます。
注意
C2/C2-MP および C3 カメラの帯域幅制限: 使用する ECU (例: ADLINK RQX-58G/59G) によっては、2台の C2/C2-MP または C3 カメラを単一のデシリアライザボード (例: ポート1と2など) に同時に接続すると、帯域幅の制限を超えてストリーミングが失敗する場合があります。ポートの割り当ての推奨事項については、お使いの ECU 固有のインストールガイドを参照してください。
注釈
GStreamer起動スクリプトを利用することもできます。
no element "v4l2src"というエラーメッセージが表示された場合は、~/.cache/gstreamer-1.0ディレクトリを削除してから、再度コマンドを実行してください。
1.7.5.1. 例1: C1/C1-MP カメラ1台での評価#
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.12 カメラ画像データ取得の例#
1.7.5.2. 例2: 複数の C1/C1-MP カメラでの評価#
カメラ4台の場合:
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
カメラ8台の場合: 同じパターンに従って v4l2src device=/dev/video4 から video7 までを追加します。
1.7.5.3. 例3: C2/C2-MP カメラ1台での評価#
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.7.5.4. 例4: C3 カメラ1台での評価#
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
例5: FPSの確認 (fpsdisplaysink) 映像を表示しながら FPS の設定を確認するには、fpsdisplaysink エレメントを使用します:
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' ! fpsdisplaysink video-sink=xvimagesink sync=false
1.7.6. 画像データの録画#
GStreamer を使用して、H.265 でエンコードしながら画像データを録画できます。ビットレート、ファイル名、その他のパラメータは、必要に応じて変更してください。
例1: C1/C1-MP カメラ1台での録画
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: C1/C1-MP カメラ2台での録画
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/C2-MP および C3 カメラの場合は、width、height、framerate の設定を適切に変更してください:
C2/C2-MP の場合は
width=2880、height=1860C3 の場合は
width=3840、height=2160、framerate=20