Logistieke Robots/les 3: verschil tussen versies
Regel 76: | Regel 76: | ||
Dit heet een script. Dit script bestaat uit verschillende onderdelen. | Dit heet een script. Dit script bestaat uit verschillende onderdelen. | ||
* (r. 1) | * (r. 1) <code>import bge</code> importeert de Blender Game Engine module voor Python. In deze module is onder andere de functie <code>logic.getCurrentController()</code> gedefinieerd. | ||
* (r. 4-15) De definitie van de functie <code>main()</code>; | * (r. 4-15) De definitie van de functie <code>main()</code>; | ||
* (r. 17) De laatste regel vormt een aanroep van de functie <code>main()</code>: de opdrachten in de definitie daarvan worden uitgevoerd. | * (r. 17) De laatste regel vormt een aanroep van de functie <code>main()</code>: de opdrachten in de definitie daarvan worden uitgevoerd. |
Versie van 9 dec 2014 09:29
Morsy besturen met Python
In de vorige les hebben we gezien dat de controller van Morsy veel complexer wordt als we hem autonoom aan willen sturen. Wanneer we Morsy nog meer taken willen geven, en wanneer we Morsy in een groep willen laten werken, zijn de logic bricks niet meer toereikend. Daarom gaan we Blender combineren met de programmeertaal Python.
Controleer eerst of de juiste versie van Python op je systeem geïnstalleerd is, op de juiste plaats. (Zie: Python installeren voor verdere aanwijzingen.) In sommige gevallen is Python geïnstalleerd als onderdeel van Blender.
Blender combineren met programmeertaal Python
In deze les gebruiken we warehouse.blend. Deze omgeving zullen we gedurende de rest van het project gebruiken. Het openen van het bestand gaat nu anders omdat we de Python output willen zien.
OS X: Blender opstarten met Terminal
Ga naar de Blender applicatie en open de Package Contents van Blender.
Open vervolgens het blender executable bestand via het openen van de volgende folders:
Als Blender opstart, kun je via File>Open
het bestand “warehouse.blend” openen.
Windows:
Open Blender op de gebruikelijke manier. Ga naar de Info Window en klik op Window >Toggle System Console
. Er is nu een extra scherm in beeld.
Wanneer je de file “warehouse.blend” geopend hebt, zie je in het window linksonder een Tekst Editor. Hier kun je een Python controller ontwikkelen.
Controleren of Python werkt in Blender
Om te testen of de link tussen Blender en Python werkt, voeren we de volgende stappen uit:
- Voeg aan Robot_11 (de voorste) een Always sensor toe.
- Maak een nieuw Python script aan:
- klik op de "+" onderin het Text Editor venster (naast de naam van het bestand).
- verander de naam van het bestand in "Text.py"
- typ in de Text Editor:
print(“Hello”)
- Voeg aan Robot_11 een Python controller:
- Selecteer als script voor deze Python-controller: "Text.py"
- Link de controller met de sensor:
- Ga na de spel modus (of, voor OS X, naar de Terminal) en kijk naar de console. Dit moet er nu in de console te zien zijn:
Blender Game Engine Started Hello Blender Game Engine Finished
Ontwikkelen van een controller in Python
Nu je weet hoe je Python aan Blender moet koppelen, kunnen we een Python controller maken. We gaan Morsy, nu genaamd Robot_11, naar een kast laten lopen om een artikel op te halen en in de box te zetten op tafel. Voordat we hieraan kunnen beginnen moeten we begrijpen hoe je sensoren kunt opvangen en actuatoren kunt aansturen via een Python controller.
Morsy laten lopen door een Python controller
Wat je in deze paragraaf gaat leren lijkt op wat je geleerd hebt in les 2, het autonoom laten ophalen van objecten en naar een bepaald doel brengen, maar nu doen we dat via een Python controller.
Stap 1: Onderdelen van een script
Blender heeft al een opzet voor hoe je een robot moet aansturen. Ga in de Tekst editor window naar Templates > Python> GameLogic Simple
. Je ziet nu de volgende code verschijnen:
import bge
def main():
cont = bge.logic.getCurrentController()
own = cont.owner
sens = cont.sensors['mySensor']
actu = cont.actuators['myActuator']
if sens.positive:
cont.activate(actu)
else:
cont.deactivate(actu)
main()
Dit heet een script. Dit script bestaat uit verschillende onderdelen.
- (r. 1)
import bge
importeert de Blender Game Engine module voor Python. In deze module is onder andere de functielogic.getCurrentController()
gedefinieerd. - (r. 4-15) De definitie van de functie
main()
; - (r. 17) De laatste regel vormt een aanroep van de functie
main()
: de opdrachten in de definitie daarvan worden uitgevoerd.