Logistieke Robots/les 2: verschil tussen versies
(31 tussenliggende versies door 2 gebruikers niet weergegeven) | |||
Regel 1: | Regel 1: | ||
{{Zijbalk Logistieke Robots}} | {{Zijbalk Logistieke Robots}} | ||
== Les 2 - | == Les 2 - Objecten zoeken en verplaatsen == | ||
In dit project willen we robots toepassen in de logistieke sector. Wanneer robots actief zijn in de logistieke sector betekent dit vaak dat robots bepaalde objecten moeten zoeken, oppakken en naar een doel moeten brengen. Hoe we een robot moeten aansturen die dit kan gaan we zien in deze les. | In dit project willen we robots toepassen in de logistieke sector. Wanneer robots actief zijn in de logistieke sector betekent dit vaak dat robots bepaalde objecten moeten zoeken, oppakken en naar een doel moeten brengen. Hoe we een robot moeten aansturen die dit kan gaan we zien in deze les. Het eindresultaat van deze les ziet er als volgt uit: https://www.youtube.com/watch?v=z22EOFDgOj4. | ||
Voor deze les maken we gebruik van het bestand | Voor deze les maken we gebruik van het bestand [https://googledrive.com/host/0B4Wf_Tca5KDuNnFUWTc4R09jblU/logistieke-robots/living_room.blend living_room.blend]. Wanneer je het bestand opent zie je een huiskamer en een aantal boeken die rondslingeren in de kamer. We willen dat de robot de boeken kan herkennen, er naar toe kan lopen, op kan pakken en in de boekenkast kan zetten. In paragraaf 1 zullen we de robot aansturen via het toetsenbord en in paragraaf 2 laten we de robot deze taak autonoom (=zelfstandig) uitvoeren. | ||
== Object naar het doel verplaatsten met het toetsenbord == | == Object naar het doel verplaatsten met het toetsenbord == | ||
Regel 30: | Regel 30: | ||
==== Voeg kast-game property "Goal" toe ==== | ==== Voeg kast-game property "Goal" toe ==== | ||
Selecteer de kast en voeg een ‘String’ Game Property toe aan de kast met de naam ‘Goal’: | Selecteer de kast en voeg een ‘String’ Game Property toe aan de kast met de naam ‘Goal’: | ||
[[Bestand:Les2-stap4-goal.png| | [[Bestand:Les2-stap4-goal.png|700px|Add property: Goal]] | ||
==== Voeg Morsy-sensoren en actuatoren toe ==== | ==== Voeg Morsy-sensoren en actuatoren toe ==== | ||
Selecteer nu weer Morsy en voeg een Collision sensor toe en twee Message actuatoren naar het blauwe boek op de grond en in de kast met als Subject ‘Done’: | Selecteer nu weer Morsy en voeg een Collision sensor toe en twee Message actuatoren naar het blauwe boek op de grond en in de kast met als Subject ‘Done’: | ||
[[Bestand:Les2-stap4-done.png| | [[Bestand:Les2-stap4-done.png|700px|Add message actuators: Done]] | ||
==== Boek op de grond wordt opgepakt (onzichtbaar) ==== | ==== Boek op de grond wordt opgepakt (onzichtbaar) ==== | ||
Regel 46: | Regel 46: | ||
[[Bestand:Les2-stap4-shelf.png|700px|Boek wordt in kast zichtbaar]] | [[Bestand:Les2-stap4-shelf.png|700px|Boek wordt in kast zichtbaar]] | ||
=== Uiteindelijk resultaat | === Uiteindelijk resultaat === | ||
Het kan er uiteindelijk als volgt uit zien: | Het kan er uiteindelijk als volgt uit zien: | ||
[[Bestand:Les2-stap5-afronden.png|500px|Morsy verplaatst het boek]] | |||
Voor hulp zie: https://www.youtube.com/watch?v=nEgubbYwRy0 | |||
Wanneer je zelf andere sensoren en actuatoren gebruikt die hetzelfde resultaat als gevolg hebben, mag dit ook. | |||
== Object herkennen met een radar == | |||
In deze paragraaf leren we hoe Morsy zelf naar de boeken kan lopen zonder aansturing via het toetsenbord. | |||
Hiervoor moet Morsy tussen verschillende States (toestanden) kunnen schakelen. Morsy moet eerst de kamer afzoeken naar de boeken. Wanneer Morsy een boek gevonden heeft moet hij hier naartoe lopen en erna mogelijk weer verder zoeken om vervolgens de boeken bij de kast af te leveren. | |||
We gebruiken de volgende toestanden (states): | |||
* 1: zoeken naar boek 1 (met een radar-sensor), bewegen naar het boek, en oppakken van het boek | |||
* 2: oppakken van boek 1 en in de kast plaatsen | |||
* 3: zoeken naar boek 2 | |||
* 4: oppakken van boek 4 | |||
* 5: loop naar de kast en plaats de boeken daarin | |||
=== Stap 1: Opzetten === | |||
In de vorige paragraaf konden wij de boeken zien liggen en Morsy erheen sturen via het toetsenbord. Nu willen we dat Morsy zelf de boeken kan vinden. Geef de boeken die op de grond liggen de Game Property ‘book_1’ en ‘book_2’ en verwijder alle sensorsen en actuators van Morsy. | |||
=== Stap 2: Boeken detecteren === | |||
We gaan Morsy voorzien van verschillende Radars die de boeken kunnen detecteren. We voegen eerst een radar toe voor <code>book_1</code> | |||
* Om de boeken te kunnen zien met de Radars moet Morsy rondjes draaien. Voeg een Always sensor toe die een Motion actuator activeert waarbij je 2 graden om de Z as beweegt. | |||
** controleer of deze werkt; | |||
* Voeg een Radar sensor toe met Property <code>book_1</code>, over de –X as (<code>-X axis</code>), een hoek (<code>Angle</code>) van 50 graden en een afstand (<code>Distance</code>) van 8 meter. | |||
** Om de radar te kunnen zien in de 3D view, kun je in de info window van Blender drukken op <code>Game > Show Physics Visualization</code>. Wanneer je nu naar de spel modus gaat kun je de radar zien. Je kunt de Physics Visualization hierna weer uitzetten. | |||
=== Stap 3: Boeken ophalen in verschillende states === | |||
* Voeg aan Morsy een Integer Game Property toe genaamd ‘number’. Dit is het aantal boeken dat Morsy opgepakt heeft. We laten Morsy de boeken in een speciale volgorde ophalen. Dit is nodig wanneer je met de logic bricks werkt. In de volgende les zien we dat het met Python sneller kan. Wanneer de radar het boek ziet met property <code>book_1</code> en deze moet ophalen (property number is dan nog 0) gaat Morsy naar state 2. De controller ziet er nu als volgt uit: <br> [[Bestand:Les2-state1.png|700px|Controller state 1]] | |||
Nu moeten we een invulling gaan geven aan de controller in state 2. | |||
* Druk op het plusje links naast de Controller bar. En ga naar state 2. Initial geeft aan in welke state je begint. <br> In deze state wil je dat Morsy naar een bepaald boek loopt. In dit geval het boek met property book_1. Dit kan met een Steering actuator. Je kan variëren met de snelheid en afstand om het ophalen zo natuurlijk mogelijk te laten verlopen. | |||
* Wanneer Morsy het boek bereikt heeft moeten er een aantal dingen gebeuren. | |||
** Morsy moet laten weten aan het boek dat het zich vast moet klampen aan de robot. | |||
** Vervolgens gaat de number property 1 omhoog zodat Morsy op zoek kan naar het volgende boek wanneer hij teruggezet wordt naar state 1. De controller ziet er nu als volgt uit: <br> [[Bestand:Les2-state2.png|700px|Controller state 2]] | |||
* Wanneer we een bericht sturen naar het boek, moeten we de controller van het boek wel aanpassen. De Collision sensor van het boek veranderen we in een Message sensor op de volgende manier: <br> [[Bestand:Voorbeeld.png]] | |||
Herhaal deze procedure voor boek 2 en 3 (gebruik states 3 en 4 hiervoor). Wanneer Morsy alle boeken gevonden heeft, zal de number property op 3 staan en moet Morsy terug naar de kast. Het lopen naar de kast kan gezien worden als state 5. Voeg in state 1 een property sensor toe. Als deze gelijk is aan 3, zet Morsy dan in state 5. | |||
In state 5 moet je altijd sturen naar de kast. Als je hier bent stuur je een Done message naar alle boeken. Zet Morsy vervolgens in state 6: een lege state. State 5 ziet er als volgt uit: | |||
[[Bestand:Voorbeeld.png]] | [[Bestand:Voorbeeld.png]] | ||
Wanneer je | voor hulp zie: https://www.youtube.com/watch?v=s3YjWyM_QWs | ||
== Plusopdracht == | |||
Het is je vast al opgevallen dat het best lastig is om van een toetsenbord controller naar een autonome controller te gaan. In de plusopdracht verbeter je twee aspecten: | |||
# Wanneer de radar afstand van Morsy kleiner is, moet Morsy naast alleen draaien ook gaan wandelen om de boeken te kunnen detecteren. | |||
# Met een toetsenbord kun je makkelijker om een obstakel heen navigeren. Nu zal Morsy tegen alles opbotsen wat tussen hem en het doel instaat. Zorg ervoor dat Morsy om obstakels heen kan lopen. | |||
Als je even niet meer wilt programmeren kun je ook gaan werken met de camera's | |||
# Probeer de kamer vanuit Morsy te bekijken. Voor hulp zie: https://www.youtube.com/watch?v=Rmeq85kt8zE |
Huidige versie van 17 dec 2014 om 16:46
Les 2 - Objecten zoeken en verplaatsen
In dit project willen we robots toepassen in de logistieke sector. Wanneer robots actief zijn in de logistieke sector betekent dit vaak dat robots bepaalde objecten moeten zoeken, oppakken en naar een doel moeten brengen. Hoe we een robot moeten aansturen die dit kan gaan we zien in deze les. Het eindresultaat van deze les ziet er als volgt uit: https://www.youtube.com/watch?v=z22EOFDgOj4.
Voor deze les maken we gebruik van het bestand living_room.blend. Wanneer je het bestand opent zie je een huiskamer en een aantal boeken die rondslingeren in de kamer. We willen dat de robot de boeken kan herkennen, er naar toe kan lopen, op kan pakken en in de boekenkast kan zetten. In paragraaf 1 zullen we de robot aansturen via het toetsenbord en in paragraaf 2 laten we de robot deze taak autonoom (=zelfstandig) uitvoeren.
Object naar het doel verplaatsten met het toetsenbord
Aan de hand van 5 stappen kunnen we de controller gaan maken. Zorg ervoor dat je eerst zelf nadenkt over de stappen die je uit moet voeren voordat je naar de print kijkt hoe de controller eruit moet zien.
Stap 1: Naar het boek lopen
Wanneer je op Morsy klikt, zie je in de logic editor dat er vier Keyboard sensors aangemaakt zijn. Hier kunnen we Morsy mee naar een boek laten lopen. Als je goed kijkt zie je ook dat er een Game Property aangemaakt is met de naam Morsy. Zo kunnen andere objecten Morsy herkennen. Waarom dit nodig is zien we later.
Stap 2: Boek vastpakken
Omdat Morsy geen armen heeft kan hij het boek niet vasthouden zoals wij dat zouden doen met onze handen. Morsy kan wel naar het boek lopen en wanneer hij contact heeft met het boek kun je je voorstellen dat het boek vast zit aan Morsy door middel van een magneet. Dit kunnen we als volgt doen: Ga naar de controller van book_blue_ground en voeg een Collision sensor toe. Geef bij Property aan dat het om Morsy gaat. Voeg een Parent actuator toe waarbij je bij Parent Object Morsy selecteert. Verbind de twee met elkaar. Er komt dan automatisch een And controller tussen. Wanneer je nu in de spelmodus gaat (druk op P) en naar het blauwe boek loopt, zie je dat het blauwe boek vast blijft zitten aan Morsy. De controller ziet er als volgt uit:
Stap 3: Naar het doel lopen
Het doel, de kast waar de drie dezelfde boeken wel in de kast staan, kan bereikt worden door middel van het toetsenbord. Wanneer Morsy met het boek bij de kast is wil je dat het boek in de kast komt te staan. Het visualiseren van deze actie is niet een van de leerdoelen van dit project. Uiteraard mag je Morsy voorzien van een grijparm en visualiseren hoe Morsy het boek in de kast zet maar dit zal veel tijd in beslag nemen. Daarom gebruiken we een eenvoudiger methode.
Stap 4: Boek in de kast plaatsen
Wanneer Morsy de kast bereikt met een boek, wil je dat dit boek verdwijnt en dat het boek in de kast zichtbaar wordt. Voordat Morsy kan herkennen of er aanraking plaatsvindt met de kast, moet de kast een Game Property hebben.
Voeg kast-game property "Goal" toe
Selecteer de kast en voeg een ‘String’ Game Property toe aan de kast met de naam ‘Goal’:
Voeg Morsy-sensoren en actuatoren toe
Selecteer nu weer Morsy en voeg een Collision sensor toe en twee Message actuatoren naar het blauwe boek op de grond en in de kast met als Subject ‘Done’:
Boek op de grond wordt opgepakt (onzichtbaar)
Zorg ervoor dat het blauwe boek op de grond het bericht kan ontvangen en hierna onzichtbaar wordt:
Boek in de kast wordt zichtbaar
Zorg er ook voor dat het boek in de kast vanaf het begin onzichtbaar is totdat deze het bericht ‘Done’ krijgt van Morsy. Neem zelf even de tijd om te bedenken hoe dit moet.
Uiteindelijk resultaat
Het kan er uiteindelijk als volgt uit zien:
Voor hulp zie: https://www.youtube.com/watch?v=nEgubbYwRy0
Wanneer je zelf andere sensoren en actuatoren gebruikt die hetzelfde resultaat als gevolg hebben, mag dit ook.
Object herkennen met een radar
In deze paragraaf leren we hoe Morsy zelf naar de boeken kan lopen zonder aansturing via het toetsenbord. Hiervoor moet Morsy tussen verschillende States (toestanden) kunnen schakelen. Morsy moet eerst de kamer afzoeken naar de boeken. Wanneer Morsy een boek gevonden heeft moet hij hier naartoe lopen en erna mogelijk weer verder zoeken om vervolgens de boeken bij de kast af te leveren.
We gebruiken de volgende toestanden (states):
- 1: zoeken naar boek 1 (met een radar-sensor), bewegen naar het boek, en oppakken van het boek
- 2: oppakken van boek 1 en in de kast plaatsen
- 3: zoeken naar boek 2
- 4: oppakken van boek 4
- 5: loop naar de kast en plaats de boeken daarin
Stap 1: Opzetten
In de vorige paragraaf konden wij de boeken zien liggen en Morsy erheen sturen via het toetsenbord. Nu willen we dat Morsy zelf de boeken kan vinden. Geef de boeken die op de grond liggen de Game Property ‘book_1’ en ‘book_2’ en verwijder alle sensorsen en actuators van Morsy.
Stap 2: Boeken detecteren
We gaan Morsy voorzien van verschillende Radars die de boeken kunnen detecteren. We voegen eerst een radar toe voor book_1
- Om de boeken te kunnen zien met de Radars moet Morsy rondjes draaien. Voeg een Always sensor toe die een Motion actuator activeert waarbij je 2 graden om de Z as beweegt.
- controleer of deze werkt;
- Voeg een Radar sensor toe met Property
book_1
, over de –X as (-X axis
), een hoek (Angle
) van 50 graden en een afstand (Distance
) van 8 meter.- Om de radar te kunnen zien in de 3D view, kun je in de info window van Blender drukken op
Game > Show Physics Visualization
. Wanneer je nu naar de spel modus gaat kun je de radar zien. Je kunt de Physics Visualization hierna weer uitzetten.
- Om de radar te kunnen zien in de 3D view, kun je in de info window van Blender drukken op
Stap 3: Boeken ophalen in verschillende states
- Voeg aan Morsy een Integer Game Property toe genaamd ‘number’. Dit is het aantal boeken dat Morsy opgepakt heeft. We laten Morsy de boeken in een speciale volgorde ophalen. Dit is nodig wanneer je met de logic bricks werkt. In de volgende les zien we dat het met Python sneller kan. Wanneer de radar het boek ziet met property
book_1
en deze moet ophalen (property number is dan nog 0) gaat Morsy naar state 2. De controller ziet er nu als volgt uit:
Nu moeten we een invulling gaan geven aan de controller in state 2.
- Druk op het plusje links naast de Controller bar. En ga naar state 2. Initial geeft aan in welke state je begint.
In deze state wil je dat Morsy naar een bepaald boek loopt. In dit geval het boek met property book_1. Dit kan met een Steering actuator. Je kan variëren met de snelheid en afstand om het ophalen zo natuurlijk mogelijk te laten verlopen. - Wanneer Morsy het boek bereikt heeft moeten er een aantal dingen gebeuren.
- Wanneer we een bericht sturen naar het boek, moeten we de controller van het boek wel aanpassen. De Collision sensor van het boek veranderen we in een Message sensor op de volgende manier:
Bestand:Voorbeeld.png
Herhaal deze procedure voor boek 2 en 3 (gebruik states 3 en 4 hiervoor). Wanneer Morsy alle boeken gevonden heeft, zal de number property op 3 staan en moet Morsy terug naar de kast. Het lopen naar de kast kan gezien worden als state 5. Voeg in state 1 een property sensor toe. Als deze gelijk is aan 3, zet Morsy dan in state 5.
In state 5 moet je altijd sturen naar de kast. Als je hier bent stuur je een Done message naar alle boeken. Zet Morsy vervolgens in state 6: een lege state. State 5 ziet er als volgt uit: Bestand:Voorbeeld.png
voor hulp zie: https://www.youtube.com/watch?v=s3YjWyM_QWs
Plusopdracht
Het is je vast al opgevallen dat het best lastig is om van een toetsenbord controller naar een autonome controller te gaan. In de plusopdracht verbeter je twee aspecten:
- Wanneer de radar afstand van Morsy kleiner is, moet Morsy naast alleen draaien ook gaan wandelen om de boeken te kunnen detecteren.
- Met een toetsenbord kun je makkelijker om een obstakel heen navigeren. Nu zal Morsy tegen alles opbotsen wat tussen hem en het doel instaat. Zorg ervoor dat Morsy om obstakels heen kan lopen.
Als je even niet meer wilt programmeren kun je ook gaan werken met de camera's
- Probeer de kamer vanuit Morsy te bekijken. Voor hulp zie: https://www.youtube.com/watch?v=Rmeq85kt8zE