Logboek+Maarten

= Logboek Maarten = toc

__Woesdag 12 oktober__
In de afgelopen dagen ben ik me wat verder gaan verdiepen in Urbi en wat de mogelijkheden zijn met dit systeem. Ik heb ondertussen ook een testvoorbeeld kunnen compileren voor een joystick. Een van de volgende dagen verwacht ik een joystick bij me in de bus en ga ik dit geheel koppelen aan de besturing van de drone.Het volgende dat op de todo lijst staat is het leren werken met urbiscript syntax. Verder ga ik ook onderzoek doen naar de performantie van urbi in combinatie met de drone.

__Vrijdag 14 oktober__
Vandaag heb ik met succes de firmware van de drone kunnen downgraden zodat de Urbi SDK nu optimaal kan werken met de drone. Zie hier voor de howto. Ook heb ik de drone een eenvoudige sequentie kunnen laten vliegen in urbi script: Opstijgen, rond zijn as draaien en dan weer landen.

__Woensdag 19 oktober__
Na langer wachten dan voorzien heb ik eindelijk een joystick in handen; de Thrustmaster T.Flight Hotas X. Ik heb vandaag ook een test GUI gemaakt in [|gostai lab] om de flight stick uit te testen en te mappen op de verschillende controle variabelen. Gostai lab werkt samen met de Urbi omgeving en kan Urbi script code koppelen aan grafische knoppen, sliders, pads etc... Gostai lab kan naast deze output ook de videostream afbeelden en variabelen uitlezen van sensoren. Je kan in dit lab eenvoudig een joystick toevoegen, calibreren en mappen. Een screenshot van de GUI:



Ik heb uiteraard ook een testvlucht gedaan om het gedrag van de drone te controleren wanneer deze bestuurt wordt met de flight stick. De besturing werkt verbazingwekkend goed. De vier controlerichtingen kan ik nu tegelijkertijd bedienen met (het belangrijkste van allemaal) __verfijnde__ besturing.

__Vrijdag 21 oktober__
Vandaag hebben we opnieuw gaan filmen in een boomgaard. Deze keer hebben we de filmpjes gemaakt terwijl de drone echt aan het vliegen was. De bediening gebeurde via joystick. Al snel hadden we door dat we een probleem hadden met de hoogtesensor. Dit is een gewone ultrasoon sensor die naar onderen staat gericht. Omwille van het wilde gras en hier en daar uitstekende takken aan de zijkant begon de drone te schudden alsof deze over een hobbelige weg reed. Veel erger nog was dat deze daardoor van zijn positie afweek en regelmatig in het struikgewas belandde of gewoon naar boven vloog, ver boven de bomen uit. Als we ooit een demo willen geven in een echte boomgaard moeten we hier duidelijk iets aan doen.

__Woensdag 26 oktober__
De afgelopen dagen heb ik gevonden hoe het regelsysteem van de drone in elkaar zit. Ik weet ook hoe waar ik de parameters van de regellussen kan aanpassen en wat ze juist voorstellen. Ik heb al een paar testen gedaan en heb de altitude controle volledig kunnen uitschakelen. Het grote probleem was echter dat ook de snelheid in de z richting (verticaal) volledig was uitgeschakeld wat als gevolg had dat de drone niet meer kon landen. Het volledig uitschakelen van de altitude control is uiteindelijk niet de bedoeling. Aan de hand van de parameters kan de regellus wat 'gemoedelijker' worden ingesteld zodat de drone minder agressief reageert op hoogteveranderingen van de ondergrond.

__Zaterdag 29 oktober__
Vandaag en gisteren heb ik het colormap C++ programma uit het ball tracking voorbeeld geanaliseerd om de globale opbouw van een UObject te bekijken. Aan de hand van dit voorbeeld en dankzij de Urbi documentatie heb ik me nu een globaal beeld kunnen vormen van het API gebeuren tussen Urbi script en een C++ UObject. Ik ga me nu verder verdiepen in het schrijven van UObjecten en ook een praktische voorbeeld schrijven. Op [|UrbiForge.org] heb ik ook source code gevonden van UObjecten die interfacen met openCV.

__Woensdag 2 november__
Een nieuwe mini mijlpaal is berijkt. Ik ben er in geslaagd om een UObject te compileren dat interfaced met opencv. Het gaat om een face detectie algoritme. Zo heb ik de drone een gezicht kunnen laten detecteren en hem dit gezicht laten volgen met de yaw as. De komende dagen ga ik Dries zijn ball tracking programma implementeren in een UObject en er vervolgens script code voor schrijven om de regellus in orde te krijgen.

__Vrijdag 4 november__
Begonnen met het implementeren van een stukje code van Dries dat als UObject gecompileert wordt. Ook werken we vanaf nu met SVN om onze code te beheren.

__Zaterdag 5 november__
Implementatie van stukje code afgewerkt en werkende gekregen. Na compilatie van het UObject kan het met behulp van opencv de video van de drone afbeelden in een imagewindow uit opencv. In de code van het UObject kan je nu variabelen aanspreken die toekgankelijk zijn in urbi script. Het Urbi script zal ahv deze variabelen de drone besturen. Het basis framewerk is gemaakt en getest. Nu zal het niet lang meer duren voor het ball tracking algoritme van Dries hier ook in zal werken.

__Vrijdag 11 november__
Heb wat geexperimenteerd met een aantal implementaties voor balltracking. Eerst maakten we gebruik van een algoritme dat op een threshold masker (nar erosie en dilatie) naar cirkelvormen zocht in het beeld. Het algoritme werkt uitstekend wanneer de bal in het zwart wit masker ongeveer rond is. Helaas zijn veel objecten blinkend en vertonen ze ook andere kleuren waardoor het resultaat vaak slecht wordt en er geen bal meer gedetecteerd wordt. Daarom heb ik eens geprobeert om met een andere techniek te werken die niet naar de ronde vorm zoekt, maar naar de grootst mogelijke "blob", willekeurig van vorm en ongevoelig voor "gaten" in een blob. Hiervoor heb ik een verticaal en een horizontaal projectie histogram berekend van het thresholded beeld, dat zoekt naar de maxima van de x en de y component (m.a.w. waar de meeste rode pixels zitten). Via een threshold wordt de minimum grootte van de bal bepaald.

__Zondag 12 november__
Vandaag heb ik het algoritme aangepast zodat de kleurvariabelen toegankelijk zijn in gostai lab. Dit werd hoog tijd. Zo kan je snel en eenvoudig alle kleurvariabelen aanpassen in real time. Heb voor het eerst ook de berekende balpositie kunnen terugsturen naar de drone en hem dus ook echt een bal laten volgen in x en y richting. De x richting werd vertaald naar de yaw as, de y richting naar de z as. Het regelcircuit is een eenvoudige P regelaar. Ik ben van plan om ook nog eens een experiment te gaan doen met het cirkeldetectie algoritme. Verder moet ik ook nog de implementatie aanpassen zodat de nieuwe positie van de bal pas aangenomen wordt wanneer deze niet verder dan een bepaalde threshold ligt van de vorige positie.

__Vrijdag 18 november__
Vandaag heb ik een filmpje gemaakt van de ARDrone en het balltracking algoritme dat ik zondag 12 november heb getest. Zie hier het resultaat: media type="youtube" key="3RDnIf9cHx8" height="315" width="420"

Het vervolg is terug te vinden in het logboek van het tweede semester: Logboek 2de semester