• No results found

Conversie van patroon naar robot bewegingsprogramma

N/A
N/A
Protected

Academic year: 2021

Share "Conversie van patroon naar robot bewegingsprogramma"

Copied!
75
0
0

Bezig met laden.... (Bekijk nu de volledige tekst)

Hele tekst

(1)PRODUCT VERSLAG. Project:. Conversie van patroon naar robot bewegingsprogramma. Student:. Daan van der Meijden. School:. Avans Breda. Bedrijf:. AWL-Techniek. Afstudeerperiode:. 21-01-2011 t/m 24-6-2011. Opleiding:. Mechatronica. Bedrijfsbegeleider:. Anton C. Weertman.

(2) I. I. II. III. IV.. Inhoudsopgave.......................................................................................................... 2 Voorwoord................................................................................................................ 3 Samenvatting ............................................................................................................ 4 Inleiding .................................................................................................................... 5. Hoofdstuk 1. 1.1 1.2. 2.1 2.2 2.3 2.4. Oplevering applicatie .............................................................................. 46. Het testen van de applicatie ................................................................................................................ 46 Verandering voor de simulatie-engineers ........................................................................................... 49 Verandering voor de robotprogrammeurs .......................................................................................... 49. Hoofdstuk 6. 6.1 6.2 6.3. Applicatie ontwerp ................................................................................. 38. Importeren en converteren STEP bestand .......................................................................................... 39 Bewerken lasvorm ............................................................................................................................... 42 Genereren lascode .............................................................................................................................. 45. Hoofdstuk 5. 5.1 5.2 5.3. Functie ontwerp...................................................................................... 23. Flexibiliteit robot lascode .................................................................................................................... 24 Curve beweging ................................................................................................................................... 26 Laserlas formaat .................................................................................................................................. 29 Curve omzetten naar laspunten .......................................................................................................... 30 Lasvorm genereren vanuit lijn afbeelding ........................................................................................... 32. Hoofdstuk 4. 4.1 4.2 4.3. Vooronderzoek ......................................................................................... 7. Laserlassen in het algemeen.................................................................................................................. 7 Huidige manier van werken binnen AWL .............................................................................................. 9 Robot aansturing ................................................................................................................................. 15 Aangeleverde lasvorm ......................................................................................................................... 19. Hoofdstuk 3. 3.1 3.2 3.3 3.4 3.5. Projectdoel ............................................................................................... 6. Doelstelling ............................................................................................................................................ 6 Subdoelen .............................................................................................................................................. 6. Hoofdstuk 2.. V.. INHOUDSOPGAVE. Conclusie en aanbevelingen .................................................................... 50. Conclusie ............................................................................................................................................. 50 Onderwerpen voor eventuele vervolg projecten ................................................................................ 50 mijn aanbevelingen ............................................................................................................................. 52. Bronnen .................................................................................................................. 53. Bijlage 1 | Eisen van de opdrachtgever Bijlage 2 | Bestands formaten Bijlage 3 | Handleiding SolidWorks Bijlage 4 | Handleiding WeldShape Applicatie. Pagina 2 | I Inhoudsopgave.

(3) II.. VOORWOORD. Dit productverslag is opgesteld gedurende het afstudeerproject dat ik intern heb uitgevoerd voor AWLTechniek te Harderwijk. Het schrijven is gebeurd met twee doelen voor ogen. In de eerste plaats rapporteer ik hierbij mijn bevindingen, conclusies en aanbevelingen aan AWL. Daarnaast zal het document ook een belangrijke rol spelen in het afronden van mijn opleiding Mechatronica aan de Avans Hogeschool. Over mijzelf en waarom ik voor deze opdracht heb gekozen. Door in 2004 te kiezen voor de MBO opleiding Mechatronica ben ik in de techniek beland. Gedurende die opleiding in Tilburg heb ik diverse stages doorgemaakt als electro-/mechanisch monteur, hier werd het voor mij steeds duidelijker dat ik de engineering richting in de automatisering op wilde. In 2008 ben ik dan ook begonnen met een HBO opleiding aan de Avans Hogeschool te Breda. Wederom heb ik bewust gekozen voor de brede technische opleiding Mechatronica omdat zowel de mechanische, elektrische als informatie technische aspecten van de techniek mij aanspreken. Sindsdien is het schrijven van software mij steeds beter gaan bevallen. Mijn doel is dan ook om voornamelijk dit aspect van de techniek in mijn afstudeeropdracht naar voren te laten komen. Ik zie het als een uitdaging om, ondanks mijn brede opleiding, zeer specifiek een richting op te gaan bij het afstuderen. Deze opdracht biedt daar alle gelegenheid voor. Dankwoord Het resultaat was alleen mogelijk dankzij alle hulp en ondersteuning die ik heb gekregen van diverse mensen die ik daarvoor wil bedanken. In de eerste plaats Henk Roeberts, Technische coördinator van de robot afdeling bij AWL-Techniek. Roeberts heeft veel van zijn kennis over robots en lasers gedeeld en is erg motiverend geweest dankzij zijn enthousiasme en het vertrouwen dat ik van hem kreeg met deze opdracht. Ook Jan Huisbrink, robot simulatie-engineer bij AWL-Techniek, heeft veel bijgedragen aan het project. Huisbrink heeft altijd de tijd genomen om mij te ondersteunen en toonde veel interesse in mijn project en voortgang. Verder heb ik bij het testen van mijn oplossing steun gehad van Rob van Oosten die de tijd heeft genomen om mij hierbij te helpen. Naast alle overige collega’s binnen AWL wil ik tenslotte mijn afstudeer begeleider bedanken, Anton Van Den Hengel van de Avans Hogeschool. Van Den Hengel heeft me begeleidt met het afstudeer proces en is ook helpend geweest bij een aantal problemen die ik tijdens dit project ben tegengekomen. Daan van der Meijden Udenhout 2011. Pagina 3 | II Voorwoord.

(4) III.. SAMENVATTING. AWL-Techniek heeft mij gevraagd een applicatie te ontwikkelen die het programmeren van een robotbeweging vergemakkelijkt. Het gaat hierbij om de specifieke bewegingen die een robot maakt bij het laserlassen, hoe deze bewegingen eruitziet is geheel afhankelijk van de gewenste lasvorm. Doorgaans levert de klant een lasvorm digitaal aan. Een robotprogrammeur zet een aantal punten uit op de lasvorm waarvan de X en Y coördinaten worden bepaald, die coördinaten worden vervolgens in de robot geprogrammeerd zodat deze de gewenste lasbeweging kan maken. Deze manier van werken neemt veel tijd in beslag en het achteraf aanpassen van een lasbeweging is lastig. Het is gewenst dat hiervoor een oplossing wordt gezocht zodat een lasvorm eenvoudig omgezet kan worden naar een robotbeweging en dat het aanpassen, roteren of verplaatsen van deze las een simpele handeling wordt. Om te kunnen laserlassen met een ABB robot wordt de LasAnyShape functie toegevoegd aan het robotprogramma. Deze functie zet laspunten (X en Y coördinaten) om in robotposities, stuurt de robot aan en triggerd de laser op het juiste moment. Er zitten een aantal beperkingen aan deze functie, zo dient elke las hetzelfde aantal laspunten te bevatten en is het niet mogelijk om de lassnelheid of andere lasparameters aan te passen voor een deel van de las. Door de LasAnyshape functie te optimaliseren (versie 5) is het mogelijk om elk willekeurig aantal laspunten te ondersteunen en kunnen ook de lasparameters eenvoudig worden aangepast voor een deel van de las. Met LasAnyShape versie 5 breng ik ook de mogelijkheid mee om de robot een circulaire beweging te laten maken gedurende het lassen. Met de originele functie kon de robot uitsluitend lineaire bewegingen maken van positie naar positie, een robot heeft echter ook de mogelijkheid om met een circulaire beweging naar een positie te bewegen. Uit vooronderzoek bleek dat gebruik van circulaire bewegingen het programmeergemak kan verhogen en de hoeveelheid code voor het declareren van een las drastisch kan reduceren. Om een las eenvoudig te kunnen bewerken, opslaan en uit te wisselen stel ik een formaat op waarin een complete laserlas wordt gedefinieerd, het WELD formaat. Dit formaat biedt een interface om een laspatroon te converteren naar een laserlas, alsmede een interface om een laserlas te converteren naar een robotprogramma. Om een lasvorm die de klant aanlevert naar dit formaat te krijgen wordt de aangeleverde lasvorm eerst omgezet naar een STEP bestand met behulp van SolidWorks. Het STEP bestand kan vervolgens automatisch worden omgezet naar het WELD formaat. Ook ziet de opdrachtgever graag de mogelijkheid dat een afbeelding van een las die met pen op papier is gezet kan worden omgezet naar een laserlas. Door een aantal vision technieken toe te passen op een dergelijke afbeelding wordt deze omgezet naar het WELD formaat. Vanuit het WELD formaat kan tenslotte op eenvoudige wijze code gegenereerd worden voor de lasbeweging. De bovengenoemde technieken komen samen in de WeldShape applicatie. Met deze Windows applicatie kan een las worden geopend, opgeslagen, geïmporteerd en geëxporteerd. Een grafische weergave geeft weer hoe de las eruit komt te zien. Ook biedt de applicatie een aantal bewerkingsmogelijkheden, waaronder het roteren, verschalen en transleren van de las, maar ook het aanpassen van de lasparameters voor een deel van de las behoort tot de mogelijkheden. Bij het testen van de WelShape applicatie bleek dat de uiteindelijke las zeer goed overeenkwam met dat wat de Weldshape applicatie laat zien in de grafische weergave. Door de applicatie toe te passen wordt direct tijd bespaart door robotprogrammeurs en simulatie-engineers. Overige voordelen zijn het makkelijker kunnen aanpassen van een las, het verkrijgen van een grafische weergave van de las bij de code en het meer controle hebben over het laserlassen dankzij extra mogelijkheden.. Pagina 4 | III Samenvatting.

(5) IV.. INLEIDING. AWL-Techniek is gespecialiseerd in verbindingstechniek, waarbij het automatiseren van een lasproces de corebusiness vormt. De machines van AWL-techniek worden voornamelijk verkocht aan de producenten van auto onderdelen welke veel waarde hechten aan de continuïteit en productiecapaciteit van deze machines. Met de relatief nieuwe techniek van het laserlassen is het mogelijk om snellere productietijden en een zeer hoge herhalingsnauwkeurigheid te behalen. Er zijn diverse manieren om het laserlassen toe te passen. Een van de manieren is het bevestigen van een optiek op een 6-assige industriële robot. De laserstraal wordt hierbij in een externe bron buiten de cel gegenereerd en via een glasvezelkabel naar de kop van de robot getransporteerd. Daar wordt de laser in focus gebracht op de te lassen materialen. Bij het lassen beweegt de robot met een constante snelheid om de gewenste lasvorm te verkrijgen.. Afbeelding IV-1 - laserlassen Een digitale tekening van de lasvorm wordt aangeleverd door de klant. De robotbeweging, equivalent aan deze vorm, dient te worden geprogrammeerd. In de huidige situatie gebeurt dit door een aantal punten uit te zetten op de aangeleverde lasvorm waarvan de X en Y coördinaten worden bepaald. De coördinaten worden vervolgens in de robot geprogrammeerd zodat deze tenslotte de gewenste lasbeweging kan maken. Deze manier van werken benut de flexibiliteit van een herprogrammeerbare robot niet optimaal. Bij het wijzigen van het laspatroon zullen diverse punten opnieuw moeten worden bepaald en ook opnieuw in de robot worden geprogrammeerd. Daarnaast biedt een reeks coördinaten voor de programmeur weinig inzicht in de vorm van de las waardoor een fout snel gemaakt is. Om optimaal gebruik te kunnen maken van de robots en de techniek van het laserlassen is het gewenst dat een figuur, verkregen van de klant, eenvoudig omgezet kan worden naar een robotbeweging. Verder is het de bedoeling dat het aanpassen, roteren of verplaatsen van een lasvorm een simpele handeling wordt. Hierbij zijn tijdsbesparing en de vereenvoudiging van het programmeerwerk (kleinere foutkans) een belangrijk voordeel. In dit document wordt de oplossing voor het zojuist beschreven probleem aangedragen. In hoofdstuk 1 wordt het doel van de opdracht nader omschreven. Hoofdstuk 2 bevat een viertal vooronderzoeken welke zijn uitgevoerd om de invulling van het project te verduidelijken. De belangrijkste aspecten van dit project zullen worden uitgewerkt in hoofdstuk 3. De oplossing zelf, in de vorm van een Windows applicatie, wordt in hoofdstuk 4 behandeld. Hoofdstuk 5 is toegelegd op de implementatie van de oplossing binnen AWL. Tenslotte zijn mijn conclusies en aanbevelingen in hoofdstuk 6 van dit document geplaatst. De inhoudelijke informatie kan het best worden begrepen wanneer het document wordt gelezen zonder delen over te slaan.. Pagina 5 | IV Inleiding.

(6) Hoofdstuk 1.. PROJECTDOEL. In dit hoofdstuk omschrijf ik wat het project inhoudt, er wordt antwoord gegeven op de vraag: “Wat wil de opdrachtgever?”. Ik heb bewust gekozen om de eisen en wensen van de opdrachtgever hier niet te vermelden. Door niet direct deze grote hoeveelheid onsamenhangende informatie te verschaffen behoudt dit document zijn leesbaarheid. Wanneer een ontwerpkeuze is gemaakt naar aanleiding van een specifieke eis of wens zal dit daarbij worden aangegeven. Mocht u toch interesse hebben om de eisen in te zien dan kunt u deze vinden in Bijlage 1.. 1.1. DOELSTELLING. De doelstelling staat centraal in het project. Mijn conclusies verderop in dit document zullen hieraan refereren. Het doel van dit project is als volgt geformuleerd: Doelstelling 8 Juni 2011 is er een laspatroon import- en conversieapplicatie gerealiseerd die laspatroon equivalente robot laserprogramma’s genereert. Ik zal de doelstelling toelichten. De basis van dit project wordt gevormd door een laspatroon welke op diverse manieren kan worden aangeleverd. Na het uitvoeren van dit project kan met behulp van een applicatie dit patroon eenvoudig worden omgezet naar een robotprogramma welke het laserlassen realiseert. Met diverse eisen en wensen wordt “eenvoudig omzetten” specifiek omschreven. Op dit moment is het vooral van belang om te weten dat het woord “eenvoud” een belangrijke rol speelt binnen dit project en direct invloed heeft op veel van de ontwerpkeuzes.. 1.2. SUBDOELEN. Naast de hoofddoelstelling zijn er ook een aantal subdoelen opgesteld. Ook deze dienen 8 Juni 2011 te zijn gerealiseerd. De subdoelen komen voort als bijproduct van het hoofddoel. Subdoelen. I. II. III. IV. V.. Er is onderzocht welke input de applicatie dient te kunnen verwerken om zo effectief mogelijk te zijn; Het Project Management Document is opgeleverd; Het productverslag is opgeleverd; Er is advies richting AWL geleverd gebaseerd op de bevindingen binnen het project; Het productverslag is gepresenteerd aan Avans en eventueel de bedrijfsbegeleider.. Pagina 6 | Hoofdstuk 1 Projectdoel.

(7) Hoofdstuk 2.. VOORONDERZOEK. Voordat ik aan een oplossing ga werken wil ik eerst onderzoek doen op een aantal punten. Dit zijn punten welke voor mij, of de opdrachtgever, nog niet helemaal duidelijk zijn maar wel belangrijk voor het verdere verloop van het project. Ook wil ik hiermee mijn kennis verbreden en mezelf meer bekend te maken met het probleem en de context ervan. Onderstaande vooronderzoeken heb ik uitgevoerd, de uitwerkingen hiervan vindt u in dit hoofdstuk. Vooronderzoeken 2.1 2.2 2.3 2.4. Laserlassen in het algemeen; Huidige manier van werken binnen AWL; Mogelijkheden software ABB robots; Bestandsformaten voor het uitwisselen van lasvorm gegevens.. 2.1. LASERLASSEN IN HET ALGEMEEN. Ik zal kort wat aandacht besteden aan de techniek van het laserlassen, dit omdat laserlassen wezenlijk verschilt van conventionele lasmethodes en weinig mensen er bekend mee zijn. Mijn doel is niet om hier een uitgebreide beschrijving te geven over alle type lasers en hun mogelijkheden, ik richt me uitsluitend op de basisprincipes. Wel zal ik iets dieper ingaan op het Remote Laser Welding omdat dit de techniek is welke veelvuldig wordt toegepast binnen AWL. Basisprincipe van een laser. De essentie van een laserbron is het coherent uitsturen van elektromagnetische straling van diverse golflengtes. Het woord laser is voortgekomen als acroniem voor “Light Amplification by Stimulated Emission of Radiation”, deze benaming kan nogal verwarrend zijn, met versterking van licht alleen bereik je namelijk geen coherentie van elektromagnetische straling. Desondanks is de naam zover ingeburgerd dat deze aangehouden wordt. In afbeelding 2.1.1 staat schematische weergegeven hoe een laser werkt. Het lasermedium wordt “gepompt” met bijvoorbeeld een flits lamp of een andere laser. Door dit pompen raken atomen in dit medium in aangeslagen toestand. Met de aanwezigheid van aangeslagen atomen in het lasermedium en het pompen van elektromagnetische straling zal gestimuleerde emissie plaatsvinden. gestimuleerde emissie is het verschijnsel waarbij atomen in aangeslagen toestand spontaan fotonen uitzenden in dezelfde fase en richting als de elektromagnetische straling welke de aanzet is tot dit verschijnsel. Hierbij zal de atoom zijn energie verliezen (terugkeren naar grondtoestand). Vrijgekomen fotonen zullen op hun beurt weer andere aangeslagen atomen aanzetten tot gestimuleerde emissie. Een foton wordt voortdurend tussen twee spiegels gekaatst door het lasermedium heen. Wanneer deze coherent loopt met de uitgaande laserstraal dan wordt de straling doorgelaten door de uittreedspiegel. Dit creëert de laser.. Pagina 7 | Hoofdstuk 2 Vooronderzoek. Afbeelding 2.1.1 - Werking laser. (Bron: The Computer Language Company).

(8) Toepassen van een laser om te lassen Bij het laserlassen wordt dt onderscheidt gemaakt tussen twee verschillende manieren met elk hun eigen toepassing. Bij heat conduction welding wordt gelast door het oppervlakte van het bovenliggend materiaal te verwarmen met de laser,, het materiaal smelt dan samen met het onderliggend onderliggend materiaal. materiaal Belangrijk is dat de te lassen materialen volledig dig op elkaar aansluiten, er mag dus geen lucht tussen zit. Deze toepassing is vooral geschikt voor het lassen van plaatmateriaal. De tweede manier van laserlassen is deep eep penetration welding, welding hierbij wordt diep in het materiaal doorgedrongen doorg met veel vermogen waarbij het materiaal zelfs zelf deels verdampt. Met deze toepassing kan een las gerealiseerd worden welke tot 25mm diep is. Ik I richt me uitsluitend op heat conducting welding, dit is de manier van laserlassen die AWL toepast in haar Remote Laser Welding systemen. Voordelen van het laserlassen -. Geen slijtage aan het gereedschap; gereedschap Zeer flexibel in de geometrie van een las; las Hoge lassnelheid; Hoge laskwaliteit, geen of weinig nabewerking nodig; nodig Weinigg thermische invloeden die de eigenschap van het materiaal kunnen veranderen; Lasvermogen kan eenvoudig worden aangepast; aangepast Zeer hoge herhalingsnauwkeurigheid. herhalingsnauwkeurigheid. Remote Laser Welding (RLW) ordt gebruik gemaakt van een laser met een goede goede straalkwaliteit en vermogens Bij Remote Laser Welding wordt rond de 4 Kw. Er zijn diverse lasers die dit kunnen leveren, lasers onderscheiden zich voornamelijk van elkaar door ander lasermedium te gebruiken of een andere manier van pompen. AWL past vaak disklasers toe waarbij een kristallijn materiaal* wordt gebruikt als lasermedium. las . Voor het pompen van de laser wordt vaak een diodelaser toegepast vanwege het hoge rendement (tot 40% van het elektrisch vermogen). Vanuit de laserbron wordt de laserstraal laser met een glasvezelkabel getransporteerd porteerd naar het laseroptiek. Het optiek zal de laserstraal vervolgens in focus brengen op de te lassen materialen. Afbeelding 2.1.2 is een voorbeeld van een robot welke bezig is met remote laser welding.. Afbeelding 2.1.2 - Remote Laser Welding. (Bron: Trumpf) * Veelgebruikt: Nd:YAG of Yb:YAG.. Pagina 8 | Hoofdstuk 2 Vooronderzoek.

(9) 2.2. HUIDIGE MANIER VAN WERKEN WE BINNEN AWL. Laserlassen met een 6 assige industriële robot is bekend terrein voor AWL, momenteel omenteel wordt de techniek veelvuldig toegepast binnen projecten. Er kunnen snelheden tot 150mm/sec worden behaald met het laserlassen, velen malen sneller dan conventionele las methodes. Om optimaal gebruik te kunnen maken van deze techniek worden hoge eisen gesteld aan de snelheid, nauwkeurigheid en flexibiliteit van de lasbeweging. lasbeweging In dit vooronderzoek ek bekijk ik hoe AWL momenteel moment een robot programmeert rogrammeert om deze de lasbeweging te realiseren. Het programmeren van een robot wordt uitgevoerd door een robotprogrammeur. Dee eerste stap binnen b een project wordt echter gezet door de simulatie-engineer, deze bepaalt in grote lijnen hoe de robotbeweging robot eruit komt te zien. De robotposities posities die voortkomen uit de simulatie vormen de basis voor het h programma dat de robotprogrammeur zal schrijven. Deze programmeur houdt zich ook bezig ig met I/O verwerking en safety zones om uiteindelijk tot een compleet robotprogramma robot te komen. Aanlevering product De klant van AWL-Techniek levert een producttekening tekening waarin het product met alle lassen is opgenomen. Afbeelding 2.1.1 is een deel van een dergelijke tekening. tekening De meeste klanten van an AWL bevinden zich in de automobielindustrie, daarom betreft het meestal een producttekening welke gemaakt is met CATIA. Het 3D CAD programma CATIA wordt in de automobielindustrie voornamelijk veel gebruikt omdat deze uitstekend overweg kan met complexe oppervlaktevormen. oppervlakte. Afbeelding 2.1.1 – Jaguar auto-onderdeel met 4 lassen.. Pagina 9 | Hoofdstuk 2 Vooronderzoek.

(10) Simulatie Het CAD programma Solidworks orks wordt gebruikt door de simulatie-engineers om een producttekeningen geschikt te maken voor de robot simulatie software Robcad (Afbeelding 2.1.2).. Met behulp van Robcad Robc wordt bepaald welke robots gebruikt gaan worden. worden Een en eerste simulatie wordt opgesteld waarbij gekeken wordt op welke manier de materialen gelast kunnen worden, worden de engineers bepalen globaal het pad dat de robot doorloopt.. Afbeelding elding 2.1.2 – Robot simulatie software Robcad Na de eerste simulatie kan een mal worden ontworpen voor het product. Belangrijk elangrijk is dat deze de mal de robot beweging niet hindert. Mocht een deel van de mal toch een obstakel vormen voor het lassen dan zal de beweging - of de mal - moeten worden wor aangepast. Dit is een stuk afstemming tussen de malontwerper en de simulatie-engineer. Wanneer het ontwerp van de mal klaar is wordt de gehele robotbeweging weging gesimuleerd om de cyclustijden te bepalen. Afbeelding 2.1.3 2.1. toont een mal inclusief product.. Afbeelding 2.1.3 – Mal met product.. Pagina 10 | Hoofdstuk 2 Vooronderzoek.

(11) Nadat de robotbeweging beweging is vastgesteld dragen de simulatie-engineers het project over aan de robotprogrammeurs. Hierbij wordt het volgende uitgewisseld. Overgedragen van de simulatie-engin engineers aan de robotprogrammeurs. I. II.. Een lijst met robotposities posities voortkomend uit de simulatie; 2D CAD tekeningen van de individuele lasvormen, geëxporteerd vanuit Solidworks. olidworks.. Het dilemma ilemma met de gesimuleerde robotposities Simulatie-engineers hebben de volledige robotbeweging gesimuleerd en alle robotposities bepaald inclusief de robotposities die nodig zijn voor het maken van een las. In afbeelding 2.1.4 worden deze robotposities weergegeven als rode stippen.. Met dit di figuur probeer ik duidelijk te maken dat een zeer eer kleine las (10mm) al snel een groot aantal robotposities nodig heeft (14 robotposities).. 10mm. Afbeelding 2.1.4 – Lasvorm met 14 robotposities op de las. Ondanks dat de robotposities bepaald zijn in de simulatie, simulatie worden deze niet gebruikt voor de robotbeweging. robotbe Dit is een bewuste keuze van de mensen binnen AWL. De reden hiervoor is dat een robotpositie aanzienlijk complex is en niet makkelijk te bewerken. bewerken Hieruit volgend zou een las die opgebouwd is uit robotposities ook een complex stuk code vormen dat weinig flexiebel is voor aanpassingen.. Om dit te verduidelijken zal ik eerst de term robotpositie verder toelichten. toelichten Robotpositie Bij het aansturen van een robott gebeurd dit altijd door robotposities op te geven. Een robotpositie robot bevat de translatie coördinaten X, Y en Z. Ook ok de overige 3 vrijheidsgraden worden vastgelegd (de de rotaties). rotaties Omdat een robot posities op meerdere manieren kan bereiken (singularity) worden ook de 6 assen gespecificeerd. gespecificee Uiteindelijk ziet een robotpositie positie er als volgt uit: RobotPositie tie = [[600, 500, 225.3],[1,0,0,0],[1,1,0,0],[11,12.3,9E9,9E9,9E9,9E9]]; Wanneer de las van afbeelding 2.1.4 was beschreven aan de hand van 14 robotposities dan zouden er direct problemen ontstaan wanneer de las een aantal millimeter omhoog moet worden verplaatst. verplaatst. Het aanpassen aanpas van een robotpositie gebeurt doorgaans door deze te teachen (leren). Mocht de robotpositie obotpositie niet geheel kloppen dan wordt de robot met de hand naar de juiste plaats gebracht (joggen) en wordt dit ingesteld als zijnde de nieuwe positie. Alle lle robotposities van een las op deze manier verleggen is onbegonnen werk. Het kost veel tijd om het geheel na te teachen en de engineer heeft geen inzicht in het figuur waardoor de vorm niet kan worden behouden. Daarbij geeft een e lijst met robotposities es geen duidelijk inzicht in de beweging die de robot gaat maken.. Pagina 11 | Hoofdstuk 2 Vooronderzoek.

(12) AWL lost dit probleem op door ervoor te kiezen om de robotposities voor de lasbeweging niet bij de simulatie te bepalen, maarr dit over te laten aan de robotprogrammeurs. robotprogrammeurs Uit de simulatie gegevens gevens wordt gehaald waar de lasbeweging moet plaatsvinden. Hoe deze lasbeweging eruit ziet is aan de robotprogrammeurs. Deze D hebben hier een handige methode voor waardoor ze met slechts één robotpositie en een 2D tekening de volledige beweging kunnen programmeren rammeren.. Door het op die methode te realiseren blijft alles eenvoudig en overzichtelijk. Hieronder beschrijf ik hoe de robotprogrammeurs dit aanpakken. Robotprogrammeurs De 2D tekening geleverd door de simulatie-engineer simulatie bevat de geometrische gegevens van een las. Naast die 2D tekening wordt ook één robotpositie meegegeven per las. Deze D robotpositie is het zwaartepunt van de desbetreffende las en is bepalend voor waar de las komt te liggen. in n afbeelding 2.1.5 staat een 2D tekening met daarin het zwaartepunt nt aangegeven.. Afbeelding 2.1.5 – Lasvorm met het zwaartepunt in het midden. Het is nu aan de robotprogrammeurs om met deze tekening de juiste beweging te programmeren. Hiervoor maken de programmeurs gebruik van de LasAnyShape functie die ervoor zorgt dat d de robot zelf de robotposities berekend. Het eerste wat de programmeurs doen is laspunten punten intekenen op de 2D tekening. tekening Door de X en Y coördinaten van deze punten vervolgens mee te geven aan de LasAnyShape functie kan deze de lasposities omrekenen naar robotposities. obotposities. Belangrijk om hierbij op te merken is dat de X en Y coördinaten zijn bepaald ten opzichte van het zwaartepunt van de las. De LasAnyShape functie moet dus wel de robotpositie weten van het zwaartepunt unt van de las, om vervolgens lasposities te kunnen unnen omzetten naar robotposities. robotposities Afbeelding 2.1.6 geeft dit schematisch weer.. Robotpositie zwaartepunt las Robotpositie(zwaartepunt (zwaartepunt zwaartepunt las) las) las LasAnyShape LasAnyShape. Robotposities Robotposities. Lasposities XX en coordinaten) Lasposities (X (X enYYcoordinaten coordinaten coordinaten). Afbeelding 2.1.6 – Schematische weergave LasAnyShape. X en Y coördinaten zijn inzichtelijk, begrijpbaar begrijpba en eenvoudig aan te passen. Het dilemma met de robotposities is hiermee opgelost. Omdat de las nu beschreven is ten opzichte van het zwaartepunt van de las kan de gehele las worden verplaatst door de robotpositie die het zwaartepunt van de las voorstelt te verleggen. De robot zal de robotpositie dan zelf zo berekenen dat de gehele las verplaatst is. Een lasbeweging is nu niets niet meer dan een aanroep van een functie waarbij X en Y coördinaten worden doorgegeven die bepalen bepalen hoe de las er 2D uit ziet en een robotpositie wordt doorgegeven die bepaalt waar waa de las komt te liggen. De rest van dit hoofdstuk zal ik besteden aan het behandelen van de LasAnyShape AnyShape functie zoals deze in zijn huidige vorm eruitziet en hoe deze X en Y coördinaten omzet in robotposities.. Pagina 12 | Hoofdstuk 2 Vooronderzoek.

(13) LasAnyShape Bij het aanroepen van de functie LasAnyShape L worden een aantal parameters meegegeven, gegeven, de belangrijkste staan hieronder opgesomd. Belangrijkste parameters LasAnyShape functie ToPoint AnyShape LasWeldData. De robotpositie positie waar het zwaartepunt van de las ligt; Lasposities, wordt verderop toegelicht; Bevat informatie over de lassnelheid, het lasvermogen vermogen en eventueel een afwijking op de brandpuntafstand. afstand.. De AnyShape parameter bepaalt epaalt hoe de las eruit ziet. Een object van dit type is als volgt opgebouwd: Opbouw AnyShape PosWait PosLeadIn PosStart PosP1..PosP25 PosLeadOut LeadIn LeadOut LockHeadAngle. Wacht positie Leadin positie Start positie Lasposities Leadout positie Leadin integer Leadout integer LockHeadAngle. Er worden 25 lasposities beschreven (P1 t/m t/ P25). Omdat elke vorm anders is – en dus niet altijd alle 25 laspunten worden gebruikt - wordt bij elke laspositie meegegeven of deze wel of niet gebruikt moet worden (TRUE/FALSE). De overige elementen waaruit het AnyShape type bestaat zijn voor dit deel van het document niet interessant en behandel ik niet. De LasWeldData parameter bevat een aantal gegevens ge vens specifiek voor het laserlassen. Een object van dit type bevat elementen welke de lassnelheid, snelheid, het lasvermogen vermogen en de afwijking op het brandpuntafstand specificeert. Dat een object van dit type als parameter wordt meegegeven mee aan de LasAnyShape functie nctie betekent dat voor de gehele las deze gegevens worden gebruikt. Het is dus niet mogelijk om bijvoorbeeld het lasvermogen aan te passen voor een bepaald deel van een las. Inhakend op het feit dat de LasWeldData een beperking met zich mee brengt wil ik hieraan toevoegen dat ook op de zone een beperking zit.. De zone die gebruikt wordt bij het lassen staat vast in de LasAnyShape functie en kan niet worden aangepast ast voor een bepaalde las, of een bepaald deel van een las. Zone Het datatype zone is gebruikelijk bij robots om aan te geven hoe nauwkeurig een robot zijn positie moet benaderen voordat deze verder gaat naar de volgende positie. Een zone kan zo gespecificeerd ficeerd worden dat een robot de positie exact bereikt voordat deze verder gaat. Vaak zal dit inhouden dat de robot zijn snelheid niet constant kan houden en misschien zelfs kort tot stilstand komt om een bocht te maken. Door de zone ruimer te kiezen wordt het toegestaan om de bocht af te snijden. Afbeelding 2.1.7 laat een zone van 50mm zien en e hoe de robot deze afsnijdt om naar p20 te bewegen nog voordat p10 geheel bereikt is.. Pagina 13 | Hoofdstuk 2 Vooronderzoek. Afbeelding 2.1.7 Een zone van 50mm.

(14) Werking LasAnyShape functie Wanneer bij het aanroepen van de LasAnyShape functie een lasvlak is opgegeven dan wordt als eerst het zwaartepunt van de las getransformeerd naar dit vlak. Vervolgens worden de lasposities (X en Y coördinaten) omgezet naar robotposities. Voor elke laspositie wordt dit als volgt gedaan: 1) De robotpositie welke het zwaartepunt van de las voorstelt wordt gekopieerd. 2) De gekopieerde robotpositie wordt verplaatst over X en Y. Nadat de robotposities zijn berekend kan het lassen worden uitgevoerd. De robot zal eerst naar zijn PosWait positie bewegen en hier het verzoek plaatsen om de laser in zijn bezit te krijgen (om een laserbron optimaal te benutten wordt deze vaak gedeeld door twee robots). Nadat hij de laser in zijn bezit heeft begint de robot aan zijn Leadin beweging waarbij deze op het juiste moment de laser triggert. Met lineaire bewegingen worden alle robotposities afgegaan. Na het lassen van het figuur wordt de laser uitgeschakeld. Als ervoor gekozen wordt om de laser door te geven aan een andere robot dan wordt deze vrijgegeven, anders behoudt de robot de laser zodat deze direct door kan naar de volgende las. Op deze manier wordt in de huidige situatie het laserlassen gerealiseerd. De beschrijving van de LasAnyShape functie is vereenvoudigd. De functie biedt meer opties en mogelijkheden. Termen als ‘LockHeadAngle’, ‘rotatie’, ‘donotpasslaser’, ‘RefNormal’ en ‘welding done’ heb ik hier niet behandeld omdat deze weinig invloed hebben op de uitvoering van het project.. Pagina 14 | Hoofdstuk 2 Vooronderzoek.

(15) 2.3. ROBOT AANSTURING. AWL-Techniek maakt op dit moment met de LasAnyShape functie uitsluitend gebruik van de MoveL methode tijdens het lassen. Dit houdt in dat het maken van een circulaire beweging wordt gerealiseerd door een lineair bewegen van punt naar punt. RAPID biedt de mogelijkheid om een robot aan te sturen met een MoveC functie waarbij de robot een circulaire beweging uitvoert. Wellicht biedt deze manier van aansturen in diverse situaties een voordeel. Dat wil ik hier verder onderzoeken zodat de beste keuze gemaakt kan worden, welke direct invloed heeft op het verdere verloop van het project. Om te beginnen zal ik de nadelen van beide type bewegingen opsommen. MoveL -. Veel robotposities voor een kleine beweging vergt rekenkracht van de CPU; Veel robotposities betekend een grotere foutkans. Een fout punt kan de gehele beweging verstoren; Een groot aantal robotposities maakt het programma onoverzichtelijk; Een perfect ronde beweging is theoretisch niet mogelijk; Meer robotposities maakt het programma minder flexibel voor aanpassingen. Iemand moet bepalen uit hoeveel robotposities een cirkelbeweging moet bestaan zodat de beweging nauwkeurig genoeg is, maar niet te langzaam wordt.. MoveC -. -. Alleen een circulaire beweging is niet voldoende, deze dient gecombineerd te worden met lineaire bewegingen; De instructie voor een circulaire beweging is complexer dan die van een lineaire beweging, Als een verkeerde robotpositie wordt opgegeven kan de cirkel niet worden bepaald en lijdt dit tot een runtime storing; Er is weinig controle op de nauwkeurigheid van de beweging. Het toevoegen van punten om de nauwkeurigheid te verhogen is niet mogelijk.. Ik simuleer beide manieren van aansturen voor hetzelfde laspatroon om het verschil tussen de bewegingen te onderzoeken. Simulatie Voor het uitvoeren van de test maak ik gebruik van de robot simulatie software Robotstudio, geleverd door ABB. Ik laat de TCP een cirkel beschrijven. De cirkel heeft een diameter van 100mm. TCP Met het ToolCenterPoint wordt een oriëntatiepunt bedoeld dat zich exact in het midden van de pols van een robot bevindt. Wanneer gereedschap wordt bevestigd aan de pols van de robot, (de robot pols wordt als het waren verlengd) dan zal ook het ToolCenterPoint worden aangepast. Bij het laserlassen stelt AWL de TCP in op de plaats van het brandpunt. Waarbij de Z as positief is naar het materiaal toe, en de rechterhand regel wordt toegepast.. Pagina 15 | Hoofdstuk 2 Vooronderzoek.

(16) 4 posities MoveC tegenover 8 posities MoveL Afbeelding 2.3.1 is het resultaat van de twee MOVE bewegingen. Rood is de beweging van het TCP weergegeven volgens de MoveL functie. Wit is weergegeven de TCP beweging na hett uitvoeren van een MoveC functie. De cirkel is niet volledig rond, dit komt doordat er niet helemaal recht op het lasvlak wordt gekeken (beperking vanuit de simulatie software). software. Afbeelding 2.3.1 – MoveC in het wit, tegenover 8 lineaire bewegingen in het rood. Voor het uitvoeren van de MoveL beweging waren 8 declaraties en 8 instructies nodig. Voor het uitvoeren van de MoveC eC beweging waren 4 declaraties en 2 instructies nodig. Uit de afbeelding kan worden gehaald dat de MoveC functie een zeer nette weg aflegt, aflegt, ondanks dat er minder declaraties en instructies nodig waren dan bij de MoveL functie. De snelheden worden ook vergeleken. Daar waar de lijn groen is in afbeelding 2.3.2 heeft de TCP een snelheid van 50mm/s behaald. Met beide bewegingen heeft de robot moeite een constante snelheid te behouden. Er E zit weinig verschil tussen de twee.. Afbeelding 2.3.2 – Snelheid vergelijking moveC en 8 lineaire bewegingen. Bij deze test heeft de MoveC functie het voordeel. Door minder instructies blijft het programma progra overzichtelijk en er wordt een betere cirkel gemaakt.. Pagina 16 | Hoofdstuk 2 Vooronderzoek.

(17) 4 posities MoveC tegenover 20 posities MoveL Om met de MoveL beweging dezelfde nauwkeurigheid te benaderen als met de MoveC beweging worden er ditmaal 20 posities gebruikt voor het maken van de MoveL M beweging. Voor het uitvoeren van deze de MoveL beweging zijn 20 declaraties en 20 instructies nodig. Voor het uitvoeren van de MoveC beweging waren, net als bij de vorige simulatie, 4 declaraties, en 2 instructies nodig. Zie afbeelding 2.3.3.. Afbeelding 2.3.3 – MoveC in het wit, tegenover 20 lineaire bewegingen in het rood. Het gebruik van meer posities lijkt het probleem van de onnauwkeurigheid van de MoveL beweging te verhelpen. Om een goed oordeel te maken is het van belang om te kijken naar de gevolgen gen dat dit heeft op de snelheid,, deze staat weergegeven in afbeelding 2.3.4.. Afbeelding 2.3.4 - Snelheid vergelijking moveC en 20 lineaire bewegingen. Direct valt op dat het toevoegen van de robotposities consequentie heeft eeft voor de snelheid. snelheid De MoveC beweging heeft duidelijk minder moeite met het behouden van een constante snelheid. De verklaring voor dit effect zit in de instellingen van de zone. zone Door de zone aan te passen verkrijgen we ook met de MoveL functie een nette beweging welke vergelijkbaar vergelijkbaar is met de MoveC functie. Wel is duidelijk de nauwkeurigheid gedaald, dit zie je goed aan het begin en eind van de beweging in afbeelding 2.3.5.. Afbeelding 2.3.5 – 20 lineaire bewegingen met een aangepaste zone.. Pagina 17 | Hoofdstuk 2 Vooronderzoek.

(18) Hier waren 20 declaraties en 20 instructies nodig. Met dit aantal posities wordt de MoveL iets nauwkeuriger dan een MoveC beweging maar nog steeds minder glad. Ook wordt er een minder hoge gemiddelde snelheid behaald. De gemiddelde snelheid kan worden verbeterd door de zone aan te passen, dit gaat echter ten kosten van de nauwkeurigheid. Tenzij zeer hoge eisen worden gesteld aan de nauwkeurigheid is dit een test in het voordeel van de MoveC functie. De MoveC functie behaald een goede snelheid zonder dat de zone aangepast hoeft te worden. Conclusie Geen van beide instructies laat de robot beter presteren als het gaat om snel en nauwkeurig positioneren. Om de verhouding tussen snelheid en nauwkeurigheid te verbeteren zal voornamelijk gekeken moeten worden naar mechanische eigenschappen als stijfheden en massatraagheden. Waar de twee instructies zich wel in onderscheiden is de mogelijkheden om de ideale verhouding op te zoeken, waarbij de maximale snelheid wordt behaald met de gewenste nauwkeurigheid. Volledige controle is mogelijk met een MoveL functie In combinatie met de zone instelling. Door meer punten toe te voegen kan een beweging nauwkeuriger gemaakt worden. Minder punten - of een grotere zone verhogen de snelheid. Voor elke beweging moet goed nagedacht worden over het aantal punten en de zone om tot een goed resultaat te komen. Direct nadeel is dat veel gegevens nodig zijn voor een enkele beweging. Een grote hoeveelheid punten en zones maakt het programma zeer onoverzichtelijk. Het onderzoek heeft aangetoond dat een MoveC functie een zeer nette circulaire beweging uitvoert, waarbij de snelheid goed behouden wordt. De MoveC beweging biedt minder mogelijkheden om de optimale verhouding tussen snelheid en nauwkeurigheid te bepalen. Groot voordeel is dat een circulaire beweging met veel minder declaraties kan worden uitgevoerd, dit vereenvoudigt het programmeerwerk. Ook hoeft er geen keuze gemaakt te worden in hoeveel robotposities er worden gebruikt voor elke specifieke circulaire beweging. Een praktijktest zal moeten worden uitgevoerd om een definitief oordeel te kunnen geven over de kwaliteit van de las. Deze simulatie heeft mij in zoverre overtuigd dat ik de MoveC functie zal meenemen in mijn oplossing daar waar dat mogelijk is. Bij een goede implementatie kan deze het programmeergemak aanzienlijk verbeteren.. Pagina 18 | Hoofdstuk 2 Vooronderzoek.

(19) 2.4. AANGELEVERDE LASVORM. Ik dit vooronderzoek bekijk ik hoe een lasvorm welke digitaal wordt aangeleverd als invoer kan dienen voor mijn applicatie. De opdrachtgever wil ook graag de mogelijkheid hebben om een lasvorm met pen op papier te zetten etten en dat dit door de applicatie kan worden verwerkt. Ik richt me echter bij dit vooronderzoek alleen op de digitale tekeningen zoals de klant ze doorgaans aanlevert. Het inlezen van een afbeelding die op papier is gezet wordt verderop in het verslag behandeld handeld. Solidworks als tussenstation machines komt vanuit de automobielindustrie. Binnen de automobielindustrie automobiel De grootste afname van AWL-machine wordt veelvuldig gebruikgemaakt van het 3D CAD pakket “CATIA”. De klanten van AWL leveren tekeningen dan ook meestall aan in het formaat dat direct gekoppeld zit aan CATIA. Deze CAD tekeningen bevatten het product met daarbij ingetekend de lassen zoals de klant ze graag heeft. In afbeelding 2.4.1 is een voorbeeld te zien van een door de klant aangeleverde tekening.. Afbeelding fbeelding 2.4.1 – Tekening aangeleverd door een klant. De tekeningen aangeleverd door de klant zullen door de simulatie-engineers engineers in hun robot simulatie omgeving moeten worden geplaatst. Er wordt gebruik gemaakt van Solidworks om de tekeningen die de klant aanlevert geschikt te maken voor Robcad. Dit houdt in dat een lasvorm altijd beschikbaar is als Solidworks tekening. Omdat Solidworks veel mogelijkheden biedt voor het importeren en exporteren van bestanden kan deze goed dienen als conversie applicatie van an diverse formaten naar een specifiek formaat dat geschikt is voor gebruik in mijn applicatie.. Welk formaat dit moet zijn onderzoek ik hier verder. Hiervoor ga ik eerst kijken hoe de las eruit ziet binnen SolidWorks, en wat de simulatie-engineers simulatie ermee doen. De las in SolidWorks Na het importeren van een product in SolidWorks worden de lasvormen weergegeven als een solid, zoals afbeelding 3.1.1 doet weergeven.. Afbeelding 3.1.1 – Lasvorm in SolidWorks. Pagina 19 | Hoofdstuk 2 Vooronderzoek.

(20) Simulatie-engineers voeren een aantal handelingen uit om de las geschikt te maken voor het importeren in hun robot simulatie software. Handelingen in SolidWorks uitgevoerd door de simulatie-engineers -. Bepalen zwaartepunt van de las; las Afsnijden op het product; Een 2D sketch creëren van de “ruggengraat” van de las; l Een 3D sketch creëren waarmee de oriëntatie van de robot wordt bepaald.. Voor dit project is de 2D sketch van de las bruikbaar omdat deze exact de vorm beschrijft die de robot moet lassen. Welk formaat voor export xport vanuit Solidworks Solidworks biedt diverse export mogelijkheden. mogelijkheden In bijlage 2 zijn all deze mogelijkheden te vinden. Alleen de formaten DXF, STEP en IGES behandel ik hier verder omdat de andere formaten bij voorbaat niet meer geschikt zijn. IGES IGES is een formaat dat voornamelijk bekend is geworden dankzij het Amerikaanse ministerie van defensie. Deze eiste iste in 1988 dat alle productietekeningen productietekeningen digitaal werden aangeleverd in dit specifiek formaat. Het formaat bestaat al erg lang (sinds 1980) en is een van de meest gebruikte formaten binnen CAD applicaties. De bestanden zijn opgebouwd uit regels met elk 80 ASCII karakters, dit stamt uit het tijdperk met de ponskaarten. IBM heeft destijds de ponskaart van 80 karakters veel toegepast en mede daarop is dit formaat gebaseerd. Een bestand is echter zeer lastig te lezen en te begrijpen voor mensen vanwege deze ponskaart opbouw. opbouw Het formaat wordt door NITS beheerd, er is echter sinds 1996 geen nieuwe versie meer mee van de standaard gepubliceerd door de opkomst van het STEP formaat. Desondanks kom je het formaat ormaat nog zeer veel tegen. Afbeelding 2.4.2 laat een stuk IGES bestand zien.. Afbeelding 2.4.2 –2 lijnen, 2 bogen en 2 punten in IGES formaat. Pagina 20 | Hoofdstuk 2 Vooronderzoek.

(21) STEP Het STEP formaat wordt beheerd door de ISO. ISO 10303 beschrijft dit formaat, Dit formaat is opgesteld om niet alleen CAD data, maar totale product gegevens te kunnen beschrijven. Een STEP-bestand STEP bevat een instructie per regel en is goed leesbaar. Het formaat wordt steeds populairder, Afbeelding 2.4.3 laat een STEP bestand zien.. Afbeelding 2.4.3 – STEP AP214 bestand Dankzij het gebruik van woorden als “Line”, “Bspline”, “Trimmed_Curve”, “Vector” en “Catesian_point” is dit bestand goed te begrijpen. DXF DXF (Afbeelding 2.4.4) is het formaat dat ontwikkeld is door de maker van het CAD programma AutoCad. Het formaat is specifiek ontwikkeld om AutoCad bestanden (.dwg) uit te wisselen met andere programma’s. DXF is leesbaar, echter niet zo gemakkelijk als een STEP bestand. best Groot verschil is dat in DXF bestanden gewerkt wordt met lagen (layers).. Afbeelding 2.4.4 – DxF bestand. Pagina 21 | Hoofdstuk 2 Vooronderzoek.

(22) DXF lijkt zeer geschikt voor mijn toepassing, vooral omdat er veel tools zijn te vinden op internet die gebruikt worden voor CnC toepassingen.. Echter kan Solidworks geen sketch of solid exporteren naar DXF. Alleen een drawing kan naar DXF geëxporteerd eëxporteerd worden. worden. Dit houdt in dat een drawing van een las gemaakt moet worden, alvorens deze geëxporteerd kan worden. Een drawing kan alleen gemaakt worden van een solid en niet van een sketch. Het exporteren van een lijn naar DXF is dus niet direct mogelijk. gelijk. Zie afbeelding 3.1.2, waarbij een sketch ketch (een lijn) en een solid (rechthoekig blok) worden omgezet naar een tekening. De lijn is verdwenen.. Afbeelding 3.1.2 – Links een part, rechts een tekening van dit part. De lijn is verdwenen. Conclusie DXF heeft het voordeel dat het zeer veel toegepast wordt en er erg veel hulpmiddelen te vinden zijn om een DXF bestand in te lezen. Voor mijn doel is DXF echter niet geschikt omdat een sketch niet hier naartoe geëxporteerd kan worden vanuit SolidWorks. Zowel STEP als IGES zouden wel geschikt zijn om de geometrische gegevens van een las as uit te wisselen. wisselen Het STEP bestand is makkelijk te lezen en wordt actief beheerd door de ISO. Het formaat wordt steeds meer geaccepteerd en zal geleidelijk het IGES formaat obsoleet obsole maken. Daarom kies ik hier voor het STEP (AP214) formaat.. Pagina 22 | Hoofdstuk 2 Vooronderzoek.

(23) Hoofdstuk 3.. FUNCTIE ONTWERP. In dit hoofdstuk staan de belangrijkste functies binnen het project beschreven. Al deze functies komen voort uit de eisen/wensen van de opdrachtgever, of uit het vooronderzoek dat ik heb uitgevoerd. Hieronder staat een lijst met de in dit hoofdstuk behandelde functies. In het volgend hoofdstuk komen deze functies bij elkaar en vormen zo een complete oplossing, in de vorm van een Windows applicatie. Functie ontwerp 3.1. Flexibiliteit robot lascode. In zijn huidige vorm is de LasAnyShape functie niet geschikt om elk gewenst figuur te lassen. Het aanpassen van de functie kan noodzakelijk zijn.. 3.2. Circulaire beweging. Het maken van een circulaire beweging brengt een aantal overwegingen en keuzes met zich mee die betrekking hebben op het programmeer gemak voor een engineer.. 3.3. Laserlas formaat. Hoe kan een las worden beschreven zodat uitwisselen, bewerken en opslaan mogelijk wordt.. 3.4. Curve omzetten naar laspunten. Hoe kan een curve, welke wordt geëxporteerd door SolidWorks, worden omgezet naar punten. (interpoleren). 3.5. Het importeren van een lijn afbeelding. Een wens van de opdrachtgever is dat een lijn, verkregen vanuit een afbeelding/foto, kan worden omgezet naar een lasbeweging. Hoe kan dit gerealiseerd worden?. Pagina 23 | Hoofdstuk 3 Functie ontwerp.

(24) 3.1. FLEXIBILITEIT ROBOT LASCODE. Het lassen van elk gewenst figuur eist een grote flexibiliteit van de LasAnyShape functie. Op dit moment heeft de functie echter een aantal beperkingen, in deze paragraaf zoek ik naar een mogelijkheid om de LasAnyShape functie te optimaliseren. Waarom is meer flexibiliteit gewenst Een van de problemen met de huidige functie is dat deze 25 laspunten nodig heeft om te functioneren. Het doel van dit project is om elk gewenst figuur te kunnen omzetten naar een robot beweging en dit is niet mogelijk als het aantal laspunten vast staat. Wanneer meer dan 25 punten nodig zijn voor een specifieke las dan dient het datatype WeldShape aangepast te worden, alsmede delen van de LasAnyShape functie. Na het aanpassen van de functie kan deze niet meer overweg met het oude WeldShape datatype van 25 punten, en dienen alle lassen die hier gebruik van maken te worden aangepast naar het nieuwe Weldshape datatype. Er zou kunnen worden overwogen om de WeldShape datatype ruim voldoende punten te laten ondersteunen (bijvoorbeeld 50) zodat het praktisch nooit voorkomt dat een las uit meer punten bestaat dan de LasAnyShape functie aan kan. Dit zou echter betekenen dat bij een lasvorm van 2 punten in totaal 48 punten worden opgegeven welke niet worden gebruikt, om toch aan het totaal van 50 punten te komen. Hierdoor wordt het programma erg onoverzichtelijk en onnodig groot. Ook worden alle punten meegenomen in de berekeningen binnen de LasAnyShape functie, terwijl uiteindelijk slechts twee punten van belang zijn en de overige punten niet worden gebruikt. Omdat de WeldShape datatype altijd aangevuld moet worden tot een specifiek aantal punten moet per punt ook worden aangegeven of deze gebruikt wordt. Dit houdt in dat het datatype WeldShape niet zomaar 25 posities bevat, maar een specifiek datatype welke naast de positie ook een boolean bevat welke specificeert of het punt wordt gebruikt. Deze boolean heeft verder niets te maken met de lasvorm en heeft geen functie naast het oplossen van een software probleem, daarom is deze niet wenselijk. Tenslotte kan het laservermogen en de brandpuntafstand van de laser niet worden aangepast tijdens het lassen. Ook de nauwkeurigheid en snelheid van de robot zijn constant gedurende de las. Door dit wel mogelijk te maken is er meer controle op de nauwkeurigheid en snelheid van de robot en de kwaliteit van de las. Alternatieve laserlas methodes zoals bijvoorbeeld een systeem van HighYag bieden deze mogelijkheid al wel. Hoe kan de functie flexibeler gemaakt worden Door gebruik te maken van een Array is het mogelijk om de functie flexibeler te maken. Array Een array is een datastructuur die bestaat uit een lijst van elementen. Ieder element in een array heeft een unieke index waarmee dat element aangeduid kan worden. Een element zou bijvoorbeeld een integer kunnen zijn (getal). In dat geval is de array een reeks getallen. Om elk gewenst aantal posities te kunnen gebruiken plaats ik de posities niet meer in het WeldShape formaat, maar in een array. De array is zo groot als het aantal posities dat erin gezet worden, hierdoor vervalt ook gelijk het nut van de boolean welke aangeeft of de positie gebruikt wordt. De gehele array kan worden meegegeven met de AnyShape functie. Op dezelfde manier kunnen ook array’s van zone, lassnelheid, lasvermogen en een afwijking op het brandpunt afstand worden mee gegeven. Dit maakt het mogelijk om deze parameters niet alleen per las in te stellen, maar ook per individueel laspunt. Uiteraard dienen deze arrays dan hetzelfde aantal elementen te bevatten als de array met de lasposities.. Pagina 24 | Hoofdstuk 3 Functie ontwerp.

(25) Voorkomen van grote hoeveelheid loze data Bovenstaande aanpak stelt de engineer in staat om de parameters per positie aan te passen. Lang niet altijd wil de engineer afwijkende parameters voor individuele posities, in de meeste gevallen zal de zone voor elk punt gelijk zijn. Het is niet handig als een engineer in deze situatie toch een array moet creëren welke net zoveel elementen bevat als de array met positie, om voor elke positie dezelfde zone te specificeren. Daarom stel ik dat, wanneer een array niet een gelijk aantal elementen bevat als de array met de posities, het eerste element uit de array wordt toegepast op alle punten. Nu kan een array met slechts 1 element worden meegegeven met de AnyShapeFunctie, en dan zal deze voor elk punt dat element toepassen. Ook de Start, Wait, Leadin en Leadout posities kunnen in de array met posities worden geplaatst. Het WeldShape formaat bevat dan uitsluitend nog de boolean LockHeadAngle en twee variabelen die niet gebruikt worden. Door de LockHeadAngle op te nemen als parameter in de AnyShape functie wordt het WeldShape formaat obsoleet. De array met posities ziet er nu als volgt uit: PosWait, PosLeadIn, PosStart, Positie[…], PosLeadOut Resultaat Na het aanpassen van de AnyShapeFunctie is het mogelijk om elk gewenst aantal posities mee te geven in de vorm van een array. Ook kan de lassnelheid, lasvermogen, zone en laser focus worden gespecificeerd per positie. Een aanroep naar de AnyShapeFunctie kan er nu als volgt uitzien: Voorbeeld geoptimaliseerd LasAnyShape functie LasAnyShape1,. weldposition_1 False [130] [5] [4000] [0] points_MyWeld_1.  Robotpositie waar de las moet komen te liggen  LockHeadAngle  Array met de lassnelheid, in dit geval 1 element, dus constant voor de gehele las  Array met de zone  Array met het lasvermogen  Array met de laser focus offset  Array met posities (zie hieronder). points_MyWeld_1{9} := [ [-4.34,1.44,0],[-3.49,0.93,0],[-2.63,0.42,0], [-0.13,-1.08,0], [0.91,-2.84,0],[2.27,-3.28,0],[3.97,-0.98,0],[3.97,0.62,0], [3.97,1.62,0]];. In bovenstaand geval is bijvoorbeeld de lassnelheid constant 130 voor elk punt omdat die array uit slechts 1 element bestaat. Als hier evenveel elementen aan worden toegevoegd als het aantal posities (in dit geval 9) dan kan de snelheid worden ingesteld per punt. Voorheen was dit niet mogelijk en zag de opbouw er als volgt uit. Voorbeeld orgineele LasAnyShape functie LasAnyShape1,. Shapedata_1. weldposition_1 [130, 4000, 0, 0]; shapedata_1.  Robotpositie waar de las moet komen te liggen  Lassnelheid  Lasvermogen  Focus ofset  niet gebruikte parameter  Leadin, leadout, 25 posities met hun boolean, lockheadangle (zie hieronder). :=[[-4.34,1.44,0],[-3.49,0.93,0],[-2.63,0.42,0],[[-2.63,0.42,0],TRUE],[[-0.13,-1.08,0],TRUE], [[0.91,-2.84,0],TRUE],[[2.27,-3.28,0],TRUE],[[3.97,-0.98,0],TRUE],[[3.97,0.62,0],TRUE], [[0,0,0],FALSE],[[0,0,0],FALSE],[[0,0,0],FALSE],[[0,0,0],FALSE],[[0,0,0],FALSE], [[0,0,0],FALSE],[[0,0,0],FALSE],[[0,0,0],FALSE],[[0,0,0],FALSE],[[0,0,0],FALSE], [[0,0,0],FALSE],[[0,0,0],FALSE],[[0,0,0],FALSE],[[0,0,0],FALSE],[[0,0,0],FALSE], [[0,0,0],FALSE],[[0,0,0],FALSE],[[0,0,0],FALSE],[[0,0,0],FALSE],[3.97,1.62,0],1,1,False];. Pagina 25 | Hoofdstuk 3 Functie ontwerp.

(26) De zone kan niet worden ingesteld in de oude situatie. Ondanks dat de nieuwe LasAnyShape functie meer mogelijkheden geeft, is de totale benodigde code in dit geval 61% minder.. 3.2. CURVE BEWEGING. Een robot kan aangestuurd worden met een MoveC instructie om een curve te maken. Uit het vooronderzoek is gebleken dat deze manier van aansturen in bepaalde situaties een voordeel kan hebben tegenover het maken van uitsluitend lineaire bewegingen. Om circulaire bewegingen mogelijk te maken verandert de manier waarop een lasvorm wordt beschreven. In de huidige situatie wordt een lasvorm beschreven door een reeks lasposities. Wanneer ook een circulaire bewegingen moet worden beschreven dan is een reeks lasposities niet meer voldoende. Het is van belang dat het programmeren niet complexer wordt dan zoals dit in de huidige situatie is. Hoe ik een circulaire beweging mogelijk maak zonder dat het programmeren ingewikkelder te maken behandel ik hier. Drie punten boog Bij een MoveC instructie worden twee robotpositie opgegeven. Aan de hand van deze twee robotposities - en de huidige positie van de robot - wordt een boog bepaald. Om met drie posities een boog juist te kunnen bepalen moeten die robotposities aan onderstaande eisen voldoen. Eisen aan een MoveC instructie -. Het eindpunt mag niet te dicht bij het startpunt zitten; Het cirkelpunt mag niet te dicht bij het startpunt zitten; het cirkelpunt mag niet te dicht bij het eindpunt zitten; De oriëntatie van de boog moet kunnen worden bepaald; De cirkel mag niet groter dan 240 graden zijn.. Wanneer de robot een boog niet kan bepalen om een van de bovenstaande redenen dan zal er een runtime storing optreden. Een programmeur het cirkelpunt laten opgeven is niet de ideale oplossing omdat het programma niet zal functioneren wanneer dit punt verkeerd wordt opgegeven. Twee punten en hoek boog Hoewel de robot een boog bepaalt met behulp van een cirkelpunt zijn er ook andere manieren om een boog te bepalen. Een manier is om het beginpunt, eindpunt en hoek van de boog op te geven. Voor een engineer is deze manier van een boog beschrijven eenvoudiger. Mits de hoek binnen een bepaalde range wordt opgegeven kunnen hier geen fouten gemaakt worden. Het verkeerd opgeven van een hoek zal niet snel gebeuren en kan eenvoudig worden herkend en afgevangen waardoor geen runtime storing ontstaat. Bijkomend voordeel is dat wanneer een hoek van 0 graden wordt gespecificeerd, hierbij direct uitgegaan kan worden van een lineaire beweging zonder curve. Alleen het vermelden van een hoek is dus voldoende. Wel zal de robot gedurende runtime de 3e robotpositie moeten bepalen welke nodig is voor de MoveC instructie.. Pagina 26 | Hoofdstuk 3 Functie ontwerp.

(27) Het vinden van het boogmiddelpunt gedurende runtime. Om het middelpunt van een boog te vinden teken ik een cirkel welke door alle drie de punten gaat.. Afbeelding 3.2.1 – Middelpunt boog Zoals in afbeelding 3.2.1 is te zien is de cirkel op te delen in een aantal driehoeken zodat de ligging van punt D als volgt worden bepaald:  .        

(28)  . .  & 3.2.2 2 2. De lengte tussen punt A en D is met behulp van de wet van Pytagoras te beschrijven. ∆     ∆    

(29)  . .  & 3.2.4   . ∆ ଶ  ∆ ଶ

(30)  . .  2. Van onderstaande driehoek is nu de lengte AD bekend. Ook is de hoek ½ α gegeven. α is de hoek die we zo graag opgeven voor het maken van de boog.. Afbeelding 3.2.2 – Driehoek ACD. De lengte AC is nu als volgt bepaald.  .  #

(31)  . . % cos" $ 2. Met AC bekend is ook de formule voor DC op te stellen, wederom gebruikmakend van de stelling van Pytagoras.    ଶ  ଶ

(32)  . . &. De punten zijn gedefinieerd in een cartesisch coördinatenstelsel, de oriëntatie van bovenstaande driehoek kan altijd verschillen. Om deze reden wordt er een vector gedefinieerd welke de richting aangeeft loodrecht op lijn AD. De vector wordt aangegeven als   en heeft een grote van 1. ' (((((() ௫ . ௬  ௬ ௫  ௫ ' (((((()

(33)  . . 8 & 3.2.9 ௬  2 ∙  2 ∙ . Tot dusver is gerekend met een absolute waarde van α. De mogelijkheid is aanwezig dat er een negatieve cirkel wordt gedefinieerd (α < 0). Wanneer dit het geval is zal de richting van vector   worden geïnverteerd. ' (() = ' (() ∙ 1 voor α < 0. Vergelijking 3.2.10. Punt C kan nu worden bepaald. ௫  ௫   ∙ ' (()௫ ௬  ௬   ∙ ' (()௬

(34)  . . . Pagina 27 | Hoofdstuk 3 Functie ontwerp.

(35) Resultaat De berekening wordt omgezet in RAPID code zodat deze geïmplementeerd kan worden in de LasAnyShape functie. Wanneer α de waarde 0 bevat zal er een conventionele MoveL functie worden uitgevoerd. De berekening zal dus ook niet hoeven te worden uitgevoerd. De volledige code is als volgt.. Code 3.2.1 – Toevoeging LasAnyShape. Het meegeven van een curve waarde aan een positie positie kan alleen bij de geoptimaliseerde LasAnyShape functie. Daarbij is het mogelijk om een array met getallen mee te geven aan deze functie. Het resultaat wordt getest aan de hand van een eenvoudige cirkel beweging. De robot zal eerst de instructie krijgen om van punt A naar punt B te bewegen zonder een boog te beschrijven (curving = 0). Vervolgens worden dezelfde punten gebruikt maar zal curving op 180 graden gezet worden.. MoveL. Afbeelding 3.2.3 – Resultaat curve beweging. De lijn aangegeven in het rood is een moveL beweging. In het groen staat de MoveC beweging.. Pagina 28 | Hoofdstuk 3 Functie ontwerp. MoveC.

(36) 3.3. LASERLAS FORMAAT. Op dit moment is er geen formaat bekend binnen AWL om een laserlas te definiëren. Ik stel zelf een formaat op waarin een complete laserlas wordt beschreven, het WELD formaat. Het beschrijven van een las in dit WELD formaat is gedaan om de volgende redenen: Aanleidingen tot het aanmaken een laserlas formaat -. Een las kan als één WELD bestand worden uitgewisseld tussen diverse engineers; Een las kan worden opgeslagen zodat deze later eenvoudig bewerkt kan worden; Een goede las kan worden opgeslagen zodat er Best Practice vormen ontstaat; Het biedt een interface om iets te converteren naar een las; Het biedt een interface om een las te converteren naar een robotprogramma; Diverse lassen kunnen goed vergeleken worden doordat deze op dezelfde manier beschreven worden.. Het Weld formaat bevat de volgende informatie over een lasvorm: Name ID X Y Rotation Scale AdjustedPoint OriginalPoint RAPID. Naam van de las. Nummer van de las. X afwijking van de las t.o.v. het zwaartepunt. Y afwijking van de las t.o.v. het zwaartepunt. Rotatie van de las (in graden). Verschaling van de las (in procent). reeks getransformeerde punten waaruit de las bestaat. reeks orginele punten waaruit de las bestaat. Een aantal RAPID specifieke gegevens.. AdjustedPoint zijn dezelfde punten die te vinden zijn in OriginalPoint, maar dan met de transformaties toegepast (X, Y, Rotation en Scale transformaties). Alleen door de orginele punten te onthouden hebben de transformaties altijd dezelfde betekenis. Hiermee wordt voorkomen dat een transformatie dubbel wordt uitgevoerd. Punten zijn als volgt gedefineerd: X Y Zone Power Speed Curving OutOfFocus. X positie tov zwaartepunt las. Y positie tov zwaartepunt las. Nauwkeurigheid waarmee een punt moet worden benaderd. Lasvermogen waarmee een punt moet worden benaderd. Snelheid waarmee een punt moet worden benaderd. Curve waarmee een punt moet worden benaderd. Aantal mm afwijking op het brandpuntafstand.. Pagina 29 | Hoofdstuk 3 Functie ontwerp.

(37) 3.4. CURVE OMZETTEN NAAR LASPUNTEN. Een STEP bestand dat geëxporteerd is vanuit Solidworks beschrijft een gekromde lijn als een B-Spline. Om deze B-spline om te zetten naar een robot beweging zullen punten moet worden bepaald welke op de lijn liggen. Het aantal punten bepaald de nauwkeurigheid van de robot beweging, dit zal door de engineer worden bepaald wanneer een STEP bestand wordt geïmporteerd. De gegevens van een B-spline in het STEP bestand staat hieronder weergegeven. Bspline zoals deze in een STEP bestand te vinden is. #146 = B_SPLINE_CURVE_WITH_KNOTS ( 'NONE', 3, ( #160, #159, #158, #157, #179, #178, #177, #176, #175, #155, #154, #153, #152, #151, #150, #149, #148, #147, #278, #183, #283, #185, #184, #263, #212, #211, #210, #187, #186 ),.UNSPECIFIED., .F., .F., ( 4, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4 ), ( 0.0000000000000000000, 0.003906250000001296700, 0.007812500000002593400, 0.01562500000000005900, 0.03125000000000005600, 0.06250000000000004200, 0.1250000000000000300, 0.1875000000000000000, 0.2500000000000000000, 0.3125000000000000000, 0.3749999999999998300, 0.4999999999999997800, 0.6249999999999997800, 0.7499999999999997800, 0.8749999999999998900, 1.000000000000000000 ), .UNSPECIFIED. ). Uit deze tekst blijkt dat het een B-spline betreft met knooppunten (knots). Het getal “3” geeft aan dat het hier e een 3 graad B-spline betreft. Deze type B-splines worden de cubishe B-splines genoemd en is het type dat Solidworks gebruikt voor de export van kromme lijnen. De reeks getallen aangegeven met een hekje (#) zijn de stuurpunten, deze getallen verwijzen naar een regel in het STEP bestand waarin het stuurpunt staat gedefinieerd in het cartesisch coördinatenstelsel. Vervolgens zien we een reeks getallen welke staan voor het multipliceren van de knooppunten. De laatste reeks getallen zijn de knooppunten zelf. De reeks knooppunten wordt de knooppunt vector genoemd. Een van de eigenschappen van een knooppunt vector is dat het een reeks opvolgende getallen betreft. Zogezegd, de waarde van een knooppunt is altijd gelijk aan, of groter dan, het vorig knooppunt. De waarde van een knooppunt zelf is niet relevant voor de vorm van een curve, het is de relatieve waarde van een knooppunt ten opzichte van de overige knooppunten die de vorm bepaalt. Omdat de waarde zelf niet relevant is wordt er in de meeste gevallen gekozen voor een knooppunt vector met het bereik tussen 0 en 1, dit is ook het geval bij bovenstaand voorbeeld. Wat verder nog belangrijk is om mee te nemen is het feit dat het hier een non-uniform knooppunt vector betreft. Bij een uniforme knooppunt vector is de afstand tussen twee punten altijd gelijk, dat is hier niet het geval. Door een aantal knooppunten met dezelfde waarde toe te voegen aan de knooppuntvector kan de graad van de Bspline op dat punt worden verlaagt, zodat een discontinuïteit kan optreden. De getallen die staan voor het multipliceren van de knooppunten geven aan of een knooppunt vaker wordt gebruikt dan een maal. Omdat in bovenstaand voorbeeld het eerste en de laatste knooppunt 4 maal worden gebruikt (meer dan de graad van de kromme) ontstaat hier een discontinuïteit. Deze Bspline is als het ware vast gepind op het begin en het eind. De Boor's algoritme Carl R. de Boor stelde een vergelijking op die het verband geeft tussen de analytische gegevens van een basis kromme en zijn geometrische vorm. Een kromme S(x) van orde k wordt als volgt beschreven. .   

(38) ,  . Vergelijking 3.4.1. De kromme S is een functie van x welke loopt van het eerste knooppunt (   ), tot en met het laatste knooppunt (   ). Aan de rechter kant van het “=”-teken staat de wiskundige uitdrukking waarmee de kromme wordt bepaald. Dit zijn de stuurpunten  en de buiging

(39) , . Deze worden gesommeerd waarbij het interval i wordt verhoogd met 1 totdat het voorlaatste stuurpunt is bereikt (p-1). De stuurpunten zijn gegeven, de buiging is te bepalen volgens onderstaande formule.. Pagina 30 | Hoofdstuk 3 Functie ontwerp.

(40)

(41) ,  .    

(42) 

(43)    

(44) ,  

(45) 

(46)    

(47) 

(48)   

(49)  ,

(50) . Vergelijking 3.4.2. De knooppunt vector wordt aangegeven als . Dit algoritme toont aan dat, zoals eerder gesteld, de grootte van de knooppunten niet relevant is. De relatieve afstand tussen knooppunten bepaalt de vorm van de kromme. Er wordt gesteld dat wanneer de laagste order bereikt is ( k = 0 ) bovenstaande formule niet geld, maar de waarde van

(51) ,  gelijk wordt aan 1. Voorwaarde hierbij is wel dat x ook werkelijk een waarde is die binnen het betreffend interval aanwezig is, anders zal “

(52) , ” gelijk worden gesteld aan 0. 1,   ∈   , 

(53)  

(54) ,    0,   . Vergelijking 3.4.3. Om te visualiseren wat deze formule voor het bepalen van de buiging feitelijk doet met de knooppunten heb ik afbeelding 3.4.1 toegevoegd. Het deel links van het “+” teken van vergelijking 3.4.2 bepaalt de relatieve afstand van de positie “x” ten opzichte van het knooppunt 

(55)  en  .   0 . . . . . . 1.   . 

(56)   . Afbeelding 3.4.1. Rechts van het “+” teken wordt de relatieve afstand bepaald van de positie x ten opzichte van het punt 

(57) 

(58)  en 

(59)    0 . . . . . 

(60) 

(61)   

(62) . . 1. 

(63) 

(64)   . Afbeelding 3.4.2 Bij een kubische kromme zal voor het bepalen van de buiging de vergelijking

(65) ,  in totaal 15 keer worden aangeroepen, telkens met een andere waarde voor k en i zoals onderstaand schema weergeeft.. Afbeelding 3.4.3 – Aanroepen van de

(66) ,  formule.. Pagina 31 | Hoofdstuk 3 Functie ontwerp.

(67) 3.5. LASVORM GENEREREN VANUIT VAN LIJN AFBEELDING. De opdrachtgever heeft laten weten dat deze het een waardevolle toevoeging vindt als de applicatie ook een lijn, welke op papier is gezet, kan omzetten in een robot beweging. Om dit te realiseren zal de applicatie op intelligente wijze een lijn moeten herkennen en hieruit de X en Y coördinaten bepalen welke noodzakelijk zijn voorr het beschrijven van een LAS (in het WELD formaat). Door vision technieken toe te passen pas kan dit worden gerealiseerd. Er kan niet gegarandeerd worden dat elke willekeurige afbeelding van een lijn omgezet kan worden in een las zoals de opdrachtgever die in gedachte heeft. Met deze best-effort effort oplossing stel ik een algoritme op welke een lijn op papier zo goed mogelijk interpreteert als een lasvorm, zoals een mens dat zou doen. Stappen om een lijn om te zetten naar punten met X en Y coördinaten 1. 2. 3. 4. 5. 6.. Converteren naar een binaire afbeelding Skelet van de lijn genereren Spurs verwijderen van het skelet Hersamplen van de afbeelding Pad bepalen Laspunten bepalen. Converteren naar een binaire afbeelding Omdat ik alleen geïnteresseerd ben in een vorm ga ik gebruikmaken gebruik van morfologische beeldbewerking. Dit houdt in dat ik uitsluitend met enen en nullen werk. Gegevens als kleur, helderheid en intensiteit spelen geen rol. Omdat mdat deze gegevens wel aanwezig zijn in een afbeelding dient deze omgezet te worden naar een binaire afbeelding. Om dit te doen zet ik de afbeelding eerst om naar een grijswaarde afbeelding. afbeelding Een scanner/camera is meer gevoelig voor rood dan voor andere kleuren, daarom maak ik gebruik van een BT 709 filter welke de intensiteit van de rode kleur minder sterk ster meeneemt dan die van de blauwe auwe en groene. Vergelijking 3.5.1 toont hoe de BT 709 filter een kleurenafbeelding omzet naar grijswaarde. Vergelijking 3.5.1. De volgende stap is het toepassen n van een Threshold filter om een binaire afbeelding te verkrijgen. verkrijgen Ik ga uit van een afbeelding waarbij de lijn afgebeeld staat op een witte achtergrond. De filter wordt zo ingesteld zodat alle pixels met een waarde onder de 230 een logische één worden, alle overige pixels worden een logische nul. Afbeelding 3.5.1 laat de originele afbeelding zien. Deze is met stift op papier gezett en ingescanned. Afbeelding 3.5.2 is dezelfde afbeelding in binaire vorm.. Afbeelding 3.5.1 – Lasvorm zoals deze op papier is gezet.. Pagina 32 | Hoofdstuk 3 Functie ontwerp.

(68) Afbeelding 3.5.2 3. – Lasvorm omgezet naar binaire afbeelding. Skelet van de lijn genereren De dikte van een lijn kan verschillen. Een lijn op papier gezet met een balpen zal veel minder dik zijn dan een lijn geplaatst met een permanentmarker. permanentmarker Om de vorm te bepalen genereer ik het skelet van de lijn door een skeletton filter toe te passen. Nu ben ik er zeker van dat de lijn niet meer dan één n pixel dik is. Afbeelding 3.5.3 is het resultaat van het toepassen van een skeletton sk filter op afbeelding 3.5.2. Afbeelding 3.5.3 – Afbeelding na het toepassen van een skeletton filter.. Pagina 33 | Hoofdstuk 3 Functie ontwerp.

(69) Spurs verwijderen van het skelet Het toepassen van een skeletton filter laat artefacts achter op de afbeelding, ook wel spurs genoemd. Een dergelijke spur vormt een n splitsing op de d lijn welke niet gewenst is, een lasvorm kan geen splitsing bevatten. De spurs kunnen worden verwijdert met een pruning methode. Afbeelding 3.5.4 toont een stuk van de afbeelding waar zich spurs bevinden.. Afbeelding 3.5.4 3. – Spurs na het toepassen van een n skeletton filter. De eerste stap in het verwijderen van deze spurs is het aantal keer toepassen van een thinning filter welke de eindpunten van de lijn verwijdert. Zoals hierboven te zien is bestaan spurs uit slechts een paar pixels, door 6 keer de thinning ing filter toe te passen zijn alle eindpunten verwijdert. De thinning filter bestaat uit de structuur elementen die zijn jn weergegeven in afbeelding 3.5.5. 3.5.5 X. X. X. X. X X. X. X. Afbeelding 3.5.5 – structuurelementen voor het verwijderen van eindpunten Na deze handeling zijn de spurs inderdaad verwijdert, echter heb ik nu ook aan het begin en het eind van de lijn een stuk verwijdert wat niet de bedoeling is. Om de lijn te herstellen, maar dan zonder de spurs, ga ik eerst opzoek naar het begin en eindpunt van de lijn. Hiervoor gebruik ik dezelfde structuur elementen die ik heb toegepast voor het verwijderen van de eindpunten, echter gebruik ik deze nu niet als een thinning thinnin filter maar als een eindpunt detector. Met de eindpunten gevonden dient de lijn die hieraan verbonden zat te worden hersteld. Dit gebeurd door een dilation filter 6 maal toe te passen met een structuurelement zoals deze is weergegeven in Afbeelding 3.5.6. 3.5 Verder geld voor de dilation filter de extra voorwaarde dat deze alleen een pixel mag herstellen als diezelfde pixel ook in de originele afbeelding getekend was. Op deze manier worden alleen pixels hersteld die ook werkelijk deel uitmaken van de lijn.. Afbeelding 3.5.6 – Structuurelement voor het herstellen van het begin en het einde van de lijn.. Pagina 34 | Hoofdstuk 3 Functie ontwerp.

Referenties

GERELATEERDE DOCUMENTEN

Eldersloo Aa En Hunze Drenthe 9453 DvhN West (zaterdag) / DvhN Drenthe (door de week) Eleveld Aa En Hunze Drenthe 9456 DvhN West (zaterdag) / DvhN Drenthe (door de week) Elim

Het element voor hangtoilet NIET gronderen, na het aanbren- gen van de wapening kan deze zonder verdere voorafgaande behandeling betegeld worden.. Let op: bij verwerking van een

Indien de referentielijn voor de bereikbaarheidsindicator berekend moet worden door de Mobiliteitsscan, dan wordt een tekst file eindigend met de naam calculated meegestuurd. In

Het NextSeq 1000 en NextSeq 2000-sequentiëringsysteem is ontworpen voor gebruik binnen een netwerk, ongeacht of de runs geconfigureerd zijn voor de BaseSpace sequentie-hub of

In de meeste gevallen zijn deze tradities echter al uitvoerig in Generaties van Geluksvogels en Pechvogels (2014, 3e druk) besproken.. In de generatiesociologie is het traditie om

Aantekeningen (oraal LD₅₀) Op basis van de beschikbare gegevens wordt niet voldaan aan de indelingcriteria.... Acute toxiciteit

Een termijn voor het optreden van deze eigenschappen is niet vooraf te bepalen en hangt af van het soort natuursteen en van de plaats waar deze geplaatst werd. Deze eigenschappen

Eldersloo Aa En Hunze Drenthe 9453 DvhN West (zaterdag) / DvhN Drenthe (door de week) Eleveld Aa En Hunze Drenthe 9456 DvhN West (zaterdag) / DvhN Drenthe (door de week) Elim