Voorwoord Toen ik in het zesde middelbaar voor de studiekeuze kwam te staan, koos ik voor de richting master industriële wetenschappen. Tijdens mijn eerste jaar binnen de optie industrieel ontwerpen bleek de honger naar technische kennis niet gestild en besloot ik te veranderen naar elektromechanica. Na twee niet te onderschatten algemene jaren waarin de specifieke vakken beperkt bleven tot enkele uurtjes per week, kon in het derde jaar waar ik voor de optie automatisatie koos het echte werk beginnen. De vele proeven in het labo automatisering die ik tot dan van op een bewonderende afstand bekeek, werden telkens meer begrijpbaar. Wanneer echter een eindwerk moest gekozen worden kon ik niet direct iets vinden die me helemaal aansprak. De verlossing kwam tijdens het verblijf in Duitsland waar mijn collega’s en ik onze bachelor proef verdedigden op de ‘New Automation award’. Daar leerde ik Peter Kucsera kennen met zijn mobiele robot en waren de eerste contacten gelegd voor een erasmusuitwisseling. Een eindwerk in het buitenland met als onderwerp mobiele robotten zag ik wel zitten. Zo was het onderwerp van mijn eindwerk gekozen en heb ik een semester in Hongarije kunnen studeren. Dit semester was niet alleen een verrijking op het vlak van technische kennis maar ook een verrijking op sociaal en persoonlijk vlak. Ik wil ook nog enkele mensen bedanken, niet alleen de mensen die mij hebben bijgestaan bij het realiseren van mijn eindwerk maar ook de mensen die het mogelijk gemaakt hebben het eerste deel uit te voeren in Hongarije aan de Boedapest Tech. Hierbij wil ik Mevr. Van Maele Hilde ,haar collega’s van het internationaal office en Mevr. Dudás Ferencné Mária bedanken voor het verwerken van het administratieve werk. Dhr. Peter Kucsera wil ik bedanken voor de goede ontvangst en extra tijd die hij in mij gestoken heeft om mijn erasmusverblijf zo leerrijk mogelijk te maken. Daarnaast was hij altijd bereid om mij te helpen als ik met een buitenschools probleem zat in het voor mij toen onbekende Boedapest. Ik wil zeker mijn promotor Dhr. Henk Capoen bedanken want zonder hem was dit uitwisselingsproject nooit tot stand gekomen. Ik wil hem ook bedanken voor de begeleiding tijdens de realisatie van mijn eindwerk. Ook de rest van het team automatisering wil ik bedanken om me te helpen waar dat mogelijk was. Lamorco NV wil ik bedanken voor de gratis reflectorstrips die ze mij gegeven hebben. Ik wil zeker mijn vriendin Mieke Vandenbroucke bedanken want zonder haar steun zou dit eindwerk niet gelukt zijn. Ze was er altijd voor me in goede en slechte dagen ik kan altijd op haar rekenen. Ook mijn ouders wil ik bedanken voor de morele en financiële steun van mijn volledige studies. Ook aan alle anderen die mij bewust of onbewust op de een of de andere manier de goede richting uit hebben geholpen, bedankt.
I
Inhoudsopgave Voorwoord ............................................................................................................................................... I Inhoudsopgave ........................................................................................................................................ II Abstract ................................................................................................................................................... V Lijst van figuren ...................................................................................................................................... VI Lijst van tabellen.................................................................................................................................... VII Lijst van grafieken.................................................................................................................................. VII 1
Situering van het eindwerk ............................................................................................................. 1 1.1
Inleiding ................................................................................................................................... 1
1.2
Eerste versie Phoenix Contact robot ....................................................................................... 2
1.2.1 2
3
4
Positie bepaling aan de hand van een visie systeem ...................................................... 3
Hardware ......................................................................................................................................... 4 2.1
Het frame................................................................................................................................. 4
2.2
De PLC ...................................................................................................................................... 4
2.3
De Servodrives ......................................................................................................................... 4
2.4
De voeding ............................................................................................................................... 6
2.5
De Laser Measurement Sytem (LMS 100) ............................................................................... 6
2.6
Overige .................................................................................................................................... 7
Odometry ........................................................................................................................................ 8 3.1
Inleiding ................................................................................................................................... 8
3.2
Berekening van de positie aan de hand van de encoder signalen .......................................... 8
3.2.1
Rechtlijnige beweging ..................................................................................................... 8
3.2.2
Kromlijnige beweging ...................................................................................................... 9
3.2.3
On the spot turn ............................................................................................................ 10
3.3
Systematische en niet-systematische fouten........................................................................ 11
3.4
De UMBmark ......................................................................................................................... 12
3.4.1
Algemeen....................................................................................................................... 12
3.4.2
Experimentele resultaten .............................................................................................. 13
Laser Measurement System (LMS) ................................................................................................ 17 4.1
Algemene kenmerken ........................................................................................................... 17
4.1.1
Werkingsprincipe van de LMS ....................................................................................... 17
4.1.2
Scanafstand van de LMS 100 ......................................................................................... 18
4.1.3
Diameter van de laserstraal en de afstand tussen meetpunten ................................... 19 II
4.1.4
Minimumobjectgrootte ................................................................................................. 19
4.1.5
Vervuiling optische afscherming ................................................................................... 20
4.2
Meten van voorwerpen ......................................................................................................... 20
4.2.1
Filters ............................................................................................................................. 20
4.2.2
Waarden ontvangen ...................................................................................................... 21
4.2.3
Gemeten waarde voor een tweede gereflecteerde puls .............................................. 21
4.3
Veldtoepassing ...................................................................................................................... 21
4.3.1
Evaluatievelden ............................................................................................................. 21
4.3.2
Evaluatiecases ............................................................................................................... 21
4.3.3
Operatoren .................................................................................................................... 23
4.4
Ingangen en uitgangen .......................................................................................................... 23
4.4.1
Digitale ingangen ........................................................................................................... 23
4.4.2
Encoder ingangen .......................................................................................................... 23
4.4.3
Digitale uitgangen.......................................................................................................... 23
4.4.4
Uitwendige uitgangen ................................................................................................... 24
4.5
Data interface ........................................................................................................................ 24
4.5.1
Ethernet interface ......................................................................................................... 24
4.5.2
CAN ................................................................................................................................ 24
4.5.3
Seriële host interface..................................................................................................... 24
4.6
Montage van de LMS............................................................................................................. 24
4.7
In gebruik nemen en configureren ........................................................................................ 25
4.7.1 4.8
5
SOPAS ET configuratiesoftware ..................................................................................... 25
Datacommunicatie gebruikmakend van berichten ............................................................... 26
4.8.1
Opbouw van een bericht ............................................................................................... 26
4.8.2
Metingen ontvangen ..................................................................................................... 26
Lokalisatie met LMS 100 ................................................................................................................ 28 5.1
LMS data verwerken.............................................................................................................. 28
5.2
Positie bepalen ...................................................................................................................... 28
5.2.1
Reflectoren .................................................................................................................... 28
5.2.2
Rechte en cilindervormige reflectoren detecteren ....................................................... 30
5.2.3
Van Robot- naar een algemeen coördinatenstelsel ...................................................... 36
5.2.4
Corresponderende Reflectoren en nieuwe reflectoren zoeken.................................... 37
5.2.5
Updaten van de positie ................................................................................................. 41
5.2.6
Nieuwe lijnen en cirkels opslaan in vluchtig geheugen................................................. 44 III
5.3
Stockeren van de lijnen ......................................................................................................... 44
5.3.1
XML ................................................................................................................................ 44
5.3.2
Bewerken van het XML bestand.................................................................................... 45
Besluit .................................................................................................................................................... 46 Literatuurlijst ......................................................................................................................................... 47 Bijlagen 1
De drive
2
Handleiding
3
Programmacode
IV
Abstract During an Erasmussemester at the college Budapest Tech, I had the chance to work with a mobile robot or Automated Guided Vehicle (AGV) mainly made of Phoenix Contact parts. My contribution to the project, is especially located in the domain of the localization. In a typical indoor environment with a flat floor plan, localization becomes a matter of determining the Cartesian coordinates (x,y) and the orientation a of the mobile robot on a two dimensional floor plan. For determining the localization, the robot was equipped with two encoders placed on the two driven wheels and a Laser Measurement System of Sick (LMS100). The optical encoders that are mounted on both drive wheels, feed wheel increment information to the PLC, which continually updates the robot’s state using geometric equations. However, within time, odometric localization accumulates errors in an unbounded way due to wheel slippage, floor roughness and infinite sampling rate of wheel increments. The systematic errors due to uncertainty about the wheel radius and wheel base measurement were calibrated with the UMB mark test. This first part was worked out in Budapest during the Erasmussemester. After that, a method for absolute positioning was developed with the LMS 100 that was also present at the Howest. At first the LMS 100 was examined thoroughly to see what its possibilities were. After that there was searched for a manner to calculate the absolute position with the LMS 100. Hereby was taken advantage of the fact that the LMS 100 not only sent the pool coordinates of every measured point, but it also sent information about the Receive Signal Strength Identifier (RSSI). The RSSI-value gave an indication how intensely the light was reflected. During the test it turned out to be that the RSSI-value of a point descended of a reflector was so high that it was possible to isolate these points from the other points. So the reference that has been used are cylindrical- and straight reflector mounted in the environment. During the development of the program in which the position is calculated absolute, there was attempted to develop a program that is simple to use and can send information to the PLC program of the AGV with OPC-variables. Furthermore there has been searched for a way to store the information of the detected reflectors in a well-considered way. An XML-file was chosen to store the information of the detected reflectors in different areas. This can be done easily after a configuration run with a developed configuration program.
V
Lijst van figuren Figuur 1.1: Nieuwe versie Phoenix Contact robot................................................................................... 1 Figuur 1.2: Eerste versie Phoenix Contact robot ..................................................................................... 2 Figuur 1.3: Opbouw van het systeem...................................................................................................... 2 Figuur 1.4: Figuurherkenning .................................................................................................................. 3 Figuur 2.1: Frame .................................................................................................................................... 4 Figuur 2.2: Moer ..................................................................................................................................... 4 Figuur 2.3: Hoekversteviging ................................................................................................................... 4 Figuur 2.4:ILC 350 PN .............................................................................................................................. 4 Figuur 2.5: UM EN IB IL EC AR 48/ 10 A ................................................................................................... 5 Figuur 2.6: IN Procesdata ........................................................................................................................ 5 Figuur 2.7: OUT procesdata..................................................................................................................... 5 Figuur 2.8: De modulaire structuur ......................................................................................................... 6 Figuur 2.9: a) UPS, b) Batterij.................................................................................... 6 Figuur 2.10: LMS 100 ............................................................................................................................... 7 Figuur 2.11: Communicatie ..................................................................................................................... 7 Figuur 3.1: Rechtlijnige beweging ........................................................................................................... 8 Figuur 3.2: Kromlijnige beweging ............................................................................................................ 9 Figuur 3.3: On the spot turn .................................................................................................................. 11 Figuur 3.4: Onzekerheid rond wielbasis ................................................................................................ 13 Figuur 3.5: a) Tegenwijzerzin b) Wijzerzin ................................................................................. 14 Figuur 3.6: Wijzerzin pad (links) en tegenwijzerzin pad (rechts) .......................................................... 14 Figuur 4.1: Werkinsprincipe van de LMS ............................................................................................... 17 Figuur 4.2: Afstandsmeting ................................................................................................................... 17 Figuur 4.3: a) Loodrechte inval, b) inval onder een hoek, c) weerkaatsing bij een reflector................ 18 Figuur 4.4: Weerkaatsing op spiegeloppervlak ..................................................................................... 18 Figuur 4.5: Toenemende laserstraal diameter ...................................................................................... 19 Figuur 4.6: Invloed van de hoekresolutie .............................................................................................. 19 Figuur 4.7: Voorwerp kleiner dan de laserstraal ................................................................................... 20 Figuur 4.8: Principe van de veldtoepassing ........................................................................................... 22 Figuur 4.9: Welkomscherm SOPAS ET ................................................................................................... 25 Figuur 4.10: Project tree SOPAS ET ....................................................................................................... 26 Figuur 5.1: Werkwijze verwerking LMS bericht..................................................................................... 28 Figuur 5.2:Overzicht detecteren van reflectoren .................................................................................. 30 Figuur 5.3: Detectie cilinderreflector .................................................................................................... 32 Figuur 5.4: Parameters van een lijn....................................................................................................... 34 Figuur 5.5: Coördinaten transformatie LMS naar robot ....................................................................... 36 Figuur 5.6: Coördinaten transformatie robot naar kamer .................................................................... 36 Figuur 5.7: Overzicht corresponderende reflectoren zoeken ............................................................... 37 Figuur 5.8: Situatie schets corresponderende lijnen bepalen............................................................... 38 Figuur 5.9: Overzicht updaten van de positie ....................................................................................... 41 Figuur 5.10: Oriëntatie schommeling op verre afstand ........................................................................ 42 Figuur 5.11: Verdraaien onder de nieuwe hoek.................................................................................... 43 Figuur 5.12: Verplaatsing bepalen ........................................................................................................ 44 Figuur 5.13: XML-stuctuur ..................................................................................................................... 44 VI
Figuur 5.14: Configuratieprogramma .................................................................................................... 45
Lijst van tabellen Tabel 3.1: Formules voor de vier verschillende kromlijnige bewegingen ............................................. 10 Tabel 3.2: Systematisch en niet- systematische fouten ........................................................................ 11 Tabel 3.3: UMBmark resultaten voor een snelheid van 0,15m/s ......................................................... 16 Tabel 3.4: UMBmark resultaten voor een snelheid van 0,015m/s ....................................................... 16 Tabel 3.5: Nauwkeurigheid en verbetering bij een snelheid 0,15 m/s ................................................. 16 Tabel 3.6: : Nauwkeurigheid en verbetering bij een snelheid 0,015 m/s ............................................. 16 Tabel 5.1: Resultaten reflectoren .......................................................................................................... 29 Tabel 2: Resultaten noodzaak van trendlijn .......................................................................................... 35 Tabel 5.3: Stap 1 zoeken corresponderende lijnen ............................................................................... 38 Tabel 5.4: Stap 2 corresponderende lijnen bepalen ............................................................................. 39 Tabel 5.5: Sommen bij verschillende draaaihoeken ............................................................................. 39 Tabel 5.6:Lijst van lijnen waarmee positie bepaald wordt.................................................................... 39 Tabel 7: Vergelijken methoden om positie te bepalen ......................................................................... 42
Lijst van grafieken Grafiek 3.1: Positieterugkeerfouten na het beëindigen van een UMBmark experiment (2,75 x 2,75m, Bi- directioneel pad, snelheid = 0,15m/s) ............................................................................................. 15 Grafiek 4.1: De weerspiegeling in functie van de object afstand.......................................................... 19 Grafiek 5.1: RSSI-waarden van de ontvangen meetpunten voor het filteren....................................... 31 Grafiek 5.2: RSSI-waarden van de ontvangen meetpunten na de RSSI-filter ....................................... 31 Grafiek 5.3: RSSI-waarden van de ontvangen meetpunten na het filteren .......................................... 32 Grafiek 5.4: Trendlijn door de meetpunten .......................................................................................... 33
VII
1 Situering van het eindwerk 1.1 Inleiding De vereisten van moderne goederentransport goede transport en optimalisatie van navigatie van een AGV (automatic guided vehicles)) blijft steeds stijgen. Daarbij is het van belang dat de af te leggen route steeds kan veranderen. Veel gebruikte methoden zoals zoal het volgen van magnetisch draden of sporen hebben deze vereiste niet waardoor de AGV beperkt is te rijden waar de draad of spoor zich bevindt. De AGV is zeker niet in staat om voorwerpen op hun route route te omzeilen en daardoor niet handig in omgevingen waar veel voorwerpen zich bevinden en personen personen rondlopen. De vereiste voor soepele systemen is nochtans duidelijk merkbaar. Denk maar bijvoorbeeld aan automatisch magazijnen waar de AGV instaat moet zijn om op iedere positie te laden en te lossen. Als onderzoeksproject onderzoek wordt in de Boedapest Tech. gewerkt rond AGV’s. AGV . Daarbij was reeds een eerste AGV ontwikkeld die aan de hand van een digitale camera en encoder signalen zijn positie bepaalde. Dit systeem had echter zijn beperkingen naar snelheid, nauwkeurigheid, nauwkeurigheid range en intelligentie. e. Poenix Contact Hongarije was echter geïnteresseerd in de ontwikkeling van de AGV aangezien hij volledig was opgebouwd uit hun componenten. Zij besloten om de Boedapest Tech. van onderdelen te voorzien voor de bouw van een grotere, snellere en op termijn intelligentere AGV. De AGV (zie Figuur 1.1)) zal in staat moeten zijn om op beurzen rond te rijden ijden en mensen te begeleiden naar de stand van van Phoenix Contact. Mijn taak bestaat eruit het et ontwikkelen van een manier voor de lokalisatie van de nieuwe AGV in een dynamische omgeving en de eerste opstart van de AGV. AGV. Daarbij was ter beschikking de encoder signalen van de twee gedreven wielen en een Laser Measerment System (LMS 100). Met de encoder enc signalen wordt relatieve de positie bepaald terwijl de LMS gebruikt wordt voor absolute positiebepaling paling en voor de detectie van obstakels. obstakels
Figuur 1.1: Nieuwe versie Phoenix Contact robot
1
1.2 Eerste versie Phoenix Contact C robot
Figuur 1.2: Eerste versie Phoenix Contact robot
Op Figuur 1.2 en Figuur 1.3 is de opbouw van het systeem te zien. Het mobiele deel bestaat uit een driewielig voertuig. Twee van deze wielen worden aangedreven aangedreven door elk een DC motor. Op deze wielen zijn ijn encoders gemonteerd. Het derde wiel dient enkel om ervoor te zorgen dat de robot in evenwicht blijft. Met behulp van de encorder signalen wordt de positie bepaald. Deze berekening is nooit nauwkeurig. Om de positie ositie op kritische plaatsen te bepalen, werd gebruik gemaakt van een digitale camera. De camera is bevestigd boven het kritische punt de ‘oplaadplaats plaats’, om ervoor te zorgen dat de mobiele robot recht in het laadsysteem rijdt. De communicatie van het mobiele deel met de computer van de operator erator, gebeurt aan de hand van Bluetooth. luetooth. De mobiele robot was opgebouwd om deel te nemen aan de Explore new automation award 2008. Hij was instaat een geprogrammeerd pad van enkele bochten boch naar links te rijden terwijl zijn positie bepaald werd aan de hand van de encoder signalen.. Daarna reed hij achterwaarts terug richting zijn laadstation. Wanneer hij zich onder de digitale camera boven het laadstation bevond, werd zijn positie gecorrigeerd en reed hij recht het laadstation in. DIGITAL CAMERA
EMBEDDED IMAGE PROCESSING SYSTEM
BUS COUPLER EXTENDED I/O-S PROFINET CAPABLE SWITCH
POFINET
MARK ON THE ROBOT Phoenix Contact FL BLUETOOTH AP
OPERATOR COMPUTER VISU+ VISUALIZATION SOFTWARE DOCKING STATION BATTERY CHARGER
POFINET MOBILE ROBOT ILC350PN ON BOARD
CONNECTING JUNCTIONS
Figuur 1.3: Opbouw van het systeem
2
1.2.1
Positie bepaling aan de hand van een visie systeem
Het bepalen van de positie aan de hand van de camera gebeurde met een beeldverwerkingsprogramma programma die de positie bepaald van een voorgedefinieerd gedefinieerd symbool in een figuur (pijl van zwarte bol).. Deze figuur bevond zich bovenaan de robot. Het systeem bestaat uit een digitale camera en een FPGA bord b die de camera signalen via Ethernet thernet verzend naar de PC gebruikmakend van UDP pakketten. ten. Het beeldverwerkingsprogramma berekent eerst de gemiddelde lichtintensiteit van de afbeelding. In de volgende stap zal aan de pixels die een kleinere intensiteit hebben een waarde 1 toegekend worden en aan de pixels die een hogere intensiteit hebben de waarde 0. Daarna wordt een voorgedefinieerde matrix gebruikt gebruikt om de verschillende zwarte bollen in de figuur te detecteren. Op dat moment zijn de posities van voorgedefinieerde zwarte bollen gekend. De laatste stap is het berekenen van de positie en oriëntatie van de pijl gevormd door de zwarte bollen. Figuur 1.4 geeft een voorbeeld van de herkenning. De positie wordt dan via RS 232 naar de PLC verzonden.
Figuur 1.4: Figuurherkenning
3
2 Hardware 2.1 Het frame Het frame (zie Figuur 2.1)) is opgebouwd uit aluminium profielen (F - 20x20 van RK ROS E+KR I EGER). Dit maakt een eenvoudige montage van de verschillende componenten mogelijk en zorgt er tevens voor dat het frame niet te zwaar wordt. Een speciaal ontworpen moer (zie ( Figuur 2.12) die in de profielen schuift en standaard bouten, bouten maken het bevestigen van onderdelen (zzoals een DIN rail, DC motoren,..) op een eenvoudige manier mogelijk op het frame.
Figuur 2.1: Frame
Figuur 2.2: Moer
Figuur 2.3:: Hoekversteviging
Bij de opbouw van het frame wordt gebruik gemaakt van dezelfde speciale moeren in combinatie met een bout en een klein aluminium plaatje. Om extra stevigheid aan het frame te geven worden in bepaalde hoeken hoekverstevigingen (zie Figuur 2.13) geplaatst.. Deze worden door middel van een bout en een speciale moer aan het frame bevestigd.
2.2 De PLC De PLC is van het type ILC 350 PN (zie Figuur 2.4) gebaseerd op een ARM 32 en een Windows Ce operating systeem. De programma ontwikkeling is mogelijk via de speciaal ontworpen software PC WorX. De programmeringstalen worden beschreven door dee standaard IEC61131. De snelheid van de controller is 0,5 ms voor 1000 instructies. De communicatie met de controller is mogelijk via de op Ethernet gebaseerde industriële bus ProfiNet. De hoofdtaken van de controller is de communicatie met de operator en de servodrives, drives, de aansturing van actoren en de uitvoering van berekeningen met de gegevens afkomstig van aangesloten sensoren.
Figuur 2.4:ILC 350 PN
2.3 De Servodrives De gebruikte servodrives drives (Phoenix contact contac UM EN IB IL EC AR 48/10A,, zie Figuur 2.5) worden aangesloten aan een industrieel bussysteem Interbus. Deze bus is beschikbaar op de gebruikte PLC. 4
Daardoor aardoor is het niet nodig om een gateway te gebruiken. De aansluiting van de drive op de PLC gebeurt op dezelfde manier als bij de gewone uitbreidingsmodules uitbreiding modules van Phoenix Contact. De modules staan in serie en de modules worden in elkaar geschoven zodat een lange rij gevormd kan worden. Daarom wordt dit een INLINE PLC systeem genoemd. De modules communiceren met de PLC via Interbus door gebruik te maken van speciale slide connectoren.
Figuur 2.5: UM EN IB IL EC AR 48/ 10 A
De drivecommando’s rivecommando’s naar de servodrive servodrive worden verzonden via een controle woord op de lokale bus. De status van de drive kan worden verkregen via het statuswoord. Daarnaast zijn voor zowel de input als de output twee woorden beschikbaar om parameters par te lezen of te schrijven (zie Figuur 2.6 en Figuur 2.7). Via het communicatie municatiekanaal PCP worden de niet voortdurend gebruikte parameters parameter van de drive gelezen of geschreven. Eenvoudig gebruik van dit kanaal is mogelijk moge door de PCP functieblokken. De taak van n de programmeur is enkel om de juiste registers aan te spreken om de drive voor zijn toepassing in te stellen.
Figuur 2.6: IN Procesdata
Figuur 2.7: OUT procesdata
De servodrive ervodrive heeft acht verschillende werkingsmodes. werkingsmodes. Het is mogelijk om DC-motoren met of zonder borstels te gebruiken. Positie-, Positie snelheid- en koppelcontrole controle modes zijn beschikbaar voor beide types van motoren.. De snelheid kan berekend worden aan de hand van de motorvoltage. mot Zowel de snelheid als de positie ositie kunnen met een incrementele encoder en een Hall sensor berekend worden. De servodrive drive heeft zijn eigen controller en moet dus geen gebruik maken van de PLC CPU. De controller wordt ook afgestemd via het PCP kanaal. Bijvoorbeeld het et slippen van de wielen w hebben een negatief effect op de berekening van de positie via het encoder signaal (zie zie hoofdstuk 3). In dat geval moet ervoor gezorgd worden dat de motoren geleidelijk aan accelereren en decelereren door middel van het aanpassen van beide waarden. waarden. Dit kan ingesteld worden door de juiste parameters aan te spreken via PCP.. De modulaire structuur van de IB IL EC AR 48/10A servodrive servo wordt weergegeven in Figuur 2.8. 5
Figuur 2.8: De modulaire structuur
2.4 De voeding De voeding van de mobiele robot gebeurt via een batterij (QUINT-BAT/24DC/12AH ( BAT/24DC/12AH, zie Figuur 2.9b) in combinatie met Uninterruptible Power Supply (UPS QUINT-DC DC-UPS/24DC/20, zie Figuur 2.9a). De UPS is oorspronkelijk ontworpen als buffer bij uitval van de voeding en wordt bevestigd op een DIN N rail. Deze is ook ideaal om als voeding te gebruiken op een mobiele opstelling. De UPS zorgt ervoor dat de loodbatterij een lange levensduur zal hebben door een professionele batterijmanagement. Dit wordt bereikt door een automatische aanwezigheidscontrole aanwezigheidscontro (elke minuut), automatische kwaliteitscontrole (één keer per week), temperatuurbewuste tempera bewuste oplading, een elektrische overstroom- en kortsluitbeveiliging.
Figuur 2.9::
a) UPS,
b) Batterij
Indicatieleds leds geven de status van de batterij weer. Het is ook mogelijk om deze status via digitale inputs in te lezen in de PLC om te integreren in de software.
2.5 De Laser Measurement ment Sytem (LMS 100) De LMS 100 (zie Figuur 2.10)) is een optisch lasermeetsysteem dat nauwkeurig de omtrek van zijn omgeving in een vlak afscant met de hulp van laserstralen. De LMS meet zijn omgeving in tweedimensionale poolcoördinaten over een gebied van maximaal 270°. De scanner zal gebruikt worden om de lokalisatie van de robot in een dynamisch omgeving mogelijk te maken via de verkregen poolcoördinaten. en. Daarnaast zullen er evaluatievelden gebruikt worden die bepaalde gebieden controleren troleren volgens een ingestelde strategie. 6
Enkele specificaties: • • • • • •
De maximale meetafstand : 20m Hoekstapresolutie oekstapresolutie: 0,25° en 0,50° Rotatiefrequentie otatiefrequentie: 25 of 50 Hz Data interfaces:: CAN, Ehternet, RS-232 RS Tot 10 Evaluatievelden Beschermingsklasse IP 65
Figuur 2.10: LMS 100
Aan de hand van een configuratieprogramma kan de gewenste configuratie gemaakt worden. Hierbij kan gebruik uik gemaakt worden van de communicatie interfaces RS-232 RS 232 en Ethernet. Ook worden enkele metingen gevisualiseerd. Na het configureren kunnen de waarden via commandoberichten opgevraagd worden.
2.6 Overige Om te communiceren met een vaste computer die instructies instructies aan de robot kan geven, wordt er draadloos gecommuniceerd via een WLAN AP. Daarnaast is er op de robot nog een industriële PC (zie Figuur 2.11) voorzien die als functie heeft om eventuele extra berekeningen uit te voeren en een visualisatie zal weergeven.
Operator
Mobiele robot Figuur 2.11: Communicatie
7
3 Odometry 3.1 Inleiding Eén van de belangrijkste taken van een autonome robotnavigatie is de lokalisatie bepalen. Op een platte vloer bestaat deze lokalisatie uit het bepalen van de Cartesiaanse coördinaten coör (x,y) en de oriëntatie a van de robot op een twee dimensioneel vloerplan. Voor een robot op wielen is ‘odometry’ (ook gekend als ‘dead-reckoning’) ‘dead ) één van de belangrijkste methoden om de positie te bepalen. Odometry maakt gebruik van zeer eenvoudig te installeren insta en goedkope incrementele encoders. Bij het voortbewegen van de robot zal het encodersignaal van de twee gedreven wielen gebruikt worden om de lineaire verplaatsing van de robot te bepalen, gebruikmakend van geometrische metrische vergelijkingen, waarmee de positie iedere cyclus opnieuw geüpdatet wordt. word Maar odometry lokalisatie stapelt bij iedere cyclus kleine fouten op, waardoor na een bepaalde tijd de lokalisatie volledig verkeerd is. Deze kleine fouten worden veroorzaakt door systematisch en nietniet systematische fouten. Om de systematische fouten te verkleinen wordt er een UMB-mark UMB test uitgevoerd ontwikkeld door Borenstein en Feng [1][2].
3.2 Berekening van de positie aan de hand van de encoder signalen Er bestaan drie types bewegingen: bewegingen • dee snelheid van beide wielen is even groot (rechtlijnige beweging), beweging) • de snelheid van één n van de wielen w is groter dan de andere (kromlijnige kromlijnige beweging), beweging) • dee snelheid van beide wielen is even groot maar tegengesteld (on n the spot turn). turn) In een typische differential drive mobiele robot zijn de incrementele encoders bevestigd op de d twee gedreven wielen om de wielresolutie te tellen. Na een korte tijdsinterval interval t geven beide encoders een aantal pulsen N1 en N2. Aan de hand hiervan kan de afgelegde afstand van de beide wielen berekend worden.
Met: S1/2= De afstand afgelegd door wiel 1 of 2 N1/2= Aantal pulsen van de encoder van wiel 1 of 2 na interval t Dn = De nominale diameter van de wielen c = Encoderresolutie resolutie in pulsen per omwenteling i= Verhouding erhouding van de tandwielkast 3.2.1
Rechtlijnige beweging
) (3.3)
Figuur 3.1: Rechtlijnige beweging
8
met:
3.2.2
Kromlijnige beweging
Figuur 3.2: Kromlijnige beweging
De positie wordt berekend door gebruik te maken van een benadering. Dit mag, mag, aangezien bij iedere cyclus de positie wordt geüpdatet. Indien aangenomen wordt dat S1 en S2 rechtlijnig zijn, worden twee gelijkvormige ige driehoeken bekomen. Omdat Om f een zeer kleine hoek zal zijn, kan aangenomen worden dat cosf≈1, sinf ≈ f,, tanf≈f tan waarbij f uitgedrukt is in radialen. Na het uitvoeren van enkele eenvoudige berekeningen, rekening houdend houd met de benaderingen, worden volgende uitdrukkingen S − S2 bekomen: (3.4) ϕ= 1 L β = α +ϕ
r=
s1
ϕ
(3.5)
(3.6)
L ϕ V = 2 ⋅ r + sin 2 2 ϕ x 2 = x1 + V ⋅ cos + α 2
ϕ y 2 = y1 + V ⋅ sin + α 2
(3.7)
(3.8)
(3.9)
Bij kromlijnige bewegingen moet erop gelet worden dat de positie en oriëntatie op de juiste manier wijzigen. Er zijn vier verschillende kromlijnige bewegingen. In Tabel 3.1 kunnen de formules voor de verschillende kromlijnige bewegingen afgelezen worden. Hierbij is er vanuit gegaan gegaan dat een positieve 9
hoek in tegenwijzerzin is. Kijkend ijkend naar de achterkant van de robot zorgt het linkse wiel voor verplaatsing S1 en het rechtse voor S2. Tabel 3.1:: Formules voor de vier verschillende kromlijnige bewegingen
Snelheid is positief S1 < S2
S 2 − S1 L β = α −ϕ
ϕ=
r=−
S1
ϕ
Snelheid is positief S1 > S2
S 2 − S1 L β = α −ϕ
ϕ=
r=
S2
ϕ
L ϕ V = 2 ⋅ r + sin( − ) 2 2 ϕ x 2 = x1 + V ⋅ cos ( − ) + α 2
L ϕ V = 2 ⋅ r + sin 2 2 ϕ x 2 = x1 + V ⋅ cos ( − ) + α 2
ϕ y 2 = y1 − V ⋅ sin (− ) + α 2
ϕ y 2 = y1 − V ⋅ sin (− ) + α 2
Snelheid is negatief S1 < S2
Snelheid is negatief S1 > S2
S 2 − S1 L β = α −ϕ
ϕ=
r=
S2
ϕ
S 2 − S1 L β = α −ϕ
ϕ=
r=−
S1
ϕ
L ϕ V = 2 ⋅ r + sin( − ) 2 2 ϕ x 2 = x1 − V ⋅ cos (− ) + α 2
L ϕ V = 2 ⋅ r + sin 2 2 ϕ x 2 = x1 − V ⋅ cos (− ) + α 2
ϕ y 2 = y1 + V ⋅ sin (− ) + α 2
ϕ y 2 = y1 + V ⋅ sin (− ) + α 2
3.2.3 On the spot turn Een ‘on the spot turn’ is een speciale kromlijnige beweging waarbij r = L/2. De positie wijzigt in het ideale geval niet.. Enkel de oriëntatie zal veranderen. 10
Figuur 3.3: On the spot turn
(3.10) (3.11)
3.3 Systematische en niet-systematische niet fouten Odometry is gebaseerd op geometrische formules die eenvoudig geïmplementeerd kunnen worden en die gebruik maken van incrementele encoders. e Odometry dometry is ook gebaseerd op de veronderstelling dat de wielresolutie resolutie kan getransformeerd getransformeer worden naar een lineaire relatieve verplaatsing. Dit is slecht gelimiteerd geldig. Voorbeeld het extreme geval waarbij de robot slipt over een olievlek. Er zijn verschillend oorzaken die ervoor kunnen zorgen dat de berekende positie niet correct is. Deze oorzaken worden verdeeld in twee categorieën: systematisch en niet-systematische niet systematische fouten (zie Tabel 3.2). Tabel 3.2: Systematisch en niet- systematische fouten
Systematische fouten Ongelijke wieldiameters
Niet-systematische fouten Rijden over een oneffen vloer
Het gemiddelde van n de werkelijke wieldiameter Rijden over onverwachte objecten op de vloer is verschillend met de nominale wieldiameter De werkelijke wielbasis verschilt met de Het slippen van de wielen door: door nominale wielbasis • een gladde vloer, Foute plaatsing van de wielen • te snel accelereren, • te snel draaien, Eindige encoderresolutie • externe xterne krachten (zoals opheffen van de robot en op een andere plaats Eindige encoder bemonsteringssnelheid neerzetten).
De twee meest voorkomende dominante systematische fouten fout worden veroorzaakt door ongelijke wieldiameter, uitgedrukt door Ed en een onzekere effectieve afstand tussen de wielbasissen uitgedrukt door Eb. Deze fouten zijn afhankelijk van de bouw van de robot en veranderen niet tijdens hett rijden. Door het meten van deze fouten kan de odometry verbeterd worden. worden Ed en Eb zijn dimensieloze waarden, die worden uitgedrukt als fracties van de nominale waarde. 11
met DR en DL de werkelijke diameter van respectievelijk de rechter- en linkerwiel
De nominale verhouding tussen beide wielen is natuurlijk één voor het kalibreren.
met b de wielbasis
3.4 De UMBmark 3.4.1 Algemeen ‘University of Michigan Benchmark test’ voor mobiele robotten bestaat uit een aantal runs, waarbij de robot geprogrammeerd is om een vierkant pad te rijden met zijde Z. Het pad zal de robot terug brengen naar zijn startplaats, maar door odometryfouten en controllerfouten zal dit niet de exacte startplaats zijn. De experimenteerder meet de absolute positie (xabs,yabs) voor en na de run, gebruikmakend van een referentie. Deze absolute posities worden dan vergeleken met de berekende positie via odometry. Het resultaat levert een koppel van terugkeerpositiefouten (Єx, Єy). Єx= xabsoluut -xberekend (3.12) Єy= yabsoluut -yberekend (3.13) Dit experiment en de bijhorende metingen worden vijf keer uitgevoerd in wijzerzin en tegenwijzerzin. Het principe van de UMBmark procedure wordt gedetailleerd uitgelegd in [Borenstein and Feng, 1995a]. Bij het afleiden van de formules werd uitgegaan van twee types fouten. De eerste soort fouten: ongelijke diameters, zorgen voor fouten tijdens het rijden van de zijdes (curve in plaats van rechte) en de tweede soort: de onzekere wielbasis zorgt dat de robot meer of minder dan 90°draait. Na het uitvoeren van deze procedure worden vijf terugkeerpositiefouten (Єxi, Єyi) voor de wijzerzin procedure en vijf voor de tegenwijzerzin richting bekomen. Indien dit geplot wordt, zal een gelijkaardige figuur bekomen worden zoals in Grafiek 3.1. (Merk op dat de terugkeerposities in twee te onderscheiden gebieden worden gegroepeerd een gebied van wijzerzin punten en een van tegenwijzerzin punten). Door het nemen van het gemiddelde van de x en y componenten voor beide gebieden met de formules: / ∑ ,/
!/ ∑ !,/
(3.14) (3.15)
wordt het effect van de niet–systematisch fouten verkleind die de verspreiding van de terugkeerposities veroorzaken. Met deze twee paren kunnen de correctiefactoren cb voor de wielbasis, cl voor de linkse wieldiameter en cr voor rechtse wieldiameter bekomen door onderstaande formules. ,* * + 0 - + ,0 , +./- +1 ./
" #$%&''$('$) 2 #$%&''$('$)
.* * + 0 - + .0 , +./- +1 ./
(3.16) (3.17)
12
(3.18)
(3.19) (3.20) (3.21)
De nauwkeurigheid eid van de Odometry voor systematische fouten wordt uitgedrukt door (3.22)
3.4.2 Experimentele resultaten Het experiment werd uitgevoerd met de Phoenix Contact C robot. Om slippen van de wielen te vermijden werd de test uitgevoerd bij lage snelheid van 0,15 m/s en 0,015m/s. Voor en na het draaien (on-the-spot) spot) komt de robot tot volledige stilstand. Hij maakt dus vier rotaties van 90 graden. De ongekalibreerde waarden zijn opgemeten met een schuifmaat en een liniaal: liniaal
,
b=bnominaal=290,0 mm en Dnominaal= 80,0mm. Bij het zien van Figuur 3.4 4 kan direct worden opgemerkt dat er een grote ote onzekerheid bestaat over de wielbasisafstand tussen de wielen. Ze hebben geen puntcontact maar een lijncontact. Doordat ze uit rubber geproduceerd zijn, zijn is er een grote kans dat ze geen gelijkee afmetingen hebben en door ongelijke belasting meer of minder mind ingedrukt worden.
Figuur 3.4: Onzekerheid rond wielbasis
De meting werd uitgevoerd over een vierkant met zijde 2,75m. Bij het uitvoeren van de test werd gebruik gemaakt van een visual basic programma die waarden tijdens de run logt en een visualisatie maakt van het afgelegde pad. De berekeningen gebeuren aan de hand van matlab. In Figuur 3.5 worden de resultaten van drie verschillende runs getoond.. De punten geven de eindpositie van de robot weer. Hierbij werd vertrokken van de ongekalibreerde waarden (groen), daarna werden de correctiefactoren toegevoegd aan de berekeningen in een PC worX programma (rood) en tenslotte enslotte werden op dezelfde manier de correctiefactoren berekend en bijgevoegd bij de al aanwezige correctiefactoren (blauw). Er valt op te merken dat niet alleen de berekeningen volledig fout zijn bij de eerste run maar dat de robot helemaal geen vierkant pad aflegt en er een groot verschil bestaat tussen een wijzerzin en een tegenwijzerzin uitvoering. Het voordeel van de UMBUMB mark test is dat na een run zelf kan geredeneerd worden hoe de correctiefactoren factoren de berekeningen moeten beïnvloeden.
13
Figuur 3.5::
a) Tegenwijzerzin
b) Wijzerzin
3.4.2.1 Analyse
Figuur 3.6 6: Wijzerzin pad (links) en tegenwijzerzin pad (rechts)
Bij wijzerzin: Naa het rijden van de eerste zijde staat de robot onder een hoek b door de ongelijke wielen, maar de berekende waarde f is nog steeds ± nul.. De robot heeft in feite een curve gereden naar links maar er werd berekend dat hij rechtdoor ging. Vervolgens draait de robot te weinig (door de onzekere wielbasisafmeting)) en rijdt vervolgens opnieuw niet een rechte maar een curve naar links en dat gaat zo door tot hij aangeeft zijn startpunt bereikt te hebben.. De fouten bij wijzerzin stapelen zich op, vandaar de grote fout (zie Figuur 3.6).
14
Bij tegenwijzerzin: Maakt de robot ook een curve naar links, vervolgens moet ook naar links gedraaid worden. De robot draait te weinig, maar door het feit dat hij al b graden gedraaid is naar links, staat de robot min of meer in de goede oriëntatie om de volgende zijde te starten. De fouten compenseren elkaar in tegenwijzerzin. Hierdoor wordt een minder grote positieterugkeerfout verkregen (zie Figuur 3.6). Hieruit kan geconcludeerd worden dat het linkse wiel kleiner is dan het rechtse wiel en in combinatie met vergelijking 3.4 kan afgeleid worden dat de wielbasis te klein is. 3.4.2.2 Resultaten Na het opmeten en het bereken van de positieterugkeerfouten, wordt Grafiek 3.1 bekomen, waarbij duidelijk te zien is dat er een enorme verbetering heeft plaatsgevonden. Ook visueel kon goed worden waargenomen dat er een duidelijke verbetering plaatsvond. Grafiek 3.1: Positieterugkeerfouten na het beëindigen van een UMBmark experiment (2,75 x 2,75m, Bi- directioneel pad, snelheid = 0,15m/s)
Positieterugkeerfouten 500
0 -1000
-500
0
Y-as (mm)
-500
500
1000 Voor calibratie WZ Voor calibratie TWZ
-1000
Na calibratie TWZ Na calibratie WZ
-1500
Na 2de calibratie WZ Na 2de calibratie TWZ
-2000
-2500 X-as (mm)
15
In onderstaande tabellen kunnen de bekomen resultaten gelezen worden. Tabel 3.3: UMBmark resultaten voor een snelheid van 0,15m/s
Meting #
cb
cl
cr
a (°)
1 2 3
1,0273 1,0273*1,0105 = 0,0381 0,0381*0,9928=1,0307
1,0074 0,9926 4,78 1,0074*1,0037=1,0111 0,9926*0,99625=0,9888 1,87 1,0111*1,0003=1,0114 0,9888*0,9997=0,9885 -1,30
b (°) 8,10 4,07 0,37
Tabel 3.4: UMBmark resultaten voor een snelheid van 0,015m/s
Meting #
cb
cl
cr
a (°)
b (°)
1 2 3
1,0220 1,0320 1,035
1,0004 1,0007 1,0010
0,9996 0,9993 0,9999
3,87 1,74 0,55
0,44 0,35 0,40
Tabel 3.5: Nauwkeurigheid en verbetering bij een snelheid 0,15 m/s
Experiment # 1 2 Totaal
Emax,sys voor [mm] 1896 835
Emax,sys na[mm] 835 226
verbetering 2,27 3,69 8,4
Tabel 3.6: : Nauwkeurigheid en verbetering bij een snelheid 0,015 m/s
Experiment # 1 2 Totaal
Emax,sys voor [mm] 601 295
Emax,sys na[mm] 295 142
verbetering 2,03 2,07 4,2
3.4.2.3 Besluit Er is een duidelijke verbetering merkbaar. Maar een snelheidsafhankelijke factor zorgt ervoor dat de correctiefactoren voor de wielen bij de twee metingen niet overeenkomen. Vermoedelijk is de snelheidsafhankelijke factor het slippen van het linkse wiel bij hogere snelheden. Indien een meer betrouwbare lokalisatie moet bekomen worden zal het nodig zijn om voor elke gebruikte snelheid de correctiefactoren te bepalen. Ook het onderzoeken van de oorzaak van het slippen van het linkse wiel kan uitkomst bieden, dit is een louter mechanisch aspect.
16
4 Laser Measurement System (LMS) 4.1 Algemene kenmerken 4.1.1 Werkingsprincipe van de LMS De LMS is een elektro-optisch laser meetsysteem dat nauwkeurig de omtrek van zijn omgeving in een vlak afscant met de hulp van laserstralen [4].. De LMS meet zijn omgeving in tweedimensionale poolcoördinaten over een gebied van maximaal 270 graden. De maximale afstand die nauwkeurig kan n gedetecteerd worden is 20 meter.
Figuur 4.1: Werkinsprincipe van de LMS
Afstandsmeeting De LMS straalt pulserende laserstralen uit met een laserdiode. Indien de laserpuls een voorwerp of een persoon raakt,, dan wordt het door zijn oppervlakte weerspiegeld. De weerspiegeling wordt gedetecteerd in de LMS via een fotodiode. De afstand tot het object wordt berekend door het meten van de tijd tussen het uitzenden en het ontvangen van de laserpuls. Vervolgens wordt wor deze vermenigvuldigd met de voortplantingssnelheid van de lichtstraal.
Verzonden puls ontvangen puls Figuur 4.2: Afstandsmeting
Richtingsmeeting De opgewekte laserstralen door de LMS worden via een roterende roterende spiegel naar buiten gestraald, zodat de omgeving op een cirkelvormige manier gescand wordt. De stralen worden op regelmatige hoekstappen van 0,25 of 0,50 graden uitgezonden, gebruikmakend van een hoekencoder. De LMS scant met een frequentie van 25 of 50 Hertz. Invloed van de voorwerpoppervlakte op de metingen Het ontvangen signaal van een perfect diffuus reflecterend wit oppervlak komt overeen met een weerkaatsing van 100 procent. Dit heeft als resultaat dat de weerkaatsing van oppervlakten zoals spiegels en reflectoren meer is dan 100 procent aangezien Deze voorwerpen het licht beter en gerichter weerkaatsen. De meerderheid van de oppervlakken weerspiegelt de laserstaal verspreid in alle richtingen. De weerspiegeling van de laserstraal zal dus afhangen afhangen van de oppervlaktestructuur en de kleur. Lichte oppervlakten weerspiegelen de laserstraal beter dan donkere oppervlakten en dit zal een invloed hebben op de maximale detecteerbare afstand van de oppervlakte.
17
Figuur 4.3:: a) Loodrechte inval, inva b) inval onder een hoek, c) weerkaatsing eerkaatsing bij een reflector
De weerspiegelingshoek is dezelfde als de stralingshoek. Wanneer de laserstaal loodrecht op een oppervlakte invalt, wordt de energie optimaal weerspiegeld (zie Figuur 4.3 a). ). Indien de staal invalt onder een hoek (zie Figuur 4.3 b) zal een corresponderende energieenergie en afstandsvermindering het gevolg zijn. Als de weerspiegelde gelde energie groter is dan 100 procent, wordt de betreffende teruggekaatste straal niet diffuus in alle richtingen gereflecteerd, maar in één specifieke richting (zie Figuur 4.3 c). Het resultaat is een grotere hoeveelheid energie die door de LMS ontvangen wordt. Reflectoren hebben deze eigenschappen. Bij spiegeloppervlakten wordt de laserstaal volledig weerkaatst onder een hoek van (180°-a). (180° Zodat het et mogelijk is dat i.p.v. dat de spiegel gedetecteerd wordt, het voorwerp waarop de teruggekaatste straal terecht komt, gedetecteerd wordt. Daardoor is de spiegel onzichtbaar voor de LMS.
Figuur 4.4: Weerkaatsing op spiegeloppervlak
4.1.2 Scanafstand afstand van de LMS 100 De maximale scanafstand van de LMS is afhankelijk van de weerkaatsing van het te detecteren object. Hoe beter de oppervlaktereflectie, hoe groter de scanafstand van de LMS. Grafiek 4.1 geeft de relatie weer tussen en de weerkaatsing en de objectafstand. objectafstand. Het is duidelijk te zien dat wanneer er verre objecten moeten worden gedetecteerd, er gezorgd moet worden voor een oppervlakte met goede reflecterende eigenschappen. Voor een afstand van 20 meter moet dit 12,5 procent bedragen.
18
Grafiek 4..1: De weerspiegeling in functie van de object afstand
4.1.3
Diameter van de laserstraal lasers en de afstand tussen meetpunten
Een toenemende afstand van een object tot de LMS zal de diameter van de laserstraal laser doen toenemen. Deze afstandsafhankelijke diameter kan berekend worden door: de afstand (mm) x 0,015rad + 8mm. Toenemende Laserstraaldiamter
De laserstraaldiameter bij lancering is 8mm Figuur 4.5: Toenemende laserstraal diameter
Met het toenemen van de afstand van een object tot de LMS zal de afstand tussen de verschillende laserstralen ook toenemen. Deze is afhankelijk van de hoekresolutie: 0,25 of 0,50 graden (zie Figuur 4.6). ). Met een grovere resolutie is de afstand groter, met een fijnere resolutie is de afstand kleiner. De afstand tussen de meetpunten wordt berekend als volgt: .
Figuur 4.6: Invloed van de hoekresolutie
4.1.4 Minimumobjectgrootte Voorwerpen die kleiner zijn dan de diameter van de laserstaal kunnen niet alle energie van het laserlicht reflecteren ( het gedeelte dat niet weerspiegeld wordt gaat verloren zie Figuur 4.7). Om betrouwbaar een object te detecteren moet een laserstraal volledig op het object terecht komen. Een voorwerp is alleen betrouwbaar gedetecteerd als hij minstens even breed is als de afstand tussen de laserstralen plus de laserstraaldiameter. lase
19
Figuur 4.7: Voorwerp kleiner dan de laserstraal
4.1.5 Vervuiling optische afscherming De LMS heeft een optische afscherming, afscherming, die dient als bescherming voor de bron van de laserstraal. laserstraal Deze afscherming rming kan vervuild worden, waardoor dee uitgestraalde en ontvangen energie verminderd wordt.. Dit heeft als gevolg dat op een bepaald graad van vervuiling sommige objecten helemaal niet meer zullen gedetecteerd worden. Om dit te vermijden wordt de vervuilingsgraad vervuiling van de afscherming continu gemeten terwijl het toestel in gebruik gebruik is. Voor een zeker graad van vervuiling wordt een waarschuwing gegenereerd. gegenereerd Indien de vervuilingsgraad daarna nog stijgt, dan geeft de LMS een fout weer en stop de LMS LM automatisch met meten. Afhankelijk van de toepassing kan gekozen worden voor verschillende meetstrategieën om de vervuiling van de afscherming op te meten.
4.2 Meten van voorwerpen 4.2.1 Filters De LMS heeft digitale filters die dienst doen als werking en optimalisering van de gemeten gem afstandwaarden. Het is mogelijk om een fog filter, een hardware blanking window filter, een n-pulsen to-1-pulse pulse filter, een particle filter en een mean filter te gebruiken. Fog filter De fog filter onderdrukt mogelijke verblinding veroorzaakt door mist. mist. De LMS wordt minder gevoelig ge in de dichte omgeving (tot maximaal imaal 4m) door de mistfilter. hardware blanking window filter Door middel van een verblindingsgebied wordt een volledig gebied rond de LMS verblind. Hierdoor zal de LMS enkel waarden doorgeven vanaf een bepaalde afstand. Het verblindingsgebied verblinding kan worden ingesteld van 1 tot 15 meter. m N-pulse-to-1-pulse filter Als twee pulsen worden gereflecteerd door twee voorwerpen gedurende één n meting (bijvoorbeeld ( door het invallen op regendruppels of hoeken) dan zal de filter het eerste ontvangen signaal verwijderen. Particle Filter Deze ze filter is een toepassingsfilter en werkt in het toepassingsveld, veld, niet bij het opmeten van voorwerpen. De Particle filter wordt gebruikt in een stoffige omgeving of in het geval van regen of sneeuwval om storing veroorzaakt door een stofdeeltje, druppels of sneeuwvlokken weg te filteren. Mean filter De gemiddelde filter werkt met de output data, niet in het toepassingsveld.. Als de mean filter wordt geactiveerd, wordt het gemiddelde elde genomen van een geconfigureerd aantal scans. scan Dit gemiddelde wordt doorgezonden, waardoor minder data doorgezonden wordt.
20
4.2.2 Waarden ontvangen Het ontvangen van de waarden afkomstig van de LMS gebeurt via één van de aanwezige interfaces RS232 of Ethernet TCP/IP. De LMS laten starten met meten kan gebeuren op twee manieren: via de SOPAS configuratiesoftware of via het sturen van een startbericht. Na het versturen van het startbericht heeft de LMS even tijd nodig om in de ‘ Ready for measurement’ mode te komen. Daarom is het aan te raden om de status van de LMS op te vragen alvorens een aanvraag voor data te verzenden. Wanneer gewerkt wordt met deze berichten kan opgemerkt worden dat de LMS de waarden doorzendt over dezelfde interface als deze gebruikt bij de aanvraag om te starten. Het is enkel mogelijk om via ethernet TCP/IP real-time data te ontvangen. Ofwel wordt één meting aangevraagd ofwel ontvangt men alle metingen tot een stop-bericht verzonden wordt. 4.2.3 Gemeten waarde voor een tweede gereflecteerde puls De LMS meet ook een tweede gereflecteerde puls. Als dit voorkomt, wordt dit ook meegezonden in de verzonden waarden. Het meten van twee pulsen kan voorkomen als de laserstraal op een regendruppel invalt en een deel van de energie weerkaatst, een tweede puls komt van het werkelijke voorwerp die de overige energie weerkaatst heeft. Het kan bijvoorbeeld nuttig zijn bij hevige regenval om de waarden van de tweede puls in rekening te nemen in het verwerkingsprogramma. Deze eigenschap kan ook gebruikt worden om te meten door een venster. Meten door een venster Bij het meten door een venster komen verschillende lichtreflecties voor. Een eerste lichtreflectie wordt veroorzaakt door het venster zelf door krassen of vervuiling op het venster. De tweede oorzaak zijn de objecten die naast of achter de LMS staan die weerspiegeld worden op het venster. Deze voorwerpen moeten dus beschut worden.
4.3 Veldtoepassing 4.3.1 Evaluatievelden Met behulp van de geïntegreerde veldtoepassing evalueert de LMS tot tien evaluatievelden binnen zijn onderzoeksgebied. Deze veldtoepassing voorziet een syteem van botsingsbescherming, wat kan gebruikt worden bij bewaking van gebouwen of bij toegangscontrole. De evaluatievelden kunnen getekend worden gebruikmakend van SOPAS ET. De evaluatievelden kunnen zowel rechthoekig of polygoon van vorm zijn. Deze vormen kunnen raken aan de LMS of kunnen zich bevinden op een contante afstand van de LMS of dynamisch zijn (d.w.z. dat de lengte veranderd met de gemeten snelheid gebruikmakend van een encoder). 4.3.2 Evaluatiecases Er kunnen tot tien evaluatiecases worden gedefinieerd. Een evaluatiecase bestaat uit: • één van de tien evaluatievelden, • één evaluatiestrategie, • de responstijd van de output, • éen van de drie outputs die beïnvloed wordt, • soms maximum twee ingangen die de evaluatiecase activeren.
21
Figuur 4.8: Principe van de veldtoepassing
4.3.2.1 Evaluatiestrategieën Pixelevaluatie De LMS evalueert het volledige gebied van het evaluatieveld. Iedere laserstraal wordt opgenomen in de evaluatie. Indien een voorwerp het veld binnengaat, wordt dit resultaat naar een bepaalde output, aangeduid tijdens het configureren, verstuurd. Blanking De LMS evalueert het volledige gebied van het veld. Maar er wordt gebruik gemaakt van een ‘blankingg ‘object van een bepaalde grootte. Een voorwerp wordt enkel gedetecteerd als het groter is dan de blanking die geconfigureerd werd. Contour De LMS evalueert de aanwezigheid van een contourlijn die zich permanent en volledig in het evaluatie veld moet bevinden. nden. Hiermee kan bijvoorbeeld gedetecteerd worden of de positie van de LMS veranderd is of een deur geopend is. Met blanking kan een bepaald tekort aan contourlijn worden ingesteld.
22
I/O operator Met de I/O operator kan de input van de LMS met een output verbonden worden. 4.3.2.2 Responstijd Een bepaald tijdsinterval moet gedefinieerd worden bij de evaluatiestrategieën. Bij de Pixel en blankingevaluatie bepaalt deze tijd hoelang een voorwerp zich minstens in het veld moet bevinden vooraleer het zijn uitgang aanstuurt. Bij de contourevaluatie geeft dit tijdsinterval de minimale duur weer dat er een contourlijnovertreding moet plaatsvinden vooraleer er een uitgang aangestuurd wordt. 4.3.2.3 Manipulatiepreventie Verblinding van de LMS kan ervoor zorgen dat tijdens de pixelevaluatie het evaluatieveld, die zich op een afstand van de LMS bevindt niet langer gecontroleerd wordt. Om dit te voorkomen kan de functie Tamper Protection geconfigureerd worden. Indien bij blanking het veld op een afstand gelegen is van de LMS kunnen kleine objecten in de dichte nabijheid van de LMS een grote schaduw in het te controleren veld creëren. Door de manipulation prevention verspringt de LMS naar het volgende evaluatieveld wanneer een object dat kleiner of gelijk is aan de blanked object grootte voor de laseropening komt. 4.3.2.4 Negating the result Bij negating van het resultaat stuurt het evaluatieveld omgekeerd de uitgang aan. De uitgang wordt bijvoorbeeld aangestuurd als de evaluatieveld leeg is of als de contour niet aangetast is. Dit is niet hetzelfde als een actieve hoge of lage uitgang! 4.3.3 Operatoren Er kunnen operatoren worden geselecteerd die de waarde van een uitgang helpen bepalen wanneer er meerdere evaluatiecases een uitgang beïnvloeden. Hierbij kan gekozen worden voor OR en AND operatoren.
4.4 Ingangen en uitgangen 4.4.1 Digitale ingangen De LMS heeft twee digitale ingangen. Deze ingangen kunnen evaluatiecases in- of uitschakelen. Met deze ingangen kunnen de uitgangen ook worden gereset. 4.4.2 Encoder ingangen De LMS heeft twee digitale ingangen voor een encoder. Met de hulp van de encoder puls kan de grootte van dynamische velden veranderd worden. Bijvoorbeeld om het veld die gebruikt wordt om te controleren of de AGV nergens tegen rijdt, snelheidsafhankelijk te maken. In stationaire toestand is het veld even groot als wanneer hij geconfigureerd werd. De grootte neemt constant toe met de snelheid tot dat de grootste fysieke omvang van het veld bij de maximale snelheid bereikt wordt. 4.4.3 Digitale uitgangen De uitgangen kunnen zowel actief hoog als actief laag staan. Standaard staan ze ingesteld als actief hoog en worden de uitgangen direct gereset. Het is ook mogelijk om de uitgangen langer te activeren tot maximaal 10s om bijvoorbeeld een geluidsignaal te activeren of om de uitgang door te zenden 23
naar een PLC. Een uitgang kan ook gereset worden via een ingang. De uitgang wordt dan enkel gereset als de betreffende ingang geactiveerd wordt. 4.4.4 Uitwendige uitgangen Een CAN module kan worden gebruikt om de digitale uitgangen uit te breiden. De uitwendige uitgangen hebben dezelfde functionaliteit als de digitale uitgangen op de LMS.
4.5 Data interface De LMS heeft drie verschillende data interfaces. 4.5.1 Ethernet interface Via de ethernet interface kan de LMS geconfigureerd worden en data ontvangen worden via ethernet TCP/IP. Het is enkel mogelijk om de gemeten waarden van de scan realtime te ontvangen via deze interface. De fabriekssettings zijn als volgt. • TCP/IP adres: 192.168.0.1 • Subnet mask: 255.255.255.0 • TCP poort: 2111 4.5.2 CAN De LMS ondersteunt de CAN standard 2.0A. De CAN interface ondersteunt datatransmissie van 10bit/s en 1Mbit/s. Om datacommunicatie mogelijk te maken via CAN moet de LMS geconfigureerd worden zodat hij kan communiceren met de host. De volgende parameters kunnen worden ingesteld: • Baud rate van de CAN bus • ID van de LMS in CAN Deze interface wordt gebruikt voor de uitwendige uitgangen. 4.5.3 Seriële host interface De seriële host interface is een RS-232 interface. De host interface staat toe om de LMS te configureren en gelimiteerde meetwaarden te lezen (niet realtime). De fabriek settings zijn als volgt: • 57600 Baud • 8 data bits • 1 stop bit • Geen pariteitsbit Als men de parameters van deze interface verandert met dit interface zal de verbinding nadien verbroken worden, er moet dan opnieuw gescand worden naar de LMS in SOPAS ET. Daarnaast is er nog een seriële auxiliary interface. Deze heeft dezelfde fabrieksinstellingen maar kan enkel gebruikt worden om te configureren.
4.6 Montage van de LMS Er bestaan verschillende bevestigingsmethoden. Het belangrijkste aspect is dat erop gewaakt moet worden dat door het divergerende karakter van de laserstraal de LMS de grond niet constant detecteert. Dit kan berekend worden gebruikmakend van de laserstraaldiameter (zie 4.1.3), de hoogte van de optische as (min 116 mm) en de hoogte waarop de LMS bevestigd is.
24
4.7 In gebruik nemen en configureren Het in gebruik nemen van de LMS gebeurt in verschillende stappen • Communicatie tot stand brengen met de LMS • Inloggen • De gewenste configuratie maken gebruikmakend van de SOPAS ET • De LMS testen op de gewenste functie. 4.7.1
SOPAS ET configuratiesoftware
4.7.1.1 Communicatie Na opstart van het configuratie programma SOPAS ET moet een keuze gemaakt worden tussen de mogelijkheden die te zien zijn in Figuur 4.9. Wanneer gekozen n wordt om een nieuw project aan te maken moet vervolgens uit de toestellijst het gepaste toestel gekozen worden en verbinding gemaakt worden met het betreffende toestel. Als gekozen wordt om een bestaand programma te openen of het laatste project te openen openen zal er automatisch connectie gemaakt worden indien het toestel aangesloten is. Wanneer het toestel erna wordt aangesloten kan eenvoudig online gegaan worden door met de rechtermuisknop op de naam van het toestel in de project tree te klikken en vervolgenss door te klikken op ‘go online’.
Figuur 4.9: Welkomscherm SOPAS ET
4.7.1.2 Inloggen Wijzigingen gingen aanbrengen kan enkel indien er wordt aangemeld op het gebruikersniveau ‘Authorized ‘ Client’. Dit wordt gedaan n via het he icoon . Vervolgens wordt gekozen voor het gebruikersniveau ‘Authorized Client’’ en wordt het paswoord ‘client’ ingevuld in het paswoordveld. 4.7.1.3 Configureren De interactieve configuratie gebeurt door middel van het softwarepakket SOPAS ET. Met deze software worden de parameters ingesteld en uitgetest. Via het gestructureerde project tree is het eenvoudig de gewenste parameter te vinden en te wijzigen. Bij het rechts klikken op een invulveld van een parameter en vervolgens op parameterinfo wordt een venster geopend. geopend. Dit venster bevat de minimum, maximum en default waarden van de betreffende parameter. Figuur 4.10 geeft de 25
opbouw van deze project tree weer samen met de verwijzing waar de parameter wordt besproken.
Figuur 4.10: Project tree SOPAS ET
Van zodra een wijziging is aangebracht wordt dit automatisch opgeslagen in het vluchtig geheugen van de LMS 100 en is de wijziging van kracht. Indien de gewenste configuratie moet behouden blijven moeten de parameters wel permanent opgeslagen worden! 4.7.1.4 Testen De field evaluation monitor geeft de verschillende geconfigureerde velden weer samen met hun status. Ook kan een visualisatie van meetpunten worden weergegeven. Hierbij moet worden opgemerkt dat niet alle metingen worden weergegeven, door de verwerkingstijd van het programma. De ingestelde filters zijn niet van toepassing bij de visualisatie! Pas bij het doorsturen doo van de metingen naar een andere zelfontwikkelde applicatie worden de ingestelde filters toegepast. Gebruikmakend van de fieldevaluation logging kunnen de opgemeten waarden worden gelogd voor latere verwerking.
4.8 Datacommunicatie gebruikmakend van berichten ber 4.8.1 Opbouw van een bericht De opbouw van ieder frame ziet er als volgt uit ‘<STX> commando tekst <ETX>‘. <ETX> De verschillende commando’s worden verder besproken. <STX> en <ETX> zijn commandokarakters en in de ASC tabel komt dit respectievelijk overeen met karakter twee karakter drie. Het komt er dus op neer dat voor de commandotekst het karakter twee toegevoegd moet worden en na het commando, karakter drie. 4.8.2 Metingen ontvangen Vooraleer metingen kunnen worden opgevraagd moet de LMS in measerment mode staan. Dit kan verkregen worden via de SOPAS ET maar ook via berichten. Om de status van de LMS te wijzigen dient het gebruikersniveau ‘Authorized Authorized Client’ Client te zijn.. Indien dit het geval is, kan het meten gestart worden door de status van de LMS te wijzigen naar measerment mode.. Daarna moet gewacht worden tot de LMS effectief in measerment mode staat vooraleer een aanvraag voor een meting gedaan kan worden. De status kan opnieuw opgevraagd worden via een bericht. Eenmaal de LMS in measerment mode staat, kan één meting of kunnen alle metingen ontvangen worden tot een stopbericht verzonden wordt. Bij ieder bericht die verzonden wordt, antwoordt de LMS met een bericht die informatie of waarden bevat.
26
Voorbeeld: de LMS staat in stopmode maar er moet een meting gedaan worden, selectie van het gebruikersniveau ‘Authorized Client’: Te verzenden: <STX> sMN SetAccessMode 03 F4724744 <ETX> Antwoord: <STX> sAN SetAccessMode 01<ETX> Status van de LMS wijzigen naar measerment mode: Te verzenden: <STX> sMN LMCstartmeas<ETX> Bevestigingsantwoord: <STX> sAN LMCstartmeas 0<ETX> Status van de LMS opvragen Te verzenden: <STX> sRN STlms <ETX> Antwoord: <STX >sRA STlms 7 0 8 00:00:00 8 01.0 1.06 0 0 0<ETX> Dit wordt gedaan tot de LMS in de status measerment mode is, Dit is het geval wanneer het eerste cijfer van het antwoord een zeven is. a) Wanneer één meting opgevraagd moet worden: Te verzenden :<STX>sEN LMDscandata 1<ETX> Antwoord: <STX>sEA LMDscandata <ETX> (meting) b) Alle metingen moeten ontvangen worden tot stopbericht wordt verzonden: Te verzenden :<STX>sEN LMDscandata 1<ETX> Bevestigingsantwoord: <STX>sEA LMDscandata 1<ETX> Antwoord zodra metingen beschikbaar: <STX>sSN LMDscandata<ETX> Stop bericht:<STX>sEN LMDscandata 0<ETX> Bevestigingsantwoord: <STX>sEA LMDscandata 0<ETX> De inhoud en de opbouw van de verschillende berichten kunnen teruggevonden worden in de annex van de handleiding van de LMS [4].
27
5 Lokalisatie met LMS 100 5.1 LMS data verwerken LMS databericht
LMS bericht rangschikken clsLMSdata. arrangedata
Lijst punten puls 1 Lijst punten puls 2 Figuur 5.1: Werkwijze verwerking LMS bericht
Een databericht bevat naast de verschillende parameterinfo, het geconfigureerd aantal afstanden en RSS-waarden voor de eerste ontvangen puls en indien gewenst voor de tweede ontvangen puls. Deze waarden staan in een hexadecimaal stelsel en worden omgezet naar decimale stelsel. Aan de hand van de afstand en de RSSI-waarde van elk punt, worden samen met de hoekresolutie, de starthoek en de eindhoek van de scan de parameters van de punten bepaald. De parameters: • • • •
Uniek identificatie nummer Poolcoördinaten (a,θ) Cartesiaanse coördinaten(x,y) RSSI waarde.
Elk punt bestaat uit een klasse ‘ClsPoint’ waardoor de verschillende parameters later via hun property opgevraagd kunnen worden. De verschillende punten worden in een lijst bewaard en zijn beschikbaar. Er is een lijst beschikbaar voor de punten van de eerste puls en een lijst voor de punten van de tweede puls.
5.2 Positie bepalen 5.2.1
Reflectoren
Om ervoor te zorgen dat de lokalisatie enkel gebeurt via statische voorwerpen, werd ervoor gekozen om reflectoren te plaatsen. Reflectoren hebben de eigenschap licht heel goed in de richting van de bron te weerkaatsen, waardoor een zeer grote RSSI-waarde ontvangen zal worden. De keuze van het type reflector zal bepalend zijn voor de nauwkeurigheid van de metingen. Daarom werden er enkele tests uitgevoerd met verschillende soorten en vormen van reflectoren. In Tabel 5.1 kunnen de 28
waarnemingen teruggevonden worden. Bij deze test werd gekeken naar de nauwkeurigheid van de opgemeten lengte, de gemiddelde, maximale en de minimale RSSI-waarde en de standaarddeviatie van de RSSI waarden. De testen werden uitgevoerd op verschillende afstanden. Tabel 5.1: Resultaten reflectoren
Eigenschap
Scoorde het best
kleur
witte reflectoren
Textuur
Zeer fijn reflectoren
Vorm
Rechthoekig reflectoren
Het type dat zich het best onderscheid uit de test zijn zelfklevers die gebruikt worden bij de nieuwe soort verkeersborden. Deze hebben een fijne structuur. Deze zijn verkrijgbaar in de vorm van Zelfklevers en kosten 30 euro/m². Er bestaan reflectoren die speciaal ontworpen zijn voor een optimale lokalisatie. De ‘diamond Grade 3000X’ reflector film van Sick is een voorbeeld. 5.2.1.1 De hoogte van de reflector De totale hoogte en de verticale positie van de reflector moeten zodanig gekozen worden dat de laserstraal de reflector detecteert, zelf bij een oneffen vloer. De maximale afstand,die in de ruimte gemeten kan worden (maximale afstand van de LMS is 20m) en de mate waarin de LMS zal kantelt door een oneffen vloer zal de hoogte van de reflector bepalen, rekening houdend dat de laserstraaldiameter aan de basis van de LMS acht millimeter is en met vijftien millimeter vermeerdert per meter. 5.2.1.2 De breedte en diameter van de reflector De maximale afstand die in de ruimte gemeten kan worden, is ook bepalend voor de breedte of de diameter van de reflector. Om een voorwerp betrouwbaar te detecteren moet het voorwerp minstens de breedte hebben van de afstand tussen de meetpunten plus de laserstraaldiameter (zie 4.1.4). 5.2.1.3 Voorbeeld berekening van reflector De reflector moet op een afstand van maximaal 8 meter gedetecteerd worden. De hoekresolutie staat ingesteld op 0,25°. Maximale laserstraaldiameter = 8m x 15mm/m + 8mm = 128mm (zie 4.1.3) Minimale hoogte reflector = 128 mm Minimale breedte reflector = 128 mm + tan(0,25) * 8000mm = 131,5 mm (zie 4.1.4)
29
5.2.2
Rechte en cilindervormige reflectoren detecteren
5.2.2.1 Overzicht
Lijst punten puls 1
Filteren en punten clusteren ClsPosition.filter
Ja
Nee
Cirkel ?
Trendlijn bepalen ClsPosition.Trendlcirle ClsPosition.Trendcircle
Trendlijn bepalen ClsPosition.Trendline
Van LMS- naar robot coördinatenstelsel ClsPosition.ToRobotCO
Van LMS- naar robot coördinatenstelsel ClsPosition.ToRobotCO
Van robot naar kamer coördinatenstelsel ClsPosition.ToRoomCO
Van robot naar kamer coördinatenstelsel ClsPosition.ToRoomCO
De lijnen of cirkels bevinden zich in de coördinatenstelsel van de kamer, uitgerekend met het resultaat van de vorige positieberekening of schatting van de positie.
Lijst lijnen in kamercoördinaten1
1
Lijst lijnen in robotcoördinaten
Lijst cirkels in robotcoördinaten
Lijst cirkels in kamercoördinaten1
Lengte OK?
Figuur 5.2:Overzicht detecteren van reflectoren
30
5.2.2.2 Filteren Om de punten afkomstig van de reflectoren te isoleren van de andere punten, wordt gebruik gemaakt van de RSSI (Receive Signal Strength Identifier) waarde (zie Grafiek 5.1). Deze waarde wordt samen met de afstanden mee verzonden. Er kan gekozen worden voor een 8 bit of 16 bit RSSIwaarde. Door de grotere range van de 16 bit wordt hiervoor gekozen. De RSSI-grens ligt op 1500. Tijdens het filteren worden de punten die bij elkaar horen, bijgehouden, om er een lijn of cirkel mee te vormen. Zodra een reflector gevonden is, wordt hij verder verwerkt. Wanneer deze reflector verwerkt is, wordt er verder gezocht naar andere reflectoren. Grafiek 5.1: RSSI-waarden van de ontvangen meetpunten voor het filteren
3500 3000 2500 RSSI
2000 1500 1000 500 0 0
100
200
300 ID
400
500
600
Grafiek 5.2: RSSI-waarden van de ontvangen meetpunten na de RSSI-filter
Meetpunten afkomstig van reflectoren
3300 3100 2900
Meetpunten afkomstig van glanzende oppervlakten
RSSI
2700 2500 2300 2100 1900 1700 1500 0
100
200
ID
300
400
500
600
Het is mogelijk dat zeer glanzende oppervlakten, zoals metalen oppervlakten, ook punten boven de grens van 1500 hebben (zie Grafiek 5.2). Deze oppervlakten hebben wel de eigenschap van een spiegel en bijgevolg zal niet het volledige metalen oppervlak gedetecteerd worden met een RSSI boven de 1500, maar enkel het deel waarbij het licht ongeveer loodrecht invalt. Na het maken van de trendlijn van deze punten zal met behulp van de een lengtefilter ervoor gezorgd worden dat de lijnen afkomstig van een glanzend oppervlak niet verder gebruikt worden. Deze lengtefilter controleert of de lijnen groter zijn dan een minimale opgegeven lengte van de rechte reflectoren. Daarnaast zorgt 31
de lengtefilter ook, dat de reflectoren die onder een te grote hoek of van een te verre afstand worden gedetecteerd, niet worden gebruikt bij de absolute positiebepaling. Grafiek 5.3: RSSI-waarden RSSI waarden van de ontvangen meetpunten na het filteren
3300 3100 2900
RSSI
2700 2500 2300 2100 1900 1700 1500 0
20
40
60
80 ID
100
120
140
160
5.2.2.3 Bepalen of de punten tot een cirkel met een bepaalde diameter behoren Na het vormen van de cluster wordt gekeken als de punten uit deze cluster tot een cirkel met een bepaalde diameter behoren. Wanneer een cilinder gedetecteerd wordt zal de kleinste afstand de afstand zijn recht op de cilinder (zie ( Figuur 5.3). ). Van dit punt wordt de afstand gebruikt en vermeerderd met de straal van de cilinderreflector. cilinderrefl Dan wordt via de cosinusregel regel de afwijking van ieder punt tot de cirkel berekend. Uit metingen bleek dat de afwijking bij cilinderreflectoren uiterst zelden groter dan 50 mm was. Voor rechte reflectoren kwam dit zelfden onder de 50 mm. Als gevolg wordt na de berekening de grootste afwijking van iedere cluster vergelijken met 50. Is de grootste waardee kleiner, vormt de cluster een cirkel en is de waarde groter, vormt de cluster een lijn.
(rc,θc) (ri,θi)
Figuur 5.3: Detectie cilinderreflector
De afwijking van ieder punt wordt als volgt berekend: berekend
Met :
di = afwijking van het punt i met poolcoördinaten (ri,θi) R = straal traal van de cilinderreflector
32
5.2.2.4 Trendlijn bepalen van een lijn De trendlijn bereken door de punten, gebeurt met de least square line methode. Deze methode zoekt de lijn met vergelijking y = ax +b die de kleinste som heeft van afwijkende vierkanten van de reeks gegeven punten. Veronderstel dat de data punten (x1,y1), (x2,y2), … (xn,yn) met x de onafhankelijke variabele en y de afhankelijke variabele de meest aansluitende lijn met vergelijking f(x) heeft, dan heeft ieder punt een afwijkingsfout d: d1= y1 – f(x1), d2= y2 – f(x2), … , dn= yn – f(xn). Volgens de methode van least squares heeft de meest aansluitende lijn de eigenschap: 354
6
355
676
358
8
9 35: : 4
8
9;<: = >)?: : 4
1@5
8
9;<: = )A?: 6 B1@5 C:8:CAAD : 4
)E. 51
Om de kleinste som van vierkante afwijkingsfouten te bekomen moet de afgeleide nul zijn. Aangezien x en y gekende coëfficiënten zijn, wordt vergelijking 5.1 afgeleid naar a en b. 8
G)∑8: 4;<: = )A?: 6 B1@5 1 5 9 ?: ;<: = )A?: 6 B1@ H GA
)E. I1
: 4
8
G)∑8: 4;<: = )A?: 6 B1@5 1 5 9;<: = )A?: 6 B1@ H GB : 4
Na uitwerking wordt bekomen: A
)8. ∑ ?: <: 1 = )∑ ?: . ∑ <: 1 8. ∑ ?5: = )∑ ?: 1² B
∑ <: = )A. ∑ ?: 1 8
)E. J1
)E. E1
)E. L1
Grafiek 5.4: Trendlijn door de meetpunten
-200 -250 900 -300 -350 -400
1100
1300
1500
1700
1900
2100
y = -1,9893x + 3302,7
-450 -500 -550 -600 -650 -700
y = 0,0533x - 722,08 reflector1 reflector 2 Lineair (reflector1)
33
5.2.2.5 De lijnstukken Wanneer de trendlijn gemaakt is, zijn de richtingscoëfficiënt ‘a’ en het snijpunt met de y-as y ‘b’ gekend. Overigens zijn de x-coördinaat coördinaat van het linker en het rechter eindpunt van het lijnstuk gekend. Daarmee worden de verschillende paramaters berekend van van het lijnstuk. Lijn parameters: • Nummer • Richtingscoëfficiënt a • Snijpunt met y-as b • Rechter eindpunt (xr, yr) • Linker eindpunt (xl, yl), • Middenpunt (xm, ym), • Oriëntatie θ • Lengte L
Figuur 5.4: Parameters van een lijn
Iedere lijn bestaat uit een klasse ‘clsLine’ waarvan nadien de verschillende parameters via hun property kunnen aangesproken worden. 5.2.2.6 Trendlijn bepalen van een cirkel De trendlijn bepalen door de punten afkomstig van de cilinderreflectoren gebeurt op dezelfde manier als bij een lijn met dit verschil dat de vergelijking van een cirkel uiteraard anders is. De methode van least square circle ircle zoekt de cirkel met vergelijking 0= x2 +y2 + 2Ax + 2By + C (A,B en C zijn constanten) waarvan de straal gelijk is aan
en het middelpunt ligt op (-A,-B). (
Veronderstel dat de data punten (x1,y1), (x2,y2), … (xn,yn) de cirkel met bovenstaande vergelijking hebben, dan heeft ieder punt een afwijkingsfout d: d1= 0 – f(x1), d2= 0 – f(x2), … , dn= 0 – f(xn). Volgens de methode van least squares heeft de meest aansluitende cirkel de eigenschap dat vergelijking 5.7 minimaal moet zijn:
34
Om dus de variabelen A,B en C te vinden moeten we de vergelijking 5.7 een keer afleiden naar A,B en C. Na uitwerking worden dan de volgende vergelijkingen gevonden die gebruikt worden om een trendlijn te bepalen door de meetpunten afkomstig van een cilinderreflector.
P2R 9 S 6 2T 9 ! 6 U 9 = 9) S 6 ! S 1 Y N N N N N N 2R 9 ! 6 2T 9 !S 6 U 9 ! = 9)S 6 !S 1 ! O X N N N N S S N N 2R 9 6 2T 9 ! 6 n U = 9) 6 ! 1 M W
)5.81
Om na te gaan als het wel degelijk nodig is om een trendlijn voor de cirkels of de lijnen te bepalen, werd een test uitgevoerd waarbij op twee verschillende manieren een trendlijn door de punten afkomstig van een cilinder reflector wordt berekend. De eerste manier is zoals beschreven hierboven en de tweede wordt de ‘circle fit methode’ genoemd en kan teruggevonden worden in [7]. Daarnaast werd ook het middelpunt bepaald door de kleinste afstand te vermeerderen met de straal zoals de geschatte middelpunt bepaald werd, wanneer gecontroleerd wordt als de punten al of niet op een cirkel lagen (zie Figuur 5.3). Er werden 300 metingen op een vaste plaatst uitgevoerd (resultaat zie Tabel 2). Tabel 2: Resultaten noodzaak van trendlijn
Statische fout (1s) x Statische fout (1s) y Statische fout (1s) a cyclustijd
Geen 11 11,9 0,33 233ms
Least Square 4,9 9,2 0,11 233ms
Circle fit 5,2 14,8 0,1 233ms
Aangezien het resultaat het best is met de least square methode en er geen merkbaar verschil verwerkingstijd is, wordt deze methode gebruikt. 5.2.2.7 De cirkels De parameters van een cirkel zijn beperkt tot de diameter en de x- en y- coördinaat van het middelpunt. Deze worden voor elke gedetecteerde cilinder bijgehouden in de klasse ‘clsCircle’. 5.2.2.8 Van LMS- naar robot coördinatenstelsel De punten die gedetecteerd worden met de LMS bevinden zich in het coördinatenstelsel van de LMS. De eerste transformatie die gemaakt moet worden, is de transformatie van de punten naar het coördinatenstelsel van de robot.
35
Figuur 5.5: Coördinaten transformatie LMS naar robot
Het coördinatenstelsel van de LMS ligt vast, vast, deze bevindt zich in de y richting op 55 mm van de achterkant van de LMS, de X-as as bevindt zich in het midden. De afstand L (afstand van achterkant LMS tot Yrobot) en M (afstand YLMS tot Xrobot) zijn afhankelijk van de positie van de LMS op de AGV (zie Figuur 5.5). ). Om een punt P(xLMS,yLMS) gedetecteerd door de LMS te transformeren naar de robotcoördinatenstelsel wordt de volgende transformatie toegepast: toegepas xrobot = yLMS + L (5.9) yrobot =-(xLMS + M) 5.2.3
(5.10)
Van Robot- naar een algemeen coördinatenstelsel
De positie van de robot wordt bepaald in een algemeen coördinatenstelsel. Dit absolute coördinatenstelsel komt meestal overeen met de kamer of het gebouw (kamercoördinatenstelsel) Het nulpunt en de assen worden dan ook zo gekozen dat ze overeen komen met respectievelijk een hoek en de aangrenzende muren. In dit kamercoördinatenstelsel zal met behulp van de LMS de absolute positie in de X en Y richting richting en de oriëntatie bepaald worden. De oriëntatie van AGV is de hoek tussen zijn eigen locale coördinatenstelsel en de kamercoördinatenstelsel. Als de AGV wijzerzin draait zal de hoek a vergroten. Draait de AGV tegenwijzerzin zal de hoek a verkleinen. verkleinen
Figuur guur 5.6: Coördinaten transformatie robot naar kamer
36
Om het punt P(xrobot,yrobot) in het robotcoördinatenstelsel te transformeren naar het kamercoördinatenstelsel stelsel wanneer de AGV zich bevind op positie(X,Y,a) in het kamercoördinatenstelsel worden volgende transformatie formules gebruikt: ?\AC]^ ?^_B_` . abc)d1 6 <^_B_` . cef)d1 6 g
)E. 441
<\AC]^ )=?^_B_` . cef)d11 6 <^_B_` . abc)d1 6 h )E. 451 Wat neerkomt op een rotatie rond de z-as en een translatie van X of Y. 5.2.4
Corresponderende Reflectoren en nieuwe reflectoren zoeken
5.2.4.1 Overzicht Lijst opgeslagen lijnen in kamercoördinaten
Lijst lijnen in kamercoördinaten en robotcoördinaten
Corresponderende lijnen zoeken clsPosition.FindSmallest
Niet opgeslagen lijnen wegfilteren clsPosition.FindNewLines
Lijst gerangschikte lijnen in robotcoördinaten
Lijst lijnen voor opslag
Figuur 5.7: Overzicht corresponderende reflectoren zoeken
Het overzicht en de werkwijze is dezelfde voor de cirkels! 5.2.4.2 corresponderende lijnen bepalen Er wordt een vergelijking gemaakt tussen de opgeslagen reflectoren in het vluchtig geheugen en de reflectoren die de LMS heeft gedetecteerd. De lijst met de gedetecteerde reflectoren in kamercoördinaten wordt hier gebruikt. De vergelijking gebeurt als volgt: berekenen van de afstand tussen de twee linkereindpunten, twee rechtereindpunten en de twee middelste punten in geval van een rechte reflector. Deze waarden worden opgeteld. Voor iedere opgeslagen lijn in het vluchtige 37
geheugen wordt een som bijgehouden zodat per opgeslagen lijn slechts één nieuwe lijn kan gevonden worden en de som gekend is. Bij cirkels wordt enkel de afstand van de middelpunten vergeleken. Om het duidelijker te maken wordt een voorbeeld uitgewerkt. De situatie is als volgt: Er zijn al drie lijnen opgeslagen in het vluchtig geheugen en er werden vier lijnen gedetecteerd zoals te zien is in Figuur 5.8. gedetecteerd 1 gedetecteerd 2 gedetecteerd 3 gedetecteerd 4
4000 3000
opgeslagen 1 opgeslagen 2 opgeslagen 3
2000 1000 0 0
500
1000
1500
2000
2500
3000
3500
-1000 -2000 -3000
Figuur 5.8: Situatie schets corresponderende lijnen bepalen
Er wordt nu gezocht naar de corresponderende lijnen (de lijnen met dezelfde kleur). Voor de ‘gedetecteerde lijn 1’ ( ) is de ‘opgeslagen lijn 1’ ( ) de lijn die de kleinste som zal hebben. In de lijst van sommen, wordt deze som geplaatst. In de lijst van lijnen wordt de ‘gedetecteerde lijn1’ ( ) geplaatst, maar uit de lijst van lijnen in robotcoördinaten. De inhoud van de lijnen is zoals Tabel 5.3. Tabel 5.3: Stap 1 zoeken corresponderende lijnen
Lijst opgeslagen lijnen lijst gedetecteerde lijnen lijst sommen
Opgeslagen 1 (
)
Gedetecteerd 1(
)
Opgeslagen 2
Opgeslagen 3
7062
Vervolgens wordt de corresponderende lijn voor de ‘gedetecteerde lijn 2’( duidelijk te zien in
) gezocht. Zoals
Figuur 5.8 is dit ook de ‘opgeslagen lijn 1’ ( ). De som van deze laatste is kleiner dan van de eerste gedetecteerde, dus neemt de ‘gedetecteerde lijn 2’ ( ) de plaats in van de ‘gedetecteerde lijn 1’ ( ). Het feit dat de eerste vervangen is, wijst erop dat hij een nieuwe gedetecteerde lijn is en wordt hij in een lijst geplaatst om dan later op te slaan. Hierna wordt naar de corresponderende 38
opgeslagen lijn van de ‘gedetecteerde lijn 3’ ( ) gezocht wat als resultaat ‘opgeslagen lijn 2’ ( ) zal hebben. Voor de ‘gedetecteerde lijn 4’ ( ) wordt berekend dat de corresponderende lijn de ‘opgeslagen lijn 3’ ( ) is. Maar dit is niet correct. Een filter zal deze lijn uit de lijst moeten halen voordat de positie ermee wordt berekend. Tabel 5.4: Stap 2 corresponderende lijnen bepalen
Lijst opgeslagen lijnen lijst lijnen
Opgeslagen 1 (
)
Opgeslagen 2 (
Gedetecteerd 2 (
)
Gedetecteerd 3 (
lijst sommen
2004
) )
1651
Opgeslagen 3 (
)
Gedetecteerd 4 (
)
3230
5.2.4.3 Nieuwe lijnen wegfilteren Het wegfilteren van lijnen die niet thuishoren in de lijst die gebruikt wordt om de positie mee te bepalen, gebeurt in verschillende stappen. De eerste stap is het zoeken naar de kleinste som in de lijst van sommen. Deze is zeker een lijn die gebruikt mag worden. Met deze lijn wordt nu de rotatie van de AGV bepaald. Dit is nodig, want de berekende sommen zijn sterk afhankelijk van de hoek waarmee de AGV geroteerd heeft. In Tabel 5.5 worden de sommen weergegeven van de lijnen in de gevormde lijst bij verschillende rotatiehoeken. Het valt duidelijk op dat het moeilijk wordt om de foute lijn te onderscheiden van de andere naarmate de hoek groter wordt. Tabel 5.5: Sommen bij verschillende draaaihoeken
idex
0°
5°
10°
20°
40°
1
1750
2092
2632
3952
6805
2
1750
1632
1584
1704
2542
3
1625
2414
3229
4872
8070
Om dit probleem te verhelpen wordt gebruik gemaakt van de berekende rotatiehoek. De verschillende lijnen worden gedraaid over de berekende hoek en vervolgens wordt opnieuw de som gemaakt. Het resultaat hiervan is dat de correcte lijnen ongeveer de zelfde som zullen hebben. Het kleine verschil is de oorzaak van meetfouten en wordt met behulp van een hysteresisch opgevangen. Na deze filter zal de lijst van lijnen waarmee de positie wordt berekend er uitzien zoals Tabel 5.6. Bij de cirkel is het niet mogelijk om ze eerst te verdraaien, snelheidstest zullen moeten uitwijzen als dit wel nodig is. Tabel 5.6:Lijst van lijnen waarmee positie bepaald wordt
Index lijst lijnen
Opgeslagen 1 ( Gedetecteerd 2 (
)
Opgeslagen 2 ( )
Gedetecteerd 3 (
)
Opgeslagen 3 (
)
)
39
Opmerking Wanneer volledig vanaf nul gestart wordt, en geen lijnen opgeslagen zijn, zal de lijst van opgeslagen lijnen soms kleiner zijn dan de lijst van net gedetecteerde lijnen. Als dit het geval is, wordt er nadien gecontroleerd welke gedetecteerde lijnen niet aanwezig zijn in de lijst van lijnen om de positie mee te bepalen. Deze worden vervolgens in de lijst geplaatst van lijnen die later worden opgeslagen in het vluchtige geheugen. Dezelfde wijkwijze wordt gebruikt voor de cirkels.
40
5.2.5
Updaten van de positie
5.2.5.1 Overzicht Lijst gerangschikte gedetecteerde lijnen in robotcoördinaten
Lijst gerangschikte gedetecteerde cirkels in robotcoördinaten
Lijst van opgeslagen lijnen in kamercoördinaten
Lijst van opgeslagen cirkels in kamercoördinaten
Middelpuntlijnen maken clsPosition.MakeMidLines
De oriëntatie bepalen clsPosition.CalNewOriëntation
Middelpuntslijnen verdraaien onder nieuwe oriëntatie clsPosition.CalNewPosition
Verplaatsing bepalen clsPosition.CalNewPosition
Absolute positie (x,y,α) Figuur 5.9: Overzicht updaten van de positie
5.2.5.2 Middelpuntslijnen bepalen De positie bepalen aan de hand van de lijnen afkomstig van de gedetecteerde rechte reflectoren werd in de eerste plaats rechtstreeks gedaan aan de hand van deze lijnen. Na implementatie, bleek deze methode enkel een goed resultaat te geven tot afstanden van ±3m. De methode had als 41
voordeel dat één reflector genoeg was om de positie te bepalen. Echter op verdere afstanden werd het resultaat onaanvaardbaar. De reden hiervoor ligt vooral in het feit dat de hoek sterk varieert van de gedetecteerde lijnen van verschillende meting waarbij de LMS niet verplaatst werd. Tijdens de tests werden de gedetecteerde lijnen lijnen zichtbaar gemaakt en was duidelijk te zien dat de middelpunten het minst varieerden (zie Figuur 5.10).
Figuur 5.10: Oriëntatie schommeling op verre afstand
Daarom werd besloten om vooraleer de positie te bepalen een fictievelijn te berekenen door de middelpunten van de lijnen. Om de positie te bepalen aan de hand van de cirkel is het noodzakelijk om deze fictieve lijnen te bereken door de middelpunten. Om de middelpuntslijnen te bepalen worden alle middelpunten van de lijnen en cirkels in een lijst geplaatst, dit voor zowel de opgeslagen als de gedetecteerde en met deze middelpunten wordt dan de fictieve middelpuntslijnen berekend. Aan de hand van twee rechte reflectoren op een afstand van 4m en 8m werden met zowel de rechtstreeks methode als de methode van de middelpuntslijnen honderd metingen uitgevoerd in het nulpunt. Van de afwijkingen van het nulpunt werd voor x, y en a het gemiddelde, de maximale waarden en de standaarddeviatie bepaald. Het is duidelijk dat de aanpassing een grote verbetering verbete teweegbracht. In Tabel 7 is het resultaat te zien van de meting. Tabel 7: Vergelijken methoden om positie te bepalen
X
a
Y
Gemid.
Max.
stdev
Gemid.
Max.
stdev
Gemid.
Max.
stdev
1ste methode 8m
400
1077
235
11
23
5
3
8
1,8
2de methode 8m
63
170
35
4
14
3
0,5
1
0,5
1ste methode 4m
100
375
83
3
21
4
1,4
5
1,2
2de methode 4m
30
71
16
1,9
6
1,4
0,4
1
0,5
42
5.2.5.3 De oriëntatie bepalen De eerste stap is het bepalen van de hoek waaronder de robot gedraaid is. Dit gebeurt simpel door het verschil te maken tussen de oriëntatiehoek van de middelpuntslijnen afkomstig van de opgeslagen reflectoren en de middelpuntslijnen afkomstig van de gedetecteerde reflectoren in robotcoördinaten. Daarna wordt het gemiddelde genomen. ij
∑ s)i,klmjnopmj = i,mjjjqjjr 1 t
)5.131
5.2.5.4 Roteren onder de nieuwe hoek Om de x en y coördinaten te bepalen, moeten eerst de lijnen geroteerd worden onder een hoek θnew. Het roteren maakt de hoek tussen de robotcoördinatenstelsel en de kamercoördinatenstelsel nul. In Figuur 5.11 kan het gevolg hiervan gezien worden en wordt duidelijk dat na het roteren de x en y verplaatsing bepaald kan worden aangezien de corresponderende lijnen nu evenwijdig liggen. 1800
opgeslagen 1
opgeslagen 2
1600
gedetecteerd 2
gedetecteerd 3
geroteerd 2
geroteerd 3
1400 1200 1000 800 600 400 200 0 0
500
1000
1500
2000
2500
3000
3500
Figuur 5.11: Verdraaien onder de nieuwe hoek
Het wiskundig bereken van de rotatie gebeurt als volgt:
mjrpp mjjjqjjr . cos)ij 1 6 !mjjjqjjr . sin)ij 1 )5.141
!mjrpp |=mjjjqjjr . sin)ij 1} 6 !mjjjqjjr . cos)ij 1
)5.151
5.2.5.5 De Translatie bepalen De translatie bepalen, gebeurt door het verschil te maken tussen de coördinaten van het middelpunt van de middelpuntslijnen afkomstig van een opgeslagen reflectoren en het middelpunt van de corresponderende geroteerde gedetecteerde middelpuntslijnen. j !j
∑ ,klmjnopmj = ,mjrkjjr )5.161 t ∑ !,klmjnopmj = !,mjrkjjr )5.171 t
43
1700
opgeslagen 1
opgeslagen 2
geroteerd 2
geroteerd 3
1500 1300 1100
ynew xnew
900
ynew
700
xnew
500 0
500
1000
1500
2000
2500
3000
3500
Figuur 5.12: Verplaatsing bepalen
5.2.6
Nieuwe lijnen en cirkels opslaan in vluchtig geheugen
De gedetecteerde lijnen die geen corresponderende opgeslagen lijn hadden, worden eerst omgezet naar kamercoördinaten zoals in 5.2.3. Het verschil hierbij is dat de nieuwe positie wordt gebruikt! Daarna worden ze toegevoegd aan de lijst van opgeslagen lijnen. Bij de lijnen worden pas opgeslagen als ze een lengte hebben binnen meegegeven grenzen. Dit wordt gedaan omdat bij slechte plaatsing het kan gebeuren dat onder een bepaalde hoek twee reflectoren aanzien worden als één zeer lange. Door de grote lengte zal deze niet opgeslagen worden.
5.3 Stockeren van de lijnen 5.3.1 XML Het is noodzakelijk wanneer de AGV in een zelfde gebied steeds opnieuw rondrijdt, dat hij niet steeds de reflectoren opnieuw moet ontdekken. Daarom werd een manier gezocht om de reflectoren te stockeren om dan later weer opnieuw te gebruiken. Er werd gekozen voor een XML-bestand die gemakkelijk kleinere hoeveelheden gegevens bijhoudt in plaats van een database. Daarboven is geen extra programma noodzakelijk op de computer om XML-bestanden te lezen en te bewerken.
Figuur 5.13: XML-stuctuur
44
De structuur (zie Figuur 5.13)) is zo opgebouwd dat een bestand uit een gebouw (Building) ( bestaat. Met een gebouw wordt een groot gebied bedoelt waarin de AGV zich zal verplaatsen. verplaatsen. Een ‘Building’ ‘ bestaat uit een aantal gebieden (Area’s). ( Een ‘Area’ is gekenmerkt door een AID, een uniek identificatienummer. Een ‘Area’’ wordt beschreven door zijn linkse bovenhoekcoördinaten en zijn rechtse onderhoekcoördinaten. Daarnaast bestaat bestaa een ‘Area’ uit verschillende lijnen (Lines) ( die rechte reflectoren voorstellen. Iedere ‘Line’ ‘ wordt gekenmerkt door zijn linkse en rechtse eindpunten en een uniek identificatienummer LID. Een ‘Area’ ‘ bestaat uit verschillende cirkels (Circles). De diamaterr van de cirkels binnen een ‘Area’ ‘ ligt vast. De verschillende ‘Circles’ zijn gekenmerkt door een CID, een uniek identificatienummer en de coördinaten van het middelpunt. 5.3.2 Bewerken van het XML bestand De manier waarop de reflectoren worden geplaatst, zal een een belangrijke rol spelen bij de positiebepaling. Dee AGV baseert zich voor zijn positiebepaling enkel op de gestockeerde positiegegevens van de reflectoren in het gebied waarin hij zich bevindt. Hierdoor wordt het rekenwerk geminimaliseerd indien een goede configuratie wordt gemaakt van de gebieden. Daarom werd een configuratieprogramma ontwikkeld waarbij waar alle gedetecteerde reflectoren worden gevisualiseerd. isualiseerd. In dit programma kunnen dan op een eenvoudige manier wijzigingen doorgevoerd doorgevoer worden, zoals het toevoegen egen en verwijderen van reflectoren en gebieden. gebieden
Figuur 5.14: Configuratieprogramma
45
Besluit Voor de lokalisatie van de AGV (Automated guided vehicle) van de Boedapest Tech werd in PC WorX een functieblok geschreven waarmee aan de hand van de encordersignalen de positie cyclisch upgedate wordt. Dit had in eerste instantie een zeer onbetrouwbaar resultaat. Een UMBmark test werd uitgevoerd en gaf als resultaat correctiefactoren geeft voor de twee dominante systematische fouten (wieldiameters en de wielbasisafstand). Na implementatie van de correctiefactoren in de functieblok bleek een betrouwbaardere positie berekend te worden. Maar de correctiefactoren waren snelheidsafhankelijk doordat het linkerwiel bij stijgende snelheid meer gaat slippen. Om de positie absoluut te bereken werd gebruik gemaakt van de Laser Measurement System van Sick (LMS 100). Deze bleek tijdens de onderzoeksperiode veel eigenschappen te hebben die bruikbaar zijn bij een AGV. Zo is er de mogelijkheid om verschillende evaluatievelden te definiëren met bovendien een dynamisch karakter, die kunnen gebruikt worden voor botsingpreventie en detectie van vrije ruimte. De belangrijkste eigenschap die de LMS 100 bezit voor de absolute positiebepaling is dat hij de ruimte afscant over een gebied van 270°, over een afstand van maximaal 20m en de opgemeten punten als poolcoördinaten ter beschikking stelt. Daarnaast meet hij ook de RSSI-waarde van iedere ontvangen laserstraal. Deze RSSI waarde geeft een indicatie hoe intens het licht ontvangen werd. De RSSI-waarde maakt het mogelijk om meetpunten van reflectoren te isoleren van andere meetpunten. Zo werd ervoor gekozen reflectoren te gebruiken als referentiepunten voor de absolute positiebepaling. In Visual studio werd een programma ontwikkeld dat de positie absoluut berekent aan de hand van de meetpunten afkomstig van de LMS met als referentie punten cilinderreflectoren en rechte reflectoren. Het programma is zo opgebouwd dat twee reflectoren noodzakelijk zijn om de positie absoluut te bereken. Er is gezorgd dat de berekende positie gebruikt kan worden in het PC WorX programma van de AGV via OPC-variabelen. Daarnaast blijft de berekening correct wanneer personen voor de reflectoren gaan bewegen. De enige voorwaarde blijft dat twee reflectoren volgens ingestelde parameters worden gedetecteerd. Het programma werkt dus in een dynamische omgeving. Een XML-bestand werd gebruikt om reflectoren in verschillende gebieden te
stockeren. De AGV baseert zich voor zijn positiebepaling enkel op de gestockeerde positiegegevens van de reflectoren in het gebied waarin hij zich bevindt. Hierdoor wordt het rekenwerk geminimaliseerd indien een goede configuratie wordt gemaakt van de gebieden. Daarom werd een configuratieprogramma ontwikkeld waarbij alle gedetecteerde reflectoren worden gevisualiseerd. In dit programma kunnen dan op een eenvoudige manier wijzigingen doorgevoerd worden, zoals het toevoegen en verwijderen van reflectoren en gebieden. De berekende positie is afhankelijk van de gemiddelde afstand tot de reflectoren vrij nauwkeurig (10mm bij 1m, 60mm bij 8m). Bij een te lange periode zonder detectie van reflectoren komen de corresponderende reflectoren niet overeen. Een positie update van de berekende positie via odometry kan na zo’n periode dit probleem verhelpen. Er zijn plannen om in de toekomst verder te werken rond AGV’s in het kader van een internationale samenwerking tussen de Budapest Tech. en de hogeschool West-Vlaanderen.
46
Literatuurlijst [1] Borenstein, J., Everett, H.R. & Feng, L. (1996). Where am I. Michigan. [2] Borenstein, J. (1996). Measurement and correction of systematic odometry error in mobile robots. IEEE Transaction on robotics and automation, 1996, nr 12. [3] Poenix Contact. User manual UM EN IB IL EC AR 48/10A, Inline servo amplifier for DC motors with and without brushgears. Beschikbaar : www.phoenixcontact.be. [4] Sick. LMS 100 opertating instruction. LMS 100, Laser measurement system. Beschikbaar: www.sick.com. [5] Crowley, L. (1989). World modeling and position estimation for a mobile robot using ultrasonic ranging. IEEE conference on robotics and automation, ICRA 89, Scottsdale Az…vol 3, pp 1574-1579, may 1989. [6] Shuzhi, S. & Lewis, L.(2006). Autonomous mobile robots: sensing, control, dicision making and applications. Tayler and Francis. [7] Bullock, R. (2006). Least-squares circles fit. Beschikbaar: http://www.uwe.ac.uk/library/resources/general/info_study_skills/harvelec.htm#internet.
47
Bijlagen
48
6 De drive 6.1 Algemeen Het in gebruik nemen van de drives gebeurt in verschillende stappen. stappen Allereerst llereerst moet een PCPconnectie aangemaakt gemaakt worden. Daarna kan via het PCP-kanaal PCP de drive geconfigure configureerd worden. Vervolgens wordt de drive in gebruik genomen door het aanpassen van de status van de machine via het controlewoord. Het aanpassen en uitlezen van bepaalde parameters pa kan tijdens het gebruik via PCP voor minderr accurate gegevens gegev en via de IN- en OUT proces datawoord woorden voor accurate gegevens. De IN- en OUT proces data wordt eerst beschreven in deze bijlage. bijlage Vervolgens wordt dieper ingegaan op het PCP-kanaal kanaal, gevolgd door de bespreking van de configuratie. configuratie Tenslotte wordt uitgelegd hoe de status us van de machine veranderd kan worden.
6.2 Procesdata woorden In de busring bezet de servoversterker versterker één woord voor PCP en drie woorden aan proces data voor zowel input als output. 6.2.1
data woorden IN procesdata
Figuur 6.1: Defaultsettings van de IN procesdata
De inhoud van de IN procesdata kan veranderd worden, zodat andere parameters van de drive uitgelezen kunnen worden. Het veranderen van de IN procesdata wordt verwezenlijkt met de parameter ‘InProcesDataDescription InProcesDataDescription’ (index 6000hex). 6.2.2
OUT procesdata woorden
Figuur 6.2: Defaultsetting van de OUT procesdata
De inhoud van de OUT proces data wordt veranderd om andere parameters van de drive te manipuleren. Het veranderen van de OUT procesdata data wordt verwezenlijkt met de parameter ‘OutProcesDataDescription’ (index 6001hex).
1
6.3 PCP 6.3.1
Algemeen
6.3.2 PCP-connectie Gebruikmakend van de functieblok tieblok ‘PCP_CONNECT’ (zie Figuur 6.1) wordt een PCP-connectie PCP met de drive gemaakt.
Figuur 6.3: PCP_CONNECT functieblok Tabel 6.1:: Beschrijving variabelen van de PCP_CONNECT functieblok
Naam EN_C
Soort Input
Data type Boolean
VALID ID ERROR ADD_ERROR PARTNER
Output Output Output IN/OUT IN/OUT
Boolean Integer Boolean String String
Beschrijving Bij een positieve flank wordt een connectie gemaakt en zolang de boolean hoog is wordt de connectie behouden. Geeft aan of er al dan niet een connectie is. Een uniek connectienummer. Geeft weer of er al dan niet een fout is opgetreden. opgetreden Bevat een error bericht in geval van een fout. Hierin moet het toestelnummer als string meegeven worden met prefix D. Dit toestelnummer kan gevonden worden in de busconfiguratie configuratie in PCworX. PCworX
6.3.3 PCP-read Om bepaalde de parameters uit te lezen kan gebruik gemaakt worden van de ‘PCP_READ PCP_READ functieblok’ (zie Figuur 6.4).
Figuur 6.4: PCP_READ functieblok
2
Tabel 6.2: Beschrijving variabelen van de PCP_READ functieblok
Naam REQ
Soort Input
Data Type Boolean
Beschrijving Door een positieve flank aan deze boolean te geven zal gestart worden met lezen. De output integer ID van de PCP_connectie functieblok moet hier verbonden worden.
ID
Input
integer
NDR
Output
Boolean
Geeft aan of er data beschikbaar is in de RD_1. Deze boolean is enkel ‘true’ als in de cyclus nieuwe data beschikbaar is.
DATA_CNT ERROR
Output Output
Integer Boolean
ADD_ERROR RD_1
IN/OUT String IN/OUT alle
Geeft het aantal gelezen bytes van de RD_1 weer. Geeft weer of er al dan niet een fout is opgetreden. Bevat het error bericht in geval van een fout. Stelt de ontvangstbuffer voor. Het soort variabel hangt af van het type dat ontvangen wordt. Deze kan worden gevonden bij de beschrijving van de te lezen parameter.
VAR_1
IN/OUT Array[0..1] of word
Bevat de data van het te lezen PCP object. Het eerste woord geeft de index weer en het tweede woord de subindex van de te lezen parameter.
Deze manier van lezen van parameters wordt enkel uitgevoerd voor parameters die niet vaak variëren of waarbij het niet belangrijk is dat de meest accurate waarde toe gekend wordt, dit omwille van de beperkte snelheid waarmee de waarden gelezen worden. Een PCP_READ functieblok kan gebruikt worden om verschillende waarden uit te lezen door gebruik te maken van een case structuur. Hierbij moet er wel aandacht besteed worden aan de grootorde van de gelezen waarden die hetzelfde moeten zijn. Wanneer een bepaalde waarde continu gelezen moet worden, moet na ontvangst van een waarde een positieve flank aan REQ moet worden gegeven worden zodat er opnieuw een leesopdracht wordt uitgevoerd. 6.3.4 PCP Write Gebruikmakend van de functieblok ‘PCP_WRITE’ (zie Figuur 6.5) is het mogelijk om enkele parameterwaarden aan te passen.
3
Figuur 6.5: PCP_WRITE functieblok Tabel 6.3:: Beschrijving variabelen van de PCP_WRITE functieblok
Naam REQ
Soort Input
Data Type Boolean
ID
Input
Integer nteger
DATA_CNT Done
Input Output
Integer Boolean
ERROR
Output
Boolean
ADD_ERROR VAR_1
IN/OUT String IN/OUT Array[0..1] of word
SD_1
IN/OUT Byte yte
Beschrijving Nadat een positieve flank aan deze boolean boolea wordt gegeven, zal gestart worden met schrijven. De output integer ID van de PCP_connectie functieblok moet hier mee verbonden worden. Geeft het et aantal te zenden bytes in de SD_1. S Krijgt een positieve flank wanneer het schrijven succesvol is afgerond. Geeft weer of er al dan niet een fout is opgetreden. Bevat het error bericht in geval van een fout. Moet de data bevatten van het te schrijven PCP object. ect. Dit komt er op neer dat het eerste woord de index weergeeft en het tweede woord de subindex van de te lezen parameter. Verzendbuffer met de nieuwe waarde .
Het schrijven via PCP wordt vooral toegepast om de configuratie van de drive aan te maken. Met het toepassen van een case structuur kunnen verschillende parameters geschreven ven worden, waardoor maar één PCP_WRITE functieblok vereist is. Het gaan naar de volgende ende stap in de case structuur kan eenvoudig, gebruik makend van de boolean ‘Done’. Hierbij moet worden opgemerkt dat voor een nieuwe schrijfopdracht een positieve flank aan a REQ moet voorzien worden.
6.4 Configureren Vooraleer de mobiele robot kan beginnen rijden, moeten er eerst enkele parameters veranderd worden. Deze parameters die zijn toepassingsafhankelijk en kunnen terug gevonden worden in hoofdstuk A ‘Parameters’ van [3 3]. De werkingsmethode is wel steeds dezelfde. Door middel van een case structuur te doorlopen worden de waarden van de parameters veranderd met de hierboven beschreven reven functieblok PCP_WRITE. Eén n van de parameters die veranderd moet worden, is de IN procesdata.. Dit wordt als voorbeeld hieronder beschreven.
4
Voorbeeld In het geval van de robot wordt gebruik gemaakt van het encoder signaal om de positie te bepalen. Het is wenselijk om met een zo accuraat mogelijke waarde berekeningen uit te voeren. Daarom wordt de actuele snelheid (‘SpeedActualValue’ index 6064hex default waarde) in de actuele positie (‘PositionActualValue’ index 6064hex) veranderd die een 32 bit parameter is veranderd. Via de PCP wordt index 6000hex benaderd en gewijzigd, waarbij in verschillende stappen waarden naar de subindexen wordt geschreven. Onderstaande tabel geeft de beschrijving van de verschillende subindexen weer. Tabel 6.4: Subindexen van de ‘IN procesdata discription’
Subindex 01 02 03 04 05 … 12 13
Beschrijving IN process datalengte (altijd 6 bytes) Index van de parameter dat moet opgeslagen, beginnend vanaf byte 0 Subindex van de parameter dat moet opgeslagen, beginnend vanaf byte 0 Index van de parameter dat moet opgeslagen, beginnend vanaf byte 1 Subindex van de parameter dat moet opgeslagen, beginnend vanaf byte 1 …. Index van de parameter dat moet opgeslagen, beginnend vanaf byte 5 Subindex van de parameter dat moet opgeslagen, beginnend vanaf byte 5
worden worden worden worden
worden worden
In het geval van de mobiele robot wordt de actuele positie geplaatst in byte 2 tot en met byte 5 zodat nog steeds het statuswoord gebruikt kan worden om de toestand van de drive te analyseren. Dus er wordt eerst de waarde 6064hex (PositionActualValue) geschreven naar index 6000hex met subindex 06 en vervolgens wordt de waarde 01hex (subindex) geschreven naar index 6000hex met subindex 07. Daarna zal de IN proces data eruitzien zoals in Figuur 1.6. Proces datawoord 0 Statuswoord index 6041hex
Proces datawoord 1en 2 PositionActualvalue index 6064hex
Figuur 6.6: IN procesdata na het aanpassen
5
6.5 Status van de machine Om de status van de machine te veranderen moet een bepaalde waarde via het controlewoord control verzonden worden. De waarde die moet verzonden verzo worden kan gevonden worden in een flowchart (zie Figuur 6.7).
Figuur 6.7: Flowchart van de status van de machine
6
7 Handleiding Er werd gepoogd om een zo eenvoudig mogelijk gebruikersprogramma te creëren met nog vrije ruimte om de nodige instellingen te kunnen maken. Na het openen van het programma verschijnt het hoofdscherm (zie Figuur 7.1). ). Op het hoofdscherm kan de locatie van de AGV afgelezen worden.
Figuur 7.1: Hoofdscherm
7.1 Instellingen van de LMS Onder het menu ‘LMS’ kan via de item ‘Setting’ de configuratie van de LMS ingegeven worden. Na het klikken op de item ‘Setting’ verschijnt een nieuw scherm waar de nodige instellingen kunnen ingevoegd worden (zie Figuur 7.2 2) .
Figuur 7.2: LMS setting
7.1.1 Connectie In het tekstvak horende bij het IPadres en Port moet respectievelijk het IP-adres IP adres en de TCP poort van de LMS ingegeven worden. 7.1.2 Configuratie Na het maken van de configuratie in de Sopas ET configuratie software meegeleverd met de LMS 100, kunnen de parameters hoekresolutie, starthoek en de stophoek ingevuld worden. Door op de knop ‘Load from LMS’ te drukken, worden de de nodige parameters automatisch geladen van de LMS. De voorwaarde is wel dat de LMS fysisch verbonden is. De parameters M en L dienen opgemeten te worden met een liniaal zoals aangegeven op de figuur op het scherm.
1
7.2 Reflectoren
Figuur 7.3: Menu reflectoren
7.2.1 Reflector instellingen Aangezien de afmetingen van de reflectoren afhangen van de omgeving kunnen er heel wat instellingen gedaan worden omtrent de reflectoren. Om het scherm (zie Figuur 7.4) 7 te open waar de instellingen gebeuren dient op het item ‘Settings’ te worden geklikt onder menu ‘Reflectors’ (zie Figuur 7.3).
Figuur 7.4: Reflector setting
7.2.1.1 Diameter van de cilinderreflectoren De diameter van de cilinderreflectoren binnen iedere area ligt vast. Bij de configuratie van een gebied dient dus voor de verschillende areas de diameter steeds aangepast te worden. Na het indelen in areas zal dan automatisch gewisseld worden tussen de verschillende diameters. De meegegeven diameter wordt dus enkel gebruikt wanneer wanneer een gebied nog niet verdeeld is in areas. De ‘error op de diameter’ wordt gebruikt als hysteresis om te beslissen als een clusterpunten al of niet een cilinderreflector of rechte reflector vormt. De ‘error op de diameter ‘staat standaard op 50 ingesteld. ld. Deze waarde kan vergroot worden indien de cilinderreflectoren te veel aanzien worden als rechte reflectoren. Als er enkel gewerkt wordt met cilinderreflectoren kan deze waarde veel vergroot worden om zeker geen cilindervormige reflector tijdens het meten meten uit te sluiten. Is het de bedoeling 2
dat enkel de cilinderreflectoren in de dichte nabijheid gebruikt worden voor de positiebepaling dan kan deze waarde verkleind worden . 7.2.1.2 Lengte van de rechte reflectoren De minimale lengte van de reflectoren moet worden meegegeven. Het beste is dat deze lengte veel groter gekozen wordt dan de diameter van de cilinderreflectoren (bv twee maal de Diameter). Dit zorgt ervoor dat een cilinderreflector die als rechte reflector aanzien wordt, niet toegevoegd kan worden als rechte reflector. Ook zal deze minimale lengte ervoor zorgen dat punten afkomstig van glanzende voorwerpen niet aanzien worden als reflector. De positieve offset moet ongeveer 50 mm groter zijn dan de lengte van de langste reflector aangebracht in de omgeving. Dit dient om ervoor te zorgen dat reflectoren die onder een zodanige hoek gedetecteerd worden en aanzien worden als één reflector niet als een zeer lange reflector toegevoegd worden. De negatieve offset moet tijdens de configuratie run zodanig gekozen worden dat de reflector pas wordt bewaard als hij op een dichte en niet onder een te kleine hoek gedetecteerd wordt. De aan te raden waarde is 20 mm. Daarna kan de waarde groter worden gekozen afhankelijk van de nauwkeurigheid die gewenst is. Maar kies deze waarde zeker klein genoeg zodat er nog een groot verschil bestaat tussen de diameter van de cilinderreflectoren en de minimale lengte min de negatieve offset. 7.2.1.3 Minimaal aantal gedetecteerde punten Deze waarde moet minimaal 2 zijn. Om de nauwkeurigheid te vergroten kan ervoor gekozen worden dit aantal te vergroten. Zet afhankelijk van de diameter van de cilinderreflectoren deze waarde ook groter om pas een cilinderreflector te bewaren tijdens een configuratie run als hij op een betrouwbare dichte afstand wordt gedetecteerd (dichte afstand zorgt voor een groter aantal meetpunten van de reflector). 7.2.1.4 Toelaten om reflectoren toe te voegen Het is noodzakelijk voor een betrouwbare lokalisatie dat er eerst een configuratie run gedaan wordt. Alle reflectoren worden ontdekt en de instellingen worden gemaakt zodanig dat de reflectoren op een betrouwbare manier worden bewaart. Daarna kunnen de reflectoren worden ingedeeld in verschillende gebieden. Eens dit gedaan is kan de optie ‘Allow to add reflectors’ worden afgevinkt. Dit zal ervoor zorgen dat er geen reflectoren meer worden toegevoegd. Dit zorgt dat metingen niet kunnen worden beïnvloed door negatieve effecten zoals glanzende oppervlakten die aanzien worden als reflectoren of rechte reflectoren die aanzien worden als cilinderreflectoren en omgekeerd. 7.2.1.5 Default area De Default area moet gekozen worden zodanig dat alle reflectoren die gedetecteerd worden tijdens de configuratie run binnen dit gebied liggen. 7.2.2 Load en Store Na een configuratierun kunnen de gedetecteerde reflectoren permanent worden opgeslagen door onder het menu ‘Reflectors’ op het item ‘Store’ te klikken. Er verschijnt een dialoog venster waar de naam en de locatie van het bestand kan meegegeven worden. De reflectoren worden dan bewaard deeluitmakend van de default area. Om reflectoren te laden uit een bestand, dient geklikt te worden op het item ‘Load’ onder menu ‘Reflectors’. 3
7.2.3 Configuratie van de omgeving De configuratie van de omgeving is belangrijk. Allereerst moeten de reflectoren op een doordachte wijze jze geplaatst worden in de omgeving zodat er op iedere locatie minstens 2 reflectoren worden gedetecteerd. Er werd een configuratie programma ontwikkeld die de configuratie van de omgeving eenvoudiger maakt. Het configuratie programma (zie Figuur 7.5)) wordt geopend door te klikken op het item ‘Configurate Building’ onder het menu ‘Reflectors’.
Figuur 7.5: Configuratieprogramma
7.2.3.1 Bestand Een bestand openen gebeurt aan de hand van de drukknop ‘Load’. Bij het klikken op deze drukknop verschijnt een file open dialoogvenster, waar de gewenste file kan in geselecteerd worden. Het opslaan gebeurt via de drukknop ‘Store’ waar de naam en de locatie van het bestand kan worden gekozen in een save file dialoogvenster. 7.2.3.2 View Drukknop ‘Zoom All’ zal alle areas en reflectoren reflectoren op het scherm zichtbaar maken. Met de drukknop ‘Zoom IN’ kan er in de visualisatie ingezoomd worden. Eerst moet op deze knop gedrukt worden, waarna het cursorsymbool wijzigt. Vervolgens kan het gewenste gebied geselecteerd worden. Bij het klikken op de drukknop ‘Zoom OUT’ wordt de visualisatie uitgezoomd. 7.2.3.3 Toevoegen Het kan gebeuren dat één enkele reflector moet worden bijgeplaatst. Dan is het soms eenvoudiger om zijn positie op te meten en manueel de reflector toe te voegen. Het is mogelijk om cirkels toe te voegen door de coördinaten van het middelpunt mee te geven en zijn diameter. Wees waakzaam dat de diameter van ieder cirkel gelijk is binnen een area.. Een lijn kan worden toegevoegd door de coördinaten mee te geven van de twee uiterste punten.
4
Daarnaast naast is het mogelijk om via de drukknop ‘insert from file’ reflectoren en gebieden van een ander bestand in te laden. Het verschil met load is dat niet alle aanwezige reflectoren en gebieden worden verwijderd, voor de gegevens uit de betreffende file worden worden ingevoegd.
Figuur 7.6: Toevoegen
7.2.3.4 Areas Na het uit uitvoeren van een configuratierun kunnen de reflectoren worden ingedeeld in verschillende areas. Deze optie dient om de het rekenwerk te minimaliseren. Het is onnuttig dat bij het zoeken naar corresponderende reflectoren, de opgeslagen reflectoren die zich helemaal niet in de in omgeving van de AGV bevinden als mogelijkheid aanzien kunnen worden. Dit moet in het achterhoofd worden gehouden wanneer een omgeving omgeving in verschillende areas wordt verdeeld. Kies de areas bijvoorbeeld per kamer of indeling van een kamer. Een area toevoegen gebeurt door met de rechtermuis te klikken op de visualisatie, deze ingedrukt te houden en dan de cursor te verslepen over het scherm. cherm. Tijdens het verslepen wordt een dynamisch gebeid getekend. Eens de gewenste grote bereikt, moet enkel de muisknop worden losgelaten. 7.2.3.5 Verwijderen Een area of reflector verwijderen kan eenvoudig door het identificatienummer in de betreffende tekstbox te plaatsen en daarna op de bijhorende drukknop te drukken (zie Figuur 7.7).
Figuur 7.7: Delete
7.3 Simulation Er kan voor gekozen worden om de databerichten van de LMS op te slaan tijdens een meting. Dit kan handig zijn bij de configuratierun. Na de configuratierun kan dan versnelt een simulatie uitgevoerd worden met steeds andere instellingen tot het gewenste resultaat resultaat bekomen wordt. Om ervoor te zorgen dat de ontvangen databerichten worden opgeslagen moet het item ‘Log measurement’ onder menu ‘Simulation’ aangevinkt zijn. Is dit het geval dan worden de databerichten opgeslagen in het 5
bestand ‘Loggen.log’. Deze bevindt vindt zich in de ‘debrug ‘ map van de applicatie. Om een simulatie uit te voeren moet eerst een bestand geopend worden. Dit gebeurt via Item ‘Open file’ onder menu ‘Simulation’. Daarna kan gekozen worden om één enkele meting uit te voeren (item ‘Single measurement’ surement’ onder menu ‘Simulation’) of de volledige simulatie te doorlopen lopen (item ‘Run simulation onder menu ‘Simulation’) tot het einde of tot er gestopt wordt(item ‘Stop simulation’ onder menu ‘Simulation’). Om de simulatie sneller of trager te doorlopen doorlopen is het mogelijk de intervaltijd tussen het verwerken van een meting aan te passen. De Simulatie sneller doorlopen gebeurt via de toetsencombinatie Ctrl+F of via het Item ‘Faster’ onder item ‘Speed’ onder menu ‘Simulation’. De Simulatie trager doorlopen, doorlopen, gebeurt via de toetsencombinatie Ctrl+S of via item ‘Slower’ onder item ‘Speed’ onder menu ‘Simulation’.
Figuur 7.8: Simulation menu
7.4 Visualisatie Op het hoofdscherm kunnen enkele visualisaties getoond worden. worden. Een visualisatie van de robot in de omgeving (grafiek RoomXY), een grafiek ‘Reflectors’ die gebruikt wordt om de werking uit te leggen en fouten te detecteren en als laatste een visualisatie van de RSSI-waarden. RSSI waarden. De visualisaties kunnen al of niet getoond oond worden door de items onder menu ‘Visualisation’ al of niet aan te vinken (zie Figuur 7.9).
Figuur 7.9: Hooofdscherm met visualisatie
6
7.5 OPC
Figuur 7.10: OPC settings
Om de opgemeten positie te kunnen gebruiken binnen het PLC programma van de mobiele robot en om het programma ‘Localisation LMS100’ te manipuleren wordt gebruik gemaakt van OPC variabelen.. De toekenning van de variabelen en de instellingen gebeurt via het scherm die geopend wordt na het klikken op de item ‘OPC’ onder het menu ‘Settings’ ‘ (zie Figuur 7.10) Eerst moet de gewenste OPC-server server geselecteerd worden via een combobox. Daarna verschijnt een treeview van de geselecteerde OPC-server. Er dienen zeven variabelen toegekend te worden: • • • •
•
• •
X: Een real die de X-coördinaat coördinaat van de AGV weergeeft. weergeeft Y: Een real die de Y-coördinaat coördinaat van de AGV weergeeft. weergeeft Angle: Een real eal die de oriëntatiehoek van de AGV weergeeft. weergeeft Error: Een boolean oolean die aangeeft als het programma ‘Localisation LMS100’ instaat is om de positie op een correctie manier te berekenen. Deze boolean is bijvoorbeeld ‘false’ als er geen ge tweee reflectoren door de LMS wordt gezien. Send position from PLC: Bij een stijgende flank van deze boolean wordt de positie van de AGV berekend door Odometry in het PLC programma, ontvangen door het programma ‘Localisation LMS100’. Dit kan nuttig zijn bij opstart of na dalende flank van Error boolean. Send position to PLC: Bij een stijgende flank van deze boolean wordt wordt de positie vanuit het programma ‘Localisation LMS100’ verzonden naar het PLC programma. Measure: Als deze Boolean ‘true’ is, wordt de positie van de AGV berekend in het programma ‘Localisation LMS100’.
De Toekenning van iedere variabele gebeurt door in de treeview op de gewenste variabele te klikken. Dan zal deze variabele verbonden zijn met de muiscursor. Verplaats de muiscursor naar het gewenste tekstvak. Bij het klikken op het gewenste tekstvak zal de naam van de variabele in het tekstvak verschijnen. Indien een verkeerde variabele werd geselecteerd dient enkel enkel geklikt te worden op het scherm naast een tekstvak.
Figuur 7.11: OPC scherm
7
Indien effectief via OPC variabelen gewerkt wil worden, dient de checkbox naast ‘Use OPC’ aangevinkt te zijn (zie Figuur 7.11) . Na het toekennen van alle variabelen en het al of niet aanvinken van de checkbox kunnen deze instellingen opgeslagen worden via de drukknop ‘Save’.
8
8 Programmacode Deze bijlage bevat de code van de clsPosition. De overige klassen en code kunnen worden teruggevonden op de masterproef cd.
1