-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Kurven-Fahr-Funktion

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    17.12.2007
    Ort
    Hann. Münden
    Alter
    31
    Beiträge
    63

    Kurven-Fahr-Funktion

    Anzeige

    Gibt es eine Funktion, die mit hilfe der Odometrie den Asuro eine kurve mit vorgegeben radius fahren lässt? Wenn nicht würde ich mich mal dran machen sowas zu schreiben

  2. #2
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.912
    Nur zu! =)
    *textfüller*
    kleinschreibung ist cool!

  3. #3
    Erfahrener Benutzer Begeisterter Techniker Avatar von JensK
    Registriert seit
    27.02.2007
    Ort
    Hamburg
    Alter
    26
    Beiträge
    254
    @damaltor: :P sinnvoller beitrag
    es sollte mal in dem forum ein sinnlosen Offtopic spam bereich geben.. ohne postcounter...

    @topic: ne ich hab grad mal gegoogled und google warf nix aus.. also gibt es sowas auch nicht. Ich weiß auch von keinem. aber wozu soll das gut sein? zum malen?

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    17.12.2007
    Ort
    Hann. Münden
    Alter
    31
    Beiträge
    63
    Ja unter anderem... plane nen paar wettkämpfe gegen einen lego-ich koste 300 euro-mindstorm!!

  5. #5
    Erfahrener Benutzer Begeisterter Techniker Avatar von JensK
    Registriert seit
    27.02.2007
    Ort
    Hamburg
    Alter
    26
    Beiträge
    254
    Zitat Zitat von HAWK-Matze
    Ja unter anderem... plane nen paar wettkämpfe gegen einen lego-ich koste 300 euro-mindstorm!!
    muss man den teilsatz verstehen?
    kostet der mindstorm jez 300€ oder du?

    mit dem zeichnen ist das so ein ding... lies dir mal 2 beiträge dazu hier im board durch... findest du schon in der sufu.. einer ist ziemlich aktuell und der andere ein bissl älter..

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    17.12.2007
    Ort
    Hann. Münden
    Alter
    31
    Beiträge
    63
    Ich bin unbezahlbar [-( , der mindstorm kostet 300 euro.
    Hier mein erster nicht funktionierender entwurf.
    Asuro dreht sich nur auf der stelle, aber in die richtige Richtung!!!
    Wie fügt man einen quellcode und smylies hinzu?

    Code:
    #include "asuro.h"
    #include "myasuro.h"
    
    #define pi 3.141592654
    #define halberradstand 52
    
    void move(char geschwindigkeit, int strecke, unsigned int radius, int winkel);
    
    void main (void)
    	{
    	Init();
        EncoderInit();
    	move(200,200,0,-100);
        }
        
    void move(char geschwindigkeit, int strecke, unsigned int radius, int winkel)
    {
    	int odoziellinks, odozielrechts, odolinks=0, odorechts=0;
    	int vl, vr;
    	
    	Init();
        EncoderInit();
        
        if (strecke == 0) 		strecke=abs(radius*pi*winkel / 180);
        else if (radius == 0) 	radius=abs(180*strecke / (winkel*pi));
        else if (winkel == 0) 	winkel=abs(180*strecke / (radius*pi));
        
    	if(winkel>0) //Rechtskurve
       		{
    	   	odoziellinks=abs((radius+halberradstand)*pi*winkel*10000L / (180*MY_GO_ENC_COUNT_VALUE));
        	odozielrechts=abs((radius-halberradstand)*pi*winkel*10000L / (180*MY_GO_ENC_COUNT_VALUE));
    		}
        else
        	{
    	   	odoziellinks=abs((radius-halberradstand)*pi*winkel*10000L / (180*MY_GO_ENC_COUNT_VALUE));
        	odozielrechts=abs((radius+halberradstand)*pi*winkel*10000L / (180*MY_GO_ENC_COUNT_VALUE));
    		}
    		
        vl=geschwindigkeit*odoziellinks/odozielrechts;
        vr=geschwindigkeit*odozielrechts/odoziellinks;
    		
    	if(strecke >= 0) MotorDir(FWD,FWD);
        else MotorDir(RWD,RWD);
        
        EncoderSet (0, 0);
        
        while(vl!=0 && vr!=0)
        	{
        	MotorSpeed(vl,vr);
        
       		odolinks += encoder [LEFT]; 
       	 	odorechts += encoder [RIGHT];
        
       		EncoderSet (0, 0);
            
      		if(odolinks/odorechts < odoziellinks/odozielrechts) {vl++; vr--;}
     		else if (odolinks/odorechts > odoziellinks/odozielrechts) {vl--; vr++;}
        
       		if(odolinks>=odoziellinks) vl=0;
        	if(odorechts>=odozielrechts) vr=0;
    	}
    }

  7. #7
    Erfahrener Benutzer Begeisterter Techniker Avatar von JensK
    Registriert seit
    27.02.2007
    Ort
    Hamburg
    Alter
    26
    Beiträge
    254
    ja smilies haste ja zugefügt.... und quellcode mit dem button "Code"

    Code:
    test

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

    Hauptsächliches Problem: Du verwendest nur Integervariablen für deine teilweise recht umfangreichen Berechnungen. Scheinbar ist dir nicht klar, das bei allen Ergebnissen (und auch bei den Zwischenwerten auf dem Rechenweg) die Nachkommastellen abgeschnitten werden. Du solltest zumindest den Datentyp "float" verwenden...

    Noch ein Tipp zur Optimierung: Wiederkehrende Berechnungen sollte man einmalig ausrechnen, wenn die Berechnung mehrfach vorkommt oder sich das Ergebniss innerhalb der Schleife nicht ändert:

    if(odolinks/odorechts < odoziellinks/odozielrechts) {vl++; vr--;}
    else if (odolinks/odorechts > odoziellinks/odozielrechts) {vl--; vr++;}

    Gruß

    mic

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

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    17.12.2007
    Ort
    Hann. Münden
    Alter
    31
    Beiträge
    63
    das die nachkomma stellen abgeschnitten werden war mir klar... wollte so wenig speicher wie möglich verwenden... aber das macht ja keinen unterschied... werde deine tipps beherzigen... der code ist doch schon recht groß... komme aber erst nächste woche dazu... schreibe noch ne klausur

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    12.02.2006
    Beiträge
    459
    Hallo HAWK-Matze,

    was für Wettkämpfe habt Ihr denn so angedacht? Was habt Ihr für Regeln? Wir sind auch noch auf der Suche nach ein paar Ideen. Einen Linienfolgewettbewerb möchte ich aber nicht veranstalten, davon gibt's schon zu viele. Hier ist die Doku für unseren Wettbewerb. ( Noch ein wenig im Aufbau begriffen )

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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