
文章目录前言1.相机相关设置1.1 查看相机指示灯1.2 滤波参数1.3 图像同步TY_BOOL_CMOS_SYNC1.4 SGBM参数影响1.5 取消相机帧率限制1.6 查看相机规格书2.Windows系统环境设置2.1 检查网络环境2.2 设置网卡巨型帧2.3 设置网卡接收与传输缓存区到最大2.4 关闭中断调整2.5 开启流量控制2.6 关闭网卡休眠节能选项2.7 配置系统电源2.8 关闭系统防火墙3.Linux系统环境配置3.1 CPU性能模式配置(最关键3.2 网络传输优化3.2.1 加大网络缓冲区(UDP接收)3.2.2 开启巨型帧确认网卡速率3.2.3 使用网络监控工具检查丢包3.3 应用层帧处理优化3.3.1 打开SDK网络重传3.3.2 关闭图像解析与渲染(测试用3.3.3 增大帧缓冲队列(Frame Buffer)3.4 其他配置及检查项3.5 在Linux环境下为达到最大帧率建议的操作流程3.6 通讯异常排查教程前言根据遵循的1.图漾新出的GM461/GM465/PMD02/PMD03属于新相机范畴有帧率控制和包传输控制以及纹理滤波/饱和度滤波等属性跟相机帧率相关影响帧率因素较多。具体涉及到每个相机的帧率请打开图漾相机规格书下面列举主要影响帧率的因素1.相机相关设置1.1 查看相机指示灯1.首先查看相机的指示灯确认相机是否处于千兆网状态。如网口指示灯不亮请仔细检查是否是千兆网络尤其是是高速运动场景下建议一定要使用高柔千兆网线。1.2 滤波参数图漾GM46X相机受纹理滤波和饱和度滤波影响。开启饱和度滤波(DepthSgbmSaturateFilterEnable)和纹理滤波(DepthSgbmTextureFilterEnable)后深度图像帧率会减半。没有开滤波参数AcquisitionFrameRate可设置的帧率为 [8, 30]。开启滤波参数后AcquisitionFrameRate可设置的帧率为 [4, 15]。1.3 图像同步TY_BOOL_CMOS_SYNC左右ir异步曝光开关。true同步曝光false异步曝光设置方法:ASSERT_OK(TYSetBool(hDevice,TY_COMPONENT_DEVICE,TY_BOOL_CMOS_SYNC,false));验证方法:比如使用FM851-E2相机对比开启和关闭TY_BOOL_CMOS_SYNC后深度图像的帧率, TY_BOOL_CMOS_SYNC false时帧率比TY_BOOL_CMOS_SYNC true时高。1.4 SGBM参数影响减小视差搜索范围(Disparity Number)例如从256减小到128计算时间减半帧率提升。减小用于深度计算的IR图像数量(Image Number)例如从3帧减为1帧帧率提升。减小视差匹配窗口大小窗口越小计算量越小帧率越高。原因DepthSgbmImageNumber(用于深度计算的IR图像数量)越大帧率越低。操作适当减小该值(如从3减为1)可提升帧率但会降低深度图质量。cpp1.5 取消相机帧率限制通过SDK或Viewer看图软件设置AcquisitionFrameRateEnable为 true并设置 AcquisitionFrameRate为目标帧率。一般针对GM46X和PMD相机。1.6 查看相机规格书首先需要查看相机规格书上的帧率图漾官网相机规格书规格书上标注的帧率都是单独打开某个组件测试的帧率。TL460相机帧率测试FM851-E2/FM855-E2-7相机帧率测试FM854相机帧率测试TM461相机帧率测试PS800相机帧率测试PS802相机帧率测试FM855相机帧率测试TM26X相机帧率测试TM421相机帧率测试其他型号的待补充2.Windows系统环境设置推荐使Intel芯片的独立千兆网口例如intel I350、I210等芯片组网卡。2.1 检查网络环境网卡详细信息中确认链接速度为1.0Gbps如速度为100mbps请检查硬件链接和网卡配置。图2-1 检查网络带宽2.2 设置网卡巨型帧图2-2 设置网卡巨型帧不同网卡类型网卡属性有差异需灵活参考图2-3 设置巨型帧2.3 设置网卡接收与传输缓存区到最大说明intel网卡一般为2048realtek一般为512。2.4 关闭中断调整图2-4 关闭中断调整2.5 开启流量控制图2-5 开启流量控制2.6 关闭网卡休眠节能选项网卡类型1网卡属性中找到电源管理取消勾选【允许计算机关闭此设备以节约电源】图2-6 关闭网卡休眠网卡类型2在电源管理中取消【勾选节能以太网】、【系统闲置时降低链接速度】2.7 配置系统电源电源选型设置为高性能模式通过“控制面板 电源选项 高性能图2-7 配置系统电源2.8 关闭系统防火墙图2-8 关闭防火墙关闭Windows防火墙通过“控制面板 Windows防火墙打开或关闭 Windows防火墙。如安装有 360、赛门铁克等防火墙设置请关闭其拦截功能。3.Linux系统环境配置3.1 CPU性能模式配置(最关键Linux系统默认通常为powersave(节能)模式会限制CPU频率导致数据接收和处理速度跟不上。操作步骤查看当前CPU性能模式cat/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor若为powersave则安装切换工具并设为performance模式sudoapt-getinstallindicator-cpufreq# 重启后点击桌面右上角图标将CPU性能切换到 performance重启后注意事项重启上位机后会重新回到powersave模式需要手动再次切换。3.2 网络传输优化3.2.1 加大网络缓冲区(UDP接收)现代GigE相机依赖UDP协议默认缓冲区不足会导致丢帧。临时生效(推荐测试用)sudosh-cecho 33554432 /proc/sys/net/core/rmem_max永久生效(写入配置文件)# 编辑 /etc/sysctl.confsudosh-cecho net.core.rmem_max33554432 /etc/sysctl.confsudosysctl-p也可参考如下sh脚本#!/bin/shOS_NAMEuname--if[$OS_NAMELinux];thenUSER_IDid-u# Check required priviledgeif[$USER_ID!0];thenechoThis script can only be run by root user or sudoerexit1fifiif[$110];thenSIZE10485760elif[$115];thenSIZE15728640elif[$120];thenSIZE20971520elif[$125];thenSIZE26214400elseechouse default mem_max 10MB.SIZE10485760fiechoSetting socket maximum buffer size to$SIZEif[$OS_NAMELinux];thenPROC_ROOT/proc/sys/net/coreif[!-w$PROC_ROOT/wmem_max];thenechoCannot write to$PROC_ROOT/wmem_maxexit1fiif[!-w$PROC_ROOT/rmem_max];thenechoCannot write to$PROC_ROOT/rmem_maxexit1fiecho$SIZE$PROC_ROOT/wmem_maxecho$SIZE$PROC_ROOT/rmem_max# If net.core.rmem_max present in /etc/sysctl.conf, change value to $SIZE# else, add net.core.rmem_max $SIZE to /etc/sysctl.confifgrep--silent^net.core.rmem_max /etc/sysctl.conf;thensed-is/^net.core.rmem_max.*/net.core.rmem_max $SIZE/g/etc/sysctl.confelseecho/etc/sysctl.confechonet.core.rmem_max $SIZE/etc/sysctl.conffiifgrep--silent^net.core.wmem_max /etc/sysctl.conf;thensed-is/^net.core.wmem_max.*/net.core.wmem_max $SIZE/g/etc/sysctl.confelseecho/etc/sysctl.confechonet.core.wmem_max $SIZE/etc/sysctl.conffiexit0fiechoError: unknown platform:$OS_NAMEexit13.2.2 开启巨型帧确认网卡速率确保相机和电脑均连接在千兆(1000Mbps)网络上。检查网卡设置开启Jumbo Frame(巨型帧)设置为9000或9014字节可以提升大帧传输效率。关闭防火墙或确认未阻挡相机数据端口sudoufw disable# 临时关闭sudoufw status# 确认状态3.2.3 使用网络监控工具检查丢包如果条件允许可以使用iperf3或Wireshark评估网络链路质量确认是否存在UDP丢包。图漾相机内置iperf3服务端相机的教程可打开此链接:iperf3学习教程第一步测试时上位机PC为服务端(server执行iperf3-s第二步相机为客户端(client)通过sshrootcameraIP 密码123456 如ssh root192.168.2.178方式进入相机底层运行执行iperf3-c192.168.2.178-u-b1000M-P23.3 应用层帧处理优化3.3.1 打开SDK网络重传在SDK代码中在TYStartCapture()之前添加以下代码可以开启网络重传功能减少因丢包导致的帧率下降。C/C 示例ASSERT_OK(TYSetBool(hDevice,TY_COMPONENT_DEVICE,TY_BOOL_GVSP_RESEND,true));3.3.2 关闭图像解析与渲染(测试用如果测试时需要达到最高帧率可以临时将代码中的parseFrame()以及图像显示/渲染如cv::imshow()部分注释掉避免CPU/GPU负载导致取流阻塞。3.3.3 增大帧缓冲队列(Frame Buffer)驱动内部维护一个缓冲队列(buffer queue)。如果用户取流不及时队列为空新帧会被丢弃导致帧率下降。解决办法增加压入队列的framebuffer 数量(例如从2个增加到6~10个)但会增加内存开销。取流过程单开线程将接收帧数据与图像处理分为两个独立线程避免图像处理耗时导致取流阻塞。3.4 其他配置及检查项排查方向检查内容操作建议电脑休眠是否开启休眠模式关闭休眠/睡眠模式相机电源是否存在掉电(指示灯)检查电源适配器功率是否足够分辨率/后处理是否启用了HDR/滤波/多帧合成先关闭这些功能测试纯原始帧率相机触发模式是否误开启了触发模式确保为连续采图模式链路带宽多相机或高分辨率下数据量是否超过千兆网线带宽考虑降低分辨率或使用万兆网卡相机进入百兆网检查相机Ethernet灯是否常亮若常灭表示处于百兆网检查网线/交换机/网卡配置交换机流控交换机的流控是否打开开启交换机Web功能中的流控设置3.5 在Linux环境下为达到最大帧率建议的操作流程步骤配置项一句话操作1CPU性能关闭powersave切换到performance模式2网络缓冲区将rmem_max设为335544323网卡配置检查是否为千兆并开启巨型帧4代码优化打开网络重传、增加buffer数量、优化数据处理线程5测试验证关闭不必要的图像渲染/滤波检查帧率是否提升3.6 通讯异常排查教程可打开如下学习链接Ubuntu系统网络基础# 查看当前值临时生效 cat/proc/sys/net/core/rmem_max cat/proc/sys/net/core/wmem_max # 查看持久化配置 grep net.core/etc/sysctl.conf # 测试重启后是否保留模拟 sudo sysctl-p#1.查看当前缓冲区大小确认25MB已生效 cat/proc/sys/net/core/rmem_max #2.持续监控丢包是否还在增加 watch-n1ifconfig eth0 | grep RX#3.查看详细丢包原因内核层面 ethtool-S eth0|grep-i drop #4.查看网卡队列/中断分布 ethtool-l eth0 # 查看队列数 cat/proc/interrupts|grep eth0 # 看是否单核处理 #5.查看网卡环缓冲区大小 ethtool-g eth0除了socket buffer还可以调大网卡环缓冲区(Ring Buffer)# 查看当前 ethtool-g eth0 # 调大(示例具体最大值看 ethtool-g 的 Pre-set maximums)sudo ethtool-G eth0 rx4096tx4096