本课题研究的机器人工作在大约40 m深的浆液下,为了防止水煤浆由于长时间的存贮而沉淀,他能在按照预先规划的轨迹行走时完成搅拌功能。在这种条件下,一个很重要的问题就是机器人定位功能的实现,用来实时了解其具体位置。本机器人定位系统采用多路超声波传感器测距,然后采用三点定位法,把测距信息转化为机器人的位置信息。超声波作为一种无接触检测方式,与激光、红外以及无线电测距相比,在水煤浆中可以比较容易地穿透水煤浆达到测距的目的,且精度较高。
1 超声波测距系统
1.1 超声波测距原理
超声波测距原理一般采用时间度量法,计算公式为:
式中D(m)为超声波传播的距离,v(m/s)为超声波在介质中传播的速度,t(s)为超声波在介质中传播的时间。而超声波在介质中传播的速度由介质的性质和温度T(℃)决定,由此可得到水中超声波的波速为:
1.2 超声波测距的硬件系统
系统硬件框图如图1所示,其设计为分布式控制系统。在本系统中USR1为超声波发射传感器,USR2,USR3,USR4为接收传感器,他是型号为JSS- 03的液下专用超声波传感器,该传感器既可做接收用同时也可做发射用,其灵敏度高,额定脉冲工作电压高,瞬时输出功率大。温度传感器选用DS18B20,该传感器具有单总线、抗干扰、测温范围宽(-55~+125℃)、适合远距离恶劣环境测温的特点。在本系统中使用的单片机 (MCU0,MCU1,…MCU4)均选用51系列单片机AT89C52。
当系统处于工作状态,由MCU0每隔3 s产生一个脉冲,信号经过放大激发信号发生器ST-3A,然后触发超声波发生器USR1;同时给MCU2,MCU3,MCU4的中断INT0一个低电平,使他们开始计时。当接收超声波传感器接收到发射超声波传感器发出的信号后,立即把产生的接收信号传给单片机,中间的信号调理过程为一级放大(放大100 倍)、带通滤波、二级放大(放大50倍)、电压比较、光电隔离,其中电压比较的基准电压可调,当信号电压高于基准电压时使MCU的INT1中断。INT0 中断和INT1中断的时间间隔即为发射与接收传感器间的时间,他存储在单片机固定的RAM中。而温度传感器DS18B20是分时完成对环境温度的测量的,采用严格的时序单片机进行双向通讯。单片机把温度信息存在他的固定RAM中。
1.3 超声波测距的软件系统
要完成对机器人的位置信息的测量就要求把存储在单片机RAM内的时间信息和温度信息采集到上位机中,然后把这些信息融合起来得到机器人的确切坐标。工控机与下位机采用串口通讯方式,通讯协议为MODBUS协议。同时上位机采用VC 6.0作为开发工具,工控机的软件程序采用模块化编程,程序主要由串口通讯模块、三点定位模块、数据库模块及界面模块组成,其循环通讯的流程如图2所示。
2 实 验
2.1 实验准备
为了验证程序的可靠性和对比两种超声波发射传感器在定位过程中的效果,做了水下定位实验,该实验是在9 m×7 m的长方形水池中进行的,水深25 cm左右。在实验之前在水平面内建立直角坐标系,同时在r=3 300 mm的圆周上均匀放置三个超声波接收传感器,其坐标(单位:mm)分别为(3 300,0)、(-1 650,2 858)、(-1 650,2 858),在实验过程中超声波发射传感器在此圆周内移动。
根据以前一系列的实验结果,在本次实验的软件系统中对测距程序按下式进行了修正:(单位:mm)
2.2 实验结果
(1)JSS-03型超声波发射传感器
该传感器的最佳发射频率为10 kHz,发射面为一个平面,波束角为60°,其指向性很强,在此定位系统中,3个接收传感器都能够收到该发射传感器的信号,但在其波束角内的接收传感器接收的信号比其他两个强,这就影响了接收传感器触发时的灵敏性。
如图3所示,中间的实线圆为经过非线性优化过的发射传感器的移动轨迹,半径为3 204 mm,这些定位点分散在轨迹圆的周围,外侧的虚线圆为偏离原点最远点所在的圆,内侧的虚线圆为距离原点最近的点所在的圆,最大误差为8.08%,这些误差主要来自于发射中心产生的误差和测距产生的误差。
(2)LYF-20型圆周发射传感器
复制的最佳发射频率为22 kHz,发射面为圆柱面,他的优点就是对于三个接收传感器而言发射中心是固定的,并且他们接收的信号强弱一致,但他的指向性不强,由于信号分散,故其发射的信号弱于JSS-03型传感器。如图4所示。由于从发射源头就避免了发射中心产生的误差,所以他的定位精度较高,主要误差来自于测距误差,其优化后的轨迹圆半径为3 154 mm,最大误差为3.78%。在此可以看出,频率对超声波的测距是有很大影响的,频率越大,精度越高。
3 结 语
从实验结果看出,定位系统是可行的,有较高的可靠性,并且本系统的实时性可达1 s,其精度也可以达到我们预期的效果,但是硬件系统还有提升的空间。研究内容对水下机器人的定位,信号的采集,数据的远距离传输等都有参考价值。