-         

+ Antworten
Ergebnis 1 bis 3 von 3

Thema: Verbesserungen

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    09.09.2008
    Ort
    Augustdorf NRW
    Alter
    22
    Beiträge
    24

    Verbesserungen

    Anzeige

    Hey Leute,

    bin gerade dabei ein bisschen mit dem Folgen von Linien beschäftigt, habe auch ein "Programm" dafür geschrieben, dass irgendwie nicht das tut, was es soll...

    Hier der Code :

    Code:
    #include "asuro.h"
    
    int LinkSpeed = 200;
    int RightSpeed = 200;
    int ADOffset;
    int i;
    
    
    void LinksFahren(void)
    {
    	 LinkSpeed += 1;
    	 RightSpeed -= 1;
    }
    
    
    void RechtsFahren(void)
    {
    	 RightSpeed += 1;
    	 LinkSpeed -= 1;
    }
    
    
    
    int main(void) 
    {
    	 unsigned int Data[2];
    	 
    	 
    	 Init();
    	 
    	 FrontLED(ON);
    	 MotorDir(FWD,FWD);
    	 MotorSpeed(LinkSpeed,RightSpeed);
    	 
    	 LineData(Data);
    	 ADOffset = Data[LEFT] - Data[RIGHT];
    	 
    	 for(;;)
    	 {
    		 i = (Data[LEFT] - Data[RIGHT]) - ADOffset;
    	 
    		 LineData(Data);
    		 if(i < -4)
    		 {
    			 RechtsFahren();
    			 BackLED(OFF, ON);
    		 }
    		 else if(i > 4)
    		 {
    			 LinksFahren();
    			 BackLED(ON, OFF);
    		 }
    		 else
    		 {
    			 BackLED(OFF, OFF);
    			 StatusLED(RED);
    		 }
    		 
    		 MotorSpeed(LinkSpeed,RightSpeed);
    	 }
    	 
    	 
    	 while(1) 
    	 return 0;
    }
    Ich weiß, da sind bestimmt einpaar Logik Fehler drinne, finde aber jetzt grad keine.
    Das Fahren auf der Linie, wenn eine gefunden wurde, klappt irgendwie nicht richtig... (Der Asuro bleibt nicht auf der Linie).

    Und was gibt LineData eig. zurück? Versteh das irgendwie nicht...

    Hat jemand Fehler, Verbesserungstips oder sonstiges ?
    Würde mich auf eine Antwort freuen

    PS: Habe die Lib 2.8 .
    PPS: Bin müde, also sorry, wenn ich alles irgendwie schlecht beschrieben habe... Morgen werd ich mir alles nochmal richtig angucken

    MFG

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    02.01.2008
    Alter
    25
    Beiträge
    239
    hallo

    was mir sofort aufgefallen ist:
    bei LinksFahren erhöst du die geschwindigkeit auf der linken seite und erniedrigst sie auf der rechten. dadurch fährt er aber links schneller und macht eine rechtskurve.
    ebenso bei RechtsFahren. versuch einfachmal, die beiden zu vertauschen. dann müsste es zumindes mit der richtung stimmen.

    und nochwas:
    in der endlosschleife berechnest du zuerst die differenz der beiden sensorwerte und rufst derst danach die funktion LineData auf (diese gibt die aktuellen werte der Sensoren zurück).
    das heißt der berechnete wert in i ist immer einen durchlauf alt (dürfte aber trotzdem kein problem sein, nur ein hinweis)

    einen tipp habe ich noch für dich:
    wenn du die geschwindigkeit immer nur um 1 änderst kann es unter umständen (je nach größe der radien bei deiner linie) dazuführen, dass er nicht eng genug einlenken kann in der zur verfügung stehenden zeit.
    im normalfall müsste es mit einem wert von 5 bis 10 gut klappen (je höher der wert, desto mehr ruckelt Asuro jedoch)

    ich hoffe, dass dir das weiter hilft
    mfg hai1991

    P.S.: wer großbuchstaben oder rechtschreibfehler findet darf sie behalten

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    09.09.2008
    Ort
    Augustdorf NRW
    Alter
    22
    Beiträge
    24
    Ok, danke für die Tips
    Werd die später Verbessern, bin grad bei meinem Freund ^^

+ Antworten

Berechtigungen

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