[phpwiki] DagBoek

Maandag 22 juni:

 Vandaag zijn we begonnen onze plannen uit te denken voor de komende week. De
 doelstelling van dit kleine onderzoek is om een Aibo leren een schaakstuk op te
 pakken en deze van een willekeurige punt op het schaakbord (deze zal
 hoogstwaarschijnlijk van papier worden ivm de hoogte van een schaakbord) naar
 een andere punt op het bord te verplaatsen. Met deze doelstelling kan het
 probleem in twee delen opgesplitst worden:
 de Aibo zal een stuk moeten verplaatsen: dit kan dmv het stuk te verschuiven
 met een poot van de aibo, of door de Aibo het schaakstuk met zijn mond te
 grijpen en deze weer op locatie neer te zetten. De bewegingen om het stuk te
 verplaatsen zullen bedacht moeten worden.
 het pad plannen die de Aibo moet afleggen: omdat we nog geen ervaring hebben
 met computer vision zal de afstand tot de locatie van het schaakstuk en de
 afstand tot het doel berekend moeten worden vanuit een vast punt (het beginpunt
 van de Aibo).
 In de middag hebben we een introductie tot de software van de Aibo gekregen van
 Edwin. Hij heeft kort toegelicht hoe MEdit en AIBORemoteFramework werken.
 Om Lewy (onze Aibo) te leren kennen hebben we na de introductie de
 mogelijkheden van de Aibo verkent. Hiervoor moesten we eerst de orginele
 AIBOmind memorystick in de Aibo plaatsen. Op deze stick staat hoe de Aibo moet
 werken als entertainment hondje (zoals de Aibo bedoelt is dus). In deze modus
 kan de Aibo met kaartjes bediend worden die interne functies aan roepen.
 Zo zijn er functies voor het opzoeken van roze voorwerpen (misschien
 handig voor het laten herkennen van schaakstukken), het laten doen van een
 dansje, of de Aibo terug te laten keren naar z'n docking station (de oplader).
 Thuis hebben we alle 3 met MEdit verschillende motions gemaakt, waaronder
 DuwLinks en salto (salto is alleen in de simulator uitvoerbaar, want daar
 gelden de zwaartekracht wetten nog niet! Hier moet je altijd rekening mee
 houden).
 Hanne heeft vandaag meteen Wiki online gezet om zo snel mogelijk te kunnen
 documenteren met wat we aan het doen zijn.

Dinsdag 23 Juni:

 Na een helleklus van 2 uur voor het implementeren van onze eerste motion in de
 Aibo wordt onze moeite dan toch beloond. Nu weten we hoe Lewy zijn motions kan
 uitvoeren en gaan we verder met het samenstellen van een motion om een
 schaakstuk op te makken en weer neer te zetten.
 Met MEdit hebben we twee motions voor de Aibo uitgedacht: grab_piece en
 put_piece voor het pakken en wegzetten van een schaakstuk. Lewy pakt nu het
 schaakstuk succesvol op en zet deze ook weer goed weg (zie MovementFilmpjes).
 Het idee van het verschuiven van een schaakstuk hebben we laten vallen omdat de
 Aibo z'n pootjes zijn afgerond. De Aibo zou de stukken alleen kunnen
 verschuiven als hij er precies goed voor zou staan, maar door de afwijkingen
 die we hebben geconstateerd hebben we de moed opgegeven voor dit idee.
 Voor het maken en implementeren van een motion moet er het een en ander met
 diverse programma's gedaan worden.
 - Voor het maken van een motion gebruik je MEdit en sla je deze op als
   .kfm bestand.
 - Ook exporteer je je motion als een .mtn bestand
 - Bovendien maak je met MEdit een tekstbestandje (mwc.cfg) waarin je de
   motion een zogenoemd MWCID nummer geeft als identificatie
 - Met RTool maak je vervolgens een MWC en ODA aan de hand van je .mtn en .cfg
   bestand.
 Deze MWC en ODA kun je dan op de memorystick zetten en daarna is je motion aan
 te roepen met AIBORemoteFramework.
 Vandaag zijn we tegen het probleem aangelopen dat Lewy niet bepaald naukeurig
 beweegt. Dit kan heel vervelend worden als we hem naar een schaakstuk toe
 willen bewegen. We zijn nu aan het proberen Lewy beter en nauwkeuriger te laten
 bewegen.

Woensdag 24 Juni:

 Vanochtend zijn we aan de slag gegaan om een eigen, betere, strafe (zijwaards
 lopen) te maken. De strafe die er nu is loopt zijwaards, maar draait daarbij
 ook automatisch over een kleine hoek. Hierdoor kunnen we onmogelijk met genoeg
 precisie bij de schaakstukken komen.
 Wij hebben bedacht dat we gebruik kunnen maken van de mogelijkheid van Lewy om
 zijn benen naar binnen te bewegen (10 graden). Als we elk pootje, een voor een
 20 graden laten verschuiven moet hij langzaam zijwaards bewegen. Dit was
 makkelijker bedacht dan uitgevoerd, want wat de simulator (MEdit) niet laat
 zien is dat de Aibo omvalt zodra hij zijn achterpoten wil optillen. We dachten
 dat we dit op konden lossen door zijn hoofd in tegenovergestelde richting te
 bewegen, maar het gewicht van zijn hoofd weegt niet op tegen de achterkant van
 zijn lichaam (daar zit o.a. de accu). Uiteindelijk was de oplossing om hem door
 zijn voorpoten te laten zakken als hij zijn achterpoten gaat verplaatsen.
 hierdoor is er enigzins een evenwicht.
 Nu we weten hoe de bewegingen werken en nu we ook al zelf bewegingen hebben
 gemaakt die we nodig gaan hebben om Lewy schaakstukken te leren pakken gaan we
 aan de slag met het programma dat dit allemaal aan moet sturen.
 Dit programma kan gebasseerd worden op de source van AIBORemoteFramework.
 We hebben in de source gezocht naar bruikbare code voor het maken van een
 sequentie van motions, maar door een gebrek aan Visual C++ kennis zijn we hier
 nog niet ver mee gekomen.

Donderdag 25 Juni:

 Vanochtend hebben we eerst de strafe_left aangepast zodat de draaing die de
 Aibo z'n achterpoten maken wat meer opgevangen worden. Uit de test met
 strafe_left kwam uit dat de draaing die de achterpoten maken tov de voorpoten
 verkleind is en dat de afstand die de Aibo aflegt per strafe rond de 8 cm ligt.
 Aan de hand van strafe_left hebben we de strafe_right aangemaakt.
 Nu de strafe motions ook zijn aangemaakt (nog steeds met een kleine afwijking)
 kan de eerste test met het schaakbord uitgevoerd worden. De motions die
 gebruikt worden zijn: grab_piece, put_piece, strafe_left, strafe_right en de
 ingebouwde motion walk_forward. Deze motions zijn in feite genoeg om elke
 positie te bereiken op het bord.
 Als maatstaaf voor de lengte/breedte van 1 vlak nemen we 8 cm, zodat de Aibo in
 theorie na elke strafe de breedte van zo'n vlak heeft afgelegd. Het TestBord is
 3x3. Ook is er  nog sprake van remote control - elke beweging wordt aangestuurd
 vanaf de laptop.
 Tijdens het testen constateren we het volgende:
 - De Aibo strafed in 2 beweging naar rechts naar het schaakstuk en presteerde
   deze na enige bijsturing ook nog op te pakken vanuit de behaalde positie .
 - Na het oppaken van het stuk laten we de Aibo weer terug strafen (naar links
   dus), maar de afwijking is al te groot om het schaakstuk goed neer te zetten.
 - Conclusie: het probleem ligt dus bij de te grote afwijkingen na het maken van
   de motions. Een manier om dit te verhelpen is door de vlakken van het bord te
   verkleinen, of de motion zo aanpassen zodat de afwijking nog kleiner wordt,
   maar door tijdgebrek is dit hoogstwaarschijnlijk niet haalbaar.
 Halverwege de middag hebben we ons weer aangezet om in de bestanden van
 Aibo_Framework te zoeken naar een manier om een sequentie van motions te
 genereren. In het bestand contentsDlg.cpp is het mogelijk om dit te doen,
 maar met de kennis die wij hebben is het ons alleen gelukt de motions in een
 sequentie af te laten spelen. Het probleem zit 'm in het feit dat we niet weten
 hoe we in contentDlg.cpp de ingebouwde functie walk_forward kunnen aanroepen.
 Gelukkig heeft Mathijs ons uit de brand kunnen helpen doordat hij dit wel kon
 verwezenlijken.
 Nu is het mogelijk om in onze gemodificeerde AIBORemoteFramework in de
 dialogue box
 van contents in te voeren hoeveel stappen de Aibo naar links/rechts en/of naar
 voren moet doen. Hierbij is het wel het geval dat de Aibo vanuit zijn
 beginpositie het schaakstuk pakt en vervolgens weer neer zet na de stappen.
 De strafe motions zijn weer aangepast om de afwijkingen zo goed mogelijk op te
 vangen. De vlakken van het TestBord hebben we teruggebracht naar 6 bij 6 cm.
 De remote control is nog steeds aanwezig, maar nu hoeft de gebruiker alleen
 maar in te voeren hoeveel stappen de Aibo horizontaal en/of verticaal moet
 afleggen. Tijdens het testen constateren we het volgende:
 - de afwijking van het strafen is nog meer opgevangen door de aanpassingen in
   de motion.
 - de Aibo is in staat om het schaakstuk in het doel-vak van het bord te zetten,
   maar helaas staat het stuk zelden in het midden van het vak door de
   afwijkingen.
 - Conclusie: een bord met vlakken van 6 bij 6 is een stuk beter dan 8 bij 8,
   maar hoe dan ook blijft de onnauwkeurigheid van de manier waarop de Aibo
   beweegt, het grote probleem.

Conclusie:

 We zijn deze week begonnen met ambitieuze plannen waarvan we hoopten, maar
 niet hadden verwacht, dat we ze zouden behalen. Dit vermoeden was niet geheel
 onterecht, want we hebben helaas niet alles voor elkaar gekregen zoals we het
 wilden. Doordat wij als 1e-jaars AI-studenten nog geen kennis hebben over
 computer-vision en bovendien te weinig kennis over C++ hebben, is het
 bijvoorbeeld niet gelukt om de Aibo zelf het schaakstuk te laten opzoeken. We
 hebben moeten constateren dat met de afwijkingen die de Aibo heeft in zijn
 bewegingen, het niet mogelijk is om puur door de goede bewegingen te kiezen,
 het beestje zo voor het schaakstuk te zetten dat hij hem op kan pakken.
 Een goede conclusie over het onderzoek wat we deze week hebben verricht is
 eigenlijk nog niet te trekken, omdat wij na de laatste dag pas goed het gevoel
 hebben gekregen wat we met de Aibo in het AIBORemoteFramework kunnen doen.
 Het sturen en bewegen zijn in deze laatste week goed aan bod gekomen, we hopen
 in het volgende jaar ook met zoeken (computer vision) bezig te zijn zodat we
 de plannen die we aan het begin van deze week hadden alsnog kunnen uitvoeren.
 By Hanne Nijhuis,
 Jasper van  Turnhout en
 Nimrod  Raiman.

EditText of this page (last edited June 25, 2004) [info] [diff])
FindPage by browsing or searching