126
1 Control i monitorització de dades d’un robot mòbil amb Labview TITULACIÓ: Enginyeria Técnica Industrial en Electrónica Industrial AUTOR: Raimon Prunera Pellicer . DIRECTOR:Albert Oller Pujol . DATA: 6 de Juny de 2011

Control i monitorització de dades d’un robot mòbil amb …deeea.urv.cat/public/PROPOSTES/pub/pdf/1606pub.pdf · 2011-06-15 · Des dels principis de la robòtica mòbil associada

Embed Size (px)

Citation preview

1

Control i monitorització de dades d’un robot mòbil amb Labview

TITULACIÓ: Enginyeria Técnica Industrial en Electrónica Industrial

AUTOR: Raimon Prunera Pellicer . DIRECTOR:Albert Oller Pujol . DATA: 6 de Juny de 2011

2

Índex

1 Introducció ............................................................................................................................. 6

2 Objectius ................................................................................................................................ 7

3 Antecedents històrics ............................................................................................................. 7

4 Robot San Bernardo V1 ........................................................................................................... 10

4.1 Hardware del robot SBV1 ................................................................................................ 10

4.1.1 Bateria ......................................................................................................................... 13

4.1.2 Convertidor d’alimentació .......................................................................................... 14

4.1.3 Router ......................................................................................................................... 14

4.1.4 Càmera ....................................................................................................................... 15

4.1.5 Serializer ..................................................................................................................... 16

4.1.6 Placa base ................................................................................................................... 18

4.1.7 Acceleròmetre de tres eixos ........................................................................................ 19

4.1.8 Motor de corrent contínua i drivers de potència ......................................................... 20

4.1.9 Servomotor ................................................................................................................. 21

4.2 Software del robot ............................................................................................................. 22

4.2.1 Comunicació TCP-IP servidor .................................................................................... 22

4.2.2 Comunicació amb el serializer .................................................................................... 23

4.2.3 Lectura d’un acceleròmetre per port sèrie .................................................................. 25

4.2.4 Interfície d’usuari ....................................................................................................... 26

5. El Pc de control i monitorització de dades .............................................................................. 26

5.1 Hardware ........................................................................................................................... 26

5.2 Software de control i monitorització de dades (pc client) ................................................. 27

5.2.1 Lectura d’una càmera IP Axis 206 mitjançant controls ActiveX ............................... 27

5.2.2 Gravació de vídeo mitjançant controls Active X ........................................................ 29

5.2.3 Captura d’imatges mitjançant controls Active X ........................................................ 30

5.2.4 Reproducció de vídeo. ................................................................................................ 31

3

5.2.5 Comunicació TCP-IP Client ....................................................................................... 32

5.2.5.1 Escriptura de dades numèriques .......................................................................... 32

5.2.5.2 Lectura de trames ASCII ..................................................................................... 32

5.2.6 Obtenció dels valors d’acceleració ............................................................................. 33

5.2.7 Lectura d’un joystic USB ........................................................................................... 34

5.2.8 Lectura d’un teclat ...................................................................................................... 36

5.2.9 Capturar mostra i patrons de color .............................................................................. 37

5.2.10 Visió artificial amb ImaQ Vision ............................................................................. 38

5.2.11 Generació de fitxers excel amb Labview .................................................................. 47

5.2.12 Representació gràfica de dades ................................................................................. 47

6 Proves i resultats ...................................................................................................................... 49

6.1 Ajust de les constants de l’algoritme PID.......................................................................... 49

6.2 Proves de visió artificial amb llum interior ....................................................................... 54

6.3 Proves de visió artificial amb llum exterior ....................................................................... 57

6.4 Proves de mesures d’acceleració en diferents condicions ................................................. 58

7 Conclusions .............................................................................................................................. 66

8 Pressupost ................................................................................................................................. 67

9 Bibliografia i referencies .......................................................................................................... 68

10 Manual d’usuari ...................................................................................................................... 69

10.1 Software necessari pel robot San Bernardo ..................................................................... 69

10.1.1 Instal· lació del Ultra VNC ........................................................................................ 69

8.1.2 Instal· lació del Windows Installer 3.1 (KB893803) ................................................... 76

10.1.3 Instal· lació del RunTime engine de Labview ........................................................... 78

10.2 Software necessari pel PC de control .............................................................................. 81

10.2.1. Instal· lació del Axis vídeo capture driver ................................................................ 81

10.2.2 Instal· lació del Axis media control SDK 5.60 .......................................................... 83

10.3. Connexió a escriptori remot mitjançant ulta VNC ......................................................... 86

4

10.4 Execució del software del robot (servidor) ...................................................................... 87

10.5 Configuració del software de control (client) .................................................................. 89

Apèndix ....................................................................................................................................... 97

A 1. Comunicacions .................................................................................................................... 97

A1.1 RS-232 ............................................................................................................................ 97

A1.1.1 Velocitat de transmissió ........................................................................................... 97

A1.1.2 Nivells lògics RS-232 .............................................................................................. 98

A1.1.3 Format d’un Byte .................................................................................................... 99

A1.2 TCP-IP ............................................................................................................................ 99

A1.2.1 Nivell de Xarxa ...................................................................................................... 100

A1.2.2 Nivell de transport ................................................................................................. 101

A1.2.3 Nivell d’aplicació ................................................................................................... 101

A1.2.4 Arquitectures habituals .......................................................................................... 101

A1.3 USB .............................................................................................................................. 102

A1.3.1 Topologia del bus .................................................................................................. 102

A1.3.1.1 Capa física ...................................................................................................... 104

A1.3.1.1.1 El host USB ............................................................................................. 105

A1.3.1.1.2 El controlador de Host ............................................................................. 105

A1.3.1.2 Capa lògica ..................................................................................................... 106

A1.3.1.3 La relació software del client-funció .............................................................. 107

A1.3.2 Flux de dades ......................................................................................................... 107

A1.3.2.1 Endpoints i direccions de dispositiu ............................................................... 108

A1.3.2.1.1 Tuberies ................................................................................................... 108

A1.3.2.1.2 Frames i Microframes .............................................................................. 109

A1.3.2.1.3 Tipus de transferències ............................................................................ 110

A1.3.3 Capa de protocol .................................................................................................... 111

A1.3.3.1 Camps ............................................................................................................. 112

5

A1.3.3.2 Format dels paquets ........................................................................................ 113

A1.3.3.3 Transaccions ................................................................................................... 115

A2 Control de motors ................................................................................................................ 117

A2.1 Control de motors de corrent contínua amb PWM ....................................................... 117

A2.2 Funcionament i control de servomotors........................................................................ 118

A3 Visió artificial ...................................................................................................................... 120

A3.1 Models de color ............................................................................................................ 120

A3.1.1 RGB ....................................................................................................................... 120

A3.1.2 HSV ....................................................................................................................... 121

A3.1.3 HSL ........................................................................................................................ 121

A3.2 Detecció de colors......................................................................................................... 121

A4. Controlador PID ................................................................................................................. 123

6

1 Introducció Des dels principis de la robòtica mòbil associada amb la visió artificial, a l’inici

de la dècada dels seixanta, fins als nostres dies, aquests sistemes han evolucionat de forma continuada. El primer robot a incorporar aquest sistema i capaç de ser comandat a distància, era més gran que una persona i necessitava dues sales de control per poder comandar-lo. En l’actualitat, un robot com el San Bernardo V1 utilitzat per desenvolupar aquest projecte té la mida d’una capsa de sabates i pot ser comandat a distància per un ordinador portàtil que té una mida no superior a un full de paper. Amb tots aquests avenços tecnològics l’investigació sobre aquests sistemes s’ha fet més senzilla i econòmica.

Avui en dia els robots han passat a formar part de la nostra vida quotidiana. Existeixen robots i màquines automatitzades des de caixers automàtics, indústries on munten automòbils i fins a hospitals on hi ha braços mecanitzats assistits que fan operacions de cirurgia amb gran precisió.

La robòtica s’aplica en molts àmbits:

- Investigació. Són eines per l’assaig d’algoritmes, tècniques d’intel·ligència artificial, mètodes de desplaçament, tecnologia en comunicacions, etc. Molts casos serveixen de base per futurs robots amb aplicacions en el món real. Un exemple molt clar són: els robots busca mines i els d’exploració espacial.

- Medicina. La medicina ha estat envaïda per la robòtica i està obtenint resultats molt satisfactoris. Un exemple seria el de la operació a control remot amb braços mecànics que realitzen la operació amb molta precisió i sense fer grans incisions.

- Espai. La gran avantatge dels robots espacials es que a diferència dels humans no necessiten ni aliment ni beguda, poden treballar en condicions adverses i poden realitzar feines perilloses i difícils. Encara és més important que la seva pèrdua sempre es preferible a la d’un astronauta. Però son cars de dissenyar i de produir. El seu objectiu és bàsicament el de posicionar un instrument per prendre mesures, recollir mostres per examinar i muntar una estructura. Però han de complir uns requisits molt exigents: resistir un llançament, funciona en condicions ambientals difícils, pesar el mínim, consumir poca energia, tindre una llarga vida funcional, funcionar autònomament i ser summament fiables.

- Llar. Els electrodomèstics formen part de la robòtica, són robots domèstics que faciliten les feines domèstiques.

- Entreteniment. Des de robots que existeixen en tots els parcs d’atraccions fins els de joguina.

7

2 Objectius Amb la realització d’aquest projecte es pretén dissenyar una aplicació software

per entorn Windows que permeti controlar el moviment i monitoritzar les dades del robot mòbil San Bernardo V1 de forma senzilla i intuïtiva. L’usuari, serà capaç de guiar el robot amb el suport d’un sistema de visió artificial capaç de detectar un color indicat prèviament. En tot moment l’usuari obtindrà informació dels moviments del robot, de les accions preses pel sistema de control i de les acceleracions experimentades. Tota la informació estarà disponible per l’usuari en un arxiu de dades si així ho desitja, i amb la possibilitat de poder capturar i reproduir vídeos i capturar imatges mentre s’estigui utilitzant el control del robot.

El robot podrà funcionar de forma autònoma o guiada. En mode autònom serà possible ajustar diferents paràmetres del controlador segons el criteri de l’usuari, els resultats es veuran reflexats en una gràfica que mostra el comportament del sistema de control i el moviment efectuat per l’objecte a seguir. En mode manual l’usuari disposarà d’un comandament i suport visual.

El programa allotjat en el San Bernardo s’encarregarà d’obtenir diverses dades del robot i les servirà a un client a través d’una comunicació sense fils.

L’aplicació resultant del desenvolupament d’aquest projecte serà executable des de qualsevol equip que compti amb Windows XP (servidor) i amb windows XP o Vista (client) i els complements de software que s’indicaran posteriorment.

3 Antecedents històrics Per trobar la primera aplicació feta amb visió artificial de la història cal

retrocedir fins l’any 1961 quant Larry Roberts va crear un programa que podia “veure” una estructura de blocs, analitzar-ne el contingut i reproduir-la en una altra perspectiva, demostrant així que aquesta informació visual que havia estat enviada a un ordinador a través d’una càmera, havia estat correctament processada. El programa buscava transicions brusques entre valors de grisos, que es corresponien amb els contorns dels objectes, a continuació encaixava les línies rectes amb els punts identificats com a contorns, els quals utilitzava per delimitar les cares dels blocs, seguidament determinava quines cares s’havien d’ajuntar per formar cada bloc, corregia la perspectiva per mostrar la figura d’es d’un altre angle i calculava la distància fins la càmera. Per què el programa fos efectiu calia utilitzar uns cubs dissenyats expressament per aquest experiment.

Per trobar el primer exemple d’interactuació d’un robot mòbil amb un sistema de visió artificial, cal anar fins l’any 1972 quan, després de sis anys d’investigació el centre d’intel·ligència artificial de Stanford SRI international va crear el robot Shakey, el

8

primer robot mòbil capaç de prendre les seves pròpies decisions. Shakey ha tingut una gran influència sobre els posteriors dissenys de robòtica i intel·ligència artificial.

El robot Shakey constava d’una càmera de televisió, un buscador de rang triangular i sensors d’impacte i estava connectat a un PDP-10 i PDP-15 mitjançant transmissions per radiofreqüència i enllaços de vídeo. En Shakey utilitzava programes per percepció, modelat e interpretació de les imatges captades per la càmera.

Les rutines d’acció de baix nivell tenien com a objectiu controlar el moviment simple, la volta i la planificació de la ruta. Accions de nivell intermèdies combinades amb les de baix nivell aconseguien executar les tasques més complexes. Els programes de més alt nivell podien executar projectes per aconseguir els objectius marcats per l’usuari

Imatge 1: Sistema de monitoratge PDP-15

Imatge 2: Ordinador PDP 10

9

Imatge 3: Robot Shakey

Pel que fa als robots exploradors, cal retrocedir fins el 17 de Novembre de 1970 per trobar el primer exemplar representatiu. El robot Lunokhod 1 fou fruit de la cursa espacial entre els Estats Units i la antiga Unió Soviètica.

El Lunokhod 1 for transportat a la lluna per la sonda Luna 17. El petit vehicle posseïa vuit rodes, tenia una longitud de 2,22 m i 1,60 m d’ample amb un pes total de 756 Kg. Controlat des de la Terra el robot va explorar àmpliament el Mare Imbrium , realitzant durant gairebé un any d’activitat més de 10 quilòmetres de recorregut i transmetent a la terra més de 20.000 imatges televisives i 200 vistes panoràmiques d’una zona de més de 80.000 metres quadrats. El robot va realitzar prop de 500 proves experimentals sobre la superfície lunar, en les quals analitzava les propietats físiques i químiques en diferents ubicacions.

Imatge 4: Robot Lunokhod 1.

10

Actualment el concepte de robòtica inclou els sistemes mòbils autònoms, capaços de sortir per sí mateixos en entorns desconeguts i sense necessitat de supervisió humana.

Per tant, la història de la robòtica es pot dividir en tres generacions:

1) El robot és capaç de repetir una seqüència programada de moviments, sense realimentació sensorial (control en llaç obert).

2) El robot adquireix informació limitada de l’entorn i actua en conseqüència (control de llaç tancat). Pot localitzar, classificar (mitjançant visió) i detectar esforços per adaptar els seus moviments.

3) El robot utilitza intel·ligència artificial per resoldre el problema plantejat. La seva programació està realitzada en llenguatge d’alt nivell.

Imatge 5: Evolució dels robots humanoides

4 Robot San Bernardo V1

4.1 Hardware del robot SBV1

El Robot san Bernardo V1 està compost per quatre rodes d’ aproximadament 12 cm de diàmetre equipades amb pneumàtics tot terreny, utilitzant un sistema de tracció a les quatre rodes amb transmissió per cardant i diferencials tant a la part anterior com posterior. La separació entre els eixos és de 31cm i l’amplada de 15cm comptant amb una amplada total de 26cm i una longitud de 43cm. El sistema de suspensió està format per quatre amortiguadors totalment independents entre ells i permeten una inclinació dels eixos d’uns 45º sobre la horitzontal deixant el cos del robot a una distancia de 17,5 cm del terra. El sistema de locomoció disposa d’un motor elèctric que mitjançant un engranatge reductor ataca a un diferencial central. Tant el motor com el diferencial central van muntats en un xassís d’alumini. El xassís que alberga el motor i el diferencial central es troba a una altura de 9 cm respecte el terra i els eixos n’estan a 3,5 cm.

11

El sistema de direcció consta d’un servomotor aplicat a les rodes davanteres i situat sobre el diferencial davanter.

Imatge 6: Robot San Bernardo V1

La part electrònica del robot i la part mecànica es troben fixades a una xapa d’alumini de 3mm de gruix i de 31 cm de longitud, 16,5 d’amplada en la parta anterior i 18,5 cm en la part posterior amb els cantells arrodonits i amb una sèrie de forats de 3 mm de diàmetre en tot el seu voltant per tal de poder-hi fixar la carcassa protectora de l’electrònica.

Imatge 7: Robot San Bernardo V1

L’electrònica del robot està estructurada en pisos per tal d’estalviar espai, en el pis inferior de la part posterior trobem una bateria, aïllada per una xapa d’alumini de la resta de l’electrònica, en el segon pis hi trobem un router i un driver de potència per al control de motors, en el tercer pis hi trobem la placa mare del pc i el convertidor

12

d’alimentació i en el quart i últim pis hi ha un sensor d’acceleració de tres eixos connectat a un port sèrie del pc, i una placa de control de motors de corrent contínua i servomotors connectada al segon port sèrie de la placa mare del pc. A la part frontal del robot hi trobem una càmera IP connectada al router per cable i connector RJ45, el pc també esta connectat al router d’aquesta forma. El visor de la càmera està situat a una distància de 28 cm respecte el terra.

Imatge 8: Electrónica del robot San Bernardo

Tota l’electrònica de control està protegida sota una carcassa de fibra de vidre negre amb una cúpula circular de metacrilat transparent 9,5 cm de diàmetre situada a la part frontal a través de la qual la càmera capta les imatges de l’exterior. A la part del darrere de la carcassa hi trobem el connector mitjançant el qual introduïm el carregador de bateries i al seu costat l’interruptor d’encesa del robot. A la part superior de la carcassa hi trobem l’antena de la connexió sense fils del router elevant l’altura màxima del robot fins als 42 cm.

13

A continuació s’expliquen els detalls tècnics dels elements del robot

4.1.1 Bateria

L’alimentació del elements electrònics que componen el San Bernardo es realitza mitjançant una bateria LIPO de 11.1v de corrent contínua i una capacitat de 9000 mAh, la qual ens dona una autonomia d’ aproximadament 6 hores amb un temps de càrrega igual, utilitzant un carregador de 12,6v i 1,5 A. La bateria disposa de proteccions internes contra excessos de demanda de corrent i excessos de descàrrega. En el moment que la protecció entra en funcionament, la bateria deixa de subministrar corrent per tal d’evitar-ne la destrucció.

14

Connectat a la bateria trobem l’interruptor d’encesa del robot, en polsar-lo s’activa un relé que activa el convertidor encarregat d’alimentar la resta de la circuiteria interna del robot.

Imatge 9: Bateria del robot

4.1.2 Convertidor d’alimentació

El convertidor d’alimentació és l’encarregat de convertir els 11.1 V de corrent contínua provinents de la bateria a 5V, 12V i -12V. La potència màxima de sortida que és capaç d’entregar és de 30W. El model correspon al fabricant Redcom model rp30-120512TA.

Imatge 10: Convertidor d’alimentació

4.1.3 Router

Per tal de dur a terme les comunicacions entre el robot (servidor) i el PC que el controlarà (client), el San Bernardo incorpora un router alpha systems AIP-W610H de cinc ports amb connexió sense fils. El router està incorporat internament al robot de tal manera que aquest es connecta per cable ethernet i connector RJ45 a la placa mare del

15

robot i de forma inal·làmbrica amb el PC client. La velocitat màxima amb la qual el router és capaç de transferir dades és de 54Mbps.

Imatge 11: Router

4.1.4 Càmera

Amb l’objectiu de poder guiar el robot tot i estar fora del rang de visió de l’operador, aquest compta amb una càmera Axis 206 situada a la part davantera. Aquesta càmera es connecta al router mitjançant un cable ethernet i permet veure les imatges captades per la càmera. La càmera actua com si d’un servidor web es tractés, i a través de qualsevol navegador web es poden visualitzar les imatges.

Imatge 12: Imatges captades per la càmera

16

La resolució màxima amb la qual es pot treballar és de 640 píxels d’amplada i 480 d’alçada amb una velocitat màxima de 30 imatges per segon. L’usuari podrà configurar diversos paràmetres de la càmera fent clic sobre la pestanya “configuración”, aquest menú està protegit per nom d’usuari i contrasenya.

Imatge 13: Càmera IP AXIS 206

4.1.5 Serializer

El serializer és el dispositiu utilitzat per realitzar el control dels motors, tant el de corrent contínua encarregat de fer avançar o retrocedir el robot, com el servomotor encarregat de fer girar les rodes a dreta i esquerra. El cor del dispositiu és un microcontrolador PIC 18F452, en la placa hi trobem disponibles: Connexions de bus I2C, 5 entrades analògiques; 14 entrades/ sortides digitals, dos controls de motors de corrent contínua de fins a 4A de corrent, control de sis servomotors i sortides de PWM externes per connectar un driver de potència en cas que els incorporats a la placa no tingui prou potència per controlar els motors de l’aplicació en qüestió. En el cas que ens ocupa, el serializer es comanda a través d’un PC amb comunicació RS-232 tot i que existeix la possibilitat de substituir la comunicació RS-232 per una USB, Xbee o Bluetooth.

La comunicació del serializer està configurada a 19200 bits per segon, 8 bits de dades, cap bit de paritat, un bit de parada i no utilitza control de flux.

El port sèrie del serializer s’encarrega de llegir les instruccions enviades per l’ordinador de control, en aquest cas tan sols s’utilitzen les referents al control de motors de corrent contínua, servomotors i reset, les instruccions referents als motors varien en funció del port del serializer en que es connectin. El servomotor es connecta a la posició 6 corresponent-li l’ordre següent:

servo 3:xx <CR>

17

Els caràcters representats com a xx són un valor entre el -99 i el 100, el 0 s’encarrega de posar el servo a -90º (el robot avança recte) i el -100 s’interpreta com alliberar el servo motor, per tant la direcció queda totalment lliure, finalment el <CR> correspon al retorn de carro. Degut a les restriccions mecàniques en la direcció del San Bernardo les ordres de gir estan limitades als valors 35 i -35, en cas de sobrepassar aquests valors es podria malmetre la direcció del robot.

Pel que fa al motor de corrent contínua encarregat de fer avançar el robot, el serializer utilitza les sortides de PWM. En aquest cas, la senyal de control dels motors es connecta a les sortides destinades ha utilitzar un driver de potència extern, l’ordre corresponent és:

PWM 1: xx 2: xx <CR>

Els valors xx estan compresos entre 0 si el robot es manté aturat i 50 en el moment de màxima velocitat. En cas que es sobrepassi el valor màxim d’acceleració la corrent consumida és tant elevada que la bateria no és capaç de subministrar-la i la tensió cau, cosa que fa reiniciar l’ordinador del robot.

Per donar l’orde de direcció es posa el signe davant dels xx, així doncs, si es vol fer avançar el robot, l’ordre seria:

PWM 1: xx 2:-xx <CR>

Per fer-lo retrocedir cal canviar el signe respecte l’ordre anterior

PWM 1:-xx 2: xx <CR>

En el cas que es vulgui aturar el robot cal enviar l’ordre:

stop <CR>

Si el serializer deixa de respondre en algun moment, l’ordre per resetejar-lo és:

reset <CR>

A totes aquestes ordres el serializer ha de respondre ACK si l’ha adquirit i NACK si no l’ha adquirit.

18

El serializer té l’aspecte mostrat en la següent imatge.

Imatge 14: Placa de control de motors de corrent continua serializer

4.1.6 Placa base

La placa base de l’ordinador incorporat en el robot té unes dimensions de 9cm d’amplada i 9 de longitud. Correspon al model PM-LX-800 del fabricant IEI Technology. Per aquesta aplicació, dels diversos ports dels que disposa la placa base, tan sols s’utilitzen dos posts sèrie i un port ethernet. L’accés a l’escriptori del PC es fa de forma remota mitjançant el programa Ultra VNC. El processador muntat a la placa és un AMD Geode de 500MHz amb una memòria RAM de 512MB i una targeta compact flash de 4GB utilitzada a mode de disc dur. L’alimentació és de 5 volts provinents del convertidor.

19

En cas de necessitar connectar-se directament al PC del robot caldria usar els connectors externs de monitor, teclat, ratolí i ports USB facilitats pel fabricant.

Imatge 15: Placa base del PC del San Bernardo

4.1.7 Acceleròmetre de tres eixos

Un acceleròmetre és un sensor encarregat de mesurar acceleracions. El sensor utilitzat en aquest cas és el MMA7260Q. Aquest sensor ens dona els valors d’acceleració d’eix X Y Z de forma analògica i és capaç de mesurar acceleracions de fins a 6G tot i que per aquesta aplicació s’ha limitat el valor màxim de sensat a 1.5 G, cometent un error tant per excés com per defecte de 6 mG.

Per tal de facilitar l’ utilització d’aquest sensor, el fabricant SPARKFUN ha realitzat un muntatge amb un microcontrolador PIC16LF88. Utilitzant els convertidors analògic digitals que posseeix i la connexió RS-232, és capaç de llegir els valors analògics i enviar les dades d’acceleració estàtica i dinàmica. La freqüència d’enviament de dades és de 50 Hz amb una precisió de 3 decimals. Aquestes dades s’envien a través del port sèrie utilitzant una trama constant:

X= 0.000 Y= 0.000 Z= 0.000

Els valors de configuració del port sèrie per realitzar la lectura del acceleròmetre són: 9600 bits per segon bits de dades, cap bit de paritat, un bit de parada i no utilitza control de flux.

20

El sensor utilitzat correspon a la imatge següent.

Imatge 16: Acceleròmetre de 3 eixos

4.1.8 Motor de corrent contínua i drivers de potència

El motor encarregat de fer avançar i retrocedir el robot és un motor de corrent contínua del fabricant NOVAK model crawler 55, capaç d’entregar una potència de 80W.

Imatge 17: Motor de corrent contínua

Degut a la elevada potència del motor, el driver incorporat en el serializer no és capaç de suportar el corrent consumit, per aquesta raó s’utilitza un driver de potència extern per alimentar el motor.

El driver en qüestió és un pololu VNH3SP30 integra un pon en H per al control de motors i inversió de gir capaç de suportar corrents de fins a 30 A amb protecció per curt circuits. La freqüència d’operació és de 20KHz. Les senyals PWM de control del motor provenen del serializer.

21

Imatge 18: Diagrama del driver pololu VNH3SP30

Imatge 19: Driver pololu VNH3SP30

4.1.9 Servomotor

Un servomotor està constituït per un petit motor de corrent contínua, unes rodes dentades que treballen com a reductors per fer que el motor sigui capaç d’entregar una potència considerable, i una petita placa de circuit imprès amb l’electrònica necessària per poder realitzar-ne el control. La gran diferència entre els servomotors i els motors de corrent contínua és que els de corrent continua al estar alimentats giren contínuament, mentre que els servomotors es desplacen un nombre determinat de graus, complint les ordres donades al pin de control. El funcionament detallat d’aquest tipus de motors s’explicarà en l’apèndix A2.2.

22

En el San Bernardo, el servomotor s’utilitza per dirigir les rodes davanteres del robot.

Imatge 20: Servomotor de direcció

4.2 Software del robot

4.2.1 Comunicació TCP-IP servidor

El robot actuarà com un servidor de dades, esperant que un client és connecti per començar l’intercanvi d’informació

Imatge 21: Lectura de dades enviades pel joystic per TCP-IP

Per iniciar una comunicació com a servidor per TCP-IP cal utilitzar la funció TCP listen que permet esperar a que un client es connecti per un port determinat. La primera funció TCP Read té com a paràmetre 4 , indicant que es llegiran dades de 4 bytes. S’utilitza un Type cast per convertir la variable llegida com a string a numèric. S’utilitza la funció TCP Read per segona vegada per llegir les dades, aquest cop el type

cast s’utilitza per indicar que la lectura és d’un array de dues dades, aquest array es converteix a clúster i es desempaqueta per poder llegir el valor de gir i d’acceleració.

23

Al sortir del bucle principal del programa es tanca la connexió.

Imatge 22: Enviament de dades per TCP-IP

Per enviar les dades llegides de l’acceleròmetre per TCP-IP s’utilitza la funció TCP Write.

4.2.2 Comunicació amb el serializer

Per poder controlar els moviments de les rodes, cal comunicar la placa mare del robot amb la placa de control de motors.

Imatge 23: Inicialització del serializer

Per realitzar la comunicació amb el serializer cal obrir una comunicació per RS-232 amb la configuració següent: 19200 bauds, 8 bits de dades, sense bit de paritat, un bit de parada i sense control de flux. El nombre de port corresponent cal que el configuri l’usuari sent normalment el COM2. Un cop inicialitzat el port, s’espera un temps prudencial i s’envia una senyal de reset per duplicat al serializer per assegurar que tots

24

els paràmetres es troben en el seu valor per defecte. Per enviar les ordes pel port sèrie s’utilitza la funció visa Write. L’enviament de les ordres de reset es fan utilitzant una estructura seqüencial.

Imatge 24: Trames de control de motors

Un cop resetejat el serializer i llegits els valors a enviar per realitzar el control dels motors, cal muntar les trames que el serializer interpretarà. Al llegir el valor de gir, es converteix en string i s’utilitza la funció concatenate strings per obtenir Servo 3:xx on xx es correspon amb el valor de gir llegit. El mateix es fa amb els valors d’acceleració per obtenir la trama: pwm1: xx 2:xx. Un cop preparades les trames ja es poden enviar al serializer.

Imatge 25: Enviament de trames per RS-232

Per enviar les trames s’esperen 10 ms perquè el serializer tingui temps de respondre i no es pengi. La funció utilitzada és Visa Write. S’utilitza dins d’una estructura seqüencial.

25

Per tal de poder aturar el robot s’incorpora un botó de stop que té el següent funcionament.

Imatge 26: Aturar el motor

En el moment que l’usuari prem el botó “parar motor” s’envia l’ordre stop per rs232 utilitzant la funció visa Write. Per assegurar que l’ordre s’envia tan sols un cop, s’utilitza un bucle que s’acaba al enviar l’ordre i desactiva el botó activat per l’usuari.

4.2.3 Lectura d’un acceleròmetre per port sèrie

Per obtenir els valors d’acceleració, cal llegir les dades provinents de l’acceleròmetre del qual disposa el robot.

Imatge 27: Lectura del acceleròmetre

Per llegir l’acceleròmetre, es configura la connexió per un port diferent a l’anterior, normalment el COM 1. S’utilitza la funció VISA Configure Serial Port amb les mateixes configuracions exceptuant el baud rate que es redueix a 9600bps. Seguidament es limita la mida del buffer d’entrada de dades de Rs-232 a 26 bytes que és la longitud de la trama, es llegeix la trama utilitzant el VISA Read indicant que cal llegir 26 caràcters. Un cop efectuada la lectura es borra la informació del buffer.

26

4.2.4 Interfície d’usuari

Del procés de disseny explicat anteriorment, la part visible per l’usuari es mostra en la imatge següent.

Imatge 28: Interfície d’usuari del programa del San Bernardo

Els camps trama de control de gir i trama de control d’acceleració mostren a l’usuari les trames de control de motors enviades pel client.

5. El Pc de control i monitorització de dades

5.1 Hardware

El hardware de l’ordinador de control i monitorització de dades té uns requisits mínims per tal de poder utilitzar la versió 8.6 de Labview que permet executar el sofware objecte d’aquest projecte. Els requisits mínims per poder executar l’aplicació són:

- CPU Pentium 4 o equivalent - 1GB de Ram - 8GB d’espai lliure al disc dur - Resolució 1024x768

De forma opcional i per tal de controlar els moviments del robot de forma manual, s’utilitza un comandament de la videoconsola play station 2. El dispositiu consta de dos controls analògics i 14 digitals. D’aquests controls tan sols s’utilitzen els dos controls analògics , l’eix de les Y del comandament de la part esquerra per al control de l’acceleració i l’eix de les X del comandament dret per la direcció. La part de

27

les X de l’esquerra, la part de les Y de la dreta i els dos canals restants, no són d’utilitat per l’aplicació que ens ocupa.

Pel que fa a l’acceleració del robot, si s’acciona el comandament des del centre cap a la part superior, el robot avança. Si s’acciona des de la part central fins la part inferior el robot retrocedeix.

En accionar el comandament de gir, el robot girarà cap al lloc on es mogui el comandament.

El funcionament dels controls analògics d’aquest dispositius és senzill, es constitueix internament de 2 potenciòmetres de dos eixos. Depenent del nivell de tensió, es sap la posició on es troben els comandaments dret i esquerra, tant en l’eix X com en el Y. Les lectures dels valors dels potenciòmetres i dels botons digitals són llegits i tractats amb un microcontrolador, el mateix microcontolador s’encarrega de gestionar la comunicació amb la videoconsola. En el cas que ens ocupa, per poder connectar el comandament a un ordinador ens cal un adaptador de connector Play Station a USB.

Pel que fa a la resolució obtenim un valor de 68.000 per un moviment de 2 cm amb increments mínims de 261, el que correspon a 13 increments per mil·límetre recorregut.

Imatge 29: Comandament de Play Station 2 i adaptador USB

5.2 Software de control i monitorització de dades (pc client)

5.2.1 Lectura d’una càmera IP Axis 206 mitjançant controls ActiveX

Un control ActiveX es podria definir com un programa extern, creat per algun fabricant, que es pot incloure en altres programes per dotar-los de funcionalitats addicionals. En aquest cas el control utilitzat és l’Axis media control SDK 5.5.

28

Imatge 30: Captura de les imatges enviades per la càmera

Com s’ha esmentat anteriorment, Labview executa les instruccions de forma paral·lela, això pot suposar inconvenients en el cas d’haver d’executar funcions de forma seqüencial com és el cas de la lectura de les imatges. Per poder visualitzar la càmera s’utilitza una estructura seqüència que ens permet executar funcions de forma seqüencial. En la imatge anterior es mostra la primera part de la seqüència. En aquesta part es crida al control ActiveX AxisMediaControl, que es connecta al node de propietats de la connexió que es troba connectat al node de propietats que dona l’ordre al servidor que comenci a enviar imatges.

La primera propietat és MediaURL com es pot observar, en aquest camp s’ajunten diferents cadenes de caràcters mitjançant la funció concatenate strings, l’objectiu de la qual és indicar la direcció del servidor d’imatges. El camp IP Càmera l’introdueix l’usuari depenent de la direcció en la que es trobi la càmera dins de la xarxa. De manera que la cadena final queda: http://192.168.2.100/axis-cgi/mjpg/video.cgi?fps=10&camera=1

Les propietats MediaUsername i MediaPassword fan referència al nom d’usuari i contrasenya d’accés al servidor en cas que n’hi hagi, en el cas que ens ocupa el servidor està lliure de contrasenya tot i així el compilador de Labview obliga a connectar-ne una, que a efectes pràctics no és d’utilitat. La propietat EnableContextMenu fa que utilitzant el botó dret del ratolí sobre la finestra que mostra les imatges de la càmera es pugui accedir al menú desplegable de propietats. La propietat MantainAspectRatio ens fa que la finestra que mostra les imatges de la càmera en mantingui la proporció. Stretch to fit fa que la pantalla on es visualitzen les imatges sigui el més gran possible dins de la mida establerta. La resta de propietats fan referència a barres d’eines que no ens són d’ús i per això es mantenen desactivades.

29

Imatge 31: Sortida del bucle principal del programa

En la segona part de l’estructura seqüencial s’hi troba el bucle principal de programa, que contindrà el programa principal. El bucle principal té un retard d’execució de 50 ms per no saturar la CPU de l’ordinador i el botó de stop que ens servirà per sortir del programa.

Imatge 32: Codi per aturar la recepció d’imatges de la càmera.

En la tercera part de l’estructura seqüencial s’utilitza una variable de lectura del control AxisMediaControl i la propietat Stop per indicar al driver que deixi de captar les imatges del servidor, finalment la funció close reference tanca el control d’ActiveX.

5.2.2 Gravació de vídeo mitjançant controls Active X

Per poder graver vídeos de les imatges mostrades per la càmera s’utilitza una variable de lectura de control ActiveX, aquesta variable es connecta a un node de propietats que ens desactiva la funció de zoom.

30

Imatge 33:Codi per la gravació de vídeos de la càmera

Per començar a gravar vídeo s’utilitza una estructura condicional, la condició és si s’ha polsat el botó de començar a gravar vídeo, en el cas afirmatiu s’utilitza la propietat StartRecord i com a paràmetre es dona la direcció on s’ha de gravar i el nom de l’arxiu, en el cas negatiu, s’atura la gravació.

5.2.3 Captura d’imatges mitjançant controls Active X

En prémer el botó “comença a fer fotos”, el programa entra en una estructura condicional , el primer que fa és executar la funció elapsed time, espera a que hagi transcorregut el temps introduït per l’usuari en el camp “interval de captura d’imatges” i en haver transcorregut aquest temps el programa entra a la segona estructura condicional.

Imatge 34: Realització de fotografies

31

Per realitzar la captura d’imatges, es crida al control ActiveX i s’utilitza la propietat SaveCurrentImage, aquesta propietat requereix dos paràmetres, theFormat

correspon al format amb el qual es grava l’arxiu, el 0 correspon a JPG i el 1 correspon a BMP, el paràmetre theFile conté la ruta on es guardarà l’arxiu. En aquest cas es captura la data de l’ordinador i es converteix en format string hh:mm:ss, aquesta string es separa mitjançant la funció Search/Split String i el resultat es hhmmss, aquest string s’uneix mitjançant un concatenate strings i el resultat és: c:\fotolabview\fotos\hhmmss.jpg

5.2.4 Reproducció de vídeo.

La imatge següent correspon a la part de codi que s’encarrega de reproduir els vídeos capturats.

Imatge 35: Reproducció de vídeo

A la part esquerra trobem el botó reproduir vídeo, aquest botó és l’encarregat d’executar el codi que hi ha dins de l’estructura condicional. Dins de l’estructura en primer lloc hi ha la funció file dialog, que obre una finestra amb el contingut de la direcció escrita en el camp File Path , en aquesta finestra es tria el vídeo a reproduir en format AVI. Un cop seleccionat l’arxiu, la funció IMAQ AVI Open és l’encarregada d’obrir el vídeo en format AVI. La funció IMAQ AVI get Info ens serveix per obtenir el nombre de frames que composen el vídeo i el format de les imatges. El format de les imatges ens serveix com a paràmetre per la funció IMAQ Create. El nombre de frames, s’utilitza com a paràmetre ha un node de propietats de la progress bar 2 per delimitar el valor màxim i el mínim, aquesta barra serà l’encarregada de mostrar l’estat de la reproducció del vídeo.

Dins del bucle s’utilitza una estructura seqüencial encarregada de carregar els frames de vídeo en els intervals de temps adequats. S’utilitza el terminal d’iteració del bucle per seleccionar el frame a carregar i augmentar la barra de progrés de vídeo. En acabar de reproduir tots els frames es surt del bucle, es tanca la funció IMAQ AVI i es notifica si s’ha produït algun tipus d’error.

32

5.2.5 Comunicació TCP-IP Client

El programa de control i monitorització de dades funciona com un client TCP-IP que es connecta amb el robot, que funciona com a client. Un cop establerta la comunicació comença l’intercanvi d’informació entre els dos programes.

5.2.5.1 Escriptura de dades numèriques

Imatge 36: Escriptura de dades per TCP-IP

Per realitzar una connexió per TCP-IP client el primer que cal fer és indicar per on es realitzarà la connexió amb el servidor. Per desenvolupar aquesta tasca s’utilitza la funció TCP Open Connection. Aquesta funció requereix dos paràmetres, la direcció IP del servidor i el port per on es realitzarà la connexió. Aquestes dades seran introduïdes per l’usuari. Un cop oberta la connexió ja es poden enviar les dades. En aquest cas les dades ha enviar corresponen al valor de gir i d’acceleració del robot. Per enviar-ho es crea un array que conté aquesta informació. Com que les dades ha enviar per TCP IP han de tenir format string cal utilitzar la funció Type Cast per canviar el format de numèric a string. Seguidament s’utilitza la funció String Length, aquesta funció retornarà el nombre de caràcters a enviar, informació indispensable per poder realitzar la connexió. Un cop conegut el nombre de caràcters a enviar, es realitza l’enviament utilitzant la funció TCP Write. Seguidament s’envia l’ informació utilitzant un altre cop la funció TCP Write.

5.2.5.2 Lectura de trames ASCII

El PC del robot, que actua com a servidor, enviarà al client les dades d’acceleració en format ASCII. La trama enviada pel servidor correspon amb el format següent.

X= 0.000 Y= 0.000 Z= 0.000

33

Imatge 37: Lectura de caràcters ascii per TCP-IP

Per llegir informació per TCP_IP cal conèixer la longitud de la trama a llegir. En el cas que ens ocupa la trama enviada per l’acceleròmetre és de 26 caràcters.

X= 0.000 Y= 0.000 Z= 0.000

Per realitzar la lectura s’utilitza la funció TCP Read especificant la longitud de la trama com a paràmetre. A la sortida de la funció es llegeix la trama en format string. Un cop obtinguda la trama, cal extreure’n la informació.

5.2.6 Obtenció dels valors d’acceleració

Un cop rebuda la trama cal descomposar-la per obtenir els valors d’interès corresponents a l’acceleració de cada eix.

Imatge 38: Processat de la trama rebuda del acceleròmetre

Per obtenir l’ informació de les acceleracions es processa la cadena de caràcters llegida a través del TCP-IP de tres maneres diferents per obtenir els valors corresponents als eixos x,y i z. Per separar la cadena s’utilitza la funció Search/split

String. Aquesta funció separa la cadena quant troba el caràcter indicat, a la sortida es

34

pot triar qualsevol de les dues parts de la cadena. També s’utilitza la funció Reverse

String quant resulta convenient separar la cadena ordenada al revés. Un cop obtinguts els valors s’escriuen en un array per tal de poder-los representar gràficament i numèricament en una taula.

5.2.7 Lectura d’un joystic USB

En el cas que l’usuari desitgi controlar els moviments del robot amb un joystic USB, el procediment per la seva lectura és el que es detalla a continuació.

Imatge 39: Lectura d’un Joystic USB

Labview és capaç de reconèixer qualsevol dispositiu de joc USB i permet utilitzar-lo amb gran facilitat. La funció inicialize joystic, com el seu nom indica, serveix per inicialitzar el dispositiu, seguidament, el flux de senyal entra dins el bucle principal de programa on es troba la funció Acquire Input Data. Aquesta funció s’encarrega de llegir els diferents botons i palanques del joystic i presenta les dades en forma de clúster, al desempaquetar-lo mitjançant la funció unbundle by name, ja es té accés a les dades enviades pel joystic. Aquestes dades es modificaran i adaptaran per poder controlar el San Bernardo. En aquest cas les dades es mostren en indicadors situats al panell frontal del programa. Al sortir del bucle principal s’utilitza la funció close Input Device per tancar la comunicació amb el dispositiu.

Els valors de lectura del joystic són d’ aproximadament 32700 per l’acceleració i 32700 pel gir, aquests valors no ens son útils per al control de motors ja que el serializer

35

Imatge 40: Processat i acondicionament de les dades obtingudes en la lectura del

Joystic

tan sols suporta valors entre el 100 i -99 pel gir i 100 i -100 pels valors de velocitat. Aquests valors màxims no són vàlids pel control del San Bernardo ja que la barra de direcció no permet un gir de les rodes superior als valors de -35 i 35. Pel que fa a l’acceleració, degut al consum dels motors no es permeten valors superiors a 50 ni valors inferiors a 15, ja que el motor no arrancaria. Per aquest motiu ens cal un sistema per obtenir el valor proporcional al recorregut del joystic sense accedir aquets límits.

Per aconseguir-ho s’utilitzen quatre estructures condicionals , una pels valors positius d’acceleració, una pels valors negatius i el mateix pels valors de gir. En complir-se la condició, dins l’estructura s’aplica un factor de conversió per obtenir els valors proporcionals i s’activa l’indicador corresponent a avançar, retrocedir i girar a dreta o esquerra. Un cop s’han obtingut els valors proporcionals, s’assegura que aquests estiguin dins dels límits establerts amb una altre estructura condicional. Si el valor és superior al esperat, es redueix fins al valor màxim, en cas que els valors d’acceleració siguin inferiors a 15, es veuran reduïts a zero.

Finalment obtenim els valors de gir positius per la dreta i negatius per l’esquerra i valors d’acceleració positius per avançar i negatius per retrocedir assegurant que aquests no sobrepassen els límits establerts. Aquests valors seran enviats per TCP-IP al

36

servidor per realitzar els moviments del robot. El comportament del robot pel que fa a l’acceleració es regeix segons la gràfica següent.

Imatge 41: Resposta del motor en funció des valors d’acceleració

5.2.8 Lectura d’un teclat

En el cas que l’ordinador client no detecti cap joystic connectat tirarà un avís per pantalla indicant que el control manual del robot s’efectuarà mitjançant teclat utilitzant les tecles dreta, i esquerra per girar i s per parar. La velocitat de desplaçament del robot es controlarà amb el ratolí utilitzant una barra de desplaçament.

Imatge 42: Lectura del teclat del PC

Per poder controlar el teclat cal utilitzar la funció Acquire Input Data acompanyada de KeyType connectat a una estructura condicional. En el cas que es pugui accedir al teclat l’estructura condicional prendrà valors de les tecles disponibles al ser polsades, en aquest cas tan sols s’utilitzen les tecles esquerra i dreta i la s. En la imatge es pot veure com al polsar la tecla esquerra, s’activa l’indicador corresponent al panell frontal i es dona el valor -35 al gir, per tant s’està girant al màxim les rodes en direcció esquerra. El mateix es fa per la tecla dreta però el valor és 35. En la tecla s es posa 0 el valor d’acceleració.

37

5.2.9 Capturar mostra i patrons de color

Aquesta part del codi s’encarrega de crear els patrons de color per utilitzar el robot en mode autònom com ha seguidor de colors.

Imatge 43: Captura d’imatges

La condició que dona accés a la funció és comprovar si existeix l’arxiu c:\fotolabview\mostres\0.jpg, aquest arxiu correspon a una imatge capturada per la càmera, de la qual s’extraurà la ROI (region of interest). En la primera imatge, s’hi no s’ha creat l’arxiu, i es desitja crear un patró, es captura la imatge utilitzant l’estructura anteriorment comentada. El segon pas de l’estructura seqüencial, correspon a un retard per assegurar que la imatge s’ha guardat correctament.

Imatge 44: Obtenció de la imatge patró

En la tercera part de l’estructura seqüencial, es reserva un espai a la memòria per guardar-hi una imatge utilitzant la funció IMAQ Create, seguidament i utilitzant la funció IMAQ ReadFile, es carrega la imatge capturada anteriorment. La funció IMAQ ConstructROI s’encarregarà d’obrir la imatge en una finestra nova i ens dona l’opció de

38

triar una regió d’interès de forma rectangular. En haver seleccionat la regió d’interès, les dades de la imatge i la regió d’interès es guarden en dues variables Image out 2 i ROI

Descriptor Out 2.

Imatge 45:Conversió de la imatge obtinguda en patró per visió artificial

Com que ja s’ha creat la mostra requerida per accedir a l’estructura condicional, en aquest cas la condició és compleix, i per tant s’executa la part True de l’esmentada estructura. En aquesta part de l’estructura el primer que es fa és reservar un lloc a memòria per guardar-hi una imatge, seguidament utilitzant la funció IMAQ extract i utilitzant les dades de la regió d’interès guardades anteriorment, aquesta s’extreu de la imatge. La següent tasca ha realitzar és la configuració de com s’ha d’aprendre el patró de color, la funció IMAG Setup Learn Color Pattern és l’encarregada de realitzar-ho, finalment la funció IMAG Learn Color Pattern converteix la imatge extreta en un patró, tan sols cal guardar l’arxiu com ha PNG with Vision Info.

5.2.10 Visió artificial amb ImaQ Vision

Un dels requisits inicials del projecte era que el robot tingués la capacitat de seguir patrons de color seleccionats per l’usuari. El mòdul imaQ vision de labview ens facilitarà una sèrie de funcions que permetran dur a terme aquesta tasca.

En primer lloc, per dur a terme aquesta tasca s’ha utilitzat una estructura condicional if, aquesta estructura s’encarrega de comprovar que l’usuari ha pres una mostra d’imatge i sobre aquesta mostra ha seleccionat un patró de color. Si es compleixen aquests requisits i l’usuari selecciona el mode autònom, s’executarà la part del codi encarregada de gestionar la visió artificial.

39

Imatge 46: Espais de memòria per la imatge mostra i la imatge patró

En el primer pas de l’estructura seqüencial es reserven dos espais de memòria per albergar imatges d’imaq vision utilitzant la funció IMAQ Create.

Imatge 47: Obertura d’arxius d’imatge

En el segon pas s’obre la mostra d’imatge presa anteriorment utilitzant la funció IMAQ ReadFile . A aquesta imatge, se li assigna l’espai de memòria creat anteriorment i es mostra per l’indicador dret del panell frontal de l’aplicació.

40

Imatge 48: Obertura de la imatge patró

El tercer pas es exactament igual que l’anterior, s’obre el patró que cal buscar en les diferents mostres. Aquesta imatge es mostra al panell frontal en l’indicador d’imatge mes petit situat just a sota de l’anterior. Aquesta imatge també se li assigna l’espai de memòria creat en el primer pas.

Imatge 49: Pren una nova mostra d’imatge

Un cop carregades les dades inicials, es crea un bucle que s’encarregarà de la visió artificial pròpiament dita. Dins d’aquest bucle s’utilitza una estructura seqüencial. El primer pas d’aquesta estructura és capturar una imatge de la càmera utilitzant el node

41

de propietats corresponent tal com s’ha explicat anteriorment. El terminal de contatge d’iteracions del bucle s’utilitza com a nom per guardar la captura d’imatges. Per poder-lo utilitzar cal convertir el valor numèric a string mitjançant la funció number to

decimal string.

Imatge 50: Retard

Un cop guardada la mostra d’imatge cal esperar un temps prudencial per assegurar que s’ha guardat correctament. Realitzant diverses proves s’ha arribat a la conclusió que un valor adequat pot ser un retard de 25 ms.

Imatge 51: Apertura d’ imatges d’una carpeta

El següent pas de l’estructura seqüencial és obrir la mostra presa anteriorment utilitzant la funció Get image from Folder. A aquesta funció se li indica la ruta on es troba la carpeta que conté les imatges a obrir.

42

Imatge 52: Recerca del color a la mostra

Entre aquest pas i l’anterior es posa en marxa un rellotge per contar el temps que dura el processat de la imatge.

Un cop oberta la imatge captada i el patró creat, cal configurar com es durà a terme la recerca del patró. Per això s’utilitza la funció IMAQ Setup Match Color

Pattern. Els paràmetres tenen el següent significat:

Color Score Weight: Aquest paràmetre se li dona un valor de 0,00 indicant que en la puntuació final de la comparació entre mostra i patró, el major pes el tindrà la comparació de colors.

Match mode: Configura com es buscarà la mostra en el patró. El paràmetre escollit és

Rotation Invariant. D’aquesta manera no es té en conte si s’ha girat l’objecte a buscar en referència al patró original.

Color: Tan sols es té en conte el color de l’objecte. També és possible tenir en conte la forma o el color i la forma conjuntament. Color sensitivity: Configura la sensibilitat en la comparació de colors. En el nostre cas s’ha triat una sensibilitat baixa ja que les diferents condicions de llum condicionen el color. Search strategy: Aquest paràmetre s’ha configurat amb la opció agressive que té en compte tot l’espectre de color del patró per buscar-lo a la mostra.

Un cop configurat l’IMAQ Match Color Pattern se li enviaran les imatges de mostra i patró per que realitzi la recerca. El control anomenat grau de coincidència del color servirà per ajustar la puntuació mínima que ha de tenir el resultat de la comparació. Com més alta sigui la puntuació, més grau de coincidència haurà de tenir la

43

mostra i el patró perquè la comparació resulti vàlida. L’indicador si\no ens indicarà al panell frontal de l’aplicació si la comparació ha resultat positiva o no.

Imatge 53: Calcula el temps de búsqueda

Un cop efectuada la recerca de color, es resta el temps del rellotge que s’ha creat en la seqüència 3 del actual, d’aquesta manera s’obté el temps que ha calgut per efectuar la comparació entre mostra i patró.

Imatge 54: Visió artificial

44

1- Aquesta part del codi s’encarrega de marcar la zona de la mostra agafada on s’ha localitzat el patró, en el cas que s’hagi localitzat. Descomponent el clúster position , s’obtenen les posicions expressades en coordenades referents a la imatge on s’ha trobat la coincidència entre mostra i patró.

2- Aquest apartat s’encarrega de controlar el salt de píxels que hi ha entre la localització d’un patró i la següent.

La magnitud de la mostra apreciada a través de la càmera varia segons la distància a la que es troba el robot. Això fa que si s’agafa com a patró un objecte llunyà, al acostar-s’hi el robot, l’objecte anirà incrementant la seva mida i per tant el color seleccionat es localitzarà en diferents àrees de la pantalla distants entre si. Aquest fet pertorbarà la acció del controlador i farà que el robot no segueixi l’objecte correctament. Llavors si el salt de coordenades és superior a l’indicat per l’usuari, la posició llegida no serà valida i no es tindrà en conte per prendre l’acció de control.

Per aconseguir-ho s’utilitzen dos arrays amb els valors de coordenades x i y, es resta la mostra actual i l’anterior. El resultat és indicat amb un indicador led al panell frontal anomenat coordenades vàlides.

3- Es defineix un array que contindrà les coordenades XY. 4- Es mostren les coordenades x e y referents a la càmera en una taula. 5-Es fa una gràfica de les coordenades anteriors per mostrar el recorregut que ha fet l’objecte en relació a la càmera.

6- S’aplica un algoritme PID que serà l’encarregat de guiar el robot cap a l’objecte. La consigna del controlador és 320. Aquesta consigna fa referència al valor de les X on es troba l’objecte respecte a la càmera. Per tant la missió del controlador és aconseguir que l’objecte ha buscar es trobi centrat a la càmera. El controlador PID actuarà sobre els valors de gir del robot mentre aquest avança a velocitat constant.

7-Es realitza una gràfica del comportament del controlador, en ella es mostren el valor actual, el valor de la consigna i el valor de resposta.

45

Imatge 55: Control d’errors

En aquest pas el que es fa és comprovar si les coordenades son vàlides, en el cas negatiu, s’acumulen fins a un màxim de tres. En el cas que hi hagi mes de tres salts de coordenades superiors al valor especificat per l’usuari el robot s’atura.

Imatge 56: S’esborren les mostres un cop processades

En aquest pas s’esborren les imatges preses anteriorment per tal de no ocupar espai innecessari al disc dur. S’hi s’han pres mes de dues fotos, com que el nom de les fotografies és numèric correlatiu, es resta 2 al nom de la foto actual per assegurar-se de no esborrar una imatge que s’estigui utilitzant.

46

Imatge 57: Enviament de dades per TCP-IP

En aquest pas de la seqüència es gestiona l’enviament de dades per ethernet al robot mentre s’executa la visió artificial.

1- Si les coordenades son valides, es crea un array amb el valor de gir obtingut pel controlador i un valor de velocitat constant de 25. 2-Si les coordenades obtingudes no son correctes o no s’ha trobat el color patró a la mostra es crea un array amb l’últim valor de gir decidit pel controlador i velocitat zero per aturar el robot. 3.S’envien les dades d’acceleració i gir al robot tal com s’ha explicat anteriorment. 4. Es llegeix la trama de l’acceleròmetre per tcp-ip utilitzant la funció tcp read, es separa la cadena rebuda i s’escriuen els valors a una taula i gràfic del panell frontal.

Imatge 58: Retard

L’últim pas de la seqüència s’introdueix un temps d’espera de 25 ms per no crear un bucle que consumeixi tota la CPU disponible en l’ordinador.

47

5.2.11 Generació de fitxers excel amb Labview

Una de les especificacions inicials de disseny és la possibilitat de capturar dades tant dels moviments del joystic amb el qual es controla el robot com de les dades captades per l’acceleròmetre. Per aconseguir-ho s’han utilitzat les funcions de “microsoft office report generation” que incorpora Labview.

Imatge 59: Generació d’arxius excel amb labview

Al apretar el botó Genera Excel, s’obrirà un arxiu de microsoft excel amb les dades capturades anteriorment.

En primer lloc cal utilitzar la funció new report, aquesta funció se li passa com a paràmetres el tipus de fitxer desitjat, i la ruta on es troba el fitxer que contindrà la informació. El següent pas és incloure una fulla nova en l’arxiu per tal de no sobreescriure dades que s’hagin pogut guardar anteriorment la funció encarregada de realitzar aquesta tasca és la Excel add worksheet. Un cop creada una fulla nova cal especificar que és en aquesta on es volen introduir les dades utilitzant la funció Excel

Get worksheet. Un cop fet això, la funció append table to report s’encarregarà d’adjuntar les dades situades prèviament en un array en format string a les cel·les del full d’excel perquè puguin ser analitzades. S’utilitza el mateix mètode per l’acceleròmetre i els moviment del joystic.

5.2.12 Representació gràfica de dades

En la majoria dels casos és suficient representar les dades gràficament amb els indicadors gràfics que incorpora Labview. Però en alguns casos es convenient crear mètodes de representació de dades propis.

48

En aquest cas ha resultat adequat crear un indicador capaç de mostrar de forma qualitativa els valors d’acceleració del robot utilitzant les opcions de 3D que incorpora Labview.

Imatge 60: Alertes d’acceleració

Les barres indicadores que inicialment es troben situades al centre de l’àrea de desplaçament, mostren els valors d’acceleració entre -1,5G i 1,5G sent -1,5G l’extrem esquerra, 0 el centre i 1,5G la dreta. Els led és mantenen en verd mentre no existeix alguna acceleració perillosa, en el moment que l’acceleració pren valors insegurs per la integritat del robot, el led es torna vermell donant una alerta al usuari.

Imatge 61: Codi de l’indicador d’alertes d’acceleració

Per crear l’indicador gràfic 3D Cal crear un objecte, en aquest cas la barra que es desplaça horitzontalment. L’àrea de moviment de l’indicador consta de 30 punts, d’aquesta manera multiplicant els valors d’acceleració per 10 s’aconsegueix fer coincidir la posició relativa del indicador amb el valor d’acceleració. La funció create

object crearà l’objecte i la funció creat box li dona forma i dimensions. Utilitzant el node de propietats Scene Object combinat amb les funcions clear transformation i translate object s’aconsegueix desplaçar l’indicador en funció del valor d’acceleració. El valor del moviment correspon a l’eix de les X i es passa com a paràmetre en format clúster a la funció Translate object . Per l’indicador led s’utilitzen dos comparadors ajustats a 12 i -12 per canviar de verd a vermell. Per tant en acceleracions superiors a 1,2 G o inferiors a -1,2G l’indicador es mantindrà en vermell.

49

6 Proves i resultats

6.1 Ajust de les constants de l’algoritme PID

Per ajustar les constants de l’algoritme PID encarregat de dirigir en robot mentre s’utilitza el mode de visió artificial s’ha realitzat a prova i error. El motiu d’utilitzar un mètode experimental i no teòric és que el robot des del punt de vista del controlador és una planta de la qual es desconeix qualsevol informació. En els casos en que es desconeix la planta, l’ús d’un algoritme PID dona la certesa que tot i les condicions d’elevat soroll que presenta el sistema, aquest serà capaç de dur a terme l’acció de control amb èxit.

Prova 1: Kp=0,2 Ki=0,15 i Kd=0,008

Imatge 62:Resposta PID

El sistema es mostra incapaç de seguir la consigna, cada cop se’n allunya més, l’acció correctora del controlador és insufucient.

Prova 2: Kp=0,2, Ki=0,12 i Kd=0,008

Imatge 63:Resposta PID

50

El sistema s’acosta a la consigna amb una mica d’oscil·lació, al estar molt proper augmenta l’oscil·lació fins a perdre de vista l’objectiu.

Prova 3: Kp=0,2, Ki=0,25 i Kd=0,008

Imatge 64:Resposta PID

El sistema es recupera després d’haver perdut de vista l’objecte, s’acosta a la consigna de forma excessivament lenta.

Prova 4: Kp=0,3, ki=0,2 i Kd=0,008

Imatge 65:Resposta PID

El sistema reacciona de forma brusca i es mostra incapaç d’arribar a la consigna.

51

Prova 5: Kp=0,1, Ki=0,15 i Kd=0,01

Imatge 66:Resposta PID

La resposta del sistema és molt suau, l’acció correctora és insuficient per mantenir el robot en consigna.

Prova 6: Kp=0,2, Ki=0,1 i Kd=0,05

Imatge 67:Resposta PID

El sistema és manté proper a la consigna però l’oscil·lació és creixent i cada cop s’allunya més de l’objectiu.

52

Prova 7: Kp=0,2, Ki=0,1 i Td=0,1

Imatge 68:Resposta PID

El sistema mostra unes reaccions excessivament brusques que l’allunyen de la consigna.

Prova 8: Kp= 0,35, Ki=0,15 i Kd=0,1

Imatge 69:Resposta PID

El sistema s’apropa i s’allunya de la consigna és incapaç de seguir en consigna un cop assolida.

53

Prova 9: Kp=0,35, Ki=0,15 i Kd=0,1

Imatge 70:Resposta PID

El sistema és incapaç d’acostar-se a la consigna, se’n allunya fins arribar a perdre de vista l’objectiu.

Prova 10: Kp=0,35, Ki=0,15 i Kd=0,1

Imatge 71:Resposta PID

El sistema es recupera després d’un error i es manté força proper a la consigna tot i que s’acaba desviant.

54

Prova 11:Kp=0,2 Ki=0,2 i Kd=0,008

Imatge 72:Resposta PID

De les nombroses probes realitzades s’han escollit les imatges anteriors, en algunes d’elles l’algoritme de control era totalment incapç de seguir la consigna, en d’altres el temps d’establiment era desmesurat, en d’altres l’oscil·lació del sistema era tan exagerada que el robot es desplaçava com si d’una serp es tractés. De totes les proves realitzades la que ha donat millor resultar és la corresponent a la imatge 72. El sobre pic del sistema no és massa elevat i tarda tan sols un segon en assolir la consigna, temps molt ràpid tenint en conte la velocitat de resposta del sistema. L’oscil·lació es gairebé nul·la. El sistema mai es pot mantenir fixa en consigna ja que la direcció del robot no va perfectament recta i sempre calen efectuar correccions en la trajectòria.

6.2 Proves de visió artificial amb llum interior

Imatge 73:Visió artificial amb llum interior

En l’imatge anterior es mostra la recerca amb èxit d’un patró de color vermell de 23x20 cm a una distancia d’ aproximadament 15m.

55

Buscant unes condicions de llum més dures s’obtenen les proves següents:

Imatge 74: Visió artificial amb llum interior intensa i diversos objectes del mateix color

En aquesta prova es veu com en condicions de llum molt dures la càmera és incapaç d’enfocar la imatge correctament. El patró de color triat és troba present en més d’un objecte, en aquest cas no es pot saber quin objecte seguirà el robot ja que el patró a seguir es tan sols el color i no es té en conte la forma.

Imatge 75:Visió artificial amb llum interior i un patró poc contrastat amb el fons

En les mateixes males condicions lumíniques que en la prova anterior s’enganxa un paper a la porta d’un color que no resalta amb el fons. A una distància de 3m el sistema de visió és capaç de detectar el paper amb éxit.

56

En cas de seleccionar un patró multicolor, el sistema també és capaç d’identificar-lo.

Imatge 76:Visió artificial amb llum interior i patró de colors diversos

Fins ara totes les proves han estat amb un patró d’un sol color, en aquest cas s’ha triat un patró amb diferents colors. Com s’aprecia en l’imatge el sistema és capaç de localitzar el patró amb éxit.

Imatge 77:Objectiu de la camera del robot saturat

En aquesta última imatge s’han portat les condicions lumíniques fins l’extrem de saturar l’objectiu de la càmera, en aquestes condicions el sistema no és capaç de localitzar cap color.

57

6.3 Proves de visió artificial amb llum exterior

Un cop realitzades les proves amb llum interior, es realitzen amb llum exterior per tal d’analitzar-ne el comportament.

Imatge 78:Visió artificial amb llum exterior

El patró de color triat és el mateix que en les condicions de llum interior, en aquest cas es veu com el color patró queda menys definit que en el cas anterior degut al reflex del sol, tot i així es localitza el patró a una distància d’ aproximadament 5m.

Imatge 79:Visió artificial amb llum exterior

En aquesta prova el patró a seguir és el mateix que l’anterior, en aquest cas la distància entre el robot i l’objecte és de 13m aproximadament. El robot es troba al sol i el patró a l’ombra, tot i la diferència de lluminositat i la distància, el sistema és capaç de localitzar el color amb èxit.

58

En aquesta última prova, s’ha enganxat un paper a la paret amb una diferència de color poc marcada respecte la paret. Al veure el patró de color es pot arribar a la conclusió de que el sistema no serà capaç de localitzar-lo degut a la falta de contrast entre colors. L’imatge 80 així ho confirma, el sistema detecta la paret com un color vàlid quant en realitat el color a seguir és el del paper.

Imatge 80:Visió artificial amb llum exterior

6.4 Proves de mesures d’acceleració en diferents condicions

Per tal de comprovar el funcionament de la integració del sensor de acceleració s’han realitzat diverses proves en condicions diferents. Aquest estudi es limita a prendre les dades llegides pels sensors en diferents condicions i diferents temps de mostreig, sense entrar en detalls profunds d’anàlisi de les dades obtingudes. Tenint en compte la ubicació del sensor, l’eix de les X correspon a l’acceleració lateral, l’eix de les Y a l’acceleració frontal y l’eix Z correspon a la força de gravetat.

El primer apartat d’aquestes proves consta de comprovar si utilitzant únicament les dades obtingudes pel sensor d’acceleració es pot diferenciar entre estar en una pujada o baixada.

59

De les gràfiques anteriors es pot treure la conclusió que amb l’eix de les X no es pot diferenciar entre una pujada i una baixada ja que les dades d’acceleració obtingudes giren en torn dels -0,08 G. Aquest valor respon al fet que al estar aturat el robot l’acceleració lateral experimentada és zero. Aquest valor de lectura correspon al valor d’offset que cal aplicar a aquesta mesura.

60

En la gràfica de l’eix de les Y es pot apreciar una diferencia entre la pujada i la baixada. En el cas en què el robot es troba aturat en baixada es pot veure que les dades són més disperses que en el cas de la pujada. Si es calcula la mitjana aritmètica es pot veure que en la baixada el valor mig d’acceleració és de -0,02 G i en la pujada el valor és 0,149 G.

61

En les gràfiques corresponents a l’eix Z tampoc es pot diferenciar entre la pujada i la baixada. Amb el robot aturat aquest valor ha de ser 1 ja que la força llegida és la de la gravetat. De les gràfiques anteriors es pot veure que l’informació representativa es troba en l’eix de les Y.

En les gràfiques següents es repeteix la prova de baixada i pujada però en aquest cas el robot es troba en moviment a velocitat constant.

62

En aquest cas es veu com les gràfiques estan al voltant del zero, d’aquestes

gràfiques no es pot treure una conclusió clara sobre si el robot es troba en una pujada o una baixada. Pel que fa a l’eix Y i Z la conclusió és la mateixa. En la següent prova s’intentarà diferenciar entre circular per un sòl llis i un rugós. Com s’ha vist anteriorment les dades de l’eix X i Z no són rellevants per tant s’estudiarà l’eix de les Y.

63

Observant les gràfiques es pot veure que l’acceleració de l’eix Y en sòl de grava

es troba al voltant de 0,1 mentre que en el sòl llis aquest valor és inferior, al voltant de 0,07. Al ser major l’acceleració en el sòl rugós s’arriba a la conclusió que si que es pot diferenciar el tipus de sòl sobre el qual es desplaça el robot.

Una última prova a realitzar és intentar diferenciar el sentit de gir del robot utilitzant les gràfiques següents, preses amb el robot a velocitat constant i amb un radi de gir de 2 metres. En aquest cas l’eix en el qual interessa mesurar l’acceleració és el X.

64

Comparant les gràfiques anteriors, ses pot veure com tant girant en sentit horari

com antihorari el valor d’acceleració es troba entorn a 0,1 G. En el cas de gir en sentit horari el valor és positiu i en sentit antihorari s’obté un valor negatiu. Amb aquestes dades es pot confirmar que es pot determinar el sentit de gir utilitzant la informació de l’acceleròmetre.

Finalment s’intentarà comparar el valor obtingut de forma experimental amb el càlcul teòric.

El valor d’acceleració mitjana obtingut experimentalment és de 0,112 G. L’acceleració normal correspon a 0,112*9,82 m/s2 =1,0998 m/s2

65

De forma teòrica es pot calcular:

La diferència entre el valor teòric i el valor experimental serà: 1,23-1,0998=0,13m/s2

66

7 Conclusions Com a resultat final dels procés de disseny explicat anteriorment s’han obtingut

dos programes que compleixen amb les especificacions de disseny inicials.

El programa executat en el robot San Bernadro V1 es capaç de llegir l’ informació obtinguda per un acceleròmetre connectat a un port sèrie, controlar els motors que s’encarreguen del moviment del robot a través d’una placa controladora connectada a un segon port sèrie. També té la capacitat d’establir una comunicació ethernet utilitzant el protocol TCP-IP per intercanviar dades amb el PC de control.

El programa de control i monitorització de dades també compleix les especificacions prèvies. El software realitzat amb Labview funciona com un sistema de monitorització capaç de capturar i mostrar dades. Pot actuar com un sistema de control de forma autònoma o guiada. En el funcionament autònom el sistema és capaç de captar i processar les imatges de la càmera IP incorporada en el robot, guiar-lo mitjançant un llaç de realimentació i mostrar les dades captades. En el mode guiat, el robot es controla manualment amb un comandament de la vídeo consola PS2 o mitjançant el teclat del PC, també es poden monitoritzar les dades dels sensors del robot, adquirir dades i guardar-les en un arxiu Excel per poder ser analitzades posteriorment. El sistema és capaç de gravar i reproduir vídeos capturats amb la càmera del robot.

Pel que fa referència al sistema de visió artificial, és capaç de detectar patrons de colors diversos amb gran precisió sempre que les condicions de llum no siguin extremes. En moments en que la llum és tan intensa que satura l’objectiu de la càmera o és tan dèbil que costa distingir el colors, el sistema mostra dificultats per seguir el patró degut a les limitacions del sensor de la càmera. En condicions d’enllumenat interior el sistema és capaç de detectar una capsa de color vermell de 23x20cm a una distància de 20m aproximadament. Per tant, en condicions de llum interior els resultats són millors que en condicions de llum exterior.

Apareixen dificultats en el moment en que la càmera mostra diferents objectes del mateix color ja que tots els reconeix com a patrons. Aquest fet no es pot resoldre amb les eines que Labview disposa, caldria desenvolupar un software extern i integrar-lo a Labview. Degut a la gran quantitat de dades que genera el sistema de visió artificial i el fet de no poder generar un arxiu executable d’aquest programa, al finalitzar el mode de visó artificial el sistema es mostra lent. Per poder determinar la procedència d’aquest problema caldria comptar amb el programa final compilat ja que al executar des de Labview, els recursos requerits del PC son molt elevats.

En algun moment pot aparèixer algun element perturbador que provoca una mala lectura de la trama enviada per l’acceleròmetre a través del port sèrie Rs-232. Una possible causa d’això pot ser l’acumulació d’informació en el buffer de recepció de TCP IP.

67

8 Pressupost

U Descripció Preu (€) Unitats Subtotal(€)

h Recerca 16,00 200 3200 h Programació 16,00 400 6400 h Proves 16,00 40 640

h Elaboració de documents

13,00 50 650

Total …………..………………………………………………….…….. 10.890€

68

9 Bibliografia i referencies

Bibliografia:

Labview: Entorno gràfico de programación, José Rafael Lajara, José Pelegrí, marcombo 2007

Referencies:

Labview http://www.ni.com/labview/ [2/6/2011]

Forums Labview

http://forums.ni.com/t5/Discusiones-sobre-Productos-NI/bd-p/6170 [2/6/2011]

http://lavag.org/ [30/10/2011]

Bus USB http://usuarios.multimania.es/kurganz/introduccion.html [2/6/2011]

Placa base robot www.tri-m.com/products/iei/files/manual/pmlx800_man.pdf [2/6/2011]

Serializer http://www.robotshop.com/eu/PDF/SerializerWL_UserGuide_v2.1.pdf

[2/6/2011]

Càmera AXIS http://www.axis.com/es/products/cam_206/index.htm [2/6/2011]

Acceleròmetre http://www.sparkfun.com/datasheets/Accelerometers/SerAccel-v5.pdf [2/6/2011]

69

10 Manual d’usuari Software necessari per al San Bernardo

-Ultra VNC -Windows Installer 3.1 (KB893803) - Setup Runtime Labview 8.6

Software necessari pel PC de control

-Ultra VNC -Axis video capture driver -Axis media control SDK 5.60 -Labview 8.6 complet

10.1 Software necessari pel robot San Bernardo

10.1.1 Instal·lació del Ultra VNC

Aquest software permet connectar-nos a un escriptori remot i poder controlar qualsevol PC a distancia a través d’una connexió de xarxa inal·làmbrica. Ens serà d’utilitat per poder utilitzar el PC que incorpora el robot San Bernardo sense dur a terme cap connexió. Cal instal·lar el programa tant en el PC del robot com en l’utilitza’t per controlar-lo.

Per instal·lar-lo correctament caldrà seguir els següents passos:

Imatge 81: Instal·lació Ultra Vnc pas 1

Al fer doble clic amb el botó esquerra del ratolí sobre la icona del ultraVNC apareixerà la finestra de la imatge on es seleccionarà l’idioma d’instal·lació del programa. En el cas que ens ocupa s’ha triat l’anglès. Un cop seleccionat l’idioma es clica a OK.

70

Imatge 82: Instal·lació Ultra Vnc pas 2

Seguidament apareixerà una finestra d’informació en la qual es clicarà sobre Next.

Imatge 83: Instal·lació Ultra Vnc pas 3

El següent pas és acceptar els termes de llicencia, un com llegits es clicarà sobre I accept the agreement i sobre next, amb la qual cosa s’accedirà a la següent finestra d’instal·lació.

71

Imatge 84: Instal·lació Ultra Vnc pas 4

En aquesta finestra, el programa d’instal·lació informa d’una sèrie de condicions a tenir en comte. En acabar de llegir-les es clica sobre Next.

Imatge 85: Instal·lació Ultra Vnc pas 5

En aquest nou pas del procés d’instal·lació, es triarà la ruta on es vol instal·lar el programa, sent el més recomanable deixar-la com apareix per defecte. Seguidament es clicarà sobre Next.

72

Imatge 86: Instal·lació Ultra Vnc pas 6

A continuació es triarà els components que es desitgen instal·lar, es por triar entre instal·lació completa, servidor i client. En aquest cas s’ha triat la instal·lació completa però seria suficient en instal·lar el servidor en el PC del San Bernardo i el client en el PC de control. Es clica sobre Next.

Imatge 87: Instal·lació Ultra Vnc pas 7

El programa d’instal·lació ens informa que es crearà un accés al programa en el menú inici de Windows. Es clica sobre Next.

73

Imatge 88: Instal·lació Ultra Vnc pas 8

En cas d’utilitzar Windows Vista cal descarregar una actualització per millorar la velocitat de refresc de la pantalla del pc servidor. Si utilitzem vista cal senyalar la casella Download Vista addons files now. En cas d’utilitzar qualsevol altra versió de Windows, no caldrà seleccionar aquesta casella. Es clica sobre Next.

Imatge 89: Instal·lació Ultra Vnc pas 9

Seguidament el programa d’instal·lació ens avisa que hi ha actualitzacions disponibles per Windows 2000,XP i Vista, en el cas que ens ocupa s’utilitza Windows XP, per tant cal marcar la casella Download the mirror driver i fer clic sobre Next.

74

Imatge 90: Instal·lació Ultra Vnc pas 10

Seguidament cal configurar els elements d’instal·lació com es mostra en la imatge i fer clic sobre Next.

Imatge 91: Instal·lació Ultra Vnc pas 11

Arribat a aquesta finestra, ja s’han realitzat els passos previs a la instal·lació tan sols queda instal·lar l’aplicació fent clic sobre Install.

75

Imatge 92: Instal·lació Ultra Vnc pas 12

El programa indicarà l’estat de la instal·lació.

Imatge 93: Instal·lació Ultra Vnc pas 13

76

Un cop finalitzada la instal·lació se’ns demanarà configurar el servidor, en aquest apartat cal modificar la contrasenya dins de l`apartat Authentication. Es clica sobre Apply i OK. Si el procés ha finalitzat correctament, hauria d’aparèixer la següent icona a la barra de inici.

Imatge 94: Ultra Vnc instal·lat

Aquesta icona ens indica que la instal·lació ha finalitzat correctament i el servidor esta preparat per rebre un client. Resulta de gran importància que la IP del servidor sigui fixa ja que si es variable podrien aparèixer problemes al voler connectar-hi el client.

8.1.2 Instal·lació del Windows Installer 3.1 (KB893803)

El Windows installer 3.1 és una actualització de Windows XP necessària per poder instal·lar el runtime engine de Labview. Aquesta aplicació s‘instal·larà en el pc del San Bernardo seguint els passos següents.

Imatge 95: Instal·lació del windows Installer 3.1 pas 1

77

Al fer doble clic sobre la icona corresponent s’obrirà la finestra mostrada en la imatge anterior on cal clicar Siguiente.

Imatge 96: Instal·lació del windows Installer 3.1 pas 2

En aquesta finestra cal acceptar el contracte de llicència i fer clic a Siguiente.

Imatge 97: Instal·lació del windows Installer 3.1 pas 3

Un cop completat el procés d’instal·lació cal clicar a Finalizar, llavors per completar la instal·lació el PC es reiniciarà.

78

Un cop preparat el sistema operatiu per poder instal·lar el Runtime de Labview es procedeix a la instal· lació. Aquesta aplicació és imprescindible per poder executar aplicacions compilades en Labview.

10.1.3 Instal·lació del RunTime engine de Labview

Imatge 98: Instal·lació del Labview Runtime Engine i complements pas 1

Al clicar sobre l’arxiu executable s’obrirà la següent finestra on cal esperar que s’inicialitzi l’assistent d’instal·lació.

Imatge 99: Instal·lació del Labview Runtime Engine i complements pas 2

79

Un cop iniciat el procés d’instal·lació, la següent finestra indicarà el directori d’instal·lació del software. Per passar al següent pas es clica sobre Next.

Imatge 100: Instal·lació del Labview Runtime Engine i complements pas 3

Caldrà acceptar el contracte de llicència per poder continuar, per tant es selecciona I accept the License Agreement i clicar sobre Next.

Imatge 101: Instal·lació del Labview Runtime Engine i complements pas 4

80

Seguidament l’assistent d’instal·lació informarà dels productes a instal·lar, per continuar es clica sobre Next.

Imatge 102: Instal·lació del Labview Runtime Engine i complements pas 5

Un cop acabada la instal· lació dels components necessaris es clica a Finish.

Arribat a quest punt, ja es té el San Bernardo preparat per poder accedir-hi des d’un escriptori remot i poder executar el programa que actuarà com ha servidor. En els següent passos es detalla la preparació del PC client per poder utilitzar el programa de control i monitorització de dades.

Per poder veure les imatges de la càmera IP a través de Labview calen dos drivers, Axis vídeo capture driver i Axis media control SDK 5.60.

81

10.2 Software necessari pel PC de control

10.2.1. Instal·lació del Axis vídeo capture driver

En aquest apartat s’explica la instal·lació del driver AXIS video capture.

Imatge 103: Instal·lació del AXIS Video Capture Driver pas 1

En primer lloc l’assistent d’instal·lació presenta una pantalla de benvinguda en la qual es clica a Next per continuar amb el procés.

Imatge 104: Instal·lació del AXIS Video Capture Driver pas 2

82

En la pròxima finestra caldrà acceptar els termes de llicència per continuar, es clica a I agree i a Next.

Imatge 105: Instal·lació del AXIS Video Capture Driver pas 3

En aquest punt comença l’ instal·lació, en acabar es clica sobre Next per passar a la següent finestra.

Imatge 106: Instal·lació del AXIS Video Capture Driver pas 4

83

Finalment el programa informa que d’instal·lació ha finalitzat correctament, es clica sobre Close per finalitzar l’instal·lació.

10.2.2 Instal·lació del Axis media control SDK 5.60

En aquest apartat s’explica el correcte procés d’instalació del Axis media Control SDK

Imatge 107: Instal·lació del AXIS Media control SDK 5.60 pas 1

L’ imatge anterior correspon a la finestra de benvinguda de l’instal·lador, per continuar cal clicar Next.

Imatge 108: Instal·lació del AXIS Media control SDK 5.60 pas 2

84

Per poder continuar el procés d’instal·lació cal acceptar els termes de llicència, es clica sobre I accept the agreement i sobre Next.

Imatge 109: Instal·lació del AXIS Media control SDK 5.60 pas 3

En aquesta finestra l’instal·lador informa de la ruta on es copiaran els arxius i l’espai necessari en el disc dur. Clicar a Next per continuar.

Imatge 110: Instal·lació del AXIS Media control SDK 5.60 pas 4

85

En el següent pas l’assistent d’instal·lació informa del progrés de copia d’arxius, si la copia resulta correcte, al finalitzar mostrarà la pantalla següent.

Imatge 111: Instal·lació del AXIS Media control SDK 5.60 pas 5

86

10.3. Connexió a escriptori remot mitjançant ulta VNC

En primer lloc per poder efectuar la connexió cal que el PC de control estigui connectat a la xarxa inalàmbrica RIVI. Un cop connectat a aquesta xarxa cal executar l’ ultra VNC viewer. Mostrarà la pantalla següent:

Imatge 112: Connexió a un escriptori remot amb Ultra Vnc

En aquesta pantalla a l’apartat VNC Server cal posar la IP del PC remot al que es vol connectar. Un cop posada la IP es clica sobre connect. En aquest moment el programa demanarà una contrasenya per accedir al PC, aquesta contrasenya és a.

Imatge 113: Pasword de connexió a l’escriptori remot

87

Un cop introduït el password es clica a Log On i ja es pot treballar amb l’escriptori remot.

Imatge 114: Escriptori remot

10.4 Execució del software del robot (servidor)

Per executar el software desenvolupat cal fer doble clic a la icona Soft_robot_final.exe

Imatge 115: Icona d’execució del programa del robot

En obrir-se el programa cal configurar els ports sèrie on es troben connectats el serializer i l’acceleròmetre. El PC establirà uns valors per defecte de port sèrie que cal canviar a COM 1 en el cas del acceleròmetre i COM 2 en el cas del serializer, també cal especificar el port per on es connectarà el client, en aquest cas el valor per defecte es 6342.

Imatge 116: Configuració del programa del Robot

88

Un cop fetes les configuracions prèvies ja es pot engegar el programa servidor. Per fer-ho cal clicar sobre el botó Run, situat a la part superior esquerra de la pantalla fàcilment identificable per la seva forma de fletxa.

Imatge 117: Icona d’execució del programa

El programa ja esta llest per esperar la connexió d’un client. Es sabrà que s’ha efectuat la connexió perquè apareixeran en pantalla els valors de la trama de control de gir,trama de control d’acceleració, i la trama llegida de l’acceleròmetre.

Imatge 118: Programa en execució

89

10.5 Configuració del software de control (client)

Descripció general de l’ interfície d’usuari.

Imatge 119: Programa de control i adquisició de dades

1- Vídeo captat per la càmera en temps real. 2- Pantalla on es visualitza el lloc de la mostra on s’ha localitzat el patró de color. 3- Control del sistema de visió artificial. 4- Captura d’imatges, moviments del joystic, acceleracions i vídeo. 5- Reproducció de vídeo i mostra de les acceleracions i moviments del joystic capturats 6- Informació del sistema de visió artificial. 7- Informació sobre els valors de velocitat i el gir enviats al robot. 8- Imatge patró a seguir. 9- Informació de les posicions actuals del joystic. 10-Control del robot per teclat. 11-Gràfiques de les acceleracions experimentades pel robot. 12-Gràfica del moviment efectuat per l’objecte a seguir en relació a la càmera. 13- Gràfica representativa del comportament de l’algoritme PID i ajust de constants. 14-Valors d’acceleració i alertes d’acceleracions perilloses. 15-Paràmetres de la connexió ethernet. 16-Botó per aturar el programa. 17- Indicador d’angle de gir de les rodes en º

Abans d’executar el programa de control i monitorització de dades cal tindre en conte uns quans aspectes. En primer lloc si es desitja utilitzar un joystic cal que estigui connectat abans d’executar el programa. També cal conèixer la direcció IP de la càmera que per defecte és 192.168.2.100 i la direcció IP del PC del San Bernardo que per

90

defecte és 192.168.2.101. També cal configurar el port per on es durà a terme la connexió TCP-IP, aquest valor cal que coincideixi amb el del pc servidor perquè la connexió tingui èxit. Realitzades les comprovacions anteriors ja es pot executar el programa. Al executar el programa i un cop realitzada la connexió amb el servidor, L’indicador d’estat de la connexió situat a la part inferior dreta de la pantalla es posarà verd i es començarà a visualitzar les imatges captades per la càmera del robot. En aquest moment es tindrà un control manual a través del joystic.

Imatge 120: Programa en execució

En aquest moment els diferents indicadors d’informació de moviment, alertes d’acceleració, i les pestanyes corresponents a Joystic i acceleració del robot mostraran les informacions corresponents.

Pel que fa al control manual del robot, en la pestanya Joystic es mosta la posició actual dels controls de velocitat i gir.

Imatge 121: Moviments del joystic

91

En el cas que no hi hagi cap joystic connectat el programa informarà amb el següent missatge: El joystic no s’ha pogut inicialitzar, el control del robot es realitzarà amb les tecles dreta i esquerra per girar i s per accelerar. La pestanya joystic és com la que es mostra a continuació.

Imatge 122: Control del robot amb teclat

Per efectuar el control del robot es mourà la barra anomenada velocitat de desplaçament, per valors superiors a 0 el robot avançarà i per valors inferiors a 0 retrocedirà. No és convenient utilitzar valors compresos entre -15 15 ja que no són suficients per fer moure el robot i es pot malmetre el motor. Els indicadors situats a la part inferior indiquen el moviment del robot en funció de la tecla pitjada.

La següent pestanya mostra gràfica i numèricament la informació enviada pel sensor d’acceleració del robot.

Imatge 123: Representació dels valors d’acceleració

La taula situada a la part esquerra mostra els valors d’acceleració experimentats en els eixos x, y i z. A la part dreta es pot veure una gràfica d’aquests valors. En blanc es mostra l’acceleració de l’eix Z, en verd l’eix X i en vermell l’eix Y. A la part inferior central es mostra la trama enviada pel sensor sense processar.

92

La següents pestanyes tant sols són útils quant s’utilitza el mode de visió artificial. La pestanya de moviment relatiu a la càmera té l’aspecte següent.

Imatge 124: Recorregut de l’objecte seguit pel robot

A la part esquerra de la pantalla es mostren les coordenades relatives a la càmera expressades en píxels. A la part dreta es mostra una gràfica d’aquests valors. Com es pot observar l’objecte s’ha desplaçat des del centre a l’esquerra i ha tornat cap al centre. La línia diagonal que arriba a la part superior esquerra indica que en algun moment s’ha perdut l’objecte.

La pestanya algoritme PID mostra el comportament de l’algoritme de control i dona la possibilitat de re definir les constants.

Imatge 125: Ajustament de l’algoritme de control

L’apartat de l’esquerra correspon a l’ajust dels valors de les constants del PID i el temps de mostreig. La gràfica mostra el comportament de l’algoritme marcant la consigna en vermell, el valor actual en blau i la resposta en verd. A la part dreta es mostren els valors actuals de gir de les rodes del robot, consigna i valor mesurat.

93

Control del sistema de visió

En aquest apartat del programa s’activa el mode de visió artificial, el primer que cal fer és prendre una mostra de color que servirà com a patró. Per prendre la mostra cal clicar sobre el botó Pren mostra de color.

Imatge 126: Control del sistema de visió

Al haver clicat s’obrirà una finestra com es mostra a la imatge. En aquesta finestra es marca amb el ratolí el color referent a l’objecte que es desitja que segueixi el robot.

Imatge 127: Selecció del patró de color

94

En el cas de la imatge adjunta s’ha triat el color vermell de la caixa. Un cop triat el color es pulsa sobre ok i la finestra es tancarà. En aquest moment ja es pot utilitzar el mode autònom fent clic al botó amb aquest nom.

Imatge 128: Execució en mode de visió artificial

Per facilitar el reconeixement del color amb diferents condicions de llum cal ajustar el control anomenat “Grau de coincidència del color”. Com més gran sigui el valor, més restrictiu és amb la localització del color. Mentre s’utilitza el mode autònom no es poden realitzar captures de dades ni mostrar-ne. Per sortir d’aquest mode de funcionament es clica de nou sobre el botó mode autònom. Si un cop finalitzat el mode de visió artificial es desitja crear un altre patró i tornar ha utilitzar-lo, caldrà reiniciar el programa.

95

Informació del sistema de visió

En aquest apartat es mostra informació sobre el temps que ha calgut per localitzar el patró, en el cas que el color s’hagi localitzat, l’indicador mostrarà un si de color verd, en cas contrari mostrarà un no de color vermell.

Imatge 129: Informació del sistema de visió

També s’indiquen les coordenades referents a la càmera on s’ha trobat el color. L’apartat marge de salt de en píxels fa referència al salt màxim de píxels que hi poden haver entre dues lectures per considerar-les vàlides. El funcionament de l’indicador de coordenades vàlides és idèntic al anterior.

Adquisició de dades

Aquest apartat s’encarrega de l’adquisició de dades, en fer clic sobre capturar imatges, es fan fotografies de les imatges visualitzades per la càmera en intervals de temps regulats especificats en “Interval de captura d’imatges”.

Imatge 130: Adquisició de dades

96

Les imatges capturades es troben a la carpeta c:\fotolabview\fotos. En el cas que la carpeta no existeixi caldrà crear-la. El funcionament del botó “capturar dades” és idèntic a l’anterior i s’encarrega de capturar els moviments del joystic i les acceleracions suportades en el tres eixos. El botó “capturar vídeo” realitza una gravació del que mostra la càmera. En polsar el botó comença la gravació i al tornar a polsar s’acaba.

Reproducció de dades.

Aquest apartat del programa s’encarrega de gestionar la visualització de les dades capturades. Al polsar sobre el botó “visualitzar dades capturades “ s’obre un arxiu Excel que conté les dades del joystic i de l’acceleròmetre. Per poder utilitzar aquesta opció cal tenir instal·lat el Microsoft Excel i crear un arxiu anomenat Excel dins de la carpeta fotolabview.

Imatge 131: Reproducció de dades

Al fer clic sobre reproduir vídeo capturat s’obre una finestra que permet triar el vídeo a reproduir. En obrir-lo, la barra horitzontal monitoritza el progrés en la reproducció del vídeo. Un cop començada la reproducció de vídeo no es podrà aturar fins que no finalitzi.

97

Apèndix

A 1. Comunicacions

A1.1 RS-232

La forma més senzilla de comunicar un microcontrolador ( en aquest cas els incorporats al acceleròmetre i al serializer) amb un ordinador és mitjançant un port sèrie, que és compatible amb l’anomenat estàndard RS-232.

Els ports sèrie son accessibles mitjançant connectors. La norma RS-232 estableix dos tipus de connectors anomenats DB 25 i DB9 mascles i femella. El connector DB 25 actualment ja ha caigut en desús i el DB9 són pocs els ordinadors que l’incorporen, el connector utilitzat en aquesta aplicació és un DB9.

Cada una de les potes del connector RS-232 té una funció especificada per la norma. Hi ha uns terminals pels quals es transmeten i es reben dades i altres que controlen l’establiment, flux i tancament de la connexió.

Imatge 132: Connector de port sèrie DB9

A1.1.1 Velocitat de transmissió

Una dada important a tenir en conte en qualsevol comunicació és la velocitat de transmissió, que és la quantitat d’informació enviada per una línia de transmissió per unitat de temps. Existeixen diverses unitats per expressar aquesta mesura, la més utilitzada és el baud, que és proporcional als Bits/segon (bps).

La velocitat a la que poden treballar els ports COM d’un ordinador estan normalitzades a 75,150,300,600,1200,2400,4800,9600 bauds etc. Aquests valors són insuficients pels estàndards actuals, però suficientment ràpids per moltes aplicacions.

98

A1.1.2 Nivells lògics RS-232

• Les dades es transmeten amb lògica negativa, es a dir, un voltatge positiu a la connexió representa un zero, mentre que un voltatge negatiu representa un 1.

• Per garantir un zero lògic una línia ha de mantenir un voltatge entre +3 i +15V

• De la mateixa manera, per enviar un 1 lògic garantit els valors de tensió han d’estar entre -3 i – 15 V.

• Els voltatges més utilitzats són +12v per el 0 i -12 per el 1

• És important ressaltar que quan un port sèrie no està transmetent manté el terminal a -12V

• La banda morta entre +3V i -3V es coneix com la regió de transició on els nivells lògics no estan definits. Això significa que qualsevol valor dins d’aquest rang es pot interpretar com un 0 o com un 1.

Si augmenta la velocitat de transmissió, les senyals de dades es tornen susceptibles a pèrdues de voltatge causades per la capacitat, resistència e inductància del cable. Aquestes pèrdues s’accentuen amb la longitud del cable.

Aquests valors de tensió proporcionen un ampli marge de seguretat que és de gran utilitat quant els cables han de passar per zones que generen interferències.

Imatge 133: Exemple d’enviament del caràcter J per RS-232

99

A1.1.3 Format d’un Byte

La comunicació de dades en un port sèrie RS-232 s’usa normalment per efectuar comunicacions asíncrones sense temps preestablert per iniciar-se. Les dades arriben en paquets d’informació de 8 bits. Alguns equips envien caràcters per caràcter, altres guarden molts caràcters a la memòria i ens envien un rere l’altre.

El protocol RS-232 envia la informació estructurada en quatre parts:

• Bit d’inici. Es un pas de -12V a +12V, és a dir d’un 1 a un zero lògic en la lògica negativa de la norma RS-232. Quant el receptor detecta el bit d’inici sap que la transmissió ha començat i a partir d’aquest moment, ha de llegir les senyals de la línia a distàncies de temps concretes en funció de la velocitat fixada per l’emissor i el receptor.

• Bits de dades. Els bits de dades són enviats al receptor després del bit d’inici. El bit de menys pes es transmet primer i el de més pes últim. Un caràcter de dades sol consistir en 7 o 8 bits

• Bit de paritat. Depenent de la configuració de la transmissió un bit de paritat pot ser enviat desprès dels bits de dades. En aplicacions senzilles no es sol utilitzar. Aquest bit permet detectar errors de transmissió. Es pot donar paritat parell o imparell. En la paritat parell, per exemple, pa paraula de dades a transmetre es completa amb el bit de paritat de manera que el nombre de 1 enviats sigui parell.

• Bit de parada. La línia es queda a -12V després de l’últim bit enviat és a dir un 1 lògic segons l’estàndard RS-232. Indica la finalització de la transmissió d’una paraula de dades. El protocol de transmissió de dades permet 1, 1,5 o 2 bits de parada.

Per tal d’adaptar els nivells de lògica TTL als nivells de l’estendard RS-232 s’utilitza el circuit integrat MAX-232.

A1.2 TCP-IP

L’objectiu de la comunicació TCP/IP és establir una interconnexió entre xarxes per proporcionar serveis de tal manera que per l’usuari sembli que hi ha tan sols una xarxa homogènia.

Els protocols TCP/IP estan dividits en capes formant una pila de protocols. Aquesta pila estarà implementada en cada un dels nodes de la xarxa. Dins de cada node els missatges es passaran d’un nivell al següent, des de dalt fins a baix en la transmissió i des de baix fins a dalt en la recepció, posant i traient camps respectivament de forma que el missatge que arriba a un nivell sigui el mateix en el transmissor i en el receptor.

100

Així doncs es pot afirmar que hi ha una comunicació directa entre els nivells equivalents de l’emissor i del receptor, doncs la resta de nivells serien transparents.

Els camps que s’afegeixen i es treuen són bàsicament capçaleres perquè la xarxa proporcioni serveis. Per exemple, es pot afegir un codi per comprovar o corregir errors, un nombre que indiqui la seqüència d’un missatge que forma part d’una transmissió major o la direcció de destí. En la figura següent es poden veure les piles de protocols d’un emissor i un receptor i el pas dels missatges entre ells dins del propi host i a través de la xarxa.

Imatge 134: Encapsulat de dades

A1.2.1 Nivell de Xarxa

El protocol IP (Internet protocol) és el protocol d’interconnexió de xarxes més utilitzat i pertany a la capa de xarxa. La unitat bàsica de dades en comunicació IP s’anomena datagrama. La missió de IP en un node és conformar els paquets que seran passats al protocol inferior i desencapsular els paquets entrants per passar-los al protocol superior. Si les dades que rep són de mida superior a l’acceptat per la xarxa, aquest protocol ha de fragmentar la infirmació a l’emissor i reconstruir-la al receptor. Una altre característica fonamental és l’encaminament, dos dels camps de la capçalera IP són la direcció del Host d’origen i destí. Aquesta informació és utilitzada per la xarxa per fer arribar els paquets d’un node a un altre tot i no tenir connexió directa.

El protocol IP proporciona un sistema de distribució poc fiable tot i tenir una base sòlida. Els datagrames es poden retrassar, perdre’s, crear-ne duplicats, ser enviats en una seqüència incorrecta o fragmentats intencionadament per permetre que un node amb un buffer més petit que la mida del datagrama pugui agafar el datagrama complet. En algunes situacions d’error, els datagrames són descartats sense mostrar cap missatge, mentre que en altres situacions els missatges d’error són rebuts per la màquina d’origen.

Entre els camps de la capçalera IP hi destaquen les direccions tant d’origen com de destí. Cada un d’aquests camps està compost per quatre bytes, encara que es solen representar com quatre nombres decimals separats per punts. Les direccions IP s’utilitzen per identificar l’origen i el destí de la informació de la xarxa. Les direccions multi difusió són especials, ja que no fan referència a una màquina sinó a un conjunt.

101

A1.2.2 Nivell de transport

El protocol TCP ( Transmission Control Protocol) és un protocol de la capa de transport orientat a connexió. Es va dissenyar per proporcionar una corrent de bytes fiable a través d’una xarxa no fiable, és a dir, amb TCP el flux de dades entre origen i destí semblen continus: es proporciona un circuit virtual per les dades que s’anomena connexió. Els conjunts de dades en TCP s’anomenen segments.

Imatge 135:Passos en una connexió

Com es pot observar en la figura anterior, una connexió bàsica implica tres passos: obrir una connexió, efectuar un intercanvi de dades i un tancament de la connexió.

De la mateixa manera que feia IP amb les direccions, TCP té uns camps equivalents a la capçalera dedicats als ports. Cada host pot tenir varies connexions TCP obertes simultàniament, cada una en un port diferent. Un altre camp de la capçalera són una sèrie de flags que serveixen per efectuar una petició de connexió, finalització de connexió etc.

A1.2.3 Nivell d’aplicació

Per sobre del nivell de transport hi trobem el d’aplicació. En aquest nivell, si s’utilitza sobre TCP, es considera que les dades enviades arriben sempre al destí correcte, sense errors i en l’ordre adequat. Algunes vegades, s’inserten entre la capa de transport i la d’aplicació els nivells de sessió i presentació. Alguns protocols d’aquest nivell són: HTTP, SMFTP, FTP,Telnet...

A1.2.4 Arquitectures habituals

Hi ha algunes arquitectures habituals que s’utilitzen en aplicacions de xarxa com poden ser la monolítica, client-servidor i de tres nivells. En aquest cas ens centrarem en

102

la client-servidor que és la emprada en la comunicació entre el PC del San Bernardo i el PC de control.

El model client servidor és una forma de dividir les aplicacions. En aquesta arquitectura hi ha una part del sistema anomenada client que sol·licita els serveis de l’altre part anomenada servidor.

Per norma general el servidor escolta i quant el client es connecta, ell atén la petició. En entorns de xarxa el client estarà escoltant en un port del host. Tant la direcció del host com el port han de ser conegudes pel client; aquest, en principi, utilitzarà qualsevol port que es trobi disponible en el seu host per establir la connexió. Normalment el sistema operatiu és l’encarregat de gestionar els ports.

A1.3 USB

El USB ( Universal serial bus) és una interfície per la transmissió sèrie de dades. És fins a 100 vegades més ràpid que un port sèrie RS-232.

Aquesta interfície de quatre fins distribueix 5v per l’alimentació i pot transmetre dades a una velocitat de fins ha 480Mbps en la seva versió 2.0. És un bus sèrie que permet connectar fins a 127 perifèrics a un únic port del PC, amb detecció i configuració automàtica en molts casos. La principal desavantatge és que ha de repartit l’ample de banda entre els diferents dispositius connectats al bus.

A1.3.1 Topologia del bus

El Universal Serial Bus connecta els dispositius USB amb el Host USB. La interconnexió física USB és una topòlogia en estrelles apilades on el hub és el centre de cada estrella. Cada segment de cable és una connexió punt a punt entre el host i els hubs o entre dos hubs.

Com s’ha dit anteriorment el nombre màxim de dispositius que es pot connectar al usb és de 127, però degut a les constants de temps permeses pels temps de propagació dels hubs i el cable, el nombre màxim de capes permès és de set amb un màxim de longitud entre hub i el dispositiu de cinc metres. Cal destacar que set capes tan sols suporten cinc hubs.

103

Imatge 136: Estructura de capes del bus USB

La topologia del bus USB es pot dividir en tres parts:

• Capa física: Com estan connectats els elements físicament

• Capa lògica: Els rols i les responsabilitats dels elements USB

• La relació software del client-funció: Com es veuen mutuament el software clients i les interfícies de les funcions relacionades.

Imatge 137: Flux de comunicacions en una connexió USB

104

A1.3.1.1 Capa física

L’arquitectura física del USB es centra en les peces de plàstic i metall amb les que l’usuari ha de tractar per construir un entorn USB. Cada entorn físic USB està compost pels següents tipus de components:

• El host

• El controlador del host

• Els dispositius

Els dispositius estan connectats físicament al host a través d’una topologia en estrella, com s’il·lustra a la figura. Els punts d’acoblament estan previstos d’una classe de dispositius anomenats hubs, els quals tenen uns punts d’acoblament addicionals anomenats ports. Els hubs es connecten a altres dispositius a través d’enllaços (cables de quatre fils).

El host proporciona un o més punts d’acoblament a través del hub arrel. Per prevenir els acoblaments circulars, s’imposa una estructura ordenada per capes de topologia estrella i com ha resultat s’obté la figura següent.

Imatge 138: Topologia física del bus USB

Totes les comunicacions físiques son iniciades pel host. Això significa que cada mil·lèsima de segon el host preguntarà per nous dispositius en el bus USB. El host és l’encarregat de suportar totes les transferències de dades sobre la capa física.

105

A1.3.1.1.1 El host USB

El host és el sistema de computació complet, incloent el software i el hardware, sobre el qual es sosté el USB.

El host té l’habilitat de processar i gestionar els canvis de configuració que puguin aparèixer en el bus durant el seu funcionament, gestiona el sistema i els recursos del bus com l’ús de la memòria de sistema, l’assignació de l’ample de banda i l’alimentació del bus. El host també ajuda al usuari amb la configuració automàtica dels dispositius connectats i reacciona quan son desconnectats. Un mateix host pot suportar un o més busos USB. El host gestiona cada bus independentment dels altres. Els recursos específics del bus com l’ample de banda assignat són únics per a cada bus. Cada bus està connectat al host a través d’un controlador de host.

Tan sols hi ha un host en qualsevol sistema USB. Des de la interfície USB fins al sistema de host del ordinador és el que s’anomena controlador de host i pot estar implementat com una combinació de hardware, firmware o software. Integrat dins del sistema de host hi ha un hub arrel que proveeix d’un major nombre de punts d’acoblament al sistema.

A1.3.1.1.2 El controlador de Host

El controlador del host està format pel hardware i el software que permet als dispositius USB ser connectats al host. Aquest controlador és l’agent iniciador del bus, és a dir, el que inicia les transferències. El controlador de bus és el mestre en un bus USB. En l’arquitectura USB tan sols hi ha un controlador de host per cada bus i per això no hi ha arbitratge per l’accés.

Com que les transferències de dades entre els dispositius poden ser basades en dades o en la disponibilitat d’espai del dispositiu, la majoria dels controladors de host estan implementats com dispositius mestre del bus PCI la qual cosa permet al controlador del host iniciar una transferència de dades en el bus del sistema quant sigui necessari, sense requerir la intervenció del host de la CPU per cada transferència. El controlador es comporta com un bus mestre PCI multicanal programable per donar suport a les necessitats de transferència de dades dels múltiples dispositius connectats al bus USB.

106

Imatge 139: controlador de host

En aquesta figura es mostra una vista conceptual del controlador del bus USB. La part de software consisteix en el driver del controlador de host. Aquest software interactua amb el hardware del controlador a través de d’interfície hardware/software. La part hardware del controlador de host consisteix en un hub arrel que proporciona els ports USB i els buffers de dades on són emmagatzemades quant son mogudes des de memòria.

Les funcions bàsiques del controlador de host són:

• Detectar d’inserció o desconnexió de dispositius USB • Gestionar el flux de control entre els host i els dispositius • Gestionar el flux de dades entre el host i els dispositius • Elaborar estadístiques d’activitat i estat • Proveir una quantitat limitada d’energia als dispositius connectats.

A1.3.1.2 Capa lògica

Des d’un punt de vista lògic presenta capes que són rellevants per tasques de disseny. L’arquitectura lògica descriu com unir el hardware del dispositiu USB a un driver de dispositiu en el host per què el comportament final sigui el desitjat.

La vista lògica d’aquesta connexió és la mostrada en l’esquema següent. En ell es pot veure com el host proporciona connexió al dispositiu a través d’un simple enllaç, cada dispositiu té la seva pròpia connexió punt a punt amb el host. D’es d’un punt de vista lògic, els hubs també són dispositius però no es mostren per simplificar l’esquema.

Encara que la majoria d’activitats dels host o dels dispositius lògics utilitzen aquesta perspectiva lògica, el host manté el coneixement de la topologia física per donar

107

suport al procés de desconnexió dels hubs. Quant es desconnecta un Hub tots els dispositius connectats a ell són trets de la vista lògica de la topologia.

Imatge 140: Capa lògica

A1.3.1.3 La relació software del client-funció

A pesar de que la topologia física i lògica del USB reflexa la naturalesa de compartir el bus, la manipulació de la interfície USB per part del software del client es presenta de forma diferent.

El software del client per les funcions USB ha d’utilitzar la interfície de programació software del USB per manipular les seves funcions en contraposició de les que son manipulades directament a través de la memòria o els accessos I/O com passa en altres busos. Durant aquesta operació el software del client hauria de ser independent a altres dispositius que puguin connectar-se al USB.

Imatge 141: Relació Client funció

A1.3.2 Flux de dades

Un dispositiu USB des d’un punt de vista lògic s’ha d’entendre com una sèrie d’endpoints, agrupats en conjunts que donen lloc a interfícies les quals permeten controlar la funció del dispositiu.

La comunicació entre el host i el dispositiu físic USB es pot dividir en tres nivells o capes. En el nivell més baix el controlador de host USB es comunica amb la

108

interfície del bus utilitzant cable USB, mentre que en un nivell superior el software USB del sistema es comunica amb el dispositiu lògic utilitzant la tuberia de control per defecte ( Default Control Pipe). En referència al nivell de funció el software client estableix la comunicació amb les interfícies de la funció a través de tuberies (pipes) associades a endpoints.

A1.3.2.1 Endpoints i direccions de dispositiu

Cada dispositiu USB està compost per un conjunt d’endpoints independents i una única direcció assignada pel sistema en temps de connexió de forma dinàmica. Al mateix temps cada endpoint disposa d’un identificador únic dins del dispositiu al qual pertany, a aquest identificador es coneix com nombre de endpoint i l’assigna el fabricant. Cada endpoint té una determinada orientació de flux de dades. La combinació de direcció, nombre de endpoint i orientació, permet referenciar cada endpoint de forma inequívoca. Cada endpoint per si mateix és una connexió simple que suporta un flux de dades en una única direcció ja sigui d’entrada o de sortida.

Cada endpoint es caracteritza per:

• Freqüència d’accés al bus requerida

• Ample de banda requerit

• Nombre d’endpoint

• Tractament d’errors requerit

• Màxim paquet que l’endpoint pot enviar o rebre

• Tipus de transferència per l’endpoint

• Orientació en la que es transmeten les dades

Existeixen dos endpoints especials que tots els dispositius han de tenir, els endpoints amb nombre 0 d’entrada i de sortida, que han d’implementar un mètode de control per defecte al que s’associa la tuberia de control per defecte. Aquests endpoints

són sempre accessibles mentre que la resta no ho estaran fins que no hagin estat configurats pel host.

A1.3.2.1.1 Tuberies

Una tuberia USB és una associació entre un o dos endpoints en un dispositiu, i el software en el host. Les tuberies permeten moure dades entre els software i el host a través d’un buffer i en endpoint en un dispositiu. Aquesta tuberia està sempre disponible un cop s’ha connectat el dispositiu i ha rebut el reset del bus. La resta de tuberies apareixen després de configurar el dispositiu. La tuberia de control per defecte és utilitzada pel software USB del sistema per obtenir l’identificació i els requisits de configuració del dispositiu.

109

El software client normalment realitza peticions per transmetre dades a una tuberia via IRP (I/O Request Paquet) i llavors, o espera, o es notifica que s’ha completat la petició. El software client pot causar que una tuberia retorni totes les IRP pendents. Al client se li notifica que una IRP s’ha completat correctament quant totes les transaccions del bus que té associades s’han completat correctament, o bé per què s’han produït errors.

Un IRP pot necessitar de diverses tandes per moure les dades del client al bus. La quantitat de dades en casa tanda serà de la mida màxima d’un paquet excepte l’últim paquet de dades que tan sols contindrà els que falten. Un paquet rebut pel client que no aconsegueix omplir el buffer de dades del IRP pot interpretar-se de diferents maneres en funció de les expectatives del client, si esperava rebre una quantitat variable de dades considerarà que es tracta de l’últim paquet, servint com ha delimitador de final de dades, mentre que si esperava una quantitat especifica de dades, ho interpretarà com un error.

Tuberies Stream: No necessita que les dades es transmetin amb una certa estructura. Les tuberies stream són sempre unidireccionals i les dades es transmeten de forma secuencial FIFO (first in forst out). Estan pensades per interactuar amb un únic client, amb la qual cosa no es manté cap política de sincronització entre múltiples clients. Un stream sempre s’associa a un únic endpoint en una determinada orientació.

Missatges: A diferència dels streams, en els missatges la interacció de la tuberia amb l’endpoint consta de tres fases. Primer es realitza una petició des del host al dispositiu, després es transmeten les dades a la direcció apropiada, finalment en temps després es passa a la fase d’estat. Les dades és necessari que es transmetin amb una determinada estructura. Les tuberies de missatges permeten la comunicació bidireccional. Una tuberia de missatge s’associa a un parell d’endpoints d’orientacions oposades amb el mateix nombre d’endpoint.

A1.3.2.1.2 Frames i Microframes

El protocol USB estableix una unitat de temps base equivalent a 1 mili segon denominada frame i aplicable a busos de velocitat mitja o baixa, en alta velocitat es treballa amb microframes, que equivalen a 125us. Els microframes no són més que un mecanisme del bus USB per controlar l’accés a aquest, en funció del tipus de transferència que es realitzi. En un microframe es poden realitzar diverses transaccions de dades.

110

A1.3.2.1.3 Tipus de transferències

La interpretació de les dades que es transmeten a través de les tuberies, independentment de que es faci seguint una estructura USB definida, està a càrrec del dispositiu i del software client. No obstant, el USB proporciona quatre tipus de transferència de dades sobre les tuberies per optimitzar la utilització del bus en funció del tipus de servei que ofereix la funció.

Transferències de control.

És un únic tipus de transferència que utilitza tuberíes de missatges, suporta per tant comunicacions de tipus configuració/ordres/estat entre el software client i la seva funció. Una transferència de tipus control es composa d’una transacció de setup del host a la funció, zero o més transaccions de dades a la direcció indicada a la fase de setup, i per últim una transacció d’estat de la funció al host. La transacció d’estat retornarà èxit quant l’endpoint hagi completat satisfactòriament l’operació que s’havia sol·licitat.

Per tant aquest tipus de transferència està pensat per configurar, obtenir informació i en general per manipular l’estat dels dispositius. La grandària màxima de les dades venen determinades per l’endpoint.

L’endpoint pot estar ocupat durant la fase d’enviament de dades i en la fase d’estat, en aquests casos el endpoint indica al host que es troba ocupat, el host ho intentarà més tard. Si l’endpoint rep un missatge de setup i es trobava a la meitat d’una transferència de control, avorta la transferència actual i passa a la nova que acaba de rebre. Normalment el host no inicia una nova transferència de control amb endpoint fins que no ha acabat la actual.

Transferències Isòcrones

Fan us de les tuberies stream. Garanteix un accés a bus USB amb una latència limitada, assegura una transmissió constant de dades a través de la tuberia sempre i quant hi hagi un flux de dades, en cas que l’entrega de dades falli no s’intenta reenviar.

El bus USB limita la mida màxima de les dades dels endpoints amb el tipus de transferència isòcrona a 1023 bytes pels endpoints de velocitat mitja i 1024 bytes per velocitat alta.

Transferències per interrupció

Utilitza tuberies stream. Aquest tipus de transferència està dissenyada per serveis que envien dades de forma infreqüent. Garanteix el màxim servei per la tuberia durant el període en el que envia dades. En cas d’error mentre s’envien les dades , aquestes es reenviaran en el pròxim període d’enviament de dades.

111

La mida màxima del paquet de dades és de 1024 bytes per alta velocitat, 64 bytes per a velocitat mitja i 8 bytes per baixa velocitat. No és necessari omplir els paquets que no arribin a la mida màxima. Quan en una transferència d’interrupció es necessiti transmetre més dades de les que permet el paquet màxim, tots els paquets a excepció de l’últim han de tenir la mida màxima. De tal manera que la transmissió d’un paquet s’ha efectuat quant s’ha rebut la quantitat exacta esperada o bé un paquet que no arriba a la mida màxima.

Transferències Bulk

Fa ús de les tuberies stream. Està dissenyat per dispositius que necessiten transmetre grans quantitats de dades en un moment determinat sense importar gaire l’ample de banda disponible en aquest moment. Aquesta transferència garanteix l’accés al USB amb l’ample de banda disponible, a més en cas d’error garanteix la reenviada de les dades. Per tant aquest tipus de transferència garanteix l’entrega de dades però no un determinat ample de banda.

Els dispositius de velocitat baixa no disposen d’endpoints per aquesta transmissió. No és necessari omplir el paquets fins a la mida màxima.

A1.3.3 Capa de protocol

La forma en que les seqüències de bits es transmet per USB és la següent; primer es transmet el bit menys significatiu, després el següent menys significatiu i així fins a arribar al bit més significatiu. Aquesta seqüència de transmissió s’anomena little-

endian.

Durant la transmissió s’envien i es reben paquets de dades, cada paquet de dades ve precedit per un camp Sync (senyal de sincronització del bus) i acaba amb un delimitador EOP (end of packet).

El primer camp de tot el paquet de dades és un camp PID. El PID indica el tipus de paquet i per tant, el format de paquet i el tipus de detecció d’errors aplicat. EN funció del seu PID podem agrupar els paquets en quatre grups.

112

Tipus de PID

Nom PID Descripció

Token

OUT IN SOF SETUP

0001B 1001B 0101B 1101B

Direcció+nombre endpoint en transacció host a funció Direcció+nombre endpoint en transacció funció a host Indicador d’inici(start of frame) i nombre de frame Direcció+ nombre endpoint en una transacció host a funció per realitzar el setup d’una tuberia de control

Data

DATA0 DATA1 DATA

0011B 1011B 0111B

PID de paquet de dades parells PID de paquet de dades imparells PID de dades d’alta velocitat en transferència isòcrona en un microframe

Handshake ACK NACKSTALL NYET

0010B 1010B 1110B 0110B

El receptor accepta el paquet de dades lliure d’error No es poden enviar o rebre les dades Endpoint sense servei o tuberia no disponible Sense resposta del receptor

Special PRE ERR SPLIT PING

1100B 1100B 1000B 0100B

Habilita el trànsit a dispositius de baixa velocitat Error de transferència Transferència d’alta velocitat Control de flux sobre endpoinds en connexió bulk

A1.3.3.1 Camps

Els paquets es divideixen en camps, a continuació s’explica el format dels diferents camps.

Camp identificador de paquet (PID)

És el primer camp que apareix en el paquet. El PID indica el tipus de paquet, i per tant el format del paquet i el tipus de detecció d’error aplicat a aquest. S’utilitzen quatre bits per la codificació del PID, en canvi el camp PID són vuit bits, que són els quatre del PID seguits del complement a 1 d’aquests quatre bits. Aquests últims quatre bits serveixen de confirmació del PID. Si es rep un paquet en el qual els últims quatre bits no són el complement a 1 del PID, o el PID desconegut, es considera que el paquet és corrupte i el receptor l’ignora.

113

Camp de direcció Aquest camp de la funció, a través de la direcció, que envia o és receptora del paquet de dades. S’utilitzen 7 bits, dels quals s’obtenen un màxim de 128 direccions.

Camp endpoint

Es compon de quatre bits e indica el nombre de endpoint al qual es vol accedir dins d’una funció, com és lògic, aquest camp sempre segueix al de direcció.

Camp nombre de frame

És un camp de 11 bits que s’incrementa pel host cada microframe en una unitat. El màxim valor al que pot arribar és el 7FFH, si es torna a incrementar passa a zero

Camp de dades

Els camps de dades poden variar entre 0 i 1024 bytes. En la figura es mostra el format per múltiples bytes.

A1.3.3.2 Format dels paquets

Paquets de tipus token

Un token està compost per un PID que indica si és de tipus IN, OUT o SETUP. El paquet especial de tipus PING també té la mateixa estructura que un paquet token. Després del camp PID segueix un camp de direcció i un camp endpoint, finalment hi ha un camp de redundància cíclica de cinc bits.

114

En els paquets OUT i SETUP aquests camps identifiquen el endpoint que ha de rebre el paquet de dades que bé a continuació. En els paquets IN s’indica un endpoint que ha de transmetre un paquet de dades. En cas dels paquets PING fan referencia a un endpoint que ha de respondre amb un paquet handshake.

Paquet d’inici de frame (SOF)

Aquests paquets són generats pel host cada milisegon en busos de velocitat mitjana i casa 125 microsegons per velocitat alta. Aquest paquet està compost per un camp de nombre de frame i un camp CRC de 5 bits

Paquet de dades

Aquest paquet està compost per zero o més bytes de dades seguit d’un camp de CRC de 16 bits. Existeixen quatre tipus de paquets de dades: DATA0,DATA1,DATA2 y MDATA. El nombre màxim de bytes de dades en velocitat baixa és de 8 bits, en mitja 1023 bytes i en alta de 1024 bytes. El nombre de bytes de dades ha de ser enter.

Paquets handshake

Els paquets handshake, s’utilitzen per saber l’estat d’una transferència de dades, indicar la correcta recepció de dades, acceptar o refusar transferències, control de flux i condicions de parada. L’únic camp que conté paquets d’aquest tipus és el camp PID.

115

A1.3.3.3 Transaccions

Els paquets de tipus token tenen com a objectiu indicar l’inici d’una transacció de dades d’una determinada forma.

Transacció IN

La transacció comença amb l’enviament d’un paquet de tipus IN per part del host a un determinat endpoint en una funció en una funció. Un endpoint quant rep un paquet de tipus IN ha de comportar-se com mostra la següent taula..

Token rebut corrupte

Estat del endpoint

La funció pot transmetre dades

Acció

Si -- -- No respon No Deshabilitat -- Envia STALL No Habilitat No Envia NAK No Habilitat Si Envia paquets de dades

La resposta del host al rebre un paquet de dades en la transacció es pot observat en la següent taula.

Paquet de dades corrupte

El host pot acceptar les dades

Resposta del host

Si --- Descarta el paquet, no respon No No Descarta el paquet, no respon No Si Envia ACK

Sincronització mitjançant commutació de bits

El USB ofereix un mecanisme que garanteix la sincronització entre l’emissor i el receptor de dades al llarg de múltiples transaccions. La idea és garantir que els dos siguin conscients de que els handshakes han estat rebuts correctament. Per això s’utilitzen els PID DATA0 i DATA1 que tan sols varien en un bit. De manera que

116

inicialment tant l’emissor i el receptor estan sincronitzats en la seqüència de bits. El que rep les dades commuta el seu bit quant pot acceptar dades i ha rebut un paquet de dades lliure d’errors. Per la seva part el que envia commuta el seu bit quant rep un ACK, tal que si l’últim paquet de dades tenia PID DATA0 el següent tindrà DATA1 i al revés, si tot ha sortit bé el PID del paquet coincidirà amb la seqüència de bits del receptor.

Transacció OUT

El host envia un paquet out a un determinat endpoint i seguidament envia el paquet de dades. Suposant que l’endpoint ha descodificat correctament el token, en cas contrari s’ignora el token i les dades, espera a rebre un paquet de dades. El comportament del endpoint quant rep el paquet de dades és el següent.

Paquet de dades corrupte

Estat del receptor

Coincidència de la seqüència de bits

La funció pot acceptar les dades

Acció

Si -- -- -- No respon

No Deshabilitat -- -- Envia STALL

No Habilitat No -- Envia ACK No Habilitat Si Si Envia ACK No Habilitat Si No Envia ACK

Transacció SETUP

La transacció setup és una transacció especial que té les mateixes fases que una transacció out, que tan sols pot utilitzar endpoints de control la finalitat dels quals és indicar l’inici de la fase de setup.

117

A2 Control de motors En aquest apartat s’explica el mètode de control de motors de corrent contínua PWM i el funcionament i control dels servomotors.

A2.1 Control de motors de corrent contínua amb PWM

Per poder variar la velocitat dels motors de corrent contínua s’utilitza una tècnica anomenada PWM ( Pulse Width Modulation). Aquesta tècnica consisteix en enviar un tren d’impulsos de freqüència fixa, el que es modifica és el temps en que la senyal es manté a nivell alt, d’aquesta manera el voltatge eficaç que s’entrega el motor va variant. Aquesta tècnica ens aporta l’avantatge de poder controlar els motors de corrent contínua utilitzant dispositius digitals però no està exempta d’inconvenients. Cal triar bé la freqüència de la senyal PWM, si aquesta és troba compresa en les freqüències del rang audible, es pot generar un so molest a les bobines del motor. Cal tenir en compte que els dispositius digitals que ens permeten generar aquest tipus de senyal no son capaços de subministrar la corrent necessària per moure el motor, per aquesta raó s’utilitzen drivers per donar potència a la senyal.

Els drivers solen utilitzar una estructura de pont H.

Imatge 142: Senyal PWM

Aquesta estructura consta de quatre transistors que treballen en commutació i es comporten com interruptors commutats per la senyal que els arriba a R1 i R2.

Quan s’activa l’entrada R1 a nivell alt i l’entrada R2 a nivell baix els transistors Q3 i Q2 entren en saturació simultàniament, mentre que Q1 i Q4 estan en tall. En aquestes condicions el motor gira en un sentit. Al invertir els senyals d’entrada, és a dir

118

R1 a nivell baix i R2 a nivell alt, els transistors es saturació són ara Q1 i Q4 mentre que els que estan en tall són Q2 i Q3 la qual cosa fa que el motor giri en sentit contrari que en el cas anterior.

Imatge 143: Pont semicontrolat per control de motors de corrent contínua

A2.2 Funcionament i control de servomotors

La tensió d’alimentació dels servomotors sol esta compresa entre els 4 i els 8 volts. El control d’un servomotor es limita a indicar en quina posició s’ha de situar, mitjançant una senyal quadrada de nivell TTL modulada en PWM. La durada del nivell alt de la senyal indica la posició on es vol situar l’eix del motor. El potenciòmetre que el servomotor té unit solidàriament al eix del motor indica a l’electrònica de control interna, mitjançant una realimentació, si ha arribat a la posició desitjada.

Imatge 144: senyal de control de servomotors

119

La durada dels impulsos indica l’angle de gir del motor, com es mostra a la figura anterior. Cada servomotor té els seus marges d’operació, que es correspon amb l’amplada d’impuls màxima i mínima que el servo entén i que, en principi, mecànicament no pot sobrepassar. Aquests valors depenen de cada model en qüestió. En el cas que l’amplada de pols intenti situar el servo fora dels límits mecànics, el servomotor començarà a vibrar i les bobines emetran un so agut.

És important destacar que per què un servomotor conservi la mateixa posició cal enviar-li contínuament impulsos d’amplada constant. D’aquesta manera si existeix alguna força que intenti fer variar la posició del motor ell s’hi resistirà. Si es deixen d’enviar impulsos, o d’interval entre ells es major al màxim permès, llavors el servomotor perdrà la força, de manera que fos molt fàcil que qualssevol força externa fes canviar-lo do posició. Normalment el desplaçament d’un servomotor està limitat entre 0 i 180º.

El connector d’aquest tipus de motors consta de tres terminals, un d’alimentació , un de senyal de control i un altre de massa.

En el cas que ens ocupa és el microcontrolador del serializer l’encarregat de generar el PWM de control per al servomotor.

120

A3 Visió artificial

Un dels objectius de disseny és que el robot sigui capaç de seguir l’objecte indicat segons el seu color. Per aconseguir-ho s’utilitza la càmera IP que equipa el San Bernardo i s’implementen algoritmes de visió artificial. Segons el tipus de càmera utilitzada i les eines emprades per al processat d’imatge ens pot ser d’interès utilitzar un model de color o un altre.

A3.1 Models de color

A3.1.1 RGB

Els colors obtinguts directament de la natura per descomposició de la llum solar o artificialment mitjançant focus emissors de llum d’una longitud d’ona determinada es denomines colors additius.

No és necessària la unió de totes les longituds d’espectre visible per obtenir el blanc, ja que si es barreja el vermell, el verd, i el blau, s’obtindrà el mateix resultat. És per aquest motiu que s’anomenen colors primaris, perquè la suma de tots tres ens dona com ha resultat el blanc. A més a més tots els colors de l’espectre es poden obtenir a partir d’ells.

Per representar un color en sistema RGB se li assigna un valor entre 0 i 255 per cada un dels components del color seguint el format (R,G,B), així doncs el color vermell pur es mostraria com (255,0,0). Els valors més elevats corresponen a un major nivell de llum blanca, per tant com més elevats són els valors RGB, més clars són els colors.

Imatge 145: Sistema RGB

Les càmeres digitals, normalment solen utilitzar quest sistema de color ja que estan destinades a mostrar les imatges capturades a un monitor d’ordinador i aquests produeixen els píxels a partir de punts de llum vermella verda i blava.

121

A3.1.2 HSV

Un altre model de color és el HSV, que defineix els colors en funció dels tres atributs més importants d’aquests: matís,saturació i brillantor.

Imatge 146: Sistema de color HSV

El matís (Hue) fa referència al color coma a tal. La saturació o intensitat indica la concentració de color en l’objecte. La brillantor (value) denota la tonalitat del color. La brillantor es pot definir com la quantitat de blanc que té un color.

A3.1.3 HSL

El model HSL (de l'anglès Hue, Saturation, Lightness), defineix un model de color en termes dels seus components constituents. El model HSL es representa gràficament com un con doble o un doble hexàgon. Els dos vèrtexs en el model HSL es corresponen amb el blanc i el negre, l'angle es correspon amb la tonalitat, la distància a l'eix, amb la saturació i la distància a l'eix blanc-negre es correspon amb la luminància. Com el model HSV, és una deformació no lineal de l'espai de color RGB.

A3.2 Detecció de colors

Per la detecció dels colors, en el cas que ens ocupa s’utilitza el format de color RGB ja que és l’utilitzat per la càmera que incorpora el robot San Bernadro.

Per poder detectar un color ens cal una mostra i un patró. El patró és sempre fix i la mostra es va refrescant en períodes d’ aproximadament 80 ms.

Com s’ha exposat anteriorment el sistema de colors RGB es composa de 3 valors. Per tant el patró es des composarà en tres matrius de les mateixes dimensions en

122

píxels que el patró original. La primera matriu contindrà els valors de R la segona contindrà els valors de G i la tercera els valors de B. En cas que el color sigui uniforme, la matriu corresponent a R tindrà tots els valors iguals, el mateix passarà amb les matrius corresponents a G i B. En cas que el color no sigui uniforme, es tindrà en conte el valor predominant. El resultat d’aquest patró serà un valor de R, un de G i un de B

Per localitzar el patró a la mostra es fa un escaneig de les tres matrius fins ha localitzar la zona amb els valors obtinguts en el patró. Poder localitzar exactament els mateixos valors del patró a la mostra és gairebé impossible ja que el color depèn de diversos factors com la lluminositat ambiental, les ombres, la distància a la que es troba de la càmera etc... En aquest cas, el que es fa és buscar els colors utilitzant marges de tolerància, suficients per ser capaços de detectar el color si aquest sofreix lleugers canvis degut a les condicions de lluminositat ambientals.

Per tal de tenir èxit cal que el color del patró sigui diferent al de la resta d’elements que es trobin en el camp de visió de la càmera ja que si hi ha diversos elements del mateix color, la localització del patró pot ser errònia.

En el cas d’aquest projecte el Labview incorpora una eina anomenada Imaq

Vision que ens permet dur a terme aquesta tasca de forma senzilla.

123

A4. Controlador PID Un compensador PID es pot formular com una combinació de les tres parts, de

forma que l’equació diferencial associada té la següent expressió:

(1)

Fent la transformada de Laplace s’obté la funció de transferència corresponent al dispositiu de control PID:

++== sT

sTK

sE

sUsG D

I

PC

11·

)(

)()( (2)

Aquesta funció de transferència conté un pol a l’origen i tres paràmetres a determinar, que són el guany i dos zeros. Així, les tècniques de disseny de controladors PID han de permetre establir els valors d’aquests tres paràmetres a partir de les especificacions de disseny tant de règim permanent com de règim transitori. Com podem observar a partir de l’equació (1), el pol a l’origen incrementa el tipus en una unitat de forma que els tres paràmetres es poden calcular analíticament fixant-nos en les especificacions tant del règim permanent com del transitori. En quant a aquests càlculs analítics, es pot demostrar que el compensador PID és equivalent a connectar en cascada un compensador PD amb un compensador PI, és a dir, es poden dissenyar els PID combinant les tècniques de compensació PD i PI.

En general, i a la pràctica, quan les especificacions de disseny no són prou restrictives és possible obtenir els tres paràmetres de forma que la resposta a un esglaó segueixi un cert patró, compleixi alguna propietat temporal o algun criteri d’optimització. En aquest sentit, les tècniques de disseny de compensadors PID solen ser més empíriques que analítiques, i responen als anomenats mètodes de sintonia de

u t KP e tKP TI

e τ d

KPTD

d

t

dt ( )

( ) + +∫( ) = * ( ) τ

0

e

124

PID. En aquests mètodes es calculen els tres paràmetres prenent com a base els valors de diverses mesures que cal obtenir a partir d’assaigs experimentals sobre el sistema real. A continuació es mostren diversos mètodes de sintonia de PID.

Oscil·lació Crítica

Aquest és un dels dos mètodes presentats per Ziegler-Nichols. En aquest mètode s’obtenen els paràmetres de sintonització mesurant la resposta en llaç tancat quan el control és proporcional, i s’aplica en aquells sistemes on la variació del guany de la planta pot provocar la inestabilitat del sistema en llaç tancat. L’obtenció de les dades experimentals comença anul·lant totes les constants del PID excepte la proporcional. A continuació s’augmenta el guany, fins que el sistema presenta una oscil·lació sostinguda. El guany necessari per portar el sistema a l’oscil·lació s’anomena guany crític KC , i el període de l’oscil·lació és TC. Aquestes són les mesures experimentals que cal obtenir sobre el sistema real. Finalment, es consulten les taules associades a aquest mètode i es calculen els valors dels tres paràmetres. Cal comentar que aquest mètode també és útil per al disseny de PD i PI, tal i com es pot veure a partir dels valors de la taula:

Control KP TI TD

P 2K C - -

PI 2.2K C 2.1TC -

PID 7.1KC 2TC 8TC

Taula 1. Sintonització en llaç tancat de Ziegler-Nichols

Corba de Reacció

L’altre mètode de Ziegler-Nichols és el que utilitza l’anomenada corba de reacció. Aquest mètode està especialment recomanat per a les plantes que es puguin modelar com un retard L i una constant de temps TP. Aquestes plantes són habituals en el control de processos i obeeixen a la següent funció de transferència:

1)(

+=

P

Ls

sT

esG

Quan es compleix aquest supòsit, a la part experimental es poden mesurar els paràmetres que caracteritzen el sistema a partir de la resposta a l’esglaó de la planta en llaç obert. La següent figura mostra la resposta a un esglaó típica d’un d’aquests sistemes amb retard:

125

El retard aparent L i la constant de temps TP vénen donats per la recta tangent a la resposta a l’esglaó en llaç obert, en el punt de màxim pendent de la mateixa, és a dir, el punt d’inflexió. Finalment, com en el mètode anterior, es consulten les taules associades a aquest mètode i es calculen els valors dels tres paràmetres. En aquest cas, cal comentar també que aquest mètode és útil per al disseny de PD i PI:

Taula 2. Sintonització en llaç obert de Ziegler-Nichols

Tant aquest mètode de sintonia com l’anterior les taules estan calculades per tal que la resposta controlada compleixi la característica del quarter decay ratio (QDR), és a dir, que la relació entre l’amplitud del segon sobrepic respecte del primer sigui només del 25%. Una variant d’aquest mètode és la plantejada per Chien, Hrones i Reswick en què la característica a complir té a veure amb el valor del sobrepic. Concretament, amb aquest altre mètode es busca que el sistema o bé presenti oscil·lacions amb un sobrepic del 20%, o bé que no les presenti. A més, també proposa la possibilitat de donar prioritat a que el sistema controlat respongui bé davant canvis a l’entrada (l’anomenat problema de seguiment) o davant pertorbacions i amb l’entrada estabilitzada (problema de pertorbació). Així, el sistema de control obeeix al següent diagrama de blocs:

Control KP TI TD

P LTP - -

PI LT9.0 P L3 -

PID LTP2.1 L2 2L

126

Mesurant els mateixos paràmetres experimentals que els del mètode de la corba de reacció, les constant del PID s’obtenen a partir de la següent taula.

Control SP=20%

KP TI TD Control SP=20%

KP TI TD

Problema Seguiment Problema Pertorbació

P LT3.0 P - - P LT7.0 P - -

PI LT6.0 P L4 - PI LT7.0 P L4.2 -

PID LT95.0 P L4.2 L42.0 PID LT2.1 P L2 L42.0

Taula 3. Sintonització en llaç obert de Chien, Hrones, i Reswick

Finalment, es mostra una darrera proposta de modificació proposada per Cohen-Coon. De les taules anteriors es pot observar que els valors dels paràmetres del PID poden variar molt en funció del valor del quocient TP/L, és a dir, els valors poden presentar grans variacions respecte de dades que són experimentals. Aquest mètode intenta reduir la sensibilitat de l’ajust dels paràmetres del PID al valor TP/L.

Control KP TI TD

P L

T340

T3

L1

L

TP

p

p+=

+ . - -

PI L

T9.008.0

T12

L9.0

L

TP

p

p+≈

+

( )L20T9

L3T30L

p

p

+

+ -

PID L

T34.125.0

T4

L

3

4

L

TP

p

p+≈

+

( )L8T13

L6T32L

p

p

+

+

L2T11

LT4

p

p

+

Taula 4. Sintonització en llaç obert de Cohen-Coon