De clubconsole krijgt een missiemodus. Een lid schrijft een reeks opdrachten; jouw console controleert die, rekent hem door vóór het opstijgen, vliegt hem af en maakt een rapport. Je bouwt het als een project van modules die je zonder drone kunt testen. Daarmee sluit je fase 1 af.
In sprint 4 bestuurde je de drone live met het toetsenbord. De vliegclub wil nu ook missies: een vaste reeks opdrachten die de drone zelf afvliegt, bijvoorbeeld een rondje door de zaal met een foto op elke hoek. Een missie gaat pas de lucht in als de console hem gecontroleerd en doorgerekend heeft. Jij bouwt die missiemodus — niet als één lang script, maar als een klein project van modules.
Een missie is een lijst met tekstregels in missions.py. Elke regel is één stap:
| Regel | Betekenis |
|---|---|
forward 100 · back · left · right | Vliegen in centimeters, 20 tot en met 500. De richting is ten opzichte van waar de neus van de drone naar wijst. |
up 50 · down 50 | Stijgen of dalen in centimeters, 20 tot en met 500. |
cw 90 · ccw 90 | Draaien rechtsom (clockwise) of linksom. Alleen 90, 180, 270 of 360 graden. |
photo | Eén foto maken. Er staat geen getal achter. |
Hoofdletters en extra spaties maken niet uit: FORWARD 100 is hetzelfde als
forward 100. Opstijgen en landen staan niet in de missie; dat doet de console zelf.
Klopt een regel niet, dan noemt de console het regelnummer en de reden. Hij stopt niet bij de eerste fout: alle foute regels komen in beeld. Een missie met één of meer foute regels vliegt niet. Een lege missie ook niet.
| Fout | Voorbeeld van een melding |
|---|---|
| Onbekend commando | regel 2: onbekend commando 'jump' |
| Getal ontbreekt | regel 4: getal ontbreekt |
| Geen geheel getal | regel 5: 'abc' is geen geheel getal |
| Afstand buiten 20–500 | regel 1: afstand 10 cm (min: 20, max: 500) |
| Verkeerde draai | regel 3: draai 45° (alleen 90, 180, 270 of 360) |
Te veel onderdelen, of een getal achter photo | regel 6: photo heeft geen getal nodig |
De teksten mag je zelf kiezen, zolang het regelnummer, de waarde en de grens erin staan.
Is elke regel goed, dan rekent de console de hele missie door zonder te vliegen. Hij houdt bij waar de drone is en welke kant hij op kijkt.
(0, 0, 0): x is links–rechts, y is voor–achter, z is de hoogte boven het
opstijgpunt. Bij de start wijst de neus naar voren: dat is 0°.forward vliegt in de kijkrichting. Na cw 90 kijkt de drone naar rechts, dus gaat
forward daarna in de x-richting. back, left en right draaien mee.Daarnaast schat de console het accuverbruik:
| Onderdeel | Verbruik |
|---|---|
| Opstijgen en landen samen | 10% |
| Bewegen, alle zes richtingen | 4% per 100 cm |
| Draaien | 1% per 90° |
| Foto | 0% |
De missie mag alleen de lucht in als de geschatte accu aan het eind minstens 20% is. Precies 20 mag nog. Vóór het opstijgen print de console: de afstand, het aantal gedraaide graden, het aantal foto's, de eindpositie, het hoogste punt, het geschatte verbruik en de geschatte eindaccu.
config.py staat SIMULATION. Staat die op True, dan is er geen drone:
de startaccu komt uit config.py, opstijgen en landen kosten meteen 10%, en elke stap kost het
geschatte verbruik plus SIM_EXTRA_DRAIN. Met die laatste bootst je een accu na die sneller leegloopt
dan je berekening.photo sla je het huidige camerabeeld op, met
het stapnummer in de bestandsnaam.Na de landing print de console:
main.py
en je testbestand printen.main.py bevat geen def en draait alles achter if __name__ == "__main__":.global. Wat een functie verandert, komt terug via return — tenzij het
een lijst is die de functie bewust vult, en de naam van de functie dat zegt.config.py.| User story | Waar zit het in dit project? |
|---|---|
| US1 · DRY & functies | Dezelfde controle en dezelfde accuformule voor doorrekenen én vliegen; elke grens één keer in config.py. |
| US2 · Parameters & return | Functies die meer dan één waarde teruggeven en die je uitpakt; een positie als tuple; minstens één parameter met een standaardwaarde. |
| US3 · Drone-helpers | Modules met één onderwerp, een main-guard, en een testbestand dat zonder drone draait. |
| US4 · Scope | Positie en kijkrichting via return in plaats van global; een logboek dat bewust gevuld wordt; startwaarden vóór je lussen. |
Maak een bestand project_plan.md. Beschrijf in welke stappen je dit aanpakt, hoelang je per stap
denkt nodig te hebben, waar je problemen verwacht, en welke functies je zonder drone kunt testen. In het tabblad
Ontwerpen komt er nog een functietabel bij.
Typ een missie — één stap per regel — en zie wat je console hoort te doen: welke regels fout zijn, hoe de missie doorgerekend wordt, of hij de lucht in mag, en wat er in simulatie gebeurt. Hier staat geen Python — alleen het gedrag dat je console moet vertonen.