柏宇豪,黄 民,刘相权
(北京信息科技大学 机电工程学院,北京 100192)
目前自动仓储机器人系统在仓库管理和仓库调度领域中发挥着关键作用。传统的物流配送模式效率较低,采用自动化搬运系统才能高效完成大量货物的搬运工作。在国外,搬运机器人市场主要被日本、欧美等国家占据:日本品牌主要有 YASKAWA、FANUC,欧美品牌中主要有 KUKA、COMAU[1]。国内相对国外发展较晚,在“七·五”期间,上海沃迪、沈阳新松、盐城宏达等公司逐渐占据了国内物流行业的大部分市场。自动化搬运相比于传统的人工搬运,具有安全、快速、节约成本的优点,所以研究自动化搬运系统意义深远。
设计一套完整的机器人搬运自动化系统需要视觉技术、数据库技术、串口传输技术和机器人编程技术等。其中视觉技术作为自动化搬运系统中获取环境信息的主要手段和关键环节,可为机械臂在工作过程中实时提供判断信息[3]。数据库技术的发展为智能仓储机器人带来了极大的便利,它可以储存仓库中所有货物的数据信息[4]。机器人编程技术作为系统控制的核心,起到承上启下的作用。基于此,本文通过分析实际搬运环境,编写机器人工作流程,并将以上技术进行集成,设计出一套拣选机器人自动搬运系统。
针对拣选机器人所要工作的仓库环境,以及搬运系统所需要的功能,制定了整套系统的搬运流程,并将其划分为5大模块。
自动搬运系统首先采用单目摄像机识别货堆中箱体,将其划分为不同区域的同时获取位置信息。之后控制机械臂进行运动,采用真空吸盘吸附货物,将第1层所有货物搬运到指定的位置。接着重新回到拍照位置,获取第2层货物的位置信息,重复搬运过程。当两层货物搬运结束后,机械臂回到起始位置。整个工作流程如图1所示。
图1 工作流程
分析工作流程,搬运系统应具有3种功能。
1)搬运功能。机器人能够在有限的工作空间内将货物搬运到指定地点,同时机械臂的运动速度和运动位置能够人工调节。
2)通讯功能。机器人作为执行机构,需要接受位置信息和货物信息,应能控制系统进行通讯。
3)识别功能。每一层的货物数量以及每件货物的位置信息都需精确地辨析出来,这就需要视觉处理技术和数据库技术相互配合。
结合工作流程和系统所需要的3种功能,将模块分为5个:通讯模块、视觉模块、控制模块、机器人模块和数据库模块。其模块结构如图2所示。其中数据库模块储存着所有货物的尺寸大小、重量、位置信息和剩余数量。视觉模块通过图像处理技术和数据处理技术获取货物的三维坐标[5]。数据库和视觉模块共同完成识别功能。机器人模块主要由机器人控制程序来控制机械臂的运动以及机械臂末端的吸盘吸放。控制模块主要控制视觉、数据库、机器人和视觉模块的工作,并实时显示Kinect采集到的位置数据。这2个模块作为核心共同完成搬运功能。通讯模块作为数据存储和数据交换的中心,主要负责各模块之间的数据交换,例如视觉数据和机器人之间的传输。
图2 模块结构
系统的硬件主要由安川MH-12型机器人、工控机、单目相机和九嘴吸盘等组成。软件部分主要负责控制相机拍照、机器人运动和吸嘴工作。简易控制图如图3所示。
图3 简易控制图
这一套设备集成了多种应用技术,相机安装在吸盘上面,视觉模块以Visual Stdio2015为编程软件,实现了工件的识别与定位,并输出三维坐标。以Visual Stdio2015为编程软件,C++为编程语言,基于安川MH-12机器人的SDK对其进行二次开发,实现机器人运动控制[6]。并将数据库模块、视觉模块、机器人控制等模块集成在一起。确定软、硬件系统之后,制作的实验样机如图4所示。
图4 实验样机
市场上比较流行的抓取工具为气动真空吸盘。真空吸盘通过吸嘴与货物表面之间的密闭空间形成真空,使真空吸嘴内外形成压力差,实现吸盘抓取货物的功能[7]。所以本文采用九嘴气动吸盘作为机械臂末端抓取工具。
吸盘的尺寸大小需要根据货箱的尺寸和重量进行设计。在满足搬运需求的条件下,应该基于小巧化和最危险尺寸原则。根据统计,仓库内货物的长宽范围为200 ~500 mm,根据重量和尺寸范围将货物分为4类。第一类纸箱尺寸:长度范围为200 ~310 mm,宽度范围为200~310 mm,最大质量为7.2 kg;第二类纸箱尺寸:长度大于315 mm且宽度范围为200~225 mm,或者长度范围为310~400 mm,宽度大于200 mm,最大质量为10.8 kg;第三类纸箱尺寸:长度大于400 mm,宽度范围为225~310 mm,最大质量为10.8 kg;第四类纸箱尺寸:长度大于400 mm,宽度大于310 mm,最大质量为16.2 kg。基于解决最危险尺寸原则,从4种分类中选取尺寸最小(吸嘴吸取面积最小)而且重量最大的箱子确定吸嘴分布。
危险尺寸统计如表1所示。
表1 货箱尺寸统计表
由于吸盘的中心要与机械手末端对接,所以采用偏心结构。综上考虑,最终决定分布位置如图5所示。
图5 吸嘴整体分布
所有货物中质量最大的箱子为16.2 kg,考虑到安全因素以及吸嘴的老化问题,将吸盘的最大承重增加到18 kg。所以平均每个吸嘴承担的货物重量要达到2 kg。每一个吸嘴产生的吸附力为
(1)
式中:P为吸盘内真空度(相对压力);A为吸盘的有效吸附面积;f为安全系数;
真空度p与吸盘有效吸附面积A分别是真空发生器与真空吸盘选型的关键参数,二者共同影响吸盘吸附力的产生,一般情况下吸盘的有效吸附面积为吸盘面积的80%[8]。安全系数随使用条件而异,一般情况下安全系数取1.5。根据计算吸嘴采用piGRIPG.FX55T30. B1.S1.G38 M.01型号,其技术参数如下:垂直提升力为54.2 N,垂直位移量为11.6 mm,弯曲半径为40 mm,重量为34.7 g。
整体结构设计完成后,根据每一类货物中的最危险尺寸分别设计抓取方案,即吸嘴的具体分布。
第一类货物尺寸较小,且最大重量为7.2 kg,所以采用1、2组吸嘴,4个吸嘴可以吸取8 kg的货物,可以达到工作要求;第二类和第三类货箱,最大质量为10.8 kg,6个吸嘴可以吸取12 kg货物,所以第二类采用1、2、3组吸嘴;第三类采用2、3、4组吸嘴;第四类货物最大质量为16.2 kg,且可吸附面积较大,采用全部吸嘴。
4种吸嘴位置分布如图6所示。
图6 吸嘴分布
在整个货物抓取过程中,当视觉数据传输完毕,机械臂开始抓取货物的时候,在程序中定义变量xipanzuhe,分别对4种组合标记为1,2,3,4。针对每次选择,对尺寸范围和参数xipanzuhe进行修改。其中参数boxlength、boxwidth和boxweight分别代表货物的长度、宽度和重量。部分核心代码如下:
if(boxlength<310 && boxlength>=200)&& (boxwidth<310 &&boxwidth >=200) && boxweight <=7.2)
res=_Command.esOpen();
res=_Command.esSelectJobON1();
res=_Command.esClose();
程序流程如图7所示。
图7 程序流程
本文设计的自动化搬运系统采用安川MH-12型机器人。MH-12机器人采用流线型手臂设计,这种设计有利于增加机械臂的动作范围。三维模型如图8所示,各轴运动范围如表2所示。
图8 MH-12三维图
表2 各轴运动范围
机器人运动学实际上是为了解决手臂转动问题,可为两类:正运动学和逆运动学。正运动学是用来判断机器人在三维空间中的位置;逆运动学解决机器人如何规划路径到达工作点。机器人运动学是研究机器人控制的基础[9]。
正向运动学求解机器人末端执行器相对于参考坐标系的位置和姿态;逆向运动学求解机器人能够达到的预期位姿。运动学求解使用机器人的4个参数:连杆长度、偏距、关节角度、转角,分别记为a、d、θ、α。确定参数后可以计算出变换矩阵Ti。Ti描述了连杆坐标系之间旋转和平移的一次坐标变换。对于六自由度机器人,其机械手的末端相对于固定坐标系的变换可表示为T60=T1T2T3T4T5T6,这6个坐标变换矩阵的表达式为:
(2)
(3)
(4)
(5)
(6)
(7)
运动学方程式:
(8)
其中:
nx=c1[c23(c4c5c6-s4s6)-s23s5c6]+
s1(s4c5c6+c4s6)
ny=s1[c23(c4c5c6-s4s6)-s23s5c6]-
c1(s4c5c6+c4s6)
nz=-s23(c4c5c6-s4s6)-c23s5c6
ox=c1[c23(-c4c5s6-s4c6)+s23s5s6]+
s1(c4s6-s4c5s6)
oy=s1[c23(-c4c5s6-s4c6)+s23s5s6]-
c1(c4c6-s4c5c6)
oz=-s23(-c4c5s6-s4c6)+c23s5s6
ax=-c1(c23c4s5+s23c5)-s1s4s5
ay=-s1(c23c4s5+s23c5)+c1s4s5
az=s23c4s5-c23c5
px=c1(a2c2+a3c23-d4s23)-d2s1
py=s1(a2c2+a3c23-d4s23)+d2c1
pz=-a3s23-a2s2-d4c23
如果末端连杆位姿T60已经给定了,则可以对各个关节的变量进行逆运动学求解,解出θ1~θ6的值。方法是采用相应的逆变换的矩阵左乘于方程的左右两边,然后可算出机器人的各关节的关节角度值:
(9)
θ2=
(10)
(11)
(12)
(13)
在Windows系统下,使用VS2015编写程序Sample,实现对机器人整个运动过程的控制。计算机和机器人之间使用TCP/IP标准协议进行通讯[11]。
当机器人伺服电源接通后,整个搬运系统开始工作。机械臂在取货之前将首先运动到示教位置即相机拍照位置。使用示教器将机械臂运动到最佳位置之后,通过示教器的机器人当前位置显示功能读数据控制相机拍照以及传输位置数据的程序和机器人控制程序都位于同一个计算机内,两个程序之间采用虚拟接口进行通讯,当机器人运动到示教位置之后,会发送指令使得Kinect开始传输数据。在Sample程序中添加按钮,并命名为示教位置。
其中机械臂运动控制函数esCartMove部分核心代码如下:
moveType=1;
moveData.moveData.robotNo=1;
moveData.robotPos.axesData.axis[0]=965.610 + x;
moveData.robotPos.axesData.axis[1]=-43.130 + y;
moveData.robotPos.axesData.axis[2]=345.751 + z;
moveData.robotPos.axesData.axis[3]=179.9431;
moveData.robotPos.axesData.axis[4]=2.2516;
moveData.robotPos.axesData.axis[5]=-17.7307 + angle;
程序流程如图9所示。
图9 机器人控制程序流程
货堆一般分为2层,在程序中设置变量xipancengshu来识别拿取的是第几层货物。最后的搬运实验效果如图10所示。
图10 搬运实验过程
本文设计的自动化搬运系统具有控制简易、灵活小巧的特点,适合在工作空间有限的狭小区域工作。通过对机器人原有控制系统的二次开发,使得机器人的运动控制变得更为简单,而且可以做到完全自动化运行。同时,本系统使用数据库来存储仓库中的货物信息,易于修改,为仓库内货物信息的更新和日后适用不同的范围带来极大便利。经过实验,搬运系统可以远程控制机械臂自动识别货箱,依次对每层的货箱进行搬运,并自主选择放置位置,理论上能够处理的货物数量不限。