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
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.
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.
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.
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.
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?
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^^
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...
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
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
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 ;)
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.
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
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
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...
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
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!
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
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.
> 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.
> 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.
> Es sind 0,4ms Durchlaufzeit
Reicht locker. Ich habe das auch mit 10ms stabil hinbekommen.
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.
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.
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...
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.
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.
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?
"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
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
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
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.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.