6軸アーム#
導入#
VEX 6軸ロボットアームは、エンドエフェクタを3次元空間内で移動させ、エンドエフェクタの向きを制御し、マグネットピックアップツールやペンホルダーツールなどのアタッチメントツールを操作します。
以下に、利用可能なメソッドの一覧を示します。
操作 — 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軸アームの移動が完了したかどうかを返します。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軸アームが脳に接続されているかどうかを返します。
コールバック — アームイベントが発生したときに関数を実行します。
control_stopped— コントロールストップが有効になったときに実行する関数を登録します。
コンストラクタ — 6軸アームオブジェクトを手動で作成します。
Arm— 6軸アームオブジェクトを作成します。
このページは、6軸アームをCTEタイルと単独で使用する場合の説明です。6軸アームを空気圧機器やコンベアなどの他のCTEワークセルコンポーネントと併用する場合は、6軸アームをEXPブレインに接続し、対応するEXPアームページを使用してください。
行動#
move_to#
move_to は、6軸アームを指定されたx、y、z座標に移動します。
x、y、z座標は、エンドエフェクタの3次元空間における位置を表します。ターゲット位置が6軸アームの到達可能な作業空間外にある可能性がある場合は、このメソッドの前にcan_arm_reach_toを使用してください。
Usage:
arm.move_to(x, y, z, wait)
パラメータ |
説明 |
|---|---|
|
目標位置のx座標(ミリメートル単位)。 |
|
目標位置のy座標(ミリメートル単位)。 |
|
目標位置のz座標(ミリメートル単位)。 |
|
オプション |
# Move the 6-Axis Arm to (40, 140, 210)
arm.move_to(40, 140, 210)
# Start moving, then print the y-position while the arm moves
arm.move_to(-100, 200, 100, wait=False)
while not arm.is_done():
brain.print(arm.get_y())
brain.new_line()
wait(0.25, SECONDS)
move_inc#
move_inc は、6軸アームを現在の位置から指定された距離だけx、y、z軸に沿って移動させます。
このメソッドを使用して、エンドエフェクタの現在の位置を基準に移動させます。移動によって6軸アームが到達可能な作業空間外になる可能性がある場合は、このメソッドの前にcan_arm_reach_incを使用してください。
Usage:
arm.move_inc(x, y, z, wait)
パラメータ |
説明 |
|---|---|
|
x軸方向に移動する距離(ミリメートル単位)。 |
|
y軸方向に移動する距離(ミリメートル単位)。 |
|
z軸方向に移動する距離(ミリメートル単位)。 |
|
オプション |
# Move the 6-Axis Arm 100 millimeters along the y-axis
arm.move_inc(0, 100, 0)
move_end_effector_to#
move_end_effector_to は、6軸アームのエンドエフェクタを、指定されたヨー、ロール、ピッチ方向に回転させます。
方向は yaw z 軸を中心に回転し、 roll x 軸を中心に回転し、 pitch y 軸を中心に回転します。
Usage:
arm.move_end_effector_to(yaw, roll, pitch, wait)
パラメータ |
説明 |
|---|---|
|
目標ヨー角(度)。 |
|
目標ロール角(度)。 |
|
目標ピッチ角(度)。 |
|
オプション |
# Rotate the end effector to 90 degrees of roll
arm.move_end_effector_to(0, 90, 0)
move_end_effector_inc#
move_end_effector_inc 、6軸アームのエンドエフェクタを現在の向きから指定されたヨー、ロール、ピッチ量だけ回転させます。
この方法を使用して、エンドエフェクタの現在のヨー、ロール、またはピッチを基準として回転させます。
Usage:
arm.move_end_effector_inc(yaw, roll, pitch, wait)
パラメータ |
説明 |
|---|---|
|
ヨー角の変化(度数)。 |
|
ロール角の変化(度数)。 |
|
音程の変化(度数)。 |
|
オプション |
# Rotate the end effector -50 degrees in pitch
arm.move_end_effector_inc(0, 0, -50)
変異誘発者#
set_speed#
set_speed は、6軸アームが移動方法で使用する移動速度を設定します。
プロジェクト開始時、6軸アームの速度は50%に設定されます。
Usage:
arm.set_speed(speed)
パラメータ |
説明 |
|---|---|
|
6軸アームの移動速度は、 |
# Set the 6-Axis Arm speed to 30%
arm.set_speed(30)
set_end_effector_type#
set_end_effector_type は、6軸アームに取り付けられるエンドエフェクタのタイプを設定します。
エンドエフェクタの種類を変更すると、6軸アームは選択したツールに合わせてZオフセットを自動的に調整します。プロジェクト開始時には、エンドエフェクタの種類は Arm.MAGNET に設定されています。
Usage:
arm.set_end_effector_type(type)
パラメータ |
説明 |
|---|---|
|
6軸アームに取り付けられるツール: |
# Set the end effector type to the Pen Holder Tool
arm.set_end_effector_type(Arm.PEN)
set_end_effector_magnet#
set_end_effector_magnet は、マグネットピックアップツールを作動または解除します。
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:
arm.set_end_effector_magnet(state)
パラメータ |
説明 |
|---|---|
|
マグネットピックアップツールの状態: |
# Pick up objects and then drop them
arm.set_end_effector_type(Arm.MAGNET)
arm.set_end_effector_magnet(True)
wait(2, SECONDS)
arm.set_end_effector_magnet(False)
set_pen_offset#
set_pen_offset は、ペンホルダーツールが 6 軸アームに取り付けられているときに使用される z 軸オフセットを設定します。
この方法を使用する前に、エンドエフェクタタイプを Arm.PEN に設定してください。ペンホルダーツールが選択されていない場合、この方法は効果がありません。
ペンオフセットとは、ペンホルダーツールの先端からホワイトボードマーカーの先端までの距離です。プロジェクト開始時には、ペンオフセットは 0に設定されています。ペンオフセットを 0 に設定すると、アームのZ軸原点がペンホルダーツールが6軸アームに接続される位置に配置されます。
Usage:
arm.set_pen_offset(zOffset)
パラメータ |
説明 |
|---|---|
|
ペンオフセット値(ミリメートル単位)。 |
# Set the end effector type to the Pen Holder Tool and set the pen offset
arm.set_end_effector_type(Arm.PEN)
arm.set_pen_offset(25)
set_control_stop#
set_control_stop は、6軸アームの制御停止を有効にします。
コントロールストップが有効になっている場合、6軸アームは直ちにすべての動作を停止し、プロジェクトが再開されるまで、それ以上のアーム動作メソッドは実行されません。
Usage:
arm.set_control_stop(state)
パラメータ |
説明 |
|---|---|
|
オプション。0 |
# Stop the 6-Axis Arm and prevent further movement
arm.set_control_stop()
set_timeout#
set_timeout は、6軸アームを移動する際に使用されるタイムアウト値を設定します。
タイムアウト時間内に動作が完了しない場合、プロジェクトは次のコード行に進みます。
Usage:
arm.set_timeout(timeout, units)
パラメータ |
説明 |
|---|---|
|
新しいタイムアウト値。 |
|
オプション。時間単位: |
# Set the 6-Axis Arm timeout to 2 seconds
arm.set_timeout(2, SECONDS)
ゲッター#
is_done#
is_done 6軸アームの動作が完了したかどうかを返します。
このメソッドは、移動メソッドが wait=Falseで呼び出された後に役立ちます。
True— 6軸アームの動作が完了しました。False— 6軸アームはまだ動いています。
Usage:
arm.is_done()
パラメータ |
説明 |
|---|---|
このメソッドにはパラメータがありません。 |
# Display the 6-Axis Arm's y-position while it moves
arm.move_to(-100, 200, 100, wait=False)
while not arm.is_done():
brain.print(arm.get_y())
brain.new_line()
wait(0.25, SECONDS)
get_x#
get_x get_x は、エンドエフェクタの現在の x 位置をミリメートル単位で返します。
この方法を使用して、エンドエフェクタが現在x軸上のどの位置にあるかを読み取ります。
Usage:
arm.get_x()
パラメータ |
説明 |
|---|---|
このメソッドにはパラメータがありません。 |
# Print the current x position of the 6-Axis Arm
brain.print(arm.get_x())
get_y#
get_y get_y は、エンドエフェクタの現在の y 位置をミリメートル単位で返します。
この方法を使用して、エンドエフェクタが現在y軸上のどの位置にあるかを読み取ります。
Usage:
arm.get_y()
パラメータ |
説明 |
|---|---|
このメソッドにはパラメータがありません。 |
# Print the current y position of the 6-Axis Arm
brain.print(arm.get_y())
get_z#
get_z get_z は、エンドエフェクタの現在の z 位置をミリメートル単位で返します。
この方法を使用して、エンドエフェクタがZ軸に沿って現在どの位置にあるかを読み取ります。
Usage:
arm.get_z()
パラメータ |
説明 |
|---|---|
このメソッドにはパラメータがありません。 |
# Print the current z position of the 6-Axis Arm
brain.print(arm.get_z())
get_pitch#
get_pitch は、エンドエフェクタの現在のピッチを度単位で返します。
Usage:
arm.get_pitch()
パラメータ |
説明 |
|---|---|
このメソッドにはパラメータがありません。 |
# Print the current pitch of the end effector
brain.print(arm.get_pitch())
get_roll#
get_roll は、エンドエフェクタの現在のロール角を度単位で返します。
Usage:
arm.get_roll()
パラメータ |
説明 |
|---|---|
このメソッドにはパラメータがありません。 |
# Print the current roll of the end effector
brain.print(arm.get_roll())
get_yaw#
get_yaw エンドエフェクタの現在のヨー角を度単位で返します。
Usage:
arm.get_yaw()
パラメータ |
説明 |
|---|---|
このメソッドにはパラメータがありません。 |
# Print the current yaw of the end effector
brain.print(arm.get_yaw())
can_arm_reach_to#
can_arm_reach_to がcan_arm_reach_to 場合は 6 軸アームがエンドエフェクタを指定された x、y、z 座標に移動できるかどうかを返します。
move_to を使用する前に、このメソッドを使用してターゲット位置を確認します。
True— 6軸アームは要求された位置に到達できます。False— 6軸アームは要求された位置に到達できません。
Usage:
arm.can_arm_reach_to(x, y, z)
パラメータ |
説明 |
|---|---|
|
目標位置のx座標(ミリメートル単位)。 |
|
目標位置のy座標(ミリメートル単位)。 |
|
目標位置のz座標(ミリメートル単位)。 |
# Move the 6-Axis Arm to (100, -20, 50) if it can reach
if arm.can_arm_reach_to(100, -20, 50):
arm.move_to(100, -20, 50)
can_arm_reach_inc#
can_arm_reach_inc は、6軸アームがエンドエフェクタを現在の位置から指定されたx、y、z距離だけ移動できるかどうかを返します。
move_inc を使用する前に、この方法を使用して相対的な動きを確認します。
True— 6軸アームは要求された動作を実行できます。False— 6軸アームは要求された動作を実行できません。
Usage:
arm.can_arm_reach_inc(x, y, z)
パラメータ |
説明 |
|---|---|
|
x軸方向に移動する距離(ミリメートル単位)。 |
|
y軸方向に移動する距離(ミリメートル単位)。 |
|
z軸方向に移動する距離(ミリメートル単位)。 |
# Increment the 6-Axis Arm 100 mm along the x-axis if possible
if arm.can_arm_reach_inc(100, 0, 0):
arm.move_inc(100, 0, 0)
can_end_effector_reach_to#
can_end_effector_reach_to は、エンドエフェクタが指定されたヨー、ロール、ピッチ方向に回転できるかどうかを返します。
move_end_effector_to を使用する前に、この方法を使用してターゲットの向きを確認します。
True— エンドエフェクタは要求された向きに到達できます。False— エンドエフェクタが要求された向きに到達できません。
Usage:
arm.can_end_effector_reach_to(yaw, roll, pitch)
パラメータ |
説明 |
|---|---|
|
目標ヨー角(度)。 |
|
目標ロール角(度)。 |
|
目標ピッチ角(度)。 |
# Rotate the end effector to 90 degrees of roll if possible
if arm.can_end_effector_reach_to(0, 90, 0):
arm.move_end_effector_to(0, 90, 0)
can_end_effector_reach_inc#
can_end_effector_reach_inc は、エンドエフェクタが現在の向きから指定されたヨー、ロール、ピッチ量だけ回転できるかどうかを返します。
move_end_effector_inc を使用する前に、この方法を使用して相対的な方向移動を確認します。
True— エンドエフェクタは要求された回転を行うことができます。False— エンドエフェクタは要求された回転を行うことができません。
Usage:
arm.can_end_effector_reach_inc(yaw, roll, pitch)
パラメータ |
説明 |
|---|---|
|
ヨー角の変化(度数)。 |
|
ロール角の変化(度数)。 |
|
音程の変化(度数)。 |
# Increment the end effector by 10 degrees of pitch if possible
if arm.can_end_effector_reach_inc(0, 0, 10):
arm.move_end_effector_inc(0, 0, 10)
get_timeout#
get_timeout は、6軸アームの動作メソッドで使用されるタイムアウト値をミリ秒単位で返します。
Usage:
arm.get_timeout()
パラメータ |
説明 |
|---|---|
このメソッドにはパラメータがありません。 |
# Print the current movement timeout in milliseconds
brain.print(arm.get_timeout())
is_connected#
is_connected は、6軸アームが脳に接続されているかどうかを返します。
True— 6軸アームは脳に接続されています。False— 6軸アームは脳に接続されていません。
Usage:
arm.is_connected()
パラメータ |
説明 |
|---|---|
このメソッドにはパラメータがありません。 |
# Print whether the 6-Axis Arm is connected
brain.print(arm.is_connected())
コールバック#
control_stopped#
control_stopped コントロールストップが有効になったときに実行される関数を登録します。
このメソッドは、 Event クラスのインスタンスを返します。
Usage:
arm.control_stopped(callback, arg)
パラメータ |
説明 |
|---|---|
|
コントロールストップが有効になったときに実行される、事前に定義された関数。 |
|
オプション。コールバック関数に渡す引数を含むタプル。詳細については、パラメーター付き関数の使用を参照してください。 |
# Define a function to run when control stop is enabled
def when_control_stopped():
brain.print("The arm has been control stopped")
# Run when_control_stopped when the 6-Axis Arm is control stopped
arm.control_stopped(when_control_stopped)
建設業者#
Arm#
Arm 、6 軸アームオブジェクトを作成します。
Usage:
Arm()
パラメータ |
説明 |
|---|---|
このコンストラクタにはパラメータがありません。 |
# Construct a 6-Axis Arm named arm with the Arm class
arm = Arm()