scieee AI-readable full text Open interactive document viewer

Simulador cinemàtic per a l'aprehensiò destra d'objectes

Sierra Contreras, Xavier

Full text

Cap´ıtol 8: L’aplicaci´ o Qilex0.4 81 Figura 8.2: Cadena cinem`atica introdu¨ıda en la cel.la. per tractar la informaci´o:    - , que t´e com a entrada un fitxer que cont´e les dades cinem`atiques de la cadena; i  " - "  "  " ,   , que s’encarrega de llegir les dades obtingudes a trav´es del m`etode    - i d’emmagatzemar-les en les diferents estructures pertanyents a la classe Rchain hand.  Comprovar que la cel.la no cont´e cap element amb el mateix nom.  Inserir al node principal de l’objecte que cont´e la descripci´o gr`afica una transformaci´o amb la posici´o i la rotaci´o introdu¨ıdes per l’usuari. D’aquesta manera, s’aconsegueix que tota la cadena cinem`atica es vegi afectada per la transformaci´o.  Es crida la funci´o  * '"     * "       - , introduint-li com a par`ametres l’objecte de tipus Rchain hand inicialitzat amb les dades corresponents i l’objecte que cont´e la descripci´o gr`afica de la cadena. Si totes aquestes comprovacions han estat superades amb `exit, la nova cadena cinem`atica ´es introdu¨ıda a la cel.la. En la figura 8.2 es mostra l’aspecte d’una cadena cinem`atica introdu¨ıda en l’escena (la m`a MA-I acoplada al brac¸ St¨aubli RX90). El m`etode -$&  ,'"     * "       - realitza una s`erie d’operacions de certa complexitat que s´on fonamentals per a la perfecta conjunci´o dels diferents objectes que conformen l’aplicaci´o final. Les m´es destacables s´on les seg¨uents: 82 Simulador cinem` atic per a l’aprehensi´ o destra d’objectes  Crear els engines necessaris per tal de donar moviment a les articulacions i, per tant, aportar animaci´o a l’escena.  Connectar diferents objectes entre s´ı per tal que es puguin comunicar. Per exemple, ´es molt important la connexi´o de les classes Rchain hand i SoQtComposeRotation.  Insertar uns eixos que indiquin el sistema de refer`encia de la base del robot i els sistemes de refer`encia dels extrems dels dits.  Crear l’objecte que permetr`a a l’usuari interactuar amb l’aplicaci´o, ´es a dir, crear la classe   "  ! ,      - . A m´es, es realitzen les diferents connexions entre el panell de control i les altres classes. Les dues primeres tasques es realitzen primer i de forma simult`ania, mentre que les altres dues es realitzen despr´es (tamb´e simult`aniament). 8.4 El resultat final En la figura 8.3 es pot observar l’aspecte de l’aplicaci´o Qilex0.4 un cop s’han introdu¨ıt a la cel.la una cadena cinem`atica (el conjunt brac¸ rob`otic m´es m`a mec`anica) i un objecte geom`etric. Com es pot veure, es distingeixen dos parts clarament diferenciades:  El panell de control, que permet a l’usuari moure directament les articulacions mitjanc¸ant els lliscadors, seleccionar els punts d’aprehensi´o desitjats per afrontar el problema invers o visualitzar per consola la informaci´o matem`atica addicional.  L’escena en la qual es mostra la cel.la de treball. En ella es poden veure els diversos models 3D introdu¨ıts i els moviments d’aquells que han estat introdu¨ıts com a cadena cinem`atica. Per altra banda, en la figura 8.4 s’observen el conjunt brac¸ m´es m`a i un objecte geom`etric despr´es de realitzar el c`alcul de la cinem`atica inversa. Com es pot comprovar, en aquest cas s’ha trobat soluci´o i, per tant, el robot ha aconseguit dur a terme amb `exit l’aprehensi´o de l’objecte. Cap´ıtol 8: L’aplicaci´ o Qilex0.4 83 Figura 8.3: L’aplicaci´o final Qilex0.4. Figura 8.4: L’aplicaci´o final Qilex0.4. 84 Simulador cinem` atic per a l’aprehensi´ o destra d’objectes Cap´ ıtol 9 Pressupost Per tal de realitzar la valoraci´o econ`omica del projecte es tenen en compte per separat les hores destinades a les diferents tasques: investigaci´o, estudi i disseny de l’aplicaci´o, programaci´o i redacci´o del document. Concepte Cost unitari (  C/hora) Unitats (hores) Subtotal (  C) Cost de personal Enginyer 36 400 14.400 Investigador 32 200 6.400 Programador 30 200 6.000 Administratiu 12 60 720 Cost de material Amortitzaci´o equip inform`atic 0,04 700 28 Total 27.548  El c`alcul del cost de l’´us de l’equip es realitza a partir del preu de compra tenint en compte que l’amortitzaci´o en un centre com l’Institut d’Organitzaci´o i Control es calcula a 3 anys. Aix´ı l’estaci´o de treball t´e un preu de 1.200  i l’amortitzaci´o es de 400  . 86 Simulador cinem` atic per a l’aprehensi´ o destra d’objectes Conclusions Per tal de construir satisfact`oriament l’aplicaci´o final s’han hagut d’afrontar molts problemes i d’assimilar una gran varietat de conceptes, que han fet que la realitzaci´o d’aquest projecte esdevingu´es especialment enriquidora. El resultat final obtingut no ´es nom´es un programa elaborat amb C++, sin´o que al darrere hi ha molt m´es: l’estudi cinem`atic del robot, la b´usqueda de solucions davant del problema cinem`atic invers, l’obtenci´o dels diferents models gr`afics, la construcci´o de l’aplicaci´o amb l’ajuda de Qt, la conjunci´o de tot plegat... Tot aix`o ha fet que les dimensions i l’abast del projecte hagin acabat essent considerables. Tot i aix´ı, el simulador obtingut no preten comparar-se amb els potents simuladors comercials existents ja que aquests acostumen a ser el resultat de la feina d’un equip de gent durant molts anys. El que preten en realitat aquest projecte ´es donar un pas m´es per tal de millorar i engrandir el projecte Qilex original. Per altra banda, val la pena reflexionar sobre com s’ha arribat a assolir un m`etode correcte i eficient per tal de resoldre la cinem`atica inversa del conjunt brac¸ rob`otic i m`a mec`anica. El m`etode DOM ampliat a quatre cadenes, que ´es l’encarregat de resoldre aquest problema, no ´es una simple ampliaci´o del m`etode DOM original, sin´o que ha estat conseq¨u`encia d’hores i hores de proves i de la recerca constant de noves alternatives quan han sorgit problemes. De fet, s’han superat algunes etapes especialment dif´ıcils, en les quals resultava complicat trobar respostes i la possibilitat de trobar un m`etode v`alid per resoldre la cinem`atica inversa es difuminava en la incertesa. En el fons, doncs, aquest projecte ha estat un treball de recerca que ha perm`es a l’autor con`eixer de primera m`a les dificultats i el m`erit del m´on de la recerca i de la investigaci´o. 88 Simulador cinem` atic per a l’aprehensi´ o destra d’objectes El fet que aquest treball no sigui res m´es que una pedra m´es afegida en el projecte Qilex ja indica que la idea original ´es construir un simulador cada cop m´es gran i amb m´es i millors funcionalitats. Per tant, ´es important establir les vies de treball a seguir per continuar millorant el simulador. Pel que fa al m`etode DOM, seria interessant intentar trobar millores que augmentin encara m´es la seva efici`encia. En aquest sentit, un dels punts que podrien ser tractats ´es el de la funci´o de dist`ancia. En el DOM s’utilitza la norma de Frobenius per tal de determinar la dist`ancia entre dues matrius de transformaci´o. Aquesta norma no ´es del tot correcta, per`o de moment ´es ´util ja que permet obtenir expressions forc¸a simples. Tot i aix´ı, ´es important buscar alternatives a aquesta norma. Pel que fa a l’estructura de l’aplicaci´o a nivell de classes pot ser ´util realitzar una reestructuraci´o general de manera que s’obtinguin diferents m`oduls clarament diferenciats. Ara mateix, existeixen m´ultiples connexions entre diferents classes que dificulten cada cop m´es el creixement l`ogic i ordenat de l’aplicaci´o. Per ´ultim, pel que fa a les funcionalitats de l’aplicaci´o final, cal dir que encara hi ha moltes coses per millorar. Algunes de les idees que es proposen per millorar el producte final s´on, doncs:  Dissenyar un int`erpret capac¸ de desenvolupar diversos m`oduls d’ajuda per a la programaci´o, com per exemple generadors de traject`ories amb restriccions geom`etriques.  Desenvolupar nous tipus d’elemets m`obils, a part de les cadenes cinem`atiques.  Incorporar un sistema de detecci´o de movimets de manera que quan el robot impact´es amb quelcom, s’atur´es.  Potenciar l’´us del mouse per tal d’indicar els punts d’aprehensi´o que es volen assolir ja que es tracta d’una eina r`apida i directa. Agra¨ ıments A Leo, per la seva paci`encia i comprensi´o davant l’allau de dubtes i q¨uestions que ha rebut per part meva. Sense la seva col.laboraci´o, res del que s’ha fet hagu´es estat possible. A Jan, per donar-me la possibilitat de participar en aquest projecte i per la seva ajuda constant en els moments en els quals resultava complicat trobar respostes. A Greta, MaIsabel i Cristina, pel seu sacrifici i la seva estima imprescindible en tot moment. A la resta de fam´ılia i als meus amics, pel seu recolzament durant tots aquests anys. I, de forma molt especial, a la persona que amb m´es il.lusi´o hagu´es viscut aquests moments, al meu avi Bernardo, per haver-me ensenyat, entre moltes d’altres coses, que amb esforc¸ i humilitat qualsevol repte ´es assolible. 96 Simulador cinem` atic per a l’aprehensi´ o destra d’objectes Figura A.1: Sistemes de refer`encia usats per obtenir els par`ametres D-H. A.2 Par` ametres D-H de la m` a mec` anica MA-I Seguint els passos que marca la representaci´o de Denavit-Hartenberg, s’escullen els eixos dels 5 sistemes de refer`encia de cada dit. En el cas de MA-I, es fixa un sistema de refer`encia   a la base de cada dit i solidari a la base de la m`a, aix´ı com un sistema de refer`encia per cada articulaci´o solidari a cada falange (   ,   ,   i   ). La figura A.1 mostra els diferents sistemes de refer`encia per cada dit. Per una major claretat, en el dibuix no s’han incl`os els eixos de refer`encia del polze, que s´on iguals que els altres per`o situats en el pla del dit polze. Cap´ıtol A: Par` ametres Denavit-Hartenberg dels robots 97    '     &            (        (    )                                           Taula A.2: Par`ametres D-H dels dits 0, 1 i 2 (l’anul.lar, el cor i l’´ındex).     '     &             (        (                                              Taula A.3: Par`ametres D-H del dit 3 (el polze). Considerant aquests sistemes de refer`encia, els par`ametres D-H de cadascun dels dits s’adjunten en la taules A.2 i A.3. A m´es, s’hi inclouen els rangs de les diferents articulacions. A.3 Par` ametres D-H de les articulacions virtuals Els par`ametres Denavit-Hartenberg de les tres articulacions virtuals que s’afegeixen a cadascun dels dits s´on els que s’exposen en la taula A.4. Aquests par`ametres s´on id`entics per als quatre dits.    '     &             (        (                                              Taula A.4: Par`ametres D-H de les articulacions virtuals. 98 Simulador cinem` atic per a l’aprehensi´ o destra d’objectes    '     &            (        (                                                                                                                                                                                                   Taula A.5: Par`ametres D-H del primer dit. A.4 Par` ametres D-H del conjunt brac¸ m´ es m` a Pot semblar reiteratiu exposar el par`ametres D-H de les quatre cadenes ja que ´es l´ıcit pensar que aquests par`ametres es poden obtenir directament conjuntant les dades dels apartats anteriors. Aix`o, per`o, no ´es del tot cert ja que alguns par`ametres es veuran modificats degut a qu`e al unir brac¸ i m`a el sistema de refer`encia inicial canvia. En concret, les articulacions que es veuen modificades s´on la sisena (l’´ultima del brac¸) i la setena (la primera de la m`a). Per altra banda, ´es forc¸a interessant presentar aquests par`ametres de forma detallada ja que signifiquen una de les informacions d’entrada de l’aplicaci´o. Els par`ametres D-H de cadascuna de les quatre cadenes es mostren en les taules A.5, A.6, A.7 i A.8. Cap´ıtol A: Par` ametres Denavit-Hartenberg dels robots 99    '                 (        (    )                                                                                                                                                                                              Taula A.6: Par`ametres D-H del segon dit. 100 Simulador cinem` atic per a l’aprehensi´ o destra d’objectes     '     &             (        (    )                                                                                                                                                                                                Taula A.7: Par`ametres D-H del tercer dit. Cap´ıtol A: Par` ametres Denavit-Hartenberg dels robots 101    '     &            (        (    )                                                                                                                                                                                                        Taula A.8: Par`ametres D-H del quart dit. 102 Simulador cinem` atic per a l’aprehensi´ o destra d’objectes Annex B Expressions desenvolupades del m` etode DOM B.1 Les matrius que intervenen en el m` etode Tal com s’explica en el cap´ıtol 3, el m`etode tracta cada articulaci´o de forma separada de manera que s’assigna una dist`ancia particularitzada a cada articulaci´o. Aquestes dist`ancies s’anomenen dist`ancies locals   i s’expressen de la seg¨uent manera:                           Per tal de determinar de forma gen`erica l’expressi´o de   , cal anar mostrant el contingut de les diferents matrius que intervenen en el seu c`alcul. La matriu      ´es la matriu homog`enia de transformaci´o entre dos sistemes de coordenades consecutius i es pot calcular coneixent els par`ametres D-H de la cadena cinem`atica. A m´es, ´es l’´unica que depen de la variable  (o   ). Val la pena recordar la seva expressi´o:                           -                -       -    )             !#" " " " " " $ 104 Simulador cinem` atic per a l’aprehensi´ o destra d’objectes La resta de matrius no depenen de  (o   ) i es poden expressar com:                                                   !#" " " " " " $                                                             !#" " " " " " $ Com es pot veure, els termes t13, t23 i h23 s´on components matricials de    i              , i, per tant, s´on valors coneguts. Per altra banda, si es desenvolupa l’expressi´o          s’obt´e:                                                         !#" " " " " " $ on                         )                                   )                                   )                                  )                      -                   )               -                   )               -                   )               -                  )                      -                   -                   -                   -                  Cap´ıtol B: Expressions desenvolupades del m` etode DOM 105 Finalment, si es resten les expressions          i             queda que:                                                                         !#" " " " " " $ on:                -                                       -                                       -                                     -                                                                                                                                                                                                                                                                                                112 Simulador cinem` atic per a l’aprehensi´ o destra d’objectes translaci´o. Defineix l’increment de la posici´o respecte al punt origen del node (    ,'    ! 100 0 0). D’aquesta manera s’aconsegueix que el programa principal tan sols hagi de cercar les diferents etiquetes que correspondr´ıen a les articulacions i connectar-les a els engines corresponents. Per ´ultim, cal fer esment a la peculiar forma jer`arquica del contingut del fitxer. Com es pot veure a l’esquema inicial, els conjunts    ,     no estan definits de forma consecutiva (un despr´es de l’altre), sin´o que cadascun d’ells est`a dins de l’anterior. Aquest fet ´es essencial ja que permet que en girar o desplac¸ar una determinada articulaci´o, la resta d’elements que estan definits a partir d’aquesta es vegin afectats per la variaci´o. Si els conjunts    * ,     estiguessin definits de forma consecutiva i no jer`arquica, el gir o desplac¸ament d’una articulaci´o afectaria nom´es a l’element d’aquests conjunt, mentre que la resta d’elements no es veurien afectats. Aquest fet s’aprofita per definir en paral.lel els quatre dits despr´es de la sisena articulaci´o del brac¸. C.2 Els fitxers de descripci´ o de robots:   Els par`ametres cinem`atics del robot estan definits segons l’estructura d’un document XML (eXtensible Markup Language). XML ´es un metallenguatge, ´es a dir, un llenguatge per definir llenguatges. La seva utilitzaci´o ´es deguda, b`asicament, a qu`e ajuda a tenir consist`encia a l’hora d’intercanviar informaci´o i, a m´es, perqu`e hi ha un gran nombre de validadors de documents (la biblioteca Qt en porta un), fet que permet que la seva utilitzaci´o sigui simple i f`acil. Dels documents XML cal saber que n’hi ha de dos tipus:  Ben formats, aquells que compleixen les especificacions del llenguatge respecte a les regles sint`actiques. L’XML defineix una estructura jer`arquica molt estricta que un document ben format ha de complir.  V`alids, aquells documents que segueixen la sintaxi de l’XML, i que per tant estan ben formats, i, a m´es, segueixen una estructura determinada per un DTD (Document Type Definition, definici´o del tipus de document), que estableix la definici´o gramatical del Cap´ıtol C: Els fitxers de dades 113 document. Tot seguit es mostra un exemple de la descripci´o del conjunt format pel brac¸ St¨aubli RX90 i la m`a mec`anica MA-I. Aquest document de descripci´o d’un robot cont´e dues parts clarament diferenciades: la primera abarca el text compr`es entre  ?xml version... i la l´ınia que nom´es cont´e els s´ımbols   i la segona va des de    * "   -   " % % % fins al final. La primera part ´es la definici´o del document DTD (apartat C.2.1), mentre que la segona part cont´e pr`opiament la informaci´o del robot (apartat C.2.2).   6  Y [) #+   >    2&%Y^4   3  W .   Z>  W/ 6         &347E 6     A8    &' , 3&47,  %  )j];*/ 6         ' , 3&43              %  )            #+1R  ^            / 6     A8    &''%  &)-,  ^.j];Y/ 6         ''%  &)-3            WC3            4W             / 6     A8     '  A8    / 6          '  4          *  1 ,   F>;   S8        Y            3  &            )            4                #+3             C3 #+3              QQ4       W   &%%      1>   1      )  1/ GI/ 6    &3&43    )   34  -%  &)'L    5#SR   '.  / 6  %  )N&3'  &@A  W#$  WC3]  )  ?4W    >   1/ 114 Simulador cinem` atic per a l’aprehensi´ o destra d’objectes 6   '  4A   M / Z>  ?    1>  [  Y)  W  23  &)  /  )  2)   )  ?4^  )     #$3  &  / Z>  )  -CW #$3  '  >  )  N Y4^    c &%Q%   ''  )  1/ 6 P   '*/ 6   '  4A   M /   ?    1>  [  Y)  W  23  &)  )  :)     )  ?4   W     #$3  &  /      -CW #+3        c YQ'4     - &%Q%   1  /  )  1/ 6 P   '*/ 6   '  4A   M /   ?    1>  [  Y)  W  23  &)  )  2)  W  :4    )     #$3  &  /   $  -C3 #+3  '     $  c YQ'4     - &%Q%   1  )  1/ 6 P   '*/ 6   '  4A   M /   ?    1>  [  Y)  W  23  &)  /  )  2)   )  ?4^    )     #$3  &  /     -CW #$3  '      N Y4^   3  c &%Q%   ''  )  1/ 6 P   '*/ 6   '  4A   M /  ?    1>  [  Y)  W  23  &)  )  2)  W  :4    )     #$3  &  / Z>'  -CW #$3  '  >  )  N Y4^  W)  c &%Q%   ''  )  1/ 6 P   '*/ 6   '  4A   M /  ?    1>  [  Y)  W  23  &)  )  2)    ?4         #$3  &  / Z>  )  -CW #$3  '    )  N Y4^  1>W>   - &%Q%   1'  )  1/ 6 P   '*/ 6   '  4A   M /   ?    1>  [  Y)  )  ?3  &  W  :)   W  :4   >)>     #$3  &  W  cCW #+3  '  1>')  N Y4^   )W  c &%%   1'  W  1/ 6 P   '*/ 6   '  4A   M /  ?    1>  [  Y)  W  23  &)  )  :)     :4    )     #$3  &  )  NC3 #$3    W  N QQ4^   W)  N &%Q%   ''  W  1/ 6 P   '*/ 6   '  4A   M /  ?    1>  [  Y)  W  23  &)  )  :)   :4    )     #$3  &  )  NC3 #$3    W  N QQ4^   W)  N &%Q%   ''  W  1/ 6 P   '*/ 6   '  4A   M / Z>  2*  1  >  Z  Y)  W  :3  &  )  ?)   W  ?4   W     #$3  &  )  NC3 #$3    W  N QQ4^   W)  N &%Q%   ''  W  1/ 6 P   '*/ 6   '  4A   M / Z>)>  2*  1  >  Z  Y)  W  :3  &  /  W  2)  W  :4    W     #$3  &  )  NC3 #$3    W  N QQ4^   W)  N &%Q%   ''  W  1/ 6 P   '*/ 6   '  4A   M / Z>   2*  1  >  Z  Y)  $  )  23    /  W  ?)  )  :4^  )     #$3  &  / Z>  )  -CW #$3  '  W  5 QQ'4    ))  N &%Q%'   1'  $  )  1/ Cap´ıtol C: Els fitxers de dades 115 6 P  ^*/ 6  ^  4K   M $ Z>   ?    1>  [  Y  /  W  ?3  &)  )  2)  )  ?4^  1>     #$3    /     -C3 #+3  '  W  5 QQ'4    ))  - &%Q%   1'  $  )  1/ 6 P  ^*/ 6 P  ''%  &))/ 6  %  )N&3'  &@A  W# >  WC3]  1>  ?4W    >   1/ 6  ^  4K   ">  Z>  ?  1&  >  2  'Q)  )  ?3    $  )  ?)  )  24^  )     #$3    / Z>  W  -C3 #+3  '  1>  )  c YQ'4     N &%%'   1&  )  1/ 6 P  ^*/ 6  ^  4K   ">    ?  1&  >  2  'Q)  )  ?3    W  :)     W  24^  )     #$3    /      -C3 #$3        N QQ4^    - &%Q%'   ''  $  )  / 6 P  ^*/ 6  ^  4K   ">    ?  1&  >  2  'Q)  )  ?3    )  ?)  )  ?4^   )     #$3    /     -C3 #$3  &     $  - QQ4^    - &%Q%'   ''  )  / 6 P  ^*/ 6  ^  4K   ">    ?  1&  >  2  'Q)  )  ?3    $  )  ?)  )  24^    W     #$3    /     -C3 #+3  '      c YQ'4    W  N &%%'   1&  )  1/ 6 P  ^*/ 6  ^  4K   ">   ?  1&  >  2  'Q)  )  ?3    )  ?)  )  ?4^   )     #$3    / Z>  -C3 #+3  '  1>  )  c YQ'4   )W  N &%%'   1&  )  1/ 6 P  ^*/ 6  ^  4K   ">   ?  1&  >  2  'Q)  )  ?3    )  ?)  )  ?4^         #$3    / Z>  W  -C3 #+3  '    )  c YQ'4   >)>   N &%%'   ''  W  / 6 P  ^*/ 6  ^  4K   ">    ?  1&  >  2  'Q)  W  23  &&  )  ?)   )  ?4^  1>W>     #$3    )  NC3 #$3  '  1>W  c QQ'4    ))  N &%Q%'   1&  )  1/ 6 P  ^*/ 6  ^  4K   ">   ?  1&  >  2  'Q)  )  ?3    W  :)     ?4^   )     #$3    )  cCW #$3    )  N Y4^   )W  c &%%   1'  )  1/ 6 P  ^*/ 6  ^  4K   ">   ?  1&  >  2  'Q)  )  ?3    W  :)   ?4^   )     #$3    )  cCW #$3    )  N Y4^   )W  c &%%   1'  )  1/ 6 P  ^*/ 6  ^  4K   ">  Z>  ?    1>  [  Y  )  ?3  &&  W  :)   3  24^  )     #$3    )  cCW #$3    )  N Y4^   )W  c &%%   1'  )  1/ 116 Simulador cinem` atic per a l’aprehensi´ o destra d’objectes 6 P   '*/ 6   '  4A   "> , Z>)>  2*  1  >  Z  Y)  W  :3  &  /  W  2)  W  :4    W     #$3  &  )  NC3 #$3    W  N QQ4^   W)  N &%Q%   ''  W  1/ 6 P   '*/ 6   '  4A   "> , Z>   2*  1  >  Z  Y)  $  )  23    /  W  ?)  )  :4^  )     #$3  &  / Z>  )  -CW #$3  '  W  5 QQ'4    ))  N &%Q%'   1'  $  )  1/ 6 P   '*/ 6   '  4A   "> , Z>   2*  1  >  Z  Y)  $  )  23    )  ?)  W  :4    >     #$3  &  /     -CW #$3  '  )  5 Y43   )W  N &%%'   1'  /  W  1/ 6 P   '*/ 6 P  %  ))/ 6  ''%  &)N3'  @A  )#   3CW]    :4)    >   / 6   '  4A    / Z>  ?    1>  [  Y)  W  23  &)  /  )  2)   )  ?4^  )     #$3  &  / Z>  )  -CW #$3  '  >  )  N Y4^    c &%Q%   ''  )  1/ 6 P   '*/ 6   '  4A    /   ?    1>  [  Y)  W  23  &)  )  :)     )  ?4   W     #$3  &  /      -CW #+3        c YQ'4     - &%Q%   1  /  )  1/ 6 P   '*/ 6   '  4A    /   ?    1>  [  Y)  W  23  &)  )  2)  W  :4    )     #$3  &  /   $  -C3 #+3  '     $  c YQ'4     - &%Q%   1  )  1/ 6 P   '*/ 6   '  4A    /   ?    1>  [  Y)  W  23  &)  /  )  2)   )  ?4^    )     #$3  &  /     -CW #$3  '      N Y4^   3  c &%Q%   ''  )  1/ 6 P   '*/ 6   '  4A    /  ?    1>  [  Y)  W  23  &)  )  2)  W  :4    )     #$3  &  / Z>'  -CW #$3  '  >  )  N Y4^  W)  c &%Q%   ''  )  1/ 6 P   '*/ 6   '  4A    /  ?    1>  [  Y)  W  23  &)  )  2)  $    ?4          #$3  &  / Z>  )  -CW #$3  '    )  N Y4^  1>W>   - &%Q%   1'  )  1/ 6 P   '*/ 6   '  4A    /   ?    1>  [  Y)  )  ?3  &  W  :)   W  :4   >)>     #$3  &  W  cCW #+3  '  1>')  N Y4^   )W  c &%%   1'  W  1/ 6 P   '*/ 6   '  4A    /  ?    1>  [  Y)  W  23  &)  )  :)     :4    )     #$3  &  )  NC3 #$3    W  N QQ4^   W)  N &%Q%   ''  W  1/ Cap´ıtol C: Els fitxers de dades 117 6 P  ^*/ 6  ^  4K    $  ?  1&  >  2  'Q)  )  ?3    W  :)   ?4^   )     #$3    )  cCW #$3    )  N Y4^   )W  c &%%   1'  )  1/ 6 P  ^*/ 6  ^  4K    $ Z>  ?    1>  [  Y  )  ?3  &&  W  :)   3  24^  )     #$3    )  cCW #$3    )  N Y4^   )W  c &%%   1'  )  1/ 6 P  ^*/ 6  ^  4K    $ Z>)>  ?    1>  [  Y  )  ?3  &&  $  )  2)  )  ?4^  )     #$3    )  cCW #$3    )  N Y4^   )W  c &%%   1'  )  1/ 6 P  ^*/ 6  ^  4K    $ Z>   ?    1>  [  Y  /  W  ?3  &)  /  W  [)  W  :4   W     #$3    / Z>  W  -C3 #+3  '  )  c Y4^   W)  c &%Q%'   '  $  )  / 6 P  ^*/ 6  ^  4K    $ Z>   ?    1>  [  Y  /  W  ?3  &)  )  2)  )  ?4^  1>     #$3    /     -C3 #+3  '  W  5 QQ'4    ))  - &%Q%   1'  $  )  1/ 6 P  ^*/ 6 P  ''%  &))/ 6  %  )N&3'  &@A  W#   WC3]    ?4W    >   1/ 6  ^  4K    $ Z>  ?  1&  >  2  'Q)  )  ?3    $  )  ?)  )  24^  )     #$3    / Z>  W  -C3 #+3  '  1>  )  c YQ'4     N &%%'   1&  )  1/ 6 P  ^*/ 6  ^  4K    $   ?  1&  >  2  'Q)  )  ?3    W  :)     W  24^  )     #$3    /      -C3 #$3        N QQ4^    - &%Q%'   ''  $  )  / 6 P  ^*/ 6  ^  4K    $   ?  1&  >  2  'Q)  )  ?3    )  ?)  )  ?4^   )     #$3    /     -C3 #$3  &     $  - QQ4^    - &%Q%'   ''  )  / 6 P  ^*/ 6  ^  4K    $   ?  1&  >  2  'Q)  )  ?3    $  )  ?)  )  24^    W     #$3    /     -C3 #+3  '      c YQ'4    W  N &%%'   1&  )  1/ 6 P  ^*/ 6  ^  4K    $  ?  1&  >  2  'Q)  )  ?3    )  ?)  )  ?4^   )     #$3    / Z>  -C3 #+3  '  1>  )  c YQ'4   )W  N &%%'   1&  )  1/ 6 P  ^*/ 6  ^  4K    $  ?  1&  >  2  'Q)  )  ?3    W  :)      ?4^   1>      #$3    /  1>  $   -C3 #$3       $   N QQ'4   >)>   - &%%  118 Simulador cinem` atic per a l’aprehensi´ o destra d’objectes  1     1/ 6 P   '*/ 6   '  4A    /   ?    1>  [  Y)  $  $   23  &  )  ?)   W  :4   W     #$3  &  /  $   -C3 #+3  '  /   $   N QQ4^   W)  - &%Q%'   1  /     1/ 6 P   '*/ 6   '  4A    /  ?    1>  [  Y)  W  23  &)  )  :)     :4    )     #$3  &  )  NC3 #$3    W  N QQ4^   W)  N &%Q%   ''  W  1/ 6 P   '*/ 6   '  4A    /  ?    1>  [  Y)  W  23  &)  )  :)   :4    )     #$3  &  )  NC3 #$3    W  N QQ4^   W)  N &%Q%   ''  W  1/ 6 P   '*/ 6   '  4A    / Z>  2*  1  >  Z  Y)  W  :3  &  )  ?)    ?4   W     #$3  &  )  NC3 #$3    W  N QQ4^   W)  N &%Q%   ''  W  1/ 6 P   '*/ 6   '  4A    / Z>)>  2*  1  >  Z  Y)  W  :3  &  /  W  2)  W  :4    W     #$3  &  )  NC3 #$3    W  N QQ4^   W)  N &%Q%   ''  W  1/ 6 P   '*/ 6   '  4A    / Z>   2*  1  >  Z  Y)  $  )  23    /  W  ?)  )  :4^  )     #$3  &  / Z>  )  -CW #$3  '  W  5 QQ'4    ))  N &%Q%'   1'  $  )  1/ 6 P   '*/ 6   '  4A    / Z>   2*  1  >  Z  Y)  $  )  23    )  ?)  W  :4    >     #$3  &  /     -CW #$3  '  )  5 Y43   )W  N &%%'   1'  /  W  1/ 6 P   '*/ 6 P  %  ))/ 6 P    &34/ k l C.2.1 El DTD A continuaci´o es detalla el significat de cada l´ınia en la definici´o del tipus de document de l’exemple mostrat abans.   6   [3 ')#S* 1)  1>    [&%Y^4^    W    Z>  W/ k l ´ Es una capc¸alera on s’especifica que ´es un document XML, la versi´o i la codificaci´o. De fet ´es Cap´ıtol C: Els fitxers de dades 119 opcional, per`o sempre va b´e posar-ho.   6         &347E k l Comenc¸a un document del tipus   * "   - .   6     A8    &' , 3&47,  %  )j];*/ k l L’element   * "   - cont´e un o varis elements del tipus   * "    * (s´ımbol +).   6         ' , 3&43              %  )            #+1R  ^            / k l L’element   * "   - cont´e tres atributs:   " ,     * ,' i       * , . Tots tres s´on dades alfanum`eriques i ´es obligatori posar-los.   6     A8    &''%  &)-,  ^.j];Y/ k l L’element   * "    * cont´e un o varis elements del tipus    *  .   6         ''%  &)-WC3              &3            4)             / k l L’element kinechain cont´e tres atributs:      " i -  . Tots tres s´on dades alfanum`eriques i tamb´e ´es obligatori posar-los.   6     A8     '  A8    /O6          '  4            T,   F>';   +8        'Q            3              )            4^               #$3             CW #$3              Y4       )   &%Q%      >  120 Simulador cinem` atic per a l’aprehensi´ o destra d’objectes  1      )  / GI/ k l En aquesta part hi ha la definici´o de l’element    , . Es tracta d’un element buit, per`o que cont´e una s`erie d’atributs. A continuaci´o s’expliquen aquests atributs.  el camp  - , ´es del tipus   i requerit. Aix`o implica que els valors no es poden repetir. Ser`a utilitzat com a identificador de cada articulaci´o.  el camp '  .   nom´es pot pendre els valors 0 o 1: ser`a 1 si l’articulaci´o ´es de rotaci´o i 0 si ´es de translaci´o.  el camp   "   ´es el valor de  dels par`ametres de Denavit-Hartenberg (graus).  el camp      ´es el valor de  dels par`ametres de Denavit-Hartenberg (graus).  el camp   ´es el valor de   dels par`ametres de Denavit-Hartenberg en mm.  el camp -  ´es el valor de   dels par`ametres de Denavit-Hartenberg en mm.  el camp       ´es el valor del rang inferior de l’articulaci´o (graus o mm).  el camp      ´es el valor del rang superior de l’articulaci´o (graus o mm).  el camp    '  ""- ´es el valor de la velocitat m`axima. ´ Es un camp opcional, per`o si no s’especifica t´e un valor per defecte de 30 (graus/s o mm/s).  el camp      ´es el valor de l’acceleraci´o m`axima. ´ Es un camp opcional, per`o si no s’especifica t´e un valor per defecte de 1 (graus/   or mm/   ).  el camp    " ´es el valor de l’articulaci´o a la posici´o de home.´ Es un camp opcional, per`o si no s’especifica t´e un valor per defecte de 0 (graus o mm). Un cop definit el DTD, ja es pot introduir la informaci´o sobre el robot. C.2.2 La informaci´ o del robot A continuaci´o es detallen les diferents inscripcions que hi ha en la segona part del fitxer xml.   6  ' , 3&4&3'    )   3&4  -%  &)L    c#+1R  ^.  1/ k l Significa que s’obre l’element   "   - i que aquest t´e l’atribut   " , amb valor       - , l’atribut     ,' , amb valor  , i l’atribut       *  , que val  . Aquesta informaci´o equival a dir Cap´ıtol C: Els fitxers de dades 121 que s’introdueix una estructura cinem`atica de nom        - , formada per quatre cadenes cinem`atiques. Aquestes quatre cadenes cinem`atiques tenen sis articulacions comunes, que s´on les del brac¸.   6  %  )N3C3  )  5&3  @A  ))#+  :4W    >   1/ k l Significa que s’obre un element   "    i que aquest t´e l’atribut   , que val  , l’atribut   " amb valor  ./"   i l’atribut -  amb valor   . Aquesta informaci´o correspon a tenir una cadena cinem`atica de nom ,&"  i de   graus de llibertat. Aquesta cadena s’identifica amb el n´umero  . Cal dir que aquesta l´ınia es repeteix tantes vegades com cadenes cinem`atiques hi ha. Quan s’acaba la definici´o d’una cadena cinem`atica s’usa     "     .   6   '  4K  1>  ?    1>  [  Y  )  ?3  &&  $  )  2)  )  ?4^  )     #+3    / Z>  )  NC3 #$3    >  W  N QQ4^  1>  N &%Q%  1>   1  )  / 6 P   '*/ k l Aqu´ı s’est`a definint l’element    , amb els seus atributs. Ja s’ha parlat del seu significat en l’apartat sobre el DTD. Aquesta definici´o es repeteix per cada una de les articulacions de la cadena cinem`atica. Aix´ı, si hi ha 13 articulacions, tindren 13 elements    *  . Cal remarcar que quan s’acaba un element, s’ha de explicitar la seva finalitzaci´o, en aquest cas :      ,  . Amb aquestes l´ınies queden definides les caracter´ıstiques cinem`atiques del robot. C.3 Els fitxers de descripci´ o de punts d’aprehensi´ o:    De la mateixa manera que els fitxers de descripci´o de robots contenen dues parts (el DTD i la informaci´o del robot), els fitxers de descripci´o de punts d’aprehensi´o tamb´e tenen aquesta estructura: el DTD i la informaci´o pr`opia dels diferents punts d’aprehensi´o. A continuaci´o, es mostra un exemple d’un fitxer de descripci´o de punts d’aprehensi´o. Com ´es l`ogic, aquests punts han d’estar especificats a partir d’un objecte geom`etric pr`eviament definit.   6  Y [) #+   >    2&%Y^4   3  W .   Z>  W/ 6       Q1R  '%*E 6     A8    &'1R  %Y,"^Lj];Y/ 128 Simulador cinem` atic per a l’aprehensi´ o destra d’objectes Figura D.1: Pantalla inicial de Qilex0.4. D.2 La construcci´ o d’una nova cel  la Si es tria l’opci´o construir una nova cel  la, la barra de men´u permet introduir un nou objecte i es despleguen tres opcions, tal com mostra la figura D.2. Figura D.2: Barra de men´u inicial. Cap´ıtol D: El manual de l’usuari 129 D.2.1 La introducci´ o d’un nou objecte geom` etric Aquesta opci´o permet a l’usuari introduir peces geom`etriques pr`eviament elaborades. En triar-la, apareix la finestra que mostra la figura D.3. Figura D.3: Finestra per introduir un nou objecte geom`etric. El camp Name ´es obligatori omplir-lo. A m´es, s’ha de complir que tots els objectes tenen un nom diferent. El camp Model file obre un selector de fitxers. Al directori    " ' de l’arrel de    "   %  hi ha un objecte geom`etric definit que porta el nom de base. Els valors X, Y i Z representen la posici´o del centre de coordenades de la pec¸a respecte al centre de coordenades del m´on. Els valors del camp Axes defineixen un vector a l’espai sobre el qual s’aplicar`a la rotaci´o d’angle definit al camp Angle i que determinar`a l’orientaci´o de la pec¸a. Quan s’ha introdu¨ıt l’objecte correctament apareix la finestra que mostra la figura D.4. Figura D.4: Finestra informativa. 130 Simulador cinem` atic per a l’aprehensi´ o destra d’objectes En la figura D.5 es mostra l’aspecte de la pantalla un cop s’ha introdu¨ıt l’objecte base. Figura D.5: Pantalla amb l’objecte base inserit. En aquest punt, si es torna a la barra de men´u es pot observar que s’han activat noves opcions. B`asicament, aquestes noves opcions fan refer`encia a la possibilitat de modificar la cel.la(Edit Cell), de tancar-la (Close Cell) o de guardar-la amb extensi´o %    (Save Cell). Figura D.6: Barra de men´u amb m´es opcions. Cap´ıtol D: El manual de l’usuari 131 D.2.2 La introducci´ o d’un nou objecte geom` etric amb punts d’aprehensi´ o Aquesta opci´o permet a l’usuari introduir peces geom`etriques que incorporen punts d’aprehensi´o. En triar-la, apareix la finestra que es mostra en la figura D.7. Figura D.7: Finestra per introduir un nou objecte geom`etric amb punts d’aprehensi´o. Com es pot observar, en aquesta finestra apareixen els mateixos camps que en el cas anterior (introducci´o d’un objecte geom`etric simple) amb l’´unica excepci´o de qu`e ara apareix un camp addicional (Dat file), que permet seleccionar un fitxer amb la informaci´o referent als punts d’aprehensi´o. En el directori arrel de    "   %  hi ha un objecte geom`etric amb punts d’aprehensi´o anomenat cube. Quan l’objecte ha estat introdu¨ıt correctament apareix la finestra mostrada en la figura D.8. Figura D.8: Finestra informativa. 132 Simulador cinem` atic per a l’aprehensi´ o destra d’objectes En la figura D.9 s’observa la pantalla amb l’objecte cube inserit. Figura D.9: Pantalla amb l’objecte cube inserit. D.2.3 La introducci´ o d’una nova estructura cinem` atica Per tal d’introduir en el simulador una estructura cinem`atica com la formada per la m`a mec`anica MA-I acoplada al robot St¨aubli RX90, cal escollir l’opci´o New kinematic chain del submen´u Create New Object del men´u Edit Cell (o New Cell). La finestra que apareix ´es la que es mostra en la figura D.10. En el camp Name cal introduir un nom diferent per cada cadena cinem`atica inserida. El fitxer model (Model file) ha de ser un fitxer de descripci´o gr`afica de robots. Al directori    /  ' de l’arrel de    "   %  n’hi ha alguns exemples. El fitxer corresponent al conjunt brac¸ m´es m`a ´es        - %   . Per altra banda, en els camps de Position and Orientation cal introduir la posici´o i orientaci´o respecte a les coordenades del m´on de la cel.la. El camp Kinematic Engine permet escollir el motor cinem`atic desitjat (      * o      *   - ). El motor idoni per tractar el conjunt brac¸ m´es m`a ´es      *  $ - . Per ´ultim, el camp Dat file permet escollir el fitxer Cap´ıtol D: El manual de l’usuari 133 Figura D.10: Finestra per introduir una nova cadena cinem`atica. que incorpora la descripci´o cinem`atica del robot. Per al cas del conjunt brac¸ m´es m`a el fitxer a escollir ´es        - -%  . Si la cadena cinem`atica ha estat introdu¨ıda correctament, apareix la finestra mostrada en la figura D.11. Figura D.11: Finestra informativa. En la figura D.12 s’observa la pantalla amb l’estructura cinem`atica introdu¨ıda. Com es pot veure, a part d’apar`eixer el robot en l’escena, tamb´e apareix una nova finestra per al comandament del robot: el panell de control. Es poden insertar tants objectes i tantes cadenes cinem`atiques com calgui. Per cada nova cadena cinem`atica apareixer`a un nou panell de control per al seu comandament. 134 Simulador cinem` atic per a l’aprehensi´ o destra d’objectes Figura D.12: Pantalla amb el robot RX90 i la m`a mec`anica insertats. D.3 La manipulaci´ o dels objectes de la cel  la D.3.1 La manipulaci´ o de la c` amera La biblioteca Inventor/Coin t´e definides unes funcions que permeten moure la c`amera amb la que s’observa l’escena. Aquestes funcions modifiquen nom´es la manera de visualitzar l’escena i, per tant, no permeten interactuar amb els objectes geom`etrics o les cadenes cinem`atiques. Un exemple d’aquestes funcionalitats s´on les rodetes rotx iroty que apareixen a la part inferior esquerra de la pantalla i que produeixen una rotaci´o de l’escena en els eixos de la c`amera XiY, respectivament. Per altra banda, la rodeta dolly que apareix a la part inferior dreta de la pantalla realitza un moviment endavant i endarrere de la c`amera. Altres funcions d’aquest tipus s´on les seg¨uents: Cap´ıtol D: El manual de l’usuari 135 Selecciona objectes Manipula la c`amera Porta la c`amera a la posici´o inicial Defineix una nova posici´o inicial de la c`amera Visualitza tota l’escena Focalitza (zoom) en el punt que es senyali amb el punter Canvia la perspectiva de c`onica a isom`etrica i viceversa D.3.2 La manipulaci´ o del robot Per poder interactuar amb el robot cal rec´orrer al seu panell de control. En concret, el panell de control del brac¸ rob`otic m´es la m`a ´es el que es mostra en la figura D.13. La implementaci´o del panell de control i les diferents possibilitats que ofereix s’expliquen en l’apartat 6.2.2 de la mem`oria. Tot i aix´ı, val la pena repetir i ampliar algunes de les seves principals caracter´ıstiques per tal d’aconseguir que l’usuari tingui del tot clar com funciona aquesta important eina. El panell est`a dividit en tres parts:  La primera ´es on hi ha els lliscadors que permeten variar el valor de les articulacions del brac¸ i dels dits.  La segona part permet realitzar el c`alcul de la cinem`atica inversa un cop s’han escollit els punts d’aprehensi´o que es volen assolir.  La tercera part ´es una consola que permet mostrar informaci´o addicional. 136 Simulador cinem` atic per a l’aprehensi´ o destra d’objectes Figura D.13: Panell de control del robot. En la segona part (Inverse kinematics) cal tenir en compte que:  Els camps F1,F2,F3 iF4 permeten assignar un punt d’aprehensi´o a assolir per cada dit. Cada punt d’aprehensi´o t´e una etiqueta (       ) que es visualitza en l’escena.  El bot´o GO permet iniciar el c`alcul de la cinem`atica inversa sempre i quan s’hagin escollit els punts d’aprehensi´o a assolir. Cap´ıtol D: El manual de l’usuari 137  El bot´o RETRY permet tornar a intentar el c`alcul de la cinem`atica inversa partint d’una configuraci´o inicial diferent.  El bot´o WHERE s’encarrega de mostrar per consola la configuraci´o actual del robot. Per fer-ho, s’imprimeixen en la consola les matrius dels TCP’s de cada dit.  El bot´o ubica el robot a la posici´o de home definida en el fitxer   . La consola, a part de mostrar les matrius dels TCP’s en clicar el bot´o de WHERE, aporta d’altres informacions forc¸a ´utils. Cal destacar, per exemple, que si s’inicia el c`alcul de la cinem`atica inversa i no s’han escollit punts d’aprehensi´o a assolir, mostra el seg¨uent missatge: No grasping points have been selected. O, per altra banda, imprimeix Solution found oSolution no found depenent de si el c`alcul de la cinem`atica inversa ha finalitzat satisfact`oriament o no. Si el motor cinem`atic aconsegueix trobar soluci´o, el robot es mou a la configuraci´o obtinguda. La figura D.14 mostra un exemple del resultat que s’obt´e en aquest cas. Figura D.14: El programa    "   %  despr´es de resoldre el problema cinem`atic invers. 144 Simulador cinem` atic per a l’aprehensi´ o destra d’objectes     3C3RW  %  P)P  '*# C&%*" #  f #c  ' @A % a  ?  '`3W3  %Q'L    *  ^%&,   D 4  )Q  3&)#S)YH1%Q1" %  )#  3&3' H   *      3 )   W;  P)P  Q*# C&%*" #  f #c   @A '%& .   ?  O333  %Q'L 1    *  ^%), ;    4    ^%&, ;  R3 L' ' , ;  R3 .'   , %Q1"   3*#M   @A )3;  R3 8?^4  @1'4], ;c%Q1"    3*#M  T@A &3  P)P      ICW&%*L b*#+^41C&%Y    .32W   'L %]%  ) ' 4W^%    &')'L % %  &)W,*%Y '   'L % %  )  W43'<;  P)P      ICW&%*L b*#+^41C&%Y     'L %T"*# C%Y*CW#+ ,*)# ]j  &3&4W; ' 4W^%    &')'L %  &34, %Y    'L % %  )  &4W'1;  P)P      ICW&%*L b*#+^41C&%Y     )1Q*#f %?1R  '%* ' 4W^%    WQY*#M % 1R  '%*Q,%*    )QY*#M % R  %*  W43'<;  P)P      ICW&%*L b*#+^41C&%Y     1#$Y)  D1R  '%* ' 4W^%    #+Q  R  %*3,1%*    #+Q  R  %*  W43'<;  ' 4W % 1&%Y)I,.%Y'   3*#f   @A &3;    3     4B4W %CW'   &3  W4^, ;  )#S)"%*"'4  R3 ^4^ @14     ))#$'" #  &.%Q ! #M '"   *      ' )       ))#$'" #  #+&4    ,.%Q1"5%  )#  @A &3 H:'  L3C'^;  '  #f "  8   &' 'L, %Y' %  &)#  AR3C  <)#FH  \Y h \Y2H- LWC H %*    ')'L % %  &)  W4W' H  F%  &)   &''%  &) ;  '  #f "  8   &' 'L, %Y' %  &)#  AR3C  <)#FH  \Y h \Y2H- LWC H %*    ')'L % %  &)  W4W' H  F%  &)  3&4   &''%  &)1;  Cap´ıtol E: Els fitxers .h 145 '  #M "  8   )1) ), %Y1" %  &#  3RWC  <)#"H  \Q U* \Y2H:' L3C H %*    )QY*#M % R  %*  W43'<;  R 1  #M "  8   ''&4))# , ;  ' 4W^% #S  'L % %  &)5,   1  < ) J^ *& )';  ' 4)^% '.#S  WQY*#M % 1R  '%*2,     < ' J^ *& '";  ' 4W % '.#S  1#$Y)  R  %Y5,   1  < ) J^ *& )';  PWP   Q.  ICW&%*L ' #+`%3 4UR  4W^%    'L % %  &)c34 PWP 4)^%    'L %  &34 ' 4W^% #S  'L % %  &)5,  F%  &)   &'   H    &)#+'" #   %  &) ;  'O4W % '.#S  ')'L %  &34],  F%  )  3&4   Q)  ^'1H    &)#+'" #   %  &) ;    k l E.4 El fitxer panel control hand.h   %& .9&3') %Y*#+1  3&4 =3CWR3  %   D 4  )Q      3CWR3  %  3 %Q1'*#S  &3&4Z,    4  )Y  c&#+'  H1%Q1" %  )#  N&3? H  F%  &)  &34    %  )c N;   3 %Q1'*#S  &3&42, ;  P)P   ')#S5 =  &3')   'b )#f 3R3   f #c'&%  Y  4W#   &'33)#S P)P    ' %Y1'*#+1:3  3   ' , [ 4^ 3  P)P   ':R3CI"' 3&4  3R    &'33)#   ' %Y1'*#+1-3 P)P )#+ 4WY@A40  f1      3R   FY'  3R)  M /   3R   FY'  3R)  "> , 146 Simulador cinem` atic per a l’aprehensi´ o destra d’objectes   3R)   F*  3R   /   3R)   F*  3R   / '  1#$Y 3CW[R)#  4W1C3RW  #, .1  4W1C3RW   .1 >     %   A'  ?%  %    #  4     %   A'  ?%  %  "3    C   CI"  cWC   C'I"1    C   CI"   'L %    C   CI"   'L %  ')#S    C   CI"   'L % #+Y*#  /   C'I"1  #+1C3  :%    %Q ,   F&4^   C'I"1   M    F&4^   C'I"1   ">    F&4^   C'I"1       F&4^   C'I"1       12R  A'  2. %Y  M $   12R  A'  2. %Y  ">    12R  A'  2. %Y   $   12R  A'  2. %Y   $ %Q11   D 4  )Q   FY'  #+  .#  PWP     F%  &)  &3&4: )#f 3R3   04)Q@A''4  #+  F%  &)  &3&4   %  &) & PWP   )   IC3%YL 1 CW)43'"]  '9 ] "   ?&%   ^ '^ 4_CW)43'"  ] ", ;  PWP   :'Y' )#f 3R3 QB3&4  ICW&%*L ' #+ C'.4    '  #+ PWP  'L %Q   3'*#f     3&4 &   3'*#f   c#+ /   3'*#f   c)  '^ 4 )  3   Q , ;  '^ 4   3  1 Q> , ;  Cap´ıtol E: Els fitxers .h 147   4 #$34W1 3  1 , ;  #S)"%Y"4     A'    QC  c)3   1C'    #+1C3  A'  ?4  3  )#     #+1C3  A'  ?4  3   M    #+1C3  A'  ?4  3   ">    #+1C3  A'  ?4  3       #+1C3  A'  ?4  3       C'I"1  #SCW ,  #SCW  A'     4  WY  5  3  1# CW     A'    QC  N  M /    A'    QC  N  "> ,    A'    QC  N   /    A'    QC  N   / #f &'"   K  3-  W  WC3RW  % Q "  PWP   Q.cY )" #+ %Y13%*"'4     7   RWC'I"15  2   PWP %Y*#+1Z&3 '^ 4 Y *   '), ;  '^ 4 Q *C3)4W'" @A  ))#S?, %Y '   #+Q  1R  '%*  W4W'F;  '^ 4 Y )  ) ' ')#S. , ;  '^ 4 Q    #+  #+ , ;  '^ 4 Y )*#SQ*#  ' ')#S.U, ;  #f &'" Y )"  '^ 4 Q  @A  ))#+ , ;  '^ 4 Q  @A  ))# > , ;  '^ 4 Q  @A  ))#  , ;  '^ 4 Q  @A  ))#  , ;  148 Simulador cinem` atic per a l’aprehensi´ o destra d’objectes   k l E.5 El fitxer consolewidget.h   %  %Y1    4  WY5?3CWR3  %   D 4  )Q      WC3RW  %  %Y1    4  WY,    4  WY  c)#+' ! H1%Y' %  &)#  c&3?! H  B1   )  !N;   %Y'.1   D 4  )QY, ;    FY'  ^4^   ?%Y1     3R)  c#S['    W  ^4^   NW3C'  #+"'%*"4     A'    Q1C'  2%Q1    4  WY    Q1C'     A'    1C'  N3WC'    Q1C'  WC3RW  % Q "  PWP   )   IC3%YL 1 '.#S"  ' QL  )    %Y'.1  '^ 40)#V  W    <4 ,   3*#M  ! ';    k l E.6 El fitxer qpanel joint.h   %   3  ^  WC3RW  %    4  WY  Cap´ıtol E: Els fitxers .h 149     WC3RW  %  PWP   ) % O%Q1"*# C%Y"   'dQ  4))#Sg3&4:  '  )#+ %Q13''%*"'4 PWP       '  &3')  ^,   D 4  )Q  W&#+'LH^%Q1" %  &#  3W;    &3')   ' , ;    3R)  O 3R   ' #   <  4W#  Y  4W#      CW2R#    ' 3C ,   3R)  cCW)  , PWP   :'Y'  ICW&%*L ' ) L 3  \Y   ' Y  4W#   &3C 3&4 PWP  "B#$3  '^ 4.Y  3R)  ^ ,);  '^ 4 Y  F3   ' ), 4)CWR3 KH 4W1C3RW 1;  '^ 4 .Y  f # '),W'  I ;  '^ 4 YQ8N  3C&, 4W1C3R3 &;  '^ 4 YQ8:  3C, 4W1C3R3 ;  #+"'%*"4     A'    1C'  c   Q1C'  P)P   ':*:Q " 34B*  1&3  C3)43'"Q    &3C'   ?  'dQ  4))#S P)P 3&4:    5)#S %YW%Y"4     7   .%Q WC3RW  % Q "  '^ 4 .Y  3C'<,"4)CWR3 1;  #f &'" Y )"  '^ 4dQ  3C ' ,) ;  *  1&3   '^ 4 3C   3  )), 4W1C3RW ;  #f &'" '9 &3C  4W1C3RW  4 &3C'  '  f # '  P)P  #$&4W  A> 4W  1#+Q   O[ 150 Simulador cinem` atic per a l’aprehensi´ o destra d’objectes   k l E.7 El fitxer Rchain hand   %   <%  )  3&4< WC3RW  %   R  '%*      #M '"   '*#+3Y   ) 3     3'*#M  , W3#+[C3      3'*#M  , W3)*[C3    P)P #M '" "[ #$3 &)#S   '*#+3Y   ) 3'      3'*#M  , W'  #+2CW      3'*#M  , W'  W"*[C3    R3   4  )Q    )#  3'L#  P)P @A&3 )* L 1U  ) ')' 4)CWR3   W)J   P)P ) L 3 W L 9   ) 4)CWR3   )J^  P)P Q 1  N4^ "3&%Y 4)CWR3   1'Q 1 &'   4)CWR3 7 QQ'4  4)CWR3 g &%%Y) #$'L 1  4)CWR3  'L   4)CWR3 7L / Cap´ıtol E: Els fitxers .h 151 PWP   Q.  ICW&%*L ' CW)43'"-W)#S)[CW   B3&47WW"*[C3   &#M 3R3 Q '^ 4 WC3)4W'"  #+[C3 ,   W'*#M 53#+[C3   WE G"H   '*#$3'Q    KE GIH   H['  ;  '^ 4 WC3)4W'"  )*[C3 ,   3'*#M cWW"*[C3   YE G"H   '*#$3'Q      E GIH7  ;  PWP   :'Y'  ICW&%*L ' ])] \Y2  ' 4^ "3&%Y  IC3%YL 1&%Q%Y #$4^  " PWP   '  ^   ) %    *#S''"4 4W1C3RW  3 1R  '%*L  ,   W'*#f    H   3'*#f    "H 4W1C3R3   J H2'0H '  ;  4W1C3RW b  R  %YL '     'C #$3   ,   3'*#M    H   W'*#M    $H 4W1C3RW   J .H[0^H:'  ;  4W1C3RW    %Q3 %CW '",   W'*#f    H   3'*#f    "H 4W1C3R3   J H2'0H   ^;  4W1C3RW D3 1R  %YL ' #  ,   W'*#f      1E G"H   W'*#f     W"*[C3   E G"H 4W1C3RW  #, 1J H:';  4W1C3RW 0  R  %*L  )#      1C' #$3   ,   3'*#M   3   3E G"H   3'*#f     ))"*2CW   ZE G"H<4W1C3R3  # J^&HN0;  4W1C3RW  3 1R  %YL '   '   ,   W'*#M   W   3E GIH   3'*#f     ))"*2CW   ZE G"H<4W1C3R3  # J^&HN0;  PWP   :'Y'  ICW&%*L ' %3 %&C3 '"!  7"# ?  2   4  3%Q  ICW&%*L  4W1C3RW 7   8   'Qc,   3'*#M   VH   3'*#M    SH^4)CWR3 [.3  &)H 4)CWR3  %Q3  &)3H 4W1C3RW  )Y;  4W1C3RW 7      'Qc,   3'*#M   VH   3'*#M    H4)CWR3 TL3  &)H 4)CWR3  %Q3  &)3H 4W1C3RW  )Y;  4W1C3RW TL&4W ,   W'*#M   IH   W'*#M    IH 4W1C3RW  .3  )WH 4)CWR3  %Q3  &)3H 4W1C3RW  )Y;  4W1C3RW 7)4g,   3'*#f   VH   W'*#f    SH^4W1C3RW  .3  ))H 4)CWR3  %Q3  &)Q;  4W1C3RW  .%Q3  ,   1;  PWP   Q.?Y   4W #+-%Q3 4 R   ' ')#S.  3&4" %Q3 %CW '" PWP   'B #+  ')'L %Y 152 Simulador cinem` atic per a l’aprehensi´ o destra d’objectes '   ' #+  ")#?,"4W1C3RW   )J-E GIH   W'*#f   3  3#+[C3   E G"H   '*#+3Y    1   2E GIH   3'*#M   W  )*[CW   ]E G"H   3'*#M     &34 E G"H '  "#$'L 17H 4W1C3RW    ;  '   ' ')#S.  "#     1C' #+3  Q ,"4)CWR3   J]E G"H   3'*#M   W  W)#S)[CW   ]E G"H   '*#$3'Q    1   2E G"H   3'*#M   W  )*[CW   ]E G"H   W'*#M     &34<E G"H '  ")#+'L 'cH 4W1C3R3 B 1 ;  '   &'& #+  ")#  &3&4 > ,"4W1C3RW   J H   W'*#f     3#+[C3   E G"H   '*#+3Y    1   5E GIH   W'*#M   W  W"*[C3   ]E G"H   3'*#f     3&41E GM;  '   &'& #+  ")#  &3&4  ,"4W1C3RW   J H   W'*#f     3#+[C3   E G"H   '*#+3Y    1   5E GIH   W'*#M   W  W"*[C3   ]E G"H   3'*#f     3&41E G"H '  "#$'L 17H 4W1C3RW    ;  4)CWR3  )4  3%Q ,   W'*#f   %& H   W'*#M    ;    4 QQ82L  )&,   3*#f  7.  WQ;    4h#f'*'*#M  ,   3'*#M   ['*#f W;    4h#f'*'*#M  ,   3'*#M   ['*#f H^4W1C3RW .%3  ;  )#S)"%*"'4  P)P   '?Y  ^4)C3)4W'"]     '  M 3CQ   4O3CW)43'"   B,1'  ^2H 4W1C3RW 7 &3C H-  ^;    4 3CW)43'"  ^ )# _,1'   :H 4W1C3RW 7 &3C ;  3CWR3  %  P)P    7  ' L%Q3   M&%Y" # 4)CWR3      P)P    &)#+3Q"#+   &%    ' 4 $ &#$3Q"#+  ^  , &4 $ )#+3Y"#+  PWP  3C  2   4W  #SQ    I#S4W1!  ]&%  5%  &) '  4W   P)P  C3[R)#     '  'L %%  ) '  %  &)  Cap´ıtol E: Els fitxers .h 153 PWP  CW[R)#   -#SL %&C3 'L 1   &'=R   =" 4   F#+' %  )AH PWP RWC'#S)#S) W  1  ^ 'D .3  PWP  CW[R)#   3   '" '   ^  P)P  1 &3C'     '  1NW L ' 4W1C3RW  #,  ' , P)P  #$3'  f # g8:'*#f c  ?  '   #  4 #+  f#+&%Y   3'*#f     #  4  P)P  #$3'  f # g8:'*#f c  ?  'B"  (#S  f#+&%YQ   3'*#f    " 1  P)P  3C'5  2   %CW# #S) '*C'   2   #+1R)  f  ^'    ' P)P #SQ 'C"    #$&4)73&4:  '0#M Y'L %` [ 4W1C3RW  #, '*C'    ) '!# #S #  3C  ) =  " 3C   4W1C3RW  4W   R 1 %Y1  ^4)  R 1""1  'L %Q    *#f  =.  W 1C'  %Q11   D 4  )Q  &%Q11  ! PWP   Q.?Y   4W#S'&4:  '?  f # 'L 1T  Z [[@A  'h)  43',%Q1"5%  &)#  #   ;  'D#+&4  ' 3[ ,   1  < )'   ) ).;  PWP   )  &4WQL  ) "7  D%Y'.1 