张 磊 ,曹 乐 ,阚 秀 ,张夏丰 ,魏德轩
(1.上海工程技术大学 电子电气工程学院,上海 201620;2.东南数字经济发展研究院,浙江 衢州 324000)
从20世纪60年代起,就有学者开始提出使用惯性测量系统(inertial measurement unit, IMU)来测量物体或人体位移的概念[1-6]。近年来,随着微机电系统(microelectromechanical systems,MEMS)的不断发展,MEMS-IMU也被广泛应用于惯性导航领域。随着技术的不断突破,在兼顾更高的性价比和稳定性的情况下,一些学者开始研究阵列式 MEMS惯性测量单元,文献[7]分别将2~5个低精度惯性测量单元数据融合,使姿态估计的精度提高了30%~76%;文献[8]选取2个陀螺仪和三轴加速度计构建阵列式 MEMS惯性测量单元,显著降低了随机误差。阵列式MEMS惯性测量单元因其高性价比被广泛应用于行人导航、汽车电子乃至军工行业[9-10]。在这些学者的研究中,大多使用如 STM32单片机、数字信号处理器(digital signal processor, DSP)、树莓派(Raspberry Pi)等作为主控芯片[11-12],该情况下的数据采集方案为串行采集,导致采集到的各个惯性测量单元数据之间具有较大时间差,导致其姿态估计误差也相应地增大[13],在高精度要求的惯性导航领域无法保证导航精度。由于现场可编程门阵列(field programmable gate array, FPGA)控制具有同步并发和高速的工作特性,少数学者使用 FPGA作为主控芯片来实现惯性测量单元的数据采集,将低性能惯性测量单元随机误差降低了倍[14-15]。
考虑到MEMS惯性测量单元的精度会对导航的姿态估算精度造成直接影响,因此,如何有效地辨识MEMS惯性测量单元随机误差是当下MEMS惯性测量单元研究的重点之一[16]。MEMS惯性测量单元随机误差来源主要是器件本身的误差[17],为评估该随机误差,使用目前被普遍应用于惯性测量单元随机误差辨识的阿伦(Allan)方差作为辨识方法。早期用Allan方差来分析振荡器的频率的不稳定性和相位的不稳定性,后来把Allan方差用到惯性测量单元的随机误差辨识中。Allan方差通过测量传感器数据随着时间变化程度,来分析该传感器的随机误差特性。
本文所设计的惯性测量单元阵列由 10个MEMS惯性测量单元ICM20602构成。ICM20602内部集成了六轴数据采集功能,分别为三轴加速度计和三轴陀螺仪。设置数据输出频率为200 Hz时,其加速度计的噪声低至 0.013m⋅s−2,陀螺仪噪声为0.057(°)⋅s−1。ICM20602内部集成了多个模块,具有16位模数转换器(analog-to-digital converter,ADC)、可配置的数字滤波器、嵌入式温度传感器以及可编程中断功能。所支持的通讯方式为集成电路总线(inter-integrated circuit, IIC)和串行外设接口(serial peripheral interface, SPI),考虑到高速通信的需求,IIC最高传输速率为3.4 MHz,而SPI总线传输速率最高为 50 MHz,故选取 SPI作为IMU阵列与FPGA芯片之间的通讯方式。SPI是摩托罗拉(Motorola)公司推出的一种同步串行的全双工高速通信总线,最早被用在68000微处理器的微控制器芯片上,通过四根信号线进行通信,分别为从主机输出的串行时钟线SCLK、主机输出从机输入信号线 MOSI、主机输入从机输出信号线MISO以及主机对从机片选的信号线nCS。图1为单个MEMS惯性测量单元ICM20602的硬件电路原理图。
图1 ICM20602原理图
图1中管脚VDDIO和GND负责ICM20602芯片的电源供应和参考地。SPC_ICM1、SPI_ICM1、SDO_ICM1以及 CS_ICM1四个管脚作为 SPI通讯数据线与FPGA之间实现通信,INT1管脚为中断输出,与FPGA之间相连,作为数据输出的标志位。
在现场可编程门阵列控制方面,选取赛灵思(Xilinx)生产的Spartan-6系列FPGA芯片xc6slx9作为数据采集控制芯片,该芯片具有9 152个逻辑单元、90 kB的可配置逻辑块、16个乘法器以及2个时钟单元,以较高性价比被应用于多个领域。该系统设计具有自顶向下的设计风格,同时,为避免竞争冒险的情况发生,使用逻辑严密和清晰的三段式状态机作为整个系统的控制逻辑实现方法,增加了系统的稳定性和可维护性。为便于描述同步数字电路的逻辑抽象,使用寄存器转换级电路图(register transfer level, RTL)来描述FPGA控制结构。图2为采集系统的顶层RTL图。
图2 采集系统顶层RTL图
图2中Multi_IMU_ACQ_TOP为顶层模块。该模块包括多个子系统,其中ICM20602_ARRAY为传感器输入子系统(调用名为IMU_ARRAY_CTRL)、divider为均值滤波子系统(调用名为Average_CAL)、uart_ctrl为串口控制子系统(调用名为 uart_ctrl)、uart_tx为串口发送子系统(调用名为 uart_tx_inst)和Fin_cnv0_GND_1_o_AND_13_o1和 CE为状态机控制子系统。采集系统工作结构图如图3所示。
图3 采集系统工作结构图
10路传感器信号通过 SPI总线同步传输至FPGA中,为减小其随机噪声,实现降噪的目的,使用均值融合的方式将 10路传感器数据进行融合,并通过串口通信方式将数据发送到个人计算机(personal computer, PC)端供其分析使用。
为使阵列式MEMS惯性测量单元正常工作,需要通过 SPI总线对 MEMS惯性测量单元ICM20602进行参数配置。配置ICM20602的参数为:当传感器的角度偏移为±1(°)⋅s−1时,陀螺仪输出为±131 bit;当传感器的加速度为±1m⋅s−2时,加速度计输出为±16 384 bit;同时配置传感器以每秒200个数据包的速率进行数据传输。随后将单个MEMS惯性测量单元 SPI通信部分封装成独立的模块,再通过速率为10 MHz的SPI总线将数据输出。将MEMS惯性测量单元采集系统的采样率设置为200 Hz,FPGA采集到的阵列MEMS惯性测量单元数据进行均值滤波之后,每秒输送的数据量大小为4 200 B(包含头尾帧),考虑到该数据量大小,可直接使用串口通信方式将数据以 57 600的波特率输出到 PC端,PC端使用串口助手接收到的数据如图4所示。
图4 串口助手通信图
图4中的串口调试小助手左侧为通信参数配置部分,包括端口、波特率和检验位等,默认使用端口9(COM9)进行通信,通信的波特率为57 600,无奇偶校验位,数据位为8 bit,停止位为1 bit。右侧为收到的16进制数据。
为确保该系统控制逻辑的正确性,首先使用芯片示波器(Chipscope)软件对 FPGA数据采集模块进行 RTL级仿真。再通过矩阵实验室(matrix laboratory, MATLAB)软件对所采集到的数据进行预处理,剔除无效数据并将数据从原始的十六进制转化为十进制的加速度值和角加速度值。将该数据与所采集到的单个IMU数据使用Allan方差进行对比分析。
为确保 FPGA主控功能的齐备性和代码行为的正确性,使用 Xilinx开发工具包中的板载逻辑分析仪 Chipscope进行 RTL级仿真,对逻辑功能进行观察并抓取SPI通讯的波形信号,为避免占用过多逻辑资源而实现逻辑分析功能,所生成的Chipscope采样深度设置为2 048个采样点(即每次触发条件成立后采样 2 048个连续数据进行分析),将触发位设置为100,以实现对位宽为100的寄存器的观察目的。如图5所示,该波形为惯性测量单元ICM20602数据采集波形。
图5中:SPI_CLK为对应主机输出到从机的串行时钟;MOSI为主机输出从机输入的数据线;MISO为主机输入从机输出的数据线;dataAddr为从MEMS惯性测量单元ICM20602驱动模块中提取数据的地址寄存器,地址寄存器对应MEMS惯性测量单元 ICM20602的X、Y、Z轴加速度计数据和X、Y、Z轴陀螺仪数据的地址位;outrddata为对应从ICM20602中测得的数据,图5中所显示的是10路MEMS惯性测量单元的原始采集数据。
图5 Chipscope实测波形
阵列式MEMS惯性测量单元采集系统的硬件电路板如图6所示。
图6 硬件电路板实物图
正面左右两侧的排针用于与 FPGA控制板连接从而实现数据采集,该采集系统的采样频率为200 Hz,工作主频高达50 MHz,在周期为20 ns的一个脉冲内,对各个IMU之间数据进行同步采集,为IMU采集的实时性和可靠性提供了保证。该硬件电路板集成了 10个 MEMS惯性测量单元ICM20602,电路板正反面分别有 5个呈对称分布的 ICM20602,通过对多个 IMU数据进行均值滤波来降低随机误差。
本文中阵列式MEMS惯性测量单元采集系统分别采集单个 MEMS惯性测量单元以及阵列式MEMS惯性测量单元在静态2 h15 min条件下的输出数据,并对二者随机误差进行辨识分析。
采集系统的硬件电路板正面朝上,将所采得数据通过串口通信发送到PC端,图7为数据采集图示。采集时长为2 h15 min,接收到的数据大小约为 3.4×107B。
图7 数据采集图示
图7中使用PC端对FPGA开发板所采集到的数据进行接收,为确保连接可靠性和稳定性,选用排线将FPGA开发板和MEMS惯性测量单元采集系统的硬件电路板相连,并使用 MATLAB 2016a对数据进行预处理以及使用Allan方差对采集系统的性能指标进行误差分析,Allan方差近似结果可以表示为
式中:δ2()τ为Allan方差;为量化噪声项,其中τ为采样周期,Q为量化噪声系数;为角度随机游走项,其中N为角度随机游走系数;为零偏不稳定项,其中B为零偏不稳定性系数;为角速度随机游走项,其中K为角速度随机游走系数;为速率斜坡项,其中R为速率斜坡系数。图8为阵列式惯性测量单元采集系统的Allan方差曲线图。
图8 陀螺仪和加速度计Allan方差曲线
分析曲线图可知,相比未进行均值融合的单IMU,使用该阵列式 MEMS惯性测量单元的采集系统使得IMU的随机误差和零偏不稳定性明显降低。通过曲线拟合后,基于Allan方差对采集系统的陀螺仪零偏不稳定性、陀螺仪角度随机游走特征和加速度计角速率随机游走特征进行对比分析,所得各项性能指标如表1、表2和表3所示。
表1 均值融合与原始数据零偏不稳定性
表2 均值融合与原始数据角度随机游走
表1、表2和表3结果表明,使用阵列式MEMS惯性测量单元采集系统后,惯性测量单元ICM20602的三轴陀螺仪零偏不稳定性降低了3~5倍,陀螺仪角度随机游走降低了3~4倍,同时,加速度计角速率随机游走也有明显的降低。结合陀螺仪和加速度计的统计分析结果以及Allan方差结果图,进而验证了本文所使用均值融合算法的可靠性。总而言之,使用基于FPGA的阵列式MEMS惯性测量单元的采集系统确保了数据采集的实时性和可靠性,同时降低了随机误差的影响。
表3 均值融合与原始数据角速率随机游走
本文首先介绍了基于 FPGA的阵列式 MEMS惯性测量单元的采集系统设计方案,通过时序仿真和整体实测表明该采集系统的可靠性和稳定性,再使用Allan方差对所取得IMU数据进行随机误差辨识。结果表明,经过均值融合后的MEMS惯性测量单元ICM20602,具有更低的陀螺仪零偏不稳定性、角度随机游走以及加速度计角速率随机游走特性,该方案为低成本IMU惯性导航系统提供了可行的解决方案。