第38卷第9期2017年9月
白动化仪表
PROCESS AUTOMATION INSTRUMENTATION
Vol.38 No.9
Sep.2017超声波避障智能小车的设计
张萍
(江阴职业技术学院电子信息工程系,江苏江阴214400)
摘要:为了提高智能小车自主导航的能力,需要解决智能小车在复杂环境中的自主避障问题。为了实现自主避障,提出了超声波避障的设计方案和处理算法。智能小车采用四轮驱动以提高驱动能力,通过不同宽度的脉冲控制舵机实现不同方向、不同角度的转向,从而带动超声波模块实现不同方向障碍物距离的检测。针对智能小车电机运转易引入干扰造成系统供电电压不稳的问题,提出 了电机驱动模块和系统控制电路分开供电的解决方案。重点针对当障碍物超出超声波检测范围时小车软件程序易陷入“死区”,以及 在多个方向同时遇到障碍物时小车避障易发生刮擦等问题,提出了定时器溢出中断算法和后退转弯算法等解决方案。试验证明:该算法的小车避障效果较好,具有一定的推广、使用价值。
关键词:智能小车;供电电源;超声波避障;避障算法;定时器溢出中断算法;后退转弯算法
中图分类号:T H-39;TP274 文献标志码:A DOI:10.ki.issnlOOO-0380.201709010
Design of the Ultrasonic Obstacle Avoidance Smart Car
ZHANG Ping
(Department of Electronics and Information Engineering,Jiangyin Polytechnic College,Jiangyin214400,China)
A bstract:In order to improve the autonomous navigation ability of smart car (wheeled mobile robot) , it is necessary to solve the lf - obstacle avoidance problems in the complex environment. To realize autonomous obstacle avoidance, the design scheme and processing algorithm of ultrasonic obstacle avoidance are propod. The smart car is designed with four - wheel drive to improve the driving ability, and to control steering gear through the puls of different width, to achieve the steering in different directions and angles, so as to make the ultrasonic module to achieve the distance detection of different directions. Aiming at the instability of the voltage of power supply caud by the running motors, it is propod that the motor drive module and the system control circ
uitry are parately powered. When the obstacle is out of the ultrasonic detection range, the software program is easy to fall into the "dead zone" , and the collision probably occurs when the obstacle is encountered in multiple directions, the car may be scratched, aiming at the problems, the solutions of timer overflow interrupt algorithm and backward cornering algorithm are provided. The tests prove that the smart car using such algorithms can avoid obstacles very well and it has a certain value to be ud and promoted.
K eyw ords:Smart car;Power supply;Ultrasonic obstacle avoidance;Obstacle avoidance algorithm;Timer overflow interrupt algorithm;Backward cornering algorithm
〇引言
作为轮式移动机器人的智能小车,在仓库货物搬 运、小区巡逻、码头货物装卸等领域得到了广泛应用,而避障是智能小车在移动过程中经常需要解决的问 题[1_2]。常见的智能小车避障有红外避障和超声波避 障。红外避障检测范围小,而且容易受到灯光和太阳 光等光源的干扰;而超声波避障检测距离较远,超声波 模块配合舵机还能检测在不同方向的障碍物,检测范 围宽,不易受到干扰。
目前,关于超声波避障智能小车的研究有很多,其中大多数研究是从电机驱动原理[3<、调速方案、测距 原理等方面进行分析。小车在行驶过程中如果多个方 向同时遇到障碍物,小车采取何种避障方案
以避免刮 擦;以及障碍物超出超声波检测范围时,小车程序容易 陷入“死区”,影响距离检测的正确性,有关这些问题 的研究却很少。本文针对这些问题,详细分析其解决 方案。
1智能小车车体结构的设计
小车采用四轮驱动[5-7],4只轮子分别用1个电机 驱动。为了方便控制,小车左边前后2个电机的驱动
修改稿收到日期:2017 -05 -25
作者简介:张萍(1975—),女,硕士,副教授,主要从事电子与通信、嵌入式技术应用方向的研究。E- mail:hZ S Z ,
第9期超声波避障智能小车的设计张萍•41 •
引脚交叉并联,用电机驱动模块的一组输出口进行驱 动;小车右边前后2个电机的驱动引脚也同样交叉并 联,用电机驱动模块的另一组输出口进行驱动。电机 安装示意图如图1所示。相比两轮驱动的小车,四轮 驱动能够提供更加强劲的动力。
图1电机安装示意图
Fig. 1Schematic diagram of installation of motors
为了使小车检测障碍物的范围较宽,系统使用由 舵机构成的云台,并将超声波模块安装在云台上[8]。通过控制舵机,使舵机输出齿轮带动云台在-90°〜+ 90°范围内转动,从而带动超声波模块也在-90°〜+ 90°范围内转动。由于超声波模块本身检测角度为 15°,这样小车检测障碍物的范围可超过200°,可以同 时检测前方、左边和右边的障碍物,为小车安全行驶提 供了更好的保证[9]。
2智能小车供电电源的设计
智能小车通常是用电池组供电,电池组输出电压 一般可直接给电机驱动模块供电[1(^11],而电池组输出 电压一般并不适合直接提供给单片机,往往需要经过 电源转换电路将其转换为5 V,然后提供给小车控制 系统。这样设计电源简单方便,但是小车运行时,电机 往往会产生较大干扰[12],常常会致使小车控制系统电 压不稳,程序不能正常执行,小车运行状态很容易出错。
本系统设计方案则完全避免了上述问题,采用 7.4 V的充电电池直接给电机驱动电路供电。为了避 免电机运行对系统控制电路造成干扰,另外采用体积 较小的、输出电压为5 V的充电宝给小车控制系统供 电。充电宝小巧轻便,不会对车体质量造成影响,而且 充电宝输出电压稳定,驱动能力较强,保证了小车控制 系统稳定工作。电机驱动电路和小车控制电路两者分开供电,保证了小车可靠稳定工作。
3避障算法分析与实现
3.1障碍物超出检测范围
超声波测距原理[13]:单片机输出给超声波测距模
块一个超过10 P宽度的高电平触发信号,接收到触
发信号后测距模块发出40 kHz的超声波,同时启动定
时器定时;当超声波遇到障碍物时被反射回来,定时器
定时停止,因此小车与障碍物之间的距离等于定时时
间的一半与声速的乘积。
令小车距离障碍物的距离为&当51单片机晶振
频率为12 MHz时,定时器定时时间为=256 ^、
(单位是j j l s),而声速1;等于340 m/s,则:
5 = ^x 170 x 10~6(1)
系统采用的是HC - SR04超声波测距模块,其检
测距离不能超过4 m。当障碍物与小车距离超过检测
范围时,超声波模块发出的超声波不能被反射回来,用
于定时的定时器就会一直定时,程序势必会陷入死区,
从而导致测距出错,小车不能正常运行。
为了解决障碍物超出检测范围导致测距出错的问
题,本文采用了定时器溢出中断算法:用于测距的定时
器发生中断,其时间常数初始值配置为〇;如果定时器
发生溢出中断,根据式(1)求出检测距离为S =
65 536 x170 x10 _6m= 11 m,远远大于检测范围4 m,
因此,只要测距定时器产生溢出中断,就可断定障碍物
超出了检测范围。当测量距离超出超声波检测范围
时,由于超声波模块不能检测到反射回来的超声波,定
时器一直定时,必然会产生溢出中断,在定时器溢出中
断程序中设置超出检测范围标志位,从而避免了程序
陷入死区。
算法实现如下。
打饥荒
函数用来求小车与障碍物之间距离,求得
的距离保存在全局变量^中。
① 单片机I/O引脚输出超过10 p的高电平,触 发超声波模块,超声波模块发出超声波。
② 执行如下测距函数超声波模块的应答信
号ECHO变为高电平,启动测距定时器T。。如果障碍
物在检测范围之内,反射回来的超声波就会被超声波
模块检测到,应答信号ECHO变为低电平,语句
while(ECHO)跳出循环,就能正确求出障碍物与小车
距离火如果障碍物超出了检测范围,就不会有超声
波被反射回来,应答信号ECHO就一直为高电平,循环
语句while(ECHO),就会陷人死循环。当测距定时器
T。中断时,一旦障碍物超出检测范围,定时器T。
必然
•42 •自动化仪表第38卷
会产生溢出中断,在其中断程序中设置溢出标志 flag。当定时器T。中断程序执行完毕,CPU就会回到 循环语句while(ECHO)的下一条语句执行,从而跳出 死循环,保证了程序的正常执行。
测距函数代码如下:
void Count (void) //计算距离
I
while(! ECHO);//当应答信号ECHO为零时等待
TR0 = 1; //开启定时while (ECHO);
//当应答信号ECHO为高电平时定时并等待 T R0=0;//停止定时time =TH0 * 256 +TL0;//求定时时间长度T H0=0;
T L0=0;
S = (time * 1 • 7 ) /100; //求检测距离,单位是cm
if( ov_flag = = 1)
//如果定时器定时溢出,表示超声波测量距离超出范围
I
S = MAX; //给检测距离变量S配置超出范围特定值 ov_flag =0;
TH0 = 0;
TL0 = 0;
I I
定时器〇溢出中断函数T0_isr代码如下:
void T0_isr( ) interrupt 1
I
ov_flag = 1;//设置超出检测范围标志
I
3.2多面同时避障
小车在行驶的过程中,有时会遇到多个方向同时 有障碍物,大多文献都是采用直接转弯的方法进行避 障。这种方法在一般情况下是可行的,但是当小车与 障碍物的距离很近时,由于小车有一定的转弯半径,直 接转弯,很容易与左边或前方的障碍物发生碰擦。多 面避障示意图如图2所示。
//////////
-超声波检测模块
-智能小车
图2多面避障示意图
Fig. 2 Multi - faceted obstacle avoidance
① 当小车在前进的过程中,如果前方障碍物小于 安全距离*S,小车停止。
② 检测小车与左边障碍物的距离\和与右边障碍物的距离
③ 如果\或者足小于安全距离&小车后退到安 全位置。
④ 如果\,小车左转避障;否则,右转避障。
⑤ 重复步骤①〜④。
该算法对于智能小车在前面和左边,或者前面和
右边2个方向同时有障碍物时避障非常有效,比如常
见的墙角避障。当小车在前面、左边和右边3个方向
同时遇到障碍物时采用这种算法避障效果会更好。
win10清理算法实现如下。
每100 ms启动一次障碍物距离检测,首先检测小
车与前方障碍物距离,如果与前方障碍物距离小于安全
距离,执行如下避障函数如;如果大于安全距离,
小车前进。在函数^^中,先分别检测小车与左
边和右边障碍物的距离。如果这2个距离中只要有一
个小于安全距离,为了避免小车在转弯过程中与两侧物
体发生刮擦,小车先后退到安全位置,避开两边障碍物,
再向离障碍物距离较远的左边或右边转弯。
测量小车与左边障碍物距离代码如下:
push_val_left = LEFT ;//舱机向左转 90。
timer = 0 ;
while(timer <= 4 000);//延时,让舱机转到要求位置
StartModule ( ) ; //启动超声波测距
Count ( ) ;//计算距离
S2 = S; //保存小车与左边障碍物距离
同样的方法可以测得小车与右边和前面障碍物
距离。
4算法性能分析
4.1定时器溢出中断算法性能分析
苹果手机费电选取一个空间较大、障碍物较少的环境,将采用溢婚前协议书
出中断算法的小车和不考虑溢出中断的小车进行性能
比较,每种情况各试验10次,试验数据如表1所示。
表1试验数据
Tab.l The test data
障碍物类型
成功避障次数
溢出无溢出
只在正面有障碍物100
财源滚滚图片正面和左边有障碍物1010
正面和右边有障碍物1010
在这种情况下,本文采用了后退转弯算法。由表1可以看出,小车在正面和左边同时有障碍
第9期超声波避障智能小车的设计张萍• 43 •
图3前方避障示意图
Fig. 3 Front obstacle avoidance
没有考虑溢出中断的小车既不前进,也不转弯,陷 入“死区”状态,不能正确避障;而采用溢出中断算法 小车每次都能成功避障。4.2后退转弯算法性能分析
设置一个测试环境,共10个障碍物。其中,平 面障碍物3个,拐角障碍物5个,凹型障碍物2个。 采用后退转弯算法小车和直接转弯算法小车进行测 试比较,2种小车各试验10次,每次试验时间为 3 min 〇
2种算法的性能比较柱状图如图4所示。采用直 接转弯算法小车在每次试验中与障碍物碰擦的概率较 高,而采用后退转弯算法小车与障碍物发生碰擦的概 率很低。因此,在拐角障碍物和凹型障碍物较多的情 况下,采用后退转弯算法小车的避障效果明显优于直 接转弯避障小车。
5
6
7
8
9
10
试验序号
图4性能比较柱状图
Fig. 4 Bar charts of performance comparison
5结束语
本文针对超声波避障智能小车的研究设计,重点
物,或者正面和右边同时有障碍物时,这两种算法避障 效果相差不大,小车都能正确避障。在障碍物较少,尤
其是当小车只在正面遇到障碍物,而左右两边很开阔, 也就是左右两边的物体超出了超声波检测范围时,前 方避障示意图如图3所示。
珍珠英语/////////////
直接转弯算法
/后退转弯算法
解决了智能小车控制电路电压不稳、障碍物在超声 波检测范围之外时软件程序易陷入“死区”,以及小
车在多个方向同时遇到障碍物时避障易发生刮擦等 问题。
通过对有无定时器溢出中断算法小车的性能进 行比较分析,发现当小车只在正面遇到障碍物,而左 右两边物体均在超声波检测范围之外时,没有定时 器溢出中断算法的小车一般不能成功避障,而采用 定时器溢出中断算法的小车几乎每次都能成功避 障。通过对后退转弯算法和直接转弯算法小车的性 能进行比较研究,发现在拐角障碍物和凹型障碍物
较多的情况下,采用后退转弯算法小车的避障效果 明显优于直接转弯避障小车。由此可见,采用定时 器溢出中断算法和后退转弯算法的小车避障效果 好、碰擦次数少,可广泛应用于超声波避障小车设计 中,以提高小车避障性能。参考文献:
[1 ]尚建荣,黄海燕,王福杰.基于LPC1769的智能小车设计[J ].微
电机,2014,47(10) :76 -78.
[2] 王小庆,岳敏,武坤,等.基于单片机的避障小车的设计与开
血光之灾是什么意思
发[J] •工业控制计算机,2016,29(7): 152 -153.
[3] 彭美定,邓鹏.基于单片机的智能红外避障小车设计[J ].无线
互联科技,2017(3) :74-76.
[4] 党智乾.基于单片机的智能寻光避障小车的设计与实现[J ].自
动化技术与应用,2015,34(1) :26 -29.
[5] 赵华成,刘武,潘聪华.重力势能驱动的自行避障小车设计与制
作[J ].浙江水利水电学院学报,2016,28(6) :73 -76.
[6 ]屈伸,李斯瑞,靳松.一种重力势能驱动小车的设计与实现[J ].
湖南工业大学学报,2015,29(3):30 -34.
[7] 强彦,叶文鹏,屈明月,等.基于红外避障的智能小车的设
计[J ].微电子学与计算机,2013,30(2) :140 -143.
[8] 张铮,张江宁,薛竹村,等.循迹避障灭火功能智能小车设
计[J] •试验室研究与探索,2016,35(11): 141 - 145.
[9] 李晓娟,王雅慧,秦国庆.基于蓝牙的智能小车循迹避障设计与
实现[J ].河南科技学院学报(自然科学版),2016,44(2):
63 -67.
[10] 赵津,朱三超.基于Arduino 单片机的智能避障小车设计[J ].自
动化与仪表,2013(5) :1 -4.
[11 ]陈梦婷,胡白燕,黄璨.基于单片机的智能循迹避障小车的设计
与实现[J].智能机器人,2016(4) :47 -51.
[12] 黄玉水,黄辉,周美娟,等.电磁导航式智能车的设计与实
古代节日现[J] •自动化仪表,2014,35(5) :72 -76.
[13] 张洪,钱胜,陈路.多传感器在确定智能小车安全区域中的应
用[«.传感器与微系统,2013,32(12):145 -148.
6
S 71;