RPi5 / Orange Pi / Orin / Thor
調校能力 = 平台 ISP 可調參數 × 工具鏈完整度 × 可視性。三者相乘才是「你能實際做到什麼」。
| 項目 | RPi5 | Orange Pi | Orin Nano | Thor T5000 |
|---|---|---|---|---|
| ISP 形態 | SoC 硬體 ISP | 感測器內建為主 | NVIDIA ISP | Blackwell + Holoscan |
| AE/AWB | libcamera ✅ | sensor ⚠️ | NVIDIA 自動 ✅✅ | NVIDIA ✅✅ |
| LSC | ✅ tuning json | ⚠️ 有限 | ✅ NVIDIA | ✅ NVIDIA |
| NR/Sharpen | ✅ 可調 | ⚠️ 後處理 | ✅✅ | ✅✅ |
| HDR | ✅ 多幀 | ⚠️ | ✅ | ✅✅ |
| 工具鏈 | 開源、看得見 | v4l2-ctl 陽春 | NVIDIA 封閉 | Holoscan 新 |
| tuning 檔 | libcamera .json | — | 私有 | 私有 |
| 學習性 | 最佳 | 陽春開放 | 不透明 | 新且高階 |
用 OV5640/OV9281 在四個平台,實務差異在哪:
| 面向 | RPi5 | Orange Pi | Orin Nano | Thor |
|---|---|---|---|---|
| 感測器控制介面 | libcamera controls | V4L2 subdev controls | tegracam / Argus | tegracam / Holoscan |
| 曝光設定 | ExposureTime(µs) | exposure(驅動單位) | SensorMode exp_time | SensorMode |
| 白平衡 | ColourGains | red/blue_balance | Argus AWB | Argus AWB |
| RAW 取得 | rpicam-still --raw | v4l2-ctl + 自行解 | argus raw | argus/Holoscan |
| LSC | tuning json | 後處理 | NVIDIA 工具 | NVIDIA 工具 |
無論平台,OV 感測器的 register 是相同的(0x300A ID、0x3500 曝光、0x350A 增益)——平台差異只在「誰幫你寫」。這正是「先懂 register、再懂平台」的價值。
# 都是 OV5640/OV9281 的 ID register 0x300A RPi5: i2ctransfer -y 22 w2@0x36 0x30 0x0a r1 Orange Pi: i2ctransfer -y 3 w2@0x3c 0x30 0x0a r1 Orin/Thor: i2ctransfer -y 0 w2@0x36 0x30 0x0a r1 # 差別只在匯流排編號與位址,register 相同
| 你在 RPi5 做的事 | NVIDIA 對應 |
|---|---|
| libcamera controls | Argus / tegracam controls |
| tuning json | NVIDIA 內部 tuning |
| rpicam-still --raw | argus raw / v4l2 |
| i2ctransfer 讀 register | 一樣(register 相同) |
場景:你在 RPi5 和 Orin Nano 上各接一顆 OV9281(黑白、global shutter),要比較兩者在機器視覺場景下的表現。
# RPi5:用 libcamera 控制 OV9281 rpicam-still --raw --width 1280 --height 800 \ --shutter 10000 --gain 1 -o rpi5_ov9281.dng # Orin Nano:用 argus_camera # argus_camera --width 1280 --height 800 --exp-time 10000 \ # --file orin_ov9281.nvraw # 兩端都轉換成 RAW 後比較 python3 - <<'EOF' import rawpy, numpy as np rpi = rawpy.imread('rpi5_ov9281.dng').raw_image print(f"RPi5 OV9281: mean={rpi.mean():.1f} std={rpi.std():.1f} max={rpi.max()}") # Orin 的 raw 需要 NVIDIA 工具轉換後再比較 EOF
四個平台在 ISP 參數控制的「粒度」上有本質差異:
| 參數類別 | RPi5 | Orange Pi | Orin Nano | Thor T5000 |
|---|---|---|---|---|
| Black Level | 4 通道各自獨立 | 感測器驅動控制 | NVIDIA 內部 | Holoscan 內部 |
| LSC 網格 | 17×13 或自訂 | 有限(後處理) | 自訂(NVIDIA 工具) | 自訂 |
| CCM | 3×3 矩陣,分色溫 | 固定或有限 | 自動 + 微調 | 自動 + AI |
| NR kernel | 可調 strength | 固定 | 可調 kernel 大小 | AI 驅動 |
| Sharpen | 可調 strength | 固定 | 可調 | AI 驅動 |
| HDR 幀數 | 2-3 幀 | 有限 | 可調 | 可調 |
NvIspAttribute 或 Argus controls。概念相同(ExposureTime → SensorMode exposure_time),API 不同。sensor_isp_config 或 ISP tuning file。格式完全不同,但參數類別對應。v4l2-ctl 或 nvgstcapture。功能類似但介面不同。argus_camera 和 tegracam 有完全不同的 API 和參數命名。從 RPi5 轉到 NVIDIA 時,你需要重新學「介面」,但不需要重新學「原理」——這就是本課程的核心價值。| 症狀 | 可能原因 | 解決方案 |
|---|---|---|
| RPi5 調好的 CCM 在 Orin 上色彩偏移 | 兩平台的 ISP 管線順序不同,色彩空間轉換有差異 | 在 Orin 上重新校正 CCM;不要直接複製 RPi5 的參數 |
| NVIDIA 的自動 AE 比 RPi5 的手動 AE 快很多 | NVIDIA 有專用 AE 硬體加速,RPi5 用 software | 這是硬體差異,非缺陷;RPi5 可優化 convergence 參數 |
| RPi5 的 tuning JSON 在 Orin 上無法使用 | JSON 格式完全不同(libcamera vs NVIDIA) | 需要「翻譯」——理解參數含義後,在 Orin 的對應工具中設定 |
| 同一顆 OV5647 在四平台上的色彩不同 | 各平台的 ISP 參數/增益映射/色彩空間定義不同 | 這是正常的;每個平台需要獨立校正 |
| Thor 的 AI tuning 效果比 RPi5 手動好 | AI 模型在大量資料上訓練,可能在「平均品質」上更優 | 但 RPi5 的手動 tuning 在「特定場景」可能更精準——各有優劣 |
場景:公司要為「智慧農業視覺系統」選平台,候選 RPi5 / Orange Pi / Orin Nano / Thor。你負責用本課程的框架(能力 × 工具鏈 × 可視性)做評估,並以同一顆感測器實測佐證。整合單元 15(比較)、9(架構)、11/12/13(品質指標)知識。
# 以 OV5647 為共同感測器,評測四平台 平台 ΔE(色彩) 暗角比 σ(雜訊) 工具鏈 可視性 NDA需求 RPi5 2.1 0.93 1.8 開源齊全 高 無 Orange Pi 3.2 0.90 2.2 陽春 中 無 Orin Nano 2.4 0.92 1.9 封閉自動 低 部分 Thor 2.0 0.94 1.7 Holoscan新 低 是 # 加權評分(依需求自訂權重) # 學習/教學 → 可視性 0.5:RPi5 勝 # 量產自動化 → 工具鏈 0.5:Orin/Thor 勝 # 客製深調 → 可調參數 0.5:RPi5 勝 # 結論範例: # 首代產品驗證 → RPi5(快、看得見) # 量產部署 → Orin Nano(自動化、穩定) # Thor 待生態成熟再評估
| 面向 | RPi5 | Orange Pi | Orin Nano | Thor |
|---|---|---|---|---|
| 定位 | 學習/原型/教育 | 低成本 DIY | 工業/多感測器/GMSL | 次世代 AI/HSB |
| 成本 | 低 | 最低 | 中高 | 高 |
| 調校自由度 | 最高 | 中 | 低(自動化) | 低(AI) |
| 上手速度 | 快 | 中 | 中(需 NDA) | 慢(生態新) |
| 坑 | 單一 ISP 管線 | 驅動品質不一 | 封閉、綁 NVIDIA | 文件少、貴 |
| 功能 | RPi5 register | Orin equivalent | 差異說明 |
|---|---|---|---|
| AE target | libcamera YAML: ae.target_brightness | 3A XML: aeTargetBrightness | 格式不同,RPi5 用 YAML,Orin 用 XML |
| AWB mode | libcamera YAML: awb.mode | 3A XML: awbMode | RPi5 選項較少 |
| LSC enable | ISP control bit[3] | NV ISP register | RPi5 直接操作硬體 register |
| NR strength | ISP tuning register | NV 3A tuning XML | RPi5 需 devmem2,Orin 有 GUI 工具 |
| Sharpen | ISP tuning register | NV sharpen control | RPi5 可直接寫 register |
決策樹 A:跨平台調校結果不一致
跨平台不一致 ├─ 檢查 A:tuning 檔案格式差異 │ ├─ RPi5 YAML vs Orin XML → 手動翻譯等效參數 │ └─ 格式相同 → 繼續 ├─ 檢查 B:ISP pipeline 模組差異 │ ├─ RPi5 缺少某些模組 → 功能不完全等效 │ └─ 模組相同 → 繼續 ├─ 檢查 C:sensor 輸出格式差異 │ ├─ 位元深度/Bayer 順序不同 → 調整 raw processing │ └─ 相同 → 繼續 └─ 檢查 D:量化指標是否在容差內 ├─ PSNR >30dB, ΔE <5 → 差異可接受 └─ 超出容差 → 需要針對該平台獨立 tuning
| 面向 | RPi5 | Orange Pi | Orin Nano | Thor | 推薦 |
|---|---|---|---|---|---|
| 調校工具成熟度 | ★★★★ | ★★ | ★★★★★ | ★★★★ | Orin 工具最成熟 |
| 調校自由度 | ★★★★ | ★★ | ★★★★★ | ★★★★★ | Orin/Thor 最自由 |
| 學習曲線 | 中等 | 低 | 高 | 很高 | RPi5 最適合學習 |
| 調校文件 | ★★★★★ | ★★ | ★★★★ | ★★ | RPi5 文件最好 |
| 社群支援 | ★★★★★ | ★★ | ★★★★ | ★★ | RPi5 社群最活躍 |
| 調校一致性 | baseline | 偏差較大 | ±可接受 | ±可接受 | 以 RPi5 為 baseline |