2007. november 19., hétfő

MotorOverload

Próbálkozunk egy olyasmit megoldani, hogy ha a robot háttal nekimegy vminek, vagy oldalról felmászik a falra, akkor vegye észre magát. Sajnos a szenzorok száma korlátozott, úgyhogy a motorok encodereire szeretnénk ezt a megoldást alapozni. Sajnos a végső teszteléskor az akkuk lemerültek, úgyhogy nem tudtuk teljesen tesztelni ezt a megoldást.

Ha jól értelmezem, akkor a MotorOverload() akkor ad 1-es értéket vissza, ha több erőre van szüksége a forgáshoz, mint amennyit kap. Ez alapján akarjuk megállitani a motrokat és visszaforditani a robotot.

Az idevágó szál:

task stopback(){
while(true){
if((MotorOverload(OUT_B) == 1) || (MotorOverload(OUT_C) == 1)){
Off(OUT_BC);
ClearScreen();
GraphicOut(30,10,"faceclosed.ric");
if(curdir == 1){
Acquire(motor);
curdir = 2;
OnRevReg(OUT_BC, 30, OUT_REGMODE_SPEED);
Wait(500);
forog();
Release(motor);
}
else{
Acquire(motor);
curdir = 1;
OnFwdReg(OUT_BC, 30, OUT_REGMODE_SPEED);
Wait(500);
Release(motor);
}
ClearScreen();
GraphicOut(30,10,"faceopen.ric");

}
}
}
A robot mozgási iránya mindig be van állitva, igy tudjuk merre kell visszaforduljon.

Nincsenek megjegyzések: