卡尔曼滤波 平衡车
卡尔曼滤波在两轮自平衡代步车姿态检测中的应用_张团善

参数名
dt
Ak
Bk
Hk
Q
R
x0
P0
参数值
[ ] [ ] [ ] 0.02s
1 -0.02 01
0.02 0
(1 0) 80 0 0 0.01
(100)
() [ ] 0
1 0
0
0 1
实验结果如图 5 所 示,在 未 经 卡 尔 曼 滤 波 器 前,加 速 度计观测的俯仰角 度 存 在 较 大 的 噪 声干扰,角度输出为± 10°之 间 ;经 卡 尔 曼 滤 波 后 ,角 度 输 出 为 ±5°之 间 ,有 效 滤 除 噪 声干扰信号。
w
+
gyrok-1 +
0
0k
(4)
其中,wk 是过程 噪 声,并 假 定 其 符 合 均 值 为 零 、协 方 差 矩
阵为 R的正态分布。
测量方程为:
[ ] θk = (1 0)gyarnog_lbeias k +vk
(5)
其中,θk 是 k时刻加速度 计 的 俯 仰 角 观 测 值 ;vk 是 观 测 噪
由式(4)、(5)得 到 的 车 体 姿 态 的 状 态 方 程 及 观 测 方
程,在应用卡尔曼滤 波 实 现 姿 态 信 息 融 合 的 过 程 中 ,滤 波
器的状态由以下两个变量描述 :k时刻的状态 估 计 x^k|k;度 量状 态 估 计 值 精 确 程 度 的 误 差 相 关 矩 阵 Pk|k。 其 滤 波 算 法框图如图4所示。
倾 角 测 量 典 型 误 差 小 于 1°,具 有 小 巧 轻 薄 、超 低 功 耗 、可 变
量程、高分辨 率 等 特 点。ADXL345 可 在 倾 斜 敏 感 应 用 中
双轮平衡车控制系统的设计

双轮平衡车控制系统的设计摘要随着时代的发展,人们生活质量的提高,双轮平衡车已经成为越来越流行的交通工具,目前双轮平衡车的发展已经成为未来交通工具发展的重要方向。
在实际使用中,双轮平衡车的反应速度,稳定性已是制衡双轮平衡车使用体验的最重要指标。
为双轮平衡车提供一种高效准确的运动控制系统成为了拓展其应用范围的前提。
本文是在基于嵌入式微处理器平台上,选择姿态传感器,设计了一种低成本、高性能、高准确性的双轮平衡车的控制系统。
本文首先从双轮平衡车的理论基础开始研究双轮平衡车的控制系统,依据现代受力分析和动能理论对车体进行数学建模,在数学模型的基础上设计合理的控制算法。
之后设计双轮平衡车机械结构,主要分为车轮、车架、电机等机械结构。
在设计平衡车硬件电路时,主要使用ARM结构的微处理器处理算法并且控制整体电路模块,使用高效的姿态传感器MPU6050采集车体的姿态信息,采用电机驱动芯片驱动电机。
最后编制双轮平衡车控制系统的程序,采用卡尔曼滤波算法对采集到的姿态信息进行抗干扰处理。
通过计算,主控制器输出PWM波驱动电机维持系统整体稳定并保持姿态平衡。
本次设计实现了抗干扰能力强和高效稳定的平衡车控制系统,该平衡车系统不仅平稳运行,并可以成功从不稳定状态恢复平衡,基本实现了基本功能。
本次设计可以使双轮平衡车这种交通工具更好的符合人们的日常需求。
关键词双轮平衡车;数学模型;PID控制;卡尔曼滤波- I -Design of the Control System ofDoubleWheel Balance CarAbstractWith the development of the times,people's living standards gradually improve.Thedouble wheel balance car has become amore popular part in modern transportation field.The response speed and stability of the two double balancecars has gradually become an important index of check and balance the double wheel balance vehicle technical performance. For the two-wheel balancing car provides an efficient and accurate motion control system became the premise of expanding the scope of its applicationThis paper is based on embedded microcontroller processor platform,choice attitude sensor, designed a low cost, high performance, high accuracy ofthedouble wheel balancing car control system.This paper begins with the theory of two wheel balancing car.According to modernforce analysis andenergy theory to design a mathematical model. According to the mathematical model todesign reasonable control algorithm. Second, design a Reasonable mechanical structure, including wheels, frame and motor. Now the most important thing is to design the hardware circuit. The ARM structure is used as the main control unit, it is mainly used for the operation and control of other units. Using an efficient attitude sensor to collect right attitude information, this paper select MPU6050 as the attitude sensor. Motor drive chip is used to drive two motors. Finally, this paper programs the two wheel balance control program. Filtering the collected information by Kaman filtering. After calculation, the main controller outputs the PWM wave to drive motor to maintain the overall balance of the car body.The double wheel balance car has Strong anti-interference ability.The double wheel balance car can maintain body balance, it can quickly restore balance.It accords with basic conditionsand greatly improves the stability of the whole system. Achieve the basic function;the double wheel balance car meets the People's daily life.- II -Keywords double wheel balance car; mathematic model; PID control; kalman filtering- III -目录摘要 (I)Abstract (II)第一章绪论 (1)1.1课题研究背景及意义 (1)1.2国内外双轮平衡车的发展现状 (2)1.3主要研究内容 (3)第二章系统总体设计及技术介绍 (5)2.1双轮平衡车总体设计方案 (5)2.2双轮平衡车受力分析以及动力学模型 (6)2.2.1双轮平衡车平衡的基本原理 (6)2.2.2车轮受力分析 (7)2.2.3车身受力分析 (9)2.2.4系统动能分析 (11)2.3PID控制算法 (16)2.3.1 PID控制系统简介 (16)2.3.2 PID控制算法原理 (16)2.4卡尔曼滤波算法 (22)2.4.1卡尔曼滤波简介 (22)2.4.2卡尔曼滤波原理 (23)2.4.3卡尔曼滤波实现 (24)2.5本章小结 (25)第三章系统硬件设计 (26)3.1双轮平衡车系统结构设计 (26)3.1.1平衡车机械机构设计 (26)3.1.2平衡车控制系统硬件设计方案 (27)3.2主控制器应用电路设计 (28)3.2.1Stm32处理器简介 (28)3.2.2主控制模块 (29)3.3无线通信模块电路设计 (30)3.3.1无线通信模块简介 (30)3.3.2无线通信模块 (31)3.4电源电路设计 (31)3.5硬件中的抗干扰措施 (33)3.6电机驱动电路设计 (33)3.7姿态传感器模块 (36)3.8本章总结 (38)第四章系统软件设计 (39)4.1软件设计总框图 (39)4.2电机测速方法 (41)4.2.1M法测速 (41)4.2.2T法测速 (42)4.3MPU6050通信程序 (42)4.4通信程序的设计 (43)4.5卡尔曼滤波程序设计 (44)4.6PID算法程序设计 (46)4.7本章小结 (47)第五章双轮自平衡车测试 (48)5.1双轮平衡车调试 (48)5.2PID控制系统测试 (48)5.3抗干扰试验 (50)5.4本章小结 (52)结论 (53)参考文献 (54)攻读硕士学位期间发表的学术成果 (57)致谢 (58)第一章绪论1.1课题研究背景及意义在当今世界,人们的交通方式的发展有着多样化的趋势,特别是时代的进步和发展,人们的交通工具已经不能只考虑速度、体积等方面,人们需要更可以用传感器反馈分析和智能控制和规划的自主交通工具[1]。
平衡小车卡尔曼滤波算法使用心得

平衡小车卡尔曼滤波算法使用心得这次的平衡车,使用到了卡尔曼滤波,下面谈谈使用心得我们是利用角速度传感器和加速度传感器测量得到角度和角速度,但是由于车子是运动的,我们利用加速度得到的角度并不完全正确,由于噪声干扰,我们对角速度传感器的测量值也存在怀疑。
于是我们就要进行滤波,通过两个传感器数值上的相互关系来得到我们想要的结果。
我们使用卡尔曼滤波器连接这两个测量值。
首先开感性的理解一下卡尔曼,引用网上(百度百科)的经典解释:在介绍他的5条公式之前,先让我们来根据下面的例子一步一步的探索。
假设我们要研究的对象是一个房间的温度。
根据你的经验判断,这个房间的温度是恒定的,也就是下一分钟的温度等于现在这一分钟的温度(假设我们用一分钟来做时间单位)。
假设你对你的经验不是100%的相信,可能会有上下偏差几度。
我们把这些偏差看成是高斯白噪声(White Gaussian Noise),也就是这些偏差跟前后时间是没有关系的而且符合高斯分配(Gaussian Distribution)。
另外,我们在房间里放一个温度计,但是这个温度计也不准确的,测量值会比实际值偏差。
我们也把这些偏差看成是高斯白噪声。
好了,现在对于某一分钟我们有两个有关于该房间的温度值:你根据经验的预测值(系统的预测值)和温度计的值(测量值)。
下面我们要用这两个值结合他们各自的噪声来估算出房间的实际温度值。
假如我们要估算k时刻的是实际温度值。
首先你要根据k-1时刻的温度值,来预测k时刻的温度。
因为你相信温度是恒定的,所以你会得到k时刻的温度预测值是跟k-1时刻一样的,假设是23度,同时该值的高斯噪声的偏差是5度(5是这样得到的:如果k-1时刻估算出的最优温度值的偏差是3,你对自己预测的不确定度是4度,他们平方相加再开方,就是5)。
然后,你从温度计那里得到了k时刻的温度值,假设是25度,同时该值的偏差是4度。
由于我们用于估算k时刻的实际温度有两个温度值,分别是23度和25度。
基于卡尔曼滤波算法自平衡智能车系统设计

基于卡尔曼滤波算法自平衡智能车系统设计作者:孙长伟唐斌王志强来源:《科学导报·学术》2019年第37期摘要:基于卡尔曼滤波算法自平衡智能车系统设计,以STM32F103为控制核心,采用卡尔曼滤波算法和PID算法。
该设计提高了平衡车倾角的计算精度和平衡车的稳定性。
通过系统调试和分析,获得了适合平衡车运行的各项系统参数,运行结果表明该平衡车运动平稳,适应性强。
关键词:STM32F103;卡尔曼滤波;PID 控制算法;智能平衡车;控制系统引言两轮自平衡小车是一个综合复杂的系统,集动态决策和规划、环境感知、行为控制和执行等多种功能于一体[1]。
STM32单片机作为控制单元,陀螺仪、加速度计、光电编码器和电流检测等传感器采集相关的数据信息[2],基于卡尔曼滤波算法和PID算法,实现平衡车的自动直立与快速运动[3]。
1 平衡智能车原理平衡智能车的动力输出来自车身底部的两路直流电机与车轮之间运动,根据电机之间不同转速引起车轮之间不同转速控制智能车的直立不同、速度不同、方向不同。
智能车车体的控制任务可分解成三个基本任务:(1)控制车模平衡:电机的正向反向运动控制保持车模的直立平衡状态;(2)控制车模速度:车模的倾角的调节控制车模速度,实质通过控制电机的转速来实现车轮速度的控制。
(3)控制车模方向:通过控制两个电机之间的转速差控制车模转向 [4]。
智能车控制采用的核心算法是PID算法。
平衡小车速度控制系统由负反馈PD 直立控制器和正反馈PI 速度控制器组成[5]。
在直立控制中,只要一产生角度偏差信号,在负反馈的作用下角度偏差最终被消除,小车保持直立状态;在速度控制中,一旦检测到角度偏差信号,即明白小车要产生速度的变化,在正反馈的速度控制器作用下,速度会朝着期望方向上逐渐增加,以达到速度控制的目的。
2 系统总体方案设计系统由五部分组成:中央处理部分,电源管理部分,运动控制部分,数据感知部分,人机交互部分。
卡尔曼滤波器

模糊逻辑AKF
• 卡尔曼滤波器通常要求系统动态过程和 噪声都是确定的,且系统噪声和量测噪 声都是零均值白噪声,如果系统存在模 型误差或噪声不确定就有可能导致卡尔 曼滤波器发散。模糊逻辑自适应卡尔曼 滤波器o,它能够连续调整滤波器模型 中的噪声力度,从而防止滤波器发散。
卡尔曼滤波器应用举例
• 现代汽车中的悬架分为从动悬架和主动 悬架两种。从动悬架即传统式的悬架, 是由弹簧、减震器、导向机构等组成, 它的功能是减弱路面传给车身的冲击力, 衰减由冲击力而引起的承载系统的震动。 其中弹簧主要起减缓冲击力的左右,减 震器的作用是衰减震动。从动悬架是由 外力驱动而起作用的。
多模型AKF
• 它由一组卡尔曼滤波器组成,每一个卡 尔曼滤波器使用不同的系统模型,各个 卡尔曼滤波器并行运行,根据观测向量 估计各自的状态。随着时间的不断增加, 系统会选出最优的一个滤波器并将其权 值增大,而其它权值相应减小。多模型 AKF性能最优的前提条件是所用的模型 集包含了系统所有可能的模式,但是这 个前提条件往往是很难满足的。
基于信息的AKF
• 基于信息的AKF主要是通过调整噪 声统计特性达到自适应的目的,解 决了因为噪声统计特性不明确或噪 声发生变化的情况。但是对于系统 其它模型发生变化不能达到自适应 的目的。
神经网络AKF
• 神经网络作为人工智能技术中的一个领 域,其主要优点在于它对系统的模型没 有特别要求,只要有足够的用于训练的 先验数据,就可以用训练的神经网络近 似代替原系统。神经网络AKF可以满足 系统其它模型不正确或者发生变化的问 题。
卡尔曼滤波器基本公式
• (1)X(k|k-1)=AX(k-1|k-1)+BU(k) • (2)P(k|k-1)=AP(k-1|k-1)A’+Q • (3)X(k|k)= X(k|k-1)+Kg(k) (Z(k)-
基于卡尔曼滤波和PID算法的自平衡小车调试过程分析

《装备维修技术》2020年第18期—127—基于卡尔曼滤波和PID 算法的自平衡小车调试过程分析周 斌1,2 孔丙亚3 冯高明1(1.河南理工大学电气工程与自动化学院,河南 焦作 454010;2.河南中车重型装备有限公司,河南 三门峡 472300;3.平煤股份十三矿,河南 许昌襄城 461700)引言两轮自平衡小车是一个比较复杂的控制系统,是研究各种控制理论的实验和研究平台,理论意义和现实意义都很重大。
很多自平衡小车都采用的是PID 算法,在进行PID 参数调试时,调试过程比较复杂,需要反复调试。
本文结合基于卡尔曼滤波和PID 算法的自平衡小车调试过程给出了调试的一般步骤和方法。
1 系统硬件上电调试硬件上电测试是进行自平衡小车系统进行整体调试前的准备工作,目的是为了确定系统的各个硬件模块都可以正常的工作。
将测试程序从计算机下载到自平衡小车系统后,给自平衡车车上电,观察自平衡车的运动状态,自平衡小车的运动状态如果符合测试程序的预期输出,说明系统的硬件电路没有问题,可以进入下一步进行系统各个参数的具体调试。
2 系统软件PID 参数调试2.1姿态检测模块调试 姿态模块的调试对象主要是姿态传感器陀螺仪和加速度计,调速的目的是要保证测得的角度和角速度信号的准确性。
调试过程如下:使自平衡车与地面保持一定的倾角(调试时采用了450、900、1350三种倾角),观察陀螺仪与加速度计实际的输出数值,每一种状态多测几组数据,然后根据测得的数值求出测量平均值,将测得的平均值与角度的实际值进行对比,求出两者之间的误差,然后对该误差进行补偿。
2.2角度环参数调试 直立角度环控制输出函数为: AngleControlOut=VehicleAngle*VehicleAngle_P+VehicleAngle_d ot* VehicleAngle_D;//角度*P+角速度*D 角度环控制参数有两个,分别是比例系数VehicleAngle_P 和微分系数VehicleAngle_D。
两轮自平衡小车毕业设计!!_修改

自平衡小车设计摘要这些年来,两轮自平衡车的应用获得了十分快速的应用和发展。
本文提出了一种两轮的自平衡小车的设计,采用陀螺仪ENC-03以及MEMS加速度传感器MMA7260构成小车姿态检测装置,使用卡尔曼滤波完成陀螺仪数据与加速度计数据的数据融合。
系统选用飞思卡尔16位单片机MC9S12XS128为控制核心,完成了传感器信号的处理,滤波算法的实现及车身控制,人机交互等。
整个系统在制作完成后,各个模块之间能够协调工作,小车也可以在无人干预的条件下达到自主平衡。
同时在引入适量的干扰情况下小车也能够自主调整状态并迅速恢复稳定的状态。
小车可以被控制实现前进、后退、左右转向等动作。
关键词:自平衡stm32 姿态滤波IDesign of Self-Balance VehicleAbstractIn recent years, the application of two wheeled self balancing vehicle has been very rapid application and development. In this paper, we propose a two rounds of self balance car design, car attitude detection device by gyroscope enc-03 and MEMS accelerometer MMA7260 and Kalman filtering is used to complete data of a gyroscope and accelerometer meter data fusion. The system selects the flying thought Carle 16 bit single chip microcomputer MC9S12XS128 as the control core, completed the sensor signal processing, the filter algorithm realization and the vehicle body control, human computer interaction and so on.After the completion of the entire system, the various modules can work in coordination, the car can also be under the conditions of unmanned intervention to achieve self balancing. At the same time in the introduction of the amount of interference in the case of the car can also adjust the state and quickly return to a stable state. The car can be controlled to achieve forward, backward, left and right steering and so on.Key Words: Two-Wheel Self-Balance; Gyroscope; Gesture detection; Kalman filter; Data fusionII目录1.绪论 (1)1.1研究背景与意义 (1)1.3本文主要研究目标与内容 (1)1.4论文章节安排 (2)2.系统原理分析 (3)2.1控制系统要求分析 (3)2.2平衡控制原理分析 (3)2.3自平衡小车数学模型 (4)2.3.1两轮自平衡小车受力分析 (4)2.3.2自平衡小车运动微分方程 (7)2.4 PID控制器设计 (8)2.4.1 PID控制器原理 (8)2.4.2 PID控制器设计 (9)2.5姿态检测系统 (10)2.5.1陀螺仪 (10)2.5.2加速度计 (11)2.5.3基于卡尔曼滤波的数据融合 (12)2.6本章小结 (14)3.系统硬件电路设计 (15)3.1 MC9SXS128单片机介绍 (15)3.2单片机最小系统设计 (17)3.3 电源管理模块设计 (19)3.4倾角传感器信号调理电路 (20)3.4.1加速度计电路设计 (20)3.4.2陀螺仪放大电路设计 (20)3.5电机驱动电路设计 (21)3.5.1驱动芯片介绍 (22)3.5.2 驱动电路设计 (22)III3.6速度检测模块设计 (23)3.6.1编码器介绍 (23)3.6.2 编码器电路设计 (24)3.7辅助调试电路 (25)3.8本章小结 (25)4.系统软件设计 (26)4.1软件系统总体结构 (26)4.2单片机初始化软件设计 (26)4.2.1锁相环初始化 (26)4.2.2模数转换模块(ATD)初始化 (27)4.2.3串行通信模块(SCI)初始化设置 (28)4.2.4测速模块初始化 (29)4.2.5 PWM模块初始化 (30)4.3姿态检测系统软件设计 (30)4.3.1陀螺仪与加速度计输出值转换 (30)4.3.2卡尔曼滤波器的软件实现 (32)4.4平衡PID控制软件实现 (34)4.5两轮自平衡车的运动控制 (35)4.6本章小结 (37)5. 系统调试 (38)5.1系统调试工具 (38)5.2系统硬件电路调试 (38)5.3姿态检测系统调试 (39)5.4控制系统PID参数整定 (41)5.5两轮自平衡小车动态调试 (42)5.6本章小结 (43)6. 总结与展望 (44)6.1 总结 (44)6.2 展望 (44)参考文献 (45)IV附录 (46)附录一系统电路原理图 (46)附录二系统核心源代码 (47)致谢 (50)V常熟理工学院毕业设计(论文)1.绪论1.1研究背景与意义近应用意义。
不同姿态解算在平衡车中的实现与应用

• 120•不同姿态解算在平衡车中的实现与应用贵阳学院电子与通信工程学院 古 训 陈 红双轮平衡车是一种基于“动态稳定”的两轮机器人,它利用车载陀螺仪和加速度计传感器实时检测车身姿态,控制电机的转速使平衡车保持动态稳定。
利用MPU6050常用的姿态解算有一阶互补滤波、二阶互补滤波、匹配滤波以及卡尔曼滤波等算法。
本文分别对四种算法进行分析以及实验验证,获取最佳的姿态解算方案,完成平衡车姿态角度的最佳估计,实现平衡车直立的动态稳定。
0 引言随着城市经济的发展,城市交通需求迅速增长。
为了解决城市交通的问题,引进了新的代步工具——平衡车,它体积小,便于携带,同时采用电能驱动,节能、环保,提高了人们出行的效率。
平衡车主要利用车载传感器检测车体姿态角度的变化,然后通过控制系统驱动电机,达到两轮直立自平衡的效果。
本文通过MPU6050模块(赖义汉,王凯.基于MPU6050的双轮平衡车控制系统设计[J].河南工程学院学报(自然科学版),2014,26(01):53-57)获取加速度和角速度,对车体姿态进行识别。
MPU6050模块为整合性6轴运动处理组件,内置3轴陀螺仪,3轴加速度计,如图1所示。
其中陀螺仪输出的角速度积分就可以得到角度值,但是由于角速度存在微小的偏差和漂移,经过积分运算之后就会形成累积误差。
加速度计恰好和陀螺仪特性相反:没有累积误差。
但是由于平衡车在运动时,极易受到外部的干扰,采集加速度值时会产生很大的噪声信号。
所以单独使用陀螺仪或加速度计估计平衡车的姿态是很难实现的。
因此需要采用滤波算法将其加速度计和陀螺仪之间的数据进行融合,计算出平衡车偏转角度的最优估计值,完成平衡车的姿态解算。
图1 MPU6050模块本文采用四种不同的姿态解算算法对平衡车姿态进行解算,对比不同姿态解算的效果以及在平衡车上的应用,选出平衡车姿态的最优估计,完成平衡车的姿态解算。
图2 一阶互补滤波算法框图1 四种姿态解算的应用1.1 一阶互补滤波一阶互补滤波(付勇杰,丁艳红,梁义维,行阳阳.动态倾角传感器及其传递特性的研究[J].仪表技术与传感器,2012(09):6-8)融合了陀螺仪提供的高频角速度信号和加速度计提供的低频角度信号,采用高通滤波算法抑制陀螺仪的积分漂移,低通滤波算法除去加速度计短时间快速变化的信号,分别滤出相应的噪声信号,补偿陀螺仪的累积误差和加速度的动态误差,得到平衡车姿态的估计值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
kalman滤波器分类:CV相关2012-03-19 00:26 178人阅读评论(2) 收藏举报卡尔曼是匈牙利当代著名数学家,Kalman滤波器源自于他的博士毕业论文和1960年发表的论文《A New Approach to Linear Filtering and Prediction Problems》(线性滤波与预测问题的新方法)。
卡尔曼滤波器是一个最优化自回归数据处理方法,它是一个时域滤波器,是通过对时域上包含噪声的有限测量数据,计算出最接近实际值的方法。
这里说它是一种递归的估计,是指只要获得上一时刻的状态值以及当前的状态观测值就可以计算出当前状态的估计值,因此不需要记录观测或者估计的历史信息。
既然是一个时域滤波器,也就无需像低通滤波器那样,需要在频域进行滤波器设计而需要再转换到时域来实现。
卡尔曼滤波器的典型应用是从一组包含噪声的对无物体位置的观察序列中预测出物体的位置坐标和速度,它的核心内容是5个计算公式,然而,仅仅给出5个计算公式显得过于抽象,不便于理解。
这里,为了更加形象、更容易地理解卡尔曼滤波器,我给出网上摘取的一个例子来一步一步探索卡尔曼滤波器的原理。
一、举例说明卡尔曼滤波器的原理(该例子转载自网络)假设被研究对象是某个房间内的温度(当然,这里假设该房间内各处的温度是相等的,房间内不存在空调、风扇、暖气等局部发热或散热的设备)。
根据生活经验,你认为这个房间内的温度是恒定的。
即,下一时刻的温度等于当前时刻的温度。
但是,你的生活经验并不是绝对的准确,所以,你确信自己对房间内温度的估计存在上下几度的偏差。
这个偏差在这里假设是高斯白噪声的,即:偏差跟时间没有关系而且是服从高斯分布的。
另外,在房间内放置一个温度计,用于测量房间内的温度。
但是,由于制造工艺等因素,温度计的测量值也不是绝对准确的,即:温度计的测量值与真实值之间也存在一定的偏差,这个偏差也假设是高斯白噪声的。
那么,对于任意时刻,我们可以得到该房间的两个温度值:你根据生活经验得到的估计值(系统的预测值)和温度计的测量值(系统的测量值)。
下面我们用这两个值结合他们各自的噪声来估算出房间的实际温度值。
假如我们要估算k时刻的实际温度值。
首先你要根据k-1时刻的温度值,来预测k时刻的温度。
(1)因为你相信温度是恒定的,所以你会得到k时刻的温度预测值是跟k-1时刻一样的,假设是23度,同时该值的高斯噪声的偏差是5度。
(5是这样得到的:如果k-1时刻估算出的最优温度值的偏差是3,你对自己预测的不确定度是4度,他们平方相加再开方,就是5)(2)然后,你从温度计那里得到了k时刻的温度值,假设是25度,同时该值的偏差是4度由于我们用于估算k时刻的实际温度有两个温度值,分别是23度和25度。
究竟实际温度是多少呢?相信自己还是相信温度计呢?究竟相信谁多一点,我们可以用他们的协方差来判断。
因为Kg^2=5^2/(5^2+4^2),所以Kg=0.78,我们可以估算出k时刻的实际温度值是:23+0.78*(25-23)=24.56度。
可以看出,因为温度计的协方差比较小(比较相信温度计),所以估算出的最优温度值偏向温度计的值。
现在我们已经得到k 时刻的最优温度值了,下一步就是要进入k+1时刻,进行新的最优估算。
到现在为止,好像还没看到什么自回归的东西出现。
对了,在进入k+1时刻之前,我们还要算出k时刻那个最优值(24.56度)的偏差。
算法如下:((1-Kg)*5^2)^0.5=2.35。
这里的5就是上面的k时刻你预测的那个23度温度值的偏差,得出的2.35就是进入k+1时刻以后k时刻估算出的最优温度值的偏差(对应于上面的3)。
就是这样,卡尔曼滤波器就不断的把协方差递归,从而估算出最优的温度值。
他运行的很快,而且它只保留了上一时刻的协方差。
上面的Kg,就是卡尔曼增益(Kalman Gain)。
他可以随不同的时刻而改变他自己的值。
二、卡尔曼滤波器的数学模型讨论卡尔曼滤波器就不得不提离散控制过程的系统。
对于一个离散控制过程的系统而言,可用一个线性随机微分方程来描述:X(k)=A X(k-1)+B U(k)+W(k)系统的测量值:Z(k)=H X(k)+V(k)上两式子中,X(k)是k时刻的系统状态,U(k)是k时刻对系统的控制量。
A和B是系统参数,对于多模型系统,他们为矩阵。
Z(k)是k时刻的测量值,H是测量系统的参数,对于多测量系统,H为矩阵。
W(k)和V(k)分别表示过程和测量的噪声。
他们被假设成高斯白噪声(White Gaussian Noise),他们的covariance分别是Q,R(这里我们假设他们不随系统状态变化而变化)。
对于满足上面的条件(线性随机微分系统,过程和测量都是高斯白噪声),卡尔曼滤波器是最优的信息处理器。
下面我们来用他们结合他们的covariances来估算系统的最优化输出(类似上一节那个温度的例子)。
首先我们要利用系统的过程模型,来预测下一状态的系统。
假设现在的系统状态是k,根据系统的模型,可以基于系统的上一状态而预测出现在状态:X(k|k-1)=A X(k-1|k-1)+B U(k) (1)式(1)中,X(k|k-1)是利用上一状态预测的结果,X(k-1|k-1)是上一状态最优的结果,U(k)为现在状态的控制量,如果没有控制量,它可以为0。
到现在为止,我们的系统结果已经更新了,可是,对应于X(k|k-1)的covariance还没更新。
我们用P表示covariance:P(k|k-1)=A P(k-1|k-1) A’+Q (2)式(2)中,P(k|k-1)是X(k|k-1)对应的covariance,P(k-1|k-1)是X(k-1|k-1)对应的covariance,A’表示A的转置矩阵,Q是系统过程的covariance。
式子1,2就是卡尔曼滤波器5个公式当中的前两个,也就是对系统的预测。
现在我们有了现在状态的预测结果,然后我们再收集现在状态的测量值。
结合预测值和测量值,我们可以得到现在状态(k)的最优化估算值X(k|k):X(k|k)= X(k|k-1)+Kg(k) (Z(k)-H X(k|k-1)) (3)其中Kg为卡尔曼增益(Kalman Gain):Kg(k)= P(k|k-1) H’ / (H P(k|k-1) H’ + R) (4)到现在为止,我们已经得到了k状态下最优的估算值X(k|k)。
但是为了要令卡尔曼滤波器不断的运行下去直到系统过程结束,我们还要更新k状态下X(k|k)的covariance:P(k|k)=(I-Kg(k) H)P(k|k-1) (5)根据这5个公式,可以很容易的实现计算机的程序。
其实我也是一知半解,给你推荐篇文章卡尔曼滤波介绍中文版ourdev_611837OCLGOY.pdf(文件大小:540K)(原文件名:kalman_intro_chinese.pdf)卡尔曼滤波介绍英文版ourdev_611838G0F5Z1.pdf(文件大小:173K)(原文件名:kalman_intro.pdf)文章从头开始看,看完离散卡尔曼滤波那一节,就会理解很多。
后面扩展卡尔曼我看不懂,最后面举了个例子,好好看下。
卡尔曼C语言ourdev_611839GC1Z3U.txt(文件大小:7K)(原文件名:kalman.txt)再看下这个程序。
和我用的结构差不多的(我的是抄zlstone的,他貌似也是复制的,呵呵,最难的就是卡尔曼)。
下面是我的:void Kalman_Filter(float angle_m,float gyro_m) //gyro_m:gyro_measure{angle+=(gyro_m-q_bias) * dt;//先验估计Pdot[0]=Q_angle - P[0][1] - P[1][0];// Pk-' 先验估计误差协方差的微分Pdot[1]=- P[1][1];Pdot[2]=- P[1][1];Pdot[3]=Q_gyro;P[0][0] += Pdot[0] * dt;// Pk- 先验估计误差协方差微分的积分 = 先验估计误差协方差P[0][1] += Pdot[1] * dt;P[1][0] += Pdot[2] * dt;P[1][1] += Pdot[3] * dt;angle_err = angle_m - angle;//zk-先验估计PCt_0 = C_0 * P[0][0];PCt_1 = C_0 * P[1][0];E = R_angle + C_0 * PCt_0;K_0 = PCt_0 / E;//KkK_1 = PCt_1 / E;t_0 = PCt_0;t_1 = C_0 * P[0][1];P[0][0] -= K_0 * t_0;//后验估计误差协方差P[0][1] -= K_0 * t_1;P[1][0] -= K_1 * t_0;P[1][1] -= K_1 * t_1;angle += K_0 * angle_err;//后验估计q_bias += K_1 * angle_err;//后验估计angle_dot = gyro_m-q_bias;//输出值(后验估计)的微分 = 角速度}我只能帮这些了,我的方向是运动控制方面,KALMAN貌似在信号分析相关专业会学的,所以我也没细看了。
上述程序我是直接复制过来的,只改了采样周期,剩下一点没动(还加了点注释,呵呵)。
有关KALMAN 的详细解释一般都是外国网站的,中国的都是扯淡。
我做这个车的目的就是想搞下PID,怎么获取角度是次要的东西。
OK:其实控制很简单,利用定时器产生10ms中断,每次中断进行如下工作:1:AD采样加速度传感器和陀螺仪,然后卡尔曼滤波得出角度与角速度;(滤波模块借鉴老外的)(互补滤波效果感觉不是很好);2:计算车轮的速度,积分得出位置;3:利用PD算法得出PWM值=K1*angle + K2*angle_dot + K3*speed + K4 * position;4:前进后退给定参考速度计算即可;注:1:增量式轮速传感器A相中断,读取B相电位判断前进还是后退,在10ms的时间内累加,计算车轮的速度;2:由于10ms累加的轮速信号不多,直接计算车体会发抖,所以增加了低通滤波,解决问题;3:我在外面增加4个电位器可以手动调节4个K值,方便调试;以上;关于卡尔曼滤波的解释。
正在看,大家看看。
1.什么是卡尔曼滤波器(What is the Kalman Filter?)在学习卡尔曼滤波器之前,首先看看为什么叫“卡尔曼”。
跟其他著名的理论(例如傅立叶变换,泰勒级数等等)一样,卡尔曼也是一个人的名字,而跟他们不同的是,他是个现代人!卡尔曼全名Rudolf Emil Kalman,匈牙利数学家,1930年出生于匈牙利首都布达佩斯。