6-осьова рука#
Вступ#
VEX 6-осьова роботизована рука – це роботизований маніпулятор, що використовується в робочій комірці CTE. У VEXcode EXP методи роботи з рукою дозволяють мозковій роботі EXP рухати 6-осьову руку, обертати її кінцевий ефектор, перевіряти можливість рухів та керувати підключеними інструментами, такими як інструмент магнітного захоплення або інструмент тримача ручки.
Ця сторінка призначена для проектів CTE Workcell, де 6-осьовий маніпулятор підключений до EXP Brain. Якщо ви використовуєте 6-осьовий маніпулятор окремо з плиткою CTE, використовуйте замість цього сторінку CTE Arm API.
У прикладах на цій сторінці використовується налаштований 6-осьовий маніпулятор з назвою arm1.
Нижче наведено список усіх доступних методів:
Дії — Переміщення 6-осьового маніпулятора в потрібні положення або орієнтації.
move_to— Переміщує кінцевий ефектор до заданої координати x, y та z.move_inc— Переміщує кінцевий ефектор на задану відстань від його поточного положення.move_end_effector_to— Повертає кінцевий ефектор до заданої орієнтації по риску, крену та тангажу.move_end_effector_inc— Повертає кінцевий ефектор на задану величину рисьблення, крену та тангажу.
Мутатори — налаштуйте рух, інструменти та параметри керування.
set_speed— Встановлює швидкість руху, що використовується 6-осьовим маніпулятором.set_end_effector_type— Встановлює тип кінцевого ефектора, прикріпленого до 6-осьового важеля.set_end_effector_magnet— Вмикає або відпускає інструмент магнітного захоплення.set_pen_offset— Встановлює зміщення осі z, яке використовується з інструментом «Тримач пера».set_control_stop— Вмикає зупинку керування для 6-осьового маніпулятора.set_timeout— Встановлює час очікування, що використовується методами руху 6-осьової руки.
Геттери — Повертають значення статусу руху, позиції, орієнтації та з’єднання.
is_done— Повертає, чи завершив рух 6-осьовий маніпулятор.is_crashed— Повертає, чи стався збій 6-осьового маніпулятора під час руху.get_x— Повертає поточну позицію x кінцевого ефектора.get_y— Повертає поточну позицію кінцевого ефектора по осі Y.get_z— Повертає поточну позицію z кінцевого ефектора.get_pitch— Повертає поточний тон кінцевого ефектора.get_roll— Повертає поточний кидок кінцевого ефектора.get_yaw— Повертає поточне значення нишпорення кінцевого ефектора.can_arm_reach_to— Повертає, чи може 6-осьова рука досягти заданого положення.can_arm_reach_inc— Повертає, чи може 6-осьова рука рухатися на задану відстань.can_end_effector_reach_to— Повертає, чи може кінцевий ефектор досягти заданої орієнтації.can_end_effector_reach_inc— Повертає, чи може кінцевий ефектор обертатися на задану величину.get_timeout— Повертає поточне значення тайм-ауту, яке використовується методами переміщення.is_connected— Повертає, чи підключено 6-осьову руку до EXP Brain.
Зворотні виклики — Запускають функції, коли відбуваються події arm.
control_stopped— Реєструє функцію для запуску, коли ввімкнено зупинку керування.crashed— Реєструє функцію для запуску у разі виявлення збою.
Конструктор — вручну створіть об’єкт 6-осьової руки.
Arm— Створює об’єкт «6-осьова рука».
Дії#
move_to#
move_to переміщує 6-осьовий маніпулятор до заданих координат x, y та z.
Координати x, y та z описують положення кінцевого ефектора у тривимірному просторі. Використовуйте can_arm_reach_to перед цим методом, якщо цільове положення може бути поза межами досяжного робочого простору 6-осьового маніпулятора.
Usage:
arm1.move_to(x, y, z, wait)
Параметр |
Опис |
|---|---|
|
Координата x цільового положення в міліметрах. |
|
Y-координата цільового положення в міліметрах. |
|
Z-координата цільового положення в міліметрах. |
|
Необов’язково. |
# 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 переміщує 6-осьовий маніпулятор на задану відстань від його поточного положення вздовж осей x, y та z.
Використовуйте цей метод для переміщення відносно поточного місця розташування кінцевого ефектора. Використовуйте can_arm_reach_inc перед цим методом, якщо рух може розмістити 6-осьовий маніпулятор за межами його досяжної робочої області.
Usage:
arm1.move_inc(x, y, z, wait)
Параметр |
Опис |
|---|---|
|
Відстань, на яку потрібно переміститися вздовж осі x, у міліметрах. |
|
Відстань, на яку потрібно переміститися вздовж осі Y, у міліметрах. |
|
Відстань, на яку потрібно переміститися вздовж осі z, у міліметрах. |
|
Необов’язково. |
# 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 повертає кінцевий ефектор 6-осьового важеля до заданої орієнтації по риску, крену та тангажу.
Орієнтація описує, як обертається кінцевий ефектор. yaw обертається навколо осі z, roll обертається навколо осі x, а pitch обертається навколо осі y.
Usage:
arm1.move_end_effector_to(yaw, roll, pitch, wait)
Параметр |
Опис |
|---|---|
|
Кут рискування цілі, у градусах. |
|
Кут крену цілі, у градусах. |
|
Кут тангажу цілі, у градусах. |
|
Необов’язково. |
# 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 повертає кінцевий ефектор 6-осьового маніпулятора на задану величину рисьблення, крен та тангажу відносно його поточної орієнтації.
Використовуйте цей метод для обертання відносно поточного кута рисьблення, крену або тангажу кінцевого ефектора.
Usage:
arm1.move_end_effector_inc(yaw, roll, pitch, wait)
Параметр |
Опис |
|---|---|
|
Зміна кута рисьхання, у градусах. |
|
Зміна крену, у градусах. |
|
Зміна висоти тону, у градусах. |
|
Необов’язково. |
# Rotate the end effector -50 degrees in pitch
arm1.move_end_effector_inc(0, 0, -50)
Мутатори#
set_speed#
set_speed встановлює швидкість руху, що використовується 6-осьовим маніпулятором для методів руху.
Швидкість 6-осьової руки встановлюється на 50% на початку проекту.
Usage:
arm1.set_speed(speed)
Параметр |
Опис |
|---|---|
|
Швидкість руху 6-осьової руки від |
# Set the 6-Axis Arm speed to 30%
arm1.set_speed(30)
set_end_effector_type#
set_end_effector_type встановлює тип кінцевого ефектора, прикріпленого до 6-осьового важеля.
Коли тип кінцевого ефектора змінюється, 6-осьовий маніпулятор автоматично налаштовує своє зміщення по осі z відповідно до вибраного інструменту. На початку проекту тип кінцевого ефектора встановлюється на MAGNET.
Usage:
arm1.set_end_effector_type(type)
Параметр |
Опис |
|---|---|
|
Інструмент, прикріплений до 6-осьового маніпулятора: |
# Set the end effector type to the Pen Holder Tool
arm1.set_end_effector_type(PEN)
set_end_effector_magnet#
set_end_effector_magnet вмикає або відпускає інструмент магнітного захоплення.
Стан магніту залишається активним, доки інший метод set_end_effector_magnet не змінить його. Стан магніту скидається до False на початку проєкту.
Usage:
arm1.set_end_effector_magnet(state)
Параметр |
Опис |
|---|---|
|
Стан інструмента магнітного підбирання: |
# 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 встановлює зміщення по осі z, яке використовується, коли інструмент «Тримач пера» прикріплений до 6-осьового важеля.
Перед використанням цього методу встановіть тип кінцевого ефектора на PEN Якщо інструмент «Тримач пера» не вибрано, цей метод не матиме ефекту.
Зсув пера – це відстань від верхньої частини інструмента «Тримач пера» до кінчика маркера сухого стирання. На початку проєкту зсув пера встановлюється на 0Зсув пера 0 розміщує початок координат осі z кронштейна в точці, де інструмент «Тримач пера» з’єднується з 6-осьовим кронштейном.
Usage:
arm1.set_pen_offset(zOffset)
Параметр |
Опис |
|---|---|
|
Значення зміщення пера в міліметрах. |
# 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 вмикає зупинку керування для 6-осьового маніпулятора.
Коли ввімкнено зупинку керування, 6-осьова рука негайно зупиняє будь-який рух і не виконуватиме жодних подальших методів переміщення руки, доки проєкт не буде перезапущено.
Usage:
arm1.set_control_stop(state)
Параметр |
Опис |
|---|---|
|
Необов’язково. |
# Stop the 6-Axis Arm and prevent further movement
arm1.set_control_stop()
set_timeout#
set_timeout встановлює значення тайм-ауту, яке використовується під час переміщення 6-осьового маніпулятора.
Якщо рух не завершується до досягнення тайм-ауту, проєкт продовжується до наступного рядка коду.
Usage:
arm1.set_timeout(timeout, units)
Параметр |
Опис |
|---|---|
|
Нове значення часу очікування. |
|
Необов’язково. Одиниця вимірювання часу: |
# Set the 6-Axis Arm timeout to 2 seconds
arm1.set_timeout(2, SECONDS)
Геттери#
is_done#
is_done повертає, чи завершив рух 6-осьового маніпулятора.
Цей метод корисний після виклику методу переміщення з wait=False.
True— Рух 6-осьового маніпулятора завершено.False— 6-осьовий маніпулятор все ще рухається.
Usage:
arm1.is_done()
Параметри |
Опис |
|---|---|
Цей метод не має параметрів. |
# 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 повертає, чи стався збій 6-осьового маніпулятора під час руху.
У разі виявлення аварії 6-осьовий важіль зупиняє рух двигуна та може здаватися непрацюючим. Це зменшує навантаження та допомагає захистити двигуни від випадкового пошкодження.
True— 6-осьовий маніпулятор вийшов з ладу.False— 6-осьовий маніпулятор не вийшов з ладу.
Usage:
arm1.is_crashed()
Параметри |
Опис |
|---|---|
Цей метод не має параметрів. |
# 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 повертає поточну позицію кінцевого ефектора по осі x у міліметрах.
Використовуйте цей метод, щоб зчитати, де на даний момент знаходиться кінцевий ефектор вздовж осі x.
Usage:
arm1.get_x()
Параметри |
Опис |
|---|---|
Цей метод не має параметрів. |
# Print the current x position of the 6-Axis Arm
brain.screen.print(arm1.get_x())
get_y#
get_y повертає поточне положення кінцевого ефектора по осі Y у міліметрах.
Використовуйте цей метод, щоб зчитати, де наразі знаходиться кінцевий ефектор вздовж осі Y.
Usage:
arm1.get_y()
Параметри |
Опис |
|---|---|
Цей метод не має параметрів. |
# Print the current y position of the 6-Axis Arm
brain.screen.print(arm1.get_y())
get_z#
get_z повертає поточну позицію z кінцевого ефектора в міліметрах.
Використовуйте цей метод, щоб зчитати, де наразі знаходиться кінцевий ефектор вздовж осі z.
Usage:
arm1.get_z()
Параметри |
Опис |
|---|---|
Цей метод не має параметрів. |
# Print the current z position of the 6-Axis Arm
brain.screen.print(arm1.get_z())
get_pitch#
get_pitch повертає поточний крок нахилу кінцевого ефектора в градусах.
Usage:
arm1.get_pitch()
Параметри |
Опис |
|---|---|
Цей метод не має параметрів. |
# Print the current pitch of the end effector
brain.screen.print(arm1.get_pitch())
get_roll#
get_roll повертає поточний кут кренування кінцевого ефектора в градусах.
Usage:
arm1.get_roll()
Параметри |
Опис |
|---|---|
Цей метод не має параметрів. |
# Print the current roll of the end effector
brain.screen.print(arm1.get_roll())
get_yaw#
get_yaw повертає поточне значення кута риски кінцевого ефектора в градусах.
Usage:
arm1.get_yaw()
Параметри |
Опис |
|---|---|
Цей метод не має параметрів. |
# Print the current yaw of the end effector
brain.screen.print(arm1.get_yaw())
can_arm_reach_to#
can_arm_reach_to повертає, чи може 6-осьовий маніпулятор перемістити кінцевий ефектор до заданих координат x, y та z.
Використовуйте цей метод для перевірки цільової позиції перед використанням move_to.
True— 6-осьова ручка може досягти потрібного положення.False— 6-осьова ручка не може досягти потрібного положення.
Usage:
arm1.can_arm_reach_to(x, y, z)
Параметр |
Опис |
|---|---|
|
Координата x цільового положення в міліметрах. |
|
Y-координата цільового положення в міліметрах. |
|
Z-координата цільового положення в міліметрах. |
# 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 повертає, чи може 6-осьовий важіль перемістити кінцевий ефектор на задану відстань x, y та z від його поточного положення.
Використовуйте цей метод для перевірки відносного руху перед використанням move_inc.
True— 6-осьовий маніпулятор може виконати запитуваний рух.False— 6-осьовий маніпулятор не може виконати запитуваний рух.
Usage:
arm1.can_arm_reach_inc(x, y, z)
Параметр |
Опис |
|---|---|
|
Відстань, на яку потрібно переміститися вздовж осі x, у міліметрах. |
|
Відстань, на яку потрібно переміститися вздовж осі Y, у міліметрах. |
|
Відстань, на яку потрібно переміститися вздовж осі z, у міліметрах. |
# 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 повертає, чи може кінцевий ефектор обертатися до заданої орієнтації по рискі, крену та тангажу.
Використовуйте цей метод для перевірки орієнтації цілі перед використанням move_end_effector_to.
True— Кінцевий ефектор може досягти потрібної орієнтації.False— Кінцевий ефектор не може досягти потрібної орієнтації.
Usage:
arm1.can_end_effector_reach_to(yaw, roll, pitch)
Параметр |
Опис |
|---|---|
|
Кут рискування цілі, у градусах. |
|
Кут крену цілі, у градусах. |
|
Кут тангажу цілі, у градусах. |
# 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 повертає, чи може кінцевий ефектор обертатися на задану величину рисьбування, крену та тангажу відносно своєї поточної орієнтації.
Використовуйте цей метод для перевірки руху відносної орієнтації перед використанням move_end_effector_inc.
True— Кінцевий ефектор може виконати запитуване обертання.False— Кінцевий ефектор не може виконати запитуване обертання.
Usage:
arm1.can_end_effector_reach_inc(yaw, roll, pitch)
Параметр |
Опис |
|---|---|
|
Зміна кута рисьхання, у градусах. |
|
Зміна крену, у градусах. |
|
Зміна висоти тону, у градусах. |
# 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 повертає значення тайм-ауту, яке використовується методами руху 6-осьової руки в мілісекундах.
Usage:
arm1.get_timeout()
Параметри |
Опис |
|---|---|
Цей метод не має параметрів. |
# Print the current movement timeout in milliseconds
brain.screen.print(arm1.get_timeout())
is_connected#
is_connected повертає, чи підключено 6-осьову руку до EXP Brain.
True— 6-осьова рука підключена до мозку EXP.False— 6-осьова рука не підключена до мозку EXP.
Usage:
arm1.is_connected()
Параметри |
Опис |
|---|---|
Цей метод не має параметрів. |
# Print whether the 6-Axis Arm is connected
brain.screen.print(arm1.is_connected())
Зворотні виклики#
control_stopped#
control_stopped реєструє функцію, яка виконується, коли ввімкнено зупинку керування.
Цей метод повертає екземпляр класу Event.
Usage:
arm1.control_stopped(callback, arg)
Параметр |
Опис |
|---|---|
|
Раніше визначена функція, яка виконується, коли ввімкнено зупинку керування. |
|
Необов’язково. Кортеж, що містить аргументи для передачі функції зворотного виклику. Див. Використання функцій з параметрами для отримання додаткової інформації. |
# 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 реєструє функцію, яка виконується, коли 6-осьовий маніпулятор збійне під час руху.
У разі виявлення аварії 6-осьовий важіль зупиняє рух двигуна та може здаватися непрацюючим. Це зменшує навантаження та допомагає захистити двигуни від випадкового пошкодження.
Usage:
arm1.crashed(callback)
Параметр |
Опис |
|---|---|
|
Раніше визначена function, яка виконується при виявленні збою. |
# 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)
Конструктори#
Arm#
Arm створює об’єкт Arm з 6 осями.
Usage:
Arm(smartport)
Параметр |
Опис |
|---|---|
|
Розумний порт, до якого підключено 6-осьовий маніпулятор, записується як |
# Construct a 6-Axis Arm named arm1 with the Arm class
arm1 = Arm(Ports.PORT1)