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