📄 bayesflt_8hpp-source.html
字号:
00510 <span class="comment"> Updates x(k|k), X(k|k)</span>00511 <span class="comment"> */</span>00512 00513 <span class="comment">// Minimum allowable reciprocal condition number for PD Matrix factorisations</span><a name="l00514"></a><a class="code" href="classBayesian__filter_1_1Kalman__state__filter.html#o1">00514</a> <a class="code" href="classBayesian__filter_1_1Numerical__rcond.html">Numerical_rcond</a> <a class="code" href="classBayesian__filter_1_1Kalman__state__filter.html#o1">rclimit</a>;00515 };00516 00517 00518 <span class="comment">/*</span>00519 <span class="comment"> * Information State Filter - Abstract filtering property</span>00520 <span class="comment"> * Linear filter information space representation for 1st (mean) and 2nd (covariance) moments of a distribution</span>00521 <span class="comment"> * Y = inv(X) Information</span>00522 <span class="comment"> * y = Y*x Information state</span>00523 <span class="comment"> */</span>00524 <a name="l00525"></a><a class="code" href="classBayesian__filter_1_1Information__state__filter.html">00525</a> <span class="keyword">class </span><a class="code" href="classBayesian__filter_1_1Information__state__filter.html">Information_state_filter</a> : <span class="keyword">virtual</span> <span class="keyword">public</span> <a class="code" href="classBayesian__filter_1_1Bayes__filter__base.html">Bayes_filter_base</a>00526 {00527 <span class="keyword">public</span>:00528 <a class="code" href="classBayesian__filter_1_1Information__state__filter.html#a0">Information_state_filter</a> (size_t x_size);<a name="l00529"></a><a class="code" href="classBayesian__filter_1_1Information__state__filter.html#o0">00529</a> FM::Vec <a class="code" href="classBayesian__filter_1_1Information__state__filter.html#o0">y</a>; <span class="comment">// Information state</span><a name="l00530"></a><a class="code" href="classBayesian__filter_1_1Information__state__filter.html#o1">00530</a> FM::SymMatrix <a class="code" href="classBayesian__filter_1_1Information__state__filter.html#o1">Y</a>; <span class="comment">// Information</span>00531 00532 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classBayesian__filter_1_1Information__state__filter.html#a1">init_yY</a> () =0;00533 <span class="comment">/* Initialise from a information state and information</span>00534 <span class="comment"> Requires y(k|k), Y(k|k)</span>00535 <span class="comment"> Parameters that reference the instance's y and Y members are valid</span>00536 <span class="comment"> */</span>00537 <span class="keywordtype">void</span> <a class="code" href="classBayesian__filter_1_1Information__state__filter.html#a2">init_information</a> (<span class="keyword">const</span> FM::Vec& y, <span class="keyword">const</span> FM::SymMatrix& Y);00538 <span class="comment">/* Initialise from a information state and information</span>00539 <span class="comment"> Parameters that reference the instance's y and Y members are valid</span>00540 <span class="comment"> */</span>00541 00542 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classBayesian__filter_1_1Information__state__filter.html#a3">update_yY</a> () =0;00543 <span class="comment">/* Update filters information state and information</span>00544 <span class="comment"> Updates y(k|k), Y(k|k)</span>00545 <span class="comment"> */</span>00546 };00547 00548 00549 <span class="comment">/*</span>00550 <span class="comment"> * Linearizable filter models - Abstract filtering property</span>00551 <span class="comment"> * Linrz == A linear, or gradient Linearized filter</span>00552 <span class="comment"> *</span>00553 <span class="comment"> * Predict uses a Linrz_predict_model that maintains a Jacobian matrix Fx and addative noise</span>00554 <span class="comment"> * NOTE: Functional (non-stochastic) predict is NOT possible as predict requires Fx.</span>00555 <span class="comment"> *</span>00556 <span class="comment"> * Observe uses a Linrz_observe_model and a variable size observation (z)</span>00557 <span class="comment"> * There are two variants for correlated and uncorrelated observation noise</span>00558 <span class="comment"> * Derived filters supply the init,predict,observe,update functions and determine</span>00559 <span class="comment"> * the algorithm used to implement the filter.</span>00560 <span class="comment"> */</span>00561 <a name="l00562"></a><a class="code" href="classBayesian__filter_1_1Linrz__filter.html">00562</a> <span class="keyword">class </span><a class="code" href="classBayesian__filter_1_1Linrz__filter.html">Linrz_filter</a> : <span class="keyword">virtual</span> <span class="keyword">public</span> <a class="code" href="classBayesian__filter_1_1Bayes__filter__base.html">Bayes_filter_base</a>00563 { 00564 <span class="keyword">public</span>:00565 <span class="comment">/* Virtual functions for filter algorithm */</span>00566 00567 <span class="keyword">virtual</span> <a class="code" href="classBayesian__filter_1_1Bayes__base.html#w0">Float</a> <a class="code" href="classBayesian__filter_1_1Linrz__filter.html#a0">predict</a> (<a class="code" href="classBayesian__filter_1_1Linrz__predict__model.html">Linrz_predict_model</a>& f) = 0;00568 <span class="comment">/* Predict state using a Linrz model</span>00569 <span class="comment"> Requires x(k|k), X(k|k) or internal equivilent</span>00570 <span class="comment"> Returns: Reciprocal condition number of primary matrix used in predict computation (1. if none)</span>00571 <span class="comment"> */</span>00572 00573 <span class="keyword">virtual</span> <a class="code" href="classBayesian__filter_1_1Bayes__base.html#w0">Float</a> <a class="code" href="classBayesian__filter_1_1Linrz__filter.html#a1">observe</a> (<a class="code" href="classBayesian__filter_1_1Linrz__uncorrelated__observe__model.html">Linrz_uncorrelated_observe_model</a>& h, <span class="keyword">const</span> FM::Vec& z) = 0;00574 <span class="keyword">virtual</span> <a class="code" href="classBayesian__filter_1_1Bayes__base.html#w0">Float</a> <a class="code" href="classBayesian__filter_1_1Linrz__filter.html#a1">observe</a> (<a class="code" href="classBayesian__filter_1_1Linrz__correlated__observe__model.html">Linrz_correlated_observe_model</a>& h, <span class="keyword">const</span> FM::Vec& z) = 0;00575 <span class="comment">/* Observation z(k) and with (Un)correlated observation noise model</span>00576 <span class="comment"> Requires x(k|k), X(k|k) or internal equivilent</span>00577 <span class="comment"> Returns: Reciprocal condition number of primary matrix used in observe computation (1. if none)</span>00578 <span class="comment"> */</span>00579 };00580 00581 00582 <span class="comment">/*</span>00583 <span class="comment"> * Linearizable Kalman Filter</span>00584 <span class="comment"> * Kalman state representation and linearizable models</span>00585 <span class="comment"> *</span>00586 <span class="comment"> * Common abstration for many linear filters</span>00587 <span class="comment"> * Has a virtual base to represent the common state</span>00588 <span class="comment"> */</span><a name="l00589"></a><a class="code" href="classBayesian__filter_1_1Linrz__kalman__filter.html">00589</a> <span class="keyword">class </span><a class="code" href="classBayesian__filter_1_1Linrz__kalman__filter.html">Linrz_kalman_filter</a> : <span class="keyword">public</span> <a class="code" href="classBayesian__filter_1_1Linrz__filter.html">Linrz_filter</a>, <span class="keyword">virtual</span> <span class="keyword">public</span> <a class="code" href="classBayesian__filter_1_1Kalman__state__filter.html">Kalman_state_filter</a>00590 {00591 <span class="keyword">protected</span>:<a name="l00592"></a><a class="code" href="classBayesian__filter_1_1Linrz__kalman__filter.html#b0">00592</a> <a class="code" href="classBayesian__filter_1_1Linrz__kalman__filter.html#b0">Linrz_kalman_filter</a>() : <a class="code" href="classBayesian__filter_1_1Kalman__state__filter.html">Kalman_state_filter</a>(0) <span class="comment">// define a default constructor</span>00593 {}00594 };00595 00596 00597 <span class="comment">/*</span>00598 <span class="comment"> * Extended Kalman Filter</span>00599 <span class="comment"> * Kalman state representation and linearizable models</span>00600 <span class="comment"> *</span>00601 <span class="comment"> * Observe is implemented using an innovation computed from the non-linear part of the</span>00602 <span class="comment"> * obseve model and linear part of the Linrz_observe_model</span>00603 <span class="comment"> *</span>00604 <span class="comment"> * Common abstration for many linear filters</span>00605 <span class="comment"> * Has a virtual base to represent the common state</span>00606 <span class="comment"> */</span><a name="l00607"></a><a class="code" href="classBayesian__filter_1_1Extended__kalman__filter.html">00607</a> <span class="keyword">class </span><a class="code" href="classBayesian__filter_1_1Extended__kalman__filter.html">Extended_kalman_filter</a> : <span class="keyword">public</span> <a class="code" href="classBayesian__filter_1_1Linrz__kalman__filter.html">Linrz_kalman_filter</a>00608 {00609 <span class="keyword">protected</span>:<a name="l00610"></a><a class="code" href="classBayesian__filter_1_1Extended__kalman__filter.html#b0">00610</a> <a class="code" href="classBayesian__filter_1_1Extended__kalman__filter.html#b0">Extended_kalman_filter</a>() : <a class="code" href="classBayesian__filter_1_1Kalman__state__filter.html">Kalman_state_filter</a>(0) <span class="comment">// define a default constructor</span>00611 {}00612 <span class="keyword">public</span>:00613 <span class="keyword">virtual</span> <a class="code" href="classBayesian__filter_1_1Bayes__base.html#w0">Float</a> <a class="code" href="classBayesian__filter_1_1Extended__kalman__filter.html#a0">observe</a> (Linrz_uncorrelated_observe_model& h, <span class="keyword">const</span> FM::Vec& z);00614 <span class="keyword">virtual</span> <a class="code" href="classBayesian__filter_1_1Bayes__base.html#w0">Float</a> <a class="code" href="classBayesian__filter_1_1Extended__kalman__filter.html#a0">observe</a> (Linrz_correlated_observe_model& h, <span class="keyword">const</span> FM::Vec& z);00615 <span class="comment">/* Observation z(k) and with (Un)correlated observation noise model</span>00616 <span class="comment"> Requires x(k|k), X(k|k) or internal equivilent</span>00617 <span class="comment"> Returns: Reciprocal condition number of primary matrix used in observe computation (1. if none)</span>00618 <span class="comment"> Default implementation simple computes innovation for observe_innovation</span>00619 <span class="comment"> */</span>00620 00621 <span class="keyword">virtual</span> <a class="code" href="classBayesian__filter_1_1Bayes__base.html#w0">Float</a> <a class="code" href="classBayesian__filter_1_1Extended__kalman__filter.html#a2">observe_innovation</a> (Linrz_uncorrelated_observe_model& h, <span class="keyword">const</span> FM::Vec& s) = 0;00622 <span class="keyword">virtual</span> <a class="code" href="classBayesian__filter_1_1Bayes__base.html#w0">Float</a> <a class="code" href="classBayesian__filter_1_1Extended__kalman__filter.html#a2">observe_innovation</a> (Linrz_correlated_observe_model& h, <span class="keyword">const</span> FM::Vec& s) = 0;00623 <span class="comment">/* Observation innovation s(k) and with (Un)correlated observation noise model</span>00624 <span class="comment"> Requires x(k|k), X(k|k) or internal equivilent</span>00625 <span class="comment"> Returns: Reciprocal condition number of primary matrix used in observe computation (1. if none)</span>00626 <span class="comment"> */</span>00627 };00628 00629 00630 <span class="comment">/*</span>00631 <span class="comment"> * Sample State Filter - Abstract filtering property</span>00632 <span class="comment"> *</span>00633 <span class="comment"> * Probability distributions are represted by a finite sampling</span>00634 <span class="comment"> *</span>00635 <span class="comment"> * State (x_size) size and its sampling (s_size) are assumed to remain constant.</span>00636 <span class="comment"> * The state sampling public so they can be directly manipulated.</span>00637 <span class="comment"> * init: Should be used if they to be altered</span>00638 <span class="comment"> * updat
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -