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