torsdag den 15. januar 2009

lab 1

Hvornår: Torsdag d. 15/1
Hvem: Peter, Michael, Asger
Varighed: 8 Timer

Mål




  • Få ARToolKit til at compile og snakke med Java

  • Undersøg bluetooth mellem java på en pc og NXT'en

  • Bygge en robot, som kan køre med bolden og bære fastsiddende tags



ARTooKit



ARToolKit er
et open source projekt der kan finde "tags" i et billede fra webcams,
og udregne deres transformationsmatrix. Vi vil bruge dette til at
finde placeringen af vores NXT'er og bold på vores bane.

ARToolKit er skrevet i C, så for at få det til at kommunikere med
java, har vi lavet et C program der sender informationerne fra
ARToolKit over en UDP socket til et java program, der behandler
informationerne og kommunikere med NXT'erne.


Her ses ARToolKit, der har fundet 4 tags.

Når ARToolKit ser et tag, rapportere den tilbage med et id og en
matrix, der repræsenter transformationen fra tagget hen til
kameraet. Vi pakker informationerne til en streng, hvor hver komponent
i matrixen er efterfulgt af et ";".

Fx.

d;3;0.992832;-0.057238;-0.104917;0.000000;
-0.095224;-0.909338;-0.405015;0.000000;
-0.072223;0.412102;-0.908271;0.000000;
36.001337;-493.343131;1330.260070;1.000000


d'et bruges til at skelne mellem om vi sender data eller andre
informationer (vi har dog ikke andre typer beskeder endnu). Derefter
kommer taggets id (3 i dette tilfælde) efterfulgt af
transformationsmatricen.

På java siden af systemet arbejder vi videre med matricerne vh.a. java
biblioteket Jama
- et java bibliotek til at arbejde med matricer.

BlueTooth



Vi ønsker at sende oplysninger om position og rotation fra en computer
til NXT'er. En oplagt måde at gøre dette på er ved at bruge
bluetooth. Da vi antager at vi allerede har positioner og rotationer
fra AR-toolkit er det oplagt at betragte Bluetooth som en abstrakt
kommunikationskanal, hvor vi kan sende og modtage data over.

Det viser sig at lejos både har Bluetooth support til NXT og
computere, endvidere viser det sig at de bruger bluecove til computer
delen. Bluecove er et opensource og crossplatform bibliotek, så vi kan
derfor nøjes med at bruge et bibliotek selvom vi bruger forskellige
platforme.

Bluetooth kan agere master og slave, hvis NXT'erne er slave enheder og
computeren er master, så er der ingen problemer i at lave forbindelser
fra computeren til flere NXT'er.

Til næste labsessions er målet at skrive noget kode der kan sende
positioner fra computeren til NXT'erne.

Bygge robotten



Et godt udgangspunkt at tage inden vi kodede til en lego robot, var at
bygge den først. Vi satte os derfor ned og kiggede på hvad der skulle
til for at få en robot, som kunne spille fodbold.

Vi kom frem til at roboten kun krævede 2 actuators, nemlig motorer
til styring. Begrundelsen er at vi ville have robotterne til at køre
med lav hastighed, og et spark til bolden ville så foregå ved at
robotten accelererede op til en høj hastighed med bolden, og slap den
ved at vende tilbage til normal "løbe" hastighed.

Robotten skulle ikke have nogle påmonterede sensore, da den fik alt
sit data omkring miljøet via bluetooth.

Baseret på dette valgte vi at bygge standard robotten og foran på
denne placerede vi en "arm" eller boldholder til at holde bolden
nogenlunde på plads når robotten kørte fremad. Ovenpå placerede vi en
holder til kamera-tagget og og puttede noget hæftemasse
(a.k.a. elefantsnot) på, så tagget blev siddende.

Nedenstående billeder skulle vise designet ganske godt.






Endvidere
kan Legodart.lxf
åbnes i Lego Digital Designer, der
bl.a. kan genere en byggevejledning.

Konklusion



ARTooKit



Det lykkedes at sende matricerne fra ARToolKit til java, og oprette en
tilsvarende matrice i Jama format. Næste gang skal vi forsøge at få
noget nyttigt ud af disse.



Bygge robotten



Lego robotten kan fint køre med vores bold, en omvendt dyb plastik
tallerken, pga armen foran. Og tagget ovenpå robotten sidder fast,
også når robotterne kører ind i hinanden, og kan trackes at
kameraet. Vi ser derfor vores robot design som en succes indenfor de
kriterier vi stillede under mål

Ingen kommentarer: