北京航空航天大学出版社 智能移动机器人 XINT CANTX
移动机器人要实现在未知和不确定环境下运行,必须具备自动导航和避障功能。在移动机器人的导航系统中,传感器起着举足轻重的作用。视觉、激光、红外、超声传感器[1]等都在实际系统中得到了广泛的应用。其中,超声波传感器以其信息处理简单、速度快和价格低,被广泛用作移动机器人的测距传感器,以实现避障、定位、环境建模和导航等功能。
传统的轮式移动机器人超声数据采集系统大多采用单片机作为微处理器,以此来测量移动机器人到障碍物的距离,并将距离通过串口传输到上位机。采用这种设计,系统制作简单、成本低。但是,对于多超声传感器测距系统,如果仍采用单片机来完成测距任务,由于系统中超声传感器数量较多,为保证系统的实时性,就需要多个单片机才能完成数据采集,这使得采集系统不可避免地存在设计复杂和一些算法难以实现等缺陷。随着微电子工艺的发展,数字信号处理器(DSP)的应用领域已从通信行业拓展到工业控制领域。TI公司推出的TMS320LF2407A是专门针对控制领域应用的DSP,它具有高速信号处理和数字控制功能所必需的体系结构,其指令执行速度高达40MIPS,且大部分的指令都可以在一个25ns的单周期内执行完毕。另外,它还具有非常强大的片内I/0端口和其它外围设备,可以简化外围电路设计,降低系统成本。正是基于这种思想,中国科学院自动化研究所在国家“863”计划的支持下,利用多DSP和嵌入式PCI04自行设计和研制了轮式移动机器人CASIA-I。本文着重介绍其超声数据采集系统,同时对通过CAN总线完成的超声数据与上位机通讯的原理和设计过程进行分析说明,并给出实验结果。
1超声测距原理
超声测距的原理较简单,一般采用渡越时间法[1],即:
D=ct/2 (1)
其中D为移动机器人与被测障碍物之间的距离,c为声波在介质中的传输速率。声波在空气中传输速率为[1]:
其中,T为绝对温度,c。=331.4m/s。在不要求测距精度很高的情况下,一般可以认为c为常数。渡越时间法主要是测量超声发射到超声返回的时间间隔t,即“渡越时间”,然后根据式(1)计算距离。
2系统硬件设计
在距地面高度为45cm、相隔为22.5°的同一环上均匀分布着16个Polaroid生产的超声传感器,其编号为1#~16#(逆时针安排),超声传感器波束角为30°,超声传感器的最小作用距离为0.45m。超声数据采集板主要有两大模块:一是16路超声传感器的超声波发射和回波的接收模块,二是与上位机(机器人中央控制器)的CAN总线通讯模块。其硬件结构见图1。
TMS320LF2407A向I/0端口发出控制信号,启动内部定时器进行计时。此控制信号经功率放大后作为超声传感驱动电路的启动信号(1NIT),超声传感器产生的、遇到障碍物时返回的高频振荡信号经放大(为弥补传播过程中信号的衰减)使超声传感驱动电路的ECHO端产生高电平脉冲。ECHO电平变化经过门电路后引起TMS320LF2407A外部中断,在中断程序内获取定时器的计数值,根据式(1)计算距离;否则,认为传感器前方探测范围内无障碍物。
因为超声传感器之间的安装位置相差22.5°,而超声传感器的波束角为30°,如果超声波同时发射,必然会有干扰。如果采用轮循方式,即一个接一个地发射超声波,虽然可以消除串扰回波的影响,但是16个超声传感器轮循一次周期较长,降低了采集频率。为了在不降低采集频率的同时消除超声的相互干扰,本系统将16个超声传感器分成A(1#、3#、5#、7#、9#、11#、13#、15#)和B(2#、4#、6#、8#、10#、12#、14#、16#)两组,因为同一组内的两个超声传感器安装位置相差45°,通过计算可以知道,这种情况下超声传感器同时工作不会产生干扰,因而每一组里的超声传感器同时工作,组与组之间则采用轮循方式工作。这样既可以达到很高的采集频率,同时也满足了系统的实时性要求。每组8个超声传感器的ECHO端分别连接到一门电路,然后通过门电路连接DSP的XINTl和XINT2端。XINTl/2引脚电平发生跳变时会产生外部中断,通过I/0口可以知道是哪个或哪几个传感器引起中断。
TMS320LF2407A内部集成了CAN控制器,通过它可以方便地构成CAN控制局域网络。TMS320LF2407A的CANTX和CANRX接口与CAN收发器SN65HVD230相连,通过SN65HVD230连接CAN总线。SN65HVD230是TI公司生产的专门针对240X系列DSP内CAN控制器与物理总线的接口。它的供电电压和TMS320LF2407A一样,仅为3.3V。由于CAN总线的数据通信具有突出的可靠性、实时性和灵活性,最高传输速率可达到1Mbps。超声采集板的数据能够快速、可靠地传给中央控制器。
3软件设计
系统软件主要由两部分构成,即超声数据采集与处理模块、CAN总线通讯模块。
3.1多路超声传感器数据采集模块
超声传感器被分为两组,两组循环交替工作。软件设计上采用两个定时器依次工作,分别对两组传感器进行计时。选择定时器的周期比超声传感器探测最大距离所需的渡越时间稍长。在每个定时器周期开始时,触发一组超声传感器同时开始工作。在定时器周期内,每个回波返回,都会触发一次外部中断(XINTl或XINT2中断),在外部中断处理程序内,将超声波返回时间进行纪录,并将相应的超声传感器关闭。外部中断处理程序非常简短,本系统只用了不到20条指令,并且TMS320LF2407A指令执行速度很快,因而即使因进入外部中断处理程序而延误了对后来回波的处理,但这种延误的时间根据计算不大于0.5μs,由此引入的距离误差根据(1)式计算小于83.5×10-6m。可见误差非常小,可以忽略不计。当定时器中断时,对于距离大于最大超声探测范围的,没有相应的时间记录,给它们加上超出测距范围的标志。其它的时间数据都有记录,根据(1)式计算距离,然后启动下一个定时器工作,并触发下一组超声传感器。本文的超声传感器的最大探测距离为3.5m,因而超声波探测的最长时间为20.58ms。所以每个定时器的周期选为20.6ms。图2只画出了一组超声传感器的处理框图,另一组与此相同,不再赘述。
由于受环境温度、湿度的影响,超声传感器的测量值与实际值总有一些误差,表1列出了本超声测距系统测量值与对应的实际值。采用最小二乘法[8]对表1的数据进行拟合,结果为:
y=O.9986x+0.2111
式中,x为测量值,y为实际值。
3.2基于CAN总线的数据通信
超声数据采集板发送测距数据以中断的方式完成。TMS320LF2407A有专门的mailbox中断,用于响应发送/接收中断。每个超声传感器的测距值在DSP内用两个字节存储,而CAN总线传输标准要求每个数据帧最多只能传输8个字节的数据。本系统共有16个超声传感器,共有32个字节存储所有测距值。CAN总线传输所有测距值需要4个数据帧才能传送完。本系统的通讯过程为:中央控制器发送远程请求,超声数据采集板进入接收中断,在中断服务程序内,采用查询方式发送4帧数据,每帧数据包含4个超声传感器的测距值。本系统采用的波特率是500kbps。TMS320LF2407A用mailbox0接收中央控制器的远程请求帧,用mailbox2发送测距数据值。图3是超声数据采集板的发送数据中断服务程序框图。其中,TA2是对应mailbox2发送数据帧完成的标志位,RMP0是对应mailbox0接收数据帧的标志位。关于TMS320LF2407A的CAN模块的具体说明,参见文献[4],在此不作具体介绍。
中央控制器接收子程序由VC++编写。当机器人需要新的测距值时,即调用此子程序。程序框图见图4。接收程序收到一帧数据后,判断数据是否有错,若有错,则向采集板发送命令,要求重发此帧数据;若正确,发送确认命令,要求采集板发送下一组数据,直到所有的超声测距数据都接收完。
|