Skip to content

2.2 Motion, Program, Register, and Trajectory Types

This page collects the business data structures directly exposed by the C++17 APIs. Field definitions and enum values follow the SDK package headers. The "Typical APIs" notes indicate where these types usually appear.

MotionPose / PostureInfo

Header file: include/motion_types.h

MotionPose is the shared pose structure used by motion-related APIs. It can represent either a joint pose or a Cartesian pose; poseType decides which data group is interpreted.

Typical APIs:

  • Motion::GetCurrentPose()
  • Motion::ConvertJointToCart() / Motion::ConvertCartToJoint()
  • Motion::MoveJoint() / Motion::MoveLine() / Motion::MoveCircle()
  • Program::PoseRead() / Program::PoseWrite()
  • Registers::ReadPR() / Registers::WritePR()

These enums specify pose representation, motion mode, and teach-coordinate-system type.

EnumValueDescription
PoseType::JOINT0MotionPose uses the joint field as a joint pose
PoseType::CART1MotionPose uses the cartesian field as a Cartesian pose
MoveType::MOVE_JOINT1Joint motion
MoveType::MOVE_LINE2Linear motion
MoveType::MOVE_CIRCLE3Circular motion
TCSType::JOINT0Teach coordinate system: joint
TCSType::BASE1Teach coordinate system: base frame
TCSType::WORLD2Teach coordinate system: world frame
TCSType::USER3Teach coordinate system: user frame
TCSType::TOOL4Teach coordinate system: tool frame
TCSType::RTCP_USER5Teach coordinate system: RTCP user frame
TCSType::RTCP_TOOL6Teach coordinate system: RTCP tool frame

PostureInfo

PostureInfo stores the posture metadata associated with a Cartesian pose. Joint poses usually do not require callers to fill it manually. Cartesian motion and Cartesian-to-joint conversion may need it to disambiguate multiple inverse-kinematics solutions.

FieldTypeDefaultDescription
turnCyclestd::array<int32_t, 9>all 0Turn-cycle count for 9 axes
wristFlipint32_t-1Wrist-flip state
armUpDownint32_t-1Arm up/down state
armBackFrontint32_t-1Arm back/front state
armLeftRightint32_t-1Arm left/right state

MotionPose

The public cartesian field order is always X, Y, Z, A, B, C . Callers can fill values in that order; protocol adaptation is handled by the SDK.

FieldTypeDefaultDescription
poseTypePoseTypePoseType::JOINTDetermines whether the pose is interpreted as joint or Cartesian
jointstd::vector<Float64>emptyJoint value list; motion APIs check at least the first 6 joint values
cartesianstd::vector<Float64>emptyCartesian pose in X, Y, Z, A, B, C order
posturePostureInfodefault posturePosture metadata for Cartesian poses
hasPostureboolfalseWhether posture is valid

DHParam / SoftLimit / DragStatus / PayloadInfo

Header file: include/motion_types.h

These structures are used by MotionControl parameter, drag, and payload APIs.

DHParam

DHParam represents one set of DH parameters. Typical APIs are Motion::GetDHParam() / Motion::SetDHParam() .

FieldTypeDefaultDescription
idint32_t-1DH parameter index
dFloat640.0DH parameter d
aFloat640.0DH parameter a
alphaFloat640.0DH parameter alpha
offsetFloat640.0DH parameter offset

SoftLimit

SoftLimit represents a soft-limit interval. The typical API is Motion::GetUserSoftLimit() .

FieldTypeDefaultDescription
negativeFloat640.0Negative limit
positiveFloat640.0Positive limit

DragStatus

DragStatus represents drag-related switch states. Typical APIs are Motion::GetDragStatus() / Motion::SetDragStatus() .

FieldTypeDefaultDescription
cartStatusstd::array<int32_t, 6>all 06D Cartesian drag status
jointStatusstd::array<int32_t, 9>all 09-axis joint drag status
isContinuousDragboolfalseWhether continuous drag is enabled

PayloadInfo / PayloadSummary

PayloadInfo represents a complete payload configuration. PayloadSummary represents a compact item in payload lists. Typical APIs live under Motion::payload , such as GetById() , Add() , Update() , GetAll() , and Identify() .

TypeFieldTypeDefaultDescription
PayloadInfoidint32_t0Payload ID
PayloadInfocommentstd::stringemptyPayload comment
PayloadInfoweightFloat640.0Payload weight
PayloadInfomassCenterstd::array<Float64, 3>all 0.0Center of mass
PayloadInfoinertiaMomentstd::array<Float64, 3>all 0.0Inertia parameters
PayloadSummaryidint32_t0Payload ID
PayloadSummarycommentstd::stringemptyPayload comment

PayloadIdentifyState

PayloadIdentifyState is the state of the payload check/identification workflow. The typical API is Motion::payload.GetIdentifyState() .

EnumValueDescription
PayloadIdentifyState::WRONG_DATA-1State data is invalid or failed to parse
PayloadIdentifyState::PAYLOAD_CHECK_INIT0Payload check initialized
PayloadIdentifyState::PAYLOAD_CHECK_RUNNING1Payload check running
PayloadIdentifyState::PAYLOAD_CHECK_SUCCESS2Payload check succeeded
PayloadIdentifyState::PAYLOAD_CHECK_FAILED3Payload check failed
PayloadIdentifyState::PAYLOAD_IDENTIFY_INIT4Payload identification initialized
PayloadIdentifyState::PAYLOAD_IDENTIFY_RUNNING5Payload identification running
PayloadIdentifyState::PAYLOAD_IDENTIFY_SUCCESS6Payload identification succeeded
PayloadIdentifyState::PAYLOAD_IDENTIFY_FAILED7Payload identification failed

ProgramPose / RunningProgramInfo

Header file: include/program_types.h

ProgramPose is the data structure for program points. RunningProgramInfo is one item in the current running-program list.

ProgramType

ProgramType distinguishes whether a program-point API operates on a user program or a block program.

Enum ValueValueDescription
ProgramType::USER0User program
ProgramType::BLOCK1Block program

RunningProgramInfo

RunningProgramInfo represents one currently running program instance.

Typical API: Program::AllRunningPrograms() .

FieldTypeDefaultDescription
threadIdint32_t0Thread ID of the running program
programNamestd::stringemptyProgram name
xpathstd::stringemptyProgram path
programStatusint32_t0Program status code returned by the controller
programTypestd::stringemptyProgram type string returned by the controller

ProgramPose

ProgramPose represents one point record in a program file.

Typical APIs: Program::PoseRead() , PoseWrite() , PoseAdd() , PoseReadAll() , PoseWriteBatch() , and PoseConvert() .

FieldTypeDefaultDescription
idint32_t-1Point index
namestd::stringemptyPoint name
commentstd::stringemptyPoint comment
poseMotionPosedefault poseMotion pose associated with this point
ufint32_t0User frame ID
tfint32_t0Tool frame ID

PoseRegister / PoseRegisterData

Header file: include/register_types.h

PoseRegister is the PR pose-register structure. Typical APIs are Registers::ReadPR() / Registers::WritePR() .

PoseRegisterData

PoseRegisterData represents the pose data stored in a PR pose register.

FieldTypeDefaultDescription
cartstd::array<Float64, 6>all 0Cartesian pose
jointstd::array<Float64, 9>all 09-axis joint values
ptPoseTypePoseType::JOINTWhether the PR is interpreted as joint or Cartesian
posturePostureInfodefault posturePR posture metadata

PoseRegister

PoseRegister represents one complete PR pose-register item.

FieldTypeDefaultDescription
idint32_t0PR register ID
poseRegisterDataPoseRegisterDatadefault dataPR pose data
namestd::stringemptyPR name
commentstd::stringemptyPR comment

Register / MotionRegister / StringRegister

Header file: include/register_types.h

These three structures define common register data shapes. The current C++17 RegisterBank module mostly returns direct values: ReadR() returns Float64 , ReadMR() / ReadMH() / ReadMI() return int32_t , ReadSR() returns std::string , and ReadPR() returns PoseRegister .

TypeFieldTypeDefaultDescription
Registeridint32_t-1R register ID
RegistervalueFloat640.0R register value
Registernamestd::stringemptyR register name
Registercommentstd::stringemptyR register comment
MotionRegisteridint32_t-1MR register ID
MotionRegistervalueint32_t0MR register value
MotionRegisternamestd::stringemptyMR register name
MotionRegistercommentstd::stringemptyMR register comment
StringRegisteridint32_t-1SR register ID
StringRegistervaluestd::stringemptySR register value
StringRegisternamestd::stringemptySR register name
StringRegistercommentstd::stringemptySR register comment

FileType / FileInfo

Header file: include/file_manager_types.h

FileType provides file-type string constants used by FileManager::Upload() , Download() , Delete() , and related APIs. FileInfo is the return item of FileManager::Search() .

FileType

FileType is the file-category constant set used by file-management APIs.

ConstantValueDescription
FileType::TRAJECTORY"Trajectory"Trajectory file
FileType::USER_PROGRAM"UserProgram"User program file
FileType::BLOCK_PROGRAM"BlockProgram"Block program file
FileType::TRAJECTORY_CSV"TrajectoryCsv"CSV trajectory file
FileType::ROBOT_TMP"RobotTmp"Controller temporary file
FileType::FLY_SHOT"FlyShot"Fly-shot related file

FileInfo

FileInfo represents one file item in search results.

FieldTypeDefaultDescription
namestd::stringemptyFile name
created_atstd::stringemptyCreation time string

TransformStatusEnum / CartesianPosition / TrajectorySegment

Header file: include/trajectory_types.h

These types are used by offline trajectory, path trajectory, and real-time trajectory APIs.

TransformStatusEnum

TransformStatusEnum represents the current state of an offline-trajectory transform task.

Typical API: Trajectory::CheckTransformStatus() .

Enum ValueValueDescription
TransformStatusEnum::IDLE0Idle
TransformStatusEnum::RUNNING1Transform running
TransformStatusEnum::SUCCESS2Transform succeeded
TransformStatusEnum::FAILED3Transform failed
TransformStatusEnum::NOT_FOUND4Task not found
TransformStatusEnum::UNKNOWN5Unknown state

CartesianPosition

CartesianPosition represents one Cartesian position. The public field order is X, Y, Z, A, B, C ; callers can fill values in that order and let the SDK handle protocol adaptation.

FieldTypeDefaultDescription
xFloat640.0X coordinate
yFloat640.0Y coordinate
zFloat640.0Z coordinate
aFloat640.0RX rotation
bFloat640.0RY rotation
cFloat640.0RZ rotation

TrajectorySegment

TrajectorySegment is the trajectory-segment wrapper used for real-time trajectory sending. It provides APIs for trajectory points, sequence number, timestamp, and serialization.

cpp
SetPointList() / GetPointList()
SetTotalPoints() / GetTotalPoints()
SetSeq() / GetSeq()
SetLastFragment() / GetLastFragment()
SetTimestamp() / GetTimestampSec() / GetTimestampNsec()
Serialize() / Deserialize()
MethodDescription
SetPointListSet or read the trajectory point list
SetTotalPointsSet or read the total point count
SetSeqSet or read the segment sequence number
SetLastFragmentSet or read whether this is the final segment
SetTimestampSet or read the timestamp
SerializeProtobuf serialization and deserialization

ROBOT_TOPIC_TYPE

ROBOT_TOPIC_TYPE is an alias of std::string . The RobotTopicType namespace provides subscription-topic constants. The typical API is SubPub::SubscribeStatus() .

ConstantValueDescription
RobotTopicType::JOINT_POSITION"/publish/motion_control/axis_group/feedback/joints"Joint-position feedback
RobotTopicType::CARTESIAN_POSITION"/publish/motion_control/axis_group/feedback/tcp_current_cartesian"Current TCP Cartesian feedback
RobotTopicType::TCP_WORLD_CARTESIAN"/publish/motion_control/axis_group/feedback/tcp_world_cartesian"TCP Cartesian feedback in the world frame
RobotTopicType::TCP_BASE_CARTESIAN"/publish/motion_control/axis_group/feedback/tcp_base_cartesian"TCP Cartesian feedback in the base frame
RobotTopicType::USER_FRAME"/publish/motion_control/axis_group/current_coordinate"Current user frame ID
RobotTopicType::TOOL_FRAME"/publish/motion_control/axis_group/current_tool"Current tool frame ID
RobotTopicType::VELOCITY_RATIO"/publish/motion_control/global_vel_ratio"Global velocity ratio
RobotTopicType::GLOBAL_ACC_RATIO"/publish/motion_control/global_acc_ratio"Global acceleration ratio
RobotTopicType::CALIBRATE_STATUS"/publish/motion_control/calibrate_status"Axis-group calibration status
RobotTopicType::TRAJECTORY_RECORD"/publish/motion_control/rc_traj_records_status"Trajectory-record status
RobotTopicType::RUNNING_STATUS"/publish/controller/RunningStatus"Controller running status
RobotTopicType::INTERPRETER_STATUS"/publish/controller/InterpreterStatus"Interpreter status
RobotTopicType::ROBOT_STATUS"/publish/controller/RobotStatus"Overall robot status
RobotTopicType::CTRL_STATUS"/publish/controller/CtrlStatus"Controller status
RobotTopicType::SERVO_STATUS"/publish/controller/ServoStatus"Servo status
RobotTopicType::USER_OP_MODE"/publish/controller/UserOpMode"User operation mode
RobotTopicType::SOFT_OP_MODE"/publish/controller/SoftOpMode"Soft operation mode
RobotTopicType::OPERATION_STATUS"/publish/controller/OperationStatus"Operation status
RobotTopicType::PERFORMANCE_GEAR"/publish/controller/PerformanceGear"Performance gear
RobotTopicType::POWER_STATUS"/publish/controller/PowerStatus"Power status
RobotTopicType::POWER_ON_STATUS"/publish/controller/power_on_status"Power-on status
RobotTopicType::SAFETY_ALARM"/publish/controller/SafetyAlarm"Safety alarm
RobotTopicType::SAFETY_PLANE_STATUS"/publish/controller/safetyPlaneStatus"Safety-plane status
RobotTopicType::TOOL_POSTURE_LIMIT_STATUS"/publish/controller/tool_posture_limit_status"Tool-posture-limit status
RobotTopicType::JOINTS_RECORD"/publish/controller/joints_record"Joint record
RobotTopicType::TP_PROGRAM_STATUS"/publish/interpreter/tp_program_status"TP program running status

REG_TOPIC_TYPE

REG_TOPIC_TYPE is an alias of std::string . The RegTopicType namespace provides register subscription types. The typical API is SubPub::SubscribeRegister() .

ConstantValueDescription
RegTopicType::R"R"Numeric register
RegTopicType::MR"MR"Motion register
RegTopicType::SR"SR"String register
RegTopicType::PR"PR"Pose register

IO_TOPIC_TYPE

IO_TOPIC_TYPE is an alias of std::string . The IOTopicType namespace provides IO subscription types. The typical API is SubPub::SubscribeIo() , where each subscription item is {IO type, port number} .

ConstantValueDescription
IOTopicType::DI"DI"Digital input
IOTopicType::DO"DO"Digital output
IOTopicType::GI"GI"Group input
IOTopicType::GO"GO"Group output
IOTopicType::RI"RI"Remote-control input
IOTopicType::RO"RO"Remote-control output
IOTopicType::UI"UI"Dedicated input
IOTopicType::UO"UO"Dedicated output
IOTopicType::TDI"TDI"Wrist digital input
IOTopicType::TDO"TDO"Wrist digital output
IOTopicType::TAI"TAI"Wrist analog input
IOTopicType::AI"AI"Analog input
IOTopicType::AO"AO"Analog output