Forum: Mikrocontroller und Digitale Elektronik Wettbewerbs Linienfolger in Software und Hardware Verbessern


von Fabian R. (roboracer)


Angehängte Dateien:

Lesenswert?

Hallo allerseits

Ich habe letztes Jahr einen Linienfolger Roboter für einen kleinen 
Wettbewerb gebaut und relativ erfolgreich teilgenommen.
Für dieses Jahr habe ich mir weitere Verbesserugen an der Performance 
vorgenommen und will im Zuge dessen einen neuen Roboter bauen.

Erstmal zum Wettbewerb selbst:
Es gibt zwei Kurse auf 2x1m Papier mit 10mm Linienbreite, die so schnell 
wie möglich abgefahren werden müssen. Das ganze ist wie ein Turnier 
aufgebaut, man arbeitet sich also bis zum Finale Hoch. Die Kurse sind 
eine 8 und ein Oval. Die Zeit wird etwas banal mittels einer über dem 
Blatt angebrachten Webcam genommen, deren Bild dann von Wertungsrichtern 
Verfolgt wird.

Die Roboter:
Ausgegangen ist das ganze von einem Einführungsprojekt in dessen Verlauf 
ein ASURO aufgebaut und programmiert wurde. Diese Basis ist recht 
schnell an der Mechanischen Grenze, deshalb sind im Wettbewerb SÄMTLICHE 
Modifikationen erlaubt.

Mein Letztjähriger Roboter:
Besteht aus einem chassis aus Acrylglas (nur wegen dem Design, da sollte 
mal eine VW käfer karosse drauf) und hat 2 von kleinen 6V 
Getriebemotoren  angetriebene Räder aus dem RC Car bereich und einen 
Schleifsporn am Heck. Er war mal dafür ausgelegt, knapp 10kmh zu fahren. 
Befeuert werden die Motoren aus einem 3s Lipo mit 350-500mah und einer 
2A H-Brücke. An der Front befinden sich zwei SFH300 Fotodioden, die von 
IR leds beleuchtet werden und analog ausgelesen werden.
Gesteuert wird das ganze über einen Arduino Nano. Dieser ist mit einem 
PID Regler   versehen, dessen I Anteil ich noch zusätzlich gedämpft 
habe.
Probleme Bereitet hat letztes Jahr in erster Linie der Übergang von 
geradeaus fahrt in die Kurve bei der 8 und von Kurve nach Geradeaus. 
Beim letztjährigen Roboter hat eine Hecklastige Auslegung am besten 
funktioniert, da diese erstens durch höhere Drehträgheit mechanisch 
dämpft und zweitens die Kurvenfahrt durch „übersteuerndes“ Verhalten 
unterstützt.
Das Bild ist der Roboter so wie er beim Wettbewerb gefahren ist, nur mit 
einem etwas kleineren Lipo.

Mein Ziel für dieses Jahr ist, den Roboter an die Haftgrenze der Reifen 
zu bringen (von da an weiter zu tunen ist für mich sehr viel leichter, 
da ich ein wesentlich besserer Mechaniker als Programmierer bin). 
Motorleistung steht dafür eigentlich ausreichend zur Verfügung, ich 
denke trotzdem darüber nach die Bürstenmotoren am Getriebe durch kleine 
Brushless Outrunner zu ersetzen. Auch ein Arduino Due für mehr 
Rechenpower ist auf dem Weg zu mir.
Ich habe auch schon ein kurzes Experiment unternommen, bei dem ich den 
Abstand zwischen Fotodioden und Achse vergrößert habe, jedoch habe ich 
darin noch nicht besonders viel Zeit investiert. Mit Gleichungen kann 
ich umgehen, falls das nötig sein sollte, in C hab ich auch die nötigen 
mittel. Leider hatte ich Regelungstechnik noch nicht...
Hat vielleicht jemand von euch Tipps bezüglich Geometrie, Mechanik und 
Software des Roboters? Ist ein größerer Abstand zwischen Achsen und 
Sensor der richtige Weg? Gibt es Möglicheiten den PID Regler Stabiler 
und gleichzeitig Spontaner ansprechend zu machen, ohne das er wieder an 
fängt sich selbst auf zu schwingen?
Und zu guter Letzt, gibt es Tipps zur Abstimmung des Reglers (bis jetzt 
in etlichen stunden Testfahren von Hand herausgearbeitet)?

Die Links sind zwei Videos vom letztjährigen Stand (Sorry wegen der 
Qualität):
https://drive.google.com/file/d/0B-XkyjWUSoHJUTBZdmFDcTFiNjA/view?usp=sharing
https://drive.google.com/file/d/0B-XkyjWUSoHJVmN1S2JDRHQ3VTA/view?usp=sharing

: Verschoben durch User
von MaWin (Gast)


Lesenswert?

Fabian R. schrieb:
> Mein Ziel für dieses Jahr ist, den Roboter an die Haftgrenze der Reifen
> zu bringen

Genau dort ist das Limit. Nimm dir also ein Chassis das breit und flach 
ist und Moosgummireifen mit Klebeschicht aussen.

Fahre den Kurs ein mal mit konstanter Geschwindigkeit ab und ermittle 
die Kurvenradien.
Beschleunige auf einem ermittelten geraden Stück ein Mal volle Pulle und 
bremse um die Fahrzeugdynamik zu ermitteln.
Fahre ein mal in einer Kurve bis der Wagen wegrutscht.

Dann kannst du vorausberechnen, an welchen Stellen im Kurs du welche 
Maximalgeschwindigkeit haben darfst, wann du bremsen musst und wann du 
beschleunigen kannst.

Darfst du den Kurs nicht zur Probe abfahren, kann man ihn eventuell mit 
einer Kamera vor dem Start optisch erfassen.

von Fabian R. (roboracer)


Lesenswert?

Danke für die Antwort.
Ich komme leider nicht mal im Traum bis zur Haftgrenze der Reifen (sieht 
man klar im Video), da der Roboter vorher dem Kurs nicht mehr folgen 
kann und in der Wand ein schlägt.

Die Mechanik ist wie gesagt das wo ich mich (dank viel Erfahrung) am 
einfachsten tue. Die Kurvengeschwindigkeit vom aktuellen erheblich nach 
oben zu bringen ist Mechanisch kein Problem für mich (bis jetzt halt 
überhaupt nicht nötig da der Regelkreis es nicht packt). Auch die Ideen 
mit erhöhter Drehträgheit, Schwerpunkt und Sensor Position waren der 
versuch, einem ungenügenden Regelkreis mechanisch unter die Arme zu 
greifen.
Meine Probleme liegen eher im bereich der Sensorik, Reglergleichung und 
Abstimmung selbiger. Vielleicht ist mein Code einfach zu langsam, ich 
weiß es nicht.
Ich bin nämlich an nem Punkt, wo ich mit bloßer Abstimmungsarbeit nicht 
mehr weiter komme, es wird einfach nicht schneller. Also hab ich hier 
gefragt... Ich wollte es mit Rechenpower versuchen (deshalb Arduino Due 
mit 84mhz), aber ob das wirklich hilft weiß ich nicht.

von Jan H. (jan_h74) Flattr this


Lesenswert?

Eine wesentliche Verbesserung ist das erhohen von Anzahl IR-Empfanger ! 
Mit nur 2 Empfanger ist die Messung von "Wo ist der linie" sehr 
begrenzt. Besser ist ein array von mehrere IR-Empfanger ueber eine 
grossere Breite.
Layout von Robby ist auch sehr wichtig : niedriges Schwertepunkt, und 
auch zwischen die Hauptrader. Stutzrader soll wenig Last dragen.

von Jens (Gast)


Lesenswert?

Jetzt einfach mal ins Unreine, keine Ahnung ob das funktioniert, aber 
mehr Sensoren ist das eine und mir kam gerade die Idee ob man nicht 2 
Abtaster hintereinander in gewissem Abstand installieren könnte? Wenn 
die Abtaster mit Hilfe von mehr Sensoren eine Info darüber liefern, wie 
weit die Linie aus der Mitte abweicht, könnte man einen Winkel 
bestimmen, den das Fahrzeug fahren muss.

von Fabian R. (roboracer)


Lesenswert?

Danke für´s Antworten

Jan H:
Mehr IR Sensoren dazu bauen habe ich schonmal versucht um dem Roboter 
mehr Winkelfehler zu erlauben bevor er die Linie verliert.
Das Problem dabei war aber, aus den 4 Sensoren ein Sauberes Signal 
linear zur Abweichung zu generieren. Dafür ist mir keine gescheite 
Lösung eingefallen, also habe ich die 4 Sensoren digital ausgewertet und 
ihnen Int Werte zugewiesen. Hat leider gar nicht funktioniert.
Ein Kollege hat 8 Sensoren verwendet und digital ausgewertet, sein Bot 
ist schnell gewesen, hat aber extrem gependelt und viel Leistung 
gebraucht. Schlussendlich hat der Roboter im Wettbewerb nicht gut 
funktioniert, da er ein wenig dreck auf den Reifen hatte und sein 
Roboter durch das starke pendeln extrem viel Grip gebraucht hätte.
Die beiden schnellsten bots im rennen (meiner und der Konkurrent aus dem 
Finale) hatten einfach zwei analog ausgewertete SFH300 als Sensoren.

Den Schwerpunkt musste ich zur mechanischen Dämpfung von der Achse 
entfernen, wenn der nächste bot auch ohne mechanische Dämpfung fährt, 
werde ich den natürlich auf die Achse legen.


Jens:
Ich habe zwei Sensoren die analog ausgewertet werden und über einen 
bereich von einigen cm ein zur Abweichung fast linearen Wert generieren. 
Winkel könnte ich daraus errechnen, bis jetzt geht das ganze halt 
einfach in einen mit viel probieren abgestimmten PID Regler.





Ich schätze das ich schneller rechnen muss um noch schneller fahren zu 
können. Auf kosten der Auflösung kann man wohl das analogRead 
beschleunigen, auch digitalWrite kann man wohl gegen was schnelleres 
ersetzen. Außerdem kommt bald der Arduino Due an, damit rechnet der 
Roboter immerhin 5 mal schneller. Hilft es mir, wenn ich das mache?
Und hat jemand vielleicht eine Idee für einen für´s linien folgen 
besseren Regelkreis? Zb irgend ne Möglichkeit den Regelkreis einige cm 
vor der Kurve auf die gleich kommende Kurve vor zu bereiten?
Kennt sich jemand mit Linien Kameras aus und kann mir sagen ob es sich 
lohnt so eine aus zu probieren?

von Max D. (max_d)


Lesenswert?

Also ich würde™ darüber nachdenken einen CCD-Streifen aus einem Scanner 
probieren. Oder mit einem rotierenden Laser abscannen.
Irgendwie musst du präzisere Infos zu der Lage des Streifens kriegen.
Zusätzlicher Vorteil an einem Laserscanner ist, dass du ein Stück vor 
dem Auto abscannen kannst und damit vorher schon weißt, dass eine Kurve 
kommt.
Das lässt Zeit zum Bremsen, damit kann man auf den Geraden deutlich mehr 
Gas geben.
Ist halt die Frage wo bei dir die Grenze für die Optimierung ist.
Auch interessant wäre evtl. wie genau du auf dem Streifen bleiben musst, 
theoretisch könnt man ja Kurven schneiden und dgl...

Musst du halt wissen wo die Grenze Aufwand/Ergebnis liegt für dich^^

von Fabian R. (roboracer)


Lesenswert?

Danke, das waren neue ideen wie ich sie mir erhofft habe!

Ich darf jederzeit kurven schneiden, dagegen steht nix im Reglement.
Ich werd mich dann mal schlau machen über diese streifen, das halte ich 
für ne super idee.
Auch die mit dem Laser find ich gut, nur kann ich mir noch ned 
vorstellen wie ich da die Abtastung mache? Der Laser leuchtet auf´s 
Papier und eine Fotodiode nimmt die Reflexion wahr? Das ganze konstrukt 
aus Laser und Sensor müsste man dann ja rotierend an ner scheibe 
befestigen, bzw mit einem sehr schnellen Modellbau Servo hin und her 
schwenken, oder?

Die Grenze des Aufwand´s liegt sehr hoch, wenn man bedenkt das ich 
letztes Jahr einige Wochen lang jeden tag mehrere stunden mit dem bot 
verbracht habe. Ich bin mir auch ned zu fein Geld für Upgrades wie 
Brushless Antrieb etc aus zu geben...

von MaWin (Gast)


Lesenswert?

Fabian R. schrieb:
> Meine Probleme liegen eher im bereich der Sensorik

Jan H. schrieb:
> Eine wesentliche Verbesserung ist das erhohen von Anzahl IR-Empfanger !
> Mit nur 2 Empfanger ist die Messung von "Wo ist der linie" sehr
> begrenzt.

Nicht wenn man es ordentlich macht.

Analog.

Die Sensoren müssen gleiches Signal liefern, wenn der Kopf genau über 
der Mitte der Linie steht und zunehmend wird das Signal eines Kanals 
stärker, wenn der Kopf weiter zu seiner Richtung auf der Linie wandert 
und gleichzeitig das Signal des anderes kleiner.

Max D. schrieb:
> Also ich würde™ darüber nachdenken einen CCD-Streifen aus einem Scanner
> probieren.

Unnötig.

Fabian R. schrieb:
> Ich komme leider nicht mal im Traum bis zur Haftgrenze der Reifen (sieht
> man klar im Video),

Ja gut, auf dem Video sind die Dinger ja auch extrem lahmarschig 
unterwegs, das ist ein Tempo zum sicheren Erfassen der Strecke, nicht 
das Renntempo.

Der hier beschleunigt wenigstes schon auf Geraden

https://www.youtube.com/watch?v=AriuYTqxAMg

Der hier geht bis an die Haftgrenze, hat aber Beine statt Räder

https://www.youtube.com/watch?v=4XiRxNkZleY

Der hat einen merkwürdigen Kopf und folgt 90 Grad Winkeln

https://www.youtube.com/watch?v=blRPGKn5Cak

Hier ist gar noch Haftung durch Buckel hindernd

https://www.youtube.com/watch?v=HTf8n1ABE-A

von aSma>> (Gast)


Lesenswert?

Servus,
ich wollte auch demnächst mal so ein Projekt starten. Ein paar Gedanken 
habe ich mir auch schon gemacht.

Zuerst muss, wie auch in richtigen Rennen, das Auto so leicht wie 
möglich sein. Man muss ja Masse beschleunigen und wieder abbremsen.

Ein stm32f103 <4€ bei ebay ist doch auch Arduino kompatibel?!

Welche Abtastzeit erreichst du max. mit den 8bitter? Diese richtet sich 
an den Sensoren (Datenblätter). Weiterhin wie sieht das Signal der 
Sensoren aus? Wenn das Signal verrauscht ist und du musst mit einen 
großen Tiefpass glätten, dann wird es auch kaum schneller.

Zur Regelungstechnik:
Man bestimmt die Regelstrecke, macht eine Simulation, erstellt den 
Regler und prüft anhand des Reglers die Regelgüte.
Hier ist das Problen, dass man schon beim ersten Punkt scheitert. Ich 
hätte eine Idee wie man anhand des Bodediagramms die Strecke bestimmen 
könnte. Das Proble ist, dass ich zu weit ausholen müsste.

Weiterhin bleibt nur das einstellen der Regelparameter und ein langsames 
antasten an der reellen Strecke. Man könnte durch Bluetooth usw. eine 
Möglichkeit erschaffen, sodass man die Werte des Reglers in Echzeit 
verändern könnte. Dadurch spart man sich viel Zeit.

Aber warum verrate ich soviel meiner baldingen Konkurrenz? :D

von Fabian R. (roboracer)


Lesenswert?

MaWin schrieb:
> Analog.
>
> Die Sensoren müssen gleiches Signal liefern, wenn der Kopf genau über
> der Mitte der Linie steht und zunehmend wird das Signal eines Kanals
> stärker, wenn der Kopf weiter zu seiner Richtung auf der Linie wandert
> und gleichzeitig das Signal des anderes kleiner.

Analog ist die Auswertung derzeit. Bei Programmstart werden beide 
Sensoren kalibriert um das Umgebungslicht aus zu gleichen.
Im Programm wird der eine Sensorwert vom anderen abgezogen, um ein 
lineares Signal von -x bis +x zu bekommen, das dann in den PID gefüttert 
wird.
Nur da bin ich mit einem normalen Arduino Nano voll am ende und werde 
einfach ned schneller.

MaWin schrieb:
> Ja gut, auf dem Video sind die Dinger ja auch extrem lahmarschig
> unterwegs, das ist ein Tempo zum sicheren Erfassen der Strecke, nicht
> das Renntempo.
Das video ist leider fast Renntempo. Der Wettbewerb ist keine Profi 
Veranstaltung, sondern der Höhepunkt vom ersten Semester C vorlesung in 
Mechatronik. Das lahmarschig würde ich gern beseitigen, deshalb habe ich 
diesen thread eröffnet.

aSma>> schrieb:
> Welche Abtastzeit erreichst du max. mit den 8bitter
Weiß ich leider nicht, werde ich aber bald mal abfragen

aSma>> schrieb:
> Weiterhin bleibt nur das einstellen der Regelparameter und ein langsames
> antasten an der reellen Strecke. Man könnte durch Bluetooth usw. eine
> Möglichkeit erschaffen, sodass man die Werte des Reglers in Echzeit
> verändern könnte. Dadurch spart man sich viel Zeit.
>
> Aber warum verrate ich soviel meiner baldingen Konkurrenz? :D

genauso hab ich den PID regler bis jetzt in mühsamer Handarbeit 
abgestimmt. Simulieren kann ich leider nichts, dazu reichen meine 
Software Kenntnisse um längen nicht
Wieso Konkurrenz? Außer du hast vor am THI internen robo wettbewerb teil 
zu nehmen, glaube ich nicht das wir jemals auf der selben veranstaltung 
fahren werden ;)

von Max D. (max_d)


Lesenswert?

Fabian R. schrieb:
> Auch die mit dem Laser find ich gut, nur kann ich mir noch ned
> vorstellen wie ich da die Abtastung mache? Der Laser leuchtet auf´s
> Papier und eine Fotodiode nimmt die Reflexion wahr? Das ganze konstrukt
> aus Laser und Sensor müsste man dann ja rotierend an ner scheibe
> befestigen, bzw mit einem sehr schnellen Modellbau Servo hin und her
> schwenken, oder?

Ich würde experimentieren mit einem rotierenden schrägen Spiegel vor dem 
Laser der den Strahl in eine Linie ein Stück vor das Auto projeziert.
Dann schattest du den Strahl nach hinten/oben ab (damit du dem Publikum 
nicht die Augen laserst) und packst eine Fotodiode vorne an das Auto 
damit die den Strich "sieht". Das Signal von der Diode liefert dann das 
hell/dunkel Muster vor dem Auto und mit simpler Mathematik findest du 
den dunklen Streifen. (Die Barcodescanner an der Kasse funktionieren 
so).
Sachen wie Umgebungslicht und dgl. kannst du ausfiltern indem du einen 
modulierten IR-Laser und einen Filter vor dem Sensor nimmst.

von Sebastian (Gast)


Lesenswert?

In Verbindung mit einer geeigneten, zylindrischen Linse könnte ein 
Fotodiodenarray als Sensor interessant sein. Im Gegensatz zum CCD 
einfacher auszuwerten, genauso kompakt. Man kann so etwas auch beim 
Gebrauchthändler erwerben, um Kosten zu sparen, z.B. eine Zeile aus 16 
Elementen hier: 
http://second-re-use.com/product_info.php?products_id=356

von Stefan O. (stefano)


Lesenswert?

Hallo Fabian!

Ich baue auch Wettbewerbs Linefollower und nehme immer an der 
Robotchallenge in Wien teil.

Hier etwas Futter für dich (google translate hilft):

http://forbot.pl/blog/relacje/wideorelacja-roboxy-2015-id6954
http://forbot.pl/blog/wp-content/uploads/2015/05/Roboxy2015_19.jpg
https://www.youtube.com/watch?v=cvkveIf2o9g

Ich hab auch noch einige Teile die perfekt für dich wären abzugeben.
Damit kannst du viel erreichen, wenn's auch nicht perfekt ist.
Vielleicht können wir ja auch privat weiterschreiben (vmtl. nicht zu 
interessant für den Rest)

Freue mich das jemand dieses schöne Hobby beginnt!

LG Stefan

von Fabian R. (roboracer)


Lesenswert?

Danke für das Angebot, können wir gerne machen Stefan. Per Mail oder 
wie?

Der aus dem bild hat genau das umgesetzt was mein Kollege und ich uns 
auch überlegt haben (Impeller für unterdruck) :D
Ich weiß jetzt auch, wieso ich ab nem bestimmten Punkt keine chance mehr 
hatte weiter zu kommen, mein Code ist viel zu langsam. Ich habe 400ms 
durchlaufzeit, das kann nicht funktionieren. Jetzt ist erstmal Code 
optimieren angesagt...

von Jan H. (jan_h565)


Lesenswert?

Das auswerten von mehr IR-sensoren kan relatif einfach : identisch wie 
sie das jetzt machen mit 2 sensoren, konnen sie das auch machen mit 4, 6 
oder 8 sensoren :
Linie_position = IR1*2+IR2-IR3-IR4*2
Vorab naturlich IR sensoren kalibrieren. Meine kalibrierung geht so : 
Alle sensoren drehen langsam ueber die Linie, min und max ADC wert wird 
gespeichert. Und dan ist meine kalibrierte Wert :
IR=ADC_value-(ADC_max+ADC_min)/2
Bezuglich PID-loop zeit : jetzt verfassen ich 10 ADC-kanalen in ca 2 ms, 
PID Ergebnis wird gleich in 2 PWM-werte für die Motoren gesendet. 
µcontroller ist eine STM32F100 (Discovery board).
Daneben muss man auch noch die Ablauf so machen, das bei verlieren von 
die Linie, der Roboter in de letzte Richtung steuern bleibt !
Grussen

von Fabian R. (roboracer)


Lesenswert?

Moment, hab mich vertan. Es sind 0,4ms Durchlaufzeit. Damit frage ich 
mich wieder wo es gehangen hat

Danke Jan, das werde ich mal probieren!

von Stefan O. (stefano)


Lesenswert?

Hallo Fabian!

Ich hab dir schon eine private Nachricht hier über das Forum geschickt.
Impeller sind in der Tat recht verbreitet - wenn auch nicht ganz so grob 
ausgeführt wie in dem Beispiel oben ;-)

LG Stefan

von Tobias .. (bitfehler)


Lesenswert?

Wenn ich mir dein Roboter und das Video so anschaue, dann fällt mir auf, 
dass bei dir die Sensoren am Heck des Roboters angebracht sind.

Ist dies nicht ein Nachteil bei scharfen Knicken wie 90°, wenn der 
Roboter weiter fährt und so erst spät bemerkt, dass die Linie einen 
Bogen gemacht hat?

In den verlinkten Bildern / Videos sind ja eigentlich nur Roboter 
dargestellt, bei denen die Sensoren an der Front angebracht sind.
Ich dachte immer, das wäre die übliche Praxis.

von Stefan F. (Gast)


Lesenswert?

> Eine wesentliche Verbesserung ist das erhohen von Anzahl IR-Empfanger !

Nein. Das bekommt man auch mit einem einzigen Sensor hin. Man kann immer 
an der rechten Kante des Streifens entlang fahren. Heller = nach links 
lenken. Dunkler = nach rechts lenken. Aber nicht gleich bei jedem Pups 
lenken, sonst wird aus der Fahrt eine lahme Zitterpartie.

Entscheidend ist eine gute Regelung. Ich hatte es zuerst mit einem PID 
Regler versucht, bin aber am Ende bei einem einfacheren PI Regler heraus 
gekommen.

Wenn dein Auto merkt, dass es zu weit Links ist, dann darf es nicht 
einfach nur nach rechts lenken. Es muss herausfinden, wie weit es nach 
rechts lenken muss und dabei auch die aktuelle Geschwindigkeit 
berücksichtigen. Denn je mehr es lenkt, umso langsamer muss es werden, 
damit es nicht ausbricht. Also fortlaufen messen, regeln, Fehler 
ermitteln, nachbessern.

Ganz wichtig ist: Keine abrupten Lenkmanöver, und keine Abrupten 
Beschleunigungen oder Bremsmanöver. Das alles muss an die 
Geschwindigkeit und Reibung der Reifen angepasst werden.

von Stefan F. (Gast)


Lesenswert?

> Ist dies nicht ein Nachteil bei scharfen Knicken wie 90°, wenn der
> Roboter weiter fährt und so erst spät bemerkt, dass die Linie einen
> Bogen gemacht hat?

Würde ich auch sagen. Wenn die Sensoren vorne sind, hat man ein paar 
Millisekunden zeit, um dem Signal zu folgen. Wenn sie hinten sind, kommt 
das Steuersignal stets zu spät und dann muss die Software bei engen 
Biegungen raten, wo die Linie sich denn versteckt hat.

von Stefan F. (Gast)


Lesenswert?

> Es sind 0,4ms Durchlaufzeit

Reicht locker. Ich habe das auch mit 10ms stabil hinbekommen.

von linus (Gast)


Lesenswert?

T. .. schrieb:
> Wenn ich mir dein Roboter und das Video so anschaue, dann fällt mir auf,
> dass bei dir die Sensoren am Heck des Roboters angebracht sind.
>
> Ist dies nicht ein Nachteil bei scharfen Knicken wie 90°, wenn der
> Roboter weiter fährt und so erst spät bemerkt, dass die Linie einen
> Bogen gemacht hat?

Ja, das wäre es, wenn er vorwärts fahren würde. Ich meine er fährt 
rückwärts, sonst hätte er kaum eine Chance überhaupt auf der Linie zu 
bleiben.

von Tobias .. (bitfehler)


Lesenswert?

linus schrieb:
> Ja, das wäre es, wenn er vorwärts fahren würde. Ich meine er fährt
> rückwärts, sonst hätte er kaum eine Chance überhaupt auf der Linie zu
> bleiben.

Da habe ich mich beim Video anschauen wohl ein wenig durcheinander 
bringen lassen.
Bei genaueren hinsehen sieht es wohl doch aus, dass er rückwärts fährt 
und die Sensoren somit "vor" dem Fahrzeug liegen.

von aSma>> (Gast)


Lesenswert?

Stefan U. schrieb:
>> Es sind 0,4ms Durchlaufzeit
>
> Reicht locker. Ich habe das auch mit 10ms stabil hinbekommen.

Servus,
0,4ms glaube ich nicht. Eher 0,4s?

Bei einen diskreten Reglerentwurf muss immer die Abtastzeit TA konstant 
sein. Genau auf diese Zeit basiert der Regler.

Deshalb muss mittels Interrupt oder DownCounter (sysTick) eine 
"Echtzeit" erstellt werden. Da hier eh nur herumprobiert wird, wird das 
wohl nichts ausmachen. Hat aber nichts mit Wissenschaft zu tun. :D

Stefan U. schrieb:
> Entscheidend ist eine gute Regelung. Ich hatte es zuerst mit einem PID
> Regler versucht, bin aber am Ende bei einem einfacheren PI Regler heraus
> gekommen.

Ja, der D Anteil kann schnell zu schwingen beginnen. Deshalb muss man 
durch Faustformel die Verzögerungskonstante T1 in Abhängigkeit von TV 
eingestell werden (siehe Aström, Hägglund). Aber wie im Leben so ist, 
braucht man den D-Anteil oftmals nur bei trägen Strecken. Hier ist die 
Zeitkonstante der Strecke sehr gering, da reicht ein PI-Regler aus...

von Jan H. (jan_h74) Flattr this


Lesenswert?

aSma>> schrieb:
> Stefan U. schrieb:
>>> Es sind 0,4ms Durchlaufzeit
>
> Servus,
> 0,4ms glaube ich nicht. Eher 0,4s?
>
Für eine schnelle Linienfolger ist 0,4 s eine Ewigkeit ! Bei 1m/s 
(Wettbewerb ist eher 2 bis 4 m/s !) ist deine Robby schon 40 cm weiter 
gefahren nach eine PID - Durchlauf ! Zeiten von 1 ms sind absolut 
normal. Moderne µ-controller haben kein Problem damit. Ein STM32 F100 
schaft locker 100 k/s ADC Messungen.

von aSma>> (Gast)


Lesenswert?

Jan H. schrieb:
> Für eine schnelle Linienfolger ist 0,4 s eine Ewigkeit ! Bei 1m/s
> (Wettbewerb ist eher 2 bis 4 m/s !) ist deine Robby schon 40 cm weiter
> gefahren nach eine PID - Durchlauf ! Zeiten von 1 ms sind absolut
> normal. Moderne µ-controller haben kein Problem damit. Ein STM32 F100
> schaft locker 100 k/s ADC Messungen.

Ja, stimmt schon und es ist mir auch klar. Nur dann weiß ich nicht warum 
der TE auf die Idee kommt einen größeren µC zunehmen! Ich hatte gedacht, 
dass er dadurch so unglücklich geworden ist.

Eine viel zu kleine Abtastzeit kann auch sehr kritisch sein, da das 
Eingangsignal sehr verrauscht sein kann (ist). Durch Glättung kommt man 
ey wieder auf 10ms usw. Ein Katz und Mausspiel.

Mit dem stm32f1x ist es mir ja klar da kommt auf auf 1µs.

von Fabian R. (roboracer)


Lesenswert?

aSma>> schrieb:
> Bei einen diskreten Reglerentwurf muss immer die Abtastzeit TA konstant
> sein. Genau auf diese Zeit basiert der Regler.
danke!
Dann werd ich wohl mal dafür sorgen das ich eine stabile Durchlaufzeit 
habe und den D Anteil meines Reglers deaktivieren

Zum Thema Sensoren:
Ich benutze SFH300 Fotodioden die ich ähnlich wie beim Serien ASURO ca 
1cm über dem Boden an bringe und entweder Rot oder IR beleuchte. Ist 
diese Diode eine gut Wahl oder gibt es da bessere/genauere?

von Stefan O. (stefano)


Lesenswert?

"Standard" sind die QRE1113 - der Abstand zum Boden muss da allerdings 
geringer sein!

https://www.sparkfun.com/products/13582

@Fabian: Hast du meine private Nachricht bekommen? Habe all diese Infos 
jahrelang gesammelt und könnte Sie dir zur verfügung stellen.
Auch haufen übrige Teile hab ich abzugeben. Hab bisher noch nix von dor 
gehört?

LG Stefan

von MaWin (Gast)


Lesenswert?

Stefan O. schrieb:
> "Standard" sind die QRE1113

Ziemlich übel, der misst ja nicht mal analog.

von Stefan O. (stefano)


Lesenswert?

Der Sensor schon, ich hab ja nicht gesagt das das verlinkte Board #
Standard ist. Ich nutze die Sensoren mit einem A/D und 16 Kanälen.
ziemlich gute Sensoren sogar - bin hoch erfreut wenn du mir wesentlich 
bessere nennen kannst.

Das ist die Einkanalversion in Analog: 
https://www.sparkfun.com/products/9453

: Bearbeitet durch User
von Jan H. (jan_h565)


Lesenswert?

Ich verwende IR-fototransitoren BPW34 mit standard IR-leds die 100 mA 
Strom verkraften konnen. Die sind dan in ein array montiert. Das Forteil 
ist die grosse Leseabstand (bis 25 mm). Auf den link mehr info : 
http://wiki.robotmc.org/index.php?title=Lijnvolgen

von MaWin (Gast)


Lesenswert?

Stefan O. schrieb:
> bin hoch erfreut wenn du mir wesentlich bessere nennen kannst.

Wenn du rechtzeitig gekauft hättest:
http://www.pollin.de/shop/dt/NTk1OTc4OTk-/Bauelemente_Bauteile/Aktive_Bauelemente/Optoelektronik/PSD_1L5_CP1.html

mit einer Optik wird eine Linie auf dem Boden beleuchtet und erfasst. 
Der PSD liefert ein Analogsignal unabhängig von der Umgebungs- und 
Bodenhelligkeit aber abhängig von der Position des Strichs in Form des 
Differenzsignals.

von Stefan O. (stefano)


Lesenswert?

MaWin schrieb:
> Stefan O. schrieb:
>> bin hoch erfreut wenn du mir wesentlich bessere nennen kannst.
>
> Wenn du rechtzeitig gekauft hättest:
> 
http://www.pollin.de/shop/dt/NTk1OTc4OTk-/Bauelemente_Bauteile/Aktive_Bauelemente/Optoelektronik/PSD_1L5_CP1.html
>
> mit einer Optik wird eine Linie auf dem Boden beleuchtet und erfasst.
> Der PSD liefert ein Analogsignal unabhängig von der Umgebungs- und
> Bodenhelligkeit aber abhängig von der Position des Strichs in Form des
> Differenzsignals.

Hallo MaWin.

Interessantes Bauteil, keine Frage! Allerdings ist die damit entstehende 
Gesamtlösung sicher den bestehenden nicht überlegen.
Ohne Optik verwendet ist die erfassbare Breite viel zu klein (typische 
Strichstärken sind ~15mm) und mit Optik wird das ganze sicher viel zu 
schwer. Bedenke das der Sensor in großem Abstand zur Drehachse montiert 
ist und somit einen hohen Einfluss auf das Rotationsträgheitsmoment des 
Roboters hat. Dies hat zur Folge das der Roboter beim drehen viel träger 
wird.

Ein Signal unabhängig von der Umgebungs, und Bodenhelligkeit kann man 
mit einem Array aus Einzelsensoren und etwas Software auch errechnen.

LG Stefan

von Lurchi (Gast)


Lesenswert?

Vom mechanischen Aufbau sollte der Sensor weit vorne sein, und muss auch 
eine gewisse Auslenkung erlauben. Es muss ja nicht der Sensor genau der 
Linie folgen, sondern eher der Schwerpunkt / Hauptteil des Bots. Da kann 
es mit den nur 2 Sensoren ggf. schon knapp werden, etwas mehr etwa 
linearer Bereich sollte es schon sein. Von der Mechanik sollte die Masse 
überwiegend in der Mitte sein - also wenig Trägheitsmoment - der 
Plastikteil nach hinten sollte also nicht zu schwer sein. Lose wackelnde 
Teile am Fahrzeug sind auch eher nicht so gut, vor allem schwer zu 
berechnen.

Die Abtastung (Reglerdurchlauf) sollte schon schnell sein (für 1 m/s 
Geschwindigkeit sollte das schon im Bereich 1 ms sein - das entspräche 
etwa einem Positionsfehler von 1 mm) und entsprechend muss auch der 
Sensor ein gutes Rauscharmes Signal liefern. Es ist halt eine Abwägung 
zwischen Verzögerung der Regelung und Rauschen, dass bei schnellerer 
Abtastung zunimmt.

Die Dämpfung sollte im wesentlichen von der Regelung kommen, nicht von 
der Mechanik. Die Schwierigkeit ist es halt den Regler gut an der 
Fahrzeug anzupassen. Wegen der 2 Motoren wird es auch kein einfacher PID 
Regler sein, schon weil man 2 Ausgabewerte hat. Wegen der Grenzwerte 
wird man sich auch gut um Anti Windup kümmern müssen.

Es sind also vor allem 2 Baustellen: der Sensor und die Software für die 
Regelung.

von Stefan O. (stefano)


Lesenswert?

Ein erster guter Ansatz meiner Erfahrung nach:

Einen Regler für die Geschwindigkeit und einen für die Drehrate.
Dazu brauchst du aber dann Motor-Encoder.

Du gibst dem äußeren Regler eine zu erreichende Geschwindigkeit vor.
Der innere Regler errechnet aufgrund der Regelabweichung (Linie) die 
notwendige Drehzahldifferenz der beiden Räder und regelt diese.
Damit lassen sich schon interessante Dinge erreichen.

LG Stefan

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.