六轴机械臂#
介绍#
VEX 六轴机械臂 是 CTE 工作单元中使用的一种机械臂。在 VEXcode EXP 中,机械臂方法允许 EXP 控制器移动六轴机械臂、旋转其末端执行器、检查运动是否可行,并控制诸如磁性拾取工具或笔架工具等连接的工具。
本页面适用于将六轴机械臂连接到 EXP Brain 的 CTE 工作单元项目。如果您单独使用六轴机械臂和 CTE Tile,请改用 CTE 机械臂 API 页面。
The examples on this page use a configured 6-Axis Arm named arm1.
以下是所有可用方法的列表:
动作——将六轴机械臂移动到指定位置或方向。
move_to— Moves the end effector to a specified x, y, and z coordinate.move_inc— Moves the end effector by a specified distance from its current position.move_end_effector_to— Rotates the end effector to a specified yaw, roll, and pitch orientation.move_end_effector_inc— Rotates the end effector by a specified yaw, roll, and pitch amount.
变异器 — 配置移动、工具和控制设置。
set_speed— Sets the movement speed used by the 6-Axis Arm.set_end_effector_type— Sets the type of end effector attached to the 6-Axis Arm.set_end_effector_magnet— Engages or releases the Magnet Pickup Tool.set_pen_offset— Sets the z-axis offset used with the Pen Holder Tool.set_control_stop— Enables control stop for the 6-Axis Arm.set_timeout— Sets the timeout used by 6-Axis Arm movement methods.
获取器 — 返回运动状态、位置、方向和连接值。
is_done— Returns whether the 6-Axis Arm has finished moving.is_crashed— Returns whether the 6-Axis Arm has crashed while moving.get_x— Returns the current x position of the end effector.get_y— Returns the current y position of the end effector.get_z— Returns the current z position of the end effector.get_pitch— Returns the current pitch of the end effector.get_roll— Returns the current roll of the end effector.get_yaw— Returns the current yaw of the end effector.can_arm_reach_to— Returns whether the 6-Axis Arm can reach a specified position.can_arm_reach_inc— Returns whether the 6-Axis Arm can move by a specified distance.can_end_effector_reach_to— Returns whether the end effector can reach a specified orientation.can_end_effector_reach_inc— Returns whether the end effector can rotate by a specified amount.get_timeout— Returns the current timeout value used by movement methods.is_connected— Returns whether the 6-Axis Arm is connected to the EXP Brain.
回调函数——在发生起动事件时运行函数。
control_stopped— Registers a function to run when control stop is enabled.crashed— Registers a function to run when a crash is detected.
构造函数——手动创建一个六轴机械臂对象。
Arm— Creates a 6-Axis Arm object.
行动#
move_to#
move_to moves the 6-Axis Arm to a specified x, y, and z coordinate.
The x, y, and z coordinates describe the position of the end effector in three-dimensional space. Use can_arm_reach_to before this method if the target position may be outside the 6-Axis Arm’s reachable workspace.
Usage:
arm1.move_to(x, y, z, wait)
范围 |
描述 |
|---|---|
|
目标位置的 x 坐标(单位:毫米)。 |
|
目标位置的y坐标(单位:毫米)。 |
|
目标位置的z坐标(单位:毫米)。 |
|
Optional. |
# 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 moves the 6-Axis Arm by a specified distance from its current position along the x, y, and z axes.
Use this method to move relative to where the end effector is now. Use can_arm_reach_inc before this method if the movement may place the 6-Axis Arm outside its reachable workspace.
Usage:
arm1.move_inc(x, y, z, wait)
范围 |
描述 |
|---|---|
|
沿 x 轴移动的距离(单位:毫米)。 |
|
沿 y 轴移动的距离(单位:毫米)。 |
|
沿 z 轴移动的距离,单位为毫米。 |
|
Optional. |
# 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 rotates the 6-Axis Arm’s end effector to a specified yaw, roll, and pitch orientation.
Orientation describes how the end effector is rotated. yaw rotates around the z-axis, roll rotates around the x-axis, and pitch rotates around the y-axis.
Usage:
arm1.move_end_effector_to(yaw, roll, pitch, wait)
范围 |
描述 |
|---|---|
|
目标偏航角,单位为度。 |
|
目标滚动角,以度为单位。 |
|
目标俯仰角,单位为度。 |
|
Optional. |
# 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 rotates the 6-Axis Arm’s end effector by a specified yaw, roll, and pitch amount from its current orientation.
使用此方法可相对于末端执行器的当前偏航角、横滚角或俯仰角进行旋转。
Usage:
arm1.move_end_effector_inc(yaw, roll, pitch, wait)
范围 |
描述 |
|---|---|
|
偏航角的变化量,以度为单位。 |
|
滚动角度的变化量,以度为单位。 |
|
音调的变化,以度为单位。 |
|
Optional. |
# Rotate the end effector -50 degrees in pitch
arm1.move_end_effector_inc(0, 0, -50)
变异体#
set_speed#
set_speed sets the movement speed used by the 6-Axis Arm for movement methods.
项目开始时,6轴机械臂的速度设置为50%。
Usage:
arm1.set_speed(speed)
范围 |
描述 |
|---|---|
|
The movement speed of the 6-Axis Arm, from |
# Set the 6-Axis Arm speed to 30%
arm1.set_speed(30)
set_end_effector_type#
set_end_effector_type sets the type of end effector attached to the 6-Axis Arm.
When the end effector type is changed, the 6-Axis Arm automatically adjusts its z-offset to match the selected tool. The end effector type is set to MAGNET at the start of a project.
Usage:
arm1.set_end_effector_type(type)
范围 |
描述 |
|---|---|
|
The tool attached to the 6-Axis Arm: |
# Set the end effector type to the Pen Holder Tool
arm1.set_end_effector_type(PEN)
set_end_effector_magnet#
set_end_effector_magnet engages or releases the Magnet Pickup Tool.
The magnet state stays active until another set_end_effector_magnet method changes it. The magnet state is reset to False at the start of a project.
Usage:
arm1.set_end_effector_magnet(state)
范围 |
描述 |
|---|---|
|
The Magnet Pickup Tool 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 sets the z-axis offset used when the Pen Holder Tool is attached to the 6-Axis Arm.
Set the end effector type to PEN before using this method. If the Pen Holder Tool is not selected, this method has no effect.
The pen offset is the distance from the top of the Pen Holder Tool to the tip of the Dry-Erase Marker. At the start of a project, the pen offset is set to 0. A pen offset of 0 places the arm’s z-axis origin at the point where the Pen Holder Tool connects to the 6-Axis Arm.
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 enables control stop for the 6-Axis Arm.
启用控制停止后,6 轴机械臂将立即停止所有运动,并且在项目重新启动之前不会运行任何进一步的机械臂运动方法。
Usage:
arm1.set_control_stop(state)
范围 |
描述 |
|---|---|
|
Optional. |
# Stop the 6-Axis Arm and prevent further movement
arm1.set_control_stop()
set_timeout#
set_timeout sets the timeout value used when moving the 6-Axis Arm.
如果在超时之前某个动作没有完成,项目将继续执行下一行代码。
Usage:
arm1.set_timeout(timeout, units)
范围 |
描述 |
|---|---|
|
新的超时值。 |
|
Optional. The time unit: |
# Set the 6-Axis Arm timeout to 2 seconds
arm1.set_timeout(2, SECONDS)
获取器#
is_done#
is_done returns whether the 6-Axis Arm has finished moving.
This method is useful after a movement method is called with wait=False.
True— The 6-Axis Arm has finished moving.False— The 6-Axis Arm is still moving.
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 returns whether the 6-Axis Arm has crashed while moving.
当检测到碰撞时,六轴机械臂会停止电机运动,并可能出现无力状态。这可以减轻机械臂的压力,并有助于保护电机免受意外损坏。
True— The 6-Axis Arm has crashed.False— The 6-Axis Arm has not crashed.
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 returns the current x position of the end effector in millimeters.
使用此方法读取末端执行器当前沿 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 returns the current y position of the end effector in millimeters.
使用此方法读取末端执行器当前沿 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 returns the current z position of the end effector in millimeters.
使用此方法读取末端执行器当前沿 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 returns the current pitch of the end effector in degrees.
Usage:
arm1.get_pitch()
参数 |
描述 |
|---|---|
此方法没有参数。 |
# Print the current pitch of the end effector
brain.screen.print(arm1.get_pitch())
get_roll#
get_roll returns the current roll of the end effector in degrees.
Usage:
arm1.get_roll()
参数 |
描述 |
|---|---|
此方法没有参数。 |
# Print the current roll of the end effector
brain.screen.print(arm1.get_roll())
get_yaw#
get_yaw returns the current yaw of the end effector in degrees.
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 returns whether the 6-Axis Arm can move the end effector to a specified x, y, and z coordinate.
Use this method to check a target position before using move_to.
True— The 6-Axis Arm can reach the requested position.False— The 6-Axis Arm cannot reach the requested position.
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 returns whether the 6-Axis Arm can move the end effector by a specified x, y, and z distance from its current position.
Use this method to check a relative movement before using move_inc.
True— The 6-Axis Arm can make the requested movement.False— The 6-Axis Arm cannot make the requested movement.
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 returns whether the end effector can rotate to a specified yaw, roll, and pitch orientation.
Use this method to check a target orientation before using move_end_effector_to.
True— The end effector can reach the requested orientation.False— The end effector cannot reach the requested orientation.
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 returns whether the end effector can rotate by a specified yaw, roll, and pitch amount from its current orientation.
Use this method to check a relative orientation movement before using move_end_effector_inc.
True— The end effector can make the requested rotation.False— The end effector cannot make the requested rotation.
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 returns the timeout value used by 6-Axis Arm movement methods in milliseconds.
Usage:
arm1.get_timeout()
参数 |
描述 |
|---|---|
此方法没有参数。 |
# Print the current movement timeout in milliseconds
brain.screen.print(arm1.get_timeout())
is_connected#
is_connected returns whether the 6-Axis Arm is connected to the EXP Brain.
True— The 6-Axis Arm is connected to the EXP Brain.False— The 6-Axis Arm is not connected to the EXP Brain.
Usage:
arm1.is_connected()
参数 |
描述 |
|---|---|
此方法没有参数。 |
# Print whether the 6-Axis Arm is connected
brain.screen.print(arm1.is_connected())
回调函数#
control_stopped#
control_stopped registers a function that runs when control stop is enabled.
This method returns an instance of the Event class.
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 registers a function that runs when the 6-Axis Arm has crashed while moving.
当检测到碰撞时,六轴机械臂会停止电机运动,并可能出现无力状态。这可以减轻机械臂的压力,并有助于保护电机免受意外损坏。
Usage:
arm1.crashed(callback)
范围 |
描述 |
|---|---|
|
先前定义的函数,当检测到崩溃时运行。 |
# 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 creates a 6-Axis Arm object.
Usage:
Arm(smartport)
范围 |
描述 |
|---|---|
|
The Smart Port that the 6-Axis Arm is connected to, written as |
# Construct a 6-Axis Arm named arm1 with the Arm class
arm1 = Arm(Ports.PORT1)