You are on page 1of 38

Strategii de planificare

a roboților mobili
Notare:
NL – notă laborator (evaluare pe parcursul semestrului)
Pentru a intra în examen nu trebuie să aveți absențe la laborator. O absență se poate recupera în săptămâna 14.

B1 – bonus 1, max. 1 p, în urma unui extemporal neanunțat la un curs. Pt. notă


extemporal în int.[1 , 6) -> B1 ∈ [0.1 , 0.3] (liniar), pt. extemporal în [6 , 10] -> B1 ∈
[0.5 , 1] (liniar).
B2 – bonus 2, max. 1 p, în urma câtorva prezențe aleatorii la curs și a unor
discuții/răspunsuri corecte la întrebări.
NES – notă examen sesiune (1...10)
Obs.: la examen (și extemporal) aveți voie cu o foaie A4 cu notițe/idei scrise de mână.
NE (notă examen) = min(10, NES+B1+B2)

Notă finală = round(0.7*NE + 0.3*NL), cu condiția NE ≥ 5


Strategii de planificare
a roboților mobili
Laborator:
- Mediu software: Matlab
- Implementare de algoritmi și idei discutate la curs
- Dacă nu este indicat, nu se folosesc implementări deja existente
Strategii de planificare
a roboților mobili
Bibliografie:
Choset, H., Lynch, K. M., Hutchinson, S., Kantor, G., Burgard,W., Kavraki, L. E.,
Thrun, S.: Principles of Robot Motion: Theory, Algorithms, and Implementations.
MIT Press, Boston, MA, USA, 2005.
LaValle, S. M.: Planning Algorithms, Cambridge University Press, USA, 2006.
Mahulea C., Kloetzer M., Gonzalez R.: Path Planning of Cooperative Mobile
Robots Using Discrete Event Models, Wiley-IEEE Press, USA, 2020.
Kloetzer, M.: Strategii de planificare automată a roboților mobili, Ed. MatrixRom,
București, 2012.
Material din discipline susținute de prof. C. Belta, Boston University, MA, USA
Material din lucrări științifice, prezentări conferințe
Scurtă motivație

Exemplu: dorim un algorithm care conduce un robot


mobil către o poziție impusă de utilizator, fără să se
lovească de obstacole.
Cum se poate realiza? Ce ipoteze sunt necesare?
Cum se poate îmbunătăți rezultatul?
Spațiul de configurație

Configurația unui robot – set de date necesare și suficiente pentru a


specifica complet poziția și orientarea unui robot (≡ stare).

Spațiul de configurație (C-space) al robotului – mulțimea tuturor


configurațiilor posibile ale robotului.

Numărul de grade de Dimensiunea Nr. minim de parametrii


= = necesari pentru
libertate (degrees of spațiului de
freedom - DOF) configurație specificarea configurației
(stării)
Spațiul de configurație

Exemplu:

Robot punctiform
y
Spațiul de configurație = planul

Nr. grade libertate = 2 yC

xC x
Spațiul de configurație

Exemplu:

Braț robotic manipulator cu 2


motoare, care evoluează în plan
link 2 θ2
Lungime cunoscută a segmentelor
1 și 2 și poziție cunoscută a bazei
(prin construcție) link 1

Nr. grade de libertate = 2 θ1


(cunoașterea unghiurilor θ1
și θ2 duce la cunoașterea
poziției tuturor punctelor
robotului);
[0, 2π )
2
Sp. configurație =
Spațiul de lucru

Spațiul de lucru (workspace) – domeniul în care robotul evoluează;

Spațiul de lucru pt. exemplele anterioare:


planul (robot punctiform), “inel” (braț rob.
cu 2 articulații);

În general, spațiul de lucru ≠


spațiul de configurație;

Pt. brațul robotic anterior:


efectorul (vârful) poate
atinge aceeași poziție prin
2 configurații.
same point
Cinematică directă și
reached by 2
configurations
cinematică inversă
Spațiul de configurație & spațiul de lucru

Exemplu: Punct de
referință robot
Robot tip mașină („car-like”):
Se alege un punct de
referință pe robot. Pentru θ

configurație nulă, se știe forma y


(poziția vârfurilor) robotului față
de punctul de referință.

Nr. gradelor de libertate = ?


Spațiul de configurație = ?
x
Spațiul de lucru = ?
Spațiul de configurație & spațiul de lucru
Robot mobil în 2D care poate transla și se poate roti

Pp. un robot poligonal care se poate mișca înainte și se poate roti într-
un plan.
Se cunoaște forma robotului (coordonatele vârfurilor) față de
punctul de referință.
𝑥𝑥(𝑡𝑡)
Cunoscând configurația (starea) la un moment de timp ( 𝑦𝑦(𝑡𝑡) ), care
𝜃𝜃(𝑡𝑡)
este poziția vârfurilor robotului în spațiul de lucru?

orientare
θ

y
punct de
referintă

x
Robot mobil în 2D
- translație + rotație -

Sistem de referință robot


Poziția vârfurilor robotului față de punctul
Formă robot

de referință, pt. orientare 0 (≡ coordonate


v2
vârfuri pt. configurație nulă):
v3
notație vi ∈  (în acest exemplu i=1,…,5)
2
v1

v4 v5 Punct de referință (originea


sistemului de ref. al robotului)
Reprezentarea robotului în

Rotație: unghi θ cu axa Ox


spațiul de lucru pt. o

Sistem de referință fix (spațiul


configurație dată

de lucru), unde robotul de mișcă


v2( w) v1( w) θ

Coordonatele vârfurilor robotului în spațiul


de lucru (notate vi ∈  ):
( w) 2

 x  cos (θ ) − sin (θ ) 
Translație: coordonate
punct de referință: vi( w) =
 y  +  sin (θ )  ⋅ vi
[ x, y ]
T
∈ 2  cos ( )
θ
Robot mobil în 2D
Rotație (în jurul punctului de referință) -> modificarea orientării
+ translație (modificarea poziției punctului de referință)

θ
reference
orientation y1
θ
θ
translation
y y
reference
point

x x x1

θ1 rotation

y1

x1
Robot mobil în 3D

Orientarea poate fi exprimată de unghiurile de rotație în jurul a 3 axe:


yaw – rotație în jurul axei verticale;

roll – rotație în jurul axei față-spate;

pitch – rotație în jurul axei aripă-aripă.


Robot mobil în 3D

translation roll rotation

pitch rotation yaw rotation


Modele cinematice pentru câteva
tipuri de roboți mobili (cu roți) în 2D
𝑢𝑢𝑥𝑥 (𝑡𝑡)
𝑑𝑑 𝑥𝑥(𝑡𝑡) 𝑢𝑢 𝑡𝑡 =
Robot omnidirecțional = 𝑢𝑢(𝑡𝑡) ∈ ℝ2 𝑢𝑢𝑦𝑦 (𝑡𝑡)
𝑑𝑑𝑑𝑑 𝑦𝑦(𝑡𝑡)

e.g. roți mecanum, zbor dronă cu altitudine constantă

Robot tip uniciclu (eng. unicycle)


Intrări: v(t) - viteza de mișcare înainte (unități lungime/s)
ω(t) - viteza de rotație în jurul punctului de referință (sens trigon., rad/s)

𝑥𝑥(𝑡𝑡)
𝑑𝑑
𝑦𝑦(𝑡𝑡) =? (𝑓𝑓 𝑣𝑣 𝑡𝑡 , 𝜔𝜔 𝑡𝑡 , … )
𝑑𝑑𝑑𝑑
𝜃𝜃(𝑡𝑡)
Modele cinematice pentru câteva
tipuri de roboți mobili (cu roți) în 2D

Robot tip diferential (eng. differential drive)


Modele cinematice pentru câteva
tipuri de roboți mobili (cu roți) în 2D

Robot tip diferential (eng. differential drive)

Intrări: 𝜔𝜔𝑅𝑅 , 𝜔𝜔𝐿𝐿 - viteze de rotație a roții din dreapta (right), respectiv stânga (left), în rad/s.
Parametri: r – rază roată, b – distanță între roți motrice (bază)

𝑥𝑥(𝑡𝑡)
ωL vL 𝑑𝑑
𝑦𝑦(𝑡𝑡) =? (𝑓𝑓 𝜔𝜔𝑅𝑅 (𝑡𝑡), 𝜔𝜔𝐿𝐿 (𝑡𝑡), … )
𝑑𝑑𝑑𝑑
𝜃𝜃(𝑡𝑡)

b θ
ωR
vR
Privim ca robot tip uniciclu și aflăm 𝑣𝑣 𝑡𝑡 , 𝜔𝜔 𝑡𝑡

r
Modele cinematice pentru câteva
tipuri de roboți mobili (cu roți) în 2D

Robot tip mașină (bicicletă) (eng. car-like)

Intrări: v(t) - viteza de mișcare înainte (unități lungime/s)


φ(t) – unghi roată față de șasiu (rad), 𝜑𝜑(𝑡𝑡) ∈ −𝜑𝜑𝑚𝑚𝑚𝑚𝑚𝑚 , +𝜑𝜑𝑚𝑚𝑚𝑚𝑚𝑚
Parametru: L – lungime

v φ(t)

v
L
v(t)

𝑥𝑥(𝑡𝑡)
𝑑𝑑
𝑦𝑦(𝑡𝑡) =? (𝑓𝑓 𝑣𝑣(𝑡𝑡), 𝜑𝜑(𝑡𝑡), … )
𝑑𝑑𝑑𝑑
𝜃𝜃(𝑡𝑡)
Planificarea mișcării

Planificarea mișcării – găsirea unei traiectorii care atinge o poziție finală și


garantează evitarea coliziunii cu obstacolele din spațiul de lucru;

Idee – robotul se reduce la un punct prin deformarea (mărirea) obstacolelor.


Se poate lucra în spațiul de configurație (algoritmi mai complecși) sau în
spațiul de lucru (se pot pierde mai multe soluții).
40 DOF
3
DOF

q1

q2

qn q3

q5 q4
12 DOF 15 DOF
Planificarea mișcării

„Mărirea”/„deformarea” obstacolelor și reducerea robotului la un punct


(punctul de referință în sp. de lucru, sau configurația în spațiul de config.);

Planificarea mișcării întregului robot se reduce la planificarea mișcării


unui punct.

spa?iu
liber

spa?iu ocupat
de obstacole
Planificarea mișcării în spațiul de config.
Exemplu: idee de planificare a mișcării unui braț robotic 2D cu 2 motoare.

link 2 θ2

link 1

θ1
Spațiul de lucru
8

7
θ2

L2 Care configurații sunt permise (aparțin


5
L1 spațiului de configurație liber)?
θ1

4
 3π 
(θ1 ,θ 2 ) =  π , 
A

 2 
2

 3π π 
(θ1 ,θ 2 ) =  , 
1

0
 2 2
0 2 4 6 7 8 10 12

Baza A – poziție fixă(6,4);


L1 = 3; L2 = 1.5
Planificarea mișcării în spațiul de config.
Exemplu: idee de planificare a mișcării unui braț robotic 2D cu 2 motoare.
link 2 θ2

link 1

θ1

Spațiul de lucru Spațiul de configurație

Poziție de start Poziție finală start final


Planificarea mișcării în spațiul de config.
Exemplu: idee de planificare a mișcării unui braț robotic 2D cu 2 motoare.
link 2 θ2

1) Obținerea spațiului de configurație prin identificarea


link 1
configurațiilor libere / permise (puncte albastre) și a celor
θ1 nepermise (puncte verzi)

0 ≤ 𝜃𝜃2 < 2𝜋𝜋

0 ≤ 𝜃𝜃1 < 2𝜋𝜋


Planificarea mișcării în spațiul de config.
Exemplu: idee de planificare a mișcării unui braț robotic 2D cu 2 motoare.
link 2 θ2

2) Găsirea unei traiectorii în spațiul de configurație liber și


link 1
transpunerea ei în spațiul de lucru într-o traiectorie
θ1 (secvență de mișcări) a robotului
0 ≤ 𝜃𝜃2 < 2𝜋𝜋

0 ≤ 𝜃𝜃1 < 2𝜋𝜋


Reducerea unui robot mobil 2D,
care nu se rotește, la un punct
Robotul se poate reduce la un punct (≡ punctul de referință) prin mărirea
obstacolelor și micșorarea limitelor spațiului de lucru

- Pentru mărirea fiecărui obstacol: translarea robotului de-a lungul fiecărei


laturi a obstacolului și stocarea pozițiilor importante ale punctului de
referință

- Aceeași idee pentru micșorarea limitelor spațiului de lucru

- Atenție, robotul nu se rotește (poate doar transla în plan). Spațiul de


configurație este 2D.

Obs.: pt. un robot convex și obstacole convexe, obstacolele mărite vor fi tot
convexe, dar pot avea mai multe vârfuri.
Reducerea unui robot mobil 2D,
care nu se rotește, la un punct
Exemplu:
Robot convex poligonal
Sp. de lucru Sp. de config.

COi
Oi

punct referintă
Idee de planificare a mișcării pentru
un robot care nu se rotește
Pași ce pot fi urmați:
(1) Construirea spațiului de configurație (mărirea obstacolelor);
(2) Obținerea unei traiectorii care nu intersectează obstacolele
mărite pentru robotul punctiform;
(3) Aceasta este o traiectorie de referință pentru punctul de referință
al robotului: când punctul de referință urmărește această traiectorie
în spațiul de lucru, avem garanția că robotul nu intră în coliziune cu
obstacolele

Vom vedea în continuare cum putem rezolva algoritmic fiecare pas.


Idee de planificare a mișcării:

Robot circular, cu referință=centru disc

Pas (3) Pas (2)


Traiectorie în sp. de lucru Traiectorie in sp. de config.
traiectorie traiectorie

Pas (1)

punct referinta Oi COi


Dezvoltarea unui algoritm pentru
reducerea la un punct a unui robot care nu se rotește
- Presupunem că robotul și obstacolele au forme poligonale convexe
- Pt. fiecare obstacol: mișcarea robotului de-a lungul perimetrului obstacolului
și reținerea pozițiilor importante ale punctului de referință
-> Algoritm pt. mărirea obstacolelor Date intrare:
Puncte marcate = set 𝑉𝑉𝑂𝑂𝑛𝑛𝑛𝑛𝑛𝑛 Rv- set vârfuri robot (față de punct referință)
VO-i set vârfuri ale fiecărui obstacol Oi (exprimate în
2
înaintea înfășurătorii convexe)
Puncte negre = vârfuri spațiul de lucru)
Exemplu: înfășurătoare convexă 𝑉𝑉𝑂𝑂𝑛𝑛𝑛𝑛𝑛𝑛
Date ieșire:VOnew- set vârfuri obstacol Oi mărit
2

Punct i

referință
robot

Robot care
nu se rotește
O2

O1
Vârfuri
înfășurătoare
convexă
Algoritm pentru
reducerea la un punct a unui robot care nu se rotește
- Robotul și obstacolele sunt poligoane convexe
- Obstacolele se măresc conform algoritmului anterior.
 x= new
min xmin − min_ x( Rv )
 x= new
xmax − max_ x( Rv )
- Reducerea limitelor sp. de lucru:  max
y=
 min
new
ymin − min_ y ( Rv ) Limite reduse
spațiu de lucru
 ymax
new
= ymax − max_ y ( Rv )
Exemplu:
Punct
referință
robot

Robot care
nu se rotește
Exemplu – rezultatul algoritmului pentru
reducerea la un punct a unui robot care nu se rotește
- Robotul și obstacolele sunt poligoane convexe
- Obstacolele se măresc, limitele spațiului de lucru se reduc
- În spațiul de configurație planificăm un punct (cel de referință)
Limite reduse față
de spațiul de lucru
Spațiu permis
pentru punctul
de referință
(zona albă =
Punct configurații libere) Obstacol mărit față
referință de spațiul de lucru
robot

Robot care
nu se rotește

Spațiul de lucru Spațiul de configurație


Spațiul de configurație al unui robot 2D care se rotește

Robot

Obstacol în
sp. de
config.
Obstacol în
sp. de lucru
Spațiul de configurație al unui robot 2D care se rotește

Exemplu:

Formă robot
(vârfuri față de
punct ref. pt.
oreintare nulă)
Spațiul de configurație al unui robot 2D care se rotește

Obstacole mărite și limite reduse sp. de lucru pentru θ = 0


Spațiul de configurație al unui robot 2D care se rotește

Se iterează mărirea obstacolelor pentru θ ∈ [0,2𝜋𝜋) și se obțin „felii” ale sp. de configurație

x
y
Planificarea mișcării
- clase de probleme -

Planificarea mișcării pentru rezolvarea unei probleme:

Navigare (navigation) – mișcarea robotului către o poziție finală,


evitând coliziunea cu obstacolele;

Acoperire (coverage) – mișcarea robotului a.i. să viziteze („să


măture”) toate locațiile permise din spațiul de lucru;
Localizare (localization) – determinarea poziției și orientării pe
baza unei hărți din memorie și a senzorilor de pe robot;

Construire hartă (mapping) – obținerea unei hărți a spațiului de


lucru pe baza datelor furnizate de senzori de pe robot.
SLAM (simultaneous localization and mapping) – localizare și
actualizare hartă.
Planificarea mișcării
Example de traiectorii pt. navigare (fig. stânga) și acoperire (fig. dreapta)

Robot
Planificarea mișcării
- clasificarea algoritmilor -

Problemă de planificare a mișcării problem = algoritm care obține (în


mod automat) o soluție pentru datele introduse de utilizator;

Caracteristici posibile ale unui algoritm pentru planificarea mișcării:


Optim (eng. optimal) – față de un criteriu impus;

Complet (eng. complete) – găsește o soluție dacă există cel puțin una
/ sau altfel returnează lipsa soluției -> într-un nr. finit de pași;

Offline – găsește o soluție (traiectorie) înainte de începerea mișcării;

Online – soluția este actualizată în timpul mișcării.


Complexitate computațională (eng. computational complexity) – măsoară
eficiența algoritmului față de creșterea complexității datelor de intrare.

You might also like