CTE 팔#
소개#
arm 클래스는 CTE 워크셀에서 사용되는 6축 암을 제어합니다. VEX V5 C++에서 6축 암은 엔드 이펙터를 3차원 공간의 위치로 이동시키고, 회전시키고, 이동 가능 여부를 확인하고, 자석 픽업 툴이나 펜 홀더 툴과 같은 부착된 툴을 제어할 수 있습니다.
6축 로봇 팔은 VEXcode V5에서 장치로 구성되어 있지 않습니다. VEX V5 C++ 프로젝트에서 사용하려면 6축 로봇 팔이 연결된 스마트 포트를 사용하여 코드에서 수동으로 arm 객체를 생성해야 합니다.
이 페이지의 예제에서는 Arm 이라는 이름의 수동으로 제작된 6축 암을 사용합니다.
건설업자#
arm#
arm 6축 암 객체를 생성합니다.
사용 가능한 기능
arm(int32_t index);
매개변수 |
유형 |
설명 |
|---|---|---|
|
|
6축 암이 연결된 스마트 포트는 |
예
// Create a 6-Axis Arm named Arm on Port 1
arm Arm = arm(PORT1);
오물 소각로#
~arm#
~arm arm 객체를 파괴하고 관련 리소스를 해제합니다.
사용 가능한 기능
~arm();
회원 기능#
arm 클래스는 다음과 같은 멤버 함수를 포함합니다.
동작 — 6축 암을 원하는 위치 또는 방향으로 이동합니다.
moveTo— 엔드 이펙터를 지정된 x, y, z 좌표로 이동합니다.moveInc— 엔드 이펙터를 현재 위치에서 지정된 거리만큼 이동합니다.moveEndEffectorTo— 엔드 이펙터를 지정된 요, 롤 및 피치 방향으로 회전시킵니다.moveEndEffectorInc— 지정된 요, 롤 및 피치 양만큼 엔드 이펙터를 회전시킵니다.
변환기 — 이동, 도구 및 제어 설정을 구성합니다.
setSpeed— 6축 암에서 사용되는 이동 속도를 설정합니다.setEndEffectorType— 6축 암에 부착된 엔드 이펙터의 유형을 설정합니다.setEndEffectorMagnet— 자석 픽업 도구를 활성화 또는 비활성화합니다.setPenOffset— 펜 홀더 도구와 함께 사용되는 z축 오프셋을 설정합니다.setControlStop— 6축 암의 제어 정지를 활성화 또는 비활성화합니다.setTimeout— 6축 암 이동 기능에 사용되는 타임아웃을 설정합니다.
게터 — 동작 상태, 위치, 방향 및 연결 값을 반환합니다.
isDone— 6축 암이 이동을 완료했는지 여부를 반환합니다.isCrashed— 6축 암이 이동 중에 충돌했는지 여부를 반환합니다.getX— 엔드 이펙터의 현재 x 위치를 반환합니다.getY— 엔드 이펙터의 현재 y 위치를 반환합니다.getZ— 엔드 이펙터의 현재 z 위치를 반환합니다.getYaw— 엔드 이펙터의 현재 요(yaw)를 반환합니다.getRoll— 엔드 이펙터의 현재 롤을 반환합니다.getPitch— 엔드 이펙터의 현재 피치를 반환합니다.canArmReachTo— 6축 암이 지정된 위치에 도달할 수 있는지 여부를 반환합니다.canArmReachInc— 6축 암이 지정된 거리만큼 이동할 수 있는지 여부를 반환합니다.canEndEffectorReachTo— 엔드 이펙터가 지정된 방향에 도달할 수 있는지 여부를 반환합니다.canEndEffectorReachInc— 엔드 이펙터가 지정된 양만큼 회전할 수 있는지 여부를 반환합니다.isConnected— 6축 암이 V5 브레인에 연결되어 있는지 여부를 반환합니다.timestamp— 6축 암에서 마지막으로 수신된 상태 패킷의 타임스탬프를 반환합니다.installed— 6축 암이 연결되었는지 여부를 반환합니다.
콜백 함수 — ARM 이벤트 발생 시 함수를 실행합니다.
controlStopped— 제어 정지가 활성화될 때 실행될 함수를 등록합니다.crashed— 충돌이 감지될 때 실행될 함수를 등록합니다.
행위#
moveTo#
moveTo 6축 암을 지정된 x, y, z 좌표로 이동시킵니다.
x, y, z 좌표는 3차원 공간에서 엔드 이펙터의 위치를 나타냅니다. 대상 위치가 6축 암의 도달 가능한 작업 공간 외부에 있을 수 있는 경우 이 함수 앞에 canArmReachTo를 사용하십시오.
사용 가능한 기능
bool moveTo(
double x,
double y,
double z,
bool waitForCompletion = true
);
매개변수 |
유형 |
설명 |
|---|---|---|
|
|
목표 위치의 x 좌표(밀리미터 단위). |
|
|
목표 위치의 y 좌표(밀리미터 단위). |
|
|
목표 위치의 z 좌표(밀리미터 단위). |
|
|
선택 사항입니다. |
반환 값
불리언 값을 반환합니다.
true— 6축 로봇 팔이 목표 위치에 도달했습니다.false— 6축 암이 목표 위치에 도달하지 않았거나waitForCompletionfalse로 설정되었습니다.
예시
// Move the 6-Axis Arm to (200, 0, 100)
Arm.moveTo(200, 0, 100);
// Start moving, then print the y-position while the arm moves
Arm.moveTo(-100, 200, 100, false);
while (!Arm.isDone()) {
Brain.Screen.print(Arm.getY());
Brain.Screen.newLine();
wait(0.25, seconds);
}
moveInc#
moveInc 6축 암을 현재 위치에서 x, y, z축을 따라 지정된 거리만큼 이동시킵니다.
이 함수를 사용하여 엔드 이펙터가 현재 있는 위치를 기준으로 이동합니다. 이동으로 인해 6축 암이 도달 가능한 작업 공간 외부에 위치할 수 있는 경우 이 함수 앞에 canArmReachInc를 사용합니다.
사용 가능한 기능
bool moveInc(
double x,
double y,
double z,
bool waitForCompletion = true
);
매개변수 |
유형 |
설명 |
|---|---|---|
|
|
x축을 따라 이동할 거리(밀리미터). |
|
|
y축을 따라 이동할 거리(밀리미터). |
|
|
z축을 따라 이동할 거리(밀리미터). |
|
|
선택 사항입니다. |
반환 값
불리언 값을 반환합니다.
true— 6축 로봇 팔이 요청된 위치에 도달했습니다.false— 6축 암이 요청된 위치에 도달하지 않았거나waitForCompletionfalse로 설정되었습니다.
예
// Move the 6-Axis Arm 100 millimeters along the y-axis
Arm.moveInc(0, 100, 0);
moveEndEffectorTo#
moveEndEffectorTo 6축 암의 엔드 이펙터를 지정된 요, 롤 및 피치 방향으로 회전시킵니다.
방향은 엔드 이펙터의 회전 방향을 나타냅니다. yaw 은 z축을 중심으로 회전하고, roll x축을 중심으로 회전하며, pitch y축을 중심으로 회전합니다.
사용 가능한 기능
bool moveEndEffectorTo(
double yaw,
double roll = 0,
double pitch = 0,
bool waitForCompletion = true
);
매개변수 |
유형 |
설명 |
|---|---|---|
|
|
목표물의 요각(도 단위). |
|
|
선택 사항입니다. 목표 롤 각도(도). 기본값은 |
|
|
선택 사항입니다. 목표 피치 각도(도). 기본값은 |
|
|
선택 사항입니다. |
반환 값
불리언 값을 반환합니다.
true— 엔드 이펙터가 목표 방향에 도달했습니다.false— 엔드 이펙터가 목표 방향에 도달하지 않았거나waitForCompletionfalse로 설정되었습니다.
예
// Rotate the end effector to 90 degrees of roll
Arm.moveEndEffectorTo(0, 90, 0);
moveEndEffectorInc#
moveEndEffectorInc 6축 암의 엔드 이펙터를 현재 방향에서 지정된 요, 롤 및 피치 값만큼 회전시킵니다.
이 기능을 사용하여 엔드 이펙터의 현재 요, 롤 또는 피치에 대해 회전할 수 있습니다.
사용 가능한 기능
bool moveEndEffectorInc(
double yaw,
double roll = 0,
double pitch = 0,
bool waitForCompletion = true
);
매개변수 |
유형 |
설명 |
|---|---|---|
|
|
요(yaw)의 변화량(도). |
|
|
선택 사항입니다. 롤 변화량(도). 기본값은 |
|
|
선택 사항입니다. 음높이 변화량(도). 기본값은 |
|
|
선택 사항입니다. |
반환 값
불리언 값을 반환합니다.
true— 엔드 이펙터가 요청된 방향에 도달했습니다.false— 엔드 이펙터가 요청된 방향에 도달하지 않았거나waitForCompletionfalse로 설정되었습니다.
예
// Rotate the end effector -50 degrees in pitch
Arm.moveEndEffectorInc(0, 0, -50);
돌연변이체#
setSpeed#
setSpeed 6축 암에서 사용되는 이동 속도를 설정합니다.
사용 가능한 기능
void setSpeed(uint32_t speed);
매개변수 |
유형 |
설명 |
|---|---|---|
|
|
6축 로봇 팔이 움직여야 하는 속도(밀리미터/초). |
반환 값
이 함수는 값을 반환하지 않습니다.
예
// Set the 6-Axis Arm movement speed
Arm.setSpeed(100);
setEndEffectorType#
setEndEffectorType 은 6축 암에 부착되는 엔드 이펙터의 유형을 설정합니다.
엔드 이펙터 유형이 변경되면 6축 암은 선택된 공구에 맞춰 Z축 오프셋을 자동으로 조정합니다.
사용 가능한 기능
bool setEndEffectorType(
endEffectorType type,
bool waitForCompletion = true
);
매개변수 |
유형 |
설명 |
|---|---|---|
|
|
6축 암에 부착된 도구: |
|
|
선택 사항입니다. |
반환 값
불리언 값을 반환합니다.
true— 요청된 유형이 설정되었습니다.false— 요청된 유형이 설정되지 않았거나waitForCompletionfalse로 설정되었습니다.
예
// Set the end effector type to the Magnet Pickup Tool
Arm.setEndEffectorType(magnet);
setEndEffectorMagnet#
setEndEffectorMagnet 자석 픽업 도구를 활성화 또는 비활성화합니다.
사용 가능한 기능
void setEndEffectorMagnet(bool enabled);
매개변수 |
유형 |
설명 |
|---|---|---|
|
|
|
반환 값
이 함수는 값을 반환하지 않습니다.
예
// Pick up objects and then drop them
Arm.setEndEffectorType(magnet);
Arm.setEndEffectorMagnet(true);
wait(2, seconds);
Arm.setEndEffectorMagnet(false);
setPenOffset#
setPenOffset 펜 홀더 툴이 6축 암에 부착될 때 사용되는 z축 오프셋을 설정합니다.
이 기능을 사용하기 전에 엔드 이펙터 유형을 pen 로 설정하십시오. 펜 홀더 도구가 선택되지 않은 경우 이 기능은 작동하지 않습니다.
펜 오프셋은 펜 홀더 도구의 상단에서 화이트보드 마커 끝까지의 거리입니다. z 값이 양수이면 오프셋이 도구 장착 지점에서 위쪽으로 이동합니다.
사용 가능한 기능
void setPenOffset(double zOffset);
매개변수 |
유형 |
설명 |
|---|---|---|
|
|
펜 오프셋 값(밀리미터). |
반환 값
이 함수는 값을 반환하지 않습니다.
예
// Set the end effector type to the Pen Holder Tool and set the pen offset
Arm.setEndEffectorType(pen);
Arm.setPenOffset(25);
setControlStop#
setControlStop 6축 암의 제어 정지 기능을 활성화 또는 비활성화합니다.
제어 정지 기능이 활성화되면 6축 암은 즉시 움직임을 멈추고 추가적인 직선 또는 관절 움직임을 방지합니다.
사용 가능한 기능
void setControlStop(bool state = true);
매개변수 |
유형 |
설명 |
|---|---|---|
|
|
선택 사항입니다. |
반환 값
이 함수는 값을 반환하지 않습니다.
예
// Stop the 6-Axis Arm and prevent further movement
Arm.setControlStop();
setTimeout#
setTimeout 6축 암을 움직일 때 사용되는 타임아웃 값을 설정합니다.
만약 동작이 타임아웃 시간 내에 완료되지 않으면 프로젝트는 다음 코드 줄로 넘어갑니다.
사용 가능한 기능
void setTimeout(
int32_t timeout,
timeUnits units
);
매개변수 |
유형 |
설명 |
|---|---|---|
|
|
새로운 타임아웃 값입니다. |
|
|
시간 단위: |
반환 값
이 함수는 값을 반환하지 않습니다.
예
// Set the 6-Axis Arm timeout to 2 seconds
Arm.setTimeout(2, sec);
게터스#
isDone#
isDone 6축 암의 이동이 완료되었는지 여부를 반환합니다.
이 함수는 이동 함수가 호출 waitForCompletion false 으로 설정된 경우에 유용합니다.
사용 가능한 기능
bool isDone();
매개변수
이 함수는 매개변수를 받지 않습니다.
반환 값
불리언 값을 반환합니다.
true— 6축 암의 이동이 완료되었습니다.false— 6축 로봇 팔이 여전히 움직이고 있습니다.
예
// Display the 6-Axis Arm's y-position while it moves
Arm.moveTo(-100, 200, 100, false);
while (!Arm.isDone()) {
Brain.Screen.print(Arm.getY());
Brain.Screen.newLine();
wait(0.25, seconds);
}
isCrashed#
isCrashed 6축 암이 이동 중에 충돌했는지 여부를 반환합니다.
충돌이 감지되면 6축 암은 모터 움직임을 멈추고 마치 힘이 빠진 것처럼 보일 수 있습니다. 이는 부하를 줄이고 모터가 우발적인 손상을 입는 것을 방지하는 데 도움이 됩니다.
사용 가능한 기능
bool isCrashed();
매개변수
이 함수는 매개변수를 받지 않습니다.
반환 값
불리언 값을 반환합니다.
true— 6축 암이 고장났습니다.false— 6축 암이 충돌하지 않았습니다.
예
// Quickly move to a new location
Arm.setSpeed(100);
Arm.moveTo(-40, 250, 40, false);
// While moving, check for a crash
while (true) {
if (Arm.isCrashed()) {
// Indicate a crash with the Brain screen
Brain.Screen.print("Crash Detected");
break;
}
wait(5, msec);
}
getX#
getX 엔드 이펙터의 현재 x 위치를 밀리미터 단위로 반환합니다.
이 함수를 사용하여 엔드 이펙터가 현재 x축을 따라 어디에 위치하는지 읽을 수 있습니다.
사용 가능한 기능
float getX();
매개변수
이 함수는 매개변수를 받지 않습니다.
반환 값
엔드 이펙터의 x 위치를 밀리미터 단위로 나타내는 float 사이의 부동 소수점 값을 반환합니다.
예
// Print the current x position of the 6-Axis Arm
Brain.Screen.print(Arm.getX());
getY#
getY 엔드 이펙터의 현재 y 위치를 밀리미터 단위로 반환합니다.
이 함수를 사용하여 엔드 이펙터가 현재 y축을 따라 어디에 위치하는지 읽을 수 있습니다.
사용 가능한 기능
float getY();
매개변수
이 함수는 매개변수를 받지 않습니다.
반환 값
엔드 이펙터의 y 위치를 밀리미터 단위로 나타내는 float 의 부동 소수점 값을 반환합니다.
예
// Print the current y position of the 6-Axis Arm
Brain.Screen.print(Arm.getY());
getZ#
getZ 엔드 이펙터의 현재 z 위치를 밀리미터 단위로 반환합니다.
이 함수를 사용하여 엔드 이펙터가 현재 z축을 따라 어디에 위치하는지 읽을 수 있습니다.
사용 가능한 기능
float getZ();
매개변수
이 함수는 매개변수를 받지 않습니다.
반환 값
엔드 이펙터의 z 위치를 밀리미터 단위로 나타내는 float 사이의 부동 소수점 값을 반환합니다.
예
// Print the current z position of the 6-Axis Arm
Brain.Screen.print(Arm.getZ());
getYaw#
getYaw 엔드 이펙터의 현재 요(yaw) 값을 도 단위로 반환합니다.
사용 가능한 기능
float getYaw();
매개변수
이 함수는 매개변수를 받지 않습니다.
반환 값
Returns a float representing the current yaw of the end effector in degrees.
예
// Print the current yaw of the end effector
Brain.Screen.print(Arm.getYaw());
getRoll#
getRoll 엔드 이펙터의 현재 롤 값을 도 단위로 반환합니다.
사용 가능한 기능
float getRoll();
매개변수
이 함수는 매개변수를 받지 않습니다.
반환 값
엔드 이펙터의 현재 롤 값을 도 단위로 나타내는 float 을 반환합니다.
예
// Print the current roll of the end effector
Brain.Screen.print(Arm.getRoll());
getPitch#
getPitch 엔드 이펙터의 현재 피치를 도 단위로 반환합니다.
사용 가능한 기능
float getPitch();
매개변수
이 함수는 매개변수를 받지 않습니다.
반환 값
엔드 이펙터의 현재 피치를 도 단위로 나타내는 float 을 반환합니다.
예
// Print the current pitch of the end effector
Brain.Screen.print(Arm.getPitch());
canArmReachTo#
canArmReachTo 의 경우 6축 암이 엔드 이펙터를 지정된 x, y, z 좌표로 이동할 수 있는지 여부를 반환합니다.
moveTo를 사용하기 전에 이 함수를 사용하여 대상 위치를 확인합니다.
사용 가능한 기능
bool canArmReachTo(
double x,
double y,
double z
);
매개변수 |
유형 |
설명 |
|---|---|---|
|
|
목표 위치의 x 좌표(밀리미터 단위). |
|
|
목표 위치의 y 좌표(밀리미터 단위). |
|
|
목표 위치의 z 좌표(밀리미터 단위). |
반환 값
불리언 값을 반환합니다.
true— 6축 로봇 팔은 요청된 위치에 도달할 수 있습니다.false— 6축 로봇 팔이 요청된 위치에 도달할 수 없습니다.
예
// Move the 6-Axis Arm to (100, -20, 50) if it can reach
if (Arm.canArmReachTo(100, -20, 50)) {
Arm.moveTo(100, -20, 50);
}
canArmReachInc#
canArmReachInc 은 6축 암이 현재 위치에서 지정된 x, y, z 거리만큼 엔드 이펙터를 이동할 수 있는지 여부를 반환합니다.
moveInc를 사용하기 전에 상대적 움직임을 확인하려면 이 함수를 사용하십시오.
사용 가능한 기능
bool canArmReachInc(
double x,
double y,
double z
);
매개변수 |
유형 |
설명 |
|---|---|---|
|
|
x축을 따라 이동할 거리(밀리미터). |
|
|
y축을 따라 이동할 거리(밀리미터). |
|
|
z축을 따라 이동할 거리(밀리미터). |
반환 값
불리언 값을 반환합니다.
true— 6축 암은 요청된 움직임을 수행할 수 있습니다.false— 6축 암이 요청된 움직임을 수행할 수 없습니다.
예
// Increment the 6-Axis Arm 100 mm along the x-axis if possible
if (Arm.canArmReachInc(100, 0, 0)) {
Arm.moveInc(100, 0, 0);
}
canEndEffectorReachTo#
canEndEffectorReachTo 은 엔드 이펙터가 지정된 요, 롤 및 피치 방향으로 회전할 수 있는지 여부를 반환합니다.
moveEndEffectorTo를 사용하기 전에 대상 방향을 확인하려면 이 함수를 사용하십시오.
사용 가능한 기능
bool canEndEffectorReachTo(
double yaw,
double roll = 0,
double pitch = 0
);
매개변수 |
유형 |
설명 |
|---|---|---|
|
|
목표물의 요각(도 단위). |
|
|
선택 사항입니다. 목표 롤 각도(도). 기본값은 |
|
|
선택 사항입니다. 목표 피치 각도(도). 기본값은 |
반환 값
불리언 값을 반환합니다.
true— 엔드 이펙터가 요청된 방향으로 도달할 수 있습니다.false— 엔드 이펙터가 요청된 방향에 도달할 수 없습니다.
예
// Rotate the end effector to 90 degrees of roll if possible
if (Arm.canEndEffectorReachTo(0, 90, 0)) {
Arm.moveEndEffectorTo(0, 90, 0);
}
canEndEffectorReachInc#
canEndEffectorReachInc 은 엔드 이펙터가 현재 방향에서 지정된 요, 롤 및 피치 양만큼 회전할 수 있는지 여부를 반환합니다.
moveEndEffectorInc를 사용하기 전에 상대 방향 이동을 확인하려면 이 함수를 사용하십시오.
사용 가능한 기능
bool canEndEffectorReachInc(
double yaw,
double roll = 0,
double pitch = 0
);
매개변수 |
유형 |
설명 |
|---|---|---|
|
|
요(yaw)의 변화량(도). |
|
|
선택 사항입니다. 롤 변화량(도). 기본값은 |
|
|
선택 사항입니다. 음높이 변화량(도). 기본값은 |
반환 값
불리언 값을 반환합니다.
true— 엔드 이펙터가 요청된 회전을 수행할 수 있습니다.false— 엔드 이펙터가 요청된 회전을 수행할 수 없습니다.
예
// Increment the end effector by 10 degrees of pitch if possible
if (Arm.canEndEffectorReachInc(0, 0, 10)) {
Arm.moveEndEffectorInc(0, 0, 10);
}
isConnected#
isConnected 6축 로봇 팔이 V5 브레인에 연결되어 있는지 여부를 반환합니다.
이것은 installed과 동일한 값을 반환하는 호환성 함수입니다.
사용 가능한 기능
bool isConnected();
매개변수
이 함수는 매개변수를 받지 않습니다.
반환 값
불리언 값을 반환합니다.
true— 6축 로봇 팔은 V5 브레인에 연결되어 있습니다.false— 6축 로봇 팔은 V5 브레인에 연결되어 있지 않습니다.
예
// Print whether the 6-Axis Arm is connected
Brain.Screen.print(Arm.isConnected());
timestamp#
timestamp 6축 암에서 마지막으로 수신된 상태 패킷의 타임스탬프를 반환합니다.
사용 가능한 기능
uint32_t timestamp();
매개변수
이 함수는 매개변수를 받지 않습니다.
반환 값
마지막 상태 패킷의 타임스탬프를 밀리초 단위의 uint32_t 으로 반환합니다.
installed#
installed 6축 암이 연결되었는지 여부를 반환합니다.
사용 가능한 기능
bool installed();
매개변수
이 함수는 매개변수를 받지 않습니다.
반환 값
불리언 값을 반환합니다.
true— 6축 암이 연결되었습니다.false— 6축 암이 연결되지 않았습니다.
콜백#
controlStopped#
controlStopped 제어 정지가 활성화될 때 실행되는 함수를 등록합니다.
사용 가능한 기능
void controlStopped(void (* callback)(void));
매개변수 |
유형 |
설명 |
|---|---|---|
|
|
제어 정지 기능이 활성화될 때 실행되는 함수입니다. |
반환 값
이 함수는 값을 반환하지 않습니다.
예
// Called when the 6-Axis Arm is control stopped
void onControlStopped() {
Brain.Screen.print("Arm control stopped");
}
int main() {
Arm.controlStopped(onControlStopped);
}
crashed#
crashed 축 로봇 팔이 이동 중에 충돌했을 때 실행되는 함수를 등록합니다.
충돌이 감지되면 6축 암은 모터 움직임을 멈추고 마치 힘이 빠진 것처럼 보일 수 있습니다. 이는 부하를 줄이고 모터가 우발적인 손상을 입는 것을 방지하는 데 도움이 됩니다.
사용 가능한 기능
void crashed(void (* callback)(void));
매개변수 |
유형 |
설명 |
|---|---|---|
|
|
6축 로봇 팔이 이동 중에 충돌했을 때 실행되는 함수입니다. |
반환 값
이 함수는 값을 반환하지 않습니다.
예
// Called when the 6-Axis Arm crashes while moving
void onArmCrashed() {
Brain.Screen.print("Crash detected");
}
int main() {
Arm.crashed(onArmCrashed);
}