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 Embodied Agents1
Plan
Planen for denne uge er:- Bygge den NXT Braitenberg robotten udfra beskrivelsen i ugeseddelen.
- Gennemgå ugens øvelser.
Resultat af øvelser
Vi lagde ud med at bygge basis køretøjet udfra beskrivelsen og de to .lxf filer.Vehicle 1
SensorPort.S1.readRawValue();
Før dette virkede som forventet måtte porten dog klargøres for rå værdier:
// Manually setup sensorport for raw sound readings. SensorPort.S1.setTypeAndMode(SensorConstants.TYPE_LIGHT_ACTIVE, SensorConstants.MODE_RAW);
Først normaliserede vi til intervallet [0; 100] hvor vi som forventet for exitatory forbindelsen imellem sensor og motor observerede at køretøjet, når det så lys, bevægede sig fremad i en hastighed proportionel med lysstyrken. Omvendt gik det da vi ændrede forbindelsen til inhibitory, hvor hastigheden var omvendt proportionel med lysstyrken. Da kørte bilen med fuld styrke i mørke indtil den så lys.
Den dansende robot forsøgte vi at fremmane ved at normalisere fra det større rå interval [0; 1023] og ned til Car.forward() metodens interval [-100; 100] således
Den dansende robot forsøgte vi at fremmane ved at normalisere fra det større rå interval [0; 1023] og ned til Car.forward() metodens interval [-100; 100] således
public int normalizeToRange(int light) {
int output = 200 -((light - MAX_LIGHT) * 200) / (MIN_LIGHT - MAX_LIGHT);
if(output > 100) output = 100;
else if(output < -100) output = -100;
return output;
}
MIN_LIGHT og MAX_LIGHT representerer minimum og maximum værdierne for de lysværdier vi forventer at få fra lyssensoren. Disse afhænger af sensoren og de lysforhold der er tilstede hvor denne arbejder.
At sætte musik til bilen vil få den til at danse, muligvis pga af de forskellige temposkift I sangen (NB: video er gået tabt I produktion )
Kode her2
At sætte musik til bilen vil få den til at danse, muligvis pga af de forskellige temposkift I sangen (NB: video er gået tabt I produktion )
Kode her2
Vehicle 2a og 2b
Vi monterede endnu en lyssensor foran, vinklet til hver sin side med 45 grader og forsøgte os med begge konfigurationer (2a og 2b). Styringen implementerede vi udfra Vehicle 1 og
I konfiguration 2a i exitatory tilstand observerede vi at robotten drejede væk fra lyset. I inhibitory tilstand søgte robotten imod lyset.
I konfiguration 2b observerede vi det omvendte af 2a; I exitatory tilstand drejede robotten imod lyset, jo kraftigere jo hurtigere. I inhibitory ville den ikke "se ind i lyset", den drejede væk.

main loop ( aner ikke om dette skal med? )
Opdatering af MIN_LIGHT og MAX_LIGHT over tid udførte vi i main loop
Vi observerede ingen udtalt ændring i robottens opførsel ved automatisk at opdatere værdierne af set MIN_LIGHT og MAX_LIGHT.
Koden kan findes i fodnote 2.
I konfiguration 2a i exitatory tilstand observerede vi at robotten drejede væk fra lyset. I inhibitory tilstand søgte robotten imod lyset.
I konfiguration 2b observerede vi det omvendte af 2a; I exitatory tilstand drejede robotten imod lyset, jo kraftigere jo hurtigere. I inhibitory ville den ikke "se ind i lyset", den drejede væk.
main loop ( aner ikke om dette skal med? )
while (true) {
int s4 = SensorPort.S1.readRawValue();
int s1 = SensorPort.S4.readRawValue();
// Update min/max light values
if(s1 < MAX_LIGHT) MAX_LIGHT = s1;
if(s4 < MAX_LIGHT) MAX_LIGHT = s4;
if(s1 > MIN_LIGHT) MIN_LIGHT = s1;
if(s4 > MIN_LIGHT) MIN_LIGHT = s4;
average_s1 = alpha * s1 +(1-alpha) * average_s1;
average_s4 = alpha * s4 +(1-alpha) * average_s4;
LCD.drawString("Raw: " + s1 + ":" + s4, 0, 0);
int s4n = s4 > average_s4 ? normalizeToRange(s4) : 0;
int s1n = s1 > average_s1 ? normalizeToRange(s1) : 0;
LCD.drawString("Norm: " + s1n +":" + s4n, 0, 1);
Car.forward(s4n, s1n);
}
Opdatering af MIN_LIGHT og MAX_LIGHT over tid udførte vi i main loop
Vi observerede ingen udtalt ændring i robottens opførsel ved automatisk at opdatere værdierne af set MIN_LIGHT og MAX_LIGHT.
Koden kan findes i fodnote 2.
Vehicle 3
Denne nåede vi ikke at eksperimentere med.
Konklusion
I dennne uge har vi, med udgangspunkt i Braintenberg bygget to robotter med dertilhørende program på baggrund af Tom Deans noter. Lydsensoren blev brugt til vehicle 1, som havde en extiatory og en inhibitory metode. Dette samme var tilfælde for lyssensoren. Altså har vi en robot, der bevæger sig hurtigere desto højere en lyd den kan opfange fra omgivelserne.
1 http://legolab.cs.au.dk/DigitalControl.dir/NXT/Lesson6.dir/Lesson.html↩
2 https://docs.google.com/folderview?id=0B22Duz_kNMvWUk9ZS2NzYzRmZ2M&usp=docslist_api# ↩

No comments :
Post a Comment