Skip to content

2.2 运动、程序、寄存器、轨迹类型

本页整理 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::JOINT0MotionPose 使用 joint 字段表示关节位姿
PoseType::CART1MotionPose 使用 cartesian 字段表示笛卡尔位姿
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默认姿态笛卡尔位姿的姿态附加信息
hasPostureboolfalse标记 posture 是否有效

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::stringPR 名称
commentstd::stringPR 备注

Register / MotionRegister / StringRegister

头文件: include/register_types.h

这三个结构是寄存器数据的通用结构定义。当前 C++17 的 RegisterBank 接口模块主要直接返回值: ReadR() 返回 Float64ReadMR() / ReadMH() / ReadMI() 返回 int32_tReadSR() 返回 std::stringReadPR() 返回 PoseRegister

类型字段类型默认值说明
Registeridint32_t-1R 寄存器编号
RegistervalueFloat640.0R 寄存器值
Registernamestd::stringR 寄存器名称
Registercommentstd::stringR 寄存器备注
MotionRegisteridint32_t-1MR 寄存器编号
MotionRegistervalueint32_t0MR 寄存器值
MotionRegisternamestd::stringMR 寄存器名称
MotionRegistercommentstd::stringMR 寄存器备注
StringRegisteridint32_t-1SR 寄存器编号
StringRegistervaluestd::stringSR 寄存器值
StringRegisternamestd::stringSR 寄存器名称
StringRegistercommentstd::stringSR 寄存器备注

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 命名空间下提供订阅主题常量。使用入口为 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"模拟输出