⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bayes++.html

📁 良好的代码实现
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><HTML><HEAD>	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">	<TITLE>Bayes++ Bayesian Filtering</TITLE>	<LINK REL="stylesheet" HREF="Deployment/paper.css" TYPE="text/css"></HEAD><H1 ALIGN=CENTER><U>Bayes++</U></H1><H1 ALIGN=CENTER><B>Open Source Bayesian Filtering Classes</B></H1><H2 ALIGN=CENTER>Michael Stevens</H2><P STYLE="margin-bottom: 0cm"><BR></P><CENTER>	<TABLE WIDTH=100% BORDER=5 CELLPADDING=0 CELLSPACING=4 BGCOLOR="#c0c0c0">		<TR VALIGN=TOP>			<TD WIDTH=368 HEIGHT=48>				<H2><A HREF="Bayesian Filtering Classes.html">Bayesian Filtering</A></H2>				<P>Overview of Bayesian filtering with the Filtering Classes				</P>			</TD>			<TD WIDTH=330>				<H2 ALIGN=RIGHT><A HREF="mailto:mail@michael-stevens.de">mail@michael-stevens.de</A></H2>				<H2 ALIGN=RIGHT><A HREF="http://www.acfr.usyd.edu.au/">Australian				Centre for Field Robotics</A></H2>			</TD>		</TR>		<TR VALIGN=TOP>			<TD WIDTH=368>				<H3><A HREF="ClassDocumentation/html/index.html">Documentation				generated by Doxygen</A></H3>				<BLOCKQUOTE><A HREF="ClassDocumentation/html/classBayesian__filter_1_1Bayes__filter__base.html">Filter				hierarchy</A><BR><A HREF="ClassDocumentation/html/classBayesian__filter_1_1Predict__model__base.html">Prediction				models</A> and <A HREF="ClassDocumentation/html/classBayesian__filter_1_1Observe__model__base.html">Observation				models</A><BR><BR><A HREF="ClassDocumentation/html/functions.html">Class				members</A> and <A HREF="ClassDocumentation/html/files.html">File				list of Bayes++</A>				</BLOCKQUOTE>			</TD>			<TD WIDTH=330>				<H3 ALIGN=RIGHT><A NAME="download"></A><A HREF="http://sourceforge.net/projects/bayesclasses/">Project				Summary</A> and <A HREF="http://sourceforge.net/project/showfiles.php?group_id=54729">Download</A></H3>				<P ALIGN=RIGHT><A NAME="CVS_Repository"></A><IMG SRC="http://sourceforge.net/sflogo.php?group_id=54729&amp;type=5" NAME="Grafik1" ALT="SourceForge Logo" ALIGN=TOP WIDTH=120 HEIGHT=40 BORDER=0>				<A HREF="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/bayesclasses">CVS				Repository</A><BR>Bayes++ uses the <A HREF="http://www.boost.org/" TARGET="_top"><FONT SIZE=5>Boost</FONT></A><BR>peer-reviewed				portable C++ source libraries</P>			</TD>		</TR>	</TABLE></CENTER><P ALIGN=LEFT>      Bayesian Filtering is a probabilistic technique for data fusion. The technique combines a concise mathematical formulation of a system with observations of that system. Probabilities are used to represent the state of a system, likelihood functions to represent their relationships. In this form Bayesian inference can be applied and further related probabilities deduced. See <A HREF="http://www.wikipedia.org/">Wikipedia</A> for information on <A HREF="http://www.wikipedia.org/wiki/Probability_theory">Probabilitytheory</A>, <A HREF="http://www.wikipedia.org/wiki/Bayes'_theorem">Bayestheorem</A>, <A HREF="http://www.wikipedia.org/wiki/Bayesian_inference">BayesianInference</A>.</P><P ALIGN=LEFT>For <U>discrete</U> systems the Bayesian formulationresults in a naturally iterative data fusion solution. For <U>dynamic</U>systems there is a class of solutions, discrete <U>filters</U>, that combine observed outputs of the system with the system's dynamic model. An <U>estimator</U> computes a estimate of the systems state with each observationof the system. Linear estimators such as the Kalman Filter are commonly applied.</P><P ALIGN=LEFT>Bayes++ is an open source library of C++ classes. Theseclasses represent and implement a wide variety of numericalalgorithms for Bayesian Filtering of discrete systems. The classesprovide tested and consistent numerical methods and the classhierarchy explicitly represents the variety of filtering algorithmsand system model types.</P><H2>Simple Example</H2><P>This is very simple example; for those who have never used theBayesian Filtering Classes before. If you wish to see how simple itis to use Bayes++ then <A HREF="Simple/simpleExample.cpp">View theSource</A>.</P><P>The example shows how two classes are created. The first is theprediction model, the second the observation model. In this examplethey represent a simple linear problem with only one state variableand constant model noises. A filter fuses the results of predictionand observation.</P><P>Compiling the Examples</P><P>First <A HREF="#download">download</A> and extract <B>Bayes++</B>and also the <B>Boost</B> library. <B>Boost</B> is used to providecompiler independence, and a common build system. Two Boost headerlibraries are used: <B>uBLAS</B> for linear algebra, and <B>random</B>for the PV and QuadCalib examples. The Boost headers can be placedanywhere relative to Bayes++, but it is easy if you follow thisstructure:</P><DL>	<DD><DL>		<DT><EM>...sourceDirectory</EM></DT>		<DD><DL>			<DT>Bayes++</DT>				<DD>BayesFilter</DD>				<DD>PV</DD>				<DD>QuadCalib</DD>				<DD>Simple</DD>				<DD>Test</DD>		</DL></DD>		<DD><DL>			<DT>boost_1_33_0</DT>				<DD>boost</DD>				<DD><I>etc</I></DD>		</DL></DD>	</DL></DD></DL><P>Using the Boost Build system is the best way to compile the examples.This uses the <B>bjam</B> (Boost jam) program to compute dependenciesand invoke the compiler. The documentation in your downloaded copy ofBoost explains how to obtain bjam and the sources to compile ityourself. For everything to work <B>bjam</B> must be placed in thepath. <BR>To build Bayes++ and the examples simply execute: (Bayes++should be the current directory)</P><PRE STYLE="margin-bottom: 0.5cm">        bjam -sBOOST_ROOT=&quot;../boost_1_33_0&quot;</PRE><P>If there is more then one toolsets (compiler etc) available you maywant to tell bjam which to use. For example to use Visual C++ 7.1execute:</P><PRE STYLE="margin-bottom: 0.5cm">        bjam -sTOOLS=vc-7_1 -sBOOST_ROOT=&quot;../boost_1_33_0&quot;</PRE><P>It is possible to drop the BOOST_ROOT variable by either creating a<B>bin/lib</B>. The <B>bin </B>directory and its subdirectories arecreated automatically. See the <A HREF="Bayesian Filtering Classes.html">BayesianFiltering classes</A> overview for a description of the classes andall three examples.</P><H4>Visual C++ solution</H4><P>For Visual C++ 7.1 you can also use the <B>Bayes++.sln</B> solutionand the active configuration <B>uBLAS Debug</B>. The compiler optionsmust be set so the <B>Boost</B> include files can be found. That is,the <U>include path</U> must contain the base directory of Boost. Inthis case the local <B>boost</B> directory. In VC7.1 you should dothis by choosing the <I>Tools/Options/Projects/VC++ Directories</I>option.</P><H2>Licensing</H2><P>All Bayes++ source code files are copyright with the licenseconditions as given here. The copyright notice is that of the MITlicense. This in no way restricts any commercial use you may wish tomake using our source code. As long as you respect the copyright andlicense conditions, Michael Stevens and the Australian Centre forField Robotics are happy to for you to use it in any way you wish.</P><P>Bayes++ the Bayesian Filtering Library</P><P>Copyright (c) 2003,2004,2005 Michael Stevens, Copyright (c) 2002Michael Stevens and Australian Centre for Field Robotics</P><P>Permission is hereby granted, free of charge, to any personobtaining a copy of this software and associated documentation files(the &quot;Software&quot;), to deal in the Software withoutrestriction, including without limitation the rights to use, copy,modify, merge, publish, distribute, sublicense, and/or sell copies ofthe Software, and to permit persons to whom the Software is furnishedto do so, subject to the following conditions:</P><P>The above copyright notice and this permission notice shall beincluded in all copies or substantial portions of the Software.</P><P>THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OFANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THEWARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE ANDNON INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERSBE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN ANACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR INCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THESOFTWARE.</P><H2>SLAM : Simultaneous Localization and Mapping</H2><P>SLAM is one of the most interesting problems in Bayesianfiltering. It's structure implies that it cannot be correctly solvedwithout using stochastic approach. This is due to mapped states beingdependent on other mapped states and the localization state. Thisdependence also make the problem complex, therefore a simple approachsuch as representing all correlations is not tractable for largenumbers of states.</P><P>Bayes++ has been used to implement various simple and some moreadvanced SLAM solutions. In particular a full implementation ofFastSLAM has been implemented. This technique is described in thepaper &quot;FastSLAM : Factored Solution to the SimultaneousLocalization and Mapping Problem&quot;, M. Montemerlo, S. Thrun S, D.Koller, B. Wegbreit, Proceedings of the AAAI National Conference onArtificial Intelligence 2002.</P><P>The Bayes++ implementation of FastSLAM and a very simple Kalman(full correlation) SLAM implementation is available as part of themost recent <A HREF="#download">download</A>.</P><H2>Scilab, Matlab, MuPAD</H2><P>These mathematical tools are particularly useful for visualisingfiltering results. However they are all rather slow, and it is veryeasy to produce very poorly implemented filters in their programminglanguages. Fortunately all these tools provide mechanisms forextension with external programs. Example interface code is providedin the <A HREF="#CVS_Repository">Bayes++ CVS repository</A> forMatlab and MuPAD. An interface to Scilab is not yet available.</P><H2>Portability</H2><P>Bayes++ only makes use of ISO standard C++. The source code usesmoderately advance C++ constructs. It only makes restricted use ofthe C++ template system directly. However the Boost libraries used(in particular uBLAS) make extensive use of template techniques.Boost also includes many workarounds for compiler deficiencies.Therefore with few alterations Bayes++ should work with any modernC++ compiler supported by Boost.</P><P>Bayes++ is tested with: <B>Boost 1.33.0</B></P><P>Bayes++ is tested with: <B>GCC 3.3.5</B>, <B>GCC 3.4.4, <B>GCC 4.0.0</B>,<B>VisualC++ 7.1</B> and <B>IntelC++ 8.1</B></P><P>Later versions of GCC 3.x and GCC 4.x should also run Bayes++ with ease.However GCC 3.3.0 is know to be incompatible with uBLAS and toproduce incorrect code with -O2 optimization.</P><P>VisualC++ 7.1 often requiresthe /Zm option to be used so it can compile complex headers.</P><H2>Release Criteria</H2><P>This releases is validated using the compilers and Boost versionslisted above using the following tests.</P><OL><LI><P>Build system: Compatibility with both Boost Build version 1and version 2.<BR>Successfully complete <B>bjam</B> to build defaultlibraries and examples.<BR>Successfully complete <B>bjam</B> to buildSLAM system.</P><LI><P>Test examples: simpleExample, PV, QuadCalib <BR>Compile debugand release builds (using Boost Build version 2) :- with no errorsand no warnings.<BR>Execution output :- Identical to expectedreference results.</P><LI><P>Numerical tests: rtheta - Range angle observer.<BR>Anon-linear range angle observer test. The observer moves in a 2dimensional state space. Motion prediction occurs with a linearmodel with additive noise. The two states are coupled both in themodel and in additive noise. Range and angle of a fixed target isobserved. The target is placed so discontinues angles areobserved.<BR>Both the state and the observations have additional nonobserved (singular) states. Model sizes, coupling parameters andmodel types can be varied for additional tests. All schemes aretested over 5 iterations of the model. The SIR scheme istested with 1000 samples.<BR>Because the different numerical

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -