Mv series camera appnotes 4 jetson/zh

From wiki_veye
Jump to navigation Jump to search

English

1 概述

MV系列相机是为工业领域的AI应用推出的相机。其使用MIPI CSI-2接口,尤其适合嵌入式运算平台使用。它具备丰富的数据格式和触发特性,极低的延时,极高的带宽和可靠的稳定性。

本文介绍了如何在英伟达Jetson平台使用MV系列相机。

1.1 支持的摄像机模组

系列 型号 状态
MV系列 MV-MIPI-IMX178M 完成

1.2 支持的Jetson Board

Jetson型号 状态
Nano A02 完成
Nano B01 完成
Nano 2GB 完成
TX2 NX 完成
XAVIER NX 完成
TX2 Devkit 开发中
AGX Xavier 开发中
Orin系列 开发中

1.3 支持的L4T版本

  • Jetpack4.6.1,L4T版本r32.7.1
1.3.1 怎样查看当前L4T版本

在jetson板子上,查看当前L4T版本,尽量使用同一版本进行替换。

cat /etc/nv_tegra_release

如显示:

# R32 (release), REVISION: 7.1......

则表示当前L4T版本为32.7.1,对应的Jetpack版本是Jetpack32.6.1。

2 硬件准备以及安装

MV系列相机需要转接板才可以接入Jetson平台。支持情况如下表:

Jetson型号 转接板 摄像机数量 供电
Nano A02 ADP-MV1 1 5V DC(必须)
Nano B01 ADP-MV1 1 5V DC(必须)
Nano 2GB ADP-MV1 2 5V DC(必须)
TX2 NX ADP-MV1 2 5V DC(必须)
XAVIER NX ADP-MV1 2 5V DC(必须)
TX2 Devkit ADP-N4 6 12V DC (可选)
AGX Xavier ADP-N4 6 12V DC (可选)
Orin系列 TODO TODO TODO

下面以MV-MIPI-IMX178M为例,介绍硬件的安装方法。

2.1 MV-MIPI-IMX178M与ADP-MV1的连接

二者使用0.5mm间距*30P的FFC异面线连接,注意接触面向外。

ADP-MV1 to MV-MIPI-X


2.2 使用ADP-MV1的连接方式(以Xavier NX为例)

2.2.1 供电

ADP-MV1需要独立的5V供电,可以使用杜邦线直接从Jetson主板取电。

ADP-MV1 power supply


2.2.2 使用ADP-MV1连接(以Xavier NX为例)

Nano系列和NX系列采用这种连接方式。

MV camera and Xavier NX connection


2.3 使用ADP-N4的连接方式(以AGX Xavier为例)

TODO

3 更新Jetson系统

本章节描述怎样更新Jetson的L4T系统以支持MV摄像头模组。操作系统更新方法,请参考更新Jetson操作系统

特别的,对于MV系列相机,除了在linux系统中增加了摄像头的驱动,我们还增加了一个内核补丁——veye_mv_l4t_32.7.1.patch。

这个patch具备两个功能:

  1. 增加了黑白相机的Y10和Y12两种数据格式的支持。
  2. 增加了trigger模式的支持。

3.1 raw data图片格式说明

在TX2和XAVIER上,10 bit depth和12 bit depth的raw data在内存中的存储格式是不符合V4L2标准的。我们扩展了linux内核中的定义以支持这种情况。

TY10、TY12、XY10和XY12是我们新增的类型。

3.1.1 Nano
Depth Bit order FourCC Enumerator
8 B7 B6 B5 B4 B3 B2 B1 B0 GREY V4L2_PIX_FMT_GREY
10 0 0 0 0 0 0 B9 B8 B7 B6 B5 B4 B3 B2 B1 B0 'Y10 ' V4L2_PIX_FMT_Y10
12 0 0 0 0 B11 B10 B9 B8 B7 B6 B5 B4 B3 B2 B1 B0 'Y12 ' V4L2_PIX_FMT_Y12
3.1.2 TX2
Depth Bit order (X is undefined) FourCC Enumerator
8 B7 B6 B5 B4 B3 B2 B1 B0 GREY V4L2_PIX_FMT_GREY
10 0 0 B9 B8 B7 B6 B5 B4 B3 B2 B1 B0 X X X X TY10 V4L2_PIX_FMT_TX2_Y10
12 0 0 B11 B10 B9 B8 B7 B6 B5 B4 B3 B2 B1 B0 X X TY12 V4L2_PIX_FMT_TX2_Y12
3.1.3 XAVIER
Depth Bit order (X is undefined) FourCC Enumerator
8 B7 B6 B5 B4 B3 B2 B1 B0 GREY V4L2_PIX_FMT_GREY
10 0 B9 B8 B7 B6 B5 B4 B3 B2 B1 B0 X X X X X XY10 V4L2_PIX_FMT_XAVIER_Y10
12 0 B11 B10 B9 B8 B7 B6 B5 B4 B3 B2 B1 B0 X X X XY12 V4L2_PIX_FMT_XAVIER_Y12

同时,我们提供了工具软件,以便将特殊的数据格式转为标准格式。https://github.com/veyeimaging/pixel_layer_convert

3.2 Trigger模式的支持

Jetson系统的默认驱动只支持视频流模式。在其VI驱动中,数据接收功能具有超时机制。我们增加了一个可设的vi_time_out_disable选项,可以动态打开和关闭这个超时机制。

具体应用参考下面的应用范例。

4 系统状态检测

完成系统更新后,重启Jetson主板。

Jetson系统启动过程中,会检测所有i2c bus上摄像头是否存在,如果存在则生成/dev/videoX设备节点。

在Jetson板端执行以下命令来检测是否正确连接摄像头。

dmesg | grep mvcam

可以看到linux启动阶段probe到的相机型号和以及相机的版本号:

比如下面这个提示,表示在i2c-10总线上检测到了MV-MIPI-IMX178M摄像机。

mvcam 10-003b: camera is: MV-MIPI-IMX178M

mvcam 10-003b: firmware version: 0x1080103

4.1 /dev/videoX设备节点

摄像头模组在Jetson系统中映射为/dev/videoX设备节点。

操作系统启动过程中,按照i2c bus从小到大的顺序探测摄像头。X值是按照探测的逻辑顺序从0开始递增的。

举例说,如果只接入一个摄像头,无论硬件连接到哪个位置,X都为0。如果接入5个,则按照i2c bus从小到大,X为[0-4]。

v4l2-ctl命令中,使用-d /dev/videoX来访问不同的摄像头。

gstreamer中,v4l2src可以通过指明device=/dev/videoX来访问不同的摄像头。

5 v4l2-ctl 应用范例

5.1 安装v4l2-utils

sudo apt-get install v4l-utils

5.2 yavta安装

git clone git://git.ideasonboard.org/yavta.git

cd yavta;make

5.3 使用v4l2-ctl配置参数
5.3.1 列出相机支持的数据格式

v4l2-ctl --list-formats-ext

下面是在XAVIER系统的例子:

ioctl: VIDIOC_ENUM_FMT

        Index       : 0

        Type        : Video Capture

        Pixel Format: 'UYVY'

        Name        : UYVY 4:2:2

                Size: Discrete 3088x2064

                        Interval: Discrete 0.045s (22.000 fps)

        Index       : 1

        Type        : Video Capture

        Pixel Format: 'NV16'

        Name        : Y/CbCr 4:2:2

                Size: Discrete 3088x2064

                        Interval: Discrete 0.045s (22.000 fps)

        Index       : 2

        Type        : Video Capture

        Pixel Format: 'GREY'

        Name        : 8-bit Greyscale

                Size: Discrete 3088x2064

                        Interval: Discrete 0.045s (22.000 fps)

        Index       : 3

        Type        : Video Capture

        Pixel Format: 'XY10'

        Name        : XAVIER 10-bit/16-bit Greyscale

                Size: Discrete 3088x2064

                        Interval: Discrete 0.045s (22.000 fps)

        Index       : 4

        Type        : Video Capture

        Pixel Format: 'XY12'

        Name        : XAVIER 12-bit/16-bit Greyscale

                Size: Discrete 3088x2064

                        Interval: Discrete 0.045s (22.000 fps)

需要特别说明的是,MV系列相机提供的UYVY和NV16模式仅作调试使用,且最大宽度不能超过2880。

5.3.2 列出驱动中实现的相机的可配置参数

6 i2c脚本使用说明

7 参考资料

8 本文修改记录