RESULTAT
Vi har jobbat med den golfspelande roboten under vårterminen och lagt
ner ca 200 timmar var. Hur gick det då? Jo, det har gått bra och vi är
nöjda med resultatet. Alla krav ett och krav två är uppfyllda, förutom
ett krav två som hade med modellen att göra.
Tidigt i projektet delade vi in den tekniska delen i tre mindre enheter
som alla kunde utvecklas parallellt. De var robotstyrning, grafiskt
gränssnitt och modellering av bana och boll. Resurser och milstolpar
avsattes till dessa tre grupper. Under hela projektes gång har vi varit noga
med att rapportera vad som hänt i de olika grupperna så att alla var medvetna
om projektets status.
Modellen används för att räkna ut hur bollen kommer rulla över banan
vid ett slag och för att ta fram den hastighet som ger störst
sannolikhet för att bollen ska träffa hålet för en given utslagsvinkel.
För att klara detta har vi tagit fram två modeller. En modell av
golfbanan, baserad på mätningar av den verkliga banan, samt en modell
som beskriver hur bollen rör sig utifrån fysikaliska samband.
Tyvärr lyckades vi inte få modellen över hur bollen rullar att bli
så exakt för alla slag att vi utifrån den kunde räkna ut vilken
hastighet som bollen skulle träffa hålet för. Därför har vi även
konstruerat en tabell med statistik över hur ofta bollen träffar hålet
för olika vinklar och hastigheter. För en given vinkel söks tabellen
igenom och den hastighet som ger störst sannolikhet att träffa hålet
tas ut och skickas vidare till roboten.
Modellen av golfbanan, den fysikaliska modellen av hur bollen rör sig
och tabellen är samtliga implementerade i Matlab.
Det grafiska gränssnittet har tagits fram med hjälp av verktyget Guide
i Matlab. Vårt mål med gränssnittet var att det skulle vara lätt att
använda och att användaren inte ska behöva några förkunskaper för att
spela golf med Marvin.
När användaren startar programmet möts han av en startsida (se figur). Där väljs
vilken av moderna som ska användas.
Tre moder skapades för att programmet ska kunna användas vid olika
tillställningar. I spelmoden (se figur) väljer användaren den vinkel och hastighet
som Marvin ska slå med. Det visar sig vara rätt svårt att slå bollen i
hål när användaren själv ska uppskatta dessa parametrar. I uppvisningsmoden
anger användaren en vinkel och Marvin räknar vilken hastighet som sätter
bollen i hålet. Slutligen finns en tävlingsmod, där en spelare kan utmana Marvin
i bäst av sex slag. Spelaren använder egen klubba och man slår varannat slag.
Startsidan.
|
Spelmoden.
|
Robotgruppens första uppgift var att lära sig hur roboten
fungerar och hur den programmeras. Det lärde de sig
genom en kurs som hölls av doktoranderna på ISY.
Det första problemet som robotgruppen ställdes inför var att
försöka utforma en så effektiv sving som möjligt för
Marvin. Till en början hade vi en väldigt teoretisk
synvinkel på problemet, det vill säga vi ville
försöka beräkna den svingbana som kunde ge den
teoretiskt högsta hastigheten. Det visade sig dock
att det inte fanns tillräckligt mycket dokumentation
tillgänglig, så vi kunde inte få tag på den data som
berättade vad det är som begränsar robotens
rörelsehastighet. Vi var därför tvungna att istället
prova oss fram till en sving som gav ett bra resultat.
Efter att testa många olika svingar fann vi till
sist en svingbana som vi var nöjda med. Efter detta
började vi med att utforma lite andra små procedurer
så som att söka av banan, hämta bollen och placera
ut bollen.
Därefter var nästa utmaning att få kommunikationen
mellan robotprogrammet i RAPID och Matlab att
fungera. Vi kom fram till en lösning som fungerade
så att Matlab skriver den data som ska till roboten
i en speciell textfil och läser sedan av resultat i
en annan textfil som roboten har skrivit till.
Kommunikationen synkroniseras med hjälp av handskakning.
Intresserade hänvisas till den tekniska dokumentationen för
en mer detaljerad beskrivning.