Inhaltsverzeichnis:

Precise Mover Roboter SnappyXO - Gunook
Precise Mover Roboter SnappyXO - Gunook

Video: Precise Mover Roboter SnappyXO - Gunook

Video: Precise Mover Roboter SnappyXO - Gunook
Video: Ardumower RTK is a (cm-precise) GPS robot mower that you can build yourself (DIY kit) 2024, November
Anonim
SnappyXO Präziser Mover-Roboter
SnappyXO Präziser Mover-Roboter

Lassen Sie Ihren Arduino-Roboter mit der Arduino-Bibliothek PreciseMovement eine bestimmte Entfernung geradeaus fahren oder in einen bestimmten Winkel drehen.

Der Roboter benötigt eine rollende Kugelrolle oder ähnliches, um die Reibung beim Verdrehen zu minimieren.

www.pololu.com/product/954

Sie können dem Roboter sagen, dass er bis zu einer bestimmten Entfernung vorwärts gehen oder sich in einem bestimmten Winkel drehen soll. Das Programm bestimmt seine Position mittels Koppelnavigation. Da die Positionsschätzungen nur auf der Radgeschwindigkeit beruhen, führt der Schlupf zu einem beträchtlichen Fehler. Der Konstrukteur des Roboters sollte darauf achten, das Rutschrisiko zu minimieren.

Dies wurde getestet, um mit dem SnappyXO-Roboter zu funktionieren.

Schritt 1: Tutorial-Speicherort geändert

Das Tutorial wurde auf die folgende Seite verschoben. Dieses Tutorial wird nicht mehr gepflegt.

sites.google.com/stonybrook.edu/premo

Schritt 2: Bauen Sie den SnappyXO Differential Drive Robot

Die PreciseMovement-Bibliothek, die wir verwenden werden, ist nur mit Robotern mit Differentialantrieb kompatibel. Sie können auch andere 2-Rad-Roboter verwenden.

Schritt 3: Schließen Sie die Elektronik an

Schließen Sie die Elektronik an
Schließen Sie die Elektronik an

Für den standardmäßigen optischen SnappyXO-Encoder:

D0 (Encoder-Ausgang) -> Arduino Digital Pin

VCC -> Arduino 5V

GND -> GND

Motor- und Arduino-Power:

Die Motorstromquelle sollte für die von Ihnen verwendeten Motoren ausreichend sein. Für das SnappyXO-Kit werden 4AA-Batterien für die Motorleistung und 9V-Batterien für die Arduino-Leistung verwendet. Stellen Sie sicher, dass sie alle einen gemeinsamen GND haben.

Schritt 4: Installieren Sie die PreciseMovement Arduino-Bibliothek

Herunterladen:

github.com/jaean123/PreciseMovement-library/releases

So installieren Sie die Arduino-Bibliothek:

wiki.seeedstudio.com/How_to_install_Arduino_Library/

Schritt 5: Code

Arduino-Code:

create.arduino.cc/editor/whileloop/7a35299d-4e73-409d-9f39-2c517b3000d5/preview

Diese Parameter müssen angepasst werden. Andere Parameter, die im Code als empfohlen gekennzeichnet sind, können für eine bessere Leistung angepasst werden.

  • Prüfen und setzen Sie die Motorpins unter ARDUINO PINS.
  • Stellen Sie LÄNGE und RADIUS ein.

    • LENGTH ist der Abstand vom linken Rad zum rechten Rad.
    • RADIUS ist der Radius des Rades.
  • Stellen Sie PULSES_PER_REV ein, die Anzahl der Impulse, die der Encoder für eine Radumdrehung ausgibt.

    • Beachten Sie, dass sich dies von der Anzahl der Impulse unterscheidet, die der Encoder für eine Motorwellenumdrehung ausgibt, es sei denn, die Encoder sind angeschlossen, um direkt von der Radwelle zu lesen.
    • PULSES_PER_REV = (Impulse pro Umdrehung der Motorwelle) x (Getriebeverhältnis)
  • Setzen Sie STOP_LENGTH, wenn Sie sehen, dass der Roboter nach der Vorwärtsbewegung überschwingt.

    Der Roboter stoppt, sobald die geschätzte Position STOP_LENGTH vom Ziel entfernt ist. Somit ist STOP_LENGTH die ungefähre Entfernung, die der Roboter benötigt, um anzuhalten

  • PID-Parameter

    KP_FW: Dies ist der proportionale Anteil der Vorwärtsbewegung. Erhöhen Sie diese, bis der Roboter geradeaus fährt. Wenn Sie dies durch Tuning nicht direkt zum Laufen bringen, ist wahrscheinlich die Hardware schuld. (z. B. Radversatz usw.)

    KP_TW: Dies ist die proportionale Komponente der Verdrehbewegung PID. Starten Sie einfach mit einem niedrigen Wert und erhöhen Sie diesen, bis die Verdrehgeschwindigkeit bzw. die Winkelgeschwindigkeit des Roboters beim Verdrehen schnell genug ist, aber kein Überschwingen verursacht. Um Beobachtungen zu machen, können Sie den Roboter von 0 auf 90 und zurück wechseln lassen, indem Sie Folgendes in die Schleifenfunktion einfügen

Platzieren Sie dies in einer Schleife, um KP_FW abzustimmen:

mover.forward(99999);

Platzieren Sie dies in einer Schleife, um von 0 bis 90 zu wechseln, um KP_TW abzustimmen:

mover.twist(90); // Drehung 90 CW

Verzögerung (2000);

mover.twist(-90) // Twist 90 CCW

Verzögerung (2000);

Beachten Sie, dass KI_TW auch abgestimmt werden muss, um die Winkelgeschwindigkeit bei TARGET_TWIST_OMEGA tatsächlich zu verdrehen, da ein Proportionalregler niemals auf das genaue Ziel einschwingt. Es ist jedoch nicht notwendig, sich genau mit dieser Winkelgeschwindigkeit zu verdrehen. Die Winkelgeschwindigkeit muss nur langsam genug sein.

Schritt 6: Wie es funktioniert

Wenn Sie neugierig sind, wie es funktioniert, lesen Sie weiter.

Die Vorwärtsbewegung wird mit dem reinen Verfolgungsalgorithmus auf einem geraden Weg gerade gehalten. Mehr zu Pure Pursuit:

Der Twist-PID-Regler versucht, die Twist-Winkelgeschwindigkeit bei TARGET_TWIST_OMEGA zu halten. Beachten Sie, dass diese Winkelgeschwindigkeit die Winkelgeschwindigkeit des gesamten Roboters ist, nicht der Räder. Es wird nur ein PID-Regler verwendet und die Ausgabe ist die PWM-Schreibgeschwindigkeit des linken und des rechten Motors. Zur Berechnung des Winkels wird eine Koppelnavigation durchgeführt. Sobald der Winkel die Fehlerschwelle erreicht, stoppt der Roboter.

Empfohlen: