Logistieke Robots/les 1: verschil tussen versies
(→Stap 5) |
(→Stap 6) |
||
Regel 122: | Regel 122: | ||
Zorg ervoor dat Morsy ook naar links, achter en naar voren kan lopen door middel van het toetsenbord | Zorg ervoor dat Morsy ook naar links, achter en naar voren kan lopen door middel van het toetsenbord | ||
=== Stap 6 === | === Stap 6: bestand opslaang voor vervolg === | ||
Sla het bestand op om volgende les mee verder te gaan. | Sla het bestand op om volgende les mee verder te gaan. | ||
Versie van 4 dec 2014 14:24
Inhoud les 1
In deze les leer je hoe je voor een robot eenvoudige “brein software” kunt ontwikkelen in Blender. Deze “Brein software” zullen we vanaf nu een controller noemen. Je gaat eerst een controller ontwikkelen die je kunt aansturen via het toetsenbord. In latere lessen zul je deze controller verder automatiseren, door middel van een Python-programma, zodat de robot zelfstandig (autonoom) aan de slag kan.
Voordat je hiermee kunnen starten moet je ervoor zorgen dat Blender op je systeem geïnstalleerd is. Installeren Blender
Werken met Blender
Het openen van Blender kan wat overweldigend zijn. Er zijn erg veel knoppen en getallen te zien en dit is nog niet alles. Voor dit project gebruiken we lang niet alle mogelijkheden die Blender heeft. We bespreken daarom ook niet alle knoppen die je nu ziet. Veel van de uitleg in deze paragraaf is overgenomen van http://wiki.blender.org/index.php/Doc:NL/2.6/Manual.
Mocht je geïnteresseerd zijn in alle mogelijkheden van Blender kun je op deze site kijken. Ook zijn er mensen die graag hun creaties in Blender willen delen via het internet. We zullen hier verderop ook gebruik van maken.
Blender interface
De pop-up is het opstartscherm. Hier kun je recent geopende bestanden zien als je die hebt. Wanneer je een nieuw bestand wilt beginnen klik je ergens buiten het opstartscherm. Nu is de standaard lay-out zichtbaar met een kubus voorzien van assen. De standaard lay-out kan opgedeeld worden in verschillende vensters. Deze vensters, inclusief de meest gebruikte basiselementen, zijn aangegeven in figuur 1.
Figuur 1
De vijf vensters in het startscherm zijn:
- Info Window: bovenaan het scherm, bestaande uit alleen een header
- 3D Window: hier kun je de uiteindelijke robots in actie zien
- Timeline Window: deze zullen we in dit project niet gebruiken
- Outliner Window: dit scherm geeft alle gemaakte objecten (inclusief de robots) weer in de omgeving
- Properties Window: hier kun je kenmerken van objecten wijzigen (bijvoorbeeld kleur en naam)
Er zijn meerdere Windows die je kan weergeven in je scherm. Het type venster kun je wijzigen door het Window Type te veranderen, te vinden in de linkerhoek van de headers van de windows.
De meest gebruikte basiselementen zijn:
- Current Screen Layout: Blender heeft passende startschermen voor verschillende gebruiksdoeleinden. Wij gebruiken Default of Scripting.
- Current Scene: je kunt verschillende 3D windows ontwikkelen. Dit zijn scenes. Wij zullen maar een Scene ontwikkelen
- Current Rendering Engine:
- Toggle Fullscreen: schakel de fullscreen mode aan/uit
- 3D Transform Manipulator: visueel hulpmiddel bij het transformeren van objecten (grab/verplaatsen, roteren en schalen). Dit kan ook met behulp van het toetsenbord (G, R, S)
- 3D cursor: heeft meerdere functies. Nieuwe objecten worden hier bijvoorbeeld geplaats en het geeft aan waar het rotatiepunt zit
- Cube Mesh / Light / Camera: bij het openen van een nieuw bestand in Blender is er standaard Cube Mesh, een Light en een Camera aanwezig
- Selected object: dit veld toont de naam van het huidige geselecteerde object
- 3D Window Header: alle vensters in Blender hebben een header, maar deze zit aan de onderkant. Hij bestaat onder andere uit:
- Viewport shading: hiermee kan het shading type aangegeven worden. Deze functie zal niet aangepast worden tijdens dit project
- Layers: wanneer je vele objecten hebt gecreëerd kan het makkelijk zijn om deze te ordenen in functionele groepen (robots in de ene layer, de omgeving in de andere). Hier zullen we geen gebruik van maken
- Buttons (Properties) Window Header: dit venster toont panels en deze panels zijn gegroepeerd. Om een andere groep te zien kunnen de knoppen in de header
aangeklikt worden
- Outliner Window: dit venster laat alle objecten in een scene zien.
- Timeline Window: Dit venster laat een tijdlijn zien die gebruikt kan worden voor karakter animaties. Dit zullen we niet gaan toepassen in dit project
- Window types: zoals eerder gezegd zijn er vele mogelijke vensters. Ieder venster werkt onafhankelijk van de anderen en het is mogelijk om het zelfde type venster meerdere keren open te hebben. We zullen niet alle types gebruiken. Degene die we wel gaan gebruiken, naast de basis schermen, zijn:
- Logic Editor: hiermee kan een controller gemaakt worden
- Text editor: hier schrijven we Python code
- Console: hier kun je de output zien van de Python code.
Besturen van het 3D scherm
Alle handelingen in Blender kun je doen door te werken met de muis. Voor iedere handeling is er ook een shortcut beschikbaar via het keyboard. Blender maakt gebruik van alle functies op een muis. Om deze reden is het aan te raden dat je een uitgebreide muis gebruikt (met een scrol functie die ingedrukt kan worden) voor de Windows computer. Voor de Mac is de touchpad toereikend. Gedurende dit project zullen we onderstaande codes gebruikten om te refereren naar handelingen met de muis.
- LMB - Linker muisknop
- MMB - Druk op het scroll wiel alsof het een knop is
- RMB - Rechter muisknop
- Wheel - Scrol het wiel
De muis gebruik je voornamelijk om de 3D view te besturen
- MMB: hiermee kun je de scene vanuit alle hoeken bekijken
- Wheel: in/uitzoomen
- LMB: vastpakken van een object
- RMB: selecteren van een object
Aansturen van Morsy de Robot
Nu gaan we echt aan de slag met Blender. We gaan een robot aansturen via het toetsenbord. Voordat we een robot kunnen aansturen moeten we er natuurlijk een hebben. We gebruiken, om snel aan de slag te kunnen met de controller, een robot die al is ontwikkeld genaamd Morsy. Morsy komt uit de MORSE code, de Modular OpenRobots Simulation Engine. (https://www.openrobots.org/wiki/morse/) Morsy ziet er als volgt uit:
Merk op dat deze logistieke robot geen armen heeft. Het oppakken van objecten om te verplaatsen zal dus meer symbolisch zijn. Het is mogelijk om armen met een animatie toe te voegen om een object op te pakken. Omdat dit niet het doel is van het project zullen we dit niet behandelen.
Stap 1
Open “morsy.blend” uit de map “Les1-Blender”. Je ziet dat we te maken hebben met dezelfde basis omgeving maar dat de Cube Mesh vervangen is door de Morsy robot.
Stap 2
Verander het window type van de timeline window naar de logic editor:
Stap 3
Maak de ruimte voor de logic editor iets groter en zoom indien nodig in zodat de letters leesbaar zijn. Je kunt nu zien dat de logic editor bestaat uit sensors, controllers en actuators. Sensors zijn gebeurtenissen die Morsy kan waarnemen vanuit de omgeving. De controller bepaalt hoe je op deze controller ingaat om zo eventueel een actuator aan te sturen.
Stap 4
We kunnen nu de controller gaan maken. We willen de robot aansturen met de pijltjes op het toetsenbord. Iedere toets is dan een sensor. Wanneer deze sensor actief is (en dus ingedrukt wordt) moet de robot een bepaalde kant op gaan lopen. We beginnen met naar rechts lopen Wanneer we de toets → indrukken willen we dat Morsy naar rechts gaat lopen (voor morsy zelf is dit naar links). In de linker beneden hoek van het 3D scherm zien we de assen waarover de robot kan bewegen. We zien dat we Morsy moeten laten lopen over de –X as om deze naar rechts te laten gaan. Dit gaat als volgt: Voor het aanmaken van deze actie moeten we een sensor hebben die detecteert of we de toets → indrukken. Klik op “Add Sensor” en dan op Keyboard. Geef de Keyboard de naam “Right” en ga erna in het vakje “Key” staan waardoor je ziet “Press a key” en druk op → Ga naar “Add Controller” en voeg een “And” controller toe. Maak een link tussen de sensor en controller door de twee punten met elkaar te verbinden. Het moet er nu als volgt uit zien:
Wanneer we op de → toets drukken geeft dit een positief signaal aan de controller. De controller moet positieve signalen ontvangen van alle sensoren die verbonden zijn met deze controller om zelf een positief signaal door te kunnen geven. Dit is er nu maar 1. Wanneer alleen de toets → ingedrukt wordt geeft de controller dus een positief signaal. Nu gaan we de controller verbinden aan een actie: lopen. Ga naar “Add Actuator” en voeg een “Motion” actuator toe. Geef deze ook de naam “Right” en een X loc waarde van -0.3. Druk ook op de L achter deze regel. Dit geeft aan dat we willen bewegen ten opzichte van de assen en niet ten opzichte van de locatie van Morsy zelf Maak een link tussen de controller en actuator
Graag willen we nu weten of de robot naar rechts kan lopen. Als we nu in de “play” modus zouden gaan, zou de robot naar beneden vallen omdat we nog geen vloer hebben toegevoegd. Je zet Blender in de “play” modus door met de muis in het 3D view te staan en dan op ‘P’ te drukken. Je komt weer uit deze modus door op ‘Esc’ te drukken. Voeg een vloer toe door in de header van de 3D view te klikken op “Add”, dan op “Mesh” en dan op “Plane”
Verschuif het vierkant onder Morsy door op de assen te klikken en de grond te verschuiven Druk op “S” en gebruik de “Wheel” om de grond groter te maken Verander de kleur van de vloer door in het property venster te gaan naar:
en klik op “+ New”. Bij diffuse kun je een kleur uitkiezen.
Als het goed is ziet het 3D window er nu als volgt uit:
Druk nu op “P” en kijk of Morsy naar rechts beweegt bij het indrukken van de pijl naar rechts. Wanneer je dit getest hebt, druk weer op “Esc”. Wanneer Morsy niet naar rechts loopt, moet je stap 4 nogmaals doorlopen om te zien
Stap 5: sturen naar links, achter en voor
Zorg ervoor dat Morsy ook naar links, achter en naar voren kan lopen door middel van het toetsenbord
Stap 6: bestand opslaang voor vervolg
Sla het bestand op om volgende les mee verder te gaan.
Plusopdracht
Zorg ervoor dat de robot via het toetsenbord:
- Een rondje kan draaien om zijn eigen as met de toets ‘R’
- Kan springen bij wanneer de Spacebar en toets J ingedrukt zijn
- …