【摘要】传统的机械手是利用程序编程定位,然后控制步进电机驱动准确抓取物体,在国家提倡智能制造的大背景和机遇下,研究更智能化的设备用以改变人们的生活、方便人们的生活具有重要的意义。本文研究和设计基于机械视角的三维机械手,利用CMOS摄像头采集图像,然后通过STM32F429微控制器处理数据,实现了通过机械视觉定位物体位置从而进行抓取物体。
【关键词】机械视觉;三维机械手;图像采集
【中图分类号】TP212 【文献标识码】A 【文章编号】1009-5624(2019)01-0086-03
1 引言
随着图像识别在社会各方面越来越广泛的应用,对于图像采集与显示技术的研究具有极高的社会价值和经济价值[1];图像处理技术已广泛应用于航空航天、生物医学工程、通信工程、工业检测、军事公安等领域。本文所设计的三维机械手,核心是机械视觉,而机械视觉通过图像识别物体,图像数据由STM32F429进行处理进而确定物体的位置[2]。我们设计的三维机械手,在工业搬运、自动售货机和机器人焊接等方面都可以大显身手,并且在3D打印技术中三维机械手就不可或缺。
2 系统硬件设计
本系统主要由STM32F429微处理器、CMOS-OV5640摄像头、RGB电容触摸屏、步进电机和电磁继电器组成的机械手及其他外设组成。系统整体框架如1所示。
2.1 机械手模型构造
该系统主要使用不锈钢焊成一个长方体框架,在框架上架设三维滑台,X,Y,Z分别使用步进电机驱动同步带,带动滑台运行。使用步进电机加同步带使得系统精度高,速度快。 同步带的特点:(1)传动准确,工作时无滑动,具有恒定的传动比;(2)传动平稳,具有缓冲、减振能力,噪声低;(3)传动效率高,可达0.98,节能效果明显;(4)维护保养方便,不需润滑,维护费用低;(5)速比范围大,线速度可达50m/s,具有较大的功率传递范围,可达几瓦到几百千瓦;(6)可用于长距离传动,中心距可达10m以上,实物图如图2所示。
2.2 控制系统
驱动控制器硬件电路包括STM32F429控制模块、光耦隔离模块、步进机驱动模块。
STM32控制模块:本设计采用的STM2F429,是基于 ARM Cortex-M4核心的32位微控制器。相对于ARM系列其他芯片,STM32运行速度更快[3],7个TIM最多可以产生28个精准的PWM信号,方便地用于步进电机控制[4]。
光耦隔离模块:单片机输出PWM控制信号,通过施密特触发器74HC14D直接驱动高速光耦 6N137,隔离控制信号,增强抗干扰能力[5]。
步进机驱动模块:步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
由STM32F429内部定时器产生脉冲控制DM542步进电机驱动器进行控制步进电机。DM542通过接收微控制器的控制指令对步进电机进行驱动,在系统的控制下,实现步进电机的稳定精确运行[6]。
2.3 图像采集系统
图像的采集使用CMOS-OV5640摄像头,STM32F429通过DCMI接口与摄像头连接进行图形处理。STM32的DCMI接口整体框图见图4。
(1)STM32F429具有摄像头DCMI接口,DCMI芯片自带的一个数字摄像头接口, 该接口是一个同步并行接口,能够接受外部8位,10位,12位或者14位CMOS摄像头模块发出的高速数据流,可支持不同的数据格式。 通过该接口STM32F4可以高速的获取数据图像数据。
(2)经过DCMI获得的数据经过DMA缓存一帧到数组中,采集完一帧数据后对该数据进行运算。DCMI接口的内部结构见图5。
1)同步器:同步器主要用于管理DCMI接收數据的时序,它根据外部的信号提取输入的数据。
2)FIFO/数据格式化器:为了对数据传输加以管理,STM32在DCMI接口上实现了4个字(32bit x4)深度的 FIFO,用以缓冲接收到的数据。
3)AHB接口:DCMI接口挂载在AHB总线上,在AHB总线中有一个DCMI接口的数据寄存器,当我们读取该寄存器时,它会从FIFO中获取数据,并且FIFO中的数据指针会自动进行偏移,使得我们每次读取该寄存器都可获得一个新的数据。
4)控制/状态寄存器:DCMI的控制寄存器协调图中的各个结构运行,程序中可通过检测状态寄存器来获DCMI的当前运行状态。
5)DMA接口:由于DCMI采集的数据量很大,我们一般使用DMA来把采集得的数据搬运至内存。
2.4 图像显示系统
显示模块选用ATK-7寸RGB电容触摸屏,分辨率为1024*600,16位真彩显示,模块自带LCD控制器,拥有多达8MB的显示,能提供8页的显示,并支持任意点颜色读取。模块采用电容触摸屏,支持5点同时触摸,另外还具有镜像翻转、背光控制等功能,具有非常好的显示效果。
3 系统软件设计
整个系统只有在软件的支持下才能正常工作。本设计在kail软件中进行程序设计,通过jlink仿真器将程序下载到STM32中,当每次上电或者系统复位后行头开始执行程序[1]。
4 工作流程
我们的目的是寻找物体,在摄像头拍摄的图像中我们使用黑色的物体,白色背景作为运行环境,同时灯光要充足,这些外部的条件方便我们对图像进行处理,图像越单一算法越简单。布置好外部条件后就是拍照,系统采用OV5640 yuv成像,也就是黑白的图像。这样处理后拍的照片只有白和黑。
4.1 实际位置的标定
系统安装完后需要对摄像头的成像范围对应实际的位置进行标定,也就是找出图像上的像素点对应的实际距离的比例。标定的方法是:首先固定好摄像头,然后拍照取两个点的像素坐标量出两个点的实际距离,通过这两个点的实际距离和像素坐标计算比例,如果摄像头安装相对垂直,在一定范围内可以认为图像没有发生形变,就不需要对图像进行畸形矫正。标定好摄像头后就要标定电机,因为摄像头安装的位置不是在机械手上,因此就需要计算摄像头算出来的实际距离,相对于机械手原点的距离计算出电机要走的距离就可以控制电机运行。
4.2 系统初始化
开机寻找原点,控制电机走到传感器的初始位置,也就是实际坐标的原点,以传感器为准。确定好坐标后等待系统识别物体。
4.3 拍照识别物体
放下物体,按下开始,摄像头开始拍照,保存数据到内存数组。
4.4 计算坐标
对图像数据处理步骤如下:
1)二值化处理:对RGB彩色图像灰度化以后,扫描图像的每个像素值,值小于127的将像素值设为0(黑色),值大于等于127的像素值设为255(白色)。
2)均值滤波:对待处理的当前像素点(x,y),选择一个模板,该模板由其近邻的若干像素组成,求模板中所有像素的均值,再把该均值赋予当前像素点(x,y),作为处理后图像在该点上的灰度g(x,y),即g(x,y)=1/m∑f(x,y),m为该模板中包含当前像素在内的像素总个数。
3)从上到下扫描图像第一个黑点:黑点周围8个点都是黑点就认定为是物体最上的边缘。
4)从下到上扫描图像第一个黑点:黑点周围8个点都是黑点就认定为是物体最下的边缘。
5)找出物体的中心像素点:通过计算两个边缘点的中心确认物体的中心坐标,对应图像上的像素点。
6)算出物体像素点对应的实际位置。
4.5 控制电机运行去抓取物体
按照计算出来的距离运行步进电机,走到对应的位置后运行z轴,Z轴传感器亮也就是碰到物体,打开继电器吸取物体,返回原点,放下物体完成动作。
5 结论及总结
在本设计中,经过不断地研究、调试与改进,从机械手模型的设计、主控板的选择、光耦隔离电路的设计,都经历了艰苦的过程,比如,本机械手的金属传感器用的电压是24伏,但是主控板额定电压却是5伏的,为了统一,我们利用光耦三极管6N137进行电路隔离,实现了传感器和主控板的协调应用,最终成功通过对STM32F429编程将OV5640采集到的图像信息显示在电容触摸屏上,并成功控制机械手抓取物体,我们的研究在工业搬运、自动售货机和机器人焊接等方面会得到广泛应用。
【参考文献】
[1]刘祺,王银玲,吴林恒.基于STM32的图像采集与显示系统的研究与设计[J].数字技术与应用,1007-9416(2012)02-0094-01.
[2]黄智伟,于红利,宁志刚,刘双,陆银丽.基于STM32F417的图像采集系统设计[J].新器件新技术,2012(10)48-51.
[3]沈红卫,任沙浦,朱敏杰.STM32单片机[M].北京:电子工业出版社,2017.6:Ⅲ.
[4]李宁.基于MDK的STM32处理器开发应用[M].北京:北京航空航天大学出版社,2008:35-47.
[5]刘雪超,吴志勇.基于TMS320F28335的步进电机控制模块设计[J].仪表技术与传感器,2011(10):78-79;92.
[6]叶子,吴桂初,舒亮.基于LabVIEW的智能交流接触器动态性能测试系统[J].电子技术应用,2013(3):88-91.
基金项目:广西高校自然科学基金(KY2015LX747),2017年大學生创新项目基金(201713638001),创客空间项目(CK2017004)