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 |
|---|---|
|
De x-coördinaat van de doelpositie in millimeters. |
|
De y-coördinaat van de doelpositie in millimeters. |
|
De z-coördinaat van de doelpositie in millimeters. |
|
Optioneel. |
# 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 |
|---|---|
|
De afstand die langs de x-as moet worden afgelegd in millimeters. |
|
De afstand die langs de y-as moet worden afgelegd, in millimeters. |
|
De afstand die langs de z-as moet worden afgelegd, in millimeters. |
|
Optioneel. |
# 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 |
|---|---|
|
De gewenste gierhoek, in graden. |
|
De gewenste rolhoek, in graden. |
|
De gewenste hellingshoek, in graden. |
|
Optioneel. |
# 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 |
|---|---|
|
De verandering in gierhoek, in graden. |
|
De verandering in de hellingshoek, in graden. |
|
De toonhoogteverandering, in graden. |
|
Optioneel. |
# 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 |
|---|---|
|
De bewegingssnelheid van de 6-assige arm, van |
# 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 |
|---|---|
|
Het gereedschap dat aan de 6-assige arm is bevestigd: |
# 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 |
|---|---|
|
De magnetische grijper heeft de volgende statussen: |
# 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 |
|---|---|
|
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 |
|---|---|
|
Optioneel. |
# 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 |
|---|---|
|
De nieuwe time-outwaarde. |
|
Optioneel. De tijdseenheid: |
# 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 |
|---|---|
|
De x-coördinaat van de doelpositie in millimeters. |
|
De y-coördinaat van de doelpositie in millimeters. |
|
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 |
|---|---|
|
De afstand die langs de x-as moet worden afgelegd in millimeters. |
|
De afstand die langs de y-as moet worden afgelegd, in millimeters. |
|
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 |
|---|---|
|
De gewenste gierhoek, in graden. |
|
De gewenste rolhoek, in graden. |
|
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 |
|---|---|
|
De verandering in gierhoek, in graden. |
|
De verandering in de hellingshoek, in graden. |
|
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 |
|---|---|
|
Een eerder gedefinieerde functie die wordt uitgevoerd wanneer de controlestop is ingeschakeld. |
|
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 |
|---|---|
|
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 |
|---|---|
|
De Smart Port waarop de 6-assige arm is aangesloten, wordt weergegeven als |
# Construct a 6-Axis Arm named arm1 with the Arm class
arm1 = Arm(Ports.PORT1)