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.
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.
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 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).
| Helderheid | Wat doet het script? |
|---|---|
| lager dan 40 | Te donker β niet bewaren. |
| 40 tot en met 220 | Bruikbaar β opslaan als PNG in de map inspection. |
| hoger dan 220 | Overbelicht β 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.
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.
Na de landing print het script:
Maak een bestand project_plan.md met je planning. Beschrijf:
cv2-functies je nodig hebt.Dit bestand lever je in samen met je script. In het tabblad Ontwerpen komt er nog een onderdeel bij.
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.