Í Taula de Continguts NDEX

advertisement
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
Download