数据类型和变量(以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。