Tuesday, March 11, 2014

Embedded Systems Lesson 5

Date: 6/3 2014
Duration of activity: 3 timer
Group members participating:
Henrik Jørgensen
Michael Schiønning
William Thorsen

Mål

Målet med denne øvelsesgang er at gennemføre øvelserne til denne uges ugeseddel Communcation and Embedded Systems1

Plan

Planen for denne uge er:
  • Ombygge robotten til balanceøvelserne
  • Udarbejde ugens øvelser
  • Påbegynde blogindlæg  
Resultat af øvelser 

Opgave 1

I denne opgave har vi samlet vores robot efter Phillipe Hubains anvisning2 samt brugt Brian Bagnalls klasse Sejway.java3 til at få vores robot til at kunne balancere. Når det udleverede program startes skal robotten holdes i en oprejst balancerende tilstand. Når Enter trykkes endnu en gang afmåles og huskes det udgangspunkt robotten befinder sig i. Derefter kan den udregne størrelse af den fejl i de efterfølgende målinger og derefter hvor kraftigt den skal korrigere sin balance.


Opgave 2 

For lettere at kunne ændre på konstanterne når vi arbejder med balancering og PID fik vi sat en Bluetooth forbindelse op imellem vores NXT robot og en PC. Vi tog udgangspunkt i den udleverede klasse PCcarController.java4 og kunne ligeledes modificere klassen at styre vores parametere i robotten. Dette gøres ved først at justere de nødvendige text fields så vi har ki, kd, kp og scale. 



Ellers lå arbejdet i at ændre hvad rækkefølge output stream sender værdierne og selvfølgelig også sende de nytilføjede værdier, et eksempel er 

String kpText = kpField.getText();
float kpFloat = Float.parseFloat(kpText);
dos.writeFloat(kpFloat);
dos.flush();
Dette laver en string med hvad der er i tekstfeltet, parser det til en float (vi blev opfordret til at bruge floats)
derefter sende den nye floatværdi så vi kan flushe og gøre klar til næste.

Den endelige klasse kan ses her5

For at kunne kommunuikere med vores PCControllerBalance.java klasse tog vi den udleverede BTcontrolledCar.java og modificerede6 den til at inkludere en række handlers til at håndtere de PID-værdier vi sender via Bluetooth.

Denne BTcontrolledPID.java implementerede vi i den oprindelige Sejway.java6 klasse for så at kunne begynde vores balancejusteringer

Neden for ses vores balancerende robot efter de første PID justeringer er gjort via den trådløse forbindelse. Klippet blev optaget i et mørkt rum da det blev foreslået af Phillipe Hurbain, at et bedre resultat kunne opnås, hvis robotten tog sine målinger i et mørkt rum.





Opgave 3

Til den tredje opgave skulle vi prøve og erstatte lyssensoren med vores colour sensor fra sidste uge. Til at starte med satte vi colour sensoren på i samme højde som vores lyssensor, men ldet virkede som om, at sensoren først var i stand til at registrere noget før det var for sent og robotten var ved at vælte.

Da vi så flyttede sensoren tættere på jorden, lig med hvad vi gjorde de tidligere uger,  begyndte robotten at være i stand til at kunne balancere i meget kort tid. Vi erkendte derefter, at man højest sandsynligt skulle re-justere PID variablerne påny, da sensoren ikke reagerer helt på samme måde som lyssensoren. Da dette var sidst på dagen nåede vi ikke at justere særligt meget.

Opgave 4

Vi nåede ikke at tage hul på opgaven omkring brugen gyro-sensoren til at balancere med.

Konklusion 

I denne uge har vi arbejdet med, hvordan vi får vores NXT robot til at kunne balancere vha.  lys og farvesensoren. Endvidere har vi arbejdet med hvilke begrænsninger det medbringer. Skulle man følge Hurbains råd er det en nogle rimeligt specifikke krav der, muligtvis, skal opfyldes. F.eks. en ikke uniform overflade samt et mørkt rum osv. Vi har også lært, hvordan man etablerer en Bluetooth forbindelse mellem robot og PC, hvilket gør justeringer af en PID-controller uanmindeligt meget mindre molboagtigt. Vi har fået vores robot til at kunne balancere i en anelse længere  tid end den oprindeligt udleverede klasse, men ellers blev størstedelen af dagen brugt på at sætte Bluetooth-forbindelsen ordentligt op.



1 http://legolab.cs.au.dk/DigitalControl.dir/NXT/Lesson5.dir/Lesson.html
2 http://www.philohome.com/nxtway/nxtway.htm
3 http://legolab.cs.au.dk/DigitalControl.dir/NXT/Lesson5.dir/Sejway.java
4 http://legolab.cs.au.dk/DigitalControl.dir/NXT/Lesson5.dir/PCcarController.java
5 https://docs.google.com/file/d/0B2MYdpHIaaatTEd1MXhxYk15c0E/edit
6 https://drive.google.com/folderview?id=0B22Duz_kNMvWOG9kYUU1b3FaZzQ&usp=gmail#

No comments :

Post a Comment