SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR ÍNDEX Taula de Continguts 1. INTRODUCCIÓ 1.1. 1.1.1. 1.2. 1.3. 1.4. 2. 13 RESUM RESUM DELS CAPÍTOLS MOTIVACIÓ OBJECTIUS ANTECEDENTS 15 15 17 18 19 DESCRIPCIÓ DEL SISTEMA 21 2.1. ROBOT 2.1.1. BRAÇ MECÀNIC 2.1.2. CONTROLADORA 2.1.3. FLEXPENDANT 2.1.4. ELEMENT TERMINAL 2.2. CÀMERES 2.3. JOYSTICK 23 24 25 25 26 26 27 3. 29 DISSENY DEL SISTEMA 3.1. ELEMENTS DEL SISTEMA I RELACIONS ENTRE ELLS 3.1.1. SERVIDOR CENTRAL 3.1.2. SERVIDOR ROBOT 3.1.3. CLIENT 3.1.3.1. General 3.1.3.2. Mòdul de control 3.1.3.3. Mòdul de les càmeres 3.1.3.4. Mòdul 3D 3.1.3.5. Mòdul de comunicacions 31 32 33 34 34 35 36 36 36 4. 37 TECNOLOGIES UTILITZADES 4.1. LLENGUATGES DE PROGRAMACIÓ 4.1.1. JAVA 4.1.2. RAPID 4.1.3. VISUAL BASIC 4.2. ENTORNS DE DESENVOLUPAMENT 4.2.1. ECLIPSE 4.2.2. ROBOTSTUDIO ONLINE 4.2.3. MICROSOFT VISUAL BASIC 6.0 39 39 40 40 41 41 41 42 7 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 4.3. TECNOLOGIES DE COMUNICACIÓ 4.3.1. SOCKETS 4.3.2. HTTP 4.3.3. XMLRPC 4.3.3.1. XML 4.3.3.2. RPC 4.3.3.3. XMLRPC 4.3.4. JAVA WEB START 4.4. TECNOLOGIES 3D 4.4.1. JAVA 3D 4.4.2. FORMAT DE LES DADES 3D 4.5. TECNOLOGIES DE BASES DE DADES 4.5.1. SQL 4.5.2. MYSQL 4.6. TECNOLOGIES DE SEGURETAT 4.6.1. CERTIFICATS 4.7. TECNOLOGIES ROBOT 4.7.1. ROBOTWARE 4.7.1.1. Socket Messaging 4.7.1.2. Multitasking 4.7.1.3. World Zones 4.7.2. WEBWARE SDK I INTERLINK 4.8. ALTRES TECNOLOGIES SOBRE JAVA 4.8.1. JDIC 4.8.2. JXINPUT 4.8.3. JGOODIES LOOKS 43 44 44 44 45 45 46 47 49 49 50 51 51 51 52 52 53 53 53 53 54 54 55 55 55 56 5. 57 IMPLEMENTACIÓ 5.1. DADES DEL ROBOT 5.1.1. GENERAL 5.1.2. CONTINGUT 5.1.3. DEVICESDATAPACKET 5.1.4. ROBOTSERVER 5.1.4.1. Joint 5.1.5. CAMERA 5.2. SERVIDOR CENTRAL 5.2.1. GENERAL 5.2.2. SESSIONS 5.3. SERVIDOR ROBOT 5.3.1. GENERAL 5.3.2. DISSENY FINAL 5.3.3. INTERACCIÓ PER SOCKETS 5.3.3.1. Llenguatge 5.3.4. CONTROLADORA 5.3.4.1. Moviments i pinça 5.3.4.2. Estat 5.3.5. PART JAVA DEL SERVIDOR ROBOT 5.3.5.1. Sessions 5.3.5.2. Socket d’Estat i de Moviment 59 59 60 60 61 61 61 62 62 62 63 63 64 65 66 67 67 68 69 69 69 8 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 5.3.5.3. Socket de Supervisió 5.3.6. PART VISUAL BASIC DEL SERVIDOR ROBOT 5.4. CLIENT 5.4.1. GENERAL 5.4.2. MÒDUL DE CONTROL 5.4.2.1. General 5.4.2.2. Generadors d’events 5.4.2.2.1. Joystick 5.4.2.2.2. Botons de la interfície gràfica 5.4.2.3. Perfils 5.4.2.3.1. Generació de perfils i emmagatzematge 5.4.2.3.2. Perfil per defecte 5.4.2.4. Receptors d’events 5.4.3. MÒDUL 3D 5.4.3.1. Estandarització 5.4.3.2. Generació del model 5.4.4. MÒDUL DE LES CÀMERES 5.4.4.1. Autenticació 5.4.5. INTERFÍCIE GRÀFICA (GUI) 5.4.5.1. General 5.4.5.2. Swing 5.4.5.3. Panells 5.4.5.3.1. Panell de control 5.4.5.3.2. Panell del model 3D 5.4.5.3.3. Panell de les càmeres 5.4.5.3.4. Panell de posicions conegudes 5.4.5.3.5. Consola 5.4.5.3.6. Panell d’estat de la connexió 5.5. COMUNICACIONS XMLRPC 5.6. DESPLEGAMENT SOBRE WEB 70 71 73 73 74 74 75 75 77 77 77 79 85 86 86 87 88 88 90 90 91 92 92 94 95 97 98 99 99 102 6. 103 AVALUACIÓ 6.1. ANÀLISI DE LA PLANIFICACIÓ 6.1.1. PLANIFICACIÓ INICIAL 6.1.2. PLANIFICACIÓ DEFINITIVA 6.1.2.1. Incidències 6.1.2.2. Planificació final 6.2. AVALUACIÓ DELS OBJECTIUS 6.3. VALORACIÓ DE LES TECNOLOGIES UTILITZADES 6.4. COST 6.5. LOGOTIP I MARCA 105 105 107 107 108 109 112 112 114 7. 117 CONCLUSIONS 7.1. CONCLUSIONS GENERALS 7.2. CONCLUSIONS PERSONALS 7.3. POSSIBLES MILLORES 7.3.1. MILLORES 119 120 120 121 9 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 7.3.2. 8. AMPLIACIONS 121 BIBLIOGRAFIA 123 8.1. BIBLIOGRAFIA GENERAL 8.1.1. ROBOT ABB IRB 140 8.1.2. JAVA 8.2. PROJECTES 8.3. ENLLAÇOS WEB 8.3.1. TELEROBÒTICA 8.3.2. PROGRAMACIÓ JAVA GENERAL 8.3.3. PROGRAMACIÓ GUIS EN JAVA 8.3.4. JAVA 3D 8.3.5. XMLRPC 8.3.6. JDIC 8.3.7. JXINPUT 8.3.8. JAVA WEB START 125 125 125 125 126 126 126 126 126 127 127 127 127 9. 129 ANNEXOS ANNEX I : MANUAL DE L’USUARI DE ROBOTCONTROL 1. ARRENCAR EL PROGRAMA 2. ÚS DELS DIFERENTS PANELLS 3. REQUERIMENTS DEL SISTEMA ANNEX II : MANUAL DE L’ADMINISTRADOR DE ROBOTCONTROL ANNEX III : ESPECIFICACIONS DEL ROBOT ABB IRB 140 ANNEX IV : ESPECIFICACIONS DE LA CONTROLADORA IRC5 ANNEX V : ESPECIFICACIONS DE ROBOTWARE ANNEX VI : ESPECIFICACIONS DE LES CÀMERES ANNEX VII : ESPECIFICACIONS DEL JOYSTICK ANNEX VIII : COMPARATIVA DE TECNOLOGIES PER A CLIENTS WEB ANNEX IX : CONFIGURACIÓ D’UN ROBOT DIFERENT A L’UTILITZAT 1. CONFIGURACIÓ GENERAL 2. MODEL 3D 3. EXEMPLE D’ARXIU DE CONFIGURACIÓ ANNEX X : CONFIGURACIÓ DEL PERFIL 10 131 131 132 134 135 137 141 145 151 157 159 161 161 162 163 167 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR Agraïments Vull agrair sincerament a totes les persones que m’han ajudat a realitzar aquest projecte la seva aportació. Al Josep Fernández, per guiar-me i aconsellar-me tan encertadament durant tot el projecte, a en Raúl Marín i en Raúl Wirz, font d’inspiració per a aquest projecte; al Xavier Morales, el Jordi Ramon i la resta que des del departament d’ESAII m’han donat el seu suport; a l’Albert Giménez que ha aportat també el seu granet de sorra en diverses qüestions, i a la meva família, de qui he rebut tot el suport que em calia en aquells moments més necessaris. 11 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 12 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 1. INTRODUCCIÓ 13 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 14 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 1.1. Resum Aquesta memòria tracta del projecte “Sistema per a la teleoperació d’un robot manipulador mitjançant una interfície multimodal”. Aquest sistema es conforma, a nivell físic, per una banda, d’un robot manipulador i d’unes càmeres que capten l’escenari on es mou; i per una altra, d’un usuari remot que, mitjançant interfícies d’entrada com un joystick o un mouse mou aquest robot i n’obté un feedback visual a través de la pantalla. A nivell lògic, tenim dos servidors, un de general per a tot el sistema, i un altre per a cada robot (tot i que en aquest projecte només comptem amb un, el sistema permetria que n’hi haguessin tants com volguéssim); i un client en la banda de l’usuari. 1.1.1. Resum dels capítols El capítol 1 és un capítol introductori on es plantegen els objectius concrets del projecte, així com la motivació que m’ha portat a realitzar aquest tipus de projecte i no un altre, i també aquest resum. En el capítol 2 es descriuen breument els elements físics dels que es disposava a l’inici del projecte i les seves característiques i/o diferències amb altres elements similars. En el capítol 3 es presenta el disseny proposat per resoldre els objectius marcats. En el capítol 4 s’expliquen detalladament cadascuna de les tecnologies utilitzades en aquest projecte, sense entrar en detall de l’ús que se n’ha fet exactament, ja que això es tracta en el capítol 5. Aquest capítol és fonamental en quant al desenvolupament del projecte, ja que s’hi tracta no solament la implementació que s’ha fet definitivament sinó també els canvis que s’han produït des del disseny inicial. En el capítol 6 es duu a terme una avaluació del projecte, tant des del punt de vista de la consecució dels objectius com a nivell organitzatiu del projecte, la planificació i els costos. En el capítol 7 s’extreuen les conclusions a les que s’ha arribat en finalitzar aquest projecte, i es duu a terme una valoració més general que aquella duta a terme en el capítol anterior. També s’extreuen conclusions des d’un punt de vista més personal, i es detallen algunes de les millores i ampliacions que serien possibles. 15 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR En el capítol 8 es pot trobar la bibliografia utilitzada en aquest projecte, i, posteriorment els annexos que contenen dades referents al projecte, però d’una menor importància o rellevància, i que han estat, per tant, inclosos com a tals. 16 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 1.2. Motivació El de la robòtica és un camp amb enormes possibilitats en tots els sectors. Ja sigui en medicina, exploració espacial, exploració submarina, desactivació de mines, etc, els robots ens permeten arribar allà on als humans ens costaria molt o, fins i tot, ens seria impossible. A més, són molt precisos en tots els seus moviments. És per això que tot avanç en tecnologies relacionades amb els robots representa, a mig o llarg termini, una millora en la qualitat de vida de les persones. Si bé l’enfocament d’aquest projecte és més aviat educatiu o generalista, cal no oblidar que una òptica més concreta permetria ajustar un projecte similar a altres finalitats, ja que és la teleoperació la que fa possible tant l’exploració espacial com la submarina, i, en alguns casos concrets, també l’aplicació en medicina. Aquest fet s’explica des del punt de vista que els robots estan pensats per a ser programats per resoldre tasques senzilles. En els casos en que ens enfrontem a tasques més complexes, però, és necessària la teleoperació, ja que permet afegir la intel·ligència humana a la funcionalitat del robot. 17 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 1.3. Objectius Internet Operador Robot L’objectiu general del projecte és el disseny i la implementació d’un sistema de teleoperació d’un robot manipulador basat en Internet i que utilitzi una interfície multimodal. Aquest objectiu general es desglossa en altres de més específics. Els objectius específics els podríem definir tal com segueix: 1. Aconseguir operar el robot remotament mitjançant com a interfícies d’entrada un mouse i un joystick. 2. Aconseguir que el sistema sigui reutilitzable: 2.1. Implementar un sistema escalable, on sigui possible la integració no costosa o poc costosa d’altres robots, especialment braços manipuladors; però també dispositius mòbils, simuladors,etc. 2.2. Estandarització de les comunicacions, és a dir, que les comunicacions entre els elements del sistema es duguin a terme mitjançant algun tipus de protocol. 2.3. Estructuració del sistema en parts atòmiques.(Components) 3. Creació d’un sistema accessible: 3.1. Creació d’una interfície amigable per a l’usuari, tant per a l’avançat com per al novell. 3.2. Integració del sistema en l’entorn web. 3.3. Creació d’un sistema utilitzable pel nombre més gran possible d’usuaris. 4. Aconseguir un sistema segur. Validar els usuaris que l’utilitzin i registrar la seva activitat. 5. Utilització de càmeres IP i un entorn 3D com a feedback del robot, o d’altres que permetin una correcta comprensió del món on es mou el robot per part de l’usuari. 18 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 6. Utilització de tecnologies i eines de lliure distribució. 1.4. Antecedents Existeixen nombrosos antecedents pel que fa treballs sobre teleoperació i/o camps relacionats, com la telerobòtica. Per una banda, tenim el Robot via Web de la Universitat Jaume I de Castelló ( [6] ). Aquest sistema permet no només la teleoperació d’un robot, sinó que inclou altres mòduls que li afegeixen funcionalitat com el reconeixement d’objectes i l’autograsping, que no és sinó la capacitat del sistema de buscar la millor posició possible per la pinça del robot per agafar un objecte que s’ha identificat en l’espai de treball, i posteriorment, agafar-lo. Una altra capacitat addicional del sistema consisteix en la utilització de comandes de veu d’alt nivell. Aquestes comandes són analitzades pel sistema que demana a l’usuari, mitjançant un sintetitzador de veu, confirmació per a realitzar la tasca que se li ha demanat. Per una altra banda, tenim el sistema ARITI [12] que permet controlar un robot de quatre graus de llibertat mitjançant un sistema de realitat augmentada, i el sistema The Telelabs Project de la University of Western Australia [13], que permet a l’usuari manipular diferents objectes sobre un tauler utilitzant un robot ABB similar al d’aquest projecte, però sense sistema de realitat augmentada. Una font important d’enllaços a projectes de teleoperació és la web de la NASA Space Telerobotics Program [11], on podem trobar projectes amb diferents funcionalitats (inclosos els 2 anteriors) , però tots encarats a la telerobòtica. Encara que en cap cas forma part d’aquest projecte, la teleoperació i la programació de robots mòbils via internet se superposa en alguns àmbits a la teleoperació de robots manipuladors, és per això que és interessant tenir en compte els avanços que es duguin a terme en aquest altre camp. S’inclouen com a referència en aquest sentit els sistemes [7], [8] i [9]. 19 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 20 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 2. DESCRIPCIÓ DEL SISTEMA 21 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 22 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR Per desenvolupar aquest projecte s’ha comptat amb el següent maquinari, a part, és clar, de PCs convencionals amb sistema operatiu Windows XP Professional. 1. Robot 2. Càmeres 3. Joystick A continuació es dóna una explicació detallada de cadascun d’aquests elements: 2.1. Robot El robot, part imprescindible del projecte, es conforma de diverses parts: 1. Braç mecànic 2. Controladora 3. FlexPendant 4. Element terminal Figura 1. Robot: Braç mecànic, Controladora i FlexPendant 23 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 2.1.1. Braç Mecànic El braç mecànic és tan sols la part més visible del robot, ja que Figura 2. Robot: Braç mecànic ABB IRB 140 qui determina els moviments i, més generalment, conté tota la lògica relacionada amb el robot és la controladora. Es tracta d’un braç mecànic de la marca ABB, model IRB 140. Aquest braç mecànic, de 6 graus de llibertat, està en el mercat des de 1999. Existeixen diverses versions d’aquest model, que, depenent de la tasca que hagi de realitzar, estan optimitzats per tenir més velocitat, estan dissenyats per estar en condicions més dures, etc. En el nostre cas, al laboratori de telerobòtica disposem de la versió estàndard. Des d’ABB s’anuncia l’IRB 140 com un braç mecànic “potent i compacte, amb una combinació única d’acceleració ràpida, àmplia zona de treball i gran capacitat de càrrega”. Les dades semblen donar suport a aquestes paraules, ja que el braç mecànic té una repetitibilitat entorn els 0.03 mm, pot resistir una càrrega de fins a 5 kg en un radi d’acció de 810 mm. Per més dades, adreceu-vos a l’annex III. 24 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 2.1.2. Controladora Figura 3. Robot: Controladora La controladora és el cervell del robot. S’encarrega de calcular els moviments i transmetre’ls als motors del braç mecànic. En el nostre cas, la controladora és de marca ABB, model IRC5. Està formada per un computador tradicional adaptat a les necessitats de la seva funció. Sobre aquest ordinador corre un sistema operatiu dissenyat per ABB anomenat RobotWare, que serà explicat amb deteniment en el capítol de tecnologies utilitzades. En l’annex IV es poden trobar més dades de la controladora. 2.1.3. FlexPendant Figura 4. Robot: FlexPendant El FlexPendant és un dispositiu que incorporen les controladores IRC5 d’ABB. Aquest dispositiu s’utilitza com a front-end per a l’operador del robot, i li permet resoldre les incidències que puguin sorgir en l’operació normal del robot, així com programar-lo (amb funcionalitat reduïda, per això). En el nostre projecte, al tractar-se de teleoperació, aquest dispositiu no ens ha estat de gran ajuda, encara que per a altres projectes pot ser útil i interessant, ja que es tracta d’un computador aliè a la controladora però que té tots els permisos, amb els avantatges que això comporta. 25 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 2.1.4. Element terminal Com a element terminal del braç tenim una pinça pneumàtica utilitzada principalment per manipular disquets de 3 ½”. Aquesta pinça pneumàtica va muntada sobre la placa que conforma l’última articulació del robot. Rep la pressió necessària, així com els senyals elèctrics necessaris per al seu funcionament a través de l’estructura del robot. Per a la seva actuació, s’ha col·locat una electrovàlvula que, mitjançant sortides digitals de la controladora, obre o tanca la pinça. 2.2. Càmeres Figura 5. Càmeres: de dalt a baix: DCS-900, DCS-2100G Disposem, en el nostre laboratori, de 3 càmeres IP D-Link, una model DCS 900 i dues DCS 2100. Aquestes càmeres ofereixen imatge digital a través d’un servidor web als clients que disposin de les dades de connexió i autenticació necessàries. És interessant que disposin de servidor web per oferir les imatges, ja que d’aquesta manera són accessibles a un gran nombre de clients, els quals no necessiten instal·lar software addicional a un navegador per obtenir les imatges de les càmeres. D’aquesta manera se’n generalitza l’ús. Aquest tipus de càmeres s’utilitzen en molts casos per a videovigilància o en altres casos no relacionats amb la seguretat però en que es desitgi tenir imatges vídeo d’un lloc remot. Podeu veure’n les especificacions tècniques a l’annex VI 26 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 2.3. Joystick Per tal d’aconseguir Figura 6. Joystick: Botons Botons 3-6, Botó direccional una plataforma multimodal d’interacció amb el robot, hem utilitzat com a element de control un joystick Logitech Force 3D Pro, del Gallet (Botó 1) que es poden veure les especificacions en l’annex Botó 2 VII. Aquest joystick té 3 graus de llibertat, dotze Botons 7-12 botons incloent el gallet, un control de desplaçament i un botó direccional. Figura 7. Joystick: Eixos Eix X Eix Y Eix Z 27 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 28 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 3. DISSENY DEL SISTEMA 29 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 30 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 3.1. Elements del sistema i relacions entre ells El sistema ha estat dissenyat en una estructura distribuïda. Aquesta estructura permet un dinamisme i una escalabilitat molt grans. En els propers apartats s’explicarà en detall la funcionalitat de cada element així com la relació dels uns amb els altres. Figura 8. Esquema dels elements i les relacions en el sistema Servidor Central Dades d’usuaris Base de Dades Registre Inici de sessió Enviament de dades dels robots Clients Servidor(s) Robot Control Dades d’estat Control Dades d’estat Imatges Càmeres 31 Imatges Robot(s) SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 3.1.1. Servidor Central El servidor central serveix per a l’autenticació de clients i robots, el manteniment d’una llista de robots actius i la transmissió d’aquesta llista als clients per tal que puguin decidir quin robot utilitzar. En separar aquesta última tasca en un servidor a part del que controla el robot finalment, obtenim una arquitectura més flexible, ja que permet l’existència dinàmica de diversos robots al mateix temps sense que ni el client ni el servidor hagin de ser modificats. Així doncs, es tracta d’un petit servidor que controla i centralitza el sistema, d’aquí el nom. Figura 9. Esquema del servidor central Servidor Central Mòdul de control de sessions als Clients i Servidors Robot Mòdul de comunicació Mòdul de comunicació BD Base de Dades 32 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 3.1.2. Servidor Robot La tasca principal del servidor robot és traslladar les comandes del client a la controladora del robot i informar de l’estat del robot al client. A part d’aquesta tasca principal, s’encarrega també de controlar que un i només un client estigui movent el robot al mateix temps. Figura 10. Esquema del servidor robot Servidor Robot als Clients i Servidor Central Mòdul de comunicació Mòdul de control de sessions Mòdul de comunicació amb el robot Robot 33 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 3.1.3. Client 3.1.3.1. General El client ha de poder comunicar-se en un principi amb el servidor robot, i un cop rebudes les dades dels robots que estan actius, decidir a quin es connecta i connectar-s’hi. Un cop connectat al servidor robot, el client ha de poder moure el robot i recrear-ne l’estat. Pel que fa a moure el robot, cal que disposi de mòduls que acceptin tant els moviments de joystick com els events de mouse, així com d’altres que els traslladin de manera corregida al robot. Pel que fa a recrear-ne l’estat, mitjançant les dades que li proporcioni el robot, ha de ser capaç de recrear la posició del robot i representar-la en un model tridimensional com a feedback per a l’usuari. També ha de poder visualitzar la imatge de les càmeres que enfoquen el robot. Figura 11. Esquema del client Client Mòdul de les càmeres de les càmeres pantalla Mòdul 3D dispositius d’entrada Mòdul de control Mòdul de comunicació 34 al Servidor Central i Servidor Robot SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 3.1.3.2. Mòdul de control El mòdul de control s’encarrega principalment de generar comandes de moviment que seran enviades al servidor robot a través del mòdul de comunicacions, que aquestes comandes siguin vàlides i normalitzades. També mostra informació a l’usuari de la posició numèrica de les articulacions del robot així com les relacions entre interfícies d’entrada i articulacions a les que estan lligades. El sistema de control s’estructura en dues parts. Per una banda, en forma de generadors d’events dinàmics i receptors d’events, lligats per un perfil modificable dinàmicament en temps d’execució; similar a la dels jocs d’ordinador, que permeten canviar en temps real quins controls estan associats a quines accions. Això permet la màxima llibertat a l’hora de canviar de dispositius d’entrada. Aquest tipus d’estructura és la utilitzada en el joystick. Per una altra banda, tenim altres generadors d’events, anomenats estàtics; com per exemple els botons de la interfície gràfica, que tenen associat un receptor d’events directament, i que no és modificable. Gràficament: Figura 12. Mòdul de control Generadors d’events Perfil modificable Receptors d’events Generador dinàmic 1 Associació 1 Receptor 1 Generador dinàmic 2 Associació 2 Receptor 2 Generador dinàmic n Associació k Receptor k Generador estàtic 1 Generador estàtic 2 Generador estàtic m 35 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 3.1.3.3. Mòdul de les càmeres El mòdul de les càmeres s’encarrega, a través de les dades rebudes des del servidor central referents a les càmeres, de connectar-s’hi i d’obtenir-ne les imatges, per mostrar-les a l’usuari, i que aquest sigui conscient de l’estat actual del robot. 3.1.3.4. Mòdul 3D El mòdul 3D s’encarrega de crear una representació tridimensional del robot i la seva zona de treball mitjançant les dades que rep des del servidor robot. Aquestes dades són, per una banda, el model tridimensional del robot (ja que el client no manté aquest model, sinó que s’emmagatzema en el servidor robot) i, per una altra, la posició exacta de les articulacions del robot per poder transformar el model 3D en la representació actual de l’estat del robot. 3.1.3.5. Mòdul de comunicacions El mòdul de comunicacions serà l’encarregat de generar les peticions pertinents als diferents servidors. Encapsularà totes les crides per tal que es facin en funcions que es puguin cridar des de la resta de l’aplicació. Les peticions més importants que farà als servidors són: - Inici/finalització de sessió i autenticació - Demanda de les dades del(s) robot(s) al servidor central - Demanda d’estat al servidor robot - Demanda de moviment al servidor robot 36 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 4. TECNOLOGIES UTILITZADES 37 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 38 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR En aquest apartat es fa un recull de les tecnologies que s’han utilitzat per realitzar aquest projecte, entenent per tecnologies des dels llenguatges de programació fins a paquets específics, passant per protocols i entorns de desenvolupament, i s’expliquen breument. En tot cas, en l’apartat de bibliografia hi ha enllaços amb informació per la majoria de les matèries mencionades a continuació. En alguns casos, es probable que el lector ja disposi de coneixements suficients de la matèria i pugui prescindir-ne, especialment si es tracta d’estudiants o professors d’Informàtica, i sobretot en algunes matèries més generals, com els llenguatges de programació o algunes tecnologies de xarxa; no obstant això, hi ha algunes matèries específiques, com podrien ser alguns paquets específics de Java o altres que no siguin de domini públic, als que sigui interessant fer un cop d’ull. 4.1. Llenguatges de Programació En aquest projecte els llenguatges de programació utilitzats han estat majoritàriament Java, i, en menor mesura, RAPID i Visual Basic. 4.1.1. Java Figura 13. Logotip de Java La major part del desenvolupament d’aquest projecte ha estat en Java. Java és un llenguatge de programació orientat a objectes desenvolupat per Sun Microsystems al principi dels 1990. Les aplicacions Java, quan es compilen, ho fan a bytecodes, un llenguatge especial que és compilat a codi nadiu en temps d’execució, i que pot ser executat a multitud de màquines diferents ja que existeixen implementacions del Java Runtime Environment (JRE, la part de software que interpreta els bytecodes) per a la majoria de plataformes. Aquesta independència de la plataforma sobre la qual s’utilitzi conforma un dels majors atractius de Java. 39 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR Avui en dia, segons java.com, Java està present en més de 2,5 milers de milions de dispositius: Més de 800 milions de PCs Més de 1,2 milers de milions de dispositius mòbils 1,65 milers de milions d’smart cards Altres com, per exemple, impressores, web cams, dispositius de jocs, sistemes de navegació de cotxe, etc. Més informació es pot trobar a [14], [15], [16]; i, a molts altres llocs, ja que es tracta d’una de les tecnologies més utilitzades arreu. 4.1.2. RAPID RAPID és el llenguatge que interpreta el controlador del robot tant per les accions mateixes del braç mecànic com per a realitzar funcions diverses de càlcul. Es tracta, doncs, d’un llenguatge imperatiu enfocat a la realització de moviments en robots i el control en general de la controladora del robot. Té capacitat d’executar subrutines amb pas de paràmetres, gestió d’errors, programes modulars i fins i tot suport multitasca. 4.1.3. Visual Basic En aquest projecte ha sigut necessari emprar el llenguatge Visual Basic (VB) com a complement, ja que en un principi no estava previst. Més endavant s’explicarà el perquè del seu ús. Visual Basic és un llenguatge desenvolupat per Microsoft. Es tracta d’un llenguatge de programació associat a un entorn de desenvolupament homònim (Visual Basic 6.0) que permet la creació ràpida de software gràcies a la programació visual. Es tracta d’un llenguatge que es recolza en events per tal de realitzar la seva lògica, és a dir, que tot el que “passa” en un programa en VB deriva d’un event. Actualment està sent substituït per Visual Basic .NET, una nova versió basada en l’entorn .NET. No obstant això, en aquest projecte, a causa de dependències de software extern que s’explicaran més endavant, ha calgut utilitzar Visual Basic 6. 40 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 4.2. Entorns de desenvolupament 4.2.1. Eclipse L’entorn de desenvolupament utilitzat en el Figura 14. Logotip d’Eclipse projecte pel que fa a la part de Java, ha estat l’Eclipse. Eclipse és un entorn de desenvolupament open source no dependent de cap plataforma (no lligat a cap sistema operatiu), utilitzat típicament per crear altres entorns de desenvolupament, però també qualsevol tipus d’aplicació en Java o altres llenguatges de programació. Eclipse fou desenvolupat inicialment per IBM, però posteriorment passà a mans de l’Eclipse Foundation, un consorci de desenvolupadors de software sense ànim de lucre. Existeix un gran nombre de companyies de desenvolupament de software que utilitzen Eclipse en els seus projectes, entre les que destaquen Adobe, Borland, SAP AG, BEA Systems, i IBM Rational. Es tracta, doncs, d’un dels entorns de desenvolupament més utilitzat i més útil per al desenvolupament en llenguatge Java. 4.2.2. RobotStudio Online RobotStudio online és un software que permet l’edició de programes que després correran sobre la controladora del robot. Es tracta, doncs, de l’entorn de programació que ofereix ABB per treballar en el llenguatge de programació RAPID. En comparació a altres entorns de desenvolupament podríem dir que té una funcionalitat reduïda, ja que no compta amb funcions com autocompletar o altres a les que un entorn de desenvolupament ens té habituats. Una altra qüestió a tenir en compte és que cal tenir connexió amb el robot per poder desenvolupar en certes condicions com, per exemple, per comprovar la correctesa d’un programa. També cal notar que, a menys que es disposi de software addicional, RobotStudio 41 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR online sol no permet simular els programes; així doncs, cal descarregar-los a la controladora per provar-los. 4.2.3. Microsoft Visual Basic 6.0 Aquest entorn de programació permet programar en el llenguatge de programació Visual Basic. Com a conseqüència, disposa tant d’un editor de codi com d’un editor visual, ja que en aquest llenguatge de programació és possible utilitzar elements visuals en la programació. Es tracta, doncs, d’un software encarat al desenvolupament ràpid d’aplicacions amb interfície gràfica sobre Windows. Això té certes implicacions també pel que fa a la creació d’aplicacions més complexes, ja que pot resultar més difícil, en alguns casos, que en un altre llenguatge més tradicional. 42 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 4.3. Tecnologies de comunicació Per explicar les tecnologies de comunicació utilitzades, és interessant, per tal que quedi més clara la funcionalitat de cadascuna, veure la seva Figura 15. Pila OSI Unitat de dades Dades Segments Paquets Frames Bits Capa Funció Exemples de protocols DNS, FTP, HTTP, IMAP, IRC, NFS, Processat de la NNTP, NTP, xarxa a POP3, SMB/CIFS, Aplicació l’aplicació SMTP, SNMP, SSH, Telnet, TFTP Representació ASN.1, MIME, de dades i Presentació SSL/TLS, XML encriptació Comunicació NetBIOS, SIP Sessió entre hosts RTP, RTCP, Connexions SCTP, SPX, TCP, Transport punt a punt UDP Determinació AppleTalk, ARP, de camí i IP, IPX, NetBEUI, Xarxa adreces X.25 lògiques (IP) ATM, Ethernet, Adreces Frame Relay, Enllaç de físiques (MAC HDLC, PPP, dades & LLC) Token Ring, Wi-Fi Cable coaxial, Cable de fibra Transmissió òptica, Cable de Física binària parells trenats, Microones, Ràdio, RS-232 posició en la pila OSI. OSI (Open Systems Interconnection) és un model abstracte telecomunicació de desenvolupat per l’ Organització Internacional d’Estàndards (International Standards Organization, ISO). Es tracta d’un model que defineix diverses capes per a la telecomunicació, cadascuna amb la seva funcionalitat. Cada capa es relaciona únicament amb la capa immediatament inferior, i crea noves funcionalitats que pot utilitzar la capa immediatament superior. Cadascun dels protocols permet que dues màquines es comuniquin entre elles en el seu nivell. Cal dir, de tota manera, que els protocols utilitzats en aquest projecte han estat majoritàriament d’alt nivell, de manera que no ha calgut “baixar” gaire en la pila OSI. 43 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 4.3.1. Sockets Un socket és una petita part de programari que permet a un programa comunicar-se amb un altre intercanviant-se qualsevol tipus de dades d’una manera fiable, ja sigui en un mateix ordinador o en dos de diferents. La majoria de protocols de comunicació explicats posteriorment es basen en connexions sockets, és a dir, utilitzen sockets per realitzar les seves transaccions, sobre les quals desenvolupen noves funcionalitats més complexes. Un socket queda definit per una direcció IP, un protocol i un port. Per tal que dos programes es comuniquin, cal que siguin capaços de localitzar-se, és a dir, han de saber les dades anteriorment mencionades de l’altre programa. Posteriorment, cal que puguin enviar-se informació, és a dir, el canal de comunicació ha d’estar disponible. 4.3.2. HTTP HTTP (HyperText Transfer Protocol) és un protocol de transmissió de dades de la capa d’aplicació del model OSI; utilitzat en les transaccions en la Web. L’hipertext és el contingut de les pàgines web i HTTP és el protocol mitjançant el qual s’envien les peticions per accedir a una pàgina web i la resposta que ofereix el servidor és la pàgina web mateixa. També permet enviar informació complementaria en tots dos sentits, com per exemple les dades de formularis o altres. 4.3.3. XMLRPC Per entendre el concepte de XMLRPC, cal, en primer lloc, explicar què és XML, HTTP i RPC. Com que HTTP ja l’hem explicat anteriorment, ara cal veure què és XML i RPC. 44 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 4.3.3.1. XML L'XML és un llenguatge d'etiquetatge extensible (eXtensible Markup Language en anglès). Un llenguatge d’etiquetatge és un llenguatge que permet representar no solament text, sinó que permet aportar més dades del que representa aquest text en el mateix arxiu. L’XML és un llenguatge informàtic d'etiquetatge que deriva del llenguatge SGML i permet representar i intercanviar informació entre ordinadors o programari, atès que organitza les dades de manera ordenada amb una sintaxi com aquesta: <document titol="Sintaxi de l'XML" autor="Jo"> <paragraf modificat="26/12/06"> Contingut del paràgraf posterior </paragraf> <paragraf modificat="12/02/03"> Contingut del paràgraf anterior </paragraf> </document> 4.3.3.2. RPC RPC significa Remote Procedure Call, crida a procediment remot. És un protocol que permet a un programa en un ordinador executar codi en una altra màquina remota, fent que aquesta crida sigui transparent per a l’aplicació; és a dir, que per a l’aplicació sigui el mateix que si fes una crida local. El protocol fou proposat en primera instància per Sun Microsystems com a un avanç respecte els sockets. Les RPCs són molt utilitzades dins el paradigma client servidor, ja que, en molts casos, interessa que es puguin fer crides entre ells com si estiguessin en un mateix espai. Existeixen diferents tipus de RPC, depenent de qui els crea, i que estan estandaritzats. Trobem, per exemple, el Distributed Computing Environment (DCE) de Sun o DCOM de Microsoft. La majoria utilitza un llenguatge de descripció d’interfície (IDL, Interface Description Language), que defineix els mètodes que es poden cridar del servidor. Últimament s’està utilitzant extensivament l’XML com a llenguatge per definir el IDL i HTTP com a protocol de xarxa, donant a llum el que es coneix com a serveis web; exemples dels quals son XMLRPC o SOAP. 45 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 4.3.3.3. XMLRPC XMLRPC és un protocol de crida a procediment remot (RPC) que utilitza XML per codificar les crides i HTTP per transportar-les. És un protocol molt simple ja que només defineix uns quants tipus de dades i comandes. Aquesta simplicitat contrasta amb la dificultat d’altres protocols de RPC com RMI o altres. Fou creat per Dave Winer de l’empresa UserLand Software en associació amb Microsoft l’any 1995. Aquest protocol està implementat en una infinitat de llenguatges de programació i fins i tot existeixen implementacions diferents en un mateix llenguatge. En aquest projecte utilitzarem la implementació d’Apache sobre Java. Concretament, la versió 2.0. 46 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 4.3.4. Java Web Start En aquest apartat explicarem què és i per a què serveix Java Web Start. Java Web Start és un entorn dissenyat per Sun Microsystems que permet l’execució de programari Java directament des d’Internet utilitzant un navegador. S’assembla, en algun aspecte a l’ús d’Applets dins d’una pàgina web. Les diferències, però, són molt grans. Bàsicament, les aplicacions executades mitjançant Web Start no corren dins el navegador i l’entorn que utilitzen no està tan restringit com en un Applet. El procediment seguit és el següent: Figura 16. Procediment d’execució d’una aplicació Java Web Start Client Servidor Navegador Servidor web Link (HTML per exemple) Arxiu JNLP Màquina Virtual Java Arxiu(s) JAR Execució del(s) arxiu(s) JAR El navegador es connecta al servidor web. Seguint un link es descarrega l’arxiu JNLP. Aquest arxiu JNLP és passat a Java Web Start que l’interpreta. Aquesta interpretació significa descarregar-se els arxius JAR necessaris per la seva execució i, posteriorment, la seva execució si es compleixen tots els requisits de seguretat. Tot aquest procediment es desenvolupa de forma quasi transparent a l’usuari, que només observa el procés i dóna vist-i-plau a la seva execució. Des del seu punt de vista és, doncs, molt més fàcil que no pas instal·lar software d’una manera tradicional. 47 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR No obstant, el procés és força més complicat, ja que s’han de complir certs requisits: - Per una banda, el servidor ha d’estar configurat per tal que, en enviar l’arxiu JNLP, el navegador interpreti que l’ha de passar a Java Web Start. Això es fa escrivint la línia següent en l’arxiu de tipus MIME del servidor: application/x-java-jnlp-file JNLP - L’arxiu JNLP ha de ser vàlid i estar ben formulat i, més important, ser consistent: és a dir, que totes les referències siguin vàlides. - En cas que l’aplicació (els arxius JAR) necessitin més permisos dels estàndard en Java Web Start (cosa força normal, sobretot si es tracta d’una aplicació una mica elaborada); caldrà que el codi estigui signat. Això significa que cal crear certificats, signar el codi i comprovar, a més, que no hi hagi diferents JARs signats amb diferents certificats, ja que això no està permès. Es tracta, com podem veure, d’una tecnologia no trivial d’implementar, ja que es pot haver de destinar força temps a implementar-la correctament a causa de les nombroses restriccions i problemes que ens pot donar. De tota manera, el resultat pot ser força millor que no pas si despleguéssim la nostra aplicació de la forma tradicional, mitjançant un instal·lador o un arxiu comprimit; almenys des de l’òptica de l’usuari, que és la que caldria tenir més en compte. 48 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 4.4. Tecnologies 3D 4.4.1. Java 3D Java 3D és una API que permet crear escenes 3D sobre Java. Java 3D corre tant sobre OpenGL com sobre Direct3D. Java 3D utilitza el paradigma de la programació orientada a objectes per construir les escenes 3D. Les escenes es construeixen com un arbre que conté diversos elements que representen objectes, transformades, etc. Va ser desenvolupat per un conjunt de líders del mercat informàtic (Intel, Silicon Graphics, Apple i Sun) a partir de 1997. El 1998 en va sortir la primera versió beta, i l’estiu de 2004, Java 3D va ser llançat com a projecte obert, i des de llavors una comunitat de voluntaris i Sun continuen el seu desenvolupament. La versió utilitzada en aquest projecte és la 1.4.0_01, llançada el febrer de 2006. Aquesta API esta formada per dues parts, una de 100% Java i una altra de nativa (disponible per a un gran nombre de plataformes). Així doncs, una aplicació típica Java 3D tindria la forma següent: Figura 17. Aplicació Java 3D típica Resta de l’aplicació Llegenda Codi natiu Java 3D Aplicació Codi Java Part Java Part Nativa Sistema operatiu 49 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 4.4.2. Format de les dades 3D Per emmagatzemar les escenes 3D que representen el robot i el seu entorn s’ha utilitzat el format .obj. Aquest format, desenvolupat per Wavefront Technologies, s’ha anat convertint en un format acceptat universalment, i que pot ser importat/exportat des de multitud de programes d’edició d’escenes 3D: En aquest cas de 3D Studio Max, que és el programa que s’ha utilitzat per transformar els arxius des del format en que estaven disponibles des d’ABB. També és importable des de Java 3D. Es tracta d’un format de dades simple que representa només la geometria tridimensional dels objectes. En un primer moment s’havia utilitzat el format VRML per emmagatzemar les dades. Aquest format, però, ha demostrat tenir certs desavantatges, que s’han resolt amb l’ús del format OBJ. Aquests desavantatges són, per una banda, el tamany dels arxius, que interessava que fos el més petit possible, ja que havien de ser descarregats en temps d’execució, com s’explicarà més endavant. El format VRML necessita més espai per emmagatzemar els mateixos objectes, ja que en guarda més dades. Per altra banda cal, com ja s’ha explicat anteriorment, un carregador (loader) d’arxius per a Java 3D per tal de visualitzar el seu contingut. El carregador utilitzat depèn del format en que estigui l’arxiu, és a dir, que es necessita un carregador diferent depenent del format que vulguem utilitzar. El paquet Java 3D disposa ja d’alguns carregadors implementats, i compta amb la possibilitat de crear-ne de nous implementant una interfície anomenada Loader. Entre aquests carregadors ja implementats, però, no hi havia el de VRML, de manera que va ser necessari buscar-ne un. Al tractar-se d’un carregador extern, en carregar un arxiu VRML, no ho feia gaire eficientment i creava una escena amb objectes superflus que no feien sinó augmentar la càrrega del sistema, obtenint resultats bastant més pobres. Per al format OBJ, en canvi, sí que existeix un carregador ja implementat, amb el qual s’obtenen resultats molt millors. Un altre factor a tenir en compte és que al necessitar un carregador extern (en el cas de VRML) calia incloure aquest carregador en el client, de manera que es creava un client més gran en tamany, qüestió que tampoc interessava. 50 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 4.5. Tecnologies de Bases de Dades En aquest projecte ha sigut necessari utilitzar una base de dades per mantenir les dades dels usuaris. Si bé no es tracta d’una base de dades gaire gran, val la pena fer un cop d’ull a les tecnologies utilitzades en la seva implementació. 4.5.1. SQL SQL (generalment se li dóna el significat de Structured Query Language, encara que n’hi ha d’altres) és el llenguatge per crear, modificar i obtenir i manipular dades d’una base de dades relacional més utilitzat arreu. Permet totes les accions anteriorment mencionades utilitzant un llenguatge força simple de manera que sigui bastant fàcil d’utilitzar, alhora que potent. 4.5.2. MySQL MySQL és el sistema de gestió de bases de dades (SGBD) utilitzat en aquest projecte. Es tracta d’un sistema molt utilitzat (més de 6 milions d’instal·lacions), a causa, entre d’altres que és de lliure distribució. Això rebaixa els costos a nivells molt més acceptables per a algunes organitzacions. Cal dir, però, que la qualitat del producte no es veu disminuïda per aquest fet. 51 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 4.6. Tecnologies de Seguretat 4.6.1. Certificats Per tal de poder treballar amb Java Web Start, com ja s’ha explicat anteriorment, ha calgut crear certificats i certificar codi. Aquest procés serveix perquè els usuaris que executin determinats arxius JAR en la seva màquina puguin estar segurs que allò que estan executant no conté codi maliciós. El procediment a seguir és el següent: - Crear el certificat: Utilitzant l’utilitat keytool del SDK de Java - Signar el(s) JAR(s): Aquest pas es duu a terme amb la utilitat jarsigner del SDK de Java Figura 18. Missatge d’avís del desconeixement del certificat per part de Java Web Start Quan l’usuari obri l’aplicació rebrà un missatge com el que ens mostra la figura 16. En crear el certificat, optar, es pot també, per utilitzar un certificat signat entitat per alguna reconeguda com Verisign o similars. D’aquesta manera l’usuari tindrà una major confiança en l’autenticitat del certificat. L’inconvenient és que aquest tipus de certificats són comercials i el seu preu és força elevat. 52 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 4.7. Tecnologies Robot 4.7.1. RobotWare El RobotWare és el sistema operatiu que corre sobre la controladora. Es tracta d’un sistema creat per ABB per a les seves controladores IRC5. El sistema s’articula al torn d’un nucli present en totes les distribucions, sobre el qual es poden instal·lar diferents opcions (aquesta és la paraula utilitzada per ABB, podríem entendre-ho com a extensions de funcionalitat). El nucli conté la part principal de lògica necessària per a la realització de moviments així com d’altres funcionalitats bàsiques, mentre que les opcions addicionals permeten extendre algunes funcionalitats. Hi ha opcions de tot tipus, la majoria enfocades a un tipus d’operació determinada, com podria ser soldadura o altres, així com d’altres de caire més general. Algunes d’aquestes últimes s’han utilitzat en aquest projecte. Tot seguit es descriuen les principals opcions addicionals utilitzades: Més informació sobre RobotWare es pot trobar a l’annex V. 4.7.1.1. Socket Messaging Socket Messaging és una opció de RobotWare que permet en general la comunicació entre la controladora del robot i un PC connectats a traves d’una connexió Ethernet basada en sockets. Més concretament, permet l’obertura de sockets en la controladora als que es podran connectar altres sockets d’un PC, o de qualsevol dispositiu que tingui aquesta capacitat. D’aquesta manera es poden intercanviar dades entre la controladora i un PC extern, això sí, d’una forma molt rutinària. 4.7.1.2. Multitasking La controladora del robot, en principi, només permet executar un programa concurrentment, anomenat en terminologia ABB una tasca. Existeix, però, l’opció addicional Multitasking que permet l’emulació d’un sistema concurrent. Aquesta opció permet l’execució en paral·lel de fins a 20 tasques. El manual remarca que es tracta de pseudo paral·lelisme. 53 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 4.7.1.3. World Zones Es tracta d’una opció del sistema RobotWare que permet la creació de zones d’exclusió anomenades WorldZones, en les quals, un cop definides i activades, el TPC del robot (la pinça) no pot entrar, o no en pot sortir. En un ambient controlat com el nostre en el qual es preveu la utilització del robot per usuaris sense una formació prèvia o amb poca formació prèvia, una opció com aquesta ens pot resultar molt útil, ja que, sense experiència, es pot arribar a malmetre físicament el robot. Això també pot ser realitzat de forma conscient per usuaris malintencionats. Així doncs, la definició de zones d’exclusió protegeix els objectes pròxims al robot de sí mateix. Aquesta protecció, però, no és completa, ja que només supervisa l’entrada en les zones d’exclusió del TCP, però no de la resta del braç mecànic. En el nostre projecte, s’ha creat una zona d’exclusió per protegir la bancada sobre la que està muntat el braç mecànic. 4.7.2. WebWare SDK i Interlink WebWare SDK és un Figura 19. Interlink (Font:[4]) software comercial distribuït per ABB que permet la connexió entre un PC i una controladora d’ABB. Es tracta d’un software encarat a la supervisió de les controladores de robots que poguessin haver-hi en una planta de producció. Mitjançant aquest software es creen aplicacions estadístiques o de control. Aquest SDK es conforma d’un conjunt de controls ActiveX utilitzables tan sols des de plataformes com 54 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR Microsoft Visual Basic o Visual C++. Aquests controls es comuniquen amb el que s’anomena l’Interlink que no és sinó un petit programa que connecta amb la controladora. D’aquesta manera, s’obté accés a la controladora, i es poden obtenir les dades del robot, com per exemple, l’estat de les articulacions o l’estat de les entrades i sortides digitals i analògiques. També es poden realitzar accions sobre la controladora, com iniciar/parar el programa o altres tasques més encarades a la supervisió que no pas al control directe. 4.8. Altres tecnologies sobre Java A continuació es detallen algunes de les tecnologies sobre Java emprades en aquest projecte. Es tracta, doncs, de paquets utilitzats per a obtenir noves funcionalitats utilitzant Java. 4.8.1. JDIC JDIC (Java Desktop Integration Components) és un paquet de Java, l’objectiu del qual és possibilitar que les aplicacions Java es puguin integrar en l’escriptori del sistema operatiu igual que les aplicacions dissenyades per a un sistema operatiu en particular. Es descompon en diversos subpaquets, cadascun amb una finalitat específica dins aquest objectiu més general. Podem trobar des de paquets dirigits a possibilitar la integració de l’aplicació Java al system tray de la barra d’inici, passant per exploradors de fitxers com navegadors d’internet dins de finestres Java. Aquest últim és el que farem servir en la nostra aplicació. 4.8.2. JXInput El paquet JXInput s’ocupa de reconèixer els dispositius d’entrada i de generar events quan les entrades d’aquests dispositius canvien de valor. És un paquet desenvolupat per Joerg Plewe per al qual s’ha aconseguit permís escrit de l’autor permetent el seu ús en aquest projecte. Aquest paquet està format per dues parts, una nativa (Windows) i una altra purament Java. Això conforma un impediment a l’hora d’utilitzar aquest paquet en entorns diferents a 55 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR Windows. No obstant això, es tracta d’un paquet molt útil, ja que reconeix automàticament els dispositius d’entrada DirectX, és a dir, aquells que Windows ha detectat. D’aquesta manera, no només es pot utilitzar el joystick que s’ha fet servir en aquest projecte, sinó que qualsevol joystick comercial actual serviria. 4.8.3. JGoodies Looks JGoodies Looks és un paquet destinat a la millora de l’aparença de les aplicacions Java. Concretament, intenta emular l’aparença de Windows amb algunes diferències menors encarades a fer-la més llegible i usable. En el subapartat Interfície Gràfica de l’apartat Client del capítol Implementació se’n donaran més detalls. 56 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 5. IMPLEMENTACIÓ 57 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 58 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR Durant la implementació s’ha hagut de realitzar alguns canvis sobre el disseny inicial per restriccions que s’han anat trobant durant el procés d’implementació. Aquests canvis seran explicats detalladament en els casos en que hagin sigut necessaris. 5.1. Dades del robot 5.1.1. General Les dades del robot són la peça clau que permet que tot el sistema funcioni, ja que inclouen totes les dades de connexió al servidor robot, així com els paràmetres que necessita el client per tal de presentar la interfície gràfica que pertoqui o enviar les dades correctament al robot. Totes aquestes dades es troben dins un objecte de la classe DevicesDataPacket, que pot incloure les dades de diversos servidors robot. En primer terme, el servidor robot llegeix les seves pròpies dades d’un arxiu .properties. Mitjançant aquestes dades, es crea un objecte DevicesDataPacket. Aquest objecte és enviat (no com a objecte, sinó les seves dades) al servidor central, que les fusiona amb les que ja tingués, conformant la base de dades de robots disponibles en un moment determinat. Quan un client es connecti, li seran enviades (igualment, no com a objecte sinó com a dades, que són reconstruïdes en la destinació), per tal que triï a quin robot es vol connectar, i les utilitzi per adaptar-se al nombre d’eixos que tingui el robot, el nombre de càmeres, etc. Figura 20. Transmissió de les dades del robot Servidor Central 4 transmissió 3 unió 2 transmissió Client Servidor Robot 5 ús 1 lectura 59 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 5.1.2. Contingut 5.1.3. DevicesDataPacket Un objecte de dades de robots (DevicesDataPacket) té: Vector<RobotServer> robotServers Vector<Camera> cameras Aquests dos vectors representen, el primer, els robots que hi ha, i el segon, les càmeres. Figura 21. Dades del robot 60 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 5.1.4. RobotServer Un objecte RobotServer representa un servidor robot, i conté les dades necessàries per als clients per connectar-s’hi. Algunes de les dades són molt òbvies, però n’hi ha alguna que no ho és tant. Per exemple, el camp id és l’identificador únic de cada servidor robot, cada un que es creï de nou ha de tenir un número diferent dels anteriors. Pel que fa als valors acabats en -3D, s’explicaran més endavant, en l’apartat d’implementació del model 3D. Un altre camp interessant és el de joints. Aquest camp conté les dades de cadascuna de les articulacions del robot, objectes de la classe Joint. 5.1.4.1. Joint Cada objecte d’aquesta classe representa una articulació del robot. Per completesa, s’inclouen dins aquest concepte, totes les parts mòbils del robot, és a dir, en el cas de la pinça, per exemple, cadascuna de les parts de la pinça que es mouen diferentment en el model està representada per un objecte d’aquesta classe. 5.1.5. Camera Els camps que poden semblar més confusos són el primer, el segon i el quart: El camp boundToRobot és l’identificador del servidor robot al que aquesta càmera està lligada, és a dir, el robot al que enfoca. Els altres dos ( from, lookat ) són els paràmetres que permeten crear una vista en el model 3D similar a la que obtenim amb la càmera en qüestió. Això últim serà explicat amb més deteniment en l’apartat del model 3D. 61 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 5.2. Servidor Central 5.2.1. General El servidor central ha estat implementat integrament en Java, utilitzant algunes extensions que també són Java 100%. Les extensions utilitzades són: - XMLRPC - Connector MySQL - JGoodies Looks - Part de Java 3D (Paquet vecmath) Figura 22. Esquema del servidor central. Servidor Central Dades dels robots Connector MySQL del Client Servidor XMLRPC: Procediments remots a la Base de Dades Sistema de sessions i usuaris dels Servidors Robot 5.2.2. Sessions La seqüència que es realitza és la següent: El client genera una petició d’inici de sessió sobre el servidor central. El controlador de sessions del servidor central comprova que les credencials són correctes i posteriorment autoritza aquest usuari. Al client aleshores li és permès demanar les dades dels robots emmagatzemades en el servidor central. 62 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR El sistema de sessions passa a funcionar llavors mitjançant els timeouts, és a dir, mitjançant comprovacions de quant fa de l’última activitat de cada client. Quan un client supera el temps màxim d’inactivitat es considera desconnectat a tots els efectes. El temps d’inactivitat és suficientment elevat per tal que no es produeixin desconnexions sobtades per causes alienes al programa, com poden ser demores degudes a la xarxa o altres. El client també pot desconnectar-se voluntàriament. 5.3. Servidor Robot 5.3.1. General L’estructura del servidor robot s’ha hagut de canviar notablement respecte la proposada en el disseny. Això és degut a la problemàtica de la interacció amb el robot. En disposar la controladora del robot de sistema operatiu propi així com de disposar el sistema del robot de FlexPendant, resultava impossible disposar d’un control absolut del robot des d’una màquina externa al sistema; de fet, era impossible executar qualsevol instrucció sobre el robot. Existien dues eines software possibles per tal de solucionar el problema. Per una banda, la inclusió en el sistema operatiu del robot d’una opció de software opcional anomenada Socket Messaging que permet l’obertura en la banda de la controladora de sockets. Això fa possible la interacció amb un PC extern, però d’una forma molt rudimentària. Per l’altra, un altre software, el WebWare SDK permet la comunicació entre un PC i el sistema operatiu RobotWare de la controladora, però a un nivell superior al desitjat, ja que no permet l’execució d’instruccions directament. Es tracta, doncs, d’una eina de supervisió, més que de control. L’opció que s’ha pres és un sistema mixt entre les dues solucions, en el que entrarem amb més detall en la secció següent. 63 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 5.3.2. Disseny final Com podem veure en l’esquema del disseny final, s’ha optat per utilitzar les virtuts de cadascuna de les eines de les que es disposava. Figura 23. Esquema definitiu del servidor robot i la controladora. Servidor Robot Controladora Servidor Java Control de sessions Socket de moviment Dades del robot al Client i al Servidor Central Socket d’estat Comunicacions XMLRPC Tasca de moviment Socket Tasca d’estat Socket Socket de supervisió Servidor VB Socket Control d’errors Llegenda RobotWare Braç Java Visual Basic Interlink RAPID Per una banda, s’utilitzen sockets en els programes RAPID que corren sobre la controladora, fent servir l’opció MultiTasking del sistema operatiu de la controladora. A aquests sockets s’hi connecten els sockets de l’aplicació Java, que és la part principal del servidor robot. Se n’utilitzen dos per tal de millorar les comunicacions, ja que cadascuna de les connexions s’utilitza per a un fi. En una d’elles s’envien els moviments a realitzar pel robot, mentre que l’altra demana i rep les dades d’estat del robot. S’ha comprovat que utilitzant només una connexió (un socket a cada banda), a causa de la indeterminació (en alguns casos) del temps que duraria un moviment, o senzillament una 64 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR durada excessiva en realitzar-lo, la demanda d’informació d’estat per part del servidor no era atesa o era atesa massa tard. Per una altra banda, si només s’utilitzés un sistema com el descrit anteriorment, ens trobaríem que en aparèixer un error RAPID (com per exemple, si demanem un moviment que no es pot realitzar) tot el sistema es pararia i no es podrien demanar més moviments ni més informació d’estat fins que s’haguessin rearrencat els programes RAPID i restablert les comunicacions. Per tal de no trobar-nos en aquest cas, s’ha optat pel disseny que es pot veure a continuació, en que un petit programa escrit en Visual Basic, es comunica amb l’Interlink, que li comunica els errors que es puguin donar en la controladora. D’aquesta manera, en aparèixer un error RAPID, aquest és comunicat al programa Visual Basic, que reinicia els programes de la controladora i comunica al programa Java que es reconnecti a la controladora, donant-li el missatge d’error que ha retornat la controladora. Aquest missatge és enviat al client per tal que l’usuari tingui coneixement d’aquest error. Aquests errors solen ser tals com arribar al final de recorregut d’una articulació, intentar entrar en una zona no permesa, o demanar un moviment cinemàticament no realitzable. 5.3.3. Interacció per sockets La interacció es realitza mitjançant un llenguatge propi dissenyat a tal efecte. Aquest llenguatge es compon d’un petit subconjunt de les instruccions RAPID modificades per tal de ser transmeses per la connexió sockets, així com d’altres exclusives de control de connexió. A causa de restriccions en les transmissions i per tal de simplificar les connexions, s’ha optat per realitzar cada operació en una sola transacció, no en diverses. Això significa que cada trama transmesa a la controladora representa una acció per sí mateixa, ja sigui una acció del robot, de transmissió d’informació o de control de connexió. D’aquesta manera s’eviten errors en la transmissió i se simplifiquen, alhora, els dos programes que s’estan comunicant. A continuació se’n presenta la sintaxi. 65 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 5.3.3.1. Llenguatge Figura 24. Llenguatge d’interacció per sockets. Comanda Acció C Tancar pinça Moviment I relatiu d'una articulació Moviment relatiu de totes J les articulacions Moviment absolut de K totes les articulacions L M O P R S T U V Z Sintaxi C Explicació sintaxi Limitacions x=articulació (1-6) yy=graus(0-30) z=sentit("-" màxim 30º ó "0") aaa,...,fff= graus en cadascun dels eixos, el Jaaabbbcccdddeeefff màxim 20º primer caràcter indica sentit("-" ó "0") aaaa,...,ffff= graus en cadascun dels eixos, el Kaaaabbbbccccddddeeeeffff primer caràcter indica sentit("-" ó "0") aaaa,...cccc=mm en Moviment cadascun dels relatiu en eixos Laaaabbbbcccc eixos(X,Y,Z), el primer cartesians caràcter indica sentit Moviment absolut en Per eixos implementar cartesians Obrir pinça O Ping P Per implementar Moviment: R excepte en reorientar la controladora Stop S Mou el robot Prova de T entre dos moviment punts Mou el robot Prova de entre dos moviment U punts lineal linealment Canviar Vxxxx xxxx= velocitat nova velocitat Moure a Z posició 0 Ixzyy 66 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 5.3.4. Controladora La controladora executa dos programes RAPID concurrentment, utilitzant l‘opció MultiTasking de RobotWare explicada anteriorment. Ambdós obren un socket com a servidor i, un cop es connecta el client (en aquest cas, la part de servidor robot escrita en Java); escolta les comandes que rep, i en funció d’aquestes va executant el que se li demana. Un dels programes és destinat a enviar les dades d’estat, i s’executa com a tasca secundària en la controladora. L’altre, s’executa com a tasca principal i és l’encarregat de realitzar els moviments del robot quan se li demanen. A continuació podem veure quines instruccions s’utilitzen en el programa de la controladora per tal de reproduir les comandes que se li han demanat. 5.3.4.1. Moviments i pinça Les instruccions de moviment en RAPID tenen la forma, generalment, de MoveX on X és el tipus de moviment. Tenim com a instruccions de moviment més utilitzades, les següents: Figura 25. Instruccions de moviment de la pinça. Comanda Acció Instrucció C Tancar pinça SetDO obrir, 0; SetDO tancar, 1; I Moviment relatiu d'una articulació MoveAbsJ lasttarget,spd,z50,toolG; J Moviment relatiu de totes MoveAbsJ lasttarget,spd\T:=0.15,z50,toolG; les articulacions K L Moviment absolut de totes les articulacions Moviment relatiu en eixos cartesians Observacions els senyals obrir i tancar estan definits de manera que actuïn sobre l'electrovàlvula de la pinça prèviament s'ha sumat el valor d'entrada al valor actual de l'articulació prèviament s'han sumat els valors d'entrada als valors actuals de les articulacions MoveAbsJ targetjoints,spd,z50,toolG; prèviament s'ha sumat MoveL els valors d'entrada robtargetXYZ,spd,z50,toolG;!\T:=0.1,z50,toolG; als valors XYZ actuals 67 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR M Moviment absolut en eixos cartesians MoveL robtargetXYZ,spd,z50,toolG;!\T:=0.1,z50,toolG; O Obrir pinça SetDO tancar, 0; SetDO obrir, 1; Z Moure a posició 0 MoveAbsJ zerojoints,v100,z50,toolG; els senyals obrir i tancar estan definits de manera que actuin sobre l'electrovàlvula de la pinça tots els valors de les articulacions s'han posat a 0 5.3.4.2. Estat Per obtenir la informació d’estat del robot i després transmetre-la al servidor robot s’han utilitzat dues instruccions RAPID concretes. Per una banda, CJointT i per una altra, CRobT. Cadascuna retorna una posició del robot, però de diferent manera. CJointT representa la posició mitjançant l’angle en el que es troba cada articulació, mentre que CRobT ho fa mitjançant les coordenades X, Y, Z de l’element terminal, la seva orientació i unes variables que determinen la posició d’algunes de les articulacions, ja que, al tractar-se d’un robot amb 6 graus de llibertat, les posicions de l’element terminal el robot pot estar col·locat de diverses maneres per a una mateixa posició i orientació de l’element terminal. Cadascuna d’aquestes instruccions retorna un tipus de dades diferent. Així doncs, depenent la finalitat que es busqui, es fa servir una o l’altra instrucció. En el nostre cas, les dues. 68 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 5.3.5. Part Java del Servidor Robot La part escrita en Java del servidor robot consta, a part de les seves pròpies classes, de les següents extensions: - XMLRPC - JGoodies Looks - Part de Java 3D (Paquet vecmath) 5.3.5.1. Sessions El sistema de sessions del servidor robot funciona molt similarment al del servidor central. De fet, es tracta d’una classe de Java que extén la que es cuida del control de sessions en el servidor central. La diferència consisteix en la necessitat que el servidor robot només sigui controlat per un usuari al mateix temps. Això s’aconsegueix atorgant a un des usuaris (el primer que es connecta) el comandament. Els usuaris successius no podran moure el robot fins que el primer es desconnecti, però es mantindrà en el servidor robot una llista amb l’ordre en que s’han connectat els usuaris, per tal que, quan es desconnecti el que està movent el robot, el següent de la llista passi a ostentar aquesta posició. Es tracta, doncs, d’un sistema FCFS (First Come, First Served). 5.3.5.2. Socket d’Estat i de Moviment Aquest sockets són els encarregats d’establir connexió amb la controladora i posteriorment d’enviar-li les comandes: el d’estat, les comandes que retornaran l’estat del robot, i el de moviment, les comandes que faran que el robot es mogui. 69 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 5.3.5.3. Socket de Supervisió Aquest socket és el que es connecta a la part Visual Basic del servidor robot i que escolta peticions de reconnexió des d’aquest. També guarda els missatges d’error que li envia aquest (part VB del servidor robot) procedents de la controladora. La sintaxi en aquesta connexió és la següent: Figura 26. Llenguatge d’interacció per sockets entre les parts Java i VB del servidor robot. Comanda Acció Demanda de K reconnexió Enviament de W missatge d'error Sintaxi Explicació sintaxi Observacions x és el socket a reconnectar: el programa de Java s'ha de K:x 0=estat, 1=Moviment reconnectar a la controladora missatge d'error que rebrà W:msg msg=missatge d'error finalment el client 70 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 5.3.6. Part Visual Basic del Servidor Robot La part escrita en Visual Basic (VB) del servidor robot s’encarrega de la supervisió de la controladora. Quan es produeixen errors en RAPID, que serien irrecuperables de forma automàtica en cas que no existís aquest programa, Figura 27. Esquema de la part VB del servidor robot intenta a la part Java del servidor recuperar-los. Està formada per un control Helper que no és sinó Part Visual Basic un control Visual Basic creat per ABB per l’Interlink. connectar-se A través amb Control manual i visualització Socket de l’Interlink, aquest control rep Helper dades de la controladora del robot. Els events generats a la controladora arriben a l’Interlink, Interlink a la controladora que els tramet al programa de Visual Basic que els processa. Bàsicament hi ha 2 tipus d’events que té en compte de tots els que rep de l’Interlink: - Els que suposen la parada d’un dels programes RAPID que corren sobre la controladora - Els que suposen la posada en marxa d’un dels programes RAPID que corren sobre la controladora En el primer cas (quan rep un event de parada d’un dels programes), envia una comanda a la controladora per tal que els torni a executar, de manera que s’estigui el mínim temps sense execució de programa. Quan efectivament el programa ha arrancat, la controladora envia un altre event al programa VB, que, en aquest cas, li comunica al programa Java que ja es pot reconnectar. 71 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR L’altra peça que forma part del programa Visual Basic és el control manual. Aquest control, creat també per ABB, és un control que Figura 28. Panell manual del la part Visual Basic del servidor robot mostra visualment les dades d’estat del robot, i permet la interacció bàsica com pot ser la posada en marxa dels motors del robot, l’inicialització del programa, etc. Aquest control només s’utilitza en la inicialització del servidor. A la imatge podem veure el panell manual, creat per ABB, a la dreta i a l’esquerra tenim els botons utilitzats per a la inicialització del sistema. 72 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 5.4. Client 5.4.1. General L’esquema següent del client, conforma una representació no exhaustiva de l’aplicació client. No obstant això, mostra força clarament els mòduls principals de l’aplicació, així com algunes de les relacions entre ells. Figura 29. Esquema del client. Aplicació Client Internet Operador Interfície gràfica Aplicació Client Càmeres Càmeres JDIC Model 3D Java 3D Motor de l’aplicació Posicions conegudes Dades dels dispositius Dades del robot Mouse Dades de les càmeres Generadors d’events Mòdul de control Receptors d’events Perfils Joystick JXInput 73 Comunicació XMLRPC Servidors SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR El client ha estat implementat en Java, utilitzant algunes extensions que inclouen software natiu, per tant no és 100% Java. L’objectiu, però, és que es pugui utilitzar sobre Java Web Start, condició que es pot realitzar tot i l’ús de llibreries externes. Les extensions utilitzades en el client són: - XMLRPC Java 3D JDIC JGoodies Looks JXInput 5.4.2. Mòdul de control 5.4.2.1. General Tota l’estructura de control (exceptuant els generadors empotrats, que estan dins de cada panell com a botons) s’emmarca dins la classe ControlManagement que s’encarrega de registrar Figura 30. Generació d’events: Implementació els generadors ControlManagement Vector<MappableControl> Profile d’events Vector<Actuator> MappableControl 1 Entrada 1 Actuator 1 MappableControl 2 Entrada 2 Actuator 2 i receptors d’events i de mantenir un perfil que els MappableControl n Entrada k Actuator k relacioni. Els generadors Generador empotrat 1 Generador empotrat 2 d’events estan representats en la classe MappableControl així com alguns botons de la interfície gràfica, que Generador empotrat m anomenem generadors empotrats ja que estan inclosos en les classes visuals com a botons. El perfil es manté dins la classe Profile, i els receptors d’events dins la classe Actuator i totes les classes que l’extenen. 74 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 5.4.2.2. Generadors d’events 5.4.2.2.1. Joystick L’ús de joystick com a interfície d’entrada s’articula en diverses capes, cadascuna amb la seva funcionalitat. Gràficament: Figura 31. Pila de crides joystick MappableControl (Conversió) JXInput RobotControl ControlManagement Profile Actuator Part Java Part Nativa Sistema operatiu (Windows) Llegenda Codi Java Joystick Codi natiu En primer lloc trobem el paquet JXInput, ja explicat anteriorment. Després trobem la capa de l’aplicació RobotControl, que s’encarrega de transformar les entrades que rep de JXInput per tal que es puguin enviar al servidor robot. En aquesta capa, en primer lloc, es transformen les entrades del joystick que ens ha proporcionat JXInput per tal d’eliminar alguns efectes indesitjats. 75 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR JXInput ens retorna la posició absoluta de cada eix del joystick en valors entre 1 i -1. Això suposaria una dificultat si passéssim directament aquest valor al robot, ja que els joysticks tenen cert error en la zona situada prop del 0. Normalment un joystick no queda sempre en la mateixa posició quan el deixem lliure. Això provocaria que s’enviessin demandes de moviment fins i tot quan el joystick es trobés en posició de repòs. Per resoldre aquest petit problema s’ha implementat un conversor que té en compte un valor variable (constant per a cada eix del joystick), que representa el valor que té la zona insensible sobre el total del desplaçament del joystick. Gràficament: Figura 32. Valor obtingut amb JXInput vs valor obtingut després pel conversor de RobotControl 1,5 1 0,5 0 -0,5 -1 -1,5 insensibilitat jxinput RobotControl RobotControlPoli En el gràfic podem observar com es converteixen les entrades del joystick mitjançant diferents valors de zona insensible. En rosa apareix el valor retornat per JXInput, lineal entre -1 i 1, i en groc s’observa la conversió que en fa el programa per tal de tenir una zona d’insensibilitat en aquest eix. El gràfic ens mostra el mateix interval per a una zona d’insensibilitat de 0.2, 0.3, 0.4, 0.5 i 0.6. Veiem com la zona en que es retorna 0 es va ampliant segons el valor de la zona d’insensibilitat. Veiem dues conversions provades, una de lineal (groc) i una altra de quadràtica, aquesta última realitzada amb la intenció que el moviment fos més suau al començament. 76 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR Al final, però, s’ha optat per utilitzar l’aproximació lineal (groc), ja que la quadràtica tenia en el final de recorregut massa pendent, i feia que l’usuari no fos capaç de controlar efectivament el robot en aquest tram. 5.4.2.2.2. Botons de la interfície gràfica Aquests botons serveixen per a utilitzar el programa en el cas que no disposem de cap joystick; o per quan necessitem realitzar una acció o moviment que creiem que serà més fàcil d’acomplir utilitzant el mouse. Aquest pot ser el cas quan necessitem realitzar un moviment acotat a un cert nombre de graus, per exemple. Un moviment d’aquestes característiques pot ser difícil de realitzar amb el joystick si no hi tenim pràctica. 5.4.2.3. Perfils El perfil es manté dins la classe ControlManagement com a un objecte Profile. Un objecte de la classe Profile no és sinó una extensió d’una taula de hash que relaciona objectes MappableControl amb d’altres de la classe Actuator; és a dir, generadors d’events amb receptors d’events. Quan un generador d’events genera un event, a través del perfil actual (el que està en vigor) es determina quin receptor ha de rebre’l i se li envia. 5.4.2.3.1. Generació de perfils i emmagatzematge Els perfils es guarden en arxius .properties de Java. Aquests arxius són fàcilment accessibles des d’un programa Java, alhora que són visibles i editables des d’un editor de text qualsevol. Aquests arxius són llegits, en temps d’execució per la classe ProfileDataReader i emmagatzemats en la classe ControlProfiles com a esquelets de perfil (ProfileSkeleton). S’anomenen d’aquesta manera perquè no contenen relacions entre objectes existents de tipus generadors d’events (MappableControl) i receptors d’events (Actuator), sinó que tan sols 77 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR emmagatzemen els seus noms (com a String). Això es fa perquè a priori no coneixem quins dispositius tenim, i per tant, pot ser que els generadors d’events i receptors d’events encara no s’hagin creat, de manera que no podem crear les relacions entre objectes inexistents. La creació del perfil (de la classe Profile) com a relació entre objectes generadors i receptors d’events es fa a posteriori, quan decidim carregar un dels perfils. Aleshores, tenint en compte quins generadors i receptors hi ha i no hi ha es crea un perfil, assignant generadors nuls als receptors que no estiguin en l’esquelet de perfil, o aquells per als quals no es trobi el generador d’events especificat en l’esquelet. Figura 33. Generació de perfils ControlManagement 1. Creació de relacions entre Strings ControlProfiles ProfileDataReader Arxiu 1 ProfileSkeleton 1 Arxiu 2 ProfileSkeleton 2 Arxiu n ProfileSkeleton n 2. Creació de relacions entre objectes Profile El perfil que es carrega per defecte és el que està en l’arxiu default.properties. Aquest perfil està optimitzat per al joystick utilitzat en el projecte (Logitech Force 3D Pro). A continuació en podem veure les associacions. 78 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 5.4.2.3.2. Perfil per defecte Eixos del joystick amb articulacions del robot: Figura 34. Perfil per defecte: configuració estàndard i configuració intercanviada Joystick (configuració estàndard) Robot 79 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR Joystick (configuració intercanviada) 80 Robot SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR Botó direccional del joystick amb eixos del robot: Figura 35. Perfil per defecte: botó direccional del joystick.1 Joystick (configuració estàndard) Robot Eix X Eix Y 81 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR Figura 36. Perfil per defecte: botó direccional del joystick 2 Joystick (configuració Robot intercanviada) Eix X Eix Z 82 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR Altres Figura 37. Perfil per defecte: Altres botons Joystick Acció Canvi de vista en el model 3D Canvi de càmera Canvi de configuració (estàndard intercanviada) Obrir – Tancar la pinça 83 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR Iteració sobre les posicions conegudes Guardar posició actual Anar a la posició seleccionada A l’annex X es pot trobar com configurar un perfil diferent a l’utilitzat. 84 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 5.4.2.4. Receptors d’events Els receptors d’events són objectes Java que realitzen alguna funcionalitat específica en ésser cridats. Aquests objectes extenen la classe Actuator. N’hi ha de diferents tipus segons la naturalesa de l’acció que han de realitzar, per exemple, tenim els AxisActuator que s’encarreguen de demanar accions sobre un eix o articulació determinada del robot. També hi ha tots els receptors que extenen la classe SingleActionActuator que, en ser cridats, realitzen una funció similar a la d’un botó, com per exemple, canviar la càmera o la vista del model 3D que estem veient. Cada panell o classe que ho requereixi crea un o diversos receptors d’events i els registra sobre ControlManagement, on, des d’aleshores, són susceptibles que se’ls assigni un generador d’events. Per completesa, cada receptor d’events té un generador d’events nul assignat per defecte. 5.4.2.4.1.1. Receptors del robot Quan ens connectem al robot, es creen, en temps d’execució, tants receptors d’events com eixos tingui el robot, més un per la pinça, i 3 per als moviments en eixos cartesians (X,Y,Z). Aquests receptors són de la classe AxisActuator. 5.4.2.4.1.2. Receptors del programa A part dels receptors d’events que es creen al connectar-se al robot per a cadascun dels seus eixos i la pinça, se’n creen d’altres per tal de fer possible la realització de tasques dins el programa des del joystick, com per exemple, canviar de càmera, canviar de vista en el model 3D, utilitzar el panell de posicions conegudes, etc. Cadascun d’aquests receptors d’events serà explicat en la secció del component que el crea, és a dir, del panell de càmeres, del panell del model 3D, etc. 85 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 5.4.3. Mòdul 3D 5.4.3.1. Estandarització Mitjançant la parametrització de la interfície 3D es dóna la possibilitat de simular altres robots (que no siguin l’ABB IRB 140) o, fins i tot, crear un servidor que en permeti el control, amb relativa facilitat. Només cal disposar del model 3D en arxius WaveFront OBJ (la gran majoria de formats són convertibles a aquest format), així com de la posició relativa de les articulacions en el model respecte la posició 0 (0,0,0). Una petita explicació de com utilitzar un model diferent es pot trobar a l’annex IX. 86 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 5.4.3.2. Generació del model Aquesta parametrització s’instrumentalitza de la manera següent: El client no disposa dels arxius OBJ per a la creació del seu entorn 3D, sinó que són descarregats en temps d’execució des d’un servidor lligat al servidor robot. Aquests arxius, es carreguen mitjançant un carregador (loader) integrat en el paquet Java 3D. El carregador transforma els arxius .obj en objectes Java que Java 3D ja pot representar. Figura 38. Seqüència de generació del model 3D 1.- Pregunta Servidor Central Client 5.- Generació món Java 3D a partir dels arxius OBJ 2.-Resposta (IP servidor model 3D) 3.-Pregunta Model 3D 4.-Descàrrega arxius OBJ Servidor del Model 3D Arxius OBJ Un cop s’ha descarregat els arxius des del servidor, el client carrega el model utilitzant un carregador específic per a arxius .obj . Aquest carregador passa l’arxiu .obj a objectes Java 3D, representables llavors gràficament per Java 3D. 87 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 5.4.4. Mòdul de les Càmeres Per tal de rebre la imatge de les càmeres, s’ha hagut de superar la qüestió de l’autenticació. Les càmeres requereixen, per seguretat, d’una autenticació prèvia a l’obtenció d’imatge, que cal que es realitzi de forma transparent a l’usuari. Això també té implicacions en el terreny del desenvolupament Java, ja que la necessitat que té el programa client d’autenticar-se sobre un lloc extern a l’ordinador sobre el que està corrent implica la impossibilitat d’utilitzar el que es coneix com a applet, una de les opcions pensades en primera instància per al projecte. Un applet és un programa que corre en el context d’un altre programa, generalment un navegador. El nom prové de l’anglès application –let, com a diminutiu, ja que es tracta d’una aplicació amb una funcionalitat reduïda. La reducció de funcionalitat implica necessàriament un control superior sobre el programa per part del programa hoste (el navegador). En el nostre cas, li impediria autenticar-se sobre un lloc extern (el servidor web de la càmera). Per tant, la solució utilitzada finalment és una aplicació Java completa, descarregada a la màquina client mitjançant Java Web Start. 5.4.4.1. Autenticació En primer lloc, s’ha creat un compte de convidat a cada càmera per tal que, en entrar l’usuari, no disposi de drets d’administració Figura 39. Transmissió de les dades de les càmeres i autenticació sobre la càmera, que li permetrien canviar 2. Transmissió Client paràmetres Servidor Central 1. Transmissió arbitràriament. Servidor Robot En segon lloc, els paràmetres necessaris per Dades de les càmeres accedir a la càmera (la URL, el nom d’usuari i la 3. Autenticació contrasenya), així com Càmera Càmera 88 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR d’altres no necessaris per accedir-hi però útils per al nostre programa( el nom de la càmera, i la posició tridimensional respecte la base del robot); són enviats al client de forma transparent a l’usuari, i emprats per autenticar-se també transparentment. Aquesta qüestió ja l’hem explicat anteriorment, en l’apartat de Dades del Robot Una altra qüestió que s’ha hagut de resoldre, ha sigut la de com obtenir la imatge de les càmeres sense retards o amb pocs retards. Una primera aproximació va ser implementant una petita classe de Java que anava demanant la imatge completa de les càmeres i després la representava. Aquesta solució té l’inconvenient que obtenim un refresc bastant dolent. Una segona aproximació, encara millorable, però més útil que l’anterior, ha estat la utilització de JDIC. Aquest component permet fer un embedding d’un navegador com Internet Explorer o Mozilla dins d’un component Swing de Java, és a dir, que permet tenir, dins de Java, la funcionalitat d’un navegador com l’Internet Explorer. En primer terme, s’inicialitza el navegador Figura 40. Càmeres: Solució final Aplicació Java Component JDIC dins la finestra Java. Després, fem que carregui el una navegador pàgina Internet Explorer o Mozilla Applet o ActiveX de la Càmera on apareixen les càmeres. En realitat es tracta dels visualitzadors per defecte que tenen cadascuna de les Màquina Local càmeres en el seu servidor web, sigui un applet de Java o un component ActiveX. Mitjançant aquesta forma, se soluciona el problema de refresc per una banda, i per una altra, tenim la possibilitat d’utilitzar el nostre sistema en més càmeres, ja que totes les càmeres IP actuals funcionen a traves de Web. Per tant, podríem visualitzar qualsevol càmera IP del mercat independentment de qui en sigui el fabricant. 89 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 5.4.5. Interfície Gràfica (GUI) 5.4.5.1. General Figura 41. GUI Tenint en compte que el sistema operatiu més utilitzat actualment a nivell usuari és Windows (no així en altres nivells, com el de desenvolupador (Linux / Unix), dissenyadors (Mac), o altres), no tindria sentit que el desenvolupament d’una aplicació destinada al públic en general tingués una interfície gràfica que es distanciés substancialment de la interfície de Windows. En tot cas, es tractaria d’un obstacle més a superar en la fase d’aprenentatge. En aquest projecte, doncs, s’ha intentat crear una interfície gràfica el més amigable possible per a l’usuari, començant per l’ús del paquet JGoodies Looks pel que fa al Look And Feel de Java. El Look And Feel és el terme utilitzat en Java per descriure, segons [5] , “l’aparença i comportament d’un conjunt complet de components d’un GUI”. 90 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR El paquet JGoodies Looks conté un Look And Feel molt similar al de Windows, com es pot apreciar en la figura 42, i que, per tant, rep a l’usuari de Windows en un entorn al que està més acostumat, i es desmarca de la imatge més convencional de Java, que, si bé té la mateixa funcionalitat, pot suposar una dificultat d’adaptació per a l’usuari novell. Figura 42. GUI: Abans i després 5.4.5.2. Swing Des d’un punt de vista més tècnic, cal destacar l’ús de Swing, un paquet destinat a la creació d’interfícies gràfiques inclòs en les distribucions actuals de Java. Es tracta del paquet més usat en la creació d’interfícies gràfiques en Java. Entre els avantatges que té aquest paquet, cal destacar que, al ser 100% Java, obtindrem un comportament uniforme en qualsevol plataforma en que l’utilitzem. Un altre avantatge és que permet l’ús de Look and Feels diferents a l’estàndard, que, com es pot veure en el punt anterior, representa un clar avantatge en pro de la no alienació de l’usuari. Un altre aspecte important a remarcar és la utilització de finestres mòbils dins la interfície gràfica, per oposició a l’ús de panells. La diferència entre ambdós rau en que les primeres es poden intercanviar lliurement de posició i tamany dins la interfície gràfica (fins i tot per l’usuari final), mentre que els segons són més difícils de canviar de posició (impossibles de canviar per l’usuari). Això és possible gràcies a les classes JDesktop i 91 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR JInternalFrame de Java, que permeten crear una espècie d’escriptori similar al de Windows com a fons de la interfície gràfica. 5.4.5.3. Panells 5.4.5.3.1. Panell de control L’usuari té en la finestra de control la majoria d’elements que li permeten la interacció a nivell d’entrada amb el robot. Per a cada articulació del robot, els eixos cartesians XYZ i la pinça, se li presenta a l’usuari una sèrie de botons i altres controls destinats a donar-li control total sobre l’articulació o eix al que representen. Figura 43. Panell de control Per una banda, veiem una barra que indica en quina posició es troba l’eix en qüestió dins del seu recorregut. També podem observar dos botons que permeten un desplaçament determinat mitjançant el mouse. Aquests botons s’il·luminen quan s’està enviant alguna demanda de moviment al servidor per tal que l’usuari pugui saber si n’està enviant o no; cas que es pot donar fàcilment si l’usuari no està familiaritzat amb el joystick i la seva sensibilitat. 92 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR Sota aquests controls, podem veure un selector que ens permet triar Figura 44. Botons: Sense enviar / Enviant demandes de moviment al servidor quin generador d’events (quin eix del joystick, per exemple), està lligat a aquest eix o articulació. Quan no tinguem el control sobre el robot perquè el tingui un altre usuari, el panell de control ens apareixerà deshabilitat, de manera que no puguem moure el robot. Figura 45. Panell de control deshabilitat 5.4.5.3.1.1. Receptors d’events d’aquest panell Aquest panell crea els receptors d’events lligats al robot exclusivament, és a dir, aquells que impliquen moviment en el robot. Es tracta de receptors d’events de la classe AxisActuator, cadascun d’ells lligats a un eix o articulació del robot. Els noms d’aquests receptors vénen donats per les dades del robot que ha rebut el client, és a dir, que cada robot té els seus noms d’articulacions i aquests noms són els que apareixen en el panell de control. 93 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR Aquest panell també crea un receptor d’events que intercanvia l’assignació de tres de les articulacions del robot a les altres tres, de manera que, mitjançant un joystick amb tres graus de llibertat podem moure un robot amb sis graus de llibertat només polsant un dels seus botons. D’aquesta manera, la interacció utilitzant només el joystick es torna molt fluïda. 5.4.5.3.2. Panell del model 3D En el panell del model Figura 46. Panell del model 3D 3D, l’usuari pot observar en temps real l’estat del robot, i veure’l en una representació tridimensional, sempre més clara que no pas en expressions numèriques. El panell del model 3D ofereix a l’usuari diverses formes d’interacció. La principal és el canvi de vista mitjançant vistes predeterminades. Això es duu a terme mitjançant els botons o bé el selector. A part de les vistes tradicionals com poden ser les laterals, superior, frontal, etc, s’ofereix la possibilitat de posicionar la vista del model 3D en la mateixa posició que la d’alguna de les càmeres. Això és possible ja que s’han rebut les dades de les càmeres (que inclouen la seva posició relativa al robot, així com el punt al que estan enfocant). Figura 47. Moviments de la vista en el model 3D Botó Moviment de la vista Esquerre Dret Central Reorientació Translació Zoom Per altra banda, també pot canviar de vista fent clic sobre la imatge del model i movent el mouse. Depenent de quin botó del mouse s’utilitzi, es produeix un canvi de vista o un altre. La figura 47 ens mostra quina 94 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR funció fa cada botó del mouse. En cas que l’usuari vulgui retornar ràpidament a la vista que tenia seleccionada i que ha modificat utilitzant el mouse, ho pot fer utilitzant el botó “Reinicialitza vista”. 5.4.5.3.2.1. Receptors d’events d’aquest panell Per altra banda, la interacció amb aquest component pot ser realitzada mitjançant el joystick, ja que aquest panell crea dos receptors d’events, un per a cada botó del panell (Vista següent i vista anterior). 5.4.5.3.3. Panell de les càmeres El funcionament del panell de les càmeres és molt senzill. Aquest panell permet seleccionar entre les càmeres disponibles per al robot al qual estem connectats. Així doncs, la interactivitat per a l’usuari es limita a la selecció de la càmera o càmeres que desitja visualitzar. Això es duu a terme mitjançant els botons disponibles en aquest panell o el selector que està entre ells. Com que s’utilitza el control proveït per la càmera mateixa per veure les imatges, en algunes de les càmeres (les 2100G) es disposa de zoom digital. D’aquesta manera, l’usuari disposa d’una altra forma d’interactuar amb el programa, que pot ser molt útil en alguns casos. 95 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR Figura 48. Panell de les càmeres: zoom 5.4.5.3.3.1. Receptors d’events d’aquest panell També és possible canviar de càmera des del joystick, ja que aquest panell crea 2 receptors d’events, un per a cada botó de canvi de càmera (Càmera següent i Càmera anterior.) 96 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 5.4.5.3.4. Panell de posicions conegudes El panell de posicions conegudes ens permet emmagatzemar posicions del robot per tal que tornar a col·locar el robot en aquella posició sigui molt més senzill. Es tracta d’emmagatzemar la posició de cadascun dels eixos en un moment determinat. Mitjançant aquestes dades ja ens és Figura 49. Panell de posicions conegudes possible moure el robot a aquesta posició posteriorment amb un sol clic o amb un botó del joystick. Aquest panell ens mostra una taula amb els valors de cadascuna de les articulacions per a cadascuna de les posicions emmagatzemades. En clicar en una de les files de la taula, es selecciona la posició d’aquesta fila, i és aleshores quan ja podem, en primer terme, fer un clic a “Veure en 3D” per tal que se’ns mostri momentàniament aquesta posició del robot i s’activi el botó “Anar a”, que és el que ens permet moure el robot a aquesta posició. Per altra banda, quan volem emmagatzemar la posició a la que hem col·locat el robot, només cal que cliquem “Guardar actual” i directament s’inclou a la llista. 5.4.5.3.4.1. Receptors d’events d’aquest panell Aquestes mateixes accions poden realitzar-se des del joystick, ja que aquest panell crea quatre receptors d’events. - Veure - anar a posició - Guardar posició - Següent posició - Posició anterior Veure - Anar a posició: En un primer clic ens mostra la posició seleccionada en el panell del model 3D, i en un segon clic, genera la demanda de moviment per moure el robot a aquesta posició. 97 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR Guardar posició: Emmagatzema la posició actual del robot en l’últim lloc de la taula. Següent posició – Posició anterior: iteren sobre la taula de posicions, canviant la posició seleccionada. 5.4.5.3.5. Consola Aquest permet directes panell enviar (raw) ens Figura 50. Panell de posicions conegudes comandes a la controladora. Les comandes cal enviar-les utilitzant el llenguatge d’interacció per sockets entre el servidor robot i la controladora, definit anteriorment. Es tracta, doncs, d’una eina més aviat de debugging i/o d’ús avançat que no pas una eina destinada a la utilització per part de l’usuari mitjà. No obstant això, pot ser útil en alguns casos, sobretot si s’està familiaritzat amb aquest llenguatge d’interacció. 98 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 5.4.5.3.6. Panell d’estat de la connexió Figura 51. Panell de la connexió en diferents estats Aquest panell mostra a l’usuari l’estat de la connexió tant amb el servidor central com amb el servidor robot. És interessant tenir aquesta indicació, sobretot en casos en que es pugui donar una desconnexió per sobrecàrrega de la xarxa o altres causes alienes a l’operació que deixin algun dels servidors desconnectats del client. D’aquesta manera, l’usuari sap, en tot moment, si està connectat al servidor i pot actuar en conseqüència. Quan ja hi ha algun usuari controlant el robot i un segon usuari es connecta, aquest obté l’estat de visitat, és a dir, que pot veure tot el que està passant però no pot moure el robot. 5.5. Comunicacions XMLRPC Les comunicacions entre el client i els servidors i entre els servidors es duen a terme sobre XMLRPC. Els servidors (robot i central) obren un servidor XMLRPC cadascun , el client disposa de dos clients XMLRPC diferents (un per a cada servidor), i els servidors disposen d’un client XMLRPC cadascun. Cada tipus de programa disposa d’un servidor i/o client XMLRPC diferents dels de la resta de programes. Tots aquests servidors i clients s’estructuren tal com es pot veure en la figura 52. 99 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR Figura 52. Servidors i clients XMLRPC 100 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR El client té un ClientXmlrpcLite per connectar-se amb el servidor central i un ClientXmlrpc per connectar-se al servidor robot. Pel que fa als servidors, cal notar que la classe que actua com a servidor XMLRPC és la classe WebServer, que no està present al diagrama. Aquesta classe en carrega una altra on hi ha els procediments remots. Aquestes són les classes que es mostren en el diagrama. El servidor central disposa d’un objecte de la classe CentralRPCs per a respondre a les crides remotes efectuades des dels clients i servidors robot. També disposa d’un ClientXmlrpcLite per tal de demanar les dades dels servidors robot. Pel que fa al servidor robot, disposa d’un objecte de la classe RobotRPCs per atendre les crides remotes dels clients i del servidor central, i d’un client de la classe RobotClientXmlrpc per a registrar-se amb el servidor central. 101 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 5.6. Desplegament sobre Web El desplegament final sobre Web s’ha realitzat sobre un entorn de desenvolupament, és a dir, que caldria desplegar-lo encara sobre un servidor dedicat en comptes de sobre una màquina comú. En la figura següent es pot veure la distribució, en un cas real, dels diferents elements que ja s’han explicat anteriorment en altres apartats: Figura 53. Solució final Client Servidor Navegador Servidor Web (Apache) 1 4 2 3 Arxiu HTML Arxiu JNLP Java Web Start 5 6 Arxius JAR RobotControl (Client) 8 Arxius OBJ Dades dels robots 7 RobotControl Central Server Dades dels robots BD MySQL 8 RobotControl Robot Server (Java) 8 Dades del robot RobotControl Robot Server (Visual Basic) Interlink Càmeres Càmeres Controladora 102 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 6. AVALUACIÓ 103 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 104 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 6.1. Anàlisi de la Planificació 6.1.1. Planificació inicial Els gràfics següents mostren la planificació inicial del projecte. Figura 54. Planificació inicial Juliol - Setembre 25/07/2006 - 26/08/2006 Disseny del sistema 01/08/2006 25/07/2006 26/08/2006 03/07/2006 Inici del projecte 01/08/2006 01/09/2006 03/07/2006 30/09/2006 26/08/2006 - 30/09/2006 Implementació (1) 01/09/2006 26/08/2006 30/09/2006 03/07/2006 - 26/07/2006 Recerca d'informació 03/07/2006 25/07/2006 Figura 55. Planificació inicial Octubre - Gener 14/11/2006 Inici de la documentació 08/01/2007 Finalització de la documentació 14/11/2006 - 08/01/2007 Documentació 01/12/2006 01/01/2007 01/12/2006 - 22/12/2006 Proves del sistema 01/12/2006 01/11/2006 22/12/2006 01/12/2006 01/01/2007 01/10/2006 16/01/2007 01/12/2006 - 13/12/2006 Impementació (2) 01/11/2006 01/12/2006 01/10/2006 14/01/2007 11/12/2006 09/01/2007 Entrega documentació 105 16/01/2007 Presentació del projecte SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR La durada total de 6 mesos i mig estava formada per 5 tasques generals de diferent durada: - Recerca d’informació (72 h.) - Disseny del sistema (88 h.) - Implementació (262h.) - Prova del sistema (28 h.) - Documentació (98 h.) Aquestes tasques generals es van anar concretant a mesura que avançava el projecte. En un primer moment ja, la recerca d’informació es separa en - Recerca d’informació del robot - Recerca d’informació de les càmeres - Recerca d’informació del joystick - Recerca d’informació sobre Java o Comunicacions Per altra banda, el disseny, podem veure’l com els següents apartats: - Disseny general del sistema - Disseny dels elements o Servidor central o Servidor robot o Client - Disseny de les comunicacions Al seu torn, la implementació també es desglossa en subtasques - Implementació del servidor central - Implementació del servidor robot o Part Java o Part de la controladora (RAPID) o Part Visual Basic - Implementació del client - Desplegament sobre Web (Java Web Start) 106 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR Algunes d’aquestes tasques han resultat ser més fàcils o més difícils del que semblaven en primer terme. És per això que la planificació definitiva ha resultat força diferent de la inicial. 6.1.2. Planificació definitiva 6.1.2.1. Incidències Hi ha hagut algunes qüestions que han fet variar la planificació inicial. Per una banda, el fet que el software de control del robot des d’un PC no estigués disponible fins a mitjans de novembre. Aquest sol fet, ha conformat problemes a l’hora de crear un model d’interacció entre client i servidor robot, ja que es desconeixia la forma d’interacció final que s’implementaria, i, per tant, aquest model s’ha hagut de dissenyar sobre la marxa en un temps més reduït. No obstant aquesta limitació temporal, cal dir que el model definitiu obtingut és força adequat a les necessitats del projecte. En canvi, aquest fet pot haver provocat que en altres apartats del projecte no s’hagi pogut dedicar tant temps en la fase final com hauria sigut desitjable; com a conseqüència d’haver-se de centrar en la creació i implementació del model de moviment. Serien exemples d’aquest fet, la implementació de la recepció de les imatges de les càmeres des del client o la inclusió d’altres modalitats de moviment com serien la reorientació o el moviment en eixos cartesians des de punts diferents del robot com l’element terminal. Aquests dos últims casos ha quedat per implementar definitivament. Per altra banda, dificultats amb Java Web Start en conjunció amb altres paquets (per exemple JDIC o Java 3D) que necessitaven interactuar amb el sistema a través de software natiu, han suposat també un endarreriment respecte la planificació inicial respecte la implementació bàsicament. 107 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 6.1.2.2. Planificació final A causa de les incidències descrites anteriorment i d’altres de menors, la planificació final ha variat. La següent taula ens mostra les magnituds dels canvis en hores. Figura 56. Planificació inicial – final i variacions Tasca Previsió Real Variació Recerca d'informació Disseny Implementació Proves Documentació 72 68 -4 88 262 28 98 96 322 48 106 8 60 20 8 TOTAL 548 640 92 Veiem que les tasques que han sofert una major variació són concretament la d’implementació i la de proves del sistema, degut en ambdós casos als motius mencionats anteriorment. Pel que fa a la documentació cal apuntar que el càlcul previst era quelcom optimista. Cal notar que en la taula anterior no s’inclouen hores destinades a la creació de la presentació, tràmits i gestions que sí que s’inclouen en l’apartat de costos. 108 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 6.2. Avaluació dels objectius Repassant els objectius podem observar que n’hi ha que han sigut possibles d’acomplir, mentre que alguns d’altres s’han semi-acomplert. Tornem a veure’ls: L’objectiu general del projecte és el disseny i la implementació d’un sistema de teleoperació d’un robot manipulador basat en Internet i que utilitzi una interfície multimodal. Aquest objectiu general es desglossa en altres de més específics. Els objectius específics els podríem definir tal com segueix: 1. Aconseguir operar el robot remotament mitjançant com a interfícies d’entrada un mouse i un joystick. 2. Aconseguir que el sistema sigui reutilitzable: 2.1. Implementar un sistema escalable, on sigui possible la integració no costosa o poc costosa d’altres robots, especialment braços manipuladors; però també dispositius mòbils, simuladors,etc. 2.2. Estandarització de les comunicacions, és a dir, que les comunicacions entre els elements del sistema es duguin a terme mitjançant algun tipus de protocol. 2.3. Estructuració del sistema en parts atòmiques.(Components) 3. Creació d’un sistema accessible: 3.1. Creació d’una interfície amigable per a l’usuari, tant per a l’avançat com per al novell. 3.2. Integració del sistema en l’entorn web. 3.3. Creació d’un sistema utilitzable pel nombre més gran possible d’usuaris. 4. Aconseguir un sistema segur. Validar els usuaris que l’utilitzin i registrar la seva activitat. 5. Utilització de càmeres IP i un entorn 3D com a feedback del robot, o d’altres que permetin una correcta comprensió del món on es mou el robot per part de l’usuari. 6. Utilització de tecnologies i eines de lliure distribució. 109 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR L’objectiu 1, que era el més important, s’ha acomplert totalment. Tenim control remot del robot mitjançant tant el joystick, com el mouse, com el teclat. A més, es tracta, en el cas del joystick, d’un control proporcional. L’objectiu 2 es desglossa en 3 subobjectius: Pel que fa a l’objectiu 2.1 podem dir que també s’ha assolit, ja que, mitjançant el servidor central i el mateix servidor robot o una modificació d’aquest últim, seríem capaços de posar en marxa un altre robot que s’integrés en el sistema. Pel que fa a l’objectiu 2.2, com hem pogut veure en els apartats d’implementació de les comunicacions XMLRPC i el d’interacció per sockets, les comunicacions segueixen un protocol propi però estandaritzat, de manera que aquest objectiu s’ha acomplert. Pel que fa a l’objectiu 2.3, l’estructuració en parts atòmiques s’ha dut a terme a nivell programa per una banda i a nivell objecte per una altra. A nivell programa significa que cadascun dels programes desenvolupats (el client i els dos servidors) conserven independència els uns dels altres sempre que es mantingui la mateixa implementació de les comunicacions, en aquest aspecte, aquest objectiu va força lligat a l’anterior (2.2). A aquest nivell, s’ha assolit estructuració en parts atòmiques. A nivell objecte, en canvi, hi ha certs casos en que aquesta independència no és tal, com en els casos de diverses classes que depenen de la classe Engine de cada programa (la classe principal de cada programa). Aquest fet no fa sinó denotar certa jerarquia entre les classes que formen els programes, però alhora pot comprometre la independència de les classes jeràrquicament inferiors; molt dependents de les superiors, en alguns casos. Podem resoldre, doncs, que, majoritàriament, l’objectiu 2 s’ha assolit. L’objectiu 3 es desglossa, també, en 3 subobjectius: L’objectiu 3.1, la creació d’una interfície amigable per a l’usuari, s’ha intentat acomplir sempre tenint en compte el temps disponible per a aquesta tasca. Així doncs, i a falta d’una valoració extensiva per part d’una gran quantitat d’usuaris, podem valorar la consecució d’aquest objectiu com a realitzada, ja que s’ha utilitzat aquest software amb diversos usuaris de diferents nivells amb resultats força bons després d’una breu introducció. Cal dir, també, que al tractar-se d’un software que implica moviment (del braç mecànic) tendeix a ser més intuïtiu per se, a diferència d’altres tipus de software que tinguin un objectiu més abstracte. 110 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR L’objectiu 3.2 era la integració en l’entorn web. La consecució d’aquest objectiu ha estat possible gràcies a l’ús de Java Web Start. Podem dir positivament que la integració és completa, ja que, en un client on tan sols es disposi de connexió a Internet i d’una màquina virtual Java instal·lada es pot utilitzar el nostre programa, fet que demostra la integració que s’ha assolit. L’objectiu 3.3, la creació d’un sistema utilitzable pel nombre més gran possible d’usuaris està força lligat al punt anterior en el nostre cas, ja que el fet de necessitar només els requisits enunciats anteriorment li dóna una disponibilitat molt gran. L’objectiu 4 és l’objectiu que s’ha acomplert en menor mesura. La necessitat d’implementar altres qüestions més primordials ha significat deixar de banda aquesta qüestió sense acabar del tot. No obstant això, una primera capa d’autenticació sí que s’ha implementat, de manera que el client supleix un nom d’usuari i una contrasenya al servidor central que l’autentica i després el sistema funciona amb identificadors de sessió. El que queda per implementar és, per una banda, el requeriment a l’usuari del seu nom i la seva contrasenya, de manera que no n’utilitzi una d’estàndard, i per una altra, caldria encriptar la comunicació de noms d’usuari i contrasenya, que ara es realitza sense encriptar. L’objectiu 5 s’ha assolit sense reserves. Tant el model tridimensional del robot com el retorn numèric d’estat del robot funcionen correctament i mostren a l’usuari l’estat del robot. Per altra banda, la imatge de càmera també s’ha aconseguit portar fins a l’usuari, fent que aquest disposi d’informació suficient per a continuar la teleoperació del robot. L’objectiu 6 s’ha intentat realitzar sempre que fos possible, però en alguns casos no ho ha estat. Tenim, per una banda, el software de desenvolupament amb Java (Eclipse), els paquets utilitzats sobre Java (XMLRPC, JXInput, Java 3D i JDIC) i el servidor web i servidor de base de dades inclòs en el servidor XAMPP (Apache i MySQL) que són de lliure distribució. Però per altra banda, la necessitat d’utilitzar software específic del robot (WebWare SDK) no ens ha deixat més remei que utilitzar software no lliure (Microsoft Visual Basic). També s’ha utilitzat Microsoft Office que no és lliure. Així doncs, aquest objectiu s’ha acomplert en els casos en que era possible, excepte en l’ús de Microsoft Office. 111 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 6.3. Valoració de les tecnologies utilitzades Pel que fa a les tecnologies utilitzades, cal destacar, segons el meu parer, l’ús de Java Web Start com a molt positiu, ja que dóna a l’usuari final una comoditat inigualable amb instal·lacions tradicionals. Cal fer notar, de tota manera, que en alguns casos ha sigut un escull a salvar en tant que la seva implementació té força limitacions que cal tenir en compte. Altres tecnologies que considero encertades d’usar són, Java en general, i els paquets Java 3D, JXInput, JDIC en particular, tot i que, com ja s’ha dit anteriorment, alguns d’aquests han portat força maldecaps en conjunció amb Java Web Start, pel seu ús de llibreries natives. També inclouríem en aquest grup XMLRPC, que ha simplificat notablement l’arquitectura de crides a procediments remots. En general, doncs, les tecnologies utilitzades han estat força encertades. De tractar-se d’un projecte més gran potser hauríem implementat nosaltres mateixos alguna de les parts en les que s’ha utilitzat un paquet extern. 6.4. Cost En aquest apartat es fa un recull dels costos que ha tingut aquest projecte. Es fa una valoració separada entre costos nominals (el que val realment cada element) i els costos reals (el que ha costat per a aquest projecte), ja que, en molts casos es tracta d’elements utilitzats no només en aquest projecte, sinó en d’altres, i que, per tant, caldria tenir-los en compte des d’una perspectiva més global. El cas més obvi seria el del robot, que seria impensable intentar amortitzar-lo en un sol projecte quan la seva vida útil i les seves possibilitats permeten un ús molt major. Tot seguit s’adjunta una taula amb els costos del projecte: Figura 57. Costos Concepte Hardware Robot Joystick Càmera: D-Link DCS 900 Càmera: D-Link DCS 2100 Quantitat 1 1 1 2 Cost nominal Cost real 30000 60 109 534 112 0 60 0 0 Observacions Ja estava present Ja estava present Ja estava present SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR Software WebWare SDK Eclipse 1 1 5000 0 5000 0 RobotStudio Online 1 0 0 Microsoft Visual Basic 6.0 Microsoft Office 2003 1 1 550 100 0 0 3DStudio Max 1 2666 0 XAMPP 1 0 0 20h a la setmana (28 setmanes) 560 14000 14000 25€/h, incloent assegurança,etc. Hores extra: (13 de Novembre-15 de Gener, 10h extra per setmana) 90 4050 4050 45€/h Total hores 650 18050 18050 57069 23110 És open source Està inclòs en el preu del robot Està llicenciat al laboratori Està llicenciat al laboratori Disponible en un lloc aliè al laboratori És open source Personal(Hores) TOTAL Podem veure, doncs, com la diferència entre el cost nominal i el real és força elevada com a conseqüència de la no inclusió del preu del robot en el cost total. Així doncs, el cost total del projecte seria de 23110€ sense tenir en compte l’amortització dels elements ja presents al laboratori i de 57069€ amortitzant completament aquests elements. Ja que la finalitat d’aquest software no és de ser comercialitzat, no es fa una valoració de les possibilitats d’explotació, ni dels preus ni del volum de vendes necessàries per a la seva amortització, ja que la seva distribució serà gratuïta. 113 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 6.5. Logotip i marca En aquest apartat ens referirem a un dels factors que no se solen tenir en compte a l’hora de crear una aplicació però que tenen una importància capital en molts casos per a l’èxit de la mateixa. Aquest factor és el de la creació d’una imatge per al programa. La imatge de l’aplicació consta, a part de l’interfície gràfica que ja s’ha discutit anteriorment, d’un logotip i d’una marca. S’ha creat, doncs, un logotip i una marca per tal que l’aplicació s’assembli més a un producte comercial o comercialitzable. D’aquesta manera, l’usuari la percep com una aplicació estàndard, en consonància amb la resta d’aplicacions que pugui tenir en el seu ordinador. El nom triat per la marca és RobotControl, ja que reflecteix clarament l’objectiu del projecte, alhora que és breu i es pot entendre en diversos idiomes fàcilment. Com a logotip, s’ha realitzat el que es pot veure en la figura 56, que combina la marca amb una imatge retocada del robot ABB IRB 140, el que s’ha utilitzat en el projecte. Figura 58. Logotip de l’aplicació 114 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR La terminologia utilitzada per referir-se a cada part del projecte (client, servidor central i servidor robot) és la següent: Client: RobotControl Servidor central: RobotControl Central Server Servidor robot: RobotControl Robot Server El client no té cap apel·latiu ja que és la part accessible a l’usuari i resulta molt més fàcil referir-se a RobotControl que no a RobotControl Client, sobre tot des de l’òptica de l’usuari novell o inexpert, que podria no estar familiaritzat amb la terminologia client servidor. 115 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 116 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 7. CONCLUSIONS 117 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 118 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 7.1. Conclusions generals Com a primera conclusió, podem veure, a través de l’avaluació dels objectius realitzada en el capítol anterior, que la creació i implementació d’un sistema com el proposat és possible. S’ha desenvolupat un sistema per a la teleoperació d’un robot manipulador amb èxit. Podem veure, també a través de l’avaluació dels objectius, que potser alguns dels objectius eren quelcom abstractes, de manera que poden ser avaluats més subjectivament que d’altres que podrien ser més concrets. Aquest fet també significa que un projecte amb els mateixos objectius podria ser més complet, però en vistes de la laboriositat que comporta un projecte tal, ja estaríem parlant d’un projecte amb més recursos, no físics, sinó de treball, és a dir, o més personal o el mateix durant un període més llarg de temps. En resum, que donat el temps i recursos personals (una sola persona) de què es disposava el resultat és realment bo. Les possibles millores s’enumeren posteriorment en un altre apartat. Una anàlisi detallada d’algunes de les qüestions que fan diferent aquest projecte d’altres similars ens portaria per una banda a la utilització d’un joystick com a interfície d’entrada, i per una altra, a l’intent que aquest software tingui una utilització el més fàcil possible des del punt de vista de l’usuari. Pel que fa a l’ús d’un joystick com a interfície d’entrada, cal fer notar que l’entrada és proporcional, és a dir, a major angle d’inclinació del joystick, el robot es mou més ràpid. També cal observar que és possible realitzar moviments conjunts en dues articulacions del robot quan movem dos eixos del joystick, una qüestió que ens pot semblar del tot normal, però que requereix una implementació força diferent de la que podríem pensar en un primer moment. Pel que fa a la creació d’un software que sigui fàcil d’utilitzar, destaca, com ja s’ha dit en altres capítols, l’ús de Java Web Start, que permet a l’usuari el no haver-se de preocupar de la instal·lació del programa. Per altra banda, i seguint en aquest concepte de programa fàcil d’utilitzar, un factor important és la interfície gràfica. La interfície gràfica s’ha intentat cuidar en el major grau possible. 119 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 7.2. Conclusions personals Aquest projecte m’ha permès endinsar-me profundament en el camp de la robòtica, un camp apassionant des del meu punt de vista. Ha sigut un projecte molt enriquidor, tant des del punt de vista d’aprenentatge tècnic com pel que fa pròpiament a l’organització i en general a la realització de projectes. He pogut aprendre força d’aspectes relacionats amb la robòtica i la informàtica en general que fins ara no coneixia, en especial sobre Java i RAPID, les seves possibilitats i tot allò relacionat amb el desenvolupament en aquests llenguatges. Des de la meva òptica, s’ha tractat d’un projecte que ha abastat uns quants dels diferents subcamps de la informàtica i la robòtica; treballant amb tecnologies molt diverses, algunes de les quals fins i tot desconeixia o en tenia un coneixement limitat. Exemples d’aquestes tecnologies serien la programació distribuïda o treball amb entorns 3D. Això, a nivell personal, no fa sinó aportar-me els coneixements necessaris per a afrontar reptes similars o més grans en el futur, siguin en el camp de la informàtica i la robòtica o en altres en els que es parteixi d’un model com el de projecte per tal de realitzar les tasques necessàries en una organització, segons el meu parer, el model més extès dins l’àmbit laboral. Així doncs, valoro de forma molt positiva la realització d’aquest projecte, no només des del punt de vista acadèmic sinó també des d’un punt de vista personal. 7.3. Possibles Millores Existeixen altres projectes similars a aquest (com per exemple [6]) encara que no iguals, de manera que amb algunes de les característiques d’aquests altres projectes ja podem divisar possibles millores o ampliacions que no s’han pogut dur a terme en un projecte de final de carrera que estava molt acotat temporalment. Diferenciarem, en aquest apartat, entre millores i ampliacions, entenent com a millores qualsevol canvi que es podria realitzar sobre la mateixa base i amb una petita contribució per tal de millorar el programa i que no li donaria funcionalitat nova, o la nova funcionalitat que li donaria seria reduïda. Per altra banda, les ampliacions es consideren, en aquest apartat, canvis que suposarien, en la majoria de casos un treball més extens i que repercutirien en noves funcionalitats. 120 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 7.3.1. Millores - Eliminació de la capa nativa en l’obtenció de les imatges de les càmeres, obtenció directa de les imatges sobre Java. - Eliminació de la capa nativa en el reconeixement del joystick i la captura de la seva posició. - Disminució de l’ample de banda necessari en les connexions: Reduint i optimitzant cadascuna de les transaccions. Canviant algunes de les transaccions per tal que es faci amb menys freqüència. - Millora del sistema de sessions Diferenciació efectiva de diferents tipus d’usuaris cadascun amb els seus permisos. Connexió al sistema d’usuaris de la FiB o algun altre servei similar 7.3.2. Ampliacions Algunes ampliacions possibles serien, en dificultat creixent: - Creació d’un sistema col·laboratiu Creació d’un xat en cada servidor robot, per tal que els usuaris que estiguin com a visitants i el que estigui controlant el robot es puguin comunicar. No seria gaire difícil, ja que, utilitzant la implementació client - servidor que ja està feta sobre XMLRPC seria realment ràpid. 121 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR Possibilitar la interacció en un mateix servidor robot de diversos usuaris al mateix temps. Caldria decidir com realitzar aquesta interacció sense que hi haguessin conflictes. Creació d’un espai amb diversos robots on cada usuari tingués el control d’un d’ells. Això suposaria una tasca molt més gran de supervisió de moviments. - Activar la funcionalitat Force Feedback del joystick i fer-la útil a la teleoperació. - Visió per computador Coneixement per part del sistema de l’estat del món mitjançant la visió per computador Autograsping. Mitjançant la capacitat mencionada anteriorment i el càlcul de la millor possibilitat que hi hauria (mitjançant la pinça de la que disposem) d’agafar l’objecte. - Inclusió de comandes de veu Per moure el robot tal com ja es fa. Combinant-ho amb visió per tal de poder fer comandes d’alt nivell de l’estil “agafa l’objecte 1”. Algunes d’aquestes ampliacions conformen una dificultat força gran, que potser no serien acceptables per a segons quin tipus de projecte. Tan sols són en aquesta secció a títol informatiu, per demostrar que les possibilitats d’un sistema similar ampliat són realment molt grans. 122 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 8. BIBLIOGRAFIA 123 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 124 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 8.1. Bibliografia General 8.1.1. Robot ABB IRB 140 [1] Manual de referencia de RAPID. ABB Automation Technologies AB, 2004 [2] Manual del producto (Robot articulado IRB140). ABB Automation Technologies AB, 2004 [3] Manual del operador. ABB Automation Technologies AB, 2004 [4] WebWare SDK Help v3.0, ABB Automation Technologies AB 8.1.2. Java [5] Java Look and Feel Design Guidelines, second edition. Sun Microsystems, Inc. 2001 8.2. Projectes [6] The UJI Online Robot: A Distributed Architecture for Pattern Recognition, Autonomous Grasping and Augmented Reality. Ph.D. Thesis. Raúl Marin Prades, 2002 [7] Entorn de programació de robots mòbils amb Java i leJos per Internet. Joan Oliva Janer, 2005 [8] Control i supervisió d’un sistema multirobot. Francesc Xavier Morales Pascual, 2006 [9] Laboratori obert de robòtica mòbil. Miquel Pratsevall Garcia, 2006 [10] Cooperative Robot Teleoperation through Virtual Reality Interfaces. Alexandre Monferrer, David Bonyuet. CIVE symposium sessions at IV 2002 125 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 8.3. Enllaços web 8.3.1. TeleRobòtica [11] http://ranier.oact.hq.nasa.gov/telerobotics_page/telerobotics.shtm [12] http://gsc11.cemif.univ-evry.fr:8080/Projets/ARITI/ [13] http://telerobot.mech.uwa.edu.au/ 8.3.2. Programació JAVA General [14] java.sun.com [15] java.net [16] java.com [17] javaalmanac.com [18] javaworld.com [19] mindprods.com/jgloss Pàgina oficial de Java Glossari de termes utilitzats en Java 8.3.3. Programació GUIs en JAVA [20] jgoodies.com [21] javootoo.l2fprod.com 8.3.4. Java 3D [22] j3d-webstart.dev.java.net [23] web3d.org 126 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR [24] j3d.org 8.3.5. XMLRPC [25] xmlrpc.com [26] ws.apache.org/xmlrpc/ 8.3.6. JDIC [27] jdic.dev.java.net/ 8.3.7. JXInput [28] hardcode.de/jxinput/ 8.3.8. Java Web Start [29] java.sun.com/products/javawebstart/ 127 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 128 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 9. ANNEXOS 129 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 130 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR ANNEX I : Manual de l’usuari de RobotControl En primer lloc, cal notar que molta de la funcionalitat de la interfície gràfica ja s’explica en l’subapartat Panells de l’apartat Implementació/Client/Interfície Gràfica. Així doncs, en aquest petit manual ens centrarem en els procediments a seguir. Si es vol més informació específica cal referir-se a aquest apartat. 1. Arrencar el programa - Connectar-se al servidor web pertinent (en la instal·lació actual 147.83.173.48) amb el navegador - Clicar al link per llançar l’aplicació (Launch RobotControl) - Acceptar les qüestions de seguretat - Un cop carregat el programa (pot tardar depenent de la connexió de que disposem), seleccionar el robot al que volem connectar-nos i clicar “Connectar amb el robot” - Ens apareixeran els panells de les càmeres, del model 3D, de control i de posicions conegudes. Figura 59. Arrencar el programa 131 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 2. Ús dels diferents panells Figura 60. Interfície gràfica Panell de control (Control de moviments) - Cadascuna de les barres de desplaçament representa una articulació o eix del robot. - Per moure el robot podem clicar en els botons + i – i se li enviarà una demanda de moviment al robot. Aquesta demanda de moviment serà per un nombre de graus determinat per la barra anomenada de desplaçament. - Si disposem de joystick també el podem utilitzar per moure el robot. En aquest cas, polsant el botó “Avançat” veurem quin eix del nostre joystick controla quina articulació del robot i podrem canviar les assignacions. - El quadre “Intercanviar” intercanvia aquestes assignacions, concretament de les 3 seleccionades a les altres 3. 132 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR Panell de posicions conegudes - Permet moure el robot a posicions definides prèviament. - El botó “Guardar actual” emmagatzema la posició actual per poder-nos-hi desplaçar posteriorment. - Per anar a una posició cal o Seleccionar-la o Polsar “Veure en 3D”, que ens mostrarà en el panell 3D la posició que hem seleccionat o Polsar “Anar a” que finalment mourà el robot a aquesta posició. Aquestes accions també es poden realitzar amb el joystick Panell del model 3D - Aquest panell ens mostra la posició en que es troba el robot en un moment donat. - Podem canviar la vista (el punt des d’on s’enfoca el robot en el model 3D) mitjançant els botons, el selector, polsant sobre la imatge i movent el mouse, o fins i tot amb el joystick. Panell de les càmeres - Ens mostren el robot a través de les càmeres que l’enfoquen. - Podem canviar de càmera mitjançant els botons o el selector. Panell de connexió - Ens mostra l’estat de la connexió amb el robot i el servidor central - Amb el servidor robot podem estar connectats, desconnectats o ser visitants. Aquest últim cas es dóna quan no tenim el control del robot, però si que podem visualitzar les càmeres i el model 3D. És deu a que ja hi ha algun altre usuari controlant el robot. - Amb el servidor central podem estar tan sols connectats o desconnectats Panell de prova de dispositius - Aquest panell ens permet provar els dispositius d’entrada que tinguem. 133 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 3. Requeriments del sistema El sistema requereix: - Java 1.5 - Windows XP (el sistema podria córrer sobre altres plataformes, però amb funcionalitat reduïda) 134 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR ANNEX II : Manual de l’administrador de RobotControl Llista d’inicialització del sistema Element Acció Observacions Controladora Clau del robot en mode automàtic Selector ON-OFF en ON Encendre XAMPP XAMPP XAMPP Start Apache Start MySQL Internet Explorer http://localhost Internet Explorer "Launch ... Visual Basic" VBInterlinkConnector VBInterlinkConnector Motors en On "Inicialitzar Robot" Internet Explorer Internet Explorer "Launch ... Central Server" "Launch ... Robot Server" Robot Server "Connectar amb el robot" esquerra del tot Pc 147.83.73.48 Botó ( I ) Problemes comuns: Programa Error Explicació VBInterlinkConnector "Dirección en El port que utilitza la part VB uso" del servidor robot ja està en ús 135 Solució Rebootar el PC (només el 147.83.173.48) SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 136 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR ANNEX III : Especificacions del robot ABB IRB 140 137 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 138 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR //PDF 139 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR //PDF 140 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR ANNEX IV : Especificacions de la controladora IRC5 141 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 142 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR //PDF 143 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR //PDF 144 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR ANNEX V : Especificacions de RobotWare 145 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 146 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR //PDF 147 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR //PDF 148 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR //PDF 149 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR //PDF 150 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR ANNEX VI : Especificacions de les càmeres 151 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 152 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR //PDF cam 900 153 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR //PDF cam 900 154 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR //PDF cam 2100 155 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR //PDF cam 2100 156 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR ANNEX VII : Especificacions del joystick Figura 61. Joystick Logitech Force 3D Pro Overview Master the skies with the Logitech® Force™ 3D Pro. An improved force feedback mechanism responds more realistically to games that support force feedback, and provides great control even in those that don't. The 12 programmable buttons, precision throttle, 8-way rubber hat switch, and twist handle give you all the tools you need to maintain air superiority. The weighted base provides stability for enhanced control, and USB connectivity enables maximum flexibility and compatibility. Feel the force of weapons, collisions, and turbulance with incredible detail. The improved force feedback mechanism provides realistic forces in supporting games. Experience clean, precise control--even in games that don't support Force Feedback. Customize it! 12 programmable action buttons let you customize your settings, download game profiles, assign shift-button, and more. Fire shots in quick succession with the rapid-fire trigger. Quickly fire your weapons, select targets, and perform other functions using both hands. Keep your enemy in view with the 8-way rubberized hat switch. Enjoy precise rudder control with a twist of the wrist. Sculpted twist handle is designed for superior comfort and extended play. Scan the skies without moving your hand with the 8-way rubber hat switch. Make accurate maneuvers at speed with the high-precision throttle. 157 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR System Requirements Package Contents IBM® or compatible PC • Windows® 98, 2000, Me, XP • Force Feedback joystick • Pentium® processor or higher • Power supply • 64 MB RAM • Software CD • 20 MB available hard disc space • One-year limited warranty • User documentation • CD-ROM drive • USB Port Macintosh® • Mac® OS X v10.2.3 or later • USB Port 158 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR ANNEX VIII : Comparativa de tecnologies per a clients web Figura 62. Comparativa de diferents tecnologies per a clients web Factors Applets XML/HTMLbased clients Java Web Start User interface Moderate to sophisticated Simple to moderate Moderate to sophisticated Offline support? No No Yes UI response Network independent Network dependent Network independent Interactivity Browser limited Browser/markup limited Open First use response Minutes Seconds Minutes Subsequent use Minutes response Seconds Seconds Bandwidth usage Variable Fixed Flexible Lightweight client support Limited Open Limited Web-client factor comparison Font: http://www.javaworld.com/javaworld/jw-07-2001/jw-0706-webstart.html Com es pot comprovar en la taula superior, l’ús de Java Web Start és la millor opció en el nostre cas. 159 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 160 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR ANNEX IX : Configuració d’un robot diferent a l’utilitzat La utilització d’un robot diferent a l’ABB IRB 140 és possible, sempre i quan es disposi de les suficients dades del mateix, o, en defecte d’aquestes, que s’estigui disposat a perdre certa funcionalitat (model 3D, per exemple). En concret: - Per a cada articulació del robot: o Posició màxima de l’articulació (en graus o la mesura de distància emprada en cada cas) o Posició mínima de l’articulació (en graus o la mesura de distància emprada en cada cas) o Velocitat màxima o Posició x,y,z de l’articulació en el model 3D (innecessari si no es vol representar el model 3D) o Característiques de l’articulació - Arxius OBJ per a cada eix del robot. Hauran de ser col·locats en algun servidor web accessible des d’Internet. - Dades d’accés a les càmeres que es vulguin utilitzar amb el robot: o Username i password o URL on obtenir la imatge de la càmera 1. Configuració general Existeix en la distribució del servidor robot un arxiu anomenat abbirb140.properties que conté tots els paràmetres de configuració del robot. (se’n pot veure un exemple a l’apartat 3 d’aquest annex). Aquest fitxer està comentat de manera que sigui força fàcil la creació d’un nou arxiu per a un altre robot. L’arxiu també conté les dades referents a l’accés a les càmeres que permeten la visualització del robot. 161 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 2. Model 3D Pel que fa al model 3D, en primer lloc, cal disposar del model 3D del robot a reproduir en format OBJ. Aquests fitxers cal que siguin de la següent forma: i.obj on i és el número d’articulació precedent al braç del que l’arxiu conté la representació 3D, és a dir: 0.obj contindria la part del robot que no es mou (així com altres parts no mòbils de l’escena) 1.obj contindria el primer eix mòbil del robot ... Així fins a n+x arxius, on x seria el nombre d’elements que té la pinça (en el nostre cas 2) +1 (que seria el fitxer 0.obj ó el món estàtic). L’empresa ABB disposa de models dels seus robots en multitud de formats, que no inclouen el format OBJ. Per a convertir-lo s’ha utilitzat 3D Studio Max. En segon terme, cal posar en l’arxiu de configuració les dades referents al model 3D, que són: - La URL on es troben els fitxers OBJ (3D.ip, 3D.port) - Les posicions de les articulacions (jointi.posw) - Les característiques de les articulacions (jointi.car) car={max,min,vel,type,moveaxis,sense} - Un factor de correcció de les distàncies en el model 3D (3D.factor) Si totes les dades introduïdes són correctes i el model OBJ també, el nou model 3D funcionarà sense problemes. 162 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR 3. Exemple d’arxiu de configuració Exemple d’arxiu de configuració de servidor robot ! ! ! ! ! ! Arxiu de configuració del robot: ABB IRB 140 + càmares DSC900, DSC2100(2) (extensible-substituible) Author: Adrià Pujolàs Fons ! id única del servidor robot en el servidor central id=1 ! nom del robot name=ABB IRB 140 ! username i password utilitzats per l'autenticació en el servidor ! central username=ABBIRB140_1 password=ABBIRB140_1 ! dades de la controladora i el programa VB controller.ip="147.83.173.58" controller.mov.port=1025 controller.state.port=1026 controller.emergency.port=1027 vb.port=1030 ! port pel que funcionarà el servidor robot port=8078 ! on podem trobar el model 3D? 3D.ip=http://147.83.173.48/vrml/abbirb140/ 3D.port=80 ! correcció de la posició de les articulacions ! en el model 3D !(exemple: joint2.posx=70 i 3D.factor=0.001 implica ! que en el model,joint2.posx=0.07) 3D.factor=0.001 ! número d'articulacions del robot ! (cal tenir en compte que la pinça son 2 o més articulacions) jointCount=8 ! veure constants de Joint.java per a les variables ! type, moveaxis,sense ! ! ! ! ! ! ! ! ! ! ! public public public public static static static static final final final final int int int int ROTATION=20; TRANSLATION=21; GRIP_MAIN=22; GRIP_AUX=23; public static final int POSITIVE=1; public static final int NEGATIVE=-1; public static final int X=10; public static final int Y=11; 163 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR ! public static final int Z=12; ! nom de l'articulació joint1.name=Base ! màxim de graus al que pot arribar l'articulació joint1.max=180 ! mínim joint1.min=-180 ! màxima velocitat de moviment de l'articulació joint1.vel=200 ! posició de l'articulació en el model 3D joint1.posx=0 joint1.posy=0 joint1.posz=0 ! tipus d'articulació(20-23)(veure mes amunt) joint1.type=20 ! eix de moviment(10-12)(veure mes amunt) joint1.moveaxis=12 ! sentit de moviment(1 o -1)(veure mes amunt) joint1.sense=1 joint2.name=Shoulder joint2.max=110 joint2.min=-90 joint2.vel=200 joint2.posx=70 joint2.posy=0 joint2.posz=352 joint2.type=20 joint2.moveaxis=11 joint2.sense=1 joint3.name=Elbow joint3.max=50 joint3.min=-230 joint3.vel=260 joint3.posx=70 joint3.posy=0 joint3.posz=712 joint3.type=20 joint3.moveaxis=11 joint3.sense=1 joint4.name=Wrist joint4.max=200 joint4.min=-200 joint4.vel=360 joint4.posx=324 joint4.posy=0 joint4.posz=712 joint4.type=20 joint4.moveaxis=10 joint4.sense=1 joint5.name=Bend joint5.max=120 joint5.min=-120 joint5.vel=360 joint5.posx=450 joint5.posy=0 joint5.posz=712 joint5.type=20 joint5.moveaxis=11 164 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR joint5.sense=1 joint6.name=Turn joint6.max=400 joint6.min=-400 joint6.vel=450 joint6.posx=450 joint6.posy=0 joint6.posz=712 joint6.type=20 joint6.moveaxis=10 joint6.sense=1 joint7.name=Grip joint7.max=1 joint7.min=0 joint7.vel=1 joint7.posx=515 joint7.posy=0 joint7.posz=712 joint7.type=22 joint7.moveaxis=11 joint7.sense=1 joint8.name=Grip Aux joint8.max=1 joint8.min=0 joint8.vel=1 joint8.posx=515 joint8.posy=0 joint8.posz=712 joint8.type=23 joint8.moveaxis=11 joint8.sense=-1 cameraCount=4 ! ip significa la url completa ! bound ha de ser igual a id (al principi de l'arxiu) !camera1.ip=http://147.83.173.40/IMAGE.JPG camera1.ip=http://147.83.173.48/robotcontrol/cam/cam1.html camera1.user=http://147.83.173.40/IMAGE.JPG camera1.pass=robotcontrol_getsin camera1.name=D-Link DCS900 (Frontal) camera1.bound=1 camera1.3D.from.x=0.9 camera1.3D.from.y=0.0 camera1.3D.from.z=0.2 camera1.3D.lookat.x=0.0 camera1.3D.lookat.y=0.0 camera1.3D.lookat.z=0.5 !camera2.ip=http://147.83.173.56/cgi-bin/video.jpg camera2.ip=http://147.83.173.48/robotcontrol/cam/cam2.html camera2.user=http://147.83.173.56/cgi-bin/video.jpg camera2.pass=robotcontrol_getsin camera2.name=D-Link DCS 2100G 1 (Obliqua) camera2.bound=1 camera2.3D.from.x=-0.9 camera2.3D.from.y=0.0 165 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR camera2.3D.from.z=0.2 camera2.3D.lookat.x=0.0 camera2.3D.lookat.y=0.0 camera2.3D.lookat.z=0.5 !camera3.ip=http://147.83.173.57/cgi-bin/video.jpg camera3.ip=http://147.83.173.48/robotcontrol/cam/cam3.html camera3.user=http://147.83.173.57/cgi-bin/video.jpg camera3.pass=robotcontrol_getsin camera3.name=D-Link DCS 2100G 2 (Obliqua) camera3.bound=1 camera3.3D.from.x=0.9 camera3.3D.from.y=0.9 camera3.3D.from.z=0.3 camera3.3D.lookat.x=0.0 camera3.3D.lookat.y=0.0 camera3.3D.lookat.z=0.3 camera4.ip=http://147.83.173.48/robotcontrol/cam/totes.html camera4.user=noshow camera4.pass=noshow camera4.name=Totes camera4.bound=1 camera4.3D.from.x=0.9 camera4.3D.from.y=0.9 camera4.3D.from.z=0.3 camera4.3D.lookat.x=0.0 camera4.3D.lookat.y=0.0 camera4.3D.lookat.z=0.3 166 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR ANNEX X : Configuració del perfil El perfil es guarda en arxius .properties . Com que és força intuïtiu, s’adjunta l’utilitzat per defecte a continuació: Nota: En primer lloc es defineixen els elements del joystick i, posteriorment, s’assignen a elements del robot. ! ! ! ! Perfil de controls robot ABB IRB 140 dispositius d'entrada: Joystick Logitech Force3D Pro configuració 1 name=default robot=ABB IRB 140 input_device=Logitech Force 3D Pro USB Logitech_Force_3D_Pro_USB=22 Logitech_Force_3D_Pro_USB.1=X axis Logitech_Force_3D_Pro_USB.2=Y axis Logitech_Force_3D_Pro_USB.3=Button 3 Logitech_Force_3D_Pro_USB.4=Button 4 Logitech_Force_3D_Pro_USB.5=Button 5 Logitech_Force_3D_Pro_USB.6=Button 6 Logitech_Force_3D_Pro_USB.7=Button 7 Logitech_Force_3D_Pro_USB.8=Button 8 Logitech_Force_3D_Pro_USB.9=Button 9 Logitech_Force_3D_Pro_USB.10=Button 10 Logitech_Force_3D_Pro_USB.11=Button 11 Logitech_Force_3D_Pro_USB.12=Button 12 Logitech_Force_3D_Pro_USB.13=Button 2 Logitech_Force_3D_Pro_USB.14=Rudder Logitech_Force_3D_Pro_USB.15=Directional Logitech_Force_3D_Pro_USB.16=Directional Logitech_Force_3D_Pro_USB.17=Directional Logitech_Force_3D_Pro_USB.18=Directional Logitech_Force_3D_Pro_USB.19=Directional Logitech_Force_3D_Pro_USB.20=Directional Logitech_Force_3D_Pro_USB.21=Directional Logitech_Force_3D_Pro_USB.22=Directional 0 1 2 3 4 5 6 7 Logitech_Force_3D_Pro_USB.X_axis=Base Logitech_Force_3D_Pro_USB.Y_axis_(invertit)=Shoulder Logitech_Force_3D_Pro_USB.Rudder=Wrist Logitech_Force_3D_Pro_USB.Button_4=Càmera seg. Logitech_Force_3D_Pro_USB.Button_3=Càmera ant. Logitech_Force_3D_Pro_USB.Button_6=Vista seg. Logitech_Force_3D_Pro_USB.Button_5=Vista ant. Logitech_Force_3D_Pro_USB.Button_7=3D-Drag Logitech_Force_3D_Pro_USB.Button_8= Logitech_Force_3D_Pro_USB.Button_9=Punts-Ant. Logitech_Force_3D_Pro_USB.Button_10=Punts-Seg. Logitech_Force_3D_Pro_USB.Button_11=Punts-Veure-AnarA Logitech_Force_3D_Pro_USB.Button_12=Punts-Guardar Logitech_Force_3D_Pro_USB.Button_2=Control-Swap 167 SISTEMA PER A LA TELEOPERACIÓ D’UN ROBOT MANIPULADOR Logitech_Force_3D_Pro_USB.Directional_0=X Logitech_Force_3D_Pro_USB.Directional_1= Logitech_Force_3D_Pro_USB.Directional_2=Y Logitech_Force_3D_Pro_USB.Directional_3= Logitech_Force_3D_Pro_USB.Directional_4=X Logitech_Force_3D_Pro_USB.Directional_5= Logitech_Force_3D_Pro_USB.Directional_6=Y Logitech_Force_3D_Pro_USB.Directional_7= 168 click negatiu click positiu click positiu click negatiu