APEX AD10 GMSL相机#

接口说明#

  • 不支持热插拔

  • 支持最长15米同轴电缆的信号传输

  • 推荐支持输出分辨率为720p,1080p,4k等多种分辨率的相机

推荐使用转接线

节点映射关系#

接口

设备节点

GMSL 0

/dev/video0

GMSL 1

/dev/video1

GMSL 2

/dev/video2

GMSL 3

/dev/video3

GMSL 4

/dev/video4

GMSL 5

/dev/video5

GMSL 6

/dev/video6

GMSL 7

/dev/video7

GMSL相机试用,可以利用历史相机调试的驱动,快速验证相机功能。但由于没有经过充分测试,可能存在问题。

选择GMSL相机试用#

选择试用,使能功能#

选择对应的相机,来进行测试#

视频输出#

可以使用下列命令,快速打开相机来确认效果。

显示单路720P的相机#

gst-launch-1.0 -v v4l2src device="/dev/video1" ! video/x-raw,width=1280,height=720,format=UYVY ! xvimagesink

显示单路1080P的相机#

gst-launch-1.0 -v v4l2src device="/dev/video0" ! video/x-raw,width=1920,height=1080,format=UYVY ! xvimagesink

显示四路1080p相机#

#这里以相机的分辨率为1920x1080为例,在Ubuntu桌面下的终端按顺序执行下面的命令
#设置显示的宽度和高度,可以自定义
MIIVII_WIDTH=960
MIIVII_HEIGHT=540
 #设置四个相机的图像格式以及实际的图像宽高 MIIVII_WIDTH=960
MIIVII_CONFIG="video/x-raw(memory:NVMM),format=(string)UYVY, width=1920, height=1080"
gst-launch-1.0 nvcompositor name=comp \
    sink_0::xpos=0 sink_0::ypos=0 sink_0::width=$MIIVII_WIDTH sink_0::height=$MIIVII_HEIGHT \
    sink_1::xpos=$MIIVII_WIDTH sink_1::ypos=0 sink_1::width=$MIIVII_WIDTH sink_1::height=$MIIVII_HEIGHT \
    sink_2::xpos=0 sink_2::ypos=$MIIVII_HEIGHT sink_2::width=$MIIVII_WIDTH sink_2::height=$MIIVII_HEIGHT \
    sink_3::xpos=$MIIVII_WIDTH sink_3::ypos=$MIIVII_HEIGHT sink_3::width=$MIIVII_WIDTH sink_3::height=$MIIVII_HEIGHT \
    ! "video/x-raw(memory:NVMM),width=1920,height=1080" \
    ! nv3dsink \
    nvv4l2camerasrc device=/dev/video2 ! nvvidconv ! comp.sink_0 \
    nvv4l2camerasrc device=/dev/video3 ! nvvidconv ! comp.sink_1 \
    nvv4l2camerasrc device=/dev/video4 ! nvvidconv ! comp.sink_2 \
    nvv4l2camerasrc device=/dev/video5 ! nvvidconv ! comp.sink_3

GMSL​相机问题排查#

原则#

米文只保证从硬件接口拿到数据的帧率是正常的,用户自行设计的程序进行计算的帧率不能作为判断异常的标准,应当使用业内常用的工具或者大家认可的标准进行测试。

建议使用v4l2-ctl命令(安装命令: sudo apt install v4l-utils)进行帧率测试。

故障排查具体方法#

现象一:相机可正常点亮,但图像帧率与相机手册帧率不符#

排查项一:使用v4l2-ctl工具验证出图#

相机插到米文设备上,并在websetting正确配置相机型号。 打开终端,输入命令:

v4l2-ctl --verbose -d /dev/video0 --set-fmt-video=width=1920,height=1080,pixelformat=UYVY --stream-mmap

上述指令假如相机分辨率为:1920x1080,插入的相机口为:video0,客户可按自身实际情况进行改动。

如上图,ts:33.327ms  即相机帧率为30HZ。

  • 多次执行,如使用v4l2-ctl帧率均与相机手册不符合,建议客户与相机厂商沟通固件版本是否正确。

  • 如存在丢帧问题,建议检查硬件链路链接,如硬件链路正常,则执行”排查项二:收集log信息”。

排查项二:抓取log#

将设备连接外网后,打开终端输入:

curl -sSL https://doc.miivii.com/scripts/run_miivii_diagnostic.sh | sudo bash -s gmsl

并将日志以及/var/log下文件导出,上传至故障工单中,交由米文技术支持。

现象二:相机无法修改帧率#

排查项一:确认相机是否支持外触发#

步骤1:询问相机厂家相机是否支持外触发#

  • 如支持外触发则执行”排查项二:使用v4l2-ctl工具验证帧率是否被修改”。

  • 如不支持外触发,则不支持修改帧率。

排查项二:使用v4l2-ctl工具验证帧率是否被修改#

步骤1:同”现象一”中”排查步骤一”#

  • 如确认未修改成功,则执行”排查项三”。

  • 如帧率与修改的帧率相符,则需要排查自身应用程序。

排查项三:小幅度修改帧率,尝试能否修改成功#

步骤1:使用sdkdemo修改小范围帧率(相比默认帧率相差5FPS之内的帧率)#

  • 如可修改成功,则建议客户咨询相机厂商相机固件支持的帧率修改范围。

  • 如不可修改成功则执行”排查项四:确保相机的同步信号正常在输出”。

根因解释:

由于CMOS硬件限制,即使是同一家相机厂商的不同产品,可以支持的相机修改的帧率也是不同的,这里给一个大致的区分,凡是支持外触发相机的都可以参考(以CMOS的供应商进行区分):

1 2 OV相机的CMOS最低帧率通常是默认的一半+1,如何识别是否是OV的CMOS?例如:相机名称中携带OX08B/OX03C/OV10640等带OX/OV字样的。 2 ONSEMI的CMOS通常支持1-30FPS的帧率调整,如何识别是否是ONSEMI的CMOS?例如:相机名称中携带AR0233/AR0820/AR0147等带AR字样的。 2 SONY的CMOS比较特殊,没有特定的特点,常见的如IMX系列,通常只支持固定帧率输出(例如 IMX390,IMX477,IMX728),如ISX系列,通常支持默认帧率的一半+1(例如ISX031,ISX021)。

排查项四:确保相机的同步信号正常在输出#

步骤1:检查sdk是否正常运行#

1、查看终端是否有报错信息。 2、使用sdkdemo打印时间戳,查看触发是否正常.

  • 如无报错信息且时间戳正常,建议客户询问相机厂商该型号相机是否支持修改帧率。

  • 如有报错信息,则执行”排查项五-步骤2:抓取log信息”。

排查项五:重新刷写镜像验证是否为软件环境导致#

步骤1:刷写镜像#

刷写镜像方法:https://doc.miivii.com/Apex-AD10-User-Manual-CH/wiki/Apex-AD10-%E5%9B%BA%E4%BB%B6%E7%83%A7%E5%86%99.html

  • 刷写镜像后,帧率可正常修改,则证明为系统软件环境导致,需要客户自己排查软件环境。

  • 刷写镜像后,帧率仍然无法修改,则执行”步骤2”。

步骤2:抓取log#

将设备连接外网后,打开终端输入:

curl -sSL https://doc.miivii.com/scripts/run_miivii_diagnostic.sh | sudo bash -s gmsl

并将日志以及/var/log下文件导出,上传至故障工单中,交由米文技术支持。