Brazo de 6 ejes#
Introducción#
El brazo robótico VEX de 6 ejes puede mover un efector final en un espacio tridimensional, controlar su orientación mediante giros de guiñada, balanceo e inclinación, y utilizar herramientas adjuntas como la herramienta de recogida de imanes o la herramienta de soporte de bolígrafo.
El brazo de 6 ejes no está configurado como un dispositivo en VEXcode V5. Para usarlo en un proyecto VEX V5 Python, cree manualmente un objeto Arm en código con el puerto inteligente al que está conectado el brazo de 6 ejes.
Los ejemplos de esta página utilizan un brazo de 6 ejes construido manualmente llamado arm1.
A continuación se muestra una lista de todos los métodos disponibles:
Acciones: mueva el brazo de 6 ejes a posiciones u orientaciones.
move_to— Mueve el efector final a una coordenada x, y y z especificada.move_inc— Mueve el efector final una distancia específica de su posición actual.move_end_effector_to— Gira el efector final a una orientación de guiñada, balanceo y cabeceo especificada.move_end_effector_inc— Gira el efector final una cantidad específica de guiñada, balanceo y cabeceo.
Mutadores: configure el movimiento, las herramientas y los ajustes de control.
set_speed— Establece la velocidad de movimiento utilizada por el brazo de 6 ejes.set_end_effector_type— Establece el tipo de efector final conectado al brazo de 6 ejes.set_end_effector_magnet— Activa o libera la herramienta de recogida de imanes.set_pen_offset— Establece el desplazamiento del eje z utilizado con la herramienta Portaplumas.set_control_stop— Habilita la parada de control para el brazo de 6 ejes.set_timeout— Establece el tiempo de espera utilizado por los métodos de movimiento del brazo de 6 ejes.
Getters: devuelve el estado de movimiento, la posición, la orientación y los valores de conexión.
is_done— Devuelve si el brazo de 6 ejes ha terminado de moverse.is_crashed— Devuelve si el brazo de 6 ejes se ha estrellado mientras se movía.get_x— Devuelve la posición x actual del efector final.get_y— Devuelve la posición y actual del efector final.get_z— Devuelve la posición z actual del efector final.get_pitch— Devuelve el tono actual del efector final.get_roll— Devuelve el rollo actual del efector final.get_yaw— Devuelve la guiñada actual del efector final.can_arm_reach_to— Devuelve si el brazo de 6 ejes puede alcanzar una posición especificada.can_arm_reach_inc— Devuelve si el brazo de 6 ejes puede moverse una distancia específica.can_end_effector_reach_to— Devuelve si el efector final puede alcanzar una orientación específica.can_end_effector_reach_inc— Devuelve si el efector final puede rotar una cantidad específica.get_timeout— Devuelve el valor de tiempo de espera actual utilizado por los métodos de movimiento.is_connected— Devuelve si el brazo de 6 ejes está conectado al cerebro V5.
Devoluciones de llamada: ejecuta funciones cuando ocurren eventos ARM.
control_stopped— Registra una función para que se ejecute cuando se habilita la parada de control.crashed— Registra una función para que se ejecute cuando se detecta un bloqueo.
Constructor: crea manualmente un objeto de brazo de 6 ejes.
Arm— Crea un objeto de brazo de 6 ejes.
Acciones#
move_to#
move_to mueve el brazo de 6 ejes a las coordenadas x, y y z especificadas.
Las coordenadas x, y y z describen la posición del efector final en el espacio tridimensional. Utilice can_arm_reach_to antes de este método si la posición objetivo puede estar fuera del espacio de trabajo accesible del brazo de 6 ejes.
Usage:
arm1.move_to(x, y, z, wait)
Parámetro |
Descripción |
|---|---|
|
La coordenada x de la posición objetivo en milímetros. |
|
La coordenada y de la posición objetivo en milímetros. |
|
La coordenada z de la posición objetivo en milímetros. |
|
Opcional. |
# 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 mueve el brazo de 6 ejes a una distancia específica de su posición actual a lo largo de los ejes x, y y z.
Utilice este método para moverse con respecto a donde está ahora el efector final. Utilice can_arm_reach_inc antes de este método si el movimiento puede colocar el brazo de 6 ejes fuera de su espacio de trabajo accesible.
Usage:
arm1.move_inc(x, y, z, wait)
Parámetro |
Descripción |
|---|---|
|
La distancia para moverse a lo largo del eje x en milímetros. |
|
La distancia para moverse a lo largo del eje y en milímetros. |
|
La distancia para moverse a lo largo del eje z en milímetros. |
|
Opcional. |
# 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 girar el efector final del brazo de 6 ejes a una orientación de guiñada, balanceo y cabeceo especificada.
La orientación describe cómo se gira el efector final. La yaw gira alrededor del eje z, el roll gira alrededor del eje x y el pitch gira alrededor del eje y.
Usage:
arm1.move_end_effector_to(yaw, roll, pitch, wait)
Parámetro |
Descripción |
|---|---|
|
El ángulo de guiñada objetivo, en grados. |
|
El ángulo de balanceo objetivo, en grados. |
|
El ángulo de paso objetivo, en grados. |
|
Opcional. |
# 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 gira el efector final del brazo de 6 ejes una cantidad específica de guiñada, balanceo y cabeceo desde su orientación actual.
Utilice este método para girar en relación con la guiñada, el balanceo o el cabeceo actuales del efector final.
Usage:
arm1.move_end_effector_inc(yaw, roll, pitch, wait)
Parámetro |
Descripción |
|---|---|
|
El cambio en la guiñada, en grados. |
|
El cambio de rollo, en grados. |
|
El cambio de tono, en grados. |
|
Opcional. |
# Rotate the end effector -50 degrees in pitch
arm1.move_end_effector_inc(0, 0, -50)
Mutadores#
set_speed#
set_speed establece la velocidad de movimiento utilizada por el brazo de 6 ejes para los métodos de movimiento.
La velocidad del brazo de 6 ejes se establece en 50% al inicio de un proyecto.
Usage:
arm1.set_speed(speed)
Parámetro |
Descripción |
|---|---|
|
La velocidad de movimiento del brazo de 6 ejes, del |
# Set the 6-Axis Arm speed to 30%
arm1.set_speed(30)
set_end_effector_type#
set_end_effector_type establece el tipo de efector final conectado al brazo de 6 ejes.
Al cambiar el tipo de efector final, el brazo de 6 ejes ajusta automáticamente su desplazamiento Z para que coincida con la herramienta seleccionada. El tipo de efector final se establece en MAGNET al inicio del proyecto.
Usage:
arm1.set_end_effector_type(type)
Parámetro |
Descripción |
|---|---|
|
La herramienta unida al brazo de 6 ejes: |
# Set the end effector type to the Pen Holder Tool
arm1.set_end_effector_type(PEN)
set_end_effector_magnet#
set_end_effector_magnet activa o libera la herramienta de recogida de imanes.
El estado del imán permanece activo hasta que otro método set_end_effector_magnet lo cambia. El estado del imán se restablece a False al inicio de un proyecto.
Usage:
arm1.set_end_effector_magnet(state)
Parámetro |
Descripción |
|---|---|
|
Estado de la herramienta de recogida de imanes: |
# 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 establece el desplazamiento del eje z utilizado cuando la herramienta de soporte de lápiz está conectada al brazo de 6 ejes.
Establezca el tipo de efector final en PEN antes de usar este método. Si no se selecciona la herramienta Portaplumas, este método no tiene efecto.
El desplazamiento de la pluma es la distancia desde la parte superior de la herramienta de soporte de pluma hasta la punta del marcador de borrado en seco. Al comienzo de un proyecto, el desplazamiento de la pluma se establece en 0. Un desplazamiento de la pluma de 0 coloca el origen del eje z del brazo en el punto donde la herramienta del soporte de la pluma se conecta al brazo de 6 ejes.
Usage:
arm1.set_pen_offset(zOffset)
Parámetro |
Descripción |
|---|---|
|
El valor de desplazamiento de la pluma en milímetros. |
# 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 habilita la parada de control para el brazo de 6 ejes.
Cuando la parada de control está habilitada, el brazo de 6 ejes detiene inmediatamente cualquier movimiento y no ejecutará ningún otro método de movimiento del brazo hasta que se reinicie el proyecto.
Usage:
arm1.set_control_stop(state)
Parámetro |
Descripción |
|---|---|
|
Opcional. |
# Stop the 6-Axis Arm and prevent further movement
arm1.set_control_stop()
set_timeout#
set_timeout establece el valor de tiempo de espera utilizado al mover el brazo de 6 ejes.
Si un movimiento no termina antes de que se alcance el tiempo de espera, el proyecto continúa a la siguiente línea de código.
Usage:
arm1.set_timeout(timeout, units)
Parámetro |
Descripción |
|---|---|
|
El nuevo valor de tiempo de espera. |
|
Opcional. La unidad de tiempo: |
# Set the 6-Axis Arm timeout to 2 seconds
arm1.set_timeout(2, SECONDS)
Getters#
is_done#
is_done devuelve si el brazo de 6 ejes ha terminado de moverse.
Este método es útil después de llamar a un método de movimiento con wait=False.
True: el brazo de 6 ejes ha terminado de moverse.False— El brazo de 6 ejes todavía se está moviendo.
Usage:
arm1.is_done()
Parámetros |
Descripción |
|---|---|
Este método no tiene parámetros. |
# 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 devuelve si el brazo de 6 ejes se ha estrellado mientras se movía.
Cuando se detecta un choque, el brazo de 6 ejes detiene el movimiento del motor y puede parecer que se debilita. Esto reduce la tensión y ayuda a proteger los motores de daños accidentales.
True: el brazo de 6 ejes se ha estrellado.False— El brazo de 6 ejes no se ha estrellado.
Usage:
arm1.is_crashed()
Parámetros |
Descripción |
|---|---|
Este método no tiene parámetros. |
# 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 Brain screen
brain.screen.print("Crash Detected")
break
wait(5, MSEC)
get_x#
get_x devuelve la posición x actual del efector final en milímetros.
Utilice este método para leer dónde se encuentra actualmente el efector final a lo largo del eje x.
Usage:
arm1.get_x()
Parámetros |
Descripción |
|---|---|
Este método no tiene parámetros. |
# Print the current x position of the 6-Axis Arm
brain.screen.print(arm1.get_x())
get_y#
get_y devuelve la posición y actual del efector final en milímetros.
Utilice este método para leer dónde se encuentra actualmente el efector final a lo largo del eje y.
Usage:
arm1.get_y()
Parámetros |
Descripción |
|---|---|
Este método no tiene parámetros. |
# Print the current y position of the 6-Axis Arm
brain.screen.print(arm1.get_y())
get_z#
get_z devuelve la posición z actual del efector final en milímetros.
Utilice este método para leer dónde se encuentra actualmente el efector final a lo largo del eje z.
Usage:
arm1.get_z()
Parámetros |
Descripción |
|---|---|
Este método no tiene parámetros. |
# Print the current z position of the 6-Axis Arm
brain.screen.print(arm1.get_z())
get_pitch#
get_pitch devuelve el tono actual del efector final en grados.
Usage:
arm1.get_pitch()
Parámetros |
Descripción |
|---|---|
Este método no tiene parámetros. |
# Print the current pitch of the end effector
brain.screen.print(arm1.get_pitch())
get_roll#
get_roll devuelve el rollo actual del efector final en grados.
Usage:
arm1.get_roll()
Parámetros |
Descripción |
|---|---|
Este método no tiene parámetros. |
# Print the current roll of the end effector
brain.screen.print(arm1.get_roll())
get_yaw#
get_yaw devuelve la guiñada actual del efector final en grados.
Usage:
arm1.get_yaw()
Parámetros |
Descripción |
|---|---|
Este método no tiene parámetros. |
# Print the current yaw of the end effector
brain.screen.print(arm1.get_yaw())
can_arm_reach_to#
can_arm_reach_to devuelve si el brazo de 6 ejes puede mover el efector final a una coordenada x, y y z especificada.
Utilice este método para verificar una posición objetivo antes de usar move_to.
True: el brazo de 6 ejes puede alcanzar la posición solicitada.False— El brazo de 6 ejes no puede alcanzar la posición solicitada.
Usage:
arm1.can_arm_reach_to(x, y, z)
Parámetro |
Descripción |
|---|---|
|
La coordenada x de la posición objetivo en milímetros. |
|
La coordenada y de la posición objetivo en milímetros. |
|
La coordenada z de la posición objetivo en milímetros. |
# 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 devuelve si el brazo de 6 ejes puede mover el efector final una distancia x, y y z especificada desde su posición actual.
Utilice este método para comprobar un movimiento relativo antes de usar move_inc.
True: el brazo de 6 ejes puede realizar el movimiento solicitado.False— El brazo de 6 ejes no puede realizar el movimiento solicitado.
Usage:
arm1.can_arm_reach_inc(x, y, z)
Parámetro |
Descripción |
|---|---|
|
La distancia para moverse a lo largo del eje x en milímetros. |
|
La distancia para moverse a lo largo del eje y en milímetros. |
|
La distancia para moverse a lo largo del eje z en milímetros. |
# 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 devuelve si el efector final puede girar a una orientación de guiñada, balanceo y cabeceo especificada.
Utilice este método para verificar la orientación de un objetivo antes de usar move_end_effector_to.
True: el efector final puede alcanzar la orientación solicitada.False— El efector final no puede alcanzar la orientación solicitada.
Usage:
arm1.can_end_effector_reach_to(yaw, roll, pitch)
Parámetro |
Descripción |
|---|---|
|
El ángulo de guiñada objetivo, en grados. |
|
El ángulo de balanceo objetivo, en grados. |
|
El ángulo de paso objetivo, en grados. |
# 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 devuelve si el efector final puede girar una cantidad específica de guiñada, balanceo y cabeceo desde su orientación actual.
Utilice este método para comprobar un movimiento de orientación relativa antes de usar move_end_effector_inc.
True: el efector final puede realizar la rotación solicitada.False— El efector final no puede realizar la rotación solicitada.
Usage:
arm1.can_end_effector_reach_inc(yaw, roll, pitch)
Parámetro |
Descripción |
|---|---|
|
El cambio en la guiñada, en grados. |
|
El cambio de rollo, en grados. |
|
El cambio de tono, en grados. |
# 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 devuelve el valor de tiempo de espera utilizado por los métodos de movimiento del brazo de 6 ejes en milisegundos.
Usage:
arm1.get_timeout()
Parámetros |
Descripción |
|---|---|
Este método no tiene parámetros. |
# Print the current movement timeout in milliseconds
brain.screen.print(arm1.get_timeout())
is_connected#
is_connected devuelve si el brazo de 6 ejes está conectado al cerebro V5.
True: el brazo de 6 ejes está conectado al cerebro V5.False— El brazo de 6 ejes no está conectado al cerebro V5.
Usage:
arm1.is_connected()
Parámetros |
Descripción |
|---|---|
Este método no tiene parámetros. |
# Print whether the 6-Axis Arm is connected
brain.screen.print(arm1.is_connected())
Devoluciones de llamada#
control_stopped#
control_stopped registra una función que se ejecuta cuando la parada de control está habilitada.
Este método devuelve una instancia de la clase Event.
Usage:
arm1.control_stopped(callback, arg)
Parámetro |
Descripción |
|---|---|
|
Una función previamente definida que se ejecuta cuando la parada de control está habilitada. |
|
Opcional. Una tupla que contiene argumentos para pasar a la función de devolución de llamada. Consulte Uso de funciones con parámetros para obtener más información. |
# 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 registra una función que se ejecuta cuando el brazo de 6 ejes se ha estrellado mientras se movía.
Cuando se detecta un choque, el brazo de 6 ejes detiene el movimiento del motor y puede parecer que se debilita. Esto reduce la tensión y ayuda a proteger los motores de daños accidentales.
Usage:
arm1.crashed(callback)
Parámetro |
Descripción |
|---|---|
|
Una función previamente definida que se ejecuta cuando se detecta un bloqueo. |
# Define what happens if a crash is detected
def arm_crash():
brain.screen.print("Crash Detected")
# Run arm_crash when the 6-Axis Arm crashes
arm1.crashed(arm_crash)
Constructores#
Arm#
Arm crea un objeto de brazo de 6 ejes. El brazo de 6 ejes debe construirse manualmente en VEXcode V5 antes de que pueda usarse en un proyecto.
Usage:
Arm(smartport)
Parámetro |
Descripción |
|---|---|
|
El puerto inteligente al que está conectado el brazo de 6 ejes, escrito como |
# Construct a 6-Axis Arm named arm1 with the Arm class
arm1 = Arm(Ports.PORT1)