-         
Ergebnis 1 bis 7 von 7

Thema: Geschwindigkeitsproblem

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

    Geschwindigkeitsproblem

    Anzeige

    hi,
    ich habe da ein Problem mit ein Programm:

    Code:
    #include "RP6RobotBaseLib.h"
    
    int main(void)
    {
    	initRobotBase();
    	powerON();
    	setLEDs(0b001001);
    	DDRA |= (E_INT1);
    	DDRC |= (SCL);
    	int a;
    	setACSPwrMed();
    	moveAtSpeed(160,160);
    
    	while(true)
    	{
    		if(getBumperLeft())
    		{
    			move(85, BWD, DIST_MM(70), true);
    			rotate(70, RIGHT, 50, true);
    			changeDirection(FWD);
    			PORTA |= E_INT1;
    			mSleep(200);
    			PORTA &= ~E_INT1;
    			mSleep(200);
    			PORTA |= E_INT1;
    			mSleep(200);
    			PORTA &= ~E_INT1;
    		}
    		if(getBumperRight())
    		{
    			move(85, BWD, DIST_MM(70), true);
    			rotate(70, LEFT, 50, true);
    			changeDirection(FWD);
    			PORTC |= SCL;
    			mSleep(600);
    			PORTC &= ~SCL;
    		}
    		if(obstacle_left)
    		{
    			move(85, BWD, DIST_MM(70), true);
    			rotate(70, RIGHT, 60, true);
    			changeDirection(FWD);
    		}
    		if(obstacle_right)
    		{
    			move(85, BWD, DIST_MM(70), true);
    			rotate(70, LEFT, 60, true);
    			changeDirection(FWD);
    		}
    		if(adcBat<600)
    		{
    			for(a = 0;a>10000;a++)
    			{
    				setLEDs(0b010101);
    				mSleep(150);
    				setLEDs(0b101010);
    			}
    		}
    		task_RP6System();
    		task_motionControl();
    		task_ADC();
    	}
    	return 0;
    }
    wenn ich das Programm starte dann fährt der Roboter schnell gerade aus,
    aber wenn der Roboter auf ein Hinderniss stößt umfäht er es ,aber fährt dann langsammer weiter.Aber warum und wie kann ich das beheben?
    MfG Martinius

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    55
    Beiträge
    5.789
    Blog-Einträge
    8
    Hallo

    Erstaunlich finde ich, dass er nach dem Ausweichen überhaupt weiterfährt. Ich vermute, rotate() und move() setzen die Geschwindigeit neu und diese wird dann von moveAtSpeed() übernommen. Gegenmassnahme wäre dann am Ende jedes If-Zweiges nochmals ein moveAtSpeed()-Befehl. Zusammen mit dem changeDirection(FWD); könntest du daraus auch eine kleine Funktion machen:
    Code:
    void fahren(char speed)
    {
       changeDirection(FWD);
       moveAtSpeed(speed, speed);
    }
    Das solltest du vielleicht nochmals überdenken:
    for(a = 0;a>10000;a++)

    Ich hab' deinen Code etwas formatiert weil ich dann besser durchblicke. Ich hoffe, es war in deinem Sinne :)

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    27.09.2009
    Alter
    23
    Beiträge
    661
    Ja danke , ich würde aber die Funktinon "forwärts fahren" nennen.
    MfG Martinius

  4. #4
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    55
    Beiträge
    5.789
    Blog-Einträge
    8
    Aus vier Gründen würde ich die Funktion nicht "forwärts fahren" nennen:

    1. Sind keine Leerzeichen in den Funktionsnamen erlaubt
    2. Sollte man möglichst Umlaute und Sonderzeichen im Quellcode (auch Kommentare!) vermeiden.
    3. Bedeutet es mehr Tipparbeit
    4. *einen Beutel mit "V"s rüberreicht*

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    27.09.2009
    Alter
    23
    Beiträge
    661
    gut danke, für deine Hilfe
    MfG Martinius

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    25.03.2010
    Beiträge
    172
    Zitat Zitat von Martinius11
    gut danke, für deine Hilfe
    Dank Ihm auch für die Rechtschreibhilfe

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    27.09.2009
    Alter
    23
    Beiträge
    661
    ich hofe es hat sich für dich gelohnt so einen dummen kommentar zu schreiben =D> =D>
    MfG Martinius

Berechtigungen

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