De Vliegende Hollander - Een zelfstandig varende robot-zeilboot

Maat: px
Weergave met pagina beginnen:

Download "De Vliegende Hollander - Een zelfstandig varende robot-zeilboot"

Transcriptie

1 De Vliegende Hollander - Een zelfstandig varende robot-zeilboot Willem Melching 26 januari 2012 N.B. Klik op het plaatje voor een filmpje Willem Melching Valeriusstraat GJ Amsterdam willem.melching@gmail.com Het 4e gymnasium Amsterdam Begeleider: Sven Aerts

2 Purpose Oceanographic research requires large, polluting and expensive ships. The goal of my research was to develop a cheaper, less polluting alternative to these research ships. I have designed and built an autonomous control system that transforms a sailing vessel into a sailing robot. Since robot ships can be smaller and do not require human operators they are much cheaper. They use the wind as their main source of energy and therefore they can be selfsupporting for a very long time. The sailing robot should be capable of following a pre-defined route, and should react to its environment, like the wind and the waves. My research was threefold. First, to investigate the minimal requirements for a fully functioning autonomous sailing robot. Second, to build this ship and write the necessary software. Third, to test whether this ship is fit for the purpose it was designed for: independent sailing. In my project I have combined theoretical and practical insights from different scientific fields such as electrical engineering, signal processing, control theory, informatics and last but not least: sailing. Method English summary To be autonomous, the sailing ship must at all times have information about three essential variables: wind direction, position and heading. This information is supplied by sensors and is processed in the on-board computer. This computer controls through actuators - the rudder and the sails of the ship. The software translates the information from the sensors into commands that control the vessel. 1) To control the position of the sails, the on-board computer must know the wind direction. The wind direction is determined by means of a wind vane. Every wind direction corresponds to an ideal position of the sails [1]. This position is transferred to the sail actuator. Because a sailing ship cannot sail against the wind, the information about the wind direction is also required for planning the route. 2) To plan the route, the current position of the boat on earth is required. This information comes from a Skylab SKM53 GPS module. The on-board computer uses this information to calculate the path, a rhumb line, to the next waypoint of the current predefined route. In case the boat needs to sail too close to the wind, the route will not be a straight line but the boat will follow a zigzag pattern. Sailors call this beating. To accomplish this, I investigated several algorithms that calculate a beating pattern [2]. Then I developed my own version of such an algorithm, to make it suitable for implementation on my low-end hardware and improve the efficiency of the trajectory. 3) To keep the boat on course the onboard computer needs to know the current heading of the boat. The current heading is measured by a HMC6343 tilt compensated digital compass. The information from the compass is filtered by a 5 pole Butterworth low pass filter to reduce unwanted oscillations that originate from fluctuations in the compass reading. Then this signal is fed into a PID controller that calculates a new rudder position. All information from the sensors is combined in the on-board computer, an ARM lpc1768 development board, the mbed. Ten times per second the on-board computer processes this information and uses the predefined route to calculate a new rudder and sail position. Since there is no code available for sailing robots, I created a C++ software from scratch to run on the mbed microcontroller. Results The result of my experiment is a ship that can sail autonomously and make decisions on its own. My tests show that under normal conditions (light to medium wind) the boat was able to complete any given route. All necessary intelligence is located on-board and therefore it can function without any contact with the shore. This makes it a true autonomous sailing robot. I succeeded in creating a proof of concept of an autonomous sailing vessel for only e350. Since the boat lacks solar cells, it is not completely self-sufficient yet. An improved version could serve as an alternative to full size research ships and could costs less than e600 (<$785) only.

3 Inhoudsopgave 1 Inleiding 1 2 Nut 3 3 Zeilen De voornaamste onderdelen De zeilen Schoten Mast Zwaard, kiel en roer De windrichtingen Voor de wind Ruime wind Halve wind Aan de wind In de wind & opkruisen Automatisering en de kernbegrippen van het robotzeilen Regeltechniek - de PID PID regeling P deel I deel D deel Combineren Polar Grootcirkel en loxodroom Robotzeilen: hardware en software De boordcomputer: multitasking en efficiëntie PID regeling Loxodroom Kompas: de koersbepaling Filtering GPS: de positiebepaling Servo s aansturen: het roer en de zeilen Communicatie tussen de laptop en de boordcomputer: Sailcom PC Interface Hoofdvenster Roer & zeil Kompas & vaantje PID Route Route plannen Opkruisen Wat is opkruisen? Algoritme van Stelzer en Pröll Mijn algoritme

4 7 Hardware: sensoren en actuatoren Boot Vorige pogingen Micromagic Sensoren GPS Kompas Vaantje Actuatoren Servo Elektronica ARM microcontroller Draadloze communicatie met de wal Schema Resultaten en evaluatie Algemene indruk Hardware PID regelaar Route plannen Discussie Conclusie Appendix A: Foto s Appendix B: De Programmacode van de boordcomputer 54

5 Dankwoord Voordat ik begin wil ik een aantal mensen bedanken. Zonder hen was dit profielwerkstuk nooit geslaagd. Als eerste wil ik de school bedanken voor het profielwerkstuk-fonds. Met dit geld kon ik de dure onderdelen van mijn boot aanschaffen. Ook wil ik Pieter Adriaans bedanken, bedenker van de RoboSail, hij heeft mij ook veel adviezen gegeven over hoe ik dingen aan moest pakken. Verder wil nog aan aantal andere mensen bedanken: Estevan Veenstra als luisterend oor, Robert Rosen Jacobson, minitransat solozeiler en overbuurman, van wie ik het modelbootje gekocht heb. De MicroMagic vereniging en zijn leden hebben mij bij hun evenement gastvrij ontvangen en veel tips gegeven. Tot slot wil ik Sven Aerts, mijn begeleider, bedanken. Hij was mijn steun en toeverlaat bij het bouwen en testen van de boot, en het schrijven van het werkstuk. Hij heeft mijn werkstuk talloze keren nagekeken, heeft geholpen met het oplossen van problemen en heeft mij met eindeloos geduld dingen uitgelegd.

6 1 Inleiding Iedereen kent het verhaal van de Vliegende Hollander, het spookschip dat zonder bemanning eeuwig over de oceanen bleef varen. Een automatisch varende zeilboot spreekt tot de verbeelding van elke kapitein. Stel je voor dat de VOC schepen vanzelf naar Indonesië hadden kunnen varen en de bemanning niet maanden op gevaarlijke en onhygiënische schepen had hoeven doorbrengen. Maar ook tegenwoordig zouden zelfstandig zeilende boten goed van pas komen. De eerste vormen van zelfstandige besturing waren heel simpel, men zette dan gewoon het roer vast zodat er een paar uurtjes geslapen kon worden. Het echt automatisch sturen is pas iets van de afgelopen honderd jaar, omdat toen pas de machines en materialen om de benodigde mechanica te maken beschikbaar waren[3]. De eerste stuurautomaat was een mechanisch systeem dat de kracht van de wind gebruikte om het roer te bewegen. Deze stuurautomaat volgde de wind, dus als de wind draaide, dan draaide de boot mee. Pas na de snelle ontwikkelingen in de microelektronica was het mogelijk om een vaste koers te volgen. Vanaf toen waren deze regelaars elektronisch en dreven met behulp van een motor het roer aan. Deze stuurautomaten gebruikten echter geen slimme regelingen of algoritmes, dus raakten ze bij wat zwaarder weer al gauw van slag. Bovendien gingen ze ook nog uiterst kwistig met elektriciteit om, en dat is aan boord een schaars goed. Moderne stuurautomaten zijn door verdere ontwikkelingen in de automatiseringstechniek, regeltechniek en elektronica al veel beter geworden. Ze gebruiken bijvoorbeeld een GPS om zelf de koers naar een ingesteld punt uit te rekenen. Ondanks al deze vooruitgang is er nog steeds een kapitein vereist. Mijn profielwerkstuk bestaat dan ook uit het bouwen van een boot die zonder kapitein van A naar B kan zeilen, en desgewenst via C weer terug. Het idee voor dit profielwerkstuk ontstond eigenlijk toen ik een bootje bij ons in de kelder vond. Dit bootje is daar minstens dertig jaar geleden door de vorige bewoners achtergelaten. Het bootje heeft daar gestaan sinds mijn ouders en ik in dit huis wonen, maar er is nooit wat mee gedaan. Dus na dertig jaar heb ik het bootje uit de kelder gehaald en ontdaan van een dikke laag stof. Wat te voorschijn kwam was een houten rompje van een modelboot van circa 50 cm lang. Bij nadere inspectie bleek er onder het kajuitdakje een naam te staan. Hier stond dat de naam van het bouwpakket Astrid was. Na wat googelen bleek dat de Astrid een bouwpakket was van rond 1970 van de firma Suls uit Lunteren. Deze firma bestaat echter niet meer. De boot had de tand des tijds redelijk doorstaan, maar dat wilde natuurlijk niet zeggen dat het bootje vaarklaar was. Verre van dat zelfs, het was zo lek als een mandje, het roer zat muurvast en er ontbraken nog een mast en zeilen. Dit was het beginpunt van mijn profielwerkstuk. Mijn idee was een modelboot met robotbesturing te maken. Daarvoor heb ik zowel de hardware als de software zelf gebouwd en geprogrammeerd. De hardware bestaat uit een samenspel van sensoren, zoals een kompas en een gps, en een aantal servomotoren die de zeilen en het roer bedienen. De software bestaat uit een boordcomputer die aan boord van het schip informatie verwerkt en commando s uitvoert. Vanaf de wal kan de boot voorzien worden van een opdracht. Om deze opdrachten te geven en informatie van de boot te ontvangen heb ik een grafische bedieningsomgeving geprogrammeerd en een communicatie protocol bedacht. Zo kon ik al mijn interesses combineren: zeilen, knutselen, programmeren, elektronica, natuurkunde en wiskunde. Robotzeilen is een ingewikkeld computerprobleem omdat zeilen een complexe beweging is waar enorm veel variabelen een rol spelen. Bij mijn literatuuronderzoek en de praktijktesten ontdekte ik al snel dat er geen behoorlijke methode bestond om een boot slim en efficiënt tegen de wind in te laten zeilen. Laveren - zig zag tegen de wind in varen - is een van de ingewikkeldste 1

7 onderdelen van het zeilen. Er was een bestaand algoritme, maar ik heb een eigen algoritme geprogrammeerd wat meer geschikter was voor mijn boordcomputer. Dat maakt mijn werkstuk ook in theoretisch opzicht innovatief. Ik ben niet de eerste die zich op dit probleem gestort heeft. De eerste was Pieter Adriaans. Een pionier op het gebied van robotzeilen[4]. Hij wilde echter geen volledig autonome robot bouwen maar een ondersteuning voor solozeilers. Ik heb ook een gesprek met hem gehad, waarin ik de details van zijn boot met hem besproken heb. Daarnaast zijn er nog een aantal andere mensen bezig geweest. Bijvoorbeeld Stelzer en Pröll die een systeem bedacht hebben om op te kruisen[2]. Maar ook Colin Sauzé en Mark Neal[5] zijn bezig geweest met het maken van een dergelijke robot. Ik maak echter een compleet systeem dat alle benodigde technieken en theorieën combineert. Voor een goed begrip: ik heb geen boot met een afstandsbediening gemaakt, maar een volledig zelfstandig varende boot. Mijn boot is een eigentijdse versie van de Vliegende Hollander, zolang de boordcomputer en de servo s stroom heeft kan hij over de oceanen blijven varen. 2

8 2 Nut Niet alleen solo-zeilers zullen heel blij zijn met een extra elektronisch bemanningslid die hun bijna al het werk uit handen neemt als ze willen gaan slapen. Ook voor wetenschappelijk onderzoek zijn zelfstandig bestuurde zeilboten handig. Niet alleen vanwege de verminderde kosten, maar ook vanwege een nieuwe methode van gegevens verzamelen die de komende jaren waarschijnlijk steeds meer toegepast gaat worden. De belangrijkste kostenbesparing zit in het bootje en de afwezigheid van personeel die het bootje moet besturen. Een autonoom modelbootje kost in massaproductie zeer weinig en het kost geen manuren om zo n bootje op zijn bestemming te krijgen, dit in tegenstelling tot de kosten van een complete wetenschappelijke expeditie. Zo kan er flink bespaard worden bij regulier onderzoek. Bovendien creeërt dit ook nieuwe mogelijkheden voor onderzoekers (zoals studenten en scholieren) met een klein budget[6]. Ook is er een verandering aan het plaatsvinden in de manier waarop data worden verzameld. De TU-Delft heeft bijvoorbeeld met hun Delfi-n3Xt project kleine goedkope satellieten gemaakt. Het doel daarvan is om een grote satelliet door een hele wolk van kleintjes te vervangen. Doordat deze kleine satellieten samenwerken kunnen ze beter data verzamelen, en als er eentje stuk gaat kan zijn taak makkelijk door anderen worden overgenomen. Als zo bijvoorbeeld een telescoop gevormd wordt, is de resolutie door de onderlinge afstand ook nog eens veel hoger dan met conventionele satellieten mogelijk zou zijn. Bovendien zijn deze kleine satellieten veel goedkoper waardoor de financiële drempel om onderzoek in de ruimte te doen aanzienlijk wordt verlaagd[7][8]. Hetzelfde principe kan natuurlijk ook op bootjes toegepast worden. Stel dat je iets op verschillende plekken op aarde wil meten, dan stuur je een groot aantal bootjes, bijvoorbeeld duizend stuks, met de juiste sensoren de oceaan op. Je kan dan in korte tijd een groot aantal precieze metingen doen op veel verschillende plekken tegelijk. 3

9 3 Zeilen Zeilen lijkt simpel. Iedereen die op de fiets wel eens wind mee heeft gehad, heeft gezeild. De wind duwt je voort en verder hoef je niet veel te doen. Tenminste, zo lang je wind mee hebt. Zeilen is een van de meest complexe manieren van voortbewegen. Want een zeilboot kan meer dan met wind mee voortdrijven. Al een paar duizend jaar proberen zeilers en ontwerpers zo slim mogelijk gebruik te maken van de wind. Ze kunnen ook goed overweg met wind van opzij. Recht tegen de wind in varen, dat lukt niet, maar met een kleine hoek ten opzichte van de wind lukt het om bijna tegen de wind in varen. In de loop der eeuwen is de boot van een simpel vlot met een doek om wat wind te vangen, geëvolueerd tot een efficiënte racemachine. Zoals waarschijnlijk bekend houden zeilers er van om alles aan boord met speciale termen aan te duiden. Deze termen komen in de rest van mijn werkstuk ook voor, dus ik zal ze een voor een doornemen. 3.1 De voornaamste onderdelen Een moderne boot is een complex stuk techniek. Daarom zal ik eerst de belangrijkste onderdelen van de boot bespreken en aangeven welke onderdelen in mijn robot een rol spelen. Daarna zal ik de verschillende hoeken waaronder een boot kan varen doornemen en aangeven waar bij mijn robotzeilboot de grote problemen zaten De zeilen Een zeilboot heeft een zeil. Meestal zelfs twee (of meer) zeilen: een voorzeil en een hoofdzeil. Het voorzeil noemen we de fok, en het hoofdzeil het grootzeil. Het grootzeil zit vast aan de mast. Tussen de top van de mast en de punt van de boot loopt een draad. Zeilers noemen dit het voorstag. Het voorzeil zit aan zijn voorkant vast aan dit stag, de onderkant en de achterkant kunnen vrij bewegen. Het grootzeil zit met zijn voorkant, de lange rechte kant, aan de mast vast. De onderkant van het grootzeil zit vast aan een lange buis, deze buis heet de giek. De giek zorgt dat het grootzeil min of meer op zijn plaats blijft zitten. De achterkant van het grootzeil - de langste en schuine kant - is open Schoten Aan los wapperende zeilen heb je niet veel, die vangen geen wind. Daarom worden de zeilen aangetrokken door touwen. Maar aan boord heet dat natuurlijk geen touw. Zeilen trek je aan met een schoot. Deze schoten zitten aan de punt van de fok en onder aan de giek. Daarmee kun je de zeilen strakker of losser zetten. Afhankelijk van de wind trek je de zeilen strakker aan of laat je ze juist vieren. Zeilen zijn zo gesneden dat ze een profiel vormen wanneer je ze met de schoten aantrekt. Dat profiel is in principe vergelijkbaar met het profiel van de vleugel van een vliegtuig. Pas wanneer het zeil een mooi profiel vormt heb je lift. De boot stijgt niet op zoals een vliegtuig, maar zal wel vooruitgaan door het water. De kracht die er bij een vliegtuig voor zorgt dat hij in de lucht blijft, oefent hier een kracht uit die haaks op het zeil staat. De stand van de zeilen is dus van essentieel belang. Mijn robotzeilboot heeft ook een fok en een grootzeil. De schoten worden bediend met servomotoren en via de software worden de zeilen strakker of losser gezet. Daarbij probeert het 4

10 programma natuurlijk een optimale snelheid te behalen. Anders dan veel mensen denken gaat een boot die schuin vaart niet sneller. Integendeel, een boot moet bijna recht op varen Mast Een zeilboot heeft altijd een mast. De mast zit vast, en blijft netjes overeind omdat hij op zijn plaats wordt gehouden door sterke kabels. Deze kabels heten de verstaging, je kunt daarmee de mast niet alleen vastzetten maar ook een beetje buigen of juist losser zetten. Op wedstrijdboten wordt telkens de stand van de mast veranderd. Ik heb deze factor bij mijn boot buiten beschouwing gelaten Zwaard, kiel en roer Wanneer een fietser harde wind van opzij heeft, dan wordt de fietser opzij geduwd. De banden zorgen er echter voor dat je niet naar de weg af glijdt. De wind duwt op jouw en je fiets, terwijl de onderkant op zijn plaatst blijft. Dit moment zorgt er voor dat je schuin gaat. Je snelheid zorgt er echter voor dat je toch redelijk rechtop blijft en vooruit gaat. Een boot wordt bij zijwind ook opzij geduwd. Maar in de loop der eeuwen zijn daar wel remedies voor bedacht. Ouderwetse boten zoals platbodems hebben twee grote planken, zwaarden, aan de zijkant van de boot. Zo heeft een moderne boot midden onder zijn romp een uitstekende plank (zie figuur 1). Deze plank noemen we zwaard of kiel. Deze plank is geplaatst in de vaarrichting, hierdoor ondervindt een boot nauwelijks weerstand als hij rechtuit gaat. Als de boot echter door de wind weggezet wordt, zorgt het oppervlakte van de plaat er voor dat de boot op zijn plek Figuur 1: Een roer en een kiel bij een modelboot blijft. Net als bij de fiets zorgt dit voor een moment waardoor de boot schuin gaat. Om de boot toch recht te houden kan er iemand op de rand van de boot gaan zitten, maar als dat niet mogelijk is (bijvoorbeeld als de krachten te groot zijn) kan er een gewicht aan het zwaard gehangen worden. Een zwaard met een gewicht er aan heet een kiel. Ook het besturen van de boot gebeurt door middel van een langwerpig en dun voorwerp onder water. Dit voorwerp zorgt er voor dat de stroming van het water onder de boot geregeld kan worden. Hierdoor kan de boot van richting veranderen. Moderne boten hebben achteraan de boot een roer. Met dit roer kun je de boot sturen, ook is het een goede manier om de boot tegen afdrijven bij zijwind te beschermen. Mijn boot heeft een kiel en een roer. Het roer kan ik met servomotoren aansturen. Dit is een essentieel onderdeel om de boot op koers te houden en natuurlijk zo efficiënt mogelijk gebruik te maken van de wind. 5

11 3.2 De windrichtingen Zowel de koers als de wind zullen in de praktijk geregeld veranderen. Dat betekent dat de wind telkens uit een andere hoek de boot bereikt. Daarom moet de zeiler - al dan niet bewust - voortdurend beslissingen nemen. Steeds als de wind op de koers van de boot verandert moet hij de stand van zeilen en roer aanpassen. Daarbij moet hij ook nog voortdurend zijn snelheid blijven controleren en ook nog in de gaten houden of hij zijn einddoel zal bereiken. Zeilen is - zoals gezegd - een complexe handeling Voor de wind Als je op de fiets wind mee hebt, dan komt de wind recht van achteren. In Figuur 2 is het bootje aan de onderkant van de cirkel. Zeilers noemen dat voor de wind. Het zeil moet dan helemaal los zodat het haaks op de boot (en de wind) staat. Op die manier vang je de maximale hoeveelheid wind. Omdat de fok daarbij in de schaduw van het grootzeil kan terecht komen, wordt de fok meestal aan de tegenovergestelde kant gezet. Ondanks het spreekwoord voor de wind gaan is dit niet de koers waarbij de grootste snelheid bereikt wordt. Ook is het een lastige koers om veilig te varen. Als de koers (of de wind) een beetje verandert kan de wind, die natuurlijk nooit precies van achteren komt, plotseling aan de andere kant van de boot gaan waaien. Het grootzeil gaat dan vanzelf naar de andere kant, en dit gebeurt met een enorme snelheid. Dat is gevaarlijk Figuur 2: Verschillende koersen en en kan bemanningsleden verwonden en zelfs de mast zeilstanden - de wind komt van links doen breken. Deze onverwachte manoeuvre heet een klapgijp. Gelukkig is een klapgijp voor mijn schaalmodel geen probleem omdat alle onderdelen relatief licht zijn Ruime wind Figuur 3: De krachten die op het zeil werken Het zeilt veel prettiger als de wind niet precies recht van achteren komt, maar een beetje schuin van achter. Deze windrichting heet ruime wind. Je draait de boot dan een beetje naar de de wind toe. Door dit oploeven - zoals zeilers zeggen - komt de wind schuin van achteren. De wind valt in met ongeveer 135 graden. Bij ruime wind staat je zeil iets strakker, maar nog steeds vrij open op de wind. De snelheid zal hoger liggen dan bij voor de wind. Door de grote hoek van inval ligt de boot vrij plat op het water. Het is daardoor een snelle en comfortabele koers. 6

12 3.2.3 Halve wind Als je nog verder naar de wind toe stuurt - oploeft - staat de wind haaks op de boot, dit heet halve wind. Bij halve wind staat je zeil in een hoek van ongeveer 45 graden op je boot. Je vraagt je natuurlijk af hoe een boot vooruit kan gaan als de wind van de zijkant komt. Vroeger kon dit ook niet. Zo moesten de schepen van de VOC wachten tot de wind gunstig was en ze naar het zuiden konden varen. Tegenwoordig is het mogelijk om wel met halve wind te varen. De wind die in het zeil komt zorgt voor een kracht die haaks op het zeil staat, schuin naar voren dus. Deze kracht is te ontbinden in twee losse krachten, een kracht naar voren en een kracht naar opzij. De kracht naar voren - dankzij het profiel in het zeil - zorgt voor snelheid. De kracht naar opzij zou de boot uit koers duwen, maar dankzij de kiel onder de boot blijft de boot min of meer op koers. De kiel zorgt voor een enorme waterweerstand als de boot naar opzij probeert te gaan. Het nadeel hieraan is wel dat de boot als het ware over de kiel heen valt en de boot scheef zal gaan. Om omslaan tegen te gaan en het schuingaan te beperken is er een gewicht onderin de kiel geplaatst Aan de wind Als je nog verder naar de wind toestuurt, dan komt de wind schuin van voren, deze koers heet aan de wind. De hoek van inval is tussen de 40 en 25 graden. Bij aan de wind vaar je bijna tegen de wind in, en is de kracht in het zeil bijna geheel naar de zijkant gericht en nog maar voor een klein deel naar voren. De snelheid is dus relatief laag, maar toch is het mogelijk om naar de wind toe te zeilen, iets wat op het eerste gezicht onmogelijk lijkt. Bij aan de wind zet je je zeil zo strak mogelijk, dus bijna boven het midden van de boot. Figuur 4: De krachten op het zeil bij verschillende koersen 7

13 3.2.5 In de wind & opkruisen Verder oploeven kan niet, je zou dan in de wind komen te liggen. De wind komt dan recht van voren en je komt niet meer vooruit. Punten die in de wind liggen zijn dus niet bezeild. Toch is het mogelijk om deze punten te bereiken, daar is een speciale manoeuvre voor, namelijk het opkruisen oftewel laveren. Bij opkruisen vaar je niet rechtstreeks naar het doel, maar vaar je zo scherp mogelijk aan de wind. Als je een tijdje over de ene boeg gevaren hebt, dan gooi je bij een flinke snelheid het roer een heel eind om. De punt van de boot draait naar de wind toe, maar dank zij de snelheid ga je door de wind heen en je vangt weer wind. Maar nu van de andere kant. Je vaart dan zo scherp mogelijk over de andere boeg verder. Bij door de wind gaan ga je dus door de wind heen om vervolgens over de andere boeg Figuur 5: De route bij het opkruisen te varen. de complete manoeuvre heet overstag gaan. Op deze manier ga je zijwaarts heen en weer, maar kom je wel steeds dichter bij je doel. De snelheid is redelijk hoog, maar omdat je zig-zaggend op je doel afgaat (zie figuur 5) wordt de afstand groter en ben je uiteindelijk relatief lang onderweg. Het juiste moment van overstag gaan om het traject zo efficiënt mogelijk af te leggen is een kwestie van inschatting van de stuurman, ervaring en locale omstandigheden. Op een lang traject zul je minder vaak overstag gaan dan op een korte baan. 8

14 4 Automatisering en de kernbegrippen van het robotzeilen Is zeilen dan zo ingewikkeld dat je er geavanceerde computers voor nodig hebt? Ja, want zeilen bestaat namelijk niet alleen uit het varen van een rechte lijn. Een zeilboot kan bijvoorbeeld niet tegen de wind in varen, om toch bij de bestemming aan te komen moet er een route worden gepland die wel helemaal te varen is en toch zo efficiënt mogelijk naar het doel gaat (zie par. 6.1). Een zeilrobot heeft dus zeer uiteenlopende taken. Om de stabiliteit van een robot te bevorderen is het belangrijk om de verschillende onderdelen goed te scheiden. Elk onderdeel opereert op zichzelf en geeft zijn resultaten door aan andere onderdelen. Systemen die hoger in de hiërarchie staan gebruiken dan de resultaten van onderdelen lager in de hiërarchie[9]. Een robot bouwen die goed op zijn omgeving reageert is een zeer complexe taak. Stel dat je een boot op koers wil houden. Dat is lastig omdat er veel factoren zijn die kracht op de boot uitoefenen en waardoor hij dus van koers raakt. We kunnen deze factoren opsplitsen in overzichtelijke en onoverzichtelijk factoren. De overzichtelijke factoren zijn makkelijk te meten of te voorspellen. De voornaamste zijn: Koers De koers is vrij precies te meten met een elektronisch kompas. Dit kan op een hoge frequentie (10 keer per seconde) en ook nog eens met een grote nauwkeurigheid. Positie De positie is te meten met een GPS. De meetfrequentie van een GPS is al lager (1 keer per seconde), en de nauwkeurigheid is slechts drie meter[10]. Toch is dit nog ruim voldoende voor zeilers. Windrichting De windrichting is ook belangrijk, en goed te meten met een windvaan. De benodigde sensor is alleen vrij lomp, waardoor ik hem op de kant moest zet in plaats van op het bootje. Ook zijn er een aantal onoverzichtelijke factoren, deze zijn moeilijk te meten, of zelfs onvoorspelbaar. Dat zijn: Wind De windkracht is een belangrijk iets om te weten, want bij een sterkere wind moet er anders gestuurd worden. De windkracht is wel te meten, maar het grootste probleem zijn de vlagen. Deze zijn niet te voorspellen, en pas te meten als het eigenlijk al te laat is. Golven De golven zijn net als de wind moeilijk te voorspellen, en toch een belangrijke factor om rekening me te houden bij het zeilen. Een schipper ziet een golf aankomen en kan hier tijdig op reageren, een robot kan pas reageren als het al te laat is. Om een robot automatisch te laten zeilen moet deze een aantal taken zelfstandig uitvoeren. Hierbij kwamen allerlei problemen naar voren. Voor elk van deze problemen moest ik een oplossing bedenken. Ik zal in deze paragraaf elke oplossing kort toelichten en bij sommige een wiskundige onderbouwing geven. Ook zal ik de algoritmes bespreken die ik geïmplementeerd heb om de boot zijn taak te laten volbrengen. Het zelfstandig plannen en varen van een route vergt een ingewikkeld samenspel van een aantal elementen. Om goed te begrijpen hoe al deze elementen samenwerken en elkaar beïnvloeden zal ik de verschillende concepten apart uitleggen. Uitrekenen hoe een boot een route moet varen is niet van te voren uit te rekenen. Je kan niet zeggen: Vaar 200 meter rechtdoor en ga dan rechtsaf.. Er hoeft maar één golf of windvlaag te komen en je komt nooit meer op je bestemming aan. Om een boot op koers te houden moet de omgeving constant in de gaten gehouden worden en hier moet tijdens het varen op gereageerd worden. 9

15 PID-regeling Om de boot op koers te houden moet er een regeling zijn die continue het roer bijstelt zodat de boot de juiste kant op vaart. Een oplossing uit de regeltechniek is de zogenaamde proportionele, integrerende en differentïerende regelaar, afgekort de PID regelaar. Deze gebruikt de afwijking ten opzichte van de juiste koers om het roer in te stellen. Opkruisen Ook een belangrijke vraag is wat de ideale koers is als de te zeilen route in de wind ligt, oftewel niet bezeild is. Omdat je niet direct naar het doel kan varen moet je opkruisen. Doordat elke koers in dit patroon wel bezeild is kan de route wel gevaren worden. Maar de vraag is wat de ideale hoek ten opzichte van de wind is. Als je de hoek kleiner neemt hoef je minder afstand af te leggen, maar zeilt de boot langzamer. Als je de hoek vergroot gaat de boot sneller, maar moet je ook weer meer afstand afleggen. De oplossing hiervoor is om een grafiek te maken waarin je de snelheid ten opzichte van de wind uitzet tegen de snelheid. Uit deze grafiek kun je de beste koers aflezen[1]. Bij het opkruisen is het ook belangrijk wanneer er overstag gegaan wordt. Op papier zijn alle routes even lang, het maakt dus niet uit of je met twee slagen opkruist of met tien. In de praktijk blijkt het wel uit te maken. Een overstagmanoeuvre kost tijd en snelheid, waardoor het beter is om zo min mogelijk overstag te gaan. Maar dit heeft ook weer twee nadelen. Ten eerste wordt de benodigde ruimte voor het opkruisen groter omdat hij veel meer breedte in beslag neemt. Dit is niet handig als je in nauw vaarwater of in een vaargeul moet varen. Het tweede nadeel is wanneer na een hele tijd varen de wind plotseling zou draaien. Dan heb je een heel stuk voor niets gevaren en moet je feitelijk weer opnieuw beginnen. Het is dus zaak om de gulden middenweg te vinden. Hier heb ik in de software een mogelijkheid gemaakt om de breedte van de manoeuvre in te stellen, om zo experimenteel vast te stellen wat voor verschillende omstandigheden ideaal is. Koerslijn Er moet ook uitgerekend worden welke kant je op moet varen om in een rechte lijn naar een bepaald punt te varen. De kortste route heeft echter een nadeel, de koers is door de bolling van de de aarde niet gedurende de hele route constant. Dit is tamelijk een ingewikkeld probleem en komt in paragraaf 4.4 uitgebreid aan de orde. 4.1 Regeltechniek - de PID Leonardo da Vinci bedacht al in de 15 e eeuw al een regeling om de snelheid van wind en watermolens te regelen. Ongeveer een eeuw later, toen het mogelijk was om metaal te bewerken, ontwierp een Nederlander een temperatuurregeling die gebruik maakte van het uitzetten en inkrimpen van een metaal bij temperatuursveranderingen. De ontwikkelingen in de regeltechniek raakten in de 18 e eeuw in een stroomversnelling. James Watt bouwde toen een regeling die met behulp van de zwaartekracht en de centrifugaalkracht de hoeveelheid stoom regelde die in een stoommachine gaat. Voor die tijd moest dat met de hand gebeuren[11]. Regelingen zijn echter pas gemeengoed geworden na Het Amerikaanse bedrijf Honeywell presenteerde toen een lijn van sensoren die druk en temperatuur konden meten. Deze sensoren gaven een luchtdruk af die proportioneel was met de gemeten waarde. Deze luchtdruk kon vervolgens gebruikt worden om mechanische of analoge elektronische regelaars aan te sturen. Niet veel later, in de jaren zeventig, kwamen ook digitale computergestuurde regelingen op de markt. 10

16 Figuur 6: Regeling op een stoommachine Alle regelaars, of ze nu mechanisch, analoog of digitaal zijn, werken volgens dezelfde basisprincipes. De regelaars hebben een input, afkomstig van een sensor. Op deze manier kunnen de regelaars de werkelijkheid of het proces in de gaten houden. De input wordt ook wel process variable genoemd. Ook heeft de regelaar een waarde om de input mee te vergelijken, deze heet het setpoint. De regelaar neemt vervolgens het verschil tussen de input en het setpoint, deze waarde is de afwijking of error. Vervolgens wordt deze afwijking vertaald in een output. Deze vertaalslag kan simpel zijn, maar ook gebeuren met ingewikkelde formules en algoritmes. Deze output stuurt het proces aan. De regelaar krijgt vervolgens via de input weer terugkoppeling of feedback van zijn acties, en stelt zijn ouput weer bij als dat nodig is[12]. Figuur 7: Blokschema van een regelsysteem In de regelaar op het bootje zijn al deze elementen ook terug te vinden. De input is het kompas, die de richting meet waarin het bootje vaart. Het setpoint komt van de GPS, namelijk de koers die de boot moet varen om zijn doel te bereiken. Vervolgens wordt de error berekend en worden hier drie formules op losgelaten. De output van de regelaar wordt dan gebruikt om het roer te bedienen. Het roer zorgt er dan weer voor dat de koers van het bootje verandert. Op deze manier krijgt de regelaar via het kompas weer feedback van zijn acties. 4.2 PID regeling Om de roerstand van het bootje te berekenen en voortdurend aan de nieuwe omstandigheden aan te passen maak ik gebruik van een proportionele, integrerende en differentiërende regeling, kortweg een PID regeling. De regelaar bestaat uit drie losse onderdelen die op het einde samengevoegd worden. De werking van deze drie onderdelen is het beste uit te leggen met een simpel voorbeeld. Als je s ochtends onder de douche stapt dan moet je de temperatuur van het water instellen. Om te beginnen draai je de kraan met koud water open om vervolgens met warm water de temperatuur te regelen. Eerst voel je temperatuur van het water, en vergelijk je deze met de gewenste temperatuur. Vervolgens schat je hoeveel je de warmwaterkraan in eerste instantie open moet draaien om de gewenste temperatuur te bereiken. Dit is het eerste deel van de regeling. Daarna warmt het water op en neemt de afwijking af. Dan komt het tweede deel van de regeling in actie, nu wordt over langere tijd bekeken hoeveel warm water er ongeveer nodig is 11

17 om de temperatuur zo goed mogelijk op de gewenste waarde te houden. Maar er is ook nog een derde deel nodig, dat ingrijpt in onverwachte situaties. Stel: iemand draait elders in huis de koud water kraan helemaal open, daardoor zou jouw douche plotseling veel te heet worden. Daarom moet er nu direct worden ingegrepen. Daarom kijkt het derde deel van de regeling hoe snel de temperatuur verandert. De PID-regeling bestaat altijd uit deze drie onderdelen die elk een deel van de uitgangswaarde van de regeling bepalen. Elk van de drie onderdelen berekent apart een uitgangswaarde aan de hand van de afwijking met de ingestelde koers. Daarna worden deze drie waarden met parameters vermenigvuldigd en opgeteld[13]. Voor mijn boot is de PID regelaar geschikt gemaakt voor het aanhouden van een koers en het reageren op onverwachte gebeurtenissen P deel Het P of proportioneel deel is het deel van de uitgangswaarde dat recht evenredig is met de afwijking tot de ingestelde waarde. Dit is in formulevorm weer te geven als: P (t) = e(t) (1) Waarin e(t) de afwijking op tijdstip t is. Op het bootje kan de afwijking niet continue gemonitord worden, daarom wordt de afwijking op vaste tijdstippen bemonsterd. Daarom is er naast deze continue versie van het P deel ook een discrete variant nodig. Deze ziet er als volgt uit: P (t i ) = e(t i ) (2) Het P deel is het belangrijkste deel van de regelaar. Het belangrijkste van een regeling is namelijk dat hij de afwijking met een ingestelde waarde elimineert. Daarom heeft het P deel een direct verband met de afwijking. Als er alleen een P deel toegepast zou worden zou de regelaar al redelijk werken, er treden dan alleen een aantal vervelende dingen op. Er ontstaan oscillaties en een constante afwijking wordt niet opgemerkt I deel Het I of integrerend deel is het deel van de uitgangswaarde dat een maat is voor de cumulatieve afwijking. Dus hoe langer een afwijking aanwezig is hoe groter de waarde van het I deel. Wiskundig kan dit berekend worden door de integraal van de afwijking te nemen van het begin van de tocht tot het huidige moment. De formule van het I deel is: I(t) = t 0 e(t) dt (3) Ook hier is weer een discrete versie nodig om hem in het bootje te implementeren. De tijd tussen de verschillende metingen is t. De discrete versie ziet er zo uit: I(t i ) = i t e(t k ) (4) k=0 Dit deel is vooral bedoeld om krachten te compenseren die constant op de boot werken. Stel dat de stroom de boot continu naar rechts duwt, dan moet de boot voortdurend naar links bijsturen. In het begin - als de boot nog niet op koers ligt - zal de waarde van het I deel steeds blijven toenemen. Als de boot op koers ligt is het I deel precies groot genoeg om deze stroom 12

18 tegen te werken. Omdat de boot op koers ligt en de afwijking (bijna) 0 geworden is, verandert het I deel daarna niet meer D deel Het D of differentiërend deel is het deel van de uitgangswaarde dat een maat is voor hoe snel de boot van koers verandert. Dit is te berekenen door de afgeleide te nemen van de afwijking, oftewel hoeveel de afwijking e de afgelopen t seconden veranderd is. In formulevorm ziet dat er zo uit: D(t) = de(t) dt En de discrete versie zoals toegepast wordt in het bootje: D(t i ) = e(t i) e(t i 1 ) t (5) (6) Het D deel zal vooral de effecten van golven en korte invloeden, zoals windvlagen, compenseren. Omdat dit soort invloeden vaak heftige en snelle bewegingen veroorzaken zal de uitgangswaarde van het D deel dan relatief hoog zijn Combineren Het berekenen van de afzonderlijke delen is nog niet genoeg. Ze moeten ook in een bepaalde verhouding gecombineerd worden. Om dit te bewerkstelligen worden ze allemaal met een eigen parameter vermenigvuldigd en vervolgens opgeteld. De totale formule van een PID regelaar wordt dan: u(t i ) = K p P (t i ) + K i I(t i ) + K d D(t i ) i u(t i ) = K p e(t i ) + K i t e(t k ) + K d e(t i) e(t i 1 ) t k=0 (7) Dit afstellen van de PID regeling gebeurt door experimenteel de waardes van K p, K i en K d te vinden waarbij de boot zich het beste gedraagt. Dit is vaak een lastig klusje omdat de factoren elkaar onderling beïnvloeden. Ook bij mijn robotzeiler was dit een flink karwei. 13

19 Figuur 8: Invloed van verschillende K p s Figuur 9: Invloed van verschillende K i s Figuur 10: Invloed van verschillende K d s 14

20 De invloed van de parameters is goed te zien in de grafieken van figuur 8, 9 en 10. In elk plaatje wordt bijvoorbeeld de hoeveelheid P (de parameter K p ) veranderd terwijl de andere parameters constant blijven. De blauwe lijn is de waarde die de regelaar probeert te bereiken, en de gekleurde lijnen de werkelijke toestand volgens de sensoren. Verschillen tussen de instellingen zijn: Insteltijd De insteltijd is de tijd die nodig is om de uitgangswaarde de ingestelde waarde te laten bereiken. Zoals te zien is zorgt een lage I waarde voor een grote insteltijd. Overshoot Overshoot is hoeveel de uitgangswaarde over de ingestelde waarde heen schiet voordat hij weer naar beneden geregeld wordt. Zoals een lage K i waarde een lange insteltijd veroorzaakt, zorgt een hoge K i voor een korte insteltijd, maar heeft last van veel overshoot. Oscillatie Oscillatie is hoelang het duurt voordat de uitgangswaarde stabiel wordt. Bij veel instellingen gebeurt dit helemaal nooit en blijft het systeem instabiel. 4.3 Polar Een boot zeilt niet op alle koersen even hard, dit komt door de vorm van de boot en de zeilen. Voor het plannen van de route is het handig om te weten onder welke hoeken de boot optimaal zeilt. Deze snelheden worden weergegeven in een poolgrafiek - ook wel polar genoemd - waarbij de hoek van de invallende wind ten opzichte van de vaarrichting wordt afgezet tegen de snelheid. Omdat deze waardes ook van de windkracht afhangen is het nodig om voor elke windkracht een eigen grafiek te maken. Als je al deze grafieken over elkaar plot en de linker helft weglaat (die is Figuur 11: Polar bijna gelijk aan de rechterhelft) krijg je een plaatje als in afbeelding 11. Uit een polargrafiek is veel informatie te halen, wij gebruiken de grafiek voornamelijk voor het bepalen van de ideale koers voor het aan de wind zeilen. 15

21 4.4 Grootcirkel en loxodroom Er zijn verschillende manieren om de koers tussen twee punten op aarde uit te rekenen. Sommige complexer dan andere. De complexere formules houden rekening met de kromming van de aarde, terwijl andere dat niet doen. De kortste route tussen twee punten op een bol loopt namelijk niet recht. Deze kortste route heet een grote cirkel. Deze lijn heeft echter een belangrijk nadeel, de koers die de boot moet sturen is niet constant waardoor deze continu opnieuw moet worden berekend[14]. De lijn die géén rekening houdt met de bolling van de aarde heet loxodroom of in het Engels een rhumb line 1. Bij deze lijn is de koers wel gedurende de hele route constant, maar de lengte van deze route is langer[15]. Zie afbeelding 13 voor het verschil Figuur 12: Constante richting tussen een grote cirkel route en een loxodroom. bij een loxodroom Ik heb gekozen om te varen over een loxodroom, dat is de route die een boot vaart als hij een constante kompaskoers aanhoudt. Dat is ook een rechte lijn op een kaart met een mercatorprojectie 2. Deze lijn is weliswaar niet de kortste route, maar op korte afstanden maakt dat niet heel veel uit. Om namelijk een grootcirkel (de kortste route) te varen moet het beginpunt worden onthouden en moet er steeds voor de huidige plek op de route een nieuwe koers worden uitgerekend. De formule om de loxodroom uit te rekenen is als volgt: ϕ = ln( tan( lat π 4 ) tan( lat π 4 )) q = cos(lat 1 ) lat = lat 2 lat 1 lat = lon 2 lon 1 d = lat 2 + q 2 lon km (8) θ = atan2( lon, ϕ) (9) In deze formule is (lat 1,lon 1 ) het beginpunt en (lat 2,lon 2 ) het doel. Figuur 13: Verschil tussen een grote cirkel en een loxodroom (rhumb line) 1 Loxodroom komt van het griekse λoχoσ (schuin) en δρoµoσ (lopen) 2 De mercatorprojectie is een manier om de wereldbol op een plat vlak af te beelden. Het is bedacht door de Vlaamse Cartograaf Gerardus Mercator in De kaart komt tot stand door de wereldbol op een cilinder te projecteren. Gebieden die verder van de evenaar liggen worden dus groter afgebeeld. Omdat een route met een constante kompaskoers een rechte lijn is op een kaart met een mercatorprojectie wordt deze projectie in de scheepvaart veel gebruikt. 16

22 5 Robotzeilen: hardware en software Voor het robotzeilen heb je hardware en software nodig. In de boot zit een boordcomputer die zijn eigen programma draait. Op de kant staat een laptop met daarin software om de boot in de gaten te houden. Deze laptop is géén afstandsbediening, de boot vaart immers zelfstandig. Wel kunnen vanuit de laptop de parameters worden aangepast en een nieuwe route op worden gegeven. Verder is de boot voorzien van een aantal sensoren, zoals de GPS en het kompas. Ook kan de boot met servomotoren sturen en de zeilen aantrekken dan wel vieren. Op de kant staat ook een sensor: een windvaan. De communicatie tussen de boot en de laptop op de kant gaat via een zender- en ontvangersysteem. Aanvankelijk werkte mijn software via een opdrachtregel met ingewikkelde commando s. Dat heb ik inmiddels vervangen door een grafische bedieningsinterface. 5.1 De boordcomputer: multitasking en efficiëntie Op de boot draait de software op een boordcomputer, deze software is in C++ geschreven om een zo efficiënt mogelijk programma te krijgen. C++ staat relatief dicht op de machinetaal die ook daadwerkelijk uitgevoerd wordt. Dat kost meer tijd om te schrijven, maar daarmee heb je meer invloed op wat er precies onder de motorkap gebeurt. De C++ code wordt door een compiler omgezet in machinetaal, geschikt voor de boordcomputer. Het is belangrijk om te bedenken dat de boordcomputer geen besturingssysteem heeft, zoals een PC. Het voordeel daarvan is dat al je geheugen en rekenkracht beschikbaar zijn voor je programma waardoor je heel snel en efficiënt de hardware kan aanspreken. Het nadeel is echter dat je niet meerdere programma s tegelijkertijd kan draaien zoals op een PC. Eigenlijk kan een gewone PC ook niet meerdere dingen tegelijkertijd doen. Windows geeft elk programma steeds één voor één tijd. Dat gaat heel snel waardoor het lijkt alsof alles tegelijkertijd werkt. In mijn software doe ik dat eigenlijk ook. Het programma bestaat uit een eeuwige lus waarin steeds elk onderdeel een beetje tijd krijgt toebedeeld. Sommige stukjes programma kunnen echter voorrang krijgen als het belangrijk is dat er heel snel iets gedaan moet worden. Als er bijvoorbeeld een instructie van de wal ontvangen wordt, stopt het programma tijdelijk waar hij mee bezig was om de boodschap te verwerken. 5.2 PID regeling De PID regeling heb ik eigenlijk geïmplementeerd zoals formule 7. Ik doe de losse stukjes één voor één om ze dan op te tellen. De code ziet er dan als volgt uit: void Pid::update(void){ float p,i,d; Setpoint = sp->get(); Input = pv->get(); //variabeles declaren die later gebruikt gaan worden //SP ophalen //Koers ophalen state["sp"] = Setpoint; //sp opslaan op een plek waar andere processen // dat ook kunnen zien if (state["roer_auto"]){ //als het roer autmoatisch bestuurd moet worden float error = verschil(input,setpoint); //afwijking uitrekenen 17

23 float schaal = state["schaal"]; state["error"] = error; //Deelfactor voor de paramters uitlezen //afwijking opslaan ITerm += ((state["ki"] / schaal ) * SampleTime * error); //I term uitrekenen //en optellen bij vorige I if(iterm > 25) ITerm = 25; else if(iterm < -25) ITerm = -25; //Zorgen dat de I niet te groot wordt float dinput = verschil(lastinput,input); //Afgeleide berekenen p = (state["kp"] / schaal ) * (error + state["roll"] * 0.01 * state["pid_roll"]); i = ITerm; //I uitrekenen d = - ( (state["kd"] / schaal ) / SampleTime) * dinput; //D uitrekenen Output = p + i + d; //Optellen if(output > outmax) //Zorgen dat de output niet te groot wordt Output = outmax; else if(output < outmin) Output = outmin; lastinput = Input; //Huidig setpoint opslaan voor later state["p"] = p; state["i"] = i; state["d"] = d; //P,I,D waardes opslaan output->set( (int)output + 50); //Roer instellen De blauwe tekst achter // is toelichting, en heeft verder geen invloed op de code. In de code zitten een aantal beveiligingen en extra dingen ingebouwd die in de formule niet zitten. In totaal heb ik een viertal toevoegingen gemaakt, die de PID geschikt maken voor een boot[16]. De eerste toevoeging is de formule om de het kleinste verschil tussen twee koersen te berekenen. Normaal kun je het verschil tussen de huidige waarde en de ingestelde waarde berekenen door ze van elkaar af te trekken. Maar met koersen werkt dat niet. Het is namelijk mogelijk om door de 0 heen naar de 360 te gaan. Het verschil tussen 359 graden en 1 graad is slechts twee graden en niet 358 (359 1). De tweede toevoeging is een beveiliging dat de I term niet te groot wordt. Als de te varen koers plotseling verandert, bijvoorbeeld als er overstag gegaan moet worden, dan wordt de afwijking ineens ook veel groter. Deze afwijking wordt steeds maar opgeteld bij de I term, 18

24 daardoor zou deze term veel groter worden dan nodig is. In de tijd die de boot nodig heeft om de nieuwe koers te gaan varen is de I term al zo groot geworden dat het roer alleen nog maar maximale uitslag blijft gegeven, ook als de te varen koers reeds bereikt is. De beveiliging zorgt er voor dat de I term niet groter kan worden dan een bepaalde waarde. De derde toevoeging zit in de manier waarop de afgeleide berekend wordt. Je kan de afgeleide van de afwijking nemen, maar dan zou deze reageren op veranderingen van de koers en veranderingen in het setpoint. Het roer krijgt dan een zwiep als de ingestelde waarde verandert, en dat is niet de bedoeling. Daarom wordt de afgeleide van de koers genomen. De vierde en laatste toevoeging is een beveiliging die ervoor zorgt dat het roer nooit de opdracht kan krijgen om meer dan een vooraf ingesteld maximum te sturen, anders zou de servomotor het roer of de boot zelf kapot kunnen maken. 5.3 Loxodroom Ook de loxodroom (Engels: rhumb line) is volgens formule 8 en 9 geprogrammeerd. Omdat de ingebouwde goniometrische functies van de boordcomputer in radialen rekenen, en de rest van het systeem in graden werkt, moeten de hoeken eerst omgerekend worden van graden naar radialen, en op het einde weer terug naar graden. double afstand(pos *cur, pos *tar){ double lat_cur_r = cur->lat * deg2rad; double lon_cur_r = cur->lon * deg2rad; double lat_tar_r = tar->lat * deg2rad; double lon_tar_r = tar->lon * deg2rad; double df = log(tan(lat_tar_r/2.0 + PI/4.0)/tan(lat_cur_r/2.0 + PI/4.0)); double dla = lat_tar_r - lat_cur_r; double dlo = lon_tar_r - lon_cur_r; double q; if (df == 0) q = cos(lat_cur_r); else q = dla / df; double r = ; double d = sqrt(pow(dla,2) + pow(q,2) * pow(dlo,2)) * r; return d; double koers(pos *cur, pos *tar){ double lat_cur_r = cur->lat * deg2rad; 19

25 double lon_cur_r = cur->lon * deg2rad; double lat_tar_r = tar->lat * deg2rad; double lon_tar_r = tar->lon * deg2rad; double df = log(tan(lat_tar_r/2.0 + PI/4.0)/tan(lat_cur_r/2.0 + PI/4.0)); double dla = lat_tar_r - lat_cur_r; double dlo = lon_tar_r - lon_cur_r; double k = atan2(dlo,df) * rad2deg; if (k < 0) k += 360; return k; 5.4 Kompas: de koersbepaling Het elektronische kompas is met een I 2 C (Inter-Integrated circuit) bus aan de boordcomputer verbonden. Een uitgebreide beschrijving is voor onze doeleinden niet nodig. Wat belangrijk is om te weten is dat het een serieel protocol is waarbij elk van de slaves (het kompas in dit geval) een eigen adres heeft. Om een van de slaves uit te lezen, stuurt de host (de boordcomputer) een adres. Om het kompas aan te spreken is dit 50 (of 0x32 hexadecimaal). Hierdoor begint het kompas te luisteren. Daarna stuurt de host een opdracht, in dit geval 80 (0x50) wat sample heading betekent. Het kompasje gaat dan aan het werk om de koers te meten. Hier moet even op gewacht worden. Daarna kunnen er 6 waardes uitgelezen worden, deze waardes worden tot slot omgerekend in een werkbaar formaat[17]. void Kompas::update(void) { //wat variabeles om als zend en ontvang buffer te fungeren char compass_out[1]; char compass_in[6]; //als het kompas niet bezig met calibreren kan er gelezen worden if (cal == 0) { //zet 0x50(="sample heading") in zend buffer compass_out[0] = 0x50; //stuur deze buffer over de bus compass.write(addr,compass_out,1); //geef het kompas even de tijd om de opdracht uit te voeren wait_ms(1); //Daarna kunnen er 6 8bits waardes uitgelezen worden compass.read(addr,compass_in,6); 20

26 //Deze 6 8 bits waardes moeten omgerekend worden naar 3 16 bits waardes int compass_heading = (int)compass_in[0] << 8 (int)compass_in[1]; int compass_pitch = (int)compass_in[2] << 8 (int)compass_in[3]; int compass_roll = (int)compass_in[4] << 8 (int)compass_in[5]; int n = compass_heading / 10; int verschil = n - prev; if (verschil > 180) verschil -= 360; if (verschil < -180) verschil += 360; if (abs(verschil) > 60) { if (verschil > 0) prev += 20; else prev -= 20; else { koers = n; else koers = 0; 5.5 Filtering Het signaal wat uit het kompas kwam bleek echter niet helemaal zuiver. Er zat nog een kleine hoeveelheid ruis op. Deze ruis zorgde voor kleine maar snelle veranderingen in het signaal. Het probleem hiervan was dat het differentiërende deel van de PID regelaar heel heftig op deze veranderingen reageerde. Daarom moest deze ruis worden geëlimineerd. Eerst heb ik geprobeerd een lopend gemiddelde te nemen over een aantal metingen. Dit werkte nog niet naar behoren. Ten eerste kwam er nog steeds te veel ruis door dit filter heen. Ten tweede zorgde het ook nog eens voor onacceptabele vertraging, hierdoor duurde het veel te lang voordat een verandering in de koers zichtbaar werd. Daarom ben ik op zoek gegaan naar een ander filter. Het gewone signaal heeft een vrij lage frequentie, de boot verandert nooit meer dan een paar keer per seconde van koers. De ongewenste fluctuaties van het kompas hebben een hogere frequentie. Daarom moet dit filter de lage frequenties doorlaten maar de hogere tegenhouden. Een geschikt filter voor dit doeleinde is een Butterworth laag doorlaat filter. Dit filter bestond oorspronkelijk uit weerstanden en condensatoren om hem in een analoge schakeling toe te passen. Later is ook de wiskundige basis van dit filter gebruikt om formules te vinden die door de computer gebruikt kunnen worden. Het te filteren signaal wordt dan in deze formules ingevoerd en dat levert dan een gefilterde versie van het signaal op.[18] 21

27 In deze formules zitten een aantal parameters die het gedrag van het filter bepalen. Deze parameters zijn afhankelijk van een aan- Figuur 14: Het effect van het aantal polen op het gedrag rond de cutoff frequentie tal eigenschappen van het filter. De eerste eigenschap is de cutoff frequentie, dit is de frequentie waarbij het filter signalen begint te verzwakken. De tweede eigenschap is hoevel polen het filter heeft, dit bepaald hoe het filter zich gedraagt rond de cutoff frequentie. Als een filter veel polen heeft worden signalen die vlak boven de cutoff frequentie zitten nauwelijks meer doorgelaten, terwijl dit verloop vloeiender gaat voor een filet met minder polen. In figuur 14 is het gedrag van het filter te zien als het aantal polen verandert wordt. Op de horizontale as staat de frequentie en op de verticale as de verzwakking. Om de juiste parameters te berekenen heb ik gebruik gemaakt van een website[19], maar programma s als matlab kunnen dit ook. Ik heb een filter gebruikt met 5 polen, een sample frequentie van 10Hz en een cutoff frequentie van 1Hz. Het filter is op de volgende manier geïmplementeerd: GAIN = e+02; xv[0] = xv[1]; xv[1] = xv[2]; xv[2] = xv[3]; xv[3] = xv[4]; xv[4] = xv[5]; xv[5] = meting / GAIN; yv[0] = yv[1]; yv[1] = yv[2]; yv[2] = yv[3]; yv[3] = yv[4]; yv[4] = yv[5]; yv[5] = (xv[0] + xv[5]) + 5 * (xv[1] + xv[4]) + 10 * (xv[2] + xv[3]) + ( * yv[0]) + ( * yv[1]) + ( * yv[2]) + ( * yv[3]) + ( * yv[4]); koers = yv[5]; 5.6 GPS: de positiebepaling De GPS geeft de boot informatie over de positie, maar een GPS stuurt veel meer informatie dan ik nodig heb. Mijn programma haalt uit de stroom van data de benodigde informatie. Een voorbeeld van wat de GPS elke seconde stuurt: $GPGGA, , ,N, ,W,0,00,4.8,44.0,M,52.0,M,,0000*77 $GPGSA,A,1,,,,,,,,,,,,,4.8,4.8,0.7*37 $GPGSV,3,1,12,20,82,116,,01,79,246,,32,54,077,,17,48,254,*70 $GPGSV,3,2,12,23,46,168,,24,40,128,,04,25,295,,11,24,143,*73 $GPGSV,3,3,12,31,22,065,,13,15,190,,12,11,343,,25,00,019,*7D $GPRMC, ,V, ,N, ,W,002.2,252.9,160411,,,N*68 $GPVTG,252.9,T,,M,002.2,N,004.1,K,N*0B Hierin staat alle informatie over de positie, de actuele tijd, de snelheid en nog veel meer. Zo vaart de boot uit dit voorbeeld om 7:58:51 UTC op 56 graden noorderbreedte en 3 graden westerlengte. Gelukkig volgt de GPS een protocol dat makkelijk is uit te lezen: het NMEA protocol. Elke NMEA-string begint met een $ en daarna volgen een aantal kenletters. De 22

28 verschillende gegevens zijn gescheiden door een komma. De voor mijn programma belangrijkste string is de GPGGA string, hierin staat namelijk de informatie over de actuele positie[20]. 5.7 Servo s aansturen: het roer en de zeilen Een servo moet aangestuurd worden met pulsjes (later meer hierover). Deze pulsjes moeten gemaakt worden in de boordcomputer maar het zou voor de programmeur erg lastig zijn als het programma ook echt elke 20ms moet stoppen waar hij mee bezig is om een puls te maken. Daarom is de mbed voorzien van een pulsgenerator. Als deze eenmaal ingesteld is blijft hij zelfstandig pulsjes genereren[21]. 5.8 Communicatie tussen de laptop en de boordcomputer: Sailcom Met de laptop op de wal kan ik de boot en de boordcomputer in de gaten houden. Ook is het mogelijk om de boot een nieuwe koers en informatie over de windrichting te geven. De laptop is géén afstandsbesturing maar een monitor voor de verrichtingen van de boot. Om de communicatie mogelijk te maken heb ik zelf een protocol bedacht: SailCom. Elk commando begint met een $ om het begin aan te geven, en de opdracht wordt afgesloten met een #. Er zijn twee soorten opdrachten: leesopdrachten en schrijfopdrachten. Elke leesopdracht begint met get, gevolgd door de naam van de waarde die gelezen moet worden. Als antwoord stuurt de boot dan de waarden. Elke schrijfopdracht begint met set, gevolgd door de naam van de te schrijven waarde en de te schrijven waarde. Een commando ziet er dus zo uit: $get koers# of $set ki 12.4#. 5.9 PC Interface De software werd op een gegeven moment zo complex dat bediening met een opdrachtregel te lastig werd. Daarom heb ik een grafische bedieningsinterface gemaakt. Deze interface is muisgestuurd en kan geschikt gemaakt worden voor een touchscreen. De informatie van en naar de boot wordt volledig gevisualiseerd met virtuele instrumenten en grafieken. Ook zit er een kaart in het programma om de route makkelijk te kunnen bekijken en aan te passen. Data en grafieken worden automatisch in een logboek opgeslagen. Het programma dat op de laptop draait is geschreven in Python, een minder efficiënte taal dan C(++) maar veel geschikter voor het maken van grafische interfaces[22]. Hiermee heb ik een grafische schil gemaakt om met de boot te communiceren. Het eerste deel van het programma zorgt voor de communicatie met de boot en zorgt er voor dat er steeds actuele data voorhanden is en dat deze ook wordt opgeslagen voor latere referentie. Het tweede deel zorgt dat deze data duidelijk op het scherm weergegeven wordt en geeft de gebruiker de mogelijkheid de boot te bedienen zonder dat hij allemaal ingewikkelde commando s uit zijn hoofd hoeft te leren. Het derde deel communiceert met de windvaan en zorgt ervoor dat de boot weet waar de wind vandaan komt. Ik zal de software bespreken aan de hand van screenshots van het programma. 23

29 5.9.1 Hoofdvenster Figuur 15: Het hoofdvenster In het hoofdvenster kun je snel de belangrijkste dingen aflezen en instellen. Koers, windrichting, roerstand en zeilstand worden met virtuele instrumenten weergegeven. Met behulp van de schuifjes kun je de belangrijkste dingen instellen, waaronder het roer, het zeil en de parameters van de PID regelaar. 24

30 5.9.2 Roer & zeil Figuur 16: Roer & Zeil In het tweede venster kun je alles zien over het roer en het zeil. Je kan de actuele stand aflezen en ze instellen. Ook kan je instellen of het roer en het zeil automatisch of handmatig bediend moeten worden. Ook zijn er grafiekjes van de roer- en zeilstand over de afgelopen 100 seconden. 25

31 5.9.3 Kompas & vaantje Figuur 17: Kompas & Vaantje In het derde venster kan je de koers en de windrichting aflezen met een instrument en een grafiekje. Ook zit er een knopje om de kalibratie van het kompas in en uit te schakelen. 26

32 5.9.4 PID Figuur 18: PID In het vierde venster kun je alles van de PID regelaar aflezen en instellen. Bijna alle belangrijke dingen zijn in een grafiekje of een tekstvakje af te lezen. Ook is het mogelijk om de parameters (K p, K i en K d ) in te stellen. Daarnaast kan het setpoint met de hand worden ingesteld. Het is ook mogelijk om in te stellen in welke mate de helling van de boot mee genomen wordt in het regelproces. 27

33 5.9.5 Route Figuur 19: Route In het laatste venster is het mogelijk om de route die het bootje vaart aan te passen. Links kun je de actuele gegevens van de route aflezen: de positie, de afstand tot het volgende punt en of er opgekruist wordt of niet. Ook kun je daar kiezen tussen gewoon rechtuit varen langs een vaste koers of dat er een van te voren ingestelde route gevaren moet worden waarbij eventueel ook wordt opgekruist. Met de schuifjes kun je instellen hoe hoog de boot aan de wind gaat zeilen en hoe breed de rakken mogen zijn bij het opkruisen (zie ook paragraaf 6.1). Rechts daarvan is een lijst met de punten waaruit de route bestaat. Deze punten zijn te verwijderen en te verplaatsen met de knopjes rechts van de lijst. Het toevoegen van nieuwe punten kan op drie manieren. De eerste manier is door direct de coördinaten in te voeren. De tweede manier is door een koers en een afstand in te geven. Er wordt dan een waypoint toegevoegd met die afstand en koers ten opzichte van de huidige koers. Tenslotte is het mogelijk om de huidige positie als waypoint toe te voegen. Helemaal rechts wordt een kaartje getoond van de lijst met waypoints de huidige positie (met een rood puntje). Tussen deze punten wordt de route aangegeven die gevaren gaat worden. Hierbij wordt ook rekening gehouden met opkruisen. 28

34 6 Route plannen 6.1 Opkruisen Wat is opkruisen? Hoewel een zeilboot niet tegen de wind in kan varen, is het toch mogelijk om naar een bovenwinds gelegen punt te varen. Dit doe je door op te kruisen (zie ook paragraaf 6.1). Bij opkruisen vaar je niet direct naar je doel, maar vaar je in een zig-zag koers naar je doel. Omdat je dit wilt bekorten, probeer je wel tamelijk recht in de wind te varen. Zeilers noemen dit hoog of scherp aan de wind. Deze hoek is afhankelijk van de constructie van de boot en de zeilen die gevoerd worden. Na een tijd gevaren te hebben ga je door de wind en ga je over de andere boeg weer aan de wind varen. In theorie kun je elk bovenwinds doel bereiken met slechts een keer over stag te gaan. Je hakt de route als het ware in stukjes, elk stukje noemen we een rak. Deze aanpak heeft nadelen maar ook voordelen. Wanneer je vaak overstag gaat wordt de totale afstand niet korter, maar je verliest snelheid en dus tijd bij elke overstag manoeuvre. Dus waarschijnlijk duurt het langer om je doel te bereiken. Slechts een keer overstag gaan is in theorie wellicht sneller, maar heeft in de praktijk een groot nadeel. Wanneer namelijk de wind draait terwijl je onderweg bent dan zul je alsnog vaker overstag moeten gaan. Bovendien heeft de route met maar twee slagen een veel breder vaarwater nodig.in de praktijk zul je dus een afstand verdelen in meerdere rakken. Mijn robotzeilboot kan niet alleen de complete overstag manoeuvre maken, maar bepaalt ook zelfstandig wanneer en hoe vaak de boot overstag moet gaan om zo snel mogelijk het doel te bereiken. Dankzij de software en de instrumenten weet de boot ook wanneer het doel is bereikt. Deze vaardigheid komt zelfs op de dure, professionele stuurautomaten van zeiljachten niet voor. 29

35 6.1.2 Algoritme van Stelzer en Pröll v vmg Stelzer en Pröll stellen een algoritme voor om op te kruisen[2]. Zij maken hierbij gebruik van de vmg (velocity made good), oftewel de component van de bootsnelheid richting het doel. Hun algoritme berekent op elk moment de vmg op de huidige koers en de vmg als ze op dat moment over de andere boeg zouden varen, op het moment dat die een factor n hoger is dan de huidige vmg besluit het algoritme overstag te gaan. Het resultaat van dit algoritme is te zien in afbeelding 21. Zoals je ziet zorgt dit er voor dat als de boot dichter bij het doel komt het aantal slagen zou toenemen. Om dit op te lossen hebben Figuur 20: vmg Stelzer en Pröll een correctie toegepast op de factor n. Zij hebben die afhankelijk gemaakt van de afstand tot het doel: n = 1 + P c d met parameter P c. Dit maakt het resultaat al een stuk beter maar het lost het probleem nog steeds niet op. Figuur 21: Algoritme van Stelzer en Pröll 30

36 6.1.3 Mijn algoritme Omdat het algoritme van Stelzer en Pröll voor alle mogelijke koersen een vmg moet uitrekenen is het vrij rekenintensief. Het moet immers 360 berekeningen uitvoeren en hier de koers met de hoogste vmg uitkiezen. Dit is een verspilling van energie en een zeer inefficiënt gebruik van de boordcomputer. Daarom heb ik zelf een ander algoritme geschreven. In plaats van het volledige pooldiagram van de boot door te rekenen, heeft mijn algoritme genoeg aan de scherpste koers die de boot kan varen. Daarna besluit het algoritme of er opgekruist moet worden of niet. Als er niet opgekruist hoeft te worden, vaart hij rechtstreeks naar zijn doel, anders gaan er een aantal dingen gebeuren. Bij opkruisen doorloopt het algoritme een viertal stappen. Als eerste wordt de huidige positie opgeslagen als begin van het opkruisen en als begin van het eerste rak. Deze positie wordt later nog gebruikt. Daarna moet de keuze gemaakt worden over welke boeg er wordt opgekruist. Hier wordt de kant gekozen die op dat moment het dichtste bij de richting van de boot ligt; die is immers het snelste te bereiken. Daarna moet de lengte van het te varen stuk uitgerekend worden. De lengte van het stuk is van verschillende dingen afhankelijk: de totale afstand van het traject en de hoek met de wind. Als er recht tegen de wind in opgekruist moet worden zijn de twee stukken even lang, maar als de wind schuin inkomt moet het ene stuk langer zijn dan het andere om zo efficiënt mogelijk naar het doel te gaan. d δ l α De twee lengtes worden als volgt berekend: l = d sin(α ± δ) (10) Hier is d de afstand die elke slag richting het doel moet worden afgelegd (zie Afbeelding 22), α de hoek tussen de richting naar het doel en de wind en δ de scherpste hoek die gezeild kan worden. De ± is afhankelijk van over welke boeg er gevaren wordt. Figuur 22: opkruisen Mijn algoritme voor het 31

37 Dit is de C++ code van het algoritme: double Goto::get(void){ if (holdcourse) return course; double k = koers(&huidig->get(),&doel->get()); double d = afstand(&huidig->get(),&doel->get()); //koers naar doel berekenen //afstand nar doel berekenen double ware_wind = vaantje->get(); //ware wind uit vaantje halen if (ware_wind > 360) ware_wind -= 360; if (fabs(verschil(k,ware_wind)) < minhoek + hys){ if (!opkruisen){ begin_opkruisen = huidig->get(); begin_rak = huidig->get(); koers_begin = k; eerste = 1; else{ reset = 0; opkruisen = 1; if (fabs(verschil(k,ware_wind)) > minhoek + hys){ opkruisen = 0; eerste = 0; if (!opkruisen){ return k; else { double boeg1 = ware_wind + (double)minhoek; double boeg2 = ware_wind - (double)minhoek; if (boeg1 > 360) boeg1 -= 360; if (boeg2 < 0) boeg2 += 360; //kijken of er moet worden opgekruist //kijken of er niet al opgekruist wordt //huidige positie opslaan als begin van het // opkruisen //en als begin van het huidige rak //de koers van de layline opslaan //installen dat het eerste rak is //kijken of het al bezeild is //als er niet opgekruist hoeft te worden //direct naar het doel varen //anders: //twee koersen uitrekenen //lengte van de rakken uitrekenen double lengte = afstand(&begin_opkruisen, &doel->get()) / 5.0; double a = fabs(verschil(ware_wind,koers_begin)); double lengte1 = lengte / sin(((double)minhoek+a) * deg2rad); double lengte2 = lengte / sin(((double)minhoek-a) * deg2rad); if (eerste){ //eerste rak 2x zo kort lengte1 /= 2.0; lengte2 /= 2.0; //bij eerste rak kiezen welke koers het dichste bij de huidige licht 32

38 if (fabs(verschil(boeg1,kompas->get())) < fabs(verschil(boeg2,kompas->get()))) boeg = 1; else boeg = 2; if (boeg == 1){ if (afstand(&begin_rak,&huidig->get()) > lengte1){ //als het einde van // het rak bereikt is eerste = 0; boeg = 2; //ga overstag begin_rak = huidig->get(); return boeg1; if (boeg == 2){ if (afstand(&begin_rak,&huidig->get()) > lengte2){ eerste = 0; boeg = 1; begin_rak = huidig->get(); return boeg2; 33

39 7 Hardware: sensoren en actuatoren In dit hoofdstuk zal ik van elk onderdeel op de boot de werking en het nut uitleggen. Al deze onderdelen zorgen er namelijk samen voor dat de boot niet alleen kan varen, maar ook de juiste beslissingen kan maken om zijn doel te bereiken. Ik heb de onderdelen in vier groepen onderverdeeld: 1. De boot Alles wat te maken heeft met de boot en het zeilen zelf 2. De sensoren Alles wat zorgt dat de boordcomputer genoeg informatie heeft om beslissingen te nemen 3. De actuatoren Alles om te zorgen dat de beslissingen van de boordcomputer ook uitgevoerd worden 4. Elektronica De boordcomputer en de verbinding met de wal 7.1 Boot Vorige pogingen Zoals ik al in de inleiding schreef is het idee voor dit profielwerkstuk ontstaan toen ik een modelbootje in de kelder vond. Er moest echter nog veel gebeuren om het bootje vaarklaar te maken, van robotzeilen was toen nog geen sprake. Bij deze eerste boot - De Astrid - heb ik de romp en het dek waterdicht gemaakt door ze te voorzien van een aantal lagen epoxy. Ook heb ik waterdichte luikjes gemaakt om nog bij de elektronica te kunnen. Deze luikjes heb ik voorzien van tochtstrip om de aansluiting waterdicht te maken. Het was lastig om een kabeldoorvoer te maken om de verschillende compartimenten te verbinden. Voor de mast heb ik in de modelbouwwinkel een aluminium profieltje gekocht en dit heb ik afgezaagd tot een lengte van één meter. De verstaging bestand uit staalkabel met een diameter van 0,5mm en werd met miniatuurspannertjes op spanning gebracht. De zeilen heb ik met behulp van het computerprogramma Sailcut CAD ontworpen. In dit programma geef je de eigenschappen van je zeil in zoals bolling, lengte van de mast en lengte van de giek. Daarna berekent het programma de maten van de losse banen van het zeil. Deze banen print je uit en trek je over op spinnakerdoek. Daarna heb ik de losse banen uitgeknipt en aan elkaar genaaid. Dit heb ik voor het grootzeil en de fok zo gedaan. Met dit bootje heb ik de eerste testen van de hardware gedaan en toen is de liefde voor zelfstandig varende modelbootjes ontstaan. Figuur 23 is een foto van de Astrid. Bij het testen bleek toch dat de motoren niet sterk genoeg waren en de boot niet waterdicht genoeg was voor de dure elektronica die ik er in wilde plaatsen. Helaas bleek het bootje dus uiteindelijk minder geschikt dan ik gedacht had. Ik heb toen niet opgegeven en een nieuw bootje gezocht om mijn profielwerkstuk af te kunnen maken. Daarom heb ik een commercieel, op afstand bestuurbaar modelzeilbootje gekocht en deze aangepast: de micromagic Micromagic Ik gebruik nu een Micromagic, een modelzeilboot waar over de hele wereld wedstrijden mee gevaren worden. De boot is gemaakt voor radiografische besturing, dus is hij goed waterdicht en is er voldoende ruimte voor de inbouw van servomotoren, batterijen en elektronica. Ik heb de oorspronkelijk elektronica eruit gehaald om plaats te maken voor de boordcomputer en de 34

40 Figuur 23: Foto van de eerste boot: De Astrid bijbehorende onderdelen. Het is een modern en licht ontwerp. Het bootje is daarom zeer snel en wendbaar. Dat maakt het makkelijker om de regelingen af te stellen. Figuur 24: Foto van de huidige boot: MicroMagic - De Vliegende Hollander 35

41 Sensoren GPS Om de plek van het bootje op aarde te bepalen (en dus ook de positie ten opzichte van het doel) heb ik gebruik gemaakt van een GPS module. Deze GPSmodule stuurt e e n keer per seconde de positie van het bootje over een serie le uitgang die verbonden is met de hoofdcomputer Kompas Figuur 25: GPS module Het kompas is het belangrijkste instrument op een zeilboot. En voor deze autonome zeilboot worden aan dit kompas een aantal hoge eisen gesteld: ten eerste mag er geen grote afwijking ontstaan als het kompas gekanteld werd (iets wat veel kompassen wel hebben), en ten tweede moest het een flink aantal keer per seconde de koers kunnen meten. Het elektronisch kompas dat ik gevonden heb is een Honeywell HMC6343[17]. Dit kompas is, in tegenstelling tot veel andere elektronische kompassen, niet gevoelig voor kantelen. Dit komt omdat het kompas het magnetisch veld van de aarde niet in e e n richting meet maar door het in drie loodrechte vectofiguur 26: Elektronisch ren in de X, Y en Z richting te meten. Samen met de helling kan het kompas uit deze gegevens exact de koers uitrekenen, zelfs als kompas de sensor gekanteld is. Bovendien kan het kompas dit tot 10x per seconde. Ook bezit het kompas de mogelijkheid om zichzelf te kalibreren waardoor hij niet meer beı nvloed wordt door metalen objecten (zoals de servomotoren) in de omgeving Vaantje Om een boot te laten zeilen moet je natuurlijk wel weten waar de wind vandaan komt. Daarom moest hier wat op gevonden worden. Er zijn veel verschillende manieren om de wind te meten, het kan bijvoorbeeld door een sensor te maken die rondom de temperatuur meet (de kant waar de wind vandaan komt is ietsje kouder), maar dat is niet zo n precieze methode. Ook kan er gebruik gemaakt worden van ultrasoon-pulsen, maar dit zijn hele dure systemen. De enige oplossing die nog over bleef was een klassiek windvaantje. Het windvaantje heeft Figuur 27: Windvaantje een vaan, deze vaan vangt wind en draait naar de wind toe. Onder de vaan zit een systeem dat de richting bepaalt. Het vaantje was oorspronkelijk een onderdeel van een stuurautomaat voor een grote boot. Daarom was er helaas geen documentatie die vertelde hoe de elektronica van de sensor in elkaar 36

42 zat. Er zat dus niets anders op dan de sensor uit elkaar te halen en zelf een kijkje in het binnenwerk te nemen. De elektronica om de windhoek te meten bestond uit een ledje en vier lichtgevoelige weerstanden (LDR s) die samen twee spanningsdelers vormden. Hierboven zat een spiegelend plaatje dat in elke positie een andere mate van reflectie had. Door deze mate van reflectie kwam er afhankelijk van de hoek een andere hoeveelheid licht op de weerstanden. Nadat ik 5 volt op de spanningsdelers en het ledje gezet had kwamen er twee spanningen uit het vaantje. Met een oscilloscoop kon ik zien dat er twee sinusvormige signalen uit het vaantje kwamen wanneer je er aan draaide. Deze spanningen verschillen 90 graden in fase. Figuur 28: Gemeten spanningen Helaas was het vaantje te groot en te zwaar om op het bootje te plaatsen, daarom staat het vaantje op een oud fotostatief op de kant en zorgt het programma op de computer ervoor dat de boot weet waar de wind vandaan komt. Als er een tweede versie van dit bootje komt maak ik de boot iets groter waardoor het vaantje wél op de boot kan en het bootje niet meer afhankelijk is van de computer op de kant om te weten waar de wind vandaan komt. 37

43 7.3 Actuatoren Servo Om de bewegingen van het roer en het zeil te regelen, gebruik ik elektromotoren. Echter geen gewone elektromotoren maar servo s. Servo s zijn elektromotoren met een ingebouwde regeling. Je zegt tegen een servo in welke positie hij moet staan en vervolgens gaat de servo naar die plaats toe bewegen. Als hij de positie bereikt heeft stopt hij met draaien. Ook als bijvoorbeeld de wind aan het zeil trekt zorgt de servo er voor dat hij toch op zijn plek blijft door een tegenkracht uit te oefenen. Dit is heel handig omdat je er daarna van uit kan gaan dat je roer en zeil in de ingestelde stand blijven staan. De servo is aan te sturen met pulsjes met een welbepaalde lengte. De lengte van deze pulsjes geeft dan positie aan. Figuur 29: Golfvorm servo Zoals in figuur 29 te zien is, heeft het signaal een periode van 20ms oftewel een frequentie van 50Hz. Aan het begin van elke periode wordt er een puls gestuurd. De lengte van deze puls bepaalt de stand van de servo; als deze 1ms is draait de servo helemaal naar links, als deze 2ms is dan draait de servo helemaal naar rechts. Het is erg belangrijk dat deze pulsen ook echt elke 20ms herhaald worden, anders staat de as van de servo wel in de juiste positie, maar staat deze niet meer vast omdat de servo geen kracht meer levert. Figuur 30: Servomotor 38

44 7.4 Elektronica ARM microcontroller De boordcomputer van het robot-bootje wordt aangedreven door een ARM microcontroller. Het is het kleine broertje van het type processor dat in moderne smartphones zit. Ik maak gebruik van een Mbed, een ontwikkelbordje voor de LPC1768 ARM microcontroller. Op dit ontwikkelbordje zit de processor zelf, een stukje elektronica dat nieuwe programma s in de chip kan laden, een geheugen om dingen op te slaan en spanningsregelaars om te zorgen dat de (te hoge) spanning van de batterijen omgezet worden naar een spanning waar de andere elektronica iets mee kan. De processor loopt op 100MHz en kan met 32 bits getallen werken. Ook heeft hij speciale instructies voor goniometrische functies waardoor er zeer snel met coördinaten gewerkt kan worden. Bovendien was het nodig dat hij minstens twee seriële poorten moest hebben om met de GPS en met de zender te kunnen communiceren en een uitgang moest hebben om automatisch pulsjes te genereren die de servo s aansturen. Ten slotte heeft hij voldoende in- en uitgangen voor eventuele uitbreidingen. Figuur 31: Microcontroller met aansluitmogelijjkheden Draadloze communicatie met de wal Figuur 32: Zigbee module Voor de communicatie tussen de wal en het schip heb ik gebruik gemaakt van Xbee Pro zenders. Dit zijn industriële modules voor draadloze communicatie. Ze gaan volgens de specificaties tot 1,5 km. In deze Xbee modules zit speciale software, die door de ingebouwde foutcorrectie en andere algoritmes ervoor zorgt dat met grote waarschijnlijk alle data die verzonden wordt, ook zo ontvangen wordt. Ik gebruik deze modules om de boot te vertellen als deze een andere route moet gaan varen. Ook kan ik voor testdoeleinden waardes opvragen, bijvoorbeeld de actuele koers. Deze waardes kan ik dan op de computer tonen. Ik gebruik deze modules en de computer dus niet als afstandbediening. Als de route ingesteld is, is de zender niet meer nodig. 39

RS-Feva. Handleiding. RACING MANUAL (Part I)

RS-Feva. Handleiding. RACING MANUAL (Part I) RS-Feva Handleiding RACING MANUAL (Part I) Datum: 8 oktober 2009 Alle foto s (behalve foto s 4-8 en A en B) en tekst zijn auteursrechtelijk beschermd en mogen NIET gebruikt of gepubliceerd worden zonder

Nadere informatie

Kielboot zeilen - Basistheorie Overstag Manoeuvre

Kielboot zeilen - Basistheorie Overstag Manoeuvre Kielboot zeilen - Basistheorie Overstag Manoeuvre In deze les wordt de overstag manoeuvre uitgelegd. Dit is een manoeuvre waarbij de zeilen naar de andere boeg worden verplaatst. Tijdens de overstag manoeuvre

Nadere informatie

Koppels en krachten. Hoe werkt mijn cat?

Koppels en krachten. Hoe werkt mijn cat? Koppels en krachten Hoe werkt mijn cat? Wie ben ik? Naam: Tom Broekhuijsen Zeilervaring: Polyvalk, FJ, Laser, Hobie 16 Instructie op: EHZ, ZOL, Morra Opleiding: lucht- en ruimtevaarttechniek Waarschuwing

Nadere informatie

Waarom deze boot? Joop de Jong (47) Klasse IOM of 1-meterklasse Lengte 100 cm Nieuwprijs complete set vanaf 700 Website www.iomzeilen.nl.

Waarom deze boot? Joop de Jong (47) Klasse IOM of 1-meterklasse Lengte 100 cm Nieuwprijs complete set vanaf 700 Website www.iomzeilen.nl. Waterlanders Hoe klein de bootjes ook zijn, het fanatisme van modelzeilers is er niet minder om. En noem hen geen knutselaars, dit zijn stuk voor stuk echte wedstrijdzeilers, ieder in hun eigen klasse.

Nadere informatie

Halzen. met. Clipper Stad Amsterdam

Halzen. met. Clipper Stad Amsterdam Halzen met Clipper Stad Amsterdam Hier weer een klein theorie lesje manoeuvreren onder zeil met Clipper Stad Amsterdam. Als je het vorige stukje dat ik had geschreven hebt gelezen, dan weet je dat we het

Nadere informatie

Hoe stel ik mijn mm boot af vooral de zeilen dat is het belangrijkste en waar zeil ik mee

Hoe stel ik mijn mm boot af vooral de zeilen dat is het belangrijkste en waar zeil ik mee Wedstrijd MM klasse 28 juni Hoe stel ik mijn mm boot af vooral de zeilen dat is het belangrijkste en waar zeil ik mee De ROMP: Deze is voor iedereen gelijk het onderhoud gewoon zorgen dat hij schoon is

Nadere informatie

CWO 1. Optimist WSV De Ank. Dit boek is van:

CWO 1. Optimist WSV De Ank. Dit boek is van: CWO 1 Optimist WSV De Ank Dit boek is van: 1 Inhoud Wat moet je eigenlijk leren?... 3 Theorie:... 3 Praktijk... 3 Deel 1 Theorie Schiemanswerk... 5 Zeiltermen... 9 Onderdelen... 11 Veiligheid... 12 Reglementen...

Nadere informatie

JZVB 2015: CWO 1 & 2 JZVB 2015

JZVB 2015: CWO 1 & 2 JZVB 2015 JZVB 2015 windroos Windrichting: de richting waar de wind vandaan komt! Hier dus: ZW stuurrrrrrboord = rrrrechts windrichting stuurboord Lijzijde bakboord Loefzijde windrichting Lijzijde bakboord stuurboord

Nadere informatie

Zeil insigne kielboot 1. Termen... 2. Zeil standen... 3. Overstag... 4. Gijpen... 5. Stormrondje... 5 BPR... 6. Regels... 6. 1 Goed zeemanschap...

Zeil insigne kielboot 1. Termen... 2. Zeil standen... 3. Overstag... 4. Gijpen... 5. Stormrondje... 5 BPR... 6. Regels... 6. 1 Goed zeemanschap... Inhoud Termen... 2 Zeil standen... 3 Overstag... 4 Gijpen... 5 Stormrondje... 5 BPR... 6 Regels... 6 1 Goed zeemanschap... 6 2 Een klein schip wijkt voor een groot schip... 6 3 Kleine schepen onderling...

Nadere informatie

JEUGDZEILEN KZVW. Praktijk en theorie. Jeudzeilopleiding Kustzeilvereniging Wassenaar

JEUGDZEILEN KZVW. Praktijk en theorie. Jeudzeilopleiding Kustzeilvereniging Wassenaar JEUGDZEILEN KZVW Praktijk en theorie 1. Catamaran zeilklaar maken 2. Hijsen en strijken van de zeilen 3. Stand en bediening van de fok 4. Overstag gaan als fokkenist 1. Stand en bediening van het grootzeil

Nadere informatie

RS-Feva. Handleiding. RACING MANUAL (Part 2)

RS-Feva. Handleiding. RACING MANUAL (Part 2) RS-Feva Handleiding RACING MANUAL (Part 2) Datum: 8 oktober 2009 Alle foto s (behalve foto s 4-8 en A en B) en tekst zijn auteursrechtelijk beschermd en mogen NIET gebruikt of gepubliceerd worden zonder

Nadere informatie

H5 Commando s & Manoeuvres

H5 Commando s & Manoeuvres 5.1 Voor het afvaren Voordat je daadwerkelijk afvaart, moet je ervoor zorgen dat je alle belangrijke spullen aan boord hebt. Daarnaast moet je ervoor zorgen dat de boot gehoosd en schoon is, zodat je veilig

Nadere informatie

GPS. Global Positioning System, werking en toepassingen. Maarten Mennes Mei 2006.

GPS. Global Positioning System, werking en toepassingen. Maarten Mennes Mei 2006. GPS. Global Positioning System, werking en toepassingen. Maarten Mennes Mei 2006. GPS is de afkorting voor Global Positioning System. In dit werkstuk zal ik uitleggen hoe het systeem werkt en wat je ermee

Nadere informatie

Een dwarsgetuigdschip vaart prima met de wind mee.maar veel minder goed met halve wind of aan de wind.

Een dwarsgetuigdschip vaart prima met de wind mee.maar veel minder goed met halve wind of aan de wind. 1 2 3 Lateraalpunt:het middelpunt van de dwarskrachten die onder water ontstaan. Het lateraalpunt valt ongeveer in de kiel (of het zwaard) en noemen we punt L. Zie het boek van Hoefnagels, pagina 309.

Nadere informatie

Accelerometer project 2010 Microcontroller printje op basis van de NXP-LPC2368

Accelerometer project 2010 Microcontroller printje op basis van de NXP-LPC2368 Accelerometer project 2010 Microcontroller printje op basis van de NXP-LPC2368 Handleiding bij het gebruik van een microcontroller in het Accelerometerproject (Project II) Er zijn speciaal voor het Accelerometerproject

Nadere informatie

CWO. Jan van Galen Juniorwacht - 1 -

CWO. Jan van Galen Juniorwacht - 1 - CWO Jan van Galen Juniorwacht - 1 - 1. Boot onderdelen 1: Klauwval 14: Fokkeval 27: Dol 2: Piekeval 15: Voorstag 28: Dolpot 3: Gaffel 16: Fok 29: Doft 4: Zeillat in zak 17: Fokkeschoot 30: Voordek 5: Zijstag

Nadere informatie

Roeisloepwedstrijden worden beslist door te berekenen hoeveel vermogen de roeiers nodig hadden om de gehaalde gemiddelde roeisnelheid te halen.

Roeisloepwedstrijden worden beslist door te berekenen hoeveel vermogen de roeiers nodig hadden om de gehaalde gemiddelde roeisnelheid te halen. Cw-kromme Roelf Pot, februari 2015 Roeisloepwedstrijden worden beslist door te berekenen hoeveel vermogen de roeiers nodig hadden om de gehaalde gemiddelde roeisnelheid te halen. Om dat vermogen (P) te

Nadere informatie

Sheets inleiding ontwerpen

Sheets inleiding ontwerpen Sheets inleiding ontwerpen Boten bouwen Periode 4 themaklas Doel van het project Bedenk een ontwerp voor een boot Verkoop dit ontwerp aan de baas (ik) Bouw je eigen ontwerp De winnaars winnen een bouwpakket

Nadere informatie

10 (wedstrijd) TIPS VOOR PATINZEILERS

10 (wedstrijd) TIPS VOOR PATINZEILERS 10 (wedstrijd) TIPS VOOR PATINZEILERS 05 AUG 2007 NORTH SEA PATIN SAILORS BEACHCLUB DE WINDHAAN 1 1/ koers- of snelheidsschema: (figuur 1) onderling verband tussen windrichting, koers en snelheid voorbeeld

Nadere informatie

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE. Toets Inleiding Kansrekening 1 8 februari 2010

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE. Toets Inleiding Kansrekening 1 8 februari 2010 FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE Toets Inleiding Kansrekening 1 8 februari 2010 Voeg aan het antwoord van een opgave altijd het bewijs, de berekening of de argumentatie toe. Als je een onderdeel

Nadere informatie

WWS Dameszeilen! Kort lesschema! Benamingen en begrippen!

WWS Dameszeilen! Kort lesschema! Benamingen en begrippen! WWS Dameszeilen Kort lesschema Hieronder een zeer beknopte beschrijving van het basiszeilen. Wanneer je dit allemaal onder de knie hebt kun je gerust een bootje meenemen. Het is geschreven als korte leidraad

Nadere informatie

Classic Handhydraulische Stuursystemen

Classic Handhydraulische Stuursystemen Classic Handhydraulische Stuursystemen Classic handhydraulische stuursystemen zijn ontwikkeld voor professionele schepen, die geen bekrachting nodig zijn. De stuursystemen blinken uit in eenvoud, levensduur,

Nadere informatie

Design Document If This Then That. HSP moodlight Liad Damhuis G&I1B Game Art

Design Document If This Then That. HSP moodlight Liad Damhuis G&I1B Game Art Design Document If This Then That HSP moodlight Liad Damhuis G&I1B Game Art Concept Iedereen ervaart wel eens stress of een drukke ruimte die ze even teveel wordt waar ze even weg van moeten gaan om tot

Nadere informatie

De mbot. Je wilt zeker meteen al aan de slag. Maar voordat we beginnen moet je 3 dingen weten.

De mbot. Je wilt zeker meteen al aan de slag. Maar voordat we beginnen moet je 3 dingen weten. De mbot De mbot is een robot die je helemaal zelf kunt programmeren. Hij kan rijden, geluid maken, heeft verschillende kleuren lampjes, kan lijnen op de grond volgen en heeft zelfs een ultrasonische module!

Nadere informatie

AVONTURENPAKKET DE UITVINDERS

AVONTURENPAKKET DE UITVINDERS LESBRIEVEN LEERLINGEN WERKBLAD LESBRIEF 3: VLIEGEN Verhaal: De Uitvinders en De Verdronken Rivier (deel 3) Vliegen Opdracht 1: Opdracht 2: Opdracht 3: Ontwerp een vliegmachine Proefvliegen: drijven op

Nadere informatie

Rollend meetwiel. Notities voor de leerkracht. Wetenschap Afstanden meten Schaalverdelingen kalibreren Wetenschappelijk onderzoek

Rollend meetwiel. Notities voor de leerkracht. Wetenschap Afstanden meten Schaalverdelingen kalibreren Wetenschappelijk onderzoek Notities voor de leerkracht Rollend meetwiel Wetenschap Afstanden meten Schaalverdelingen kalibreren Wetenschappelijk onderzoek Design en technologie Mechanismen gebruiken overbrengingsverhouding, vertragende

Nadere informatie

Regeltechniek. Meten. Uitgave : Jan Heynen PID-regeling 1

Regeltechniek. Meten. Uitgave : Jan Heynen PID-regeling 1 Regeltechniek Meten Regelen Vergelijken Uitgave : Jan Heynen PID-regeling 1 Inleiding Regelingen zijn een bestanddeel van ons leven. Voorbeeld autonome lichaamsregelingen : Hartslag Lichaamstemperatuur

Nadere informatie

Biljarten op een ellips. Lab kist voor 3-4 vwo

Biljarten op een ellips. Lab kist voor 3-4 vwo Biljarten op een ellips Lab kist voor 3-4 vwo Dit lespakket behoort bij het ellipsvormige biljart van de ITS Academy. Ontwerp: Pauline Vos, in opdracht van Its Academy Juni 2011 Leerdoelen: - kennismaken

Nadere informatie

Bij meer wind en hogere golven, mast meer naar achteren zetten. Bij weinig wind en geen golven meer naar voren (maximaal rechtop.)

Bij meer wind en hogere golven, mast meer naar achteren zetten. Bij weinig wind en geen golven meer naar voren (maximaal rechtop.) Trimtips Dart 18 Uit het Dart infoboekje: 1. Optuigen en Trimmen 1.1 Trampoline en hangbanden Wanneer de trampoline gemonteerd is, is het raadzaam er even een paar keer over heen te open. Je ziet dan dat

Nadere informatie

Netwerkdiagram voor een project. AOA: Activities On Arrows - activiteiten op de pijlen.

Netwerkdiagram voor een project. AOA: Activities On Arrows - activiteiten op de pijlen. Netwerkdiagram voor een project. AOA: Activities On Arrows - activiteiten op de pijlen. Opmerking vooraf. Een netwerk is een structuur die is opgebouwd met pijlen en knooppunten. Bij het opstellen van

Nadere informatie

Hand- out Boeing 737 vliegen. hand- out- PU.01

Hand- out Boeing 737 vliegen. hand- out- PU.01 Hand- out Boeing 737 vliegen. Pitch- Up Arendweg 37- B Lelystad Airport 085-210 60 66 pitch- up.nl 1 Deze hand- out is samengesteld door Simcenter Lelystad, Pitch- Up en wordt toegepast bij het uitvoeren

Nadere informatie

My Inspiration I got my inspiration from a lamp that I already had made 2 years ago. The lamp is the you can see on the right.

My Inspiration I got my inspiration from a lamp that I already had made 2 years ago. The lamp is the you can see on the right. Mijn Inspiratie Ik kreeg het idee om een variant te maken van een lamp die ik al eerder had gemaakt. Bij de lamp die in de onderstaande foto s is afgebeeld kun je het licht dimmen door de lamellen open

Nadere informatie

Tijd. Thijs Boom Groep 7

Tijd. Thijs Boom Groep 7 Tijd Thijs Boom Groep 7 Maart - April 2016 Voorwoord In 2014 was ik in Amerika, toen ben ik begonnen met nadenken over tijd. Ik werd om drie uur s nachts wakker, door een jetlag. Ik wou weten hoe dat kwam

Nadere informatie

WELKOM BIJ DE JEUGDZEILOPLEIDING VAN DE WSV HOORN (WSV

WELKOM BIJ DE JEUGDZEILOPLEIDING VAN DE WSV HOORN (WSV WELKOM BIJ DE JEUGDZEILOPLEIDING VAN DE WSV HOORN (WSV =Watersport Vereniging) Een beginnende zeiler of iemand die voor het eerst gaat varen heeft meestal geen idee wat hem of haar te wachten staat. Welke

Nadere informatie

http://www.kidzlab.nl/index2.php?option=com_content&task=vi...

http://www.kidzlab.nl/index2.php?option=com_content&task=vi... Veelvlakken De perfecte vorm Plato was een grote denker in de tijd van de Oude Grieken. Hij was een van de eerste die de regelmatige veelvlakken heel bijzonder vond. Hij hield ervan omdat ze zulke mooie,

Nadere informatie

Spreekbeurten.info Spreekbeurten en Werkstukken http://spreekbeurten.info

Spreekbeurten.info Spreekbeurten en Werkstukken http://spreekbeurten.info Televisie Ik hou mijn werkstuk over de televisie omdat ik heel vaak tv kijk, en ik dacht dan hou ik het over de televisie. Ik ga het in mijn werkstuk hebben over: Hoe het vroeger ging met televisies Wat

Nadere informatie

Schotel. De installatie stap voor stap:.

Schotel. De installatie stap voor stap:. Pagina 1 De installatie stap voor stap:. 1. Stel vast, waar de schotel geplaatst moet worden. Let er op dat de hoogte voor de ontvangst niet van belang is, wel van belang zijn evt. obstakels. Als er obstakels

Nadere informatie

Meten is weten, dat geldt ook voor het vakgebied natuurkunde. Om te meten gebruik je hulpmiddelen, zoals timers, thermometers, linialen en sensoren.

Meten is weten, dat geldt ook voor het vakgebied natuurkunde. Om te meten gebruik je hulpmiddelen, zoals timers, thermometers, linialen en sensoren. 1 Meten en verwerken 1.1 Meten Meten is weten, dat geldt ook voor het vakgebied natuurkunde. Om te meten gebruik je hulpmiddelen, zoals timers, thermometers, linialen en sensoren. Grootheden/eenheden Een

Nadere informatie

Introductie in flowcharts

Introductie in flowcharts Introductie in flowcharts Flow Charts Een flow chart kan gebruikt worden om: Processen definieren en analyseren. Een beeld vormen van een proces voor analyse, discussie of communicatie. Het definieren,

Nadere informatie

Figuur 1: gekleurde pixels op een digitale sensor

Figuur 1: gekleurde pixels op een digitale sensor Wat zijn megapixels en waarom moet ik mij daar druk om maken? De afgelopen jaren zijn alle camera fabrikanten bezig geweest met een zogenaamde Megapixel oorlog. De ene fabrikant adverteerde met de nieuwste

Nadere informatie

VWO CASE SPEED KITESURFEN

VWO CASE SPEED KITESURFEN VWO CASE SPEED KITESURFEN In het dagelijks leven neemt windenergie een steeds belangrijkere plek in. Overal zie je windmolens verschijnen. Gebruik maken van de wind is immers beter voor het milieu dan

Nadere informatie

De mbot Ranger. Je wilt zeker meteen al aan de slag. Maar voordat we beginnen moet je 3 dingen weten.

De mbot Ranger. Je wilt zeker meteen al aan de slag. Maar voordat we beginnen moet je 3 dingen weten. De mbot Ranger De mbot Ranger is een robot die je helemaal zelf kunt programmeren. De mbot Ranger heeft veel meer functionaliteiten dan de originele mbot. Hij kan naast alle functies van de mbot ook de

Nadere informatie

Naam: Huseyin Ayaz St. Nummer: 1683039 Groep: imm08209 Universiteit der dromen

Naam: Huseyin Ayaz St. Nummer: 1683039 Groep: imm08209 Universiteit der dromen Naam: Huseyin Ayaz St. Nummer: 1683039 Groep: imm08209 Universiteit der dromen Onze film gaat over een droom van een student die de Vrije universiteit doorloopt en aan het eind van het film woedend wakker

Nadere informatie

CWO II Theorie. 1. Schiemanswerk. 2. Zeiltermen. Op deze pagina vind je de theorie van CWO II KB. Het is een aanvulling op de theorie CWO I.

CWO II Theorie. 1. Schiemanswerk. 2. Zeiltermen. Op deze pagina vind je de theorie van CWO II KB. Het is een aanvulling op de theorie CWO I. CWO II Theorie Op deze pagina vind je de theorie van CWO II KB. Het is een aanvulling op de theorie CWO I. 1. Schiemanswerk Mastworp (met slipsteek als borg) Met deze knoop leg je een boot vast aan een

Nadere informatie

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE. Toets Inleiding Kansrekening 1 22 februari 2013

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE. Toets Inleiding Kansrekening 1 22 februari 2013 FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE Toets Inleiding Kansrekening 1 22 februari 2013 Voeg aan het antwoord van een opgave altijd het bewijs, de berekening of de argumentatie toe. Als je een onderdeel

Nadere informatie

Verslag: Computer. Naam: Tyrone Ste Luce. Klas: M4B

Verslag: Computer. Naam: Tyrone Ste Luce. Klas: M4B Verslag: Computer Naam: Tyrone Ste Luce Klas: M4B Inhoud 1. Inleiding 2. Binaire taal 3. Besturingssysteem 4. Hardware 5. Cmos en Bios 6. De processor 7. Internet 1. Inleiding Wanneer is de computer uitgevonden?

Nadere informatie

Workshop FLL. Leer robots programmeren. Marieke Peelen Lennart de Graaf Daryo Verouden -

Workshop FLL. Leer robots programmeren. Marieke Peelen Lennart de Graaf Daryo Verouden - Workshop FLL Leer robots programmeren Marieke Peelen Lennart de Graaf Daryo Verouden - 1 Student-coaches 2 FIRST LEGO League 3 FLL Core values We zijn een team We doen zelf het werk met hulp van onze coaches.

Nadere informatie

L.Net s88sd16-n aansluitingen en programmering.

L.Net s88sd16-n aansluitingen en programmering. De L.Net s88sd16-n wordt via één van de L.Net aansluitingen aangesloten op de LocoNet aansluiting van de centrale, bij een Intellibox of Twin-Center is dat de LocoNet-T aansluiting. L.Net s88sd16-n aansluitingen

Nadere informatie

Project If This Then That

Project If This Then That Project If This Then That WiFi bestuurbare woonhuis ventilator Cairan Steverink G&I1D 17-01-2016 Johan Otten E 17-1-2016 Conceptbeschrijving Een woonhuis ventilator is tegenwoordig aanwezig in bijna alle

Nadere informatie

Excel reader. Beginner Gemiddeld. bas@excel-programmeur.nl

Excel reader. Beginner Gemiddeld. bas@excel-programmeur.nl Excel reader Beginner Gemiddeld Auteur Bas Meijerink E-mail bas@excel-programmeur.nl Versie 01D00 Datum 01-03-2014 Inhoudsopgave Introductie... - 3 - Hoofdstuk 1 - Databewerking - 4-1. Inleiding... - 5-2.

Nadere informatie

Handboek Optimist zeilen. Van...

Handboek Optimist zeilen. Van... Handboek Optimist zeilen Van... Hee Dolfijn! Voor je ligt jouw boekje over het zeilen in de Oppi s bij Christofoor Zwolle. Als je dit boekje helemaal uit hebt, en alles kunt, wat hier in staat, kun je

Nadere informatie

Module 3: Scratch programmeren: is het logisch of is het niet logisch?

Module 3: Scratch programmeren: is het logisch of is het niet logisch? Module 3: Scratch programmeren: is het logisch of is het niet logisch? Inhoudsopgave Module 3: Scratch programmeren: is het logisch of is het niet logisch?...1 Wat is een computerprogramma eigenlijk?...2

Nadere informatie

Managementinformatiesysteem

Managementinformatiesysteem Managementinformatiesysteem (aanvulling bij hele boek) Het opzetten van een managementinformatiesysteem Wanneer je een werkstuk moet maken, bijvoorbeeld over de houding van de Nederlanders ten opzichte

Nadere informatie

Proef Natuurkunde Vallen en zwaartekracht

Proef Natuurkunde Vallen en zwaartekracht Proef Natuurkunde Vallen en zwaartekracht Proef door een scholier 1883 woorden 19 januari 2005 5,4 91 keer beoordeeld Vak Methode Natuurkunde Natuurkunde overal Verband tussen massa en zwaartekracht Wat

Nadere informatie

Wat ga je in deze opdracht leren? Meer leren over: soorten vragen, vraagwoorden, signaalwoorden en sleutelwoorden

Wat ga je in deze opdracht leren? Meer leren over: soorten vragen, vraagwoorden, signaalwoorden en sleutelwoorden Wat ga je in deze opdracht leren? Meer leren over: soorten vragen, vraagwoorden, signaalwoorden en sleutelwoorden Soorten vragen, vraagwoorden, signaal- en sleutelwoorden Schema 1 Soorten vragen Open vraag

Nadere informatie

vwo: Het maken van een natuurkunde-verslag vs 21062011

vwo: Het maken van een natuurkunde-verslag vs 21062011 Het maken van een verslag voor natuurkunde, vwo versie Deze tekst vind je op www.agtijmensen.nl: Een voorbeeld van een verslag Daar vind je ook een po of pws verslag dat wat uitgebreider is. Gebruik volledige

Nadere informatie

Weerstand bestaat globaal uit 3 typen:

Weerstand bestaat globaal uit 3 typen: Zaterdagavond 20-22 uur theorie: stromingsleer voor sailors - theorie van stroming, vleugelprofielen, vormweerstand, oppervlakte weerstand, laminair, turbulent, rompweerstand. - windmolen, vliegtuig, dolfijnen

Nadere informatie

Hoofdstuk 5: Signaalverwerking

Hoofdstuk 5: Signaalverwerking Hoofdstuk 5: Signaalverwerking Natuurkunde VWO 2011/2012 www.lyceo.nl Hoofdstuk 5: Signaalverwerking Natuurkunde 1. Mechanica 2. Golven en straling 3. Elektriciteit en magnetisme 4. Warmteleer Rechtlijnige

Nadere informatie

Digitale systemen. Hoofdstuk 6. 6.1 De digitale regelaar

Digitale systemen. Hoofdstuk 6. 6.1 De digitale regelaar Hoofdstuk 6 Digitale systemen Doelstellingen 1. Weten dat digitale systemen andere stabiliteitsvoorwaarden hebben In deze tijd van digitalisatie is het gebruik van computers in regelkringen alom.denk maar

Nadere informatie

Simon de schildpad. 2012 J van Weert 1

Simon de schildpad. 2012 J van Weert 1 Programmeren met Simon Simon de schildpad 2012 J van Weert 1 Inleiding: Wat is programmeren eigenlijk? Een computer doet niets zonder een programma. Die programma s worden geschreven door mensen: programmeurs.

Nadere informatie

Het is geen open boek tentamen. Wel mag gebruik gemaakt worden van een A4- tje met eigen aantekeningen.

Het is geen open boek tentamen. Wel mag gebruik gemaakt worden van een A4- tje met eigen aantekeningen. Examen ET1205-D1 Elektronische Circuits deel 1, 5 April 2011, 9-12 uur Het is geen open boek tentamen. Wel mag gebruik gemaakt worden van een A4- tje met eigen aantekeningen. Indien, bij het multiple choice

Nadere informatie

Dit examen bestaat uit 35 multiple choice vragen. Je bent geslaagd als je: 25 van de 35 vragen goed hebt

Dit examen bestaat uit 35 multiple choice vragen. Je bent geslaagd als je: 25 van de 35 vragen goed hebt Dit examen bestaat uit 35 multiple choice vragen. Je bent geslaagd als je: 25 van de 35 vragen goed hebt Dit oefenexamen lijkt erg op het echte examen. Als je wilt weten of je alles goed hebt begrepen

Nadere informatie

256 kb Memory in NMS 8250, 8255 and 8280

256 kb Memory in NMS 8250, 8255 and 8280 256 kb Memory in NMS 8250, 8255 and 8280 Supplied by Bastiaan Huber, 2001 Converted to PDF by HansO, 2001 Dutch text follows the english text! MEMORY-UPGRADE to 256Kb This description is only for people

Nadere informatie

Tochttechnieken Cursus Coördinatie Bijlage cursus 5

Tochttechnieken Cursus Coördinatie Bijlage cursus 5 Tochttechnieken Cursus Bijlage cursus 5 Door: Maurits Westerik Jong Nederland De Lutte. December 2008 Inhoudsopgave 1. Kompas... 3 2. Kaarten... 4 3. Coördinaten... 5 4. Kruispeiling... 6 Jong Nederland,

Nadere informatie

Hertentamen 8D040 - Basis beeldverwerking

Hertentamen 8D040 - Basis beeldverwerking Hertentamen 8D040 - Basis beeldverwerking 6 augustus 203, 4:00-7:00 Opmerkingen: Maak elke opgave op een apart vel. Antwoord op vraag 4 mag gewoon in het Nederlands. Een gewone rekenmachine is toegestaan.

Nadere informatie

Bijlage 2: Informatie met betrekking tot goede praktijkvoorbeelden in Londen, het Verenigd Koninkrijk en Queensland

Bijlage 2: Informatie met betrekking tot goede praktijkvoorbeelden in Londen, het Verenigd Koninkrijk en Queensland Bijlage 2: Informatie met betrekking tot goede praktijkvoorbeelden in Londen, het Verenigd Koninkrijk en Queensland 1. Londen In Londen kunnen gebruikers van een scootmobiel contact opnemen met een dienst

Nadere informatie

S e v e n P h o t o s f o r O A S E. K r i j n d e K o n i n g

S e v e n P h o t o s f o r O A S E. K r i j n d e K o n i n g S e v e n P h o t o s f o r O A S E K r i j n d e K o n i n g Even with the most fundamental of truths, we can have big questions. And especially truths that at first sight are concrete, tangible and proven

Nadere informatie

Deel 8: stappenmotoren en interrupts

Deel 8: stappenmotoren en interrupts Deel 8: stappenmotoren en interrupts Stappenmotor Kan hoek van as instellen zonder een gesloten feedbacksysteem. Het is een simpel en precies open loop systeem. Werkt met discrete stappen, dus schokkerig

Nadere informatie

Handleiding My GPS Tracking Portal

Handleiding My GPS Tracking Portal Met de My GPS Tracker raakt u nooit meer iets kwijt Handleiding My GPS Tracking Portal 2.1 Actuele locatie bekijken & uitleg interface 1. log in via http://portal.mygpstracker.nl 1. U komt in de online

Nadere informatie

Windmolenpark Houten. Project nask & techniek Leerjaar 2 havo/atheneum College de Heemlanden, Houten. Namen: Klas:

Windmolenpark Houten. Project nask & techniek Leerjaar 2 havo/atheneum College de Heemlanden, Houten. Namen: Klas: Namen: Klas: Windmolenpark Houten Project nask & techniek Leerjaar 2 havo/atheneum College de Heemlanden, Houten Ontwikkeld door: Geert Veenstra Gerard Visker Inhoud Probleem en hoofdopdracht Blz 3 Samenwerking

Nadere informatie

Handleiding controle Portal

Handleiding controle Portal Met Sociale Controle raakt u nooit meer iets kwijt Handleiding controle Portal 2.1 Actuele locatie bekijken & uitleg interface 1. log in via http://portal.sociale-controle.nl/ 1. U komt in de online controle

Nadere informatie

Genieten na een oversteek

Genieten na een oversteek Genieten na een Klaas Wiersma maakte een oversteek. Nee, niet op de Noordzee of de Atlantic. Het ging van Ameland naar Terschelling. Met de Cornish Crabber Urmiena. Geen sinecure met een dikke noordwester.

Nadere informatie

Het nieuwe trimsysteem in de Laser!

Het nieuwe trimsysteem in de Laser! Het nieuwe trimsysteem in de Laser! Al een tijdje zijn er binnen de internationale Laserklasse plannen om de Laser aan te passen aan het moderne zeilen, en daarbij het zeilen in de Laser toegankelijker

Nadere informatie

Krachten. Hoe en waarom zeilt een zeilboot? Bert Stals, 1 februari 2019

Krachten. Hoe en waarom zeilt een zeilboot? Bert Stals, 1 februari 2019 Krachten Hoe en waarom zeilt een zeilboot? Bert Stals, 1 februari 2019 Programma Krachten en krachten combineren Waarom gaan we niet steeds harder (tegenkrachten aan het werk) Momenten (krachten en armen)

Nadere informatie

DISEqC motor instaleren. Woordje vooraf

DISEqC motor instaleren. Woordje vooraf Woordje vooraf Alle satellieten hangen om een baan rond de Aarde. Ze hangen zodanig rond de aarde dat men van een riem kan spreken. Het Engelse woord voor riem is belt. De naam van al die satellieten samen

Nadere informatie

Schriftelijke zitting Systeem- en regeltechniek 2 (WB2207) 31 januari 2008 van 9:00 tot 12:00 uur

Schriftelijke zitting Systeem- en regeltechniek 2 (WB2207) 31 januari 2008 van 9:00 tot 12:00 uur Schriftelijke zitting Systeem- en regeltechniek 2 (WB227) 31 januari 28 van 9: tot 12: uur Onderstaande aanwijzingen nauwkeurig lezen. Vul op het voorblad uw naam, voorletters, studienummer en opleiding

Nadere informatie

Examen HAVO. Wiskunde A1,2

Examen HAVO. Wiskunde A1,2 Wiskunde A1,2 Examen HAVO Hoger Algemeen Voortgezet Onderwijs Tijdvak 1 Donderdag 25 mei 13.30 16.30 uur 20 00 Dit examen bestaat uit 19 vragen. Voor elk vraagnummer is aangegeven hoeveel punten met een

Nadere informatie

Zo gaat jouw kunstwerk er straks uitzien. Of misschien wel heel anders.

Zo gaat jouw kunstwerk er straks uitzien. Of misschien wel heel anders. Spirograaf in Python Een kunstwerk maken Met programmeren kun je alles maken! Ook een kunstwerk! In deze les maken we zelf een kunstwerk met Python. Hiervoor zal je werken met herhalingen en variabelen.

Nadere informatie

Interface tussen Stuurbediening en Sony autoaudio

Interface tussen Stuurbediening en Sony autoaudio The information in this document is in Dutch, English version follows later in this document Interface tussen Stuurbediening en Sony autoaudio LET OP! HOEWEL DE UITERSTE ZORGVULDIGHEID IS BETRACHT BIJ

Nadere informatie

1. Van je juf of meester krijg je een plaatje. Bekijk je plaatje goed. 3. Zoek samen nog vier klasgenoten met een ander plaatje.

1. Van je juf of meester krijg je een plaatje. Bekijk je plaatje goed. 3. Zoek samen nog vier klasgenoten met een ander plaatje. Opdracht 1 Ongeveer 150 jaar geleden stonden er veel steenfabrieken langs de IJssel. De stenen werden van klei gemaakt. Dat kon je langs de IJssel vinden. Als de rivier overstroomde, bleef er een laagje

Nadere informatie

Jeroen uit. Extra informatie. Voor de lunch. Arduino zo aangesloten om mijn code te laten werken. (versie voor lunch) (code voor de lunch)

Jeroen uit. Extra informatie. Voor de lunch. Arduino zo aangesloten om mijn code te laten werken. (versie voor lunch) (code voor de lunch) We zijn weer aan dag drie al beland vandaag weer een dag CLE aangezien ik zag dat ik het vorige blog was vergeten CLE staat voor Contextiual Learning Enviroment ( weet je dat ook weer ) Maar ja zoals ik

Nadere informatie

Uitwerkingen oefeningen hoofdstuk 3

Uitwerkingen oefeningen hoofdstuk 3 Uitwerkingen oefeningen hoofdstuk 3 3.4.1 Basis Tijd meten 1 Juli heeft 31 dagen. Wanneer 25 juli op zaterdag valt, valt 31 juli dus op een vrijdag. Augustus heeft ook 31 dagen. 1 augustus valt dus op

Nadere informatie

Trim je mast in vijf stappen

Trim je mast in vijf stappen De Lijnenspecialist wil zeilers zoveel mogelijk zelf laten doen en investeert veel in instructiefilms, artikelen en workshops. Dit resulteert niet alleen in kostenbesparingen voor jou, maar het is vooral

Nadere informatie

Ahoy! Mijn naam is Moos Matroos. Aan boord steek ik graag mijn handen uit de mouwen én maak ik veel plezier. Wil je ook aan de slag als matroos?

Ahoy! Mijn naam is Moos Matroos. Aan boord steek ik graag mijn handen uit de mouwen én maak ik veel plezier. Wil je ook aan de slag als matroos? ---- Samen varen, samen doen----------- Laatst was mijn kleinzoon voor de eerste keer aan boord van mijn motorboot, een jochie van net anderhalf jaar. Het eerste wat hij deed, was draaien aan het stuurwiel.

Nadere informatie

LESMODULE OVER WINDENERGIE

LESMODULE OVER WINDENERGIE YOUNG ENERGY PROJECT - STUDENTEN LESMODULE OVER WINDENERGIE Inhoudsopgave Instructiebladen Les 1 Module windenergie, Instructieblad 1.1 4 Les 1 Ontdek, Instructieblad 1.2 5 Les 2 Onderzoek, Instructieblad

Nadere informatie

De bepaling van de positie van een. onderwatervoertuig (inleiding)

De bepaling van de positie van een. onderwatervoertuig (inleiding) De bepaling van de positie van een onderwatervoertuig (inleiding) juli 2006 Bepaling positie van een onderwatervoertuig. Inleiding: Het volgen van onderwatervoertuigen (submersibles, ROV s etc) was in

Nadere informatie

Dit boekje is van: ...

Dit boekje is van: ... Dit boekje is van:... Boekje kwijt? Je kan hem ook terugvinden op onze website! www.scoutingwestvoorne.nl Speltakken > Zeeverkenners > CWO Zeilen Aftekenlijst voor het CWO 2 Diploma Praktijk Eisen: CWO

Nadere informatie

Examen VMBO-KB. wiskunde CSE KB. tijdvak 2 dinsdag 19 juni 13.30-15.30 uur. Bij dit examen hoort een uitwerkbijlage.

Examen VMBO-KB. wiskunde CSE KB. tijdvak 2 dinsdag 19 juni 13.30-15.30 uur. Bij dit examen hoort een uitwerkbijlage. Examen VMBO-KB 2012 tijdvak 2 dinsdag 19 juni 13.30-15.30 uur wiskunde CSE KB Bij dit examen hoort een uitwerkbijlage. Dit examen bestaat uit 25 vragen. Voor dit examen zijn maximaal 75 punten te behalen.

Nadere informatie

Interaction Design for the Semantic Web

Interaction Design for the Semantic Web Interaction Design for the Semantic Web Lynda Hardman http://www.cwi.nl/~lynda/courses/usi08/ CWI, Semantic Media Interfaces Presentation of Google results: text 2 1 Presentation of Google results: image

Nadere informatie

Meer succes met je website

Meer succes met je website Meer succes met je website Hoeveel geld heb jij geïnvesteerd in je website? Misschien wel honderden of duizenden euro s in de hoop nieuwe klanten te krijgen. Toch levert je website (bijna) niets op Herkenbaar?

Nadere informatie

Zeilen met een punter

Zeilen met een punter Zeilen met een punter Op ze en volgen 5 bladzijn staat hoe je echt kunt zeilen met een originele Gieterse zeilpunter. Op ze tekening staan belangrijkste onrlen van zeilpunter: tophoek roer spriet spriet

Nadere informatie

OPDRACHTKAART. Thema: Multimedia/IT. Audio 4. Digitaliseren MM-02-10-01

OPDRACHTKAART. Thema: Multimedia/IT. Audio 4. Digitaliseren MM-02-10-01 OPDRACHTKAART MM-02-10-01 Digitaliseren Voorkennis: Je hebt Multimedia-opdrachten 1 tot en met 3 en audio-opdracht 1 t/m 3 (MM-02-03 t/m MM-02-09) afgerond. Intro: Geluid dat wij horen is een analoog signaal.

Nadere informatie

TEST 1: Eerst denken of eerst doen? Kruis steeds het antwoord aan dat het best bij jou past. Probeer zo eerlijk mogelijk te antwoorden.

TEST 1: Eerst denken of eerst doen? Kruis steeds het antwoord aan dat het best bij jou past. Probeer zo eerlijk mogelijk te antwoorden. TEST 1: Eerst denken of eerst doen? Kruis steeds het antwoord aan dat het best bij jou past. Probeer zo eerlijk mogelijk te antwoorden. 5. Onderweg naar een feestje doe je nog even snel een boodschap.

Nadere informatie

MIDI STURING voor SERVO s

MIDI STURING voor SERVO s MIDI STURING voor SERVO s Vanuit mijn idee om Marieke te maken, een pop die als dirigent optreedt bij het afspelen van MIDI muziek heb ik een schakeling gemaakt die behalve voor zo n pop ook voor andere

Nadere informatie

Uit: Niks relatief. Vincent Icke Contact, 2005

Uit: Niks relatief. Vincent Icke Contact, 2005 Uit: Niks relatief Vincent Icke Contact, 2005 Dé formule Snappiknie kanniknie Waarschijnlijk is E = mc 2 de beroemdste formule aller tijden, tenminste als je afgaat op de meerderheid van stemmen. De formule

Nadere informatie

Examen HAVO. Wiskunde B1,2 (nieuwe stijl)

Examen HAVO. Wiskunde B1,2 (nieuwe stijl) Wiskunde B1,2 (nieuwe stijl) Examen HAVO Hoger Algemeen Voortgezet Onderwijs Tijdvak 2 Woensdag 19 juni 13.30 16.30 uur 20 02 Voor dit examen zijn maximaal 85 punten te behalen; het examen bestaat uit

Nadere informatie

Ik ben Sim-kaart. Mobiel bellen groep 7-8. De Simkaart is een meisje, tikkeltje ondeugend en een echte kletsgraag. Aangeboden door

Ik ben Sim-kaart. Mobiel bellen groep 7-8. De Simkaart is een meisje, tikkeltje ondeugend en een echte kletsgraag. Aangeboden door De Simkaart is een meisje, tikkeltje ondeugend en een echte kletsgraag Hoi! Blijf even aan de lijn. Ik zit namelijk op de andere. Wacht even. Hoi, ik kom zo even terug want ik moet even iets zeggen over

Nadere informatie

Concept of Feedback. P.S. Gandhi Mechanical Engineering IIT Bombay

Concept of Feedback. P.S. Gandhi Mechanical Engineering IIT Bombay Concept of Feedback P.S. Gandhi Mechanical Engineering IIT Bombay Recap Goal of the course: understanding and learning Assignments: optional to start with Contact hour with TAs: Monday AN: time? Meeting

Nadere informatie

VAARDIGHEDEN EXCEL. MEETWAARDEN INVULLEN In de figuur hieronder zie je twee keer de ingevoerde meetwaarden, eerst ruw en daarna netjes opgemaakt.

VAARDIGHEDEN EXCEL. MEETWAARDEN INVULLEN In de figuur hieronder zie je twee keer de ingevoerde meetwaarden, eerst ruw en daarna netjes opgemaakt. VAARDIGHEDEN EXCEL Excel is een programma met veel mogelijkheden om meetresultaten te verwerken, maar het was oorspronkelijk een programma voor boekhouders. Dat betekent dat we ons soms in bochten moeten

Nadere informatie