Differences

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

Link to this comparison view

vdvac:lab7 [2026/05/14 11:20]
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** **Structura articulata**
Line 13: Line 13:
     * nodurile reprezintă legăturile     * nodurile reprezintă legăturile
     * arcele reprezintă joncțiunile ​     * 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 |$
 +
 +
  
  
-**Dezavantajele metodei** 
-  *  
vdvac/lab7.1778746831.txt.gz · Last modified: 2026/05/14 11:20 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