曾倩科,贾云飞,张 珊,张佳庆
(1.南京理工大学机械工程学院,江苏南京 210094;2.晋西工业集团有限责任公司,山西忻州 030000)
近些年,对于无人机障碍物检测的技术要求越来越高,传统的雷达检测手段已经无法胜任对高速运动物体的检测工作,所以开始研究与发展将性能更高的毫米波雷达作为无人机障碍物检测的前端[1]。在这种趋势的推动下,全世界的科研人员开始关注毫米波雷达这个新兴的技术。毫米波雷达是指发射毫米波的雷达[2],毫米波雷达同时具有微波制导和光电制导两大优点,一跃成为近些年来研究的热点[3]。2017 年,德州仪器Texas Instruments(TI)首次发布用于汽车和工业领域的毫米波雷达芯片,将毫米波雷达集成到一块芯片上。但由于新一代毫米波雷达出现时间短、技术复杂等,因此毫米波雷达采集板卡主要从国外进口[4],同时采集板卡造价过于昂贵,且作为单独设备使用时不利于携带,也无法满足无人机等小型化雷达系统的需求。毫米波雷达的数据量大、数据处理速度要求高,因此如何快速准确可靠地读取数据并解析是其难点[5]。
目前有基于单片机ARM 的数据采集系统[6]、基于DSP 的雷达采集系统[7],也有基于FPGA 的雷达采集系统[8],但是它们都是通过串口或者SPI 等其他的有线连接方式进行数据传输,使用十分不方便,且不能远距离传输。对于毫米波雷达系统在无人机等方向上的应用,无线数据采集是必不可少的。
基于上述一些问题,利用STM32F103C8T6、ESP-12F WiFi 芯片和Matlab App Designer,设计了一种可以进行无线快速采集雷达数据的采集系统,以实现毫米波雷达数据的快速准确可靠采集与解析。
系统主要由数据采集模块、数据传输模块和数据处理模块组成。系统的总体结构设计如图1所示。
图1 系统的总体结构设计图
数据采集模块主要包括IWR1642 BOOST 开发板、5 V-2 A 大电流电池。
数据传输模块主要包括STM32F103C8T6 MCU控制器、ESP-12F WiFi模块。
数据处理模块主要包括一台具有无线或者有线网卡的PC 机,并装有Matlab 软件。
数据采集模块负责毫米波雷达数据的快速采集,数据传输模块负责毫米波雷达数据的快速传输,数据处理模块负责毫米波雷达数据的快速解析与显示。
数据采集模块主要由TI 公司提供的IWR1642毫米波雷达开发板和一块5 V-2 A 大电流电池组成。将雷达的配置文件和程序一起烧写在IWR1642芯片的FLASH 中,使得IWR1642 毫米波雷达开发板上电就可发送毫米波,并接收多普勒回波数据。
2.1.1 毫米波雷达的原理
毫米波雷达可以分为脉冲雷达和连续波雷达[9],其中连续波雷达分类较多。该系统测试使用的IWR1642 毫米波雷达芯片就是一种线性调频连续波(Linear Frequency Modulation Continuous Wave,LFMCW)毫米波雷达。连续波雷达系统工作时,首先由合成器产生一个特定波形的雷达发射信号,该雷达发射信号进入两条线路,一条经由雷达发射天线发射;另一条直接进入混频器中,两组信号完全相同[10]。当从发射天线中发射的雷达发射信号碰到物体时,会发生反射,从而被另一根雷达接收天线接收,此时便完成了一轮信号的发射和接收工作。信号的发射接收工作完成后,由混频器将发射信号和接收信号合并到一起,产生一个新信号[11]。
2.1.2 IWR1642 毫米波雷达传感器原理
该系统的数据采集模块主要采用的是TI 公司的IWR1642 BOOST。IWR1642 毫米波芯片是一款能够在76~81 GHz 频带中运行且基于FMCW 雷达技术的集成式单芯片毫米波传感器[12]。
IWR1642 可以发射高达4 GHz 的连续线性调频脉冲(LFMCW)。该器件采用TI 的低功耗45 nm RFCMOS 工艺构建,并且该解决方案在极小的封装中实现了前所未有的集成度[13]。
IWR1642 包含一个具有内置PLL 和模数转换器的单片实时2 发送4 接收的系统。IWR1642 还集成了DSP 子系统,该DSP 子系统包含TI 用于雷达信号处理的高性能C674x DSP,该器件包含一个基于ARM R4F 的处理器子系统,该子系统负责前端配置、控制和校准[14]。同时该芯片还有CAN 接口、SPI接口、UART 接口与外界进行通信,因此,IWR1642 BOOST 完全可以用于文中系统的数据采集。
数据传输模块主要由意法半导体STMicroelectronics(ST)公司的STM32F103C8T6 MCU 控制器和安信可科技公司的ESP8266 WiFi芯片组成。
在IWR1642 毫米波开发板采集到数据之后,STM32F103C8T6 通过串口2 读取雷达数据,然后通过终端将数据复制到串口3,串口3 又与ESP-12F 相连,将雷达数据通过WiFi 发送出去。数据传输模块设计如图2 所示。
图2 数据传输模块设计图
STM32F103C8T6 是一款基于ARM Cortex-M 内核STM32 系列的32 位微控制器,程序存储器容量是64 kB,需要电压范围为2~3.6 V,工作温度为-40~85 °C[15]。系统时钟频率是72 MHz,包含3 路USART串口。串口1 与IWR1642 的雷达数据配置串口相连,串口2 与IWR1642 的雷达数据发送串口相连,串口3 与ESP-12F 的接收串口相连。
ESP-12F 模块是一款由安信可科技开发的WiFi模块,该模块核心处理器为ESP8266,在较小尺寸封装中集成了业界领先的Tensilica L106 超低功耗32 位微型MCU,且带有16 位精简模式,主频支持80 MHz和160 MHz,支持RTOS,集成Wi-Fi MAC/BB/RF/PA/LNA[16]。ESP8266是高性能无线SoC,以最低成本提供最大实用性,为WiFi功能嵌入其他系统提供可能。ESP8266 系统的整体电路设计如图3所示。
图3 ESP-12F系统整体电路设计图
ESP-12F 的系统整体电路参考该数据手册的电路图,在UART 输入输出部分设计二极管保护电路,电源供电部分利用SY8120 电源转换芯片将5 V 转成3.3 V,转换成功之后LED 灯会点亮。该电路的优点是可以使输出电流达到2 A 的大电流。通过P6 排针将ESP_VIN、GND、TXD0、RXD0、REST、GPIO_0 引脚引出,方便烧写AT 指定固件。利用P1、P2 排针将ESP-12F 的输入输出引脚引出,并利用跳线帽决定它是否与STM32MCU 的串口相连。
STM32F103C8T6最小系统整体设计如图4所示。
图4 STM32F103C8T6最小系统整体设计图
该系统的STM32F103C8T6最小系统的设计可靠且灵活,采用SP6203_3.3 电源转换芯片将+5 V 转化成+3.3 V,且转换成功之后会有LED 灯点亮显示。该系统引出SWO 程序烧录下载口,晶振的滤波电路采用Π型滤波,设计复位开关用于程序的复位,即在程序运行过程中出现系统卡死时可以复位重启。在STM32F103C8T6 主控芯片的电源引脚周围放置滤波电容,用于滤波。为了可以修改STM32F103C8T6 主控芯片的启动方式,将BOOT0 与BOOT1 引脚引出。
在STM32F103C8T6 最小系统整体设计中将串口1 接毫米波的配置接口,串口2 接毫米波的数据接口,串口3 接WiFi 接口。将数据传输系统用到的三个串口都用排针引出,方便后续系统调试。
毫米波雷达数据在被数据采集模块采集到并经过数据传输模块传输到计算机之后,计算机开始处理毫米波雷达数据。
2.3.1 数据处理算法
计算机接收到的雷达数据属于原始雷达数据。计算机先判断该数据是否是有效的点云数据,若是,则根据TVL 格式进一步解析出雷达数据中包含的范围方位角、多普勒、信噪比、X轴位置、Y轴位置、X轴速度、Y轴速度、X轴加速度、Y轴加速度等信息,然后保存并显示出来。毫米波雷达数据处理的算法流程如图5 所示。
图5 毫米波雷达数据处理的算法流程图
2.3.2 数据处理的上位机说明
由于数据量大,且需要快速处理,所以用Matlab对数据进行动态实时分析[17]。为了方便人机交互,用Matlab App Designer 为该系统编写了一套雷达数据快速接收与处理的上位机。Matlab 中可以接收WiFi传回的数据,并实时解析显示雷达的有效信息。
在“WiFi连接”面板中首先选择“协议类型”,选择“TCP Client”类型,然后在“IP地址”中输入对应的IP地址,默认的IP 地址为“192.168.29.240”,最后在“端口号”中输入对应的端口号,默认值为“8080”,然后点击“开始”按钮。如果连接成功,灯会变红。实时接收WiFi 传回来的原始雷达数据,然后将范围、方位角、多普勒、信噪比、X轴位置、Y轴位置、X轴速度、Y轴速度、X轴加速度、Y轴加速度等信息显示出来。数据可以实现实时保存,还可以将处理后的数据保存下来。
TI 的毫米波雷达数据采用TLV 格式进行存储与传输。雷达每帧都会发送一个数据包,而每个数据包又有7 个不同的数据结构,如图6 所示。
图6 数据包格式
其中,Frame Header 表示帧头。TLV 表示Type+Length+Value(类型+长度+值)。
雷达数据由帧头和TLV 数据组成,其中TLV 一共有三种数据分类,分别是Point Cloud TLV、Target List TLV 和Target index TLV,它们分别代表了三种类别的数据,即2D 点云数据、目标列表数据、目标索引值数据。
每次数据的传输都以Frame Header 作为传输的开始,Frame Header共有52 个字节长度。
帧头结构体中包含了很多成员,这些成员所包含的物理意义依次为同步模式、SDK 版本类型、毫米波雷达板的平台、传输时间、数据包的长度、雷达数据的帧数、雷达数据的子帧数、啁啾处理幅度、帧幅度、串口发送时间、轨迹处理时间、TLV 数据数量、校验和。其中关键的成员是“sync(同步模式)”,因为“同步模式”可以用来判断雷达数据是否有效。“同步模式”的固定数据是“02 01 04 03 06 05 08 07”。只有以“同步模式”为开始的每帧雷达数据传输,才是有效的数据传输,其他情况是无效数据传输。因此,在数据处理中,检测“同步模式”所在的位置很重要。
在帧头之后的第一组TLV 数据就是2D 点云数据(Point Cloud TLV)。2D 点云数据包括检测范围、方位角、多普勒效应和信噪比。2D 点云数据中的T1固定以十六进制的“0x06 0x00 0x00 0x00”表示。2D 点云数据中L1(长度)的大小和被测对象的数量有关,公式为:
其中,a1是TLV 帧头结构体的大小,固定是8,b是2D 点云数据的结构体的大小,固定是16,x1是点的个数。
在2D 点云数据之后的一组TLV 数据是目标列表数据。目标列表数据格式包括轨迹ID、X轴的位置、Y轴的位置、X轴的速度、Y轴的速度、X轴的加速度、Y轴的加速度、误差协方差矩阵和控制函数。目标列表数据中的T2固定以十六进制的“0x07 0x00 0x00 0x00”表示。目标列表数据中L2(长度)的大小和被测对象的数量有关,公式为:
其中,a2是TLV 帧头结构体的大小,固定是8,c是目标列表数据的结构体的大小,固定是68,x2是点的个数。
最后一组TLV 格式的数据是目标索引值数据。目标索引值数据中的V(有效值)是目标ID号,该值用来判断该点是否是有效数据点。有效值在[0,249]之间,超出的值就是无效的值,说明该点是无效的点。目标索引值数据中的T3固定以十六进制的“0x08 0x00 0x00 0x00”表示。目标索引值数据中L3(长度)的大小和被测对象的数量有关,公式为:
其中,a3是TLV 帧头结构体的大小,固定是8,x3是点的个数。
针对以上数据格式,用Matlab 软件编写了一套数据快速采集的算法。毫米波雷达数据是以十六进制小端存储在BOOST 上的SDRAM 中的。雷达数据处理方法是先将十六进制的数据转化成十进制,然后通过typecast函数得到各个参数的具体值。由于在新版Matlab 中,如果数据以十六进制存储在矩阵中,数据输出时会自动以十进制输出,因此就不用人为地将十六进制转化成十进制,所以该系统使用Matlab App Designer 编写上位机进行数据处理。
实验环境示意与实验测试的现场图如图7所示。
图7 实验环境示意与实验测试的现场图
根据实验要求,将毫米波雷达数据快速采集系统以一定的倾角固定在支架上,之后将依据TLV 格式数据编写的毫米波雷达程序和雷达的基本配置烧写到IWR1642 中,运行程序,之后被测人员在雷达测试区域内运动,以产生目标测试信号,从而得到毫米波雷达的点云数据。然后利用Matlab App Designer 专门为该系统编写的一套上位机对数据进行解析,并将原始数据和解析后的数据分别保存在计算机中。
为了表达清晰,将实验结果绘制成表。实验结果中的各个参数如表1 所示。
表1 实验结果
数据表明,被测人员在相对于毫米波雷达测试系统的正前方1.954 3 m,相对于测试系统的偏移角度是-0.294 5 rad,在X轴距离是-0.9 m,Y轴距离是3.093 8 m,同时由于该测试时期的被测人员并未移动,所以X轴、Y轴方向的速度和加速度均为0。这些实验测试数据均与实际情况相符合,因此说明该系统的可靠性与可信性。
文中提出了一套基于STM32F103C8T6 和ESP-12F 的毫米波雷达数据无线采集系统设计。该系统利用PC 端的Matlab App Designer 设计了一套上位机,作为数据处理模块,以STM32F103C8T6 芯片和ESP-12 WiFi 模块作为数据传输模块,以IWR1642毫米波雷达设备和供电系统作为数据采集模块。利用数据传输模块与数据采集模块以获得毫米波雷达数据,然后发送给数据处理模块进行数据解析处理。该系统摆脱了毫米波雷达数据有线传输的束缚,将毫米波雷达数据直接通过WiFi 传输到上位机中,为后续的毫米波雷达数据处理算法提供一套稳定可靠的雷达数据采集系统。文中研究的雷达数据处理系统可延展性高,易于安装和使用,方便拓展毫米波雷达的应用场景,具有较高的实际使用价值。