6-Achsen-Arm#
Einführung#
Der VEX 6-Achs-Roboterarm ist ein Robotermanipulator, der in der CTE-Arbeitszelle eingesetzt wird. In VEXcode EXP ermöglichen Armmethoden einem EXP Brain, den 6-Achs-Arm zu bewegen, seinen Endeffektor zu drehen, die Machbarkeit von Bewegungen zu prüfen und angebrachte Werkzeuge wie das Magnetaufnahmewerkzeug oder das Stifthalterwerkzeug zu steuern.
Diese Seite ist für CTE-Workcell-Projekte gedacht, bei denen der 6-Achsen-Arm mit einem EXP Brain verbunden ist. Wenn Sie den 6-Achsen-Arm allein mit der CTE Tile verwenden, nutzen Sie stattdessen die Seite CTE Arm API.
Die Beispiele auf dieser Seite verwenden einen konfigurierten 6-Achsen-Arm mit der Bezeichnung arm1.
Nachfolgend finden Sie eine Liste aller verfügbaren Methoden:
Aktionen – Den 6-Achsen-Arm in Positionen oder Ausrichtungen bewegen.
move_to— Bewegt den Endeffektor zu einer angegebenen x-, y- und z-Koordinate.move_inc— Verschiebt den Endeffektor um eine angegebene Distanz von seiner aktuellen Position.move_end_effector_to— Dreht den Endeffektor in eine bestimmte Gier-, Roll- und Nickausrichtung.move_end_effector_inc— Dreht den Endeffektor um einen festgelegten Gier-, Roll- und Nickwinkel.
Mutatoren – Bewegungs-, Werkzeug- und Steuerungseinstellungen konfigurieren.
set_speed— Legt die Bewegungsgeschwindigkeit des 6-Achsen-Arms fest.set_end_effector_type— Legt den Typ des Endeffektors fest, der am 6-Achsen-Arm angebracht ist.set_end_effector_magnet— Aktiviert oder deaktiviert das Magnetaufnahmewerkzeug.set_pen_offset— Legt den Z-Achsen-Offset fest, der mit dem Stifthalter-Werkzeug verwendet wird.set_control_stop— Aktiviert den Kontrollstopp für den 6-Achsen-Arm.set_timeout— Legt das Timeout fest, das von den 6-Achsen-Armbewegungsmethoden verwendet wird.
Getter – Geben Bewegungsstatus, Position, Ausrichtung und Verbindungswerte zurück.
is_done— Gibt zurück, ob der 6-Achsen-Arm seine Bewegung beendet hat.is_crashed— Gibt zurück, ob der 6-Achsen-Arm während der Bewegung abgestürzt ist.get_x— Gibt die aktuelle x-Position des Endeffektors zurück.get_y— Gibt die aktuelle y-Position des Endeffektors zurück.get_z— Gibt die aktuelle z-Position des Endeffektors zurück.get_pitch— Gibt die aktuelle Tonhöhe des Endeffektors zurück.get_roll— Gibt den aktuellen Wurf des Endeffektors zurück.get_yaw— Gibt den aktuellen Gierwinkel des Endeffektors zurück.can_arm_reach_to— Gibt zurück, ob der 6-Achsen-Arm eine bestimmte Position erreichen kann.can_arm_reach_inc— Gibt zurück, ob sich der 6-Achsen-Arm um eine bestimmte Distanz bewegen kann.can_end_effector_reach_to— Gibt zurück, ob der Endeffektor eine bestimmte Orientierung erreichen kann.can_end_effector_reach_inc— Gibt zurück, ob sich der Endeffektor um einen bestimmten Betrag drehen kann.get_timeout— Gibt den aktuellen Timeout-Wert zurück, der von den Bewegungsmethoden verwendet wird.is_connected— Gibt zurück, ob der 6-Achsen-Arm mit dem EXP Brain verbunden ist.
Callbacks – Funktionen werden ausgeführt, wenn Arm-Ereignisse auftreten.
control_stopped— Registriert eine Funktion, die ausgeführt werden soll, wenn die Kontrollstopp-Funktion aktiviert ist.crashed— Registriert eine Funktion, die ausgeführt wird, wenn ein Absturz erkannt wird.
Konstruktor – Manuelles Erstellen eines 6-Achs-Armobjekts.
Arm— Erzeugt ein 6-Achsen-Armobjekt.
Aktionen#
move_to#
move_to bewegt den 6-Achsen-Arm zu einer bestimmten x-, y- und z-Koordinate.
Die x-, y- und z-Koordinaten beschreiben die Position des Endeffektors im dreidimensionalen Raum. Verwenden Sie can_arm_reach_to vor dieser Methode, falls die Zielposition außerhalb des erreichbaren Arbeitsbereichs des 6-Achs-Arms liegen könnte.
Usage:
arm1.move_to(x, y, z, wait)
Parameter |
Beschreibung |
|---|---|
|
Die x-Koordinate der Zielposition in Millimetern. |
|
Die y-Koordinate der Zielposition in Millimetern. |
|
Die z-Koordinate der Zielposition in Millimetern. |
|
Optional. |
# Move the 6-Axis Arm to (40, 140, 210)
arm1.move_to(40, 140, 210)
# Start moving, then print the y-position while the arm moves
arm1.move_to(-100, 200, 100, wait=False)
while not arm1.is_done():
brain.screen.print(arm1.get_y())
brain.screen.next_row()
wait(0.25, SECONDS)
move_inc#
move_inc verschiebt den 6-Achsen-Arm um eine angegebene Distanz von seiner aktuellen Position entlang der x-, y- und z-Achse.
Verwenden Sie diese Methode, um sich relativ zur aktuellen Position des Endeffektors zu bewegen. Verwenden Sie can_arm_reach_inc vor dieser Methode, falls die Bewegung den 6-Achsen-Arm außerhalb seines erreichbaren Arbeitsbereichs positionieren könnte.
Usage:
arm1.move_inc(x, y, z, wait)
Parameter |
Beschreibung |
|---|---|
|
Die Strecke, die entlang der x-Achse zurückgelegt werden muss, in Millimetern. |
|
Die Strecke, die entlang der y-Achse zurückgelegt werden muss, in Millimetern. |
|
Die Strecke, die entlang der z-Achse zurückgelegt werden soll, in Millimetern. |
|
Optional. |
# Move the 6-Axis Arm 100 millimeters along the y-axis
arm1.move_inc(0, 100, 0)
move_end_effector_to#
move_end_effector_to dreht den Endeffektor des 6-Achsen-Arms in eine bestimmte Gier-, Roll- und Nickausrichtung.
Die Orientierung beschreibt die Rotation des Endeffektors. yaw Rotation um die z-Achse, roll Rotation um die x-Achse und pitch Rotation um die y-Achse.
Usage:
arm1.move_end_effector_to(yaw, roll, pitch, wait)
Parameter |
Beschreibung |
|---|---|
|
Der Ziel-Gierwinkel in Grad. |
|
Der Zielrollwinkel in Grad. |
|
Der Ziel-Nickwinkel in Grad. |
|
Optional. |
# Rotate the end effector to 90 degrees of roll
arm1.move_end_effector_to(0, 90, 0)
move_end_effector_inc#
move_end_effector_inc dreht den Endeffektor des 6-Achsen-Arms um einen festgelegten Gier-, Roll- und Nickwinkel aus seiner aktuellen Ausrichtung.
Mit dieser Methode können Sie relativ zur aktuellen Gier-, Roll- oder Nickbewegung des Endeffektors rotieren.
Usage:
arm1.move_end_effector_inc(yaw, roll, pitch, wait)
Parameter |
Beschreibung |
|---|---|
|
Die Änderung des Gierwinkels in Grad. |
|
Die Rolländerung in Grad. |
|
Die Tonhöhenänderung in Grad. |
|
Optional. |
# Rotate the end effector -50 degrees in pitch
arm1.move_end_effector_inc(0, 0, -50)
Mutatoren#
set_speed#
set_speed legt die Bewegungsgeschwindigkeit fest, die vom 6-Achsen-Arm für die Bewegungsmethoden verwendet wird.
Die Geschwindigkeit des 6-Achsen-Arms ist zu Beginn eines Projekts auf 50 % eingestellt.
Usage:
arm1.set_speed(speed)
Parameter |
Beschreibung |
|---|---|
|
Die Bewegungsgeschwindigkeit des 6-Achsen-Arms, von |
# Set the 6-Axis Arm speed to 30%
arm1.set_speed(30)
set_end_effector_type#
set_end_effector_type legt den Typ des Endeffektors fest, der am 6-Achsen-Arm angebracht ist.
Beim Wechsel des Endeffektortyps passt der 6-Achs-Arm seinen Z-Offset automatisch an das ausgewählte Werkzeug an. Der Endeffektortyp ist zu Projektbeginn auf MAGNET eingestellt.
Usage:
arm1.set_end_effector_type(type)
Parameter |
Beschreibung |
|---|---|
|
Das am 6-Achsen-Arm befestigte Werkzeug: |
# Set the end effector type to the Pen Holder Tool
arm1.set_end_effector_type(PEN)
set_end_effector_magnet#
set_end_effector_magnet aktiviert oder deaktiviert das Magnetaufnahmewerkzeug.
Der Magnetzustand bleibt aktiv, bis er durch eine andere Methode set_end_effector_magnet geändert wird. Zu Beginn eines Projekts wird der Magnetzustand auf False zurückgesetzt.
Usage:
arm1.set_end_effector_magnet(state)
Parameter |
Beschreibung |
|---|---|
|
Der Zustand des Magnet-Aufnahmewerkzeugs: |
# Pick up objects and then drop them
arm1.set_end_effector_type(MAGNET)
arm1.set_end_effector_magnet(True)
wait(2, SECONDS)
arm1.set_end_effector_magnet(False)
set_pen_offset#
set_pen_offset legt den Z-Achsen-Offset fest, der verwendet wird, wenn das Stifthalterwerkzeug am 6-Achsen-Arm befestigt ist.
Stellen Sie den Endeffektortyp auf PEN ein, bevor Sie diese Methode anwenden. Wenn das Stifthalter-Werkzeug nicht ausgewählt ist, hat diese Methode keine Wirkung.
Der Stiftversatz ist der Abstand von der Oberkante des Stifthalters bis zur Spitze des Whiteboardmarkers. Zu Beginn eines Projekts ist der Stiftversatz auf 0eingestellt. Ein Stiftversatz von 0 platziert den Ursprung der Z-Achse des Arms an dem Punkt, an dem der Stifthalter mit dem 6-Achsen-Arm verbunden ist.
Usage:
arm1.set_pen_offset(zOffset)
Parameter |
Beschreibung |
|---|---|
|
Der Stiftversatzwert in Millimetern. |
# Set the end effector type to the Pen Holder Tool and set the pen offset
arm1.set_end_effector_type(PEN)
arm1.set_pen_offset(25)
set_control_stop#
set_control_stop aktiviert den Kontrollstopp für den 6-Achsen-Arm.
Wenn die Steuerungsstopp-Funktion aktiviert ist, stoppt der 6-Achsen-Arm sofort jede Bewegung und führt keine weiteren Armbewegungsmethoden aus, bis das Projekt neu gestartet wird.
Usage:
arm1.set_control_stop(state)
Parameter |
Beschreibung |
|---|---|
|
Optional. |
# Stop the 6-Axis Arm and prevent further movement
arm1.set_control_stop()
set_timeout#
set_timeout legt den Timeout-Wert fest, der beim Bewegen des 6-Achsen-Arms verwendet wird.
Wenn eine Bewegung nicht vor Ablauf des Zeitlimits abgeschlossen ist, wird das Projekt mit der nächsten Codezeile fortgesetzt.
Usage:
arm1.set_timeout(timeout, units)
Parameter |
Beschreibung |
|---|---|
|
Der neue Timeout-Wert. |
|
Optional. Die Zeiteinheit: |
# Set the 6-Axis Arm timeout to 2 seconds
arm1.set_timeout(2, SECONDS)
Getter#
is_done#
is_done gibt an, ob der 6-Achsen-Arm seine Bewegung beendet hat.
Diese Methode ist nützlich, nachdem eine Bewegungsmethode mit wait=False aufgerufen wurde.
True— Der 6-Achsen-Arm hat seine Bewegung abgeschlossen.False— Der 6-Achsen-Arm bewegt sich noch.
Usage:
arm1.is_done()
Parameter |
Beschreibung |
|---|---|
Diese Methode hat keine Parameter. |
# Display the 6-Axis Arm's y-position while it moves
arm1.move_to(-100, 200, 100, wait=False)
while not arm1.is_done():
brain.screen.print(arm1.get_y())
brain.screen.next_row()
wait(0.25, SECONDS)
is_crashed#
is_crashed gibt an, ob der 6-Achsen-Arm während der Bewegung abgestürzt ist.
Wird ein Aufprall erkannt, stoppt der 6-Achs-Arm die Motorbewegung und kann schlaff wirken. Dies reduziert die Belastung und schützt die Motoren vor versehentlichen Beschädigungen.
True— Der 6-Achsen-Arm ist abgestürzt.False— Der 6-Achsen-Arm ist nicht abgestürzt.
Usage:
arm1.is_crashed()
Parameter |
Beschreibung |
|---|---|
Diese Methode hat keine Parameter. |
# Quickly move to a new location
arm1.set_speed(100)
arm1.move_to(-30, 240, 40, wait=False)
# While moving, check for a crash
while True:
if arm1.is_crashed():
# Indicate a crash with the Signal Tower and Brain screen
brain.screen.print("Crash Detected")
signal_tower_2.set_color(SignalTower.GREEN, SignalTower.OFF)
signal_tower_2.set_color(SignalTower.RED, SignalTower.ON)
break
wait(5, MSEC)
get_x#
get_x gibt die aktuelle x-Position des Endeffektors in Millimetern zurück.
Mit dieser Methode lässt sich ablesen, wo sich der Endeffektor aktuell entlang der x-Achse befindet.
Usage:
arm1.get_x()
Parameter |
Beschreibung |
|---|---|
Diese Methode hat keine Parameter. |
# Print the current x position of the 6-Axis Arm
brain.screen.print(arm1.get_x())
get_y#
get_y gibt die aktuelle y-Position des Endeffektors in Millimetern zurück.
Mit dieser Methode lässt sich ablesen, wo sich der Endeffektor aktuell entlang der y-Achse befindet.
Usage:
arm1.get_y()
Parameter |
Beschreibung |
|---|---|
Diese Methode hat keine Parameter. |
# Print the current y position of the 6-Axis Arm
brain.screen.print(arm1.get_y())
get_z#
get_z gibt die aktuelle z-Position des Endeffektors in Millimetern zurück.
Mit dieser Methode lässt sich ablesen, wo sich der Endeffektor aktuell entlang der z-Achse befindet.
Usage:
arm1.get_z()
Parameter |
Beschreibung |
|---|---|
Diese Methode hat keine Parameter. |
# Print the current z position of the 6-Axis Arm
brain.screen.print(arm1.get_z())
get_pitch#
get_pitch gibt die aktuelle Neigung des Endeffektors in Grad zurück.
Usage:
arm1.get_pitch()
Parameter |
Beschreibung |
|---|---|
Diese Methode hat keine Parameter. |
# Print the current pitch of the end effector
brain.screen.print(arm1.get_pitch())
get_roll#
get_roll gibt die aktuelle Rollbewegung des Endeffektors in Grad zurück.
Usage:
arm1.get_roll()
Parameter |
Beschreibung |
|---|---|
Diese Methode hat keine Parameter. |
# Print the current roll of the end effector
brain.screen.print(arm1.get_roll())
get_yaw#
get_yaw gibt den aktuellen Gierwinkel des Endeffektors in Grad zurück.
Usage:
arm1.get_yaw()
Parameter |
Beschreibung |
|---|---|
Diese Methode hat keine Parameter. |
# Print the current yaw of the end effector
brain.screen.print(arm1.get_yaw())
can_arm_reach_to#
can_arm_reach_to gibt an, ob der 6-Achsen-Arm den Endeffektor zu einer bestimmten x-, y- und z-Koordinate bewegen kann.
Verwenden Sie diese Methode, um eine Zielposition zu überprüfen, bevor Sie move_to verwenden.
True— Der 6-Achsen-Arm kann die gewünschte Position erreichen.False— Der 6-Achsen-Arm kann die angeforderte Position nicht erreichen.
Usage:
arm1.can_arm_reach_to(x, y, z)
Parameter |
Beschreibung |
|---|---|
|
Die x-Koordinate der Zielposition in Millimetern. |
|
Die y-Koordinate der Zielposition in Millimetern. |
|
Die z-Koordinate der Zielposition in Millimetern. |
# Move the 6-Axis Arm to (100, -20, 50) if it can reach
if arm1.can_arm_reach_to(100, -20, 50):
arm1.move_to(100, -20, 50)
can_arm_reach_inc#
can_arm_reach_inc gibt zurück, ob der 6-Achsen-Arm den Endeffektor um eine bestimmte x-, y- und z-Distanz von seiner aktuellen Position aus bewegen kann.
Verwenden Sie diese Methode, um eine relative Bewegung zu überprüfen, bevor Sie move_inc verwenden.
True— Der 6-Achsen-Arm kann die gewünschte Bewegung ausführen.False— Der 6-Achsen-Arm kann die angeforderte Bewegung nicht ausführen.
Usage:
arm1.can_arm_reach_inc(x, y, z)
Parameter |
Beschreibung |
|---|---|
|
Die Strecke, die entlang der x-Achse zurückgelegt werden muss, in Millimetern. |
|
Die Strecke, die entlang der y-Achse zurückgelegt werden muss, in Millimetern. |
|
Die Strecke, die entlang der z-Achse zurückgelegt werden soll, in Millimetern. |
# Increment the 6-Axis Arm 100 mm along the x-axis if possible
if arm1.can_arm_reach_inc(100, 0, 0):
arm1.move_inc(100, 0, 0)
can_end_effector_reach_to#
can_end_effector_reach_to gibt an, ob der Endeffektor in eine bestimmte Gier-, Roll- und Nickrichtung rotieren kann.
Verwenden Sie diese Methode, um die Zielorientierung zu überprüfen, bevor Sie move_end_effector_to verwenden.
True— Der Endeffektor kann die gewünschte Ausrichtung erreichen.False— Der Endeffektor kann die angeforderte Ausrichtung nicht erreichen.
Usage:
arm1.can_end_effector_reach_to(yaw, roll, pitch)
Parameter |
Beschreibung |
|---|---|
|
Der Ziel-Gierwinkel in Grad. |
|
Der Zielrollwinkel in Grad. |
|
Der Ziel-Nickwinkel in Grad. |
# Rotate the end effector to 90 degrees of roll if possible
if arm1.can_end_effector_reach_to(0, 90, 0):
arm1.move_end_effector_to(0, 90, 0)
can_end_effector_reach_inc#
can_end_effector_reach_inc gibt zurück, ob der Endeffektor um einen bestimmten Gier-, Roll- und Nickwinkel von seiner aktuellen Ausrichtung aus gedreht werden kann.
Verwenden Sie diese Methode, um eine relative Orientierungsbewegung zu überprüfen, bevor Sie move_end_effector_inc verwenden.
True— Der Endeffektor kann die angeforderte Drehung ausführen.False— Der Endeffektor kann die angeforderte Drehung nicht ausführen.
Usage:
arm1.can_end_effector_reach_inc(yaw, roll, pitch)
Parameter |
Beschreibung |
|---|---|
|
Die Änderung des Gierwinkels in Grad. |
|
Die Rolländerung in Grad. |
|
Die Tonhöhenänderung in Grad. |
# Increment the end effector by 10 degrees of pitch if possible
if arm1.can_end_effector_reach_inc(0, 0, 10):
arm1.move_end_effector_inc(0, 0, 10)
get_timeout#
get_timeout gibt den Timeout-Wert in Millisekunden zurück, der von den 6-Achsen-Armbewegungsmethoden verwendet wird.
Usage:
arm1.get_timeout()
Parameter |
Beschreibung |
|---|---|
Diese Methode hat keine Parameter. |
# Print the current movement timeout in milliseconds
brain.screen.print(arm1.get_timeout())
is_connected#
is_connected gibt an, ob der 6-Achsen-Arm mit dem EXP Brain verbunden ist.
True— Der 6-Achsen-Arm ist mit dem EXP Brain verbunden.False— Der 6-Achsen-Arm ist nicht mit dem EXP Brain verbunden.
Usage:
arm1.is_connected()
Parameter |
Beschreibung |
|---|---|
Diese Methode hat keine Parameter. |
# Print whether the 6-Axis Arm is connected
brain.screen.print(arm1.is_connected())
Rückrufe#
control_stopped#
control_stopped registriert eine Funktion, die ausgeführt wird, wenn die Kontrollstopp-Funktion aktiviert ist.
Diese Methode gibt eine Instanz der Klasse Event zurück.
Usage:
arm1.control_stopped(callback, arg)
Parameter |
Beschreibung |
|---|---|
|
Eine zuvor definierte Funktion, die ausgeführt wird, wenn der Kontrollstopp aktiviert ist. |
|
Optional. Ein Tupel mit Argumenten, die an die Callback-Funktion übergeben werden sollen. Weitere Informationen finden Sie unter Verwendung von Funktionen mit Parametern. |
# Define a function to run when control stop is enabled
def when_control_stopped():
brain.screen.print("The arm has been control stopped")
# Run when_control_stopped when the 6-Axis Arm is control stopped
arm1.control_stopped(when_control_stopped)
crashed#
crashed registriert eine Funktion, die ausgeführt wird, wenn der 6-Achsen-Arm während der Bewegung abstürzt.
Wird ein Aufprall erkannt, stoppt der 6-Achs-Arm die Motorbewegung und kann schlaff wirken. Dies reduziert die Belastung und schützt die Motoren vor versehentlichen Beschädigungen.
Usage:
arm1.crashed(callback)
Parameter |
Beschreibung |
|---|---|
|
Eine zuvor definierte Funktion, die ausgeführt wird, wenn ein Absturz erkannt wird. |
# Define what happens if a crash is detected
def arm_crash():
brain.screen.print("Crash Detected")
signal_tower_2.set_color(SignalTower.RED, SignalTower.ON)
# Run arm_crash when the 6-Axis Arm crashes
arm1.crashed(arm_crash)
Konstruktoren#
Arm#
Arm erzeugt ein 6-Achsen-Armobjekt.
Usage:
Arm(smartport)
Parameter |
Beschreibung |
|---|---|
|
Der Smart Port, an den der 6-Achsen-Arm angeschlossen ist, wird als |
# Construct a 6-Axis Arm named arm1 with the Arm class
arm1 = Arm(Ports.PORT1)