张子旋,张爱清
(安徽师范大学物理与电子信息学院, 安徽 芜湖 241002)
智能跟随购物车是基于现代定位技术和通讯技术所创造出的符合用户购物习惯的购物车。目前有两种实现自动跟随的方法:RSSI信号定位法和摄像头识别跟随法。RSSI指的是无线接收时的信号强度,一般与无线模块发射端和接收端的距离成反比,若使用户携带无线接收模块的发射模块和角度传感器,只需由Shadowing模型
(1)
可得到收发端的距离d,其中d0为参考距离,Pr(d0)为参考距离的接收功率,Pr(d)表示距离为d时的接收功率[1]。再由角度传感器所采集的购物车和用户的角度信息得到二者角度差,购物车将控制安装在四个车轮胎上的直流电机的转速,控制购物车运动从而达到自动跟随用户的效果。
基于RSSI信号定位法自动跟随购物车实现的根本在于其能够获得用户、购物车位置信息,即无线信号大小(功率)与收、发端的距离满足一定关系。而在本文的实验中,室内的RSSI信号与收、发端的距离并没有明显的关系且所测得RSSI值具有较大的噪声,经分析其原因为:其他无线设备对其信号造成干扰;热噪声。
基于摄像头识别的自动跟随购物车的跟随功能实现的基本思想在于:网状结构的摄像头布局覆盖用户和购物车的运动空间并采集其位置信息,因此此方法只适用于室内。但相比于通过分析RSSI信号功率大小确定距离的方法,此方案计算出的用户到购物车的距离更加准确。
实现此跟随购物车所需的硬件有STM32F4智能芯片、OV2460摄像头模块、NRF24l01无线模块、直流电机及其驱动模块及TFT显示屏模块。
硬件系统设计主要基于STM32F407微控制器,内置上电复位,按键中断,时钟输出等控制电路,处理器包括32位内存,浮点运算单元以及支持高效率,单周期指令的数字信号处理单元且主频率高达168 MHz[2]。在本文的实验中,使用OV2640模块作为图像采集模块,该模块通过SCCB总线控制,TFT显示屏与OV2460摄像头模块组合使用显示屏显示OV2460摄像头模块所拍摄到的画面,用户可以完全控制图像质量,数据格式和转储方式,其图像处理功能过程包括白平衡,对比度,色度且可通过编程控制[3]。由于显示屏所显示的颜色是用RGB表示,而以HLS作为不同颜色区别标准更加精准,因此,在程序中应添加将RGB格式转化为HLS格式的程序[4]。无刷直流电机是具有梯形反电势波的永磁电机,在实际控速中所用的方法是脉宽调制,也称作PWM调制。由于无刷电机的转速可通过PWM波控制,而所使用的STM32F4芯片很容易产生PWM波形,本文中所采用的控制直流电机转速的方法皆为PWM波调制法[5]。
此方案硬件由两个部分构成:购物车组件和摄像头组件,如图1所示。其中购物车组件包括STM32F4智能微芯片、NRF24l01无线模块、直流电机及其驱动模块、亚力克小车底盘及所需电源。摄像头组件包括STM32F4智能微芯片、OV2460摄像头模块、NRF24l01无线模块、TFT显示屏模块及所需电源。其工作流程为:由多个摄像头组件组成的摄像头网络覆盖整个区域,对应的TFT显示屏呈现其摄像头所采集的图像信息,由每个摄像头组件内的智能微芯片逐点扫描识别TFT有无用户或者购物车(或用户和购物车同被一个摄像头组件识别到),由TFT显示屏所采集空间区域大小的实际面积与TFT显示屏对该面积用像素表示的关系可得出每个像素点在实际空间中所代表的实际面积大小,将已识别的购物车和用户在TFT显示屏上的像素信息由此缩放关系换成位置坐标储存在摄像头组件的STM32F4智能微芯片中,并由公式(2)、(3)计算出此两坐标点的距离d和相对角度a。
(2)
a=arctan(|y2-y1|/|x2-x1|).
(3)
得到用户和购物车的实际位置关系后,摄像头组件中的NRF24l01无线发送模块将购物车与用户的相对距离d和相对角度a传递给购物车组件的NRF24l01无线接收模块,当购物车组件的STM32F4智能芯片对所接收的信息进行相应的逻辑处理后,将发送不同指令(不同的脉冲信号)给直流电机从而控制购物车的运动,即实现了购物车的自动跟随。
图1 硬件实现
对于摄像头组件,STM32F4智能芯片中硬件初始化控制程序包括:初始化外部设备及其相应的所用的IO口,即初始化串口,设置串口波特率,初始化定时器,初始化OV2460模块及ILI9342显示屏模块,初始化NRF24L01并设置其为发送模式。主函数所执行的功能为:驱动摄像头开始采集图像信息并将其采集的信息显示到显示屏上,对TFT显示屏每个像素点逐点扫描识别有无购物车或用户,并由上文所描述的方法计算用户与购物车的位置信息,通过无线模块将相应的位置信息发送出去。对于控制摄像头采集信息这一过程的程序(将每个像素点的RGB值存储到STM32F4外接的SD卡中)放置在中断函数里执行,只有当摄像头模块采集完一帧画面且将此帧画面的数据信息保存好之后,才会结束中断程序并转到主程序执行。由于摄像头是静止的,即一个摄像头所拍摄的画面是有限的,若希望摄像头拍摄整个场地的画面(购物车能在整个场地内做跟随用户的运动),则需要建立多组摄像头组件对一个购物车组件的无线连接方式,如图2所示,当摄像头只采集到用户的位置信息时将仅把用户的位置信息传递给购物车组件,且在发送数据的末尾加上一位标志位数据以表明此数据是用户。当摄像头只采集到购物车位置信息时,仅把购物车的位置信息发送给购物车组件,且在发送数据的末尾处加一标志位,以表明此数据是购物车。同时,当购物车组件收到摄像头组件传来的数据仅为用户或购物车的位置信息时,等待其他摄像头组件传递与前一摄像头组件互补的数据,因为在摄像头网络所覆盖的区域内一定可以识别到用户和购物车,且每个摄像头组件硬件条件几乎相同,因此在对用户或购物车识别所花费的时间也几乎相等。仅当购物车组件收到用户和购物车的位置信息后,才会进行数据处理,并计算出购物车应行驶的方向和速度。
1.天花板;2.用户;购物车运动的水平面;3.一个摄像头所能监控的场地;4.一个摄像头组件
对于购物车组件,STM32F4智能芯片中硬件初始化控制程序包括:初始化串口即设定其传输的波特率,并初始化定时器,配置产生PWM波所需要的IO口,初始化NRF24L01无线模块。控制由NRF24L01接收和分析所接收数据部分程序在外部中断函数执行,定时器中断函数主要用于产生所需要的PWM脉冲信号并将此脉冲信号传递给直流电机的信号输入端,主函数执行的功能为:依据外部中断函数反馈的信息计算产生对应PWM脉冲信号的参数大小并将此参数传递到定时器中断中,其表现功能是控制购物车的行驶,使购物车按照用户的轨迹运动,达到自动跟随用户的效果。这样安排程序执行结构是为了提高购物车自动跟随的准确率,减少硬件损坏以及节约时间,由于主函数的作用是控制购物车的四个电机的转速也即控制购物车的速度和行驶方向,然而若将接收和分析无线模块传递的数据部分的程序写在主函数中,可能会导致购物车组件响应无线接收失败或响应延迟,从而使购物车无法及时按照用户的位置信息作出调整。此外电机响应PWM信号和达到新的平稳运动状态需要时间,若将PWM脉冲产生部分程序写在主程序中会使电机转速突变而有损电机硬件。
从介绍RSSI信号定位法的原理出发,指出RSSI信号定位法在实际执行时产生的方案性问题,并分析该问题可能产生的原因,提出摄像头定位法,且对此方案的可行性做了详细的介绍,给出了智能购物车的硬件材料和使用这些材料所对应的程序,最后简述了摄像头定位法实际应用时的程序实现执行流程。