Difference between revisions of "Mv series camera appnotes 4 jetson/zh"
(→系统状态检测) |
(→系统状态检测) |
||
Line 220: | Line 220: | ||
具体应用参考下面的应用范例。 | 具体应用参考下面的应用范例。 | ||
=== 系统状态检测 === | === 系统状态检测 === | ||
− | + | 完成系统更新后,重启Jetson主板。 | |
+ | |||
+ | Jetson系统启动过程中,会检测所有i2c bus上摄像头是否存在,如果存在则生成/dev/videoX设备节点。 | ||
在Jetson板端执行以下命令来检测是否正确连接摄像头。 | 在Jetson板端执行以下命令来检测是否正确连接摄像头。 | ||
Line 228: | Line 230: | ||
可以看到linux启动阶段probe到的相机型号和以及相机的版本号: | 可以看到linux启动阶段probe到的相机型号和以及相机的版本号: | ||
− | + | 比如下面这个提示,表示在i2c-10总线上检测到了MV-MIPI-IMX178M摄像机。 | |
<code>mvcam 10-003b: camera is: MV-MIPI-IMX178M</code> | <code>mvcam 10-003b: camera is: MV-MIPI-IMX178M</code> | ||
<code>mvcam 10-003b: firmware version: 0x1080103</code> | <code>mvcam 10-003b: firmware version: 0x1080103</code> | ||
+ | |||
+ | ==== /dev/videoX设备节点 ==== | ||
+ | 摄像头模组在Jetson系统中映射为/dev/videoX设备节点。 | ||
+ | |||
+ | 操作系统启动过程中,按照i2c bus从小到大的顺序探测摄像头。X值是按照探测的逻辑顺序从0开始递增的。 | ||
+ | |||
+ | 举例说,如果只接入一个摄像头,无论硬件连接到哪个位置,X都为0。如果接入5个,则按照i2c bus从小到大,X为[0-4]。 | ||
+ | |||
+ | v4l2-ctl命令中,使用<code>-d /dev/videoX</code>来访问不同的摄像头。 | ||
+ | |||
+ | gstreamer中,v4l2src可以通过指明<code>device=/dev/videoX</code>来访问不同的摄像头。 | ||
=== v4l2-ctl 应用范例 === | === v4l2-ctl 应用范例 === | ||
− | < | + | =====安装v4l2-utils===== |
+ | <code>sudo apt-get install v4l-utils</code> | ||
+ | =====yavta安装===== | ||
+ | <code>git clone <nowiki>git://git.ideasonboard.org/yavta.git</nowiki></code> | ||
+ | |||
+ | cd yavta;make | ||
+ | |||
+ | ===== 使用v4l2-ctl配置参数 ===== | ||
+ | |||
+ | ====== 列出相机支持的数据格式 ====== | ||
+ | <code>v4l2-ctl --list-formats-ext</code> | ||
+ | |||
+ | 下面是在XAVIER系统的例子: | ||
+ | |||
+ | <code>ioctl: VIDIOC_ENUM_FMT</code> | ||
+ | |||
+ | <code> Index : 0</code> | ||
+ | |||
+ | <code> Type : Video Capture</code> | ||
+ | |||
+ | <code> Pixel Format: 'UYVY'</code> | ||
+ | |||
+ | <code> Name : UYVY 4:2:2</code> | ||
+ | |||
+ | <code> Size: Discrete 3088x2064</code> | ||
+ | |||
+ | <code> Interval: Discrete 0.045s (22.000 fps)</code> | ||
+ | |||
+ | <code> Index : 1</code> | ||
+ | |||
+ | <code> Type : Video Capture</code> | ||
+ | |||
+ | <code> Pixel Format: 'NV16'</code> | ||
+ | |||
+ | <code> Name : Y/CbCr 4:2:2</code> | ||
+ | |||
+ | <code> Size: Discrete 3088x2064</code> | ||
+ | |||
+ | <code> Interval: Discrete 0.045s (22.000 fps)</code> | ||
+ | |||
+ | <code> Index : 2</code> | ||
+ | |||
+ | <code> Type : Video Capture</code> | ||
+ | |||
+ | <code> Pixel Format: 'GREY'</code> | ||
+ | |||
+ | <code> Name : 8-bit Greyscale</code> | ||
+ | |||
+ | <code> Size: Discrete 3088x2064</code> | ||
+ | |||
+ | <code> Interval: Discrete 0.045s (22.000 fps)</code> | ||
+ | |||
+ | <code> Index : 3</code> | ||
+ | |||
+ | <code> Type : Video Capture</code> | ||
+ | |||
+ | <code> Pixel Format: 'XY10'</code> | ||
+ | |||
+ | <code> Name : XAVIER 10-bit/16-bit Greyscale</code> | ||
+ | |||
+ | <code> Size: Discrete 3088x2064</code> | ||
+ | |||
+ | <code> Interval: Discrete 0.045s (22.000 fps)</code> | ||
+ | |||
+ | <code> Index : 4</code> | ||
+ | |||
+ | <code> Type : Video Capture</code> | ||
+ | |||
+ | <code> Pixel Format: 'XY12'</code> | ||
+ | |||
+ | <code> Name : XAVIER 12-bit/16-bit Greyscale</code> | ||
+ | |||
+ | <code> Size: Discrete 3088x2064</code> | ||
+ | |||
+ | <code> Interval: Discrete 0.045s (22.000 fps)</code> | ||
+ | |||
+ | 需要特别说明的是,MV系列相机提供的UYVY和NV16模式仅作调试使用,且最大宽度不能超过2880。 | ||
+ | |||
+ | ====== 列出驱动中实现的相机的可配置参数 ====== | ||
=== i2c脚本使用说明 === | === i2c脚本使用说明 === |
Revision as of 17:15, 18 May 2022
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异面线连接,注意接触面向外。
2.2 使用ADP-MV1的连接方式(以Xavier NX为例)
2.2.1 供电
ADP-MV1需要独立的5V供电,可以使用杜邦线直接从Jetson主板取电。
2.2.2 使用ADP-MV1连接(以Xavier NX为例)
Nano系列和NX系列采用这种连接方式。
2.3 使用ADP-N4的连接方式(以AGX Xavier为例)
TODO
3 更新Jetson系统
本章节描述怎样更新Jetson的L4T系统以支持MV摄像头模组。操作系统更新方法,请参考更新Jetson操作系统。
特别的,对于MV系列相机,除了在linux系统中增加了摄像头的驱动,我们还增加了一个内核补丁——veye_mv_l4t_32.7.1.patch。
这个patch具备两个功能:
- 增加了黑白相机的Y10和Y12两种数据格式的支持。
- 增加了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。