6-axlig arm#

Introduktion#

VEX 6-axlig robotarm är en robotmanipulator som används i CTE-arbetscellen. I VEXcode EXP tillåter armmetoder en EXP-hjärna att röra 6-axlig arm, rotera dess ändeffektor, kontrollera om rörelser är möjliga och styra anslutna verktyg som magnetupptagningsverktyget eller pennhållarverktyget.

Den här sidan är för CTE Workcell-projekt där 6-axlig arm är ansluten till en EXP Brain. Om du använder 6-axlig arm ensam med CTE-plattan, använd sidan CTE Arm API istället.

Exemplen på den här sidan använder en konfigurerad 6-axlig arm med namnet arm1.

Nedan följer en lista över alla tillgängliga metoder:

Åtgärder — Flytta 6-axlig arm till positioner eller orienteringar.

  • move_to — Flyttar ändeffektorn till en specificerad x-, y- och z-koordinat.

  • move_inc — Flyttar ändeffektorn ett angivet avstånd från dess aktuella position.

  • move_end_effector_to — Roterar ändeffektorn till en specificerad girnings-, rullnings- och lutningsorientering.

  • move_end_effector_inc — Roterar ändeffektorn med en specificerad girnings-, rullnings- och lutningsmängd.

Mutatorer — Konfigurera rörelser, verktyg och kontrollinställningar.

  • set_speed — Ställer in rörelsehastigheten som används av 6-axlig arm.

  • set_end_effector_type — Ställer in typen av ändeffektor som är fäst vid 6-axlig arm.

  • set_end_effector_magnet — Aktiverar eller släpper magnetupptagningsverktyget.

  • set_pen_offset — Ställer in z-axelns offset som används med pennhållarverktyget.

  • set_control_stop — Aktiverar kontrollstopp för 6-axlig arm.

  • set_timeout — Ställer in timeouten som används av 6-axliga armrörelsemetoder.

Getters — Returnerar rörelsestatus, position, orientering och anslutningsvärden.

  • is_done — Returnerar om 6-axlig arm har slutfört sin rörelse.

  • is_crashed — Returnerar om 6-axlig arm har kraschat under rörelse.

  • get_x — Returnerar ändeffektorns aktuella x-position.

  • get_y — Returnerar ändeffektorns aktuella y-position.

  • get_z — Returnerar ändeffektorns aktuella z-position.

  • get_pitch — Returnerar den aktuella tonhöjden för ändeffektorn.

  • get_roll — Returnerar den aktuella rullen för sluteffektorn.

  • get_yaw — Returnerar den aktuella girningen för ändeffektorn.

  • can_arm_reach_to — Returnerar om 6-axlig arm kan nå en specifik position.

  • can_arm_reach_inc — Returnerar om 6-axlig arm kan röra sig ett visst avstånd.

  • can_end_effector_reach_to — Returnerar om ändeffektorn kan nå en specificerad orientering.

  • can_end_effector_reach_inc — Returnerar om ändeffektorn kan rotera med en viss mängd.

  • get_timeout — Returnerar det aktuella timeout-värdet som används av förflyttningsmetoder.

  • is_connected — Returnerar om 6-axlig arm är ansluten till EXP-hjärnan.

Återanrop — Kör funktioner när aktiveringshändelser inträffar.

  • control_stopped — Registrerar en funktion som ska köras när kontrollstopp är aktiverat.

  • crashed — Registrerar en funktion som ska köras när en krasch upptäcks.

Konstruktor — Skapa manuellt ett 6-axligt armobjekt.

  • Arm — Skapar ett armobjekt med 6 axlar.

Åtgärder#

move_to#

move_to flyttar 6-axlig arm till en specificerad x-, y- och z-koordinat.

X-, y- och z-koordinaterna beskriver ändeffektorns position i det tredimensionella rummet. Använd can_arm_reach_to före denna metod om målpositionen kan ligga utanför 6-axlarmens nåbara arbetsyta.

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

Parameter

Beskrivning

x

Målpositionens x-koordinat i millimeter.

y

Y-koordinaten för målpositionen i millimeter.

z

Z-koordinaten för målpositionen i millimeter.

wait

Valfritt. wait=True (standard) gör att projektet väntar tills rörelsen är klar innan den fortsätter. wait=False startar rörelsen och fortsätter omedelbart till nästa kodrad.

# 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 flyttar 6-axlig arm ett angivet avstånd från dess aktuella position längs x-, y- och z-axlarna.

Använd den här metoden för att flytta i förhållande till var ändeffektorn nu befinner sig. Använd can_arm_reach_inc före den här metoden om rörelsen kan placera 6-axlig arm utanför dess nåbara arbetsyta.

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

Parameter

Beskrivning

x

Avståndet som ska förflyttas längs x-axeln i millimeter.

y

Avståndet att förflytta sig längs y-axeln i millimeter.

z

Avståndet som ska förflyttas längs z-axeln i millimeter.

wait

Valfritt. wait=True (standard) gör att projektet väntar tills rörelsen är klar innan den fortsätter. wait=False startar rörelsen och fortsätter omedelbart till nästa kodrad.

# 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 roterar 6-axlarmens ändeffektor till en specificerad girnings-, rullnings- och tippningsorientering.

Orientering beskriver hur ändeffektorn roteras. yaw roterar runt z-axeln, roll roterar runt x-axeln och pitch roterar runt y-axeln.

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

Parameter

Beskrivning

yaw

Målets girvinkel, i grader.

roll

Målets rullvinkel, i grader.

pitch

Målets lutningsvinkel, i grader.

wait

Valfritt. wait=True (standard) gör att projektet väntar tills rörelsen är klar innan den fortsätter. wait=False startar rörelsen och fortsätter omedelbart till nästa kodrad.

# 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 roterar 6-axlarmens ändeffektor med en specificerad girnings-, rullnings- och lutningsmängd från dess aktuella orientering.

Använd den här metoden för att rotera i förhållande till ändeffektorns aktuella girning, roll eller lutning.

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

Parameter

Beskrivning

yaw

Förändringen i girning, i grader.

roll

Förändringen i rullning, i grader.

pitch

Förändringen i tonhöjd, i grader.

wait

Valfritt. wait=True (standard) gör att projektet väntar tills rörelsen är klar innan den fortsätter. wait=False startar rörelsen och fortsätter omedelbart till nästa kodrad.

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

Mutatorer#

set_speed#

set_speed ställer in rörelsehastigheten som används av 6-axlig arm för rörelsemetoder.

6-axlig armhastighet är inställd på 50 % i början av ett projekt.

Usage:
arm1.set_speed(speed)

Parameter

Beskrivning

speed

Rörelsehastigheten för 6-axlarmens arm, från 1 till 100 procent.

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

set_end_effector_type#

set_end_effector_type anger typen av ändeffektor som är fäst vid 6-axlig arm.

När ändeffektortypen ändras justerar 6-axlig arm automatiskt sin z-offset för att matcha det valda verktyget. Ändeffektortypen ställs in på MAGNET i början av ett projekt.

Usage:
arm1.set_end_effector_type(type)

Parameter

Beskrivning

type

Verktyget som är fäst vid 6-axlingsarmen: MAGNET (magnetupptagningsverktyg) eller PEN (pennhållarverktyg).

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

set_end_effector_magnet#

set_end_effector_magnet aktiverar eller släpper magnetupptagningsverktyget.

Magnettillståndet förblir aktivt tills en annan set_end_effector_magnet -metod ändrar det. Magnettillståndet återställs till False i början av ett projekt.

Usage:
arm1.set_end_effector_magnet(state)

Parameter

Beskrivning

state

Magnetupplockningsverktygets tillstånd: True för att plocka upp och hålla föremål eller False för att släppa ett föremål som hålls och sluta plocka upp nya föremål.

# 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 ställer in z-axelns offset som används när pennhållarverktyget är fäst på 6-axlig arm.

Ställ in ändeffektortypen till PEN innan du använder den här metoden. Om pennhållarverktyget inte är valt har den här metoden ingen effekt.

Pennans offset är avståndet från toppen av pennhållarverktyget till spetsen på whiteboardpennan. I början av ett projekt är pennans offset inställt på 0En pennoffset på 0 placerar armens z-axelorigo vid den punkt där pennhållarverktyget ansluter till 6-axlad arm.

Usage:
arm1.set_pen_offset(zOffset)

Parameter

Beskrivning

zOffset

Pennans offsetvärde i millimeter.

# 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 aktiverar kontrollstopp för 6-axlig arm.

När kontrollstopp är aktiverat stoppar 6-axlig arm omedelbart alla rörelser och kör inga ytterligare armrörelsemetoder förrän projektet startas om.

Usage:
arm1.set_control_stop(state)

Parameter

Beskrivning

state

Valfritt. True (standard) aktiverar kontrollstopp. False aktiverar inte kontrollstopp.

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

set_timeout#

set_timeout anger timeout-värdet som används vid förflyttning av 6-axlig arm.

Om en rörelse inte avslutas innan timeout-tiden har nåtts fortsätter projektet till nästa kodrad.

Usage:
arm1.set_timeout(timeout, units)

Parameter

Beskrivning

timeout

Det nya timeout-värdet.

units

Valfritt. Tidsenheten: MSEC (millisekunder, standard), SECONDSeller SEC.

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

Getters#

is_done#

is_done returnerar om 6-axlig arm har rört sig färdigt.

Den här metoden är användbar efter att en förflyttningsmetod anropats med wait=False.

  • True — 6-axlig arm har rört sig färdigt.

  • False — 6-axlig arm rör sig fortfarande.

Usage:
arm1.is_done()

Parametrar

Beskrivning

Den här metoden har inga parametrar.

# 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 returnerar om 6-axlig arm har kraschat under rörelse.

När en krasch upptäcks stoppar 6-axlig arm motorns rörelse och kan verka slak. Detta minskar belastningen och hjälper till att skydda motorerna från oavsiktliga skador.

  • True — 6-axlig arm har kraschat.

  • False — 6-axlig arm har inte kraschat.

Usage:
arm1.is_crashed()

Parametrar

Beskrivning

Den här metoden har inga parametrar.

# 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 returnerar ändeffektorns aktuella x-position i millimeter.

Använd den här metoden för att avläsa var ändeffektorn för närvarande är placerad längs x-axeln.

Usage:
arm1.get_x()

Parametrar

Beskrivning

Den här metoden har inga parametrar.

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

get_y#

get_y returnerar ändeffektorns aktuella y-position i millimeter.

Använd den här metoden för att avläsa var ändeffektorn för närvarande är placerad längs y-axeln.

Usage:
arm1.get_y()

Parametrar

Beskrivning

Den här metoden har inga parametrar.

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

get_z#

get_z returnerar ändeffektorns aktuella z-position i millimeter.

Använd den här metoden för att avläsa var ändeffektorn för närvarande är placerad längs z-axeln.

Usage:
arm1.get_z()

Parametrar

Beskrivning

Den här metoden har inga parametrar.

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

get_pitch#

get_pitch returnerar den aktuella tonhöjden för ändeffektorn i grader.

Usage:
arm1.get_pitch()

Parametrar

Beskrivning

Den här metoden har inga parametrar.

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

get_roll#

get_roll returnerar den aktuella rullningen av ändeffektorn i grader.

Usage:
arm1.get_roll()

Parametrar

Beskrivning

Den här metoden har inga parametrar.

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

get_yaw#

get_yaw returnerar den aktuella girningen för ändeffektorn i grader.

Usage:
arm1.get_yaw()

Parametrar

Beskrivning

Den här metoden har inga parametrar.

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

can_arm_reach_to#

can_arm_reach_to returnerar om 6-axlig arm kan flytta ändeffektorn till en specificerad x-, y- och z-koordinat.

Använd den här metoden för att kontrollera en målposition innan du använder move_to.

  • True — 6-axlig arm kan nå den begärda positionen.

  • False — 6-axlig arm kan inte nå den begärda positionen.

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

Parameter

Beskrivning

x

Målpositionens x-koordinat i millimeter.

y

Y-koordinaten för målpositionen i millimeter.

z

Z-koordinaten för målpositionen i millimeter.

# 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 returnerar om 6-axlig arm kan flytta ändeffektorn med ett angivet x-, y- och z-avstånd från dess aktuella position.

Använd den här metoden för att kontrollera en relativ rörelse innan du använder move_inc.

  • True — 6-axlig arm kan utföra den begärda rörelsen.

  • False — 6-axlig arm kan inte utföra den begärda rörelsen.

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

Parameter

Beskrivning

x

Avståndet som ska förflyttas längs x-axeln i millimeter.

y

Avståndet att förflytta sig längs y-axeln i millimeter.

z

Avståndet som ska förflyttas längs z-axeln i millimeter.

# 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 returnerar om ändeffektorn kan rotera till en specificerad girnings-, rullnings- och tippningsorientering.

Använd den här metoden för att kontrollera ett måls orientering innan du använder move_end_effector_to.

  • True — Ändeffektorn kan nå den begärda orienteringen.

  • False — Ändeffektorn kan inte nå den begärda orienteringen.

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

Parameter

Beskrivning

yaw

Målets girvinkel, i grader.

roll

Målets rullvinkel, i grader.

pitch

Målets lutningsvinkel, i grader.

# 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 returnerar om ändeffektorn kan rotera med en specificerad girnings-, rullnings- och lutningsmängd från sin nuvarande orientering.

Använd den här metoden för att kontrollera en relativ orienteringsrörelse innan du använder move_end_effector_inc.

  • True — Ändeffektorn kan utföra den begärda rotationen.

  • False — Ändeffektorn kan inte utföra den begärda rotationen.

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

Parameter

Beskrivning

yaw

Förändringen i girning, i grader.

roll

Förändringen i rullning, i grader.

pitch

Förändringen i tonhöjd, i grader.

# 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 returnerar timeout-värdet som används av 6-axliga armrörelsemetoder i millisekunder.

Usage:
arm1.get_timeout()

Parametrar

Beskrivning

Den här metoden har inga parametrar.

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

is_connected#

is_connected returnerar om 6-axlig arm är ansluten till EXP Brain.

  • True — 6-axlig arm är ansluten till EXP-hjärnan.

  • False — 6-axlig arm är inte ansluten till EXP-hjärnan.

Usage:
arm1.is_connected()

Parametrar

Beskrivning

Den här metoden har inga parametrar.

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

Återuppringningar#

control_stopped#

control_stopped registrerar en funktion som körs när kontrollstopp är aktiverat.

Den här metoden returnerar en instans av klassen Event.

Usage:
arm1.control_stopped(callback, arg)

Parameter

Beskrivning

callback

En tidigare definierad funktion som körs när kontrollstopp är aktiverat.

arg

Valfritt. En tupel som innehåller argument som ska skickas till callback-funktionen. Se Använda funktioner med parametrar för mer information.

# 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 registrerar en funktion som körs när 6-axlig arm har kraschat under rörelse.

När en krasch upptäcks stoppar 6-axlig arm motorns rörelse och kan verka slak. Detta minskar belastningen och hjälper till att skydda motorerna från oavsiktliga skador.

Usage:
arm1.crashed(callback)

Parameter

Beskrivning

callback

En tidigare definierad funktion som körs när en krasch upptäcks.

# 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)

Konstruktörer#

Arm#

Arm skapar ett 6-axligt armobjekt.

Usage:
Arm(smartport)

Parameter

Beskrivning

smartport

Den smarta porten som 6-axlingsarmen är ansluten till, skriven som Ports.PORTx, där x är portnumret.

# Construct a 6-Axis Arm named arm1 with the Arm class
arm1 = Arm(Ports.PORT1)