APP下载

基于视觉识别的智能跟随系统的设计和实现

2019-11-11许传威陈韩陶翔翔陆加响吴双李秋洁

电脑知识与技术 2019年27期
关键词:万向轮

许传威 陈韩 陶翔翔 陆加响 吴双 李秋洁

摘要:该文主要介绍基于视觉识别的智能跟随系统的设计与实现方法,文章介紹了如何基于视觉识别目标并通过双目测距获取目标三维坐标,以及根据获取的三维坐标控制三轮万向轮底盘跟随目标的方法。该实验以两个STM32f103为控制核心,以两个OV7725摄像头作为视觉传感器采集图像信息,用装有三个直流电机的万向轮底盘作为设备移动载体。

关键词:视觉识别;智能跟随;双目测距;万向轮;STM32

中图分类号:TP31        文献标识码:A

文章编号:1009-3044(2019)27-0204-04

在人工智能快速发展的背景下,视觉传感器在智能家居、车联网等诸多领域得到了广泛应用。但是目前视觉传感器还只能识别一些处于简单环境中的目标,并且获取的信息非常有限,很难像人眼那样获取丰富的信息。

本文主要研究利用视觉传感器识别目标,根据目标在图像中的二维坐标计算得到三维坐标,由该三维位置信息产生驱动电机的方案,控制万向轮底盘实现目标的跟随。

本设计使用两个STM32f103单片机ARM(A)和ARM(B)作为控制核心,分别驱动两个OV7725摄像头,它们的分辨率是240*320。两个摄像头平行安装,间距设置为15cm。每一个控制器还配有LCD液晶屏,用于显示摄像头拍摄到的图像和系统的状态信息。两个STM32之间通过串口进行通讯,ARM(B)还负责驱动万向轮底盘的直流电机[1]。系统的硬件结构图如图1所示。

ARM(A)和ARM(B)同步进行图像的采集,用于识别目标和计算目标重心在图像中的二维坐标([x],[y]),两个控制器之间利用串口共享目标信息。ARM(B)还负责根据两幅图像中目标的重心位置,利用双目测距原理求出目标的三维坐标([X],[Y],[Z])。

获取目标的位置信息([X],[Y],[Z])后,控制器ARM(B)会对比目标相对底盘的设定位置与当前位置,计算出全向轮底盘的运动状态,包括平移运动方向、平移运动速度、旋转运动方向和旋转运动速度。确定底盘的运动状态后,根据万向轮的运动原理分别计算出三个万向轮的运动方向和运动速度,再由控制器ARM(B)产生PWM方波驱动直流电机,实现目标跟随。

1 基于视觉识别目标

在本设计中,我们将黄色的乒乓球作为识别的目标,因为黄色的乒乓球为单色物体,可以通过扫描图像中每一个像素点的颜色状态将目标从图像中分离。

因为目标在不同的光照环境下会呈现出不同的颜色状态,所以在每次识别目标之前,要采集目标的颜色信息。由于STM32控制器从OV7725摄像头中读取到的图像信息是RGB565的形式,所以我们采集到R(红)G(绿)B(蓝)形式的目标颜色信息。

获取目标的颜色信息之后,根据获取到的颜色信息设置一个颜色区间。通过扫描图像中的每一个像素点,判断像素点是否在该颜色区间来识别目标。例如目标的颜色信息为R=20、G=30、B=15,设颜色范围偏移量为C=3,则目标的颜色区间为R=(17,23)、G=(27,33)、B=(12,18)。只要像素点的RGB值在该区间范围内,则认为该像素点属于目标,并在液晶屏上显示成白色,否则则被认为是不属于目标的像素点。扫描完一帧图像后,统计在颜色区间内像素点的个数,如果像素点个数超过阈值N=200,则认为目标存在,否则认为目标不存在。其中颜色范围偏移量C和阈值N通过实验选取最优值,本方案中C选择3,N选择200。

2 计算目标重心在图像中的二维坐在识别目标的过程中,控制器会计算像素点的坐标([xi],[yi]),并统计在颜色区间内的像素点的个数[n]。

利用公式计算颜色区间内像素点的二维坐标的平均值,得到的([x],[y])即为目标重心在图像中的二维坐标。

如上文中图2所示,乒乓球图像中的红色方块即为乒乓球的重心。

3 双目测距原理得到三维坐标

下图3是利用两个摄像头进行测距的原理的示意图。

基于双目测距原理获取目标三维坐标分以下几个步骤:

步骤一:两个摄像头A和B分别采集得到目标重心在两幅图片中位置([xA],[yA])和([xB],[yB])[2]。

步骤二:根据目标重心在图片中的位置,利用公式3到公式7,计算出目标重心在10cm距离的视界上的位置。

计算得到的([X1],[Y1])为目标在摄像头A的10cm距离的视界上的坐标;([X2],[Y2])为目标在摄像头B的10cm距离的视界上的坐标。公式3中分子[D]为摄像头在10cm距离上,视界在[x]方向上的长度,[D]的值要进行实际测量得到,本文中[D]取值为6cm,分母240是指用OV7725拍摄的图像在[x]方向上的像素点,[H]的值受目标的焦距影响。

步骤三:列出[X1],[X2]和目标深度距离值[Z]以及两个摄像头的横向距离[L]的关系式。

公式中[L]为两个摄像头之间的距离,本文取15cm。

步骤四:结合公式3到公式8可以得到目标在空间中的深度值[Z]。

步骤五:根据目标在空间中的深度值[Z]计算出目标在空间中坐标的另外两个分量[X],[Y]。

式中[E]为摄像头在10cm距离上,视界在[y]方向上的长度,[E]的值要通过实际测量得到,本文中[E]取值为7.92cm。

通过上述计算得到目标在空间中的三维坐标([X],[Y],[Z])。

本文以乒乓球为目标采用双目测距,实物连接如下图4所示。

利用液晶屏显示两个摄像头识别目标的结果[3]。其中摄像头A中目标的二维坐标为(37,131),摄像头B中目标的二维坐标为(179,54),如下图5所示。

根据摄像头A和摄像头B的识别结果,利用上述公式可以计算得到目标三维坐标理论值。

实际的测量结果为(-1,2,42),两种方法获得的结果基本一致。实际测量得到目标的三维坐标如下图6所示。

4 全向轮底盘控制

4.1 三轮万向轮控制原理

在底盘运动中有两个速度,分别是平移速度[V]和旋转速度[VR]。三轮万向轮控制原理如图7所示。

结合平移速度在[x]轴和[y]轴方向上的分解速度[Vx]和[Vy]以及底盘的旋转速度[VR],计算出三个万向轮的速度[4]。

根据计算得到各个轮子的速度分量,ARM(B)通过GPIO口输出相应的方向信息和PWM脉宽信息驱动TB6612控制直流电机的转动方向和转速。

ARM控制直流电机的结构图如图8所示。

TB6612驱动直流电机的电路如图9所示。

4.2 万向轮跟随方案

在跟随方案中,当前目标的位置为([X],[Y],[Z]),我们设定目标相对底盘的位置为(0,0,40)。

底盘旋转的速度范围为0~50,平移速度范围为0~100。根据目标实际位置和设定位置,计算出底盘旋转速度[VR]和平移速度[V]。

5 总结

本文主要研究了基于视觉识别实现智能跟随的方案。通过设定颜色区间,将纯色物体从图像中分离出来,在识别过程中同步对目标重心在图像中的位置进行计算。用两个平行安装的摄像头获得目标在两个图像中的平面坐标后,采用双目测距原理得到目标的三维坐标。基于该三维坐标对万向轮进行控制,便可以实现跟随目标[5]。

基于双目测距得到目标三维坐标本文的核心。经过实验测量,双目测距得到的三维坐标在1m距离内的精度可以达到厘米级,并且测量精度随距离增加而减小。只要目标可以被两个摄像头同时拍到,便可以进行测量,而且识别和测量可以同步进行,在大范围、远距离、高速度目标的识别定位以及远近目标的识别追踪上有着很大的应用前景。随着识别算法的提升,双目测距也会有更多的应用。例如场景的三维建模、人脸识别、VR以及全息投影等。

参考文献:

[1] 沈红卫. STM32单片机应用与全案例实践[M].北京:电子工业出版社,2005.

[2] CAD/CAM/CAE技术联盟.Altuim designer电路设计和仿真[J].清華社.2015,19.

[3] 蒋萍花,张楠.数据采集系统串口通信的设计与实现[J].电子测量技术,2015(6).

[4] 全向轮小车的数学原理[EB/OL].百度文库.2018,7

[5] 黄晖,柴剑勇,严兴,等.串口通信技术[J].科技创新导报,2010(27).

【通联编辑:代影】

猜你喜欢

万向轮
新型自动跟随点滴架设计
基于万向轮的AGV原地转向阻力研究
万向轮在扭王块模板拆装过程中的运用
拉杆箱平底万向轮振动分析
四轮式全向移动机器人设计