Sprint 3 Β· Herhaling, lists & video  Β·  Project  Β·  Β±4 uur  Β·  Individueel

Project: Vluchtplan + videostream

Je bouwt een fotorondje: de drone vliegt een vast vierkant, maakt op elke hoek een reeks beelden, bewaart alleen de bruikbare, en stopt op tijd als de accu opraakt. Na de landing maakt je script een kwaliteitsrapport. Daarna test je je eigen werk en schrijf je een testverslag.

for & range break & continue lijsten videostream testen

Wat ga je maken?

Β±25 min

De vliegclub wil de clubruimte laten inspecteren: in elke hoek wil het bestuur een paar goede foto's. Met de hand is dat veel werk, en de helft van de foto's is te donker of mislukt. Jij schrijft photo_patrol.py: een script dat een vast rondje vliegt, zelf de bruikbare beelden uitkiest en na afloop rapporteert hoe het ging.

Deel A β€” Het vluchtplan

De drone vliegt een vierkant: vier keer 150 cm vooruit en een kwartslag (90Β°) naar rechts draaien. Aan het eind van elke zijde staat hij op een hoek. VΓ³Γ³r het opstijgen gelden twee regels uit sprint 2:

  • De batterij is minstens 50%. Precies 50 mag nog.
  • De temperatuur is onder 60 Β°C. Precies 60 is al te warm.

Deel B β€” Beelden per hoek

De videostream staat de hele vlucht aan. Op elke hoek pakt het script 5 frames. Een frame kan leeg zijn (None) β€” dat is een mislukt frame: niet bewaren, wel meetellen in het rapport. Van elk goed frame bepaalt het script de helderheid: het gemiddelde van alle pixels, een getal van 0 (zwart) tot 255 (wit).

Deel C β€” Kiezen en bewaren

HelderheidWat doet het script?
lager dan 40Te donker β€” niet bewaren.
40 tot en met 220Bruikbaar β€” opslaan als PNG in de map inspection.
hoger dan 220Overbelicht β€” niet bewaren.

Een bewaard frame krijgt een naam als corner2_frame007.png: het nummer van de hoek, en een framenummer met drie cijfers. Het framenummer telt alle frames van de vlucht mee, ook de weggegooide β€” zo zie je aan de naam wanneer het beeld gemaakt is. De eerste hoek levert dus frame 1 t/m 5, de tweede frame 6 t/m 10, enzovoort.

Deel D β€” Noodstop

Na elke hoek meet het script de batterij. Is die lager dan 25%, dan vliegt de drone niet verder: hij landt meteen, en het rapport gaat over de hoeken die wΓ©l gedaan zijn.

Deel E β€” Het rapport

Na de landing print het script:

  • hoeveel frames er bewaard zijn, en hoeveel er te donker, overbelicht of mislukt waren;
  • de laagste, de hoogste en de gemiddelde helderheid van de bewaarde frames (gemiddelde met één cijfer achter de komma);
  • het beste frame: het bewaarde frame waarvan de helderheid het dichtst bij 128 ligt (bij gelijke afstand: het eerste);
  • per hoek hoeveel frames bruikbaar waren, met een waarschuwing bij een hoek zonder één bruikbaar beeld;
  • de namen van de laatste drie bewaarde frames.
Let op het randgeval. Als er geen enkel frame bewaard is, bestaat er geen laagste, hoogste of gemiddelde helderheid. Je rapport moet dan iets zinnigs zeggen β€” en zeker niet crashen.

User stories

  • Als bestuurslid wil ik per hoek van de ruimte een paar bruikbare foto's, zodat ik de staat van de ruimte kan beoordelen zonder er zelf rond te lopen.
  • Als bestuurslid wil ik geen zwarte of overbelichte foto's in de map, zodat ik niet zelf hoef te zoeken naar de goede.
  • Als piloot wil ik dat de drone niet opstijgt met een halflege of te warme accu, zodat hij het rondje zeker afmaakt.
  • Als piloot wil ik dat de drone landt zodra de accu te leeg raakt, zodat hij nooit ergens in een hoek uit de lucht valt.
  • Als bestuurslid wil ik aan de bestandsnaam zien in welke hoek en wanneer een foto gemaakt is, zodat ik de foto's makkelijk terugvind.
  • Als piloot wil ik na de vlucht een kort rapport, zodat ik weet of ik een hoek opnieuw moet fotograferen.

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 drone-methodes en welke cv2-functies 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 je testwaarden in en zie wat je script hoort te doen: welke frames bewaard worden, waar een noodstop valt, en wat er in het rapport komt. Hier staat geen Python β€” alleen het gedrag dat je script moet vertonen.