2.2 Motion, Program, Register, Trajectory 타입
이 페이지는 C++17 인터페이스에 직접 노출되는 업무 데이터 구조를 정리합니다. 필드와 열거형 값은 SDK 패키지 헤더 파일을 기준으로 하며, 표의 "사용 진입점"은 해당 타입이 일반적으로 어떤 인터페이스에 나타나는지를 설명합니다.
MotionPose / PostureInfo
헤더 파일: include/motion_types.h
MotionPose 는 모션 관련 인터페이스가 공통으로 사용하는 포즈 구조체입니다. 관절 포즈와 직교 좌표 포즈를 모두 표현할 수 있으며, 어떤 데이터 그룹을 사용할지는 poseType 이 결정합니다.
일반적인 사용 진입점:
MotionControl::GetCurrentPose()MotionControl::ConvertJointToCart()/MotionControl::ConvertCartToJoint()MotionControl::MoveJoint()/MotionControl::MoveLine()/MotionControl::MoveCircle()ProgramManager::PoseRead()/ProgramManager::PoseWrite()RegisterBank::ReadPR()/RegisterBank::WritePR()
모션 관련 열거형
이 열거형은 포즈 표현 방식, 모션 방식, 티칭 좌표계 타입을 지정하는 데 사용됩니다.
| 열거형 | 값 | 설명 |
|---|---|---|
PoseType::JOINT | 0 | MotionPose 가 joint 필드로 관절 포즈를 표현 |
PoseType::CART | 1 | MotionPose 가 cartesian 필드로 직교 좌표 포즈를 표현 |
MoveType::MOVE_JOINT | 1 | 관절 모션 |
MoveType::MOVE_LINE | 2 | 직선 모션 |
MoveType::MOVE_CIRCLE | 3 | 원호 모션 |
TCSType::JOINT | 0 | 티칭 좌표계: 관절 |
TCSType::BASE | 1 | 티칭 좌표계: 기준 좌표계 |
TCSType::WORLD | 2 | 티칭 좌표계: 월드 좌표계 |
TCSType::USER | 3 | 티칭 좌표계: 사용자 좌표계 |
TCSType::TOOL | 4 | 티칭 좌표계: 도구 좌표계 |
TCSType::RTCP_USER | 5 | 티칭 좌표계: RTCP 사용자 좌표계 |
TCSType::RTCP_TOOL | 6 | 티칭 좌표계: RTCP 도구 좌표계 |
PostureInfo
PostureInfo 는 직교 좌표 포즈에 대응하는 자세 추가 정보를 저장합니다. 관절 포즈에서는 보통 수동으로 채울 필요가 없습니다. 직교 좌표 모션이나 직교 좌표에서 관절로 변환하는 등의 시나리오에서는 다중 해의 모호성을 제거하기 위해 필요할 수 있습니다.
| 필드 | 타입 | 기본값 | 설명 |
|---|---|---|---|
turnCycle | std::array<int32_t, 9> | 모두 0 | 9축 회전 사이클 수 |
wristFlip | int32_t | -1 | 손목 플립 상태 |
armUpDown | int32_t | -1 | 상완 상하 상태 |
armBackFront | int32_t | -1 | 상완 전후 상태 |
armLeftRight | int32_t | -1 | 상완 좌우 상태 |
MotionPose
cartesian 의 외부 필드 순서는 X, Y, Z, A, B, C 로 통일되어 있습니다. 호출자는 이 순서대로 채우면 되며, 프로토콜 적응은 SDK가 처리합니다.
| 필드 | 타입 | 기본값 | 설명 |
|---|---|---|---|
poseType | PoseType | PoseType::JOINT | 현재 포즈를 관절 또는 직교 좌표 중 어느 방식으로 해석할지 결정 |
joint | std::vector<Float64> | 비어 있음 | 관절 값 목록. 모션 인터페이스는 최소 앞 6개 관절 값을 검사합니다. |
cartesian | std::vector<Float64> | 비어 있음 | 직교 좌표 포즈. 순서는 X, Y, Z, A, B, C |
posture | PostureInfo | 기본 자세 | 직교 좌표 포즈의 자세 추가 정보 |
hasPosture | bool | false | posture 가 유효한지 표시 |
DHParam / SoftLimit / DragStatus / PayloadInfo
헤더 파일: include/motion_types.h
이 구조체는 MotionControl 아래의 파라미터, 드래그, 페이로드 인터페이스에서 사용됩니다.
DHParam
DHParam 은 DH 파라미터 집합을 나타내며, 사용 진입점은 MotionControl::GetDHParam() / MotionControl::SetDHParam() 입니다.
| 필드 | 타입 | 기본값 | 설명 |
|---|---|---|---|
id | int32_t | -1 | DH 파라미터 번호 |
d | Float64 | 0.0 | DH 파라미터 d |
a | Float64 | 0.0 | DH 파라미터 a |
alpha | Float64 | 0.0 | DH 파라미터 alpha |
offset | Float64 | 0.0 | DH 파라미터 오프셋 |
SoftLimit
SoftLimit 은 소프트 리밋 구간을 나타내며, 사용 진입점은 MotionControl::GetUserSoftLimit() 입니다.
| 필드 | 타입 | 기본값 | 설명 |
|---|---|---|---|
negative | Float64 | 0.0 | 음의 방향 리밋 |
positive | Float64 | 0.0 | 양의 방향 리밋 |
DragStatus
DragStatus 는 드래그 관련 스위치 상태를 나타내며, 사용 진입점은 MotionControl::GetDragStatus() / MotionControl::SetDragStatus() 입니다.
| 필드 | 타입 | 기본값 | 설명 |
|---|---|---|---|
cartStatus | std::array<int32_t, 6> | 모두 0 | 직교 좌표 6차원 드래그 상태 |
jointStatus | std::array<int32_t, 9> | 모두 0 | 9축 관절 드래그 상태 |
isContinuousDrag | bool | false | 연속 드래그 여부 |
PayloadInfo / PayloadSummary
PayloadInfo 는 완전한 페이로드 구성 한 건을 나타내고, PayloadSummary 는 페이로드 목록의 요약 항목을 나타냅니다. 사용 진입점은 MotionControl::payload 아래에 있으며, 예를 들면 GetById() , Add() , Update() , GetAll() , Identify() 입니다.
| 타입 | 필드 | 타입 | 기본값 | 설명 |
|---|---|---|---|---|
PayloadInfo | id | int32_t | 0 | 페이로드 번호 |
PayloadInfo | comment | std::string | 비어 있음 | 페이로드 비고 |
PayloadInfo | weight | Float64 | 0.0 | 페이로드 중량 |
PayloadInfo | massCenter | std::array<Float64, 3> | 모두 0.0 | 질량 중심 좌표 |
PayloadInfo | inertiaMoment | std::array<Float64, 3> | 모두 0.0 | 관성 파라미터 |
PayloadSummary | id | int32_t | 0 | 페이로드 번호 |
PayloadSummary | comment | std::string | 비어 있음 | 페이로드 비고 |
PayloadIdentifyState
PayloadIdentifyState 는 페이로드 측정 절차 상태이며, 사용 진입점은 MotionControl::payload.GetIdentifyState() 입니다.
| 열거형 | 값 | 설명 |
|---|---|---|
PayloadIdentifyState::WRONG_DATA | -1 | 상태 데이터가 유효하지 않거나 파싱 실패 |
PayloadIdentifyState::PAYLOAD_CHECK_INIT | 0 | 페이로드 검사 초기화 |
PayloadIdentifyState::PAYLOAD_CHECK_RUNNING | 1 | 페이로드 검사 실행 중 |
PayloadIdentifyState::PAYLOAD_CHECK_SUCCESS | 2 | 페이로드 검사 성공 |
PayloadIdentifyState::PAYLOAD_CHECK_FAILED | 3 | 페이로드 검사 실패 |
PayloadIdentifyState::PAYLOAD_IDENTIFY_INIT | 4 | 페이로드 측정 초기화 |
PayloadIdentifyState::PAYLOAD_IDENTIFY_RUNNING | 5 | 페이로드 측정 실행 중 |
PayloadIdentifyState::PAYLOAD_IDENTIFY_SUCCESS | 6 | 페이로드 측정 성공 |
PayloadIdentifyState::PAYLOAD_IDENTIFY_FAILED | 7 | 페이로드 측정 실패 |
ProgramPose / RunningProgramInfo
헤더 파일: include/program_types.h
ProgramPose 는 프로그램 포즈의 데이터 구조체이고, RunningProgramInfo 는 현재 실행 중인 프로그램 목록의 단일 항목입니다.
ProgramType
ProgramType 은 프로그램 포즈 인터페이스가 조작하는 대상이 사용자 프로그램인지 블록 프로그램인지 구분하는 데 사용됩니다.
| 열거형 값 | 값 | 설명 |
|---|---|---|
ProgramType::USER | 0 | 사용자 프로그램 |
ProgramType::BLOCK | 1 | 블록 프로그램 |
RunningProgramInfo
RunningProgramInfo 는 현재 실행 중인 프로그램 인스턴스 하나를 나타냅니다.
사용 진입점: ProgramManager::AllRunningPrograms() .
| 필드 | 타입 | 기본값 | 설명 |
|---|---|---|---|
threadId | int32_t | 0 | 실행 프로그램의 스레드 ID |
programName | std::string | 비어 있음 | 프로그램 이름 |
xpath | std::string | 비어 있음 | 프로그램 경로 |
programStatus | int32_t | 0 | 컨트롤러가 반환한 프로그램 상태 코드 |
programType | std::string | 비어 있음 | 컨트롤러가 반환한 프로그램 타입 문자열 |
ProgramPose
ProgramPose 는 프로그램 파일의 포즈 레코드 하나를 나타냅니다.
사용 진입점: ProgramManager::PoseRead() , PoseWrite() , PoseAdd() , PoseReadAll() , PoseWriteBatch() , PoseConvert() .
| 필드 | 타입 | 기본값 | 설명 |
|---|---|---|---|
id | int32_t | -1 | 포즈 번호 |
name | std::string | 비어 있음 | 포즈 이름 |
comment | std::string | 비어 있음 | 포즈 비고 |
pose | MotionPose | 기본 포즈 | 포즈에 대응하는 모션 포즈 |
uf | int32_t | 0 | 사용자 좌표계 번호 |
tf | int32_t | 0 | 도구 좌표계 번호 |
PoseRegister / PoseRegisterData
헤더 파일: include/register_types.h
PoseRegister 는 PR 포즈 레지스터 구조체이며, 사용 진입점은 RegisterBank::ReadPR() / RegisterBank::WritePR() 입니다.
PoseRegisterData
PoseRegisterData 는 PR 포즈 레지스터에 저장된 포즈 데이터를 나타냅니다.
| 필드 | 타입 | 기본값 | 설명 |
|---|---|---|---|
cart | std::array<Float64, 6> | 모두 0 | 직교 좌표 포즈 |
joint | std::array<Float64, 9> | 모두 0 | 9축 관절 값 |
pt | PoseType | PoseType::JOINT | 현재 PR을 관절 또는 직교 좌표 중 어느 방식으로 해석할지 결정 |
posture | PostureInfo | 기본 자세 | PR 자세 추가 정보 |
PoseRegister
PoseRegister 는 완전한 PR 포즈 레지스터 항목 하나를 나타냅니다.
| 필드 | 타입 | 기본값 | 설명 |
|---|---|---|---|
id | int32_t | 0 | PR 레지스터 번호 |
poseRegisterData | PoseRegisterData | 기본 데이터 | PR 포즈 데이터 |
name | std::string | 비어 있음 | PR 이름 |
comment | std::string | 비어 있음 | PR 비고 |
Register / MotionRegister / StringRegister
헤더 파일: include/register_types.h
이 세 구조체는 레지스터 데이터의 공통 구조체 정의입니다. 현재 C++17의 RegisterBank 인터페이스 모듈은 주로 값을 직접 반환합니다. ReadR() 은 Float64 , ReadMR() / ReadMH() / ReadMI() 는 int32_t , ReadSR() 은 std::string , ReadPR() 은 PoseRegister 를 반환합니다.
| 타입 | 필드 | 타입 | 기본값 | 설명 |
|---|---|---|---|---|
Register | id | int32_t | -1 | R 레지스터 번호 |
Register | value | Float64 | 0.0 | R 레지스터 값 |
Register | name | std::string | 비어 있음 | R 레지스터 이름 |
Register | comment | std::string | 비어 있음 | R 레지스터 비고 |
MotionRegister | id | int32_t | -1 | MR 레지스터 번호 |
MotionRegister | value | int32_t | 0 | MR 레지스터 값 |
MotionRegister | name | std::string | 비어 있음 | MR 레지스터 이름 |
MotionRegister | comment | std::string | 비어 있음 | MR 레지스터 비고 |
StringRegister | id | int32_t | -1 | SR 레지스터 번호 |
StringRegister | value | std::string | 비어 있음 | SR 레지스터 값 |
StringRegister | name | std::string | 비어 있음 | SR 레지스터 이름 |
StringRegister | comment | std::string | 비어 있음 | SR 레지스터 비고 |
FileType / FileInfo
헤더 파일: include/file_manager_types.h
FileType 은 ControllerFileManager::Upload() , Download() , Delete() 등의 인터페이스에서 사용하는 파일 타입 문자열 상수입니다. FileInfo 는 ControllerFileManager::Search() 의 반환 항목입니다.
FileType
FileType 은 파일 관리 인터페이스에서 사용하는 파일 분류 상수입니다.
| 상수 | 값 | 설명 |
|---|---|---|
FileType::TRAJECTORY | "Trajectory" | 궤적 파일 |
FileType::USER_PROGRAM | "UserProgram" | 사용자 프로그램 파일 |
FileType::BLOCK_PROGRAM | "BlockProgram" | 블록 프로그램 파일 |
FileType::TRAJECTORY_CSV | "TrajectoryCsv" | CSV 궤적 파일 |
FileType::ROBOT_TMP | "RobotTmp" | 컨트롤러 임시 파일 |
FileType::FLY_SHOT | "FlyShot" | 플라잉 샷 관련 파일 |
FileInfo
FileInfo 는 파일 검색 결과의 파일 항목 하나를 나타냅니다.
| 필드 | 타입 | 기본값 | 설명 |
|---|---|---|---|
name | std::string | 비어 있음 | 파일 이름 |
created_at | std::string | 비어 있음 | 생성 시간 문자열 |
TransformStatusEnum / CartesianPosition / TrajectorySegment
헤더 파일: include/trajectory_types.h
이 타입은 오프라인 궤적, 경로 궤적, 실시간 궤적 인터페이스에서 사용됩니다.
TransformStatusEnum
TransformStatusEnum 은 오프라인 궤적 변환 작업의 현재 상태를 나타냅니다.
사용 진입점: TrajectoryManager::CheckTransformStatus() .
| 열거형 값 | 값 | 설명 |
|---|---|---|
TransformStatusEnum::IDLE | 0 | 대기 |
TransformStatusEnum::RUNNING | 1 | 변환 실행 중 |
TransformStatusEnum::SUCCESS | 2 | 변환 성공 |
TransformStatusEnum::FAILED | 3 | 변환 실패 |
TransformStatusEnum::NOT_FOUND | 4 | 작업이 존재하지 않음 |
TransformStatusEnum::UNKNOWN | 5 | 알 수 없는 상태 |
CartesianPosition
CartesianPosition 은 직교 좌표 위치 하나를 나타내며, 외부 필드 순서는 X, Y, Z, A, B, C 입니다. 호출자는 이 순서대로 채우면 되며, 프로토콜 적응은 SDK가 처리합니다.
| 필드 | 타입 | 기본값 | 설명 |
|---|---|---|---|
x | Float64 | 0.0 | X 좌표 |
y | Float64 | 0.0 | Y 좌표 |
z | Float64 | 0.0 | Z 좌표 |
a | Float64 | 0.0 | RX 회전 |
b | Float64 | 0.0 | RY 회전 |
c | Float64 | 0.0 | RZ 회전 |
TrajectorySegment
TrajectorySegment 는 실시간 궤적 전송에 사용하는 궤적 세그먼트 래퍼 클래스이며, 궤적점, 순번, 타임스탬프, 직렬화 관련 인터페이스를 제공합니다.
SetPointList() / GetPointList()
SetTotalPoints() / GetTotalPoints()
SetSeq() / GetSeq()
SetLastFragment() / GetLastFragment()
SetTimestamp() / GetTimestampSec() / GetTimestampNsec()
Serialize() / Deserialize()| 메서드 | 설명 |
|---|---|
SetPointList | 궤적점 목록 설정 또는 읽기 |
SetTotalPoints | 총 점 수 설정 또는 읽기 |
SetSeq | 세그먼트 순번 설정 또는 읽기 |
SetLastFragment | 마지막 세그먼트 여부 설정 또는 읽기 |
SetTimestamp | 타임스탬프 설정 또는 읽기 |
Serialize | protobuf 직렬화 및 역직렬화 |
ROBOT_TOPIC_TYPE
ROBOT_TOPIC_TYPE 은 std::string 별칭이며, RobotTopicType 네임스페이스 아래에 구독 topic 상수가 제공됩니다. 사용 진입점은 TopicPubSub::SubscribeStatus() 입니다.
| 상수 | 값 | 설명 |
|---|---|---|
RobotTopicType::JOINT_POSITION | "/publish/motion_control/axis_group/feedback/joints" | 관절 위치 피드백 |
RobotTopicType::CARTESIAN_POSITION | "/publish/motion_control/axis_group/feedback/tcp_current_cartesian" | 현재 도구 좌표계의 직교 좌표 포즈 피드백 |
RobotTopicType::TCP_WORLD_CARTESIAN | "/publish/motion_control/axis_group/feedback/tcp_world_cartesian" | 월드 좌표계의 직교 좌표 포즈 피드백 |
RobotTopicType::TCP_BASE_CARTESIAN | "/publish/motion_control/axis_group/feedback/tcp_base_cartesian" | 기준 좌표계의 직교 좌표 포즈 피드백 |
RobotTopicType::USER_FRAME | "/publish/motion_control/axis_group/current_coordinate" | 현재 사용자 좌표계 번호 |
RobotTopicType::TOOL_FRAME | "/publish/motion_control/axis_group/current_tool" | 현재 도구 좌표계 번호 |
RobotTopicType::VELOCITY_RATIO | "/publish/motion_control/global_vel_ratio" | 전역 속도 백분율 |
RobotTopicType::GLOBAL_ACC_RATIO | "/publish/motion_control/global_acc_ratio" | 전역 가속도 백분율 |
RobotTopicType::CALIBRATE_STATUS | "/publish/motion_control/calibrate_status" | 축 그룹 보정 상태 |
RobotTopicType::TRAJECTORY_RECORD | "/publish/motion_control/rc_traj_records_status" | 궤적 기록 상태 |
RobotTopicType::RUNNING_STATUS | "/publish/controller/RunningStatus" | 컨트롤러 실행 상태 |
RobotTopicType::INTERPRETER_STATUS | "/publish/controller/InterpreterStatus" | 인터프리터 상태 |
RobotTopicType::ROBOT_STATUS | "/publish/controller/RobotStatus" | 로봇 전체 상태 |
RobotTopicType::CTRL_STATUS | "/publish/controller/CtrlStatus" | 제어 상태 |
RobotTopicType::SERVO_STATUS | "/publish/controller/ServoStatus" | 서보 상태 |
RobotTopicType::USER_OP_MODE | "/publish/controller/UserOpMode" | 사용자 작업 모드 |
RobotTopicType::SOFT_OP_MODE | "/publish/controller/SoftOpMode" | 소프트 작업 모드 |
RobotTopicType::OPERATION_STATUS | "/publish/controller/OperationStatus" | 작업 상태 |
RobotTopicType::PERFORMANCE_GEAR | "/publish/controller/PerformanceGear" | 성능 단계 |
RobotTopicType::POWER_STATUS | "/publish/controller/PowerStatus" | 전원 상태 |
RobotTopicType::POWER_ON_STATUS | "/publish/controller/power_on_status" | 전원 켜짐 상태 |
RobotTopicType::SAFETY_ALARM | "/publish/controller/SafetyAlarm" | 안전 알람 |
RobotTopicType::SAFETY_PLANE_STATUS | "/publish/controller/safetyPlaneStatus" | 안전 평면 상태 |
RobotTopicType::TOOL_POSTURE_LIMIT_STATUS | "/publish/controller/tool_posture_limit_status" | 도구 자세 제한 상태 |
RobotTopicType::JOINTS_RECORD | "/publish/controller/joints_record" | 관절 기록 |
RobotTopicType::TP_PROGRAM_STATUS | "/publish/interpreter/tp_program_status" | TP 프로그램 실행 상태 |
REG_TOPIC_TYPE
REG_TOPIC_TYPE 은 std::string 별칭이며, RegTopicType 네임스페이스 아래에 레지스터 구독 타입이 제공됩니다. 사용 진입점은 TopicPubSub::SubscribeRegister() 입니다.
| 상수 | 값 | 설명 |
|---|---|---|
RegTopicType::R | "R" | 숫자 레지스터 |
RegTopicType::MR | "MR" | 모션 레지스터 |
RegTopicType::SR | "SR" | 문자열 레지스터 |
RegTopicType::PR | "PR" | 포즈 레지스터 |
IO_TOPIC_TYPE
IO_TOPIC_TYPE 은 std::string 별칭이며, IOTopicType 네임스페이스 아래에 IO 구독 타입이 제공됩니다. 사용 진입점은 TopicPubSub::SubscribeIo() 이며, 각 구독 항목은 {IO 타입, 포트 번호} 입니다.
| 상수 | 값 | 설명 |
|---|---|---|
IOTopicType::DI | "DI" | 디지털 입력 |
IOTopicType::DO | "DO" | 디지털 출력 |
IOTopicType::GI | "GI" | 그룹 입력 |
IOTopicType::GO | "GO" | 그룹 출력 |
IOTopicType::RI | "RI" | 원격 제어 입력 |
IOTopicType::RO | "RO" | 원격 제어 출력 |
IOTopicType::UI | "UI" | 전용 입력 |
IOTopicType::UO | "UO" | 전용 출력 |
IOTopicType::TDI | "TDI" | 손목 디지털 입력 |
IOTopicType::TDO | "TDO" | 손목 디지털 출력 |
IOTopicType::TAI | "TAI" | 손목 아날로그 입력 |
IOTopicType::AI | "AI" | 아날로그 입력 |
IOTopicType::AO | "AO" | 아날로그 출력 |