Sprint 2 Β· Beslissingen  Β·  Project  Β·  Β±4 uur  Β·  Individueel

Project: Veilige takeoff

Je bouwt een pre-flight programma in vier delen: de piloot voert een missieplan in, het script meet vijf sensoren, loopt alle veiligheidschecks af en bepaalt een vliegmodus. Pas als alles klopt, stijgt de drone op. Daarna test je je eigen werk en schrijf je een testverslag.

invoervalidatie guards if / elif / else testen

Wat ga je maken?

Β±25 min

Een vliegclub laat leden zelf met de drone vliegen. Dat gaat af en toe mis: iemand stijgt op met een bijna lege accu, of geeft een afstand op waar de accu niet voor reikt. Jij schrijft het programma dat daartussen gaat zitten. Het bestand heet safe_takeoff.py en bestaat uit vier delen.

Deel A β€” Missieplan invoeren

Het script vraagt de piloot om drie dingen en controleert die meteen:

  • Zijn naam. Een lege naam is niet goed genoeg β€” dan weten we later niet wie er gevlogen heeft.
  • De afstand in centimeters die hij vooruit wil vliegen. Dat moet een geheel getal zijn van minimaal 20 en maximaal 500.
  • Een bevestiging. Alleen bij yes gaat de vlucht door. Of de piloot nu yes, YES of Yes typt, maakt niet uit.

Deel B β€” Meten

Het script leest vijf sensoren uit: de batterij, de hoogte, de temperatuur, de sterkte van het wifi-signaal en de vliegtijd die al op deze accu staat. Bij een slechte verbinding kan zo'n uitlezing mislukken; de waarde is dan None in plaats van een getal. Daar moet je script tegen kunnen.

Je wilt niet voor elke test een accu leegvliegen. Daarom bouw je een simulatiemodus: één constante bovenaan bepaalt of de waarden van de echte drone komen of uit testconstanten in je eigen bestand.

Deel C β€” Veiligheidschecks

De club heeft deze regels opgeschreven. Ze staan er bewust in gewone taal β€” welke vergelijking daarbij hoort, bepaal jij.

CheckDe regel van de club
MetingIs één van de vijf metingen mislukt, dan gaat de vlucht niet door. Een mislukte meting is geen 0 β€” het is helemaal geen waarde.
BatterijEen batterij van 20% of minder is te weinig. Precies 20 mag dus niet meer vliegen.
HoogteDe drone moet op de grond staan. Tot en met 5 cm rekenen we als "op de grond"; hoger betekent dat hij al hangt.
TemperatuurVanaf 60 Β°C is de drone te warm. Precies 60 is al te warm.
WifiHet signaal moet minstens 70 zijn. Daaronder is de verbinding te wankel.
VliegtijdEr mag niet meer dan 300 seconden op deze accu staan. Precies 300 mag nog net.
Warm Γ©n bijna leegEen drone van 45 Β°C of warmer die tegelijk 35% batterij of minder heeft, mag niet vliegen β€” ook niet als hij elke losse grens hierboven net haalt.
Let op die laatste regel. Die kijkt naar twee metingen tegelijk. Een drone met 50 Β°C en 30% batterij komt door alle checks erboven heen, en moet tΓ³ch geweigerd worden.

Deel D β€” Vliegmodus en opstijgen

Hoe voller de accu, hoe verder de drone mag. De batterijstand bepaalt de modus:

BatterijModusMaximale afstand
tot en met 35%ECO100 cm
meer dan 35% tot en met 70%NORMAL300 cm
meer dan 70%FULL500 cm

Vraagt de piloot een grotere afstand dan de modus toestaat, dan gaat de vlucht niet door. Daarna print het script een checklist met een βœ“ of βœ— per check, en pas dΓ‘n stijgt de drone op, vliegt hij de gevraagde afstand vooruit, landt en sluit de verbinding.

User stories

  • Als piloot wil ik mijn vlucht vooraf opgeven en bevestigen, zodat de drone nooit per ongeluk opstijgt.
  • Als piloot wil ik meteen horen als mijn invoer niet klopt, zodat ik die kan verbeteren in plaats van te raden.
  • Als piloot wil ik dat het script alle veiligheidschecks zelf doet, zodat ik geen kritieke waarde over het hoofd zie.
  • Als piloot wil ik in de foutmelding de gemeten waarde Γ©n de grens zien, zodat ik weet hoe ver ik ernaast zit.
  • Als piloot wil ik dat de toegestane afstand meegroeit met mijn accu, zodat ik niet halverwege zonder stroom val.
  • Als onderhoudsmonteur wil ik na afloop kunnen zien welke check de vlucht tegenhield, zodat ik weet welk onderdeel aandacht nodig heeft.

Planning maken

Maak een bestand project_plan.md met je planning. Beschrijf:

  • In welke stappen je dit project aanpakt, en in welke volgorde.
  • Hoe lang je per stap denkt nodig te hebben.
  • Waar je problemen verwacht, en wat je dan doet.
  • Welke bibliotheek en welke methoden je nodig hebt.

Dit bestand lever je in samen met je script. In het tabblad Ontwerpen komt er nog een onderdeel bij.

Wat hoort eruit te komen?

Vul waarden in en zie welke check als eerste hoort te stoppen. Gebruik dit om je eigen uitvoer mee te vergelijken β€” hier staat geen Python, alleen het gedrag dat je script moet vertonen.