Arm#
Introduction#
The 6-Axis Robotic Arm is a robotic manipulator used in the CTE Workcell that can move in three-dimensional space and rotate its end effector to different orientations. Blocks in the Arm category allow the EXP Brain to move the 6-Axis Arm to positions, adjust its orientation, and control its speed.
Below is a list of available blocks:
Actions – Move the 6-Axis Arm to positions or orientations in 3D space.
move Arm to position – Moves the 6-Axis Arm to a specified x, y, and z coordinate.
increment Arm position – Moves the 6-Axis Arm by an incremental distance along the x, y, and z axes.
move Arm to orientation – Rotates the 6-Axis Arm’s end effector to a specific orientation.
increment Arm orientation – Rotates the 6-Axis Arm’s end effector by a specified number of degrees.
Settings – Configure the 6-Axis Arm’s movement speed and attached tools.
set Arm speed – Sets the movement speed of the 6-Axis Arm.
set Arm end effector – Selects which tool is attached to the 6-Axis Arm.
set Arm magnet mode – Engages or releases the magnet pickup tool.
set Arm pen offset – Sets the vertical offset for the pen tool.
set Arm to control stopped – Stops the 6-Axis Arm and prevents further movement.
Values – Return 6-Axis Arm motion status, position, and orientation.
Arm move to position? – Returns a Boolean indicating whether the 6-Axis Arm has finished moving.
Arm increment position? – Returns the 6-Axis Arm’s current position on a selected axis (X, Y, or Z) in mm or inches.
Arm move end effector? – Returns the 6-Axis Arm’s current orientation (pitch, roll, or yaw) in degrees.
Actions#
move Arm to position#
The move Arm to position block moves the 6-Axis Arm to a specified x, y, and z coordinate.
move [Arm1 v] to position x:[120] y:[0] z:[100] [mm v] ▶
Parameter |
Description |
|---|---|
device |
Which 6-Axis Arm to use, configured in the Devices window. |
x |
The x-coordinate of the target position. |
y |
The y-coordinate of the target position. |
z |
The z-coordinate of the target position. |
unit |
Selects the unit for coordinates:
|
expanding arrow |
By default, this is a waiting block, so the 6-Axis Arm will finish moving before running the next block. To make the 6-Axis Arm start moving and immediately run the next block right away, expand the block to say and don’t wait. |
Example
when started
move [Arm1 v] to position x:(120) y:(120) z:(75) [mm v] ▶
increment Arm position#
The increment Arm position block moves the 6-Axis Arm by an incremental distance along the x, y, and z axes.
increment [Arm1] position by x:[0] y:[0] z:[0] [mm v] ▶
Parameter |
Description |
|---|---|
device |
Selects which 6-Axis Arm to use, configured in the Devices window. |
x |
Distance to move along the X axis. |
y |
Distance to move along the Y axis. |
z |
Distance to move along the Z axis. |
unit |
Selects the unit for the movement distance:
|
expanding arrow |
By default, this is a waiting block, so the 6-Axis Arm will finish moving before running the next block. To make the 6-Axis Arm start moving and immediately run the next block right away, expand the block to say and don’t wait. |
Example
when started
[Move the Arm1 100 millimeters along the X axis.]
increment [Arm1 v] position by x:[100] y:[0] z:[0] [mm v] ▶
move Arm to orientation#
The move Arm to orientation block rotates the 6-Axis Arm’s end effector about a selected axis to a specified orientation.
move [Arm1 v] to orientation [pitch v] [0] degrees ▶
Parameter |
Description |
|---|---|
device |
Selects which 6-Axis Arm to use, configured in the Devices window. |
orientation |
Selects which axis to rotate the end effector about:
|
degrees |
The target orientation angle in degrees. |
expanding arrow |
By default, this is a waiting block, so the 6-Axis Arm will finish moving before running the next block. To make the 6-Axis Arm start moving and immediately run the next block right away, expand the block to say and don’t wait. |
Example
when started
[Rotate the end effector to 270 degrees of yaw.]
move [Arm1 v] to orientation [yaw v] [270] degrees ▶
increment Arm orientation#
The increment Arm orientation block rotates the 6-Axis Arm’s end effector by a specified number of degrees about a selected axis.
increment [Arm1 v] orientation by [pitch v] [0] degrees ▶
Parameter |
Description |
|---|---|
device |
Selects which 6-Axis Arm to use, configured in the Devices window. |
orientation |
Selects which axis to rotate the end effector about:
|
degrees |
The number of degrees to rotate the end effector. |
expanding arrow |
By default, this is a waiting block, so the 6-Axis Arm will finish moving before running the next block. To make the 6-Axis Arm start moving and immediately run the next block right away, expand the block to say and don’t wait. |
Example
when started
[Rotate the end effector 40 degrees in pitch.]
increment [Arm1] orientation by [pitch v] [40] degrees ▶
Settings#
set Arm speed#
The set Arm speed block sets the movement speed of the 6-Axis Arm.
By default, the 6-Axis Arm’s speed is set to 50% at the start of a project.
set [Arm1 v] speed to [50]%
Parameter |
Description |
|---|---|
device |
Selects which 6-Axis Arm to use, configured in the Devices window. |
percent |
Sets the 6-Axis Arm’s speed as a percentage from 1 to 100. |
Example
when started
[Set the 6-Axis Arm's speed to 30%.]
set [Arm1 v] speed to [30]%
move [Arm1 v] to position x:[120] y:[120] z:[70] [mm v] ▶
set Arm end effector#
The set Arm end effector block selects which tool is attached to the 6-Axis Arm.
When the end effector is changed, the 6-Axis Arm automatically adjusts its z-offset to match the selected tool.
By default, the end effector is set to the Magnet Pickup Tool at the start of a project.
set [Arm1 v] end effector to [magnet v]
Parameter |
Description |
|---|---|
device |
Selects which 6-Axis Arm to use, configured in the Devices window. |
end effector |
Selects which tool is attached to the 6-Axis Arm:
|
Example
when started
[Set the 6-Axis Arm to use the Pen Holder Tool.]
set [Arm1 v] end effector to [pen v]
set Arm magnet mode#
The set Arm magnet mode block sets the mode of the 6-Axis Arm’s Magnet Pickup Tool.
The magnet mode remains active until another set arm magnet mode block changes it.
At the start of a project, the magnet mode is reset to released.
set [Arm1 v] magnet to [engaged v]
Parameter |
Description |
|---|---|
device |
Selects which 6-Axis Arm to use, configured in the Devices window. |
mode |
Sets the magnet state:
|
Example
when started
[Pick up objects, then drop them after 2 seconds.]
set [Arm1 v] magnet to [engaged v]
wait [2] seconds
set [Arm1 v] magnet to [released v]
set Arm pen offset#
The set Arm pen offset block sets the current z-offset of the 6-Axis Arm when using the Pen Holder Tool.
Before using this block, the arm’s end effector must be set to the Pen Holder Tool with the set arm end effector block. If the Pen Holder Tool is not selected, this block has no effect.
The pen offset is the distance between the top of the Pen Holder Tool and the tip of the Dry-Erase Marker. At the start of a project, the pen offset is set to 0. By default, this corresponds to approximately 23 mm between the tip of the Dry-Erase Marker included with the CTE Workcell Kit and the Pen Holder Tool.
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.
set [Arm1 v] pen offset to [0] [mm v]
Parameter |
Description |
|---|---|
device |
Selects which 6-Axis Arm to use, configured in the Devices window. |
offset |
Sets the pen offset value. |
unit |
Selects the unit for the pen offset:
|
Example
when started
[Set the pen offset to 1 inch.]
set [Arm1 v] pen offset to [1] [inches v]
move [Arm1 v] to position x:[120] y:[120] z:[0] [mm v] ▶
set Arm to control stopped#
The set Arm to control stopped block enables the 6-Axis Arm’s control stop.
When control stop is enabled, the 6-Axis Arm immediately stops any movement and will not execute any further Arm blocks. Once this block runs, the 6-Axis Arm cannot be re-enabled until the project is restarted.
set [Arm1 v] to control stopped
Parameter |
Description |
|---|---|
device |
Selects which 6-Axis Arm to use, configured in the Devices window. |
Example
when started
[Control stop after a movement.]
move [Arm1 v] to position x:[120] y:[120] z:[70] [mm v] ▶
set [Arm1 v] to control stopped
Values#
Arm move to position?#
The Arm move to position? block returns a Boolean indicating whether the 6-Axis Arm can move to the specified position.
True — The 6-Axis Arm can move to the specified x, y, and z position.
False — The specified position is outside the reachable workspace of the 6-Axis Arm.
<[Arm1 v] move to position x:[0] y:[0] z:[0] [mm v] ?>
Parameter |
Description |
|---|---|
device |
Selects which 6-Axis Arm to use, configured in the Devices window. |
x |
The x-coordinate of the target position. |
y |
The y-coordinate of the target position. |
z |
The z-coordinate of the target position. |
unit |
Selects the unit for the coordinates:
|
Example
when started
[Check if the 6-Axis Arm can move to a position.]
if <not <[Arm1 v] move to position x:[0] y:[0] z:[0] [mm v] ?>>
print [The 6-Axis Arm can't move to this position.] ▶
Arm increment position?#
The Arm increment position? block returns a Boolean indicating whether the 6-Axis Arm can move the specified incremental distance.
True — The 6-Axis Arm can move the requested distance along the x, y, and z axes.
False — Moving the requested distance would place the 6-Axis Arm outside its reachable workspace.
<[Arm1 v] increment position by x:[0] y:[0] z:[0] [mm v] ?>
Parameter |
Description |
|---|---|
device |
Selects which 6-Axis Arm to use, configured in the Devices window. |
x |
Distance to move along the x-axis. |
y |
Distance to move along the y-axis. |
z |
Distance to move along the z-axis. |
unit |
Selects the unit for the movement distance:
|
Example
when started
[Check if the 6-Axis Arm can increment from its position.]
if <not <[Arm1 v] move to position x:[0] y:[500] z:[0] [mm v] ?>>
print [The 6-Axis Arm can't incremental move for this distance.] ▶
Arm move end effector?#
The Arm move end effector? block returns a Boolean indicating whether the 6-Axis Arm can rotate its end effector to the specified orientation.
True — The 6-Axis Arm can rotate the end effector to the specified orientation.
False — The requested orientation is outside the allowed range for the 6-Axis Arm.
<[Arm1 v] move end effector to [pitch v] [0] degrees?>
Parameter |
Description |
|---|---|
device |
Selects which 6-Axis Arm to use, configured in the Devices window. |
orientation |
Selects which axis to rotate the end effector about:
|
degrees |
The target orientation angle in degrees. |
when started
[Check if the 6-Axis Arm can roll its end effector to a position.]
if <[Arm1 v] move end effector to [roll v] [40] degrees?>>
print [The End Effector can roll to that position.] on screen ▶
Arm increment orientation?#
The Arm increment orientation? block returns a Boolean indicating whether the 6-Axis Arm can rotate its end effector by the specified number of degrees.
True — The 6-Axis Arm can rotate the end effector by the specified amount.
False — Rotating the end effector by the specified amount would move it outside the allowed range.
<[Arm1 v] increment orientation by [pitch v] [0] degrees?>
Parameter |
Description |
|---|---|
device |
Selects which 6-Axis Arm to use, configured in the Devices window. |
orientation |
Selects which axis to rotate the end effector about:
|
degrees |
The number of degrees to rotate the end effector. |
when started
[Check if the 6-Axis Arm can incrementally yaw its end effector.]
if <[Arm1 v] increment orientation by [yaw v] [20] degrees?>>
print [The End Effector can incrementally yaw for that distance.] ▶
Arm is done moving?#
The Arm is done moving? block returns a Boolean indicating whether the 6-Axis Arm is currently moving.
True — The 6-Axis Arm is not moving.
False — The 6-Axis Arm is moving.
<[Arm1 v] is done moving?>
Parameter |
Description |
|---|---|
device |
Selects which 6-Axis Arm to use, configured in the Devices window. |
when started
[Display the current y-position while the 6-Axis Arm moves.]
move [Arm1 v] to position x:(-100) y:(200) z:(100) [mm v] ◀ and don't wait
repeat until <[Arm1 v] is done moving?>
print ([Arm1 v] position [y v] in [mm v]) on screen ◀ and set cursor to next row
wait [0.25] seconds
Arm position#
The Arm position block returns the current position of the 6-Axis Arm along a selected axis.
([Arm1 v] position [x v] in [mm v])
Parameter |
Description |
|---|---|
device |
Selects which 6-Axis Arm to use, configured in the Devices window. |
axis |
Selects which axis to return the position for:
|
unit |
Selects the unit for the position value:
|
when started
[Display the current y-position while the 6-Axis Arm moves.]
move [Arm1 v] to position x:(-100) y:(200) z:(100) [mm v] ◀ and don't wait
repeat until <[Arm1 v] is done moving?>
print ([Arm1 v] position [y v] in [mm v]) on screen ◀ and set cursor to next row
wait [0.25] seconds
Arm orientation#
The Arm orientation block returns the current orientation of the 6-Axis Arm’s end effector about a selected axis in degrees.
([Arm1 v] orientation [pitch v] in degrees)
Parameter |
Description |
|---|---|
device |
Selects which 6-Axis Arm to use, configured in the Devices window. |
orientation |
Selects which orientation axis to report:
|
when Arm control stopped#
The when Arm control stopped block runs the attached stack when the 6-Axis Arm’s control stop has been enabled.
when [Arm1 v] control stopped :: hat events
Parameter |
Description |
|---|---|
device |
Selects which 6-Axis Arm to use, configured in the Devices window. |