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
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
Nur zu! =)
*textfüller*
@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?
Ja unter anderem... plane nen paar wettkämpfe gegen einen lego-ich koste 300 euro-mindstorm!!
muss man den teilsatz verstehen?Zitat von HAWK-Matze
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..
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; } }
ja smilies haste ja zugefügt.... und quellcode mit dem button "Code"
Code:test
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
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
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
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 )
Lesezeichen