Documente Academic
Documente Profesional
Documente Cultură
% ------------------------------------------------%
http://www.tstorm.se
% ------------------------------------------------function control(port,baud,time)
ref=kiks_kopen([port,baud,1]);
kSetEncoders(ref,0,0);
reflex = 0;
speed = [5 5];
t0=clock;
loops=0;
while (kiks_ktime(port)<time)
loops=loops+1;
reflex = kProximity(ref);
cruise_spd = 5;
speed = calcSpd(cruise_spd,reflex);
kSetSpeed(ref,speed(1),speed(2));
end;
t=etime(clock,t0);
disp(sprintf('%.1f loops in %.1f seconds = %.1f loops/second
(%.0f%%)\n',loops,t,loops/t,(time/t)*100));
kSetSpeed(ref,0,0);
kiks_kclose(ref);
Se observ c:
- la linia 14 se definete vectorul speed, care conine valorile aplicate celor dou
motoare. (speed = [5 5]);
-la linia 20 se seteaz viteza de croazier cruise_spd;
-linia 21: viteza final va fi calculat n funcie de aceast vitez de croazier i de
valorile vectorului reflex;
-la linia 29 este declarat funcia calcSpd, folosit pentru calculul comenzilor aplicate
celor dou motoare, i care primete drept parametri cruise_spd i reflex;
-la linia 30 este declarat comanda cmd ( n cazul de fa aceasta este egal cu viteza
de croazier);
-liniile 32-35 prezint gruparea celor 8 senzori conform Fig. 1:
-media senzorilor s1 i s2 reprezint stanga;
-media senzorilor s3 i s4 reprezint fata;
-media senzorilor s5 i s6 reprezint dreapta;
-media senzorilor s7 i s8 reprezint spate;
Observatie! n vectorul reflex poziia senzorilor este:
reflex = [8 1 2 3 4 5 6 7], astfel:
- reflex(1) = 8 (elementul de pe prima poziie a vectorului) va fi
echivalent senzorului s8;
-reflex(2) = 1 (al doilea element din vector) va fi echivalent senzorului
s1 .a.m.d.
-