作者:路亚宁 ,陆 翔 ,方凤才
引 言
近些年,智能机器的发展使得人们能够突破自身能力的局限性,来完成困难且复杂的任务,同时智能机器利用其模拟人类感知功能的特点,能够有效地替代人们完成机械从重复性任务。因此,具有视觉功能的智能机器能够准确地识别物体并连续地操作,进而在产品质量检验、零件识别及组件定位等方面得到广泛应用。随着机器视觉识别技术的提升,许多先进的智能机器都将机器视觉技术嵌入到产品内部,提升其与环境的感知功能,如大疆、零度等企业研发的新一代无人机产品使用基于机器视觉技术的目标识别与追踪技术。以色列拉斐尔公司研发的“保护者”号的无人艇能够通过机器视觉的图像技术获得环境信息,进而自动识别和监视附近船只。在传统上,以勘探为目标的智能车大多数是人工遥控和判断的。虽然机器一定程度地避免了勘察人员遇险,但人们依然需要通过感官去找寻目标物体。因此,将机器视觉技术加入到勘探智能车里将极大地减轻勘探人员的负担。
本文设计并实现一种基于机器视觉的智能车系统。该系统基于目标物体的颜色,采用颜色识别、图像去噪、轮廓检测等算法准确地识别并定位目标物体。另外,智能车的运动控制系统采用STM32F4处理器完成车体方向移动以及机械臂抓取物体功能。整个设计结合了机器视觉识别技术、网络数据交互技术以及车体控制技术。
1、 智能车平台硬件搭建
1.1 硬件设计框架与组成
整个智能车控制系统如图1所示。智能车采用STM32F407单片机作为主控器。摄像头模块将采集的物体图像信息以视频流的形式通过无线路由(WiFi)模块实时传给电脑端。电脑端对视频流的每一帧进行相应的图像算法处理后,将对应的指令通过WiFi模块传至主控芯片,进而控制车体的移动;当到达指定位置后控制机械臂抓取物体以实现颜色物体的定位与搬运。
STM32F407系统板作为车体系统的控制中心,负责处理数据和指令,并将WiFi网络模块传来的指令转为硬件的控制(如PWM脉冲),进而控制电机和机械臂,实现向目标物体前进并抓取的功能。车体系统的电机驱动模块采用的是一种高电压、大电流的电机驱动芯片L298N。L298N电机驱动芯片负责驱动直流减速电机GM25⁃370,通过对应输出端口的高低电平实现车体的前进、停止及左右方向的转动[5]。车体系统的机械臂模块采用 MG996R 舵机作为关节驱动,并配合四自由度的铝合金结构,能够完成一些较为精细的动作。主控芯片通过调节PWM脉冲的占空比进而控制每个舵机所需要转动的角度,并通过计时器来控制每个舵机角度的保持时间[6],最终完成相应的机械臂动作。
1.2 网络模块设计
WiFi网络模块作为整个车体控制系统与电脑连接的媒介,负责完成系统的网络通信,同时与摄像头模块交互,实现视频流的传输。网络模块能够搭建服务器,并在后台实现实时监控指令数据与指令转码,进而传输到车体主控芯片的I/O端口来控制车体的动作。因此,WiFi网络模块的功能主要体现在摄像头视频流传输与电脑指令传输两个方面。
1.2.1 视频流传输
为了实现远程视频传输,电脑端需要借助网络端口传输。由于电脑端与 WiFi模块需要同处于一个网络,因此WiFi模块通过手机的个人热点连接上级无线路由器,即二级路由器模式作为网络的接入。同时,启动DHCP协议将电脑端连至WiFi模块的网络,此时电脑端作为网络客户端发送请求指令,而WiFi模块作为网络服务器端对其响应[7]。经无线网络配置,电脑端通过视频流传输的方式获取实时画面,即“mjpg⁃streamer”服务。其中,mjpg作为一种视频编码格式,能够将摄像头的模拟视频信号压缩翻译成视频流[8]。当电脑客户端通过Socket套接字与 WiFi模块服务器连接完成后,电脑客户端请求发送视频流,将图片压缩后以数据流的形式传输。
1.2.2 指令转码传输
在电脑客户端与 WiFi 模块服务器端完成连接后,电脑客户端将缓存的指令发送到服务器上。考虑到十进制表示的习惯,电脑客户端只需要发送十进制的数字字符串,服务器即可完成转码操作。首先,服务器利用atoi函数扫描十进制字符串,当扫描到数字时,字符串内的数字将转为整数格式;其次,服务器利用 itoa函数将十进制数转为二进制数存到一维数组,进而分配给4位GPIO 端口;最后,指令以4位二进制高低电平与主控芯片串口传输。
1.3 车体控制
车体控制系统作为整个车体的执行端,以STM32F407小系统为核心控制器,将接收到的操作指令转换为对应车体的操作,其中主要的车体操作是对直流电机的驱动及机械臂的转动。车体控制台共使用了5个舵机和2个电机,因此需要STM32处理器输出6路PWM信号。而PWM信号输出的原理是一种计数模式对波形占空比的调控。在一个周期内,高低电平持续的时间是可变的,通过改变在一个周期内高电平所占整个周期的时间的长短去控制舵机的角度。PWM信号的控制主要由STM32F4芯片中的自动重装载寄存器和捕获比较寄存器完成[9]。
2、 机器视觉算法
2.1 目标颜色识别算法
颜色是识别目标物体的首要特征。电脑端通过颜色的阈值来识别目标物体,而颜色空间通常分为RGB色彩模型和HSV色彩模型。其中,RGB模型的色彩是由红(R)、绿(G)、蓝(B)三个分量的矢量和表示[10],其色彩、深浅和明暗的变化是沿三维直角空间几何线递进的。而HSV模型的颜色是由色调(Hue)、饱和度(Saturation)和明亮度(Value)三个维度的倒锥形表示[11],其分量直接描述了色彩、深浅和明暗。因此,基于颜色特征检测目标选取HSV阈值更为直观可靠。
由于摄像头采集图像是以RGB色彩模型的格式存储,因此电脑端在处理图像时需要进行色彩模型转换。在遍历图像每一个像素的过程中,电脑端根据RGB模型与 HSV模型之间的关系,将RGB值转换为HSV值。进而,根据设定的HSV颜色范围,将各色彩通道中满足阈值范围的像素点转为纯白色,即(255,255,255);否则转为黑色,即(0,0,0)。最终,目标物体与环境完全分离,效果如图2所示。
2.2 图像填充去噪算法
考虑到部分物体有表面部分镂空的情况,如图3所示,图像可以通过膨胀形态学操作填充细小轮廓附近的空洞。而对于光线的强弱造成图像有噪声的情况(图3小球团边缘所示),图像可以通过腐蚀形态学操作去除噪声。然而,腐蚀操作会使目标区域的面积变小,膨胀操作会使目标区域的面积变大。因此,选用开运算即先腐蚀再膨胀的操作,不仅保证了目标区域的面积大致不变,还对图像进行了降噪、填充处理,使得图像轮廓更清晰[12]。图像填充去噪算法选用3×3的卷积核,通过卷积核在原图像上的滑动及像素运算分别完成腐蚀、膨胀操作。在腐蚀的过程中,若卷积核的元素与对应的原图像的像素值相与为1,则中心元素赋值为,否则为0,其效果如图4a)、图4b)所示;而在膨胀的过程中,若卷积核的元素与对应的腐蚀后图像的像素值相或为1,则中心元素赋值为1,否则为0,其效果如图4c)、图4d)所示。
2.3 最大轮廓检测算法
考虑到在目标物体的周围可能存在相同颜色杂物的情况,图像通过最大轮廓检测法能够有效地排除小型杂物,准确地框选出物体。
轮廓检测的原理是通过确定外边界、孔边界以及它们的层次关系,将边界与原图对应即可完成用边界表示原图的操作[13]。而在遍历图像的过程中,当遇到外边界以及孔边界的起始点时,图像开始标记边界的像素,再利用编码的思想给不同边界赋不同的数值就能确定出边界的层次关系。
最大轮廓检测的原理是在检测出最外层的边界后将其存储在点的序列里,按照边界面积降序排序选出最大面积的轮廓。而选取最外层的边界也能够有效地筛去内部的孔轮廓,对于大面积镂空的目标物体,利用轮廓检测也能准确地识别出来。同时,选取最大面积的轮廓也能有效地筛去体积较小的杂物,其效果如图5所示。
2.4 算法总体框架
机器视觉算法的设计目标是实现对目标颜色物体的识别和方位判断,进而使智能车控制系统能够自动找寻物体并实现抓取。该算法所选取的目标物体特征以颜色为首要特征,但在实际的环境中车体会面临同颜色杂物的干扰,从而造成目标判断的失误。因此,该算法在图像处理算法中增添了最大轮廓检测,确保目标的准确性。
电脑端机器视觉算法处理与方位判定是整个设计的核心,它不仅实现了获取和处理画面的功能,还实现了上位机对下位机的指令操控,设计流程如图6所示。
在目标物体识别之前,电脑端先从视频中提取每一帧图像,然后基于颜色识别算法、图像去噪填充算法以及最大轮廓检测算法,实现对一帧画面的处理。检测出目标物体后,电脑端计算出物体的面积和质点坐标,通过判断质心横坐标在画面的区域来给出车体行进方向的控制指令。
当目标物体未被检测出时,车体将不停旋转直到找到红色物体。电脑端控制系统将物体面积的大小以及质心横坐标大小作为指令的判断值,当物体面积未达到预设的面积值及方位时,车体一直前进并根据方位实时调整方向,直到物体面积到达预设值且在画面中心,则向车体发出停止指令,然后执行物体抓取指令。
3、 系统测试与实现
3.1 图像处理的测试与结果分析
通过在电脑端调整不同颜色的阈值范围,使得系统对各种颜色的物体进行精准识别。其中,图7描述出目标物体分别为红色和蓝色特征时系统识别的情况。由图像所示,红色和蓝色物体均可被系统识别与框选。
3.2 物体距离的测试与结果分析
目标物体与车体的距离是通过视觉中目标颜色的面积判断的。面积越大,说明物体与车体距离越近。选取10个面积值,面积与距离之间的对应关系如表1所示。经轮廓检测后的物体面积是通过OpenCV库对像素点进行几何计算得到的有向面积值。
表1反映出视觉内物体面积与车物距离成反比,且面积的增长与距离的减小呈非线性关系。当面积在1000 pixel以内时,距离变化范围可达2m之远;而面积在1000~10000 pixel变化的过程中,距离变化范围不到70cm;当面积在11686 pixel以上时,距离变化范围不会超过34cm,同时面积的变化值与距离的变化值之比将更小。
由于机械臂伸展抓取物体的长度固定为25cm,结合面积与距离的关系,在面积达到20 000时,车体即可停止并借助机械臂完成物体抓取的过程。
3.3 物体方位的测试与结果分析
目标物体的质心横坐标代表目标物体相对车体的横向方位,质心的纵坐标代表目标物体相对车体的纵向方位。由于目标物体与车体摄像头始终处于同一水平线上,因此目标物体与车体的方位仅通过目标物体质心横坐标判断即可,进而使车体判断左转、右转或指令。因此,摄像头视野范围的区域将横向分为三个区域用以判断车体方位,而区域的选取是车体对物体定位精准的关键。在机械臂抓取物体前,车体要确保正对物体,因此中间的区域会比两侧的区域窄。经过调试,左侧区域的横坐标范围定为0~270,中间区域的横坐标范围定为270~380,右侧区域的横坐标范围定为380~600。
于是,当物体质心在左侧区域时,车体将接收到左转指令‘2’,视觉效果与网络监视情况如图8所示。物体质心在中间区域时,车体将接收到前进指令‘1’,效果如图9所示。当物体质心在右侧区域时,车体将接收到右转指令‘3’,效果如图10所示。
4 、结 语
基于机器视觉的智能车采用特定的图像处理算法能够长期准确地识别和定位目标物体。在网络数据交互方面,该设计采用无线传输的方式实时交换图像信息与动作指令。同时,在车体控制方面,该设计采用嵌入式处理能够高效地控制车体的移动以及机械臂的转动。结合了机器视觉算法、网络传输与硬件控制系统的智能车设计能够准确地找寻并抓取目标物体,在勘探与分拣领域有着极大的研究价值。
审核编辑:
全部0条评论
快来发表一下你的评论吧 !