PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Linienverfolgung verbessern



Mosuro 77
11.06.2009, 19:41
Hallo,
ich habe versucht den Asuro eine Linie folgen zu lassen und erst mal das Programm aus der Asuro-Anleitung genommen. Doch der Asuro fuhr meiner Meinung nach zu schnell und ich habe die Geschwindigkeit verringert, trotzdem kommt er schnell von der Linie ab und schafft auch keine Kurven.
Hier ist das Programm:


#include "asuro.h"
int main(void) {
unsigned int data[2]; //Speicher bereitstellen
Init();
FrontLED(ON); // Linienbeleuchtung einschalten
MotorDir(FWD,FWD); // Beide Motoren auf vorwärts
while(1){ // Endlosschleife, ASURO soll beliebig
// lang einer Linie nachfahren
LineData(data); // aktuelle Helligkeitswerte der
// Fototransistoren einlesen
if (data [0] > data [1] ) // links heller als rechts...
{MotorSpeed(120,90);} // ... dann links mehr Gas geben...
else
{MotorSpeed(90,120);} // ... sonst rechts mehr Gas geben!
}
return 0;
}

Kann mir jemand vielleicht ein paar Verbesserungstricks zeigen, damit der Asuro auf der Linie bleibt und auch Kurven fahren kann?

hai1991
11.06.2009, 21:20
hallo

ich habe bei meinem programm immer einen motor mit ausgeschaltent (geschwindigkeit=0) dadurch sind kleinere radien möglich.

eine weitere möglichkeit um relativ schnell fahren zu können, aber auch enge kurven zu schaffen bieten regelungen. damit kenne ich mich aber nicht wirklich aus. suche dafür am bessten mal nach PDI regelung, dann müsstst du etwas passendes finden

021aet04
11.06.2009, 23:18
PDI Regelung kenne ich nicht. Du meinst wahrscheinlich PID Regelung

hai1991
12.06.2009, 08:26
sry, da hast du natürlich recht. das sollte PID-Regelung heißen
danke für die korrektur (wie gesagt ich kenne mich damit nicht aus, habs nur hier schon öfters gelesen)

Mosuro 77
15.06.2009, 16:42
Mit dieser test.c-Datei klappt es echt gut (nur wenn die Akkus etwas leer sind, kann der Asuro nich mehr richtig fahren, dann kann man aber auch die Speed-Werte verändern, dass er wieder schneller fährt) :

#include "asuro.h"
int main(void) {
unsigned int data[2]; //Speicher bereitstellen
Init();
FrontLED(ON); // Linienbeleuchtung einschalten
MotorDir(FWD,FWD); // Beide Motoren auf vorwärts
while(1){ // Endlosschleife, ASURO soll beliebig
// lang einer Linie nachfahren
LineData(data); // aktuelle Helligkeitswerte der
// Fototransistoren einlesen
if (data [0] > data [1] ) // links heller als rechts...
{MotorSpeed(130,0);} // ... dann links mehr Gas geben...
else
{MotorSpeed(0,130);} // ... sonst rechts mehr Gas geben!
}
return 0;
}
Danke für eure Hilfe!

Desti1989
20.06.2009, 17:01
Wie kann man eigentlich die werte der fototransistoren auslesen?
Ich mein in der anleitung steht das ganz hell den wert 1023 und dunkel den wert 0 hat.
Aber wie bindet man diese werte im programm ein? Wär echt freundlich wenn mir jemand einen tipp geben könnte^^

Gruß

Valen
20.06.2009, 18:39
Steht doch ganz klar im beispiel hier oben von Mosuro 77? Und das gleiche im Asuro anleitung! Oder kannst du gar keine C-sprache verstehen? Dan wurde das den erste Schrit. Google "c sprache" und weiter gehts, oder diesen link hier im roboternetz: http://www.rn-wissen.de/index.php/C-Tutorial

Desti1989
20.06.2009, 20:17
Nene ich mein nicht das erkennen von heller als dunkler
>
if (data [0] > data [1] ) // links heller als rechts...

sondern den wert des fototransistors, den er liefert wenn er helligkeit erkennt um damit weiterzuarbeiten

wenn ganz hell den wert 1023 hat sollte es dann so sein?:
if (data[0] = 1023)
das steht nämlich wiederum nicht in der anleitung ^^

werde mir das C-Tut mal durchlesen, danke für den link

Valen
20.06.2009, 20:35
Stimmt, 1023 ist die maximaler helligkeit-wert. Aber den maximalen odometrie helligkeit is 0, und ein schwarzes flach ein hohe wert. Das steht doch in dem anleitung. Am ende bei den funktion erklarungen. Das heist, in dem englischen version die ich hier habe und in dem deutche version die ich gerade von Arexx runtergeladen habe.

Aber wenn du die C-tut durchgelesen habe ist er vieleicht auch in gutes idee den Atmega8 anleitung an zu schauen. Da steht viel mehr und specifiziert in was den Asuro mit seiner gehirn kann. Das ist aber ein bisschen zu schwer fur ein anfanger, aber du sollte das doch einmal versuchen.