Date: 14 + 18. februar 2014
Duration of activity: 9.15-16.00 + 9.15-14.00
Group members participating: Christian Hansen, Pætur Askildsen, Søren Gregersen
Goal: At gennemføre ugens opgaver.
Plan: Gå opgaverne sekventielt igennem.
Results: Vi har gennemført alle opgaverne.
Uge 3 - Lesson 2
Exercise 1
Place the car in front of different objects at different distances and compare the distance with the readings from the sensor. Til opgave 1, 2 og 3 brugte vi SonicSensorTest programmet som var stillet til rådighed.
Fysisk måling
|
Måling på NXT
|
Forskel
|
9 cm
|
14 cm
|
5 cm
|
15 cm
|
21 cm
|
6 cm
|
20 cm
|
24 cm
|
4 cm
|
30 cm
|
33 cm
|
3 cm
|
40 cm
|
42 cm
|
2 cm
|
50 cm
|
52 cm
|
2 cm
|
Exercise 2
The test program was compiled and uploaded with leJOS NXJ version alfa_03 as indicated in the comment to the program. Because of a known limitation of alfa_03 there is a 300 msec sample interval between readings of the distance. This limitation is no longer in the README list so try different values of the sample interval e.g. very small values.
Ved samplerate på 10 msec.
Fysisk måling
|
Måling på NXT
|
Forskel
|
9 cm
|
13 cm
|
4 cm
|
15 cm
|
21 cm
|
6 cm
|
20 cm
|
24 cm
|
4 cm
|
30 cm
|
31 cm
|
1 cm
|
50 cm
|
52 cm
|
2 cm
|
Ved samplerate på 1 msec
Fysisk måling
|
Måling på NXT
|
Forskel
|
9 cm
|
14 cm
|
5 cm
|
15 cm
|
22 cm
|
7 cm
|
20 cm
|
24 cm
|
4 cm
|
30 cm
|
33 cm
|
3 cm
|
50 cm
|
52 cm
|
2 cm
|
Forskellen mellem målingerne på de tre tests var meget ens gennem målingerne. Det er mærkværdigt at se, at den største forskel mellem den fysiske måling og målingen på NXT’en er størst ved 15 cm’s afstand på alle tre tests. På afstande over 15 cm falder forskellen gradvist, og bliver mere præcis op til vores største måling på 50 cm.
Exercise 3
The ultrasonic sensor detects objects in front of the sensor by emitting a short high-frequency sound and then listen for echoes. If an echo comes back there is an object in front. The time it takes for the echo to return can be used to measure the distance to the object. If there is no echo within some time limit the situation is interpreted as no object. The method getDistance returns 255 if there is no echo, hence no object, and otherwise a number less than 255 which is the distance in cm. Try to use the sensor with an object at a distance of up to 254 cm, can the sensor measure such a distance and under what conditions is it possible ? What is the time limit for the measurement - remember the speed of sound is 340.29 m/sec ? Does this limit the usage of the sensor ?
Når bilen blev placeret med en afstand på 254 cm fra væggen, viste displayet en afstand på 255 cm. Derfor fandt vi det ikke muligt at måle et objekt på en afstand på 254 cm. Det var først da vi nåede ned på en fysisk afstand på 185 cm, at displayet begyndte at viste den reelle afstand. Vi udregner tidsgrænsen for målingen:
* |
Pætur (fra gruppen Team NXT generation) og Alexander (fra gruppen Surdejspianisterne) forsøger at finde den maksimale afstand som NXT’en er i stand til at måle.
|
Den tid det tager for lyden at rejse fra højttaleren i sensoren hen til væggen og tilbage til mikrofonen i sensoren er:
Det tager altså 10,87 msec for lyden at rejse frem og tilbage. Idet vi har et sample interval på 300 msec, og tidsgrænsen for at måle den maksimale afstand på 185cm er 10,87 msec, begrænser tidsgrænsen ikke brugen af sensoren.
Tracker Beam
As a first application of the sonic sensor try the program Tracker.java. This has been inspired by the "tracker beam" program in Chapter 5. The program uses a simple class Car.java to move the car.
Exercise 4
Describe the behaviour of the car controlled by the program and try to change the different constants of the program. The power to the car motors is the controlled variable and the distance is the measured variable. What kind of control is it?
Ved kørsel af det oprindelige program, kører bilen mod et objekt med en power på 100. Når den nærmer sig et objekt, sætter den farten ned, indtil afstanden til objektet er 35 cm. Når bilen når denne afstand bevæger den sig frem og tilbage hele tiden i oscillerende bevægelser. Hvis man sætter sin hånd foran afstandsmåleren, og afstanden er kortere end 35 cm, bakker bilen og tilpasser afstanden til 35 cm.
Vi ændrede distance til 20 cm og minimum power til 30. Det resulterede i, at bilen kørte tættere på objektet, men sænkede farten hurtigere end ved power på 60. Vi satte den ønskede distance op til 40, her forsøgte vi med en minimum power på 50, 70 og 100. Ved 50 der stoppede bilen, når den nåede den ønskede afstand. Ved power på 70 oscillerende den en smule, mens den på 100 gik fuldstændig amok og endte med at vælte, fordi den, når den nåede den ønskede afstand, bakkede med 100 % power og igen satte 100 % power på at køre frem når denne afstand var tilstrækkelig stor igen.
Der er i systemet tale om en P controller, da den kontrollerede variabel (controlled variable), motorernes power, propertionelt afhænger af den målte variabel, distance, ud fra den nuværende error value.
Exercise 5
Try to make the car oscillate by adjusting the constants in the controller.
Bilen oscillerer allerede en smule når distance er 35 og minPower er 60. Ved at sætte minPower op, oscillerer bilen kraftigere, hvorimod bilen ved en minPower på 50 næsten ikke kører når den kommer ind på den definerede afstand.
For at integrere derivative delen af PID controlleren, modificerede vi koden en anelse, se billede herunder.
Vi fandt at ved Kp = 3 og ved Kd = 1 oscillerede bilen kun én gang før den stod stille på afstanden 35 cm eller 36 cm, hvor desiredDistance = 35.* |
Screenshot af vores kode efter tilføjelsen af derivative konstanten.
|
Wall Follower
Philippe Hurbain has build and programmed a wall follower based on the LEGO Mindstorms RCX and a home build distance sensor, [4]. He used NQC (not quite c) to program the controller for the wall follower
Exercise 6
Try to use his program and sensor placement to write a similar program in Java and make the LEGO 9797 car follow a wall. Compare the NQC control algorithm with the different suggestions on page 179, 5.1.3 exercises.
Vi oversatte koden fra Hurbain’s projekt til java og kørte det. Koden kan ses på pastebin.com [1].
En video af vores bil der kører programmet WallFollower.java kan ses her.
Når NQC control algoritmen sammenlignes med forslagene på side 179, 5.1.3 exercises [4], ses det, at NQC control algoritmen minder om pkt. 4, hvor: “... the three-state method that makes progressively stronger turns as the wall sensor indicates that HandyBug is farther away from the goal distance.” NQC algoritmen bruger netop three-state metoden, se figur herunder, idet hvis man er imellem #define XL1 444 og #define XR1 430 kører bilen ligeud. Hvis man er på den ene eller anden side af denne inner og outer value, jvf. figur herunder, laver bilen progressivt voldsommere drejninger til højre eller venstre ved enten at slukke den ene motor, ved at reducere power på den ene motor eller ved at få den ene motor til at køre baglæns, hvor den anden motor kører fremad.
Three-state metoden, fra slides uge 1.
Conclusion
Vi har med møje og besvær fået alle opgaver til at køre. Specielt opgave 5 og 6 voldte os problemer på lab-dagen, men da vi satte os ned tirsdagen efter, den 18/2 for at gennemgå koden endnu engang, lykkedes det os at forstå det.
Vores WallFollower er ikke blevet så god idet den oscillerer meget, men vi har valgt, efter 10 timers arbejde på ugens opgaver at lade det være, og ikke bruge yderligere tid på at optimere denne.
Vi har fået erfaring med NXT ultrasonic sensoren og vi har fået erfaring med benyttelsen af en P-controller (opgave 4) samt en PD-controller i opgave 5 og 6.
Referencer
[1] http://pastebin.com/jJgJDMM7
[4] Fred G. Martin, Robotic Explorations: A Hands-on Introduction to Engineering, Prentice Hall, 2001.
Ingen kommentarer:
Send en kommentar