Grau en Enginyeria en Tecnologies Industrials
CLASSIFICACIÓ DE PECES AUTOMATITZADA AMB ROBOTS UR3e I VISIÓ PER COMPUTADOR
MEMÒRIA
Autor: Èric Oliva Ripoll Director: Yolanda Bolea Monte Convocatòria: Juny 2021
Escola Tècnica Superior
d’Enginyeria Industrial de Barcelona
RESUM
En aquest treball s’explica en què consisteix la robòtica col·laborativa i s’introdueix la visió per computador. L’aplicació final d’aquest projecte combina les dues disciplines connectant, mitjançant una comunicació per EtherNet sockets, un robot UR3e i un ordinador amb Matlab (encarregat de la part de visió).
La memòria serveix de guia sobre com configurar i programar els robots UR3e donat que s’expliquen les bases del seu llenguatge de programació i algunes de les funcionalitats més importants del PolyScope GUI (la interfície d’usuari del robot), com ara les configuracions de seguretat.
Finalment es poden trobar els codis d’alguns programes bàsics explicats pas a pas i que serviran per adquirir els coneixements necessaris per, després, desenvolupar l’aplicació final. L’aplicació final, més avançada, realitza una classificació de peces segons la seva geometria fent servir visió per computador.
Per últim, es pot trobar la planificació temporal del projecte, el seu pressupost econòmic i l’impacte social i ambiental.
ÍNDEX
RESUM ____________________________________________________________ 3 ÍNDEX _____________________________________________________________ 4 ÍNDEX DE FIGURES _________________________________________________ 7
1. PREFACI _______________________________________________________ 9
1.1. Motivació i origen del projecte ... 9
1.2. Requeriments previs ... 9
2. INTRODUCCIÓ _________________________________________________ 10 2.1. Objectius i abast del projecte ... 10
2.2. Robòtica col·laborativa ... 10
2.2.1. Introducció ... 10
2.2.2. Història dels robots col·laboratius ... 11
2.2.3. Tipus de col·laboració ... 12
2.2.4. Ús a la indústria ... 13
2.3. Visió per computador ... 14
2.4. Universal Robots i el robot UR3e ... 17
2.4.1. Especificacions del robot UR3e ... 18
2.4.2. Llenguatges de programació ... 19
2.4.3. Comunicació per EtherNet sockets ... 19
3. PRIMER CONTACTE AMB ELS ROBOTS UR3e ______________________ 21 3.1. Instal·lació del simulador a Windows ... 21
3.2. Aspectes bàsics sobre la PolyScope GUI... 24
3.3. Configuració d’elements de seguretat ... 26
3.3.1. Ajustaments de seguretat del robot ... 26
3.3.2. Dispositius de seguretat externs ... 29
3.4. Accessoris disponibles al laboratori de robòtica ... 32
3.4.1. Element terminal: Pinça 2F-85 Robotiq ... 32
3.4.2. Cinta transportadora ... 33
3.4.3. Sensor de presència ... 34
4. PROGRAMES SENZILLS. CODIS I COMANDES ______________________ 35
4.1. Introducció. Estructura dels codis ... 35
4.2.
Pick and place ... 364.2.1. Espai de treball ... 36
4.2.2. Funcionament de l’aplicació en base al codi del robot ... 37
4.2.3. Comandes del codi del robot ... 37
4.3. Tasca col·laborativa: paletitzat amb control de qualitat ... 39
4.3.1. Espai de treball ... 39
4.3.2. Funcionament de l’aplicació en base al codi del robot ... 40
4.3.3. Comandes del codi del robot ... 41
4.4. Programa comunicat per sockets amb el Matlab ... 42
4.4.1. Espai de treball ... 42
4.4.2. Funcionament de l’aplicació en base al codi del robot ... 42
4.4.3. Comandes del codi del robot ... 43
4.4.4. Funcions del llenguatge de programació URScript ... 43
4.4.5. Codi del Matlab ... 44
5. CLASSIFICACIÓ DE PECES MITJANÇANT VISIÓ ____________________ 45 5.1. Peces ... 45
5.2. Espai de treball ... 46
5.3. Diagrama de flux del programa principal del robot ... 47
5.4. Funcionament i comandes del codi del robot ... 48
5.4.1. BeforeStart ... 48
5.4.2. Robot Program ... 48
5.4.3. Subprograma AgafarDeixar ... 49
5.4.4. Thread_1 ... 49
5.4.5. Thread_2 ... 50
5.5. Codi del Matlab ... 50
PLANIFICACIÓ TEMPORAL __________________________________________ 53
ESTUDI ECONÒMIC: PRESSUPOST ___________________________________ 54
IMPACTE SOCIAL I AMBIENTAL ______________________________________ 55
CONCLUSIONS ____________________________________________________ 57
AGRAÏMENTS _____________________________________________________ 58
BIBLIOGRAFIA ____________________________________________________ 59
Referències bibliogràfiques ... 59
Bibliografia complementària ... 61
ANNEXOS _________________________________________________________ 62 Annex 1. Taula resum d’especificacions tècniques del robot UR3e ... 62
Annex 2. Guia d’inici ràpid de les pinces Robotiq ... 63
Annex 3. Fitxa de dades del sensor de proximitat Honeywell ... 65
Annex 4. Funcions del llenguatge de programació URScript ... 70
Annex 5. Codi per a l’extracció de propietats ... 83
Annex 6. Taula de característiques de les imatges processades de les peces ... 84
ÍNDEX DE FIGURES
Figura 2.1. Tipus de col·laboració robot-humà ... 12
Figura 2.2. Punts forts dels cobots ... 14
Figura 2.3. Esquema de disciplines relacionades amb la visió per computador ... 15
Figura 2.4. Reconeixement òptic de caràcters ... 16
Figura 2.5. Robot UR (Universal Robots) guiat per visió ... 17
Figura 2.6. Àrea de treball del UR3e ... 18
Figura 2.7. Càrrega màxima en funció de la compensació del centre de gravetat ... 19
Figura 3.1. Finestra principal de VirtualBox ... 21
Figura 3.2. Elecció del nom i del sistema operatiu de la MV ... 22
Figura 3.3. Seqüència de clics descrita per seleccionar la MV ... 22
Figura 3.4. Configuració del controlador gràfic de la MV ... 23
Figura 3.5. Llista de dispositius USB connectats ... 23
Figura 3.6. Distribució del PolyScope ... 24
Figura 3.7. Espai de treball al laboratori de robòtica de l'ETSEIB ... 26
Figura 3.8. Definició d'una característica (‘Punt_posterior’) del pla de seguretat ... 27
Figura 3.9. Tipus de restriccions ... 27
Figura 3.10. Pla de seguretat a la part posterior del robot ... 28
Figura 3.11. Pla sense esfera de l'eina ... 28
Figura 3.12. Pla amb esfera de l'eina ... 28
Figura 3.13. Configuració de l'esfera de l'eina ... 29
Figura 3.14. Connexió de l'escàner de seguretat a les entrades configurables ... 30
Figura 3.15. Entrades configurables amb la funció de mode reduït assignada ... 30
Figura 3.16. Connexió de l'escàner de seguretat a les entrades de seguretat ... 31
Figura 3.17. Connexió i configuració del botó de reinici de seguretat ... 31
Figura 3.18. Connexió del botó de parada d'emergència ... 32
Figura 3.19. Missatge de la TeachPendant en prémer el botó de parada d’emergència ... 32
Figura 3.20. Subjecció completa i paral·lela ... 33
Figura 3.21. Cinta transportadora Dobot ... 33
Figura 3.22. Sensor de presència Honeywell ... 34
Figura 4.1. Espai de treball de la aplicació pick and place... 36
Figura 4.2. Codi del pick and place ... 37
Figura 4.3.Sqüència per afegir la comanda Gripper Open ... 38
Figura 4.4. Seqüència per afegir un Waypoint ... 38
Figura 4.5. Espai de treball de l'aplicació col·laborativa ... 39
Figura 4.6. Codi de la tasca col·laborativa: paletitzat amb control de qualitat ... 40
Figura 4.7. Variable assignada per una expressió ... 41
Figura 4.8. Variable assignada per l'operador ... 41
Figura 4.9. Codi del programa comunicat per sockets amb el Matlab ... 42
Figura 5.1. Peces utilitzades per l'aplicació de visió ... 45
Figura 5.2. Espai de treball de l'aplicació de classificació de peces per visió ... 46
Figura 5.3. Vista zenital de l'espai de treball de l'aplicació de classificació de peces per visió ... 46
Figura 5.4. Diagrama de flux del programa principal del robot ... 47
Figura 5.5. BeforeStart de l'aplicació de visió ... 48
Figura 5.6. Robot Program de l'aplicació de visió ... 48
Figura 5.7. Punts de deixada a Installation > Features ... 48
Figura 5.8. Subprograma AgafarDeixar de l'aplicació de visió ... 49
Figura 5.9. Configuració del Waypoint variable ... 49
Figura 5.10. Thread_1 de l'aplicació de visió ... 49
Figura 5.11. Thread_2 de l'aplicació de visió ... 50
1. PREFACI
1.1. Motivació i origen del projecte
Aquest projecte va sorgir d’una de les tres temàtiques que em va proposar la meva tutora per fer el Treball de Fi de Grau (TFG). Va se una proposta una mica inesperada perquè la robòtica no és un camp que es tracti molt a la carrera, però precisament aquest és un dels motius pels quals em va agradar la proposta.
El que em va captivar més, a part del fet que era un tema que no havíem vist encara a la carrera, és que m’oferia la possibilitat de treballar en primera mà amb els robots en qüestió. Això va ser el que va fer decidir-me a escollir aquesta temàtica, el fet de poder aprendre “jugant” amb el robot.
Decidit el tema, vam haver d’acotar el treball. Finalment vam trobar una aplicació pràctica que ens convencia als dos: realitzar una classificació de peces mitjançant visió. Això suposava un repte ja que mai havia programat robots ni escrit codis de visió i encara menys havia establer una connexió entre un robot i un ordinador.
L’aplicació final pretén ser una adaptació educativa d’un cas que es podria donar a la indústria, cosa que la fa més interessant. El fet que sigui una adaptació educativa va obrir camí a realitzar aquest treball amb format didàctic, explicant com fer servir el robot des de zero.
1.2. Requeriments previs
Aquest projecte està pensat perquè qualsevol persona sense coneixements de robòtica el pugui entendre. Es comença explicant les bases de programació i configuració del robot UR3e. Amb les indicacions del treball junt amb la intuïció de qui vulgui programar el robot és suficient per realitzar els programes documentats en aquesta memòria.
Respecte la comunicació mitjançant sockets entre l’ordinador i el robot, se n’explica allò bàsic i necessari per realitzar la connexió. Ara bé, si es vol aprofundir més en el tema cal informar-se’n prèviament.
Per últim, per la comunicació entre el robot i l’ordinador, també es fa servir el Matlab per programar diversos codis. En aquest treball s’expliquen les comandes utilitzades, però no s’ensenya a fer servir el programa.
2. INTRODUCCIÓ
2.1. Objectius i abast del projecte
L’objectiu final d’aquest projecte és crear una aplicació que realitzi un procés de classificació de peces segons la seva forma en una línia de producció. Es tracta d’una versió simplificada amb finalitat educativa d’una possible aplicació industrial real més complexa.
Per dur a terme aquesta aplicació en necessita fer ús de la visió per computador. Per tant caldrà establir una connexió entre el robot i un ordinador. El robot s’encarregarà de controlar el procés mentre que l’ordinador classificarà la peça. Així doncs, quan el robot li ho indiqui, l’ordinador capturarà una imatge de la peça i l’analitzarà per tal de decidir de quin tipus de peça es tracta. Finalment, el robot decidirà què fer amb ella. L’objectiu és comunicar de manera didàctica com programar els robots UR3e, com establir la comunicació mitjançant sockets TCP/IP entre el robot i el Matlab, i com fer el processat d’imatges necessari per distingir les peces.
En el transcurs del projecte també es pretén donar a conèixer la robòtica col·laborativa i explicar com preparar i fer servir el robot UR3e (i el seu simulador) i tots els elements dels que es disposa en l’estació de treball facilitada per l’escola en el laboratori de robòtica.
2.2. Robòtica col·laborativa
2.2.1. Introducció
En la robòtica es poden distingir dos grans grups: els robots industrials i els robots de serveis.
L’Organització Internacional per a l’Estandardització (ISO) defineix els robots industrials com un manipulador reprogramable multifuncional, programable en tres o més eixos, controlat automàticament i que és emprat per aplicacions industrials automatitzades, ja sigui mòbil o estigui fixat a un lloc [1]. En canvi, defineix els robots de serveis com aquells que realitzen tasques útils per als humans o equipament excloent aplicacions d’automatització industrial [2]. Aquests últims estan pensats per tenir una certa interacció amb els humans (tot i que en alguns casos pot ser que el robot sigui totalment autònom).
Originalment, els robots industrials i els treballadors feien tasques per separat. Els robots industrials solen estar aïllats físicament i treballen a grans velocitats, sovint amb brans càrregues i elements de formes punxegudes. Els robots col·laboratius, o cobots, trenquen aquesta barrera. Són un tipus de robot que estan pensats per interactuar físicament amb humans en un mateix entorn de treball, no pretenen substituir-los. D’aquesta manera es busca la optimització dels diferents processos aprofitant els avantatges dels robots i els dels humans.
2.2.2. Història dels robots col·laboratius
Els cobots tal i com els coneixem ara van sorgir fa relativament poc i el mercat s’espera que experimenti un fort creixement en els anys que han de venir.
L’any 1920 un escriptor txec va inventar la paraula ‘robot’ que la va utilitzar en una obra de teatre de ciència ficció anomenada “Robots Universals de Rossum” (R.U.R.). Els robots que apareixien tenien forma humana i eren fabricats en tancs, com la cervesa.
El 1954 George Devol patenta el primer robot industrial anomenat Programmed Article Transfer.
Posteriorment, s’ajunta amb Joseph Engelberger amb qui acabarà creant l’empresa Unimation (de la unió de les paraules universal i automation) l’any 1959. L’evolució del robot patentat s’acabarà dient Unimate i serà instal·lat per primera vegada l’any 1961 a una planta de General Motors [3].
Des dels anys 60 fins al 2000 aproximadament, es van estendre els robots industrials en la indústria automobilística i altres sectors de manufactura. Aquests robots requerien grans inversions de capital i coneixements de programació.
Del 2001 al 2005 un equip de recerca de la Universitat de Dinamarca del Sud estudia les necessitats de mercat i descobreix una oportunitat de reinventar el robot industrial. El 2005 tres membre de l’equip de recerca funden la companyia Universal Robots amb l’objectiu de desenvolupar un robot flexible, col·laboratiu i lleuger amb ROI (retorn de la inversió) ràpid. El 2008 es llança al mercat el UR5, el primer robot col·laboratiu capaç d’operar amb seguretat al costat d’operaris sense necessitat d’engabiar-lo ni d’ús d’equipament de seguretat.
Paral·lelament, el 2004, KUKA llança el primer cobot lleuger, el LBR3. Resultat d’una llarga col·laboració entre la companyia i l’Agència Espacial Alemanya. Posteriorment el control de moviment del robot va ser millorat i es van llençar noves versions el 2008 i el 2013.
En el període compres entre 2012 i 2016, és reconeix la robòtica col·laborativa com una nova classe de robots viable. Companyies manufactureres de robots més grans (com ara KUKA, ABB i Fanuc) i petites startups comencen a desenvolupar i llançar els seus propis cobots. Amb preus significativament baixos, els robots col·laboratius es van convertir en una solució d’automatització rendible per les petites i mitjanes empreses. El 2016, ISO publica la especificació ISO/TS 15066 que conté les guies sobre com assegurar la seguretat dels operaris en els sistemes de robòtica col·laborativa.
Encara que els cobots s’estan desenvolupant ràpidament, encara tenen reptes a superar. Per exemple, la necessitat de delicadesa (per agafar objectes petits i delicats) i la habilitat de prendre decisions ràpides per evitar obstacles sense aturar la producció. Per abordar aquests reptes, els líders de la indústria estan desenvolupant cobots amb processadors més ràpids i sistema de visió integrats [4].
Aquestes innovacions permeten als cobots ser molt més productius i segurs.
En el futur, s’espera una crescuda ràpida del mercat, seguint la tendència que ha portat fins ara. De cara al 2025-2030 s’espera que els robots col·laboratius tinguin una quota de mercat d’aproximadament el 30% dels robots industrials [5][6].
2.2.3. Tipus de col·laboració
La col·laboració entre el robot i l’humà pot variar molt. Per una banda, es pot tenir el típic robot industrial operant en un espai de treball separat en què els treballadors hi poden entrar sense haver d’aturar el robot per tal d’assegurar l’àrea (mitjançant sensors que detecten la presencia humana i alenteixen o aturen el robot). D’aquesta manera s’evita el desaprofitament de temps i, conseqüentment, s’evita la pèrdua de grans quantitats de diners. Per altra banda, hi ha els robots que estan pensats per treballar junt amb humans en un mateix espai de treball que estan dissenyats per garantir la seguretat del treballador en tot moment.
Les principals aplicacions col·laboratives són la coexistència i el treball seqüencial (Figura 2.1) [7]. En el primer escenari, el robot i l’humà comparteixen espai de treball però desenvolupen tasques totalment independents. En l’altre, el treballador i el cobot treballen sobre un mateix producte però ho fan de manera alternada. En la majoria de tasques, el cobot s’encarrega de realitzar les tasques repetitives i senzilles mentre que el treballador realitza tasques més complexes en què cal pensar [8].
Figura 2.1. Tipus de col·laboració robot-humà
Un altre aspecte important és, per tant, la seguretat dels treballadors que han de treballar conjuntament amb els cobots. Per aquest motiu, acostumen a disposar de carcasses amb una geometria arrodonida, poden estar encoixinats, acostumen a treballar amb pesos lleugers i velocitats baixes, i estan equipats amb sensors (de proximitat, de xoc, de velocitat, de força, etc.). De tota manera, cal tenir clar que, per molt que un robot sigui segur, l’aplicació podria no ser-ho. En el moment en què un robot agafa una eina de tall o un objecte punxegut, deixa de ser segur [7]. Per tant, caldrà estudiar l’aplicació per tal de determinar si es segura la col·laboració humà-robot.
2.2.4. Ús a la indústria
L’ús dels cobots industrials és útil per a les següents situacions:
- Tasques avorrides, repetitives i poc ergonòmiques: Aquest tipus de robot millora la productivitat quan són emprats en tasques repetitives o perilloses que no necessiten ser realitzades a una gran velocitat i que no necessiten una gran destresa humana. Algun exemple de tasques d’aquest tipus podria ser anar a buscar alguna peça pesant i aguantar-la en posició perquè un treballador hi faci alguna acció, fer inspeccions de qualitat, o realitzar assemblatges de peces.
- Treballar en línies de producció que inclouen treballadors: Tot i que hi ha moltes tasques que poden realitzar els robots, encara n’hi ha moltes que són difícils d’automatitzar en termes d’efectivitat i cost. Per exemple, treballar amb peces desordenades i de formes irregulars o flexibles, o tasques en que cal anar modificant la pressió a realitzar de manera molt precisa (com quan es poleix). És per això que en cadenes de producció, majoritàriament d’assemblatge, és més eficient quan treballen coordinadament robots i humans.
- Treballar en cicles de producció curts o variables: La majoria d’aplicacions són ràpides i fàcils de programar. D’aquesta manera, per línies de producció variables els cobots són útils ja que són fàcils de re-programar i són més versàtils que els robots tradicionals (que estan dissenyats per a tasques concretes). A més, acostumen a ser robots força lleugers, per tant el seu transport no seria gaire complicat en cas que fos necessari moure’l de lloc a la línia de producció.
Els robots col·laboratius són un bon punt de partida, econòmicament viable, a l’automatització. Es poden incorporar a la línia de producció per automatitzar processos sense pràcticament modificar la resta de la cadena. Això els converteix en els robots per excel·lència per a petites i mitjanes empreses manufactureres que volen millorar la productivitat i la qualitat. Per companyies que ja han automatitzat processos, els robots col·laboratius poden ser útils en el procés d’encoblament o d’inspecció de qualitat realitzat pels humans per reduir l’esforç, la fatiga i el cansament d’aquests.
Sovint els cobots van equipats amb visió per computador i tenen nombrosos accessoris. Això,
juntament amb el fet de col·laborar amb humans, els permet realitzar una gran varietat de tasques, com ara: polir, realitzar test de laboratori, fer injecció en motlles, empaquetar, realitzar control de qualitat, assemblar, cargolar, enganxar peces, soldar, etc. La intel·ligència artificial (IA) també pren un paper molt important ja que si es vol que un robot col·labori amb un humà, haurà d’aprendre amb la persona i ha des ser capaç de canviar el seu comportament [9].
Figura 2.2. Punts forts dels cobots
Els robots col·laboratius es poden emprar en entorns molt diferents degut als grans avantatges que comporta (Figura 2.2). Un dels punts més importants pel que fa a avantatges és que els cobots estan dissenyats per tal de minimitzar el risc d’accidents i lesions en l’espai de treball, cosa que augmenta la productivitat i redueix els costs d’operació. Ofereixen una gran flexibilitat degut a la facilitat i rapidesa de la programació (cosa que repercuteix positivament en la productivitat). La inversió és baixa ja que la facilitat de programació i les poques infraestructures que es necessiten redueixen el temps i els recursos necessaris per la integració. A més, la recuperació de la inversió és ràpida en comparació amb els robots industrials, que són més cars des d’un inici i que estan especialitzats en tasques concretes [8].
2.3. Visió per computador
El neurocientífic David Marr descriu la visió com “el procés de descobrir a partir d’imatges què hi ha al món i a on està”. Els humans som capaços de percebre una estructura tridimensional d’allò que ens envolta amb certa facilitat. Podem reconèixer objectes i situar-los a l’espai instantàniament, evitar obstacles, identificar persones, llegir textos de diferents cal·ligrafies, comptar objectes, etc.
La visió per computador consisteix en programar un ordinador (computador) de manera que sigui capaç d’analitzar i entendre una escena o imatge, ja siguin fotos o vídeos. La visió per computador intenta descriure el món que veiem en una o més imatges i reconstruir les seves propietats, com ara les formes, il·luminació i distribució de colors [10].
Es tracta d’una àrea d’estudi multidisciplinària. Es poden identificar tres branques principals des de les quals es treballa la visió: la científica, la estadística i la enginyera. Totes amb una gran càrrega matemàtica. Des del punt de vista enginyer, la visió per computador pretén crear sistemes autònoms que puguin realitzar tasques que es poden fer gràcies al sistema visual humà i fins i tot millorar-lo [11].
Cal distingir la visió per computador del processat d’imatges (Figura 2.3). Aquest últim consisteix en la creació d’imatges noves a partir d’imatges ja existents, habitualment ressaltant o simplificant el contingut. És un tipus de processat de senyals digitals, que no pretén entendre el contingut de la imatge [12]. És freqüent que per un sistema de visió per computador es necessiti aplicar un processat d’imatge previ.
Figura 2.3. Esquema de disciplines relacionades amb la visió per computador
Per acabar d’entendre la Figura 2.3 a continuació s’explica breument en que consisteix cada un dels termes que hi apareixen. Entre claudàtors s’especifica l’entrada (input) i la sortida (output) de cadascuna de les tècniques:
- Processat de senyals [senyals elèctrics → senyals elèctrics]: consisteix en netejar les senyals (treure el soroll), extreure’n informació, modificar-la, etc.
- Processat d’imatges [imatges → imatges]: engloba un conjunt de tècniques que permeten millorar la qualitat de les imatges, canviar-ne algunes propietats, etc.
- Visió per computador [imatges → informació / característiques] : eina mitjançant la qual s’extreu informació de les imatges.
- Aprenentatge automàtic [informació / característiques → informació]: permet reconèixer patrons a les dades. Per exemple, permet reconèixer objectes d’una imatge. No totes les tècniques de visió per computador necessiten aprenentatge automàtic. Sovint la manera de treballar és la següent: la visió per computador detecta característiques i informació a partir d’imatges i, després, són introduïdes al machine learning per extreure’n conclusions.
- Visió de màquina [imatges → informació]: es refereix a la aplicació específica de la visió per computador a l’àmbit industrial per realitzar inspeccions automàtiques, control de processos i guiatge de robots.
- Visió de robot [imatges → moviment]: sovint es fa servir aquest terme indistintament de la visió de màquina, tot i que no són exactament el mateix. La visió de robot empra les imatges per determinar com s’ha de moure el robot.
Com que la visió de màquina i la visió de robot es poden considerar englobades dins de la visió per computador, sovint emprarem aquest últim terme per referir-nos al conjunt de les tres tècniques.
Algunes de les aplicacions de la visió per computador són: reconeixement òptic de caràcters (Figura 2.4), detecció i reconeixement de cares, biometria basada en visió, detecció de formes, detecció de moviment, cotxes intel·ligents o autònoms, robòtica, medecina, realitat virtual i augmentada, reconstrucció 3D, etc. Molts d’aquests exemples fa molt pocs anys que existeixen. És una àrea de recerca que està canviant molt ràpidament i allò que es considerava complicat d’assolir ara és possible.
Figura 2.4. Reconeixement òptic de caràcters
El desenvolupament tecnològic ha fet possible que els robots puguin fer servir càmeres com a ulls, cosa que abans era impensable. Durant la major part de la història de la visió per computador (que remunta fins els anys 60) les càmeres digitals eren aparatoses i cares, i la potència computacional dels
ordinadors era inadequada. Els nous algoritmes, el preu assequible dels sensors i la potència de càlcul necessària de la que disposen els ordinadors, fan que la visió sigui un sensor molt pràctic avui dia.
Un robot és una màquina que percep el seu entorn i utilitza aquesta informació, junt amb un objectiu, per planificar una acció i dur-la a terme [13]. Els sensors són una part importantíssima del robot. N’hi ha de propioceptius, que mesuren l’estat en què es troba el robot, i de exteroceptius que mesuren l’estat del món extern respecte el robot. Dins d’aquest segon grup trobem la càmera, un sensor òptic utilitzat per captar radiació electromagnètica i formar una imatge d'un objecte o escena exterior [14].
Si un robot pot veure el seu element terminal i pot fer servir aquesta informació per guiar-lo cap a l’objecte que vol manipular, aleshores no cal invertir tants esforços en què els objectes estiguin a una posició i orientació determinades, molt precises, i el moviment del robot no ha de ser tant exacte. Això és el que els humans anomenem coordinació ull-mà i és el que pretén el control per visió. Amb la visió per computador, la posició objectiu no ha de ser coneguda amb antelació, el robot va a buscar l’objecte allà on es trobi. Això comporta una sèrie d’avantatges: el posicionament de les peces previ a que el robot les vagi a buscar no és tan estricte, es pot treballar amb peces que estan en moviment, i els possibles errors d’exactitud de moviments del robot poden ser compensats.
Figura 2.5. Robot UR (Universal Robots) guiat per visió
2.4. Universal Robots i el robot UR3e
La companyia Universal Robots va ser fundada el 2005 a Dinamarca amb l’objectiu que la robòtica pogués ser accessible per les petites i mitjanes empreses. El 2008 surt a la venda el primer robot col·laboratiu, el UR5. És un cobot lleuger i flexible, pioner en la programació 3D fàcil de fer servir, amb una interfície d’usuari intuïtiva. Considerat com una de les fites tecnològiques més significatives de la dècada en la comunitat robòtica. Quatre anys més tard, el 2012, UR llança la primera generació de UR10. Capaç d’aixecar 10 kg (actualment 12,5 kg) i amb un abast de 130 cm, va dirigit a fabricants amb tasques més sol·licitants. El 2015 es llança el UR3, un cobot de sobretaula idoni per tasques
lleugeres d’assemblatge i per taules de treball. El 2016 es llança l’ecosistema UR+, una plataforma dirigida a fabricants que desitgin crear complements (elements terminals, accessoris, sistemes de visió, programari...) compatibles amb els robots d’UR. El 2018 es presenten els nous robots e-Series (UR3e, UR5e i UR10e). El 2019 s’anuncia el UR16e amb una capacitat de càrrega útil de 16 kg, un abast de 900 mm i una repetibilitat de +/- 0,05 mm. Ideal per automatitzar tasques de manipulació de materials i peces pesats. Finalment, el 2020 es llança el ActiNav, el primer kit de bin picking (selecció i recollida de peces en contenidors) autònom, per a aplicacions d’alimentació de màquina [15].
Actualment, Universal Robots és una de les empreses de fabricació i distribució de robots col·laboratius més punteres. Disposa de 29 oficines i té un total de 740 treballadors distribuïts en 20 països. Té una quota de mercat del 50% pel que fa a robots col·laboratius. I hi ha 400 empreses adherides a l’ecosistema UR+ [16].
Aquest treball gira en torn els robots UR3 ja que són dels que es disposa en el laboratori de l’escola.
En concret, la gama e-Series que és el de l’estació de treball que se m’ha assignat. El UR3e és el robot col·laboratiu més petit de la gama, perfecte per tasques de muntatge lleugeres i bancs de treball automatitzats. Aquest compacte robot de sobretaula de només 11 kg té una capacitat de càrrega de 3 kg i una rotació de ±360º en totes les seves articulacions excepte en l’última, que té rotació infinita [17].
Aquestes característiques converteixen el UR3e en un dels robots col·laboratius de sobretaula més flexible i lleuger.
El cobot UR3e és especialment útil en tasques com muntatge, polit, encolat i cargolat; tasques que requereixen una qualitat de producció uniforme. També pot encarregar-se de tasques com agafar, muntar i col·locar peces en una línia de producció. Degut al seu disseny compacte i a la facilitat de programació, resulta molt senzill assignar-li noves tasques en funció de les necessitats de producció, cosa que fa reduir costos i obtenir un retorn de la inversió ràpid.
2.4.1. Especificacions del robot UR3e
El robot UR3e és un robot articular de 6 graus de llibertat.
Cadascuna de les articulacions pot realitzar rotacions de ±360º, excepte en l’última que disposa de rotació infinita. La seva àrea de treball és força gran, ocupa 500 mm des de l’eix de la base. A l’hora d’escollir el lloc d’instal·lació cal tenir en compte el volum cilíndric de l’eix de la base del robot (Figura 2.6). L’element terminal no és convenient que s’hi acosti ja que quan es desplaça en punts propers a aquests, les articulacions es mouen molt ràpid i el robot treballa
de manera ineficient. Figura 2.6. Àrea de treball del UR3e
La repetibilitat dels robots UR3e és de ±0,03 mm amb càrrega i, per tant, es pot considerar un robot manipulador segons la normativa UNE-EN ISO 9283:2003.
La càrrega màxima que suporta el robot és de 3 kg, sempre que el centre de gravetat de la càrrega útil coincideixi amb el centre de la brida de connexió del robot. Això no sempre es compleix, per aquest motiu a la gràfica de la Figura 2.7 es pot veure la càrrega màxima permesa en funció de la compensació del centre de gravetat. La compensació del centre de gravetat es defineix com la distancia entre el centre de la brida de connexió de l’element terminal i el centre de gravetat de la càrrega útil.
Les limitacions de velocitat a les articulacions són les següents: la base, l’espatlla i el colze es poden moure a un màxim de 180 º/s; per altra banda, els 3 canells tenen una velocitat màxima de 360 º/s.
A l’Annex 1 es pot consultar una taula resum amb totes les especificacions tècniques.
2.4.2. Llenguatges de programació
Hi ha dos maneres diferents de programar un robot d’Universal Robots. La més senzilla, fent servir la interfície d’usuari gràfica PolyScope (sovint referida com PolyScope GUI, del seu nom en anglès) i l’altra és fent servir el llenguatge URScript, més complexa i completa.
El PolyScope GUI és la interfície d’usuari de robot que està instal·lada a la TeachPendant. La TeachPendant és la pantalla tàctil que està connectada a la controladora i que ens permet configurar, controlar i programar el braç robòtic (també la podríem anomenar consola portàtil). Aquesta interfície és l’opció més senzilla per programar el robot, ja que és un sistema molt intuïtiu. Serà el llenguatge usat majoritàriament al llarg del treball.
La programació mitjançant scripts es pot donar de diverses maneres. Podem tenir un dispositiu extern que enviï comandes en format d’script sense que ni tan sols hi hagi un programa en el PolyScope. Es poden afegir comandes Script a un programa de la PolyScope que s’executarà. O, inclús, com és el cas d’aquest treball quan es fan servir funcions script, es pot tenir un programa servidor executant-se en un altre dispositiu i un programa client executant-se localment en el robot.
2.4.3. Comunicació per EtherNet sockets
Els sockets (o connectors) són un mecanisme de comunicació entre processos que permeten la Figura 2.7. Càrrega màxima en funció de la
compensació del centre de gravetat
comunicació bidireccional tant entre processos que s’executen dins d’una mateixa màquina com de processos executats en dispositius diferents. Quan els processos estan en màquines diferents, la comunicació es du a terme mitjançant xarxes d’ordinadors (EtherNet) [18]. Per establir aquestes connexions s’utilitza el protocol TCP/IP. Caldrà indicar les direccions IP del client i del servidor i el port de la connexió.
En les comunicacions per sockets, el robot actuarà com a client i l’altre dispositiu connectat com a servidor. El llenguatge URScript inclou comandes per obrir i tancar sockets, i per enviar i rebre dades en diferents formats [19].
3. PRIMER CONTACTE AMB ELS ROBOTS UR3e
3.1. Instal·lació del simulador a Windows
En aquest apartat es detallarà pas per pas com instal·lar el simulador de la PolyScope dels robots UR (URsim) en un ordinador amb sistema operatiu Windows. L’URsim està dissenyat pel sistema operatiu Linux. Per fer-lo servir en un altre sistema operatiu serà necessari l’ús d’una màquina virtual (MV). Una màquina virtual és bàsicament un programa on s’hi poden instal·lar diferents sistemes operatius.
El primer pas, serà instal·lar un programa de virtualització. N’hi ha diversos, però els més comuns són VMWare Player (gratuït per usos no comercials) i VirtualBox (programari lliure). En aquest cas, s’ha optat per instal·lar el segon, ja que és el que està instal·lat als ordinadors del laboratori de robòtica de l’escola. Un cop instal·lat, el programa es veu de la següent manera:
Figura 3.1. Finestra principal de VirtualBox
Paral·lelament, s’ha de descarregar la MV que proveeix Universal Robots a la seva pàgina de descàrregues [20]. L’arxiu de la MV està comprimit. Per tant, caldrà descomprimir-lo.
Tot seguit, clicarem sobre el botó Nueva (que té forma d’estrella) del VirtualBox (Figura 3.1) i s’obrirà la finestra emergent de la Figura 3.2. Allà donarem nom a la MV i seleccionarem el tipus i versió del sistema operatiu. A continuació seleccionarem una quantitat de memòria (RAM) a ser reservada per la màquina virtual de 768 MB.
Figura 3.2. Elecció del nom i del sistema operatiu de la MV
El següent pas consisteix en seleccionar l’arxiu de la MV que ens havíem baixat de la pàgina d’Universal Robots i que havíem descomprimit. Cal seguir la seqüència de clics descrita a la Figura 3.3.
Figura 3.3. Seqüència de clics descrita per seleccionar la MV
Finalment, un cop ja està creada la MV dins del programa de virtualització, anirem a la configuració i a l’apartat Pantalla canviarem el controlador gràfic a VBoxSVGA (Figura 3.4). Si no féssim això, tindríem problemes a l’hora de fer servir el simulador ja que no s’ajustaria bé a la mida de la pantalla.
Figura 3.4. Configuració del controlador gràfic de la MV
Per últim, pot ser interessant configurar la MV perquè llegeixi USB i així poder passar arxius del simulador al robot i viceversa. Per fer això, primer cal iniciar la MV. En el menú Dispositivos > USB veiem tots els dispositius disponibles (Figura 3.5). Seleccionem el que ens interessa i ja el podem fer servir. Si no sabem reconèixer el dispositiu dins de la llista, es pot mirar quin és l’element que apareix/desapareix en connectar-lo/desconnectar-lo.
Figura 3.5. Llista de dispositius USB connectats
3.2. Aspectes bàsics sobre la PolyScope GUI
La PolyScope és la interfície d’usuari gràfica incorporada a la pantalla tàctil de la TeachPendant. És el sistema que s’encarrega de controlar el braç robòtic i la controladora, i és el lloc on es creen i s’executen els programes del robot [21]. La PolyScope es divideix en tres zones:
A) Capçalera amb pestanyes i icones que carreguen diferents pantalles interactives.
B) Peu de pàgina amb botons que controlen l’estat del robot i dels programes carregats.
C) Pantalla amb camps que gestionen i supervisen les accions del robot.
Figura 3.6. Distribució del PolyScope
A continuació s’expliquen les pestanyes, icones i botons que hi ha:
Executar serveix per controlar el robot mitjançant programes prèviament guardats.
Programa serveix per crear o modificar programes del robot.
Instal·lació serveix per configurar els ajustaments del braç robòtic i els equips externs.
Moure serveix per controlar o regular el moviment del robot, és a dir, per moure’l.
Entrades/Sortides serveix per supervisar i ajustar les senyals d’entrada i sortida des de la controladora del robot.
Registre indica la salut del robot i registra tots els missatges d’advertència o d’error.
Nou... serveix per crear un programa o una instal·lació nova.
Obrir... serveix per obrir un programa o una instal·lació guardada.
Guardar... serveix per guardar un programa o instal·lació.
Suma de comprovació mostra la configuració de seguretat activa.
Menú hamburguesa dona accés a la Ajuda, Sobre, Configuració i botó d’apagat.
Inicialitzar serveix per gestionar l’estat del robot.
Sabrem l’estat segons el color: vermell = aturat, groc = inactiu, verd = normal.
Barra lliscant de velocitat mostra en temps real la velocitat relativa a la que es mou el braç robòtic.
Reproduir serveix per iniciar el programa del robot obert.
Pas serveix per executar el programa pas a pas.
Parar serveix per aturar l’execució del programa.
Simulació serveix per canvia l’execució del programa entre el mode de simulació i el robot real. En el mode simulació el braç robòtic no es mou.
3.3. Configuració d’elements de seguretat
3.3.1. Ajustaments de seguretat del robot
El robot disposa de diverses configuracions de seguretat que es poden programar. Es poden establir límits de potència, de força, de velocitat i de rang de moviment. El robot també permet definir diferents elements virtuals que el fan més segur, com ara els plans de seguretat.
3.3.1.1. Definició de plans de seguretat
Els plans de seguretat són útils quan es volen definir diferents regions de l’espai de treball, sobretot si hi ha alguna d’aquestes regions on no volem que el robot hi accedeixi o, si ho fa, ho faci de manera més segura (per exemple, un lloc on hi puguin haver persones). Un exemple d’això es dona al laboratori de robòtica de l’escola. Com es veu a la Figura 3.7 a la part posterior de l’estació hi ha un passadís per on hi poden passar persones. En aquest cas pot ser interessant definir un pla a la part posterior de l’espai de treball per tal que el robot no el sobrepassi.
Figura 3.7. Espai de treball al laboratori de robòtica de l'ETSEIB
Per tal de poder restringir el moviment a través d’un pla, primer s’ha de definir el pla. Això es pot fer en el menú Features que es troba a la pestanya Installation (Figura 3.8). Allà escollirem l’opció Point, ja que és la característica més simple que ens permet definir un pla (un punt de pas i la normal al pla).
Després clicarem a Teach this point (depèn de la versió també pot ser Set Point) i posicionarem el TCP (Tool Center Point) en el pla que es vol definir de manera que quedi perpendicular. En aquest cas, hem definit el ‘Punt_posterior’ (Figura 3.8), ja que ens interessa que el robot només treballi a l’àrea de treball, situada davant del robot. Finalment, cliquem el botó OK.
Figura 3.8. Definició d'una característica (‘Punt_posterior’) del pla de seguretat
Un cop definida la característica, ja es pot crear el pla de seguretat (Figura 3.10). S’ha d’anar al menú Safety i tot seguit al submenú Planes. A la secció de dalt a la dreta, clicar Add plane per afegir un pla de seguretat nou. Ara s’ha d’associar el pla a l’àrea que s’acaba de definir. A l’apartat Copy Feature, seleccionar el punt creat anteriorment. A l’apartat de Restrictions hi ha diverses opcions:
- Normal: El robot no pot creuar el pla quan està en mode normal.
- Reduced: El robot no pot creuar el pla quan està en mode reduït.
- Both: El robot no pot creuar el pla en cap dels dos modes, és a dir mai.
- Trigger Reduced mode: En creuar el pla, el robot passa de treballar de mode normal a mode reduït.
En aquest cas s’escull l’opció Both ja que es vol impedir que el robot sobrepassi el pla en cap dels modes d’execució.
Finalment, cal clicar Apply i, després, Apply and restart. D’aquesta manera la restricció ja quedarà configurada.
Figura 3.9. Tipus de restriccions
Figura 3.10. Pla de seguretat a la part posterior del robot
Tal i com es veu a dalt a la dreta de la Figura 3.10, hi ha dos plans de seguretat definits. Un d’ells és el
‘Posterior’, del qual ja se n’ha justificat la seva creació. L’altre és el ‘Base’. Aquest es crea ja que el robot està muntat a sobre d’una taula de treball i, per tant, no convé que el robot la pugui sobrepassar.
3.3.1.2. Crear una esfera de l’eina
Aquesta funcionalitat és molt útil quan el robot ha d’agafar i moure peces grans. Cal tenir en compte que, quan creem un pla, estem impedint que el TCP el creui (en el cas d’haver seleccionat la restricció Both). Si la peça que està transportant el robot és gaire gran és possible que aquesta creui el pla de seguretat. A la Figura 3.11 es veu que tot i que el TCP (punt vermell) no creua el pla, hi ha part de la peça que si que ho fa. Per evitar això, es pot crear una esfera de l’eina que inclogui la peça (Figura 3.12).
Figura 3.11. Pla sense esfera de l'eina Figura 3.12. Pla amb esfera de l'eina
Per crear aquesta esfera que envolta l’eina i la peça, cal anar al submenú Tool Position dins del menú Safety. A dalt a la dreta, cliquem Add Tool. I per últim configurem el radi de l’esfera, que tindrà el centre en el TCP, i cliquem Apply.
Figura 3.13. Configuració de l'esfera de l'eina
3.3.2. Dispositius de seguretat externs
En molts casos, utilitzar els ajustament de seguretat del robot són suficients, però a vegades els dispositius de seguretat externs poden ser molt útils. En aquest apartat s’explicarà com instal·lar un escàner de seguretat, un botó de reinici i un botó de parada d’emergència. En el laboratori de l’escola no es disposa d’aquests elements de seguretat, principalment perquè no són necessaris per l’ús que se’ls dona (educacional). De tota manera, s’ha cregut interessant explicar com s’haurien d’instal·lar en cas que es volgués.
3.3.2.1. Escàner de seguretat
L’escàner de seguretat és un element que permet detectar la presència de persones dins de l’espai de treball del robot. L’escàner es pot connectar de diverses maneres depenent de com es vol que actuï el robot en cas de detectar la presència d’algú.
Primer s’explicarà què s’ha de fer si es vol que el robot passi a treballar de mode normal a mode reduït en detectar un operari en el seu espai de treball. Per començar, s’ha de connectar l’escàner a les entrades configurables, tal com es mostra a la Figura 3.14.
Posteriorment, per configurar-lo, s’ha d’anar a la pestanya Installation de la TeachPendant. Allà, al menú Safety, a l’apartat de I/O (Inputs/Outputs). Ajustem la funció de l’entrada on s’ha connectat com a Reduced Mode (Figura 3.15). D’aquesta manera, quan el sensor s’activi, el robot passarà al mode reduït i desenvoluparà les tasques de manera més lenta.
Figura 3.15. Entrades configurables amb la funció de mode reduït assignada
Figura 3.14. Connexió de l'escàner de seguretat a les entrades configurables
Una altra manera de connectar l’escàner de seguretat és mitjançant les connexions de seguretat (Figura 3.16). Connectem els pins a les ranures de Safeguard stop que, com el seu nom indica, en ser activades realitzaran una parada de seguretat.
Connectat d’aquesta manera, l’escàner de seguretat fa que, en ser activat, el programa s’aturi i es reprengui automàticament en deixar d’estar activat.
És important, desactivar el mode reduït associat anteriorment a les entrades configurables (Figura 3.15) ja que ara no hi tenen l’escàner connectat i el robot treballaria tota l’estona en mode reduït.
3.3.2.2. Botó de reinici de seguretat
Anteriorment, amb l’escàner de seguretat connectat a les entrades de parada de seguretat, el programa es reactivava sol quan el sensor deixava d’estar activat. Connectant el botó de reinici de seguretat, el programa no es reactivarà fins que el boto es premi. Hem de connectar el botó a les entrades configurables, tal i com es veu a la Figura 3.17. I assignar a les entrades (en aquest cas la 0 i la 1) la funció Safeguard Reset (reinici de seguretat).
Figura 3.17. Connexió i configuració del botó de reinici de seguretat
Figura 3.16. Connexió de l'escàner de seguretat a les entrades de seguretat
3.3.2.3. Botó de parada d’emergència
En connectar el botó de parada d’emergència a les entrades de seguretat tal i com es veu a la Figura 3.18, el robot s’aturarà quan el premis. Per reactivar el robot després d’una parada d’emergència, primer s’ha de desbloquejar el botó de parada i després reiniciar el programa des de la TeachPendant (Figura 3.19). El programa no es reprendrà des d’on s’havia quedat aturat sinó que tornarà a començar des de l’inici.
Figura 3.19. Missatge de la TeachPendant en prémer el botó de parada d’emergència
3.4. Accessoris disponibles al laboratori de robòtica
En aquest apartat s’explicarà quins són els accessoris dels que s’ha disposat al laboratori de robòtica de l’ETSEIB i que, per tant, s’han pogut emprar en el desenvolupament de les aplicacions.
3.4.1. Element terminal: Pinça 2F-85 Robotiq
Les pinces són un dels elements terminals més comuns per la seva gran versatilitat. En aquest cas, es disposa de les pinces de Robotiq, una empresa que es dedica a fabricar accessoris per robots de diverses marques. Robotiq està adherida a UR+ i ofereix accessoris com, entre d’altres, grippers de buit, pinces, equips i software d’acabament de superfícies (poliment), càmeres, sensors de força, etc.
La 2F-85 és una pinça de 2 dits (Fingers) amb una obertura de 85 mm. El seu disseny permet la subjecció paral·lela de peces interna i externament, així com un exclusiu mode de subjecció completa (Figura 3.20) [22].
Figura 3.18. Connexió del botó de parada d'emergència
Figura 3.20. Subjecció completa i paral·lela
Per fer servir aquesta pinça és necessari instal·lar una URCap que la permeti controlar. Es podrien definir les ‘Caps’ (capacitats) com a aplicacions. Són accessoris, hardware i software que estenen les capacitats dels robots UR per poder realitzar diferents tasques. Es pot consultar com instal·lar la URCap i realitzar tot el muntatge a l’Annex 2.
3.4.2. Cinta transportadora
Aquest complement és molt útil per simular cadenes de producció industrials. En el mon de la industria es fan servir les cintes transportadores per fer avançar els productes en una línia de producció. Sovint hi ha robots instal·lats al voltant d’aquestes cintes que duen a terme diferents tasques com ara manipular, seleccionar, classificar, alimentar una màquina o empaquetar.
En l’aplicació final que ens ocupa aquest element ens serà molt útil per simular l’entorn de treball industrial. En l’aplicació final, el robot rebrà unes peces a través de la cinta transportadora i les haurà de classificar.
La cinta de la que disposa la nostra estació de treball és de la marca Dobot que, entre d’altres, fabrica material robòtic educatiu. Té una longitud de 600 mm i pot aguantar un per de fins a 500 g [23], suficient per poder simular una gran varietat d’escenaris.
Figura 3.21. Cinta transportadora Dobot
3.4.3. Sensor de presència
Un element molt important, per no dir imprescindible, quan es fa servir una cinta transportadora és un sensor de presència (també anomenat sensor de proximitat).
Normalment es controla quan la cinta s’ha d’aturar o quan s’ha de tornar a moure segons la posició de les peces que es transporten. Per detectar la presència de peces en un punt de la cinta concret és necessari l’ús de sensors. Per tant, en les aplicacions es farà ús combinat de la cinta transportadora i el sensor de presència per subministrar les peces al robot.
Al laboratori de robòtica es disposava dels sensors ultrasònics de distancia 940-F4Y-2D-001-300E de la marca Honeywell (Figura 3.22). Es pot observar la seva fitxa de dades a l’Annex 3.
Figura 3.22. Sensor de presència Honeywell
4. PROGRAMES SENZILLS. CODIS I COMANDES
Aquest apartat té com a finalitat explicar l’ús de les comandes que ens ofereix el software de programació del UR3 mitjançant la implementació de programes senzills.
4.1. Introducció. Estructura dels codis
El codi es pot escriure/modificar a la pestanya Program de la TeachPendant o del simulador URsim (a l’apartat 3.1 s’ha explicat com instal·lar-lo).
Es poden distingir 4 parts dins del codi: el BeforeStart, el Robot Program, els SubPrograms i els Threads. A continuació s’expliquen:
• BeforeStart (abans de començar): Com el seu nom indica, és una part del codi que només s’executa al principi. És especialment útil quan s’han de definir estats inicials o per aquelles accions o processos que només s’han d’executar una vegada, abans d’iniciar el programa del robot.
• Robot Program (programa del robot): És el que conté totes les accions que ha de realitzar el braç robòtic. Aquest s’estarà executant en un bucle infinit, a no ser que s’indiqui el contrari.
• SubProgram (subprograma): Quan hi ha una part del codi del programa que es repeteix, es pot crear una subrutina amb aquesta part del codi i cridar-la tantes vegades com faci falta. Així s’aconsegueix que el codi sigui més compacte i eficient.
• Thread (fil d’execució): És un conjunt de comandes executades paral·lelament al programa del robot. Això ens permet estar executant a la vegada diferents tasques de manera que s’optimitza el temps emprat.
4.2. Pick and place
El pick and place és una de les aplicacions més utilitzades dels robots industrials. També es tracta d’una de les més senzilles de programar ja que consisteix en agafar un objecte d’un lloc i deixar-lo a un altre lloc. Evidentment, com totes les tasques, es pot fer un pick and place més senzill o més complex. En aquest cas, serà un programa molt senzill ja que pretén ser introductori de comandes bàsiques.
4.2.1. Espai de treball
Com s’observa a la Figura 4.1, l’espai de treball inclou una cinta transportadora, un sensor i un punt de deixada de les peces. La cinta transportadora està situada davant del robot, dins la seva àrea de treball, però deixant-li espai suficient perquè el robot es pugui moure amb llibertat. Aquesta serà l’encarregada de subministrar les peces al robot. El sensor està col·locat al final del recorregut de la cinta, al lloc on el robot haurà d’anar a buscar les peces. S’ha optat per posar el sensor a la part exterior de l’àrea de treball del robot per no interferir en els seus moviments. Finalment, veiem definit un espai de deixada de peces. En un entorn industrial és possible que aquest punt de deixada fos una altra cinta transportadora o una màquina (aquest segon cas seria una aplicació d’alimentació de màquina).
Figura 4.1. Espai de treball de la aplicació pick and place
4.2.2. Funcionament de l’aplicació en base al codi del robot
Mirant la Figura 4.2, veiem que abans de començar el programa, ens assegurem que la pinça estigui activa i oberta (línies 2 i 3). Tot seguit iniciem el programa aproximant-nos al punt de recollida realitzant un moviment articular (línies 6 i 7). Esperem en aquella posició fins que es detecta la presència d’una peça davant del sensor (línia 8), moment en què el braç baixarà amb un moviment rectilini fins el punt de recollida, tancarà la pinça i tornarà a pujar (línies 9-12). Amb un moviment articular, s’aproximarà al punt de deixada (línies 14 i 15).
Finalment, es deixa la peça (línies 16-19). Paral·lelament s’executa un altre programa (Thread_1) que controla el moviment de la cinta transportadora. Quan no hi ha cap objecte davant del sensor, la cinta es mou (línies 21 i 22). Quan el sensor detecta la presència d’una peça, la cinta s’atura (línies 23 i 24).
4.2.3. Comandes del codi del robot
En aquest apartat s’explica per a què serveixen i com configurar totes les comandes que apareixen en el codi del pick and place de la Figura 4.2.
Dins del BeforeStart trobem les comandes Gripper Activate i Gripper (en aquest cas realitzant l’acció de Open, més endavant es fa servir la Close). Ambdues les trobem dins del menú URCaps (la instal·lació de la qual està explicada a l’Annex 2).
• Gripper Activate: aquesta comanda serveix per assegura-os que la pinça estarà activa.
• Gripper: aquesta comanda genera una acció de la pinça. Pot ser l’acció d’obertura (Open) o l’acció de tancament (Close). El número entre parèntesi al costat de la comanda d’obertura o tancament indica la pinça que realitza l’acció, ja que n’hi podria haver més d’una. Per seleccionar l’acció d’obertura cal seguir la seqüència de la Figura 4.3. Per seleccionar l’acció de tancament es seguiria el procés anàleg.
Figura 4.2. Codi del pick and place
Figura 4.3.Sqüència per afegir la comanda Gripper Open
Dins del Robot Program, a part de l’obertura i tancament de la pinça, trobem els moviments MoveJ i MoveL, amb els seus respectius Waypoints (punts de pas), i la comanda Wait (espera). Totes elles es troben dins l’apartat de comandes bàsiques.
Un cop inserida la comanda Move, es pot escollir el tipus de moviment. L’articular (J de Joint) és el més ràpid i ens servirà per fer trajectòries llargues on no es importa el moviment descrit. El linear (L de Linear) descriu trajectòries rectes, útil per moviments precisos. Per últim, el “camí” (P de Path) serveix per descriure trajectòries lineals a velocitat constant arrodonint els cantells; també serveix per definir trajectòries circulars.
Dins de la comanda Move cal afegir els Waypoints. Per fer-ho cal seguir la seqüència de la Figura 4.4. Posteriorment se’ns obre una pestanya que ens permet moure el robot i quan el tenim posicionat al lloc que volem cal prémer el botó OK.
Figura 4.4. Seqüència per afegir un Waypoint
La comanda Wait fa que el programa es quedi aturat en aquell punt fins que es compleixi la condició.
Normalment es fa servir per aturar el programa un període de temps determinat o fins que es detecta una senyal d’entrada concreta.
Per útil, en el Thread_1 apareixen les comandes If i Set. La comanda Set la trobem dins del conjunt de comandes bàsiques i ens permet configurar l’estat de les sortides. Per últim, hi ha la comanda avançada If que permet avaluar la veracitat d’una expressió, comparant el valor d’una variable o, com aquest cas, el valor d’una senyal d’entrada.
4.3. Tasca col·laborativa: paletitzat amb control de qualitat
Aquesta aplicació és una evolució de l’anterior. Ara en la deixada es realitza un palet. A més, es realitzarà un control de qualitat mitjançant inspecció humana cada un cert nombre de peces. Aquest és un bon exemple de treball col·laboratiu humà-robot: el robot realitza la tasca feixuga de l’empaquetat i l’humà supervisa el procés i inspecciona la qualitat de les peces. És una col·laboració seqüencial ja que l’espai de treball és compartit però les accions del robot i de l’humà es produeixen de manera alternada.
4.3.1. Espai de treball
A la Figura 4.5 s’observa l’espai de treball de l’aplicació col·laborativa. Al fons de la imatge hi ha l’espai de deixada, on es deixen les peces seguint el patró del palet indicat. A l’esquerra es troba el sistema de subministrament amb la cinta transportadora i el sensor de presència. El robot està en la posició d’inspecció, és a dir, està mostrant a l’operari la peça que aquest ha de revisar. L’operari aniria situat just davant del robot en aquesta configuració, tenint la TeachPendant al seu costat, a la dreta, per poder introduir la resposta corresponent després d’haver realitzat la inspecció.
Figura 4.5. Espai de treball de l'aplicació col·laborativa
4.3.2. Funcionament de l’aplicació en base al codi del robot
Mirant la Figura 4.6, veiem que abans de començar el programa, ens assegurem que la pinça estigui activa i oberta (línies 2 i 3), a més inicialitzem la variable comptador a 0 (línia 4). Tot seguit iniciem el programa aproximant-nos al punt de recollida realitzant un moviment articular (línies 7 i 8). Esperem en aquella posició fins que es detecta la presència d’una peça davant del sensor (línia 9), moment en què el braç baixarà amb un moviment rectilini fins el punt de recollida, tancarà la pinça i tornarà a pujar (línies 10-13). Si el comptador és igual a 3, és a dir, que s’han empaquetat 3 peces bones, el robot reiniciarà el comptador (línia 15), portarà la peça al punt d’inspecció (línies 16 i 17) i preguntarà a l’humà si la peça és bona (línia 18). Si la peça és bona, cridarem el subprograma Acceptar (línies 19 i 20). I si és dolenta, el subprograma Rebutjar (línies 21 i 22). Per últim, si el comptador encara no és 3, cridarem el subprograma Acceptar (línies 23 i 24).
El subprograma Acceptar col·loca la peça a la posició corresponent del palet definit (línies 27-43) i augmenta el comptador e una unitat (línia 44). El subprograma Rebutjar, simplement deixa la peça defectuosa al lloc determinat per a aquestes peces (línies 46-49). Finalment, el Thread_1 (que controla la cinta transportadora) funciona de la mateixa manera que en el pick and place de l’apartat 4.2.
Figura 4.6. Codi de la tasca col·laborativa: paletitzat amb control
de qualitat
4.3.3. Comandes del codi del robot
En aquest apartat s’explica per a què serveixen i com configurar totes les comandes noves que apareixen en el codi de la tasca col·laborativa de la Figura 4.6.
Dins del BeforeStart apareix per primera vegada la comanda avançada Assignment, aquesta comanda serà emprada diverses vegades al llarg del codi amb diferents configuracions. Ens permet assignar un valor a una variable. Per defecte, en inserir la comanda, es crea una variable nova amb un nom automàtic, però se li pot canviar el nom o seleccionar una variable ja creada prèviament en el programa. Per defecte, la variable pren per valor el resultat d’una expressió (s’observen dos exemples d’assignació de la variable ‘comptador’ a la Figura 4.7). A la pestanya source es pot canviar la opció a Operator de manera que, quan el programa s’estigui executant i arribi a aquella línia de codi, salti un missatge a la pantalla de la TeachPendant demanant a l’operador que introdueixi el valor corresponent en aquell moment (un exemple és la variable ‘inspeccio’ del codi, Figura 4.8). El valor a introduir per l’operari acostuma a ser una resposta binària (Sí o No) o numèrica.
Figura 4.7. Variable assignada per una expressió Figura 4.8. Variable assignada per l'operador
En aquest codi s’observa per primera vegada l’aparició de subprogrames. Per afegir un SubProgram cal situar-se sobre de Robot Program i després anar al menú de comandes avançades i clicar el botó SubProg. Es crea el subprograma (al qual se li pot canviar el nom) i es poden afegir comandes igual que ho faríem en el programa principal. Per cridar la subrutina, hem d’estar dins del programa principal i clicar el mateix botó que hem premut per crear-lo. Ara, però, enlloc de crear un subprograma, se’l crida.
Finalment, tenim el palet. La comanda Palletizing dins del menú Templates és la que ens permet definir el palet. Dins de la configuració del palet, s’ha d’introduir l’alçada dels objectes perquè, en cas que volguéssim fer diverses capes, l’hem de conèixer. Després dins de Patterns s’ha de seleccionar el patró de paletitzat (en aquest cas s’ha escollit el patró Grid). Seguint aquest exemple, a la configuració de la graella s’ha d’indicar el nombre de files i columnes que tindrà. Tot seguit, s’han de definir les
posicions de les cantonades. A continuació s’assigna un patró per cadascuna de les capes del palet.
Finalment, seguint les indicacions de l’assistent dins de l’apartat At Each Item es configuren les posicions d’aproximació, de deixada i de sortida relatius a cada posició del palet. Pot semblar que el palet és una mica feixuc de programar, però és un procés intuïtiu i força guiat per la pròpia consola de programació. Si es requereixen més detalls sobre com realitzar cadascun dels passos o es volen veure totes les possibilitats que ofereix la plantilla del paletitzat, es pot consultar el manual d’usuari [21] on està explicat amb tot detall.
4.4. Programa comunicat per sockets amb el Matlab
Aquest és un programa molt senzill a nivell de moviments del robot ja que es centra en la comunicació per sockets TCP/IP entre el robot i l’ordinador. Això ens permetrà iniciar-nos en el control remot i l’intercanvi de dades del robot amb el Matlab.
4.4.1. Espai de treball
En aquest cas, l’espai de treball és indiferent ja que el robot es mou a tres punts qualsevols de l’espai i no necessita cap accessori a part de l’ordinador, que estarà connectat al robot per xarxa, mitjançant un canal de comunicació de sockets.
4.4.2. Funcionament de l’aplicació en base al codi del robot
Mirant la Figura 4.9, veiem que abans de començar el programa, obrim la comunicació (línies 2-5), a més inicialitzem la variable tasca a 0 (línia 6). Tot seguit iniciem el programa. Si la tasca que ha de desenvolupar és la 1, va al punt 1 i reinicialitza la variable tasca (línies 8-12). El mateix succeeix per les tasques 2 i 3, amb els punts 2 i 3 (línies 13-22).
El Thread_1 s’encarrega d’anar llegint els missatges que arriben pel canal de comunicació. Quan li arriba un missatge (llista d’un sol element), l’emmagatzema a la variable ‘dadaServer’ (línies 24-27). En funció del missatge rebut, s’assigna la tasca corresponent (línies 28-33).
Figura 4.9. Codi del programa comunicat per sockets amb el Matlab
4.4.3. Comandes del codi del robot
En aquest codi només hi ha una comanda avançada nova, el Loop. És un bucle que es repeteix un nombre determinat de vegades. Dins de les opcions de la comanda es pot escollir si es vol que es repeteixi infinitament, un nombre concret de vegades o sempre que es compleixi una expressió.
4.4.4. Funcions del llenguatge de programació URScript
Per realitzar la comunicació amb sockets TCP/IP no és suficient l’ús de les comandes. Sovint haurem de combinar l’ús d’una comanda amb una funció en llenguatge de programació URScript i, fins i tot en algun cas, haurem d’acabar introduint la comanda avançada Script que ens permet escriure un tros de codi dins del programa (no és el cas d’aquest programa).
La primera funció que apareix és socket_open(IP_ordinador, port). Aquesta, obre la comunicació EtherNet. Té dos paràmetres: la IP de l’ordinador (en format de cadena de caràcters, o string en anglès) i el port (un número enter, que no sigui un dels ports reservats. En aquest cas es fa servir el 30003 ja que està pensat per la comunicació amb ordinadors [24][19]). La funció retorna True si la connexió s’ha establert i False en cas contrari. És per aquest motiu que es programa fent servir un Loop (línies 2-5 del codi de la Figura 4.9), per assegurar-nos que la connexió s’estableix abans de continuar.
Per altra banda, es fa servir la funció socket_read_ascii_float(n). Llegeix una llista (en format de cadena de caràcters) de longitud n, que conté nombres decimals escrits amb “.” i separats per “,”. La funció retorna una llista de longitud n+1, el primer element de la qual és la longitud, seguit dels nombres de la llista llegida. Per exemple, una llista de longitud 3: “(1.0,2.0,3.0)” seria llegida i retornaria el següent: [3,1.0,2.0,3.0]. Una lectura errònia fa retornar la llista [0].
El motiu pel qual es fa un Loop a l’hora de llegir el socket, és per assegurar-nos que tenim una lectura correcta abans de continuar. A la línia 25 del codi de la Figura 4.9 veiem que es comprova el valor del primer element de la llista emmagatzemada a la variable ‘dadaServer’ (dadaServer[0]). Aquest ha de ser 1 ja que estem esperant una llista d’un sol element. Per tant, mentre aquest valor no sigui 1, es seguirà llegint el canal de comunicació. Un cop el valor del primer element és 1 (és a dir, s’ha fet una lectura) es compara el valor del segon element de la llista (dadaServer[1]), que és el que hem rebut pel canal de comunicació, amb un seguit de possibles valors.
Per a més funcions del llenguatge de programació URScript, es pot consultar l’Annex 4.