杨芳沛,李伟光,郑少华,刘维民
(华南理工大学 机械与汽车工程学院,广东 广州 510640)
AGV全称Automated Guided Vehicles,是一种装有自动导引装置,能够沿规定的路径行驶,具有编程和停车选择装置、安全保护装置以及各种物料移载功能的自动导航车[1]。障碍物检测是自动导航车研究的一个基本问题,是实现安全、正常工作的前提。超声波传感器以其价格低廉、测距精度高、测量稳定、体积小等优点,被广泛用于AGV的避障检测[2]。本文以超声波传感器为基础,结合CAN总线技术,设计一种AGV避障模块,实现准确、有效、稳定的障碍物检测,确保AGV的安全运行。
该避障模块使用的超声波传感器内部以渡越时间法[3]进行测距,并自带温度传感器对测量结果进行校正,能够对2 cm至4.5 m距离范围内的障碍物实现准确的距离测量。开始测量时,控制器通过UART向超声波传感器的TX引脚输入触发信号,传感器发送探头启动并发射超声波脉冲,然后接收探头进入回波检测状态。在接收探头检测到回波信号后,结合温度补偿计算测距结果,并通过传感器的RX引脚输出距离测量数据。
由于超声波传感器的探测波束角较小,在其实际应用中,一般使用多个传感器组成传感器阵列[4],以扩大探测范围。超声波传感器阵列的构建,须解决传感器在AGV上的布局问题,具体来说就是传感器数量和安装间距的选择问题。传感器数量和安装间距的选择须根据最小盲区要求确定,而超声波传感器的探测波束角是计算盲区的重要参数,因此需要设计实验测量传感器的探测波束角。
如图1的(a)所示,将超声波传感器固定于某点,在其前方选择与传感器探头距离为d的某点放置障碍物,进行测距实验并记录测距值。为了使实验结果能够充分反映实际情况,实验中选取不同距离d,且对于每个距离,以超声波传感器中轴线为原点,在左右两侧都选择离中轴线距离为L的多个点来放置障碍物。实验AGV对避障模块所要求的检测距离为0~2.5m,实验中选取的d序列为[100,200,300,400,600,800,1 200,1 600,2 400]mm;常用的超声波传感器波束角一般小于60°,所以对于每个距离d,在离中轴线[-0.6×d,0]和[0,0.6×d]范围内以相同间隔各选取 10个点作为L的值。
图1 超声波传感器测距实验方案与结果Fig.1 Scheme and result of ultrasonic sensor's distance measuring experiment
在图1(a)的实验中,利用勾股定理,可以得到障碍物实验中摆放位置与超声波传感器的实际距离:
设超声波传感器测距值为,则测量结果的相对误差为:
对实验中的每一个测距值s′,结合式(1)和式(2)可计算出相应的相对误差。将实验数据导入至Matlab中,以L为横坐标、d为纵坐标、σ为竖坐标,对其插值并作图,如图1(b)所示。
从实验结果可以看出,将障碍物摆放于超声波传感器可检测到的区域时,检测结果的相对误差都能够满足σ<6%,因此在图1(b)中选取相对误差σ<6%的区域,可得到超声波传感器的波束角约为θ=40°。
AGV避障模块检测的盲区大小与超声波传感器的安装数量、安装间距有关,传感器数量越多、安装间距越小,检测盲区就越小,反之则大。超声波传感器利用障碍物对声波的反射作用进行距离检测,这一特性也决定了交叉串扰现象的存在[5],即一个传感器发射的声波经障碍物反射后,能够被相同检测方向的传感器接收到,从而产生错误的测距结果。因此在使用多个超声波传感器进行障碍物检测的场合,常采用传感器交替工作方式[5],即某一时刻有且只有一个超声波传感器在检测障碍物。若传感器安装数量过多,AGV避障检测周期就会增大,影响其检测实时性,从而对AGV的安全工作产生不利因素。从减小盲区和提高避障检测实时性两方面综合考虑,从实验AGV的500 mm车宽出发,初步确定在所应用的实验AGV的车头安装4个超声波传感器。由于实验AGV不需要倒车和侧向移动,所以其车尾和侧面不需要安装超声波传感器。
为了使每两相邻超声波传感器之间的检测盲区大小保持一致,4个传感器采用等距布局的方式,如图2(a)所示。两相邻传感器的距离为:
左右两侧传感器距离AGV侧面的距离为:
如图2(b)所示,距离AGV两侧250 mm范围内为侧面安全距离。中间的2、3号超声波传感器作为主探测器,两侧的1、4号为辅助探测器。其中辅助探测器用于减小主探测器的测量盲区。主探测器和辅助探测器的预警距离分别为:
在AGV的避障检测中,当障碍物进入2、3号超声波传感器的d3范围或1、4号超声波传感器的d2范围内时,AGV停车报警。
在图2(b)中,AGV车头前面的阴影部分为避障检测模块的检测盲区区域,由多个三角形组成,该区域垂直距离(即三角形的高)为:
图2 超声波传感器布局和避障模块的探测区域Fig.2 Layout of ultrasonic sensors and detecting area of obstacle avoidance module
可见,在此布局方案中,AGV避障模块的检测盲区较小,配合安装于车头的防撞杆,能够满足AGV安全运行的要求。
AGV避障模块的硬件结构如图3所示,模块以AVR单片机为控制核心。在避障检测时,由于每次只有一个超声波传感器处于工作状态,所以4个超声波传感器可通过多路模拟选择开关共享AVR单片机的UART接口。当避障模块预警区域存在障碍物,AVR控制语音芯片播放语音提示[6],并通过CAN总线将预警状态和障碍物距离发送到AGV的总控制器。
图3 AGV避障模块结构Fig.3 Structureof AGV's obstacle avoidance module
AGV避障模块语音预警功能电路如图4。当障碍物进入预警区域,AVR单片机通过三线串口控制WT588D-U语音芯片读取内部的音频文件,并输出相应音频信号,经LM386功率放大后输出到小型喇叭。通过调节R7变阻器调节端可改变语音预警的音量大小。
图4 语音预警硬件电路Fig.4 Hardware circuit of voice warning
如图5所示,AVR单片机通过CD4052多路模拟选择开关对四个超声波传感器进行控制[7]。ChaSelA和ChaSelB信号的四个不同状态组合分别代表模拟开关的四个通道。CSB_TrigN和CSB_EchoN分别是超声波传感器触发信号输入端和测距数据输出端。工作时,利用ChaSelA和ChaSelB信号选择所要控制的超声波传感器,模块控制器通过TXD引脚向所选定的传感器发送触发信号,传感器即向前方发送声波,并在接收到回波信号后,向控制器发送测距数据。
图5 超声波传感器控制电路Fig.5 Control circuit of ultrasonic sensors
AGV避障模块引入了CAN总线技术,能够将预警状态和测距数据上传到总控制器,实现分布式控制。CAN总线通信电路主要由CAN通信控制器MCP2515、CAN总线收发器PCA82C251及相应的复位、时钟电路组成[8],如图6所示。避障模块控制器通过SPI接口将预警状态和测距数据发送到CAN总线控制器MCP2515,由MCP2515转换成异步信号输送到CAN总线收发器PCA82C251,并最终发送到CAN总线上。
避障模块所应用的AGV平台基于CAN总线构建其车载分布式控制系统,控制系统的CAN应用层协议采用问答模式,即CAN通讯网络的某个节点主动发起的数据帧传输(询问帧),必须得到数据帧接收节点的应答(应答帧),否则将进行重发。问答模式提高了控制系统运行的可靠性。
图6 CAN总线通讯电路Fig.6 Communicate circuit of CAN-BUS
AGV运行时,当障碍物进入预警范围,避障模块播放语音提示,并通过CAN总线向控制系统总控制器发送预警消息。控制系统总控制器接收到预警消息后,向避障模块发送应答帧,并控制电机减速或停车。此外,控制系统总控制器能够向避障模块发送询问帧,控制其关闭或开启避障检测和语音提示功能,因此AGV在运行时,避障模块通过CAN总线发送的消息有两类:主动发起的询问帧和对其他节点发来的询问帧的应答帧;通过CAN总线接收的消息也为两类:其他节点发来的应答帧和询问帧。
该避障模块的软件基于链表创建了两个CAN消息队列[9]:CAN发送队列和CAN待应答队列。发送询问帧时,创建发送结点,挂接到CAN发送队列中,并同时创建对应的待应答结点,两者通过指针成员相互绑定。发送应答帧时,创建发送结点并挂接到CAN发送队列,此时不需要创建待应答结点。如图7所示,主函数轮询CAN发送队列是否为空,若不为空,取出发送结点并执行CAN数据帧的发送。如果发送结点为询问帧,执行发送后,将绑定的待应答结点挂接到CAN待应答队列,等待数据帧接收节点的应答。软件使用定时器作为系统时钟,在定时器中断函数中对CAN待应答队列中每个待应答结点的等待时间进行计时。若某个待应答结点等待超时,移出待应答队列并将绑定的发送结点重新挂接到CAN发送队列,执行重发。在多次重发都没有得到应答时,删除该待应答结点和绑定的发送结点。若某个询问帧等待应答超时前接收到应答帧,表示该次CAN询问帧传输成功,并且在CAN数据帧接收处理函数中删除相应的待应答结点和绑定的发送结点。
图7 主函数和定时器中断函数流程图Fig.7 Flow chart of the main function and timer interrupt function
如图8所示,CAN数据帧接收处理函数也对避障模块接收到的其他CAN节点发送的询问帧进行解释,执行相应操作,并创建应答帧挂接到CAN发送队列。软件使用SCI中断函数轮询4个超声波传感器的检测数据,并在完成一次轮询后对检测数据进行融合,根据数据融合处理的结果判断障碍物是否进入预警距离。当障碍物进入预警距离,对预警消息创建发送结点和待应答结点,并将发送结点挂接到CAN发送队列,同时播放语音提示。
将所设计的避障模块安装到实验AGV上,使AGV上电运行,并在运行中进行障碍物检测测试。在测试时,使用车载触摸屏的状态显示界面能够读取、显示超声波传感器检测数据和避障预警信息。当在AGV前进路径上放置障碍物时,避障模块能够准确检测到障碍物距离,当障碍物进入预警范围时,及时向总控制器上报预警信息。通过实际应用发现,该避障模块测距结果准确,工作稳定可靠。
图8 CAN数据帧接收处理函数和SCI中断函数流程图Fig.8 Flow chart of CAN data frame handling function and SCI interrupt function
该避障模块采用超声波传感器为探测器,通过实验测量,结合Matlab处理得到传感器检测波束角,最终确定超声波传感器在AGV上布局方式。以AVR单片机为控制核心,融入语音提示功能和CAN总线技术,对避障模块的硬件和软件进行开发,能够将预警状态和检测数据上传到AGV总控制器,实现分布式控制。实验应用表明,该模块具有运行稳定、工作可靠等特点,达到了设计要求。该模块已应用到实验AGV上,检障效果良好,运行稳定,可靠性高,能够确保AGV的安全工作,达到了设计要求。
[1]杨桃月,阳悠悠.基于单片机的可避障AGV控制系统设计[J].机电技术,2014(5):21-23,28.
[2]张全禹,苏宝林,李怀亮,等.基于FPGA的超声波测距系统设计与实现[J].电子测试,2014(22):164-165.
[3]杜莉,张建军.超声波测距技术改进方法探讨与实现[J].北京工业职业技术学院学报,2015(1):1-7.
[4]李姝颖,尹军,苌飞霸,等.基于超声波传感器阵列的导盲系统设计[J].中国医疗设备,2014(10):28-31,54.
[5]杨景阳,李荣冰,杭义军,等.超声波阵列的飞行高度与姿态测量方法[J].航空计算技术,2013(5):128-131.
[6]杨建华,翟青,梁晓章.具有语音播报功能的超声波液位测量系统设计[J].电子产品世界,2014(8):43-46.
[7]刘思双,冯涛,张柯.多探头双频超声波接收电路设计[J].电子世界,2013(23):129-130.
[8]戴国强,常国权.基于MCP2515的CAN总线通信模式的设计[J].电脑知识与技术,2012(10):2409-2411.
[9]谢廷婷.一种基于分布式系统的队列多级调度算法[J].贵阳学院学报:自然科学版,2012(3):33-36.