Cánh tay 6 trục#
Giới thiệu#
Cánh tay robot 6 trục VEX có thể di chuyển đầu cuối trong không gian ba chiều, điều khiển hướng của nó bằng các chuyển động xoay ngang, xoay dọc và xoay nghiêng, và sử dụng các công cụ gắn kèm như Công cụ gắp nam châm hoặc Công cụ giữ bút.
Cánh tay robot 6 trục không được cấu hình như một thiết bị trong VEXcode V5. Để sử dụng nó trong dự án Python VEX V5, hãy tạo thủ công một đối tượng Arm trong mã với Smart Port mà cánh tay robot 6 trục được kết nối.
Các ví dụ trên trang này sử dụng một cánh tay robot 6 trục được chế tạo thủ công có tên là arm1.
Dưới đây là danh sách tất cả các phương pháp hiện có:
Thao tác — Di chuyển cánh tay 6 trục đến các vị trí hoặc hướng mong muốn.
move_to— Di chuyển đầu cuối đến tọa độ x, y và z được chỉ định.move_inc— Di chuyển đầu cuối của thiết bị một khoảng cách xác định từ vị trí hiện tại của nó.move_end_effector_to— Xoay bộ phận cuối đến hướng yaw, roll và pitch được chỉ định.move_end_effector_inc— Xoay bộ phận cuối cùng theo một lượng yaw, roll và pitch được chỉ định.
Bộ điều chỉnh — Cấu hình chuyển động, công cụ và thiết lập điều khiển.
set_speed— Đặt tốc độ di chuyển được sử dụng bởi Cánh tay 6 trục.set_end_effector_type— Đặt loại đầu cuối gắn vào Cánh tay 6 trục.set_end_effector_magnet— Kích hoạt hoặc nhả Công cụ Nhặt Nam châm.set_pen_offset— Đặt độ lệch trục z được sử dụng với Công cụ Giá đỡ Bút.set_control_stop— Cho phép dừng điều khiển cho Cánh tay 6 trục.set_timeout— Đặt thời gian chờ được sử dụng bởi các phương thức chuyển động của Cánh tay 6 trục.
Các phương thức getter — Trả về trạng thái chuyển động, vị trí, hướng và giá trị kết nối.
is_done— Trả về trạng thái liệu Cánh tay 6 trục đã hoàn thành chuyển động hay chưa.is_crashed— Trả về liệu Cánh tay 6 trục có bị va chạm trong khi di chuyển hay không.get_x— Trả về vị trí x hiện tại của bộ phận cuối.get_y— Trả về vị trí y hiện tại của bộ phận cuối.get_z— Trả về vị trí z hiện tại của bộ phận cuối.get_pitch— Trả về cao độ hiện tại của bộ phận cuối.get_roll— Trả về cuộn hiện tại của bộ phận cuối.get_yaw— Trả về góc yaw hiện tại của bộ phận cuối.can_arm_reach_to— Trả về liệu Cánh tay 6 trục có thể đạt tới vị trí được chỉ định hay không.can_arm_reach_inc— Trả về liệu Cánh tay 6 trục có thể di chuyển trong khoảng cách được chỉ định hay không.can_end_effector_reach_to— Trả về liệu đầu cuối có thể đạt tới một hướng được chỉ định hay không.can_end_effector_reach_inc— Trả về liệu bộ phận cuối có thể xoay một lượng nhất định hay không.get_timeout— Trả về giá trị thời gian chờ hiện tại được sử dụng bởi các phương thức di chuyển.is_connected— Trả về trạng thái liệu Cánh tay 6 trục có được kết nối với Bộ não V5 hay không.
Hàm gọi lại — Thực thi các hàm khi các sự kiện kích hoạt xảy ra.
control_stopped— Đăng ký một hàm để chạy khi chế độ dừng điều khiển được bật.crashed— Đăng ký một hàm để chạy khi phát hiện lỗi.
Trình tạo — Tự tay tạo đối tượng Cánh tay robot 6 trục.
Arm— Tạo một đối tượng Cánh tay 6 trục.
Hành động#
move_to#
Lệnh move_to di chuyển Cánh tay 6 trục đến tọa độ x, y và z được chỉ định.
Tọa độ x, y và z mô tả vị trí của bộ phận cuối trong không gian ba chiều. Sử dụng can_arm_reach_to trước phương pháp này nếu vị trí mục tiêu có thể nằm ngoài không gian làm việc có thể tiếp cận của Cánh tay 6 trục.
Usage:
arm1.move_to(x, y, z, wait)
Tham số |
Sự miêu tả |
|---|---|
|
Tọa độ x của vị trí mục tiêu tính bằng milimét. |
|
Tọa độ y của vị trí mục tiêu tính bằng milimét. |
|
Tọa độ z của vị trí mục tiêu tính bằng milimét. |
|
Tùy chọn. |
# 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 di chuyển Cánh tay 6 trục một khoảng cách xác định so với vị trí hiện tại dọc theo các trục x, y và z.
Sử dụng phương pháp này để di chuyển tương đối so với vị trí hiện tại của bộ phận cuối. Sử dụng can_arm_reach_inc trước phương pháp này nếu chuyển động có thể đặt Cánh tay 6 trục ra ngoài không gian làm việc có thể tiếp cận của nó.
Usage:
arm1.move_inc(x, y, z, wait)
Tham số |
Sự miêu tả |
|---|---|
|
Khoảng cách di chuyển dọc theo trục x tính bằng milimét. |
|
Khoảng cách di chuyển dọc theo trục y tính bằng milimét. |
|
Khoảng cách di chuyển dọc theo trục z tính bằng milimét. |
|
Tùy chọn. |
# Move the 6-Axis Arm 100 millimeters along the y-axis
arm1.move_inc(0, 100, 0)
move_end_effector_to#
Lệnh move_end_effector_to xoay đầu cuối của Cánh tay 6 trục đến hướng yaw, roll và pitch được chỉ định.
Hướng xoay mô tả cách đầu cuối của thiết bị được xoay. yaw xoay quanh trục z, roll xoay quanh trục x, và pitch xoay quanh trục y.
Usage:
arm1.move_end_effector_to(yaw, roll, pitch, wait)
Tham số |
Sự miêu tả |
|---|---|
|
Góc lệch hướng mục tiêu, tính bằng độ. |
|
Góc nghiêng mục tiêu, tính bằng độ. |
|
Góc nghiêng mục tiêu, tính bằng độ. |
|
Tùy chọn. |
# 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 xoay đầu cuối của Cánh tay 6 trục một lượng yaw, roll và pitch được chỉ định so với hướng hiện tại của nó.
Sử dụng phương pháp này để xoay tương đối so với hướng xoay ngang, xoay dọc hoặc xoay nghiêng hiện tại của đầu cuối robot.
Usage:
arm1.move_end_effector_inc(yaw, roll, pitch, wait)
Tham số |
Sự miêu tả |
|---|---|
|
Sự thay đổi góc lệch hướng, tính bằng độ. |
|
Sự thay đổi về góc nghiêng, tính bằng độ. |
|
Sự thay đổi về cao độ, tính bằng độ. |
|
Tùy chọn. |
# Rotate the end effector -50 degrees in pitch
arm1.move_end_effector_inc(0, 0, -50)
Biến đổi#
set_speed#
set_speed thiết lập tốc độ di chuyển được sử dụng bởi Cánh tay 6 trục cho các phương pháp di chuyển.
Tốc độ của cánh tay robot 6 trục được đặt ở mức 50% khi bắt đầu dự án.
Usage:
arm1.set_speed(speed)
Tham số |
Sự miêu tả |
|---|---|
|
Tốc độ chuyển động của cánh tay robot 6 trục, từ |
# Set the 6-Axis Arm speed to 30%
arm1.set_speed(30)
set_end_effector_type#
set_end_effector_type thiết lập loại đầu cuối gắn vào Cánh tay 6 trục.
Khi loại đầu kẹp được thay đổi, tay máy 6 trục sẽ tự động điều chỉnh độ lệch trục Z để phù hợp với công cụ đã chọn. Loại đầu kẹp được đặt là MAGNET khi bắt đầu dự án.
Usage:
arm1.set_end_effector_type(type)
Tham số |
Sự miêu tả |
|---|---|
|
Công cụ được gắn vào Cánh tay 6 trục: |
# Set the end effector type to the Pen Holder Tool
arm1.set_end_effector_type(PEN)
set_end_effector_magnet#
set_end_effector_magnet kích hoạt hoặc nhả dụng cụ gắp nam châm.
Trạng thái nam châm vẫn hoạt động cho đến khi một phương thức set_end_effector_magnet khác thay đổi nó. Trạng thái nam châm được đặt lại thành False khi bắt đầu một dự án.
Usage:
arm1.set_end_effector_magnet(state)
Tham số |
Sự miêu tả |
|---|---|
|
Trạng thái của Công cụ Nhặt Nam châm: |
# 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 thiết lập độ lệch trục z được sử dụng khi Công cụ Giữ Bút được gắn vào Cánh tay 6 Trục.
Hãy đặt loại đầu cuối của dụng cụ thành PEN trước khi sử dụng phương pháp này. Nếu công cụ Pen Holder Tool không được chọn, phương pháp này sẽ không có tác dụng.
Khoảng cách lệch bút là khoảng cách từ đỉnh của dụng cụ giữ bút đến đầu bút xóa bảng. Khi bắt đầu một dự án, khoảng cách lệch bút được đặt là 0Khoảng cách lệch bút là 0 sẽ đặt gốc trục z của cánh tay robot tại điểm mà dụng cụ giữ bút kết nối với cánh tay robot 6 trục.
Usage:
arm1.set_pen_offset(zOffset)
Tham số |
Sự miêu tả |
|---|---|
|
Giá trị độ lệch của bút tính bằng milimét. |
# 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 cho phép dừng điều khiển cho Cánh tay 6 trục.
Khi chức năng dừng điều khiển được kích hoạt, cánh tay robot 6 trục sẽ ngay lập tức dừng mọi chuyển động và sẽ không thực hiện bất kỳ phương thức chuyển động nào khác cho đến khi dự án được khởi động lại.
Usage:
arm1.set_control_stop(state)
Tham số |
Sự miêu tả |
|---|---|
|
Tùy chọn. |
# Stop the 6-Axis Arm and prevent further movement
arm1.set_control_stop()
set_timeout#
set_timeout thiết lập giá trị thời gian chờ được sử dụng khi di chuyển Cánh tay 6 trục.
Nếu một thao tác không hoàn thành trước khi hết thời gian chờ, dự án sẽ tiếp tục thực hiện dòng mã tiếp theo.
Usage:
arm1.set_timeout(timeout, units)
Tham số |
Sự miêu tả |
|---|---|
|
Giá trị thời gian chờ mới. |
|
Tùy chọn. Đơn vị thời gian: |
# Set the 6-Axis Arm timeout to 2 seconds
arm1.set_timeout(2, SECONDS)
Người nhận#
is_done#
is_done trả về trạng thái cho biết cánh tay robot 6 trục đã chuyển động xong hay chưa.
Phương pháp này hữu ích sau khi phương thức di chuyển được gọi với wait=False.
True— Cánh tay 6 trục đã hoàn thành chuyển động.False— Cánh tay 6 trục vẫn đang di chuyển.
Usage:
arm1.is_done()
Thông số |
Sự miêu tả |
|---|---|
Phương pháp này không có tham số. |
# 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 trả về giá trị cho biết cánh tay robot 6 trục có bị va chạm trong khi di chuyển hay không.
Khi phát hiện va chạm, cánh tay robot 6 trục sẽ ngừng chuyển động của động cơ và có thể trông như bị chùng xuống. Điều này giúp giảm tải trọng và bảo vệ động cơ khỏi hư hỏng do va chạm bất ngờ.
True— Cánh tay robot 6 trục đã bị lỗi.False— Cánh tay robot 6 trục không bị rơi.
Usage:
arm1.is_crashed()
Thông số |
Sự miêu tả |
|---|---|
Phương pháp này không có tham số. |
# 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 trả về vị trí x hiện tại của đầu cuối cơ cấu trong milimét.
Sử dụng phương pháp này để đọc vị trí hiện tại của đầu cuối thiết bị dọc theo trục x.
Usage:
arm1.get_x()
Thông số |
Sự miêu tả |
|---|---|
Phương pháp này không có tham số. |
# Print the current x position of the 6-Axis Arm
brain.screen.print(arm1.get_x())
get_y#
get_y trả về vị trí y hiện tại của đầu cuối bộ phận thao tác tính bằng milimét.
Sử dụng phương pháp này để đọc vị trí hiện tại của đầu cuối thiết bị dọc theo trục y.
Usage:
arm1.get_y()
Thông số |
Sự miêu tả |
|---|---|
Phương pháp này không có tham số. |
# Print the current y position of the 6-Axis Arm
brain.screen.print(arm1.get_y())
get_z#
get_z trả về vị trí z hiện tại của đầu cuối bộ phận thao tác tính bằng milimét.
Sử dụng phương pháp này để đọc vị trí hiện tại của đầu cuối thiết bị dọc theo trục z.
Usage:
arm1.get_z()
Thông số |
Sự miêu tả |
|---|---|
Phương pháp này không có tham số. |
# Print the current z position of the 6-Axis Arm
brain.screen.print(arm1.get_z())
get_pitch#
get_pitch trả về góc nghiêng hiện tại của đầu cuối bộ phận tác động tính bằng độ.
Usage:
arm1.get_pitch()
Thông số |
Sự miêu tả |
|---|---|
Phương pháp này không có tham số. |
# Print the current pitch of the end effector
brain.screen.print(arm1.get_pitch())
get_roll#
get_roll trả về góc quay hiện tại của đầu cuối bộ phận tác động theo độ.
Usage:
arm1.get_roll()
Thông số |
Sự miêu tả |
|---|---|
Phương pháp này không có tham số. |
# Print the current roll of the end effector
brain.screen.print(arm1.get_roll())
get_yaw#
get_yaw trả về góc yaw hiện tại của đầu cuối cánh tay robot tính bằng độ.
Usage:
arm1.get_yaw()
Thông số |
Sự miêu tả |
|---|---|
Phương pháp này không có tham số. |
# Print the current yaw of the end effector
brain.screen.print(arm1.get_yaw())
can_arm_reach_to#
can_arm_reach_to trả về giá trị cho biết liệu cánh tay robot 6 trục có thể di chuyển đầu cuối đến tọa độ x, y và z được chỉ định hay không.
Sử dụng phương pháp này để kiểm tra vị trí mục tiêu trước khi sử dụng move_to.
True— Cánh tay robot 6 trục có thể đạt đến vị trí yêu cầu.False— Cánh tay robot 6 trục không thể đạt đến vị trí yêu cầu.
Usage:
arm1.can_arm_reach_to(x, y, z)
Tham số |
Sự miêu tả |
|---|---|
|
Tọa độ x của vị trí mục tiêu tính bằng milimét. |
|
Tọa độ y của vị trí mục tiêu tính bằng milimét. |
|
Tọa độ z của vị trí mục tiêu tính bằng milimét. |
# 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 trả về giá trị cho biết liệu cánh tay robot 6 trục có thể di chuyển đầu cuối của thiết bị theo khoảng cách x, y và z được chỉ định so với vị trí hiện tại của nó hay không.
Sử dụng phương pháp này để kiểm tra chuyển động tương đối trước khi sử dụng move_inc.
True— Cánh tay robot 6 trục có thể thực hiện chuyển động được yêu cầu.False— Cánh tay robot 6 trục không thể thực hiện chuyển động được yêu cầu.
Usage:
arm1.can_arm_reach_inc(x, y, z)
Tham số |
Sự miêu tả |
|---|---|
|
Khoảng cách di chuyển dọc theo trục x tính bằng milimét. |
|
Khoảng cách di chuyển dọc theo trục y tính bằng milimét. |
|
Khoảng cách di chuyển dọc theo trục z tính bằng milimét. |
# 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 trả về giá trị cho biết liệu đầu cuối của thiết bị có thể xoay đến hướng yaw, roll và pitch được chỉ định hay không.
Sử dụng phương pháp này để kiểm tra hướng mục tiêu trước khi sử dụng move_end_effector_to.
True— Đầu cuối có thể đạt được hướng mong muốn.False— Đầu cuối của thiết bị không thể đạt được hướng mong muốn.
Usage:
arm1.can_end_effector_reach_to(yaw, roll, pitch)
Tham số |
Sự miêu tả |
|---|---|
|
Góc lệch hướng mục tiêu, tính bằng độ. |
|
Góc nghiêng mục tiêu, tính bằng độ. |
|
Góc nghiêng mục tiêu, tính bằng độ. |
# 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 trả về giá trị cho biết liệu bộ phận cuối có thể xoay theo góc yaw, roll và pitch đã chỉ định so với hướng hiện tại của nó hay không.
Sử dụng phương pháp này để kiểm tra chuyển động định hướng tương đối trước khi sử dụng move_end_effector_inc.
True— Đầu cuối có thể thực hiện chuyển động quay theo yêu cầu.False— Đầu cuối của thiết bị không thể thực hiện chuyển động quay được yêu cầu.
Usage:
arm1.can_end_effector_reach_inc(yaw, roll, pitch)
Tham số |
Sự miêu tả |
|---|---|
|
Sự thay đổi góc lệch hướng, tính bằng độ. |
|
Sự thay đổi về góc nghiêng, tính bằng độ. |
|
Sự thay đổi về cao độ, tính bằng độ. |
# 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 trả về giá trị thời gian chờ được sử dụng bởi các phương thức chuyển động của Cánh tay 6 trục tính bằng mili giây.
Usage:
arm1.get_timeout()
Thông số |
Sự miêu tả |
|---|---|
Phương pháp này không có tham số. |
# Print the current movement timeout in milliseconds
brain.screen.print(arm1.get_timeout())
is_connected#
is_connected trả về trạng thái kết nối của Cánh tay 6 trục với Bộ xử lý V5.
True— Cánh tay 6 trục được kết nối với bộ não V5.False— Cánh tay 6 trục không được kết nối với bộ não V5.
Usage:
arm1.is_connected()
Thông số |
Sự miêu tả |
|---|---|
Phương pháp này không có tham số. |
# Print whether the 6-Axis Arm is connected
brain.screen.print(arm1.is_connected())
Cuộc gọi lại#
control_stopped#
control_stopped đăng ký một hàm chạy khi chức năng dừng điều khiển được bật.
Phương thức này trả về một thể hiện của lớp Event.
Usage:
arm1.control_stopped(callback, arg)
Tham số |
Sự miêu tả |
|---|---|
|
Một hàm được định nghĩa trước đó chạy khi dừng điều khiển được bật. |
|
Tùy chọn. Một bộ chứa các đối số để truyền cho hàm gọi lại. Xem Sử dụng hàm có tham số để biết thêm thông tin. |
# 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 đăng ký một hàm chạy khi cánh tay robot 6 trục bị va chạm trong quá trình di chuyển.
Khi phát hiện va chạm, cánh tay robot 6 trục sẽ ngừng chuyển động của động cơ và có thể trông như bị chùng xuống. Điều này giúp giảm tải trọng và bảo vệ động cơ khỏi hư hỏng do va chạm bất ngờ.
Usage:
arm1.crashed(callback)
Tham số |
Sự miêu tả |
|---|---|
|
Một hàm được định nghĩa trước đó sẽ chạy khi phát hiện sự cố. |
# 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)
Các hàm tạo#
Arm#
Lệnh Arm tạo ra một đối tượng Cánh tay 6 trục. Cánh tay 6 trục phải được tạo thủ công trong VEXcode V5 trước khi có thể sử dụng trong dự án.
Usage:
Arm(smartport)
Tham số |
Sự miêu tả |
|---|---|
|
Cổng thông minh mà cánh tay robot 6 trục được kết nối, được viết dưới dạng |
# Construct a 6-Axis Arm named arm1 with the Arm class
arm1 = Arm(Ports.PORT1)