- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: rückwärts Kurve

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    27.09.2009
    Alter
    29
    Beiträge
    661

    rückwärts Kurve

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hi ich bräuchte mal hilfe beim programmieren.könnte mir jemand mal ein
    beispiel Programm schreiben das der Rp6 gerade ausfährt und wenn irgend
    ein ereigniss kommt für 10 sek eine rückwärts kurve fährt.
    MfG Martinius

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    14.12.2009
    Ort
    Steinfurt
    Beiträge
    46
    Code:
    #define INIT 0
    #define CRUISE 1
    #define ESCAPE 2
    #define OBSTACLE_LEFT 1
    #define OBSTACLE_RIGHT -1
    #define OBSTACLE_FRONT 1
    
    uint8_t dir_of_obstacle;
    uint8_t state = INIT;
    
    void bumpersStateChanged(void)
    {
    	if(bumper_left && bumper_right) // beide bumper
    	{
    		state = ESCAPE;
    		dir_of_obstacle = OBSTACLE_FRONT;
    	}
    	else if(bumper_left)  // linker bumper
    	{
    		state = ESCAPE;
    		dir_of_obstacle = OBSTACLE_LEFT;
    	}
    	else if(bumper_right) // rechter bumper
    	{
    		state = ESCAPE;
    		dir_ob_obstacle = OBSTACLE_RIGHT;
    	}
    }
    
    
    /*****************************************************************************/
    // Main:
    
    int main(void)
    {
       initRobotBase(); 
       mSleep(200);
    
       // Set Bumpers state changed event handler:
       BUMPERS_setStateChangedHandler(bumpersStateChanged);
    	
       powerON(); // Turn on Encoders, Current sensing, ACS and Power LED.
    
       // Main loop
       while(true) 
       {		
          task_RP6System();
          switch(state){
             case INIT: state = CRUISE; 
             break;
    
             case CRUISE:
                direction(fwd);
                moveAtSpeed(80,80);
             break;
    
             case ESCAPE:
                direction(bwd);
                moveAtSpeed(20+(10*direction_of_obstacle*-1), 20+(10*direction_of_obstacle));
    				
                startStopwatch1();
                while(getStopwatch1() < 10000){
                   task_RP6System();
                }
                state = CRUISE;
             break;
             }
    	
       }
       return 0;
    }
    So in etwa könnte es klappen. Der RP6 fährt erstmal fein gradeaus. Wenn einer der Bumper gedrückt wird, wird state auf ESCAPE gesetzt und dir_ob_obstacle auf einen Wert der dem Bumper entspricht. Danach wird der Rückwärtsgang eingelegt und Normalgeschwindigkeit (ich hab für den Rückwärtsgang mal 20 angenommen da er ja immerhin 10sec fahren soll) + bzw. - die Differenz zwischen linker und rechter Kette als Geschwindigkeit gesetzt. Habs alle nich getestet da ich keine Lust hatte den Compiler anzuwerfen (bzw. zu installieren) und mein RP6 eh grad beim großen C ist.

    Grüße,
    Jan

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    27.09.2009
    Alter
    29
    Beiträge
    661
    Danke erst mal
    aber könntest du mir noch ein programm schreiben indem er einfach nur eine rückwärts Kurve macht ,deren dauer mit mSleep oder ähnlichem.

    Danke
    MfG Martinius

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.08.2007
    Ort
    Delmenhorst
    Alter
    38
    Beiträge
    731
    Hat er doch?! Die letzte Case Bedingung

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    27.09.2009
    Alter
    29
    Beiträge
    661
    ja schon aber ich meine wirklich genau so auch mal 10 min.
    MfG Martinius

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.08.2007
    Ort
    Delmenhorst
    Alter
    38
    Beiträge
    731
    Jetzt doch 10 Minuten?
    Die Zeit wird durch die 10000 bestimmt.

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    27.09.2009
    Alter
    29
    Beiträge
    661
    Aha jetzt verstehe ich was du meinst , ich dachte der kern des programmes
    liegt in der moveAtSpeed funktion und nicht im status abfragen.
    MfG Martinius

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.08.2007
    Ort
    Delmenhorst
    Alter
    38
    Beiträge
    731
    Sieht so aus als wenn du noch nicht eine Sekunde damit verbracht hast dir mal die Dokumentation zum RP6 anzuschauen!

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    27.09.2009
    Alter
    29
    Beiträge
    661
    hey das find ich beleidigent und auserdem konnt ich dort nichts finden um eine rückwärts kurve für eine bestimmte zeit zu fahren
    MfG Martinius

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.08.2007
    Ort
    Delmenhorst
    Alter
    38
    Beiträge
    731
    Man sollte ALLES lesen und nichts "mal eben überfliegen".
    Gut dir mal 4.6.3 und 4.6.9 an.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

12V Akku bauen