6-assige arm#

Invoering#

De VEX 6-assige robotarm is een robotmanipulator die wordt gebruikt in de CTE-werkcel. In VEXcode EXP maken armmethoden het mogelijk voor een EXP Brain om de 6-assige arm te bewegen, de eindeffector te roteren, te controleren of bewegingen mogelijk zijn en aangesloten gereedschappen zoals de magneetgrijper of de pennenhouder te besturen.

Deze pagina is bedoeld voor CTE Workcell-projecten waarbij de 6-assige arm is verbonden met een EXP Brain. Als u de 6-assige arm los gebruikt met de CTE Tile, raadpleeg dan de pagina CTE Arm API.

De voorbeelden op deze pagina gebruiken een geconfigureerde 6-assige arm met de naam arm1.

Hieronder vindt u een lijst met alle beschikbare methoden:

Acties — Beweeg de 6-assige arm naar de gewenste posities of oriëntaties.

  • move_to — Verplaatst de eindeffector naar een opgegeven x-, y- en z-coördinaat.

  • move_inc — Verplaatst de eindeffector over een opgegeven afstand vanaf zijn huidige positie.

  • move_end_effector_to — Draait de eindeffector naar een gespecificeerde gier-, rol- en stamprichting.

  • move_end_effector_inc — Draait de eindeffector met een gespecificeerde hoeveelheid gier-, rol- en stampbeweging.

Mutators — Configureer beweging, gereedschap en besturingsinstellingen.

  • set_speed — Stelt de bewegingssnelheid in die door de 6-assige arm wordt gebruikt.

  • set_end_effector_type — Stelt het type eindeffector in dat aan de 6-assige arm is bevestigd.

  • set_end_effector_magnet — Schakelt het magneetoppakgereedschap in of uit.

  • set_pen_offset — Stelt de z-as-offset in die wordt gebruikt met het Pen Holder Tool.

  • set_control_stop — Schakelt de controlestop voor de 6-assige arm in.

  • set_timeout — Stelt de time-out in die wordt gebruikt door de bewegingsmethoden van de 6-assige arm.

Getters — Retourneren bewegingsstatus, positie, oriëntatie en verbindingswaarden.

  • is_done — Geeft aan of de 6-assige arm klaar is met bewegen.

  • is_crashed — Geeft aan of de 6-assige arm is gecrasht tijdens het bewegen.

  • get_x — Retourneert de huidige x-positie van de eindeffector.

  • get_y — Retourneert de huidige y-positie van de eindeffector.

  • get_z — Retourneert de huidige z-positie van de eindeffector.

  • get_pitch — Retourneert de huidige toonhoogte van de eindeffector.

  • get_roll — Retourneert de huidige worp van de eindeffector.

  • get_yaw — Retourneert de huidige yaw van de eindeffector.

  • can_arm_reach_to — Geeft aan of de 6-assige arm een ​​opgegeven positie kan bereiken.

  • can_arm_reach_inc — Geeft aan of de 6-assige arm een ​​opgegeven afstand kan afleggen.

  • can_end_effector_reach_to — Geeft aan of de eindeffector een gespecificeerde oriëntatie kan bereiken.

  • can_end_effector_reach_inc — Geeft aan of de eindeffector een gespecificeerde hoeveelheid kan roteren.

  • get_timeout — Retourneert de huidige time-outwaarde die wordt gebruikt door bewegingsmethoden.

  • is_connected — Geeft aan of de 6-assige arm is verbonden met het EXP-brein.

Callbacks — Voer functies uit wanneer er gebeurtenissen plaatsvinden die het systeem activeren.

  • control_stopped — Registreert een functie die moet worden uitgevoerd wanneer de controlestop is ingeschakeld.

  • crashed — Registreert een functie die moet worden uitgevoerd wanneer een crash wordt gedetecteerd.

Constructor — Maak handmatig een 6-assig armobject aan.

  • Arm — Maakt een 6-assig armobject aan.

Acties#

move_to#

move_to verplaatst de 6-assige arm naar een opgegeven x-, y- en z-coördinaat.

De x-, y- en z-coördinaten beschrijven de positie van de eindeffector in de driedimensionale ruimte. Gebruik can_arm_reach_to vóór deze methode als de doelpositie zich mogelijk buiten het bereikbare werkgebied van de 6-assige arm bevindt.

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

Parameter

Beschrijving

x

De x-coördinaat van de doelpositie in millimeters.

y

De y-coördinaat van de doelpositie in millimeters.

z

De z-coördinaat van de doelpositie in millimeters.

wait

Optioneel. wait=True (standaard) zorgt ervoor dat het project wacht tot de beweging is voltooid voordat het verdergaat. wait=False start de beweging en gaat direct verder naar de volgende regel code.

# 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 verplaatst de 6-assige arm over een opgegeven afstand vanaf de huidige positie langs de x-, y- en z-assen.

Gebruik deze methode om te bewegen ten opzichte van de huidige positie van de eindeffector. Gebruik can_arm_reach_inc vóór deze methode als de beweging de 6-assige arm buiten zijn bereikbare werkruimte kan plaatsen.

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

Parameter

Beschrijving

x

De afstand die langs de x-as moet worden afgelegd in millimeters.

y

De afstand die langs de y-as moet worden afgelegd, in millimeters.

z

De afstand die langs de z-as moet worden afgelegd, in millimeters.

wait

Optioneel. wait=True (standaard) zorgt ervoor dat het project wacht tot de beweging is voltooid voordat het verdergaat. wait=False start de beweging en gaat direct verder naar de volgende regel code.

# 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 roteert de eindeffector van de 6-assige arm naar een gespecificeerde gier-, rol- en stamprichting.

De oriëntatie beschrijft hoe de eindeffector roteert. yaw , roteert om de z-as; roll , roteert om de x-as; en pitch roteert om de y-as.

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

Parameter

Beschrijving

yaw

De gewenste gierhoek, in graden.

roll

De gewenste rolhoek, in graden.

pitch

De gewenste hellingshoek, in graden.

wait

Optioneel. wait=True (standaard) zorgt ervoor dat het project wacht tot de beweging is voltooid voordat het verdergaat. wait=False start de beweging en gaat direct verder naar de volgende regel code.

# 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 roteert de eindeffector van de 6-assige arm met een gespecificeerde hoeveelheid gier-, rol- en stampbeweging ten opzichte van de huidige oriëntatie.

Gebruik deze methode om te roteren ten opzichte van de huidige gier-, rol- of stampbeweging van de eindeffector.

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

Parameter

Beschrijving

yaw

De verandering in gierhoek, in graden.

roll

De verandering in de hellingshoek, in graden.

pitch

De toonhoogteverandering, in graden.

wait

Optioneel. wait=True (standaard) zorgt ervoor dat het project wacht tot de beweging is voltooid voordat het verdergaat. wait=False start de beweging en gaat direct verder naar de volgende regel code.

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

Mutators#

set_speed#

set_speed stelt de bewegingssnelheid in die de 6-assige arm gebruikt voor bewegingsmethoden.

De snelheid van de 6-assige arm wordt aan het begin van een project ingesteld op 50%.

Usage:
arm1.set_speed(speed)

Parameter

Beschrijving

speed

De bewegingssnelheid van de 6-assige arm, van 1 tot 100 procent.

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

set_end_effector_type#

set_end_effector_type stelt het type eindeffector in dat aan de 6-assige arm is bevestigd.

Wanneer het type eindeffector wordt gewijzigd, past de 6-assige arm automatisch de Z-offset aan aan het geselecteerde gereedschap. Het type eindeffector is aan het begin van een project ingesteld op MAGNET.

Usage:
arm1.set_end_effector_type(type)

Parameter

Beschrijving

type

Het gereedschap dat aan de 6-assige arm is bevestigd: MAGNET (Magneet-oppakgereedschap) of PEN (Penhoudergereedschap).

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

set_end_effector_magnet#

set_end_effector_magnet activeert of deactiveert het magneetoppakgereedschap.

De magneetstatus blijft actief totdat een andere methode set_end_effector_magnet deze wijzigt. De magneetstatus wordt aan het begin van een project gereset naar False.

Usage:
arm1.set_end_effector_magnet(state)

Parameter

Beschrijving

state

De magnetische grijper heeft de volgende statussen: True om objecten op te pakken en vast te houden, of False om elk vastgehouden object los te laten en te stoppen met het oppakken van nieuwe objecten.

# 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 stelt de z-as-offset in die wordt gebruikt wanneer het penhoudergereedschap is bevestigd aan de 6-assige arm.

Stel het type eindeffector in op PEN voordat u deze methode gebruikt. Als het gereedschap Penhouder niet is geselecteerd, heeft deze methode geen effect.

De penoffset is de afstand van de bovenkant van de penhouder tot de punt van de whiteboardstift. Aan het begin van een project is de penoffset ingesteld op 0Een penoffset van 0 plaatst het nulpunt van de z-as van de arm op het punt waar de penhouder is verbonden met de 6-assige arm.

Usage:
arm1.set_pen_offset(zOffset)

Parameter

Beschrijving

zOffset

De penoffsetwaarde in millimeters.

# 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 maakt de stopfunctie voor de 6-assige arm mogelijk.

Wanneer de stopfunctie is ingeschakeld, stopt de 6-assige arm onmiddellijk met bewegen en voert geen verdere bewegingen meer uit totdat het project opnieuw wordt gestart.

Usage:
arm1.set_control_stop(state)

Parameter

Beschrijving

state

Optioneel. True (standaard) schakelt de automatische stopfunctie in. False schakelt de automatische stopfunctie niet in.

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

set_timeout#

set_timeout stelt de time-outwaarde in die wordt gebruikt bij het bewegen van de 6-assige arm.

Als een beweging niet is voltooid voordat de time-out is bereikt, gaat het project verder met de volgende regel code.

Usage:
arm1.set_timeout(timeout, units)

Parameter

Beschrijving

timeout

De nieuwe time-outwaarde.

units

Optioneel. De tijdseenheid: MSEC (milliseconden, standaard), SECONDSof SEC.

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

Getters#

is_done#

is_done geeft aan of de 6-assige arm klaar is met bewegen.

Deze methode is handig nadat een bewegingsmethode is aangeroepen met wait=False.

  • True — De 6-assige arm is klaar met bewegen.

  • False — De 6-assige arm beweegt nog steeds.

Usage:
arm1.is_done()

Parameters

Beschrijving

Deze methode heeft geen parameters.

# 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 geeft aan of de 6-assige arm is vastgelopen tijdens het bewegen.

Wanneer een botsing wordt gedetecteerd, stopt de 6-assige arm met de motorbeweging en kan deze slap lijken te hangen. Dit vermindert de belasting en helpt de motoren te beschermen tegen onbedoelde schade.

  • True — De 6-assige arm is vastgelopen.

  • False — De 6-assige arm is niet gecrasht.

Usage:
arm1.is_crashed()

Parameters

Beschrijving

Deze methode heeft geen parameters.

# 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 retourneert de huidige x-positie van de eindeffector in millimeters.

Gebruik deze methode om de huidige positie van de eindeffector langs de x-as af te lezen.

Usage:
arm1.get_x()

Parameters

Beschrijving

Deze methode heeft geen parameters.

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

get_y#

get_y retourneert de huidige y-positie van de eindeffector in millimeters.

Gebruik deze methode om de huidige positie van de eindeffector langs de y-as af te lezen.

Usage:
arm1.get_y()

Parameters

Beschrijving

Deze methode heeft geen parameters.

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

get_z#

get_z retourneert de huidige z-positie van de eindeffector in millimeters.

Gebruik deze methode om de huidige positie van de eindeffector langs de z-as af te lezen.

Usage:
arm1.get_z()

Parameters

Beschrijving

Deze methode heeft geen parameters.

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

get_pitch#

get_pitch retourneert de huidige pitch van de eindeffector in graden.

Usage:
arm1.get_pitch()

Parameters

Beschrijving

Deze methode heeft geen parameters.

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

get_roll#

get_roll retourneert de huidige rolhoek van de eindeffector in graden.

Usage:
arm1.get_roll()

Parameters

Beschrijving

Deze methode heeft geen parameters.

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

get_yaw#

get_yaw retourneert de huidige yaw van de eindeffector in graden.

Usage:
arm1.get_yaw()

Parameters

Beschrijving

Deze methode heeft geen parameters.

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

can_arm_reach_to#

can_arm_reach_to geeft aan of de 6-assige arm de eindeffector naar een opgegeven x-, y- en z-coördinaat kan verplaatsen.

Gebruik deze methode om een ​​doelpositie te controleren voordat je move_to gebruikt.

  • True — De 6-assige arm kan de gevraagde positie bereiken.

  • False — De 6-assige arm kan de gevraagde positie niet bereiken.

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

Parameter

Beschrijving

x

De x-coördinaat van de doelpositie in millimeters.

y

De y-coördinaat van de doelpositie in millimeters.

z

De z-coördinaat van de doelpositie in millimeters.

# 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 geeft aan of de 6-assige arm de eindeffector over een opgegeven x-, y- en z-afstand vanaf zijn huidige positie kan verplaatsen.

Gebruik deze methode om een ​​relatieve beweging te controleren voordat je move_inc gebruikt.

  • True — De 6-assige arm kan de gevraagde beweging uitvoeren.

  • False — De 6-assige arm kan de gevraagde beweging niet uitvoeren.

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

Parameter

Beschrijving

x

De afstand die langs de x-as moet worden afgelegd in millimeters.

y

De afstand die langs de y-as moet worden afgelegd, in millimeters.

z

De afstand die langs de z-as moet worden afgelegd, in millimeters.

# 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 geeft aan of de eindeffector kan roteren naar een gespecificeerde gier-, rol- en stamprichting.

Gebruik deze methode om de oriëntatie van een doel te controleren voordat u move_end_effector_to gebruikt.

  • True — De eindeffector kan de gevraagde oriëntatie bereiken.

  • False — De eindeffector kan de gevraagde oriëntatie niet bereiken.

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

Parameter

Beschrijving

yaw

De gewenste gierhoek, in graden.

roll

De gewenste rolhoek, in graden.

pitch

De gewenste hellingshoek, in graden.

# 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 geeft aan of de eindeffector kan roteren met een gespecificeerde hoeveelheid gier-, rol- en stamphoek ten opzichte van zijn huidige oriëntatie.

Gebruik deze methode om een ​​relatieve oriëntatiebeweging te controleren voordat u move_end_effector_inc gebruikt.

  • True — De eindeffector kan de gevraagde rotatie uitvoeren.

  • False — De eindeffector kan de gevraagde rotatie niet uitvoeren.

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

Parameter

Beschrijving

yaw

De verandering in gierhoek, in graden.

roll

De verandering in de hellingshoek, in graden.

pitch

De toonhoogteverandering, in graden.

# 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 retourneert de time-outwaarde die wordt gebruikt door de bewegingsmethoden van de 6-assige arm in milliseconden.

Usage:
arm1.get_timeout()

Parameters

Beschrijving

Deze methode heeft geen parameters.

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

is_connected#

is_connected geeft aan of de 6-assige arm is verbonden met de EXP Brain.

  • True — De 6-assige arm is verbonden met het EXP-brein.

  • False — De 6-assige arm is niet verbonden met het EXP-brein.

Usage:
arm1.is_connected()

Parameters

Beschrijving

Deze methode heeft geen parameters.

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

Terugbelverzoeken#

control_stopped#

control_stopped registreert een functie die wordt uitgevoerd wanneer control stop is ingeschakeld.

Deze methode retourneert een instantie van de klasse Event.

Usage:
arm1.control_stopped(callback, arg)

Parameter

Beschrijving

callback

Een eerder gedefinieerde functie die wordt uitgevoerd wanneer de controlestop is ingeschakeld.

arg

Optioneel. Een tuple met argumenten die aan de callbackfunctie moeten worden doorgegeven. Zie Functies gebruiken met parameters voor meer informatie.

# 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 registreert een functie die wordt uitgevoerd wanneer de 6-assige arm tijdens het bewegen is vastgelopen.

Wanneer een botsing wordt gedetecteerd, stopt de 6-assige arm met de motorbeweging en kan deze slap lijken te hangen. Dit vermindert de belasting en helpt de motoren te beschermen tegen onbedoelde schade.

Usage:
arm1.crashed(callback)

Parameter

Beschrijving

callback

Een eerder gedefinieerde functie die wordt uitgevoerd wanneer een crash wordt gedetecteerd.

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

Constructeurs#

Arm#

Arm creëert een 6-assig armobject.

Usage:
Arm(smartport)

Parameter

Beschrijving

smartport

De Smart Port waarop de 6-assige arm is aangesloten, wordt weergegeven als Ports.PORTx, waarbij x het poortnummer is.

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