Donderdag

Post date: 25-Jun-2009 13:04:32

Vandaag proberen we de robotarm te laten bewegen om onze blokjes op te pakken.

Terwijl de webcamserver plaatjes staat op te slaan, krijgt Matlab het startsignaal om zijn berekening te starten. Matlab tekent de posities op de afbeelding en toont het resultaat ter controle. De gevonden posities en hoeken worden naar een bestand geschreven. Dat bestand wordt weer door ons Java programma genaamd BlockFit geopend die de pixel-coordinaten omrekent naar wereldcoordinaten waar de robotarm mee kan werken. Dit blijkt een van de lastigste dingen te zijn, al was het alleen al omdat het lastig is de webcam boven de juiste locatie vast te zetten. De webcam moet recht boven het midden staan, zonder hoek, om geen vervormd beeld te krijgen. Gewapend met tape en een bezem hangen we de webcam min of meer stabiel op. Vervolgens vullen we de x, y positie van de linker bovenhoek in, samen met de pixelratio, dus het aantal pixels per milimeter. Daarnaast moet het Java programma weten hoe hoog de blokjes en het gatenblok zijn, want dat kan je met de webcam van bovenaf niet zien.

Een mogelijk alternatief voor het precies recht op moeten hangen is een aantal ijkpunten op een vaste plek in het veld te leggen (bijvoorbeeld vier kralen), en daarmee de afbeelding naar de juiste rechte afbeelding te transformeren. Omdat we nog geen computervision hebben gehad, zou het te veel tijd kosten om uit te zoeken hoe deze transformaties zouden moeten werken, waardoor we het houden op prutsen met een lineaal.

De eerder geschreven Javamodule IK (inverse kinematics) wordt uitgebreid zodat de gripper om zijn as kan draaien en dus de blokjes onder de juiste hoek op kan pakken. Hieruit rolt het bestand met de joints, waarmee de robot aan het werk kan gaan.

Bij het testen met de robotarm op donderdag avond blijken een aantal dingen nog niet helemaal te kloppen. Ten eerste klopte de hoek van het oppakken niet. Dit komt omdat 0 graden in matlab voor de gripper -90 graden is, dus na het optellen van 90 graden bij de hoek blijkt de hoek bij het oppakken te kloppen. De robot verplaatst de blokken vervolgens helaas naar een hele andere plek dan de bedoeling is. Er is dus ergens een gedachtefout gemaakt in BlockFit, dat de x, y, z positions omzet naar de hoeken oftewel joint values. Tijdens inspectie van de code later op de avond blijkt er ergens een y te staan waar een x hoort te staan. Er is alleen geen tijd meer om te testen, dus dat wordt spannend morgenochtend..