22
33author: Sebastian Zug & Georg Jäger
445- version: 1.0.1
5+ version: 1.1.0
66language: de
77comment: In dieser Vorlesungen werden die Schichten einer Roboterarchitektur adressiert.
88narrator: Deutsch Female
@@ -278,7 +278,7 @@ style="width: 100%; min-width: 380px; max-width: 720px; display: block; margin-l
278278 Schild erkannt +------+------+
279279 nein | 1 | 7 | 8
280280 +------+------+
281- 12 8 20
281+ 11 9 20
282282```
283283
284284_ Vierfeldertafel unseres "Schilderkenners"_
@@ -314,7 +314,7 @@ Wie können wir diese Sensorcharakteristik nun für unser Roboterbeispiel verwen
314314import numpy as np
315315
316316markers = np.array([0 , 1 ., 0 , 0 , 1 ., 1 ., 0 , 0 , 0 , 0 ])
317- truePositive = 0.72
317+ truePositive = 0.83
318318belief = markers / sum (markers)* truePositive
319319belief[markers == 0 ] = (1 - truePositive)/ np.count_nonzero(markers== 0 )
320320print (belief)
@@ -374,7 +374,7 @@ $$posteriori = \frac{likelihood \cdot prior}{normalization}$$
374374import numpy as np
375375apriori = np .array ([1. / 10 ]* 10 )
376376markers = np .array ([0 , 1. , 0 , 0 , 1. , 1. , 0 , 0 , 0 , 0 ])
377- truePositive = 0.72
377+ truePositive = 0.83
378378belief = markers / sum (markers)* truePositive
379379belief[markers == 0 ] = (1 - truePositive)/ np .count_nonzero (markers== 0 )
380380posteriori = (apriori * belief) / sum (apriori* belief)
@@ -431,13 +431,13 @@ Wie können wir unsere Positionsschätzung verbessern:
4314312. Einbettung weiterer Sensoren
4324323. Wiederholung der Messungen (sofern wir von statistisch unabhängigen Messungen ausgehen)
433433
434- Lassen Sie uns die Messung einige Male wiederholen und diese Erkenntnis einfließen .
434+ Lassen Sie uns die Messung einige Male wiederholen. Das folgende Diagramm zeigt die Schätzung an der Position 1, nachdem mehrere Messungen fusioniert wurden .
435435
436436` ` ` python constantPosition .py
437437import numpy as np
438438apriori = np .array ([1. / 10 ]* 10 )
439439markers = np .array ([0 , 1. , 0 , 0 , 1. , 1. , 0 , 0 , 0 , 0 ])
440- truePositive = 0.72
440+ truePositive = 0.83
441441belief = markers / sum (markers)* truePositive
442442belief[markers == 0 ] = (1 - truePositive)/ np .count_nonzero (markers== 0 )
443443p_1 = []; p_1 .append (apriori[1 ])
@@ -588,7 +588,7 @@ def predict_move(belief, move, p_under, p_correct, p_over):
588588belief = [0. , 0. , 1. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ]
589589#belief = [0. , 0. , .4 , .6 , 0. , 0. , 0. , 0. , 0. , 0. ]
590590print (belief)
591- print ( predict_move (belief, 1 , .1 , .8 , .1 ))
591+ print ( predict_move (belief, 1 , .1 , .7 , .2 ))
592592```
593593``` js -Visualization
594594var lines = data .Result .split (' \n ' );
@@ -659,9 +659,9 @@ Wie groß ist die Wahrscheinlichkeit, dass wir Segment x erreichen? Dabei berüc
659659| 0 | | nicht erreichbar |
660660| 1 | | nicht erreichbar |
661661| 2 | $0.4 \cdot 0.1$ | $0.04$ |
662- | 3 | $0.4 \cdot 0.8 + 0.6 \cdot 0.1$ | $0.38 $ |
663- | 4 | $0.4 \cdot 0.1 + 0.6 \cdot 0.8 $ | $0.52 $ |
664- | 5 | $0.6 \cdot 0.1 $ | $0.06 $ |
662+ | 3 | $0.4 \cdot 0.7 + 0.6 \cdot 0.1$ | $0.34 $ |
663+ | 4 | $0.4 \cdot 0.2 + 0.6 \cdot 0.7 $ | $0.5 $ |
664+ | 5 | $0.6 \cdot 0.2 $ | $0.12 $ |
665665| 6 | | nicht erreichbar |
666666| 7 | | ... |
667667
@@ -671,16 +671,21 @@ Grafisch dargestellt ergibt sich damit folgendes Bild:
671671style="width: 100%; min-width: 380px; max-width: 720px; display: block; margin-left: auto; margin-right: auto;"
672672-->
673673``` ascii
674- | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
674+ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
675675
676- priori 0 0 0.4 0.6 0 0 0 0 0 0
677- [0.1 0.8 0.1] -->
676+ priori 0 0 0.4 0.6 0 0 0 0 0 0
678677
679- [0.1 0.8 0.1]
680- 0.04
678+ Reihenfolge [0.2 0.7 0.1] An die Stelle i=2 kann ich von i=0 (p=0.2)
679+ invertiert 0.04 und i=1 (p=0.7) gelangen.
680+ ====
681681
682- [0.1 0.8 0.1]
683- 0.38
682+ [0.2 0.8 0.1]
683+ 0.34
684+ ====
685+
686+ [0.2 0.8 0.1]
687+ 0.5
688+ ====
684689```
685690_ Abbildung des Streckenmodels (O = Orange Warnschilder am Ufer, S = Starke Strömung, B = Brücken)_
686691
@@ -696,7 +701,7 @@ from scipy import ndimage
696701
697702belief = [.05 , .5 , .05 , .05 , .05 , .05 , .05 , .05 , .05 , .05 ]
698703print (belief)
699- kernel = [.1 , 0.8 , 0.1 ]
704+ kernel = [.1 , 0.7 , 0.2 ]
700705prior = ndimage.convolve(np.roll(belief, len (kernel) / 2 ), kernel, mode = ' wrap' )
701706print (prior)
702707# belief = prior # Multiple movements
@@ -805,9 +810,9 @@ import numpy as np
805810from scipy import ndimage
806811
807812priori = np.array([1./10]*10)
808- kernel = [.1, 0.8 , 0.1 ]
813+ kernel = [.1, 0.7 , 0.2 ]
809814markers = np.array([0, 1., 0, 0, 1., 1., 0, 0, 0, 0])
810- truePositive = 0.72
815+ truePositive = 0.83
811816belief = markers / sum(markers)*truePositive
812817belief[markers == 0] = (1-truePositive)/np.count_nonzero(markers==0)
813818# FIRST LOOP - prediction
0 commit comments