-         

Ergebnis 1 bis 4 von 4

Thema: mal wieder linienverfolgung....

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    03.09.2008
    Beiträge
    21

    mal wieder linienverfolgung....

    Anzeige

    Hallo
    und vielen dank an alle di versuchen mir zu helfen

    Ich habe ein (mehr oder weniger) kleines programm zur linienverfolgung geschrieben

    Code:
    #include "asuro.h"
    
     timewait(unsigned int t)					// 1 sek pause
    	{
    	unsigned int pause;
    	
    	for (pause=0; pause<t; pause++)		// 1 millisekunde Pause
    		{	Sleep (72);
    		}
    	}
    	
    	
    int main(void) {
      unsigned int data[2];
      unsigned char links,rechts;
      int diffl,diffr,i,ledonl,ledonr,ledoffl,ledoffr,ledon,ledoff,diffrf,difflf,j,rab;
      //rab=regelabweichung 
     
      Init();
      
      
      		for (i = 0; i < 2; i++ ) {
    			FrontLED(ON);
    			LineData(data);			// Messung mit LED ON
    			ledonl = data[0];
    			ledonr = data[1];
    			timewait(500);
    	
    			/*FrontLED(OFF);
    			LineData(data);			// Messung mit LED OFF
    			ledoffl = data[0];
    			ledoffr = data[1];	
    			timewait(500);
    			
    			*/
    			
    			ledon = (ledonl - ledonr);	// Regelabweichung mit LED ON
    			
    			/*
    			ledoff = (ledoffl - ledoffr);// Regelabweichung mit LED OFF				->noch keine verwendung
    										
    			
    			diffl = ledonl - ledoffl; 	//differenzen
    			diffr = ledonr - ledoffr;
    			*/
    			
    			
    			rab = ledon;				// Regelabweichung 
    			timewait(500);
    			}
    			
    	while(1) {
    	FrontLED(ON);
        MotorDir(FWD,FWD);
        LineData(data);
        difflf=data[0]-data[1]-rab;
        diffrf=data[1]-data[0]-rab;
        links=120-(diffrf*3);				//noch zu langsam
        rechts=120-(difflf*3);				//noch zu langsam
    	
    	if (links&&rechts >= 120)			// auf gerader strecke schneller //geht nicht
    	{
    		links&&rechts == 180;
    	}
    	
    	if (data[0] && data[1] < 30)        //prüfung ob weggabelung oder ende
    	{
    		for (j = 0; j < 5; j++ )
    		{
    			if (j <= 4&&data[0] && data[1] < 30)				// 0,4sek lang gerade aus
    			{links=90;
    			rechts=90;
    			timewait(100);}
    			
    			if (j > 4&&data[0] && data[1] < 30)					//wenn immernoch schwarz stop
    			{links=0;
    			rechts=0;}
    		}
    	}
    	
    	if (links>120) 
    	{
    		links=120;
    	}
    	
        if (rechts>120) 
    	{
    		rechts=120;
    	}
        MotorSpeed(links,rechts);
      }
      return 0;
    }
    und jetzt hat meine kleine schwester meinen asuro kaputt gemacht :P ...kann bitte mal jmd testen ob das so in etwa klappt?
    also die linienverfolgung müsste funktionieren das hatte ich noch selbst getesten mir geht er hauptsächlich um die beschleunigung auf geraden und das stoppen bei nem dicken schwarzen strich (das habe ich bei meinen zeicnungn immer am ende)

    desweiteres wollte ich fragen ob es möglich ist dieses programm so zu erweitern das es im 90° winkel um ecken fahren kann ..und wenn ja natürlich wie^^

    mfg lukas
    und nochma vielen dank an die leute die sich das programm mal drauf machen
    Ps:sry ich war noch nie gut in deutsch

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    03.09.2008
    Beiträge
    21
    hats jmd getestet? bitte posten obs klappt :P is mir wirklich wichtig..plz

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.557

    Re: linienverfolgung ecken

    Zitat Zitat von luckylukas92
    ... und jetzt hat meine kleine schwester meinen asuro kaputt gemacht ...
    Liegt das an der dunklen Jahreszeit, dass kleine Schwestern asurofeindlich reagieren?

    http://www.roboternetz.de/phpBB2/viewtopic.php?t=37330
    Ciao sagt der JoeamBerg

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    03.09.2008
    Beiträge
    21
    also bei meinem asuro is ziemlich sichtbar was kaputt ist :P in der mitte durchgeborchen...hat sich draufgesetzt..aber ich war schuld hab ihn aufem boden stehen lassen...haste getestet obs geht?
    edit: hab wieder nen funktionstüchtigen asuro...
    so ich habe das programm jetzt getestet und es funktioniert soweit ganz gut...
    jetzt habe ich folgendes problem:

    Code:
    #include "asuro.h"
    
     timewait(unsigned int t)					// millisekundenwert als t eingeben
    	{
    	unsigned int pause;
    	
    	for (pause=0; pause<t; pause++)		// 1 millisekunde Pause
    		{	Sleep (72);
    		}
    	}
    	
    	
    int main(void) {
      unsigned int data[2];
      char links,rechts;
      int diffl,diffr,i,ledonl,ledonr,ledon,rab,x,rr,lr;
      
     
      Init();
      
      
      		for (i = 0; i < 2; i++ ) {
    			FrontLED(ON);
    			LineData(data);			// Messung mit LED ON
    			ledonl = data[0];
    			ledonr = data[1];
    			timewait(500);
    			
    			ledon = (ledonl - ledonr);	// Regelabweichung mit LED ON
    			
    			rab = ledon;				// Regelabweichung 
    			timewait(500);
    			}
    			
    	while(1) {
    	x=120;								//maximalgeschwindigkeit
    	FrontLED(ON);
        LineData(data);
        diffl=data[0]-data[1]-rab;			//diff links zu rechts
        diffr=data[1]-data[0]-rab;			//diff rechts zu links
        links=x-(diffr*4);				
        rechts=x-(diffl*4);				
    	if (links<=0)
    		{
    		BackLED(ON,OFF);
    		links = links*-1;
    		lr=RWD;
    		x=90;
    		}
    	if (rechts<=0)
    		{
    		BackLED(OFF,ON);
    		rechts = rechts*-1;
    		rr=RWD;
    		x=90;
    		}
    	
    	if (x-diffl*6>0)
    		{
    		lr=FWD;
    		}
    	if (x-diffr*6>0)
    		{
    		rr=FWD;
    		}
    	
    	
    	if (links>x) 
    	{
    		links=x;
    	}
    	
        if (rechts>x) 
    	{
    		rechts=x;
    	}
    	
    	
        MotorSpeed(links,rechts);
    	MotorDir(lr,rr);
      }
      return 0;
    }
    ich wollte einbauen , dass wenn die kurve zu scharf ist nicht nur die geschwindigkeit variiert wird sondern , dass ein motor sogar "RWD" dreht.
    ...das funktioniert nicht ... hat jmd nen lösungsvorschlag?? wäre sehr dankbar

Berechtigungen

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