Back to site
Since 2004, our University project has become the Internet's most widespread web hosting directory. Here we like to talk a lot about web servers, web development, networking and security services. It is, after all, our expertise. To make things better we've launched this science section with the free access to educational resources and important scientific material translated to different languages.

Bayes++ Klase Bayes-ovog filtriranja otvorenog izvora(Open Source Bayesian Filtering Classes)


Bayes-ovo filtriranje je probalistička tehnika za fuziju podataka.Tehnika kombinuje konciznu matematičku formulaciju sistema sa observacijama tog sistema.Verovatnoće se koriste da predstave stanje sistema,funkcije verovatnoće da predstave njihove odnose.U ovoj formi,Bayes-ovo zaključivanje može da se primeni i za dalje verovatnoće koje se na to odnose izvede zakjlučak. Pogledajte Wikipedia-u za informacije o Probability theory(Teoriji verovatnoće), Bayes theorem(Bayes teoremi) , Bayesian Inference(Bayes-ovom zaključivanju).

Kod odvojenih sistema Bayes-ova formulacija rezultira kao prirodno iterativno rešenje fuzije podataka.Kod dinamičkih sistema postoji klasa rešenja, odvojeni filteri, koji kombinuju posmatrane izlaze (outputs) sistema sa dinamičkim modelom sistema. Procenitelj izračunava procenu stanja sistema sa svakom observacijom sistema.Obično se primenjuju linearni procenitelji kao što je Kalman Filter.

Bayes++ je biblioteka otvorenog izvora (open source library) C++ klasa. Ove klase predstavljaju i implementiraju širok spektar numeričkih algoritama za Bayes-ovo filtriranje odvojenih sistema.Klase pružaju testirane i stalne numeričke metode,i hijerarhija klase eksplicitno predstavlja raznolikost algoritama za filtriranje i tipova modela sistema.

Prost primer


Ovo je veoma prost primer; za one koji nikada ranije nisu koristili Bayes-ove klase filtriranja.Ako želite da vidite koliko je jednostavno koristiti Bayes++, Pogledajte izvor.

Primer pokazuje kako su kreirane dve klase. Prvi je model predviđanja, drugi model observacije. U ovom primeru oni predstavljaju jednostavan linearni problem sa samo jednim promenljivim stanjem i zvucima konstantnog modela.Filter spaja rezultate predviđanja i observacije.

Pogledajte Bayes-ove klase filtriranja za korišćeni opis klasa i sva tri primera koje je dao Bayes++.

Sastavljanje primera


Prvi download(preuzimanje) i izvod Bayes++, kao i Boost biblioteka. Boost se koristi da obezbedi nezavisnost kompajlera,i uobičajeni build sistem. Dva Boost zaglavlja biblioteke se koriste: uBLAS za linearnu algebru, i random za PV i QuadCalib primere. Boost zaglavlja se mogu postaviti bilo gde u odnosu na Bayes++, ali je lako ako pratite ovu strukturu:

...sourceDirectory
Bayes++
BayesFilter
PV
QuadCalib
Simple
Test
boost_1_49_0
boost
etc

Upotreba Boost Build sistema verzija 2 je najbolji način da sastavite primere. Koristite bjam (Boost jam) program build Bayes++ u samo jednom koraku. Dokumentacija u vašoj preuzetoj Boost kopiji objašnjava kako da postignete da sami kompilirate poslednju verziju bjam-a. Sve što ima da se uradi bjam je izvršavao sa traženim setom alatki,ili ponekad vi treba da konfigurišete Build sistem da biste mu rekli gde je vaš kompajler.
Da podignete Bayes++ i primere sa GCC prosto izvršite: (Bayes++ bi trebalo da je tekući direktorijum)

        bjam toolset=gcc -sBOOST_ROOT="../boost_1_49_0"

Ili za Visual C++ izvršavaju:

        bjam toolset=msvc -sBOOST_ROOT="../boost_1_49_0"

Moguće je izostaviti BOOST_ROOT varijablu, bilo kreirajući build_build.jam fajl u sourceDirectory(direktorijum izvora) (ili iznad),bilo podešavajući ga kao varijablu okruženja.

Lokacija sastavljenih primera i biblioteka


Izvršni za tri primera će biti postavljeni unutar hijerarhije direktorijuma nazvane target(meta,cilj). Statičke biblioteke za debug i izdavanje build-ova BayesFilter biblioteke su postavljene u target/BayesFilter-u. Target direktorijum i njegovi pod-direktorijumi se kreiraju automatski.

Vizuelno C++ rešenje


Za vizuelni C++ 2008 itd., možete takođe koristiti Bayes++.sln rešenje i aktivnu konfiguraciju uBLAS Debug. Opcije kompajlera moraju biti podešene tako da fajlovi koje Boost uključuje mogu biti nađeni. To jest, putanja uključenja mora da sadrži bazni direktorijum Boost-a. U ovom slučaju lokalni boost direktorijum. U VC7.1 ovo treba da uradite biranjem opcije Tools/Options/Projects/VC++ Directories.

Vizuelni C++ 7.0 zahteva upotrebu Boost verzije 1_32_0. Vizuelni C++ 7.1 (ili kasniji) zahteva Boost verziju 1_33_0 (ili kasniju).I

Licenciranje


Svi Bayes++ source(sors,izvor) kod fajlovi su zaštićeni uslovima licence kao što je ovde dato.Obaveštenje o autorskim pravima je od MIT licence.Ovo ni na koji način ne ograničava bilo kakvu komercijalnu upotrebu koju biste želeli da sprovedete koristeći naš kod izvora(source code).Sve dok poštujete uslove autorskih prava i licence, Michael Stevens-u i Australijskom Centru za polje robotike će biti drago da ga koristite na koji god način želite.

Bayes++ Bayes-ova biblioteka filtriranja

Autorska prava (c) 2003,2004,2005 Michael Stevens, Autorska prava (c) 2002 Michael Stevens i Australijski centar za polje robotike

Dozvola je time dodeljena, besplatno, svakome ko dobije kopiju ovog software-a i fajlove priključene dokumentacije ("Software"), da radi u Software-u bez ograničenja,uključujući nelimitirana prava da koristi,kopira,modifikuje,objavljuje,distribuira,sub-licencira,i/ili prodaje kopije Software-a,kao i da dozvoli onima kojima je Software opremljen da to rade,u skladu sa sledećim uslovima:

Gore navedeno obaveštenje o autorskim pravima i obaveštenje o ovoj dozvoli biće uključeni u sve kopije ili značajne delove Software-a.

SOFTWARE JE DAT "KAKAV JESTE", BEZ IKAKVE GARANCIJE, IZRAŽENE ILI PODRAZUMEVANE, UKJLUČUJUĆI ALI I NE OGRANIČAVAJUĆI SE GARANCIJAMA PRODAJE, POGODNOSTI ZA NAROČITU SVRHU I BEZ KRŠENJA.NI U KAKVOM SLUČAJU AUTORI ILI NOSIOCI AUTORSKIH PRAVA NEĆE BITI ODGOVORNI ZA BILO KAKAV PRIGOVOR,ŠTETU ILI DRUGU PRAVNU OBAVEZU,BILO U NEKOM ČINU UGOVORA,PREKRŠAJA ILI DRUGO,ŠTO POTIČE IZ,IZVAN ILI U VEZI SA SOFTWARE-OM ILI UPOTREBOM ILI DRUGIM DELATNOSTIMA U SOFTWARE-U.

SLAM : Simultana lokalizacija i mapiranje


SLAM je jedan od najinteresantnijih problema u Bayes-ovom filtriranju. Njegova struktura podrazumeva da ne može biti ispravno rešena bez upotrebe stohastičkog pristupa.To je zbog mapiranih statusa zato što su zavisna od drugih mapiranih statusa i statusa lokalizacije. Ta zavisnost takođe čini problem kompleksnim, pa stoga jednostavni pristup kao što je predstavljanje svih korelacija nije prilagodljiv velikom broju statusa.

Bayes++ je korišćen za implementaciju raznih jednostavnih i nekih naprednijih SLAM rešenja. Naročito je primenjena puna implementacija FastSLAM-a.Ova tehnika je opisana u pismenom radu "FastSLAM : Factored Solution to the Simultaneous Localization and Mapping Problem"(“Uračunato rešenje za problem simultane lokalizacije i mapiranja”), M. Montemerlo, S. Thrun S, D. Koller, B. Wegbreit, Zbornici AAAI National Conference on Artificial Intelligence(Nacionalna konferencija o veštačkoj inteligenciji) 2002.

Bayes++ implementacija FastSLAM-a i veoma jednostavna Kalman (puna korelacija) SLAM implementacija je dostupna kao deo najskorijeg download-a(preuzimanja) .

Scilab, Matlab, MuPAD


Ove matematičke alatke su naročito korisne za vizuelizaciju rezultata filtriranja. Međutim,sve one su prilično spore,i veoma je lako proizvesti vrlo slabo implementirane filtere u njihovim programskim jezicima.Na sreću,sve ove alatke obezbeđuju mehanizme za produženje sa spoljnim programima.Dat je primer interfejs koda u Bayes++ CVS repository(skladište) za Matlab i MuPAD. Interfejs za Scilab još uvek nije dostupan.

Prenosivost


Bayes++ koristi samo ISO standard C++. Kod izvora(source code) koristi umereno napredne C++ sklopove. Ograničava samo direktnu upotrebu C++ prototipnog sistema. Međutim,korišćene Boost biblioteke (naročito uBLAS) naširoko koriste prototipne tehnike. Boost takođe uključuje mnoge zaobilaznice za nedostatke kompajlera. Stoga,uz nekoliko promena,Bayes++ bi trebalo da radi sa bilo kojim modernim C++ kompajlerom kojeg Boost podržava.

Bayes++ je testiran sa: GCC 4.x, i VisualC++ 2008

Kasnije verzije GCC 3.x-a i GCC 4.x-a takođe bi trebalo sa lakoćom da pokrenu Bayes++ . Međutim, GCC 3.3.0 je poznat po tome što nije kompatibilan sa uBLAS-om i što proizvodi netačni kod sa -O2 optimizacijom.

VisualC++ 7.1 često zahteva korišćenje /Zm opcije,tako da može da sastavi kompleksna zaglavlja.

Izdavanje kriterijuma


Ovo izdanje je potvrđeno korišćenjem kompajlera i gore navedenih Boost verzija uz upotrebu sledećih testova.
  1. Build sistem: Komaptibilnost sa Boost Build verzijom 2.
    Uspešno dovršeni bjam radi izgradnje standardnih biblioteka i primera.
    Uspešno dovršeni bjam radi izgradnje SLAM sistema.

  2. Test primeri: simpleExample(prostiPrimer), PV, QuadCalib
    Sastavljanje debug-a i izdavanje build-ova (korišćenjem Boost Build verzije 2) :- bez grešaka i upozorenja.
    Output(izlaz)za izvršenje :- identičan očekivanim referentnim rezultatima.

  3. Numerički testovi: rtheta – Posmatrač ugla opsega.
    Ne-linearni test posmatrača ugla opsega . Posmatrač se kreće u stanju dvodimenzionalnog prostora. Predviđanje kretanja se dešava sa linearnim modelom sa dodatkom buke.Dva statusa su uparena i u modelu i u dodatku buke.Posmatraju se opseg i ugao fiksiranog target-a(mete,cilja).Target je postavljen tako da se posmatraju isprekidani uglovi.
    I status i observacije imaju dodatne ne-observirane(ne-posmatrane) (pojedinačne) statuse.Veličine modela,upareni parametri i tipovi modela mogu varirati za dodatne testove.Sve šeme su testirane kod preko 5 ponavljanja modela.SIR šema je testirana na 1000 uzoraka.
    Zato što se ne očekuje da će rezultati različitih numeričkih implementacija biti identični među Šemama.Stoga testiranje zahteva:
    Testiranje regresije :- Izmenjeno u output-u za svaku Šemu iz prethodnog izdanja.
    Testiranje konzistencije :- Poređenje output-a za Šematske parove da znaju da proizvedu numerički slične rezultate.

  4. SLAM test: testFastSLAM
    Testiranje konzistencije:- Poređenje FastSLAM rezultata sa 1,000,000 uzoraka sa Kalman SLAM-om. Očekivana odstupanja od statusa i kovarijante su približno 1/1000.




Published (Last edited): 11-10-2012 , source: http://bayesclasses.sourceforge.net/Bayes++.html