组合导航姿态解算学习笔记
姿态角解算

姿态角解算姿态角解算(Attitude Angle Calculation)是指在航天器或飞行器中,通过测量和计算各种传感器数据来确定姿态角的过程。
姿态角是描述航天器或飞行器相对于某个参考坐标系的方向和倾斜程度的重要参数。
正确的姿态角解算对于航天器或飞行器的稳定性和控制至关重要。
在航天器或飞行器中,姿态角通常包括俯仰角(Pitch Angle)、偏航角(Yaw Angle)和滚转角(Roll Angle)三个方向。
俯仰角是指航天器或飞行器前后方向与水平面的夹角,正值为向上,负值为向下。
偏航角是指航天器或飞行器的航向与参考方向之间的夹角,正值为顺时针旋转,负值为逆时针旋转。
滚转角是指航天器或飞行器绕其自身前后方向旋转的夹角,正值为顺时针旋转,负值为逆时针旋转。
为了解算姿态角,航天器或飞行器通常配备了多种传感器,如陀螺仪、加速度计和磁力计等。
陀螺仪可以测量航天器或飞行器的角速度,通过对角速度的积分可以得到滚转角、俯仰角和偏航角。
加速度计可以测量航天器或飞行器的加速度,通过对加速度的积分可以得到速度和位移,进而可以计算出俯仰角和偏航角。
磁力计可以测量地球的磁场方向,通过与航天器或飞行器的实际磁场方向比较,可以得到偏航角。
在姿态角解算过程中,需要进行传感器数据的滤波和校准,以提高解算的精度和稳定性。
常用的滤波算法包括卡尔曼滤波和互补滤波等。
卡尔曼滤波是一种最优滤波算法,通过对观测数据和模型预测数据进行加权平均,可以得到最优的状态估计。
互补滤波是一种简单而有效的滤波算法,通过将低频信号由加速度计得到的姿态角与高频信号由陀螺仪得到的姿态角进行加权平均,可以得到稳定而低延迟的姿态角估计。
姿态角解算在航天器和飞行器的姿态控制和导航中起着重要的作用。
通过解算姿态角,可以实现航天器或飞行器的姿态稳定和精确控制。
在飞行器的自动驾驶系统中,姿态角解算可以提供准确的姿态信息,用于飞行控制和导航。
在航天器的轨道控制和姿态控制中,姿态角解算可以提供准确的姿态信息,用于轨道调整和姿态调整。
自动驾驶组合导航(1)

自动驾驶组合导航1卫惯组合导航需求逐渐刚性,百亿级市场已来临1.1. GNSS与IMU融合可提供稳定的绝对位置信息全球卫星导航系统(GNSS)是能为地球表面或近地空间任何地点提供全天候定位、导航、授时的空基无线电导航定位系统。
美国的全球定位系统(GPS)、俄罗斯的格洛纳斯卫星导航系统(GLONASS)、欧盟的伽利略卫星导航系统(Galileo)以及我国的北斗卫星导航系统(BDS)是全球四大卫星导航定位系统。
受多路径效应、对流层折射等因素影响,普通GNSS单点定位精度一般在5-10米(实际普通GNSS在开阔地带单频单模单点定位精度约为2. 5米)。
为提高卫星导航系统的定位精度,出现了高精度卫星定位技术,主要包括以基于网络RTK技术的连续运行参考站系统(CORS)为代表的地基增强技术、以美国广域增强系统(WAAS)为代表的区域星基增强系统以及基于实时精密单点定位技术(PPP)的商业全球星站差分增强技术。
惯性导航系统(INS)属于推算导航方式,即从一已知点的位置根据连续测得的运动体航向角和速度推算出其下一点的位置,因而可连续测出运动体的当前位置。
惯性导航系统的核心部件为陀螺仪和加速度计,利用载体先前的位置、惯性传感器测量的加速度和角速度来确定其当前位置。
给定初始条件,加速度经过一次积分得到速度,经过二次积分得到位移。
角速度经过处理可以得出车辆的俯仰、偏航、滚转等姿态信息,利用姿态信息可以把导航参数从载体坐标系变换到当地水平坐标系中。
惯性导航系统有自主导航、不受外部依赖、输出频率高(大于IoOHZ)等优点。
定位精度取决于陀螺仪、加速度计等惯性传感器的测量精度,高性能IMU价格昂贵。
惯性导航定位误差会随着时间不断累积,导致位置和姿态的测量结果偏离实际位置,因此无法用来做长时间的高精度定位。
因此,通常采用惯性导航系统作为GNSS信号丢失时的补偿,以使导航系统功能连续。
惯性导航起源于军工领域,因其成本高,长期用于国防和商用航空航天领域,相关模组器件主要由我国军工企业研发制造,产品以高精度战术级器件为主(包括激光惯性导航、光纤惯性导航和高精度MEMS惯性导航)。
捷联惯导初始对准以及姿态解算

第三部分:基于“存储数据与迭代计算对准”罗经法对准
3.2 罗经法对准过程中的调整策略(以北向通道为例)
g
y
f
p N
1
VN
1
s
R
-
K1
K2 R
K3 s
Control algorithm
cE -
x
1
s
x
-
ie cos L
z
实线所示的北向通道:本质上是一个休拉回路,失准角作无阻尼振荡。
采取的策略:1)引入内反馈环节(虚线)实现衰减振荡;2)引入前馈环节(点画 线)缩短振荡周期;3)引入积分环节(双点画线)消除罗经项的影响。
3.5 SINS罗经法对准如何实现迭代计算?
fˆNn -
b ib
fb cU
Cˆbn
Cˆbn
b ib
Cnbine
Cnbc
cN
fˆ n Cˆbn f b
1
VN
s
1
cE
R
K1
K2 R
K3 s
Control algorithm
上述过程中,可以实现迭代计算。
Page 15
第三部分:基于“存储数据与迭代计算对准”罗经法对准
导航坐标系 n (b)SINS
GINS中的测量数据直接反映失准角的大小; SINS中的测量数据不直接反映失准角;只有投影数据能够反映失准角的大小;相同 的测量数据经过不同的姿态矩阵进行投影,可以获取不同的投影数据。 注:上述均不考虑仪表误差。
对于SINS而言,分析一种理想的情况:仪表无误差,载体无机动,此时在整个对准 过程中,仪表测量数据均相等。整个对准过程,其实只用了一组仪表参数。
3.6 SINS罗经法对准中存储数据如何使用?
导航基本算法

导航基本算法有了位置、高度、地速、空速、姿态,我们就可以根据这些参数来进行计算,控制飞机给出相应舵面,实现导航、定高的目的。
最简单的导航算法只考虑当前飞机所在点和目标点。
设想一下,飞机在空中飞行时,当前点和目标点的连线指定了飞机应该飞行的航向(即目标航向),如果要使飞机朝向目标点飞行,必须控制飞机转弯,使飞机航向与目标航向一致。
为了准确描述航向,我们定义以正北为0度,顺时针起航向与正北的夹角为正,逆时针起航向与正北的夹角为负,这样将航向定义在-180度到+180度之间。
这样,上例中,飞机的航向为90度,目标航向为120度左右。
好了,当前飞机的航向我们可以从GPS航向里提取,我们记其为Hangxiang。
下面我们怎么根据目标点和当前点的坐标来计算目标航向呢?我们把目标航向记为beta,于是航向偏差为beta-Hangxiang。
记当前的经纬度为CurLongi、CurLatti,单位为度;目标点经纬度为tgtLongi、tgtLatti,单位为度。
由平面几何的知识,我们计算反正切atan((tgtLongi-CurLongi)/(tgtLatti-CurLatti)),再经过象限处理,就可得到目标航向。
在实际程序中,我们是这样做的:vectorLatti = tgtLatti - CurLatti; vectorLongi = tgtLongi - CurLongi; beta = CalAtanVector(); //计算vectorLongi、vectorLatti向量与正北的夹角而CalAtanVector()函数如下:float CalAtanVector(void) //计算vectorLongi/vectorLatti的反正切函数,返回范围在-PI~PI之间{float beta; float lTemp; if(vectorLatti > 0) bNorth = 1; elsebNorth = 0; if(vectorLongi > 0) bEast = 1; elsebEast = 0;vectorLatti = fabsf(vectorLatti); vectorLongi = fabsf(vectorLongi);vectorLongi = vectorLongi * COS_FACTOR; if(vectorLongi > vectorLatti) {lTemp = vectorLongi; vectorLongi = vectorLatti; vectorLatti = lTemp; bGT45 = 1; }else{bGT45 = 0; }if (vectorLatti!=0) beta= atan(vectorLongi/vectorLatti); //0~PI/4范围elsebeta = PI/2; if(bGT45)beta = PI/2 - beta; //PI/4~PI/2范围if(bNorth && bEast) beta = beta; //0~PI/4范围if(bNorth && !bEast) beta = 0 - beta; //-PI/4~0范围if(!bNorth && !bEast) beta = beta - PI; //-PI~-3PI/4范围if(!bNorth && bEast) beta = PI - beta; //3PI/4~PI范围return beta; }其中出现了一个因数COS_FACTOR,这是当前纬度的余弦值。
姿态解算简介

作者:nieyong本文需要讲清楚在无人机飞行器算法中,什么是姿态,怎么表示姿态,如何得到姿态。
姿态就是指飞行器的俯仰/横滚/航向情况。
在咱们地球上,就是指飞行器在地球坐标系中的俯仰/横滚/航向情况。
飞行器需要实时知道当前自己的姿态,才能够根据需要操控其接下来的动作,例如保持平稳,例如实现翻滚。
下面是学术型的严密论述。
数学模型姿态是用来描述一个刚体的固连坐标系和参考坐标系之间的角位置关系,有一些数学表示方法。
很常见的就是欧拉角,四元数,矩阵,轴角。
地球坐标系又叫做地理坐标系,是固定不变的。
正北,正东,正向上构成了这个坐标系的X,Y,Z轴,我们用坐标系R表示。
四轴飞行器上固定着一个坐标系,我们一般称之为机体坐标系,用坐标系r表示。
那么我们就可以用欧拉角,四元数等来描述r和R的角位置关系。
这就是四轴飞行器姿态解算的数学模型和基础。
姿态有多种数学表示方式,常见的是四元数,欧拉角,矩阵和轴角。
他们各自有其自身的优点,在不同的领域使用不同的表示方式。
在四轴飞行器中使用到了四元数和欧拉角。
Crazepony开源四轴飞行器也是一样的。
四元数四元数是由爱尔兰数学家威廉·卢云·哈密顿在1843年发现的数学概念。
从明确地角度而言,四元数是复数的不可交换延伸。
如把四元数的集合考虑成多维实数空间的话,四元数就代表着一个四维空间,相对于复数为二维空间。
四元数大量用于电脑绘图(及相关的图像分析)上表示三维物件的旋转及方位。
四元数亦见于控制论、信号处理、姿态控制、物理和轨道力学,都是用来表示旋转和方位。
相对于另几种旋转表示法(矩阵,欧拉角,轴角),四元数具有某些方面的优势,如速度更快、提供平滑插值、有效避免万向锁问题、存储空间较小等等。
以上部分摘自维基百科-四元数。
欧拉角莱昂哈德·欧拉用欧拉角来描述刚体在三维欧几里得空间的取向。
对于在三维空间里的一个参考系,任何坐标系的取向,都可以用三个欧拉角来表现。
德国4轴分析之一姿态解算及融合原理

修正后陀螺积分角度与加表角度之差 2. 修正后陀螺积分角度与陀螺积分角度之差。下面以
滚动轴为例说明原理,俯仰类似。
dw = dw1 + dw2
Rw =
255 0
r
RF =
255 0
Fr
dr = Rw − RF /256
dw1
=
dr 256
/k/GyroAccTrim
dw2 = (ro − r)/256/k 程序中对dw1和dw2的反馈位置并不一样(BiasHiResGyroRoll、AttitudeCorrectionRoll), 这2个量均用于修正陀螺的输出值。 BiasHiResGyroRoll的作用比较靠前,并采用了积分性修
正方式,所以修正时比较慎重,做了很多判断。
6.写在后面的 6.1 需要精确的角度么?
程序中对角度的处理比较模糊(程序中使用的大量近似处理)。其实在飞行控制过程中 是否真的需要精确的角度呢?仔细想想,没有什么环节要求角度必须精确的,若原角度为 x, 不精确角度为 y,记 y=f(x),只要 f(x)单调,用 y 或 x 参与控制都行的。 6.2 对误差角度进行反馈时进行了大幅衰减并限幅?
cos r × sin p − sin r cos p × cos r p −r 1
−p r 1
以此为变换阵则有如下关系
1)陀螺敏感量关系
wx 1 0 −p r wy = 0 1 r p wz p −r 1 h
r
1 0 p wx
p = 0 1 −r wy
h −p r 1 wzFy = 0 1 r 0 Fz p −r 1 −G
…
accnick += ADC; // get nick acc voltage 2nd sample
四元数解算姿态完全解析及资料汇总

四元数完全解析及资料汇总本文原帖出自匿名四轴论坛,附件里的资源请到匿名论坛下载:感谢匿名的开源分享,感谢群友的热心帮助。
说什么四元数完全解析其实都是前辈们的解析,小弟真心是一个搬砖的,搬得不好希望大神们给以批评和指正,在此谢过了。
因为本人是小菜鸟一枚,对,最菜的那种菜鸟······所以对四元数求解姿态角这么一个在大神眼里简单的算法,小弟我还是费了很大劲才稍微理解了那么一点点,小弟搬砖整理时也是基于小弟的理解和智商的,有些太基础,有些可能错了,大牛们发现了再骂过我后希望能够给与指正哈。
好,废话到此为止,开始说主体。
四元数和姿态角怎么说呢?先得给和我一样的小菜鸟们理一理思路,小鸟我在此画了一个“思维导图”(我承认我画的丑),四元数解算姿态首先分为两部分理解:第一部分先理解什么是四元数,四元数与姿态角间的关系;第二部分要理解怎么由惯性单元测出的加速度和角速度求出四元数,再由四元数求出欧拉角。
图1 渣渣思维导图在讲解什么是四元数时,小弟的思维是顺着说的,先由四元数的定义说起,说到四元数与姿态角间的关系。
但在讲解姿态解算时,小弟的思维是逆向的,就是反推回来的,从欧拉角一步步反推回到惯性器件的测量数据,这样逆向说是因为便于理解,因为实际在工程应用时和理论推导有很大差别。
实际应用时正确的求解顺序应该为图1中序号顺序,即1->2->3->…….但在笔者讲解姿态求解时思路是如图2的。
图2 逆向讲解思路大家在看四元数时最好结合着代码一块看,小弟看的是匿名四轴的代码,感觉写的非常好也非常清晰,粘出来大家一块观摩。
红色部分是核心代码,总共分为八个步骤,和图1中的八个步骤是一一对应的。
讲解介绍时也是和代码对比起来讲解的。
代码可以去匿名官网上下载,都是开源的,不是小弟的,所以小弟不方便加在附件中。
好的,下面搬砖开始!。
嘿咻嘿咻关于四元数的定义摘自秦永元的《惯性导航》,里面有非常好的讲解,大家可以直接看绪论和第九章就可以。
捷联惯导算法与组合导航原理讲义

捷联惯导算法与组合导航原理讲义严恭敏,翁浚编著西北工业大学2016-9前言近年来,惯性技术不论在军事上、工业上,还是在民用上,特别是消费电子产品领域,都获得了广泛的应用,大到潜艇、舰船、高铁、客机、导弹和人造卫星,小到医疗器械、电动独轮车、小型四旋翼无人机、空中鼠标和手机,都有惯性技术存在甚至大显身手的身影。
相应地,惯性技术的研究和开发也获得前所未有的蓬勃发展,越来越多的高校学生、爱好者和工程技术人员加入到惯性技术的研发队伍中来。
惯性技术涉及面广,涵盖元器件技术、测试设备和测试方法、系统集成技术和应用开发技术等方面,囿于篇幅和作者知识面限制,本书主要讨论捷联惯导系统算法方面的有关问题,包括姿态算法基本理论、捷联惯导更新算法与误差分析、组合导航卡尔曼滤波原理、捷联惯导系统的初始对准技术、组合导航系统建模以及算法仿真等内容。
希望读者参阅之后能够对捷联惯导算法有个系统而深入的理解,并能快速而有效地将基本算法应用于解决实际问题。
本书在编写和定稿过程中得到以下同行的热心支持,指出了不少错误之处或提出了许多宝贵的修改建议,深表谢意:西北工业大学自动化学院:梅春波、赵彦明、刘洋、沈彦超、肖迅、牟夏、郑江涛、刘士明、金竹、冯理成、赵雪华;航天科工第九总体设计部:王亚军;辽宁工程技术大学:丁伟;北京腾盛科技有限公司:刘兴华;东南大学:童金武;中国农业大学:包建华;南京航空航天大学:赵宣懿;武汉大学:董翠军;网友:Zoro;山东科技大学:王云鹏。
书中缺点和错误在所难免,望读者不吝批评指正.作者2016年9月目录第1章概述 (6)1.1捷联惯导算法简介 (6)1.2 Kalman滤波与组合导航原理简介 (7)第2章捷联惯导姿态解算基础 (10)2。
1反对称阵及其矩阵指数函数 (10)2。
1。
1 反对称阵 (10)2。
1.2 反对称阵的矩阵指数函数 (12)2。
2方向余弦阵与等效旋转矢量 (13)2.2.1 方向余弦阵 (13)2。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2015-3-91.参考丁君《AHRS航姿解算中的两种滤波方法的比较研究》,发现使用加速度的数据可以解算横滚角(roll)和俯仰角(pitch).2.因开发板上单片机无ADC,无法对购买模块进行处理,故仅仅参考附带的程序。
希望可以将adxl335模块的示例程序转移到mpu6050中,陀螺仪的数据暂时不用,仅仅使用加速度计的数据进行两个角度的解算。
3.老师想让我研究载体做圆周运动时加速度的解算,但是我想先从静态的开始,我觉得静态下的测试是基础,上来就研究最难的我接受不了。
所以我想先用三轴的加速度数据先把静态下的姿态解算出来。
4.我发现如果我仅仅可以解算静态下的姿态,无法解决载体做回转运动下的姿态我还是完不成本科生的任务。
因为本科生的任务是汽车姿态测量,所以光静止是不够的。
2015-3-115.校正这一环节是我所没有考虑到的,因为有偏差还有灵敏度不匹配。
但前提是我要先解算出来。
6.论文不应该是最后完成的,论文是边做边写的,最后应该是是复制粘贴修改格式和布局而已。
7.8.可以尝试将adxl335的示例程序(淘宝模块)移植到MPU6050中去解算横滚角和俯仰角。
2015-3-121.为什么示例程序产生的六轴数据跟我想象的不一样那呢?加速度计的数据不是9.8,没有小数点。
但是我发现买的arm模块数据也不是9.8,而且我用手机里的磁铁去干扰磁强计时,发现磁强计的数据发生了很大的变化,如果真的要使用磁强计一定要注意周围的磁场干扰。
看来加速度计的数据是可以用的,因为别人都可以做到。
为什么示例程序中减去偏移量,而我却不能减去偏移量,比如+x 的加速度最大值是16000,减去之后,在+x 该等于零时,又出现了-16000,这是我更不想看到的。
2.extern float atan2 (float y, float x);程序格式又搞错了,人家不是atan2 (float y/float x),否则很容易出现错误too many actual parameters.3.现在的状态是不能进行全姿态解算,x 轴的显示范围是(90º~270º),和我想要的范围(-90º~+90º)正好差了180º,但是减去还不行,减去后串口上只显示一个负号。
还好汽车达不到那个角度±90º,哪怕是在汽车测试中,但是飞机能达到啊。
所以这个问题最终还是要解决的。
我想先把一个角度解算出来,然后去推广。
我在主函数里改动pitch=(int)(((atan(ratio)*180)/3.1415926)+180);这一句不行,后来我改动void lcd_printf(char *s,int temp_data)函数里面,在第一句我加上了temp_data-=180;然后俯仰角就输出正常了,也不知道为什么。
4.uchar 是一个8位无符号数,表示范围0到255,而uint 是十六位无符号数,表示范围0到65535.但是要注意的是8位单片机。
(摘自网络)5.现在能解一个俯仰角,下一个是横滚角。
我想这两个角的性质应该是比较接近的。
但是论文不是这么写的。
横滚角也解算出来了,但是航向角好像不能通过加速度计解算。
2015-3-131.因为航向角解算不出,所以找出MPU9150,希望采用其中的磁强计来解算磁航向角。
接下来下载相关datasheet 并阅读。
2.现在的解算方法还不涉及迭代,所以现在还没出现那种随着时间的推移,误差累积越来越严重的情况。
当前的解算与值与当前的采集数据有关。
2015年3月15日1.为什么不直接搞DSP 直接跳过ARM 那一关,害怕,害怕就去学。
2.老师可能需要我做一个松耦合组合导航,先让我去研究一下算法。
然后再去用硬件实现。
该整理资料了,整理完给老师一份,然后再说设计硬件编程的事。
等我把航向角结算出来后后立马去研究组合导航算法。
方向错了,停止就是前进,否则以后都不能和老师交流了。
这是很危险的。
我是否应该听老师的,先搞算法,然后再去考虑接下来的实现。
3.网上的GPS 模块没见有遵守I2C 通信协议的,都是一个收一个发送,这样我还真得考虑数据同步的问题。
2015年3月16日1.我终于知道为什么用示例程序在串口上显示的数据为什么和我想象的那么不一样了,因为你在初始化MPU6050的时候会对陀螺仪和加速度进行一些配置,其中包括一个叫做full scale range 的配置,就拿陀螺仪来说如果你将这个范围配置在s ︒±2000,那么这个范围所对应的sensitivity scale factor 就是16.4()s LSB ︒。
感谢唐朔飞老师的《计算机组成原理》,感谢日本Asahi Kasei 的数据手册,让我在看补数、补码的过程中,让我在看到日本磁强计的测量数据与磁通密度的对比中让我想到了陀螺仪和加速度计也是这样的。
谢谢你们。
一个好的数据手册就应该让user 看明白。
2.怎样才能在陀螺仪的寄存器中的16bit 数据中看出那个表示小数点?都不表示小数点,只有通过sensitivity scale factor 之后才会产生小数点,这时的数据才是精确地。
好了,这下可以全身心地投入到算法研究中去了,传感器输出的就是,加速度数据和角速度数据,接下来你要做的就是研究一个适合车辆检测的算法了。
3.MPU6050的程序迁移到9150中没有发现问题,接下来采集磁强计的数据。
仅仅修改了取数据的顺序,加入了磁强计各个轴数据寄存器地址,没有使用WIA(Device ID)。
采集成功后开始解算航向角,接下来需要考虑的是磁强计的三轴正方向与GYRO&ACC是不同的,所以在解算时提前要考虑好,GYRO&ACC的俯仰角和横滚角是什么,方向是怎么定义的,然后考虑相对于磁强计这些角度和方向又是如何。
4.定义绕x轴旋转为横滚角,绕y轴为俯仰角,绕z轴为航向角。
5.Mpu9150显示9轴原始数据时出现问题,磁强计的数据不发生改变。
我怀疑是磁强计的CNTL寄存器没有配置,导致传感器处于掉电模式。
问题依然没有解决。
6.现在的问题是和陀螺仪加速计在一起采集时,数据能采集出来,但是值一直保持不变,单独被采集时压根采集不出来。
显示-00001,这个值哪怕不连接传感器都能做到。
2015年3月17日1.磁强计与GYRO&ACC使用的slaveaddress好像是一样的,这样读出的数据虽然不变但是不是-00001了,三轴读出的数据分别是24354,-01549,00336。
数据是一直往上传的。
难道是现在磁强计现在运行在单次测量模式?2.我觉得自己得好好处理一下磁强计的数据,因为磁强计的数据拥有四个符号位。
H=(Single_ReadI2C(REG_Address))&0x8f;与上0x8f后4位符号位只保留一位,值依然没有改变,处理后的数据为03874,-30221,00336。
但是这不能保证都是正数的补码,所以我决定建立一个数组,长度为13.3.如何舍弃一个二进制数的前三位?不过我又发现多个符号位不影响从二进制转换为十进制。
4. IICwriteByte(0xd0,0x37,0x02); //0xd0是mpu9150的slaveaddress,0x37是旁路使能配置寄存器55,配置为0x02说明处理器能够直接读取辅助I2C的数据。
IICwriteByte(0xD0,0x6A,0x00);//0x6a是用户配置寄存器106,配置为辅助总线的逻辑由主I2C总线决定。
IICwriteByte(0x18,0x0A,0x01); //0x18是磁强计的slaveaddress,0x0a是磁强计的控制寄存器CNTL,配置为单次测量模式。
阿莫电子论坛上网友出的招数。
5.针对这一句话,每次读完数据我再配置为单次读写模式。
int GetData(uchar REG_Address){uchar H,L;H=(Single_ReadI2C(MAGADD,REG_Address));Single_WriteI2C(MAGADD,CNTL, 0x01);L=Single_ReadI2C(MAGADD,REG_Address-1);Single_WriteI2C(MAGADD,CNTL, 0x01);return (H<<8)+L; //合成数据}6.现在求解出来的航向角波动很大,非常不稳定,变化范围在-180º~180º之间。
也许航向角的解算与俯仰角和横滚角的取值范围也有关系。
二者的取值范围均为-90º~90º。
7.现在航向角还是没有求出来,我想这可能是磁强计的数据有问题2015年3月18日1.现在的数据还是没有换算成真实数据,而且带小数点的数据通过串口往上传我还没试过。
2.另外提一点,我的俯仰角解算和横滚角解算用的方法和上面论文提到的有差异。
[AN1057]而且φ解出来的值也不是我想要的航向角,而且我怀疑上面两个角度也不是我想要的航向角和横滚角。
3.到现在我才明白采样时间间隔内的角增量就是角速度,速度增量就是加速度,当时我竟然还给老师说,用的数据不是加速度和角速度,太愚蠢了,没听老师的话真是太失败了。
4.()⨯Φ=⎪⎪⎭⎫ ⎝⎛⨯Φφφφφsin sin ?[秦永元惯性导航第二版P253]答:()⨯Φ表示Φ的各分量构造成的叉乘斜对称矩阵,Φ=φ。
()()()zy x z y xx y y x z x x z y z z y z y x z y x z y x b b b a a a kj i kb a b a j b a b a i b a b a b ac kc j c i c c k b j b i b b k a j a i a a =-+-+-=⨯=++=++=++=()()⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡---=⨯⨯=⨯=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡---=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡000000x y x zy z z y x x y x zy z z y x a a a a a a a ba b a c b b b a a a a a a c c c5.汽车测试中存在划桨效应吗?需要划桨效应补偿量sculm V ∆吗?划桨效应补偿项的优化算法以划桨运动为环境条件,那么在汽车测试中,尤其是做稳态回转时的环境条件又是什么,这里可以分析一下,这里可以具体环境具体分析,这里可以出现创新点,就是将工作条件修改,这里就是研究生工作量的体现之处。
6.汽车在做等半径稳态回转时,我觉得俯仰角和横滚角是不变的,只有航向角在发生变化。
我觉得汽车在做稳态回转运动中角速度和比力分别是 ()()tC k t f t B j t Ω=ΩΩ=sin cos ω 因为我觉得在车辆做稳态回转运动时,横滚角存在摆动,z 轴上加速度波动较大。