Skip to content

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::JOINT0MotionPosejoint 필드로 관절 포즈를 표현
PoseType::CART1MotionPosecartesian 필드로 직교 좌표 포즈를 표현
MoveType::MOVE_JOINT1관절 모션
MoveType::MOVE_LINE2직선 모션
MoveType::MOVE_CIRCLE3원호 모션
TCSType::JOINT0티칭 좌표계: 관절
TCSType::BASE1티칭 좌표계: 기준 좌표계
TCSType::WORLD2티칭 좌표계: 월드 좌표계
TCSType::USER3티칭 좌표계: 사용자 좌표계
TCSType::TOOL4티칭 좌표계: 도구 좌표계
TCSType::RTCP_USER5티칭 좌표계: RTCP 사용자 좌표계
TCSType::RTCP_TOOL6티칭 좌표계: RTCP 도구 좌표계

PostureInfo

PostureInfo 는 직교 좌표 포즈에 대응하는 자세 추가 정보를 저장합니다. 관절 포즈에서는 보통 수동으로 채울 필요가 없습니다. 직교 좌표 모션이나 직교 좌표에서 관절로 변환하는 등의 시나리오에서는 다중 해의 모호성을 제거하기 위해 필요할 수 있습니다.

필드타입기본값설명
turnCyclestd::array<int32_t, 9>모두 09축 회전 사이클 수
wristFlipint32_t-1손목 플립 상태
armUpDownint32_t-1상완 상하 상태
armBackFrontint32_t-1상완 전후 상태
armLeftRightint32_t-1상완 좌우 상태

MotionPose

cartesian 의 외부 필드 순서는 X, Y, Z, A, B, C 로 통일되어 있습니다. 호출자는 이 순서대로 채우면 되며, 프로토콜 적응은 SDK가 처리합니다.

필드타입기본값설명
poseTypePoseTypePoseType::JOINT현재 포즈를 관절 또는 직교 좌표 중 어느 방식으로 해석할지 결정
jointstd::vector<Float64>비어 있음관절 값 목록. 모션 인터페이스는 최소 앞 6개 관절 값을 검사합니다.
cartesianstd::vector<Float64>비어 있음직교 좌표 포즈. 순서는 X, Y, Z, A, B, C
posturePostureInfo기본 자세직교 좌표 포즈의 자세 추가 정보
hasPostureboolfalseposture 가 유효한지 표시

DHParam / SoftLimit / DragStatus / PayloadInfo

헤더 파일: include/motion_types.h

이 구조체는 MotionControl 아래의 파라미터, 드래그, 페이로드 인터페이스에서 사용됩니다.

DHParam

DHParam 은 DH 파라미터 집합을 나타내며, 사용 진입점은 MotionControl::GetDHParam() / MotionControl::SetDHParam() 입니다.

필드타입기본값설명
idint32_t-1DH 파라미터 번호
dFloat640.0DH 파라미터 d
aFloat640.0DH 파라미터 a
alphaFloat640.0DH 파라미터 alpha
offsetFloat640.0DH 파라미터 오프셋

SoftLimit

SoftLimit 은 소프트 리밋 구간을 나타내며, 사용 진입점은 MotionControl::GetUserSoftLimit() 입니다.

필드타입기본값설명
negativeFloat640.0음의 방향 리밋
positiveFloat640.0양의 방향 리밋

DragStatus

DragStatus 는 드래그 관련 스위치 상태를 나타내며, 사용 진입점은 MotionControl::GetDragStatus() / MotionControl::SetDragStatus() 입니다.

필드타입기본값설명
cartStatusstd::array<int32_t, 6>모두 0직교 좌표 6차원 드래그 상태
jointStatusstd::array<int32_t, 9>모두 09축 관절 드래그 상태
isContinuousDragboolfalse연속 드래그 여부

PayloadInfo / PayloadSummary

PayloadInfo 는 완전한 페이로드 구성 한 건을 나타내고, PayloadSummary 는 페이로드 목록의 요약 항목을 나타냅니다. 사용 진입점은 MotionControl::payload 아래에 있으며, 예를 들면 GetById() , Add() , Update() , GetAll() , Identify() 입니다.

타입필드타입기본값설명
PayloadInfoidint32_t0페이로드 번호
PayloadInfocommentstd::string비어 있음페이로드 비고
PayloadInfoweightFloat640.0페이로드 중량
PayloadInfomassCenterstd::array<Float64, 3>모두 0.0질량 중심 좌표
PayloadInfoinertiaMomentstd::array<Float64, 3>모두 0.0관성 파라미터
PayloadSummaryidint32_t0페이로드 번호
PayloadSummarycommentstd::string비어 있음페이로드 비고

PayloadIdentifyState

PayloadIdentifyState 는 페이로드 측정 절차 상태이며, 사용 진입점은 MotionControl::payload.GetIdentifyState() 입니다.

열거형설명
PayloadIdentifyState::WRONG_DATA-1상태 데이터가 유효하지 않거나 파싱 실패
PayloadIdentifyState::PAYLOAD_CHECK_INIT0페이로드 검사 초기화
PayloadIdentifyState::PAYLOAD_CHECK_RUNNING1페이로드 검사 실행 중
PayloadIdentifyState::PAYLOAD_CHECK_SUCCESS2페이로드 검사 성공
PayloadIdentifyState::PAYLOAD_CHECK_FAILED3페이로드 검사 실패
PayloadIdentifyState::PAYLOAD_IDENTIFY_INIT4페이로드 측정 초기화
PayloadIdentifyState::PAYLOAD_IDENTIFY_RUNNING5페이로드 측정 실행 중
PayloadIdentifyState::PAYLOAD_IDENTIFY_SUCCESS6페이로드 측정 성공
PayloadIdentifyState::PAYLOAD_IDENTIFY_FAILED7페이로드 측정 실패

ProgramPose / RunningProgramInfo

헤더 파일: include/program_types.h

ProgramPose 는 프로그램 포즈의 데이터 구조체이고, RunningProgramInfo 는 현재 실행 중인 프로그램 목록의 단일 항목입니다.

ProgramType

ProgramType 은 프로그램 포즈 인터페이스가 조작하는 대상이 사용자 프로그램인지 블록 프로그램인지 구분하는 데 사용됩니다.

열거형 값설명
ProgramType::USER0사용자 프로그램
ProgramType::BLOCK1블록 프로그램

RunningProgramInfo

RunningProgramInfo 는 현재 실행 중인 프로그램 인스턴스 하나를 나타냅니다.

사용 진입점: ProgramManager::AllRunningPrograms() .

필드타입기본값설명
threadIdint32_t0실행 프로그램의 스레드 ID
programNamestd::string비어 있음프로그램 이름
xpathstd::string비어 있음프로그램 경로
programStatusint32_t0컨트롤러가 반환한 프로그램 상태 코드
programTypestd::string비어 있음컨트롤러가 반환한 프로그램 타입 문자열

ProgramPose

ProgramPose 는 프로그램 파일의 포즈 레코드 하나를 나타냅니다.

사용 진입점: ProgramManager::PoseRead() , PoseWrite() , PoseAdd() , PoseReadAll() , PoseWriteBatch() , PoseConvert() .

필드타입기본값설명
idint32_t-1포즈 번호
namestd::string비어 있음포즈 이름
commentstd::string비어 있음포즈 비고
poseMotionPose기본 포즈포즈에 대응하는 모션 포즈
ufint32_t0사용자 좌표계 번호
tfint32_t0도구 좌표계 번호

PoseRegister / PoseRegisterData

헤더 파일: include/register_types.h

PoseRegister 는 PR 포즈 레지스터 구조체이며, 사용 진입점은 RegisterBank::ReadPR() / RegisterBank::WritePR() 입니다.

PoseRegisterData

PoseRegisterData 는 PR 포즈 레지스터에 저장된 포즈 데이터를 나타냅니다.

필드타입기본값설명
cartstd::array<Float64, 6>모두 0직교 좌표 포즈
jointstd::array<Float64, 9>모두 09축 관절 값
ptPoseTypePoseType::JOINT현재 PR을 관절 또는 직교 좌표 중 어느 방식으로 해석할지 결정
posturePostureInfo기본 자세PR 자세 추가 정보

PoseRegister

PoseRegister 는 완전한 PR 포즈 레지스터 항목 하나를 나타냅니다.

필드타입기본값설명
idint32_t0PR 레지스터 번호
poseRegisterDataPoseRegisterData기본 데이터PR 포즈 데이터
namestd::string비어 있음PR 이름
commentstd::string비어 있음PR 비고

Register / MotionRegister / StringRegister

헤더 파일: include/register_types.h

이 세 구조체는 레지스터 데이터의 공통 구조체 정의입니다. 현재 C++17의 RegisterBank 인터페이스 모듈은 주로 값을 직접 반환합니다. ReadR()Float64 , ReadMR() / ReadMH() / ReadMI()int32_t , ReadSR()std::string , ReadPR()PoseRegister 를 반환합니다.

타입필드타입기본값설명
Registeridint32_t-1R 레지스터 번호
RegistervalueFloat640.0R 레지스터 값
Registernamestd::string비어 있음R 레지스터 이름
Registercommentstd::string비어 있음R 레지스터 비고
MotionRegisteridint32_t-1MR 레지스터 번호
MotionRegistervalueint32_t0MR 레지스터 값
MotionRegisternamestd::string비어 있음MR 레지스터 이름
MotionRegistercommentstd::string비어 있음MR 레지스터 비고
StringRegisteridint32_t-1SR 레지스터 번호
StringRegistervaluestd::string비어 있음SR 레지스터 값
StringRegisternamestd::string비어 있음SR 레지스터 이름
StringRegistercommentstd::string비어 있음SR 레지스터 비고

FileType / FileInfo

헤더 파일: include/file_manager_types.h

FileTypeControllerFileManager::Upload() , Download() , Delete() 등의 인터페이스에서 사용하는 파일 타입 문자열 상수입니다. FileInfoControllerFileManager::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 는 파일 검색 결과의 파일 항목 하나를 나타냅니다.

필드타입기본값설명
namestd::string비어 있음파일 이름
created_atstd::string비어 있음생성 시간 문자열

TransformStatusEnum / CartesianPosition / TrajectorySegment

헤더 파일: include/trajectory_types.h

이 타입은 오프라인 궤적, 경로 궤적, 실시간 궤적 인터페이스에서 사용됩니다.

TransformStatusEnum

TransformStatusEnum 은 오프라인 궤적 변환 작업의 현재 상태를 나타냅니다.

사용 진입점: TrajectoryManager::CheckTransformStatus() .

열거형 값설명
TransformStatusEnum::IDLE0대기
TransformStatusEnum::RUNNING1변환 실행 중
TransformStatusEnum::SUCCESS2변환 성공
TransformStatusEnum::FAILED3변환 실패
TransformStatusEnum::NOT_FOUND4작업이 존재하지 않음
TransformStatusEnum::UNKNOWN5알 수 없는 상태

CartesianPosition

CartesianPosition 은 직교 좌표 위치 하나를 나타내며, 외부 필드 순서는 X, Y, Z, A, B, C 입니다. 호출자는 이 순서대로 채우면 되며, 프로토콜 적응은 SDK가 처리합니다.

필드타입기본값설명
xFloat640.0X 좌표
yFloat640.0Y 좌표
zFloat640.0Z 좌표
aFloat640.0RX 회전
bFloat640.0RY 회전
cFloat640.0RZ 회전

TrajectorySegment

TrajectorySegment 는 실시간 궤적 전송에 사용하는 궤적 세그먼트 래퍼 클래스이며, 궤적점, 순번, 타임스탬프, 직렬화 관련 인터페이스를 제공합니다.

cpp
SetPointList() / GetPointList()
SetTotalPoints() / GetTotalPoints()
SetSeq() / GetSeq()
SetLastFragment() / GetLastFragment()
SetTimestamp() / GetTimestampSec() / GetTimestampNsec()
Serialize() / Deserialize()
메서드설명
SetPointList궤적점 목록 설정 또는 읽기
SetTotalPoints총 점 수 설정 또는 읽기
SetSeq세그먼트 순번 설정 또는 읽기
SetLastFragment마지막 세그먼트 여부 설정 또는 읽기
SetTimestamp타임스탬프 설정 또는 읽기
Serializeprotobuf 직렬화 및 역직렬화

ROBOT_TOPIC_TYPE

ROBOT_TOPIC_TYPEstd::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_TYPEstd::string 별칭이며, RegTopicType 네임스페이스 아래에 레지스터 구독 타입이 제공됩니다. 사용 진입점은 TopicPubSub::SubscribeRegister() 입니다.

상수설명
RegTopicType::R"R"숫자 레지스터
RegTopicType::MR"MR"모션 레지스터
RegTopicType::SR"SR"문자열 레지스터
RegTopicType::PR"PR"포즈 레지스터

IO_TOPIC_TYPE

IO_TOPIC_TYPEstd::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"아날로그 출력