关键词:MEMS;惯性导航系统
引言
本文设计一种基于ARM9处理器和MEMS传感器的惯性导航系统,给出该系统的硬件平台,为满足导航系统中对于实时计算的要求,设计了基于嵌入式实时操作系统μc/os-II的软件设计方法,该导航系统能实现MEMS信息的实时提取、计算、位姿输出。
一、系统硬件组成
1.1导航处理器的选型
在需要大数据量计算与实时处理的场合,主处理器的性能是系统性能的决定性因素。本文采用具有ARM920T内核的S3C2440处理器作为整个系统的核心处理器。S3C2440是一款32位具有精简指令集的处理器,特别适合具有低功耗、高计算量要求的场合。具有内存管理单元、数据指令缓冲区、5级流水线结构,主频可高达400MHz。S3C2440具有简单易用,程序可移植性好等特点,完全符合惯性导航系统的要求。本文选用S3C2440处理器,负责传感器信息的采集,导航参数的计算,导航结果的输出。
1.2MEMS传感器的选型及外围电路
在捷联式惯性导航系统中常用的MEMS传感器为陀螺仪、加速度计等。MEMS传感器的选型考虑传感器的轴向特性、量程、封装、温漂等。
惯性导航系统的姿态位置计算都是在三维笛卡尔坐标系中进行,单轴或双轴的传感器芯片在设计时必须保证芯片的输出轴按三维坐标方向严格垂直,但由于焊接、安装等误差的存在,在选用单轴或双轴的传感器芯片时,并不能严格保证芯片输出轴的正交,这也成为惯性导航系统中仪器误差的主要来源。为避免单轴或双轴传感器芯片存在的轴向安装误差,本文选用三轴的MEMS传感器芯片。
陀螺仪芯片选用InvenSense公司的三轴陀螺仪芯片ITG—3200,具有±2000度/s的量程,可抗10000g的冲击,具有温度补偿功能,具有的I2C数字输出接口。
加速度芯片选用ADI公司的ADXL345三轴加速度计芯片,具有最大±16g的可配置量程,可在-40℃~85℃的温度下正常工作,可抗1000g的冲击,具有SPI/I2C可配置数字输出接口。
电子罗盘选用Honeywell公司的HMC5843芯片,LCC封装,内置ASIC,放大器,12位AD转换,SET/RESET电路,可有效消除杂散磁场,温度漂移,放大器偏置和漂移的影响。通过I2C接口以数字量直接输出三轴传感信息。
1.3系统电气结构
由于选用的陀螺仪、加速度计和磁阻式传感器都具有I2C数字总线接口,将其都挂接在S3C2440处理器的I2C总线上,可以极大简化整个系统的硬件设计,不需要设计复杂的信号采集及调理电路。
二、导航系统软件设计
惯性导航系统的程序设计常用的方法有前后台系统,基于非实时操作系统和基于嵌入式实时操作系统的设计方法。
本文设计的惯性导航系统中惯性器件全部基于I2C总线,I2C总线上的数据常需要等待固定的时间,以使I2C数据出现在SDA总线上,必须在中断程序中设计一定延时。而主函数中要处理的惯性导航算法任务很多,需要不断等待前台系统采集到的数据,这种程序设计方法过多占用中断时间,CPU大部处于等待状态,系统运行效率不高。
基于嵌入式Linux操作系统也是常用的程序设计方法,特别是在基于带MMU的ARM处理器中应用广泛。linux操作系统是一种非实时操作系统,其时间片轮转的任务调度算法不能保证数据采集与计算的时间刻度;linux操作系统本身过于庞大,本身在运行时需要占用大量的CPU时间,因此,嵌入式Linux操作系统不适合用于惯性导航系统。
μC/OS-II是一种公开源码、结构小巧、具有可剥夺型实时内核的硬实时操作系统,具有执行效率高、占用空间小、可扩展性强等特点,具备任务管理,时间管理,内存管理,任务间通信和同步等基本功能。μC/OS-II也有系统时钟,但系统时钟被用来进行时间管理,并不是任务切换的必备条件。在μC/OS-II中引起系统任务调度的是事件,具有最高优先级的任务在等待某个事件时,只要该事件发生,则系统立即进行任务切换,高优先级的任务立即获得CPU的使用权。μC/OS-II可保证系统需要实时运行的任务运行的机率是100%,是一种硬实时操作系统,特别适用于惯性导航系统中实时性任务的设计。
本文基于μC/OS-II操作系统设计惯性导航系统的软件,其中需要处理的任务主要有MEMS传感器数据采集、姿态角与磁阻式传感器测得角度的卡尔曼滤波算法、导航参数输出等。
传感器信息的采集是系统实时性要求最高的任务,由于导航计算都是沿时间轴上的计算,要求传感器信息采集的时间点的精确度,为保证每两次数据采集中间,导航周期准确性,必须将传感器信息采集设计为优先级最高的任务,一旦计时时间到,CPU立即切换至传感器信息采集任务。姿态矩阵计算及姿态角提取、姿态角与磁阻式传感器测得角度的卡尔曼滤波算法、比例变换这三部分的算法是一种顺序执行关系,将其放到一个任务中,任务的优先级比传感器信息采集任务要低。最后,导航参数的输出放在优先级最低任务中。
系统在启动完成后,完成一系列的初始化,包括从加载域到运行域的转换,硬件初始化,操作系统初始化等。然后创建三个任务和两个消息队列。当系统启动初始化完成后,便将CPU控制权交给优先级最高的任务,即数据采集任务。除这三个任务外,还有个系统空闲任务,在系统三个任务都没有运行时,将运行空闲任务。数据采集任务通过调用操作系统函数OSTimeDly()来达到周期性采集数据的目的。由于系统的时钟周期被设置为10ms,本文设计的导航周期亦为10ms。当数据采集任务采集到数据后,便通过消息队列将采集到的数据发送给导航计算任务。
结束语
本文在三星S3C2440ARM9处理器基础上,分别采用ADXL345加速度计、ITG—3200陀螺仪、HMC5843电子罗盘设计惯性导航的硬件系统,在软件上基于嵌入式硬实时操作系统μC/OS-II设计惯性导航算法的多任务处理。
参考文献
[1]李文亮.四元数矩阵.长沙:国防科技大学出版社,2010.
[2]王玫,张炎华.捷联惯性导航的工程实现.哈尔滨工程大学学报,2011.