mandag den 25. januar 2010
Opsummering af projektet
onsdag den 20. januar 2010
The Final Countdown
mandag den 18. januar 2010
Intelligens gjort kunstig
fredag den 15. januar 2010
Forstyr ikke mine cirkler
Fremmødte
pepe og rfogh (10 - 17 )
Formål
Formålet med dagen er at rette op på en større mangel på tron biken: der er ikke nogen tush til at lave streger med.
Fremgangsmåde
Rfogh byggede efter nogen diskussion om placeringen en rig til at holde en whiteboard marker af mærket edding 360 fast bag på robotten. Imens gik det op for pepe ved en mini demonstration at robotten "døede" hvis underlaget var hvidt, en fejl i koden idet der var byttet om på om hvidt var en stor værdi eller lille. (Absolut genskin (hvidt) er maksimal værdi)
Pepe gik i gang med at undersøge hvor følsom lyssensoren er for streger.
Rfogh undersøgte rotationen, idet vi forsøger at gøre navigationen så grundlæggende og simpel som mulig, og da vi tidligere har haft dårlige erfaringer med navigatoren der følger med lejos, blev det besluttet at gennemføre forsøg til at bestemme den korrekte rotation for at opnå 90°.
Forsøg
Da Kim Steen kom forbi for at se hvad vi havde blev den ene robot sat til at køre rundt på gulvet i Zuse bygningen. Da den kørte ind på det hvide lærred til at følge en linje "døede" den. Dette blev fulgt op af forsøg på banen, der viste at robotten havde det bedst på den sorte linje, da dette er forkert blev det rettet.
Der blev lavet forsøg med at måle den reflekterede intensitet når robotterne kørte over forskellige streger. Dette blev gjort ved at lave flere streger efter hinanden af varierende kvalitet og herefter lade robotten køre hen over stregerne til den dør. Et helt rent whiteboard og en ny tush, enten i sort eller blå virker. Ved forsøg med en ældre tush, skulle der flere streger oven i hinanden til før robotten registrerede at den var kørt over stregen
Det var forholdsvis tydeligt at rotationen ikke var på 90° efter at have forsøgt med tush på. Efter beregninger ud fra de givne resultater blev der tilpasset ud fra empiriske forsøg. Resultatet kan ses i testvideoen og på billederne.
Forløsning
Det er lykkedes os at nå til første mål, nemlig at have to spillerstyrede robotter der kan konkurrere mod hinanden. Placeringen af tushen kunne muligvis have været mere optimal, men den virker og det er muligt for andre robotter at "se" stregen. Rotationen er endnu ikke helt korrekt, det interessante er at det som det kan ses er forskelligt for de to robotter, det er derfor muligt at der skal laves individuelle indstillinger for robotterne.
torsdag den 14. januar 2010
Hvad var det lige vi lavede igen?
Fremmødte
pepe og rfogh (9:00 - 16:00 )
Formål
Dagens øvelse går ud på at finde ud af hvor langt vi er kommet og følge op på det der er sket, samt udstikke retningslinjer for den fremtidige udvikling efter eksamenerne.
Forløb
Da dette var første arbejdsgang efter nytår og eksamenerne var det nødvendigt at starte med at se om det der er blevet lavet uden hardware også virkede. Det gjorde det naturligvis ikke, men efter lidt smårettelser kom det meste til at virke.
Pepe lagde ud med at sikre at den nye måde at starte python GUIen op på virkede. Det er nu muligt at starte op med enten navn eller adresse eller helt uden noget, hvis der ikke gives nogen indikation af hvad der skal forbindes til scannes området for bluetooth enheder og disse præsenteres for brugeren så denne kan vælge den NXT der skal forbindes til.
I forbindelse med debuggingen af denne funktionalitet blev der frisket op på hvordan koden var opbygget. Her var det især brugbart at kigge på det UML klassediagram der blev lavet mellem jul og nytår og som kan hentes på projektets hjemmeside på google code. (.dia version)
Rfogh startede med at sikre en ekstra NXT og opbygge en modstander robot. Dette gjorde ham i stand til at forbedre byggevejledningen der ligeledes kan findes på google code(samme sted som ovenstående link)
Efter frokost blev det besluttet at rfogh skulle lægge arbejdet i at gøre det muligt at vælge hvilken NXT man vil forbinde til, da det ikke er muligt at få NXTerne til at forbinde automatisk altid. Samtidig blev det besluttet at pepe gik i gang med at dokumentere dagens arbejde.
Forsøg
Dagens forsøg har hovedsagligt handlet om at få forbindelse til robotterne, så det er muligt at styre dem. Python GUIen blev testet, men sendte ikke idet bluetooth api'et ikke giver meddelelse om hvorvidt forbindelsen var vellykket eller ej. Da denne fejl blev rettet virkede kommunikationen, men robotten starter med at dø, hvorefter et nyt spil kan begynde.
Forsøget med at få forbindelse fra java var baseret på at bruge lejos' scan metode, denne gav lige som de andre forsøg med Java programmerne der følger med lejos kun den første NXT der er blevet forbundet til systemet. Da dette var rfoghs private NXT og denne ikke var til stede i dag, er det ikke lykkedes at lave en java GUI der kan forbinde til en vilkårlig NXT.
Forløsning
Vi er kommet i gang efter ferien og har påbegyndt opbygningen af systemet. Da Python implementeringen af styre programmet virker og Java versionen af samme ikke gør vil vi, med mindre rfogh finder en løsning inden næste gang (i morgen kl.9, planlagt), holde os til Python GUIen.
tirsdag den 29. december 2009
Den interne konkurrence
Forbrugt tid
Tirsdag d. 29/12 - 2009 fra kl. 9.30 til 17.30
Fremmødte
pepe og rfogh
Formål
Formålet med i dag er at lave en GUI der kan bruges i spillet, og som kan forbinde via bluetooth.
Fremgangsmåde
Pepe havde tidligere lavet et proof of concept program i Python for at vise det var muligt at sende beskeder til nxt bricken fra python.
Rfogh mente det bedste ville være hvis GUIen kunne være i Java, noget pepe ikke var enig i.
Dagen gik derfor med en lille konkurrence: hvilket programmeringssprog er bedst?
Efter en hel del konkurrence hvor pepe først fik forbindelse og data og rfogh først fik piletasterne til at fungere endte vi med to programmer: et i python og et i Java der til forveksling er ens.
synergieffetkten i dette var at programmet på NXT blokken efterhånden fik en ret god struktur, og er ganske gennemtestet.
Protokollen for transmission til klodsen er baseret på enkeltkarakterer og er som følger:Karakter Betydning s Start l Drej til venstre r Drej til højre q afslut
Denne protokol er tilstrækkelig til at styre biken, men ikke nok til at sende meddelelser om hvorvidt biken er "død" eller "vinder".
Af yderligere synergieffekter kan nævnes at vi nu har et ant script der kompilerer og uploader hele projektet, samt starter Java Guien.
torsdag den 17. december 2009
Lego inde - sne ude
Forbrugt tid
Torsdag d. 17/12 - 2009 fra 10 til 13
Fremmødte
pepe og rfogh
Formål
Kom videre med projektet
Forløb
Kodemæssigt blev der tilføjet to nye klasser: WallDetector og Bumper.
Begge klasser bruges til at finde ud af hvornår robotten skal spille død, bumper for at mærke om robotten støder ind i noget, og WallDetector for at se om den er kørt ind over en andens streg.
Sammen med Driver og Player klasserne, danner disse to grundlag for basisrobotten, det der kommer herovenpå er enten en menneske drevet klasse eller en robot drevet klasse.
Konstruktionsmæssigt er robotten blevet udbygget, og blevet dokumenteret i Legos "Lego Digital Designer".
Al begyndelse er svær
Fremmødte
pepe og rfogh
Forbrugt tid
Fredag d. 11/12 fra kl. 9 til 15
Formål
Formålet med dagens arbejde er at få påbegyndt konstruktionen af Lego robotterne, både i hard- og software.
Fremgangsmåde
rfogh anbefalede at vi oprettede et google code projekt, dette har vi således gjort. Det ligger på http://code.google.com/p/tronxt/, dette har den fordel at der er svn, så vi begge kan kode på projektet.
pepe, der jo er ingeniøren gik i gang med at kode og rfogh der jo er datalog gik i gang med at konstruere.
Fremgangsmåden blev valgt til at være en "bottoms up" metode således blev der dannet et grundlag af kode Driver klassen, og et grundlag af robot, spillerens robot.
Det dannede kode kan ses på google code siden og robotten kan ses til demonstrationen.
Forløsning
Robotterne blev påbegyndt og kodegrundlaget blev dannet.
fredag den 4. december 2009
Major Tom to Ground Control
Fremmødte
Paul M. Bendixen (pepe)
Rune L. Fogh (rfogh)
Forbrugt tid
Fredag d. 4 December fra ca. kl. 9 til 16
Formål
Få hul igennem til NXT klodsen, så det er muligt at styre den fra en pc
Forløb
Fremgangsmåden var ca. den samme som dagen før, prøve sig frem og læse diverse tutorials på nettet.
Følgende blev der fundet ud af:
Det er nemt at forbinde NXTen til en mobiltelefon. Pepe aktiverede bluetooth, og initierede Bluetooth forbindelsen fra NXT klodsen, efter indtastning af koden var de to enheder tilsluttede.
Det er muligt at lave en forbindelse mellem to computere og pinge dem ved hjælp af programmet l2ping.
Da man skal bruge adressen til klodsen ret meget kan det være fordelagtigt at gemme den i en variabel, i vores tilfælde export Odin=00:16:53:04:00:1C
Når lejos er sat op bunder det hele i om bluez er sat ordentligt op (idet vi begge bruger linux)
Forsøg
For at få forbindelse blev det forsøgt som før bare at bruge nxj -r -b Program og som før fejlede dette også (se On the nigttrain posten)
I en guide til at få gang i bluetooth kommunikation på gentoo fandtes stort set hele opsætningen. Desværre fejlede det her at få lavet en l2ping til klodsen, i beskrivelsen.
For at få forbindelse mellem enhederne er det nødvendigt at bruge hcitool cc $Odin, dette giver dog desværre også en fejl.
Der er i den førnævnte guide beskrevet at bluez 3.x ikke længere bruger en pin_helper setting, dette er cluet til at få forbindelse.
I en bugreport fandt pepe ud af at den passkey-agent der normalt følger med bluez-util skal installeres seperat (ved hjælp af test-programs flaget i gentoo)
Dette program blev efter installation opstartet og der blev igen forsøgt at oprette forbindelse fra NXTen, dette lykkedes heller ikke, hele validerings proceduren forløb fint, men NXT klodsen gav fejlmeddelesen UNSUCCESFULL når det var afsluttet.
Dog kunne passkey-agent programmet fremvise at den MAC adresse NXT klodsen har, bad om at forbinde.
Efter et kig på /var/log/syslog gik det op for pepe at passkey-agent afmelder sig når det lukkes, derfor må det skulle køre når man forsøger at oprette forbindelse.
Fremgangsmåden er altså:
- Start bluetooth devicet (/etc/init.d/bluetooth start)
- start passkey-agenten (passkey-agent --default XXXX hvor XXXX er koden)
- start forbindelsen med hcitool (hcitool cc $Odin)
- anvend NXJ programpakken som normalt (nxj -b -d $Odin Program)
For at bekræfte at forbindelsen fungerer som den skal blev sample programmet BTRecieve lagt på NXTen og BTSend blev kørt på computeren.
Dette gav en farligt masse data, hvilket også er formålet. Det er dog stadig ikke lykkedes at få hul igennem ved at bruge nxjbrowse eller nxjcontrol.
Forløsning
For en gangs skyld er forløsning det helt rigtige ord: Vi har fået hul igennem og ved at finde ud af hvordan systemet virker, fået lavet en grundig beskrivelse.
Vi mangler dog stadig at få hul igennem på rfoghs maskine, der har haft problemer med at anvende bluecove biblioteket. Desuden er det endnu ikke lykkedes for rfogh at få hul igennem med de grafiske værktøjer han benytter.
torsdag den 3. december 2009
Ground Control to Major Tom
Fremmødte:
Pepe og rfogh
Varighed: 2 timer
Formål:
Vi skal have bluetooth til at virke, så vi kan styre vores NXT fra computeren, mobilen eller lignende.
Fremgangsmåde:
Vi trawler nettet for mulige løsninger, tutorials og eksempelkode, der kan hjælpe os på vej.
Forsøg:
Vi har tidligere brugt rigtig mange forsøg på at få det til at virke, og også denne gang har vi forsøgt meget.
Forløsning:
Der kom ingen forløsning i denne omgang. Vi vender stærkt tilbage i morgen!
fredag den 20. november 2009
The end of time, part one
Tid
Fredag d. 20 /11 2009 2 timer
Torsdag d. 26/11 2009 4 timer
Her
Pepe og Rfogh
Emne
Dagens opgave er at finde ud af hvilket projekt der skal arbejdes med i resten af kurset.
Emneforslag
Lav en robot med en reptilhjerne. Den skal være i stand til at klare sig i et ukendt miljø og finde vej uden om forhindringer. Derudover skal den være udstyret med evnen til at finde ud af om den skal, når den har fundet noget:
- flygte
- spise det
- parre sig med det
For at kunne finde rundt i omgivelserne skal der laves afstands sensorer, der skal kunne flyttes så de afgør størrelsen og beskaffenheden af objekterne.
Denne model vil også kunne benytte de subsumption og lignende teknikker vi har arbejdet med tidligere.
Pinball Flipper er sjovt, og lego er sjovt. Udfordringen i dette projekt er at lave nok sensorer til at det bliver sjovt, hertil kunne man bruge en I2C til parallelport kreds, på denne måde kan der skaffes 7x8 ekstra tryksensorer, nogle af disse kunne eventuelt bruges til bumpers.
Tron I 1982 udgav Disney en film om en programmør der bliver suget ind i en computer og skal kæmpe mod det onde "master control program", en af de mest berømte dele af filmen er lightcycle ræsene. Formålet med dette projekt er at lave to typer robotter, en spiller og en (eller flere) modstandere. Lightcyclerne kører rundt på et underlag der kan tegnes på og trækker en sort (eller anden farvet) tushpen efter sig. Hvis en lightcycle krydser en streg går de i stykker (står stille) Det er kun muligt at bevæge sig i 90 graders vinkler, robotterne skal derfor være med lavt tyngdepunkt og bygget til at dreje skarpt på stedet.
Nomineringen
Ud fra et ønske om at projektet skal være sjovt både for os og andre og lærerigt har vi valgt at arbejde videre på Tron.
