Date: 28/2 2014
Duration of activity: 9.15-15.00
Group members participating: Pætur, Christian og Søren
Goal: At gennemføre ugens opgaver [2].
Plan: Gå opgaverne sekventielt igennem.
Results: Vi har gennemført alle opgaverne.
Black White Detection
First, you should mount the sensor on the LEGO 9797 car as described in LEGO Mindstorms Education NXT Base Set 9797 building instruction page 32 to page 34. Second, make a program that use and test the class BlackWhiteSensor.java. After calibration, place the car with the light sensor over different dark and bright areas and investigate how well the BlackWhiteSensor works.
Vi kalibrerede programmet på en hvid og en sort overflade, herefter placerede vi bilen over forskellige farvede overflader. Vi fandt ud af at rød og gul blev detekteret til at være hvid, mens grøn og blå blev detekteret til at være sort.
Line Follower with Calibration
As an application of the BlackWhiteSensor try the program LineFollowerCal.java. The program uses the simple class Car.java to move the car.
Programmet virkede OK men ikke optimalt. Programmet ser grøn som sort da vi kørte bilen på den ovale bane.
Billede af bilen påmonteret lyssensor samt mikrofoner fra sidste uges øvelser
ThreeColorSensor with Calibration
Use the idea and structure of the BlackWhiteSensor to program a class ThreeColorSensor that can detect three colors: black, green and white. Make a test program that investigate the usefulness of the class.
Vi lavede klassen ThreeColorSensor ved at have to thresholds i stedet for ét:
- blackGreenThreshold
- whiteGreenThreshold
Vi lavede et simpelt testprogram og målte på grønne, sorte og hvide værdier omkring i labbet og erfarede, at ThreeColorSensor er god til at skelne sort, hvid og grøn.
Line Follower that stops in a Goal Zone
Use the ThreeColorSensor to make a line follower that stops in a green goal zone.
Vi gjorde dette ved at modificere LineFollowerCal programmet til også kigge efter den grønne farve som stop condidtion: car.stop(). Vi fandt dog at bilen stoppede af og til når den kørte på den sorte/hvide linje fordi den bare fik 1 måling med grøn. Derfor valgte vi at lave en counter, så det først er når lyssensoren har målt 10 grønne målinger i træk, at bilen stopper:
Dette bevirkede, at bilen kunne køre et gennemløb af banen uden at stoppe undervejs. Dog havde bilen af og til problemer med at komme rundt om hjørnerne.
PID Line Follower
It is possible to make a line follower with just one light sensor that follows the line more smoothly and drive faster if a PID regulator is used, [1]. Try this.
Det var muligt at implementere en PID line follower, så bilen kørte rundt på banen uden at oscillere lige så meget, som den gjorde inden PID blev implementeret. Dog var det ikke let at finde gode værdier for kP, som er den konstant den fejlen bliver ganget med.
På et tidspunkt kørte bilen meget præcist rundt, men da vi ville finjustere eller rette noget begyndte bilen at opføre sig mærkeligt, den begyndte nemlig at bakke, selvom det ifølge koden ikke burde være muligt. Efter lang tids forsøgt fejlfinding, gik vi tilbage til det program, som fungerer næsten til UG, men det opførte sig stadig på uforklarlig vis mærkeligt.
Color Sensor
In the LEGO Mindstorms series there is also a color sensor. Use the test program ColorSensorSensor.java to investigate the information that the class ColorSensor provide in Full mode. Place the color sensor over black, white and green to figure out if the information provided can be used to distinguish the three colors.
Vi afprøvde programmet og erfarede at farvesensoren godt kunne detektere farverne rød, gul, grøn, blå, hvid og sort, når vi satte farvesensoren over legoklodser.
Is it possible to use the color sensor for both following the black line and stop in the goal zone?
Vi brugte den samme metode i vi gjorde i opgaven ThreeColorSensor, hvor if-sætninger blev ændret til det nedenstående kodeafsnit, og det fungerede. Vi oplevede dog at mørkegrøn blev opfattet som sort, så bilen stoppede først, når den nåede det lysegrønne felt.
Code-snippet fra LineFollower med stop på grønt felt
Bane hvor vi testede ColorSensor testeren. Den mørkegrønne farve i bunden af billedet blev opfattet som sort, hvorfor det kun var på den lysegrønne farve i baggrunden som bilen stoppede på.
Conclusion:
Vi kom igennem alle ugens opgaver med et tilfredsstillende resultat. Dog havde vi problemer med at få PID controlleren til at køre uden at oscillere, hvilket ville kræve en del mere optimering.
Vi har efter ugens opgaver fået et større indblik i, hvordan en PID controller virker.
References:
[1] PID Controller http://www.inpharmix.com/jps/PID_Controller_For_Lego_Mindstorms_Robots.html
[2] Opgaveformulering http://legolab.cs.au.dk/DigitalControl.dir/NXT/Lesson4.dir/Lesson.html