一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于ROS的AGV叉车库位托盘识别及辅助定位方法及系统与流程

2021-10-24 10:28:00 来源:中国专利 TAG:叉车 托盘 识别 辅助 定位

基于ros的agv叉车库位托盘识别及辅助定位方法及系统
技术领域
1.本发明涉及一种基于ros的agv叉车库位托盘识别及其插取辅助定位方法及系统。


背景技术:

2.随着人工智能技术的飞速发展,机器人的智能化也是必然趋势。同时随着机器人技术的成熟,机器人的应用范围也在不断的拓展,有适用于工业生产制造的工业机器人、服务人们日常生活的家庭服务机器人、辅助医生和病人的医疗机器人、用于国防部队的军事机器人等。
3.agv(automated guided vehicle)叉车是工业机器人的一种,具有移动、自动导航、多传感器控制、网络交互、装卸托运等功能。agv叉车作为一种人工智能化工业装卸车,完成的任务主要有对托盘的货物进行装卸和用作短途交通运输的装卸车等。随着仓库周转率和订单量增加,为保证工作效率,越来越多的用户将传统人工叉车换成无人的agv叉车,无人的agv叉车有着更为广阔的应用前景。利用独有的视觉和人工智能技术,未来机器人为工厂和仓库的物流无人化升级提供柔性解决方案。计算机视觉的深层应用赋予了无人叉车更高的定位与感知精度,结合运动控制、深度学习等技术,agv叉车更加聪明,可快速筛选并执行最优的任务完成策略。
4.在agv叉车进行货物装卸搬运工作的工厂中,因库位中的托盘及其货物也会存在被人工插走的可能,所以agv叉车在取货时,需要在进工位前使用视觉相机去实时检测识别对应的目标库位点有无托盘,进而告知系统该库位点货物已被搬运走,同时agv叉车本身也不用继续去该库位点取货。另一方面,有时货物也会出现放错位置的情况,如将货物错放在其他种类货物的库位中。这时如果用不同类型的托盘放置不同种类的货物,利用视觉相机对不同托盘进行识别,就可以区分开不同货物,进而判断所插取的货物是否正确。传统机器视觉感知方法主要通过人工设计的特征,利用特征点进行匹配等来识别目标对象。这种算法在实际的应用中,由于目标物体的形态复杂、环境的光线变化常常表现的不尽人意。目前基于深度神经网络的检测技术已经成为主流方法,并且在开放目标检测数据集上的检测效果和性能都很出色。
5.在库位摆放托盘时,有时未能严格按照规定的要求摆放,托盘摆放不整齐,这就导致托盘的位置与原定设置的摆放位置存在倾斜偏差。如果agv叉车继续按原定的规划路径和程序取执行插取任务,会出现货叉插不准的情况出现。此时利用搭载的传感器设备,在原定规划的路径基础上来辅助agv叉车对托盘进行定位,可以使得叉车能够更加精准地对托盘进行插取装卸作业。
6.ros:ros(robot operating system,机器人操作系统)提供一系列程序库和工具以帮助软件开发者创建机器人应用软件。它提供了硬件抽象、设备驱动、函数库、可视化工具、消息传递和软件包管理等诸多功能。ros执行若干种类型的通讯,包括基于服务的同步rpc(remote procedure call,远程过程调用)通讯、基于topic(话题)的异步数据流通讯,还有参数服务器上的数据存储。
7.yolov4:yolo(you only look once,你只要看一次)是一种深度学习的目标检测方法,该方法的特点是实现快速检测的同时还达到较高的准确率,yolo采用单个神经网络直接预测物品边界和类别概率,实现端到端的物品检测。yolov4为yolo系列第四代目标检测方法,继承了yolo系列的思想和理念,可以使用传统的gpu(graphics processing unit,图像处理单元)进行训练和测试,并能够获得实时、高精度的检测结果。


技术实现要素:

8.1、本发明的目的
9.发明的目的是辅助agv叉车在进入库位插取托盘前检测托盘是否还在原位置,以及检测托盘种类是否正确,避免重复无用操作。同时由于托盘放置不严格导致的错位,插取辅助定位系统可以协助agv叉车准确的对托盘进行定位,从而更好地完成agv叉车插取拖运作业。
10.2、本发明所采用的技术方案
11.本发明公开了一种基于ros的agv叉车库位托盘识别及辅助定位方法,包括:
12.对库位中托盘的检测识别步骤,使用深度学习训练好的模型预测图像中托盘支撑柱及其像素位置,利用深度相机计算出各根支撑柱中心在相机坐标系下的三维坐标;
13.托盘位姿计算步骤,通过对深度相机坐标系、agv叉车货叉坐标系、agv叉车本体坐标系之间的坐标转化关系计算,求解托盘相对于agv叉车本体的位姿;
14.控制agv叉车及货叉运动至可插取位置步骤,使得agv叉车的货叉能够正对托盘的空洞。
15.更进一步,检测识别步骤s1:
16.s11、对库位中的托盘样本数据进行拍摄采集;
17.s12、使用图像标注软件labelimg对样本数据进行标注,框选出各图中的不同种类托盘的支撑柱,标记不同种类托盘的标签保存并输出标注文件,之后划分数据集;
18.s13、物体检测模型的训练,搭建基于深度学习yolov4

csp目标检测网络;yolov4的网络结构分为四部分,包括输入、主干、颈部、头部;yolov4在输入端采用丰富检测数据集的方法,包括马赛克数据增强、sat策略;yolov4的backbone以cspdarknet53网络框架作为网络提取骨干用于特征提取;颈部部分主要采用了spp模块、fpn和pan的方式,用spp模块来融合不同尺度大小的特征图,增加主干特征的接收范围,利用自顶向下的fpn特征金字塔和自底向上的pan特征金字塔来提升网络的特征提取能力;yolov4的头部部分训练的损失函数为l
ciou
,l
ciou
是在计算边界框回归时,同时考虑了预测框a和真实框b的重叠面积、中心点距离和宽高比的损失函数;l
ciou
具体的计算方法如下式:
[0019][0020]
式中,distance_2为预测框和真实框中心点的欧式距离,distance_c为预测框和真实框最小外接矩形的对角线距离;iou(intersection over union,交并比)是测量在特定数据集中检测相应物体准确度的一个标准,其计算公式为:
[0021]
[0022]
其中∩表示两者的并集,∩表示两者的交集;式(1)中的v是用于衡量宽高比一致性的参数,计算公式为:
[0023][0024]
式中,w
gt
、h
gt
分别为真实框的宽和高,w
p
、h
p
分别为预测框的宽和高,arctan是反正切函数;
[0025]
yolov4

csp在neck部分的fpn、pan的上采样和下采样阶段和spp模块中加入了跨阶段局部网络结构cspnet,将基础层的特征图分割成两部分,然后通过跨阶段分层结构进行合并;
[0026]
s14、在gpu计算机上通过训练得到效果好的托盘支撑柱检测识别模型。
[0027]
更进一步,托盘位姿计算步骤s2:
[0028]
s21、打开叉车货叉上的深度相机,运行yolov4

csp检测模型,检测的数据会通过ros发送bounging_boxes的话题,bounging_boxes包含检测框信息并通过ros发送的话题消息;该话题中包含了每个被识别到的托盘支撑柱、托盘的种类、托盘支撑柱的置信度、检测框的左上和右下点的像素坐标;
[0029]
s22、在ros下创建yoloobject和yoloobjects两个消息;yoloobject和yoloobjects是自定义的消息类型,用于存放转换后的坐标信息;yoloobject消息中包含着单个托盘支撑柱的标签信息和中心点的三维坐标,yoloobjects消息用于存放所有yoloobject消息;
[0030]
s23、通过ros订阅bounging_boxes和相机的彩色图像、深度数据、内参话题消息,将支撑柱中心点的二维像素坐标(u,v)转化为三维坐标(x,y,z),转化计算如下:
[0031]
z=0.001*d
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4)
[0032][0033][0034]
其中,d为该像素点的深度数据,f
x
,f
y
为相机的焦距,c
x
,c
y
为相机主点;
[0035]
s24、将托盘支撑柱中心点的三维坐标(x,y,z)信息和托盘的种类信息存放在yoloobject中。
[0036]
更进一步,所述的步骤s24,种类信息存放在yoloobject中:
[0037]
判断每个支撑柱的x轴坐标大小,从小到大依次排列,分别为左侧的支撑柱a、中间的支撑柱b、右侧的支撑柱c;然后按顺序将每个yoloobject添加到yoloobjects中,利用ros将yoloobjects通过自定义的pose_point话题发布出去;pose_point话题是被创建用于发送yoloobjects消息的ros话题。
[0038]
更进一步,s3、agv叉车接收到检测信息,控制agv叉车及货叉运动至可插取位置;具体步骤如下:
[0039]
s31、agv叉车运动至需要插取的托盘库位处,设置货叉的控制参数,控制货叉升降至初始准备位置;根据升降位置确定货叉坐标系{h}与叉车本体坐标系{b}变换矩阵
[0040]
s32、通过手眼标定,确定相机坐标系{c}到货叉坐标系{h}下的变换矩阵打开
深度相机进行s2的检测步骤,通过相机检测托盘的支撑架来判断此处库位的托盘是否被取走以及判断托盘类型,如果没有检测到托盘的支撑架,则提示控制系统托盘已被取走;如果检测到托盘类型不正确,提示控制系统托盘托盘货物放错位置;如果检测到了正确托盘的支撑架,则将结果通过pose_point话题发送出去;
[0041]
s33、agv叉车订阅pose_point话题,将托盘三根支撑柱a、b、c在相机坐标系{c}下中心点的三维坐标
c
p
a

c
p
b

c
p
c
转化到叉车本体坐标系{b}下:
[0042][0043][0044]
式中,
h
p
a

h
p
b

h
p
c

b
p
a

b
p
b

b
p
c
分别是三根支撑柱的中心点在货叉坐标系和agv叉车本体坐标系的坐标;
[0045]
s34、要求agv叉车能够插取托盘则需要货叉正对托盘,即托盘面的中心与货叉的中心点对齐,且托盘插取面平行于叉车的门架面;托盘支撑柱a、b、c在agv叉车本体坐标系的三维坐标分别为
b
p
a
=[x
a
,y
a
,z
a
]
t

b
p
b
=[x
b
,y
b
,z
b
]
t

b
p
c
=[x
c
,y
c
,z
c
]
t
;托盘的中心位置即为支撑柱b的坐标
b
p
b
=[x
b
,y
b
,z
b
]
t
,求解托盘插取面相对于叉车门架面的偏转角度θ,其中l为托盘的长度:
[0046]
δz=z
c

z
a
ꢀꢀ
(7)
[0047][0048]
式中,arcsin为反正弦函数;
[0049]
s35、agv叉车根据获得的托盘位姿信息{x
b
,y
b
,z
b
,θ},包含托盘插取面中心在叉车本体坐标系下的x、y、z轴下的坐标[x
b
,y
b
,z
b
]
t
以及托盘插取面相对于叉车门架面的偏转角度θ;通过这些信息对叉车本体及货叉升降的高度位置进行调整,使得agv叉车的货叉正对着托盘的托孔,agv叉车向前行驶插取托盘,完场任务。
[0050]
本发明提出了一种基于ros的agv叉车库位托盘识别及辅助定位系统,包括存储器和处理器,存储器存储有计算机程序,所述处理器执行所述计算机程序时实现所述的方法步骤。
[0051]
3、本发明所采用的有益效果
[0052]
1)本发明利用深度学习的检测模型能够很好的对托盘进行识别。传统的方法是利用点云信息对托盘进行轮廓提取,通过轮廓的边缘之间宽度来识别是否为托盘的孔洞和支
撑柱,从而判断是否为托盘。本发明提出的深度学习的检测方法相较于传统的方法,识别效果更佳,准确性更高,鲁棒性更好。
[0053]
2)本发明利用改进的yolov4深度学习网络结构yolov4

csp对托盘样本进行训练,训练好的网络模型检测速度更快,使得agv叉车能够实时对库位中的托盘进行检测,提升了工作效率。
[0054]
3)本发明中的agv叉车插取时的辅助定位系统与传统的agv预设好坐标轨迹相比,当托盘由于摆放不严格等原因导致与原定位置不一致时,利用深度相机和深度学习的检测模型对托盘进行定位,能够更好的辅助叉车插取托盘。
[0055]
4)本发明均在ros框架下运行,模块之间的结果通过ros系统以话题的形式发布订阅进行通讯传输,系统运行更加实时通畅。
附图说明
[0056]
图1为深度学习检测识别模型的训练流程图。
[0057]
图2为agv叉车库位托盘识别及其插取辅助定位系统的流程图。
[0058]
图3为agv叉车需要识别搬运的托盘类型,a、b、c分别表示托盘的支撑柱。
[0059]
图4为托盘相对agv叉车位姿的俯视图。
[0060]
图5为检测识别模块和agv叉车控制模块在ros下的话题发布和订阅的可视化图。
[0061]
图6为agv叉车结构示意简图。
具体实施方式
[0062]
下面结合本发明实例中的附图,对本发明实例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域技术人员在没有做创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。
[0063]
下面将结合附图对本发明实例作进一步地详细描述。
[0064]
实施例1
[0065]
一种基于ros的agv叉车库位托盘识别及其插取辅助定位系统,其包含对库位中托盘的检测识别和对托盘位姿计算两部分。库位托盘的检测部分包含了深度相机和搭载gpu的计算机,计算机通过使用深度学习训练好的模型预测图像中托盘支撑柱及其像素位置,利用深度相机计算出各根支撑柱中心在相机坐标系下的三维坐标。托盘位姿计算部分通过对深度相机坐标系、agv叉车货叉坐标系、agv叉车本体坐标系之间的坐标转化关系计算,求解托盘相对于agv叉车本体的位姿,从而控制agv叉车运动使得agv叉车的货叉能够正对托盘的空洞。通过基于ros的agv叉车库位托盘识别及其插取辅助定位系统可以使得agv叉车能够更有效的对库位中的托盘进行插取拖运工作,提高生产效率。
[0066]
本发明主要实现步骤包含如下:
[0067]
s1、基于改进的yolov4目标检测网络yolov4

csp来训练托盘的检测识别模型,具体步骤为:
[0068]
s11、对库位中的托盘样本数据进行拍摄采集。
[0069]
s12、使用图像标注软件labelimg对样本数据进行标注,框选出各图中的不同种类
托盘的支撑柱,标记不同种类托盘的标签。保存并输出标注文件,之后划分数据集,训练集和测试集的比例为9:1。
[0070]
s13、物体检测模型的训练,搭建基于深度学习yolov4

csp目标检测网络。yolov4的网络结构可以分为四部分,input(输入)、backbone(主干)、neck(颈部)、head(头部)。yolov4在input输入端有马赛克数据增强、sat(self

adversarial

training,自对抗训练)等策略,丰富了检测数据集。yolov4的backbone以cspdarknet53网络框架作为网络提取骨干用于特征提取。neck部分主要采用了spp(spatial pyramid pooling,空间金字塔池化)模块、fpn(feature pyramid networks,特征图金字塔网络)和pan(path aggregation network,路径聚合网络)的方式,用spp模块来融合不同尺度大小的特征图能有效的增加主干特征的接收范围,利用自顶向下的fpn特征金字塔和自底向上的pan特征金字塔来提升网络的特征提取能力。yolov4的head部分训练的损失函数为l
ciou
,l
ciou
是在计算边界框回归时,同时考虑了预测框a和真实框b的重叠面积、中心点距离和宽高比的损失函数。l
ciou
具体的计算方法如下式:
[0071][0072]
式中,distance_2为预测框和真实框中心点的欧式距离,distance_c为预测框和真实框最小外接矩形的对角线距离。iou(intersection over union,交并比)是一种测量在特定数据集中检测相应物体准确度的一个标准,其计算公式为:
[0073][0074]
其中∩表示两者的并集,∩表示两者的交集。式(1)中的v是用于衡量宽高比一致性的参数,计算公式为:
[0075][0076]
式中,w
gt
、h
gt
分别为真实框的宽和高,w
p
、h
p
分别为预测框的宽和高,arctan是反正切函数。
[0077]
与yolov4相比,yolov4

csp在neck部分的fpn、pan的上采样和下采样阶段和spp模块中加入了跨阶段局部网络结构cspnet(cross stage partial network)。cspnet将基础层的特征图分割成两部分,然后通过跨阶段分层(cross

stage hierarchy)结构进行合并。cspnet网络结构可以增强cnn(convolutional neural network,卷积神经网络)的学习能力,轻量化模型的同时保持模型的精度,降低整个模型的计算瓶颈,同时降低算法的内存成本。cspnet的主要目的是使这个架构能够实现更丰富的梯度组合,同时减少计算量。yolov4

cspnet网络模型相较于yolov4在普通gpu处理器上有更佳均衡的速度和精度。
[0078]
s14、在gpu计算机上通过训练得到效果好的托盘支撑柱检测识别模型。
[0079]
s2、利用训练好的模型检测托盘,通过深度相机计算托盘三根支撑柱中心的三维坐标,通过ros将检测的数据消息发送给agv叉车,具体步骤如下:
[0080]
s21、打开叉车货叉上的深度相机,运行yolov4

csp检测模型,检测的数据会通过ros发送bounging_boxes的话题。bounging_boxes是包含着检测框信息并通过ros发送的话题消息。该话题中包含了每个被识别到的托盘支撑柱、托盘的种类、托盘支撑柱的置信度、
检测框的左上和右下点的像素坐标等。
[0081]
s22、在ros下创建yoloobject和yoloobjects两个消息。yoloobject和yoloobjects是自定义的消息类型,主要用于存放转换后的坐标信息。yoloobject消息中包含着单个托盘支撑柱的标签信息和中心点的三维坐标,yoloobjects消息用于存放所有yoloobject消息。
[0082]
s23、通过ros订阅bounging_boxes和相机的彩色图像、深度数据、内参话题消息,将支撑柱中心点的二维像素坐标(u,v)转化为三维坐标(x,y,z),转化计算如下:
[0083]
z=0.001*d
ꢀꢀ
(4)
[0084][0085][0086]
其中,d为该像素点的深度数据,f
x
,f
y
为相机的焦距,c
x
,c
y
为相机主点。
[0087]
s24、将托盘支撑柱中心点的三维坐标(x,y,z)信息和托盘的种类信息存放在yoloobject中。判断每个支撑柱的x轴坐标大小,从小到大依次排列,分别为左侧的支撑柱a、中间的支撑柱b、右侧的支撑柱c。然后按顺序将每个yoloobject添加到yoloobjects中,利用ros将yoloobjects通过自定义的pose_point话题发布出去。pose_point话题是被创建用于发送yoloobjects消息的ros话题。
[0088]
s3、agv叉车接收到检测信息,控制agv叉车及货叉运动至可插取位置。具体步骤如下:
[0089]
s31、agv叉车运动至需要插取的托盘库位处,设置货叉的控制参数,控制货叉升降至初始准备位置。根据升降位置确定货叉坐标系{h}与叉车本体坐标系{b}变换矩阵
[0090]
s32、通过手眼标定,确定相机坐标系{c}到货叉坐标系{h}下的变换矩阵打开深度相机进行s2的检测步骤,通过相机检测托盘的支撑架来判断此处库位的托盘是否被取走以及判断托盘类型,如果没有检测到托盘的支撑架,则提示控制系统托盘已被取走;如果检测到托盘类型不正确,提示控制系统托盘托盘货物放错位置;如果检测到了正确托盘的支撑架,则将结果通过pose_point话题发送出去。
[0091]
s33、agv叉车订阅pose_point话题,将托盘三根支撑柱a、b、c在相机坐标系{c}下中心点的三维坐标
c
p
a

c
p
b

c
p
c
转化到叉车本体坐标系{b}下:
[0092]
[0093][0094]
式中,
h
p
a

h
p
b

h
p
c

b
p
a

b
p
b

b
p
c
分别是三根支撑柱的中心点在货叉坐标系和agv叉车本体坐标系的坐标。
[0095]
s34、要求agv叉车能够插取托盘则需要货叉正对托盘,即托盘面的中心与货叉的中心点对齐,且托盘插取面平行于叉车的门架面。托盘支撑柱a、b、c在agv叉车本体坐标系的三维坐标分别为
b
p
a
=[x
a
,y
a
,z
a
]
t

b
p
b
=[x
b
,y
b
,z
b
]
t

b
p
c
=[x
c
,y
c
,z
c
]
t
。托盘的中心位置即为支撑柱b的坐标
b
p
b
=[x
b
,y
b
,z
b
]
t
,求解托盘插取面相对于叉车门架面的偏转角度θ,其中l为托盘的长度:
[0096]
δz=z
c

z
a
ꢀꢀ
(7)
[0097][0098]
式中,arcsin为反正弦函数。
[0099]
s35、agv叉车根据获得的托盘位姿信息{x
b
,y
b
,z
b
,θ},这些信息包含托盘插取面中心在叉车本体坐标系下的x、y、z轴下的坐标[x
b
,y
b
,z
b
]
t
以及托盘插取面相对于叉车门架面的偏转角度θ。通过这些信息对叉车本体及货叉升降的高度位置进行调整,使得agv叉车的货叉正对着托盘的托孔,agv叉车向前行驶插取托盘,完场任务。
[0100]
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜