hat denn irgendwer "fertige" Extended-Kalman-Libs in C/C++ bereits erfolgreich selber genutzt ?
hat denn irgendwer "fertige" Extended-Kalman-Libs in C/C++ bereits erfolgreich selber genutzt ?
kann das sein, dass die Nutzung von Kalman Filtern hier im Forum nicht so recht bekannt und verbreitet ist?
Falls doch - wie macht ihr es stattdessen?
Ich nehme die Odometrie pur (und jage die ermittelte Position zusammen mit den Daten des Rundumsensors durch einen Partikelfilter).
Aus meinem Billig-Beschleunigungssensor von Pollin kam bei meinen Tests nix vernünftiges raus. Der Beschleunigungswert im Bereich von +-2g wurde vom Rauschen (Chassisvibrationen bei laufenden Motoren) verschluckt. Da half weder mitteln noch integrieren. Schien mir im Nachhinein auch der falsche Messbereich für ein rampenbeschleunigtes Fahrzeug mit Schrittgeschwindigkeit. Man will ja gerade sanft beschleunigen, um den Schlupf der Räder zu minimieren.
ich kriege leider den Schlupf bei meinem Kettenantrieb niemals raus - auf Teppichboden oder Rasen kein Problem, auf Parkett aber nicht zu machen, selbst bei langsamem ramp-up rutscht immer irgendwo was. Der Accelerometer meines CMPS11 ist aber recht gut, wenn auch nicht rauschfrei. Partikelfilter scheidet aus, da die Raumgeometrie nicnt bekannt ist (SLAM-Robot), und daher keine externen Referenzpunkte existieren.
Was bleibt, ist also der Kalman, zumindest für Anfahren und bremsen, um den wird also kein Weg herumführen.
Bekannt ist mir das schon, ich habe sogar noch mal in zwei Bücher geschaut, als die Frage hier erschienen ist.
Und dann habe ich geschwiegen, weil
a) keine eigene Erfahrung
b) bei der Mathematik, die ich da gesehen habe, müsste ich erst mal eine Weile in mich gehen
c) da steht fertig und im Zusammenhang mit dem Autor bedeutet das, die Antwort muss 100 % passen
d) da steht C/C++ und im Zusammenhang mit dem Autor bedeutet das nur C wird akzepiert. Alles was ich kenne ist aber in C++
Was ich dazu habe, sammle ich gerade ein wenig und hänge gleich noch mal die Liste an. Sonst meckert das Forum wieder, wenn ich zu lange brauche einen Beitrag zu schreiben.
- - - Aktualisiert - - -
So hier der Rest:
Die Bucherkenntnis war: Dafür braucht man eine gute Matrizenbibiliothek.
Also wäre die erste Wahl
http://eigen.tuxfamily.org/index.php?title=Main_Page
und dann mit Beispiel aus Büchern und Tutorials mal was probieren.
Wenn aus irgendwelchen Gründen Eigen nicht in Frage kommt, wäre das die Alternative
http://arma.sourceforge.net/
das wäre die zweite "Quasi Standard" Lib.
Auf einer Lib aufbauend haben sich ja schon einige Leute abgearbeitet
https://github.com/hmartiro/kalman-cpp
http://kalman.sourceforge.net/
https://github.com/vancegroup/eigen-kalman
Es gibt auch sowas hier, bei den Drohnenfliegern
http://diydrones.com/profiles/blogs/...man-filter-for
Dann gibt es natürlich noch "fertigeres", bei den großen Robotik-Frameworks
http://www.orocos.org/bfl
http://wiki.ros.org/robot_pose_ekf
http://wiki.ros.org/robot_localization
hallo,
danke für die Links, tatsächlich habe ich sie überwiegend auch schon gefunden.
Zu C++: das würde mich dann nicht stören, wenn man nicht selber in C++ programmieren muss, sondern nur die paar Werte als Parameter übergibt.
Ob das geht per
function [new_mean, new_var]=update(mean1,var1,mean2,var2)
oder per
kalman.var1=...
kalman.var2=...
kalman.mean1=...
kalman.mean2=...
mean=kalman.new_mean
var=kalman.new_var
oder mit Doppelpunkten dazwischen ist mir (fast) egal.
Aber ich möchte nicht den mehrdimensionalen Kalman selber entwickeln müssen, mit allem Matrizendrumunddran, daher Suche ich eine bereits fertige Implementierung, die (aus eigener Erfahrung) funktioniert - aus Gründen der sicherlich benötigten Hilfestellung.
Deshalb also "was fertiges".
Kalman Filter hab ich selbst schon einsetzt. Es ist nur so das du das System kennen musst das du Verbessern willst.
http://bilgin.esme.org/BitsAndBytes/...lterforDummies
Komplexität willst du nicht, deshalb vermute ich das der Kalmanfilter nichts für dich ist.
Zitat von Kalmanfilter for Dummies
Lesezeichen