6-akselinen varsi#
Johdanto#
VEX 6-akselinen robottikäsivarsi on CTE-työsolussa käytettävä robottimanipulaattori. VEXcode EXP:ssä Arm-metodit mahdollistavat EXP Brainin liikuttaa 6-akselista käsivartta, kiertää sen efektoria, tarkistaa, ovatko liikkeet mahdollisia, ja ohjata kiinnitettyjä työkaluja, kuten magneetinpoimintatyökalua tai kynänpidiketyökalua.
Tämä sivu on tarkoitettu CTE Workcell -projekteille, joissa 6-akselinen varsi on kytketty EXP Brainiin. Jos käytät 6-akselista vartta yksinään CTE-laatan kanssa, käytä sen sijaan CTE Arm API -sivua.
Tämän sivun esimerkeissä käytetään konfiguroitua 6-akselista vartta nimeltä arm1.
Alla on luettelo kaikista käytettävissä olevista menetelmistä:
Toiminnot — Siirrä 6-akselista vartta asentoihin tai suuntiin.
move_to— Siirtää päätelaitteen määritettyyn x-, y- ja z-koordinaattiin.move_inc— Siirtää päätelaitetta määritetyn etäisyyden sen nykyisestä sijainnista.move_end_effector_to— Kiertää efektoripäätä määritettyyn kääntö-, rulla- ja kallistuskulmaan.move_end_effector_inc— Kiertää efektoripäätä määritetyn kääntö-, kallistus- ja kallistuskulman verran.
Mutaattorit — Määritä liike-, työkalu- ja ohjausasetuksia.
set_speed— Asettaa 6-akselisen varren käyttämän liikenopeuden.set_end_effector_type— Asettaa 6-akseliseen varteen kiinnitetyn efektoripään tyypin.set_end_effector_magnet— Kytkee tai vapauttaa magneetin nostotyökalun.set_pen_offset— Asettaa kynänpidiketyökalun kanssa käytettävän z-akselin siirtymän.set_control_stop— Ottaa käyttöön 6-akselisen varren ohjauksen pysäytyksen.set_timeout— Asettaa 6-akselisen varren liikemenetelmien käyttämän aikakatkaisun.
Getterit — Palauttavat liiketilan, sijainnin, suunnan ja yhteysarvot.
is_done— Palauttaa, onko 6-akselinen varsi liikkunut loppuun.is_crashed— Palauttaa, onko 6-akselinen varsi kaatunut liikkuessaan.get_x— Palauttaa pääteefektorin nykyisen x-sijainnin.get_y— Palauttaa pääteefektorin nykyisen y-sijainnin.get_z— Palauttaa pääteefektorin nykyisen z-sijainnin.get_pitch— Palauttaa pääteefektorin nykyisen äänenkorkeuden.get_roll— Palauttaa pääteefektorin nykyisen rullan.get_yaw— Palauttaa pääteefektorin nykyisen suunnanmuutoksen.can_arm_reach_to— Palauttaa, voiko 6-akselinen varsi saavuttaa tietyn asennon.can_arm_reach_inc— Palauttaa, voiko 6-akselinen varsi liikkua määritetyn matkan.can_end_effector_reach_to— Palauttaa, voiko pääteefektori saavuttaa määritetyn suunnan.can_end_effector_reach_inc— Palauttaa, voiko pääteefektori kiertyä määritetyn määrän.get_timeout— Palauttaa liikemetodien käyttämän nykyisen aikakatkaisuarvon.is_connected— Palauttaa, onko 6-akselinen varsi kytketty EXP Brainiin.
Takaisinkutsutoiminnot — Suorita funktioita, kun aktivointi tapahtuu.
control_stopped— Rekisteröi funktion suoritettavaksi, kun control stop on käytössä.crashed— Rekisteröi funktion suoritettavaksi, kun kaatuminen havaitaan.
Konstruktori — Luo manuaalisesti 6-akselinen varsi -objekti.
Arm— Luo 6-akselisen varsiobjektin.
Toiminnot#
move_to#
move_to siirtää 6-akselisen varren määritettyyn x-, y- ja z-koordinaattiin.
X-, y- ja z-koordinaatit kuvaavat päätyefektorin sijaintia kolmiulotteisessa avaruudessa. Käytä can_arm_reach_to ennen tätä menetelmää, jos kohdesijainti voi olla 6-akselisen varren saavutettavan työtilan ulkopuolella.
Usage:
arm1.move_to(x, y, z, wait)
Parametri |
Kuvaus |
|---|---|
|
Kohdepaikan x-koordinaatti millimetreinä. |
|
Kohdepaikan y-koordinaatti millimetreinä. |
|
Kohdepaikan z-koordinaatti millimetreinä. |
|
Valinnainen. |
# 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 siirtää 6-akselista vartta määritetyn etäisyyden sen nykyisestä sijainnista x-, y- ja z-akseleiden suuntaisesti.
Käytä tätä menetelmää liikkuaksesi suhteessa pääteefektorin nykyiseen sijaintiin. Käytä can_arm_reach_inc ennen tätä menetelmää, jos liike voi siirtää 6-akselisen varren sen ulottumattomiin työtilaan.
Usage:
arm1.move_inc(x, y, z, wait)
Parametri |
Kuvaus |
|---|---|
|
X-akselin suuntainen liikematka millimetreinä. |
|
Y-akselin suuntainen liikkumamatka millimetreinä. |
|
Z-akselin suuntainen liikematka millimetreinä. |
|
Valinnainen. |
# 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 kiertää 6-akselisen varren pääteefektoria määritettyyn kääntö-, rulla- ja kallistuskulmaan.
Orientaatio kuvaa, miten efektoripäätä kierretään. yaw pyörii z-akselin ympäri, roll pyörii x-akselin ympäri ja pitch pyörii y-akselin ympäri.
Usage:
arm1.move_end_effector_to(yaw, roll, pitch, wait)
Parametri |
Kuvaus |
|---|---|
|
Kohdesuuntainen kallistuskulma asteina. |
|
Kohdekallistuskulma asteina. |
|
Kohteen kallistuskulma asteina. |
|
Valinnainen. |
# 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 kiertää 6-akselisen varren pääteefektoria määritetyn kääntö-, kallistus- ja kallistuskulman verran sen nykyisestä suunnasta.
Käytä tätä menetelmää kiertääksesi pääteefektorin nykyisen kääntö-, rulla- tai kallistuskulman suhteen.
Usage:
arm1.move_end_effector_inc(yaw, roll, pitch, wait)
Parametri |
Kuvaus |
|---|---|
|
Kallistuksen muutos asteina. |
|
Kallistuksen muutos asteina. |
|
Sävelkorkeuden muutos asteina. |
|
Valinnainen. |
# Rotate the end effector -50 degrees in pitch
arm1.move_end_effector_inc(0, 0, -50)
Mutaattorit#
set_speed#
set_speed asettaa 6-akselisen varren käyttämän liikenopeuden liikemetodeissa.
6-akselisen varren nopeus asetetaan projektin alussa 50 %:iin.
Usage:
arm1.set_speed(speed)
Parametri |
Kuvaus |
|---|---|
|
6-akselisen varren liikenopeus välillä |
# Set the 6-Axis Arm speed to 30%
arm1.set_speed(30)
set_end_effector_type#
set_end_effector_type asettaa 6-akseliseen varteen kiinnitetyn efektoripään tyypin.
Kun efektorityyppiä muutetaan, 6-akselinen varsi säätää automaattisesti z-siirtymänsä vastaamaan valittua työkalua. Efektorityypiksi asetetaan projektin alussa MAGNET.
Usage:
arm1.set_end_effector_type(type)
Parametri |
Kuvaus |
|---|---|
|
6-akseliseen varteen kiinnitetty työkalu: |
# Set the end effector type to the Pen Holder Tool
arm1.set_end_effector_type(PEN)
set_end_effector_magnet#
set_end_effector_magnet kytkee tai vapauttaa magneetin nostotyökalun.
Magneetin tila pysyy aktiivisena, kunnes toinen set_end_effector_magnet -metodi muuttaa sitä. Magneetin tila palautetaan arvoon False projektin alussa.
Usage:
arm1.set_end_effector_magnet(state)
Parametri |
Kuvaus |
|---|---|
|
Magneetinpoimintatyökalun tila: |
# 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 asettaa z-akselin siirtymän, jota käytetään, kun kynänpidiketyökalu on kiinnitetty 6-akseliseen varteen.
Aseta pääteefektorin tyypiksi PEN ennen tämän menetelmän käyttöä. Jos kynänpidiketyökalua ei ole valittu, tällä menetelmällä ei ole vaikutusta.
Kynän siirtymä on etäisyys kynänpidiketyökalun yläreunasta kuivapoistotussin kärkeen. Projektin alussa kynän siirtymäksi asetetaan 0Kynän siirtymä 0 sijoittaa varren z-akselin nollapisteen pisteeseen, jossa kynänpidiketyökalu yhdistyy 6-akseliseen varteen.
Usage:
arm1.set_pen_offset(zOffset)
Parametri |
Kuvaus |
|---|---|
|
Kynän siirtymän arvo millimetreinä. |
# 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 ottaa käyttöön 6-akselisen varren ohjauksen pysäytyksen.
Kun ohjauksen pysäytys on käytössä, 6-akselinen varsi pysäyttää välittömästi kaikki liikkeet eikä suorita muita varren liikemenetelmiä ennen kuin projekti käynnistetään uudelleen.
Usage:
arm1.set_control_stop(state)
Parametri |
Kuvaus |
|---|---|
|
Valinnainen. |
# Stop the 6-Axis Arm and prevent further movement
arm1.set_control_stop()
set_timeout#
set_timeout asettaa aikakatkaisuarvon, jota käytetään 6-akselista vartta liikutettaessa.
Jos liike ei pääty ennen aikarajan saavuttamista, projekti jatkaa seuraavalle koodiriville.
Usage:
arm1.set_timeout(timeout, units)
Parametri |
Kuvaus |
|---|---|
|
Uusi aikakatkaisuarvo. |
|
Valinnainen. Aikayksikkö: |
# Set the 6-Axis Arm timeout to 2 seconds
arm1.set_timeout(2, SECONDS)
Getterit#
is_done#
is_done palauttaa, onko 6-akselinen varsi liikkunut loppuun.
Tästä metodista on hyötyä sen jälkeen, kun liikemetodia kutsutaan arvolla wait=False.
True— 6-akselinen varsi on liikkunut loppuun.False— 6-akselinen varsi liikkuu edelleen.
Usage:
arm1.is_done()
Parametrit |
Kuvaus |
|---|---|
Tällä menetelmällä ei ole parametreja. |
# 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 palauttaa, onko 6-akselinen varsi kaatunut liikkuessaan.
Kun törmäys havaitaan, 6-akselinen varsi pysäyttää moottorin liikkeen ja saattaa näyttää veltolta. Tämä vähentää rasitusta ja auttaa suojaamaan moottoreita vahingossa tapahtuvilta vaurioilta.
True— 6-akselinen varsi on kaatunut.False— 6-akselinen varsi ei ole kaatunut.
Usage:
arm1.is_crashed()
Parametrit |
Kuvaus |
|---|---|
Tällä menetelmällä ei ole parametreja. |
# 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 palauttaa pääteefektorin nykyisen x-sijainnin millimetreinä.
Käytä tätä menetelmää lukeaksesi pääteefektorin nykyisen sijainnin x-akselilla.
Usage:
arm1.get_x()
Parametrit |
Kuvaus |
|---|---|
Tällä menetelmällä ei ole parametreja. |
# Print the current x position of the 6-Axis Arm
brain.screen.print(arm1.get_x())
get_y#
get_y palauttaa pääteefektorin nykyisen y-sijainnin millimetreinä.
Käytä tätä menetelmää lukeaksesi pääteefektorin nykyisen sijainnin y-akselilla.
Usage:
arm1.get_y()
Parametrit |
Kuvaus |
|---|---|
Tällä menetelmällä ei ole parametreja. |
# Print the current y position of the 6-Axis Arm
brain.screen.print(arm1.get_y())
get_z#
get_z palauttaa pääteefektorin nykyisen z-sijainnin millimetreinä.
Käytä tätä menetelmää lukeaksesi pääteefektorin nykyisen sijainnin z-akselilla.
Usage:
arm1.get_z()
Parametrit |
Kuvaus |
|---|---|
Tällä menetelmällä ei ole parametreja. |
# Print the current z position of the 6-Axis Arm
brain.screen.print(arm1.get_z())
get_pitch#
get_pitch palauttaa pääteefektorin nykyisen nousun asteina.
Usage:
arm1.get_pitch()
Parametrit |
Kuvaus |
|---|---|
Tällä menetelmällä ei ole parametreja. |
# Print the current pitch of the end effector
brain.screen.print(arm1.get_pitch())
get_roll#
get_roll palauttaa pääteefektorin nykyisen vierityksen asteina.
Usage:
arm1.get_roll()
Parametrit |
Kuvaus |
|---|---|
Tällä menetelmällä ei ole parametreja. |
# Print the current roll of the end effector
brain.screen.print(arm1.get_roll())
get_yaw#
get_yaw palauttaa pääteefektorin nykyisen kallistuskulman asteina.
Usage:
arm1.get_yaw()
Parametrit |
Kuvaus |
|---|---|
Tällä menetelmällä ei ole parametreja. |
# Print the current yaw of the end effector
brain.screen.print(arm1.get_yaw())
can_arm_reach_to#
can_arm_reach_to palauttaa, voiko 6-akselinen varsi siirtää efektoria määritettyyn x-, y- ja z-koordinaattiin.
Käytä tätä menetelmää kohdesijainnin tarkistamiseen ennen move_to-metodin käyttöä.
True— 6-akselinen varsi voi saavuttaa pyydetyn asennon.False— 6-akselinen varsi ei saavuta pyydettyä asentoa.
Usage:
arm1.can_arm_reach_to(x, y, z)
Parametri |
Kuvaus |
|---|---|
|
Kohdepaikan x-koordinaatti millimetreinä. |
|
Kohdepaikan y-koordinaatti millimetreinä. |
|
Kohdepaikan z-koordinaatti millimetreinä. |
# 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 palauttaa, voiko 6-akselinen varsi siirtää efektoria määritetyn x-, y- ja z-etäisyyden sen nykyisestä sijainnista.
Käytä tätä menetelmää suhteellisen liikkeen tarkistamiseen ennen move_inc-metodin käyttöä.
True— 6-akselinen varsi voi suorittaa pyydetyn liikkeen.False— 6-akselinen varsi ei pysty suorittamaan pyydettyä liikettä.
Usage:
arm1.can_arm_reach_inc(x, y, z)
Parametri |
Kuvaus |
|---|---|
|
X-akselin suuntainen liikematka millimetreinä. |
|
Y-akselin suuntainen liikkumamatka millimetreinä. |
|
Z-akselin suuntainen liikematka millimetreinä. |
# 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 palauttaa, voiko pääteefektori kiertyä määritettyyn suuntaus-, rullaus- ja kallistussuuntaan.
Käytä tätä menetelmää kohteen suunnan tarkistamiseen ennen move_end_effector_to-metodin käyttöä.
True— Pääteefektori voi saavuttaa pyydetyn suunnan.False— Pääteefektori ei pysty saavuttamaan pyydettyä suuntaa.
Usage:
arm1.can_end_effector_reach_to(yaw, roll, pitch)
Parametri |
Kuvaus |
|---|---|
|
Kohdesuuntainen kallistuskulma asteina. |
|
Kohdekallistuskulma asteina. |
|
Kohteen kallistuskulma asteina. |
# 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 palauttaa, voiko pääteefektori kiertyä määritetyn suuntaus-, kallistus- ja kallistuskulman verran nykyisestä suunnastaan.
Käytä tätä menetelmää suhteellisen suunnan liikkeen tarkistamiseen ennen move_end_effector_inc-menetelmän käyttöä.
True— Päätelaite voi tehdä pyydetyn kierron.False— Päätelaite ei voi tehdä pyydettyä kiertoa.
Usage:
arm1.can_end_effector_reach_inc(yaw, roll, pitch)
Parametri |
Kuvaus |
|---|---|
|
Kallistuksen muutos asteina. |
|
Kallistuksen muutos asteina. |
|
Sävelkorkeuden muutos asteina. |
# 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 palauttaa 6-akselisen varren liikemetodien käyttämän aikakatkaisuarvon millisekunteina.
Usage:
arm1.get_timeout()
Parametrit |
Kuvaus |
|---|---|
Tällä menetelmällä ei ole parametreja. |
# Print the current movement timeout in milliseconds
brain.screen.print(arm1.get_timeout())
is_connected#
is_connected palauttaa, onko 6-akselinen varsi kytketty EXP Brainiin.
True— 6-akselinen varsi on kytketty EXP-aivoihin.False— 6-akselinen varsi ei ole kytketty EXP-aivoihin.
Usage:
arm1.is_connected()
Parametrit |
Kuvaus |
|---|---|
Tällä menetelmällä ei ole parametreja. |
# Print whether the 6-Axis Arm is connected
brain.screen.print(arm1.is_connected())
Takaisinkutsut#
control_stopped#
control_stopped rekisteröi funktion, joka suoritetaan, kun control stop on käytössä.
Tämä metodi palauttaa Event -luokan instanssin.
Usage:
arm1.control_stopped(callback, arg)
Parametri |
Kuvaus |
|---|---|
|
Aiemmin määritelty function, joka suoritetaan, kun ohjauspysäytys on käytössä. |
|
Valinnainen. Tuple, joka sisältää argumentteja, jotka välitetään takaisinkutsufunktiolle. Lisätietoja on kohdassa Funktioiden käyttö parametrien kanssa. |
# 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 rekisteröi funktion, joka suoritetaan, kun 6-akselinen varsi on kaatunut liikkuessaan.
Kun törmäys havaitaan, 6-akselinen varsi pysäyttää moottorin liikkeen ja saattaa näyttää veltolta. Tämä vähentää rasitusta ja auttaa suojaamaan moottoreita vahingossa tapahtuvilta vaurioilta.
Usage:
arm1.crashed(callback)
Parametri |
Kuvaus |
|---|---|
|
Aiemmin määritelty function, joka suoritetaan, kun havaitaan kaatuminen. |
# 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)
Rakentajat#
Arm#
Arm luo 6-akselisen varsiobjektin.
Usage:
Arm(smartport)
Parametri |
Kuvaus |
|---|---|
|
Älyportti, johon 6-akselinen varsi on kytketty, kirjoitetaan muodossa |
# Construct a 6-Axis Arm named arm1 with the Arm class
arm1 = Arm(Ports.PORT1)