Jetson Orin Nanoカメラモジュール選び方と接続方法まとめ
Jetson Orin Nanoでカメラを使いたいけれど、どのモジュールを選べばいいか迷っている方は多いはずです。CSIカメラとUSBカメラの違い、接続方法、動作確認コマンドまで実機で試した内容をまとめました。
この記事でわかること
—
Jetson Orin Nanoで使えるカメラの種類
Jetson Orin Nanoに接続できるカメラは大きく2種類あります。
CSI接続カメラ(ミピーカメラ)
CSI(Camera Serial Interface)は、Raspberry Piのカメラモジュールでも採用されている規格です。Jetson Orin Nanoには22ピンのCSIコネクタが搭載されており、対応したカメラモジュールを15pin-22pin変換ケーブルで接続して使います。
特徴をまとめると以下のとおりです。
USB接続カメラ(UVCカメラ)
UVC(USB Video Class)に対応したUSBウェブカメラです。ドライバ不要で接続直後から使えるものが多く、手軽さが魅力です。
カメラモジュール Raspberry Pi Camera Module V2(Amazon) は用途によって選ぶべきものが変わってきます。物体検出や推論をリアルタイムで行うなら、低レイテンシのCSIカメラが有利です。プロトタイプや検証用途であればUSBカメラで十分なケースも多いです。
—
CSIカメラの接続方法と動作確認
対応モジュールの確認
JetsonシリーズでよくつかわれるCSIカメラには以下があります。
NVIDIA公式でサポートしているのはIMX219/IMX708ベースのモジュールです。JetPack 6.x系ではIMX219/IMX708のドライバが標準で含まれているので、特別なDevice Tree設定で使えます。Orin Nano Super Developer Kit(67TOPS)では最大4K/60fpsの処理が可能。
CSIカメラの物理的な接続手順
1. Jetson Orin Nanoの電源を切る
2. ボード上のCSIコネクタのロックを引き上げる
3. 15pin-22pin変換ケーブルの金属端子面を確認し、向きを合わせて差し込む
4. ロックを押し下げてケーブルを固定する
5. 電源を入れてOSを起動する
ケーブルの向きを間違えると認識しないだけでなく、最悪の場合センサーを破損します。金属端子面の向きは必ず確認してください。
GStreamerで映像を確認する
接続後、以下のコマンドで映像が出るか確認します。
gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! \
'video/x-raw(memory:NVMM), width=1280, height=720, framerate=30/1' ! \
nvvidconv ! \
'video/x-raw, format=BGRx' ! \
videoconvert ! \
autovideosink
映像ウィンドウが表示されれば接続成功です。nvarguscamerasrcはJetson専用のGStreamerプラグインで、CSIカメラの映像取得に使います。sensor-idでCAM0/CAM1を指定。
OpenCVでCSIカメラを開く
Pythonで扱う場合は以下のコードを使います。
import cv2
def gstreamer_pipeline(width=1280, height=720, fps=30):
return (
f"nvarguscamerasrc sensor-id=0 ! "
f"video/x-raw(memory:NVMM), width={width}, height={height}, "
f"framerate={fps}/1 ! "
f"nvvidconv ! video/x-raw, format=BGRx ! "
f"videoconvert ! video/x-raw, format=BGR ! appsink"
)
cap = cv2.VideoCapture(gstreamer_pipeline(), cv2.CAP_GSTREAMER)
while True:
ret, frame = cap.read()
if not ret:
break
cv2.imshow("CSI Camera", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
GStreamerパイプラインを文字列として渡すのがポイントです。cv2.VideoCapture(0)のような番号指定だけではCSIカメラが開けないことがあります。
—
USBカメラの接続方法と動作確認
デバイスの確認
USBカメラを挿したあと、以下のコマンドでデバイスが認識されているか確認します。
ls /dev/video*
/dev/video0や/dev/video1が表示されれば認識されています。
どのデバイスがどのカメラか確認したい場合は以下を実行します。
v4l2-ctl --list-devices
OpenCVでUSBカメラを開く
import cv2
cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1280)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 720)
while True:
ret, frame = cap.read()
if not ret:
break
cv2.imshow("USB Camera", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
USBカメラはデバイス番号で指定できるので、CSIカメラより扱いが簡単です。
—
カメラが認識しないときのチェックリスト
実機で試していて詰まりやすいポイントをまとめます。
CSIカメラが認識しない場合
ls /dev/video*
dmesg | grep -i camera
nvarguscamerasrcのデーモンが動いているか確認する
sudo systemctl status nvargus-daemon
停止していた場合は以下で起動します。
sudo systemctl start nvargus-daemon
USBカメラが認識しない場合
lsusbでOS側でデバイスが見えているか確認する
lsusb
—
用途別のカメラ選びまとめ
| 用途 | 推奨カメラ | 理由 |
|——|———–|——|
| 物体検出・リアルタイム推論 | CSIカメラ(IMX219/IMX708) | 低レイテンシ、ISPによる前処理が使える |
| 顔認識・人物追跡 | CSIカメラまたは広角USBカメラ | 画角の広さで選ぶ |
| ドキュメントスキャン・静止画処理 | 高解像度USBカメラ | 取り回しの良さ |
| プロトタイプ・動作確認 | UVC対応USBウェブカメラ | ドライバ不要、すぐ試せる |
Jetson Orin Nanoで物体検出を動かす場合、カメラの選択がパフォーマンスに直接影響します。本番運用に近い環境を作るなら、CSIカメラ Raspberry Pi Camera Module V2(Amazon) を最初から選んでおくほうが後から作業が少なくなります。
NVMe SSD Western Digital SN770 500GB NVMe(Amazon) と組み合わせてシステムを高速化しておくと、カメラ映像を処理しながら推論する構成も安定して動きます。
—
まとめ
Jetson Orin Nanoで使えるカメラはCSIとUSBの2種類があり、それぞれ特徴が異なります。手軽に始めるならUSBカメラ、低レイテンシや推論との組み合わせを重視するならCSIカメラが適しています。
CSIカメラは物理的な接続とGStreamerパイプラインの書き方に慣れるまでに時間がかかりますが、一度動かせてしまえばその後の開発はスムーズです。カメラが認識しない場合はnvargus-daemonの状態確認とケーブルの向きを最初にチェックしてみてください。
—
次はこちら
カメラを接続したら、次はリアルタイム物体検出に挑戦してみましょう。

コメント