PalletPro托盘识别操作说明书
托盘软件视频教学:视频教学
1. 简介
PalletPro 是迈尔微视(MRDVS)开发的托盘识别软件,用于自研M系列相机在叉车上对接托盘或栈板的应用。算法通过 PalletPro 软件自 动下发到相机,可兼容多种规格的三腿托盘和两腿托盘的识别,其他类型托盘可定制专属算法。M系列相机内置算力,无需搭配外置工控机。软件具备动态检测,无需小车停车识别即可获取识别结果。
软件无需用户参与编程,简单的参数调节,即可通过 PalletPro 快速实现各种类型托盘自适应识别,支持地面、货架等各种场景识别。有特殊种类托盘请与迈尔微视销售人员联系。下图为本文中所说明的标准托盘。
注:标准托盘仅限本文下图所示托盘。托盘尺寸:欧标托盘尺寸(1.2m*0.8m、1.2m*1m)。其余尺寸请与迈尔微视销售确认。
2. 相机硬件安装
2.1 相机安装方式
2.1.1 随动式安装
相机在叉臂根部面板上距叉臂上表面一定高度(具体高度可联系迈尔微视售前人员进行评估),尽量贴近两叉齿中心位置(左右偏差不超过 5cm),且相机镜面应与地面保持垂直,尽量左右水平,居中,不 存在俯仰角,视野内无其他物体干扰被检测物的成像。如下图所示。
2.1.2 下坠式安装
相机通过工装安装在叉臂下方,当叉臂抬升时,相机会工装实现下坠,工装完全下坠后与叉臂随动。相机距离叉臂下表面约 40mm。当叉车进行地面托盘识别时,需要叉臂进行抬升一定距离到预对接位置(拍照点),再触发视觉对接。
料架上的托盘对接同理,叉车抬升到预对接位置,需要保证货架上托盘腿底部与相机光心的距离,再触发视觉识别。相机尽量贴近两叉臂中心位置(左右偏差不超过 5cm)且相机镜面与地面保持垂直,尽量 不存在俯仰角,视野内无其他物体干扰被检测物的成像。安装如下图所示(如有不清楚的地方,请联系迈尔微视售前人员)。
2.1.3 相机视野要求
托盘识别需要视野中完整看到托盘,防止出现叉臂挡住托盘的情况,故要求最近的识别距离下,叉臂对相机无遮挡。如有遮挡建议提高相机安装高度。
2.1.4 相机安装高度推荐
根据实测数据叉臂长度在 1.2 米之下时,安装高度在 0.35 米-0.4米左右;叉臂长度大于 1.2 米时,安装高度在在 0.4 米-0.8米左右。以上数据根据经验得出结论,不同的叉车会有差异。
注:当叉臂长度超过1.2米时, 安装高度需与迈尔微视技术支持进行沟通。
相机视野照射需要达到如下效果。
注:叉车对接分为一次对接、二次对接和实时对接,所以要保证在 1.2米的位置相机依然能识别完整的托盘信息,所以对于安装高度有较高要求,安装过低影响相机视野。安装过高影响相机识别托盘腿。
2.2 相机连接
使用相机的 5pin 电源线 24V 供电,通过 7 类网线与电脑连接,运行 PalletPro 软件。
3. 相机软件安装指南
3.1 软件安装流程
- 第一次使用软件,可以参照如下流程完成操作。
3.2 系统要求
建议运行 PalletPro 托盘软件设备满足要求。
操作系统 |
Windows10 及以上 |
CPU |
建议 Intel® Core™ i5 七代及以上 |
内存 |
8G 及以上 |
GPU |
Intel(R) UHD Graphics/核显以上 |
3.3 安装软件
安装 PalletPro 软件,通过解压文件夹,获得 PalletPro-V1.4.2 软件
3.4 运行软件
双击 PalletPro-V1.4.2 文件夹,进入文件夹内部,向下浏览,找到图标,双击“PalletPro”即可运行托盘软件。
3.5 升级软件
- 将 PalletPro1.4.2 文件夹进行备份。
- 确认已经备份后,删除原 PalletPro1.4.2 文件夹。
- 将新版本软件文件夹解压后,正常运行即可。
3.6 升级算法
需要在迈尔微视 LxCameraViewer 上位机中进行固件算法升级,需要升级固件算法步骤如下:
- 电脑通过网线与相机进行连接。
- 双击打开上位机 “LxCameraViewer”。(关于 LxCameraViewer 软件如何下载使用请参考LxCameraViewer 软件用户手册)
- 找到托盘对接相机 ID,并点击【打开】按钮(一台车可能会连接多个相机,所以要明确对接相机的 ID,也可根据相机类型或 IP 判断)。
- 打开对接相机后,找到红色框“功能设置”栏下“固件升级”选项, 点击【执行】按钮。
- 点击 【执行】后,将得到的最新固件算法版本选中,并点击 【打开】,开始升级托盘算法。
- 固件算法升级过程中,LxCameraViewer 上位机软件会有信息提示。升级过程中,相机在设备列表中会消失,升级完毕后相机会再次显示。
- 升级完成后,可通过再次“打开”对接相机,选择 【应用算法】,在软件界面右侧显示算法版本。
- 再次打开 PalletPro 托盘软件,在界面左下角显示固件算法版本。
- 相机固件版本升级跟托盘算法升级方法相同。
3.7 安装常见问题
问题一:打开软件失败
问题现象:
由于找不到 msvcp140.dll,无法继续执行代码。
可能原因:
电脑系统缺少部分 dll 文件。
处理方法:
- 从网上下载相关 dll 文件,进行补全。
- 找迈尔微视售前人员沟通,获取 DirectX 修复软件。
4. 软件界面
4.1 主界面
打开软件后,会显示如下主界面,可在此界面进行相机连接、相机标定、托盘识别等操作。
该界面包含如下功能:
菜单栏 |
包含基础操作、高级应用、外参标定、相机操作、高级参数 与保存参数。 |
相机参数设置 |
包含扫描、嵌入式、打开关闭相机、实时显示、检测、投影 与相机标定参数设置。 |
文件导入 |
包含标定参数文件、识别图片、文件夹。 |
日志打印 |
打印检测结果、相机固件版本、算法版本等 |
图像显示 |
显示图像数据 |
4.2 菜单栏
注:外参标定、相机操作、高级参数、保存参数四个选项,基础操作和高级应用中参数包含这四项内容,下文仅叙述基础操作和高级应用中参数。
4.2.1 基础操作
菜单 |
选项 |
描述 |
---|---|---|
基础操作 |
外参标定 |
相机标定,标定相机高度、相机横向偏移、俯仰角、航向角、翻滚角。 |
保存参数 |
保存设置的参数,下发到相机。 |
|
相机操作 |
获取相机 IP、相机 ID、软件日志。 |
4.2.1.1 外参标定模块
- 点击“基础操作”中 外参标定】,在软件界面右侧显示外参标定界面。
- 点击“外参标定”中 【标定须知】,会显示外参标定的注意事项,请详细阅读,以免在标定过程中出现问题。
关于 【标定须知】最下方确认信息:
- 客户名称:建议以项目+叉车号进行命名,方便排查。
- 识别最近距离(mm):默认即可(如果标定距离较近调整为 1.2m)。
- 旋转中心距离光心:默认 0 时,为托盘在相机下的坐标。必须填写相机光心到叉车旋转中心的距离。
- 点击 【重置标定】后,将标定的所有参数恢复为 0。
- 横向偏差通过标定自动得出。
关于托盘示教如下(建议进行两次标定):
- 单次托盘示教:托盘距离叉车叉臂 200mm 位置,进行近端标定,此次标定可标出托盘高度、横向偏移、航向角、翻滚角。
- 两次托盘示教:在近端标定后,在进行远端标定(二次示教),如近端标定相机识别托盘距离为 1300mm,则需将叉车直线运行 400-800mm 左右,不可有角度或横向移动,距离托盘 1.8-2.4m 进行远端标定,标定出相机俯仰角。
- 标定完成后一定再次点击保存参数。
4.2.1.2 保存参数模块
将当前软件参数保存,并下发到相机。
4.2.1.3 相机操作模块
点击 【相机操作】按钮,显示如下界面:
- 获取到当前相机的 IP、ID。
- 直接升级算法版本(目前暂不支持)。
- 获取软件运行 log 信息,会在软件界面左下角显示 log 获取成功。在“PalletPro-V1.4.1 文件夹”→“当前相机 IP_ID 文件夹”中显示 获取的日志。
4.2.2 高级应用
菜单 |
选项 |
描述 |
---|---|---|
高级应用 |
高级参数 |
设置托盘识别参数 |
显示3D |
查看托盘成像结果 |
|
离线测试 |
通过输入图片测试托盘识别有无问题 |
|
导出参数 |
无法使用 |
4.2.2.1 高级参数模块
点击“高级应用”中的【高级参数】与软件界面中【高级参数】内容一致。
高级参数设置内容分为读取地址、相机IP/ID、高级参数、保存参数、腿宽选择、托盘宽度、横杆检测以及部分参数信息。
- 读取地址
- 读取相机json文件,并在此栏显示相机IP、ID文件夹以及json。
- 相机IP/ID
- 显示当前相机的IP和ID信息。
- 高级参数
- 勾选后,可显示全部高级参数(当前页面参数为基础参数)。
高级参数中可修改参数:安装方式、相机高度、自定义命名、多托盘检测、四腿托盘检测、z方向最小值、z方向最大值、水平方向最小值、水平方向最大值、双腿检测。其余参数均不可修改。
- 高级参数含义(红色为不可改参数)
|
参数名称 |
参数说明 |
参数含义 |
---|---|---|---|
基础参数 |
R:[0.0,0.0,0.0] |
相机标定角度参数 |
R:[俯仰角,航向角,翻滚角] |
t:[0.0,0.0,0.0] |
相机偏移参数 |
t:[横向偏移,未生效,深度偏移] |
|
ground_y |
相机安装高度 |
地面距离相机的高度,单位毫米(mm) |
|
x-client |
自定义命名 |
建议以项目+ID命名 |
|
orientation |
安装方式 |
0:正装,2:倒装。1、3:侧装 |
|
multi_level |
是否支持多托盘检测 |
0:关闭。1:开启多托盘检测 |
|
quad |
是否支持四腿 |
0:关闭。1:开启四腿托盘识别 |
|
高级参数 |
min_z |
z方向最小值 |
相机距离,低于z方向最小值会检测失败。 |
max_z |
z方向最大值 |
相机距离,高于z方向最大值会检测失败。 |
|
min_x |
水平方向最小值 |
超出水平方向最小值检测失败。 |
|
max_x |
水平方向最大值 |
超出水平方向最大值检测失败。 |
|
two_leg |
双腿识别 |
0:关闭。1:开启。 |
- 保存参数
- 与基础操作中“保存参数”具有相同功能,设置参数完成后,点击【保存参数】,参数保存并下发到相机。
- 腿宽选择
- 标准模式(10-15cm)
- 细腿模式(5cm)
- 纤细托盘(3-4cm)
- 偏宽(15cm)
- 超宽(20cm+)
- 托盘宽度
- 标准模式(0.7-1.3m)
- 宽托盘(1.1-1.6m)
- 横杆检测
- 标准(默认,一般情况无需改动)
- 较细(80%)
- 非常细(60%)
- 稀少(10%)
4.2.2.2 显示3D模块
选择“高级应用”,点击【显示3D】按钮,显示当前3D点云效果,通过边缘可调节页面长宽大小。亦可在离线测试时,使用此功能查看托盘点云完整性。
4.2.2.3 离线测试模块
选择“高级应用”,点击【离线测试】按钮。通过将json标定文件、识别图片、识别图片文件夹导入到PalletPro软件中,点击开始检测按钮即可识别图片。如下图所示,可将离线测试功能分为五个板块。
红色“1”板块(参数文件):
- 需要将相机参数标定文件放入该栏中(直接将json标定文件拖拽到参数文件栏中)。如何找到json标定文件,使用PalletPro软件连接当前相机,在PalletPro软件文件夹→相机的ID文件夹中生成json文件。
例:双击“PalletPro”进入软件后,会在相机设置下出现相机IP和相机ID,记住当前ID。进入PalletPro软件文件夹中,找到对应的IP和ID如下图所示,确认后,双击文件夹。
pallet_settings.json为相机标定参数文件。
绿色“2”板块(输入文件、输入文件夹):
- 将得到的相机png结果图或文件夹拖拽到当前图中为止。
(1)拖拽含有相机结果图的文件夹到上图“文件夹”栏中。
(2)拖拽单张png格式图片放入到“输入文件”栏中。
黄色“3”板块(离线测试):
- 离线测试有“文件”和“文件夹”供选择,可测单张图片或文件夹内所有图片。
- From,选择“文件夹”进行测试时,可以在“From”中输入数字。如输入100,则代表从第100张图片开始检测。
蓝色“4”板块(参数设置):
- 将json标定文件拖拽到PalletPro软件后,在“参数设置”中会显示当前标定文件参数。
白色“5”板块(识别结果显示):
- 离线测试,显示识别结果信息。
OK:相机坐标系下的识别结果坐标。
R:相机转换叉车下的坐标。
4.2.2.4 导出参数模块
暂时无法使用。
- 在托盘软件根目录下,当前相机的IP和ID的文件夹下,可导出pallet_settings标定文件。
4.3 相机参数设置
相机参数设置分为相机设置和参数设置两部分。
4.3.1 相机设置
相机设置包含扫描、嵌入式、打开相机、关闭相机、实时显示、检测、投影七个部分。
4.3.1.1 扫描模块
- 扫描当前电脑连接的相机
当前和一台相机连接,如有多台,则IP依次往下罗列
4.3.1.2 嵌入式模块
- 勾选后,在日志打印栏显示相机运行算法的识别结果,如上图所示(想要看到相机运行结果,需连接相机后,点击“打开相机”按钮后,勾选嵌入式,方可显示)。
4.3.1.3 打开相机模块
- 与相机通过网线连接后,点击【打开相机】按钮,成功将相机启流,按钮变为灰色,相机状态从“关闭”变为“运行中”。
4.3.1.4 关闭相机模块
- 点击【关闭相机】按钮,成功将相机停流,按钮变为灰色,相机状态聪“运行中”变为“关闭”。
4.3.1.5 投影模块
- 打开相机后,【投影】默认勾选状态,无需更改。
4.3.1.6 实时显示模块
- 显示实时图像。打开相机后,【实时显示】默认勾选状态,无需更改。不勾选实时显示,“图像显示界面”不显示实时图像,
4.3.1.7 检测模块
- 算法识别检测。打开相机后,【检测】默认不勾选状态,既代表没有开启PalletPro上位机算法检测。
- 勾选后【检测】后,在“图像显示界面”左上角输出检测结果。
4.3.2 参数设置
当点击“打开相机”按钮后,PalletPro软件会自动读取相机标定参数文件,并显示在“参数设置”中。参数设置分为Client、安装高度、俯仰角RX、航向角RY、翻滚角RZ以及安装方式六个部分。
4.3.2.1 Client模块
- 当前标定文件命名信息。
4.3.2.2 安装高度模块
- 相机安装高度。通过“单次示教(近端标定)”可得到相机高度信息,也可手动调节。
例:一台新的相机,需要识别托盘。
(1)当连接相机后,打开软件,高度需要点击【高度自适应】按钮,使软件自动检测相机高度。
(2)点击“高度自适应按钮”后,检测的高度值为区间值,还需要进行手动微调。
(3)点击安装高度栏中“416”,可以通过鼠标滚轮进行微调。要尽量保持图中红色水平线与地面平齐。
(4)调整完后,需要点击菜单栏中保存参数按钮。由于调节高度会自动取消实时显示,所以保存调整高度后,需要在相机设置中再次勾选实时显示。
4.3.2.3 俯仰角RX模块
- 通过“二次示教(远端标定)”获取相机俯仰角度。不建议手动调节此参数,可能会导致识别结果有偏差。如自动标定无法标出,请与迈尔微视售前人员进行联系。
- 俯仰:相机安装位置前后倾斜。相机向下倾斜,俯仰角调整为负值可矫正。如下图所示,相机俯仰角RX是相机基于水平地面向下(向上)倾斜。
4.3.2.4 航向角RY模块
- 通过“单次示教(近端标定)”获取相机航向角度。不建议手动调节此参数,可能会导致识别结果有偏差。如自动标定无法标出,请与迈尔微视售前人员进行联系。
- 航向:相机水平左右角度偏差。如相机顺时针方向有旋转角度,则航向角调整为正值可矫正。如下图所示,相机航向角RY是相机基于水平地面顺时针(逆时针)旋转。
4.3.2.5 翻滚角RZ模块
- 通过“单次示教(近端标定)”获取相机翻滚角度。不建议手动调节此参数,可能会导致识别结果有偏差。如自动标定无法标出,请与迈尔微视售前人员进行联系。
- 翻滚:相机安装位置左右倾斜。如下图所示,相机翻滚角RZ是基于水平地面向右(左)倾斜。
4.4 文件导入
在“离线测试”中,简单的说明了文件导入的功能。可点击“高级应用”进行查看(文件导入功能仅在“离线测试”时使用)。
4.4.1 参数文件
- PalletPro打开相机后,自动获取到相机标定文件并在此参数文件栏显示。
- 可在离线测试时,将相机pallet_setting.json标定文件拖拽到参数文件栏中。
4.4.2 输入文件
- 将得到的png格式的托盘图片拖拽“输入文件栏”中,即可对单张png图片离线测试。
4.4.3 文件夹
- 将整个图片文件夹拖拽到“文件夹”中,即可对文件夹图片离线测试。
4.5 日志打印
PalletPro软件左下角位置,实时显示日志打印信息。
4.5.1 打开相机的日志打印
- [相机启动中]
- 打印[status changed to]——状态已更改
- [API Version 2.4.20]——API版本
- [firmware_verv1.1.75_240608_sp]——相机固件版本信息
- [相机192.168.100.82:3956启动成功]——相机成功启动
- [Embeded Alg Ver:0.7.5_@Jun 18 2024]——算法固件版本信息
4.5.2 修改RX、RY、RZ、安装方式日志的打印
- [欧拉角 -0.2 -0.3 -0.3 倒装]——打印俯仰角、航向角、翻滚角、安装方式的信息。
4.5.3 相机操作选项中获取log日志的打印
- 当通过【相机操作】选项中,点击“只获取log”按钮,在日志打印栏显示[开始获取日志]
4.5.4 嵌入式时日志的打印
- [InnerFailed. Err=-6]——相机运行算法的识别结果当前为识别失败。
- [Inner -1390, 1, -0.01]——相机运行算法的识别结果当前为识别成功。
4.6 图像显示
- 点击“打开相机”后,在【图像显示】界面,实时显示当前图像。
- 离线测试时,在【图像显示】界面,显示图像识别结果。
5. 应用指南
本应用指南主要介绍相机的准备工作、相机外参标定以及在叉车识别效果。
5.1 准备工作
- 准备好标准托盘做标定使用。(如下图为标准托盘)
- 初次使用相机识别时,需要先对电脑进行IP配置。相机的网段为192.168.100.82, 子网掩码为255.255.255.0。
- 需要空旷的场地,地面平整,周围不能有反光柱等影响相机识别。
- 准备M系列相机一台。
5.2 网络配置
- 以Win10系统为例,双击控制面板
- 进入控制面板后,点击“查看网络状态和任务”。
- 进入网络和共享中心界面,点击“更改适配器设置”。
- 进入网络连接界面,鼠标双击选择相机连接的以太网。
- 查看以太网状态(建议使用千兆网口),并点击“属性”按钮。
- 进入以太网属性界面,找到“Internet协议版本4(TCP/IPv4)”,双击打开。
- 进入Internet协议版本4(TCP/IPv4)界面,选择“使用下面的IP地址”,进行IP地址和子网掩码和默认网关的书写。
- IP地址设置:192.168.100.xxx 子网掩码:255.255.255.0 默认网关:192.168.100.1,如下图设置好的IP,设置完成后点击“确定”按钮。
- 点击确定按钮后,会自动回退到上一个界面,再次点击“确定”,完成网络配置。
5.3 确认软件版本
- 网络配置完成后,需要将系统的防火墙关闭。才可进行版本确认。
- 进入软件版本确认环节。需要保证:
- LxCameraViewer上位机软件安装Lanxin-MRDVS-1.3.47.0611.exe及以上版本。
- 相机固件0608以上版本。
- 托盘算法0.7.4以上版本。
5.3.1 LxCameraViewer上位机版本确认
- 双击打开“LxCameraViewer”软件。
- 点击相机ID“FA4351148898”,ID会变为蓝色。
- 在当前界面左下角,设备信息栏中显示软件版本信息。
- 如版本低于0608,与迈尔微视售前人员联系,获取新版上位机软件。
5.3.2 相机固件版本确认
点击“打开”按钮,相机启流成功,在界面左下角设备信息栏中显示相机固件版本。相机固件版本低于0607,请与迈尔微视售前人员联系获取新版固件。
5.3.3 托盘算法版本确认
- 在确认软件版本、算法版本后。在当前页面,点击“应用算法”按钮,在界面右侧显示应用算法栏。第一次使用LxCameraViewer上位机应用算法处于关闭状态。
- 选择“托盘定位”算法,算法版本栏会显示当前托盘算法版本,算法版本低于0.7.6,请与迈尔微视售前人员联系获取新版托盘算法固件。
5.4 LxCameraViewer调整相机成像
需要通过LxCameraViewer上位机软件中3D设置“高曝光”和滤波“低信号阈值”调节相机成像。本次识别托参数设置为:高曝光:1400 低信号阈值:20
- 在LxCameraViewer软件界面右侧功能栏中进行调节参数。
图像显示设置:无需调节。
2D设置:无需调节。
3D设置:调节相机曝光参数。(对于低反、黑托盘不成像加大曝光)。
滤波:可滤除3D点云杂点、飞点(托盘腿成像缺失时调节此参数)。
硬件接口:无需调节。
采集设置:无需调节。
功能设置:升级固件、托盘算法使用。
- 点击功能栏中“3D设置”,进行相机曝光调节,高曝光初始值为600,根据现场托盘成像情况,建议最高曝光不超过1400。
高曝光600的成像
高曝光1400的成像
- 滤波参数,低信号阈值越小,能看到的点云会越多,但是杂点也会更多。低信号阈值越大,能看到的点云会越少,杂点越少。
低信号阈值10成像 低信号阈值20成像
- 如遇到黑色低反托盘将曝光调节1400也无法识别,则需要将低信号阈值调节为10,查看成像效果,如果还无法识别,请于迈尔微视售前人员进行联系。
低信号20的成像
低信号10的成像
5.5 LxCameraViewer应用算法设置
在LxCameraViewer上位机中,点击“应用算法”,界面右侧会显示应用算法设置,需要将应用算法选择为“托盘定位”。工作模式根据情况选择【断开时关闭】或【常开】。本次应用选择【断开时关闭】。
【断开时关闭】:使用PalletPro托盘软件时,需要将工作模式设置为断开时关闭。
【常开】:当使用托盘定制算法时,需要将工作模式设置为常开。
5.6 PalletPro初始高度设置
- 打开PalletPro软件后,选择对接相机IP,点击“打开相机”按钮,相机运行。
- 第一次对相机进行操作,安装高度为-100。需要点击“高度自适应”按钮。
- 由于自动标定的相机高度值可能因为地面导致有偏差。建议自动检测后,在通过手动微调标定高度,使水平红线与地面相交或略微比地面高出。如下图所示。
- 调节完高度后,一定要点击“保存参数”按钮,参数会保存并下发到相机(不保存,参数无法下发到相机)。
如下图所示,由于是第一次打开软件调节参数,所以“Client”命名是none,无法进行保存,需要重新命名后才能保存参数。
重新命名为MRDVS-1后,成功保存。
5.保存参数后,需重新勾选相机参数栏中“实时显示”和“检测”,即可成功识别托盘(识别结果由于未进行示教标定,结果值会存在误差)。
5.7 外参标定讲解
“5.6”章节讲解在初次打开软件需要设置安装高度。在实际应用中需要对相机进行外参标定,从而确定相机、叉车和托盘之间的关系。打开PalletPro托盘软件连接相机后,点击【外参标定】按钮。
- 保证托盘为标准托盘,并且托盘在相机视野内处于居中状态,如下图蓝色标准托盘(托盘仅供参考)。
- 相机距离托盘直线距离为1.3m左右,开始进行近端标定。
- 进行近端标定,标定托盘场景周围左右2m范围内无遮挡物,否则会影响相机标定。
5.7.1 托盘示教(近端)讲解
- 确认为标准托盘、周围环境无遮挡、距离在1.3m左右的情况下,点击【托盘示教(近端)】按钮,近端标定完成会有提示框进行提示,并在左侧“参数设置”栏中显示近端标定成功得到的信息(近端标定会标出相机安装高度、俯仰角、航向角)。
- 点击标定成功提示框“OK”按钮,软件会显示识别结果并自动保存标定参数。
3.近端标定完成后,如果没有显示识别结果,请查看是否勾选“检测”。
4.近端标定后的识别结果,由于没有标出俯仰角结果会有误差。
5.7.2 托盘示教(远端)讲解
注:建议进行远端标定,保证相机的标定结果正确。
- 基于“托盘示教(近端)”后,【托盘示教(远端)】按钮会显示可按下,将叉车基于当前位置,向后移动到600-1000mm左右(不可左右移动),托盘距离叉车大概2-2.4m位置,进行远端标定。如下图所示,移动到2.1m位置,点击【托盘示教(远端)】按钮,开始远端标定。
- 远端标定成功,软件提示“二次标定完成”,参数自动保存。
- 点击palletpro界面高级参数,可查看到近端标定和远端标定的结果。
R:{0.00,.0.19,0.00} → 俯仰角:0 航向角:0.19 翻滚角:0
t:{-14.00,0.00,0.00} → 横向偏差:-14 不生效:0.00 深度偏移:0
注:横向偏差,相机相对于托盘的横向位置的偏差,补偿后,当前相机相对于托盘横向偏差为0。
5.8 校验标定结果
完成近端标定和远端标定即可开始验证标定结果精度。
5.8.1 标定结果验证
将叉车在远端标定处与近端标定处来回移动观察R输出的距离(x值)、横向偏差(y值)以及角度的数据,在x和y误差10mm范围内且识别稳定无漏识别情况,即视为标定成功,可正常运行叉车。
5.8.2 托盘软件相机坐标系说明
相机在托盘软件下的坐标型如下图所示。
示例:x, y, theta = (-2000, 100,2.3)
代表托盘距离相机光心2000毫米,偏右100毫米,角度偏差2.3°(俯视图,逆时针方向)。
发送数据结果为X:-2000;Y:100;theta:2300
比如托盘相对于相机向左侧移动8.5cm,R输出的值为-90,代表误差在5mm。
5.9 地牛叉车相机应用
5.9.1 叉车标定
叉车标定与【外参标定讲解】相同。
- 近端标定
- 近端标定方案采用示教标定法,需将叉车手动控制对接一次托盘,叉车插取托盘时是居中状态,如下图所示。
- 直线将叉车(托盘还在地面无需举升)远离托盘,保证叉尖距离托盘前沿200mm左右,如下图所示。
- 届时点击近端标定可标定出安装高度、横向偏移、航向角与翻滚角。
- 远端标定
远端标定功能为标定相机安装的俯仰角,需在上一步近端标标定后才可进行,在近端标完成后届时保证托盘位置不变控制叉车远离托盘,在PalletPro软件界面显示距离2000-2400mm范围时点击远端标定,届时即可标定出相机安装的俯仰角,标定参数自动保存,如图所示。
识别结果如下图所示。
- 标定校验
标定完成后将叉车在远端标定处与近端标定处来回移动观察R的输出的数据误差范围是否在10mm范围内,且识别稳定无漏识别情况即标定完成。OK:相机坐标。R:输出给叉车的坐标。
R:(-2444,-27),2.4
-2444:相机距离托盘距离
-27:托盘对于相机偏左。
2.4:托盘角度
6. 通信协议
6.1 TCP + UDP协议
通信协议支持TCP Server + UDP。通过LxCameraViewer上位机选中应用算法“托盘定位”,工作模式选择【常开模式】。
TCP Server默认端口5501。
UDP默认端口为8000。
6.2 协议内容
二进制形式,一般不超过128字节(标准长度为16个字节)。
采用Big-Endian模式:高字节在前,低字节在后。
6.3 通信帧格式
客户端 to PalletPro托盘软件
字节位 |
0 |
1 |
2-3 |
内容 |
Code,无符号char 使用字符0x60 |
字节长度,4 无符号char |
指令代码 0:开启 1:结束 |
示例:
发送内容 0x60 0x04 0x00 0x00,表示启动识别任务
发送内容 0x60 0x04 0x00 0x01,表示结束识别任务
PalletPro托盘软件 to 客户端
字节位 |
内容 |
备注 |
---|---|---|
1-2 |
Code,返回值,16位无符号整型(unsigned int) 0表示识别成功;其他值未识别失败,具体定位见第八部分 |
|
3-4 |
整体字节长度(字节数),16位无符号整型(unsigned int)。当前为24 |
|
5-8 |
托盘识别X,Y,theta的符号,0x00为正,0x01为负。第8字节为占位符,0x00 |
|
9-12 |
托盘前部中心点位置X,4字节无符号整型,单位毫米 |
|
13-16 |
托盘前部中心点位置Y,4字节无符号整型,单位毫米 |
|
17-20 |
托盘前部中心点位角度theta(单位角度),4字无符号整型,单位:角度*1000 |
|
21-24 |
托盘高度(以相机光心为远点,向下为正),4字节无符号整形,单位:毫米 |
|
25-32 |
8个字节的拓展,置为0 |
|
6.4 UDP通信案例
- 使用UDP通信方式时需在上位机将算法工作模式设置为【常开模式】
- 端口配置如图:主机端口号为8000
- 发送内容 0x60 0x04 0x00 0x00,表示启动识别任务
- 发送内容 0x60 0x04 0x00 0x01,表示结束识别任务
字符含义:
00 00 00 14 01 00 00 00 00 17 8E 78 00 00 17 70 00 00 28 F5 00
字节位 |
内容 |
---|---|
1-2 |
Code,返回值,16位无符号整型(unsigned int)0表示识别成功;其他值代表识别异常1:相机打开异常2:托盘定位失败3:相机内部异常 |
3-4 |
整体字节长度(字节数),16位无符号整型(unsigned int)。当前为20 |
5-8 |
托盘识别X,Y,theta的符号,0x00为正,0x01为负。第8字节为占位符,0x00 |
9-12 |
托盘前部中心点位置X,4字节无符号整型,单位毫米*1000 |
13-16 |
托盘前部中心点位置Y,4字节无符号整型,单位毫米*1000 |
17-20 |
托盘前部中心点位角度theta(单位角度),4字无符号整型,单位:角度*1000 |
6.5 TCP通信案例
- 使用TCP通信方式时需在上位机将算法工作模式设置为【常开模式】
- 端口配置如图:相机为TCP SERVER端口号5501
- 发送内容 0x60 0x04 0x00 0x00,表示启动识别任务
- 发送内容 0x60 0x04 0x00 0x01,表示结束识别任务
字符含义:
00 00 00 14 01 00 00 00 00 17 AA FC 00 00 18 38 00 00 2A 41
字节位 |
内容 |
---|---|
1-2 |
Code,返回值,16位无符号整型(unsigned int)0表示识别成功;其他值代表识别异常1:相机打开异常2:托盘定位失败3:相机内部异常 |
3-4 |
整体字节长度(字节数),16位无符号整型(unsigned int)。当前为20 |
5-8 |
托盘识别X,Y,theta的符号,0x00为正,0x01为负。第8字节为占位符,0x00 |
9-12 |
托盘前部中心点位置X,4字节无符号整型,单位毫米*1000 |
13-16 |
托盘前部中心点位置Y,4字节无符号整型,单位毫米*1000 |
17-20 |
托盘前部中心点位角度theta(单位角度),4字无符号整型,单位:角度*1000 |
6.6 485通信案例
注:485通信仅支持M4 PRO相机。
串口定义: 波特率9600,8个数据位,没有奇偶校验位,1个停止位
Modbus地址默认为0x17,可以通过SDK配置,范围1-247。
开启/关闭托盘算法,功能码0x06, 寄存器定义120(0x0078),0:关闭 1:开启。
实例:
叉车->设备
17 06 00 78 00 01 CA E5 (开启识别)
17 06 00 78 00 00 0B 25 (关闭关闭)
17:modbus地址
06:功能码
0078:寄存器地址
0001:寄存器值
AB20:CRC校验码
设备->本体
[17][06][00][78][00][01][CA][E5]
获取托盘结果,功能码0x04, 寄存器定义122(0x007A)
实例:
本体->设备
17 04 00 7A 00 08 D2 E3 (获取识别结果)
17:modbus地址
04:功能码
007A:寄存器地址
0010:寄存器数量(modbus定义的寄存器是2字节,托盘每个
字段结果是4字节,所以读8个寄存器)
D2E3:CRC校验码
设备->本体
[17][04][10][00][00][00][01][00][00][00][02][00][00][00][03][FF][FF][FF][FE][00][00][00][03[86][d2]
17:modbus地址
04:功能码
10:长度
[00][00][00][01]:托盘结果x
[00][00][00][02]:托盘结果y
[00][00][00][03]:托盘结果yaw
[FF][FF][FF][FE]:托盘返回值
[00][00][00][03]:托盘结果高度H
[86][d2]: CRC校验码
6.7 CAN通信案例
注:当前can协议仅支持M4相机。
- 通信协议采用CanOpen, CanOpen协议是在标准的CAN总线上运行的应用层协议,其通信模式也是工业通信协议常用的“主从”模式通信,也就是网络中会有一个主站+多个从站,从站之间不会直接互相通信,所有通信都是主站与从站之间进行的。主站也被称为“客户端”,从站也被称为“服务器”。
- 底层通信方式使用CAN标准帧格式,也就是CAN ID为11位(0x000~7FF),数据8字节。
- 对于CAN ID的使用约定:
把11位的ID分割为4bit的功能码和7bit的节点ID,并且CAN ID也被称为COB ID:
CAN帧ID |
||||||||||
---|---|---|---|---|---|---|---|---|---|---|
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
功能码 |
节点号 |
Can波特率定义为250K
SDO的通信报文是CanOpen中的一个基本协议格式,CAN报文中的8字节数据被通信协议定义为如下图的格式:
Data |
|||||||
---|---|---|---|---|---|---|---|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
命令码 |
索引 |
子索引 |
数据 |
- 托盘定位通信协议:
本体向设备发送COB ID:0x212
Data |
|||||||
---|---|---|---|---|---|---|---|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
0x40 |
0x00 |
0x01 |
0x00 |
MODE CTRL |
0x00 |
0x00 |
0x00 |
MODE CTRL开启和关闭,0关闭,1开启
参考字符:40 00 01 00 01 00 00 00
设备->本体
设备向本体发送COB ID:0x192, count每次查询加1,x y yaw为实际值x1000,int 类型
Data |
|||||||
---|---|---|---|---|---|---|---|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
count |
result |
yaw |
设备向本体发送COB ID:0x292
Data |
|||||||
---|---|---|---|---|---|---|---|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
x |
y |
7. 常见问题
7.1 标定报错
- 非标准托盘标定导致报错。
非标准托盘,托盘规格在第一章【简介】有说明。
解决方案:使用标准托盘。
- 标准托盘周围有低反物体遮挡
解决方案:保证周围2m范围内无障碍物遮挡。
7.2 识别失败
- 距离太近导致识别失败
软件默认z最小值为1.2m,如果相机距离托盘小于1.2m不会识别。软件界面报错“failed:-6”。
解决方案:如最小对接距离小于1.2m请修改PalletPro高级参数min_z最小值。
- 托盘腿成像不足识别失败
软件界面报错“failed:-2或-6”。
解决方案:通过LxCameraViewer上位机调节高曝光为1400,低信号阈值10。查看成像托盘腿成像是否完全,如还有缺失,联系迈尔微视售前人员,开启金字塔功能。
- 黑色低反托盘识别失败
与上述“2”问题本质相同,托盘腿成像不足导致。
解决方案:通过LxCameraViewer上位机调节高曝光为1400,低信号阈值10。查看成像托盘腿成像是否完全,如还有缺失,联系迈尔微视售前人员,开启金字塔功能。
- 反光柱在托盘旁边导致识别失败
软件界面报错“failed:-7”。
解决方案:尽量将反光柱离托盘腿远一点。如还无法识别,请联系迈尔微视售前人员。
反光柱拿走下的识别效果。
- 托盘腿宽度设置有误
软件报错“failed:-3”
解决方案:如果托盘腿较细,修改PalletPro高级参数中“腿宽选择”改为细腿模式,并点击“保存参数”。查看识别效果。如还是无法识别,请联系迈尔微视售前人员。
- 横杆过细导致识别失败
软件界面报错“failed:-6”。
解决方案:
方案1:修改LxCameraViewer上位机中滤波参数,将飞行像素关闭。
方案2:修改PalletPro软件高级参数中“横杆检测”,根据托盘的横杆粗细程度选择。
- 托盘角度过大导致识别失败
软件界面报错“failed:-8”
解决方案:视觉对接托盘尽量小角度摆放。
7.3 对接失败
叉车视觉对接失败,需根据相机的日志、叉车导航去分析判断,因为对接过程属于多方进行,无法简单判别出是相机还是叉车。
解决方案:当出现对接失败时,如果排查不是车体问题,可找迈尔微视售前人员获取相机日志识别结果图片,排查相机识别问题。
7.4 对接偏差
叉车视觉对接偏差,也是需要多方一起去排查,可先通过获取相机日志识别结果,判断是否是相机识别错误导致。
解决方案1:如果叉车每次对接托盘都偏,那可能是相机标定问题。建议重新使用标准托盘进行标定后,再次对接托盘查看是否有偏差。
解决方案2:如果无标定托盘,没有标定环境。可将叉车插取托盘中心,然后拉出叉车叉臂距离托盘500mm,通过PalletPro软件查看识别结果,如输出坐标为Y方向在10mm波动属于正常范围,如果超出值特别大,请手动调节横向偏差。
例:
- 托盘在相机的视野正中心。理论y结果“0”,但是实际检测结果为“-42”。
- 通过调节“高级参数”中的“t”参数,第一个值为横向偏移值。
- 图中得到的“-42”,正面托盘相对相机偏左。那么需要将t的横向偏移值“+42”。如下图更改参数后,点击“保存参数”按钮。
- 输出识别结果就会从“-42”变为“1”左右。证明偏移修改成功。
8. 附录
8.1 错误码
接收到数据均为0.0.0的情况时,打开PalletPro软件时有图像输出,但是图像显示界面显示为负值错误码。可根据错误码对应的解决方法进行解决。如果修改后仍无法解决,请与迈尔微视售前人员联系。
错误码 |
说明 |
解决方法 |
---|---|---|
0 |
正常识别 |
/ |
-1 |
图像无数据或数据不足 |
通过上位机软件确认相机是否正常出图。 |
-2或-6 |
点云数据过少,未检测到托盘腿 |
可能存在原因 1.相机或叉臂抬升高度发生变化 2.腿部被遮挡 3.相机或叉臂发生俯仰 4.腿部成像不足 5.反光柱靠托盘太近影响相机成像 注:建议通过PalletPro软件确认后进行配置参数调整、调整反光柱,或调整叉车姿态。 |
-3 |
托盘腿尺寸未满足需求或未检测到托盘腿 |
托盘腿部特征超过识别范围 (可调整腿宽或者托盘宽度范围) |
-4 |
相机安装高度未设置 |
调整安装高度 |
-5 |
托盘校验未通过:托盘横梁检测异常或托盘倾斜角过大 |
横梁未识别到,建议通过上位机关闭飞行像素,或调整对接距离使相机靠近托盘。 |
-7 |
视野中托盘腿宽度差异过大 |
检查托盘附件是否有反光柱或者靠近墙面影响边缘腿成像 |
-8 |
视野中托盘角度倾斜过大(>30度) |
摆正托盘 |
8.2 双腿识别算法说明
方法一:通过修改高级参数中的“two_leg”值,1为开启,0为关闭。
注:当双腿识别功能开启时,系统优先检测三腿托盘,检测失败后,才进行双腿托盘检测。
方法二:通过参数配置实现。参数配置通过JSON格式字符串输入,配置传入后自动写入相机内部。
示例:
{“two_leg”: 1}开启双腿托盘检测;
{“two_leg”: 0}关闭双腿托盘检测。
8.3 多托盘识别说明
启用多托盘识别开关(默认关闭),multi_level = 1;
多托盘结果输出
- 软件界面部分,最上端相机坐标数据和机器人下坐标数据保持不变,同单托盘兼容,反馈最下端识别到的托盘结果;多托盘识别开启后,下侧的绿字代表识别到的多层托盘数据,由上至下排列。如识别失败,则反馈失败错误码。
- 结果输出部分。通过上位机C++ API调用,调用接口如下:
int LXPL_LocatePallet(LxPalletPose* output, LXPL_Handle handle);
其中,输出结构体LxPalletPose定义如下:
typedef struct {
int return_val;
float x, y, yaw;
int extents[8192];
} LxPalletPose;
通过上位机API C++接口调用获取托盘数据
(具体参考上位机目录Sample\C\application_pallet\application_pallet.cpp)
//获取数据
void* algordata = nullptr;
checkTC(DcGetPtrValue(handle, LX_PTR_ALGORITHM_OUTPUT, &algordata));
LxPalletPose* palletdata = (LxPalletPose*)data_ptr;
多托盘开启时,多层托盘信息在Extents中。
Extents |
内容 |
说明 |
---|---|---|
0 |
托盘高度(以相机光心为远点,向下为正) |
最底部托盘 |
1 |
托盘长度(左腿中心到右腿中心的距离) |
|
2 |
托盘腿的数量 |
2 or 3 |
3 |
托盘腿1宽度 |
|
4 |
托盘腿2宽度 |
|
5 |
托盘腿3宽度 |
|
6 |
—— |
|
7 |
托盘孔宽度(左) |
|
8 |
托盘孔宽度(右) |
|
9 |
—— |
|
10 |
托盘总数n(有效,从上到下,最大4) |
|
11 12 13 14 |
p1: <x, y, theta * 1000, height> |
第1个托盘信息 |
15 16 17 18 |
p2: <x, y, theta * 1000, height> |
第2个托盘信息 |
19 20 21 22 |
p3: <x, y, theta * 1000, height> |
第3个托盘信息 |
23 24 25 26 |
p4: <x, y, theta * 1000, height> |
第4个托盘信息 |
8.4 定制算法说明
如需三腿托盘以外的托盘识别(如无腿托盘),请与迈尔微视售前人员或销售人员沟通。如下图所示都需要定制算法。
8.5 推荐运动控制方式
8.5.1 两次对接
两次对接方式采用两次获取相机识别结果、分别为远端定位、近端校验、盲走叉取三步方式进行叉取托盘。
- 远端定位:
叉车接收到调度任务运动到对接点启用托盘识别相机数据,叉车通过运动控制进行角度与横向偏移调整,远端对接点建议托盘距离相机范围1800mm-2800mm范围内。
- 近端校验:
叉尖距离托盘前沿200mm是再次获取相机识别结果,校验对接精度是否满足叉取,满足叉车直线叉取托盘,不满足原地调整叉取托盘再进行叉取。
8.5.2 实时对接
实时对接方式采用实时获取相机识别结果,并结合到运动控制叉车实时调整位姿,待叉车运动到叉尖距离托盘前沿200mm左右时,进行微调然后直接叉取托盘。
注:使用实时对接时需要加入时间戳,通过算法结果的时间戳判断数据更新,防止延时导致的误纠偏。
8.6 特殊说明
8.6.1 黑色栈板金属栈板识别特殊说明
- 因TOF原理M系列相机受低反、高反反射率影响,5%反射率的黑色栈板可实现2m范围内的成像效果,调试时也可通过上位机软件高积分时间与低信号阈值优化黑色栈板成像效果。
- 黑色栈板可识别的范围横向偏移最大可支持±400mm(相机光心距离栈板中心),最大可支持托盘旋转角度±10°。
- 高反反射率大于100%时、低反反射率低于5%时,即黑色托盘与金属原色托盘进行识别评估时,建议客户使用M系列产品进行实际测试,以判断识别效果。
8.6.2 识别托盘条件说明
标准托盘实现判断依据须同时满足一下条件(标准托盘类型仅限:第一节介绍中图片所示)
①:托盘宽度范围:800mm-2000mm;
②:托盘长度范围:800mm-2000mm;
③:托盘高度范围:80mm-200mm;
④:托盘腿宽度范围:40mm-200mm;
⑤:托盘孔宽度范围:300mm-600mm;
⑥:托盘横梁厚度:30mm以上;
⑦:托盘识别距离1200mm-3000mm,必须保证托盘整体在相机视野内不受干扰、托盘无遮挡。
尽量避免托盘被遮挡的情况,如下图所示。
8.6.3 高位取货反光柱部署影响
在立体库位叉车存取货物时,导航需通过反光柱实现定位,但托盘识别相机又容易被反光柱影响识别,需在部署时规避反光柱对托盘识别造成识别影响,建议在实施部署反光柱时,让反光柱与托盘腿错开,如图所示。
8.7 关于相机说明
M系列相机为托盘对接应用相机。
M4 pro可支持485 modbus rtu协议;
M4相机可支持CAN OPEN协议;
可根据项目进行选择相机类型。