MRDVS算法检测功能使用手册
1.简介
本文主要介绍迈尔微视应用算法部署及使用。
2.检测系统组成
系统包括相机、算法上位机软件和工控机一套。
3.相机硬件部署指南
使用相机类型
相机类型 | S10Pro 3D相机 |
相机用户手册 ↓ S10Pro ToF相机 |
相机算法支持
M4pro | S10 | S10 Pro | |
人体检测 | √ | ||
库位检测 | √ | ||
体积检测 | √ | √ |
雷达
雷达类型 | mid360 |
相机安装方式
相机需要通过支架进行固定,可采用下图所示的安装方式和相机支架进行相机安装。如下图为安装示意图。

安装示意图
人体检测功能一般选取倾斜(小于30°)或水平角度安装。
相机连接
相机24V供电,通过超 6 类 / 7 类网线连接,相机安装部署后,通过笔记本电脑打开库位检测上位机软件,进行相机的外参标定和检测范围设置。算法会实时在相机内部运行。
多台相机部署,需通过千兆交换机进行连接,相机根据 CAD 中规划的安装高度,将 3D 视觉相机通过安装支架安装到固定位置,保证相机固定牢固。相机安装完成后,接入 24V 稳压直流电源,并使用对应的网线与交换机或主控连接。
准备完成后将相机视野范围内的库位摆上货物,进行软件部署。

相机网络配置
1.以Win10系统为例,双击控制面板
2.进入控制面板后,点击“查看网络状态和任务”。

3.进入网络和共享中心界面,点击“更改适配器设置”。

4.进入网络连接界面,鼠标双击选择相机连接的以太网。

5.查看以太网状态(建议使用千兆网口),并点击“属性”按钮。

6.进入以太网属性界面,找到“Internet协议版本4(TCP/IPv4)”,双击打开。

7.进入Internet协议版本4(TCP/IPv4)界面,选择“使用下面的IP地址”,进行IP地址和子网掩码和默认网关的书写。

8.IP地址设置:192.168.100.xxx 子网掩码:255.255.255.0 默认网关:192.168.100.1,如下图设置好的IP,设置完成后点击“确定”按钮。

9.点击确定按钮后,会自动回退到上一个界面,再次点击“确定”,完成网络配置。

防火墙关闭确认
在 Windows 防火墙中按项目要求放行相机软件及通信端口。下方旧版截图仅用于定位设置入口;部署时保持防火墙开启。
以Win10系统为例,双击桌面的【控制面板】,进入后点击【系统和安全】。
|
|
点击【Windows Defender防火墙】按钮进入防火墙页面。

在 Windows 防火墙中按项目要求放行相机软件及通信端口。下方旧版截图仅用于定位设置入口;部署时保持防火墙开启。

在 Windows 防火墙中按项目要求放行相机软件及通信端口。下方旧版截图仅用于定位设置入口;部署时保持防火墙开启。

4.相机软件安装指南
软件安装流程
第一次使用软件,可以参照如下流程完成操作。

算法上位机软件运行环境要求
建议运行库位检测上位机设备满足要求。
操作系统 | Windows10 及以上 |
CPU | 建议 Intel® Core™ i5 七代及以上 |
内存 | 8G 及以上 |
GPU | Intel® UHD Graphics/核显以上 |
安装相机上位机软件
相机上位机软件可通过迈尔微视知识库进行获取并下载。点击进行下载→软件下载

双击进行安装Lanxin-MRDVS上位机软件,需要上位机安装在c盘以外。

选择使用的语言后,点击【确定】,选择C盘以外的安装目录,并点击【下一步】。

勾选【创建桌面快捷方式】,点击【下一步】。

点击【安装】按钮,开始安装软件。

安装完毕后,可运行相机上位机软件。

安装算法上位机软件
将获得的算法上位机软件,复制到相机上位机 \Lanxin-MRDVS\Tools 中。

替换时,选择【替换目标中的文件】。

双击点开即可运行软件。
左侧设备列表栏,相机状态处于 黄色 表示相机没有启动检测算法。

算法上位机软件升级
算法上位机软件升级,仅需要替换“.exe”文件。
算法升级
注:升级算法固件前,需确保相机固件为MDS版本。
相机上位机
相机算法升级需要打开相机上位机软件,双击【LxCameraViewer.exe】。

点击【打开】按钮,进行查看相机成像。

点击基础工具→功能设置→【固件升级】,进行检测算法刷入。(算法请找技术支持人员获取)

点击【执行】按钮后,选择“检测算法”,点击【打开】按钮,开始算法刷入。

算法上位机
使用算法上位机软件进行固件升级,需要选择相机。首先点击左侧设备列表中需要升级的相机,再点击【升级固件 】。

选择“检测算法”,点击【打开】按钮,开始算法刷入。

升级结果
算法刷入过程中,相机会重新启动,左侧设备列表相机ID会消失,待重新显示后,表示刷入成功。

升级完毕后,在算法上位机软件上,对应相机背景显示为绿色。

5.算法上位机软件界面
算法上位机程序启动
双击【 LxApplicationViewer.exe 】程序,启动算法上位机软件。

设备列表。绿色图标表示相机已正常连接,点击可切换至相应相机的视角。
信息列表。此列表将展示所有与相机相关的操作记录及其结果。
显示模式切换。选择RGB模式将展示2D图像,而选择点云模式则显示3D点云。
功能菜单。在此菜单中,您可以切换当前的显示算法,调整算法的基础设置,配置相机参数,或更改界面语言。
基础功能。可切换以管理算法参数,普通用户仅具备查看权限。不同算法在此处将展示额外的参数和控制选项。此外,管理员还可以切换当前执行的算法。
相机操作。可直接对相机进行一些操作。
当前用户选择管理员,无需输入密码,直接点击确认进入管理员模式(用户模式无法进行算法参数设置)。

基础工具
基础工具主要包含用户切换、理想地面、外参地面、显示缓存、算法显示、导出存图、历史回放。

基础工具 | 功能含义 |
用户切换 | 切换权限,用户权限:仅查看检测结果。 管理员权限:可进行相机配置、检测算法参数配置等 |
理想地面 | 地面参照水平线,可关闭。 |
外参地面 | 相机外参标定高度的水平面,可关闭。 |
显示缓存 | 无需修改。 |
显示算法 | 当前所使用的算法。 |
导出存图 | 导出存储的图像。 |
历史回放 | 查看RGB和TOF的图像日志。 |
应用算法切换 | 选择需要使用的算法,普通管理员最多同时执行一种算法,选择后点击 保存并下发 |
检测结果显示 | 显示当前显示算法的检测结果。 |
语言
中英文进行切换。
状态栏

状态栏 | 功能含义 |
RGB | 勾选后,查看RGB图像 |
点云 | 勾选后,查看点云图像 |
停止算法 | 点击停止算法后,在下一次相机上电前,不会启动算法。 |
升级固件 | 进行算法固件升级。 |
重启相机 | 将相机重新启动。 |
回放查看
每次状态切换的时候都会保存一帧数据,保存为切换瞬间的一帧RGB图像和点云数据,不同的算法之间的回放不互通。时间标准为相机内部系统时间,请勿按照电脑系统时间来判断。
点击查看回放,弹出的窗口左边为回放图片,单击任意一项可以打开对应日期的回放数据,可以查看RGB图片或者TOF数据。
全局功能
请确保算法已在相机中激活,并且相机在正常使用条件下,通过相机上位机配置参数后出现故障。在以下情形下,应启用自动刷新功能。
(1)若设备列表中对应相机的背景显示为黄色,这表明算法在图像获取过程中遇到阻塞。
(2)若设备列表中对应相机的背景为绿色,但图像不更新,这同样意味着算法在图像获取过程中受阻,尽管通信正常,系统持续发送缓存数据。
6.相机外参标定
相机配置

相机设置 | 功能含义 |
相机名称 | 修改当前相机的名称,当有多台时,可通过相机名称进行判断。 |
仿真模式 | 内部使用,用户无需打开。 |
存图模式 | 开启算法存图,在相机内部进行存储图片数据。 |
取图模式 | 取图模式分为MDS和SDK,采用MDS不会占用相机权限,可正常打开相机上位机,采用SDK会占用相机权限,运行算法时,无法打开上位机。 |
x | 相机标定的x位置 |
y | 相机标定的y位置 |
z | 相机标定的距离地面高度z |
roll | 相机标定的角度 |
pitch | 相机标定的角度 |
yaw | 相机标定的角度 |
理想地面 | 默认即可。 |
保存并下发 | 外参标定完成后,通过点击【保存并下发】按钮进行保存,否则参数不生效 |
从相机读取配置 | 从相机读取当前配置参数 |
外参标定 | 标定相机距离地面高度、相机roll、pitch、yaw角度。 |
垂直安装外参标定
点击相机配置,切换到参数标定界面,进行外参标定前,要保证x、y、z、roll、pitch、yaw为0,如果非0,需要将所有参数归0,并点击【保存并下发】按钮,参数保存成功后,重新进行外参标定。

确认参数均为0后,点击【外参标定】按钮,标定成功后,软件会弹出提示框。在右侧参数栏中可以看到已经标定的相机参数。不同的算法会有相对于的对齐方案。

水平安装外参标定
点击相机配置,切换到参数标定界面。水平安装时需要手动将地面点云对齐坐标系,一般只需要调整roll和Z大小,其它默认先置0,同时确保X轴(红) Y轴(绿)与地面点云重合,且Z轴(蓝)垂直于地面点云朝上。
调整完毕后,点击 保存并下发。


7.算法参数含义
人体检测
人体检测全局配置

人体检测全局配置 | 功能含义 |
算法版本号 | 当前算法版本信息。 |
检测频率 | 算法检测频率。即多少ms刷新图像+结果数据。 |
时域滤波 | 滤波参数,当参数值设为3时,系统要求连续3次检测结果完全一致,才会判定为有效数据。 |
核大小 | 在2D图像上腐蚀膨胀核大小,大核会显著缩小目标或扩大背景,小核则保留更多细节,按需更改。 |
距离阈值 | 用于判断两个数据点是否“相似”或“属于同一类别”,若结果小于阈值则视为匹配或同类。 |
最小点数量 | 语义聚类所需要的最小点云数量。 |
无语义最小点数量 | 无语义聚类所需要的最小点云数量。 |
领域大小 | 决定哪些点被视为“相邻点”,直接影响聚类结果的颗粒度和准确性。按需修改。 |
旋转检测 | 根据相机的安装位置设置,正面0° logo在下方,以此为依据调整。 |
人体检测区域配置

人体检测区域配置 | 功能含义 |
增加区域 | 添加人体检测区域。 |
删除区域 | 删除人体检测区域。 |
当前框 | 框选当前人体检测区域。 |
最小X | 人体检测框X方向最小值。 |
最大X | 人体检测框X方向最大值。 |
最小Y | 人体检测框Y方向最小值。 |
最大Y | 人体检测框Y方向最大值。 |
最小Z | 人体检测框Z方向最小值。 |
最大Z | 人体检测框Z方向最大值。 |
ID | 人体检测框的名称。当绘制多个人体检测区域时,可通过修改ID名称进行区分。 |
鼠标拖动调整区域 | 在调整区域内,左键按住,可拖动人体检测区域x、y方向平移。右键按住,可拖动人体检测区域z方向移动。 |
库位检测
库位检测全局配置

库位检测全局配置 | 功能含义 |
算法版本号 | 当前算法版本信息。 |
AI过滤 | 支持语义,可将人进行分割,不进行检测。(暂未开放) |
检测频率 | 算法检测频率。 |
对齐角度 | 允许物体相对于库位最大的偏移角度(对齐效验开启情况下生效)。 |
对齐效验 | 对齐效验开启后,会检测当前物体角度偏移以及是否超出绘制的检测区域,检测到的物体会有黄色体积框。 |
时域滤波 | 滤波参数,当参数值设为3时,系统要求连续3次检测结果完全一致,才会判定为有效数据。 |
最小点数量 | 当物体点云大于最小点数量才认为有物体。 |
库位检测区域配置(2D RGB)

库位检测区域配置 | 功能含义 |
增加库位 | 添加库位检测区域。 |
删除库位 | 删除库位检测区域。 |
当前框 | 框选当前库位检测区域。 |
最小X | 库位检测框X方向最小值。(单位像素) |
最大X | 库位检测框X方向最大值。(单位像素) |
最小Y | 库位检测框Y方向最小值。(单位像素) |
最大Y | 库位检测框Y方向最大值。(单位像素) |
ID | 库位检测框的名称。当绘制多个库位检测区域时,可通过修改ID名称进行区分。 |
库位检测区域配置(3D点云)

库位检测区域配置 | 功能含义 |
增加库位 | 添加库位检测区域。 |
删除库位 | 删除库位检测区域。 |
当前框 | 框选当前库位检测区域。 |
最小X | 库位检测框X方向最小值。 |
最大X | 库位检测框X方向最大值。 |
最小Y | 库位检测框Y方向最小值。 |
最大Y | 库位检测框Y方向最大值。 |
最小Z | 库位检测框Z方向最小值。 |
最大Z | 库位检测框Z方向最大值。 |
ID | 库位检测框的名称。当绘制多个库位检测区域时,可通过修改ID名称进行区分。 |
鼠标拖动调整区域 | 在调整区域内,左键按住,可拖动库位检测区域x、y方向平移。右键按住,可拖动库位检测区域z方向移动。 |

库位检测高级功能——库位框拷贝 | 功能含义 |
拷贝当前框 | 可拷贝当前选择的库位检测区域。 |
拷贝平移需知 | 拷贝平移内容提示。 |
方向 | 拷贝库位检测区域方向,共有X、Y、Z三个方向。 |
间距 | 库位检测区域与拷贝区域间距。 |
数量 | 拷贝库位检测区域的数量。 |
执行 | 点击执行按钮后,拷贝复制出多个间距相同的检测库位区域。 |
库位检测高级功能——QR Code标定 | 功能含义 |
QR Code标定需知 | QR Code标定内容提示。 |
X | 库位宽度。 |
Y | 库位长度。 |
Z_MIN | 库位最低深度。 |
Z_MAX | 库位最高检测位置。 |
标定 | 点击标定按钮,即可标定出二维码校验的库位。 |
体积检测
体积检测全局配置

体积检测全局配置 | 功能含义 |
算法版本号 | 当前算法版本信息。 |
触发模式 | 触发开关按钮,当将触发模式开启后,点击“保存并下发”按钮,即成功开启。 |
向上检测 | 相机坐标系反向检测。 |
检测频率 | 算法检测的频率。即多少ms刷新图像+结果数据。 |
检测平面距离 | 确认物体下表面位置。单位:mm。 |
邻域数量阈值 | 滤波参数,无需更改。默认值即可。 |
邻域距离阈值 | 滤波参数,无需更改,默认值即可。 |
法向量滤波阈值 | 物体边缘圆角滤波参数,用于过滤点云倾斜平面,如测出体积比实际偏小,可调大该数值,推荐60(一般无需调整)。 |
法向量距离阈值 | 滤波参数,推荐值20-30(可兼容大部分检测物体)。 |
最小点数量 | 当物体点云 大于 最小点数量才认为有物体。 |
最小X | 物体最小长度,若测出小于此值,算法会将该物体过滤。单位:mm。 |
最小Y | 物体最小宽度,若测出小于此值,算法会将该物体过滤。单位:mm。 |
最小Z | 物体最小高度,若测出小于此值,算法会将该物体过滤。单位:mm。 |
体积检测区域配置

体积检测区域配置 | 功能含义 |
最小X | 体积检测框X方向最小值 |
最大X | 体积检测框X方向最大值 |
最小Y | 体积检测框Y方向最小值 |
最大Y | 体积检测框Y方向最大值 |
最小Z | 体积检测框Z方向最小值 |
最大Z | 体积检测框Z方向最大值 |
8.算法部署流程
注:打开算法上位机软件后,切换为点云视图后,将鼠标移动到图像显示区域,滑动鼠标滚轮,即可显示点云数据。
8.1人体检测部署流程
人体检测——外参标定
详细见6.3 水平安装外参标定。
标定结束后,需确保X轴(红色箭头)Y轴(绿色箭头)与地面点云重合,Z轴(蓝色箭头)垂直于地面点云朝上。

人体检测——全局设置

点击人体检测,进入参数设置,主要调整全局旋转检测,其他参数默认。旋转检测与相机安装角度相关,相机顺时针旋转限于0°、90°、180°、270°。
全局配置设置完成后,要点击【保存并下发】按钮,可将参数保存到相机。
人体检测——区域配置
1.检测范围设置,调整检测的长宽(xy)建议先切换到上下视图, 如下为各视图的快捷键。
2.点击【增加检测区域】按钮,在检测区域配置下方,会增加检测区域数量和检测区域的ID名称。
3.修改创建好的检测区域最大XYZ轴大小可以直接确认一个检测区域大小。如下图创建了一个1000*1000*2000的检测区域(单位mm)。
通过鼠标在标注区域拖动可以将创建好的检测区域拖动到目标检测区域。


5.将检测区域配置好后,点击【保存并下发】按钮,将参数保存到相机内部,即可开始检测当前区域。
人体检测结果查看
将外参标定、人体检测参数、人体检测区域设置好后,点击“基础工具”,测试在检测区域走动即可查看结果。当前检测区域无人,在基础功能栏会显示没有检测到任何目标。


当有人走入区域后,在人体检测状态显示栏会显示检测到指定目标,在软件最下方,会显示Result结果,1代表有人。


人体检测日志查看
当人体检测状态有变化时,点击历史回放,点击左侧需要查看的时间,可供查看该时间的有效视野范围内物体变动情况。详见 5.5回放查看。
人体检测结果判定
匹配规则仅深度情况下会检测所有物体,语义加深度情况下只会判断语义为人的聚类。
下表为不同情况下Result的输出结果
无人 | 有人 | 有障碍物 | 人 +障碍物 | |
仅深度 | 0 | 2 | 2 | 2 |
语义加深度 | 0 | 1 | 0 | 1 |
库位检测部署流程
库位检测——外参标定
详见6. 相机外参标定。
标定结束后,需确保X轴(红色箭头)Y轴(绿色箭头)与地面重合,Z轴(蓝色箭头)垂直于地面朝上。

库位检测——全局设置
点击库位检测,切换到库位检测参数设置页面,全局配置中需关注对齐角度、对齐效验、最小点数量。
若库位中物品的摆放需遵循特定角度,建议打开对齐效验,并设定相应的对齐角度。一旦物品角度超出预设阈值,系统将输出相应的检测结果。
状态 | Result结果 |
无物体 | 0 |
有物体 | 1 |
有物体角度超过对齐角度(开启对齐效验) | 2 |
有物体超出库位框选范围(开启对齐效验) | 3 |
在对库位中小型货物进行识别时,若存在识别顾虑或误判风险,建议采用“最小点数量”参数进行筛选。该参数指定了识别物体所需的最低点云数目阈值,当检测到物体但其点云数目未达到此阈值时,该物体将被排除在识别结果之外。
全局配置设置完成后,要点击【保存并下发】按钮,可将参数保存到相机。
库位检测——库位配置
点云模式库位设置
检测范围设置,调整检测的长宽(xy)建议先切换到上下视图, 如下为各视图的快捷键。

将托盘在视野内,点击【增加库位】按钮,在库位配置下方,会增加库位数量和库位的ID名称。我们可以对ID进行修改,当前修改为“库位测试1”。


点击“增加库位”后,将点云切换为下视图,鼠标点击点云图像,按键盘【X】键,进行库位的区域绘制,按【X】时“增加库位”按钮会变为灰色,代表可以在图像显示区域内绘制库位区域。(键盘x键位开始库位绘制和节数库位绘制功能,按一下开始绘制,在按一下结束绘制)

此时,可以通过滚轮滑动将图像放大,按住鼠标左键,绘制的矩形框,将整个托盘包裹住后,松开鼠标左键,就会自动绘制出当前库位检测区域。在按键盘【X】按钮,取消检测区域绘制。此时可通过调节最大最小X、Y、Z来确认区域尺寸范围(画完库位后,如果区域框选没问题,一定要按【X】进行取消库位绘制,如果不取消,可能导致画的库位失败)。

通过键盘快捷键切换到下视图,如下图所示,红色箭头所指表示检测范围的x方向,鼠标滚轮滚动即可修改对应数值,完成检测范围长宽调整。当前将x方向略大于托盘宽度。

绿色箭头表示检测范围的y方向,鼠标滚轮滚动即可修改对应数值,完成检测范围长宽调整。当前将y方向略大于托盘长度。

蓝色箭头所指,表示检测范围的z方向,鼠标滚轮滚动可修改数值,也可直接输入数值,当前检测范围最小z值建议设置比地面距离略高出一些,防止将地面误检测。将最大z设置为1500,最大高度根据物体的大小设定。如果物体高度超出最大z值,算法不会进行检测。

将检测区域配置好后,点击【保存并下发】按钮,将参数保存到相机内部,即可开始检测当前库位有无货物。

RGB模式库位设置
1.切换至RGB显示模式,点击增加库位,鼠标移动到RGB图像上,
鼠标左键单击检测区域即可创建一个2D库位检测区域,右键退出2D库位创建模式。

2.如需要删除库位,则在当前框选择需要删除的框id,相对于的库位id在图像上会显示出来 ,点击删除库位即可。
3.鼠标放至库位检测区域中间(蓝色箭头位置)可拖动检测区域移动,放至库位检测区域四个角(红色箭头位置)鼠标左键拖动可以修改检测区域大小。
4.确认库位位置后需要点击 【保存并下发】将库位位置保存至相机才会生效,确认是否保存成功查看库位status 是否为 saved,未保存为not saved。
5.2D库位检测仅支持语义模式,需要搭配语义模型进行检测。
库位检测——高级设置
高级功能——拷贝库位
点击【拷贝平移需知】,会提示平移相关信息。拷贝库位方便用户在实际部署中根据CAD图纸设计好库位后,绘制一个库位区域,即可进行多个拷贝,无需在重新手动绘制。

当前设置为X方向,间距为10,数量为2。点击执行按钮,会提示,是否确认执行拷贝平移。

点击yes后,会在x正方向生成两个相同尺寸的库位,间距为10,在库位列表框可以看到生成的库位区域基于原库位检测ID在后缀增加(0)、(1)。

设置为Y方向,间距为-40,数量为3。点击执行按钮,会在y负方向生成3个相同尺寸的库位。库位列表框ID在原有(0)、(1)基础上增加了(2)、(3)、(4)。

拷贝库位完成后,需要点击【保存并下发】按钮,对参数进行保存,否则参数不生效
高级功能——QR标定(二维码标定)
QR(二维码)标定,可以模拟实际库位部署场景,继续库位区域自动绘制,无需手动绘制,可让用户方便部署。二维码板建议1m×1m以上。点击【QR Code标定需知】,会提示标定流程。

将二维码标定板置于目标区域,切换到RGB图像,确保在 RGB 视野中能看到二维码。

二维码在视野中央后,切换至点云图像,找到【QR Code】标定栏。预先输入库位大小 X(库位宽度)、Y(库位长度)、Z_min(库位最低深度)、Z_max(库位最高深度),

再点击【标定】按钮,可基于QR设置好的X、Y、Z自动将库位绘制而出,通过库位配置区域框可进行查看。QR_BOX为QR二维码设置的区域框。

QR Code二维码标定完成后,需要点击【保存并下发】按钮,否则参数不会生效。
库位检测结果查看
1.将外参标定、库位检测参数、库位检测区域设置好后,点击“基础工具”,在检测区域内放入物体即可查看结果。当前为无物体,在基础功能栏会显示无任何物体。
2.当前放入托盘后,在库位状态显示栏会显示当前库位有货,在软件最下方,会显示Result结果,1代表有货。
3.开启对齐效验后,在软件最下方,会显示Result结果,2代表有货物但是有角度偏移。
4.开启对齐校验后,在软件最下方,会显示Result结果,3代表有货物但是超出库位检测区域。红色框表示库位检测区域,黄框表示检测到的物体。
库位检测日志查看
当库位状态有变化时,点击历史回放,点击左侧需要查看的时间,可供查看该时间的有效视野范围内物体变动情况。详见5.5回放查看。
库位检测结果判定
绘制检测区域,判断货物存在性、偏移角度及越界状态。
通过获取的Result结果,对货物的状态进行判断。
状态 | 结果 |
无货 | 0 |
有货 | 1 |
有货且对齐(打开对齐效验) | 1 |
有货且未对齐(打开对齐效验) | 2 |
有货且出界(打开对齐效验) | 3 |
在启用对齐校验功能的条件下,将物体置于检测区域的边界位置,Result输出结果为3,此结果表明货物已超出界限并占据了库位空间。
体积检测部署流程
体积检测——外参标定
详见 6.2垂直安装外参标定
标定完成后要确保坐标轴Z轴(蓝色箭头)垂直向下,X(红色箭头)轴 Y(绿色箭头)轴组成平面要与地面平行,体积检测算法检测方式为从上向下检测。


体积检测——全局设置
点击体积检测,进入参数设置界面后,需重点设置“检测平面距离”(用于确定物体下表面位置并计算体积)与最小XYZ大小。
检测平面设置。若货物直接放置于地面,检测平面距离设为地面高度;

若存在托盘且仅需计算托盘上货物面积,则需将检测平面与托盘点云重合。
最小XYZ设置。用于设定检测物体的长、宽、高三维尺寸下限(单位:像素)。当检测到的物体长、宽或高中任意一维小于该阈值时,系统将自动忽略该物体。


数值调大后该物体被忽略
全局配置设置完成后,要点击【保存并下发】按钮,可将参数保存到相机。
体积检测——范围设置
检测范围设置,调整检测的长宽(xy)建议先切换到上下视图, 如下为各视图的快捷键。

通过键盘上快捷键切换到上下视图,如下图所示,红色箭头所指的白色框,表示检测范围的x方向,鼠标滚轮滚动即可修改对应数值,完成检测范围长宽调整。当前将检测范围x方向最大、最小设置为600、-600。

绿色箭头所指的白色框,表示检测范围的y方向,鼠标滚轮滚动即可修改对应数值,完成检测范围长宽调整。当前将检测范围y方向最大、最小设置为480、-580。

蓝色箭头所指,表示检测范围的z方向,建议检测平面与最大z数值一致。检测最小范围根据物体的大小进行设置,如果物体高度超出最小z值,算法会将其过滤。

将检测区域配置好后,点击【保存并下发】按钮,将参数保存到相机内部。

体积检测结果查看
将检测区域配置好后,点击【保存并下发】按钮,将参数保存到相机内部。
将外参标定、体积检测参数、体积检测区域设置好后,点击“基础工具”,在检测区域内放入物体即可查看结果。当前为无物体,在基础功能栏会显示无任何物体。

当放入物体后,在体积状态显示栏会显示当前物体长、宽、高信息。

4.当放入多个物体后,体积检测结果显示栏会显示多个物体长、宽、高,并会显示物体数量。 
体积检测单次触发功能
体积检测设置界面,将触发模式打开,并点击【保存并下发】按钮,将触发模式成功打开。

点击基础工具,通过点击【单次触发】按钮,获取图像和结果。

通信协议
体积检测包含的单次触发模式通过TCP或UDP 发送TM_TRIGGER可以使相机单次执行一次体积检测算法并且返回一次结果。

TCP通讯
可通过 TCP 通讯获取结果。通过网络调试助手,远程相机 IP: 192.168.100.83,端口: 14951,发送 RESULT_UPDATE 可以看到返回的结果信息。

UDP 通讯
可通过 UDP 通讯获取库位检测结果。通过网络调试助手,远程相机 IP: 192.168.100.83,端口: 14950,发送 RESULT_UPDATE 可以看到返回的库位检测结果信息。

HTTP通讯
可通过 HTTP 通讯获取算法检测结果,端口号:14952。
上层系统(WMS)对视觉发送结果获取信号,视觉返回一个 JSON 格式的字符串。
操作流程
先设置Headers

再设置Body 参数为RESULT_UPDATE

点击发送获得结果 
WMS → 视觉 | |
结果 | 含义 |
RESULT_UPDATE | 触发视觉结果返回信号 |
视觉 → WMS(人体检测) | |
结果 | 含义 |
IP | 数据来源相机IP |
SG | 人体检测状态,0 为空,1 为有人,2为框匹配规则为仅深度情况下检测到物体 __object_details内含有检测出来的所有聚类坐标 |
SG_DATA_TIME | 检测数据提取时间 |
SG_RES_TIME | 检测结果输出时间 |
nick_name | 相机名称,相机内可配置 |
ret_code | 返回码,0 为成功 |
视觉 → WMS(库位检测) | |
IP | 数据来源相机IP |
SS | 库位检测状态,0 为库位未被占用,1 库位被占用,2为库位被占用且货物角度偏移超出预设参数,3为库位被占用且出界 X__object_details为 X库位的具体信息,含有实际占用物体的体积盒大小 |
SG_DATA_TIME | 检测数据提取时间 |
SG_RES_TIME | 检测结果输出时间 |
nick_name | 相机名称,相机内可配置 |
ret_code | 返回码,0 为成功 |
视觉 → WMS(体积检测) | |
IP | 数据来源相机IP |
TM | 每一项都是在区域内检测到的完整体积盒 |
SG_DATA_TIME | 检测数据提取时间 |
SG_RES_TIME | 检测结果输出时间 |
nick_name | 相机名称,相机内可配置 |
ret_code | 返回码,0 为成功 |
modbus-tcp(库位检测)
检测结果⾃动根据库位 ID 进⾏排序,只会返回前 16 个库位结果。
从端配置参数
基础通信配置
*端口号*:16502
*监听地址*:所有网络接口(0.0.0.0)
*寄存器数量*:16个
*寄存器起始地址*:0x100
*字节序*:大端模式(Big-Endian)
寄存器存储规则
寄存器地址**** | 存储内容**** | 数据格式**** |
*0x100 + ID* | 库位检测结果 + 标记物检测结果 | *2字节(uint16_t)* |
*拆分规则* | ||
*Byte 0(高8位)* | 库位状态码 | *0-2(见下文定义)* |
*Byte 1(低8位)* | 标记物状态码(暂未开放,内容与库位状态码一致) | *0-2(见下文定义)* |
状态码定义
库位状态码
编码 | 物理意义 | 触发条件 |
*0* | 未占用 | *无货物/托盘* |
*1* | 正常占用 | *标准货物正确放置* |
*2* | 异常占用 | *货物尺寸/位置偏移* |
标记物状态码
编码**** | 物理意义**** | 触发条件**** |
*0* | 未检测到标记物 | |
*1* | 检测到标记物 | |
*2* | 检测异常 |
示例
*读取第4个库位状态*
1. 客户端请求报文
hex
[01][00][00][00][06][FF][03][01][03][00][01]
*字段名称* | *值(HEX)* | *字节长度* | *说明* |
*报文序列号* | *00 01* | *2字节* | *事务标识符(递增序号)* |
*协议标识符* | *00 00* | *2字节* | *Modbus/TCP固定值* |
*数据长度* | *00 06* | *2字节* | *后续数据总长度(6字节)* |
*单元标识符* | *FF* | *1字节* | *广播模式(0xFF)或设备地址* |
*功能码* | *03* | *1字节* | *读保持寄存器(标准功能码)* |
*寄存器起始地址* | *01 03* | *2字节* | *起始地址=0x100 + 4(十进制)* |
*寄存器数量* | *00 01* | *2字节* | *读取1个寄存器(2字节)* |
2. 设备响应报文
hex
[05][00][01][00][00][00][02][00][02]
*字段名称* | *值(HEX)* | *字节长度* | *说明* |
*报文序列号* | *00 05* | *2字节* | *与请求报文一致* |
*协议标识符* | *00 00* | *2字节* | *Modbus/TCP固定值* |
*数据长度* | *00 02* | *2字节* | *后续数据总长度(2字节)* |
*单元标识符* | *FF* | *1字节* | *与请求报文一致* |
*功能码* | *03* | *1字节* | *读保持寄存器响应* |
*返回数据长度* | *02* | *1字节* | *实际返回数据长度(2字节)* |
*状态数据* | *00 02* | *2字节* | *第4个库位的状态值* |
附录(返回json解析)
人体检测
{ “IP”: “192.168.100.83”, //相机IP “SG”: { “1”: 1,//1检测框内检测到目标 “2”: 0,//2检测框内未检测到目标 “__object_details”: [ //每一项都是一个json字符串需要再次反序列化 ,每一项都代表一个聚类
”{\“rbx2d\”:584.0,\“rby2d\”:500.0,\“semantic_index\”:-1,\“tlx2d\”:234.0,\“tly2d\”:386.0,\“traceID\”:\“\”,\“x_max\”:33.46769714355469,\“x_min\”:-130.08856201171875,\“y_max\”:28.804279327392578,\“y_min\”:9.872406005859375,\“z_max\”:170.76319885253906,\“z_min\”:70.43941497802734}”, ”{\“rbx2d\”:405.0,\“rby2d\”:333.0,\“semantic_index\”:0,\“tlx2d\”:159.0,\“tly2d\”:11.0,\“traceID\”:\“IoXSYuQ0rM34LYqL\”,\“x_max\”:-201.1272430419922,\“x_min\”:-395.1332702636719,\“y_max\”:99.76918029785156,\“y_min\”:-228.9674530029297,\“z_max\”:611.3909912109375,\“z_min\”:233.85450744628906}” ] }, “SG_DATA_TIME”: “2023_03_02_21_52_11.408”, //人体检测数据时间 “SG_RES_TIME”: “2023_03_02_21_52_11.689”, //人体检测结果时间 “nick_name”: “Unknown”, //人体检测相机名称 “ret_code”: 0 //返回码。0为成功 }
”__object_details” : //单项解释
{ “rbx2d”: 405, //2D聚类框左下角x坐标 “rby2d”: 333, //2D聚类框左下角y坐标 “semantic_index”: 0, //有语义则为模型对应index ,无语义为-1 “tlx2d”: 159, //2D聚类框右上角x坐标 “tly2d”: 11,//2D聚类框右上角y坐标 “traceID”: “IoXSYuQ0rM34LYqL”,//每个检测出来的类都有专属ID ,可以用来判断与前几帧的检测是否属于同一个物体 “x_max”: -201.1272430419922,// 3D点云聚类框坐标 “x_min”: -395.1332702636719,// 3D点云聚类框坐标 “y_max”: 99.76918029785156,// 3D点云聚类框坐标 “y_min”: -228.9674530029297,// 3D点云聚类框坐标 “z_max”: 611.3909912109375,// 3D点云聚类框坐标 “z_min”: 233.85450744628906// 3D点云聚类框坐标 }
库位检测
{ “IP”: “192.168.100.83”, //相机IP “SS”: { X_detail_info 为 X序号库位中检测到的货物数据 “1”: 1,//1库位被占用 “2”: 1,//2 库位被占用 “3”: 3,//3 库位被占用且物体出界 “1__detail__info”: [ -1,-1,-1,-1,-1,-1,-1 ], “2__detail__info”: -7,258,261,545,403,204,89 ], “3__detail__info”: [ 114,73,37,92,42,75, -88 ] }, “SS_DATA_TIME”: “2023_03_02_22_13_01.286”, //人体检测数据时间 “SS_RES_TIME”: “2023_03_02_22_13_01.572”, //人体检测结果时间 “nick_name”: “Unknown”, //人体检测相机名称 “ret_code”: 0 //返回码。0为成功 }
“X__detail__info” : //单项解释, X 为库位专属ID
“2__detail__info”: [ -7,//中心点坐标 x
258,//中心点坐标 y
261,//中心点坐标 z
545,//长
403,//宽
204,//高
89 //相比于边界框偏移角度 ]
“1__detail__info”: [//该情况为 1库位为2D检测创建的库位检测范围 ,值全为-1 -1,-1,-1,-1,-1,-1,-1 ],
体积检测
{ “IP”: “192.168.100.83”,//相机IP “TM”: [ //每一项都为在检测范围内检测到的一个完整的体积盒 { “angle”: -81.56423950195313, “cx”: -287, “cy”: 88, “cz”: 2887, “height”: 224, “length”: 320, “type”: ””, “valid”: true, “width”: 174 } ], “TM_DATA_TIME”: “2023_03_02_21_01_31.769”, //人体检测数据时间 “TM_RES_TIME”: “2023_03_02_21_01_31.987”,//人体检测结果时间 “nick_name”: “Unknown”, //人体检测相机名称 “ret_code”: 0 //返回码。0为成功 }
“TM” : { //单项解释, “angle”: -81.56423950195313,//偏移角度 “cx”: -287,//中心点坐标 X “cy”: 88,//中心点坐标 Y “cz”: 2887,//中心点坐标 Z “height”: 224,//物体高度 “length”: 320,//物体长度
“type”: ””, // 语义类型 “valid”: true, //检测结果是否有效 “width”: 174 //物体宽度
}

