崔兆文,王 武
(贵州大学 电气工程学院,贵阳 550025)
近几年,智能家居系统以及机器人不断进入人们的日常生活,对室内的精确定位要求越来越高,而常规民用的GPS 定位系统,定位精度不高,不能满足人们对精度的需求。超声波定位、蓝牙定位、激光定位以及WiFi 定位技术,虽然在一定程度上能够满足定位的需求,但是定位精度并不理想,一般定位级别在米的量级。超管带定位技术UWB(Ultra Wideband),可以达到厘米级别,在一定程度上解决了定位精度的问题,同时可以通过算法的改进提高精确度[1]。
二十世纪六十年代,人们首次开发出UWB。后来,该技术经过调整,用作正交频分复用(OFDM)技术。用于定位和测距的UWB 脉冲,在6.5~8 GHz的频率范围内工作,不会干扰频谱其他频段发生的无线传输。UWB 可以方便地对监控场所进行部署,并将定位网络协同在一个实时、高精度的状态下获取定位的性能,能将场景实时动态地虚拟出来。UWB 设计的系统稳定可靠,定位功能完整,实时性能好,管理功能健全,系统安装方便,集成方式简单,使用简单,易于二次开发等扩展特点。目前在智慧工厂、司法监狱、隧道管廊、智慧电厂、智慧工地等方面应用。
本文将UWB 模块用于室内定位,同时对算法进行优化,使得定位系统能够在家庭中有较好的应用。
本系统以STM32F407 单片机为核心,控制电路由语音控制模块、UWB 模块、液晶显示等模块组成。STM32F407 最大工作频率168MHZ,满足系统设计的需求。系统采用平面定位设计,需要3 个基站和一个标签,通过标签与基站之间的距离,计算相对坐标。系统总体框架如图1 所示。
图1 系统整体框架设计图Fig.1 The overall framework design of the system
通过拨码开关控制UWB 模块的状态(标签/基站),如果是基站,通过拨码开关可以设计基站的地址,系统设计时最多允许8 个基站的存在。通过拨码开关还可对UWB 的通信频率等参数进行设置,使其满足UWB 通信的需求。
语音识别模块使用LD3320 芯片,只需把待识别的关键词语以字符串的形式传送进芯片,即可通过音响进行播报。例如,通过一级指令“定位系统”,二级指令“播报位置”,就可以通过音响知道标签所在位置。
系统使用液晶屏OLED 对标签到基站的距离,以及标签的坐标进行显示,方便相关数据的观测。使用充电宝作为电源模块,LED 小灯显示UWB 模块的工作状态(相当于对拨码开关的状态进行显示)。
程序设计流程如图2 所示。首先对单片机的引脚功能进行初始化操作,使得各个模块能够正常运行。通过拨码开关对UWB 模块的功能进行设置,使得UWB 模块处于不同的状态,并利用LED 显示拨码开关的状态。液晶屏需要对距离与定位值进行实时显示。语音模块判断的实质,是判断是否有一级指令“定位系统”,若没有接收到一级指令,语音相关程序将继续循环进行判断,直到有一级指令收到后,才会进行后面语音的判断,执行相关程序。
图2 程序设计流程图Fig.2 Program design flow chart
本系统利用基站与标签的距离,完成室内定位的任务。基站与标签的距离通过电磁波在空气中传播的时间确定。为了减少同步通信的额外环节,采用异步通信的方式完成通信内容。本文选用双边测距算法,作为基站与标签数据传输时间的基本算法。同时利用三边定位算法实现坐标的计算。
UWB 模块之间的通信方式如图3 所示。
其中,T表示两个UWB 模块传输数据的时间;R1 表示UWBA 发送数据到其接收数据的时间;D1表示UWBA 接收数据到其发送数据的时间;R2 表示UWBB 发送数据到其接收数据的时间;D2 表示UWBB 接收数据到其发送数据的时间,按照时序图,单次发送或接收数据的时间如式(1)和式(2)所示:
将式(1)和式(2)分别移相,得到D1 和D2 的表达式:
将式(3)、式(4)中计算结果D1 与D2 相乘可得式(5):
将式(5)变形可得式(6),同时将式(3)、式(4)带入:
将式(6)整理可得两个UWB 模块传输一次数据所需时间:
图3 双边测距算法时序图Fig.3 Sequence diagram of bilateral ranging algorithm
由于单片机的固有属性,执行完某条指令才会进入下一条指令。利用单片机中的定时器就会出现系统时钟误差,而这种系统带来的误差是不可控,只有尽可能的减少系统误差带来的影响。其误差计算公式如式(8)所示。
其中,ka表示RX 通道的实际传输速率与理论传输速率的比值;kb表示TX 通道的实际传输速率与理论传输速率的比值;ka、kb值一般在1 附近浮动。
实际传输速率受硬件电路以及软件设计的影响。假如以数据发送的前一时刻相对时间,作为发送数据的第一个时间戳T1。则首先发送数据单片机内部装载,将发送数据以UWB 的方式进行传输等操作,都会影响实际传输与理论传输的比值。由于数据传输是以光速传播的,所以细微的差别反映到距离上面就会很大[2]。
UWB 通信采用单脉冲通信,不需要调制和解调电路,在一定程度上,减少了损耗时间和功率,使距离的计算更加准确。
目前,有两种方式来实现UWB 通信。一是标签和3 个基站,按照上述方式分别进行通信。这样做的优势是,独立通信互不影响,而缺点是耗时时间长,功率消耗大。其二是标签只发送一次开始和截止信号,利用3 个基站的不同回复完成通信的需求。具体通信流程如图4 所示。
图4 UWB 通信示意图Fig.4 Schematic diagram of UWB communication
结合上诉的特点,本文采用第二种通讯方式,基站仅发送Poll 和Final 数据,其余均为接受数据,可以大大减少通信时间,减少功耗。具体流程如下:
(1)标签向各个基站发送Poll,等待标签的回复。
假设A 标签收到了消息,标签A 回复RespA,而后等待基站收到标签A 的回复;
B 标签收到消息,回复RespB 后等到基站收到标签B 的回复;C 标签收到消息,回复RespC 后等到基站收到标签C 的回复;……
(2)标签收到A、B、C 基站的消息后,发送Final给各个基站。基站收到信息后,每个部分可按照下式进行求解。
利用电磁波在空气中传播距离公式S=cT,即可得到基站与标签之间的距离。其中,S表示距离;c表示电磁波传输的速度;T表示数据传输的时间。
按照上述计算方式可得到标签与三点坐标的距离。三角定位系统示意如图5 所示。在理想状态下可以得到图5(a)的形式。但是实际过程中还是会有偏差,一般会出现图5(b)、图5(c)的形式。
图5 三角定位系统示意图Fig.5 Schematic diagram of the triangulation system
途中阴影部分即为计算位置的有效范围,本文采用牛顿迭代确定最优位置[3]。设3 个基站点的坐标分别为:A(x1,y1),B(x2,y2),C(x3,y3);标签坐标T(x,y);d1、d2、d3表示标签与基站A、B、C 的距离。利用基站的坐标可以得到公式(9)[4]:
可以利用牛顿迭代法确定obj 的最小值。当obj 最小时,得到的(x,y)即为最优坐标。其中初始T(x,y)是随机取值的。基本迭代原理如下:
(1)求目标函数对x,y的一阶偏导数;
(2)求目标函数对x,y的二阶偏导数;
(3)带入牛顿迭代公式;
(4)若本次obj 和上次obj 相减的绝对值小于设定偏差值,则本次obj 就是所求的坐标值。
本文通过UWB 模块之间通信来获取标签与基站的距离,利用牛顿迭代法来实现最优点的求解。基站A1 的坐标为(0,0),基站A2 的坐标为(3,0),基站A3 的坐标为(0,3)。最终试验数据见表1。
由表中的数据可以看出,最终坐标计算结果与测量距离的准确度有很大的关系。整体来看在基站围成的内部准确度较好,外围准确度较差;距离基站远的地方较好,距离某一基站近的地方较差。
本文利用UWB 模块进行定位系统的设计。实验最终数据表明,基本实现了对标签的精准定位。本系统可以应用在居家生活需要定位的系统中,可以和小车等设备结合,节省人们的体力。由实验数据结果也可以看出,距离计算的算法还有待提高。若要使数据更加准确,可以采用同步通信的方式,减少异步通信带来的时间偏差。如在时间上要求更高,可以采取专用硬件计时的方式,或者采用时钟频率更高的芯片,减少数据传输时间的误差。也可以改进算法,通过预设值和数据处理的方式,减少时间偏差。