- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
扩展卡尔曼滤波器教程
在使用 OpenPilot和 Pixhawk飞控时,经常遇到扩展卡尔曼滤波(EKF)。从不同的网页和参
考论文中搜索这个词,其中大部分都太深奥了。所以我决定创建自己学习教程。本教程从一
些简单的例子和标准(线性)卡尔曼滤波器,通过对实际例子来理解卡尔曼滤波器。
Part 1: 一个简单的例子
想象一个飞机准备降落时,尽管我们可能会担心许多事情,像空速、燃料、等等,当然最明
显是关注飞机的高度(海拔高度)。通过简单的近似,我们可以认为当前高度是之前的高度失
去了一小部分。例如,当每次我们观察飞行高度时,认为飞机失去了 2%的高度,那么它的
当前高度是上一时刻高度的 98%:
altitudecurrent_time = 0.98* altitudeprevious_time 工程上对上面的公式,使用“递归”这个术语进行描述。通过递归前一时刻的值,不断计算
当前值。最终我们递归到初始的“基本情况”,比如一个已知的高度。
试着移动上面的滑块,看看飞机针对不同百分比的高度变化。
Part 2:处理噪声
当然, 实际从传感器比如 GPS或气压计获得测量高度时,传感器的数据或多或少有所偏差。
如果传感器的偏移量为常数,我们可以简单地添加或减去这偏移量来确定我们的高度。不过
通常情况下,传感器的偏移量是一个时变量,使得我们所观测到的传感器数据相当于实际高
度加上噪声:
observed_altitudecurrent_time = altitudecurrent_time + noisecurrent_time 试着移动上面的滑块看到噪声对观察到的高度的影响。噪音被表示为可观测的海拔范围的百
分比。
Part 3:全部考虑
所以现在我们有两个方程描述我们的飞机的状态:
altitudecurrent_time = 0.98 * altitudeprevious_time
observed_altitudecurrent_time = altitudecurrent_time + noisecurrent_time
这些方程是很容易理解,但他们不够通用处理一般系统,除了我们上面所举的例子。更一般
的方程,工程上采用熟悉的像 x、y和 z为变量,a和 b为常量,下标 k代表时间。所以我
们的方程变成:
x是我们系统的当前状态,xk?1是其先前的状态,a是一常数(在我们的示例中是 0.98),zk
是我们当前的观测变量,vk是当前的测量噪声。卡尔曼滤波如此受欢迎的原因之一是,通
过给定的观测量 zk,常量 a以及整体的测量噪声 vk,它可以让我们得到一个对当前状态的
准确的估计值 xk。
我们还应该考虑到,飞机实际的高度变化可能没有描述的那么光滑。飞机通常在下降过程中
是会经历一定的动荡的。这种动荡是通过定义的噪声来描述,可视为另一个噪声信号:
altitudecurrent_time = 0.98 * altitudeprevious_time +turbulencecurrent_time
一般表述为
Wk表示过程噪声,比如飞机下降过程的动荡,这是一个固有模型的一部分,而不是观测量
或测量值。为了方便其他问题的讨论,我们将忽略过程噪声一段时间,但我们将在传感器融
合一节继续讨论它。
Part 4:状态估计
这里再次(忽略过程噪声)列出我们的两个方程,来描述我们正在观察的系统状态:
因为我们的目标是从观测量 z获得状态量 x,我们可以重写第二个方程为:
当然,问题是我们不知道当前的噪声 vk,理论上它是不可预测的。幸运的是,卡尔曼滤波
器能够使我们通过考虑当前的观测值和先前的估计值来估计当前的状态值。工程上在变量上
面使用“^”帽子符号表示估计值。所以 表示当前状态的估计值。然后我们可以用先前
的估计值和当前观测值的权重来表示当前的估计值。
这里的 g表示权重值的增益。这个方程用红色突出显示,是因为这就是我们直接使用的卡尔
曼滤波器。
现在,这一切看起来相当复杂,想象一下如果 gk的取极值会如何?当 gk=0时,我们得到:
也就是说增益为 0时,观测值对状态估计没有影响,当前状态级先前的状态估计值。当 gk=1
时,我们得到:
也就是说,当增益为 1时,前面的状态估计值并不重要,我们所获取的当前状态估计完全跟
当前的观测值有关。当然,实际的增益值可能介于这两种极端情况之间。试着移动下面的滑
块,看到增益对获得当前状态估计的影响:
Part 5:计算增益
所以现在我们有一个公式,可以根据先前的估计值 ,当前的观测量 ,当前的增益
来计算当前状态估计 。
那么,我们如何计算增益呢?答案是:间接地从噪声获得。回想下,每一个观测值都与一个
特定的噪声值有关:
我们不知道每一个观测量的单独的噪声值,但我们通常能知道噪声的平均值。比如
您可能关注的文档
- 考研高等数学实用公式大全.doc
- 考研核心词汇2000整理版版1.doc
- 考研数学常用积分公式.doc
- 考研《315化学(农)》习题课综合练习及答案.doc
- 考研宝典之医学思维导图【药理学】全套完整版.doc
- 考研数学二模拟试题2及答案解析.doc
- 考研数学二公式总结.doc
- 考研数学公式大全(pdf清晰版,).doc
- 考研数学公式大全81910.doc
- 考研数学线性代数满分笔记手写总结.doc
- 2024-2025学年安徽省亳州市涡阳县高二下学期2月开学考试政治试题(解析版).docx
- 2024-2025学年江西省赣州市上犹县高二下学期开学考试政治试题(解析版).docx
- 2024-2025学年山东省济宁市高二下学期开学考试政治试题(解析版).docx
- 2024-2025学年山西省卓越联盟高三下学期2月开学质量检测政治试题(解析版).docx
- 2024-2025学年新疆乌鲁木齐市高二下学期2月开学考试政治试题(解析版).docx
- 2024-2025学年新疆维吾尔自治区乌鲁木齐地区高三2月大联考文科综合政治试题(解析版).docx
- 2024-2025学年安徽省蚌埠市固镇县高一上学期1月期末考试政治试题 (解析版).docx
- 2024-2025学年江苏省扬州市高三上学期期末检测政治试卷(解析版).docx
- 2024-2025学年江西省吉安市高三上学期期末教学质量检测政治试题(解析版).docx
- 2024-2025学年山东省济宁市高二上学期1月期末考试政治试题(解析版).docx
文档评论(0)