{ "cells": [ { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": true }, "outputs": [], "source": [ "%matplotlib inline \n", "from kf_book.gh_internal import plot_g_h_results\n", "from kf_book.gh_internal import book_plots\n", "import matplotlib.pyplot as plt\n", "import matplotlib.pylab as pylab\n", "from numpy.random import randn\n", "import numpy as np" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# GHF状态估计滤波器(GHK-Filter)\n", "---\n", "这一节,主要介绍GHK-Filter的主要思想,也是Kalman-Filter的基本思想,可用下图来做解释说明。 \n", "即:根据当前状态值所估计的下一状态的预估值,参考下一个状态的测量值,按照一定的置信度加权从而获得下一状态的实际估计值。 \n", "其中,我们把$x_{t-1}$称作当前状态,把$\\bar{x_t}$称作下一个状态的预估值,把$x_t$称作下一个状态的实际估计值。\n", "\n", "In this section, I mainly introduce the main idea of GHK-Filter, which is also the basic idea of Kalman-Filter, which can be explained by the following figure.\n", "That is, the estimated value of the next state according to the current state value, referring to the measured value of the next state, weighted according to a certain degree of confidence to obtain the actual estimated value of the next state. \n", "Where we call $x_{t-1}$ as the current state, $\\bar{x_t}$ as the estimate of the next state, and $x_t$ as the actual estimate of the next state." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n4PwAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import kf_book.book_plots as book_plots\n", "book_plots.show_residual_chart()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 我们可以总结出一下几点(some important points):\n", " \n", " 1. 我们所需要的数据:\n", " - 当前状态的实际值与下一个状态的预估值\n", " - 下一个状态的实际测量值\n", " - 加权系数\n", " 2. 如何预估下一状态:先验假设\n", " 3. 如何分配预估值和测量值的加权比重:后验假设\n", "\n", "\n", " 1. These data that we need:\n", "         - The actual value of the current state and the estimated value of the next state \n", "         - The actual measured value of the next state \n", "         - The weighting factors \n", " 2. How to estimate the next state: a priori hypothesis\n", " 3. How to assign the weighted weight of estimated and measured values: a posteriori hypothesis" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1、数据(Data)\n", "### - 初始数据(initial data)\n", "\n", "不难想到,我们可以把任何一个需要估计的阶段的开始状态看作是状态零点,即: \n", "It is not difficult to think that we can regard the start state of any phase that needs to be estimated as the state zero, ie:\n", "$$ x= \\left\\lgroup \\matrix{x \\cr \\dot x} \\right\\rgroup = \\left\\lgroup \\matrix{0 \\cr 0} \\right\\rgroup $$\n", " \n", "比如说:我们在使用手机上的记录跑步行程的软件的时候,我们总是可以选定开始的时间,开始的地点,也就是你开始使用的时间与地点,然后记录下来我们整个跑步行程。在这里我们的初始数据,就记为状态: \n", "For example, when we use the software on the mobile phone to record the running itinerary, we can always choose the starting time, the starting point, which is the time and place you started to use, and then record our entire running itinerary. Here our initial data is recorded as the state:\n", " $$x=0$$\n", "\n", "此外,我们还可以想到,初始状态为一个非零状态,他不一定是不变的,即: \n", "In addition, we can also think of the initial state as a non-zero state, which is not necessarily constant, ie:\n", "$$ x= \\left\\lgroup \\matrix{x \\cr \\dot x} \\right\\rgroup = \\left\\lgroup \\matrix{x_0 \\cr \\dot x_0} \\right\\rgroup $$\n", "\n", "比如说:一架歼-31战斗机从一艘某型号航空母舰上起飞,那么他起飞前就已经有了初始速度(即航空母舰相对于风的速度),而这些速度是我们可知的,那么我们就可以采用这样的一个初始状态来估计歼-31的离舰时候的速度。(*题外话,当然真实情况下不会采用这么简单的方式估计,至少是多模融合的*) \n", "For example, if an F-35 fighter takes off from an aircraft carrier, then he has an initial speed before the takeoff (that is, the speed of the aircraft carrier relative to the wind), and this speed is known to us, then the initial state can be used to estimate the speed of the F-35 when it leaves the ship.\n", "\n", "再者,我们还可以想到,初始状态是无法确定的,这种情况也是比较常见的。因此,我们通常就取初始状态的测量值作为初始状态,即: \n", "Furthermore, we can also think that the initial state is undetermined, and this situation is more common. Therefore, we usually take the measured value of the initial state as the initial state, ie:\n", "$$ x= \\left\\lgroup \\matrix{x \\cr \\dot x} \\right\\rgroup = \\left\\lgroup \\matrix{z_0 \\cr \\dot z_0} \\right\\rgroup + random$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### - 测量数据(Measurement data)\n", "\n", "测量数据,就是我们传感器系统所输出的测量值。由于计算机擅长于离散数据的计算,所以状态估计滤波器通常接收到的测量信号都是离散信号。离散信号可以是,信号本身就是离散的,也可以是连续信号经过采样处理而离散化。比如说图像、数据库数据本身就是以离散信息形式储存的数据,这种数据我么可以直接拿来使用,再比如说,压力、温度等由物理信息直接转化为连续电信号的信息,就需要经过采样器获得离散信号再用于状态估计。 \n", "\n", "在本文中,由于是对理论的一种探讨,所以假设已经获得了离散测量信号,对采样过程感兴趣的朋友可以在大多数的信号处理的书籍文献中获取,应该说,滤波器是信号处理问题中的一部分内容,同时状态估计器和控制算法结合非常紧密,所以Dr.Kalman建立Kalman Filter标志现代控制理论的成熟。 \n", " \n", "The measured data is the measured value output by our sensor system. Since computers are good at the calculation of discrete data, the measurement signals normally received by the state estimation filter are discrete signals. In addition to the fact that the signal itself is discrete, the discrete signal can also be obtained by sampling the continuous signal. For example, images and database data are themselves stored in the form of discrete information. This data can be used directly by us. However, pressure, temperature, etc., which are directly converted from physical information into continuous electrical signals, require a sampler to obtain discrete signals for state estimation. \n", "\n", "In this article, because it is a discussion of theory, it is assumed that discrete measurement signals have been obtained, and some friends interested in the sampling process can be obtained in most of the book literature on signal processing. It should be said that the filter is part of the signal processing problem, and the state estimator and the control algorithm are very tightly combined, so Dr. Kalman established the Kalman Filter to mark the maturity of modern control theory." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### - 噪音 (Noise)\n", "\n", "噪声是普遍存在的物理现象,可以说但凡有测量的地方就一定有噪声的存在。状态估计滤波器的目的就是滤除噪音从而得到更加准确的估计值。通常情况下根据噪音的频谱图可以将噪音分为有色噪音和白色噪音。白色噪音被经常应用于状态估计中。 \n", "\n", "Noise is a ubiquitous physical phenomenon. It can be said that wherever there is a measurement, there must be noise. The purpose of the state estimation filter is to filter out noise to get a more accurate estimate. Noise is usually classified into colored noise and white noise based on the spectrogram of the noise. White noise is often used in state estimation.\n", "\n", "接下来我们给一段白噪声的模型: \n", "Next we give a model of white noise:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# 生成随机白噪声\n", "x=[randn() for _ in range(3000)]\n", "plt.plot(x,lw=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**[加性高斯白噪声](https://zh.wikipedia.org/zh-hans/加性高斯白噪声)**(英语:Additive white Gaussian noise,AWGN)在通信领域中指的是一种功率谱函数是常数(即[白噪声](https://www.wikiwand.com/zh-hans/%E7%99%BD%E9%9B%9C%E8%A8%8A)),且幅度服从高斯分布的噪声信号。因其可加性、幅度服从高斯分布且为白噪声的一种而得名。 \n", "\n", "该噪声信号为一种便于分析的理想噪声信号,实际的噪声信号往往只在某一频段内可以用高斯白噪声的特性来进行近似处理。由于AWGN信号易于分析、近似,因此在信号处理领域,对信号处理系统(如滤波器、低噪音高频放大器、无线信号传输等)的噪声性能的简单分析(如:信噪比分析)中,一般可假设系统所产生的噪音或受到的噪音信号干扰在某频段或限制条件之下是高斯白噪声。 \n", "\n", "加性高斯白噪声只是白噪声的一种,另有[泊松白噪声](http://www.jianshu.com/p/67f909f3d0ce)等。 \n", "\n", "**[Additive white Gaussian noise](https://zh.wikipedia.org/zh-hans/加性高斯白噪声)** refers to a noise signal whose power spectrum function is constant (ie white noise) and whose amplitude obeys a Gaussian distribution. He is named for his additivity, its magnitude, his Gaussian distribution, and his white noise. \n", "\n", "The noise signal is an ideal noise signal for analysis. The actual noise signal can be approximated by the characteristics of Gaussian white noise only in a certain frequency band. Since the AWGN signal is easy to analyze and approximate, in the field of signal processing, in the simple analysis of the noise performance of signal processing systems (such as filters, low-noise high-frequency amplifiers, wireless signal transmission, etc.) (such as signal-to-noise ratio analysis), It is generally assumed that the noise generated by the system or the noise signal received is Gaussian white noise under certain frequency bands or constraints. \n", "\n", "Additive white Gaussian noise is only one type of white noise, and [Poisson white noise](http://www.jianshu.com/p/67f909f3d0ce)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### - 权系数 (weight coefficient) \n", "\n", "GHKFilter与KalmanFilter的主要区别就在于权系数的获得数学方法不同。GHKFilter的权系数是被假设为常值,分别是g、h、k三个参数,对应于广义位移、广义速度、广义加速度。因此,GHKFilter具有始终不变性,它的鲁棒性显得差一些。\n", "\n", "The main difference between GHKFilter and KalmanFilter is that the mathematical methods for obtaining the weight coefficients are different. The weight coefficient of GHKFilter is assumed to be a constant value, which is three parameters of g, h, and k, corresponding to generalized displacement, generalized velocity, and generalized acceleration. Therefore, GHKFilter is always invariant and its robustness is worse." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2、先验假设 (priori hypothesis)\n", " 先验假设,就是由当前状态值根据物理模型估计下一个状态值。其估计方法为,在当前状态上加上含有不确定性的过程值,这个过程值通常就是在采样时间内发生的位移,即: \n", " A priori hypothesis is that the current state value is used to estimate the next state value based on the physical model. The estimation method is to add a process value containing uncertainty to the current state, which is usually the displacement occurring during the sampling time, ie:\n", "$$ x_{k+1}^{k}= x_{k}^{k} + \\dot x_{k}^{k}dt + random$$\n", "\n", " 状态不确定性,由当前状态不确定性和过程变化不确定性综合影响,具有线性累加性质。即: \n", " State uncertainty, which is a combination of current state uncertainty and process variation uncertainty, has a linear additive nature.\n", "$$ P_{k+1}^{k} = P_{k}^{k} + Q $$ \n", "\n", " 其中,`Q`是过程不确定,$x_{k}^{k}$是当前k时状态量,$P_{k}^{k}$是当前k时状态不确定,$x_{k+1}^{k}$是当前k时下一个状态的预估值 \n", " Where `Q` is the process uncertainty, $x_{k}^{k}$ is the current k state quantity, $P_{k}^{k}$ is the current k state uncertainty, $x_{k+ 1}^{k}$ is the estimated value of the next state at the current k" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3、后验假设 (Posterior hypothesis) \n", " 后验假设,就是在先验假设的预估计值的基础上,参考测量值大小,选取一定的加权系数,从而修正预估值得到最终下一个状态的估计值。即: \n", " A posterior hypothesis is based on the pre-estimated value of the priori hypothesis, with reference to the magnitude of the measured value, and a certain weighting coefficient is selected, thereby correcting the estimated value to obtain the estimated value of the final state.\n", "$$ x_{k+1}^{k+1} = x_{k+1}^{k} + K(z_{k+1} - x_{k+1}^{k}) $$\n", "\n", "$$ P_{k+1}^{k+1} = P_{k+1}^{k} - KHP_{k+1}^{k} $$\n", "\n", "需要说明的是,此处`K`就是权系数,$x_{k+1}^{k+1}$是k时下一状态实际估计值, $P_{k+1}^{k+1}$是k时下一状态不确定性 \n", "It should be noted that here `K` is the weight coefficient, $x_{k+1}^{k+1}$ is the actual estimated value of the next state when k, $P_{k+1}^{k+1} The next state uncertainty when $ is k" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 一个例子 (Example):\n", " *本例中,为了简化,将加速度设为0,即只需GH两个参数*\n", " \n", " *In this example, for simplification, the acceleration is set to 0, that is, only two parameters of GH are required*" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#定义GHfilter过程函数\n", "def g_h_filter(data, x0, dx, g, h, dt=1.):\n", " x_est = x0\n", " results = []\n", " for z in data:\n", " #prediction step\n", " x_pred = x_est + (dx*dt)\n", " dx = dx\n", "\n", " # update step\n", " residual = z - x_pred\n", " dx = dx + h * (residual) / dt\n", " x_est = x_pred + g * residual \n", " results.append(x_est) \n", " return np.array(results)\n", "\n", "\n", "#定义数据生成函数,实际上,这就是现实生活之中,传感器所测量得到的数据,由于存在白噪声,此处就拟合生成了一个存在白噪声的信号\n", "def gene_data(x0, dx, count, noise_factor, accel=0.):\n", " z=[]\n", " for i in range(count):\n", " z.append(x0 + dx*i + randn()*noise_factor)\n", " dx += accel\n", " return np.array(z)\n", "\n", "\n", "np.random.seed(100)\n", "\n", "\n", "\n", "#获得数据的测量值数组,数据生成由:确信的初始位置x0、速度dx,过程加速度accel、位置噪音系数noise_factor。\n", "measurements = gene_data(x0=5., dx=5., count=20, noise_factor=50, accel=0.) \n", "\n", "#获得三组不同GHfilter的估计值数组,数据生成由:测量值,确信的初始位置x0、速度dx,采样时间dt,以及滤波器性能参数 g、h\n", "data1 = g_h_filter(data=measurements, x0=0., dx=5., dt=1., g=0.1, h=0.01)\n", "data2 = g_h_filter(data=measurements, x0=0., dx=5., dt=1., g=0.4, h=0.01)\n", "data3 = g_h_filter(data=measurements, x0=0., dx=5., dt=1., g=0.8, h=0.01)\n", "\n", "#画图\n", "with book_plots.figsize(y=4):\n", " book_plots.plot_measurements(measurements, lw=1, color='k')\n", " book_plots.plot_filter(data1, label='g=0.1', marker='s')\n", " book_plots.plot_filter(data2, label='g=0.4', marker='v')\n", " book_plots.plot_filter(data3, label='g=0.8', lw=2)\n", " plt.legend(loc=4)\n", " #book_plots.set_limits([20,40], [50, 250]) #g=0.2 and h=0.02, initial gusse for x to be 5\n", "#plot_g_h_results(measurements, data)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*我们可以由图发现,当参数g不断增大的时候,滤波器更加偏向于相信测量值,而此时测量值的噪音相比于预估计较大,因此,g越大估计器的性能越不好。同\n", "理,h也有类似的特性。*\n", "\n", "*We can see from the graph that when the parameter g keeps increasing, the filter is more inclined to believe the measured value, and the noise of the measured value is larger than the pre-estimation. Therefore, the larger the g, the worse the performance of the estimator. Similarly, h has similar characteristics.*" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nhtbrwguR2sgAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "zs = np.linspace(0, 1, 50) # 假设一组测量无噪声的测量值\n", "\n", "#对照分析不同参数的GHfilter有着怎么样的初始性能\n", "data1 = g_h_filter(data=zs, x0=0, dx=0., dt=1., g=.2, h=0.05) #初速度为零,恰好与实际速度接近。虽速度修正系数h较小不能快速变化,也不碍整体性能\n", "data2 = g_h_filter(data=zs, x0=0, dx=2., dt=1., g=.2, h=0.05) #初速度远离于实际速度,速度修正系数h又小,速度难以修正到准确值,整体动态性能差\n", "data3 = g_h_filter(data=zs, x0=0, dx=2., dt=1., g=.2, h=0.5) #初速度远离于实际速度,但速度修正系数h大,速度相比较快得到修正,整体动态性能向好\n", "\n", "book_plots.plot_measurements(zs)\n", "book_plots.plot_filter(data1, label='dx=0, h=0.05')\n", "book_plots.plot_filter(data2, label='dx=2, h=0.05', marker='v')\n", "book_plots.plot_filter(data3, label='dx=2, h=0.5', marker='s')\n", "plt.legend(loc=1);\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.3" } }, "nbformat": 4, "nbformat_minor": 2 }