Simulador cinemàtic per a l'aprehensiò destra d'objectes
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 &347E 6 A8 &' , 3&47, % )j];*/ 6 ' , 3&43 % ) #+1R ^ / 6 A8 &''% &)-, ^.j];Y/ 6 ''% &)-3 WC3 4W / 6 A8 ' A8 / 6 ' 4 * 1 , F>; S8 Y 3 & ) 4 #+3 C3 #+3 QQ4 W &%% 1> 1 ) 1/ GI/ 6 &3&43 ) 34 -% &)'L 5#SR '. / 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 23 &) / ) 2) ) ?4^ ) #$3 & / Z> ) -CW #$3 ' > ) N Y4^ c &%Q% '' ) 1/ 6 P '*/ 6 ' 4A M / ? 1> [ Y) W 23 &) ) :) ) ?4 W #$3 & / -CW #+3 c YQ'4 - &%Q% 1 / ) 1/ 6 P '*/ 6 ' 4A M / ? 1> [ Y) W 23 &) ) 2) W :4 ) #$3 & / $ -C3 #+3 ' $ c YQ'4 - &%Q% 1 ) 1/ 6 P '*/ 6 ' 4A M / ? 1> [ Y) W 23 &) / ) 2) ) ?4^ ) #$3 & / -CW #$3 ' N Y4^ 3 c &%Q% '' ) 1/ 6 P '*/ 6 ' 4A M / ? 1> [ Y) W 23 &) ) 2) W :4 ) #$3 & / Z>' -CW #$3 ' > ) N Y4^ W) c &%Q% '' ) 1/ 6 P '*/ 6 ' 4A M / ? 1> [ Y) W 23 &) ) 2) ?4 #$3 & / Z> ) -CW #$3 ' ) N Y4^ 1>W> - &%Q% 1' ) 1/ 6 P '*/ 6 ' 4A M / ? 1> [ Y) ) ?3 & W :) W :4 >)> #$3 & W cCW #+3 ' 1>') N Y4^ )W c &%% 1' W 1/ 6 P '*/ 6 ' 4A M / ? 1> [ Y) W 23 &) ) :) :4 ) #$3 & ) NC3 #$3 W N QQ4^ W) N &%Q% '' W 1/ 6 P '*/ 6 ' 4A M / ? 1> [ Y) W 23 &) ) :) :4 ) #$3 & ) NC3 #$3 W N QQ4^ 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 QQ4^ 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 QQ4^ W) N &%Q% '' W 1/ 6 P '*/ 6 ' 4A M / Z> 2* 1 > Z Y) $ ) 23 / W ?) ) :4^ ) #$3 & / Z> ) -CW #$3 ' W 5 QQ'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 QQ'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 YQ'4 N &%%' 1& ) 1/ 6 P ^*/ 6 ^ 4K "> ? 1& > 2 'Q) ) ?3 W :) W 24^ ) #$3 / -C3 #$3 N QQ4^ - &%Q%' '' $ ) / 6 P ^*/ 6 ^ 4K "> ? 1& > 2 'Q) ) ?3 ) ?) ) ?4^ ) #$3 / -C3 #$3 & $ - QQ4^ - &%Q%' '' ) / 6 P ^*/ 6 ^ 4K "> ? 1& > 2 'Q) ) ?3 $ ) ?) ) 24^ W #$3 / -C3 #+3 ' c YQ'4 W N &%%' 1& ) 1/ 6 P ^*/ 6 ^ 4K "> ? 1& > 2 'Q) ) ?3 ) ?) ) ?4^ ) #$3 / Z> -C3 #+3 ' 1> ) c YQ'4 )W N &%%' 1& ) 1/ 6 P ^*/ 6 ^ 4K "> ? 1& > 2 'Q) ) ?3 ) ?) ) ?4^ #$3 / Z> W -C3 #+3 ' ) c YQ'4 >)> N &%%' '' W / 6 P ^*/ 6 ^ 4K "> ? 1& > 2 'Q) W 23 && ) ?) ) ?4^ 1>W> #$3 ) NC3 #$3 ' 1>W c QQ'4 )) N &%Q%' 1& ) 1/ 6 P ^*/ 6 ^ 4K "> ? 1& > 2 'Q) ) ?3 W :) ?4^ ) #$3 ) cCW #$3 ) N Y4^ )W c &%% 1' ) 1/ 6 P ^*/ 6 ^ 4K "> ? 1& > 2 'Q) ) ?3 W :) ?4^ ) #$3 ) cCW #$3 ) N Y4^ )W c &%% 1' ) 1/ 6 P ^*/ 6 ^ 4K "> Z> ? 1> [ Y ) ?3 && W :) 3 24^ ) #$3 ) cCW #$3 ) N Y4^ )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 QQ4^ W) N &%Q% '' W 1/ 6 P '*/ 6 ' 4A "> , Z> 2* 1 > Z Y) $ ) 23 / W ?) ) :4^ ) #$3 & / Z> ) -CW #$3 ' W 5 QQ'4 )) N &%Q%' 1' $ ) 1/ 6 P '*/ 6 ' 4A "> , Z> 2* 1 > Z Y) $ ) 23 ) ?) W :4 > #$3 & / -CW #$3 ' ) 5 Y43 )W N &%%' 1' / W 1/ 6 P '*/ 6 P % ))/ 6 ''% &)N3' @A )# 3CW] :4) > / 6 ' 4A / Z> ? 1> [ Y) W 23 &) / ) 2) ) ?4^ ) #$3 & / Z> ) -CW #$3 ' > ) N Y4^ c &%Q% '' ) 1/ 6 P '*/ 6 ' 4A / ? 1> [ Y) W 23 &) ) :) ) ?4 W #$3 & / -CW #+3 c YQ'4 - &%Q% 1 / ) 1/ 6 P '*/ 6 ' 4A / ? 1> [ Y) W 23 &) ) 2) W :4 ) #$3 & / $ -C3 #+3 ' $ c YQ'4 - &%Q% 1 ) 1/ 6 P '*/ 6 ' 4A / ? 1> [ Y) W 23 &) / ) 2) ) ?4^ ) #$3 & / -CW #$3 ' N Y4^ 3 c &%Q% '' ) 1/ 6 P '*/ 6 ' 4A / ? 1> [ Y) W 23 &) ) 2) W :4 ) #$3 & / Z>' -CW #$3 ' > ) N Y4^ W) c &%Q% '' ) 1/ 6 P '*/ 6 ' 4A / ? 1> [ Y) W 23 &) ) 2) $ ?4 #$3 & / Z> ) -CW #$3 ' ) N Y4^ 1>W> - &%Q% 1' ) 1/ 6 P '*/ 6 ' 4A / ? 1> [ Y) ) ?3 & W :) W :4 >)> #$3 & W cCW #+3 ' 1>') N Y4^ )W c &%% 1' W 1/ 6 P '*/ 6 ' 4A / ? 1> [ Y) W 23 &) ) :) :4 ) #$3 & ) NC3 #$3 W N QQ4^ 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 Y4^ )W c &%% 1' ) 1/ 6 P ^*/ 6 ^ 4K $ Z> ? 1> [ Y ) ?3 && W :) 3 24^ ) #$3 ) cCW #$3 ) N Y4^ )W c &%% 1' ) 1/ 6 P ^*/ 6 ^ 4K $ Z>)> ? 1> [ Y ) ?3 && $ ) 2) ) ?4^ ) #$3 ) cCW #$3 ) N Y4^ )W c &%% 1' ) 1/ 6 P ^*/ 6 ^ 4K $ Z> ? 1> [ Y / W ?3 &) / W [) W :4 W #$3 / Z> W -C3 #+3 ' ) c Y4^ W) c &%Q%' ' $ ) / 6 P ^*/ 6 ^ 4K $ Z> ? 1> [ Y / W ?3 &) ) 2) ) ?4^ 1> #$3 / -C3 #+3 ' W 5 QQ'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 YQ'4 N &%%' 1& ) 1/ 6 P ^*/ 6 ^ 4K $ ? 1& > 2 'Q) ) ?3 W :) W 24^ ) #$3 / -C3 #$3 N QQ4^ - &%Q%' '' $ ) / 6 P ^*/ 6 ^ 4K $ ? 1& > 2 'Q) ) ?3 ) ?) ) ?4^ ) #$3 / -C3 #$3 & $ - QQ4^ - &%Q%' '' ) / 6 P ^*/ 6 ^ 4K $ ? 1& > 2 'Q) ) ?3 $ ) ?) ) 24^ W #$3 / -C3 #+3 ' c YQ'4 W N &%%' 1& ) 1/ 6 P ^*/ 6 ^ 4K $ ? 1& > 2 'Q) ) ?3 ) ?) ) ?4^ ) #$3 / Z> -C3 #+3 ' 1> ) c YQ'4 )W N &%%' 1& ) 1/ 6 P ^*/ 6 ^ 4K $ ? 1& > 2 'Q) ) ?3 W :) ?4^ 1> #$3 / 1> $ -C3 #$3 $ N QQ'4 >)> - &%%
118 Simulador cinem` atic per a l’aprehensi´ o destra d’objectes 1 1/ 6 P '*/ 6 ' 4A / ? 1> [ Y) $ $ 23 & ) ?) W :4 W #$3 & / $ -C3 #+3 ' / $ N QQ4^ W) - &%Q%' 1 / 1/ 6 P '*/ 6 ' 4A / ? 1> [ Y) W 23 &) ) :) :4 ) #$3 & ) NC3 #$3 W N QQ4^ W) N &%Q% '' W 1/ 6 P '*/ 6 ' 4A / ? 1> [ Y) W 23 &) ) :) :4 ) #$3 & ) NC3 #$3 W N QQ4^ W) N &%Q% '' W 1/ 6 P '*/ 6 ' 4A / Z> 2* 1 > Z Y) W :3 & ) ?) ?4 W #$3 & ) NC3 #$3 W N QQ4^ 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 QQ4^ W) N &%Q% '' W 1/ 6 P '*/ 6 ' 4A / Z> 2* 1 > Z Y) $ ) 23 / W ?) ) :4^ ) #$3 & / Z> ) -CW #$3 ' W 5 QQ'4 )) N &%Q%' 1' $ ) 1/ 6 P '*/ 6 ' 4A / Z> 2* 1 > Z Y) $ ) 23 ) ?) W :4 > #$3 & / -CW #$3 ' ) 5 Y43 )W N &%%' 1' / W 1/ 6 P '*/ 6 P % ))/ 6 P &34/ 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 &347E 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&43 % ) #+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 Y4 ) &%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 % )N3C3 ) 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 QQ4^ 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 Q1R '%*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 ? '`3W3 %Q'L * ^%&, D 4 )Q 3&)#S)YH1%Q1" % )# 3&3' H * 3 ) W; P)P Q*# C&%*" # f #c @A '%& . ? O333 %Q'L 1 * ^%), ; 4 ^%&, ; R3 L' ' , ; R3 .' , %Q1" 3*#M @A )3; R3 8?^4 @1'4], ;c%Q1" 3*#M T@A &3 P)P ICW&%*L b*#+^41C&%Y .32W 'L %]% ) ' 4W^% &')'L % % &)W,*%Y ' 'L % % ) W43'<; P)P ICW&%*L b*#+^41C&%Y 'L %T"*# C%Y*CW#+ ,*)# ]j &3&4W; ' 4W^% &')'L % &34, %Y 'L % % ) &4W'1; P)P ICW&%*L b*#+^41C&%Y )1Q*#f %?1R '%* ' 4W^% WQY*#M % 1R '%*Q,%* )QY*#M % R %* W43'<; P)P ICW&%*L b*#+^41C&%Y 1#$Y) D1R '%* ' 4W^% #+Q R %*3,1%* #+Q R %* W43'<; ' 4W % 1&%Y)I,.%Y' 3*#f @A &3; 3 4B4W %CW' &3 W4^, ; )#S)"%*"'4 R3 ^4^ @14 ))#$'" # &.%Q ! #M '" * ' ) ))#$'" # #+&4 ,.%Q1"5% )# @A &3 H:' L3C'^; ' #f " 8 &' 'L, %Y' % &)# AR3C <)#FH \Y h \Y2H- LWC H %* ')'L % % &) W4W' H F% &) &''% &) ; ' #f " 8 &' 'L, %Y' % &)# AR3C <)#FH \Y h \Y2H- LWC H %* ')'L % % &) W4W' H F% &) 3&4 &''% &)1;
Cap´ıtol E: Els fitxers .h 145 ' #M " 8 )1) ), %Y1" % &# 3RWC <)#"H \Q U* \Y2H:' L3C H %* )QY*#M % R %* W43'<; R 1 #M " 8 ''&4))# , ; ' 4W^% #S 'L % % &)5, 1 < ) J^ *& )'; ' 4)^% '.#S WQY*#M % 1R '%*2, < ' J^ *& '"; ' 4W % '.#S 1#$Y) R %Y5, 1 < ) J^ *& )'; PWP Q. ICW&%*L ' #+`%3 4UR 4W^% 'L % % &)c34 PWP 4)^% 'L % &34 ' 4W^% #S 'L % % &)5, F% &) &' H &)#+'" # % &) ; 'O4W % '.#S ')'L % &34], 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 %Q1'*#S &3&4Z, 4 )Y c&#+' H1%Q1" % )# N&3? H F% &) &34 % )c N; 3 %Q1'*#S &3&42, ; P)P ')#S5 = &3') 'b )#f 3R3 f #c'&% Y 4W# &'33)#S P)P ' %Y1'*#+1:3 3 ' , [ 4^ 3 P)P ':R3CI"' 3&4 3R &'33)# ' %Y1'*#+1-3 P)P )#+ 4WY@A40 f1 3R FY' 3R) M / 3R FY' 3R) "> ,
146 Simulador cinem` atic per a l’aprehensi´ o destra d’objectes 3R) F* 3R / 3R) F* 3R / ' 1#$Y 3CW[R)# 4W1C3RW #, .1 4W1C3RW .1 > % A' ?% % # 4 % A' ?% % "3 C CI" cWC C'I"1 C CI" 'L % C CI" 'L % ')#S C CI" '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 12R A' 2. %Y M $ 12R A' 2. %Y "> 12R A' 2. %Y $ 12R A' 2. %Y $ %Q11 D 4 )Q FY' #+ .# PWP F% &) &3&4: )#f 3R3 04)Q@A''4 #+ F% &) &3&4 % &) & PWP ) IC3%YL 1 CW)43'"] '9 ] " ?&% ^ '^ 4_CW)43'" ] ", ; PWP :'Y' )#f 3R3 QB3&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 #$34W1 3 1 , ; #S)"%Y"4 A' QC 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 #SCW , #SCW A' 4 WY 5 3 1# CW A' QC N M / A' QC N "> , A' QC N / A' QC N / #f &'" K 3- W WC3RW % Q " PWP Q.cY )" #+ %Y13%*"'4 7 RWC'I"15 2 PWP %Y*#+1Z&3 '^ 4 Y * '), ; '^ 4 Q *C3)4W'" @A ))#S?, %Y ' #+Q 1R '%* W4W'F; '^ 4 Y ) ) ' ')#S. , ; '^ 4 Q #+ #+ , ; '^ 4 Y )*#SQ*# ' ')#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 % %Y1 4 WY5?3CWR3 % D 4 )Q WC3RW % %Y1 4 WY, 4 WY c)#+' ! H1%Y' % &)# c&3?! H B1 ) !N; %Y'.1 D 4 )QY, ; FY' ^4^ ?%Y1 3R) c#S[' W ^4^ NW3C' #+"'%*"4 A' Q1C' 2%Q1 4 WY Q1C' A' 1C' N3WC' Q1C' WC3RW % Q " PWP ) IC3%YL 1 '.#S" ' QL ) %Y'.1 '^ 40)#V W <4 , 3*#M ! '; k l E.6 El fitxer qpanel joint.h % 3 ^ WC3RW % 4 WY
Cap´ıtol E: Els fitxers .h 149 WC3RW % PWP ) % O%Q1"*# C%Y" 'dQ 4))#Sg3&4: ' )#+ %Q13''%*"'4 PWP ' &3') ^, D 4 )Q W&#+'LH^%Q1" % &# 3W; &3') ' , ; 3R) O 3R ' # < 4W# Y 4W# CW2R# ' 3C , 3R) cCW) , PWP :'Y' ICW&%*L ' ) L 3 \Y ' Y 4W# &3C 3&4 PWP "B#$3 '^ 4.Y 3R) ^ ,); '^ 4 Y F3 ' ), 4)CWR3 KH 4W1C3RW 1; '^ 4 .Y f # '),W' I ; '^ 4 YQ8N 3C&, 4W1C3R3 &; '^ 4 YQ8: 3C, 4W1C3R3 ; #+"'%*"4 A' 1C' c Q1C' P)P ':*:Q " 34B* 1&3 C3)43'"Q &3C' ? 'dQ 4))#S P)P 3&4: 5)#S %YW%Y"4 7 .%Q WC3RW % Q " '^ 4 .Y 3C'<,"4)CWR3 1; #f &'" Y )" '^ 4dQ 3C ' ,) ; * 1&3 '^ 4 3C 3 )), 4W1C3RW ; #f &'" '9 &3C 4W1C3RW 4 &3C' ' 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 '" '*#+3Y ) 3 3'*#M , W3#+[C3 3'*#M , W3)*[C3 P)P #M '" "[ #$3 &)#S '*#+3Y ) 3' 3'*#M , W' #+2CW 3'*#M , W' W"*[C3 R3 4 )Q )# 3'L# P)P @A&3 )* L 1U ) ')' 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 QQ'4 4)CWR3 g &%%Y) #$'L 1 4)CWR3 'L 4)CWR3 7L /
Cap´ıtol E: Els fitxers .h 151 PWP Q. ICW&%*L ' CW)43'"-W)#S)[CW B3&47WW"*[C3 &#M 3R3 Q '^ 4 WC3)4W'" #+[C3 , W'*#M 53#+[C3 WE G"H '*#$3'Q KE GIH H[' ; '^ 4 WC3)4W'" )*[C3 , 3'*#M cWW"*[C3 YE G"H '*#$3'Q E GIH7 ; PWP :'Y' ICW&%*L ' ])] \Y2 ' 4^ "3&%Y IC3%YL 1&%Q%Y #$4^ " PWP ' ^ ) % *#S''"4 4W1C3RW 3 1R '%*L , W'*#f H 3'*#f "H 4W1C3R3 J H2'0H ' ; 4W1C3RW b R %YL ' 'C #$3 , 3'*#M H W'*#M $H 4W1C3RW J .H[0^H:' ; 4W1C3RW %Q3 %CW '", W'*#f H 3'*#f "H 4W1C3R3 J H2'0H ^; 4W1C3RW D3 1R %YL ' # , W'*#f 1E G"H W'*#f W"*[C3 E G"H 4W1C3RW #, 1J H:'; 4W1C3RW 0 R %*L )# 1C' #$3 , 3'*#M 3 3E G"H 3'*#f ))"*2CW ZE G"H<4W1C3R3 # J^&HN0; 4W1C3RW 3 1R %YL ' ' , W'*#M W 3E GIH 3'*#f ))"*2CW ZE G"H<4W1C3R3 # J^&HN0; PWP :'Y' ICW&%*L ' %3 %&C3 '"! 7"# ? 2 4 3%Q ICW&%*L 4W1C3RW 7 8 'Qc, 3'*#M VH 3'*#M SH^4)CWR3 [.3 &)H 4)CWR3 %Q3 &)3H 4W1C3RW )Y; 4W1C3RW 7 'Qc, 3'*#M VH 3'*#M H4)CWR3 TL3 &)H 4)CWR3 %Q3 &)3H 4W1C3RW )Y; 4W1C3RW TL&4W , W'*#M IH W'*#M IH 4W1C3RW .3 )WH 4)CWR3 %Q3 &)3H 4W1C3RW )Y; 4W1C3RW 7)4g, 3'*#f VH W'*#f SH^4W1C3RW .3 ))H 4)CWR3 %Q3 &)Q; 4W1C3RW .%Q3 , 1; PWP Q.?Y 4W #+-%Q3 4 R ' ')#S. 3&4" %Q3 %CW '" PWP 'B #+ ')'L %Y
152 Simulador cinem` atic per a l’aprehensi´ o destra d’objectes ' ' #+ ")#?,"4W1C3RW )J-E GIH W'*#f 3 3#+[C3 E G"H '*#+3Y 1 2E GIH 3'*#M W )*[CW ]E G"H 3'*#M &34 E G"H ' "#$'L 17H 4W1C3RW ; ' ' ')#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 &34<E G"H ' ")#+'L 'cH 4W1C3R3 B 1 ; ' &'& #+ ")# &3&4 > ,"4W1C3RW J H W'*#f 3#+[C3 E G"H '*#+3Y 1 5E GIH W'*#M W W"*[C3 ]E G"H 3'*#f 3&41E GM; ' &'& #+ ")# &3&4 ,"4W1C3RW J H W'*#f 3#+[C3 E G"H '*#+3Y 1 5E GIH W'*#M W W"*[C3 ]E G"H 3'*#f 3&41E G"H ' "#$'L 17H 4W1C3RW ; 4)CWR3 )4 3%Q , W'*#f %& H W'*#M ; 4 QQ82L )&, 3*#f 7. WQ; 4h#f'*'*#M , 3'*#M ['*#f W; 4h#f'*'*#M , 3'*#M ['*#f H^4W1C3RW .%3 ; )#S)"%*"'4 P)P '?Y ^4)C3)4W'"] ' M 3CQ 4O3CW)43'" B,1' ^2H 4W1C3RW 7 &3C H- ^; 4 3CW)43'" ^ )# _,1' :H 4W1C3RW 7 &3C ; 3CWR3 % P)P 7 ' L%Q3 M&%Y" # 4)CWR3 P)P &)#+3Q"#+ &% ' 4 $ &#$3Q"#+ ^ , &4 $ )#+3Y"#+ PWP 3C 2 4W #SQ I#S4W1! ]&% 5% &) ' 4W P)P C3[R)# ' 'L %% ) ' % &)
Cap´ıtol E: Els fitxers .h 153 PWP CW[R)# -#SL %&C3 'L 1 &'=R =" 4 F#+' % )AH PWP RWC'#S)#S) W 1 ^ 'D .3 PWP CW[R)# 3 '" ' ^ P)P 1 &3C' ' 1NW L ' 4W1C3RW #, ' , P)P #$3' f # g8:'*#f c ? ' # 4 #+ f#+&%Y 3'*#f # 4 P)P #$3' f # g8:'*#f c ? 'B" (#S f#+&%YQ 3'*#f " 1 P)P 3C'5 2 %CW# #S) '*C' 2 #+1R) f ^' ' P)P #SQ 'C" #$&4)73&4: '0#M Y'L %` [ 4W1C3RW #, '*C' ) '!# #S # 3C ) = " 3C 4W1C3RW 4W R 1 %Y1 ^4) R 1""1 'L %Q *#f =. W 1C' %Q11 D 4 )Q &%Q11 ! PWP Q.?Y 4W#S'&4: '? f # 'L 1T Z [[@A 'h) 43',%Q1"5% &)# # ; 'D#+&4 ' 3[ , 1 < )' ) ).; PWP ) &4WQL ) "7 D%Y'.1