OpenMV的3D打印小车系统研究

2022-03-28 08:30邓春兰应必仕银锦国
自动化与仪表 2022年3期
关键词:测距障碍物温湿度

邓春兰,应必仕,银锦国,朱 君

(广西师范大学 电子工程学院,桂林541004)

机器视觉领域的快速发展,开源模块层出不穷[1]。OpenMV 具有成本低、性能高并且其内部采用OV7725摄像头芯片等优点。本文将开源的OpenMV[2]模块协同STM32 单片机应用于智能小车,它主要由控制器、传感器、摄像头等元器件制造而成。在给定路线下,小车行驶在路上,摄像头能根据路况实时采集、更新行驶过程中车体与车道标识线的距离,通过一系列处理后将信息传递给单片机,若此时行驶路径发生偏移,就能在短时间内由控制器采用PID 算法回归正常,通过测量障碍物的距离及时做出避开障碍物的准备。此研究方向是基于OpenMV 机器视觉模块作为图像采集与处理平台,通过STM32F103RCT6单片机控制智能小车,能按照规定的路线行驶,能够自动循迹,遇到障碍物时可自动避障。另外,本文设计的智能小车以3D 打印[3]的车模为载体,然后和小车的其它部件连接。

1 系统设计

L298N 作为驱动芯片[6],通过STM32F103RCT6单片机控制,从而实现对小车速度的精确控制。本设计是一辆4 轮车,一个电机驱动一个轮,因此需要使用4 个电机驱动,本设计采用的驱动模块型号为L298N,一个L298N 可以控制2 个电机正反转,因此本设计使用2 块L298N 控制4 个电机,从而改变小车的运动状态。该模块在经过初始化后,根据红外和超声波模块的信号判断是否循迹并且是否有障碍物,若没有则保持原状态不变,如果有障碍物则接收来自使能端的PWM 波进行循迹或是避障运动。编码电机的起动和调速性好,通过PWM控制调速,过载能力较强,受电磁场干扰小;自身带有编码器,可以通过PID 反馈给控制器电机的运行状态。

蓝牙模块的功能是作为手机与小车之间的桥梁通信,通过蓝牙模块可以将检测的温湿度数据传回手机应用上,实现对环境温湿度数据的实时监测以及对小车向前和向后、左转和右转的运动状态控制,设计中重要的一个环节。考虑到设计方案,手机蓝牙控制要使智能小车反应灵敏、通讯稳定并且可靠,HC05 能够更好地控制小车和温湿度数据传输。

温湿度检测模块[7]是为了实时监测采集环境中的温湿度数据,采集到的数据给单片机再通过蓝牙传输模块显示到手机APP 上。DHT11 采用温湿度传感和数字模块采集技术,可靠性与抗干扰能力极高。DHT11 拥有低功耗、小体积的特点,并且采用单线制串行接口,从而更容易集成。以至于它的信号可以传输到20 m 以上,因此本设计选用DHT11 作为温湿度检测器。

2 方案设计

2.1 小车转向控制方法

方案1:利用电机的速度差转向

差速转向指的是小车通过控制左右驱动轮的转速实现转向,当车辆在左右拐弯时车轮的轨线都是呈现圆弧状,如果汽车正在左转弯时,其圆弧的圆心点在左侧,在固定时间不变的时候,左侧轮子走的轨迹要比右侧轮子走的轨迹要短,因此为了解决这个差异问题,左侧轮子速度就要调慢一点,右边轮子速度就要调快一点,采用不同的转速来解决运动距离的差异问题。它具有超宽的调速区间、控制功率相对较小等一系列优点。

基于OpenMV 的小车模拟系统硬件电路部分以STM32F103RCT6 作为核心控制器,由小车模型、电源模块、OpenMV 模块、电机驱动模块、蓝牙模块等共同组成。

STM32F103RCT6 控制器是采用Cortex-M3 基础型MCU72 MHz CPU,Cortex-M3 内核是一个32位的处理器,其寄存器、数据路径、存储器接口等都是32 位。还采用哈佛结构,因此拥有独立的数据总线和指令总线,使得数据访问与取址不相冲突。当数据访问时,指令总线就不再被占用,数据总线和指令总线可以在同一个存储器空间[4]。

小车框架是小车的重要结构,它决定着小车的体积与集成度以及耐压能力,本设计采用具有高强度、低成本、可循环使用的新型生物塑料聚乳酸(PLA)进行3D 打印小车。聚乳酸(PLA)是一种新型的生物降解材料,也具有优异的生物降解性,即使在使用两三年过后都能完全被土壤中微生物降解,转化生成二氧化碳和水,不污染环境。其次,采用3D 打印小车,首先通过三维设计软件设计小车的结构框架,这种通过三维设计的方法就可以按照设计者的想法完完整整的设计出来,然后在利用3D 打印技术,制造出智能车结构框架,此方法制造出来的小车外形美观、体积小。

电源模块是给整个小车系统供电,为保证小车工作稳定,采用电压为+12.6 V 的12680 型锂电池进行供电。将电池电压降压、稳压到+5 V 后给单片机系统及其它模块供电;稳压模块则是提供稳定高精度电压,输出+5 V 直流电压和+12 V 直流电压。

OpenMV 摄像头模块的核心是STM32F765CPU,集成OV7725 摄像头芯片,运用Python 编程能高效地实现核心机器视觉算法,实现OpenMV 模块的机器视觉的功能[5]。其中,采用摄像头拍摄设计跑道上的双黑线并通过机器视觉算法分析得出小车与双黑线中线的偏转角度,实现车道保持功能;也可以采用摄像头识别跑道上的交通灯信息,并将实时的交通灯状态通过串口上传至主控器,主控制器根据摄像头模块上传的数据作出判断,从而控制小车的速度与启停状态。

方案2:利用舵机转向

通过输入一个周期性的脉冲信号来控制舵机,此周期性脉冲信号的低电平时间应在10 ms~25 ms之间,而高电平时间通常在2 ms~3 ms 之间,因此不严谨,所以导致使用舵机在小角度转弯时灵敏度并不高。

考虑到舵机小角度转弯灵敏度低的问题,因此采用电机的速度差转向。

2.2 电机PID 算法控制

PID 是一种很常见的控制算法[8],就是“比例、积分、微分”。不同组合形式适用于不同系统的控制原理,从而使偏差趋于零[9]。控制算法如图1所示,计算公式为

图1 PID 控制原理图Fig.1 Schematic diagram of PID control

本设计电机PID 调节主要为了实现小车在车道保持行驶时的控制其运动方向和速度,即保持小车前进方向与车道中线的偏转角为0°。PID 控制器的输出值是控制编码电机运行的PWM 信号,即PID 控制器输出的PWM 信号会控制编码电机运行。设定小车正常直线运动时的PWM 阈值,当小车转弯时,根据OpenMV 模块拍摄处理并返回至主控制器的小车偏转角在与最初设定的值做差可得PID调节的输入偏差值,保证左右车轮实现差速转弯,从而保证小车顺利通过弯道。

2.3 障碍物测距与避障

采用OpenMV 测距[10],如图2所示。Apix是固定的像素,Bpix是摄像头中球所占的像素(直径的像素),Lm是长度,a是视角的一半,Rm是球真实的半径,L′为焦距。

图2 OpenMV 测距原理图Fig.2 OpenMV ranging principle diagram

由左边的摄像头的几何关系可得:

由式(2)和式(3)可得:

由图2 右边真实的图可得:

将式(5)带入式(4)可得最终式子为

式(6)体现的是摄像头里的像素和实际长度成反比,简化就L′离等于一个常数比上直径的像素。

本文采用OpenMV,不仅可以测得障碍物的距离,还可以测量障碍物的大小,具有一举两得的功能,并且具有高集成度和准确性,因此本设计采用OpenMV 测距。

3 结果与分析

按照上述设计方案,完成的循迹避障智能小车控制系统模型,在规定时间内需要从指定位置出发,能够实现循迹避障功能,经过多次改变测试环境,本次设计能够实现通过蓝牙控制小车的运动状态,能够实时监测环境中的温湿度数据并将其显示到手机APP 上,监测到的温湿度数据基本准确,也能通过手机APP 控制小车前进、后退、左移和右移。

3.1 循迹

本设计采用OpenMV 摄像头对给定道路标识双黑线进行识别,保证小车能够在规定范围内安全前行。广角摄像头主要负责车道保持功能(即双黑线循迹),将获得的轨迹进行处理,可以得到该轨迹的偏离角度,然后通过偏转角的判断,给主控制器发送转向信号,左转或右转,小车则进行PID 调节,实现车道保持功能。摄像头采集的图像如图3所示。

图3 摄像头采集图像Fig.3 Image captured by camera

3.2 图像处理

OpenMV 摄像头在对采集到的图像进行处理时主要采用膨胀腐蚀处理[11]和二值化处理[12],处理结果如图4 和图5所示。

图4 膨胀处理Fig.4 Expansion treatment

图5 二值化处理Fig.5 Binarization processing

OpenMV 摄像头采集到的图像包含目标物体、噪声和背景等,如果要想从这种多值化的数字图像中提取准确的路径,就需要设定一个阈值Y,相当于一个分割线,采集到的图像数据被分成小于Y和大于Y两个的像素群。将小于Y的像素群的像素值自定义为白色,则大于Y的像素群的像素值自定义为黑色。

膨胀则是将与物体接触的全部背景点合并到该物体中,使边界向外部扩张的过程,能够用来填补物体中的空洞;被看作膨胀的对偶运算的是腐蚀,腐蚀是一种消除边界点的方法,使边界在向内部收缩的过程,能够用来消除无意义且小的物体,因此会使得二值图像减小一圈。

3.3 蓝牙模块测试

将手机蓝牙打开,另一边小车上打开电源开关和蓝牙开关,蓝牙模块[13]指示灯闪烁,手机连接到蓝牙后,指示灯变成双闪,在手机上按键发送控制信号,小车能够按照设置按键的指令进行向前、向后、向前左、向前右、向后左、向后右的动作变换。用湿润的手指捏住温湿度传感器,观察到手机APP 端温度数据明显升高,从28 ℃变到了31 ℃,湿度从76%变到了95%。测试过程和数据如图6 和图7所示。

图6 改变温湿度前Fig.6 Before changing the temperature and humidity

图7 改变温湿度后Fig.7 After changing the temperature and humidity

3.4 小车速度

速度是影响智能车速度快慢的一个重要因素。在限时的比赛中,首先速度控制必须配合方向控制,即在直道或类似直道时,应该将PWM 波提到最高,让通过主电机的电流达到最大,从而让智能小车以最快的速度行驶;当进入弯道时,应该根据弯道的曲率大小,适当的较低小车的基础速度,使得小车不容易冲出赛道,对于该基础速度的设定,采用PID 控制,以小车与中线的偏差大小为输入,以速度的设定量为输出,实现不同赛道类型下的自主速度调整。

小车转弯采用差速转向PID 算法,相比舵机转向其灵活性提高了很多。小车利用差速电机实现转弯,其原理是利用两个电机的转速不同构成转速差。

3.5 避障

采用红外模块进行避障[14],将5 个红外线光电传感器分别装在车体前方的左中右位置,左边和右边各2 个,中间1 个。当车左边的传感器检测到障碍物时,主控制器控制右轮电机停止左轮转动,车向右方转向,当车右边的传感器检测到障碍物时,主控制器控制左轮电机停止转动,车向左方转向,当前面有障碍物时规定车右转。如表1~表3所示。

表1 小车一定时间内避障个数Tab.1 Number of obstacles avoided by car in a certain period of time

表3 小车避障效果Tab.3 Obstacle avoidance effect of car

从表1 中可以看出随着时间增加,如果小车速度不变,障碍物等距离放置,小车避障的能力维持在一个相对稳定的范围内。

从表2 中的数据可以看出,小车测距时间随着距离的边长而增加。当距离从0.1 m 增加至0.6 m时,测距所花的时间相差不大,当超过0.6 m 后,测距所花时间变化较大。因此,当测距距离小于0.6 m时,小车的OPenMV 测距效果较好。

表2 小车测距效果Tab.2 Ranging effect of trolley

从表3 中的数据可得小车绕过的障碍物个数与距离的关系,当初始距离过小或过大时避障效果都比较小,是因为距离过小,小车反应时间太短来不急就会直接撞到障碍物;距离过大时,小车朝着终点开去就会错过障碍物。可以看出,当初始距离近似为0.5 m 时,小车的避障能力最好。

4 结语

本文采用的基于OpenMV 以STM32F103RCT6为主控制器设计的机器视觉的智能小车,采用3D打印技术并选用PLA 材质打印小车有效地解决了小车设计制造框架的普通性、提高效率、降低消耗的问题。实现了从标记的指定位置出发,使用OpenMV 摄像头模块系统进行图像和数据采集,通过OpenMV 测距,从而得到障碍物的位置信号。能对小车行进速度与方向的控制、避障等。还实现通过蓝牙模块通信协议检测温湿度数据,以及控制小车的行驶方向。本设计前期也采用DT50 激光传感器进行测距,但也需要OpenMV 进行数据采集,然后进行一系列的卡尔曼滤波、中值滤波等方式来去除噪声信号,算法处理较为复杂,因此最终方案就直接采用集成度高的OpenMV 进行测距。本设计已经通过多次实验验证,具有灵敏度高、稳定性强等特点,在未来智能小车会融合多个专业领域。

猜你喜欢
测距障碍物温湿度
基于RSSI测距的最大似然估计的节点定位算法
文物展柜内环境温湿度的调控与监测
基于AT89C51的数字型蚕用温湿度计的设计
高低翻越
基于STM32的多通道超声波测距系统设计
赶飞机
基于单片机的超声波测距导盲杖设计
月亮为什么会有圆缺
基于温湿度控制的天气预测装置
基于DSP和μcos的温湿度检测系统的设计