Braço de 6 eixos#

Introdução#

O braço robótico de 6 eixos da VEX movimenta um atuador final no espaço tridimensional, controla a orientação desse atuador e funciona com ferramentas acopladas, como a ferramenta de recolha magnética ou o suporte para caneta.

Segue-se uma lista de todos os métodos disponíveis:

Ações — Mova o braço de 6 eixos para as posições ou orientações pretendidas.

  • move_to — Move o efetor final para uma coordenada x, y e z especificada.

  • move_inc — Move o efetor final por uma distância especificada a partir da sua posição atual.

  • move_end_effector_to — Roda o efetor final para uma orientação de guinada, rotação e inclinação especificada.

  • move_end_effector_inc — Roda o efetor final por uma quantidade especificada de guinada, rotação e inclinação.

Mutadores — Configure os movimentos, as ferramentas e os ajustes de controlo.

  • set_speed — Define a velocidade de movimento utilizada pelo braço de 6 eixos.

  • set_end_effector_type — Define o tipo de efetor final ligado ao braço de 6 eixos.

  • set_end_effector_magnet — Engata ou liberta a Ferramenta de Recolha Magnética.

  • set_pen_offset — Define o deslocamento do eixo z utilizado com a Ferramenta de Suporte de Canetas.

  • set_control_stop — Activa a paragem de controlo para o braço de 6 eixos.

  • set_timeout — Define o tempo limite utilizado pelos métodos de movimento do braço de 6 eixos.

Getters — Devolvem o estado do movimento, a posição, a orientação e os valores de ligação.

  • is_done — Retorna se o braço de 6 eixos terminou de se mover.

  • get_x — Retorna a posição x actual do efetor final.

  • get_y — Retorna a posição y atual do efetor final.

  • get_z — Retorna a posição z atual do efetor final.

  • get_pitch — Retorna o tom atual do efetor final.

  • get_roll — Retorna o roll atual do efetor final.

  • get_yaw — Retorna o yaw atual do efetor final.

  • can_arm_reach_to — Retorna se o braço de 6 eixos consegue atingir uma posição especificada.

  • can_arm_reach_inc — Retorna se o braço de 6 eixos se pode mover uma distância especificada.

  • can_end_effector_reach_to — Retorna se o efetor final pode atingir uma orientação especificada.

  • can_end_effector_reach_inc — Retorna se o efetor final pode rodar por uma quantidade especificada.

  • get_timeout — Retorna o valor de tempo limite actual utilizado pelos métodos de movimento.

  • is_connected — Retorna se o Braço de 6 Eixos está ligado ao Cérebro.

Callbacks — Executam funções quando ocorrem eventos de ativação do mecanismo de disparo.

  • control_stopped — Regista uma função para executar quando a paragem de controlo está activada.

Construtor — Crie manualmente um objeto de braço de 6 eixos.

  • Arm — Cria um objeto de braço de 6 eixos.

Esta página é para utilizar o Braço de 6 Eixos sozinho com o CTE Tile. Para utilizar o Braço de 6 Eixos com outros componentes da CTE Workcell, como Pneumáticos ou Transportadores, ligue o Braço de 6 Eixos a um EXP Brain e utilize a página EXP Arm correspondente.

Ações#

move_to#

move_to move o braço de 6 eixos para uma coordenada x, y e z especificada.

As coordenadas x, y e z descrevem a posição do efetor final no espaço tridimensional. Utilize can_arm_reach_to antes deste método se a posição alvo puder estar fora do espaço de trabalho alcançável do Braço de 6 Eixos.

Usage:
arm.move_to(x, y, z, wait)

Parâmetro

Descrição

x

A coordenada x da posição do alvo em milímetros.

y

A coordenada y da posição do alvo em milímetros.

z

A coordenada z da posição do alvo em milímetros.

wait

Opcional. wait=True (padrão) faz com que o projeto espere até que o movimento esteja concluído antes de continuar. wait=False inicia o movimento e continua imediatamente para a linha de código seguinte.

# Move the 6-Axis Arm to (40, 140, 210)
arm.move_to(40, 140, 210)

# Start moving, then print the y-position while the arm moves
arm.move_to(-100, 200, 100, wait=False)

while not arm.is_done():
    brain.print(arm.get_y())
    brain.new_line()
    wait(0.25, SECONDS)

move_inc#

move_inc move o braço de 6 eixos por uma distância especificada a partir da sua posição actual ao longo dos eixos x, y e z.

Utilize este método para se mover em relação ao local onde o efetor final está agora. Utilize can_arm_reach_inc antes deste método se o movimento puder colocar o Braço de 6 Eixos fora do seu espaço de trabalho alcançável.

Usage:
arm.move_inc(x, y, z, wait)

Parâmetro

Descrição

x

A distância a percorrer ao longo do eixo x, em milímetros.

y

A distância a percorrer ao longo do eixo dos y, em milímetros.

z

A distância a percorrer ao longo do eixo z, em milímetros.

wait

Opcional. wait=True (padrão) faz com que o projeto espere até que o movimento esteja concluído antes de continuar. wait=False inicia o movimento e continua imediatamente para a linha de código seguinte.

# Move the 6-Axis Arm 100 millimeters along the y-axis
arm.move_inc(0, 100, 0)

move_end_effector_to#

move_end_effector_to roda o efetor final do braço de 6 eixos para uma orientação específica de guinada, rotação e inclinação.

A orientação descreve como o efetor final é rodado. yaw roda em torno do eixo z, roll roda em torno do eixo x e pitch roda em torno do eixo y.

Usage:
arm.move_end_effector_to(yaw, roll, pitch, wait)

Parâmetro

Descrição

yaw

O ângulo de guinada alvo, em graus.

roll

O ângulo de inclinação alvo, em graus.

pitch

O ângulo de inclinação alvo, em graus.

wait

Opcional. wait=True (padrão) faz com que o projeto espere até que o movimento esteja concluído antes de continuar. wait=False inicia o movimento e continua imediatamente para a linha de código seguinte.

# Rotate the end effector to 90 degrees of roll
arm.move_end_effector_to(0, 90, 0)

move_end_effector_inc#

move_end_effector_inc roda o efetor final do braço de 6 eixos numa quantidade especificada de guinada, rotação e inclinação a partir da sua orientação atual.

Utilize este método para rodar em relação à guinada, rotação ou inclinação atual do efetor final.

Usage:
arm.move_end_effector_inc(yaw, roll, pitch, wait)

Parâmetro

Descrição

yaw

A variação do ângulo de guinada, em graus.

roll

A mudança de inclinação, em graus.

pitch

A mudança de tom, em graus.

wait

Opcional. wait=True (padrão) faz com que o projeto espere até que o movimento esteja concluído antes de continuar. wait=False inicia o movimento e continua imediatamente para a linha de código seguinte.

# Rotate the end effector -50 degrees in pitch
arm.move_end_effector_inc(0, 0, -50)

Mutantes#

set_speed#

set_speed define a velocidade de movimento utilizada pelo braço de 6 eixos para os métodos de movimento.

A velocidade do braço de 6 eixos é definida para 50% no início de um projeto.

Usage:
arm.set_speed(speed)

Parâmetro

Descrição

speed

A velocidade de movimento do braço de 6 eixos, de 1 a 100 por cento.

# Set the 6-Axis Arm speed to 30%
arm.set_speed(30)

set_end_effector_type#

set_end_effector_type define o tipo de efetor final ligado ao braço de 6 eixos.

Quando o tipo de ferramenta final é alterado, o braço de 6 eixos ajusta automaticamente o seu deslocamento em z para corresponder à ferramenta selecionada. O tipo de ferramenta final é definido como Arm.MAGNET no início de um projeto.

Usage:
arm.set_end_effector_type(type)

Parâmetro

Descrição

type

A ferramenta acoplada ao braço de 6 eixos é: Arm.MAGNET (Ferramenta de recolha magnética) ou Arm.PEN (Ferramenta porta-canetas).

# Set the end effector type to the Pen Holder Tool
arm.set_end_effector_type(Arm.PEN)

set_end_effector_magnet#

set_end_effector_magnet engrena ou desengata a ferramenta de recolha magnética.

O estado do íman permanece ativo até que outro método set_end_effector_magnet o altere. O estado do íman é reposto em False no início de um projeto.

Usage:
arm.set_end_effector_magnet(state)

Parâmetro

Descrição

state

O estado da Ferramenta de Recolha Magnética é: True para apanhar e segurar objetos ou False para largar qualquer objeto seguro e parar de apanhar novos objetos.

# Pick up objects and then drop them
arm.set_end_effector_type(Arm.MAGNET)
arm.set_end_effector_magnet(True)
wait(2, SECONDS)
arm.set_end_effector_magnet(False)

set_pen_offset#

set_pen_offset define o deslocamento do eixo z utilizado quando a ferramenta de suporte da caneta está ligada ao braço de 6 eixos.

Defina o tipo de atuador final para Arm.PEN antes de utilizar este método. Se a Ferramenta Suporte de Canetas não estiver selecionada, este método não terá qualquer efeito.

O deslocamento da caneta é a distância entre a parte superior do suporte da caneta e a ponta do marcador de quadro branco. No início de um projeto, o deslocamento da caneta é definido como 0Um deslocamento da caneta de 0 posiciona a origem do eixo z do braço no ponto onde o suporte da caneta se liga ao braço de 6 eixos.

Usage:
arm.set_pen_offset(zOffset)

Parâmetro

Descrição

zOffset

O valor de deslocamento da caneta em milímetros.

# Set the end effector type to the Pen Holder Tool and set the pen offset
arm.set_end_effector_type(Arm.PEN)
arm.set_pen_offset(25)

set_control_stop#

O comando set_control_stop activa a paragem de controlo para o braço de 6 eixos.

Quando a paragem de controlo está ativada, o braço de 6 eixos interrompe imediatamente qualquer movimento e não executará mais nenhum método de movimento do braço até que o projeto seja reiniciado.

Usage:
arm.set_control_stop(state)

Parâmetro

Descrição

state

Opcional. True (padrão) ativa a paragem de controlo. False não ativa a paragem de controlo.

# Stop the 6-Axis Arm and prevent further movement
arm.set_control_stop()

set_timeout#

set_timeout define o valor de tempo limite utilizado ao mover o braço de 6 eixos.

Se uma ação não for concluída antes de ser atingido o tempo limite, o projeto continua para a linha de código seguinte.

Usage:
arm.set_timeout(timeout, units)

Parâmetro

Descrição

timeout

O novo valor de tempo limite.

units

Opcional. A unidade de tempo: MSEC (milissegundos, predefinição), SECONDSou SEC.

# Set the 6-Axis Arm timeout to 2 seconds
arm.set_timeout(2, SECONDS)

Getters#

is_done#

is_done retorna se o braço de 6 eixos tiver terminado de se mover.

Este método é útil após um método de movimento ser chamado com wait=False.

  • True — O braço de 6 eixos terminou de se mover.

  • False — O braço de 6 eixos ainda se move.

Usage:
arm.is_done()

Parâmetros

Descrição

Este método não tem parâmetros.

# Display the 6-Axis Arm's y-position while it moves
arm.move_to(-100, 200, 100, wait=False)

while not arm.is_done():
    brain.print(arm.get_y())
    brain.new_line()
    wait(0.25, SECONDS)

get_x#

get_x devolve a posição x atual do efetor final em milímetros.

Utilize este método para ler a posição atual do efetor final ao longo do eixo x.

Usage:
arm.get_x()

Parâmetros

Descrição

Este método não tem parâmetros.

# Print the current x position of the 6-Axis Arm
brain.print(arm.get_x())

get_y#

get_y devolve a posição y atual do efetor final em milímetros.

Utilize este método para ler a posição atual do efetor final ao longo do eixo y.

Usage:
arm.get_y()

Parâmetros

Descrição

Este método não tem parâmetros.

# Print the current y position of the 6-Axis Arm
brain.print(arm.get_y())

get_z#

get_z devolve a posição z atual do efetor final em milímetros.

Utilize este método para ler a posição atual do efetor final ao longo do eixo z.

Usage:
arm.get_z()

Parâmetros

Descrição

Este método não tem parâmetros.

# Print the current z position of the 6-Axis Arm
brain.print(arm.get_z())

get_pitch#

get_pitch devolve a inclinação atual do efetor final em graus.

Usage:
arm.get_pitch()

Parâmetros

Descrição

Este método não tem parâmetros.

# Print the current pitch of the end effector
brain.print(arm.get_pitch())

get_roll#

get_roll devolve a rotação atual do efetor final em graus.

Usage:
arm.get_roll()

Parâmetros

Descrição

Este método não tem parâmetros.

# Print the current roll of the end effector
brain.print(arm.get_roll())

get_yaw#

get_yaw devolve o ângulo de guinada atual do efetor final em graus.

Usage:
arm.get_yaw()

Parâmetros

Descrição

Este método não tem parâmetros.

# Print the current yaw of the end effector
brain.print(arm.get_yaw())

can_arm_reach_to#

valor para can_arm_reach_to indica se o braço de 6 eixos pode mover o efetor final para uma coordenada x, y e z especificada.

Utilize este método para verificar uma posição alvo antes de utilizar move_to.

  • True — O braço de 6 eixos consegue alcançar a posição solicitada.

  • False — O braço de 6 eixos não consegue alcançar a posição solicitada.

Usage:
arm.can_arm_reach_to(x, y, z)

Parâmetro

Descrição

x

A coordenada x da posição do alvo em milímetros.

y

A coordenada y da posição do alvo em milímetros.

z

A coordenada z da posição do alvo em milímetros.

# Move the 6-Axis Arm to (100, -20, 50) if it can reach
if arm.can_arm_reach_to(100, -20, 50):
    arm.move_to(100, -20, 50)

can_arm_reach_inc#

can_arm_reach_inc retorna se o braço de 6 eixos pode mover o efetor final uma distância x, y e z especificada a partir da sua posição atual.

Utilize este método para verificar um movimento relativo antes de utilizar move_inc.

  • True — O braço de 6 eixos pode fazer o movimento solicitado.

  • False — O braço de 6 eixos não pode executar o movimento solicitado.

Usage:
arm.can_arm_reach_inc(x, y, z)

Parâmetro

Descrição

x

A distância a percorrer ao longo do eixo x, em milímetros.

y

A distância a percorrer ao longo do eixo dos y, em milímetros.

z

A distância a percorrer ao longo do eixo z, em milímetros.

# Increment the 6-Axis Arm 100 mm along the x-axis if possible
if arm.can_arm_reach_inc(100, 0, 0):
    arm.move_inc(100, 0, 0)

can_end_effector_reach_to#

valor para can_end_effector_reach_to indica se o efetor final pode rodar para uma orientação específica de guinada, rotação e inclinação.

Utilize este método para verificar uma orientação alvo antes de utilizar move_end_effector_to.

  • True — O efetor final consegue atingir a orientação solicitada.

  • False — O efetor final não consegue alcançar a orientação solicitada.

Usage:
arm.can_end_effector_reach_to(yaw, roll, pitch)

Parâmetro

Descrição

yaw

O ângulo de guinada alvo, em graus.

roll

O ângulo de inclinação alvo, em graus.

pitch

O ângulo de inclinação alvo, em graus.

# Rotate the end effector to 90 degrees of roll if possible
if arm.can_end_effector_reach_to(0, 90, 0):
    arm.move_end_effector_to(0, 90, 0)

can_end_effector_reach_inc#

can_end_effector_reach_inc retorna se o efetor final pode rodar por uma quantidade especificada de guinada, rotação e inclinação a partir da sua orientação atual.

Utilize este método para verificar um movimento de orientação relativa antes de utilizar move_end_effector_inc.

  • True — O efetor final pode fazer a rotação solicitada.

  • False — O efetor final não consegue realizar a rotação solicitada.

Usage:
arm.can_end_effector_reach_inc(yaw, roll, pitch)

Parâmetro

Descrição

yaw

A variação do ângulo de guinada, em graus.

roll

A mudança de inclinação, em graus.

pitch

A mudança de tom, em graus.

# Increment the end effector by 10 degrees of pitch if possible
if arm.can_end_effector_reach_inc(0, 0, 10):
    arm.move_end_effector_inc(0, 0, 10)

get_timeout#

get_timeout devolve o valor de tempo limite utilizado pelos métodos de movimento do braço de 6 eixos em milissegundos.

Usage:
arm.get_timeout()

Parâmetros

Descrição

Este método não tem parâmetros.

# Print the current movement timeout in milliseconds
brain.print(arm.get_timeout())

is_connected#

is_connected retorna se o braço de 6 eixos está ligado ao cérebro.

  • True — O braço de 6 eixos está ligado ao cérebro.

  • False — O braço de 6 eixos não está ligado ao cérebro.

Usage:
arm.is_connected()

Parâmetros

Descrição

Este método não tem parâmetros.

# Print whether the 6-Axis Arm is connected
brain.print(arm.is_connected())

Retornos de chamada#

control_stopped#

control_stopped regista uma função que é executada quando a paragem de controlo está activada.

Este método retorna uma instância da classe Event.

Usage:
arm.control_stopped(callback, arg)

Parâmetro

Descrição

callback

Uma função previamente definida que é executada quando a paragem de controlo é activada.

arg

Opcional. Uma tupla contendo argumentos para passar para a função de callback. Consulte Utilizar funções com parâmetros para obter mais informações.

# Define a function to run when control stop is enabled
def when_control_stopped():
    brain.print("The arm has been control stopped")

# Run when_control_stopped when the 6-Axis Arm is control stopped
arm.control_stopped(when_control_stopped)

Construtores#

Arm#

O comando Arm cria um objeto de braço de 6 eixos.

Usage:
Arm()

Parâmetros

Descrição

Este construtor não possui parâmetros.

# Construct a 6-Axis Arm named arm with the Arm class
arm = Arm()