目录(完整论文+程序+视频可通过主页私信获)
摘 要
本作品基于现有图像识别技术,针对图像识别对环境的苛刻要求,研究了一种非接触物体尺寸形态测量系统。该系统结合激光管测距、目标精准捕捉以及目标识别算法,最后得到目标物体的形态和尺寸。选用STM32F401最小系统为核心板,用舵机搭建二维云台,选用OpenMV、L10雷达测距模块测量目标物的形态尺寸以及与装置的距离,测量结果从串口输出显示在OLED屏上。
关键词:
Stm32;非接触式测量;机器视觉;二维云台;激光测距;人机交互
第一章 绪论
1.1 背景和意义
1.1.1 背景
在日常生活中,我们使用到很多非接触测量的仪器,比如红外测温仪等。非接触测量是以光电、电磁等技术为基础,在不接触被测物体表面的情况下,得到物体表面参数信息的测量方法。近几年随着人工智能的飞速发展,非接触测量在其中扮演着极其重要的角色,图像识别是人工智能的一个重要阶段。图像识别就是对图像做出各种处理、分析,最后识别得出所要研究的目标。
工件尺寸检测是工业生产中最基础的质量控制手段之一。随着电子信息地飞速发展,测量方法的换代越来越快。对于工件的检测,传统的人工测量技术已经无法满足所需要的工件的测量精确。
非接触测量是以光电、电磁等技术为基础,在不接触被测物体表面的情况下,得到物体表面参数信息的测量方法。典型的非接触测量方法有激光三角法、电涡流法、超声测量法、机器视觉测量等。随着机器视觉的发展,视觉测量由于其测量效率高,检测范围大逐渐被重视。但不可避免地,非接触测量往往受环境因素的干扰极大,需要在特定的环境下才能完成精准测量。
可视化是智能机器系统感知外部环境最主要的方法,也是当今智能识别系统发展的趋势所在。外部视觉传感器采集获取外部环境的数据,通过智能软件分析系统实现对物体的识别和定位。随着现代信息技术的迅速发展,人们对智能系统的性能提出了更高的要求。目标识别是智能系统视觉部分最基本的功能,色彩与边缘识别是进一步研究的基础。
1.1.2 意义
在日常生活中,我们使用到很多非接触测量的仪器,比如红外测温仪等。非接触测量是以光电、电磁等技术为基础,在不接触被测物体表面的情况下,得到物体表面参数信息的测量方法。近几年随着人工智能的飞速发展,非接触测量在其中扮演着极其重要的角色,图像识别是人工智能的一个重要阶段。图像识别就是对图像做出各种处理、分析,最后识别得出所要研究的目标。
工件尺寸检测是工业生产中最基础的质量控制手段之一。随着电子信息地飞速发展,测量方法的换代越来越快。对于工件的检测,传统的人工测量技术已经无法满足所需要的工件的测量精确。
非接触测量是以光电、电磁等技术为基础,在不接触被测物体表面的情况下,得到物体表面参数信息的测量方法。典型的非接触测量方法有激光三角法、电涡流法、超声测量法、机器视觉测量等。随着机器视觉的发展,视觉测量由于其测量效率高,检测范围大逐渐被重视。但不可避免地,非接触测量往往受环境因素的干扰极大,需要在特定的环境下才能完成精准测量。
可视化是智能机器系统感知外部环境最主要的方法,也是当今智能识别系统发展的趋势所在。外部视觉传感器采集获取外部环境的数据,通过智能软件分析系统实现对物体的识别和定位。随着现代信息技术的迅速发展,人们对智能系统的性能提出了更高的要求。目标识别是智能系统视觉部分最基本的功能,色彩与边缘识别是进一步研究的基础。
通过对单片机芯片快速处理能力和智能图像识别的研究,以图像识别装置来模拟人的视觉识别。计算机视觉可以将物体转换成图像信号,然后把结果传送到装置的内部芯片,并根据图像中像素的排列规则和像素数量将其转换成数字信息、颜色信息等信号。成像系统执行这些电信号中的各种操作以获得目标属性,然后控制现场设备以对检测结果给出信息结论。智能图像采集技术与工业机器运动控制技术紧密相连,是智能工业控制技术中的关键技术。OpenMV 可实现计算机视觉和图像处理的通用功能,如 3D重建、目标分割、目标识别、特征检测、运动分析、特征跟踪等,与其他视觉模块相比,OpenMV具有开放源代码和低成本的优点。OpenMV 主要由 STM32H7 主控芯片和 OV7725 图像识别摄像头组成。此外,OpenMV 还具备Python 的编写程序界面,有适合的 Python 语言来满足智能机器识别功能的需要。
1.2 国内外研究现状
机器视觉在工业上应用领域广阔,核心功能包括:测量、检测、识别、定位等。其产业链可以分为上游部件级市场、中游系统集成和整机装备市场和下游应用市场。机器视觉上游有光源、镜头、工业相机、图像采集卡、图像处理软件等软硬件提供商,中游有集成和整机设备提供商,行业下游应用较广,主要下游市场包括电子制造行业、汽车、印刷包装、烟草、农业、医药、纺织和交通等领域。机器视觉对于机器人而言,机器视觉赋予其精密的运算系统和处理系统,模拟生物视觉成像和处理信息的方式,让机械手更加拟人灵活的操作执行,同时识别、比对、处理场景,生成执行指令,进而一气呵成的完成动作。
在国外,机器视觉的应用普及主要体现在半导体及电子行业,其中大概40%-50%都集中在半导体行业。具体如PCB印刷电路:各类生产印刷电路板组装技术、设备;单、双面、多层线路板,覆铜板及所需的材料及辅料;辅助设施以及耗材、油墨、药水药剂、配件;电子封装技术与设备;丝网印刷设备及丝网周边材料等。SMT表面贴装:SMT工艺与设备、焊接设备、测试仪器、返修设备及各种辅助工具及配件、SMT材料、贴片剂、胶粘剂、焊剂、焊料及防氧化油、焊膏、清洗剂等;再流焊机、波峰焊机及自动化生产线设备。电子生产加工设备:电子元件制造设备、半导体及集成电路制造设备、元器件成型设备、电子工模具。机器视觉系统还在质量检测的各个方面已经得到了广泛的应用,并且其产品在应用中占据着举足轻重的地位。
第二章 测量仪设计方案
2.1 方案一
采用OpenCV识别测量物体形状尺寸距离,组态屏显示测量数据。
优点:机器视觉部分摄像头选择范围较广,成像清晰,对测距模块要求较低。人机交互界面清晰,字体较大视觉效果好。
缺点:机器视觉程序编写耗时更多,组态屏面积较大,占用空间更多。
2.2 方案二
用OpenMV测形状尺寸,L10模块测量距离,用OLED显示测量数据。
优点:机器视觉开发参考资料丰富编写耗时短,测距精度更高,布局精简。
缺点:摄像头像素较低且无法更换,识别误差偏大,对后期调试要求较高。
2.3 方案选择及论证
最终选用方案二。经研究决定采用OpenMV测形状尺寸,在保证精度尽可能高的情况下,降低分辨率不断调试阈值即可。与方案一相比,在方案二上花费的时间预计更少,最终呈现效果也能达到测量要求。
第三章 硬件设计方案
3.1 整体设计方案
该系统主要由STM32F4系列单片机,机器视觉模块,激光测距模块,人机交互模块以及二维云台组成。机器视觉模块识别物体形状和尺寸,激光测距测量被测物与该测量装置的距离。两者所测数据返回给单片机,单片机控制云台完成指定任务后将测量数据显示在人机交互模块上。系统的整体结构框图如图3-1所示,实物位置图如图3-2所示。
图 3-1 系统整体框图
图 3-2 实物位置分布图
3.2 供电接口电路
供电电路采用15V航模电源供电,采用三个降压模块,分别降至6.5V给一号舵机供电,降至6.5V给二号舵机供电,降至5V给stm32控制板供电,另外openmv直接采用充电宝5V-2.4A的USB供电。
采用的降压模块型号为:LM2596S DC可调降压模块,一共有四个引脚,IN+\IN-是输入端,分别接到电源的正负极,out+\out-是输出端,分别接到stm32的5v或3.3v和GND。另外两个输出6.5V电压给舵机供电。
3.3 stm32与传感器接口电路
3.3.1 oled传感器
stm32通过SPI协议与OLED通信。SPI是一个同步的数据总线,也就是说它是用单独的数据线和一个单独的时钟信号来保证发送端和接收端的完美同步。
时钟是一个振荡信号,它告诉接收端在确切的时机对数据线上的信号进行采样。
产生时钟的一侧称为主机,另一侧称为从机。总是只有一个主机(一般来说可以是微控制器/MCU),但是可以有多个从机;
数据的采集时机可能是时钟信号的上升沿(从低到高)或下降沿(从高到低)。
整体的传输大概可以分为以下几个过程:
1、主机先将NSS信号拉低,这样保证开始接收数据;
2、当接收端检测到时钟的边沿信号时,它将立即读取数据线上的信号,这样就得到了一位数据(1bit);
由于时钟是随数据一起发送的,因此指定数据的传输速度并不重要,尽管设备将具有可以运行的最高速度(稍后我们将讨论选择合适的时钟边沿和速度)。
3、主机发送到从机时:主机产生相应的时钟信号,然后数据一位一位地将从MOSI信号线上进行发送到从机;
4、主机接收从机数据:如果从机需要将数据发送回主机,则主机将继续生成预定数量的时钟信号,并且从机会将数据通过MISO信号线发送;
3.3.2 激光测距传感器
stm32通过IIC协议与激光测距传感器通信。激光测距传感器型号为VL53L0X,工作电压:2.6 to 3.5 V。
通信方式:IIC,400KHz,设备地址0x52,最低位是读写标志位。0表示写,1表示读。
因此进行写的时候,此8位数据为:0101 0010,即0x52。进行读的时候,此8位数据为:0101 0011,即0x53。
VL53L0X上有两个孔,一个是VCSEL激光发射孔,一个是SPAD激光检测阵列的孔,结构图如下图所示:
3.4 Openmv 摄像头
OpenMV是一个开源,低成本,功能强大的机器视觉模块。以STM32F427CPU为核心,集成了OV7725摄像头芯片,在小巧的硬件模块上,用C语言高效地实现了核心机器视觉算法,提供Python编程接口。使用者们(包括发明家、爱好者以及智能设备开发商)可以用Python语言使用OpenMV提供的机器视觉功能,为自己的产品和发明增加有特色的竞争力。
OpenMV上的机器视觉算法包括寻找色块、人脸检测、眼球跟踪、边缘检测、标志跟踪等。可以用来实现非法入侵检测、产品的残次品筛选、跟踪固定的标记物等。使用者仅需要写一些简单的Python代码,即可轻松的完成各种机器视觉相关的任务。小巧的设计,使得OpenMV可以用到很多创意的产品上。比如,可以给自己的机器人提供周边环境感知能力;给智能车增加视觉巡线功能;给智能玩具增加识别人脸功能,提高产品趣味性等;甚至,可以给工厂产品线增加残次品筛选功能等。
OpenMV采用的STM32F427拥有丰富的硬件资源,引出UART,I2C,SPI,PWM,ADC,DAC以及GPIO等接口方便扩展外围功能。USB接口用于连接电脑上的集成开发环境OpenMVIDE,协助完成编程、调试和更新固件等工作。TF卡槽支持大容量的TF卡,可以用于存放程序和保存照片等。
OpenMV的定位是“带机器视觉功能的“Arduino”。它可以通过UART,I2C,SPI,AsyncSerial以及GPIO等控制其他的硬件,甚至是单片机模块,如Arduino、RaspberryPi(树莓派)等。它也可以被其他的单片机模块控制。这个特点使得它可以很灵活的和其他流行的模块配合,实现复杂的产品功能。
第四章 软件设计方案
4.1 主函数
在主函数的逻辑中,先对STM32中的GPIO口进行初始化,设置成各GPIO口为输入输出模式,初始化GPIO口为低电平。再进行PWM的初始化,设置频率,调制占空比,复位所有系统中使用到的外设,初始化系统时钟、按键以及串口通信等的配置。对控制舵机用到的定时器进行初始化,并配置脉冲输出,使舵机状态初始化为零。延时一段时间后,对PID控制器的各个参数进行初始化。随后进入循环状态,对按键的状态进行扫描判断,如果判断启动按键的电平状态为按下的状态,接着后面就进行PID参数的初始化和舵机角度的初始化,继而调用启动舵机的函数,让舵机以一定的PWM输出值运行[8]。这个过程通过获取openmv传递过来的摄像头实时计算出舵机需要转动的角度,并将该值传给PID函数,进行闭环控制实时的调节舵机的占空比,从而使舵机的状态达到目标状态,进而实现云台跟踪识别物体。同时初始化激光测距模块,通过中断实时过去激光测距的数据,整个过程全程通过oled显示出来。
4.2 定时器中断函数
略
4.2.1 位置闭环定时器中断函数
略
4.3 激光测距模块程序
略
4.4 PID算法
略
4.5 openmv程序
略
4.5.1 图像识别分析
略
第五章 调试
5.1 PID参数整定
整体PID的调节方法大致为:
1、P,I,D置 0,逐渐增大 P,直至响应时间达到预期效果并出现震荡
2、增大微分项 D,直至波动减到预期
3、若存在过冲,减小 P
4、增大积分项 I
PID参数的整定方法大致上可以分为两种,可以概括为理论计算整定法和工程整定法两大类。理论计算整定法主要是根据系统的数学模型,经过精确的理论分析计算得到各个参数,无论采取哪种方法,如果要真正要投入到实际工程中使用的话,还得需要结合实际工程调整和修改[12]。工程整定法主要是调试人员根据自身所积累的工程经验,设定相关的参数,然后再根据不断地实验进行调整,以达到理想的控制效果。
工程整定法中最主要的是试凑法,简而言之,试凑法就是实验人员根据以往的相关经验先设定一个初始的参数值,然后让系统试运行一下,将数据传输到示波器上,观察调节的波形,根据调节系统的P、I、D三个参数对曲线的影响效果,按照调节顺序,一般先调节比例部分,再加入积分部分,最后有需要再引入微分作用的顺序,对调节器的参数进行反复调整,多次观察波形形状,不断微调,直到调出稳定的波形,此时的PID的值即为符合条件的参数。
操作步骤为;
(1)把积分项和微分项的系数都设为零,只使用比例项,根据经验设定一个比例系数,让系统运行起来,根据曲线调整比例系数的大小,如果超调量太大,就减小比例系数,不断调整,得到理想的4:1过渡曲线。
(2)加入积分项,把上面调节出来的比例系数增大1.2倍,把积分系数由小到大进行调整,如果曲线振荡的比较厉害,就适当减小积分系数。
(3)一般比例作用加积分作用就能满足系统的要求,得到比较理想的调节效果,如果最终效果还不算让人满意的话,系统确实需要,就再加入微分作用。按照经验由小到大设置微分系数,如果曲线振荡比较严重的话,就减小微分系数,如果曲线超调量严重而且很难快速衰减下来,就增大微分系数。最后再结合图线的形状,整体对三个参数进行调整,慢慢调出满意的效果。
5.2 位置闭环PID参数整定
略