日期: 2022/01/10

产品合集 | 仙工智能识别专栏之料笼识别

#1 仙工智能识别料笼需要依赖二维码

为什么要使用二维码识别?
视觉传感器作为一种可以获取丰富纹理和色彩的传感器,在识别和定位方面可以起到很大的作用。如果直接去识别料笼,在不提升控制器计算性能的前提下难度较大。二维码识别作为视觉传感器的一种典型应用,根据其显著的特征,能够做到快速、准确的识别。
仙工智能目前支持 AprilTag 种类中的 16h5,25h7 以及 36h11。
AprilTag 下图左边为 16h5,右边为36h11:



16h5 相比于 36h11 的优势在于相同尺寸时分辨率更低,因此可被观测距离更远,但缺点是更容易被误识别,因此需要根据需要选择不同种类的 tag。

#2 料笼二维码识别

识别文件配置说明
实际使用二维码时,通常将两个二维码对称贴在目标物体上,识别的位置为两个二维码的中点,因此需要指定二维码与目标物体之间的空间关系。将坐标关系描述记录在描述文件,后缀名为 .tag,存放于 Robokit /resource/objects/tag/ 目录下,或在 Roboshop 识别文件中“tag”标签下编辑。
打开 Roboshop 软件,点击【识别文件】标签页进入配置界面,选择一个【tag】文件,在右侧的属性窗进行货架描述文件的参数配置。如下图所示:


其中,【属性窗口】的各个参数释义如下
X_Dis:二维码中心在货架坐标系中x方向的坐标;
Y_Dis:二维码中心在货架坐标系中y方向的坐标;
Z_Dis:二维码中心在货架坐标系中z方向的坐标;
goodsWidth:货架宽度;
goodsLength:货架长度;
tagDistance:两二维码中心的水平距离(默认在同一高度);
enable_cargoContacDI:默认勾选;
enable_back_dist:是否允许在识别之后后退调整;
back_dist:后退的距离;
blackBorder:最外层黑边的层数,默认为 1;
tag_rows:tag 列数,默认为 1;
tag_cols:tag 行数,默认为 1;
tagSize:二维码大小;
tagSpacing:在其他识别中使用,这里不做说明。
Tagtype:二维码种类。

#3 料笼二维码识别

使用说明
将两个二维码对称贴在待识别物体表面,如下图所示:




在完成上述二维码识别的配置之后,只需要在货架点位对应的前置点属性中配置识别模型文件,即 tag 文件,然后将线路属性中的 ObsExpansion 设置为 0,避免行进过程中机器人停障。接着要进行执行动作的配置:



1. 需要识别料笼所在位置,并将料笼插取起来,需要勾选 Recognize,点击 Load。
2. 不需要识别料笼所在位置,开环的插入到一个固定位置上,并插取起来,不需要勾选 Recognize,直接点击 Load。
3. 需要识别位置上有没有料笼,并放置料笼,勾选 Recognize,点击 Unload,若有料笼占用的话,会报错;不需要识别,直接开环放置,不用勾选 Recognize,直接点击 Unload。
4. 需要点击 Wait 的情况比较少,若勾选了 Recognize,再点击 Wait,机器人就会识别料笼位置,插入料笼,然后结束任务,不会动作插取模块;若不勾选 Recognize,直接点击 Wait,机器人就会固定路径导航到工作站,然后结束任务,不会动作插取。



那么在执行路径规划的时候选择执行动作,AMR 在这个前置点上会自动切换到识别模式,根据识别到二维码的位置来推算出料笼的中心位置并自动生成到达此位置的路线。

#4 料笼二维码识别

其他说明
二维码需要粘贴平整,其中二维码应垂直正确贴在目标物体表面,二维码最好保持横平竖直贴放,即有数字和 id 的需要朝下水平放置,方向如下:



对于二维码识别而言,识别的位置精度随着距离增加而减小,在二维码离相机超过最大识别距离时,就无法识别到二维码。在通常比较好的情况下,相机的 Z 方向垂直于二维码平面,相机距离二维码 2m 以内时,测量出的位置在垂直方向的精度小于 2cm,水平方向的精度小于 1.5cm。
对于二维码识别而言,识别的位置精度随着距离增加而减小,在二维码离相机超过最大识别距离时,就无法识别到二维码。
对于 AprilTag 而言,其中每个模块的大小为:S=t/r,其中 t 是二维码的大小,r 是模块的在 x 方向的数量。而在像素坐标系里,需要识别出每个 tag,每个模块至少为 55 个像素, 因此最大观测距离可以近似表示为:D=ft/u,其中 f 为相机的焦距,t 为 tag 的实际尺寸,u 为二维码的最小像素数量。
如果二维码的尺寸为 10cm*10cm,假设相机的焦距为 1075,对于不同种类的二维码的最大观测距离分别为: