卫星导航捷联惯性导航系统的建模与设计
- 格式:docx
- 大小:37.75 KB
- 文档页数:3
捷联惯性组合导航系统的工程设计吴俊伟;梁彦超【期刊名称】《电子科技》【年(卷),期】2012(025)001【摘要】To meet the need of the integrated navigation computer's minimization and high performance so as to expand its applications, this paper designs an integrated navigation system based a PC104 and FPGA. The naviga- tion computer system includes a data acquisition module and a data decoding module. The design for PC104 to transmit data to dual-port RAM in FPGA is proposed. In order to improve the data communication speed between FPGA and the industrial computer, a method for realizing data exchange through dual-port RAM is designed. The functions of and communication between modules are introduced from the aspects of the hardware structure and software design.%为适应组合导航计算机系统的微型化、高性能度的要求,拓宽导航计算机的应用领域,文中设计了一种基于PCI04和可编程逻辑阵列器件协同合作的导航计算机系统。
系统主要包括数据采集模块和数据解算模块两部分,给出了PCI04与FPGA的片内接收模块进行通信的设计方案。
《捷联惯性导航系统关键技术研究》篇一一、引言捷联惯性导航系统(SINS)是一种利用惯性测量单元(IMU)来获取和解析导航信息的先进技术。
它以其高精度、高动态性以及全自主工作的特性,在航空、航天、航海、车辆导航等领域中发挥着重要的作用。
本文将深入探讨捷联惯性导航系统的关键技术研究,从系统组成、工作原理、技术难点到解决方案等方面进行详细阐述。
二、系统组成与工作原理捷联惯性导航系统主要由惯性测量单元(IMU)、导航计算机、算法处理软件等部分组成。
其中,IMU是系统的核心,它包括加速度计和陀螺仪,用于实时测量载体在三维空间中的运动状态。
导航计算机则负责采集IMU的数据,通过算法处理软件进行数据解析和处理,最终输出导航信息。
捷联惯性导航系统的工作原理主要依赖于牛顿第二定律和角动量守恒定律。
通过测量载体的加速度和角速度,系统可以推算出载体的运动轨迹和姿态信息,从而实现导航定位。
三、关键技术研究1. 高精度IMU技术研究IMU的精度直接影响到整个系统的导航精度,因此提高IMU 的精度是捷联惯性导航系统的关键技术之一。
当前,研究者们正在通过优化加速度计和陀螺仪的设计和制造工艺,提高其测量精度和稳定性。
此外,采用先进的滤波算法和校准技术,也可以有效提高IMU的精度。
2. 算法优化技术研究算法是捷联惯性导航系统的核心,其优化程度直接影响到系统的性能。
目前,研究者们正在致力于开发更加高效的算法,以实现更快的数据处理速度和更高的导航精度。
同时,针对不同应用场景,如高动态、强干扰等环境,研究者们也在进行相应的算法优化工作。
3. 系统误差校正技术研究由于惯性器件的误差积累和环境干扰等因素的影响,捷联惯性导航系统在长时间工作时会产生较大的误差。
因此,系统误差校正是捷联惯性导航系统的另一个关键技术。
研究者们正在通过建立更加精确的误差模型,采用先进的校正算法和技术手段,对系统误差进行实时校正,以保证系统的导航精度和稳定性。
四、结论捷联惯性导航系统是一种重要的导航技术,具有广泛的应用前景。
3.随机漂移误差的时间序列分析建模 在惯性导航系统中,为了减小陀螺随机误差对系统精度的影响,有效可行的办法是采用滤波技术对随机误差进行实时补偿。
实时补偿的前提是已知随机误差的模型,为此,需要事先对陀螺的随机噪声进行必要的数学处理,建立适合于在线补偿的数学模型。
陀螺的随机噪声一般是有色噪声,即非平稳的随机过程,处理这类随机过程较成熟的建模方法是时间序列分析法。
该方法是针对一组离散随机数据序列,进行时域和频域内的统计特性分析,求出实际物理系统的统计特性,并将随机数据浓缩成一个简单的随机差分模型。
时间序列分析建模流程图3.1 序列的检验随机数据处理分析的结果是否正确,取决于数据的一些基本特性。
其主要的三个基本特性是:平稳性;周期性;正态性。
对这三个基本特性进行检验,是分析、建立光学陀螺随机误差模型的重要前提。
1.平稳性检验主要目的是检验陀螺随机误差时间序列是否具有不随时间原点的推移而变化的统计特性。
如果陀螺随机误差时间序列是平稳的,再加上假设为各态历经的,则对陀螺随机误差的研究,就可以用单个样本记录的时间序列来代替总体平均。
这就给数据处理带来了极大的方便。
如果不平稳,则需要对数据进行平稳化处理。
造成随机过程不平稳的原因,是随机过程中包含有随时间缓慢变化的趋势项。
检验这种非平稳趋势项的一种很有效的方法是逆序法。
(1)逆序法对于测试数据记录,将其分成n y y y ,,,21L M 段,然后求各段的均值(或方差值),得到一个大致不相关的均值(或方差值)序列M x x x ,,,21L对于下标为的,每当出现i i x i j x x >)1,,2,1,(−=>M i i j L时就定义为的一个逆序,与相应的逆序的个数称为的逆序数。
序列i x i x i A i x 121,,,−M x x x L 的逆序总数定义为∑−==11M i i A A以随机整数序列出现的的均值与方差分别为A [][]()41211111−===∑∑−=−=M M i A E A E M i M i i []()725322−+=M M M A Var 统计量 [][]A Var A E A u ⎟⎠⎞⎜⎝⎛−+=21 渐近服从正态分布)1,0(N 。
1 绪论00随着计算机和微电子技术的迅猛发展,利用计算机的强大解算和控制功能代替机电稳定系统成为可能。
于是,一种新型惯导系统--捷联惯导系统从20世纪60年代初开始发展起来,尤其在1969年,捷联惯导系统作为"阿波罗"-13号登月飞船的应急备份装置,在其服务舱发生爆炸时将飞船成功地引导到返回地球的轨道上时起到了决定性作用,成为捷联式惯导系统发展中的一个里程碑。
00捷联式惯性导航(strap-down inertial navigation),捷联(strap-down)的英语原义是“捆绑”的意思。
因此捷联式惯性导航也就是将惯性测量元件(陀螺仪和加速度计)直接装在飞行器、舰艇、导弹等需要诸如姿态、速度、航向等导航信息的主体上,用计算机把测量信号变换为导航参数的一种导航技术。
现代电子计算机技术的迅速发展为捷联式惯性导航系统创造了条件。
惯性导航系统是利用惯性敏感器、基准方向及最初的位置信息来确定运载体的方位、位置和速度的自主式航位推算导航系统。
在工作时不依赖外界信息,也不向外界辐射能量,不易受到干扰破坏。
它完全是依靠载体自身设备独立自主地进行导航,它与外界不发生任何光、声、磁、电的联系,从而实现了与外界条件隔绝的假想的“封闭”空间内实现精确导航。
所以它具有隐蔽性好,工作不受气象条件和人为的外界干扰等一系列的优点,这些优点使得惯性导航在航天、航空、航海和测量上都得到了广泛的运用[1]001.1 捷联惯导系统工作原理及特点惯导系统主要分为平台式惯导系统和捷联式惯导系统两大类。
惯导系统(INS)是一种不依赖于任何外部信息、也不向外部辐射能量的自主式导航系统,具有隐蔽性好,可在空中、地面、水下等各种复杂环境下工作的特点。
捷联惯导系统(SINS)是在平台式惯导系统基础上发展而来的,它是一种无框架系统,由三个速率陀螺、三个线加速度计和微型计算机组成。
平台式惯导系统和捷联式惯导系统的主要区别是:前者有实体的物理平台,陀螺和加速度计置于陀螺稳定的平台上,该平台跟踪导航坐标系,以实现速度和位置解算,姿态数据直接取自于平台的环架;后者的陀螺和加速度计直接固连在载体上作为测量基准,它不再采用机电平台,惯性平台的功能由计算机完成,即在计算机内建立一个数学平台取代机电平台的功能,其飞行器姿态数据通过计算机计算得到,故有时也称其为"数学平台",这是捷联惯导系统区别于平台式惯导系统的根本点。
《捷联惯性导航系统关键技术研究》篇一一、引言随着科技的进步,导航系统在众多领域如航空、航天、机器人等领域扮演着至关重要的角色。
其中,捷联惯性导航系统(Inertial Navigation System,简称INS)因其具有独立性强、实时性高和隐蔽性好的特点,成为众多导航系统中重要的技术手段。
本文旨在探讨捷联惯性导航系统的关键技术及其发展趋势。
二、捷联惯性导航系统概述捷联惯性导航系统基于惯性传感器(如陀螺仪和加速度计)的测量原理,将物理信息转化为电信号,以实现对载体姿态、速度和位置的实时解算。
相较于传统的平台式惯性导航系统,捷联式结构更加简单、体积更小、可靠性更高。
三、关键技术研究1. 惯性传感器技术惯性传感器是捷联惯性导航系统的核心部件,其性能直接决定了系统的精度和稳定性。
目前,高精度、低噪声的陀螺仪和加速度计是研究的重点。
此外,微机电系统(MEMS)技术的发展为惯性传感器的小型化、低成本化提供了可能。
2. 算法研究算法是捷联惯性导航系统的灵魂,其性能直接影响到系统的解算精度和实时性。
目前,主要的算法包括姿态解算算法、速度和位置解算算法、误差补偿算法等。
其中,基于卡尔曼滤波的姿态和位置解算算法是研究的热点。
此外,随着人工智能技术的发展,基于深度学习、神经网络的算法也在逐渐应用于捷联惯性导航系统中。
3. 系统集成与优化系统集成与优化是提高捷联惯性导航系统性能的重要手段。
这包括硬件电路的优化设计、软件算法的优化以及系统整体性能的评估与优化等。
通过优化设计,可以在保证系统性能的前提下,减小系统的体积和成本,提高系统的可靠性。
四、发展趋势1. 高精度化:随着科技的进步,对导航系统的精度要求越来越高。
因此,进一步提高惯性传感器的精度、优化算法、减少误差等是未来的重要研究方向。
2. 智能化:随着人工智能技术的发展,将人工智能技术应用于捷联惯性导航系统中,提高系统的自主性、智能性和适应性是未来的重要趋势。
3. 微型化:随着微机电系统(MEMS)技术的发展,捷联惯性导航系统的微型化、低成本化将成为可能。
《捷联惯性导航系统关键技术研究》篇一一、引言捷联惯性导航系统(SINS)是现代导航技术的重要组成部分,其核心利用惯性测量单元(IMU)来感知和测量载体的运动状态,从而实现对载体的导航和定位。
随着科技的不断进步,SINS在军事、民用等领域的应用越来越广泛,对其关键技术的研究也日益深入。
本文将重点探讨捷联惯性导航系统的关键技术研究,以期为相关领域的研究和应用提供参考。
二、SINS的基本原理与构成SINS主要由惯性测量单元(IMU)、导航算法和数据处理模块等部分构成。
其中,IMU是SINS的核心部件,包括加速度计和陀螺仪等传感器,用于测量载体的运动状态。
导航算法则根据IMU测量的数据,通过一定的算法计算出载体的姿态、速度和位置等信息。
数据处理模块则负责对导航算法输出的数据进行处理和优化,以提高导航精度和稳定性。
三、SINS的关键技术研究1. IMU技术研究IMU是SINS的核心部件,其性能直接影响到SINS的导航精度和稳定性。
因此,IMU技术的研究是SINS关键技术研究的重点。
目前,IMU技术的研究主要集中在提高传感器的精度、降低噪声、增强抗干扰能力等方面。
此外,多传感器融合技术也是IMU技术研究的热点,通过将多种传感器数据进行融合,可以提高SINS的导航精度和稳定性。
2. 导航算法研究导航算法是SINS的核心,其性能直接影响到SINS的导航精度和响应速度。
目前,常用的SINS导航算法包括经典的最小二乘法、卡尔曼滤波算法等。
然而,这些算法在复杂环境下的性能受到限制。
因此,研究新型的、适用于复杂环境的SINS导航算法具有重要意义。
例如,基于神经网络的导航算法、基于深度学习的导航算法等都是当前研究的热点。
3. 数据处理与优化技术研究数据处理与优化技术是提高SINS性能的重要手段。
通过对导航算法输出的数据进行处理和优化,可以提高SINS的导航精度和稳定性。
目前,常用的数据处理与优化技术包括数据滤波、数据融合、误差补偿等。
捷联惯性导航系统的仿真研究的开题报告一、选题背景和意义惯性导航系统是一种基于惯性传感器(加速度计和陀螺仪)实现的无需外部信号源和地面设备支持的导航方式。
它在军事、航空、航海、测量等领域有着广泛的应用。
惯性导航系统的精度与其所采用的惯性传感器的精度和航迹推算算法有关,而仿真技术是评估各种算法的性能和可靠性的重要手段之一。
本研究针对捷联惯性导航系统,通过仿真分析系统的工作原理,验证其可靠性和稳定性,并通过仿真结果对优化捷联惯性导航系统的航迹推算算法提供参考。
二、研究内容和方法本研究将以捷联惯性导航系统为研究对象,借助MATLAB等仿真软件进行仿真分析。
具体研究内容和方法如下:1.建立捷联惯性导航系统的仿真模型,包括加速度计、陀螺仪、误差模型等模块,并模拟各模块输出的信号。
2.设计捷联惯性导航系统的航迹推算算法,利用合适的滤波器和卡尔曼滤波等算法对惯性测量信号进行处理,并结合GPS等辅助导航系统提高系统精度。
3.仿真系统并验证其可靠性和有效性。
通过模拟各种实际环境下航行的数据,进行模拟实验并分析仿真结果。
4.优化航迹推算算法,探究不同滤波器和卡尔曼滤波算法的优缺点,综合比较各算法的精度和稳定性。
三、研究预期结果通过本研究,将建立一个符合实际情况的捷联惯性导航系统的仿真模型,验证其可靠性和有效性。
在仿真实验中,将比较不同算法处理测量信号后的航迹精度和稳定性,为优化航迹推算算法提供参考。
四、研究实施计划1、前期调研:调研捷联惯性导航系统的工作原理和航迹推算算法。
2、建立仿真模型:根据调研结果,建立符合实际情况的捷联惯性导航系统的仿真模型。
3、仿真分析:使用MATLAB等仿真软件进行仿真分析并优化航迹推算算法。
4、数据统计与分析:通过分析仿真实验数据,总结各种算法处理捷联惯性导航系统数据的优缺点。
5、论文撰写:根据研究成果,撰写捷联惯性导航系统仿真研究的论文。
预计完成时间:约3-6个月。
惯性导航系统(INS)与全球卫星定位系统(GPS)结合技术在飞行器上的应用目前飞行器所使用的导航系统,能适应全天候、全球性应用的确实不多。
传统无线电导航,如塔康(TACAN)等,在应用上存有很多的限制和不便之处。
而为改善此缺点,一套不需要其它外来的辅助装置,就可提供所有的导航资料,让飞行员参考的惯性导航系统(Inertial Navigation System),虽已被成功发展并广为应用,但其在系统上的微量位置误差会随飞行时间的平方成正比累积,因此长时间飞行会严重影响到导航精确度,如果没有适当的修正,位置误差在一个小时内会累积超过300米。
另一套精密的导航系统GPS,其误差虽不会随时间改变,但GPS并非万能,有优点,也有先天的缺陷,它在测量高机动目标时容易脱锁并且会受到外在环境及电磁干扰,再者GPS短时间的相对误差量大于INS,若只依靠它来做导航或控制,会造成相反效果。
所以在导航系统设计上,常搭配惯性系统来使用,正巧GPS与INS有互补的作用,可经过一套运算法则,将两者优点保留,去除缺点,本文即针对两种导航系统特性进行探讨,并利用卡尔曼滤波器法则完成简易测量数据关系推导,设计一套“GPS/INS组合式导航系统”。
2前言早期舰船航行常利用“领航方法”来决定载体的位置及方向,观察陆地突出物,来引导船身驶向某处目标。
随着飞行器的问世,初期飞行也全凭借着飞行员对当时自我方向、距离、高度及速度的感觉来控制驾驶,执行起飞、落地及飞机转场等等动作。
这种控制载体由一个地方到另一个地方其间方向与距离指示的艺术,就称之为“导航”(Navigation)。
然而仅仅依循着人为的导航方式,在天气良好条件下或周遭存有许多明显参考目标物时,单纯凭目视来判断飞行并不困难;但如果遇上天气条件不佳、能见度差、参考目标不存在活不明显时,就得依靠飞行员的经验、技巧及运气来进行方位及位置的判别,这无形中会造成飞行员的压力,更会严重影响到飞行安全的诸多不确定因素。
/************************************************************************************** *********************************************///该程序为导航专业课程设计程序//该程序内容为:通过捷联惯性导航系统已知的陀螺仪和加速度计的输出通过四元数以及四阶龙格库塔法来计算经纬度以及姿态角(没有高度通道)//该程序版本为:1.4//该版本的更新为:数据改为实时读取,修正位置矩阵微分中错误//注意事项:该程序需要把惯性器件输出文件(imu_ENU.txt)放入程序根目录中/************************************************************************************** *********************************************//********************************以下是宏定义部分****************************/# include<stdio.h># include<math.h># include<conio.h># include<stdlib.h># define initial_alignment 0 //条件编译命令,0:使用已有姿态角;1:使用初始对准# define R 6378137.0 //地球半径# define fe (1.0/298.257) //地球椭率# define G 9.7803 //重力加速度# define deg (180/pi) //弧度转化为度的系数# define rad (pi/180) //弧度转化为度的系数# define pi 3.14159265358979323846 //圆周率# define wie (7292115e-11) //地球自转角速度# define t 0.020 //采样周期20ms# define times 60000 //陀螺仪、加速度计以及外部高度输出数据数目# define lambda0 (1.1615326e+002)*rad //初始经度# define L0 (3.9813330e+001)*rad //初始纬度# define h0 7.0000000e+001 //初始高度# define Ve0 0 //初始东向速度# define Vn0 0 //初始北向速度# define Vu0 0 //初始天向速度# define fe0 0 //初始东向加速度# define fn0 0 //初始北向加速度# define fu0 0 //初始天向加速度# define psi0 (8.9850004e+001)*rad //初始偏航角# define theta0 (1.9113951e+000)*rad //初始俯仰角# define gamma0 (1.0572407e+000)*rad //初始滚转角# define init_times 200 //初始对准时用的数据平均的数/*****************以下是常用全局变量的定义******************/longdouble time;longdouble a[3],w[3]; //x方向加速度,y方向加速度,z方向加速度,x 轴上角速度,y轴上角速度,z轴上角速度longdouble T[3][3]; //姿态矩阵Tbnlongdouble C[3][3]; //位置矩阵Cenlongdouble q[4]; //四元数参数longdouble psi,theta,gamma; //偏航角、俯仰角、滚转角longdouble lambda,L,h; //经度、纬度、高度longdouble wcmd[3]; //平台指令角速度longdouble Rm,Rn; //子午面半径,卯酉圈半径longint i=0; //计算次数longdouble dq[4]; //四元数参数的微分longdouble W[4][4]; //用于计算四元数参数微分的矩阵longdouble temp[3]; //三行三列的矩阵与三行一列的矩阵相乘的结果longdouble wepp[3]; //x,y,zlongdouble wnbb[3]; //x,y,zlongdouble Cwepp[3][3]; //用于C矩阵的更新longdouble dC[3][3]; //C矩阵的微分longdouble dV[3]; //速度的微分,x,y,z,分别对应东,北,天longdouble V[3]; //速度,x,y,z,分别对应东,北,天longdouble wiep[3]; //地球自转角速度char flag1=1; //用于四元数的四阶龙格库塔法积分的标志位char flag2=1; //用于速度的二阶龙格库塔法积分的标志位longdouble k1[4];longdouble k2[4];longdouble k3[4];longdouble k5[3];/******************以下是程序声明部分***********************/void renew_T(); //姿态矩阵更新void renew_attitude_angle(); //姿态角更新void init_T(); //姿态矩阵初始化void renew_dV(); //加速度初始化void _3x3multiply3x3(longdouble a[3][3],longdouble b[3][3],longdouble temp2[3][3]);//3x3矩阵与3x3矩阵相乘void quaternion_differential(); //计算四元数Q的微分longdouble integral_C(longdouble a,longdouble b);//位置矩阵的积分(使用一阶)void forth_order_Runge_Kutta_method(); //四阶龙格库塔法积分计算姿态角void second_order_Runge_Kutta_method(); //二阶龙格库塔法积分计算速度void _3x3multiply3x1(longdouble a[3][3],longdouble b[3]);//3x3矩阵与3行列向量乘积void outer_product_of_vector(longdouble a[3],longdouble b[3],longdouble c[3]);//向量外积longdouble sign(longdouble i); //符号函数void C_differential(); //位置矩阵微分void quaternion_normalize(); //四元数归一化void renew_wcmd(); //平台指令角速度更新void renew_wepp();void renew_wiep(); //地球自转角速度更新void renew_R(); //地球半径更新void renew1(); //更新1void init_alignment(); //初始对准(粗对准)void init_T(); //姿态矩阵初始化void init_C(); //位置矩阵初始化void init_T_using_data(); //使用已知数据初始化姿态矩阵void init(); //总初始化void renew_wnbb(); //更新姿态矩阵速率void renew_T(); //更新姿态矩阵void renew_dV(); //更新加速度void renew_attitude_angle(); //更新姿态角void renew_position(); //更新位置void renew_C(); //更新位置矩阵void renew2(); //更新2/******************以下是常用数学程序部分*******************/void _3x3multiply3x3(longdouble a[3][3],longdouble b[3][3],longdouble temp2[3][3]) //三行三列的矩阵与三行三列的矩阵相乘,结果写入temp2[3][3]中{char s,d,k;for(s=0;s<3;s++){for(d=0;d<3;d++){temp2[s][d]=0;for(k=0;k<3;k++){temp2[s][d]+=a[s][k]*b[k][d];}}}}void quaternion_differential() //计算四元数参数的微分{W[0][0]=0;W[0][1]=-wnbb[0];W[0][2]=-wnbb[1];W[0][3]=-wnbb[2];W[1][0]=wnbb[0];W[1][1]=0;W[1][2]=wnbb[2];W[1][3]=-wnbb[1];W[2][0]=wnbb[1];W[2][1]=-wnbb[2];W[2][2]=0;W[2][3]=wnbb[0];W[3][0]=wnbb[2];W[3][1]=wnbb[1];W[3][2]=-wnbb[0];W[3][3]=0;char j,k;for(j=0;j<4;j++){dq[j]=0;}for(j=0;j<4;j++){for(k=0;k<4;k++){dq[j]+=0.5*W[j][k]*q[k];}}}longdouble integral_C(longdouble a,longdouble b)//用于位置矩阵更新的积分{return (a+b*t/2); //一阶积分}void forth_order_Runge_Kutta_method() //四阶龙格库塔法求四元数{char p;longdouble tmp[4];for(p=0;p<4;p++){tmp[p]=q[p];}if(flag1==1){quaternion_differential(); //微分得到dq for(p=0;p<4;p++){k1[p]=dq[p];}flag1++;}elseif(flag1==2){for(p=0;p<4;p++){q[p]=q[p]+t/2*k1[p];}quaternion_differential(); //微分得到dqfor(p=0;p<4;p++){k2[p]=dq[p];q[p]=tmp[p];}for(p=0;p<4;p++){q[p]=q[p]+t/2*k2[p];}quaternion_differential(); //微分得到dqfor(p=0;p<4;p++){k3[p]=dq[p];q[p]=tmp[p];}flag1++;}elseif(flag1==3){for(p=0;p<4;p++){q[p]=q[p]+t*k3[p];}quaternion_differential(); //微分得到dqfor(p=0;p<4;p++){q[p]=tmp[p]+t/6*(k1[p]+2*k2[p]+2*k3[p]+dq[p]);//积分}flag1=2;quaternion_differential();for(p=0;p<4;p++){k1[p]=dq[p];}quaternion_normalize(); //四元数归一化renew_T(); //姿态矩阵更新}}void second_order_Runge_Kutta_method() //用二阶龙格库塔法更新速度{char p;longdouble tmp[3];for(p=0;p<3;p++){tmp[p]=V[p];}if(flag2==1){renew_dV();for(p=0;p<3;p++){k5[p]=dV[p];}flag2++;}else{for(p=0;p<3;p++){V[p]=V[p]+t/2*dV[p];}renew_dV();for(p=0;p<3;p++){V[p]=tmp[p]+t/4*(k5[p]+dV[p]); //积分}renew_dV();for(p=0;p<3;p++){k5[p]=dV[p];}}}void _3x3multiply3x1(longdouble a[3][3],longdouble b[3]) //三行三列的矩阵与三行一列的矩阵相乘,结果写入temp[3]中{char i,j;longdouble c[3];for(i=0;i<3;i++){c[i]=b[i];}for(i=0;i<3;i++){temp[i]=0;for(j=0;j<3;j++){temp[i]+=a[i][j]*c[j];}}}void outer_product_of_vector(longdouble a[3],longdouble b[3],longdouble c[3]) //c=axb,向量外积{longdouble k[3];char i;for(i=0;i<3;i++){k[i]=a[i];}c[0]=k[1]*b[2]-k[2]*b[1];c[1]=k[2]*b[0]-k[0]*b[2];c[2]=k[0]*b[1]-k[1]*b[0];}longdouble sign(longdouble i) //符号函数{if(i>=0)return 1.0;elsereturn -1.0;}void C_differential() //位置矩阵的微分{Cwepp[0][0]=0;Cwepp[0][1]=wepp[2];Cwepp[0][2]=-wepp[1];Cwepp[1][0]=-wepp[2];Cwepp[1][1]=0;Cwepp[1][2]=wepp[0];Cwepp[2][0]=wepp[1];Cwepp[2][1]=-wepp[0];Cwepp[2][2]=0;_3x3multiply3x3(Cwepp,C,dC); //结果写入dC[3][3]}void quaternion_normalize() //四元数归一化{longdouble temp;temp=sqrt(q[0]*q[0]+q[1]*q[1]+q[2]*q[2]+q[3]*q[3]);q[0]=q[0]/temp;q[1]=q[1]/temp;q[2]=q[2]/temp;q[3]=q[3]/temp;}/***********************************以下是更新1部分内容***************************/void renew_wcmd() //平台指令角速度更新(wipp){wcmd[0]=wepp[0]+wiep[0];wcmd[1]=wiep[1]+wepp[1];wcmd[2]=wiep[2]+wepp[2];}void renew_wepp(){wepp[0]=-V[1]/(h+Rm);wepp[1]=V[0]/(Rn+h);wepp[2]=V[0]/(Rn+h)*tan(L);}void renew_wiep() //更新地球自转角速度{wiep[0]=0;wiep[1]=wie*cos(L);wiep[2]=wie*sin(L);}void renew_R() //地球半径更新{Rm=R*(1-2*fe+3*fe*sin(L)*sin(L)); //更新子午面半径Rn=R*(1+fe*sin(L)*sin(L)); //更新卯酉圈半径}void renew1() //更新1(地理信息和平台指令角速度更新){renew_R(); //更新地球半径renew_wepp();renew_wiep(); //更新地球自转角速度renew_wcmd(); //更新平台指令角速度}/*****************************以下是初始化部分*******************************/void init_alignment() //初始对准(粗对准){longdouble Vbt[3][3]={0,0,0,0,0,0,0,0,0};longdouble Vnt_inverse[3][3]={0,0,0,0,0,0,0,0,0};int i;longdouble fx=0,fy=0,fz=0,Wx=0,Wy=0,Wz=0,a,b,c,d,e,f,g;FILE *tmp;if((tmp=fopen("imu_ENU.txt","r"))==NULL)//打开文件,读入数据模式{printf("无法打开文件imu_ENU.txt\n");exit(0);}for(i=0;i<init_times;i++) //求一段时间的平均值来算初始姿态角{fscanf(tmp,"%lf %lf %lf %lf %lf %lf %lf ",&a,&b,&c,&d,&e,&f,&g);//时间,x轴加速度,y轴加速度,z轴加速度,x轴角速度,y轴角速度,z轴角速度fx-=b; //加速度均取负值fy-=c;fz-=d;Wx+=e;Wy+=f;Wz+=g;}fclose(tmp); //关闭文件指针fx=fx/init_times;fy=fy/init_times;fz=fz/init_times;Wx=Wx/init_times;Wy=Wy/init_times;Wz=Wz/init_times;Vbt[0][0]=fx;Vbt[0][1]=fy;Vbt[0][2]=fz;Vbt[1][0]=Wx;Vbt[1][1]=Wy;Vbt[1][2]=Wz;Vbt[2][0]=fy*Wz-fz*Wy;Vbt[2][1]=fz*Wx-fx*Wz;Vbt[2][2]=fx*Wy-fy*Wx;Vnt_inverse[0][2]=1/(G*wie*cos(L0));Vnt_inverse[1][0]=tan(L0)/G;Vnt_inverse[1][1]=1/(wie*cos(L0));Vnt_inverse[2][0]=-1/G;_3x3multiply3x3(Vnt_inverse,Vbt,T); //求出姿态矩阵,此姿态矩阵未经正交化renew_attitude_angle(); //计算姿态角(正交化)init_T(); //姿态矩阵初始化,至此,正交化完成}void init_T() //姿态矩阵初始化{T[0][0]=cos(gamma)*cos(psi)-sin(gamma)*sin(theta)*sin(psi);//通过姿态角求姿态矩阵T[0][1]=-cos(theta)*sin(psi);T[0][2]=sin(gamma)*cos(psi)+cos(gamma)*sin(theta)*sin(psi);T[1][0]=cos(gamma)*sin(psi)+sin(gamma)*sin(theta)*cos(psi);T[1][1]=cos(theta)*cos(psi);T[1][2]=sin(gamma)*sin(psi)-cos(gamma)*sin(theta)*cos(psi);T[2][0]=-sin(gamma)*cos(theta);T[2][1]=sin(theta);T[2][2]=cos(gamma)*cos(theta);q[1]=sign(T[2][1]-T[1][2])*0.5*sqrt(1+T[0][0]-T[1][1]-T[2][2]);//求四元数各项q[2]=sign(T[0][2]-T[2][0])*0.5*sqrt(1-T[0][0]+T[1][1]-T[2][2]);q[3]=sign(T[1][0]-T[0][1])*0.5*sqrt(1-T[0][0]-T[1][1]+T[2][2]);q[0]=sqrt(1-q[1]*q[1]-q[2]*q[2]-q[3]*q[3]);quaternion_normalize(); //四元数正交化renew_T(); //重新通过四元数得到姿态矩阵}void init_C() //位置矩阵初始化{C[0][0]=-sin(lambda);C[0][1]=cos(lambda);C[0][2]=0;C[1][0]=-sin(L)*cos(lambda);C[1][1]=-sin(L)*sin(lambda);C[1][2]=cos(L);C[2][0]=cos(lambda)*cos(L);C[2][1]=cos(L)*sin(lambda);C[2][2]=sin(L);}void init_T_using_data(){psi=psi0; //初始偏航角theta=theta0; //初始俯仰角gamma=gamma0; //初始滚转角init_T(); //姿态矩阵初始化}void init() //初始化{lambda=lambda0; //初始经度L=L0; //初始纬度h=h0; //初始高度V[0]=Ve0; //初始东向速度V[1]=Vn0; //初始北向速度V[2]=Vu0; //初始天向速度a[0]=fe0; //初始东向加速度a[1]=fn0; //初始北向加速度a[2]=fu0; //初始天向加速度#if initial_alignmentinit_alignment(); //初始对准得到T#elseinit_T_using_data(); //采用已知数据得到T#endifinit_C(); //初始化位置矩阵renew_R(); //初始化地球半径renew_wepp();renew_wiep(); //初始化地球自转角速度renew_wcmd(); //初始化平台指令角速度}/*************************************以下是更新2部分**********************************/void renew_wnbb(){longdouble Tnb[3][3];char z;char y;for(z=0;z<3;z++) //求T的转置{for(y=0;y<3;y++){Tnb[z][y]=T[y][z];}}_3x3multiply3x1(Tnb,wcmd); //改变temp[3]for(z=0;z<3;z++){wnbb[z]=w[z]-temp[z];}}void renew_T() //通过四元数求得姿态矩阵{T[0][0]=q[0]*q[0]+q[1]*q[1]-q[2]*q[2]-q[3]*q[3];T[0][1]=2*(q[1]*q[2]-q[0]*q[3]);T[0][2]=2*(q[1]*q[3]+q[0]*q[2]);T[1][0]=2*(q[1]*q[2]+q[0]*q[3]);T[1][1]=q[0]*q[0]-q[1]*q[1]+q[2]*q[2]-q[3]*q[3];T[1][2]=2*(q[2]*q[3]-q[0]*q[1]);T[2][0]=2*(q[1]*q[3]-q[2]*q[0]);T[2][1]=2*(q[2]*q[3]+q[0]*q[1]);T[2][2]=q[0]*q[0]-q[1]*q[1]-q[2]*q[2]+q[3]*q[3];}void renew_dV() //更新加速度{longdouble tmp1[3],tmp2[3];char k;for(k=0;k<3;k++){tmp2[k]=2*wiep[k]+wepp[k];}outer_product_of_vector(tmp2,V,tmp1);_3x3multiply3x1(T,a); //改变temp[3]for(k=0;k<3;k++){dV[k]=temp[k]-tmp1[k];}dV[2]=dV[2]-G; //减去重力加速度}void renew_attitude_angle() //计算姿态角{psi=atan(-T[0][1]/T[1][1]); //偏航角if(psi<0&&T[1][1]>0) //偏航角主值{psi=psi+2*pi;}else{if(T[1][1]<=0){psi=psi+pi;}}theta=atan(T[2][1]/sqrt(T[0][1]*T[0][1]+T[1][1]*T[1][1]));//俯仰角gamma=atan(-T[2][0]/T[2][2]); //横滚角if(T[2][2]<0) //横滚角主值{if(gamma>0){gamma=gamma-pi;}else{gamma=gamma+pi;}}}void renew_position() //计算经纬度{renew_C(); //位置矩阵更新lambda=atan(C[2][1]/C[2][0]); //经度if(C[2][0]<0) //经度主值{if(lambda>0){lambda=lambda-pi;}else{lambda=lambda+pi;}}L=atan(C[2][2]/sqrt(C[2][0]*C[2][0]+C[2][1]*C[2][1]));//纬度}void renew_C() //位置矩阵更新{char s,d;C_differential(); //位置矩阵微分for(s=0;s<3;s++){for(d=0;d<3;d++){C[s][d]=integral_C(C[s][d],dC[s][d]);//一阶积分}}}void renew2() //更新2{renew_wnbb();second_order_Runge_Kutta_method(); //二阶龙格库塔法更新速度forth_order_Runge_Kutta_method(); //四阶龙格库塔法积分算Q renew_attitude_angle(); //更新姿态角renew_position(); //位置}/**********************************以下是主函数部分****************************************/void main(){FILE *result; //计算结果写入用文件指针FILE *source; //读入计算数据用文件指针if((result=fopen("捷联惯性导航系统输出.txt","w"))==NULL)//打开文件,写入数据模式{printf("无法打开文件捷联惯性导航系统输出.txt\n");exit(0);}if((source=fopen("imu_ENU.txt","r"))==NULL)//打开文件,读入数据模式{printf("无法打开文件imu_ENU.txt\n");exit(0);}init(); //初始化while(!feof(source)) //计算至数据结束{fscanf(source,"%lf %lf %lf %lf %lf %lf %lf",&time,&a[0],&a[1],&a[2],&w[0],&w[1],&w[2]);//更新各项惯性元件输出,时间,x轴加速度,y轴加速度,z轴加速度,x轴角速度,y轴角速度,z轴角速度renew1(); //更新1renew2(); //更新2if((i%100)==0) //输出周期为1s{fprintf(result,"%5.2lf %5.6lf %5.6lf %5.6lf %5.6lf %5.6lf %5.6lf %5.6lf %5.6lf %5.6lf %5.6lf %5.6lf\n",time/100,deg*lambda,deg*L,deg*psi,deg*theta,deg*gamma,V[0],V[1],V[2],dV[0],dV [1],dV[2]);//转化为度输出}i++; //程序运行计数加一}fclose(result); //关闭文件指针fclose(source); //关闭文件指针}。
一种捷联惯性导航系统设计贾炀;陆仲达;陈吉金【摘要】采用加速度计和陀螺仪设计了一种捷联惯性导航系统,通过测量导航载体三个方向上的所需数据,设计导航控制算法、加速度传感器和速率陀螺仪的信号调理电路,提高了传感器数据的有效性.传感器的输出信号经由A/D转换器转换信号传递给单片机做数据处理,再将数据传送给都导航计算机,完成系统的实时导航.【期刊名称】《滨州学院学报》【年(卷),期】2016(032)006【总页数】4页(P21-24)【关键词】捷联惯性导航;陀螺仪;加速度计;智能算法【作者】贾炀;陆仲达;陈吉金【作者单位】齐齐哈尔大学计算机与控制工程学院,黑龙江齐齐哈尔 161006;齐齐哈尔大学计算机与控制工程学院,黑龙江齐齐哈尔 161006;齐齐哈尔大学计算机与控制工程学院,黑龙江齐齐哈尔 161006【正文语种】中文【中图分类】V249;TP249惯性导航系统是20世纪初发展起来的一种新型导航系统。
虽然这是一种先进的导航方法,但是它实现导航定位的原理却是极其简单,它是通过测量被测物体本身的角速度、加速度等数据来完成导航任务的。
在现代科学技术中惯性导航技术是一门尖端的技术学科,无论在军用还是民用领域都得到了广泛应用,如航空、航天、航海、家用电器、交通等。
现代科学技术的发展越来越快,最突出的是现代化战争对各类导航的需求,对惯性导航技术的需求比以前高出很多。
与其他导航技术相比,惯性导航系统有着不可比拟的优点。
比如惯性导航系统能够自主地提供导航物体的方向、加速度、位置、速度、角速度、高度和姿态等诸多信息,它只依靠导航载体设备自主地完成信息采集与数据处理,不和外界发生任何联系,不依靠外界信息的支持,也不会向外界发出任何数据,是一种完美的自主式导航系统。
这个特殊的优点,对于飞行载体,特别是军事用途的飞行器更为重要。
惯性导航系统从物理结构上划分可分为两大类:平台式惯性导航系统和捷联式惯性导航系统[1]。
而捷联式惯性导航系统的导航平台是靠计算机来完成实现的,所以其精度要比平台式惯性导航系统精度高很多,而且从经济性、安全性、高效性等性能来讲,捷联式方案也比平台式方案更加合适。
捷联式惯性导航原理捷联式惯性导航(Inertial Navigation System,简称INS)是一种基于惯性测量装置的导航系统。
它通过测量线性加速度和角速度来得出加速度、速度和位置信息,从而实现航海、航空和航天等领域的精确导航和定位。
捷联式惯性导航系统由多个惯性传感器组成,包括加速度计和陀螺仪。
加速度计用于测量线性加速度,而陀螺仪则用于测量角速度。
这些传感器安装在导航系统的载体上,并与导航系统的计算单元相连。
捷联式惯性导航系统的原理可分为两个主要步骤:传感器测量和姿态解算。
传感器测量是指测量加速度计和陀螺仪输出的信号。
加速度计通过测量导航系统相对于载体的线性加速度来估计速度和位移。
陀螺仪则通过测量导航系统相对于载体的角速度来估计转角和航向。
这些测量值由传感器输出,并发送给导航系统的计算单元进一步处理。
姿态解算是指根据传感器测量值计算导航系统相对于载体的三维方向。
这个过程基于四元数算法和方向余弦矩阵等数学模型。
根据加速度计的测量值,可以得到系统的重力矢量,从而计算出系统相对于地球的姿态。
陀螺仪的测量值则用于校正角速度误差和姿态的漂移。
通过不断地积分和更新测量值,导航系统可以保持准确的姿态信息。
捷联式惯性导航系统的优势在于其自主性和抗干扰能力。
由于不依赖于外部信号源,如卫星或地面控制点,INS可以在任何环境中进行导航。
同时,由于惯性传感器对外部扰动的响应速度很快,导航系统可以及时纠正估计误差,从而实现高精度的导航和定位。
然而,捷联式惯性导航系统也存在一些缺点。
由于惯性传感器存在漂移和积分误差,INS的导航信息随着时间的推移会变得不准确。
此外,惯性传感器的准确性和稳定性也会受到温度、振动和电磁干扰等因素的影响。
为了解决这些问题,通常需要与其他导航系统,如全球定位系统(GPS)或地面测量系统(如激光测距仪),进行组合导航。
总的来说,捷联式惯性导航系统是一种基于惯性传感器测量的导航系统。
它通过测量线性加速度和角速度,计算出加速度、速度和位置信息。
《捷联惯性导航系统关键技术研究》篇一一、引言捷联惯性导航系统(SINS)是一种基于惯性测量单元(IMU)的导航技术,其通过测量物体的加速度和角速度信息,结合数字积分算法,实现对物体运动状态的精确估计和导航。
SINS具有高精度、抗干扰能力强、无需外部辅助等优点,在军事、航空、航天、航海等领域具有广泛的应用前景。
本文将重点研究捷联惯性导航系统的关键技术,包括传感器技术、算法技术以及系统集成技术。
二、传感器技术研究1. 陀螺仪技术陀螺仪是SINS的核心部件之一,其性能直接影响到整个系统的精度和稳定性。
目前,常用的陀螺仪包括机械陀螺、光学陀螺和微机电系统(MEMS)陀螺等。
其中,MEMS陀螺因其体积小、重量轻、成本低等优点,在SINS中得到了广泛应用。
然而,MEMS陀螺的精度和稳定性仍需进一步提高。
因此,研究高性能的MEMS陀螺制造技术和材料,以及优化其工作原理和结构,是提高SINS性能的关键。
2. 加速度计技术加速度计是SINS的另一个重要传感器,其测量精度和稳定性对SINS的导航性能有着重要影响。
目前,常用的加速度计包括压阻式、电容式和压电式等。
为了提高加速度计的测量精度和稳定性,需要研究新型的加速度计制造技术和材料,以及优化其电路设计和信号处理算法。
三、算法技术研究1. 姿态解算算法姿态解算算法是SINS的核心算法之一,其目的是通过陀螺仪和加速度计的测量数据,计算出物体的姿态信息。
目前常用的姿态解算算法包括欧拉角法、四元数法和卡尔曼滤波法等。
为了提高算法的精度和实时性,需要研究新型的姿态解算算法,如基于机器学习的姿态解算方法等。
2. 误差补偿算法由于传感器自身的误差和外部环境的影响,SINS在运行过程中会产生误差。
为了减小误差对系统性能的影响,需要研究误差补偿算法。
目前常用的误差补偿算法包括基于模型的方法和基于数据的自适应补偿方法等。
研究新型的误差补偿算法和技术手段是提高SINS性能的重要方向。
四、系统集成技术研究1. 数据融合技术数据融合技术是将来自不同传感器的数据信息融合起来,以提高导航系统的整体性能。
基于DSP的捷联惯性导航系统的设计的开题报告一、毕业设计的背景与意义随着现代航空和航天技术的发展,惯性导航系统在航空和航天领域中得到了广泛应用。
惯性导航系统已经成为现代舰船、飞机、导弹等航空航天器的核心部件。
惯性导航系统能够在无GPS信号的情况下,利用加速度计和陀螺仪等传感器测量飞行器的运动状态,提供准确的位置、速度和姿态信息。
在惯性导航系统中,特别是捷联惯性导航系统中,数字信号处理技术已经成为必不可少的一部分。
基于数字信号处理的捷联惯性导航系统可以更加精确地测量飞行器运动状态,实现更高的导航精度。
本毕设旨在设计一个基于DSP的捷联惯性导航系统。
通过图像处理和数字滤波算法对传感器采集到的数据进行处理,提高惯性导航系统的测量精度。
二、毕业设计的内容与目标本毕设的具体内容包括:1. 了解捷联惯性导航系统的工作原理和原理;2. 选取合适的传感器,设计硬件系统,完成数据采集;3. 基于数字信号处理技术设计系统的数据处理算法,通过数字滤波、卡尔曼滤波等方法提高系统的测量精度;4. 利用Matlab对捷联惯性导航系统进行仿真分析,测试系统的性能;5. 实际测试捷联惯性导航系统的性能;6. 完成论文写作。
本毕设的主要目标是:设计并实现一个基于DSP的捷联惯性导航系统,该系统能够稳定可靠地测量飞行器的运动状态和位置信息,在一定程度上提高导航精度。
三、毕业设计的技术路线及方案本毕设的技术路线主要包括以下几个方面:1. 硬件设计根据捷联惯性导航系统的原理,选取合适的加速度计和陀螺仪等传感器,设计硬件系统,完成数据采集。
硬件系统的设计需要考虑传感器的性能、大量数据的传输等问题。
2. 软件设计基于DSP的数字信号处理技术设计系统的数据处理算法,通过数字滤波、卡尔曼滤波等方法提高系统的测量精度。
软件设计需要考虑算法的性能和精度等问题。
3. 系统仿真利用学习的Matlab工具对捷联惯性导航系统进行仿真分析,测试系统的性能,掌握捷联惯性导航系统的性能分析方法与仿真技术。
卫星导航捷联惯性导航系统的建模与设计
导航系统在现代社会中起着不可或缺的作用。
随着卫星导航技术的快速发展,
卫星导航捷联惯性导航系统(SGINS)成为一种高精度、高可靠性的导航解决方案。
本文将探讨SGINS的建模与设计方法。
一、SGINS的基本原理
卫星导航捷联惯性导航系统是将全球定位系统(GPS)和惯性导航系统(INS)相互融合的一种导航方案。
GPS通过接收卫星发射的定位信号来确定位置,但其
精度受环境因素和信号传播延迟的影响。
而INS则通过测量加速度和角速度来估
计位置和姿态,但由于积分误差的累积,导航精度会随时间增长而降低。
SGINS
利用GPS和INS互补的性质,实现了位置和姿态的精确估计。
二、SGINS的建模方法
1. 系统状态估计
SGINS的建模首先需要考虑系统状态的估计问题。
系统状态通常包括飞行器的
位置、速度和姿态等信息。
可以使用卡尔曼滤波器来处理系统状态的估计问题,通过状态观测和预测来优化估计结果。
同时,还需要根据系统的实际情况选择合适的状态表示和测量模型,以提高估计的准确性。
2. 误差建模
SGINS中的误差主要来自于GPS和INS的测量误差,需要进行误差建模和补偿。
对于GPS测量误差,可以通过统计分析和模型辨识来进行建模。
INS测量误
差主要包括随机误差和系统误差,可以通过校准和校正来减小。
此外,还需要考虑动态误差和环境因素对误差的影响,例如加速度噪声、温度变化等。
3. 系统动力学建模
SGINS的建模还需要考虑系统的动力学特性。
对于飞行器的运动状态,可以利
用运动学和动力学方程来描述。
此外,还需要考虑外部扰动和不确定性对系统动力学的影响,以提高系统的稳定性和鲁棒性。
三、SGINS的设计方法
1. 系统硬件设计
SGINS的设计首先需要选取合适的硬件组件,包括GPS接收器、惯性传感器
和计算单元等。
对于GPS接收器,可以选择多系统接收器,以提高定位精度和可
用性。
对于惯性传感器,可以选择高精度的加速度计和陀螺仪,以减小测量误差。
计算单元通常采用嵌入式处理器和专用硬件加速器,以实现实时的状态估计和导航计算。
2. 系统软件设计
SGINS的设计还需要考虑系统的软件架构和算法。
可以采用分层结构的软件设
计方法,将不同功能的模块进行分离,以便系统的扩展和维护。
对于状态估计和滤波算法,可以选择卡尔曼滤波、粒子滤波等方法,以实现高精度的导航解算。
此外,还需要考虑系统的故障检测和容错能力,以提高系统的可靠性和安全性。
3. 系统性能评估
SGINS的设计完成后,还需要对系统的性能进行评估和验证。
可以利用实验数
据和仿真环境来验证系统的导航精度、保持性能和抗干扰能力等指标。
通过与真实场景数据的比对,可以判断系统设计的合理性并进行优化。
四、SGINS的应用领域
SGINS的高精度和高可靠性使其在航空、航天和导航工程等领域得到广泛应用。
在航空领域,SGINS可以用于飞行器的定位和导航,提高飞行安全性和效率。
在
航天领域,SGINS可以用于航天器的轨道控制和目标定位,实现精确的空间导航。
在导航工程领域,SGINS可以用于车辆、船舶和机器人等的导航,实现自动驾驶和路径规划等功能。
综上所述,卫星导航捷联惯性导航系统是一种高精度、高可靠性的导航解决方案。
通过系统状态估计、误差建模和系统动力学建模,可以实现SGINS的建模。
在系统硬件设计、软件设计和性能评估方面,可以采用适当的方法来实现SGINS 的设计。
SGINS的应用领域广泛,可以提高航空、航天和导航工程等领域的导航精度和安全性。