Documente Academic
Documente Profesional
Documente Cultură
S8. Funcții de Potențial: Q Indicație 2: Pentru Un Q Și Un Obstacol O
S8. Funcții de Potențial: Q Indicație 2: Pentru Un Q Și Un Obstacol O
Funcții de potențial
1. Calcul analitic
Dorim să folosim metoda 2.
𝑥𝑥
a) Calculați gradientul funcției de atracție (cele trei variante). Notați cu 𝑞𝑞 = �𝑦𝑦� poziția
𝑥𝑥𝑔𝑔
curentă și cu 𝑞𝑞𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔 = �𝑦𝑦 � poziția țintă.
𝑔𝑔
b) Calculați gradientul funcției de respingere a unui obstacol generic Oi. Pentru
𝑝𝑝𝑥𝑥
obstacolul Oi, notați cu 𝑝𝑝 = �𝑝𝑝 � punctul cel mai apropiat de poziția curentă a
𝑦𝑦
robotului (q).
c) Scrieți ecuația gradientului ∇𝑈𝑈(𝑞𝑞), pentru un număr de obstacole n.
2. Implementare
a) Alegeți limitele spațiului de lucru și definiți parametrii pentru funcția de potențial 𝛾𝛾,
𝑑𝑑𝑞𝑞∗ 𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔 etc. Sugerăm să stocați acești parametri într-o structură, de ex. param.gamma=1;
param.d_q_goal=1, param.eta=0.2, param.D_star=0.5 (puteți considera în loc de 𝐷𝐷𝑖𝑖∗ o
singură valoare 𝐷𝐷∗ ). Apoi definiți (cu mouse-ul) obstacolele, punctul de start și punctul
final. Când afișați robotul (cu plot, de ex. cerculeț negru 'ok') salvați handle, pentru a
putea ulterior modifica poziția.
b) Implementați o funcție care să calculeze gradientul ∇𝑈𝑈(𝑞𝑞), pe baza unei valori a poziției
q (inițial punctul de start), a obstacolelor și a parametrilor. Această funcție de fapt
implementează rezultatul de la punctul 1.
Indicație 2: Pentru un q și un obstacol Oi, vă trebuie valoarea distanței minime și
coordonatele punctului p. Puteți afla acestea cu ajutorul funcției
dist_point_to_conv_polygon (Moodle, fișiere Matlab, sintaxa de apel este
descrisă în primele linii ale fișierului).
Obs. 1: Distanța între două puncte (vectori coloană) de ex. q și qgoal, este norma 2
�𝑞𝑞 − 𝑞𝑞𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔 � și poate fi calculată (în loc de radical) cu funcția Matlab
norm(q - q_goal).
c) Simulați mișcarea robotului. Condiții de terminare: suficient de aproape de punctul
țintă, sau blocare în minim local.
Pentru a evita pași prea mari, puteți face un vector unitate cu direcția gradientului și
alegeți o valoare destul de mică (de ex. 1) a constantei pentru descindere pe gradient
(metoda 2, subpunct b (ii)). Reprezentați mișcarea robotulului (schimbând handle
robot) cu un pas oarecare de timp (de ex. 0.1 s). Salvați și pozițiile robotului, pentru a
putea reprezenta și traiectoria. Puteți afișa și lungimea traiectoriei obținute.
La testul inițial, sugerez niciun obstacol. Apoi, încercați cu un obstacol cu 3-4 vârfuri;
abia ulterior creșteți complexitatea.
𝑣𝑣
Obs. 2: pentru un vector coloană v, vectorul cu norma 1 și direcția lui v este ‖𝑣𝑣‖.