基于基于9轴惯性运动传感器的三阶卡尔曼滤波器算法轴惯性运动传感器的三阶卡尔曼滤波器算法
九轴说的是三轴的加速度计、三轴的陀螺仪以及三轴的磁场传感器。但是只是单纯的测出九个轴的数据没什么用,关键是要能够融合这
九轴数据得出我们想要的结果。这里就运用三阶卡尔曼滤波算法来融合这九轴运动数据为三轴的角度。运用这三个角度可以用来做自平
衡车或者四轴飞行器. 一、卡尔曼算法理解 其实如果不去考虑kalman算法是怎么来的,我们只需要知道有下面几个式子就可以了,具体
意思可以看上面的wikipedia链接 二卡尔曼滤波算法的实现 这里的算法是运行在avr单片机上的,所以采用的是c语言写的。下面的代码
是要放到avr的定时器中断测试刷新的。用示波器测试了一下,这个算法在16M晶振下的运行时间需要0.35ms,而数据采集需要3ms左右,
所以选定定时器时间为8ms.这边是三阶的,主要是矩阵运算. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
28 29 30 31 32 33 34 35 36 37
九轴说的是三轴的加速度计、三轴的陀螺仪以及三轴的磁场传感器。但是只是单纯的测出九个轴的数据没什么用,关键是要能够融合这九轴数据得出我
们想要的结果。这里就运用三阶卡尔曼滤波算法来融合这九轴运动数据为三轴的角度。运用这三个角度可以用来做自平衡车或者四轴飞行器.
一、卡尔曼算法理解
其实如果不去考虑kalman算法是怎么来的,我们只需要知道有下面几个式子就可以了,具体意思可以看上面的wikipedia链接
二卡尔曼滤波算法的实现
这里的算法是运行在avr单片机上的,所以采用的是c语言写的。下面的代码是要放到avr的定时器中断测试刷新的。用示波器测试了一下,这个算法在16M
晶振下的运行时间需要0.35ms,而数据采集需要3ms左右,所以选定定时器时间为8ms.这边是三阶的,主要是矩阵运算.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26