bayesclasses-general Mailing List for Bayes+Estimate (Page 5)
Brought to you by:
mistevens
You can subscribe to this list here.
2004 |
Jan
(2) |
Feb
(2) |
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
(2) |
Feb
(4) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(14) |
Oct
(6) |
Nov
|
Dec
|
2006 |
Jan
(1) |
Feb
|
Mar
(1) |
Apr
(2) |
May
(2) |
Jun
|
Jul
(2) |
Aug
(1) |
Sep
|
Oct
|
Nov
(15) |
Dec
(5) |
2007 |
Jan
(10) |
Feb
(4) |
Mar
(1) |
Apr
|
May
(8) |
Jun
|
Jul
|
Aug
|
Sep
(11) |
Oct
(2) |
Nov
(1) |
Dec
|
2008 |
Jan
|
Feb
(5) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(2) |
Sep
|
Oct
(2) |
Nov
(1) |
Dec
|
2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(3) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2010 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2012 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(2) |
Oct
|
Nov
|
Dec
|
2014 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
2015 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
2017 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2021 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
(1) |
Dec
|
2022 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
From: Michael S. <ma...@mi...> - 2005-09-24 09:20:59
|
On Freitag 23 September 2005 20:01, Baskar Jayaraman wrote: > Hi Michael, I am trying to use bayes++ for solving a linear state > estimation problem using (i) a direct kalman filter and (ii) indirect error > filter. I am getting different results. Indirect error filter appears to > produce better results. To understand the results better, do you have a > reference for this filter? I assume you are refereing to the indirect error filter as implemented in 'BayesFilter/filters/indirect.hpp' ? For a linear problem the results should be mathematically identical. The numerics may be slightly different particularly if your problem is scaled badly so that very large and small numbers are added. This seems unlikely in your model. With regard to references I think the most common Book reference is: Maybeck, P., 1979, "Stochastic models, estimation, and control" Volume 1, Academic Press, New York. Google 'indriect kalman filter' comes up with a number of papers although I could not find anything which gives a good introduction. > Also, if you know of any user discussion group > for bayes++ please let me know so that I can learn from other people's > experience. There is a 'bay...@li...' ML which I have forwarded my reply to. > FYI, the model of my system is > x1(k+1) = x1(k) + u1(k)-u2(k)+w1(k) > x2(k+1) = x2(k) + u2(k)-u3(k)+w2(k) > y(k) = x1(k) + x2(k) + v(k) > w1,w2,v are noises. u1, u2, u3 are control actions. y is the observation > and I need to estimate the two states x1 and x2. The problem is somewhat > tricky because there are some errors in the control actions u1,u2,u3 > because of actuator errors. for example, I tell the control system to > implement a control action of value of say 5 but what really goes into the > process is something else, say 6. I am modeling these errors as being > included in w1 and w2. Looks fine, Michael -- ___________________________________ Michael Stevens Systems Engineering 34128 Kassel, Germany Phone/Fax: +49 561 5218038 Navigation Systems, Estimation and Bayesian Filtering http://bayesclasses.sf.net ___________________________________ |
From: Michael S. <ma...@mi...> - 2005-09-24 08:50:06
|
On Mittwoch 21 September 2005 00:09, you wrote: > Great work! :) > > I have also been unable to find a method for generating samples from the > models. It would have been great to be able to get samples with desired > covariance, based on prediction- and observation models. Typical usage > would be to simulate a process, and to generate observations from it. There is a Gaussian sampler as a helper class for in the SIR filter. In "SIRFlt.hpp" I define the class template 'Sampled_general_predict_model' and the two predefine classes 'Sampled_LiAd_predict_model' 'Sampled_LiInAd_predict_model'. These convert Linear or Linrz predict models into 'Sampled_predict' models. You define the Gaussian covaiance by the values of G and q in the predict model. This is much the same as your 'SampleCorelated' function. Except I think I have the spelling correct in this case :-) In the case of observation models Bayes++ has model generalisers in "models.hpp". For example 'General_LiUnAd_observe_model' generalises a Linear Uncorrelated Addative noise observe model. The generalised model is also a 'Likelihood_observe_model' and so the likelihood of a state given an obervation can be computed with the 'L' function. This allows you to use a Gaussian noise models to resample, for example in the 'SIR_scheme'. Best regard, and thanks for the feedback, Michael -- ___________________________________ Michael Stevens Systems Engineering 34128 Kassel, Germany Phone/Fax: +49 561 5218038 Navigation Systems, Estimation and Bayesian Filtering http://bayesclasses.sf.net ___________________________________ |
From: Fredrik O. <fre...@id...> - 2005-09-22 14:05:20
|
What about removing the uBLAS-wrappings found in (matSubSup.hpp & uBLASmatrix.hpp), and instead use uBLAS natively in Bayes++? Advantages: 1: Easier integration with other linear-algebra projects, since "ublas::vector<T>" and "ublas::matrix<T>" could be used consistently through the project, yielding more consistent and easier to read sourcecode. (I know Vec/Mat inherits their uBLAS counterparts, so this is not strictly neccesary; but it would still yield more consistent code.) 2: IntelliSense code-completion in Visual-Studio does not work for Vec/Mat in Bayes++, due to all the wrappings. Programming would be more productive if code-completion would work. Disadvantages: 1: One would loose the matrix-library neutrality, but is this really that importaint? It seems to me like uBLAS has established itself as "the" lin-alg lib for C++. mvh. Fredrik Orderud |
From: Fredrik O. <fre...@id...> - 2005-09-20 11:21:50
|
Hi, I've began examining Bayes++ for the past few weeks, and find it most interesting. However, I've discovered a couple of (possible) flaws in the code, namely: 1: "Bayes++\Test\random.hpp" Seeding for the random number generator does not seem to work. This is probable due to the lack of a seed value. Consider seeding the RNG with the result of a "time(0)" call (defined in <time.h>), or simmilar. 2: "Definite" spelling "Definite" in "positive semi definite" seems to be consistently spelled wrong (definate) regards. Fredrik Orderud |
From: Nicola B. <nb...@es...> - 2005-09-15 19:32:19
|
Hi, I'm implementing a linearized model with "Linrz_predict_model" and I would like to update at every step the Jacobian Fx, for which I need the previous estimated state. I wonder then if I can do that inside the "Linrz_predict_model::f(const FM::Vec &x)", called automatically by the filter. Cheers Nicola -- ------------------------------------------ Nicola Bellotto University of Essex Department of Computer Science Wivenhoe Park Colchester CO4 3SQ United Kingdom Room: 1N1.2.8 Tel. +44 (0)1206 874094 E-Mail: nb...@es... URL: http://privatewww.essex.ac.uk/~nbello ------------------------------------------ |
From: Nicola B. <nb...@es...> - 2005-09-14 12:25:27
|
On Wednesday 14 Sep 2005 10:07, Michael Stevens wrote: > I hope this helps. I always ask. What are you using Bayes++ for? Thanks for the answer. I thought it was like that indeed, but I wasn't completely sure. I'm using Bayes++ for tracking people with a PTZ camera and a SICK laser mounted on a mobile robot (PeopleBot). I want to try different approaches of data fusion, starting from an EKF and then others filters, without having to rewrite the whole code every time. Bayes++ seems to be a good solution :) May I give just a couple of suggestions: - a link to this mailing-list on the main page of the website would increase the number of users; - the same effect would have an improvement of the documentation. As I wrote in a previous email, I noticed the sources are rich of useful comments which unfortunately are not included in the doxygen documentation. Of course, I'm available if some help is needed, and so are probably other users. Regards, Nicola -- ------------------------------------------ Nicola Bellotto University of Essex Department of Computer Science Wivenhoe Park Colchester CO4 3SQ United Kingdom Room: 1N1.2.8 Tel. +44 (0)1206 874094 E-Mail: nb...@es... URL: http://privatewww.essex.ac.uk/~nbello ------------------------------------------ |
From: Michael S. <ma...@mi...> - 2005-09-14 09:07:48
|
On Dienstag 13 September 2005 16:04, Nicola Bellotto wrote: > Hi, > I'm using a "Linear_predict_model" (but this is related also to other > models...) for implementing an EKF and there's something I cannot > understand. In the "bayesFlt.hpp" is reported that the vector "q" is the > covariance of the state noise w(k)... but isn't such a covariance a > symmetric matrix (normally called "Q")? So, if I wanna represent my > covariance Q, how should I do? > Hope to get some feedback soon. G and q together represent the process (predict) noise. q is the noise=20 variance (a vector) and G is the noise coupling. In this case the process model is=20 =A0=A0=A0=A0=A0=A0=A0=A0x(k+1) =3D f(x(k)) + G.q(k) where q(k) in Gaussian white noise with variance q This leads to a Kalman filter covariance update for the linear case =A0=A0=A0=A0=A0=A0=A0=A0X(k+1) =3D F.X(k).F' + G.q.G' This is equivalent to =A0=A0=A0=A0=A0=A0=A0=A0X(k+1) =3D F.X(k).F' + Q where Q =3D G.q.G' The are a couple of reasons for expressing the process noise in this way. a) For factorised filters (such as the UD_scheme) it is in the perfect form b) The same noise is often additive to more then one element of the state. = In=20 this case the size of q is less then x and G provides a physically easily=20 interpreted of how the elements of q effect x. I hope this helps. I always ask. What are you using Bayes++ for? Michael =2D-=20 ___________________________________ Michael Stevens Systems Engineering 34128 Kassel, Germany Phone/Fax: +49 561 5218038 Navigation Systems, Estimation and Bayesian Filtering http://bayesclasses.sf.net ___________________________________ |
From: Nicola B. <nb...@es...> - 2005-09-13 14:05:07
|
Hi, I'm using a "Linear_predict_model" (but this is related also to other models...) for implementing an EKF and there's something I cannot understand. In the "bayesFlt.hpp" is reported that the vector "q" is the covariance of the state noise w(k)... but isn't such a covariance a symmetric matrix (normally called "Q")? So, if I wanna represent my covariance Q, how should I do? Hope to get some feedback soon. Cheers Nicola -- ------------------------------------------ Nicola Bellotto University of Essex Department of Computer Science Wivenhoe Park Colchester CO4 3SQ United Kingdom Room: 1N1.2.8 Tel. +44 (0)1206 874094 E-Mail: nb...@es... URL: http://privatewww.essex.ac.uk/~nbello ------------------------------------------ |
From: Nicola B. <nb...@es...> - 2005-09-09 17:30:14
|
Dear Michael, I've just started to use Bayes++ for my project. Although after spending some time on your examples I've been able to implement my own simple filter, I've found myself a little lost in the Doxygen documentation. Then I realized that inside the source files (.hpp) there are much more useful comments (/* ... */) than in the .html files generated by Doxygen. I wonder then if there's a simple way to get these comments included in the HTML documentation, which I think would be very useful in particular for beginners like me :) Cheers Nicola -- ------------------------------------------ Nicola Bellotto University of Essex Department of Computer Science Wivenhoe Park Colchester CO4 3SQ United Kingdom Room: 1N1.2.8 Tel. +44 (0)1206 874094 E-Mail: nb...@es... URL: http://privatewww.essex.ac.uk/~nbello ------------------------------------------ |
From: Lucas V. <lvi...@mi...> - 2005-02-03 03:00:49
|
Okay tweaked some and no luck, I am thoroughly confused :) ! I went through chapter 19, did the basic configuration as stated, but could not get the hello example (or any other examples) to compile Thank you for the help, Michael, Rene, and everyone. I appreciate it. ** (topic 1 ) ** Micheal and I thought maybe it's a g++ version issue... but after messing with the boost-build.jam file the errors have changed (see topic 2) g++ version: ------------------ Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/3.2/specs Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --disable-checking --host=i386-redhat-linux --with-system-zlib --enable-__cxa_atexit Thread model: posix gcc version 3.2 20020903 (Red Hat Linux 8.0 3.2-7) --------------- ** (topic 2) ** configured 'user-config.jam' --- thank you for pointing out the relevant web page Michael (I can be air headed at times :) ) all I see relevant to me is to tell it to use gcc, so I uncommented that tried following chap 19 tried setting boost_root variable in my profile tried making a boost-build.jam file set both of these attempts to the local boost (in /home/poobarr/boost_1_32_0) tried copying the Jamroot file to a 'Jamfile' file for the hell of it. tried compiling the hello example, yielding the following: ------------- /home/poobarr/boost_1_32_0/tools/build/v2/build/targets.jam:794: in object(file-reference)@1.exists rule CHECK_IF_FILE unknown in module object(file-reference)@1. /home/poobarr/boost_1_32_0/tools/build/v2/build/targets.jam:369: in find-really /home/poobarr/boost_1_32_0/tools/build/v2/build/targets.jam:401: in object(project-target)@1.find /home/poobarr/boost_1_32_0/tools/build/v2/build/targets.jam:828: in resolve-reference /home/poobarr/boost_1_32_0/tools/build/v2/build/targets.jam:847: in targets.generate-from-reference /home/poobarr/boost_1_32_0/tools/build/v2/build/targets.jam:1056: in generate-dependencies /home/poobarr/boost_1_32_0/tools/build/v2/build/targets.jam:1097: in object(typed-target)@1.generate /home/poobarr/boost_1_32_0/tools/build/v2/build/targets.jam:750: in generate-really /home/poobarr/boost_1_32_0/tools/build/v2/build/targets.jam:723: in object(main-target)@1.generate /home/poobarr/boost_1_32_0/tools/build/v2/build/targets.jam:252: in object(project-target)@1.generate /home/poobarr/boost_1_32_0/tools/build/v2/build-system.jam:160: in load /home/poobarr/boost_1_32_0/tools/build/v2/kernel/modules.jam:259: in import /home/poobarr/boost_1_32_0/tools/build/v2/kernel/bootstrap.jam:120: in boost-build /home/poobarr/boost_1_32_0/tools/build/v2/example/hello/boost-build.jam:1: in module scope ------------- took a look at boost-build.jam but, not sure where to track the problem -- or if this output is even a problem It doesn't say compilation failed, but it doesn't say anything about even calling gcc all of these examples won't compile, I am confused. It appears to be a bjam problem (note this is all being done in the hello directory, not bjam root. but I am using the '--v2' flag) And finally, after tweaking as I have, I followed Rene's advice, went to the Bayes++ directory and tried the following three commands: bjam --v2 "-sBOOST=/home/poobarr/boost_1_32_0/" (local boost) bjam --v2 "-sBOOST=/usr/local/include/boost-1_32/" (global boost install) bjam --v2 all yielding yielded ---------------------------------------- /home/poobarr/boost_1_32_0/tools/build/v2/build/targets.jam:369: in find-really /home/poobarr/boost_1_32_0/tools/build/v2/build/targets.jam:401: in object(project-target)@2.find /home/poobarr/boost_1_32_0/tools/build/v2/build/targets.jam:828: in resolve-reference /home/poobarr/boost_1_32_0/tools/build/v2/build/targets.jam:847: in targets.generate-from-reference /home/poobarr/boost_1_32_0/tools/build/v2/build/targets.jam:1056: in generate-dependencies /home/poobarr/boost_1_32_0/tools/build/v2/build/targets.jam:1097: in object(typed-target)@1.generate /home/poobarr/boost_1_32_0/tools/build/v2/build/targets.jam:750: in generate-really /home/poobarr/boost_1_32_0/tools/build/v2/build/targets.jam:723: in object(main-target)@1.generate /home/poobarr/boost_1_32_0/tools/build/v2/build/targets.jam:252: in object(project-target)@2.generate /home/poobarr/boost_1_32_0/tools/build/v2/build/targets.jam:252: in object(project-target)@1.generate /home/poobarr/boost_1_32_0/tools/build/v2/build-system.jam:160: in load /home/poobarr/boost_1_32_0/tools/build/v2//kernel/modules.jam:259: in import /home/poobarr/boost_1_32_0/tools/build/v2//kernel/bootstrap.jam:120: in boost-build /home/poobarr/boost_1_32_0/tools/build/v2//boost-build.jam:2: in module scope ------------------------------------- |
From: Michael S. <ma...@mi...> - 2005-02-02 20:01:12
|
On Wednesday 02 February 2005 19:17, Lucas Vickers wrote: > >Release versions of Bayes++ have Jamfiles for Boost Build version 1 and > >version 2. I assume you are using '2003.8-4' which is the latest stable > >release. It would be worth trying 'bjam --v2' to see if it works in your > >case. > > Yes I am using that release. > a simple 'bjam --v2' spits out: > You need to configure Boost.Build v2 first so it knows which toolset you have and which to use as a default. This is done with a 'user-config.jam'. Have look at the documentation at http://boost.org/boost-build2/ > so I tried ' bjam "--v2 -sTOOLS=gcc" ' > which is more promising but fails > > so I tried ' bjam "--v2 -sBOOST=/usr/local/include/boost-1_32/ > -sTOOLS=gcc" ' > which fails in a similar manner The -sTOOLS is not relevant to BBv2 > Okay I made sure BOOST_ROOT was set to /usr/local/include/boost-1_32/" > (it already was) > and still compilation errors Compilation errors, now we are getting somewhere! > is this an include issue or is this a g++ version issue? This is a 'g++' version issue. Which version of gcc is this? Michael -- ___________________________________ Michael Stevens Systems Engineering Navigation Systems, Estimation and Bayesian Filtering http://bayesclasses.sf.net ___________________________________ |
From: Lucas V. <lvi...@mi...> - 2005-02-02 18:17:56
|
>Release versions of Bayes++ have Jamfiles for Boost Build version 1 and >version 2. I assume you are using '2003.8-4' which is the latest stable >release. It would be worth trying 'bjam --v2' to see if it works in your >case. > > > Yes I am using that release. a simple 'bjam --v2' spits out: --------------------- /home/poobarr/boost_1_32_0/tools/build/v2/build/feature.jam:431: in feature.validate-value-string from module feature error: "gcc" is not a known value of feature <toolset> error: legal values: /home/poobarr/boost_1_32_0/tools/build/v2/build/property.jam:249: in validate1 from module property /home/poobarr/boost_1_32_0/tools/build/v2/build/property.jam:272: in property.validate from module property /home/poobarr/boost_1_32_0/tools/build/v2/tools/builtin.jam:170: in variant from module builtin project-root.jam:7: in modules.load from module Jamfile</home/poobarr/Bayes++> /home/poobarr/boost_1_32_0/tools/build/v2/build/project.jam:301: in load-jamfile from module project /home/poobarr/boost_1_32_0/tools/build/v2/build/project.jam:68: in project.load from module project /home/poobarr/boost_1_32_0/tools/build/v2/build-system.jam:80: in load from module build-system /home/poobarr/boost_1_32_0/tools/build/v2/kernel/modules.jam:259: in import from module modules /home/poobarr/boost_1_32_0/tools/build/v2/kernel/bootstrap.jam:120: in boost-build from module /home/poobarr/boost_1_32_0/boost-build.jam:12: in module scope from module ------------------ so I tried ' bjam "--v2 -sTOOLS=gcc" ' which is more promising but fails so I tried ' bjam "--v2 -sBOOST=/usr/local/include/boost-1_32/ -sTOOLS=gcc" ' which fails in a similar manner >>v2 all you should need to set is >>"-sBOOST=/usr/local/include/boost-1_32/". >> >> >Bayes++ picks up it's settings from 'BOOST_ROOT' as described in "compiling >the examples". > > Okay I made sure BOOST_ROOT was set to /usr/local/include/boost-1_32/" (it already was) and still compilation errors the errors boil down to the following, on all build attempts that get past the basic necessities (ie it tries to compile) is this an include issue or is this a g++ version issue? Thanks for the help, reading over the links that Rene provided now but I wanted to get this email out while I had a chance. Lucas --------------------------------------------- [poobarr@mm122947-pc Bayes++]$ bjam "--v2 -sTOOLS=gcc" ...found 1697 targets... ...updating 36 targets... gcc-C++-action bin/bin/Bayes++/BayesFilter/libBayesFilter.a/gcc/debug/bayesFlt.o In file included from /home/poobarr/Bayes++/BayesFilter/matSupSub.hpp:120, from /home/poobarr/Bayes++/BayesFilter/bayesFlt.hpp:21, from /home/poobarr/Bayes++/BayesFilter/bayesFlt.cpp:16: /home/poobarr/Bayes++/BayesFilter/uBLASmatrix.hpp:28: `row' not declared /home/poobarr/Bayes++/BayesFilter/uBLASmatrix.hpp:29: `column' not declared /home/poobarr/Bayes++/BayesFilter/uBLASmatrix.hpp:212: syntax error before `(' token /home/poobarr/Bayes++/BayesFilter/uBLASmatrix.hpp:217: semicolon missing after declaration of `Bayesian_filter_matrix::detail::FMMatrix<MatrixBase>' /home/poobarr/Bayes++/BayesFilter/uBLASmatrix.hpp:218: ISO C++ forbids defining types within return type /home/poobarr/Bayes++/BayesFilter/uBLASmatrix.hpp:218: `sorry, not implemented: /home/poobarr/Bayes++/BayesFilter/uBLASmatrix.hpp:218: `parm_decl' not supported by dump_type <type error>' is not an aggregate type /home/poobarr/Bayes++/BayesFilter/uBLASmatrix.hpp:218: syntax error before `(' token /home/poobarr/Bayes++/BayesFilter/uBLASmatrix.hpp:220: ISO C++ forbids declaration of `sub_column' with no type /home/poobarr/Bayes++/BayesFilter/uBLASmatrix.hpp: In function `int Bayesian_filter_matrix::detail::sub_column(unsigned int, unsigned int, unsigned int)': /home/poobarr/Bayes++/BayesFilter/uBLASmatrix.hpp:221: `matrix_vector_slice' undeclared in namespace `boost::numeric::ublas' /home/poobarr/Bayes++/BayesFilter/uBLASmatrix.hpp:221: `MatrixBase' undeclared (first use this function) /home/poobarr/Bayes++/BayesFilter/uBLASmatrix.hpp:221: (Each undeclared identifier is reported only once for each function it appears in.) /home/poobarr/Bayes++/BayesFilter/uBLASmatrix.hpp:221: invalid use of `this' in non-member function /home/poobarr/Bayes++/BayesFilter/uBLASmatrix.hpp: At global scope: /home/poobarr/Bayes++/BayesFilter/uBLASmatrix.hpp:255: parse error before `<' token --------------------------------------- (and so on) > > >>PS. It looks like the docs on the Bayes++ web page are out of date. >> >> >I double checked. Docs are up to date, they were updated only about a week ago >to match the 2003.8-4 release. > >Probably best to continue this discussion on the bayesclasses-general list or >via personal mail. > >Michael > > > |
From: Michael S. <Mic...@ep...> - 2005-02-02 07:28:44
|
On Wednesday 02 February 2005 03:18, Rene Rivera wrote: > Lucas Vickers wrote: > > I think I need to edit the "/home/poobarr/boost_1_32_0/boost-build.jam" > > file or the "/home/poobarr/Bayes++/Jamfile.v2" file, but I am confused. > > > > Thank you for the development and for your time. > > Sorry if this is the wrong group but I think this is more of a bjam > > issue than boost issue. > > Your are mostly at the right place.. In order to really help you though > we'd need to know what you are using to build the Bayes++ project. From > your mention of "/home/poobarr/Bayes++/Jamfile.v2" it seems to have a > BBv2 project. But does it also have a BBv1 "Jamfile"? Are there > instructions with the Bayes++ project on how to build? Is there a > Bayes++ group/maintainer you can ask? Rene seems to have covered most of important stuff already. As the Bayes++ author hopefully I can help also! I have CC'd my reply to the Bayes++ list. > A few minutes later.. Answering some of my own question after looking up > the Bayes++ project.. > > Looks like the newest version is BBv2 only. So at minimum you'll have to > do "bjam --v2" to get the BBv2 functionality. Release versions of Bayes++ have Jamfiles for Boost Build version 1 and version 2. I assume you are using '2003.8-4' which is the latest stable release. It would be worth trying 'bjam --v2' to see if it works in your case. > Since Bayes++ looks like it uses header only Boost libraries you: a) > don't need to build the Boost libraries that have source, b) it really > doesn't matter where you put the Boost headers. I agree with this. > And looking at the Bayes++/Jamfile.v2 all you should need to set is > "-sBOOST=/usr/local/include/boost-1_32/". Bayes++ picks up it's settings from 'BOOST_ROOT' as described in "compiling the examples". > PS. It looks like the docs on the Bayes++ web page are out of date. I double checked. Docs are up to date, they were updated only about a week ago to match the 2003.8-4 release. Probably best to continue this discussion on the bayesclasses-general list or via personal mail. Michael -- ___________________________________ Michael Stevens Systems Engineering Navigation Systems, Estimation and Bayesian Filtering http://bayesclasses.sf.net ___________________________________ |
From: Michael S. <m-s...@ly...> - 2005-01-10 07:18:18
|
Hello Emmanuel, > > I'm working on object tracking using particle > filtering method by simulations on Player/Stage. > > Right now, I'm at a total loss on how to use Bayes++ > to > do tracking in Player/Stage. Please advice me. This is rather a general question! I don't think I can give you a full answer regarding object tracking with particle filters, it is something worthy of a a PhD topic! First it is worth noting, that particle filters are not always the best solution in object tracking. They are only appropriate and necessary when your problem inherently result in complex proability distributions. Highly non linear systems or multi-modal likelihoods are usually good candidates. That said the PV example in Bayes++ is a good starting point for a tracker. It already implements a Position and Velocity tracker in 1D. It can easily be converted to use a particle filter. I have attached a version that does this. There are only a few changes to the original linear filter version. Firstly the Scheme used changes so we have: // Choose Filtering Scheme to use typedef SIR_kalman_scheme FilterScheme; instead of // Choose Filtering Scheme to use typedef UD_scheme FilterScheme; A particle filter and in this case the SIR_scheme need an observe model that provides the Likelihood function. Previously the model was specified with a linearised uncorrelated additive noise model thus: class PVobserve : public Linrz_uncorrelated_observe_model In Bayes++ this can automatically be generalised and the Likelihood function computed using a model from "model.hpp" /* * Position Observation model * Linear observation is addative uncorrelated model */ class PVobserve : public General_LzUnAd_observe_model Similarly the predict model must be able to sample from a distribution for a particle filter. Therefore the original predict model changes from class PVpredict : public Linear_predict_model to /* * Prediction model * Sample from a Linear prediction with additive noise model */ class PVpredict : public Sampled_LiInAd_predict_model The only other requirement of the particle filter is a good source of random numbers. This is easily provided in Bayes++ be a seperate class which uses the Boost Random library for this purpose. The filters in the example are then simply constructed with arguments specifying the required number of particles and the random functions. FilterScheme f1(NX,1000,rnd); Bayes++ is quick even with 10s of millons of particles! Hope this gets you started, Michael -- ___________________________________ Michael Stevens Systems Engineering Navigation Systems, Estimation and Bayesian Filtering http://bayesclasses.sf.net ___________________________________ |
From: Emmanuel <pla...@ya...> - 2005-01-06 07:11:31
|
Hi, I'm working on object tracking using particle filtering method by simulations on Player/Stage. Right now, I'm at a total loss on how to use Bayes++ to do tracking in Player/Stage. Please advice me. Thank you very much. Best Regards, Emmanuel __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com |
From: <ben...@id...> - 2004-05-25 07:58:47
|
Dear Open Source developer I am doing a research project on "Fun and Software Development" in which I kindly invite you to participate. You will find the online survey under http://fasd.ethz.ch/qsf/. The questionnaire consists of 53 questions and you will need about 15 minutes to complete it. With the FASD project (Fun and Software Development) we want to define the motivational significance of fun when software developers decide to engage in Open Source projects. What is special about our research project is that a similar survey is planned with software developers in commercial firms. This procedure allows the immediate comparison between the involved individuals and the conditions of production of these two development models. Thus we hope to obtain substantial new insights to the phenomenon of Open Source Development. With many thanks for your participation, Benno Luthiger PS: The results of the survey will be published under http://www.isu.unizh.ch/fuehrung/blprojects/FASD/. We have set up the mailing list fa...@we... for this study. Please see http://fasd.ethz.ch/qsf/mailinglist_en.html for registration to this mailing list. _______________________________________________________________________ Benno Luthiger Swiss Federal Institute of Technology Zurich 8092 Zurich Mail: benno.luthiger(at)id.ethz.ch _______________________________________________________________________ |
From: Michael S. <Mic...@ep...> - 2004-02-23 10:46:30
|
Dear All, I recently uploaded this release. As can be seen from the version number this is a minor release. Mostly documentation and comment fixes. Further from the release notes: Some updates with regard to efficiency and temporary usage in Schemes. New Boost Support: Validated with both Boost 1.30.2 and Boost 1.31.0 Compiler support: The list of compiler for which Bayes++ is built and tested has been updated. It is validated for GCC 3.3.1, GCC 2.95.3, Visual C++ 7.0, and Intel C++ 7.1 Bayes++ is built with standard Boost Build system. In the coming week I will put out a new experimental release which includes the by-product interface (in CVS). This requires a little more documentation to make it release worthy! Michael -- ___________________________________ Michael Stevens Systems Engineering 34128 Kassel, Germany Phone/Fax: +49 561 5218038 Navigation Systems, Estimation and Bayesian Filtering http://www.sf.net/Bayes++ ___________________________________ |
From: Michael S. <Mic...@ep...> - 2004-02-02 07:17:52
|
Rob Ottenhoff wrote: > Hello, > > First of all I thank mr.stevens for this fine library. Now my question: > I try to transform the PV-sample into a 'tracker' that tracks 2D points. > If I implement the tracker using two 1D-filters like in the sample it > works fine. But if I use only one 2D-filter my tracker works fine for > the x-coordinate, but not at all for the y-coordinate ( the velocity in > the y-direction quickly becomes almost zero). I fail to see what I do > wrong here. Here follows the code I used: > Hello Rob, I have had a quick look at your problem. Firstly you are correct in suspecting a coding error. In this special case the solution with one 2D filters should give identical results as the case with two 1D filters. Looking at your code the mistake seems to be in your noise coupling matrix G. After the identity(G) it will have the value 1 0 0 1 0 0 0 0 I think what you want is 1 0 0 0 0 1 0 0 That way the noise is correctly added to the X position and Y position states. I think that is all that is wrong. Can you tell me if that doesn't work. Of course the problem could be you have backslashes instead of forward slashes in your #included filenames!! :-) Slightly more seriously, the 'b' in Bayes++ is always capitalised in my distributions. So unless you have a case agnostic OS your code will no be portable. All the best, Michael -- ___________________________________ Michael Stevens Systems Engineering Lilienweg 13a 34128 Kassel, Germany Phone/Fax: +49 561 5218038 ___________________________________ |
From: Rob O. <R.O...@No...> - 2004-01-31 03:35:01
|
Hello, =20 First of all I thank mr.stevens for this fine library. Now my question: I try to transform the PV-sample into a 'tracker' that tracks 2D points. If I implement the tracker using two 1D-filters like in the sample it works fine. But if I use only one 2D-filter my tracker works fine for the x-coordinate, but not at all for the y-coordinate ( the velocity in the y-direction quickly becomes almost zero). I fail to see what I do wrong here. Here follows the code I used: =20 The header: =20 #ifndef NECACQPOSITIONTRACKER_H #define NECACQPOSITIONTRACKER_H #pragma once namespace { class NECAcqPositionTrackerImpl; } #include "boost\tuple\tuple.hpp" typedef boost::tuple<double, double> PositionType; typedef boost::tuple<double, double> VelocityType; typedef boost::tuple<PositionType, VelocityType> StateType; class NECAcqPositionTracker { public: NECAcqPositionTracker(); virtual ~NECAcqPositionTracker(); virtual void Observe(PositionType position); virtual void Predict(); virtual void Update(); StateType GetState() const; private: NECAcqPositionTrackerImpl* m_pImpl; }; #endif //NECACQPOSITIONTRACKER_H The .cpp : =20 #include ".\necacqpositiontracker.h" #include "\programming\bayes++\BayesFilter/unsFlt.hpp" #include "\programming\bayes++\BayesFilter/UDFlt.hpp" #include "\programming\bayes++\Test/random.hpp" namespace=20 { using namespace Bayesian_filter; using namespace Bayesian_filter_matrix; const Float m_v_noise =3D 0.1; // Velocity noise, giving mean squared error bound // Filter's Initial state uncertainty: System state is unknown const Float i_P_NOISE =3D 100.; const Float i_V_NOISE =3D 1.0; =20 class PVpredict : public Linear_predict_model { public: PVpredict(); private: const Float m_dt; const Float m_v_gamma; // Velocity correlation, giving velocity change time constant }; class PVobserve : public Linrz_uncorrelated_observe_model { mutable Vec z_pred; public: PVobserve (); const Vec& h(const Vec& x) const; // Noise on observing system state const Float m_fNoise; }; =20 class NECAcqPositionTrackerImpl { // Filtering Scheme to use typedef UD_scheme FilterScheme; public: NECAcqPositionTrackerImpl(); virtual ~NECAcqPositionTrackerImpl(); void Observe(PositionType position); void Predict(); void Update(); StateType GetState() const; private: PVpredict m_predictor; FilterScheme m_filterScheme; PVobserve m_observation; Vec m_z_true; }; PVpredict::PVpredict()=20 : Linear_predict_model(4, 2), m_dt(0.04), m_v_gamma(1.0) { // Position Velocity dependance Fx(0,0) =3D 1.; Fx(0,1) =3D m_dt; Fx(1,0) =3D 0.; Fx(1,1) =3D exp(-m_dt*m_v_gamma); Fx(2,0) =3D 0.; Fx(2,1) =3D 0.; Fx(3,0) =3D 0.; Fx(3,1) =3D 0.; Fx(0,2) =3D 0.; Fx(1,2) =3D 0.; Fx(0,3) =3D 0.; Fx(1,3) =3D 0.; =20 Fx(2,2) =3D 1.; Fx(2,3) =3D m_dt; Fx(3,2) =3D 0.; Fx(3,3) =3D exp(-m_dt*m_v_gamma); q[0] =3D q[1] =3D 0.0001; FM::identity (G); } PVobserve::PVobserve ()=20 : Linrz_uncorrelated_observe_model(4, 2),=20 z_pred(2), m_fNoise(0.001) { // Linear model Hx(0,0) =3D 1; Hx(0,1) =3D 0.; Hx(0,2) =3D 0.; Hx(0,3) =3D 0.; Hx(1,0) =3D 0.; Hx(1,1) =3D 0.; Hx(1,2) =3D 1.; Hx(1,3) =3D 0.; // Observation Noise variance Zv[0] =3D pow(m_fNoise, 2); Zv[1] =3D pow(m_fNoise, 2); } const Vec& PVobserve::h(const Vec& x) const { z_pred[0] =3D x[0]; z_pred[1] =3D x[2]; return z_pred; }; NECAcqPositionTrackerImpl::NECAcqPositionTrackerImpl() : m_filterScheme(4,4), m_z_true(2) { Vec state_guess(4); state_guess[0] =3D 78.; state_guess[1] =3D 1.5; state_guess[2] =3D 220.; state_guess[3] =3D -1.5; m_filterScheme.X.clear(); m_filterScheme.X(0,0) =3D pow(i_P_NOISE, 2); m_filterScheme.X(1,1) =3D pow(i_V_NOISE, 2); m_filterScheme.X(2,2) =3D pow(i_P_NOISE, 2); m_filterScheme.X(3,3) =3D pow(i_V_NOISE, 2); m_filterScheme.init_kalman(state_guess, m_filterScheme.X); } NECAcqPositionTrackerImpl::~NECAcqPositionTrackerImpl() { } void NECAcqPositionTrackerImpl::Observe(PositionType position) { m_z_true[0] =3D position.get<0>(); m_z_true[1] =3D position.get<1>(); m_filterScheme.observe(m_observation, m_z_true); } void NECAcqPositionTrackerImpl::Predict() { m_filterScheme.predict(m_predictor); } void NECAcqPositionTrackerImpl::Update() { m_filterScheme.update(); } StateType NECAcqPositionTrackerImpl::GetState() const { using boost::make_tuple; return make_tuple<PositionType, VelocityType>( make_tuple<double, double>( m_filterScheme.x[0], m_filterScheme.x[2] ),=20 make_tuple<double, double>( m_filterScheme.x[1], m_filterScheme.x[3] ) ); } } =20 NECAcqPositionTracker::NECAcqPositionTracker() { m_pImpl =3D new NECAcqPositionTrackerImpl(); } NECAcqPositionTracker::~NECAcqPositionTracker() { delete m_pImpl; } void NECAcqPositionTracker::Observe(PositionType position) { m_pImpl->Observe(position); } void NECAcqPositionTracker::Predict() { m_pImpl->Predict(); } void NECAcqPositionTracker::Update() { m_pImpl->Update(); } StateType NECAcqPositionTracker::GetState() const { return m_pImpl->GetState(); } |
From: Michael S. <Mic...@ep...> - 2004-01-01 19:25:49
|
Dear all, This is my first posting to the Bayes++ list. Since we are now in 2004 I felt it would be interesting to put out some information. My recent work in Bayes++ has concentrated on adding a mechanism for accessing the many numerical by-products the filter compute. The first results of this can be found in CVS. The interface is experimental at the moment. In parallel I am cleaning up the source code comments. The aim is to make them accessable to Doxygen so the source will be more self documenting. Boost is currently working towards the 1.31.0 release. I will be putting out a new release of Bayes++ once this becomes available. This will include the new expertimental "byproduct" interface. In the meantime I am maintaining both Bayes++ and uBLAS so they support as many compilers as I can easily test. As I don't have VC7.1 and help with this compiler is greatly appreciated. The SF bugs tracker has some more information on a know problem with this compiler. -- The byproduct interface -- The existing predict and observe model hierarchies provide a way to specify input parameters for filters. In turn, the filters maintain state, in various forms, which is directly accessible for output. Filter predict and observe functions generally involve the computation of many values which are relate to the model specified and the state. These "byproduct" can be a useful output of these functions. For example the innovation (s) computed in many Kalman filter observe implmentations. "byproduct" parameters differ from existing model parameters in the follow: There is no structure (or hierarchy) that can be imposed. They depend on the exact numerical implementation of a filter. They provide storage for linear algebra computations to place temporary variables. They are not polymorphic. The filter functions with byproducts are specific to that filter implementation and are therefore not virtual. The existing virtual functions are generally implemented using the more specific byproduct functions. Advantages: Provide an interface to many useful numeric results. Allow efficient managment of Matrix/Vec temporaries Disadvantages: The filter interfaces are cluttered with many alternative predict/observe functions. The filter implementation is exposed in the interface. A filter's byproduct interface may change due to implmentation changes. The existing automatic managment of observe temporaries (for constant z_size) is removed. Open issues: Should byproduct functions be called predict/obeserve? To avoid confusion with the exiting polymorphic interfaces a name change may be in order. e.g. predict_bp, or predict_byproduct To provide a polymorphic mechanism to manage temporaries! -- Happy New Year Michael Stevens |