wbhb2012 发表于 2012-8-15 21:48:04

我是新手,谈谈我对姿态调整的初步理解

      姿态调整算法关键在于了解四个方面的联系:9轴数据(加速度计,陀螺仪,罗盘)——>四元数——>欧拉角——>电机调整。
9轴数据怎么变成四元数的,为什么变成四元数;四元数怎么变到欧拉角(航向角,横滚角,俯仰角);电机怎么根据欧拉角的信息反馈调整的。它们不是你手拿遥控器的那几根摇杆和按键就能解决的。我们不是产品的检验员!
   通过2个小时的头脑风暴,我搞明白了中间的过程即“四元数——>欧拉角”。推算过程我实在不想说,公式不想码出来,但是我可以谈谈一些框架的东西,沿着这条思路去看那些公式就明白了。
   首先,要理解这个概念:欧拉角——航向角,横滚角,俯仰角。欧拉角没有固定标准,我所说的只是其中之一,它基本是导航方面用到的一种欧拉角,这种标准叫什么ahrs标准。具体不是太明白其中的定义。我们只要搞清楚这三个角是怎么样的,头脑中有个概念。手伸出来可以比划就可以了。坐标系一般取东(X)、北(Y)、天(Z)。航向角(绕Z轴转动)、横滚角(绕Y轴转动)、俯仰角(绕X轴转动)。这就是伟大的欧拉角,还算简单吧。
   其实姿态调整就跟牛顿力的分解差不多,这个就是分解成这三个角的旋转。你一开始得定一个基准,这个基准是以地面为平行的你的飞行器的那个平面上刚体的坐标系值。然后你把你得到的9个轴的信息通过算法变成四元数,通过四元数得到欧拉角,通过偏差你知道要调的量。
    好啦,头脑中有这儿概念之后,详细的我们讨论四元数与欧拉角。我们先以航向角的变化为例,因为其他角的变化和这个是一样的,最后整合就是整体你的位置变化。
航向角度变化了Q度,此时不就有两个位置了嘛,从这个位置到那个位置我怎么通过一个数学表达式表示,这就是你需要解决的问题。这里我们加入两个坐标系:b系和R系,我这个字母表示,基本通用。R系和b系在一开始是一样的,因为是重合的,动了Q角度后,就是b系(原来的)变到了b系(现在的)。原来的b系和R系是一样的,那就是解决b系到R系的转变,投影的概念来了,投影就是这种转变的关系的数学表达了。好啦,这个时候我们就让那些学数学的去帮我们算吧。。。等他算好了我们就得到了这两个系要转变所通过的那个矩阵D了。这时候还不行,你得把这个矩阵里面的有些代表长度的和三角函数用4个算子表示其实就是1*sin(Q/2);l...,m...,n...,。这里的lmn是你绕的这个转轴的相对于R系的坐标。Q还是那个航向角。这样用这四个算子(q0,q1,q2,q3),替代的那个矩阵就是四元数矩阵了。可以看到有大小有角度,所以是矢量。然后又是学数学干的事。我们就得到了从一个平面怎么旋转到另一个平面上了。四元数相当于一种变换。它可以表示从一个坐标系转变到另一个坐标系的全部信息,为什么用它,它做变换要比你用三角函数做变换简单快捷的多。
    OK,这就是我粗浅的理解!明天开始搞定九轴数据到四元数的具体做法!

cai_mouse 发表于 2012-8-15 22:16:20

写的不错。。

wbhb2012 发表于 2012-8-15 22:38:51

cai_mouse 发表于 2012-8-15 22:16 static/image/common/back.gif
写的不错。。

谢谢!写完之后发现好像有些概念还是在脑中,没表达清楚。境界有待提高

蓝海de梦 发表于 2012-8-15 22:48:07

不推荐解耦出欧拉角,太耗时了,如果是要查看欧拉角来作调试,还是传回PC端计算,不然会影响到陀螺仪的积分准确性,欧拉角的定义据说有12种,我查资料到现在碰到了大概5种吧,开始没注意,让我耗费了点时间,所以还是要认定一种定义,想比于姿态检测,重要的觉得还是后面的融合部分   才是姿态调整的关键   这是我的看法   也是菜鸟才开始搞

wbhb2012 发表于 2012-8-15 22:54:00

谢谢你的提醒,这个方法不行,我会注意找其他方法的。但是目前还是这个概念。才开始弄明白,还没做具体的编程调试呢。

Name_006 发表于 2012-8-15 22:55:43

{:lol:}{:lol:}   加油加油 。。                  
说白了就是一些数学公式的转换 看明白了 就懂了 。。。。                                                      

wbhb2012 发表于 2012-8-15 23:38:07

Name_006 发表于 2012-8-15 22:55 static/image/common/back.gif
加油加油 。。                  
说白了就是一些数学公式的转换 看明白了 就懂了 。。 ...

你的姿态调整模块和我一样哎!不过我现在只用了ADXL345

Freezing_ 发表于 2012-8-20 13:57:31

wbhb2012 发表于 2012-8-15 23:38 static/image/common/back.gif
你的姿态调整模块和我一样哎!不过我现在只用了ADXL345

你的机架和我一样哎
我也正在搞姿态解算,准备用四元数和扩展卡尔曼
四元数那块的理论差不多了,卡尔曼这边还一知半解的
想要用时序组合逻辑电路实现解算

zywei_09 发表于 2012-8-20 21:07:28

姿态解算一共有三种方法,欧拉角,四元数,矢量旋转矩阵。欧拉角在正负90°会出现奇点,所以一般要先把欧拉角转化成四元数,然后用龙格库塔方程积分和加计得到的姿态角互补滤波。但是四元数对有限转动引起的不可交换误差的补偿程度不够,所以只适用于低动态运载体的姿态解算对于高动态运载体,其算法漂移十分严重。旋转矢量法精度通常优于四元素法,但是通常计算量较四元素法更大,其较四元素法更适合角机动频繁或者存在严重角振动的场合。值得一提的是,当旋转矢量法采用单子样计算姿态时,就等同于四元素法。

sz_works 发表于 2012-9-1 21:32:49

好 高深啊

AkeBest 发表于 2012-9-21 12:44:05

说得不错,有理解,要mark
页: [1]
查看完整版本: 我是新手,谈谈我对姿态调整的初步理解