Raspberry Pi V2カメラ・Jetson（Nano/NX Developer Kit)カメラの使い方まとめ

## この記事の目的
・社内でRasPi、Jetsonを使っているが、教材（情報）として作成。
・会社の資料の代替でソフトウェア的に設定・確認が必要な情報を　教材として残しておく。
・HW側からの要望もそれなりに応えて、　ソフトウェアエンジニアの後継者が活用してくれることを期待。
・社内のプラットフォームに置くと置いてけぼりになりそうなので、 いつでもどこでも見られるようにする。

# 目次
[1.なんで使えるの](#1-なんで使えるの)
[2.MIPIとCSIで混乱してます](#2-名前で混乱)
[3.基本的な設定](#3-基本的な設定)
[4.最後に](#4-最後に)


# 1. なんで使えるの

気になるワードもあると思いますが、まずは簡単に列挙します。
（Raspberry Pi は特に記載がなければ RasPiと書記載)
RasPiに使える代表的なカメラは以下の3種になります。

|RasPi カメラ|センサー|センサーメーカ|
|:---|:---|:--|
|V1|OV5647|OmniVision|
|V2|IMX219|SONY|
|HQ|IMX477|SONY|



- このうち、V2についてはSONYのIMX219センサーが採用されており、
こちらのドライバがRasPi、JetsonともにL4T(Linux for Tegra)に含まれているので簡単に動作します。

:::note info

Jetson Nano/NX のHQカメラ対応について
JetPack 4.6より標準機能で使える様になりました（設定は後述)

:::  


- また、両者ともMIPI CSIコネクタを搭載しているのでケーブルの取付も問題ありません。
RasPi でいうV2がJetsonに対応しています。
     - HWでいうとRasPi  カメラV2 がMIPI CSI-2で使えるカメラで、
さらにJetsonも同じような構成となっていて使用可能になっています。
     - さらっと書いていますが、FPC（平たいケーブル）とコネクタ、信号のやり取りも
同じ仕様になっているので、動作させられる訳です。

-RasPi 、Jetsonについて ハードウェア的に詳しく見たい方はこちらを参照ください。


https://www.raspberrypi.com/documentation/accessories/camera.html


https://forums.developer.nvidia.com/t/jetson-nano-hardware-design-documentation/76329


:::note info

Jetson Nano/NX ドキュメントについて
Developer登録しているとJetPack 4.6のドキュメントが参照できます。
(7.1.1、カメラの信号情報Chapter8,図8-1等）

:::  


# 2. 名前で混乱

- RasPi ,Jetson対応カメラを調べると、
両者ともMIPI CSIコネクタを搭載しているのでケーブルの取付も問題ありません。
- RasPi でいうV2カメラがJetsonに対応しています。
   >  -MIPI：モバイル業界プロセッサインターフェイス（MIPI®）規格
   >> スマートフォン、タブレット、ラップトップ等々モバイルデバイスの設計に関する
業界使用を定義しています。それらは中心メンバーであるMIPI Allianceに管理されています。
> - MIPI規格は、MIPID-PHY®、M-PHY®、C-PHY®の3つの固有の物理（PHY）レイヤー仕様があります。
>> -  MIPI D-PHYおよびC-PHY物理層はカメラおよびディスプレイアプリケーションサポート
>> -  高性能カメラ、メモリ、およびチップ間アプリケーションはM-PHY層の上でサポート
   
  - その中にMIPI CSI （Camera Serial Interface）があり、カメラの物理レイヤーオプションを
定めたものがMIPI CSI-2になります。
ホストプロセッサとカメラモジュール間の高速シリアルインターフェイスを使用します。
     - RasPi V2カメラやJetsonに使用するカメラはMIPI CSI-2に対応していてます。、

MIPI CSI-2 各バージョンのサポートの詳細は本家のサイトの表を参照してください。

https://www.mipi.org/current-specifications

- HW技術的に深い興味のある方は「エンジニアの電気屋さん」のサイトを参照下さい。

https://misoji-engineer.com/archives/mipi-csi-2-specification.html

---------------------------------------

# 3. 基本的な設定
## IMX219センサー
- 先ずデバイスが認識しているか確認(Raspberry Pi OS JetPack共通)

```
ls /dev/video0

#または
ls /dev/
```
- Jetsonでの動作確認

```
nvgstcapture
```

- これで映像が出てくればカメラは動作可能だと判断できます。

---------------------------------------

- RasPi での動作確認   

:::note info

raspistill(スチル撮影)、raspivid(ビデオ出力)、raspiyuv(無圧縮静止画撮影）
と分かれていたのが、
Bulls eyeからは
libcamera-〇〇で対応するようになりました。

:::  

- 参照先公式サイト 

https://www.raspberrypi.com/documentation/accessories/camera.html#getting-started

## IMX477（RasPi HQ相当）カメラを使用する場合
- Jetsonでの動作確認

:::note warn
注意
JetPack 4.6から対応です。また、Jetson Nano Developer Kit B01のボードで動作確認しています。
:::

```
cat /etc/nv_tegra_release
＃R32 (Release), REVISION 6.1　であればOK.

#Jetson Nano/NX Developer Kitで IMX477カメラを有効化する
sudo /opt/nvidia/jetson-io/jetson-io.py

#Jetson IOツールが起動してきます。
```
- Jetson IOツールの画面
![deskgamen.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2155177/c1d75699-0ed6-8a27-899c-387acda11499.jpeg)

+ メニューについて Jetson Nano 
    * B01では両方のスロットをどちらかのカメラで統一するか、片側ずつ分けるか設定できます。、
        + 設定が済んだら、保存してリブートする項目を選んでリブートします。
        + コマンドは nvgstcaptureで表示確認できました。

- RasPi 4BでのBulls eyeでの動作設定

```
cat /boot/config.txt
#私は vi 使いなので
sudo vi /boot/config.txt

＃ファイルの末尾に追加
dtoverlay=IMX219
#他のセンサーも記載（公式の一覧にあるものを入力）

```        
-公式のカメラ情報はこちら

https://www.raspberrypi.com/documentation/accessories/camera.html


# 4. 最後に
・調べてみると奥が深いのですが、どこまで掘り下げていくかは
　状況に応じて今後改訂するかによります。