Robot Motion Planning

Werbung
Robot Motion
Planning
Stefan Edelkamp
Überblick
- Kürzeste Wege
- Sichtbarkeitsgraphen
- Kürzeste Wege für punktförmige Roboter
- Kürzeste Wege für polygonale Roboter
- Trapezzerlegung
- Wegeberechnung
- Minkowski-Summen
- Bewegungsplanung mit Translation und
Rotation
1
Kürzeste Wege für Punktroboter
Gegeben:
• Menge H von disjunkten polygonalen
(offenen) Hindernissen mit insgesamt n
Kanten
• Startposition ps, Zielposition pe, beide
in Cf ree
Gesucht:
Der kürzeste Weg von ps nach pe in Cf ree
ps
pe
ps
pe
2
Eigenschaften kürzester Wege
Gummiband-Eigenschaft:
pe
ps
Definition
Sei W ein polygonaler Weg von ps nach pe.
Dann heißen die Ecken von W , die ungleich ps
oder pe sind, innere Ecken von W .
ps
pe
3
Eigenschaften kürzester Wege
Lemma
Jeder kürzeste Weg W von ps nach pe
zwischen einer Menge H von disjunkten
polygonalen Hindernissen ist ein polygonaler
Weg, dessen innere Ecken Ecken von H sind.
Beweis :
Polygonalität:
Angenommen, W ist nicht polygonal
⇒ Es gibt ein p ∈ W im Inneren von Cf ree ,
so daß kein Liniensegment in W p
enthält.
⇒ Es gibt einen Kreis in Cf ree, der p
enthält
W
4
Eigenschaften kürzester Wege
Beweis : (Fortsetzung)
Ecke v von W :
Angenommen, v ist keine Ecke von H
⇒ v ist nicht im Inneren von Cf ree
⇒ v ist im inneren einer Kante
⇒ Es gibt einen Halbkreis in Cf ree , der v
enthält
W
5
Eigenschaften kürzester Wege
Ein kürzester Weg von ps nach pe zwischen
einer Menge H von disjunkten polygonalen
Hindernissen besteht aus:
1. Liniensegmenten von ps bzw. pe zu Ecken
von H und
2. Liniensegmenten von einer Ecke von H zu
einer anderen.
Definition
Zwei Punkte v1 und v2 heißen gegenseitig
sichtbar, falls das Liniensegment v1v2 nicht
das Innere eines Hindernisses schneidet.
6
1
Sichtbarkeitsgraphen
Sichtbarkeitsgraph Gvis(H) von H:
Knoten Vvis (H) von Gvis(H): Ecken von H
Kanten Evis(H) von Gvis(H):
(v1, v2) ∈ Evis(H), falls v1 und v2
gegenseitig sichtbar
sind.
Sichtbarkeitsgraphen
7
Sichtbarkeitsgraphen und kürzeste
Wege
Ein kürzester Weg von ps nach pe zwischen
einer Menge H von disjunkten polygonalen
Hindernissen besteht aus Kanten des
Sichtbarkeitsgraphen Gvis(H∗), wobei
H∗ = H ∪ {ps, pe}.
pe
ps
Sichtbarkeitsgraphen
8
Berechnung kürzester Wege
Algorithmus kürzesterWeg
Input:
Eine Menge H von disjunkten
polygonalen Hindernissen und zwei
Punkte ps und pe in Cf ree
Output: Der kürzeste kollisionsfreie Weg
von ps nach pe
1
Gvis ← Sichtbarkeitsgraph(H ∪ {ps, pe })
2
Gewichte jede Kante (u, v) in Gvis mit
der euklidischen Distanz von u nach
v
3
Berechne einen kürzesten Weg W von
ps nach pe in Gvis mit dem
Algorithmus von Dijkstra
4
Gebe W zurück
Analyse
|Evis| ≤
n + 2
2
Sichtbarkeitsgraphen
= O(n2), Dijkstra O(n log n)
9
2
Berechnung des
Sichtbarkeitsgraphen
Naives Verfahren:
Algorithmus Sichtbarkeitsgraph1
Input:
Eine Menge H von disjunkten
polygonalen Hindernissen
Output: Der Sichtbarkeitsgraph Gvis(H) von
H
1
Gvis ← (Vvis , Evis) mit
2
Vvis ← die Menge der Eckpunkte
von H
3
Evis ← ∅
4
for all (u, v) ∈ Vvis × Vvis
;;
O(n2)
5
if uv schneidet kein Hindernis
;;
O(n)
6
then füge (u, v) zu Evis hinzu
7
Gebe Gvis = (Vvis , Evis) zurück
⇒ O(n3)
Berechnung des Sichtbarkeitsgraphen
10
Berechnung des
Sichtbarkeitsgraphen
Besserer Algorithmus:
Algorithmus Sichtbarkeitsgraph2
Input:
Eine Menge H von disjunkten
polygonalen Hindernissen
Output: Der Sichtbarkeitsgraph Gvis(H) von
H
1
Gvis ← (Vvis , Evis) mit
2
Vvis ← die Menge der Eckpunkte
von H
3
Evis ← ∅
4
for all v ∈ Vvis
{ O(n) }
5
W ← SichtbareEcken(v, H)
for all w ∈ W
6
7
füge die Kante (v, w) zu Evis
hinzu
8
Gebe Gvis = (Vvis , Evis) zurück
Berechnung des Sichtbarkeitsgraphen
11
Sichtbarkeitspolygon
Definition
Die Menge der Punkte, die von einem Punkte
p der Ebene aus sichtbar sind, heißt das
Sichtbarkeitspolygon von p.
Hier: von p aus sichtbare Ecken
Berechnung des Sichtbarkeitsgraphen
12
Berechnung der sichtbaren Ecken
Idee:
• Sortiere die Ecken zyklisch um p
• Betrachte die Ecken in dieser
Reihenfolge mit Hilfe eines
Scanstrahls ̺
• Verwalte die Kanten, die von ̺
geschnitten werden, in einer
Suchstruktur
e1
e8
p
e7
e6
e4
e3
e2
̺
e5
T
e7
e3
e2
e4
e6
e8
Berechnung des Sichtbarkeitsgraphen
13
Rotationsweep Events
e2
sichtbar(v)
delete(e1 )
insert(e2 )
v
p
e1
e3
e1
p
v e2
p
v′
insert(e3 )
v
e2
sichtbar(v)
sichtbar(v ′ )
insert(e1 )
e1
Berechnung des Sichtbarkeitsgraphen
sichtbar(v)
delete(e1 )
delete(e2 )
14
Sichtbare Ecken
Algorithmus SichtbareEcken
Input:
Menge H von Polygonen und Punkt
p nicht im Innern eines Polygons
Output: Die von p aus sichtbaren Ecken in H
1
2
3
4
5
6
7
8
9
10
(v1, . . . , vn) ← Sortiere Ecken v nach
winkel(p, v) ;; O(n log n)
̺ ← horizontale Strahl beginnend bei p
Finde alle Kanten e die ̺ schneiden
und speichere sie in einem Suchbaum
T , ;; O(n) + O(n log n)
W ←∅
for i ← 1 to n
if sichtbar(vi )
; ; O(log n)
then W ← W ∪ {vi}
füge die zu vi inzidenten
Kanten links von ̺ in T
;; O(log n)
ein;
entferne die zu vi inzidenten
Kanten rechts von ̺ aus
T
;; O(log n)
return W
⇒ O(n log n)
Berechnung des Sichtbarkeitsgraphen
15
Sichtbarkeit von Ecken
Sichtbarkeit von vi ist abhängig von:
• Suchstruktur T
• Ecke vi−1
Verschiedene Fälle: vi−1 ist sichtbar
p
vi−1
p
vi−1
vi
p
vi−1
vi
p
vi−1
vi
vi
Berechnung des Sichtbarkeitsgraphen
16
Sichtbarkeit von Ecken
Algorithmus sichtbar
1
if pvi schneidet das Polygon von vi
lokal bei vi
2
then return
6
7
if i = 1 or vi−1 6∈ pvi
then e ← linkeste Kante in T
if e existiert nicht or
vi auf oder links von e
then return true
else return false
8
9
/∗ i 6= 1 and vi−1 ∈ pvi ∗/
if vi−1 ist nicht sichtbar
then return false
3
4
5
10
11
12
13
/∗ vi−1 ist sichtbar ∗/
Suche Kante e in T , die vi−1vi
schneidet
if e existiert
then return false
else return
Berechnung des Sichtbarkeitsgraphen
17
Analyse von SichtbareEcken
Sortieren: O(n log n)
Aufbau von T : O(n2 log n)
sichtbar(vi ): n × O(log n)
Update von T : n × O(log n)
⇒ O(n log n + Evis)
Satz
Der Sichtbarkeitsgraph einer Menge H von
disjunkten polygonalen Hindernissen mit n
Kanten kann in Zeit O(n2 log n) berechnet
werden.
Berechnung des Sichtbarkeitsgraphen
18
3
Wege für polygonale Roboter
Translatorisches Bewegungsplanungproblem
für polygonalen Roboter R zwischen
Hindernissen {P1, . . . , Pt} entspricht
Bewegungsplanungsproblem für Punktroboter
zwischen Hindernissen {−R ⊕ P1, . . . , −R ⊕ Pt}.
Wege für polygonale Roboter
19
4
Trapezzerlegung
Annahmen:
• punktförmiger Roboter R
• polygonale, disjunkte Hindernisse
H = {P1, . . . , Pt}
mit insgesamt n Eckpunkten
• Rechteck B enthält die Hindernisse
Cf ree = Cf ree(R, H) = B \
t
[
Pi
i=1
P6
R
P1
P3
P4
P2
Trapezzerlegung
B
P5
Cf ree
20
Der freie Raum
Trapez-Zerlegung:
for all v Eckpunkt in H
zeichne ein vertikales Liniensegment
in v nach oben und eines nach
unten
die Liniensegmente enden beim
ersten Hindernis oder bei B
Algorithmus BerechneFreienRaum(H)
Input:
Eine Menge H von disjunkten,
polygonalen Hindernissen
Output: Die vertikale Dekomposition von
Cf ree(R,H) für einen Punktroboter
R
1
Sei E die Menge der Kanten in H
2
Berechne die Trapez-Zerlegung T (E)
von E
3
Entferne die Trapeze im inneren der
Hindernisse von H
4
Gebe die entstehende Unterteilung
T (Cf ree) zurück
Trapezzerlegung
21
Der freie Raum
Lemma
Die Trapez-Zerlegung des freien
Konfigurationsraumes kann in O(n log n)
erwarteter Zeit berechnet werden.
Trapezzerlegung
22
Berechnung eines Weges
Gegeben: ps der Startpunkt und pe der
Zielpunkt
Gesucht: Ein kollisionsfreier Weg von ps
nach pe
1. Fall: ps und pe gehören zum gleichen
Trapez
pe
ps
2. Fall: ps und pe gehören zu verschiedenen
Trapezen ⇒ ??
Trapezzerlegung
23
Die Straßenkarte (Road map)
Straßenkarte Groad: planarer, in Cf ree eingebetter Graph
Knoten von Groad: Trapez- und vertikale
Kanten-Mittelpunkte
Kanten von Groad:
for all Trapeze T
füge Kanten von dem Mittelpunkt
von T zu den Mittelpunkten der T
be- grenzenden vertikalen Kanten
ein
Trapezzerlegung
24
Die Straßenkarte (Road map)
ps
pe
ps
pe
Zeit zur Konstruktion der Straßenkarte: O(n)
Trapezzerlegung
25
Algorithmus zur Wegeberechnung
Algorithmus BerechneWeg
Input:
vertikale Dekomposition T (Cf ree ),
Straßenkarte Groad, Start- und
Zielpunkt ps und pe
Output: Ein Weg von ps nach pe , falls einer
existiert; ansonsten eine Meldung,
daß kein Weg existiert
1
2
3
4
5
6
7
8
Bestimme Trapeze ∆s und ∆e, die ps
und pe enthalten
if ∆s oder ∆e existiert nicht
then melde, daß ps oder pe in Cf orb
else seien vs und ve Mittelpunkte
von ∆s bzw. ∆e
berechne Weg W von vs nach ve
in Groad
if W existiert nicht
then melde, daß kein Weg
existiert
else return
W ∗ = psvs ◦ W ◦ vepe
Trapezzerlegung
26
Korrektheit von BerechneWeg
Lemma
Algorithmus BerechneWeg gibt einen
kollisionsfreien Weg zurück gdw es einen
solchen Weg gibt.
Beweis
⇒: W ∗ ist kollisionsfrei
⇐: Sei W ′ kollisionfreier Weg von ps nach pe
W ′ schneidet eine Folge F von benachbarten
Trapezen:
F = (∆1, ∆2, . . . , ∆k )
mit
∆1 = ∆s
und
∆5
pe
∆1
ps
∆4
∆2
Trapezzerlegung
∆k = ∆e
∆3
27
Korrektheit von BerechneWeg
Beweis (Fortsetzung)
Sei vi Mittelpunkt von ∆i
∆i und ∆i+1 sind benachbart
⇒ Es gibt einen Weg von vi nach vi+1 in
Groad
⇒ Es gibt einen Weg von v1 nach vk in Groad
⇒ Der Algorithmus findet einen Weg von vs
nach ve
⇒ Der Algorithmus findet einen Weg von ps
nach pe
∆5
pe
∆1
ps
∆4
∆2
∆3
Zeitkomplexität von BerechneWeg: O(n log n)
(erwartet)
Trapezzerlegung
28
5
Minkowski Summen
Ziel: Berechnung des freien Konfigurationsraumes für polygonale Roboter
Definition
Konfigurationshindernis oder C-Hindernis C(P)
zu Hindernis P:
C(P) = {(x, y) | R(x, y) ∩ P 6= ∅}
Minkowski Summen
29
Minkowski Summe
Definition
Seien S1, S2 ⊆ IR2. Die Minkowski-Summe von
S1 und S2 ist definiert als
S1 ⊕ S2 = {p + q | p ∈ S1, q ∈ S2}
wobei mit p = (p1, p2) und q = (q1, q2)
p + q = (p1 + q1, p2 + q2)
Ferner sei
−p = (−p1, −p2)
und
−S = {−p | p ∈ S}
P ⊕R
P
R
Minkowski Summen
30
C-Hindernisse
Satz
C(P) = P ⊕ (−R(0, 0))
Beweis
“⊆”: Sei q ∈ C(P) und p ∈ P ∩ R(q)
⇒ p − q ∈ R(0, 0)
⇒ −p + q ∈ {(0, 0)} ⊕ (−R(0, 0))
⇒
q ∈ {p} ⊕ (−R(0, 0)) ⊆ P ⊕ (−R(0, 0))
“⊇”: Sei q ∈ P ⊕ (−R(0, 0))
⇒ q = p − r, mit p ∈ P, r ∈ R(0, 0)
⇒ p=q+r
⇒ p ∈ P ∩ R(q)
Minkowski Summen
31
Extreme Punkte
Beobachtung
Sei
Q = P ⊕ R,
dann ist ein in Richtung d~ extremer Punkt von
Q die Summe von in Richtung d~ extremen
Punkten von P und R.
P ⊕R
d~
P
R
Minkowski Summen
32
Komplexität von P ⊕ R
Satz
Seien P und R konvex mit n bzw. mit m
Kanten, dann ist
P ⊕R
ein konvexes Polygon mit höchstens n + m
Kanten.
Beweis Konvexität von P ⊕ R folgt aus der
Definition
Sei e eine Kante von P ⊕ R
⇒ e ist extrem in Richtung ihrer äußerer
Normalen ~
ue
⇒ e wird von in Richtung ~
ue extremen
Punkten von P und R erzeugt
⇒ es gibt eine in Richtung ~
ue extreme
Kante e′ von P oder R
⇒ weise e der Kante e′ zu
Minkowski Summen
33
Berechung der Minkowski-Summe
Definition
winkel(p, q)
p
q
Algorithmus Minkowski-Summe
Input:
Konvexe Polygone P = (v1, . . . , vn)
und R = (w1, . . . , wm) mit v1 und
w1 y-minimale Ecken
Output: Die Minkowski-Summe P ⊕ R
1
i ← 1; j ← 1
2
vn+1 ← v1; wm+1 ← w1
repeat
3
4
Füge vi + wj als Ecke zu P ⊕ R hinzu
5
if winkel(vi , vi+1) < winkel(wj , wj+1)
6
then i ← i + 1
if winkel(vi , vi+1) > winkel(wj , wj+1)
7
8
then j ← j + 1
9
if winkel(vi , vi+1) = winkel(wj , wj+1)
10
then i ← i + 1, j ← j + 1
11 until i = n + 1 ∧ j = m + 1;
Minkowski Summen
34
Beispiel
v3
w3
w4
R
v2
P
w2
v1
w1
Satz
Die Minkowski-Summe zweier konvexer
Polygone mit n bzw. m Kanten kann in Zeit
O(n + m) berechnet werden.
Minkowski Summen
35
Pseudo-Scheiben
Definition
Zwei planare Objekte O1 und O2 heißen
Pseudo-Scheiben, falls O1 \ O2 und O2 \ O1
zusammenhängend ist.
Beobachtung
Die Ränder zweier Pseudo-Scheiben haben
höchstens zwei echte Kreuzungen.
Minkowski Summen
36
Extreme Punkte
Definition
Seien P1 und P2 zwei Polygone mit
disjunktem Innerem in der Ebene. P1 heißt
extremer in Richtung d~ als P2, falls P1 Punkte
besitzt, die weiter in Richtung d~ liegen als P2.
d~1
P2
d~2
P1
d~3
Minkowski Summen
37
Extreme Punkte
Beobachtung
Seien P1 und P2 zwei Polygone in der Ebene
mit disjunktem Inneren und d~1 und d~2 zwei
Richtungen, so daß P1 extremer als P2 in
Richtung d~1 und d~2 ist.
Dann ist P1 entweder in allen Richtungen von
d~1 nach d~2 oder in allen Richtungen von d~2
nach d~1 extremer als P2.
d~2
P2 ist extremer
P2
d~1
P1
d~2
d~3
d~1
d~3
P1 ist extremer
Minkowski Summen
38
Minkowski-Summen als
Pseudo-Scheiben
Satz
Seien P1 und P2 zwei konvexe Polygone mit
disjunktem Innerem und R ein weiteres
konvexes Polygon. Dann sind C1 = P1 ⊕ R und
C2 = P2 ⊕ R Pseudo-Scheiben.
Beweis
Zu zeigen: C1 \ C2 und C2 \ C1 sind
zusammenhängend
Annahme: C1 \ C2 besteht aus mindestens
zwei Zus.hangskomponenten Z1
und Z2
C1 und C2 sind konvex
⇒ es gibt d~1 ∈ Z1 und d~2 ∈ Z2 mit C1 ist
extremer als C2 in Richtung d~1 und d~2
⇒ P1 ist extremer als P2 in Richtung d~1 und
d~2
P1 und P2 haben disjunkte Innere
⇒ P1 ist extremer als P2 für alle Richtungen
von d~1 bis d~2 (oder d~2 bis d~1)
⇒ C1 ist extemer als C2 für alle Richtungen
von d~1 bis d~2
Widerspruch!
Minkowski Summen
39
Vereinigung von Pseudo-Scheiben
Satz
Sei S eine Menge von polygonalen
Pseudo-Scheiben mit insgesamt n Kanten.
Dann ist die Komplexität ihrer Vereinigung V
höchstens 2n.
Beweis V enthält zwei Arten von Ecken
1. Ecken der Polygone in S und
2. Kantenschnittpunkte von Polygonen in S
zu 2.: Betrachte Kantenschnittpunkt
v = e ∩ e′
Endpunkt v ′ von e oder e′ liegt im
Inneren von V
⇒ Weise v v ′ zu
v ′ hat zwei inzidente Kanten
⇒ höchstens zwei zugewiesene Kantenschnittpunkte
Minkowski Summen
40
Nicht-konvexe Polygone
S1 ⊕ (S2 ∪ S3) = {s1 + s | s1 ∈ S1, s ∈ S2 ∪ S3}
= {s1 + s2 | s1 ∈ S1, s2 ∈ S2}
∪{s1 + s3 | s1 ∈ S1, s3 ∈ S3}
= (S1 ⊕ S2) ∪ (S1 ⊕ S3)
P nicht konvex:
1. trianguliere P ⇒ Dreiecke T1, . . . , Tn−2
P
2. berechne
P ⊕R=
n−2
[
Ti ⊕ R
i=1
Komplexität: O(nm)
Minkowski Summen
41
Nicht-konvexe Polygone
P ⊕R
P
R
Minkowski Summen
42
Nicht-konvexe Polygone
P und R nicht konvex:
1. trianguliere P ⇒ Dreiecke T1, . . . , Tn−2
2. trianguliere auch R ⇒ Dreiecke
U1, . . . , Um−2
3. berechne
P ⊕R=
n−2
[
[ m−2
Ti ⊕ U j
i=1 j=1
Komplexität: O(n2m2)
P
P ⊕R
R
Minkowski Summen
43
6
Bewegungsplanung mit
Translationen
C-Hindernisse: P ⊕ (−R(0, 0))
i
Satz
Sei R ein Roboter mit konstant vielen Kanten
und H eine Menge von Hindernissen mit n
Kanten. Dann ist die Komplexität des freien
Konfigurationsraumes für Translationen O(n).
Seien T1, . . . , Tn die Dreiecke einer
Triangulation der Hindernisse
Wir berechnen
Cf orb =
n
[
i=1
Ci =
n
[
Ti ⊕ (−R(0, 0))
i=1
Bewegungsplanung mit Translationen
44
Berechung von Cf orb
Algorithmus VerbotenerRaum
Input:
Eine Menge H = {T1, . . . , Tn} von
Dreiecken und ein Roboter R
Sn
S
C
=
Output: Cf orb = n
i=1 Ti ⊕(−R(0, 0))
i=1 i
1
if n = 1
then returnT1 ⊕ (−R(0, 0))
2
3
else Cf1orb = V erbotenerRaum(T1 , . . . , T⌊n/2⌋)
4
Cf2orb = V erbotenerRaum(T⌊n/2⌋+1, . . . , Tn)
5
berechne Cf orb = Cf1orb ∪ Cf2orb
return Cf orb
6
Bewegungsplanung mit Translationen
45
Analyse VerbotenerRaum
Triangulierung: |Pi| = mi
t
X
mi log mi ≤
t
X
mi log n = n log n
i=1
i=1
Berechnung der C-Hindernisse:
n
X
O(1) = O(n)
i=1
Berechnung von Cf1orb ∪ Cf2orb :
|Cf1orb| = n1, |Cf2orb| = n2, |Cf orb| = k
O((n1 + n2 + k) log(n1 + n2)) = O(n log n)
Rekursion:
T (n) = T (⌊n/2⌋) + T (⌈n/2⌉) + O(n log n)
= O(n log2 n)
Bewegungsplanung mit Translationen
46
Zusammenfassung
Satz
Sei R ein konvexer Roboter mit konstant
vielen Kanten, der translatorische Bewegungen
zwischen einer Menge H von disjunkten
Hindernissen mit insgesamt n Kanten ausführt.
Man kann H in O(n log2 n) erwarteter Zeit
vorverarbeiten, so daß für jede Start- und
Zielposition ein kollisionsfreier Weg für R,
sofern er existiert, in O(n) Zeit berechnet
werden kann.
Bewegungsplanung mit Translationen
47
7
Bewegungsplanung mit
Translationen und Rotationen
• konvexer, polygonaler Roboter R
• polygonale, disjunkte Hindernisse
H = {P1, . . . , Pt}
• drei Freiheitsgrade: zwei translatorische
und einen für die Rotation
Konfigurationsraum:
(x, y, ϕ) ∈ C(R) = IR2 × [0, 2π) 7→ R(x, y, ϕ)
Konfigurationshindernisse:
C(Pi) = {(x, y, ϕ) | R(x, y, ϕ) ∩ Pi 6= ∅}
Bewegungsplanung mit Translationen und Rotationen
48
Konfigurationshindernisse
Betrachte Schnitte mit den Ebenen h : ϕ = ϕ0
P
R
0
π/4
π/2
3π/4
π
Minkowski-Summe
Pi + (−R(0, 0, ϕ))
ändert sich stetig in ϕ.
Bewegungsplanung mit Translationen und Rotationen
49
Ein Algorithmus
Definition
Der Schnitt des Konfigurationsraums von R
mit einer Ebene h : ϕ = ϕ0 heißt Scheibe Sϕ0
des Konfigurationsraums.
Idee:
• Zerteile Konfigurationsraum in Scheiben
• Zerlege die Bewegung des Roboters in
Translationen innerhalb einer Scheibe
und
• Rotationen zwischen Scheiben
m = Anzahl der Scheiben
Scheiben werden für Winkel ϕi berechnet:
ϕi = i ×
2π
m
Bewegungsplanung mit Translationen und Rotationen
50
Ein Algorithmus
Algorithmus
ein konvexer polygonaler Roboter R
Input:
und eine Menge von Hindernisse H
Output: eine Straßenkarte Groad für C(R)
1
2
3
4
5
6
7
8
T−1 ← ∅; G−1 ← (∅, ∅); Groad ← ∅
for i ← 0 to m − 1
berechne Scheibe Sϕi von C(R, H)
berechne Trapezzerlegung Ti von
Sϕi
berechne Straßenkarte Gi von Ti
verknüpfe Gi mit Gi−1 und füge Gi
und die Verknüpfungen Groad hinzu
verknüpfe G0 mit Gm−1 und füge die
Verknüfungen zu Groad hinzu
return Groad
Bewegungsplanung mit Translationen und Rotationen
51
Verknüpfung zweier Straßenkarten
Algorithmus Verknüpfung von Gi mit Gi−1
1
Berechne die Überlagerung von Ti−1
und Ti
2
Sei U die Menge der Trapezpaare
(∆1, ∆2) ∈ Ti−1 × Ti mit
∆1 ∩ ∆2 6= ∅
for all (∆1, ∆2) ∈ U
3
4
Sei (x, y) der Mittelpunkt von
∆1 ∩ ∆2
5
Füge v1 = (x, y, ϕi−1) als Knoten zu
Gi−1 hinzu und verbinde v1 mit
dem Mittelpunkt von ∆1
6
Füge v2 = (x, y, ϕi) als Knoten zu Gi
hinzu und verbinde v2 mit dem
Mittelpunkt von ∆2
7
Verbinde v1 und v2 durch eine
Kante
111111
000000
000000
111111
Bewegungsplanung mit Translationen und Rotationen
52
Berechung eines Weges
Algorithmus
Startkonfiguration R(xs, ys, ϕs ) und
Input:
Zielkonfiguartion R(xz , yz , ϕz ),
Straßenkarte Groad
Output: Ein Weg von (xs, ys, ϕs) nach
(xz , yz , ϕz ) oder eine Meldung, daß
kein Weg existiert
1
is ← round(m ∗ ϕs); iz ← round(m ∗ ϕz )
2
Berechne Trapeze ∆s ∈ Tis und
∆z ∈ Tiz , die (xs, ys, ϕis ) und
(xz , yz , ϕiz ) enthalten
3
if ∆s oder ∆z existiert nicht
then melde es gibt keinen Weg;
4
return
5
Sei vs der Mittelpunkt von ∆s und vz
der Mittelpunkt von ∆z
6
Berechne einen Weg Wroad in Groad von
vs nach vz
if Wroad existiert nicht
7
8
then melde es gibt keinen Weg;
return
9
Gebe Weg von (xs, ys, ϕs) über
(xs, ys, ϕis ), vs, Wroad, vz , (xz , yz , ϕiz )
nach (xz , yz , ϕz ) zurück
Bewegungsplanung mit Translationen und Rotationen
53
Probleme
Algorithmus ist nicht korrekt
Beispiel:
(xs, ys, ϕs) ∈ Cf ree(R, H), aber
(xs, ys, ϕis ) 6∈ Cf ree(R, H)
Schlimmer:
Wege sind nicht kollisionsfrei
• Translationen innerhalb einer Scheibe
sind kollisionsfrei
• Rotationen sind zwischen freien
Konfigurationen
Lösung:
1. Erhöhung von m
2. Verwende vergrößerten (rotierten)
Roboter
Bewegungsplanung mit Translationen und Rotationen
54
Herunterladen