数据类型和变量(以C++为例)#

枚举变量的含义:

机器人状态信息:

enum StateRobot {

SR_Start = 0, // 机器人启动

SR_Initialize = 1, // 机器人初始化

SR_Logout = 2, // 机器人登出, 暂未使用

SR_Login = 3, // 机器人登陆, 暂未使用

SR_PowerOff = 4, // 机器人下电

SR_Disable = 5, // 机器人下使能

SR_Enable = 6, // 机器人上使能

SR_Update=7 // 机器人更新

};

程序状态信息:

enum StateProgram {

SP_Stopped = 0, // 程序停止

SP_Stopping = 1, // 程序正在停止中

SP_Running = 2, // 程序正在运行

SP_Paused = 3, // 程序已经暂停

SP_Pausing = 4, // 程序暂停中

SP_TaskRuning = 5 // 手动示教任务执行中

};

机器人操作模式信息:

enum OperationMode {

kManual = 0, // 手动模式

kAuto = 1, // 自动模式

kRemote = 2 // 远程模式

};

任务状态信息:

enum TaskState {

ST_Idle = 0, // 任务未执行

ST_Running = 1, // 任务正在执行

ST_Paused = 2, // 任务已经暂停

ST_Stopped = 3, // 任务已经停止

ST_Finished = 4, // 任务已经正常执行完成, 唯一表示任务正常完成(任务已经结束)

ST_Interrupt = 5, // 任务被中断(任务已经结束)

ST_Error = 6, // 任务出错(任务已经结束)

ST_Illegal = 7, // 任务非法, 当前状态下任务不能执行(任务已经结束)

ST_ParameterMismatch = 8 // 任务参数错误(任务已经结束)

};

安全控制器状态信息:

enum SafetyState {

SS_INIT = 0, // 初始化

SS_WAIT = 2, // 等待

SS_CONFIG = 3, // 配置模式

SS_POWER_OFF = 4, // 下电状态

SS_RUN = 5, // 正常运行状态

SS_RECOVERY = 6, // 恢复模式

SS_STOP2 = 7, // Stop2

SS_STOP1 = 8, // Stop1

SS_STOP0 = 9, // Stop0

SS_MODEL = 10, // 模型配置状态

SS_REDUCE = 12, // 缩减模式状态

SS_BOOT = 13, // 引导

SS_FAIL = 14, // 致命错误状态

SS_UPDATE = 99 // 更新状态

};

结构体变量含义:

机器人相关信息:

struct RobotStatusList{

std::vector<double> jointExpectPosition; // 目标关节位置

std::vector<double> jointExpectVelocity; // 目标角速度

std::vector<double> jointExpectAccelera; // 目标角加速度

std::vector<double> jointActualPosition; // 实际关节位置

std::vector<double> jointActualVelocity; // 实际角速度

std::vector<double> jointActualAccelera; // 实际角加速度

std::vector<double> jointActualCurrent; // 实际关节电流

std::vector<double> jointTemperature; // 时间关节温度

std::vector<double> driverTemperature; // 未使用

std::vector<double> cartExpectPosition; // 目标末端位姿

std::vector<double> cartExpectVelocity; // 目标末端速度

std::vector<double> cartExpectAccelera; // 目标末端加速度

std::vector<double> cartActualPosition; // 实际末端位姿

std::vector<double> cartActualVelocity; // 实际末端速度

std::vector<double> cartActualAccelera; // 实际末端加速度

std::vector<bool> slaveReady; // 从站状态

bool collision; // 是否发生碰撞

int8_t collisionAxis; // 发生碰撞的关节

bool emcStopSignal; // 未使用

int8_t robotState; // 机器人状态

int32_t robotError; // 机器人错误码

};

IO和寄存器相关信息:

struct IOStatusList{

std::vector<double> analogCurrentOutputs; // 模拟电流输出

std::vector<double> analogVoltageOutputs; // 模拟电压输出

std::vector<double> analogCurrentInputs; // 模拟电流输入

std::vector<double> analogVoltageInputs; // 模拟电压输入

std::vector<bool> digitalInputs; // 通用数字输入

std::vector<bool> digitalOutputs; // 通用数字输出

std::vector<bool> toolIOIn; // 工具数字输入

std::vector<bool> toolIOOut; // 工具数字输出

std::vector<bool> toolButton; // 工具末端按键

std::vector<bool> funRegisterInputs; // 功能寄存器输入

std::vector<bool> funRegisterOutputs; // 功能寄存器输出

std::vector<bool> boolRegisterInputs; // bool寄存器输入

std::vector<bool> boolRegisterOutputs; // bool寄存器输出

std::vector<int16_t> wordRegisterInputs; // word寄存器输入

std::vector<int16_t> wordRegisterOutputs; // word寄存器输出

std::vector<double> floatRegisterInputs; // float寄存器输入

std::vector<double> floatRegisterOutputs; // float寄存器输出

};

机器人点动相关信息:

struct MoveJogTaskParams{

int32_t jog_direction; // 运动方向, -1:负方向, 1:正方向

int32_t jog_type; // 1: 空间点动, 2: 关节点动

int32_t axis_num; // 关节索引号

double vel; // 速度百分比

int32_t jog_coordinate; // 参考坐标系, 0: 世界, 1: 基座, 2: 工具, 3: 工件

bool use_step; // 是否步进模式

double step_jointValue; // 关节步进距离, 单位:m、rad

double step_cartvalue; // 末端步进距离, 单位:m、rad

};

可达性检测相关信息:

struct ReachabilityParams{

bool result; // 可达性确认结果

std::vector<std::vector<double> > joints_pos; // 可达性检测成功时所对应的所有关节位置

};

外部轴反馈信息:

struct EAxisInfo{

std::string scheme_name; // 外部轴方案名称

int32_t status; // 激活状态

double pos; // 当前位置

};

实时数据:

struct RealTimeData{

std::vector<double> joint_pos_cmd; // 关节位置实时指令, 仅在实时控制模式为关节位置时生效

std::vector<double> joint_vel_cmd; // 关节速度实时指令, 仅在实时控制模式为关节速度时生效

std::vector<double> joint_torq_cmd; // 关节力矩控制指令, 预留

std::vector<double> cart_pos_tool_wobj_cmd; // 笛卡尔位置实时指令, 对应当前机器人工具坐标系在工件坐标系下的位置, 仅在实时控制模式未笛卡尔位置时生效

std::vector<double> cart_vel_tool_wobj_cmd; // 笛卡尔速度实时指令, 对应当前机器人工具坐标系在工件坐标系下的速度, 仅在实时控制模式未笛卡尔速度时生效

std::vector<double> cart_ft_cmd; // 笛卡尔力和力矩控制指令, 预留

bool status; // 控制指令刷新状态, 更新机器人控制指令时给true

};

路径点和OP操作:

struct PointOP{

std::vector<double> pos; // 笛卡尔位置

OP op; // 该位置对应的OP操作

};

为了方便使用, 上述的枚举类型在实际使用时为int类型, 上述枚举类型仅提供使用时int值对应的状态信息。

c++函数中vector<double>类型对应python类型list。