-         
Ergebnis 1 bis 2 von 2

Thema: Funktion Go() & Kollisionsabfrage

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    19.01.2006
    Beiträge
    8

    Funktion Go() & Kollisionsabfrage

    Anzeige

    Go() aus der Asuro Library zieht ja sein Ding durch obs knallt oder nicht. Hat jemand von euch schonmal Go() in Zusammenhang mit einer Kollisionsabfrage benutzt (PollSwitch()). Würde gern wissen, wie man das am besten angeht. Hinzu kommt, daß gespeichert werden muss wie weit Go() gekommen ist um nach einem Ausweichmanöver die Restdistanz ausrechnen zu können. Um eine Änderung der Asuro.c wird man wohl nicht herumkommen denk ich. Was meint ihr?

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    19.01.2006
    Beiträge
    8
    00424 int Go(int distance, int speed)
    00425 {
    00426 int enc_count = 0;
    00427 int tot_count = 0;
    00428 int diff = 0;
    00429 int l_speed = speed, r_speed = speed;
    00430 enc_count=abs(distance);
    00431
    00432 // enc_count=distance*10000;
    00433 // enc_count/=12823;
    00434
    00435 Encoder_Set(0,0); // reset encoder
    00436
    00437 MotorSpeed(l_speed,r_speed);
    00438 if(distance<0) MotorDir(RWD,RWD);
    00439 else MotorDir(FWD,FWD);
    00440
    00441 while((tot_count<enc_count) && (PollSwitch()!=0)) {
    00442 tot_count += encoder[LEFT];
    00443 diff = encoder[LEFT] - encoder[RIGHT];
    00444 if (diff > 0) { //Left faster than right
    00445 if ((l_speed > speed) || (r_speed > 244)) l_speed -= 10;
    00446 else r_speed += 10;
    00447 }
    00448 if (diff < 0) { //Right faster than left
    00449 if ((r_speed > speed) || (l_speed > 244)) r_speed -= 10;
    00450 else l_speed += 10;
    00451 }
    00452 Encoder_Set(0,0); // reset encoder
    00453 MotorSpeed(l_speed,r_speed);
    00454 Msleep(1);
    00455 }
    00456 MotorDir(BREAK,BREAK);
    00457 Msleep(200);
    return tot_count;
    }


    Müsste doch eigentlich reichen, oder? Asuro steht --> man startet ein Ausweichmanöver --> man startet Go() erneut mit "distance - tot_count"

    Werd ich heut Abend mal testen...

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •