-         

Ergebnis 1 bis 5 von 5

Thema: gezielte Strecke innerhalb d. Hauptschleife zurücklegen?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    29.12.2009
    Ort
    Bezirk Mödling
    Alter
    40
    Beiträge
    19

    gezielte Strecke innerhalb d. Hauptschleife zurücklegen?

    Anzeige

    Ist es möglich innerhalb der Hauptschleife eine gewisse Strecke zurückzulegen ohne darauf warten zu müssen bis die Strecke zurückgelegt wurde?
    Ich möchte dazwischen immer task_RP6System() aufrufen können, damit die Bewegungen genau bleiben, und nicht immer nach der move() Funktion.

    PS.
    Ich hoffe ich habe mich verständlich ausgedrückt.

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    29.12.2009
    Ort
    Bezirk Mödling
    Alter
    40
    Beiträge
    19
    Hmm, um meine Frage zu präzisieren ein Codebeispiel, wie es falsch ist.
    Code:
    while(true)
    {
    move(60,FWD,DIST_MM(1000),true); //Fährt 1 Meter
    task_Bumpers(); //stoppt Roboter ....
    }
    Der Roboter Fährt einen Meter vorwärts.
    Wenn er jedoch nach 20 cm gegen ein Hindernis fährt, bleibt er nicht stehen, sondern seine Motoren drehen weiter solange bis ein Meter zurückgelegt wurde. Erst nach Beendung von move() erkennt task_Bumpers() das ein Bumper gedrückt wurde. (
    Erst dann werden auch die Motoren gestoppt.
    Ich will den Roboter bestimmte Distanzen zurücklegen lassen und trotzdem auf Hindernisse reagieren.

    Weiß hier wer einen Lösungsansatz?
    Ich könnte mir vorstellen irgendwie den move() Befehl mit blocking false zu verwenden und irgendwie eine Hilfsvariable zu verwenden die sagt wann der Weg zurückgelegt wurde etc. Jedoch fällt mir keine Möglichkeit ein wie ich aus der Hauptschleife raus, die zurückgelegte Strecke herausfinden kann um mein Flag zu setzen, dass die Strecke zurückgelegt wurde.
    HILFE! )

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    14.12.2009
    Ort
    Steinfurt
    Beiträge
    46
    Hast du in deinem bumperStateChange Handler auch beschrieben was der Roboter machen soll wenn er gegen ein Hindernis gefahren ist?
    Und den Handler auch als bumperStateChange Handler registriert?

    Grüße,
    Jan

    [Edit] Code entfernt, das Beispiel war quatsch[/edit]

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    25.12.2009
    Beiträge
    8
    hallo,
    könntest du vielleicht so ausprobieren:
    Code:
    move(60,FWD,DIST_MM(1000),false);
    while(!isMovementComplete) //Solange Bewegung nicht fertig
    {
      if(bumper_left)
      {
        //links ausweichen(Bumper)
      }
      if(bumper_right)
      {
        //rechts ausweichen(Bumper)
      }
      if(obstacle_left)
      {
        //links ausweichen(IR-LEDs)
      }
      if(obstacle_right)
      {
        //rechts ausweichen(IR-LEDs)
      }
      task_RP6System(); //wegen Motor, bumpern
    }
    Da er bei Hindernisserkennung aber so die move-funktion überschreibt, müsste man zuerst die schon zurückgelegte Strecke(in Encoderschritten, mleft_dist bzw. mright_dist) bei Ausweichmanövern auslesen und danach dementsprechend die noch zurückzulegende abfahren.

    viele grüße karmic_koala

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    29.12.2009
    Ort
    Bezirk Mödling
    Alter
    40
    Beiträge
    19
    Hey, das wäre ne Idee, genau so hab ich mir das vorgestellt!
    Jetzt kann auf Hindernisse reagieren. D.h. ihnen ausweichen, wieder zurück auf den Ursprungspfad fahren und den vorgegebenen Weg weiterfahren. (Freu)

Berechtigungen

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