基于机器视觉的智能搬运机器人设计
2024-05-20兰天翔
兰天翔, 刘 英
(南京林业大学机械电子工程学院,江苏 南京 210037)
近年来,随着仓储物流行业的迅速发展,自动化立体仓库的应用日益广泛,机器人搬运技术在节省劳动力、降低生产成本、改善生产环境、提高生产效率等方面有着举足轻重的作用,搬运机器人在搬运速度、抓取重量、轨迹优化等方面不断优化,取得了很大的成效。
1 设计需求
本文的搬运任务:在物料区有若干随机摆放的蓝色或黄色的塑料小物块,尺寸为30 mm×30 mm×30 mm,需要将两种颜色的物块搬运至指定的放置区,工作区域为2 000 mm×2 000 mm。针对该任务,本文设计并实现一种智能搬运机器人,如图1所示。在实现搬运的基本功能的基础上,探索机器视觉在搬运机器人中的应用,并且为了进一步提高搬运机器人的智能程度,实现一种搬运机器人自主的路径规划。
图1 智能搬运机器人
智能搬运机器人系统主要由机械结构及其控制系统、图形化用户界面、机器视觉、路径规划等4个模块组成,如图2所示。
图2 智能搬运机器人系统总框架图
2 机械结构及其控制系统
搬运机器人的机械结构及其控制系统的基本功能是提供工作所需要的运动和动力,其基本工作原理是通过控制搬运机器人上的各个运动件的运动,使搬运机器人上的末端执行器执行相应的动作功能。
2.1 机械结构
机器人的样式多种多样,在不同的工作条件下,不同的机械结构的执行效率大不相同,选择合适的机械结构将大大提高工作效率。因此,根据工作场景选择一种合适的机械结构十分重要。按照几何结构类型分类,常用的机器人的机械结构有四类:圆柱坐标结构、球坐标结构、关节坐标结构和直角坐标结构。其中,直角坐标结构也叫做笛卡尔坐标结构,其特点是结构简单,精度及刚度高,按直角坐标的形式进行动作。针对搬运任务,直角坐标结构能极大减少设计工作量以及降低编程控制难度,同时获得较高的控制精度,因此本搬运机器人选用直角坐标结构。
为了降低成本、提高搬运机器人制造效率、降低维护成本,综合考虑后,本搬运机器人采用模块化设计的思路,选用同步带型直线模组作为传动机构。直线模组发展至今,被广泛应用于工业机械手、贴片和涂胶等各类设备中。这种机械结构的特点有:精度高、占用空间小、运动速度快及寿命长等。
选用北京时代超群电器科技有限公司生产的DS45M72型同步带型直线模组,取X方向有效行程为600 mm,Y方向有效行程为900 mm。电机型号为57EBP98ALC,并选用与该闭环步进电机相配套的HBS57AJ-XL型号的步进电机驱动器。运用Solid Works进行建模,如图3(a)所示。并完成硬件搭建,如图3(b)所示。
图3 机械结构
2.2 下位机控制系统设计
在机器人系统中,下位机是指机器人系统中的从属控制器或从属设备,负责执行上位机发送的指令,控制机器人的运动和操作。在本搬运机器人中,下位机作为控制系统,兼顾电机驱动、输入、译码、插补等。本搬运机器人控制系统从硬件平台选型和软件结构设计入手进行设计并实现。
控制系统的硬件平台形式繁多,通常有三种方案,可编程序控制器(PLC)、标准的工业控制计算机和设计专用的微机控制系统。其中专用微控制器系统根据实际任务出发,只需包含通用系统的部分功能,一般以够用为准,其特点是造价低、灵活性强、体积小等。为降低成本,提高控制器专用性,综合分析后,选用专用微控制器系统作为本搬运机器人的下位机硬件。
常用的微控制器有8位单片机和32位微控制器等。在搬运任务中,下位机需要处理的任务较多、计算量较大,8位单片机相较于32位微处理器计算速度慢、存储空间小,不太能满足本搬运机器人下位机要求。而随着电子技术的发展,32位微处理器集成度越来越高,外设越来越丰富的同时,价格越来越低,32位微处理器的应用越来越广泛,是现在以及未来的大趋势,因此选择32位微处理器作为本搬运机器人的下位机。选用型号为STM32F103的最小系统板作为本搬运机器人的下位机硬件平台,并使用Keil μVision5集成开发环境进行程序编写。
搬运机器人的下位机控制系统,是一个实时多任务系统,因此需要对其软件结构进行设计。常用的控制系统软件结构有多任务并行处理结构、前后台型软件结构、中断型软件结构等。本搬运机器人下位机软件结构采用前后台型软件结构,如图4所示。前后型软件结构适合于单微处理器的数控装置,这种软件结构中,以一个实时中断服务程序作为前台程序,承担与运动直接相关的插补、位置控制等实时性要求较高的功能;以一个循环执行的程序作为后台程序,承担显示、译码、数据处理等实时性要求不高的功能。在后台程序循环工作的过程中,前台程序通过中断不断地进行定时插入。
图4 前后台型软件结构
设计并编写了本搬运机器人专用的下位机软件,如图5所示。实现了输入、译码、插补、电机驱动等功能,使下位机能通过按键或上位机发送的G代码指令,控制搬运机器人执行相应的动作。
图5 程序框图
3 上位机图形化界面
上位机是操作者与机器人设备之间进行信息交换的接口,作为机器人系统中的主控制器,负责整个系统的高级控制和决策,是机器人系统中重要的一部分。上位机通常具有更高的计算能力和更强大的处理能力,可以进行复杂的算法运算、路径规划、决策等任务。在本搬运机器人系统中,需要将下位机、机器视觉、路径规划等通过上位机软件有机结合起来,因此上位机的设计是十分重要的一部分。
针对本设计对上位机软件的需求进行分析,为了实现机器视觉检测、路径规划、控制搬运机器人运动等,本搬运机器人中上位机软件的主要功能有:实现与下位机通信,并能发送相应的G代码指令;实现通过图形化按键等控制搬运机器人运动及执行相应的功能;能够显示摄像头采集到的图形,并通过点击相应的按键调用相关的图像处理程序;实现点击相应的按键调用路径规划算法程序等。因此,本设计中主要包括串口界面、控制界面和图像处理界面三大部分。本搬运机器人使用python的标准Tk GUI工具包tkinter作为图形化界面开发工具,使用Visual Studio Code开发平台,对上位机软件的进行设计与开发。
串口界面,如图6所示。在搬运机器人中,上位机与下位机之间通过UART实现通信,上位机向下位机发送G代码,下位机发送实时状态信息给上位机,并打印在上位机接收区相应位置上以供操作者监控搬运当前状态。
图6 串口界面
控制界面如图7所示。在本搬运机器人中,设计并实现了对搬运机器人的控制界面,为了更直观地反映出搬运机器人的运动路径,设计并实现了图形化的控制区,并可以通过点击鼠标实现对搬运机器人位置的控制,摄像头捕捉到画面经过图像处理后获取到物块位置和颜色信息也能在该区域直观地显示出来,并且预留了相应的按键调用路径规划算法程序,并将规划出的路径显示在控制区画面上。
图7 控制界面
图像处理界面如图8所示。图像处理是本设计中重要的一部分,设计并实现了图像处理相关界面。
图8 图像处理界面
4 机器视觉
在机器人系统中,机器视觉的一般流程为:首先对工作区域进行完整与可靠的图像采集,然后对图像进行相应的处理,最后得到任务所需的参数。其中,图像处理大致分为图像预处理和特征提取两个步骤。图像预处理通过图像去噪、图像增强、图像平滑、图像二值化等方法,达到消除图像中的噪声、增强图像的对比度、提高图像的质量等目的,以便更好地进行后续的图像处理和分析。特征提取的目的是将图像中的信息转化为可量化的特征量,以便进行后续的分类、识别等任务。
针对本搬运机器人,为引导搬运机器人执行机构完成路径规划和抓取等一系列动作,需要获取所需抓取物块的颜色和位置信息。使用普通RGB彩色摄像头实现采集图像,选用摄像头型号为罗技C270。设计图像处理流程:图像矫正→图像滤波→转换HSV图像→腐蚀与膨胀→阈值分割→获取信息,流程图如图9所示。使用OpenCV编程实现,为更方便地与上位机软件协调工作,选用python作为编程语言。
图9 图像处理流程图
采集一张图像,如图10(a)所示。由于相机与工作平面并不能保证绝对垂直,并且捕捉到原始图像中的像素位置并不能直接映射成实际坐标位置,为了削弱由于相机位置不确定引起的误差,因此需要进行矫正。使用OpenCV中warpPerspective()方法来实现透视矫正,如图10(b)所示。图像滤波可以有效降低图片噪声,常用的滤波器有均值滤波器、中值滤波器、高斯滤波器等。经过实际测试,采用高斯滤波器进行滤波处理。使用OpenCV中GaussianBlur()方法实现高斯滤波处理,如图10(c)所示。本图像处理通过物块颜色的特征获取所需的信息,然而RGB色彩空间不能很好地反映出物体具体的颜色信息,而HSV色彩空间可以表达色彩的明暗,色调,以及鲜艳程度,可以很好地反映颜色信息。OpenCV中提供cvtColor()方法,能将图像转换到HSV色彩空间,如图10(d)所示。腐蚀和膨胀是图像形态学中两个核心操作,可以使用腐蚀和膨胀清除或强化图像中的细节。由于后续操作中筛选颜色信息得到的图像可能由于存在毛刺而导致误差,因此需要对图像进行腐蚀操作处理。使用OpenCV中提供erode()方法实现腐蚀处理,如图10(e)所示。通过OpenCV中提供的inRange()方法,设定颜色的上下限,即可根据颜色信息筛选出物块在图像中的位置,并将图像转化为二值图,如图10(f)所示。至此,已经得到表示某一颜色的二值图,需要检测其位置,可通过检测二值图连通区域的轮廓实现。OpenCV中提供的findContours()方法可以通过计算图像梯度来判断图像的边缘,然后将边缘的点封装成数组返回,通过调用该方法,就可实现物块的位置信息的获取,如图10(g)所示。
图10 图像处理
5 路径规划
针对搬运任务进行分析,其目的是将一定数量的物块从取块位置搬运到指定的放置位置,取块位置的数量和放块位置的数量相等。而对于任意一个取块位置上的物块,都可能被放入任意一个放块位置。同理,任意一个放块位置的物块,都可来源于任意一个取块位置。并且任意一个取块位置的物块都不可能放入另一个取块位置。同理,任意一个放块位置的物块都不可能来源于另一个放块位置。用图与网络的数学模型分析,将所有取块位置和放块位置组成一个非空有限集合V(G),所有V(G)中每一个可能存在的取块位置vi与放块位置的vj组成的无序对组成一个非空有限集合E(G),E(G)中的每一个元素ek记为ek=(vi,vj)或ek=vivj=vjvi(k=1,2,…,m),称为该图的一条从vi到vj的边。任意一个取块位置∀vi与任意一个放块位置的∀vj都相邻,而任意一个取块位置∀vi与其他取块位置不相邻,任意一个放块位置∀vj与其他放块位置不相邻。将所有取块位置组成一个非空有限集合X, 所有放块位置组成一个非空有限集合Y,则V(G)=X∪Y,X∩Y=Ø,|X||Y|≠0(|X|表示集合X中的元素个数),X中无相邻顶点对,Y中亦然。并且∀xi∈X,∀yj∈Y,有xiyj∈E(G),图G为完全二分图。
在搬运任务中,每一个取块位置到每一个放块位置的距离不尽相同,为了提高工作效率,需要规划出一条尽可能短的路径。又由上文分析可知,搬运任务抽象出的图G为完全二分图,需找出一组一一对应的取块位置和放块位置,那么搬运任务中的路劲规划即对应图与网络中的匹配问题。将搬运任务抽象为数学问题:G为二分图,顶点集V(G)=X∪Y,X={x1,x2,…,xn},Y={y1,y2,…,ym},且∀xi∈X,∀yj∈Y,有xiyj∈E(G),图G的每边加上权w(xiyj)≥0,表示xi到yj的距离系数,求加权图G上的权最大的完美对集。至此,分析出搬运任务的图与网络数学模型。
为解决上述问题,本搬运机器人使用库恩-曼克莱斯(Kuhn-Munkres)算法,即KM算法,这个算法是在埃德蒙兹(Edmonds)提出的匈牙利算法的基础上发展而来。匈牙利算法提出了在二分图G中求最大对集的方法,基本思想是不断地寻找增广轨,如果找到,就互换匹配边和非匹配边,让匹配边增加一条,如果找不到匹配边了,就表示已经是最大匹配了。其算法的核心就是根据一个初始匹配不停地找增广轨,直到没有增广轨为止。而KM算法在此基础上稍加修改,提出了求加权图G上权最大的完美对集的方法。
使用python编程语言将KM算法编写为相应程序,并移植到上位机中。实际测试,通过机器视觉捕捉到所抓取物块的颜色及位置信息如图11所示,选取放块位置后,进行路径规划,实际效果如图12所示。
图11 获取物块颜色及位置信息
图12 路径规划
6 总结与展望
本文设计并实现了一种基于机器视觉的智能搬运机器人。选择直角坐标结构作为搬运机器人的机械结构,选用同步带型直线模组作为搬运机器人的传动机构,使用三维建模软件Solid Works对搬运机器人的机械结构进行建模,并搭建了实物。选用了STM32F103C8T6最小系统板作为下位机控制系统的硬件平台,并编写了相应的下位机软件。使用python库中tkinter作为图形化用户界面开发工具,完成上位机的编写开发,将下位机、机器视觉、路径规划等通过上位机软件有机结合起来。选用OpenCV进行图像处理,实现了通过摄像头捕捉画面,经过图像处理后,获取物块颜色及位置信息。通过学习图与网络模型及方法,然后运用图与网络中的基本概念,针对本搬运机器人的路径规划任务进行了分析,并建立了相应的图与网络的数学模型。使用KM算法生成路径,并使用python编程语言将KM算法编写为相应程序,实现了搬运机器人的路径规划。
虽然本文成功设计并实现了一种基于机器视觉的智能搬运机器人,但在具体实施过程中,通过不断学习和反思,发现仍有许多方面有待提升,以及有更好的方案选择可作为后期优化。下位机部分,后续可设计专用化的电子电路硬件结构,选用算力更强的微处理器作为软件功能的有力支撑。上位机部分,后续可加入更多功能,如通过上位机进行参数修改等。界面可做进一步优化升级,使界面更加美观。机器视觉部分,目前仅实现静态检测,后续可加入动态检测的功能,以适应更多实际环境,如工业流水线。对于路径规划部分,目前使用的KM算法仅是在一定条件下的最优路径,后续可研究学习更加优秀的前沿路径规划算法,规划出更短的路径,提高效率。