Roboter fährt nie geradeaus


19

Ich benutze 2 identische Gleichstrommotoren und ein Lenkrad. Die Motoren sind mit dem Motortreiber L293D verbunden und werden von RPi gesteuert .

Der Roboter fährt nicht geradeaus. Es biegt nach rechts ab. Ich lasse beide Motoren mit 100% PWM laufen .

Was ich versucht habe, um den Fehler zu beheben:

  1. Ich habe die PWM des Rades auf 99% erhöht , aber der Roboter dreht sich nur auf die andere Seite.
  2. Ich habe das Gewicht des Roboters angepasst und das Problem besteht weiterhin.

Ich habe mal versucht den Motor ohne Last laufen zu lassen. Ist das die Ursache dafür, wie mir später gesagt wurde, dass ein Gleichstrommotor ohne Last sie beschädigt?

Wenn dies nicht der Fall ist, sagen Sie mir bitte, wie Sie dieses Problem lösen können, ohne Sensoren zur Steuerung zu verwenden.


In einer differentiellen Laufwerkskonfiguration, die Sie verwenden, ist dies sehr wahrscheinlich. Ein kleiner Unterschied zwischen den beiden Motoren führt dazu, dass sich der Roboter dreht.
Demetris

4
Willkommen bei der Steuerung. Sie benötigen eigene Sensoren (Ihre Augen), um das Problem selbst zu erkennen. Wie wird der Roboter es Ihrer Meinung nach ohne zusätzliche Sensoren erkennen können? Den Regelkreis mit Sensoren zu schließen, ist der richtige Weg.
Biegeeinheit 22

1
Schrittmotoren funktionieren möglicherweise, wenn Sie Sensoren vermeiden möchten.

@bdares - Wenn es keine Sensoren gibt, woher weiß der Roboter, wann er den Kurs korrigieren muss? Wenn ein Rad auf einen Bereich mit geringer Reibung (z. B. Staub) trifft und durchrutscht, dreht sich der Roboter und korrigiert nie.
Chuck

Wenn Sie sagen, dass keine Sensoren vorhanden sind, kann dies bedeuten, dass keine externen Sensoren vorhanden sind, oder schließen Sie auch Encoder an den Rädern aus? denn das ist die typische Lösung für dieses Problem.
James Ryan

Antworten:


29

Ich poste dies als Antwort, weil es die Antwort ist.

Das kannst du nicht.

Wie in @ BendingUnit22 erwähnt, versuchen Sie, den Regelkreis zu öffnen. Geräusche und Variationen bedeuten, dass Ihr Roboter niemals eine perfekt gerade Linie fährt.

Die Motoren könnten unterschiedliche Wicklungswiderstände haben (unterschiedliche Antriebsströme / Drehmomente), die Räder könnten unterschiedliche Größen haben, die Räder könnten unterschiedliche Traktionseigenschaften haben, das Nachlauflager könnte "steif" sein, der Nachlauf könnte beim Starten des Fahrzeugs nicht perfekt gerade sein kann der Boden unterschiedliche Oberflächenreibungseigenschaften haben (sprich: Staub oder Teppich) - die Liste geht weiter und weiter.

Die einzige Möglichkeit, die Dinge zu berücksichtigen, auf die Sie keinen Einfluss haben (was ich oben erwähne + mehr), besteht in der Verwendung von Feedback-Sensoren.

Sie können versuchen, eine bessere Open-Loop-Leistung zu erzielen, indem Sie die aufgeführten Probleme beheben. Es gibt jedoch noch mehr und Sie können einfach nicht alles kontrollieren.


5
Genau! Das Problem liegt in der Aussage "Ich verwende 2 identische Gleichstrommotoren". Sie sind nie perfekt identisch, und wie @Chuck erwähnt, gibt es eine ganze Reihe weiterer Überlegungen. Das Einzige, was in der Robotik sicher ist, ist, dass Fehler und Geräusche auftreten.
Ryan Loggerythm

2
Die Verwendung von zwei Rädern auf derselben Achse sollte immer noch viel bessere Ergebnisse liefern als die Verwendung von zwei gleichen Motoren, nicht wahr?
John Dvorak

@ JanDvorak - Ich bin mir nicht ganz sicher, was Sie meinen, wenn Sie sagen: "Zwei Räder auf derselben Achse", aber ich glaube, es wird verstanden / impliziert, dass die beiden Räder auf derselben geometrischen Achse liegen. Wenn Sie die gleiche Steuerachse (wie in einem Motor) oder Achse (wiederum mit einem Motor) meinen , würde ich darauf hinweisen, dass es nicht möglich ist, eine Lenkung mit Differentialantrieb mit einer blockierten Achse durchzuführen. Damit ein Motor beide Räder auf unterschiedliche Drehzahlen regeln kann, ist ein Differential (und eine andere Ausrüstung) erforderlich. Das Differential bricht die Achse in zwei Teile und Sie sind wieder auf dem ersten Platz.
Chuck

Ich meinte eine Achse, sorry. Ich wusste nicht, dass es eine Anforderung gab, nicht gerade gehen zu können?
John Dvorak

2
@ JanDvorak - Ich glaube, der OP-Roboter ist ein Fahrzeug im Mikromaus-Stil. Auch wenn es nur geradeaus fahren und eine Achse verwenden musste, gelten alle anderen Fehlerquellen weiterhin. Wenn ein Rad einen um 0,1% größeren Durchmesser als das andere hat, legt es eine Weglänge zurück, die um 0,1% weiter als der kleinere Reifen pro Umdrehung ist . Angenommen, die nominelle Radgröße beträgt 10 cm und der Radabstand 10 cm. Der größere Reifen hat eine Länge von 10,01 cm und legt 0,0314 cm pro Umdrehung zurück . Für den Radstand dreht der Roboter 0,12 Grad pro Radumdrehung . 0,01 cm können leicht von Staub auf einem Reifen stammen.
Chuck

6

Da das Problem des offenen und geschlossenen Regelkreises bereits erwähnt wurde, möchte ich einen Kommentar zu "Ich habe einmal versucht, einen Gleichstrommotor ohne Last zu betreiben" abgeben.
Ja, Sie könnten Ihren Motor dadurch beschädigen, aber Sie können Ihren Motor auch durch eine Last beschädigen oder zerstören. Die Zerstörung kommt von der Strömung und der daraus resultierenden Temperatur. Wenn kein Rauch und kein offensichtlicher Geruch vom Motor ausgeht, ist er höchstwahrscheinlich nicht beschädigt. Aus meiner Erfahrung kann ich sagen, dass Gleichstrommotoren im Hobby-Maßstab bei Temperaturen weit über 100 ° C anfangen, sich zu verschlechtern. Und Sie werden solche Temperaturen auf jeden Fall bemerken

EDIT:
Ich habe noch einmal darüber nachgedacht und ich könnte eine Idee haben, über die Ihr Kollege gesprochen haben könnte. Es gibt eine spezielle Art von AC-Motor. Dies sind nicht erregte Synchronmotoren. Grundsätzlich sind sie für die Selbstzerstörung gebaut. Wenn Sie sie einschalten, werden sie beschleunigt, bis sie sich selbst zerlegen. Wenn Sie sie jedoch stark belasten, können sie diesen Zustand nicht erreichen, nur weil sie einen enormen Moment auf die Last ausüben müssen. So können Sie sie für vernünftige Zwecke verwenden. Wie auch immer, Sie haben definitiv keinen solchen Motor in Ihrer Anwendung.


1
Ich denke auch, dass Sie, besonders bei Hobby-Motoren, die Isolierung der Wicklungen wahrscheinlich bereits verbrannt haben, wenn Sie sie so weit aufheizen, dass Sie bemerken, dass sie heiß ist oder komisch riecht. Wie viele elektrische Geräte funktioniert es entweder einwandfrei oder es ist kaputt. Es gibt nicht viele Zwischenfälle.
Chuck

Es gab keinen solchen Rauch oder irgendwelche sichtbaren Schäden. Vielleicht ist es nicht beschädigt, da ich es weniger als eine halbe Minute laufen ließ.
Maus

2

Was Sie beschreiben, nennt sich Open Loop-Steuerung, und dazu benötigen Sie zwei Motoren, die genau gleich sind, zwei Räder, genau gleich, der Roboterschwerpunkt muss sich in der Mitte zwischen den Rädern befinden, ein perfekter symmetrischer Stromkreis. und schließlich eine perfekte ebene Fläche zum Laufen.

Um dies zu erreichen, bestellen Sie in der Regel zehn oder hundert Teile und führen dann umfangreiche Tests durch, um zwei Motoren zu finden, die in Bezug auf Leistung und Geschwindigkeit im Verhältnis zu Spannung und PWM am besten zueinander passen. Machen Sie dasselbe mit den Rädern, den Motorsteuerungen und anderen Teilen.

Dieser Vorgang wird als Binning bezeichnet. Nach diesen Tests sortieren Sie sie nach ihren Fähigkeiten oder Merkmalen. Es wird als zeit- und ressourcenintensiver angesehen, als auf ein Closed-Loop-Modell umzusteigen, und es ist nicht einmal für schlechte Bodenbedingungen verantwortlich.

Dies ist jedoch eine Möglichkeit, Ihre Anforderungen ohne zusätzliche Sensoren zu erfüllen.


1

Obwohl es niemals perfekt sein wird, kann es einen einfachen Weg geben, es geradliniger zu machen.

Wenn das Auto bei 100% -100% immer nach links und bei 100% -99% immer nach rechts abbiegt, sollten Sie in der Lage sein, dies zu verbessern, indem Sie Werte dazwischen ausprobieren.

Beginnen Sie mit 100% -99,5% und fahren Sie je nach Ergebnis mit 100% -99,75% oder 100% -99,25% fort. Dies sollte bald zu einer Situation konvergieren, in der Sie "durchschnittlich" geradeaus fahren werden.


0

Nun, wenn das Problem nicht in Unterschieden in der Hardware oder Software für jedes Rad liegt, dann ist es wahrscheinlich ein Problem mit natürlichen Unvollkommenheiten, entweder in der Art und Weise, wie Sie den Roboter gebaut haben, oder in der Art und Weise, wie die Motoren hergestellt wurden. Die Verbindungen sind möglicherweise nicht fest oder der RPI gibt möglicherweise nicht denselben Strom aus. Sie möchten wahrscheinlich Geschwindigkeitsregler verwenden. Versuchen Sie das zuerst.

Wenn das nicht funktioniert, hat Ihr Hersteller wahrscheinlich keine identischen Motoren hergestellt und Sie müssen wahrscheinlich nur die Motoren kalibrieren. Dies kann bedeuten, dass der Wert des stärkeren Motors so skaliert wird, dass 100% Leistung für den starken Motor dem schwachen Motor entspricht.


2
Die Verwendung identischer Motorsteuerungen löst das vorliegende Problem nicht. Das Problem liegt im Kern der Robotik: Wie behebe ich den Fehler?
Ryan Loggerythm

Ich habe gehört, dass Gleichstrommotoren etwas langsamer vorwärts als rückwärts laufen können. Außerdem kann ein Ungleichgewicht im Gewicht eine Verlagerung zur Seite verursachen. Ganz zu schweigen von anderen Dingen wie Reibung usw. Alles, was "identisch" ist, funktioniert nicht. Stepper machen es vielleicht ein bisschen besser, aber dann sollten Sie nicht zu schnell fahren oder so ...
Paul

-2

Räder mit Gleichstrommotoren sollten vorne b sein. Und coster rad hinten. Dann bewegt es sich gerade nur in Vorwärtsrichtung


Willkommen bei Robotics Arslan. Auf Stack Exchange suchen wir nach umfassenden Antworten, die einige Erklärungen und Zusammenhänge liefern. Sehr kurze Antworten können dies nicht. Bearbeiten Sie daher Ihre Antwort, um zu erklären, warum dies richtig ist, idealerweise mit Zitaten. Antworten, die keine Erklärungen enthalten, werden möglicherweise entfernt.
Mark Booth
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.