zhous 发表于 2014-11-11 17:05:53

用加速度和角速度计算出姿态(四元数简单)

姿态角是控制四轴的依据,那么,要控制四轴到正确的角度,就必须有一个正确的角度,这个正确包括,3个欧拉角的静态正确,还有动态准确。
要计算出水平的两个欧拉角,最简单的方法就是利用加速度机,计算重力加速度在各个轴上的投影,通过反三角函数,就能计算出姿态,但实际上,加速度不止重力加速度。还有运动加速度,还有噪音加速度。用这个计算出来的欧拉角,有噪音,特别是电机的振动噪音,有运动加速度的干扰,所以,这个欧拉角没法用来控制四轴。还有就是3个角速度,角速度的特点是噪音低,不会受运动的干扰。但缺点是我们前面说过的,想要四轴能自平衡,需要的是角度,用角速度直接积分的角度,没有平衡点参照,积分导致的偏移。目前用的方法是数据融合。而融合的方法也不止一种。最常见的是权值融合,就是互补滤波了。先写下计算方法,陀螺积分角度+=角速度*dt;加速度角度=反三角函数(重力加速度在该轴的投影);融合角度=陀螺权值*陀螺积分角度+(1-陀螺权值)*加速度角度;还有一种叫最大梯度法的,就是融合算法有些区别:
   陀螺积分角度+=角速度*dt;加速度角度=反三角函数(重力加速度在该轴的投影);角度偏差=加速度角度-陀螺积分角度;融合角度=陀螺角度+衰减系数*角度偏差;这两张种计算方法其实本质是一样的,只是表达效果不同,但最大梯度法可以引入高一介的数据,用来矫正陀螺本身的静态漂移:角度偏差积分+=角度偏差;角速度=角速度+衰减系数*角度偏差积分;这个就可以一定程度上矫正陀螺的零漂。
      接下来说说很常用的四元数,说这个之前当然要先说为什么要用这个没法看懂的算法。上面说的都是一个轴的融合。但四轴是3个轴的角度,而且,是要用角速度积分出来的,那就会出现一个问题。轴间的互相影响。当四轴不是水平状态时,一个轴的旋转,都能影响其他轴的角度的。注意这不是什么传感器误差照成的影响。比如一本书,倾斜一定角度后,把书转动起来,你会发现,书的xy欧拉角在不停的变化。而四元数的计算,就是把这些统统计算进去了,你可以认为四元数把复杂的3维姿态运动放到四维空间中,就成了简单的运动了。比如把3维物体的简单旋转运动,投影到2维图像中,就成了复杂的形态变化了。至于你能不能看懂四元数的计算,反正我只能看个大概。不过我能在3维空间中把各个轴的相互影响,都计算出来。方法是:x轴角速度=x轴角速度*(1-y轴角度/全姿态)+z轴角速度*z轴相对水平面夹角;同样其他的轴都要用另外的轴来融合;最后同样的计算出角速度积分角度和加速度角度融合。

yangjinghua1990 发表于 2016-1-17 11:22:00

mc_lu 发表于 2015-4-10 08:22
**** 作者被禁止或删除 内容自动屏蔽 ****

很简单,先将体坐标系转换到NED坐标系,然后NED坐标系再通过yaw角度算出水平运动加速度,然后你可以继续映射到x轴或者其他轴;也可以不用。

zkper 发表于 2016-1-15 07:46:31

表示没看懂

xmnjsl 发表于 2014-11-11 17:06:54

厉害

特工007 发表于 2014-11-11 17:07:04

拿分走人

jkou520 发表于 2014-11-11 19:44:57

赞一个。。

不知疲倦的驴 发表于 2014-11-11 20:33:34

四轴上的平衡算法是基于欧拉角还是四元数呢?

zhous 发表于 2014-11-11 20:43:55

不知疲倦的驴 发表于 2014-11-11 20:33 static/image/common/back.gif
四轴上的平衡算法是基于欧拉角还是四元数呢?

一般简单的都是基于四元数或者余弦矩阵

hknudll 发表于 2014-11-12 02:14:19

路过

涡流 发表于 2014-11-12 02:15:30

学习

刀客 发表于 2014-11-12 14:31:56

学习

风情 发表于 2014-11-12 14:32:18

路过

黄豆 发表于 2014-11-12 20:49:47

路过

licon168 发表于 2014-11-12 20:50:31

拿分走人

天之娇 发表于 2014-11-13 08:55:23

有设备送吗

mc_lu 发表于 2015-4-10 08:22:01

楼主你好。请问怎么算出重力加速度在三个方向上的分量呢?我现在能测出欧拉角和三个方向上的加速度,但这三个方向的加速度是有重力分量的不知道怎么去掉额{:1_2:}

laoyao7722 发表于 2015-7-14 20:02:28

继续学习

flyinga 发表于 2015-7-17 15:19:20

谢谢!{:1_1:}{:1_1:}{:1_1:}{:1_1:}{:1_1:}{:1_1:}

武杰杰 发表于 2015-7-19 09:22:41

出成品了吗

詹波波 发表于 2015-11-25 23:28:19

看了很有收获

he66hj 发表于 2015-12-8 11:33:55

谢谢,辛苦

myth1665 发表于 2016-1-12 14:48:49

学习了
页: [1] 2
查看完整版本: 用加速度和角速度计算出姿态(四元数简单)