• No results found

Ontwikkeling van een groente en fruit bin picking systeem

N/A
N/A
Protected

Academic year: 2021

Share "Ontwikkeling van een groente en fruit bin picking systeem"

Copied!
61
0
0

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

Hele tekst

(1)

ONTWIKKELING VAN EEN GROENTE EN

FRUIT BIN PICKING SYSTEEM

(2)

ONTWIKKELING VAN EEN GROENTE EN

FRUIT BIN PICKING SYSTEEM

EIND RAPPORTAGE

AFSTUDEREN YOREN BOEREN

OPLEIDING WERKTUIGBOUWKUNDE, DE HAAGSE HOGESCHOOL

STUDENT: YOREN BOEREN

12030996

AFSTUDEERBEGELEIDER: IR. T. BRILLEMAN

TWEEDE BEGELEIDER: IR. J. TROMP

STAGE BEDRIJF: LACQUEY ROBOTICS

BEDRIJFSMENTOR: IR. M. VERMEULEN

DATUM: 3-6-2016

(3)

VOORWOORD

Dit rapport is het stageverslag van de afstudeerstage voor de opleiding Werktuigbouwkunde van de Haagse Hogeschool bij Lacquey Robotics.

Na afronding van de minor Smart Manufacturing & Robotics was het een wens om mijn afstuderen ook te richten op robotica, bij een bedrijf dat zich direct hierin heeft gespecialiseerd. Lacquey Robotics is een bedrijf dat aan deze voorwaarde voldoet. Lacquey ontwikkelt complete robot systemen, die een goed alternatief vormen voor repeterende menselijke arbeid in verschillende toepassingen, met name in de voedselindustrie.

Op vraag van de opdrachtgever zijn er twee figuren in hoofdstuk 5.2 verwijderd voordat de rapportage op de HBO kennisbank is toegevoegd.

Mijn dank gaat uit naar Thijs Brilleman bedanken voor de begeleiding vanuit de Haagse Hogeschool tijdens dit project en Mathijs Vermeulen voor de begeleiding vanuit Lacquey. Verder wil ik mijn overige collega’s van Lacquey bedanken voor de hulp en fijne tijd tijdens het afstuderen.

(4)

INHOUDSOPGAVE

Voorwoord ... 3 Samenvatting ... 5 Verklarende woordenlijst ... 6 1. Inleiding ... 7 2. Project omschrijving ... 8 2.1 Opdracht ... 8 2.2 Eisen en wensen ... 9 2.3 Randvoorwaarden ... 10 2.4 Werkwijze ... 11 2.5 Bedrijfsprofiel ... 12 3 Opstelling onderdelen ... 13 3.1 Möbius grijper ... 14 3.2 Ensenso Camera ... 15 3.3 HMI en PLC ... 15 3.4 ABB Robot ... 16 4 Software onderdelen ... 17 4.1 Halcon Code ... 18 4.2 Robotstudio code ... 19 4.3 Cx-Programmer code ... 20 5 Proces verslag ... 21 5.1 Fase 1 ... 21 5.2 Fase 2 ... 28 5.3 Fase 3 ... 32

6 Testen pakket van eisen en wensen ... 36

7 Conclusies en aanbevelingen ... 38

7.1 Resultaten en conclusies ... 38

7.2 Aanbevelingen ... 38

8 Competentie profiel ... 40

Bronnenlijst... 43

Bijlage I: Planning Plan van aanpak ... 44

Bijlage II: Bullet point lijst ... 46

Bijlage III: HMI schermen ... 48

Bijlage IV: Bedradingsschema’s ... 50

Bijlage V: State machine diagrammen ... 53

Bijlage VI: Appel herkenning ... 56

(5)

SAMENVATTING

Het doel van de afstudeeropdracht is het realiseren van een order verzamel (‘orderpicken’) systeem en bijbehorende software, dat geautomatiseerd door de gebruiker ingevoerde order groente en fruit verplaatst. Om het project in goede banen te leiden is het project opgedeeld in drie fases:

 Fase 1: Ontwikkeling van het basis systeem.

 Fase 2: Uitbreiding naar grotere hoeveelheden

 Fase 3: Uitbreiding naar verschillende soorten

In fase 1 zijn de onderdelen van het systeem geassembleerd en is een begin gemaakt aan de software onderdelen voor deze opstelling. Aan het eind van fase 1 kon met het systeem één appel verplaatst worden. In fase 2 is dit uitgebreid naar een variabele hoeveelheid appels. Hiervoor was het nodig de in fase 1 ontwikkelde pick en pack procedure uit te breiden. Ook zijn in fase 2 een aantal aanpassingen gedaan om de werking van het systeem te verbeteren ten opzichte van fase 1. In fase 3 zijn de pick en pack procedures verder ontwikkeld om ook meerdere soorten producten te verplaatsen. Behalve appels kunnen nu ook peren en aubergines met de proefopstelling worden verplaatst. Deze keuze is gebaseerd op het gewicht en de vorm van de producten. Ook is in fase 3 het systeem versnelt van 13 seconden naar 5 seconden.

Uit de integratietest blijkt dat het vooraf gestelde doel, een werkend bin pick systeem met bijbehorende software, is gerealiseerd. Dit systeem verplaatst automatisch een door de gebruiker ingevoerde order. De proefopstelling kan elke vijf seconden één product verplaatsen. Gemiddeld 86,6% van de producten wordt correct verplaatst. Voor de soorten individueel ligt dit percentage op 71%, 90,6% en 93,3% voor respectievelijk aubergines, peren en appels. Daarna zijn aanbevelingen gedaan om de werking van het systeem verder te verbeteren.

(6)

VERKLARENDE WOORDENLIJST

Woord: Verklaring:

Dataset Een dataset is een map met meerdere foto’s van een bepaald soort,

per foto verschillen het aantal producten en de oriëntatie van de producten.

Ensenso Ensenso is het merk van de 3D camera die samen met een IDS camera

wordt gebruikt om de locatie te bepalen van het op te pakken product.

HMI “Human Machine Interfaces”, HMI’s worden gebruikt voor de

communicatie tussen de gebruiker en een systeem.

IDS IDS is het merk van de kleuren camera die aan de Ensenso bevestigd is.

Deze wordt samen met een Ensenso camera gebruikt om de locatie te bepalen van het op te pakken product.

Möbius ring Een möbius ring is een ring die maar één oppervlakte en een één rand

heeft. Dit is mogelijk door een halve draai in de ring.

Point grid Een point grid wordt geprojecteerd door Ensenso, door deze projectie

van blauwe punten op het product de worden de hoogteverschillen waargenomen.

Tool center point Het tool center point is het punt aan de uit einde van de robot wat naar de ingevoerde coördinaten wordt bewogen.

Tread Een thread is een stuk code in Halcon wat los van het hoofdprogramma

draait. Door externe signalen kan er in een thread een proces gestart worden.

Venturi Venturi is een natuurkundig principe. Doordat in een luchtslang een

vernauwing wordt geplaatst gaat de lucht in deze vernauwing sneller stromen, hierdoor ontstaat een verlaging in de plaatselijke druk. Gebruikte Programma’s

ABB RobotStudio Robotstudio is de software die gebruikt wordt om de ABB Flexpicker te

programmeren.

CX-Programmer CX-Programmer is de software die gebruikt wordt om de Omron PLC te

programmeren, dit programmeren wordt gedaan met zo geheten: “Ladder diagrammen”.

Halcon Halcon is de software waarmee de beelden herkenning vanuit de

camera wordt geprogrammeerd en zorgt voor de interactie tussen camera’s, robot en PLC.

Microsoft Visual Studio Express Voordat de Halcon code gebruikt kan worden in het systeem wordt de code naar Visual studio geëxporteerd. Visual studio zorgt voor de communicatie tussen de Halcon code en de Robotstudio code.

NB-designer NB designer is de software waarmee de interfase van de HMI tot stand

(7)

1. INLEIDING

Dit project gaat in op de steeds toenemende vraag naar systemen die automatisch groente en fruit kunnen herkennen en verplaatsen vanuit kratten(‘bin picken’). Deze vraag neemt steeds verder toe als gevolg van de wens magazijnen en distributie centra te automatiseren.

Het doel van dit project is het realiseren van een bin picking systeem voor groeten en fruit. Dit systeem moet een drietal verschillende soorten groente en fruit kunnen bin picken. Het systeem wordt aangestuurd door een HMI (“Human Machine Interfaces”) en de input en output van producten wordt gedaan in kratten van maat 18.

In dit rapport wordt eerst de opdracht omschreven (H2) met daarbij de eisen en wensen aan het project, de randvoorwaarden, de toegepaste werkwijze en een bedrijfsprofiel over Lacquey Robotics. Na de opdracht omschrijving worden de onderdelen van het systeem toegelicht, zowel voor de technische onderdelen (H3) als voor de software (H4). Daarna is in het procesverslag (H5) beschreven welke werkzaamheden zijn uitgevoerd en welke keuzes zijn gemaakt in de drie fases van het project. Vervolgens is het gerealiseerde systeem getoetst (H6) aan de gestelde eisen en wensen en zijn conclusies getrokken en aanbevelingen gedaan (H7) op het behaalde resultaat. Als laatste onderdeel van dit rapport is beschreven aan welke competenties (H8) is gewerkt tijdens deze afstudeerstage.

(8)

2. PROJECT OMSCHRIJVING

2.1 OPDRACHT

Doordat steeds meer magazijnen en distributiesystemen gemoderniseerd worden is er vraag naar een systeem dat automatisch groente en fruit kan orderpicken.

De doelstelling van de afstudeeropdracht luidt: “het realiseren van een order verzamel (‘orderpicken’) systeem en bijbehorende software, dat geautomatiseerd door de gebruiker ingevoerde order groente en fruit verplaatst.”

Aan het begin van de afstudeerperiode waren de meeste onderdelen al aanwezig bij Lacquey. Deze waren echter nog niet geassembleerd tot één systeem. De robot hing al aan het frame en de robot controller was hier op aangesloten. Voor de inrichting van de opstelling was al een idee vanuit Lacquey, hier is, zoals te zien is in fase 1, een model op gemaakt.

De installatie wordt ingevoerd met kratten, gevuld met één soort groente of fruit. In figuur 1 tot 3 zijn foto’s te zien die gemaakt zijn bij een bezoek aan Smeding. Dit zijn voorbeelden hoe de producten binnen kunnen komen. Smeding is een groente en fruit distributiecentrum.

Deze groentes moeten verdeeld worden conform de bestelling van de klant. De gebruiker van de installatie voert in hoeveel hij van elke groente nodig heeft. Een ABB Flexpicker (IRB 340-800) verplaatst deze hoeveelheid vanuit de kratten met ongeselecteerde groenten (‘invoerkratten’) in de ‘uitvoerkratten’.

Aan het eind van de afstudeerperiode moeten de volgende onderdelen gerealiseerd zijn:

 Een proefopstelling, zo uitgewerkt dat een integratietest kan plaatsvinden van de hele opstelling.

 Een eindrapport met daarin alle keuzes die gemaakt zijn voor de ontwikkeling van de proefopstelling en de technische specificaties.

Figuur 2: Appels in een inlegvel

Figuur 3: Aubergines ingepakt in plastic Figuur 1: Peren zonder inlegvel

(9)

2.2 EISEN EN WENSEN

Bij de eisen en wensen die hieronder zijn genoteerd staan een criterium en toets methode genoteerd. In hoofdstuk 6 wordt via deze toets methodes bewezen dat het opgeleverde order picking systeem aan de gestelde eisen voldoet.

Tabel 1: Pakket van Eisen

1

Aanvoer groente en fruit moet gedaan worden vanuit maat 18 kratten

De standaard hoogte van de kratten voor levering van groente en fruit in te leveren is 18 centimeter.

Ja/nee

Met de afmetingen van de krat wordt rekenening gehouden tijdens de ontwikkeling van de proefopstelling. 2 De proefopstelling kan drie verschillende producten verwerken.

Conform de doelstelling van dit project wordt een order picking systeem gerealiseerd dat 3 verschillende producten verwerkt.verwerken bij de invoer. Ja/nee In de proefopstelling kan dit gecontroleerd worden. 3 De proefopstelling moet te bedienen zijn vanuit een interface.

Deze interface kan door de gebruiker worden gebruikt om de machine te besturen.

Ja/nee

In de proefopstelling kan dit gecontroleerd worden.

Nr. Eis Toelichting Criterium Toets methode

Tabel 2: Pakket van Wensen

1

De machine moet zo snel mogelijk de producten van invoer naar uitvoer verplaatsen

Door de cyclustijd per product te minimaliseren vervangt de machine meer menselijke inpakkers. Hierdoor heeft de machine meer waarde voor een mogelijke koper. Seconden In de proefopstelling kan dit gecontroleerd worden. 2

De uitvoer krat kan automatisch vervangen worden met een lege krat.

In de verkoopklare machine wordt de output

geautomatiseerd. De

automatisering van dit deel van de installatie wordt uitbesteed door lacquey en behoort niet tot deze opdracht.

Ja/nee

In de proefopstelling kan dit gecontroleerd worden.

(10)

2.3 RANDVOORWAARDEN

De randvoorwaarden bepalen de scope van het project. Hieronder zijn alle onderdelen beschreven die deel uitmaken van het project. Ook zijn de onderdelen beschreven die buiten de afstudeeropdracht vielen.

BINNEN DE SCOPE:

 Vaststellen welke drie groente of fruit soorten bij de proefopstelling ingepakt gaan worden.

 Het testen van de grijper en voorstellen van mogelijke verbeteringen.

 Het ontwikkelen van een invoersysteem voor de proefopstelling.

 Het ontwikkelen van een bedieningsinterface voor de besturing van het systeem voor het kiezen van het aantal te verplaatsen producten.

 Het programmeren van de bewegingen van de ABB Flexpicker.

 Het uitvoeren van een integratietest, waarbij alle losse systemen wordt getest.

 Het programmeren van de beeld herkenning vanuit de Ensenso camera.

 Het opzetten van de communicatie tussen Halcon, robotstudio en de PLC.

BUITEN DE SCOPE:

 Het verwerken van meer dan drie verschillende producten met de proefopstelling.

 Het programmeren van communicatie met de Ensenso camera’s.

 Het programmeren van de software die kiest waar de producten geplaatst worden in de uitvoerkrat.

 Het automatiseren van een afvoer voor de uitvoerkratten.

(11)

2.4 WERKWIJZE

Zoals in voorgaande paragrafen beschreven betreft dit afstudeerproject een realisatieopdracht en geen ontwerpopdracht. Hierdoor is voor het volgen van de status van het project geen gebruik gemaakt van het ‘Methodisch Ontwerpen model’, zoals gebruikelijk is tijdens de studie.

Bij de start van mijn afstudeerproject was daarom bedacht de status van het project te monitoren doormiddel van een ‘work breakdown structure’ (WBS) en een duidelijke en strakke planning. Deze planning en WBS zijn opgenomen in Bijlage I. Na een korte tijd bleek de planning niet te kloppen en daarmee niet zinvol om het project te monitoren. Dit kwam doordat vooraf een aantal noodzakelijk uit te voeren werkzaamheden bij sommige onderdelen van het project onbekend waren en daarom niet opgenomen in de planning. Deze onderdelen waren wel degelijk nodig om het eind resultaat te behalen. Enkele voorbeelden hiervan zijn:

 Het opstellen van een socketmessage verbinding tussen Halcon en de PLC.

 Een programmeerstuk in Halcon om de correcte coördinaten uit de foto’s te krijgen.

 Stukken Visual studio code die variabelen uit leesbaar maakt in Halcon en Robotstudio.

Voorts was vanuit het start assessment de feedback gegeven dat de opdracht te uitgebreid was gezien de lengte van de afstudeerperiode. Om deze reden is de planning aangepast en hebben het concurrentie onderzoek en het ontwerpen van concepten voor de aanvoer voor meerdere kratten een lagere prioriteit gekregen.

Om te voorkomen dat aan het eind van de afstudeerperiode het einddoel niet gehaald werd, is in overleg met Mathijs Vermeulen (stage begeleider) en Evert van Galen (Software engineer) het project gefaseerd en zijn per fase de activiteiten benoemd. In Bijlage II is de opgestelde bullet point lijst met activiteiten per fase opgenomen. Het project is derhalve opgedeeld in 3 fases:

 Fase 1: Het basis systeem.

 Fase 2: Uitbreiding naar grotere hoeveelheden

 Fase 3: Uitbreiding naar verschillende soorten Fase 1:

In fase 1 wordt het basis systeem gerealiseerd. Het doel van fase 1 is een werkend basissysteem dat één appel kan verplaatsen van de invoer naar de uitvoerkrat. In deze fase worden alle onderdelen van de opstelling geassembleerd en worden de software onderdelen gemaakt die identiek blijven tussen de fases. Dit zijn onderdelen zoals de communicatie tussen robot en Halcon en de basis structuur van de Halcon code. Ook wordt er begonnen aan de softwareonderdelen om de appel te herkennen. In fase 2 en 3 worden deze onderdelen verder uitgebreid.

Fase 2:

Het doel van fase 2 is de uitbreiding naar een systeem dat een grotere hoeveelheid appels kan verplaatsen. Om dit te realiseren worden de vision onderdelen aangepast en uitgebreid, waar in fase 1 de basis voor is gelegd. Deze vision onderdelen herkennen de appels en berekenen de oppak en wegleglocatie.

Fase 3:

Het doel van fase 3 is een werkende proefopstelling die meerdere soorten groente en fruit kan verplaatsen. Hiervoor zijn twee extra data sets gegenereerd, waarmee een procedure is ontwikkeld om peren en aubergines te herkennen. Ook is in deze fase de besturing voor de kratten gerealiseerd.

(12)

2.5 BEDRIJFSPROFIEL

De start van Lacquey is het vervolg op onderzoek dat aanvankelijk door de TU Delft is uitgevoerd. Het onderzoek ging in op de mogelijkheden van de under actuated grijpers. Volgens Birglen, Laliberté & Gosselin. (2008). zijn dit grijpers die meer vrijheidsgraden hebben dan aandrijvingen. Dit zorgt ervoor dat de grijper zich aan kan passen aan de vorm van het product. In 2009 is hiervoor vanuit de TU een patent aangevraagd. In 2010 in Lacquey opgericht om deze gepatenteerde technologie verder te ontwikkelen. Lacquey heeft de under actuated grijpers inmiddels ontwikkeld tot grijpers die professioneel ingezet worden in de voedsel en inpak industrie en heeft voorts het assortiment van grijpers verder uitgebreid.

Deze grijpers hebben als belangrijkste eigenschap een groot assortiment van producten op te kunnen pakken en verplaatsen zonder deze producten te beschadigen. Naast de grijpers ontwikkeld Lacquey systemen die om de grijper heen draaien zoals de robotsoftware of vision oplossingen. Deze systemen dragen er toe bij dat de grijpers toegepast kunnen worden in de productieomgeving van een klant.

Twee weken voor het begin van de afstudeerperiode is Lacquey verhuisd van het YES!Delft gebouw naar een eigen plek aan de Rotterdamseweg. Lacquey is tot nu een bedrijf dat geautomatiseerde systemen ontwikkelt. De sla ontkernmachine die zij ontwikkeld heeft wordt binnenkort voor het eerst in een productieruimte getest. Dit kan het startsein zijn voor een nieuwe fase voor Lacquey.

(13)

3 OPSTELLING ONDERDELEN

In figuur 4 is het systeem afgebeeld zoals dit geassembleerd is in de eerste weken van de afstudeerperiode. In dit hoofdstuk worden de belangrijke losse onderdelen toegelicht. In dit figuur ontbreken de veiligheidsrekken die geplaatst zijn om menselijk letsel te voorkomen. Deze zijn bevestigd op de voorkant en rechts op het frame. Deze ontbreken in de afbeelding om deze duidelijk en overzichtelijk te houden.

De proefopstelling bestaat uit de volgende onderdelen: 1. Möbius grijper: pakt de te verzamelen producten op. 2. Ensenso camera: maakt een hoogtebeeld van de inputband.

3. HMI (‘Human machine interface’): de interface waarmee de machine bestuurd wordt.

4. PLC (‘Programmable logic controller’): zorgt ervoor dat het systeem werkt volgens de ingegeven instructie. 5. ABB Flexpicker: verplaatst de producten.

6. Robot controller: bestuurt de ABB Flexpicker. 7. Robot frame: basis om de robot op te hangen.

8. Invoerkratten: kratten waar de nieuwe te verzamelen producten in liggen. 9. Uitvoerkrat: krat waar de verplaatste producten in geplaatst worden. 10. Lopende banden: bewegen de kratten naar de juiste posities. 11. Camera ophanging: ondersteunen van de camera.

12. Optische sensoren: signaleren of er een krat voor de sensor staat. 13. Computer: stuurt het systeem aan en verwerkt de camera beelden.

(14)

3.1 MÖBIUS GRIJPER

De grijper in de proefopstelling gebruikt een combinatie van technieken om de producten uit de krat te pakken. Als een menselijke hand iets oppakt, vormt de hand zich om het product heen en oefent vervolgens kracht uit op het product. Deze grijper doet in principe hetzelfde. Op de grijper (zie figuur 5) zijn motoren (1) met vingers (2) bevestigd, die zich om het product heen vormen. Op de vingers zijn flexibele zuigers (3) gemonteerd, waarmee de kracht wordt nagebootst. De zuigstroom wordt opgewekt doormiddel van venturi ventielen.

De grijper wordt de Möbius grijper genoemd, omdat de vingers ontworpen zijn volgens het principe van een möbius ring. Volgens Weisstein,Eric W. (z.d.). is een Möbius ring (zie figuur 6) een ruimtelijk model, dat maar één oppervlakte en één rand heeft. Er is voor deze vorm gekozen, omdat de vingers van de grijper zoveel mogelijk van de zijkant van het product moeten grijpen. Door een product aan de zijkant op te pakken is er minder kracht op het product nodig om het op te tillen. In een volle krat is er echter geen ruimte om het product vanaf de zijkant op te pakken (links figuur 7). Door de draaipunten uit elkaar te bewegen liggen de rechte vingers meer op de bovenkant van het op product (midden figuur 7). Hierdoor is het mogelijk het product meer van de bovenkant te pakken, maar is er minder kracht nodig dan een zuiger vanaf de bovenkant. Dit komt doordat de grijper deels aan de zijkant van het product grijpt. Door deze configuratie kruisen de vingers elkaar, en

kunnen mogelijke botsingen in de vingers ontstaan. Om dat te voorkomen is er gebruik gemaakt van de Möbius vormen. Deze draaien om dit kruispunt heen in plaats van er doorheen (rechts figuur 7). De grijper heeft drie vingers om de stabiliteit te verhogen tijdens het verplaatsen van het product.

De grijper is het project op twee onderdelen aangepast:

 Een extra afstandshouder toegevoegd

achter de zuiger. Deze was nodig, omdat de vingers van de grijper in gesloten stand te ver van elkaar stonden. Hierdoor konden kleine producten niet opgepakt worden.

 Een smoor ventiel geplaatst voor de sluiting van de grijper. Voordat de grijper gebruikt maakte van een smoor ventiel sloeg de grijper te snel dicht. Hierdoor hadden de zuigers geen tijd om een vacuüm te genereren. Daardoor bogen de vacuüm cupsverkeerde kant op en viel de appel er tussenuit. Door het smoor ventiel sluit de grijper langzamer en krijgen de zuigers de tijd om het oppervlakte van de appel te ‘vinden’ en een vacuüm te zuigen.

Figuur 6: Möbius ring. Overgenomen van Weisstein, Eric W. (z.d.).

Figuur 5: Ontworpen grijper

(15)

3.2 ENSENSO CAMERA

Om de locaties van de producten in de inputkratten te vinden wordt gebruik gemaakt van een Ensenso camera. Volgens IDS Imaging Development Systems GmbH. (z.d.). werkt de Ensenso via het “projected texture stereo vision” principe (zie figuur 8). Dit houdt in dat de Ensenso twee camera’s (1) bevat die onder een hoek ten opzichte van elkaar staan. De led (2) projecteert een zogenaamde ‘point-cloud’ (3) op het product (4). Dit is een veld van blauwe punten die door de camera’s herkend wordt. Door het product ontstaan er afwijkingen in de geprojecteerde point-cloud. Aan de hand van deze afwijkingen kan uit de combinatie van de beelden van de camera’s een hoogteprofiel worden gerealiseerd. Als van een oppervlakte maar op 1 camera een beeld te zien is (zijkanten van producten), kan hiervoor geen hoogteinformatie worden berekend. Aan de Ensenso hangt ook een IDS camera, hiermee wordt een standaard RGB foto gemaakt.

3.3 HMI EN PLC

In de opstelling is een HMI met PLC verwerkt (zie figuur 9). Afbeeldingen van de overige schermen van de HMI zijn geplaatst in bijlage III.

De HMI is een NB7W-TW01B HMI van Omron in combinatie met een Omron SYSMAC CP1L. De HMI heeft als doel dat de gebruiker van de opstelling de gewenste hoeveelheden kan invoeren. Ook wordt hier het programma gestart en kunnen de lopende banden handmatig bewogen worden. De PLC zorgt hierbij vooral voor de aansturing van de frequentieregelaars van de lopende banden en de HMI, Ook communiceert de PLC met de Robot via I/O verbinding en met Halcon via Socket messaging.

Het programmeren van de HMI is door mij zelf gedaan in NB Designer, dit is een programma dat door Omron bij de HMI geleverd wordt. De PLC is geprogrammeerd in CX-Programmer, hierin wordt geprogrammeerd in ‘Ladder’ , waarmee functieblokken aangemaakt worden die doormiddel van tekst geprogrammeerd worden. In hoofdstuk 4.3 is dit uitgebreider uitgelegd.

Om de positionering van de kratten op de banden te regelen wordt gebruik gemaakt van optische sensoren. De output van deze sensoren is aangesloten op de input van de PLC. Aan de hand van deze signalen is een verwachtingspatroon geprogrammeerd voor de kratten controle.

In bijlage IV is een bedradingsschema te vinden van de PLC en de daaraan bevestigde componenten. Figuur 9: Hoofdscherm HMI

Figuur 8: "Projected texture stereo vision" principe, gedownload van Analyza Obrazu. (z.d.).

(16)

3.4 ABB ROBOT

In de opstelling wordt gebruikt gemaakt van een ABB IRB 340 Type B Flexpicker (zie figuur 10). Volgens ABB Automation Technologies/Robotics. (2013). heeft deze robot een werkgebied van 250 mm in de Z-richting en een cirkelvormig werkgebied met een straal van 566 mm.

Aangezien de robot de producten vanuit kratten moet pakken met een opstaande hoogte van 180 mm en de producten met een veilige hoogte over de krat rand getransporteerd moeten worden is er gekozen om de bodem van de kratten te verhogen met karton. Dit dient als vulling voor een lege krat zodat de grijper minder ver de krat in moet.

De robot gebruikt een type IRC5 robot controller, ook van ABB. Met deze robot controller wordt via Ethernet gecommuniceerd en geprogrammeerd in

het programma ABB Robotstudio. Figuur 10: ABB Flexpicker, Overgenomen van

(17)

4 SOFTWARE ONDERDELEN

In dit hoofdstuk wordt de verschillende software toegelicht, voor zover die tijdens dit afstudeerproject zijn gebruikt en aangevuld zijn. In figuur 11 is een afbeelding te zien van de opstelling met daarop de onderdelen waar de desbetreffende code op draait.

De software bestaat uit de volgende onderdelen:

1. Halcon code: De Halcon code verwerkt de beelden vanuit de camera’s. 2. Robotstudio code: De Robotstudio bestuurt de bewegingen van de robot. 3. CX-Programmer: De code die op de PLC draait.

4. NB-Designer: De schermen van de HMI. (wordt behandeld in hoofdstuk 3.3)

(18)

4.1 HALCON CODE

De Halcon code begint met het initialiseren van de camera connectie, het maken van de footprint, initialisatie van de pack procedure (berekening van de coördinaten waar het product in de outputkrat neergelegd moet worden) en het contact maken met de HMI. Bij deze laatste actie wacht Halcon totdat op de HMI voor elk product een hoeveelheid is ingevoerd. Daarna wordt de communicatie met de robot opgestart. Na de initialisatie worden de hoofd threads opgestart: De image thread en de foto verwerkingsthread. Een thread is een stuk code in Halcon wat los van het hoofdprogramma draait. Door externe signalen kan er in een thread een proces gestart worden

In de image thread wordt gewacht op een trigger vanuit de robot. Ook wordt gecontroleerd of de inputkratten verplaatst moeten worden. Als de foto gemaakt is wordt deze opgeslagen in een buffer en wacht de image thread op de volgende trigger als het product verplaatst is.

In de foto verwerkingsthread wordt gewacht totdat bovenstaande buffer gevuld is. Als dit het geval is wordt de foto uit de buffer gehaald. Uit deze foto wordt dan de desbetreffende informatie gehaald en opgestuurd naar de robot.

Per product is het belangrijk om 4 eigenschappen te hebben voordat het product verplaatst kan worden. Deze eigenschappen zijn: De oriëntatie van het product in de inputkrat, het coördinaat in de inputkrat waar de grijper het product moet oppakken, het coördinaat in de outputkrat waar de grijper het product moet afleveren en de omtrek van het product. De omtrek van het product is nodig om in de outputkrat de resterende ruimte te berekenen. Deze informatie wordt met twee procedures berekend. De eerste van deze procedures is de herkenning van een product. Deze procedure en de werking verschilt per product. In hoofdstuk 5 wordt uitgelegd hoe deze werken voor de producten van de proefopstelling. Bij de product herkenning worden drie van de vier hierboven genoemde eigenschappen vastgesteld: De oriëntatie van het product in de inputkrat, het coördinaat in de inputkrat waar de grijper het product moet oppakken, en de omtrek van het product. De tweede procedure oftewel de pack positie procedure stelt het coördinaat in de outputkrat vast. Deze procedure is voor alle producten hetzelfde.

Bij de pack positie procedure wordt in de foto van de inputkrat een vlak getekend. waarin de producten neergelegd kunnen worden. Dit vlak is kleiner dan het krat om te voorkomen dat de grijper tegen de randen van het krat aankomt. Voor het gekozen product wordt gekeken op welke plek in het krat de meeste ruimte overblijft om andere producten te plaatsen. Dit wordt gedaan door per rotatie van het product (13 stappen van 0.5 radialen per keer) langs de buitenste lijn van het krat te gaan en te berekenen hoeveel ruimte er overblijft. Als dit groter is dat wat er tot dan toe is berekend, wordt de rotatie en positie opgeslagen. Deze opgeslagen positie en rotatie wordt omgezet naar robot coördinaten, zodat de berekende positie als pack locatie gebruikt kan worden. Deze positie wordt dan over de Y as 444 mm getransleerd om het product in de juiste plaats in de uitvoerkrat te plaatsen. Ook wordt de vorm van het geplaatste product van het vlak afgehaald. Hierdoor wordt er bij het selecteren van een plaats voor het volgende product niet een plek geselecteerd waar al een product ligt.

Om Halcon met de te laten communiceren is het nodig om de Halcon code te exporteren naar Microsoft Visual studio Express. In Visual studio wordt de Halcon aangevuld met een standaard plug in, deze plug in zorgt voor de communicatie tussen de Halcon code en de robotstudio code. Deze plug in is uitgebreid specifiek voor deze opstellingen om bepaalde variabelen in beide programma’s te kunnen gebruiken zoals de camera trigger.

(19)

4.2 ROBOTSTUDIO CODE

De robot studio code bestaat uit vier delen: Het initialiseren, het berekenen van de coördinaten, de werkelijke bewegingen en de trap functies.

Tijdens de initialisatie worden de I/O signalen gereset, wacht de robot op een start signaal van de HMI en wacht de robot op het stil staan van de lopende banden. Ook gaat de robot naar zijn home positie, voordat dit gebeurt wordt gecontroleerd of de grijper zich onder de rand van de krat bevindt. Als dit het geval is beweegt hij eerst verticaal omhoog. Dit is gedaan om te voorkomen dat de robot tegen een rand van een krat botst als deze direct naar zijn homepositie beweegt.

Als de initialisatie voltooid is start de hoofd loop. In de hoofd loop worden eerst de coördinaten berekend en wordt het product verplaatst van input naar outputkrat. Aan het begin van dit proces zit een extra loop. Hierin wacht de robot op de coördinaten vanuit Halcon. In deze extra loop wordt gecontroleerd of de invoerkratten naar links of naar rechts moeten, of de outputkrat gevuld is en verplaatst moet worden naar de sink positie, de positie waar de band in de eindopstelling van de band verwijderd wordt. Tot slot realiseert deze code een foto als een krat is verplaatst.

De ABB flexpicker heeft naar de grijper geen interne bedrading, hierdoor heeft deze de mogelijkheid om oneindig te blijven roteren. Om te voorkomen dat de luchtslangen naar de grijper te vaak om de grijper gewikkeld worden tijdens het gebruiken van het systeem.

Keert de robot na elke cyclus terug naar zijn beginrotatie. Als er vanuit Halcon coördinaten zijn ingevoerd wordt er voor de bewegingen een pad berekend. De Flexpicker kan per beweging slechts maximaal 90 graden roteren. Hierdoor moeten bewegingen die grotere rotaties bevatten opgedeeld worden in meerdere kleine bewegingen. Voor de beweging naar de invoerkrat, vanuit de homepositie, kan de rotatie maximaal 180 graden zijn (-180 linksom en 180 graden rechts om, startend vanuit 0). Als deze rotatie kleiner is dan 90 graden wordt de rotatie in een keer uitgevoerd. Als deze rotatie groter is

dan 90 graden wordt de beweging in twee stappen gedaan. Als de beweging in twee stappen wordt gedaan, ligt het eerste coördinaat halverwege de afstand naar het eind coördinaat. Voor de beweging naar de packpositie zijn rotaties tot maximaal 360 graden mogelijk. De beweging naar de pack positie is hetzelfde opgebouwd als de bewegingen naar de pick locatie. Alleen is het hier mogelijk dat de beweging in maximaal vier stappen wordt opgedeeld. Als laatste worden boven de pick en pack posities twee extra posities aangemaakt (Pick up standby en pick up halverwege in figuur 12). Pick up halverwege zit 30 millimeter boven de pick locatie, voor de pick up standby locatie is dit 100 millimeter. Deze coördinaten zijn aangemaakt om de snelheid van het systeem te kunnen optimaliseren. De verticale beweging met product in de grijper mag niet te snel accelereren. Er moet namelijk voldoende tijd zijn om de zuigkracht van het vacuüm te genereren, zodat de grijper het product vast blijft houden.

(20)

Het eerste deel van de beweging wordt daarom met een kwart van de maximale acceleratie uitgevoerd. Na het berekenen van de coördinaten begint de fase waarin de bewegingen van de robot bestuurd wordt.

In figuur 12 is het bewegingsschema van de robot opgenomen. Als de robot boven de outputkrat is tijdens beweging 6 checkt de robot studio code of er van het huidige product nog meer verplaatst moeten worden. Als dit het geval is wordt de trigger aangezet waarmee de Halcon code een foto kan maken. Als er geen producten meer verplaatst moet worden van het huidige soort, wordt een andere variabele (de boolean New_Kind) getriggerd, waardoor na het verplaatsen van de krat een nieuwe foto wordt genomen.

De robot gebruikt bij de meeste bewegingen de maximale acceleratie (4 m/s2) en snelheid (7000 mm/s) die ingevoerd kan worden. Bij beweging 3 is de snelheid verlaagd naar 200 mm/s om de trillingen van de grijper te minimaliseren (deze ontstaan door het bewegen op hoge snelheden). Om deze reden is bij beweging 8 de snelheid ook verlaagd naar 200 mm/s. Voor beweging 4 is de acceleratie dan verlaagd naar 1 m/s2, dit is gedaan om de zuiger genoeg tijd te geven om een vacuüm te genereren.

Het laatste stuk van de robotcode bestaat uit trap functies. Volgens ABB Automation Technologies/Robotics. (2004-2009). zijn dit functies die de controle overnemen van de main functie als een specifieke onderbreking heeft plaatsgevonden. Deze onderbrekingen vinden plaats als de robot in de homepositie, standby posities, pick positie of pack positie komt. Hierdoor kan op deze punten op het moment dat de robot aankomt het vacuüm aan of uitgezet worden of de grijper geopend of gesloten worden. Omdat de code een aantal regels voorloopt op de werkelijke bewegingen wordt dit gebruikt om de grijper op exact het juiste moment te openen. Als de grijpercontrole niet in een trap functie staat wordt de grijper daardoor eerder geopend.

4.3 CX-PROGRAMMER CODE

De code in Cx-Programmer is in ladder gemaakt, dit is een programmeer taal die meer visueel is ingesteld in plaats van tekstueel. In figuur 13 is een voorbeeld te zien van een stuk van de ladder code die gemaakt is voor dit project. In deze afbeelding zijn twee zogeheten “Rungs” te zien, oftewel regels. Deze rungs worden gescheiden door een gele titel balk. In de bovenste rung, Output crate control, is een function block te zien. In deze function blocks kunnen doormiddel van structured tekst zelf functies gebouwd worden. In de ladder code zijn twee functieblokken opgenomen die de kratten controle doen, een voor elke lopende band. Ook is er een functieblok dat de inputwaardes

van de HMI versleutelt, zodat deze in Halcon uitgelezen kunnen worden. De onderste rung, Movement signal, is een voorbeeld van het signaal, dat naar de robot wordt gestuurd als beide banden stil staan. In de ladder code staan twee contacten, als deze allebei open staan wordt de output (Done Moving) ‘true’. Op deze manier zijn een aantal rungs ingericht voor het error signaal, het starten van de socket messaging en het starten van het bin picking programma.

(21)

5 PROCES VERSLAG

In dit procesverslag zijn de werkzaamheden tijdens de afstudeerstage beschreven en gemotiveerd. De stage bestaat uit 3 fases (zie hoofdstuk 2.4).

Voor de proef opstelling is uit een aantal mogelijke soorten groente en fruit zoals appel, aubergine, avocado, citroen, kiwi, mango, peer en ui de keuze gemaakt om appels, peren en aubergines te verplaatsen. Deze keuze is gemaakt door de hoge variatie van de producten. Hierbij zijn appels gekozen omdat het een standaard product is. De meeste bedrijven in de AGF sector hebben te maken met appels. Qua vorm en gewicht zijn appels niet heel speciaal, ook worden appels niet direct beurs. De appel is hiermee een goed ‘standaard’ product voor dit project. Peren zijn gekozen omdat deze een compleet andere vorm hebben. Ook is de variatie in vorm per peer groter dan tussen appels. Aubergines zijn gekozen omdat deze in grootte en gewicht sterk afwijken van de appel en peer. Met deze drie verschillende producten in vorm en gewicht kunnen de mogelijkheden van de grijper onderzocht worden. 'Eenvoudige’ producten die vanaf de bovenkant met een enkele zuignap opgepakt kunnen worden zoals sinaasappelen zijn niet geselecteerd, omdat deze geen extra eisen stellen aan de grijper.

5.1 FASE 1

In fase 1 is gestart met het monteren van de basis componenten tot de basisopstelling. Dit begon met het plaatsen van de lopende banden in het basis frame. Om

de lopende banden aan te sturen wordt gebruik gemaakt van een PLC van Omron. Deze is samen met een HMI en twee frequentieregelaars in een systeemkast aan het systeem gemonteerd. Deze kast is te zien in figuur 14. In bijlage IV, figuur 53 is het bedradingsschema te zien van de kast. In figuur 52 is te zien hoe de kast in eerste instantie aangesloten was. Tussen de PLC en de frequentie regelaar waren relais gebruikt, omdat de PLC en de frequentie regelaar beiden een eigen 24 V circuit hebben. De eerste weken hebben de lopende banden daarom op deze manier gedraaid. Uit een gesprek met Mathijs Vermeulen (stage begeleider) bleek dat deze circuits direct op elkaar aangesloten konden worden als de 0 met elkaar verbonden wordt. Hierdoor waren de relais overbodig en zijn deze uit de kast verwijderd.

Na het bekabelen van de kast is een begin gemaakt aan het programmeren van de PLC om de lopende band een kratpositie naar rechts of links te

kunnen laten bewegen. Dit is gedaan in CX-Programmer, het maken van de beeldschermen voor de HMI werd gedaan in NB-Designer (in bijlage III zijn alle beelden te zien van de HMI).

Aan het einde van de lopende banden zijn vervolgens optische sensoren geplaatst. Deze sensoren zorgen ervoor dat de kratten aan het begin van het programma altijd op de zelfde plek op de lopende band staan. Dit wordt gedaan door de krat richting deze sensor te laten draaien en de lopende band te stoppen als de krat de sensor bereikt heeft. Om te herkennen of een krat werkelijk verplaatst is, wordt gebruik gemaakt van één extra optische sensor bij de oppak locatie. Er was ook een mogelijkheid om dit te doen zonder sensoren (door gebruik te maken van timers) of met twee extra sensoren (wachten totdat deze allebei geen krat waarnemen wat betekent dat er precies een krat tussen de sensoren staat). Er is gekozen voor één extra sensor, omdat dit nauwkeuriger is dan gebruik te maken van timers. Ook is het hiermee mogelijk om de locatie van de kratten bij te houden en te bevestigen per beweging door een verwachtingspatroon te programmeren van de sensor. Met twee extra sensoren

(22)

werken levert hierbij, naast extra aanschaf kosten, geen extra functionaliteiten. Deze sensoren zijn aan de lopende band bevestigd doormiddel van speciaal voor dit doel geprinte 3D houders (zie afbeelding 15).

Door de sensoren controleert de PLC de positie van de krat. De PLC geeft een error als deze een opdracht krijgt om de kratten buiten het maximale bereik te bewegen.

In de proef opstelling moeten de kratten altijd in dezelfde oriëntatie staan en mogen niet veranderen ten opzichte van de lopende band. Dit is nodig omdat het niet mogelijk is om de oriëntatie van de krat te detecteren in de proefopstelling, omdat er geen camera boven de outputkrat hangt. Daarom is ervoor gekozen om de kratten aan de lopende band te bevestigen met tape.

De Ensenso camera is vervolgens opgehangen aan het robot frame en verbonden met de PC. In figuur 16 is het hoogtebeeld te zien vanuit de Ensenso. Hierbij is de onderkant van de krat, het blauwe gedeelte, duidelijk te zien en zijn de witte randen de bovenkant van de krat. Ook is een ‘area of interest’ ingesteld, het gebied dat wordt gefotografeerd. Alles wat zich in dit gebied buiten de krat bevindt wordt niet opgeslagen.

Daarna is de grijper aan de robot gehangen. De grijper wordt geopend en gesloten door gebruik te maken van een 5-2 ventiel. Ook is er een 2-2 ventiel geplaatst om ervoor te zorgen dat drie venturi ventielen aan of uit kunnen. Deze ventielen zijn aangesloten op een I/O output van de robot, zodat de robot de

grijper bestuurt (‘open/dicht’) en de zuigkracht regelt.

Figuur 16: Eerste diepte beeld van de Ensenso

Figuur 15: Optische sensoren met 3D geprinte houder

(23)

Omdat er met de robot automatisch gedraaid gaat worden als de proefopstelling verder ontwikkeld is, is het belangrijk om veilig te blijven werken. Daarom zijn er aan de rechter- en voorkant van het robotframe een aantal bij

Lacquey beschikbare

veiligheidsrekken geplaatst (zie figuur 17). Deze moeten voorkomen dat iemand zich tijdens het draaien van de robot in het werkgebied van de robot kan bevinden. Deze

oplossing kan dit niet helemaal voorkomen, omdat de rekken niet goed aansluiten op de omvang van de proefopstelling. Daarvoor is een rek nodig dat exact voor deze opstelling is ontworpen.

Na het bevestigen van de grijper was de basisopstelling geassembleerd. Dit systeem functioneerde na assemblage nog niet vanwege ontbrekende software. Wel was het mogelijk de robot handmatig te bewegen. Qua software was alleen de communicatie tussen Halcon en Robotstudio al gemaakt in Microsoft Visual Studio Express. Na assemblage is daarom de ontbrekende software voor het systeem ontwikkeld.

Om de werking van de onderdelen van het systeem ten opzichte van elkaar duidelijk te krijgen zijn er state machine diagrammen gemaakt (zie bijlage V). Aan de hand van deze diagrammen is de structuur van het programma ingericht.

Het ontwikkelen van de software begon met het leren kennen van robotstudio waarmee de robot aangestuurd wordt. Om dit programma te leren is eerst een eenvoudig vast punten programma gemaakt waarmee de robot vanaf vaste posities een plastic appel kan verplaatsen van de input naar outputkrat en terug keert naar de home positie.

Daarna is ervaring opgedaan met Halcon, een programma dat aan het begin van deze

afstudeerperiode nog onbekend was. Hiervoor zijn eerst een aantal hoofdstukken uit de manual door gelezen over onderdelen die mogelijk toepasbaar konden zijn voor de herkenning van producten. Daarna is met de hulp van een software engineer (Evert van Galen) een procedure gemaakt die de foto’s vanuit de Ensenso naar Halcon stuurt. De Ensenso is gekalibreerd met de IDS camera, die tegen de Ensenso camera hangt. Hierdoor zijn de coördinaten volgens de foto van de Ensenso gelijk aan de coördinaten van een foto van de IDS camera. Dit wordt gedaan door een kalibratieplaat (zie afbeelding 18) in meerdere posities te fotograferen. De kalibratie wordt dan op basis van deze foto’s gegenereerd.

Figuur 17: Veiligheidsrekken

(24)

De PLC en robot communiceren op twee manieren. Een daarvan is I/O communicatie, de andere is socket messaging. Via de I/O verbindingen bericht de PLC de robot dat de lopende banden stil staan of een mogelijke error mode van de PLC. Vanaf de robot wordt er naar de PLC gestuurd dat de input of outputkratten naar links of naar rechts moeten. Het opzetten van de socket messaging is nodig om de ingevulde order vanuit de HMI naar Halcon te sturen. In CX-Programmer is een stuk toegevoegd dat de ingevulde order verandert naar een code zodat maar één verbinding gebruikt hoeft te worden. Deze code werkt op de volgende manier: als het soort product ‘appel’ is wordt er bij het aantal 100 opgeteld en verstuurd, als

de soort ‘peer’ is wordt er 200 bij op geteld en voor ‘aubergine’ 300. In figuur 19 is te zien hoe deze waarde in Halcon aankomen. In Halcon wordt dit weer teruggerekend naar soorten en aantallen.

Met Halcon is een procedure gemaakt die ervoor zorgt

dat de camera’s een foto maken en deze foto opslaat. Met deze procedure is een appel dataset gemaakt zodat het maken van de appel herkenning offline kan gebeuren en niet

afhankelijk is van de Ensenso camera. De Ensenso camera geeft namelijk ongeveer eens in de drie keer dat ermee verbonden wordt een error. Het is samen met Evert van Galen (software engineer) niet gelukt om deze error te voorkomen. Als er verbonden is met de Ensenso camera werkt deze wel zoals bedoeld is.

Met deze dataset is een begin gemaakt aan de appel herkenning met Halcon. Hier moet gelet worden op de randen van de krat, dubbele appels en appels die tegen elkaar aan liggen. Doormiddel van een threshold wordt bepaald hoeveel appels er in de krat liggen. Deze functie slaat vanuit een foto met hoogteinformatie alle oppervlakte op die tussen twee vooraf ingestelde hoogtes ligt. In figuur 20 is hier een voorbeeld van te zien. De rode vlakken zijn de oppervlaktes die tussen deze ingestelde hoogtes liggen. Er is voor gekozen om niet de gehele appel in de threshold te herkennen. Als dit wel gedaan was en twee appels tegen elkaar aan liggen, worden deze als één vorm gezien en daardoor als één appel herkend. In figuur 21 is de stap te zien die daarna genomen wordt, alle vlakken die geen verbinding met elkaar hebben worden gescheiden en opgeslagen als een eigen ‘regio’. Door deze functie krijgt elke regio een eigen kleur. In figuur 21 zijn dit 28 regio’s waarvan zeven appels zijn.

Figuur 19: Socket messaging hoeveelheden

Figuur 20: Appels herkend met threshold

(25)

Uit deze verzameling van regio’s moeten alleen de zeven appels geselecteerd worden. Dit wordt gedaan doormiddel van de select shape functie. Met deze functie kan op basis van gegevens van de regio geselecteerd worden of de regio wel of niet een appel is. In figuur 22 is dit gedaan op basis van rondheid van de regio’s. Voor deze rondheid is een onder en bovengrens gedefinieerd. Hierdoor bleven nog 13 regio’s over. Links in deze afbeelding zijn ook een aantal kleine regio’s (gekleurde punten) te zien. Dit zijn regio’s die ook tussen deze waardes vallen. Om deze regio’s weg te filteren wordt nog een select shape functie toegepast. Deze tweede select shape functie is te zien in figuur 23. Deze selecteert op basis het oppervlakte van de regio. In figuur 23 zijn de kleine regio’s eruit gefilterd en zijn alleen de 7 appels over. Om de exacte vorm van de appel te vinden wordt region growing toegepast. Deze functie begint bij de basis van de gevonden regio en maakt hem dan groter door omliggende en overeenkomende pixels bij de regio toe te voegen. Of pixels overeenkomen wordt gebaseerd op het hoogtebeeld, als de hoogte van de omliggende pixels binnen de gestelde tolerantie horen worden deze aan de regio toegevoegd. Deze tolerantie wordt dan in een loop vergroot om de gehele vorm te krijgen. Bij appels wordt dit in stappen gedaan tot een tolerantie van 4.

Als appels tegen elkaar aan liggen en herkend worden als overeenkomende pixels worden deze ook opgenomen bij de regio’s. Om dit te voorkomen wordt per stap gekeken naar het

oude oppervlakte vergeleken met het nieuwe oppervlakte. Als het nieuwe oppervlakte onrealistisch groter is dan het vorige oppervlakte wordt de vorige tolerantie gebruikt voor de definitieve vorm. Een oppervlakte is onrealistisch als deze meer dan een vooringesteld oppervlakte in een stap toeneemt. In bijlage VI is een test te zien waarmee gekeken is hoeveel procent van de appels uit de data set op dit moment herkend werden. Hieruit bleek dat ongeveer drie kwart van de appels herkend werd. Appels die niet herkend werden lagen bovenop elkaar of tegen de randen aan. Los liggende appels of appels die tegen elkaar aanlagen werden wel allemaal herkend.

Figuur 22: Select shape op rondheid

(26)

De basis structuur van de Halcon code is het zelfde als gebruikt wordt door het software team van Lacquey gebruikt. Hiervoor is gekozen zodat het software team de uitkomsten van dit afstudeerproject eenvoudig kan begrijpen, uitbreiden en verbeteren nadat de afstudeerperiode is afgerond. Deze basis structuur bevat bij de start van het project al het deel dat de verbinding met de robot initialiseert (W_Outgoing_communication). De threads die zorgen voor het nemen van de foto en het berekenen van de pick en pack locatie moesten hierin nog verwerkt worden.

Hiervoor moest een Z_Image_Grabber thread worden gemaakt. Als deze een signaal van de robot krijgt, geeft deze thread de Ensenso camera de opdracht om een foto te maken en slaat de thread deze op in een buffer. Verder moest de communicatie thread werkend gemaakt worden, dit is in samenwerking gedaan met Tom Loomans (software enigneer). En verder moest de Y_bin_picking thread gemaakt worden. Hierin wordt vanuit de buffer een foto opgehaald en worden coördinaten berekend om een product op te gaan pakken. Ook is er een procedure gemaakt die via socket messaging de ingevoerde hoeveelheden per soort ontvangt van de HMI.

De Y thread bestaat uit vier onderdelen:

 Het ophalen van een foto vanuit de buffer die door de Z thread gevuld is.

 Het berekenen van een pick positie. Dit wordt gedaan op basis van de herkenning voor het huidige product. Uit alle appels die op de foto herkend zijn wordt een keuze gemaakt welke opgepakt gaat worden. De appel die het dichtst bij in de Y richting ligt wordt gekozen.

 Het bepalen van de pack positie. De procedure berekent deze coördinaten boven het inputkrat op basis van een Ensenso foto. De coördinaten worden daarna naar de outputkrat getransleerd. Deze afstand is berekend met de gemiddelde afstand tussen punten in de input en outputkrat. Deze procedure is door Evert van Galen (software engineer gemaakt.

 Het versturen van de coördinaten van de pick en pack locatie naar de robot. Voordat de coördinaten naar de robot worden verstuurd, worden deze eerst omgerekend naar robot coördinaten. Dit wordt omgerekend via een ‘homogene transformatie matrix’. Deze is gemaakt door een viertal werkelijke punten te verbinden met het zelfde punt in een Ensenso foto. Dit wordt gedaan door vier plakkertjes in de krat te plakken en hier een foto van te maken en de coördinaten van deze plakkertjes gelijk te stellen aan de coördinaten die deze plakkertjes hebben in de robot.

De robotcode is verbeterd van een vast punten programma naar een programma dat wacht op de coördinaten vanuit Halcon en op basis van deze coördinaten wordt de appel verplaatst. De robotcode triggert nu Halcon als deze een signaal moet geven aan de camera dat er een foto genomen moet worden. De coördinaten die Halcon doorstuurt als pick positie is de locatie en hoogte van de appel. Doordat het Tool center point niet is aangepast naar de afmetingen van de grijper, moet aan de hoogteinformatie van Halcon een grijperafstand toegevoegd worden.

(27)

Doordat de Ensenso in het begin niet waterpas hing kwamen er verkeerde coördinaten uit en bewoog de robot de appel naar plekken buiten de krat of op de rand van de krat. Dit is verholpen door de camera opnieuw op te hangen. Bij het testen van het systeem kwam er water uit de uitblaas gleuven (discharge in figuur 24) van de venturi ventielen. Na het stoppen van het systeem bleek dit water afkomstig te zijn uit de compressor. Om te voorkomen dat dit water schade toebrengt aan de proefopstelling is een filter eiland opgehangen (zie figuur 25). Deze filters zorgen ervoor dat het vocht dat zich in de lucht bevindt eruit wordt gefilterd voordat dit in het systeem gebruikt wordt.

Met bovenstaande toevoegingen aan de proefopstelling is het mogelijk om succesvol een appel van de pick positie naar de pack positie te verplaatsen.

Figuur 24: Venturi ventiel, overgenomen van Fox Valve. (z.d.).

(28)

5.2 FASE 2

In fase 2 is het doel om meerdere appels direct achter elkaar te kunnen verplaatsen. In deze fase wordt vooral aandacht besteed aan de pick en pack procedure. Ook is er aan de opstelling en software een aantal verbeteringen toegevoegd ten opzichte van fase 1.

Om de verplaatsing van meerdere producten mogelijk te maken moesten in de Halcon code aanpassingen gedaan worden. In fase 1 wacht de Z_Image_Grabber thread eenmalig op een signaal van de robot om een foto te maken. Hieraan moest veranderd worden dat de Z image thread na het maken en opslaan van een foto deze actie herhaalt en blijft herhalen totdat het programma afgesloten wordt. Ook de Y thread is aangepast zodat deze de buffer controleert nadat een coördinaat naar de robot is verstuurd in plaats van te stoppen na het versturen van het eerste coördinaat.

Vervolgens is de appel keuze aangepast. In fase 1 werd de appel die het meest dichtbij lag in de Y richting verplaatst. Dit is veranderd naar de afstand in X en Y richting. Hierdoor hoeft de grijper een kortere afstand naar de appel af te leggen, hetgeen wat de verwerkingstijd verkort. Deze afstand wordt berekend door gebruikt te maken van de stelling van Pythagoras.

Na deze aanpassing in de pick procedure is gewerkt aan een versnelling van de berekening van de pack coördinaten. Het berekenen van de pack coördinaten van de appels creëerde op dit moment van het project een wachttijd van ongeveer 15 seconden in het robot programma. Er is geprobeerd dit te verkorten door de procedure die Evert van Galen (software engineer) had gemaakt om de beste pack positie te berekenen aan te passen. De originele berekening hiervoor initialiseert zichzelf, waarbij de grootte van de outputkrat wordt ingesteld en een eerste product wordt geplaatst. De initialisatie gebeurde elke keer als deze procedure aangeroepen werd. Daarna berekende de procedure voor alle producten op de foto de meest ideale manier van vullen. De procedure is zo aangepast dat de initialisatie maar één keer in het hele programma gebeurt en de berekening alleen de ideale locatie bepaald voor het product dat in de pick procedure is gekozen.

Ook is het moment van de foto trigger vervroegd in de robotcode. De foto wordt nu niet meer genomen op het moment dat de robot terugkomt op de home positie maar op het moment dat de appel in de krat geplaatst is. Door deze aanpassingen is de wachttijd in het robotprogramma terug gebracht naar een stilstand van 5 seconden tussendoor.

Om te voorkomen dat de grijper tijdens het oppakken van de appel tegen andere appels aan stoot is een footprint gegenereerd. Een footprint (zie figuur 26) is de afdruk van de onderdelen van de grijper die de krat in gaan als deze een product gaat oppakken. Met deze footprint wordt gecontroleerd voor welke rotatie de grijper geen andere appels raakt. Deze rotatie wordt gebruikt om de geselecteerde appel op te pakken. Hiermee wordt voorkomen dat de grijper tegen andere producten stoot.

Bij het verplaatsen van de appels werden de appels vaak net met de zijkant bovenop elkaar gelegd. Hierdoor werd de eerder geplaatste appel weg geduwd van de plek waar hij hoorde te liggen. Dit kwam doordat met de region growing functie de

(29)

buitenste rand van de appel niet mee genomen werd. Dit stuk wordt niet bij de regio genomen, omdat de Ensenso daar geen hoogteinformatie over heeft. De Ensenso heeft op de zijkanten van de appel geen hoogteinformatie omdat dat oppervlakte niet met beide camera’s wordt gefotografeerd (zie hoofdstuk 3.2) en daardoor vallen de zijkanten van de appel buiten de tolerantie voor de region growing functie. Om toch met de hele appel de pack positie te bepalen en daarmee te voorkomen dat appels gedeeltelijk boven op elkaar worden geplaatst wordt de kleinste cirkel om de regio berekend, aan de diameter van deze cirkel wordt dan 5 mm toegevoegd en vervangt de regio van de appel.

(30)

In fase 1 wordt niet met de grijper geroteerd, omdat het mogelijk is om de appels met de standaard rotatie op te pakken (zie figuur 27). Bij het verplaatsen van meerdere appels gaf de robot soms een error, omdat deze robot maar 90

graden per beweging kan roteren en bij sommige bewegingen een grotere rotatie nodig was. Het is belangrijk dat de grijper elke keer dezelfde rotatie heeft in de homepositie (zoals in figuur 27). Dit is nodig om te voorkomen dat de luchtslangen te strak om de grijper gedraaid worden en hierdoor kapot gaan. In robot studio is een aanpassing gedaan die de af te leggen afstanden opdeelt in kleinere stukken. Het aantal stukken waarin de robot deze afstand opdeelt hangt af van de totale rotatie. Als de totale rotatie kleiner is dan 90 graden kan de beweging in een keer. Als de rotatie tussen de 90 en 180, graden ligt gebeurt dit in twee stukken. Tussen de 180 en 270 in drie stukken en tussen de 270 en 360 in vier stukken. De coördinaten om deze stukken af te leggen liggen op het pad naar de eind positie. De coördinaten worden berekend door de af te leggen afstand te delen door het aantal posities.

Tijdens het testen hiervan is een van de vingers gebroken, in figuur 28 is hier een foto van te zien. Dit kwam doordat de robot met de grijper in de outputkrat zat terwijl deze naar de sink positie bewoog. Dit gebeurde doordat de PLC aangezet werd en onmiddellijk de kratten ging kalibreren terwijl de robot nog niet aanstond. Om herhaling te voorkomen is in robotstudio aangepast dat de robot eerst zijn hoogte bepaalt, voordat het systeem start met het kalibreren van de kratten. Als de grijper zich onder de bovenste rand van het krat bevindt, verplaatst deze zich eerst 75 millimeter omhoog en daarna pas naar de homepositie. De vinger is gerepareerd zodat deze weer gebruikt kon worden. In de vinger zijn twee gaatjes geboord en met een spalk meer stevigheid gecreëerd dan met een enkele lijm laag. Als reserve zijn ook nieuwe vingers besteld. Om te voorkomen dat de grijper tijdens het draaien van het systeem tegen de outputkrat aankomt is de grote van het krat aangepast in de pack positie procedure. Hier is een veiligheidszone van 3 centimeter ingebouwd. Door 3 centimeter van de grootte van de krat af te halen.

Figuur 28: Standaard rotatie (zie voorwoord) Figuur 27: Gebroken grijper vinger (zie voorwoord)

(31)

Bij het verder testen van het oppakken van producten viel op dat bij het sluiten van de grijper de vacuüm cups vaak de verkeerde kant op bogen. Hierdoor heeft de grijper niet de grip die hij nodig heeft en komen de appels los als de grijper omhoog beweegt. Dit werd veroorzaakt doordat het vacuümtrekken tegelijkertijd plaats vond met het sluiten van grijper, zodat er te weinig tijd was om het vacuüm te creëren. Om dit te voorkomen is ervoor gekozen om de venturi ventielen al te laten werken op het moment dat de grijper gaat zakken naar de pick positie. Ook is er een smoor ventiel toegevoegd voor het ventiel dat de grijper opent en sluit. Hierdoor vermindert de flow en opent en sluit de grijper langzamer. Deze maatregelen hebben ervoor gezorgd dat het vacuüm meer tijd heeft om de appel te vinden en zichzelf vast te zuigen. Ook is er een extra afstandshouder geplaatst op elke vinger. Dit is gedaan om ook kleine producten te kunnen oppakken. Hiervoor waren de vingers te kort doordat de flexibele vacuüm cups een stuk intrekken als deze een vacuüm creëren. De vacuüm cups die origineel op de grijper zaten voor het begin van de afstudeerperiode deden dit niet en waren daardoor een stuk langer.

Tijdens het testen viel ook op dat de grijper vaak niet boven het midden van het product hing, maar het product enkele centimeters in de Y richting verkeerd oppakte. Dit werd veroorzaakt doordat de camera was verschoven. De camera was namelijk alleen met CEV centraal verbindingen (zie figuur 29) bevestigd. Hierdoor konden de profielen ten opzichte van elkaar draaien. Om dit te voorkomen is de ophanging verstevigd met aluminium plaatjes (1 in figuur 30). Naast de aluminium plaatjes is ook de ophanging van de camera extra verbonden met de robot (2 in figuur 30). Hierdoor is de ophanging niet meer één losse arm en trilt deze een stuk minder. Na deze wijzigingen is de camera opnieuw gekalibreerd. Hierdoor werd het product weer precies van boven af opgepakt.

Om de prestaties van het systeem op volle snelheid te verbeteren is de

acceleratie voor sommige bewegingen juist verlaagd. Dit is onder andere gedaan op het moment dat de grijper van de pick positie weg beweegt. Vaak viel de appel hier uit de grijper doordat deze te snel weg bewoog van de pick positie.

Door bovenstaande aanpassingen kon een variabele hoeveelheid appels van pick naar pack positie verplaatst worden. Hiernaast is het systeem ook op meerdere punten verbeterd qua werking ten opzichte van fase 1 zoals de aanpassingen aan de grijper, de combinatie van de Y en X afstand in de appelkeuze en de extra veiligheid om te voorkomen dat de grijper tijdens het draaien van het systeem een botsing kan krijgen.

Figuur 29: Een CEV centraal verbinding. Overgenomen van Coomach. (z.d.).

(32)

5.3 FASE 3

Om tegemoet te komen aan de eerste wens van dit project (zie hoofdstuk 2.2), is bij de start van fase 3 eerst aandacht besteed aan het versnellen van het systeem. Bij de start van fase 3 deed het systeem ongeveer dertien seconden over het verplaatsen van een appel. Als eerste is samen met Evert van Galen (software engineer) gekeken naar de snelheden van de Halcon code. De robot pauzeerde ongeveer vier seconden in de homepositie, omdat de robot nog geen nieuwe coördinaten van Halcon had gekregen. Het oppervlakte van de krat was namelijk vergroot ten opzichte van de originele pack positie procedure, waardoor de procedure te veel mogelijke pack posities berekende wat veel tijd kostte. Om dit te voorkomen is het aantal mogelijke pack posities verminderd.

Ook is de wachttijd bij de pick positie ingekort van 1 seconde naar 0.25 seconde door dit in te korten in de robotstudio code. Deze lange wachttijd was nodig om de te sluiten. Bij de pack positie wacht de robot overigens ook een seconde. Om deze wachttijd in te korten is een extra 5-2 ventiel nodig, wat toe staat dat het vacuüm in de uit stand het vacuüm ‘vol blaast’. Hierdoor is het vacuüm direct opgeheven. Dit extra ventiel was echter niet bij Lacquey beschikbaar. De wachttijd in de pack positie is derhalve niet ingekort.

In fase 2 is de acceleratie in de picking fase verlaagd naar 25% van de maximale acceleratie om de appels beter te kunnen oppakken. 30 millimeter boven de pick en pack positie zijn twee extra coördinaten gemaakt. Vanaf deze coördinaten wordt de maximale acceleratie weer gebruikt, waardoor het tijdsverlies door de vermindering in acceleratie is gereduceerd.

Doordat het robot programma vanwege bovenstaande aanpassingen sneller is geworden, moet de robot in de homepositie weer wachten op coördinaten van Halcon. Om dit te voorkomen is de camera trigger verplaatst, van de foto op het moment van verplaatsing van de appel naar het moment dat de robot net vertrekt van boven de inputkrat. Door deze aanpassingen is de cyclus tijd in totaal ingekort van 13 naar vijf seconden.

Vervolgens is een verbetering toegevoegd aan de berekening van de appel pick positie. Tijdens het testen kwam regelmatig voor dat het middelpunt van de appel geen hoogteinformatie bevatte. Om te voorkomen dat de Halcon code dan geen coördinaat kan berekenen is toegevoegd dat de hoogteinformatie van de appel berekend wordt vanuit vijf punten. Deze vijf punten worden 5 pixels onder, boven, rechts en links van het middelpunt van de gekozen appel berekend. Als een van deze punten geen

hoogteinformatie bevat is wordt dat punt niet meegenomen in het berekenen van het gemiddelde. Dit gemiddelde wordt gebruikt om de pick positie van de appel te bepalen.

Daarna is begonnen aan het werkelijke doel van fase 3: meerdere soorten groente en fruit verplaatsen. Het eerste stuk van de peer herkenning wordt op de zelfde manier gedaan als bij appel herkenning: herkenning van de peer doormiddel van het hoogtebeeld en vaststelling van de grootte en vorm van de peer met region growing. Hierin verschilt wel de maximale tolerantie. De tolerantie bij appels is maximaal 4. In figuur 31 zijn zes peren te zien waarbij region growing is toegepast met een maximale tolerantie van 4. Bij 5 van de 6 peren op deze afbeelding (zie pijlen) zijn de punten van de peer niet herkend als deel van de

Figuur 31: Peren met region growing tot een tolerantie van 4

(33)

peer. In figuur 32 is op dezelfde foto region growing toegepast tot een maximale tolerantie van 7. Hier zijn de hele peren wel helemaal herkend.

Voor de oriëntatie van de peren wordt in de peer gekeken waar de langste lijn door de peer getrokken kan worden. In figuur 33 zijn deze lijnen te zien door zes peren. De hoek van deze lijn is de oriëntatie van de peer. Om ervoor te zorgen dat de peren niet op of direct tegen andere producten worden geplaats wordt de gekozen peer met de functie dilation_circle rondom vergroot. Deze functie maakt de regio waarop hij wordt toegepast groter met een afstand van 5 mm. De keuze welke peer verplaatst gaat worden, het bepalen van de pick positie en het omzetten naar robot coördinaten wordt hetzelfde gedaan als bij appels.

De aubergine herkenning wordt op een andere manier gedaan dan de herkenning van appels en peren. In figuur 34 is het Z beeld te zien van twee aubergines. De zwarte oppervlaktes bevatten geen hoogteinformatie. Hierdoor is het niet mogelijk om met region growing de vorm van de aubergines vast te stellen. Bij de aubergines wordt dit nu gedaan door gebruik te maken van het RGB beeld. Vanuit het B beeld wordt de aubergine herkend.

De oriëntatie van aubergines wordt op dezelfde manier verkregen als bij de peren herkenning. De keuze welke aubergine er verplaatst gaat worden gaat ook op dezelfde manier als bij peren en appels. Wel is het berekenen van de oppak positie uitgebreider uitgevoerd, omdat vanwege de weinige hoeveelheid hoogteinformatie ten opzichte van peren of appels. Hierdoor bevatte meerdere punten geen informatie en er toch een zo nauwkeurig mogelijke waarde vast gesteld moet worden. De berekening van de pick positie is uitgebreid van 5 naar 9 punten. Het omrekenen naar robotcoördinaten wordt ook op dezelfde manier gedaan als de andere producten. Door het gebrek aan hoogteinformatie (zie figuur 34) ging het berekenen van een oppakpositie soms mis waardoor in plaats van een werkelijke coördinaat nul werd ingevoerd voor de afstanden op de X, Y en Z as. Het nulpunt van de ABB Flexpicker bevindt zoals bij de meeste robots in de basis van de robot. Hier kan de robot niet komen en gaf daardoor de foutmelding dat de armen in hun uiterlijke rotatie kwamen. Om dit te voorkomen wordt het berekenen van de oppakpositie herhaald totdat er correcte

informatie wordt gevonden. Bij de pack positie berekenen trad dit probleem ook op. Hier werden de producten op de zelfde plek neer gelegd als er geen coördinaat gevonden was.

Figuur 32: Peren met region growing tot een tolerantie van 7

Figuur 34: Peren met oriëntatie lijnen

Referenties

GERELATEERDE DOCUMENTEN

Omdat alleen het Park verantwoordelijk is voor de te bereiken doelen en de daarbij horende uit- voering heeft De Hoge Veluwe het jachtrecht zelf behouden.. De Stichting laat

De gesprekstechniek is natuurlijk enkel een leidraad. De vrijwilliger mag hieraan zijn eigen draai geven. Wanneer de vrijwilliger bijvoorbeeld verschillende huisbezoeken wil

Ook de rol van sociale problemen in de relatie tussen emotionele competentie en de ontwikkeling van psychische problemen (hoofdstuk 4) en de invloed van sociale vaardigheden op de

of what we consider work, the roles of women in guild-organized production and trade remains a key theme in the history of women’s work, although Goldberg calls attention to a

Het gemiddelde totale aantal sprinkhanen is in het eerste jaar nog niet significant verschillend tussen de behandelingen (grote standaardfout), maar in het tweede jaar na plaggen

Zoals eerder vermeld worden er in een teeltsysteem met de aantallen ingebogen takken en scheuten gespeeld en bekeken of de plant voldoende productie haalt. Er wordt getracht om met

Die filosofies- opvoedkundige mandaat (grondslag) van die Pretorius-kommissie was tweërlei van aard: dat “die Christelike beginsel in onderwys en op- voeding erken, openbaar en

Dit onderzoek heeft opgeleverd dat Oriëntals heel goed een warmwaterbehandeling bij 41°C kunnen verdragen mits de bollen gedurende 4 dagen bij 20°C worden bewaard voor en na de