超声与机器视觉融合的智能车设计

2020-12-08 04:11孙沐紫潘嘉鑫许钊赫张文聪
科学导报·学术 2020年88期
关键词:机器视觉

孙沐紫 潘嘉鑫 许钊赫 张文聪

【摘  要】本文基于OpenMV和Arduino设计了智能巡线机器人小车,有效解决了识别路径准确性低和快速性差的难题。文中基于Arduino开发板系统设计的循迹避障智能车,它采用OpenMV机器视觉模块和PID控制算法进行循迹,以及超声波测距模块进行避障处理。在机器视觉方面,采用颜色识别算法、阈值二值化处理、权重计算、线性回归算法、路径追踪和图像捕捉等算法。完成了小车躲避障碍物及沿特定路线行驶的任务。最后,通过实验,验证了文中所设计小车智能行驶的准确性和快速性。

【关键词】循迹避障;智能车;PID算法;机器视觉

1. 引言

当今世界,科技水平和人工智能发展非常迅速,每个人的行为与生活方式及工业的运作流程都受到了影响,研究能够自动躲避障碍物并能沿特定路线行驶的智能小车已然成为研究的热点。[1]。智能小车集道路感知、路径规划于一体,常见的设计方案以stm32或Arduino作为主控,结合多路传感器,利用红外循迹模块进行路径追踪,利用超声波传感器完成避障[2]

在已有超声波避障的方法中,大多方案采用收集小车正前方、左方和右方的数据,将左右方数据与障碍距离判向值进行对比作为转向依据,但该方法存在探测盲区;现有智能车巡线设计大多采用多个红外传感器用来环境数据采集,由于传感器获取的信息存在不连续、不完全以及不可靠的特点,该巡线方式对于复杂路况有一定缺陷[3-4]。因此,本文采用了超声波测距避障及OpenMV巡线信息融合的采集方法,设计了具有超声避障、循迹路线的双功能巡线避障小车,优势互补,使采集的信息更加完善可靠,有望在工业运作中得到应用。

2. 智能车总体设计

智能循迹避障小车以Arduino为主控制器,电源模块、OpenMV机器视觉模块、超声波测距模块、驱动放大模块、舵机转向模块组成硬件系统部分。在超声波避障方面,是以传感器传回的数据为基础,Arduino进行运算处理,对转向舵机及电机进行控制;循迹路线功能通过串口通讯,将OpenMV模块采集的数据传输给Arduino主控板,控制电机速度和舵机转向,完成功能。小车的机械结构采用对称结构设计,3D打印车模、减速比大的电机,可以完成爬坡等动作,解决重心不稳、载重小等问题。

系统驱动电路大体分为两部分,首先采用具有三态输出的八路缓冲器74LS541,该芯片将主控的控制信号传送给由大功率直流電机驱动芯片构成的双BTS7960 H桥驱动电路,由于同时使用两个芯片会输出一个较大电流在BTS7960芯片与电源线路中流过,芯片封装与电源平面的电感和电阻会引发电源噪声,所以在此处添加具有极性的钽电容用来稳定降噪,防止地面反弹,从而使电机正常且稳定驱动[5]。

541线路驱动电路以及双BTS7960H桥驱动电路分别如图2、图3所示。

3. 控制原理及算法设计

3.1循迹算法设计

循迹算法设计如图4所示。

3.1.1. 图像预处理

OpenMV模块在采集和传输图像过程中受多种因素的影响,图像会产生较大噪声,因而需要对采集的图像进行预处理。

在选定小车行驶的轨迹后,应预先进行赛道颜色阈值采集,使用OpenMV IDE自带的阈值调节工具,获取更加稳定的颜色阈值,采集图像后,进行二值化处理,即将图像转化为黑白图。

当选定的分割阈值使前景区域的平均灰度、背景区域的平均灰度与整幅图像的平均灰度之间差距最大时,为较为理想的分割阈值。该差别用区域的方差来表示,其相互关系如下所示:

二值化后采用腐蚀(erode)跟膨胀(dilate)的组合进行数学形态学的计算,可以很好地过滤噪声、去除小孔洞、区分线路边界。图像预处理及返回值如图5。

3.1.2. OpenMV巡线通信

将图像分成若干ROI(感兴趣区),根据控制对象和OpenMV的姿态确定并赋予每个区域权值,距离镜头越远的权重越小,对每个区域各自调用find_blobs函数,根据面积大小过滤寻找区域内最大的色块,用每个区域的最大颜色块的中心点的x坐标值乘本区域的权值进行加权平均计算,算出偏移画面的偏移量和曲线曲率。

通过Arduino与OpenMV的通信,将计算的偏差角度送给Arduino开发板,通过PID算法对小车姿态进行不断地调整,进而达成精准循迹目的,稳定性较好,具有较强的鲁棒性。智能车设计实物图如下图6所示。

3.2. 避障算法设计

本设计以HS-SR04超声波模块承担测距避障任务,利用该模块,可以测量距离,进而判断前方道路是否存在障碍,且对于同一角度的测距,应采集三次,取平均值以减小误差。该模块通过施加一个超过10us的脉冲触发信号,模块内将发出8个40kHz的周期电平并检测回波,一旦接收端接收到返回信号,则输出回响信号,回响信号的脉宽与距离呈线性关系[7-8],设距离为y厘米、回响信号的高电平时间为x、此时的声速z米/秒,则

通过距离的测量,分段控制两个直流电机,进而控制小车的前进速度,在距离障碍物过近时也能快速停下来;判断各方位的距离远,控制舵机转向,若前方出现障碍,小车进行危险检测,由于超声波模块的最大感应角为15°,以小车正前方为基准角0°,通过将超声波传感器前方180°视野分为六个区,即以30°划分[9],基本能覆盖小车前方的180°区域,程序运行时采集六个区的边界点距离,根据与最大检测有效距离和采集的其余值比较,因为超声波传感器最大检测的有效距离有限,对数据进行处理,采取限幅,将最大距离设定为固定值,再根据最大值确定舵机的转动角度,进而达到避障的目的。避障算法设计如图8所示。

3.3. 小车调试结果分析

本文搭建了小车的测试轨道,前半段为障碍物路段,后半段为循迹路段[10],经过调试,小车能够完成一些基本的避障任务,而且能够较好地克服其他单一点采集的方法存在的问题,使小车能够顺利实现避障任务。

通过将曲线拟合,得到较为符合设计要求的返回值与理论值之间的函数关系式,由于电机扭矩并不完全相同,前进时存在偏差,小车不断前进过程中,偏差不断累计,导致影响最终效果,所以初步设想两种误差补偿方案:方案1.在OpenMV返回的角度值后增加5°(右转)作为偏差量补偿;方案2.假设理论值为f(x),实际值为x,补偿量△x,△x=f(x)-x,进而在每次动作步之后进行参量补偿,实现误差修正,使小车得以稳定前进。根据补偿的效果,选用方案2作为本次误差补偿方案。

4. 结论

本文给出了基于Arduino开发板的巡線避障智能车的设计与实现方案,能够实现巡线和自动避障,并且具有性能稳定、操作简单的优点。设计过程中采用OpenMV作为视觉处理模块,可拓展性强。大量设定路线和障碍物的实验表明,本文所设计小车能够成功地实现障碍物躲避和沿设定路线行驶,有望在数字物流等工业或生活领域中得到应用。

作者在以后的研究中将考虑在此基础上编写其他功能,如条形码识别颜色追踪,能够根据条形码实现货物堆放等,以适应更为复杂的路线。

参考文献:

[1]付琳,王宗冕,杨达琛,田贝赠,张子威,郑淼建.基于Arduino单片机的智能快递小车设计[J].内燃机与配件,2020(17):198-199.

[2]赵云娥,吴振强.基于Arduino的双模式智能避障小车系统设计与实现[J].现代电子技术,2017,40(21):94-97.

[3]彭登峰.具有避障及循迹功能的智能小车系统设计[J].数字技术与应用,2020,38(11):7-9.

[4]赵旭磊,耿召里,李小华.智能小车避障算法和速度调节算法研究[J].辽宁科技大学学报,2018,41(03):212-217.

[5]宋洪慧,李春芾,朱江.智能小车直流电机驱动电路设计[J].机电技术,2015(06):84-87.

[6]李思熠,王少坤.基于OpenMV和Arduino的智能巡线机器人[J].科技与创新,2020(22):50-53.

[7]程立英,李鹏飞,白雪.基于Arduino单片机控制的避障小车的设计方案[J].计算机产品与流通,2018(12):277.

[8]王坤,刘红,廖小琴,韦启旻,张颖. 智能灭火车的设计[J]. 计算机科学与应用,2016,6(12):786-793. http://dx.doi.org/10.12677/CSA.2016.612094

[9]李成成,张晓玲.智能小车循迹避障的新策略[J].计算机与数字工程,2019,47(04):966-969+974.

[10]闫博扬,李玉衡,姚磊.基于Arduino开发板的自动循迹避障智能车控制系统设计[J].软件,2020,41(07):57-60.

基金项目:

国家级大学生创新创业训练计划项目 S202010429168

作者简介:

孙沐紫,女,2000.10.24,汉族,黑龙江桦南,就读于青岛理工大学电气工程及其自动化专业,在读,研究方向:模块化多电平变换器。

猜你喜欢
机器视觉
基于芯片点胶系统的视觉检测技术研究
全自动模拟目标搜救系统的设计与实现
基于机器视觉的自动浇注机控制系统的研究
大场景三维激光扫描仪在研究生实践教学培养中的应用
基于机器视觉的工件锯片缺陷检测系统设计
基于机器视觉技术的动态“白带”常规检测系统的开发
对激光切割机的改进
人工智能在高校图书馆的预期
基于车牌识别的机器视觉课程研究
机器视觉技术在烟支钢印检测中的应用