Frage:
Wie kalibriere ich NXT-Motoren, um dieselbe Strecke zurückzulegen?
nhinkle
2012-01-20 06:30:18 UTC
view on stackexchange narkive permalink

Die im NXT enthaltenen Motoren sind nicht alle gleich - bei gleichem Eingangsleistungspegel fahren sie nicht immer die gleiche Strecke oder drehen sich mit der gleichen Geschwindigkeit.

Ich habe dies gemessen, indem ich ein kleines Programm erstellt habe, um zwei Motoren mit der gleichen Drehzahl zu drehen und ihre Drehung zu messen. Die Ergebnisse zeigten Unterschiede von über 100 Grad innerhalb von weniger als einer Minute nach dem Fahren.

Gibt es eine Möglichkeit, die Motoren entweder mechanisch zu kalibrieren oder einfach im Programm den Unterschied in ihren Befugnissen erklären, sobald er festgestellt wurde? Gibt es eine Möglichkeit, die Drehzahl eines Motors automatisch anzupassen, wenn der NXT erkennt, wie weit sich jeder Motor gedreht hat, wenn er feststellt, dass er "zurückfällt"? (Beachten Sie, dass ich LabVIEW 2011 zum Programmieren verwende, aber ich würde eine Antwort akzeptieren, die nur ein Codekonzept ist, wenn sie möglicherweise in LabVIEW implementiert werden könnte.)

Wie alt sind deine Motoren? Ich habe festgestellt, dass es eine Einbrennphase gibt, in der zwei Motoren einander ähnlicher sind, je mehr Sie sie verwenden.
@enthdegree die Motoren sind mindestens 3 Jahre alt. Ich arbeite an einem Projekt für eine Universitätsklasse, die grundlegende Programmierung lehrt, und die NXT-Plattform ist Teil der Klasse. Ich bin mir nicht sicher, wie alt die von mir verwendeten Motoren sind, aber sie verwenden die NXT-Plattform bereits seit einiger Zeit.
Vier antworten:
Sebastian Wahl
2012-01-22 02:03:24 UTC
view on stackexchange narkive permalink

Sie können die Motoren weder mechanisch noch per Software kalibrieren. Es gibt jedoch verschiedene Methoden in der Software, um dies zu berücksichtigen.

Die Standard-NXT-Firmware enthält einen Synchronisationsmodus, der versucht, die beiden Motoren ausgerichtet zu halten. In NXC können Sie dies mit der Funktion OnFwdSync wie folgt tun: OnFwdSync (OUT_AC, 75, 0); Der erste Parameter sind die zu synchronisierenden Motoren, der zweite ist die Leistung und der dritte definiert den Unterschied in Drehzahl zwischen den Motoren (für das Tribot verwendet).

In diesem Artikel wird beschrieben, wie Sie dasselbe in RoboLab tun: Wie funktioniert die NXT-Motorsynchronisierung in ROBOLAB?

In NXT-G ist die Synchronisierung im Verschiebungsblock standardmäßig aktiviert. Korrigieren Sie mich, wenn ich falsch liege.

Ich weiß nicht, wie ich dies in LabView tun soll. Ich habe jedoch gehört, dass es in der Palette "NXT I / O» NXT Native I / O »Ausgabe" einige Blöcke gibt, um dies zu tun. Versuchen Sie, dort nachzuschauen.


Sie können Ihren eigenen Controller erstellen, indem Sie den Rotationswert betrachten. Berechnen Sie die Differenz und stellen Sie die Geschwindigkeit folgendermaßen ein:
  Motor A = Leistung + Gewicht * DifferenzMotor B = Leistung - Gewicht * Differenz  

Das Gewicht ist wie Wenn sich der Unterschied auf die Motordrehzahl auswirkt, müssen Sie ein wenig experimentieren, um hier einen guten Wert zu finden. Möglicherweise möchten Sie auch das 100% -Limit berücksichtigen. Wenn die Leistung für einen Motor 100% überschreitet, gehen Sie wie folgt vor:

  if (Motor A > 100) Motor B = Motor B - (Motor A - 100) if (Motor B > 100) Motor A = Motor A - (Motor B - 100)  
Ich werde erst am Dienstag wieder bei der Arbeit sein, aber wenn ich es bin, werde ich nachsehen, ob es Funktionen gibt, die dies in LabVIEW richtig zu machen scheinen. Wenn nicht, muss ich möglicherweise nur meine eigenen schreiben, wie Sie vorgeschlagen haben. Danke für die Hilfe!
Philo
2012-01-20 16:50:45 UTC
view on stackexchange narkive permalink

Der Geschwindigkeitsunterschied kann nicht vermieden werden. Selbst wenn die Motoren selbst sorgfältig gepaart würden, würden Reibungsunterschiede an den Achsen oder Gewichtsungleichgewichte des Roboters zu Geschwindigkeitsfehlanpassungen führen. Ich bin nicht an LabVIEW gewöhnt, aber die NXT-Firmware bietet die Möglichkeit, zwei Motoren zu synchronisieren. Diese Funktion sollte in LabVIEW verfügbar sein.

nhinkle
2012-01-27 03:07:27 UTC
view on stackexchange narkive permalink

Nachdem ich mich in der NXT IO-Palette in LabVIEW ein wenig umgesehen hatte, fand ich einige Funktionen, die die Motoren während des Fahrens des Roboters synchronisieren. Die VIs "Fahrstrecke" und "Lenken ein" synchronisieren beide Motoren entsprechend, damit der Roboter gerade fährt.

functions palette

Der "Motor ein" und "Motor rückwärts" "Blöcke, die die Standardoptionen sind, wenn Sie nicht in die vollständige Liste aufgenommen werden, synchronisieren die Motoren nicht. Damit die Motoren zusammenarbeiten, sollten entweder die VIs "Einlenken" oder "Fahrstrecke" verwendet werden.

Clinton Blackmore
2012-01-29 09:14:50 UTC
view on stackexchange narkive permalink

Hier ist eine einfache Methode, mit der Sie Ihre Motoren so gut wie möglich aufeinander abstimmen können: http://www.techbrick.com/Lego/TechBrick/TechTips/NXTCalibration/

Danke, das habe ich gesehen, als ich das recherchiert habe. Die Klasse, für die ich arbeite, hat bereits begonnen, ihre Motoren zu verwenden. Um dies zu tun, müssten sie alle ihre Roboter zerlegen, was zu spät ist. Ich werde es dem Ausbilder für die Klasse im nächsten Jahr vorschlagen.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...