Liste der Anhänge anzeigen (Anzahl: 3)
Robo mit Knicklenkung: Radgeschwindigkeiten berechnen
Hallo,
ich bin gerade an der Programmierung der Motorsteuerplatine meines Roboters dran:
Anhang 27017Anhang 27018
(Morgen kann ich bei Tageslicht bessere Bilder machen)
Wie man auf den Bildern sehen kann besitzt er eine Knicklenkung. Dabei wird jedes Rad einzeln angetrieben und der Knickwinkel mithilfe eines Potis gemessen. Die Motorregelung funktioniert auch schon sehr gut: Für jedes Rad kann eine Geschwindigkeit festgelegt werden, die dann via PWM gehalten wird.
Was jetzt tatsächlich schwieriger ist als ich gedacht habe, ist:
Wenn der Roboter fährt soll als "Hauptpunkt" der Mittelpunkt zwischen den beiden Vorderrädern genommen werden, d.h. die Motorsteuerplatine bekommt den Befehl den Hauptpunkt zu einer bestimmten relativen Koordinate unter einem bestimmten Winkel heranzufahren. Davon lässt sich dann ableiten, wie sich die Vorderräder zu drehen haben. Was sich jetzt ableiten lassen sollte ist, wie sich die Hinterräder zu drehen haben; nämlich so, als würde sie sich frei drehen können.
Geradeaus ist einfach: Alle gleich schnell
Im Kreis ist auch einfach, da kann man die einzelnen "Bahngeschwindigkeiten" herausrechnen:
Anhang 27019
Aber das schwierige sind alle anderen Möglichkeiten:
- Vom Geradeausfahren in eine Kurve übergehen
- Die Vorderräder können sich in unterschiedliche Richtungen drehen
Im Endeffekt braucht man also eine Funktion, der man Übergibt:
- Geschwindigkeit linkes Vorderrad
- Geschwindigkeit rechtes Vorderrad
- Knickwinkel
und die errechnet
- Geschwindigkeit linkes Hinterrad
- Geschwindigkeit rechtes Hinterrad
Aber daran scheitert es bei mir :( Zwar habe ich es hinbekommen, dass es ungefähr passt, aber eben nicht genau -> Die Konstruktion schiebt sich teilweise über den Boden, reifen Quitschen und die Motoren freuts auch nicht...
Hätte den jemand von euch eine Idee wie man da dran gehen könnte? Oder einen Link der irgendwie weiterhelfen könnte?
Viele Grüße und vielen Dank im vorraus
schumi
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Zitat von
hbquax
Poste doch bitte mal die Funktion, die du bisher gefunden hast und die nur ungefähr passt. Sonst fangen wir hier ja völlig bei Null an.
Also ich hab jetzt nochmal richtig aufgeräumt, bzw. mehr oder weniger von vorne angefangen. Ich berechne das ganze über Vektoren und eigentlich sieht es jetzt ganz gut aus, d.h. die ausgegebenen Werte scheinen über den Daumen gepeilt richtig zu sein. Habe meinen Test-Code mal angehangen (Ich habe das ganze erst am PC programmiert und über Printf auch die ganzen Zwischenergebnisse ausgegeben. Wer das also testen möchte kanns einfach so kompilieren)
Zitat:
Die einfache Lösung wäre, alle vier Motoren in Reihe zu schalten, dann regelt sich das von selbst, Stichwort "elektrisches Differential", ist dann nur nicht so geländegängig, und das ist ja vermutlich das Ziel.
Richtig, zudem habe ich meine Motorsteuerplatine schon (4 einzelne H-Brücken mit BackEMF-Messung)
Zitat:
Für die Transitionsfälle musst du jetzt noch berechnen, um wieviel sich jedes Rad dreht, wenn das Fahrzeug nicht fährt, sondern nur lenkt. Dazu hältst du wie gehabt deinen Referenzpunkt fest, knicktst im Geiste dein Fahrzeug und berechnest die Bewegung jedes Radaufstandspunktes. Dann kommt z.B. raus 1° Lenkwinkel = 3 mm vorwärts rechts vorne usw., und das bedeutet dann auch Lenkgeschwindigkeit 1°/s = 3 mm/s zusätzliche Geschwindigkeit für rechts vorne.
Die Zusatzgeschwindigkeite infolge Lenkbewegung musst du dann den stationären Geschwindigkeiten hinzufügen. d.h. du überlagerst einfach die beiden Geschwindigkeiten. Dann sollte es klappen.
Das war auch mein erster Ansatz, allerdings hatte ich da noch Fehler drin ist mir aufgefallen. Jetzt mache ich es etwas anders:
- Bekannt sind Knickwinkel und die Geschwindigkeiten der beiden Vorderräder
- Berechnung, wohin und unter welchem Winkel sich der vordere Teil bewegt
- Berechnung, wohin sich das Gelenk hinbewegt
- Daraus schließen, wie sich der hintere Teil bewegt (ohne Traktrix [Aber in diesem Moment fällt mir ein, dass es damit noch besser sein könnte])
- Und dann die Bewegung der Hinterräder herleiten
Danke :)
Zitat:
Zitat von
oberallgeier
Hallo schumi, das Stichwort heißt Traktrix.
Vielen Dank für den Tipp, kannte ich noch nicht :)
Ich werde jetzt erst mal meinen "Mastercontroller" (kleiner Router mit OpenWRT) auf den Robo bauen, damit ich an ein paar Debug-Ausgaben komme. Denn ganz flüssig läuft es noch immer nicht (Ich habe das Gefühl, dass die Geschwindigkeitsmessung der Räder nicht nur von der tatsächlichen Geschwindigkeit abhängt, sondern auch die PWM-Regelung da reinfunkt)