Industriële Wetenschappen
RoboCup Junior: Rescue
Uitgewerkte cursus voor leerkrachten van het secundair onderwijs
Industriële Wetenschappen Elektro-Mechanica Versie: 2.0 Uitgever door Stefan vd
Laatst aangepast op 1 november 2009 www.stefanvd.net
Inhoudsopgave 1.
Doelstelling ...................................................................................................................................... 6
2.
Wat is RoboCup Junior? .................................................................................................................. 7 2.1
Inleiding ................................................................................................................................... 7
2.2
Deelname ................................................................................................................................ 7
2.3
Regels van de reddingsoperatie .............................................................................................. 8
2.3.1
De wedstrijd ........................................................................................................................ 8
2.3.2
Controle robots ................................................................................................................... 8
2.3.3
Interview.............................................................................................................................. 8
2.3.4
Kalibratie.............................................................................................................................. 9
2.3.5
Start ..................................................................................................................................... 9
2.3.6
Herstarten ........................................................................................................................... 9
2.3.7
Kapotte robots..................................................................................................................... 9
2.3.8
Scores .................................................................................................................................. 9
2.4 3.
Met de actieve medewerking van: ........................................................................................ 10
De toekomst van de robot............................................................................................................. 11 3.1 Inleiding: ...................................................................................................................................... 11 3.2
Geschiedenis: ........................................................................................................................ 11
3.3
Definitie: ................................................................................................................................ 11
3.4
Toepassingen: ........................................................................................................................ 11
3.5
Componenten:....................................................................................................................... 12
3.5.1
Elektronica: .................................................................................................................... 12
3.5.2
Actuatoren:.................................................................................................................... 12
3.5.3
Sensoren: ....................................................................................................................... 12
3.5.4
Mechanica: .................................................................................................................... 12
3.5.5
Microcontrollers: ........................................................................................................... 12
3.5.6
Software: ....................................................................................................................... 13
3.6
Toekomst: .............................................................................................................................. 13
4.
Wat is Lego Mindstorms NXT? ...................................................................................................... 15
5.
Wat bevindt er zich in de Lego NXT doos? .................................................................................... 15
6.
Gebruik van LEGO motor ............................................................................................................... 16
7.
6.1
Algemeen............................................................................................................................... 16
6.2
Software NXT ......................................................................................................................... 16
Gebruik van sensoren .................................................................................................................... 17
RoboCup Junior Cursus
2
7.1
Druksensor ............................................................................................................................ 17
7.1.1
Wat is een druksensor? ................................................................................................. 17
7.1.2
Werking ......................................................................................................................... 17
7.1.3
Toepassing: .................................................................................................................... 17
7.1.4
Software NXT ................................................................................................................. 17
7.2
Geluidssensor ........................................................................................................................ 18
7.2.1
Wat is het geluidssensor?.............................................................................................. 18
7.2.2
Werking: ........................................................................................................................ 18
7.3
Lichtsensor............................................................................................................................. 19
7.3.1
Wat is een lichtsensor? ................................................................................................. 19
7.3.2
Toepassing ..................................................................................................................... 19
7.3.3
Software NXT ................................................................................................................. 19
7.4
Ultrasone sensor ................................................................................................................... 20
7.4.1
Wat is een ultrasone sensor? ........................................................................................ 20
7.4.2
Werking ......................................................................................................................... 20
7.4.3
Looptijd:......................................................................................................................... 20
7.4.4
De eigenschappen bij de LEGO NXT .............................................................................. 21
7.4.5
Kenmerk ........................................................................................................................ 21
7.4.6
Voordelen ...................................................................................................................... 21
7.4.7
Nadelen ......................................................................................................................... 21
7.4.8
Toepassing ..................................................................................................................... 21
7.5
Temperatuur sensor .............................................................................................................. 22
7.5.1
Wat is een temperatuur sensor..................................................................................... 22
7.5.2
Werking ......................................................................................................................... 22
7.5.3
Toepassing ..................................................................................................................... 22
7.6
Kleuren sensor ....................................................................................................................... 23
7.6.1
Algemeen....................................................................................................................... 23
7.6.2
Programmeren .............................................................................................................. 23
7.6.3
Kleurennummerkaart .................................................................................................... 25
7.7
Gyroscoop sensor .................................................................................................................. 27
7.7.1
Wat is Gyroscoop sensor? ............................................................................................. 27
7.7.2
Werking: ........................................................................................................................ 27
7.7.3
Extra typen: ................................................................................................................... 28
7.7.4
Voordelen: ..................................................................................................................... 28
RoboCup Junior Cursus
3
7.7.5
Nadeel: .......................................................................................................................... 28
7.7.6
Toepassingen: ................................................................................................................ 29
7.8
7.8.1
Wat is dit Codatex RFID sensor?................................................................................... 31
7.8.2
Werking: ........................................................................................................................ 31
7.8.3
Software: ....................................................................................................................... 31
7.8.4
Een eenvoudig programma ter illustratie hoe deze sensor juist werkt ........................ 32
7.9
8.
9.
Codatex RFID (Radio Frequency IDentification) sensor........................................................ 31
De NXT sensor adaptor.......................................................................................................... 33
7.9.1
Wat is de NXTsensor adaptor ........................................................................................ 33
7.9.2
De sensors die compatible zijn met de NXT Sensor Adapter: ....................................... 33
7.9.3
Software: ....................................................................................................................... 34
Gebruik van de weergave-scherm................................................................................................. 35 8.1
Hoe toon je informatie op het nxt beeldscherm? ................................................................. 35
8.2
Het beeldscherm menu ......................................................................................................... 35
Het brein achter de NXT ................................................................................................................ 36 9.1
Wat zit er nu juist in?............................................................................................................. 36
9.2
De binnenkant van de NXT : .................................................................................................. 37
10. De communicatie .......................................................................................................................... 38 10.1
Communicatie PC of ander mobiel apparaat naar de NXT systeem ..................................... 38
10.1.1
Met behulp van de USB-kabel: ...................................................................................... 38
10.1.2
Met behulp van Bluetooth: ........................................................................................... 38
10.2
Software: ............................................................................................................................... 39
10.3
Communicatie draden van het NXT systeem naar een element........................................... 40
10.3.1
Algemeen....................................................................................................................... 40
10.3.2
Draad aan de NXT Sensor Interface Pinout ................................................................... 40
10.3.3
Verklaring ...................................................................................................................... 41
11. Programmeer Software ................................................................................................................. 42 11.1
Inleiding ................................................................................................................................. 42
11.2
Soorten programeertalen...................................................................................................... 42
11.2.1
Microsoft Robotics Studio ............................................................................................. 42
11.2.2
BricxCC ........................................................................................................................... 43
11.2.3
RobotC ........................................................................................................................... 43
11.2.4
LeJOS.............................................................................................................................. 43
12. Bouw Software .............................................................................................................................. 45
RoboCup Junior Cursus
4
13. Werking software en leren programmeren .................................................................................. 46 13.1
Inleiding hoe programmeer je, u eigen NXT robot! .............................................................. 46
13.2
Hoe Installeer ik de LEGO® MINDSTORMS® software? .......................................................... 46
13.3
Kennis met het hoofdscherm ................................................................................................ 48
13.4
Commentaar toevoegen aan je programma ......................................................................... 51
13.5
NXT blokken........................................................................................................................... 52
13.6
Opdrachten............................................................................................................................ 56
Opdracht 1 ......................................................................................................................................... 56 Opdracht 2 ......................................................................................................................................... 59 Een lijn volgen met 1 lichtsensor................................................................................................... 59 Opdracht 3 ......................................................................................................................................... 61 Opdracht 3a: Kalibratie + lijn volgen met 1 lichtsensor ................................................................ 61 Opdracht 3b: lijnvolger met gegevens van het kalibratie programma ......................................... 64 Opdracht 4:........................................................................................................................................ 66 Programma Object zoeken ............................................................................................................ 66 14. Rescue parcour .............................................................................................................................. 68 14.1
Inleiding ................................................................................................................................. 68
14.2
Robocup Plan......................................................................................................................... 68
14.3
Vereiste robot........................................................................................................................ 69
14.4
Bouw robot ............................................................................................................................ 69
14.5
Programma ............................................................................................................................ 70
14.5.1
Rescue kalibratie ........................................................................................................... 70
14.5.2
Rescue parcour .............................................................................................................. 71
15 Besluit: ........................................................................................................................................... 74 Literatuur ............................................................................................................................................... 75
RoboCup Junior Cursus
5
1. Doelstelling Met behulp van deze bundel bereiden we je voor op de RoboCup Junior wedstrijd. Eerst geven we een algemene informatie over de webstrijd, wat robots zijn en de ontwikkeling ervan in de toekomst. We zullen met behulp van het LEGO MINDSTORMS NXT pakket een rescue robot maken. Hierbij moet hij een uitgewerkt parcours doorlopen. We gaan de robot ontwerpen, de technische mogelijkheid bekijken, de robot effectief maken en uiteraard deze uitgebreid testen. Tevens zal er in deze bundel een hoofdstuk zijn toegewijd aan het stap voor stap uitleggen hoe je een robot programmeert via het lego software pakket. Ook gaan we bekijken of de robot geen fouten maakt door verkeerden instellingen van de sensoren of dergelijke. Dit samen wordt gebundeld en bevat een stapsgewijze instructie gemaakt om leerlingen van de secundaire school wegwijs te maken met de LEGO MINDSTORMS NXT. Dit was een projectwerk van de Artesis Hogeschool Antwerpen. Meer informatie op http://www.stefanvd.net/project/nxt.htm Meer informatie over RoboCup Junior België op http://www.robocupjunior.be
RoboCup Junior Cursus
6
2. Wat is RoboCup Junior? 2.1
Inleiding
In de schaduw van de RoboCup, een wedstrijd waarbij onderzoeksinstellingen en universiteiten over de hele wereld elkaar proberen te overtroeven door alsmaar betere robots te bouwen, vindt deze RoboCup Junior wedstrijd zich dit schooljaar voor het eerst in België plaats. De bedoeling is om schoolteams op speelse wijze vertrouwd te maken met de technologie door hen in groep een robot te laten bouwen, zodat men tijdens de finale in april 2009 kan deelnemen aan één van de twee disciplines: dansen of redden. Ervaring is niet nodig: leerkrachten die met hun klas willen deelnemen, krijgen gratis workshops aangeboden. Deze zijn ontworpen op basis van de nieuwe eindtermen voor het laatste jaar basisonderwijs en de eerste graad van het secundair onderwijs. Bij RoboCup Junior hoort ook het boek “Robots binnenstebuiten”. Deze legt op heel duidelijke en originele wijze uit hoe een robot in elkaar zit, en waarvoor robots zoal gebruikt worden. Hoe hoort een robot, hoe ziet een robot, waarom valt een robot niet om, knuffelrobots en robots in films. Dit komt allemaal uitgebreid aan bod met bijhorende illustraties. Leerkrachten die zich inschrijven krijgen het boek gratis, een must voor iedereen die wil weten hoe robots ons leven kunnen veranderen.
2.2
Deelname
Om deel te nemen hoef je je enkel in te schrijven op de inschrijvingspagina. Om u deelname succesvol te maken is er het robotboek, de lego NXT handleiding, de FAQ pagina en voor de leerkrachten/begeleiders zijn er de workshops.
RoboCup Junior Cursus
7
2.3 Regels van de reddingsoperatie 2.3.1 De wedstrijd Iemand heeft een telefoontje gepleegd naar de reddingsbrigade. Een slachtoffer is in een moeras gevallen. Jouw team moet een robot ontwerpen, bouwen en programmeren om het slachtoffer zo snel mogelijk te redden. Het veld bestaat uit : - een groen zone, dat een grasveld voorstelt - een zwarte lijn, namelijk de weg die de robot moet volgen - een geel gedeelte dat een moeras voorstelt In het moeras wordt een poppetje neergelegd, dat het slachtoffer voorstelt. Doelstelling: Via de zwarte weg moet de robot het moeras vinden waarin hij vervolgens het slachtoffer dient te lokaliseren en tot slot deze uit het moeras moet redden door hem eruit te duwen. Om deze taak te volbrengen krijg je precies anderhalve minuut (90 seconden). De opdracht is dus de robot zo te programmeren dat hij efficiënt een lijn kan volgen, je moet dus rekening houden met zowel snelheid als zijn reactietijd om de lijn te kunnen volgen, anders zal de robot van zijn parcour afwijken wat uiteraard niet de bedoeling is. Het te redden poppetje is gemaakt van Lego en heeft een andere kleur dan het moeras. Je mag ook zelf een poppetje maken, zolang dit maar tussen de 10 en 12 cm groot is. Zoek het poppetje en duw het daarna naar de kant, waardoor het gered wordt. Je mag de gehele weg volgen (zwarte lijn )maar je kan ook een kortere route nemen, door het kleine gele weggetje te volgen. (zie hoofdstuk 14) De wedstrijd bestaat uit enkele voorrondes gevolgd door een finale, afhankelijk van de opzet van de wedstrijden. In ieder van de voorrondes mag elk team eenmaal een reddingspoging ondernemen, waardoor er dus een aantal pogingen kunnen worden ondernomen. Er worden punten voor iedere poging genoteerd. De beste pogingen van een team worden opgeteld om aan de totale score te komen. Als twee teams een gelijk aantal punten hebben aan het eind van de voorrondes wordt de benodigde tijd bekeken die in de vier beste pogingen nodig was om het poppetje te redden. Het team met de kortste tijd wordt beschouwd als het team met de hoogste score.
2.3.2 Controle robots De robots mag niet groter zijn dan 18 cm doorsnede en niet hoger dan 18 cm. Ze moeten geheel zelfstandig werken en mogen dus niet bestuurd worden op afstand.
2.3.3 Interview Voor het begin van de wedstrijd houdt de scheidsrechter een interview waarbij de teamleden moeten uitleggen hoe hun robot is gebouwd en geprogrammeerd.
RoboCup Junior Cursus
8
2.3.4 Kalibratie Omdat de lichtomstandigheden en soms ook de ondergronden kunnen verschillen is het belangrijk om voor de wedstrijd de sensoren te kalibreren zodat de weg, de grond en het moeras goed kunnen worden onderscheiden.
2.3.5 Start Iedere reddingspoging duurt maximaal 90 seconden. De robot wordt op de startpositie gezet en wanneer de scheidsrechter dit aangeeft moet de robot met de hand gestart worden. De robot moet dan de zwarte lijn volgen totdat hij bij het moeras komt. Daarbij moet er aan het volgende worden voldaan: 1) De robot moet de lijn volledig volgen tot aan het moeras 2) De robot mag de kortere weg via het gele pad volgen, waardoor er tijd kan worden gewonnen. 3) Als de robot onderweg de weg kwijtraakt moet hij opnieuw beginnen bij het startpunt
2.3.6 Herstarten Als de ploegleider het nodig vindt, moet de robot opnieuw beginnen binnen de 90 seconden van de wedstrijd. De robot moet dan op het startpunt worden gezet en eerst worden gecontroleerd door de scheidsrechter. De wedstrijdklok blijft tijdens iedere herstart doorlopen. Er mag onbeperkt worden herstart binnen de 90 seconden speeltijd. De behaalde punten van de beste poging wordt gebruikt als de score van een reddingspoging. Een robot is verplicht te herstarten als: • Hij de zwarte lijn kwijtraakt • Hij door iemand wordt aangeraakt • Hij van het speelveld afrijdt
2.3.7 Kapotte robots Als de robot kapot gaat, mag hij worden gerepareerd, maar de wedstrijdklok draait door. Er mag niet met een andere robot gespeeld worden binnen eenzelfde reddingspoging.
2.3.8 Scores Bij het uitvoeren van de reddingsoperatie kunnen er punten worden verdiend. Als een controlepunt wordt gepasseerd en een bepaald doel wordt bereikt worden daar punten voor toegekend volgens het volgende systeem: • De robot volgt de lijn tot aan punt 1 –> 5 punten • De robot volgt de lijn tot aan punt 2 –> 5 punten • De robot volgt de lijn tot aan punt 3 –> 5 punten • De robot gaat het moeras in –> 5 punten • De robot duwt het slachtoffer uit het moeras –> 20 punten Het maximum dat dus gehaald kan worden is 40 punten
RoboCup Junior Cursus
9
2.4
Met de actieve medewerking van:
Hoofdsponsors KUKA Nationale Loterij Vrije Universiteit Brussel Professionele partners maxon motor Leroy-Somer Wetenschap maakt knap Asimo (Honda) Media partners Ketnet EOS Organiserende partners Vrije Universiteit Brussel – Wim Van Broeck (Cel wetenschapscommunicatie), Bram Vanderborght (Robotica onderzoeker) & Steve Vanlanduit (prof ingenieurswetenschappen) Technopolis -Steven Vols GO! - Ann Van Driessche Pedagogische Begeleidingsdienst Gent – Leen De Bie Erasmushogeschool Brussel – Frederic Trouillez Hogeschool West-Vlaanderen – Elke Denys Katholieke Hogeschool West-Vlaanderen – Filip Declercq en Rik Hostyn Hogeschool Gent – Mandy Ghyselinck TOS21 – Franz Pieters Artesis Hogeschool Antwerpen
RoboCup Junior Cursus
10
3. De toekomst van de robot 3.1 Inleiding: Eén van de eerste vragen die we ons kunnen stellen bij het onderwerp robot is, wat is het?, hoe wordt het gedefinieerd, hoe is het ontstaan, enz.
3.2
Geschiedenis:
De term robot is voor het eerst gebruikt door een Tsjechische schrijver in 1920. Het woord robot is afgeleid van het Tsjechische woord robota, dat niets minder betekend dan werk. Robots zijn bekend geraakt door bepaalde sciencefictionfilms zoals Robocop en Star Wars. Vaak hebben deze robots een lichaam dat erg sterk op dat van een mens lijkt, dergelijke robots worden humanoïde robots genoemd. Als dit niet het geval is, dus ze lijken niet op de mens, dan worden de robots androïden genoemd.
3.3
Definitie:
Een robot is eigenlijk niet meer dan een programmeerbare machine die meerdere taken kan uitvoeren. Hier vindt men al een verschil tussen bijvoorbeeld een rekenmachine en een robot. Een rekenmachine is geprogrammeerd voor 1 taak, in tegenstelling tot een robot die geprogrammeerd is voor meerdere taken. In de praktijk betekend dit dat een robot voor verschillende doeleinden kan worden ingezet terwijl men een rekenmachine enkel kan gebruiken voor het uitvoeren van rekentaken. Figuur 1 Robot
3.4
Toepassingen:
Robots worden zeer veel toegepast in de industrie en de ruimtevaart. De reden hiervoor is dat robots veel sneller, nauwkeuriger en goedkoper hun werk doen in vergelijking met de mens. In 2005 werden er wereldwijd al meer dan één miljoen robots gebruikt. De sondes in de ruimtevaart zijn een goed voorbeeld van geavanceerde robots. De sondes doen hun taken onafhankelijk en sturen daarna hun waarnemingen en gegevens terug naar de aarde. Ook in de ouderlingenzorg worden tegenwoordig veel robots gebruikt.
RoboCup Junior Cursus
Figuur 2
11
3.5
Componenten:
Om een robot te kunnen bouwen, aansturen en programmeren heeft men verschillende onderdelen nodig. Deze zijn allemaal onder te verdelen in een aantal categorieën: Elektronica, actuatoren, sensoren, mechanica, microcontrollers en software. 3.5.1 Elektronica: Onder de noemer elektronica verstaan we alle componenten zoals: diodes, weerstanden, led, spoelen, condensatoren, opamps, ic,…. 3.5.2 Actuatoren: Dit zijn alle middelen, manieren om de robot aan te drijven. Hiermee bedoelt men of er 2 wielen en een zwenkwiel gebruikt worden , enkel 3 of meerdere wielen of men rupsbanden gaat gebruiken en hoe men deze praktisch gaat gebruiken. 3.5.3 Sensoren: Dit zijn de apparaten waarmee de robot informatie van zijn omgeving krijgt. Dit kan op vele manieren gebeuren door bijvoorbeeld licht, ultrasoon geluid, tast (gevoel), warmte, vochtigheid, enzovoort. Al deze informatie kan de robot dus met een specifiek soort sensor verkrijgen. Zo bestaat er: • de lichtsensor: Hiermee kan men de robot licht gaan laten opzoeken of juist laten vermijden • de tastsensor of druksensor: Hiermee kan de robot detecteren of dat hij iets raakt of niet • De ultrasone sensor: doormiddel van deze sensor geraakt de robot bewust van zijn omgeving, als hij ergens in het nauw komt te zitten kan de robot open ruimtes gaan zoeken en zich vervolgens daarheen verplaatsen • De temperatuursensor: doormiddel van deze sensor kan de robot de temperatuur van de omgeving bepalen • … Figuur 3
3.5.4 Mechanica: Hiermee wordt het mechanisch aspect van de robot bedoeld, hoe verschillende onderdelen ten opzichte van elkaar moeten bewegen, bepaalde tandwieloverbrengingen, ofdat de robot zich snel moet bewegen, versnellingen nodig heeft en dergelijke zaken. 3.5.5
Microcontrollers: Dit zijn kleine computertjes waarmee de data van de sensoren verwerkt worden. Met deze verwerkte informatie kunnen er dan weer andere dingen worden aangestuurd zoals motoren en leds. Deze kleine computertjes beschikken dus over een processor en geheugenplaatsen.
Figuur 4
RoboCup Junior Cursus
12
3.5.6 Software: Doormiddel van de software kan worden bepaald hoe de robot zal moeten reageren op bepaalde prikkels (informatie) uit zijn omgeving. Zo kan men bijvoorbeeld gaan instellen dat de robot een toon laat horen wanneer deze ergens tegenaan rijdt. Voor een goede programmeur is bijna niets onmogelijk. Dit gaande van een arm te laten bewegen tot praten. Figuur 5
Men kan gaan programmeren in verschillende talen, voor de snelste reactietijd te bekomen kan men het best gaan programmeren in assembly. Deze taal is een low-level taal. Dit betekend dat de taal heel nauw aanligt bij de machinetaal en om deze reden is de reactiesnelheid dan ook heel hoog. Men kan ook in een hogere taal gaan programmeren. De reactiesnelheid zal dan wel iets trager zijn maar men kan wel gemakkelijker de code begrijpen en iets nauwkeuriger zijn in de bewegingen.
3.6
Toekomst: We weten nu wat de onderdelen en de functies van de robot zijn, maar je kan je ook afvragen waar dit allemaal naartoe gaat. Met welke projecten men bezig is, wat gaan de robots in te toekomst nog kunnen?
Figuur 6
Naar de toekomst toe zullen de robots steeds slimmer worden, ze gaan over kunstmatige intelligentie en een leervermogen beschikken waardoor ze steeds voor meer en meer toepassingen kunnen worden ingezet. Zowel de mens als de robot zal in de toekomst meer en meer eigenschappen van elkaar overnemen. Zoals nu al in beperkte mate gebeurd bij mensen die ledenmaten zijn verloren, kan robotica een uitweg, al dan niet een oplossing zijn. Dit kunnen prothesen zijn, die doormiddel van prikkels van het menselijke brein kunnen gestuurd worden. Er zijn zwartkijkers die deze vooruitgang vrezen. Zij geloven dat de robots in de toekomst de dominante ‘soort’ zal worden en het menselijke ras zal willen vernietigen, zoals in de films: ‘The Matrix’ en ’Terminator’. Voor de energielevering van de robots zal er in de toekomst nog een hele evolutie plaatsgrijpen. De huidige batterijen zijn veel te log en te zwaar, deze zullen naar de toekomst toe veel kleiner en compacter worden en waarschijnlijk ook een grotere energievoorraad bevatten. Een ander idee voor energiebevoorrading kan het implementeren van een soort mechanisch spijsverteringsstel zijn dat is gebaseerd op het onze. Waarschijnlijk zullen de robots van de toekomst ook zijn uitgerust zijn met een veel efficiëntere generatie van zonnepanelen wat de robot zelf zal kunnen bepalen of hij al dan niet terug opgeladen moet worden.
RoboCup Junior Cursus
13
Een goed voorbeeld dat robots eigenschappen van mensen overnemen is wel de ‘Vrouwelijke robot’. De robot is bijna niet van een echte vrouw te onderscheiden. Haar officiële naam is HRP-4C. Ze kan eigenlijk niet veel, de bedoeling van deze robot was enkel op een vrouw lijken.
Ze kan eveneens emoties tonen. Ze kan dit doordat haar hooft acht motoren bevat en in de rest van haar lichaam bevinden er zich nog een dertig. In Japan zijn ze erg goed in het bouwen van robots en de regering geeft hier subsidies voor.
Figuur 7
RoboCup Junior Cursus
14
4. Wat is Lego Mindstorms NXT? Hiermee kan je robots bouwen en programmeren die doen wat jij wilt! Er bestaat een klein kastje genaamd: “NXT systeem”, vroeger was dat de “RCX”. Het nieuwe systeem heeft een krachtige 32-bit processor en meer geheugen dan het vorig systeem. Tevens ondersteunt het ook Bluetooth en USB 2.0 Dankzij Bluetooth is het zelfs mogelijk om je robot vanaf je mobiele telefoon aan te sturen!
NXT systeem
RCX systeem
Figuur 8 Verschillende systemen
5. Wat bevindt er zich in de Lego NXT doos? Bij het openen van de LEGO MINDSTORMS NXT doos bevinden er zich de volgende onderdelen: • • • • • • • • • • • • • •
Het NXT Intelligent Brick met 32-bit processor Interactieve servomotoren met ingebouwde rotatiesensor Geluidssensor Ultrasone sensor Druksensor Lichtsensor 519 Lego Technic bouwstenen inputpoorten outputpoorten 7 connectie draden Matrix display Piëzo speaker USB 2.0 en Bluetooth ondersteuning Eenvoudige PC en Mac interface
Dit pakket kost in een gewone speelgoedwinkel ongeveer € 225,00 We zullen de verbeterende onderdelen (sensoren en servomotoren) verder bespreken in deze bundel.
RoboCup Junior Cursus
15
6. Gebruik van LEGO motor 6.1
Algemeen Dit stel de motor van onze LEGO robot voor. Je kan ermee de robot vooruit of achteruit laten rijden. Of je kan deze ook gebruiken om de robot een voorwerp te laten vast grijpen.
Figuur 9
6.2
Software NXT
Met dit blokje kan je de robot een rechte lijn voor- of achteruit laten volgen, of te laten draaien door een gebogen lijn te volgen. Door middel met de tijdsduur functie kan je definiëren hoe ver de robot moet bewegen. Figuur 10 1) De letters in de rechter bovenhoek van het blok geven aan welke NXT poorten geregeld worden. 2) Dit icoon geeft de richting aan waarin je robot beweegt. 3) Dit icoon geeft het vermogenniveau aan. Men kan ook de snelheid door andere voorwaarden laten beïnvloeden zoals het oppervlak waarover hij beweegt of als hij een helling op of af gaat. 4) Dit icoon geeft aan hoe lang je de motor wil laten werken. ( ingesteld in graden, omwentelingen of seconden)
Dit icoon laat zien dat de richting eigenschap op “stop” gezet is. Wat wil zeggen dat de C en B motoren stoppen.
Figuur 11
Figuur 12
RoboCup Junior Cursus
16
7. Gebruik van sensoren 7.1
Druksensor
7.1.1
Wat is een druksensor? Deze zorgt ervoor dat je robot kan voelen of hij iets aanraakt. De touch sensor weet wanneer iets ingedrukt is en wanneer het weer vrij komt. Figuur 13
7.1.2
Werking
Ingedrukt
losgelaten
rust stand
Figuur 14 Werking
7.1.3 Toepassing: Met deze sensor kan je ervoor zorgen dat de robot een voorwerp kan nemen of dat de robot weet wanneer hij een obstakel aanrijdt. Dit wordt allemaal gedaan met de gele programma blok ( zie onderstaande figuur). 7.1.4
Software NXT Hier kan men instellen bij welke actie de druksensor een bepaalde functie moet uitvoeren.
Figuur 15
Figuur 16
RoboCup Junior Cursus
17
7.2
Geluidssensor
7.2.1
Wat is het geluidssensor? Een geluidssensor is een sensor die luchtdrukvariaties meet.
Figuur 17
7.2.2 Werking: Doordat men een geluidssensor zo uitermate gevoelig maakt kan men ook drukpulsen waarnemen. Hierdoor kan men zelfs de snelheid van het geluid gaan bepalen, korte geluidspieken en dergelijke. Eveneens kan men (in beperkte mate) de geluidssensor ook gebruiken voor decibelmeting. Dit kan door de gemiddelde amplitude te bepalen en dit daarna te laten omrekenen naar decibels, of door een gelijkrichtende voorschakeling te bouwen en de sensor te ijken in decibel. Een nieuw type geluidsensor is het geluid meten aan de hand van een nanoluchtbel. Deze bestaat uit glasvezel waarin een gaatje van enkele honderden nanometer is geboord. Om u een idee te geven, dit gaatje is vele malen kleiner dan de dikte van een haar. Deze glasvezel wordt dan vervolgens in een kleine glasvezel geplaatst, waardoor er een zeer klein luchtbelletje ontstaat in dat kleine gaatje. Het grensvlak dat ontstaat gaat dan trillen bij ultrasone geluiden en het is die trilling die men gaat meten. Naargelang de intensiteit van de trilling kan men de geluidsterkte bepalen. Dit type van sensor is meer dan honderd keer nauwkeuriger dan de huidige sensoren voor ultrasoon geluid! 7.2.3
Software NXT Hier kan men instellen dat er bij een geluid een bepaalde functie moet uitvoert worden.
Figuur 19
Figuur 18
RoboCup Junior Cursus
18
7.3
Lichtsensor
7.3.1
Wat is een lichtsensor? Dit is een sensor die de hoeveelheid licht kan registeren dat gereflecteerd wordt. Waardoor het ook mogelijk is om verschillende kleuren te kunnen waarnemen (detectie door grijswaarden). Figuur 20
Dit is wat onze ogen zien
Dit is wat u robot zal zien wanneer je de lichtsensor gebruikt.
7.3.2 • •
Toepassing scheiding van verschillende glassoorten bij een recyclagecentrum (bruin, groen en wit glas) robot een vastgelegde baan te laten volgen in de industrie
7.3.3
Software NXT Hier kan men de hoeveelheid lichtsterkte aanduiden, wanneer hij een bepaalde functie gaat uitvoeren.
Figuur 21
Figuur 22
RoboCup Junior Cursus
19
7.4
Ultrasone sensor
7.4.1
Wat is een ultrasone sensor? Dit zijn sensoren die een afstand meten tot een object of die een object herkennen door het zenden en ontvangen van geluidspulsen. De geluidsgolven zijn een hoge frequentie die door de mens niet kan waargenomen worden.
Figuur 23
7.4.2 Werking De ultrasone sensor is onderverdeelt in 3 delen: • Een zender • Een ontvanger • Een verwerkingelement De ultrasone sensor verzendt periodiek een kort geluidsimpuls (hoog frequentie) uit. De impuls wordt verder uitgedreven met de geluidsnelheid van lucht, totdat het een voorwerp stoot. Waardoor de puls teruggekaatst wordt om zoals een echo de ultrasone sensor te bereiken. En op basis van zijn tijdsinterval tussen uitzenden van den geluidsimpuls en het ontvangen echosignaal zal het verwerkingselement de afstand bepalen van de ultrasone sensor tot aan het voorwerp. De looptijd is de tijd tussen het uitzenden van de impuls tegen over een welbepaalde afstand van de zender naar het gedetecteerd object en dan terug naar de ontvanger, waarbij het geluid een vaste snelheid heeft. Voorbeeld:
Looptijd =
t exp eriment 2
× Geluidscte
7.4.3 Looptijd: Geluidsnelheid in gassen, bijvoorbeeld voor lucht op 20° is dit 319 m/s Texperiment: tijdsduur van zender tegen object en naar ontvanger. De 2 duid aan dat de impuls heen en weer gaat. Zo kan men bijna alle materialen die geluid weerkerend zijn worden gedetecteerd, om het even welke kleur ze hebben. Bovendien vormen ook glasheldere materialen geen probleem voor de ultrasone sensor.
RoboCup Junior Cursus
20
7.4.4 De eigenschappen bij de LEGO NXT De ultrasone sensor wordt gebruik opdat de robot zou kunnen zien (voorwerpen ontdekken, obstakels vermijden , meten van afstanden en dergelijke). 7.4.5 Kenmerk De ultrasone sensor meet afstanden in centimeters en in inches op de NXT. Meetbereik tot op een afstand van 0 tot 255 centimeter Nauwkeurigheid van +/- 3 cm. Bij het gebruiken van de ultrasone sensoren in de industrie heeft deze toch enkele voor- en nadelen t.o.v. andere sensoren: 7.4.6 • • • • •
Voordelen het is ongevoelig voor vuil, damp en overige elementen geen kunstmatige belichting nodig het werkt in het donker detectie van doorschijnende materialen (scheuren en barsten) detectie ook bij een sterk vervuilende omgevingscondities (stoffige lucht en mist)
7.4.7 • • •
Nadelen hoge prijs tegen over de andere sensoren wordt niet door het menselijk oor waargenomen. (geluid boven de 20kHz) voorwerpen van zacht materiaal of die gebogen zijn, bijvoorbeeld een bal. Voorwerpen die heel erg dun of klein zijn kan de sensor moeilijk detecteren.
7.4.8 • • • • •
Toepassing bij het detecteren van vaste, vloeibare, korrel- en poedervormige voorwerpen. detecteren van een niveaumeting in een Coca Cola flessen… aftasten van kleine flessen in de verpakkingsindustrie. opmeten van turbulenties van in beweging zijnde gassen of vloeistoffen. meten van lekken, elektrische ontladingen, cavitaties en dergelijke.
7.4.9
Software NXT Hiermee kan met het zicht van de robot vergroten of verkleinen.
Figuur 24
Figuur 25
RoboCup Junior Cursus
21
7.5
Temperatuur sensor
7.5.1
Wat is een temperatuur sensor Een sensor waarvan je de huidige temperatuur van de omgeving kan meten. De waarden die hij meet zijn analoog en liggen tussen de 0°C en + 50°C.
Figuur 26
7.5.2 Werking Een temperatuursensor levert een elektrisch signaal aan een meetinstrument, waarop de temperatuur is af te lezen. Er bestaan weerstandsthermometers met een sensor op basis van metalen en halfgeleiders. De weerstand is als volgt afhankelijk van de temperatuur: RT2 = RT1(1 + α(T2 - T1)) waarin: RT2 = weerstand bij temperatuur T2 RT1 = weerstand bij temperatuur T1 α = weerstandstemperatuurcoëfficiënt Een veelgebruikte manier om de weerstand te meten is met een Brug van Wheatstone. De weerstand van de sensor wordt vergeleken met een bekende weerstand en uit deze meting wordt de temperatuur bepaald. Veel sensors hebben echter geen lineaire karakteristiek, zodat er een extra correctie plaats dient te vinden om de nauwkeurigheid voldoende groot te maken. De afwijking voor een Pt100 bedraagt maximaal 4 procent, maar een NTC heeft een geheel logaritmische kromme. Langs elektronische weg zijn deze correcties uitstekend uit te voeren. Veel gebruikte metalen voor deze toepassing zijn nikkel en platina. Beide hebben een behoorlijk lineair verloop van de weerstand bij temperatuurverandering, in relatief kleine temperatuurbereiken zelfs zeer lineair. Het bereik van een platina weerstand is van -200 tot boven de 800 °C en dat van nikkel tot ongeveer 200 °C. 7.5.3 • •
Toepassing meten van (koud of warm) water temperatuur meten van de omgevingstemperatuur
RoboCup Junior Cursus
22
7.6
Kleuren sensor
7.6.1
Algemeen De NXT Kleur-sensor opereert door gebruik van 3 verschillende kleuren Leds voor de verlichting van het gebruikte oppervlak en het meten van de intensiteit van elke kleur gereflecteerd door het oppervlak. Door gebruik van de relatieve intensiteit van elke kleur-reflectie zal de kleuren sensor een kleurnummer berekenen dat terug wordt gestuurd naar het NXT programma.
Figuur 27
De kleur-sensor wordt verbonden met een NXT sensorpoort door middel van een standaard NXT kabel en gebruikt het digitale I2C communicatie protocol. Het kleurnummer wordt door de sensor 100 keer per seconde herberekend. De sensor wordt behuisd in een standaard Mindstorm sensor behuizing dat past bij de andere Mindstorm elementen. Om de sensor te testen, steek je de sensor in poort 2 van je NXT en selecteer je vervolgens View > Ultrasonic cm > Port 2. Positioneer de sensor op ongeveer 0,5 cm van een gekleurd oppervlak. Een kleuren nummer van 0 tot 17 zal worden weergegeven op de NXT. Als je met de sensor over andere gekleurd oppervlakken beweegt, zullen de waarden veranderen. 7.6.2 Programmeren 7.6.2.1 Mindstorms NXT-G De kleuren sensor kan geprogrammeerd worden door LEGO Mindstorms NXT Software Kleuren Sensor Blok. 7.6.2.2 Kleuren sensor blok De kleuren sensor blok is geproduceerd om de HiTechnic kleuren sensor te ondersteunen. 1) Deze functie koppelt het nummer voor welke van jou NXT's poorten gekoppeld zijn aan de kleuren sensor 2) Deze functie koppelt het laagste limiet-nummer van de binnen- / buitenkant vergelijkfunctie 3) Deze functie koppelt het hoogste limiet-nummer van de binnen-/buitenkant vergelijkfunctie 4) Deze functie koppelt het kleuren nummer 5) Relatieve “rood” waarde 6) Relatieve “groen” waarde 7) Relatieve “blauw” waarde 8) Logische binnen-/buitenkant waarde
Figuur 28 Het uitklap menu van die sensor
RoboCup Junior Cursus
23
7.6.2.3
Kleuren front paneel
Figuur 29 Instellingen van het blokje
Deze poort laat je toe te selecteren op welke poort van de NXT , de sensor wordt aangesloten. 7.6.2.4 Vergelijken Vergelijkt de kleurennummers met het bereik en geeft het een logische waarde om te laten tonen of de waarde binnen of buiten het bereik valt.
7.6.2.5 Gebruik van het bereik De vergelijking laat je een bereik vastleggen en bepaald makkelijk of het kleurennummer binnen of buiten het bereik valt. De componenten voor het gebruik van de bereik-functie zijn : • • •
Binnenkant bereik / buitenkant bereik: testen voor een kleurennummer of deze in het bereik valt of er uit. A: Het laagste bereik-limiet B: Het hoogste bereik-limiet
Om de bereik-functie te gebruiken, stel je de laagste en de hoogste limieten in en of je dat wilt testen binnen of buiten het bereik. Voorbeeld van het logisch resultaat:
A
B
Bereik
Kleurnummer
8 8 8 8
12 12 12 12
Binnen bereik Binnen bereik Buiten bereik Buiten bereik
10 15 10 15
RoboCup Junior Cursus
Logische waarde OK NOK NOK OK
24
7.6.3
Kleurennummerkaart Toont de relatie tussen de doel-kleur en de kleurnummer teruggestuurd door de kleuren sensor.
Figuur 30 Kleurennummerkaart
7.6.3.1
Sensor Register Layout
Adres
Type
Inhoud
00 – 07H
chars
Sensor versie nummer
08 – 0FH
chars
Fabrikant
10 – 17H
chars
Sensor type
18 – 3DH
bytes
NVT
3E, 3FH
chars
Gereserveerd
40H
byte
NVT
41H
byte
Commando
42H
byte
Kleur nummer
43H
byte
Lees Rood
44H
byte
Lees Groen
45H
byte
Lees Blauw
46 - 47H
word
Ruwe lezing Rode sensor
48 - 49H
word
Ruwe lezing Groene sensor
4A – 4BH
word
Ruwe lezing Blauwe sensor
4CH
byte
Indexnummer kleur
4DH
byte
Genormaliseerde lezing Rood
4EH
byte
Genormaliseerde lezing Groen
4FH
byte
Geformaliseerde lezing Blauw
Met
Fabrikant = HiTechnic Sensor type = Kleur
RoboCup Junior Cursus
25
7.6.3.2 Opmerking: De HiTechnic Sensor opereert het best wanneer de positie recht boven het doeloppervlak hangt en niet onder een hoek. De NXT Firmware versie 1.03 moet worden geladen in de NXT om correct te werken. Je kan de Firmware nakijken door het NXT venster te laten tonen in de Mindstorms software.
Andere programmering programma's Robot C: Alle onderdelen van de HiTechnc kleur-sensor kunnen worden ingesteld via Robot C. Meer informatie via http://www-education.rec.ri.cmu.edu/robotc/. NXC: NXC is een C-programmeertaal samensteller dat alle kleur-sensoren kan instellen. Meer informatie via http://bricxcc.sourceforge.net/nbc/. We spreken verder in dit bundel welke programmering software er allemaal zijn.
RoboCup Junior Cursus
26
7.7
Gyroscoop sensor
7.7.1
Wat is Gyroscoop sensor? Een gyroscoop is eigenlijk een soort van tol. Aan de hand van de gyroscoop kan men de wet van het behoud van impulsmoment demonstreren. Het vliegwiel blijft draaien wanneer dit eenmaal in beweging is gezet.
Figuur 31
7.7.2 Werking: Een gyroscoop gebruikt men in een gyrokompas. Met zo een kompas kan men zoals de naam al doet vermoeden het noorden terugvinden omdat deze naar het noorden wijst, dit gebeurd doordat de gyroscoop zeer snel ronddraait. Zo een gyrokompas heeft wel enkele voordelen ten opzichte van een gewoon kompas. • • •
Het wijst naar het echte noorden. (niet het magnetische dat zich in Noord-Amerika bevindt) Het kompas wordt niet beïnvloed door het metaal van de romp van een vliegtuig of schip Het kompas zal zich zelf snel en precies herinstellen, ook al zijn er zware omgevingsinvloeden zoals een ruwe zee of turbulentie in een vliegtuig. (Het klassieke kompas moet vlak staan)
Doordat een gyroscoop om zijn as draait heeft het de neiging haar stand in de ruimte te bewaren, ook als de inclinatie (of beweging) van de behuizing waar het is ingebouwd verandert. Doordat de aarde om haar as draait lijkt het of dat de gyroscoop elke 24 uur één keer om haar as draait. Dit is echter enkel de draaiing die de aarde maakt doordat de Figuur 32 aardas een bepaalde inclinatie heeft. De gyroscoop wijst dus naar het echte noorden en niet het magnetische. Met dit principe kan men de gyroscoop nog niet gebruiken voor navigatie. Om een gyroscoop noordzoekend te maken brengt men een richt- en dempingssysteem aan. Hierdoor wordt de draaiing van de tol-as tegengewerkt. Hierdoor wordt de verticale beweging van de tol-as vermindert en gaat de tol-as een horizontale slingering uitvoeren met een periode van ongeveer anderhalf uur. Het dempingsysteem vermindert dan weer deze slingering waardoor de tol- as na enkele uren tot rust komt en dan het ware noorden aanwijst. Om de verticale bewegingen van de tol-as te verminderen kunnen ook kwikvaten gebruikt worden die op de tol-as worden geplaatst en door de zwaartekracht bepaalde reactiekrachten teweeg zullen brengen.
RoboCup Junior Cursus
27
Nog een essentieel element van de gyroscoop is wrijving. Deze moet er voor zorgen dat de gyroscoop niet vrij is om zich te heroriënteren. Voorbeeld: Als een voorwerp verbonden is met de as van de gyroscoop en vervolgens in een stroperige vloeistof wordt gehangen, dan zal die vloeistof de horizontale uitwijking tegenwerken. Als gevolg hiervan gaat na een tijd de gyroscoop naar het echt noorden wijzen (poolster). Gyroscopen kunnen tegenwoordig ook noord- zoekend worden gemaakt doormiddel van elektronische systemen. Dit gebeurd dan door ingewikkelde sensoren en regelsystemen die de draaiing van de gyroscoop verminderen. 7.7.3 Extra typen: • Vibratiegyroscoop: Ook een trillend voorwerp kan dienen als gyroscoop. Bij vliegende insecten kunnen de kleine soms knotsvormige organen achter de vleugels een rol spelen. Dit principe is veel gemakkelijker toe te passen in micro-elektronica. • Optische gyroscoop: Dit apparaat bevat eigenlijk geen bewegende onderdelen meer. Bij een optische gyroscoop wordt het licht gesplitst en nadien via bepaalde omwegen terug samengebracht, vervolgens gaat men dan het faseverschil meten. Zo een faseverschil kan men meten als een voorwerp in tussentijd meer in één bepaalde richting is geroteerd. 7.7.4 Voordelen: • Men kan aan de hand van een gyroscoop het ware noorden vinden (niet het magnetische dat men met een klassiek kompas vindt). • De werking van de gyroscoop niet word beïnvloed door de aanwezigheid van metaal. • Een gyroscoop hoeft niet vlak te staan, in woelige zee blijft het correct naar het noorden wijzen. 7.7.5 Nadeel: Zal niet goed werken in een toestel dat zich snel voortbeweegt omdat het afhankelijk is van de beweging van de aarde zelf. Dit probleem doet zich vooral voor als men gaat reizen in de oost – west richting. (aarde draait van west naar oost)
RoboCup Junior Cursus
28
7.7.6 Toepassingen: 7.7.6.1 Gyrokompas: Werking zie vorige pagina. 7.7.6.2 Kunstmatige horizon indicator: Via een kunstmatig horizon indicator krijgt de piloot informatie over de stand van het vliegtuig. Dit zowel in de lengterichting van het vliegtuig als in de breedte. De kunstmatige horizon indicator gebruikt een gyroscoop om de achtergrond altijd loodrecht op het aardoppervlak te laten staan. De werking is ongeveer gelijk aan dat van een gyrokompas, alleen gebruikt men hier een andere as. De gegevens van een kunstmatige horizon indicator worden niet alleen door de piloot gebruikt, ook de automatische piloot van een vliegtuig gaat deze gegevens gebruiken. Figuur 33
7.7.6.3 Gyrostabilisatitie: Een gyrostabilisator is een gyroscoop maar dan wel een grote die helpt om een voorwerp recht te houden. Dit is dan meestal van toepassing op schepen. Zo een stabilisator heeft een zwaar vliegwiel dat om een verticale as draait. Dit vliegwiel, de motor en het frame zijn in een ringsysteem bevestigd zodat ze zich kunnen bewegen ten opzichte van de romp van het schip. Hierdoor kan men een schip (of voorwerp) in evenwicht houden, waardoor een schip niet of nauwelijks kan omslagen. Figuur 34
Dit principe is vooral bedoelt voor kleine schepen, als men dit systeem zou toepassen op grote en moderne mega-schepen, zou dit betekenen dat het vliegwiel enkele honderden tonnen zou wegen om voldoende gewicht te hebben om de schip te kunnen stabiliseren. Bij deze grote schepen sturen een aantal kleine gyroscopen de vinnen die uit de romp van het schip kunnen gestoken worden. De gyroscopen bepalen of dat de vinnen moet zakken of stijgen waardoor de slingering van het schip vermindert wordt. Men gebruikt ook een gyrostabilisator in fototoestellen en camera’s (als deze in uitgerust met een beeldstabilisator) om minder schokken in het beeld te hebben.
RoboCup Junior Cursus
29
7.7.6.4 De Segway Human Transpoter: Dit is een klein scootertje dat rijdt op 2 wielen. Om dit scootertje te besturen verplaatst de bestuurder zijn gewicht in de gewenste richting. Dit scootertje blijft zich in balans houden door het belangrijkste onderdeel : de balance sensor assembly. Dit is een klein doosje waarin vijf elektronische gyroscopen zitten. Er zijn eigenlijk maar drie gyroscopen nodig om bewegingen in alle richtingen te meten, de andere 2 dienen als een extra controle. Door met sensors de stand van de gyroscopen en het frame te vergelijken kan de stand van de Segway ten opzichte van de grond worden bepaald en de snelheid waarmee dit gebeurd. Hiervoor wordt wel een zeer krachtige computer gebruikt (ongeveer het equivalent van 3 gewone desktopcomputers).
Figuur 35
Elk wiel heeft een motor die over zo’n 2 pk beschikt waardoor deze snel genoeg kan reageren om de scooter rechtop te houden.
RoboCup Junior Cursus
30
7.8
Codatex RFID (Radio Frequency IDentification) sensor
7.8.1
Wat is dit Codatex RFID sensor? Het bestaat uit een chip die miniatuurtransponders bevat. Een transponder is een elektronisch apparaatje dat een boodschap uitzendt als antwoord op een bepaalde ontvangen boodschap. Zo’n RFID tags worden gebruikt in allerhande supermarkten en magazijnen, ieder artikel heeft namelijk zijn eigen transpondercode. Door vervolgens aan de kassa een leesstation te plaatsen hoeft de kassierster niet meer elk gekochte artikel afzonderlijk te scannen.
Figuur 36
7.8.2 Werking: Deze RFID sensor van LEGO Mindstorm werkt met een 125 kHz transponder en kan tot 5 byte transponder nummers inlezen in de NXT blok. Het heeft drie verschillende lees modes: single read, continuous read en stop. De maximum leesafstand is afhankelijk van de grootte van de transponder. Wanneer je deze sensor zou kopen zitten er in het pakket één RFID sensor, vijf keyfob transponders, vijf “clear disk” transponders en twee kaart transponders. 7.8.3 Software: Op deze nevenstaande figuur kan u zien hoe de sensor eruit ziet en hoe men deze instelt.
Figuur 37 Instellingen
RoboCup Junior Cursus
31
7.8.4
Een eenvoudig programma ter illustratie hoe deze sensor juist werkt
Figuur 38 Voorbeeldprogramma
Hij begint met een berichtje te laten verschijnen op het display van de NXT, vervolgens gebruik de RFID sensor en connecteer deze met de data draden. Nadien geeft de sensor zijn waarde door naar de data draden met een vergelijk blok wat op zich dan de toestand waarin de robot zich bevindt zal constateren, hier ‘stop’ of ‘go’. Dan zijn de data draden verbonden met een schakelaar die onze beweging bevat. Hierbij is de beweging zeer simpel gehouden, gewoon voorwaarts rijden, iets zeggen zoals bijvoorbeeld “Bravo” en tot slot een scherpe bocht maken naar links. Hoe werkt het: start het programma, laat de RFID transponder voor de RFID sensor passeren. Wanneer de robot dit leest doet hij zijn klein loopje en stopt vervolgens, wachtend op verdere instructies. We zien dus dat deze nieuwe sensor tal van mogelijkheden biedt. Onze robot kunnen we verschillen taken laten uitvoeren door middel van meerdere transponders, ‘go here, do this’, objecten identificeren enz.
RoboCup Junior Cursus
32
7.9
De NXT sensor adaptor
7.9.1
Wat is de NXTsensor adaptor Deze sensor adaptor maakt het mogelijk om meer dan 30 Vernier (merknaam) sensors te kunnen inschakelen. Dit creëert een enorme hoeveelheid nieuwe mogelijkheden met de NXT robot. Figuur 39
Voor deze adaptor effectief te kunnen gebruiken moet je wel nog software downloaden. Deze software is voor ofwel het LEGO mindstormssoftwarepakket , labVIEW of ROBOLAB en is te vinden op de website van Vernier namelijk: http://www.vernier.com/nxt/downloads
7.9.2 De sensors die compatible zijn met de NXT Sensor Adapter: 25-g Accelerometer Barometer Charge Sensor Colorimeter Conductivity Probe Current Probe Differential Voltage Probe Dissolved Oxygen Sensor Dual-Range Force Sensor Electrode Amplifier Extra Long Temperature Probe Flow Rate Sensor Force Plate Gas Pressure Sensor Hand Dynamometer Instrumentation Amplifier Light Sensor Low-g Accelerometer Magnetic Field Sensor O2 Gas Sensor ORP Sensor pH Sensor Relative Humidity Sensor Salinity Sensor Soil Moisture Sensor Sound Level Meter Stainless Steel Temperature Probe Surface Temperature Sensor Thermocouple Turbidity Sensor UVA Sensor UVB Sensor
RoboCup Junior Cursus
33
7.9.3 Software: Hieronder ziet u de programmablok van deze sensor adaptor in de lego mindstorm software:
Figuur 40 Instelling van het blokje
RoboCup Junior Cursus
34
8. Gebruik van de weergave-scherm 8.1
Hoe toon je informatie op het nxt beeldscherm?
Het toestel van de NXT bevat een display met een grootte van 100x64 (6400 pixels) om de nodige informatie weer te geven. Wanneer de NXT actief is wordt een icoontje weergegeven als de USB kabel is aangesloten of als er een verbinding is d.m.v. bluetooth, zo is er ook een icoontje voor de status van de batterij. Tijd terwijl kan je ook zien of het programma loopt of niet. Onder het scherm staan er ook knoppen waardoor je het NXT menu kan doorscrollen.
Figuur 41 Het NXT systeem
8.2
Het beeldscherm menu
Het menu bevatten volgende indelingen: 1. My Files Eigen programma’s die gemaakt zijn via het NXT software pakket, deze worden hier opgeslagen. 2. NXT Program Hier kan men zien op welke poort de motoren/sensoren dienen te worden aangesloten. 3. NXT Datalog In deze verdeling kan met de instelling van de sensoren aanpassen. Zoals de weergave van de temperatuur in F of in Celsius en dergelijke zaken. 4. View Hier wordt weergegeven welke sensoren/motoren er zijn aangesloten op welke poorten. Hier kan men testen of de sensoren zijn aangesloten. 5. Bluetooth Hier is het mogelijk om een verbinding via Bluetooth naar een pc tot stand te brengen om zo gegevens over te zetten. 6. Setting In dit menu kan je de geluiden van de NXT aanpassen, wanneer de NXT in slaapstand valt, versie weergeven, mogelijkheden om bestanden te verwijderen,… . 7. Try Me Hiermee kan je de nodige sensoren testen. Deze is onderverdeelt in het volgende: • Try Touch het testen van de druk sensor • Try Sound het testen van de geluid sensor • Try Ultrasonic het testen van de ultrasone sensor • Try Motor het testen van de motor • Try Light het testen van de licht sensor RoboCup Junior Cursus
35
9. Het brein achter de NXT 9.1
Wat zit er nu juist in?
Dit ogenschijnlijk kleine dingetje bevat meer dingen dan je zou vermoeden. De volledige hardware specificaties zijn de volgende: • Main processor: Atmel® 32-bit ARM® processor, AT91SAM7S256
•
•
o
256 KB FLASH
o
64 KB RAM
o
48 MHz
Co-processor: Atmel® 8-bit AVR processor, ATmega48 o
4 KB FLASH
o
512 Byte RAM
o
8 MHz
Bluetooth wireless communication CSR BlueCoreTM 4 v2.0 +EDR System o
Supporting the Serial Port Profile (SPP)
o
Internal 47 KByte RAM
o
External 8 MBit FLASH
o
26 MHz
•
USB 2.0 communication Full speed port (12 Mbit/s)
•
4 input ports 6-wire interface supporting both digital and analog interface o
1 high speed port, IEC 61158 Type 4/EN 50170 compliant
•
3 output ports 6-wire interface supporting input from encoders
•
Display 100 x 64 pixel LCD black & white graphical display o
•
View area: 26 X 40.6 mm
Loudspeaker Sound output channel with 8-bit resolution o
Supporting a sample rate of 2-16 KHz
•
4 button user-interface Rubber buttons
•
Power source 6 AA batteries
•
o
Alkaline batteries are recommended
o
Rechargeable Lithium-Ion battery 1400 mAH is available
Connector 6-wire industry-standard connector, RJ12 Right side adjustment
RoboCup Junior Cursus
36
9.2
De binnenkant van de NXT :
De NXT heeft eigenlijk 3 microcontrollers die alles naar wens doen verlopen. 1. Het kleine circuit board aan de bovenkant van de afbeelding is Bluetooth met periodieke module. De uiterst linkse, rechthoekige chip is het geheugen met Bluetooth controlesoftware van Cambridge Silicon Radio. De vierkante chip is de CSR Bluecore 4 microcontroller en radiohardware BC417143BQN, die Bluetooth v2.0 en EDR ondersteunend. Het gouden zigzagspoor helemaal in de rechtse hoek vanboven is vermoedelijk de antenne. 2. Het belangrijkste controlemechanisme met 32 bits ARM dat uw programma's in werking stelt is een Atmel AT91SAM7S256. Dit omvat het Flash memory/file system, RAM en de interface van het USB apparaat. 3. Een Atmel met 8 bits ATMEGA48. Ik veronderstel dat dit de modulatie van de impulsbreedte (PWM) van de motoren, beheert en die de feedback van de NXT sensoren van de motoromwenteling gebruikt om de kracht aan elke motor juist af te stemmen.
Figuur 43 Binnenin de NXT systeem
Figuur 42
RoboCup Junior Cursus
37
10.
De communicatie
10.1 Communicatie PC of ander mobiel apparaat naar de NXT systeem Wanneer je een programma volledig geschreven hebt voor de NXT robot zijn er twee mogelijkheden om de data door te geven naar de NXT. Namelijk via USB of via Bluetooth. 10.1.1 Met behulp van de USB-kabel: Deze kabel heeft twee uiteinden die van elkaar verschillen, een platte stekker en een wat meer vierkante stekker. De platte schuiven we in de USB ingang van de computer terwijl we het vierkante uiteinde in de rechterbovenkant van de NXT brick stoppen (zie onderstaande figuur).
Figuur 44 USB kabels
Figuur 45
Dit is een relatief snelle manier om de data overdracht te realiseren hoewel het wel zo is dat de lengte van deze kabel ietwat beperkt is, wat maakt dat het best wel mogelijk is dat het robotje de kabel na een tijd in een knoop rijdt. De uitvinders van de NXT hebben daar echter een oplossing voor bedacht namelijk zoals eerder vernoemt de mogelijkheid om met Bluetooth de datatransfer te realiseren.
10.1.2 Met behulp van Bluetooth: Deze methode maakt het heel wat makkelijker om de overdracht tussen pc en NXT uit te voeren. Je moet gewoon over een dergelijk stickje beschikken zoals nevenstaande foto, steekt dit in uw pc en dan kan je door middel van radiogolven communiceren tussen Figuur 46
beide systemen. Sommige pc’s hebben echter al een Figuur 47 Bluetooth ingebouwde Bluetooth verbinding dus hebben ze zelfs dit extra stickje niet meer nodig. Wat ook tot de mogelijkheden kan behoren is communicatie met behulp van een GSM toestel die van Bluetooth voorzien is. Op de website www.mindstorms.com/bluetooth/ kan je nazien of jouw GSM geschikt is om als communicatiemiddel te dienen. Is dit het geval kan je op je GSM een programmatje installeren wat communiceren met de NXT mogelijk maakt, zo kan je bijvoorbeeld de motoren besturen of de NXT kan je GSM opdracht geven om een liedje af te spelen enz.
RoboCup Junior Cursus
38
Figuur 48
Bluetooth laat toe om tot maar liefst vier NXT’s met elkander te laten communiceren, hierbij moeten we wel één NXT als master kiezen, de anderen zijn dan de slaves, dit laat toe om ofwel verschillende robots samen te laten werken ofwel om 1 superrobot te creëren.
10.2 Software: Zoals je in de figuur kan zien is de software zeer gebruiksvriendelijk, rechts onderaan in het programma staat een vierkant blokje dat “de controller” wordt genoemd. En tot functie heeft om jouw programma over te brengen naar de NXT, te kijken wat er nu al juist op de NXT staat, beschikbare vrije ruimte op de NXT,… .
Figuur 49 Communicatie informatie bij de software
RoboCup Junior Cursus
39
10.3 Communicatie draden van het NXT systeem naar een element 10.3.1 Algemeen Om verbinding te maken met de NXT en zijn motoren en sensoren moet je gebruik maken van een data draad. Dit zijn 6-aderige kabels. De NXT beschikt daarvoor over 3 poorten (A,B,C) voor de servomotoren. De pinnen 1 en 2 zorgen voor de PWM signalen om de H Brug van de servomotor te kunnen aansturen. De draden kunnen elk een continue stroom van 700mA leveren en een piekstroom van 1A. Pin 3 is de aarding (GND). Pin 4 is de 4.3V voeding. Pinnen 5 en 6 hebben als voornaamste functie de pulsen van de relatieve data door te geven en ze hebben beide een Schmitt trigger. Het faseverschil tussen beide signalen geeft de draairichting weer. (aan de motor en sensor zijde)
Figuur 50
1) 2) 3) 4) 5) 6)
wit PWM signaal motor zwart PWM signaal motor rood aarding groen voeding 4,3V geel data signaal 1 blauw data signaal 2
Voor de sensoren beschikt de NXT over 4 poorten (1,2,3,4) die eveneens 6 pinnen bevatten. Pin 1 is de analoge input (0-5V) en is verbonden met een 10bit A/D- convertor. Pinnen 2 en 3 zijn de aarding. Pin 4 is de voeding voor de sensor en levert 4,3V. Pinnen 5 en 6 zijn de digitale poorten voor het I2C seriële bussysteem met een communicatiesnelheid van 9600bit/s. 10.3.2 Draad aan de NXT Sensor Interface Pinout Pin Naam
Functie
Kleur
Pin Nummering
1
ANA
Analog interface, +9V Supply
wit
2
GND
Ground
zwart
3
GND
Ground
rood
4
IPOWERA +4.3V Supply
5
DIGIAI0
I2C Clock (SCL), RS-485 A
geel
6
DIGIAI1
I2C Data (SDA), RS-485 B
blauw
groen
RoboCup Junior Cursus
40
10.3.3 Verklaring De I²C-bus is een synchrone, seriële bus, ontwikkeld voor datacommunicatie tussen microprocessoren en andere IC's, meestal op één enkele printplaat. Een schmitt-trigger wordt gebruik in de elektronica een comparatorschakeling die twee spanningsdrempels heeft: wanneer de ingangsspanning het bovenste niveau overschrijdt, krijgt de uitgang het logische niveau "hoog", maar pas wanneer de ingangsspanning zakt onder het onderste niveau, wordt de uitgang weer "laag". Deze hysterese vindt vele toepassing mogelijkheden.
RoboCup Junior Cursus
41
11.
Programmeer Software
11.1 Inleiding Er is reeds de mogelijkheid te programmeren in andere talen. De firmware is opensource en te downloaden via www.lego.mindstorms.com. Volgende omgevingen zijn beschikbaar om de NXT brick te programmeren: 1) 2) 3) 4) 5) 6)
BricxCC Robot C Nxt-g Labview MS Robotics Studio LeJOS
Figuur 51 Software
11.2 Soorten programeertalen 11.2.1 Microsoft Robotics Studio Microsoft heeft sinds kort een speciaal pakket ontwikkeld, genaamd Microsoft Robotics Studio (MSRS), om robots te programmeren en zelfs te simuleren. Je kan dus eerst volledig de werking van je robot simuleren in een virtuele omgeving alvorens de robot in het echt te bouwen. Leuk hieraan is dat het pakket naast heel wat andere robots ook de LEGO NXT volledig ondersteund. Bovendien is de software gratis en is het te downloaden van de website van MSRS. Met deze software hoopt Microsoft een standaard neer te zetten zoals het deed voor de computerindustrie enkele decennia geleden. Nu wordt er immers voor elke robot aparte software geschreven met weinig of geen standaarden. Met NXT-G kan je enkel de LEGO NXT robot aansturen en bijvoorbeeld niet de Create van iRobot (de hobbyrobot gebaseerd op hun stofzuigrobot). Dit heeft tot gevolg dat heel wat software nodeloos herschreven moet worden bij het ontwikkelen van een volgend project en dus een verlies van tijd en geld. Met MSRS daarentegen programmeer je met hetzelfde softwarepakket verschillende robotplatformen. Bovendien wordt MSRS geleverd met Microsoft Visual Programming Language (MVPL) dat de mogelijkheid biedt om de robot te programmeren met een soort programmeerblokken zoals in NXT-G, maar dan met veel meer mogelijkheden.
RoboCup Junior Cursus
42
11.2.2 BricxCC BricxCC is een programmeeromgeving met Next Byte Codes (NBC) en Not eXactly C (NXC). NBC is een hogere assembleertaal en NXC is een C-achtige-compiler voor de NXT ontwikkeld bovenop NBC. Bovendien is dit eveneens gratis. Bij het gebruik van BricxCC is het mogelijk dat het opbouwen en afbreken van de Bluetooth verbinding tijdens het compilen 30-40 seconden kan duren. Dit is vanwege historische redenen en is met een aan kleine stappen te reduceren tot 4-5 seconden.
11.2.3 RobotC RobotC is een C-gebaseerde programmeeromgeving van de Carnegie Mellon University Robotics Academy. Twee modes zijn beschikbaar: expert en basic. Bij het laatste zijn de geavanceerde functionaliteiten onzichtbaar gemaakt. Hier moet er code geschreven worden, maar via een menu sleept men wel stukken voorbeeldcode in het programma. Voor deze software moet je echter wel betalen, je krijgt dan wel een betere documentatie en ondersteuning. 11.2.4 LeJOS LeJOS gaat de firmware van de NXT vervangen en bevat een kleine Java Virtual Machine zodanig dat je de robot kan programmeren in Java. Eveneens gratis.
RoboCup Junior Cursus
43
RoboCup Junior Cursus
44
12.
Bouw Software
LEGO levert de bouwplannen van de TRIBOT, ROBOARM T-56, SPIKE en ALPHA REX. Op de Mindstorms website vind je nog enkele andere voorbeelden. Wil je liever je eigen robot ontwerpen,dan volg je best onderstaande tips. Je kan trouwens met de software LEGO Digital Designer je robot eerst in de virtuele wereld bouwen. De software is gratis te downloaden van http://ldd.LEGO.com LEGO heeft trouwens een speciale website (http://mindstorms.LEGO.com/NXTLOG) ontwikkeld met een bibliotheek van projecten, vaak met de software dat ze ervoor geschreven hebben en de bouwplannen in LEGO Digital Designer. Heb je een bepaald probleem dan kan je hier enkele ideeën opdoen. Dit forum is ook geschikt om zelf je creatie wereldkundig maken.
Figuur 52 LEGO Digital Designer software
RoboCup Junior Cursus
45
13.
Werking software en leren programmeren
13.1 Inleiding hoe programmeer je, u eigen NXT robot! Nu dat we alle basis elementen kennen die we voor de robot nodig hebben, kunnen we leren programmeren. We hebben in ons vorig hoofdstuk gezien dat er tal van andere programma’s zijn om onze robot te programmeren, wij zullen ons beperken tot de LEGO® MINDSTORMS® Educatieve NXT Software versie 1.0 . Dit computerprogramma is opgebouwd uit blokjes in deze grafische programmeertaal. Het software pakket is gebaseerd op Labview van National Instruments dat wordt gebruikt door heel wat onderzoekers in universiteiten en onderzoekscentra over heel de wereld.
13.2 Hoe Installeer ik de LEGO® MINDSTORMS® software? 1.
Plaats de cd in je computer en je krijgt dit scherm te zien: Klik op Nederlands
Figuur 53 Installatie
2. 3.
Volg verder de instructie die op het scherm staat Wanneer de installatie klaar is, ziet je op je bureaublad het LEGO® MINDSTORMS® icoon.
Figuur 54 LEGO® Mindstorm® icoon
4.
Klik op de snelkoppeling, en je ziet het programma laden.
Figuur 55 LEGO® Mindstorm® loading
RoboCup Junior Cursus
46
5.
Wanneer het programma klaar is met laden, krijg je het hoofdmenu.
Figuur 56 LEGO® Mindstorm® hoofdmenu
Nu zijn we klaar met onze software. Voordat we onze robot gaan programmeren zullen we kort bespreken wat je in de verschillende panelen kunt doen.
RoboCup Junior Cursus
47
13.3 Kennis met het hoofdscherm Het hoofdscherm is onderverdeel in verschillenden velden.
3
2 1
4
7
9
8
5
6
Figuur 57 LEGO® Mindstorm® Onderverdeling sofware
1. Robo Center Hier vind je de bouwgids om de verschillende standaard robots te bouwen. In dit programmeergids worden voorbeeldprogramma’s stap voor stap uitgelegd. 2. Mijn Portaal Dit onderdeel is pas actief wanneer je internet hebt. Nieuwtjes over MINDSTORMS NXT , het MINDSTORMS Community Forum en nieuwe inspiratie voor het bouwen van geweldige robots en veel meer op www.mindstorms.com 3. De Werkbalk Hier bevindt zich het menu om je programma af te sluiten of om je programma af te drukken tevens bevat het menu ook icoontjes van een aantal vaak gebruikte functies. Zo kan je programma’s snel iets openen en sluiten (snelkoppelingen), kopiëren, knippen en plakken enzovoort. 4. Het Werkgebied De plaats waar je de instructieblokken gaat plaatsen. 5. Hulpvenster Hier bevindt zich extra informatie over de instructieblokken,…
RoboCup Junior Cursus
48
6. Werkgebied kaart Dit geeft een totaal overzicht van het programma weer. Wanneer je er met de muisknop ingedrukt over gaat kan je u werkgebied verplaatsen. Dit kan ook door gebruik te maken van ‘het handje’ in de werkbalk (icoon) 7. De Programmeeromgeving Hier bevinden zich 3 paletten standaard, compleet en persoonlijk. Standaard: hier bevinden zich de meest gebruikte blokken die nodig zijn om je robot te programmeren. Compleet: hier bevinden alle beschikbare blokken Persoonlijk: creëer je eigen blokken De programmeerblokken sleep je van de programmeeromgeving naar het werkgebied. 8. Het Configuratiescherm Bij het aanklikken van een programmeerblok dat zich in het werkgebied bevindt, kan men dan hier de instellingen van dat blokje wijzigen. 9. De Controller Hier bevinden zich 5 knoppen; ‘het NXT venster’ om je NXT systeem te wijzigen, ‘download’ is het verzenden van je programma naar de NXT (wordt in het geheugen geplaatst) ‘start’ is je programma ineens naar de robot sturen en deze starten. ‘download en start selectie’ is het verzenden van je programma naar de NXT en vragen om het programma te starten (het is een tijdelijk bestand, dus wanneer het programma gedaan is kun je deze niet meer oproepen via het NXT geheugen) ‘stop’ is het programma dat wordt uitgevoerd door de vorige knop (= ‘download en start selectie’ of ‘start’) te stoppen .
RoboCup Junior Cursus
49
Nu zijn we volledig klaar om te beginnen, we zullen een nieuw programma starten. Typ een naam voor je eerste programma, bijvoorbeeld : “Mijn eerste programma” We veronderstellen wel dat je de robot reeds gebouwd hebt. (een standaard lego robot uit je boekje van de Lego NXT Mindstorms doos)
Figuur 58 Hoofdscherm
In het werkgebied zie je het startpunt en de plaats waar je het eerste programmeerblok moet neerzetten. De sequentielijn vertrekt vanaf dit startpunt. Deze regelt het logisch verloop van je programma en de blokken die hierop aangesloten zijn, worden uitgevoerd. Je kunt ook parallelle sequentielijnen maken, waardoor je programma verschillende taken tegelijkertijd uitvoert. Zo kan de hoofdsequentielijn de beweging van de robot bepalen en een tweede sequentielijn de grijper van de robot bedienen. Je doet dat door een programmeerblok boven de hoofdsequentielijn te plaatsen. Daarna ga je op de startknop staan en met de linkermuisknop ingedrukt sleep je een tweede sequentielijn naar het nieuwe programmeerblok. Men kan ook een nieuwe sequentielijn toevoegen door de “SHIFT” toets ingedrukt te houden vanaf een punt van de hoofdsequentielijn en naar boven / beneden te bewegen met je muis.
Figuur 60 Startpunt
Figuur 59 Hoofdsequentielijn
RoboCup Junior Cursus
50
13.4 Commentaar toevoegen aan je programma Je hebt 2 mogelijkheden om commentaar te schrijven bij je programma; - als je op het icoontje klikt verschijnt in het configuratiescherm een scherm, hier kan je een korte samenvatting schrijven van wat je programma doet.
Figuur 61 Configuratiescherm Info
-
Men kan ook commentaar zetten rechtstreeks op het werkgebied.
Figuur 62 Programma commentaar
Opmerking: We raden je aan om regelmatig wat commentaar te schrijven om zo het programma beter leesbaar / verstaanbaar te maken voor u zelf maar ook voor anderen.
RoboCup Junior Cursus
51
13.5 NXT blokken We zullen alle andere blokken even snel overlopen wat ze doen en waar je ze kan gebruiken. De basisblokken zijn in het begin van de cursus uitgelegd. # Symbool Naam Wat? 1. Opneem/afspeel blok Als je een handeling wilt opnemen, moet je een naam kiezen en de tijdsduur van de opname bepalen. Download daarna het blok. Laat je programma werken en voer de handeling uit die je wilt opnemen. Zet het blok op “afspelen” om de opgenomen handeling af te spelen. 2. Geluid blok Dit blok gebruik je om een geluidsbestand of één enkele toon af te spelen. Om een melodie van tonen te maken, moet je een aantal geluidsblokken op een rij zetten. 3.
Beeldscherm
Gebruik dit blok om een afbeelding te tonen, een tekst te schrijven of een vorm te tekenen op het NXT scherm.
4.
Motorblok
Met dit blok kun je de snelheid van een motor nauwkeurig regelen. Je kunt de snelheid laten “oplopen” tot een ingestelde snelheid of doen “aflopen” tot een welbepaalde stop. Als je “Wacht op voltooiing” niet activeert, kan je programma op het volgende blok overgaan zodra het motor blok een motor gestart heeft.
5.
Bluetooth
Dit blok maakt het mogelijk draadloos een bericht naar een andere NXT te sturen.
6.
Wachtblok
7.
Herhaling blok
Met dit blok kan je de robot zijn omgeving op een bepaalde conditie laten "afzoeken" voordat hij doorgaat. Gebruik de schuifknop of typ een waarde om het activeerpunt in te stellen, zodat het programma doorgaat als de sensorwaarden hierboven of -onder liggen. (door middel van verschillende sensoren!) Gebruik dit blok om codesequenties te herhalen. Stel de voorwaarde in die de herhaling beëindigt: verstreken tijd, aantal herhalingen, een logisch signaal of een sensor. Je kunt ook instellen dat de herhaling door moet blijven gaan.
8.
Omschakel blok
Gebruik dit blok om tussen twee codesequenties te kiezen. Als het omschakel blok bijvoorbeeld op samenwerking met een tastsensor geconfigureerd is, kan het één serie blokken laten werken als de tastsensor wordt ingedrukt en een andere als die tastsensor niet wordt ingedrukt.
RoboCup Junior Cursus
52
9.
Stop blok
Dit blok zal je programma en alle werkende motoren, lampen en geluiden stoppen. Gestopte motoren worden in de vrijloop gezet.
10.
Logisch blok
Dit blok voert een logische handeling uit met de inputs en verzendt een goed/fout antwoord via een dataverbinding. De inputs (die “goed” of “fout” moeten zijn), kunnen met de radioknoppen of dynamisch via de dataverbindingen worden ingesteld
11.
Vergelijkingsblok
Dit blok kan bepalen of een getal groter dan (>), kleiner dan (<), of gelijk (=) is aan een ander getal. De input getallen zijn in te toetsen of ze worden dynamisch door dataverbindingen ingevoerd.
12.
Rekenblok
Dit blok voert eenvoudige rekensommetjes uit zoals optellen, aftrekken, vermenigvuldigen en delen. De input getallen zijn in te toetsen of ze worden dynamisch door dataverbindingen ingevoerd.
13.
Reeks blok
Dit blok kan vaststellen of een getal binnen of buiten een getallenreeks ligt. De input getallen zijn in te toetsen of ze worden dynamisch door dataverbindingen ingevoerd. Het logische output signaal (goed/fout) zal via een dataverbinding gezonden worden.
14.
Willekeurig blok
Dit blok genereert een willekeurig getal. Je kunt willekeurige getallen gebruiken om je robot onvoorspelbare handelingen te laten uitvoeren. Voorbeeld: als je een dataverbinding gebruikt om een willekeurig blok aan het tijdsduur-contactpunt op de datanaaf van een verplaats blok aan te sluiten, beweegt je robot zich misschien de ene keer 4 seconden lang vooruit, maar de volgende keer dat hij het programma doorwerkt gaat hij misschien gedurende 8 seconden vooruit.
RoboCup Junior Cursus
53
15.
Variabele blok
Je kunt je een variabele voorstellen als een plek waar je een waarde in het ingebouwde geheugen van de NXT op kunt slaan. Andere programmeerblokken kunnen dan de actuele waarde van de variabele aflezen (en eventueel wijzigen) door een verbinding met het blok te maken (d.m.v. dataverbindingen).
16.
Timer blok
Wanneer je het programma start, zullen de drie ingebouwde timers in de NXT automatisch gaan tellen. Met dit blok kun je kiezen tussen het aflezen van de huidige waarde van de timer of de timer vanaf nul opnieuw te laten tellen.
17.
Rotatiesensor blok
Dit blok berekent het aantal graden draaiing (een volle omwenteling is 360 graden) of volle omwentelingen die je motor maakt. Het blok kan het huidige aantal graden of omwentelingen en een logisch signaal (goed/fout) via dataverbindingen versturen, gebaseerd op het feit of het aantal graden of omwentelingen boven of onder een activeerpunt belandt
18.
Bluetooth
Dit blok maakt het mogelijk draadloos een bericht te ontvangen van een andere NXT te sturen.
19.
Tekst blok
Dit blok kan groepen tekens, "tekst" genoemd, verzamelen. De voorbeelden hierna zijn allemaal als tekst te beschouwen: abcd23, Hond, John! Tekst kan dus ook getallen bevatten en zelfs speciale schrifttekens zoals symbolen en vraag- of uitroeptekens. Tekst is van belang voor je programma, omdat het in het scherm van je NXT getoond kan worden.
20.
Getal in tekst blok
Dit blok neemt een getal (bv. een waarde van een sensor) en zet het in een tekst om die op het NXT scherm afgebeeld kan worden. Het input getal is in te toetsen of wordt dynamisch door een dataverbinding ingevoerd.
21.
Waak blok
Dit blok voorkomt dat de NXT op slaapfunctie overgaat. Gebruik dit blok als je programma langer moet wachten dan NXT’s ingestelde “slaap tijd” (die in de NXT on-board menu's geconfigureerd wordt).
RoboCup Junior Cursus
54
22.
Open bestand blok
Met dit blok kun je data van je robot in bestanden op je NXT opslaan. Nadat je data in een bestand gevoerd hebt, moet je een ander open bestand blok gebruiken om het bestand te sluiten voordat je het bestand kunt lezen of wissen met een derde open bestand blok.
23.
Kalibratie blok
Gebruik dit blok om de minimum- (0%) en maximumwaarden (100%) te kalibreren die de geluids- of lichtsensor ontdekt.
24.
Reset motor blok
De interactieve servomotoren hebben een automatisch foutcorrectie mechanisme, waardoor ze je robot meer precies kunnen laten bewegen. Maar het kan gebeuren dat je deze functie uit wilt schakelen -- dit doe je met het reset Motor blok.
25.
Mijn blok
26.
Web download
Met de Mijn blok bouwer kun je een aantal blokken in het werkgebied selecteren en ze in je eigen Mijn blok groeperen met een aangepaste icoon. Voorbeeld: Je maakt een Mijn Blok en noemt hem “Robot Beweging”. Dit blok zou een verplaats blok (voor het regelen van de robotwielen) en een geluid blok (dat een geluidsbestand afspeelt als de robot een bepaalde afstand afgelegd heeft) kunnen bevatten. Dit zijn blokken die je via de LEGO Mindstorm website van het net kan downloaden.
RoboCup Junior Cursus
55
13.6 Opdrachten Om met de opdrachten te beginnen open je het programma ‘LEGO MINDSTORMS NXT’.
Opdracht 1 Ga naar “Start een Nieuwe Programma” en typ “VB1” klik vervolgens op “Go>>>” We zullen eerst beginnen met de robot vooruit te laten lopen. Na 5 seconden stop deze. Je voert de knop bewegen in je werkveld.
Figuur 63
Je krijgt het volgende nu. Onder aan ziet je het blok ‘bewegen’ de settings ervan:
Figuur 64
Nu gaan we een nieuw programma schrijven waarbij de robot iets aanraak, 90° draait, vooruitgaat en vervolgens na 5 seconden stop.
RoboCup Junior Cursus
56
We voegen de knop bewegen toe en zetten de tijdsduur op “onbeperkt” Nu gaan we de taster van de robot instellen:
Figuur 65
Figuur 66
Figuur 67
Nu gaan we de robot iets naar achter laten bewegen en 90° graden laten draaien: Bij het eerste blokje na de sensor gaat de robot achteruit, het blokje daarna zal motor C op 25% van zijn vermogen draaien. Bij het laatste blokje gaat de robot 5 sec vooruit. We kunnen heel de procedure van je robot stapsgewijs zien dan plaats men een “wacht blok” (bij tijd)
RoboCup Junior Cursus
57
Nu gaan we een gevorderd programma schrijven waarbij de robot het object oppakt vervolgens 90 graden gaat draaien en een geluid laat horen wanneer hij de bal vast heeft genomen en ook wanneer hij klaar is met zijn opdracht.
Figuur 68
Sleep nu het verplaats blok van de programmeeromgeving naar de sequentielijn van het werkgebied. In het configuratiescherm stel je in hoe de eerste beweging moet verlopen (4 seconden vooruit rijden aan 100% vermogen) We voegen dan een geluid toe. Je hebt de keuze uit een geluidbestand of een toon. Gebruik hier maar een toon, dat vraagt niet veel geheugen in het NXT systeem.
Figuur 69
Voila, je ben klaar met opdracht 1
RoboCup Junior Cursus
58
Opdracht 2 Een lijn volgen met 1 lichtsensor We gaan nu een programma maken, waarbij de robot een lijn kan volgen. En dit doormiddel van zelf de gemeten lichtwaarde in te vullen (zwarte lijn). Met dit programma is het ook mogelijk om een deel van het reddingsparcour te kunnen afleggen. Aansluiting robot: Zorgt ervoor dat volgende zaken aangesloten zijn op de NXT systeem. + één lichtsensor op poort 1. + de rechtse motor op A en de linkse motor op C. Volgt de onderstaande stappen uit: Stap 1: Maak een nieuw werkveld aan. Via het menu Bestand -> Nieuw. Plaats nu eerst een herhalingsblok, deze zorgt ervoor dat de robot de lijn continue blijf volgen. Vergeet niet de combobox van controleer op ‘eeuwig’ te zetten. Figuur 70
Stap 2:
Vervolgens plaatst men het schakeloptie blok met invoering van een lichtsensor in het werkveld. En zetten we de genereer licht aan voor de sensor.
Figuur 71
Tevens onderaan geven we de waarde van de lichtsensor handmatig in. De waarde is bepaald door het view programma in de NXT systeem met genereer licht aan.
Figuur 72
Stap3:
Zet nu in de schakeloptie blok aan de bovenkant 2 motor blokken, waarbij de ene vooruit (motor A) en de andere achteruit (motor C). Onderaan doe je hetzelfde maar geeft men dan een verschild aandrijf actie. Dus in plaats van voorruit gaan zet je achteruit en voor achteruit nu voorruit.
Figuur 73
Dit is gedaan opdat de robot gemakkelijk zijn scherpe bochten kan nemen zonder daar bij de weg te verliezen of te blijven zoeken naar een andere lijn. Stel voor alle motoren een laag vermogen van 40 in. Anders zal de robot te snel de zwarte lijn volgen, maar dan is de kans groot dat die zijn weg weer verliest.
RoboCup Junior Cursus
59
Uitvoering: Indien je de bovenste stappen goed heb uitgevoerd zal het programma er als volgt uitzien:
Figuur 74
RoboCup Junior Cursus
60
Opdracht 3 Opdracht 3a: Kalibratie + lijn volgen met 1 lichtsensor Bij deze opdracht gaan we een kalibratie programma maken. Het kalibratie programma is bedoeld om de huidige licht omstandigheden op te slaan in het NXT systeem als een text bestand. En daarna zal het programma zelf de nodige berekeningen uitvoeren. In het programma gebruiken we variabelen of containers om de informatie op te slaan, die dan ook gebruikt kunnen worden in andere NXT programma’s. De variabele waarden van de kleur zwart, groen en geel worden verschillend opgeslagen. Hiermee bedoelen we dat de waarde zo wordt aangepast door er een kleine waarde bij op te tellen of af te trekken. Om zo voor elke kleur een variabele zones in te passen. Aansluiting robot: Zorg ervoor dat volgende zaken zijn aangesloten op het NXT systeem. + één lichtsensor op poort 1. + de rechtse motor op A staat en de linkse motor op C. Stap1: Maak een nieuw werkveld aan. Via het menu Bestand -> Nieuw. Voordat we de programma blokken gaan plaatsen stellen we eerst onze 3 kleuren (zwart, groen en geel ) in als een variabele. Dat doe je vanuit het menu via Bewerken -> Definieer Variabelen. Vervolgens krijgt u een nieuw venster te zien waar u de 3 variabele namen en datatype kan invullen. Maak voor onderstaande gegevens een variabele aan: ‘Zwart’, ‘Groen’ en ‘Geel’ als datatype ‘Getal’. Figuur 75
Stap2: Voer de onderstaande blokken toe in het werkveld en verbindt ze met elkaar.
Met dit blokje verwijderd men gegeven tekstbestanden van het NXT systeem. Figuur 76
Hier in dit blok toont men een tekst op het NXT systeem. U kan zelf kiezen wat er moet verschijnen. Wij schrijven het volgende in het blokje ‘Leegmaken tekstbestand’. Figuur 77
Deze blok zorgt ervoor dat de lichtsensor op poort 3 is aangesloten, met als optie genereer licht : aan. Figuur 78
RoboCup Junior Cursus
61
Stap3: Vervolgens plaatst u 3 maal deze rekenen blokken. Waarvan de oranje variabele blok vervangen wordt door een andere kleur naam. Hier is dit zwart, groen en geel.
Figuur 79
Op het bovenstaande programma gedeelte is het de bedoeling om op de enter toets van het NXT systeem te drukken. Om zo zijn huidige lichtwaarde in te lezen en te schrijven in het NXT systeem (als tekstbestand) voor de gelezen kleur. Daarna converteert het 2de rode blok van getal naar tekst, het laat dit tonen op het scherm en speelt een geluid af. Dit blokje zorgt ervoor dat je een waarde kan optellen (of andere wiskunde bewerkingen). Deze waarde wordt opgeteld om zo een groot variabel gebied te maken. Figuur 80
Figuur 81
In het rekenblokje bij zwart en groen tel je 3 bij op en bij geel trek je er 3 van af. Stap4: Op het einde voegt men dit toe, deze duiden aan dat je op het einddeel bent van je programma. Waarbij alles gelezen, verwerkt en opgeslagen is in het NXT geheugen. Vervolgens sluit het programma zich af.
Figuur 82
RoboCup Junior Cursus
62
Uitvoering: Indien je de bovenste stappen goed heb uitgevoerd zal het kalibratie programma er als volgt uitzien:
Figuur 83
Uitvoering kalibratie programma op het veld: Je zet de robot op het Rescue veld met de lichtsensor boven de zwarte lijn, druk nu op de enter toets van het NXT systeem. Hierna hoor je een pieptoon om aan te duiden dat deze waarde genoteerd is. Vervolgens doe je dit ook voor groen en voor geel. Druk je dan op de enter toets van de NXT systeem zal je 2 pieptonen horen. Dit om te zeggen dat de berekeningen van het kalibratie programma klaar zijn. Nu kunnen we de opgeslagen waarden gebruiken voor ons lijnvolger programma, zonder daarvoor iets te moeten aanpassen, dit omdat deze in een globale variabele is opgenomen.
RoboCup Junior Cursus
63
Opdracht 3b: lijnvolger met gegevens van het kalibratie programma Het programma is ongeveer hetzelfde als de opdracht 2 lijnvolger zonder kalibratie. Maar nu zijn er bovenaan 2 lijnen toegevoegd om ervoor te zorgen dat men de waarde van de zwarte lijn (percentage) leest. Dit tevens ook voor de groen kleur. Aansluiting robot: Zorg ervoor dat volgende zaken zijn aangesloten op het NXT systeem. + één lichtsensor op poort 1. + de rechtse motor op A staat en de linkse motor op C. Maak onderstaand schema aan in je LEGO MINDSTORMS NXT programma.
Figuur 84
RoboCup Junior Cursus
64
Opmerking bij kalibratie: Het is handig om meerdere metingen uit te voeren, omdat op verschillende plaatsen een andere lichtsterkte heerst. Het is aan te raden om zeker het kalibratie programma te starten indien je de robot vanuit een andere positie laat vertrekken. Want indien je dit eenmalig doet heb je het risico een onbetrouwbare meting te hebben met als gevolg dat het lijnvolger programma deels of hellemaal niet correct werkt.
RoboCup Junior Cursus
65
Opdracht 4: Programma Object zoeken Hier is het de bedoeling om de robot een voorwerp te laten zoeken en dit dan vervolgens weg te duwen. De robot moet wel binnen de gele zone blijven. Aansluiting robot: Zorg ervoor dat volgende zaken aangesloten zijn op het NXT systeem. + één lichtsensor op poort 1. + één ultrasone sensor op poort 4. + de rechtse motor op A staat en de linkse motor op C. Stap1: Maak een nieuw programma veld aan. Via het menu Bestand -> Nieuw. Stap2:
U plaatst een herhalingsblok in het werkveld en stelt dit in maar 1 keer uit te voeren. Teller op één zetten. Indien er meerdere voorwerpen zijn verhoogt u deze waarde. U plaatst 2 motor blokken: een blok A motor vooruit, motor C achteruit. Dit wordt gedaan om zich op de huidige positie te kunnen verdraaien. Om zo rond te kunnen kijken op zoek naar het mogelijke voorwerp om weg te duwen. Plaats nu de ultrasone sensor in deze categorie. Deze zorgt voor het kunnen zien van de robot. Stel deze dan in op een afstand van < 50cm.
Zet een geluid als waarschuwing dat deze actie voldaan is.
Plaats een Motor blok AC vooruit. Om het voorwerp weg te duwen.
Daarnaast zet je een lichtsensor met de percentage waarde van groen.
Motor AC achteruit rijden indien het de groen zone ziet.
Plaats voor het laatst een geluid blok om te horen of de taak uitgevoerd is.
RoboCup Junior Cursus
66
Uitvoering: Indien je bovenstaande stappen ook goed hebt uitgevoerd zal het programma er als volgt uitzien:
Figuur 85
Stap3: Voila u programma is klaar om te uploaden naar het NXT systeem.
RoboCup Junior Cursus
67
14.
Rescue parcour
14.1 Inleiding In dit hoofdstuk zal heel het parcour van de Robocup wedstrijd stap per stap uitgelegd worden. We zien dat het parcour is onderverdeeld in 4 delen, dus zullen we deel per deel uitleggen wat de robot op ons parcour doet.
14.2 Robocup Plan
Figuur 86
RoboCup Junior Cursus
68
14.3 Vereiste robot Onze robot bevat: • 2 motoren • 2 lichtsensor • 1 ultrasoonsensor
Figuur 87 Artesis robot A
14.4 Bouw robot Wij zullen onze gebouwde robot gebruiken voor dit parcour, maar uiterraad kan je je eigen robot maken. (zie figuur 85)
RoboCup Junior Cursus
69
14.5 Programma
14.5.1 Rescue kalibratie Hier is de kalibratie hetzelfde als bij opdracht 3a maar zal elke sensor de volgende gegevens ophalen: • Kleur zwart aan de rechtse sensor • Kleur zwart aan de linkse sensor • Kleur geel aan de rechtse sensor • Kleur geel aan de linkse sensor Uitvoering: Zo zal het programma voor de 4 variabele er als volgt uitzien:
Figuur 88
RoboCup Junior Cursus
70
14.5.2 Rescue parcour Taak: 1. Het moet de zwarte lijn volgen 2. Wanneer hij een gele lijn voorbij rijdt, rijdt hij achteruit en neem hij de gele route 3. Indien men terug een zwarte lijn ziet, neemt hij deze route terug 4. Bij aankomst in het gele vlak moet hij een object zoeken en redden Nu gaan we alles wat we in de bovenstaande opdrachten geleerd hebben in één programma zetten. Stap1: Lees al de variabele van het kalibratie programma in (diegene die we daarjuist gemaakt hadden).
Figuur 89
Stap2: Zwarte lijn volgen tot het de waarde voor geel ziet.
Figuur 90
Stap3: Bij het zien van deze waarde voor geel , volg dan deze route.
Figuur 91
RoboCup Junior Cursus
71
Stap4: Bij het zien van een zwarte waarde, volg dan terug deze route. Maar loop trager om de moeilijke bochten te kunnen maken.
Figuur 92
Stap5: Bij aankomst geel vlak een object zoeken en redden
Figuur 93
RoboCup Junior Cursus
72
Uitvoering: Indien je de bovenstaande opdracht goed hebt uitgevoerd zal je het volgende programma bekomen:
Figuur 94
RoboCup Junior Cursus
73
15 Besluit: We hebben u in deze paper tal van informatie verschaft over de robot en wat je er zoal mee kan aanvangen. Hieruit kunnen we besluiten dat “LEGO niet zo maar LEGO is” . We hopen alvast dat u tevreden bent met deze eerste cursus voor leerkrachten van het secundair onderwijs.
Auteur en uitgever:
Artesis Hogeschool Antwerpen
De Wilde Gert Geurts Ben Mariën Tom Van Damme Edwin Van Damme Stefan www.artesis.be
Uitgever Cursus
www.stefanvd.net
Online oplossingen van de LEGO NXT programmeer opdrachten kan u vinden op deze website: http://code.google.com/p/legonxtrescue/ Video verslag oplossingen van de LEGO NXT programmeer opdrachten kan u vinden op deze website: http://www.stefanvd.net/project/nxt.htm
RoboCup Junior Cursus
74
Literatuur Internetbronnen: http://www.brickshop.nl/vmchk/lego/mindstorms/lego-9749-nxt-temperatuur-sensor.html http://www.hitechnic.com/index.html?lang=en-us&target=d18.html http://nl.wikipedia.org/wiki/Gyroscoop http://www.xs4all.nl/~robmahn/toepassingen.htm http://www.pws-robotica.nl/?id=regelingen http://www.sensor.nl/nl/Onze+producten/Ultrasoon+en+laser/ http://proto5.thinkquest.nl/~bge0047/informatie.php?page=aandrijf&id=29&taal=nl http://nl.wikipedia.org/wiki/Ultrasoon_sensor http://www.at-aandrijftechniek.nl/productnieuws/sensoren/1807/ultrasone-sensor-voor-aseptischetoepassingen.html http://www.sick.nl/nl/producten/terminologie/ultrasoon/nl.html http://www.encyclo.nl/begrip/Ultrasoon%20sensor http://www.engineersonline.nl/MBM/engineers.nsf/htmlViewProducts/FF1EA9B30085254AC125751A0030BD 59 http://www.natuurwetenschappen.nl/modules.php?name=News&file=article&sid=1194 http://www.cma.science.uva.nl/Signaal/signaal26/Sensoren.html http://www.leermiddelen.be/contents/nl/b0142i.pdf http://www.romatica.be/RoMaTica/Speciale_functies/Speciaal-licht-sensor.htm http://www.utwente.nl/nieuws/pers/cont_08-058.doc/ http://www.cma.science.uva.nl/handleidingen/sensoren/b015.pdf http://nijstad.com/science-technology/techniek/geluidsensor.html http://www.idealize.nl/2008/12/nauwkeurigste-geluidsensor-is-een-nanoluchtbel/ http://nl.wikipedia.org/wiki/Robot http://wiki.robotmc.org/index.php?title=Het_bouwen_van_een_robot http://www.neoweb.nl/infopages/robotica.html http://www.nos.nl/jeugdjournaal/artikelen/2009/3/16/vrouwelijkerobotnetecht.html http://www.teamhassenplug.org/NXT/NXTSoftware.html http://forums.nxtasy.org/index.php?showtopic=3301 http://www.education.rec.ri.cmu.edu/content/lego/start/index.htm http://www.philohome.com/nxt.htm http://www.robocupjunior.be/robocup/ http://nl.wikipedia.org/wiki/Transponder http:/thenxtstep.blogspot.com http://www.robocupjunior.be/ http://www.antratek.nl/NXT.html http://stm.nbed.nb.ca/Tech%20Sites/Robotics%20&%20Automated%20Tech/FastLineTrackingAnsKey.pdf http://www.nxtprograms.com/projects.html http://nl.wikipedia.org/wiki/LEGO_Mindstorms http://www.ortop.org/NXT_Tutorial/index.html
RoboCup Junior Cursus
75
Extra Nota:
RoboCup Junior Cursus
76