Differences

This shows you the differences between two versions of the page.

Link to this comparison view

vdvac:lab7 [2026/05/14 11:18]
anca.morar [Inverse kinematics cu algoritmul Fabrik]
vdvac:lab7 [2026/05/14 18:22] (current)
anca.morar [Inverse kinematics cu algoritmul Fabrik]
Line 5: Line 5:
 **Forward And Backward Reaching Inverse Kinematics (FABRIK)** **Forward And Backward Reaching Inverse Kinematics (FABRIK)**
   * abordare iterativa care rezolvă problema IK   * abordare iterativa care rezolvă problema IK
-  * determină parametrii articulatiilor astfel incat ultimul punct al structurii articulate sa ajunga intr-o pozitie dorita (target)+  * determină parametrii articulatiilor astfel incat un end effector ​al structurii articulate sa ajunga intr-o pozitie dorita (target) 
 + 
 +**Structura articulata** 
 +  * Legăturile reprezintă obiectele rigide din care este alcătuită structura, ex. oasele. 
 +  * Punctele de joncțiune reprezintă articulațiile prin care sunt conectate obiectele rigide 
 +  * Structura ierarhică se reprezintă printr-un arbore, în care: 
 +    * nodurile reprezintă legăturile 
 +    * arcele reprezintă joncțiunile  
 +  * Lanț = secvență de legături și joncțiuni 
 +  * End effector = joncțiune fără copii (capătul unui nod frunză)  
 + 
 +**Algoritm** 
 +  * Date de intrare:  
 +    * pozițiile joncțiunilor $p_i$ cu $i = 0 .. n-1$ 
 +    * poziția dorită (target) $t$ 
 +    * distanțele dintre fiecare două joncțiuni (lungimea fiecărei legături): $d_i = |p_{i+1}-p_i|$ cu $i = 0 .. n-2$ 
 +    * dacă $|p_0 - t | > d_0 + d_1 + ... + d_{n-2}$ (target-ul nu poate fi atins) atunci 
 +      * se găsește vectorul $(t - p_0)$ și se determină poziția relativă a fiecărei joncțiuni de-a lungul vectorului (se întinde întreg lanțul în direcția punctului țintă) 
 +      * altfel (target-ul poate fi atins) 
 +        * se calculează distanța dintre end effector și target $diff = |p_{n-1} - t |$  
 +        * cat timp $(diff > prag)$ 
 +          * executa iteratia forward 
 +          * executa iteratia backward 
 + 
 +**Iterațiile forward si backward** 
 +    * Mutam end-effectorul la $t$, i.e., $p_{n-1}=t$ 
 +    * Pentru fiecare din punctele anterioare $p_i$, $i = n-2 ... 0$: 
 +       * Găsește vectorul $(p_{i+1} - p_i)$ și noua poziție $p_i$ ca pozitia relativa a acelei jonctiuni de-a lungul acestui vector 
 + 
 +  * Acum, rădăcina $p_0$ ar fi deplasata fata de pozitia initiala b 
 +  * Seteaza $p_0 = b$ 
 +  * Pentru fiecare din urmatoarele puncte $p_i$, $i = 1 .. n-1$: 
 +    * Gaseste vectorul $(p_i - p_{i+1})$, si noua pozitie, $p_{i+1}$ ca pozitia relativa a acelei jonctiuni de-a lungul acestui vector 
 +  * Actualizeaza noua diferenta ​ $diff = |p_{n-1} - t |$ 
 + 
  
-**Avantajul metodei** 
-  *  
  
-**Dezavantajele metodei** 
-  *  
vdvac/lab7.1778746695.txt.gz · Last modified: 2026/05/14 11:18 by anca.morar
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0