- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 66

Thema: Sensorfusion mit unterschiedlicher statistischer Fehlerrate

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    HaWe
    Gast
    bei mehreren unterschiedlichen Sensoren kann ja der zuverlässigste Sensor mit 1% Wahrscheinlichkeit auch einen Wert außerhalb von +/- 3 sigma liefern, also bei 1m und sigma=5 z.B. >115
    oder mit 5% Wahrsch. (2*sigma) <90 oder >110,
    und ein unzuverlässigerer kann durchaus bei 1m und sigma=20 den echten Wert auf den Kopf treffen oder auch bei 95 landen bzw. mit 68% Wahrsch. (1*sigma) irgendwo zwischen 80 und 120.

    Nur statistisch wird es sich den echten Verhältnissen auf lange Sicht annähern.
    Wenn du also misst, weisst du nicht, wer recht hat, du musst dich auf statistische Funktionen zurückziehen, die mit größtmöglicher Wahrscheinlichkeit den tatsächlichen Wert am besten approximieren.

    Ich verstehe jetzt daher noch nicht, wie du die Fälle 1+2 aus dem TOP in "deiner Weise" ausrechnen willst, anders als mit einem per "Vertrauenskoeffizienten" gewichteten Durchschnitt?

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.04.2015
    Beiträge
    903
    Angenommen ich habe Deine drei Messwerte von ganz am Anfang.
    - Ich nehme rein intuitiv eine reale Distanz an, z.B. 90cm.
    - Ausgehend von diesen 90cm berechne ich über die Gaussfunktion für den ersten Sensor die Wahrscheinlichkeit aus (Standardabweichung = 90cm * Variationskoeffizient, Messwert ist direkt angegeben).

    Code:
    private double NormalizedGaussFromValue(double value, double average, double stdDeviation)
            { 
                return  Math.Exp(-0.5 * Math.Pow((value - average) / stdDeviation, 2)) 
                            / (Math.Sqrt(2*Math.PI) * stdDeviation);
            
            }
    
            private double EqualizedGaussFromValue(double value, double average, double stdDeviation)
            {
                return Math.Exp(-0.5 * Math.Pow((value - average) / stdDeviation, 2));
            }
    value ist der Messwert
    average ist der angenommene Scheitelpunkt der Kurve
    stdDeviation ist die Standardabweichung


    - Das mache ich einmal für die normalisierte Form (Integral der Glocke ist 1) und einmal für die egalisierte Form (Scheitelwert ist 1. Merke, der Scheitelwert wird nur durch den Bruchnenner normalisiert).

    - Das gleiche rechne ich auch für die anderen beiden Sensorwerte aus.
    - Summiere ich die Wahrscheinlichkeiten der drei Sensoren für die angenommene Distanz auf, bekomme ich eine normalisierte und eine egalisierte Gesamtwahrscheinlichkeit für die Annahme, dass meine Distanz real bei 90 cm liegt. Aber die Frage stellt sich: Wird dieser ermittelte Wert besser, wenn ich eine andere Distanz als realen Wert annehme?
    - Also tickere ich alle möglichen Distanzen einmal durch und schaue, wo Maxima in den Kurven liegen (Kreuzkorrelation).

    Die egalisierten Werte machen dabei die einzelnen Komponenten der Wahrscheinlichkeitssumme der drei Messwerte vergleichbar. Wo hier in der Kurve das Maximum zu finden ist, sollte sich mit der höchsten Wahrscheinlichkeit auch der reale Distanzwert befinden.

    Der normalisierte Wert dient zur Abschätzung, welche Streuung das Ergebnis hat. Er zeigt im Vergleich zu den normalisierten Scheitelpunktwerten der Glockenkurven einzelner Sensoren die Qualität oder die Streuung.

    (So ganz im Reinen bin ich mir da mit dem letzten Vergleich aber auch noch nicht. Der will noch nicht so, wie ich's erwarte.)

  3. #3
    HaWe
    Gast
    - Ich nehme rein intuitiv eine reale Distanz an, z.B. 90cm.
    - Ausgehend von diesen 90cm berechne ich über die Gaussfunktion
    nein, du kannst keine reale Distanz annehmen, da du sie absolut nicht kennst!
    du (und ich) haben keine Ahnung, rein keinen blassen Schimmer, was "da draußen" los ist,
    wir haben nur die Sensoren und ihre Messwerte, mit bekannter Messgenauigkeit.

    Der "reale Wert" kann Lichtjahre von den Messwerten entfernt liegen, und du kannst ja auf nem Arduino nicht schrittweise alle denkbaren Entfernungen per Gausskurve durch die gesamte Galaxis durchrechnen, und dann noch für 3,4,5,6 oder mehr Sensoren, und du hast von jedem Sensor auch nur genau 1 aktuellen Messwert.
    (klar, das mit den Lichtjahren ist übertrieben, aber mit 3 Sensorwerten kann schon der gesamte Bereich von 5 bis 150cm abgedeckt werden!)

    Beschränken wir uns aber jetzt auf die Fälle 1+2, wie genau sähe deine mathematische Berechnung aus (Arduino/AVR-kompatibel)?
    analog schrittweise wie hier berechnet:
    https://www.roboternetz.de/community...l=1#post646322

    - und wie lauten deine Ergebnisse für Fälle 1+2 als ausgerechnete Zahlen?

    - dann könnte man dein Verfahren mal gut mit meinem bisherigen nach Aufwand und Ergebnis vergleichen.
    Geändert von HaWe (01.09.2018 um 19:50 Uhr)

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.04.2015
    Beiträge
    903
    Zitat Zitat von HaWe Beitrag anzeigen
    nein, du kannst keine reale Distanz annehmen, da du sie absolut nicht kennst!
    du (und ich) haben keine Ahnung, rein keinen blassen Schimmer, was "da draußen" los ist,
    wir haben nur die Sensoren und ihre Messwerte, mit bekannter Messgenauigkeit.
    Natürlich kann ich das.
    Das nennt man Hypothese. Über die Kreuzkorrelation testet man systematisch alle möglichen Hypothesen gegeneinander. Die beste Hypothese davon verspricht die größte Genauigkeit der Übereinstimmung. Wobei hier "Genauigkeit der Übereinstimmung" die größte Wahrscheinlichkeit darstellt, dass die hypothetische Distanz wirklich der realen Distanz entspricht.

  5. #5
    HaWe
    Gast
    dann rechne es doch bitte mal vor, Schritt für Schritt, was kommt dann zahlenmäßig raus?

  6. #6
    HaWe
    Gast
    wie gesagt, dann rechne es doch bitte mal vor, Schritt für Schritt, was kommt dann zahlenmäßig raus?

    (Bei Arduino gibts übrigens auch keine Klasse Math, und deine Graphen habe ich auch nicht bei Arduino zur Verfügung, aber du kannst ja die echte mathematische Formel dafür hinschreiben;

    edit: übrigens auch bei einer Fehlmessung eines oder zweier Sensoren brauche ich aber irgendein Ergebnis, eben das wahrscheinlichste.)
    Geändert von HaWe (01.09.2018 um 20:20 Uhr)

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.04.2015
    Beiträge
    903
    Zitat Zitat von HaWe Beitrag anzeigen
    wie gesagt, dann rechne es doch bitte mal vor, Schritt für Schritt, was kommt dann zahlenmäßig raus?
    Kein Problem! Du findest im Log sämtliche relevanten Eingangswerte, Zwischenergebnisse sowie die übers Maximum bestimmten Bestfit-Werte
    Code:
    ==========================================
    Sensor1  Dist: 0120 rel. deviation: 0,20
    Sensor2  Dist: 0100 rel. deviation: 0,10
    Sensor3  Dist: 0090 rel. deviation: 0,05
    ==========================================
    Hypothetic dist:90 (dev1: 18,00  dev2: 9,00  dev3: 4,50)-->Norm.: 0,1181  Eq.: 1,7888
    Hypothetic dist:91 (dev1: 18,20  dev2: 9,10  dev3: 4,55)-->Norm.: 0,1186  Eq.: 1,8703
    Hypothetic dist:92 (dev1: 18,40  dev2: 9,20  dev3: 4,60)-->Norm.: 0,1154  Eq.: 1,9092
    Hypothetic dist:93 (dev1: 18,60  dev2: 9,30  dev3: 4,65)-->Norm.: 0,1095  Eq.: 1,9141
    Hypothetic dist:94 (dev1: 18,80  dev2: 9,40  dev3: 4,70)-->Norm.: 0,1019  Eq.: 1,8962
    Hypothetic dist:95 (dev1: 19,00  dev2: 9,50  dev3: 4,75)-->Norm.: 0,0937  Eq.: 1,8661
    Hypothetic dist:96 (dev1: 19,20  dev2: 9,60  dev3: 4,80)-->Norm.: 0,0857  Eq.: 1,8325
    Hypothetic dist:97 (dev1: 19,40  dev2: 9,70  dev3: 4,85)-->Norm.: 0,0784  Eq.: 1,8014
    Hypothetic dist:98 (dev1: 19,60  dev2: 9,80  dev3: 4,90)-->Norm.: 0,0722  Eq.: 1,7758
    Hypothetic dist:99 (dev1: 19,80  dev2: 9,90  dev3: 4,95)-->Norm.: 0,0670  Eq.: 1,7562
    Hypothetic dist:100 (dev1: 20,00  dev2: 10,00  dev3: 5,00)-->Norm.: 0,0628  Eq.: 1,7419
    Hypothetic dist:101 (dev1: 20,20  dev2: 10,10  dev3: 5,05)-->Norm.: 0,0594  Eq.: 1,7309
    Hypothetic dist:102 (dev1: 20,40  dev2: 10,20  dev3: 5,10)-->Norm.: 0,0565  Eq.: 1,7213
    Hypothetic dist:103 (dev1: 20,60  dev2: 10,30  dev3: 5,15)-->Norm.: 0,0541  Eq.: 1,7112
    Hypothetic dist:104 (dev1: 20,80  dev2: 10,40  dev3: 5,20)-->Norm.: 0,0519  Eq.: 1,6993
    Hypothetic dist:105 (dev1: 21,00  dev2: 10,50  dev3: 5,25)-->Norm.: 0,0499  Eq.: 1,6845
    Hypothetic dist:106 (dev1: 21,20  dev2: 10,60  dev3: 5,30)-->Norm.: 0,0480  Eq.: 1,6666
    Hypothetic dist:107 (dev1: 21,40  dev2: 10,70  dev3: 5,35)-->Norm.: 0,0461  Eq.: 1,6453
    Hypothetic dist:108 (dev1: 21,60  dev2: 10,80  dev3: 5,40)-->Norm.: 0,0442  Eq.: 1,6209
    Hypothetic dist:109 (dev1: 21,80  dev2: 10,90  dev3: 5,45)-->Norm.: 0,0423  Eq.: 1,5939
    Hypothetic dist:110 (dev1: 22,00  dev2: 11,00  dev3: 5,50)-->Norm.: 0,0404  Eq.: 1,5647
    Hypothetic dist:111 (dev1: 22,20  dev2: 11,10  dev3: 5,55)-->Norm.: 0,0386  Eq.: 1,5339
    Hypothetic dist:112 (dev1: 22,40  dev2: 11,20  dev3: 5,60)-->Norm.: 0,0368  Eq.: 1,5019
    Hypothetic dist:113 (dev1: 22,60  dev2: 11,30  dev3: 5,65)-->Norm.: 0,0351  Eq.: 1,4694
    Hypothetic dist:114 (dev1: 22,80  dev2: 11,40  dev3: 5,70)-->Norm.: 0,0334  Eq.: 1,4366
    Hypothetic dist:115 (dev1: 23,00  dev2: 11,50  dev3: 5,75)-->Norm.: 0,0318  Eq.: 1,4039
    Hypothetic dist:116 (dev1: 23,20  dev2: 11,60  dev3: 5,80)-->Norm.: 0,0302  Eq.: 1,3715
    Hypothetic dist:117 (dev1: 23,40  dev2: 11,70  dev3: 5,85)-->Norm.: 0,0288  Eq.: 1,3398
    Hypothetic dist:118 (dev1: 23,60  dev2: 11,80  dev3: 5,90)-->Norm.: 0,0274  Eq.: 1,3088
    Hypothetic dist:119 (dev1: 23,80  dev2: 11,90  dev3: 5,95)-->Norm.: 0,0261  Eq.: 1,2787
    Hypothetic dist:120 (dev1: 24,00  dev2: 12,00  dev3: 6,00)-->Norm.: 0,0249  Eq.: 1,2494
    Normalized optimal probability 0,119 at distance 91
    Equalized optimal probability 1,914 at distance 93
    ==========================================
    Soll ich Dir die Zwischenschritte jetzt noch mit nem Taschenrechner herleiten oder schaffst Du den Rest selbst?


    Zitat Zitat von HaWe Beitrag anzeigen
    (Bei Arduino gibts übrigens auch keine Klasse Math, und deine Graphen habe ich auch nicht bei Arduino zur Verfügung, aber du kannst ja die echte mathematische Formel dafür hinschreiben;
    Das Bild hast Du selber aus Wikipedia in einem Deiner vorherigen Posts kopiert. Die Formel darunter hast Du nicht gesehen? Such noch mal Dichtefunktion im rechten Kasten bei https://de.wikipedia.org/wiki/Normalverteilung. Neben KlickiBunti-Bildern bekommt man da auch ne Funktion, die Dir für ein x bei gegebenem Sigma und µ den Wert der Kurve zurückgibt. (Das y= oder f(x)= davor musst Du Dir allerdings denken.)


    Zitat Zitat von HaWe Beitrag anzeigen
    edit: übrigens auch bei einer Fehlmessung eines oder zweier Sensoren brauche ich aber irgendein Ergebnis, eben das wahrscheinlichste.)
    Nein, wenn Du jemals ein fehlertolerantes System programmiert hast, dann kommst Du zu der Erkenntnis, dass Du das nicht brauchst. Da sind unplausible Messergebnisse genauso zu behandeln, wie fehlerhafte Eingangsparameter einer Funktion. Die fängt man ab.
    Geändert von Holomino (01.09.2018 um 21:37 Uhr)

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.04.2015
    Beiträge
    903
    Zitat Zitat von HaWe Beitrag anzeigen
    Der "reale Wert" kann Lichtjahre von den Messwerten entfernt liegen, und du kannst ja auf nem Arduino nicht schrittweise alle denkbaren Entfernungen per Gausskurve durch die gesamte Galaxis durchrechnen, und dann noch für 3,4,5,6 oder mehr Sensoren, und du hast von jedem Sensor auch nur genau 1 aktuellen Messwert.
    (klar, das mit den Lichtjahren ist übertrieben, aber mit 3 Sensorwerten kann schon der gesamte Bereich von 5 bis 150cm abgedeckt werden!)
    Das würde alleine durch die Anzahl der Maxima (3!) in der Reihe der Hypothesen auffallen...
    Klicke auf die Grafik für eine größere Ansicht

Name:	NoConclusion.jpg
Hits:	5
Größe:	29,6 KB
ID:	33599
    … und kann auch gleich als Fehlmessung im Orkus verschwinden.

Ähnliche Themen

  1. Sensorfusion Kompass und Ultraschall (Zeitstempel?)
    Von BattleBot im Forum Robby RP6
    Antworten: 1
    Letzter Beitrag: 13.01.2013, 02:46
  2. Infos zu den Themen Sensorfusion / Kalman-Filterung?
    Von katakombi_ im Forum Sensoren / Sensorik
    Antworten: 2
    Letzter Beitrag: 28.01.2005, 18:44

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen