并行超声波测距系统在移动机器人上的应用
超声波传感器被广泛应用于机器人避障系统中。基于超声波的测距原理,设计了一种并行测距系统。介绍了系统的硬件组成和软件实现方法。针对多路传感器并行测距容易产生干扰的现象,分析了干扰产生的原因,提出一种有效的解决办法。将系统用于移动机器人避障实验,给出了系统测量范围的实验标定结果。
0 引言
超声波传感器以其信息处理简单、速度快和价格低的优点被广泛应用于移动机器人避障、倒车雷达等需要距离测量的场合[1]。由于超声波的辐射特性,现有的多路传感器测距系统为减少干扰的产生,多采用轮循发射的方法,这种方法的测距盲区较大,实时性也得不到保证,并且,这样测量到的数据对障碍物的定位、形状判别等后续处理也比较麻烦。
本文设计了一种多路传感器并行工作的超声波测距系统。将该系统用于智能移动机器人上进行避障实验,获得良好的效果。
1 超声波测距系统设计
超声波测距的方法有多种,本文采用渡越时间法,即通过测量超声波从发射传感器发出,经传播介质到接收传感器的时间t来计算距离。其原理可以用公式表示为L=vt/2,(L为待测量的距离;v为超声波在空气中的传播速度,t为渡越时间)。超声波在空气中的传播速度与环境的温度有关,通过温度补偿的办法可以提高测距的精度。本文的速度通过经验公式v=331.4+0.607??计算,为摄氏温度。用一线制温度传感器DS18B20来测量环境温度。
1.1 硬件电路设计
测距系统硬件结构如图1所示。主要包括上位机、处理器、超声波振荡电路、驱动电路、信号放大、整形和比较电路。
处理器采用STC单片机STC12C5410,该单片机与51系列兼容。每一片单片机通过多路转换器控制两路超声波传感器,这两路传感器分别位于机器人的前侧和后侧。单片机的主要任务是测量渡越时间和环境温度,计算障碍物的距离。单片机与上位机之间通过RS232通信。上位机对接收的数据进行分析可以定位障碍物,支配机器人的运动。
超声波发射电路由振荡电路和驱动电路两部分组成。振荡电路是由与非门和电阻与电容组成的简单电路,能产生40kHz的方波信号驱动超声波传感器发射超声波;驱动电路产生具有一定功率的超声波电脉冲去激励超声波传感器,由6个非门并联组成,利用了芯片本身的驱动能力。经过驱动后,最终加到超声波传感器的信号是幅值为5V的方波。
1.2 软件程序设计
系统中,单片机要控制2个定时器,一个用于测量渡越时间,另一个用于设置单片机与PC通信的波特率,保证通信的准确性;控制一个外部中断口,实时监测超声波接收传感器是否接收到反射的超声波信号;用一个I/O控制超声波发射传感器按一定频率发射超声波[2];用单总线协议控制一个I/O读取DS18B20采集的温度值。单片机还要接收和处理上位机的命令,并根据上位机的要求将数据实时回送给上位机。单片机的程序流程图如图2所示。
超声波接收电路分信号放大、整形、比较三部分。超声波接收传感器接收的信号十分微弱,为毫伏级,该信号需要经过放大才能被单片机检测到。本文采用两级放大电路,共放大1000倍,两级放大电路之间采用阻容耦合的方式连接。从放大器输出的信号经过倍压整形电路后流入比较器。调节比较器的基准电压可以改变测距系统的测量范围和测量精度。比较器输出的信号接到单片机的INT0,触发单片机中断。
单片机与上位机之间用多机通信的方式传送数据。PC没有多机控制位,需要用软件的方法模拟单片机的TB8/RB8位。通信协议设置步骤如下:
1)设置单片机处于地址监听状态;
2)PC发送一组奇偶校验位为1的地址数据;
3)单片机判断接收到的地址是否与本机地址相同,如果相同,则将该地址发送会主机,与主机建立握手协议;
4)主机接收到地址后,发送奇偶校验位为0的数据,通知单片机发送距离信息;
5)单片机发送距离数据,发送结束后,返回步骤(1)继续监听地址。
上位机程序由VisualC++6.0编写。其任务是按设置好的通信协议每隔50ms向串口发送一组查询命令,读取单片机测量的距离信息;通过分析读取的距离信息来定位障碍物,粗略判断障碍物的形状特征;采取必要的避障措施控制机器人的运行并显示运行轨迹。软件有着良好的用户界面,利于程序调试。
2 干扰因素分析与采取的措施
采用多传感器并行发射超声波的方式,最大的一个缺点就是干扰比较严重,特别是各传感器之间的信号干扰。引起干扰的因素主要有以下几种:
1)传感器的安装误差:超声波的产生是压电晶体的机械振动,发射和接收传感器之间的连接容易产生干扰;如果传感器与地面之间有倾角或安装的过低,接收传感器很容易接收到地面的反射波,触发单片机中断。
2)超声波旁瓣的影响:在发射波结束后,接收传感器接收到的第一个波是串扰直通波,它是近源的波束旁瓣或通过绕射由发射换能器直接达到接收换能器而造成的[3]。因此,安装超声波传感器时,2个探头之间的距离要大于3cm。
3)超声波余振干扰:发射传感器每次发射8组超声波,每组5~8个波形。当障碍物比较近时,第一组波形就能触发单片机中断。这种情况下,退出中断时可能发射的超声波还没有完全衰减,当下一次开中断时,单片机中断就会立即被触发,产生干扰数据[4]。
4)超声波交叉干扰:多路传感器并行发射,接收传感器接收到的反射超声波可能不是对应的发射传感器发射的,并且,各路传感器之间的信号不同步,这样,很容易引起测量时间不准确。实验中出现的很多干扰数据就是由这个原因引起的。
为屏蔽超声波余振和交叉干扰,单片机采用低电平触发中断的方式,并且,在中断服务子程序中停止超声波的发射。单片机触发中断后,在接收传感器能接收到反射波的这段时间内,其一直在中断服务子程序中循环执行,等待反射超声波衰减至不能被系统识别才退出中断。
3 实验标定
测距系统盲区为10cm,由于程序中设定机器人距障碍物40~50cm时采取避障措施,所以,测距盲区对机器人避障不会产生影响。将测距系统安装到机器人上,用一根半径1cm的塑料杆在机器人前方移动,逐点探测测距系统的敏感度[5]。探测点选在与超声波传感器平行的直线上,以两传感器的中心线为中心,向两边每隔5cm选取一点,每边各选4点。测量数据如表1所示。由测量结果看出:左路和中路的测量误差在2%以内,右路的误差偏大。这种差别与传感器的安装精度有关,另,传感器的性能也会导致这种差别。此外,测量的基准值40是通过目测得出的,这种测量误差也会影响测量结果的误差分析。
按以上测量方法,逐点探测测距系统的敏感度,可以得到测距系统测量范围如图3所示。从实验标定的测量范围看,测距系统有一小部分区域没有探测到,这主要是受传感器波束角的影响,对于非垂直于发射波束的目标,大波束角的传感器可以获得更强的回波信号,而波束角越窄对于减少散射波的干扰越有利[6]。选取一种波束角合适的传感器对全方位测量是十分必要的。
实验结果表明:在机器人的安全距离内,该测距系统能全方位、较精确地探测到其前方的环境状况,并且,测量数据不会出现干扰,满足机器人避障的需要。
4 结束语
本文设计了一种高性能的机器人测距系统,采用多传感器并行工作的方式,提高了测距的实时性,系统干扰得到有效屏蔽,满足移动机器人避障的要求。如果系统加以改善还可以设计成汽车倒车雷达,提高汽车的安全性能。
参考文献:
[1]汪云涛,鲍青山,王树国,等.超声探测系统在移动式智能机器人中的应用[J].哈尔滨工业大学学报,1998,30(1):20-23.
[2]杨宁.单片机与控制技术[M].北京:北京航空航天大学出版社,2005.
[3]苏炜,龚壁建,潘笑.超声波测距误差分析[J].传感器技术,2003(6):8-11.
[4]章小兵,宋爱国,唐鸿儒.基于单接受头的超声波多目标测距[J].传感技术学报,2007,20(5):1167-1169.
[5]NoykovS,RoumeninC.Calibrationandinterfaceofapolaroidu-ltrasonicsensorformobilerobots[J].SensorsandActuatorsA,2007,135(1):169-178.
[6]HerringtonDR.Ultrasonicrangefinderusesfewcomponen-ts[J].EDN,1999(6):23-26.