Ramię 6-osiowe#
Wstęp#
Ramię robota VEX 6-osiowe może poruszać efektorem końcowym w przestrzeni trójwymiarowej, kontrolować jego orientację za pomocą obrotów w odchyleniu, przechyle i pochyleniu oraz korzystać z dołączonych narzędzi, takich jak narzędzie do pobierania magnesów lub narzędzie do trzymania długopisu.
Ramię 6-osiowe nie jest skonfigurowane jako urządzenie w VEXcode V5. Aby użyć go w projekcie Python VEX V5, należy ręcznie utworzyć obiekt Arm w kodzie z portem Smart Port, do którego podłączone jest ramię 6-osiowe.
Przykłady na tej stronie wykorzystują ręcznie skonstruowane ramię 6-osiowe o nazwie arm1.
Poniżej znajduje się lista wszystkich dostępnych metod:
Działania — przesuwanie ramienia 6-osiowego do różnych pozycji lub orientacji.
move_to— Przesuwa efektor końcowy do określonej współrzędnej x, y i z.move_inc— Przesuwa efektor końcowy o określoną odległość od jego bieżącej pozycji.move_end_effector_to— Obraca efektor końcowy o określony kąt odchylenia, przechyłu i pochylenia.move_end_effector_inc— Obraca efektor końcowy o określoną wartość odchylenia, przechyłu i pochylenia.
Mutatory — konfiguracja ustawień ruchu, narzędzi i sterowania.
set_speed— Ustawia prędkość ruchu używaną przez ramię 6-osiowe.set_end_effector_type— Ustawia typ efektora końcowego przymocowanego do ramienia 6-osiowego.set_end_effector_magnet— Włącza lub zwalnia narzędzie do podnoszenia magnesów.set_pen_offset— Ustawia przesunięcie osi Z używane z narzędziem uchwytu pióra.set_control_stop— Włącza zatrzymanie sterowania ramieniem 6-osiowym.set_timeout— Ustawia limit czasu używany przez metody ruchu ramienia 6-osiowego.
Gettery — zwracają wartości stanu ruchu, pozycji, orientacji i połączenia.
is_done— Zwraca informację, czy ramię 6-osiowe zakończyło ruch.is_crashed— Zwraca informację, czy ramię 6-osiowe uległo awarii podczas ruchu.get_x— Zwraca aktualną pozycję x efektora końcowego.get_y— Zwraca aktualną pozycję y efektora końcowego.get_z— Zwraca aktualną pozycję z efektora końcowego.get_pitch— Zwraca aktualny skok efektora końcowego.get_roll— Zwraca aktualny obrót efektora końcowego.get_yaw— Zwraca aktualne odchylenie efektora końcowego.can_arm_reach_to— Zwraca informację, czy ramię 6-osiowe może osiągnąć określoną pozycję.can_arm_reach_inc— Zwraca informację, czy ramię 6-osiowe może się poruszać o określoną odległość.can_end_effector_reach_to— Zwraca informację, czy efektor końcowy może osiągnąć określoną orientację.can_end_effector_reach_inc— Zwraca informację, czy efektor końcowy może obracać się o określoną wartość.get_timeout— Zwraca aktualną wartość limitu czasu używaną przez metody ruchu.is_connected— Zwraca informację, czy ramię 6-osiowe jest połączone z mózgiem V5.
Wywołania zwrotne — uruchamiają funkcje, gdy wystąpią zdarzenia arm.
control_stopped— Rejestruje funkcję, która ma zostać uruchomiona po włączeniu zatrzymania sterowania.crashed— Rejestruje funkcję, która ma zostać uruchomiona po wykryciu awarii.
Konstruktor — ręczne tworzenie obiektu ramienia 6-osiowego.
Arm— Tworzy obiekt ramienia 6-osiowego.
Akcje#
move_to#
move_to przesuwa ramię 6-osiowe do określonej współrzędnej x, y i z.
Współrzędne x, y i z opisują położenie efektora końcowego w przestrzeni trójwymiarowej. Przed tą metodą należy użyć can_arm_reach_to, jeśli położenie docelowe może znajdować się poza dostępnym obszarem roboczym ramienia 6-osiowego.
Usage:
arm1.move_to(x, y, z, wait)
Parametr |
Opis |
|---|---|
|
Współrzędna x pozycji docelowej w milimetrach. |
|
Współrzędna y pozycji docelowej w milimetrach. |
|
Współrzędna z pozycji docelowej w milimetrach. |
|
Opcjonalnie. |
# 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 przesuwa ramię 6-osiowe o określoną odległość od jego bieżącej pozycji wzdłuż osi x, y i z.
Użyj tej metody, aby przesunąć się względem miejsca, w którym obecnie znajduje się efektor końcowy. Użyj can_arm_reach_inc przed tą metodą, jeśli ruch może umieścić ramię 6-osiowe poza jego dostępnym obszarem roboczym.
Usage:
arm1.move_inc(x, y, z, wait)
Parametr |
Opis |
|---|---|
|
Odległość, jaką należy pokonać wzdłuż osi x, podana w milimetrach. |
|
Odległość, jaką należy pokonać wzdłuż osi Y, podana w milimetrach. |
|
Odległość, jaką należy pokonać wzdłuż osi Z, podana w milimetrach. |
|
Opcjonalnie. |
# 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 obraca efektor końcowy ramienia 6-osiowego o określony kąt odchylenia, przechyłu i pochylenia.
Orientacja opisuje sposób obracania efektora końcowego. yaw oznacza obrót wokół osi z, roll oznacza obrót wokół osi x, a pitch.
Usage:
arm1.move_end_effector_to(yaw, roll, pitch, wait)
Parametr |
Opis |
|---|---|
|
Docelowy kąt odchylenia w stopniach. |
|
Docelowy kąt przechyłu w stopniach. |
|
Docelowy kąt nachylenia w stopniach. |
|
Opcjonalnie. |
# 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 obraca efektor końcowy ramienia 6-osiowego o określoną wartość odchylenia, przechyłu i pochylenia od jego bieżącej orientacji.
Użyj tej metody, aby wykonać obrót względem aktualnego odchylenia, pochylenia lub pochylenia efektora końcowego.
Usage:
arm1.move_end_effector_inc(yaw, roll, pitch, wait)
Parametr |
Opis |
|---|---|
|
Zmiana odchylenia w stopniach. |
|
Zmiana kąta nachylenia w stopniach. |
|
Zmiana wysokości dźwięku w stopniach. |
|
Opcjonalnie. |
# Rotate the end effector -50 degrees in pitch
arm1.move_end_effector_inc(0, 0, -50)
Mutatory#
set_speed#
set_speed ustawia prędkość ruchu używaną przez ramię 6-osiowe dla metod ruchu.
Prędkość ramienia 6-osiowego jest ustawiona na początku projektu na 50%.
Usage:
arm1.set_speed(speed)
Parametr |
Opis |
|---|---|
|
Prędkość ruchu ramienia 6-osiowego od |
# Set the 6-Axis Arm speed to 30%
arm1.set_speed(30)
set_end_effector_type#
set_end_effector_type ustawia typ efektora końcowego przymocowanego do ramienia 6-osiowego.
Po zmianie typu efektora końcowego, ramię 6-osiowe automatycznie dostosowuje swoje przesunięcie osi Z do wybranego narzędzia. Na początku projektu typ efektora końcowego jest ustawiony na MAGNET.
Usage:
arm1.set_end_effector_type(type)
Parametr |
Opis |
|---|---|
|
Narzędzie przymocowane do ramienia 6-osiowego: |
# Set the end effector type to the Pen Holder Tool
arm1.set_end_effector_type(PEN)
set_end_effector_magnet#
set_end_effector_magnet włącza lub wyłącza narzędzie do podnoszenia magnesów.
Stan magnesu pozostaje aktywny, dopóki nie zmieni go inna metoda set_end_effector_magnet Stan magnesu jest resetowany do False na początku projektu.
Usage:
arm1.set_end_effector_magnet(state)
Parametr |
Opis |
|---|---|
|
Stan narzędzia magnetycznego: |
# 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 ustawia przesunięcie osi Z używane, gdy uchwyt na pióro jest przymocowany do ramienia 6-osiowego.
Przed użyciem tej metody ustaw typ efektora końcowego na PEN Jeśli narzędzie uchwytu na długopis nie jest wybrane, ta metoda nie będzie działać.
Przesunięcie pióra to odległość od górnej krawędzi uchwytu pióra do końcówki markera suchościeralnego. Na początku projektu przesunięcie pióra jest ustawione na 0Przesunięcie pióra o wartości 0 umieszcza początek osi Z ramienia w punkcie, w którym uchwyt pióra łączy się z ramieniem 6-osiowym.
Usage:
arm1.set_pen_offset(zOffset)
Parametr |
Opis |
|---|---|
|
Wartość przesunięcia pióra w milimetrach. |
# 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 włącza zatrzymanie sterowania ramieniem 6-osiowym.
Po włączeniu funkcji zatrzymania sterowania ramię 6-osiowe natychmiast zatrzymuje każdy ruch i nie uruchamia żadnych dalszych metod ruchu ramienia do momentu ponownego uruchomienia projektu.
Usage:
arm1.set_control_stop(state)
Parametr |
Opis |
|---|---|
|
Opcjonalnie. |
# Stop the 6-Axis Arm and prevent further movement
arm1.set_control_stop()
set_timeout#
set_timeout ustawia wartość limitu czasu używaną podczas przesuwania ramienia 6-osiowego.
Jeśli ruch nie zakończy się przed upływem limitu czasu, projekt przechodzi do następnego wiersza kodu.
Usage:
arm1.set_timeout(timeout, units)
Parametr |
Opis |
|---|---|
|
Nowa wartość limitu czasu. |
|
Opcjonalnie. Jednostka czasu: |
# Set the 6-Axis Arm timeout to 2 seconds
arm1.set_timeout(2, SECONDS)
Getters#
is_done#
is_done zwraca informację o tym, czy ramię 6-osiowe zakończyło ruch.
Ta metoda jest użyteczna po wywołaniu metody ruchu z wait=False.
True— Ramię 6-osiowe zakończyło ruch.False— Ramię 6-osiowe nadal się porusza.
Usage:
arm1.is_done()
Parametry |
Opis |
|---|---|
Ta metoda nie ma żadnych parametrów. |
# 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 zwraca informację o tym, czy ramię 6-osiowe uległo awarii podczas ruchu.
W przypadku wykrycia zderzenia, ramię 6-osiowe zatrzymuje ruch silnika i może sprawiać wrażenie bezwładnego. Zmniejsza to obciążenie i pomaga chronić silniki przed przypadkowym uszkodzeniem.
True— Ramię 6-osiowe uległo awarii.False— Ramię 6-osiowe nie uległo awarii.
Usage:
arm1.is_crashed()
Parametry |
Opis |
|---|---|
Ta metoda nie ma żadnych parametrów. |
# 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 Brain screen
brain.screen.print("Crash Detected")
break
wait(5, MSEC)
get_x#
get_x zwraca aktualną pozycję x efektora końcowego w milimetrach.
Za pomocą tej metody można odczytać, gdzie aktualnie znajduje się efektor końcowy na osi x.
Usage:
arm1.get_x()
Parametry |
Opis |
|---|---|
Ta metoda nie ma żadnych parametrów. |
# Print the current x position of the 6-Axis Arm
brain.screen.print(arm1.get_x())
get_y#
get_y zwraca aktualną pozycję y efektora końcowego w milimetrach.
Za pomocą tej metody można odczytać aktualne położenie efektora końcowego na osi Y.
Usage:
arm1.get_y()
Parametry |
Opis |
|---|---|
Ta metoda nie ma żadnych parametrów. |
# Print the current y position of the 6-Axis Arm
brain.screen.print(arm1.get_y())
get_z#
get_z zwraca aktualną pozycję z efektora końcowego w milimetrach.
Za pomocą tej metody można odczytać, gdzie aktualnie znajduje się efektor końcowy wzdłuż osi Z.
Usage:
arm1.get_z()
Parametry |
Opis |
|---|---|
Ta metoda nie ma żadnych parametrów. |
# Print the current z position of the 6-Axis Arm
brain.screen.print(arm1.get_z())
get_pitch#
get_pitch zwraca aktualny skok efektora końcowego w stopniach.
Usage:
arm1.get_pitch()
Parametry |
Opis |
|---|---|
Ta metoda nie ma żadnych parametrów. |
# Print the current pitch of the end effector
brain.screen.print(arm1.get_pitch())
get_roll#
get_roll zwraca aktualny obrót efektora końcowego w stopniach.
Usage:
arm1.get_roll()
Parametry |
Opis |
|---|---|
Ta metoda nie ma żadnych parametrów. |
# Print the current roll of the end effector
brain.screen.print(arm1.get_roll())
get_yaw#
get_yaw zwraca aktualne odchylenie efektora końcowego w stopniach.
Usage:
arm1.get_yaw()
Parametry |
Opis |
|---|---|
Ta metoda nie ma żadnych parametrów. |
# Print the current yaw of the end effector
brain.screen.print(arm1.get_yaw())
can_arm_reach_to#
can_arm_reach_to zwraca informację, czy ramię 6-osiowe może przesunąć efektor końcowy do określonej współrzędnej x, y i z.
Użyj tej metody, aby sprawdzić pozycję docelową przed użyciem move_to.
True— Ramię 6-osiowe może osiągnąć żądaną pozycję.False— Ramię 6-osiowe nie może osiągnąć żądanej pozycji.
Usage:
arm1.can_arm_reach_to(x, y, z)
Parametr |
Opis |
|---|---|
|
Współrzędna x pozycji docelowej w milimetrach. |
|
Współrzędna y pozycji docelowej w milimetrach. |
|
Współrzędna z pozycji docelowej w milimetrach. |
# 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 zwraca informację, czy ramię 6-osiowe może przesunąć efektor końcowy o określoną odległość x, y i z od jego bieżącej pozycji.
Użyj tej metody, aby sprawdzić względny ruch przed użyciem move_inc.
True— Ramię 6-osiowe może wykonać żądany ruch.False— Ramię 6-osiowe nie może wykonać żądanego ruchu.
Usage:
arm1.can_arm_reach_inc(x, y, z)
Parametr |
Opis |
|---|---|
|
Odległość, jaką należy pokonać wzdłuż osi x, podana w milimetrach. |
|
Odległość, jaką należy pokonać wzdłuż osi Y, podana w milimetrach. |
|
Odległość, jaką należy pokonać wzdłuż osi Z, podana w milimetrach. |
# 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 zwraca informację, czy efektor końcowy może obracać się do określonego odchylenia, przechyłu i pochylenia.
Użyj tej metody, aby sprawdzić orientację celu przed użyciem move_end_effector_to.
True— Efektor końcowy może osiągnąć żądaną orientację.False— Efektor końcowy nie może osiągnąć żądanej orientacji.
Usage:
arm1.can_end_effector_reach_to(yaw, roll, pitch)
Parametr |
Opis |
|---|---|
|
Docelowy kąt odchylenia w stopniach. |
|
Docelowy kąt przechyłu w stopniach. |
|
Docelowy kąt nachylenia w stopniach. |
# 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 zwraca informację, czy efektor końcowy może obracać się o określoną wartość odchylenia, przechyłu i pochylenia od bieżącej orientacji.
Użyj tej metody, aby sprawdzić względny ruch orientacji przed użyciem move_end_effector_inc.
True— Efektor końcowy może wykonać żądany obrót.False— Efektor końcowy nie może wykonać żądanego obrotu.
Usage:
arm1.can_end_effector_reach_inc(yaw, roll, pitch)
Parametr |
Opis |
|---|---|
|
Zmiana odchylenia w stopniach. |
|
Zmiana kąta nachylenia w stopniach. |
|
Zmiana wysokości dźwięku w stopniach. |
# 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 zwraca wartość limitu czasu używaną przez metody ruchu ramienia 6-osiowego w milisekundach.
Usage:
arm1.get_timeout()
Parametry |
Opis |
|---|---|
Ta metoda nie ma żadnych parametrów. |
# Print the current movement timeout in milliseconds
brain.screen.print(arm1.get_timeout())
is_connected#
is_connected zwraca informację, czy ramię 6-osiowe jest połączone z mózgiem V5.
True— Ramię 6-osiowe jest połączone z mózgiem V5.False— Ramię 6-osiowe nie jest połączone z mózgiem V5.
Usage:
arm1.is_connected()
Parametry |
Opis |
|---|---|
Ta metoda nie ma żadnych parametrów. |
# Print whether the 6-Axis Arm is connected
brain.screen.print(arm1.is_connected())
Wywołania zwrotne#
control_stopped#
control_stopped rejestruje funkcję, która jest uruchamiana po włączeniu funkcji zatrzymania sterowania.
Ta metoda zwraca instancję klasy Event.
Usage:
arm1.control_stopped(callback, arg)
Parametr |
Opis |
|---|---|
|
Wcześniej zdefiniowana funkcja, która jest uruchamiana po włączeniu zatrzymania sterowania. |
|
Opcjonalnie. Krotka zawierająca argumenty do przekazania do funkcji wywołania zwrotnego. Więcej informacji można znaleźć w Używanie funkcji z parametrami. |
# 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 rejestruje funkcję uruchamianą, gdy ramię 6-osiowe ulegnie awarii podczas ruchu.
W przypadku wykrycia zderzenia, ramię 6-osiowe zatrzymuje ruch silnika i może sprawiać wrażenie bezwładnego. Zmniejsza to obciążenie i pomaga chronić silniki przed przypadkowym uszkodzeniem.
Usage:
arm1.crashed(callback)
Parametr |
Opis |
|---|---|
|
Wcześniej zdefiniowana funkcja, która jest uruchamiana po wykryciu awarii. |
# Define what happens if a crash is detected
def arm_crash():
brain.screen.print("Crash Detected")
# Run arm_crash when the 6-Axis Arm crashes
arm1.crashed(arm_crash)
Konstruktorzy#
Arm#
Arm tworzy obiekt 6-osiowego ramienia. 6-osiowe ramię musi zostać ręcznie skonstruowane w VEXcode V5, zanim będzie można go użyć w projekcie.
Usage:
Arm(smartport)
Parametr |
Opis |
|---|---|
|
Inteligentny port, do którego podłączony jest 6-osiowy uchwyt, zapisany jako |
# Construct a 6-Axis Arm named arm1 with the Arm class
arm1 = Arm(Ports.PORT1)